<?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>218026</bug_id>
          
          <creation_ts>2020-10-21 08:31:33 -0700</creation_ts>
          <short_desc>Rename BuildSlaveSupport to CISupport</short_desc>
          <delta_ts>2021-07-02 14:50:57 -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>Other</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=218302</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=227644</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>
          
          <blocked>213092</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>clopez</cc>
    
    <cc>dean_johnson</cc>
    
    <cc>dewei_zhu</cc>
    
    <cc>dpino</cc>
    
    <cc>fujii</cc>
    
    <cc>jbedard</cc>
    
    <cc>lingho</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1700195</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-21 08:31:33 -0700</bug_when>
    <thetext>We should rename BuildSlaveSupport to BuildAutomation. This is for following purposes:

1) using more inclusive name and avoiding the &apos;slave&apos; terminology

2) we are planning to upgrade build.webkit.org to latest Buildbot soon which uses &quot;worker&quot; terminology instead of &quot;buildslave&quot;, it would be nice to have uniformity in directory naming as well

3) making the naming/directory-structure more consistent with some of our other projects


Note that some of the scripts inside this folder might be used in various places, including other repositories and other buildbot instances, we would need to make sure that we update those places as well. Also the servers like build.webkit.org, ews-build.webkit.org and ews.webkit.org would need to be updated accordingly as they are running the production services from inside this directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700201</commentid>
    <comment_count>1</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-21 08:46:21 -0700</bug_when>
    <thetext>Buildbot instances might fail certain builds for certain revisions after this change, depending on when the Buildbot is restarted to pick up this change. 

For e.g.: if this change is landed in r1000. Until Buildbot instance (e.g.: for build.webkit.org) is restarted, it would keep executing scripts from old directory (e.g.: Tools/BuildSlaveSupport/kill-old-processes). If the revision being tested is after r1000, it would keep failing until Buildbot is restarted (since BuildSlaveSupport wouldn&apos;t exist in newer revisions). If Buildbot is restarted immediately after committing r1000, Buildbot instance would fail the builds which were testing any revision prior to r1000.

To solve this issue, we can consider adding a symlink named BuildSlaveSupport (pointing to BuildAutomation). We can then remove the symlink after few days/weeks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700203</commentid>
    <comment_count>2</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-21 08:51:25 -0700</bug_when>
    <thetext>(In reply to Aakash Jain from comment #1)
&gt; Buildbot instances might fail certain builds for certain revisions after
&gt; this change, depending on when the Buildbot is restarted to pick up this
&gt; change. 
&gt; 
&gt; For e.g.: if this change is landed in r1000. Until Buildbot instance (e.g.:
&gt; for build.webkit.org) is restarted, it would keep executing scripts from old
&gt; directory (e.g.: Tools/BuildSlaveSupport/kill-old-processes). If the
&gt; revision being tested is after r1000, it would keep failing until Buildbot
&gt; is restarted (since BuildSlaveSupport wouldn&apos;t exist in newer revisions). If
&gt; Buildbot is restarted immediately after committing r1000, Buildbot instance
&gt; would fail the builds which were testing any revision prior to r1000.
&gt; 
&gt; To solve this issue, we can consider adding a symlink named
&gt; BuildSlaveSupport (pointing to BuildAutomation). We can then remove the
&gt; symlink after few days/weeks.

I think the symlink is a really good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700211</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-21 09:13:06 -0700</bug_when>
    <thetext>&lt;rdar://problem/70531568&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700213</commentid>
    <comment_count>4</comment_count>
      <attachid>411994</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-21 09:14:30 -0700</bug_when>
    <thetext>Created attachment 411994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1700218</commentid>
    <comment_count>5</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-21 09:19:33 -0700</bug_when>
    <thetext>svn-apply isn&apos;t able to handle this patch, probably because it has a lot of svn property changes. Would land it manually once approved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701905</commentid>
    <comment_count>6</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 09:18:57 -0700</bug_when>
    <thetext>After discussing with few folks, &quot;CISupport&quot; seems like a better name for this directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701907</commentid>
    <comment_count>7</comment_count>
      <attachid>412428</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 09:23:38 -0700</bug_when>
    <thetext>Created attachment 412428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701925</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-27 09:57:20 -0700</bug_when>
    <thetext>Patch review is obviously tough for a change like this. To verify, we&apos;re moving Tools/BuildSlaveSupport to Tools/CISupport and creating a symlink in place of Tools/BuildSlaveSupport, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701933</commentid>
    <comment_count>9</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 10:03:09 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #8)
&gt; Patch review is obviously tough for a change like this. To verify, we&apos;re moving Tools/BuildSlaveSupport to Tools/CISupport and creating a symlink in place of Tools/BuildSlaveSupport, correct?
That&apos;s correct</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701936</commentid>
    <comment_count>10</comment_count>
      <attachid>412428</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-10-27 10:07:26 -0700</bug_when>
    <thetext>Comment on attachment 412428
Patch

Seems like now is as good a time as any to land this. Always going to be a bit risky to land something like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701942</commentid>
    <comment_count>11</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 10:12:10 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #10)
&gt; Seems like now is as good a time as any to land this. Always going to be a bit risky to land something like this.
Agree!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701969</commentid>
    <comment_count>12</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 10:39:20 -0700</bug_when>
    <thetext>Committed r269052: &lt;https://trac.webkit.org/changeset/269052&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1701995</commentid>
    <comment_count>13</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-27 11:19:05 -0700</bug_when>
    <thetext>symlink seems to be working fine. For e.g.: in https://build.webkit.org/builders/Apple-Mojave-Release-Build/builds/20794 checked out r269054 (which is after r269052). It correctly renamed the directory and created the BuildSlaveSupport symlink pointing to CISupport (I also verified by sshing in to the bot). Subsequent steps of running Tools/BuildSlaveSupport/kill-old-processes worked fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702910</commentid>
    <comment_count>14</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2020-10-29 16:04:08 -0700</bug_when>
    <thetext>Restarted build.webkit.org to pick up this change. Seems to be working fine.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>411994</attachid>
            <date>2020-10-21 09:14:30 -0700</date>
            <delta_ts>2020-10-27 09:23:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218026-20201021121427.patch</filename>
            <type>text/plain</type>
            <size>2565795</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2ODc5NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI5IEBACisyMDIwLTEwLTIxICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW5hbWUgQnVpbGRTbGF2ZVN1cHBvcnQgdG8gQnVpbGRBdXRvbWF0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgwMjYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxk
QXV0b21hdGlvbjogQ29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQuCisgICAgICAg
ICogQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qczoKKyAgICAgICAgKiBCdWls
ZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHMucHk6CisgICAgICAgICog
QnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGQucHk6CisgICAg
ICAgICogQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5p
dHRlc3QucHk6CisgICAgICAgICogQnVpbGRBdXRvbWF0aW9uL2V3cy1hcHAvZXdzL3ZpZXdzL3N0
YXR1c2J1YmJsZS5weToKKyAgICAgICAgKiBCdWlsZEF1dG9tYXRpb24vZXdzLWJ1aWxkL3N0ZXBz
LnB5OgorICAgICAgICAqIEJ1aWxkQXV0b21hdGlvbi9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3Qu
cHk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQ6IFJlcGxhY2VkLgorICAgICAgICAqIEVX
U1Rvb2xzL1N0YXJ0LVF1ZXVlLnBzMToKKyAgICAgICAgKiBTY3JpcHRzL2Jpc2VjdC1idWlsZHM6
CisgICAgICAgICogU2NyaXB0cy9ydW4tZGFzaGJvYXJkLXRlc3RzOgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Q6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0cy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weToKKyAgICAgICAgKiAu
Z2l0YXR0cmlidXRlczoKKwogMjAyMC0xMC0yMCAgU2FtIFdlaW5pZyAgPHdlaW5pZ0BhcHBsZS5j
b20+CiAKICAgICAgICAgQ2xlYW51cCBEdW1wUmVuZGVyVHJlZSBpbiBwcmVwYXJhdGlvbiBmb3Ig
c3VwcG9ydGluZyBhcmJpdHJhcnkgdGVzdCBoZWFkZXIgY29tbWFuZHMKSW5kZXg6IFRvb2xzLy5n
aXRhdHRyaWJ1dGVzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzLy5naXRhdHRyaWJ1dGVzCShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy8uZ2l0YXR0cmlidXRlcwkod29ya2luZyBjb3B5KQpAQCAtMSw0
ICsxLDQgQEAKLUJ1aWxkU2xhdmVTdXBwb3J0L3dpbi9raWxsLW9sZC1wcm9jZXNzZXMgLWNybGYK
K0J1aWxkQXV0b21hdGlvbi93aW4va2lsbC1vbGQtcHJvY2Vzc2VzIC1jcmxmCiBEdW1wUmVuZGVy
VHJlZS9jYWlyby9QaXhlbER1bXBTdXBwb3J0Q2Fpcm8uY3BwIC1jcmxmCiBGaW5kU2FmYXJpL1Nh
ZmFyaS5leGUubWFuaWZlc3QgLWNybGYKIE1pbmlCcm93c2VyL3dpbi9NaW5pQnJvd3Nlci5yYyAt
Y3JsZgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvU2hhcmVkL3RyYW5zZmVyLWFyY2hp
dmUtdG8tczMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvU2hhcmVkL3Ry
YW5zZmVyLWFyY2hpdmUtdG8tczMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L1NoYXJlZC90cmFuc2Zlci1hcmNoaXZlLXRvLXMzCShub25leGlzdGVudCkKQEAg
LTEsNTIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi1pbXBvcnQgYXJncGFyc2UKLWlt
cG9ydCBib3RvMwotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLVMzX0RFRkFVTFRfQlVDS0VUID0g
J2FyY2hpdmVzLndlYmtpdC5vcmcnCi1TM19FV1NfQlVDS0VUID0gJ2V3cy1hcmNoaXZlcy53ZWJr
aXQub3JnJwotUzNfTUlOSUZJRURfQlVDS0VUID0gJ21pbmlmaWVkLWFyY2hpdmVzLndlYmtpdC5v
cmcnCi1TM19SRUdJT05fUFJFRklYID0gJ2h0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5j
b20nCi0KLWRlZiB1cGxvYWRUb1MzKGFyY2hpdmVfcGF0aCwgYnVja2V0LCBpZGVudGlmaWVyLCBy
ZXZpc2lvbik6Ci0gICAgcHJpbnQgJ1RyYW5zZmVycmluZyB7fSB0byBTMy4uLicuZm9ybWF0KGFy
Y2hpdmVfcGF0aCkKLSAgICBrZXkgPSAnLycuam9pbihbaWRlbnRpZmllciwgcmV2aXNpb24gKyAn
LnppcCddKQotICAgIHByaW50ICdcdFMzIEJ1Y2tldDoge31cblx0UzMgS2V5OiB7fScuZm9ybWF0
KGJ1Y2tldCwga2V5KQotICAgIHMzID0gYm90bzMuY2xpZW50KCdzMycpCi0gICAgczMudXBsb2Fk
X2ZpbGUoYXJjaGl2ZV9wYXRoLCBidWNrZXQsIGtleSkKLSAgICBwcmludCgnXHRTMyBVUkw6IHt9
L3t9L3t9Jy5mb3JtYXQoUzNfUkVHSU9OX1BSRUZJWCwgYnVja2V0LCBrZXkpKQotCi1kZWYgYXJj
aGl2ZUV4aXN0cyhhcmNoaXZlKToKLSAgICBpZiBhcmNoaXZlOgotICAgICAgICBpZiBvcy5wYXRo
LmV4aXN0cyhhcmNoaXZlKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwcmludCAnV0FSTklORzogQXJjaGl2ZSBkb2VzIG5vdCBleGlzdDoge30n
LmZvcm1hdChhcmNoaXZlKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLWRlZiBtYWluKCk6
Ci0gICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoYWRkX2hlbHA9VHJ1ZSkKLQot
ICAgIGdyb3VwID0gcGFyc2VyLmFkZF9tdXR1YWxseV9leGNsdXNpdmVfZ3JvdXAocmVxdWlyZWQ9
VHJ1ZSkKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcmV2aXNpb24nLCBhY3Rpb249InN0b3Jl
IiwgaGVscD0nUmV2aXNpb24gbnVtYmVyIG9yIHBhdGNoX2lkIGZvciB0aGUgYnVpbHQgYXJjaGl2
ZScpCi0gICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXBhdGNoX2lkJywgYWN0aW9uPSJzdG9yZSIs
IGhlbHA9J3BhdGNoX2lkIG9mIHRoZSBwYXRjaCcpCi0KLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLWlkZW50aWZpZXInLCBhY3Rpb249InN0b3JlIiwgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nUzMg
ZGVzdGluYXRpb24gaWRlbnRpZmllciwgaW4gdGhlIGZvcm0gb2YgZnVsbFBsYXRmb3JtLWFyY2hp
dGVjdHVyZS1jb25maWd1cmF0aW9uLiBbbWFjLW1vamF2ZS14ODZfNjQtcmVsZWFzZV0nKQotICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tYXJjaGl2ZScsIGFjdGlvbj0ic3RvcmUiLCByZXF1aXJl
ZD1UcnVlLCBoZWxwPSdQYXRoIHRvIHRoZSBmdWxsIHNpemUgYXJjaGl2ZS4gW3BhdGgvdG8vMTIz
NDU2LnppcF0nKQotICAgIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICBwYXJlbnRk
aXIsIGZpbGVuYW1lID0gb3MucGF0aC5zcGxpdChzdHIoYXJncy5hcmNoaXZlKSkKLSAgICBtaW5p
ZmllZEFyY2hpdmUgPSBvcy5wYXRoLmpvaW4ocGFyZW50ZGlyLCAnbWluaWZpZWQtJyArIGZpbGVu
YW1lKQotCi0gICAgczNfYnVja2V0ID0gUzNfREVGQVVMVF9CVUNLRVQKLSAgICBpZiBhcmdzLnBh
dGNoX2lkOgotICAgICAgICBzM19idWNrZXQgPSBTM19FV1NfQlVDS0VUCi0KLSAgICBpZiBhcmNo
aXZlRXhpc3RzKGFyZ3MuYXJjaGl2ZSk6Ci0gICAgICAgIHVwbG9hZFRvUzMoYXJncy5hcmNoaXZl
LCBzM19idWNrZXQsIGFyZ3MuaWRlbnRpZmllciwgYXJncy5yZXZpc2lvbiBvciBhcmdzLnBhdGNo
X2lkKQotICAgIGlmIG5vdCBhcmdzLnBhdGNoX2lkIGFuZCBhcmNoaXZlRXhpc3RzKG1pbmlmaWVk
QXJjaGl2ZSk6Ci0gICAgICAgIHVwbG9hZFRvUzMobWluaWZpZWRBcmNoaXZlLCBTM19NSU5JRklF
RF9CVUNLRVQsIGFyZ3MuaWRlbnRpZmllciwgYXJncy5yZXZpc2lvbikKLQotaWYgX19uYW1lX18g
PT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLWxhdW5jaGVyLWRtZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC1sYXVuY2hlci1kbWcJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLWxhdW5jaGVyLWRtZwkobm9uZXhpc3RlbnQpCkBAIC0xLDExOSArMCww
IEBACi0jIS91c3IvYmluL2VudiBwZXJsCi0KLSMgQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAwNiBNYXJrIFJvd2Ug
PG9wZW5kYXJ3aW4ub3JnQGJkYXNoLm5ldC5uej4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKLSMgMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9y
IHRoZSBuYW1lcyBvZgotIyAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotIyAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLSMgU2NyaXB0IHVzZWQgYnkgYnVpbGQgc2xhdmVzIHRvIGNyZWF0ZSBh
IGRpc2staW1hZ2UgY29udGFpbmluZyBXZWJLaXQuYXBwLgotCi11c2Ugc3RyaWN0OwotdXNlIHdh
cm5pbmdzOwotCi11c2UgRmlsZTo6QmFzZW5hbWU7Ci11c2UgR2V0b3B0OjpMb25nOwotdXNlIEZp
bmRCaW47Ci11c2UgbGliICIkRmluZEJpbjo6QmluLy4uL1NjcmlwdHMiOwotdXNlIHdlYmtpdGRp
cnM7Ci0KLW15ICRuaWdodGx5TGF1bmNoZXJTdGFnaW5nUGF0aCA9IHByb2R1Y3REaXIoKSAuICIv
V2ViS2l0LmFwcCI7Ci1teSAkZHJvc2VyYVN0YWdpbmdQYXRoID0gcHJvZHVjdERpcigpIC4gIi9E
cm9zZXJhTGF1bmNoZXIuYXBwIjsKLW15ICRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoOwot
Ci1teSAkbmlnaHRseVJlbW90ZUhvc3QgPSAnd2Via2l0LW5pZ2h0bGllc0BsaXZlLm5pZ2h0bHku
d2Via2l0Lm9yZyc7Ci1teSAkbmlnaHRseVJlbW90ZVBhdGggPSAiL2hvbWUvd2Via2l0LW5pZ2h0
bGllcyI7Ci1teSAkbmlnaHRseVJlbW90ZUxhdGVzdFBhdGggPSAiJG5pZ2h0bHlSZW1vdGVQYXRo
L3VwZGF0ZS1sYXRlc3Quc2giOwotCi1zdWIgYnVpbGREaXNrSW1hZ2UKLXsKLSAgICBteSAkcmV2
aXNpb24gPSBjdXJyZW50U1ZOUmV2aXNpb24oKTsKLSAgICBteSAkcHJvZHVjdERpciA9IHByb2R1
Y3REaXIoKTsKLSAgICAkbmlnaHRseUxhdW5jaGVyRGlza0ltYWdlUGF0aCA9IHByb2R1Y3REaXIo
KSAuICIvV2ViS2l0LVNWTi1yJHJldmlzaW9uLmRtZyI7Ci0gICAgCi0gICAgcHJpbnQgIlJlbW92
aW5nIHByZXZpb3VzIHRlbXAgc291cmNlIGRpcmVjdG9yeSAoaWYgYW55KS4uLlxuIjsKLSAgICBg
cm0gLXJmIC90bXAvV2ViS2l0TmlnaHRseWA7Ci0gICAgZGllICJSZW1vdmluZyBwcmV2aW91cyB0
ZW1wIHNvdXJjZSBkaXJlY3RvcnkgZmFpbGVkIiBpZiAkPzsKLQotICAgIHByaW50ICJNYWtpbmcg
YSBuZXcgdGVtcCBzb3VyY2UgZGlyZWN0b3J5Li4uXG4iOwotICAgIGBta2RpciAvdG1wL1dlYktp
dE5pZ2h0bHlgOwotICAgIGRpZSAiTWFraW5nIGEgbmV3IHRlbXAgc291cmNlIGRpcmVjdG9yeSBm
YWlsZWQiIGlmICQ/OwotCi0gICAgcHJpbnQgIkNvcHlpbmcgV2ViS2l0LmFwcCB0byB0ZW1wIHNv
dXJjZSBkaXJlY3RvcnkuLi5cbiI7Ci0gICAgYGNwIC1SIFwiJG5pZ2h0bHlMYXVuY2hlclN0YWdp
bmdQYXRoXCIgL3RtcC9XZWJLaXROaWdodGx5L1dlYktpdC5hcHBgOwotICAgIGRpZSAiQ29weWlu
ZyBXZWJLaXQuYXBwIHRvIHRlbXAgc291cmNlIGRpcmVjdG9yeSBmYWlsZWQiIGlmICQ/OwotCi0g
ICAgcHJpbnQgIkNvcHlpbmcgRHJvc2VyYS5hcHAgdG8gdGVtcCBzb3VyY2UgZGlyZWN0b3J5Li4u
XG4iOwotICAgIGBjcCAtUiBcIiRkcm9zZXJhU3RhZ2luZ1BhdGhcIiAvdG1wL1dlYktpdE5pZ2h0
bHkvRHJvc2VyYS5hcHBgOwotICAgIGRpZSAiQ29weWluZyBEcm9zZXJhLmFwcCB0byB0ZW1wIHNv
dXJjZSBkaXJlY3RvcnkgZmFpbGVkIiBpZiAkPzsKLQotICAgIHByaW50ICJDcmVhdGluZyBkaXNr
IGltYWdlLi4uXG4iOwotICAgIGBoZGl1dGlsIGNyZWF0ZSBcIiRuaWdodGx5TGF1bmNoZXJEaXNr
SW1hZ2VQYXRoXCIgLW92IC1zcmNmb2xkZXIgL3RtcC9XZWJLaXROaWdodGx5IC1mcyBIRlMrIC12
b2xuYW1lIFwiV2ViS2l0XCJgOwotICAgIGRpZSAiQ3JlYXRpbmcgZGlzayBpbWFnZSBmYWlsZWQi
IGlmICQ/OwotCi0gICAgcHJpbnQgIlJlbW92aW5nIHRlbXAgc291cmNlIGRpcmVjdG9yeS4uLlxu
IjsKLSAgICBgcm0gLXJmIC90bXAvV2ViS2l0TmlnaHRseWA7Ci0gICAgZGllICJSZW1vdmluZyB0
ZW1wIHNvdXJjZSBkaXJlY3RvcnkgZmFpbGVkIiBpZiAkPzsKLQotICAgIHByaW50ICJDb21wcmVz
c2luZyBkaXNrIGltYWdlLi4uXG4iOwotICAgIHN5c3RlbSgibXYiLCAiLWYiLCAkbmlnaHRseUxh
dW5jaGVyRGlza0ltYWdlUGF0aCwgIiRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoLnVuY29t
cHJlc3NlZC5kbWciKSA9PSAwIG9yIGRpZSAiUmVuYW1pbmcgZGlzayBpbWFnZSBmYWlsZWQiOwot
ICAgIHN5c3RlbSgiaGRpdXRpbCIsICJjb252ZXJ0IiwgIi1xdWlldCIsICIkbmlnaHRseUxhdW5j
aGVyRGlza0ltYWdlUGF0aC51bmNvbXByZXNzZWQuZG1nIiwgIi1mb3JtYXQiLCAiVURCWiIsICIt
aW1hZ2VrZXkiLCAiemxpYi1sZXZlbD05IiwgIi1vIiwgIiRuaWdodGx5TGF1bmNoZXJEaXNrSW1h
Z2VQYXRoIik7Ci0gICAgZGllICJDb21wcmVzc2luZyBkaXNrIGltYWdlIGZhaWxlZCIgaWYgJD87
Ci0KLSAgICB1bmxpbmsgIiRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoLnVuY29tcHJlc3Nl
ZC5kbWciOwotfQotCi1zdWIgdXBsb2FkTmlnaHRseURpc2tJbWFnZQotewotICAgIG15ICRidWls
ZFRhZyA9IHNoaWZ0KEBfKTsKLSAgICBteSAkbmlnaHRseVJlbW90ZURpc2tJbWFnZVBhdGggPSAi
JG5pZ2h0bHlSZW1vdGVQYXRoL2J1aWxkcy8kYnVpbGRUYWcvbWFjLyIgLiBiYXNlbmFtZSgkbmln
aHRseUxhdW5jaGVyRGlza0ltYWdlUGF0aCk7Ci0gICAgbXkgJHJldmlzaW9uID0gY3VycmVudFNW
TlJldmlzaW9uKCk7Ci0gICAgc3lzdGVtKCJyc3luYyIsICItdlAiLCAkbmlnaHRseUxhdW5jaGVy
RGlza0ltYWdlUGF0aCwgIiRuaWdodGx5UmVtb3RlSG9zdDokbmlnaHRseVJlbW90ZURpc2tJbWFn
ZVBhdGgiKSA9PSAwIG9yIGRpZSAiRmFpbGVkIHVwbG9hZGluZyBkaXNrIGltYWdlIjsKLSAgICBz
eXN0ZW0oInNzaCIsICRuaWdodGx5UmVtb3RlSG9zdCwgJG5pZ2h0bHlSZW1vdGVMYXRlc3RQYXRo
LCAkYnVpbGRUYWcsICJtYWMiLCAkbmlnaHRseVJlbW90ZURpc2tJbWFnZVBhdGgsICRyZXZpc2lv
bikgPT0gMCBvciBkaWUgIkZhaWxlZCBsaW5raW5nIGRpc2sgaW1hZ2UgdG8gbGF0ZXN0IjsKLX0K
LQotc3ViIHVwbG9hZEJ1aWxkU2xhdmVEaXNrSW1hZ2UKLXsKLSAgICBteSAkcmVtb3RlRGlza0lt
YWdlUGF0aCA9IHNoaWZ0KEBfKSAuIGJhc2VuYW1lKCRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQ
YXRoKTsKLSAgICBzeXN0ZW0oInJzeW5jIiwgIi12UCIsICRuaWdodGx5TGF1bmNoZXJEaXNrSW1h
Z2VQYXRoLCAkcmVtb3RlRGlza0ltYWdlUGF0aCkgPT0gMCBvciBkaWUgIkZhaWxlZCB1cGxvYWRp
bmcgZGlzayBpbWFnZSI7Ci19Ci0KLQotbXkgJHVwbG9hZFRvOwotbXkgJG5pZ2h0bHlCdWlsZCA9
IDA7Ci1teSAkYnVpbGRUYWcgPSAndHJ1bmsnOwotR2V0T3B0aW9ucygndXBsb2FkLXRvLWhvc3Q9
cycgPT4gXCR1cGxvYWRUbywKLSAgICAgICAgICAgJ3VwbG9hZC1hcy1uaWdodGx5IScgPT4gXCRu
aWdodGx5QnVpbGQsCi0gICAgICAgICAgICd0YWc9cycgPT4gXCRidWlsZFRhZyk7Ci0KLWNoZGly
V2ViS2l0KCk7Ci1idWlsZERpc2tJbWFnZSgkYnVpbGRUYWcpOwotCi1pZiAoJG5pZ2h0bHlCdWls
ZCkgewotICAgIHVwbG9hZE5pZ2h0bHlEaXNrSW1hZ2UoJGJ1aWxkVGFnKTsKLX0gZWxzaWYgKCR1
cGxvYWRUbykgewotICAgIHVwbG9hZEJ1aWxkU2xhdmVEaXNrSW1hZ2UoJHVwbG9hZFRvKTsKLX0g
ZWxzZSB7Ci0gICAgcHJpbnQgIkRpc2sgaW1hZ2UgbGVmdCBhdCAkbmlnaHRseUxhdW5jaGVyRGlz
a0ltYWdlUGF0aFxuIjsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLWxhdW5jaGVyLWRtZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRh
YmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvTWFrZWZp
bGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvTWFrZWZpbGUJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL01ha2VmaWxlCShub25leGlzdGVudCkKQEAg
LTEsMTkgKzAsMCBAQAotIyAtKi0gbWFrZWZpbGUgLSotCi0KLSMgVGhpcyBpcyBhIHNpbXBsZSBt
YWtlZmlsZSB3aGljaCBsaXZlcyBpbiBhIGJ1aWxkbWFzdGVyL2J1aWxkc2xhdmUKLSMgZGlyZWN0
b3J5IChuZXh0IHRvIHRoZSBidWlsZGJvdC50YWMgZmlsZSkuIEl0IGFsbG93cyB5b3UgdG8gc3Rh
cnQvc3RvcCB0aGUKLSMgbWFzdGVyIG9yIHNsYXZlIGJ5IGRvaW5nICdtYWtlIHN0YXJ0JyBvciAn
bWFrZSBzdG9wJy4KLQotIyBUaGUgJ3JlY29uZmlnJyB0YXJnZXQgd2lsbCB0ZWxsIGEgYnVpbGRt
YXN0ZXIgdG8gcmVsb2FkIGl0cyBjb25maWcgZmlsZS4KLQotc3RhcnQ6Ci0JL29wdC9sb2NhbC9i
aW4vdHdpc3RkMi41IC0tbm9fc2F2ZSAteSBidWlsZGJvdC50YWMKLQotc3RvcDoKLQlraWxsIGBj
YXQgdHdpc3RkLnBpZGAKLQotcmVjb25maWc6Ci0Ja2lsbCAtSFVQIGBjYXQgdHdpc3RkLnBpZGAK
LQotbG9nOgotCXRhaWwgLWYgdHdpc3RkLmxvZwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvUkVBRE1FCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL1JFQURNRQkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvUkVBRE1FCShub25leGlzdGVudCkKQEAgLTEsMiArMCwwIEBACi1Ob3RlOiBUaGlzIGRpcmVj
dG9yeSBpcyAqbm90KiBhdXRvbWF0aWNhbGx5IHN5bmNocm9uaXplZCB3aXRoIFN1YnZlcnNpb24g
dmlhIGEgcG9zdC1jb21taXQgaG9vay4KLUFueSBjaGFuZ2VzIG1hZGUgdG8gY29kZSB3aXRoaW4g
dGhpcyBkaXJlY3Rvcnkgd2lsbCBuZWVkIHRvIGJlIG1hbnVhbGx5IHB1c2hlZCB0byBidWlsZC53
ZWJraXQub3JnLgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvYnVpbGRib3QudGFjCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2J1aWxkYm90LnRhYwkocmV2aXNpb24gMjY4NzMx
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvYnVp
bGRib3QudGFjCShub25leGlzdGVudCkKQEAgLTEsMjYgKzAsMCBAQAotaW1wb3J0IG9zCi0KLWZy
b20gdHdpc3RlZC5hcHBsaWNhdGlvbiBpbXBvcnQgc2VydmljZQotZnJvbSBidWlsZGJvdC5tYXN0
ZXIgaW1wb3J0IEJ1aWxkTWFzdGVyCi0KLWJhc2VkaXIgPSAnLicKLWNvbmZpZ2ZpbGUgPSByJ21h
c3Rlci5jZmcnCi1yb3RhdGVMZW5ndGggPSA1MDAwMDAwMAotbWF4Um90YXRlZEZpbGVzID0gMjAK
LXVtYXNrID0gMDIyCi0KLWlmIGJhc2VkaXIgPT0gJy4nOgotICAgIGJhc2VkaXIgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLQotYXBwbGljYXRpb24gPSBzZXJ2
aWNlLkFwcGxpY2F0aW9uKCdidWlsZG1hc3RlcicpCi10cnk6Ci0gIGZyb20gdHdpc3RlZC5weXRo
b24ubG9nZmlsZSBpbXBvcnQgTG9nRmlsZQotICBmcm9tIHR3aXN0ZWQucHl0aG9uLmxvZyBpbXBv
cnQgSUxvZ09ic2VydmVyLCBGaWxlTG9nT2JzZXJ2ZXIKLSAgbG9nZmlsZSA9IExvZ0ZpbGUuZnJv
bUZ1bGxQYXRoKCJ0d2lzdGQubG9nIiwgcm90YXRlTGVuZ3RoPXJvdGF0ZUxlbmd0aCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJvdGF0ZWRGaWxlcz1tYXhSb3RhdGVkRmls
ZXMpCi0gIGFwcGxpY2F0aW9uLnNldENvbXBvbmVudChJTG9nT2JzZXJ2ZXIsIEZpbGVMb2dPYnNl
cnZlcihsb2dmaWxlKS5lbWl0KQotZXhjZXB0IEltcG9ydEVycm9yOgotICAjIHByb2JhYmx5IG5v
dCB5ZXQgdHdpc3RlZCA4LjIuMCBhbmQgYmV5b25kLCBjYW4ndCBzZXQgbG9nIHlldAotICBwYXNz
Ci1CdWlsZE1hc3RlcihiYXNlZGlyLCBjb25maWdmaWxlKS5zZXRTZXJ2aWNlUGFyZW50KGFwcGxp
Y2F0aW9uKQotCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9jb21taXR0ZXJfYXV0aC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0aC5weQkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvY29tbWl0dGVyX2F1dGgucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJBbiBpbXBsZW1lbnRh
dGlvbiBvZiBidWlsZGJvdC5zdGF0dXMud2ViLmF1dGguSUF1dGggZm9yIGF1dGhlbnRpY2F0aW5n
IFdlYktpdCBjb21taXR0ZXJzIiIiCi0KLWltcG9ydCBDb25maWdQYXJzZXIKLWltcG9ydCBidWls
ZGJvdC5zdGF0dXMud2ViLmF1dGgKLWltcG9ydCBqc29uCi1pbXBvcnQgem9wZS5pbnRlcmZhY2UK
LQotZnJvbSBodGRpZ2VzdHBhcnNlciBpbXBvcnQgSFREaWdlc3RQYXJzZXIKLQotCi1jbGFzcyBF
cnJvcihFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1jbGFzcyBDb21taXR0ZXJBdXRoKGJ1aWxk
Ym90LnN0YXR1cy53ZWIuYXV0aC5BdXRoQmFzZSk6Ci0gICAgem9wZS5pbnRlcmZhY2UuaW1wbGVt
ZW50cyhidWlsZGJvdC5zdGF0dXMud2ViLmF1dGguSUF1dGgpCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgYXV0aF9qc29uX2ZpbGVuYW1lKToKLSAgICAgICAgc2VsZi5fYXV0aF9qc29uX2ZpbGVu
YW1lID0gYXV0aF9qc29uX2ZpbGVuYW1lCi0KLSAgICBkZWYgYXV0aF9qc29uKHNlbGYpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYub3Blbl9hdXRoX2pzb25fZmlsZSgpIGFz
IGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQotICAgICAgICBleGNlcHQg
SU9FcnJvciBhcyBlOgotICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIG9wZW5pbmcgYXV0
aC5qc29uIGZpbGU6IHswfScuZm9ybWF0KGUuc3RyZXJyb3IpKQotICAgICAgICBleGNlcHQgVmFs
dWVFcnJvciBhcyBlOgotICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIHBhcnNpbmcgYXV0
aC5qc29uIGZpbGU6IHswfScuZm9ybWF0KGUubWVzc2FnZSkpCi0KLSAgICBkZWYgYXV0aF9qc29u
X2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYXV0aF9qc29uX2ZpbGVuYW1l
Ci0KLSAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYsIHVzZXJuYW1lLCBwYXNzd29yZCk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmlzX3dlYmtpdF9jb21taXR0ZXIodXNl
cm5hbWUpIGFuZCBzZWxmLmlzX3dlYmtpdF90cmFjX3VzZXIodXNlcm5hbWUsIHBhc3N3b3JkKQot
ICAgICAgICBleGNlcHQgRXJyb3IgYXMgZToKLSAgICAgICAgICAgIHNlbGYuZXJyID0gZS5hcmdz
WzBdCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBpc193ZWJraXRfY29tbWl0
dGVyKHNlbGYsIHVzZXJuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgdXNlcm5h
bWUgbm90IGluIHNlbGYud2Via2l0X2NvbW1pdHRlcnMoKToKLSAgICAgICAgICAgICAgICBzZWxm
LmVyciA9ICdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkJwotICAgICAgICAgICAgICAgIHJldHVy
biBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZXhjZXB0IENvbmZpZ1Bh
cnNlci5FcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEVycm9yKCdFcnJvciBwYXJzaW5nIFdlYktp
dCBjb21taXR0ZXJzIGZpbGUnKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgotICAgICAg
ICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIG9wZW5pbmcgV2ViS2l0IGNvbW1pdHRlcnMgZmlsZTog
ezB9Jy5mb3JtYXQoZS5zdHJlcnJvcikpCi0KLSAgICBkZWYgaXNfd2Via2l0X3RyYWNfdXNlcihz
ZWxmLCB1c2VybmFtZSwgcGFzc3dvcmQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRo
IHNlbGYub3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoKSBhcyBmOgotICAgICAgICAgICAgICAg
IGh0ZGlnZXN0ID0gSFREaWdlc3RQYXJzZXIoZikKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMg
ZToKLSAgICAgICAgICAgIHJhaXNlIEVycm9yKCdFcnJvciBvcGVuaW5nIFRyYWMgY3JlZGVudGlh
bHMgZmlsZTogezB9Jy5mb3JtYXQoZS5zdHJlcnJvcikpCi0KLSAgICAgICAgaWYgbm90IGh0ZGln
ZXN0LmVudHJpZXMoKToKLSAgICAgICAgICAgIHJhaXNlIEVycm9yKCdFcnJvciBwYXJzaW5nIFRy
YWMgY3JlZGVudGlhbHMgZmlsZScpCi0KLSAgICAgICAgaWYgbm90IGh0ZGlnZXN0LmF1dGhlbnRp
Y2F0ZSh1c2VybmFtZSwgJ01hYyBPUyBGb3JnZScsIHBhc3N3b3JkKToKLSAgICAgICAgICAgIHNl
bGYuZXJyID0gJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQnCi0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKLQotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgIyBUaGVzZSB0aHJlZSBtZXRob2Rz
IGV4aXN0IGZvciBlYXNlIG9mIHRlc3RpbmcuCi0gICAgZGVmIG9wZW5fYXV0aF9qc29uX2ZpbGUo
c2VsZik6Ci0gICAgICAgIHJldHVybiBvcGVuKHNlbGYuYXV0aF9qc29uX2ZpbGVuYW1lKCkpCi0K
LSAgICBkZWYgb3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBvcGVuKHNlbGYudHJhY19jcmVkZW50aWFsc19maWxlbmFtZSgpKQotCi0gICAgZGVmIG9wZW5f
d2Via2l0X2NvbW1pdHRlcnNfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9wZW4oc2VsZi53
ZWJraXRfY29tbWl0dGVyc19maWxlbmFtZSgpKQotCi0gICAgZGVmIHRyYWNfY3JlZGVudGlhbHNf
ZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmF1
dGhfanNvbigpWyd0cmFjX2NyZWRlbnRpYWxzJ10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgot
ICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ2F1dGguanNvbiBmaWxlIGlzIG1pc3NpbmcgInRyYWNf
Y3JlZGVudGlhbHMiIGtleScpCi0KLSAgICBkZWYgd2Via2l0X2NvbW1pdHRlcnMoc2VsZik6Ci0g
ICAgICAgIGNvbmZpZyA9IENvbmZpZ1BhcnNlci5SYXdDb25maWdQYXJzZXIoKQotICAgICAgICB3
aXRoIHNlbGYub3Blbl93ZWJraXRfY29tbWl0dGVyc19maWxlKCkgYXMgZjoKLSAgICAgICAgICAg
IGNvbmZpZy5yZWFkZnAoZikKLSAgICAgICAgcmV0dXJuIGNvbmZpZy5nZXQoJ2dyb3VwcycsICd3
ZWJraXQnKS5zcGxpdCgnLCcpCi0KLSAgICBkZWYgd2Via2l0X2NvbW1pdHRlcnNfZmlsZW5hbWUo
c2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmF1dGhfanNvbigp
Wyd3ZWJraXRfY29tbWl0dGVycyddCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAg
ICAgIHJhaXNlIEVycm9yKCdhdXRoLmpzb24gZmlsZSBpcyBtaXNzaW5nICJ3ZWJraXRfY29tbWl0
dGVycyIga2V5JykKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL2NvbW1pdHRlcl9hdXRoX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbW1pdHRlcl9hdXRo
X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb21taXR0ZXJfYXV0aF91bml0dGVzdC5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDIyMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IFN0cmluZ0lPCi1p
bXBvcnQgX19idWlsdGluX18KLWltcG9ydCBidWlsZGJvdC5zdGF0dXMud2ViLmF1dGgKLWltcG9y
dCBjb250ZXh0bGliCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGNvbW1pdHRl
cl9hdXRoIGltcG9ydCBDb21taXR0ZXJBdXRoCi0KLQotIyBUaGlzIHN1YmNsYXNzIG9mIFN0cmlu
Z0lPIHN1cHBvcnRzIHRoZSBjb250ZXh0IG1hbmFnZXIgcHJvdG9jb2wgc28gaXQgd29ya3MKLSMg
d2l0aCAid2l0aCIgc3RhdGVtZW50cywganVzdCBsaWtlIHJlYWwgZmlsZXMuCi1jbGFzcyBDTVN0
cmluZ0lPKFN0cmluZ0lPLlN0cmluZ0lPKToKLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y2VwdGlvbiwgdmFs
dWUsIHRyYWNlYmFjayk6Ci0gICAgICAgIHNlbGYuY2xvc2UoKQotCi0KLUBjb250ZXh0bGliLmNv
bnRleHRtYW5hZ2VyCi1kZWYgb3Blbl9vdmVycmlkZShmdW5jKToKLSAgICBvcmlnaW5hbF9vcGVu
ID0gX19idWlsdGluX18ub3BlbgotICAgIF9fYnVpbHRpbl9fLm9wZW4gPSBmdW5jCi0gICAgeWll
bGQKLSAgICBfX2J1aWx0aW5fXy5vcGVuID0gb3JpZ2luYWxfb3BlbgotCi0KLWNsYXNzIENvbW1p
dHRlckF1dGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXV0aCA9IENvbW1pdHRlckF1dGgoJ3BhdGgvdG8vYXV0aC5qc29uJykKLSAg
ICAgICAgc2VsZi5hdXRoLm9wZW5fYXV0aF9qc29uX2ZpbGUgPSBzZWxmLmZha2VfYXV0aF9qc29u
X2ZpbGUKLSAgICAgICAgc2VsZi5hdXRoLm9wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmlsZSA9IHNl
bGYuZmFrZV9jb21taXR0ZXJzX2ZpbGUKLSAgICAgICAgc2VsZi5hdXRoLm9wZW5fdHJhY19jcmVk
ZW50aWFsc19maWxlID0gc2VsZi5mYWtlX2h0ZGlnZXN0X2ZpbGUKLQotICAgIGRlZiBmYWtlX29w
ZW5fZnVuY3Rpb24oc2VsZiwgZXhwZWN0ZWRfZmlsZW5hbWUpOgotICAgICAgICBkZWYgZmFrZV9v
cGVuKG5hbWUsIG1vZGU9J3InKToKLSAgICAgICAgICAgIHNlbGYuZmFrZV9vcGVuX3dhc19jYWxs
ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2ZpbGVuYW1l
LCBuYW1lKQotICAgICAgICByZXR1cm4gZmFrZV9vcGVuCi0KLSAgICBkZWYgdGVzdF9hdXRoZW50
aWNhdGlvbl9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hdXRo
LmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dvcmQn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5hdXRoLmVycm1zZygpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyMkBl
eGFtcGxlLmNvbScsICdjb21taXR0ZXIycGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnJywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfY29tbWl0dGVyX3dp
dGhvdXRfdHJhY19jcmVkZW50aWFsc19mYWlscyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXIzQHdlYmtpdC5vcmcnLCAnY29t
bWl0dGVyM3Bhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ludmFsaWQgdXNl
cm5hbWUvcGFzc3dvcmQnLCBzZWxmLmF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF9mYWls
X3RvX29wZW5fYXV0aF9qc29uX2ZpbGUoc2VsZik6Ci0gICAgICAgIGRlZiByYWlzZV9JT0Vycm9y
KCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKDIsICdObyBzdWNoIGZpbGUgb3IgZGlyZWN0
b3J5JywgJ3BhdGgvdG8vYXV0aC5qc29uJykKLSAgICAgICAgYXV0aCA9IENvbW1pdHRlckF1dGgo
J3BhdGgvdG8vYXV0aC5qc29uJykKLSAgICAgICAgYXV0aC5vcGVuX2F1dGhfanNvbl9maWxlID0g
cmFpc2VfSU9FcnJvcgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF1dGguYXV0aGVudGljYXRl
KCdjb21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdFcnJvciBvcGVuaW5nIGF1dGguanNvbiBmaWxlOiBObyBzdWNoIGZp
bGUgb3IgZGlyZWN0b3J5JywgYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X2ZhaWxfdG9f
b3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUoc2VsZik6Ci0gICAgICAgIGRlZiByYWlzZV9JT0Vy
cm9yKCk6Ci0gICAgICAgICAgICByYWlzZSBJT0Vycm9yKDIsICdObyBzdWNoIGZpbGUgb3IgZGly
ZWN0b3J5JywgJ3BhdGgvdG8vdHJhYy9jcmVkZW50aWFscycpCi0gICAgICAgIHNlbGYuYXV0aC5v
cGVuX3RyYWNfY3JlZGVudGlhbHNfZmlsZSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZycs
ICdjb21taXR0ZXJwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFcnJvciBv
cGVuaW5nIFRyYWMgY3JlZGVudGlhbHMgZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScs
IHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X2ZhaWxfdG9fb3Blbl93ZWJraXRf
Y29tbWl0dGVyc19maWxlKHNlbGYpOgotICAgICAgICBkZWYgcmFpc2VfSU9FcnJvcigpOgotICAg
ICAgICAgICAgcmFpc2UgSU9FcnJvcigyLCAnTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsICdw
YXRoL3RvL3dlYmtpdC9jb21taXR0ZXJzJykKLSAgICAgICAgc2VsZi5hdXRoLm9wZW5fd2Via2l0
X2NvbW1pdHRlcnNfZmlsZSA9IHJhaXNlX0lPRXJyb3IKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0
ZXJwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFcnJvciBvcGVuaW5nIFdl
YktpdCBjb21taXR0ZXJzIGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknLCBzZWxmLmF1
dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF9pbXBsZW1lbnRzX0lBdXRoKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydFRydWUoYnVpbGRib3Quc3RhdHVzLndlYi5hdXRoLklBdXRoLmltcGxl
bWVudGVkQnkoQ29tbWl0dGVyQXV0aCkpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2F1dGhfanNv
bl9maWxlKHNlbGYpOgotICAgICAgICBhdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRo
Lmpzb24nKQotICAgICAgICBhdXRoLm9wZW5fYXV0aF9qc29uX2ZpbGUgPSBzZWxmLmludmFsaWRf
YXV0aF9qc29uX2ZpbGUKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdXRoLmF1dGhlbnRpY2F0
ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dvcmQnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnRXJyb3IgcGFyc2luZyBhdXRoLmpzb24gZmlsZTogTm8gSlNPTiBv
YmplY3QgY291bGQgYmUgZGVjb2RlZCcsIGF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF9p
bnZhbGlkX2NvbW1pdHRlcnNfZmlsZShzZWxmKToKLSAgICAgICAgc2VsZi5hdXRoLm9wZW5fd2Vi
a2l0X2NvbW1pdHRlcnNfZmlsZSA9IHNlbGYuaW52YWxpZF9jb21taXR0ZXJzX2ZpbGUKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Vi
a2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdFcnJvciBwYXJzaW5nIFdlYktpdCBjb21taXR0ZXJzIGZpbGUnLCBzZWxmLmF1dGguZXJybXNn
KCkpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX3RyYWNfY3JlZGVudGlhbHNfZmlsZShzZWxmKToK
LSAgICAgICAgc2VsZi5hdXRoLm9wZW5fdHJhY19jcmVkZW50aWFsc19maWxlID0gc2VsZi5pbnZh
bGlkX2h0ZGlnZXN0X2ZpbGUKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmF1dGguYXV0
aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFcnJvciBwYXJzaW5nIFRyYWMgY3JlZGVudGlhbHMg
ZmlsZScsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X21pc3NpbmdfYXV0aF9q
c29uX2tleXMoc2VsZik6Ci0gICAgICAgIGF1dGggPSBDb21taXR0ZXJBdXRoKCdwYXRoL3RvL2F1
dGguanNvbicpCi0gICAgICAgIGF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSA9IGxhbWJkYTogQ01T
dHJpbmdJTygneyAidHJhY19jcmVkZW50aWFscyI6ICJwYXRoL3RvL3RyYWMvY3JlZGVudGlhbHMi
IH0nKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF1dGguYXV0aGVudGljYXRlKCdjb21taXR0
ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdhdXRoLmpzb24gZmlsZSBpcyBtaXNzaW5nICJ3ZWJraXRfY29tbWl0dGVycyIga2V5
JywgYXV0aC5lcnJtc2coKSkKLQotICAgICAgICBhdXRoLm9wZW5fYXV0aF9qc29uX2ZpbGUgPSBs
YW1iZGE6IENNU3RyaW5nSU8oJ3sgIndlYmtpdF9jb21taXR0ZXJzIjogInBhdGgvdG8vd2Via2l0
L2NvbW1pdHRlcnMiIH0nKQotICAgICAgICBhdXRoLm9wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmls
ZSA9IHNlbGYuZmFrZV9jb21taXR0ZXJzX2ZpbGUKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShh
dXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVyQHdlYmtpdC5vcmcnLCAnY29tbWl0dGVycGFzc3dv
cmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYXV0aC5qc29uIGZpbGUgaXMgbWlzc2lu
ZyAidHJhY19jcmVkZW50aWFscyIga2V5JywgYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0
X29wZW5fYXV0aF9qc29uX2ZpbGUoc2VsZik6Ci0gICAgICAgIGF1dGggPSBDb21taXR0ZXJBdXRo
KCdwYXRoL3RvL2F1dGguanNvbicpCi0gICAgICAgIHNlbGYuZmFrZV9vcGVuX3dhc19jYWxsZWQg
PSBGYWxzZQotICAgICAgICB3aXRoIG9wZW5fb3ZlcnJpZGUoc2VsZi5mYWtlX29wZW5fZnVuY3Rp
b24oYXV0aC5hdXRoX2pzb25fZmlsZW5hbWUoKSkpOgotICAgICAgICAgICAgYXV0aC5vcGVuX2F1
dGhfanNvbl9maWxlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmFrZV9vcGVuX3dh
c19jYWxsZWQpCi0KLSAgICBkZWYgdGVzdF9vcGVuX3RyYWNfY3JlZGVudGlhbHNfZmlsZShzZWxm
KToKLSAgICAgICAgYXV0aCA9IENvbW1pdHRlckF1dGgoJ3BhdGgvdG8vYXV0aC5qc29uJykKLSAg
ICAgICAgYXV0aC50cmFjX2NyZWRlbnRpYWxzX2ZpbGVuYW1lID0gbGFtYmRhOiAndHJhYyBjcmVk
ZW50aWFscyBmaWxlbmFtZScKLSAgICAgICAgc2VsZi5mYWtlX29wZW5fd2FzX2NhbGxlZCA9IEZh
bHNlCi0gICAgICAgIHdpdGggb3Blbl9vdmVycmlkZShzZWxmLmZha2Vfb3Blbl9mdW5jdGlvbihh
dXRoLnRyYWNfY3JlZGVudGlhbHNfZmlsZW5hbWUoKSkpOgotICAgICAgICAgICAgYXV0aC5vcGVu
X3RyYWNfY3JlZGVudGlhbHNfZmlsZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmZh
a2Vfb3Blbl93YXNfY2FsbGVkKQotCi0gICAgZGVmIHRlc3Rfb3Blbl93ZWJraXRfY29tbWl0dGVy
c19maWxlKHNlbGYpOgotICAgICAgICBhdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRo
Lmpzb24nKQotICAgICAgICBhdXRoLndlYmtpdF9jb21taXR0ZXJzX2ZpbGVuYW1lID0gbGFtYmRh
OiAnd2Via2l0IGNvbW1pdHRlcnMgZmlsZW5hbWUnCi0gICAgICAgIHNlbGYuZmFrZV9vcGVuX3dh
c19jYWxsZWQgPSBGYWxzZQotICAgICAgICB3aXRoIG9wZW5fb3ZlcnJpZGUoc2VsZi5mYWtlX29w
ZW5fZnVuY3Rpb24oYXV0aC53ZWJraXRfY29tbWl0dGVyc19maWxlbmFtZSgpKSk6Ci0gICAgICAg
ICAgICBhdXRoLm9wZW5fd2Via2l0X2NvbW1pdHRlcnNfZmlsZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkKQotCi0gICAgZGVmIHRlc3Rfbm9uX2Nv
bW1pdHRlcl9mYWlscyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmF1dGgu
YXV0aGVudGljYXRlKCdub25jb21taXR0ZXJAZXhhbXBsZS5jb20nLCAnbm9uY29tbWl0dGVycGFz
c3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSW52YWxpZCB1c2VybmFtZS9wYXNz
d29yZCcsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X3RyYWNfY3JlZGVudGlh
bHNfZmlsZW5hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BhdGgvdG8vdHJh
Yy9jcmVkZW50aWFscycsIHNlbGYuYXV0aC50cmFjX2NyZWRlbnRpYWxzX2ZpbGVuYW1lKCkpCi0K
LSAgICBkZWYgdGVzdF91bmtub3duX3VzZXJfZmFpbHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgnbm9ib2R5QGV4YW1wbGUuY29tJywgJ25v
Ym9keXBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ludmFsaWQgdXNlcm5h
bWUvcGFzc3dvcmQnLCBzZWxmLmF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF91c2VybmFt
ZV9pc19wcmVmaXhfb2ZfdmFsaWRfdXNlcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZ2cnLCAnY29tbWl0
dGVycGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSW52YWxpZCB1c2VybmFt
ZS9wYXNzd29yZCcsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X3dlYmtpdF9j
b21taXR0ZXJzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnY29tbWl0dGVyQHdl
YmtpdC5vcmcnLCAnY29tbWl0dGVyMkBleGFtcGxlLmNvbScsICdjb21taXR0ZXIzQHdlYmtpdC5v
cmcnXSwgc2VsZi5hdXRoLndlYmtpdF9jb21taXR0ZXJzKCkpCi0KLSAgICBkZWYgdGVzdF93ZWJr
aXRfY29tbWl0dGVyc19maWxlbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
cGF0aC90by93ZWJraXQvY29tbWl0dGVycycsIHNlbGYuYXV0aC53ZWJraXRfY29tbWl0dGVyc19m
aWxlbmFtZSgpKQotCi0gICAgZGVmIHRlc3Rfd3JvbmdfcGFzc3dvcmRfZmFpbHMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5hdXRoLmF1dGhlbnRpY2F0ZSgnY29tbWl0dGVy
QHdlYmtpdC5vcmcnLCAnd3JvbmdwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3JkJywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAg
ZGVmIGZha2VfYXV0aF9qc29uX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBDTVN0cmluZ0lP
KCIiInsKLSAgICAidHJhY19jcmVkZW50aWFscyI6ICJwYXRoL3RvL3RyYWMvY3JlZGVudGlhbHMi
LAotICAgICJ3ZWJraXRfY29tbWl0dGVycyI6ICJwYXRoL3RvL3dlYmtpdC9jb21taXR0ZXJzIgot
fSIiIikKLQotICAgIGRlZiBpbnZhbGlkX2F1dGhfanNvbl9maWxlKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gQ01TdHJpbmdJTygnfiFAIyQlXiYqKClfKycpCi0KLSAgICBkZWYgZmFrZV9jb21taXR0
ZXJzX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBDTVN0cmluZ0lPKCIiIltncm91cHNdCi1n
cm91cDEgPSB1c2VyQGV4YW1wbGUuY29tLHVzZXIyQGV4YW1wbGUuY29tCi1ncm91cDIgPSB1c2Vy
M0BleGFtcGxlLmNvbQotCi1ncm91cDMgPQotZ3JvdXA0ID0KLQotd2Via2l0ID0gY29tbWl0dGVy
QHdlYmtpdC5vcmcsY29tbWl0dGVyMkBleGFtcGxlLmNvbSxjb21taXR0ZXIzQHdlYmtpdC5vcmcK
LQotW3NlcnZpY2U6L10KLSogICAgPSByCi0iIiIpCi0KLSAgICBkZWYgaW52YWxpZF9jb21taXR0
ZXJzX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBDTVN0cmluZ0lPKCIiIltncm91cHNdCi0K
LVtbZ3JvdXBzMl0KLSIiIikKLQotICAgIGRlZiBmYWtlX2h0ZGlnZXN0X2ZpbGUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBDTVN0cmluZ0lPKCIiImNvbW1pdHRlckB3ZWJraXQub3JnOk1hYyBPUyBG
b3JnZTo3NjFjOGRjYjdkOWI1OTA4MDA3ZWQxNDJmNjJmZTczYQotY29tbWl0dGVyMkBleGFtcGxl
LmNvbTpNYWMgT1MgRm9yZ2U6ZmFlZWU2OWFjYzJlNDlhZjNhMGRiYjE1YmQ1OTNlZjQKLW5vbmNv
bW1pdHRlckBleGFtcGxlLmNvbTpNYWMgT1MgRm9yZ2U6Yjk5YWE3YWQzMjMwNmE2NTRjYTRkNTc4
MzlmZGU5YzEKLSIiIikKLQotICAgIGRlZiBpbnZhbGlkX2h0ZGlnZXN0X2ZpbGUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBDTVN0cmluZ0lPKCIiImNvbW1pdHRlckB3ZWJraXQub3JnOk1hYyBPUyBG
b3JnZTo3NjFjOGRjYjdkOWI1OTA4MDA3ZWQxNDJmNjJmZTczYQotY29tbWl0dGVyMkBleGFtcGxl
LmNvbTpNYWMgT1MgRm9yZ2U6ZmFlZWU2OWFjYzJlNDlhZjNhMGRiYjE1YmQ1OTNlZjQKLW5vbmNv
bW1pdHRlckBleGFtcGxlLmNvbTpNYWMgT1MgRm9yZ2U6Yjk5YWE3YWQzMjMwNmE2NTRjYTRkNTc4
MzlmZGU5YzEKLWNvbW1pdHRlcjRAZXhhbXBsZS5jb206TWFjIE9TIEZvcmdlOjo6Ci0iIiIpCi0K
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL2NvbW1pdHRlcl9hdXRoX3VuaXR0ZXN0LnB5Cl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
OmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9jb25maWcuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNvbgkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29uZmlnLmpzb24J
KG5vbmV4aXN0ZW50KQpAQCAtMSw2MzYgKzAsMCBAQAotewotICAgICJ3b3JrZXJzIjogICAgIFsK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyNzkiLCAicGxhdGZvcm0iOiAibWFj
LWJpZ3N1ciJ9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTIxIiwgInBs
YXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJib3QxNTciLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImJvdDE4NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjA1IiwgInBsYXRmb3JtIjogIm1hYy1j
YXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyNDEiLCAicGxh
dGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvdDI0MiIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90MjQzIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyNDQiLCAicGxhdGZvcm0iOiAibWFjLWNh
dGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0NSIsICJwbGF0
Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90MjQ2IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJib3QyNDciLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0OCIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0
YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjYwIiwgInBsYXRm
b3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJi
b3QzMDIiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvdDYwMyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjMyIiwgInBsYXRmb3JtIjogIm1hYy1jYXRh
bGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2MzgiLCAicGxhdGZv
cm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJv
dDY3NCIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90NjgzIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2ODciLCAicGxhdGZvcm0iOiAibWFjLWNhdGFs
aW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY4OCIsICJwbGF0Zm9y
bSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0KLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvdDEzMiIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImJvdDE3OCIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDE3OSIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZl
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDE4MyIsICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDE4NCIs
ICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJvdDE4NSIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImJvdDE5OCIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDIxMCIsICJwbGF0Zm9ybSI6ICJtYWMtbW9q
YXZlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDYxMCIsICJwbGF0Zm9y
bSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDYx
MSIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImJvdDYxMiIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImJvdDYxMyIsICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiB9LAot
Ci0KLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2NzMiLCAicGxhdGZvcm0iOiAi
aW9zLTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY1MSIsICJwbGF0
Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJvdDY1MiIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImJvdDY1MyIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9y
LTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY1NCIsICJwbGF0Zm9y
bSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvdDY0MSIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImJvdDY4MiIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY5NCIsICJwbGF0Zm9ybSI6
ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJv
dDY5NSIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImJvdDY2NyIsICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0In0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjY0IiwgInBsYXRmb3JtIjogImlv
cy1zaW11bGF0b3ItMTQifSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDYw
NyIsICJwbGF0Zm9ybSI6ICJ0dm9zLTE0IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJvdDYwOCIsICJwbGF0Zm9ybSI6ICJ0dm9zLXNpbXVsYXRvci0xNCIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2MDkiLCAicGxhdGZvcm0iOiAid2F0Y2hvcy03IiB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY3MiIsICJwbGF0Zm9ybSI6ICJ3
YXRjaG9zLXNpbXVsYXRvci03IiB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90NTQ1IiwgInBsYXRmb3JtIjogIndpbiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJib3Q1NDYiLCAicGxhdGZvcm0iOiAid2luIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImJvdDU0NyIsICJwbGF0Zm9ybSI6ICJ3aW4iIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90NTQ4IiwgInBsYXRmb3JtIjogIndpbiIgfSwKLQotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIndpbmNhaXJvLXdrbC1yZWxlYXNlLWJ1aWxkLTAxIiwgInBs
YXRmb3JtIjogIndpbmNhaXJvIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndp
bmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzLTAxIiwgInBsYXRmb3JtIjogIndpbmNhaXJvIiB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3Rz
LTAyIiwgInBsYXRmb3JtIjogIndpbmNhaXJvIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogIndpbmNhaXJvLWpzYy1yZWxlYXNlLXRlc3RzLTAxIiwgInBsYXRmb3JtIjogIndpbmNh
aXJvIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndpbmNhaXJvLXdrbC1kZWJ1
Zy1idWlsZC0wMSIsICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJ3aW5jYWlyby13a2wtZGVidWctdGVzdHMtMDEiLCAicGxhdGZvcm0iOiAi
d2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2ts
LWRlYnVnLXRlc3RzLTAyIiwgInBsYXRmb3JtIjogIndpbmNhaXJvIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIndpbmNhaXJvLWpzYy1kZWJ1Zy10ZXN0cy0wMSIsICJwbGF0Zm9y
bSI6ICJ3aW5jYWlybyIgfSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBsYXlz
dGF0aW9uLXJlbGVhc2UtYnVpbGQtMDEiLCAicGxhdGZvcm0iOiAicGxheXN0YXRpb24iIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxheXN0YXRpb24tZGVidWctYnVpbGQtMDEi
LCAicGxhdGZvcm0iOiAicGxheXN0YXRpb24iIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJndGstbGludXgtYm90LTEiLCAicGxhdGZvcm0iOiAiZ3RrIiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51eC1ib3QtMiIsICJwbGF0Zm9ybSI6ICJndGsi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0zIiwgInBs
YXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGlu
dXgtYm90LTUiLCAicGxhdGZvcm0iOiAiZ3RrIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImd0ay1saW51eC1ib3QtNiIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC03IiwgInBsYXRmb3JtIjogImd0ayIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTgiLCAicGxh
dGZvcm0iOiAiZ3RrIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51
eC1ib3QtOSIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiZ3RrLWxpbnV4LWJvdC0xMCIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0xMSIsICJwbGF0Zm9ybSI6ICJndGsi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0xMiIsICJw
bGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxp
bnV4LWJvdC0xMyIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0xNCIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0xNSIsICJwbGF0Zm9ybSI6ICJn
dGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0xNiIs
ICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3Rr
LWxpbnV4LWJvdC0xNyIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0KLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtMSIsICJwbGF0Zm9ybSI6ICJq
c2Mtb25seSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJqc2Nvbmx5LWxpbnV4
LWlnYWxpYS1ib3QtMiIsICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtMyIsICJwbGF0Zm9ybSI6
ICJqc2Mtb25seSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJqc2Nvbmx5LWxp
bnV4LWlnYWxpYS1ib3QtNCIsICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtNSIsICJwbGF0Zm9y
bSI6ICJqc2Mtb25seSIgfSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndwZS1s
aW51eC1ib3QtMSIsICJwbGF0Zm9ybSI6ICJ3cGUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAid3BlLWxpbnV4LWJvdC0yIiwgInBsYXRmb3JtIjogIndwZSIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJ3cGUtbGludXgtYm90LTMiLCAicGxhdGZvcm0iOiAid3Bl
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIndwZS1saW51eC1ib3QtNCIsICJw
bGF0Zm9ybSI6ICJ3cGUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxp
bnV4LWJvdC01IiwgInBsYXRmb3JtIjogIndwZSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJ3cGUtbGludXgtYm90LTYiLCAicGxhdGZvcm0iOiAid3BlIiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIndwZS1saW51eC1ib3QtNyIsICJwbGF0Zm9ybSI6ICJ3cGUi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4LWJvdC04IiwgInBs
YXRmb3JtIjogIndwZSIgfQotICAgICAgICAgICAgICAgICAgXSwKLQotICAgICJidWlsZGVycyI6
ICAgWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUJpZ1N1ci1SZWxlYXNl
LUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogImJpZ3N1ci1y
ZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLWJpZ3N1ciIs
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Iiwg
ImFybTY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3QyNzki
XQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
IkFwcGxlLUNhdGFsaW5hLURlYnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5Iiwg
ImJ1aWxkZGlyIjogImNhdGFsaW5hLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0
ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjog
WyJjYXRhbGluYS1kZWJ1Zy10ZXN0cy1qc2MiLCAiY2F0YWxpbmEtZGVidWctdGVzdHMtdGVzdDI2
MiIsICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azEiLCAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2sy
IiwgImNhdGFsaW5hLWRlYnVnLXRlc3RzLXdrMi1ncHVwcm9jZXNzIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2ODciLCAiYm90Njg4Il0KLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGlu
YS1EZWJ1Zy1XSzEtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2ViS2l0MUFsbEJ1dEpTQ0ZhY3Rv
cnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2sxIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAi
ZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI0MSIsICJib3QyNDIiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxl
LUNhdGFsaW5hLURlYnVnLVdLMi1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0
b3J5IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJjb25maWd1cmF0aW9uIjog
ImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3QyNDMiLCAiYm90MjQ0Il0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFw
cGxlLUNhdGFsaW5hLURlYnVnLVdLMi1HUFVQcm9jZXNzLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVz
dEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2sy
LWdwdXByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0
YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZf
NjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1u
by1yZXRyeS1mYWlsdXJlcyIsICItLXVzZS1ncHUtcHJvY2VzcyJdLAotICAgICAgICAgICAgICAg
ICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MjYwIl0KLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUJ1
aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLXJl
bGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEi
LCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiY2F0YWxpbmEtcmVsZWFzZS10
ZXN0cy10ZXN0MjYyIiwgImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtanNjIiwgImNhdGFsaW5hLXJl
bGVhc2UtcGVyZi10ZXN0cyIsICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMSIsICJjYXRhbGlu
YS1yZWxlYXNlLXRlc3RzLXdrMiIsICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMi13ZWJnbCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjgzIiwgImJvdDY3
NCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzEtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2Vi
S2l0MUFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0
cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEi
LCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJl
dHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJi
b3QyNDUiLCAiYm90MjQ2Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1UZXN0cyIsICJmYWN0
b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLXJlbGVh
c2UtdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNh
dGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4
ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsi
LS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1l
cyI6IFsiYm90MjQ3IiwgImJvdDI0OCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItV2ViR0wt
VGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJj
YXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMi13ZWJnbCIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAi
YXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0
aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiLCAiLS13ZWJnbC10ZXN0LXN1
aXRlIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3QzMDIiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFw
cGxlLUNhdGFsaW5hLURlYnVnLUpTQy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RKU0NGYWN0b3J5
IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLWpzYyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJjb25maWd1cmF0aW9uIjogImRl
YnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ3b3JrZXJuYW1lcyI6IFsiYm90NjM4Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUpTQy1UZXN0
cyIsICJmYWN0b3J5IjogIlRlc3RKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLXJl
bGVhc2UtdGVzdHMtanNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFj
LWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjog
WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDE1
NyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiQXBwbGUtQ2F0YWxpbmEtTExJTlQtQ0xvb3AtQnVpbGRBbmRUZXN0IiwgImZhY3RvcnkiOiAi
QnVpbGRBbmRUZXN0TExJTlRDTG9vcEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtY2xv
b3AtZGVidWciLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxp
bmEiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDE4NyJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctVGVzdDI2Mi1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3QyNjJGYWN0b3J5
IiwgImJ1aWxkZGlyIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLXRlc3QyNjIiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6
ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZXMiOiBbImJvdDYwMyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBs
ZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1QZXJmIiwgImZhY3RvcnkiOiAiRG93bmxvYWRBbmRQZXJm
VGVzdEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFzZS1wZXJmLXRlc3RzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZp
Z3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDIwNSJdCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtQ2F0YWxpbmEt
UmVsZWFzZS1UZXN0MjYyLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdDI2MkZhY3RvcnkiLCAiYnVp
bGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy10ZXN0MjYyIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAicmVs
ZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAid29ya2VybmFtZXMiOiBbImJvdDYzMiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLURlYnVnLUJ1aWxkIiwgImZh
Y3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIm1vamF2ZS1kZWJ1ZyIsCi0gICAg
ICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLCAiY29uZmlndXJhdGlv
biI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAidHJpZ2dlcnMiOiBbIm1vamF2ZS1kZWJ1Zy10ZXN0cy13azEiLCAibW9qYXZlLWRl
YnVnLXRlc3RzLXdrMiJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
Ym90NjEyIiwgImJvdDYxMyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLURlYnVnLVdLMS1UZXN0cyIsICJmYWN0b3J5
IjogIlRlc3RXZWJLaXQxQWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtZGVi
dWctdGVzdHMtd2sxIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLW1v
amF2ZSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5v
LXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3QxODMiLCAiYm90MTg0Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtRGVidWctV0syLVRlc3RzIiwgImZhY3Rv
cnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAibW9qYXZlLWRlYnVnLXRl
c3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2phdmUi
LCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRy
eS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90
MTc4IiwgImJvdDE3OSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6ICJC
dWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAibW9qYXZlLXJlbGVhc2UiLAotICAgICAgICAgICAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVs
ZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAidHJpZ2dlcnMiOiBbIm1vamF2ZS1yZWxlYXNlLXRlc3RzLXdrMSIsICJtb2phdmUtcmVsZWFz
ZS10ZXN0cy13azIiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJv
dDYxMCIsICJib3Q2MTEiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIkFwcGxlLU1vamF2ZS1SZWxlYXNlLVdLMS1UZXN0cyIsICJmYWN0b3J5
IjogIlRlc3RXZWJLaXQxQWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtcmVs
ZWFzZS10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
bW9qYXZlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4
ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsi
LS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1l
cyI6IFsiYm90MTMyIiwgImJvdDE4NSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzIiwg
ImZhY3RvcnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAibW9qYXZlLXJl
bGVhc2UtdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFj
LW1vamF2ZSIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsi
eDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBb
Ii0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFt
ZXMiOiBbImJvdDE5OCIsICJib3QyMTAiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9T
LTE0LVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIi
OiAiaW9zLTE0LXJlbGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJp
b3MtMTQiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFy
bTY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2NzMiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1SZWxlYXNlLUJ1aWxk
IiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogImlvcy1zaW11bGF0b3It
MTQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImlvcy1zaW11
bGF0b3ItMTQiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiaW9zLXNpbXVs
YXRvci0xNC1yZWxlYXNlLXRlc3RzLXdrMiIsICJpcGFkb3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2Ut
dGVzdHMtd2syIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2
NDEiLCAiYm90NjgyIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLWlPUy0xNC1TaW11bGF0
b3ItRGVidWctQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAi
aW9zLXNpbXVsYXRvci0xNC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3Jt
IjogImlvcy1zaW11bGF0b3ItMTQiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBb
Imlvcy1zaW11bGF0b3ItMTQtZGVidWctdGVzdHMtd2syIiwgImlwYWRvcy1zaW11bGF0b3ItMTQt
ZGVidWctdGVzdHMtd2syIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3Q2OTQiLCAiYm90Njk1Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLWlPUy0xNC1T
aW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFj
dG9yeSIsICJidWlsZGRpciI6ICJpb3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2UtdGVzdHMtd2syIiwK
LSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRvci0xNCIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sICJk
ZXZpY2VfbW9kZWwiOiAiaXBob25lIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25h
bEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjUxIiwgImJvdDY1MiJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLURlYnVnLVdLMi1UZXN0cyIsICJmYWN0b3J5Ijog
IlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImlvcy1zaW11bGF0b3ItMTQtZGVi
dWctdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNp
bXVsYXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLCAiZGV2aWNlX21vZGVsIjogImlwaG9uZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiLCAiLS1uby1z
YW1wbGUtb24tdGltZW91dCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6
IFsiYm90NjUzIiwgImJvdDY1NCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBsZS1pUGFkT1Mt
MTQtU2ltdWxhdG9yLVJlbGVhc2UtV0syLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEFsbEJ1dEpT
Q0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiaXBhZG9zLXNpbXVsYXRvci0xNC1yZWxlYXNlLXRlc3Rz
LXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3It
MTQiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLCAiZGV2aWNlX21vZGVsIjogImlwYWQiLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRp
dGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2NjciXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
QXBwbGUtaVBhZE9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1XSzItVGVzdHMiLCAiZmFjdG9yeSI6ICJU
ZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJpcGFkb3Mtc2ltdWxhdG9yLTE0LWRl
YnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImlvcy1z
aW11bGF0b3ItMTQiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjog
WyJ4ODZfNjQiXSwgImRldmljZV9tb2RlbCI6ICJpcGFkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyIsICItLW5vLXNh
bXBsZS1vbi10aW1lb3V0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3Q2NjQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtdHZPUy0xNC1SZWxlYXNlLUJ1
aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogInR2b3MtMTQtcmVs
ZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogInR2b3MtMTQiLCAiY29u
ZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0Il0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2MDciXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiQXBwbGUtdHZPUy1TaW11bGF0b3ItMTQtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5
IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJ0dm9zLXNpbXVsYXRvci0xNC1yZWxlYXNl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAidHZvcy1zaW11bGF0b3ItMTQi
LCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjA4Il0KLSAgICAg
ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
ICAgICAgICJuYW1lIjogIkFwcGxlLXdhdGNoT1MtNy1SZWxlYXNlLUJ1aWxkIiwgImZhY3Rvcnki
OiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndhdGNob3MtNy1yZWxlYXNlIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2F0Y2hvcy03IiwgImNvbmZpZ3VyYXRpb24i
OiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJhcm02NF8zMiIsICJhcm12N2siXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDYwOSJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJBcHBsZS13YXRjaE9TLVNpbXVsYXRvci03LVJlbGVhc2UtQnVpbGQiLCAiZmFj
dG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2F0Y2hvcy1zaW11bGF0b3ItNy1y
ZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2F0Y2hvcy1zaW11
bGF0b3ItNyIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsi
aTM4NiJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjcyIl0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLVdpbi0xMC1SZWxlYXNlLUJ1aWxkIiwgImZhY3Rv
cnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbjEwLXJlbGVhc2UiLAotICAgICAg
ICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iLCAiY29uZmlndXJhdGlvbiI6ICJyZWxl
YXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ0cmlnZ2VycyI6IFsid2luMTAtcmVsZWFzZS10ZXN0cyJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NTQ4Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxl
LVdpbi0xMC1EZWJ1Zy1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRp
ciI6ICJ3aW4xMC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndp
biIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsid2luMTAtZGVidWctdGVzdHMi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDU0NyJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJBcHBsZS1XaW4tMTAtUmVsZWFzZS1UZXN0cyIsICJmYWN0b3J5Ijog
IlRlc3RXZWJLaXQxRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3aW4xMC1yZWxlYXNlLXRlc3RzIiwK
LSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2luIiwgImNvbmZpZ3VyYXRpb24i
OiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDU0NiJdCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJB
cHBsZS1XaW4tMTAtRGVidWctVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2ViS2l0MUZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAid2luMTAtZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAg
ICJwbGF0Zm9ybSI6ICJ3aW4iLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1
cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
ImJvdDU0NSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LVJlbGVhc2Ut
QnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4
LTY0LXJlbGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAi
Y29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiZ3RrLWxpbnV4LTY0LXJlbGVhc2Ut
dGVzdHMiLCAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMtanMiLCAiZ3RrLWxpbnV4LTY0LXJl
bGVhc2UtdGVzdHMtd2ViZHJpdmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImd0ay1saW51eC02NC1yZWxlYXNlLXdheWxhbmQtdGVzdHMiLCAiZ3RrLWxpbnV4LTY0LXJl
bGVhc2UtcGVyZi10ZXN0cyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6
IFsiZ3RrLWxpbnV4LWJvdC0yIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1i
aXQtUmVsZWFzZS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1
aWxkZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFt
ZXMiOiBbImd0ay1saW51eC1ib3QtNiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgt
NjQtYml0LVJlbGVhc2UtSlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5IiwgImJ1
aWxkZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJh
cmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTIiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxp
bnV4LTY0LWJpdC1SZWxlYXNlLVdlYkRyaXZlci1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJE
cml2ZXJGYWN0b3J5IiwgImJ1aWxkZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLXdl
YmRyaXZlciIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25m
aWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTE0Il0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtRGVidWctQnVpbGQiLCAiZmFjdG9y
eSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LWRlYnVnIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAi
ZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgInRyaWdnZXJzIjogWyJndGstbGludXgtNjQtZGVidWctdGVzdHMiLCAiZ3RrLWxpbnV4LTY0
LWRlYnVnLXRlc3RzLWpzIiwgImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy13ZWJkcml2ZXIiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMyJd
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LURlYnVnLVRlc3RzIiwgImZh
Y3RvcnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0
LWRlYnVnLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwg
ImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTciXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1KUy1UZXN0cyIsICJm
YWN0b3J5IjogIlRlc3RKU0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LWRlYnVn
LXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNv
bmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAg
ICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTEzIl0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtRGVidWctV2ViRHJpdmVyLVRlc3Rz
IiwgImZhY3RvcnkiOiAiVGVzdFdlYkRyaXZlckZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxp
bnV4LTY0LWRlYnVnLXRlc3RzLXdlYmRyaXZlciIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3Rr
LWxpbnV4LWJvdC0xNSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LVJl
bGVhc2UtUGVyZiIsICJmYWN0b3J5IjogIkRvd25sb2FkQW5kUGVyZlRlc3RGYWN0b3J5IiwgImJ1
aWxkZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlLXBlcmYtdGVzdHMiLAotICAgICAgICAgICAg
ICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwg
ImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRp
dGlvbmFsQXJndW1lbnRzIjogWyItLWRpc3BsYXktc2VydmVyPXhvcmciXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtOCJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtV2F5bGFuZC1UZXN0cyIsICJmYWN0
b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImd0ay1saW51eC02NC1y
ZWxlYXNlLXdheWxhbmQtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyIt
LWRpc3BsYXktc2VydmVyPXdheWxhbmQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZXMiOiBbImd0ay1saW51eC1ib3QtOSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGlu
dXgtNjQtYml0LVJlbGVhc2UtRGViaWFuLVN0YWJsZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxk
RmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS1kZWJpYW4iLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWV4cGVyaW1lbnRhbC1mZWF0dXJlcyIs
ICItLW5vLW1lZGlhLXNvdXJjZSJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1l
cyI6IFsiZ3RrLWxpbnV4LWJvdC0xMCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgt
NjQtYml0LVJlbGVhc2UtVWJ1bnR1LUxUUy1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9y
eSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS11YnVudHUiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJh
ZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWV4cGVyaW1lbnRhbC1mZWF0dXJlcyIsICItLW5v
LW1lZGlhLXNvdXJjZSJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
Z3RrLWxpbnV4LWJvdC0xMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjRiaXQt
UmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUxODA0IiwgImZhY3RvcnkiOiAiQnVpbGRB
bmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGlu
dXgtNjQtcGFja2FnaW5nLW5pZ3RobHktdWJ1bnR1MTgwNCIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0
ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxB
cmd1bWVudHMiOiBbIi0tbm8tYnViYmxld3JhcC1zYW5kYm94Il0sCi0gICAgICAgICAgICAgICAg
ICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTE2Il0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogIkdUSy1MaW51eC02NGJpdC1SZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTIw
MDQiLCAiZmFjdG9yeSI6ICJCdWlsZEFuZEdlbmVyYXRlTWluaUJyb3dzZXJKU0NCdW5kbGVGYWN0
b3J5IiwgImJ1aWxkZGlyIjogImd0ay1saW51eC02NC1wYWNrYWdpbmctbmlndGhseS11YnVudHUy
MDA0IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1idWJibGV3cmFwLXNh
bmRib3giXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51
eC1ib3QtMTciXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiV2luQ2Fpcm8tNjQtYml0LVdLTC1SZWxl
YXNlLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbmNh
aXJvLXdrbC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2lu
Y2Fpcm8iLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsid2luY2Fpcm8td2ts
LXJlbGVhc2UtdGVzdHMiLCAid2luY2Fpcm8tanNjLXJlbGVhc2UtdGVzdHMiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndpbmNhaXJvLXdrbC1yZWxlYXNlLWJ1aWxk
LTAxIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1XS0wtUmVsZWFzZS1U
ZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQxQWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRp
ciI6ICJ3aW5jYWlyby13a2wtcmVsZWFzZS10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFt
ZXMiOiBbIndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzLTAxIiwgIndpbmNhaXJvLXdrbC1yZWxl
YXNlLXRlc3RzLTAyIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1KU0Mt
UmVsZWFzZS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjog
IndpbmNhaXJvLWpzYy1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAid2luY2Fpcm8iLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVj
dHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6
IFsid2luY2Fpcm8tanNjLXJlbGVhc2UtdGVzdHMtMDEiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
V2luQ2Fpcm8tNjQtYml0LVdLTC1EZWJ1Zy1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9y
eSIsICJidWlsZGRpciI6ICJ3aW5jYWlyby13a2wtZGVidWciLAotICAgICAgICAgICAgICAgICAg
ICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFy
Y2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2Vy
cyI6IFsid2luY2Fpcm8td2tsLWRlYnVnLXRlc3RzIiwgIndpbmNhaXJvLWpzYy1kZWJ1Zy10ZXN0
cyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid2luY2Fpcm8td2ts
LWRlYnVnLWJ1aWxkLTAxIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1X
S0wtRGVidWctVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2ViS2l0MUFsbEJ1dEpTQ0ZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAid2luY2Fpcm8td2tsLWRlYnVnLXRlc3RzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAid2luY2Fpcm8iLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29y
a2VybmFtZXMiOiBbIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cy0wMSIsICJ3aW5jYWlyby13a2wt
ZGVidWctdGVzdHMtMDIiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiV2luQ2Fpcm8tNjQtYml0LUpT
Qy1EZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjog
IndpbmNhaXJvLWpzYy1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRm
b3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJl
cyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3
aW5jYWlyby1qc2MtZGVidWctdGVzdHMtMDEiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUGxheVN0
YXRpb24tRGVidWctQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIi
OiAicGxheXN0YXRpb24tZGVidWciLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6
ICJwbGF5c3RhdGlvbiIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsicGxh
eXN0YXRpb24tZGVidWctYnVpbGQtMDEiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiUGxheVN0YXRp
b24tUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6
ICJwbGF5c3RhdGlvbi1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0i
OiAicGxheXN0YXRpb24iLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVy
ZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
cGxheXN0YXRpb24tcmVsZWFzZS1idWlsZC0wMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKU0NP
bmx5LUxpbnV4LUFBcmNoNjQtUmVsZWFzZSIsICJmYWN0b3J5IjogIkJ1aWxkQW5kUmVtb3RlSlND
VGVzdHNGYWN0b3J5IiwgImJ1aWxkZGlyIjogImpzY29ubHktbGludXgtYWFyY2g2NC1yZWxlYXNl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiLCAiY29uZmln
dXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFhcmNoNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImpzY29ubHktbGludXgtaWdhbGlhLWJv
dC0yIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkpTQ09ubHktTGludXgtQVJNdjctVGh1bWIyLVJl
bGVhc2UiLCAiZmFjdG9yeSI6ICJCdWlsZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeSIsICJidWls
ZGRpciI6ICJqc2Nvbmx5LWxpbnV4LWFybXY3LXRodW1iMi1yZWxlYXNlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxl
YXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFybXY3Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
Indvcmtlcm5hbWVzIjogWyJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtMyJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAibmFtZSI6ICJKU0NPbmx5LUxpbnV4LUFSTXY3LVRodW1iMi1Tb2Z0RlAtUmVsZWFzZSIsICJm
YWN0b3J5IjogIkJ1aWxkQW5kUmVtb3RlSlNDVGVzdHNGYWN0b3J5IiwgImJ1aWxkZGlyIjogImpz
Y29ubHktbGludXgtYXJtdjctdGh1bWIyLXNvZnRmcC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbImFybXY3Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndv
cmtlcm5hbWVzIjogWyJqc2Nvbmx5LWxpbnV4LWlnYWxpYS1ib3QtNSJdCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAi
bmFtZSI6ICJKU0NPbmx5LUxpbnV4LU1JUFMzMmVsLVJlbGVhc2UiLCAiZmFjdG9yeSI6ICJCdWls
ZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeSIsICJidWlsZGRpciI6ICJqc2Nvbmx5LWxpbnV4LW1p
cHMzMmVsLXJlbGVhc2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJqc2Mt
b25seSIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsibWlw
cyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsianNjb25seS1saW51
eC1pZ2FsaWEtYm90LTEiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiV1BFLUxpbnV4LTY0LWJpdC1S
ZWxlYXNlLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndw
ZS1saW51eC02NC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAi
d3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZf
NjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBbIndwZS1saW51eC02NC1y
ZWxlYXNlLXRlc3RzIiwgIndwZS1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpzIl0sCi0gICAgICAg
ICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3cGUtbGludXgtYm90LTEiXQotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgIm5hbWUiOiAiV1BFLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVRlc3RzIiwgImZhY3Rvcnki
OiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid3BlLWxpbnV4LTY0LXJlbGVh
c2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29u
ZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC0yIl0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1KUy1UZXN0cyIsICJm
YWN0b3J5IjogIlRlc3RKU0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid3BlLWxpbnV4LTY0LXJlbGVh
c2UtdGVzdHMtanMiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAi
Y29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC01Il0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NC1iaXQtRGVidWctQnVpbGQiLCAiZmFj
dG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid3BlLWxpbnV4LTY0LWRlYnVnIiwK
LSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid3BlIiwgImNvbmZpZ3VyYXRpb24i
OiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAg
ICAgICAgInRyaWdnZXJzIjogWyJ3cGUtbGludXgtNjQtZGVidWctdGVzdHMiLCAid3BlLWxpbnV4
LTY0LWRlYnVnLXRlc3RzLWpzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVz
IjogWyJ3cGUtbGludXgtYm90LTMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiV1BFLUxpbnV4LTY0
LWJpdC1EZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1
aWxkZGlyIjogIndwZS1saW51eC02NC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVj
dHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6
IFsid3BlLWxpbnV4LWJvdC00Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NC1i
aXQtRGVidWctSlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5IiwgImJ1aWxkZGly
IjogIndwZS1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVy
ZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
d3BlLWxpbnV4LWJvdC02Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NGJpdC1S
ZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTE4MDQiLCAiZmFjdG9yeSI6ICJCdWlsZEFu
ZEdlbmVyYXRlTWluaUJyb3dzZXJCdW5kbGVGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndwZS1saW51
eC02NC1wYWNrYWdpbmctbmlndGhseS11YnVudHUxODA0IiwKLSAgICAgICAgICAgICAgICAgICAg
ICAicGxhdGZvcm0iOiAid3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFy
Z3VtZW50cyI6IFsiLS1uby1idWJibGV3cmFwLXNhbmRib3giLCAiLS1jbWFrZWFyZ3M9LURFTkFC
TEVfV1BFX1FUX0FQST1PRkYiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMi
OiBbIndwZS1saW51eC1ib3QtNyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUtTGludXgtNjRi
aXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUyMDA0IiwgImZhY3RvcnkiOiAiQnVp
bGRBbmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUt
bGludXgtNjQtcGFja2FnaW5nLW5pZ3RobHktdWJ1bnR1MjAwNCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgInBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJj
aGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9u
YWxBcmd1bWVudHMiOiBbIi0tbm8tYnViYmxld3JhcC1zYW5kYm94IiwgIi0tY21ha2VhcmdzPS1E
RU5BQkxFX1dQRV9RVF9BUEk9T0ZGIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5h
bWVzIjogWyJ3cGUtbGludXgtYm90LTgiXQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICBdLAotCi0gICAgInNjaGVkdWxlcnMiOiBbIHsgInR5cGUiOiAiQW55QnJhbmNo
U2NoZWR1bGVyIiwgIm5hbWUiOiAidHJ1bmsiLCAiY2hhbmdlX2ZpbHRlciI6ICJ0cnVua19maWx0
ZXIiLCAidHJlZVN0YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVp
bGRlck5hbWVzIjogWyJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtQnVpbGQiLCAiR1RLLUxpbnV4
LTY0LWJpdC1EZWJ1Zy1CdWlsZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLURlYmlhbi1TdGFibGUtQnVpbGQiLCAiR1RL
LUxpbnV4LTY0LWJpdC1SZWxlYXNlLVVidW50dS1MVFMtQnVpbGQiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIkpTQ09ubHktTGludXgtQUFyY2g2NC1SZWxlYXNlIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKU0NPbmx5LUxpbnV4LUFS
TXY3LVRodW1iMi1SZWxlYXNlIiwgIkpTQ09ubHktTGludXgtQVJNdjctVGh1bWIyLVNvZnRGUC1S
ZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKU0NPbmx5
LUxpbnV4LU1JUFMzMmVsLVJlbGVhc2UiLCAiUGxheVN0YXRpb24tUmVsZWFzZS1CdWlsZCIsICJQ
bGF5U3RhdGlvbi1EZWJ1Zy1CdWlsZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiV2luQ2Fpcm8tNjQtYml0LVdLTC1SZWxlYXNlLUJ1aWxkIiwgIldpbkNhaXJvLTY0
LWJpdC1XS0wtRGVidWctQnVpbGQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIldQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCIsICJXUEUtTGludXgtNjQtYml0
LURlYnVnLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIm1h
Yy1iaWdzdXIiLCAiYnJhbmNoIjogInRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0g
ICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQmlnU3VyLVJlbGVh
c2UtQnVpbGQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJ0eXBlIjogIlBsYXRmb3JtU3BlY2lmaWNTY2hlZHVsZXIiLCAicGxhdGZvcm0iOiAibWFjLWNh
dGFsaW5hIiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4wLAotICAg
ICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVh
c2UtQnVpbGQiLCAiQXBwbGUtQ2F0YWxpbmEtRGVidWctQnVpbGQiLCAiQXBwbGUtQ2F0YWxpbmEt
TExJTlQtQ0xvb3AtQnVpbGRBbmRUZXN0Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5h
LXJlbGVhc2UtcGVyZi10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1l
cyI6IFsiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItUGVyZiJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFt
ZSI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzEtVGVzdHMiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdn
ZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy13azIiLAotICAgICAgICAg
ICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sy
LVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
dHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLXdrMSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEt
RGVidWctV0sxLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLWRlYnVnLXRl
c3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUt
Q2F0YWxpbmEtRGVidWctV0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5h
LXJlbGVhc2UtdGVzdHMtd2syLXdlYmdsIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRl
ck5hbWVzIjogWyJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1XZWJHTC1UZXN0cyJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dl
cmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azItZ3B1cHJvY2VzcyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtRGVi
dWctV0syLUdQVVByb2Nlc3MtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEt
ZGVidWctdGVzdHMtanNjIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjog
WyJBcHBsZS1DYXRhbGluYS1EZWJ1Zy1KU0MtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAi
Y2F0YWxpbmEtcmVsZWFzZS10ZXN0cy1qc2MiLAotICAgICAgICAgICAgICAgICAgICAgICJidWls
ZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtSlNDLVRlc3RzIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJs
ZSIsICJuYW1lIjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLXRlc3QyNjIiLAotICAgICAgICAgICAg
ICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLURlYnVnLVRlc3QyNjIt
VGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy10ZXN0
MjYyIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1DYXRh
bGluYS1SZWxlYXNlLVRlc3QyNjItVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlBsYXRmb3JtU3BlY2lmaWNTY2hlZHVsZXIiLCAi
cGxhdGZvcm0iOiAibWFjLW1vamF2ZSIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRp
bWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBs
ZS1Nb2phdmUtUmVsZWFzZS1CdWlsZCIsICJBcHBsZS1Nb2phdmUtRGVidWctQnVpbGQiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdn
ZXJhYmxlIiwgIm5hbWUiOiAibW9qYXZlLXJlbGVhc2UtdGVzdHMtd2sxIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzEtVGVz
dHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBl
IjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAibW9qYXZlLXJlbGVhc2UtdGVzdHMtd2syIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1Nb2phdmUtUmVsZWFz
ZS1XSzItVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAibW9qYXZlLWRlYnVnLXRlc3RzLXdr
MSIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtTW9qYXZl
LURlYnVnLVdLMS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJtb2phdmUtZGVidWctdGVz
dHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1N
b2phdmUtRGVidWctV0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRm
b3JtIjogImlvcy0xNCIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRpbWVyIjogNDUu
MCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1pT1MtMTQt
UmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJp
b3Mtc2ltdWxhdG9yLTE0IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0
NS4wLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlPUy0x
NC1TaW11bGF0b3ItUmVsZWFzZS1CdWlsZCIsICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLURlYnVn
LUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
dHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogInR2b3MtMTQi
LCAiYnJhbmNoIjogInRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAg
ICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtdHZPUy0xNC1SZWxlYXNlLUJ1aWxk
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6
ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogInR2b3Mtc2ltdWxhdG9y
LTE0IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4wLAotICAgICAg
ICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLXR2T1MtU2ltdWxhdG9yLTE0
LVJlbGVhc2UtQnVpbGQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJ0eXBlIjogIlBsYXRmb3JtU3BlY2lmaWNTY2hlZHVsZXIiLCAicGxhdGZvcm0iOiAi
d2F0Y2hvcy03IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4wLAot
ICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLXdhdGNoT1MtNy1S
ZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIndh
dGNob3Mtc2ltdWxhdG9yLTciLCAiYnJhbmNoIjogInRydW5rIiwgInRyZWVTdGFibGVUaW1lciI6
IDQ1LjAsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtd2F0
Y2hPUy1TaW11bGF0b3ItNy1SZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVy
IiwgInBsYXRmb3JtIjogIndpbiIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRpbWVy
IjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1X
aW4tMTAtUmVsZWFzZS1CdWlsZCIsICJBcHBsZS1XaW4tMTAtRGVidWctQnVpbGQiXQotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJh
YmxlIiwgIm5hbWUiOiAiaW9zLXNpbXVsYXRvci0xNC1yZWxlYXNlLXRlc3RzLXdrMiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtaU9TLTE0LVNpbXVsYXRv
ci1SZWxlYXNlLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJpb3Mtc2ltdWxhdG9y
LTE0LWRlYnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1l
cyI6IFsiQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1XSzItVGVzdHMiXQotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxl
IiwgIm5hbWUiOiAiaXBhZG9zLXNpbXVsYXRvci0xNC1yZWxlYXNlLXRlc3RzLXdrMiIsCi0gICAg
ICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtaVBhZE9TLTE0LVNpbXVs
YXRvci1SZWxlYXNlLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJpcGFkb3Mtc2lt
dWxhdG9yLTE0LWRlYnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxk
ZXJOYW1lcyI6IFsiQXBwbGUtaVBhZE9TLTE0LVNpbXVsYXRvci1EZWJ1Zy1XSzItVGVzdHMiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRy
aWdnZXJhYmxlIiwgIm5hbWUiOiAid2luMTAtcmVsZWFzZS10ZXN0cyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtV2luLTEwLVJlbGVhc2UtVGVzdHMiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRy
aWdnZXJhYmxlIiwgIm5hbWUiOiAid2luMTAtZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAg
ICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLVdpbi0xMC1EZWJ1Zy1UZXN0cyJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dl
cmFibGUiLCAibmFtZSI6ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVRl
c3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlw
ZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJHVEstTGludXgtNjQt
Yml0LVJlbGVhc2UtSlMtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4LTY0
LXJlbGVhc2UtdGVzdHMtd2ViZHJpdmVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRl
ck5hbWVzIjogWyJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtV2ViRHJpdmVyLVRlc3RzIl0KLSAg
ICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmln
Z2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0
cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUi
OiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJndGstbGludXgtNjQtZGVidWctdGVzdHMtanMiLAot
ICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1iaXQt
RGVidWctSlMtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4LTY0LWRlYnVn
LXRlc3RzLXdlYmRyaXZlciIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6
IFsiR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1XZWJEcml2ZXItVGVzdHMiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwg
Im5hbWUiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtcGVyZi10ZXN0cyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYi
XQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjog
IlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2Utd2F5bGFuZC10ZXN0
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0
LWJpdC1SZWxlYXNlLVdheWxhbmQtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid2luY2Fp
cm8td2tsLXJlbGVhc2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFt
ZXMiOiBbIldpbkNhaXJvLTY0LWJpdC1XS0wtUmVsZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAg
ICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAi
bmFtZSI6ICJ3aW5jYWlyby1qc2MtcmVsZWFzZS10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgImJ1aWxkZXJOYW1lcyI6IFsiV2luQ2Fpcm8tNjQtYml0LUpTQy1SZWxlYXNlLVRlc3RzIl0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJU
cmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiV2luQ2Fpcm8tNjQtYml0LVdLTC1EZWJ1
Zy1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
InR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3aW5jYWlyby1qc2MtZGVidWctdGVzdHMi
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldpbkNhaXJvLTY0LWJp
dC1KU0MtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid3BlLWxpbnV4LTY0LXJl
bGVhc2UtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQ
RS1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3cGUt
bGludXgtNjQtcmVsZWFzZS10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxk
ZXJOYW1lcyI6IFsiV1BFLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJs
ZSIsICJuYW1lIjogIndwZS1saW51eC02NC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0cyJdCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJp
Z2dlcmFibGUiLCAibmFtZSI6ICJ3cGUtbGludXgtNjQtZGVidWctdGVzdHMtanMiLAotICAgICAg
ICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQRS1MaW51eC02NC1iaXQtRGVidWct
SlMtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJ0eXBlIjogIk5pZ2h0bHkiLCAibmFtZSI6ICJOaWdodGx5U2NoZWR1bGVyIiwgImNoYW5nZV9m
aWx0ZXIiOiAidHJ1bmtfZmlsdGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnJhbmNoIjog
InRydW5rIiwgImhvdXIiOiAyMiwgIm1pbnV0ZSI6IDAsCi0gICAgICAgICAgICAgICAgICAgICAg
ImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0
bHktVWJ1bnR1MTgwNCIsICJHVEstTGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRs
eS1VYnVudHUyMDA0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJX
UEUtTGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUxODA0IiwgIldQ
RS1MaW51eC02NGJpdC1SZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTIwMDQiXQotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICBdCi19CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9mYWN0b3JpZXMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvZmFjdG9yaWVzLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9mYWN0b3JpZXMucHkJKG5vbmV4aXN0ZW50KQpA
QCAtMSwyNDcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWZyb20gYnVpbGRib3QucHJvY2VzcyBpbXBvcnQgZmFjdG9yeQotZnJvbSBidWlsZGJv
dC5zdGVwcyBpbXBvcnQgdHJpZ2dlcgotCi1mcm9tIHN0ZXBzIGltcG9ydCAqCi0KLQotY2xhc3Mg
RmFjdG9yeShmYWN0b3J5LkJ1aWxkRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBs
YXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBidWlsZE9ubHksIGFkZGl0aW9u
YWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCk6Ci0gICAgICAgIGZhY3RvcnkuQnVpbGRGYWN0b3J5
Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDb25maWd1cmVCdWlsZChwbGF0
Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmU9
IiAiLmpvaW4oYXJjaGl0ZWN0dXJlcyksIGJ1aWxkT25seT1idWlsZE9ubHksIGFkZGl0aW9uYWxB
cmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsPWRldmljZV9tb2RlbCkp
Ci0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja091dFNvdXJjZSgpKQotICAgICAgICBpZiBub3Qg
KHBsYXRmb3JtID09ICJqc2Mtb25seSIpOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxP
bGRQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKENsZWFuQnVpbGRJZlNjaGVkdWxl
ZCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoRGVsZXRlU3RhbGVCdWlsZEZpbGVzKCkpCi0gICAg
ICAgIGlmIHBsYXRmb3JtID09ICJ3aW4iOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEluc3Rh
bGxXaW4zMkRlcGVuZGVuY2llcygpKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIiBhbmQg
Ii0tbm8tZXhwZXJpbWVudGFsLWZlYXR1cmVzIiBub3QgaW4gKGFkZGl0aW9uYWxBcmd1bWVudHMg
b3IgW10pOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEluc3RhbGxHdGtEZXBlbmRlbmNpZXMo
KSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gIndwZSI6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0
ZXAoSW5zdGFsbFdwZURlcGVuZGVuY2llcygpKQotCi0KLWNsYXNzIEJ1aWxkRmFjdG9yeShGYWN0
b3J5KToKLSAgICBTaG91bGRSdW5KU0NCdW5kbGVTdGVwID0gRmFsc2UKLSAgICBTaG91bGRSdW5N
aW5pQnJvd3NlckJ1bmRsZVN0ZXAgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBs
YXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCB0cmlnZ2Vycz1Ob25lLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9y
eS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
VHJ1ZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsKQotCi0gICAgICAgIGlmIHBs
YXRmb3JtID09ICJ3aW4iIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoInBsYXlzdGF0aW9uIik6Ci0g
ICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZVdlYktpdCh0aW1lb3V0PTIgKiA2MCAqIDYw
KSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChDb21waWxlV2ViS2l0
KCkpCi0KLSAgICAgICAgaWYgc2VsZi5TaG91bGRSdW5KU0NCdW5kbGVTdGVwOgotICAgICAgICAg
ICAgc2VsZi5hZGRTdGVwKEdlbmVyYXRlSlNDQnVuZGxlKCkpCi0gICAgICAgIGlmIHNlbGYuU2hv
dWxkUnVuTWluaUJyb3dzZXJCdW5kbGVTdGVwOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEdl
bmVyYXRlTWluaUJyb3dzZXJCdW5kbGUoKSkKLQotICAgICAgICBpZiB0cmlnZ2VyczoKLSAgICAg
ICAgICAgIHNlbGYuYWRkU3RlcChBcmNoaXZlQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgICAgICBz
ZWxmLmFkZFN0ZXAoVXBsb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgICAgICBpZiBwbGF0Zm9y
bS5zdGFydHN3aXRoKCdtYWMnKSBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9y
Jykgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgndHZvcy1zaW11bGF0b3InKSBvciBwbGF0Zm9ybS5z
dGFydHN3aXRoKCd3YXRjaG9zLXNpbXVsYXRvcicpOgotICAgICAgICAgICAgICAgIHNlbGYuYWRk
U3RlcChBcmNoaXZlTWluaWZpZWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgICAgICAgICBzZWxm
LmFkZFN0ZXAoVXBsb2FkTWluaWZpZWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgICAgIHNlbGYu
YWRkU3RlcChUcmFuc2ZlclRvUzMoKSkKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcCh0cmlnZ2Vy
LlRyaWdnZXIoc2NoZWR1bGVyTmFtZXM9dHJpZ2dlcnMpKQotCi0KLWNsYXNzIFRlc3RGYWN0b3J5
KEZhY3RvcnkpOgotICAgIEpTQ1Rlc3RDbGFzcyA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMKLSAg
ICBMYXlvdXRUZXN0Q2xhc3MgPSBSdW5XZWJLaXRUZXN0cwotCi0gICAgZGVmIGdldFByb2R1Y3Qo
c2VsZik6Ci0gICAgICAgIHNlbGYuYWRkU3RlcChEb3dubG9hZEJ1aWx0UHJvZHVjdCgpKQotICAg
ICAgICBzZWxmLmFkZFN0ZXAoRXh0cmFjdEJ1aWx0UHJvZHVjdCgpKQotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlv
bmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAg
IEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXMsIEZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoqa3dhcmdz
KQotICAgICAgICBzZWxmLmdldFByb2R1Y3QoKQotCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICd3
aW5jYWlybyc6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoSW5zdGFsbFdpbkNhaXJvRGVwZW5k
ZW5jaWVzKCkpCi0KLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJykgb3IgcGxh
dGZvcm0uc3RhcnRzd2l0aCgnaW9zLXNpbXVsYXRvcicpOgotICAgICAgICAgICAgc2VsZi5hZGRT
dGVwKFdhaXRGb3JDcmFzaENvbGxlY3Rpb24oKSkKLQotICAgICAgICBpZiBzZWxmLkpTQ1Rlc3RD
bGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChzZWxmLkpTQ1Rlc3RDbGFzcygpKQotICAg
ICAgICBpZiBzZWxmLkxheW91dFRlc3RDbGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChz
ZWxmLkxheW91dFRlc3RDbGFzcygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgo
J3dpbicpIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycpIG9yIHBsYXRmb3JtLnN0YXJ0c3dp
dGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5BUElUZXN0
cygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycpOgotICAgICAgICAg
ICAgc2VsZi5hZGRTdGVwKFJ1bkxMREJXZWJLaXRUZXN0cygpKQotCi0gICAgICAgIHNlbGYuYWRk
U3RlcChSdW5XZWJLaXRQeVRlc3RzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5QZXJsVGVz
dHMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkJpbmRpbmdzVGVzdHMoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKFJ1bkJ1aWx0aW5zVGVzdHMoKSkKLSAgICAgICAgaWYgbm90IHBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ3dpbicpOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkRhc2hib2Fy
ZFRlc3RzKCkpCi0KLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJykgb3IgcGxh
dGZvcm0uc3RhcnRzd2l0aCgnaW9zLXNpbXVsYXRvcicpOgotICAgICAgICAgICAgc2VsZi5hZGRT
dGVwKFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24oKSkKLQotICAgICAgICBpZiBzZWxmLkxheW91
dFRlc3RDbGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChBcmNoaXZlVGVzdFJlc3VsdHMo
KSkKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChVcGxvYWRUZXN0UmVzdWx0cygpKQotICAgICAg
ICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RUZXN0UmVzdWx0cygpKQotICAgICAgICBpZiBwbGF0
Zm9ybSA9PSAiZ3RrIjoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5HdGtBUElUZXN0cygp
KQotICAgICAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50cyBhbmQgIi0tZGlzcGxheS1zZXJ2
ZXI9d2F5bGFuZCIgaW4gYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgICAgICBzZWxm
LmFkZFN0ZXAoUnVuV2ViRHJpdmVyVGVzdHMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gIndw
ZSI6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV1BFQVBJVGVzdHMoKSkKLSAgICAgICAg
ICAgIHNlbGYuYWRkU3RlcChSdW5XZWJEcml2ZXJUZXN0cygpKQotCi0KLWNsYXNzIEJ1aWxkQW5k
VGVzdEZhY3RvcnkoVGVzdEZhY3RvcnkpOgotICAgIGRlZiBnZXRQcm9kdWN0KHNlbGYpOgotICAg
ICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZVdlYktpdCgpKQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCB0cmlnZ2Vycz1Ob25l
LCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6
Ci0gICAgICAgIFRlc3RGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0
aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoq
a3dhcmdzKQotICAgICAgICBpZiB0cmlnZ2VyczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChB
cmNoaXZlQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoVXBsb2FkQnVp
bHRQcm9kdWN0KCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAodHJpZ2dlci5UcmlnZ2VyKHNj
aGVkdWxlck5hbWVzPXRyaWdnZXJzKSkKLQotCi1jbGFzcyBCdWlsZEFuZFRlc3RMTElOVENMb29w
RmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZp
Z3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVu
dHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFjdG9yeS5f
X2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgRmFs
c2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCwgKiprd2FyZ3MpCi0gICAgICAg
IHNlbGYuYWRkU3RlcChDb21waWxlTExJTlRDTG9vcCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
UnVuTExJTlRDTG9vcFRlc3RzKCkpCi0KLQotY2xhc3MgQnVpbGRBbmRUZXN0MzJiaXRKU0NGYWN0
b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJh
dGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1O
b25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwg
YWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAqKmt3YXJncykKLSAgICAgICAgc2Vs
Zi5hZGRTdGVwKENvbXBpbGUzMmJpdEpTQygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuMzJi
aXRKU0NUZXN0cygpKQotCi0KLWNsYXNzIEJ1aWxkQW5kTm9uTGF5b3V0VGVzdEZhY3RvcnkoQnVp
bGRBbmRUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gTm9uZQotCi0KLWNsYXNz
IEJ1aWxkQW5kUmVtb3RlSlNDVGVzdHNGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9
Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0gICAg
ICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hp
dGVjdHVyZXMsIEZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpCi0gICAg
ICAgIHNlbGYuYWRkU3RlcChDb21waWxlSlNDT25seSh0aW1lb3V0PTYwICogNjApKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoUnVuUmVtb3RlSmF2YVNjcmlwdENvcmVUZXN0cyh0aW1lb3V0PTYwICog
NjApKQotCi0KLWNsYXNzIFRlc3RXZWJLaXQxTGVha3NGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
YWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0gICAgICAgIEZh
Y3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVy
ZXMsIEZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpCi0gICAgICAgIHNl
bGYuYWRkU3RlcChEb3dubG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
RXh0cmFjdEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViS2l0MUxl
YWtUZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZVRlc3RSZXN1bHRzKCkpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChVcGxvYWRUZXN0UmVzdWx0cygpKQotICAgICAgICBzZWxmLmFk
ZFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRzQW5kTGVha3MoKSkKLQotCi1jbGFzcyBUZXN0QWxsQnV0
SlNDRmFjdG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgSlNDVGVzdENsYXNzID0gTm9uZQotCi0KLWNs
YXNzIEJ1aWxkQW5kR2VuZXJhdGVKU0NCdW5kbGVGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAg
U2hvdWxkUnVuSlNDQnVuZGxlU3RlcCA9IFRydWUKLQotCi1jbGFzcyBCdWlsZEFuZEdlbmVyYXRl
TWluaUJyb3dzZXJCdW5kbGVGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgU2hvdWxkUnVuTWlu
aUJyb3dzZXJCdW5kbGVTdGVwID0gVHJ1ZQotCi0KLWNsYXNzIEJ1aWxkQW5kR2VuZXJhdGVNaW5p
QnJvd3NlckpTQ0J1bmRsZUZhY3RvcnkoQnVpbGRGYWN0b3J5KToKLSAgICBTaG91bGRSdW5KU0NC
dW5kbGVTdGVwID0gVHJ1ZQotICAgIFNob3VsZFJ1bk1pbmlCcm93c2VyQnVuZGxlU3RlcCA9IFRy
dWUKLQotCi1jbGFzcyBUZXN0SlNDRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIGFkZGl0aW9uYWxB
cmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUpOgotICAgICAgICBGYWN0b3J5Ll9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwg
YWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
RG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWls
dFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
KSkKLQotCi1jbGFzcyBUZXN0MjYyRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIGFkZGl0aW9uYWxB
cmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUpOgotICAgICAgICBGYWN0b3J5Ll9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwg
YWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
RG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWls
dFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1blRlc3QyNjJUZXN0cygpKQotCi0K
LWNsYXNzIFRlc3RKU0ZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBs
YXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRz
PU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhzZWxm
LCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgRmFsc2UsIGFkZGl0aW9u
YWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAgc2VsZi5hZGRTdGVwKERvd25sb2Fk
QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0
KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCkpCi0gICAg
ICAgIHNlbGYuYWRkU3RlcChSdW5UZXN0MjYyVGVzdHMoKSkKLQotCi1jbGFzcyBUZXN0V2ViRHJp
dmVyRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNv
bmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgZGV2
aWNlX21vZGVsPU5vbmUpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3Jt
LCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50
cywgZGV2aWNlX21vZGVsKQotICAgICAgICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1
Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKFJ1bldlYkRyaXZlclRlc3RzKCkpCi0KLQotY2xhc3MgVGVzdFdlYktp
dDFGYWN0b3J5KFRlc3RGYWN0b3J5KToKLSAgICBMYXlvdXRUZXN0Q2xhc3MgPSBSdW5XZWJLaXQx
VGVzdHMKLQotCi1jbGFzcyBUZXN0V2ViS2l0MUFsbEJ1dEpTQ0ZhY3RvcnkoVGVzdFdlYktpdDFG
YWN0b3J5KToKLSAgICBKU0NUZXN0Q2xhc3MgPSBOb25lCi0KLQotY2xhc3MgQnVpbGRBbmRQZXJm
VGVzdEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBj
b25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGRl
dmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZhY3RvcnkuX19pbml0X18oc2Vs
ZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZhbHNlLCBhZGRpdGlv
bmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoQ29tcGlsZVdlYktpdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuQW5kVXBsb2FkUGVy
ZlRlc3RzKCkpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICJndGsiOgotICAgICAgICAgICAgc2Vs
Zi5hZGRTdGVwKFJ1bkJlbmNobWFya1Rlc3RzKHRpbWVvdXQ9MjAwMCkpCi0KLQotY2xhc3MgRG93
bmxvYWRBbmRQZXJmVGVzdEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1l
bnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZhY3Rvcnku
X19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZh
bHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoqa3dhcmdzKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRT
dGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkFuZFVw
bG9hZFBlcmZUZXN0cygpKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoKLSAgICAgICAg
ICAgIHNlbGYuYWRkU3RlcChSdW5CZW5jaG1hcmtUZXN0cyh0aW1lb3V0PTIwMDApKQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvaHRkaWdlc3Rw
YXJzZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvaHRkaWdlc3RwYXJzZXIucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFy
c2VyLnB5CShub25leGlzdGVudCkKQEAgLTEsNTQgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0iIiJodGRpZ2VzdHBhcnNlciAtIGEgcGFyc2VyIGZvciBo
dGRpZ2VzdCBmaWxlcyIiIgotCi1pbXBvcnQgaGFzaGxpYgotaW1wb3J0IHN0cmluZwotCi0KLWNs
YXNzIEhURGlnZXN0UGFyc2VyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpZ2Vz
dF9maWxlKToKLSAgICAgICAgc2VsZi5fZW50cmllcyA9IHNlbGYucGFyc2VfZmlsZShkaWdlc3Rf
ZmlsZSkKLQotICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwgdXNlcm5hbWUsIHJlYWxtLCBwYXNz
d29yZCk6Ci0gICAgICAgIGhhc2hlZF9wYXNzd29yZCA9IGhhc2hsaWIubWQ1KCc6Jy5qb2luKCh1
c2VybmFtZSwgcmVhbG0sIHBhc3N3b3JkKSkpLmhleGRpZ2VzdCgpCi0gICAgICAgIHJldHVybiBb
dXNlcm5hbWUsIHJlYWxtLCBoYXNoZWRfcGFzc3dvcmRdIGluIHNlbGYuZW50cmllcygpCi0KLSAg
ICBkZWYgZW50cmllcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2VudHJpZXMKLQotICAg
IGRlZiBwYXJzZV9maWxlKHNlbGYsIGRpZ2VzdF9maWxlKToKLSAgICAgICAgZW50cmllcyA9IFts
aW5lLnJzdHJpcCgpLnNwbGl0KCc6JykgZm9yIGxpbmUgaW4gZGlnZXN0X2ZpbGVdCi0KLSAgICAg
ICAgIyBQZXJmb3JtIHNvbWUgc2FuaXR5LWNoZWNraW5nIHRvIGVuc3VyZSB0aGUgZmlsZSBpcyB2
YWxpZC4KLSAgICAgICAgdmFsaWRfY2hhcmFjdGVycyA9IHNldChzdHJpbmcuaGV4ZGlnaXRzKQot
ICAgICAgICBmb3IgZW50cnkgaW4gZW50cmllczoKLSAgICAgICAgICAgIGlmIGxlbihlbnRyeSkg
IT0gMzoKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgICAgIGhhc2hlZF9wYXNz
d29yZCA9IGVudHJ5Wy0xXQotICAgICAgICAgICAgaWYgbGVuKGhhc2hlZF9wYXNzd29yZCkgIT0g
MzI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAgICBpZiBub3Qgc2V0KGhh
c2hlZF9wYXNzd29yZCkuaXNzdWJzZXQodmFsaWRfY2hhcmFjdGVycyk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIFtdCi0KLSAgICAgICAgcmV0dXJuIGVudHJpZXMKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRp
Z2VzdHBhcnNlcl91bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDkxICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IFN0cmluZ0lPCi1p
bXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIGh0ZGlnZXN0cGFyc2VyIGltcG9ydCBI
VERpZ2VzdFBhcnNlcgotCi0KLWNsYXNzIEhURGlnZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEVudHJpZXNFcXVhbChzZWxmLCBlbnRyaWVzLCBhZGRpdGlv
bmFsX2NvbnRlbnQ9Tm9uZSk6Ci0gICAgICAgIGRpZ2VzdF9maWxlID0gc2VsZi5mYWtlX2h0ZGln
ZXN0X2ZpbGUoKQotICAgICAgICBpZiBhZGRpdGlvbmFsX2NvbnRlbnQgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0wLCBtb2RlPW9zLlNFRUtfRU5EKQotICAg
ICAgICAgICAgZGlnZXN0X2ZpbGUud3JpdGUoYWRkaXRpb25hbF9jb250ZW50KQotICAgICAgICAg
ICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX1NFVCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChlbnRyaWVzLCBIVERpZ2VzdFBhcnNlcihkaWdlc3RfZmlsZSkuZW50cmll
cygpKQotCi0gICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICBodGRpZ2Vz
dCA9IEhURGlnZXN0UGFyc2VyKHNlbGYuZmFrZV9odGRpZ2VzdF9maWxlKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtIDEnLCAn
cGFzc3dvcmQxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNh
dGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIzJywgJ3JlYWxtIDEnLCAncGFzc3dvcmQz
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIz
JywgJ3JlYWxtIDMnLCAncGFzc3dvcmQzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSho
dGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtJywgJ3Bhc3N3b3JkMScpKQotICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjEnLCAncmVh
bG0gMicsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2VzdC5h
dXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFsbSAxJywg
J3Bhc3N3b3JkMScpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRp
Y2F0ZSgnJywgJycsICcnKSkKLQotICAgIGRlZiB0ZXN0X2VudHJpZXMoc2VsZik6Ci0gICAgICAg
IGVudHJpZXMgPSBbCi0gICAgICAgICAgICBbJ3VzZXIxJywgJ3JlYWxtIDEnLCAnMzZiOGFhMjdm
YTVlOTA1MTA5NWQzN2I2MTlmOTI3NjInXSwKLSAgICAgICAgICAgIFsndXNlcjInLCAncmVhbG0g
MicsICcxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOCddLAotICAgICAgICAgICAgWyd1
c2VyMycsICdyZWFsbSAxJywgJzE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYzMGVhNWE1J10sCi0g
ICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDMnLCAnYTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1
ZTUzMjQ4ZjAnXSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChl
bnRyaWVzKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChlbnRyaWVzLCBhZGRpdGlv
bmFsX2NvbnRlbnQ9JycpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFtdLCBIVERpZ2VzdFBhcnNlcihTdHJpbmdJTy5TdHJpbmdJTygp
KS5lbnRyaWVzKCkpCi0KLSAgICBkZWYgdGVzdF90b29fZmV3X2NvbG9ucyhzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6
cmVhbG0gMVxuJykKLQotICAgIGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6
cmVhbG0gMTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjpnYXJiYWdlXG4nKQotCi0g
ICAgZGVmIHRlc3RfaW52YWxpZF9oYXNoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVudHJp
ZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1
ZTkwNTEwOTVkMzdiNjE5ZjkyNzYyMDAwMDAwXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVudHJp
ZXNFcXVhbChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1
ZTkwNTEwOTVkMzdiNjE5ZjkyNzZcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFs
KFtdLCBhZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5
NWQzN2I2MTlmOTI3NnpcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBh
ZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6IDM2YjhhYTI3ZmE1ZTkwNTEwOTVkMzdi
NjE5ZjkyNzYyXG4nKQotCi0gICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIFN0cmluZ0lPLlN0cmluZ0lPKCIiInVzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVl
OTA1MTA5NWQzN2I2MTlmOTI3NjIKLXVzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYwMmZl
MTMxNGEzMzM3YzgKLXVzZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMwZWE1
YTUKLXVzZXIzOnJlYWxtIDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKLSIiIikK
LQotCi0jIEZJWE1FOiBXZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtcm0g
LgotIyBVbmZvcnR1bmF0ZWx5IHRlc3Qtcm0gIGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0
ZXN0cwotIyBiZSBsb2NhdGVkIGluIGEgZGlyZWN0b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFt
ZS4KLSMgJ2J1aWxkLndlYmtpdC5vcmctY29uZmlnJyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFt
ZSAoZHVlIHRvICcuJyBhbmQgJy0nKQotIyBzbyBmb3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9u
ZSB0ZXN0IGhhcm5lc3MuCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0
Lm1haW4oKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvbG9hZENvbmZpZy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9sb2FkQ29uZmlnLnB5CShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9sb2Fk
Q29uZmlnLnB5CShub25leGlzdGVudCkKQEAgLTEsMTcyICswLDAgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MKLVVTRV9CVUlMREJPVF9W
RVJTSU9OMiA9IG9zLmdldGVudignVVNFX0JVSUxEQk9UX1ZFUlNJT04yJykgaXMgbm90IE5vbmUK
LQotaWYgVVNFX0JVSUxEQk9UX1ZFUlNJT04yOgotICAgIGZyb20gYnVpbGRib3Qud29ya2VyIGlt
cG9ydCBXb3JrZXIKLWVsc2U6Ci0gICAgZnJvbSBidWlsZGJvdC5idWlsZHNsYXZlIGltcG9ydCBC
dWlsZFNsYXZlCi1mcm9tIGJ1aWxkYm90LnNjaGVkdWxlciBpbXBvcnQgQW55QnJhbmNoU2NoZWR1
bGVyLCBUcmlnZ2VyYWJsZSwgTmlnaHRseQotZnJvbSBidWlsZGJvdC5zY2hlZHVsZXJzLmZvcmNl
c2NoZWQgaW1wb3J0IEZpeGVkUGFyYW1ldGVyLCBGb3JjZVNjaGVkdWxlciwgU3RyaW5nUGFyYW1l
dGVyLCBCb29sZWFuUGFyYW1ldGVyCi1mcm9tIGJ1aWxkYm90LnNjaGVkdWxlcnMuZmlsdGVyIGlt
cG9ydCBDaGFuZ2VGaWx0ZXIKLWZyb20gYnVpbGRib3QucHJvY2VzcyBpbXBvcnQgYnVpbGRzdGVw
LCBmYWN0b3J5LCBwcm9wZXJ0aWVzCi0KLWZyb20gZmFjdG9yaWVzIGltcG9ydCAqCi0KLWltcG9y
dCByZQotaW1wb3J0IGpzb24KLWltcG9ydCBvcGVyYXRvcgotCi1mcm9tIGNvbW1pdHRlcl9hdXRo
IGltcG9ydCBDb21taXR0ZXJBdXRoCi1pbXBvcnQgbWFrZV9wYXNzd29yZHNfanNvbgotaW1wb3J0
IHdrYnVpbGQKLQotdHJ1bmtfZmlsdGVyID0gQ2hhbmdlRmlsdGVyKGJyYW5jaD1bInRydW5rIiwg
Tm9uZV0pCi1idWlsZGJvdF9pZGVudGlmaWVyc19yZSA9IHJlLmNvbXBpbGUoJ15bYS16QS1aXy1d
W2EtekEtWjAtOV8tXSokJykKLQotQlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVCA9IDcwCi1TVEVQ
X05BTUVfTEVOR1RIX0xJTUlUID0gNTAKLQotCi1kZWYgcGlja0xhdGVzdEJ1aWxkKGJ1aWxkZXIs
IHJlcXVlc3RzKToKLSAgICByZXR1cm4gbWF4KHJlcXVlc3RzLCBrZXk9b3BlcmF0b3IuYXR0cmdl
dHRlcigic3VibWl0dGVkQXQiKSkKLQotCi1kZWYgbG9hZEJ1aWxkZXJDb25maWcoYywgaXNfdGVz
dF9tb2RlX2VuYWJsZWQ9RmFsc2UpOgotICAgICMgRklYTUU6IFRoZXNlIGZpbGUgaGFuZGxlcyBh
cmUgbGVha2VkLgotICAgIGlmIGlzX3Rlc3RfbW9kZV9lbmFibGVkOgotICAgICAgICBwYXNzd29y
ZHMgPSB7fQotICAgIGVsc2U6Ci0gICAgICAgIHBhc3N3b3JkcyA9IGpzb24ubG9hZChvcGVuKCdw
YXNzd29yZHMuanNvbicpKQotICAgIHJlc3VsdHNfc2VydmVyX2FwaV9rZXkgPSBwYXNzd29yZHMu
Z2V0KCdyZXN1bHRzLXNlcnZlci1hcGkta2V5JykKLSAgICBpZiByZXN1bHRzX3NlcnZlcl9hcGlf
a2V5OgotICAgICAgICBvcy5lbnZpcm9uWydSRVNVTFRTX1NFUlZFUl9BUElfS0VZJ10gPSByZXN1
bHRzX3NlcnZlcl9hcGlfa2V5Ci0KLSAgICBjb25maWcgPSBqc29uLmxvYWQob3BlbignY29uZmln
Lmpzb24nKSkKLSAgICBpZiBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgIGNbJ3dvcmtl
cnMnXSA9IFtXb3JrZXIod29ya2VyWyduYW1lJ10sIHBhc3N3b3Jkcy5nZXQod29ya2VyWyduYW1l
J10sICdwYXNzd29yZCcpLCBtYXhfYnVpbGRzPTEpIGZvciB3b3JrZXIgaW4gY29uZmlnWyd3b3Jr
ZXJzJ11dCi0gICAgZWxzZToKLSAgICAgICAgY1snc2xhdmVzJ10gPSBbQnVpbGRTbGF2ZSh3b3Jr
ZXJbJ25hbWUnXSwgcGFzc3dvcmRzLmdldCh3b3JrZXJbJ25hbWUnXSwgJ3Bhc3N3b3JkJyksIG1h
eF9idWlsZHM9MSkgZm9yIHdvcmtlciBpbiBjb25maWdbJ3dvcmtlcnMnXV0KLQotICAgIGNbJ3Nj
aGVkdWxlcnMnXSA9IFtdCi0gICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWdbJ3NjaGVkdWxlcnMn
XToKLSAgICAgICAgaWYgImNoYW5nZV9maWx0ZXIiIGluIHNjaGVkdWxlcjoKLSAgICAgICAgICAg
IHNjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdID0gZ2xvYmFscygpW3NjaGVkdWxlclsiY2hhbmdl
X2ZpbHRlciJdXQotICAgICAgICBzY2hlZHVsZXJUeXBlID0gZ2xvYmFscygpW3NjaGVkdWxlci5w
b3AoJ3R5cGUnKV0KLSAgICAgICAgIyBQeXRob24gMi42IGNhbid0IGhhbmRsZSB1bmljb2RlIGtl
eXMgYXMga2V5d29yZCBhcmd1bWVudHM6Ci0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9y
Zy9pc3N1ZTI2NDYuICBNb2Rlcm4gdmVyc2lvbnMgb2YganNvbiByZXR1cm4KLSAgICAgICAgIyB1
bmljb2RlIHN0cmluZ3MgZnJvbSBqc29uLmxvYWQsIHNvIHdlIG1hcCBhbGwga2V5cyB0byBzdHIg
b2JqZWN0cy4KLSAgICAgICAgc2NoZWR1bGVyID0gZGljdChtYXAobGFtYmRhIGtleV92YWx1ZV9w
YWlyOiAoc3RyKGtleV92YWx1ZV9wYWlyWzBdKSwga2V5X3ZhbHVlX3BhaXJbMV0pLCBzY2hlZHVs
ZXIuaXRlbXMoKSkpCi0KLSAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChzY2hlZHVsZXJU
eXBlKCoqc2NoZWR1bGVyKSkKLQotICAgIGZvcmNlU2NoZWR1bGVyID0gRm9yY2VTY2hlZHVsZXIo
Ci0gICAgICAgIG5hbWU9ImZvcmNlIiwKLSAgICAgICAgYnVpbGRlck5hbWVzPVtzdHIoYnVpbGRl
clsnbmFtZSddKSBmb3IgYnVpbGRlciBpbiBjb25maWdbJ2J1aWxkZXJzJ11dLAotICAgICAgICBy
ZWFzb249U3RyaW5nUGFyYW1ldGVyKG5hbWU9InJlYXNvbiIsIGRlZmF1bHQ9IiIsIHNpemU9NDAp
LAotCi0gICAgICAgICMgVmFsaWRhdGUgU1ZOIHJldmlzaW9uOiBudW1iZXIgb3IgZW1wdHkgc3Ry
aW5nCi0gICAgICAgIHJldmlzaW9uPVN0cmluZ1BhcmFtZXRlcihuYW1lPSJyZXZpc2lvbiIsIGRl
ZmF1bHQ9IiIsIHJlZ2V4PXJlLmNvbXBpbGUocideKFxkKikkJykpLAotCi0gICAgICAgICMgRGlz
YWJsZSBkZWZhdWx0IGVuYWJsZWQgaW5wdXQgZmllbGRzOiBicmFuY2gsIHJlcG9zaXRvcnksIHBy
b2plY3QsIGFkZGl0aW9uYWwgcHJvcGVydGllcwotICAgICAgICBicmFuY2g9Rml4ZWRQYXJhbWV0
ZXIobmFtZT0iYnJhbmNoIiksCi0gICAgICAgIHJlcG9zaXRvcnk9Rml4ZWRQYXJhbWV0ZXIobmFt
ZT0icmVwb3NpdG9yeSIpLAotICAgICAgICBwcm9qZWN0PUZpeGVkUGFyYW1ldGVyKG5hbWU9InBy
b2plY3QiKSwKLSAgICAgICAgcHJvcGVydGllcz1bQm9vbGVhblBhcmFtZXRlcihuYW1lPSJpc19j
bGVhbiIsIGxhYmVsPSJGb3JjZSBDbGVhbiBidWlsZCIpXQotICAgICkKLSAgICBjWydzY2hlZHVs
ZXJzJ10uYXBwZW5kKGZvcmNlU2NoZWR1bGVyKQotCi0gICAgY1snYnVpbGRlcnMnXSA9IFtdCi0g
ICAgZm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAgICBmb3Igd29ya2Vy
TmFtZSBpbiBidWlsZGVyWyd3b3JrZXJuYW1lcyddOgotICAgICAgICAgICAgZm9yIHdvcmtlciBp
biBjb25maWdbJ3dvcmtlcnMnXToKLSAgICAgICAgICAgICAgICBpZiB3b3JrZXJbJ25hbWUnXSAh
PSB3b3JrZXJOYW1lIG9yIHdvcmtlclsncGxhdGZvcm0nXSA9PSAnKic6Ci0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICAgICBpZiB3b3JrZXJbJ3BsYXRmb3JtJ10g
IT0gYnVpbGRlclsncGxhdGZvcm0nXToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdCdWlsZGVyIHt9IGlzIGZvciBwbGF0Zm9ybSB7fSBidXQgaGFzIHdvcmtlciB7fSBmb3Ig
cGxhdGZvcm0ge30hJy5mb3JtYXQoYnVpbGRlclsnbmFtZSddLCBidWlsZGVyWydwbGF0Zm9ybSdd
LCB3b3JrZXJbJ25hbWUnXSwgd29ya2VyWydwbGF0Zm9ybSddKSkKLSAgICAgICAgICAgICAgICBi
cmVhawotCi0gICAgICAgIGlmIG5vdCBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgICAg
ICBidWlsZGVyWydzbGF2ZW5hbWVzJ10gPSBidWlsZGVyLnBvcCgnd29ya2VybmFtZXMnKQotICAg
ICAgICBwbGF0Zm9ybSA9IGJ1aWxkZXJbJ3BsYXRmb3JtJ10KLQotICAgICAgICBmYWN0b3J5TmFt
ZSA9IGJ1aWxkZXIucG9wKCdmYWN0b3J5JykKLSAgICAgICAgZmFjdG9yeSA9IGdsb2JhbHMoKVtm
YWN0b3J5TmFtZV0KLSAgICAgICAgZmFjdG9yeWt3YXJncyA9IHt9Ci0gICAgICAgIGZvciBrZXkg
aW4gInBsYXRmb3JtIiwgImNvbmZpZ3VyYXRpb24iLCAiYXJjaGl0ZWN0dXJlcyIsICJ0cmlnZ2Vy
cyIsICJhZGRpdGlvbmFsQXJndW1lbnRzIiwgImRldmljZV9tb2RlbCI6Ci0gICAgICAgICAgICB2
YWx1ZSA9IGJ1aWxkZXIucG9wKGtleSwgTm9uZSkKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAg
ICAgICAgICAgICAgIGZhY3Rvcnlrd2FyZ3Nba2V5XSA9IHZhbHVlCi0KLSAgICAgICAgYnVpbGRl
clsiZmFjdG9yeSJdID0gZmFjdG9yeSgqKmZhY3Rvcnlrd2FyZ3MpCi0KLSAgICAgICAgYnVpbGRl
cl9uYW1lID0gYnVpbGRlclsnbmFtZSddCi0gICAgICAgIGlmIGxlbihidWlsZGVyX25hbWUpID4g
QlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
QnVpbGRlciBuYW1lICJ7fSIgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGJ5IEJ1aWxk
Ym90ICh7fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChidWlsZGVyX25hbWUsIEJVSUxERVJfTkFNRV9M
RU5HVEhfTElNSVQpKQotICAgICAgICBpZiBub3QgYnVpbGRib3RfaWRlbnRpZmllcnNfcmUubWF0
Y2goYnVpbGRlcl9uYW1lKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBu
YW1lICJ7fSIgaXMgbm90IGEgdmFsaWQgYnVpbGRib3QgaWRlbnRpZmllci4nLmZvcm1hdChidWls
ZGVyX25hbWUpKQotICAgICAgICBmb3Igc3RlcCBpbiBidWlsZGVyWyJmYWN0b3J5Il0uc3RlcHM6
Ci0gICAgICAgICAgICBpZiBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgICAgICAgICAg
c3RlcF9uYW1lID0gc3RlcC5idWlsZFN0ZXAoKS5uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHN0ZXBfbmFtZSA9IHN0ZXBbMF0ubmFtZQotICAgICAgICAgICAgaWYgbGVu
KHN0ZXBfbmFtZSkgPiBTVEVQX05BTUVfTEVOR1RIX0xJTUlUOgotICAgICAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignc3RlcCBuYW1lICJ7fSIgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxv
d2VkIGJ5IEJ1aWxkYm90ICh7fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChzdGVwX25hbWUsIFNURVBf
TkFNRV9MRU5HVEhfTElNSVQpKQotICAgICAgICAgICAgaWYgbm90IGJ1aWxkYm90X2lkZW50aWZp
ZXJzX3JlLm1hdGNoKHN0ZXBfbmFtZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdzdGVwIG5hbWUgInt9IiBpcyBub3QgYSB2YWxpZCBidWlsZGJvdCBpZGVudGlmaWVyLicuZm9y
bWF0KHN0ZXBfbmFtZSkpCi0KLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJyk6
Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdBcHBsZU1hYycKLSAgICAgICAgZWxpZiBwbGF0Zm9y
bS5zdGFydHN3aXRoKCdpb3MnKToKLSAgICAgICAgICAgIGNhdGVnb3J5ID0gJ2lPUycKLSAgICAg
ICAgZWxpZiBwbGF0Zm9ybSA9PSAnd2luJzoKLSAgICAgICAgICAgIGNhdGVnb3J5ID0gJ0FwcGxl
V2luJwotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2d0aycpOgotICAgICAgICAg
ICAgY2F0ZWdvcnkgPSAnR1RLJwotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dw
ZScpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAnV1BFJwotICAgICAgICBlbGlmIHBsYXRmb3Jt
ID09ICd3aW5jYWlybyc6Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdXaW5DYWlybycKLSAgICAg
ICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdwbGF5c3RhdGlvbicpOgotICAgICAgICAgICAg
Y2F0ZWdvcnkgPSAnUGxheVN0YXRpb24nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYXRl
Z29yeSA9ICdtaXNjJwotCi0gICAgICAgIGlmIChjYXRlZ29yeSBpbiAoJ0FwcGxlTWFjJywgJ0Fw
cGxlV2luJywgJ2lPUycpKSBhbmQgZmFjdG9yeU5hbWUgIT0gJ0J1aWxkRmFjdG9yeSc6Ci0gICAg
ICAgICAgICBidWlsZGVyWyduZXh0QnVpbGQnXSA9IHBpY2tMYXRlc3RCdWlsZAotCi0gICAgICAg
IGlmIG5vdCBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgICAgICBidWlsZGVyWydjYXRl
Z29yeSddID0gY2F0ZWdvcnkKLSAgICAgICAgY1snYnVpbGRlcnMnXS5hcHBlbmQoYnVpbGRlcikK
LQotCi1jbGFzcyBQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyKEFueUJyYW5jaFNjaGVkdWxlcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBicmFuY2gsICoqa3dhcmdzKToKLSAg
ICAgICAgc2VsZi5wbGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIGZpbHRlciA9IENoYW5nZUZp
bHRlcihicmFuY2g9W2JyYW5jaCwgTm9uZV0sIGZpbHRlcl9mbj1zZWxmLmZpbHRlcikKLSAgICAg
ICAgQW55QnJhbmNoU2NoZWR1bGVyLl9faW5pdF9fKHNlbGYsIG5hbWU9cGxhdGZvcm0sIGNoYW5n
ZV9maWx0ZXI9ZmlsdGVyLCAqKmt3YXJncykKLQotICAgIGRlZiBmaWx0ZXIoc2VsZiwgY2hhbmdl
KToKLSAgICAgICAgcmV0dXJuIHdrYnVpbGQuc2hvdWxkX2J1aWxkKHNlbGYucGxhdGZvcm0sIGNo
YW5nZS5maWxlcykKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL2xvYWRDb25maWdfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbG9hZENvbmZpZ191bml0dGVz
dC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvbG9hZENvbmZpZ191bml0dGVzdC5weQkobm9uZXhpc3RlbnQpCkBA
IC0xLDY5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMp
IDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9y
dCB1bml0dGVzdAotCi0KLWNsYXNzIENvbmZpZ0RvdEpTT05UZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgZ2V0X2NvbmZpZyhzZWxmKToKLSAgICAgICAgY3dkID0gb3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCi0gICAgICAgIHJldHVybiBqc29uLmxvYWQo
b3Blbihvcy5wYXRoLmpvaW4oY3dkLCAnY29uZmlnLmpzb24nKSkpCi0KLSAgICBkZWYgdGVzdF9i
dWlsZGVyX2tleXMoc2VsZik6Ci0gICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCi0g
ICAgICAgIHZhbGlkX2J1aWxkZXJfa2V5cyA9IFsnYWRkaXRpb25hbEFyZ3VtZW50cycsICdhcmNo
aXRlY3R1cmVzJywgJ2J1aWxkZGlyJywgJ2NvbmZpZ3VyYXRpb24nLCAnZGVzY3JpcHRpb24nLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRQcm9wZXJ0aWVzJywgJ2Rldmlj
ZV9tb2RlbCcsICdlbnYnLCAnZmFjdG9yeScsICdpY29uJywgJ2xvY2tzJywgJ25hbWUnLCAncGxh
dGZvcm0nLCAncHJvcGVydGllcycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVt
b3RlcycsICdydW5UZXN0cycsICdzaG9ydG5hbWUnLCAndGFncycsICd0cmlnZ2VycycsICd3b3Jr
ZXJuYW1lcycsICd3b3JrZXJidWlsZGRpciddCi0gICAgICAgIGZvciBidWlsZGVyIGluIGNvbmZp
Zy5nZXQoJ2J1aWxkZXJzJywgW10pOgotICAgICAgICAgICAgZm9yIGtleSBpbiBidWlsZGVyOgot
ICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShrZXkgaW4gdmFsaWRfYnVpbGRlcl9rZXlz
LCAnVW5leHBlY3RlZCBrZXkgInt9IiBmb3IgYnVpbGRlciB7fScuZm9ybWF0KGtleSwgYnVpbGRl
ci5nZXQoJ25hbWUnKSkpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9zY2hlZHVlcnNfZm9yX2J1
aWxkZXIoc2VsZik6Ci0gICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCi0gICAgICAg
IGJ1aWxkZXJfdG9fc2NoZHVsZXJfbWFwID0ge30KLQotICAgICAgICBmb3Igc2NoZWR1bGVyIGlu
IGNvbmZpZy5nZXQoJ3NjaGVkdWxlcnMnKToKLSAgICAgICAgICAgIGZvciBidWlsZGVybmFtZSBp
biBzY2hlZHVsZXIuZ2V0KCdidWlsZGVyTmFtZXMnKToKLSAgICAgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoYnVpbGRlcm5hbWUgbm90IGluIGJ1aWxkZXJfdG9fc2NoZHVsZXJfbWFwLCAnYnVp
bGRlciB7fSBhcHBlYXJzIG11bHRpcGxlIHRpbWVzIGluIHNjaGVkdWxlcnMuJy5mb3JtYXQoYnVp
bGRlcm5hbWUpKQotICAgICAgICAgICAgICAgIGJ1aWxkZXJfdG9fc2NoZHVsZXJfbWFwW2J1aWxk
ZXJuYW1lXSA9IHNjaGVkdWxlci5nZXQoJ25hbWUnKQotCi0gICAgZGVmIHRlc3Rfc2NoZHVsZXJf
Y29udGFpbnNfdmFsaWRfYnVpbGRlcl9uYW1lKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxm
LmdldF9jb25maWcoKQotICAgICAgICBidWlsZGVyX25hbWVfbGlzdCA9IFtidWlsZGVyWyduYW1l
J10gZm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddXQotICAgICAgICBmb3Igc2NoZWR1
bGVyIGluIGNvbmZpZy5nZXQoJ3NjaGVkdWxlcnMnKToKLSAgICAgICAgICAgIGZvciBidWlsZGVy
bmFtZSBpbiBzY2hlZHVsZXIuZ2V0KCdidWlsZGVyTmFtZXMnKToKLSAgICAgICAgICAgICAgICBz
ZWxmLmFzc2VydFRydWUoYnVpbGRlcm5hbWUgaW4gYnVpbGRlcl9uYW1lX2xpc3QsICdidWlsZGVy
ICJ7fSIgaW4gc2NoZWR1bGVyICJ7fSIgaXMgaW52YWxpZC4nLmZvcm1hdChidWlsZGVybmFtZSwg
c2NoZWR1bGVyLmdldCgnbmFtZScpKSkKLQotICAgIGRlZiB0ZXN0X3NpbmdsZV9idWlsZGVyX2Zv
cl90cmlnZ2VyYWJsZV9zY2hlZHVsZXIoc2VsZik6Ci0gICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0
X2NvbmZpZygpCi0gICAgICAgIGZvciBzY2hlZHVsZXIgaW4gY29uZmlnWydzY2hlZHVsZXJzJ106
Ci0gICAgICAgICAgICBpZiBzY2hlZHVsZXIuZ2V0KCd0eXBlJykgPT0gJ1RyaWdnZXJhYmxlJzoK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNjaGVkdWxlci5nZXQoJ2J1aWxk
ZXJOYW1lcycpKSA9PSAxLCAnc2NoZWR1bGVyICJ7fSIgdHJpZ2dlcnMgbXVsdGlwbGUgYnVpbGRl
cnMuJy5mb3JtYXQoc2NoZWR1bGVyWyduYW1lJ10pKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYWtlX3Bhc3N3b3Jkc19qc29uLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21h
a2VfcGFzc3dvcmRzX2pzb24ucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21ha2VfcGFzc3dvcmRzX2pzb24ucHkJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLQot
IyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWltcG9ydCBqc29uCi1pbXBvcnQgbWQ1Ci0KLQotZGVmIGNyZWF0ZV9tb2NrX3dv
cmtlcl9wYXNzd29yZHNfZGljdCgpOgotICAgIHdpdGggb3BlbignY29uZmlnLmpzb24nLCAncicp
IGFzIGNvbmZpZ19qc29uOgotICAgICAgICBjb25maWdfZGljdCA9IGpzb24ubG9hZChjb25maWdf
anNvbikKLSAgICByZXN1bHQgPSBkaWN0KFsod29ya2VyWyduYW1lJ10sICcxMjM0JykgZm9yIHdv
cmtlciBpbiBjb25maWdfZGljdFsnd29ya2VycyddXSkKLSAgICByZXN1bHRbJ3Jlc3VsdHMtc2Vy
dmVyLWFwaS1rZXknXSA9ICdhcGkta2V5JwotICAgIHJldHVybiByZXN1bHQKLQotaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKLSAgICB3aXRoIG9wZW4oJ3Bhc3N3b3Jkcy5qc29uJywgJ3cnKSBh
cyBwYXNzd29yZHNfZmlsZToKLSAgICAgICAgcGFzc3dvcmRzX2ZpbGUud3JpdGUoanNvbi5kdW1w
cyhjcmVhdGVfbW9ja193b3JrZXJfcGFzc3dvcmRzX2RpY3QoKSwgaW5kZW50PTQsIHNvcnRfa2V5
cz1UcnVlKSkKLQotICAgIHdpdGggb3BlbignYXV0aC5qc29uJywgJ3cnKSBhcyBhdXRoX2pzb25f
ZmlsZToKLSAgICAgICAgYXV0aF9qc29uX2ZpbGUud3JpdGUoIiIiewotICAgICJ0cmFjX2NyZWRl
bnRpYWxzIjogImNyZWRlbnRpYWxzLmNmZyIsCi0gICAgIndlYmtpdF9jb21taXR0ZXJzIjogImNv
bW1pdHRlcnMuY2ZnIgotfSIiIikKLQotICAgIHdpdGggb3BlbignY3JlZGVudGlhbHMuY2ZnJywg
J3cnKSBhcyBjcmVkZW50aWFsc19maWxlOgotICAgICAgICBjcmVkZW50aWFsc19maWxlLndyaXRl
KCJjb21taXR0ZXJAd2Via2l0Lm9yZzpNYWMgT1MgRm9yZ2U6JXMiICUgbWQ1Lm5ldygiY29tbWl0
dGVyQHdlYmtpdC5vcmc6TWFjIE9TIEZvcmdlOmNvbW1pdHRlcnBhc3N3b3JkIikuaGV4ZGlnZXN0
KCkpCi0KLSAgICB3aXRoIG9wZW4oJ2NvbW1pdHRlcnMuY2ZnJywgJ3cnKSBhcyBjb21taXR0ZXJz
X2ZpbGU6Ci0gICAgICAgIGNvbW1pdHRlcnNfZmlsZS53cml0ZSgiIiJbZ3JvdXBzXQotd2Via2l0
ID0gY29tbWl0dGVyQHdlYmtpdC5vcmcKLSIiIikKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21ha2VfcGFzc3dvcmRz
X2pzb24ucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMj
Ci0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVy
LmNmZwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkobm9uZXhpc3RlbnQpCkBAIC0xLDQ4ICswLDAg
QEAKLSMgLSotIHB5dGhvbiAtKi0KLSMgZXg6IHNldCBzeW50YXg9cHl0aG9uOgotCi1mcm9tIGJ1
aWxkYm90LmNoYW5nZXMucGIgaW1wb3J0IFBCQ2hhbmdlU291cmNlCi1mcm9tIGJ1aWxkYm90LnN0
YXR1cyBpbXBvcnQgaHRtbAotZnJvbSBidWlsZGJvdC5zdGF0dXMud2ViLmF1dGh6IGltcG9ydCBB
dXRoegotCi1mcm9tIGNvbW1pdHRlcl9hdXRoIGltcG9ydCBDb21taXR0ZXJBdXRoCi1mcm9tIGxv
YWRDb25maWcgaW1wb3J0ICoKLQotCi1pc190ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVudign
QlVJTERCT1RfVEVTVElORycpIGlzIG5vdCBOb25lCi0KLWMgPSBCdWlsZG1hc3RlckNvbmZpZyA9
IHt9Ci0KLWNbJ2NoYW5nZV9zb3VyY2UnXSA9IFBCQ2hhbmdlU291cmNlKHBvcnQ9MTYwMDApCi0K
LSMgcGVybWlzc2lvbnMgZm9yIFdlYlN0YXR1cwotYXV0aHogPSBBdXRoeigKLSAgICBhdXRoPUNv
bW1pdHRlckF1dGgoJ2F1dGguanNvbicpLAotICAgIGZvcmNlQnVpbGQ9J2F1dGgnLAotICAgIGZv
cmNlQWxsQnVpbGRzPSdhdXRoJywKLSAgICBwaW5nQnVpbGRlcj1UcnVlLAotICAgIGdyYWNlZnVs
U2h1dGRvd249RmFsc2UsCi0gICAgc3RvcEJ1aWxkPSdhdXRoJywKLSAgICBzdG9wQWxsQnVpbGRz
PSdhdXRoJywKLSAgICBjYW5jZWxQZW5kaW5nQnVpbGQ9J2F1dGgnLAotICAgIHN0b3BDaGFuZ2U9
VHJ1ZSwKLSAgICBjbGVhblNodXRkb3duPUZhbHNlKQotCi1jWydzdGF0dXMnXSA9IFtdCi1jWydz
dGF0dXMnXS5hcHBlbmQoaHRtbC5XZWJTdGF0dXMoaHR0cF9wb3J0PTg3MTAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV2bGluaz0iaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LyVzIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdl
Y29tbWVudGxpbms9KHIiKGh0dHBzOi8vYnVnc1wud2Via2l0XC5vcmcvc2hvd19idWdcLmNnaVw/
aWQ9fHdlYmtpdFwub3JnL2IvKShcZCspIiwgciJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9XDIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRo
ej1hdXRoeikpCi0KLWNbJ3NsYXZlUG9ydG51bSddID0gMTcwMDAKLWNbJ3Byb2plY3ROYW1lJ10g
PSAiV2ViS2l0IgotY1sncHJvamVjdFVSTCddID0gImh0dHBzOi8vd2Via2l0Lm9yZyIKLWNbJ2J1
aWxkYm90VVJMJ10gPSAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyIKLQotY1snYnVpbGRIb3Jp
em9uJ10gPSAxMDAwCi1jWydsb2dIb3Jpem9uJ10gPSA1MDAKLWNbJ2V2ZW50SG9yaXpvbiddID0g
MjAwCi1jWydidWlsZENhY2hlU2l6ZSddID0gNjAKLQotCi1sb2FkQnVpbGRlckNvbmZpZyhjLCBp
c190ZXN0X21vZGVfZW5hYmxlZD1pc190ZXN0X21vZGVfZW5hYmxlZCkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtz
Vmlld2VyL0xlYWtzTG9hZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtz
TG9hZGVyLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc0xvYWRl
ci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlv
biBMZWFrc0xvYWRlcihkaWRDb3VudExlYWtzRmlsZXNDYWxsYmFjaywgZGlkTG9hZExlYWtzRmls
ZUNhbGxiYWNrKSB7Ci0gICAgdGhpcy5fZGlkQ291bnRMZWFrc0ZpbGVzQ2FsbGJhY2sgPSBkaWRD
b3VudExlYWtzRmlsZXNDYWxsYmFjazsKLSAgICB0aGlzLl9kaWRMb2FkTGVha3NGaWxlQ2FsbGJh
Y2sgPSBkaWRMb2FkTGVha3NGaWxlQ2FsbGJhY2s7Ci19Ci0KLUxlYWtzTG9hZGVyLnByb3RvdHlw
ZSA9IHsKLSAgICBzdGFydDogZnVuY3Rpb24odXJsKSB7Ci0gICAgICAgIGlmICgvXC50eHQkLy50
ZXN0KHVybCkpCi0gICAgICAgICAgICB0aGlzLl9sb2FkTGVha3NGaWxlcyhbdXJsXSk7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2xvYWRMZWFrc0Zyb21SZXN1bHRzUGFnZSh1cmwp
OwotICAgIH0sCi0KLSAgICBfbG9hZExlYWtzRmlsZXM6IGZ1bmN0aW9uKHVybHMpIHsKLSAgICAg
ICAgdGhpcy5fZGlkQ291bnRMZWFrc0ZpbGVzQ2FsbGJhY2sodXJscy5sZW5ndGgpOwotCi0gICAg
ICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdmFyIHBlbmRpbmdVUkxzID0gdXJscy5sZW5n
dGg7Ci0gICAgICAgIHVybHMuZm9yRWFjaChmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgICAgIGdl
dFJlc291cmNlKHVybCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGlk
TG9hZExlYWtzRmlsZUNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfbG9hZExlYWtzRnJvbVJlc3VsdHNQYWdlOiBm
dW5jdGlvbih1cmwpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBnZXRSZXNv
dXJjZSh1cmwsIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgdmFyIHJvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJodG1sIik7Ci0gICAgICAgICAgICByb290LmlubmVySFRNTCA9IHho
ci5yZXNwb25zZVRleHQ7Ci0KLSAgICAgICAgICAgIC8vIFN0cmlwIG9mZiBldmVyeXRoaW5nIGFm
dGVyIHRoZSBsYXN0IC8uCi0gICAgICAgICAgICB2YXIgYmFzZVVSTCA9IHVybC5zdWJzdHJpbmco
MCwgdXJsLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKLQotICAgICAgICAgICAgdmFyIHVybHMgPSBB
cnJheS5wcm90b3R5cGUubWFwLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5maWxlID4g
dGQgPiBhW2hyZWYkPSctbGVha3MudHh0J10iKSwgZnVuY3Rpb24obGluaykgeyByZXR1cm4gYmFz
ZVVSTCArIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7IH0pOwotCi0gICAgICAgICAgICBzZWxm
Ll9sb2FkTGVha3NGaWxlcyh1cmxzKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLX07CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdl
ci9MZWFrc1BhcnNlci5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVh
a3NQYXJzZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
ZnVuY3Rpb24gTGVha3NQYXJzZXIoZGlkUGFyc2VMZWFrc0ZpbGVDYWxsYmFjaykgewotICAgIHRo
aXMuX2RpZFBhcnNlTGVha3NGaWxlQ2FsbGJhY2sgPSBkaWRQYXJzZUxlYWtzRmlsZUNhbGxiYWNr
OwotICAgIAotICAgIGlmICh3b3JrZXJzU3VwcG9ydEN5Y2xpY1N0cnVjdHVyZXMoKSkgewotICAg
ICAgICB0aGlzLl93b3JrZXIgPSBuZXcgV29ya2VyKCJMZWFrc1BhcnNlcldvcmtlci5qcyIpOwot
Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy5fd29ya2VyLm9ubWVzc2Fn
ZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHNlbGYuX2RpZFBhcnNlTGVha3NGaWxlQ2Fs
bGJhY2soZS5kYXRhKTsKLSAgICAgICAgfTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpcy5fcGFy
c2VySW1wbCA9IG5ldyBMZWFrc1BhcnNlckltcGwodGhpcy5fZGlkUGFyc2VMZWFrc0ZpbGVDYWxs
YmFjayk7Ci19Ci0KLUxlYWtzUGFyc2VyLnByb3RvdHlwZSA9IHsKLSAgICBhZGRMZWFrc0ZpbGU6
IGZ1bmN0aW9uKGxlYWtzVGV4dCkgewotICAgICAgICBpZiAodGhpcy5fd29ya2VyKQotICAgICAg
ICAgICAgdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKGxlYWtzVGV4dCk7Ci0gICAgICAgIGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX3BhcnNlckltcGwuYWRkTGVha3NGaWxlKGxlYWtzVGV4dCk7Ci0g
ICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlckltcGwuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NQYXJzZXJJbXBsLmpzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlckltcGwuanMJKG5vbmV4aXN0ZW50KQpA
QCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIExlYWtzUGFyc2VySW1wbChk
aWRQYXJzZUxlYWtzQ2FsbGJhY2spIHsKLSAgICB0aGlzLl9kaWRQYXJzZUxlYWtzQ2FsbGJhY2sg
PSBkaWRQYXJzZUxlYWtzQ2FsbGJhY2s7Ci0gICAgdGhpcy5fcHJvZmlsZSA9IHRoaXMuX2NyZWF0
ZU5vZGUoInRvcCBsZXZlbCIpOwotfQotCi1MZWFrc1BhcnNlckltcGwucHJvdG90eXBlID0gewot
ICAgIGFkZExlYWtzRmlsZTogZnVuY3Rpb24obGVha3NUZXh0KSB7Ci0gICAgICAgIHRoaXMuX2lu
Y29ycG9yYXRlTGVha3ModGhpcy5fcGFyc2VMZWFrcyhsZWFrc1RleHQpKTsKLSAgICAgICAgdGhp
cy5fZGlkUGFyc2VMZWFrc0NhbGxiYWNrKHRoaXMuX3Byb2ZpbGUpOwotICAgIH0sCi0KLSAgICBf
cGFyc2VMZWFrczogZnVuY3Rpb24odGV4dCkgewotICAgICAgICB2YXIgbGVha3MgPSBbXTsKLSAg
ICAgICAgdmFyIGN1cnJlbnRTaXplID0gMDsKLSAgICAgICAgdGV4dC5zcGxpdCgiXG4iKS5mb3JF
YWNoKGZ1bmN0aW9uKGxpbmUpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eTGVhazouKlxz
c2l6ZT0oXGQrKVxzLy5leGVjKGxpbmUpOwotICAgICAgICAgICAgaWYgKG1hdGNoKSB7Ci0gICAg
ICAgICAgICAgICAgY3VycmVudFNpemUgPSBwYXJzZUludChtYXRjaFsxXSwgMTApOwotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghL15ccytD
YWxsIHN0YWNrOi8udGVzdChsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgICAgIC8vIFRoZSBmaXJzdCBmcmFtZSBpcyBub3QgcmVhbGx5IGEgZnJhbWUgYXQgYWxsICgi
Q2FsbCBzdGFjazogdGhyZWFkIDB4Tk5OTk46IiksIHNvIHdlIG9taXQgaXQuCi0gICAgICAgICAg
ICBsZWFrcy5wdXNoKHsgc2l6ZTogY3VycmVudFNpemUsIHN0YWNrOiBsaW5lLnNwbGl0KCIgfCAi
KS5zbGljZSgxKS5tYXAoZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIudHJpbSgpOyB9KSB9KTsK
LSAgICAgICAgICAgIGN1cnJlbnRTaXplID0gMDsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVy
biBsZWFrczsKLSAgICB9LAotCi0gICAgX2NyZWF0ZU5vZGU6IGZ1bmN0aW9uKGZ1bmN0aW9uTmFt
ZSkgewotICAgICAgICB2YXIgdXJsOwotICAgICAgICB2YXIgbGluZU51bWJlcjsKLSAgICAgICAg
dmFyIG1hdGNoID0gLyguKikgKFxTKyk6KFxkKykkLy5leGVjKGZ1bmN0aW9uTmFtZSk7Ci0gICAg
ICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gbWF0Y2hbMV07Ci0g
ICAgICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGxpbmsg
c3RyYWlnaHQgdG8gdGhlIHJpZ2h0IGxpbmUgaW4gVHJhYywgYnV0IHRvCi0gICAgICAgICAgICAv
LyBkbyB0aGF0IHdlJ2QgaGF2ZSB0byBoYXZlIHNvbWUgd2F5IG9mIHRyYW5zbGF0aW5nIGZyb20g
ZmlsZW5hbWVzIHRvIFRyYWMgVVJMcy4KLSAgICAgICAgICAgIC8vIDxodHRwOi8vd2Via2l0Lm9y
Zy9iLzcyNTA5PgotICAgICAgICAgICAgdXJsID0gbWF0Y2hbMl07Ci0gICAgICAgICAgICBsaW5l
TnVtYmVyID0gbWF0Y2hbM107Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgZnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUsCi0gICAgICAgICAgICBzZWxmVGltZTog
MCwKLSAgICAgICAgICAgIHRvdGFsVGltZTogMCwKLSAgICAgICAgICAgIGF2ZXJhZ2VUaW1lOiAw
LAotICAgICAgICAgICAgbnVtYmVyT2ZDYWxsczogMCwKLSAgICAgICAgICAgIGNoaWxkcmVuOiBb
XSwKLSAgICAgICAgICAgIGNoaWxkcmVuQnlOYW1lOiB7fSwKLSAgICAgICAgICAgIGNhbGxVSUQ6
IGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgbGluZU51
bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgLy8gVGhpcyBmdW5j
dGlvbiBjcmVhdGVzIGEgZmFrZSAicHJvZmlsZSIgZnJvbSBhIHNldCBvZiBsZWFrIHN0YWNrcy4g
InNlbGZUaW1lIiBpcyB0aGUgbnVtYmVyIG9mCi0gICAgLy8gc3RhY2tzIGluIHdoaWNoIHRoaXMg
ZnVuY3Rpb24gd2FzIGF0IHRoZSB0b3AgKGluIHRoZW9yeSwgb25seSBmdW5jdGlvbnMgbGlrZSBt
YWxsb2Mgc2hvdWxkIGhhdmUgYQotICAgIC8vIG5vbi16ZXJvIHNlbGZUaW1lKS4gInRvdGFsVGlt
ZSIgaXMgdGhlIG51bWJlciBvZiBzdGFja3Mgd2hpY2ggY29udGFpbiB0aGlzIGZ1bmN0aW9uIChh
bmQgdGh1cyBpcwotICAgIC8vIHRoZSBudW1iZXIgb2YgbGVha3MgdGhhdCBvY2N1cnJlZCBpbiBv
ciBiZW5lYXRoIHRoaXMgZnVuY3Rpb24pLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4cGVuc2l2
ZSEgQ2FuIHdlIHBhcmFsbGVsaXplIGl0PwotICAgIF9pbmNvcnBvcmF0ZUxlYWtzOiBmdW5jdGlv
bihsZWFrcykgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGxlYWtzLmZvckVh
Y2goZnVuY3Rpb24obGVhaykgewotICAgICAgICAgICAgbGVhay5zdGFjay5yZWR1Y2UoZnVuY3Rp
b24obm9kZSwgZnJhbWUsIGluZGV4LCBhcnJheSkgewotICAgICAgICAgICAgICAgIHZhciBjaGls
ZE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKGZyYW1lIGluIG5vZGUuY2hpbGRyZW5CeU5hbWUp
Ci0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGUuY2hpbGRyZW5CeU5hbWVbZnJh
bWVdOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjaGlsZE5v
ZGUgPSBzZWxmLl9jcmVhdGVOb2RlKGZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgY2hpbGRO
b2RlLmhlYWQgPSBzZWxmLl9wcm9maWxlOwotICAgICAgICAgICAgICAgICAgICBub2RlLmNoaWxk
cmVuQnlOYW1lW2ZyYW1lXSA9IGNoaWxkTm9kZTsKLSAgICAgICAgICAgICAgICAgICAgbm9kZS5j
aGlsZHJlbi5wdXNoKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIGlmIChpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMSkKLSAgICAgICAgICAgICAgICAgICAg
Y2hpbGROb2RlLnNlbGZUaW1lICs9IGxlYWsuc2l6ZTsKLSAgICAgICAgICAgICAgICBjaGlsZE5v
ZGUudG90YWxUaW1lICs9IGxlYWsuc2l6ZTsKLSAgICAgICAgICAgICAgICArK2NoaWxkTm9kZS5u
dW1iZXJPZkNhbGxzOwotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGU7Ci0gICAgICAg
ICAgICB9LCBzZWxmLl9wcm9maWxlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNlbGYuX3Byb2Zp
bGUudG90YWxUaW1lID0gc2VsZi5fcHJvZmlsZS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24oc3Vt
LCBjaGlsZCkgeyByZXR1cm4gc3VtICsgY2hpbGQudG90YWxUaW1lOyB9LCAwKTsKLSAgICB9LAot
fTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyV29ya2VyLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyV29ya2VyLmpzCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlcldvcmtlci5qcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbXBvcnRTY3JpcHRzKCJMZWFrc1BhcnNlcklt
cGwuanMiKTsKLQotdmFyIHBhcnNlciA9IG5ldyBMZWFrc1BhcnNlckltcGwoZnVuY3Rpb24ocHJv
ZmlsZSkgewotICAgIHBvc3RNZXNzYWdlKHByb2ZpbGUpOwotfSk7Ci0KLW9ubWVzc2FnZSA9IGZ1
bmN0aW9uKGUpIHsKLSAgICBwYXJzZXIuYWRkTGVha3NGaWxlKGUuZGF0YSk7Ci19CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3
ZXIvTGVha3NWaWV3ZXIuY3NzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9M
ZWFrc1ZpZXdlci5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3VybC1wcm9tcHQtY29udGFpbmVyIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAg
dG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwotICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKLSAgICB6LWluZGV4OiA1MDAw
MDsKLX0KLQotI3VybC1wcm9tcHQgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6
IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAgd2lk
dGg6IDQwMHB4OwotICAgIGhlaWdodDogMzAwcHg7Ci0gICAgbWFyZ2luOiBhdXRvOwotICAgIGJh
Y2tncm91bmQtY29sb3I6IHdoaXRlOwotICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHggMTBw
eCByZ2JhKDAsIDAsIDAsIDAuOCk7Ci0gICAgcGFkZGluZzogNTBweCAwOwotICAgIHRleHQtYWxp
Z246IGNlbnRlcjsKLX0KLQotI2xvYWRpbmctaW5kaWNhdG9yIHsKLSAgICBwb3NpdGlvbjogYWJz
b2x1dGU7Ci0gICAgcmlnaHQ6IDIwcHg7Ci0gICAgd2lkdGg6IDE1MHB4OwotICAgIG1hcmdpbi10
b3A6IDVweDsKLX0KLQotI3NwaW5uZXIgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1hcmdpbi10
b3A6IC0xcHg7Ci19Ci0KLSNsb2FkaW5nLWluZGljYXRvci1sYWJlbCB7Ci0gICAgbWFyZ2luLWxl
ZnQ6IDVweDsKLX0KLQotI3JlY2VudC1idWlsZHMtbG9hZGluZy1pbmRpY2F0b3IgewotICAgIGNv
bG9yOiBncmF5OwotfQotCi0jcmVjZW50LWJ1aWxkcy1saXN0IHsKLSAgICBsaXN0LXN0eWxlOiBu
b25lOwotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0vKiBJbnNwZWN0b3Ig
c3R5bGUgb3ZlcnJpZGVzICovCi0KLS5wZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIHsKLSAg
ICAvKiBXZSBhbHdheXMgc2hvdyBsZWFrIGNvdW50cyBhcyByZWFsIHZhbHVlcywgbm90IHBlcmNl
bnRhZ2VzLCBzbyB0aGlzIGJ1dHRvbiBpc24ndCB1c2VmdWwuICovCi0gICAgZGlzcGxheTogbm9u
ZSAhaW1wb3J0YW50OwotfQotCi0uZGF0YS1ncmlkIC5kYXRhLWNvbnRhaW5lciB7Ci0gICAgb3Zl
cmZsb3cteDogdmlzaWJsZTsKLSAgICBvdmVyZmxvdy15OiBhdXRvOwotfQotCi0uZGF0YS1ncmlk
IHRkID4gZGl2LCAuZGF0YS1ncmlkIHRoID4gZGl2IHsKLSAgICBvdmVyZmxvdzogdmlzaWJsZTsK
LX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFr
c1ZpZXdlci9MZWFrc1ZpZXdlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMiArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotdmFyIExlYWtzVmlld2VyID0gewotICAgIGxvYWRlZDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRoaXMuX2xvYWRlciA9IG5ldyBMZWFrc0xvYWRlcih0aGlzLl9kaWRDb3VudExl
YWtzRmlsZXMuYmluZCh0aGlzKSwgdGhpcy5fZGlkTG9hZExlYWtzRmlsZS5iaW5kKHRoaXMpKTsK
LSAgICAgICAgdGhpcy5fcGFyc2VyID0gbmV3IExlYWtzUGFyc2VyKHRoaXMuX2RpZFBhcnNlTGVh
a3NGaWxlLmJpbmQodGhpcykpOwotCi0gICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3IgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZy1pbmRpY2F0b3IiKTsKLSAgICAgICAgdGhp
cy5fbG9hZGluZ0luZGljYXRvckxhYmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvYWRp
bmctaW5kaWNhdG9yLWxhYmVsIik7Ci0KLSAgICAgICAgdGhpcy5fcHJvZmlsZVZpZXcgPSBuZXcg
V2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3KHt9KTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm1haW4tcGFuZWxzIikuYXBwZW5kQ2hpbGQodGhpcy5fcHJvZmlsZVZpZXcuZWxl
bWVudCk7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVWaWV3LnNob3coKTsKLQotICAgICAgICAvLyBG
cm9tIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdwotICAgICAgICB2YXIgc3RhdHVz
QmFySXRlbXMgPSB0aGlzLl9wcm9maWxlVmlldy5zdGF0dXNCYXJJdGVtczsKLSAgICAgICAgaWYg
KHN0YXR1c0Jhckl0ZW1zKSB7Ci0gICAgICAgICAgICB0aGlzLl9zdGF0dXNCYXJJdGVtQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHN0YXR1c0Jhckl0ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAg
IHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIuYXBwZW5kQ2hpbGQoc3RhdHVzQmFySXRlbXNb
aV0pOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tc3RhdHVzLWJh
ciIpLmFwcGVuZENoaWxkKHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHVybDsKLSAgICAgICAgdmFyIG1hdGNoID0gL3VybD0oW14mXSspLy5l
eGVjKGxvY2F0aW9uLnNlYXJjaCk7Ci0gICAgICAgIGlmIChtYXRjaCkKLSAgICAgICAgICAgIHVy
bCA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsxXSk7Ci0KLSAgICAgICAgaWYgKHVybCkKLSAg
ICAgICAgICAgIHRoaXMuX2xvYWRMZWFrc0Zyb21VUkwodXJsKQotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICB0aGlzLl9kaXNwbGF5VVJMUHJvbXB0KCk7Ci0gICAgfSwKLQotICAgIGdldCBmaWxl
c0xlZnRUb1BhcnNlKCkgewotICAgICAgICBpZiAoISgnX2ZpbGVzTGVmdFRvUGFyc2UnIGluIHRo
aXMpKQotICAgICAgICAgICAgdGhpcy5fZmlsZXNMZWZ0VG9QYXJzZSA9IDA7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9maWxlc0xlZnRUb1BhcnNlOwotICAgIH0sCi0KLSAgICBzZXQgZmlsZXNMZWZ0
VG9QYXJzZSh4KSB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlc0xlZnRUb1BhcnNlID09PSB4KQot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9maWxlc0xlZnRUb1BhcnNlID0geDsK
LSAgICAgICAgdGhpcy5fbG9hZGluZ1N0YXR1c0NoYW5nZWQoKTsKLSAgICB9LAotCi0gICAgZ2V0
IGxvYWRpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7Ci0gICAgfSwKLQot
ICAgIHNldCBsb2FkaW5nKHgpIHsKLSAgICAgICAgaWYgKHRoaXMuX2lzTG9hZGluZyA9PT0geCkK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faXNMb2FkaW5nID0geDsKLSAgICAg
ICAgdGhpcy5fbG9hZGluZ1N0YXR1c0NoYW5nZWQoKTsKLSAgICB9LAotCi0gICAgZ2V0IHVybCgp
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKLSAgICB9LAotCi0gICAgc2V0IHVybCh4KSB7
Ci0gICAgICAgIGlmICh0aGlzLl91cmwgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdGhpcy5fdXJsID0geDsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9
LAotCi0gICAgdXJsUHJvbXB0QnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZSkgewotICAgICAgICB0
aGlzLl91cmxDaG9zZW5Gcm9tUHJvbXB0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwiKS52
YWx1ZSk7Ci0gICAgfSwKLQotICAgIF9kaWRDb3VudExlYWtzRmlsZXM6IGZ1bmN0aW9uKGZpbGVD
b3VudCkgewotICAgICAgICB0aGlzLl9maWxlQ291bnQgPSBmaWxlQ291bnQ7Ci0gICAgICAgIHRo
aXMuZmlsZXNMZWZ0VG9QYXJzZSA9IGZpbGVDb3VudDsKLSAgICB9LAotCi0gICAgX2RpZExvYWRM
ZWFrc0ZpbGU6IGZ1bmN0aW9uKGxlYWtzVGV4dCkgewotICAgICAgICB0aGlzLl9wYXJzZXIuYWRk
TGVha3NGaWxlKGxlYWtzVGV4dCk7Ci0gICAgfSwKLQotICAgIF9kaWRMb2FkUmVjZW50QnVpbGRz
OiBmdW5jdGlvbihidWlsZHMpIHsKLSAgICAgICAgdGhpcy5fcmVjZW50QnVpbGRzID0gYnVpbGRz
OwotICAgICAgICB0aGlzLl91cGRhdGVVUkxQcm9tcHQoKTsKLSAgICB9LAotCi0gICAgX2RpZFBh
cnNlTGVha3NGaWxlOiBmdW5jdGlvbihwcm9maWxlKSB7Ci0gICAgICAgIGlmICgtLXRoaXMuZmls
ZXNMZWZ0VG9QYXJzZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUHJvZmlsZXJBZ2Vu
dC5wcm9maWxlUmVhZHkocHJvZmlsZSk7Ci0gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOwot
ICAgIH0sCi0KLSAgICBfZGlzcGxheVVSTFByb21wdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwtcHJvbXB0LWNvbnRhaW5lciIpLnJlbW92ZVN0eWxl
Q2xhc3MoImhpZGRlbiIpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJsIiku
Zm9jdXMoKTsKLSAgICAgICAgdmFyIGxvYWRlciA9IG5ldyBSZWNlbnRCdWlsZHNMb2FkZXIodGhp
cy5fZGlkTG9hZFJlY2VudEJ1aWxkcy5iaW5kKHRoaXMpKTsKLSAgICAgICAgbG9hZGVyLnN0YXJ0
KCJBcHBsZSBTaWVycmEgKExlYWtzKSIsIHRoaXMuX251bWJlck9mUmVjZW50QnVpbGRzVG9Mb2Fk
KTsKLSAgICB9LAotCi0gICAgX2xvYWRMZWFrc0Zyb21VUkw6IGZ1bmN0aW9uKHVybCkgewotICAg
ICAgICB0aGlzLnVybCA9IHVybDsKLSAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKLQotICAg
ICAgICB0aGlzLl9sb2FkZXIuc3RhcnQodGhpcy51cmwpOwotICAgIH0sCi0KLSAgICBfbG9hZGlu
Z0luZGljYXRvclRleHQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGV4dCA9ICJMb2FkaW5n
IjsKLSAgICAgICAgaWYgKHRoaXMuZmlsZXNMZWZ0VG9QYXJzZSkKLSAgICAgICAgICAgIHRleHQg
Kz0gIiAiICsgKHRoaXMuX2ZpbGVDb3VudCAtIHRoaXMuZmlsZXNMZWZ0VG9QYXJzZSArIDEpICsg
Ii8iICsgdGhpcy5fZmlsZUNvdW50ICsgIiBmaWxlcyI7Ci0gICAgICAgIHRleHQgKz0gIlx1MjAy
NiI7Ci0gICAgICAgIHJldHVybiB0ZXh0OwotICAgIH0sCi0KLSAgICBfbG9hZGluZ1N0YXR1c0No
YW5nZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9zZXRMb2FkaW5nSW5kaWNhdG9ySGlk
ZGVuKCF0aGlzLmxvYWRpbmcpOwotICAgICAgICB0aGlzLl91cGRhdGVMb2FkaW5nSW5kaWNhdG9y
TGFiZWwoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0gICAgX251
bWJlck9mUmVjZW50QnVpbGRzVG9Mb2FkOiAxMCwKLQotICAgIF9zZXRMb2FkaW5nSW5kaWNhdG9y
SGlkZGVuOiBmdW5jdGlvbihoaWRkZW4pIHsKLSAgICAgICAgaWYgKGhpZGRlbikKLSAgICAgICAg
ICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3IuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0gICAg
ICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3IucmVtb3ZlU3R5bGVD
bGFzcygiaGlkZGVuIik7Ci0gICAgfSwKLQotICAgIF91cGRhdGVMb2FkaW5nSW5kaWNhdG9yTGFi
ZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9sb2FkaW5nSW5kaWNhdG9yTGFiZWwuaW5u
ZXJUZXh0ID0gdGhpcy5fbG9hZGluZ0luZGljYXRvclRleHQoKTsKLSAgICB9LAotCi0gICAgX3Vw
ZGF0ZVRpdGxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHRpdGxlID0gIkxlYWtzIFZpZXdl
ciBcdTIwMTQgIjsKLSAgICAgICAgaWYgKHRoaXMubG9hZGluZykKLSAgICAgICAgICAgIHRpdGxl
ICs9ICIoIiArIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3JUZXh0KCkgKyAiKSAiOwotICAgICAgICB0
aXRsZSArPSB0aGlzLnVybDsKLSAgICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aXRsZTsKLSAgICB9
LAotCi0gICAgX3VwZGF0ZVVSTFByb21wdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciByZWNl
bnRCdWlsZHNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVjZW50LWJ1aWxk
cy1jb250YWluZXIiKTsKLSAgICAgICAgcmVjZW50QnVpbGRzQ29udGFpbmVyLnJlbW92ZUNoaWxk
cmVuKCk7Ci0gICAgICAgIGlmICh0aGlzLl9yZWNlbnRCdWlsZHMgJiYgdGhpcy5fcmVjZW50QnVp
bGRzLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJvbCIpOwotICAgICAgICAgICAgbGlzdC5pZCA9ICJyZWNlbnQtYnVpbGRzLWxpc3QiOwot
Ci0gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICB0aGlzLl9yZWNlbnRC
dWlsZHMuZm9yRWFjaChmdW5jdGlvbihidWlsZCkgewotICAgICAgICAgICAgICAgIHZhciBsaW5r
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgICAgIGxpbmsuaHJl
ZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKyAiP3VybD0iICsgZW5jb2RlVVJJQ29tcG9uZW50
KGJ1aWxkLnVybCk7Ci0gICAgICAgICAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXJsQ2hvc2VuRnJv
bVByb21wdChidWlsZC51cmwpOwotICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0
KCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbGluay5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiciIgKyBidWlsZC5yZXZpc2lvbiArICI6ICIgKyBi
dWlsZC5sZWFrQ291bnQgKyAiIGxlYWtzIikpOwotICAgICAgICAgICAgICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChpdGVtKTsK
LSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICByZWNlbnRCdWlsZHNDb250YWluZXIuYXBw
ZW5kQ2hpbGQobGlzdCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVjZW50QnVpbGRz
Q29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJObyByZWNlbnQg
bGVha3kgYnVpbGRzIGZvdW5kLiIpKTsKLSAgICB9LAotCi0gICAgX3VybENob3NlbkZyb21Qcm9t
cHQ6IGZ1bmN0aW9uKHVybCkgewotICAgICAgICB0aGlzLl9sb2FkTGVha3NGcm9tVVJMKHVybCk7
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwtcHJvbXB0LWNvbnRhaW5lciIp
LmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgIH0sCi0KLX07Ci0KLWFkZEV2ZW50TGlzdGVu
ZXIoImxvYWQiLCBMZWFrc1ZpZXdlci5sb2FkZWQuYmluZChMZWFrc1ZpZXdlcikpOwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvTGVha3NWaWV3ZXIvUmVjZW50QnVpbGRzTG9hZGVyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xl
YWtzVmlld2VyL1JlY2VudEJ1aWxkc0xvYWRlci5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
TGVha3NWaWV3ZXIvUmVjZW50QnVpbGRzTG9hZGVyLmpzCShub25leGlzdGVudCkKQEAgLTEsODgg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFJlY2VudEJ1aWxkc0xvYWRlcihkaWRMb2Fk
UmVjZW50QnVpbGRzQ2FsbGJhY2spIHsKLSAgICB0aGlzLl9kaWRMb2FkUmVjZW50QnVpbGRzQ2Fs
bGJhY2sgPSBkaWRMb2FkUmVjZW50QnVpbGRzQ2FsbGJhY2s7Ci19Ci0KLVJlY2VudEJ1aWxkc0xv
YWRlci5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCBtYXhp
bXVtTnVtYmVyT2ZCdWlsZHMpIHsKLSAgICAgICAgdmFyIHVybCA9IHRoaXMuX2J1aWxkYm90QmFz
ZVVSTCArICIvanNvbi9idWlsZGVycy8iICsgYnVpbGRlck5hbWUgKyAiL2J1aWxkcy8/IjsKLSAg
ICAgICAgdXJsICs9IHJhbmdlKG1heGltdW1OdW1iZXJPZkJ1aWxkcykubWFwKGZ1bmN0aW9uKG4p
IHsgcmV0dXJuICJzZWxlY3Q9LSIgKyAobiArIDEpOyB9KS5qb2luKCImIik7Ci0gICAgICAgIHZh
ciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2UodXJsLCBmdW5jdGlvbih4aHIpIHsK
LSAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAg
ICAgICAgICAgIHZhciBidWlsZHMgPSBbXTsKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGRhdGEp
LmZvckVhY2goZnVuY3Rpb24oYnVpbGROdW1iZXIpIHsKLSAgICAgICAgICAgICAgICB2YXIgYnVp
bGQgPSBkYXRhW2J1aWxkTnVtYmVyXTsKLSAgICAgICAgICAgICAgICBpZiAoYnVpbGQuZXJyb3Ip
IHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkJ1aWxkICIgKyBidWlsZE51bWJl
ciArICI6ICIgKyBidWlsZC5lcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHN2blJldmlzaW9uUHJvcGVydHkg
PSBidWlsZC5wcm9wZXJ0aWVzLmZpcnN0KGZ1bmN0aW9uKHByb3BlcnR5KSB7IHJldHVybiBwcm9w
ZXJ0eVswXSA9PT0gImdvdF9yZXZpc2lvbiI7IH0pOwotICAgICAgICAgICAgICAgIGlmICghc3Zu
UmV2aXNpb25Qcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
ICAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IHsKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246
IHBhcnNlSW50KHN2blJldmlzaW9uUHJvcGVydHlbMV0sIDEwKSwKLSAgICAgICAgICAgICAgICAg
ICAgbGVha0NvdW50OiAwLAotICAgICAgICAgICAgICAgICAgICB1cmw6IG51bGwsCi0gICAgICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBzdGVwSW5kZXggPSAwOyBzdGVw
SW5kZXggPCBidWlsZC5zdGVwcy5sZW5ndGg7ICsrc3RlcEluZGV4KSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBzdGVwID0gYnVpbGQuc3RlcHNbc3RlcEluZGV4XTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikgewotICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCEoInRleHQiIGluIHN0ZXApKQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0cmluZ3MgPSBzdGVw
LnRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzdHJpbmdJbmRleCA9IDA7
IHN0cmluZ0luZGV4IDwgc3RyaW5ncy5sZW5ndGg7ICsrc3RyaW5nSW5kZXgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSAvXihcZCspIHRvdGFsIGxlYWtzIGZvdW5k
Ly5leGVjKHN0cmluZ3Nbc3RyaW5nSW5kZXhdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZEluZm8ubGVha0NvdW50ID0gcGFyc2VJ
bnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChz
dGVwLm5hbWUgPT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoISgidXJscyIgaW4gc3RlcCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoInZpZXcgcmVzdWx0cyIgaW4g
c3RlcC51cmxzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc3RlcC51cmxzWyJ2aWV3IHJlc3VsdHMiXTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkSW5mby51cmwgPSBzZWxmLl9idWlsZGJvdEJhc2VV
UkwgKyB1cmwucmVwbGFjZSgvXC9yZXN1bHRzXC5odG1sJC8sICIiKSArICIvIjsKLSAgICAgICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZEluZm8ubGVha0Nv
dW50ICYmIGJ1aWxkSW5mby51cmwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkcy5w
dXNoKGJ1aWxkSW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgLy8gU29ydCBkZXNjZW5kaW5nIGJ5IHJldmlzaW9uLgotICAgICAgICAgICAgYnVpbGRz
LnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5yZXZpc2lvbiAtIGEucmV2aXNpb247IH0p
OwotICAgICAgICAgICAgc2VsZi5fZGlkTG9hZFJlY2VudEJ1aWxkc0NhbGxiYWNrKGJ1aWxkcyk7
Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfYnVpbGRib3RCYXNlVVJMOiAiaHR0cHM6Ly9i
dWlsZC53ZWJraXQub3JnLyIsCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvVXRpbGl0aWVzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1V0aWxpdGllcy5qcwkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvTGVha3NWaWV3ZXIvVXRpbGl0aWVzLmpzCShub25leGlzdGVudCkKQEAgLTEs
NjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGdldFJlc291cmNlKHVybCwgY2FsbGJh
Y2spIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9ucmVh
ZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBBbGxvdyBhIHN0YXR1cyBv
ZiAwIGZvciBlYXNpZXIgdGVzdGluZyB3aXRoIGxvY2FsIGZpbGVzLgotICAgICAgICBpZiAodGhp
cy5yZWFkeVN0YXRlID09IDQgJiYgKCF0aGlzLnN0YXR1cyB8fCB0aGlzLnN0YXR1cyA9PSAyMDAp
KQotICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7Ci0gICAgfTsKLSAgICB4aHIub3BlbigiR0VU
IiwgdXJsKTsKLSAgICB4aHIuc2VuZCgpOwotfQotCi1mdW5jdGlvbiByYW5nZShuKSB7Ci0gICAg
dmFyIHJlc3VsdCA9IG5ldyBBcnJheShuKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47ICsr
aSkKLSAgICAgICAgcmVzdWx0W2ldID0gaTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5j
dGlvbiB3b3JrZXJzU3VwcG9ydEN5Y2xpY1N0cnVjdHVyZXMoKSB7Ci0gICAgdmFyIHdvcmtlciA9
IG5ldyBXb3JrZXIoIlV0aWxpdGllcy5qcyIpOwotICAgIHZhciBzdXBwb3J0c0N5Y2xpY1N0cnVj
dHVyZXMgPSB0cnVlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgdmFyIGN5Y2xpY1N0cnVjdHVyZSA9
IHsgY3ljbGU6IG51bGwgfTsKLSAgICAgICAgY3ljbGljU3RydWN0dXJlLmN5Y2xlID0gY3ljbGlj
U3RydWN0dXJlOwotCi0gICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShjeWNsaWNTdHJ1Y3R1cmUp
OwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBzdXBwb3J0c0N5Y2xpY1N0cnVjdHVyZXMgPSBm
YWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VwcG9ydHNDeWNsaWNTdHJ1Y3R1cmVzOwotfQot
Ci1BcnJheS5wcm90b3R5cGUuZmlyc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0
ZSh0aGlzW2ldKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOwotICAgIH0KLSAgICByZXR1
cm4gbnVsbDsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1dlYkluc3BlY3RvclNoaW1zLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1dlYkluc3BlY3RvclNoaW1zLmpzCShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9XZWJJbnNwZWN0b3JTaGltcy5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgY29udGFp
bnMgZGVmaW5pdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvIHNhdGlzZnkgdGhlIFdlYiBJbnNwZWN0
b3IgSmF2YVNjcmlwdCBmaWxlcyB3ZQotLy8gaW1wb3J0LgotCi12YXIgV2ViSW5zcGVjdG9yID0g
ewotICAgIGRpc3BsYXlOYW1lRm9yVVJMOiBmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgcmV0dXJu
IHVybDsKLSAgICB9LAotCi0gICAgbGlua2lmeVVSTEFzTm9kZTogZnVuY3Rpb24odXJsLCBsaW5r
VGV4dCwgY2xhc3NlcywgdG9vbHRpcFRleHQpIHsKLSAgICAgICAgaWYgKCFsaW5rVGV4dCkKLSAg
ICAgICAgICAgIGxpbmtUZXh0ID0gdXJsOwotICAgICAgICBjbGFzc2VzID0gKGNsYXNzZXMgPyBj
bGFzc2VzICsgIiAiIDogIiIpOwotCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gPGE+IGVs
ZW1lbnQgaGVyZSBvbmNlIHdlIGFjdHVhbGx5IGhhdmUgc29tZXdoZXJlIHVzZWZ1bCB0byBsaW5r
IHRvLgotICAgICAgICAvLyA8aHR0cDovL3dlYmtpdC5vcmcvYi83MjUwOT4KLSAgICAgICAgdmFy
IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGEuaHJlZiA9IHVy
bDsKLSAgICAgICAgYS5jbGFzc05hbWUgPSBjbGFzc2VzOwotICAgICAgICBpZiAodHlwZW9mIHRv
b2x0aXBUZXh0ID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGEudGl0bGUgPSB1cmw7Ci0g
ICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b29sdGlwVGV4dCAhPT0gInN0cmluZyIgfHwgdG9vbHRp
cFRleHQubGVuZ3RoKQotICAgICAgICAgICAgYS50aXRsZSA9IHRvb2x0aXBUZXh0OwotICAgICAg
ICBhLnRleHRDb250ZW50ID0gbGlua1RleHQ7Ci0KLSAgICAgICAgcmV0dXJuIGE7Ci0gICAgfSwK
LQotICAgIGxpbmtpZnlSZXNvdXJjZUFzTm9kZTogZnVuY3Rpb24odXJsLCBwcmVmZXJyZWRQYW5l
bCwgbGluZU51bWJlciwgY2xhc3NlcywgdG9vbHRpcFRleHQpIHsKLSAgICAgICAgdmFyIGxpbmtU
ZXh0ID0gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHVybCk7Ci0gICAgICAgIGlmIChs
aW5lTnVtYmVyKQotICAgICAgICAgICAgbGlua1RleHQgKz0gIjoiICsgbGluZU51bWJlcjsKLSAg
ICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHVybCwgbGlua1RleHQs
IGNsYXNzZXMsIHRvb2x0aXBUZXh0KTsKLSAgICB9LAotCi0gICAgVUlTdHJpbmc6IGZ1bmN0aW9u
KHN0cmluZykgewotICAgICAgICByZXR1cm4gU3RyaW5nLnZzcHJpbnRmKHN0cmluZywgQXJyYXku
cHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7Ci0gICAgfSwKLX07Ci0KLXZhciBQ
cmVmZXJlbmNlcyA9IHsKLSAgICAvLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgY2F1c2VzIHRoZSAi
QXZlcmFnZSIgYW5kICJDYWxscyIgY29sdW1ucyB0byBiZSBzaG93bi4KLSAgICBzYW1wbGluZ0NQ
VVByb2ZpbGVyOiBmYWxzZSwKLX07Ci0KLXZhciBQcm9maWxlckFnZW50ID0gewotICAgIGdldFBy
b2ZpbGU6IGZ1bmN0aW9uKHR5cGVJZCwgdWlkLCBjYWxsYmFjaykgewotICAgICAgICB0aGlzLl9j
YWxsYmFjayA9IGNhbGxiYWNrOwotICAgIH0sCi0KLSAgICBwcm9maWxlUmVhZHk6IGZ1bmN0aW9u
KGhlYWQpIHsKLSAgICAgICAgdGhpcy5fY2FsbGJhY2soeyBoZWFkOiBoZWFkIH0pOwotICAgIH0s
Ci19OwotCi0vLyBUaGlzIGZ1bmN0aW9uIG1ha2VzIGFueSByZXF1aXJlZCBjaGFuZ2VzIHRvIG9i
amVjdHMgaW1wb3J0ZWQgZnJvbSB0aGUgV2ViIEluc3BlY3RvciBKYXZhU2NyaXB0Ci0vLyBmaWxl
cy4KLWZ1bmN0aW9uIG1vbmtleVBhdGNoSW5zcGVjdG9yT2JqZWN0cygpIHsKLSAgICB2YXIgb3Jp
Z2luYWxHZXR0ZXIgPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5cGUu
X19sb29rdXBHZXR0ZXJfXygiZGF0YSIpOwotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0YUdy
aWROb2RlLnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fKCJkYXRhIiwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHZhciBkYXRhID0gb3JpZ2luYWxHZXR0ZXIuY2FsbCh0aGlzKTsKLQotICAgICAgICAv
LyBQcm9maWxlRGF0YUdyaWROb2RlIGZvcm1hdHMgdmFsdWVzIGFzIG1pbGxpc2Vjb25kcywgYnV0
IHdlIGFyZSBpbnN0ZWFkIG1lYXN1cmluZyBieXRlcy4KLSAgICAgICAgaWYgKCF0aGlzLnByb2Zp
bGVWaWV3LnNob3dTZWxmVGltZUFzUGVyY2VudCkKLSAgICAgICAgICAgIGRhdGEuc2VsZiA9IE51
bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuc2VsZlRpbWUpOwotICAgICAgICBpZiAoIXRoaXMucHJv
ZmlsZVZpZXcuc2hvd1RvdGFsVGltZUFzUGVyY2VudCkKLSAgICAgICAgICAgIGRhdGEudG90YWwg
PSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLnRvdGFsVGltZSk7Ci0gICAgICAgIGlmICghdGhp
cy5wcm9maWxlVmlldy5zaG93QXZlcmFnZVRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBkYXRh
LmF2ZXJhZ2UgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLmF2ZXJhZ2VUaW1lKTsKLQotICAg
ICAgICByZXR1cm4gZGF0YTsKLSAgICB9KTsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL2luZGV4
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRtbAkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0x
LDgxICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1hcmUgbWV0OgotMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi1U
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLVBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLVNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0tLT4KLQotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotICAg
IDx0aXRsZT5MZWFrcyBWaWV3ZXI8L3RpdGxlPgotICAgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhy
ZWY9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2
NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3Mi
PgotICAgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9TGVha3NWaWV3ZXIuY3NzPgotCi0gICAg
PHNjcmlwdCBzcmM9V2ViSW5zcGVjdG9yU2hpbXMuanM+PC9zY3JpcHQ+Ci0KLSAgICA8IS0tIFRo
ZSBvcmRlciBoZXJlIG1hdGNoZXMgaW5zcGVjdG9yLmh0bWwuIC0tPgotICAgIDxzY3JpcHQgc3Jj
PSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUv
dHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRv
cnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC90cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBz
Oi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90cnVuay9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQv
IXN2bi9iYy84MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Zp
ZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0
dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90cnVu
ay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dl
YmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2lkZWJhclRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0
cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5r
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RhdHVzQmFyQnV0dG9uLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0
b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0
dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90cnVu
ay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRyZWUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3Jl
cG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0
LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9U
b3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90
cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3LmpzIj48
L3NjcmlwdD4KLQotICAgIDxzY3JpcHQ+Ci0gICAgICAgIC8vIE5vdyB0aGF0IGFsbCB0aGUgSW5z
cGVjdG9yIGZpbGVzIGhhdmUgbG9hZGVkIHdlIGNhbiBhcHBseSBvdXIgbW9ua2V5IHBhdGNoZXMu
Ci0gICAgICAgIG1vbmtleVBhdGNoSW5zcGVjdG9yT2JqZWN0cygpOwotICAgIDwvc2NyaXB0Pgot
Ci0gICAgPHNjcmlwdCBzcmM9TGVha3NMb2FkZXIuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9TGVha3NQYXJzZXIuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9TGVha3NQYXJzZXJJ
bXBsLmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPUxlYWtzVmlld2VyLmpzPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPVJlY2VudEJ1aWxkc0xvYWRlci5qcz48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz1VdGlsaXRpZXMuanM+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAgICA8
ZGl2IGlkPW1haW4tcGFuZWxzPjwvZGl2PgotICAgIDxkaXYgaWQ9bWFpbi1zdGF0dXMtYmFyIGNs
YXNzPXN0YXR1cy1iYXI+Ci0gICAgICAgIDxkaXYgaWQ9bG9hZGluZy1pbmRpY2F0b3IgY2xhc3M9
aGlkZGVuPgotICAgICAgICAgICAgPGltZyBpZD1zcGlubmVyIHNyYz0iaHR0cHM6Ly9zdm4ud2Vi
a2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NwaW5uZXIuZ2lmIj4KLSAgICAgICAgICAg
IDxzcGFuIGlkPWxvYWRpbmctaW5kaWNhdG9yLWxhYmVsPkxvYWRpbmcmaGVsbGlwOzwvc3Bhbj4K
LSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBpZD11cmwtcHJvbXB0LWNvbnRh
aW5lciBjbGFzcz1oaWRkZW4+Ci0gICAgICAgIDxkaXYgaWQ9dXJsLXByb21wdD4KLSAgICAgICAg
ICAgIDxwPkVudGVyIHRoZSBVUkwgb2YgYSBidWlsZCByZXN1bHRzIHBhZ2Ugb3IgbGVha3MgZmls
ZTo8L3A+Ci0gICAgICAgICAgICA8aW5wdXQgaWQ9dXJsIHR5cGU9dXJsPjxidXR0b24gb25jbGlj
az0nTGVha3NWaWV3ZXIudXJsUHJvbXB0QnV0dG9uQ2xpY2tlZChldmVudCknPkZldGNoIGxlYWtz
PC9idXR0b24+Ci0gICAgICAgICAgICA8cD5PciBjaG9vc2UgYSByZWNlbnQgYnVpbGQ6PC9wPgot
ICAgICAgICAgICAgPGRpdiBpZD1yZWNlbnQtYnVpbGRzLWNvbnRhaW5lcj4KLSAgICAgICAgICAg
ICAgICA8cCBpZD1yZWNlbnQtYnVpbGRzLWxvYWRpbmctaW5kaWNhdG9yPkxvYWRpbmcgYnVpbGRz
JmhlbGxpcDs8L3A+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9k
aXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi5pY28K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmljb24uaWNvCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi5pY28JKG5vbmV4aXN0ZW50KQpAQCAtMSAr
MCwwIEBACi0AAAEAAQAgIBAAAQAEAOgCAAAWAAAAKAAAACAAAABAAAAAAQAEAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAB0uHgApLCkAQkVDADFOMgA+YT8AWVxaAD5wPwBjgGMAcntzAI6ZjwCssa0A
wcXBANPW1ADd4N4A/P/9AAAAAAD//u7u7u7rVe7u7u7u7v///u7u7u7uUlVS3u7u7u7u7/7u7u7u
6CUiJS7u7u7u7u7u7u7u7tFV7rJb7u7u7u7u7u7u7u5RK+7lVe7u7u7u7u7u7ryXEi7a6FXu7u7u
7u7u7pEUNxIuxepV7u7u7u7u7ugRQwMSLO7lVe7u7u7u7u6hBmZkEVju0lnu7u7u7u7uIWRmYBIi
WCUe7u7u7u7u7BBGZAABFVVRru7u7u7u7uoQZkAzFSIRGO7u7u7u7u7oEGZkRhoxJTnu7u7u7u7u
6hFmZEM2fu7Enu7u7u7u7uwhNmZgK+7u7Unu7u7u7u7uURBkAL7u7u60vu7u7u7u7qIRERSe7u7u
5N7u7u7u7u7qIhGNSe7u7pfu7u7u7u7u7uqu7rau7u567u7u7u7u7u7u7u7qSZqqTu7u7u7u7u7u
7u7u7qd3REnu7u7u7u7u7u7u7u7u7uxEnu7u7u7u7u7u7u7u7u7u1Enu7u7u7u7u7u7u7u7u7u1E
nu7u7u7u7u7u7u7u7u7u1Efu7u5e7u7u7u7u7u7u7u1znu6iXe7u7u7u7u7u7u7u1EjVWu7u7u7u
7u7u7u7u7u1wWu7u7u7u7u7u7u7u7u7lW+7u7u7u7u7u7u7u7u7pJd7u7u/+7u7u7u7u7u7uhb7u
7u7v/+7u7u7u7u7u7t7u7u7v/+AAAA+AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAHAAAAHClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwJKHJldmlzaW9uIDI2ODcz
MSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCShub25leGlzdGVudCkK
QEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotVGhlIGZhdmljb25zIGFyZSBm
cm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlzIHRoZSB3ZWJzaXRlIG9mIE1h
cmsKLUphbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4KLS0tPgotPGh0
bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IlgtV2ViS2l0LUNTUCIgY29udGVudD0iZGVm
YXVsdC1zcmMgJ25vbmUnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzY3JpcHQtc3JjICdzZWxmJyBmaWxlOiBodHRwczovL3dlYmtpdC5vcmc7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1p
bmxpbmUnIGZpbGU6IGh0dHBzOi8vd2Via2l0Lm9yZzsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW1nLXNyYyAnc2VsZicgaHR0cHM6Ly93ZWJraXQub3JnIGh0dHBz
Oi8vYnVpbGQud2Via2l0Lm9yZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWVkaWEtc3JjICdzZWxmJyBodHRwczovL2J1aWxkLndlYmtpdC5vcmc7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLXNyYyAnc2VsZicgaHR0cHM6
Ly9idWlsZC53ZWJraXQub3JnIGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0LXNyYyAnc2VsZicgaHR0cHM6
Ly90cmFjLndlYmtpdC5vcmcgaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnIj4KLTx0aXRsZT5HYXJk
ZW4tTy1NYXRpYzwvdGl0bGU+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8v
d2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5dWkvMS44LjE1L3RoZW1lcy9iYXNlL2pxdWVyeS11
aS5taW4uY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL2NvbW1vbi5j
c3MiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvb25lYmFyLmNzcyI+Ci08
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9mYWlsdXJlcy5jc3MiPgotPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcmVzdWx0cy5jc3MiPgotPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvbm90aWZpY2F0aW9ucy5jc3MiPgotPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcGVyZi5jc3MiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJzdHlsZXMvcGl4ZWx6b29tZXIuY3NzIj4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlw
dCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjYuMi5t
aW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xp
YnMvanF1ZXJ5dWkvMS44LjE1L3VpL2pxdWVyeS11aS5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9j
b25maWcuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9
InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVp
bGRlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ic2NyaXB0cy91aS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9t
b2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2ZhaWx1cmVzLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25vdGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvdWkvcGVyZi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0cy91aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbnRy
b2xsZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3BpeGVsem9vbWVyLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2dhcmRlbi1vLW1hdGljLmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHls
ZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tZ3JlZW4ucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1ncmVlbi5wbmcJKHJldmlzaW9uIDI2ODcz
MSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1ncmVlbi5wbmcJKG5vbmV4aXN0
ZW50KQpAQCAtMSw1ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAABAAAAAQCAYAAAAf8/9h
AAACjUlEQVR4AaSTQ4OdMRSG+zvuh0xt29jUumPbtm3btm3bNmrb5tvU9iLOc3xmAfiv8d2FSveu
uQot7VvtZVs2nxCrX/1AWLv8gbB66Qlh5VL7I2WL5v5SgFLndlHplg2XzVqkkToZgYKT6e9G8kQ4
dKqPYU8uubwnm4j+UADVKiretO5h0IAjKs8VIn4qBK4Dlu/G2335uQL4dllhTTz3cEM8J/qVALmW
zXPEG9ZdovC7jzZ9+rDo0YFJlxbM6DCnw7pbF2Vn8uDdZoHlEeyl5WHsnE8CpBvWORg1Sr7TTOF3
oFGnOgzaVWHQpgLjNlU0XKiAQ6chyqkQhex9WBDIOnwSIFa7/ETyZDhiJ4Nh0a0Nww41Ci0qw7CV
jhZlNF2sBgBcfngB0cO+iB/whYgXe+KTgINlCx4Xn8qEU58JTDs1qCVFmLg9AqNmVTReqAIAvHz1
AtFDfnBo1kbBZDJ4R+bxJwF78snjwpMZcOwxglOPKe49uwsAuPXkxic4ot8LxtWysG/QROFkEnib
LwVkkxOJI8GIGfOHWasaPLut8fD5fQDAq9evENHrAf1KSZhQAZF97ojp9ASxYj67sD2Nd1ArOoSy
UzmwblaDcYMi3NvNMX1zDNH9PtCrkIBBuRTMKuVQNpOBI7G7QSyZz0HcEMvNWUlT49ligpITWbCs
U4JpjRyMqqRhWE7HO1gWpdPpcKzSBm8suESMmTlfFdLSYFZUxId56Nqgj3IqJKrPE/Z1GrCrUUMU
daGMwvaVGuD0BA8pLPrDUp7tw4oSV+ayMGkPYno8kTsai9yRWER0uuJQ5HbwBoLLxIgR/WUzEWd2
LnFg7IkNc4I3FbzZZ7kCqc9AG28Dca18jjTWzEQRBgBn0KzlfT/JxAAAAABJRU5ErkJgggpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2
aWNvbi1yZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNv
bi1yZWQucG5nCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zh
dmljb24tcmVkLnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDUgKzAsMCBAQAotiVBORw0KLRoKLQAA
AA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAItSURBVHgBpZMDcN8xFMdfbdt2D7Nt295h3s6cbW+H
2cZpts3att0meWny96849XsX5/t5oRHnHLqidgC2e00Icj6fIy5GRE+RQKQikS4jw+uOey+ndwot
ILtWz+DIT9QbmXuZh4SCqb29ur+mGhoSE8G4oboQka1zP3zrXjtAy85VwoyXmt39bazDw4AVZAOK
JGXs5Q/G3gFQk5AITSn/65GxJX6nH97TAZq3rwxGxPctnv7eNuHh0PLxGUhZbzoLUnVblgMgB/NB
o6E6Lh7qEn8XMMRBoeceZxiDEGN0YYOxhd4soFwYtEKKwCiHhpePwT4yGritizclZCEIqQCU0kUW
YWLZeZkqIzIBoKgAIGHAWhCaM9LBITIWCCGLDAE+Zo6OQHMzpVEXUStpZETd35SWDmaOzkAJ9dEB
RAM441qjLiJJidNvgagTMgQQiVICBisg+c1lFeK0A6RRF7Hxw0uoe3hDFx1FaeoXCA1lZTJovuEK
La5Uxf0DE+9A3WRZ2i/fALZT56mMTPYxBIvAYCj5811u+4oOQAi52lJeUFAZHwfWw8fpIBUn9kP5
iX0qo2w7jp8IpXF/oDI3tUAArioeUsKiETOQsUuOMb1tnMQpN2VmqA5MjlsEBatSmTDnfH5Wj4hL
hr9KutfuKf+ZNWAGQzxh6ezt5RLbHSwcnUAON1VWQPHvr1CZlyaeMq4b+Sa53VPW6evkniGIOB+Z
/ExM+ZkQr496m9r+M3VFreaiskYeKpVyAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9wYXJ0eXRpbWUuZ2lmCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvcGFydHl0aW1lLmdpZgkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9wYXJ0eXRpbWUuZ2lmCShub25leGlz
dGVudCkKQEAgLTEsMjE1ICswLDAgQEAKLUdJRjg5YSwBaAHVPwATaJygVZ6j1PMzo1bjk5/mLCa2
ibJqu++VstD63AhgjJ6nDRfsbFP3lGoQT3LSsdFgCi1e0/f/zI/HYQkR408t76oPollljddYbLLb
9tf0WFhxL4Wpe8z4yN31+8eiqEcm0NHcSJPL+7LKq9snhSt05+dNYM6OldWhsZMO89TZT6vVqpxl
MIzN8rPyU7brFTBa6CFA/PPRF3U5JAwgXF4kdJXA85PS8pbv2bPw1e/p3JPfd57w7v/++e76////
////If8LTkVUU0NBUEUyLjADAQAAACH5BAUUAD8ALAAAAAAsAWgBAAb/QJ9wSCwaj8ikcslsOp9I
HnRKrVqv2Kx2y71Ku9UveEwum8/otHrNbrvfcG7PN4/b7/i8fssT7/+AgYJtfT5+g4iJiouMjY6P
kHF1RJORlpeXc5VafoWYn6ChoqOkpaanqIqTPRYTEw9mOTIyGjKbdLepurtFKQu/MBNEh1cxCi0D
JiYDmxkgKSm80bxfFsALE7lZPTImJye2RCkGIiIEINLou66/dTzZYdzJMmIpBDbkIhbp+6gTBGLu
iF2J961OhnEi7j1TZIDGO36o/Dw04q5SjGFS+hTyRGcIggEnTIDzIe6eCAPQEj2AEABCBojovhzK
9qUHjxgBfVzUSYdHB/8QCE4gAJGjZiVZswaIifGAwIOUiHpAkICjJcx0AIu0G9JuVc8IETBsAOAA
AFmzIQT02eQOSYaJeVje0BEA1lWIbSdJJNZjDg8EZMuaHXwWQVtSFgLokCABwl1dem1qzAECRJ2+
9Ui4guBqwjVXFgyocFB2Qw0Ep1ErOBtBICYNJCTcCGDg8a4ezYj2+AkigiE6Bj7M6LyA82cIn1+g
5YCgOWrnKsgWNUWCREu4tiPVodyBR+UOl1MwWPfLWnlrEABsUKEihPsaGE7DRxDCgYrurp/k1/KA
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
aRjs9t29EeAD50wNjPXSTa2JPvfnQlDnG4CI+O69ce4AePjXSz4CH/SF/I7Wj+3jhK0KLac68l6b
Ax20AmgN8HaQGZghSDbaQcEt5yzQ7xx/AmBqqbNODROdx6UtET5g1mjN6UVQ5e/RmX8uA0buAA5+
1pa6BNETATyQwzJRCi05YPJVcOIrwQMCQOdTDuxGEB7/MjAGhBoBBpQZGD+TVD4aEK8SO58NPVDl
lo45P5+xsRrsVS3shMkC8R50SgAAQXej9OfjAY8Z0jEeYG4LCKC4GECp+lD3EuEghX/qwh7s3Y7t
PBABBXhsEdBBPxDnIQDoRWjwY1GsmKEBDb8FQb714zEAYMr0/f7YMj8gGsADwwGAPa70YSjaXZ74
JYzBZpGfQgCA9ffnJrDqCi2wvAZkoz6ehgBoAnk+z24T60coBE8PACcQ/YAtQMRBSLY92r4v/RRM
lZbq6D4ekhiAsdKgH9ptqdAv/uO0/ANgB0a4AQZUL7ZP9JzeQdoPBD/hkFg0HpFJ5ZLZdD6hUemU
Ci3l8YSsAwcg+zthl5GBbCg7Rapp9Zrddr/hSt5AuBmY6CY0MyL4ycb0OuIICw0PERMziHL+BugG
Nk58mnx4QP5U0DQSOz0/QUOLeE5+HvP2KnNyBPo0FMBEZWdpayt5IrYATBqhfHz2amyHiYtnOxBq
TvRin3rAfo2lp6nfangUcpqrubu9CRuxELAon8q/0dPRB4ssrdTh49F5en4QzuXz9ff5+/3/AQYU
2GbbwIFBAAA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbmRleC5odG1sCShub25leGlz
dGVudCkKQEAgLTEsNjEgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6
Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgot
PGhlYWQ+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvVGVzdEZhaWx1
cmVzLmNzcyI+PC9saW5rPgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWph
eC9saWJzL2pxdWVyeS9qcXVlcnktMS42LjIubWluLmpzIj48L3NjcmlwdD4KLQotICAgIDxzY3Jp
cHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNj
cmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0Lmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4K
LQotICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9InNjcmlwdHMvTmV3QnVnRm9ybS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9InNjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtLmpzIj48L3NjcmlwdD4KLQotICAg
IDxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0ic2NyaXB0cy9CdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNj
cmlwdHMvQnVpbGRlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxh
a3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJzY3Jp
cHRzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJzY3JpcHRzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9InNjcmlwdHMvT1JXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJzY3JpcHRzL1BlcnNpc3RlbnRDYWNoZS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9InNjcmlwdHMvVmlld0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJzY3JpcHRzL1dlYktpdEJ1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dD4KLSAgICAgICAgdmFyIHZpZXdDb250cm9sbGVyID0gbmV3IFZpZXdDb250cm9sbGVyKG5ldyBX
ZWJLaXRCdWlsZGJvdCgpKTsKLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPC9ib2R5
PgotPC9odG1sPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCShub25leGlzdGVudCkKQEAgLTEs
NDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFy
ZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRs
ZT5HYXJkZW4tTy1NYXRpYyBSZWJhc2VsaW5lPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0ic3R5bGVzL21haW4uY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
aHR0cHM6Ly93ZWJraXQub3JnL2FqYXgvbGlicy9qcXVlcnl1aS9qcXVlcnktdWktMS44LjE1LmNz
cyI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWph
eC9saWJzL2pxdWVyeS9qcXVlcnktMS42LjIubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS91aS9qcXVlcnkt
dWkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL25ldC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jaGVj
a291dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9yZXN1bHRzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJzY3JpcHRzL3VpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
bW9kZWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJvbGxlcnMuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJvbGxlcnMvcmViYXNlbGluZS5q
cyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcnVu
LXVuaXR0ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRl
c3RzLmh0bWwJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5pdHRl
c3RzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+
Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLS0tPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4v
Li4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuY3NzIj4KLTxz
Y3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS42
LjIubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWph
eC9saWJzL2pxdWVyeXVpL2pxdWVyeS11aS0xLjguMTUubWluLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9Tb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9xdW5pdC9xdW5p
dC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMSBpZD0icXVuaXQtaGVhZGVyIj5U
ZXN0RmFpbHVyZXMgSmF2YVNjcmlwdCBVbml0IFRlc3RzPC9oMT4KLTxoMiBpZD0icXVuaXQtYmFu
bmVyIj48L2gyPgotPGRpdiBpZD0icXVuaXQtdGVzdHJ1bm5lci10b29sYmFyIj48L2Rpdj4KLTxo
MiBpZD0icXVuaXQtdXNlckFnZW50Ij48L2gyPgotPG9sIGlkPSJxdW5pdC10ZXN0cyI+PC9vbD4K
LQotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcmVzdWx0cy5jc3MiPgotCi08
c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlX3VuaXR0
ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRz
L3RyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1Z3pp
bGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1Z3ppbGxhX3VuaXR0ZXN0
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9idWlsZGVycy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMiPjwvc2NyaXB0
PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InNjcmlwdHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvcmVz
dWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvYWN0aW9ucy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9mYWlsdXJlcy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0cy91aS9mYWlsdXJlc191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2Ny
aXB0cy9jb250cm9sbGVycy5qcyI+PC9zY3JpcHQ+IDwhLS0gVGhpcyBzY3JpcHQgaXMgc2xpZ2h0
bHkgb2Ygb3JkZXIuIC0tPgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0c191bml0dGVz
dHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWlfdW5pdHRlc3RzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL21vZGVsLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHRzL21vZGVsX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNy
Yz0ic2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJz
Y3JpcHRzL3VpL25vdGlmaWNhdGlvbnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL3VpL3BlcmYuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
dWkvcGVyZl91bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29u
dHJvbGxlcnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQotPCEtLSBGSVhNRTogV2Ugc2hvdWxk
IGhhdmUgdGVzdHMgZm9yIHRoZXNlIGZpbGVzISAtLT4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1
Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1dlYktpdEJ1Z3ppbGxh
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMvVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1V0aWxpdGllc191bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9OZXdCdWdGb3JtLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHRzL05ld0J1Z0Zvcm1fdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQot
PHNjcmlwdCBzcmM9InNjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3Rz
LmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxha3lUZXN0QnVnRm9ybS5q
cyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtX3VuaXR0
ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0VGVz
dERldGVjdG9yLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0
VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL0J1aWxkYm90LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxkYm90
X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxkZXIu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVpbGRlcl91bml0dGVzdHMuanMi
Pjwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9CdWd6aWxsYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9C
dWd6aWxsYS5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
QnVnemlsbGEuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
dmFyIGJ1Z3ppbGxhID0gYnVnemlsbGEgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFyIGtP
cGVuU3RhdHVzZXMgPSB7Ci0gICAgVU5DT05GSVJNRUQ6IHRydWUsCi0gICAgTkVXOiB0cnVlLAot
ICAgIEFTU0lHTkVEOiB0cnVlLAotICAgIFJFT1BFTkVEOiB0cnVlLAotfTsKLQotZnVuY3Rpb24g
Y3JlYXRlRGV0YWNoZWRGcmFnbWVudChodG1sRnJhZ21lbnQpCi17Ci0gICAgLy8gU3RlcCAxOiBD
cmVhdGUgYSBkZXRhY2hlZCBEb2N1bWVudCB0byBwZXJmb3JtIHRoZSBwYXJzaW5nLgotICAgIHZh
ciBkZXRhY2hlZERvY3VtZW50ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERv
Y3VtZW50KCk7Ci0KLSAgICAvLyBTdGVwIDI6IENyZWF0ZSBhIGRldGFjaGVkIEVsZW1lbnQgYXNz
b2NpYXRlZCB3aXRoIHRoZSBkZXRhY2hlZCBEb2N1bWVudC4KLSAgICB2YXIgY29udGFpbmVyID0g
ZGV0YWNoZWREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIC8vIFN0ZXAgMzog
UHVsbCB0aGUgdHJpZ2dlci4KLSAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbEZyYWdtZW50
OwotICAgIHJldHVybiBjb250YWluZXI7Ci19Ci0KLXZhciBnX3NlYXJjaENhY2hlID0gbmV3IGJh
c2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7Ci0gICAgdmFy
IHVybCA9IGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2J1Z2xpc3QuY2dpPycgKyAkLnBhcmFtKHsK
LSAgICAgICAgY3R5cGU6ICdyc3MnLAotICAgICAgICBvcmRlcjogJ2J1Z3MuYnVnX2lkIGRlc2Mn
LAotICAgICAgICBxdWlja3NlYXJjaDogcXVlcnksCi0gICAgfSk7Ci0KLSAgICBuZXQuZ2V0KHVy
bCwgZnVuY3Rpb24ocmVzcG9uc2VYTUwpIHsKLSAgICAgICAgdmFyIGVudHJpZXMgPSByZXNwb25z
ZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW50cnknKTsKLSAgICAgICAgdmFyIHJlc3VsdHMg
PSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHsKLSAg
ICAgICAgICAgIHZhciBodG1sRnJhZ21lbnQgPSBlbnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgn
c3VtbWFyeScpWzBdLnRleHRDb250ZW50OwotICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0gY3Jl
YXRlRGV0YWNoZWRGcmFnbWVudChodG1sRnJhZ21lbnQpOwotICAgICAgICAgICAgdmFyIHN0YXR1
c1JvdyA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RyLmJ6X2ZlZWRfYnVnX3N0YXR1cycpOwot
ICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0aXRsZTogZW50cnkuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQsCi0gICAgICAgICAgICAgICAg
dXJsOiBlbnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWQnKVswXS50ZXh0Q29udGVudCwKLSAg
ICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c1Jvdy5jZWxsc1sxXS50ZXh0Q29udGVudCwKLSAg
ICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTsKLSAg
ICB9KTsKLX0pOwotCi1idWd6aWxsYS5idWdVUkwgPSBmdW5jdGlvbihidWdOdW1iZXIpCi17Ci0g
ICAgcmV0dXJuIGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL3Nob3dfYnVnLmNnaT9pZD0nICsgYnVn
TnVtYmVyOwotfTsKLQotYnVnemlsbGEucXVpY2tTZWFyY2ggPSBmdW5jdGlvbihxdWVyeSwgY2Fs
bGJhY2spCi17Ci0gICAgZ19zZWFyY2hDYWNoZS5nZXQocXVlcnksIGNhbGxiYWNrKTsKLX07Ci0K
LWJ1Z3ppbGxhLmlzT3BlblN0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cykKLXsKLSAgICByZXR1cm4g
c3RhdHVzIGluIGtPcGVuU3RhdHVzZXM7Ci19OwotCi0vLyBUaGlzIHZhbHVlIGlzIGJ1aWx0LWlu
IHRvIGFsbCBCdWd6aWxsYSBpbnN0YWxsYXRpb25zLiBTZWUgPGh0dHA6Ly93ZWJraXQub3JnL2Iv
NjE2NjA+LgotYnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCA9IDI1NTsKLQotfSkoKTsK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyNjg3MzEpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdC5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBCdWlsZGJvdChiYXNlVVJMKSB7Ci0g
ICAgdGhpcy5iYXNlVVJMID0gYmFzZVVSTDsKLSAgICB0aGlzLl9jYWNoZSA9IHt9OwotfQotCi1C
dWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0gICAgX2J1aWxkZXJzOiB7fSwKLSAgICBfcmVzdWx0c0Rp
cmVjdG9yeTogJ3Jlc3VsdHMvJywKLQotICAgIGJ1aWxkVVJMOiBmdW5jdGlvbihidWlsZGVyTmFt
ZSwgYnVpbGROYW1lKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAnYnVpbGRlcnMv
JyArIGJ1aWxkZXJOYW1lICsgJy9idWlsZHMvJyArIGJ1aWxkTmFtZTsKLSAgICB9LAotCi0gICAg
YnVpbGRlck5hbWVkOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgIGlmICghKG5hbWUgaW4gdGhp
cy5fYnVpbGRlcnMpKQotICAgICAgICAgICAgdGhpcy5fYnVpbGRlcnNbbmFtZV0gPSBuZXcgQnVp
bGRlcihuYW1lLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkZXJzW25hbWVdOwot
ICAgIH0sCi0KLSAgICBnZXRUZXN0ZXJzOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICB2
YXIgY2FjaGVLZXkgPSAnZ2V0VGVzdGVycyc7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlz
Ll9jYWNoZSkgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fYnVpbGRlcnNGb3JOYW1lcyh0
aGlzLl9jYWNoZVtjYWNoZUtleV0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2UodGhpcy5iYXNl
VVJMICsgdGhpcy5fcmVzdWx0c0RpcmVjdG9yeSwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAg
ICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgICAg
IHJvb3QuaW5uZXJIVE1MID0geGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIHZhciBuYW1l
cyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkOmZp
cnN0LWNoaWxkID4gYSA+IGInKSwgZnVuY3Rpb24oZWxlbSkgewotICAgICAgICAgICAgICAgIHJl
dHVybiBlbGVtLmlubmVyVGV4dC5yZXBsYWNlKC9cLyQvLCAnJyk7Ci0gICAgICAgICAgICB9KTsK
LQotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gbmFtZXM7Ci0gICAgICAgICAg
ICBjYWxsYmFjayhzZWxmLl9idWlsZGVyc0Zvck5hbWVzKG5hbWVzKSk7Ci0gICAgICAgIH0pOwot
ICAgIH0sCi0KLSAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHRoZSBmb2xs
b3dpbmcgcHJvcGVydGllczoKLSAgICAvLyAgIHJldmlzaW9uOiBzb3VyY2UgcmV2aXNpb24gbnVt
YmVyIGZvciB0aGlzIGJ1aWxkIChpbnRlZ2VyKQotICAgIC8vICAgYnVpbGROdW1iZXI6IG51bWJl
ciBvZiB0aGlzIGJ1aWxkIChpbnRlZ2VyKQotICAgIHBhcnNlQnVpbGROYW1lOiBmdW5jdGlvbihi
dWlsZE5hbWUpIHsKLSAgICAgICAgdGhyb3cgIkRlcml2ZWQgY2xhc3NlcyBtdXN0IGltcGxlbWVu
dCI7Ci0gICAgfSwKLQotICAgIHJlc3VsdHNEaXJlY3RvcnlVUkw6IGZ1bmN0aW9uKGJ1aWxkZXJO
YW1lLCBidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArIHRoaXMuX3Jl
c3VsdHNEaXJlY3RvcnkgKyBlbmNvZGVVUklDb21wb25lbnQoYnVpbGRlck5hbWUpICsgJy8nICsg
ZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkTmFtZSkgKyAnLyc7Ci0gICAgfSwKLQotICAgIF9idWls
ZGVyc0Zvck5hbWVzOiBmdW5jdGlvbihuYW1lcykgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7
Ci0gICAgICAgIHJldHVybiBuYW1lcy5tYXAoZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gc2VsZi5i
dWlsZGVyTmFtZWQobmFtZSkgfSk7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9CdWlsZGJvdF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvQnVpbGRib3RfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdF91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50
KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUo
J0J1aWxkYm90Jyk7Ci0KLXRlc3QoJ3Jlc3VsdHNEaXJlY3RvcnlVUkwgaXMgVVJJLWVuY29kZWQn
LCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYnVpbGRib3QgPSBuZXcgQnVpbGRib3QoJ2h0dHA6
Ly9idWlsZC5leGFtcGxlLmNvbS8nKTsKLSAgICBlcXVhbChidWlsZGJvdC5yZXN1bHRzRGlyZWN0
b3J5VVJMKCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ3IxMCAoNSknKSwgJ2h0dHA6Ly9i
dWlsZC5leGFtcGxlLmNvbS9yZXN1bHRzL1dpbmRvd3MlMjA3JTIwUmVsZWFzZSUyMChUZXN0cykv
cjEwJTIwKDUpLycpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9CdWlsZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxk
ZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxk
ZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0
aW9uIEJ1aWxkZXIobmFtZSwgYnVpbGRib3QpIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwotICAg
IHRoaXMuYnVpbGRib3QgPSBidWlsZGJvdDsKLSAgICB0aGlzLl9jYWNoZSA9IHt9OwotfQotCi1C
dWlsZGVyLnByb3RvdHlwZSA9IHsKLSAgICBidWlsZFVSTDogZnVuY3Rpb24oYnVpbGROYW1lKSB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LmJ1aWxkVVJMKHRoaXMubmFtZSwgYnVpbGRO
YW1lKTsKLSAgICB9LAotCi0gICAgZmFpbHVyZURpYWdub3Npc1RleHRBbmRVUkw6IGZ1bmN0aW9u
KGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpIHsKLSAgICAgICAgdmFyIHVybFN0ZW0g
PSB0aGlzLnJlc3VsdHNEaXJlY3RvcnlVUkwoYnVpbGROYW1lKSArIHRlc3ROYW1lLnJlcGxhY2Uo
L1wuW14uXSskLywgJycpOwotICAgICAgICB2YXIgZGlhZ25vc3RpY0luZm8gPSB7Ci0gICAgICAg
ICAgICBmYWlsOiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3ByZXR0eSBkaWZmJywKLSAgICAg
ICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0eS1kaWZmLmh0bWwnLAotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIGZsYWt5OiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3ByZXR0
eSBkaWZmIChmbGFreSknLAotICAgICAgICAgICAgICAgIHVybDogdXJsU3RlbSArICctcHJldHR5
LWRpZmYuaHRtbCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgdGltZW91dDogewotICAg
ICAgICAgICAgICAgIHRleHQ6ICd0aW1lZCBvdXQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgIGNyYXNoOiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ2NyYXNoIGxvZycsCi0gICAgICAg
ICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1jcmFzaC1sb2cudHh0JywKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAnd2VicHJvY2VzcyBjcmFzaCc6IHsKLSAgICAgICAgICAgICAgICB0ZXh0
OiAnd2ViIHByb2Nlc3MgY3Jhc2ggbG9nJywKLSAgICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0g
KyAnLWNyYXNoLWxvZy50eHQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgfTsKLQotICAgICAg
ICByZXR1cm4gZGlhZ25vc3RpY0luZm9bdGVzdFJlc3VsdC5mYWlsdXJlVHlwZV07Ci0gICAgfSwK
LQotICAgIGdldEJ1aWxkTmFtZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgIHRoaXMu
X2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeSh0aGlzLmJ1aWxkYm90LmJhc2VVUkwg
KyAncmVzdWx0cy8nICsgdGhpcy5uYW1lLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIGdldE1v
c3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcjogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAg
ICAgdmFyIGNhY2hlS2V5ID0gJ2dldE1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcic7Ci0g
ICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9jYWNoZSkgewotICAgICAgICAgICAgY2FsbGJh
Y2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5i
dWlsZGJvdC5iYXNlVVJMICsgJ2pzb24vYnVpbGRlcnMvJyArIHNlbGYubmFtZSwgZnVuY3Rpb24o
eGhyKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNlVGV4
dCk7Ci0KLSAgICAgICAgICAgIHZhciBjdXJyZW50QnVpbGRzID0ge307Ci0gICAgICAgICAgICBp
ZiAoJ2N1cnJlbnRCdWlsZHMnIGluIGRhdGEpCi0gICAgICAgICAgICAgICAgZGF0YS5jdXJyZW50
QnVpbGRzLmZvckVhY2goZnVuY3Rpb24oYnVpbGROdW1iZXIpIHsgY3VycmVudEJ1aWxkc1tidWls
ZE51bWJlcl0gPSB0cnVlIH0pOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5jYWNo
ZWRCdWlsZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
ZGF0YS5jYWNoZWRCdWlsZHNbaV0gaW4gY3VycmVudEJ1aWxkcykKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0gPSBk
YXRhLmNhY2hlZEJ1aWxkc1tpXTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhLmNhY2hl
ZEJ1aWxkc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0gPSAtMTsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHNlbGYuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9u
KHhocikgewotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gLTE7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhzZWxmLl9jYWNoZVtjYWNoZUtleV0pOwotICAgICAgICB9KTsKLSAgICB9
LAotCi0gICAgZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHM6IGZ1bmN0aW9uKGJ1aWxkTnVtYmVyLCBj
YWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSB0aGlzLm5hbWUgKyAnX2dldE51bWJl
ck9mRmFpbGluZ1Rlc3RzXycgKyBidWlsZE51bWJlcjsKLSAgICAgICAgY29uc3QgY3VycmVudENh
Y2hlZERhdGFWZXJzaW9uID0gMzsKLSAgICAgICAgaWYgKFBlcnNpc3RlbnRDYWNoZS5jb250YWlu
cyhjYWNoZUtleSkpIHsKLSAgICAgICAgICAgIHZhciBjYWNoZWREYXRhID0gUGVyc2lzdGVudENh
Y2hlLmdldChjYWNoZUtleSk7Ci0gICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS52ZXJzaW9uID09
PSBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24pIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhj
YWNoZWREYXRhLmZhaWx1cmVDb3VudCwgY2FjaGVkRGF0YS50b29NYW55RmFpbHVyZXMpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAg
IHZhciByZXN1bHQgPSB7IGZhaWx1cmVDb3VudDogLTEsIHRvb01hbnlGYWlsdXJlczogZmFsc2Us
IHZlcnNpb246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwotCi0gICAgICAgIHZhciBzZWxm
ID0gdGhpczsKLSAgICAgICAgc2VsZi5fZ2V0QnVpbGRKU09OKGJ1aWxkTnVtYmVyLCBmdW5jdGlv
bihkYXRhKSB7Ci0gICAgICAgICAgICB2YXIgbGF5b3V0VGVzdFN0ZXAgPSBkYXRhLnN0ZXBzLmZp
bmRGaXJzdChmdW5jdGlvbihzdGVwKSB7IHJldHVybiBzdGVwLm5hbWUgPT09ICdsYXlvdXQtdGVz
dCc7IH0pOwotICAgICAgICAgICAgaWYgKCFsYXlvdXRUZXN0U3RlcCkgewotICAgICAgICAgICAg
ICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBp
ZiAoISgnaXNGaW5pc2hlZCcgaW4gbGF5b3V0VGVzdFN0ZXApKSB7Ci0gICAgICAgICAgICAgICAg
Ly8gcnVuLXdlYmtpdC10ZXN0cyBuZXZlciBldmVuIHJhbiwgb3IgZGlkbid0IGZpbmlzaCBydW5u
aW5nLgotICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3Vs
dCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0
LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICBpZiAoISgncmVzdWx0cycgaW4gbGF5b3V0VGVzdFN0ZXApIHx8IGxh
eW91dFRlc3RTdGVwLnJlc3VsdHNbMF0gPT09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoISgn
dGltZXMnIGluIGxheW91dFRlc3RTdGVwKSB8fCBsYXlvdXRUZXN0U3RlcC50aW1lcy5sZW5ndGgg
PCAyIHx8IGxheW91dFRlc3RTdGVwLnRpbWVzWzFdIC0gbGF5b3V0VGVzdFN0ZXAudGltZXNbMF0g
PCBzZWxmLl9taW5pbXVtU3VjY2Vzc2Z1bExheW91dFRlc3RTdGVwUnVuVGltZSkgewotICAgICAg
ICAgICAgICAgICAgICAvLyBFaXRoZXIgc29tZXRoaW5nIGNhdXNlZCB0aGUgc3RhcnQvc3RvcCB0
aW1lcyBub3QgdG8gYmUgcmVjb3JkZWQsIG9yCi0gICAgICAgICAgICAgICAgICAgIC8vIHJ1bi13
ZWJraXQtdGVzdHMgcmFuIHNvIHF1aWNrbHkgdGhhdCB3ZSBjYW4ndCBiZWxpZXZlIHRoZXJlIHdh
c24ndCBhbiBlcnJvcgotICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiwgYSBidWcgaW4gdGhl
IHNjcmlwdCB0aGF0IG1hZGUgaXQgbm90IGZpbmQgYW55IHRlc3RzIHRvIHJ1bikuCi0gICAgICAg
ICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29N
YW55RmFpbHVyZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KLSAgICAgICAgICAg
ICAgICByZXN1bHQuZmFpbHVyZUNvdW50ID0gMDsKLSAgICAgICAgICAgICAgICBQZXJzaXN0ZW50
Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGxheW91dFRlc3RT
dGVwLnJlc3VsdHNbMF0gPT09IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGJ1aWxkIHN0
ZXAgd2FzIGludGVycnVwdGVkIChwZXJoYXBzIGR1ZSB0byB0aGUgYnVpbGQgc2xhdmUgcmVzdGFy
dGluZykuCi0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVz
dWx0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50LCByZXN1
bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdChsYXlvdXRUZXN0U3Rl
cC5yZXN1bHRzWzFdWzBdKSkKLSAgICAgICAgICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVz
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgcmVzdWx0LmZhaWx1cmVDb3VudCA9IGxheW91dFRlc3RT
dGVwLnJlc3VsdHNbMV0ucmVkdWNlKGZ1bmN0aW9uKHN1bSwgb3V0cHV0TGluZSkgewotICAgICAg
ICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKylccy8uZXhlYyhvdXRwdXRMaW5lKTsKLSAgICAg
ICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwot
ICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IGxlYWtzLCBuZXcgdGVzdHMsIG9yIHBhc3Nl
cyBhcyBmYWlsdXJlcy4KLSAgICAgICAgICAgICAgICBpZiAob3V0cHV0TGluZS5jb250YWlucygn
bGVhaycpIHx8IG91dHB1dExpbmUuY29udGFpbnMoJ3dlcmUgbmV3JykgfHwgb3V0cHV0TGluZS5j
b250YWlucygnbmV3IHBhc3NlcycpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwot
ICAgICAgICAgICAgICAgIHJldHVybiBzdW0gKyBwYXJzZUludChtYXRjaFsxXSwgMTApOwotICAg
ICAgICAgICAgfSwgMCk7Ci0KLSAgICAgICAgICAgIGlmICghcmVzdWx0LmZhaWx1cmVDb3VudCkg
ewotICAgICAgICAgICAgICAgIC8vIHJ1bi13ZWJraXQtdGVzdHMgZXhpdGVkIHdpdGggYSBub24t
emVybyBleGl0IHN0YXR1cywgYnV0IHdlCi0gICAgICAgICAgICAgICAgLy8gZGlkbid0IGZpbmQg
YW55IG91dHB1dCBhYm91dCB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KLSAgICAgICAgICAg
ICAgICAvLyBTb21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4sIHJ1bi13ZWJraXQt
dGVzdHMgdGltZWQKLSAgICAgICAgICAgICAgICAvLyBvdXQgYW5kIHdhcyBraWxsZWQgYnkgYnVp
bGRib3QpLgotICAgICAgICAgICAgICAgIHJlc3VsdC5mYWlsdXJlQ291bnQgPSAtMTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVz
dWx0KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50
b29NYW55RmFpbHVyZXMpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgZ2V0T2xkQnVpbGRO
YW1lczogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgdGhpcy5fZ2V0QnVpbGROYW1lc0Zy
b21SZXN1bHRzRGlyZWN0b3J5KHRoaXMuYnVpbGRib3QuYmFzZVVSTCArICdvbGQtcmVzdWx0cy8n
ICsgdGhpcy5uYW1lLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIHJlc3VsdHNEaXJlY3RvcnlV
Ukw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJvdC5y
ZXN1bHRzRGlyZWN0b3J5VVJMKHRoaXMubmFtZSwgYnVpbGROYW1lKTsKLSAgICB9LAotCi0gICAg
cmVzdWx0c1BhZ2VVUkw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gdGhp
cy5yZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkTmFtZSkgKyAncmVzdWx0cy5odG1sJzsKLSAgICB9
LAotCi0gICAgX2dldEJ1aWxkSlNPTjogZnVuY3Rpb24oYnVpbGROdW1iZXIsIGNhbGxiYWNrKSB7
Ci0gICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRCdWlsZEpTT05fJyArIGJ1aWxkTnVtYmVyOwot
ICAgICAgICBpZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHRoaXMuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGdldFJlc291cmNlKHNlbGYu
YnVpbGRib3QuYmFzZVVSTCArICdqc29uL2J1aWxkZXJzLycgKyBzZWxmLm5hbWUgKyAnL2J1aWxk
cy8nICsgYnVpbGROdW1iZXIsIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgdmFyIGRhdGEg
PSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgc2VsZi5fY2FjaGVb
Y2FjaGVLZXldID0gZGF0YTsKLSAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEpOwotICAgICAgICB9
KTsKLSAgICB9LAotCi0gICAgX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeTogZnVu
Y3Rpb24oZGlyZWN0b3J5VVJMLCBjYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSAn
X2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeS4nICsgZGlyZWN0b3J5VVJMOwotICAg
ICAgICBpZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHRoaXMuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgZnVuY3Rpb24gYnVpbGROYW1l
c0Zyb21EaXJlY3RvcnlYSFIoeGhyKSB7Ci0gICAgICAgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgICAgIHJvb3QuaW5uZXJIVE1MID0geGhy
LnJlc3BvbnNlVGV4dDsKLQotICAgICAgICAgICAgdmFyIGJ1aWxkTmFtZXMgPSBBcnJheS5wcm90
b3R5cGUubWFwLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd0ZDpmaXJzdC1jaGlsZCA+IGEg
PiBiJyksIGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5pbm5l
clRleHQucmVwbGFjZSgvXC8kLywgJycpOwotICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0aW9u
KGZpbGVuYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnVpbGRib3QucGFyc2VC
dWlsZE5hbWUoZmlsZW5hbWUpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBidWlsZE5h
bWVzLnJldmVyc2UoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxkTmFtZXM7Ci0gICAgICAg
IH0KLQotICAgICAgICBnZXRSZXNvdXJjZShkaXJlY3RvcnlVUkwsIGZ1bmN0aW9uKHhocikgewot
ICAgICAgICAgICAgdmFyIGJ1aWxkTmFtZXMgPSBidWlsZE5hbWVzRnJvbURpcmVjdG9yeVhIUih4
aHIpOwotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gYnVpbGROYW1lczsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKGJ1aWxkTmFtZXMpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0g
ICAgLy8gQW55IHN1Y2Nlc3NmdWwgcnVucyBvZiBydW4td2Via2l0LXRlc3RzIHRoYXQgdG9vayBs
ZXNzIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2Vjb25kcyBhcmUKLSAgICAvLyBhc3N1bWVkIHRvIGJl
IGVycm9ycy4KLSAgICBfbWluaW11bVN1Y2Nlc3NmdWxMYXlvdXRUZXN0U3RlcFJ1blRpbWU6IDIw
LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3RzLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3Rz
LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGVy
X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI2OSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoIkJ1aWxkZXIiKTsKLQotZnVuY3Rpb24gcnVuR2V0
TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBjYWxsYmFjaykgewotICAgIHZhciBt
b2NrQnVpbGRib3QgPSB7fTsKLSAgICBtb2NrQnVpbGRib3QuYmFzZVVSTCA9ICdodHRwOi8vZXhh
bXBsZS5jb20vJzsKLQotICAgIHZhciBidWlsZGVyID0gbmV3IEJ1aWxkZXIoJ3Rlc3QgYnVpbGRl
cicsIG1vY2tCdWlsZGJvdCk7Ci0KLSAgICB2YXIgcmVhbEdldFJlc291cmNlID0gd2luZG93Lmdl
dFJlc291cmNlOwotICAgIHdpbmRvdy5nZXRSZXNvdXJjZSA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBtb2NrWEhSID0ge307Ci0g
ICAgICAgIG1vY2tYSFIucmVzcG9uc2VUZXh0ID0gSlNPTi5zdHJpbmdpZnkoanNvbkRhdGEpOwot
Ci0gICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgZm9yIHRoaXMgY2FsbGJhY2sg
dG8gaGFwcGVuCi0gICAgICAgIC8vIGFzeW5jaHJvbm91c2x5LCB0byBtYXRjaCB3aGF0IGhhcHBl
bnMgZm9yIHJlYWwgcmVxdWVzdHMuCi0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhtb2NrWEhSKTsK
LSAgICB9OwotCi0gICAgLy8gRklYTUU6IEl0J3MgbGFtZSB0byBiZSBtb2RpZnlpbmcgc2luZ2xl
dG9ucyBsaWtlIHRoaXMuIFdlIHNob3VsZCBnZXQgcmlkCi0gICAgLy8gb2Ygb3VyIHNpbmdsZXRv
biB1c2FnZSBlbnRpcmVseSEKLSAgICBvayghKCJQZXJzaXN0ZW50Q2FjaGUiIGluIHdpbmRvdykp
OwotICAgIHdpbmRvdy5QZXJzaXN0ZW50Q2FjaGUgPSB7Ci0gICAgICAgIGNvbnRhaW5zOiBmdW5j
dGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkgeyB9LAot
ICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyB9LAotICAgIH07Ci0KLSAgICBidWlsZGVyLmdldE51
bWJlck9mRmFpbGluZ1Rlc3RzKDEsIGNhbGxiYWNrKTsKLQotICAgIHdpbmRvdy5nZXRSZXNvdXJj
ZSA9IHJlYWxHZXRSZXNvdXJjZTsKLSAgICBlcXVhbCh3aW5kb3cuZ2V0UmVzb3VyY2UsIHJlYWxH
ZXRSZXNvdXJjZSk7Ci0gICAgZGVsZXRlIHdpbmRvdy5QZXJzaXN0ZW50Q2FjaGU7Ci19Ci0KLXRl
c3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIHNob3VsZG4ndCBpbmNsdWRlIGxlYWtzIiwgNCwg
ZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBzOiBbCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5pc2hlZDogdHJ1ZSwKLSAgICAgICAg
ICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgbmFtZTogJ2xheW91dC10
ZXN0JywKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBbCi0gICAgICAgICAgICAgICAgICAgIDIs
Ci0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICIyMTc4IHRv
dGFsIGxlYWtzIGZvdW5kISIsIAotICAgICAgICAgICAgICAgICAgICAgICAgIjIgdGVzdCBjYXNl
cyAoPDElKSBoYWQgaW5jb3JyZWN0IGxheW91dCIsIAotICAgICAgICAgICAgICAgICAgICAgICAg
IjIgdGVzdCBjYXNlcyAoPDElKSBjcmFzaGVkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwKLSAg
ICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAgICAg
ICAgICAgIDEzMTA1OTkyMDQuMTIzMTIyOSwKLSAgICAgICAgICAgICAgICAgICAgMTMxMDYwMDE1
Mi45NzM2NTksCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAgICAgICAgXSwK
LSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBm
dW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICBlcXVhbChm
YWlsdXJlQ291bnQsIDQpOwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZhbHNlKTsK
LSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyBkZXRlY3RzIHNw
dXJpb3VzIHJ1bi13ZWJraXQtdGVzdHMgZmFpbHVyZXMiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBj
b25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6
IHRydWUsIAotICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAgICAg
ICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgICAgMiwgCi0gICAgICAgICAgICAg
ICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJsYXlvdXQtdGVzdCIKLSAgICAgICAg
ICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHN0ZXBf
bnVtYmVyOiA3LCAKLSAgICAgICAgICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAgICAgICAgICAg
ICJsYXlvdXQtdGVzdCIKLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICB0aW1l
czogWwotICAgICAgICAgICAgICAgICAgICAxMzEwNDM3NzM2LjAwNDk0LCAKLSAgICAgICAgICAg
ICAgICAgICAgMTMxMDQ0MDExOC4wMzgwMjMKLSAgICAgICAgICAgICAgICBdLAotICAgICAgICAg
ICAgfSwgCi0gICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rl
c3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMp
IHsKLSAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFsKHRvb01h
bnlGYWlsdXJlcywgZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9mRmFp
bGluZ1Rlc3RzIHVuZGVyc3RhbmRzIE5SV1QgZXhpdGluZyBlYXJseSBkdWUgdG8gdG9vIG1hbnkg
ZmFpbHVyZXMiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAg
ICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0
cnVlLCAKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAotICAgICAgICAgICAgICAg
IG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAg
ICAgICAgICAgICAgIDIsIAotICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAg
ICAgICIyMDExLTA3LTEzIDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5H
IEV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0
cyBydW4uIiwgCi0gICAgICAgICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKLSAgICAgICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJl
cjogNCwgCi0gICAgICAgICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAiMjAx
MS0wNy0xMyAwNDozODo0NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0aW5n
IGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMgYW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVuLiIs
IAotICAgICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgotICAgICAgICAgICAgICAgIF0sIAot
ICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEzMTA1NTcxMTUu
NzkzMDgyLCAKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzEyOS44MzIxMDQKLSAgICAgICAg
ICAgICAgICBdCi0gICAgICAgICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVu
R2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291
bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDIwKTsK
LSAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1cmVzLCB0cnVlKTsKLSAgICB9KTsKLX0pOwotCi10
ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgYnVpbGQgc3RlcCBpbnRlcnJ1cHRp
b25zIGFzIGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0gewot
ICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmluaXNo
ZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLAotICAgICAgICAgICAg
ICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsCi0gICAgICAgICAgICAgICAgcmVzdWx0czogWwotICAg
ICAgICAgICAgICAgICAgNCwKLSAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAg
ICAgICAiaW50ZXJydXB0ZWQiLAotICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAg
IF0sCi0gICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDUsCi0gICAgICAgICAgICAgICAgdGV4
dDogWwotICAgICAgICAgICAgICAgICAgICAibGF5b3V0LXRlc3QiLAotICAgICAgICAgICAgICAg
ICAgICAiaW50ZXJydXB0ZWQiLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
dGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU5OTIwNC4xMjMxMjI5LAotICAgICAg
ICAgICAgICAgICAgICAxMzEwNjAwMTUyLjk3MzY1OSwKLSAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICB9LAotICAgICAgICBdLAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZhaWxp
bmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1
cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgLTEpOwotICAgICAgICBlcXVhbCh0
b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1iZXJP
ZkZhaWxpbmdUZXN0cyB0cmVhdHMgdW5maW5pc2hlZCB0ZXN0IHJ1bnMgYXMgZXJyb3JzIiwgNCwg
ZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBzOiBbCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLCAKLSAgICAgICAg
ICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJl
cjogNSwgCi0gICAgICAgICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAibGF5
b3V0LXRlc3RzIHJ1bm5pbmciCi0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAgICAg
dGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMjk4OTI5NS41MTg0ODEsIAotICAgICAg
ICAgICAgICAgICAgICBudWxsCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwgCi0g
ICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVzdChq
c29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAgICAg
ICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWlsdXJl
cywgZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3Rz
IHRyZWF0cyBzdWNjZXNzZnVsIGJ1dCB1bmJlbGlldmFibHkgc2hvcnQgdGVzdCBydW5zIGFzIGVy
cm9ycyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0gewotICAgICAgICBz
dGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmluaXNoZWQ6IHRydWUs
IAotICAgICAgICAgICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAgbmFt
ZTogImxheW91dC10ZXN0IiwgCi0gICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDcsIAotICAg
ICAgICAgICAgICAgIHRleHQ6IFsKLSAgICAgICAgICAgICAgICAgICAgImxheW91dC10ZXN0Igot
ICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAg
ICAgICAgICAgIDEzMTEyODg3OTcuNzIwNzAxOSwgCi0gICAgICAgICAgICAgICAgICAgIDEzMTEy
ODg4MDIuNzc5MTk0MQotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sIAotICAgICAg
ICBdLAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNvbkRh
dGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIGVx
dWFsKGZhaWx1cmVDb3VudCwgLTEpOwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZh
bHNlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyBkb2Vz
bid0IGNhcmUgaWYgYSBmYWlsaW5nIHJ1biBpcyB1bmJlbGlldmFibHkgc2hvcnQiLCA0LCBmdW5j
dGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKLSAgICAgICAgICAg
ICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAotICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVz
dCIsIAotICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgIDIsIAot
ICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICIyMDExLTA3LTEzIDA0
OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5HIEV4aXRpbmcgZWFybHkgYWZ0
ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0cyBydW4uIiwgCi0gICAgICAg
ICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJlcjogNCwgCi0gICAgICAgICAg
ICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAiMjAxMS0wNy0xMyAwNDozODo0Niwz
MTUgMTEyNDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0aW5nIGVhcmx5IGFmdGVyIDIwIGNy
YXNoZXMgYW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVuLiIsIAotICAgICAgICAgICAgICAg
ICAgICAiMjAgZmFpbGVkIgotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHRp
bWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEzMTA1NTcxMTUuNzkzMDgyLCAKLSAgICAgICAg
ICAgICAgICAgICAgMTMxMDU1NzExOS44MzIxMDQKLSAgICAgICAgICAgICAgICBdCi0gICAgICAg
ICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5n
VGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJl
cykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDIwKTsKLSAgICAgICAgZXF1YWwodG9v
TWFueUZhaWx1cmVzLCB0cnVlKTsKLSAgICB9KTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpz
CShub25leGlzdGVudCkKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBG
YWlsaW5nVGVzdHNCdWdGb3JtKHRlc3RlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxk
TmFtZSwgZmFpbGluZ1Rlc3RzKSB7Ci0gICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhpcywg
dGVzdGVyKTsKLQotICAgIHRoaXMuX2ZhaWxpbmdCdWlsZE5hbWUgPSBmYWlsaW5nQnVpbGROYW1l
OwotICAgIHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUgPSBwYXNzaW5nQnVpbGROYW1lOwotICAgIHRo
aXMuX2ZhaWxpbmdUZXN0cyA9IGZhaWxpbmdUZXN0czsKLQotICAgIHRoaXMuZGVzY3JpcHRpb24g
PSB0aGlzLl9jcmVhdGVCdWdEZXNjcmlwdGlvbigpOwotICAgIC8vIEZJWE1FOiBXaGVuIGEgbmV3
bHktYWRkZWQgdGVzdCBoYXMgYmVlbiBmYWlsaW5nIHNpbmNlIGl0cyBpbnRyb2R1Y3Rpb24sIGl0
IGlzbid0IHJlYWxseSBhCi0gICAgLy8gInJlZ3Jlc3Npb24iLiBXZSBzaG91bGQgdXNlIGRpZmZl
cmVudCBrZXl3b3JkcyBpbiB0aGF0IGNhc2UuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYxNjQ1Pgot
ICAgIHRoaXMua2V5d29yZHMgKz0gJywgJyArIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuUmVncmVz
c2lvbjsKLSAgICB0aGlzLnRpdGxlID0gdGhpcy5fY3JlYXRlQnVnVGl0bGUoKTsKLSAgICB0aGlz
LnVybCA9IHRoaXMuX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTCgpOwotfQotCi1GYWlsaW5nVGVzdHNC
dWdGb3JtLnByb3RvdHlwZSA9IHsKLSAgICBfY3JlYXRlQnVnRGVzY3JpcHRpb246IGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgZmlyc3RTdXNwZWN0UmV2aXNpb24gPSB0aGlzLl9wYXNzaW5nUmV2
aXNpb24oKSA/IHRoaXMuX3Bhc3NpbmdSZXZpc2lvbigpICsgMSA6IHRoaXMuX2ZhaWxpbmdSZXZp
c2lvbigpOwotICAgICAgICB2YXIgbGFzdFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMuX2ZhaWxpbmdS
ZXZpc2lvbigpOwotCi0gICAgICAgIHZhciBlbmRPZkZpcnN0U2VudGVuY2U7Ci0gICAgICAgIGlm
ICh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKSB7Ci0gICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVu
Y2UgPSAnc3RhcnRlZCBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZTsKLSAgICAgICAg
ICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAg
ICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBpbiByJyArIGZpcnN0U3VzcGVj
dFJldmlzaW9uICsgJyA8JyArIHRyYWMuY2hhbmdlc2V0VVJMKGZpcnN0U3VzcGVjdFJldmlzaW9u
KSArICc+JzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbmRPZkZpcnN0U2Vu
dGVuY2UgKz0gJyBiZXR3ZWVuIHInICsgZmlyc3RTdXNwZWN0UmV2aXNpb24gKyAnIGFuZCByJyAr
IGxhc3RTdXNwZWN0UmV2aXNpb24gKyAnIChpbmNsdXNpdmUpJzsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAodGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0
aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVlbiBmYWlsaW5nIG9uICcgKyB0aGlzLl90
ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3QgcicgKyBmaXJzdFN1c3BlY3RSZXZpc2lvbiAr
ICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1c3BlY3RSZXZpc2lvbikgKyAnPic7Ci0g
ICAgICAgIHZhciBkZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKHRoaXMuX2ZhaWxpbmdUZXN0cy5s
ZW5ndGggPT09IDEpCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuX2ZhaWxpbmdUZXN0
c1swXSArICcgJyArIGVuZE9mRmlyc3RTZW50ZW5jZSArICcuXG5cbic7Ci0gICAgICAgIGVsc2Ug
aWYgKHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5ndGggPT09IDIpCi0gICAgICAgICAgICBkZXNjcmlw
dGlvbiA9IHRoaXMuX2ZhaWxpbmdUZXN0cy5qb2luKCcgYW5kICcpICsgJyAnICsgZW5kT2ZGaXJz
dFNlbnRlbmNlICsgJy5cblxuJzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkZXNjcmlw
dGlvbiA9ICdUaGUgZm9sbG93aW5nIHRlc3RzICcgKyBlbmRPZkZpcnN0U2VudGVuY2UgKyAnOlxu
XG4nCi0gICAgICAgICAgICAgICAgKyB0aGlzLl9mYWlsaW5nVGVzdHMubWFwKGZ1bmN0aW9uKHRl
c3QpIHsgcmV0dXJuICcgICAgJyArIHRlc3QgfSkuam9pbignXG4nKQotICAgICAgICAgICAgICAg
ICsgJ1xuXG4nOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiAh
PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9IHRyYWMu
bG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJldmlzaW9u
KSArICdcblxuJzsKLSAgICAgICAgaWYgKHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpCi0gICAgICAg
ICAgICBkZXNjcmlwdGlvbiArPSB0aGlzLl90ZXN0ZXIucmVzdWx0c1BhZ2VVUkwodGhpcy5fcGFz
c2luZ0J1aWxkTmFtZSkgKyAnIHBhc3NlZFxuJzsKLSAgICAgICAgZGVzY3JpcHRpb24gKz0gdGhp
cy5fZmFpbGluZ1Jlc3VsdHNIVE1MVVJMKCkgKyAnIGZhaWxlZFxuJzsKLQotICAgICAgICByZXR1
cm4gZGVzY3JpcHRpb247Ci0gICAgfSwKLQotICAgIF9jcmVhdGVCdWdUaXRsZTogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGVuIGEgbmV3bHktYWRkZWQgdGVzdCBoYXMgYmVlbiBm
YWlsaW5nIHNpbmNlIGl0cyBpbnRyb2R1Y3Rpb24sIGl0IGlzbid0IHJlYWxseSBhCi0gICAgICAg
IC8vICJyZWdyZXNzaW9uIi4gV2Ugc2hvdWxkIHVzZSBhIGRpZmZlcmVudCB0aXRsZSBpbiB0aGF0
IGNhc2UuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYxNjQ1PgotCi0gICAgICAgIHZhciB0aXRsZVBy
ZWZpeCA9ICdSRUdSRVNTSU9OICgnICsgdGhpcy5fcmVncmVzc2lvblJhbmdlU3RyaW5nKCkgKyAn
KTogJzsKLSAgICAgICAgdmFyIHRpdGxlU3VmZml4ID0gJyBmYWlsaW5nIG9uICcgKyB0aGlzLl90
ZXN0ZXIubmFtZTsKLSAgICAgICAgdmFyIHRpdGxlID0gdGl0bGVQcmVmaXggKyB0aGlzLl9mYWls
aW5nVGVzdHMuam9pbignLCAnKSArIHRpdGxlU3VmZml4OwotCi0gICAgICAgIGlmICh0aXRsZS5s
ZW5ndGggPD0gYnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCkKLSAgICAgICAgICAgIHJl
dHVybiB0aXRsZTsKLQotICAgICAgICB2YXIgcGF0aFByZWZpeCA9IGxvbmdlc3RDb21tb25QYXRo
UHJlZml4KHRoaXMuX2ZhaWxpbmdUZXN0cyk7Ci0gICAgICAgIGlmIChwYXRoUHJlZml4KSB7Ci0g
ICAgICAgICAgICB0aXRsZSA9IHRpdGxlUHJlZml4ICsgdGhpcy5fZmFpbGluZ1Rlc3RzLmxlbmd0
aCArICcgJyArIHBhdGhQcmVmaXggKyAnIHRlc3RzJyArIHRpdGxlU3VmZml4OwotICAgICAgICAg
ICAgaWYgKHRpdGxlLmxlbmd0aCA8PSBidWd6aWxsYS5rTWF4aW11bUJ1Z1RpdGxlTGVuZ3RoKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRpdGxl
ID0gdGl0bGVQcmVmaXggKyB0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoICsgJyB0ZXN0cycgKyB0
aXRsZVN1ZmZpeDsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aXRsZS5sZW5ndGggPD0gYnVn
emlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCk7Ci0gICAgICAgIHJldHVybiB0aXRsZTsKLSAg
ICB9LAotCi0gICAgX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl90ZXN0ZXIucmVzdWx0c1BhZ2VVUkwodGhpcy5fZmFpbGluZ0J1aWxkTmFt
ZSk7Ci0gICAgfSwKLQotICAgIF9mYWlsaW5nUmV2aXNpb246IGZ1bmN0aW9uKCkgewotICAgICAg
ICByZXR1cm4gdGhpcy5fdGVzdGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKHRoaXMuX2ZhaWxp
bmdCdWlsZE5hbWUpLnJldmlzaW9uOwotICAgIH0sCi0KLSAgICBfcGFzc2luZ1JldmlzaW9uOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXNzaW5nQnVpbGROYW1lKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0ZXIuYnVpbGRib3Qu
cGFyc2VCdWlsZE5hbWUodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkucmV2aXNpb247Ci0gICAgfSwK
LQotICAgIF9yZWdyZXNzaW9uUmFuZ2VTdHJpbmc6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg
ZmFpbGluZ1JldmlzaW9uID0gdGhpcy5fZmFpbGluZ1JldmlzaW9uKCk7Ci0gICAgICAgIHZhciBw
YXNzaW5nUmV2aXNpb24gPSB0aGlzLl9wYXNzaW5nUmV2aXNpb24oKTsKLSAgICAgICAgaWYgKCFw
YXNzaW5nUmV2aXNpb24gfHwgZmFpbGluZ1JldmlzaW9uIC0gcGFzc2luZ1JldmlzaW9uIDw9IDEp
Ci0gICAgICAgICAgICByZXR1cm4gJ3InICsgZmFpbGluZ1JldmlzaW9uOwotICAgICAgICByZXR1
cm4gJ3InICsgcGFzc2luZ1JldmlzaW9uICsgJy1yJyArIGZhaWxpbmdSZXZpc2lvbjsKLSAgICB9
LAotfTsKLQotRmFpbGluZ1Rlc3RzQnVnRm9ybS5wcm90b3R5cGUuX19wcm90b19fID0gVGVzdFJl
bGF0ZWRCdWdGb3JtLnByb3RvdHlwZTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0Zh
aWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtX3Vu
aXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE2MCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
KGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ0ZhaWxpbmdUZXN0c0J1Z0Zvcm0nKTsKLQotZnVuY3Rp
b24gY3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1
aWxkTmFtZSwgZmFpbGluZ1Rlc3RzKSB7Ci0gICAgdmFyIG1vY2tCdWlsZGJvdCA9IHt9OwotICAg
IG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAg
ICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsKLSAgICAgICAgcmV0dXJu
IHsKLSAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRjaFsxXSwgMTApLAotICAgICAg
ICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksCi0gICAgICAgIH07Ci0g
ICAgfTsKLQotICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OwotICAgIG1vY2tCdWlsZGVyLm5hbWUg
PSB0ZXN0ZXJOYW1lOwotICAgIG1vY2tCdWlsZGVyLmJ1aWxkYm90ID0gbW9ja0J1aWxkYm90Owot
ICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0gZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0g
ICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwgJyArIHRoaXMubmFtZSArICcsICcgKyBi
dWlsZE5hbWUgKyAnXSc7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBGYWlsaW5nVGVzdHNCdWdG
b3JtKG1vY2tCdWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBmYWls
aW5nVGVzdHMpOwotfQotCi10ZXN0KCdrZXl3b3JkcyBhcmUgc2V0JywgMSwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93cyA3IFJlbGVhc2UgKFRlc3Rz
KScsICdyMTAgKDUpJywgJ3I4ICgyKScsIFsnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5o
dG1sJ10pOwotCi0gICAgZGVlcEVxdWFsKGZvcm0ua2V5d29yZHMuc3BsaXQoJywgJyksIFtXZWJL
aXRCdWd6aWxsYS5LZXl3b3JkLkxheW91dFRlc3RGYWlsdXJlLCBXZWJLaXRCdWd6aWxsYS5LZXl3
b3JkLk1ha2luZ0JvdHNSZWQsIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuUmVncmVzc2lvbl0pOwot
fSk7Ci0KLWNvbnN0IHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5h
bWU6ICdyMTAgKDUpJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiBbCi0gICAgICAgICAgICAnY3Nz
MS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAgZXhw
ZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBoYXMg
YmVlbiBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgc2luY2UgYXQgbGVhc3Qg
cjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMD4uXG5cbltSRVNVTFRTIFBB
R0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywKLSAg
ICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHIxMCk6IGNzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3IuaHRtbCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAot
ICAgIH0sCi0gICAgewotICAgICAgICBmYWlsaW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0gICAg
ICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOSAoMyknLAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsK
LSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAotICAgICAg
ICBdLAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19hc19z
ZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMp
IGluIHIxMCA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA+LlxuXG5bUkVTVUxU
UyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOSAoMyldIHBhc3NlZFxuW1JF
U1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVk
XG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjEwKTogY3NzMS9iYXNp
Yy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRl
c3RzKScsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUp
JywKLSAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdU
ZXN0czogWwotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCcs
Ci0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNl
IChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJhYy53
ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OSZsaW1pdD0zXG5cbltSRVNVTFRT
IFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5bUkVT
VUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWlsZWRc
bicsCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyOC1yMTApOiBjc3MxL2Jh
c2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAo
VGVzdHMpJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFtZTogJ3IxMCAo
NSknLAotICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAgICAgZmFpbGlu
Z1Rlc3RzOiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1s
JywKLSAgICAgICAgICAgICdmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCcsCi0g
ICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yLmh0bWwgYW5kIGZhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5odG1s
IHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4gcjkg
YW5kIHIxMCAoaW5jbHVzaXZlKS5cblxuaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/
cmV2PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcg
UmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2luZG93
cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAotICAgICAgICBleHBlY3Rl
ZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
ci5odG1sLCBmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCBmYWlsaW5nIG9uIFdp
bmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewotICAgICAgICBmYWlsaW5n
QnVpbGROYW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOCAoMikn
LAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yMS5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yMi5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9y
My5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNC5odG1s
JywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNS5odG1sJywKLSAg
ICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNi5odG1sJywKLSAgICAgICAg
ICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sJywKLSAgICAgICAgICAgICdj
c3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAg
ZXhwZWN0ZWREZXNjcmlwdGlvbjogJ1RoZSBmb2xsb3dpbmcgdGVzdHMgc3RhcnRlZCBmYWlsaW5n
IG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNp
dmUpOlxuXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbFxuICAgIGNzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2FzX3Nl
bGVjdG9yMy5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbFxuICAg
IGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNz
X2FzX3NlbGVjdG9yNi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjcuaHRt
bFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWxcblxuaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVTVUxU
UyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JF
U1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVk
XG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogOCBjc3Mx
L2Jhc2ljIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAg
fSwKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAg
cGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwotICAg
ICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwnLAotICAgICAgICAg
ICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAotICAgICAgICAgICAgJ2Nz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3I1Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNf
c2VsZWN0b3I2Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0
b3I3Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0
bWwnLAotICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0b3I5Lmh0bWwnLAotICAgICAg
ICBdLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogOSBjc3Mx
IHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAgcGFzc2lu
Z0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwotICAgICAgICAg
ICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwnLAotICAgICAgICAgICAgJ2Nz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNf
c2VsZWN0b3I1Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0
b3I2Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3Lmh0
bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWwnLAot
ICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0b3I5Lmh0bWwnLAotICAgICAgICAgICAg
J2Zhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5odG1sJywKLSAgICAgICAgXSwKLSAgICAg
ICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6IDEwIHRlc3RzIGZhaWxpbmcg
b24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwKLV07Ci0KLXRlc3QoJ3RpdGxl
cycsIDcsIGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdENhc2VzLmxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0oJ1dpbmRvd3Mg
NyBSZWxlYXNlIChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ0J1aWxkTmFtZSwgdGVzdENh
c2VzW2ldLnBhc3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5mYWlsaW5nVGVzdHMpOwotICAg
ICAgICBlcXVhbChmb3JtLnRpdGxlLCB0ZXN0Q2FzZXNbaV0uZXhwZWN0ZWRUaXRsZSk7Ci0gICAg
fQotfSk7Ci0KLXRlc3QoJ2Rlc2NyaXB0aW9ucycsIDUsIGZ1bmN0aW9uKCkgewotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICghKCdl
eHBlY3RlZERlc2NyaXB0aW9uJyBpbiB0ZXN0Q2FzZXNbaV0pKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0oJ1dpbmRvd3MgNyBSZWxlYXNl
IChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ0J1aWxkTmFtZSwgdGVzdENhc2VzW2ldLnBh
c3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5mYWlsaW5nVGVzdHMpOwotICAgICAgICBlcXVh
bChmb3JtLmRlc2NyaXB0aW9uLCB0ZXN0Q2FzZXNbaV0uZXhwZWN0ZWREZXNjcmlwdGlvbik7Ci0g
ICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreUxh
eW91dFRlc3REZXRlY3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIEZsYWt5TGF5b3V0VGVz
dERldGVjdG9yKCkgewotICAgIHRoaXMuX3Rlc3RzID0ge307Ci0gICAgdGhpcy5fYnVpbGRDb3Vu
dCA9IDA7Ci19Ci0KLUZsYWt5TGF5b3V0VGVzdERldGVjdG9yLnByb3RvdHlwZSA9IHsKLSAgICBp
bmNvcnBvcmF0ZVRlc3RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIGZhaWxpbmdUZXN0cywg
dG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIHZhciBuZXdGbGFreVRlc3RzID0gW107Ci0KLSAg
ICAgICAgaWYgKHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgLy8gU29tZXRoaW5nIHdh
cyBnb2luZyBob3JyaWJseSB3cm9uZyBkdXJpbmcgdGhpcyB0ZXN0IHJ1bi4gV2Ugc2hvdWxkbid0
IGFzc3VtZSB0aGF0IGFueQotICAgICAgICAgICAgLy8gcGFzc2VzL2ZhaWx1cmVzIGFyZSBkdWUg
dG8gZmxha2luZXNzLgotICAgICAgICAgICAgcmV0dXJuIG5ld0ZsYWt5VGVzdHM7Ci0gICAgICAg
IH0KLQotICAgICAgICArK3RoaXMuX2J1aWxkQ291bnQ7Ci0KLSAgICAgICAgLy8gUmVjb3JkIGZh
aWxpbmcgdGVzdHMuCi0gICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIGZhaWxpbmdUZXN0cykg
ewotICAgICAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMpKSB7Ci0gICAgICAg
ICAgICAgICBpZiAodGhpcy5fYnVpbGRDb3VudCA+IHRoaXMuX21heGltdW1GYWlsT3JQYXNzQ291
bnQpIHsKLSAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHRlc3QgaGFzbid0IGZhaWxlZCBpbiB0
aGUgX21heGltdW1GYWlsT3JQYXNzQ291bnQgbW9zdCByZWNlbnQgYnVpbGRzLCBzbwotICAgICAg
ICAgICAgICAgICAgIC8vIGRvbid0IGNvbnNpZGVyIGl0IHRvIGJlIGZsYWt5LiBJbiBmYWN0LCB3
ZSBkb24ndCBoYXZlIHRvIHRyYWNrIGl0IGF0IGFsbCEKLSAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3RzW3Rl
c3ROYW1lXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHRoaXMuX3N0YXRlcy5MYXN0
U2VlbkZhaWxpbmcsCi0gICAgICAgICAgICAgICAgICAgIGNvdW50OiAwLAotICAgICAgICAgICAg
ICAgICAgICBoaXN0b3J5OiBbXSwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICB2YXIgdGVzdERhdGEgPSB0aGlzLl90ZXN0c1t0ZXN0TmFtZV07Ci0gICAg
ICAgICAgICB0ZXN0RGF0YS5oaXN0b3J5LnB1c2goeyBidWlsZDogYnVpbGROYW1lLCByZXN1bHQ6
IGZhaWxpbmdUZXN0c1t0ZXN0TmFtZV0gfSk7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0RGF0YS5z
dGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZykgewotICAgICAgICAgICAgICAg
ICsrdGVzdERhdGEuY291bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3REYXRhLmNvdW50ID4g
dGhpcy5fbWF4aW11bUZhaWxPclBhc3NDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgdGVzdERh
dGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuTm90Rmxha3k7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KHRlc3REYXRhLnN0YXRlID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5QYXNzaW5nKSB7Ci0gICAg
ICAgICAgICAgICAgdGVzdERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuUG9zc2libHlGbGFreTsK
LSAgICAgICAgICAgICAgICBuZXdGbGFreVRlc3RzLnB1c2godGVzdE5hbWUpOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVjb3JkIHBhc3NpbmcgdGVzdHMuCi0gICAg
ICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHRoaXMuX3Rlc3RzKSB7Ci0gICAgICAgICAgICBpZiAo
dGVzdE5hbWUgaW4gZmFpbGluZ1Rlc3RzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0g
ICAgICAgICAgICB2YXIgdGVzdERhdGEgPSB0aGlzLl90ZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAg
ICAgICB0ZXN0RGF0YS5oaXN0b3J5LnB1c2goeyBidWlsZDogYnVpbGROYW1lLCByZXN1bHQ6IHsg
ZmFpbHVyZVR5cGU6ICdwYXNzJyB9IH0pOwotCi0gICAgICAgICAgICBpZiAodGVzdERhdGEuc3Rh
dGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2VlblBhc3NpbmcpIHsKLSAgICAgICAgICAgICAgICAr
K3Rlc3REYXRhLmNvdW50OwotICAgICAgICAgICAgICAgIGlmICh0ZXN0RGF0YS5jb3VudCA+IHRo
aXMuX21heGltdW1GYWlsT3JQYXNzQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHRlc3REYXRh
LnN0YXRlID0gdGhpcy5fc3RhdGVzLk5vdEZsYWt5OwotICAgICAgICAgICAgfSBlbHNlIGlmICh0
ZXN0RGF0YS5zdGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZykgewotICAgICAg
ICAgICAgICAgIHRlc3REYXRhLnN0YXRlID0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuUGFzc2luZzsK
LSAgICAgICAgICAgICAgICB0ZXN0RGF0YS5jb3VudCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gbmV3Rmxha3lUZXN0czsKLSAgICB9LAotCi0gICAgYWxs
RmFpbHVyZXM6IGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAgIGlmICghKHRlc3ROYW1lIGlu
IHRoaXMuX3Rlc3RzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHJldHVy
biB0aGlzLl90ZXN0c1t0ZXN0TmFtZV0uaGlzdG9yeS5maWx0ZXIoZnVuY3Rpb24oaGlzdG9yeUl0
ZW0pIHsgcmV0dXJuIGhpc3RvcnlJdGVtLnJlc3VsdC5mYWlsdXJlVHlwZSAhPT0gJ3Bhc3MnIH0p
OwotICAgIH0sCi0KLSAgICBnZXQgcG9zc2libHlGbGFreVRlc3RzKCkgewotICAgICAgICB2YXIg
c2VsZiA9IHRoaXM7Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhzZWxmLl90ZXN0cykuZmls
dGVyKGZ1bmN0aW9uKHRlc3ROYW1lKSB7IHJldHVybiBzZWxmLl90ZXN0c1t0ZXN0TmFtZV0uc3Rh
dGUgPT09IHNlbGYuX3N0YXRlcy5Qb3NzaWJseUZsYWt5IH0pOwotICAgIH0sCi0KLSAgICAvLyBJ
ZiBhIHRlc3QgaGFzIHJlY2VudGx5IGZhaWxlZCBvciBwYXNzZWQgbW9yZSB0aGFuIHRoaXMgbnVt
YmVyIG9mIHRpbWVzIGluIGEgcm93IHdlIGRvbid0Ci0gICAgLy8gY29uc2lkZXIgaXQgdG8gYmUg
Zmxha3kuCi0gICAgX21heGltdW1GYWlsT3JQYXNzQ291bnQ6IDksCi0KLSAgICBfc3RhdGVzOiB7
Ci0gICAgICAgIExhc3RTZWVuRmFpbGluZzogMCwKLSAgICAgICAgTGFzdFNlZW5QYXNzaW5nOiAx
LAotICAgICAgICBQb3NzaWJseUZsYWt5OiAyLAotICAgICAgICBOb3RGbGFreTogMywKLSAgICB9
LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVj
dG9yX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9G
bGFreUxheW91dFRlc3REZXRlY3Rvcl91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0
cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0
aW9uKCkgewotCi1tb2R1bGUoJ0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yJyk7Ci0KLWNvbnN0IHJ1
bnMgPSBbCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDYnLAotICAgICAgICBmYWls
aW5nVGVzdHM6IHsKLSAgICAgICAgICAgIGI6ICdmYWlsJywKLSAgICAgICAgfSwKLSAgICAgICAg
dG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgYnVpbGROYW1l
OiAnYnVpbGQ1JywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Ci0gICAgICAgICAgICBhOiAnZmFp
bCcsCi0gICAgICAgICAgICBiOiAnZmFpbCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRvb01hbnlG
YWlsdXJlczogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTogJ2J1aWxk
NCcsCi0gICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAgICAgICAgYjogJ2ZhaWwnLAotICAg
ICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAotICAgIH0sCi0gICAgewot
ICAgICAgICBidWlsZE5hbWU6ICdidWlsZDMnLAotICAgICAgICBmYWlsaW5nVGVzdHM6IHsKLSAg
ICAgICAgICAgIGE6ICdjcmFzaCcsCi0gICAgICAgICAgICBiOiAnZmFpbCcsCi0gICAgICAgIH0s
Ci0gICAgICAgIHRvb01hbnlGYWlsdXJlczogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAg
IGJ1aWxkTmFtZTogJ2J1aWxkMicsCi0gICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAgICAg
ICAgYTogJ2ZhaWwnLAotICAgICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNl
LAotICAgIH0sCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDEnLAotICAgICAgICBm
YWlsaW5nVGVzdHM6IHt9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAotICAgIH0s
Ci1dOwotCi10ZXN0KCdwb3NzaWJseUZsYWt5VGVzdHMnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBydW5zLmZv
ckVhY2goZnVuY3Rpb24ocnVuKSB7IGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMocnVu
LmJ1aWxkTmFtZSwgcnVuLmZhaWxpbmdUZXN0cywgcnVuLnRvb01hbnlGYWlsdXJlcykgfSk7Ci0K
LSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbJ2EnXSk7Ci19KTsK
LQotdGVzdCgnYWxsRmFpbHVyZXMnLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0ZWN0b3Ig
PSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBydW5zLmZvckVhY2goZnVuY3Rp
b24ocnVuKSB7IGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMocnVuLmJ1aWxkTmFtZSwg
cnVuLmZhaWxpbmdUZXN0cywgcnVuLnRvb01hbnlGYWlsdXJlcykgfSk7Ci0KLSAgICBkZWVwRXF1
YWwoZGV0ZWN0b3IuYWxsRmFpbHVyZXMoJ2EnKSwgWwotICAgICAgICB7IGJ1aWxkOiAnYnVpbGQ1
JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWlsZDogJ2J1aWxkMycsIHJlc3VsdDog
J2NyYXNoJyB9LAotICAgICAgICB7IGJ1aWxkOiAnYnVpbGQyJywgcmVzdWx0OiAnZmFpbCcgfSwK
LSAgICBdKTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5hbGxGYWlsdXJlcygnYicpLCBbCi0g
ICAgICAgIHsgYnVpbGQ6ICdidWlsZDYnLCByZXN1bHQ6ICdmYWlsJyB9LAotICAgICAgICB7IGJ1
aWxkOiAnYnVpbGQ1JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWlsZDogJ2J1aWxk
NCcsIHJlc3VsdDogJ2ZhaWwnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDMnLCByZXN1bHQ6
ICdmYWlsJyB9LAotICAgIF0pOwotCi0gICAgZXF1YWwoZGV0ZWN0b3IuYWxsRmFpbHVyZXMoJ2Mn
KSwgbnVsbCk7Ci19KTsKLQotdGVzdCgnZmFpbGluZyBtYW55IHRpbWVzIGluIGEgcm93IHNob3Vs
ZCBub3QgY291bnQgYXMgZmxha3knLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0ZWN0b3Ig
PSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxk
JywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3Np
Ymx5Rmxha3lUZXN0cywgW10pOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kpCi0g
ICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNl
KTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLQot
ICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcg
fSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywg
W10pOwotfSk7Ci0KLXRlc3QoJ2ZhaWxpbmcgYWZ0ZXIgcGFzc2luZyBtYW55IHRpbWVzIGluIGEg
cm93IHNob3VsZCBub3QgY291bnQgYXMgZmxha3knLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIg
ZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBkZXRlY3Rvci5p
bmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLQot
ICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLQotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVU
ZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9y
LnBvc3NpYmx5Rmxha3lUZXN0cywgW10pOwotCi0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0
UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0KLSAgICBkZWVwRXF1YWwo
ZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci19KTsKLQotdGVzdCgnZmxha2luZyBu
b3cgc2hvdWxkIG92ZXJyaWRlIG1hbnkgcGFzdCBmYWlsdXJlcycsIDEsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3RvcigpOwotICAgIGRl
dGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFs
c2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZh
bHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTog
J2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdi
dWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQotICAg
ICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwn
IH0sIGZhbHNlKTsKLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBb
J2EnXSk7Ci19KTsKLQotdGVzdCgncGFzc2luZyBub3cgc2hvdWxkIG92ZXJyaWRlIHBhc3QgZmxh
a2luZXNzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5TGF5
b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQotICAg
ICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7
Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWls
JyB9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQn
LCB7fSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxk
JywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2li
bHlGbGFreVRlc3RzLCBbXSk7Ci19KTsKLQotdGVzdCgndG9vIG1hbnkgZmFpbHVyZXMgbm93IHNo
b3VsZCBub3Qgb3ZlcnJpZGUgcGFzdCBmbGFraW5lc3MnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywge30sIHRydWUpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJl
c3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29y
cG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNv
cnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBk
ZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAg
ZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywgWydhJ10pOwotfSk7Ci0KLX0p
KCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zvcm0uanMJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1
Z0Zvcm0uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVu
Y3Rpb24gRmxha3lUZXN0QnVnRm9ybSh0ZXN0ZXIsIGZhaWxpbmdCdWlsZE5hbWVzLCBmYWlsaW5n
VGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwgbmV3ZXN0QW5hbHl6ZWRCdWlsZCwgYW5hbHl6ZWRC
dWlsZENvdW50KSB7Ci0gICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhpcywgdGVzdGVyKTsK
LQotICAgIHRoaXMuX2ZhaWxpbmdCdWlsZE5hbWVzID0gZmFpbGluZ0J1aWxkTmFtZXM7Ci0gICAg
dGhpcy5fZmFpbGluZ1Rlc3QgPSBmYWlsaW5nVGVzdDsKLSAgICB0aGlzLl9vbGRlc3RBbmFseXpl
ZEJ1aWxkID0gb2xkZXN0QW5hbHl6ZWRCdWlsZDsKLSAgICB0aGlzLl9uZXdlc3RBbmFseXplZEJ1
aWxkID0gbmV3ZXN0QW5hbHl6ZWRCdWlsZDsKLSAgICB0aGlzLl9hbmFseXplZEJ1aWxkQ291bnQg
PSBhbmFseXplZEJ1aWxkQ291bnQ7Ci0KLSAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5fY3Jl
YXRlQnVnRGVzY3JpcHRpb24oKTsKLSAgICB0aGlzLnRpdGxlID0gdGhpcy5fY3JlYXRlQnVnVGl0
bGUoKTsKLSAgICB0aGlzLnVybCA9IHRoaXMuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTCh0aGlzLl9m
YWlsaW5nQnVpbGROYW1lc1swXSk7Ci19Ci0KLUZsYWt5VGVzdEJ1Z0Zvcm0ucHJvdG90eXBlID0g
ewotICAgIF9jcmVhdGVCdWdEZXNjcmlwdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBz
ZWxmID0gdGhpczsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gc2VsZi5fZmFpbGluZ1Rlc3QKLSAg
ICAgICAgICAgICsgJyBmYWlsZWQgJyArIHNlbGYuX2ZhaWxpbmdCdWlsZE5hbWVzLmxlbmd0aCAr
ICcgb3V0IG9mICcgKyBzZWxmLl9hbmFseXplZEJ1aWxkQ291bnQgKyAnIHRpbWVzJwotICAgICAg
ICAgICAgKyAnIG9uICcgKyBzZWxmLl90ZXN0ZXIubmFtZQotICAgICAgICAgICAgKyAnIGJldHdl
ZW4gcicgKyBzZWxmLl90ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoc2VsZi5fb2xkZXN0
QW5hbHl6ZWRCdWlsZCkucmV2aXNpb24KLSAgICAgICAgICAgICsgJyBhbmQgcicgKyBzZWxmLl90
ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoc2VsZi5fbmV3ZXN0QW5hbHl6ZWRCdWlsZCku
cmV2aXNpb24KLSAgICAgICAgICAgICsgJyAoaW5jbHVzaXZlKS5cblxuJzsKLQotICAgICAgICBy
ZXN1bHQgKz0gJ0ZhaWx1cmVzOlxuXG4nOwotICAgICAgICByZXN1bHQgKz0gc2VsZi5fZmFpbGlu
Z0J1aWxkTmFtZXMubWFwKGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTChidWlsZE5hbWUpICsgJ1xuJzsKLSAgICAgICAg
fSkuam9pbignJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2Ny
ZWF0ZUJ1Z1RpdGxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZhaWxpbmdU
ZXN0ICsgJyBzb21ldGltZXMgZmFpbHMgb24gJyArIHRoaXMuX3Rlc3Rlci5uYW1lOwotICAgIH0s
Ci19OwotCi1GbGFreVRlc3RCdWdGb3JtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBUZXN0UmVsYXRl
ZEJ1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lU
ZXN0QnVnRm9ybV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzCShu
b25leGlzdGVudCkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsK
LQotbW9kdWxlKCdGbGFreVRlc3RCdWdGb3JtJyk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RGb3Jt
KGZhaWxpbmdCdWlsZE5hbWVzLCBmYWlsaW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwgbmV3
ZXN0QW5hbHl6ZWRCdWlsZCwgYW5hbHl6ZWRCdWlsZENvdW50KSB7Ci0gICAgdmFyIG1vY2tCdWls
ZGJvdCA9IHt9OwotICAgIG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1
aWxkTmFtZSkgewotICAgICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsK
LSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRjaFsx
XSwgMTApLAotICAgICAgICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCks
Ci0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OwotICAgIG1v
Y2tCdWlsZGVyLm5hbWUgPSAnW0JVSUxERVIgTkFNRV0nOwotICAgIG1vY2tCdWlsZGVyLmJ1aWxk
Ym90ID0gbW9ja0J1aWxkYm90OwotICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0gZnVu
Y3Rpb24oYnVpbGROYW1lKSB7Ci0gICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwgJyAr
IHRoaXMubmFtZSArICcsICcgKyBidWlsZE5hbWUgKyAnXSc7Ci0gICAgfQotCi0gICAgcmV0dXJu
IG5ldyBGbGFreVRlc3RCdWdGb3JtKG1vY2tCdWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lcywgZmFp
bGluZ1Rlc3QsIG9sZGVzdEFuYWx5emVkQnVpbGQsIG5ld2VzdEFuYWx5emVkQnVpbGQsIGFuYWx5
emVkQnVpbGRDb3VudCk7Ci19Ci0KLWNvbnN0IHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAg
IG9sZGVzdEFuYWx5emVkQnVpbGQ6ICdyMSAoMSknLAotICAgICAgICBuZXdlc3RBbmFseXplZEJ1
aWxkOiAncjE1ICg4KScsCi0gICAgICAgIGFuYWx5emVkQnVpbGRDb3VudDogOCwKLSAgICAgICAg
ZmFpbGluZ0J1aWxkTmFtZXM6IFsKLSAgICAgICAgICAgICdyMTAgKDUpJywKLSAgICAgICAgICAg
ICdyOCAoMiknLAotICAgICAgICBdLAotICAgICAgICBmYWlsaW5nVGVzdDogJ2NzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3IuaHRtbCcsCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdj
c3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGVkIDIgb3V0IG9mIDggdGltZXMg
b24gW0JVSUxERVIgTkFNRV0gYmV0d2VlbiByMSBhbmQgcjE1IChpbmNsdXNpdmUpLlxuXG5GYWls
dXJlczpcblxuW1JFU1VMVFMgUEFHRSBVUkwgW0JVSUxERVIgTkFNRV0sIHIxMCAoNSldXG5bUkVT
VUxUUyBQQUdFIFVSTCBbQlVJTERFUiBOQU1FXSwgcjggKDIpXVxuJywKLSAgICAgICAgZXhwZWN0
ZWRUaXRsZTogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBzb21ldGltZXMgZmFp
bHMgb24gW0JVSUxERVIgTkFNRV0nLAotICAgICAgICBleHBlY3RlZFVSTDogJ1tSRVNVTFRTIFBB
R0UgVVJMIFtCVUlMREVSIE5BTUVdLCByMTAgKDUpXScsCi0gICAgfSwKLV07Ci0KLXRlc3QoJ3Rp
dGxlcycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHRlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHRl
c3RDYXNlKSB7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0odGVzdENhc2UuZmFp
bGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZhaWxpbmdUZXN0LCB0ZXN0Q2FzZS5vbGRlc3RBbmFs
eXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5hbmFseXpl
ZEJ1aWxkQ291bnQpOwotICAgICAgICBlcXVhbChmb3JtLnRpdGxlLCB0ZXN0Q2FzZS5leHBlY3Rl
ZFRpdGxlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCdkZXNjcmlwdGlvbnMnLCAxLCBmdW5jdGlv
bigpIHsKLSAgICB0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0Q2FzZSkgewotICAgICAg
ICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKHRlc3RDYXNlLmZhaWxpbmdCdWlsZE5hbWVzLCB0
ZXN0Q2FzZS5mYWlsaW5nVGVzdCwgdGVzdENhc2Uub2xkZXN0QW5hbHl6ZWRCdWlsZCwgdGVzdENh
c2UubmV3ZXN0QW5hbHl6ZWRCdWlsZCwgdGVzdENhc2UuYW5hbHl6ZWRCdWlsZENvdW50KTsKLSAg
ICAgICAgZXF1YWwoZm9ybS5kZXNjcmlwdGlvbiwgdGVzdENhc2UuZXhwZWN0ZWREZXNjcmlwdGlv
bik7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgnVVJMcycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHRl
c3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RDYXNlKSB7Ci0gICAgICAgIHZhciBmb3JtID0g
Y3JlYXRlVGVzdEZvcm0odGVzdENhc2UuZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZhaWxp
bmdUZXN0LCB0ZXN0Q2FzZS5vbGRlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RBbmFs
eXplZEJ1aWxkLCB0ZXN0Q2FzZS5hbmFseXplZEJ1aWxkQ291bnQpOwotICAgICAgICBlcXVhbChm
b3JtLnVybCwgdGVzdENhc2UuZXhwZWN0ZWRVUkwpOwotICAgIH0pOwotfSk7Ci0KLX0pKCk7Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9MYXlvdXRUZXN0SGlzdG9yeUFuYWx5emVyLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRlc3RIaXN0b3J5
QW5hbHl6ZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIExheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIoYnVp
bGRlcikgewotICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVyOwotICAgIHRoaXMuX2ZsYWtpbmVz
c0RldGVjdG9yID0gbmV3IEZsYWt5TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgdGhpcy5faGlz
dG9yeSA9IHt9OwotICAgIHRoaXMuX2xvYWRlciA9IG5ldyBMYXlvdXRUZXN0UmVzdWx0c0xvYWRl
cihidWlsZGVyKTsKLSAgICB0aGlzLl90ZXN0UnVuc1NpbmNlTGFzdEludGVyZXN0aW5nQ2hhbmdl
ID0gMDsKLX0KLQotTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5wcm90b3R5cGUgPSB7Ci0gICAg
LyoKLSAgICAgKiBQZXJpb2RpY2FsbHkgY2FsbHMgY2FsbGJhY2sgdW50aWwgYWxsIGN1cnJlbnQg
ZmFpbHVyZXMgaGF2ZSBiZWVuIGV4cGxhaW5lZC4gQ2FsbGJhY2sgaXMKLSAgICAgKiBwYXNzZWQg
YW4gb2JqZWN0IGxpa2UgdGhlIGZvbGxvd2luZzoKLSAgICAgKiB7Ci0gICAgICogICAgICdoaXN0
b3J5JzogewotICAgICAqICAgICAgICAgJ3IxMjM0NyAoNjgxKSc6IHsKLSAgICAgKiAgICAgICAg
ICAgICAndG9vTWFueUZhaWx1cmVzJzogZmFsc2UsCi0gICAgICogICAgICAgICAgICAgJ3Rlc3Rz
JzogewotICAgICAqICAgICAgICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
cjIuaHRtbCc6ICdmYWlsJywKLSAgICAgKiAgICAgICAgICAgICB9LAotICAgICAqICAgICAgICAg
fSwKLSAgICAgKiAgICAgICAgICdyMTIzNDYgKDY4MCknOiB7Ci0gICAgICogICAgICAgICAgICAg
J3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNlLAotICAgICAqICAgICAgICAgICAgICd0ZXN0cyc6IHt9
LAotICAgICAqICAgICAgICAgfSwKLSAgICAgKiAgICAgICAgICdyMTIzNDUgKDY3OSknOiB7Ci0g
ICAgICogICAgICAgICAgICAgJ3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNlLAotICAgICAqICAgICAg
ICAgICAgICd0ZXN0cyc6IHsKLSAgICAgKiAgICAgICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3IuaHRtbCc6ICdjcmFzaCcsCi0gICAgICogICAgICAgICAgICAgfSwKLSAg
ICAgKiAgICAgICAgIH0sCi0gICAgICogICAgIH0sCi0gICAgICogICAgICdwb3NzaWJseUZsYWt5
JzogewotICAgICAqICAgICAgICAgJ2Zhc3Qvd29ya2Vycy93b3JrZXItdGVzdC5odG1sJzogWwot
ICAgICAqICAgICAgICAgICAgIHsgJ2J1aWxkJzogJ3IxMjM0NCAoNjc4KScsICdyZXN1bHQnOiAn
ZmFpbCcgfSwKLSAgICAgKiAgICAgICAgICAgICB7ICdidWlsZCc6ICdyMTIzNDAgKDY3NiknLCAn
cmVzdWx0JzogJ2NyYXNoJyB9LAotICAgICAqICAgICAgICAgXSwKLSAgICAgKiAgICAgfSwKLSAg
ICAgKiB9Ci0gICAgICogRWFjaCBidWlsZCBjb250YWlucyBqdXN0IHRoZSBmYWlsdXJlcyB0aGF0
IGEpIGFyZSBzdGlsbCBvY2N1cnJpbmcgb24gdGhlIGJvdHMsIGFuZCBiKSB3ZXJlIG5ldwotICAg
ICAqIGluIHRoYXQgYnVpbGQuCi0gICAgICovCi0gICAgc3RhcnQ6IGZ1bmN0aW9uKGNhbGxiYWNr
KSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgc2VsZi5fYnVpbGRlci5nZXRC
dWlsZE5hbWVzKGZ1bmN0aW9uKGJ1aWxkTmFtZXMpIHsKLSAgICAgICAgICAgIHNlbGYuX2FuYWx5
emVCdWlsZHMoYnVpbGROYW1lcywgY2FsbGJhY2ssIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHNlbGYuX2J1aWxkZXIuZ2V0T2xkQnVpbGROYW1lcyhmdW5jdGlvbihvbGRCdWlsZE5hbWVz
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2FuYWx5emVCdWlsZHMob2xkQnVpbGROYW1l
cywgY2FsbGJhY2spOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUJ1aWxkczogZnVuY3Rpb24oYnVpbGROYW1l
cywgY2FsbGJhY2ssIGFuYWx5emVkQWxsQnVpbGRzQ2FsbGJhY2spIHsKLSAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBpbm5lcihidWlsZEluZGV4KSB7Ci0gICAgICAg
ICAgICBzZWxmLl9pbmNvcnBvcmF0ZUJ1aWxkSGlzdG9yeShidWlsZE5hbWVzLCBidWlsZEluZGV4
LCBmdW5jdGlvbihjYWxsQWdhaW4pIHsKLSAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHsKLSAg
ICAgICAgICAgICAgICAgICAgaGlzdG9yeTogc2VsZi5faGlzdG9yeSwKLSAgICAgICAgICAgICAg
ICAgICAgcG9zc2libHlGbGFreToge30sCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg
ICAgICBzZWxmLl9mbGFraW5lc3NEZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMuZm9yRWFjaChm
dW5jdGlvbih0ZXN0TmFtZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhLnBvc3NpYmx5Rmxh
a3lbdGVzdE5hbWVdID0gc2VsZi5fZmxha2luZXNzRGV0ZWN0b3IuYWxsRmFpbHVyZXModGVzdE5h
bWUpOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgdmFyIG5leHRJbmRl
eCA9IGJ1aWxkSW5kZXggKyAxOwotICAgICAgICAgICAgICAgIHZhciBhbmFseXplZEFsbEJ1aWxk
cyA9IG5leHRJbmRleCA+PSBidWlsZE5hbWVzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB2YXIg
aGF2ZU1vcmVEYXRhVG9GZXRjaCA9ICFhbmFseXplZEFsbEJ1aWxkcyB8fCBhbmFseXplZEFsbEJ1
aWxkc0NhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrUmVxdWVzdGVkU3Rv
cCA9ICFjYWxsYmFjayhkYXRhLCBoYXZlTW9yZURhdGFUb0ZldGNoKTsKLSAgICAgICAgICAgICAg
ICBpZiAoY2FsbGJhY2tSZXF1ZXN0ZWRTdG9wKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxBZ2FpbikKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgICAgICAgICAgaWYgKGFuYWx5emVkQWxsQnVpbGRzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChhbmFseXplZEFsbEJ1aWxkc0NhbGxiYWNrKQotICAgICAgICAg
ICAgICAgICAgICAgICAgYW5hbHl6ZWRBbGxCdWlsZHNDYWxsYmFjaygpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgaW5uZXIobmV4dEluZGV4KSB9LCAwKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9Ci0gICAgICAgIGlubmVyKDApOwotICAgIH0sCi0KLSAgICBfaW5jb3Jw
b3JhdGVCdWlsZEhpc3Rvcnk6IGZ1bmN0aW9uKGJ1aWxkTmFtZXMsIGJ1aWxkSW5kZXgsIGNhbGxi
YWNrKSB7Ci0gICAgICAgIHZhciBwcmV2aW91c0J1aWxkTmFtZSA9IE9iamVjdC5rZXlzKHRoaXMu
X2hpc3RvcnkpLmxhc3QoKTsKLSAgICAgICAgdmFyIG5leHRCdWlsZE5hbWUgPSBidWlsZE5hbWVz
W2J1aWxkSW5kZXhdOwotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgc2VsZi5f
bG9hZGVyLnN0YXJ0KG5leHRCdWlsZE5hbWUsIGZ1bmN0aW9uKHRlc3RzLCB0b29NYW55RmFpbHVy
ZXMpIHsKLSAgICAgICAgICAgIGlmICh0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgZmlyc3RCdWlsZE5hbWUgPSBPYmplY3Qua2V5cyhzZWxmLl9oaXN0b3J5KVswXTsKLSAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgKGkuZS4sIGN1cnJlbnQgb3IgbW9zdCByZWNl
bnQpIGJ1aWxkIGV4aXRlZCBlYXJseSBkdWUgdG8gdG9vIG1hbnkKLSAgICAgICAgICAgICAgICAv
LyBmYWlsdXJlcywgd2Ugd2FudCB0byBwcm9jZXNzIG90aGVyIHRvby1tYW55LWZhaWx1cmVzIGJ1
aWxkcyBub3JtYWxseSB0byB0cnkgdG8KLSAgICAgICAgICAgICAgICAvLyBmaWd1cmUgb3V0IHdo
ZW4gdGhlIHRvby1tYW55LWZhaWx1cmVzIHN0YXJ0ZWQgb2NjdXJyaW5nLiBJZiB0aGUgZmlyc3Qv
Y3VycmVudAotICAgICAgICAgICAgICAgIC8vIGJ1aWxkIGRpZCBub3QgZXhpdCBkdWUgdG8gdG9v
IG1hbnkgZmFpbHVyZXMsIHRoZW4gdG9vLW1hbnktZmFpbHVyZXMgYnVpbGRzIHdpbGwKLSAgICAg
ICAgICAgICAgICAvLyBvbmx5IGNvbmZ1c2Ugb3VyIGFuYWx5c2lzIChzaW5jZSB0aGV5IHJ1biBh
IHNlbWktYXJiaXRyYXJ5IHN1YnNldCBvZiB0ZXN0cyksIHNvCi0gICAgICAgICAgICAgICAgLy8g
d2Ugc2hvdWxkIGp1c3Qgc2tpcCB0aGVtIGVudGlyZWx5LgotICAgICAgICAgICAgICAgIGlmIChm
aXJzdEJ1aWxkTmFtZSAmJiAhc2VsZi5faGlzdG9yeVtmaXJzdEJ1aWxkTmFtZV0udG9vTWFueUZh
aWx1cmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICArK3NlbGYuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdDaGFuZ2U7Ci0K
LSAgICAgICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IHsKLSAgICAgICAgICAgICAgICB0b29NYW55
RmFpbHVyZXM6IHRvb01hbnlGYWlsdXJlcywKLSAgICAgICAgICAgICAgICB0ZXN0czoge30sCi0g
ICAgICAgICAgICB9OwotICAgICAgICAgICAgc2VsZi5faGlzdG9yeVtuZXh0QnVpbGROYW1lXSA9
IGhpc3RvcnlJdGVtOwotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNIaXN0b3J5SXRlbTsKLSAg
ICAgICAgICAgIGlmIChwcmV2aW91c0J1aWxkTmFtZSkKLSAgICAgICAgICAgICAgICBwcmV2aW91
c0hpc3RvcnlJdGVtID0gc2VsZi5faGlzdG9yeVtwcmV2aW91c0J1aWxkTmFtZV07Ci0KLSAgICAg
ICAgICAgIHZhciBuZXdGbGFreVRlc3RzID0gc2VsZi5fZmxha2luZXNzRGV0ZWN0b3IuaW5jb3Jw
b3JhdGVUZXN0UmVzdWx0cyhuZXh0QnVpbGROYW1lLCB0ZXN0cywgdG9vTWFueUZhaWx1cmVzKTsK
LSAgICAgICAgICAgIGlmIChuZXdGbGFreVRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
IHNlbGYuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdDaGFuZ2UgPSAwOwotICAgICAgICAg
ICAgICAgIC8vIFJlbW92ZSBhbGwgcG9zc2libHkgZmxha3kgdGVzdHMgZnJvbSB0aGUgZmFpbHVy
ZSBoaXN0b3J5LCBzaW5jZSB3aGVuIHRoZXkgZmFpbGVkCi0gICAgICAgICAgICAgICAgLy8gaXMg
bm8gbG9uZ2VyIG1lYW5pbmdmdWwuCi0gICAgICAgICAgICAgICAgbmV3Rmxha3lUZXN0cy5mb3JF
YWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGJ1
aWxkTmFtZSBpbiBzZWxmLl9oaXN0b3J5KQotICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRl
IHNlbGYuX2hpc3RvcnlbYnVpbGROYW1lXS50ZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAgICAgICAg
ICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGlu
IHRlc3RzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzSGlzdG9yeUl0ZW0pIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gcHJldmlvdXNIaXN0b3J5SXRlbS50
ZXN0cykpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAg
ICAgICAgZGVsZXRlIHByZXZpb3VzSGlzdG9yeUl0ZW0udGVzdHNbdGVzdE5hbWVdOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBoaXN0b3J5SXRlbS50ZXN0c1t0ZXN0TmFtZV0g
PSB0ZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBwcmV2
aW91c1VuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCA9IHByZXZpb3VzQnVpbGROYW1lID8gT2JqZWN0
LmtleXMoc2VsZi5faGlzdG9yeVtwcmV2aW91c0J1aWxkTmFtZV0udGVzdHMpLmxlbmd0aCA6IDA7
Ci0gICAgICAgICAgICB2YXIgdW5leHBsYWluZWRGYWlsdXJlc0NvdW50ID0gT2JqZWN0LmtleXMo
c2VsZi5faGlzdG9yeVtuZXh0QnVpbGROYW1lXS50ZXN0cykubGVuZ3RoOwotCi0gICAgICAgICAg
ICBpZiAocHJldmlvdXNVbmV4cGxhaW5lZEZhaWx1cmVzQ291bnQgJiYgIXVuZXhwbGFpbmVkRmFp
bHVyZXNDb3VudCkKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0UnVuc1NpbmNlTGFzdEludGVy
ZXN0aW5nQ2hhbmdlID0gMDsKLQotICAgICAgICAgICAgY29uc3QgbWluaW11bVJlcXVpcmVkVGVz
dFJ1bnNXaXRob3V0SW50ZXJlc3RpbmdDaGFuZ2VzID0gNTsKLSAgICAgICAgICAgIGNhbGxiYWNr
KHVuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCB8fCBzZWxmLl90ZXN0UnVuc1NpbmNlTGFzdEludGVy
ZXN0aW5nQ2hhbmdlIDwgbWluaW11bVJlcXVpcmVkVGVzdFJ1bnNXaXRob3V0SW50ZXJlc3RpbmdD
aGFuZ2VzKTsKLSAgICAgICAgfSwKLSAgICAgICAgZnVuY3Rpb24odGVzdHMpIHsKLSAgICAgICAg
ICAgIC8vIFNvbWUgdGVzdHMgZmFpbGVkLCBidXQgd2UgY291bGRuJ3QgZmV0Y2ggcmVzdWx0cy5o
dG1sIChwZXJoYXBzIGJlY2F1c2UgdGhlIHRlc3QKLSAgICAgICAgICAgIC8vIHJ1biBhYm9ydGVk
IGVhcmx5IGZvciBzb21lIHJlYXNvbikuIEp1c3Qgc2tpcCB0aGlzIGJ1aWxkIGVudGlyZWx5Lgot
ICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi19OwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2Fk
ZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91
dFRlc3RSZXN1bHRzTG9hZGVyLmpzCShub25leGlzdGVudCkKQEAgLTEsMTQ1ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1mdW5jdGlvbiBMYXlvdXRUZXN0UmVzdWx0c0xvYWRlcihidWlsZGVyKSB7Ci0g
ICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7Ci19Ci0KLUxheW91dFRlc3RSZXN1bHRzTG9hZGVy
LnByb3RvdHlwZSA9IHsKLSAgICBzdGFydDogZnVuY3Rpb24oYnVpbGROYW1lLCBjYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSAnTGF5b3V0VGVzdFJlc3Vs
dHNMb2FkZXIuJyArIHRoaXMuX2J1aWxkZXIubmFtZSArICcuJyArIGJ1aWxkTmFtZTsKLSAgICAg
ICAgY29uc3QgY3VycmVudENhY2hlZERhdGFWZXJzaW9uID0gODsKLSAgICAgICAgaWYgKFBlcnNp
c3RlbnRDYWNoZS5jb250YWlucyhjYWNoZUtleSkpIHsKLSAgICAgICAgICAgIHZhciBjYWNoZWRE
YXRhID0gUGVyc2lzdGVudENhY2hlLmdldChjYWNoZUtleSk7Ci0gICAgICAgICAgICBpZiAoY2Fj
aGVkRGF0YS52ZXJzaW9uID09PSBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24pIHsKLSAgICAgICAg
ICAgICAgICBpZiAoY2FjaGVkRGF0YS5lcnJvcikKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JD
YWxsYmFjayhjYWNoZWREYXRhLnRlc3RzLCBjYWNoZWREYXRhLnRvb01hbnlGYWlsdXJlcyk7Ci0g
ICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjYWNoZWRE
YXRhLnRlc3RzLCBjYWNoZWREYXRhLnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9
IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGZhbHNlLCBlcnJvcjogZmFsc2UsIHZlcnNp
b246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwotCi0gICAgICAgIGZ1bmN0aW9uIGNhY2hl
UGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxiYWNrKHBhcnNlUmVzdWx0KSB7Ci0gICAgICAgICAgICBy
ZXN1bHQudGVzdHMgPSBwYXJzZVJlc3VsdC50ZXN0czsKLSAgICAgICAgICAgIHJlc3VsdC50b29N
YW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFpbHVyZXM7Ci0KLSAgICAgICAgICAg
IFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICBjYWxs
YmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZWxmLl9mZXRjaEFuZFBhcnNlTlJX
VFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxsYmFjaywgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBzZWxmLl9mZXRjaEFuZFBhcnNlT1JXVFJlc3VsdHMoYnVp
bGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxsYmFjaywgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmV0Y2ggcmVzdWx0cyBmb3IgdGhpcyBidWls
ZC4KLSAgICAgICAgICAgICAgICByZXN1bHQuZXJyb3IgPSB0cnVlOwotICAgICAgICAgICAgICAg
IFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAg
ZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfZmV0Y2hBbmRQYXJzZU5S
V1RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxs
YmFjaykgewotICAgICAgICBnZXRSZXNvdXJjZSh0aGlzLl9idWlsZGVyLnJlc3VsdHNEaXJlY3Rv
cnlVUkwoYnVpbGROYW1lKSArICdmdWxsX3Jlc3VsdHMuanNvbicsIGZ1bmN0aW9uKHhocikgewot
ICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKChuZXcgTlJXVFJlc3VsdHNQYXJzZXIoKSkucGFy
c2UoeGhyLnJlc3BvbnNlVGV4dCkpOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlvbih4aHIp
IHsKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLQot
ICAgIF9mZXRjaEFuZFBhcnNlT1JXVFJlc3VsdHM6IGZ1bmN0aW9uKGJ1aWxkTmFtZSwgc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBwYXJzZWRCdWlsZE5hbWUg
PSB0aGlzLl9idWlsZGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKGJ1aWxkTmFtZSk7Ci0KLSAg
ICAgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82MjM4MCB3YXMgZml4ZWQgaW4gcjg5NjEwLgot
ICAgICAgICB2YXIgcmVzdWx0c0hUTUxTdXBwb3J0c1Rvb01hbnlGYWlsdXJlc0luZm8gPSBwYXJz
ZWRCdWlsZE5hbWUucmV2aXNpb24gPj0gODk2MTA7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHsg
dGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGZhbHNlIH07Ci0KLSAgICAgICAgdmFyIHNlbGYg
PSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChzdWNj
ZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgICAgIGdldFJlc291cmNlKHNl
bGYuX2J1aWxkZXIucmVzdWx0c1BhZ2VVUkwoYnVpbGROYW1lKSwgZnVuY3Rpb24oeGhyKSB7Ci0g
ICAgICAgICAgICAgICAgdmFyIHBhcnNlUmVzdWx0ID0gKG5ldyBPUldUUmVzdWx0c1BhcnNlcigp
KS5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICByZXN1bHQudGVzdHMg
PSBwYXJzZVJlc3VsdC50ZXN0czsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0c0hUTUxTdXBw
b3J0c1Rvb01hbnlGYWlsdXJlc0luZm8pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50b29N
YW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFpbHVyZXM7Ci0gICAgICAgICAgICAg
ICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZnVuY3Rp
b24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGZldGNoIHJlc3VsdHMu
aHRtbC4KLSAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGZldGNoTnVtYmVyT2ZGYWlsaW5nVGVzdHMo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBzZWxmLl9idWls
ZGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKHBhcnNlZEJ1aWxkTmFtZS5idWlsZE51bWJlciwg
ZnVuY3Rpb24oZmFpbGluZ1Rlc3RDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHRvb01hbnlGYWlsdXJlczsKLQotICAgICAg
ICAgICAgICAgIGlmIChmYWlsaW5nVGVzdENvdW50IDwgMCkgewotICAgICAgICAgICAgICAgICAg
ICAvLyBUaGUgbnVtYmVyIG9mIGZhaWxpbmcgdGVzdHMgY291bGRuJ3QgYmUgZGV0ZXJtaW5lZC4K
LSAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc3VjY2Vzc0Nh
bGxiYWNrKGZhaWxpbmdUZXN0Q291bnQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQot
ICAgICAgICBpZiAocmVzdWx0c0hUTUxTdXBwb3J0c1Rvb01hbnlGYWlsdXJlc0luZm8pIHsKLSAg
ICAgICAgICAgIGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICBzdWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBmZXRjaE51bWJlck9mRmFpbGluZ1Rl
c3RzKGZ1bmN0aW9uKGZhaWxpbmdUZXN0Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwgdGVz
dHMgcGFzc2VkLCBzbyBubyByZXN1bHRzLmh0bWwgd2FzIGdlbmVyYXRlZC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgLy8gU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBmZXRjaGluZyByZXN1bHRzLgotICAgICAg
ICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgfSwgZXJyb3JD
YWxsYmFjayk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGZldGNoTnVtYmVyT2ZGYWlsaW5nVGVzdHMoZnVuY3Rpb24oZmFpbGluZ1Rl
c3RDb3VudCkgewotICAgICAgICAgICAgaWYgKCFmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAgICAg
ICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBzdWNjZXNzQ2Fs
bGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoaWNoIHRlc3RzIGZhaWxlZC4KLSAgICAgICAgICAg
IGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBz
dWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2spOwot
ICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFyc2VyLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiAyNjg3MzEpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBOUldUUmVzdWx0c1Bh
cnNlcigpIHsKLX0KLQotTlJXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0gewotICAgIHBhcnNl
OiBmdW5jdGlvbih1bmV4cGVjdGVkUmVzdWx0c0pTKSB7Ci0gICAgICAgIHZhciBkYXRhOwotICAg
ICAgICBmdW5jdGlvbiBBRERfUkVTVUxUUyh4KSB7Ci0gICAgICAgICAgICBkYXRhID0geDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGV2YWwodW5leHBlY3RlZFJlc3VsdHNKUyk7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRhdGEpOwotCi0gICAgICAgIHZhciByZXN1bHQgPSB7IHRlc3RzOiB7fSwg
dG9vTWFueUZhaWx1cmVzOiBkYXRhLmludGVycnVwdGVkIH07Ci0KLSAgICAgICAgZnVuY3Rpb24g
Zm9yRWFjaFRlc3QodHJlZSwgaGFuZGxlciwgb3B0X3ByZWZpeCkgewotICAgICAgICAgICAgdmFy
IHByZWZpeCA9IG9wdF9wcmVmaXggfHwgJyc7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGtleSBp
biB0cmVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5ld1ByZWZpeCA9IHByZWZpeCA/IChwcmVm
aXggKyAnLycgKyBrZXkpIDoga2V5OwotICAgICAgICAgICAgICAgIGlmICgnYWN0dWFsJyBpbiB0
cmVlW2tleV0pIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3RPYmplY3QgPSB0cmVlW2tl
eV07Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RPYmplY3QubmFtZSA9IG5ld1ByZWZpeDsKLSAg
ICAgICAgICAgICAgICAgICAgaGFuZGxlcih0ZXN0T2JqZWN0KTsKLSAgICAgICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yRWFjaFRlc3QodHJlZVtrZXldLCBoYW5kbGVy
LCBuZXdQcmVmaXgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gaXNGYWlsdXJlRXhwZWN0ZWQoZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgICAgICAgICAgaWYg
KGFjdHVhbCA9PT0gJ1NLSVAnKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
ICAgICAgICB2YXIgZXhwZWN0ZWRBcnJheSA9IGV4cGVjdGVkLnNwbGl0KCcgJyk7Ci0gICAgICAg
ICAgICB2YXIgYWN0dWFsQXJyYXkgPSBhY3R1YWwuc3BsaXQoJyAnKTsKLSAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgYWN0dWFsQXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAg
ICAgICB2YXIgYWN0dWFsVmFsdWUgPSBhY3R1YWxBcnJheVtpXTsKLSAgICAgICAgICAgICAgICBp
ZiAoZXhwZWN0ZWRBcnJheS5jb250YWlucyhhY3R1YWxWYWx1ZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5LmNvbnRhaW5z
KCdGQUlMJykgJiYgWydJTUFHRScsICdURVhUJywgJ0lNQUdFK1RFWFQnXS5jb250YWlucyhhY3R1
YWxWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjb252ZXJ0TlJXVFJlc3VsdFN0cmluZyhu
cnd0UmVzdWx0KSB7Ci0gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB7Ci0gICAgICAg
ICAgICAgICAgQ1JBU0g6ICdjcmFzaCcsCi0gICAgICAgICAgICAgICAgJ0lNQUdFK1RFWFQnOiAn
ZmFpbCcsCi0gICAgICAgICAgICAgICAgSU1BR0U6ICdmYWlsJywKLSAgICAgICAgICAgICAgICBU
RVhUOiAnZmFpbCcsCi0gICAgICAgICAgICAgICAgVElNRU9VVDogJ3RpbWVvdXQnLAotICAgICAg
ICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKG5yd3RSZXN1bHQgaW4gdHJhbnNsYXRpb25zKQot
ICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnNbbnJ3dFJlc3VsdF07Ci0KLSAgICAg
ICAgICAgIGlmIChucnd0UmVzdWx0LmNvbnRhaW5zKCcgJykpCi0gICAgICAgICAgICAgICAgcmV0
dXJuICdmbGFreSc7Ci0KLSAgICAgICAgICAgIHJldHVybiAndW5rbm93biBmYWlsdXJlIHR5cGUg
JyArIG5yd3RSZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JFYWNoVGVzdChkYXRhLnRl
c3RzLCBmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICAgICAgICBpZiAoaXNGYWlsdXJlRXhwZWN0ZWQo
dGVzdC5leHBlY3RlZCwgdGVzdC5hY3R1YWwpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0Lm5hbWVdID0geyBmYWlsdXJlVHlwZTogY29udmVy
dE5SV1RSZXN1bHRTdHJpbmcodGVzdC5hY3R1YWwpIH07Ci0gICAgICAgIH0pOwotCi0gICAgICAg
IHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9OZXdCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL05l
d0J1Z0Zvcm0uanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L05ld0J1Z0Zvcm0uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotZnVuY3Rpb24gTmV3QnVnRm9ybSgpIHsKLX0KLQotTmV3QnVnRm9ybS5wcm90b3R5cGUgPSB7
Ci0gICAgZG9tRWxlbWVudDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBmb3JtRGF0YSA9IHt9
OwotCi0gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudCkKLSAgICAgICAgICAgIGZvcm1EYXRhLmNv
bXBvbmVudCA9IHRoaXMuY29tcG9uZW50OwotICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlvbikK
LSAgICAgICAgICAgIGZvcm1EYXRhLmNvbW1lbnQgPSB0aGlzLmRlc2NyaXB0aW9uOwotICAgICAg
ICBpZiAodGhpcy5rZXl3b3JkcykKLSAgICAgICAgICAgIGZvcm1EYXRhLmtleXdvcmRzID0gdGhp
cy5rZXl3b3JkczsKLSAgICAgICAgaWYgKHRoaXMub3BlcmF0aW5nU3lzdGVtKQotICAgICAgICAg
ICAgZm9ybURhdGEub3Bfc3lzID0gdGhpcy5vcGVyYXRpbmdTeXN0ZW07Ci0gICAgICAgIGlmICh0
aGlzLnBsYXRmb3JtKQotICAgICAgICAgICAgZm9ybURhdGEucmVwX3BsYXRmb3JtID0gdGhpcy5w
bGF0Zm9ybTsKLSAgICAgICAgaWYgKHRoaXMucHJvZHVjdCkKLSAgICAgICAgICAgIGZvcm1EYXRh
LnByb2R1Y3QgPSB0aGlzLnByb2R1Y3Q7Ci0gICAgICAgIGlmICh0aGlzLnRpdGxlKQotICAgICAg
ICAgICAgZm9ybURhdGEuc2hvcnRfZGVzYyA9IHRoaXMudGl0bGU7Ci0gICAgICAgIGlmICh0aGlz
LnVybCkKLSAgICAgICAgICAgIGZvcm1EYXRhLmJ1Z19maWxlX2xvYyA9IHRoaXMudXJsOwotICAg
ICAgICBpZiAodGhpcy52ZXJzaW9uKQotICAgICAgICAgICAgZm9ybURhdGEudmVyc2lvbiA9IHRo
aXMudmVyc2lvbjsKLQotICAgICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2Zvcm0nKTsKLSAgICAgICAgZm9ybS5tZXRob2QgPSAnUE9TVCc7Ci0gICAgICAgIGZvcm0uYWN0
aW9uID0gY29uZmlnLmtCdWd6aWxsYVVSTCArICcvZW50ZXJfYnVnLmNnaSc7Ci0KLSAgICAgICAg
Zm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7Ci0gICAgICAgICAgICB2YXIgaW5wdXQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwotICAgICAgICAgICAgaW5wdXQudHlwZSA9ICdo
aWRkZW4nOwotICAgICAgICAgICAgaW5wdXQubmFtZSA9IGtleTsKLSAgICAgICAgICAgIGlucHV0
LnZhbHVlID0gZm9ybURhdGFba2V5XTsKLSAgICAgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQoaW5w
dXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZvcm07Ci0gICAgfSwKLX07CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwko
cmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTmV3QnVnRm9ybV91
bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
KGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ05ld0J1Z0Zvcm0nKTsKLQotY29uc3QgdGVzdEZvcm1E
YXRhID0gewotICAgIGNvbXBvbmVudDogeyBmb3JtTmFtZTogJ2NvbXBvbmVudCcsIHZhbHVlOiAn
VG9vbHMgLyBUZXN0cycgfSwKLSAgICBkZXNjcmlwdGlvbjogeyBmb3JtTmFtZTogJ2NvbW1lbnQn
LCB2YWx1ZTogJ1RoaXMgaXMgYSBkZXNjcmlwdGlvblxuXG53aXRoXG5uZXdsaW5lcycgfSwKLSAg
ICBrZXl3b3JkczogeyBmb3JtTmFtZTogJ2tleXdvcmRzJywgdmFsdWU6ICdRdCwgUGxhdGZvcm1P
bmx5JyB9LAotICAgIG9wZXJhdGluZ1N5c3RlbTogeyBmb3JtTmFtZTogJ29wX3N5cycsIHZhbHVl
OiAnV2luZG93cyA3JyB9LAotICAgIHBsYXRmb3JtOiB7IGZvcm1OYW1lOiAncmVwX3BsYXRmb3Jt
JywgdmFsdWU6ICdQQycgfSwKLSAgICBwcm9kdWN0OiB7IGZvcm1OYW1lOiAncHJvZHVjdCcsIHZh
bHVlOiAnV2ViS2l0JyB9LAotICAgIHRpdGxlOiB7IGZvcm1OYW1lOiAnc2hvcnRfZGVzYycsIHZh
bHVlOiAnVGhpcyBpcyBhIGJ1ZyB0aXRsZScgfSwKLSAgICB1cmw6IHsgZm9ybU5hbWU6ICdidWdf
ZmlsZV9sb2MnLCB2YWx1ZTogJ2h0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PWZvbyNhbmNo
b3InIH0sCi0gICAgdmVyc2lvbjogeyBmb3JtTmFtZTogJ3ZlcnNpb24nLCB2YWx1ZTogJzUyOCsg
KE5pZ2h0bHkgQnVpbGQpJyB9LAotfTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0oKSB7Ci0g
ICAgdmFyIGZvcm0gPSBuZXcgTmV3QnVnRm9ybSgpOwotICAgIGZvciAodmFyIGtleSBpbiB0ZXN0
Rm9ybURhdGEpIHsKLSAgICAgICAgZm9ybVtrZXldID0gdGVzdEZvcm1EYXRhW2tleV0udmFsdWU7
Ci0gICAgfQotICAgIHJldHVybiBmb3JtOwotfQotCi10ZXN0KCdwcm9wZXJ0aWVzIGFyZSBzZXQn
LCA5LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKCk7Ci0KLSAg
ICBmb3IgKHZhciBrZXkgaW4gdGVzdEZvcm1EYXRhKSB7Ci0gICAgICAgIGVxdWFsKGZvcm1ba2V5
XSwgdGVzdEZvcm1EYXRhW2tleV0udmFsdWUpOwotICAgIH0KLX0pOwotCi10ZXN0KCdkb21FbGVt
ZW50KCkgcG9zdHMgdG8gZW50ZXJfYnVnLmNnaScsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBm
b3JtRWxlbWVudCA9IGNyZWF0ZVRlc3RGb3JtKCkuZG9tRWxlbWVudCgpOwotICAgIGVxdWFsKGZv
cm1FbGVtZW50LnRhZ05hbWUsICdGT1JNJyk7Ci0gICAgZXF1YWwoZm9ybUVsZW1lbnQubWV0aG9k
LCAncG9zdCcpOwotICAgIGVxdWFsKGZvcm1FbGVtZW50LmFjdGlvbiwgJ2h0dHBzOi8vYnVncy53
ZWJraXQub3JnL2VudGVyX2J1Zy5jZ2knKTsKLX0pOwotCi10ZXN0KCdkb21FbGVtZW50KCkgY29u
dGFpbnMgb25seSBoaWRkZW4gaW5wdXQgZWxlbWVudHMnLCA5LCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZWxlbWVudHMgPSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKS5lbGVtZW50czsKLSAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGVx
dWFsKGVsZW1lbnRzW2ldLnR5cGUsICdoaWRkZW4nKTsKLSAgICB9Ci19KTsKLQotdGVzdCgnZG9t
RWxlbWVudCgpIGNvbnRhaW5zIGFsbCBmb3JtIHZhbHVlcycsIDksIGZ1bmN0aW9uKCkgewotICAg
IHZhciBmb3JtRWxlbWVudCA9IGNyZWF0ZVRlc3RGb3JtKCkuZG9tRWxlbWVudCgpOwotCi0gICAg
Zm9yICh2YXIga2V5IGluIHRlc3RGb3JtRGF0YSkgewotICAgICAgICB2YXIgZGF0YSA9IHRlc3RG
b3JtRGF0YVtrZXldOwotICAgICAgICBlcXVhbChmb3JtRWxlbWVudFtkYXRhLmZvcm1OYW1lXS52
YWx1ZSwgZGF0YS52YWx1ZSwga2V5KTsKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBPUldUUmVz
dWx0c1BhcnNlcigpIHsKLX0KLQotT1JXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0gewotICAg
IHBhcnNlOiBmdW5jdGlvbihyZXN1bHRzSFRNTFN0cmluZykgewotICAgICAgICB2YXIgcmVzdWx0
ID0geyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZmFsc2UgfTsKLQotICAgICAgICB2YXIg
cm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgcm9vdC5pbm5l
ckhUTUwgPSByZXN1bHRzSFRNTFN0cmluZzsKLQotICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBv
bGQgcmVzdWx0cy5odG1sIGZpbGVzIHdvbid0IGNvbnRhaW4gdGhpcyBlbGVtZW50IGV2ZW4gaWYg
d2UgaGFkIHRvIHN0b3AKLSAgICAgICAgLy8gcnVubmluZyBlYXJseSBkdWUgdG8gdG9vIG1hbnkg
ZmFpbHVyZXMuIE91ciBjYWxsZXIgd2lsbCBoYXZlIHRvIGZpZ3VyZSB0aGF0IG91dAotICAgICAg
ICAvLyB0aGVtc2VsdmVzLgotICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gcm9vdC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdG9wcGVkLXJ1bm5pbmctZWFybHktbWVzc2FnZScpLmxl
bmd0aCA+IDA7Ci0KLSAgICAgICAgZnVuY3Rpb24gcGFyc2VSZXN1bHRUYWJsZShyZWdleCkgewot
ICAgICAgICAgICAgdmFyIHBhcmFncmFwaCA9IEFycmF5LnByb3RvdHlwZS5maW5kRmlyc3QuY2Fs
bChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKSwgZnVuY3Rpb24ocGFyYWdyYXBoKSB7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QocGFyYWdyYXBoLmlubmVyVGV4dCk7Ci0gICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmICghcGFyYWdyYXBoKQotICAgICAgICAgICAgICAg
IHJldHVybiBbXTsKLSAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFncmFwaC5uZXh0RWxlbWVu
dFNpYmxpbmc7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJsZS5ub2RlTmFtZSA9PT0g
J1RBQkxFJyk7Ci0gICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHRh
YmxlLnJvd3MsIGZ1bmN0aW9uKHJvdykgewotICAgICAgICAgICAgICAgIHZhciBsaW5rcyA9IHJv
dy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOwotICAgICAgICAgICAgICAgIHZhciByZXN1bHQg
PSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6IGxpbmtzWzBdLmlubmVyVGV4dCwKLSAgICAg
ICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGlua3Mu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL15jcmFzaCBs
b2cgXCgoLiopXCkkLy5leGVjKGxpbmtzW2ldLmlubmVyVGV4dCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0LmNyYXNoaW5nU3ltYm9sID0gbWF0Y2hbMV07Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBwYXJz
ZVJlc3VsdFRhYmxlKC9kaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHMvKS5mb3JFYWNoKGZ1
bmN0aW9uKHRlc3REYXRhKSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFt
ZV0gPSB7IGZhaWx1cmVUeXBlOiAnZmFpbCcgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHBhcnNl
UmVzdWx0VGFibGUoL3RpbWVkIG91dC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKLSAg
ICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6ICd0
aW1lb3V0JyB9OwotICAgICAgICB9KTsKLSAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvdG9vbCB0
byBjcmFzaC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKLSAgICAgICAgICAgIHJlc3Vs
dC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlVHlwZTog
J2NyYXNoJywKLSAgICAgICAgICAgICAgICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jhc2hp
bmdTeW1ib2wsCi0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgcGFyc2VSZXN1
bHRUYWJsZSgvV2ViIHByb2Nlc3MgdG8gY3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRh
KSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7Ci0gICAgICAg
ICAgICAgICAgZmFpbHVyZVR5cGU6ICd3ZWJwcm9jZXNzIGNyYXNoJywKLSAgICAgICAgICAgICAg
ICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCi0gICAgICAgICAgICB9
OwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi19OwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1BlcnNpc3RlbnRDYWNoZS5qcwkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzCShu
b25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBQZXJzaXN0ZW50
Q2FjaGUgPSB7Ci0gICAgY29udGFpbnM6IGZ1bmN0aW9uKGtleSkgewotICAgICAgICByZXR1cm4g
a2V5IGluIGxvY2FsU3RvcmFnZTsKLSAgICB9LAotCi0gICAgZ2V0OiBmdW5jdGlvbihrZXkpIHsK
LSAgICAgICAgdmFyIHN0cmluZyA9IGxvY2FsU3RvcmFnZVtrZXldOwotICAgICAgICBpZiAoIXN0
cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgLy8gRklYTUU6IFdl
IGNvdWxkIHVwZGF0ZSB0aGUgZGF0ZSBzdG9yZWQgd2l0aCB0aGUgdmFsdWUgaGVyZSB0byBtYWtl
IHRoaXMgbW9yZSBvZiBhbiBNUlUKLSAgICAgICAgLy8gY2FjaGUgKGluc3RlYWQgb2YgbW9zdC1y
ZWNlbnRseS1zdG9yZWQpLCBidXQgdGhhdCB3b3VsZCByZXN1bHQgaW4gZXh0cmEgZGlzayBhY2Nl
c3MgdGhhdAotICAgICAgICAvLyBtaWdodCBub3QgYmUgc28gZ3JlYXQuCi0gICAgICAgIHJldHVy
biBKU09OLnBhcnNlKHRoaXMuX3BhcnNlRGF0ZUFuZEpTT05Gcm9tU3RyaW5nKHN0cmluZykuanNv
bik7Ci0gICAgfSwKLQotICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgICAgICB0
cnkgewotICAgICAgICAgICAgbG9jYWxTdG9yYWdlW2tleV0gPSB0aGlzLl9hZGREYXRlVG9KU09O
U3RyaW5nKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsKLSAg
ICAgICAgICAgIGlmIChlLmNvZGUgIT09IDIyKSAvLyBRVU9UQV9FWENFRURFRF9FUlIKLSAgICAg
ICAgICAgICAgICB0aHJvdyBlOwotCi0gICAgICAgICAgICAvLyBXZSd2ZSBydW4gb3V0IG9mIHNw
YWNlIGluIGxvY2FsU3RvcmFnZS4gTGV0J3MganVzdCB0aHJvdyBhd2F5IGV2ZXJ5dGhpbmcgYW5k
IHRyeQotICAgICAgICAgICAgLy8gYWdhaW4uCi0gICAgICAgICAgICB0aGlzLl9lbXB0eUNhY2hl
KCk7Ci0gICAgICAgICAgICB0aGlzLnNldChrZXksIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICBwcnVuZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBub3cgPSBEYXRlLm5vdygp
OwotICAgICAgICBmb3IgKHZhciBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgICAgICB2
YXIgZGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZUFuZEpTT05Gcm9tU3RyaW5nKGxvY2FsU3RvcmFnZVtr
ZXldKS5kYXRlOwotICAgICAgICAgICAgaWYgKG5vdyAtIGRhdGUgPD0gdGhpcy5fZGF0YUFnZUxp
bWl0TVMpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBkZWxldGUgbG9j
YWxTdG9yYWdlW2tleV07Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNldCh0aGlzLl9sYXN0
UHJ1bmVEYXRlS2V5LCBub3cpOwotICAgIH0sCi0KLSAgICBfYWRkRGF0ZVRvSlNPTlN0cmluZzog
ZnVuY3Rpb24oanNvblN0cmluZykgewotICAgICAgICByZXR1cm4gRGF0ZS5ub3coKSArIHRoaXMu
X2RhdGVBbmRKU09OU2VwYXJhdG9yICsganNvblN0cmluZzsKLSAgICB9LAotCi0gICAgX2RhdGFB
Z2VMaW1pdE1TOiAxMDAwICogNjAgKiA2MCAqIDI0ICogMS4xLCAvLyBKdXN0IG92ZXIgb25lIGRh
eQotCi0gICAgX2RhdGVBbmRKU09OU2VwYXJhdG9yOiAnOiAnLAotCi0gICAgX2VtcHR5Q2FjaGU6
IGZ1bmN0aW9uKCkgewotICAgICAgICBmb3IgKHZhciBrZXkgaW4gbG9jYWxTdG9yYWdlKQotICAg
ICAgICAgICAgZGVsZXRlIGxvY2FsU3RvcmFnZVtrZXldOwotICAgIH0sCi0KLSAgICBfcGFyc2VE
YXRlQW5kSlNPTkZyb21TdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykgewotICAgICAgICB2YXIgc2Vw
YXJhdG9ySW5kZXggPSBzdHJpbmcuaW5kZXhPZih0aGlzLl9kYXRlQW5kSlNPTlNlcGFyYXRvcik7
Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShwYXJzZUludChz
dHJpbmcuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KSwgMTApKSwKLSAgICAgICAgICAgIGpz
b246IHN0cmluZy5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyB0aGlzLl9kYXRlQW5kSlNPTlNl
cGFyYXRvci5sZW5ndGgpLAotICAgICAgICB9OwotICAgIH0sCi19OwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybS5qcwkocmV2aXNpb24gMjY4NzMx
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzCShub25l
eGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFRlc3RSZWxh
dGVkQnVnRm9ybSh0ZXN0ZXIpIHsKLSAgICBOZXdCdWdGb3JtLmNhbGwodGhpcyk7Ci0KLSAgICB0
aGlzLl90ZXN0ZXIgPSB0ZXN0ZXI7Ci0KLSAgICB0aGlzLmNvbXBvbmVudCA9IFdlYktpdEJ1Z3pp
bGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzOwotICAgIHRoaXMua2V5d29yZHMgPSBbCi0gICAgICAg
IFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsCi0gICAgICAgIFdlYktp
dEJ1Z3ppbGxhLktleXdvcmQuTWFraW5nQm90c1JlZCwKLSAgICBdLmpvaW4oJywgJyk7Ci0gICAg
dGhpcy5vcGVyYXRpbmdTeXN0ZW0gPSB0aGlzLl9jb21wdXRlT3BlcmF0aW5nU3lzdGVtKCk7Ci0g
ICAgdGhpcy5wbGF0Zm9ybSA9IHRoaXMuX2NvbXB1dGVQbGF0Zm9ybSgpOwotICAgIHRoaXMucHJv
ZHVjdCA9IFdlYktpdEJ1Z3ppbGxhLlByb2R1Y3QuV2ViS2l0OwotICAgIHRoaXMudmVyc2lvbiA9
IFdlYktpdEJ1Z3ppbGxhLlZlcnNpb24uTmlnaHRseTsKLX0KLQotVGVzdFJlbGF0ZWRCdWdGb3Jt
LnByb3RvdHlwZSA9IHsKLSAgICBkb21FbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IGZvcm0gPSBOZXdCdWdGb3JtLnByb3RvdHlwZS5kb21FbGVtZW50LmNhbGwodGhpcyk7Ci0gICAg
ICAgIGZvcm0uY2xhc3NOYW1lID0gJ25ldy1idWctZm9ybSc7Ci0gICAgICAgIGZvcm0udGFyZ2V0
ID0gJ19ibGFuayc7Ci0gICAgICAgIHJldHVybiBmb3JtOwotICAgIH0sCi0KLSAgICBfY29tcHV0
ZU9wZXJhdGluZ1N5c3RlbTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICgvV2luZG93cyA3Ly50
ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXRCdWd6aWxs
YS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93czc7Ci0gICAgICAgIGlmICgvV2luZG93cyBYUC8udGVz
dCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVnemlsbGEu
T3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUDsKLSAgICAgICAgaWYgKC9Tbm93TGVvcGFyZC8udGVz
dCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVnemlsbGEu
T3BlcmF0aW5nU3lzdGVtLlNub3dMZW9wYXJkOwotICAgICAgICBpZiAoL0xlb3BhcmQvLnRlc3Qo
dGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLk9w
ZXJhdGluZ1N5c3RlbS5MZW9wYXJkOwotICAgICAgICByZXR1cm4gJyc7Ci0gICAgfSwKLQotICAg
IF9jb21wdXRlUGxhdGZvcm06IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoL1dpbmRvd3MvLnRl
c3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxh
LlBsYXRmb3JtLlBDOwotICAgICAgICBpZiAoL0xlb3BhcmQvLnRlc3QodGhpcy5fdGVzdGVyLm5h
bWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1hY2ludG9z
aDsKLSAgICAgICAgcmV0dXJuICcnOwotICAgIH0sCi19OwotCi1UZXN0UmVsYXRlZEJ1Z0Zvcm0u
cHJvdG90eXBlLl9fcHJvdG9fXyA9IE5ld0J1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRl
c3RzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0
UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCdUZXN0UmVsYXRlZEJ1Z0Zv
cm0nKTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSkgewotICAgIHZhciBt
b2NrQnVpbGRib3QgPSB7fTsKLSAgICBtb2NrQnVpbGRib3QucGFyc2VCdWlsZE5hbWUgPSBmdW5j
dGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gLyhcZCspLy5leGVjKGJ1aWxk
TmFtZSk7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZpc2lvbjogcGFyc2VJbnQo
bWF0Y2hbMV0sIDEwKSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJzZUludChtYXRjaFsy
XSwgMTApLAotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgbW9ja0J1aWxkZXIgPSB7fTsK
LSAgICBtb2NrQnVpbGRlci5uYW1lID0gdGVzdGVyTmFtZTsKLSAgICBtb2NrQnVpbGRlci5idWls
ZGJvdCA9IG1vY2tCdWlsZGJvdDsKLSAgICBtb2NrQnVpbGRlci5yZXN1bHRzUGFnZVVSTCA9IGZ1
bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gJ1tSRVNVTFRTIFBBR0UgVVJMICcg
KyB0aGlzLm5hbWUgKyAnLCAnICsgYnVpbGROYW1lICsgJ10nOwotICAgIH0KLQotICAgIHJldHVy
biBuZXcgVGVzdFJlbGF0ZWRCdWdGb3JtKG1vY2tCdWlsZGVyKTsKLX0KLQotdGVzdCgnY29tcG9u
ZW50IGFuZCBrZXl3b3JkcyBhcmUgc2V0JywgMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZvcm0g
PSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScpOwotCi0gICAgZXF1
YWwoZm9ybS5jb21wb25lbnQsIFdlYktpdEJ1Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzKTsK
LSAgICBkZWVwRXF1YWwoZm9ybS5rZXl3b3Jkcy5zcGxpdCgnLCAnKSwgW1dlYktpdEJ1Z3ppbGxh
LktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTWFraW5n
Qm90c1JlZF0pOwotfSk7Ci0KLWNvbnN0IHRlc3RlcnMgPSB7Ci0gICAgJ0dUSyBMaW51eCAzMi1i
aXQgUmVsZWFzZSc6IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiAnJywKLSAgICAgICAgcGxh
dGZvcm06ICcnLAotICAgIH0sCi0gICAgJ0xlb3BhcmQgSW50ZWwgUmVsZWFzZSAoVGVzdHMpJzog
ewotICAgICAgICBvcGVyYXRpbmdTeXN0ZW06IFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5c3Rl
bS5MZW9wYXJkLAotICAgICAgICBwbGF0Zm9ybTogV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0uTWFj
aW50b3NoLAotICAgIH0sCi0gICAgJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3RzKSc6
IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0
ZW0uU25vd0xlb3BhcmQsCi0gICAgICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9y
bS5NYWNpbnRvc2gsCi0gICAgfSwKLSAgICAnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSc6IHsK
LSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0ZW0u
V2luZG93czcsCi0gICAgICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9ybS5QQywK
LSAgICB9LAotICAgICdXaW5kb3dzIFhQIERlYnVnIChUZXN0cyknOiB7Ci0gICAgICAgIG9wZXJh
dGluZ1N5c3RlbTogV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUCwKLSAg
ICAgICAgcGxhdGZvcm06IFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLlBDLAotICAgIH0sCi19Owot
Ci10ZXN0KCdvcGVyYXRpbmcgc3lzdGVtIGlzIGRlZHVjZWQnLCA1LCBmdW5jdGlvbigpIHsKLSAg
ICBmb3IgKHZhciBuYW1lIGluIHRlc3RlcnMpIHsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVhdGVU
ZXN0Rm9ybShuYW1lKTsKLSAgICAgICAgZXF1YWwoZm9ybS5vcGVyYXRpbmdTeXN0ZW0sIHRlc3Rl
cnNbbmFtZV0ub3BlcmF0aW5nU3lzdGVtKTsKLSAgICB9Ci19KTsKLQotdGVzdCgncGxhdGZvcm0g
aXMgZGVkdWNlZCcsIDUsIGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFyIG5hbWUgaW4gdGVzdGVy
cykgewotICAgICAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKG5hbWUpOwotICAgICAgICBl
cXVhbChmb3JtLnBsYXRmb3JtLCB0ZXN0ZXJzW25hbWVdLnBsYXRmb3JtKTsKLSAgICB9Ci19KTsK
LQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1RyYWMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVHJhYy5qcwkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVHJhYy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE3
NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHRyYWMgPSB0cmFjIHx8IHt9OwotCi0oZnVuY3Rp
b24oKSB7Ci0KLWZ1bmN0aW9uIGZpbmRVc2luZ1JlZ0V4cChzdHJpbmcsIHJlZ2V4cCkKLXsKLSAg
ICB2YXIgbWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpOwotICAgIGlmIChtYXRjaCkKLSAgICAg
ICAgcmV0dXJuIG1hdGNoWzFdOwotICAgIHJldHVybiBudWxsOwotfQotCi1mdW5jdGlvbiBmaW5k
UmV2aWV3ZXIobWVzc2FnZSkKLXsKLSAgICB2YXIgcmVnZXhwID0gL1Jldmlld2VkIGJ5IChbXi5d
KykvOwotICAgIHJldHVybiBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVnZXhwKTsKLX0KLQot
ZnVuY3Rpb24gZmluZEF1dGhvcihtZXNzYWdlKQotewotICAgIHZhciByZWdleHAgPSAvUGF0Y2gg
YnkgKFtePF0rKSA8LzsKLSAgICByZXR1cm4gZmluZFVzaW5nUmVnRXhwKG1lc3NhZ2UsIHJlZ2V4
cCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmRCdWdJRChtZXNzYWdlKQotewotICAgIHZhciByZWdleHAg
PSAvXC9zaG93X2J1Zy5jZ2lcP2lkPShcZCspLzsKLSAgICByZXR1cm4gcGFyc2VJbnQoZmluZFVz
aW5nUmVnRXhwKG1lc3NhZ2UsIHJlZ2V4cCksIDEwKTsKLX0KLQotZnVuY3Rpb24gZmluZFJldmlz
aW9uKHRpdGxlKQotewotICAgIHZhciByZWdleHAgPSAvXlJldmlzaW9uIChcZCspOi87Ci0gICAg
cmV0dXJuIHBhcnNlSW50KGZpbmRVc2luZ1JlZ0V4cCh0aXRsZSwgcmVnZXhwKSwgMTApOwotfQot
Ci1mdW5jdGlvbiBmaW5kU3VtbWFyeShtZXNzYWdlKQotewotICAgIHZhciBsaW5lcyA9IG1lc3Nh
Z2Uuc3BsaXQoJ1xuJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2ldCi0gICAgICAgIGlmIChmaW5kQnVnSUQo
bGluZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGZpbmRSZXZpZXdlcihs
aW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBPbGQtc3R5bGUgY29tbWl0
IG1lc3NhZ2UuCi0gICAgICAgIGlmICgvXlxkXGRcZFxkLVxkXGQtXGRcZC8uZXhlYyhsaW5lKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobGluZS5sZW5ndGggPiAwKQotICAg
ICAgICAgICAgcmV0dXJuIGxpbmU7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmaW5kUmV2ZXJ0KG1l
c3NhZ2UpCi17Ci0gICAgdmFyIHJlZ2V4cCA9IC8oPzpyb2xsaW5nIG91dHxyZXZlcnRpbmcpIHIo
XGQrKVwuLzsKLSAgICB2YXIgcmV2aXNpb24gPSBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVn
ZXhwKTsKLSAgICBpZiAoIXJldmlzaW9uKQotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwotICAg
IHJldHVybiBwYXJzZUludChyZXZpc2lvbiwgMTApOwotfQotCi0vLyBGSVhNRTogQ29uc2lkZXIg
ZXhwb3NpbmcgdGhpcyBtZXRob2QgZm9yIHVuaXQgdGVzdGluZy4KLWZ1bmN0aW9uIHBhcnNlQ29t
bWl0RGF0YShyZXNwb25zZVhNTCkKLXsKLSAgICB2YXIgY29tbWl0cyA9IEFycmF5LnByb3RvdHlw
ZS5tYXAuY2FsbChyZXNwb25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaXRlbScpLCBmdW5j
dGlvbihpdGVtKSB7Ci0gICAgICAgIHZhciB0aXRsZSA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgIHZhciBhdXRob3IgPSBpdGVtLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCdhdXRob3InKVswXSB8fCBpdGVtLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdkYzpjcmVhdG9yJylbMF07Ci0gICAgICAgIGF1dGhvciA9IGF1dGhvci50ZXh0Q29udGVu
dDsKLSAgICAgICAgdmFyIHRpbWUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwdWJEYXRl
JylbMF0udGV4dENvbnRlbnQ7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgYSB2ZXJ5
IGhpZ2gtZmlkZWxpdHkgcmVwcm9kdWN0aW9uIG9mIHRoZSBjb21taXQgbWVzc2FnZSwKLSAgICAg
ICAgLy8gYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLSAgICAgICAgdmFy
IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBjb250
YWluZXIuaW5uZXJIVE1MID0gaXRlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGVzY3JpcHRpb24n
KVswXS50ZXh0Q29udGVudDsKLSAgICAgICAgdmFyIG1lc3NhZ2UgPSBjb250YWluZXIuaW5uZXJU
ZXh0OwotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAncmV2aXNpb24nOiBmaW5kUmV2
aXNpb24odGl0bGUpLAotICAgICAgICAgICAgJ3RpdGxlJzogdGl0bGUsCi0gICAgICAgICAgICAn
dGltZSc6IHRpbWUsCi0gICAgICAgICAgICAnc3VtbWFyeSc6IGZpbmRTdW1tYXJ5KG1lc3NhZ2Up
LAotICAgICAgICAgICAgJ2F1dGhvcic6IGZpbmRBdXRob3IobWVzc2FnZSkgfHwgYXV0aG9yLAot
ICAgICAgICAgICAgJ3Jldmlld2VyJzogZmluZFJldmlld2VyKG1lc3NhZ2UpLAotICAgICAgICAg
ICAgJ2J1Z0lEJzogZmluZEJ1Z0lEKG1lc3NhZ2UpLAotICAgICAgICAgICAgJ21lc3NhZ2UnOiBt
ZXNzYWdlLAotICAgICAgICAgICAgJ3JldmVydGVkUmV2aXNpb24nOiBmaW5kUmV2ZXJ0KG1lc3Nh
Z2UpLAotICAgICAgICB9OwotICAgIH0pOwotCi0gICAgcmV0dXJuIGNvbW1pdHM7Ci19Ci0KLXZh
ciBnX2NhY2hlID0gbmV3IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBjYWxs
YmFjaykgewotICAgIHZhciBleHBsb2RlZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKLQotICAgIHZh
ciBwYXRoID0gZXhwbG9kZWRLZXlbMF07Ci0gICAgdmFyIHN0YXJ0UmV2aXNpb24gPSBleHBsb2Rl
ZEtleVsxXTsKLSAgICB2YXIgZW5kUmV2aXNpb24gPSBleHBsb2RlZEtleVsyXTsKLQotICAgIHZh
ciB1cmwgPSB0cmFjLmxvZ1VSTChwYXRoLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwgdHJ1
ZSwgdHJ1ZSk7Ci0KLSAgICBuZXQuZ2V0KHVybCwgZnVuY3Rpb24oY29tbWl0RGF0YSkgewotICAg
ICAgICBjYWxsYmFjayhwYXJzZUNvbW1pdERhdGEoY29tbWl0RGF0YSkpOwotICAgIH0pOwotfSk7
Ci0KLXRyYWMuY2hhbmdlc2V0VVJMID0gZnVuY3Rpb24ocmV2aXNpb24pCi17Ci0gICAgcmV0dXJu
IGNvbmZpZy5rVHJhY1VSTCArICcvY2hhbmdlc2V0LycgKyByZXZpc2lvbjsKLX07Ci0KLXRyYWMu
bG9nVVJMID0gZnVuY3Rpb24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sIHNob3dG
dWxsQ29tbWl0TG9ncywgZm9ybWF0QXNSU1MpCi17Ci0gICAgdmFyIHF1ZXJ5UGFyYW1ldGVycyA9
IHsKLSAgICAgICAgcmV2OiBlbmRSZXZpc2lvbiwKLSAgICAgICAgc3RvcF9yZXY6IHN0YXJ0UmV2
aXNpb24sCi0gICAgICAgIC8vIFRyYWMgcmVxdWlyZXMgbGltaXQgdG8gYmUgMSBtb3JlIHRoYW4g
dGhlIG51bWJlciBvZiByZXZpc2lvbnMgd2UgYWN0dWFsbHkgd2FudCB0byBzaG93LgotICAgICAg
ICAvLyBTZWUgPGh0dHA6Ly90cmFjLmVkZ2V3YWxsLm9yZy90aWNrZXQvMTAzMTc+LgotICAgICAg
ICBsaW1pdDogZW5kUmV2aXNpb24gLSBzdGFydFJldmlzaW9uICsgMiwKLSAgICB9OwotCi0gICAg
aWYgKHNob3dGdWxsQ29tbWl0TG9ncykKLSAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLnZlcmJvc2Ug
PSAnb24nOwotICAgIGlmIChmb3JtYXRBc1JTUykKLSAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLmZv
cm1hdCA9ICdyc3MnOwotCi0gICAgcmV0dXJuIGNvbmZpZy5rVHJhY1VSTCArICcvbG9nLycgKyBw
YXRoICsgJz8nICsgJC5wYXJhbShxdWVyeVBhcmFtZXRlcnMpOwotfTsKLQotdHJhYy5yZWNlbnRD
b21taXREYXRhID0gZnVuY3Rpb24ocGF0aCwgbGltaXQsIGNhbGxiYWNrKQotewotICAgIHZhciB1
cmwgPSBjb25maWcua1RyYWNVUkwgKyAnL2xvZy8nICsgcGF0aCArICc/JyArICQucGFyYW0oewot
ICAgICAgICAndmVyYm9zZSc6ICdvbicsCi0gICAgICAgICdmb3JtYXQnOiAncnNzJywKLSAgICAg
ICAgJ2xpbWl0JzogbGltaXQsCi0gICAgfSk7Ci0KLSAgICBuZXQuZ2V0KHVybCwgZnVuY3Rpb24o
Y29tbWl0RGF0YSkgewotICAgICAgICBjYWxsYmFjayhwYXJzZUNvbW1pdERhdGEoY29tbWl0RGF0
YSkpOwotICAgIH0pOwotfTsKLQotdHJhYy5jb21taXREYXRhRm9yUmV2aXNpb25SYW5nZSA9IGZ1
bmN0aW9uKHBhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBjYWxsYmFjaykKLXsKLSAg
ICB2YXIga2V5ID0gW3BhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uXS5qb2luKCdcbicp
OwotICAgIGdfY2FjaGUuZ2V0KGtleSwgY2FsbGJhY2spOwotfTsKLQotfSkoKTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXMuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllcy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE3OCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gY3JlYXRlRGVzY3JpcHRpb25MaXN0KGl0ZW1z
KSB7Ci0gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkbCcpOwotICAgIGl0
ZW1zLmZvckVhY2goZnVuY3Rpb24ocGFpcikgewotICAgICAgICB2YXIgZHQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkdCcpOwotICAgICAgICBkdC5hcHBlbmRDaGlsZChwYWlyWzBdKTsKLSAg
ICAgICAgdmFyIGRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGQnKTsKLSAgICAgICAgZGQu
YXBwZW5kQ2hpbGQocGFpclsxXSk7Ci0gICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoZHQpOwotICAg
ICAgICBsaXN0LmFwcGVuZENoaWxkKGRkKTsKLSAgICB9KTsKLSAgICByZXR1cm4gbGlzdDsKLX0K
LQotZnVuY3Rpb24gZmV0Y2hSZXNvdXJjZSh1cmwsIG1ldGhvZCwgcXVlcnlQYXJhbWV0ZXJzLCBj
YWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVl
c3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGlmICh0aGlzLnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IC8vIEFsbG93IGEgc3RhdHVzIG9mIDAgZm9yIGVhc2llciB0ZXN0aW5nIHdpdGggbG9jYWwgZmls
ZXMuCi0gICAgICAgIGlmICghdGhpcy5zdGF0dXMgfHwgdGhpcy5zdGF0dXMgPT09IDIwMCkKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOwotICAgICAgICBlbHNlIGlmIChlcnJvckNhbGxiYWNr
KQotICAgICAgICAgICAgZXJyb3JDYWxsYmFjayh0aGlzKTsKLSAgICB9OwotCi0gICAgaWYgKG1l
dGhvZCA9PT0gJ0dFVCcgJiYgcXVlcnlQYXJhbWV0ZXJzKQotICAgICAgICB1cmwgPSBhZGRRdWVy
eVBhcmFtZXRlcnNUb1VSTCh1cmwsIHF1ZXJ5UGFyYW1ldGVycyk7Ci0KLSAgICB4aHIub3Blbiht
ZXRob2QsIHVybCk7Ci0KLSAgICBpZiAobWV0aG9kID09PSAnR0VUJykgewotICAgICAgICB4aHIu
c2VuZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGRhdGEgPSB1cmxFbmNv
ZGVRdWVyeVBhcmFtZXRlcnMocXVlcnlQYXJhbWV0ZXJzKTsKLSAgICB4aHIuc2V0UmVxdWVzdEhl
YWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcp
OwotICAgIHhoci5zZW5kKGRhdGEpOwotfQotCi1mdW5jdGlvbiBnZXRSZXNvdXJjZSh1cmwsIGNh
bGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgZmV0Y2hSZXNvdXJjZSh1cmwsICdHRVQnLCBu
dWxsLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHVybEVuY29kZVF1
ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpIHsKLSAgICB2YXIgZW5jb2RlZFBhcmFtZXRl
cnMgPSBPYmplY3Qua2V5cyhxdWVyeVBhcmFtZXRlcnMpLm1hcChmdW5jdGlvbihrZXkpIHsKLSAg
ICAgICAgcmV0dXJuIGtleSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtZXRl
cnNba2V5XSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGVuY29kZWRQYXJhbWV0ZXJzLmpvaW4oJyYn
KTsKLX0KLQotZnVuY3Rpb24gYWRkUXVlcnlQYXJhbWV0ZXJzVG9VUkwodXJsLCBxdWVyeVBhcmFt
ZXRlcnMpIHsKLSAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDApCi0gICAgICAgIHVybCArPSAn
Pyc7Ci0gICAgZWxzZQotICAgICAgICB1cmwgKz0gJyYnOwotCi0gICAgcmV0dXJuIHVybCArIHVy
bEVuY29kZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpOwotfQotCi1mdW5jdGlvbiBs
b25nZXN0Q29tbW9uUGF0aFByZWZpeChwYXRocykgewotICAgIGNvbnN0IHNlcGFyYXRvciA9ICcv
JzsKLQotICAgIHZhciBzcGxpdFBhdGhzID0gcGF0aHMubWFwKGZ1bmN0aW9uKHBhdGgpIHsgcmV0
dXJuIHBhdGguc3BsaXQoc2VwYXJhdG9yKSB9KTsKLSAgICB2YXIgZmlyc3RTcGxpdFBhdGggPSBz
cGxpdFBhdGhzLnNoaWZ0KCk7Ci0KLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBmaXJzdFNwbGl0UGF0aC5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoIXNw
bGl0UGF0aHMuZXZlcnkoZnVuY3Rpb24oc3BsaXRQYXRoKSB7IHJldHVybiBzcGxpdFBhdGhbaV0g
PT09IGZpcnN0U3BsaXRQYXRoW2ldIH0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHJl
c3VsdC5wdXNoKGZpcnN0U3BsaXRQYXRoW2ldKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJlc3VsdC5s
ZW5ndGgpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiByZXN1bHQuam9pbihzZXBh
cmF0b3IpOwotfQotCi1mdW5jdGlvbiByZW1vdmVQYXRoRXh0ZW5zaW9uKHN0cmluZykgewotICAg
IHZhciBkb3RJbmRleCA9IHN0cmluZy5sYXN0SW5kZXhPZignLicpOwotICAgIGlmIChkb3RJbmRl
eCA8IDApCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN0cmluZy5zdWJzdHJp
bmcoMCwgZG90SW5kZXgpOwotfQotCi1mdW5jdGlvbiBzb3J0ZWQoYXJyYXksIHNvcnRGdW5jdGlv
bikgewotICAgIHZhciBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7Ci0gICAgbmV3QXJyYXkuc29y
dChzb3J0RnVuY3Rpb24pOwotICAgIHJldHVybiBuZXdBcnJheTsKLX0KLQotQXJyYXkucHJvdG90
eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICByZXR1cm4gdGhpcy5pbmRleE9m
KHZhbHVlKSA+PSAwOwotfQotCi1BcnJheS5wcm90b3R5cGUuZmluZEZpcnN0ID0gZnVuY3Rpb24o
cHJlZGljYXRlKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4gdGhp
c1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19Ci0KLUFycmF5LnByb3RvdHlwZS5maW5k
TGFzdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkgewotICAgIGZvciAodmFyIGkgPSB0aGlzLmxlbmd0
aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkpCi0g
ICAgICAgICAgICByZXR1cm4gdGhpc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19Ci0K
LUFycmF5LnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICByZXR1cm4gdGhpc1t0aGlzLmxlbmd0
aCAtIDFdOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5oYXNTdHlsZUNsYXNzID0gZnVuY3Rpb24o
a2xhc3MpIHsKLSAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdcXGInICsga2xhc3MgKyAnXFxi
Jyk7Ci0gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5jbGFzc05hbWUpOwotfQotCi1FbGVtZW50
LnByb3RvdHlwZS5hZGRTdHlsZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICBpZiAodGhp
cy5oYXNTdHlsZUNsYXNzKGtsYXNzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRoaXMuY2xhc3NO
YW1lICs9ICcgJyArIGtsYXNzOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVTdHlsZUNs
YXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdcXGIn
ICsga2xhc3MgKyAnXFxiJywgJ2cnKTsKLSAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xhc3NO
YW1lLnJlcGxhY2UocmVnZXgsICcnKTsKLX0KLQotRWxlbWVudC5wcm90b3R5cGUudG9nZ2xlU3R5
bGVDbGFzcyA9IGZ1bmN0aW9uKGtsYXNzKSB7Ci0gICAgaWYgKHRoaXMuaGFzU3R5bGVDbGFzcyhr
bGFzcykpCi0gICAgICAgIHRoaXMucmVtb3ZlU3R5bGVDbGFzcyhrbGFzcyk7Ci0gICAgZWxzZQot
ICAgICAgICB0aGlzLmFkZFN0eWxlQ2xhc3Moa2xhc3MpOwotfQotCi1Ob2RlLnByb3RvdHlwZS5h
cHBlbmRDaGlsZHJlbiA9IGZ1bmN0aW9uKGNoaWxkcmVuKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChjaGls
ZHJlbltpXSk7Ci19Ci0KLU5vZGUucHJvdG90eXBlLnJlbW92ZUFsbENoaWxkcmVuID0gZnVuY3Rp
b24oKSB7Ci0gICAgd2hpbGUgKHRoaXMuZmlyc3RDaGlsZCkKLSAgICAgICAgdGhpcy5yZW1vdmVD
aGlsZCh0aGlzLmZpcnN0Q2hpbGQpOwotfQotCi1TdHJpbmcucHJvdG90eXBlLmNvbnRhaW5zID0g
ZnVuY3Rpb24oc3Vic3RyaW5nKSB7Ci0gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihzdWJzdHJpbmcp
ID49IDA7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXNfdW5pdHRl
c3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllc191
bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L1V0aWxpdGllc191bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjcgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCdVdGlsaXRpZXMnKTsKLQotdGVz
dCgnaGFzU3R5bGVDbGFzcycsIDExLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVD
bGFzcygnZm9vJykpOwotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsKLQot
ICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNs
YXNzKCdmb28nKSkKLSAgICBvayghZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7Ci0KLSAg
ICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28gZm9vJzsKLSAgICBvayhlbGVtZW50Lmhhc1N0eWxl
Q2xhc3MoJ2ZvbycpKQotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsKLQot
ICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBiYXInOwotICAgIG9rKGVsZW1lbnQuaGFzU3R5
bGVDbGFzcygnZm9vJykpCi0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7Ci0g
ICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnYmF6JykpOwotCi0gICAgZWxlbWVudC5jbGFz
c05hbWUgPSAnZm9vZCc7Ci0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykpOwot
ICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vZCcpKTsKLX0pOwotCi10ZXN0KCdhZGRT
dHlsZUNsYXNzJywgNCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygnZm9vJyk7
Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbycp
OwotCi0gICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCdiYXInKTsKLSAgICBlcXVhbChlbGVtZW50
LmNsYXNzTmFtZSwgJyBmb28gYmFyJyk7Ci0KLSAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3MoJ2Zv
bycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbyBiYXInKTsKLX0pOwotCi10
ZXN0KCdyZW1vdmVTdHlsZUNsYXNzJywgOCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQucmVtb3ZlU3R5
bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcnKTsKLQotICAg
IGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNz
KCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJycpOwotCi0gICAgZWxlbWVu
dC5jbGFzc05hbWUgPSAnIGZvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCdmb28n
KTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyAnKTsKLQotICAgIGVsZW1lbnQuY2xh
c3NOYW1lID0gJ2ZvbyBmb28nOwotICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9vJyk7
Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNz
TmFtZSA9ICdmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2ZvbycpOwot
ICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGJhcicpOwotCi0gICAgZWxlbWVudC5jbGFz
c05hbWUgPSAnZm9vIGJhciBmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3Mo
J2JhcicpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vICBmb28gJyk7Ci0KLSAg
ICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vZCcpOwotCi0gICAg
ZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3Mo
J2Zvb2QnKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJ2ZvbycpOwotfSk7Ci0KLXRl
c3QoJ3RvZ2dsZVN0eWxlQ2xhc3MnLCA1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgZWxlbWVudC50b2dnbGVTdHls
ZUNsYXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyBmb28nKTsKLQot
ICAgIGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5j
bGFzc05hbWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdiYXInOwotICAgIGVs
ZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05h
bWUsICdiYXIgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBl
bGVtZW50LnRvZ2dsZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NO
YW1lLCAnZm9vZCBmb28nKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAg
ZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdmb29kJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFz
c05hbWUsICdmb28gZm9vZCcpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvVmlld0NvbnRyb2xsZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFZpZXdDb250cm9sbGVyKGJ1aWxkYm90KSB7
Ci0gICAgdGhpcy5fYnVpbGRib3QgPSBidWlsZGJvdDsKLSAgICB0aGlzLl9uYXZpZ2F0aW9uSUQg
PSAwOwotCi0gICAgdmFyIHNlbGYgPSB0aGlzOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQn
LCBmdW5jdGlvbigpIHsgc2VsZi5sb2FkZWQoKSB9LCBmYWxzZSk7Ci0gICAgYWRkRXZlbnRMaXN0
ZW5lcignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgeyBzZWxmLnBhcnNlSGFzaChsb2NhdGlvbi5o
YXNoKSB9LCBmYWxzZSk7Ci19Ci0KLVZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKLSAgICBs
b2FkZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9oZWFkZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdoMScpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRoaXMu
X2hlYWRlcik7Ci0gICAgICAgIHRoaXMuX21haW5Db250ZW50RWxlbWVudCA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRo
aXMuX21haW5Db250ZW50RWxlbWVudCk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQodGhpcy5fZG9tRm9yQXV4aWxpYXJ5VUlFbGVtZW50cygpKTsKLQotICAgICAgICB0aGlzLnBh
cnNlSGFzaChsb2NhdGlvbi5oYXNoKTsKLSAgICB9LAotCi0gICAgcGFyc2VIYXNoOiBmdW5jdGlv
bihoYXNoKSB7Ci0gICAgICAgICsrdGhpcy5fbmF2aWdhdGlvbklEOwotCi0gICAgICAgIHZhciBt
YXRjaCA9IC8jXC8oLiopLy5leGVjKGhhc2gpOwotICAgICAgICBpZiAobWF0Y2gpCi0gICAgICAg
ICAgICB0aGlzLl9kaXNwbGF5QnVpbGRlcih0aGlzLl9idWlsZGJvdC5idWlsZGVyTmFtZWQoZGVj
b2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0
aGlzLl9kaXNwbGF5VGVzdGVycygpOwotICAgIH0sCi0KLSAgICBfZGlzcGxheUJ1aWxkZXI6IGZ1
bmN0aW9uKGJ1aWxkZXIpIHsKLSAgICAgICAgdGhpcy5fc2V0VGl0bGUoYnVpbGRlci5uYW1lKTsK
LSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7Ci0K
LSAgICAgICAgdmFyIG5hdmlnYXRpb25JRCA9IHRoaXMuX25hdmlnYXRpb25JRDsKLQotICAgICAg
ICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIChuZXcgTGF5b3V0VGVzdEhpc3RvcnlBbmFseXpl
cihidWlsZGVyKSkuc3RhcnQoZnVuY3Rpb24oZGF0YSwgc3RpbGxGZXRjaGluZ0RhdGEpIHsKLSAg
ICAgICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkgewotICAg
ICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc29tZXdoZXJlIGVsc2UuIFN0
b3AgbG9hZGluZyBkYXRhIGFib3V0IHRoaXMgdGVzdGVyLgotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICAgICAgbGlzdC5pZCA9ICdmYWlsdXJlLWhp
c3RvcnknOwotCi0gICAgICAgICAgICB2YXIgYnVpbGROYW1lcyA9IE9iamVjdC5rZXlzKGRhdGEu
aGlzdG9yeSkKLSAgICAgICAgICAgIGJ1aWxkTmFtZXMuZm9yRWFjaChmdW5jdGlvbihidWlsZE5h
bWUsIGJ1aWxkSW5kZXgsIGJ1aWxkTmFtZUFycmF5KSB7Ci0gICAgICAgICAgICAgICAgdmFyIGZh
aWxpbmdUZXN0TmFtZXMgPSBPYmplY3Qua2V5cyhkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50ZXN0
cyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmYWlsaW5nVGVzdE5hbWVzLmxlbmd0aCkKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hp
bGQoaXRlbSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgdGVzdExpc3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdvbCcpOwotICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQodGVzdExp
c3QpOwotCi0gICAgICAgICAgICAgICAgdGVzdExpc3QuY2xhc3NOYW1lID0gJ3Rlc3QtbGlzdCc7
Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gZGF0YS5oaXN0b3J5W2J1aWxk
TmFtZV0udGVzdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3RJdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEl0ZW0uYXBw
ZW5kQ2hpbGQoc2VsZi5fZG9tRm9yRmFpbGVkVGVzdChidWlsZGVyLCBidWlsZE5hbWUsIHRlc3RO
YW1lLCBkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50ZXN0c1t0ZXN0TmFtZV0pKTsKLSAgICAgICAg
ICAgICAgICAgICAgdGVzdExpc3QuYXBwZW5kQ2hpbGQodGVzdEl0ZW0pOwotICAgICAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50b29N
YW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdwJyk7Ci0gICAgICAgICAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gJ2luZm8n
OwotICAgICAgICAgICAgICAgICAgICBwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdydW4td2Via2l0LXRlc3RzIGV4aXRlZCBlYXJseSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVy
ZXMvY3Jhc2hlcy90aW1lb3V0cycpKTsKLSAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRD
aGlsZChwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgcGFzc2lu
Z0J1aWxkTmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoYnVpbGRJbmRleCArIDEgPCBidWlsZE5h
bWVBcnJheS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHBhc3NpbmdCdWlsZE5hbWUgPSBi
dWlsZE5hbWVBcnJheVtidWlsZEluZGV4ICsgMV07Ci0KLSAgICAgICAgICAgICAgICBpdGVtLmFw
cGVuZENoaWxkKHNlbGYuX2RvbUZvclJlZ3Jlc3Npb25SYW5nZShidWlsZGVyLCBidWlsZE5hbWUs
IHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0TmFtZXMpKTsKLQotICAgICAgICAgICAgICAg
IGlmIChwYXNzaW5nQnVpbGROYW1lIHx8ICFzdGlsbEZldGNoaW5nRGF0YSkgewotICAgICAgICAg
ICAgICAgICAgICB2YXIgYnVnRm9ybSA9IG5ldyBGYWlsaW5nVGVzdHNCdWdGb3JtKGJ1aWxkZXIs
IGJ1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3ROYW1lcyk7Ci0gICAgICAg
ICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yTmV3QW5kRXhpc3RpbmdC
dWdzKGJ1aWxkZXIsIGZhaWxpbmdUZXN0TmFtZXMsIGJ1Z0Zvcm0pKQotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBzZWxmLl9tYWluQ29udGVudEVsZW1l
bnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIHNlbGYuX21haW5Db250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZChsaXN0KTsKLSAgICAgICAgICAgIHNlbGYuX21haW5Db250ZW50RWxl
bWVudC5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JQb3NzaWJseUZsYWt5VGVzdHMoYnVpbGRlciwg
ZGF0YS5wb3NzaWJseUZsYWt5LCBidWlsZE5hbWVzKSk7Ci0KLSAgICAgICAgICAgIGlmICghc3Rp
bGxGZXRjaGluZ0RhdGEpCi0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnBydW5lKCk7
Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAg
X2Rpc3BsYXlUZXN0ZXJzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fc2V0VGl0bGUoJ1Rl
c3RlcnMnKTsKLSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50LnJlbW92ZUFsbENoaWxk
cmVuKCk7Ci0KLSAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcp
OwotICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobGlzdCk7Ci0K
LSAgICAgICAgdmFyIGxhdGVzdEJ1aWxkSW5mb3MgPSBbXTsKLSAgICAgICAgdmFyIG5hdmlnYXRp
b25JRCA9IHRoaXMuX25hdmlnYXRpb25JRDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVMaXN0
KCkgewotICAgICAgICAgICAgbGF0ZXN0QnVpbGRJbmZvcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGEudGVzdGVyLm5hbWUubG9jYWxlQ29tcGFyZShiLnRlc3Rlci5uYW1lKSB9KTsKLSAg
ICAgICAgICAgIGxpc3QucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGxhdGVzdEJ1
aWxkSW5mb3MuZm9yRWFjaChmdW5jdGlvbihidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAgICB2
YXIgbGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJyMvJyArIGJ1aWxkSW5mby50ZXN0ZXIubmFt
ZSwgYnVpbGRJbmZvLnRlc3Rlci5uYW1lKQotICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENo
aWxkKGxpbmspOwotICAgICAgICAgICAgICAgIGlmIChidWlsZEluZm8udG9vTWFueUZhaWx1cmVz
KQotICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCcgKHRvbyBtYW55IGZhaWx1cmVzL2NyYXNoZXMvdGltZW91dHMpJykpOwotICAgICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVUZXh0Tm9kZSgnICgnICsgYnVpbGRJbmZvLmZhaWx1cmVDb3VudCArICcgZmFp
bGluZyB0ZXN0JyArIChidWlsZEluZm8uZmFpbHVyZUNvdW50ID4gMSA/ICdzJyA6ICcnKSArICcp
JykpOwotICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAgICAg
ICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdGhp
cy5fYnVpbGRib3QuZ2V0VGVzdGVycyhmdW5jdGlvbih0ZXN0ZXJzKSB7Ci0gICAgICAgICAgICBp
ZiAoc2VsZi5fbmF2aWdhdGlvbklEICE9PSBuYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAgICAgICAg
ICAvLyBUaGUgdXNlciBoYXMgbmF2aWdhdGVkIHNvbWV3aGVyZSBlbHNlLgotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RlcnMuZm9yRWFjaChm
dW5jdGlvbih0ZXN0ZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0ZXIuZ2V0TW9zdFJlY2VudENv
bXBsZXRlZEJ1aWxkTnVtYmVyKGZ1bmN0aW9uKGJ1aWxkTnVtYmVyKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxkTnVt
YmVyIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAg
ICAgICAgdGVzdGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKGJ1aWxkTnVtYmVyLCBmdW5jdGlv
bihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWls
dXJlQ291bnQgPD0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBsYXRlc3RCdWlsZEluZm9zLnB1c2goeyB0ZXN0ZXI6IHRlc3Rl
ciwgZmFpbHVyZUNvdW50OiBmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlczogdG9vTWFueUZh
aWx1cmVzIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTGlzdCgpOwotICAgICAg
ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwot
ICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2RvbUZvclJlZ3Jlc3Npb25SYW5nZTogZnVuY3Rp
b24oYnVpbGRlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rl
c3ROYW1lcykgewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRG
cmFnbWVudCgpOwotCi0gICAgICAgIHZhciBkbEl0ZW1zID0gWwotICAgICAgICAgICAgW2RvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCdGYWlsZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1aWxk
ZXIsIGZhaWxpbmdCdWlsZE5hbWUpXSwKLSAgICAgICAgXTsKLSAgICAgICAgaWYgKHBhc3NpbmdC
dWlsZE5hbWUpCi0gICAgICAgICAgICBkbEl0ZW1zLnB1c2goW2RvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCdQYXNzZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIsIHBhc3NpbmdCdWls
ZE5hbWUpXSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChjcmVhdGVEZXNjcmlwdGlvbkxp
c3QoZGxJdGVtcykpOwotCi0gICAgICAgIGlmICghcGFzc2luZ0J1aWxkTmFtZSkKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIGZpcnN0U3VzcGVjdFJldmlzaW9uID0g
dGhpcy5fYnVpbGRib3QucGFyc2VCdWlsZE5hbWUocGFzc2luZ0J1aWxkTmFtZSkucmV2aXNpb24g
KyAxOwotICAgICAgICB2YXIgbGFzdFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMuX2J1aWxkYm90LnBh
cnNlQnVpbGROYW1lKGZhaWxpbmdCdWlsZE5hbWUpLnJldmlzaW9uOwotCi0gICAgICAgIGlmIChm
aXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIHN1c3BlY3RzQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChzdXNw
ZWN0c0NvbnRhaW5lcik7Ci0KLSAgICAgICAgdmFyIGxpbmsgPSBiYXNlLmNyZWF0ZUxpbmtOb2Rl
KHRyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJl
dmlzaW9uLCB0cnVlKSwgJ1ZpZXcgcmVncmVzc2lvbiByYW5nZSBpbiBUcmFjJyk7Ci0gICAgICAg
IHJlc3VsdC5hcHBlbmRDaGlsZChsaW5rKTsKLQotICAgICAgICBzdXNwZWN0c0NvbnRhaW5lci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnU2VhcmNoaW5nIGZvciBzdXNwZWN0
IHJldmlzaW9uc1x1MjAyNicpKTsKLQotICAgICAgICAvLyBGSVhNRTogTWF5YmUgc29tZSBvZiB0
aGlzIGNvZGUgc2hvdWxkIGdvIGluIExheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIsIG9yIHNvbWUg
b3RoZXIgY2xhc3M/Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdHJhYy5jb21t
aXREYXRhRm9yUmV2aXNpb25SYW5nZSgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwgbGFz
dFN1c3BlY3RSZXZpc2lvbiwgZnVuY3Rpb24oY29tbWl0cykgewotICAgICAgICAgICAgdmFyIGZh
aWxpbmdUZXN0TmFtZXNXaXRob3V0RXh0ZW5zaW9ucyA9IGZhaWxpbmdUZXN0TmFtZXMubWFwKHJl
bW92ZVBhdGhFeHRlbnNpb24pOwotICAgICAgICAgICAgdmFyIHN1c3BlY3RDb21taXRzID0gY29t
bWl0cy5maWx0ZXIoZnVuY3Rpb24oY29tbWl0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
aWxpbmdUZXN0TmFtZXNXaXRob3V0RXh0ZW5zaW9ucy5zb21lKGZ1bmN0aW9uKHRlc3ROYW1lKSB7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21taXQubWVzc2FnZS5jb250YWlucyh0ZXN0
TmFtZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg
ICAgc3VzcGVjdHNDb250YWluZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAgICAgICAgICAg
aWYgKCFzdXNwZWN0Q29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICB2YXIgdGl0bGUgPSAnU3VzcGVjdCByZXZpc2lvbicgKyAoc3VzcGVjdENvbW1p
dHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnKSArICc6JzsKLSAgICAgICAgICAgIHN1c3BlY3RzQ29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7Ci0KLSAg
ICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKLSAgICAg
ICAgICAgIHN1c3BlY3RzQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpOwotICAgICAgICAgICAg
bGlzdC5jbGFzc05hbWUgPSAnc3VzcGVjdC1yZXZpc2lvbnMtbGlzdCc7Ci0KLSAgICAgICAgICAg
IGZ1bmN0aW9uIGNvbXBhcmVDb21taXRzKGEsIGIpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
Yi5yZXZpc2lvbiAtIGEucmV2aXNpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxp
c3QuYXBwZW5kQ2hpbGRyZW4oc29ydGVkKHN1c3BlY3RDb21taXRzLCBjb21wYXJlQ29tbWl0cyku
bWFwKGZ1bmN0aW9uKGNvbW1pdCkgewotICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxk
KGJhc2UuY3JlYXRlTGlua05vZGUodHJhYy5jaGFuZ2VzZXRVUkwoY29tbWl0LnJldmlzaW9uKSwg
Y29tbWl0LnRpdGxlKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgICAg
ICB9KSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQot
ICAgIF9kb21Gb3JBdXhpbGlhcnlVSUVsZW1lbnRzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICAgICAgYXNpZGUu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1NvbWV0aGluZyBub3Qgd29ya2lu
Zz8gSGF2ZSBhbiBpZGVhIHRvIGltcHJvdmUgdGhpcyBwYWdlPyAnKSk7Ci0gICAgICAgIHZhciBx
dWVyeVBhcmFtZXRlcnMgPSB7Ci0gICAgICAgICAgICBwcm9kdWN0OiAnV2ViS2l0JywKLSAgICAg
ICAgICAgIGNvbXBvbmVudDogJ1Rvb2xzIC8gVGVzdHMnLAotICAgICAgICAgICAgdmVyc2lvbjog
JzUyOCsgKE5pZ2h0bHkgYnVpbGQpJywKLSAgICAgICAgICAgIGJ1Z19maWxlX2xvYzogbG9jYXRp
b24uaHJlZiwKLSAgICAgICAgICAgIGNjOiAnYXJvYmVuQGFwcGxlLmNvbScsCi0gICAgICAgICAg
ICBzaG9ydF9kZXNjOiAnVGVzdEZhaWx1cmVzIHBhZ2UgbmVlZHMgbW9yZSB1bmljb3JucyEnLAot
ICAgICAgICB9OwotICAgICAgICBhc2lkZS5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtOb2Rl
KGFkZFF1ZXJ5UGFyYW1ldGVyc1RvVVJMKGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2VudGVyX2J1
Zy5jZ2knLCBxdWVyeVBhcmFtZXRlcnMpLCAnRmlsZSBhIGJ1ZyEnLCAnX2JsYW5rJykpOwotICAg
ICAgICByZXR1cm4gYXNpZGU7Ci0gICAgfSwKLQotICAgIF9kb21Gb3JCdWlsZE5hbWU6IGZ1bmN0
aW9uKGJ1aWxkZXIsIGJ1aWxkTmFtZSkgewotICAgICAgICB2YXIgcGFyc2VkID0gdGhpcy5fYnVp
bGRib3QucGFyc2VCdWlsZE5hbWUoYnVpbGROYW1lKTsKLQotICAgICAgICB2YXIgc291cmNlTGlu
ayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC8nICsgcGFyc2VkLnJldmlzaW9uLCAncicgKyBwYXJzZWQucmV2aXNpb24pOwotICAgICAgICB2
YXIgYnVpbGRMaW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZShidWlsZGVyLmJ1aWxkVVJMKHBhcnNl
ZC5idWlsZE51bWJlciksIHBhcnNlZC5idWlsZE51bWJlcik7Ci0gICAgICAgIHZhciByZXN1bHRz
TGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoYnVpbGRlci5yZXN1bHRzUGFnZVVSTChidWlsZE5h
bWUpLCAncmVzdWx0cy5odG1sJyk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50LmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHNvdXJj
ZUxpbmspOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUoJyAoJykpOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoYnVpbGRMaW5rKTsKLSAgICAg
ICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpICgnKSk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChyZXN1bHRzTGluayk7Ci0gICAgICAgIHJlc3VsdC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScpKTsKLQotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfZG9tRm9yRmFpbGVkVGVzdDogZnVuY3Rpb24oYnVp
bGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkgewotICAgICAgICB2YXIgcmVz
dWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICByZXN1bHQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUgKyAnOiAnKSk7Ci0g
ICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCh0aGlzLl9kb21Gb3JGYWlsdXJlRGlhZ25vc2lzKGJ1
aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpKTsKLSAgICAgICAgcmV0dXJu
IHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2RvbUZvckZhaWx1cmVEaWFnbm9zaXM6IGZ1bmN0aW9u
KGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpIHsKLSAgICAgICAgdmFy
IGRpYWdub3N0aWNJbmZvID0gYnVpbGRlci5mYWlsdXJlRGlhZ25vc2lzVGV4dEFuZFVSTChidWls
ZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KTsKLSAgICAgICAgaWYgKCFkaWFnbm9zdGljSW5m
bykKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0UmVzdWx0
LmZhaWx1cmVUeXBlKTsKLQotICAgICAgICB2YXIgdGV4dEFuZENyYXNoaW5nU3ltYm9sID0gZG9j
dW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICB0ZXh0QW5kQ3Jhc2hpbmdT
eW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlhZ25vc3RpY0luZm8u
dGV4dCkpOwotICAgICAgICBpZiAodGVzdFJlc3VsdC5jcmFzaGluZ1N5bWJvbCkgewotICAgICAg
ICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7Ci0gICAgICAg
ICAgICBjb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3RSZXN1bHQu
Y3Jhc2hpbmdTeW1ib2wpKTsKLSAgICAgICAgICAgIHRleHRBbmRDcmFzaGluZ1N5bWJvbC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICgnKSk7Ci0gICAgICAgICAgICB0ZXh0
QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoY29kZSk7Ci0gICAgICAgICAgICB0ZXh0QW5k
Q3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyknKSk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoISgndXJsJyBpbiBkaWFnbm9zdGljSW5mbykpCi0g
ICAgICAgICAgICByZXR1cm4gdGV4dEFuZENyYXNoaW5nU3ltYm9sOwotCi0gICAgICAgIHJldHVy
biBiYXNlLmNyZWF0ZUxpbmtOb2RlKGRpYWdub3N0aWNJbmZvLnVybCwgdGV4dEFuZENyYXNoaW5n
U3ltYm9sKTsKLSAgICB9LAotCi0gICAgX2RvbUZvck5ld0FuZEV4aXN0aW5nQnVnczogZnVuY3Rp
b24odGVzdGVyLCBmYWlsaW5nVGVzdHMsIGJ1Z0Zvcm0pIHsKLSAgICAgICAgdmFyIHJlc3VsdCA9
IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotICAgICAgICB2YXIgY29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwotICAgICAgICByZXN1bHQuYXBwZW5k
Q2hpbGQoY29udGFpbmVyKTsKLQotICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2V4aXN0
aW5nLWFuZC1uZXctYnVncyc7Ci0KLSAgICAgICAgdmFyIGJ1Z3NDb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGJ1
Z3NDb250YWluZXIpOwotCi0gICAgICAgIGJ1Z3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ1NlYXJjaGluZyBmb3IgYnVncyByZWxhdGVkIHRvICcgKyAoZmFp
bGluZ1Rlc3RzLmxlbmd0aCA+IDEgPyAndGhlc2UgdGVzdHMnIDogJ3RoaXMgdGVzdCcpICsgJ1x1
MjAyNicpKTsKLQotICAgICAgICBidWd6aWxsYS5xdWlja1NlYXJjaCgnQUxMICcgKyBmYWlsaW5n
VGVzdHMuam9pbignfCcpLCBmdW5jdGlvbihidWdzKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1Z3Mu
bGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgYnVnc0NvbnRhaW5lci5wYXJlbnROb2RlLnJlbW92
ZUNoaWxkKGJ1Z3NDb250YWluZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgd2hpbGUgKGJ1Z3NDb250YWluZXIuZmlyc3RDaGlsZCkKLSAg
ICAgICAgICAgICAgICBidWdzQ29udGFpbmVyLnJlbW92ZUNoaWxkKGJ1Z3NDb250YWluZXIuZmly
c3RDaGlsZCk7Ci0KLSAgICAgICAgICAgIGJ1Z3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoJ0V4aXN0aW5nIGJ1Z3MgcmVsYXRlZCB0byAnICsgKGZhaWxpbmdU
ZXN0cy5sZW5ndGggPiAxID8gJ3RoZXNlIHRlc3RzJyA6ICd0aGlzIHRlc3QnKSArICc6JykpOwot
Ci0gICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7Ci0g
ICAgICAgICAgICBidWdzQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpOwotCi0gICAgICAgICAg
ICBsaXN0LmNsYXNzTmFtZSA9ICdleGlzdGluZy1idWdzLWxpc3QnOwotCi0gICAgICAgICAgICBm
dW5jdGlvbiBidWdUb0xpc3RJdGVtKGJ1ZykgewotICAgICAgICAgICAgICAgIHZhciBsaW5rID0g
YmFzZS5jcmVhdGVMaW5rTm9kZShidWcudXJsLCBidWcudGl0bGUpOwotICAgICAgICAgICAgICAg
IHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAg
ICBpdGVtLmFwcGVuZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBvcGVuQnVncyA9IGJ1Z3MuZmlsdGVy
KGZ1bmN0aW9uKGJ1ZykgeyByZXR1cm4gYnVnemlsbGEuaXNPcGVuU3RhdHVzKGJ1Zy5zdGF0dXMp
IH0pOwotICAgICAgICAgICAgdmFyIGNsb3NlZEJ1Z3MgPSBidWdzLmZpbHRlcihmdW5jdGlvbihi
dWcpIHsgcmV0dXJuICFidWd6aWxsYS5pc09wZW5TdGF0dXMoYnVnLnN0YXR1cykgfSk7Ci0KLSAg
ICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGRyZW4ob3BlbkJ1Z3MubWFwKGJ1Z1RvTGlzdEl0ZW0p
KTsKLQotICAgICAgICAgICAgaWYgKCFjbG9zZWRCdWdzLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnbGknKTsKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0KLSAgICAgICAg
ICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0Nsb3NlZCBidWdz
OicpKTsKLQotICAgICAgICAgICAgdmFyIGNsb3NlZExpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCd1bCcpOwotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChjbG9zZWRMaXN0KTsKLQot
ICAgICAgICAgICAgY2xvc2VkTGlzdC5hcHBlbmRDaGlsZHJlbihjbG9zZWRCdWdzLm1hcChidWdU
b0xpc3RJdGVtKSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHZhciBmb3JtID0gYnVnRm9ybS5k
b21FbGVtZW50KCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChmb3JtKTsKLQotICAgICAg
ICB2YXIgbGlua1RleHQgPSAnRmlsZSBidWcgZm9yICcgKyAoZmFpbGluZ1Rlc3RzLmxlbmd0aCA+
IDEgPyAndGhlc2UgZmFpbHVyZXMnIDogJ3RoaXMgZmFpbHVyZScpOwotICAgICAgICB2YXIgbGlu
ayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJyMnLCBsaW5rVGV4dCk7Ci0gICAgICAgIGxpbmsuYWRk
RXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldmVudCkgeyBmb3JtLnN1Ym1pdCgpOyBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9KTsKLQotICAgICAgICBjb250YWluZXIuYXBwZW5kQ2hp
bGQobGluayk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9kb21Gb3JQ
b3NzaWJseUZsYWt5VGVzdHM6IGZ1bmN0aW9uKGJ1aWxkZXIsIHBvc3NpYmx5Rmxha3lUZXN0RGF0
YSwgYWxsQnVpbGRzKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIHZhciBmbGFreVRlc3RzID0gT2JqZWN0LmtleXMocG9z
c2libHlGbGFreVRlc3REYXRhKTsKLSAgICAgICAgaWYgKCFmbGFreVRlc3RzLmxlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIGZsYWt5SGVhZGVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnaDInKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGZs
YWt5SGVhZGVyKTsKLSAgICAgICAgZmxha3lIZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoJ1Bvc3NpYmx5IEZsYWt5IFRlc3RzJykpOwotCi0gICAgICAgIHZhciBmbGFr
eUxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kQ2hpbGQoZmxha3lMaXN0KTsKLQotICAgICAgICBmbGFreUxpc3QuaWQgPSAncG9zc2libHkt
Zmxha3ktdGVzdHMnOwotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZmxha3lM
aXN0LmFwcGVuZENoaWxkcmVuKHNvcnRlZChmbGFreVRlc3RzKS5tYXAoZnVuY3Rpb24odGVzdE5h
bWUpIHsKLSAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGkn
KTsKLQotICAgICAgICAgICAgdmFyIGRpc2Nsb3N1cmVUcmlhbmdsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZGlzY2xvc3Vy
ZVRyaWFuZ2xlKTsKLQotICAgICAgICAgICAgZGlzY2xvc3VyZVRyaWFuZ2xlLmNsYXNzTmFtZSA9
ICdkaXNjbG9zdXJlLXRyaWFuZ2xlJzsKLSAgICAgICAgICAgIGNvbnN0IGJsYWNrUmlnaHRQb2lu
dGluZ1NtYWxsVHJpYW5nbGUgPSAnXHUyNWI4JzsKLSAgICAgICAgICAgIGRpc2Nsb3N1cmVUcmlh
bmdsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShibGFja1JpZ2h0UG9pbnRp
bmdTbWFsbFRyaWFuZ2xlKSk7Ci0KLSAgICAgICAgICAgIHZhciBmYWlsdXJlcyA9IHBvc3NpYmx5
Rmxha3lUZXN0RGF0YVt0ZXN0TmFtZV07Ci0KLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUgKyAnIChmYWlsZWQgJyArIGZhaWx1cmVz
Lmxlbmd0aCArICcgb3V0IG9mICcgKyBhbGxCdWlsZHMubGVuZ3RoICsgJyB0aW1lcyknKSk7Ci0K
LSAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKLQotICAgICAgICAg
ICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBhbmRhYmxlJzsKLQotICAgICAgICAgICAgZGlz
Y2xvc3VyZVRyaWFuZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICAgICAgaXRlbS50b2dnbGVTdHlsZUNsYXNzKCdleHBhbmRlZCcpOwotICAgICAg
ICAgICAgICAgIGlmICghaXRlbS5oYXNTdHlsZUNsYXNzKCdleHBhbmRlZCcpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5maXJz
dENoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsdXJlTGlzdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ29sJyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5hcHBl
bmRDaGlsZChmYWlsdXJlTGlzdCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUxpc3Qu
Y2xhc3NOYW1lID0gJ2ZsYWtpbmVzcy1leGFtcGxlcy1saXN0JzsKLQotICAgICAgICAgICAgICAg
ICAgICBmYWlsdXJlTGlzdC5hcHBlbmRDaGlsZHJlbihmYWlsdXJlcy5tYXAoZnVuY3Rpb24oaGlz
dG9yeUl0ZW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoc2VsZi5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIsIGhpc3RvcnlJdGVtLmJ1aWxkKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCc6ICcpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoc2VsZi5fZG9tRm9yRmFpbHVyZURpYWdub3NpcyhidWlsZGVyLCBoaXN0b3J5SXRlbS5idWls
ZCwgdGVzdE5hbWUsIGhpc3RvcnlJdGVtLnJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgICAgICAgICAgICAgIH0pKTsKLQotICAgICAgICAgICAg
ICAgICAgICB2YXIgZmFpbGluZ0J1aWxkTmFtZXMgPSBmYWlsdXJlcy5tYXAoZnVuY3Rpb24oaGlz
dG9yeUl0ZW0pIHsgcmV0dXJuIGhpc3RvcnlJdGVtLmJ1aWxkIH0pOwotICAgICAgICAgICAgICAg
ICAgICB2YXIgYnVnRm9ybSA9IG5ldyBGbGFreVRlc3RCdWdGb3JtKGJ1aWxkZXIsIGZhaWxpbmdC
dWlsZE5hbWVzLCB0ZXN0TmFtZSwgYWxsQnVpbGRzLmxhc3QoKSwgYWxsQnVpbGRzWzBdLCBhbGxC
dWlsZHMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KHNlbGYuX2RvbUZvck5ld0FuZEV4aXN0aW5nQnVncyhidWlsZGVyLCBbdGVzdE5hbWVdLCBidWdG
b3JtKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAg
IHJldHVybiBpdGVtOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICB9LAotCi0gICAgX3NldFRpdGxlOiBmdW5jdGlvbih0aXRsZSkgewotICAgICAgICBkb2N1bWVu
dC50aXRsZSA9IHRpdGxlOwotICAgICAgICB0aGlzLl9oZWFkZXIudGV4dENvbnRlbnQgPSB0aXRs
ZTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1Z3pp
bGxhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1Z3pp
bGxhLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9XZWJL
aXRCdWd6aWxsYS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1jb25zdCBXZWJLaXRCdWd6aWxsYSA9IHsKLSAgICBDb21wb25lbnQ6IHsKLSAgICAgICAgVG9v
bHNUZXN0czogJ1Rvb2xzIC8gVGVzdHMnLAotICAgIH0sCi0KLSAgICBLZXl3b3JkOiB7Ci0gICAg
ICAgIExheW91dFRlc3RGYWlsdXJlOiAnTGF5b3V0VGVzdEZhaWx1cmUnLAotICAgICAgICBNYWtp
bmdCb3RzUmVkOiAnTWFraW5nQm90c1JlZCcsCi0gICAgICAgIFJlZ3Jlc3Npb246ICdSZWdyZXNz
aW9uJywKLSAgICB9LAotCi0gICAgT3BlcmF0aW5nU3lzdGVtOiB7Ci0gICAgICAgIExlb3BhcmQ6
ICdNYWMgT1MgWCAxMC41JywKLSAgICAgICAgU25vd0xlb3BhcmQ6ICdNYWMgT1MgWCAxMC42JywK
LSAgICAgICAgV2luZG93czc6ICdXaW5kb3dzIDcnLAotICAgICAgICBXaW5kb3dzWFA6ICdXaW5k
b3dzIFhQJywKLSAgICB9LAotCi0gICAgUGxhdGZvcm06IHsKLSAgICAgICAgTWFjaW50b3NoOiAn
TWFjaW50b3NoJywKLSAgICAgICAgUEM6ICdQQycsCi0gICAgfSwKLQotICAgIFByb2R1Y3Q6IHsK
LSAgICAgICAgV2ViS2l0OiAnV2ViS2l0JywKLSAgICB9LAotCi0gICAgVmVyc2lvbjogewotICAg
ICAgICBOaWdodGx5OiAnNTI4KyAoTmlnaHRseSBidWlsZCknLAotICAgIH0sCi19OwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMJKHJldmlzaW9uIDI2ODcz
MSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzCShub25leGlz
dGVudCkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFdlYktpdEJ1aWxk
Ym90KCkgewotICAgIEJ1aWxkYm90LmNhbGwodGhpcywgJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9y
Zy8nKTsKLX0KLQotV2ViS2l0QnVpbGRib3QucHJvdG90eXBlID0gewotICAgIHBhcnNlQnVpbGRO
YW1lOiBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gL15yKFxkKykg
XCgoXGQrKVwpJC8uZXhlYyhidWlsZE5hbWUpOwotICAgICAgICBpZiAoIW1hdGNoKQotICAgICAg
ICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZpc2lv
bjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJz
ZUludChtYXRjaFsyXSwgMTApLAotICAgICAgICB9OwotICAgIH0sCi19OwotCi1XZWJLaXRCdWls
ZGJvdC5wcm90b3R5cGUuX19wcm90b19fID0gQnVpbGRib3QucHJvdG90eXBlOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9iYXNlLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9iYXNlLmpzCShub25leGlzdGVudCkKQEAgLTEsNDY0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotdmFyIGJhc2UgPSBiYXNlIHx8IHt9OwotCi0oZnVuY3Rpb24oKXsKLQotLy8gU2FmYXJp
IDUuMSBsYWNrcyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC4KLWlmICghKCdiaW5kJyBpbiBGdW5j
dGlvbi5wcm90b3R5cGUpKSB7Ci0gICAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlv
bih0aGlzT2JqZWN0KSB7Ci0gICAgICAgIHZhciBtZXRob2QgPSB0aGlzOwotICAgICAgICB2YXIg
Ym91bmRBcmd1bWVudHMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGJvdW5kQXJndW1lbnRzLnB1c2goYXJndW1l
bnRzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB2YXIgYWN0dWFsUGFyYW1ldGVycyA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBib3VuZEFyZ3VtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIGFj
dHVhbFBhcmFtZXRlcnMucHVzaChib3VuZEFyZ3VtZW50c1tpXSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgIGFjdHVhbFBhcmFtZXRlcnMucHVzaChhcmd1bWVudHNbaV0pOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5hcHBseSh0aGlzT2JqZWN0LCBh
Y3R1YWxQYXJhbWV0ZXJzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYmFzZS5hc0ludGVnZXIg
PSBmdW5jdGlvbihzdHJpbmdPckludGVnZXIpCi17Ci0gICAgaWYgKHR5cGVvZiBzdHJpbmdPcklu
dGVnZXIgPT0gJ3N0cmluZycpCi0gICAgICAgIHJldHVybiBwYXJzZUludChzdHJpbmdPckludGVn
ZXIpOwotICAgIHJldHVybiBzdHJpbmdPckludGVnZXI7Ci19OwotCi1iYXNlLmVuZHNXaXRoID0g
ZnVuY3Rpb24oc3RyaW5nLCBzdWZmaXgpCi17Ci0gICAgaWYgKHN1ZmZpeC5sZW5ndGggPiBzdHJp
bmcubGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdmFyIGV4cGVjdGVkSW5kZXgg
PSBzdHJpbmcubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDsKLSAgICByZXR1cm4gc3RyaW5nLmxhc3RJ
bmRleE9mKHN1ZmZpeCkgPT0gZXhwZWN0ZWRJbmRleDsKLX07Ci0KLWJhc2UucmVwZWF0U3RyaW5n
ID0gZnVuY3Rpb24oc3RyaW5nLCBjb3VudCkKLXsKLSAgICByZXR1cm4gbmV3IEFycmF5KGNvdW50
ICsgMSkuam9pbihzdHJpbmcpOwotfTsKLQotYmFzZS5qb2luUGF0aCA9IGZ1bmN0aW9uKHBhcmVu
dCwgY2hpbGQpCi17Ci0gICAgaWYgKHBhcmVudC5sZW5ndGggPT0gMCkKLSAgICAgICAgcmV0dXJu
IGNoaWxkOwotICAgIHJldHVybiBwYXJlbnQgKyAnLycgKyBjaGlsZDsKLX07Ci0KLWJhc2UuZGly
TmFtZSA9IGZ1bmN0aW9uKHBhdGgpCi17Ci0gICAgdmFyIGRpcmVjdG9yeUluZGV4ID0gcGF0aC5s
YXN0SW5kZXhPZignLycpOwotICAgIGlmIChkaXJlY3RvcnlJbmRleCA9PSAtMSkKLSAgICAgICAg
cmV0dXJuIHBhdGg7Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyKDAsIGRpcmVjdG9yeUluZGV4KTsK
LX07Ci0KLWJhc2UudHJpbUV4dGVuc2lvbiA9IGZ1bmN0aW9uKHVybCkKLXsKLSAgICB2YXIgaW5k
ZXggPSB1cmwubGFzdEluZGV4T2YoJy4nKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAgICAg
IHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIHVybC5zdWJzdHIoMCwgaW5kZXgpOwotfQotCi1iYXNl
LnVuaXF1aWZ5QXJyYXkgPSBmdW5jdGlvbihhcnJheSkKLXsKLSAgICB2YXIgc2VlbiA9IHt9Owot
ICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAkLmVhY2goYXJyYXksIGZ1bmN0aW9uKGluZGV4LCB2
YWx1ZSkgewotICAgICAgICBpZiAoc2Vlblt2YWx1ZV0pCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIHNlZW5bdmFsdWVdID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0LnB1c2godmFsdWUpOwot
ICAgIH0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19OwotCi1iYXNlLmZsYXR0ZW5BcnJheSA9IGZ1
bmN0aW9uKGFycmF5T2ZBcnJheXMpCi17Ci0gICAgaWYgKCFhcnJheU9mQXJyYXlzLmxlbmd0aCkK
LSAgICAgICAgcmV0dXJuIFtdOwotICAgIHJldHVybiBhcnJheU9mQXJyYXlzLnJlZHVjZShmdW5j
dGlvbihsZWZ0LCByaWdodCkgewotICAgICAgICByZXR1cm4gbGVmdC5jb25jYXQocmlnaHQpOyAg
Ci0gICAgfSk7Ci19OwotCi1iYXNlLmZpbHRlckRpY3Rpb25hcnkgPSBmdW5jdGlvbihkaWN0aW9u
YXJ5LCBwcmVkaWNhdGUpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotCi0gICAgZm9yICh2YXIg
a2V5IGluIGRpY3Rpb25hcnkpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZShrZXkpKQotICAgICAg
ICAgICAgcmVzdWx0W2tleV0gPSBkaWN0aW9uYXJ5W2tleV07Ci0gICAgfQotCi0gICAgcmV0dXJu
IHJlc3VsdDsKLX07Ci0KLWJhc2UubWFwRGljdGlvbmFyeSA9IGZ1bmN0aW9uKGRpY3Rpb25hcnks
IGZ1bmN0b3IpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotCi0gICAgZm9yICh2YXIga2V5IGlu
IGRpY3Rpb25hcnkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gZnVuY3RvcihkaWN0aW9uYXJ5W2tl
eV0pOwotICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykKLSAgICAgICAg
ICAgIHJlc3VsdFtrZXldID0gdmFsdWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX07
Ci0KLWJhc2UuZmlsdGVyVHJlZSA9IGZ1bmN0aW9uKHRyZWUsIGlzTGVhZiwgcHJlZGljYXRlKQot
ewotICAgIHZhciBmaWx0ZXJlZFRyZWUgPSB7fTsKLQotICAgIGZ1bmN0aW9uIHdhbGtTdWJ0cmVl
KHN1YnRyZWUsIGRpcmVjdG9yeSkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGNoaWxkTmFtZSBp
biBzdWJ0cmVlKSB7Ci0gICAgICAgICAgICB2YXIgY2hpbGQgPSBzdWJ0cmVlW2NoaWxkTmFtZV07
Ci0gICAgICAgICAgICB2YXIgY2hpbGRQYXRoID0gYmFzZS5qb2luUGF0aChkaXJlY3RvcnksIGNo
aWxkTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNMZWFmKGNoaWxkKSkgewotICAgICAgICAgICAg
ICAgIGlmIChwcmVkaWNhdGUoY2hpbGQpKQotICAgICAgICAgICAgICAgICAgICBmaWx0ZXJlZFRy
ZWVbY2hpbGRQYXRoXSA9IGNoaWxkOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgd2Fsa1N1YnRyZWUoY2hpbGQsIGNoaWxkUGF0aCk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICB3YWxrU3VidHJlZSh0cmVlLCAnJyk7Ci0gICAgcmV0dXJuIGZp
bHRlcmVkVHJlZTsKLX07Ci0KLWJhc2UuZm9yRWFjaERpcmVjdG9yeSA9IGZ1bmN0aW9uKHBhdGhM
aXN0LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcGF0aHNCeURpcmVjdG9yeSA9IHt9OwotICAgIHBh
dGhMaXN0LmZvckVhY2goZnVuY3Rpb24ocGF0aCkgewotICAgICAgICB2YXIgZGlyZWN0b3J5ID0g
YmFzZS5kaXJOYW1lKHBhdGgpOwotICAgICAgICBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9yeV0g
PSBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9yeV0gfHwgW107Ci0gICAgICAgIHBhdGhzQnlEaXJl
Y3RvcnlbZGlyZWN0b3J5XS5wdXNoKHBhdGgpOwotICAgIH0pOwotICAgIE9iamVjdC5rZXlzKHBh
dGhzQnlEaXJlY3RvcnkpLnNvcnQoKS5mb3JFYWNoKGZ1bmN0aW9uKGRpcmVjdG9yeSkgewotICAg
ICAgICB2YXIgcGF0aHMgPSBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9yeV07Ci0gICAgICAgIGNh
bGxiYWNrKGRpcmVjdG9yeSArICcgKCcgKyBwYXRocy5sZW5ndGggKyAnIHRlc3RzKScsIHBhdGhz
KTsKLSAgICB9KTsKLX07Ci0KLWJhc2UucGFyc2VKU09OUCA9IGZ1bmN0aW9uKGpzb25wKQotewot
ICAgIHZhciBzdGFydEluZGV4ID0ganNvbnAuaW5kZXhPZignKCcpICsgMTsKLSAgICB2YXIgZW5k
SW5kZXggPSBqc29ucC5sYXN0SW5kZXhPZignKScpOwotICAgIGlmIChzdGFydEluZGV4ID09IDAg
fHwgZW5kSW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiB7fTsKLSAgICByZXR1cm4gSlNPTi5w
YXJzZShqc29ucC5zdWJzdHIoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4KSk7Ci19
OwotCi1iYXNlLlJlcXVlc3RUcmFja2VyID0gZnVuY3Rpb24ocmVxdWVzdHNJbkZsaWdodCwgY2Fs
bGJhY2ssIGFyZ3MpCi17Ci0gICAgdGhpcy5fcmVxdWVzdHNJbkZsaWdodCA9IHJlcXVlc3RzSW5G
bGlnaHQ7Ci0gICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICB0aGlzLl9hcmdzID0g
YXJncyB8fCBbXTsKLSAgICB0aGlzLl90cnlDYWxsYmFjaygpOwotfTsKLQotYmFzZS5SZXF1ZXN0
VHJhY2tlci5wcm90b3R5cGUgPSB7Ci0gICAgX3RyeUNhbGxiYWNrOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuX3JlcXVlc3RzSW5GbGlnaHQgJiYgdGhpcy5fY2FsbGJhY2sp
Ci0gICAgICAgICAgICB0aGlzLl9jYWxsYmFjay5hcHBseShudWxsLCB0aGlzLl9hcmdzKTsKLSAg
ICB9LAotICAgIHJlcXVlc3RDb21wbGV0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgLS10
aGlzLl9yZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICB0aGlzLl90cnlDYWxsYmFjaygpOwotICAg
IH0KLX0KLQotYmFzZS5jYWxsSW5QYXJhbGxlbCA9IGZ1bmN0aW9uKGZ1bmN0aW9uTGlzdCwgY2Fs
bGJhY2spCi17Ci0gICAgdmFyIHJlcXVlc3RUcmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNr
ZXIoZnVuY3Rpb25MaXN0Lmxlbmd0aCwgY2FsbGJhY2spOwotCi0gICAgJC5lYWNoKGZ1bmN0aW9u
TGlzdCwgZnVuY3Rpb24oaW5kZXgsIGZ1bmMpIHsKLSAgICAgICAgZnVuYyhmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHJlcXVlc3RUcmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICB9
KTsKLSAgICB9KTsKLX07Ci0KLWJhc2UuY2FsbEluU2VxdWVuY2UgPSBmdW5jdGlvbihmdW5jLCBh
cmd1bWVudExpc3QsIGNhbGxiYWNrKQotewotICAgIHZhciBuZXh0SW5kZXggPSAwOwotCi0gICAg
ZnVuY3Rpb24gY2FsbE5leHQoKQotICAgIHsKLSAgICAgICAgaWYgKG5leHRJbmRleCA+PSBhcmd1
bWVudExpc3QubGVuZ3RoKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuYyhhcmd1bWVudExpc3RbbmV4dEluZGV4
KytdLCBjYWxsTmV4dCk7Ci0gICAgfQotCi0gICAgY2FsbE5leHQoKTsKLX07Ci0KLWJhc2UuQ2Fs
bGJhY2tJdGVyYXRvciA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBsaXN0T2ZBcmd1bWVudEFycmF5cykK
LXsKLSAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX25leHRJbmRleCA9
IDA7Ci0gICAgdGhpcy5fbGlzdE9mQXJndW1lbnRBcnJheXMgPSBsaXN0T2ZBcmd1bWVudEFycmF5
czsKLX07Ci0KLWJhc2UuQ2FsbGJhY2tJdGVyYXRvci5wcm90b3R5cGUuaGFzTmV4dCA9IGZ1bmN0
aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fbmV4dEluZGV4IDwgdGhpcy5fbGlzdE9mQXJndW1l
bnRBcnJheXMubGVuZ3RoOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5o
YXNQcmV2aW91cyA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fbmV4dEluZGV4IC0g
MiA+PSAwOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5jYWxsTmV4dCA9
IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIXRoaXMuaGFzTmV4dCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgdmFyIGFyZ3MgPSB0aGlzLl9saXN0T2ZBcmd1bWVudEFycmF5c1t0aGlzLl9uZXh0SW5k
ZXhdOwotICAgIHRoaXMuX25leHRJbmRleCsrOwotICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5KG51
bGwsIGFyZ3MpOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5jYWxsUHJl
dmlvdXMgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzKCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICB2YXIgYXJncyA9IHRoaXMuX2xpc3RPZkFyZ3VtZW50QXJyYXlzW3Ro
aXMuX25leHRJbmRleCAtIDJdOwotICAgIHRoaXMuX25leHRJbmRleC0tOwotICAgIHRoaXMuX2Nh
bGxiYWNrLmFwcGx5KG51bGwsIGFyZ3MpOwotfTsKLQotYmFzZS5Bc3luY2hyb25vdXNDYWNoZSA9
IGZ1bmN0aW9uKGZldGNoKQotewotICAgIHRoaXMuX2ZldGNoID0gZmV0Y2g7Ci0gICAgdGhpcy5f
ZGF0YUNhY2hlID0ge307Ci0gICAgdGhpcy5fY2FsbGJhY2tDYWNoZSA9IHt9OwotfTsKLQotYmFz
ZS5Bc3luY2hyb25vdXNDYWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oa2V5LCBjYWxsYmFj
aykKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICBpZiAoc2VsZi5fZGF0YUNhY2hlW2tl
eV0pIHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGFsd2F5cyBjYWxsaW5nIGNhbGxiYWNr
IGFzeW5jaHJvbm91c2x5LgotICAgICAgICBjYWxsYmFjayhzZWxmLl9kYXRhQ2FjaGVba2V5XSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoa2V5IGluIHNlbGYuX2NhbGxiYWNr
Q2FjaGUpIHsKLSAgICAgICAgc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldLnB1c2goY2FsbGJhY2sp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXld
ID0gW2NhbGxiYWNrXTsKLQotICAgIHNlbGYuX2ZldGNoLmNhbGwobnVsbCwga2V5LCBmdW5jdGlv
bihkYXRhKSB7Ci0gICAgICAgIHNlbGYuX2RhdGFDYWNoZVtrZXldID0gZGF0YTsKLQotICAgICAg
ICB2YXIgY2FsbGJhY2tMaXN0ID0gc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldOwotICAgICAgICBk
ZWxldGUgc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldOwotCi0gICAgICAgIGNhbGxiYWNrTGlzdC5m
b3JFYWNoKGZ1bmN0aW9uKGNhY2hlZENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBjYWNoZWRDYWxs
YmFjayhkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19OwotCi1iYXNlLkFzeW5jaHJvbm91
c0NhY2hlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9kYXRhQ2Fj
aGUgPSB7fTsKLSAgICB0aGlzLl9jYWxsYmFja0NhY2hlID0ge307Ci19Ci0KLS8qCi0gICAgTWFp
bnRhaW5zIGEgZGljdGlvbmFyeSBvZiBpdGVtcywgdHJhY2tpbmcgdGhlaXIgdXBkYXRlcyBhbmQg
cmVtb3ZpbmcgaXRlbXMgdGhhdCBoYXZlbid0IGJlZW4gdXBkYXRlZC4KLSAgICBBbiAidXBkYXRl
IiBpcyBhIGNhbGwgdG8gdGhlICJ1cGRhdGUiIG1ldGhvZC4KLSAgICBUbyByZW1vdmUgc3RhbGUg
aXRlbXMsIGNhbGwgdGhlICJyZW1vdmUiIG1ldGhvZC4gSXQgd2lsbCByZW1vdmUgYWxsCi0gICAg
aXRlbXMgdGhhdCBoYXZlIG5vdCBiZWVuIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgbGFzdCBjYWxs
IG9mICJyZW1vdmUiLgotKi8KLWJhc2UuVXBkYXRlVHJhY2tlciA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICB0aGlzLl9pdGVtcyA9IHt9OwotICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsKLX0KLQotYmFzZS5V
cGRhdGVUcmFja2VyLnByb3RvdHlwZSA9IHsKLSAgICAvKgotICAgICAgICBVcGRhdGUgYW4ge2tl
eX0ve2l0ZW19IHBhaXIuIFlvdSBjYW4gbWFrZSB0aGUgZGljdGlvbmFyeSBhY3QgYXMgYSBzZXQg
YW5kCi0gICAgICAgIHNraXAgdGhlIHtpdGVtfSwgaW4gd2hpY2ggY2FzZSB0aGUge2tleX0gaXMg
YWxzbyB0aGUge2l0ZW19LgotICAgICovCi0gICAgdXBkYXRlOiBmdW5jdGlvbihrZXksIG9iamVj
dCkKLSAgICB7Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdCB8fCBrZXk7Ci0gICAgICAgIHRoaXMu
X2l0ZW1zW2tleV0gPSBvYmplY3Q7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWRba2V5XSA9IDE7Ci0g
ICAgfSwKLSAgICBleGlzdHM6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAh
IXRoaXMuZ2V0KGtleSk7Ci0gICAgfSwKLSAgICBnZXQ6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1trZXldOwotICAgIH0sCi0gICAgbGVuZ3RoOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5faXRlbXMpLmxl
bmd0aDsKLSAgICB9LAotICAgIC8qCi0gICAgICAgIENhbGxiYWNrIHBhcmFtZXRlcnMgYXJlOgot
ICAgICAgICAtIGl0ZW0KLSAgICAgICAgLSBrZXkKLSAgICAgICAgLSB1cGRhdGVkLCB3aGljaCBp
cyB0cnVlIGlmIHRoZSBpdGVtIHdhcyB1cGRhdGVkIGFmdGVyIGxhc3QgcHVyZ2UoKSBjYWxsLgot
ICAgICovCi0gICAgZm9yRWFjaDogZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNPYmplY3QpCi0gICAg
ewotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IE9iamVjdC5rZXlzKHRoaXMuX2l0ZW1zKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsK
LSAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNba2V5XTsKLSAgICAgICAgICAgIGNh
bGxiYWNrLmNhbGwodGhpc09iamVjdCB8fCBpdGVtLCBpdGVtLCBrZXksICEhdGhpcy5fdXBkYXRl
ZFtrZXldKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rpb24o
cmVtb3ZlQ2FsbGJhY2ssIHRoaXNPYmplY3QpIHsKLSAgICAgICAgcmVtb3ZlQ2FsbGJhY2sgPSBy
ZW1vdmVDYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwotICAgICAgICB0aGlzLmZvckVhY2goZnVu
Y3Rpb24oaXRlbSwga2V5LCB1cGRhdGVkKSB7Ci0gICAgICAgICAgICBpZiAodXBkYXRlZCkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZW1vdmVDYWxsYmFjay5jYWxsKHRo
aXNPYmplY3QgfHwgaXRlbSwgaXRlbSk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5faXRlbXNb
a2V5XTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsKLSAg
ICB9Ci19Ci0KLS8vIEJhc2VkIG9uIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJv
bWUvdHJ1bmsvc3JjL2Nocm9tZS9icm93c2VyL3Jlc291cmNlcy9zaGFyZWQvanMvY3IvdWkuanMK
LWJhc2UuZXh0ZW5kcyA9IGZ1bmN0aW9uKGJhc2UsIHByb3RvdHlwZSkKLXsKLSAgICB2YXIgZXh0
ZW5kZWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0eXBlb2YgYmFzZSA9
PSAnc3RyaW5nJyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYmFzZSkgOiBiYXNlLmNhbGwodGhp
cyk7Ci0gICAgICAgIGV4dGVuZGVkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBlbGVtZW50Ll9fcHJv
dG9fXzsKLSAgICAgICAgZWxlbWVudC5fX3Byb3RvX18gPSBleHRlbmRlZC5wcm90b3R5cGU7Ci0g
ICAgICAgIHZhciBzaW5nbGV0b24gPSBlbGVtZW50LmluaXQgJiYgZWxlbWVudC5pbml0LmFwcGx5
KGVsZW1lbnQsIGFyZ3VtZW50cyk7Ci0gICAgICAgIGlmIChzaW5nbGV0b24pCi0gICAgICAgICAg
ICByZXR1cm4gc2luZ2xldG9uOwotICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0KLSAg
ICBleHRlbmRlZC5wcm90b3R5cGUgPSBwcm90b3R5cGU7Ci0gICAgcmV0dXJuIGV4dGVuZGVkOwot
fQotCi1mdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKGRpdmlzb3JJbk1pbGxp
c2Vjb25kcywgdW5pdCkKLXsKLSAgICByZXR1cm4gZnVuY3Rpb24oZGVsdGEpIHsKLSAgICAgICAg
dmFyIGRlbHRhSW5Vbml0cyA9IGRlbHRhIC8gZGl2aXNvckluTWlsbGlzZWNvbmRzOwotICAgICAg
ICByZXR1cm4gKGRlbHRhSW5Vbml0cykudG9GaXhlZCgwKSArICcgJyArIHVuaXQgKyAoZGVsdGFJ
blVuaXRzID49IDEuNSA/ICdzJyA6ICcnKSArICcgYWdvJzsKLSAgICB9Ci19Ci0KLXZhciBrTWlu
dXRlSW5NaWxsaXNlY29uZHMgPSA2MCAqIDEwMDA7Ci12YXIga1JlbGF0aXZlVGltZVNsb3RzID0g
WwotICAgIHsKLSAgICAgICAgbWF4TWlsbGlzZWNvbmRzOiBrTWludXRlSW5NaWxsaXNlY29uZHMs
Ci0gICAgICAgIGRlc2NyaWJlOiBmdW5jdGlvbihkZWx0YSkgeyByZXR1cm4gJ0p1c3Qgbm93Jzsg
fQotICAgIH0sCi0gICAgewotICAgICAgICBtYXhNaWxsaXNlY29uZHM6IDYwICoga01pbnV0ZUlu
TWlsbGlzZWNvbmRzLAotICAgICAgICBkZXNjcmliZTogY3JlYXRlUmVsYXRpdmVUaW1lRGVzY3Jp
cHRvcihrTWludXRlSW5NaWxsaXNlY29uZHMsICdtaW51dGUnKQotICAgIH0sCi0gICAgewotICAg
ICAgICBtYXhNaWxsaXNlY29uZHM6IDI0ICogNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMsCi0g
ICAgICAgIGRlc2NyaWJlOiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKDYwICoga01pbnV0
ZUluTWlsbGlzZWNvbmRzLCAnaG91cicpCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG1heE1pbGxp
c2Vjb25kczogTnVtYmVyLk1BWF9WQUxVRSwKLSAgICAgICAgZGVzY3JpYmU6IGNyZWF0ZVJlbGF0
aXZlVGltZURlc2NyaXB0b3IoMjQgKiA2MCAqIGtNaW51dGVJbk1pbGxpc2Vjb25kcywgJ2RheScp
Ci0gICAgfQotXTsKLQotLyoKLSAgICBSZXByZXNlbnQgdGltZSBhcyBkZXNjcmlwdGl2ZSB0ZXh0
LCByZWxhdGl2ZSB0byBub3cgYW5kIGdyYWR1YWxseSBkZWNyZWFzaW5nIGluIHByZWNpc2lvbjoK
LSAgICAgICAgZGVsdGEgPCAxIG1pbnV0ZXMgPT4gSnVzdCBOb3cKLSAgICAgICAgZGVsdGEgPCA2
MCBtaW51dGVzID0+IFggbWludXRlW3NdIGFnbwotICAgICAgICBkZWx0YSA8IDI0IGhvdXJzID0+
IFggaG91cltzXSBhZ28KLSAgICAgICAgZGVsdGEgPCBpbmYgPT4gWCBkYXlbc10gYWdvCi0qLwot
YmFzZS5yZWxhdGl2aXplVGltZSA9IGZ1bmN0aW9uKHRpbWUpCi17Ci0gICAgdmFyIHJlc3VsdDsK
LSAgICB2YXIgZGVsdGEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRpbWU7Ci0gICAga1JlbGF0
aXZlVGltZVNsb3RzLnNvbWUoZnVuY3Rpb24oc2xvdCkgewotICAgICAgICBpZiAoZGVsdGEgPj0g
c2xvdC5tYXhNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgcmVzdWx0ID0gc2xvdC5kZXNjcmliZShkZWx0YSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJhc2UuZ2V0VVJMUGFyYW1ldGVyID0g
ZnVuY3Rpb24obmFtZSkKLXsKLSAgICB2YXIgbWF0Y2ggPSBSZWdFeHAobmFtZSArICc9JyArICco
Lis/KSgmfCQpJykuZXhlYyhsb2NhdGlvbi5zZWFyY2gpOwotICAgIGlmICghbWF0Y2gpCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiBkZWNvZGVVUkkobWF0Y2hbMV0pCi19Ci0KLWJh
c2UudW5kZXJzY29yZWRCdWlsZGVyTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQotewotICAg
IHJldHVybiBidWlsZGVyTmFtZS5yZXBsYWNlKC9bIC4oKV0vZywgJ18nKTsKLX0KLQotYmFzZS5j
cmVhdGVMaW5rTm9kZSA9IGZ1bmN0aW9uKHVybCwgdGV4dENvbnRlbnQsIG9wdF90YXJnZXQpCi17
Ci0gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Ci0gICAgbGluay5o
cmVmID0gdXJsOwotICAgIGlmIChvcHRfdGFyZ2V0KQotICAgICAgICBsaW5rLnRhcmdldCA9IG9w
dF90YXJnZXQ7Ci0gICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0
ZXh0Q29udGVudCkpOwotICAgIHJldHVybiBsaW5rOwotfQotCi19KSgpOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvYmFzZV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvYmFzZV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2Jhc2VfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkK
QEAgLTEsNDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9kdWxl
KCJiYXNlIik7Ci0KLXRlc3QoImJpbmQiLCAzLCBmdW5jdGlvbigpIHsKLSAgICBmdW5jdGlvbiBm
dW5jKGEsIGIpIHsKLSAgICAgICAgZXF1YWxzKHRoaXMucHJvcCwgNSk7Ci0gICAgICAgIGVxdWFs
cyhhLCAiYmFuYW5hIik7Ci0gICAgICAgIGRlZXBFcXVhbChiLCBbMiwgMywgNF0pOwotICAgIH0K
LQotICAgIHZhciB0aGlzT2JqZWN0ID0gewotICAgICAgICAicHJvcCI6IDUKLSAgICB9OwotCi0g
ICAgdmFyIGJvdW5kID0gZnVuYy5iaW5kKHRoaXNPYmplY3QsICJiYW5hbmEiKTsKLSAgICBib3Vu
ZChbMiwgMywgNF0pOwotfSk7Ci0KLQotdGVzdCgiam9pblBhdGgiLCAxLCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgdmFsdWUgPSBiYXNlLmpvaW5QYXRoKCJwYXRoL3RvIiwgInRlc3QuaHRtbCIpOwot
ICAgIGVxdWFscyh2YWx1ZSwgInBhdGgvdG8vdGVzdC5odG1sIik7Ci19KTsKLQotdGVzdCgiZW5k
c1dpdGgiLCA5LCBmdW5jdGlvbigpIHsKLSAgICBvayhiYXNlLmVuZHNXaXRoKCJ4eXoiLCAiIikp
OwotICAgIG9rKGJhc2UuZW5kc1dpdGgoInh5eiIsICJ6IikpOwotICAgIG9rKGJhc2UuZW5kc1dp
dGgoInh5eiIsICJ5eiIpKTsKLSAgICBvayhiYXNlLmVuZHNXaXRoKCJ4eXoiLCAieHl6IikpOwot
ICAgIG9rKCFiYXNlLmVuZHNXaXRoKCJ4eXoiLCAid3h5eiIpKTsKLSAgICBvayghYmFzZS5lbmRz
V2l0aCgieHl6IiwgImd3eHl6IikpOwotICAgIG9rKGJhc2UuZW5kc1dpdGgoIiIsICIiKSk7Ci0g
ICAgb2soIWJhc2UuZW5kc1dpdGgoIiIsICJ6IikpOwotICAgIG9rKCFiYXNlLmVuZHNXaXRoKCJ4
eXh5IiwgInl4IikpOwotfSk7Ci0KLXRlc3QoInRyaW1FeHRlbnNpb24iLCA2LCBmdW5jdGlvbigp
IHsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCJ4eXoiKSwgInh5eiIpOwotICAgIGVx
dWFscyhiYXNlLnRyaW1FeHRlbnNpb24oInh5LnoiKSwgInh5Iik7Ci0gICAgZXF1YWxzKGJhc2Uu
dHJpbUV4dGVuc2lvbigieC55eiIpLCAieCIpOwotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRlbnNp
b24oIngueS56IiksICJ4LnkiKTsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCIueHl6
IiksICIiKTsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCIiKSwgIiIpOwotfSk7Ci0K
LXRlc3QoImpvaW5QYXRoIHdpdGggZW1wdHkgcGFyZW50IiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHZhbHVlID0gYmFzZS5qb2luUGF0aCgiIiwgInRlc3QuaHRtbCIpOwotICAgIGVxdWFscyh2
YWx1ZSwgInRlc3QuaHRtbCIpOwotfSk7Ci0KLXRlc3QoImRpck5hbWUiLCAzLCBmdW5jdGlvbigp
IHsKLSAgICBlcXVhbHMoYmFzZS5kaXJOYW1lKCJmb28uaHRtbCIpLCAiZm9vLmh0bWwiKTsKLSAg
ICBlcXVhbHMoYmFzZS5kaXJOYW1lKCJmb28vYmFyLmh0bWwiKSwgImZvbyIpOwotICAgIGVxdWFs
cyhiYXNlLmRpck5hbWUoImZvby9iYXIvYmF6Lmh0bWwiKSwgImZvby9iYXIiKTsKLX0pOwotCi10
ZXN0KCJ1bmlxdWlmeUFycmF5IiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgZGVlcEVxdWFsKGJhc2Uu
dW5pcXVpZnlBcnJheShbXSksIFtdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS51bmlxdWlmeUFycmF5
KFsiYSJdKSwgWyJhIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXkoWyJhIiwg
ImIiXSksIFsiYSIsICJiIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXkoWyJh
IiwgImIiLCAiYiJdKSwgWyJhIiwgImIiXSk7Ci0gICAgZGVlcEVxdWFsKGJhc2UudW5pcXVpZnlB
cnJheShbImEiLCAiYiIsICJiIiwgImEiXSksIFsiYSIsICJiIl0pOwotfSk7Ci0KLXRlc3QoImZs
YXR0ZW5BcnJheSIsIDUsIGZ1bmN0aW9uKCkgewotICAgIGRlZXBFcXVhbChiYXNlLmZsYXR0ZW5B
cnJheShbXSksIFtdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJdXSks
IFsiYSJdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJdLCBbImIiXV0p
LCBbImEiLCAiYiJdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJdLCBb
ImIiLCAiYyJdXSksIFsiYSIsICJiIiwgImMiXSk7Ci0gICAgZGVlcEVxdWFsKGJhc2UuZmxhdHRl
bkFycmF5KFtbImEiXSwgW10sIFsiYiJdXSksIFsiYSIsICJiIl0pOwotfSk7Ci0KLXRlc3QoImNh
bGxJblBhcmFsbGVsIiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkQ2FsbCA9IFt0
cnVlLCB0cnVlLCB0cnVlXTsKLSAgICB2YXIgZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrID0gdHJ1
ZTsKLQotICAgIGJhc2UuY2FsbEluUGFyYWxsZWwoWwotICAgICAgICBmdW5jdGlvbihjYWxsYmFj
aykgewotICAgICAgICAgICAgb2soZXhwZWN0ZWRDYWxsWzBdKTsKLSAgICAgICAgICAgIGV4cGVj
dGVkQ2FsbFswXSA9IGZhbHNlOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAgfSwK
LSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG9rKGV4cGVjdGVkQ2Fs
bFsxXSk7Ci0gICAgICAgICAgICBleHBlY3RlZENhbGxbMV0gPSBmYWxzZTsKLSAgICAgICAgICAg
IGNhbGxiYWNrKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0g
ICAgICAgICAgICBvayhleHBlY3RlZENhbGxbMl0pOwotICAgICAgICAgICAgZXhwZWN0ZWRDYWxs
WzJdID0gZmFsc2U7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9LAotICAgIF0s
IGZ1bmN0aW9uKCkgewotICAgICAgICBvayhleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2spOwotICAg
ICAgICBleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKLSAgICB9KQotfSk7Ci0KLXRl
c3QoImNhbGxJblNlcXVlbmNlIiwgNywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkQXJn
ID0gNDI7Ci0gICAgdmFyIGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IHRydWU7Ci0KLSAgICBi
YXNlLmNhbGxJblNlcXVlbmNlKGZ1bmN0aW9uKGFyZywgY2FsbGJhY2spIHsKLSAgICAgICAgb2so
YXJnIDwgNDUpOwotICAgICAgICBlcXVhbHMoYXJnLCBleHBlY3RlZEFyZysrKTsKLSAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICB9LCBbNDIsIDQzLCA0NF0sIGZ1bmN0aW9uKCkgewotICAgICAgICBv
ayhleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2spOwotICAgICAgICBleHBlY3RDb21wbGV0aW9uQ2Fs
bGJhY2sgPSBmYWxzZTsKLSAgICB9KQotfSk7Ci0KLXRlc3QoIlJlcXVlc3RUcmFja2VyIiwgNSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWR5ID0gZmFsc2U7Ci0gICAgdmFyIHRyYWNrZXIgPSBu
ZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcigxLCBmdW5jdGlvbigpIHsKLSAgICAgICAgb2socmVhZHkp
OwotICAgIH0pOwotICAgIHJlYWR5ID0gdHJ1ZTsKLSAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0
ZSgpOwotICAgIHJlYWR5ID0gZmFsc2U7Ci0KLSAgICB0cmFja2VyID0gbmV3IGJhc2UuUmVxdWVz
dFRyYWNrZXIoMiwgZnVuY3Rpb24ocGFyYW1ldGVyKSB7Ci0gICAgICAgIG9rKHJlYWR5KTsKLSAg
ICAgICAgZXF1YWxzKHBhcmFtZXRlciwgJ2FyZ3VtZW50Jyk7Ci0gICAgfSwgWydhcmd1bWVudCdd
KTsKLSAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgIHJlYWR5ID0gdHJ1ZTsKLSAg
ICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgIHJlYWR5ID0gZmFsc2U7Ci0KLSAgICB0
cmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMCwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IG9rKHRydWUpOwotICAgIH0pOwotICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0KLSAg
ICB0cmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMCk7Ci0gICAgdHJhY2tlci5yZXF1
ZXN0Q29tcGxldGUoKTsKLSAgICAvLyBTaG91bGQgbm90IGJhcmYuCi0gICAgb2sodHJ1ZSk7Ci19
KTsKLQotdGVzdCgiQ2FsbGJhY2tJdGVyYXRvciIsIDIyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIg
ZXhwZWN0ZWQgPSAwOwotICAgIHZhciBpdGVyYXRvciA9IG5ldyBiYXNlLkNhbGxiYWNrSXRlcmF0
b3IoZnVuY3Rpb24oYSwgYikgewotICAgICAgICBlcXVhbHMoYSwgJ0FyZ0EnICsgZXhwZWN0ZWQp
OwotICAgICAgICBlcXVhbHMoYiwgJ0FyZ0InICsgZXhwZWN0ZWQpOwotICAgICAgICArK2V4cGVj
dGVkOwotICAgIH0sIFsKLSAgICAgICAgWydBcmdBMCcsICdBcmdCMCddLAotICAgICAgICBbJ0Fy
Z0ExJywgJ0FyZ0IxJ10sCi0gICAgICAgIFsnQXJnQTInLCAnQXJnQjInXSwKLSAgICBdKTsKLSAg
ICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgb2soIWl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkp
Ci0gICAgaXRlcmF0b3IuY2FsbE5leHQoKTsKLSAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCi0g
ICAgb2soIWl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi0gICAgaXRlcmF0b3IuY2FsbE5leHQoKTsK
LSAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgb2soaXRlcmF0b3IuaGFzUHJldmlvdXMo
KSkKLSAgICBpdGVyYXRvci5jYWxsTmV4dCgpOwotICAgIG9rKCFpdGVyYXRvci5oYXNOZXh0KCkp
Ci0gICAgb2soaXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLSAgICBleHBlY3RlZCA9IDE7Ci0gICAg
aXRlcmF0b3IuY2FsbFByZXZpb3VzKCk7Ci0gICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQotICAg
IG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi0gICAgZXhwZWN0ZWQgPSAwOwotICAgIGl0ZXJh
dG9yLmNhbGxQcmV2aW91cygpOwotICAgIG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBvaygh
aXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLX0pOwotCi10ZXN0KCJmaWx0ZXJEaWN0aW9uYXJ5Iiwg
MywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Rpb25hcnkgPSB7Ci0gICAgICAgICdmb28nOiA0
MywKLSAgICAgICAgJ2Jhcic6IDExCi0gICAgfTsKLSAgICBkZWVwRXF1YWwoYmFzZS5maWx0ZXJE
aWN0aW9uYXJ5KGRpY3Rpb25hcnksIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSksIHsKLSAg
ICAgICAgImZvbyI6IDQzLAotICAgICAgICAiYmFyIjogMTEKLSAgICB9KTsKLSAgICBkZWVwRXF1
YWwoYmFzZS5maWx0ZXJEaWN0aW9uYXJ5KGRpY3Rpb25hcnksIGZ1bmN0aW9uKCkgeyByZXR1cm4g
ZmFsc2U7IH0pLCB7IH0pOwotICAgIGRlZXBFcXVhbChiYXNlLmZpbHRlckRpY3Rpb25hcnkoZGlj
dGlvbmFyeSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiBrZXkgPT0gJ2Zvbyc7IH0pLCB7Ci0gICAg
ICAgICJmb28iOiA0MwotICAgIH0pOwotfSk7Ci0KLXRlc3QoIm1hcERpY3Rpb25hcnkiLCAzLCBm
dW5jdGlvbigpIHsKLSAgICBkZWVwRXF1YWwoYmFzZS5tYXBEaWN0aW9uYXJ5KHt9LCBmdW5jdGlv
bih2YWx1ZSkgeyByZXR1cm4gdmFsdWUgLSAxMDsgfSksIHt9KTsKLSAgICB2YXIgZGljdGlvbmFy
eSA9IHsKLSAgICAgICAgJ2Zvbyc6IDQzLAotICAgICAgICAnYmFyJzogMTEKLSAgICB9OwotICAg
IGRlZXBFcXVhbChiYXNlLm1hcERpY3Rpb25hcnkoZGljdGlvbmFyeSwgZnVuY3Rpb24odmFsdWUp
IHsgcmV0dXJuIHZhbHVlIC0gMTA7IH0pLCB7Ci0gICAgICAgICJmb28iOiAzMywKLSAgICAgICAg
ImJhciI6IDEKLSAgICB9KTsKLSAgICBkZWVwRXF1YWwoYmFzZS5tYXBEaWN0aW9uYXJ5KGRpY3Rp
b25hcnksIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA+IDIwKQotICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlIC0gMjA7Ci0gICAgfSksIHsKLSAgICAgICAgImZvbyI6IDIzLAot
ICAgIH0pOwotfSk7Ci0KLXRlc3QoImZpbHRlclRyZWUiLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgdHJlZSA9IHsKLSAgICAgICAgJ3BhdGgnOiB7Ci0gICAgICAgICAgICAndG8nOiB7Ci0gICAg
ICAgICAgICAgICAgJ3Rlc3QuaHRtbCc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbCc6
ICdQQVNTJywKLSAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ0ZBSUwnCi0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhbm90aGVyLmh0bWwnOiB7
Ci0gICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdURVhUJywKLSAgICAgICAgICAgICAgICAnZXhw
ZWN0ZWQnOiAnUEFTUycKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGZ1
bmN0aW9uIGlzTGVhZihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhbm9kZS5hY3R1YWw7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWN0dWFsSXNUZXh0KG5vZGUpCi0gICAgewotICAgICAg
ICByZXR1cm4gbm9kZS5hY3R1YWwgPT0gJ1RFWFQnOwotICAgIH0KLQotICAgIHZhciBhbGwgPSBi
YXNlLmZpbHRlclRyZWUodHJlZSwgaXNMZWFmLCBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUgfSk7
Ci0gICAgZGVlcEVxdWFsKGFsbCwgewotICAgICAgICAncGF0aC90by90ZXN0Lmh0bWwnOiB7Ci0g
ICAgICAgICAgICAnYWN0dWFsJzogJ1BBU1MnLAotICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ0ZB
SUwnCi0gICAgICAgIH0sCi0gICAgICAgICdwYXRoL2Fub3RoZXIuaHRtbCc6IHsKLSAgICAgICAg
ICAgICdhY3R1YWwnOiAnVEVYVCcsCi0gICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycKLSAg
ICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHRleHQgPSBiYXNlLmZpbHRlclRyZWUodHJlZSwg
aXNMZWFmLCBhY3R1YWxJc1RleHQpOwotICAgIGRlZXBFcXVhbCh0ZXh0LCB7Ci0gICAgICAgICdw
YXRoL2Fub3RoZXIuaHRtbCc6IHsKLSAgICAgICAgICAgICdhY3R1YWwnOiAnVEVYVCcsCi0gICAg
ICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycKLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRl
c3QoIlVwZGF0ZVRyYWNrZXIiLCAyMCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Q7Ci0KLSAg
ICBmdW5jdGlvbiBkdW1wS2V5cygpCi0gICAgewotICAgICAgICB2YXIgdXBkYXRlcyA9IFtdCi0g
ICAgICAgIGRpY3QuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBrZXksIHVwZGF0ZWQpIHsKLSAgICAg
ICAgICAgIHVwZGF0ZXMucHVzaChrZXkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIHVw
ZGF0ZXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFVwZGF0ZWRLZXlzKCkKLSAgICB7Ci0g
ICAgICAgIHZhciB1cGRhdGVzID0gW10KLSAgICAgICAgZGljdC5mb3JFYWNoKGZ1bmN0aW9uKGl0
ZW0sIGtleSwgdXBkYXRlZCkgewotICAgICAgICAgICAgdXBkYXRlZCAmJiB1cGRhdGVzLnB1c2go
a2V5KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB1cGRhdGVzOwotICAgIH0KLQotCi0g
ICAgZGljdCA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAgICBkaWN0LnVwZGF0ZSgiNSIs
IHt9KTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSJdKTsKLSAgICBkaWN0
LnVwZGF0ZSgiNiIsIHt9KTsKLSAgICBkaWN0LnVwZGF0ZSgiNyIsIHt9KTsKLSAgICBkZWVwRXF1
YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7Ci0gICAgZGVlcEVxdWFsKGRp
Y3QuZ2V0KCI2IiksIHt9KTsKLSAgICBvayhkaWN0LmV4aXN0cygiNyIpKTsKLSAgICBkaWN0LnB1
cmdlKCk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7Ci0gICAgZGVlcEVx
dWFsKGR1bXBLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7Ci0gICAgZGljdC51cGRhdGUoIjUiLCB7
fSk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjUiXSk7Ci0gICAgZGljdC51
cGRhdGUoIjQiLCB7fSk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjQiLCAi
NSJdKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUiLCAiNiIsICI3Il0pOwot
ICAgIGRpY3QucHVyZ2UoKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUiXSk7
Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7Ci0gICAgZGljdC5wdXJnZSgp
OwotICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbXSk7Ci0KLSAgICB2YXIgcmVtb3ZlQ291bnQg
PSAwOwotICAgIGRpY3QudXBkYXRlKCJvbmUiKTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRL
ZXlzKCksIFsib25lIl0pOwotICAgIGRpY3QudXBkYXRlKCJ0d28iKTsKLSAgICBkZWVwRXF1YWwo
ZHVtcFVwZGF0ZWRLZXlzKCksIFsib25lIiwgInR3byJdKTsKLSAgICBkaWN0LnVwZGF0ZSgidGhy
ZWUiKTsKLSAgICBkaWN0LnB1cmdlKCk7Ci0gICAgZGVlcEVxdWFsKGR1bXBLZXlzKCksIFsib25l
IiwgInRocmVlIiwgInR3byJdKTsKLSAgICBkaWN0LnVwZGF0ZSgidHdvIik7Ci0gICAgZGljdC5w
dXJnZShmdW5jdGlvbigpIHsKLSAgICAgICAgcmVtb3ZlQ291bnQrKzsKLSAgICB9KTsKLSAgICBk
ZWVwRXF1YWwoZHVtcEtleXMoKSwgWyJ0d28iXSk7Ci0gICAgZXF1YWwocmVtb3ZlQ291bnQsIDIp
OwotICAgIGRpY3QudXBkYXRlKCJmb3VyIik7Ci0gICAgdmFyIHJlbW92ZUNvdW50ZXIgPSB7IGNv
dW50OiAwIH07Ci0gICAgZGljdC5wdXJnZShmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5jb3Vu
dCsrOwotICAgIH0sIHJlbW92ZUNvdW50ZXIpOwotICAgIGVxdWFsKHJlbW92ZUNvdW50ZXIuY291
bnQsIDEpOwotICAgIGRpY3QucHVyZ2UoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGVxdWFsKFN0cmlu
Zyh0aGlzKSwgImZvdXIiKTsKLSAgICB9KTsKLQotICAgIGRpY3QgPSBuZXcgYmFzZS5VcGRhdGVU
cmFja2VyKCk7Ci0gICAgZGljdC51cGRhdGUoIm9uZSIpOwotICAgIHZhciB0aGlzT2JqZWN0ID0g
e30KLSAgICBkaWN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSkgewotICAgICAgICBlcXVhbCh0aGlz
LCB0aGlzT2JqZWN0KTsKLSAgICB9LCB0aGlzT2JqZWN0KTsKLQotfSk7Ci0KLXRlc3QoImV4dGVu
ZHMiLCAxNCwgZnVuY3Rpb24oKSB7Ci0KLSAgICB2YXIgTGlrZURpdiA9IGJhc2UuZXh0ZW5kcygi
ZGl2IiwgewotICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMudGV4
dENvbnRlbnQgPSAiYXdlc29tZSI7Ci0gICAgICAgIH0sCi0gICAgICAgIG1ldGhvZDogZnVuY3Rp
b24obXNnKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICB9KTsKLQot
ICAgIHZhciBMaWtlTGlrZURpdiA9IGJhc2UuZXh0ZW5kcyhMaWtlRGl2LCB7Ci0gICAgICAgIGlu
aXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAibGlrZSI7Ci0g
ICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBMaWtlUCA9IGJhc2UuZXh0ZW5kcygicCIsIHsK
LSAgICAgICAgaW5pdDogZnVuY3Rpb24oY29udGVudCkgewotICAgICAgICAgICAgdGhpcy50ZXh0
Q29udGVudCA9IGNvbnRlbnQKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VQcm9n
cmVzcyA9IGJhc2UuZXh0ZW5kcygicHJvZ3Jlc3MiLCB7Ci0gICAgICAgIGluaXQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGhpcy5tYXggPSAxMDA7Ci0gICAgICAgICAgICB0aGlzLnZhbHVl
ID0gMTA7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBMaWtlTGlrZVByb2dyZXNzID0g
YmFzZS5leHRlbmRzKExpa2VQcm9ncmVzcywgewotICAgICAgICBjb21wbGV0ZWQ6IGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgdGhpcy52YWx1ZSA9IDEwMDsKLSAgICAgICAgfQotICAgIH0pOwot
Ci0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZURpdigpKTsKLSAgICBlcXVh
bHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIkRJViIpOwotICAgIGVxdWFscyhk
b2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJhd2Vzb21lIik7Ci0gICAgZXF1YWxz
KGRvY3VtZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpLCA0Mik7Ci0gICAgZG9jdW1lbnQuYm9k
eS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZCk7Ci0KLSAgICBkb2N1bWVudC5i
b2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlTGlrZURpdigpKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQu
Ym9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIkRJViIpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5
Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJhd2Vzb21lIik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJv
ZHkubGFzdENoaWxkLm1ldGhvZCgpLCA0Mik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHkubGFz
dENoaWxkLmNsYXNzTmFtZSwgImxpa2UiKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxk
KGRvY3VtZW50LmJvZHkubGFzdENoaWxkKTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQobmV3IExpa2VQKCJzdXBlciIpKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hp
bGQudGFnTmFtZSwgIlAiKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQuaW5u
ZXJIVE1MLCAic3VwZXIiKTsKLSAgICByYWlzZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRvY3Vt
ZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpOwotICAgIH0pOwotICAgIGRvY3VtZW50LmJvZHku
cmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotCi0gICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChuZXcgTGlrZVByb2dyZXNzKCkpOwotICAgIGVxdWFscyhkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiUFJPR1JFU1MiKTsKLSAgICAvLyBTYWZhcmkgNS4xIGxh
Y2tzIHRoZSA8cHJvZ3Jlc3M+IGVsZW1lbnQuCi0gICAgLy8gZXF1YWxzKGRvY3VtZW50LmJvZHku
bGFzdENoaWxkLnBvc2l0aW9uLCAwLjEpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxhc3RD
aGlsZC5pbm5lckhUTUwsICIiKTsKLSAgICByYWlzZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRv
Y3VtZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpOwotICAgIH0pOwotICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotCi0gICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChuZXcgTGlrZUxpa2VQcm9ncmVzcygpKTsKLSAgICBlcXVhbHMoZG9j
dW1lbnQuYm9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIlBST0dSRVNTIik7Ci0gICAgLy8gU2FmYXJp
IDUuMSBsYWNrcyB0aGUgPHByb2dyZXNzPiBlbGVtZW50LgotICAgIC8vIGVxdWFscyhkb2N1bWVu
dC5ib2R5Lmxhc3RDaGlsZC5wb3NpdGlvbiwgMC4xKTsKLSAgICBkb2N1bWVudC5ib2R5Lmxhc3RD
aGlsZC5jb21wbGV0ZWQoKTsKLSAgICAvLyBTYWZhcmkgNS4xIGxhY2tzIHRoZSA8cHJvZ3Jlc3M+
IGVsZW1lbnQuCi0gICAgLy8gZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnBvc2l0aW9u
LCAxKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFzdENo
aWxkKTsKLX0pOwotCi10ZXN0KCJyZWxhdGl2aXplVGltZSIsIDE0LCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUo
dGltZSksICJKdXN0IG5vdyIpOwotICAgIHRpbWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMo
KSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMSBtaW51dGUg
YWdvIik7Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7Ci0gICAg
ZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyIG1pbnV0ZXMgYWdvIik7Ci0gICAg
dGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7Ci0gICAgZXF1YWxzKGJhc2Uu
cmVsYXRpdml6ZVRpbWUodGltZSksICIzIG1pbnV0ZXMgYWdvIik7Ci0gICAgdGltZS5zZXRNaW51
dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gNTYpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVU
aW1lKHRpbWUpLCAiNTkgbWludXRlcyBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5n
ZXRNaW51dGVzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwg
IjEgaG91ciBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkgLSAy
OSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIxIGhvdXIgYWdvIik7
Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMik7Ci0gICAgZXF1YWxz
KGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyIGhvdXJzIGFnbyIpOwotICAgIHRpbWUuc2V0
TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDI5KTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2
aXplVGltZSh0aW1lKSwgIjIgaG91cnMgYWdvIik7Ci0gICAgdGltZS5zZXRIb3Vycyh0aW1lLmdl
dEhvdXJzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjMg
aG91cnMgYWdvIik7Ci0gICAgdGltZS5zZXRIb3Vycyh0aW1lLmdldEhvdXJzKCkgLSAyMCk7Ci0g
ICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyMyBob3VycyBhZ28iKTsKLSAg
ICB0aW1lLnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJl
bGF0aXZpemVUaW1lKHRpbWUpLCAiMSBkYXkgYWdvIik7Ci0gICAgdGltZS5zZXREYXRlKHRpbWUu
Z2V0RGF0ZSgpIC0gMSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIy
IGRheXMgYWdvIik7Ci0gICAgdGltZS5zZXREYXRlKHRpbWUuZ2V0RGF0ZSgpIC0gOTk4KTsKLSAg
ICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjEwMDAgZGF5cyBhZ28iKTsKLX0p
OwotCi10ZXN0KCJnZXRVUkxQYXJhbWV0ZXIiLCAxLCBmdW5jdGlvbigpIHsKLSAgICBvayghYmFz
ZS5nZXRVUkxQYXJhbWV0ZXIoJ25vbi1leGlzdGFudCcpKTsKLX0pOwotCi10ZXN0KCJwYXJzZUpT
T05QIiwgMiwgZnVuY3Rpb24oKSB7Ci0gICAgZGVlcEVxdWFsKGJhc2UucGFyc2VKU09OUCgiIiks
IHt9KTsKLSAgICBkZWVwRXF1YWwoYmFzZS5wYXJzZUpTT05QKCdwKHsia2V5IjogInZhbHVlIn0p
JyksIHsia2V5IjogInZhbHVlIn0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvYnVnemlsbGFfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1t
b2R1bGUoImJ1Z3ppbGxhIik7Ci0KLXZhciBrRXhhbXBsZVJlc3BvbnNlWE1MID0KLSAgICAnPD94
bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nICsKLSAgICAnPGZlZWQgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI+JyArCi0gICAgJyAgPHRpdGxlPkJ1Z3ppbGxh
IEJ1Z3M8L3RpdGxlPicgKwotICAgICcgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJ0ZXh0
L2h0bWwiJyArCi0gICAgJyAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYnVn
bGlzdC5jZ2k/YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7YnVnX3N0YXR1cz1ORVcmYW1wO2J1Z19z
dGF0dXM9QVNTSUdORUQmYW1wO2J1Z19zdGF0dXM9VU5DT05GSVJNRUQmYW1wO2ZpZWxkLTEtMC0w
PWJ1Z19zdGF0dXMmYW1wO2ZpZWxkMC0wLTA9cHJvZHVjdCZhbXA7ZmllbGQwLTAtMT1jb21wb25l
bnQmYW1wO2ZpZWxkMC0wLTI9c2hvcnRfZGVzYyZhbXA7ZmllbGQwLTAtMz1zdGF0dXNfd2hpdGVi
b2FyZCZhbXA7ZmllbGQwLTAtND1sb25nZGVzYyZhbXA7cXVlcnlfZm9ybWF0PWFkdmFuY2VkJmFt
cDtyZW1hY3Rpb249JmFtcDt0eXBlLTEtMC0wPWFueWV4YWN0JmFtcDt0eXBlMC0wLTA9c3Vic3Ry
aW5nJmFtcDt0eXBlMC0wLTE9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTI9c3Vic3RyaW5nJmFtcDt0
eXBlMC0wLTM9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTQ9c3Vic3RyaW5nJmFtcDt2YWx1ZS0xLTAt
MD1SRU9QRU5FRCUyQ05FVyUyQ0FTU0lHTkVEJTJDVU5DT05GSVJNRUQmYW1wO3ZhbHVlMC0wLTA9
Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTE9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0w
LTI9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTM9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVl
MC0wLTQ9Z2FyZGVuLW8tbWF0aWMiLz4nICsKLSAgICAnICA8bGluayByZWw9InNlbGYiIHR5cGU9
ImFwcGxpY2F0aW9uL2F0b20reG1sIicgKwotICAgICcgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVPUEVORUQmYW1wO2J1Z19zdGF0
dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFtcDtidWdfc3RhdHVzPVVOQ09ORklSTUVE
JmFtcDtjdHlwZT1hdG9tJmFtcDtmaWVsZC0xLTAtMD1idWdfc3RhdHVzJmFtcDtmaWVsZDAtMC0w
PXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFtcDtmaWVsZDAtMC0yPXNob3J0X2Rl
c2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQmYW1wO2ZpZWxkMC0wLTQ9bG9uZ2Rl
c2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVtYWN0aW9uPSZhbXA7dHlwZS0xLTAt
MD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0xPXN1YnN0cmlu
ZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0zPXN1YnN0cmluZyZhbXA7dHlw
ZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVPUEVORUQlMkNORVclMkNBU1NJR05F
RCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAt
MC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1
ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00PWdhcmRlbi1vLW1hdGljIi8+JyAr
Ci0gICAgJyAgPHVwZGF0ZWQ+MjAxMS0wOC0wNFQwMDoyMjo0OVo8L3VwZGF0ZWQ+JyArCi0gICAg
JyAgPGlkPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVP
UEVORUQmYW1wO2J1Z19zdGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFtcDtidWdf
c3RhdHVzPVVOQ09ORklSTUVEJmFtcDtjdHlwZT1hdG9tJmFtcDtmaWVsZC0xLTAtMD1idWdfc3Rh
dHVzJmFtcDtmaWVsZDAtMC0wPXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFtcDtm
aWVsZDAtMC0yPXNob3J0X2Rlc2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQmYW1w
O2ZpZWxkMC0wLTQ9bG9uZ2Rlc2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVtYWN0
aW9uPSZhbXA7dHlwZS0xLTAtMD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZhbXA7
dHlwZTAtMC0xPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0z
PXN1YnN0cmluZyZhbXA7dHlwZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVPUEVO
RUQlMkNORVclMkNBU1NJR05FRCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRlbi1v
LW1hdGljJmFtcDt2YWx1ZTAtMC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdhcmRl
bi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00PWdh
cmRlbi1vLW1hdGljPC9pZD4nICsKLSAgICAnJyArCi0gICAgJyAgPGVudHJ5PicgKwotICAgICcg
ICAgPHRpdGxlPltCdWcgNjU2NTRdIEFkZCBtaXNzaW5nIGxpY2Vuc2UgYmxvY2tzIHRvIGdhcmRl
bi1vLW1hdGljPC90aXRsZT4nICsKLSAgICAnICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBl
PSJ0ZXh0L2h0bWwiJyArCi0gICAgJyAgICAgICAgICBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQiLz4nICsKLSAgICAnICAgIDxpZD5odHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQ8L2lkPicgKwotICAgICcgICAgPGF1
dGhvcj4nICsKLSAgICAnICAgICAgPG5hbWU+QWRhbSBCYXJ0aDwvbmFtZT4nICsKLSAgICAnICAg
IDwvYXV0aG9yPicgKwotICAgICcgICAgPHVwZGF0ZWQ+MjAxMS0wOC0wNFQwMDoyMjoyNlo8L3Vw
ZGF0ZWQ+ICcgKwotICAgICcgICAgPHN1bW1hcnkgdHlwZT0iaHRtbCI+JyArCi0gICAgJyAgICAg
ICcgKwotICAgICcgICAgICAmbHQ7dGFibGUmZ3Q7JyArCi0gICAgJyAgICAgICZsdDt0ciZndDsn
ICsKLSAgICAnICAgICAgICAmbHQ7dGgmZ3Q7RmllbGQmbHQ7L3RoJmd0OyZsdDt0aCZndDtWYWx1
ZSZsdDsvdGgmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90
O2J6X2ZlZWRfcHJvZHVjdCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UHJv
ZHVjdCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1dlYktpdCZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRf
Y29tcG9uZW50JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtDb21wb25lbnQm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtOZXcgQnVncyZsdDsvdGQmZ3Q7
JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfYXNz
aWduZWUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0Fzc2lnbmVlJmx0Oy90
ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVwb3J0
ZXImcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1JlcG9ydGVyJmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfYnVnX3N0YXR1
cyZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U3RhdHVzJmx0Oy90ZCZndDsn
ICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TkVXJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
Jmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXNvbHV0aW9uJnF1b3Q7Jmd0
OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtSZXNvbHV0aW9uICZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICAgJmx0O3RkJmd0OyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHIm
Z3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJpb3JpdHkmcXVvdDsmZ3Q7JyArCi0gICAg
JyAgICAgICAgJmx0O3RkJmd0O1ByaW9yaXR5Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAm
bHQ7dGQmZ3Q7UDImbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBj
bGFzcz0mcXVvdDtiel9mZWVkX3NldmVyaXR5JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDtTZXZlcml0eSAmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtO
b3JtYWwmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0m
cXVvdDtiel9mZWVkX2NyZWF0aW9uX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0
O3RkJmd0O09wZW5lZCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE2OjIx
OjUyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1
b3Q7YnpfZmVlZF9jaGFuZ2VkX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3Rk
Jmd0O0NoYW5nZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsxNjoyMjoy
NiZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7JyArCi0gICAgJyAgICAgICZs
dDsvdGFibGUmZ3Q7JyArCi0gICAgJyAgICA8L3N1bW1hcnk+JyArCi0gICAgJyAgPC9lbnRyeT4n
ICsKLSAgICAnICA8ZW50cnk+JyArCi0gICAgJyAgICA8dGl0bGU+W0J1ZyA2NTY1M10gZ2FyZGVu
LW8tbWF0aWMgbmVlZHMgYSB3YXkgdG8gbW9jayBvdXQgdGhlIG5ldHdvcms8L3RpdGxlPicgKwot
ICAgICcgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9InRleHQvaHRtbCInICsKLSAgICAn
ICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
NTY1MyIvPicgKwotICAgICcgICAgPGlkPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NTY1MzwvaWQ+JyArCi0gICAgJyAgICA8YXV0aG9yPicgKwotICAgICcgICAgICA8
bmFtZT5BZGFtIEJhcnRoPC9uYW1lPicgKwotICAgICcgICAgPC9hdXRob3I+JyArCi0gICAgJyAg
ICA8dXBkYXRlZD4yMDExLTA4LTA0VDAwOjIyOjQ5WjwvdXBkYXRlZD4gJyArCi0gICAgJyAgICA8
c3VtbWFyeSB0eXBlPSJodG1sIj4nICsKLSAgICAnICAgICAgJyArCi0gICAgJyAgICAgICZsdDt0
YWJsZSZndDsnICsKLSAgICAnICAgICAgJmx0O3RyJmd0OycgKwotICAgICcgICAgICAgICZsdDt0
aCZndDtGaWVsZCZsdDsvdGgmZ3Q7Jmx0O3RoJmd0O1ZhbHVlJmx0Oy90aCZndDsnICsKLSAgICAn
ICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9wcm9kdWN0JnF1b3Q7
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcm9kdWN0Jmx0Oy90ZCZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7V2ViS2l0Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0
Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jb21wb25lbnQmcXVvdDsmZ3Q7JyAr
Ci0gICAgJyAgICAgICAgJmx0O3RkJmd0O0NvbXBvbmVudCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAg
ICAgICAgJmx0O3RkJmd0O05ldyBCdWdzJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90
ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9hc3NpZ25lZSZxdW90OyZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7QXNzaWduZWUmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAg
ICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZn
dDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXBvcnRlciZxdW90OyZndDsnICsKLSAgICAn
ICAgICAgICAmbHQ7dGQmZ3Q7UmVwb3J0ZXImbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsm
bHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9idWdfc3RhdHVzJnF1b3Q7Jmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtTdGF0dXMmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0
ZCZndDtORVcmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFz
cz0mcXVvdDtiel9mZWVkX3Jlc29sdXRpb24mcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0
O3RkJmd0O1Jlc29sdXRpb24gJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7
YnpfZmVlZF9wcmlvcml0eSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UHJp
b3JpdHkmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQMiZsdDsvdGQmZ3Q7
JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfc2V2
ZXJpdHkmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1NldmVyaXR5ICZsdDsv
dGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05vcm1hbCZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY3JlYXRpb25f
ZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7T3BlbmVkJmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MTY6NDQmbHQ7L3RkJmd0OycgKwotICAg
ICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NoYW5nZWRfZGF0
ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Q2hhbmdlZCZsdDsvdGQmZ3Q7
JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE2OjIyOjQ5Jmx0Oy90ZCZndDsnICsKLSAgICAn
ICAgICAgJmx0Oy90ciZndDsnICsKLSAgICAnICAgICAgJmx0Oy90YWJsZSZndDsnICsKLSAgICAn
ICAgIDwvc3VtbWFyeT4nICsKLSAgICAnICA8L2VudHJ5PicgKwotICAgICcgIDxlbnRyeT4nICsK
LSAgICAnICAgIDx0aXRsZT5bQnVnIDY1NjUwXSBVc2UgZmFpbHVyZUluZm8gbW9yZSBwZXJ2YXNp
dmVseSBpbiBnYXJkZW4tby1tYXRpYzwvdGl0bGU+JyArCi0gICAgJyAgICA8bGluayByZWw9ImFs
dGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicgKwotICAgICcgICAgICAgICAgaHJlZj0iaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwIi8+JyArCi0gICAgJyAgICA8
aWQ+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwPC9pZD4nICsK
LSAgICAnICAgIDxhdXRob3I+JyArCi0gICAgJyAgICAgIDxuYW1lPkFkYW0gQmFydGg8L25hbWU+
JyArCi0gICAgJyAgICA8L2F1dGhvcj4nICsKLSAgICAnICAgIDx1cGRhdGVkPjIwMTEtMDgtMDNU
MjM6NDA6MzRaPC91cGRhdGVkPiAnICsKLSAgICAnICAgIDxzdW1tYXJ5IHR5cGU9Imh0bWwiPicg
KwotICAgICcgICAgICAnICsKLSAgICAnICAgICAgJmx0O3RhYmxlJmd0OycgKwotICAgICcgICAg
ICAmbHQ7dHImZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RoJmd0O0ZpZWxkJmx0Oy90aCZndDsm
bHQ7dGgmZ3Q7VmFsdWUmbHQ7L3RoJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0
ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Byb2R1Y3QmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAg
Jmx0O3RkJmd0O1Byb2R1Y3QmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtX
ZWJLaXQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0m
cXVvdDtiel9mZWVkX2NvbXBvbmVudCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7Q29tcG9uZW50Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TmV3IEJ1
Z3MmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVv
dDtiel9mZWVkX2Fzc2lnbmVlJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtB
c3NpZ25lZSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDti
el9mZWVkX3JlcG9ydGVyJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtSZXBv
cnRlciZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgmbHQ7
L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9m
ZWVkX2J1Z19zdGF0dXMmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1N0YXR1
cyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05FVyZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVzb2x1
dGlvbiZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVzb2x1dGlvbiAmbHQ7
L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsmbHQ7L3RkJmd0OycgKwotICAgICcg
ICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3ByaW9yaXR5JnF1b3Q7
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcmlvcml0eSZsdDsvdGQmZ3Q7JyArCi0g
ICAgJyAgICAgICAgJmx0O3RkJmd0O1AyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90
ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9zZXZlcml0eSZxdW90OyZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7U2V2ZXJpdHkgJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
ICAmbHQ7dGQmZ3Q7Tm9ybWFsJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsm
bHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jcmVhdGlvbl9kYXRlJnF1b3Q7Jmd0OycgKwotICAg
ICcgICAgICAgICZsdDt0ZCZndDtPcGVuZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDsxNTozNTo1NSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0
O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY2hhbmdlZF9kYXRlJnF1b3Q7Jmd0OycgKwotICAgICcg
ICAgICAgICZsdDt0ZCZndDtDaGFuZ2VkJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7
dGQmZ3Q7MTU6NDA6MzQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OycgKwot
ICAgICcgICAgICAmbHQ7L3RhYmxlJmd0OycgKwotICAgICcgICAgPC9zdW1tYXJ5PicgKwotICAg
ICcgIDwvZW50cnk+JyArCi0gICAgJzwvZmVlZD4nCi0KLXRlc3QoInF1aWNrU2VhcmNoIiwgMywg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7
Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVy
bCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKLSAgICAgICAgICAgIHZhciBy
ZXNwb25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoa0V4YW1wbGVSZXNwb25zZVhNTCwg
ImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00pOwot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGJ1Z3ppbGxhLnF1aWNrU2VhcmNoKCdnYXJkZW4tby1tYXRpYycsIGZ1bmN0aW9u
KGJ1Z3MpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWdzLCBbewotICAgICAgICAgICAgICAg
ICJ0aXRsZSI6ICJbQnVnIDY1NjU0XSBBZGQgbWlzc2luZyBsaWNlbnNlIGJsb2NrcyB0byBnYXJk
ZW4tby1tYXRpYyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQiLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAi
TkVXIgotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJbQnVnIDY1
NjUzXSBnYXJkZW4tby1tYXRpYyBuZWVkcyBhIHdheSB0byBtb2NrIG91dCB0aGUgbmV0d29yayIs
Ci0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjU2NTMiLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiTkVXIgotICAgICAg
ICAgICAgfSwgewotICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJbQnVnIDY1NjUwXSBVc2UgZmFp
bHVyZUluZm8gbW9yZSBwZXJ2YXNpdmVseSBpbiBnYXJkZW4tby1tYXRpYyIsCi0gICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2
NTAiLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiTkVXIgotICAgICAgICAgICAgfV0pOwot
ICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlZXBFcXVhbChyZXF1ZXN0ZWRVUkxzLCBbCi0g
ICAgICAgICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9idWdsaXN0LmNnaT9jdHlwZT1yc3Mmb3Jk
ZXI9YnVncy5idWdfaWQrZGVzYyZxdWlja3NlYXJjaD1nYXJkZW4tby1tYXRpYyIsCi0gICAgXSk7
Ci19KTsKLQotdGVzdCgiaXNPcGVuU3RhdHVzIiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAgb2soYnVn
emlsbGEuaXNPcGVuU3RhdHVzKCdVTkNPTkZJUk1FRCcpKTsKLSAgICBvayhidWd6aWxsYS5pc09w
ZW5TdGF0dXMoJ05FVycpKTsKLSAgICBvayhidWd6aWxsYS5pc09wZW5TdGF0dXMoJ0FTU0lHTkVE
JykpOwotICAgIG9rKGJ1Z3ppbGxhLmlzT3BlblN0YXR1cygnUkVPUEVORUQnKSk7Ci0gICAgb2so
IWJ1Z3ppbGxhLmlzT3BlblN0YXR1cygnRklYRUQnKSk7Ci0gICAgb2soIWJ1Z3ppbGxhLmlzT3Bl
blN0YXR1cygnVkVSSUZJRUQnKSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL2J1aWxkZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL2J1aWxkZXJzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9idWlsZGVycy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLXZhciBidWlsZGVycyA9IGJ1aWxkZXJzIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0K
LXZhciBrVXBkYXRlU3RlcE5hbWUgPSAndXBkYXRlJzsKLXZhciBrVXBkYXRlU2NyaXB0c1N0ZXBO
YW1lID0gJ3VwZGF0ZV9zY3JpcHRzJzsKLXZhciBrQ29tcGlsZVN0ZXBOYW1lID0gJ2NvbXBpbGUn
OwotdmFyIGtXZWJLaXRUZXN0c1N0ZXBOYW1lcyA9IFsnd2Via2l0X3Rlc3RzJywgJ2xheW91dC10
ZXN0J107Ci0KLXZhciBrQ3Jhc2hlZE9ySHVuZ091dHB1dE1hcmtlciA9ICdjcmFzaGVkIG9yIGh1
bmcnOwotCi1mdW5jdGlvbiBidWlsZEJvdFVSTChwbGF0Zm9ybSkKLXsKLSAgICByZXR1cm4gY29u
ZmlnLmtQbGF0Zm9ybXNbcGxhdGZvcm1dLmJ1aWxkQ29uc29sZVVSTDsKLX0KLQotZnVuY3Rpb24g
dXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVybiBi
dWlsZEJvdFVSTChwbGF0Zm9ybSkgKyAnL2pzb24vYnVpbGRlcnMvJyArIGVuY29kZVVSSUNvbXBv
bmVudChidWlsZGVyTmFtZSkgKyAnLyc7Ci19Ci0KLWZ1bmN0aW9uIHVybEZvckJ1aWxkSW5mbyhw
bGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyKQotewotICAgIHJldHVybiBidWlsZEJv
dFVSTChwbGF0Zm9ybSkgKyAnL2pzb24vYnVpbGRlcnMvJyArIGVuY29kZVVSSUNvbXBvbmVudChi
dWlsZGVyTmFtZSkgKyAnL2J1aWxkcy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkTnVtYmVy
KTsKLX0KLQotZnVuY3Rpb24gZGlkRmFpbChzdGVwKQotewotICAgIGlmIChrV2ViS2l0VGVzdHNT
dGVwTmFtZXMuaW5kZXhPZihzdGVwLm5hbWUpICE9IC0xKSB7Ci0gICAgICAgIC8vIHJ1bi13ZWJr
aXQtdGVzdHMgZmFpbHMgdG8gZ2VuZXJhdGUgdGVzdCBjb3ZlcmFnZSB3aGVuIGl0IGNyYXNoZXMg
b3IgaGFuZ3MuCi0gICAgICAgIC8vIEZJWE1FOiBEbyBidWlsZC53ZWJraXQub3JnIGJvdHMgb3V0
cHV0IHRoaXMgbWFya2VyIHdoZW4gdGhlIHRlc3RzIGZhaWwgdG8gcnVuPwotICAgICAgICByZXR1
cm4gc3RlcC50ZXh0LmluZGV4T2Yoa0NyYXNoZWRPckh1bmdPdXRwdXRNYXJrZXIpICE9IC0xOwot
ICAgIH0KLSAgICAvLyBUaGUgZmlyc3QgaXRlbSBpbiBzdGVwLnJlc3VsdHMgaXMgdGhlIHN1Y2Nl
c3Mgb2YgdGhlIHN0ZXA6Ci0gICAgLy8gMCA9PSBwYXNzLCAxID09IHdhcm5pbmcsIDIgPT0gZmFp
bAotICAgIHJldHVybiBzdGVwLnJlc3VsdHNbMF0gPT0gMjsKLX0KLQotZnVuY3Rpb24gZmFpbGlu
Z1N0ZXBzKGJ1aWxkSW5mbykKLXsKLSAgICByZXR1cm4gYnVpbGRJbmZvLnN0ZXBzLmZpbHRlcihk
aWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gbW9zdFJlY2VudENvbXBsZXRlZEJ1aWxkTnVtYmVyKGlu
ZGl2aWR1YWxCdWlsZGVyU3RhdHVzKQotewotICAgIGlmICghaW5kaXZpZHVhbEJ1aWxkZXJTdGF0
dXMpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgZm9yICh2YXIgaSA9IGluZGl2aWR1YWxC
dWlsZGVyU3RhdHVzLmNhY2hlZEJ1aWxkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICB2YXIgYnVpbGROdW1iZXIgPSBpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jYWNoZWRCdWls
ZHNbaV07Ci0gICAgICAgIGlmIChpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jdXJyZW50QnVpbGRz
LmluZGV4T2YoYnVpbGROdW1iZXIpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxkTnVt
YmVyOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotfQotCi12YXIgZ19idWlsZEluZm9DYWNo
ZSA9IG5ldyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spIHsK
LSAgICB2YXIgZXhwbG9kZWRLZXkgPSBrZXkuc3BsaXQoJ1xuJyk7Ci0gICAgbmV0LmdldCh1cmxG
b3JCdWlsZEluZm8oZXhwbG9kZWRLZXlbMF0sIGV4cGxvZGVkS2V5WzFdLCBleHBsb2RlZEtleVsy
XSksIGNhbGxiYWNrKTsKLX0pOwotCi1idWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlID0gZnVu
Y3Rpb24oKQotewotICAgIGdfYnVpbGRJbmZvQ2FjaGUuY2xlYXIoKTsKLX0KLQotZnVuY3Rpb24g
ZmV0Y2hNb3N0UmVjZW50QnVpbGRJbmZvQnlCdWlsZGVyKHBsYXRmb3JtLCBjYWxsYmFjaykKLXsK
LSAgICBuZXQuZ2V0KGJ1aWxkQm90VVJMKHBsYXRmb3JtKSArICcvanNvbi9idWlsZGVycycsIGZ1
bmN0aW9uKGJ1aWxkZXJTdGF0dXMpIHsKLSAgICAgICAgdmFyIGJ1aWxkSW5mb0J5QnVpbGRlciA9
IHt9OwotICAgICAgICB2YXIgYnVpbGRlck5hbWVzID0gT2JqZWN0LmtleXMoYnVpbGRlclN0YXR1
cyk7Ci0gICAgICAgIHZhciByZXF1ZXN0VHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2Vy
KGJ1aWxkZXJOYW1lcy5sZW5ndGgsIGNhbGxiYWNrLCBbYnVpbGRJbmZvQnlCdWlsZGVyXSk7Ci0g
ICAgICAgIGJ1aWxkZXJOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7Ci0gICAg
ICAgICAgICBpZiAoIWNvbmZpZy5idWlsZGVyQXBwbGllcyhidWlsZGVyTmFtZSkpIHsKLSAgICAg
ICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBidWlsZE51bWJl
ciA9IG1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcihidWlsZGVyU3RhdHVzW2J1aWxkZXJO
YW1lXSk7Ci0gICAgICAgICAgICBpZiAoIWJ1aWxkTnVtYmVyKSB7Ci0gICAgICAgICAgICAgICAg
YnVpbGRJbmZvQnlCdWlsZGVyW2J1aWxkZXJOYW1lXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAg
cmVxdWVzdFRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBnX2J1aWxkSW5mb0NhY2hlLmdldChwbGF0
Zm9ybSArICdcbicgKyBidWlsZGVyTmFtZSArICdcbicgKyBidWlsZE51bWJlciwgZnVuY3Rpb24o
YnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRJbmZvQnlCdWlsZGVyW2J1aWxkZXJO
YW1lXSA9IGJ1aWxkSW5mbzsKLSAgICAgICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1ZXN0
Q29tcGxldGUoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0KLQot
YnVpbGRlcnMuYnVpbGRlckluZm8gPSBmdW5jdGlvbihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGNh
bGxiYWNrKQotewotICAgIHZhciBidWlsZGVySW5mb1VSTCA9IHVybEZvckJ1aWxkZXJJbmZvKHBs
YXRmb3JtLCBidWlsZGVyTmFtZSk7Ci0gICAgbmV0LmdldChidWlsZGVySW5mb1VSTCwgY2FsbGJh
Y2spOwotfTsKLQotYnVpbGRlcnMuY2FjaGVkQnVpbGRJbmZvcyA9IGZ1bmN0aW9uKHBsYXRmb3Jt
LCBidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGJ1aWxkZXJJbmZvVVJMID0gdXJs
Rm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKTsKLSAgICBuZXQuZ2V0KGJ1aWxk
ZXJJbmZvVVJMLCBmdW5jdGlvbihidWlsZGVySW5mbykgewotICAgICAgICB2YXIgc2VsZWN0VVJM
ID0gdXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKSArICdidWlsZHMnOwot
ICAgICAgICB2YXIgc3RhcnQgPSBNYXRoLm1heCgwLCBidWlsZGVySW5mby5jYWNoZWRCdWlsZHMu
bGVuZ3RoIC0gY29uZmlnLmtCdWlsZE51bWJlckxpbWl0KTsKLSAgICAgICAgdmFyIHNlbGVjdFBh
cmFtcyA9IHsgc2VsZWN0IDogYnVpbGRlckluZm8uY2FjaGVkQnVpbGRzLnNsaWNlKHN0YXJ0KSB9
OwotICAgICAgICB2YXIgdHJhZGl0aW9uYWxFbmNvZGluZyA9IHRydWU7Ci0gICAgICAgIHNlbGVj
dFVSTCArPSAnPycgKyAkLnBhcmFtKHNlbGVjdFBhcmFtcywgdHJhZGl0aW9uYWxFbmNvZGluZyk7
Ci0gICAgICAgIG5ldC5nZXQoc2VsZWN0VVJMLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0KLWJ1
aWxkZXJzLnJlY2VudEJ1aWxkSW5mb3MgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBmZXRj
aE1vc3RSZWNlbnRCdWlsZEluZm9CeUJ1aWxkZXIoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgZnVu
Y3Rpb24oYnVpbGRJbmZvQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBidWlsZEluZm8gPSB7fTsK
LSAgICAgICAgJC5lYWNoKGJ1aWxkSW5mb0J5QnVpbGRlciwgZnVuY3Rpb24oYnVpbGRlck5hbWUs
IHRoaXNCdWlsZEluZm8pIHsKLSAgICAgICAgICAgIGlmICghYnVpbGRJbmZvKQotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYnVpbGRJbmZvW2J1aWxk
ZXJOYW1lXSA9IHRoaXNCdWlsZEluZm87Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjayhi
dWlsZEluZm8pOwotICAgIH0pOwotfTsKLQotYnVpbGRlcnMuYnVpbGRlcnNGYWlsaW5nTm9uTGF5
b3V0VGVzdHMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBmZXRjaE1vc3RSZWNlbnRCdWls
ZEluZm9CeUJ1aWxkZXIoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgZnVuY3Rpb24oYnVpbGRJbmZv
QnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBmYWlsdXJlTGlzdCA9IHt9OwotICAgICAgICAkLmVh
Y2goYnVpbGRJbmZvQnlCdWlsZGVyLCBmdW5jdGlvbihidWlsZGVyTmFtZSwgYnVpbGRJbmZvKSB7
Ci0gICAgICAgICAgICBpZiAoIWJ1aWxkSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB2YXIgZmFpbHVyZXMgPSBmYWlsaW5nU3RlcHMoYnVpbGRJbmZvKTsKLSAgICAg
ICAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgZmFpbHVyZUxpc3Rb
YnVpbGRlck5hbWVdID0gZmFpbHVyZXMubWFwKGZ1bmN0aW9uKGZhaWx1cmUpIHsgcmV0dXJuIGZh
aWx1cmUubmFtZTsgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjayhmYWlsdXJlTGlz
dCk7Ci0gICAgfSk7Ci19OwotCi1idWlsZGVycy5wZXJmQnVpbGRlcnMgPSBmdW5jdGlvbihjYWxs
YmFjaykKLXsKLSAgICBmZXRjaE1vc3RSZWNlbnRCdWlsZEluZm9CeUJ1aWxkZXIoY29uZmlnLmN1
cnJlbnRQbGF0Zm9ybSwgZnVuY3Rpb24oYnVpbGRJbmZvQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZh
ciBwZXJmVGVzdE1hcCA9IHt9OwotICAgICAgICAkLmVhY2goYnVpbGRJbmZvQnlCdWlsZGVyLCBm
dW5jdGlvbihidWlsZGVyTmFtZSwgYnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1aWxk
SW5mbyB8fCBidWlsZGVyTmFtZS5pbmRleE9mKCdQZXJmJykgPT0gLTEpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICBidWlsZEluZm8uc3RlcHMuZm9yRWFjaChmdW5jdGlv
bihzdGVwKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBjb21waWxlIGlzIGJy
b2tlbiwgZ3JhYiBhbiBvbGRlciBidWlsZC4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29t
cGlsZS91cGRhdGUgaXMgYnJva2VuLCBubyBzdGVwcyB3aWxsIGhhdmUgYSByZXN1bHRzIHVybC4K
LSAgICAgICAgICAgICAgICBpZiAoIXN0ZXAudXJscy5yZXN1bHRzKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKCFwZXJmVGVzdE1hcFtzdGVwLm5hbWVd
KQotICAgICAgICAgICAgICAgICAgICBwZXJmVGVzdE1hcFtzdGVwLm5hbWVdID0gW107Ci0gICAg
ICAgICAgICAgICAgcGVyZlRlc3RNYXBbc3RlcC5uYW1lXS5wdXNoKHsgYnVpbGRlcjogYnVpbGRl
ck5hbWUsIHVybDogc3RlcC51cmxzLnJlc3VsdHMgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg
ICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKHBlcmZUZXN0TWFwKTsKLSAgICB9KTsKLX0KLQotfSko
KTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMu
anMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJz
X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDExOTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoImJ1aWxkZXJzIik7Ci0KLXZhciBrRXhhbXBs
ZUJ1aWxkZXJTdGF0dXNKU09OID0gIHsKLSAgICAiV2ViS2l0IExpbnV4IjogewotICAgICAgICAi
YmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5
LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGlu
dXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAi
cGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAg
ICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9LAotICAgICJXZWJLaXQgTWFjMTAuNiI6IHsK
LSAgICAgICAgImJhc2VkaXIiOiAiV2ViS2l0X0xpbnV4IiwKLSAgICAgICAgImNhY2hlZEJ1aWxk
cyI6IFsxMTQ1OSwgMTE0NjAsIDExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJjYXRlZ29yeSI6ICI2
d2Via2l0IGxpbnV4IGxhdGVzdCIsCi0gICAgICAgICJjdXJyZW50QnVpbGRzIjogWzExNDYxLCAx
MTQ2Ml0sCi0gICAgICAgICJwZW5kaW5nQnVpbGRzIjogMCwKLSAgICAgICAgInNsYXZlcyI6IFsi
dm0xMjQtbTEiXSwKLSAgICAgICAgInN0YXRlIjogImJ1aWxkaW5nIgotICAgIH0sCi0gICAgIldl
YktpdCBBU0FOIjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAg
ICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAg
ImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWls
ZHMiOiBbMTE0NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWlsZHMiOiAwLAotICAgICAg
ICAic2xhdmVzIjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUiOiAiYnVpbGRpbmciCi0g
ICAgfSwKLX07Ci0KLXZhciBrRXhhbXBsZVdlYktpdERvdE9yZ0J1aWxkZXJTdGF0dXNKU09OID0g
IHsKLSAgICAiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMiAoVGVzdHMpIjogewotICAgICAgICAiYmFz
ZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAx
MTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXgg
bGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAicGVu
ZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAg
ICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9LAotICAgICJHVEsgTGludXggNjQtYml0IERlYnVn
IjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVk
QnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5
IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0
NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWlsZHMiOiAwLAotICAgICAgICAic2xhdmVz
IjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUiOiAiYnVpbGRpbmciCi0gICAgfSwKLSAg
ICAiUXQgTGludXggUmVsZWFzZSI6IHsKLSAgICAgICAgImJhc2VkaXIiOiAiV2ViS2l0X0xpbnV4
IiwKLSAgICAgICAgImNhY2hlZEJ1aWxkcyI6IFsxMTQ1OSwgMTE0NjAsIDExNDYxLCAxMTQ2Ml0s
Ci0gICAgICAgICJjYXRlZ29yeSI6ICI2d2Via2l0IGxpbnV4IGxhdGVzdCIsCi0gICAgICAgICJj
dXJyZW50QnVpbGRzIjogWzExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJwZW5kaW5nQnVpbGRzIjog
MCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKLSAgICAgICAgInN0YXRlIjogImJ1
aWxkaW5nIgotICAgIH0sCi19OwotCi12YXIga0V4YW1wbGVCdWlsZEluZm9KU09OID0gewotICAg
ICJibGFtZSI6IFsiYWJhcnRoQHdlYmtpdC5vcmciXSwKLSAgICAiYnVpbGRlck5hbWUiOiAiV2Vi
S2l0IExpbnV4IiwKLSAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21h
aW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNo
YW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHks
IG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBo
b3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpz
OlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dcbiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJv
eC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVs
dGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRp
Y2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0
L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRodSAw
NCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1l
bnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9p
bnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBw
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3Qt
aG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Jl
cGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBs
YXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2Fs
LWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwKLSAgICAiY3VycmVudFN0ZXAiOiBu
dWxsLAotICAgICJldGEiOiBudWxsLAotICAgICJsb2dzIjogWwotICAgICAgICBbInN0ZGlvIiwg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJL
aXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9ncy9zdGRpbyJd
LAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRl
L2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYx
L3N0ZXBzL2NvbXBpbGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51
eC9idWlsZHMvMTE0NjEvc3RlcHMvdGVzdF9zaGVsbF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAg
ICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtp
dGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfdW5pdF90
ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8x
MTQ2MS9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJL
aXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVzdWx0
cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2
MS9zdGVwcy93ZWJraXRfZ3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
S2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9y
ZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgIF0sCi0gICAgIm51bWJlciI6IDExNDYxLAotICAgICJw
cm9wZXJ0aWVzIjogWwotICAgICAgICBbImJsYW1lbGlzdCIsIFsiYWJhcnRoQHdlYmtpdC5vcmci
XSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiYnJhbmNoIiwgInRydW5rIiwgIkJ1aWxkIl0sCi0gICAg
ICAgIFsiYnVpbGRlcm5hbWUiLCAiV2ViS2l0IExpbnV4IiwgIkJ1aWxkIl0sCi0gICAgICAgIFsi
YnVpbGRudW1iZXIiLCAxMTQ2MSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiZ290X3JldmlzaW9uIiwg
Ijk1Mzk1IiwgIlNvdXJjZSJdLAotICAgICAgICBbImdvdF93ZWJraXRfcmV2aXNpb24iLCAiOTIz
NTgiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ3Rlc3RfZmlsdGVyIiwgbnVsbCwgIkZhY3Rvcnki
XSwKLSAgICAgICAgWyJtYXN0ZXJuYW1lIiwgImNocm9taXVtLndlYmtpdCIsICJtYXN0ZXIuY2Zn
Il0sCi0gICAgICAgIFsicmV2aXNpb24iLCAiOTIzNTgiLCAiQnVpbGQiXSwKLSAgICAgICAgWyJz
Y2hlZHVsZXIiLCAiczZfd2Via2l0X3JlbCIsICJTY2hlZHVsZXIiXSwKLSAgICAgICAgWyJzbGF2
ZW5hbWUiLCAidm0xMjQtbTEiLCAiQnVpbGRTbGF2ZSJdCi0gICAgXSwKLSAgICAicmVhc29uIjog
IiIsCi0gICAgInJlcXVlc3RzIjogW3sKLSAgICAgICAgImJ1aWxkZXJOYW1lIjogIldlYktpdCBM
aW51eCIsCi0gICAgICAgICJidWlsZHMiOiBbMTE0NjFdLAotICAgICAgICAic291cmNlIjogewot
ICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2hhbmdlcyI6IFt7
Ci0gICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAgICAgImNh
dGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAg
U2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5h
Ym91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9t
YWluLmpzOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKLSAgICAgICAgICAgICAgICAibnVtYmVyIjogNDM3
MDcsCi0gICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKLSAgICAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1NyIsCi0g
ICAgICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvOTIzNTciLAotICAgICAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTUwODEsCi0g
ICAgICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAgICAgICAgIH0s
IHsKLSAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICAgICAi
Y2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJVcGRhdGUgYmFz
ZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5c
biogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93
cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBl
Y3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzoi
LAotICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIiwgIkxh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94
LXNoYWRvd3MtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwg
IkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11
bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVy
dGljYWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyJdLAotICAg
ICAgICAgICAgICAgICJudW1iZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICAgICAicHJvcGVydGll
cyI6IFtdLAotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAg
ICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAgICAgICAgICAgICAgICAicmV2bGluayI6ICJodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1OCIsCi0gICAgICAgICAgICAgICAgIndo
ZW4iOiAxMzEyNDQ0MjM4Ljg1NTUzOCwKLSAgICAgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3
ZWJraXQub3JnIgotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAiaGFzUGF0Y2giOiBmYWxz
ZSwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICAgICAgfSwKLSAgICAgICAg
InN1Ym1pdHRlZEF0IjogMTMxMjQ0NDI5OC45ODk4MTgKLSAgICB9XSwKLSAgICAicmVzdWx0cyI6
IDIsCi0gICAgInNsYXZlIjogInZtMTI0LW0xIiwKLSAgICAic291cmNlU3RhbXAiOiB7Ci0gICAg
ICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAiY2hhbmdlcyI6IFt7Ci0gICAgICAgICAg
ICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAg
ICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRl
c3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBh
cnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCi0gICAgICAgICAgICAi
ZmlsZXMiOiBbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAot
ICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBb
XSwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAicmV2aXNpb24i
OiAiOTIzNTciLAotICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIzNTciLAotICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1NTA4
MSwKLSAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdlYmtpdC5vcmciCi0gICAgICAgIH0sIHsK
LSAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5Ijog
bnVsbCwKLSAgICAgICAgICAgICJjb21tZW50cyI6ICJVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6
XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhv
cml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBs
YXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12
ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFp
bnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzoiLAotICAgICAgICAgICAg
ImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VMb2ciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5w
bmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFk
b3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6
b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmci
LCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ct
bXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nIl0sCi0gICAgICAgICAgICAibnVtYmVyIjog
NDM3MDgsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAgInJlcG9z
aXRvcnkiOiAiIiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIsCi0gICAgICAgICAg
ICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1OCIsCi0g
ICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQyMzguODU1NTM4LAotICAgICAgICAgICAgIndobyI6
ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAgICAgfV0sCi0gICAgICAgICJoYXNQYXRjaCI6IGZh
bHNlLAotICAgICAgICAicmV2aXNpb24iOiAiOTIzNTgiCi0gICAgfSwKLSAgICAic3RlcHMiOiBb
ewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAg
ICAgICAgIFsib3V0cHV0IiwgMjI5NywgMjMwMC42NTcxMDE0MDgzNzg0XQotICAgICAgICBdLAot
ICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAot
ICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxk
cy8xMTQ2MS9zdGVwcy91cGRhdGVfc2NyaXB0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAg
ICAgICAgIm5hbWUiOiAidXBkYXRlX3NjcmlwdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBb
XV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDAs
Ci0gICAgICAgICJ0ZXh0IjogWyJ1cGRhdGVfc2NyaXB0cyJdLAotICAgICAgICAidGltZXMiOiBb
MTMxMjQ0NDI5OS4xMDI4MzQsIDEzMTI0NDQzMDkuMjcwMzI0XSwKLSAgICAgICAgInVybHMiOiB7
fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMi
OiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDIwNDUzLCAxNzU4MC41MDAyMzg5NjQ1XQotICAg
ICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQi
OiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExp
bnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGUvbG9ncy9zdGRpbyJdIF0sCi0gICAgICAgICJu
YW1lIjogInVwZGF0ZSIsCi0gICAgICAgICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0
YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogMSwKLSAgICAgICAgInRleHQi
OiBbInVwZGF0ZSIsICJyOTUzOTUiLCAid2Via2l0IHI5MjM1OCJdLAotICAgICAgICAidGltZXMi
OiBbMTMxMjQ0NDMwOS4yNzA3NjMsIDEzMTI0NDQzOTguNDY4MTM5XSwKLSAgICAgICAgInVybHMi
OiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlv
bnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDE3MzE2LCAyNjUyLjQ4NTA0OTk1ODk0NTZd
Ci0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3Rh
cnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0
JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2NvbXBpbGUvbG9ncy9zdGRpbyJdCi0gICAgICAg
IF0sCi0gICAgICAgICJuYW1lIjogImNvbXBpbGUiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBb
XV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDIs
Ci0gICAgICAgICJ0ZXh0IjogWyJjb21waWxlIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0
Mzk4LjQ2ODU1LCAxMzEyNDQ0NDQxLjY4ODM4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0s
IHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAg
ICAgICAgICBbIm91dHB1dCIsIDkxOTgwLCA5MjAwMi4xMjYyODMyNTI1MV0KLSAgICAgICAgXSwK
LSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwK
LSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWls
ZHMvMTE0NjEvc3RlcHMvdGVzdF9zaGVsbF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwK
LSAgICAgICAgIm5hbWUiOiAidGVzdF9zaGVsbF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjog
WzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVy
IjogMywKLSAgICAgICAgInRleHQiOiBbInRlc3Rfc2hlbGxfdGVzdHMiLCAiMSBkaXNhYmxlZCIs
ICIyIGZsYWt5Il0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0NDQxLjY4ODc1NiwgMTMxMjQ0
NDQ1MS43NDkwOF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEi
OiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQi
LCAyMDc3MiwgMjA3NzIuNjM4NTAzNDQzMDg2XQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5p
c2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6
IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2No
cm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93
ZWJraXRfdW5pdF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUi
OiAid2Via2l0X3VuaXRfdGVzdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDQsCi0gICAgICAg
ICJ0ZXh0IjogWyJ3ZWJraXRfdW5pdF90ZXN0cyIsICIxIGRpc2FibGVkIl0sCi0gICAgICAgICJ0
aW1lcyI6IFsxMzEyNDQ0NDUxLjc0OTU3NCwgMTMxMjQ0NDQ1Mi4zMDYxNDNdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjQ3NzQwNiwgMjQ5ODkxNS42MTQ2
Mjc1NDk0XQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAg
ICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3Rk
aW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJz
L1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9zdGRp
byJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogIndlYmtpdF90ZXN0cyIsCi0gICAgICAg
ICJyZXN1bHRzIjogWzIsIFsid2Via2l0X3Rlc3RzIl1dLAotICAgICAgICAic3RhdGlzdGljcyI6
IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA1LAotICAgICAgICAidGV4dCI6IFsid2Via2l0
X3Rlc3RzIiwgIjIwMTQgZml4YWJsZSIsICIoMzcwIHNraXBwZWQpIiwgImZhaWxlZCAxIiwgIjxk
aXYgY2xhc3M9XCJCdWlsZFJlc3VsdEluZm9cIj4iLCAiPGEgaHJlZj1cImh0dHBzOi8vcmVzdWx0
cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9ZmFzdC9ib3gtc2hhZG93
L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbFwiPiIsICI8YWJiciB0aXRsZT1cImZhc3Qv
Ym94LXNoYWRvdy9ib3gtc2hhZG93LWNsaXBwZWQtc2xpY2VzLmh0bWxcIj5ib3gtc2hhZG93LWNs
aXBwZWQtc2xpY2VzLmh0bWw8L2FiYnI+IiwgIjwvYT4iLCAiPC9kaXY+Il0sCi0gICAgICAgICJ0
aW1lcyI6IFsxMzEyNDQ0NDUyLjMwNjY5NSwgMTMxMjQ0NDc2OC44ODgyNjZdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjY2ODg0NSwgMjY3Mjc0Ni4zNzIz
NjMyNTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAg
ImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX3Jl
c3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogImFyY2hpdmVf
d2Via2l0X3Rlc3RzX3Jlc3VsdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDYsCi0gICAgICAg
ICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgcmVzdWx0cyJdLAotICAgICAgICAidGlt
ZXMiOiBbMTMxMjQ0NDc2OC44ODg3NDYsIDEzMTI0NDQ3ODEuNDQ0Mzk5XSwKLSAgICAgICAgInVy
bHMiOiB7Ci0gICAgICAgICAgICAibGF5b3V0IHRlc3QgcmVzdWx0cyI6ICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvV2ViS2l0X0xpbnV4XHIv
OTUzOTVcck5vbmUiCi0gICAgICAgIH0KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMTA5NTgs
IDIwODEzOC40OTY1MTgyOTkzXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRy
dWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAg
ICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndl
YmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfZ3B1
X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ3ZWJraXRf
Z3B1X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfZ3B1X3Rlc3RzIl1d
LAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA3LAot
ICAgICAgICAidGV4dCI6IFsid2Via2l0X2dwdV90ZXN0cyIsICIxNDggZml4YWJsZSIsICIoMjQg
c2tpcHBlZCkiLCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIs
ICI8YSBocmVmPVwiaHR0cDovL2h0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlv
dXQtdGVzdHMmYW1wO3Rlc3Q9Y29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNp
b24uaHRtbFwiPiIsICI8YWJiciB0aXRsZT1cImNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5
ZXItcmVjdXJzaW9uLmh0bWxcIj50aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYWJicj4iLCAi
PC9hPiIsICI8L2Rpdj4iXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ3ODEuNDQ0OTAzLCAx
MzEyNDQ0OTY2Ljg1NjA3NF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAg
ICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJv
dXRwdXQiLCAxNDg4MjUsIDE0NzgyMi4xMDc0Mjc3MDcyXQotICAgICAgICBdLAotICAgICAgICAi
aXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAi
bG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9z
dGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAg
ICAgXSwKLSAgICAgICAgIm5hbWUiOiAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMi
LAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30s
Ci0gICAgICAgICJzdGVwX251bWJlciI6IDgsCi0gICAgICAgICJ0ZXh0IjogWyJhcmNoaXZlZCB3
ZWJraXRfdGVzdHMgZ3B1IHJlc3VsdHMiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ5NjYu
ODU2NTc1LCAxMzEyNDQ0OTcwLjQ1ODY1NV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAgICAg
ICAgImxheW91dCB0ZXN0IGdwdSByZXN1bHRzIjogImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
YnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy9XZWJLaXRfTGludXhfLV9HUFVcci85NTM5NVxy
Tm9uZSIKLSAgICAgICAgfQotICAgIH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Via2l0
X3Rlc3RzIiwgIndlYmtpdF9ncHVfdGVzdHMiXSwKLSAgICAidGltZXMiOiBbMTMxMjQ0NDI5OS4x
MDIxNiwgMTMxMjQ0NDk3MC40NTkxMzhdCi19OwotCi12YXIga0V4YW1wbGVCdWlsZEluZm9XaXRo
V2ViS2l0VGVzdENyYXNoSlNPTiA9IHsKLSAgICAiYmxhbWUiOiBbImFzdml0a2luZUBjaHJvbWl1
bS5vcmciLCAiZGVyYXRAY2hyb21pdW0ub3JnIiwgIm5pcm5pbWVzaEBjaHJvbWl1bS5vcmciXSwK
LSAgICAiYnVpbGRlck5hbWUiOiAiV2ViS2l0IFdpbiAoZGVwcykoZGJnKSgyKSIsCi0gICAgImN1
cnJlbnRTdGVwIjogbnVsbCwKLSAgICAiZXRhIjogbnVsbCwKLSAgICAibG9ncyI6IFsKLSAgICAg
ICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0
YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRz
Lzc2NTMvc3RlcHMvc3Zua2lsbC9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUy
MFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3VwZGF0
ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4
ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdGFza2tpbGwvbG9ncy9z
dGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5
JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy91cGRhdGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBb
InN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWls
ZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1
My9zdGVwcy9leHRyYWN0X2J1aWxkL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0
JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvd2Vi
a2l0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4
ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvYXJjaGl2ZV93ZWJraXRf
dGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMFdpbiUy
MCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3dlYmtpdF9ncHVf
dGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBz
JTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0
c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICBdLAotICAgICJudW1iZXIiOiA3NjUzLAot
ICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICBbImJsYW1lbGlzdCIsIFsiYXN2aXRraW5lQGNo
cm9taXVtLm9yZyIsICJkZXJhdEBjaHJvbWl1bS5vcmciLCAibmlybmltZXNoQGNocm9taXVtLm9y
ZyJdLCAiQnVpbGQiXSwKLSAgICAgICAgWyJicmFuY2giLCAic3JjIiwgIkJ1aWxkIl0sCi0gICAg
ICAgIFsiYnVpbGRlcm5hbWUiLCAiV2ViS2l0IFdpbiAoZGVwcykoZGJnKSgyKSIsICJCdWlsZGVy
Il0sCi0gICAgICAgIFsiYnVpbGRudW1iZXIiLCA3NjUzLCAiQnVpbGQiXSwKLSAgICAgICAgWyJn
b3RfcmV2aXNpb24iLCAiMTA0OTM5IiwgIlNvdXJjZSJdLAotICAgICAgICBbImd0ZXN0X2ZpbHRl
ciIsIG51bGwsICJGYWN0b3J5Il0sCi0gICAgICAgIFsibWFzdGVybmFtZSIsICJjaHJvbWl1bS53
ZWJraXQiLCAibWFzdGVyLmNmZyJdLAotICAgICAgICBbInByb2plY3QiLCAiIiwgIkJ1aWxkIl0s
Ci0gICAgICAgIFsicmVwb3NpdG9yeSIsICJzdm46Ly9zdm4tbWlycm9yLmdvbG8uY2hyb21pdW0u
b3JnL2Nocm9tZS90cnVuayIsICJCdWlsZCJdLAotICAgICAgICBbInJldmlzaW9uIiwgIjEwNDkz
OSIsICJCdWlsZCJdLAotICAgICAgICBbInNjaGVkdWxlciIsICJzMV9jaHJvbWl1bV9kYmdfZGVw
IiwgIlNjaGVkdWxlciJdLAotICAgICAgICBbInNsYXZlbmFtZSIsICJ2bTExNC1tMSIsICJCdWls
ZFNsYXZlIl0KLSAgICBdLAotICAgICJyZWFzb24iOiAiZG93bnN0cmVhbSIsCi0gICAgInJlc3Vs
dHMiOiAyLAotICAgICJzbGF2ZSI6ICJ2bTExNC1tMSIsCi0gICAgInNvdXJjZVN0YW1wIjogewot
ICAgICAgICAiYnJhbmNoIjogInNyYyIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAgICAgICAg
ICAgICJhdCI6ICJUdWUgMTEgT2N0IDIwMTEgMTI6MTg6NDAiLAotICAgICAgICAgICAgImJyYW5j
aCI6ICJzcmMiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICJj
b21tZW50cyI6ICJEaXNhYmxlIHByZWZzLlByZWZzVGVzdC50ZXN0R2VvbG9jYXRpb25QcmVmIG9u
IHdpblxuXG5UQlI9ZGVubmlzamVmZnJleUBjaHJvbWl1bS5vcmdcbkJVRz05OTg2NVxuVEVTVD1c
blxuUmV2aWV3IFVSTDogaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzgyMzQwMDciLAot
ICAgICAgICAgICAgImZpbGVzIjogW3sKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUv
dGVzdC9mdW5jdGlvbmFsL1BZQVVUT19URVNUUyIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51
bGwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgIm51bWJlciI6IDEzOTcsCi0gICAgICAg
ICAgICAicHJvamVjdCI6ICIiLAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKLSAgICAg
ICAgICAgICJyZXBvc2l0b3J5IjogInN2bjovL3N2bi1taXJyb3IuZ29sby5jaHJvbWl1bS5vcmcv
Y2hyb21lL3RydW5rIiwKLSAgICAgICAgICAgICJyZXYiOiAiMTA0OTM2IiwKLSAgICAgICAgICAg
ICJyZXZpc2lvbiI6ICIxMDQ5MzYiLAotICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3Ny
Yy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZT92aWV3PXJldiZyZXZpc2lvbj0xMDQ5MzYiLAot
ICAgICAgICAgICAgIndoZW4iOiAxMzE4MzYwNzIwLAotICAgICAgICAgICAgIndobyI6ICJuaXJu
aW1lc2hAY2hyb21pdW0ub3JnIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiYXQiOiAiVHVl
IDExIE9jdCAyMDExIDEyOjIzOjExIiwKLSAgICAgICAgICAgICJicmFuY2giOiAic3JjIiwKLSAg
ICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29tbWVudHMiOiAiYXVy
YTogR2V0IHJpZCBvZiBzb21lIHVubmVlZGVkIHN0dWJzLlxuXG5Nb3N0IG9mIHRoZXNlIGFyZSBm
b3IgZGlhbG9ncyB0aGF0IGFscmVhZHkgaGFkIFdlYlVJXG5pbXBsZW1lbnRhdGlvbnMuXG5cbkJV
Rz05OTcxOFxuVEVTVD1idWlsdCB3aXRoIHVzZV9hdXJhPTFcblxuUmV2aWV3IFVSTDogaHR0cDov
L2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzgyMTgwMjciLAotICAgICAgICAgICAgImZpbGVzIjog
W3sKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvYnJvd3Nlci91aS9sb2dpbi9sb2dp
bl9wcm9tcHRfdWkuY2MiLAotICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAg
ICB9LCB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAiY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv
c3R1YnNfYXVyYS5jYyIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAgICAg
IH0sIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvY2hyb21lX2Jyb3dzZXIuZ3lw
aSIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvY29tbW9uL3VybF9jb25zdGFudHMuY2MiLAotICAg
ICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAg
ICAgIm5hbWUiOiAiY2hyb21lL2NvbW1vbi91cmxfY29uc3RhbnRzLmgiLAotICAgICAgICAgICAg
ICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJudW1iZXIiOiAx
Mzk4LAotICAgICAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVz
IjogW10sCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4tbWlycm9yLmdvbG8u
Y2hyb21pdW0ub3JnL2Nocm9tZS90cnVuayIsCi0gICAgICAgICAgICAicmV2IjogIjEwNDkzNyIs
Ci0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM3IiwKLSAgICAgICAgICAgICJyZXZsaW5r
IjogImh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWU/dmlldz1yZXYmcmV2aXNp
b249MTA0OTM3IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxODM2MDk5MSwKLSAgICAgICAgICAg
ICJ3aG8iOiAiZGVyYXRAY2hyb21pdW0ub3JnIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAi
YXQiOiAiVHVlIDExIE9jdCAyMDExIDEyOjM0OjEwIiwKLSAgICAgICAgICAgICJicmFuY2giOiAi
c3JjIiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29tbWVu
dHMiOiAiQWRkIFdpbmRvd3MgbWFuaWZlc3QgZm9yIHZpZXdzX2V4YW1wbGVzLlxuXG5UaGlzIGFs
bG93cyB2aWV3c19leGFtcGxlcyB0byB1c2UgdGhlbWVkIGNvbnRyb2xzIGFuZCBmaXhlc1xuYSBw
cm9ibGVtIHdpdGggY29tYm8gYm94IGRyb3AgZG93biBtZW51cyBub3QgYmVpbmcgc2hvd24uXG5c
bk1hbmlmZXN0IGZpbGUgY29waWVkIGZyb20gY2hyb21lL2FwcC9jaHJvbWUuZXhlLm1hbmlmZXN0
LlxuXG5CVUc9bm9uZVxuVEVTVD1tYW51YWxcblxuUmV2aWV3IFVSTDogaHR0cDovL2NvZGVyZXZp
ZXcuY2hyb21pdW0ub3JnLzgyMjcwMTciLAotICAgICAgICAgICAgImZpbGVzIjogW3sKLSAgICAg
ICAgICAgICAgICAibmFtZSI6ICJ2aWV3cy9leGFtcGxlcy92aWV3c19leGFtcGxlcy5leGUubWFu
aWZlc3QiLAotICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9LCB7Ci0g
ICAgICAgICAgICAgICAgIm5hbWUiOiAidmlld3Mvdmlld3MuZ3lwIiwKLSAgICAgICAgICAgICAg
ICAidXJsIjogbnVsbAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAibnVtYmVyIjogMTQw
MCwKLSAgICAgICAgICAgICJwcm9qZWN0IjogIiIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6
IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNo
cm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAgICAgICAgInJldiI6ICIxMDQ5MzkiLAot
ICAgICAgICAgICAgInJldmlzaW9uIjogIjEwNDkzOSIsCi0gICAgICAgICAgICAicmV2bGluayI6
ICJodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lP3ZpZXc9cmV2JnJldmlzaW9u
PTEwNDkzOSIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTgzNjE2NTAsCi0gICAgICAgICAgICAi
d2hvIjogImFzdml0a2luZUBjaHJvbWl1bS5vcmciCi0gICAgICAgIH1dLAotICAgICAgICAiaGFz
UGF0Y2giOiBmYWxzZSwKLSAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgInJlcG9zaXRv
cnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAot
ICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM5IgotICAgIH0sCi0gICAgInN0ZXBzIjogW3sKLSAg
ICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAg
ICBbIm91dHB1dCIsIDE0NDQsIDE0NDQuMF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNo
ZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBb
Ci0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJv
bWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4
MiUyOS9idWlsZHMvNzY1My9zdGVwcy9zdm5raWxsL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAot
ICAgICAgICAibmFtZSI6ICJzdm5raWxsIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAot
ICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAwLAotICAg
ICAgICAidGV4dCI6IFsic3Zua2lsbCJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NDIxMC4w
Njk3NzAxLCAxMzE4MzY0MjEwLjQ2MzY0OV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7
Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAg
ICAgICAgWyJvdXRwdXQiLCAyOTE2LCAyNzU3LjE1ODA5Njc4MzA4MTldCi0gICAgICAgIF0sCi0g
ICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0g
ICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVw
cyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9n
cy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInVwZGF0ZV9zY3JpcHRzIiwK
LSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAot
ICAgICAgICAic3RlcF9udW1iZXIiOiAxLAotICAgICAgICAidGV4dCI6IFsidXBkYXRlX3Njcmlw
dHMiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjQyMTAuNDY0Mjk5LCAxMzE4MzY0MjM0Ljc0
MTU3NV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCA0NTQ0
LCA0NTQzLjk2ODc0OTk2OTEyOTldCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjog
dHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAg
ICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkv
YnVpbGRzLzc2NTMvc3RlcHMvdGFza2tpbGwvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAg
ICAgICJuYW1lIjogInRhc2traWxsIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAg
ICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAyLAotICAgICAg
ICAidGV4dCI6IFsidGFza2tpbGwiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjQyMzQuNzQy
MjY1LCAxMzE4MzY0MjQ1Ljg0MjAwNl0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0g
ICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAg
ICAgWyJvdXRwdXQiLCAxMDE5NzczLCAyMjgyNi4xMDQ1NzI1Njg4MzhdCi0gICAgICAgIF0sCi0g
ICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0g
ICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVw
cyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdXBkYXRlL2xvZ3Mvc3RkaW8i
XQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGUiLAotICAgICAgICAicmVzdWx0
cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251
bWJlciI6IDMsCi0gICAgICAgICJ0ZXh0IjogWyJ1cGRhdGUiLCAicjEwNDkzOSJdLAotICAgICAg
ICAidGltZXMiOiBbMTMxODM2NDI0NS44NDMwMDgsIDEzMTgzNjYzNzAuOTQ2NzU5XSwKLSAgICAg
ICAgInVybHMiOiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJl
eHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDE5ODI5LCAxOTYyMC40Mzc1
MDAwMDM4NDJdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAg
ICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJz
dGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRl
cnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMv
c3RlcHMvZXh0cmFjdF9idWlsZC9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAiZXh0cmFjdF9idWlsZCIsCi0gICAgICAgICJyZXN1bHRzIjogWzEsIFtdXSwKLSAgICAg
ICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogNCwKLSAgICAgICAg
InRleHQiOiBbImV4dHJhY3RfYnVpbGQiLCAid2FybmluZ3MiXSwKLSAgICAgICAgInRpbWVzIjog
WzEzMTgzNjYzNzAuOTQ3NzEsIDEzMTgzNjY0MDQuNTUyNzgzXSwKLSAgICAgICAgInVybHMiOiB7
fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMi
OiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDI2ODUsIDEzMjA2MjQuNDgxNzY4Mzc1M10KLSAg
ICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVk
IjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBX
aW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy93ZWJraXRf
dGVzdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogIndlYmtpdF90
ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0X3Rlc3RzIl1dLAotICAgICAg
ICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA1LAotICAgICAgICAi
dGV4dCI6IFsid2Via2l0X3Rlc3RzIiwgIj8/IGZpeGFibGUiLCAiKDAgc2tpcHBlZCkiLCAiY3Jh
c2hlZCBvciBodW5nIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzE4MzY2NDA0LjU1MzcwMjEsIDEz
MTgzNjY0MDUuMjU2NDgwOV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAg
ICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJv
dXRwdXQiLCAzNzM2LCA2MDY3NDcuNTgzMjE4NTQyNjNdCi0gICAgICAgIF0sCi0gICAgICAgICJp
c0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJs
b2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRi
ZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVzdWx0
cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiYXJjaGl2ZV93ZWJr
aXRfdGVzdHNfcmVzdWx0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsiYXJjaGl2ZV93ZWJr
aXRfdGVzdHNfcmVzdWx0cyJdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAg
InN0ZXBfbnVtYmVyIjogNiwKLSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0
cyByZXN1bHRzIiwgImZhaWxlZCJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NjQwNS4yNTcz
NzMxLCAxMzE4MzY2NDA2LjUwNTgxNV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAgICAgICAg
ImxheW91dCB0ZXN0IHJlc3VsdHMiOiAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWlsZGJv
dC9sYXlvdXRfdGVzdF9yZXN1bHRzL1dlYktpdF9XaW5fX2RlcHNfX2RiZ19fMl9cci8wXHJOb25l
IgotICAgICAgICB9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4
cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjc1MSwgMTI0NDM0LjkyNjYx
NDA2MDJdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAg
ImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3Rl
cHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAid2Via2l0X2dwdV90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0
X2dwdV90ZXN0cyJdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBf
bnVtYmVyIjogNywKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF9ncHVfdGVzdHMiLCAiPz8gZml4
YWJsZSIsICIoMCBza2lwcGVkKSIsICJjcmFzaGVkIG9yIGh1bmciXSwKLSAgICAgICAgInRpbWVz
IjogWzEzMTgzNjY0MDYuNTA2NzExLCAxMzE4MzY2NDA3LjE3OTU4NV0sCi0gICAgICAgICJ1cmxz
Ijoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRp
b25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAzNzYwLCAzNTcwOS40MDc4MDA5NTgzNzVd
Ci0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3Rh
cnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0
JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvYXJj
aGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0g
ICAgICAgICJuYW1lIjogImFyY2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzIiwKLSAgICAg
ICAgInJlc3VsdHMiOiBbMiwgWyJhcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cyJdXSwK
LSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogOCwKLSAg
ICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyBncHUgcmVzdWx0cyIsICJmYWls
ZWQiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjY0MDcuMTgwNDg5MSwgMTMxODM2NjQwOC4w
NzE1MDFdLAotICAgICAgICAidXJscyI6IHsKLSAgICAgICAgICAgICJsYXlvdXQgdGVzdCBncHUg
cmVzdWx0cyI6ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0
X3Jlc3VsdHMvV2ViS2l0X1dpbl9fZGVwc19fZGJnX18yX18tX0dQVVxyLzBcck5vbmUiCi0gICAg
ICAgIH0KLSAgICB9XSwKLSAgICAidGV4dCI6IFsiZmFpbGVkIiwgIndlYmtpdF90ZXN0cyIsICJh
cmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzIiwgIndlYmtpdF9ncHVfdGVzdHMiLCAiYXJjaGl2
ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMiXSwKLSAgICAidGltZXMiOiBbMTMxODM2NDIxMC4w
NjY1MjQsIDEzMTgzNjY0MDguMDczMjExOV0KLX07Ci0KLXZhciBrRXhhbXBsZUJ1aWxkSW5mb1dp
dGhUYXNrS2lsbFdhcm5pbmcgPSB7Ci0gICAgImJsYW1lIjogWyJhc3ZpdGtpbmVAY2hyb21pdW0u
b3JnIiwgImRlcmF0QGNocm9taXVtLm9yZyIsICJuaXJuaW1lc2hAY2hyb21pdW0ub3JnIl0sCi0g
ICAgImJ1aWxkZXJOYW1lIjogIldlYktpdCBXaW4gKGRlcHMpKGRiZykoMikiLAotICAgICJjdXJy
ZW50U3RlcCI6IG51bGwsCi0gICAgImV0YSI6IG51bGwsCi0gICAgImxvZ3MiOiBbCi0gICAgICAg
IFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1
aWxkZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83
NjUzL3N0ZXBzL3N2bmtpbGwvbG9ncy9zdGRpbyJdLAotICAgIF0sCi0gICAgIm51bWJlciI6IDc2
NTMsCi0gICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0IiwgWyJhc3ZpdGtp
bmVAY2hyb21pdW0ub3JnIiwgImRlcmF0QGNocm9taXVtLm9yZyIsICJuaXJuaW1lc2hAY2hyb21p
dW0ub3JnIl0sICJCdWlsZCJdLAotICAgICAgICBbImJyYW5jaCIsICJzcmMiLCAiQnVpbGQiXSwK
LSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJLaXQgV2luIChkZXBzKShkYmcpKDIpIiwgIkJ1
aWxkZXIiXSwKLSAgICAgICAgWyJidWlsZG51bWJlciIsIDc2NTMsICJCdWlsZCJdLAotICAgICAg
ICBbImdvdF9yZXZpc2lvbiIsICIxMDQ5MzkiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ3Rlc3Rf
ZmlsdGVyIiwgbnVsbCwgIkZhY3RvcnkiXSwKLSAgICAgICAgWyJtYXN0ZXJuYW1lIiwgImNocm9t
aXVtLndlYmtpdCIsICJtYXN0ZXIuY2ZnIl0sCi0gICAgICAgIFsicHJvamVjdCIsICIiLCAiQnVp
bGQiXSwKLSAgICAgICAgWyJyZXBvc2l0b3J5IiwgInN2bjovL3N2bi1taXJyb3IuZ29sby5jaHJv
bWl1bS5vcmcvY2hyb21lL3RydW5rIiwgIkJ1aWxkIl0sCi0gICAgICAgIFsicmV2aXNpb24iLCAi
MTA0OTM5IiwgIkJ1aWxkIl0sCi0gICAgICAgIFsic2NoZWR1bGVyIiwgInMxX2Nocm9taXVtX2Ri
Z19kZXAiLCAiU2NoZWR1bGVyIl0sCi0gICAgICAgIFsic2xhdmVuYW1lIiwgInZtMTE0LW0xIiwg
IkJ1aWxkU2xhdmUiXQotICAgIF0sCi0gICAgInJlYXNvbiI6ICJkb3duc3RyZWFtIiwKLSAgICAi
cmVzdWx0cyI6IDIsCi0gICAgInNsYXZlIjogInZtMTE0LW0xIiwKLSAgICAic291cmNlU3RhbXAi
OiB7Ci0gICAgICAgICJicmFuY2giOiAic3JjIiwKLSAgICAgICAgImNoYW5nZXMiOiBbewotICAg
ICAgICAgICAgImF0IjogIlR1ZSAxMSBPY3QgMjAxMSAxMjoxODo0MCIsCi0gICAgICAgICAgICAi
YnJhbmNoIjogInNyYyIsCi0gICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAg
ICAgImNvbW1lbnRzIjogIkRpc2FibGUgcHJlZnMuUHJlZnNUZXN0LnRlc3RHZW9sb2NhdGlvblBy
ZWYgb24gd2luXG5cblRCUj1kZW5uaXNqZWZmcmV5QGNocm9taXVtLm9yZ1xuQlVHPTk5ODY1XG5U
RVNUPVxuXG5SZXZpZXcgVVJMOiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvODIzNDAw
NyIsCi0gICAgICAgICAgICAiZmlsZXMiOiBbewotICAgICAgICAgICAgICAgICJuYW1lIjogImNo
cm9tZS90ZXN0L2Z1bmN0aW9uYWwvUFlBVVRPX1RFU1RTIiwKLSAgICAgICAgICAgICAgICAidXJs
IjogbnVsbAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAibnVtYmVyIjogMTM5NywKLSAg
ICAgICAgICAgICJwcm9qZWN0IjogIiIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAot
ICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9taXVt
Lm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAgICAgICAgInJldiI6ICIxMDQ5MzYiLAotICAgICAg
ICAgICAgInJldmlzaW9uIjogIjEwNDkzNiIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJodHRw
Oi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lP3ZpZXc9cmV2JnJldmlzaW9uPTEwNDkz
NiIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTgzNjA3MjAsCi0gICAgICAgICAgICAid2hvIjog
Im5pcm5pbWVzaEBjaHJvbWl1bS5vcmciCi0gICAgICAgIH1dLAotICAgICAgICAiaGFzUGF0Y2gi
OiBmYWxzZSwKLSAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgInJlcG9zaXRvcnkiOiAi
c3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAg
ICAicmV2aXNpb24iOiAiMTA0OTM5IgotICAgIH0sCi0gICAgInN0ZXBzIjogW3sKLSAgICAgICAg
ImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbWyJvdXRwdXQiLDE3NzYsMTUz
NC4wNjI1MDE0MjY3ODYyXV0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAg
ImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogW1sic3RkaW8iLCJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvWFAlMjBQZXJmL2J1aWxk
cy8xMDI2OC9zdGVwcy90YXNra2lsbC9sb2dzL3N0ZGlvIl1dLAotICAgICAgICAibmFtZSI6ICJ0
YXNra2lsbCIsCi0gICAgICAgICJyZXN1bHRzIjogWzEsW11dLAotICAgICAgICAic3RhdGlzdGlj
cyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAyLAotICAgICAgICAidGV4dCI6IFsidGFz
a2tpbGwiLCJ3YXJuaW5nIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzM5NDM4MjE0LjE3NzM2Miwx
MzM5NDM4MjIyLjU1NTU3Ml0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9XSwKLSAgICAidGV4
dCI6IFsiZmFpbGVkIiwgIndlYmtpdF90ZXN0cyIsICJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1
bHRzIiwgIndlYmtpdF9ncHVfdGVzdHMiLCAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3Vs
dHMiXSwKLSAgICAidGltZXMiOiBbMTMxODM2NDIxMC4wNjY1MjQsIDEzMTgzNjY0MDguMDczMjEx
OV0KLX07Ci0KLQotdmFyIGtFeGFtcGxlUGVyZkJ1aWxkZXJTdGF0dXNKU09OID0gIHsKLSAgICAi
V2ViS2l0IExpbnV4IjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAg
ICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAg
ICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRC
dWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJz
bGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9
LAotICAgICJNYWMxMC42IFBlcmYiOiB7Ci0gICAgICAgICJiYXNlZGlyIjogIk1hYzEwXzZfUGVy
ZiIsCi0gICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2MSwgMTE0NjJd
LAotICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAotICAgICAgICAi
Y3VycmVudEJ1aWxkcyI6IFsxMTQ2MSwgMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6
IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJi
dWlsZGluZyIKLSAgICB9LAotfTsKLQotdmFyIGtFeGFtcGxlUGVyZkJ1aWxkSW5mb0pTT04gPSB7
Ci0gICAgImJsYW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAotICAgICJidWlsZGVyTmFtZSI6
ICJNYWMxMC42IFBlcmYiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvbWFpbi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDoz
OFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMuICBT
YWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFi
b3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21h
aW4uanM6UHJvcGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5nZUxv
Z1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5z
ZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5w
bmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRv
dy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3Qt
dmVydGljYWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5BdDog
VGh1IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xu
Q29tbWVudHM6IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hh
ZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6
XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0
cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpc
biogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVy
dGljYWwtZXhwZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAotICAgICJjdXJyZW50U3Rl
cCI6IG51bGwsCi0gICAgImV0YSI6IG51bGwsCi0gICAgImxvZ3MiOiBbCi0gICAgICAgIFsic3Rk
aW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJz
L1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGVfc2NyaXB0cy9sb2dzL3N0
ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2No
cm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91
cGRhdGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMv
MTE0NjEvc3RlcHMvY29tcGlsZS9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUy
MExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3RkaW8iXSwK
LSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtpdF91
bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVp
bGRzLzExNDYxL3N0ZXBzL3dlYmtpdF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3Rk
aW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJz
L1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19y
ZXN1bHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRz
LzExNDYxL3N0ZXBzL3dlYmtpdF9ncHVfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0
ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVy
cy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNf
Z3B1X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgXSwKLSAgICAibnVtYmVyIjogMTE0NjEsCi0g
ICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0IiwgWyJhYmFydGhAd2Via2l0
Lm9yZyJdLCAiQnVpbGQiXSwKLSAgICAgICAgWyJicmFuY2giLCAidHJ1bmsiLCAiQnVpbGQiXSwK
LSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJLaXQgTGludXgiLCAiQnVpbGQiXSwKLSAgICAg
ICAgWyJidWlsZG51bWJlciIsIDExNDYxLCAiQnVpbGQiXSwKLSAgICAgICAgWyJnb3RfcmV2aXNp
b24iLCAiOTUzOTUiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ290X3dlYmtpdF9yZXZpc2lvbiIs
ICI5MjM1OCIsICJTb3VyY2UiXSwKLSAgICAgICAgWyJndGVzdF9maWx0ZXIiLCBudWxsLCAiRmFj
dG9yeSJdLAotICAgICAgICBbIm1hc3Rlcm5hbWUiLCAiY2hyb21pdW0ud2Via2l0IiwgIm1hc3Rl
ci5jZmciXSwKLSAgICAgICAgWyJyZXZpc2lvbiIsICI5MjM1OCIsICJCdWlsZCJdLAotICAgICAg
ICBbInNjaGVkdWxlciIsICJzNl93ZWJraXRfcmVsIiwgIlNjaGVkdWxlciJdLAotICAgICAgICBb
InNsYXZlbmFtZSIsICJ2bTEyNC1tMSIsICJCdWlsZFNsYXZlIl0KLSAgICBdLAotICAgICJyZWFz
b24iOiAiIiwKLSAgICAicmVxdWVzdHMiOiBbewotICAgICAgICAiYnVpbGRlck5hbWUiOiAiV2Vi
S2l0IExpbnV4IiwKLSAgICAgICAgImJ1aWxkcyI6IFsxMTQ2MV0sCi0gICAgICAgICJzb3VyY2Ui
OiB7Ci0gICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICJjaGFuZ2Vz
IjogW3sKLSAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXggdHlw
ZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhp
bmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAotICAgICAgICAgICAgICAgICJudW1iZXIi
OiA0MzcwNywKLSAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU3
IiwKLSAgICAgICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1NTA4
MSwKLSAgICAgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICAg
ICAgfSwgewotICAgICAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAg
ICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0
ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQw
Pi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1z
aGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2No
cm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFs
LWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFk
b3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQu
cG5nOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VMb2ci
LCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNl
dC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5w
bmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFk
b3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmlj
dC12ZXJ0aWNhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nIl0s
Ci0gICAgICAgICAgICAgICAgIm51bWJlciI6IDQzNzA4LAotICAgICAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAg
ICAgICAgICAicmV2aXNpb24iOiAiOTIzNTgiLAotICAgICAgICAgICAgICAgICJyZXZsaW5rIjog
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU4IiwKLSAgICAgICAgICAgICAg
ICAid2hlbiI6IDEzMTI0NDQyMzguODU1NTM4LAotICAgICAgICAgICAgICAgICJ3aG8iOiAiYWJh
cnRoQHdlYmtpdC5vcmciCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJoYXNQYXRjaCI6
IGZhbHNlLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IgotICAgICAgICB9LAotICAg
ICAgICAic3VibWl0dGVkQXQiOiAxMzEyNDQ0Mjk4Ljk4OTgxOAotICAgIH1dLAotICAgICJyZXN1
bHRzIjogMiwKLSAgICAic2xhdmUiOiAidm0xMjQtbTEiLAotICAgICJzb3VyY2VTdGFtcCI6IHsK
LSAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAgICAg
ICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwK
LSAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMg
bm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRo
aXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAg
ICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9n
Il0sCi0gICAgICAgICAgICAibnVtYmVyIjogNDM3MDcsCi0gICAgICAgICAgICAicHJvcGVydGll
cyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAgICAgICJyZXZp
c2lvbiI6ICI5MjM1NyIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQyMzgu
ODU1MDgxLAotICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAgICAg
fSwgewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2F0ZWdv
cnkiOiBudWxsLAotICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0ZSBiYXNlbGluZXMgYWZ0
ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVk
LnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlw
bGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0
L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpc
biogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3Ry
aWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
cmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOiIsCi0gICAgICAg
ICAgICAiZmlsZXMiOiBbIkxheW91dFRlc3RzL0NoYW5nZUxvZyIsICJMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVj
dGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3Qt
aG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVk
LnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmciXSwKLSAgICAgICAgICAgICJudW1i
ZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAgICAg
ICAgICAgICJyZXZsaW5rIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU4
IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTU1MzgsCi0gICAgICAgICAgICAi
d2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICB9XSwKLSAgICAgICAgImhhc1BhdGNo
IjogZmFsc2UsCi0gICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICB9LAotICAgICJzdGVw
cyI6IFt7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwot
ICAgICAgICAgICAgWyJvdXRwdXQiLCAyMjk3LCAyMzAwLjY1NzEwMTQwODM3ODRdCi0gICAgICAg
IF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRy
dWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJ1cGRhdGVfc2NyaXB0cyIsCi0gICAgICAgICJyZXN1bHRzIjog
WzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVy
IjogMCwKLSAgICAgICAgInRleHQiOiBbInVwZGF0ZV9zY3JpcHRzIl0sCi0gICAgICAgICJ0aW1l
cyI6IFsxMzEyNDQ0Mjk5LjEwMjgzNCwgMTMxMjQ0NDMwOS4yNzAzMjRdLAotICAgICAgICAidXJs
cyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0
aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjA0NTMsIDE3NTgwLjUwMDIzODk2NDVd
Ci0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3Rh
cnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0
JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlvIl0KLSAgICAgICAg
XSwKLSAgICAgICAgIm5hbWUiOiAidXBkYXRlIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11d
LAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAxLAot
ICAgICAgICAidGV4dCI6IFsidXBkYXRlIiwgInI5NTM5NSIsICJ3ZWJraXQgcjkyMzU4Il0sCi0g
ICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0MzA5LjI3MDc2MywgMTMxMjQ0NDM5OC40NjgxMzldLAot
ICAgICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAg
ICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTczMTYsIDI2NTIu
NDg1MDQ5OTU4OTQ1Nl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAot
ICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dzL3N0
ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiY29tcGlsZSIsCi0gICAgICAgICJy
ZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0
ZXBfbnVtYmVyIjogMiwKLSAgICAgICAgInRleHQiOiBbImNvbXBpbGUiXSwKLSAgICAgICAgInRp
bWVzIjogWzEzMTI0NDQzOTguNDY4NTUsIDEzMTI0NDQ0NDEuNjg4MzhdLAotICAgICAgICAidXJs
cyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0
aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgOTE5ODAsIDkyMDAyLjEyNjI4MzI1MjUx
XQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0
YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktp
dCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3RkaW8i
XQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ0ZXN0X3NoZWxsX3Rlc3RzIiwKLSAgICAg
ICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAg
ICAic3RlcF9udW1iZXIiOiAzLAotICAgICAgICAidGV4dCI6IFsidGVzdF9zaGVsbF90ZXN0cyIs
ICIxIGRpc2FibGVkIiwgIjIgZmxha3kiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NDEu
Njg4NzU2LCAxMzEyNDQ0NDUxLjc0OTA4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0sIHsK
LSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAg
ICAgICBbIm91dHB1dCIsIDIwNzcyLCAyMDc3Mi42Mzg1MDM0NDMwODZdCi0gICAgICAgIF0sCi0g
ICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0g
ICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRz
LzExNDYxL3N0ZXBzL3dlYmtpdF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAot
ICAgICAgICAibmFtZSI6ICJ3ZWJraXRfdW5pdF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjog
WzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVy
IjogNCwKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF91bml0X3Rlc3RzIiwgIjEgZGlzYWJsZWQi
XSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTEuNzQ5NTc0LCAxMzEyNDQ0NDUyLjMwNjE0
M10sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNDc3NDA2
LCAyNDk4OTE1LjYxNDYyNzU0OTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjog
dHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAg
ICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0u
d2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtpdF90
ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0X3Rl
c3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfdGVzdHMiXV0sCi0gICAgICAg
ICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDUsCi0gICAgICAgICJ0
ZXh0IjogWyJ3ZWJraXRfdGVzdHMiLCAiMjAxNCBmaXhhYmxlIiwgIigzNzAgc2tpcHBlZCkiLCAi
ZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIsICI8YSBocmVmPVwi
aHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD1m
YXN0L2JveC1zaGFkb3cvYm94LXNoYWRvdy1jbGlwcGVkLXNsaWNlcy5odG1sXCI+IiwgIjxhYmJy
IHRpdGxlPVwiZmFzdC9ib3gtc2hhZG93L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbFwi
PmJveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rpdj4i
XSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTIuMzA2Njk1LCAxMzEyNDQ0NzY4Ljg4ODI2
Nl0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAot
ICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNjY4ODQ1
LCAyNjcyNzQ2LjM3MjM2MzI1NF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0
cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAg
ICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53
ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93
ZWJraXRfdGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAiZHVtbXlfcGVyZl90ZXN0XzEiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0g
ICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDYsCi0gICAg
ICAgICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgcmVzdWx0cyJdLAotICAgICAgICAi
dGltZXMiOiBbMTMxMjQ0NDc2OC44ODg3NDYsIDEzMTI0NDQ3ODEuNDQ0Mzk5XSwKLSAgICAgICAg
InVybHMiOiB7Ci0gICAgICAgICAgICAicmVzdWx0cyI6ICJodHRwOi8vZHVtbXl1cmwxIgotICAg
ICAgICB9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0
aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjEwOTU4LCAyMDgxMzguNDk2NTE4Mjk5
M10KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNT
dGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJL
aXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0ZGlv
Il0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0X2dwdV90ZXN0cyIsCi0gICAg
ICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0X2dwdV90ZXN0cyJdXSwKLSAgICAgICAgInN0YXRp
c3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogNywKLSAgICAgICAgInRleHQiOiBb
IndlYmtpdF9ncHVfdGVzdHMiLCAiMTQ4IGZpeGFibGUiLCAiKDI0IHNraXBwZWQpIiwgImZhaWxl
ZCAxIiwgIjxkaXYgY2xhc3M9XCJCdWlsZFJlc3VsdEluZm9cIj4iLCAiPGEgaHJlZj1cImh0dHBz
Oi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9Y29tcG9z
aXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFwiPiIsICI8YWJiciB0aXRs
ZT1cImNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWxcIj50aWxl
ZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rpdj4iXSwKLSAgICAg
ICAgInRpbWVzIjogWzEzMTI0NDQ3ODEuNDQ0OTAzLCAxMzEyNDQ0OTY2Ljg1NjA3NF0sCi0gICAg
ICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAi
ZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAxNDg4MjUsIDE0NzgyMi4x
MDc0Mjc3MDcyXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAg
ICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0
c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAi
ZHVtbXlfcGVyZl90ZXN0XzIiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAg
ICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDgsCi0gICAgICAgICJ0
ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgZ3B1IHJlc3VsdHMiXSwKLSAgICAgICAgInRp
bWVzIjogWzEzMTI0NDQ5NjYuODU2NTc1LCAxMzEyNDQ0OTcwLjQ1ODY1NV0sCi0gICAgICAgICJ1
cmxzIjogewotICAgICAgICAgICAgInJlc3VsdHMiOiAiaHR0cDovL2R1bW15dXJsMiIKLSAgICAg
ICAgfQotICAgIH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Via2l0X3Rlc3RzIiwgIndl
YmtpdF9ncHVfdGVzdHMiXSwKLSAgICAidGltZXMiOiBbMTMxMjQ0NDI5OS4xMDIxNiwgMTMxMjQ0
NDk3MC40NTkxMzhdCi19OwotCi10ZXN0KCJidWlsZGVyc0ZhaWxpbmciLCAzLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLSAgICBidWls
ZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlKCk7Ci0KLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pT
T04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvSlNPTikpOwot
ICAgIGZhaWxpbmdCdWlsZEluZm9KU09OLm51bWJlciA9IDExNDYwOwotICAgIGZhaWxpbmdCdWls
ZEluZm9KU09OLnN0ZXBzWzJdLnJlc3VsdHNbMF0gPSAxOwotCi0gICAgdmFyIHJlcXVlc3RlZFVS
THMgPSBbXTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKLSAg
ICB7Ci0gICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICBzaW11bGF0b3Iu
c2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgvXC9qc29uXC9i
dWlsZGVycyQvLmV4ZWModXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBsZUJ1
aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQlMjBMaW51eC8u
ZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGtFeGFtcGxlQnVpbGRJbmZvSlNP
Tik7Ci0gICAgICAgICAgICBlbHNlIGlmICgvV2ViS2l0JTIwTWFjMTBcLjYvLmV4ZWModXJsKSkK
LSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWlsaW5nQnVpbGRJbmZvSlNPTik7Ci0gICAgICAg
ICAgICBlbHNlIGlmICgvV2ViS2l0JTIwQVNBTi8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAg
IGNhbGxiYWNrKGZhaWxpbmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH07
Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMu
YnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7
Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAgICAgICAg
ICAgIldlYktpdCBMaW51eCI6IFsKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9ncHVfdGVz
dHMiCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiV2ViS2l0IE1hYzEwLjYi
OiBbCi0gICAgICAgICAgICAgICAgICAgICJ3ZWJraXRfZ3B1X3Rlc3RzIgotICAgICAgICAgICAg
ICAgIF0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlZXBF
cXVhbChyZXF1ZXN0ZWRVUkxzLCBbCi0gICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdC9qc29uL2J1aWxkZXJzIiwKLSAgICAgICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxIiwKLSAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0L2pzb24vYnVpbGRlcnMvV2ViS2l0JTIwTWFjMTAuNi9idWlsZHMvMTE0NjAiLAot
ICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzRmFpbGluZyAoQXBwbGUpIiwgMywgZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0gICAg
YnVpbGRlcnMuY2xlYXJCdWlsZEluZm9DYWNoZSgpOwotCi0gICAgY29uZmlnLmN1cnJlbnRQbGF0
Zm9ybSA9ICdhcHBsZSc7Ci0KLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pTT04gPSBKU09OLnBh
cnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvSlNPTikpOwotICAgIGZhaWxpbmdC
dWlsZEluZm9KU09OLm51bWJlciA9IDExNDYwOwotICAgIGZhaWxpbmdCdWlsZEluZm9KU09OLnN0
ZXBzWzJdLnJlc3VsdHNbMF0gPSAxOwotCi0gICAgdmFyIHJlcXVlc3RlZFVSTHMgPSBbXTsKLSAg
ICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAg
IHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxs
YmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgvXC9qc29uXC9idWlsZGVycyQvLmV4
ZWModXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBsZVdlYktpdERvdE9yZ0J1
aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9BcHBsZSUyMExpb24lMjBS
ZWxlYXNlJTIwV0syJTIwXChUZXN0c1wpLy5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2Fs
bGJhY2soa0V4YW1wbGVCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH07Ci0K
LSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMuYnVp
bGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7Ci0g
ICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAgICAgICAgICAg
IkFwcGxlIExpb24gUmVsZWFzZSBXSzIgKFRlc3RzKSI6IFsKLSAgICAgICAgICAgICAgICAgICAg
IndlYmtpdF9ncHVfdGVzdHMiCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAg
ICAgICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzIiwKLSAgICAgICAg
Imh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzL0FwcGxlJTIwTGlvbiUyMFJl
bGVhc2UlMjBXSzIlMjAoVGVzdHMpL2J1aWxkcy8xMTQ2MSIKLSAgICBdKTsKLQotICAgIGNvbmZp
Zy5jdXJyZW50UGxhdGZvcm0gPSAnY2hyb21pdW0nOwotfSk7Ci0KLQotdGVzdCgiYnVpbGRlcnNG
YWlsaW5nIChydW4td2Via2l0LXRlc3RzIGNyYXNoKSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJzLmNsZWFy
QnVpbGRJbmZvQ2FjaGUoKTsKLQotICAgIHZhciBidWlsZGVyU3RhdHVzSlNPTiA9IEpTT04ucGFy
c2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZGVyU3RhdHVzSlNPTikpOwotICAgIGRlbGV0
ZSBidWlsZGVyU3RhdHVzSlNPTlsnV2ViS2l0IE1hYzEwLjYnXTsKLSAgICBidWlsZGVyU3RhdHVz
SlNPTlsnV2ViS2l0IExpbnV4J10uY2FjaGVkQnVpbGRzID0gWzIxNDYwXTsKLSAgICBidWlsZGVy
U3RhdHVzSlNPTlsnV2ViS2l0IExpbnV4J10uY3VycmVudEJ1aWxkcyA9IFtdOwotCi0gICAgdmFy
IGZhaWxpbmdCdWlsZEluZm9KU09OID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShrRXhhbXBs
ZUJ1aWxkSW5mb1dpdGhXZWJLaXRUZXN0Q3Jhc2hKU09OKSk7Ci0gICAgZmFpbGluZ0J1aWxkSW5m
b0pTT04ubnVtYmVyID0gMjE0NjA7Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAg
IHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
cmVxdWVzdGVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxi
YWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKC9cL2pzb25cL2J1aWxkZXJzJC8uZXhl
Yyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGJ1aWxkZXJTdGF0dXNKU09OKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQlMjBMaW51eC8uZXhlYyh1cmwpKQotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGZhaWxpbmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwot
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwot
ICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVp
bGRlcnMuYnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVM
aXN0KSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAg
ICAgICAgICAgIldlYktpdCBMaW51eCI6IFsKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF90
ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRz
IiwKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9ncHVfdGVzdHMiLAotICAgICAgICAgICAg
ICAgICAgICAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMiCi0gICAgICAgICAgICAg
ICAgXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVx
dWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3Av
Y2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMiLAotICAgICAgImh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycy9XZWJLaXQlMjBMaW51eC9i
dWlsZHMvMjE0NjAiLAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzRmFpbGluZyAodGFz
a2tpbGwgd2FybmluZykiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3
IE5ldHdvcmtTaW11bGF0b3IoKTsKLSAgICBidWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlKCk7
Ci0KLSAgICB2YXIgYnVpbGRlclN0YXR1c0pTT04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5
KGtFeGFtcGxlQnVpbGRlclN0YXR1c0pTT04pKTsKLSAgICBkZWxldGUgYnVpbGRlclN0YXR1c0pT
T05bJ1dlYktpdCBNYWMxMC42J107Ci0gICAgYnVpbGRlclN0YXR1c0pTT05bJ1dlYktpdCBMaW51
eCddLmNhY2hlZEJ1aWxkcyA9IFsyMTQ2MF07Ci0gICAgYnVpbGRlclN0YXR1c0pTT05bJ1dlYktp
dCBMaW51eCddLmN1cnJlbnRCdWlsZHMgPSBbXTsKLQotICAgIHZhciBmYWlsaW5nQnVpbGRJbmZv
SlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZEluZm9XaXRoVGFz
a0tpbGxXYXJuaW5nKSk7Ci0gICAgZmFpbGluZ0J1aWxkSW5mb0pTT04ubnVtYmVyID0gMjE0NjA7
Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVy
bCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgaWYgKC9cL2pzb25cL2J1aWxkZXJzJC8uZXhlYyh1cmwpKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGJ1aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9X
ZWJLaXQlMjBMaW51eC8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZhaWxp
bmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIG9r
KGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAgICAgICAgICAgICAgIGNhbGxi
YWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11bGF0
b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMuYnVpbGRlcnNGYWlsaW5n
Tm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7Ci0gICAgICAgICAgICBk
ZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7fSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0g
ICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAgICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMiLAotICAgICAgImh0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycy9XZWJLaXQl
MjBMaW51eC9idWlsZHMvMjE0NjAiLAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzLnBl
cmZCdWlsZGVycyIsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0
d29ya1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJzLmNsZWFyQnVpbGRJbmZvQ2FjaGUoKTsKLQot
ICAgIHZhciBidWlsZGVyU3RhdHVzSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4
YW1wbGVQZXJmQnVpbGRlclN0YXR1c0pTT04pKTsKLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pT
T04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlUGVyZkJ1aWxkSW5mb0pTT04p
KTsKLQotICAgIHZhciByZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1
bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXF1ZXN0ZWRVUkxzLnB1c2go
dXJsKTsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBpZiAoL1wvanNvblwvYnVpbGRlcnMkLy5leGVjKHVybCkpCi0gICAgICAgICAg
ICAgICAgY2FsbGJhY2soYnVpbGRlclN0YXR1c0pTT04pOwotICAgICAgICAgICAgZWxzZSBpZiAo
L01hYzEwLjYlMjBQZXJmLy5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soZmFp
bGluZ0J1aWxkSW5mb0pTT04pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChm
dW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMucGVyZkJ1aWxkZXJzKGZ1bmN0aW9uKGJ1aWxk
ZXJOYW1lTGlzdCkgewotICAgICAgICAgICAgZGVlcEVxdWFsKGJ1aWxkZXJOYW1lTGlzdCwgewot
ICAgICAgICAgICAgICAgICJkdW1teV9wZXJmX3Rlc3RfMSI6IFsKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXIiOiAiTWFjMTAuNiBQZXJmIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL2R1bW15dXJsMSIKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgImR1
bW15X3BlcmZfdGVzdF8yIjogWwotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAiYnVpbGRlciI6ICJNYWMxMC42IFBlcmYiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwyIgotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
fSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dC5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBjaGVja291dCA9IGNo
ZWNrb3V0IHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0KLXZhciBrV2ViS2l0VHJ1bmsgPSAnaHR0
cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay8nOwotCi12YXIgZ19o
YXZlU2VlbkNoZWNrb3V0QXZhaWxhYmxlID0gZmFsc2U7Ci0KLWZ1bmN0aW9uIGNhbGxJZkNoZWNr
b3V0QXZhaWxhYmxlKGNhbGxiYWNrLCBjaGVja291dFVuYXZhaWxhYmxlKQotewotICAgIGlmIChn
X2hhdmVTZWVuQ2hlY2tvdXRBdmFpbGFibGUpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICBjaGVja291dC5pc0F2YWlsYWJsZShmdW5jdGlvbihpc0F2
YWlsYWJsZSkgewotICAgICAgICBpZiAoaXNBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIGdfaGF2
ZVNlZW5DaGVja291dEF2YWlsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGVja291dFVuYXZh
aWxhYmxlKQotICAgICAgICAgICAgY2hlY2tvdXRVbmF2YWlsYWJsZSgpOwotICAgIH0pOwotfQot
Ci1jaGVja291dC5zdWJ2ZXJzaW9uVVJMRm9yVGVzdCA9IGZ1bmN0aW9uKHRlc3ROYW1lKQotewot
ICAgIHJldHVybiBrV2ViS2l0VHJ1bmsgKyAnTGF5b3V0VGVzdHMvJyArIHRlc3ROYW1lOwotfTsK
LQotY2hlY2tvdXQuaXNBdmFpbGFibGUgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBuZXQu
YWpheCh7Ci0gICAgICAgIHVybDogJy9waW5nJywKLSAgICAgICAgc3VjY2VzczogZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKLSAgICAgICAgfSwKLSAgICAgICAgZXJy
b3I6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAgICB9
LAotICAgIH0pOwotfTsKLQotY2hlY2tvdXQucmV2ZXJ0ID0gZnVuY3Rpb24ocmV2aXNpb24sIHJl
YXNvbiwgY2FsbGJhY2ssIGNoZWNrb3V0VW5hdmFpbGFibGUpCi17Ci0gICAgY2FsbElmQ2hlY2tv
dXRBdmFpbGFibGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldC5wb3N0KCcvcmV2ZXJ0PycgKyAk
LnBhcmFtKHsKLSAgICAgICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAotICAgICAgICAgICAg
J3JlYXNvbic6IHJlYXNvbgotICAgICAgICB9KSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBj
YWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9LCBjaGVja291dFVuYXZhaWxhYmxlKTsKLX07
Ci0KLWNoZWNrb3V0LnJlYmFzZWxpbmUgPSBmdW5jdGlvbihmYWlsdXJlSW5mb0xpc3QsIGNhbGxi
YWNrLCBwcm9ncmVzc0NhbGxiYWNrLCBjaGVja291dFVuYXZhaWxhYmxlKQotewotICAgIGNhbGxJ
ZkNoZWNrb3V0QXZhaWxhYmxlKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGVzdHMgPSB7fTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmYWlsdXJlSW5mb0xpc3QubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgICAgIHZhciBmYWlsdXJlSW5mbyA9IGZhaWx1cmVJbmZvTGlzdFtpXTsKLSAg
ICAgICAgICAgIHRlc3RzW2ZhaWx1cmVJbmZvLnRlc3ROYW1lXSA9IHRlc3RzW2ZhaWx1cmVJbmZv
LnRlc3ROYW1lXSB8fCB7fTsKLSAgICAgICAgICAgIHRlc3RzW2ZhaWx1cmVJbmZvLnRlc3ROYW1l
XVtmYWlsdXJlSW5mby5idWlsZGVyTmFtZV0gPSAKLSAgICAgICAgICAgICAgICBiYXNlLnVuaXF1
aWZ5QXJyYXkoYmFzZS5mbGF0dGVuQXJyYXkoZmFpbHVyZUluZm8uZmFpbHVyZVR5cGVMaXN0Lm1h
cChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KSkpOwotICAgICAgICB9Ci0gICAg
ICAgIG5ldC5wb3N0KCcvcmViYXNlbGluZWFsbCcsIEpTT04uc3RyaW5naWZ5KHRlc3RzKSwgZnVu
Y3Rpb24oKSB7IGNhbGxiYWNrKCkgfSk7Ci0gICAgfSwgY2hlY2tvdXRVbmF2YWlsYWJsZSk7Ci19
OwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXRfdW5pdHRl
c3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NoZWNrb3V0X3Vu
aXR0ZXN0cy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
Y2hlY2tvdXRfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsOTAgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoImNoZWNrb3V0Iik7Ci0KLXRlc3Qo
InN1YnZlcnNpb25VUkxGb3JUZXN0IiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1YWxzKGNoZWNr
b3V0LnN1YnZlcnNpb25VUkxGb3JUZXN0KCJwYXRoL3RvL3Rlc3QuaHRtbCIpLCAiaHR0cHM6Ly9z
dm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9wYXRoL3Rv
L3Rlc3QuaHRtbCIpOwotfSk7Ci0KLXRlc3QoInJlYmFzZWxpbmUiLCAzLCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHZhciBy
ZXF1ZXN0cyA9IFtdOwotICAgIHNpbXVsYXRvci5wb3N0ID0gZnVuY3Rpb24odXJsLCBib2R5LCBj
YWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RzLnB1c2goW3VybCwgYm9keV0pOwotICAg
ICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgfTsKLSAgICBz
aW11bGF0b3IuYWpheCA9IGZ1bmN0aW9uKG9wdGlvbnMpCi0gICAgewotICAgICAgICBpZiAob3B0
aW9ucy51cmwuaW5kZXhPZignL3BpbmcnKSA9PSAtMSkKLSAgICAgICAgICAgIG9rKGZhbHNlLCAn
UmVjZWl2ZWQgbm9uLXBpbmcgYWpheCByZXF1ZXN0OiAnICsgb3B0aW9ucy51cmwpOwotICAgICAg
ICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhvcHRpb25zLnN1Y2Nlc3MpOwotICAgIH07Ci0K
LSAgICB2YXIga0V4cGVjdGVkVGVzdE5hbWVQcm9ncmVzc1N0YWNrID0gWwotICAgICAgICAnZmFz
dC90ZXN0Lmh0bWwnLAotICAgICAgICAnYW5vdGhlci90ZXN0LnN2ZycsCi0gICAgICAgICdhbm90
aGVyL3Rlc3Quc3ZnJywgLy8gVGhpcyBpcyB0aGUgZmlyc3Qgb25lLgotICAgIF07Ci0KLSAgICBz
aW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgY2hlY2tvdXQucmViYXNlbGlu
ZShbewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogJ1dlYktpdCBMaW51eCcsCi0gICAgICAg
ICAgICAndGVzdE5hbWUnOiAnYW5vdGhlci90ZXN0LnN2ZycsCi0gICAgICAgICAgICAnZmFpbHVy
ZVR5cGVMaXN0JzogWydJTUFHRSddLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAnYnVpbGRl
ck5hbWUnOiAnV2ViS2l0IE1hYzEwLjYnLAotICAgICAgICAgICAgJ3Rlc3ROYW1lJzogJ2Fub3Ro
ZXIvdGVzdC5zdmcnLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UnLCAn
VEVYVCcsICdJTUFHRStURVhUJ10sCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICdidWlsZGVy
TmFtZSc6ICdXZWJraXQgV2luNycsCi0gICAgICAgICAgICAndGVzdE5hbWUnOiAnZmFzdC90ZXN0
Lmh0bWwnLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UrVEVYVCddLAot
ICAgICAgICB9XSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBvayh0cnVlKTsKLSAgICAgICAg
fSwgZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKLSAgICAgICAgICAgIGVxdWFscyhmYWlsdXJlSW5m
by50ZXN0TmFtZSwga0V4cGVjdGVkVGVzdE5hbWVQcm9ncmVzc1N0YWNrLnBvcCgpKTsKLSAgICAg
ICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBvayhmYWxzZSwgJ0NoZWNrb3V0IHNob3Vs
ZCBiZSBhdmFpbGFibGUuJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFs
KHJlcXVlc3RzLCBbCi0gICAgICAgIFsiL3JlYmFzZWxpbmVhbGwiLAotICAgICAgICAgSlNPTi5z
dHJpbmdpZnkoewotICAgICAgICAgICAgICJhbm90aGVyL3Rlc3Quc3ZnIjogewotICAgICAgICAg
ICAgICAgICAiV2ViS2l0IExpbnV4IjogWyJwbmciXSwgCi0gICAgICAgICAgICAgICAgICJXZWJL
aXQgTWFjMTAuNiI6IFsicG5nIiwidHh0Il19LAotICAgICAgICAgICAgICJmYXN0L3Rlc3QuaHRt
bCI6IHsKLSAgICAgICAgICAgICAgICAgIldlYmtpdCBXaW43IjogWyJ0eHQiLCJwbmciXQotICAg
ICAgICAgICAgIH19KV0KLSAgICBdKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvY29uZmlnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL2NvbmZpZy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvY29uZmlnLmpzCShub25leGlzdGVudCkKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotdmFyIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi1jb25maWcu
a0J1aWxkTnVtYmVyTGltaXQgPSAyMDsKLQotY29uZmlnLmtQbGF0Zm9ybXMgPSB7Ci0gICAgJ2Fw
cGxlJyA6IHsKLSAgICAgICAgbGFiZWwgOiAnQXBwbGUnLAotICAgICAgICBidWlsZENvbnNvbGVV
Ukw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcnLAotICAgICAgICBsYXlvdXRUZXN0UmVzdWx0
c1VSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzJywKLSAgICAgICAgd2F0ZXJm
YWxsVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3dhdGVyZmFsbCcsCi0gICAgICAgIGJ1
aWxkZXJzOiB7Ci0gICAgICAgICAgICAnQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMpJyA6
IHt2ZXJzaW9uOiAnbGlvbicgfSwKLSAgICAgICAgICAgICdBcHBsZSBMaW9uIERlYnVnIFdLMSAo
VGVzdHMpJyA6IHt2ZXJzaW9uOiAnbGlvbicsIGRlYnVnOiB0cnVlfSwKLSAgICAgICAgICAgICdB
cHBsZSBMaW9uIFJlbGVhc2UgV0syIChUZXN0cyknIDoge3ZlcnNpb246ICdsaW9uJyB9LAotICAg
ICAgICAgICAgJ0FwcGxlIExpb24gRGVidWcgV0syIChUZXN0cyknIDoge3ZlcnNpb246ICdsaW9u
JywgZGVidWc6IHRydWV9LAotICAgICAgICAgICAgJ0FwcGxlIE1vdW50YWluTGlvbiBSZWxlYXNl
IFdLMSAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnbW91bnRhaW5saW9uJyB9LAotICAgICAgICAgICAg
J0FwcGxlIE1vdW50YWluTGlvbiBEZWJ1ZyBXSzEgKFRlc3RzKScgOiB7dmVyc2lvbjogJ21vdW50
YWlubGlvbicsIGRlYnVnOiB0cnVlfSwKLSAgICAgICAgICAgICdBcHBsZSBNb3VudGFpbkxpb24g
UmVsZWFzZSBXSzIgKFRlc3RzKScgOiB7dmVyc2lvbjogJ21vdW50YWlubGlvbicgfSwKLSAgICAg
ICAgICAgICdBcHBsZSBNb3VudGFpbkxpb24gRGVidWcgV0syIChUZXN0cyknIDoge3ZlcnNpb246
ICdtb3VudGFpbmxpb24nLCBkZWJ1ZzogdHJ1ZX0sCi0gICAgICAgICAgICAvLyAnQXBwbGUgV2lu
IFhQIERlYnVnIChUZXN0cyknIDoge3ZlcnNpb246ICd4cCcsZGVidWc6IHRydWV9LAotICAgICAg
ICAgICAgLy8gJ0FwcGxlIFdpbiA3IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJ3dpbjcn
fSwKLSAgICAgICAgfSwKLSAgICAgICAgaGF2ZUJ1aWxkZXJBY2N1bXVsYXRlZFJlc3VsdHMgOiBm
YWxzZSwKLSAgICAgICAgdXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9sZEJ1aWxkczogZmFsc2UsCi0g
ICAgICAgIHVzZUZsYWtpbmVzc0Rhc2hib2FyZDogZmFsc2UsCi0gICAgICAgIHJlc3VsdHNEaXJl
Y3RvcnlOYW1lRnJvbUJ1aWxkZXJOYW1lOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAg
ICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChidWlsZGVyTmFtZSk7Ci0gICAgICAgIH0s
Ci0gICAgICAgIHJlc3VsdHNEaXJlY3RvcnlGb3JCdWlsZE51bWJlcjogZnVuY3Rpb24oYnVpbGRO
dW1iZXIsIHJldmlzaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50
KCdyJyArIHJldmlzaW9uICsgJyAoJyArIGJ1aWxkTnVtYmVyICsgJyknKTsKLSAgICAgICAgfSwK
LSAgICAgICAgX2J1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAg
ICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ0FwcGxlJykgIT09IC0xOwotICAgICAg
ICB9LAotICAgIH0sCi0gICAgJ2d0aycgOiB7Ci0gICAgICAgIGxhYmVsIDogJ0dUSycsCi0gICAg
ICAgIGJ1aWxkQ29uc29sZVVSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZycsCi0gICAgICAg
IGxheW91dFRlc3RSZXN1bHRzVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMn
LAotICAgICAgICB3YXRlcmZhbGxVUkw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvd2F0ZXJm
YWxsJywKLSAgICAgICAgYnVpbGRlcnM6IHsKLSAgICAgICAgICAgICdHVEsgTGludXggNjQtYml0
IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJzY0LWJpdCByZWxlYXNlJ30sCi0gICAgICAg
ICAgICAnR1RLIExpbnV4IDY0LWJpdCBEZWJ1ZyAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnNjQtYml0
IGRlYnVnJywgZGVidWc6IHRydWV9LAotICAgICAgICB9LAotICAgICAgICBoYXZlQnVpbGRlckFj
Y3VtdWxhdGVkUmVzdWx0cyA6IGZhbHNlLAotICAgICAgICB1c2VEaXJlY3RvcnlMaXN0aW5nRm9y
T2xkQnVpbGRzOiBmYWxzZSwKLSAgICAgICAgdXNlRmxha2luZXNzRGFzaGJvYXJkOiBmYWxzZSwK
LSAgICAgICAgcmVzdWx0c0RpcmVjdG9yeU5hbWVGcm9tQnVpbGRlck5hbWU6IGZ1bmN0aW9uKGJ1
aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxk
ZXJOYW1lKTsKLSAgICAgICAgfSwKLSAgICAgICAgcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxkTnVt
YmVyOiBmdW5jdGlvbihidWlsZE51bWJlciwgcmV2aXNpb24pIHsKLSAgICAgICAgICAgIHJldHVy
biBlbmNvZGVVUklDb21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGROdW1iZXIg
KyAnKScpOwotICAgICAgICB9LAotICAgICAgICBfYnVpbGRlckFwcGxpZXM6IGZ1bmN0aW9uKGJ1
aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUuaW5kZXhPZignR1RL
JykgIT09IC0xOwotICAgICAgICB9LAotICAgIH0sCi0gICAgJ3dwZScgOiB7Ci0gICAgICAgIGxh
YmVsIDogJ1dQRScsCi0gICAgICAgIGJ1aWxkQ29uc29sZVVSTDogJ2h0dHBzOi8vYnVpbGQud2Vi
a2l0Lm9yZycsCi0gICAgICAgIGxheW91dFRlc3RSZXN1bHRzVVJMOiAnaHR0cHM6Ly9idWlsZC53
ZWJraXQub3JnL3Jlc3VsdHMnLAotICAgICAgICB3YXRlcmZhbGxVUkw6ICdodHRwczovL2J1aWxk
LndlYmtpdC5vcmcvd2F0ZXJmYWxsJywKLSAgICAgICAgYnVpbGRlcnM6IHsKLSAgICAgICAgICAg
ICdXUEUgTGludXggNjQtYml0IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJzY0LWJpdCBy
ZWxlYXNlJ30sCi0gICAgICAgIH0sCi0gICAgICAgIGhhdmVCdWlsZGVyQWNjdW11bGF0ZWRSZXN1
bHRzIDogZmFsc2UsCi0gICAgICAgIHVzZURpcmVjdG9yeUxpc3RpbmdGb3JPbGRCdWlsZHM6IGZh
bHNlLAotICAgICAgICB1c2VGbGFraW5lc3NEYXNoYm9hcmQ6IGZhbHNlLAotICAgICAgICByZXN1
bHRzRGlyZWN0b3J5TmFtZUZyb21CdWlsZGVyTmFtZTogZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsK
LSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoYnVpbGRlck5hbWUpOwotICAg
ICAgICB9LAotICAgICAgICByZXN1bHRzRGlyZWN0b3J5Rm9yQnVpbGROdW1iZXI6IGZ1bmN0aW9u
KGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgewotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNv
bXBvbmVudCgncicgKyByZXZpc2lvbiArICcgKCcgKyBidWlsZE51bWJlciArICcpJyk7Ci0gICAg
ICAgIH0sCi0gICAgICAgIF9idWlsZGVyQXBwbGllczogZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsK
LSAgICAgICAgICAgIHJldHVybiBidWlsZGVyTmFtZS5pbmRleE9mKCdXUEUnKSAhPT0gLTE7Ci0g
ICAgICAgIH0sCi0gICAgfSwKLX07Ci0KLWNvbmZpZy5rVHJhY1VSTCA9ICdodHRwczovL3RyYWMu
d2Via2l0Lm9yZyc7Ci1jb25maWcua0J1Z3ppbGxhVVJMID0gJ2h0dHBzOi8vYnVncy53ZWJraXQu
b3JnJzsKLQotY29uZmlnLmtSZXZpc2lvbkF0dHIgPSAnZGF0YS1yZXZpc2lvbic7Ci1jb25maWcu
a1Rlc3ROYW1lQXR0ciA9ICdkYXRhLXRlc3QtbmFtZSc7Ci1jb25maWcua0J1aWxkZXJOYW1lQXR0
ciA9ICdkYXRhLWJ1aWxkZXItbmFtZSc7Ci1jb25maWcua0ZhaWx1cmVDb3VudEF0dHIgPSAnZGF0
YS1mYWlsdXJlLWNvdW50JzsKLWNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0ciA9ICdkYXRhLWZhaWx1
cmUtdHlwZXMnOwotY29uZmlnLmtJbmZvYmFyVHlwZUF0dHIgPSAnZGF0YS1pbmZvYmFyLXR5cGUn
OwotCi12YXIga1Rlbk1pbnV0ZXNJbk1pbGxpc2Vjb25kcyA9IDEwICogNjAgKiAxMDAwOwotY29u
ZmlnLmtVcGRhdGVGcmVxdWVuY3kgPSBrVGVuTWludXRlc0luTWlsbGlzZWNvbmRzOwotY29uZmln
LmtSZWxhdGl2ZVRpbWVVcGRhdGVGcmVxdWVuY3kgPSAxMDAwICogNjA7Ci0KLWNvbmZpZy5rRXhw
ZXJpbWVudGFsRmVhdHVyZXMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgnZW5hYmxl
RXhwZXJpbWVudHM9MScpICE9IC0xOwotCi1jb25maWcuY3VycmVudFBsYXRmb3JtID0gYmFzZS5n
ZXRVUkxQYXJhbWV0ZXIoJ3BsYXRmb3JtJykgfHwgJ2FwcGxlJzsKLQotLy8gRklYTUU6IFdlIHNo
b3VsZCBhZGQgYSB3YXkgdG8gcmVzdHJpY3QgdGhlIHJlc3VsdHMgdG8gYSBzdWJzZXQgb2YgdGhl
IGJ1aWxkZXJzCi0vLyAob3IgbWF5YmUganVzdCBhIHNpbmdsZSBidWlsZGVyKSBpbiB0aGUgVUkg
YXMgd2VsbCBhcyB2aWEgYW4gVVJMIHBhcmFtZXRlci4KLWNvbmZpZy5jdXJyZW50QnVpbGRlciA9
IGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCdidWlsZGVyJyk7Ci0KLWNvbmZpZy5jdXJyZW50QnVpbGRl
cnMgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgY3VycmVudF9idWlsZGVycyA9IHt9OwotICAgIGlm
IChjb25maWcuY3VycmVudEJ1aWxkZXIpIHsKLSAgICAgICAgY3VycmVudF9idWlsZGVyc1tjb25m
aWcuY3VycmVudEJ1aWxkZXJdID0gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0
Zm9ybV0uYnVpbGRlcnNbY29uZmlnLmN1cnJlbnRCdWlsZGVyXTsKLSAgICAgICAgcmV0dXJuIGN1
cnJlbnRfYnVpbGRlcnM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGNvbmZpZy5rUGxh
dGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1aWxkZXJzOwotICAgIH0KLX07Ci0KLWNv
bmZpZy5idWlsZGVyQXBwbGllcyA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7Ci0gICAgaWYgKGNv
bmZpZy5jdXJyZW50QnVpbGRlcikKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lID09IGNvbmZp
Zy5jdXJyZW50QnVpbGRlcjsKLSAgICByZXR1cm4gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1
cnJlbnRQbGF0Zm9ybV0uX2J1aWxkZXJBcHBsaWVzKGJ1aWxkZXJOYW1lKTsKLX07Ci0KLWNvbmZp
Zy5zZXRQbGF0Zm9ybSA9IGZ1bmN0aW9uKHBsYXRmb3JtKSB7Ci0gICAgaWYgKCF0aGlzLmtQbGF0
Zm9ybXNbcGxhdGZvcm1dKSB7Ci0gICAgICAgIHdpbmRvdy5jb25zb2xlLmxvZyhwbGF0Zm9ybSAr
ICcgaXMgbm90IGEgcmVjb2duaXplZCBwbGF0Zm9ybScpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotICAgIGNvbmZpZy5jdXJyZW50UGxhdGZvcm0gPSBwbGF0Zm9ybTsKLX07Ci0KLWNvbmZpZy51
c2VMb2NhbFJlc3VsdHMgPSBCb29sZWFuKGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCd1c2VMb2NhbFJl
c3VsdHMnKSkgfHwgZmFsc2U7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanMJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQot
JChmdW5jdGlvbigpIHsKLSAgICBtb2RlbC51cGRhdGVSZXN1bHRzQnlCdWlsZGVyKGZ1bmN0aW9u
KCkgewotICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KHsKLSAg
ICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcwotICAg
ICAgICB9KTsKLQotICAgICAgICB2YXIgZmFpbHVyZXNCeVRlc3QgPSByZXN1bHRzLmV4cGVjdGVk
RmFpbHVyZXNCeVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgICAgIHZh
ciBjb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3
LCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmVz
dWx0c1ZpZXcpOwotICAgIH0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9jb250cm9sbGVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9jb250cm9sbGVycy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvY29udHJvbGxlcnMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNDUgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi12YXIgY29udHJvbGxlcnMgPSBjb250cm9sbGVycyB8fCB7fTsKLQotKGZ1
bmN0aW9uKCl7Ci0KLXZhciBrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UgPSAnRmFpbGVkISBH
YXJkZW4tby1tYXRpYyBuZWVkcyBhIGxvY2FsIHNlcnZlciB0byBtb2RpZnkgeW91ciB3b3JraW5n
IGNvcHkuIFBsZWFzZSBydW4gIndlYmtpdC1wYXRjaCBnYXJkZW4tby1tYXRpYyIgc3RhcnQgdGhl
IGxvY2FsIHNlcnZlci4nOwotCi0vLyBGSVhNRTogV2hlcmUgc2hvdWxkIHRoaXMgZnVuY3Rpb24g
Z28/Ci1mdW5jdGlvbiByZWJhc2VsaW5lV2l0aFN0YXR1c1VwZGF0ZXMoZmFpbHVyZUluZm9MaXN0
LCByZXN1bHRzQnlUZXN0KQotewotICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IHVpLlN0YXR1c0Fy
ZWEoJ1JlYmFzZWxpbmUnKTsKLSAgICB2YXIgaWQgPSBzdGF0dXNWaWV3Lm5ld0lkKCk7Ci0KLSAg
ICB2YXIgZmFpbHVyZXNUb1JlYmFzZWxpbmUgPSBbXTsKLSAgICB2YXIgdGVzdE5hbWVzTG9nZ2Vk
ID0gW107Ci0gICAgZmFpbHVyZUluZm9MaXN0LmZvckVhY2goZnVuY3Rpb24oZmFpbHVyZUluZm8p
IHsKLSAgICAgICAgaWYgKGlzQW55UmVmdGVzdChmYWlsdXJlSW5mby50ZXN0TmFtZSwgcmVzdWx0
c0J5VGVzdCkpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0TmFtZXNMb2dnZWQuaW5kZXhPZihmYWls
dXJlSW5mby50ZXN0TmFtZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXNWaWV3LmFk
ZE1lc3NhZ2UoaWQsIGZhaWx1cmVJbmZvLnRlc3ROYW1lICsgJyBpcyBhIHJlZiB0ZXN0LCBza2lw
cGluZycpOwotICAgICAgICAgICAgICAgIHRlc3ROYW1lc0xvZ2dlZC5wdXNoKGZhaWx1cmVJbmZv
LnRlc3ROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGZhaWx1cmVzVG9SZWJhc2VsaW5lLnB1c2goZmFpbHVyZUluZm8pOwotICAgICAgICAgICAgaWYg
KHRlc3ROYW1lc0xvZ2dlZC5pbmRleE9mKGZhaWx1cmVJbmZvLnRlc3ROYW1lKSA9PSAtMSkgewot
ICAgICAgICAgICAgICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgJ1JlYmFzZWxpbmluZyAn
ICsgZmFpbHVyZUluZm8udGVzdE5hbWUgKyAnLi4uJyk7Ci0gICAgICAgICAgICAgICAgdGVzdE5h
bWVzTG9nZ2VkLnB1c2goZmFpbHVyZUluZm8udGVzdE5hbWUpOwotICAgICAgICAgICAgfQotICAg
ICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKGZhaWx1cmVzVG9SZWJhc2VsaW5lLmxlbmd0
aCkgewotICAgICAgICBjaGVja291dC5yZWJhc2VsaW5lKGZhaWx1cmVzVG9SZWJhc2VsaW5lLCBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHN0YXR1c1ZpZXcuYWRkRmluYWxNZXNzYWdlKGlkLCAn
UmViYXNlbGluZSBkb25lISBQbGVhc2UgbGFuZCB3aXRoICJ3ZWJraXQtcGF0Y2ggbGFuZC1jb3do
YW5kIi4nKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKLSAgICAgICAgICAg
IHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgZmFpbHVyZUluZm8udGVzdE5hbWUgKyAnIG9uICcg
KyB1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoZmFpbHVyZUluZm8uYnVpbGRlck5hbWUpKTsKLSAg
ICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFsTWVz
c2FnZShpZCwga0NoZWNrb3V0VW5hdmFpbGFibGVNZXNzYWdlKTsKLSAgICAgICAgfSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgc3RhdHVzVmlldy5hZGRGaW5hbE1lc3NhZ2UoaWQsICdObyBub24t
cmVmdGVzdHMgbGVmdCB0byByZWJhc2VsaW5lIScpCi0gICAgfQotfQotCi0vLyBGSVhNRTogVGhp
cyBpcyBkdXBsaWNhdGVkIGZyb20gdWkvcmVzdWx0cy5qcyA6KC4KLWZ1bmN0aW9uIGlzQW55UmVm
dGVzdCh0ZXN0TmFtZSwgcmVzdWx0c0J5VGVzdCkKLXsKLSAgICByZXR1cm4gT2JqZWN0LmtleXMo
cmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0pLm1hcChmdW5jdGlvbihidWlsZGVyKSB7Ci0gICAgICAg
IHJldHVybiByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyXTsKLSAgICB9KS5zb21lKGZ1
bmN0aW9uKHJlc3VsdE5vZGUpIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdE5vZGUucmVmdGVzdF90
eXBlICYmIHJlc3VsdE5vZGUucmVmdGVzdF90eXBlLmxlbmd0aDsKLSAgICB9KTsKLX0KLQotLy8g
RklYTUU6IFdoZXJlIHNob3VsZCB0aGlzIGZ1bmN0aW9uIGdvPwotZnVuY3Rpb24gdXBkYXRlRXhw
ZWN0YXRpb25zV2l0aFN0YXR1c1VwZGF0ZXMoZmFpbHVyZUluZm9MaXN0KQotewotICAgIHZhciBz
dGF0dXNWaWV3ID0gbmV3IHVpLlN0YXR1c0FyZWEoJ0V4cGVjdGF0aW9ucyBVcGRhdGUnKTsKLSAg
ICB2YXIgaWQgPSBzdGF0dXNWaWV3Lm5ld0lkKCk7Ci0KLSAgICB2YXIgdGVzdE5hbWVzID0gYmFz
ZS51bmlxdWlmeUFycmF5KGZhaWx1cmVJbmZvTGlzdC5tYXAoZnVuY3Rpb24oZmFpbHVyZUluZm8p
IHsgcmV0dXJuIGZhaWx1cmVJbmZvLnRlc3ROYW1lOyB9KSk7Ci0gICAgdmFyIHRlc3ROYW1lID0g
dGVzdE5hbWVzLmxlbmd0aCA9PSAxID8gdGVzdE5hbWVzWzBdIDogdGVzdE5hbWVzLmxlbmd0aCAr
ICcgdGVzdHMnOwotICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgJ1VwZGF0aW5nIGV4cGVj
dGF0aW9ucyBvZiAnICsgdGVzdE5hbWUgKyAnLi4uJyk7Ci0KLSAgICBjaGVja291dC51cGRhdGVF
eHBlY3RhdGlvbnMoZmFpbHVyZUluZm9MaXN0LCBmdW5jdGlvbigpIHsKLSAgICAgICAgc3RhdHVz
Vmlldy5hZGRGaW5hbE1lc3NhZ2UoaWQsICdFeHBlY3RhdGlvbnMgdXBkYXRlIGRvbmUhIFBsZWFz
ZSBsYW5kIHdpdGggIndlYmtpdC1wYXRjaCBsYW5kLWNvd2hhbmQiLicpOwotICAgIH0sIGZ1bmN0
aW9uKCkgewotICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFsTWVzc2FnZShpZCwga0NoZWNrb3V0
VW5hdmFpbGFibGVNZXNzYWdlKTsKLSAgICB9KTsKLX0KLQotY29udHJvbGxlcnMuUmVzdWx0c0Rl
dGFpbHMgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odmlldywg
cmVzdWx0c0J5VGVzdCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcgPSB2aWV3OwotICAgICAg
ICB0aGlzLl9yZXN1bHRzQnlUZXN0ID0gcmVzdWx0c0J5VGVzdDsKLSAgICAgICAgdGhpcy5fdmll
dy5zZXRSZXN1bHRzQnlUZXN0KHJlc3VsdHNCeVRlc3QpOwotCi0gICAgICAgIHRoaXMuX3ZpZXcu
Zmlyc3RSZXN1bHQoKTsKLQotICAgICAgICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ25leHQnLCB0aGlz
Lm9uTmV4dC5iaW5kKHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdwcmV2aW91
cycsIHRoaXMub25QcmV2aW91cy5iaW5kKHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3KS5i
aW5kKCdyZWJhc2VsaW5lJywgdGhpcy5vblJlYmFzZWxpbmUuYmluZCh0aGlzKSk7Ci0gICAgICAg
ICQodGhpcy5fdmlldykuYmluZCgnZXhwZWN0ZmFpbHVyZScsIHRoaXMub25VcGRhdGVFeHBlY3Rh
dGlvbnMuYmluZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBvbk5leHQ6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuX3ZpZXcubmV4dFJlc3VsdCgpOwotICAgIH0sCi0gICAgb25QcmV2aW91
czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdmlldy5wcmV2aW91c1Jlc3VsdCgp
OwotICAgIH0sCi0gICAgX2ZhaWx1cmVJbmZvTGlzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgdmFyIHRlc3ROYW1lID0gdGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKTsKLSAgICAgICAg
cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVdKS5tYXAoZnVu
Y3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRzLmZhaWx1cmVJ
bmZvRm9yVGVzdEFuZEJ1aWxkZXIodGhpcy5fcmVzdWx0c0J5VGVzdCwgdGVzdE5hbWUsIGJ1aWxk
ZXJOYW1lKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG9uUmViYXNlbGlu
ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmViYXNlbGluZVdpdGhTdGF0dXNVcGRhdGVz
KHRoaXMuX2ZhaWx1cmVJbmZvTGlzdCgpLCB0aGlzLl9yZXN1bHRzQnlUZXN0KTsKLSAgICAgICAg
dGhpcy5fdmlldy5uZXh0VGVzdCgpOwotICAgIH0sCi0gICAgb25VcGRhdGVFeHBlY3RhdGlvbnM6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHVwZGF0ZUV4cGVjdGF0aW9uc1dpdGhTdGF0dXNV
cGRhdGVzKHRoaXMuX2ZhaWx1cmVJbmZvTGlzdCgpKTsKLSAgICB9Ci19KTsKLQotY29udHJvbGxl
cnMuRXhwZWN0ZWRGYWlsdXJlcyA9IGJhc2UuZXh0ZW5kcyhPYmplY3QsIHsKLSAgICBpbml0OiBm
dW5jdGlvbihtb2RlbCwgdmlldywgZGVsZWdhdGUpCi0gICAgewotICAgICAgICB0aGlzLl9tb2Rl
bCA9IG1vZGVsOwotICAgICAgICB0aGlzLl92aWV3ID0gdmlldzsKLSAgICAgICAgdGhpcy5fZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXNC
eVRlc3QodGhpcy5fbW9kZWwucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgICAgIHZhciBmYWlsaW5n
VGVzdHNMaXN0ID0gT2JqZWN0LmtleXMoZXhwZWN0ZWRGYWlsdXJlcyk7Ci0KLSAgICAgICAgJCh0
aGlzLl92aWV3KS5lbXB0eSgpOwotICAgICAgICBiYXNlLmZvckVhY2hEaXJlY3RvcnkoZmFpbGlu
Z1Rlc3RzTGlzdCwgZnVuY3Rpb24obGFiZWwsIHRlc3RzRmFpbGluZ0luRGlyZWN0b3J5KSB7Ci0g
ICAgICAgICAgICB2YXIgbGlzdEl0ZW0gPSBuZXcgdWkuZmFpbHVyZXMuTGlzdEl0ZW0obGFiZWws
IHRlc3RzRmFpbGluZ0luRGlyZWN0b3J5KTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcuYXBwZW5k
Q2hpbGQobGlzdEl0ZW0pOwotICAgICAgICAgICAgJChsaXN0SXRlbSkuYmluZCgnZXhhbWluZScs
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRoaXMub25FeGFtaW5lKHRlc3RzRmFpbGlu
Z0luRGlyZWN0b3J5KTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBvbkV4YW1pbmU6IGZ1bmN0aW9uKGZhaWxpbmdUZXN0c0xp
c3QpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3
KHsKLSAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJM
cwotICAgICAgICB9KTsKLSAgICAgICAgdmFyIGZhaWx1cmVzQnlUZXN0ID0gYmFzZS5maWx0ZXJE
aWN0aW9uYXJ5KAotICAgICAgICAgICAgcmVzdWx0cy5leHBlY3RlZEZhaWx1cmVzQnlUZXN0KHRo
aXMuX21vZGVsLnJlc3VsdHNCeUJ1aWxkZXIpLAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxpbmdUZXN0c0xpc3QuaW5kZXhPZihrZXkpICE9
IC0xOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IGNvbnRy
b2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3LCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAg
ICAgIHRoaXMuX2RlbGVnYXRlLnNob3dSZXN1bHRzKHJlc3VsdHNWaWV3KTsKLSAgICB9Ci19KTsK
LQotdmFyIEZhaWx1cmVTdHJlYW1Db250cm9sbGVyID0gYmFzZS5leHRlbmRzKE9iamVjdCwgewot
ICAgIF9yZXN1bHRzRmlsdGVyOiBudWxsLAotICAgIF9rZXlGb3I6IGZ1bmN0aW9uKGZhaWx1cmVB
bmFseXNpcykgeyB0aHJvdyAiTm90IGltcGxlbWVudGVkISI7IH0sCi0gICAgX2NyZWF0ZUZhaWx1
cmVWaWV3OiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpIHsgdGhyb3cgIk5vdCBpbXBsZW1lbnRl
ZCEiOyB9LAotCi0gICAgaW5pdDogZnVuY3Rpb24obW9kZWwsIHZpZXcsIGRlbGVnYXRlKQotICAg
IHsKLSAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKLSAgICAgICAgdGhpcy5fdmlldyA9IHZp
ZXc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIHRoaXMuX3Rl
c3RGYWlsdXJlcyA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAgICB9LAotICAgIHVwZGF0
ZTogZnVuY3Rpb24oZmFpbHVyZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgdmFyIGtleSA9IHRo
aXMuX2tleUZvcihmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICB2YXIgZmFpbHVyZSA9IHRoaXMu
X3Rlc3RGYWlsdXJlcy5nZXQoa2V5KTsKLSAgICAgICAgaWYgKCFmYWlsdXJlKSB7Ci0gICAgICAg
ICAgICBmYWlsdXJlID0gdGhpcy5fY3JlYXRlRmFpbHVyZVZpZXcoZmFpbHVyZUFuYWx5c2lzKTsK
LSAgICAgICAgICAgIHRoaXMuX3ZpZXcuYWRkKGZhaWx1cmUpOwotICAgICAgICAgICAgJChmYWls
dXJlKS5iaW5kKCdleGFtaW5lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5v
bkV4YW1pbmUoZmFpbHVyZSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAgICAg
ICAgJChmYWlsdXJlKS5iaW5kKCdyZWJhc2VsaW5lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgdGhpcy5vblJlYmFzZWxpbmUoZmFpbHVyZSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhp
cykpOwotICAgICAgICAgICAgJChmYWlsdXJlKS5iaW5kKCdleHBlY3RmYWlsdXJlJywgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vblVwZGF0ZUV4cGVjdGF0aW9ucyhmYWlsdXJl
KTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmFpbHVy
ZS5hZGRGYWlsdXJlQW5hbHlzaXMoZmFpbHVyZUFuYWx5c2lzKTsKLSAgICAgICAgdGhpcy5fdGVz
dEZhaWx1cmVzLnVwZGF0ZShrZXksIGZhaWx1cmUpOwotICAgICAgICByZXR1cm4gZmFpbHVyZTsK
LSAgICB9LAotICAgIHB1cmdlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fdGVzdEZhaWx1
cmVzLnB1cmdlKGZ1bmN0aW9uKGZhaWx1cmUpIHsKLSAgICAgICAgICAgIGZhaWx1cmUuZGlzbWlz
cygpOwotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fdGVzdEZhaWx1cmVzLmZvckVhY2goZnVu
Y3Rpb24oZmFpbHVyZSkgewotICAgICAgICAgICAgZmFpbHVyZS5wdXJnZSgpOwotICAgICAgICB9
KTsKLSAgICB9LAotICAgIG9uRXhhbWluZTogZnVuY3Rpb24oZmFpbHVyZXMpCi0gICAgewotICAg
ICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KHsKLSAgICAgICAgICAg
IGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcwotICAgICAgICB9KTsK
LQotICAgICAgICB2YXIgdGVzdE5hbWVMaXN0ID0gZmFpbHVyZXMudGVzdE5hbWVMaXN0KCk7Ci0g
ICAgICAgIHZhciBmYWlsdXJlc0J5VGVzdCA9IGJhc2UuZmlsdGVyRGljdGlvbmFyeSgKLSAgICAg
ICAgICAgIHRoaXMuX3Jlc3VsdHNGaWx0ZXIodGhpcy5fbW9kZWwucmVzdWx0c0J5QnVpbGRlciks
Ci0gICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdGVz
dE5hbWVMaXN0LmluZGV4T2Yoa2V5KSAhPSAtMTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
IHZhciBjb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNW
aWV3LCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnNob3dSZXN1bHRz
KHJlc3VsdHNWaWV3KTsKLSAgICB9LAotICAgIF90b0ZhaWx1cmVJbmZvTGlzdDogZnVuY3Rpb24o
ZmFpbHVyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZS5mbGF0dGVuQXJyYXkoZmFpbHVy
ZXMudGVzdE5hbWVMaXN0KCkubWFwKG1vZGVsLnVuZXhwZWN0ZWRGYWlsdXJlSW5mb0ZvclRlc3RO
YW1lKSk7Ci0gICAgfSwKLSAgICBvblJlYmFzZWxpbmU6IGZ1bmN0aW9uKGZhaWx1cmVzKQotICAg
IHsKLSAgICAgICAgdmFyIHRlc3ROYW1lTGlzdCA9IGZhaWx1cmVzLnRlc3ROYW1lTGlzdCgpOwot
ICAgICAgICB2YXIgZmFpbHVyZXNCeVRlc3QgPSBiYXNlLmZpbHRlckRpY3Rpb25hcnkoCi0gICAg
ICAgICAgICB0aGlzLl9yZXN1bHRzRmlsdGVyKHRoaXMuX21vZGVsLnJlc3VsdHNCeUJ1aWxkZXIp
LAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRl
c3ROYW1lTGlzdC5pbmRleE9mKGtleSkgIT0gLTE7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICByZWJhc2VsaW5lV2l0aFN0YXR1c1VwZGF0ZXModGhpcy5fdG9GYWlsdXJlSW5mb0xpc3QoZmFp
bHVyZXMpLCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgfSwKLSAgICBvblVwZGF0ZUV4cGVjdGF0aW9u
czogZnVuY3Rpb24oZmFpbHVyZXMpCi0gICAgewotICAgICAgICB1cGRhdGVFeHBlY3RhdGlvbnNX
aXRoU3RhdHVzVXBkYXRlcyh0aGlzLl90b0ZhaWx1cmVJbmZvTGlzdChmYWlsdXJlcykpOwotICAg
IH0KLX0pOwotCi1jb250cm9sbGVycy5VbmV4cGVjdGVkRmFpbHVyZXMgPSBiYXNlLmV4dGVuZHMo
RmFpbHVyZVN0cmVhbUNvbnRyb2xsZXIsIHsKLSAgICBfcmVzdWx0c0ZpbHRlcjogcmVzdWx0cy51
bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsCi0KLSAgICBfaW1wbGllZEZpcnN0RmFpbGluZ1Jldmlz
aW9uOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4gZmFp
bHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7Ci0gICAgfSwKLSAgICBfa2V5
Rm9yOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4gZmFp
bHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArICIrIiArIGZhaWx1cmVBbmFseXNp
cy5vbGRlc3RGYWlsaW5nUmV2aXNpb247Ci0gICAgfSwKLSAgICBfY3JlYXRlRmFpbHVyZVZpZXc6
IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKLSAgICB7Ci0gICAgICAgIHZhciBmYWlsdXJlID0g
bmV3IHVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RzU3VtbWFyeSgpOwotICAgICAgICBtb2Rl
bC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UodGhpcy5faW1wbGllZEZpcnN0RmFpbGlu
Z1JldmlzaW9uKGZhaWx1cmVBbmFseXNpcyksIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5n
UmV2aXNpb24pLmZvckVhY2goZnVuY3Rpb24oY29tbWl0RGF0YSkgewotICAgICAgICAgICAgdmFy
IHN1c3BpY2lvdXNDb21taXQgPSBmYWlsdXJlLmFkZENvbW1pdERhdGEoY29tbWl0RGF0YSk7Ci0g
ICAgICAgICAgICAkKHN1c3BpY2lvdXNDb21taXQpLmJpbmQoJ3JldmVydCcsIGZ1bmN0aW9uKCkg
ewotICAgICAgICAgICAgICAgIHRoaXMub25SZXZlcnQoY29tbWl0RGF0YS5yZXZpc2lvbiwgZmFp
bHVyZS50ZXN0TmFtZUxpc3QoKSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAg
ICAgICAgJChmYWlsdXJlKS5iaW5kKCdibGFtZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
ICAgIHRoaXMub25CbGFtZShmYWlsdXJlLCBjb21taXREYXRhKTsKLSAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHJldHVybiBmYWlsdXJlOwot
ICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAg
ICAgICB2YXIgZmFpbHVyZSA9IEZhaWx1cmVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS51cGRh
dGUuY2FsbCh0aGlzLCBmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICBmYWlsdXJlLnVwZGF0ZUJ1
aWxkZXJSZXN1bHRzKG1vZGVsLmJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbih0aGlzLl9pbXBs
aWVkRmlyc3RGYWlsaW5nUmV2aXNpb24oZmFpbHVyZUFuYWx5c2lzKSkpOwotICAgIH0sCi0gICAg
bGVuZ3RoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdEZhaWx1
cmVzLmxlbmd0aCgpOwotICAgIH0sCi0gICAgb25CbGFtZTogZnVuY3Rpb24oZmFpbHVyZSwgY29t
bWl0RGF0YSkKLSAgICB7Ci0gICAgICAgIGZhaWx1cmUucGluVG9Db21taXREYXRhKGNvbW1pdERh
dGEpOwotICAgICAgICAkKCcuYWN0aW9uJywgZmFpbHVyZSkuZWFjaChmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHRoZSByaWdodCB3YXkgb2YgZmluZGluZyBh
bmQgZGlzYWJsaW5nIHRoaXMgYWN0aW9uLgotICAgICAgICAgICAgaWYgKHRoaXMudGV4dENvbnRl
bnQgPT0gJ0JsYW1lJykKLSAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTsKLSAg
ICAgICAgfSk7Ci0gICAgfSwKLSAgICBvblJldmVydDogZnVuY3Rpb24ocmV2aXNpb24sIHRlc3RO
YW1lTGlzdCkKLSAgICB7Ci0gICAgICAgIGNoZWNrb3V0LnJldmVydChyZXZpc2lvbiwgdWkucmV2
ZXJ0UmVhc29uRm9yVGVzdE5hbWVMaXN0KHRlc3ROYW1lTGlzdCksICQubm9vcCwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgZXJyb3Ig
VUkuCi0gICAgICAgICAgICBhbGVydChrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UpOwotICAg
ICAgICB9KTsKLSAgICB9Ci19KTsKLQotY29udHJvbGxlcnMuRmFpbHVyZXMgPSBiYXNlLmV4dGVu
ZHMoRmFpbHVyZVN0cmVhbUNvbnRyb2xsZXIsIHsKLSAgICBfcmVzdWx0c0ZpbHRlcjogcmVzdWx0
cy5leHBlY3RlZEZhaWx1cmVzQnlUZXN0LAotCi0gICAgX2tleUZvcjogZnVuY3Rpb24oZmFpbHVy
ZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2UuZGlyTmFtZShmYWlsdXJlQW5h
bHlzaXMudGVzdE5hbWUpOwotICAgIH0sCi0gICAgX2NyZWF0ZUZhaWx1cmVWaWV3OiBmdW5jdGlv
bihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IHVpLm5vdGlmaWNh
dGlvbnMuRmFpbGluZ1Rlc3RzKCk7Ci0gICAgfSwKLX0pOwotCi1jb250cm9sbGVycy5GYWlsaW5n
QnVpbGRlcnMgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odmll
dywgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcgPSB2aWV3OwotICAgICAgICB0
aGlzLl9tZXNzYWdlID0gbWVzc2FnZTsKLSAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uID0gbnVs
bDsKLSAgICB9LAotICAgIGhhc0ZhaWx1cmVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBy
ZXR1cm4gISF0aGlzLl9ub3RpZmljYXRpb247Ci0gICAgfSwKLSAgICB1cGRhdGU6IGZ1bmN0aW9u
KGZhaWx1cmVzTGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChPYmplY3Qua2V5cyhmYWlsdXJlc0xp
c3QpLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uLmRpc21pc3MoKTsKLSAgICAgICAg
ICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24gPSBudWxsOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICghdGhpcy5fbm90aWZpY2F0aW9u
KSB7Ci0gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24gPSBuZXcgdWkubm90aWZpY2F0aW9u
cy5CdWlsZGVyc0ZhaWxpbmcodGhpcy5fbWVzc2FnZSk7Ci0gICAgICAgICAgICB0aGlzLl92aWV3
LmFkZCh0aGlzLl9ub3RpZmljYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1FOiBX
ZSBzaG91bGQgcHJvdmlkZSByZWdyZXNzaW9uIHJhbmdlcyBmb3IgdGhlIGZhaWxpbmcgYnVpbGRl
cnMuCi0gICAgICAgIC8vIFRoaXMgZG9lc24ndCBzZWVtIHRvIGhhcHBlbiBvZnRlbiBlbm91Z2gg
dG8gd29ycnkgdG9vIG11Y2ggYWJvdXQgdGhhdCwgaG93ZXZlci4KLSAgICAgICAgdGhpcy5fbm90
aWZpY2F0aW9uLnNldEZhaWxpbmdCdWlsZGVycyhmYWlsdXJlc0xpc3QpOwotICAgIH0KLX0pOwot
Ci19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29udHJvbGxlcnNfdW5pdHRl
c3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbnRyb2xsZXJz
X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvY29udHJvbGxlcnNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTA2ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotdmFyIGtFeGFtcGxlUmVzdWx0c0J5
QnVpbGRlciA9IHsKLSAgICAiTW9jayBCdWlsZGVyIjogdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRz
SlNPTiwKLX07Ci0KLW1vZHVsZSgiY29udHJvbGxlcnMiKTsKLQotdGVzdCgiVW5leHBlY3RlZEZh
aWx1cmVzIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3Jr
U2ltdWxhdG9yKCk7Ci0KLSAgICBzaW11bGF0b3IucHJvYmUgPSBmdW5jdGlvbigpIHsKLSAgICB9
OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBtb2Nr
VmlldyA9IHt9OwotICAgICAgICB2YXIgbW9ja1N0YXRlID0gewotICAgICAgICAgICAgcmVzdWx0
c0J5QnVpbGRlcjoga0V4YW1wbGVSZXN1bHRzQnlCdWlsZGVyCi0gICAgICAgIH07Ci0gICAgICAg
IHZhciBleHBlY3RlZFJlc3VsdHNCeVRlc3QgPSBudWxsOwotICAgICAgICB2YXIgbW9ja0RlbGVn
YXRlID0gewotICAgICAgICAgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKHJlc3VsdHNWaWV3KQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlZXBFcXVhbChyZXN1bHRzVmlldy5fcmVz
dWx0c0J5VGVzdCwgZXhwZWN0ZWRSZXN1bHRzQnlUZXN0KTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICB2YXIgY29udHJvbGxlciA9IGNvbnRyb2xsZXJzLlVuZXhwZWN0ZWRGYWls
dXJlcyhtb2NrU3RhdGUsIG1vY2tWaWV3LCBtb2NrRGVsZWdhdGUpOwotCi0gICAgICAgIHZhciB0
ZXN0TmFtZUxpc3QgPSBudWxsOwotICAgICAgICB2YXIgbW9ja0ZhaWx1cmVzID0gewotICAgICAg
ICAgICAgdGVzdE5hbWVMaXN0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRlc3ROYW1lTGlzdDsgfQot
ICAgICAgICB9OwotCi0gICAgICAgIHRlc3ROYW1lTGlzdCA9IFsic2Nyb2xsYmFycy9jdXN0b20t
c2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIl07Ci0gICAgICAgIGV4cGVjdGVk
UmVzdWx0c0J5VGVzdCA9IHt9OwotICAgICAgICBjb250cm9sbGVyLm9uRXhhbWluZShtb2NrRmFp
bHVyZXMpOwotCi0gICAgICAgIHRlc3ROYW1lTGlzdCA9IFsidXNlcnNjcmlwdHMvYW5vdGhlci10
ZXN0Lmh0bWwiXTsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHRzQnlUZXN0ID0gewotICAgICAgICAg
ICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICJNb2NrIEJ1
aWxkZXIiOiB7Ci0gICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAg
ICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg
fTsKLSAgICAgICAgY29udHJvbGxlci5vbkV4YW1pbmUobW9ja0ZhaWx1cmVzKTsKLSAgICB9KTsK
LX0pOwotCi10ZXN0KCJjb250cm9sbGVycy5GYWlsaW5nQnVpbGRlcnMiLCAzLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgTW9ja1ZpZXcgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICAgICAgYWRk
OiBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5vZGUpOwot
ICAgICAgICB9Ci0gICAgfSkKLSAgICB2YXIgdmlldyA9IG5ldyBNb2NrVmlldygpOwotICAgIHZh
ciBmYWlsaW5nQnVpbGRlcnMgPSBuZXcgY29udHJvbGxlcnMuRmFpbGluZ0J1aWxkZXJzKHZpZXcs
ICdkdW1teSBtZXNzYWdlJyk7Ci0gICAgb2soIWZhaWxpbmdCdWlsZGVycy5oYXNGYWlsdXJlcygp
KTsKLQotICAgIGZhaWxpbmdCdWlsZGVycy51cGRhdGUoeydEdW1teUJ1aWxkZXInOiBbJ3dlYmtp
dF90ZXN0cyddfSk7Ci0gICAgb2soZmFpbGluZ0J1aWxkZXJzLmhhc0ZhaWx1cmVzKCkpOwotCi0g
ICAgZXF1YWwodmlldy5vdXRlckhUTUwsICc8ZGl2PicgKwotICAgICAgICAnPGxpIHN0eWxlPSJv
cGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PHRpbWUgY2xh
c3M9InJlbGF0aXZlIj48L3RpbWU+PC9kaXY+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0i
d2hhdCI+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InByb2JsZW0iPmR1bW15IG1l
c3NhZ2U6JyArCi0gICAgICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImVmZmVjdHMiPicgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgJzxsaSBjbGFzcz0iYnVpbGRlciI+PGEgY2xhc3M9ImZh
aWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1
bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9RHVtbXlCdWlsZGVyIj4n
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InZlcnNpb24iPkR1
bW15QnVpbGRlcjwvc3Bhbj48c3BhbiBjbGFzcz0iZmFpbHVyZXMiPiB3ZWJraXRfdGVzdHM8L3Nw
YW4+PC9hPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGk+JyArCi0gICAgICAgICAg
ICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAg
ICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPjwvdWw+JyArCi0gICAgICAgICAgICAnPC9kaXY+
JyArCi0gICAgICAgICc8L2xpPicgKwotICAgICc8L2Rpdj4nKQotfSk7Ci0KLX0pKCk7CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcwkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0K
LXZhciBnX2luZm8gPSBudWxsOwotdmFyIGdfcmV2aXNpb25IaW50ID0gbnVsbDsKLQotdmFyIGdf
dXBkYXRlVGltZXJJZCA9IDA7Ci12YXIgZ19idWlsZGVyc0ZhaWxpbmcgPSBudWxsOwotCi12YXIg
Z191bmV4cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyID0gbnVsbDsKLXZhciBnX2ZhaWx1cmVzQ29u
dHJvbGxlciA9IG51bGw7Ci0KLXZhciBnX25vbkxheW91dFRlc3RGYWlsdXJlQnVpbGRlcnMgPSBu
dWxsOwotCi1mdW5jdGlvbiB1cGRhdGVQYXJ0eVRpbWUoKQotewotICAgIGlmICghZ191bmV4cGVj
dGVkRmFpbHVyZXNDb250cm9sbGVyLmxlbmd0aCgpICYmICFnX25vbkxheW91dFRlc3RGYWlsdXJl
QnVpbGRlcnMuaGFzRmFpbHVyZXMoKSkKLSAgICAgICAgJCgnI29uZWJhcicpLmFkZENsYXNzKCdw
YXJ0eXRpbWUnKTsKLSAgICBlbHNlCi0gICAgICAgICQoJyNvbmViYXInKS5yZW1vdmVDbGFzcygn
cGFydHl0aW1lJyk7Ci19Ci0KLWZ1bmN0aW9uIHVwZGF0ZSgpCi17Ci0gICAgaWYgKGdfcmV2aXNp
b25IaW50KQotICAgICAgICBnX3JldmlzaW9uSGludC5kaXNtaXNzKCk7Ci0KLSAgICB2YXIgZ3Rl
c3RJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2hyb21pdW0tZ3Rlc3RzIGlmcmFt
ZScpOwotICAgIGlmIChndGVzdElmcmFtZSkKLSAgICAgICAgZ3Rlc3RJZnJhbWUuc3JjID0gZ3Rl
c3RJZnJhbWUuc3JjOwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgYnV0dG9uIHdp
dGggYSBwcm9ncmVzcyBlbGVtZW50LgotICAgIHZhciBudW1iZXJPZlRlc3RzQW5hbHl6ZWQgPSAw
OwotICAgIHZhciB1cGRhdGluZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oJ0xvYWRpbmcg
Y29tbWl0IGRhdGEgLi4uJyk7Ci0KLSAgICBnX2luZm8uYWRkKHVwZGF0aW5nKTsKLQotICAgIGJ1
aWxkZXJzLmJ1aWxkZXJzRmFpbGluZ05vbkxheW91dFRlc3RzKGZ1bmN0aW9uKGZhaWx1cmVzTGlz
dCkgewotICAgICAgICBnX25vbkxheW91dFRlc3RGYWlsdXJlQnVpbGRlcnMudXBkYXRlKGZhaWx1
cmVzTGlzdCk7Ci0gICAgICAgIHVwZGF0ZVBhcnR5VGltZSgpOwotICAgIH0pOwotCi0gICAgYmFz
ZS5jYWxsSW5QYXJhbGxlbChbbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0cywgbW9kZWwudXBkYXRl
UmVzdWx0c0J5QnVpbGRlcl0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoZ19mYWlsdXJlc0Nv
bnRyb2xsZXIpCi0gICAgICAgICAgICBnX2ZhaWx1cmVzQ29udHJvbGxlci51cGRhdGUoKTsKLQot
ICAgICAgICB1cGRhdGluZy51cGRhdGUoJ0FuYWx5emluZyB0ZXN0IGZhaWx1cmVzIC4uLicpOwot
Ci0gICAgICAgIG1vZGVsLmFuYWx5emVVbmV4cGVjdGVkRmFpbHVyZXMoZnVuY3Rpb24oZmFpbHVy
ZUFuYWx5c2lzKSB7Ci0gICAgICAgICAgICB1cGRhdGluZy51cGRhdGUoJ0FuYWx5emluZyB0ZXN0
IGZhaWx1cmVzIC4uLiAnICsgKytudW1iZXJPZlRlc3RzQW5hbHl6ZWQgKyAnIHRlc3RzIGFuYWx5
emVkLicpOwotICAgICAgICAgICAgZ191bmV4cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyLnVwZGF0
ZShmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHVwZGF0ZVBhcnR5VGltZSgpOwotICAgICAgICAgICAgZ191bmV4cGVjdGVkRmFpbHVyZXNDb250
cm9sbGVyLnB1cmdlKCk7Ci0KLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbmZpZy5jdXJyZW50
QnVpbGRlcnMoKSkuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAg
ICAgIGlmICghbW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0pCi0gICAg
ICAgICAgICAgICAgICAgIGdfaW5mby5hZGQobmV3IHVpLm5vdGlmaWNhdGlvbnMuSW5mbygnQ291
bGQgbm90IGZpbmQgdGVzdCByZXN1bHRzIGZvciAnICsgYnVpbGRlck5hbWUgKyAnIGluIHRoZSBs
YXN0ICcgKyBjb25maWcua0J1aWxkTnVtYmVyTGltaXQgKyAnIHJ1bnMuJykpOyAgICAgICAgICAg
IAotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHVwZGF0aW5nLmRpc21pc3MoKTsKLQot
ICAgICAgICAgICAgZ19yZXZpc2lvbkhpbnQgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZvKCcn
KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFyIGxhdGVzdFJldmlzaW9uU3BhbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAgICAgICAgIGxhdGVzdFJldmlzaW9u
U3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnTGF0ZXN0IHJldmlzaW9u
IHByb2Nlc3NlZCBieSBldmVyeSBib3Q6ICcpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
dmFyIGxhdGVzdFJldmlzaW9uID0gbW9kZWwubGF0ZXN0UmV2aXNpb25XaXRoTm9CdWlsZGVyc0lu
RmxpZ2h0KCk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNwYW4uYXBwZW5kQ2hpbGQoYmFz
ZS5jcmVhdGVMaW5rTm9kZSh0cmFjLmNoYW5nZXNldFVSTChsYXRlc3RSZXZpc2lvbiksIGxhdGVz
dFJldmlzaW9uKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhciB0b3RSZXZpc2lvbiA9
IG1vZGVsLmxhdGVzdFJldmlzaW9uKCk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNwYW4u
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAodHJ1bmsgaXMgYXQgJykpOwot
ICAgICAgICAgICAgbGF0ZXN0UmV2aXNpb25TcGFuLmFwcGVuZENoaWxkKGJhc2UuY3JlYXRlTGlu
a05vZGUodHJhYy5jaGFuZ2VzZXRVUkwodG90UmV2aXNpb24pLCB0b3RSZXZpc2lvbikpOwotICAg
ICAgICAgICAgbGF0ZXN0UmV2aXNpb25TcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCcpJykpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBnX3JldmlzaW9uSGludC51
cGRhdGVXaXRoTm9kZShsYXRlc3RSZXZpc2lvblNwYW4pOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBnX2luZm8uYWRkKGdfcmV2aXNpb25IaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19
Ci0KLSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgIGdfdXBkYXRlVGltZXJJZCA9
IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGUsIGNvbmZpZy5rVXBkYXRlRnJlcXVlbmN5KTsKLQot
ICAgIHBpeGVsem9vbWVyLmluc3RhbGxFdmVudExpc3RlbmVycygpOwotCi0gICAgb25lYmFyID0g
bmV3IHVpLm9uZWJhcigpOwotICAgIG9uZWJhci5hdHRhY2goKTsKLQotICAgIC8vIEZJWE1FOiBU
aGlzIGRvZXNuJ3QgYmVsb25nIGhlcmUuCi0gICAgdmFyIG9uZWJhckNvbnRyb2xsZXIgPSB7Ci0g
ICAgICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbihyZXN1bHRzVmlldykKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIHJlc3VsdHNDb250YWluZXIgPSBvbmViYXIucmVzdWx0cygpOwotICAgICAg
ICAgICAgJChyZXN1bHRzQ29udGFpbmVyKS5lbXB0eSgpLmFwcGVuZChyZXN1bHRzVmlldyk7Ci0g
ICAgICAgICAgICBvbmViYXIuc2VsZWN0KCdyZXN1bHRzJyk7Ci0gICAgICAgIH0KLSAgICB9Owot
Ci0gICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlc1ZpZXcgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5T
dHJlYW0oKTsKLSAgICBnX3VuZXhwZWN0ZWRGYWlsdXJlc0NvbnRyb2xsZXIgPSBuZXcgY29udHJv
bGxlcnMuVW5leHBlY3RlZEZhaWx1cmVzKG1vZGVsLnN0YXRlLCB1bmV4cGVjdGVkRmFpbHVyZXNW
aWV3LCBvbmViYXJDb250cm9sbGVyKTsKLQotICAgIGdfaW5mbyA9IG5ldyB1aS5ub3RpZmljYXRp
b25zLlN0cmVhbSgpOwotICAgIGdfbm9uTGF5b3V0VGVzdEZhaWx1cmVCdWlsZGVycyA9IG5ldyBj
b250cm9sbGVycy5GYWlsaW5nQnVpbGRlcnMoZ19pbmZvLCAnTm9uLWxheW91dCB0ZXN0IGZhaWx1
cmVzJyk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gQWN0aW9uIG9iamVjdC4K
LSAgICB2YXIgdXBkYXRlQnV0dG9uID0gZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyksIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Ci0g
ICAgdXBkYXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdXBkYXRlKTsKLSAgICB1
cGRhdGVCdXR0b24udGV4dENvbnRlbnQgPSAndXBkYXRlJzsKLQotICAgIHZhciB1bmV4cGVjdGVk
ID0gb25lYmFyLnVuZXhwZWN0ZWQoKTsKLSAgICB1bmV4cGVjdGVkLmFwcGVuZENoaWxkKHVwZGF0
ZUJ1dHRvbik7Ci0gICAgdW5leHBlY3RlZC5hcHBlbmRDaGlsZChnX2luZm8pOwotICAgIHVuZXhw
ZWN0ZWQuYXBwZW5kQ2hpbGQodW5leHBlY3RlZEZhaWx1cmVzVmlldyk7Ci0KLSAgICB2YXIgZXhw
ZWN0ZWQgPSBvbmViYXIuZXhwZWN0ZWQoKTsKLSAgICBpZiAoZXhwZWN0ZWQpIHsKLSAgICAgICAg
dmFyIGZhaWx1cmVzVmlldyA9IG5ldyB1aS5mYWlsdXJlcy5MaXN0KCk7Ci0gICAgICAgIGdfZmFp
bHVyZXNDb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLkV4cGVjdGVkRmFpbHVyZXMobW9kZWwu
c3RhdGUsIGZhaWx1cmVzVmlldywgb25lYmFyQ29udHJvbGxlcik7Ci0gICAgICAgIGV4cGVjdGVk
LmFwcGVuZENoaWxkKGZhaWx1cmVzVmlldyk7Ci0gICAgfQotCi0gICAgb25lYmFyLnBlcmYoKS5h
cHBlbmRDaGlsZChuZXcgdWkucGVyZi5WaWV3KCkpOwotCi0gICAgdXBkYXRlKCk7Ci19KTsKLQot
fSkoKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2dhcmRl
bi1vLW1hdGljLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9tb2RlbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9tb2RlbC5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvbW9kZWwuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci12YXIgbW9kZWwgPSBtb2RlbCB8fCB7fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotdmFyIGtDb21t
aXRMb2dMZW5ndGggPSA1MDsKLQotbW9kZWwuc3RhdGUgPSB7fTsKLW1vZGVsLnN0YXRlLmZhaWx1
cmVBbmFseXNpc0J5VGVzdCA9IHt9OwotbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0gW107
Ci1tb2RlbC5zdGF0ZS5leHBlY3RhdGlvbnNVcGRhdGVRdWV1ZSA9IFtdOwotCi1mdW5jdGlvbiBm
aW5kQW5kTWFya1JldmVydGVkUmV2aXNpb25zKGNvbW1pdERhdGFMaXN0KQotewotICAgIHZhciBy
ZXZlcnRlZFJldmlzaW9ucyA9IHt9OwotICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVuY3Rp
b24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEucmV2ZXJ0ZWRS
ZXZpc2lvbikKLSAgICAgICAgICAgIHJldmVydGVkUmV2aXNpb25zW2NvbW1pdERhdGEucmV2ZXJ0
ZWRSZXZpc2lvbl0gPSB0cnVlOwotICAgIH0pOwotICAgICQuZWFjaChjb21taXREYXRhTGlzdCwg
ZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEucmV2
aXNpb24gaW4gcmV2ZXJ0ZWRSZXZpc2lvbnMpCi0gICAgICAgICAgICBjb21taXREYXRhLndhc1Jl
dmVydGVkID0gdHJ1ZTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZnV6enlGaW5kKHRlc3ROYW1l
LCBjb21taXREYXRhKQotewotICAgIHZhciBpbmRleE9mTGFzdERvdCA9IHRlc3ROYW1lLmxhc3RJ
bmRleE9mKCcuJyk7Ci0gICAgdmFyIHN0ZW0gPSBpbmRleE9mTGFzdERvdCA9PSAtMSA/IHRlc3RO
YW1lIDogdGVzdE5hbWUuc3Vic3RyKDAsIGluZGV4T2ZMYXN0RG90KTsKLSAgICByZXR1cm4gY29t
bWl0RGF0YS5tZXNzYWdlLmluZGV4T2Yoc3RlbSkgIT0gLTE7Ci19Ci0KLWZ1bmN0aW9uIGhldXJp
c3RpY2FsbHlOYXJyb3dSZWdyZXNzaW9uUmFuZ2UoZmFpbHVyZUFuYWx5c2lzKQotewotICAgIHZh
ciBjb21taXREYXRhTGlzdCA9IG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgdmFyIGNv
bW1pdERhdGFJbmRleCA9IGNvbW1pdERhdGFMaXN0Lmxlbmd0aCAtIDE7Ci0KLSAgICBmb3IodmFy
IHJldmlzaW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7IHJl
dmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247ICsrcmV2aXNp
b24pIHsKLSAgICAgICAgd2hpbGUgKGNvbW1pdERhdGFJbmRleCA+PSAwICYmIGNvbW1pdERhdGFM
aXN0W2NvbW1pdERhdGFJbmRleF0ucmV2aXNpb24gPCByZXZpc2lvbikKLSAgICAgICAgICAgIC0t
Y29tbWl0RGF0YUluZGV4OwotICAgICAgICB2YXIgY29tbWl0RGF0YSA9IGNvbW1pdERhdGFMaXN0
W2NvbW1pdERhdGFJbmRleF07Ci0gICAgICAgIGlmIChjb21taXREYXRhLnJldmlzaW9uICE9IHJl
dmlzaW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChmdXp6eUZpbmQoZmFp
bHVyZUFuYWx5c2lzLnRlc3ROYW1lLCBjb21taXREYXRhKSkgewotICAgICAgICAgICAgZmFpbHVy
ZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAgICAg
ZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uIC0gMTsKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotbW9kZWwucXVldWVGb3JS
ZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZUluZm8pCi17Ci0gICAgbW9kZWwuc3RhdGUucmVi
YXNlbGluZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZVJlYmFzZWxp
bmVRdWV1ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC5zdGF0ZS5yZWJh
c2VsaW5lUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0gW107Ci0gICAg
cmV0dXJuIHF1ZXVlOwotfTsKLQotbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSA9IGZ1
bmN0aW9uKGZhaWx1cmVJbmZvKQotewotICAgIG1vZGVsLnN0YXRlLmV4cGVjdGF0aW9uc1VwZGF0
ZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBk
YXRlUXVldWUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwuc3RhdGUuZXhw
ZWN0YXRpb25zVXBkYXRlUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUuZXhwZWN0YXRpb25zVXBkYXRl
UXVldWUgPSBbXTsKLSAgICByZXR1cm4gcXVldWU7Ci19OwotCi12YXIgZ19jb21taXRJbmRleCA9
IHt9OwotCi1tb2RlbC51cGRhdGVSZWNlbnRDb21taXRzID0gZnVuY3Rpb24oY2FsbGJhY2spCi17
Ci0gICAgdHJhYy5yZWNlbnRDb21taXREYXRhKCd0cnVuaycsIGtDb21taXRMb2dMZW5ndGgsIGZ1
bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7Ci0gICAgICAgIG1vZGVsLnN0YXRlLnJlY2VudENvbW1p
dHMgPSBjb21taXREYXRhTGlzdDsKLSAgICAgICAgdXBkYXRlQ29tbWl0SW5kZXgoKTsKLSAgICAg
ICAgZmluZEFuZE1hcmtSZXZlcnRlZFJldmlzaW9ucyhtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRz
KTsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLWZ1bmN0aW9uIHVwZGF0ZUNv
bW1pdEluZGV4KCkKLXsKLSAgICBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVhY2goZnVu
Y3Rpb24oY29tbWl0RGF0YSkgewotICAgICAgICBnX2NvbW1pdEluZGV4W2NvbW1pdERhdGEucmV2
aXNpb25dID0gY29tbWl0RGF0YTsKLSAgICB9KTsKLX0KLQotbW9kZWwuY29tbWl0RGF0YUxpc3RG
b3JSZXZpc2lvblJhbmdlID0gZnVuY3Rpb24oZnJvbVJldmlzaW9uLCB0b1JldmlzaW9uKQotewot
ICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciByZXZpc2lvbiA9IGZyb21SZXZpc2lv
bjsgcmV2aXNpb24gPD0gdG9SZXZpc2lvbjsgKytyZXZpc2lvbikgewotICAgICAgICB2YXIgY29t
bWl0RGF0YSA9IGdfY29tbWl0SW5kZXhbcmV2aXNpb25dOwotICAgICAgICBpZiAoY29tbWl0RGF0
YSkKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbW1pdERhdGEpOwotICAgIH0KLSAgICByZXR1
cm4gcmVzdWx0OwotfTsKLQotbW9kZWwuYnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uID0gZnVu
Y3Rpb24ocmV2aXNpb24pCi17Ci0gICAgdmFyIGJ1aWxkZXJzID0ge307Ci0gICAgT2JqZWN0Lmtl
eXMobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcikuZm9yRWFjaChmdW5jdGlvbihidWlsZGVy
TmFtZSkgewotICAgICAgICB2YXIgcmVzdWx0cyA9IG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxk
ZXJbYnVpbGRlck5hbWVdOwotICAgICAgICBpZiAocGFyc2VJbnQocmVzdWx0cy5yZXZpc2lvbikg
PCByZXZpc2lvbikKLSAgICAgICAgICAgIGJ1aWxkZXJzW2J1aWxkZXJOYW1lXSA9IHsgYWN0dWFs
OiAnQlVJTERJTkcnIH07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXJzOwotfTsKLQotbW9k
ZWwubGF0ZXN0UmV2aXNpb24gPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIG1vZGVsLnN0YXRl
LnJlY2VudENvbW1pdHNbMF0ucmV2aXNpb247Ci19Ci0KLW1vZGVsLmxhdGVzdFJldmlzaW9uV2l0
aE5vQnVpbGRlcnNJbkZsaWdodCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcmV2aXNpb24gPSAw
OwotICAgIE9iamVjdC5rZXlzKG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpLmZvckVhY2go
ZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBtb2RlbC5zdGF0
ZS5yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJOYW1lXTsKLSAgICAgICAgaWYgKCFyZXN1bHRzLnJl
dmlzaW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgdGVzdGVkUmV2aXNpb24g
PSBwYXJzZUludChyZXN1bHRzLnJldmlzaW9uKTsKLSAgICAgICAgcmV2aXNpb24gPSByZXZpc2lv
biA/IE1hdGgubWluKHJldmlzaW9uLCB0ZXN0ZWRSZXZpc2lvbikgOiB0ZXN0ZWRSZXZpc2lvbjsK
LSAgICB9KTsKLSAgICByZXR1cm4gcmV2aXNpb247Ci19Ci0KLW1vZGVsLnVwZGF0ZVJlc3VsdHNC
eUJ1aWxkZXIgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgcGxhdGZvcm1CdWlsZGVy
cyA9IGNvbmZpZy5jdXJyZW50QnVpbGRlcnMoKTsKLSAgICByZXN1bHRzLmZldGNoUmVzdWx0c0J5
QnVpbGRlcihPYmplY3Qua2V5cyhwbGF0Zm9ybUJ1aWxkZXJzKSwgZnVuY3Rpb24ocmVzdWx0c0J5
QnVpbGRlcikgewotICAgICAgICBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyID0gcmVzdWx0
c0J5QnVpbGRlcjsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLW1vZGVsLmFu
YWx5emVVbmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihjYWxsYmFjaywgY29tcGxldGlvbkNh
bGxiYWNrKQotewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhwZWN0
ZWRGYWlsdXJlc0J5VGVzdChtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLQotICAgICQu
ZWFjaChtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3QsIGZ1bmN0aW9uKHRlc3ROYW1l
LCBmYWlsdXJlQW5hbHlzaXMpIHsKLSAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdW5leHBlY3Rl
ZEZhaWx1cmVzKSkKLSAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlz
aXNCeVRlc3RbdGVzdE5hbWVdOwotICAgIH0pOwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFz
ZS5SZXF1ZXN0VHJhY2tlcihPYmplY3Qua2V5cyh1bmV4cGVjdGVkRmFpbHVyZXMpLmxlbmd0aCwg
Y29tcGxldGlvbkNhbGxiYWNrKTsKLSAgICAkLmVhY2godW5leHBlY3RlZEZhaWx1cmVzLCBmdW5j
dGlvbih0ZXN0TmFtZSwgcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIGJ1aWxk
ZXJOYW1lTGlzdCA9IE9iamVjdC5rZXlzKHJlc3VsdE5vZGVzQnlCdWlsZGVyKTsKLSAgICAgICAg
cmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMoYnVpbGRlck5hbWVMaXN0LCB0ZXN0TmFtZSwg
ZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsK
LSAgICAgICAgICAgIHZhciBmYWlsdXJlQW5hbHlzaXMgPSB7Ci0gICAgICAgICAgICAgICAgJ3Rl
c3ROYW1lJzogdGVzdE5hbWUsCi0gICAgICAgICAgICAgICAgJ3Jlc3VsdE5vZGVzQnlCdWlsZGVy
JzogcmVzdWx0Tm9kZXNCeUJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgJ29sZGVzdEZhaWxpbmdS
ZXZpc2lvbic6IG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAnbmV3ZXN0
UGFzc2luZ1JldmlzaW9uJzogbmV3ZXN0UGFzc2luZ1JldmlzaW9uLAotICAgICAgICAgICAgfTsK
LQotICAgICAgICAgICAgaGV1cmlzdGljYWxseU5hcnJvd1JlZ3Jlc3Npb25SYW5nZShmYWlsdXJl
QW5hbHlzaXMpOwotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNGYWlsdXJlQW5hbHlzaXMgPSBt
b2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3RbdGVzdE5hbWVdOwotICAgICAgICAgICAg
aWYgKHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzCi0gICAgICAgICAgICAgICAgJiYgcHJldmlvdXNG
YWlsdXJlQW5hbHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5v
bGRlc3RGYWlsaW5nUmV2aXNpb24KLSAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0ZhaWx1cmVB
bmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPj0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBh
c3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAgICAgIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RG
YWlsaW5nUmV2aXNpb24gPSBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2
aXNpb247Ci0gICAgICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZp
c2lvbiA9IHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgbW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lzQnlU
ZXN0W3Rlc3ROYW1lXSA9IGZhaWx1cmVBbmFseXNpczsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5c2lzKTsKLSAgICAgICAgICAgIHRyYWNrZXIucmVxdWVz
dENvbXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotbW9kZWwudW5leHBlY3Rl
ZEZhaWx1cmVJbmZvRm9yVGVzdE5hbWUgPSBmdW5jdGlvbih0ZXN0TmFtZSkKLXsKLSAgICB2YXIg
cmVzdWx0c0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0KG1vZGVsLnN0
YXRlLnJlc3VsdHNCeUJ1aWxkZXIpOwotCi0gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3VsdHNC
eVRlc3RbdGVzdE5hbWVdKS5tYXAoZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcihyZXN1bHRzQnlUZXN0LCB0
ZXN0TmFtZSwgYnVpbGRlck5hbWUpOwotICAgIH0pOwotfTsKLQotbW9kZWwuYW5hbHl6ZVVuZXhw
ZWN0ZWRTdWNjZXNzZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgdW5leHBlY3Rl
ZFN1Y2Nlc3NlcyA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdChtb2RlbC5zdGF0
ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLSAgICAkLmVhY2godW5leHBlY3RlZFN1Y2Nlc3NlcywgZnVu
Y3Rpb24odGVzdE5hbWUsIHJlc3VsdE5vZGVzQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBzdWNj
ZXNzQW5hbHlzaXMgPSB7Ci0gICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKLSAgICAg
ICAgICAgICdyZXN1bHROb2Rlc0J5QnVpbGRlcic6IHJlc3VsdE5vZGVzQnlCdWlsZGVyLAotICAg
ICAgICB9OwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBsb29raW5nIGF0IHRoZSBoaXN0
b3J5IHRvIHNlZSBob3cgbG9uZyB0aGlzIHRlc3QKLSAgICAgICAgLy8gaGFzIGJlZW4gdW5leHBl
Y3RlZGx5IHBhc3NpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soc3VjY2Vzc0FuYWx5c2lzKTsKLSAg
ICB9KTsKLX07Ci0KLW1vZGVsLmFuYWx5emVleHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24oY2Fs
bGJhY2spCi17Ci0gICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVkRmFp
bHVyZXNCeVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgJC5lYWNoKGV4
cGVjdGVkRmFpbHVyZXMsIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2Rlc0J5QnVpbGRlcikg
ewotICAgICAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0gewotICAgICAgICAgICAgJ3Rlc3ROYW1l
JzogdGVzdE5hbWUsCi0gICAgICAgICAgICAncmVzdWx0Tm9kZXNCeUJ1aWxkZXInOiByZXN1bHRO
b2Rlc0J5QnVpbGRlciwKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lkZXIg
bG9va2luZyBhdCB0aGUgaGlzdG9yeSB0byBzZWUgaG93IGxvbmcgdGhpcyB0ZXN0Ci0gICAgICAg
IC8vIGhhcyBiZWVuIGZhaWxpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5c2lz
KTsKLSAgICB9KTsKLX07Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9t
b2RlbF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMv
bW9kZWxfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNTQgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoIm1vZGVsIik7Ci0KLXZh
ciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPQotICAgICc8P3htbCB2ZXJzaW9uPSIxLjAiPz5cblxu
JyArCi0gICAgJzxyc3MgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEv
IiB2ZXJzaW9uPSIyLjAiPlxuXG4nICsKLSAgICAnICBcblxuJyArCi0gICAgJ1xuXG4nICsKLSAg
ICAnICA8Y2hhbm5lbD5cblxuJyArCi0gICAgJyAgICA8dGl0bGU+UmV2aXNpb25zIG9mIC90cnVu
azwvdGl0bGU+XG5cbicgKwotICAgICcgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9s
b2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKLSAgICAnICAgIDxkZXNjcmlwdGlvbj5U
cmFjIExvZyAtIFJldmlzaW9ucyBvZiAvdHJ1bms8L2Rlc2NyaXB0aW9uPlxuXG4nICsKLSAgICAn
ICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+XG5cbicgKwotICAgICcgICAgPGdlbmVyYXRv
cj5UcmFjIDAuMTEuNzwvZ2VuZXJhdG9yPlxuXG4nICsKLSAgICAnICAgIDxpbWFnZT5cblxuJyAr
Ci0gICAgJyAgICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPlxuXG4nICsKLSAgICAnICAgICAgPHVy
bD5odHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nPC91cmw+XG5cbicg
KwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9
OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAgPC9pbWFnZT5cblxuJyArCi0gICAgJyAgICA8
aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5jb21taXQtcXVldWVAd2Via2l0Lm9y
ZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPldlZCwgMDMgQXVnIDIwMTEgMDQ6
MjY6NTIgR01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5MjI1
OTogVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHI5MjI1Ni5cbicgKwotICAgICdodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi48L3RpdGxlPlxuJyArCi0gICAgJyAgICAgIDxs
aW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU5L3RydW5rPC9saW5rPlxu
JyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2d1aWQ+XG4nICsKLSAgICAnICAgICAgPGRl
c2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ1VucmV2aWV3ZWQsIHJldmVydGluZyAmbHQ7
YSBjbGFzcz0iY2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC85MjI1NiIgdGl0bGU9Ik1ha2UgRXZlbnREaXNwYXRjaE1lZGlhdG9yIFJlZkNvdW50ZWQuIC4u
LiImZ3Q7cjkyMjU2Jmx0Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsi
IGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IiZndDsmbHQ7c3Bh
biBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC85MjI1NiZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsi
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5MyImZ3Q7
Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTkzJmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZn
dDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdDYXVzaW5nIHRvbnMgb2YgY3Jhc2hl
cyBvbiB0aGUgY2hyb21pdW0gd2luIGJvdHMgKFJlcXVlc3RlZCBieVxuJyArCi0gICAgJ2phbWVz
ciBvbiAjd2Via2l0KS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7
XG4nICsKLSAgICAnUGF0Y2ggYnkgU2hlcmlmZiBCb3QgJmFtcDtsdDsmbHQ7YSBjbGFzcz0ibWFp
bC1saW5rIiBocmVmPSJtYWlsdG86d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tIiZndDsmbHQ7
c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDt3ZWJraXQucmV2aWV3LmJvdEBnbWFp
bC5jb20mbHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wMlxuJyArCi0gICAgJyZsdDsvcCZn
dDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGRvbS9FdmVudC5jcHA6XG4nICsK
LSAgICAnKiBkb20vRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9FdmVudERpc3BhdGNoZXIuY3Bw
OlxuJyArCi0gICAgJyhXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQpOlxu
JyArCi0gICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOlxuJyArCi0gICAgJyogZG9tL0tleWJv
YXJkRXZlbnQuY3BwOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZlbnQuaDpcbicgKwotICAg
ICcqIGRvbS9Nb3VzZUV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9Nb3VzZUV2ZW50Lmg6XG4n
ICsKLSAgICAnKiBkb20vTm9kZS5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRpc3Bh
dGNoRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEtleUV2ZW50KTpc
bicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KTpcbicgKwotICAg
ICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KTpcbicgKwotICAgICcqIGRvbS9X
aGVlbEV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2ZW50Lmg6XG4nICsKLSAgICAn
Jmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAgICAgPGNh
dGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKwot
ICAgICcgICAgICAgICAgPGF1dGhvcj5tYWNwaGVyc29uQGNocm9taXVtLm9yZzwvYXV0aG9yPlxu
XG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMjowOToxOSBHTVQ8
L3B1YkRhdGU+XG5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIyNTY6IFN1cHBv
cnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4g
Li4uPC90aXRsZT5cblxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzkyMjU2L3RydW5rPC9saW5rPlxuXG4nICsKLSAgICAnICAgICAgPGd1aWQg
aXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1
Ni90cnVuazwvZ3VpZD5cblxuJyArCi0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtc
blxuJyArCi0gICAgJ1N1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBF
Qm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxlY3Rvci5cblxuJyArCi0gICAgJyZsdDthIGNs
YXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NjU3IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTcmbHQ7L2EmZ3Q7XG5cbicg
KwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ1Jl
dmlld2VkIGJ5IFNpbW9uIEZyYXNlci5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0g
ICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jpbmcgb25s
eS5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsK
LSAgICAnKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOlxuXG4nICsKLSAgICAnKFdl
YkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6XG5cbicgKwotICAg
ICdJbXBsZW1lbnQgY2FzdCBmcm9tIEVCb3hTaXppbmcuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNT
U1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94U2l6aW5nKTpcbicgKwotICAgICdJbXBsZW1l
bnQgY2FzdCB0byBFQm94U2l6aW5nLlxuJyArCi0gICAgJyogY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5
KTpcbicgKwotICAgICdVc2UgYXBwcm9wcmlhdGUgbWFjcm8gdG8gc2ltcGxpZnkgY29kZSB1c2lu
ZyBjYXN0LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxu
JyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8
L2l0ZW0+XG4nICsKLSAgICAnIDwvY2hhbm5lbD5cbicgKwotICAgICc8L3Jzcz5cbicKLQotdGVz
dCgicmViYXNlbGluZVF1ZXVlIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHF1ZXVlID0gbW9k
ZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwotICAg
IG1vZGVsLnF1ZXVlRm9yUmViYXNlbGluZSgnZmFpbHVyZUluZm8xJyk7Ci0gICAgbW9kZWwucXVl
dWVGb3JSZWJhc2VsaW5lKCdmYWlsdXJlSW5mbzInKTsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC50
YWtlUmViYXNlbGluZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1ZXVlLCBbJ2ZhaWx1cmVJbmZv
MScsICdmYWlsdXJlSW5mbzInXSk7Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZVJlYmFzZWxp
bmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwotfSk7Ci0KLXRlc3QoInJlYmFz
ZWxpbmVRdWV1ZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBxdWV1ZSA9IG1vZGVsLnRha2VF
eHBlY3RhdGlvblVwZGF0ZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1ZXVlLCBbXSk7Ci0gICAg
bW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUluZm8xJyk7Ci0gICAgbW9k
ZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUluZm8yJyk7Ci0gICAgdmFyIHF1
ZXVlID0gbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUoKTsKLSAgICBkZWVwRXF1YWwo
cXVldWUsIFsnZmFpbHVyZUluZm8xJywgJ2ZhaWx1cmVJbmZvMiddKTsKLSAgICB2YXIgcXVldWUg
PSBtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1
ZSwgW10pOwotfSk7Ci0KLXRlc3QoInVwZGF0ZVJlY2VudENvbW1pdHMiLCAyLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHNp
bXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgc2lt
dWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFy
c2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFy
c2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94
bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBtb2Rl
bC51cGRhdGVSZWNlbnRDb21taXRzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHJlY2Vu
dENvbW1pdHMgPSBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzOwotICAgICAgICAgICAgZGVsZXRl
IG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgICAgICAgICAkLmVhY2gocmVjZW50Q29t
bWl0cywgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgICAgICAgICBkZWxl
dGUgY29tbWl0RGF0YS5tZXNzYWdlOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBkZWVw
RXF1YWwocmVjZW50Q29tbWl0cywgW3sKLSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiA5MjI1
OSwKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIyNTk6IFVucmV2aWV3ZWQs
IHJldmVydGluZyByOTIyNTYuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1
NiAuLi4iLAotICAgICAgICAgICAgICAgICJ0aW1lIjogIldlZCwgMDMgQXVnIDIwMTEgMDQ6MjY6
NTIgR01UIiwKLSAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJVbnJldmlld2VkLCByZXZlcnRp
bmcgcjkyMjU2LiIsCi0gICAgICAgICAgICAgICAgImF1dGhvciI6ICJTaGVyaWZmIEJvdCIsCi0g
ICAgICAgICAgICAgICAgInJldmlld2VyIjogbnVsbCwKLSAgICAgICAgICAgICAgICAiYnVnSUQi
OiA2NTU5MywKLSAgICAgICAgICAgICAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IDkyMjU2Ci0gICAg
ICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IDkyMjU2LAotICAgICAg
ICAgICAgICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5MjI1NjogU3VwcG9ydCBjYXN0IGJldHdlZW4g
Q1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiAuLi4iLAotICAgICAgICAg
ICAgICAgICJ0aW1lIjogIlRodSwgMDQgQXVnIDIwMTEgMDI6MDk6MTkgR01UIiwKLSAgICAgICAg
ICAgICAgICAic3VtbWFyeSI6ICJTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVWYWx1
ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0eWxlU2VsZWN0b3IuIiwKLSAgICAgICAgICAg
ICAgICAiYXV0aG9yIjogIm1hY3BoZXJzb25AY2hyb21pdW0ub3JnIiwKLSAgICAgICAgICAgICAg
ICAicmV2aWV3ZXIiOiAiU2ltb24gRnJhc2VyIiwKLSAgICAgICAgICAgICAgICAiYnVnSUQiOiA2
NTY1NywKLSAgICAgICAgICAgICAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IHVuZGVmaW5lZCwKLSAg
ICAgICAgICAgICAgICAid2FzUmV2ZXJ0ZWQiOiB0cnVlCi0gICAgICAgICAgICB9XSk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25S
YW5nZSIsIDYsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1Np
bXVsYXRvcigpOwotCi0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2
YXIgcmVzcG9uc2VET00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0RGF0
YVhNTCwgImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VE
T00pOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIG1vZGVsLnVwZGF0ZVJlY2VudENvbW1pdHMoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBmdW5jdGlvbiBleHRyYWN0QnVnSURzKGNvbW1pdERhdGEpCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdERhdGEuYnVnSUQ7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlzdEZvclJldmlz
aW9uUmFuZ2UoOTIyNTksIDkyMjU5KS5tYXAoZXh0cmFjdEJ1Z0lEcyksIFs2NTU5M10pOwotICAg
ICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5
MjI1NiwgOTIyNTkpLm1hcChleHRyYWN0QnVnSURzKSwgWzY1NjU3LCA2NTU5M10pOwotICAgICAg
ICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5MjI1
OSwgOTIyNTYpLm1hcChleHRyYWN0QnVnSURzKSwgW10pOwotICAgICAgICAgICAgZGVlcEVxdWFs
KG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSgwLCA5MjI1NikubWFwKGV4dHJh
Y3RCdWdJRHMpLCBbNjU2NTddKTsKLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXRE
YXRhTGlzdEZvclJldmlzaW9uUmFuZ2UoOTIyNTYsIDApLm1hcChleHRyYWN0QnVnSURzKSwgW10p
OwotICAgICAgICAgICAgZGVsZXRlIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbiIs
IDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1vY2sgPSBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlC
dWlsZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdN
ci4gQmVhc2xleSc6IHtyZXZpc2lvbjogJzUnfSwKLSAgICAgICAgJ01yIERpeG9uJzoge3Jldmlz
aW9uOiAnMSd9LAotICAgICAgICAnTXIuIFNhYmF0aW5pJzoge3JldmlzaW9uOiAnNCd9LAotICAg
ICAgICAnQm9iJzoge3JldmlzaW9uOiAnNid9Ci0gICAgfTsKLSAgICBkZWVwRXF1YWwobW9kZWwu
YnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uKDEpLCB7fSk7Ci0gICAgZGVlcEVxdWFsKG1vZGVs
LmJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbigzKSwgewotICAgICAgIk1yIERpeG9uIjogewot
ICAgICAgICAiYWN0dWFsIjogIkJVSUxESU5HIgotICAgICAgfQotICAgIH0pOwotICAgIGRlZXBF
cXVhbChtb2RlbC5idWlsZGVyc0luRmxpZ2h0Rm9yUmV2aXNpb24oMTApLCB7Ci0gICAgICAiTXIu
IEJlYXNsZXkiOiB7Ci0gICAgICAgICJhY3R1YWwiOiAiQlVJTERJTkciCi0gICAgICB9LAotICAg
ICAgIk1yIERpeG9uIjogewotICAgICAgICAiYWN0dWFsIjogIkJVSUxESU5HIgotICAgICAgfSwK
LSAgICAgICJNci4gU2FiYXRpbmkiOiB7Ci0gICAgICAgICJhY3R1YWwiOiAiQlVJTERJTkciCi0g
ICAgICB9LAotICAgICAgIkJvYiI6IHsKLSAgICAgICAgImFjdHVhbCI6ICJCVUlMRElORyIKLSAg
ICAgIH0KLSAgICB9KTsKLSAgICBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyID0gdW5tb2Nr
OwotfSk7Ci0KLXRlc3QoImxhdGVzdFJldmlzaW9uV2l0aE5vQnVpbGRlcnNJbkZsaWdodCIsIDEs
IGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1vY2sgPSBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWls
ZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdNci4g
QmVhc2xleSc6IHsgfSwKLSAgICAgICAgJ01yIERpeG9uJzoge3JldmlzaW9uOiAnMid9LAotICAg
ICAgICAnTXIuIFNhYmF0aW5pJzoge3JldmlzaW9uOiAnNCd9LAotICAgICAgICAnQm9iJzoge3Jl
dmlzaW9uOiAnNid9Ci0gICAgfTsKLSAgICBlcXVhbHMobW9kZWwubGF0ZXN0UmV2aXNpb25XaXRo
Tm9CdWlsZGVyc0luRmxpZ2h0KCksIDIpOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxk
ZXIgPSB1bm1vY2s7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L25ldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXQuanMJKHJl
dmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldC5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIG5ldCA9IG5ldCB8fCB7
fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotLy8gRklYTUU6IEV4Y2lzZSB0aGlzIGxhc3QgYml0IG9m
IGpxdWVyeSBhamF4IGNvZGUuCi0vLyBUaGVyZSBhcmUgY2FsbGVycyB0aGF0IGRlcGVuZCBvbiBh
dXRvbWF0aWNhbGx5IHBhcnNpbmcgdGhlIGNvbnRlbnQgYXMgSlNPTiBvciBYTUwKLS8vIGJhc2Vk
IG9mZiB0aGUgY29udGVudC10eXBlLiBJbnN0ZWFkIHdlIHNob3VsZCBhZGQgbmV0Lmpzb24gYW5k
IG5ldC54bWwgZm9yIHRob3NlIGNhc2VzLgotbmV0LmdldCA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vz
cykKLXsKLSAgICAkLmdldCh1cmwsIHN1Y2Nlc3MpOwotfTsKLQotbmV0LmFqYXggPSBmdW5jdGlv
bihvcHRpb25zKQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAgICB2
YXIgbWV0aG9kID0gb3B0aW9ucy50eXBlIHx8ICdHRVQnOwotICAgIHZhciBhc3luYyA9IHRydWU7
Ci0gICAgeGhyLm9wZW4obWV0aG9kLCBvcHRpb25zLnVybCwgYXN5bmMpOwotICAgIHhoci5vbmxv
YWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwICYmIG9wdGlv
bnMuc3VjY2VzcykKLSAgICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcyh4aHIucmVzcG9uc2VUZXh0
KTsKLSAgICAgICAgZWxzZSBpZiAoeGhyLnN0YXR1cyAhPSAyMDAgJiYgb3B0aW9ucy5lcnJvcikK
LSAgICAgICAgICAgIG9wdGlvbnMuZXJyb3IoKTsKLSAgICB9OwotICAgIHhoci5vbmVycm9yID0g
ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChvcHRpb25zLmVycm9yKQotICAgICAgICAgICAgb3B0
aW9ucy5lcnJvcigpOwotICAgIH07Ci0gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEgfHwgbnVs
bDsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoImNvbnRlbnQt
dHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwotICAgIHhoci5zZW5k
KGRhdGEpOwotfTsKLQotbmV0LnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIHN1Y2Nlc3MpCi17
Ci0gICAgbmV0LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ1BPU1Qn
LAotICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICBzdWNjZXNzOiBzdWNjZXNzLAotICAgIH0p
OwotCi19OwotCi1uZXQucHJvYmUgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMpCi17Ci0gICAgbmV0
LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ0hFQUQnLAotICAgICAg
ICBzdWNjZXNzOiBvcHRpb25zLnN1Y2Nlc3MsCi0gICAgICAgIGVycm9yOiBvcHRpb25zLmVycm9y
LAotICAgIH0pOwotfTsKLQotLy8gV2UgdXNlIFhNTEh0dHBSZXF1ZXN0IGFuZCBDT1JTIHRvIGZl
dGNoIEpTT05QIHJhdGhlciB0aGFuIHVzaW5nIHNjcmlwdCB0YWdzLgotLy8gVGhhdCdzIGJldHRl
ciBmb3Igc2VjdXJpdHkgYW5kIHBlcmZvcm1hbmNlLCBidXQgd2UgbmVlZCB0aGUgc2VydmVyIHRv
IGNvb3BlcmF0ZQotLy8gYnkgc2V0dGluZyBDT1JTIGhlYWRlcnMuCi1uZXQuanNvbnAgPSBmdW5j
dGlvbih1cmwsIGNhbGxiYWNrKQotewotICAgIG5ldC5hamF4KHsKLSAgICAgICAgdXJsOiB1cmws
Ci0gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGpzb25wKSB7Ci0gICAgICAgICAgICBjYWxsYmFj
ayhiYXNlLnBhcnNlSlNPTlAoanNvbnApKTsKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6IGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soe30pOwotICAgICAgICB9LAotICAgIH0p
OwotfTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldF91bml0dGVz
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0X3VuaXR0ZXN0
cy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0X3Vu
aXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
Ly8gRXhwb3J0IE5ldHdvcmtTaW11bGF0b3IgZm9yIHVzZSBieSBvdGhlciB1bml0dGVzdHMuCi1m
dW5jdGlvbiBOZXR3b3JrU2ltdWxhdG9yKCkKLXsKLSAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tz
ID0gW107Ci19OwotCi1OZXR3b3JrU2ltdWxhdG9yLnByb3RvdHlwZS5zY2hlZHVsZUNhbGxiYWNr
ID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcy5wdXNo
KGNhbGxiYWNrKTsKLX07Ci0KLU5ldHdvcmtTaW11bGF0b3IucHJvdG90eXBlLnJ1blRlc3QgPSBm
dW5jdGlvbih0ZXN0Q2FzZSkKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIHJlYWxO
ZXQgPSB3aW5kb3cubmV0OwotCi0gICAgd2luZG93Lm5ldCA9IHt9OwotICAgIGlmIChzZWxmLnBy
b2JlKQotICAgICAgICBuZXQucHJvYmUgPSBzZWxmLnByb2JlOwotICAgIGlmIChzZWxmLmpzb25w
KQotICAgICAgICBuZXQuanNvbnAgPSBzZWxmLmpzb25wOwotICAgIGlmIChzZWxmLmdldCkKLSAg
ICAgICAgbmV0LmdldCA9IHNlbGYuZ2V0OwotICAgIGlmIChzZWxmLnBvc3QpCi0gICAgICAgIG5l
dC5wb3N0ID0gc2VsZi5wb3N0OwotICAgIGlmIChzZWxmLmFqYXgpCi0gICAgICAgIG5ldC5hamF4
ID0gc2VsZi5hamF4OwotCi0gICAgdGVzdENhc2UoKTsKLQotICAgIHdoaWxlICh0aGlzLl9wZW5k
aW5nQ2FsbGJhY2tzLmxlbmd0aCkgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9wZW5k
aW5nQ2FsbGJhY2tzLnNoaWZ0KCk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotCi0gICAg
d2luZG93Lm5ldCA9IHJlYWxOZXQ7Ci0gICAgZXF1YWwod2luZG93Lm5ldCwgcmVhbE5ldCwgIkZh
aWxlZCB0byByZXN0b3JlIHJlYWwgYmFzZSEiKTsKLX07Ci0KLShmdW5jdGlvbiAoKSB7Ci0KLW1v
ZHVsZSgibmV0Iik7Ci0KLS8vIE5vIHVuaXQgdGVzdHMgeWV0IQotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvcGl4ZWx6b29tZXIuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvcGl4ZWx6b29tZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3BpeGVsem9vbWVyLmpzCShub25leGlzdGVudCkKQEAgLTEs
MTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gcGl4ZWx6b29tZXIgaXMgc2hhcmVkIHdpdGgg
TGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbAotLy8gVW5mb3J0dWFudGVseSwg
dGhlcmUncyBubyBnb29kIHdheSB0byBzaGFyZSBjb2RlIGJldHdlZW4gdGhlc2UgdHdvIHVzZXMu
Ci0KLXZhciBwaXhlbHpvb21lciA9IHBpeGVsem9vbWVyIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7
Ci0KLXZhciBrWm9vbUZhY3RvciA9IDY7Ci12YXIga0RlbGF5VGltZW91dE1TID0gNDAwOwotCi12
YXIga1Jlc3VsdFdpZHRoID0gODAwOwotdmFyIGtSZXN1bHRIZWlnaHQgPSA2MDA7Ci0KLXZhciBr
Wm9vbWVkUmVzdWx0V2lkdGggPSBrUmVzdWx0V2lkdGggKiBrWm9vbUZhY3RvcjsKLXZhciBrWm9v
bWVkUmVzdWx0SGVpZ2h0ID0ga1Jlc3VsdEhlaWdodCAqIGtab29tRmFjdG9yOwotCi1mdW5jdGlv
biBtYXRjaGVzU2VsZWN0b3Iobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgaWYgKG5vZGUud2Via2l0
TWF0Y2hlc1NlbGVjdG9yKQotICAgICAgICByZXR1cm4gbm9kZS53ZWJraXRNYXRjaGVzU2VsZWN0
b3Ioc2VsZWN0b3IpOwotCi0gICAgaWYgKG5vZGUubW96TWF0Y2hlc1NlbGVjdG9yKQotICAgICAg
ICByZXR1cm4gbm9kZS5tb3pNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwotfQotCi1mdW5jdGlv
biBwYXJlbnRPZlR5cGUobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgd2hpbGUgKG5vZGUgPSBub2Rl
LnBhcmVudE5vZGUpIHsKLSAgICAgICAgaWYgKG1hdGNoZXNTZWxlY3Rvcihub2RlLCBzZWxlY3Rv
cikpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19
Ci0KLWZ1bmN0aW9uIHpvb21JbWFnZUNvbnRhaW5lcih1cmwpCi17Ci0gICAgdmFyIGNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRhaW5lci5jbGFzc05h
bWUgPSAnem9vbS1pbWFnZS1jb250YWluZXInOwotCi0gICAgdmFyIHRpdGxlID0gdXJsLm1hdGNo
KC9cLShbXlwtXSopXC5wbmcvKVsxXTsKLSAgICAKLSAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBsYWJlbC5jbGFzc05hbWUgPSAnbGFiZWwnOwotICAg
IGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7Ci0gICAg
Y29udGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKLQotICAgIHZhciBpbWFnZUNvbnRhaW5lciA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGltYWdlQ29udGFpbmVyLmNsYXNz
TmFtZSA9ICdzY2FsZWQtaW1hZ2UtY29udGFpbmVyJzsKLQotICAgIHZhciBpbWFnZSA9IG5ldyBJ
bWFnZSgpOwotICAgIGltYWdlLnNyYyA9IHVybDsKLSAgICBpbWFnZS5zdHlsZS53aWR0aCA9IGta
b29tZWRSZXN1bHRXaWR0aCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuaGVpZ2h0ID0ga1pvb21l
ZFJlc3VsdEhlaWdodCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xp
ZCBibGFjayc7Ci0gICAgaW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2UpOwotICAgIGNv
bnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZUNvbnRhaW5lcik7Ci0KLSAgICByZXR1cm4gY29udGFp
bmVyOwotfQotCi1mdW5jdGlvbiBjcmVhdGVDb250YWluZXIoZSkKLXsKLSAgICB2YXIgdGJvZHkg
PSBwYXJlbnRPZlR5cGUoZS50YXJnZXQsICd0Ym9keScpOwotICAgIHZhciByb3cgPSB0Ym9keS5x
dWVyeVNlbGVjdG9yKCd0cicpOwotICAgIHZhciBpbWFnZXMgPSByb3cucXVlcnlTZWxlY3RvckFs
bCgnaW1nW3NyYyQ9Ii5wbmciXScpOwotCi0gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAncGl4ZWwtem9v
bS1jb250YWluZXInOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3RoOyBp
KyspCi0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh6b29tSW1hZ2VDb250YWluZXIoaW1h
Z2VzW2ldLnNyYykpOwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIp
OwotICAgIGRyYXdBbGwoKTsKLX0KLQotZnVuY3Rpb24gZHJhdyhpbWFnZUNvbnRhaW5lcikKLXsK
LSAgICB2YXIgaW1hZ2UgPSBpbWFnZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbWcnKTsKLSAg
ICB2YXIgY29udGFpbmVyQm91bmRzID0gaW1hZ2VDb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7Ci0gICAgaW1hZ2Uuc3R5bGUubGVmdCA9IChjb250YWluZXJCb3VuZHMud2lkdGggLyAy
IC0gcGl4ZWx6b29tZXIuX3BlcmNlbnRYICoga1pvb21lZFJlc3VsdFdpZHRoKSArICdweCc7Ci0g
ICAgaW1hZ2Uuc3R5bGUudG9wID0gKGNvbnRhaW5lckJvdW5kcy5oZWlnaHQgLyAyIC0gcGl4ZWx6
b29tZXIuX3BlcmNlbnRZICoga1pvb21lZFJlc3VsdEhlaWdodCkgKyAncHgnOwotfQotCi1mdW5j
dGlvbiBkcmF3QWxsKCkKLXsKLSAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXhlbC16b29tLWNvbnRhaW5lciAuc2NhbGVkLWltYWdl
LWNvbnRhaW5lcicpLCBkcmF3KTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlTW91c2VPdXQoZSkKLXsK
LSAgICBpZiAoZS5yZWxhdGVkVGFyZ2V0ICYmIGUucmVsYXRlZFRhcmdldC50YWdOYW1lICE9ICdJ
RlJBTUUnKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBlLnJlbGF0ZWRUYXJnZXQgaXMg
bnVsbCwgd2UndmUgbW91c2VkIG91dCBvZiB0aGUgZG9jdW1lbnQuCi0gICAgJCgncGl4ZWwtem9v
bS1jb250YWluZXInKS5kZXRhY2goKTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlTW91c2VNb3ZlKGUp
Ci17Ci0gICAgaWYgKHBpeGVsem9vbWVyLl9tb3VzZU1vdmVUaW1lb3V0KQotICAgICAgICBjbGVh
clRpbWVvdXQocGl4ZWx6b29tZXIuX21vdXNlTW92ZVRpbWVvdXQpOwotCi0gICAgaWYgKHBhcmVu
dE9mVHlwZShlLnRhcmdldCwgJy5waXhlbC16b29tLWNvbnRhaW5lcicpKQotICAgICAgICByZXR1
cm47Ci0KLSAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpeGVs
LXpvb20tY29udGFpbmVyJyk7Ci0KLSAgICB2YXIgcmVzdWx0Q29udGFpbmVyID0gKGUudGFyZ2V0
LmNsYXNzTmFtZSA9PSAncmVzdWx0LWNvbnRhaW5lcicpID8KLSAgICAgICAgZS50YXJnZXQgOiBw
YXJlbnRPZlR5cGUoZS50YXJnZXQsICcucmVzdWx0LWNvbnRhaW5lcicpOwotICAgIGlmICghcmVz
dWx0Q29udGFpbmVyIHx8ICFyZXN1bHRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJykpIHsK
LSAgICAgICAgJChjb250YWluZXIpLmRldGFjaCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdmFyIHRhcmdldExvY2F0aW9uID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCk7Ci0gICAgcGl4ZWx6b29tZXIuX3BlcmNlbnRYID0gKGUuY2xpZW50WCAtIHRhcmdldExvY2F0
aW9uLmxlZnQpIC8gdGFyZ2V0TG9jYXRpb24ud2lkdGg7Ci0gICAgcGl4ZWx6b29tZXIuX3BlcmNl
bnRZID0gKGUuY2xpZW50WSAtIHRhcmdldExvY2F0aW9uLnRvcCkgLyB0YXJnZXRMb2NhdGlvbi5o
ZWlnaHQ7Ci0KLSAgICBpZiAoIWNvbnRhaW5lcikgewotICAgICAgICBpZiAocGl4ZWx6b29tZXIu
c2hvd09uRGVsYXkpIHsKLSAgICAgICAgICAgIHBpeGVsem9vbWVyLl9tb3VzZU1vdmVUaW1lb3V0
ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVDb250YWlu
ZXIoZSk7Ci0gICAgICAgICAgICB9LCBrRGVsYXlUaW1lb3V0TVMpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY3JlYXRlQ29udGFpbmVyKGUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd0FsbCgpOwotfQotCi1waXhlbHpvb21lci5zaG93T25E
ZWxheSA9IHRydWU7Ci0KLXBpeGVsem9vbWVyLmluc3RhbGxFdmVudExpc3RlbmVycyA9IGZ1bmN0
aW9uKCkKLXsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBoYW5k
bGVNb3VzZU1vdmUsIGZhbHNlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3Vz
ZW91dCcsIGhhbmRsZU1vdXNlT3V0LCBmYWxzZSk7Ci19OwotCi19KSgpOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9yZXN1bHRzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9yZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsNjc5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotdmFyIHJlc3VsdHMgPSByZXN1bHRzIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7
Ci0KLXZhciBrUmVzdWx0c05hbWUgPSAnZnVsbF9yZXN1bHRzLmpzb24nOwotCi12YXIga0J1aWxk
TGlua1JlZ2V4cCA9IC9hIGhyZWY9IlxkK1wvIi9nOwotdmFyIGtCdWlsZE51bWJlclJlZ2V4cCA9
IC9cZCsvOwotCi12YXIgUEFTUyA9ICdQQVNTJzsKLXZhciBUSU1FT1VUID0gJ1RJTUVPVVQnOwot
dmFyIFRFWFQgPSAnVEVYVCc7Ci12YXIgQ1JBU0ggPSAnQ1JBU0gnOwotdmFyIElNQUdFID0gJ0lN
QUdFJzsKLXZhciBJTUFHRV9URVhUID0gJ0lNQUdFK1RFWFQnOwotdmFyIEFVRElPID0gJ0FVRElP
JzsKLXZhciBNSVNTSU5HID0gJ01JU1NJTkcnOwotCi12YXIga0ZhaWxpbmdSZXN1bHRzID0gW1RF
WFQsIElNQUdFX1RFWFQsIEFVRElPXTsKLQotdmFyIGtFeHBlY3RlZEltYWdlU3VmZml4ID0gJy1l
eHBlY3RlZC5wbmcnOwotdmFyIGtBY3R1YWxJbWFnZVN1ZmZpeCA9ICctYWN0dWFsLnBuZyc7Ci12
YXIga0ltYWdlRGlmZlN1ZmZpeCA9ICctZGlmZi5wbmcnOwotdmFyIGtFeHBlY3RlZEF1ZGlvU3Vm
Zml4ID0gJy1leHBlY3RlZC53YXYnOwotdmFyIGtBY3R1YWxBdWRpb1N1ZmZpeCA9ICctYWN0dWFs
Lndhdic7Ci12YXIga0V4cGVjdGVkVGV4dFN1ZmZpeCA9ICctZXhwZWN0ZWQudHh0JzsKLXZhciBr
QWN0dWFsVGV4dFN1ZmZpeCA9ICctYWN0dWFsLnR4dCc7Ci12YXIga0RpZmZUZXh0U3VmZml4ID0g
Jy1kaWZmLnR4dCc7Ci12YXIga0NyYXNoTG9nU3VmZml4ID0gJy1jcmFzaC1sb2cudHh0JzsKLQot
dmFyIGtQTkdFeHRlbnNpb24gPSAncG5nJzsKLXZhciBrVFhURXh0ZW5zaW9uID0gJ3R4dCc7Ci12
YXIga1dBVkV4dGVuc2lvbiA9ICd3YXYnOwotCi12YXIga1ByZWZlcnJlZFN1ZmZpeE9yZGVyID0g
WwotICAgIGtFeHBlY3RlZEltYWdlU3VmZml4LAotICAgIGtBY3R1YWxJbWFnZVN1ZmZpeCwKLSAg
ICBrSW1hZ2VEaWZmU3VmZml4LAotICAgIGtFeHBlY3RlZFRleHRTdWZmaXgsCi0gICAga0FjdHVh
bFRleHRTdWZmaXgsCi0gICAga0RpZmZUZXh0U3VmZml4LAotICAgIGtDcmFzaExvZ1N1ZmZpeCwK
LSAgICBrRXhwZWN0ZWRBdWRpb1N1ZmZpeCwKLSAgICBrQWN0dWFsQXVkaW9TdWZmaXgsCi0gICAg
Ly8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0IHR5cGVzLgot
XTsKLQotLy8gS2luZHMgb2YgcmVzdWx0cy4KLXJlc3VsdHMua0FjdHVhbEtpbmQgPSAnYWN0dWFs
JzsKLXJlc3VsdHMua0V4cGVjdGVkS2luZCA9ICdleHBlY3RlZCc7Ci1yZXN1bHRzLmtEaWZmS2lu
ZCA9ICdkaWZmJzsKLXJlc3VsdHMua1Vua25vd25LaW5kID0gJ3Vua25vd24nOwotCi0vLyBUeXBl
cyBvZiB0ZXN0cy4KLXJlc3VsdHMua0ltYWdlVHlwZSA9ICdpbWFnZScKLXJlc3VsdHMua0F1ZGlv
VHlwZSA9ICdhdWRpbycKLXJlc3VsdHMua1RleHRUeXBlID0gJ3RleHQnCi0vLyBGSVhNRTogVGhl
cmUgYXJlIG1vcmUgdHlwZXMgb2YgdGVzdHMuCi0KLWZ1bmN0aW9uIGxheW91dFRlc3RSZXN1bHRz
VVJMKHBsYXRmb3JtKQotewotICAgIHJldHVybiBjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybV0u
bGF5b3V0VGVzdFJlc3VsdHNVUkw7Ci19Ci0KLWZ1bmN0aW9uIHBvc3NpYmxlU3VmZml4TGlzdEZv
cihmYWlsdXJlVHlwZUxpc3QpCi17Ci0gICAgdmFyIHN1ZmZpeExpc3QgPSBbXTsKLQotICAgIGZ1
bmN0aW9uIHB1c2hJbWFnZVN1ZmZpeGVzKCkKLSAgICB7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVz
aChrRXhwZWN0ZWRJbWFnZVN1ZmZpeCk7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrQWN0dWFs
SW1hZ2VTdWZmaXgpOwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0ltYWdlRGlmZlN1ZmZpeCk7
Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHVzaEF1ZGlvU3VmZml4ZXMoKQotICAgIHsKLSAgICAg
ICAgc3VmZml4TGlzdC5wdXNoKGtFeHBlY3RlZEF1ZGlvU3VmZml4KTsKLSAgICAgICAgc3VmZml4
TGlzdC5wdXNoKGtBY3R1YWxBdWRpb1N1ZmZpeCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHVz
aFRleHRTdWZmaXhlcygpCi0gICAgewotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0FjdHVhbFRl
eHRTdWZmaXgpOwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0V4cGVjdGVkVGV4dFN1ZmZpeCk7
Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrRGlmZlRleHRTdWZmaXgpOwotICAgICAgICAvLyAn
LXdkaWZmLmh0bWwnLAotICAgICAgICAvLyAnLXByZXR0eS1kaWZmLmh0bWwnLAotICAgIH0KLQot
ICAgICQuZWFjaChmYWlsdXJlVHlwZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBmYWlsdXJlVHlwZSkg
ewotICAgICAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICAgICAgY2FzZSBJTUFHRToKLSAg
ICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBURVhUOgotICAgICAgICAgICAgcHVzaFRleHRTdWZmaXhlcygpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQVVESU86Ci0gICAgICAgICAgICBwdXNoQXVkaW9TdWZm
aXhlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSU1BR0VfVEVYVDoKLSAg
ICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBwdXNoVGV4dFN1ZmZp
eGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDUkFTSDoKLSAgICAgICAg
ICAgIHN1ZmZpeExpc3QucHVzaChrQ3Jhc2hMb2dTdWZmaXgpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgTUlTU0lORzoKLSAgICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7
Ci0gICAgICAgICAgICBwdXNoVGV4dFN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgdGhl
IHJlc3Qgb2YgdGhlIHJlc3VsdCB0eXBlcy4KLSAgICAgICAgICAgIC8vICctZXhwZWN0ZWQuaHRt
bCcsCi0gICAgICAgICAgICAvLyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAotICAgICAgICAg
ICAgLy8gLi4uIGFuZCBwb3NzaWJseSBtb3JlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICB9KTsKLQotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJyYXkoc3VmZml4TGlzdCk7
Ci19Ci0KLXJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihmYWls
dXJlVHlwZSkKLXsKLSAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICBjYXNlIElNQUdFOgot
ICAgICAgICByZXR1cm4gW2tQTkdFeHRlbnNpb25dOwotICAgIGNhc2UgQVVESU86Ci0gICAgICAg
IHJldHVybiBba1dBVkV4dGVuc2lvbl07Ci0gICAgY2FzZSBURVhUOgotICAgICAgICByZXR1cm4g
W2tUWFRFeHRlbnNpb25dOwotICAgIGNhc2UgTUlTU0lORzoKLSAgICBjYXNlIElNQUdFX1RFWFQ6
Ci0gICAgICAgIHJldHVybiBba1RYVEV4dGVuc2lvbiwga1BOR0V4dGVuc2lvbl07Ci0gICAgZGVm
YXVsdDoKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUg
cmVzdWx0IHR5cGVzLgotICAgICAgICAvLyAnLWV4cGVjdGVkLmh0bWwnLAotICAgICAgICAvLyAn
LWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAotICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5IG1v
cmUuCi0gICAgICAgIHJldHVybiBbXTsKLSAgICB9Ci19OwotCi1yZXN1bHRzLmZhaWx1cmVUeXBl
TGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVCbG9iKQotewotICAgIHJldHVybiBmYWlsdXJlQmxvYi5z
cGxpdCgnICcpOwotfTsKLQotcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVy
ZVR5cGVMaXN0KQotewotICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Quc29tZShmdW5jdGlvbihl
bGVtZW50KSB7Ci0gICAgICAgIHJldHVybiByZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25M
aXN0KGVsZW1lbnQpLmxlbmd0aCA+IDA7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmRpcmVjdG9y
eUZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKLXsKLSAgICByZXR1cm4gY29uZmln
LmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0ucmVzdWx0c0RpcmVjdG9yeU5hbWVG
cm9tQnVpbGRlck5hbWUoYnVpbGRlck5hbWUpOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGlyZWN0
b3J5VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSkKLXsKLSAgICBpZiAoY29uZmlnLnVzZUxvY2Fs
UmVzdWx0cykKLSAgICAgICAgcmV0dXJuICcvbG9jYWxyZXN1bHQ/cGF0aD0nOwotICAgIHJldHVy
biByZXN1bHRzRGlyZWN0b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpICsgJ3Jl
c3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy8nOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGlyZWN0
b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGxheW91
dFRlc3RSZXN1bHRzVVJMKHBsYXRmb3JtKSArICcvJyArIHJlc3VsdHMuZGlyZWN0b3J5Rm9yQnVp
bGRlcihidWlsZGVyTmFtZSkgKyAnLyc7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNEaXJlY3RvcnlV
UkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZp
c2lvbikKLXsKLSAgICByZXR1cm4gcmVzdWx0c0RpcmVjdG9yeUxpc3RpbmdVUkwocGxhdGZvcm0s
IGJ1aWxkZXJOYW1lKSArIGNvbmZpZy5rUGxhdGZvcm1zW3BsYXRmb3JtXS5yZXN1bHRzRGlyZWN0
b3J5Rm9yQnVpbGROdW1iZXIoYnVpbGROdW1iZXIsIHJldmlzaW9uKSArICcvJzsKLX0KLQotZnVu
Y3Rpb24gcmVzdWx0c1N1bW1hcnlVUkwocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQotewotICAgIHJl
dHVybiByZXN1bHRzRGlyZWN0b3J5VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSkgKyBrUmVzdWx0
c05hbWU7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIocGxh
dGZvcm0sIGJ1aWxkZXJOYW1lLCBidWlsZE51bWJlciwgcmV2aXNpb24pCi17Ci0gICAgcmV0dXJu
IHJlc3VsdHNEaXJlY3RvcnlVUkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUs
IGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgKyBrUmVzdWx0c05hbWU7Ci19Ci0KLXZhciBnX3Jlc3Vs
dHNDYWNoZSA9IG5ldyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uIChrZXksIGNhbGxi
YWNrKSB7Ci0gICAgbmV0Lmpzb25wKGtleSwgY2FsbGJhY2spOwotfSk7Ci0KLXJlc3VsdHMuUmVz
dWx0QW5hbHl6ZXIgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
cmVzdWx0Tm9kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FjdHVhbCA9IHJlc3VsdE5vZGUgPyBy
ZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCkgOiBbXTsKLSAgICAgICAg
dGhpcy5fZXhwZWN0ZWQgPSByZXN1bHROb2RlID8gdGhpcy5fYWRkSW1wbGllZEV4cGVjdGF0aW9u
cyhyZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmV4cGVjdGVkKSkgOiBbXTsKLSAg
ICAgICAgdGhpcy5fd29udGZpeCA9IHJlc3VsdE5vZGUgPyByZXN1bHROb2RlLndvbnRmaXggOiBm
YWxzZTsKLSAgICB9LAotICAgIF9hZGRJbXBsaWVkRXhwZWN0YXRpb25zOiBmdW5jdGlvbihyZXN1
bHRzTGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHRzTGlzdC5pbmRleE9mKCdGQUlMJykg
PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0c0xpc3Q7Ci0gICAgICAgIHJldHVybiBy
ZXN1bHRzTGlzdC5jb25jYXQoa0ZhaWxpbmdSZXN1bHRzKTsKLSAgICB9LAotICAgIF9oYXNQYXNz
OiBmdW5jdGlvbihyZXN1bHRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMuaW5kZXhP
ZihQQVNTKSAhPSAtMTsKLSAgICB9LAotICAgIHVuZXhwZWN0ZWRSZXN1bHRzOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmZpbHRlcihmdW5jdGlvbihyZXN1
bHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9leHBlY3RlZC5pbmRleE9mKHJlc3VsdCkg
PT0gLTE7Ci0gICAgICAgIH0sIHRoaXMpOwotICAgIH0sCi0gICAgc3VjY2VlZGVkOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faGFzUGFzcyh0aGlzLl9hY3R1YWwpOwot
ICAgIH0sCi0gICAgZXhwZWN0ZWRUb1N1Y2NlZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9oYXNQYXNzKHRoaXMuX2V4cGVjdGVkKTsKLSAgICB9LAotICAgIGZsYWt5
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmxlbmd0aCA+
IDE7Ci0gICAgfSwKLSAgICB3b250Zml4OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fd29udGZpeDsKLSAgICB9LAotICAgIGhhc1VuZXhwZWN0ZWRGYWlsdXJlczogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSB7fTsKLSAgICAgICAgdGhp
cy5fYWN0dWFsLmZvckVhY2goZnVuY3Rpb24oYWN0dWFsKSB7Ci0gICAgICAgICAgICBkaWZmZXJl
bmNlW2FjdHVhbF0gPSBhY3R1YWwgIT09IFBBU1M7Ci0gICAgICAgIH0pOwotICAgICAgICB0aGlz
Ll9leHBlY3RlZC5mb3JFYWNoKGZ1bmN0aW9uKGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICBpZiAo
ZXhwZWN0ZWQgIT09IFBBU1MpCi0gICAgICAgICAgICAgICAgZGVsZXRlIGRpZmZlcmVuY2VbZXhw
ZWN0ZWRdOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRpZmZlcmVu
Y2UpLnNvbWUoZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4gZGlmZmVyZW5jZVtr
ZXldOwotICAgICAgICB9KTsKLSAgICB9Ci19KQotCi1mdW5jdGlvbiBpc0V4cGVjdGVkRmFpbHVy
ZShyZXN1bHROb2RlKQotewotICAgIHZhciBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFu
YWx5emVyKHJlc3VsdE5vZGUpOwotICAgIHJldHVybiAhYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZh
aWx1cmVzKCkgJiYgIWFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpICYm
ICFhbmFseXplci53b250Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzVW5leHBlY3RlZEZhaWx1cmUo
cmVzdWx0Tm9kZSkKLXsKLSAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFs
eXplcihyZXN1bHROb2RlKTsKLSAgICByZXR1cm4gYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1
cmVzKCkgJiYgIWFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpICYmICFh
bmFseXplci53b250Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzUmVzdWx0Tm9kZShub2RlKQotewot
ICAgIHJldHVybiAhIW5vZGUuYWN0dWFsOwotfQotCi1yZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXMg
PSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKLXsKLSAgICByZXR1cm4gYmFzZS5maWx0ZXJUcmVlKHJl
c3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUsIGlzRXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0K
LXJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24ocmVzdWx0c1RyZWUpCi17Ci0g
ICAgcmV0dXJuIGJhc2UuZmlsdGVyVHJlZShyZXN1bHRzVHJlZS50ZXN0cywgaXNSZXN1bHROb2Rl
LCBpc1VuZXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0KLXJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nl
cyA9IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKQotewotICAgIHJldHVybiBiYXNlLmZpbHRlclRyZWUo
cmVzdWx0c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgZnVuY3Rpb24ocmVzdWx0Tm9kZSkgewot
ICAgICAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHRO
b2RlKTsKLSAgICAgICAgcmV0dXJuICFhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpICYmIGFu
YWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpOwotICAgIH0pOwotfTsKLQot
ZnVuY3Rpb24gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCBmaWx0ZXIpCi17Ci0gICAg
dmFyIHJlc3VsdHNCeVRlc3QgPSB7fTsKLQotICAgICQuZWFjaChyZXN1bHRzQnlCdWlsZGVyLCBm
dW5jdGlvbihidWlsZGVyTmFtZSwgcmVzdWx0c1RyZWUpIHsKLSAgICAgICAgJC5lYWNoKGZpbHRl
cihyZXN1bHRzVHJlZSksIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2RlKSB7Ci0gICAgICAg
ICAgICByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXSA9IHJlc3VsdHNCeVRlc3RbdGVzdE5hbWVdIHx8
IHt9OwotICAgICAgICAgICAgaWYgKCFjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBs
YXRmb3JtXS5oYXZlQnVpbGRlckFjY3VtdWxhdGVkUmVzdWx0cykKLSAgICAgICAgICAgICAgICBy
ZXN1bHROb2RlLl9idWlsZExvY2F0aW9uID0gcmVzdWx0c1RyZWUuX2J1aWxkTG9jYXRpb247Ci0g
ICAgICAgICAgICByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0gPSByZXN1bHRO
b2RlOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIHJldHVybiByZXN1bHRzQnlUZXN0Owot
fQotCi1yZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRzQnlC
dWlsZGVyKQotewotICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIsIHJl
c3VsdHMuZXhwZWN0ZWRGYWlsdXJlcyk7Ci19OwotCi1yZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJl
c0J5VGVzdCA9IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCi17Ci0gICAgcmV0dXJuIHJlc3Vs
dHNCeVRlc3QocmVzdWx0c0J5QnVpbGRlciwgcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXMpOwot
fTsKLQotcmVzdWx0cy51bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0ID0gZnVuY3Rpb24ocmVzdWx0
c0J5QnVpbGRlcikKLXsKLSAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVy
LCByZXN1bHRzLnVuZXhwZWN0ZWRTdWNjZXNzZXMpOwotfTsKLQotcmVzdWx0cy5mYWlsdXJlSW5m
b0ZvclRlc3RBbmRCdWlsZGVyID0gZnVuY3Rpb24ocmVzdWx0c0J5VGVzdCwgdGVzdE5hbWUsIGJ1
aWxkZXJOYW1lKQotewotICAgIHZhciBmYWlsdXJlSW5mb0ZvclRlc3QgPSB7Ci0gICAgICAgICd0
ZXN0TmFtZSc6IHRlc3ROYW1lLAotICAgICAgICAnYnVpbGRlck5hbWUnOiBidWlsZGVyTmFtZSwK
LSAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJlc3Vs
dHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXS5hY3R1YWwpLAotICAgIH07Ci0gICAgCi0g
ICAgaWYgKCFjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5oYXZlQnVp
bGRlckFjY3VtdWxhdGVkUmVzdWx0cykKLSAgICAgICAgZmFpbHVyZUluZm9Gb3JUZXN0LmJ1aWxk
TG9jYXRpb24gPSByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0uX2J1aWxkTG9j
YXRpb247Ci0gICAgCi0gICAgcmV0dXJuIGZhaWx1cmVJbmZvRm9yVGVzdDsKLX07Ci0KLXJlc3Vs
dHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzID0gZnVuY3Rpb24oZGljdGlvbmFyeU9mUmVzdWx0
Tm9kZXMpCi17Ci0gICAgdmFyIGNvbGxlY3RlZFJlc3VsdHMgPSBbXTsKLSAgICAkLmVhY2goZGlj
dGlvbmFyeU9mUmVzdWx0Tm9kZXMsIGZ1bmN0aW9uKGtleSwgcmVzdWx0Tm9kZSkgewotICAgICAg
ICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHROb2RlKTsK
LSAgICAgICAgY29sbGVjdGVkUmVzdWx0cyA9IGNvbGxlY3RlZFJlc3VsdHMuY29uY2F0KGFuYWx5
emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCkpOwotICAgIH0pOwotICAgIHJldHVybiBiYXNlLnVuaXF1
aWZ5QXJyYXkoY29sbGVjdGVkUmVzdWx0cyk7Ci19OwotCi0vLyBDYWxsYmFjayBkYXRhIGlzIFt7
IGJ1aWxkTnVtYmVyOiwgcmV2aXNpb246LCB1cmw6IH1dCi1mdW5jdGlvbiBoaXN0b3JpY2FsUmVz
dWx0c0xvY2F0aW9ucyhwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGNhbGxiYWNrKQotewotICAgIGlm
IChjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybV0udXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9sZEJ1
aWxkcykgewotICAgICAgICB2YXIgbGlzdGluZ1VSTCA9IHJlc3VsdHNEaXJlY3RvcnlMaXN0aW5n
VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSk7Ci0gICAgICAgIG5ldC5nZXQobGlzdGluZ1VSTCwg
ZnVuY3Rpb24oZGlyZWN0b3J5TGlzdGluZykgewotICAgICAgICAgICAgdmFyIGhpc3RvcmljYWxS
ZXN1bHRzRGF0YSA9IGRpcmVjdG9yeUxpc3RpbmcubWF0Y2goa0J1aWxkTGlua1JlZ2V4cCkubWFw
KGZ1bmN0aW9uKGJ1aWxkTGluaykgewotICAgICAgICAgICAgICAgIHZhciBidWlsZE51bWJlciA9
IHBhcnNlSW50KGJ1aWxkTGluay5tYXRjaChrQnVpbGROdW1iZXJSZWdleHApWzBdKTsKLSAgICAg
ICAgICAgICAgICB2YXIgcmV2aXNpb24gPSAwOyAvLyB1bnVzZWQgZm9yIENocm9taXVtLgotICAg
ICAgICAgICAgICAgIHZhciByZXN1bHRzRGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAgJ2J1
aWxkTnVtYmVyJzogYnVpbGROdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICdyZXZpc2lvbic6
IHJldmlzaW9uLAotICAgICAgICAgICAgICAgICAgICAndXJsJzogcmVzdWx0c1N1bW1hcnlVUkxG
b3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lv
bikKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzRGF0
YTsKLSAgICAgICAgICAgIH0pLnJldmVyc2UoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAg
Y2FsbGJhY2soaGlzdG9yaWNhbFJlc3VsdHNEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgdmFyIGhpc3RvcmljYWxSZXN1bHRzRGF0YSA9IFtdOwotICAgICAgICBidWls
ZGVycy5jYWNoZWRCdWlsZEluZm9zKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24oY2Fj
aGVkQnVpbGRJbmZvcykgewotICAgICAgICAgICAgJC5lYWNoKGNhY2hlZEJ1aWxkSW5mb3MsIGZ1
bmN0aW9uKGJ1aWxkTnVtYmVyLCBidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAgICB2YXIgcmVz
dWx0c0RhdGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgICdidWlsZE51bWJlcic6IGJ1aWxkTnVt
YmVyLAotICAgICAgICAgICAgICAgICAgICAncmV2aXNpb24nOiBidWlsZEluZm8uc291cmNlU3Rh
bXAucmV2aXNpb24sCi0gICAgICAgICAgICAgICAgICAgICd1cmwnOiByZXN1bHRzU3VtbWFyeVVS
TEZvckJ1aWxkTnVtYmVyKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgYnVpbGROdW1iZXIsIGJ1aWxk
SW5mby5zb3VyY2VTdGFtcC5yZXZpc2lvbiksCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGhpc3RvcmljYWxSZXN1bHRzRGF0YS5wdXNoKHJlc3VsdHNEYXRhKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFjayhoaXN0b3JpY2FsUmVz
dWx0c0RhdGEucmV2ZXJzZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB3
YWxrSGlzdG9yeShwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsK
LSAgICB2YXIgaW5kZXhPZk5leHRLZXlUb0ZldGNoID0gMDsKLSAgICB2YXIga2V5TGlzdCA9IFtd
OwotCi0gICAgZnVuY3Rpb24gY29udGludWVXYWxrKCkKLSAgICB7Ci0gICAgICAgIGlmIChpbmRl
eE9mTmV4dEtleVRvRmV0Y2ggPj0ga2V5TGlzdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHByb2Nl
c3NSZXN1bHROb2RlKDAsIG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHJlc3VsdHNVUkwgPSBrZXlMaXN0W2luZGV4T2ZOZXh0S2V5VG9GZXRjaF0u
dXJsOwotICAgICAgICArK2luZGV4T2ZOZXh0S2V5VG9GZXRjaDsKLSAgICAgICAgZ19yZXN1bHRz
Q2FjaGUuZ2V0KHJlc3VsdHNVUkwsIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgICAg
ICBpZiAoJC5pc0VtcHR5T2JqZWN0KHJlc3VsdHNUcmVlKSkgewotICAgICAgICAgICAgICAgIGNv
bnRpbnVlV2FsaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIHZhciByZXN1bHROb2RlID0gcmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdChyZXN1
bHRzVHJlZSwgdGVzdE5hbWUpOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gcGFyc2VJbnQo
cmVzdWx0c1RyZWVbJ3JldmlzaW9uJ10pCi0gICAgICAgICAgICBpZiAoaXNOYU4ocmV2aXNpb24p
KQotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gMDsKLSAgICAgICAgICAgIHByb2Nlc3NSZXN1
bHROb2RlKHJldmlzaW9uLCByZXN1bHROb2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAg
ZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdE5vZGUocmV2aXNpb24sIHJlc3VsdE5vZGUpCi0gICAgewot
ICAgICAgICB2YXIgc2hvdWxkQ29udGludWUgPSBjYWxsYmFjayhyZXZpc2lvbiwgcmVzdWx0Tm9k
ZSk7Ci0gICAgICAgIGlmICghc2hvdWxkQ29udGludWUpCi0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIGNvbnRpbnVlV2FsaygpOwotICAgIH0KLQotICAgIGhpc3RvcmljYWxSZXN1bHRzTG9j
YXRpb25zKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24ocmVzdWx0c0xvY2F0aW9ucykg
ewotICAgICAgICBrZXlMaXN0ID0gcmVzdWx0c0xvY2F0aW9uczsKLSAgICAgICAgY29udGludWVX
YWxrKCk7Ci0gICAgfSk7Ci19Ci0KLXJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSA9
IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIG9s
ZGVzdEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgdmFyIG5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9
IDA7Ci0KLSAgICAvLyBGSVhNRTogc2hvdWxkIHRyZWF0IHtwbGF0Zm9ybSwgYnVpbGRlck5hbWV9
IGFzIGEgdHVwbGUKLSAgICB3YWxrSGlzdG9yeShjb25maWcuY3VycmVudFBsYXRmb3JtLCBidWls
ZGVyTmFtZSwgdGVzdE5hbWUsIGZ1bmN0aW9uKHJldmlzaW9uLCByZXN1bHROb2RlKSB7Ci0gICAg
ICAgIGlmICghcmV2aXNpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKG9sZGVzdEZhaWxpbmdS
ZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3VsdE5vZGUpIHsKLSAgICAgICAgICAgIG5l
d2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAgICAgY2FsbGJhY2sob2xk
ZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJl
KHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAgICBvbGRlc3RGYWlsaW5nUmV2aXNpb24gPSByZXZp
c2lvbjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlmICgh
b2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBXZSBu
ZWVkIHRvIGtlZXAgbG9va2luZyBmb3IgYSBmYWlsaW5nIHJldmlzaW9uLgotICAgICAgICBuZXdl
c3RQYXNzaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKLSAgICAgICAgY2FsbGJhY2sob2xkZXN0RmFp
bGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgfSk7Ci19OwotCi1mdW5jdGlvbiBtZXJnZVJlZ3Jlc3Npb25SYW5nZXMocmVncmVz
c2lvblJhbmdlcykKLXsKLSAgICB2YXIgbWVyZ2VkUmFuZ2UgPSB7fTsKLQotICAgIG1lcmdlZFJh
bmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgbWVyZ2VkUmFuZ2UubmV3ZXN0UGFz
c2luZ1JldmlzaW9uID0gMDsKLQotICAgICQuZWFjaChyZWdyZXNzaW9uUmFuZ2VzLCBmdW5jdGlv
bihidWlsZGVyTmFtZSwgcmFuZ2UpIHsKLSAgICAgICAgaWYgKCFyYW5nZS5vbGRlc3RGYWlsaW5n
UmV2aXNpb24gJiYgIXJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIHJl
dHVybgotCi0gICAgICAgIGlmICghbWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uKQot
ICAgICAgICAgICAgbWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uID0gcmFuZ2Uub2xk
ZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICBpZiAoIW1lcmdlZFJhbmdlLm5ld2VzdFBhc3Np
bmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lv
biA9IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLQotICAgICAgICBpZiAocmFuZ2Uub2xk
ZXN0RmFpbGluZ1JldmlzaW9uICYmIHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA8IG1lcmdl
ZFJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm9s
ZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKLSAgICAg
ICAgaWYgKHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA+IG1lcmdlZFJhbmdlLm5ld2VzdFBh
c3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZp
c2lvbiA9IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLSAgICB9KTsKLQotICAgIHJldHVy
biBtZXJnZWRSYW5nZTsKLX0KLQotcmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMgPSBmdW5j
dGlvbihidWlsZGVyTmFtZUxpc3QsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVn
cmVzc2lvblJhbmdlcyA9IHt9OwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1ZXN0
VHJhY2tlcihidWlsZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFy
IG1lcmdlZFJhbmdlID0gbWVyZ2VSZWdyZXNzaW9uUmFuZ2VzKHJlZ3Jlc3Npb25SYW5nZXMpOwot
ICAgICAgICBjYWxsYmFjayhtZXJnZWRSYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24sIG1lcmdl
ZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbik7Ci0gICAgfSk7Ci0KLSAgICAkLmVhY2goYnVp
bGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKLSAgICAgICAgcmVz
dWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgZnVu
Y3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAg
ICAgICAgICAgIHZhciByYW5nZSA9IHt9OwotICAgICAgICAgICAgcmFuZ2Uub2xkZXN0RmFpbGlu
Z1JldmlzaW9uID0gb2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICAgICAgcmFuZ2UubmV3
ZXN0UGFzc2luZ1JldmlzaW9uID0gbmV3ZXN0UGFzc2luZ1JldmlzaW9uOwotICAgICAgICAgICAg
cmVncmVzc2lvblJhbmdlc1tidWlsZGVyTmFtZV0gPSByYW5nZTsKLSAgICAgICAgICAgIHRyYWNr
ZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotcmVzdWx0
cy5jb3VudEZhaWx1cmVPY2N1cmVuY2VzID0gZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0LCB0ZXN0
TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGZhaWx1cmVDb3VudCA9IDA7Ci0KLSAgICB2YXIg
dHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKGJ1aWxkZXJOYW1lTGlzdC5sZW5ndGgs
IGZ1bmN0aW9uKCkgewotICAgICAgICBjYWxsYmFjayhmYWlsdXJlQ291bnQpOwotICAgIH0pOwot
Ci0gICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1l
KSB7Ci0gICAgICAgIHdhbGtIaXN0b3J5KGNvbmZpZy5jdXJyZW50UGxhdGZvcm0sIGJ1aWxkZXJO
YW1lLCB0ZXN0TmFtZSwgZnVuY3Rpb24ocmV2aXNpb24sIHJlc3VsdE5vZGUpIHsKLSAgICAgICAg
ICAgIGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAgICAg
ICAgKytmYWlsdXJlQ291bnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9KTsKLSAgICB9KTsKLX07Ci0KLXJlc3VsdHMucmVz
dWx0Tm9kZUZvclRlc3QgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSwgdGVzdE5hbWUpCi17Ci0gICAg
dmFyIHRlc3ROYW1lUGF0aCA9IHRlc3ROYW1lLnNwbGl0KCcvJyk7Ci0gICAgdmFyIGN1cnJlbnRO
b2RlID0gcmVzdWx0c1RyZWVbJ3Rlc3RzJ107Ci0gICAgJC5lYWNoKHRlc3ROYW1lUGF0aCwgZnVu
Y3Rpb24oaW5kZXgsIHNlZ21lbnROYW1lKSB7Ci0gICAgICAgIGlmICghY3VycmVudE5vZGUpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGN1cnJlbnROb2RlID0gKHNlZ21lbnROYW1lIGlu
IGN1cnJlbnROb2RlKSA/IGN1cnJlbnROb2RlW3NlZ21lbnROYW1lXSA6IG51bGw7Ci0gICAgfSk7
Ci0gICAgcmV0dXJuIGN1cnJlbnROb2RlOwotfTsKLQotcmVzdWx0cy5yZXN1bHRLaW5kID0gZnVu
Y3Rpb24odXJsKQotewotICAgIGlmICgvLWFjdHVhbFwuW2Etel0rJC8udGVzdCh1cmwpKQotICAg
ICAgICByZXR1cm4gcmVzdWx0cy5rQWN0dWFsS2luZDsKLSAgICBlbHNlIGlmICgvLWV4cGVjdGVk
XC5bYS16XSskLy50ZXN0KHVybCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtFeHBlY3RlZEtp
bmQ7Ci0gICAgZWxzZSBpZiAoL2RpZmZcLlthLXpdKyQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdHMua0RpZmZLaW5kOwotICAgIHJldHVybiByZXN1bHRzLmtVbmtub3duS2luZDsK
LX0KLQotcmVzdWx0cy5yZXN1bHRUeXBlID0gZnVuY3Rpb24odXJsKQotewotICAgIGlmICgvXC5w
bmckLy50ZXN0KHVybCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtJbWFnZVR5cGU7Ci0gICAg
aWYgKC9cLndhdiQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMua0F1ZGlvVHlw
ZTsKLSAgICByZXR1cm4gcmVzdWx0cy5rVGV4dFR5cGU7Ci19Ci0KLWZ1bmN0aW9uIHNvcnRSZXN1
bHRVUkxzQnlTdWZmaXgodXJscykKLXsKLSAgICB2YXIgc29ydGVkVVJMcyA9IFtdOwotICAgICQu
ZWFjaChrUHJlZmVycmVkU3VmZml4T3JkZXIsIGZ1bmN0aW9uKGksIHN1ZmZpeCkgewotICAgICAg
ICAkLmVhY2godXJscywgZnVuY3Rpb24oaiwgdXJsKSB7Ci0gICAgICAgICAgICBpZiAoIWJhc2Uu
ZW5kc1dpdGgodXJsLCBzdWZmaXgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHNvcnRlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBpZiAo
c29ydGVkVVJMcy5sZW5ndGggIT0gdXJscy5sZW5ndGgpCi0gICAgICAgIHRocm93ICJzb3J0UmVz
dWx0VVJMc0J5U3VmZml4IGZhaWxlZCB0byByZXR1cm4gdGhlIHNhbWUgbnVtYmVyIG9mIFVSTHMu
IgotICAgIHJldHVybiBzb3J0ZWRVUkxzOwotfQotCi1yZXN1bHRzLmZldGNoUmVzdWx0c1VSTHMg
PSBmdW5jdGlvbihmYWlsdXJlSW5mbywgY2FsbGJhY2spCi17Ci0gICAgdmFyIHRlc3ROYW1lU3Rl
bSA9IGJhc2UudHJpbUV4dGVuc2lvbihmYWlsdXJlSW5mby50ZXN0TmFtZSk7Ci0gICAgdmFyIHVy
bFN0ZW07Ci0gICAgCi0gICAgaWYgKGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxh
dGZvcm1dLmhhdmVCdWlsZGVyQWNjdW11bGF0ZWRSZXN1bHRzKQotICAgICAgICB1cmxTdGVtID0g
cmVzdWx0c0RpcmVjdG9yeVVSTChjb25maWcuY3VycmVudFBsYXRmb3JtLCBmYWlsdXJlSW5mby5i
dWlsZGVyTmFtZSk7Ci0gICAgZWxzZSAKLSAgICAgICAgdXJsU3RlbSA9IGZhaWx1cmVJbmZvLmJ1
aWxkTG9jYXRpb24udXJsLnJlcGxhY2Uoa1Jlc3VsdHNOYW1lLCAnJyk7Ci0KLSAgICB2YXIgc3Vm
Zml4TGlzdCA9IHBvc3NpYmxlU3VmZml4TGlzdEZvcihmYWlsdXJlSW5mby5mYWlsdXJlVHlwZUxp
c3QpOwotICAgIHZhciByZXN1bHRVUkxzID0gW107Ci0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFz
ZS5SZXF1ZXN0VHJhY2tlcihzdWZmaXhMaXN0Lmxlbmd0aCwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGNhbGxiYWNrKHNvcnRSZXN1bHRVUkxzQnlTdWZmaXgocmVzdWx0VVJMcykpOwotICAgIH0pOwot
ICAgICQuZWFjaChzdWZmaXhMaXN0LCBmdW5jdGlvbihpbmRleCwgc3VmZml4KSB7Ci0gICAgICAg
IHZhciB1cmwgPSB1cmxTdGVtICsgdGVzdE5hbWVTdGVtICsgc3VmZml4OwotICAgICAgICBuZXQu
cHJvYmUodXJsLCB7Ci0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgICAgICByZXN1bHRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJl
cXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBmdW5j
dGlvbigpIHsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmZldGNoUmVz
dWx0c0ZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAg
dmFyIHJlc3VsdHNVUkwgPSByZXN1bHRzU3VtbWFyeVVSTChjb25maWcuY3VycmVudFBsYXRmb3Jt
LCBidWlsZGVyTmFtZSk7Ci0gICAgbmV0Lmpzb25wKHJlc3VsdHNVUkwsIGNhbGxiYWNrKTsKLX07
Ci0KLXJlc3VsdHMuZmV0Y2hSZXN1bHRzRm9yQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlvbihidWls
ZGVyTmFtZSwgYnVpbGROdW1iZXIsIHJldmlzaW9uLCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcmVz
dWx0c1VSTCA9IHJlc3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIoY29uZmlnLmN1cnJlbnRQ
bGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbik7Ci0gICAgbmV0Lmpz
b25wKHJlc3VsdHNVUkwsIGNhbGxiYWNrKTsKLX07Ci0KLS8vIExvb2sgZm9yIHRoZSBtb3N0IHJl
Y2VudCBjb21wbGV0ZWQgYnVpbGQgdGhhdCBoYXMgZnVsbCByZXN1bHRzLgotcmVzdWx0cy5mZXRj
aFJlc3VsdHNGb3JNb3N0UmVjZW50Q29tcGxldGVkQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlvbihi
dWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgaGlzdG9yaWNhbFJlc3VsdHNMb2NhdGlvbnMo
Y29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGZ1bmN0aW9uKGJ1aWxkTG9jYXRp
b25zKSB7Ci0gICAgICAgIHZhciBjdXJyZW50SW5kZXggPSAwOwotICAgICAgICB2YXIgcmVzdWx0
c0NhbGxiYWNrID0gZnVuY3Rpb24oYnVpbGRSZXN1bHRzKSB7Ci0gICAgICAgICAgICBpZiAoJC5p
c0VtcHR5T2JqZWN0KGJ1aWxkUmVzdWx0cykpIHsKLSAgICAgICAgICAgICAgICArK2N1cnJlbnRJ
bmRleDsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID49IGJ1aWxkTG9jYXRpb25z
Lmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAg
IG5ldC5qc29ucChidWlsZExvY2F0aW9uc1tjdXJyZW50SW5kZXhdLnVybCwgcmVzdWx0c0NhbGxi
YWNrKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBpZiAoIWNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmhhdmVCdWls
ZGVyQWNjdW11bGF0ZWRSZXN1bHRzKQotICAgICAgICAgICAgICAgIGJ1aWxkUmVzdWx0cy5fYnVp
bGRMb2NhdGlvbiA9IGJ1aWxkTG9jYXRpb25zW2N1cnJlbnRJbmRleF07Ci0gICAgICAgICAgICBj
YWxsYmFjayhidWlsZFJlc3VsdHMpOwotICAgICAgICB9OwotICAgICAgICBuZXQuanNvbnAoYnVp
bGRMb2NhdGlvbnNbY3VycmVudEluZGV4XS51cmwsIHJlc3VsdHNDYWxsYmFjayk7Ci0gICAgfSk7
Ci19OwotCi1yZXN1bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJO
YW1lTGlzdCwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHJlc3VsdHNCeUJ1aWxkZXIgPSB7fTsKLSAg
ICBpZiAoY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uaGF2ZUJ1aWxk
ZXJBY2N1bXVsYXRlZFJlc3VsdHMpIHsKLSAgICAgICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5S
ZXF1ZXN0VHJhY2tlcihidWlsZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIGNhbGxiYWNrKHJlc3VsdHNCeUJ1aWxkZXIpOwotICAgICAgICB9KTsKLSAgICAgICAg
JC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7Ci0g
ICAgICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxkZXIoYnVpbGRlck5hbWUsIGZ1
bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c0J5QnVpbGRlclti
dWlsZGVyTmFtZV0gPSByZXN1bHRzVHJlZTsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJlcXVl
c3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGJ1aWxkZXJzLnJlY2VudEJ1aWxkSW5mb3MoZnVuY3Rpb24ocmVjZW50QnVpbGRJ
bmZvcykgewotICAgICAgICAgICAgdmFyIHJlcXVlc3RzSW5GbGlnaHQgPSAwOwotICAgICAgICAg
ICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHJlY2VudEJ1aWxkSW5mb3NbYnVpbGRlck5hbWVdKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB1c2UgUmVxdWVzdFRyYWNrZXIKLSAgICAgICAg
ICAgICAgICAgICAgKytyZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICByZXN1
bHRzLmZldGNoUmVzdWx0c0Zvck1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE9uQnVpbGRlcihidWls
ZGVyTmFtZSwgZnVuY3Rpb24ocmVzdWx0c1RyZWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChyZXN1bHRzVHJlZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzQnlC
dWlsZGVyW2J1aWxkZXJOYW1lXSA9IHJlc3VsdHNUcmVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgLS1yZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXF1
ZXN0c0luRmxpZ2h0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3Vs
dHNCeUJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotfSkoKTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9yZXN1bHRzX3VuaXR0ZXN0cy5q
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDYwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciB1bml0
dGVzdCA9IHVuaXR0ZXN0IHx8IHt9OwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoInJlc3Vs
dHMiKTsKLQotdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTiA9IHsKLSAgICAidGVzdHMiOiB7
Ci0gICAgICAgICJzY3JvbGxiYXJzIjogewotICAgICAgICAgICAgImN1c3RvbS1zY3JvbGxiYXIt
d2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogIklNQUdFIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIgotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICJleHBlY3RlZC13b250Zml4IjogewotICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIs
Ci0gICAgICAgICAgICAgICAgIndvbnRmaXgiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgInVuZXhwZWN0ZWQtd29udGZpeCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0ZWQi
OiAiSU1BR0UiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIsCi0gICAgICAgICAg
ICAgICAgIndvbnRmaXgiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImZsYWt5
LXNjcm9sbGJhci5odG1sIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwK
LSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlBBU1MgVEVYVCIKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAidW5leHBlY3RlZC1mYWlsaW5nLWZsYWt5LXNjcm9sbGJhci5odG1sIjogewot
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICAgICAiYWN0
dWFsIjogIlRJTUVPVVQgVEVYVCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidW5leHBl
Y3RlZC1wYXNzLmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwiLAot
ICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fSwKLSAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAgICAgICAgICAgInVzZXItc2NyaXB0LXZp
ZGVvLWRvY3VtZW50Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwi
LAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogIlBBU1MiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfSwKLSAgICB9LAotICAgICJza2lwcGVkIjogMzM5LAotICAgICJudW1fcmVn
cmVzc2lvbnMiOiAxNCwKLSAgICAiaW50ZXJydXB0ZWQiOiBmYWxzZSwKLSAgICAibGF5b3V0X3Rl
c3RzX2RpciI6ICJcL21udFwvZGF0YVwvYlwvYnVpbGRcL3NsYXZlXC9XZWJraXRfTGludXhcL2J1
aWxkXC9zcmNcL3RoaXJkX3BhcnR5XC9XZWJLaXRcL0xheW91dFRlc3RzIiwKLSAgICAidmVyc2lv
biI6IDMsCi0gICAgIm51bV9wYXNzZXMiOiAxNTU2NiwKLSAgICAiaGFzX3ByZXR0eV9wYXRjaCI6
IGZhbHNlLAotICAgICJmaXhhYmxlIjogMTIzMywKLSAgICAibnVtX2ZsYWt5IjoxLAotICAgICJ1
c2VzX2V4cGVjdGF0aW9uc19maWxlIjogdHJ1ZSwKLSAgICAiaGFzX3dkaWZmIjogdHJ1ZSwKLSAg
ICAicmV2aXNpb24iOiAiOTA0MzAiCi19OwotCi10ZXN0KCJSZXN1bHRBbmFseXplciIsIDU1LCBm
dW5jdGlvbigpIHsKLSAgICB2YXIgYW5hbHl6ZXI7Ci0KLSAgICBhbmFseXplciA9IG5ldyByZXN1
bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDogJ1BBU1MnLCBhY3R1YWw6ICdURVhUJ30pOwot
ICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKGFuYWx5emVyLmhh
c1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5hbHl6ZXIudW5leHBlY3Rl
ZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0g
ICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5S
ZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQQVNTIFRJTUVPVVQnLCBhY3R1YWw6ICdURVhUJ30p
OwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKGFuYWx5emVy
Lmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5hbHl6ZXIudW5leHBl
Y3RlZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7
Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0
cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdURVhUJywgYWN0dWFsOiAnVEVYVCBUSU1FT1VU
J30pOwotICAgIG9rKCFhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpKTsKLSAgICBvayhhbmFs
eXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVu
ZXhwZWN0ZWRSZXN1bHRzKCksIFsnVElNRU9VVCddKTsKLSAgICBvayghYW5hbHl6ZXIuc3VjY2Vl
ZGVkKCkpOwotICAgIG9rKGFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcg
cmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQQVNTJywgYWN0dWFsOiAnVEVYVCBU
SU1FT1VUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9r
KGFuYWx5emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5hbHl6
ZXIudW5leHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJywgJ1RJTUVPVVQnXSk7Ci0gICAgb2soIWFu
YWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBvayhhbmFseXplci5mbGFreSgpKTsKLQotICAgIGFu
YWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnUEFTUyBUSU1F
T1VUJywgYWN0dWFsOiAnUEFTUyBUSU1FT1VUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVk
VG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7
Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBv
ayhhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuZmxha3koKSk7Ci0KLSAg
ICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDogJ1BBU1Mg
VElNRU9VVCcsIGFjdHVhbDogJ1RJTUVPVVQgUEFTUyd9KTsKLSAgICBvayhhbmFseXplci5leHBl
Y3RlZFRvU3VjY2VlZCgpKTsKLSAgICBvayghYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVz
KCkpOwotICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbXSk7Ci0g
ICAgb2soYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKGFuYWx5emVyLmZsYWt5KCkpOwot
Ci0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdG
QUlMJywgYWN0dWFsOiAnVElNRU9VVCd9KTsKLSAgICBvayghYW5hbHl6ZXIuZXhwZWN0ZWRUb1N1
Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkpOwotICAg
IGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbJ1RJTUVPVVQnXSk7Ci0g
ICAgb2soIWFuYWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBvayghYW5hbHl6ZXIuZmxha3koKSk7
Ci0KLSAgICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDog
J0ZBSUwnLCBhY3R1YWw6ICdJTUFHRSd9KTsKLSAgICBvayghYW5hbHl6ZXIuZXhwZWN0ZWRUb1N1
Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkpOwotICAg
IGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbJ0lNQUdFJ10pOwotICAg
IG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwot
Ci0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdG
QUlMJywgYWN0dWFsOiAnQVVESU8nfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9TdWNj
ZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAg
ZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvayghYW5h
bHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLQotICAgIGFu
YWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnRkFJTCcsIGFj
dHVhbDogJ1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwot
ICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFs
KGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvayghYW5hbHl6ZXIuc3Vj
Y2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLQotICAgIGFuYWx5emVyID0g
bmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnRkFJTCcsIGFjdHVhbDogJ0lN
QUdFK1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAg
IG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFu
YWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvayghYW5hbHl6ZXIuc3VjY2Vl
ZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLX0pOwotCi10ZXN0KCJleHBlY3Rl
ZEZhaWx1cmVzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSBy
ZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXModW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTik7Ci0g
ICAgZGVlcEVxdWFsKGV4cGVjdGVkRmFpbHVyZXMsIHsKLSAgICAgICAgInNjcm9sbGJhcnMvY3Vz
dG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsKLSAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIgotICAg
ICAgICB9LAotICAgICAgICAidXNlcnNjcmlwdHMvdXNlci1zY3JpcHQtdmlkZW8tZG9jdW1lbnQu
aHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAgICAgICAgICJh
Y3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoInVuZXhwZWN0
ZWRGYWlsdXJlcyIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMg
PSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlcyh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09O
KTsKLSAgICBkZWVwRXF1YWwodW5leHBlY3RlZEZhaWx1cmVzLCB7Ci0gICAgICAgICJ1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNT
IiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwotfSk7
Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCIsIDEsIGZ1bmN0aW9uKCkgewotICAg
IHZhciB1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJl
c0J5VGVzdCh7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB1bml0dGVzdC5rRXhhbXBsZVJlc3Vs
dHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCwg
ewotICAgICAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAg
ICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwK
LSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICB9KTsKLX0pOwotCi10ZXN0KCJ1bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0IiwgMSwg
ZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IHJlc3VsdHMu
dW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdCh7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB1bml0
dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVuZXhwZWN0
ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAic2Nyb2xsYmFycy91bmV4cGVjdGVkLXBhc3Mu
aHRtbCI6IHsKLSAgICAgICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoImZhaWx1cmVJbmZv
Rm9yVGVzdEFuZEJ1aWxkZXIiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdW5leHBlY3RlZEZh
aWx1cmVzQnlUZXN0ID0gcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QoewotICAgICAg
ICAiTW9jayBCdWlsZGVyIjogdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTgotICAgIH0pOwot
ICAgIHZhciBmYWlsdXJlSW5mbyA9IHJlc3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRl
cih1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRt
bCIsICJNb2NrIEJ1aWxkZXIiKTsKLSAgICBkZWVwRXF1YWwoZmFpbHVyZUluZm8sIHsKLSAgICAg
ICAgInRlc3ROYW1lIjogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwKLSAgICAgICAg
ImJ1aWxkZXJOYW1lIjogIk1vY2sgQnVpbGRlciIsCi0gICAgICAgICJmYWlsdXJlVHlwZUxpc3Qi
OiBbIlRFWFQiXSwKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJyZXN1bHRLaW5kIiwgMTIsIGZ1bmN0
aW9uKCkgewotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNv
bS9mb28tYWN0dWFsLnR4dCIpLCAiYWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0
S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1leHBlY3RlZC50eHQiKSwgImV4cGVjdGVkIik7
Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1k
aWZmLnR4dCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28uYmFyLWFjdHVhbC50eHQiKSwgImFjdHVhbCIpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWV4cGVjdGVk
LnR4dCIpLCAiZXhwZWN0ZWQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJodHRw
Oi8vZXhhbXBsZS5jb20vZm9vLmJhci1kaWZmLnR4dCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhy
ZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnBuZyIpLCAi
YWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUu
Y29tL2Zvby1leHBlY3RlZC5wbmciKSwgImV4cGVjdGVkIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMu
cmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1kaWZmLnBuZyIpLCAiZGlmZiIpOwot
ICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tcHJl
dHR5LWRpZmYuaHRtbCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28td2RpZmYuaHRtbCIpLCAiZGlmZiIpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28teHl6Lmh0bWwiKSwg
InVua25vd24iKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRUeXBlIiwgMTIsIGZ1bmN0aW9uKCkgewot
ICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0
dWFsLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6
Ly9leGFtcGxlLmNvbS9mb28tZXhwZWN0ZWQudHh0IiksICJ0ZXh0Iik7Ci0gICAgZXF1YWxzKHJl
c3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1kaWZmLnR4dCIpLCAidGV4
dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9m
b28uYmFyLWFjdHVhbC50eHQiKSwgInRleHQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRU
eXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLmJhci1leHBlY3RlZC50eHQiKSwgInRleHQiKTsK
LSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLmJh
ci1kaWZmLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnBuZyIpLCAiaW1hZ2UiKTsKLSAgICBlcXVhbHMo
cmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWV4cGVjdGVkLnBuZyIp
LCAiaW1hZ2UiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBs
ZS5jb20vZm9vLWRpZmYucG5nIiksICJpbWFnZSIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3Vs
dFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tcHJldHR5LWRpZmYuaHRtbCIpLCAidGV4dCIp
OwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28t
d2RpZmYuaHRtbCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28ueHl6IiksICJ0ZXh0Iik7Ci19KTsKLQotdGVzdCgicmVzdWx0
Tm9kZUZvclRlc3QiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBkZWVwRXF1YWwocmVzdWx0cy5yZXN1
bHROb2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OLCAidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiKSwgewotICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAg
ICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICB9KTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRO
b2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OLCAiZm9vLmh0bWwiKSwgbnVs
bCk7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3QodW5pdHRlc3Qua0V4YW1w
bGVSZXN1bHRzSlNPTiwgInVzZXJzY3JpcHRzL2Zvby5odG1sIiksIG51bGwpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KHVuaXR0ZXN0LmtFeGFtcGxlUmVzdWx0c0pTT04s
ICJ1c2Vyc2NyaXB0cy9mb28vYmFyLmh0bWwiKSwgbnVsbCk7Ci19KTsKLQotdGVzdCgid2Fsa0hp
c3RvcnkiLCA2LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtT
aW11bGF0b3IoKTsKLQotICAgIHZhciBrZXlNYXAgPSB7Ci0gICAgICAgICJNb2NrX0J1aWxkZXIi
OiB7Ci0gICAgICAgICAgICAiMTExMDgiOiB7Ci0gICAgICAgICAgICAgICAgInRlc3RzIjogewot
ICAgICAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwi
OiAiVEVYVCIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MDQz
MCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiMTExMDciOnsKLSAgICAgICAgICAgICAg
ICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjogewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXItdGVzdC5odG1sIjogewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAicmV2aXNpb24iOiAiOTA0MjkiCi0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgIjExMTA2Ijp7Ci0gICAgICAgICAgICAgICAgInRlc3RzIjogewotICAgICAgICAgICAgICAg
ICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYW5vdGhlci10
ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBB
U1MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MDQyNiIKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAiMTExMDUiOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0g
ICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgInJl
dmlzaW9uIjogIjkwNDI0IgotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICAgICAgIkFu
b3RoZXJfQnVpbGRlciI6IHsKLSAgICAgICAgICAgICIyMjIwMiI6ewotICAgICAgICAgICAgICAg
ICJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAgICAg
ICAgICAgICAgICAgICAgICAgImFub3RoZXItdGVzdC5odG1sIjogewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAicmV2
aXNpb24iOiAiOTA0MjYiCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIjIyMjAxIjp7Ci0g
ICAgICAgICAgICAgICAgInRlc3RzIjogewotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgInJldmlzaW9uIjogIjkwNDI1IgotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAg
ICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgewot
ICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1aWxkZXIvLmV4ZWModXJsKV1bL1xkKy8u
ZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCA/IHJlc3VsdCA6IHt9KTsK
LSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmws
IGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgaWYgKC9Nb2NrX0J1aWxkZXIvLnRlc3QodXJsKSkKLSAgICAgICAg
ICAgICAgICBjYWxsYmFjaygnPGEgaHJlZj0iMTExMDEvIj48L2E+PGEgaHJlZj0iMTExMDIvIj48
L2E+PGEgaHJlZj0iMTExMDMvIj48L2E+PGEgaHJlZj0iMTExMDQvIj48L2E+PGEgaHJlZj0iMTEx
MDUvIj48L2E+PGEgaHJlZj0iMTExMDYvIj48L2E+PGEgaHJlZj0iMTExMDcvIj48L2E+PGEgaHJl
Zj0iMTExMDgvIj48L2E+Jyk7Ci0gICAgICAgICAgICBlbHNlIGlmICgvQW5vdGhlcl9CdWlsZGVy
Ly50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soJzxhIGhyZWY9IjIyMjAxLyI+
PC9hPjxhIGhyZWY9IjIyMjAyLyI+PC9hPicpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIG9rKGZhbHNlLCAnVW5leHBlY3RlZCBVUkw6ICcgKyB1cmwpOwotICAgICAgICB9KTsK
LSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHJl
c3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSgiTW9jayBCdWlsZGVyIiwgInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBu
ZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAgICAgICAgICAgIGVxdWFscyhvbGRlc3RGYWlsaW5n
UmV2aXNpb24sIDkwNDI2KTsKLSAgICAgICAgICAgIGVxdWFscyhuZXdlc3RQYXNzaW5nUmV2aXNp
b24sIDkwNDI0KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmVzdWx0cy51bmlmeVJlZ3Jlc3Np
b25SYW5nZXMoWyJNb2NrIEJ1aWxkZXIiLCAiQW5vdGhlciBCdWlsZGVyIl0sICJ1c2Vyc2NyaXB0
cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwgbmV3
ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAgICAgICAgICBlcXVhbHMob2xkZXN0RmFpbGluZ1Jl
dmlzaW9uLCA5MDQyNik7Ci0gICAgICAgICAgICBlcXVhbHMobmV3ZXN0UGFzc2luZ1JldmlzaW9u
LCA5MDQyNSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJlc3VsdHMuY291bnRGYWlsdXJlT2Nj
dXJlbmNlcyhbIk1vY2sgQnVpbGRlciIsICJBbm90aGVyIEJ1aWxkZXIiXSwgInVzZXJzY3JpcHRz
L2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24oZmFpbHVyZUNvdW50KSB7Ci0gICAgICAgICAg
ICBlcXVhbHMoZmFpbHVyZUNvdW50LCA0KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsKLQot
dGVzdCgid2Fsa0hpc3RvcnkgKG5vIHJldmlzaW9uKSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAgdmFyIGtleU1hcCA9
IHsKLSAgICAgICAgIk1vY2tfQnVpbGRlciI6IHsKLSAgICAgICAgICAgICIxMTEwMyI6IHsKLSAg
ICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0
cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgInJldmlzaW9uIjogIiIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiMTEx
MDIiOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAicmV2aXNpb24iOiAiIgotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwK
LSAgICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykg
ewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1aWxkZXIvLmV4ZWModXJsKV1bL1xk
Ky8uZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCA/IHJlc3VsdCA6IHt9
KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1
cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soJzxhIGhyZWY9IjExMTAxLyI+PC9hPjxhIGhy
ZWY9IjExMTAyLyI+PC9hPjxhIGhyZWY9IjExMTAzLyI+PC9hPicpOwotICAgICAgICB9KTsKLSAg
ICB9OwotCi0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgcmVz
dWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKCJNb2NrIEJ1aWxkZXIiLCAidXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBmdW5jdGlvbihvbGRlc3RGYWlsaW5nUmV2aXNpb24sIG5l
d2VzdFBhc3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAgZXF1YWxzKG9sZGVzdEZhaWxpbmdS
ZXZpc2lvbiwgMCk7Ci0gICAgICAgICAgICBlcXVhbHMobmV3ZXN0UGFzc2luZ1JldmlzaW9uLCAw
KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiY29sbGVjdFVuZXhwZWN0ZWRS
ZXN1bHRzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Rpb25hcnlPZlJlc3VsdE5vZGVz
ID0gewotICAgICAgICAiZm9vIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdFIiwK
LSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiCi0gICAgICAgIH0sCi0gICAgICAgICJiYXIi
OiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFs
IjogIlBBU1MgVEVYVCIKLSAgICAgICAgfSwKLSAgICAgICAgImJheiI6IHsKLSAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiCi0gICAg
ICAgIH0sCi0gICAgICAgICJxdXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIs
Ci0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgIH0sCi0gICAgICAgICJ0YWNv
IjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgImFjdHVh
bCI6ICJURVhUIgotICAgICAgICB9LAotICAgIH07Ci0KLSAgICB2YXIgY29sbGVjdGVkUmVzdWx0
cyA9IHJlc3VsdHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzKGRpY3Rpb25hcnlPZlJlc3VsdE5v
ZGVzKTsKLSAgICBkZWVwRXF1YWwoY29sbGVjdGVkUmVzdWx0cywgWyJURVhUIiwgIklNQUdFIl0p
OwotfSk7Ci0KLXRlc3QoImZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0IiwgNSwgZnVuY3Rpb24o
KSB7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QoJ1RF
WFQnKSwgWyd0eHQnXSk7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVu
c2lvbkxpc3QoJ0lNQUdFK1RFWFQnKSwgWyd0eHQnLCAncG5nJ10pOwotICAgIGRlZXBFcXVhbChy
ZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KCdJTUFHRScpLCBbJ3BuZyddKTsKLSAg
ICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCgnQ1JBU0gnKSwg
W10pOwotICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KCdU
SU1FT1VUJyksIFtdKTsKLX0pOwotCi10ZXN0KCJjYW5SZWJhc2VsaW5lIiwgNiwgZnVuY3Rpb24o
KSB7Ci0gICAgb2socmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnVEVYVCddKSk7Ci0gICAgb2socmVz
dWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UrVEVYVCcsICdDUkFTSCddKSk7Ci0gICAgb2socmVz
dWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UnXSkpOwotICAgIG9rKCFyZXN1bHRzLmNhblJlYmFz
ZWxpbmUoWydDUkFTSCddKSk7Ci0gICAgb2soIXJlc3VsdHMuY2FuUmViYXNlbGluZShbJ1RJTUVP
VVQnXSkpOwotICAgIG9rKCFyZXN1bHRzLmNhblJlYmFzZWxpbmUoW10pKTsKLX0pOwotCi10ZXN0
KCJmZXRjaFJlc3VsdHNVUkxzIiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9
IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0KLSAgICB2YXIgcHJvYmVkVVJMcyA9IFtdOwotICAg
IHNpbXVsYXRvci5wcm9iZSA9IGZ1bmN0aW9uKHVybCwgb3B0aW9ucykKLSAgICB7Ci0gICAgICAg
IHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgcHJv
YmVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAgICAgICBpZiAoYmFzZS5lbmRzV2l0aCh1cmwsICcu
dHh0JykpCi0gICAgICAgICAgICAgICAgb3B0aW9ucy5zdWNjZXNzLmNhbGwoKTsKLSAgICAgICAg
ICAgIGVsc2UgaWYgKC90YWNvLitwbmckLy50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAgb3B0
aW9ucy5zdWNjZXNzLmNhbGwoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBv
cHRpb25zLmVycm9yLmNhbGwoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRv
ci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c1VSTHMo
ewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogIk1vY2sgQnVpbGRlciIsCi0gICAgICAgICAg
ICAndGVzdE5hbWUnOiAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLAotICAgICAgICAg
ICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UnLCAnQ1JBU0gnXSwKLSAgICAgICAgfSwgZnVu
Y3Rpb24ocmVzdWx0VVJMcykgewotICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdFVSTHMsIFsK
LSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xh
eW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0
cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtY3Jhc2gtbG9nLnR4dCIKLSAgICAgICAgICAgIF0p
OwotICAgICAgICB9KTsKLSAgICAgICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzKHsKLSAgICAg
ICAgICAgICdidWlsZGVyTmFtZSc6ICJNb2NrIEJ1aWxkZXIiLAotICAgICAgICAgICAgJ3Rlc3RO
YW1lJzogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwKLSAgICAgICAgICAgICdmYWls
dXJlVHlwZUxpc3QnOiBbJ1RJTUVPVVQnXSwKLSAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0VVJM
cykgewotICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdFVSTHMsIFtdKTsKLSAgICAgICAgfSk7
Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcyh7Ci0gICAgICAgICAgICAnYnVpbGRl
ck5hbWUnOiAiTW9jayBCdWlsZGVyIiwKLSAgICAgICAgICAgICd0ZXN0TmFtZSc6ICJ1c2Vyc2Ny
aXB0cy90YWNvLmh0bWwiLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0Un
LCAnSU1BR0UrVEVYVCddLAotICAgICAgICB9LCBmdW5jdGlvbihyZXN1bHRVUkxzKSB7Ci0gICAg
ICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJMcywgWwotICAgICAgICAgICAgICAgICJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1
aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZXhwZWN0
ZWQucG5nIiwKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2No
cm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRl
c3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC5wbmciLAotICAgICAgICAgICAgICAg
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0
cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3Rh
Y28tZGlmZi5wbmciLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlv
dXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZXhwZWN0ZWQudHh0IiwKLSAgICAgICAg
ICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0
X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2Ny
aXB0cy90YWNvLWFjdHVhbC50eHQiLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVz
dWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi50eHQiLAotICAg
ICAgICAgICAgXSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHByb2Jl
ZFVSTHMsIFsKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9s
YXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3Vs
dHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnBuZyIsCi0gICAgICAgICJodHRw
Oi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2Nr
X0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3RoZXIt
dGVzdC1hY3R1YWwucG5nIiwKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9j
aHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10
ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWRpZmYucG5nIiwKLSAgICAgICAg
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRz
L01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0LWNyYXNoLWxvZy50eHQiLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMv
bGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWV4cGVjdGVkLnBuZyIsCi0gICAg
ICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVz
dWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L3RhY28tYWN0dWFsLnBuZyIsCi0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2Yv
Y2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQt
dGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi5wbmciLAotICAgICAgICAiaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19C
dWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFjdHVh
bC50eHQiLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xh
eW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0
cy91c2Vyc2NyaXB0cy90YWNvLWV4cGVjdGVkLnR4dCIsCi0gICAgICAgICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIv
cmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi50eHQiLAot
ICAgIF0pOwotfSk7Ci0KLXRlc3QoImZldGNoUmVzdWx0c0J5QnVpbGRlciIsIDUsIGZ1bmN0aW9u
KCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAg
dmFyIHByb2JlZFVSTHMgPSBbXTsKLSAgICBzaW11bGF0b3IuanNvbnAgPSBmdW5jdGlvbih1cmws
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICBwcm9iZWRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgICAg
IGlmIChiYXNlLmVuZHNXaXRoKHVybCwgJ01vY2tCdWlsZGVyMi9yMSUyMCgxKS9mdWxsX3Jlc3Vs
dHMuanNvbicpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsnTW9ja0J1aWxkUmVzdWx0cyc6
IHRydWV9KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh7fSk7
Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjb25maWcuY3VycmVudFBsYXRmb3JtID0gJ2d0
ayc7Ci0KLSAgICB2YXIgb2xkQ2FjaGVkQnVpbGRJbmZvcyA9IGJ1aWxkZXJzLmNhY2hlZEJ1aWxk
SW5mb3M7Ci0gICAgYnVpbGRlcnMuY2FjaGVkQnVpbGRJbmZvcyA9IGZ1bmN0aW9uKHBsYXRmb3Jt
LCBidWlsZGVyTmFtZSwgY2FsbGJhY2spIHsKLSAgICAgICAgY2FsbGJhY2soCi0gICAgICAgIHsK
LSAgICAgICAgICAgIDE6IHsKLSAgICAgICAgICAgICAgICBzb3VyY2VTdGFtcDogewotICAgICAg
ICAgICAgICAgICAgICByZXZpc2lvbjogMQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAyOiB7Ci0gICAgICAgICAgICAgICAgc291cmNlU3RhbXA6IHsKLSAg
ICAgICAgICAgICAgICAgICAgcmV2aXNpb246IDIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHZhciBvbGRSZWNlbnRCdWlsZElu
Zm9zID0gYnVpbGRlcnMucmVjZW50QnVpbGRJbmZvczsKLSAgICBidWlsZGVycy5yZWNlbnRCdWls
ZEluZm9zID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgY2FsbGJhY2soewotICAgICAg
ICAgICAgJ01vY2tCdWlsZGVyMSc6IHRydWUsCi0gICAgICAgICAgICAnTW9ja0J1aWxkZXIyJzog
dHJ1ZQotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzQnlCdWlsZGVyKFsnTW9ja0J1aWxk
ZXIxJywgJ01vY2tCdWlsZGVyMiddLCBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKSB7Ci0gICAg
ICAgICAgICBkZWVwRXF1YWwocmVzdWx0c0J5QnVpbGRlciwgewotICAgICAgICAgICAgICAgICJN
b2NrQnVpbGRlcjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJNb2NrQnVpbGRSZXN1bHRzIjog
dHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9idWlsZExvY2F0aW9uIjogewotICAgICAgICAg
ICAgICAgICAgICAgICAgImJ1aWxkTnVtYmVyIjogIjEiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgInJldmlzaW9uIjogMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cHM6
Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvTW9ja0J1aWxkZXIyL3IxJTIwKDEpL2Z1bGxfcmVz
dWx0cy5qc29uIgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHByb2Jl
ZFVSTHMsIFsKLSAgICAgICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL01vY2tC
dWlsZGVyMS9yMiUyMCgyKS9mdWxsX3Jlc3VsdHMuanNvbiIsCi0gICAgICAgICJodHRwczovL2J1
aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9Nb2NrQnVpbGRlcjIvcjIlMjAoMikvZnVsbF9yZXN1bHRz
Lmpzb24iLAotICAgICAgICAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvTW9ja0J1
aWxkZXIxL3IxJTIwKDEpL2Z1bGxfcmVzdWx0cy5qc29uIiwKLSAgICAgICAgImh0dHBzOi8vYnVp
bGQud2Via2l0Lm9yZy9yZXN1bHRzL01vY2tCdWlsZGVyMi9yMSUyMCgxKS9mdWxsX3Jlc3VsdHMu
anNvbiIKLSAgICBdKTsKLQotICAgIGJ1aWxkZXJzLmNhY2hlZEJ1aWxkSW5mb3MgPSBvbGRDYWNo
ZWRCdWlsZEluZm9zOwotICAgIGVxdWFsKGJ1aWxkZXJzLmNhY2hlZEJ1aWxkSW5mb3MsIG9sZENh
Y2hlZEJ1aWxkSW5mb3MsICJGYWlsZWQgdG8gcmVzdG9yZSByZWFsIGJhc2UhIik7Ci0KLSAgICBi
dWlsZGVycy5yZWNlbnRCdWlsZEluZm9zID0gb2xkUmVjZW50QnVpbGRJbmZvczsKLSAgICBlcXVh
bChidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zLCBvbGRSZWNlbnRCdWlsZEluZm9zLCAiRmFpbGVk
IHRvIHJlc3RvcmUgcmVhbCBiYXNlISIpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvc3VtbWFyeS1tb2NrLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjQg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLWZ1bmN0aW9uIG1pbnV0ZXNB
Z28obWludXRlcykKLXsKLSAgICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgdGltZS5zZXRN
aW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gbWludXRlcyk7Ci0gICAgcmV0dXJuIHRpbWU7Ci19
Ci0KLWZ1bmN0aW9uIEN5Y2xlcihpdGVtcywgcmVwZWF0KQotewotICAgIHRoaXMuX2luZGV4ID0g
MDsKLSAgICB0aGlzLl9yZXBlYXQgPSByZXBlYXQgfHwgMTsKLSAgICB0aGlzLl9yZXBlYXRlZCA9
IDA7Ci0gICAgdGhpcy5faXRlbXMgPSBpdGVtczsKLX0KLQotQ3ljbGVyLnByb3RvdHlwZSA9IHsK
LSAgICBfdXBkYXRlUmVwZWF0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoKyt0aGlz
Ll9yZXBlYXRlZCA+PSB0aGlzLl9yZXBlYXQpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlcGVhdGVk
ID0gdGhpcy5fcmVwZWF0OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgX3VwZGF0ZUluZGV4OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlUmVwZWF0KCkpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIGlmICgrK3RoaXMuX2luZGV4ID49IHRoaXMuX2l0ZW1zLmxlbmd0aCkK
LSAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICB9LAotICAgIGN5Y2xlOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5faXRlbXNbdGhpcy5faW5kZXhd
OwotICAgICAgICB0aGlzLl91cGRhdGVJbmRleCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0KLX0KLQotdmFyIHBlb3BsZSA9IG5ldyBDeWNsZXIoWwotICAgICdFdXN0YWNlIEJhZ2dl
JywKLSAgICAnRGljayBEYXN0YXJkbHknLAotICAgICdNYWpvciBHbG9yeScsCi0gICAgJ0Jhcm5l
eSBSdWJibGUnLAotICAgICdCdW5ueSBCcmF2bycsCi0gICAgJ1JhY2UgQmFubm9uJywKLV0pOwot
Ci12YXIgYnVnVGl0bGVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ1VucmV2aWV3ZWQuIENocm9taXVt
IHJlYmFzZWxpbmVzIGZvciByOTM3OTQuICogLi4uJywKLSAgICAnRml4IGJ1aWxkIHdoZW4gR0ND
IDQuMiBpcyBub3QgaW5zdGFsbGVkLiAqIC4uLiAnLAotICAgICdbUXRdIFVucmV2aWV3ZWQgZ2Fy
ZGVuaW5nLiAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFNraXAgbmV3IHRlc3RzIHVudGlsIC4uLics
Ci0gICAgJ2dhcmRlbi1vLW1hdGljIG5lZWRzIGEgd2F5IHRvIHJlcG9ydCB3aGVyZSBhbmQgaG93
IHRlc3RzIGFyZSBmYWlsaW5nIGluIC4uLiAnLAotICAgICdSRUdSRVNTSU9OKHI5MDk3MSk6IEZp
eCBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aXRoIHRleHRhcmVhIHBsYWNlaG9sZGVyLiAuLi4nLAot
ICAgICdJbmNvcnJlY3QgbGF5b3V0IG9mIDpiZWZvcmUgYW5kIDphZnRlciBjb250ZW50LCB3aXRo
IGRpc3BsYXkgdGFibGUsIC4uLicsCi0gICAgJyBKU0hUTUxJbWFnZUVsZW1lbnQgKGFuZCBhc3Nv
Y2lhdGVkIE5vZGUpIGlzIGFiYW5kb25lZCB3aGVuIGltYWdlIGxvYWQgaXMgLi4uICcKLV0pOwot
Ci12YXIgdGVzdE5hbWVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ2Zhc3QvcnVieS90ZXh0LWVtcGhh
c2lzLmh0bWwnLAotICAgICdwbHVnaW5zL2Rlc3Ryb3ktZHVyaW5nLW5wcC1uZXcuaHRtbCcsCi0g
ICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNjA3NDkuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3pp
bGxhL2J1Z3MvYnVnNTE3MjcuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnMzM4
NTUuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDYuaHRtJywKLSAgICAn
dGFibGVzL21vemlsbGEvYnVncy9idWcxODM1OS5odG1sJywKLSAgICAndGFibGVzL21vemlsbGEv
YnVncy9idWc0NjM2OC0xLmh0bWwnLAotICAgICd0YWJsZXMvbW96aWxsYS9idWdzL2J1ZzQ2MzY4
LTIuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDUuaHRtbCcKLV0pOwot
Ci12YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNvbmZpZy5jdXJyZW50QnVp
bGRlcnMoKSksIDMpOwotCi12YXIgZXhwZWN0YXRpb25zID0gbmV3IEN5Y2xlcihbCi0gICAgJ1RF
WFQnLAotICAgICdJTUFHRStURVhUJywKLSAgICAnVElNRU9VVCcsCi0gICAgJ0NSQVNIJwotXSwg
NCk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZVJlc3VsdE5vZGVzQnlCdWlsZGVyKGJ1aWxkZXJGYWlsdXJl
Q291bnQpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotICAgIGZvcih2YXIgaSA9IDA7IGkgPCBi
dWlsZGVyRmFpbHVyZUNvdW50OyArK2kpCi0gICAgICAgIHJlc3VsdFtidWlsZGVycy5jeWNsZSgp
XSA9IHsgYWN0dWFsOiBleHBlY3RhdGlvbnMuY3ljbGUoKSB9OwotICAgIHJldHVybiByZXN1bHQ7
Ci19Ci0KLXZhciBjdXJyZW50UmV2aXNpb24gPSA2NjY2NjsKLXZhciBjdXJyZW50TWludXRlc0Fn
byA9IDA7Ci0KLWZ1bmN0aW9uIGNyZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoY29tbWl0RGF0YUNv
dW50LCBmYWlsdXJlQW5hbHlzaXNDb3VudCwgYnVpbGRlckZhaWx1cmVDb3VudCkKLXsKLSAgICB2
YXIgZmFpbGluZ1Rlc3RzU3VtbWFyeSA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0
c1N1bW1hcnkoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1pdERhdGFDb3VudDsgKytp
KQotICAgICAgICBmYWlsaW5nVGVzdHNTdW1tYXJ5LmFkZENvbW1pdERhdGEoewotICAgICAgICAg
ICAgdGltZTogbWludXRlc0FnbyhjdXJyZW50TWludXRlc0FnbysrKSwKLSAgICAgICAgICAgIHJl
dmlzaW9uOiBjdXJyZW50UmV2aXNpb24rKywKLSAgICAgICAgICAgIHN1bW1hcnk6IGJ1Z1RpdGxl
cy5jeWNsZSgpLAotICAgICAgICAgICAgYXV0aG9yOiBwZW9wbGUuY3ljbGUoKSwKLSAgICAgICAg
ICAgIHJldmlld2VyOiBwZW9wbGUuY3ljbGUoKQotICAgICAgICB9KTsKLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGZhaWx1cmVBbmFseXNpc0NvdW50OyArK2kpCi0gICAgICAgIGZhaWxpbmdUZXN0
c1N1bW1hcnkuYWRkRmFpbHVyZUFuYWx5c2lzKHsKLSAgICAgICAgICAgIHRlc3ROYW1lOiB0ZXN0
TmFtZXMuY3ljbGUoKSwKLSAgICAgICAgICAgIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiBjcmVhdGVS
ZXN1bHROb2Rlc0J5QnVpbGRlcihidWlsZGVyRmFpbHVyZUNvdW50KQotICAgICAgICB9KTsKLSAg
ICByZXR1cm4gZmFpbGluZ1Rlc3RzU3VtbWFyeTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQnVpbGRl
cnNGYWlsaW5nKGZhaWxpbmdCdWlsZGVyQ291bnQpCi17Ci0gICAgdmFyIGJ1aWxkZXJzRmFpbGlu
ZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkJ1aWxkZXJzRmFpbGluZygpOwotICAgIGJ1aWxkZXJO
YW1lTGlzdCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmFpbGluZ0J1aWxkZXJDb3Vu
dDsgKytpKQotICAgICAgICBidWlsZGVyTmFtZUxpc3QucHVzaChidWlsZGVycy5jeWNsZSgpKTsK
LSAgICBidWlsZGVyc0ZhaWxpbmcuc2V0RmFpbGluZ0J1aWxkZXJzKGJ1aWxkZXJOYW1lTGlzdCk7
Ci0gICAgcmV0dXJuIGJ1aWxkZXJzRmFpbGluZwotfQotCi0kKGRvY3VtZW50KS5yZWFkeShmdW5j
dGlvbigpIHsKLQotICAgIHZhciBhY3Rpb25zID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3RyZWFt
KCk7Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoYWN0aW9ucywgZG9jdW1lbnQuYm9k
eS5maXJzdENoaWxkKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBBY3Rpb24g
b2JqZWN0LgotICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsK
LSAgICBidXR0b24udGV4dENvbnRlbnQgPSAndXBkYXRlJzsKLQotICAgIGFjdGlvbnMuYWRkKGNy
ZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMywgNCwgMSkpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0
ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMywgMSwgMykpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUZh
aWxpbmdUZXN0c1N1bW1hcnkoMSwgMjAsIDEpKTsKLSAgICBhY3Rpb25zLmFkZChjcmVhdGVCdWls
ZGVyc0ZhaWxpbmcoMSkpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUJ1aWxkZXJzRmFpbGluZyg4
KSk7Ci19KTsKLQotfSkoKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3N1bW1hcnktbW9jay5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUK
IyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODcz
MSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3RyYWNfdW5pdHRlc3RzLmpzCShub25leGlz
dGVudCkKQEAgLTEsMzQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQot
bW9kdWxlKCJ0cmFjIik7Ci0KLXZhciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPSAKLSAgICAnPD94
bWwgdmVyc2lvbj0iMS4wIj8+XG5cbicgKwotICAgICc8cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVy
bC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmVyc2lvbj0iMi4wIj5cblxuJyArCi0gICAgJyAgXG5c
bicgKwotICAgICdcblxuJyArCi0gICAgJyAgPGNoYW5uZWw+XG5cbicgKwotICAgICcgICAgPHRp
dGxlPlJldmlzaW9ucyBvZiAvdHJ1bms8L3RpdGxlPlxuXG4nICsKLSAgICAnICAgIDxsaW5rPmh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj05MjM2MjwvbGluaz5cblxuJyArCi0g
ICAgJyAgICA8ZGVzY3JpcHRpb24+VHJhYyBMb2cgLSBSZXZpc2lvbnMgb2YgL3RydW5rPC9kZXNj
cmlwdGlvbj5cblxuJyArCi0gICAgJyAgICA8bGFuZ3VhZ2U+ZW4tVVM8L2xhbmd1YWdlPlxuXG4n
ICsKLSAgICAnICAgIDxnZW5lcmF0b3I+VHJhYyAwLjExLjc8L2dlbmVyYXRvcj5cblxuJyArCi0g
ICAgJyAgICA8aW1hZ2U+XG5cbicgKwotICAgICcgICAgICA8dGl0bGU+V2ViS2l0PC90aXRsZT5c
blxuJyArCi0gICAgJyAgICAgIDx1cmw+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaHJvbWUvc2l0
ZS9pY29uLnBuZzwvdXJsPlxuXG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKLSAgICAnICAgIDwvaW1h
Z2U+XG5cbicgKwotICAgICcgICAgPGl0ZW0+XG5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhv
cj5tYWNwaGVyc29uQGNocm9taXVtLm9yZzwvYXV0aG9yPlxuXG4nICsKLSAgICAnICAgICAgPHB1
YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMjowOToxOSBHTVQ8L3B1YkRhdGU+XG5cbicgKwotICAg
ICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzNDI6IFN1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1By
aW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uPC90aXRsZT5cblxuJyArCi0g
ICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQyL3Ry
dW5rPC9saW5rPlxuXG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5o
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0Mi90cnVuazwvZ3VpZD5cblxuJyAr
Ci0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcblxuJyArCi0gICAgJ1N1cHBvcnQg
Y2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NT
U3R5bGVTZWxlY3Rvci5cblxuJyArCi0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0i
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU3IiZndDsmbHQ7c3Bh
biBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU2NTcmbHQ7L2EmZ3Q7XG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG5c
bicgKwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ1Jldmlld2VkIGJ5IFNpbW9uIEZyYXNl
ci5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsK
LSAgICAnTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jpbmcgb25seS5cblxuJyArCi0gICAgJyZsdDsv
cCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWVNYXBwaW5ncy5oOlxuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6XG5cbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCBmcm9t
IEVCb3hTaXppbmcuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVy
YXRvciBFQm94U2l6aW5nKTpcbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCB0byBFQm94U2l6aW5n
LlxuJyArCi0gICAgJyogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOlxuJyArCi0gICAgJyhXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KTpcbicgKwotICAgICdVc2UgYXBw
cm9wcmlhdGUgbWFjcm8gdG8gc2ltcGxpZnkgY29kZSB1c2luZyBjYXN0LlxuJyArCi0gICAgJyZs
dDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxuJyArCi0gICAgJyAgICAgIDxjYXRl
Z29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8L2l0ZW0+PGl0ZW0+XG4nICsKLSAg
ICAnICAgICAgICAgIDxhdXRob3I+Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc8L2F1dGhvcj5cbicg
KwotICAgICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDExIDAyOjAxOjMxIEdNVDwvcHVi
RGF0ZT5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzNDE6IEltcGxlbWVudCBF
dmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxp
bms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDEvdHJ1bms8L2xpbms+XG4n
ICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjM0MS90cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVz
Y3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAgICAnSW1wbGVtZW50IEV2ZW50U2VuZGVyLnNjYWxl
UGFnZUJ5KClcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAxMyImZ3Q7Jmx0O3NwYW4gY2xhc3M9
Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTU4MDEzJmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcm
bHQ7cCZndDtcbicgKwotICAgICdQYXRjaCBieSBLZW50YXJvIEhhcmEgJmFtcDtsdDsmbHQ7YSBj
bGFzcz0ibWFpbC1saW5rIiBocmVmPSJtYWlsdG86aGFyYWtlbkBnb29nbGUuY29tIiZndDsmbHQ7
c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtoYXJha2VuQGdvb2dsZS5jb20mbHQ7
L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wM1xuJyArCi0gICAgJ1Jldmlld2VkIGJ5IERhcmlu
IEZpc2hlci5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsK
LSAgICAnSW1wbGVtZW50ZWQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoZiwgeCwgeSksIHdoaWNo
IHNjYWxlcyBhIHBhZ2UgYnkgYSBmYWN0b3Igb2YgZlxuJyArCi0gICAgJ2FuZCB0aGVuIHNldHMg
YSBzY3JvbGwgcG9zaXRpb24gdG8gKHgsIHkpLiBFbmFibGVkIHRoZSB0ZXN0cyB0aGF0IGhhZCBi
ZWVuIHdhaXRpbmdcbicgKwotICAgICdmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIEV2ZW50U2Vu
ZGVyLnNjYWxlUGFnZUJ5KGYsIHgsIHkpLlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAg
ICcmbHQ7cCZndDtcbicgKwotICAgICdTb3VyY2UvV2ViS2l0L2Nocm9taXVtOlxuJyArCi0gICAg
JyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdUZXN0czogY29tcG9z
aXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFxuJyArCi0gICAgJyZsdDsv
cCZndDtcbicgKwotICAgICcmbHQ7YmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZndDtc
bicgKwotICAgICdmYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmsuaHRtbFxuJyArCi0gICAg
J2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbFxuJyArCi0gICAg
J2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicgKwotICAgICdm
YXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4uaHRt
bFxuJyArCi0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGllbnQt
cmVjdC5odG1sXG4nICsKLSAgICAnZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGluZy1j
bGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDsvYmxv
Y2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIHB1YmxpYy9XZWJW
aWV3Lmg6XG4nICsKLSAgICAnKiBzcmMvV2ViVmlld0ltcGwuY3BwOlxuJyArCi0gICAgJyhXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzY2FsZVBhZ2UpOiBBIHdyYXBwZXIgbWV0aG9kIGZvciBzY2FsZVBh
Z2UoKSBpbiBXZWJDb3JlLlxuJyArCi0gICAgJyogc3JjL1dlYlZpZXdJbXBsLmg6XG4nICsKLSAg
ICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ1Rvb2xzOlxuJyAr
Ci0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdUZXN0czog
Y29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFxuJyArCi0gICAg
JyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7YmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7
cCZndDtcbicgKwotICAgICdmYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmsuaHRtbFxuJyAr
Ci0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbFxuJyAr
Ci0gICAgJ2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicgKwot
ICAgICdmYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRk
ZW4uaHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1j
bGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3Vu
ZGluZy1jbGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZs
dDsvYmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDpcbicgKwotICAgICcoRXZlbnRTZW5k
ZXI6OkV2ZW50U2VuZGVyKTogQWRkZWQgYmluZGluZ3MgZm9yIHNjYWxlUGFnZUJ5KCkuXG4nICsK
LSAgICAnKEV2ZW50U2VuZGVyOjpzY2FsZVBhZ2VCeSk6IEEgd3JhcHBlciBtZXRob2QgZm9yIHNj
YWxlUGFnZSgpIGluIFdlYlZpZXcuXG4nICsKLSAgICAnKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9FdmVudFNlbmRlci5oOlxuJyArCi0gICAgJyogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcDpcbicgKwotICAgICcoVGVzdFNoZWxsOjpyZXNldFRlc3RDb250cm9sbGVyKTog
UmVzZXRzIHRoZSBzY2FsZSBmYWN0b3IgdG8gMS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsK
LSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnTGF5b3V0VGVzdHM6XG4nICsKLSAgICAnJmx0Oy9w
Jmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJyogcGxhdGZvcm0vY2hyb21pdW0t
bGludXgvY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24tZXhwZWN0ZWQu
cG5nOiBBZGRlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3QvcmVw
YWludC9zY2FsZS1wYWdlLXNocmluay1leHBlY3RlZC5wbmc6IEFkZGVkLlxuJyArCi0gICAgJyog
cGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5rLWV4
cGVjdGVkLnR4dDogQWRkZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFz
dC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2RvbS9S
YW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dDogUmVtb3Zl
ZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9FbGVtZW50L3Nj
YWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyAr
Ci0gICAgJyogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFn
ZS1jbGllbnQtcmVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCi0gICAgJyogcGxhdGZv
cm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50
LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCi0gICAgJyogcGxhdGZvcm0vY2hyb21p
dW0td2luL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4cGVjdGVkLnR4
dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dDogRW5hYmxlZCBvbmUgdGVzdC4gRW5hYmxlZCB0d28gdGVzdHMgZm9yIGNocm9taXVt
LWxpbnV4LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxu
JyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8
L2l0ZW0+PGl0ZW0+XG4nICsKLSAgICAnICAgICAgICAgIDxhdXRob3I+cm5pd2FAd2Via2l0Lm9y
ZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPlRodSwgMDQgQXVnIDIwMTEgMDE6
NDE6MjkgR01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5MjMz
ODogUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5lIGZyb20gcjkyMzE1LlxuJyArCi0gICAg
JyogLi4uPC90aXRsZT5cbicgKwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85MjMzOC90cnVuazwvbGluaz5cbicgKwotICAgICcgICAgICA8Z3VpZCBp
c1Blcm1hTGluaz0iZmFsc2UiPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzM4
L3RydW5rPC9ndWlkPlxuJyArCi0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcbicg
KwotICAgICdSZXZlcnQgYW4gZXJyb25lb3VzIHJlYmFzZWxpbmUgZnJvbSAmbHQ7YSBjbGFzcz0i
Y2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMxNSIg
dGl0bGU9IlJlbW92ZSBMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMgZmxhZyBmcm9tIG5h
dmlnYXRvciBJREwgZmlsZXMgLi4uIiZndDtyOTIzMTUmbHQ7L2EmZ3Q7LlxuJyArCi0gICAgJyZs
dDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGZhc3QvZG9tL25hdmln
YXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6XG4nICsKLSAgICAnJmx0Oy9wJmd0
O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAgICAgPGNhdGVnb3J5Pkxv
ZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKwotICAgICcgICAg
ICAgICAgPGF1dGhvcj5ub2FtLnJvc2VudGhhbEBub2tpYS5jb208L2F1dGhvcj5cbicgKwotICAg
ICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDExIDAwOjIyOjIxIEdNVDwvcHViRGF0ZT5c
bicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzMzc6IFtRdF1bVGV4bWFwXVtSRUdS
RVNTSU9OXSBodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5odG1s
IC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIzMzcvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQ
ZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMzNy90
cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsK
LSAgICAnW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dICZsdDthIGNsYXNzPSJleHQtbGluayIgaHJl
Zj0iaHR0cDovL3dlYmtpdC5vcmcvYmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCImZ3Q7
Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cDovL3dlYmtpdC5vcmcv
YmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCZsdDsvYSZndDsgZG9lc25cJ3Qgc2hvdyBj
b21wb3NpdGVkIGNvbnRlbnRcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9
Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTYyOSImZ3Q7Jmx0O3Nw
YW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY1NjI5Jmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtcbicg
KwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3VsYWlu
LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdT
b21lIG5vbi1FUzIgaW5pdGlhbGl6YXRpb24gd2FzIHdyb25nZnVsbHkgI2lmZGVmZWQgaW4gQ1BV
KFg4NikgYW5kIHRodXMgY29tcGlsZWQtb3V0LlxuJyArCi0gICAgJ1doZW4gcHV0IGl0IGluIHRo
ZSBjb3JyZWN0ICNpZmRlZiwgY29tcG9zaXRlZCBsYXllcnMgd2hpY2ggcmVxdWlyZSBhbiBpbnRl
cm1lZGlhdGUgYnVmZmVyXG4nICsKLSAgICAnd29yayBhZ2Fpbi5cbicgKwotICAgICcmbHQ7L3Am
Z3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnTm8gbmV3IHRlc3RzLiBFeGlzdGlu
ZyBvcGFjaXR5IHRlc3RzIGluIExheW91dFRlc3RzL2NvbXBvc2l0aW5nIHRlc3QgdGhpcy5cbicg
KwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnKiBwbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcDpcbicgKwotICAgICcoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKTpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsK
LSAgICAnPC9kZXNjcmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRl
Z29yeT5cbicgKwotICAgICcgICAgPC9pdGVtPjxpdGVtPlxuJyArCi0gICAgJyAgICAgICAgICA8
YXV0aG9yPmNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPC9hdXRob3I+XG4nICsKLSAgICAnICAgICAg
PHB1YkRhdGU+V2VkLCAwMyBBdWcgMjAxMSAwNDoyNjo1MiBHTVQ8L3B1YkRhdGU+XG4nICsKLSAg
ICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMjU5OiBVbnJldmlld2VkLCByZXZlcnRpbmcgcjky
MjU2LlxuJyArCi0gICAgJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IC4u
LjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJt
YUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1OS90cnVu
azwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAg
ICAnVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nICZsdDthIGNsYXNzPSJjaGFuZ2VzZXQiIGhyZWY9Imh0
dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IiB0aXRsZT0iTWFrZSBFdmVudERp
c3BhdGNoTWVkaWF0b3IgUmVmQ291bnRlZC4gLi4uIiZndDtyOTIyNTYmbHQ7L2EmZ3Q7LlxuJyAr
Ci0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIyNTYiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9zcGFu
Jmd0O2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2Jmx0Oy9hJmd0O1xuJyAr
Ci0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NTkzIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZs
dDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1OTMm
bHQ7L2EmZ3Q7XG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyAr
Ci0gICAgJ0NhdXNpbmcgdG9ucyBvZiBjcmFzaGVzIG9uIHRoZSBjaHJvbWl1bSB3aW4gYm90cyAo
UmVxdWVzdGVkIGJ5XG4nICsKLSAgICAnamFtZXNyIG9uICN3ZWJraXQpLlxuJyArCi0gICAgJyZs
dDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdQYXRjaCBieSBTaGVyaWZm
IEJvdCAmYW1wO2x0OyZsdDthIGNsYXNzPSJtYWlsLWxpbmsiIGhyZWY9Im1haWx0bzp3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20iJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9z
cGFuJmd0O3dlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbSZsdDsvYSZndDsmYW1wO2d0OyBvbiAy
MDExLTA4LTAyXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyAr
Ci0gICAgJyogZG9tL0V2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9FdmVudC5oOlxuJyArCi0g
ICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6OkV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6XG4nICsKLSAgICAnKiBkb20vRXZlbnREaXNwYXRj
aGVyLmg6XG4nICsKLSAgICAnKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6XG4nICsKLSAgICAnKiBk
b20vS2V5Ym9hcmRFdmVudC5oOlxuJyArCi0gICAgJyogZG9tL01vdXNlRXZlbnQuY3BwOlxuJyAr
Ci0gICAgJyogZG9tL01vdXNlRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9Ob2RlLmNwcDpcbicg
KwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hFdmVudCk6XG4nICsKLSAgICAnKFdlYkNv
cmU6Ok5vZGU6OmRpc3BhdGNoS2V5RXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpk
aXNwYXRjaE1vdXNlRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaFdo
ZWVsRXZlbnQpOlxuJyArCi0gICAgJyogZG9tL1doZWVsRXZlbnQuY3BwOlxuJyArCi0gICAgJyog
ZG9tL1doZWVsRXZlbnQuaDpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnPC9kZXNj
cmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicgKwot
ICAgICcgICAgPC9pdGVtPlxuJyArCi0gICAgJyA8L2NoYW5uZWw+XG4nICsKLSAgICAnPC9yc3M+
XG4nCi0KLXZhciBrRXhhbXBsZUNvbW1pdERhdGFMaXN0ID0gW3sKLSAgICAicmV2aXNpb24iOiA5
MjM0MiwKLSAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIzNDI6IFN1cHBvcnQgY2FzdCBiZXR3ZWVu
IENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uIiwKLSAgICAidGlt
ZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAyOjA5OjE5IEdNVCIsCi0gICAgInN1bW1hcnkiOiAiU3Vw
cG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBp
biBDU1NTdHlsZVNlbGVjdG9yLiIsCi0gICAgImF1dGhvciI6ICJtYWNwaGVyc29uQGNocm9taXVt
Lm9yZyIsCi0gICAgInJldmlld2VyIjogIlNpbW9uIEZyYXNlciIsCi0gICAgImJ1Z0lEIjogNjU2
NTcsCi0gICAgInJldmVydGVkUmV2aXNpb24iOiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNp
b24iOiA5MjM0MSwKLSAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIzNDE6IEltcGxlbWVudCBFdmVu
dFNlbmRlci5zY2FsZVBhZ2VCeSgpIC4uLiIsCi0gICAgInRpbWUiOiAiVGh1LCAwNCBBdWcgMjAx
MSAwMjowMTozMSBHTVQiLAotICAgICJzdW1tYXJ5IjogIkltcGxlbWVudCBFdmVudFNlbmRlci5z
Y2FsZVBhZ2VCeSgpIiwKLSAgICAiYXV0aG9yIjogIktlbnRhcm8gSGFyYSIsCi0gICAgInJldmll
d2VyIjogIkRhcmluIEZpc2hlciIsCi0gICAgImJ1Z0lEIjogNTgwMTMsCi0gICAgInJldmVydGVk
UmV2aXNpb24iOiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNpb24iOiA5MjMzOCwKLSAgICAi
dGl0bGUiOiAiUmV2aXNpb24gOTIzMzg6IFJldmVydCBhbiBlcnJvbmVvdXMgcmViYXNlbGluZSBm
cm9tIHI5MjMxNS5cbiogLi4uIiwKLSAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAxOjQx
OjI5IEdNVCIsCi0gICAgInN1bW1hcnkiOiAiUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5l
IGZyb20gcjkyMzE1LiIsCi0gICAgImF1dGhvciI6ICJybml3YUB3ZWJraXQub3JnIiwKLSAgICAi
cmV2aWV3ZXIiOiBudWxsLAotICAgICJidWdJRCI6IE5hTiwKLSAgICAicmV2ZXJ0ZWRSZXZpc2lv
biI6IHVuZGVmaW5lZAotfSwgewotICAgICJyZXZpc2lvbiI6IDkyMzM3LAotICAgICJ0aXRsZSI6
ICJSZXZpc2lvbiA5MjMzNzogW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dIGh0dHA6Ly93ZWJraXQu
b3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0bWwgLi4uIiwKLSAgICAidGltZSI6ICJU
aHUsIDA0IEF1ZyAyMDExIDAwOjIyOjIxIEdNVCIsCi0gICAgInN1bW1hcnkiOiAiW1F0XVtUZXht
YXBdW1JFR1JFU1NJT05dICBodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1z
dHlsZS5odG1sIGRvZXNuJ3Qgc2hvdyBjb21wb3NpdGVkIGNvbnRlbnQiLAotICAgICJhdXRob3Ii
OiAibm9hbS5yb3NlbnRoYWxAbm9raWEuY29tIiwKLSAgICAicmV2aWV3ZXIiOiAiQmVuamFtaW4g
UG91bGFpbiIsCi0gICAgImJ1Z0lEIjogNjU2MjksCi0gICAgInJldmVydGVkUmV2aXNpb24iOiB1
bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNpb24iOiA5MjI1OSwKLSAgICAidGl0bGUiOiAiUmV2
aXNpb24gOTIyNTk6IFVucmV2aWV3ZWQsIHJldmVydGluZyByOTIyNTYuXG5odHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi4iLAotICAgICJ0aW1lIjogIldlZCwgMDMgQXVn
IDIwMTEgMDQ6MjY6NTIgR01UIiwKLSAgICAic3VtbWFyeSI6ICJVbnJldmlld2VkLCByZXZlcnRp
bmcgcjkyMjU2LiIsCi0gICAgImF1dGhvciI6ICJTaGVyaWZmIEJvdCIsCi0gICAgInJldmlld2Vy
IjogbnVsbCwKLSAgICAiYnVnSUQiOiA2NTU5MywKLSAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IDky
MjU2Ci19XTsKLQotdGVzdCgiY2hhbmdlc2V0VVJMIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1
YWxzKHRyYWMuY2hhbmdlc2V0VVJMKDEyMzQpLCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvMTIzNCIpOwotfSk7Ci0KLXRlc3QoImxvZ1VSTCIsIDQsIGZ1bmN0aW9uKCkgewotICAg
IGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM0LCAxMjM2LCBmYWxzZSwgZmFsc2UpLCAi
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9MTIzNCZs
aW1pdD00Iik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzQsIHRy
dWUsIGZhbHNlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM0JnN0
b3BfcmV2PTEyMzQmbGltaXQ9MiZ2ZXJib3NlPW9uIik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJM
KCd0cnVuaycsIDEyMzYsIDEyMzYsIGZhbHNlLCB0cnVlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvbG9nL3RydW5rP3Jldj0xMjM2JnN0b3BfcmV2PTEyMzYmbGltaXQ9MiZmb3JtYXQ9cnNzIik7
Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzYsIHRydWUsIHRydWUp
LCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9MTIz
NCZsaW1pdD00JnZlcmJvc2U9b24mZm9ybWF0PXJzcyIpOwotfSk7Ci0KLXRlc3QoInJlY2VudENv
bW1pdERhdGEiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdv
cmtTaW11bGF0b3IoKTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFj
aykKLSAgICB7Ci0gICAgICAgIGVxdWFscyh1cmwsICdodHRwOi8vdHJhYy53ZWJraXQub3JnL2xv
Zy90cnVuaz92ZXJib3NlPW9uJmZvcm1hdD1yc3MmbGltaXQ9MTAnKTsKLSAgICAgICAgc2ltdWxh
dG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFyc2Vy
ID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFyc2Vy
LnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94bWwi
KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0gICAg
fTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFjLnJl
Y2VudENvbW1pdERhdGEoJ3RydW5rJywgMTAsIGZ1bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7Ci0g
ICAgICAgICAgICAkLmVhY2goY29tbWl0RGF0YUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBjb21taXRE
YXRhKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5jbHVkaW5nIHRoZSBlbnRpcmUgbWVzc2FnZSBt
YWtlcyB0aGUgZGVlcEVxdWFsIGJlbG93IHRvIHVud2llbGR5LgotICAgICAgICAgICAgICAgIGRl
bGV0ZSBjb21taXREYXRhLm1lc3NhZ2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGRl
ZXBFcXVhbChjb21taXREYXRhTGlzdCwga0V4YW1wbGVDb21taXREYXRhTGlzdCk7Ci0gICAgICAg
IH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImNvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdlIiwg
MywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9y
KCk7Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewot
ICAgICAgICBlcXVhbHModXJsLCAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2
PTEyMzY1JnN0b3BfcmV2PTEyMzQ1JmxpbWl0PTIyJnZlcmJvc2U9b24mZm9ybWF0PXJzcycpOwot
ICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2YXIgcmVzcG9u
c2VET00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0RGF0YVhNTCwgImFw
cGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00pOwotICAg
ICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIHRyYWMuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5rJywgMTIzNDUsIDEy
MzY1LCBmdW5jdGlvbihjb21taXREYXRhTGlzdCkgewotICAgICAgICAgICAgJC5lYWNoKGNvbW1p
dERhdGFMaXN0LCBmdW5jdGlvbihpbmRleCwgY29tbWl0RGF0YSkgewotICAgICAgICAgICAgICAg
IC8vIEluY2x1ZGluZyB0aGUgZW50aXJlIG1lc3NhZ2UgbWFrZXMgdGhlIGRlZXBFcXVhbCBiZWxv
dyB0byB1bndpZWxkeS4KLSAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNzYWdl
OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoY29tbWl0RGF0YUxpc3Qs
IGtFeGFtcGxlQ29tbWl0RGF0YUxpc3QpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwotCi19
KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvYWN0aW9ucy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zLmpzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zLmpzCShub25leGlz
dGVudCkKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwge307
Ci11aS5hY3Rpb25zID0gdWkuYWN0aW9ucyB8fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi12YXIg
QWN0aW9uID0gYmFzZS5leHRlbmRzKCdidXR0b24nLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9IG51bGw7Ci0gICAgICAgICQodGhpcykuYWRkQ2xh
c3MoJ2FjdGlvbicpOwotICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVu
Y3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE5hbWUpIHsKLSAgICAg
ICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIodGhpcy5fZXZlbnROYW1lKTsKLSAgICAgICAgICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfS5i
aW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG1ha2VEZWZhdWx0OiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgJCh0aGlzKS5hZGRDbGFzcygnZGVmYXVsdCcpOwotICAgICAgICByZXR1cm4gdGhpczsKLSAg
ICB9Ci19KTsKLQotdWkuYWN0aW9ucy5CbGFtZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAg
ICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdCbGFtZSc7
Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICdibGFtZSc7Ci0gICAgICAgIHRoaXMudGl0bGUg
PSAnQmxhbWVzIHRoaXMgZmFpbHVyZSBvbiB0aGlzIHJldmlzaW9uLicKLSAgICB9Ci19KTsKLQot
dWkuYWN0aW9ucy5DbG9zZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAgICBpbml0OiBmdW5j
dGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdDbG9zZSc7Ci0gICAgICAgIHRo
aXMuX2V2ZW50TmFtZSA9ICdjbG9zZSc7Ci0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuUmV2ZXJ0
ID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAg
ICB0aGlzLnRleHRDb250ZW50ID0gJ1JldmVydCc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9
ICdyZXZlcnQnOwotICAgICAgICB0aGlzLnRpdGxlID0gJ1JldmVydHMgdGhpcyByZXZpc2lvbi4n
Ci0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuRXhhbWluZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24s
IHsKLSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdF
eGFtaW5lJzsKLSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ2V4YW1pbmUnOwotICAgICAgICB0
aGlzLnRpdGxlID0gJ0V4YW1pbmUgdGhlc2UgZmFpbHVyZXMgaW4gZGV0YWlsLicKLSAgICB9Ci19
KTsKLQotdWkuYWN0aW9ucy5SZWJhc2VsaW5lID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewotICAg
IGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gJ1JlYmFzZWxp
bmUnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAncmViYXNlbGluZSc7Ci0gICAgfQotfSk7
Ci0KLXVpLmFjdGlvbnMuRXhwZWN0RmFpbHVyZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAg
ICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdFeHBlY3Qg
RmFpbHVyZSc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICdleHBlY3RmYWlsdXJlJzsKLSAg
ICB9Ci19KTsKLQotdWkuYWN0aW9ucy5OZXh0ID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewotICAg
IGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLmlubmVySFRNTCA9ICcmIzk2NTQ7JzsK
LSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ25leHQnOwotICAgICAgICAkKHRoaXMpLmFkZENs
YXNzKCduZXh0Jyk7Ci0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuUHJldmlvdXMgPSBiYXNlLmV4
dGVuZHMoQWN0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMuaW5u
ZXJIVE1MID0gJyYjOTY2NDsnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAncHJldmlvdXMn
OwotICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdwcmV2aW91cycpOwotICAgIH0KLX0pOwotCi11
aS5hY3Rpb25zLkxpc3QgPSBiYXNlLmV4dGVuZHMoJ3VsJywgewotICAgIGluaXQ6IGZ1bmN0aW9u
KGFjdGlvbnMpIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnYWN0aW9ucyc7Ci0gICAgICAg
IGlmICghYWN0aW9ucykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYWN0aW9ucy5mb3JF
YWNoKHRoaXMuYWRkLmJpbmQodGhpcykpOwotICAgIH0sCi0gICAgYWRkOiBmdW5jdGlvbihhY3Rp
b24pCi0gICAgewotICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xp
Jyk7Ci0gICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoYWN0aW9uKTsKLSAgICAgICAgJCh0aGlzKS5h
cHBlbmQoaXRlbSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvYWN0aW9uc191bml0dGVzdHMuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0K
LW1vZHVsZSgndWkuYWN0aW9ucycpOwotCi10ZXN0KCdCdXR0b25zJywgNiwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGJ1dHRvbkluZm9zID0gW3sKLSAgICAgICAgdmlldzogbmV3IHVpLmFjdGlvbnMu
UmV2ZXJ0KCksCi0gICAgICAgIHRleHQ6ICdSZXZlcnQnLAotICAgICAgICBldmVudDogJ3JldmVy
dCcKLSAgICB9LCB7Ci0gICAgICAgIHZpZXc6IG5ldyB1aS5hY3Rpb25zLkV4YW1pbmUoKSwKLSAg
ICAgICAgdGV4dDogJ0V4YW1pbmUnLAotICAgICAgICBldmVudDogJ2V4YW1pbmUnCi0gICAgfSwg
ewotICAgICAgICB2aWV3OiBuZXcgdWkuYWN0aW9ucy5SZWJhc2VsaW5lKCksCi0gICAgICAgIHRl
eHQ6ICdSZWJhc2VsaW5lJywKLSAgICAgICAgZXZlbnQ6ICdyZWJhc2VsaW5lJwotICAgIH1dOwot
ICAgIGJ1dHRvbkluZm9zLmZvckVhY2goZnVuY3Rpb24oYnV0dG9uSW5mbykgewotICAgICAgICBl
cXVhbChidXR0b25JbmZvLnZpZXcudGV4dENvbnRlbnQsIGJ1dHRvbkluZm8udGV4dCk7Ci0gICAg
ICAgIGVxdWFsKGJ1dHRvbkluZm8udmlldy5fZXZlbnROYW1lLCBidXR0b25JbmZvLmV2ZW50KTsK
LSAgICB9KTsKLX0pOwotCi10ZXN0KCdjbGljaycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciBl
eGFtaW5lID0gbmV3IHVpLmFjdGlvbnMuRXhhbWluZSgpOwotICAgICQoZXhhbWluZSkuYmluZCgn
ZXhhbWluZScsIGZ1bmN0aW9uKCkgewotICAgICAgICBvaygnRXhhbWluZSB0cmlnZ2VyZWQuJyk7
Ci0gICAgfSk7Ci0gICAgJChleGFtaW5lKS50cmlnZ2VyKCdjbGljaycpOwotfSk7Ci0KLXRlc3Qo
J2RlZmF1bHQnLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgbmV4dCA9IG5ldyB1aS5hY3Rpb25z
Lk5leHQoKTsKLSAgICBlcXVhbChuZXh0Lm1ha2VEZWZhdWx0KCksIG5leHQpOwotICAgIGVxdWFs
KG5leHQuY2xhc3NOYW1lLCAnYWN0aW9uIG5leHQgZGVmYXVsdCcpOwotfSk7Ci0KLXRlc3QoJ0xp
c3QnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGlzdCA9IG5ldyB1aS5hY3Rpb25zLkxpc3Qo
WwotICAgICAgICBuZXcgdWkuYWN0aW9ucy5SZWJhc2VsaW5lKCksCi0gICAgICAgIG5ldyB1aS5h
Y3Rpb25zLlByZXZpb3VzKCksCi0gICAgICAgIG5ldyB1aS5hY3Rpb25zLk5leHQoKQotICAgIF0p
OwotICAgIGVxdWFsKGxpc3QuaW5uZXJIVE1MLAotICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9
ImFjdGlvbiI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICc8bGk+PGJ1dHRv
biBjbGFzcz0iYWN0aW9uIHByZXZpb3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPicgKwotICAgICAg
ICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xpPicp
OwotfSk7Ci0KLX0oKSk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJl
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJlcy5q
cwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFpbHVy
ZXMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIg
dWkgPSB1aSB8fCB7fTsKLXVpLmZhaWx1cmVzID0gdWkuZmFpbHVyZXMgfHwge307Ci0KLShmdW5j
dGlvbigpewotCi12YXIga0J1aWxkaW5nUmVzdWx0ID0gJ0JVSUxESU5HJzsKLQotdWkuZmFpbHVy
ZXMuQnVpbGRlciA9IGJhc2UuZXh0ZW5kcygnYScsIHsKLSAgICBpbml0OiBmdW5jdGlvbihidWls
ZGVyTmFtZSwgZmFpbHVyZXMpCi0gICAgewotICAgICAgICB2YXIgcGxhdGZvcm1CdWlsZGVycyA9
IGNvbmZpZy5jdXJyZW50QnVpbGRlcnMoKTsKLSAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSBw
bGF0Zm9ybUJ1aWxkZXJzW2J1aWxkZXJOYW1lXTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRpb24p
IHsKLSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZlcnNpb24pCi0gICAgICAgICAgICAg
ICAgdGhpcy5fYWRkU3BhbigndmVyc2lvbicsIGNvbmZpZ3VyYXRpb24udmVyc2lvbik7Ci0gICAg
ICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5pczY0Yml0KQotICAgICAgICAgICAgICAgIHRoaXMu
X2FkZFNwYW4oJ2FyY2hpdGVjdHVyZScsICc2NC1iaXQnKTsKLSAgICAgICAgICAgIHRoaXMuX2Nv
bmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHRoaXMuX2FkZFNwYW4oJ3ZlcnNpb24nLCBidWlsZGVyTmFtZSk7Ci0KLSAgICAgICAgdGhpcy5j
bGFzc05hbWUgPSAnZmFpbGluZy1idWlsZGVyJzsKLSAgICAgICAgdGhpcy50YXJnZXQgPSAnX2Js
YW5rJzsKLSAgICAgICAgdGhpcy5ocmVmID0gdWkuZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVpbGRl
ck5hbWUpOwotICAgICAgICBpZiAoZmFpbHVyZXMpCi0gICAgICAgICAgICB0aGlzLl9hZGRTcGFu
KCdmYWlsdXJlcycsICcgJyArIGZhaWx1cmVzLmpvaW4oJywgJykpOwotICAgIH0sCi0gICAgX2Fk
ZFNwYW46IGZ1bmN0aW9uKGNsYXNzTmFtZSwgdGV4dCkKLSAgICB7Ci0gICAgICAgIHZhciBzcGFu
ID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwotICAg
ICAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICAgICAgc3Bhbi50ZXh0Q29udGVu
dCA9IHRleHQ7Ci0gICAgfSwKLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGNvbmZpZ3VyYXRpb24pCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdGlvbiAmJiB0aGlzLl9jb25maWd1
cmF0aW9uLmlzNjRiaXQgPT0gY29uZmlndXJhdGlvbi5pczY0Yml0ICYmIHRoaXMuX2NvbmZpZ3Vy
YXRpb24udmVyc2lvbiA9PSBjb25maWd1cmF0aW9uLnZlcnNpb247IAotICAgIH0KLX0pOwotCi1m
dW5jdGlvbiBjZWxsQ29udGFpbnNDb25maWd1cmF0aW9uKGNlbGwsIGNvbmZpZ3VyYXRpb24pCi17
Ci0gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwoY2VsbC5jaGlsZHJlbiwgZnVu
Y3Rpb24oY29uZmlndXJhdGlvbkVsZW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRp
b25FbGVtZW50LmVxdWFscyAmJiBjb25maWd1cmF0aW9uRWxlbWVudC5lcXVhbHMoY29uZmlndXJh
dGlvbik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNlbGxCeUJ1aWxkVHlwZShyb3csIGNvbmZp
Z3VyYXRpb24pCi17Ci0gICAgcmV0dXJuIHJvdy5jZWxsc1tjb25maWd1cmF0aW9uLmRlYnVnID8g
MiA6IDFdOwotfQotCi11aS5mYWlsdXJlcy5GYWlsdXJlR3JpZCA9IGJhc2UuZXh0ZW5kcygndGFi
bGUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05h
bWUgPSAnZmFpbHVyZXMnOwotICAgICAgICB2YXIgdGl0bGVzID0gdGhpcy5jcmVhdGVUSGVhZCgp
Lmluc2VydFJvdygpOwotICAgICAgICB0aXRsZXMuaW5zZXJ0Q2VsbCgpLnRleHRDb250ZW50ID0g
J2RlYnVnJzsKLSAgICAgICAgdGl0bGVzLmluc2VydENlbGwoKS50ZXh0Q29udGVudCA9ICdyZWxl
YXNlJzsKLSAgICAgICAgdGl0bGVzLmluc2VydENlbGwoKS50ZXh0Q29udGVudCA9ICd0eXBlJzsK
LSAgICAgICAgdGhpcy5fYm9keSA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgndGJvZHknKSk7Ci0gICAgICAgIHRoaXMuX3Jlc2V0KCk7Ci0gICAgfSwKLSAgICBfcm93
QnlSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciByb3cgPSB0aGlz
Ll9yZXN1bHRSb3dzW3Jlc3VsdF07Ci0gICAgICAgICQocm93KS5zaG93KCk7Ci0gICAgICAgIGlm
IChyb3cpCi0gICAgICAgICAgICByZXR1cm4gcm93OwotCi0gICAgICAgIHJvdyA9IHRoaXMuX3Jl
c3VsdFJvd3NbcmVzdWx0XSA9IHRoaXMuX2JvZHkuaW5zZXJ0Um93KDApOwotICAgICAgICByb3cu
Y2xhc3NOYW1lID0gcmVzdWx0OwotICAgICAgICByb3cuaW5zZXJ0Q2VsbCgpOwotICAgICAgICBy
b3cuaW5zZXJ0Q2VsbCgpOwotICAgICAgICB2YXIgdGl0bGVDZWxsID0gcm93Lmluc2VydENlbGwo
KTsKLSAgICAgICAgdGl0bGVDZWxsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J3NwYW4nKSkudGV4dENvbnRlbnQgPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByb3c7Ci0gICAg
fSwKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fcGVuZGluZ1Jlc2V0KQotICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsKLQot
ICAgICAgICBpZiAoIXJlc3VsdHNCeUJ1aWxkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgT2JqZWN0LmtleXMocmVzdWx0c0J5QnVpbGRlcikuZm9yRWFjaChmdW5jdGlvbihidWls
ZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSBjb25maWcua1BsYXRm
b3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5idWlsZGVyc1tidWlsZGVyTmFtZV07Ci0gICAg
ICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3cgIlVua25v
d24gYnVpbGRlciBuYW1lOiAiICsgYnVpbGRlck5hbWU7Ci0gICAgICAgICAgICB2YXIgcm93ID0g
dGhpcy5fcm93QnlSZXN1bHQocmVzdWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0uYWN0dWFsKTsK
LSAgICAgICAgICAgIHZhciBjZWxsID0gY2VsbEJ5QnVpbGRUeXBlKHJvdywgY29uZmlndXJhdGlv
bik7Ci0gICAgICAgICAgICBpZiAoY2VsbENvbnRhaW5zQ29uZmlndXJhdGlvbihjZWxsLCBjb25m
aWd1cmF0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjZWxsLmFw
cGVuZENoaWxkKG5ldyB1aS5mYWlsdXJlcy5CdWlsZGVyKGJ1aWxkZXJOYW1lKSk7Ci0gICAgICAg
IH0sIHRoaXMpOwotICAgIH0sCi0gICAgcHVyZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3BlbmRpbmdSZXNldCA9IHRydWU7Ci0gICAgfSwKLSAgICBfcmVzZXQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdSZXNldCA9IGZhbHNlOwotICAgICAgICB0
aGlzLl9yZXN1bHRSb3dzID0ge307Ci0gICAgICAgICQodGhpcy5fYm9keSkuZW1wdHkoKTsKLSAg
ICAgICAgLy8gQWRkIHRoZSBCVUlMRElORyByb3cgZWFnZXJseSBzbyB0aGF0IGl0IGFwcGVhcnMg
bGFzdC4KLSAgICAgICAgdGhpcy5fcm93QnlSZXN1bHQoa0J1aWxkaW5nUmVzdWx0KTsKLSAgICAg
ICAgJCh0aGlzLl9yZXN1bHRSb3dzW2tCdWlsZGluZ1Jlc3VsdF0pLmhpZGUoKTsKLSAgICB9Ci19
KTsKLQotdWkuZmFpbHVyZXMuTGlzdEl0ZW0gPSBiYXNlLmV4dGVuZHMoJ2xpJywgewotICAgIGlu
aXQ6IGZ1bmN0aW9uKGdyb3VwTmFtZSwgZmFpbGluZ1Rlc3RzTGlzdCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX2ZhaWxpbmdUZXN0c0xpc3QgPSBmYWlsaW5nVGVzdHNMaXN0OwotICAgICAgICB0aGlz
LmFwcGVuZENoaWxkKG5ldyB1aS5hY3Rpb25zLkxpc3QoWwotICAgICAgICAgICAgbmV3IHVpLmFj
dGlvbnMuRXhhbWluZSgpLm1ha2VEZWZhdWx0KCksCi0gICAgICAgIF0pKTsKLSAgICAgICAgdmFy
IGxhYmVsID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcp
KQotICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IGZhaWxpbmdUZXN0c0xpc3QubGVuZ3RoID09
IDEgPyBmYWlsaW5nVGVzdHNMaXN0WzBdIDogZ3JvdXBOYW1lOwotICAgIH0sCi19KTsKLQotdWku
ZmFpbHVyZXMuTGlzdCA9IGJhc2UuZXh0ZW5kcygndWwnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnZmFpbHVyZXMnOwotICAgICAgICB0
aGlzLnRleHRDb250ZW50ID0gJ0xvYWRpbmcuLi4nOwotICAgIH0KLX0pOwotCi19KSgpOwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFpbHVyZXMuanMK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy91aS9mYWlsdXJlc191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0KLW1v
ZHVsZSgndWkuZmFpbHVyZXMnKTsKLQotdGVzdCgnQnVpbGRlcicsIDYsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgdWkuZmFpbHVy
ZXMuQnVpbGRlcigiV2Via2l0IExpbnV4IiwgWyJ1cGRhdGUiLCAid2Via2l0X3Rlc3RzIl0pOwot
ICAgIGRlZXBFcXVhbChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb25maWd1cmF0aW9uLl9f
cHJvdG9fXykuc29ydCgpLCBbCi0gICAgICAgICdfYWRkU3BhbicsCi0gICAgICAgICdlcXVhbHMn
LAotICAgICAgICAnaW5pdCcsCi0gICAgXSk7Ci0gICAgZXF1YWwoY29uZmlndXJhdGlvbi5vdXRl
ckhUTUwsICc8YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0i
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVp
bGRlcj1XZWJraXQrTGludXgiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwvc3Bhbj48c3Bh
biBjbGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+PHNwYW4gY2xhc3M9ImZhaWx1cmVz
Ij4gdXBkYXRlLCB3ZWJraXRfdGVzdHM8L3NwYW4+PC9hPicpOwotICAgIGNvbmZpZ3VyYXRpb24g
PSBuZXcgdWkuZmFpbHVyZXMuQnVpbGRlcigiV2Via2l0IFdpbiIpOwotICAgIGVxdWFsKGNvbmZp
Z3VyYXRpb24ub3V0ZXJIVE1MLCAnPGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJf
YmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQv
d2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K1dpbiI+PHNwYW4gY2xhc3M9InZlcnNpb24iPnhwPC9z
cGFuPjwvYT4nKTsKLSAgICBjb25maWd1cmF0aW9uLl9hZGRTcGFuKCdmb28nLCAnYmFyJyk7Ci0g
ICAgZXF1YWwoY29uZmlndXJhdGlvbi5vdXRlckhUTUwsICc8YSBjbGFzcz0iZmFpbGluZy1idWls
ZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2No
cm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQrV2luIj48c3BhbiBjbGFzcz0i
dmVyc2lvbiI+eHA8L3NwYW4+PHNwYW4gY2xhc3M9ImZvbyI+YmFyPC9zcGFuPjwvYT4nKTsKLSAg
ICBvayhjb25maWd1cmF0aW9uLmVxdWFscyh7dmVyc2lvbjogJ3hwJ30pKTsKLSAgICBvayghY29u
ZmlndXJhdGlvbi5lcXVhbHMoe3ZlcnNpb246ICdsdWNpZCcsIGlzNjRiaXQ6IHRydWV9KSk7Ci19
KTsKLQotdGVzdCgnRmFpbHVyZUdyaWQnLCAxMCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGdyaWQg
PSBuZXcgdWkuZmFpbHVyZXMuRmFpbHVyZUdyaWQoKTsKLSAgICBkZWVwRXF1YWwoT2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXMoZ3JpZC5fX3Byb3RvX18pLnNvcnQoKSwgWwotICAgICAgICAiX3Jl
c2V0IiwKLSAgICAgICAgIl9yb3dCeVJlc3VsdCIsCi0gICAgICAgICJpbml0IiwKLSAgICAgICAg
InB1cmdlIiwKLSAgICAgICAgInVwZGF0ZSIKLSAgICBdKTsKLSAgICBlcXVhbChncmlkLm91dGVy
SFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAnPHRoZWFkPjx0cj48
dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicg
KwotICAgICAgICAnPHRib2R5Pjx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBu
b25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwv
dHI+PC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsKLSAgICB2YXIgcm93ID0gZ3JpZC5fcm93
QnlSZXN1bHQoJ1RFWFQnKTsKLSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBjbGFz
cz0iZmFpbHVyZXMiPicgKwotICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJl
bGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRib2R5
PicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAgICAgICAgICAg
Jzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+JyArCi0gICAgICAg
ICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0i
ZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48
dGQ+PC90ZD48L3RyPicgKwotICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsK
LSAgICBlcXVhbChyb3cub3V0ZXJIVE1MLCAnPHRyIGNsYXNzPSJURVhUIj48dGQ+PHNwYW4+VEVY
VDwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+Jyk7Ci0gICAgZ3JpZC51cGRhdGUo
e30pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1MLCAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+
JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRk
PmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICc8dGJvZHk+JyArCi0gICAgICAg
ICAgICAnPHRyIGNsYXNzPSJURVhUIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRF
WFQ8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3RyPicg
KwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25l
OyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+
JyArCi0gICAgICAgICc8L3Rib2R5PicgKwotICAgICc8L3RhYmxlPicpOwotICAgIHJhaXNlcyhm
dW5jdGlvbigpIHsKLSAgICAgICAgZ3JpZC51cGRhdGUoeydBdGFyaSc6IHt9fSkKLSAgICB9KTsK
LSAgICBncmlkLnVwZGF0ZSh7J1dlYmtpdCBMaW51eCAoZGJnKSc6IHsgYWN0dWFsOiAnVEVYVCd9
fSk7Ci0gICAgZXF1YWwoZ3JpZC5vdXRlckhUTUwsICc8dGFibGUgY2xhc3M9ImZhaWx1cmVzIj4n
ICsKLSAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+
ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgJzx0Ym9keT4nICsKLSAgICAgICAg
ICAgICc8dHIgY2xhc3M9IlRFWFQiIHN0eWxlPSIiPicgKwotICAgICAgICAgICAgICAgICc8dGQ+
PHNwYW4+VEVYVDwvc3Bhbj48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsK
LSAgICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0i
X2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0
L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9InZlcnNp
b24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bhbj48
L2E+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzx0ciBjbGFz
cz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwv
c3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAgICc8L3Rib2R5Picg
KwotICAgICc8L3RhYmxlPicpOwotICAgIGdyaWQudXBkYXRlKHsnV2Via2l0IE1hYzEwLjYnOiB7
IGFjdHVhbDogJ0lNQUdFK1RFWFQnfX0pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1MLCAnPHRh
YmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90
ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAg
ICc8dGJvZHk+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJJTUFHRStURVhUIj4nICsKLSAg
ICAgICAgICAgICAgICAnPHRkPjxzcGFuPklNQUdFK1RFWFQ8L3NwYW4+PC90ZD4nICsKLSAgICAg
ICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5r
IiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVy
ZmFsbD9idWlsZGVyPVdlYmtpdCtNYWMxMC42Ij48c3BhbiBjbGFzcz0idmVyc2lvbiI+c25vd2xl
b3BhcmQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48L3RkPicgKwot
ICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJURVhUIiBzdHls
ZT0iIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90ZD4nICsK
LSAgICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48YSBj
bGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQr
TGludXgrKGRiZykiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwvc3Bhbj48c3BhbiBjbGFz
cz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAn
PC90cj4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxh
eTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90
ZD48L3RyPicgKwotICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsKLSAgICBn
cmlkLnVwZGF0ZSh7J1dlYmtpdCBNYWMxMC42JzogeyBhY3R1YWw6ICdJTUFHRStURVhUJ319KTsK
LSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwot
ICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1
ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAgICAg
Jzx0ciBjbGFzcz0iSU1BR0UrVEVYVCIgc3R5bGU9IiI+JyArCi0gICAgICAgICAgICAgICAgJzx0
ZD48c3Bhbj5JTUFHRStURVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48
YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJr
aXQrTWFjMTAuNiI+PHNwYW4gY2xhc3M9InZlcnNpb24iPnNub3dsZW9wYXJkPC9zcGFuPjwvYT48
L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3Ry
PicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCIgc3R5bGU9IiI+JyArCi0gICAgICAg
ICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAg
Jzx0ZD48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PGEgY2xhc3M9ImZhaWxpbmctYnVp
bGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K0xpbnV4KyhkYmcpIj48c3Bh
biBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3NwYW4+PHNwYW4gY2xhc3M9ImFyY2hpdGVjdHVyZSI+
NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAg
ICAgICAnPHRyIGNsYXNzPSJCVUlMRElORyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRkPjxz
cGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4nICsKLSAgICAg
ICAgJzwvdGJvZHk+JyArCi0gICAgJzwvdGFibGU+Jyk7Ci0gICAgZ3JpZC5wdXJnZSgpOwotICAg
IGdyaWQudXBkYXRlKHsnV2Via2l0IExpbnV4IChkYmcpJzogeyBhY3R1YWw6ICdURVhUJ319KTsK
LSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwot
ICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1
ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAgICAg
Jzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9z
cGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48L3RkPicgKwotICAgICAgICAgICAg
ICAgICc8dGQ+PGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9
Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1
aWxkZXI9V2Via2l0K0xpbnV4KyhkYmcpIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3Nw
YW4+PHNwYW4gY2xhc3M9ImFyY2hpdGVjdHVyZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwot
ICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJCVUlMRElORyIg
c3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+PHRk
PjwvdGQ+PHRkPjwvdGQ+PC90cj4nICsKLSAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgJzwvdGFi
bGU+Jyk7Ci19KTsKLQotfSgpKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpz
CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmlj
YXRpb25zLmpzCShub25leGlzdGVudCkKQEAgLTEsMjYyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
dmFyIHVpID0gdWkgfHwge307Ci11aS5ub3RpZmljYXRpb25zID0gdWkubm90aWZpY2F0aW9ucyB8
fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXZhciBrTWF4VGVzdHNQZXJHcm91cCA9IDM7Ci0KLXVp
Lm5vdGlmaWNhdGlvbnMuU3RyZWFtID0gYmFzZS5leHRlbmRzKCdvbCcsIHsKLSAgICBpbml0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdub3RpZmljYXRpb25z
JzsKLSAgICB9LAotICAgIGFkZDogZnVuY3Rpb24obm90aWZpY2F0aW9uKQotICAgIHsKLSAgICAg
ICAgdmFyIGluc2VydEJlZm9yZSA9IG51bGw7Ci0gICAgICAgIEFycmF5LnByb3RvdHlwZS5zb21l
LmNhbGwodGhpcy5jaGlsZHJlbiwgZnVuY3Rpb24oZXhpc3RpbmdOb3RpZmljYXRpb24pIHsKLSAg
ICAgICAgICAgIGlmIChleGlzdGluZ05vdGlmaWNhdGlvbi5pbmRleCgpIDwgbm90aWZpY2F0aW9u
LmluZGV4KCkpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUgPSBleGlzdGluZ05vdGlm
aWNhdGlvbjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfSk7Ci0gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5vdGlmaWNhdGlvbiwgaW5zZXJ0
QmVmb3JlKTsKLSAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKLSAgICB9Ci19KTsKLQotdWku
bm90aWZpY2F0aW9ucy5Ob3RpZmljYXRpb24gPSBiYXNlLmV4dGVuZHMoJ2xpJywgewotICAgIGlu
aXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hvdyA9IHRoaXMuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICB0aGlzLl9ob3cuY2xh
c3NOYW1lID0gJ2hvdyc7Ci0gICAgICAgIHRoaXMuX3doYXQgPSB0aGlzLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgdGhpcy5fd2hhdC5jbGFzc05h
bWUgPSAnd2hhdCc7Ci0gICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICAgICAgJCh0aGlzKS5o
aWRlKCkuZmFkZUluKCdmYXN0Jyk7Ci0gICAgfSwKLSAgICBpbmRleDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4OwotICAgIH0sCi0gICAgc2V0SW5kZXg6IGZ1
bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKLSAgICB9
LAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVz
ZSBmYWRlIGluL291dCBlZmZlY3RzIGFyZSBsYW1lLgotICAgICAgICAkKHRoaXMpLmZhZGVPdXQo
ZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYgdGhp
cy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICB9KTsKLSAgICB9LAotfSk7
Ci0KLXVpLm5vdGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5kcyh1aS5ub3RpZmljYXRpb25z
Lk5vdGlmaWNhdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewotICAg
ICAgICB0aGlzLnVwZGF0ZShtZXNzYWdlKTsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24o
bWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3doYXQudGV4dENvbnRlbnQgPSBtZXNzYWdl
OwotICAgIH0sCi0gICAgdXBkYXRlV2l0aE5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewotICAg
ICAgICAkKHRoaXMuX3doYXQpLmVtcHR5KCk7Ci0gICAgICAgIHRoaXMuX3doYXQuYXBwZW5kQ2hp
bGQobm9kZSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RHcm91
cCA9IGJhc2UuZXh0ZW5kcygnbGknLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZ3JvdXBOYW1lLCB0
ZXN0TmFtZUxpc3QpCi0gICAgewotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGJhc2UuY3JlYXRl
TGlua05vZGUodWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkKHRlc3ROYW1lTGlzdCksIGdyb3Vw
TmFtZSwgJ19ibGFuaycpKTsKLSAgICB9Ci19KTsKLQotdmFyIENhdXNlID0gYmFzZS5leHRlbmRz
KCdsaScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9kZXNj
cmlwdGlvbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jykp
OwotICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAnZGVzY3JpcHRpb24nOwot
ICAgIH0KLX0pOwotCi11aS5ub3RpZmljYXRpb25zLlN1c3BpY2lvdXNDb21taXQgPSBiYXNlLmV4
dGVuZHMoQ2F1c2UsIHsKLSAgICBpbml0OiBmdW5jdGlvbihjb21taXREYXRhKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fcmV2aXNpb24gPSBjb21taXREYXRhLnJldmlzaW9uOwotICAgICAgICB0aGlz
Ll9kZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtOb2RlKHRyYWMuY2hhbmdl
c2V0VVJMKGNvbW1pdERhdGEucmV2aXNpb24pLCBjb21taXREYXRhLnJldmlzaW9uLCAnX2JsYW5r
JykpOwotICAgICAgICB0aGlzLl9kZXRhaWxzID0gdGhpcy5fZGVzY3JpcHRpb24uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKLSAgICAgICAgdGhpcy5fYWRkRGV0
YWlsKCdzdW1tYXJ5JywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgnYXV0
aG9yJywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgncmV2aWV3ZXInLCBj
b21taXREYXRhKTsKLSAgICAgICAgdGhpcy5fYWRkRGV0YWlsKCdidWdJRCcsIGNvbW1pdERhdGEs
IGJ1Z3ppbGxhLmJ1Z1VSTCk7Ci0gICAgfSwKLSAgICBoYXNSZXZpc2lvbjogZnVuY3Rpb24ocmV2
aXNpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb24gPT0gcmV2aXNpb247
Ci0gICAgfSwKLSAgICBfYWRkRGV0YWlsOiBmdW5jdGlvbihwYXJ0LCBjb21taXREYXRhLCBsaW5r
RnVuY3Rpb24pCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGNvbW1pdERhdGFbcGFydF07
Ci0gICAgICAgIGlmICghY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2
YXIgc3BhbiA9IHRoaXMuX2RldGFpbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnc3BhbicpKTsKLSAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBwYXJ0OwotICAgICAgICAKLSAg
ICAgICAgaWYgKGxpbmtGdW5jdGlvbikgewotICAgICAgICAgICAgdmFyIGxpbmsgPSBiYXNlLmNy
ZWF0ZUxpbmtOb2RlKGxpbmtGdW5jdGlvbihjb250ZW50KSwgY29udGVudCwgJ19ibGFuaycpOwot
ICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChsaW5rKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gY29udGVudDsKLSAgICB9Ci19KTsKLQotdWkubm90
aWZpY2F0aW9ucy5GYWlsdXJlID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlvbnMuTm90aWZp
Y2F0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGlt
ZSA9IHRoaXMuX2hvdy5hcHBlbmRDaGlsZChuZXcgdWkuUmVsYXRpdmVUaW1lKCkpOwotICAgICAg
ICB0aGlzLl9wcm9ibGVtID0gdGhpcy5fd2hhdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHRoaXMuX3Byb2JsZW0uY2xhc3NOYW1lID0gJ3Byb2Js
ZW0nOwotICAgICAgICB0aGlzLl9lZmZlY3RzID0gdGhpcy5fcHJvYmxlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKLSAgICAgICAgdGhpcy5fZWZmZWN0cy5jbGFz
c05hbWUgPSAnZWZmZWN0cyc7Ci0gICAgICAgIHRoaXMuX2NhdXNlcyA9IHRoaXMuX3doYXQuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKSk7Ci0gICAgICAgIHRoaXMuX2Nh
dXNlcy5jbGFzc05hbWUgPSAnY2F1c2VzJzsKLSAgICB9LAotICAgIGRhdGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90aW1lLmRhdGU7Ci0gICAgfQotfSk7Ci0KLXVp
Lm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RzID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlv
bnMuRmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBGSVhNRTog
Q29udmVydCBhY3Rpb25zIHRvIGEgbGluayBmcm9tIHRlc3QhCi0gICAgICAgIHRoaXMuX3Byb2Js
ZW0uYXBwZW5kQ2hpbGQobmV3IHVpLmFjdGlvbnMuTGlzdChbCi0gICAgICAgICAgICBuZXcgdWku
YWN0aW9ucy5FeGFtaW5lKCkubWFrZURlZmF1bHQoKSwKLSAgICAgICAgICAgIG5ldyB1aS5hY3Rp
b25zLlJlYmFzZWxpbmUoKSwKLSAgICAgICAgXSkpOwotICAgICAgICB0aGlzLl90ZXN0TmFtZUxp
c3QgPSBbXTsKLSAgICB9LAotICAgIHRlc3ROYW1lTGlzdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3Rlc3ROYW1lTGlzdDsKLSAgICB9LAotICAgIGNvbnRhaW5zRmFp
bHVyZUFuYWx5c2lzOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fdGVzdE5hbWVMaXN0LmluZGV4T2YoZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1l
KSAhPSAtMTsKLSAgICB9LAotICAgIGFkZEZhaWx1cmVBbmFseXNpczogZnVuY3Rpb24oZmFpbHVy
ZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuY29udGFpbnNGYWlsdXJlQW5hbHlz
aXMoZmFpbHVyZUFuYWx5c2lzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
dGhpcy5fdGVzdE5hbWVMaXN0LnB1c2goZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lKTsKLSAgICAg
ICAgJCh0aGlzLl9lZmZlY3RzKS5lbXB0eSgpOwotICAgICAgICB0aGlzLl9mb3JFYWNoVGVzdEdy
b3VwKGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVzdE5hbWVMaXN0KSB7Ci0gICAgICAgICAgICB0aGlz
Ll9lZmZlY3RzLmFwcGVuZENoaWxkKG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0R3Jv
dXAoZ3JvdXBOYW1lLCB0ZXN0TmFtZUxpc3QpKQotICAgICAgICB9LmJpbmQodGhpcykpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotICAgIF9mb3JFYWNoVGVzdEdyb3VwOiBmdW5jdGlv
bihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBpbmRpdmlkdWFsVGVzdHMgPSBbXTsKLSAg
ICAgICAgYmFzZS5mb3JFYWNoRGlyZWN0b3J5KHRoaXMuX3Rlc3ROYW1lTGlzdCwgZnVuY3Rpb24o
Z3JvdXBMYWJlbCwgdGVzdHNJbkRpcmVjdG9yeSkgewotICAgICAgICAgICAgaWYgKHRlc3RzSW5E
aXJlY3RvcnkubGVuZ3RoIDw9IGtNYXhUZXN0c1Blckdyb3VwKSB7Ci0gICAgICAgICAgICAgICAg
aW5kaXZpZHVhbFRlc3RzID0gaW5kaXZpZHVhbFRlc3RzLmNvbmNhdCh0ZXN0c0luRGlyZWN0b3J5
KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBj
YWxsYmFjayhncm91cExhYmVsLCB0ZXN0c0luRGlyZWN0b3J5KTsKLSAgICAgICAgfSk7Ci0gICAg
ICAgIGluZGl2aWR1YWxUZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFjayh0ZXN0TmFtZSwgW3Rlc3ROYW1lXSk7Ci0gICAgICAgIH0pOwotICAgIH0K
LX0pOwotCi11aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkgPSBiYXNlLmV4dGVu
ZHModWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMsIHsKLSAgICBpbml0OiBmdW5jdGlvbigp
IHsKLSAgICAgICAgdGhpcy5fd2hlcmUgPSB0aGlzLl9ob3cuYXBwZW5kQ2hpbGQobmV3IHVpLmZh
aWx1cmVzLkZhaWx1cmVHcmlkKCkpOwotICAgICAgICB0aGlzLl9jb21taXREYXRhUGlubmVkID0g
ZmFsc2U7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMuX3do
ZXJlLnB1cmdlKCk7Ci0gICAgfSwKLSAgICB1cGRhdGVCdWlsZGVyUmVzdWx0czogZnVuY3Rpb24o
cmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCi0gICAgewotICAgICAgICB0aGlzLl93aGVyZS51cGRhdGUo
cmVzdWx0Tm9kZXNCeUJ1aWxkZXIpOwotICAgIH0sCi0gICAgYWRkRmFpbHVyZUFuYWx5c2lzOiBm
dW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZUJ1aWxk
ZXJSZXN1bHRzKGZhaWx1cmVBbmFseXNpcy5yZXN1bHROb2Rlc0J5QnVpbGRlcik7Ci0gICAgICAg
IGlmICghdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMucHJvdG90eXBlLmFkZEZhaWx1cmVB
bmFseXNpcy5jYWxsKHRoaXMsIGZhaWx1cmVBbmFseXNpcykpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSwKLSAgICBwaW5Ub0NvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdGhpcy5fY29tbWl0RGF0YVBpbm5lZCA9IHRydWU7Ci0gICAgICAg
ICQodGhpcy5fY2F1c2VzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBpZiAodGhpcy5oYXNSZXZpc2lvbihjb21taXREYXRhLnJldmlzaW9uKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAkKHRoaXMpLmRldGFjaCgpOwotICAgICAgICB9KTsK
LSAgICB9LAotICAgIGFkZENvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCi0gICAgewot
ICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAgICAgIHJldHVybiBu
dWxsOwotICAgICAgICB2YXIgY29tbWl0RGF0YURhdGUgPSBuZXcgRGF0ZShjb21taXREYXRhLnRp
bWUpOwotICAgICAgICBpZiAodGhpcy5fdGltZS5kYXRlID4gY29tbWl0RGF0YURhdGUpOyB7Ci0g
ICAgICAgICAgICB0aGlzLnNldEluZGV4KGNvbW1pdERhdGFEYXRlLmdldFRpbWUoKSk7Ci0gICAg
ICAgICAgICB0aGlzLl90aW1lLnNldERhdGUoY29tbWl0RGF0YURhdGUpOwotICAgICAgICB9Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9jYXVzZXMuYXBwZW5kQ2hpbGQobmV3IHVpLm5vdGlmaWNhdGlv
bnMuU3VzcGljaW91c0NvbW1pdChjb21taXREYXRhKSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5vdGlm
aWNhdGlvbnMuQnVpbGRlcnNGYWlsaW5nID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlvbnMu
RmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewotICAgICAgICB0
aGlzLl9wcm9ibGVtLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
ICsgJzonKSwgdGhpcy5fcHJvYmxlbS5maXJzdENoaWxkKTsKLSAgICB9LAotICAgIHNldEZhaWxp
bmdCdWlsZGVyczogZnVuY3Rpb24oZmFpbHVyZXNMaXN0KQotICAgIHsKLSAgICAgICAgJCh0aGlz
Ll9lZmZlY3RzKS5lbXB0eSgpLmFwcGVuZChPYmplY3Qua2V5cyhmYWlsdXJlc0xpc3QpLm1hcChm
dW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGVmZmVjdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICBlZmZlY3QuY2xhc3NOYW1lID0gJ2J1
aWxkZXInOwotICAgICAgICAgICAgZWZmZWN0LmFwcGVuZENoaWxkKG5ldyB1aS5mYWlsdXJlcy5C
dWlsZGVyKGJ1aWxkZXJOYW1lLCBmYWlsdXJlc0xpc3RbYnVpbGRlck5hbWVdKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZWZmZWN0OwotICAgICAgICB9KSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRp
b25zLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1M
RgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191
bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMzcgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoJ3VpLm5vdGlmaWNhdGlvbnMnKTsKLQotdGVzdCgn
Tm90aWZpY2F0aW9uJywgNSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG5vdGlmaWNhdGlvbiA9IG5l
dyB1aS5ub3RpZmljYXRpb25zLk5vdGlmaWNhdGlvbigpOwotICAgIGVxdWFsKG5vdGlmaWNhdGlv
bi50YWdOYW1lLCAnTEknKTsKLSAgICBlcXVhbChub3RpZmljYXRpb24uaW5uZXJIVE1MLCAnPGRp
diBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij48L2Rpdj4nKTsKLSAgICBlcXVh
bChub3RpZmljYXRpb24uaW5kZXgoKSwgMCk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4KDEp
OwotICAgIGVxdWFsKG5vdGlmaWNhdGlvbi5pbmRleCgpLCAxKTsKLSAgICAvLyBGSVhNRTogUmVh
bGx5IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbW9jay90ZXN0IGFuaW1hdGVkIHJlbW92YWwu
Ci0gICAgb2sobm90aWZpY2F0aW9uLmRpc21pc3MpOwotfSk7Ci0KLXRlc3QoJ1N0cmVhbScsIDEx
LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RyZWFtID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3Ry
ZWFtKCk7Ci0gICAgZXF1YWwoc3RyZWFtLnRhZ05hbWUsICdPTCcpOwotICAgIGVxdWFsKHN0cmVh
bS5jbGFzc05hbWUsICdub3RpZmljYXRpb25zJyk7Ci0gICAgZXF1YWwoc3RyZWFtLmNoaWxkRWxl
bWVudENvdW50LCAwKTsKLQotICAgIHZhciBub3RpZmljYXRpb247Ci0KLSAgICBub3RpZmljYXRp
b24gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZvKCctby1tYXRpYycpOwotICAgIG5vdGlmaWNh
dGlvbi5zZXRJbmRleCgyKTsKLSAgICBzdHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgZXF1
YWwoc3RyZWFtLmNoaWxkRWxlbWVudENvdW50LCAxKTsKLSAgICBlcXVhbChzdHJlYW0udGV4dENv
bnRlbnQsICctby1tYXRpYycpOwotCi0gICAgbm90aWZpY2F0aW9uID0gbmV3IHVpLm5vdGlmaWNh
dGlvbnMuSW5mbygnZ2FyZGVuJyk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4KDMpOwotICAg
IHN0cmVhbS5hZGQobm90aWZpY2F0aW9uKTsKLSAgICBlcXVhbChzdHJlYW0uY2hpbGRFbGVtZW50
Q291bnQsIDIpOwotICAgIGVxdWFsKHN0cmVhbS50ZXh0Q29udGVudCwgJ2dhcmRlbi1vLW1hdGlj
Jyk7Ci0KLSAgICBub3RpZmljYXRpb24gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZvKCcgaXMg
Jyk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4KDEpOwotICAgIHN0cmVhbS5hZGQobm90aWZp
Y2F0aW9uKTsKLSAgICBlcXVhbChzdHJlYW0uY2hpbGRFbGVtZW50Q291bnQsIDMpOwotICAgIGVx
dWFsKHN0cmVhbS50ZXh0Q29udGVudCwgJ2dhcmRlbi1vLW1hdGljIGlzICcpOwotCi0gICAgbm90
aWZpY2F0aW9uID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuSW5mbygnYXdlc29tZSEnKTsKLSAgICBz
dHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgZXF1YWwoc3RyZWFtLmNoaWxkRWxlbWVudENv
dW50LCA0KTsKLSAgICBlcXVhbChzdHJlYW0udGV4dENvbnRlbnQsICdnYXJkZW4tby1tYXRpYyBp
cyBhd2Vzb21lIScpOwotfSk7Ci0KLXRlc3QoJ0luZm8nLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgaW5mbyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oJ2luZm8nKTsKLSAgICBlcXVhbChp
bmZvLnRhZ05hbWUsICdMSScpOwotICAgIGVxdWFsKGluZm8uaW5uZXJIVE1MLCAnPGRpdiBjbGFz
cz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5pbmZvPC9kaXY+Jyk7Ci19KTsKLQotdGVz
dCgnRmFpbGluZ1Rlc3RHcm91cCcsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBmYWlsaW5nVGVz
dCA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0R3JvdXAoJ3Rlc3QnLCBbJ3Rlc3Qu
aHRtbCddKTsKLSAgICBlcXVhbChmYWlsaW5nVGVzdC50YWdOYW1lLCAnTEknKTsKLSAgICBlcXVh
bChmYWlsaW5nVGVzdC5pbm5lckhUTUwsICc8YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0
Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFtcDt0ZXN0PXRlc3QuaHRtbCIgdGFyZ2V0PSJfYmxh
bmsiPnRlc3Q8L2E+Jyk7Ci19KTsKLQotdGVzdCgnU3VzcGljaW91c0NvbW1pdCcsIDIsIGZ1bmN0
aW9uKCkgewotICAgIHZhciBzdXNwaWNpb3VzQ29tbWl0ID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMu
U3VzcGljaW91c0NvbW1pdCh7cmV2aXNpb246IDEsIHN1bW1hcnk6ICJzdW1tYXJ5IiwgYXV0aG9y
OiAiYXV0aG9yIiwgcmV2aWV3ZXI6ICJyZXZpZXdlciJ9KTsKLSAgICBlcXVhbChzdXNwaWNpb3Vz
Q29tbWl0LnRhZ05hbWUsICdMSScpOwotICAgIGVxdWFsKHN1c3BpY2lvdXNDb21taXQuaW5uZXJI
VE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicgKwotICAgICAgICAgICAg
JzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEiIHRhcmdldD0iX2Js
YW5rIj4xPC9hPicgKwotICAgICAgICAgICAgJzxzcGFuPicgKwotICAgICAgICAgICAgICAgICc8
c3BhbiBjbGFzcz0ic3VtbWFyeSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAn
PHNwYW4gY2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAgICAgICc8
c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicgKwotICAgICAgICAgICAgJzwv
c3Bhbj4nICsKLSAgICAgICAgJzwvZGl2PicpOwotfSk7Ci0KLXRlc3QoJ0ZhaWxpbmdUZXN0c1N1
bW1hcnknLCAxMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RGYWlsdXJlcyA9IG5ldyB1aS5u
b3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkoKTsKLSAgICBlcXVhbCh0ZXN0RmFpbHVy
ZXMudGFnTmFtZSwgJ0xJJyk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAg
ICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJl
bGF0aXZlIj48L3RpbWU+JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+
JyArCi0gICAgICAgICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNl
PC90ZD48dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRi
b2R5Pjx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bh
bj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsK
LSAgICAgICAgICAgICc8L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8
ZGl2IGNsYXNzPSJ3aGF0Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4n
ICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj48L3VsPicgKwotICAgICAg
ICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAn
PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBm
YWlsdXJlcyBpbiBkZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48
L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2Picg
KwotICAgICAgICAgICAgJzx1bCBjbGFzcz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAnPC9k
aXY+Jyk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVzdE5hbWU6ICd0
ZXN0JywgcmVzdWx0Tm9kZXNCeUJ1aWxkZXI6IHt9fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVz
LmluZGV4KCksIDApOwotICAgIGVxdWFsKHRlc3RGYWlsdXJlcy5pbm5lckhUTUwsCi0gICAgICAg
ICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAgICAgICAgICAgJzx0aW1lIGNsYXNzPSJyZWxhdGl2
ZSI+PC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwot
ICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+
PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0Ym9keT48
dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJ
TERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwvdGJvZHk+JyArCi0gICAg
ICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPGRpdiBj
bGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+JyArCi0g
ICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAgICAg
ICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91
dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVzdDwvYT48L2xpPicgKwot
ICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFj
dGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlv
biBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBkZXRhaWwuIj5FeGFt
aW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YnV0dG9uIGNs
YXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAgICAgICAgICAgICAg
ICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzx1bCBjbGFz
cz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0gICAgb2sodGVzdEZhaWx1
cmVzLmNvbnRhaW5zRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3Rlc3QnfSkpOwotICAgIG9r
KCF0ZXN0RmFpbHVyZXMuY29udGFpbnNGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAnZm9vJ30p
KTsKLSAgICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3Rlc3Qn
fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xh
c3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj48L3RpbWU+
JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICAg
ICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVidWc8
L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0ciBjbGFzcz0i
QlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bh
bj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAgICAgICAgICc8
L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0
Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAgICAgICAgICAg
ICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48
YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFt
cDt0ZXN0PXRlc3QiIHRhcmdldD0iX2JsYW5rIj50ZXN0PC9hPjwvbGk+JyArCi0gICAgICAgICAg
ICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+JyAr
Ci0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1bHQi
IHRpdGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlv
biI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyAr
Ci0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMi
PjwvdWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLSAgICBkZWVwRXF1YWwodGVzdEZhaWx1cmVz
LnRlc3ROYW1lTGlzdCgpLCBbJ3Rlc3QnXSk7Ci0gICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgpOwot
ICAgIHRpbWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDEwKTsKLSAgICB0ZXN0RmFp
bHVyZXMuYWRkQ29tbWl0RGF0YSh7cmV2aXNpb246IDEsIHRpbWU6IHRpbWUsIHN1bW1hcnk6ICJz
dW1tYXJ5IiwgYXV0aG9yOiAiYXV0aG9yIiwgcmV2aWV3ZXI6ICJyZXZpZXdlciJ9KTsKLSAgICBl
cXVhbCh0ZXN0RmFpbHVyZXMuaW5kZXgoKSwgdGltZS5nZXRUaW1lKCkpOwotICAgIGVxdWFsKHRl
c3RGYWlsdXJlcy5pbm5lckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAg
ICAgICAgICAgJzx0aW1lIGNsYXNzPSJyZWxhdGl2ZSI+MTAgbWludXRlcyBhZ288L3RpbWU+JyAr
Ci0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICAgICAg
ICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVidWc8L3Rk
PjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0ciBjbGFzcz0iQlVJ
TERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48
L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAgICAgICAgICc8L3Rh
YmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0Ij4n
ICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAgICAgICAgICAgICAg
ICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YSBo
cmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFtcDt0
ZXN0PXRlc3QiIHRhcmdldD0iX2JsYW5rIj50ZXN0PC9hPjwvbGk+JyArCi0gICAgICAgICAgICAg
ICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+JyArCi0g
ICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1bHQiIHRp
dGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1dHRvbj48
L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiI+
UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyArCi0g
ICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPicg
KwotICAgICAgICAgICAgICAgICc8bGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNs
YXNzPSJkZXNjcmlwdGlvbiI+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGEgaHJlZj0i
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMSIgdGFyZ2V0PSJfYmxhbmsiPjE8L2E+
JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+JyArCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJzdW1tYXJ5Ij5zdW1tYXJ5PC9zcGFuPicgKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYXV0aG9yIj5hdXRob3I8L3Nw
YW4+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJyZXZpZXdl
ciI+cmV2aWV3ZXI8L3NwYW4+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPC9zcGFuPicg
KwotICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+
JyArCi0gICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgdGVz
dEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVzdE5hbWU6ICdmb28nLCByZXN1bHROb2Rl
c0J5QnVpbGRlcjogeydXZWJraXQgTGludXggKGRiZyknOiB7IGFjdHVhbDogJ1RFWFQnfX19KTsK
LSAgICBlcXVhbCh0ZXN0RmFpbHVyZXMuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0i
aG93Ij4nICsKLSAgICAgICAgICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjEwIG1pbnV0ZXMg
YWdvPC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwot
ICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+
PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0Ym9keT4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90ZD4nICsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+
PGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9i
dWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Vi
a2l0K0xpbnV4KyhkYmcpIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3NwYW4+PHNwYW4g
Y2xhc3M9ImFyY2hpdGVjdHVyZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0ciBjbGFzcz0iQlVJ
TERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48
L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAgICAgICAgICAgJzwvdGJvZHk+
JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAgICAg
ICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxl
bSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAg
ICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1
aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdHM9Zm9vIiB0YXJnZXQ9Il9ibGFuayI+Zm9vPC9hPjwv
bGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRz
LndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9i
bGFuayI+dGVzdDwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAg
ICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAn
PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBm
YWlsdXJlcyBpbiBkZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48
L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2Picg
KwotICAgICAgICAgICAgJzx1bCBjbGFzcz0iY2F1c2VzIj4nICsKLSAgICAgICAgICAgICAgICAn
PGxpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicg
KwotICAgICAgICAgICAgICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzEiIHRhcmdldD0iX2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAgICAg
ICAgICAgICAgJzxzcGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBj
bGFzcz0ic3VtbWFyeSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnPHNwYW4gY2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicg
KwotICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJzwvZGl2PicgKwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwv
dWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgIHRlc3RGYWlsdXJlcy51cGRhdGVCdWls
ZGVyUmVzdWx0cyh7J1dlYmtpdCBNYWMxMC42JzogeyBhY3R1YWw6ICdCVUlMRElORyd9fSk7Ci0g
ICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xhc3M9Imhv
dyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj4xMCBtaW51dGVzIGFn
bzwvdGltZT4nICsKLSAgICAgICAgICAgICc8dGFibGUgY2xhc3M9ImZhaWx1cmVzIj4nICsKLSAg
ICAgICAgICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0
ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAgICAgICAgICc8dGJvZHk+JyAr
Ci0gICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IlRFWFQiPicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHRkPjxh
IGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtp
dCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNs
YXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bhbj48L2E+PC90ZD4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxE
SU5HIiBzdHlsZT0iIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4+QlVJ
TERJTkc8L3NwYW4+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PGEgY2xh
c3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K01h
YzEwLjYiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5zbm93bGVvcGFyZDwvc3Bhbj48L2E+PC90ZD4n
ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAgICAg
ICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPGRpdiBjbGFzcz0i
d2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+JyArCi0gICAgICAg
ICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8
bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0
cyZhbXA7dGVzdHM9Zm9vIiB0YXJnZXQ9Il9ibGFuayI+Zm9vPC9hPjwvbGk+JyArCi0gICAgICAg
ICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1
aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVzdDwvYT48
L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8dWwg
Y2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xh
c3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBkZXRh
aWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48
YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAgICAg
ICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAg
Jzx1bCBjbGFzcz0iY2F1c2VzIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpPicgKwotICAgICAg
ICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEi
IHRhcmdldD0iX2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFu
PicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3VtbWFyeSI+
c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xh
c3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwot
ICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvdWw+JyArCi0gICAgICAg
ICc8L2Rpdj4nKTsKLX0pOwotCi10ZXN0KCdGYWlsaW5nVGVzdHNTdW1tYXJ5IChncm91cGluZykn
LCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdEZhaWx1cmVzID0gbmV3IHVpLm5vdGlmaWNh
dGlvbnMuRmFpbGluZ1Rlc3RzU3VtbWFyeSgpOwotICAgIHRlc3RGYWlsdXJlcy5hZGRGYWlsdXJl
QW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC90by90ZXN0MS5odG1sJywgcmVzdWx0Tm9kZXNCeUJ1
aWxkZXI6IHt9fSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVzdE5h
bWU6ICdwYXRoL3RvL3Rlc3QyLmh0bWwnLCByZXN1bHROb2Rlc0J5QnVpbGRlcjoge319KTsKLSAg
ICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3BhdGgvdG8vdGVz
dDMuaHRtbCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0pOwotICAgIHRlc3RGYWlsdXJlcy5h
ZGRGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC90by90ZXN0NC5odG1sJywgcmVzdWx0
Tm9kZXNCeUJ1aWxkZXI6IHt9fSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNp
cyh7dGVzdE5hbWU6ICdwYXRoL2Fub3RoZXIvdGVzdC5odG1sJywgcmVzdWx0Tm9kZXNCeUJ1aWxk
ZXI6IHt9fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAgJzxk
aXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj48
L3RpbWU+JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAg
ICAgICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+
ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0ciBj
bGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElO
Rzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAgICAg
ICAgICc8L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNsYXNz
PSJ3aGF0Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAgICAg
ICAgICAgICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAgICAg
JzxsaT48YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRl
c3RzJmFtcDt0ZXN0PXBhdGglMkZ0byUyRnRlc3QxLmh0bWwlMkNwYXRoJTJGdG8lMkZ0ZXN0Mi5o
dG1sJTJDcGF0aCUyRnRvJTJGdGVzdDMuaHRtbCUyQ3BhdGglMkZ0byUyRnRlc3Q0Lmh0bWwiIHRh
cmdldD0iX2JsYW5rIj5wYXRoL3RvICg0IHRlc3RzKTwvYT48L2xpPicgKwotICAgICAgICAgICAg
ICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1s
YXlvdXQtdGVzdHMmYW1wO3Rlc3Q9cGF0aCUyRmFub3RoZXIlMkZ0ZXN0Lmh0bWwiIHRhcmdldD0i
X2JsYW5rIj5wYXRoL2Fub3RoZXIvdGVzdC5odG1sPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAg
ICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+JyArCi0g
ICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1bHQiIHRp
dGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1dHRvbj48
L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiI+
UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyArCi0g
ICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPjwv
dWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLX0pOwotCi10ZXN0KCdCdWlsZGVyc0ZhaWxpbmcn
LCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYnVpbGRlckZhaWxpbmcgPSBuZXcgdWkubm90aWZp
Y2F0aW9ucy5CdWlsZGVyc0ZhaWxpbmcoJ0Rpc2FzdGVyaWZ5aW5nJyk7Ci0gICAgYnVpbGRlckZh
aWxpbmcuc2V0RmFpbGluZ0J1aWxkZXJzKHsnV2Via2l0IExpbnV4JzogWydjb21waWxlJ10sICdX
ZWJraXQgV2luNyc6IFsnd2Via2l0X3Rlc3RzJywgJ3VwZGF0ZSddfSk7Ci0gICAgZXF1YWwoYnVp
bGRlckZhaWxpbmcuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij4nICsKLSAg
ICAgICAgICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjwvdGltZT4nICsKLSAgICAgICAgJzwv
ZGl2PicgKwotICAgICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRp
diBjbGFzcz0icHJvYmxlbSI+RGlzYXN0ZXJpZnlpbmc6JyArCi0gICAgICAgICAgICAgICAgJzx1
bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGkgY2xhc3M9ImJ1
aWxkZXIiPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9idWls
ZGVyPVdlYmtpdCtMaW51eCI+PHNwYW4gY2xhc3M9InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFu
IGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bhbj48c3BhbiBjbGFzcz0iZmFpbHVyZXMi
PiBjb21waWxlPC9zcGFuPjwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpIGNs
YXNzPSJidWlsZGVyIj48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIg
aHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZh
bGw/YnVpbGRlcj1XZWJraXQrV2luNyI+PHNwYW4gY2xhc3M9InZlcnNpb24iPndpbjc8L3NwYW4+
PHNwYW4gY2xhc3M9ImZhaWx1cmVzIj4gd2Via2l0X3Rlc3RzLCB1cGRhdGU8L3NwYW4+PC9hPjwv
bGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyAr
Ci0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPjwvdWw+JyArCi0gICAgICAgICc8L2Rp
dj4nKTsKLX0pOwotCi19KCkpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVzdHMuanMKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3BlcmYuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcGVyZi5qcwkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcGVyZi5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDE2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciB1aSA9IHVpIHx8IHt9OwotdWku
cGVyZiA9IHVpLnBlcmYgfHwge307Ci0KLShmdW5jdGlvbigpewotCi11aS5wZXJmLlBpY2tlciA9
IGJhc2UuZXh0ZW5kcygnc2VsZWN0JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKGl0ZW1zLCBvbkNo
YW5nZSwgb3B0X3ZhbHVlcykKLSAgICB7Ci0gICAgICAgIHRoaXMub25jaGFuZ2UgPSBvbkNoYW5n
ZTsKLSAgICAgICAgdGhpcy5fdmFsdWVzID0gb3B0X3ZhbHVlczsKLSAgICAgICAgaXRlbXMuZm9y
RWFjaCh0aGlzLl9hcHBlbmRJdGVtLmJpbmQodGhpcykpOwotICAgIH0sCi0gICAgX2FwcGVuZEl0
ZW06IGZ1bmN0aW9uKGl0ZW0sIGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIG9wdGlvbiA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwotICAgICAgICBvcHRpb24uaW5uZXJIVE1M
ID0gaXRlbTsKLSAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcykKLSAgICAgICAgICAgIG9wdGlvbi52
YWx1ZSA9IHRoaXMuX3ZhbHVlc1tpbmRleF07Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQob3B0
aW9uKTsKLSAgICB9Ci19KTsKLQotdWkucGVyZi5WaWV3ID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7
Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5pZCA9ICdwZXJmLXZp
ZXcnOwotICAgICAgICBidWlsZGVycy5wZXJmQnVpbGRlcnModGhpcy5sb2FkR3JhcGhzLmJpbmQo
dGhpcykpOwotCi0gICAgICAgIHZhciBzdHJlYW0gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5TdHJl
YW0oKTsKLSAgICAgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uID0gdWkubm90aWZpY2F0aW9ucy5J
bmZvKCJMb2FkaW5nIGxpc3Qgb2YgcGVyZiBkYXNoYm9hcmRzLi4uIik7Ci0gICAgICAgIHN0cmVh
bS5hcHBlbmRDaGlsZCh0aGlzLl9ub3RpZmljYXRpb24pOwotICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKHN0cmVhbSk7Ci0gICAgfSwKLSAgICBsb2FkR3JhcGhzOiBmdW5jdGlvbihncmFwaERhdGEp
Ci0gICAgewotICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24uZGlzbWlzcygpOwotCi0gICAgICAg
IC8vIEZJWE1FOiBBZGQgbmV4dC9wcmV2aW91cyBidXR0b25zIGZvciBlYXN5IG5hdmlnYXRpb24g
dGhyb3VnaCBhbGwgdGhlIGdyYXBocy4KLSAgICAgICAgLy8gRklYTUU6IEFsc28sIHNob3cgdGhl
IGxpc3Qgb2YgZmFpbGluZyBwZXJmIGJ1aWxkZXJzIGFsb25nIHdpdGggd2hpY2ggc3RlcHMgYXJl
IGZhaWxpbmcuCi0gICAgICAgIHRoaXMuX2RhdGEgPSBncmFwaERhdGE7Ci0KLSAgICAgICAgdGhp
cy5fdGl0bGVCYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgdGhp
cy5fdGl0bGVCYXIuY2xhc3NOYW1lID0gJ3RpdGxlLWJhcic7Ci0gICAgICAgIHRoaXMuYXBwZW5k
Q2hpbGQodGhpcy5fdGl0bGVCYXIpOwotCi0gICAgICAgIHZhciB0ZXN0U3VpdGVzID0gT2JqZWN0
LmtleXMoZ3JhcGhEYXRhKTsKLSAgICAgICAgdmFyIHN1aXRlUGlja2VyID0gbmV3IHVpLnBlcmYu
UGlja2VyKHRlc3RTdWl0ZXMsIHRoaXMuX29uQ2hhbmdlU3VpdGUuYmluZCh0aGlzKSk7Ci0gICAg
ICAgIHRoaXMuX3RpdGxlQmFyLmFwcGVuZENoaWxkKHN1aXRlUGlja2VyKTsKLQotICAgICAgICB0
aGlzLl90aXRsZUJhci5hcHBlbmRDaGlsZChuZXcgdWkuYWN0aW9ucy5MaXN0KFtuZXcgdWkuYWN0
aW9ucy5QcmV2aW91cygpLCBuZXcgdWkuYWN0aW9ucy5OZXh0KCldKSk7Ci0KLSAgICAgICAgJCh0
aGlzKS5iaW5kKCduZXh0JywgdGhpcy5fbmV4dEdyYXBoLmJpbmQodGhpcykpOwotICAgICAgICAk
KHRoaXMpLmJpbmQoJ3ByZXZpb3VzJywgdGhpcy5fcHJldmlvdXNHcmFwaC5iaW5kKHRoaXMpKTsK
LQotICAgICAgICB0aGlzLl9zdWl0ZVBpY2tlciA9IHN1aXRlUGlja2VyOwotICAgICAgICB0aGlz
Ll9vbkNoYW5nZVN1aXRlKCk7Ci0gICAgfSwKLSAgICBfb25DaGFuZ2VTdWl0ZTogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlQnVpbGRlclBpY2tlcigpOwotICAgICAgICB0
aGlzLl9kaXNwbGF5R3JhcGgoKTsKLSAgICB9LAotICAgIF91cGRhdGVCdWlsZGVyUGlja2VyOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fYnVpbGRlclBpY2tlcikKLSAgICAg
ICAgICAgIHRoaXMuX3RpdGxlQmFyLnJlbW92ZUNoaWxkKHRoaXMuX2J1aWxkZXJQaWNrZXIpOwot
Ci0gICAgICAgIGlmICghdGhpcy5fc3VpdGVQaWNrZXIubGVuZ3RoKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB2YXIgc2VsZWN0ZWRTdWl0ZSA9IHRoaXMuX3N1aXRlUGlja2VyW3RoaXMu
X3N1aXRlUGlja2VyLnNlbGVjdGVkSW5kZXhdLnRleHQ7Ci0gICAgICAgIHZhciBidWlsZGVycyA9
IFtdOwotICAgICAgICB2YXIgdXJscyA9IFtdOwotICAgICAgICB0aGlzLl9kYXRhW3NlbGVjdGVk
U3VpdGVdLmZvckVhY2goZnVuY3Rpb24oY29uZmlnKSB7Ci0gICAgICAgICAgICBidWlsZGVycy5w
dXNoKGNvbmZpZy5idWlsZGVyKTsKLSAgICAgICAgICAgIHVybHMucHVzaChjb25maWcudXJsKTsK
LSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuX2J1aWxkZXJQaWNrZXIgPSBuZXcgdWkucGVyZi5Q
aWNrZXIoYnVpbGRlcnMsIHRoaXMuX2Rpc3BsYXlHcmFwaC5iaW5kKHRoaXMpLCB1cmxzKTsKLSAg
ICAgICAgdGhpcy5fdGl0bGVCYXIuYXBwZW5kQ2hpbGQodGhpcy5fYnVpbGRlclBpY2tlcik7Ci0g
ICAgfSwKLSAgICBfZGlzcGxheUdyYXBoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
cG9wT3V0TGluayA9IHRoaXMucXVlcnlTZWxlY3RvcignLnBvcC1vdXQnKTsKLSAgICAgICAgaWYg
KCFwb3BPdXRMaW5rKSB7Ci0gICAgICAgICAgICBwb3BPdXRMaW5rID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnYScpOwotICAgICAgICAgICAgcG9wT3V0TGluay5jbGFzc05hbWUgPSAncG9wLW91
dCc7Ci0gICAgICAgICAgICBwb3BPdXRMaW5rLnRleHRDb250ZW50ID0gJ1BvcCBvdXQnOwotICAg
ICAgICAgICAgcG9wT3V0TGluay50YXJnZXQgPSAnX2JsYW5rJzsKLSAgICAgICAgICAgIHRoaXMu
X3RpdGxlQmFyLmFwcGVuZENoaWxkKHBvcE91dExpbmspOwotICAgICAgICB9Ci0KLSAgICAgICAg
dmFyIGdyYXBoID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTsKLSAgICAgICAgaWYgKCFn
cmFwaCkgewotICAgICAgICAgICAgZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJh
bWUnKTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZ3JhcGgpOwotICAgICAgICB9Ci0K
LSAgICAgICAgaWYgKCF0aGlzLl9idWlsZGVyUGlja2VyIHx8ICF0aGlzLl9idWlsZGVyUGlja2Vy
Lmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdXJsID0gdGhpcy5f
YnVpbGRlclBpY2tlclt0aGlzLl9idWlsZGVyUGlja2VyLnNlbGVjdGVkSW5kZXhdLnZhbHVlOwot
ICAgICAgICBwb3BPdXRMaW5rLmhyZWYgPSB1cmw7Ci0gICAgICAgIGdyYXBoLnNyYyA9IHVybDsK
LSAgICB9LAotICAgIF9uZXh0R3JhcGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5fYnVpbGRlclBpY2tlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBpZiAo
dGhpcy5fYnVpbGRlclBpY2tlci5zZWxlY3RlZEluZGV4IDwgdGhpcy5fYnVpbGRlclBpY2tlci5s
ZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICB0aGlzLl9idWlsZGVyUGlja2VyLnNlbGVjdGVkSW5k
ZXgrKzsKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlHcmFwaCgpOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N1aXRlUGlja2VyLnNlbGVjdGVk
SW5kZXggPCB0aGlzLl9zdWl0ZVBpY2tlci5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICB0aGlz
Ll9zdWl0ZVBpY2tlci5zZWxlY3RlZEluZGV4Kys7Ci0gICAgICAgICAgICB0aGlzLl9vbkNoYW5n
ZVN1aXRlKCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIF9wcmV2aW91c0dyYXBoOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2J1aWxkZXJQaWNrZXIpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRl
eCA+IDApIHsKLSAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRleC0t
OwotICAgICAgICAgICAgdGhpcy5fZGlzcGxheUdyYXBoKCk7Ci0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fc3VpdGVQaWNrZXIuc2VsZWN0ZWRJbmRl
eCA+IDApIHsKLSAgICAgICAgICAgIHRoaXMuX3N1aXRlUGlja2VyLnNlbGVjdGVkSW5kZXgtLTsK
LSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJ1aWxkZXJQaWNrZXIoKTsKLSAgICAgICAgICAgIHRo
aXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRleCA9IHRoaXMuX2J1aWxkZXJQaWNrZXIubGVu
Z3RoIC0gMTsKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlHcmFwaCgpOwotICAgICAgICB9Ci0g
ICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9wZXJm
X3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9w
ZXJmX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvdWkvcGVyZl91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODAgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoJ3VpLnBlcmYnKTsKLQot
dmFyIGtEdW1teVBlcmZHcmFwaERhdGEgPSB7Ci0gICAgImR1bW15X3BlcmZfdGVzdF8xIjogWwot
ICAgICAgICB7Ci0gICAgICAgICAgICAiYnVpbGRlciI6ICJNYWMxMC42IFBlcmYiLAotICAgICAg
ICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwxIgotICAgICAgICB9Ci0gICAgXSwKLSAgICAi
ZHVtbXlfcGVyZl90ZXN0XzIiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICJidWlsZGVyIjog
Ik1hYzEwLjYgUGVyZiIsCi0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9kdW1teXVybDIiCi0g
ICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJidWlsZGVyIjogIkxpbnV4IFBlcmYi
LAotICAgICAgICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwzIgotICAgICAgICB9Ci0gICAg
XQotfTsKLQotYXN5bmNUZXN0KCJWaWV3IiwgNywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG9sZFBl
cmZCdWlsZGVycyA9IGJ1aWxkZXJzLnBlcmZCdWlsZGVyczsKLSAgICBidWlsZGVycy5wZXJmQnVp
bGRlcnMgPSBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u
KCkgeyBjYWxsYmFjayhrRHVtbXlQZXJmR3JhcGhEYXRhKSB9LCAwKTsKLSAgICB9Ci0KLSAgICB2
YXIgdmlldyA9IG5ldyB1aS5wZXJmLlZpZXcoKTsKLQotICAgIHNldFRpbWVvdXQoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGVxdWFsKHZpZXcub3V0ZXJIVE1MLCAnPGRpdiBpZD0icGVyZi12aWV3Ij4n
ICsKLSAgICAgICAgICAgICc8b2wgY2xhc3M9Im5vdGlmaWNhdGlvbnMiPicgKwotICAgICAgICAg
ICAgICAgICc8bGkgc3R5bGU9Im9wYWNpdHk6IDA7ICI+JyArCi0gICAgICAgICAgICAgICAgICAg
ICc8ZGl2IGNsYXNzPSJob3ciPjwvZGl2PjxkaXYgY2xhc3M9IndoYXQiPkxvYWRpbmcgbGlzdCBv
ZiBwZXJmIGRhc2hib2FyZHMuLi48L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4nICsK
LSAgICAgICAgICAgICc8L29sPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRpdGxlLWJh
ciI+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3Rf
MTwvb3B0aW9uPjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4nICsK
LSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0i
YWN0aW9uIHByZXZpb3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPjxsaT48YnV0dG9uIGNsYXNzPSJh
Y3Rpb24gbmV4dCI+XHUyNUI2PC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgICAg
ICc8c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVyZjwv
b3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFzcz0icG9wLW91dCIg
dGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDEiPlBvcCBvdXQ8L2E+JyArCi0g
ICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly9k
dW1teXVybDEiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAgdmll
dy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhUTUwsICc8ZGl2IGlk
PSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90aWZpY2F0aW9ucyI+
JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsgIj4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFzcz0id2hhdCI+
TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwotICAgICAgICAgICAg
ICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAgICAgICAnPGRpdiBj
bGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVjdD48b3B0aW9uPmR1
bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMjwvb3B0aW9u
Pjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPjxsaT48
YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9uPjwvbGk+PGxpPjxi
dXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xpPjwvdWw+JyArCi0g
ICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0i
aHR0cDovL2R1bW15dXJsMiI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVj
dD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMxMC42IFBlcmY8L29wdGlvbj48
b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQZXJmPC9vcHRpb24+PC9zZWxl
Y3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBzcmM9
Imh0dHA6Ly9kdW1teXVybDIiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAg
ICAgICAgdmlldy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhUTUws
ICc8ZGl2IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90aWZp
Y2F0aW9ucyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsgIj4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFz
cz0id2hhdCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwotICAg
ICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAgICAg
ICAnPGRpdiBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVjdD48
b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3Rf
Mjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlv
bnMiPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9uPjwv
bGk+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xpPjwv
dWw+JyArCi0gICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9ibGFu
ayIgaHJlZj0iaHR0cDovL2R1bW15dXJsMyI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAgICAg
ICAnPHNlbGVjdD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMxMC42IFBlcmY8
L29wdGlvbj48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQZXJmPC9vcHRp
b24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlm
cmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDMiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+
Jyk7Ci0KLSAgICAgICAgdmlldy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5v
dXRlckhUTUwsICc8ZGl2IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFz
cz0ibm90aWZpY2F0aW9ucyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0
eTogMDsgIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+
PGRpdiBjbGFzcz0id2hhdCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2
PicgKwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0g
ICAgICAgICAgICAnPGRpdiBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAn
PHNlbGVjdD48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9w
ZXJmX3Rlc3RfMjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xh
c3M9ImFjdGlvbnMiPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwv
YnV0dG9uPjwvbGk+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRv
bj48L2xpPjwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJn
ZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2R1bW15dXJsMyI+UG9wIG91dDwvYT4nICsKLSAgICAg
ICAgICAgICAgICAnPHNlbGVjdD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMx
MC42IFBlcmY8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQ
ZXJmPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAg
ICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDMiPjwvaWZyYW1lPicgKwotICAgICAg
ICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAgdmlldy5fcHJldmlvdXNHcmFwaCgpOwotCi0gICAgICAg
IGVxdWFsKHZpZXcub3V0ZXJIVE1MLCAnPGRpdiBpZD0icGVyZi12aWV3Ij4nICsKLSAgICAgICAg
ICAgICc8b2wgY2xhc3M9Im5vdGlmaWNhdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICc8bGkg
c3R5bGU9Im9wYWNpdHk6IDA7ICI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNz
PSJob3ciPjwvZGl2PjxkaXYgY2xhc3M9IndoYXQiPkxvYWRpbmcgbGlzdCBvZiBwZXJmIGRhc2hi
b2FyZHMuLi48L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAgICAgICAg
ICc8L29sPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRpdGxlLWJhciI+JyArCi0gICAg
ICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMTwvb3B0aW9uPjxv
cHRpb24+ZHVtbXlfcGVyZl90ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAgICAg
ICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIHByZXZp
b3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gbmV4dCI+
XHUyNUI2PC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFzcz0i
cG9wLW91dCIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDIiPlBvcCBvdXQ8
L2E+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT0iaHR0cDovL2R1
bW15dXJsMiI+TWFjMTAuNiBQZXJmPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iaHR0cDovL2R1bW15
dXJsMyI+TGludXggUGVyZjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgJzwvZGl2
PicgKwotICAgICAgICAgICAgJzxpZnJhbWUgc3JjPSJodHRwOi8vZHVtbXl1cmwyIj48L2lmcmFt
ZT4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgICAgIHZpZXcuX3ByZXZpb3VzR3JhcGgo
KTsKLQotICAgICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwgJzxkaXYgaWQ9InBlcmYtdmlldyI+
JyArCi0gICAgICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmljYXRpb25zIj4nICsKLSAgICAgICAg
ICAgICAgICAnPGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5Mb2FkaW5nIGxpc3Qg
b2YgcGVyZiBkYXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+JyAr
Ci0gICAgICAgICAgICAnPC9vbD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0aXRsZS1i
YXIiPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0
XzE8L29wdGlvbj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8yPC9vcHRpb24+PC9zZWxlY3Q+JyAr
Ci0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9
ImFjdGlvbiBwcmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9saT48bGk+PGJ1dHRvbiBjbGFzcz0i
YWN0aW9uIG5leHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICAg
ICAnPGEgY2xhc3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZHVtbXl1
cmwxIj5Qb3Agb3V0PC9hPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24gdmFs
dWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVyZjwvb3B0aW9uPjwvc2VsZWN0PicgKwot
ICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzxpZnJhbWUgc3JjPSJodHRwOi8v
ZHVtbXl1cmwxIj48L2lmcmFtZT4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgICAgIHZp
ZXcuX3ByZXZpb3VzR3JhcGgoKTsKLQotICAgICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwgJzxk
aXYgaWQ9InBlcmYtdmlldyI+JyArCi0gICAgICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmljYXRp
b25zIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicgKwot
ICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3
aGF0Ij5Mb2FkaW5nIGxpc3Qgb2YgcGVyZiBkYXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAgICAg
ICAgICAgICAgJzwvbGk+JyArCi0gICAgICAgICAgICAnPC9vbD4nICsKLSAgICAgICAgICAgICc8
ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRp
b24+ZHVtbXlfcGVyZl90ZXN0XzE8L29wdGlvbj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8yPC9v
cHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+
PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBwcmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9saT48
bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIG5leHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91bD4n
ICsKLSAgICAgICAgICAgICAgICAnPGEgY2xhc3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5rIiBo
cmVmPSJodHRwOi8vZHVtbXl1cmwxIj5Qb3Agb3V0PC9hPicgKwotICAgICAgICAgICAgICAgICc8
c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVyZjwvb3B0
aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzxp
ZnJhbWUgc3JjPSJodHRwOi8vZHVtbXl1cmwxIj48L2lmcmFtZT4nICsKLSAgICAgICAgJzwvZGl2
PicpOwotCi0gICAgICAgIGJ1aWxkZXJzLnBlcmZCdWlsZGVycyA9IG9sZFBlcmZCdWlsZGVyczsK
LSAgICAgICAgc3RhcnQoKTsKLSAgICB9LCAwKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsNDc0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwge307Ci11aS5yZXN1bHRzID0gdWku
cmVzdWx0cyB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXZhciBrUmVzdWx0c1ByZWZldGNoRGVs
YXlNUyA9IDUwMDsKLQotLy8gRklYTUU6IFJhdGhlciB0aGFuIHVzaW5nIHRhYmxlLCBzaG91bGQg
d2UgYmUgdXNpbmcgc29tZXRoaW5nIGZhbmNpZXI/Ci11aS5yZXN1bHRzLkNvbXBhcmlzb24gPSBi
YXNlLmV4dGVuZHMoJ3RhYmxlJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuY2xhc3NOYW1lID0gJ2NvbXBhcmlzb24nOwotICAgICAgICB0aGlzLmlubmVySFRN
TCA9ICc8dGhlYWQ+PHRyPjx0aD5FeHBlY3RlZDwvdGg+PHRoPkFjdHVhbDwvdGg+PHRoPkRpZmY8
L3RoPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAnPHRib2R5Pjx0
cj48dGQgY2xhc3M9ImV4cGVjdGVkIHJlc3VsdC1jb250YWluZXIiPjwvdGQ+PHRkIGNsYXNzPSJh
Y3R1YWwgcmVzdWx0LWNvbnRhaW5lciI+PC90ZD48dGQgY2xhc3M9ImRpZmYgcmVzdWx0LWNvbnRh
aW5lciI+PC90ZD48L3RyPjwvdGJvZHk+JzsKLSAgICB9LAotICAgIF9zZWxlY3RvckZvcktpbmQ6
IGZ1bmN0aW9uKGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAg
Y2FzZSByZXN1bHRzLmtFeHBlY3RlZEtpbmQ6Ci0gICAgICAgICAgICByZXR1cm4gJy5leHBlY3Rl
ZCc7Ci0gICAgICAgIGNhc2UgcmVzdWx0cy5rQWN0dWFsS2luZDoKLSAgICAgICAgICAgIHJldHVy
biAnLmFjdHVhbCc7Ci0gICAgICAgIGNhc2UgcmVzdWx0cy5rRGlmZktpbmQ6Ci0gICAgICAgICAg
ICByZXR1cm4gJy5kaWZmJzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gJy51bmtub3duJzsK
LSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24oa2luZCwgcmVzdWx0KQotICAgIHsKLSAgICAg
ICAgdmFyIHNlbGVjdG9yID0gdGhpcy5fc2VsZWN0b3JGb3JLaW5kKGtpbmQpOwotICAgICAgICAk
KHNlbGVjdG9yLCB0aGlzKS5lbXB0eSgpLmFwcGVuZChyZXN1bHQpOwotICAgICAgICByZXR1cm4g
cmVzdWx0OwotICAgIH0sCi19KTsKLQotLy8gV2UnZCByZWFsbHkgbGlrZSBUZXh0UmVzdWx0IGFu
ZCBJbWFnZVJlc3VsdCB0byBleHRlbmQgYSBjb21tb24gUmVzdWx0IGJhc2UKLS8vIGNsYXNzLCBi
dXQgd2UgY2FuJ3Qgc2VlbSB0byBkbyB0aGF0IGJlY2F1c2UgdGhleSBpbmhlcml0IGZyb20gZGlm
ZmVyZW50Ci0vLyBIVE1MRWxlbWVudHMuIFdlIGNvdWxkIGhhdmUgdGhlbSBpbmhlcml0IGZyb20g
PGRpdj4sIGJ1dCB0aGF0IHNlZW1zIGxhbWUuCi0KLXVpLnJlc3VsdHMuVGV4dFJlc3VsdCA9IGJh
c2UuZXh0ZW5kcygnaWZyYW1lJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3RleHQtcmVzdWx0JzsKLSAgICAgICAgdGhpcy5zcmMg
PSB1cmw7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuSW1hZ2VSZXN1bHQgPSBiYXNlLmV4dGVu
ZHMoJ2ltZycsIHsKLSAgICBpbml0OiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICB0aGlz
LmNsYXNzTmFtZSA9ICdpbWFnZS1yZXN1bHQnOwotICAgICAgICB0aGlzLnNyYyA9IHVybDsKLSAg
ICB9Ci19KTsKLQotdWkucmVzdWx0cy5BdWRpb1Jlc3VsdCA9IGJhc2UuZXh0ZW5kcygnYXVkaW8n
LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05h
bWUgPSAnYXVkaW8tcmVzdWx0JzsKLSAgICAgICAgdGhpcy5zcmMgPSB1cmw7Ci0gICAgICAgIHRo
aXMuY29udHJvbHMgPSAnY29udHJvbHMnOwotICAgIH0KLX0pOwotCi1mdW5jdGlvbiBjb25zdHJ1
Y3RvckZvclJlc3VsdFR5cGUodHlwZSkKLXsKLSAgICBpZiAodHlwZSA9PSByZXN1bHRzLmtJbWFn
ZVR5cGUpCi0gICAgICAgIHJldHVybiB1aS5yZXN1bHRzLkltYWdlUmVzdWx0OwotICAgIGlmICh0
eXBlID09IHJlc3VsdHMua0F1ZGlvVHlwZSkKLSAgICAgICAgcmV0dXJuIHVpLnJlc3VsdHMuQXVk
aW9SZXN1bHQ7Ci0gICAgcmV0dXJuIHVpLnJlc3VsdHMuVGV4dFJlc3VsdDsKLX0KLQotdWkucmVz
dWx0cy5SZXN1bHRzR3JpZCA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtZ3JpZCc7Ci0g
ICAgfSwKLSAgICBfYWRkUmVzdWx0OiBmdW5jdGlvbihjb21wYXJpc29uLCBjb25zdHJ1Y3Rvciwg
cmVzdWx0c1VSTHNCeUtpbmQsIGtpbmQpCi0gICAgewotICAgICAgICB2YXIgdXJsID0gcmVzdWx0
c1VSTHNCeUtpbmRba2luZF07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICBjb21wYXJpc29uLnVwZGF0ZShraW5kLCBuZXcgY29uc3RydWN0b3IodXJsKSk7
Ci0gICAgfSwKLSAgICBhZGRDb21wYXJpc29uOiBmdW5jdGlvbihyZXN1bHRUeXBlLCByZXN1bHRz
VVJMc0J5S2luZCkKLSAgICB7Ci0gICAgICAgIHZhciBjb21wYXJpc29uID0gbmV3IHVpLnJlc3Vs
dHMuQ29tcGFyaXNvbigpOwotICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3RvckZv
clJlc3VsdFR5cGUocmVzdWx0VHlwZSk7Ci0KLSAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNvbXBh
cmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5S2luZCwgcmVzdWx0cy5rRXhwZWN0ZWRL
aW5kKTsKLSAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNvbXBhcmlzb24sIGNvbnN0cnVjdG9yLCBy
ZXN1bHRzVVJMc0J5S2luZCwgcmVzdWx0cy5rQWN0dWFsS2luZCk7Ci0gICAgICAgIHRoaXMuX2Fk
ZFJlc3VsdChjb21wYXJpc29uLCBjb25zdHJ1Y3RvciwgcmVzdWx0c1VSTHNCeUtpbmQsIHJlc3Vs
dHMua0RpZmZLaW5kKTsKLQotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNvbXBhcmlzb24pOwot
ICAgICAgICByZXR1cm4gY29tcGFyaXNvbjsKLSAgICB9LAotICAgIGFkZFJvdzogZnVuY3Rpb24o
cmVzdWx0VHlwZSwgdXJsKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gY29uc3Ry
dWN0b3JGb3JSZXN1bHRUeXBlKHJlc3VsdFR5cGUpOwotICAgICAgICB2YXIgdmlldyA9IG5ldyBj
b25zdHJ1Y3Rvcih1cmwpOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHZpZXcpOwotICAgICAg
ICByZXR1cm4gdmlldzsKLSAgICB9LAotICAgIGFkZFJlc3VsdHM6IGZ1bmN0aW9uKHJlc3VsdHNV
UkxzKQotICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZCA9IHt9Owot
Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtJbWFnZVR5cGVdID0g
e307Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtBdWRpb1R5cGVd
ID0ge307Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtUZXh0VHlw
ZV0gPSB7fTsKLQotICAgICAgICByZXN1bHRzVVJMcy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkgewot
ICAgICAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3VsdHMucmVzdWx0VHlwZSh1
cmwpXVtyZXN1bHRzLnJlc3VsdEtpbmQodXJsKV0gPSB1cmw7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgICQuZWFjaChyZXN1bHRzVVJMc0J5VHlwZUFuZEtpbmQsIGZ1bmN0aW9uKHJlc3VsdFR5cGUs
IHJlc3VsdHNVUkxzQnlLaW5kKSB7Ci0gICAgICAgICAgICBpZiAoJC5pc0VtcHR5T2JqZWN0KHJl
c3VsdHNVUkxzQnlLaW5kKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBp
ZiAocmVzdWx0cy5rVW5rbm93bktpbmQgaW4gcmVzdWx0c1VSTHNCeUtpbmQpIHsKLSAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIHNvbWV0aGluZyBsaWtlICJjcmFzaCIgdGhhdCBpc24ndCBhIGNv
bXBhcmlzb24uCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRSb3cocmVzdWx0VHlwZSwgcmVzdWx0
c1VSTHNCeUtpbmRbcmVzdWx0cy5rVW5rbm93bktpbmRdKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmFkZENvbXBhcmlzb24ocmVzdWx0
VHlwZSwgcmVzdWx0c1VSTHNCeUtpbmQpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0gICAg
ICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLnRleHRDb250
ZW50ID0gJ05vIHJlc3VsdHMgdG8gZGlzcGxheS4nCi0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMu
UmVzdWx0c0RldGFpbHMgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBmdW5jdGlv
bihkZWxlZ2F0ZSwgZmFpbHVyZUluZm8pCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9
ICdyZXN1bHRzLWRldGFpbCc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0g
ICAgICAgIHRoaXMuX2ZhaWx1cmVJbmZvID0gZmFpbHVyZUluZm87Ci0gICAgICAgIHRoaXMuX2hh
dmVTaG93bk9uY2UgPSBmYWxzZTsKLSAgICB9LAotICAgIHNob3c6IGZ1bmN0aW9uKCkgewotICAg
ICAgICBpZiAodGhpcy5faGF2ZVNob3duT25jZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgdGhpcy5faGF2ZVNob3duT25jZSA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLmZl
dGNoUmVzdWx0c1VSTHModGhpcy5fZmFpbHVyZUluZm8sIGZ1bmN0aW9uKHJlc3VsdHNVUkxzKSB7
Ci0gICAgICAgICAgICB2YXIgcmVzdWx0c0dyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3Jp
ZCgpOwotICAgICAgICAgICAgcmVzdWx0c0dyaWQuYWRkUmVzdWx0cyhyZXN1bHRzVVJMcyk7Ci0K
LSAgICAgICAgICAgICQodGhpcykuZW1wdHkoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAgbmV3
IHVpLmFjdGlvbnMuTGlzdChbCi0gICAgICAgICAgICAgICAgICAgIG5ldyB1aS5hY3Rpb25zLlBy
ZXZpb3VzKCksCi0gICAgICAgICAgICAgICAgICAgIG5ldyB1aS5hY3Rpb25zLk5leHQoKQotICAg
ICAgICAgICAgICAgIF0pKS5hcHBlbmQocmVzdWx0c0dyaWQpOwotCi0KLSAgICAgICAgfS5iaW5k
KHRoaXMpKTsKLSAgICB9LAotfSk7Ci0KLWZ1bmN0aW9uIGlzQW55UmVmdGVzdCh0ZXN0TmFtZSwg
cmVzdWx0c0J5VGVzdCkKLXsKLSAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzdWx0c0J5VGVzdFt0
ZXN0TmFtZV0pLm1hcChmdW5jdGlvbihidWlsZGVyKSB7Ci0gICAgICAgIHJldHVybiByZXN1bHRz
QnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyXTsKLSAgICB9KS5zb21lKGZ1bmN0aW9uKHJlc3VsdE5v
ZGUpIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdE5vZGUucmVmdGVzdF90eXBlICYmIHJlc3VsdE5v
ZGUucmVmdGVzdF90eXBlLmxlbmd0aDsKLSAgICB9KTsKLX0KLQotdWkucmVzdWx0cy5GbGFraW5l
c3NEYXRhID0gYmFzZS5leHRlbmRzKCdpZnJhbWUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnZmxha2luZXNzLWlmcmFtZSc7Ci0gICAg
ICAgIHRoaXMuc3JjID0gdWkudXJsRm9yRW1iZWRkZWRGbGFraW5lc3NEYXNoYm9hcmQoKTsKLSAg
ICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX2hhbmRsZU1lc3Nh
Z2UuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0gICAgX2hhbmRsZU1lc3NhZ2U6
IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmICghdGhpcy5jb250ZW50V2luZG93KQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBudWxsIGV2ZW50Lm9yaWdp
biBzbyB0aGF0IHRoZSB1bml0dGVzdHMgY2FuIGdldCBwYXN0IHRoaXMgcG9pbnQuCi0gICAgICAg
IC8vIEZJWE1FOiBJcyB0aGlzIHNhZmU/IEluIHByYWN0aWNlLCB0aGVyZSdzIG5vIG1lYW5pbmdm
dWwgaGFybSB0aGF0IGNhbiBjb21lIGZyb20KLSAgICAgICAgLy8gYSBtYWxpY2lvdXMgcGFnZSBz
ZW5kaW5nIHVzIGhlaWdodENoYW5nZWQgY29tbWFuZHMsIHNvIGl0IGRvZXNuJ3QgcmVhbGx5IG1h
dHRlci4KLSAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gJ251bGwnICYmIGV2ZW50Lm9yaWdp
biAhPSAnaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcnKSB7Ci0gICAgICAgICAgICBjb25zb2xl
LmxvZygnSW52YWxpZCBvcmlnaW46ICcgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGV2ZW50LmRhdGEuY29tbWFuZCAhPSAnaGVp
Z2h0Q2hhbmdlZCcpIHsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCdVbmtub3duIHBvc3RNZXNz
YWdlIGNvbW1hbmQ6ICcgKyBldmVudC5kYXRhKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gZXZlbnQuZGF0YS5oZWlnaHQgKyAn
cHgnOwotICAgIH0KLX0pOwotCi11aS5yZXN1bHRzLlRlc3RTZWxlY3RvciA9IGJhc2UuZXh0ZW5k
cygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKGRlbGVnYXRlLCByZXN1bHRzQnlUZXN0KQot
ICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAndGVzdC1zZWxlY3Rvcic7Ci0gICAgICAg
IHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAgICAgICAgdmFyIHRvcFBhbmVsID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHRvcFBhbmVsLmNsYXNzTmFtZSA9
ICd0b3AtcGFuZWwnOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRvcFBhbmVsKTsKLQotICAg
ICAgICB0aGlzLl9hcHBlbmRSZXNpemVIYW5kbGUoKTsKLQotICAgICAgICB2YXIgYm90dG9tUGFu
ZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgYm90dG9tUGFuZWwu
Y2xhc3NOYW1lID0gJ2JvdHRvbS1wYW5lbCc7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoYm90
dG9tUGFuZWwpOwotCi0gICAgICAgIHRoaXMuX2ZsYWtpbmVzc0RhdGEgPSBuZXcgdWkucmVzdWx0
cy5GbGFraW5lc3NEYXRhKCk7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5fZmxha2lu
ZXNzRGF0YSk7Ci0KLSAgICAgICAgdmFyIHRlc3ROYW1lcyA9IE9iamVjdC5rZXlzKHJlc3VsdHNC
eVRlc3QpOwotICAgICAgICB0ZXN0TmFtZXMuc29ydCgpLmZvckVhY2goZnVuY3Rpb24odGVzdE5h
bWUpIHsKLSAgICAgICAgICAgIHZhciBub25MaW5rVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdhJyk7Ci0gICAgICAgICAgICBub25MaW5rVGl0bGUuY2xhc3NMaXN0LmFkZCgnbm9uLWxp
bmstdGl0bGUnKTsKLSAgICAgICAgICAgIG5vbkxpbmtUaXRsZS50ZXh0Q29udGVudCA9IHRlc3RO
YW1lOwotCi0gICAgICAgICAgICB2YXIgbGlua1RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgnYScpOwotICAgICAgICAgICAgbGlua1RpdGxlLmNsYXNzTGlzdC5hZGQoJ2xpbmstdGl0bGUn
KTsKLSAgICAgICAgICAgIGxpbmtUaXRsZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1aS51cmxGb3JG
bGFraW5lc3NEYXNoYm9hcmQoW3Rlc3ROYW1lXSkpCi0gICAgICAgICAgICBsaW5rVGl0bGUudGV4
dENvbnRlbnQgPSB0ZXN0TmFtZTsKLQotICAgICAgICAgICAgdmFyIGhlYWRlciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kQ2hpbGQobm9u
TGlua1RpdGxlKTsKLSAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChsaW5rVGl0bGUpOwot
ICAgICAgICAgICAgaGVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fc2hvd1Jl
c3VsdHMuYmluZCh0aGlzLCBoZWFkZXIsIGZhbHNlKSk7Ci0gICAgICAgICAgICB0b3BQYW5lbC5h
cHBlbmRDaGlsZChoZWFkZXIpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICAvLyBJZiB3
ZSBoYXZlIGEgc21hbGwgYW1vdW50IG9mIGNvbnRlbnQsIGRvbid0IHNob3cgdGhlIHJlc2l6ZSBo
YW5kbGVyLgotICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgbWluSGVpZ2h0IHNvIHRoYXQg
dGhlIHBlcmNlbnRhZ2UgaGVpZ2h0IG9mIHRoZSAKLSAgICAgICAgLy8gdG9wUGFuZWwgaXMgbm90
IHRvbyBzbWFsbC4KLSAgICAgICAgaWYgKHRlc3ROYW1lcy5sZW5ndGggPD0gNCkKLSAgICAgICAg
ICAgIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5xdWVyeVNlbGVjdG9yKCcucmVzaXplLWhhbmRsZScp
KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9wUGFuZWwuc3R5bGUubWluSGVpZ2h0ID0g
JzEwMHB4JzsKLSAgICB9LAotICAgIF9hcHBlbmRSZXNpemVIYW5kbGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHZhciByZXNpemVIYW5kbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgcmVzaXplSGFuZGxlLmNsYXNzTmFtZSA9ICdyZXNpemUtaGFuZGxlJzsK
LSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChyZXNpemVIYW5kbGUpOwotCi0gICAgICAgIHJlc2l6
ZUhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbihldmVudCkgewot
ICAgICAgICAgICAgdGhpcy5faXNfcmVzaXppbmcgPSB0cnVlOwotICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2YXIg
Y2FuY2VsUmVzaXplID0gZnVuY3Rpb24oZXZlbnQpIHsgdGhpcy5faXNfcmVzaXppbmcgPSBmYWxz
ZTsgfS5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAn
LCBjYW5jZWxSZXNpemUpOwotICAgICAgICAvLyBGSVhNRTogVXNlIGFkZEV2ZW50TGlzdGVuZXIg
b25jZSBXZWJLaXQgYWRkcyBzdXBwb3J0IGZvciBtb3VzZWxlYXZlL21vdXNlZW50ZXIuCi0gICAg
ICAgICQod2luZG93KS5iaW5kKCdtb3VzZWxlYXZlJywgY2FuY2VsUmVzaXplKTsKLQotICAgICAg
ICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uKGV2ZW50KSB7Ci0g
ICAgICAgICAgICBpZiAoIXRoaXMuX2lzX3Jlc2l6aW5nKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgICAgIHZhciBtb3VzZVkgPSBldmVudC5jbGllbnRZICsgZG9jdW1lbnQuYm9k
eS5zY3JvbGxUb3AgLSB0aGlzLm9mZnNldFRvcDsKLSAgICAgICAgICAgIHZhciBwZXJjZW50YWdl
ID0gMTAwICogbW91c2VZIC8gdGhpcy5vZmZzZXRIZWlnaHQ7Ci0gICAgICAgICAgICBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcudG9wLXBhbmVsJykuc3R5bGUubWF4SGVpZ2h0ID0gcGVyY2VudGFn
ZSArICclJzsKLSAgICAgICAgfS5iaW5kKHRoaXMpKQotICAgIH0sCi0gICAgX3Nob3dSZXN1bHRz
OiBmdW5jdGlvbihoZWFkZXIsIHNjcm9sbEluZm9WaWV3KQotICAgIHsKLSAgICAgICAgaWYgKCFo
ZWFkZXIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGFjdGl2ZUhl
YWRlciA9IHRoaXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpCi0gICAgICAgIGlmIChhY3RpdmVI
ZWFkZXIpCi0gICAgICAgICAgICBhY3RpdmVIZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZl
Jyk7Ci0gICAgICAgIGhlYWRlci5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKLQotICAgICAgICB2
YXIgdGVzdE5hbWUgPSB0aGlzLmN1cnJlbnRUZXN0TmFtZSgpOwotICAgICAgICB0aGlzLl9mbGFr
aW5lc3NEYXRhLnNyYyA9IHVpLnVybEZvckVtYmVkZGVkRmxha2luZXNzRGFzaGJvYXJkKFt0ZXN0
TmFtZV0pOwotCi0gICAgICAgIHZhciBib3R0b21QYW5lbCA9IHRoaXMucXVlcnlTZWxlY3Rvcign
LmJvdHRvbS1wYW5lbCcpCi0gICAgICAgIGJvdHRvbVBhbmVsLmlubmVySFRNTCA9ICcnOwotICAg
ICAgICBib3R0b21QYW5lbC5hcHBlbmRDaGlsZCh0aGlzLl9kZWxlZ2F0ZS5jb250ZW50Rm9yVGVz
dCh0ZXN0TmFtZSkpOwotCi0gICAgICAgIHZhciB0b3BQYW5lbCA9IHRoaXMucXVlcnlTZWxlY3Rv
cignLnRvcC1wYW5lbCcpOwotICAgICAgICBpZiAoc2Nyb2xsSW5mb1ZpZXcpIHsKLSAgICAgICAg
ICAgIHRvcFBhbmVsLnNjcm9sbFRvcCA9IGhlYWRlci5vZmZzZXRUb3A7Ci0gICAgICAgICAgICBp
ZiAoaGVhZGVyLm9mZnNldFRvcCAtIHRvcFBhbmVsLnNjcm9sbFRvcCA8IGhlYWRlci5vZmZzZXRI
ZWlnaHQpCi0gICAgICAgICAgICAgICAgdG9wUGFuZWwuc2Nyb2xsVG9wID0gdG9wUGFuZWwuc2Ny
b2xsVG9wIC0gaGVhZGVyLm9mZnNldEhlaWdodDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBy
ZXN1bHRzRGV0YWlscyA9IHRoaXMucXVlcnlTZWxlY3RvckFsbCgnLnJlc3VsdHMtZGV0YWlsJyk7
Ci0gICAgICAgIGlmIChyZXN1bHRzRGV0YWlscy5sZW5ndGgpCi0gICAgICAgICAgICByZXN1bHRz
RGV0YWlsc1swXS5zaG93KCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJlc3VsdHNEZXRhaWxzLCBmdW5j
dGlvbihyZXN1bHRzRGV0YWlsKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c0RldGFpbC5zaG93
KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwga1Jlc3VsdHNQcmVmZXRjaERlbGF5TVMp
OwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgbmV4dFJlc3VsdDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucXVlcnlTZWxlY3RvcignLmJ1aWxkZXItc2Vs
ZWN0b3InKS5uZXh0UmVzdWx0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
cmV0dXJuIHRoaXMubmV4dFRlc3QoKTsKLSAgICB9LAotICAgIHByZXZpb3VzUmVzdWx0OiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5xdWVyeVNlbGVjdG9yKCcuYnVpbGRlci1z
ZWxlY3RvcicpLnByZXZpb3VzUmVzdWx0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNUZXN0KCk7Ci0gICAgfSwKLSAgICBuZXh0VGVzdDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dSZXN1bHRzKHRoaXMu
cXVlcnlTZWxlY3RvcignLmFjdGl2ZScpLm5leHRTaWJsaW5nLCB0cnVlKTsKLSAgICB9LAotICAg
IHByZXZpb3VzVGVzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHN1Y2NlZWRlZCA9
IHRoaXMuX3Nob3dSZXN1bHRzKHRoaXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpLnByZXZpb3Vz
U2libGluZywgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdWNjZWVkZWQpCi0gICAgICAgICAgICB0aGlz
LnF1ZXJ5U2VsZWN0b3IoJy5idWlsZGVyLXNlbGVjdG9yJykubGFzdFJlc3VsdCgpOwotICAgICAg
ICByZXR1cm4gc3VjY2VlZGVkOwotICAgIH0sCi0gICAgZmlyc3RSZXN1bHQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3Nob3dSZXN1bHRzKHRoaXMucXVlcnlTZWxlY3RvcignaDMn
KSwgdHJ1ZSk7Ci0gICAgfSwKLSAgICBjdXJyZW50VGVzdE5hbWU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUgLm5vbi1saW5rLXRp
dGxlJykudGV4dENvbnRlbnQ7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuQnVpbGRlclNlbGVj
dG9yID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZGVsZWdhdGUs
IHRlc3ROYW1lLCByZXN1bHRzQnlCdWlsZGVyKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05h
bWUgPSAnYnVpbGRlci1zZWxlY3Rvcic7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdh
dGU7Ci0KLSAgICAgICAgdmFyIHRhYlN0cmlwID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCd1bCcpKTsKLQotICAgICAgICBPYmplY3Qua2V5cyhyZXN1bHRzQnlCdWls
ZGVyKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAg
dmFyIGJ1aWxkZXJIYXNoID0gYmFzZS51bmRlcnNjb3JlZEJ1aWxkZXJOYW1lKGJ1aWxkZXJOYW1l
KTsKLQotICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7
Ci0gICAgICAgICAgICAkKGxpbmspLmF0dHIoJ2hyZWYnLCAiIyIgKyBidWlsZGVySGFzaCkudGV4
dCh1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKLSAgICAgICAgICAgIHRh
YlN0cmlwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJykpLmFwcGVuZENo
aWxkKGxpbmspOwotCi0gICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX2RlbGVnYXRlLmNv
bnRlbnRGb3JUZXN0QW5kQnVpbGRlcih0ZXN0TmFtZSwgYnVpbGRlck5hbWUpOwotICAgICAgICAg
ICAgY29udGVudC5pZCA9IGJ1aWxkZXJIYXNoOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRDaGls
ZChjb250ZW50KTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgJCh0aGlzKS50YWJzKCk7
Ci0gICAgfSwKLSAgICBuZXh0UmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
bmV4dEluZGV4ID0gJCh0aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSArIDE7Ci0gICAg
ICAgIGlmIChuZXh0SW5kZXggPj0gJCh0aGlzKS50YWJzKCdsZW5ndGgnKSkKLSAgICAgICAgICAg
IHJldHVybiBmYWxzZQotICAgICAgICAkKHRoaXMpLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcs
IG5leHRJbmRleCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgcHJldmlvdXNS
ZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwcmV2aW91c0luZGV4ID0gJCh0
aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSAtIDE7Ci0gICAgICAgIGlmIChwcmV2aW91
c0luZGV4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgJCh0aGlzKS50
YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnLCBwcmV2aW91c0luZGV4KTsKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfSwKLSAgICBmaXJzdFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgJCh0aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnLCAwKTsKLSAgICB9LAotICAgIGxh
c3RSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgICQodGhpcykudGFicygnb3B0aW9u
JywgJ3NlbGVjdGVkJywgJCh0aGlzKS50YWJzKCdsZW5ndGgnKSAtIDEpOwotICAgIH0KLX0pOwot
Ci11aS5yZXN1bHRzLlZpZXcgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBmdW5j
dGlvbihkZWxlZ2F0ZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMt
dmlldyc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgfSwKLSAgICBj
b250ZW50Rm9yVGVzdDogZnVuY3Rpb24odGVzdE5hbWUpCi0gICAgewotICAgICAgICB2YXIgcmVi
YXNlbGluZUFjdGlvbjsKLSAgICAgICAgaWYgKGlzQW55UmVmdGVzdCh0ZXN0TmFtZSwgdGhpcy5f
cmVzdWx0c0J5VGVzdCkpCi0gICAgICAgICAgICByZWJhc2VsaW5lQWN0aW9uID0gJCgnPGRpdiBj
bGFzcz0ibm9uLWFjdGlvbi1idXR0b24iPlJlZnRlc3RzIGNhbm5vdCBiZSByZWJhc2VsaW5lZC4g
RW1haWwgd2Via2l0LWdhcmRlbmluZ0BjaHJvbWl1bS5vcmcgaWYgdW5zdXJlIGhvdyB0byBmaXgg
dGhpcy48L2Rpdj4nKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmViYXNlbGluZUFjdGlv
biA9IG5ldyB1aS5hY3Rpb25zLkxpc3QoW25ldyB1aS5hY3Rpb25zLlJlYmFzZWxpbmUoKS5tYWtl
RGVmYXVsdCgpXSk7Ci0gICAgICAgICQocmViYXNlbGluZUFjdGlvbikuYWRkQ2xhc3MoJ3JlYmFz
ZWxpbmUtYWN0aW9uJyk7Ci0KLSAgICAgICAgdmFyIGJ1aWxkZXJTZWxlY3RvciA9IG5ldyB1aS5y
ZXN1bHRzLkJ1aWxkZXJTZWxlY3Rvcih0aGlzLCB0ZXN0TmFtZSwgdGhpcy5fcmVzdWx0c0J5VGVz
dFt0ZXN0TmFtZV0pOwotICAgICAgICAkKGJ1aWxkZXJTZWxlY3RvcikuYXBwZW5kKHJlYmFzZWxp
bmVBY3Rpb24pLmFwcGVuZCgkKCc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiPicpKTsKLSAgICAgICAg
JChidWlsZGVyU2VsZWN0b3IpLmJpbmQoJ3RhYnNzZWxlY3QnLCBmdW5jdGlvbihldmVudCwgdWkp
IHsKLSAgICAgICAgICAgIC8vIFdlIHdpbGwgcHJvYmFibHkgaGF2ZSBwcmUtZmV0Y2hlZCB0aGUg
dGFiIGFscmVhZHksIGJ1dCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZS4KLSAgICAgICAgICAgIHVpLnBh
bmVsLnNob3coKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyU2VsZWN0b3I7
Ci0gICAgfSwKLSAgICBjb250ZW50Rm9yVGVzdEFuZEJ1aWxkZXI6IGZ1bmN0aW9uKHRlc3ROYW1l
LCBidWlsZGVyTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBmYWlsdXJlSW5mbyA9IHJlc3VsdHMu
ZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcih0aGlzLl9yZXN1bHRzQnlUZXN0LCB0ZXN0TmFt
ZSwgYnVpbGRlck5hbWUpOwotICAgICAgICByZXR1cm4gbmV3IHVpLnJlc3VsdHMuUmVzdWx0c0Rl
dGFpbHModGhpcywgZmFpbHVyZUluZm8pOwotICAgIH0sCi0gICAgc2V0UmVzdWx0c0J5VGVzdDog
ZnVuY3Rpb24ocmVzdWx0c0J5VGVzdCkKLSAgICB7Ci0gICAgICAgICQodGhpcykuZW1wdHkoKTsK
LSAgICAgICAgdGhpcy5fcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7Ci0gICAgICAgIHRo
aXMuX3Rlc3RTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLlRlc3RTZWxlY3Rvcih0aGlzLCByZXN1
bHRzQnlUZXN0KTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLl90ZXN0U2VsZWN0b3Ip
OwotICAgIH0sCi0gICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNh
bGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmV0Y2hSZXN1bHRzVVJMcyhm
YWlsdXJlSW5mbywgY2FsbGJhY2spCi0gICAgfSwKLSAgICBuZXh0UmVzdWx0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLm5leHRSZXN1bHQoKTsK
LSAgICB9LAotICAgIHByZXZpb3VzUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLnByZXZpb3VzUmVzdWx0KCk7Ci0gICAgfSwKLSAgICBu
ZXh0VGVzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RTZWxl
Y3Rvci5uZXh0VGVzdCgpOwotICAgIH0sCi0gICAgcHJldmlvdXNUZXN0OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLnByZXZpb3VzVGVzdCgpOwot
ICAgIH0sCi0gICAgZmlyc3RSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3Rlc3RTZWxlY3Rvci5maXJzdFJlc3VsdCgpCi0gICAgfSwKLSAgICBjdXJyZW50VGVzdE5hbWU6
IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3IuY3Vy
cmVudFRlc3ROYW1lKCkKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDIwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7
Ci0KLW1vZHVsZSgndWkucmVzdWx0cycpOwotCi1hc3luY1Rlc3QoJ0ZsYWtpbmVzc0RhdGEnLCAx
LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGFzaGJvYXJkID0gbmV3IHVpLnJlc3VsdHMuRmxha2lu
ZXNzRGF0YSgpOwotICAgIGRhc2hib2FyZC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rp
b24oKSB7Ci0gICAgICAgIC8vIHNldFRpbWVvdXQgdG8gYmUgYWZ0ZXIgdGhlIEZsYWtpbmVzc0Rh
dGEncyBsb2FkIGhhbmRsZXIuCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6ICdoZWlnaHRDaGFuZ2VkJywgaGVp
Z2h0OiAxNX0sICcqJyk7Ci0gICAgICAgICAgICAvLyBzZXRUaW1lb3V0IHRvIGJlIGFmdGVyIHRo
ZSBwb3N0TWVzc2FnZSBoYXMgYmVlbiBoYW5kbGVkLgotICAgICAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBlcXVhbHMoZGFzaGJvYXJkLm9mZnNldEhlaWdo
dCwgMTUpOwotICAgICAgICAgICAgICAgICQoZGFzaGJvYXJkKS5kZXRhY2goKTsKLSAgICAgICAg
ICAgICAgICBzdGFydCgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgIH0sIDApOwotICAg
IH0pOwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGFzaGJvYXJkKTsKLX0pOwotCi12
YXIga0V4YW1wbGVSZXN1bHRzQnlUZXN0ID0gewotICAgICJzY3JvbGxiYXJzL2N1c3RvbS1zY3Jv
bGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxk
ZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0UiLAotICAgICAgICAgICAgImFj
dHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfSwKLSAgICAgICAgIk1vY2sgTGludXgiOiB7Ci0gICAg
ICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNI
IgotICAgICAgICB9Ci0gICAgfSwKLSAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwi
OiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAi
UEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgIH0KLSAgICB9Ci19
OwotCi12YXIga0V4YW1wbGVSZWZ0ZXN0UmVzdWx0cyA9IHsKLSAgICAicmVmdGVzdC5odG1sIjog
ewotICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBB
U1MiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAicmVmdGVz
dF90eXBlIjogWyI9PSJdCi0gICAgICAgIH0KLSAgICB9LAotICAgICJtaXNtYXRjaC1yZWZ0ZXN0
Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0
ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIiwKLSAgICAgICAgICAg
ICJyZWZ0ZXN0X3R5cGUiOiBbIiE9Il0KLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBrRXhh
bXBsZVJlc3VsdHNXaXRoVGltZW91dEJ5VGVzdCA9IHsKLSAgICAiZmFzdC9ub3QtZmFzdC10ZXN0
Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0
ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRJTUVPVVQiCi0gICAgICAgIH0K
LSAgICB9Ci19OwotCi12YXIga0V4YW1wbGVHcmVhdGVyVGhhbkZvdXJSZXN1bHRzQnlUZXN0ID0g
ewotICAgICJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxl
Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIExpbnV4IjogewotICAgICAgICAgICAgImV4cGVjdGVk
IjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfQotICAg
IH0sCi0gICAgInNjcm9sbGJhcnMvMS5odG1sIjogewotICAgICAgICAiTW9jayBMaW51eCI6IHsK
LSAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAi
Q1JBU0giCi0gICAgICAgIH0KLSAgICB9LAotICAgICJzY3JvbGxiYXJzLzIuaHRtbCI6IHsKLSAg
ICAgICAgIk1vY2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0g
ICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAic2Ny
b2xsYmFycy8zLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIExpbnV4IjogewotICAgICAgICAgICAg
ImV4cGVjdGVkIjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAg
ICAgfQotICAgIH0sCi0gICAgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogewotICAg
ICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAot
ICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICB9Ci0gICAgfQotfTsKLQotdGVz
dCgnVmlldycsIDE4LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGVsZWdhdGUgPSB7Ci0gICAgICAg
IGZldGNoUmVzdWx0c1VSTHM6IGZ1bmN0aW9uKGZhaWx1cmVJbmZvLCBjYWxsYmFjaykgeyByZXR1
cm47IH0KLSAgICB9OwotCi0gICAgdmFyIHZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KGRlbGVn
YXRlKTsKLSAgICB2aWV3LnNldFJlc3VsdHNCeVRlc3Qoa0V4YW1wbGVSZXN1bHRzQnlUZXN0KTsK
LQotICAgIHZpZXcuZmlyc3RSZXN1bHQoKTsKLSAgICB2YXIgdGVzdFNlbGVjdG9yID0gdmlldy5x
dWVyeVNlbGVjdG9yKCcudGVzdC1zZWxlY3RvcicpOwotICAgIHZhciB0b3BQYW5lbCA9IHRlc3RT
ZWxlY3Rvci5xdWVyeVNlbGVjdG9yKCcudG9wLXBhbmVsJyk7Ci0gICAgZXF1YWxzKHRvcFBhbmVs
LmNoaWxkTm9kZXNbMF0sIHRvcFBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUnKSk7OwotICAg
IGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9yJywgdmlldylbMF0pLnRhYnMoJ29wdGlvbics
ICdzZWxlY3RlZCcpLCAwKTsKLQotICAgIHZpZXcubmV4dFJlc3VsdCgpOwotICAgIGVxdWFscyh0
b3BQYW5lbC5jaGlsZE5vZGVzWzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykp
OzsKLSAgICBlcXVhbHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJzKCdv
cHRpb24nLCAnc2VsZWN0ZWQnKSwgMSk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3ROYW1l
KCksICdzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0
bWwnKTsKLQotICAgIHZpZXcubmV4dFJlc3VsdCgpOwotICAgIGVxdWFscyh0b3BQYW5lbC5jaGls
ZE5vZGVzWzFdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykpOzsKLSAgICBlcXVh
bHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJzKCdvcHRpb24nLCAnc2Vs
ZWN0ZWQnKSwgMCk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3ROYW1lKCksICd1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCcpOwotCi0gICAgdmlldy5wcmV2aW91c1Jlc3VsdCgpOwot
ICAgIGVxdWFscyh0b3BQYW5lbC5jaGlsZE5vZGVzWzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9y
KCcuYWN0aXZlJykpOzsKLSAgICBlcXVhbHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcp
WzBdKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSwgMSk7Ci0KLSAgICB2aWV3Lm5leHRUZXN0
KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNoaWxkTm9kZXNbMV0sIHRvcFBhbmVsLnF1ZXJ5U2Vs
ZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9yJywg
dmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpLCAwKTsKLSAgICBlcXVhbHModmll
dy5jdXJyZW50VGVzdE5hbWUoKSwgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJyk7Ci0K
LSAgICB2aWV3LnByZXZpb3VzVGVzdCgpOwotICAgIGVxdWFscyh0b3BQYW5lbC5jaGlsZE5vZGVz
WzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykpOzsKLSAgICBlcXVhbHMoJCgk
KCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQn
KSwgMSk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3ROYW1lKCksICdzY3JvbGxiYXJzL2N1
c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwnKTsKLQotICAgIG9rKCF0
ZXN0U2VsZWN0b3IucXVlcnlTZWxlY3RvcignLnJlc2l6ZS1oYW5kbGUnKSk7Ci0gICAgZXF1YWxz
KHRvcFBhbmVsLnN0eWxlLm1pbkhlaWdodCwgJycpOwotfSk7Ci0KLXRlc3QoJ1ZpZXcgd2l0aCBt
b3JlIHRoYW4gZm91ciB0ZXN0cycsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBkZWxlZ2F0ZSA9
IHsKLSAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNhbGxi
YWNrKSB7IHJldHVybjsgfQotICAgIH07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRz
LlZpZXcoZGVsZWdhdGUpOwotICAgIHZpZXcuc2V0UmVzdWx0c0J5VGVzdChrRXhhbXBsZUdyZWF0
ZXJUaGFuRm91clJlc3VsdHNCeVRlc3QpOwotCi0gICAgdmFyIHRlc3RTZWxlY3RvciA9IHZpZXcu
cXVlcnlTZWxlY3RvcignLnRlc3Qtc2VsZWN0b3InKTsKLSAgICB2YXIgdG9wUGFuZWwgPSB0ZXN0
U2VsZWN0b3IucXVlcnlTZWxlY3RvcignLnRvcC1wYW5lbCcpOwotCi0gICAgb2sodGVzdFNlbGVj
dG9yLnF1ZXJ5U2VsZWN0b3IoJy5yZXNpemUtaGFuZGxlJykpOwotICAgIGVxdWFscyh0b3BQYW5l
bC5zdHlsZS5taW5IZWlnaHQsICcxMDBweCcpOwotfSk7Ci0KLXRlc3QoJ1ZpZXcgd2l0aCByZWZ0
ZXN0cycsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBkZWxlZ2F0ZSA9IHsKLSAgICAgICAgZmV0
Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNhbGxiYWNrKSB7IHJldHVybjsg
fQotICAgIH07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoZGVsZWdhdGUp
OwotICAgIHZpZXcuc2V0UmVzdWx0c0J5VGVzdChrRXhhbXBsZVJlZnRlc3RSZXN1bHRzKTsKLSAg
ICB2aWV3LmZpcnN0UmVzdWx0KCk7Ci0KLSAgICBlcXVhbHMoJCgnLm5vbi1hY3Rpb24tYnV0dG9u
JywgdmlldykubGVuZ3RoLCAxKTsKLSAgICBlcXVhbHMoJCgnLmFjdGlvbicsIHZpZXcpLmxlbmd0
aCwgMCk7Ci19KTsKLQotdGVzdCgnVmlldyBvZiB0aW1lb3V0cycsIDEsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBkZWxlZ2F0ZSA9IHsKLSAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24o
ZmFpbHVyZUluZm8sIGNhbGxiYWNrKSB7IGNhbGxiYWNrKFtdKTsgfQotICAgIH07Ci0KLSAgICB2
YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoZGVsZWdhdGUpOwotICAgIHZpZXcuc2V0UmVz
dWx0c0J5VGVzdChrRXhhbXBsZVJlc3VsdHNXaXRoVGltZW91dEJ5VGVzdCk7Ci0gICAgdmlldy5m
aXJzdFJlc3VsdCgpOwotCi0gICAgZXF1YWxzKCQoJy5yZXN1bHRzLWdyaWQnLCB2aWV3KS5odG1s
KCksICdObyByZXN1bHRzIHRvIGRpc3BsYXkuJyk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL3VpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL3VpLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy91aS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI5NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZh
ciB1aSA9IHVpIHx8IHt9OwotCi0oZnVuY3Rpb24gKCkgewotCi11aS5kaXNwbGF5VVJMRm9yQnVp
bGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVybiBjb25maWcua1BsYXRm
b3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS53YXRlcmZhbGxVUkwgKyAnPycgKyAkLnBhcmFt
KHsKLSAgICAgICAgJ2J1aWxkZXInOiBidWlsZGVyTmFtZQotICAgIH0pOwotfQotCi11aS5kaXNw
bGF5TmFtZUZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKLXsKLSAgICByZXR1cm4g
YnVpbGRlck5hbWUucmVwbGFjZSgvV2Via2l0IC8sICcnKTsKLX0KLQotdWkudXJsRm9yVGVzdCA9
IGZ1bmN0aW9uKHRlc3ROYW1lKQotewotICAgIHJldHVybiAnaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy8nICsgdGVzdE5hbWU7Ci19Ci0KLXVpLnVybEZv
ckZsYWtpbmVzc0Rhc2hib2FyZCA9IGZ1bmN0aW9uKG9wdF90ZXN0TmFtZUxpc3QpCi17Ci0gICAg
dmFyIHRlc3RzUGFyYW1ldGVyID0gb3B0X3Rlc3ROYW1lTGlzdCA/IG9wdF90ZXN0TmFtZUxpc3Qu
am9pbignLCcpIDogJyc7Ci0gICAgcmV0dXJuICdodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/
c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0c1BhcmFt
ZXRlcik7Ci19Ci0KLXVpLnVybEZvckVtYmVkZGVkRmxha2luZXNzRGFzaGJvYXJkID0gZnVuY3Rp
b24ob3B0X3Rlc3ROYW1lTGlzdCkKLXsKLSAgICBpZiAoY29uZmlnLmtQbGF0Zm9ybXNbY29uZmln
LmN1cnJlbnRQbGF0Zm9ybV0udXNlRmxha2luZXNzRGFzaGJvYXJkKQotICAgICAgICByZXR1cm4g
dWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkKG9wdF90ZXN0TmFtZUxpc3QpICsgJyZzaG93Q2hy
b21lPWZhbHNlJzsKLSAgICAKLSAgICByZXR1cm4gJ2Fib3V0OmJsYW5rJzsKLX0KLQotdWkucmV2
ZXJ0UmVhc29uRm9yVGVzdE5hbWVMaXN0ID0gZnVuY3Rpb24odGVzdE5hbWVMaXN0KQotewotICAg
IHJldHVybiAnQnJva2U6XG4nICsgdGVzdE5hbWVMaXN0Lm1hcChmdW5jdGlvbih0ZXN0TmFtZSkg
ewotICAgICAgICByZXR1cm4gJyogJyArIHRlc3ROYW1lOwotICAgIH0pLmpvaW4oJ1xuJyk7Ci19
Ci0KLXVpLm9uZWJhciA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuaWQgPSAnb25lYmFyJzsKLSAgICAgICAgdGhpcy5pbm5l
ckhUTUwgPQotICAgICAgICAgICAgJzxkaXY+PHNlbGVjdCBpZD0icGxhdGZvcm0tcGlja2VyIj48
L3NlbGVjdD48L2Rpdj4nICsKLSAgICAgICAgICAgICc8dWw+JyArCi0gICAgICAgICAgICAgICAg
JzxsaT48YSBocmVmPSIjdW5leHBlY3RlZCI+VW5leHBlY3RlZCBGYWlsdXJlczwvYT48L2xpPicg
KwotICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iI2V4cGVjdGVkIj5FeHBlY3RlZCBGYWls
dXJlczwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iI3Jlc3VsdHMi
PlJlc3VsdHM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9IiNwZXJm
Ij5wZXJmPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgICAgICc8
ZGl2IGlkPSJ1bmV4cGVjdGVkIj48L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJleHBl
Y3RlZCI+PC9kaXY+JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+JyAr
Ci0gICAgICAgICAgICAnPGRpdiBpZD0icGVyZiI+PC9kaXY+JzsKLSAgICAgICAgdGhpcy5fdGFi
TmFtZXMgPSBbCi0gICAgICAgICAgICAndW5leHBlY3RlZCcsCi0gICAgICAgICAgICAnZXhwZWN0
ZWQnLAotICAgICAgICAgICAgJ3Jlc3VsdHMnLAotICAgICAgICAgICAgJ3BlcmYnLAotICAgICAg
ICBdCi0KLSAgICAgICAgdGhpcy5fdGFiSW5kZXhUb1NhdmVkU2Nyb2xsT2Zmc2V0ID0ge307Ci0g
ICAgICAgIHRoaXMuX3RhYnMgPSAkKHRoaXMpLnRhYnMoewotICAgICAgICAgICAgZGlzYWJsZWQ6
IFsyXSwKLSAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGV2ZW50LCB1aSkgeyB0aGlzLl9yZXN0
b3JlU2Nyb2xsT2Zmc2V0KHVpLmluZGV4KTsgfSwKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBf
YnVpbGRQbGF0Zm9ybXNQb3B1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBmaW5k
IGEgYmV0dGVyIHBsYWNlIHRvIGRvIHRoaXMuCi0gICAgICAgIHZhciB1cmxQbGF0Zm9ybSA9IGJh
c2UuZ2V0VVJMUGFyYW1ldGVyKCdwbGF0Zm9ybScpOwotICAgICAgICBpZiAodXJsUGxhdGZvcm0p
Ci0gICAgICAgICAgICBjb25maWcuc2V0UGxhdGZvcm0odXJsUGxhdGZvcm0pOwotICAgICAgICAK
LSAgICAgICAgdmFyIHBsYXRmb3JtU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Bs
YXRmb3JtLXBpY2tlcicpOwotICAgICAgICB2YXIgY3VycmVudFBsYXRmb3JtSW5kZXggPSAwOwot
ICAgICAgICBPYmplY3Qua2V5cyhjb25maWcua1BsYXRmb3Jtcykuc29ydCgpLmZvckVhY2goZnVu
Y3Rpb24ocGxhdGZvcm1OYW1lKSB7Ci0gICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7Ci0gICAgICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0g
Y29uZmlnLmtQbGF0Zm9ybXNbcGxhdGZvcm1OYW1lXS5sYWJlbDsKLSAgICAgICAgICAgIG9wdGlv
bi5fcGxhdGZvcm0gPSBwbGF0Zm9ybU5hbWU7Ci0gICAgICAgICAgICBpZiAocGxhdGZvcm1OYW1l
ID09IGNvbmZpZy5jdXJyZW50UGxhdGZvcm0pCi0gICAgICAgICAgICAgICAgY3VycmVudFBsYXRm
b3JtSW5kZXggPSBwbGF0Zm9ybVNlbGVjdC5jaGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAgICAg
IHBsYXRmb3JtU2VsZWN0LmFwcGVuZENoaWxkKG9wdGlvbik7Ci0gICAgICAgIH0pOwotICAgICAg
ICAKLSAgICAgICAgcGxhdGZvcm1TZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uc2VhcmNoID0gJz9wbGF0Zm9y
bT0nICsgcGxhdGZvcm1TZWxlY3Qub3B0aW9uc1twbGF0Zm9ybVNlbGVjdC5zZWxlY3RlZEluZGV4
XS5fcGxhdGZvcm07Ci0gICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgcGxhdGZvcm1TZWxl
Y3Quc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRQbGF0Zm9ybUluZGV4OwotICAgIH0sCi0gICAgX3Nh
dmVTY3JvbGxPZmZzZXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGFiSW5kZXggPSB0aGlz
Ll90YWJzLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpOwotICAgICAgICB0aGlzLl90YWJJbmRl
eFRvU2F2ZWRTY3JvbGxPZmZzZXRbdGFiSW5kZXhdID0gZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7
Ci0gICAgfSwKLSAgICBfcmVzdG9yZVNjcm9sbE9mZnNldDogZnVuY3Rpb24odGFiSW5kZXgpCi0g
ICAgewotICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHRoaXMuX3RhYkluZGV4VG9T
YXZlZFNjcm9sbE9mZnNldFt0YWJJbmRleF0gfHwgMDsKLSAgICB9LAotICAgIF9zZXR1cEhpc3Rv
cnlIYW5kbGVyczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY3VycmVudEhh
c2goKSB7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoOwotICAg
ICAgICAgICAgcmV0dXJuICghaGFzaCB8fCBoYXNoID09ICcjJykgPyAnI3VuZXhwZWN0ZWQnIDog
aGFzaDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgJCgn
LnVpLXRhYnMtbmF2IGEnKS5iaW5kKCdtb3VzZXVwJywgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAg
ICAgICAgIHZhciBocmVmID0gZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaHJlZicpOwotICAg
ICAgICAgICAgdmFyIGhhc2ggPSBjdXJyZW50SGFzaCgpOwotICAgICAgICAgICAgaWYgKGhyZWYg
IT0gaGFzaCkgewotICAgICAgICAgICAgICAgIHNlbGYuX3NhdmVTY3JvbGxPZmZzZXQoKTsKLSAg
ICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBocmVmCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICAgICAgdmFyIHRhYk5hbWUgPSBjdXJyZW50SGFzaCgpLnN1YnN0cmluZygxKTsK
LSAgICAgICAgICAgIHNlbGYuX3NlbGVjdEludGVybmFsKHRhYk5hbWUpOwotICAgICAgICB9Owot
Ci0gICAgICAgIC8vIFdoZW4gbmF2aWdhdGluZyBmcm9tIHRoZSBicm93c2VyIGNocm9tZSwgd2Un
bGwKLSAgICAgICAgLy8gc2Nyb2xsIHRvIHRoZSAjdGFibmFtZSBjb250ZW50cy4gcG9wc3RhdGUg
ZmlyZXMgYmVmb3JlCi0gICAgICAgIC8vIHdlIHNjcm9sbCwgc28gd2UgY2FuIHNhdmUgdGhlIHNj
cm9sbCBvZmZzZXQgZmlyc3QuCi0gICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBzZWxmLl9zYXZlU2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIH07Ci0g
ICAgfSwKLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50LmJv
ZHkuaW5zZXJ0QmVmb3JlKHRoaXMsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Ci0gICAgICAg
IHRoaXMuX3NldHVwSGlzdG9yeUhhbmRsZXJzKCk7Ci0gICAgICAgIHRoaXMuX2J1aWxkUGxhdGZv
cm1zUG9wdXAoKTsKLSAgICB9LAotICAgIHRhYk5hbWVkOiBmdW5jdGlvbih0YWJOYW1lKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMuX3RhYk5hbWVzLmluZGV4T2YodGFiTmFtZSkgPT0gLTEpCi0g
ICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGFiID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQodGFiTmFtZSk7Ci0gICAgICAgIC8vIFdlIHBlcmZvcm0gdGhpcyBzYW5pdHkgY2hlY2sg
YmVsb3cgdG8gbWFrZSBzdXJlIGdldEVsZW1lbnRCeUlkCi0gICAgICAgIC8vIGhhc24ndCBnaXZl
biB1cyBhIG5vZGUgaW4gc29tZSBvdGhlciB1bnJlbGF0ZWQgcGFydCBvZiB0aGUgZG9jdW1lbnQu
Ci0gICAgICAgIC8vIHRoYXQgc2hvdWxkbid0IGhhcHBlbiBub3JtYWxseSwgYnV0IGl0IGNvdWxk
IGhhcHBlbiBpZiBhbiBhdHRhY2tlcgotICAgICAgICAvLyBoYXMgc29tZWhvdyBzbmVha2lseSBh
ZGRlZCBhIG5vZGUgdG8gb3VyIGRvY3VtZW50LgotICAgICAgICBpZiAodGFiLnBhcmVudE5vZGUg
IT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gdGFiOwot
ICAgIH0sCi0gICAgdW5leHBlY3RlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMudGFiTmFtZWQoJ3VuZXhwZWN0ZWQnKTsKLSAgICB9LAotICAgIGV4cGVjdGVkOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy50YWJOYW1lZCgnZXhwZWN0ZWQnKTsK
LSAgICB9LAotICAgIHJlc3VsdHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLnRhYk5hbWVkKCdyZXN1bHRzJyk7Ci0gICAgfSwKLSAgICBwZXJmOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICByZXR1cm4gdGhpcy50YWJOYW1lZCgncGVyZicpOwotICAgIH0sCi0gICAg
X3NlbGVjdEludGVybmFsOiBmdW5jdGlvbih0YWJOYW1lKSB7Ci0gICAgICAgIHZhciB0YWJJbmRl
eCA9IHRoaXMuX3RhYk5hbWVzLmluZGV4T2YodGFiTmFtZSk7Ci0gICAgICAgIHRoaXMuX3RhYnMu
dGFicygnZW5hYmxlJywgdGFiSW5kZXgpOwotICAgICAgICB0aGlzLl90YWJzLnRhYnMoJ3NlbGVj
dCcsIHRhYkluZGV4KTsKLSAgICB9LAotICAgIHNlbGVjdDogZnVuY3Rpb24odGFiTmFtZSkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3NhdmVTY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgdGhpcy5fc2Vs
ZWN0SW50ZXJuYWwodGFiTmFtZSk7Ci0gICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICcjJyArIHRh
Yk5hbWU7Ci0gICAgfQotfSk7Ci0KLS8vIEZJWE1FOiBMb2FkaW5nIGEgbW9kdWxlIHNob3VsZG4n
dCBzZXQgb2ZmIGEgdGltZXIuICBUaGUgY29udHJvbGxlciBzaG91bGQga2ljayB0aGlzIG9mZi4K
LXNldEludGVydmFsKGZ1bmN0aW9uKCkgewotICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLmNh
bGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgidGltZS5yZWxhdGl2ZSIpLCBmdW5jdGlvbih0
aW1lKSB7Ci0gICAgICAgIHRpbWUudXBkYXRlICYmIHRpbWUudXBkYXRlKCk7Ci0gICAgfSk7Ci19
LCBjb25maWcua1JlbGF0aXZlVGltZVVwZGF0ZUZyZXF1ZW5jeSk7Ci0KLXVpLlJlbGF0aXZlVGlt
ZSA9IGJhc2UuZXh0ZW5kcygndGltZScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdyZWxhdGl2ZSc7Ci0gICAgfSwKLSAgICBkYXRlOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZTsKLSAgICB9LAotICAg
IHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9IHRo
aXMuX2RhdGUgPyBiYXNlLnJlbGF0aXZpemVUaW1lKHRoaXMuX2RhdGUpIDogJyc7Ci0gICAgfSwK
LSAgICBzZXREYXRlOiBmdW5jdGlvbihkYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGF0ZSA9
IGRhdGU7Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7Ci0gICAgfQotfSk7Ci0KLXVpLlN0YXR1c0Fy
ZWEgPSBiYXNlLmV4dGVuZHMoJ2RpdicsICB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgLy8gVGhpcyBpcyBhIFNpbmdsZXRvbi4KLSAgICAgICAgaWYgKHVpLlN0YXR1c0Fy
ZWEuX2luc3RhbmNlKQotICAgICAgICAgICAgcmV0dXJuIHVpLlN0YXR1c0FyZWEuX2luc3RhbmNl
OwotICAgICAgICB1aS5TdGF0dXNBcmVhLl9pbnN0YW5jZSA9IHRoaXM7Ci0KLSAgICAgICAgdGhp
cy5jbGFzc05hbWUgPSAnc3RhdHVzJzsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGls
ZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fY3VycmVudElkID0gMDsKLSAgICAgICAgdGhpcy5fdW5m
aW5pc2hlZElkcyA9IHt9OwotCi0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IHVpLmFjdGlv
bnMuTGlzdChbbmV3IHVpLmFjdGlvbnMuQ2xvc2UoKV0pKTsKLSAgICAgICAgJCh0aGlzKS5iaW5k
KCdjbG9zZScsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgdmFyIHByb2Nlc3Np
bmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcm9ncmVzcycpOwotICAgICAgICBwcm9jZXNz
aW5nLmNsYXNzTmFtZSA9ICdwcm9jZXNzLXRleHQnOwotICAgICAgICBwcm9jZXNzaW5nLnRleHRD
b250ZW50ID0gJ1Byb2Nlc3NpbmcuLi4nOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHByb2Nl
c3NpbmcpOwotICAgIH0sCi0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwotICAgICAgICBBcnJheS5wcm90b3R5cGUu
Zm9yRWFjaC5jYWxsKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnLnN0YXR1cy1jb250ZW50JyksIGZ1
bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChu
b2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBhZGRNZXNzYWdlOiBmdW5jdGlvbihpZCwg
bWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxl
JzsKLSAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygncHJvY2Vzc2luZycpOwotCi0gICAgICAgIHZh
ciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgICQoZWxl
bWVudCkuYWRkQ2xhc3MoJ21lc3NhZ2UnKS50ZXh0KG1lc3NhZ2UpOwotCi0gICAgICAgIHZhciBj
b250ZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsKLSAgICAgICAgaWYgKCFjb250
ZW50KSB7Ci0gICAgICAgICAgICBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
Jyk7Ci0gICAgICAgICAgICBjb250ZW50LmlkID0gaWQ7Ci0gICAgICAgICAgICBjb250ZW50LmNs
YXNzTmFtZSA9ICdzdGF0dXMtY29udGVudCc7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxk
KGNvbnRlbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChlbGVt
ZW50KTsKLSAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0VG9wIDwgdGhpcy5zY3JvbGxUb3AgfHwg
ZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCA+IHRoaXMuc2Nyb2xsVG9w
ICsgdGhpcy5vZmZzZXRIZWlnaHQpCi0gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGVsZW1l
bnQub2Zmc2V0VG9wOwotICAgIH0sCi0gICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciB3aGV0aGVy
IHRoaXMgY29kZSBjb3VsZCBsaXZlIGhlcmUgb3IgaW4gYSBjb250cm9sbGVyLgotICAgIGFkZEZp
bmFsTWVzc2FnZTogZnVuY3Rpb24oaWQsIG1lc3NhZ2UpCi0gICAgewotICAgICAgICB0aGlzLmFk
ZE1lc3NhZ2UoaWQsIG1lc3NhZ2UpOwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl91bmZpbmlzaGVk
SWRzW2lkXTsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLl91bmZpbmlzaGVkSWRzKS5s
ZW5ndGgpCi0gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdwcm9jZXNzaW5nJyk7Ci0g
ICAgfSwKLSAgICBuZXdJZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBpZCA9ICdzdGF0dXMt
Y29udGVudC0nICsgKyt0aGlzLl9jdXJyZW50SWQ7Ci0gICAgICAgIHRoaXMuX3VuZmluaXNoZWRJ
ZHNbaWRdID0gMTsKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLX0pOwotCi19KSgpOwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY4NzMx
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzCShub25leGlzdGVu
dCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9k
dWxlKCJ1aSIpOwotCi12YXIga0V4YW1wbGVSZXN1bHRzQnlUZXN0ID0gewotICAgICJzY3JvbGxi
YXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAg
ICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0UiLAot
ICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfSwKLSAgICAgICAgIk1vY2sg
TGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0gICAgICAgICAgICAi
YWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAidXNlcnNjcmlwdHMvYW5v
dGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAg
ICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAg
ICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoInVpLm9uZWJhciIsIDMsIGZ1bmN0aW9uKCkgewotICAg
IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCkgewotICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFz
aCA9ICcnOwotICAgIH0KLQotICAgIG9uZWJhciA9IG5ldyB1aS5vbmViYXIoKTsKLSAgICBvbmVi
YXIuYXR0YWNoKCk7Ci0gICAgZXF1YWwob25lYmFyLmlubmVySFRNTCwKLSAgICAgICAgJzxkaXY+
PHNlbGVjdCBpZD0icGxhdGZvcm0tcGlja2VyIj48b3B0aW9uPkFwcGxlPC9vcHRpb24+PG9wdGlv
bj5DaHJvbWl1bTwvb3B0aW9uPjxvcHRpb24+R1RLPC9vcHRpb24+PG9wdGlvbj5RdDwvb3B0aW9u
Pjwvc2VsZWN0PjwvZGl2PicgKwotICAgICAgICAnPHVsIGNsYXNzPSJ1aS10YWJzLW5hdiB1aS1o
ZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVy
LWFsbCI+JyArCi0gICAgICAgICAgICAnPGxpIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNv
cm5lci10b3AgdWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiPjxhIGhyZWY9IiN1bmV4
cGVjdGVkIj5VbmV4cGVjdGVkIEZhaWx1cmVzPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAnPGxp
IGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiPjxhIGhyZWY9IiNleHBlY3Rl
ZCI+RXhwZWN0ZWQgRmFpbHVyZXM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8bGkgY2xhc3M9
InVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCB1aS1zdGF0ZS1kaXNhYmxlZCI+PGEgaHJl
Zj0iI3Jlc3VsdHMiPlJlc3VsdHM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8bGkgY2xhc3M9
InVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCI+PGEgaHJlZj0iI3BlcmYiPnBlcmY8L2E+
PC9saT4nICsKLSAgICAgICAgJzwvdWw+JyArCi0gICAgICAgICc8ZGl2IGlkPSJ1bmV4cGVjdGVk
IiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9t
Ij48L2Rpdj4nICsKLSAgICAgICAgJzxkaXYgaWQ9ImV4cGVjdGVkIiBjbGFzcz0idWktdGFicy1w
YW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+PC9k
aXY+JyArCi0gICAgICAgICc8ZGl2IGlkPSJyZXN1bHRzIiBjbGFzcz0idWktdGFicy1wYW5lbCB1
aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+PC9kaXY+JyAr
Ci0gICAgICAgICc8ZGl2IGlkPSJwZXJmIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQt
Y29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+PC9kaXY+Jyk7Ci0KLSAgICBv
bmViYXIuc2VsZWN0KCdleHBlY3RlZCcpOwotICAgIGVxdWFsKHdpbmRvdy5sb2NhdGlvbi5oYXNo
LCAnI2V4cGVjdGVkJyk7Ci0gICAgb25lYmFyLnNlbGVjdCgndW5leHBlY3RlZCcpOwotICAgIGVx
dWFsKHdpbmRvdy5sb2NhdGlvbi5oYXNoLCAnI3VuZXhwZWN0ZWQnKTsKLQotICAgICQob25lYmFy
KS5kZXRhY2goKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRzLlJlc3VsdHNHcmlkIiwgMSwgZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpCi0gICAg
Z3JpZC5hZGRSZXN1bHRzKFsKLSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zvby1iYXItZGlmZi50eHQnLAotICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29t
L2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3RlZC5wbmcnLAotICAgICAgICAnaHR0
cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1hY3R1YWwucG5nJywK
LSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXIt
ZGlmZi5wbmcnLAotICAgIF0pOwotICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1MLAotICAgICAgICAn
PHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAgICAgICAgICAgICc8dGhlYWQ+JyArCi0g
ICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5FeHBlY3Rl
ZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90aD4nICsKLSAgICAg
ICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKLSAgICAgICAgICAgICAgICAnPC90cj4n
ICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAgICAgICAgICAgJzx0Ym9keT4nICsKLSAg
ICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJl
eHBlY3RlZCByZXN1bHQtY29udGFpbmVyIj48aW1nIGNsYXNzPSJpbWFnZS1yZXN1bHQiIHNyYz0i
aHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3RlZC5w
bmciPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9ImFjdHVhbCByZXN1
bHQtY29udGFpbmVyIj48aW1nIGNsYXNzPSJpbWFnZS1yZXN1bHQiIHNyYz0iaHR0cDovL2V4YW1w
bGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1hY3R1YWwucG5nIj48L3RkPicgKwot
ICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJkaWZmIHJlc3VsdC1jb250YWluZXIiPjxp
bWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0LXRl
c3QtcmVzdWx0cy9mb28tYmFyLWRpZmYucG5nIj48L3RkPicgKwotICAgICAgICAgICAgICAgICc8
L3RyPicgKwotICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAgICc8L3RhYmxlPicgKwot
ICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAgICAgICAgICAgICc8dGhl
YWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0
aD5FeHBlY3RlZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90aD4n
ICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKLSAgICAgICAgICAgICAg
ICAnPC90cj4nICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAgICAgICAgICAgJzx0Ym9k
eT4nICsKLSAgICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRk
IGNsYXNzPSJleHBlY3RlZCByZXN1bHQtY29udGFpbmVyIj48L3RkPicgKwotICAgICAgICAgICAg
ICAgICAgICAnPHRkIGNsYXNzPSJhY3R1YWwgcmVzdWx0LWNvbnRhaW5lciI+PC90ZD4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iZGlmZiByZXN1bHQtY29udGFpbmVyIj48aWZy
YW1lIGNsYXNzPSJ0ZXh0LXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0LXRl
c3QtcmVzdWx0cy9mb28tYmFyLWRpZmYudHh0Ij48L2lmcmFtZT48L3RkPicgKwotICAgICAgICAg
ICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAgICc8L3Rh
YmxlPicpOwotfSk7Ci0KLXRlc3QoInJlc3VsdHMuUmVzdWx0c0dyaWQgKGNyYXNobG9nKSIsIDEs
IGZ1bmN0aW9uKCkgewotICAgIHZhciBncmlkID0gbmV3IHVpLnJlc3VsdHMuUmVzdWx0c0dyaWQo
KQotICAgIGdyaWQuYWRkUmVzdWx0cyhbJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1y
ZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCddKTsKLSAgICBlcXVhbChncmlkLmlubmVySFRN
TCwgJzxpZnJhbWUgY2xhc3M9InRleHQtcmVzdWx0IiBzcmM9Imh0dHA6Ly9leGFtcGxlLmNvbS9s
YXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCI+PC9pZnJhbWU+Jyk7Ci19
KTsKLQotdGVzdCgicmVzdWx0cy5SZXN1bHRzR3JpZCAoZW1wdHkpIiwgMSwgZnVuY3Rpb24oKSB7
Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpCi0gICAgZ3JpZC5h
ZGRSZXN1bHRzKFtdKTsKLSAgICBlcXVhbChncmlkLmlubmVySFRNTCwgJ05vIHJlc3VsdHMgdG8g
ZGlzcGxheS4nKTsKLX0pOwotCi10ZXN0KCJ0aW1lIiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFy
IHRpbWUgPSBuZXcgdWkuUmVsYXRpdmVUaW1lKCk7Ci0gICAgZXF1YWwodGltZS50YWdOYW1lLCAn
VElNRScpOwotICAgIGVxdWFsKHRpbWUuY2xhc3NOYW1lLCAncmVsYXRpdmUnKTsKLSAgICBkZWVw
RXF1YWwoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGltZS5fX3Byb3RvX18pLnNvcnQoKSwg
WwotICAgICAgICAnZGF0ZScsCi0gICAgICAgICdpbml0JywKLSAgICAgICAgJ3NldERhdGUnLAot
ICAgICAgICAndXBkYXRlJywKLSAgICBdKTsKLSAgICBlcXVhbCh0aW1lLm91dGVySFRNTCwgJzx0
aW1lIGNsYXNzPSJyZWxhdGl2ZSI+PC90aW1lPicpOwotICAgIHZhciB0ZW5NaW51dGVzQWdvID0g
bmV3IERhdGUoKTsKLSAgICB0ZW5NaW51dGVzQWdvLnNldE1pbnV0ZXModGVuTWludXRlc0Fnby5n
ZXRNaW51dGVzKCkgLSAxMCk7Ci0gICAgdGltZS5zZXREYXRlKHRlbk1pbnV0ZXNBZ28pOwotICAg
IGVxdWFsKHRpbWUub3V0ZXJIVE1MLCAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj4xMCBtaW51dGVz
IGFnbzwvdGltZT4nKTsKLSAgICBlcXVhbCh0aW1lLmRhdGUoKS5nZXRUaW1lKCksIHRlbk1pbnV0
ZXNBZ28uZ2V0VGltZSgpKTsKLX0pOwotCi10ZXN0KCJTdGF0dXNBcmVhIiwgMywgZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIHN0YXR1c0FyZWEgPSBuZXcgdWkuU3RhdHVzQXJlYSgpOwotICAgIHZhciBp
ZCA9IHN0YXR1c0FyZWEubmV3SWQoKTsKLSAgICBzdGF0dXNBcmVhLmFkZE1lc3NhZ2UoaWQsICdG
aXJzdCBNZXNzYWdlJyk7Ci0gICAgc3RhdHVzQXJlYS5hZGRNZXNzYWdlKGlkLCAnU2Vjb25kIE1l
c3NhZ2UnKTsKLSAgICBlcXVhbChzdGF0dXNBcmVhLm91dGVySFRNTCwKLSAgICAgICAgJzxkaXYg
Y2xhc3M9InN0YXR1cyBwcm9jZXNzaW5nIiBzdHlsZT0idmlzaWJpbGl0eTogdmlzaWJsZTsgIj4n
ICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPjxsaT48YnV0dG9uIGNsYXNzPSJh
Y3Rpb24iPkNsb3NlPC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgJzxwcm9ncmVz
cyBjbGFzcz0icHJvY2Vzcy10ZXh0Ij5Qcm9jZXNzaW5nLi4uPC9wcm9ncmVzcz4nICsKLSAgICAg
ICAgICAgICc8ZGl2IGlkPSJzdGF0dXMtY29udGVudC0xIiBjbGFzcz0ic3RhdHVzLWNvbnRlbnQi
PicgKwotICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNzYWdl
PC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3NhZ2UiPlNlY29uZCBN
ZXNzYWdlPC9kaXY+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8L2Rpdj4n
KTsKLQotICAgIHZhciBzZWNvbmRTdGF0dXNBcmVhID0gbmV3IHVpLlN0YXR1c0FyZWEoKTsKLSAg
ICB2YXIgc2Vjb25kSWQgPSBzZWNvbmRTdGF0dXNBcmVhLm5ld0lkKCk7Ci0gICAgc2Vjb25kU3Rh
dHVzQXJlYS5hZGRNZXNzYWdlKHNlY29uZElkLCAnRmlyc3QgTWVzc2FnZSBzZWNvbmQgaWQnKTsK
LQotICAgIGVxdWFsKHN0YXR1c0FyZWEub3V0ZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0i
c3RhdHVzIHByb2Nlc3NpbmciIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyAiPicgKwotICAg
ICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiI+
Q2xvc2U8L2J1dHRvbj48L2xpPjwvdWw+JyArCi0gICAgICAgICAgICAnPHByb2dyZXNzIGNsYXNz
PSJwcm9jZXNzLXRleHQiPlByb2Nlc3NpbmcuLi48L3Byb2dyZXNzPicgKwotICAgICAgICAgICAg
JzxkaXYgaWQ9InN0YXR1cy1jb250ZW50LTEiIGNsYXNzPSJzdGF0dXMtY29udGVudCI+JyArCi0g
ICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3NhZ2UiPkZpcnN0IE1lc3NhZ2U8L2Rpdj4n
ICsKLSAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ibWVzc2FnZSI+U2Vjb25kIE1lc3NhZ2U8
L2Rpdj4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJz
dGF0dXMtY29udGVudC0yIiBjbGFzcz0ic3RhdHVzLWNvbnRlbnQiPicgKwotICAgICAgICAgICAg
ICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNzYWdlIHNlY29uZCBpZDwvZGl2Picg
KwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICBzdGF0
dXNBcmVhLmFkZEZpbmFsTWVzc2FnZShpZCwgJ0ZpbmFsIE1lc3NhZ2UgMScpOwotICAgIHN0YXR1
c0FyZWEuYWRkRmluYWxNZXNzYWdlKHNlY29uZElkLCAnRmluYWwgTWVzc2FnZSAyJyk7Ci0KLSAg
ICBlcXVhbChzdGF0dXNBcmVhLm91dGVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xhc3M9InN0YXR1
cyIgc3R5bGU9InZpc2liaWxpdHk6IHZpc2libGU7ICI+JyArCi0gICAgICAgICAgICAnPHVsIGNs
YXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIj5DbG9zZTwvYnV0dG9uPjwv
bGk+PC91bD4nICsKLSAgICAgICAgICAgICc8cHJvZ3Jlc3MgY2xhc3M9InByb2Nlc3MtdGV4dCI+
UHJvY2Vzc2luZy4uLjwvcHJvZ3Jlc3M+JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0ic3RhdHVz
LWNvbnRlbnQtMSIgY2xhc3M9InN0YXR1cy1jb250ZW50Ij4nICsKLSAgICAgICAgICAgICAgICAn
PGRpdiBjbGFzcz0ibWVzc2FnZSI+Rmlyc3QgTWVzc2FnZTwvZGl2PicgKwotICAgICAgICAgICAg
ICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5TZWNvbmQgTWVzc2FnZTwvZGl2PicgKwotICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaW5hbCBNZXNzYWdlIDE8L2Rpdj4nICsK
LSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJzdGF0dXMtY29u
dGVudC0yIiBjbGFzcz0ic3RhdHVzLWNvbnRlbnQiPicgKwotICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNzYWdlIHNlY29uZCBpZDwvZGl2PicgKwotICAgICAg
ICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaW5hbCBNZXNzYWdlIDI8L2Rpdj4nICsK
LSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgc3RhdHVz
QXJlYS5jbG9zZSgpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVz
L1Rlc3RGYWlsdXJlcy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9U
ZXN0RmFpbHVyZXMuY3NzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5
bGVzL1Rlc3RGYWlsdXJlcy5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTkgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLWFzaWRlIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAzcHg7
Ci0gICAgcmlnaHQ6IDVweDsKLSAgICBjb2xvcjogIzg4ODsKLSAgICBmb250LXNpemU6IDAuOWVt
OwotfQotCi1jb2RlIHsKLSAgICBmb250LXNpemU6IDAuOWVtOwotfQotCi1vbCB7Ci0gICAgbGlz
dC1zdHlsZS10eXBlOiBub25lOwotfQotCi1kdCB7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgZm9u
dC13ZWlnaHQ6IGJvbGQ7Ci0gICAgbWFyZ2luLXJpZ2h0OiAzcHg7Ci19Ci0KLWR0OjphZnRlciB7
Ci0gICAgY29udGVudDogJzonOwotfQotCi0jZmFpbHVyZS1oaXN0b3J5LCAjcG9zc2libHktZmxh
a3ktdGVzdHMgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwIDAgMCAxNXB4OwotfQot
Ci0jZmFpbHVyZS1oaXN0b3J5ID4gbGkgewotICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Ci0gICAg
cGFkZGluZzogMTBweDsKLX0KLQotI3Bvc3NpYmx5LWZsYWt5LXRlc3RzID4gbGkgewotICAgIHBh
ZGRpbmc6IDFweCAwcHg7Ci19Ci0KLSNmYWlsdXJlLWhpc3RvcnkgPiBsaSwgI3Bvc3NpYmx5LWZs
YWt5LXRlc3RzID4gbGkgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7Ci0gICAgcGFk
ZGluZy1sZWZ0OiA1MHB4OwotfQotCi0jcG9zc2libHktZmxha3ktdGVzdHMgPiBsaSA+IDpmaXJz
dC1jaGlsZCB7Ci0gICAgbWFyZ2luLWxlZnQ6IC01MHB4OwotfQotCi0uZmxha2luZXNzLWV4YW1w
bGVzLWxpc3QgewotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLS50ZXN0LWxpc3QgewotICAgIG1hcmdp
bjogMCAwIDAgLTQwcHg7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotLmluZm8gewotICAgIGZvbnQt
c3R5bGU6IGl0YWxpYzsKLX0KLQotLmV4aXN0aW5nLWFuZC1uZXctYnVncyB7Ci0gICAgbWFyZ2lu
LWJvdHRvbTogMDsKLX0KLQotLmV4aXN0aW5nLWJ1Z3MtbGlzdCwgLnN1c3BlY3QtcmV2aXNpb25z
LWxpc3QsIC5mbGFraW5lc3MtZXhhbXBsZXMtbGlzdCB7Ci0gICAgZm9udC1zaXplOiBzbWFsbGVy
OwotfQotCi0ubmV3LWJ1Zy1mb3JtIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uZGlzY2xv
c3VyZS10cmlhbmdsZSB7Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9y
bSAwLjFzOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgY3Vyc29yOiBkZWZh
dWx0OwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICBwYWRkaW5nOiAwcHggM3B4Owot
fQotCi0uZXhwYW5kZWQgPiAuZGlzY2xvc3VyZS10cmlhbmdsZSB7Ci0gICAgLXdlYmtpdC10cmFu
c2Zvcm06IHJvdGF0ZVooOTBkZWcpOwotfQotCi0uZXhwYW5kYWJsZSB7Ci0gICAgaGVpZ2h0OiAw
cHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotLmV4cGFuZGVkID4gLmV4cGFuZGFibGUg
ewotICAgIGhlaWdodDogYXV0bzsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvY29t
bW9uLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL2NvbW1vbi5jc3MJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvY29tbW9uLmNzcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWh0bWwgewotICAg
IG92ZXJmbG93LXk6IHNjcm9sbDsKLX0KLQotYm9keSB7Ci0gICAgZm9udC1mYW1pbHk6ICdIZWx2
ZXRpY2EnOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLSAgICBtYXJnaW46IDBweDsKLX0KLQotYSB7
Ci0gICAgY29sb3I6ICMzMzM7Ci19Ci0KLS51aS13aWRnZXQtY29udGVudCB7Ci0gICAgZm9udC1m
YW1pbHk6ICdIZWx2ZXRpY2EnOwotfQotCi0udWktd2lkZ2V0IGJ1dHRvbiwgYnV0dG9uIHsKLSAg
ICBmb250LWZhbWlseTogJ0hlbHZldGljYSc7Ci0gICAgYm9yZGVyLXJhZGl1czogMnB4OwotICAg
IGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1LCNm
MWYxZjEpOwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKLSAgICBi
b3JkZXItcmFkaXVzOiAycHg7Ci0gICAgY29sb3I6ICM2NjY7Ci0gICAgY3Vyc29yOiBwb2ludGVy
OwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICBoZWln
aHQ6IDI5cHg7Ci0gICAgbGluZS1oZWlnaHQ6IDI3cHg7Ci0gICAgbWluLXdpZHRoOiA1NHB4Owot
ICAgIHBhZGRpbmc6IDAgOHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcgotfQotCi1idXR0b24u
bmV4dCB7Ci0gICAgbWFyZ2luLWxlZnQ6IDBweDsKLX0KLQotYnV0dG9uLnByZXZpb3VzIHsKLSAg
ICBtYXJnaW4tcmlnaHQ6IDBweDsKLX0KLQotYnV0dG9uW2Rpc2FibGVkXSB7Ci0gICAgdmlzaWJp
bGl0eTogaGlkZGVuOwotfQotCi1idXR0b246aG92ZXIgewotICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwotICAgIC13ZWJr
aXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjZjhmOGY4OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVudCh0
b3AsI2Y4ZjhmOCwjZjFmMWYxKTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjYzZjNmM2OwotICAg
IGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7Ci0gICAgY29sb3I6ICMzMzMK
LX0KLQotYnV0dG9uOmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjNGQ5MGZlOwotICAg
IG91dGxpbmU6IG5vbmUKLX0KLQotYnV0dG9uLmRlZmF1bHQgewotICAgIGJvcmRlcjogMXB4IHNv
bGlkICMzMDc5RUQ7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtaW1hZ2U6IC13
ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwotfQotCi1idXR0b24u
ZGVmYXVsdDpob3ZlciB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzJmNWJiNzsKLSAgICBjb2xv
cjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogIzM1N2FlODsKLSAgICBiYWNrZ3JvdW5k
LWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxmcm9t
KCM0ZDkwZmUpLHRvKCMzNTdhZTgpKTsKLX0KLQotLmNsZWFyIHsKLSAgICBjbGVhcjogYm90aDsK
LX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvZmFpbHVyZXMuY3NzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvZmFpbHVyZXMuY3NzCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL2ZhaWx1cmVzLmNzcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLmZhaWx1cmVzIC5CVUlMRElORyB7Ci0gICAg
b3BhY2l0eTogMC41OwotfQotCi1hLmZhaWxpbmctYnVpbGRlciB7Ci0gICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwotICAgIGJvcmRlcjogMXB4IHNvbGlkIEdyYXk7Ci0gICAgbWFyZ2luOiAwIDAg
MnB4IDA7Ci0gICAgcGFkZGluZzogMXB4OwotICAgIGNvbG9yOiBCbGFjazsKLSAgICBmb250LXNp
emU6IDExcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0gICAgYS5mYWlsaW5n
LWJ1aWxkZXI+c3Bhbi52ZXJzaW9uIHsKLSAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2Fz
ZTsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKLSAgICAgICAgY29sb3I6IFdoaXRl
OwotICAgICAgICBwYWRkaW5nOiAwIDJweDsKLSAgICB9Ci0KLSAgICBhLmZhaWxpbmctYnVpbGRl
cj5zcGFuLmFyY2hpdGVjdHVyZSB7Ci0gICAgICAgIHBhZGRpbmc6IDAgMnB4OwotICAgIH0KLQot
ICAgIC5lZmZlY3RzIGEuZmFpbGluZy1idWlsZGVyPnNwYW4uYXJjaGl0ZWN0dXJlIHsKLSAgICAg
ICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKLSAgICAgICAgY29sb3I6IFdoaXRlOwotICAgIH0K
LQotICAgIGEuZmFpbGluZy1idWlsZGVyPnNwYW4uZ3JhcGhpY3MgewotICAgICAgICBwYWRkaW5n
OiAwIDJweDsKLSAgICB9Ci0KLQotdWwuZmFpbHVyZXMgewotICAgIHBhZGRpbmc6IDBweDsKLX0K
LQotICAgIHVsLmZhaWx1cmVzPmxpIHsKLSAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7Ci0g
ICAgfQotCi0gICAgdWwuZmFpbHVyZXM+bGkgbGFiZWwgewotICAgICAgICBtYXJnaW4tbGVmdDog
MTBweDsKLSAgICB9Ci0KLSAgICAgICAgdWwuZmFpbHVyZXM+bGkgdWwuYWN0aW9ucyB7Ci0gICAg
ICAgICAgICBwYWRkaW5nOiAwcHg7Ci0gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci0g
ICAgICAgIH0KLQotICAgICAgICB1bC5mYWlsdXJlcz5saTpob3ZlciB1bC5hY3Rpb25zIHsKLSAg
ICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7Ci0gICAgICAgIH0KSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zdHlsZXMvbWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0
eWxlcy9tYWluLmNzcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxl
cy9tYWluLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LWJvZHkgewotICAgIGZvbnQtZmFtaWx5OiBUYWhvbWEsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1z
aXplOiAxMXB4OwotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1hIHsKLSAg
ICBjb2xvcjogQmxhY2s7Ci19Ci0KLXRhYmxlIHsKLSAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkOwot
ICAgIHdpZHRoOiAxMDAlOwotICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0KLXRk
LCB0aCB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwot
ICAgIC8qIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjNmM2YzY7ICovCi19Ci0KLXRkOmxhc3Qt
b2YtdHlwZSwgdGg6bGFzdC1vZi10eXBlIHsKLSAgICAvKiBib3JkZXItcmlnaHQ6IDBweDsgKi8K
LX0KLQotdGggewotICAgIC8qIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzZjNmM2OyAqLwot
fQotCi1idXR0b24gewotICAgIGJvcmRlci1yYWRpdXM6IDJweDsKLSAgICBiYWNrZ3JvdW5kLWlt
YWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTsKLSAgICBi
b3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Ci0gICAgYm9yZGVyLXJhZGl1czog
MnB4OwotICAgIGNvbG9yOiAjNjY2OwotICAgIGN1cnNvcjogcG9pbnRlcjsKLSAgICBmb250LXNp
emU6IDExcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgaGVpZ2h0OiAyOXB4OwotICAg
IGxpbmUtaGVpZ2h0OiAyN3B4OwotICAgIG1hcmdpbjogMTFweCA2cHg7Ci0gICAgbWluLXdpZHRo
OiA1NHB4OwotICAgIHBhZGRpbmc6IDAgOHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcgotfQot
Ci1idXR0b24ubmV4dCB7Ci0gICAgbWFyZ2luLWxlZnQ6IDBweDsKLX0KLQotYnV0dG9uLnByZXZp
b3VzIHsKLSAgICBtYXJnaW4tcmlnaHQ6IDBweDsKLX0KLQotYnV0dG9uW2Rpc2FibGVkXSB7Ci0g
ICAgdmlzaWJpbGl0eTogaGlkZGVuOwotfQotCi1idXR0b246aG92ZXIgewotICAgIGJhY2tncm91
bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwot
ICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1n
cmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjYzZj
NmM2OwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7Ci0gICAgY29s
b3I6ICMzMzMKLX0KLQotYnV0dG9uOmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjNGQ5
MGZlOwotICAgIG91dGxpbmU6IG5vbmUKLX0KLQotYnV0dG9uLmRlZmF1bHQgewotICAgIGJvcmRl
cjogMXB4IHNvbGlkICMzMDc5RUQ7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQt
aW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwotfQot
Ci1idXR0b24uZGVmYXVsdDpob3ZlciB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzJmNWJiNzsK
LSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogIzM1N2FlODsKLSAgICBi
YWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJv
dHRvbSxmcm9tKCM0ZDkwZmUpLHRvKCMzNTdhZTgpKTsKLX0KLQotLmNsZWFyIHsKLSAgICBjbGVh
cjogYm90aDsKLX0KLQotLyoqKiBidXR0ZXJiYXIgKioqLwotCi0uYnV0dGVyYmFyIHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwotICAgIHBhZGRpbmc6IDVweDsKLSAgICBwb3NpdGlv
bjogZml4ZWQ7Ci0gICAgdG9wOiAwcHg7Ci0gICAgcmlnaHQ6IDBweDsKLX0KLQotLmJ1dHRlcmJh
ciAuaGlkZSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDIwcHg7Ci19Ci0KLS8qKiogaW5mb2JhciAqKiov
Ci0KLS5pbmZvYmFyIHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIGJhY2tncm91bmQtY29sb3I6
IENvcm5zaWxrOwotICAgIGJvcmRlcjogNXB4IHNvbGlkIFRvbWF0bzsKLSAgICBwYWRkaW5nOiAx
MHB4OwotICAgIG1hcmdpbjogNXB4IGF1dG87Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAgIHdp
ZHRoOiAxMDAlOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLmluZm9iYXIgLnN0YXR1
cyBhIHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotfQotCi0uaW5mb2JhciAuc3RhdHVzIHVs
IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBub25l
OwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICBwYWRkaW5nOiAwIDAgMCAxMHB4Owot
fQotCi0uaW5mb2JhciAuc3RhdHVzIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0g
ICAgbWFyZ2luOiAwcHggNXB4OwotfQotCi0vKioqIHJlY2VudC1oaXN0b3J5ICoqKi8KLQotLnJl
Y2VudC1oaXN0b3J5IHsKLX0KLQotLnJlY2VudC1oaXN0b3J5IC5idWlsZGVyIHsKLSAgICB3aWR0
aDogNXB4OwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmNWY1ZjU7Ci19Ci0KLS5yZWNl
bnQtaGlzdG9yeSAuYnVpbHQgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNjNmM2YzY7Ci19Ci0K
LS5yZWNlbnQtaGlzdG9yeSB0ZFtkYXRhLWZhaWx1cmUtdHlwZXNdIHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBCbGFjazsKLX0KLQotLmNoYW5nZWxvZyAucmVzdWx0IHsKLSAgICBwYWRkaW5nOiA0
cHggMHB4OwotICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB3aGl0ZTsKLSAgICBib3JkZXItYm90
dG9tOiAycHggc29saWQgd2hpdGU7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnRlc3QgewotICAgIHBhZGRp
bmctbGVmdDogM3B4OwotfQotCi0uY2hhbmdlbG9nIC5lbnRyeSB7Ci0gICAgcGFkZGluZzogNHB4
IDBweCA0cHggM3B4OwotfQotCi0uY2hhbmdlbG9nIC5yZXZlcnRlZCB7Ci0gICAgdGV4dC1kZWNv
cmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnBvc3NpYmxlLXJlZ3Jlc3Np
b24gewotICAgIGJhY2tncm91bmQtY29sb3I6IFBhcGF5YVdoaXA7Ci19Ci0KLS5jaGFuZ2Vsb2cg
LmRldGFpbHMsIC5jaGFuZ2Vsb2cgLmRldGFpbHMgYSB7Ci0gICAgY29sb3I6ICM1NTU7Ci19Ci0K
LS5jaGFuZ2Vsb2cgLnN1bW1hcnkgewotICAgIGNvbG9yOiBCbGFjazsKLX0KLQotLmNoYW5nZWxv
ZyAuYXV0aG9yIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLS50ZXN0LW5hbWUuSU1B
R0VcK1RFWFQ6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnSU1BR0UrVEVYVCc7Ci0gICAgZm9udC13
ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6IHdo
aXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IEluZGlnbzsKLSAgICBmb250LXNpemU6IDEwcHg7
Ci0gICAgcGFkZGluZzogMXB4IDJweDsKLSAgICBtYXJnaW46IDAgMCAwIDNweDsKLSAgICBib3Jk
ZXItcmFkaXVzOiA0cHg7Ci19Ci0KLS50ZXN0LW5hbWUuSU1BR0U6OmFmdGVyIHsKLSAgICBjb250
ZW50OiAnSU1BR0UnOwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNvcmF0
aW9uOiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBNaWRu
aWdodEJsdWU7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0g
ICAgbWFyZ2luOiAwIDAgMCAzcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0udGVz
dC1uYW1lLlRJTUVPVVQ6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnVElNRU9VVCc7Ci0gICAgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6
IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IERhcmtHb2xkZW5Sb2Q7Ci0gICAgZm9udC1z
aXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAzcHg7
Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0udGVzdC1uYW1lLlRFWFQ6OmFmdGVyIHsK
LSAgICBjb250ZW50OiAnVEVYVCc7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0
LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29s
b3I6IERvZGdlckJsdWU7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAy
cHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAzcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQot
Ci0udGVzdC1uYW1lLkNSQVNIOjphZnRlciB7Ci0gICAgY29udGVudDogJ0NSQVNIJzsKLSAgICBm
b250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xv
cjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogVG9tYXRvOwotICAgIGZvbnQtc2l6ZTog
MTBweDsKLSAgICBwYWRkaW5nOiAxcHggMnB4OwotICAgIG1hcmdpbjogMCAwIDAgM3B4OwotICAg
IGJvcmRlci1yYWRpdXM6IDRweDsKLX0KLQotLyoqKiByZXN1bHRzLXZpZXcgKioqLwotCi0vKiBG
SVhNRTogUmVtb3ZlIHRoaXMgb25jZSBnYXJkZW4tby1tYXRpYyBzd2l0Y2hlcyB0byB0aGUgbmV3
IHJlc3VsdHMgdmlldy4gKi8KLS5vbGQtcmVzdWx0cy12aWV3IHsKLSAgICBkaXNwbGF5OiBub25l
OwotICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICBsZWZ0OiAwcHg7Ci0gICAgcmlnaHQ6IDBweDsK
LSAgICB0b3A6IDI1JTsKLSAgICBib3R0b206IDBweDsKLX0KLQotLnJlc3VsdHMtdmlldyB7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKLX0KLQotLnJlc3VsdHMtdmlldyAudG9vbGJh
ciB7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjNmM2YzY7Ci0gICAgYm9yZGVyLWJvdHRv
bTogMXB4IHNvbGlkICNjNmM2YzY7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgLnNlbGVj
dG9yIHsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAg
aGVpZ2h0OiAyOXB4OwotICAgIGxpbmUtaGVpZ2h0OiAyN3B4OwotICAgIG1hcmdpbjogMTFweCA2
cHg7Ci0gICAgcGFkZGluZzogMCA4cHg7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnRlc3Qtc2VsZWN0
b3IgewotICAgIHdpZHRoOiA0MDBweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDZweDsKLX0KLQotLnJl
c3VsdHMtdmlldyAudG9vbGJhciAuYWN0aW9ucyB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotfQotCi0u
cmVzdWx0cy1kZXRhaWwgdGQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwotfQotCi0u
dGV4dC1yZXN1bHQgewotICAgIGJvcmRlcjogbm9uZTsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBo
ZWlnaHQ6IDQwMHB4OyAvKiBGSVhNRTogSG93IGRvIHdlIGdldCBhIHJlYXNvbmFibGUgaGVpZ2h0
IGhlcmU/ICovCi19Ci0KLS5pbWFnZS1yZXN1bHQgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhl
aWdodDogYXV0bzsKLX0KLQotLyoqKiBwYXJ0eXRpbWUgKioqLwotCi0ucGFydHl0aW1lIHsKLSAg
ICBkaXNwbGF5OiBub25lOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zdHlsZXMvbm90aWZpY2F0aW9ucy5jc3MKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3N0eWxlcy9ub3RpZmljYXRpb25zLmNzcwkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9ub3RpZmljYXRpb25zLmNzcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDIzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qIEZJWE1FOiBUaGlzIHNob3VsZCByZWFs
bHkgYmUgaW4gYWN0aW9ucy5jc3MuICovCi11bC5hY3Rpb25zPmxpIHsKLSAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7Ci19Ci0KLW9sLm5vdGlmaWNhdGlvbnMgewotICAgIGxpc3Qtc3R5bGU6IG5v
bmU7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotb2wubm90aWZpY2F0aW9ucyB1bCB7Ci0gICAgbGlz
dC1zdHlsZTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1vbC5ub3RpZmljYXRpb25zPmxp
IHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBwYWRk
aW5nOiAxMHB4OwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgYm9yZGVyLXRvcDog
MXB4IHNvbGlkIEdyYXk7Ci19Ci0KLW9sLm5vdGlmaWNhdGlvbnMgZGl2LmhvdyB7Ci0gICAgd2lk
dGg6IDM1MHB4OwotfQotCi1vbC5ub3RpZmljYXRpb25zIHRpbWUgewotICAgIGRpc3BsYXk6IGJs
b2NrOwotICAgIGNvbG9yOiAjODg4OwotICAgIHBhZGRpbmc6IDAgMCAyMHB4IDA7Ci19Ci0KLW9s
Lm5vdGlmaWNhdGlvbnMgZGl2LndoYXQgewotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94OwotICAg
IC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Ci0gICAgcGFkZGluZzogMCAwIDAgMTBweDsK
LSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saSBk
aXYud2hhdCB1bC5lZmZlY3RzPmxpLmJ1aWxkZXIgewotICAgICAgICBkaXNwbGF5OiBpbmxpbmU7
Ci0gICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwotICAgIH0KLQotb2wubm90aWZpY2F0aW9ucyB1
bC5jYXVzZXM+bGksIG9sLm5vdGlmaWNhdGlvbnMgZGl2LnByb2JsZW0gewotICAgIGRpc3BsYXk6
IC13ZWJraXQtYm94OwotfQotCi1vbC5ub3RpZmljYXRpb25zIHVsLmNhdXNlcyBkaXYuZGVzY3Jp
cHRpb24sIG9sLm5vdGlmaWNhdGlvbnMgZGl2LnByb2JsZW0gdWwuZWZmZWN0cyB7Ci0gICAgLXdl
YmtpdC1ib3gtZmxleDogMTsKLX0KLQotb2wubm90aWZpY2F0aW9ucz5saSBkaXYucHJvYmxlbSB7
Ci0gICAgcGFkZGluZy1ib3R0b206IDEwcHg7Ci19Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zPmxp
IGRpdi5wcm9ibGVtPnVsLmFjdGlvbnMgewotICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci0g
ICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saTpob3ZlciBkaXYucHJvYmxlbT51bC5hY3Rp
b25zIHsKLSAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKLSAgICB9Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zPmxpIHRhYmxlLmZhaWx1cmVzIHsKLSAgICAgICAgb3BhY2l0eTogMC4yOwotICAg
ICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC41czsKLSAgICB9Ci0KLSAgICBvbC5u
b3RpZmljYXRpb25zPmxpOmhvdmVyIHRhYmxlLmZhaWx1cmVzIHsKLSAgICAgICAgb3BhY2l0eTog
MTsKLSAgICB9Ci0KLW9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPnVsLmFjdGlvbnMg
ewotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+ZGl2LmRlc2NyaXB0
aW9uIHsKLSAgICAgICAgcGFkZGluZzogMCAxMHB4IDVweCAwOwotICAgICAgICBkaXNwbGF5OiAt
d2Via2l0LWJveDsKLSAgICB9Ci0KLSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVz
ZXM+bGk+ZGl2LmRlc2NyaXB0aW9uPmEgewotICAgICAgICAgICAgcGFkZGluZzogNXB4IDEwcHgg
NXB4IDEwcHg7Ci0gICAgICAgICAgICBtYXJnaW46IC01cHggMTBweCAtMnB4IDA7Ci0gICAgICAg
ICAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxv
Y2s7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5s
aTpob3Zlcj5kaXYuZGVzY3JpcHRpb24+YSB7Ci0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjNTU1OwotICAgICAgICAgICAgY29sb3I6IFdoaXRlOwotICAgICAgICB9Ci0KLSAgICAgICAg
b2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk6aG92ZXI+ZGl2LmRlc2NyaXB0aW9uPmE6
OmFmdGVyIHsKLSAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwotICAgICAgICAgICAgd2lkdGg6IDA7
Ci0gICAgICAgICAgICBoZWlnaHQ6IDA7Ci0gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7Ci0g
ICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgICAgICBtYXJnaW4tbGVmdDog
MTBweDsKLSAgICAgICAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCBXaGl0ZTsKLSAgICAgICAg
ICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzU1NTsKLSAgICAgICAgICAgIGJvcmRlci1ib3R0
b206IDVweCBzb2xpZCBXaGl0ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlv
bnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuIHsKLSAgICAgICAgICAgIHBh
ZGRpbmc6IDAgMTBweCAwIDA7Ci0gICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKLSAgICAgICAg
ICAgIGN1cnNvcjogZGVmYXVsdDsKLSAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwot
ICAgICAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICAgICAgfQotCi0gICAgICAgIG9s
Lm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4u
YXV0aG9yIHsKLSAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDVweDsKLSAgICAgICAgICAgIGZv
bnQtc3R5bGU6IGl0YWxpYzsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+
bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4ucmV2aWV3ZXIgewotICAg
ICAgICAgICAgY29sb3I6IEdyYXk7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRp
b25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVzY3JpcHRpb24+c3Bhbj5zcGFuLmJ1Z0lEOjpiZWZv
cmUgewotICAgICAgICAgICAgY29udGVudDogJ2J1ZyAnOwotICAgICAgICAgICAgcGFkZGluZy1s
ZWZ0OiA4cHg7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNh
dXNlcz5saT5kaXYuZGVzY3JpcHRpb24+c3Bhbj5zcGFuLmJ1Z0lEPmEgewotICAgICAgICAgICAg
Y3Vyc29yOiBoYW5kOwotICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87Ci0gICAgICAg
IH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVzY3Jp
cHRpb24+c3Bhbj5zcGFuLnJldmlld2VyOjpiZWZvcmUgewotICAgICAgICAgICAgY29udGVudDog
JyAoJzsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2Vz
PmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4ucmV2aWV3ZXI6OmFmdGVyIHsKLSAgICAgICAg
ICAgIGNvbnRlbnQ6ICcpJzsKLSAgICAgICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saSB1
bC5jYXVzZXM+bGk+dWwuYWN0aW9ucyB7Ci0gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLSAg
ICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saTpob3Zlcj51bC5hY3Rp
b25zIHsKLSAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKLSAgICB9Ci0KLSAgICBvbC5ub3Rp
ZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSBsaSB7Ci0gICAgICAgIHBhZGRpbmc6IDEwcHggMCAw
IDA7Ci0gICAgICAgIGRpc3BsYXk6IGlubGluZTsKLSAgICB9Ci0KLW9sLm5vdGlmaWNhdGlvbnMg
dGFibGUuZmFpbHVyZXMgewotICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci0gICAgdGFi
bGUtbGF5b3V0OiBmaXhlZDsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgd2lkdGg6IDM1MHB4
OwotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0aGVhZCB0ciB0ZDpm
aXJzdC1jaGlsZCB7Ci0gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLSAgICB9Ci0KLSAgICBv
bC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHsKLSAgICAgICAgYm9yZGVy
LXRvcDogMXB4IHNvbGlkICNlZWU7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJs
ZS5mYWlsdXJlcyB0Ym9keSB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgICAgIHdpZHRoOiAyMCU7Ci0g
ICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0Ym9keSB0ZCB7Ci0g
ICAgICAgIHdpZHRoOiA0MCU7Ci0gICAgICAgIHBhZGRpbmc6IDJweDsKLSAgICB9Ci0KLSAgICBv
bC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHsK
LSAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRp
b25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHNwYW4gewotICAgICAg
ICBwYWRkaW5nOiAwIDJweDsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZh
aWx1cmVzIHRib2R5IHRyLlRJTUVPVVQgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIGJh
Y2tncm91bmQtY29sb3I6ICNmZmZjNmM7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0
YWJsZS5mYWlsdXJlcyB0Ym9keSB0ci5URVhUIHRkOmZpcnN0LWNoaWxkIHNwYW4gewotICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTk4MDgwOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNhdGlv
bnMgdGFibGUuZmFpbHVyZXMgdGJvZHkgdHIuQ1JBU0ggdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0g
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMzNDM7Ci0gICAgfQotCi0gICAgb2wubm90aWZp
Y2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0Ym9keSB0ci5BVURJTyB0ZDpmaXJzdC1jaGlsZCBzcGFu
IHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JmZGZmZjsKLSAgICB9Ci0KLSAgICBvbC5u
b3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyLklNQUdFIHRkOmZpcnN0LWNoaWxk
IHNwYW4gewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjlmOwotICAgIH0KLQotICAgIG9s
Lm5vdGlmaWNhdGlvbnMgdGFibGUuZmFpbHVyZXMgdGJvZHkgdHIuSU1BR0VcK1RFWFQgdGQ6Zmly
c3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5NmY7Ci0gICAgfQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9vbmViYXIuY3NzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zdHlsZXMvb25lYmFyLmNzcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3N0eWxlcy9vbmViYXIuY3NzCShub25leGlzdGVudCkKQEAgLTEsNzIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0vKgotICogV2UgbW9zdGx5IHVzZSB0aGUgc3R5bGVzIGZyb20g
alF1ZXJ5IFVJLCBidXQgd2UgY2xlYXIgc29tZSBvZiB0aGVtIHRvCi0gKiBtYWtlIHRoZSBVSSBz
bGlnaHRseSB0aWdodGVyLgotICovCi0KLSNvbmViYXIgewotICAgIGJvcmRlcjogbm9uZTsKLSAg
ICBwYWRkaW5nOiAwcHg7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTAwcHg7Ci19Ci0KLSNvbmViYXIg
LnVpLXdpZGdldC1oZWFkZXIgewotICAgIGJvcmRlci10b3A6IG5vbmU7Ci0gICAgYm9yZGVyLXJp
Z2h0OiBub25lOwotICAgIGJvcmRlci1sZWZ0OiBub25lOwotICAgIGJvcmRlci1yYWRpdXM6IDBw
eDsKLX0KLQotI29uZWJhciAjcGxhdGZvcm0tcGlja2VyIHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0g
ICAgbWFyZ2luLXRvcDogOHB4OwotICAgIG1hcmdpbi1yaWdodDogOHB4OwotICAgIGZvbnQtc2l6
ZTogbGFyZ2VyOwotfQotCi0jdW5leHBlY3RlZCB7Ci0gICAgbWluLWhlaWdodDogNTUwcHg7Ci19
Ci0KLSNvbmViYXIucGFydHl0aW1lICN1bmV4cGVjdGVkIHsKLSAgICBiYWNrZ3JvdW5kOiB1cmwo
Li4vaW1hZ2VzL3BhcnR5dGltZS5naWYpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0OwotfQotCi0j
Y2hyb21pdW0tZ3Rlc3RzIGlmcmFtZSB7Ci0gICAgYm9yZGVyOiAwOwotICAgIGhlaWdodDogMjBw
eDsKLX0KLQotI2Nocm9taXVtLWd0ZXN0cyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAg
IHRvcDogMTBweDsKLSAgICByaWdodDogNXB4OwotfQotCi0jZ3Rlc3QtbGFiZWwgewotICAgIHZl
cnRpY2FsLWFsaWduOiB0b3A7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3BlcmYu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGVyZi5jc3MJKHJldmlz
aW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGVyZi5jc3MJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwZXJmLXZpZXcgewotICAgIGhl
aWdodDogMTAwJTsKLX0KLQotI3BlcmYtdmlldyA+IC50aXRsZS1iYXIgewotICAgIGhlaWdodDog
MmVtOwotfQotCi0jcGVyZi12aWV3ID4gLm5vdGlmaWNhdGlvbnMgewotICAgIG1hcmdpbjogMDsK
LX0KLQotI3BlcmYtdmlldyAuYWN0aW9ucywKLSNwZXJmLXZpZXcgLnBvcC1vdXQgewotICAgIGZs
b2F0OiByaWdodDsKLSAgICBtYXJnaW46IDA7Ci19Ci0KLSNwZXJmLXZpZXcgPiBpZnJhbWUgewot
ICAgIHdpZHRoOiAxMDAlOwotICAgIGJvcmRlcjogMDsKLSAgICAvKiBGSVhNRTogQWRkIHBlcmYt
ZGFzaGJvYXJkLXNpZGUgcG9zdE1lc3NhZ2UgY2FsbHMgc28gdGhlIGlmcmFtZSBjYW4gc2l6ZSB0
byBpdCdzIGNvbnRlbnRzLiAqLwotICAgIGhlaWdodDogLXdlYmtpdC1jYWxjKDEwMCUgLSAyZW0p
OwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
dHlsZXMvcGl4ZWx6b29tZXIuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHls
ZXMvcGl4ZWx6b29tZXIuY3NzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c3R5bGVzL3BpeGVsem9vbWVyLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotLnBpeGVsLXpvb20tY29udGFpbmVyIHsKLSAgICBwb3NpdGlvbjogZml4ZWQ7
Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgd2lkdGg6IDk2JTsKLSAgICBtYXJnaW46
IDEwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAg
ICBkaXNwbGF5OiAtbW96LWJveDsKLSAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBzaWx2ZXI7Ci0gICAgYm9yZGVyLXJhZGl1czogMjBweDsKLSAgICBib3Jk
ZXI6IDFweCBzb2xpZCBncmF5OwotICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAwLCAw
LCAwLjc1KTsKLX0KLQotLnBpeGVsLXpvb20tY29udGFpbmVyID4gKiB7Ci0gICAgLXdlYmtpdC1i
b3gtZmxleDogMTsKLSAgICAtbW96LWJveC1mbGV4OiAxOwotICAgIGJvcmRlcjogMXB4IHNvbGlk
IGJsYWNrOwotICAgIG1hcmdpbjogNHB4OwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogd2hpdGU7Ci19Ci0KLS5waXhlbC16b29tLWNvbnRhaW5lciAuc2NhbGVk
LWltYWdlLWNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG92ZXJmbG93
OiBoaWRkZW47Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiA0MDBweDsKLX0KLQotLnNj
YWxlZC1pbWFnZS1jb250YWluZXIgPiBpbWcgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAg
ICB0b3A6IDA7Ci0gICAgbGVmdDogMDsKLSAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQtb3B0
aW1pemUtY29udHJhc3Q7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3Jlc3VsdHMu
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcmVzdWx0cy5jc3MJKHJl
dmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcmVzdWx0cy5jc3MJKG5v
bmV4aXN0ZW50KQpAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0ubm9uLWFjdGlvbi1i
dXR0b24sIC5yZXN1bHRzLXZpZXcgdWwuYWN0aW9ucywgLnVpLWRpYWxvZyB1bC5hY3Rpb25zIHsK
LSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDVweCAwcHg7
Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0K
LS5ub24tYWN0aW9uLWJ1dHRvbiB7Ci0gICAgcGFkZGluZzogNXB4OwotfQotCi0ucmVzdWx0cy12
aWV3IHVsLmFjdGlvbnMucmViYXNlbGluZS1hY3Rpb24gewotICAgIGZsb2F0OiBub25lOwotICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogNHB4OwotICAgIHRvcDogN3B4OwotICAg
IHBhZGRpbmc6IDA7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgdWwuYWN0aW9ucyBsaSwgLnVpLWRpYWxv
ZyB1bC5hY3Rpb25zIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLS5yZXN1
bHRzLXZpZXcgaDMgdWwuYWN0aW9ucyB7Ci0gICAgcGFkZGluZzogMnB4IDBweDsKLX0KLQotLnJl
c3VsdHMtdmlldyBoMyB1bC5hY3Rpb25zIHsKLSAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19Ci0K
LS5yZXN1bHRzLXZpZXcgaDMudWktc3RhdGUtYWN0aXZlIHVsLmFjdGlvbnMgewotICAgIHZpc2li
aWxpdHk6IHZpc2libGU7Ci19Ci0KLS51aS10YWJzIC51aS10YWJzLXBhbmVsLnJlc3VsdHMtZGV0
YWlsIHsKLSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0KLS5yZXN1bHRzLWdyaWQgdGFibGUgewotICAg
IHRhYmxlLWxheW91dDogZml4ZWQ7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyLWNvbGxh
cHNlOiBjb2xsYXBzZTsKLX0KLQotLnJlc3VsdHMtZ3JpZCB0YWJsZSB0ZCwgLnJlc3VsdHMtdmll
dyB0YWJsZSB0aCB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB2ZXJ0aWNhbC1hbGlnbjog
dG9wOwotfQotCi0ucmVzdWx0cy1ncmlkIHRhYmxlIHRoIHsKLSAgICBwYWRkaW5nOiAzcHg7Ci0g
ICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNEREQ7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNv
bGlkICNEREQ7Ci19Ci0KLS5yZXN1bHRzLWdyaWQgLnRleHQtcmVzdWx0IHsKLSAgICBib3JkZXI6
IG5vbmU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiA0MDBweDsgLyogRklYTUU6IEhv
dyBkbyB3ZSBnZXQgYSByZWFzb25hYmxlIGhlaWdodCBoZXJlPyAqLwotfQotCi0ucmVzdWx0cy1n
cmlkIC5pbWFnZS1yZXN1bHQgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogYXV0bzsK
LX0KLQotLnJlc3VsdHMtdmlldyAudG9wLXBhbmVsIHsKLSAgICBtYXgtaGVpZ2h0OiAyMCU7Ci0g
ICAgb3ZlcmZsb3c6IGF1dG87Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvcmRlcjog
MXB4IHNvbGlkICNFRUU7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnJlc2l6ZS1oYW5kbGUgewotICAg
IGhlaWdodDogNXB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVzZXIt
c2VsZWN0OiBub25lOwotICAgIGxpbmUtaGVpZ2h0OiA1cHg7Ci0gICAgY3Vyc29yOiBucy1yZXNp
emU7Ci0gICAgZm9udC1zaXplOiA1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgcGFk
ZGluZzogMXB4OwotfQotCi0ucmVzdWx0cy12aWV3IC5yZXNpemUtaGFuZGxlOmJlZm9yZSB7Ci0g
ICAgY29udGVudDogJ3x8fCc7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLmxpbmstdGl0bGUsCi0ucmVz
dWx0cy12aWV3IC5hY3RpdmUgLm5vbi1saW5rLXRpdGxlIHsKLSAgICBkaXNwbGF5OiBub25lOwot
fQotCi0ucmVzdWx0cy12aWV3IC5ub24tbGluay10aXRsZSwKLS5yZXN1bHRzLXZpZXcgLmFjdGl2
ZSAubGluay10aXRsZSB7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotfQotCi0ucmVzdWx0
cy12aWV3IGgzIHsKLSAgICBmb250LXNpemU6IDE0cHg7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1h
bDsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDsKLSAgICBtYXJnaW46IDA7Ci0gICAg
Y3Vyc29yOiBwb2ludGVyOwotfQotCi0ucmVzdWx0cy12aWV3IGgzOm5vdCguYWN0aXZlKTpob3Zl
ciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRTsKLX0KLQotLnJlc3VsdHMtdmlldyAuYWN0
aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDOwotfQotCi0vKiBDU1MgcGVyY2VudGFn
ZXMgaW4gc3RhbmRhcmRzLW1vZGUgYXJlIGR1bWIuIFlvdSBuZWVkIHRvIGhhdmUgYSBwZXJjZW50
YWdlIG9yIGZpeGVkIGhlaWdodAotICAgYWxsIHRoZSB3YXkgdXAgdGhlIHRyZWUgaW4gb3JkZXIg
dG8gaGF2ZSBwZXJjZW50YWdlcyByZXNvbHZlLiAqLwotaHRtbCwgYm9keSwgI29uZWJhciwgLnJl
c3VsdHMtdmlldywgLnRlc3Qtc2VsZWN0b3IgewotICAgIGhlaWdodDogMTAwJTsKLX0KLQotI3Jl
c3VsdHMsICNwZXJmIHsKLSAgICAvKiBGSVhNRTogV2UgcmVhbGx5IHNob3VsZCB1c2UgZmxleGJv
eCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoaXMuIEJ1dCB0aGF0IHJlcXVpcmVzIHJlc3RydWN0
dXJpbmcgdGhlIERPTSBhIGJpdC4gKi87Ci0gICAgaGVpZ2h0OiAtd2Via2l0LWNhbGMoMTAwJSAt
IDM5cHgpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLyogUG9zaXRpb24gcmVs
YXRpdmUgc28gdGhhdCBuZXN0ZWQgcGVyY2VudGFnZXMgc2l6ZSB0byB0aGlzIGVsZW1lbnQuICov
Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotfQotCi0vKioqIHN0YXR1cyBjb25zb2xlICoqKi8K
LS5zdGF0dXMgewotICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVm
dDogMDsKLSAgICByaWdodDogMDsKLSAgICBoZWlnaHQ6IDEwMHB4OwotICAgIGJhY2tncm91bmQt
Y29sb3I6IHdoaXRlOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBncmF5OwotICAgIC13ZWJr
aXQtYm94LXNoYWRvdzogMHB4IC0ycHggMTBweCBncmF5OwotICAgIG92ZXJmbG93OiBhdXRvOwot
ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgcGFkZGluZzogNHB4OwotfQotCi0uc3RhdHVz
IC5hY3Rpb25zLCAuc3RhdHVzIC5wcm9jZXNzLXRleHQgewotICAgIHBvc2l0aW9uOiBmaXhlZDsK
LSAgICBib3R0b206IDA7Ci0gICAgcmlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luOiA0cHg7Ci19Ci0K
LS5wcm9jZXNzaW5nIC5hY3Rpb25zIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0ucHJvY2Vz
c2luZyAucHJvY2Vzcy10ZXh0IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotLnByb2Nlc3Mt
dGV4dCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnN0YXR1cy1jb250ZW50IHsKLSAgICBi
b3JkZXItYm90dG9tOiAxcHggZGFzaGVkOwotICAgIG1hcmdpbi1ib3R0b206IDFlbTsKLX0KLQot
LnN0YXR1cy1jb250ZW50Omxhc3QtY2hpbGQgewotICAgIGJvcmRlci1ib3R0b206IDA7Ci0gICAg
bWFyZ2luLWJvdHRvbTogMDsKLX0KLQotLmZsYWtpbmVzcy1pZnJhbWUsIC5mbGFraW5lc3MtaWZy
YW1lLXBsYWNlaG9sZGVyIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgaGVpZ2h0OiAwOwotICAg
IHdpZHRoOiAxMDAlOwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5LW1vY2suaHRtbAkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5odG1sCShub25leGlz
dGVudCkKQEAgLTEsNTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1t
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotVGhlIGZhdmljb25z
IGFyZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlzIHRoZSB3ZWJzaXRl
IG9mIE1hcmsKLUphbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4KLS0t
PgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5Nb2NrIFN1bW1hcnkgVmlldzwvdGl0bGU+Ci08bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9jb21tb24uY3NzIj4KLTxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL3Jlc3VsdHMuY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ic3R5bGVzL25vdGlmaWNhdGlvbnMuY3NzIj4KLTwvaGVhZD4KLTxib2R5Pgot
PHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0x
LjYuMi5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29uZmlnLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jhc2UuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1Ry
YWMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVpbGRlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlw
dHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL3VpL2ZhaWx1cmVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25v
dGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0
cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jb250cm9sbGVycy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9zdW1tYXJ5LW1vY2suanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1
bW1hcnktbW9jay5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSAr
MCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9idWls
ZGJvdC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvYnVpbGRib3QuY3NzCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9idWlsZGJvdC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODIgKzAsMCBAQAotYm9k
eSB7Ci0JbWFyZ2luLWJvdHRvbTo1MHB4OwotfQotCi1ib2R5LCB0ZCB7Ci0JZm9udC1mYW1pbHk6
IFZlcmRhbmEsIEN1cnNvcjsKLQlmb250LXNpemU6IDEwcHg7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7
Ci19Ci0KLWE6bGluayxhOnZpc2l0ZWQsYTphY3RpdmUgewotCWNvbG9yOiAjNDQ0OwotfQotCi1h
OmhvdmVyIHsKLQljb2xvcjogIzAwMDAwMDsKLX0KLQotdGFibGUgewotCWJvcmRlci1zcGFjaW5n
OiAxcHggMXB4OwotfQotCi10YWJsZSB0ZCB7Ci0JcGFkZGluZzogM3B4IDBweCAzcHggMHB4Owot
CXRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLlByb2plY3QgewotCXdpZHRoOiAxMDBweDsKLX0K
LQotLkxhc3RCdWlsZCwgLkFjdGl2aXR5IHsKLQlwYWRkaW5nOiAwIDAgMCA0cHg7Ci19Ci0KLS5M
YXN0QnVpbGQsIC5BY3Rpdml0eSwgLkJ1aWxkZXIsIC5CdWlsZFN0ZXAgewotICAgICAgICB3aWR0
aDogMTU1cHg7Ci0gICAgICAgIG1heC13aWR0aDogMTU1cHg7Ci19Ci0KLXRkLlRpbWUgewotCWNv
bG9yOiAjMDAwOwotCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwotCWJhY2tncm91bmQt
Y29sb3I6ICNlZWU7Ci19Ci0KLXRkLkFjdGl2aXR5LCB0ZC5DaGFuZ2UsIHRkLkJ1aWxkZXIgewot
CWNvbG9yOiAjMzMzMzMzOwotCWJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7Ci19Ci0KLXRkLkNo
YW5nZSB7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4
OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotdGQuRXZlbnQgewotCWNvbG9yOiAjNzc3
OwotCWJhY2tncm91bmQtY29sb3I6ICNkZGQ7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13ZWJr
aXQtYm9yZGVyLXJhZGl1czogNXB4OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotCi10
ZC5BY3Rpdml0eSB7Ci0JYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDsKLQktd2Via2l0LWJv
cmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6
IDEwcHg7Ci0JbWluLWhlaWdodDogMjBweDsKLQlwYWRkaW5nOiAycHggMCAycHggMDsKLX0KLQot
dGQuaWRsZSwgdGQud2FpdGluZywgdGQub2ZmbGluZSwgdGQuYnVpbGRpbmcgewotCWJvcmRlci10
b3AtbGVmdC1yYWRpdXM6IDBweDsKLQktd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBw
eDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogMHB4OwotfQotCi0uTGFzdEJ1aWxkIHsK
LQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQt
cmFkaXVzOiA1cHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLQlib3JkZXIt
dG9wLXJpZ2h0LXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6
IDVweDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6IDVweDsKLX0KLQotLyogQ29uc29s
ZSB2aWV3IHN0eWxlcyAqLwotCi10ZC5EZXZSZXYgewotICAgICAgICBwYWRkaW5nOiA0cHggOHB4
IDRweCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItdG9wLWxl
ZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czog
NXB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNXB4OwotICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAgICAgICB3aWR0aDogMSU7Ci19Ci0KLXRkLkRldlJl
dkNvbGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAg
ICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAgLW1v
ei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKLX0KLQotdGQuRGV2TmFtZSB7Ci0gICAg
ICAgIHBhZGRpbmc6IDRweCA4cHggNHB4IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7Ci0g
ICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgICAgIHdpZHRoOiAxJTsKLSAgICAg
ICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuRGV2U3RhdHVzIHsKLSAgICAgICAgcGFkZGlu
ZzogNHB4IDRweCA0cHggNHB4OwotICAgICAgICBjb2xvcjogIzMzMzMzMzsKLSAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogI2VlZTsKLX0KLQotdGQuRGV2U2xhdmUgewotICAgICAgICBwYWRkaW5n
OiA0cHggNHB4IDRweCA0cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi10ZC5maXJzdCB7Ci0gICAgICAgIGJvcmRlci10b3At
bGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVz
OiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA1cHg7Ci19Ci0KLXRk
Lmxhc3QgewotICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAt
d2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVy
LXJhZGl1cy10b3ByaWdodDogNXB4OwotfQotCi10ZC5EZXZTdGF0dXNDYXRlZ29yeSB7Ci0gICAg
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1
cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotICAgICAgICBib3JkZXItd2lk
dGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci19Ci0KLXRkLkRldlN0YXR1c0Nv
bGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAg
ICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAtbW96
LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6IDVweDsKLX0KLQotdGQuRGV2RGV0YWlscyB7Ci0g
ICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgICAgIHBhZGRpbmc6IDhweCA4cHggOHB4
IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6
ICNlZWU7Ci0gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRkLkRldkNvbW1lbnQgewot
ICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgICAgICBwYWRkaW5nOiA4cHggOHB4IDhw
eCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItYm90dG9tLXJp
Z2h0LXJhZGl1czogNXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFk
aXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4Owot
ICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJraXQt
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRp
dXMtYm90dG9tbGVmdDogNXB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAg
ICAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi10ZC5BbHQgewotICAgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjQ0NDQ0NDOwotfQotCi0ubGVnZW5kIHsKLSAgICAgICAgYm9yZGVyLXJhZGl1czog
NXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLW1vei1i
b3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgbWF4LXdp
ZHRoOiAxMDBweDsKLSAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7Ci0gICAgICAgIHBhZGRpbmc6
IDJweCAycHggMnB4IDJweDsKLSAgICAgICAgaGVpZ2h0OjE0cHg7Ci0gICAgICAgIHdoaXRlLXNw
YWNlOm5vd3JhcDsKLX0KLQotLkRldlN0YXR1c0JveCB7Ci0gICAgICAgIHRleHQtYWxpZ246Y2Vu
dGVyOwotICAgICAgICBoZWlnaHQ6MjBweDsKLSAgICAgICAgcGFkZGluZzowIDJweDsKLSAgICAg
ICAgbGluZS1oZWlnaHQ6MDsKLSAgICAgICAgd2hpdGUtc3BhY2U6bm93cmFwOwotfQotCi0uRGV2
U3RhdHVzQm94IGEgewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXItd2lk
dGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1yYWRp
dXM6IDRweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIC1t
b3otYm9yZGVyLXJhZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAgICB3
aWR0aDo5MCU7Ci0gICAgICAgIGhlaWdodDoyMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoyMHB4
OwotICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRv
OwotfQotCi0uRGV2U2xhdmVCb3ggewotICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsKLSAgICAg
ICAgaGVpZ2h0OjEwcHg7Ci0gICAgICAgIHBhZGRpbmc6MCAycHg7Ci0gICAgICAgIGxpbmUtaGVp
Z2h0OjA7Ci0gICAgICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKLX0KLQotLkRldlNsYXZlQm94IGEg
ewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXItd2lkdGg6MXB4OwotICAg
ICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKLSAg
ICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJh
ZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAgICB3aWR0aDo5MCU7Ci0g
ICAgICAgIGhlaWdodDoxMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoyMHB4OwotICAgICAgICBt
YXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwotfQotCi1hLm5v
cm91bmQgewotICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7Ci0gICAgICAgIC13ZWJraXQtYm9y
ZGVyLXJhZGl1czogMHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDBweDsKLSAgICAg
ICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAtOHB4OwotICAgICAg
ICBtYXJnaW4tYm90dG9tOiAtOHB4OwotICAgICAgICBoZWlnaHQ6IDM2cHg7Ci0gICAgICAgIGJv
cmRlci10b3Atd2lkdGg6IDA7Ci0gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Ci19Ci0K
LWEuYmVnaW4gewotICAgICAgICBib3JkZXItdG9wLXdpZHRoOjFweDsKLSAgICAgICAgcG9zaXRp
b246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Ci0gICAgICAgIG1hcmdpbi1i
b3R0b206IC03cHg7Ci0gICAgICAgIGhlaWdodDogMjdweDsKLQlib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA0cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAgICAg
IC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA0cHg7Ci0JYm9yZGVyLXRvcC1yaWdodC1yYWRp
dXM6IDRweDsKLQktd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgICAg
IC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OwotfQotCi1hLmVuZCB7Ci0gICAgICAg
IGJvcmRlci1ib3R0b20td2lkdGg6MXB4OwotICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgICAgIG1hcmdpbi10b3A6IC03cHg7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsKLSAg
ICAgICAgaGVpZ2h0OiAyN3B4OwotCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKLQkt
d2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKLSAgICAgICAgLW1vei1ib3Jk
ZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDRweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czog
NHB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAgICAg
LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7Ci19Ci0KLS5jZW50ZXJfYWxpZ24g
ewotICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5yaWdodF9hbGlnbiB7Ci0gICAg
ICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ubGVmdF9hbGlnbiB7Ci0gICAgICAgIHRleHQt
YWxpZ246IGxlZnQ7Ci19Ci0KLWRpdi5CdWlsZFdhdGVyZmFsbCB7Ci0JYm9yZGVyLXJhZGl1czog
N3B4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwotCS1tb3otYm9yZGVyLXJhZGl1czog
N3B4OwotICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIGxlZnQ6IDBweDsKLSAg
ICAgICAgdG9wOiAwcHg7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Ci0gICAg
ICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAgICAgICAgZmxvYXQ6IGxlZnQ7Ci0gICAg
ICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgICAgIGJvcmRlci13aWR0aDogMXB4OwotICAgICAgICBi
b3JkZXItc3R5bGU6IHNvbGlkOwotfQotCi0vKiBMYXN0QnVpbGQsIEJ1aWxkU3RlcCBzdGF0ZXMg
Ki8KLS5zdWNjZXNzIHsKLQljb2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjOGZk
ZjVmOwotICAgICAgICBib3JkZXItY29sb3I6ICM0Rjg1MzA7Ci19Ci0KLS5mYWlsdXJlIHsKLQlj
b2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZTk4MDgwOwotICAgICAgICBib3Jk
ZXItY29sb3I6ICNBNzcyNzI7Ci19Ci0KLS53YXJuaW5ncyB7Ci0JY29sb3I6ICNGRkZGRkY7Ci0J
YmFja2dyb3VuZC1jb2xvcjogI2ZmYzM0MzsKLSAgICAgICAgYm9yZGVyLWNvbG9yOiAjQzI5RDQ2
OwotfQotCi0uZXhjZXB0aW9uLCB0ZC5vZmZsaW5lIHsKLQljb2xvcjogI0ZGRkZGRjsKLQliYWNr
Z3JvdW5kLWNvbG9yOiAjZTBiMGZmOwotICAgICAgICBib3JkZXItY29sb3I6ICNBQ0EwQjM7Ci19
Ci0KLS5zdGFydCwucnVubmluZywgdGQuYnVpbGRpbmcgewotCWNvbG9yOiAjNjY2NjY2OwotCWJh
Y2tncm91bmQtY29sb3I6ICNmZmZjNmM7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogI0M1QzU2RDsK
LX0KLQotLnN0YXJ0IHsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4OwotCS13ZWJr
aXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLQktbW96LWJvcmRlci1yYWRpdXMt
Ym90dG9tbGVmdDogMTBweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKLQkt
d2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4OwotCS1tb3otYm9yZGVyLXJh
ZGl1cy1ib3R0b21yaWdodDogMTBweDsKLX0KLQotLm5vdHN0YXJ0ZWQgewotICAgICAgICBib3Jk
ZXItd2lkdGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRl
ci1jb2xvcjojYWFhOwotfQotCi10ZC5Qcm9qZWN0IGE6aG92ZXIsIHRkLnN0YXJ0IGE6aG92ZXIg
ewotICAgICAgICBjb2xvcjogIzAwMDsKLX0KLQotLyogZ3JpZCBzdHlsZXMgKi8KLQotdGFibGUu
R3JpZCB7Ci0gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0KLXRhYmxlLkdy
aWQgdHIgdGQgewotICAgICAgICBwYWRkaW5nOiAwLjJlbTsKLSAgICAgICAgbWFyZ2luOiAwcHg7
Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotdGFibGUuR3JpZCB0ciB0ZC50aXRs
ZSB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAlOwotICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBn
cmF5IHNvbGlkOwotICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZ3JheSBzb2xpZDsKLX0KLQot
dGFibGUuR3JpZCB0ciB0ZC5zb3VyY2VzdGFtcCB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAlOwot
fQotCi10YWJsZS5HcmlkIHRyIHRkLmJ1aWxkZXIgewotICAgICAgICB0ZXh0LWFsaWduOiByaWdo
dDsKLSAgICAgICAgZm9udC1zaXplOiA5MCU7Ci19Ci0KLXRhYmxlLkdyaWQgdHIgdGQuYnVpbGQg
ewotICAgICAgICBib3JkZXI6IDFweCBncmF5IHNvbGlkOwotfQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0V4dGVybmFsL2RhdGVyYW5nZXBpY2tlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0V4dGVybmFsL2RhdGVyYW5nZXBpY2tlci5jc3MJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9FeHRlcm5hbC9kYXRlcmFuZ2VwaWNrZXIuY3NzCShub25leGlzdGVudCkKQEAgLTEs
MjEyICswLDAgQEAKLS5kYXRlLXBpY2tlci13cmFwcGVyDQotew0KLQlwb3NpdGlvbjphYnNvbHV0
ZTsNCi0Jei1pbmRleDoxOw0KLQlib3JkZXI6MXB4IHNvbGlkICNiZmJmYmY7DQotCWJhY2tncm91
bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC45NSkscmdiYSgyMzUsMjM1LDIz
NSwwLjk1KSk7DQotCXdpZHRoOjQyOHB4Ow0KLQlwYWRkaW5nOiA1cHggMTJweDsNCi0JZm9udC1z
aXplOjEycHg7DQotCWxpbmUtaGVpZ2h0OjIwcHg7DQotICAgIGNvbG9yOnJnYigxNDUsIDEzNSwg
OTUpOw0KLSAgICBmb250LWZhbWlseToiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7
DQotCWJveC1zaGFkb3c6M3B4IDNweCAxMHB4IHJnYmEoMCwwLDAsMC41KTsNCi0JbGVmdDowOw0K
LQlyaWdodDowOw0KLSAgICBtYXJnaW4tbGVmdDphdXRvOw0KLSAgICBtYXJnaW4tcmlnaHQ6YXV0
bzsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIuc2luZ2xlLWRhdGUgew0KLQl3aWR0aDphdXRv
Ow0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlci5uby1zaG9ydGN1dHMgeyBwYWRkaW5nLWJvdHRv
bToxMnB4O30NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZm9vdGVyDQotew0KLQlmb250LXNpemU6
MTFweDsNCi0JcGFkZGluZy10b3A6IDNweDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgYSAN
Ci17DQotCWNvbG9yOiByZ2IoMTA3LCAxODAsIDIxNCk7DQotCXRleHQtZGVjb3JhdGlvbjp1bmRl
cmxpbmU7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyDQotew0KLQli
b3JkZXI6MXB4IHNvbGlkICNiZmJmYmY7DQotCWJvcmRlci1yYWRpdXM6M3B4Ow0KLQliYWNrZ3Jv
dW5kLWNvbG9yOiNmZmY7DQotCXBhZGRpbmc6NXB4Ow0KLQljdXJzb3I6ZGVmYXVsdDsNCi0JcG9z
aXRpb246cmVsYXRpdmU7DQotCV9vdmVyZmxvdzpoaWRkZW47DQotfQ0KLS5kYXRlLXBpY2tlci13
cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlDQotew0KLQl3aWR0aDoxOTBweDsNCi0JZmxvYXQ6
bGVmdDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLm1vbnRoLXdyYXBwZXIgdGFibGUubW9u
dGgyDQotew0KLQl3aWR0aDoxOTBweDsNCi0JZmxvYXQ6cmlnaHQ7DQotfQ0KLS5kYXRlLXBpY2tl
ci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIHRoLA0KLS5kYXRlLXBpY2tlci13cmFwcGVy
IC5tb250aC13cmFwcGVyIHRhYmxlIHRkDQotew0KLQl2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7DQot
CXRleHQtYWxpZ246Y2VudGVyOw0KLQlsaW5lLWhlaWdodDoxNHB4Ow0KLQltYXJnaW4gOiAwcHg7
DQotCXBhZGRpbmcgOiAwcHg7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFw
cGVyIHRhYmxlIC5kYXkNCi17DQotCWhlaWdodDoxOXB4Ow0KLQlsaW5lLWhlaWdodDoxOXB4Ow0K
LQlmb250LXNpemU6MTJweDsNCi0JbWFyZ2luLWJvdHRvbToxcHg7DQotCWNvbG9yOiM5OTk7DQot
CWN1cnNvcjpkZWZhdWx0Ow0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBl
ciB0YWJsZSBkaXYuZGF5Lmxhc3RNb250aCwNCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgt
d3JhcHBlciB0YWJsZSBkaXYuZGF5Lm5leHRNb250aA0KLXsNCi0JY29sb3I6Izk5OTsNCi0JY3Vy
c29yOmRlZmF1bHQ7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRh
YmxlIC5kYXkuY2hlY2tlZA0KLXsNCi0JYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NiwgMjE5LCAy
NDcpOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAud2Vl
ay1uYW1lDQotew0KLQloZWlnaHQ6MjBweDsNCi0JbGluZS1oZWlnaHQ6MjBweDsNCi0JZm9udC13
ZWlnaHQ6MTAwOw0KLSAgICBjb2xvcjpyZ2IoMTg1LCAxNzUsIDEyNSk7DQotfQ0KLQ0KLS5kYXRl
LXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIC5kYXkuaGFzLXRvb2x0aXAgeyBj
dXJzb3I6aGVscCAhaW1wb3J0YW50O30NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgt
d3JhcHBlciB0YWJsZSAuZGF5LnRvTW9udGgudmFsaWQNCi17DQotCWNvbG9yOiMzMzM7DQotCWN1
cnNvcjpwb2ludGVyOw0KLX0NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBl
ciB0YWJsZSAuZGF5LnJlYWwtdG9kYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyMzAs
IDEzMik7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAuZGF5
LnJlYWwtdG9kYXkuY2hlY2tlZCB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMTIsIDIwNCwgMjEz
KTsgfQ0KLQ0KLQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uDQotew0KLQlo
ZWlnaHQ6NDBweDsNCi0gICAgY29sb3I6cmdiKDE4NSwgMTc1LCAxMjUpOw0KLX0NCi0uZGF0ZS1w
aWNrZXItd3JhcHBlciB0YWJsZSAuY2FwdGlvbiAubmV4dCwNCi0uZGF0ZS1waWNrZXItd3JhcHBl
ciB0YWJsZSAuY2FwdGlvbiAucHJldg0KLXsNCi0JcGFkZGluZzowIDVweDsNCi0JY3Vyc29yOnBv
aW50ZXI7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uIC5uZXh0Omhv
dmVyLA0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uIC5wcmV2OmhvdmVyDQot
ew0KLQliYWNrZ3JvdW5kLWNvbG9yOiNjY2M7DQotCWNvbG9yOndoaXRlOw0KLX0NCi0uZGF0ZS1w
aWNrZXItd3JhcHBlciAuZ2FwDQotew0KLQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0JZGlzcGxheTpu
b25lOw0KLQl0b3A6MHB4Ow0KLQlsZWZ0OjIwNHB4Ow0KLQl6LWluZGV4OiAxOw0KLQl3aWR0aDox
NXB4Ow0KLQloZWlnaHQ6IDEwMCU7DQotCWJhY2tncm91bmQtY29sb3I6cmVkOw0KLQlmb250LXNp
emU6MDsNCi0JbGluZS1oZWlnaHQ6MDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdhcCAu
Z2FwLWxpbmVzIHsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0NCi0uZGF0ZS1waWNr
ZXItd3JhcHBlciAuZ2FwIC5nYXAtbGluZSB7IGhlaWdodDoxNXB4O3dpZHRoOjE1cHg7IHBvc2l0
aW9uOnJlbGF0aXZlOyAgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5nYXAgLmdhcC1saW5lIC5n
YXAtMSB7IHotaW5kZXg6MTsgaGVpZ2h0OjA7IGJvcmRlci1sZWZ0OjhweCBzb2xpZCB3aGl0ZTsg
Ym9yZGVyLXRvcDo4cHggc29saWQgI2VlZTtib3JkZXItYm90dG9tOjhweCBzb2xpZCAjZWVlOyB9
DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdhcCAuZ2FwLWxpbmUgLmdhcC0yIHsgcG9zaXRpb246
YWJzb2x1dGU7IHJpZ2h0OjA7IHRvcDowcHg7IHotaW5kZXg6MjsgaGVpZ2h0OjA7IGJvcmRlci1s
ZWZ0OjhweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo4cHggc29saWQgd2hpdGU7IH0N
Ci0uZGF0ZS1waWNrZXItd3JhcHBlciAuZ2FwIC5nYXAtbGluZSAuZ2FwLTMgeyBwb3NpdGlvbjph
YnNvbHV0ZTsgcmlnaHQ6MDsgdG9wOjhweDsgei1pbmRleDoyOyBoZWlnaHQ6MDsgYm9yZGVyLWxl
ZnQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjhweCBzb2xpZCB3aGl0ZTsg
fQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5nYXAgLmdhcC10b3AtbWFzayB7IHdpZHRoOiA2cHg7
IGhlaWdodDoxcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IC0xcHg7IGxlZnQ6IDFweDsgYmFj
a2dyb3VuZC1jb2xvcjogI2VlZTsgei1pbmRleDozOyB9DQotLmRhdGUtcGlja2VyLXdyYXBwZXIg
LmdhcCAuZ2FwLWJvdHRvbS1tYXNrIHsgd2lkdGg6IDZweDsgaGVpZ2h0OjFweDsgcG9zaXRpb246
YWJzb2x1dGU7IGJvdHRvbTogLTFweDsgbGVmdDogN3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVl
OyB6LWluZGV4OjM7IH0NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuc2VsZWN0ZWQtZGF5cw0K
LXsNCi0JZGlzcGxheTpub25lOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1i
YXINCi17DQotCWxpbmUtaGVpZ2h0OjM2cHg7DQotCXBvc2l0aW9uOnJlbGF0aXZlOw0KLQlmb250
LXNpemU6MTRweDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyIC5lcnJv
ci10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1i
YXIgLm5vcm1hbC10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAu
ZHJwX3RvcC1iYXIgLmRlZmF1bHQtdG9wIHsgZGlzcGxheTpibG9jazt9DQotDQotLmRhdGUtcGlj
a2VyLXdyYXBwZXIgLmRycF90b3AtYmFyLmVycm9yIC5kZWZhdWx0LXRvcCB7IGRpc3BsYXk6bm9u
ZTsgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5kcnBfdG9wLWJhci5lcnJvciAuZXJyb3ItdG9w
IHsgZGlzcGxheTpibG9jazsgY29sb3I6cmVkOyB9DQotDQotLmRhdGUtcGlja2VyLXdyYXBwZXIg
LmRycF90b3AtYmFyLm5vcm1hbCAuZGVmYXVsdC10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0
ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1iYXIubm9ybWFsIC5ub3JtYWwtdG9wIHsgZGlzcGxh
eTpibG9jazsgfQ0KLQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5kcnBfdG9wLWJhciAuYXBwbHkt
YnRuDQotew0KLQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0JcmlnaHQ6IDBweDsgDQotCXRvcDogNnB4
Ow0KLQlwYWRkaW5nOjNweCA1cHg7DQotCW1hcmdpbjowOw0KLQlmb250LXNpemU6MTJweDsNCi0J
Ym9yZGVyLXJhZGl1czo0cHg7DQotCWN1cnNvcjpwb2ludGVyOw0KLQkNCi0JY29sb3I6ICNkOWVl
Zjc7DQotCWJvcmRlcjogc29saWQgMXB4ICMwMDc2YTM7DQotCWJhY2tncm91bmQ6ICMwMDk1Y2Q7
DQotCWJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBi
b3R0b20sIGZyb20oIzAwYWRlZSksIHRvKCMwMDc4YTUpKTsNCi0JYmFja2dyb3VuZDogLW1vei1s
aW5lYXItZ3JhZGllbnQodG9wLCAgIzAwYWRlZSwgICMwMDc4YTUpOw0KLS8qCWZpbHRlcjogIHBy
b2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScj
MDBhZGVlJywgZW5kQ29sb3JzdHI9JyMwMDc4YTUnKTsqLw0KLQljb2xvcjp3aGl0ZTsNCi19DQot
DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyIC5hcHBseS1idG4uZGlzYWJsZWQN
Ci17DQotCWN1cnNvcjogcG9pbnRlcjsNCi0JY29sb3I6ICM2MDYwNjA7DQotCWJvcmRlcjogc29s
aWQgMXB4ICNiN2I3Yjc7DQotCWJhY2tncm91bmQ6ICNmZmY7DQotCWJhY2tncm91bmQ6IC13ZWJr
aXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI2ZmZiksIHRv
KCNlZGVkZWQpKTsNCi0JYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAgI2Zm
ZiwgICNlZGVkZWQpOw0KLS8qCWZpbHRlcjogIHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jv
c29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNlZGVk
ZWQnKTsqLw0KLX0NCi0vKnRpbWUgc3R5bGluZyovDQotLnRpbWUgew0KLQlwb3NpdGlvbjogcmVs
YXRpdmU7DQotfQ0KLS50aW1lIGlucHV0W3R5cGU9cmFuZ2VdIHsNCi0gIHZlcnRpY2FsLWFsaWdu
OiBtaWRkbGU7DQotfQ0KLS50aW1lMSwgLnRpbWUyIHsNCi0Jd2lkdGg6IDE4MHB4Ow0KLQlwYWRk
aW5nOiAwIDVweDsNCi0JdGV4dC1hbGlnbjogY2VudGVyOw0KLX0NCi0udGltZTEgew0KLQlmbG9h
dDogbGVmdDsNCi19DQotLnRpbWUyIHsNCi0JZmxvYXQ6IHJpZ2h0OwkNCi19DQotLmhvdXIsIC5t
aW51dGUgew0KLQl0ZXh0LWFsaWduOiByaWdodDsNCi19DQotLmhpZGUgew0KLQlkaXNwbGF5OiBu
b25lOw0KLX0NCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvZGF0
ZXJhbmdlcGlja2VyLmNzcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEg
KzAsMCAjIwotdGV4dC9jc3MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0V4dGVybmFsL2pxdWVyeS0xLjExLjEubWluLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9qcXVlcnktMS4xMS4xLm1pbi5qcwkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL2pxdWVyeS0xLjExLjEubWluLmpzCShub25l
eGlzdGVudCkKQEAgLTEsNCArMCwwIEBACi0vKiEgalF1ZXJ5IHYxLjExLjEgfCAoYykgMjAwNSwg
MjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwotIWZ1
bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2YgbW9k
dWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9uKGEp
e2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2luZG93
IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlwZW9m
IHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMu
Y29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Q
cm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5mbi5p
bml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14tbXMt
LyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2FzZSgp
fTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIiLGxl
bmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVuY3Rp
b24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpkLmNh
bGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29uc3Ry
dWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29udGV4
dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpmdW5j
dGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3Jl
dHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hT
dGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0aW9u
KGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hTdGFj
ayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJl
dk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNwbGlj
ZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxl
LGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3IoImJv
b2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0Ij09
dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7aT5o
O2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtkXSxn
IT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhiPyhi
PSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6e30s
Z1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30sbS5l
eHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQvZywi
IiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5vb3A6
ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09PW0u
dHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJyYXki
PT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09YS53
aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBhcnNl
RmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4gYSly
ZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZighYXx8
Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJuITE7
dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2FsbChh
LmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMp
e3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtmb3Io
YiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24oYSl7
cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5cGVv
ZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rpb24o
Yil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChh
LGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1zLSIp
LnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYm
YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9u
KGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtmPmU7
ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYo
ZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsrKWlm
KGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlmKGQ9
Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rpb24o
YSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpmdW5j
dGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20ubWVy
Z2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5OmZ1
bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2Zvcihk
PWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4gYiYm
YltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9K2Iu
bGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1jKXdo
aWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxncmVw
OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+Zjtm
KyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5jdGlv
bihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+Zjtm
KyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9Yihh
W2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlkOjEs
cHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBiJiYo
Zj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIpLGU9
ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1bWVu
dHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpmdW5j
dGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51bWJl
ciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxpdCgi
ICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KTtm
dW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlvbiI9
PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1jfHww
PT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9uKGEp
e3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIrLW5l
dyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVuY3Rp
b24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEsRT17
fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNsaWNl
LEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+Yjti
KyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0ZWR8
YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRlbnxp
c21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJbXFx4
MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIsTz1O
LnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwhfl0/
PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxcIl0p
KilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxcLnxb
XlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxcXFwo
KVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58W15c
XFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIrTSsi
KiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBSZWdF
eHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChRKSxX
PW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxDTEFT
UzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBsYWNl
KCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdFeHAo
Il4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxhc3Qp
LShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58KSIr
TSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5ldyBS
ZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitNKyIq
Wz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIiooKD86
LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxzZWxl
Y3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRpdmUg
XHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9Lyd8
XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwuKSIs
ImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8
fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2Rl
KGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hpbGRO
b2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNo
KGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwoYikp
fTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytdKTth
Lmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixzLHcs
eDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtdLCFh
fHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5IT09
aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09ayl7
aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lmKGgu
aWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9Yi5v
d25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1cm4g
ZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5
VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4PTk9
PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1nKGEp
LChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0QXR0
cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0pb1ts
XT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9pbigi
LCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxkfWNh
dGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGkoYS5y
ZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24gYihj
LGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQo
KV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxhfWZ1
bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEhYShi
KX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8Iiks
ZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2IoYSxi
KXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291
cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxl
KGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9u
IGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7
cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBmdW5j
dGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1j
fHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIoZnVu
Y3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5sZW5n
dGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tlXSkp
fSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05h
bWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWEm
JihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1i
Lm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93
bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5ub2Rl
VHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYoZSks
ZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5s
b2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9u
dW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7cmV0
dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5nZXRF
bGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChlLmNy
ZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0pLGMu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKSYm
aWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48
ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5jdGlv
bihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1lfHwh
ZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5j
dGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5nZXRF
bGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklE
PWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3Jl
dHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5maWx0
ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rpb24o
YSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRlTm9k
ZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1lbnRz
QnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdO
YW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2
YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hp
bGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0s
ZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1
cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNlbGVj
dG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93Y2xp
cD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNlbGVj
dG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00rIioo
PzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8cS5w
dXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpjaGVj
a2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIgYj1l
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4iKSxh
LmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0b3JB
bGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89IiksYS5x
dWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIsIjpk
aXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkpLChj
Lm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1NlbGVj
dG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0Y2hl
c1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxsKGEs
ImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5ndGgm
Jm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2luKCJ8
IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8uY29u
dGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVsZW1l
bnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVUeXBl
fHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYx
NiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3aGls
ZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0aW9u
KGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVyRG9j
dW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlv
bihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEp
PT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93bmVy
RG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZkPy0x
OjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9YS5w
YXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4gYT09
PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYoZj09
PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChjKTtj
PWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2RdKWQr
KztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6bn0s
ZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIubWF0
Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1uJiZt
KGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8ciYm
ci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxjLmRp
c2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUpcmV0
dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5jb250
YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShhKSx0
KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4mJm0o
YSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5hdHRy
SGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAwIT09
Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1dGVO
b2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihhKXt0
aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIr
YSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9IWMu
ZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIpLGwp
e3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNwbGlj
ZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3ZhciBi
LGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7aWYo
InN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2Zvcihh
PWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8fDQ9
PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0dXJu
IGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0Y2g6
WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2RlIixm
aXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJsaW5n
IixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FUVFI6
ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNdfHxh
WzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIithWzNd
KyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnRv
TG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFbMF0p
LGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09YVsz
XSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFbMF0p
LGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNISUxE
LnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChjKSYm
KGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYoYVsw
XT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxmaWx0
ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNlKCk7
cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4gYS5u
b2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9uKGEp
e3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2ErIigi
K00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5cGVv
ZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMmJmEu
Z2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
IGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09Yjpi
PyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1lLmlu
ZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xpY2Uo
LWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0iPT09
Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6ZnVu
Y3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9PWEu
c2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9uKGEp
e3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixvLHA9
ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxyPWgm
JmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShwKXts
PWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09bC5u
b2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0dXJu
ITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFbdV09
e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYmcS5j
aGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlmKDE9
PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYocyYm
KGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShsPSsr
biYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2FdPVt3
LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19fSxQ
U0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJzW2Eu
dG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0dXJu
IGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093blBy
b3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxiKSxn
PWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10pfSk6
ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5jdGlv
bihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/aGIo
ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3doaWxl
KGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1cm4g
YlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3JldHVy
biBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihmdW5j
dGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5uZXJU
ZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJuIFcu
dGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBsYWNl
KGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxhbmc6
Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0dXJu
IGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgoYj1i
LnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0aW9u
KGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGljZSgx
KT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlvbihh
KXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3VzKCkp
JiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEpe3Jl
dHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2Fi
bGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEuc2Vs
ZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFyZW50
Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7Zm9y
KGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1cm4h
MTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHkoYSl9
LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpmdW5j
dGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7dmFy
IGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9uIj09
PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJpbnB1
dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9PShi
PWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxmaXJz
dDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1cm5b
Yi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46bmIo
ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9KSxv
ZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJu
IGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7KWEu
cHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2Mr
YjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1ZG9z
LmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAsaW1h
Z2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9KWQu
cHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJzPWQu
cHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxiKXt2
YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDApO2g9
YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUmJiho
PWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVjKGgp
KSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIgIil9
KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVjKGgp
KXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6
ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9o
Lmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7Zm9y
KHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4gZH1m
dW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9eCsr
O3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIubm9k
ZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3LGZd
O2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSlyZXR1
cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3VdfHwo
Ylt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJdO2lm
KGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJuIGEu
bGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZighYVtl
XShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zvcih2
YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rpb24g
dWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7aT5o
O2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgpKTty
ZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12Yihk
KSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGssbCxt
PVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtdKSxx
PSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lmKGMm
JmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUoay0t
KShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUpe2o9
W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVsbCxy
PVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYsbCk6
bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShvLHIu
bGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2IoYSl7
Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8ZC5y
ZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgsITAp
LGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5jdGlv
bihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxkKTps
KGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNiKG0p
LGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0Y2hl
cyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJyZWFr
O3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2YWx1
ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3Yihh
LnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2goYyl9
cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVuZ3Ro
PjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxzPVtd
LHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFuZG9t
KCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9dVtx
XSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVzaChs
KTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihwKz1x
LGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjApd2hp
bGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGkscyks
ayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1cm4g
ayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1mdW5j
dGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEpKSxj
PWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChmKTtm
PUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0aW9u
KGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFmJiZn
KGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1vWzBd
LnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQmJjk9
PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5JRChr
Lm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYoYj1i
LnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVlZHND
b250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0aXZl
W2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5yZXBs
YWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7aWYo
ai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYpLGU7
YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBhcmVu
dE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIiKT09
PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rpb24o
YSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQoImRp
diIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9h
PiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBlfGhy
ZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0
cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmli
KGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5z
ZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2
YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09
YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1bmN0
aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihMLGZ1
bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNh
c2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9
KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhwci5w
c2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxEb2M9
cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRzQ29u
dGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQvO2Z1
bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVuY3Rp
b24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1cm4g
bS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10eXBl
b2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihiLGEp
fXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAhPT1j
fSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90
KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNTZWxl
Y3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEpe3Jl
dHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFy
IGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRo
aXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG0u
Y29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5kKGEs
ZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5zZWxl
Y3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVuY3Rp
b24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVuY3Rp
b24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlv
bihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEpOmF8
fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xXXSs+
KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYo
IWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0
KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxs
XTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmluZChh
KTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2Yg
bT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9iLm93
bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIpKWZv
cihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRyKGMs
YltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFyZW50
Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNb
MF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEu
bm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTptLmlz
RnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YShtKToo
dm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRl
eHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4PW0o
eSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46ITAs
Y29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixj
KXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1jfHwx
IT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSksZT1l
W2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1hLm5l
eHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0pLG0u
Zm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0aDty
ZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250YWlu
cyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMs
ZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP20o
YSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5w
YXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5
cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4g
dGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24o
YSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkpOm0u
aW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2Rl
P3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1
cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkpKX0s
YWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmpl
Y3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9YVti
XTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVuY3Rp
b24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxs
fSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVu
dHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxu
ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24o
YSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0
dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG0u
ZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVy
biBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0
dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe3Jl
dHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVu
OmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8
fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5j
dGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7cmV0
dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihl
PW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSksQi50
ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9cUysv
ZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0Y2go
RSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7
YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixjLGQs
ZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJmws
ZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHko
bFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5s
ZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24o
KXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlvbihi
LGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgu
cHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9l
PWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3Jl
dHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9bS5p
bkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYtLSl9
KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISghaHx8
IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlzYWJs
ZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24o
KXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUo
KSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxj
KXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9p
LnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRo
aXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBr
fSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUi
LG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIs
bS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9ncmVz
cyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rpb24o
KXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMpLmZh
aWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3JldHVy
biBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bS5p
c0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5
KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5k
b25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsi
V2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1u
dWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20uZXh0
ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rpb24o
YSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7
Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24oKXty
ZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30sZVtm
WzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxlfSx3
aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3RoLGY9
MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZlcnJl
ZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1h
cmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgo
YixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJy
YXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlzRnVu
Y3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcu
cmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGss
YyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4gbS5y
ZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFkeVdh
aXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITApfSxy
ZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7aWYo
IXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEwJiYt
LW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5kbGVy
JiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19KTtm
dW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwhMSkp
Oih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQoIm9u
bG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVu
dC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0ucmVh
ZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxldGUi
PT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50TGlz
dGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRl
Y2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51bGw9
PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Njcm9s
bCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIpfWNh
dGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVybiBI
LnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztrLm93
bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigpe3Zh
ciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUm
JihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5
bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0
b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlwZW9m
IGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21hcmdp
bjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxvY2tO
ZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMucmVt
b3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2lm
KG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUgYS50
ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0YT1m
dW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlKCld
LGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdl
dEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tcd1xX
XSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09
PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJDYXNl
KCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVl
Ij09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpNLnRl
c3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9dm9p
ZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEiIT09
Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1cm4h
MH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0uZXhw
YW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwotaWYoayYm
altrXSYmKGV8fGpba10uZGF0YSl8fHZvaWQgMCE9PWR8fCJzdHJpbmciIT10eXBlb2YgYilyZXR1
cm4ga3x8KGs9aT9hW2hdPWMucG9wKCl8fG0uZ3VpZCsrOmgpLGpba118fChqW2tdPWk/e306e3Rv
SlNPTjptLm5vb3B9KSwoIm9iamVjdCI9PXR5cGVvZiBifHwiZnVuY3Rpb24iPT10eXBlb2YgYikm
JihlP2pba109bS5leHRlbmQoaltrXSxiKTpqW2tdLmRhdGE9bS5leHRlbmQoaltrXS5kYXRhLGIp
KSxnPWpba10sZXx8KGcuZGF0YXx8KGcuZGF0YT17fSksZz1nLmRhdGEpLHZvaWQgMCE9PWQmJihn
W20uY2FtZWxDYXNlKGIpXT1kKSwic3RyaW5nIj09dHlwZW9mIGI/KGY9Z1tiXSxudWxsPT1mJiYo
Zj1nW20uY2FtZWxDYXNlKGIpXSkpOmY9ZyxmfX1mdW5jdGlvbiBSKGEsYixjKXtpZihtLmFjY2Vw
dERhdGEoYSkpe3ZhciBkLGUsZj1hLm5vZGVUeXBlLGc9Zj9tLmNhY2hlOmEsaD1mP2FbbS5leHBh
bmRvXTptLmV4cGFuZG87aWYoZ1toXSl7aWYoYiYmKGQ9Yz9nW2hdOmdbaF0uZGF0YSkpe20uaXNB
cnJheShiKT9iPWIuY29uY2F0KG0ubWFwKGIsbS5jYW1lbENhc2UpKTpiIGluIGQ/Yj1bYl06KGI9
bS5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIuc3BsaXQoIiAiKSksZT1iLmxlbmd0aDt3aGls
ZShlLS0pZGVsZXRlIGRbYltlXV07aWYoYz8hUChkKTohbS5pc0VtcHR5T2JqZWN0KGQpKXJldHVy
bn0oY3x8KGRlbGV0ZSBnW2hdLmRhdGEsUChnW2hdKSkpJiYoZj9tLmNsZWFuRGF0YShbYV0sITAp
OmsuZGVsZXRlRXhwYW5kb3x8ZyE9Zy53aW5kb3c/ZGVsZXRlIGdbaF06Z1toXT1udWxsKX19fW0u
ZXh0ZW5kKHtjYWNoZTp7fSxub0RhdGE6eyJhcHBsZXQgIjohMCwiZW1iZWQgIjohMCwib2JqZWN0
ICI6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCJ9LGhhc0RhdGE6
ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5ub2RlVHlwZT9tLmNhY2hlW2FbbS5leHBhbmRvXV06YVtt
LmV4cGFuZG9dLCEhYSYmIVAoYSl9LGRhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEsYixj
KX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3JldHVybiBSKGEsYil9LF9kYXRhOmZ1bmN0aW9u
KGEsYixjKXtyZXR1cm4gUShhLGIsYywhMCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7cmV0
dXJuIFIoYSxiLCEwKX19KSxtLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjLGQs
ZSxmPXRoaXNbMF0sZz1mJiZmLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09YSl7aWYodGhpcy5sZW5n
dGgmJihlPW0uZGF0YShmKSwxPT09Zi5ub2RlVHlwZSYmIW0uX2RhdGEoZiwicGFyc2VkQXR0cnMi
KSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10ubmFtZSwwPT09ZC5pbmRleE9m
KCJkYXRhLSIpJiYoZD1tLmNhbWVsQ2FzZShkLnNsaWNlKDUpKSxPKGYsZCxlW2RdKSkpO20uX2Rh
dGEoZiwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gZX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3RoPjE/
dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5kYXRhKHRoaXMsYSxiKX0pOmY/TyhmLGEsbS5kYXRhKGYs
YSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7bS5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24o
YSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9bS5fZGF0YShhLGIp
LGMmJighZHx8bS5pc0FycmF5KGMpP2Q9bS5fZGF0YShhLGIsbS5tYWtlQXJyYXkoYykpOmQucHVz
aChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2YXIg
Yz1tLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW0uX3F1ZXVlSG9va3MoYSxi
KSxnPWZ1bmN0aW9uKCl7bS5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2hp
ZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYu
c3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1
bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIG0uX2RhdGEoYSxjKXx8bS5f
ZGF0YShhLGMse2VtcHR5Om0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigp
e20uX3JlbW92ZURhdGEoYSxiKyJxdWV1ZSIpLG0uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSksbS5m
bi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlw
ZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP20ucXVldWUodGhpc1sw
XSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bS5xdWV1ZSh0
aGlzLGEsYik7bS5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIhPT1j
WzBdJiZtLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LmVhY2goZnVuY3Rpb24oKXttLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9u
KGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7
dmFyIGMsZD0xLGU9bS5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24o
KXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12
b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1tLl9kYXRhKGZbZ10sYSsicXVldWVIb29rcyIp
LGMmJmMuZW1wdHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNlKGIp
fX0pO3ZhciBTPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFQ9
WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxVPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9
Ynx8YSwibm9uZSI9PT1tLmNzcyhhLCJkaXNwbGF5Iil8fCFtLmNvbnRhaW5zKGEub3duZXJEb2N1
bWVudCxhKX0sVj1tLmFjY2Vzcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9YS5s
ZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09bS50eXBlKGMpKXtlPSEwO2ZvcihoIGluIGMp
bS5hY2Nlc3MoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAsbS5p
c0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9YixiPWZ1
bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKG0oYSksYyl9KSksYikpZm9yKDtpPmg7aCsrKWIo
YVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNhbGwo
YSk6aT9iKGFbMF0sYyk6Zn0sVz0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2
YXIgYT15LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGM9
eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0YWJs
ZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIsay5s
ZWFkaW5nV2hpdGVzcGFjZT0zPT09Yi5maXJzdENoaWxkLm5vZGVUeXBlLGsudGJvZHk9IWIuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGsuaHRtbFNlcmlhbGl6ZT0hIWIuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsay5odG1sNUNsb25lPSI8Om5hdj48Lzpu
YXY+IiE9PXkuY3JlYXRlRWxlbWVudCgibmF2IikuY2xvbmVOb2RlKCEwKS5vdXRlckhUTUwsYS50
eXBlPSJjaGVja2JveCIsYS5jaGVja2VkPSEwLGMuYXBwZW5kQ2hpbGQoYSksay5hcHBlbmRDaGVj
a2VkPWEuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsay5ub0Ns
b25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGMuYXBw
ZW5kQ2hpbGQoYiksYi5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdyYWRpbycgY2hlY2tlZD0nY2hl
Y2tlZCcgbmFtZT0ndCcvPiIsay5jaGVja0Nsb25lPWIuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUo
ITApLmxhc3RDaGlsZC5jaGVja2VkLGsubm9DbG9uZUV2ZW50PSEwLGIuYXR0YWNoRXZlbnQmJihi
LmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe2subm9DbG9uZUV2ZW50PSExfSksYi5j
bG9uZU5vZGUoITApLmNsaWNrKCkpLG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBh
bmRvPSEwO3RyeXtkZWxldGUgYi50ZXN0fWNhdGNoKGQpe2suZGVsZXRlRXhwYW5kbz0hMX19fSgp
LGZ1bmN0aW9uKCl7dmFyIGIsYyxkPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3Vi
bWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwoa1tiKyJCdWJibGVzIl09YyBp
biBhKXx8KGQuc2V0QXR0cmlidXRlKGMsInQiKSxrW2IrIkJ1YmJsZXMiXT1kLmF0dHJpYnV0ZXNb
Y10uZXhwYW5kbz09PSExKTtkPW51bGx9KCk7dmFyIFg9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFy
ZWEpJC9pLFk9L15rZXkvLFo9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51KXxjbGljay8s
JD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXz0vXihbXi5dKikoPzpcLiguKyl8
KSQvO2Z1bmN0aW9uIGFiKCl7cmV0dXJuITB9ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMX1mdW5jdGlv
biBjYigpe3RyeXtyZXR1cm4geS5hY3RpdmVFbGVtZW50fWNhdGNoKGEpe319bS5ldmVudD17Z2xv
YmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG4sbyxwLHEs
cj1tLl9kYXRhKGEpO2lmKHIpe2MuaGFuZGxlciYmKGk9YyxjPWkuaGFuZGxlcixlPWkuc2VsZWN0
b3IpLGMuZ3VpZHx8KGMuZ3VpZD1tLmd1aWQrKyksKGc9ci5ldmVudHMpfHwoZz1yLmV2ZW50cz17
fSksKGs9ci5oYW5kbGUpfHwoaz1yLmhhbmRsZT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9mIG09
PT1LfHxhJiZtLmV2ZW50LnRyaWdnZXJlZD09PWEudHlwZT92b2lkIDA6bS5ldmVudC5kaXNwYXRj
aC5hcHBseShrLmVsZW0sYXJndW1lbnRzKX0say5lbGVtPWEpLGI9KGJ8fCIiKS5tYXRjaChFKXx8
WyIiXSxoPWIubGVuZ3RoO3doaWxlKGgtLSlmPV8uZXhlYyhiW2hdKXx8W10sbz1xPWZbMV0scD0o
ZlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihqPW0uZXZlbnQuc3BlY2lhbFtvXXx8e30s
bz0oZT9qLmRlbGVnYXRlVHlwZTpqLmJpbmRUeXBlKXx8byxqPW0uZXZlbnQuc3BlY2lhbFtvXXx8
e30sbD1tLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlkOmMu
Z3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZtLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0
LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxpKSwobj1nW29dKXx8KG49Z1tvXT1bXSxu
LmRlbGVnYXRlQ291bnQ9MCxqLnNldHVwJiZqLnNldHVwLmNhbGwoYSxkLHAsaykhPT0hMXx8KGEu
YWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobyxrLCExKTphLmF0dGFjaEV2ZW50
JiZhLmF0dGFjaEV2ZW50KCJvbiIrbyxrKSkpLGouYWRkJiYoai5hZGQuY2FsbChhLGwpLGwuaGFu
ZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9uLnNwbGljZShuLmRlbGVnYXRl
Q291bnQrKywwLGwpOm4ucHVzaChsKSxtLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsfX0scmVt
b3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0uaGFz
RGF0YShhKSYmbS5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChF
KXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPV8uZXhlYyhiW2pdKXx8W10sbz1xPWhb
MV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8pe2w9bS5ldmVudC5zcGVjaWFsW29d
fHx7fSxvPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxvLG49a1tvXXx8W10saD1oWzJd
JiZuZXcgUmVnRXhwKCIoXnxcXC4pIitwLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIp
LGk9Zj1uLmxlbmd0aDt3aGlsZShmLS0pZz1uW2ZdLCFlJiZxIT09Zy5vcmlnVHlwZXx8YyYmYy5n
dWlkIT09Zy5ndWlkfHxoJiYhaC50ZXN0KGcubmFtZXNwYWNlKXx8ZCYmZCE9PWcuc2VsZWN0b3Im
JigiKioiIT09ZHx8IWcuc2VsZWN0b3IpfHwobi5zcGxpY2UoZiwxKSxnLnNlbGVjdG9yJiZuLmRl
bGVnYXRlQ291bnQtLSxsLnJlbW92ZSYmbC5yZW1vdmUuY2FsbChhLGcpKTtpJiYhbi5sZW5ndGgm
JihsLnRlYXJkb3duJiZsLnRlYXJkb3duLmNhbGwoYSxwLHIuaGFuZGxlKSE9PSExfHxtLnJlbW92
ZUV2ZW50KGEsbyxyLmhhbmRsZSksZGVsZXRlIGtbb10pfWVsc2UgZm9yKG8gaW4gayltLmV2ZW50
LnJlbW92ZShhLG8rYltqXSxjLGQsITApO20uaXNFbXB0eU9iamVjdChrKSYmKGRlbGV0ZSByLmhh
bmRsZSxtLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixjLGQs
ZSl7dmFyIGYsZyxoLGksayxsLG4sbz1bZHx8eV0scD1qLmNhbGwoYiwidHlwZSIpP2IudHlwZTpi
LHE9ai5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYoaD1s
PWQ9ZHx8eSwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiEkLnRlc3QocCttLmV2ZW50
LnRyaWdnZXJlZCkmJihwLmluZGV4T2YoIi4iKT49MCYmKHE9cC5zcGxpdCgiLiIpLHA9cS5zaGlm
dCgpLHEuc29ydCgpKSxnPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbbS5leHBhbmRvXT9i
Om5ldyBtLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1lPzI6Myxi
Lm5hbWVzcGFjZT1xLmpvaW4oIi4iKSxiLm5hbWVzcGFjZV9yZT1iLm5hbWVzcGFjZT9uZXcgUmVn
RXhwKCIoXnxcXC4pIitxLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGwsYi5y
ZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZCksYz1udWxsPT1jP1tiXTptLm1ha2VB
cnJheShjLFtiXSksaz1tLmV2ZW50LnNwZWNpYWxbcF18fHt9LGV8fCFrLnRyaWdnZXJ8fGsudHJp
Z2dlci5hcHBseShkLGMpIT09ITEpKXtpZighZSYmIWsubm9CdWJibGUmJiFtLmlzV2luZG93KGQp
KXtmb3IoaT1rLmRlbGVnYXRlVHlwZXx8cCwkLnRlc3QoaStwKXx8KGg9aC5wYXJlbnROb2RlKTto
O2g9aC5wYXJlbnROb2RlKW8ucHVzaChoKSxsPWg7bD09PShkLm93bmVyRG9jdW1lbnR8fHkpJiZv
LnB1c2gobC5kZWZhdWx0Vmlld3x8bC5wYXJlbnRXaW5kb3d8fGEpfW49MDt3aGlsZSgoaD1vW24r
K10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1uPjE/aTprLmJpbmRUeXBlfHxw
LGY9KG0uX2RhdGEoaCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZtLl9kYXRhKGgsImhhbmRsZSIp
LGYmJmYuYXBwbHkoaCxjKSxmPWcmJmhbZ10sZiYmZi5hcHBseSYmbS5hY2NlcHREYXRhKGgpJiYo
Yi5yZXN1bHQ9Zi5hcHBseShoLGMpLGIucmVzdWx0PT09ITEmJmIucHJldmVudERlZmF1bHQoKSk7
aWYoYi50eXBlPXAsIWUmJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIWsuX2RlZmF1bHR8fGsu
X2RlZmF1bHQuYXBwbHkoby5wb3AoKSxjKT09PSExKSYmbS5hY2NlcHREYXRhKGQpJiZnJiZkW3Bd
JiYhbS5pc1dpbmRvdyhkKSl7bD1kW2ddLGwmJihkW2ddPW51bGwpLG0uZXZlbnQudHJpZ2dlcmVk
PXA7dHJ5e2RbcF0oKX1jYXRjaChyKXt9bS5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGwmJihkW2dd
PWwpfXJldHVybiBiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9bS5ldmVudC5maXgo
YSk7dmFyIGIsYyxlLGYsZyxoPVtdLGk9ZC5jYWxsKGFyZ3VtZW50cyksaj0obS5fZGF0YSh0aGlz
LCJldmVudHMiKXx8e30pW2EudHlwZV18fFtdLGs9bS5ldmVudC5zcGVjaWFsW2EudHlwZV18fHt9
O2lmKGlbMF09YSxhLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJlRGlz
cGF0Y2guY2FsbCh0aGlzLGEpIT09ITEpe2g9bS5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMsYSxq
KSxiPTA7d2hpbGUoKGY9aFtiKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7YS5jdXJy
ZW50VGFyZ2V0PWYuZWxlbSxnPTA7d2hpbGUoKGU9Zi5oYW5kbGVyc1tnKytdKSYmIWEuaXNJbW1l
ZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkoIWEubmFtZXNwYWNlX3JlfHxhLm5hbWVzcGFjZV9y
ZS50ZXN0KGUubmFtZXNwYWNlKSkmJihhLmhhbmRsZU9iaj1lLGEuZGF0YT1lLmRhdGEsYz0oKG0u
ZXZlbnQuc3BlY2lhbFtlLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8ZS5oYW5kbGVyKS5hcHBseShm
LmVsZW0saSksdm9pZCAwIT09YyYmKGEucmVzdWx0PWMpPT09ITEmJihhLnByZXZlbnREZWZhdWx0
KCksYS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0RGlz
cGF0Y2guY2FsbCh0aGlzLGEpLGEucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2YXIg
YyxkLGUsZixnPVtdLGg9Yi5kZWxlZ2F0ZUNvdW50LGk9YS50YXJnZXQ7aWYoaCYmaS5ub2RlVHlw
ZSYmKCFhLmJ1dHRvbnx8ImNsaWNrIiE9PWEudHlwZSkpZm9yKDtpIT10aGlzO2k9aS5wYXJlbnRO
b2RlfHx0aGlzKWlmKDE9PT1pLm5vZGVUeXBlJiYoaS5kaXNhYmxlZCE9PSEwfHwiY2xpY2siIT09
YS50eXBlKSl7Zm9yKGU9W10sZj0wO2g+ZjtmKyspZD1iW2ZdLGM9ZC5zZWxlY3RvcisiICIsdm9p
ZCAwPT09ZVtjXSYmKGVbY109ZC5uZWVkc0NvbnRleHQ/bShjLHRoaXMpLmluZGV4KGkpPj0wOm0u
ZmluZChjLHRoaXMsbnVsbCxbaV0pLmxlbmd0aCksZVtjXSYmZS5wdXNoKGQpO2UubGVuZ3RoJiZn
LnB1c2goe2VsZW06aSxoYW5kbGVyczplfSl9cmV0dXJuIGg8Yi5sZW5ndGgmJmcucHVzaCh7ZWxl
bTp0aGlzLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVttLmV4
cGFuZG9dKXJldHVybiBhO3ZhciBiLGMsZCxlPWEudHlwZSxmPWEsZz10aGlzLmZpeEhvb2tzW2Vd
O2d8fCh0aGlzLmZpeEhvb2tzW2VdPWc9Wi50ZXN0KGUpP3RoaXMubW91c2VIb29rczpZLnRlc3Qo
ZSk/dGhpcy5rZXlIb29rczp7fSksZD1nLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGcucHJvcHMp
OnRoaXMucHJvcHMsYT1uZXcgbS5FdmVudChmKSxiPWQubGVuZ3RoO3doaWxlKGItLSljPWRbYl0s
YVtjXT1mW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PWYuc3JjRWxlbWVudHx8eSksMz09
PWEudGFyZ2V0Lm5vZGVUeXBlJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRh
S2V5PSEhYS5tZXRhS2V5LGcuZmlsdGVyP2cuZmlsdGVyKGEsZik6YX0scHJvcHM6ImFsdEtleSBi
dWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0YUtl
eSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIuc3Bs
aXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5IGtl
eUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWEud2hp
Y2gmJihhLndoaWNoPW51bGwhPWIuY2hhckNvZGU/Yi5jaGFyQ29kZTpiLmtleUNvZGUpLGF9fSxt
b3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21FbGVt
ZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVtZW50
Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWIuYnV0dG9uLGc9
Yi5mcm9tRWxlbWVudDtyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9Yi5jbGllbnRYJiYoZD1h
LnRhcmdldC5vd25lckRvY3VtZW50fHx5LGU9ZC5kb2N1bWVudEVsZW1lbnQsYz1kLmJvZHksYS5w
YWdlWD1iLmNsaWVudFgrKGUmJmUuc2Nyb2xsTGVmdHx8YyYmYy5zY3JvbGxMZWZ0fHwwKS0oZSYm
ZS5jbGllbnRMZWZ0fHxjJiZjLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yi5jbGllbnRZKyhlJiZl
LnNjcm9sbFRvcHx8YyYmYy5zY3JvbGxUb3B8fDApLShlJiZlLmNsaWVudFRvcHx8YyYmYy5jbGll
bnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZnJiYoYS5yZWxhdGVkVGFyZ2V0PWc9PT1hLnRh
cmdldD9iLnRvRWxlbWVudDpnKSxhLndoaWNofHx2b2lkIDA9PT1mfHwoYS53aGljaD0xJmY/MToy
JmY/Mzo0JmY/MjowKSxhfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0cmln
Z2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PWNiKCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0aGlz
LmZvY3VzKCksITF9Y2F0Y2goYSl7fX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7dHJp
Z2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09Y2IoKSYmdGhpcy5ibHVyPyh0aGlzLmJsdXIo
KSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6ZnVu
Y3Rpb24oKXtyZXR1cm4gbS5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpJiYiY2hlY2tib3giPT09dGhp
cy50eXBlJiZ0aGlzLmNsaWNrPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9hZDp7
cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFsRXZl
bnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19LHNpbXVsYXRlOmZ1
bmN0aW9uKGEsYixjLGQpe3ZhciBlPW0uZXh0ZW5kKG5ldyBtLkV2ZW50LGMse3R5cGU6YSxpc1Np
bXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9tLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIp
Om0uZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJl
dmVudERlZmF1bHQoKX19LG0ucmVtb3ZlRXZlbnQ9eS5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0
aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5lcihi
LGMsITEpfTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Im9uIitiO2EuZGV0YWNoRXZlbnQmJih0eXBl
b2YgYVtkXT09PUsmJihhW2RdPW51bGwpLGEuZGV0YWNoRXZlbnQoZCxjKSl9LG0uRXZlbnQ9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG0uRXZlbnQ/KGEmJmEudHlwZT8odGhp
cy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRl
ZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmYS5yZXR1
cm5WYWx1ZT09PSExP2FiOmJiKTp0aGlzLnR5cGU9YSxiJiZtLmV4dGVuZCh0aGlzLGIpLHRoaXMu
dGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxtLm5vdygpLHZvaWQodGhpc1ttLmV4cGFuZG9dPSEw
KSk6bmV3IG0uRXZlbnQoYSxiKX0sbS5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZlbnRl
ZDpiYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpiYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBl
ZDpiYixwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0
aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hYixhJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnRE
ZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3Zh
ciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWFiLGEmJihh
LnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9
LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxF
dmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiLGEmJmEuc3RvcEltbWVk
aWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3RvcFBy
b3BhZ2F0aW9uKCl9fSxtLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2ZToi
bW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9pbnRl
cm91dCJ9LGZ1bmN0aW9uKGEsYil7bS5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6Yixi
aW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJn
ZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbS5jb250YWlucyhkLGUpKSYmKGEu
dHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9
YiksY319fSksay5zdWJtaXRCdWJibGVzfHwobS5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6
ZnVuY3Rpb24oKXtyZXR1cm4gbS5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBtLmV2ZW50
LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEpe3Zh
ciBiPWEudGFyZ2V0LGM9bS5ub2RlTmFtZShiLCJpbnB1dCIpfHxtLm5vZGVOYW1lKGIsImJ1dHRv
biIpP2IuZm9ybTp2b2lkIDA7YyYmIW0uX2RhdGEoYywic3VibWl0QnViYmxlcyIpJiYobS5ldmVu
dC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9
KSxtLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9u
KGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVu
dE5vZGUmJiFhLmlzVHJpZ2dlciYmbS5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVu
dE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRoaXMs
ImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksay5jaGFu
Z2VCdWJibGVzfHwobS5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1
cm4gWC50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlv
Ij09PXRoaXMudHlwZSkmJihtLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdl
IixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYo
dGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2Ui
LGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVz
dF9jaGFuZ2VkPSExKSxtLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEp
OnZvaWQgbS5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24o
YSl7dmFyIGI9YS50YXJnZXQ7WC50ZXN0KGIubm9kZU5hbWUpJiYhbS5fZGF0YShiLCJjaGFuZ2VC
dWJibGVzIikmJihtLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7IXRo
aXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG0uZXZlbnQuc2ltdWxh
dGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksbS5fZGF0YShiLCJjaGFuZ2VCdWJi
bGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4gdGhp
cyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09Yi50eXBlJiYiY2hl
Y2tib3giIT09Yi50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMp
OnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbS5ldmVudC5yZW1vdmUodGhpcywi
Ll9jaGFuZ2UiKSwhWC50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGsuZm9jdXNpbkJ1YmJsZXN8fG0u
ZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIg
Yz1mdW5jdGlvbihhKXttLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsbS5ldmVudC5maXgoYSks
ITApfTttLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25l
ckRvY3VtZW50fHx0aGlzLGU9bS5fZGF0YShkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihhLGMs
ITApLG0uX2RhdGEoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10aGlz
Lm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYiktMTtlP20uX2RhdGEoZCxiLGUpOihk
LnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxtLl9yZW1vdmVEYXRhKGQsYikpfX19KSxtLmZu
LmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBl
b2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZiBpbiBhKXRo
aXMub24oZixiLGMsYVtmXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIs
Yz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKToo
ZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWJiO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0
dXJuIDE9PT1lJiYoZz1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG0oKS5vZmYoYSksZy5hcHBseSh0
aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9bS5ndWlkKyspKSx0aGlzLmVh
Y2goZnVuY3Rpb24oKXttLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihh
LGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMpe3Zh
ciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5oYW5k
bGVPYmosbShhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsiLiIr
ZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigib2Jq
ZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlz
fXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09
PSExJiYoYz1iYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5ldmVudC5yZW1vdmUodGhpcyxhLGMs
Yil9KX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtt
LmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7
dmFyIGM9dGhpc1swXTtyZXR1cm4gYz9tLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApOnZvaWQgMH19
KTtmdW5jdGlvbiBkYihhKXt2YXIgYj1lYi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZy
YWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxlbWVu
dChiLnBvcCgpKTtyZXR1cm4gY312YXIgZWI9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xiZGl8
Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVh
ZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5
fHRpbWV8dmlkZW8iLGZiPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csZ2I9bmV3IFJlZ0V4
cCgiPCg/OiIrZWIrIilbXFxzLz5dIiwiaSIpLGhiPS9eXHMrLyxpYj0vPCg/IWFyZWF8YnJ8Y29s
fGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dp
LGpiPS88KFtcdzpdKykvLGtiPS88dGJvZHkvaSxsYj0vPHwmIz9cdys7LyxtYj0vPCg/OnNjcmlw
dHxzdHlsZXxsaW5rKS9pLG5iPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLG9i
PS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxwYj0vXnRydWVcLyguKikvLHFiPS9eXHMqPCEo
PzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxyYj17b3B0aW9uOlsxLCI8c2VsZWN0
IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+
IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8b2Jq
ZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwi
PHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5
PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxl
Pjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6ay5odG1sU2Vy
aWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LHNiPWRiKHkpLHRiPXNiLmFw
cGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpO3JiLm9wdGdyb3VwPXJiLm9wdGlvbixy
Yi50Ym9keT1yYi50Zm9vdD1yYi5jb2xncm91cD1yYi5jYXB0aW9uPXJiLnRoZWFkLHJiLnRoPXJi
LnRkO2Z1bmN0aW9uIHViKGEsYil7dmFyIGMsZCxlPTAsZj10eXBlb2YgYS5nZXRFbGVtZW50c0J5
VGFnTmFtZSE9PUs/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOnR5cGVvZiBhLnF1ZXJ5
U2VsZWN0b3JBbGwhPT1LP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilm
b3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG0ubm9kZU5h
bWUoZCxiKT9mLnB1c2goZCk6bS5tZXJnZShmLHViKGQsYikpO3JldHVybiB2b2lkIDA9PT1ifHxi
JiZtLm5vZGVOYW1lKGEsYik/bS5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiB2YihhKXtXLnRlc3Qo
YS50eXBlKSYmKGEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkKX1mdW5jdGlvbiB3YihhLGIpe3Jl
dHVybiBtLm5vZGVOYW1lKGEsInRhYmxlIikmJm0ubm9kZU5hbWUoMTEhPT1iLm5vZGVUeXBlP2I6
Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEu
YXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVu
Y3Rpb24geGIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PW0uZmluZC5hdHRyKGEsInR5cGUiKSkr
Ii8iK2EudHlwZSxhfWZ1bmN0aW9uIHliKGEpe3ZhciBiPXBiLmV4ZWMoYS50eXBlKTtyZXR1cm4g
Yj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gemIoYSxi
KXtmb3IodmFyIGMsZD0wO251bGwhPShjPWFbZF0pO2QrKyltLl9kYXRhKGMsImdsb2JhbEV2YWwi
LCFifHxtLl9kYXRhKGJbZF0sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gQWIoYSxiKXtpZigxPT09
Yi5ub2RlVHlwZSYmbS5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZj1tLl9kYXRhKGEpLGc9bS5fZGF0
YShiLGYpLGg9Zi5ldmVudHM7aWYoaCl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2Zvcihj
IGluIGgpZm9yKGQ9MCxlPWhbY10ubGVuZ3RoO2U+ZDtkKyspbS5ldmVudC5hZGQoYixjLGhbY11b
ZF0pfWcuZGF0YSYmKGcuZGF0YT1tLmV4dGVuZCh7fSxnLmRhdGEpKX19ZnVuY3Rpb24gQmIoYSxi
KXt2YXIgYyxkLGU7aWYoMT09PWIubm9kZVR5cGUpe2lmKGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpLCFrLm5vQ2xvbmVFdmVudCYmYlttLmV4cGFuZG9dKXtlPW0uX2RhdGEoYik7Zm9yKGQgaW4g
ZS5ldmVudHMpbS5yZW1vdmVFdmVudChiLGQsZS5oYW5kbGUpO2IucmVtb3ZlQXR0cmlidXRlKG0u
ZXhwYW5kbyl9InNjcmlwdCI9PT1jJiZiLnRleHQhPT1hLnRleHQ/KHhiKGIpLnRleHQ9YS50ZXh0
LHliKGIpKToib2JqZWN0Ij09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0ZXJI
VE1MKSxrLmh0bWw1Q2xvbmUmJmEuaW5uZXJIVE1MJiYhbS50cmltKGIuaW5uZXJIVE1MKSYmKGIu
aW5uZXJIVE1MPWEuaW5uZXJIVE1MKSk6ImlucHV0Ij09PWMmJlcudGVzdChhLnR5cGUpPyhiLmRl
ZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQsYi52YWx1ZSE9PWEudmFsdWUmJihiLnZh
bHVlPWEudmFsdWUpKToib3B0aW9uIj09PWM/Yi5kZWZhdWx0U2VsZWN0ZWQ9Yi5zZWxlY3RlZD1h
LmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVmYXVs
dFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19bS5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixjKXt2
YXIgZCxlLGYsZyxoLGk9bS5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYoay5odG1sNUNs
b25lfHxtLmlzWE1MRG9jKGEpfHwhZ2IudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2Y9YS5jbG9u
ZU5vZGUoITApOih0Yi5pbm5lckhUTUw9YS5vdXRlckhUTUwsdGIucmVtb3ZlQ2hpbGQoZj10Yi5m
aXJzdENoaWxkKSksIShrLm5vQ2xvbmVFdmVudCYmay5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9k
ZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bS5pc1hNTERvYyhhKSkpZm9yKGQ9dWIoZiksaD11Yihh
KSxnPTA7bnVsbCE9KGU9aFtnXSk7KytnKWRbZ10mJkJiKGUsZFtnXSk7aWYoYilpZihjKWZvciho
PWh8fHViKGEpLGQ9ZHx8dWIoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylBYihlLGRbZ10pO2Vs
c2UgQWIoYSxmKTtyZXR1cm4gZD11YihmLCJzY3JpcHQiKSxkLmxlbmd0aD4wJiZ6YihkLCFpJiZ1
YihhLCJzY3JpcHQiKSksZD1oPWU9bnVsbCxmfSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEsYixj
LGQpe2Zvcih2YXIgZSxmLGcsaCxpLGosbCxuPWEubGVuZ3RoLG89ZGIoYikscD1bXSxxPTA7bj5x
O3ErKylpZihmPWFbcV0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT1tLnR5cGUoZikpbS5tZXJnZShw
LGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobGIudGVzdChmKSl7aD1ofHxvLmFwcGVuZENoaWxk
KGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGk9KGpiLmV4ZWMoZil8fFsiIiwiIl0pWzFdLnRvTG93
ZXJDYXNlKCksbD1yYltpXXx8cmIuX2RlZmF1bHQsaC5pbm5lckhUTUw9bFsxXStmLnJlcGxhY2Uo
aWIsIjwkMT48LyQyPiIpK2xbMl0sZT1sWzBdO3doaWxlKGUtLSloPWgubGFzdENoaWxkO2lmKCFr
LmxlYWRpbmdXaGl0ZXNwYWNlJiZoYi50ZXN0KGYpJiZwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZSho
Yi5leGVjKGYpWzBdKSksIWsudGJvZHkpe2Y9InRhYmxlIiE9PWl8fGtiLnRlc3QoZik/Ijx0YWJs
ZT4iIT09bFsxXXx8a2IudGVzdChmKT8wOmg6aC5maXJzdENoaWxkLGU9ZiYmZi5jaGlsZE5vZGVz
Lmxlbmd0aDt3aGlsZShlLS0pbS5ub2RlTmFtZShqPWYuY2hpbGROb2Rlc1tlXSwidGJvZHkiKSYm
IWouY2hpbGROb2Rlcy5sZW5ndGgmJmYucmVtb3ZlQ2hpbGQoail9bS5tZXJnZShwLGguY2hpbGRO
b2RlcyksaC50ZXh0Q29udGVudD0iIjt3aGlsZShoLmZpcnN0Q2hpbGQpaC5yZW1vdmVDaGlsZCho
LmZpcnN0Q2hpbGQpO2g9by5sYXN0Q2hpbGR9ZWxzZSBwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShm
KSk7aCYmby5yZW1vdmVDaGlsZChoKSxrLmFwcGVuZENoZWNrZWR8fG0uZ3JlcCh1YihwLCJpbnB1
dCIpLHZiKSxxPTA7d2hpbGUoZj1wW3ErK10paWYoKCFkfHwtMT09PW0uaW5BcnJheShmLGQpKSYm
KGc9bS5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksaD11YihvLmFwcGVuZENoaWxkKGYpLCJz
Y3JpcHQiKSxnJiZ6YihoKSxjKSl7ZT0wO3doaWxlKGY9aFtlKytdKW9iLnRlc3QoZi50eXBlfHwi
IikmJmMucHVzaChmKX1yZXR1cm4gaD1udWxsLG99LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zv
cih2YXIgZCxlLGYsZyxoPTAsaT1tLmV4cGFuZG8saj1tLmNhY2hlLGw9ay5kZWxldGVFeHBhbmRv
LG49bS5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8bS5hY2NlcHREYXRh
KGQpKSYmKGY9ZFtpXSxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50cylu
W2VdP20uZXZlbnQucmVtb3ZlKGQsZSk6bS5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pbZl0m
JihkZWxldGUgaltmXSxsP2RlbGV0ZSBkW2ldOnR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZSE9PUs/
ZC5yZW1vdmVBdHRyaWJ1dGUoaSk6ZFtpXT1udWxsLGMucHVzaChmKSl9fX0pLG0uZm4uZXh0ZW5k
KHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZvaWQg
MD09PWE/bS50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNbMF0u
b3duZXJEb2N1bWVudHx8eSkuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRzLmxl
bmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxm
dW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09
dGhpcy5ub2RlVHlwZSl7dmFyIGI9d2IodGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVw
ZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEp
e2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5vZGVU
eXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19KX0s
YmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9u
KGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMp
fSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0
aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRo
aXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPWE/bS5m
aWx0ZXIoYSx0aGlzKTp0aGlzLGU9MDtudWxsIT0oYz1kW2VdKTtlKyspYnx8MSE9PWMubm9kZVR5
cGV8fG0uY2xlYW5EYXRhKHViKGMpKSxjLnBhcmVudE5vZGUmJihiJiZtLmNvbnRhaW5zKGMub3du
ZXJEb2N1bWVudCxjKSYmemIodWIoYywic2NyaXB0IikpLGMucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChjKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0o
YT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZtLmNsZWFuRGF0YSh1YihhLCExKSk7d2hp
bGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMmJm0u
bm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlzfSxj
bG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpiLHRo
aXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG0uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVuY3Rp
b24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAsZD10
aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09Yi5ub2RlVHlwZT9iLmlubmVySFRN
TC5yZXBsYWNlKGZiLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fG1iLnRlc3Qo
YSl8fCFrLmh0bWxTZXJpYWxpemUmJmdiLnRlc3QoYSl8fCFrLmxlYWRpbmdXaGl0ZXNwYWNlJiZo
Yi50ZXN0KGEpfHxyYlsoamIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pKXth
PWEucmVwbGFjZShpYiwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9
LDE9PT1iLm5vZGVUeXBlJiYobS5jbGVhbkRhdGEodWIoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9
MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVudHMu
bGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF07cmV0dXJu
IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGIpe2E9dGhpcy5wYXJlbnROb2RlLG0u
Y2xlYW5EYXRhKHViKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEubGVu
Z3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhKXty
ZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1lLmFwcGx5
KFtdLGEpO3ZhciBjLGQsZixnLGgsaSxqPTAsbD10aGlzLmxlbmd0aCxuPXRoaXMsbz1sLTEscD1h
WzBdLHE9bS5pc0Z1bmN0aW9uKHApO2lmKHF8fGw+MSYmInN0cmluZyI9PXR5cGVvZiBwJiYhay5j
aGVja0Nsb25lJiZuYi50ZXN0KHApKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9
bi5lcShjKTtxJiYoYVswXT1wLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIp
fSk7aWYobCYmKGk9bS5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRo
aXMpLGM9aS5maXJzdENoaWxkLDE9PT1pLmNoaWxkTm9kZXMubGVuZ3RoJiYoaT1jKSxjKSl7Zm9y
KGc9bS5tYXAodWIoaSwic2NyaXB0IikseGIpLGY9Zy5sZW5ndGg7bD5qO2orKylkPWksaiE9PW8m
JihkPW0uY2xvbmUoZCwhMCwhMCksZiYmbS5tZXJnZShnLHViKGQsInNjcmlwdCIpKSksYi5jYWxs
KHRoaXNbal0sZCxqKTtpZihmKWZvcihoPWdbZy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxtLm1h
cChnLHliKSxqPTA7Zj5qO2orKylkPWdbal0sb2IudGVzdChkLnR5cGV8fCIiKSYmIW0uX2RhdGEo
ZCwiZ2xvYmFsRXZhbCIpJiZtLmNvbnRhaW5zKGgsZCkmJihkLnNyYz9tLl9ldmFsVXJsJiZtLl9l
dmFsVXJsKGQuc3JjKTptLmdsb2JhbEV2YWwoKGQudGV4dHx8ZC50ZXh0Q29udGVudHx8ZC5pbm5l
ckhUTUx8fCIiKS5yZXBsYWNlKHFiLCIiKSkpO2k9Yz1udWxsfXJldHVybiB0aGlzfX0pLG0uZWFj
aCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJl
Zm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0
aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZz1tKGEpLGg9
Zy5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbShnW2RdKVti
XShjKSxmLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBD
YixEYj17fTtmdW5jdGlvbiBFYihiLGMpe3ZhciBkLGU9bShjLmNyZWF0ZUVsZW1lbnQoYikpLmFw
cGVuZFRvKGMuYm9keSksZj1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlJiYoZD1hLmdldERlZmF1
bHRDb21wdXRlZFN0eWxlKGVbMF0pKT9kLmRpc3BsYXk6bS5jc3MoZVswXSwiZGlzcGxheSIpO3Jl
dHVybiBlLmRldGFjaCgpLGZ9ZnVuY3Rpb24gRmIoYSl7dmFyIGI9eSxjPURiW2FdO3JldHVybiBj
fHwoYz1FYihhLGIpLCJub25lIiE9PWMmJmN8fChDYj0oQ2J8fG0oIjxpZnJhbWUgZnJhbWVib3Jk
ZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1l
bnQpLGI9KENiWzBdLmNvbnRlbnRXaW5kb3d8fENiWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1l
bnQsYi53cml0ZSgpLGIuY2xvc2UoKSxjPUViKGEsYiksQ2IuZGV0YWNoKCkpLERiW2FdPWMpLGN9
IWZ1bmN0aW9uKCl7dmFyIGE7ay5zaHJpbmtXcmFwQmxvY2tzPWZ1bmN0aW9uKCl7aWYobnVsbCE9
YSlyZXR1cm4gYTthPSExO3ZhciBiLGMsZDtyZXR1cm4gYz15LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJib2R5IilbMF0sYyYmYy5zdHlsZT8oYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5jcmVh
dGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2JvcmRl
cjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxkKGQp
LmFwcGVuZENoaWxkKGIpLHR5cGVvZiBiLnN0eWxlLnpvb20hPT1LJiYoYi5zdHlsZS5jc3NUZXh0
PSItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQt
Ym94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6
MDtwYWRkaW5nOjFweDt3aWR0aDoxcHg7em9vbToxIixiLmFwcGVuZENoaWxkKHkuY3JlYXRlRWxl
bWVudCgiZGl2IikpLnN0eWxlLndpZHRoPSI1cHgiLGE9MyE9PWIub2Zmc2V0V2lkdGgpLGMucmVt
b3ZlQ2hpbGQoZCksYSk6dm9pZCAwfX0oKTt2YXIgR2I9L15tYXJnaW4vLEhiPW5ldyBSZWdFeHAo
Il4oIitTKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksSWIsSmIsS2I9L14odG9wfHJpZ2h0fGJvdHRv
bXxsZWZ0KSQvO2EuZ2V0Q29tcHV0ZWRTdHlsZT8oSWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEub3du
ZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl9LEpiPWZ1bmN0
aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8SWIoYSksZz1jP2Mu
Z2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXTp2b2lkIDAsYyYmKCIiIT09Z3x8bS5jb250YWlucyhh
Lm93bmVyRG9jdW1lbnQsYSl8fChnPW0uc3R5bGUoYSxiKSksSGIudGVzdChnKSYmR2IudGVzdChi
KSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5tYXhX
aWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhXaWR0
aD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ9KTp5LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUm
JihJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LEpiPWZ1bmN0aW9uKGEsYixj
KXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8SWIoYSksZz1jP2NbYl06dm9pZCAw
LG51bGw9PWcmJmgmJmhbYl0mJihnPWhbYl0pLEhiLnRlc3QoZykmJiFLYi50ZXN0KGIpJiYoZD1o
LmxlZnQsZT1hLnJ1bnRpbWVTdHlsZSxmPWUmJmUubGVmdCxmJiYoZS5sZWZ0PWEuY3VycmVudFN0
eWxlLmxlZnQpLGgubGVmdD0iZm9udFNpemUiPT09Yj8iMWVtIjpnLGc9aC5waXhlbExlZnQrInB4
IixoLmxlZnQ9ZCxmJiYoZS5sZWZ0PWYpKSx2b2lkIDA9PT1nP2c6ZysiInx8ImF1dG8ifSk7ZnVu
Y3Rpb24gTGIoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGM9YSgpO2lmKG51bGwhPWMp
cmV0dXJuIGM/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMsYXJn
dW1lbnRzKX19fSFmdW5jdGlvbigpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKGI9eS5jcmVhdGVFbGVt
ZW50KCJkaXYiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0n
L2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImEiKVswXSxjPWQmJmQuc3R5bGUpe2MuY3NzVGV4dD0iZmxvYXQ6bGVmdDtvcGFjaXR5Oi41
IixrLm9wYWNpdHk9IjAuNSI9PT1jLm9wYWNpdHksay5jc3NGbG9hdD0hIWMuY3NzRmxvYXQsYi5z
dHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGIuY2xvbmVOb2RlKCEwKS5zdHlsZS5i
YWNrZ3JvdW5kQ2xpcD0iIixrLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Yi5zdHls
ZS5iYWNrZ3JvdW5kQ2xpcCxrLmJveFNpemluZz0iIj09PWMuYm94U2l6aW5nfHwiIj09PWMuTW96
Qm94U2l6aW5nfHwiIj09PWMuV2Via2l0Qm94U2l6aW5nLG0uZXh0ZW5kKGsse3JlbGlhYmxlSGlk
ZGVuT2Zmc2V0czpmdW5jdGlvbigpe3JldHVybiBudWxsPT1nJiZpKCksZ30sYm94U2l6aW5nUmVs
aWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZiYmaSgpLGZ9LHBpeGVsUG9zaXRpb246ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbD09ZSYmaSgpLGV9LHJlbGlhYmxlTWFyZ2luUmlnaHQ6ZnVuY3Rp
b24oKXtyZXR1cm4gbnVsbD09aCYmaSgpLGh9fSk7ZnVuY3Rpb24gaSgpe3ZhciBiLGMsZCxpO2M9
eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3JlYXRl
RWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4dD0i
cG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0Oi05
OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksYi5zdHlsZS5jc3NUZXh0PSIt
d2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDti
b3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDoxJTti
b3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjRweDtwb3NpdGlvbjphYnNvbHV0ZSIsZT1mPSEx
LGg9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYoZT0iMSUiIT09KGEuZ2V0Q29tcHV0ZWRTdHlsZShi
LG51bGwpfHx7fSkudG9wLGY9IjRweCI9PT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8fHt3
aWR0aDoiNHB4In0pLndpZHRoLGk9Yi5hcHBlbmRDaGlsZCh5LmNyZWF0ZUVsZW1lbnQoImRpdiIp
KSxpLnN0eWxlLmNzc1RleHQ9Yi5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6Y29u
dGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVudC1i
b3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLGkuc3R5bGUubWFy
Z2luUmlnaHQ9aS5zdHlsZS53aWR0aD0iMCIsYi5zdHlsZS53aWR0aD0iMXB4IixoPSFwYXJzZUZs
b2F0KChhLmdldENvbXB1dGVkU3R5bGUoaSxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSksYi5pbm5l
ckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9Yi5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjowO2Jv
cmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0LGcm
JihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9PT1p
WzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rpb24o
YSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5bGVb
Zl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07cmV0
dXJuIGV9O3ZhciBNYj0vYWxwaGFcKFteKV0qXCkvaSxOYj0vb3BhY2l0eVxzKj1ccyooW14pXSop
LyxPYj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGI9bmV3IFJlZ0V4cCgiXigiK1MrIiko
LiopJCIsImkiKSxRYj1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmI9e3Bvc2l0
aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNiPXts
ZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYj1bIldlYmtpdCIsIk8iLCJNb3oi
LCJtcyJdO2Z1bmN0aW9uIFViKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0
KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYi5sZW5ndGg7d2hpbGUoZS0tKWlm
KGI9VGJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmIoYSxiKXtmb3Io
dmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYmKGZb
Z109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8Im5v
bmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUoZCkm
JihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmIoZC5ub2RlTmFtZSkpKSk6KGU9VShkKSwo
YyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzptLmNzcyhkLCJk
aXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09
ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1i
P2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdiKGEsYixjKXt2YXIgZD1QYi5l
eGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1
bmN0aW9uIFhiKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIp
PzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNzcyhh
LGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmciK1Rb
Zl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgi
LCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09YyYm
KGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVuY3Rp
b24gWWIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9mZnNl
dEhlaWdodCxmPUliKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEsImJv
eFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYihhLGIsZiksKDA+ZXx8bnVs
bD09ZSkmJihlPWEuc3R5bGVbYl0pLEhiLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hTaXpp
bmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVybiBl
K1hiKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7Y3Nz
SG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUpiKGEsIm9wYWNp
dHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAsZmls
bE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxpbmVI
ZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6
ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHls
ZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjgh
PT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEuc3R5
bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYihpLGgpKSxnPW0uY3NzSG9v
a3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lk
IDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYm
JihlPVFiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxiKSks
Zj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVyW2hd
fHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigiYmFj
a2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0oYz1n
LnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYixj
LGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18fCht
LmNzc1Byb3BzW2hdPVViKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29rc1to
XSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUpiKGEsYixk
KSksIm5vcm1hbCI9PT1mJiZiIGluIFNiJiYoZj1TYltiXSksIiI9PT1jfHxjPyhlPXBhcnNlRmxv
YXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVpZ2h0
Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihhLGMs
ZCl7cmV0dXJuIGM/T2IudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRXaWR0
aD9tLnN3YXAoYSxSYixmdW5jdGlvbigpe3JldHVybiBZYihhLGIsZCl9KTpZYihhLGIsZCk6dm9p
ZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJkliKGEpO3JldHVybiBXYihhLGMsZD9Y
YihhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5nIiwh
MSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rp
b24oYSxiKXtyZXR1cm4gTmIudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUu
ZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkrIiI6
Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHls
ZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYmZC5m
aWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRyaW0o
Zi5yZXBsYWNlKE1iLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1dGUo
ImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1iLnRlc3QoZik/Zi5y
ZXBsYWNlKE1iLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGIoay5yZWxp
YWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bS5zd2FwKGEse2Rpc3BsYXk6
ImlubGluZS1ibG9jayJ9LEpiLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2goe21h
cmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3NzSG9v
a3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5nIj09
dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZbZC0y
XXx8ZlswXTtyZXR1cm4gZX19LEdiLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdiKX0p
LG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEs
YixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWIoYSksZT1iLmxl
bmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVybiB2
b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVuZ3Ro
PjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZiKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9uKCl7
cmV0dXJuIFZiKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10eXBl
b2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1UodGhp
cyk/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYihhLGIsYyxk
LGUpe3JldHVybiBuZXcgWmIucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1tLlR3ZWVuPVpiLFpi
LnByb3RvdHlwZT17Y29uc3RydWN0b3I6WmIsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7dGhp
cy5lbGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8InN3aW5nIix0aGlzLm9wdGlvbnM9
Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9Znx8
KG0uY3NzTnVtYmVyW2NdPyIiOiJweCIpCi19LGN1cjpmdW5jdGlvbigpe3ZhciBhPVpiLnByb3BI
b29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpaYi5wcm9wSG9va3Mu
X2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1aYi5wcm9wSG9va3Nb
dGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bS5lYXNp
bmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9u
cy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0
LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlz
Lm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpaYi5wcm9wSG9va3MuX2RlZmF1bHQuc2V0
KHRoaXMpLHRoaXN9fSxaYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9WmIucHJvdG90eXBlLFpi
LnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVsbD09
YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2EucHJvcF0/
KGI9bS5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVthLnBy
b3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bS5meC5zdGVwW2EucHJvcF0/bS5meC5zdGVwW2EucHJvcF0o
YSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW20uY3NzUHJvcHNbYS5wcm9wXV18
fG0uY3NzSG9va3NbYS5wcm9wXSk/bS5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6
YS5lbGVtW2EucHJvcF09YS5ub3d9fX0sWmIucHJvcEhvb2tzLnNjcm9sbFRvcD1aYi5wcm9wSG9v
a3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBh
cmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxtLmVhc2luZz17bGluZWFyOmZ1bmN0
aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1h
dGguUEkpLzJ9fSxtLmZ4PVpiLnByb3RvdHlwZS5pbml0LG0uZnguc3RlcD17fTt2YXIgJGIsX2Is
YWM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGJjPW5ldyBSZWdFeHAoIl4oPzooWystXSk9fCko
IitTKyIpKFthLXolXSopJCIsImkiKSxjYz0vcXVldWVIb29rcyQvLGRjPVtpY10sZWM9eyIqIjpb
ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigpLGU9YmMu
ZXhlYyhiKSxmPWUmJmVbM118fChtLmNzc051bWJlclthXT8iIjoicHgiKSxnPShtLmNzc051bWJl
clthXXx8InB4IiE9PWYmJitkKSYmYmMuZXhlYyhtLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIwO2lm
KGcmJmdbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41IixnLz1o
LG0uc3R5bGUoYy5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgmJi0t
aSl9cmV0dXJuIGUmJihnPWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/Zyso
ZVsxXSsxKSplWzJdOitlWzJdKSxjfV19O2Z1bmN0aW9uIGZjKCl7cmV0dXJuIHNldFRpbWVvdXQo
ZnVuY3Rpb24oKXskYj12b2lkIDB9KSwkYj1tLm5vdygpfWZ1bmN0aW9uIGdjKGEsYil7dmFyIGMs
ZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VFtlXSxkWyJtYXJnaW4i
K2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxkfWZ1
bmN0aW9uIGhjKGEsYixjKXtmb3IodmFyIGQsZT0oZWNbYl18fFtdKS5jb25jYXQoZWNbIioiXSks
Zj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9ZnVu
Y3Rpb24gaWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGwsbj10aGlzLG89e30scD1hLnN0eWxl
LHE9YS5ub2RlVHlwZSYmVShhKSxyPW0uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bS5f
cXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVt
cHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1
ZXVlZCsrLG4uYWx3YXlzKGZ1bmN0aW9uKCl7bi5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVk
LS0sbS5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2Rl
VHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxv
dyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1tLmNzcyhhLCJkaXNwbGF5IiksbD0ibm9uZSI9
PT1qP20uX2RhdGEoYSwib2xkZGlzcGxheSIpfHxGYihhLm5vZGVOYW1lKTpqLCJpbmxpbmUiPT09
bCYmIm5vbmUiPT09bS5jc3MoYSwiZmxvYXQiKSYmKGsuaW5saW5lQmxvY2tOZWVkc0xheW91dCYm
ImlubGluZSIhPT1GYihhLm5vZGVOYW1lKT9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9j
ayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixrLnNocmlua1dyYXBCbG9ja3Mo
KXx8bi5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVyZmxv
d1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIp
aWYoZT1iW2RdLGFjLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9
PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29u
dGludWU7cT0hMH1vW2RdPXImJnJbZF18fG0uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lmKG0u
aXNFbXB0eU9iamVjdChvKSkiaW5saW5lIj09PSgibm9uZSI9PT1qP0ZiKGEubm9kZU5hbWUpOmop
JiYocC5kaXNwbGF5PWopO2Vsc2V7cj8iaGlkZGVuImluIHImJihxPXIuaGlkZGVuKTpyPW0uX2Rh
dGEoYSwiZnhzaG93Iix7fSksZiYmKHIuaGlkZGVuPSFxKSxxP20oYSkuc2hvdygpOm4uZG9uZShm
dW5jdGlvbigpe20oYSkuaGlkZSgpfSksbi5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7bS5fcmVtb3Zl
RGF0YShhLCJmeHNob3ciKTtmb3IoYiBpbiBvKW0uc3R5bGUoYSxiLG9bYl0pfSk7Zm9yKGQgaW4g
bylnPWhjKHE/cltkXTowLGQsbiksZCBpbiByfHwocltkXT1nLnN0YXJ0LHEmJihnLmVuZD1nLnN0
YXJ0LGcuc3RhcnQ9IndpZHRoIj09PWR8fCJoZWlnaHQiPT09ZD8xOjApKX19ZnVuY3Rpb24gamMo
YSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1tLmNhbWVsQ2FzZShjKSxlPWJbZF0s
Zj1hW2NdLG0uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2RdPWYs
ZGVsZXRlIGFbY10pLGc9bS5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBhbmQo
ZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1lbHNl
IGJbZF09ZX1mdW5jdGlvbiBrYyhhLGIsYyl7dmFyIGQsZSxmPTAsZz1kYy5sZW5ndGgsaD1tLkRl
ZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9ZnVuY3Rpb24oKXtp
ZihlKXJldHVybiExO2Zvcih2YXIgYj0kYnx8ZmMoKSxjPU1hdGgubWF4KDAsai5zdGFydFRpbWUr
ai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1qLnR3ZWVucy5sZW5n
dGg7aT5nO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtqLGYs
Y10pLDE+ZiYmaT9jOihoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5wcm9taXNlKHtlbGVt
OmEscHJvcHM6bS5leHRlbmQoe30sYiksb3B0czptLmV4dGVuZCghMCx7c3BlY2lhbEVhc2luZzp7
fX0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1lOiRi
fHxmYygpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0aW9u
KGIsYyl7dmFyIGQ9bS5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdbYl18
fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rpb24o
Yil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3IoZT0h
MDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEsW2os
Yl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoamMoayxqLm9w
dHMuc3BlY2lhbEVhc2luZyk7Zz5mO2YrKylpZihkPWRjW2ZdLmNhbGwoaixhLGssai5vcHRzKSly
ZXR1cm4gZDtyZXR1cm4gbS5tYXAoayxoYyxqKSxtLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0KSYm
ai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxtLmZ4LnRpbWVyKG0uZXh0ZW5kKGkse2VsZW06YSxhbmlt
OmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5kb25l
KGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlzKGou
b3B0cy5hbHdheXMpfW0uQW5pbWF0aW9uPW0uZXh0ZW5kKGtjLHt0d2VlbmVyOmZ1bmN0aW9uKGEs
Yil7bS5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZhciBj
LGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLGVjW2NdPWVjW2NdfHxbXSxlY1tjXS51bnNo
aWZ0KGIpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP2RjLnVuc2hpZnQoYSk6ZGMucHVzaChh
KX19KSxtLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9mIGE/
bS5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxtLmlzRnVuY3Rpb24oYSkmJmEsZHVy
YXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIW0uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQuZHVy
YXRpb249bS5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIGQuZHVyYXRpb24/ZC5kdXJhdGlvbjpk
LmR1cmF0aW9uIGluIG0uZnguc3BlZWRzP20uZnguc3BlZWRzW2QuZHVyYXRpb25dOm0uZnguc3Bl
ZWRzLl9kZWZhdWx0LChudWxsPT1kLnF1ZXVlfHxkLnF1ZXVlPT09ITApJiYoZC5xdWV1ZT0iZngi
KSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXttLmlzRnVuY3Rpb24oZC5v
bGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJm0uZGVxdWV1ZSh0aGlzLGQucXVldWUpfSxk
fSxtLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRl
cihVKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9LGEs
YyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1tLmlzRW1wdHlPYmplY3QoYSks
Zj1tLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9a2ModGhpcyxtLmV4dGVuZCh7fSxh
KSxmKTsoZXx8bS5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBnLmZp
bmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVlLGcp
fSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7ZGVs
ZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9dm9p
ZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0aW9u
KCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPW0udGltZXJzLGc9bS5fZGF0
YSh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcpZ1tl
XSYmZ1tlXS5zdG9wJiZjYy50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTspZltl
XS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3RvcChj
KSxiPSExLGYuc3BsaWNlKGUsMSkpOyhifHwhYykmJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGZpbmlz
aDpmdW5jdGlvbihhKXtyZXR1cm4gYSE9PSExJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVuY3Rp
b24oKXt2YXIgYixjPW0uX2RhdGEodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVlSG9v
a3MiXSxmPW0udGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxtLnF1ZXVlKHRo
aXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2ItLTsp
ZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCksZi5z
cGxpY2UoYiwxKSk7Zm9yKGI9MDtnPmI7YisrKWRbYl0mJmRbYl0uZmluaXNoJiZkW2JdLmZpbmlz
aC5jYWxsKHRoaXMpO2RlbGV0ZSBjLmZpbmlzaH0pfX0pLG0uZWFjaChbInRvZ2dsZSIsInNob3ci
LCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1tLmZuW2JdO20uZm5bYl09ZnVuY3Rpb24oYSxk
LGUpe3JldHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2MuYXBwbHkodGhpcyxhcmd1
bWVudHMpOnRoaXMuYW5pbWF0ZShnYyhiLCEwKSxhLGQsZSl9fSksbS5lYWNoKHtzbGlkZURvd246
Z2MoInNob3ciKSxzbGlkZVVwOmdjKCJoaWRlIiksc2xpZGVUb2dnbGU6Z2MoInRvZ2dsZSIpLGZh
ZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9nZ2xl
OntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEsYyxk
KXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLG0udGltZXJzPVtdLG0uZngudGljaz1m
dW5jdGlvbigpe3ZhciBhLGI9bS50aW1lcnMsYz0wO2ZvcigkYj1tLm5vdygpO2M8Yi5sZW5ndGg7
YysrKWE9YltjXSxhKCl8fGJbY10hPT1hfHxiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fG0uZngu
c3RvcCgpLCRiPXZvaWQgMH0sbS5meC50aW1lcj1mdW5jdGlvbihhKXttLnRpbWVycy5wdXNoKGEp
LGEoKT9tLmZ4LnN0YXJ0KCk6bS50aW1lcnMucG9wKCl9LG0uZnguaW50ZXJ2YWw9MTMsbS5meC5z
dGFydD1mdW5jdGlvbigpe19ifHwoX2I9c2V0SW50ZXJ2YWwobS5meC50aWNrLG0uZnguaW50ZXJ2
YWwpKX0sbS5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChfYiksX2I9bnVsbH0sbS5m
eC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sbS5mbi5kZWxheT1mdW5j
dGlvbihhLGIpe3JldHVybiBhPW0uZng/bS5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCIsdGhp
cy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1mdW5j
dGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlO2I9eS5j
cmVhdGVFbGVtZW50KCJkaXYiKSxiLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGIuaW5u
ZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQg
dHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9eS5j
cmVhdGVFbGVtZW50KCJzZWxlY3QiKSxlPWMuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50KCJv
cHRpb24iKSksYT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGQuc3R5bGUuY3Nz
VGV4dD0idG9wOjFweCIsay5nZXRTZXRBdHRyaWJ1dGU9InQiIT09Yi5jbGFzc05hbWUsay5zdHls
ZT0vdG9wLy50ZXN0KGQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxrLmhyZWZOb3JtYWxpemVkPSIv
YSI9PT1kLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGsuY2hlY2tPbj0hIWEudmFsdWUsay5vcHRTZWxl
Y3RlZD1lLnNlbGVjdGVkLGsuZW5jdHlwZT0hIXkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5
cGUsYy5kaXNhYmxlZD0hMCxrLm9wdERpc2FibGVkPSFlLmRpc2FibGVkLGE9eS5jcmVhdGVFbGVt
ZW50KCJpbnB1dCIpLGEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLGsuaW5wdXQ9IiI9PT1hLmdl
dEF0dHJpYnV0ZSgidmFsdWUiKSxhLnZhbHVlPSJ0IixhLnNldEF0dHJpYnV0ZSgidHlwZSIsInJh
ZGlvIiksay5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGxjPS9cci9nO20uZm4uZXh0
ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxl
bmd0aClyZXR1cm4gZD1tLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBl
OzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbSh0aGlzKS52YWwoKSk6YSxu
dWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOm0uaXNBcnJheShlKSYmKGU9bS5t
YXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9bS52YWxIb29rc1t0
aGlzLnR5cGVdfHxtLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNl
dCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUpKX0p
O2lmKGUpcmV0dXJuIGI9bS52YWxIb29rc1tlLnR5cGVdfHxtLnZhbEhvb2tzW2Uubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1ZSIp
KT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShsYywiIik6bnVsbD09
Yz8iIjpjKX19fSksbS5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2
YXIgYj1tLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bS50cmltKG0udGV4
dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9ucyxl
PWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5lLGc9Zj9udWxsOltd
LGg9Zj9lKzE6ZC5sZW5ndGgsaT0wPmU/aDpmP2U6MDtoPmk7aSsrKWlmKGM9ZFtpXSwhKCFjLnNl
bGVjdGVkJiZpIT09ZXx8KGsub3B0RGlzYWJsZWQ/Yy5kaXNhYmxlZDpudWxsIT09Yy5nZXRBdHRy
aWJ1dGUoImRpc2FibGVkIikpfHxjLnBhcmVudE5vZGUuZGlzYWJsZWQmJm0ubm9kZU5hbWUoYy5w
YXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1tKGMpLnZhbCgpLGYpcmV0dXJuIGI7Zy5wdXNo
KGIpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9bS5t
YWtlQXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0paWYoZD1lW2ddLG0uaW5BcnJheShtLnZh
bEhvb2tzLm9wdGlvbi5nZXQoZCksZik+PTApdHJ5e2Quc2VsZWN0ZWQ9Yz0hMH1jYXRjaChoKXtk
LnNjcm9sbEhlaWdodH1lbHNlIGQuc2VsZWN0ZWQ9ITE7cmV0dXJuIGN8fChhLnNlbGVjdGVkSW5k
ZXg9LTEpLGV9fX19KSxtLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXttLnZh
bEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbS5pc0FycmF5KGIpP2EuY2hl
Y2tlZD1tLmluQXJyYXkobShhKS52YWwoKSxiKT49MDp2b2lkIDB9fSxrLmNoZWNrT258fChtLnZh
bEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmlidXRl
KCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIG1jLG5jLG9jPW0uZXhwci5hdHRySGFuZGxl
LHBjPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2kscWM9ay5nZXRTZXRBdHRyaWJ1dGUscmM9ay5p
bnB1dDttLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsbS5hdHRy
LGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLG0uZXh0ZW5kKHth
dHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZihhJiYzIT09ZiYmOCE9
PWYmJjIhPT1mKXJldHVybiB0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PT1LP20ucHJvcChhLGIsYyk6
KDE9PT1mJiZtLmlzWE1MRG9jKGEpfHwoYj1iLnRvTG93ZXJDYXNlKCksZD1tLmF0dHJIb29rc1ti
XXx8KG0uZXhwci5tYXRjaC5ib29sLnRlc3QoYik/bmM6bWMpKSx2b2lkIDA9PT1jP2QmJiJnZXQi
aW4gZCYmbnVsbCE9PShlPWQuZ2V0KGEsYikpP2U6KGU9bS5maW5kLmF0dHIoYSxiKSxudWxsPT1l
P3ZvaWQgMDplKTpudWxsIT09Yz9kJiYic2V0ImluIGQmJnZvaWQgMCE9PShlPWQuc2V0KGEsYyxi
KSk/ZTooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTp2b2lkIG0ucmVtb3ZlQXR0cihhLGIpKX0s
cmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT0wLGY9YiYmYi5tYXRjaChFKTtpZihm
JiYxPT09YS5ub2RlVHlwZSl3aGlsZShjPWZbZSsrXSlkPW0ucHJvcEZpeFtjXXx8YyxtLmV4cHIu
bWF0Y2guYm9vbC50ZXN0KGMpP3JjJiZxY3x8IXBjLnRlc3QoYyk/YVtkXT0hMTphW20uY2FtZWxD
YXNlKCJkZWZhdWx0LSIrYyldPWFbZF09ITE6bS5hdHRyKGEsYywiIiksYS5yZW1vdmVBdHRyaWJ1
dGUocWM/YzpkKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighay5yYWRp
b1ZhbHVlJiYicmFkaW8iPT09YiYmbS5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1hLnZhbHVl
O3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX19KSxu
Yz17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09PSExP20ucmVtb3ZlQXR0cihhLGMpOnJj
JiZxY3x8IXBjLnRlc3QoYyk/YS5zZXRBdHRyaWJ1dGUoIXFjJiZtLnByb3BGaXhbY118fGMsYyk6
YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2NdPSEwLGN9fSxtLmVhY2gobS5leHByLm1h
dGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1vY1tiXXx8
bS5maW5kLmF0dHI7b2NbYl09cmMmJnFjfHwhcGMudGVzdChiKT9mdW5jdGlvbihhLGIsZCl7dmFy
IGUsZjtyZXR1cm4gZHx8KGY9b2NbYl0sb2NbYl09ZSxlPW51bGwhPWMoYSxiLGQpP2IudG9Mb3dl
ckNhc2UoKTpudWxsLG9jW2JdPWYpLGV9OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lkIDA6
YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2IpXT9iLnRvTG93ZXJDYXNlKCk6bnVsbH19KSxyYyYm
cWN8fChtLmF0dHJIb29rcy52YWx1ZT17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5ub2Rl
TmFtZShhLCJpbnB1dCIpP3ZvaWQoYS5kZWZhdWx0VmFsdWU9Yik6bWMmJm1jLnNldChhLGIsYyl9
fSkscWN8fChtYz17c2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldEF0dHJpYnV0ZU5vZGUo
Yyk7cmV0dXJuIGR8fGEuc2V0QXR0cmlidXRlTm9kZShkPWEub3duZXJEb2N1bWVudC5jcmVhdGVB
dHRyaWJ1dGUoYykpLGQudmFsdWU9Yis9IiIsInZhbHVlIj09PWN8fGI9PT1hLmdldEF0dHJpYnV0
ZShjKT9iOnZvaWQgMH19LG9jLmlkPW9jLm5hbWU9b2MuY29vcmRzPWZ1bmN0aW9uKGEsYixjKXt2
YXIgZDtyZXR1cm4gYz92b2lkIDA6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmIiIhPT1kLnZh
bHVlP2QudmFsdWU6bnVsbH0sbS52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGIpe3Zh
ciBjPWEuZ2V0QXR0cmlidXRlTm9kZShiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/Yy52YWx1ZTp2
b2lkIDB9LHNldDptYy5zZXR9LG0uYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17c2V0OmZ1bmN0
aW9uKGEsYixjKXttYy5zZXQoYSwiIj09PWI/ITE6YixjKX19LG0uZWFjaChbIndpZHRoIiwiaGVp
Z2h0Il0sZnVuY3Rpb24oYSxiKXttLmF0dHJIb29rc1tiXT17c2V0OmZ1bmN0aW9uKGEsYyl7cmV0
dXJuIiI9PT1jPyhhLnNldEF0dHJpYnV0ZShiLCJhdXRvIiksYyk6dm9pZCAwfX19KSksay5zdHls
ZXx8KG0uYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUuY3Nz
VGV4dHx8dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0PWIr
IiJ9fSk7dmFyIHNjPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3QpJC9p
LHRjPS9eKD86YXxhcmVhKSQvaTttLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3JldHVy
biBWKHRoaXMsbS5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1bmN0
aW9uKGEpe3JldHVybiBhPW0ucHJvcEZpeFthXXx8YSx0aGlzLmVhY2goZnVuY3Rpb24oKXt0cnl7
dGhpc1thXT12b2lkIDAsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYil7fX0pfX0pLG0uZXh0ZW5kKHtw
cm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn0scHJvcDpmdW5jdGlv
bihhLGIsYyl7dmFyIGQsZSxmLGc9YS5ub2RlVHlwZTtpZihhJiYzIT09ZyYmOCE9PWcmJjIhPT1n
KXJldHVybiBmPTEhPT1nfHwhbS5pc1hNTERvYyhhKSxmJiYoYj1tLnByb3BGaXhbYl18fGIsZT1t
LnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUuc2V0
KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/ZDph
W2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5kLmF0
dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTpzYy50ZXN0KGEubm9kZU5h
bWUpfHx0Yy50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fX0pLGsuaHJlZk5vcm1hbGl6
ZWR8fG0uZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihhLGIpe20ucHJvcEhvb2tzW2JdPXtn
ZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKGIsNCl9fX0pLGsub3B0U2VsZWN0
ZWR8fChtLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50
Tm9kZTtyZXR1cm4gYiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9k
ZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pLG0uZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHkiLCJt
YXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNwYW4i
LCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7bS5w
cm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLGsuZW5jdHlwZXx8KG0ucHJvcEZpeC5l
bmN0eXBlPSJlbmNvZGluZyIpO3ZhciB1Yz0vW1x0XHJcblxmXS9nO20uZm4uZXh0ZW5kKHthZGRD
bGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaD0wLGk9dGhpcy5sZW5ndGgsaj0ic3Ry
aW5nIj09dHlwZW9mIGEmJmE7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVu
Y3Rpb24oYil7bSh0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1lKSl9
KTtpZihqKWZvcihiPShhfHwiIikubWF0Y2goRSl8fFtdO2k+aDtoKyspaWYoYz10aGlzW2hdLGQ9
MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVwbGFj
ZSh1YywiICIpOiIgIikpe2Y9MDt3aGlsZShlPWJbZisrXSlkLmluZGV4T2YoIiAiK2UrIiAiKTww
JiYoZCs9ZSsiICIpO2c9bS50cmltKGQpLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1lPWcp
fXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaD0w
LGk9dGhpcy5sZW5ndGgsaj0wPT09YXJndW1lbnRzLmxlbmd0aHx8InN0cmluZyI9PXR5cGVvZiBh
JiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20odGhp
cykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3Io
Yj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVU
eXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAiKToi
Iikpe2Y9MDt3aGlsZShlPWJbZisrXSl3aGlsZShkLmluZGV4T2YoIiAiK2UrIiAiKT49MClkPWQu
cmVwbGFjZSgiICIrZSsiICIsIiAiKTtnPWE/bS50cmltKGQpOiIiLGMuY2xhc3NOYW1lIT09ZyYm
KGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIpe3Zh
ciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9iP3Ro
aXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2gobS5pc0Z1bmN0aW9u
KGEpP2Z1bmN0aW9uKGMpe20odGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlzLmNs
YXNzTmFtZSxiKSxiKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWMpe3ZhciBiLGQ9MCxlPW0o
dGhpcyksZj1hLm1hdGNoKEUpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2UucmVt
b3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlKGM9PT1LfHwiYm9vbGVhbiI9PT1jKSYmKHRo
aXMuY2xhc3NOYW1lJiZtLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1l
KSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOm0uX2RhdGEodGhpcywi
X19jbGFzc05hbWVfXyIpfHwiIil9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPSIg
IithKyIgIixjPTAsZD10aGlzLmxlbmd0aDtkPmM7YysrKWlmKDE9PT10aGlzW2NdLm5vZGVUeXBl
JiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZSh1YywiICIpLmluZGV4T2YoYik+
PTApcmV0dXJuITA7cmV0dXJuITF9fSksbS5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9jdXNv
dXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24gbW91
c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2ZSBj
aGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRleHRt
ZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhLGMpe3JldHVy
biBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIoYil9
fSksbS5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRl
cihhKS5tb3VzZWxlYXZlKGJ8fGEpfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhpcy5v
bihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEsbnVs
bCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMsZCl9
LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0aD90
aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KTt2YXIgdmM9bS5ub3coKSx3
Yz0vXD8vLHhjPS8oLCl8KFxbfHspfCh9fF0pfCIoPzpbXiJcXFxyXG5dfFxcWyJcXFwvYmZucnRd
fFxcdVtcZGEtZkEtRl17NH0pKiJccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXGQpXGQrKD86
XC5cZCt8KSg/OltlRV1bKy1dP1xkK3wpL2c7bS5wYXJzZUpTT049ZnVuY3Rpb24oYil7aWYoYS5K
U09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKyIiKTt2YXIgYyxkPW51bGws
ZT1tLnRyaW0oYisiIik7cmV0dXJuIGUmJiFtLnRyaW0oZS5yZXBsYWNlKHhjLGZ1bmN0aW9uKGEs
YixlLGYpe3JldHVybiBjJiZiJiYoZD0wKSwwPT09ZD9hOihjPWV8fGIsZCs9IWYtIWUsIiIpfSkp
P0Z1bmN0aW9uKCJyZXR1cm4gIitlKSgpOm0uZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0sbS5w
YXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYyxkO2lmKCFifHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0
dXJuIG51bGw7dHJ5e2EuRE9NUGFyc2VyPyhkPW5ldyBET01QYXJzZXIsYz1kLnBhcnNlRnJvbVN0
cmluZyhiLCJ0ZXh0L3htbCIpKTooYz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERP
TSIpLGMuYXN5bmM9ImZhbHNlIixjLmxvYWRYTUwoYikpfWNhdGNoKGUpe2M9dm9pZCAwfXJldHVy
biBjJiZjLmRvY3VtZW50RWxlbWVudCYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVy
cm9yIikubGVuZ3RofHxtLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgeWMsemMsQWM9
LyMuKiQvLEJjPS8oWz8mXSlfPVteJl0qLyxDYz0vXiguKj8pOlsgXHRdKihbXlxyXG5dKilccj8k
L2dtLERjPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJlc3x3
aWRnZXQpOiQvLEVjPS9eKD86R0VUfEhFQUQpJC8sRmM9L15cL1wvLyxHYz0vXihbXHcuKy1dKzop
KD86XC9cLyg/OlteXC8/I10qQHwpKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLyxIYz17fSxJYz17
fSxKYz0iKi8iLmNvbmNhdCgiKiIpO3RyeXt6Yz1sb2NhdGlvbi5ocmVmfWNhdGNoKEtjKXt6Yz15
LmNyZWF0ZUVsZW1lbnQoImEiKSx6Yy5ocmVmPSIiLHpjPXpjLmhyZWZ9eWM9R2MuZXhlYyh6Yy50
b0xvd2VyQ2FzZSgpKXx8W107ZnVuY3Rpb24gTGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7InN0
cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNlKCku
bWF0Y2goRSl8fFtdO2lmKG0uaXNGdW5jdGlvbihjKSl3aGlsZShkPWZbZSsrXSkiKyI9PT1kLmNo
YXJBdCgwKT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykpOihh
W2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBNYyhhLGIsYyxkKXt2YXIgZT17fSxmPWE9
PT1JYztmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLG0uZWFjaChhW2hdfHxbXSxm
dW5jdGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8Znx8
ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9KSxp
fXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIE5jKGEs
Yil7dmFyIGMsZCxlPW0uYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBiKXZv
aWQgMCE9PWJbZF0mJigoZVtkXT9hOmN8fChjPXt9KSlbZF09YltkXSk7cmV0dXJuIGMmJm0uZXh0
ZW5kKCEwLGEsYyksYX1mdW5jdGlvbiBPYyhhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRlbnRz
LGk9YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZSYmKGU9
YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGUpZm9y
KGcgaW4gaClpZihoW2ddJiZoW2ddLnRlc3QoZSkpe2kudW5zaGlmdChnKTticmVha31pZihpWzBd
aW4gYylmPWlbMF07ZWxzZXtmb3IoZyBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2crIiAi
K2lbMF1dKXtmPWc7YnJlYWt9ZHx8KGQ9Zyl9Zj1mfHxkfXJldHVybiBmPyhmIT09aVswXSYmaS51
bnNoaWZ0KGYpLGNbZl0pOnZvaWQgMH1mdW5jdGlvbiBQYyhhLGIsYyxkKXt2YXIgZSxmLGcsaCxp
LGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0ZXJz
KWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUoZilp
ZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYmZCYm
YS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5zaGlm
dCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIgIitm
XXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYmJihn
PWpbaSsiICIraFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEwJiYo
Zj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93cyJd
KWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJlcnJv
ciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJue3N0
YXRlOiJzdWNjZXNzIixkYXRhOmJ9fW0uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30s
ZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp6Yyx0eXBlOiJHRVQiLGlzTG9jYWw6RGMudGVzdCh5
Y1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJhcHBs
aWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6eyIq
IjpKYyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRpb24v
eG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0In0s
Y29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VGaWVs
ZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9uc2VK
U09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0IGpz
b24iOm0ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6bS5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3VybDoh
MCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/TmMoTmMoYSxt
LmFqYXhTZXR0aW5ncyksYik6TmMobS5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6TGMo
SGMpLGFqYXhUcmFuc3BvcnQ6TGMoSWMpLGFqYXg6ZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09dHlw
ZW9mIGEmJihiPWEsYT12b2lkIDApLGI9Ynx8e307dmFyIGMsZCxlLGYsZyxoLGksaixrPW0uYWph
eFNldHVwKHt9LGIpLGw9ay5jb250ZXh0fHxrLG49ay5jb250ZXh0JiYobC5ub2RlVHlwZXx8bC5q
cXVlcnkpP20obCk6bS5ldmVudCxvPW0uRGVmZXJyZWQoKSxwPW0uQ2FsbGJhY2tzKCJvbmNlIG1l
bW9yeSIpLHE9ay5zdGF0dXNDb2RlfHx7fSxyPXt9LHM9e30sdD0wLHU9ImNhbmNlbGVkIix2PXty
ZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoMj09PXQp
e2lmKCFqKXtqPXt9O3doaWxlKGI9Q2MuZXhlYyhmKSlqW2JbMV0udG9Mb3dlckNhc2UoKV09Ylsy
XX1iPWpbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJlc3Bv
bnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9mOm51bGx9LHNldFJlcXVlc3RIZWFk
ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNbY109
c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJu
IHR8fChrLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7aWYo
YSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2LnN0
YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVybiBp
JiZpLmFib3J0KGIpLHgoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAuYWRk
LHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsay51cmw9KChhfHxrLnVybHx8emMpKyIi
KS5yZXBsYWNlKEFjLCIiKS5yZXBsYWNlKEZjLHljWzFdKyIvLyIpLGsudHlwZT1iLm1ldGhvZHx8
Yi50eXBlfHxrLm1ldGhvZHx8ay50eXBlLGsuZGF0YVR5cGVzPW0udHJpbShrLmRhdGFUeXBlfHwi
KiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goRSl8fFsiIl0sbnVsbD09ay5jcm9zc0RvbWFpbiYmKGM9
R2MuZXhlYyhrLnVybC50b0xvd2VyQ2FzZSgpKSxrLmNyb3NzRG9tYWluPSEoIWN8fGNbMV09PT15
Y1sxXSYmY1syXT09PXljWzJdJiYoY1szXXx8KCJodHRwOiI9PT1jWzFdPyI4MCI6IjQ0MyIpKT09
PSh5Y1szXXx8KCJodHRwOiI9PT15Y1sxXT8iODAiOiI0NDMiKSkpKSxrLmRhdGEmJmsucHJvY2Vz
c0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygay5kYXRhJiYoay5kYXRhPW0ucGFyYW0oay5kYXRhLGsu
dHJhZGl0aW9uYWwpKSxNYyhIYyxrLGIsdiksMj09PXQpcmV0dXJuIHY7aD1rLmdsb2JhbCxoJiYw
PT09bS5hY3RpdmUrKyYmbS5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxrLnR5cGU9ay50eXBl
LnRvVXBwZXJDYXNlKCksay5oYXNDb250ZW50PSFFYy50ZXN0KGsudHlwZSksZT1rLnVybCxrLmhh
c0NvbnRlbnR8fChrLmRhdGEmJihlPWsudXJsKz0od2MudGVzdChlKT8iJiI6Ij8iKStrLmRhdGEs
ZGVsZXRlIGsuZGF0YSksay5jYWNoZT09PSExJiYoay51cmw9QmMudGVzdChlKT9lLnJlcGxhY2Uo
QmMsIiQxXz0iK3ZjKyspOmUrKHdjLnRlc3QoZSk/IiYiOiI/IikrIl89Iit2YysrKSksay5pZk1v
ZGlmaWVkJiYobS5sYXN0TW9kaWZpZWRbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZp
ZWQtU2luY2UiLG0ubGFzdE1vZGlmaWVkW2VdKSxtLmV0YWdbZV0mJnYuc2V0UmVxdWVzdEhlYWRl
cigiSWYtTm9uZS1NYXRjaCIsbS5ldGFnW2VdKSksKGsuZGF0YSYmay5oYXNDb250ZW50JiZrLmNv
bnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRl
bnQtVHlwZSIsay5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGsuZGF0
YVR5cGVzWzBdJiZrLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dP2suYWNjZXB0c1trLmRhdGFUeXBl
c1swXV0rKCIqIiE9PWsuZGF0YVR5cGVzWzBdPyIsICIrSmMrIjsgcT0wLjAxIjoiIik6ay5hY2Nl
cHRzWyIqIl0pO2ZvcihkIGluIGsuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoZCxrLmhlYWRl
cnNbZF0pO2lmKGsuYmVmb3JlU2VuZCYmKGsuYmVmb3JlU2VuZC5jYWxsKGwsdixrKT09PSExfHwy
PT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGQgaW57c3VjY2VzczoxLGVycm9y
OjEsY29tcGxldGU6MX0pdltkXShrW2RdKTtpZihpPU1jKEljLGssYix2KSl7di5yZWFkeVN0YXRl
PTEsaCYmbi50cmlnZ2VyKCJhamF4U2VuZCIsW3Ysa10pLGsuYXN5bmMmJmsudGltZW91dD4wJiYo
Zz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxrLnRpbWVvdXQpKTt0
cnl7dD0xLGkuc2VuZChyLHgpfWNhdGNoKHcpe2lmKCEoMj50KSl0aHJvdyB3O3goLTEsdyl9fWVs
c2UgeCgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24geChhLGIsYyxkKXt2YXIgaixyLHMsdSx3
LHg9YjsyIT09dCYmKHQ9MixnJiZjbGVhclRpbWVvdXQoZyksaT12b2lkIDAsZj1kfHwiIix2LnJl
YWR5U3RhdGU9YT4wPzQ6MCxqPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsYyYmKHU9T2Moayx2LGMp
KSx1PVBjKGssdSx2LGopLGo/KGsuaWZNb2RpZmllZCYmKHc9di5nZXRSZXNwb25zZUhlYWRlcigi
TGFzdC1Nb2RpZmllZCIpLHcmJihtLmxhc3RNb2RpZmllZFtlXT13KSx3PXYuZ2V0UmVzcG9uc2VI
ZWFkZXIoImV0YWciKSx3JiYobS5ldGFnW2VdPXcpKSwyMDQ9PT1hfHwiSEVBRCI9PT1rLnR5cGU/
eD0ibm9jb250ZW50IjozMDQ9PT1hP3g9Im5vdG1vZGlmaWVkIjooeD11LnN0YXRlLHI9dS5kYXRh
LHM9dS5lcnJvcixqPSFzKSk6KHM9eCwoYXx8IXgpJiYoeD0iZXJyb3IiLDA+YSYmKGE9MCkpKSx2
LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0oYnx8eCkrIiIsaj9vLnJlc29sdmVXaXRoKGwsW3IseCx2
XSk6by5yZWplY3RXaXRoKGwsW3YseCxzXSksdi5zdGF0dXNDb2RlKHEpLHE9dm9pZCAwLGgmJm4u
dHJpZ2dlcihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3YsayxqP3I6c10pLHAuZmlyZVdp
dGgobCxbdix4XSksaCYmKG4udHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixrXSksLS1tLmFjdGl2
ZXx8bS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHZ9LGdldEpTT046ZnVuY3Rp
b24oYSxiLGMpe3JldHVybiBtLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rpb24o
YSxiKXtyZXR1cm4gbS5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksbS5lYWNoKFsiZ2V0Iiwi
cG9zdCJdLGZ1bmN0aW9uKGEsYil7bVtiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gbS5pc0Z1
bmN0aW9uKGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksbS5hamF4KHt1cmw6YSx0eXBlOmIsZGF0
YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSl9fSksbS5lYWNoKFsiYWpheFN0YXJ0IiwiYWpheFN0
b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5kIl0s
ZnVuY3Rpb24oYSxiKXttLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSks
bS5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbS5hamF4KHt1cmw6YSx0eXBlOiJHRVQiLGRh
dGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxtLmZuLmV4
dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMu
ZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhp
c1swXSl7dmFyIGI9bShhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3Ro
aXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24o
KXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2RlVHlw
ZSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3Jh
cElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2gobS5pc0Z1bmN0aW9uKGEpP2Z1bmN0
aW9uKGIpe20odGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX06ZnVuY3Rpb24oKXt2YXIg
Yj1tKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChh
KX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPW0uaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5l
YWNoKGZ1bmN0aW9uKGMpe20odGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9LHVu
d3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXttLm5v
ZGVOYW1lKHRoaXMsImJvZHkiKXx8bSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMp
fSkuZW5kKCl9fSksbS5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBhLm9m
ZnNldFdpZHRoPD0wJiZhLm9mZnNldEhlaWdodDw9MHx8IWsucmVsaWFibGVIaWRkZW5PZmZzZXRz
KCkmJiJub25lIj09PShhLnN0eWxlJiZhLnN0eWxlLmRpc3BsYXl8fG0uY3NzKGEsImRpc3BsYXki
KSl9LG0uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIW0uZXhwci5maWx0
ZXJzLmhpZGRlbihhKX07dmFyIFFjPS8lMjAvZyxSYz0vXFtcXSQvLFNjPS9ccj9cbi9nLFRjPS9e
KD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxVYz0vXig/OmlucHV0fHNlbGVj
dHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gVmMoYSxiLGMsZCl7dmFyIGU7aWYobS5pc0Fy
cmF5KGIpKW0uZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8UmMudGVzdChhKT9kKGEsZSk6VmMoYSsi
WyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwib2Jq
ZWN0IiE9PW0udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKVZjKGErIlsiK2UrIl0iLGJb
ZV0sYyxkKX1tLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEsYil7
Yj1tLmlzRnVuY3Rpb24oYik/YigpOm51bGw9PWI/IiI6YixkW2QubGVuZ3RoXT1lbmNvZGVVUklD
b21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07aWYodm9pZCAwPT09YiYmKGI9
bS5hamF4U2V0dGluZ3MmJm0uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxtLmlzQXJyYXkoYSl8
fGEuanF1ZXJ5JiYhbS5pc1BsYWluT2JqZWN0KGEpKW0uZWFjaChhLGZ1bmN0aW9uKCl7ZSh0aGlz
Lm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpVmMoYyxhW2NdLGIsZSk7cmV0dXJu
IGQuam9pbigiJiIpLnJlcGxhY2UoUWMsIisiKX0sbS5mbi5leHRlbmQoe3NlcmlhbGl6ZTpmdW5j
dGlvbigpe3JldHVybiBtLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6ZUFy
cmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9bS5wcm9wKHRo
aXMsImVsZW1lbnRzIik7cmV0dXJuIGE/bS5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihmdW5j
dGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhbSh0aGlzKS5pcygiOmRp
c2FibGVkIikmJlVjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFUYy50ZXN0KGEpJiYodGhpcy5jaGVj
a2VkfHwhVy50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPW0odGhpcykudmFsKCk7
cmV0dXJuIG51bGw9PWM/bnVsbDptLmlzQXJyYXkoYyk/bS5tYXAoYyxmdW5jdGlvbihhKXtyZXR1
cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKFNjLCJcclxuIil9fSk6e25hbWU6Yi5uYW1l
LHZhbHVlOmMucmVwbGFjZShTYywiXHJcbiIpfX0pLmdldCgpfX0pLG0uYWpheFNldHRpbmdzLnho
cj12b2lkIDAhPT1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xvY2Fs
JiYvXihnZXR8cG9zdHxoZWFkfHB1dHxkZWxldGV8b3B0aW9ucykkL2kudGVzdCh0aGlzLnR5cGUp
JiZaYygpfHwkYygpfTpaYzt2YXIgV2M9MCxYYz17fSxZYz1tLmFqYXhTZXR0aW5ncy54aHIoKTth
LkFjdGl2ZVhPYmplY3QmJm0oYSkub24oInVubG9hZCIsZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4g
WGMpWGNbYV0odm9pZCAwLCEwKX0pLGsuY29ycz0hIVljJiYid2l0aENyZWRlbnRpYWxzImluIFlj
LFljPWsuYWpheD0hIVljLFljJiZtLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7aWYoIWEuY3Jv
c3NEb21haW58fGsuY29ycyl7dmFyIGI7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oYyxkKXt2YXIgZSxm
PWEueGhyKCksZz0rK1djO2lmKGYub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJuYW1l
LGEucGFzc3dvcmQpLGEueGhyRmllbGRzKWZvcihlIGluIGEueGhyRmllbGRzKWZbZV09YS54aHJG
aWVsZHNbZV07YS5taW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlJiZmLm92ZXJyaWRlTWltZVR5
cGUoYS5taW1lVHlwZSksYS5jcm9zc0RvbWFpbnx8Y1siWC1SZXF1ZXN0ZWQtV2l0aCJdfHwoY1si
WC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO2ZvcihlIGluIGMpdm9pZCAwIT09
Y1tlXSYmZi5zZXRSZXF1ZXN0SGVhZGVyKGUsY1tlXSsiIik7Zi5zZW5kKGEuaGFzQ29udGVudCYm
YS5kYXRhfHxudWxsKSxiPWZ1bmN0aW9uKGMsZSl7dmFyIGgsaSxqO2lmKGImJihlfHw0PT09Zi5y
ZWFkeVN0YXRlKSlpZihkZWxldGUgWGNbZ10sYj12b2lkIDAsZi5vbnJlYWR5c3RhdGVjaGFuZ2U9
bS5ub29wLGUpNCE9PWYucmVhZHlTdGF0ZSYmZi5hYm9ydCgpO2Vsc2V7aj17fSxoPWYuc3RhdHVz
LCJzdHJpbmciPT10eXBlb2YgZi5yZXNwb25zZVRleHQmJihqLnRleHQ9Zi5yZXNwb25zZVRleHQp
O3RyeXtpPWYuc3RhdHVzVGV4dH1jYXRjaChrKXtpPSIifWh8fCFhLmlzTG9jYWx8fGEuY3Jvc3NE
b21haW4/MTIyMz09PWgmJihoPTIwNCk6aD1qLnRleHQ/MjAwOjQwNH1qJiZkKGgsaSxqLGYuZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCkpfSxhLmFzeW5jPzQ9PT1mLnJlYWR5U3RhdGU/c2V0VGltZW91
dChiKTpmLm9ucmVhZHlzdGF0ZWNoYW5nZT1YY1tnXT1iOmIoKX0sYWJvcnQ6ZnVuY3Rpb24oKXti
JiZiKHZvaWQgMCwhMCl9fX19KTtmdW5jdGlvbiBaYygpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0
cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiAkYygpe3RyeXtyZXR1cm4gbmV3IGEuQWN0aXZl
WE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChiKXt9fW0uYWpheFNldHVwKHthY2Nl
cHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBw
bGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6
e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlwdCI6
ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZ2xvYmFsRXZhbChhKSxhfX19KSxtLmFqYXhQcmVmaWx0ZXIo
InNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEuY3Jv
c3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksbS5hamF4VHJhbnNwb3J0KCJz
Y3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM9eS5oZWFkfHxtKCJo
ZWFkIilbMF18fHkuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7Yj15
LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGIuYXN5bmM9ITAsYS5zY3JpcHRDaGFyc2V0JiYoYi5j
aGFyc2V0PWEuc2NyaXB0Q2hhcnNldCksYi5zcmM9YS51cmwsYi5vbmxvYWQ9Yi5vbnJlYWR5c3Rh
dGVjaGFuZ2U9ZnVuY3Rpb24oYSxjKXsoY3x8IWIucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0
ZS8udGVzdChiLnJlYWR5U3RhdGUpKSYmKGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdlPW51
bGwsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsLGN8fGUo
MjAwLCJzdWNjZXNzIikpfSxjLmluc2VydEJlZm9yZShiLGMuZmlyc3RDaGlsZCl9LGFib3J0OmZ1
bmN0aW9uKCl7YiYmYi5vbmxvYWQodm9pZCAwLCEwKX19fX0pO3ZhciBfYz1bXSxhZD0vKD0pXD8o
Pz0mfCQpfFw/XD8vO20uYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6
ZnVuY3Rpb24oKXt2YXIgYT1fYy5wb3AoKXx8bS5leHBhbmRvKyJfIit2YysrO3JldHVybiB0aGlz
W2FdPSEwLGF9fSksbS5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7
dmFyIGUsZixnLGg9Yi5qc29ucCE9PSExJiYoYWQudGVzdChiLnVybCk/InVybCI6InN0cmluZyI9
PXR5cGVvZiBiLmRhdGEmJiEoYi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0aW9u
L3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZhZC50ZXN0KGIuZGF0YSkmJiJkYXRhIik7cmV0dXJu
IGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXT8oZT1iLmpzb25wQ2FsbGJhY2s9bS5pc0Z1bmN0
aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGg/
YltoXT1iW2hdLnJlcGxhY2UoYWQsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHdjLnRl
c3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0IGpz
b24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxtLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIpLGdb
MF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJndW1l
bnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe2FbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNrPWMu
anNvbnBDYWxsYmFjayxfYy5wdXNoKGUpKSxnJiZtLmlzRnVuY3Rpb24oZikmJmYoZ1swXSksZz1m
PXZvaWQgMH0pLCJzY3JpcHQiKTp2b2lkIDB9KSxtLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIsYyl7
aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVvZiBi
JiYoYz1iLGI9ITEpLGI9Ynx8eTt2YXIgZD11LmV4ZWMoYSksZT0hYyYmW107cmV0dXJuIGQ/W2Iu
Y3JlYXRlRWxlbWVudChkWzFdKV06KGQ9bS5idWlsZEZyYWdtZW50KFthXSxiLGUpLGUmJmUubGVu
Z3RoJiZtKGUpLnJlbW92ZSgpLG0ubWVyZ2UoW10sZC5jaGlsZE5vZGVzKSl9O3ZhciBiZD1tLmZu
LmxvYWQ7bS5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEmJmJk
KXJldHVybiBiZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEuaW5k
ZXhPZigiICIpO3JldHVybiBoPj0wJiYoZD1tLnRyaW0oYS5zbGljZShoLGEubGVuZ3RoKSksYT1h
LnNsaWNlKDAsaCkpLG0uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0Ij09
dHlwZW9mIGImJihmPSJQT1NUIiksZy5sZW5ndGg+MCYmbS5hamF4KHt1cmw6YSx0eXBlOmYsZGF0
YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7ZT1hcmd1bWVudHMsZy5odG1s
KGQ/bSgiPGRpdj4iKS5hcHBlbmQobS5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5jb21wbGV0
ZShjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChjLGV8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0pLHRo
aXN9LG0uZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBtLmdyZXAobS50
aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O3ZhciBjZD1hLmRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudDtmdW5jdGlvbiBkZChhKXtyZXR1cm4gbS5pc1dpbmRvdyhh
KT9hOjk9PT1hLm5vZGVUeXBlP2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfW0ub2Zm
c2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9bS5jc3Mo
YSwicG9zaXRpb24iKSxsPW0oYSksbj17fTsic3RhdGljIj09PWsmJihhLnN0eWxlLnBvc2l0aW9u
PSJyZWxhdGl2ZSIpLGg9bC5vZmZzZXQoKSxmPW0uY3NzKGEsInRvcCIpLGk9bS5jc3MoYSwibGVm
dCIpLGo9KCJhYnNvbHV0ZSI9PT1rfHwiZml4ZWQiPT09aykmJm0uaW5BcnJheSgiYXV0byIsW2Ys
aV0pPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxvYXQo
Zil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxtLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChhLGMs
aCkpLG51bGwhPWIudG9wJiYobi50b3A9Yi50b3AtaC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYobi5s
ZWZ0PWIubGVmdC1oLmxlZnQrZSksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsbik6bC5jc3Mo
bil9fSxtLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5ndGgp
cmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7bS5vZmZzZXQuc2V0
T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZD17dG9wOjAsbGVmdDowfSxlPXRoaXNbMF0sZj1l
JiZlLm93bmVyRG9jdW1lbnQ7aWYoZilyZXR1cm4gYj1mLmRvY3VtZW50RWxlbWVudCxtLmNvbnRh
aW5zKGIsZSk/KHR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCE9PUsmJihkPWUuZ2V0Qm91
bmRpbmdDbGllbnRSZWN0KCkpLGM9ZGQoZikse3RvcDpkLnRvcCsoYy5wYWdlWU9mZnNldHx8Yi5z
Y3JvbGxUb3ApLShiLmNsaWVudFRvcHx8MCksbGVmdDpkLmxlZnQrKGMucGFnZVhPZmZzZXR8fGIu
c2Nyb2xsTGVmdCktKGIuY2xpZW50TGVmdHx8MCl9KTpkfSxwb3NpdGlvbjpmdW5jdGlvbigpe2lm
KHRoaXNbMF0pe3ZhciBhLGIsYz17dG9wOjAsbGVmdDowfSxkPXRoaXNbMF07cmV0dXJuImZpeGVk
Ij09PW0uY3NzKGQsInBvc2l0aW9uIik/Yj1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihhPXRo
aXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLG0ubm9kZU5hbWUoYVswXSwiaHRtbCIp
fHwoYz1hLm9mZnNldCgpKSxjLnRvcCs9bS5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEwKSxj
LmxlZnQrPW0uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWMudG9w
LW0uY3NzKGQsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWMubGVmdC1tLmNzcyhkLCJtYXJn
aW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1
bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGNkO3doaWxlKGEmJiFtLm5vZGVOYW1l
KGEsImh0bWwiKSYmInN0YXRpYyI9PT1tLmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQYXJl
bnQ7cmV0dXJuIGF8fGNkfSl9fSksbS5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIsc2Ny
b2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9L1kvLnRlc3QoYik7bS5m
blthXT1mdW5jdGlvbihkKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsZCxlKXt2YXIgZj1kZChh
KTtyZXR1cm4gdm9pZCAwPT09ZT9mP2IgaW4gZj9mW2JdOmYuZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50W2RdOmFbZF06dm9pZChmP2Yuc2Nyb2xsVG8oYz9tKGYpLnNjcm9sbExlZnQoKTplLGM/ZTpt
KGYpLnNjcm9sbFRvcCgpKTphW2RdPWUpfSxhLGQsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19KSxt
LmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXttLmNzc0hvb2tzW2JdPUxiKGsucGl4
ZWxQb3NpdGlvbixmdW5jdGlvbihhLGMpe3JldHVybiBjPyhjPUpiKGEsYiksSGIudGVzdChjKT9t
KGEpLnBvc2l0aW9uKClbYl0rInB4IjpjKTp2b2lkIDB9KX0pLG0uZWFjaCh7SGVpZ2h0OiJoZWln
aHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5lYWNoKHtwYWRkaW5nOiJpbm5lciIr
YSxjb250ZW50OmIsIiI6Im91dGVyIithfSxmdW5jdGlvbihjLGQpe20uZm5bZF09ZnVuY3Rpb24o
ZCxlKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoJiYoY3x8ImJvb2xlYW4iIT10eXBlb2YgZCksZz1j
fHwoZD09PSEwfHxlPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBWKHRoaXMsZnVuY3Rp
b24oYixjLGQpe3ZhciBlO3JldHVybiBtLmlzV2luZG93KGIpP2IuZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50WyJjbGllbnQiK2FdOjk9PT1iLm5vZGVUeXBlPyhlPWIuZG9jdW1lbnRFbGVtZW50LE1h
dGgubWF4KGIuYm9keVsic2Nyb2xsIithXSxlWyJzY3JvbGwiK2FdLGIuYm9keVsib2Zmc2V0Iith
XSxlWyJvZmZzZXQiK2FdLGVbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1kP20uY3NzKGIsYyxnKTpt
LnN0eWxlKGIsYyxkLGcpfSxiLGY/ZDp2b2lkIDAsZixudWxsKX19KX0pLG0uZm4uc2l6ZT1mdW5j
dGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sbS5mbi5hbmRTZWxmPW0uZm4uYWRkQmFjaywiZnVu
Y3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10sZnVu
Y3Rpb24oKXtyZXR1cm4gbX0pO3ZhciBlZD1hLmpRdWVyeSxmZD1hLiQ7cmV0dXJuIG0ubm9Db25m
bGljdD1mdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09bSYmKGEuJD1mZCksYiYmYS5qUXVlcnk9PT1t
JiYoYS5qUXVlcnk9ZWQpLG19LHR5cGVvZiBiPT09SyYmKGEualF1ZXJ5PWEuJD1tKSxtfSk7CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LTEuMTEuMS5t
aW4uanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5h
dGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBpY2tlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBp
Y2tlci5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL2pxdWVy
eS5kYXRlcmFuZ2VwaWNrZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjY2ICswLDAgQEAKLS8v
IGRhdGVyYW5nZXBpY2tlci5qcwotLy8gdmVyc2lvbiA6IDAuMC41Ci0vLyBhdXRob3IgOiBDaHVu
bG9uZyBMaXUKLS8vIGxhc3QgdXBkYXRlZCBhdDogMjAxNC0wNS0yNwotLy8gbGljZW5zZSA6IE1J
VAotLy8gd3d3LmpzemVuLmNvbQotCi0oZnVuY3Rpb24oJCkKLXsKLQotICAgICQuZGF0ZVJhbmdl
UGlja2VyTGFuZ3VhZ2VzID0KLSAgICB7Ci0gICAgICAgICdjbic6Ci0gICAgICAgIHsKLSAgICAg
ICAgICAgICdzZWxlY3RlZCc6ICflt7LpgInmi6k6JywKLSAgICAgICAgICAgICdkYXknOiflpKkn
LAotICAgICAgICAgICAgJ2RheXMnOiAn5aSpJywKLSAgICAgICAgICAgICdhcHBseSc6ICfnoa7l
rponLAotICAgICAgICAgICAgJ3dlZWstMScgOiAn5LiAJywKLSAgICAgICAgICAgICd3ZWVrLTIn
IDogJ+S6jCcsCi0gICAgICAgICAgICAnd2Vlay0zJyA6ICfkuIknLAotICAgICAgICAgICAgJ3dl
ZWstNCcgOiAn5ZubJywKLSAgICAgICAgICAgICd3ZWVrLTUnIDogJ+S6lCcsCi0gICAgICAgICAg
ICAnd2Vlay02JyA6ICflha0nLAotICAgICAgICAgICAgJ3dlZWstNycgOiAn5pelJywKLSAgICAg
ICAgICAgICdtb250aC1uYW1lJzogWyfkuIDmnIgnLCfkuozmnIgnLCfkuInmnIgnLCflm5vmnIgn
LCfkupTmnIgnLCflha3mnIgnLCfkuIPmnIgnLCflhavmnIgnLCfkuZ3mnIgnLCfljYHmnIgnLCfl
jYHkuIDmnIgnLCfljYHkuozmnIgnXSwKLSAgICAgICAgICAgICdzaG9ydGN1dHMnIDogJ+W/q+aN
t+mAieaLqScsCi0gICAgICAgICAgICAncGFzdCc6ICfov4fljrsnLAotICAgICAgICAgICAgJ2Zv
bGxvd2luZyc6J+WwhuadpScsCi0gICAgICAgICAgICAncHJldmlvdXMnIDogJyZuYnNwOyZuYnNw
OyZuYnNwOycsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICfkuIrlkagnLAotICAgICAgICAg
ICAgJ3ByZXYtbW9udGgnIDogJ+S4iuS4quaciCcsCi0gICAgICAgICAgICAncHJldi15ZWFyJyA6
ICfljrvlubQnLAotICAgICAgICAgICAgJ25leHQnOiAnJm5ic3A7Jm5ic3A7Jm5ic3A7JywKLSAg
ICAgICAgICAgICduZXh0LXdlZWsnOifkuIvlkagnLAotICAgICAgICAgICAgJ25leHQtbW9udGgn
OifkuIvkuKrmnIgnLAotICAgICAgICAgICAgJ25leHQteWVhcic6J+aYjuW5tCcsCi0gICAgICAg
ICAgICAnbGVzcy10aGFuJyA6ICfmiYDpgInml6XmnJ/ojIPlm7TkuI3og73lpKfkuo4lZOWkqScs
Ci0gICAgICAgICAgICAnbW9yZS10aGFuJyA6ICfmiYDpgInml6XmnJ/ojIPlm7TkuI3og73lsI/k
uo4lZOWkqScsCi0gICAgICAgICAgICAnZGVmYXVsdC1tb3JlJyA6ICfor7fpgInmi6nlpKfkuo4l
ZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAgICAgICAgICAnZGVmYXVsdC1sZXNzJyA6ICfor7fp
gInmi6nlsI/kuo4lZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAgICAgICAgICAnZGVmYXVsdC1y
YW5nZScgOiAn6K+36YCJ5oupJWTlpKnliLAlZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAgICAg
ICAgICAnZGVmYXVsdC1zaW5nbGUnOifor7fpgInmi6nkuIDkuKrml6XmnJ8nLAotICAgICAgICAg
ICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICfor7fpgInmi6nkuIDkuKrml6XmnJ/ojIPlm7QnCi0gICAg
ICAgIH0sCi0gICAgICAgICdlbic6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdzZWxlY3RlZCc6
ICdTZWxlY3RlZDonLAotICAgICAgICAgICAgJ2RheSc6J0RheScsCi0gICAgICAgICAgICAnZGF5
cyc6ICdEYXlzJywKLSAgICAgICAgICAgICdhcHBseSc6ICdTdGFydCcsCi0gICAgICAgICAgICAn
d2Vlay0xJyA6ICdNTycsCi0gICAgICAgICAgICAnd2Vlay0yJyA6ICdUVScsCi0gICAgICAgICAg
ICAnd2Vlay0zJyA6ICdXRScsCi0gICAgICAgICAgICAnd2Vlay00JyA6ICdUSCcsCi0gICAgICAg
ICAgICAnd2Vlay01JyA6ICdGUicsCi0gICAgICAgICAgICAnd2Vlay02JyA6ICdTQScsCi0gICAg
ICAgICAgICAnd2Vlay03JyA6ICdTVScsCi0gICAgICAgICAgICAnbW9udGgtbmFtZSc6IFsnSkFO
VUFSWScsJ0ZFQlJVQVJZJywnTUFSQ0gnLCdBUFJJTCcsJ01BWScsJ0pVTkUnLCdKVUxZJywnQVVH
VVNUJywnU0VQVEVNQkVSJywnT0NUT0JFUicsJ05PVkVNQkVSJywnREVDRU1CRVInXSwKLSAgICAg
ICAgICAgICdzaG9ydGN1dHMnIDogJ1Nob3J0Y3V0cycsCi0gICAgICAgICAgICAncGFzdCc6ICdQ
YXN0JywKLSAgICAgICAgICAgICdmb2xsb3dpbmcnOidGb2xsb3dpbmcnLAotICAgICAgICAgICAg
J3ByZXZpb3VzJyA6ICdQcmV2aW91cycsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdXZWVr
JywKLSAgICAgICAgICAgICdwcmV2LW1vbnRoJyA6ICdNb250aCcsCi0gICAgICAgICAgICAncHJl
di15ZWFyJyA6ICdZZWFyJywKLSAgICAgICAgICAgICduZXh0JzonTmV4dCcsCi0gICAgICAgICAg
ICAnbmV4dC13ZWVrJzonV2VlaycsCi0gICAgICAgICAgICAnbmV4dC1tb250aCc6J01vbnRoJywK
LSAgICAgICAgICAgICduZXh0LXllYXInOidZZWFyJywKLSAgICAgICAgICAgICdsZXNzLXRoYW4n
IDogJ0RhdGUgcmFuZ2Ugc2hvdWxkIG5vdCBiZSBtb3JlIHRoYW4gJWQgZGF5cycsCi0gICAgICAg
ICAgICAnbW9yZS10aGFuJyA6ICdEYXRlIHJhbmdlIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuICVk
IGRheXMnLAotICAgICAgICAgICAgJ2RlZmF1bHQtbW9yZScgOiAnUGxlYXNlIHNlbGVjdCBhIGRh
dGUgcmFuZ2UgbG9uZ2VyIHRoYW4gJWQgZGF5cycsCi0gICAgICAgICAgICAnZGVmYXVsdC1zaW5n
bGUnIDogJ1BsZWFzZSBzZWxlY3QgYSBkYXRlJywKLSAgICAgICAgICAgICdkZWZhdWx0LWxlc3Mn
IDogJ1BsZWFzZSBzZWxlY3QgYSBkYXRlIHJhbmdlIGxlc3MgdGhhbiAlZCBkYXlzJywKLSAgICAg
ICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICdQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZSBiZXR3
ZWVuICVkIGFuZCAlZCBkYXlzJywKLSAgICAgICAgICAgICdkZWZhdWx0LWRlZmF1bHQnOiAnUGxl
YXNlIHNlbGVjdCBhIGRhdGUgcmFuZ2UnCi0gICAgICAgIH0sCi0gICAgICAgICdpdCc6Ci0gICAg
ICAgIHsKLSAgICAgICAgICAgICdzZWxlY3RlZCc6ICdTZWxlemlvbmF0aTonLAotICAgICAgICAg
ICAgJ2RheSc6J0dpb3JubycsCi0gICAgICAgICAgICAnZGF5cyc6ICdHaW9ybmknLAotICAgICAg
ICAgICAgJ2FwcGx5JzogJ0NoaXVkaScsCi0gICAgICAgICAgICAnd2Vlay0xJyA6ICdMVScsCi0g
ICAgICAgICAgICAnd2Vlay0yJyA6ICdNQScsCi0gICAgICAgICAgICAnd2Vlay0zJyA6ICdNRScs
Ci0gICAgICAgICAgICAnd2Vlay00JyA6ICdHSScsCi0gICAgICAgICAgICAnd2Vlay01JyA6ICdW
RScsCi0gICAgICAgICAgICAnd2Vlay02JyA6ICdTQScsCi0gICAgICAgICAgICAnd2Vlay03JyA6
ICdETycsCi0gICAgICAgICAgICAnbW9udGgtbmFtZSc6IFsnR0VOTkFJTycsJ0ZFQkJSQUlPJywn
TUFSWk8nLCdBUFJJTEUnLCdNQUdHSU8nLCdHSVVHTk8nLCdMVUdMSU8nLCdBR09TVE8nLCdTRVRU
RU1CUkUnLCdPVFRPQlJFJywnTk9WRU1CUkUnLCdESUNFTUJSRSddLAotICAgICAgICAgICAgJ3No
b3J0Y3V0cycgOiAnU2NvcmNpYXRvaWUnLAotICAgICAgICAgICAgJ3Bhc3QnOiAnU2NvcnNvJywK
LSAgICAgICAgICAgICdmb2xsb3dpbmcnOidTdWNjZXNzaXZvJywKLSAgICAgICAgICAgICdwcmV2
aW91cycgOiAnUHJlY2VkZW50ZScsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdTZXR0aW1h
bmEnLAotICAgICAgICAgICAgJ3ByZXYtbW9udGgnIDogJ01lc2UnLAotICAgICAgICAgICAgJ3By
ZXYteWVhcicgOiAnQW5ubycsCi0gICAgICAgICAgICAnbmV4dCc6J1Byb3NzaW1vJywKLSAgICAg
ICAgICAgICduZXh0LXdlZWsnOidTZXR0aW1hbmEnLAotICAgICAgICAgICAgJ25leHQtbW9udGgn
OidNZXNlJywKLSAgICAgICAgICAgICduZXh0LXllYXInOidBbm5vJywKLSAgICAgICAgICAgICds
ZXNzLXRoYW4nIDogJ0xcJ2ludGVydmFsbG8gbm9uIGRldlwnZXNzZXJlIG1hZ2dpb3JlIGRpICVk
IGdpb3JuaScsCi0gICAgICAgICAgICAnbW9yZS10aGFuJyA6ICdMXCdpbnRlcnZhbGxvIG5vbiBk
ZXZcJ2Vzc2VyZSBtaW5vcmUgZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdkZWZhdWx0LW1v
cmUnIDogJ1NlbGV6aW9uYSB1biBpbnRlcnZhbGxvIG1hZ2dpb3JlIGRpICVkIGdpb3JuaScsCi0g
ICAgICAgICAgICAnZGVmYXVsdC1zaW5nbGUnIDogJ1NlbGV6aW9uYSB1bmEgZGF0YScsCi0gICAg
ICAgICAgICAnZGVmYXVsdC1sZXNzJyA6ICdTZWxlemlvbmEgdW4gaW50ZXJ2YWxsbyBtaW5vcmUg
ZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICdTZWxlemlvbmEg
dW4gaW50ZXJ2YWxsbyBjb21wcmVzbyB0cmEgaSAlZCBlIGkgJWQgZ2lvcm5pJywKLSAgICAgICAg
ICAgICdkZWZhdWx0LWRlZmF1bHQnOiAnU2VsZXppb25hIHVuIGludGVydmFsbG8gZGkgZGF0ZScK
LSAgICAgICAgfSwKLSAgICAgICAgJ2VzJzoKLSAgICAgICAgewotICAgICAgICAgICAgJ3NlbGVj
dGVkJzogJ1NlbGVjY2lvbmFkbzonLAotICAgICAgICAgICAgJ2RheSc6J0RpYScsCi0gICAgICAg
ICAgICAnZGF5cyc6ICdEaWFzJywKLSAgICAgICAgICAgICdhcHBseSc6ICdDZXJyYXInLAotICAg
ICAgICAgICAgJ3dlZWstMScgOiAnTFUnLAotICAgICAgICAgICAgJ3dlZWstMicgOiAnTUEnLAot
ICAgICAgICAgICAgJ3dlZWstMycgOiAnTUknLAotICAgICAgICAgICAgJ3dlZWstNCcgOiAnSlUn
LAotICAgICAgICAgICAgJ3dlZWstNScgOiAnVkknLAotICAgICAgICAgICAgJ3dlZWstNicgOiAn
U0EnLAotICAgICAgICAgICAgJ3dlZWstNycgOiAnRE8nLAotICAgICAgICAgICAgJ21vbnRoLW5h
bWUnOiBbJ0VORVJPJywnRkVCUkVSTycsJ01BUlpPJywnQUJSSUwnLCdNQVlPJywnSlVOSU8nLCdK
VUxJTycsJ0FHT1NUTycsJ1NFUFRJRU1CUkUnLCdPQ1RVQlJFJywnTk9WSUVNQlJFJywnRElDSUVN
QlJFJ10sCi0gICAgICAgICAgICAnc2hvcnRjdXRzJyA6ICdBY2Nlc29zIGRpcmVjdG9zJywKLSAg
ICAgICAgICAgICdwYXN0JzogJ1Bhc2FkbycsCi0gICAgICAgICAgICAnZm9sbG93aW5nJzonU2ln
dWllbnRlJywKLSAgICAgICAgICAgICdwcmV2aW91cycgOiAnQW50ZXJpb3InLAotICAgICAgICAg
ICAgJ3ByZXYtd2VlaycgOiAnU2VtYW5hJywKLSAgICAgICAgICAgICdwcmV2LW1vbnRoJyA6ICdN
ZXMnLAotICAgICAgICAgICAgJ3ByZXYteWVhcicgOiAnQcOxbycsCi0gICAgICAgICAgICAnbmV4
dCc6J1NpZ3VpZW50ZScsCi0gICAgICAgICAgICAnbmV4dC13ZWVrJzonU2VtYW5hJywKLSAgICAg
ICAgICAgICduZXh0LW1vbnRoJzonTWVzJywKLSAgICAgICAgICAgICduZXh0LXllYXInOidBw7Fv
JywKLSAgICAgICAgICAgICdsZXNzLXRoYW4nIDogJ0VsIHJhbmdvIG5vIGRlYmVyaWEgc2VyIG1h
eW9yIGRlICVkIGRpYXMnLAotICAgICAgICAgICAgJ21vcmUtdGhhbicgOiAnRWwgcmFuZ28gbm8g
ZGViZXJpYSBzZXIgbWVub3IgZGUgJWQgZGlhcycsCi0gICAgICAgICAgICAnZGVmYXVsdC1tb3Jl
JyA6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBtYXlvciBhICVkIGRpYXMnLAotICAg
ICAgICAgICAgJ2RlZmF1bHQtc2luZ2xlJyA6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biBkaWEn
LAotICAgICAgICAgICAgJ2RlZmF1bHQtbGVzcycgOiAnUG9yIGZhdm9yIHNlbGVjY2lvbmEgdW4g
cmFuZ28gbWVub3IgYSAlZCBkaWFzJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICdQ
b3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBlbnRyZSAlZCB5ICVkIGRpYXMnLAotICAgICAg
ICAgICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBk
ZSBmZWNoYXMuJwotICAgICAgICB9LAotICAgICAgICAnZGUnOgotICAgICAgICB7Ci0gICAgICAg
ICAgICAnc2VsZWN0ZWQnOiAnQXVzd2FobDonLAotICAgICAgICAgICAgJ2RheSc6J1RhZycsCi0g
ICAgICAgICAgICAnZGF5cyc6ICdUYWdlJywKLSAgICAgICAgICAgICdhcHBseSc6ICdTY2hsaWXD
n2VuJywKLSAgICAgICAgICAgICd3ZWVrLTEnIDogJ01PJywKLSAgICAgICAgICAgICd3ZWVrLTIn
IDogJ0RJJywKLSAgICAgICAgICAgICd3ZWVrLTMnIDogJ01JJywKLSAgICAgICAgICAgICd3ZWVr
LTQnIDogJ0RPJywKLSAgICAgICAgICAgICd3ZWVrLTUnIDogJ0ZSJywKLSAgICAgICAgICAgICd3
ZWVrLTYnIDogJ1NBJywKLSAgICAgICAgICAgICd3ZWVrLTcnIDogJ1NPJywKLSAgICAgICAgICAg
ICdtb250aC1uYW1lJzogWydKQU5VQVInLCdGRUJSVUFSJywnTcOEUlonLCdBUFJJTCcsJ01BSScs
J0pVTkknLCdKVUxJJywnQVVHVVNUJywnU0VQVEVNQkVSJywnT0tUT0JFUicsJ05PVkVNQkVSJywn
REVaRU1CRVInXSwKLSAgICAgICAgICAgICdzaG9ydGN1dHMnIDogJ1NjaG5lbGx3YWhsJywKLSAg
ICAgICAgICAgICdwYXN0JzogJ1ZvcmhlcmlnZScsCi0gICAgICAgICAgICAnZm9sbG93aW5nJzon
Rm9sZ2VuZGUnLAotICAgICAgICAgICAgJ3ByZXZpb3VzJyA6ICdWb3JoZXJpZ2UnLAotICAgICAg
ICAgICAgJ3ByZXYtd2VlaycgOiAnV29jaGUnLAotICAgICAgICAgICAgJ3ByZXYtbW9udGgnIDog
J01vbmF0JywKLSAgICAgICAgICAgICdwcmV2LXllYXInIDogJ0phaHInLAotICAgICAgICAgICAg
J25leHQnOidOw6RjaHN0ZScsCi0gICAgICAgICAgICAnbmV4dC13ZWVrJzonV29jaGUnLAotICAg
ICAgICAgICAgJ25leHQtbW9udGgnOidNb25hdCcsCi0gICAgICAgICAgICAnbmV4dC15ZWFyJzon
SmFocicsCi0gICAgICAgICAgICAnbGVzcy10aGFuJyA6ICdEYXR1bXNiZXJlaWNoIGRhcmYgbmlj
aHQgZ3LDtsOfZXIgc2VpbiBhbHMgJWQgVGFnZScsCi0gICAgICAgICAgICAnbW9yZS10aGFuJyA6
ICdEYXR1bXNiZXJlaWNoIGRhcmYgbmljaHQga2xlaW5lciBzZWluIGFscyAlZCBUYWdlJywKLSAg
ICAgICAgICAgICdkZWZhdWx0LW1vcmUnIDogJ0JpdHRlIG1pbmRlc3RlbnMgJWQgVGFnZSBhdXN3
w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LXNpbmdsZScgOiAnQml0dGUgZWluIERhdHVt
IGF1c3fDpGhsZW4nLAotICAgICAgICAgICAgJ2RlZmF1bHQtbGVzcycgOiAnQml0dGUgd2VuaWdl
ciBhbHMgJWQgVGFnZSBhdXN3w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6
ICdCaXR0ZSBlaW5lbiBEYXR1bXNiZXJlaWNoIHp3aXNjaGVuICVkIHVuZCAlZCBUYWdlbiBhdXN3
w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LWRlZmF1bHQnOiAnQml0dGUgZWluIFN0YXJ0
LSB1bmQgRW5kZGF0dW0gYXVzd8OkaGxlbicKLSAgICAgICAgfQotICAgIH07Ci0KLQotICAgIGlm
ICh3aW5kb3dbJ21vbWVudCddID09PSB1bmRlZmluZWQpCi0gICAgewotICAgICAgICBpZiAod2lu
ZG93Wydjb25zb2xlJ10gJiYgY29uc29sZVsnd2FybiddKSBjb25zb2xlLndhcm4oJ1BsZWFzZSBp
bXBvcnQgbW9tZW50LmpzIGJlZm9yZSBkYXRlcmFuZ2VwaWNrZXIuanMnKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgICQuZm4uZGF0ZVJhbmdlUGlja2VyID0gZnVuY3Rpb24ob3B0KQot
ICAgIHsKLSAgICAgICAgaWYgKCFvcHQpIG9wdCA9IHt9OwotICAgICAgICBvcHQgPSAkLmV4dGVu
ZCh0cnVlLAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvQ2xvc2U6IGZhbHNlLAotICAgICAg
ICAgICAgZm9ybWF0OiAnWVlZWS1NTS1ERCcsCi0gICAgICAgICAgICBzZXBhcmF0b3I6ICcgdG8g
JywKLSAgICAgICAgICAgIGxhbmd1YWdlOiAnYXV0bycsCi0gICAgICAgICAgICBzdGFydE9mV2Vl
azogJ3N1bmRheScsLy8gb3IgbW9uZGF5Ci0gICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rpb24o
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgpOwot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbihzKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICQodGhpcykudmFsKHMpOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIHN0YXJ0RGF0ZTogZmFsc2UsCi0gICAgICAgICAgICBlbmREYXRlOiBmYWxz
ZSwKLSAgICAgICAgICAgIHRpbWU6IHsKLSAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxzZQot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG1pbkRheXM6IDAsCi0gICAgICAgICAgICBtYXhE
YXlzOiAwLAotICAgICAgICAgICAgc2hvd1Nob3J0Y3V0czogdHJ1ZSwKLSAgICAgICAgICAgIHNo
b3J0Y3V0czoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLydwcmV2LWRheXMnOiBb
MSwzLDUsN10sCi0gICAgICAgICAgICAgICAgJ25leHQtZGF5cyc6IFszLDUsN10sCi0gICAgICAg
ICAgICAgICAgLy8ncHJldicgOiBbJ3dlZWsnLCdtb250aCcsJ3llYXInXSwKLSAgICAgICAgICAg
ICAgICAnbmV4dCcgOiBbJ3dlZWsnLCdtb250aCcsJ3llYXInXQotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIGN1c3RvbVNob3J0Y3V0cyA6IFtdLAotICAgICAgICAgICAgaW5saW5lOmZhbHNl
LAotICAgICAgICAgICAgY29udGFpbmVyOidib2R5JywKLSAgICAgICAgICAgIGFsd2F5c09wZW46
ZmFsc2UsCi0gICAgICAgICAgICBzaW5nbGVEYXRlOmZhbHNlLAotICAgICAgICAgICAgYmF0Y2hN
b2RlOiBmYWxzZQotICAgICAgICB9LG9wdCk7Ci0KLSAgICAgICAgb3B0LnN0YXJ0ID0gZmFsc2U7
Ci0gICAgICAgIG9wdC5lbmQgPSBmYWxzZTsKLQotICAgICAgICBpZiAob3B0LnN0YXJ0RGF0ZSAm
JiB0eXBlb2Ygb3B0LnN0YXJ0RGF0ZSA9PSAnc3RyaW5nJykgb3B0LnN0YXJ0RGF0ZSA9IG1vbWVu
dChvcHQuc3RhcnREYXRlLG9wdC5mb3JtYXQpLnRvRGF0ZSgpOwotICAgICAgICBpZiAob3B0LmVu
ZERhdGUgJiYgdHlwZW9mIG9wdC5lbmREYXRlID09ICdzdHJpbmcnKSBvcHQuZW5kRGF0ZSA9IG1v
bWVudChvcHQuZW5kRGF0ZSxvcHQuZm9ybWF0KS50b0RhdGUoKTsKLQotICAgICAgICB2YXIgbGFu
Z3MgPSBnZXRMYW5ndWFnZXMoKTsKLSAgICAgICAgdmFyIGJveDsKLSAgICAgICAgdmFyIGluaXRp
YXRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBzZWxm
RG9tID0gJChzZWxmKS5nZXQoMCk7Ci0KLSAgICAgICAgJCh0aGlzKS51bmJpbmQoJy5kYXRlcGlj
a2VyJykuYmluZCgnY2xpY2suZGF0ZXBpY2tlcicsZnVuY3Rpb24oZXZ0KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAgICBvcGVuKDIwMCk7
Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGluaXRfZGF0ZXBpY2tlci5jYWxsKHRoaXMpOwotCi0g
ICAgICAgIGlmIChvcHQuYWx3YXlzT3BlbikKLSAgICAgICAgewotICAgICAgICAgICAgb3Blbigw
KTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGV4cG9zZSBzb21lIGFwaQotICAgICAgICAkKHRo
aXMpLmRhdGEoJ2RhdGVSYW5nZVBpY2tlcicsCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNldERh
dGVSYW5nZSA6IGZ1bmN0aW9uKGQxLGQyKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAg
IGlmICh0eXBlb2YgZDEgPT0gJ3N0cmluZycgJiYgdHlwZW9mIGQyID09ICdzdHJpbmcnKQotICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZDEgPSBtb21lbnQoZDEsb3B0LmZv
cm1hdCkudG9EYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGQyID0gbW9tZW50KGQyLG9wdC5m
b3JtYXQpLnRvRGF0ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZXRE
YXRlUmFuZ2UoZDEsZDIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGNsZWFyOiBjbGVh
clNlbGVjdGlvbiwKLSAgICAgICAgICAgIGNsb3NlOiBjbG9zZURhdGVQaWNrZXIsCi0gICAgICAg
ICAgICBvcGVuOiBvcGVuLAotICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICQoc2VsZikudW5iaW5kKCcuZGF0ZXBpY2tlcicpOwot
ICAgICAgICAgICAgICAgICQoc2VsZikuZGF0YSgnZGF0ZVJhbmdlUGlja2VyJywnJyk7Ci0gICAg
ICAgICAgICAgICAgYm94LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICQod2luZG93KS51bmJp
bmQoJ3Jlc2l6ZS5kYXRlcGlja2VyJyxjYWxjUG9zaXRpb24pOwotICAgICAgICAgICAgICAgICQo
ZG9jdW1lbnQpLnVuYmluZCgnY2xpY2suZGF0ZXBpY2tlcicsY2xvc2VEYXRlUGlja2VyKTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3Jlc2l6
ZS5kYXRlcGlja2VyJyxjYWxjUG9zaXRpb24pOwotCi0gICAgICAgIHJldHVybiB0aGlzOwotCi0K
LQotCi0KLQotCi0KLQotCi0KLSAgICAgICAgZnVuY3Rpb24gaW5pdF9kYXRlcGlja2VyKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgICAgICBpZiAo
JCh0aGlzKS5kYXRhKCdkYXRlLXBpY2tlci1vcGVuZWQnKSkKLSAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICBjbG9zZURhdGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2RhdGUtcGlja2VyLW9wZW5l
ZCcsdHJ1ZSk7Ci0KLQotCi0KLQotICAgICAgICAgICAgYm94ID0gY3JlYXRlRG9tKCkuaGlkZSgp
OwotICAgICAgICAgICAgJChvcHQuY29udGFpbmVyKS5hcHBlbmQoYm94KTsKLQotICAgICAgICAg
ICAgaWYgKCFvcHQuaW5saW5lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNhbGNQ
b3NpdGlvbigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgIGJveC5jc3Moe3Bvc2l0aW9uOidzdGF0aWMnfSk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChvcHQuYWx3YXlzT3BlbikKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLmhpZGUoKTsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgdmFyIGRlZmF1bHRUaW1lID0gbmV3IERhdGUoKTsKLSAgICAg
ICAgICAgIGlmIChvcHQuc3RhcnREYXRlICYmIGNvbXBhcmVfbW9udGgoZGVmYXVsdFRpbWUsb3B0
LnN0YXJ0RGF0ZSkgPCAwICkgZGVmYXVsdFRpbWUgPSBtb21lbnQob3B0LnN0YXJ0RGF0ZSkudG9E
YXRlKCk7Ci0gICAgICAgICAgICBpZiAob3B0LmVuZERhdGUgJiYgY29tcGFyZV9tb250aChuZXh0
TW9udGgoZGVmYXVsdFRpbWUpLG9wdC5lbmREYXRlKSA+IDAgKSBkZWZhdWx0VGltZSA9IHByZXZN
b250aChtb21lbnQob3B0LmVuZERhdGUpLnRvRGF0ZSgpKTsKLQotCi0gICAgICAgICAgICBzaG93
TW9udGgoZGVmYXVsdFRpbWUsJ21vbnRoMScpOwotICAgICAgICAgICAgc2hvd01vbnRoKG5leHRN
b250aChkZWZhdWx0VGltZSksJ21vbnRoMicpOwotCi0gICAgICAgICAgICBpZiAob3B0LnRpbWUu
ZW5hYmxlZCkgewotICAgICAgICAgICAgICAgIGlmICgob3B0LnN0YXJ0RGF0ZSAmJiBvcHQuZW5k
RGF0ZSkgfHwgKG9wdC5zdGFydCAmJiBvcHQuZW5kKSkgewotICAgICAgICAgICAgICAgICAgICBz
aG93VGltZShtb21lbnQob3B0LnN0YXJ0IHx8IG9wdC5zdGFydERhdGUpLnRvRGF0ZSgpLCd0aW1l
MScpOwotICAgICAgICAgICAgICAgICAgICBzaG93VGltZShtb21lbnQob3B0LmVuZCB8fCBvcHQu
ZW5kRGF0ZSkudG9EYXRlKCksJ3RpbWUyJyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgc2hvd1RpbWUoZGVmYXVsdFRpbWUsJ3RpbWUxJyk7Ci0gICAgICAg
ICAgICAgICAgICAgIHNob3dUaW1lKGRlZmF1bHRUaW1lLCd0aW1lMicpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy9zaG93U2VsZWN0ZWRJbmZvKCk7
Ci0KLQotCi0KLSAgICAgICAgICAgIHZhciBkZWZhdWx0VG9wVGV4dCA9ICcnOwotICAgICAgICAg
ICAgaWYgKG9wdC5zaW5nbGVEYXRlKQotICAgICAgICAgICAgICAgIGRlZmF1bHRUb3BUZXh0ID0g
bGFuZygnZGVmYXVsdC1zaW5nbGUnKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5taW5EYXlz
ICYmIG9wdC5tYXhEYXlzKQotICAgICAgICAgICAgICAgIGRlZmF1bHRUb3BUZXh0ID0gbGFuZygn
ZGVmYXVsdC1yYW5nZScpOwotICAgICAgICAgICAgZWxzZSBpZiAob3B0Lm1pbkRheXMpCi0gICAg
ICAgICAgICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LW1vcmUnKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKG9wdC5tYXhEYXlzKQotICAgICAgICAgICAgICAgIGRlZmF1bHRUb3BU
ZXh0ID0gbGFuZygnZGVmYXVsdC1sZXNzJyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LWRlZmF1bHQnKTsKLQotICAgICAg
ICAgICAgYm94LmZpbmQoJy5kZWZhdWx0LXRvcCcpLmh0bWwoIGRlZmF1bHRUb3BUZXh0LnJlcGxh
Y2UoL1wlZC8sb3B0Lm1pbkRheXMpLnJlcGxhY2UoL1wlZC8sb3B0Lm1heERheXMpKTsKLQotCi0K
LQotICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgaW5pdGlhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0sMCk7Ci0KLSAgICAg
ICAgICAgIGJveC5jbGljayhmdW5jdGlvbihldnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICAgICQoZG9jdW1lbnQpLmJpbmQoJ2NsaWNrLmRhdGVwaWNrZXInLGNsb3NlRGF0ZVBpY2tlcik7
Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCcubmV4dCcpLmNsaWNrKGZ1bmN0aW9uKCkKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgaXNNb250aDIgPSAkKHRoaXMpLnBhcmVudHMo
J3RhYmxlJykuaGFzQ2xhc3MoJ21vbnRoMicpOwotICAgICAgICAgICAgICAgIHZhciBtb250aCA9
IGlzTW9udGgyID8gb3B0Lm1vbnRoMiA6IG9wdC5tb250aDE7Ci0gICAgICAgICAgICAgICAgbW9u
dGggPSBuZXh0TW9udGgobW9udGgpOwotICAgICAgICAgICAgICAgIGlmICghb3B0LnNpbmdsZURh
dGUgJiYgIWlzTW9udGgyICYmIGNvbXBhcmVfbW9udGgobW9udGgsb3B0Lm1vbnRoMikgPj0gMCkg
cmV0dXJuOwotICAgICAgICAgICAgICAgIHNob3dNb250aChtb250aCxpc01vbnRoMiA/ICdtb250
aDInIDogJ21vbnRoMScpOwotICAgICAgICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICBib3guZmluZCgnLnByZXYnKS5jbGljayhmdW5jdGlvbigpCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIGlzTW9udGgyID0gJCh0aGlzKS5wYXJl
bnRzKCd0YWJsZScpLmhhc0NsYXNzKCdtb250aDInKTsKLSAgICAgICAgICAgICAgICB2YXIgbW9u
dGggPSBpc01vbnRoMiA/IG9wdC5tb250aDIgOiBvcHQubW9udGgxOwotICAgICAgICAgICAgICAg
IG1vbnRoID0gcHJldk1vbnRoKG1vbnRoKTsKLSAgICAgICAgICAgICAgICAvL2lmIChpc01vbnRo
MiAmJiBtb250aC5nZXRGdWxsWWVhcigpKycnK21vbnRoLmdldE1vbnRoKCkgPD0gb3B0Lm1vbnRo
MS5nZXRGdWxsWWVhcigpKycnK29wdC5tb250aDEuZ2V0TW9udGgoKSkgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIGlmIChpc01vbnRoMiAmJiBjb21wYXJlX21vbnRoKG1vbnRoLG9wdC5tb250aDEp
IDw9IDApIHJldHVybjsKLSAgICAgICAgICAgICAgICBzaG93TW9udGgobW9udGgsaXNNb250aDIg
PyAnbW9udGgyJyA6ICdtb250aDEnKTsKLSAgICAgICAgICAgICAgICBzaG93R2FwKCk7Ci0gICAg
ICAgICAgICB9KTsKLQotCi0gICAgICAgICAgICBib3guYmluZCgnY2xpY2snLGZ1bmN0aW9uKGV2
dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoJChldnQudGFyZ2V0KS5oYXND
bGFzcygnZGF5JykpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBkYXlD
bGlja2VkKCQoZXZ0LnRhcmdldCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0p
OwotCi0gICAgICAgICAgICBib3guYXR0cigndW5zZWxlY3RhYmxlJywgJ29uJykKLSAgICAgICAg
ICAgIC5jc3MoJ3VzZXItc2VsZWN0JywgJ25vbmUnKQotICAgICAgICAgICAgLmJpbmQoJ3NlbGVj
dHN0YXJ0JywgZnVuY3Rpb24oZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBlLnBy
ZXZlbnREZWZhdWx0KCk7IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAg
ICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBjbG9zZURhdGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAgICB2
YXIgZGF0ZVJhbmdlID0gZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuc3RhcnQpKSsgb3B0LnNl
cGFyYXRvciArZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuZW5kKSk7Ci0gICAgICAgICAgICAg
ICAgJChzZWxmKS50cmlnZ2VyKCdkYXRlcGlja2VyLWFwcGx5JywKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IGRhdGVSYW5nZSwKLSAgICAgICAgICAgICAg
ICAgICAgJ2RhdGUxJyA6IG5ldyBEYXRlKG9wdC5zdGFydCksCi0gICAgICAgICAgICAgICAgICAg
ICdkYXRlMicgOiBuZXcgRGF0ZShvcHQuZW5kKQotICAgICAgICAgICAgICAgIH0pOwotICAgICAg
ICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCdbc2hvcnRjdXRdJykuY2xpY2soZnVu
Y3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBzaG9ydGN1dCA9ICQo
dGhpcykuYXR0cignc2hvcnRjdXQnKTsKLSAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3IERh
dGUoKSxzdGFydCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzaG9ydGN1dC5pbmRleE9m
KCdkYXknKSAhPSAtMSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBkYXkgPSBwYXJzZUludChzaG9ydGN1dC5zcGxpdCgnLCcsMilbMV0sMTApOwotICAgICAgICAg
ICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgODY0MDAw
MDAqZGF5KTsKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gbmV3IERhdGUoZW5kLmdldFRpbWUo
KSArIDg2NDAwMDAwKihkYXk+MD8xOi0xKSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICBlbHNlIGlmIChzaG9ydGN1dC5pbmRleE9mKCd3ZWVrJykhPSAtMSkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBzaG9ydGN1dC5pbmRleE9m
KCdwcmV2LCcpICE9IC0xID8gLTEgOiAxOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChkaXIg
PT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdG9wRGF5ID0gb3B0LnN0YXJ0T2ZX
ZWVrID09ICdtb25kYXknID8gMSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhciBzdG9wRGF5ID0gb3B0LnN0YXJ0T2ZXZWVrID09ICdtb25k
YXknID8gMCA6IDY7Ci0KLSAgICAgICAgICAgICAgICAgICAgZW5kID0gbmV3IERhdGUoZW5kLmdl
dFRpbWUoKSAtIDg2NDAwMDAwKTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUoZW5kLmdldERh
eSgpICE9IHN0b3BEYXkpIGVuZCA9IG5ldyBEYXRlKGVuZC5nZXRUaW1lKCkgKyBkaXIqODY0MDAw
MDApOwotICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKGVuZC5nZXRUaW1lKCkg
KyBkaXIqODY0MDAwMDAqNik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHNob3J0Y3V0LmluZGV4T2YoJ21vbnRoJykgIT0gLTEpCi0gICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gc2hvcnRjdXQuaW5kZXhPZigncHJldiwn
KSAhPSAtMSA/IC0xIDogMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PSAxKQotICAg
ICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBuZXh0TW9udGgoZW5kKTsKLSAgICAgICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBwcmV2TW9udGgo
ZW5kKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0RGF0ZSgxKTsKLSAgICAgICAgICAg
ICAgICAgICAgZW5kID0gbmV4dE1vbnRoKHN0YXJ0KTsKLSAgICAgICAgICAgICAgICAgICAgZW5k
LnNldERhdGUoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9IG5ldyBEYXRlKGVuZC5nZXRU
aW1lKCkgLSA4NjQwMDAwMCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVs
c2UgaWYgKHNob3J0Y3V0LmluZGV4T2YoJ3llYXInKSAhPSAtMSkKLSAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBzaG9ydGN1dC5pbmRleE9mKCdwcmV2LCcp
ICE9IC0xID8gLTEgOiAxOwotICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKCk7
Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEZ1bGxZZWFyKGVuZC5nZXRGdWxsWWVhcigp
ICsgZGlyKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TW9udGgoMCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHN0YXJ0LnNldERhdGUoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZC5z
ZXRGdWxsWWVhcihlbmQuZ2V0RnVsbFllYXIoKSArIGRpcik7Ci0gICAgICAgICAgICAgICAgICAg
IGVuZC5zZXRNb250aCgxMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZC5zZXREYXRlKDMxKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvcnRjdXQgPT0g
J2N1c3RvbScpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXIgbmFt
ZSA9ICQodGhpcykuaHRtbCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmN1c3RvbVNo
b3J0Y3V0cyAmJiBvcHQuY3VzdG9tU2hvcnRjdXRzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8b3B0LmN1c3Rv
bVNob3J0Y3V0cy5sZW5ndGg7aSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBzaCA9IG9wdC5jdXN0b21TaG9ydGN1dHNbaV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoLm5hbWUgPT0gbmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBkYXRhID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyeQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkYXRhID0gc2hbJ2RhdGVzJ10uY2FsbCgpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAvL31jYXRjaChlKXt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID09IDIpCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0
ID0gZGF0YVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9IGRh
dGFbMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBpZiBvbmx5IG9uZSBkYXRlIGlzIHNwZWNpZmllZCB0aGVu
IGp1c3QgbW92ZSBjYWxlbmRhcnMgdGhlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbW92ZSBjYWxlbmRhcnMgdG8gc2hvdyB0aGlzIGRhdGUncyBtb250aCBhbmQgbmV4dCBt
b250aHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0YS5s
ZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZXRvZGF0ZSA9IGRhdGFbMF07Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGgobW92ZXRvZGF0ZSwnbW9udGgx
Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGgobmV4dE1v
bnRoKG1vdmV0b2RhdGUpLCdtb250aDInKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgJiYgZW5k
KQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RGF0ZVJhbmdlKHN0
YXJ0LGVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrU2VsZWN0aW9uVmFsaWQoKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYm94LmZpbmQo
Ii50aW1lMSBpbnB1dFt0eXBlPXJhbmdlXSIpLmJpbmQoImNoYW5nZSBtb3VzZW1vdmUiLCBmdW5j
dGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCwKLSAgICAg
ICAgICAgICAgICAgICAgaG91ciA9IHRhcmdldC5uYW1lID09ICJob3VyIiA/ICQodGFyZ2V0KS52
YWwoKS5yZXBsYWNlKC9eKFxkezF9KSQvLCAiMCQxIikgOiB1bmRlZmluZWQsCi0gICAgICAgICAg
ICAgICAgICAgIG1pbiA9IHRhcmdldC5uYW1lID09ICJtaW51dGUiID8gJCh0YXJnZXQpLnZhbCgp
LnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgICAgICAg
ICBzZXRUaW1lKCJ0aW1lMSIsIGhvdXIsIG1pbik7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgYm94LmZpbmQoIi50aW1lMiBpbnB1dFt0eXBlPXJhbmdlXSIpLmJpbmQoImNoYW5nZSBt
b3VzZW1vdmUiLCBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBl
LnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgaG91ciA9IHRhcmdldC5uYW1lID09ICJob3Vy
IiA/ICQodGFyZ2V0KS52YWwoKS5yZXBsYWNlKC9eKFxkezF9KSQvLCAiMCQxIikgOiB1bmRlZmlu
ZWQsCi0gICAgICAgICAgICAgICAgICAgIG1pbiA9IHRhcmdldC5uYW1lID09ICJtaW51dGUiID8g
JCh0YXJnZXQpLnZhbCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHVuZGVmaW5lZDsK
LSAgICAgICAgICAgICAgICBzZXRUaW1lKCJ0aW1lMiIsIGhvdXIsIG1pbik7Ci0gICAgICAgICAg
ICB9KTsKLQotICAgICAgICB9Ci0KLQotICAgICAgICBmdW5jdGlvbiBjYWxjUG9zaXRpb24oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW9wdC5pbmxpbmUpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgdmFyIG9mZnNldCA9ICQoc2VsZikub2Zmc2V0KCk7Ci0vKiBBcHBsZSBj
aGFuZ2UKLSAgICAgICAgICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCA0NjApIC8vbGVmdCB0byBy
aWdodAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYm94LmNzcygKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBvZmZzZXQu
dG9wKyQoc2VsZikub3V0ZXJIZWlnaHQoKSArIHBhcnNlSW50KCQoJ2JvZHknKS5jc3MoJ2JvcmRl
ci10b3AnKSB8fCAwLDEwICksCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBvZmZzZXQu
bGVmdAotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYm94
LmNzcygKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9w
OiBvZmZzZXQudG9wKyQoc2VsZikub3V0ZXJIZWlnaHQoKSArIHBhcnNlSW50KCQoJ2JvZHknKS5j
c3MoJ2JvcmRlci10b3AnKSB8fCAwLDEwICksCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0
OiBvZmZzZXQubGVmdCArICQoc2VsZikud2lkdGgoKSAtIGJveC53aWR0aCgpIC0gMTYKLSAgICAg
ICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotKi8KLSAgICAgICAgICAgICAg
ICBib3guY3NzKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdG9wOiAk
KHNlbGYpLm91dGVySGVpZ2h0KCkgKyBwYXJzZUludCgkKCdib2R5JykuY3NzKCdib3JkZXItdG9w
JykgfHwgMCwxMCApLAotLy8gICAgICAgICAgICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0ICsg
JChzZWxmKS53aWR0aCgpIC0gYm94LndpZHRoKCkgLSAxNgotICAgICAgICAgICAgICAgIH0pOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gb3BlbihhbmltYXRp
b25UaW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxjUG9zaXRpb24oKTsKLSAgICAgICAg
ICAgIHZhciBfX2RlZmF1bHRfc3RyaW5nID0gb3B0LmdldFZhbHVlLmNhbGwoc2VsZkRvbSk7Ci0g
ICAgICAgICAgICB2YXIgZGVmYXVsdHMgPSBfX2RlZmF1bHRfc3RyaW5nID8gX19kZWZhdWx0X3N0
cmluZy5zcGxpdCggb3B0LnNlcGFyYXRvciApIDogJyc7Ci0KLSAgICAgICAgICAgIGlmIChkZWZh
dWx0cyAmJiBkZWZhdWx0cy5sZW5ndGggPj0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB2YXIgX19fZm9ybWF0ID0gb3B0LmZvcm1hdDsKLSAgICAgICAgICAgICAgICBpZiAoX19f
Zm9ybWF0Lm1hdGNoKC9Eby8pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgX19fZm9ybWF0ID0gX19fZm9ybWF0LnJlcGxhY2UoL0RvLywnRCcpOwotICAgICAgICAgICAg
ICAgICAgICBkZWZhdWx0c1swXSA9IGRlZmF1bHRzWzBdLnJlcGxhY2UoLyhcZCspKHRofG5kfHN0
KS8sJyQxJyk7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzWzFdID0gZGVmYXVsdHNbMV0u
cmVwbGFjZSgvKFxkKykodGh8bmR8c3QpLywnJDEnKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgIC8vIHNldCBpbml0aWF0ZWQgIHRvIGF2b2lkIHRyaWdnZXJyaW5nIGRhdGVwaWNrZXItY2hh
bmdlIGV2ZW50Ci0gICAgICAgIGluaXRpYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHNl
dERhdGVSYW5nZShtb21lbnQoZGVmYXVsdHNbMF0sIF9fX2Zvcm1hdCkudG9EYXRlKCksbW9tZW50
KGRlZmF1bHRzWzFdLCBfX19mb3JtYXQpLnRvRGF0ZSgpKTsKLSAgICAgICAgaW5pdGlhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJveC5zbGlkZURvd24oYW5pbWF0aW9u
VGltZSk7Ci0gICAgICAgIH0KLQotCi0KLSAgICAgICAgZnVuY3Rpb24gcmVuZGVyVGltZSAobmFt
ZSwgZGF0ZSkgewotICAgICAgICAgICAgYm94LmZpbmQoIi4iICsgbmFtZSArICIgaW5wdXRbdHlw
ZT1yYW5nZV0uaG91ci1yYW5nZSIpLnZhbChtb21lbnQoZGF0ZSkuaG91cnMoKSk7Ci0gICAgICAg
ICAgICBib3guZmluZCgiLiIgKyBuYW1lICsgIiBpbnB1dFt0eXBlPXJhbmdlXS5taW51dGUtcmFu
Z2UiKS52YWwobW9tZW50KGRhdGUpLm1pbnV0ZXMoKSk7Ci0gICAgICAgICAgICBzZXRUaW1lKG5h
bWUsIG1vbWVudChkYXRlKS5mb3JtYXQoIkhIIiksIG1vbWVudChkYXRlKS5mb3JtYXQoIm1tIikp
OwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hhbmdlVGltZSAobmFtZSwgZGF0ZSkg
ewotICAgICAgICAgICAgb3B0W25hbWVdID0gcGFyc2VJbnQoCi0gICAgICAgICAgICAgICAgbW9t
ZW50KHBhcnNlSW50KGRhdGUpKQotICAgICAgICAgICAgICAgICAgICAuc3RhcnRPZignZGF5JykK
LSAgICAgICAgICAgICAgICAgICAgLmFkZCgnaCcsIG1vbWVudChvcHRbbmFtZSArICJUaW1lIl0p
LmZvcm1hdCgiSEgiKSkKLSAgICAgICAgICAgICAgICAgICAgLmFkZCgnbScsIG1vbWVudChvcHRb
bmFtZSArICJUaW1lIl0pLmZvcm1hdCgibW0iKSkudmFsdWVPZigpCi0gICAgICAgICAgICAgICAg
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN3YXBUaW1lICgpIHsKLSAgICAgICAg
ICAgIHJlbmRlclRpbWUoInRpbWUxIiwgb3B0LnN0YXJ0KTsKLSAgICAgICAgICAgIHJlbmRlclRp
bWUoInRpbWUyIiwgb3B0LmVuZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBzZXRU
aW1lIChuYW1lLCBob3VyLCBtaW51dGUpIHsKLSAgICAgICAgICAgIGhvdXIgJiYgKGJveC5maW5k
KCIuIiArIG5hbWUgKyAiIC5ob3VyLXZhbCIpLnRleHQoaG91cikpOwotICAgICAgICAgICAgbWlu
dXRlICYmIChib3guZmluZCgiLiIgKyBuYW1lICsgIiAubWludXRlLXZhbCIpLnRleHQobWludXRl
KSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKLSAgICAgICAgICAgICAgICBjYXNlICJ0
aW1lMSI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuc3RhcnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHNldFJhbmdlKCJzdGFydCIsIG1vbWVudChvcHQuc3RhcnQpKTsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZXRSYW5nZSgic3RhcnRUaW1l
IiwgbW9tZW50KG9wdC5zdGFydFRpbWUgfHwgbW9tZW50KCkudmFsdWVPZigpKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgInRpbWUyIjoKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKG9wdC5lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNl
dFJhbmdlKCJlbmQiLCBtb21lbnQob3B0LmVuZCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgIHNldFJhbmdlKCJlbmRUaW1lIiwgbW9tZW50KG9wdC5lbmRUaW1l
IHx8IG1vbWVudCgpLnZhbHVlT2YoKSkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHNldFJhbmdlKG5hbWUsIHRpbWVQb2lu
dCkgewotICAgICAgICAgICAgICAgIHZhciBoID0gdGltZVBvaW50LmZvcm1hdCgiSEgiKSwKLSAg
ICAgICAgICAgICAgICAgICAgbSA9IHRpbWVQb2ludC5mb3JtYXQoIm1tIik7Ci0gICAgICAgICAg
ICAgICAgb3B0W25hbWVdID0gdGltZVBvaW50Ci0gICAgICAgICAgICAgICAgICAgIC5zdGFydE9m
KCdkYXknKQotICAgICAgICAgICAgICAgICAgICAuYWRkKCJoIiwgaG91ciB8fCBoKQotICAgICAg
ICAgICAgICAgICAgICAuYWRkKCJtIiwgbWludXRlIHx8IG0pCi0gICAgICAgICAgICAgICAgICAg
IC52YWx1ZU9mKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaGVja1NlbGVjdGlvblZh
bGlkKCk7Ci0gICAgICAgICAgICBzaG93U2VsZWN0ZWRJbmZvKCk7Ci0gICAgICAgICAgICBzaG93
U2VsZWN0ZWREYXlzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjbGVhclNlbGVj
dGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG9wdC5zdGFydCA9IGZhbHNlOwotICAgICAg
ICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgYm94LmZpbmQoJy5kYXkuY2hlY2tl
ZCcpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICBvcHQuc2V0VmFsdWUuY2Fs
bChzZWxmRG9tLCAnJyk7Ci0gICAgICAgICAgICBjaGVja1NlbGVjdGlvblZhbGlkKCk7Ci0gICAg
ICAgICAgICBzaG93U2VsZWN0ZWRJbmZvKCk7Ci0gICAgICAgICAgICBzaG93U2VsZWN0ZWREYXlz
KCk7Ci0gICAgICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0KHRpbWUpCi0gICAgewot
ICAgICAgdmFyIHIgPSB0aW1lOwotICAgICAgaWYgIChvcHQuYmF0Y2hNb2RlID09PSAnd2Vlay1y
YW5nZScpIHsKLSAgICAgICAgaWYgKG9wdC5zdGFydE9mV2VlayA9PT0gJ21vbmRheScpIHsKLSAg
ICAgICAgICAgICAgICAgICAgciA9IG1vbWVudChwYXJzZUludCh0aW1lKSkuc3RhcnRPZignaXNv
d2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCd3ZWVrJykudmFsdWVP
ZigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAob3B0LmJhdGNoTW9kZSA9
PT0gJ21vbnRoLXJhbmdlJykgewotICAgICAgICAgICAgICAgIHIgPSBtb21lbnQocGFyc2VJbnQo
dGltZSkpLnN0YXJ0T2YoJ21vbnRoJykudmFsdWVPZigpOwotICAgICAgfQotCi0gICAgICByZXR1
cm4gcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBoYW5kbGVFbmQodGltZSkKLSAgICB7Ci0gICAg
ICB2YXIgciA9IHRpbWU7Ci0gICAgICBpZiAgKG9wdC5iYXRjaE1vZGUgPT09ICd3ZWVrLXJhbmdl
JykgewotICAgICAgICBpZiAob3B0LnN0YXJ0T2ZXZWVrID09PSAnbW9uZGF5LXJhbmdlJykgewot
ICAgICAgICAgICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZignaXNv
d2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZignd2VlaycpLnZhbHVlT2Yo
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKG9wdC5iYXRjaE1vZGUgPT09
ICdtb250aCcpIHsKLSAgICAgICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5l
bmRPZignbW9udGgnKS52YWx1ZU9mKCk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiByOwotICAg
IH0KLQotCi0gICAgICAgIGZ1bmN0aW9uIGRheUNsaWNrZWQoZGF5KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoZGF5Lmhhc0NsYXNzKCdpbnZhbGlkJykpIHJldHVybjsKLSAgICAgICAgICAg
IHZhciB0aW1lID0gZGF5LmF0dHIoJ3RpbWUnKTsKLSAgICAgICAgICAgIGRheS5hZGRDbGFzcygn
Y2hlY2tlZCcpOwotICAgICAgICAgICAgaWYgKCBvcHQuc2luZ2xlRGF0ZSApCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gdGltZTsKLSAgICAgICAgICAgICAgICBv
cHQuZW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdC50aW1lLmVuYWJsZWQpIHsK
LSAgICAgICAgICAgICAgICAgICAgY2hhbmdlVGltZSgic3RhcnQiLCBvcHQuc3RhcnQpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgIChvcHQu
YmF0Y2hNb2RlID09PSAnd2VlaycpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYg
KG9wdC5zdGFydE9mV2VlayA9PT0gJ21vbmRheScpIHsKLSAgICAgICAgICAgICAgICAgICAgb3B0
LnN0YXJ0ID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCdpc293ZWVrJykudmFsdWVP
ZigpOwotICAgICAgICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRpbWUp
KS5lbmRPZignaXNvd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ugewot
ICAgICAgICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRP
Zignd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gbW9t
ZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCd3ZWVrJykudmFsdWVPZigpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5iYXRjaE1v
ZGUgPT09ICdtb250aCcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0
ID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCdtb250aCcpLnZhbHVlT2YoKTsKLSAg
ICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZignbW9u
dGgnKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgob3B0
LnN0YXJ0ICYmIG9wdC5lbmQpIHx8ICghb3B0LnN0YXJ0ICYmICFvcHQuZW5kKSApCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gaGFuZGxlU3RhcnQodGltZSk7Ci0g
ICAgICAgICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChvcHQu
dGltZS5lbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZVRpbWUoInN0YXJ0Iiwg
b3B0LnN0YXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBlbHNlIGlmIChvcHQuc3RhcnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0
LmVuZCA9IGhhbmRsZUVuZCh0aW1lKTsKLSAgICAgICAgICAgICAgICBpZiAob3B0LnRpbWUuZW5h
YmxlZCkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VUaW1lKCJlbmQiLCBvcHQuZW5kKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghb3B0
LnNpbmdsZURhdGUgJiYgb3B0LnN0YXJ0ICYmIG9wdC5lbmQgJiYgb3B0LnN0YXJ0ID4gb3B0LmVu
ZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgdG1wID0gb3B0LmVuZDsKLSAg
ICAgICAgICAgICAgICBvcHQuZW5kID0gaGFuZGxlRW5kKG9wdC5zdGFydCk7Ci0gICAgICAgICAg
ICAgICAgb3B0LnN0YXJ0ID0gaGFuZGxlU3RhcnQodG1wKTsKLSAgICAgICAgICAgICAgICBpZiAo
b3B0LnRpbWUuZW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICBzd2FwVGltZSgpOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3B0LnN0YXJ0ID0g
cGFyc2VJbnQob3B0LnN0YXJ0KTsKLSAgICAgICAgICAgIG9wdC5lbmQgPSBwYXJzZUludChvcHQu
ZW5kKTsKLQotICAgICAgICAgICAgY2hlY2tTZWxlY3Rpb25WYWxpZCgpOwotICAgICAgICAgICAg
c2hvd1NlbGVjdGVkSW5mbygpOwotICAgICAgICAgICAgc2hvd1NlbGVjdGVkRGF5cygpOwotICAg
ICAgICAgICAgYXV0b2Nsb3NlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhdXRv
Y2xvc2UgKCkgewotICAgICAgICAgICAgaWYgKG9wdC5zaW5nbGVEYXRlID09PSB0cnVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKGluaXRpYXRlZCAmJiBvcHQuc3RhcnQgKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5hdXRvQ2xvc2UpIGNsb3NlRGF0ZVBp
Y2tlcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGluaXRpYXRlZCAmJiBvcHQuc3RhcnQgJiYgb3B0LmVuZCkKLSAgICAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuYXV0b0Nsb3NlKSBjbG9zZURh
dGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LQotICAgICAgICBmdW5jdGlvbiBjaGVja1NlbGVjdGlvblZhbGlkKCkKLSAgICAgICAgewotICAg
ICAgICAgICAgdmFyIGRheXMgPSBNYXRoLmNlaWwoIChvcHQuZW5kIC0gb3B0LnN0YXJ0KSAvIDg2
NDAwMDAwICkgKyAxOwotICAgICAgICAgICAgaWYgKG9wdC5zaW5nbGVEYXRlKSB7IC8vIFZhbGlk
YXRlIGlmIG9ubHkgc3RhcnQgaXMgdGhlcmUKLSAgICAgICAgICAgICAgICBpZiAob3B0LnN0YXJ0
ICYmICFvcHQuZW5kKQotICAgICAgICAgICAgICAgICAgICBib3guZmluZCgnLmRycF90b3AtYmFy
JykucmVtb3ZlQ2xhc3MoJ2Vycm9yJykuYWRkQ2xhc3MoJ25vcm1hbCcpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBfdG9wLWJhcicpLnJl
bW92ZUNsYXNzKCdlcnJvcicpLnJlbW92ZUNsYXNzKCdub3JtYWwnKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGVsc2UgaWYgKCBvcHQubWF4RGF5cyAmJiBkYXlzID4gb3B0Lm1heERheXMp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJveC5maW5kKCcu
ZGF5JykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKLSAgICAgICAgICAgICAgICBib3guZmluZCgn
LmRycF90b3AtYmFyJykucmVtb3ZlQ2xhc3MoJ25vcm1hbCcpLmFkZENsYXNzKCdlcnJvcicpLmZp
bmQoJy5lcnJvci10b3AnKS5odG1sKCBsYW5nKCdsZXNzLXRoYW4nKS5yZXBsYWNlKCclZCcsb3B0
Lm1heERheXMpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICggb3B0Lm1p
bkRheXMgJiYgZGF5cyA8IG9wdC5taW5EYXlzKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIG9wdC5zdGFydCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBmYWxzZTsK
LSAgICAgICAgICAgICAgICBib3guZmluZCgnLmRheScpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7
Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBfdG9wLWJhcicpLnJlbW92ZUNsYXNzKCdu
b3JtYWwnKS5hZGRDbGFzcygnZXJyb3InKS5maW5kKCcuZXJyb3ItdG9wJykuaHRtbCggbGFuZygn
bW9yZS10aGFuJykucmVwbGFjZSgnJWQnLG9wdC5taW5EYXlzKSApOwotICAgICAgICAgICAgfQot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChvcHQu
c3RhcnQgfHwgb3B0LmVuZCkKLSAgICAgICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBfdG9w
LWJhcicpLnJlbW92ZUNsYXNzKCdlcnJvcicpLmFkZENsYXNzKCdub3JtYWwnKTsKLSAgICAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZHJwX3RvcC1iYXIn
KS5yZW1vdmVDbGFzcygnZXJyb3InKS5yZW1vdmVDbGFzcygnbm9ybWFsJyk7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGlmICggKG9wdC5zaW5nbGVEYXRlICYmIG9wdC5zdGFydCAmJiAh
b3B0LmVuZCkgfHwgKCFvcHQuc2luZ2xlRGF0ZSAmJiBvcHQuc3RhcnQgJiYgb3B0LmVuZCkgKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBwbHktYnRuJykucmVt
b3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5hcHBseS1idG4nKS5hZGRD
bGFzcygnZGlzYWJsZWQnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG9wdC5i
YXRjaE1vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCAob3B0LnN0YXJ0
ICYmIG9wdC5zdGFydERhdGUgJiYgY29tcGFyZV9kYXkob3B0LnN0YXJ0LCBvcHQuc3RhcnREYXRl
KSA8IDApCi0gICAgICAgICAgICAgICAgICAgIHx8IChvcHQuZW5kICYmIG9wdC5lbmREYXRlICYm
IGNvbXBhcmVfZGF5KG9wdC5lbmQsIG9wdC5lbmREYXRlKSA+IDApICApCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICBvcHQuc3RhcnQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBib3guZmluZCgn
LmRheScpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd1NlbGVjdGVkSW5mbygp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGJveC5maW5kKCcuc3RhcnQtZGF5JykuaHRtbCgnLi4u
Jyk7Ci0gICAgICAgICAgICBib3guZmluZCgnLmVuZC1kYXknKS5odG1sKCcuLi4nKTsKLSAgICAg
ICAgICAgIGJveC5maW5kKCcuc2VsZWN0ZWQtZGF5cycpLmhpZGUoKTsKLSAgICAgICAgICAgIGlm
IChvcHQuc3RhcnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5z
dGFydC1kYXknKS5odG1sKGdldERhdGVTdHJpbmcobmV3IERhdGUocGFyc2VJbnQob3B0LnN0YXJ0
KSkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvcHQuZW5kKQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZW5kLWRheScpLmh0bWwoZ2V0RGF0ZVN0
cmluZyhuZXcgRGF0ZShwYXJzZUludChvcHQuZW5kKSkpKTsKLSAgICAgICAgICAgIH0KLQotICAg
ICAgICAgICAgaWYgKG9wdC5zdGFydCAmJiBvcHQuc2luZ2xlRGF0ZSkKLSAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLnJlbW92ZUNsYXNzKCdkaXNh
YmxlZCcpOwotICAgICAgICAgICAgICAgIHZhciBkYXRlUmFuZ2UgPSBnZXREYXRlU3RyaW5nKG5l
dyBEYXRlKG9wdC5zdGFydCkpOwotICAgICAgICAgICAgICAgIG9wdC5zZXRWYWx1ZS5jYWxsKHNl
bGZEb20sIGRhdGVSYW5nZSwgZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuc3RhcnQpKSwgZ2V0
RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuZW5kKSkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGlu
aXRpYXRlZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICQoc2VsZiku
dHJpZ2dlcignZGF0ZXBpY2tlci1jaGFuZ2UnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiBkYXRlUmFuZ2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAnZGF0ZTEnIDogbmV3IERhdGUob3B0LnN0YXJ0KQotICAgICAgICAgICAgICAgICAg
ICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IGlmIChvcHQuc3RhcnQgJiYgb3B0LmVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBib3guZmluZCgnLnNlbGVjdGVkLWRheXMnKS5zaG93KCkuZmluZCgnLnNlbGVjdGVkLWRheXMt
bnVtJykuaHRtbChNYXRoLnJvdW5kKChvcHQuZW5kLW9wdC5zdGFydCkvODY0MDAwMDApKzEpOwot
ICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBwbHktYnRuJykucmVtb3ZlQ2xhc3MoJ2Rpc2Fi
bGVkJyk7Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGVSYW5nZSA9IGdldERhdGVTdHJpbmcobmV3
IERhdGUob3B0LnN0YXJ0KSkrIG9wdC5zZXBhcmF0b3IgK2dldERhdGVTdHJpbmcobmV3IERhdGUo
b3B0LmVuZCkpOwotICAgICAgICAgICAgICAgIG9wdC5zZXRWYWx1ZS5jYWxsKHNlbGZEb20sZGF0
ZVJhbmdlLCBnZXREYXRlU3RyaW5nKG5ldyBEYXRlKG9wdC5zdGFydCkpLCBnZXREYXRlU3RyaW5n
KG5ldyBEYXRlKG9wdC5lbmQpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGluaXRpYXRlZCkKLSAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICQoc2VsZikudHJpZ2dlcignZGF0
ZXBpY2tlci1jaGFuZ2UnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAndmFsdWUnOiBkYXRlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAnZGF0
ZTEnIDogbmV3IERhdGUob3B0LnN0YXJ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdkYXRl
MicgOiBuZXcgRGF0ZShvcHQuZW5kKQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5hcHBseS1idG4nKS5hZGRDbGFzcygnZGlzYWJs
ZWQnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNldERh
dGVSYW5nZShkYXRlMSxkYXRlMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGRhdGUxLmdl
dFRpbWUoKSA+IGRhdGUyLmdldFRpbWUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICB2YXIgdG1wID0gZGF0ZTI7Ci0gICAgICAgICAgICAgICAgZGF0ZTIgPSBkYXRlMTsKLSAgICAg
ICAgICAgICAgICBkYXRlMSA9IHRtcDsKLSAgICAgICAgICAgICAgICB0bXAgPSBudWxsOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIGlm
IChvcHQuc3RhcnREYXRlICYmIGNvbXBhcmVfZGF5KGRhdGUxLG9wdC5zdGFydERhdGUpIDwgMCkg
dmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChvcHQuZW5kRGF0ZSAmJiBjb21wYXJlX2Rh
eShkYXRlMixvcHQuZW5kRGF0ZSkgPiAwKSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgaWYg
KCF2YWxpZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaG93TW9udGgob3B0LnN0
YXJ0RGF0ZSwnbW9udGgxJyk7Ci0gICAgICAgICAgICAgICAgc2hvd01vbnRoKG5leHRNb250aChv
cHQuc3RhcnREYXRlKSwnbW9udGgyJyk7Ci0gICAgICAgICAgICAgICAgc2hvd0dhcCgpOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3B0LnN0
YXJ0ID0gZGF0ZTEuZ2V0VGltZSgpOwotICAgICAgICAgICAgb3B0LmVuZCA9IGRhdGUyLmdldFRp
bWUoKTsKLSAgICAgICAgICAgIGlmIChjb21wYXJlX21vbnRoKGRhdGUxLGRhdGUyKSA9PSAwKQot
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRhdGUyID0gbmV4dE1vbnRoKGRhdGUxKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvcHQudGltZS5lbmFibGVkKSB7Ci0gICAg
ICAgICAgICAgICAgcmVuZGVyVGltZSgidGltZTEiLCBkYXRlMSk7Ci0gICAgICAgICAgICAgICAg
cmVuZGVyVGltZSgidGltZTIiLCBkYXRlMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBz
aG93TW9udGgoZGF0ZTEsJ21vbnRoMScpOwotICAgICAgICAgICAgc2hvd01vbnRoKGRhdGUyLCdt
b250aDInKTsKLSAgICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAgIHNob3dTZWxlY3Rl
ZEluZm8oKTsKLSAgICAgICAgICAgIGF1dG9jbG9zZSgpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gc2hvd1NlbGVjdGVkRGF5cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
b3B0LnN0YXJ0ICYmICFvcHQuZW5kKSByZXR1cm47Ci0gICAgICAgICAgICBib3guZmluZCgnLmRh
eScpLmVhY2goZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciB0
aW1lID0gcGFyc2VJbnQoJCh0aGlzKS5hdHRyKCd0aW1lJykpLAotICAgICAgICAgICAgICAgICAg
ICBzdGFydCA9IG9wdC5zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gb3B0LmVuZDsK
LSAgICAgICAgICAgICAgICBpZiAob3B0LnRpbWUuZW5hYmxlZCkgewotICAgICAgICAgICAgICAg
ICAgICB0aW1lID0gbW9tZW50KHRpbWUpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTsKLSAgICAg
ICAgICAgICAgICAgICAgc3RhcnQgPSBtb21lbnQoc3RhcnQgfHwgbW9tZW50KCkudmFsdWVPZigp
KS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9IG1v
bWVudChlbmQgfHwgbW9tZW50KCkudmFsdWVPZigpKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAgICAg
ICAgICAgKG9wdC5zdGFydCAmJiBvcHQuZW5kICYmIGVuZCA+PSB0aW1lICYmIHN0YXJ0IDw9IHRp
bWUgKQotICAgICAgICAgICAgICAgICAgICB8fCAoIG9wdC5zdGFydCAmJiAhb3B0LmVuZCAmJiBt
b21lbnQoc3RhcnQpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID09IG1vbWVudCh0aW1lKS5mb3JtYXQo
J1lZWVktTU0tREQnKSApCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBz
aG93TW9udGgoZGF0ZSxtb250aCkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0ZSA9IG1vbWVu
dChkYXRlKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTsKLSAgICAgICAgICAgIHZhciBtb250aE5h
bWUgPSBuYW1lTW9udGgoZGF0ZS5nZXRNb250aCgpKTsKLSAgICAgICAgICAgIGJveC5maW5kKCcu
Jyttb250aCsnIC5tb250aC1uYW1lJykuaHRtbChtb250aE5hbWUrJyAnK2RhdGUuZ2V0RnVsbFll
YXIoKSk7Ci0gICAgICAgICAgICBib3guZmluZCgnLicrbW9udGgrJyB0Ym9keScpLmh0bWwoY3Jl
YXRlTW9udGhIVE1MKGRhdGUpKTsKLSAgICAgICAgICAgIG9wdFttb250aF0gPSBkYXRlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd1RpbWUoZGF0ZSxuYW1lKQotICAgICAgICB7
Ci0gICAgICAgICAgICBib3guZmluZCgnLicgKyBuYW1lKS5hcHBlbmQoZ2V0VGltZUhUTUwoKSk7
Ci0gICAgICAgICAgICByZW5kZXJUaW1lKG5hbWUsIGRhdGUpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gbmFtZU1vbnRoKG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBs
YW5nKCdtb250aC1uYW1lJylbbV07Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRE
YXRlU3RyaW5nKGQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtb21lbnQoZCkuZm9y
bWF0KG9wdC5mb3JtYXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd0dhcCgp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHNob3dTZWxlY3RlZERheXMoKTsKLSAgICAgICAgICAg
IHZhciBtMSA9IHBhcnNlSW50KG1vbWVudChvcHQubW9udGgxKS5mb3JtYXQoJ1lZWVlNTScpKTsK
LSAgICAgICAgICAgIHZhciBtMiA9IHBhcnNlSW50KG1vbWVudChvcHQubW9udGgyKS5mb3JtYXQo
J1lZWVlNTScpKTsKLSAgICAgICAgICAgIHZhciBwID0gTWF0aC5hYnMobTEgLSBtMik7Ci0gICAg
ICAgICAgICB2YXIgc2hvdWxkU2hvdyA9IChwID4gMSAmJiBwICE9ODkpOwotICAgICAgICAgICAg
aWYgKHNob3VsZFNob3cpCi0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5nYXAnKS5zaG93KCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5nYXAnKS5oaWRl
KCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjbG9zZURhdGVQaWNrZXIoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAob3B0LmFsd2F5c09wZW4pIHJldHVybjsKLSAgICAgICAg
ICAgICQoYm94KS5zbGlkZVVwKDIwMCxmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgJChzZWxmKS5kYXRhKCdkYXRlLXBpY2tlci1vcGVuZWQnLGZhbHNlKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgLy8kKGRvY3VtZW50KS51bmJpbmQoJy5kYXRlcGlja2Vy
Jyk7Ci0gICAgICAgICAgICAkKHNlbGYpLnRyaWdnZXIoJ2RhdGVwaWNrZXItY2xvc2UnKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVfbW9udGgobTEsbTIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIHZhciBwID0gcGFyc2VJbnQobW9tZW50KG0xKS5mb3JtYXQoJ1lZWVlN
TScpKSAtIHBhcnNlSW50KG1vbWVudChtMikuZm9ybWF0KCdZWVlZTU0nKSk7Ci0gICAgICAgICAg
ICBpZiAocCA+IDAgKSByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChwID09IDApIHJldHVybiAw
OwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Y29tcGFyZV9kYXkobTEsbTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBwID0gcGFyc2VJ
bnQobW9tZW50KG0xKS5mb3JtYXQoJ1lZWVlNTUREJykpIC0gcGFyc2VJbnQobW9tZW50KG0yKS5m
b3JtYXQoJ1lZWVlNTUREJykpOwotICAgICAgICAgICAgaWYgKHAgPiAwICkgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICBpZiAocCA9PSAwKSByZXR1cm4gMDsKLSAgICAgICAgICAgIHJldHVybiAtMTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG5leHRNb250aChtb250aCkKLSAgICAgICAg
ewotICAgICAgICAgICAgbW9udGggPSBtb21lbnQobW9udGgpLnRvRGF0ZSgpOwotICAgICAgICAg
ICAgdmFyIHRvTW9udGggPSBtb250aC5nZXRNb250aCgpOwotICAgICAgICAgICAgd2hpbGUobW9u
dGguZ2V0TW9udGgoKSA9PSB0b01vbnRoKSBtb250aCA9IG5ldyBEYXRlKG1vbnRoLmdldFRpbWUo
KSs4NjQwMDAwMCk7Ci0gICAgICAgICAgICByZXR1cm4gbW9udGg7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBwcmV2TW9udGgobW9udGgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1v
bnRoID0gbW9tZW50KG1vbnRoKS50b0RhdGUoKTsKLSAgICAgICAgICAgIHZhciB0b01vbnRoID0g
bW9udGguZ2V0TW9udGgoKTsKLSAgICAgICAgICAgIHdoaWxlKG1vbnRoLmdldE1vbnRoKCkgPT0g
dG9Nb250aCkgbW9udGggPSBuZXcgRGF0ZShtb250aC5nZXRUaW1lKCktODY0MDAwMDApOwotICAg
ICAgICAgICAgcmV0dXJuIG1vbnRoOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZ2V0
VGltZUhUTUwoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdGltZUh0bWwgPSAnPGRpdj4n
Ci0gICAgICAgICAgICAgICAgKyc8c3Bhbj5UaW1lOiA8c3BhbiBjbGFzcz0iaG91ci12YWwiPjAw
PC9zcGFuPjo8c3BhbiBjbGFzcz0ibWludXRlLXZhbCI+MDA8L3NwYW4+PC9zcGFuPicKLSAgICAg
ICAgICAgICAgICArJzwvZGl2PicKLSAgICAgICAgICAgICAgICArJzxkaXYgY2xhc3M9ImhvdXIi
PicKLSAgICAgICAgICAgICAgICArJzxsYWJlbD5Ib3VyOiA8aW5wdXQgdHlwZT0icmFuZ2UiIGNs
YXNzPSJob3VyLXJhbmdlIiBuYW1lPSJob3VyIiBtaW49IjAiIG1heD0iMjMiPjwvbGFiZWw+Jwot
ICAgICAgICAgICAgICAgICsnPC9kaXY+JwotICAgICAgICAgICAgICAgICsnPGRpdiBjbGFzcz0i
bWludXRlIj4nCi0gICAgICAgICAgICAgICAgKyc8bGFiZWw+TWludXRlOiA8aW5wdXQgdHlwZT0i
cmFuZ2UiIGNsYXNzPSJtaW51dGUtcmFuZ2UiIG5hbWU9Im1pbnV0ZSIgbWluPSIwIiBtYXg9IjU5
Ij48L2xhYmVsPicKLSAgICAgICAgICAgICAgICArJzwvZGl2Pic7Ci0gICAgICAgICAgICByZXR1
cm4gdGltZUh0bWw7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjcmVhdGVEb20oKQot
ICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJkYXRlLXBpY2tl
ci13cmFwcGVyJwotICAgICAgICAgICAgaWYgKCBvcHQuc2luZ2xlRGF0ZSApIGh0bWwgKz0gJyBz
aW5nbGUtZGF0ZSc7Ci0gICAgICAgICAgICBpZiAoICFvcHQuc2hvd1Nob3J0Y3V0cyApIGh0bWwg
Kz0gJyBuby1zaG9ydGN1dHMgJzsKLSAgICAgICAgICAgIGh0bWwgKz0gJyI+JwotICAgICAgICAg
ICAgICAgICsnPGRpdiBjbGFzcz0iZHJwX3RvcC1iYXIiPlwKLSAgICAgICAgICAgICAgICAgICAg
PGRpdiBjbGFzcz0ibm9ybWFsLXRvcCI+XAotICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+
JytsYW5nKCdzZWxlY3RlZCcpKycgPC9zcGFuPiA8YiBjbGFzcz0ic3RhcnQtZGF5Ij4uLi48L2I+
JwotICAgICAgICAgICAgaWYgKCAhIG9wdC5zaW5nbGVEYXRlICkgewotICAgICAgICAgICAgICAg
IGh0bWwgKz0gJyA8c3BhbiBjbGFzcz0ic2VwYXJhdG9yLWRheSI+JytvcHQuc2VwYXJhdG9yKyc8
L3NwYW4+IDxiIGNsYXNzPSJlbmQtZGF5Ij4uLi48L2I+IDxpIGNsYXNzPSJzZWxlY3RlZC1kYXlz
Ij4oPHNwYW4gY2xhc3M9InNlbGVjdGVkLWRheXMtbnVtIj4zPC9zcGFuPiAnK2xhbmcoJ2RheXMn
KSsnKTwvaT4nCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj5cCi0g
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLXRvcCI+ZXJyb3I8L2Rpdj5cCi0g
ICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlZmF1bHQtdG9wIj5kZWZhdWx0PC9kaXY+
XAotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYXBwbHkt
YnRuIGRpc2FibGVkICcrIGdldEhpZGVDbGFzcygpICsnIiB2YWx1ZT0iJytsYW5nKCdhcHBseScp
KyciIC8+XAotICAgICAgICAgICAgICAgIDwvZGl2PicKLSAgICAgICAgICAgICAgICArJzxkaXYg
Y2xhc3M9Im1vbnRoLXdyYXBwZXIiPicKLSAgICAgICAgICAgICAgICArJzx0YWJsZSBjbGFzcz0i
bW9udGgxIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCI+PHRoZWFk
Pjx0ciBjbGFzcz0iY2FwdGlvbiI+PHRoIHN0eWxlPSJ3aWR0aDoyN3B4OyI+PHNwYW4gY2xhc3M9
InByZXYiPiZsdDs8L3NwYW4+PC90aD48dGggY29sc3Bhbj0iNSIgY2xhc3M9Im1vbnRoLW5hbWUi
PkphbnVhcnksIDIwMTE8L3RoPjx0aCBzdHlsZT0id2lkdGg6MjdweDsiPjxzcGFuIGNsYXNzPSJu
ZXh0Ij4mZ3Q7PC9zcGFuPjwvdGg+PC90cj48dHIgY2xhc3M9IndlZWstbmFtZSI+JytnZXRXZWVr
SGVhZCgpKyc8L3RoZWFkPjx0Ym9keT48L3Rib2R5PjwvdGFibGU+JwotICAgICAgICAgICAgaWYg
KCAhIG9wdC5zaW5nbGVEYXRlICkgewotICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xh
c3M9ImdhcCI+JytnZXRHYXBIVE1MKCkrJzwvZGl2PicKLSAgICAgICAgICAgICAgICAgICAgKyc8
dGFibGUgY2xhc3M9Im1vbnRoMiIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgY2VsbHBhZGRp
bmc9IjAiPjx0aGVhZD48dHIgY2xhc3M9ImNhcHRpb24iPjx0aCBzdHlsZT0id2lkdGg6MjdweDsi
PjxzcGFuIGNsYXNzPSJwcmV2Ij4mbHQ7PC9zcGFuPjwvdGg+PHRoIGNvbHNwYW49IjUiIGNsYXNz
PSJtb250aC1uYW1lIj5KYW51YXJ5LCAyMDExPC90aD48dGggc3R5bGU9IndpZHRoOjI3cHg7Ij48
c3BhbiBjbGFzcz0ibmV4dCI+Jmd0Ozwvc3Bhbj48L3RoPjwvdHI+PHRyIGNsYXNzPSJ3ZWVrLW5h
bWUiPicrZ2V0V2Vla0hlYWQoKSsnPC90aGVhZD48dGJvZHk+PC90Ym9keT48L3RhYmxlPicKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLysnPC9kaXY+JwotICAgICAgICAgICAgaHRt
bCArPSAgICAnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDtoZWlnaHQ6MDtmb250LXNpemU6MDsiPjwv
ZGl2PicKLSAgICAgICAgICAgICAgICArJzxkaXYgY2xhc3M9InRpbWUiPicKLSAgICAgICAgICAg
ICAgICArJzxkaXYgY2xhc3M9InRpbWUxIj48L2Rpdj4nCi0gICAgICAgICAgICBpZiAoICEgb3B0
LnNpbmdsZURhdGUgKSB7Ci0gICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0idGlt
ZTIiPjwvZGl2PicKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2PicK
LSAgICAgICAgICAgICAgICArJzxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7aGVpZ2h0OjA7Zm9udC1z
aXplOjA7Ij48L2Rpdj4nCi0gICAgICAgICAgICAgICAgKyc8L2Rpdj4nOwotCi0gICAgICAgICAg
ICBpZiAob3B0LnNob3dTaG9ydGN1dHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aHRtbCArPSAnPGRpdiBjbGFzcz0iZm9vdGVyIj48Yj4nK2xhbmcoJ3Nob3J0Y3V0cycpKyc8L2I+
JzsKLQotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gb3B0LnNob3J0Y3V0czsKLSAgICAgICAg
ICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhWydwcmV2LWRheXMnXSAmJiBkYXRhWydwcmV2LWRheXMnXS5sZW5ndGggPiAwKQot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICcm
bmJzcDs8c3BhbiBjbGFzcz0icHJldi1kYXlzIj4nK2xhbmcoJ3Bhc3QnKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ZGF0YVsncHJldi1kYXlzJ10ubGVuZ3RoOyBpKysp
Ci0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIG5hbWUgPSBkYXRhWydwcmV2LWRheXMnXVtpXTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuYW1lICs9IChkYXRhWydwcmV2LWRheXMnXVtpXSA+IDEpID8gbGFuZygnZGF5cycpIDog
bGFuZygnZGF5Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnIDxhIGhy
ZWY9ImphdmFzY3JpcHQ6OyIgc2hvcnRjdXQ9ImRheSwtJytkYXRhWydwcmV2LWRheXMnXVtpXSsn
Ij4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgICAgICAgICAgaHRtbCs9Jzwvc3Bhbj4nOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJ25leHQtZGF5cyddICYmIGRhdGFbJ25leHQtZGF5
cyddLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGh0bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJuZXh0LWRheXMiPicrbGFuZygnZm9s
bG93aW5nJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPGRhdGFbJ25l
eHQtZGF5cyddLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZGF0YVsnbmV4dC1kYXlzJ11baV07Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAoZGF0YVsnbmV4dC1kYXlzJ11baV0g
PiAxKSA/IGxhbmcoJ2RheXMnKSA6IGxhbmcoJ2RheScpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGh0bWwgKz0gJyA8YSBocmVmPSJqYXZhc2NyaXB0OjsiIHNob3J0Y3V0PSJkYXksJytk
YXRhWyduZXh0LWRheXMnXVtpXSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9ICc8L3NwYW4+JzsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhWydwcmV2J10g
JiYgZGF0YVsncHJldiddLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJwcmV2LWJ1dHRv
bnMiPicrbGFuZygncHJldmlvdXMnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIg
aT0wO2k8ZGF0YVsncHJldiddLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICAgICAg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbGFuZygncHJldi0nK2Rh
dGFbJ3ByZXYnXVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnIDxh
IGhyZWY9ImphdmFzY3JpcHQ6OyIgc2hvcnRjdXQ9InByZXYsJytkYXRhWydwcmV2J11baV0rJyI+
JytuYW1lKyc8L2E+JzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWwrPSc8L3NwYW4+JzsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgIGlmIChkYXRhWyduZXh0J10gJiYgZGF0YVsnbmV4dCddLmxlbmd0aCA+
IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwg
Kz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJuZXh0LWJ1dHRvbnMiPicrbGFuZygnbmV4dCcpOwotICAg
ICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTxkYXRhWyduZXh0J10ubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG5hbWUgPSBsYW5nKCduZXh0LScrZGF0YVsnbmV4dCddW2ldKTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBodG1sICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9ydGN1
dD0ibmV4dCwnK2RhdGFbJ25leHQnXVtpXSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9Jzwvc3Bhbj4nOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKG9wdC5jdXN0b21TaG9ydGN1dHMpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgICAgICBmb3IodmFyIGk9MDtpPG9wdC5jdXN0b21TaG9ydGN1dHMubGVuZ3RoOyBpKysp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaCA9
IG9wdC5jdXN0b21TaG9ydGN1dHNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sKz0g
JyZuYnNwOzxzcGFuIGNsYXNzPSJjdXN0b20tc2hvcnRjdXQiPjxhIGhyZWY9ImphdmFzY3JpcHQ6
OyIgc2hvcnRjdXQ9ImN1c3RvbSI+JytzaC5uYW1lKyc8L2E+PC9zcGFuPic7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBodG1sICs9
JzwvZGl2Pic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4nOwot
Ci0KLSAgICAgICAgICAgIHJldHVybiAkKGh0bWwpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gZ2V0SGlkZUNsYXNzKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG9wdC5hdXRv
Q2xvc2UgPT09IHRydWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2hpZGUnOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgcmV0dXJuICcnOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gZ2V0V2Vla0hlYWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob3B0LnN0YXJ0
T2ZXZWVrID09ICdtb25kYXknKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVy
biAnPHRoPicrbGFuZygnd2Vlay0xJykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+
JytsYW5nKCd3ZWVrLTInKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmco
J3dlZWstMycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay00
JykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTUnKSsnPC90
aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstNicpKyc8L3RoPlwKLSAg
ICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay03JykrJzwvdGg+JzsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gJzx0aD4nK2xhbmcoJ3dlZWstNycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAg
PHRoPicrbGFuZygnd2Vlay0xJykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+Jyts
YW5nKCd3ZWVrLTInKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dl
ZWstMycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay00Jykr
JzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTUnKSsnPC90aD5c
Ci0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstNicpKyc8L3RoPic7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRHYXBIVE1MKCkKLSAg
ICAgICAgewotICAgICAgICAgICAgdmFyIGh0bWwgPSBbJzxkaXYgY2xhc3M9ImdhcC10b3AtbWFz
ayI+PC9kaXY+PGRpdiBjbGFzcz0iZ2FwLWJvdHRvbS1tYXNrIj48L2Rpdj48ZGl2IGNsYXNzPSJn
YXAtbGluZXMiPiddOwotICAgICAgICAgICAgZm9yKHZhciBpPTA7aTwyMDtpKyspCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8ZGl2IGNsYXNzPSJnYXAtbGluZSI+
XAotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnYXAtMSI+PC9kaXY+XAotICAgICAg
ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnYXAtMiI+PC9kaXY+XAotICAgICAgICAgICAgICAg
ICAgICA8ZGl2IGNsYXNzPSJnYXAtMyI+PC9kaXY+XAotICAgICAgICAgICAgICAgIDwvZGl2Picp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaHRtbC5wdXNoKCc8L2Rpdj4nKTsKLSAgICAg
ICAgICAgIHJldHVybiBodG1sLmpvaW4oJycpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gY3JlYXRlTW9udGhIVE1MKGQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBkYXlzID0g
W107Ci0gICAgICAgICAgICBkLnNldERhdGUoMSk7Ci0gICAgICAgICAgICB2YXIgbGFzdE1vbnRo
ID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgLSA4NjQwMDAwMCk7Ci0gICAgICAgICAgICB2YXIgbm93
ID0gbmV3IERhdGUoKTsKLQotICAgICAgICAgICAgdmFyIGRheU9mV2VlayA9IGQuZ2V0RGF5KCk7
Ci0gICAgICAgICAgICBpZigoZGF5T2ZXZWVrID09IDApICYmIChvcHQuc3RhcnRPZldlZWsgPT0g
J21vbmRheScpKSB7Ci0gICAgICAgICAgICAgICAgLy8gYWRkIG9uZSB3ZWVrCi0gICAgICAgICAg
ICAgICAgZGF5T2ZXZWVrID0gNzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRh
eU9mV2VlayA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IGRheU9mV2VlazsgaSA+IDA7IGktLSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBkYXkgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIDg2NDAwMDAwKmkpOwotICAg
ICAgICAgICAgICAgICAgICB2YXIgdmFsaWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBp
ZiAob3B0LnN0YXJ0RGF0ZSAmJiBjb21wYXJlX2RheShkYXksb3B0LnN0YXJ0RGF0ZSkgPCAwKSB2
YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmVuZERhdGUgJiYgY29t
cGFyZV9kYXkoZGF5LG9wdC5lbmREYXRlKSA+IDApIHZhbGlkID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgICAgIGRheXMucHVzaCh7dHlwZTonbGFzdE1vbnRoJyxkYXk6IGRheS5nZXREYXRlKCks
dGltZTpkYXkuZ2V0VGltZSgpLCB2YWxpZDp2YWxpZCB9KTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgdG9Nb250aCA9IGQuZ2V0TW9udGgoKTsKLSAg
ICAgICAgICAgIGZvcih2YXIgaT0wOyBpPDQwOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgdmFyIHRvZGF5ID0gbW9tZW50KGQpLmFkZCgnZGF5cycsIGkpLnRvRGF0ZSgpOwot
ICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKG9w
dC5zdGFydERhdGUgJiYgY29tcGFyZV9kYXkodG9kYXksb3B0LnN0YXJ0RGF0ZSkgPCAwKSB2YWxp
ZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChvcHQuZW5kRGF0ZSAmJiBjb21wYXJlX2Rh
eSh0b2RheSxvcHQuZW5kRGF0ZSkgPiAwKSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IGRheXMucHVzaCh7dHlwZTogdG9kYXkuZ2V0TW9udGgoKSA9PSB0b01vbnRoID8gJ3RvTW9udGgn
IDogJ25leHRNb250aCcsZGF5OiB0b2RheS5nZXREYXRlKCksdGltZTp0b2RheS5nZXRUaW1lKCks
IHZhbGlkOnZhbGlkIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGh0bWwgPSBb
XTsKLSAgICAgICAgICAgIGZvcih2YXIgd2Vlaz0wOyB3ZWVrPDY7IHdlZWsrKykKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZGF5c1t3ZWVrKjddLnR5cGUgPT0gJ25leHRNb250
aCcpIGJyZWFrOwotICAgICAgICAgICAgICAgIGh0bWwucHVzaCgnPHRyPicpOwotICAgICAgICAg
ICAgICAgIGZvcih2YXIgZGF5ID0gMDsgZGF5PDc7IGRheSsrKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIF9kYXkgPSAob3B0LnN0YXJ0T2ZXZWVrID09ICdtb25k
YXknKSA/IGRheSsxIDogZGF5OwotICAgICAgICAgICAgICAgICAgICB2YXIgdG9kYXkgPSBkYXlz
W3dlZWsqNytfZGF5XTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGhpZ2hsaWdodFRvZGF5ID0g
bW9tZW50KHRvZGF5LnRpbWUpLmZvcm1hdCgnTCcpID09IG1vbWVudChub3cpLmZvcm1hdCgnTCcp
OwotICAgICAgICAgICAgICAgICAgICB0b2RheS5leHRyYUNsYXNzID0gJyc7Ci0gICAgICAgICAg
ICAgICAgICAgIHRvZGF5LnRvb2x0aXAgPSAnJzsKLSAgICAgICAgICAgICAgICAgICAgaWYob3B0
LmJlZm9yZVNob3dEYXkgJiYgdHlwZW9mIG9wdC5iZWZvcmVTaG93RGF5ID09ICdmdW5jdGlvbicp
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfciA9
IG9wdC5iZWZvcmVTaG93RGF5KG1vbWVudCh0b2RheS50aW1lKS50b0RhdGUoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0b2RheS52YWxpZCA9IF9yWzBdOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdG9kYXkuZXh0cmFDbGFzcyA9IF9yWzFdIHx8ICcnOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdG9kYXkudG9vbHRpcCA9IF9yWzJdIHx8ICcnOwotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHRvZGF5LnRvb2x0aXAgIT0gJycpIHRvZGF5LmV4dHJhQ2xhc3MgKz0gJyBoYXMtdG9v
bHRpcCAnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGh0bWwu
cHVzaCgnPHRkPjxkaXYgdGltZT0iJyt0b2RheS50aW1lKyciIHRpdGxlPSInK3RvZGF5LnRvb2x0
aXArJyIgY2xhc3M9ImRheSAnK3RvZGF5LnR5cGUrJyAnK3RvZGF5LmV4dHJhQ2xhc3MrJyAnKyh0
b2RheS52YWxpZCA/ICd2YWxpZCcgOiAnaW52YWxpZCcpKycgJysoaGlnaGxpZ2h0VG9kYXk/J3Jl
YWwtdG9kYXknOicnKSsnIj4nK3RvZGF5LmRheSsnPC9kaXY+PC90ZD4nKTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8L3RyPicpOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgcmV0dXJuIGh0bWwuam9pbignJyk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBmdW5jdGlvbiBnZXRMYW5ndWFnZXMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob3B0
Lmxhbmd1YWdlID09ICdhdXRvJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIg
bGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgPyBuYXZpZ2F0b3IubGFuZ3VhZ2UgOiBuYXZp
Z2F0b3IuYnJvd3Nlckxhbmd1YWdlOwotICAgICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2UpIHJl
dHVybiAkLmRhdGVSYW5nZVBpY2tlckxhbmd1YWdlc1snZW4nXTsKLSAgICAgICAgICAgICAgICB2
YXIgbGFuZ3VhZ2UgPSBsYW5ndWFnZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAgIGZv
cih2YXIga2V5IGluICQuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlLmluZGV4T2Yoa2V5KSAhPSAtMSkK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQu
ZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzW2tleV07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlja2Vy
TGFuZ3VhZ2VzWydlbiddOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoIG9w
dC5sYW5ndWFnZSAmJiBvcHQubGFuZ3VhZ2UgaW4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFnZXMp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlja2Vy
TGFuZ3VhZ2VzW29wdC5sYW5ndWFnZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlja2Vy
TGFuZ3VhZ2VzWydlbiddOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gbGFuZyh0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHQgaW4gbGFuZ3Mp
PyBsYW5nc1t0XSA6IHQ7Ci0gICAgICAgIH0KLQotCi0gICAgfTsKLX0pKGpRdWVyeSk7CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBp
Y2tlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwot
bmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvbW9tZW50Lm1pbi5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDYgKzAsMCBAQAotLy8hIG1vbWVudC5qcwotLy8hIHZlcnNpb24gOiAyLjYuMAotLy8h
IGF1dGhvcnMgOiBUaW0gV29vZCwgSXNrcmVuIENoZXJuZXYsIE1vbWVudC5qcyBjb250cmlidXRv
cnMKLS8vISBsaWNlbnNlIDogTUlUCi0vLyEgbW9tZW50anMuY29tCi0oZnVuY3Rpb24oYSl7ZnVu
Y3Rpb24gYigpe3JldHVybntlbXB0eTohMSx1bnVzZWRUb2tlbnM6W10sdW51c2VkSW5wdXQ6W10s
b3ZlcmZsb3c6LTIsY2hhcnNMZWZ0T3ZlcjowLG51bGxJbnB1dDohMSxpbnZhbGlkTW9udGg6bnVs
bCxpbnZhbGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITF9fWZ1bmN0aW9uIGMo
YSxiKXtmdW5jdGlvbiBjKCl7aWIuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPT09ITEmJiJ1
bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4oIkRl
cHJlY2F0aW9uIHdhcm5pbmc6ICIrYSl9dmFyIGQ9ITA7cmV0dXJuIGkoZnVuY3Rpb24oKXtyZXR1
cm4gZCYmKGMoKSxkPSExKSxiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYil9ZnVuY3Rpb24gZChh
LGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbChhLmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rp
b24gZShhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5sYW5nKCkub3JkaW5hbChh
LmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKGEpe3koYSksaSh0aGlz
LGEpfWZ1bmN0aW9uIGgoYSl7dmFyIGI9cihhKSxjPWIueWVhcnx8MCxkPWIucXVhcnRlcnx8MCxl
PWIubW9udGh8fDAsZj1iLndlZWt8fDAsZz1iLmRheXx8MCxoPWIuaG91cnx8MCxpPWIubWludXRl
fHwwLGo9Yi5zZWNvbmR8fDAsaz1iLm1pbGxpc2Vjb25kfHwwO3RoaXMuX21pbGxpc2Vjb25kcz0r
aysxZTMqais2ZTQqaSszNmU1KmgsdGhpcy5fZGF5cz0rZys3KmYsdGhpcy5fbW9udGhzPStlKzMq
ZCsxMipjLHRoaXMuX2RhdGE9e30sdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gaShhLGIpe2Zvcih2
YXIgYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJihhW2NdPWJbY10pO3JldHVybiBiLmhhc093
blByb3BlcnR5KCJ0b1N0cmluZyIpJiYoYS50b1N0cmluZz1iLnRvU3RyaW5nKSxiLmhhc093blBy
b3BlcnR5KCJ2YWx1ZU9mIikmJihhLnZhbHVlT2Y9Yi52YWx1ZU9mKSxhfWZ1bmN0aW9uIGooYSl7
dmFyIGIsYz17fTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJndiLmhhc093blByb3Bl
cnR5KGIpJiYoY1tiXT1hW2JdKTtyZXR1cm4gY31mdW5jdGlvbiBrKGEpe3JldHVybiAwPmE/TWF0
aC5jZWlsKGEpOk1hdGguZmxvb3IoYSl9ZnVuY3Rpb24gbChhLGIsYyl7Zm9yKHZhciBkPSIiK01h
dGguYWJzKGEpLGU9YT49MDtkLmxlbmd0aDxiOylkPSIwIitkO3JldHVybihlP2M/IisiOiIiOiIt
IikrZH1mdW5jdGlvbiBtKGEsYixjLGQpe3ZhciBlPWIuX21pbGxpc2Vjb25kcyxmPWIuX2RheXMs
Zz1iLl9tb250aHM7ZD1udWxsPT1kPyEwOmQsZSYmYS5fZC5zZXRUaW1lKCthLl9kK2UqYyksZiYm
ZGIoYSwiRGF0ZSIsY2IoYSwiRGF0ZSIpK2YqYyksZyYmYmIoYSxjYihhLCJNb250aCIpK2cqYyks
ZCYmaWIudXBkYXRlT2Zmc2V0KGEsZnx8Zyl9ZnVuY3Rpb24gbihhKXtyZXR1cm4iW29iamVjdCBB
cnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIG8oYSl7
cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEp
fHxhIGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBwKGEsYixjKXt2YXIgZCxlPU1hdGgubWluKGEu
bGVuZ3RoLGIubGVuZ3RoKSxmPU1hdGguYWJzKGEubGVuZ3RoLWIubGVuZ3RoKSxnPTA7Zm9yKGQ9
MDtlPmQ7ZCsrKShjJiZhW2RdIT09YltkXXx8IWMmJnQoYVtkXSkhPT10KGJbZF0pKSYmZysrO3Jl
dHVybiBnK2Z9ZnVuY3Rpb24gcShhKXtpZihhKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCkucmVwbGFj
ZSgvKC4pcyQvLCIkMSIpO2E9WmJbYV18fCRiW2JdfHxifXJldHVybiBhfWZ1bmN0aW9uIHIoYSl7
dmFyIGIsYyxkPXt9O2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9cShjKSxiJiYo
ZFtiXT1hW2NdKSk7cmV0dXJuIGR9ZnVuY3Rpb24gcyhiKXt2YXIgYyxkO2lmKDA9PT1iLmluZGV4
T2YoIndlZWsiKSljPTcsZD0iZGF5IjtlbHNle2lmKDAhPT1iLmluZGV4T2YoIm1vbnRoIikpcmV0
dXJuO2M9MTIsZD0ibW9udGgifWliW2JdPWZ1bmN0aW9uKGUsZil7dmFyIGcsaCxpPWliLmZuLl9s
YW5nW2JdLGo9W107aWYoIm51bWJlciI9PXR5cGVvZiBlJiYoZj1lLGU9YSksaD1mdW5jdGlvbihh
KXt2YXIgYj1pYigpLnV0YygpLnNldChkLGEpO3JldHVybiBpLmNhbGwoaWIuZm4uX2xhbmcsYixl
fHwiIil9LG51bGwhPWYpcmV0dXJuIGgoZik7Zm9yKGc9MDtjPmc7ZysrKWoucHVzaChoKGcpKTty
ZXR1cm4gan19ZnVuY3Rpb24gdChhKXt2YXIgYj0rYSxjPTA7cmV0dXJuIDAhPT1iJiZpc0Zpbml0
ZShiKSYmKGM9Yj49MD9NYXRoLmZsb29yKGIpOk1hdGguY2VpbChiKSksY31mdW5jdGlvbiB1KGEs
Yil7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGEsYisxLDApKS5nZXRVVENEYXRlKCl9ZnVuY3Rp
b24gdihhLGIsYyl7cmV0dXJuICQoaWIoW2EsMTEsMzErYi1jXSksYixjKS53ZWVrfWZ1bmN0aW9u
IHcoYSl7cmV0dXJuIHgoYSk/MzY2OjM2NX1mdW5jdGlvbiB4KGEpe3JldHVybiBhJTQ9PT0wJiZh
JTEwMCE9PTB8fGElNDAwPT09MH1mdW5jdGlvbiB5KGEpe3ZhciBiO2EuX2EmJi0yPT09YS5fcGYu
b3ZlcmZsb3cmJihiPWEuX2FbcGJdPDB8fGEuX2FbcGJdPjExP3BiOmEuX2FbcWJdPDF8fGEuX2Fb
cWJdPnUoYS5fYVtvYl0sYS5fYVtwYl0pP3FiOmEuX2FbcmJdPDB8fGEuX2FbcmJdPjIzP3JiOmEu
X2Fbc2JdPDB8fGEuX2Fbc2JdPjU5P3NiOmEuX2FbdGJdPDB8fGEuX2FbdGJdPjU5P3RiOmEuX2Fb
dWJdPDB8fGEuX2FbdWJdPjk5OT91YjotMSxhLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXImJihvYj5i
fHxiPnFiKSYmKGI9cWIpLGEuX3BmLm92ZXJmbG93PWIpfWZ1bmN0aW9uIHooYSl7cmV0dXJuIG51
bGw9PWEuX2lzVmFsaWQmJihhLl9pc1ZhbGlkPSFpc05hTihhLl9kLmdldFRpbWUoKSkmJmEuX3Bm
Lm92ZXJmbG93PDAmJiFhLl9wZi5lbXB0eSYmIWEuX3BmLmludmFsaWRNb250aCYmIWEuX3BmLm51
bGxJbnB1dCYmIWEuX3BmLmludmFsaWRGb3JtYXQmJiFhLl9wZi51c2VySW52YWxpZGF0ZWQsYS5f
c3RyaWN0JiYoYS5faXNWYWxpZD1hLl9pc1ZhbGlkJiYwPT09YS5fcGYuY2hhcnNMZWZ0T3ZlciYm
MD09PWEuX3BmLnVudXNlZFRva2Vucy5sZW5ndGgpKSxhLl9pc1ZhbGlkfWZ1bmN0aW9uIEEoYSl7
cmV0dXJuIGE/YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIik6YX1mdW5jdGlvbiBCKGEs
Yil7cmV0dXJuIGIuX2lzVVRDP2liKGEpLnpvbmUoYi5fb2Zmc2V0fHwwKTppYihhKS5sb2NhbCgp
fWZ1bmN0aW9uIEMoYSxiKXtyZXR1cm4gYi5hYmJyPWEsdmJbYV18fCh2YlthXT1uZXcgZiksdmJb
YV0uc2V0KGIpLHZiW2FdfWZ1bmN0aW9uIEQoYSl7ZGVsZXRlIHZiW2FdfWZ1bmN0aW9uIEUoYSl7
dmFyIGIsYyxkLGUsZj0wLGc9ZnVuY3Rpb24oYSl7aWYoIXZiW2FdJiZ4Yil0cnl7cmVxdWlyZSgi
Li9sYW5nLyIrYSl9Y2F0Y2goYil7fXJldHVybiB2YlthXX07aWYoIWEpcmV0dXJuIGliLmZuLl9s
YW5nO2lmKCFuKGEpKXtpZihjPWcoYSkpcmV0dXJuIGM7YT1bYV19Zm9yKDtmPGEubGVuZ3RoOyl7
Zm9yKGU9QShhW2ZdKS5zcGxpdCgiLSIpLGI9ZS5sZW5ndGgsZD1BKGFbZisxXSksZD1kP2Quc3Bs
aXQoIi0iKTpudWxsO2I+MDspe2lmKGM9ZyhlLnNsaWNlKDAsYikuam9pbigiLSIpKSlyZXR1cm4g
YztpZihkJiZkLmxlbmd0aD49YiYmcChlLGQsITApPj1iLTEpYnJlYWs7Yi0tfWYrK31yZXR1cm4g
aWIuZm4uX2xhbmd9ZnVuY3Rpb24gRihhKXtyZXR1cm4gYS5tYXRjaCgvXFtbXHNcU10vKT9hLnJl
cGxhY2UoL15cW3xcXSQvZywiIik6YS5yZXBsYWNlKC9cXC9nLCIiKX1mdW5jdGlvbiBHKGEpe3Zh
ciBiLGMsZD1hLm1hdGNoKEJiKTtmb3IoYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylkW2JdPWNjW2Rb
Yl1dP2NjW2RbYl1dOkYoZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPSIiO2ZvcihiPTA7
Yz5iO2IrKylmKz1kW2JdaW5zdGFuY2VvZiBGdW5jdGlvbj9kW2JdLmNhbGwoZSxhKTpkW2JdO3Jl
dHVybiBmfX1mdW5jdGlvbiBIKGEsYil7cmV0dXJuIGEuaXNWYWxpZCgpPyhiPUkoYixhLmxhbmco
KSksX2JbYl18fChfYltiXT1HKGIpKSxfYltiXShhKSk6YS5sYW5nKCkuaW52YWxpZERhdGUoKX1m
dW5jdGlvbiBJKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYi5sb25nRGF0ZUZvcm1hdChhKXx8
YX12YXIgZD01O2ZvcihDYi5sYXN0SW5kZXg9MDtkPj0wJiZDYi50ZXN0KGEpOylhPWEucmVwbGFj
ZShDYixjKSxDYi5sYXN0SW5kZXg9MCxkLT0xO3JldHVybiBhfWZ1bmN0aW9uIEooYSxiKXt2YXIg
YyxkPWIuX3N0cmljdDtzd2l0Y2goYSl7Y2FzZSJRIjpyZXR1cm4gTmI7Y2FzZSJEREREIjpyZXR1
cm4gUGI7Y2FzZSJZWVlZIjpjYXNlIkdHR0ciOmNhc2UiZ2dnZyI6cmV0dXJuIGQ/UWI6RmI7Y2Fz
ZSJZIjpjYXNlIkciOmNhc2UiZyI6cmV0dXJuIFNiO2Nhc2UiWVlZWVlZIjpjYXNlIllZWVlZIjpj
YXNlIkdHR0dHIjpjYXNlImdnZ2dnIjpyZXR1cm4gZD9SYjpHYjtjYXNlIlMiOmlmKGQpcmV0dXJu
IE5iO2Nhc2UiU1MiOmlmKGQpcmV0dXJuIE9iO2Nhc2UiU1NTIjppZihkKXJldHVybiBQYjtjYXNl
IkRERCI6cmV0dXJuIEViO2Nhc2UiTU1NIjpjYXNlIk1NTU0iOmNhc2UiZGQiOmNhc2UiZGRkIjpj
YXNlImRkZGQiOnJldHVybiBJYjtjYXNlImEiOmNhc2UiQSI6cmV0dXJuIEUoYi5fbCkuX21lcmlk
aWVtUGFyc2U7Y2FzZSJYIjpyZXR1cm4gTGI7Y2FzZSJaIjpjYXNlIlpaIjpyZXR1cm4gSmI7Y2Fz
ZSJUIjpyZXR1cm4gS2I7Y2FzZSJTU1NTIjpyZXR1cm4gSGI7Y2FzZSJNTSI6Y2FzZSJERCI6Y2Fz
ZSJZWSI6Y2FzZSJHRyI6Y2FzZSJnZyI6Y2FzZSJISCI6Y2FzZSJoaCI6Y2FzZSJtbSI6Y2FzZSJz
cyI6Y2FzZSJ3dyI6Y2FzZSJXVyI6cmV0dXJuIGQ/T2I6RGI7Y2FzZSJNIjpjYXNlIkQiOmNhc2Ui
ZCI6Y2FzZSJIIjpjYXNlImgiOmNhc2UibSI6Y2FzZSJzIjpjYXNlInciOmNhc2UiVyI6Y2FzZSJl
IjpjYXNlIkUiOnJldHVybiBEYjtjYXNlIkRvIjpyZXR1cm4gTWI7ZGVmYXVsdDpyZXR1cm4gYz1u
ZXcgUmVnRXhwKFIoUShhLnJlcGxhY2UoIlxcIiwiIikpLCJpIikpfX1mdW5jdGlvbiBLKGEpe2E9
YXx8IiI7dmFyIGI9YS5tYXRjaChKYil8fFtdLGM9YltiLmxlbmd0aC0xXXx8W10sZD0oYysiIiku
bWF0Y2goWGIpfHxbIi0iLDAsMF0sZT0rKDYwKmRbMV0pK3QoZFsyXSk7cmV0dXJuIisiPT09ZFsw
XT8tZTplfWZ1bmN0aW9uIEwoYSxiLGMpe3ZhciBkLGU9Yy5fYTtzd2l0Y2goYSl7Y2FzZSJRIjpu
dWxsIT1iJiYoZVtwYl09MyoodChiKS0xKSk7YnJlYWs7Y2FzZSJNIjpjYXNlIk1NIjpudWxsIT1i
JiYoZVtwYl09dChiKS0xKTticmVhaztjYXNlIk1NTSI6Y2FzZSJNTU1NIjpkPUUoYy5fbCkubW9u
dGhzUGFyc2UoYiksbnVsbCE9ZD9lW3BiXT1kOmMuX3BmLmludmFsaWRNb250aD1iO2JyZWFrO2Nh
c2UiRCI6Y2FzZSJERCI6bnVsbCE9YiYmKGVbcWJdPXQoYikpO2JyZWFrO2Nhc2UiRG8iOm51bGwh
PWImJihlW3FiXT10KHBhcnNlSW50KGIsMTApKSk7YnJlYWs7Y2FzZSJEREQiOmNhc2UiRERERCI6
bnVsbCE9YiYmKGMuX2RheU9mWWVhcj10KGIpKTticmVhaztjYXNlIllZIjplW29iXT1pYi5wYXJz
ZVR3b0RpZ2l0WWVhcihiKTticmVhaztjYXNlIllZWVkiOmNhc2UiWVlZWVkiOmNhc2UiWVlZWVlZ
IjplW29iXT10KGIpO2JyZWFrO2Nhc2UiYSI6Y2FzZSJBIjpjLl9pc1BtPUUoYy5fbCkuaXNQTShi
KTticmVhaztjYXNlIkgiOmNhc2UiSEgiOmNhc2UiaCI6Y2FzZSJoaCI6ZVtyYl09dChiKTticmVh
aztjYXNlIm0iOmNhc2UibW0iOmVbc2JdPXQoYik7YnJlYWs7Y2FzZSJzIjpjYXNlInNzIjplW3Ri
XT10KGIpO2JyZWFrO2Nhc2UiUyI6Y2FzZSJTUyI6Y2FzZSJTU1MiOmNhc2UiU1NTUyI6ZVt1Yl09
dCgxZTMqKCIwLiIrYikpO2JyZWFrO2Nhc2UiWCI6Yy5fZD1uZXcgRGF0ZSgxZTMqcGFyc2VGbG9h
dChiKSk7YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjLl91c2VVVEM9ITAsYy5fdHptPUsoYik7YnJl
YWs7Y2FzZSJ3IjpjYXNlInd3IjpjYXNlIlciOmNhc2UiV1ciOmNhc2UiZCI6Y2FzZSJkZCI6Y2Fz
ZSJkZGQiOmNhc2UiZGRkZCI6Y2FzZSJlIjpjYXNlIkUiOmE9YS5zdWJzdHIoMCwxKTtjYXNlImdn
IjpjYXNlImdnZ2ciOmNhc2UiR0ciOmNhc2UiR0dHRyI6Y2FzZSJHR0dHRyI6YT1hLnN1YnN0cigw
LDIpLGImJihjLl93PWMuX3d8fHt9LGMuX3dbYV09Yil9fWZ1bmN0aW9uIE0oYSl7dmFyIGIsYyxk
LGUsZixnLGgsaSxqLGssbD1bXTtpZighYS5fZCl7Zm9yKGQ9TyhhKSxhLl93JiZudWxsPT1hLl9h
W3FiXSYmbnVsbD09YS5fYVtwYl0mJihmPWZ1bmN0aW9uKGIpe3ZhciBjPXBhcnNlSW50KGIsMTAp
O3JldHVybiBiP2IubGVuZ3RoPDM/Yz42OD8xOTAwK2M6MmUzK2M6YzpudWxsPT1hLl9hW29iXT9p
YigpLndlZWtZZWFyKCk6YS5fYVtvYl19LGc9YS5fdyxudWxsIT1nLkdHfHxudWxsIT1nLld8fG51
bGwhPWcuRT9oPV8oZihnLkdHKSxnLld8fDEsZy5FLDQsMSk6KGk9RShhLl9sKSxqPW51bGwhPWcu
ZD9YKGcuZCxpKTpudWxsIT1nLmU/cGFyc2VJbnQoZy5lLDEwKStpLl93ZWVrLmRvdzowLGs9cGFy
c2VJbnQoZy53LDEwKXx8MSxudWxsIT1nLmQmJmo8aS5fd2Vlay5kb3cmJmsrKyxoPV8oZihnLmdn
KSxrLGosaS5fd2Vlay5kb3ksaS5fd2Vlay5kb3cpKSxhLl9hW29iXT1oLnllYXIsYS5fZGF5T2ZZ
ZWFyPWguZGF5T2ZZZWFyKSxhLl9kYXlPZlllYXImJihlPW51bGw9PWEuX2Fbb2JdP2Rbb2JdOmEu
X2Fbb2JdLGEuX2RheU9mWWVhcj53KGUpJiYoYS5fcGYuX292ZXJmbG93RGF5T2ZZZWFyPSEwKSxj
PVcoZSwwLGEuX2RheU9mWWVhciksYS5fYVtwYl09Yy5nZXRVVENNb250aCgpLGEuX2FbcWJdPWMu
Z2V0VVRDRGF0ZSgpKSxiPTA7Mz5iJiZudWxsPT1hLl9hW2JdOysrYilhLl9hW2JdPWxbYl09ZFti
XTtmb3IoOzc+YjtiKyspYS5fYVtiXT1sW2JdPW51bGw9PWEuX2FbYl0/Mj09PWI/MTowOmEuX2Fb
Yl07bFtyYl0rPXQoKGEuX3R6bXx8MCkvNjApLGxbc2JdKz10KChhLl90em18fDApJTYwKSxhLl9k
PShhLl91c2VVVEM/VzpWKS5hcHBseShudWxsLGwpfX1mdW5jdGlvbiBOKGEpe3ZhciBiO2EuX2R8
fChiPXIoYS5faSksYS5fYT1bYi55ZWFyLGIubW9udGgsYi5kYXksYi5ob3VyLGIubWludXRlLGIu
c2Vjb25kLGIubWlsbGlzZWNvbmRdLE0oYSkpfWZ1bmN0aW9uIE8oYSl7dmFyIGI9bmV3IERhdGU7
cmV0dXJuIGEuX3VzZVVUQz9bYi5nZXRVVENGdWxsWWVhcigpLGIuZ2V0VVRDTW9udGgoKSxiLmdl
dFVUQ0RhdGUoKV06W2IuZ2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCldfWZ1
bmN0aW9uIFAoYSl7YS5fYT1bXSxhLl9wZi5lbXB0eT0hMDt2YXIgYixjLGQsZSxmLGc9RShhLl9s
KSxoPSIiK2EuX2ksaT1oLmxlbmd0aCxqPTA7Zm9yKGQ9SShhLl9mLGcpLm1hdGNoKEJiKXx8W10s
Yj0wO2I8ZC5sZW5ndGg7YisrKWU9ZFtiXSxjPShoLm1hdGNoKEooZSxhKSl8fFtdKVswXSxjJiYo
Zj1oLnN1YnN0cigwLGguaW5kZXhPZihjKSksZi5sZW5ndGg+MCYmYS5fcGYudW51c2VkSW5wdXQu
cHVzaChmKSxoPWguc2xpY2UoaC5pbmRleE9mKGMpK2MubGVuZ3RoKSxqKz1jLmxlbmd0aCksY2Nb
ZV0/KGM/YS5fcGYuZW1wdHk9ITE6YS5fcGYudW51c2VkVG9rZW5zLnB1c2goZSksTChlLGMsYSkp
OmEuX3N0cmljdCYmIWMmJmEuX3BmLnVudXNlZFRva2Vucy5wdXNoKGUpO2EuX3BmLmNoYXJzTGVm
dE92ZXI9aS1qLGgubGVuZ3RoPjAmJmEuX3BmLnVudXNlZElucHV0LnB1c2goaCksYS5faXNQbSYm
YS5fYVtyYl08MTImJihhLl9hW3JiXSs9MTIpLGEuX2lzUG09PT0hMSYmMTI9PT1hLl9hW3JiXSYm
KGEuX2FbcmJdPTApLE0oYSkseShhKX1mdW5jdGlvbiBRKGEpe3JldHVybiBhLnJlcGxhY2UoL1xc
KFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbihhLGIsYyxkLGUpe3Jl
dHVybiBifHxjfHxkfHxlfSl9ZnVuY3Rpb24gUihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bLVwvXFxe
JCorPy4oKXxbXF17fV0vZywiXFwkJiIpfWZ1bmN0aW9uIFMoYSl7dmFyIGMsZCxlLGYsZztpZigw
PT09YS5fZi5sZW5ndGgpcmV0dXJuIGEuX3BmLmludmFsaWRGb3JtYXQ9ITAsdm9pZChhLl9kPW5l
dyBEYXRlKDAvMCkpO2ZvcihmPTA7ZjxhLl9mLmxlbmd0aDtmKyspZz0wLGM9aSh7fSxhKSxjLl9w
Zj1iKCksYy5fZj1hLl9mW2ZdLFAoYykseihjKSYmKGcrPWMuX3BmLmNoYXJzTGVmdE92ZXIsZys9
MTAqYy5fcGYudW51c2VkVG9rZW5zLmxlbmd0aCxjLl9wZi5zY29yZT1nLChudWxsPT1lfHxlPmcp
JiYoZT1nLGQ9YykpO2koYSxkfHxjKX1mdW5jdGlvbiBUKGEpe3ZhciBiLGMsZD1hLl9pLGU9VGIu
ZXhlYyhkKTtpZihlKXtmb3IoYS5fcGYuaXNvPSEwLGI9MCxjPVZiLmxlbmd0aDtjPmI7YisrKWlm
KFZiW2JdWzFdLmV4ZWMoZCkpe2EuX2Y9VmJbYl1bMF0rKGVbNl18fCIgIik7YnJlYWt9Zm9yKGI9
MCxjPVdiLmxlbmd0aDtjPmI7YisrKWlmKFdiW2JdWzFdLmV4ZWMoZCkpe2EuX2YrPVdiW2JdWzBd
O2JyZWFrfWQubWF0Y2goSmIpJiYoYS5fZis9IloiKSxQKGEpfWVsc2UgaWIuY3JlYXRlRnJvbUlu
cHV0RmFsbGJhY2soYSl9ZnVuY3Rpb24gVShiKXt2YXIgYz1iLl9pLGQ9eWIuZXhlYyhjKTtjPT09
YT9iLl9kPW5ldyBEYXRlOmQ/Yi5fZD1uZXcgRGF0ZSgrZFsxXSk6InN0cmluZyI9PXR5cGVvZiBj
P1QoYik6bihjKT8oYi5fYT1jLnNsaWNlKDApLE0oYikpOm8oYyk/Yi5fZD1uZXcgRGF0ZSgrYyk6
Im9iamVjdCI9PXR5cGVvZiBjP04oYik6Im51bWJlciI9PXR5cGVvZiBjP2IuX2Q9bmV3IERhdGUo
Yyk6aWIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYil9ZnVuY3Rpb24gVihhLGIsYyxkLGUsZixn
KXt2YXIgaD1uZXcgRGF0ZShhLGIsYyxkLGUsZixnKTtyZXR1cm4gMTk3MD5hJiZoLnNldEZ1bGxZ
ZWFyKGEpLGh9ZnVuY3Rpb24gVyhhKXt2YXIgYj1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShudWxs
LGFyZ3VtZW50cykpO3JldHVybiAxOTcwPmEmJmIuc2V0VVRDRnVsbFllYXIoYSksYn1mdW5jdGlv
biBYKGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhKWlmKGlzTmFOKGEpKXtpZihhPWIud2Vla2Rh
eXNQYXJzZShhKSwibnVtYmVyIiE9dHlwZW9mIGEpcmV0dXJuIG51bGx9ZWxzZSBhPXBhcnNlSW50
KGEsMTApO3JldHVybiBhfWZ1bmN0aW9uIFkoYSxiLGMsZCxlKXtyZXR1cm4gZS5yZWxhdGl2ZVRp
bWUoYnx8MSwhIWMsYSxkKX1mdW5jdGlvbiBaKGEsYixjKXt2YXIgZD1uYihNYXRoLmFicyhhKS8x
ZTMpLGU9bmIoZC82MCksZj1uYihlLzYwKSxnPW5iKGYvMjQpLGg9bmIoZy8zNjUpLGk9NDU+ZCYm
WyJzIixkXXx8MT09PWUmJlsibSJdfHw0NT5lJiZbIm1tIixlXXx8MT09PWYmJlsiaCJdfHwyMj5m
JiZbImhoIixmXXx8MT09PWcmJlsiZCJdfHwyNT49ZyYmWyJkZCIsZ118fDQ1Pj1nJiZbIk0iXXx8
MzQ1PmcmJlsiTU0iLG5iKGcvMzApXXx8MT09PWgmJlsieSJdfHxbInl5IixoXTtyZXR1cm4gaVsy
XT1iLGlbM109YT4wLGlbNF09YyxZLmFwcGx5KHt9LGkpfWZ1bmN0aW9uICQoYSxiLGMpe3ZhciBk
LGU9Yy1iLGY9Yy1hLmRheSgpO3JldHVybiBmPmUmJihmLT03KSxlLTc+ZiYmKGYrPTcpLGQ9aWIo
YSkuYWRkKCJkIixmKSx7d2VlazpNYXRoLmNlaWwoZC5kYXlPZlllYXIoKS83KSx5ZWFyOmQueWVh
cigpfX1mdW5jdGlvbiBfKGEsYixjLGQsZSl7dmFyIGYsZyxoPVcoYSwwLDEpLmdldFVUQ0RheSgp
O3JldHVybiBjPW51bGwhPWM/YzplLGY9ZS1oKyhoPmQ/NzowKS0oZT5oPzc6MCksZz03KihiLTEp
KyhjLWUpK2YrMSx7eWVhcjpnPjA/YTphLTEsZGF5T2ZZZWFyOmc+MD9nOncoYS0xKStnfX1mdW5j
dGlvbiBhYihiKXt2YXIgYz1iLl9pLGQ9Yi5fZjtyZXR1cm4gbnVsbD09PWN8fGQ9PT1hJiYiIj09
PWM/aWIuaW52YWxpZCh7bnVsbElucHV0OiEwfSk6KCJzdHJpbmciPT10eXBlb2YgYyYmKGIuX2k9
Yz1FKCkucHJlcGFyc2UoYykpLGliLmlzTW9tZW50KGMpPyhiPWooYyksYi5fZD1uZXcgRGF0ZSgr
Yy5fZCkpOmQ/bihkKT9TKGIpOlAoYik6VShiKSxuZXcgZyhiKSl9ZnVuY3Rpb24gYmIoYSxiKXt2
YXIgYztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihiPWEubGFuZygpLm1vbnRoc1BhcnNlKGIp
LCJudW1iZXIiIT10eXBlb2YgYik/YTooYz1NYXRoLm1pbihhLmRhdGUoKSx1KGEueWVhcigpLGIp
KSxhLl9kWyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oYixjKSxhKX1mdW5jdGlv
biBjYihhLGIpe3JldHVybiBhLl9kWyJnZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oKX1mdW5j
dGlvbiBkYihhLGIsYyl7cmV0dXJuIk1vbnRoIj09PWI/YmIoYSxjKTphLl9kWyJzZXQiKyhhLl9p
c1VUQz8iVVRDIjoiIikrYl0oYyl9ZnVuY3Rpb24gZWIoYSxiKXtyZXR1cm4gZnVuY3Rpb24oYyl7
cmV0dXJuIG51bGwhPWM/KGRiKHRoaXMsYSxjKSxpYi51cGRhdGVPZmZzZXQodGhpcyxiKSx0aGlz
KTpjYih0aGlzLGEpfX1mdW5jdGlvbiBmYihhKXtpYi5kdXJhdGlvbi5mblthXT1mdW5jdGlvbigp
e3JldHVybiB0aGlzLl9kYXRhW2FdfX1mdW5jdGlvbiBnYihhLGIpe2liLmR1cmF0aW9uLmZuWyJh
cyIrYV09ZnVuY3Rpb24oKXtyZXR1cm4rdGhpcy9ifX1mdW5jdGlvbiBoYihhKXsidW5kZWZpbmVk
Ij09dHlwZW9mIGVuZGVyJiYoamI9bWIubW9tZW50LG1iLm1vbWVudD1hP2MoIkFjY2Vzc2luZyBN
b21lbnQgdGhyb3VnaCB0aGUgZ2xvYmFsIHNjb3BlIGlzIGRlcHJlY2F0ZWQsIGFuZCB3aWxsIGJl
IHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZS4iLGliKTppYil9Zm9yKHZhciBpYixqYixr
YixsYj0iMi42LjAiLG1iPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp0aGlzLG5i
PU1hdGgucm91bmQsb2I9MCxwYj0xLHFiPTIscmI9MyxzYj00LHRiPTUsdWI9Nix2Yj17fSx3Yj17
X2lzQU1vbWVudE9iamVjdDpudWxsLF9pOm51bGwsX2Y6bnVsbCxfbDpudWxsLF9zdHJpY3Q6bnVs
bCxfaXNVVEM6bnVsbCxfb2Zmc2V0Om51bGwsX3BmOm51bGwsX2xhbmc6bnVsbH0seGI9InVuZGVm
aW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzLHliPS9eXC8/RGF0ZVwoKFwtP1xk
KykvaSx6Yj0vKFwtKT8oPzooXGQqKVwuKT8oXGQrKVw6KFxkKykoPzpcOihcZCspXC4/KFxkezN9
KT8pPy8sQWI9L14oLSk/UCg/Oig/OihbMC05LC5dKilZKT8oPzooWzAtOSwuXSopTSk/KD86KFsw
LTksLl0qKUQpPyg/OlQoPzooWzAtOSwuXSopSCk/KD86KFswLTksLl0qKU0pPyg/OihbMC05LC5d
KilTKT8pP3woWzAtOSwuXSopVykkLyxCYj0vKFxbW15cW10qXF0pfChcXCk/KE1vfE1NP00/TT98
RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFF8WVlZWVlZfFlZWVlZ
fFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98bW0/fHNzP3xTezEs
NH18WHx6ej98Wlo/fC4pL2csQ2I9LyhcW1teXFtdKlxdKXwoXFwpPyhMVHxMTD9MP0w/fGx7MSw0
fSkvZyxEYj0vXGRcZD8vLEViPS9cZHsxLDN9LyxGYj0vXGR7MSw0fS8sR2I9L1srXC1dP1xkezEs
Nn0vLEhiPS9cZCsvLEliPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVG
OTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAt
XHUwNkZGXSspezEsMn0vaSxKYj0vWnxbXCtcLV1cZFxkOj9cZFxkL2dpLEtiPS9UL2ksTGI9L1tc
K1wtXT9cZCsoXC5cZHsxLDN9KT8vLE1iPS9cZHsxLDJ9LyxOYj0vXGQvLE9iPS9cZFxkLyxQYj0v
XGR7M30vLFFiPS9cZHs0fS8sUmI9L1srLV0/XGR7Nn0vLFNiPS9bKy1dP1xkKy8sVGI9L15ccyoo
PzpbKy1dXGR7Nn18XGR7NH0pLSg/OihcZFxkLVxkXGQpfChXXGRcZCQpfChXXGRcZC1cZCl8KFxk
XGRcZCkpKChUfCApKFxkXGQoOlxkXGQoOlxkXGQoXC5cZCspPyk/KT8pPyhbXCtcLV1cZFxkKD86
Oj9cZFxkKT98XHMqWik/KT8kLyxVYj0iWVlZWS1NTS1ERFRISDptbTpzc1oiLFZiPVtbIllZWVlZ
WS1NTS1ERCIsL1srLV1cZHs2fS1cZHsyfS1cZHsyfS9dLFsiWVlZWS1NTS1ERCIsL1xkezR9LVxk
ezJ9LVxkezJ9L10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGR7Mn0tXGQvXSxbIkdHR0ctW1dd
V1ciLC9cZHs0fS1XXGR7Mn0vXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXV0sV2I9W1siSEg6
bW06c3MuU1NTUyIsLyhUfCApXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MiLC8oVHwg
KVxkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsLyhUfCApXGRcZDpcZFxkL10sWyJISCIsLyhUfCAp
XGRcZC9dXSxYYj0vKFtcK1wtXXxcZFxkKS9naSxZYj0oIkRhdGV8SG91cnN8TWludXRlc3xTZWNv
bmRzfE1pbGxpc2Vjb25kcyIuc3BsaXQoInwiKSx7TWlsbGlzZWNvbmRzOjEsU2Vjb25kczoxZTMs
TWludXRlczo2ZTQsSG91cnM6MzZlNSxEYXlzOjg2NGU1LE1vbnRoczoyNTkyZTYsWWVhcnM6MzE1
MzZlNn0pLFpiPXttczoibWlsbGlzZWNvbmQiLHM6InNlY29uZCIsbToibWludXRlIixoOiJob3Vy
IixkOiJkYXkiLEQ6ImRhdGUiLHc6IndlZWsiLFc6Imlzb1dlZWsiLE06Im1vbnRoIixROiJxdWFy
dGVyIix5OiJ5ZWFyIixEREQ6ImRheU9mWWVhciIsZToid2Vla2RheSIsRToiaXNvV2Vla2RheSIs
Z2c6IndlZWtZZWFyIixHRzoiaXNvV2Vla1llYXIifSwkYj17ZGF5b2Z5ZWFyOiJkYXlPZlllYXIi
LGlzb3dlZWtkYXk6Imlzb1dlZWtkYXkiLGlzb3dlZWs6Imlzb1dlZWsiLHdlZWt5ZWFyOiJ3ZWVr
WWVhciIsaXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIn0sX2I9e30sYWM9IkRERCB3IFcgTSBEIGQi
LnNwbGl0KCIgIiksYmM9Ik0gRCBIIGggbSBzIHcgVyIuc3BsaXQoIiAiKSxjYz17TTpmdW5jdGlv
bigpe3JldHVybiB0aGlzLm1vbnRoKCkrMX0sTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxh
bmcoKS5tb250aHNTaG9ydCh0aGlzLGEpfSxNTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxh
bmcoKS5tb250aHModGhpcyxhKX0sRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUoKX0sRERE
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5T2ZZZWFyKCl9LGQ6ZnVuY3Rpb24oKXtyZXR1cm4g
dGhpcy5kYXkoKX0sZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGFuZygpLndlZWtkYXlzTWlu
KHRoaXMsYSl9LGRkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYW5nKCkud2Vla2RheXNTaG9y
dCh0aGlzLGEpfSxkZGRkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhbmcoKS53ZWVrZGF5cyh0
aGlzLGEpfSx3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2VlaygpfSxXOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuaXNvV2VlaygpfSxZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpJTEw
MCwyKX0sWVlZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpLDQpfSxZWVlZWTpmdW5j
dGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpLDUpfSxZWVlZWVk6ZnVuY3Rpb24oKXt2YXIgYT10
aGlzLnllYXIoKSxiPWE+PTA/IisiOiItIjtyZXR1cm4gYitsKE1hdGguYWJzKGEpLDYpfSxnZzpm
dW5jdGlvbigpe3JldHVybiBsKHRoaXMud2Vla1llYXIoKSUxMDAsMil9LGdnZ2c6ZnVuY3Rpb24o
KXtyZXR1cm4gbCh0aGlzLndlZWtZZWFyKCksNCl9LGdnZ2dnOmZ1bmN0aW9uKCl7cmV0dXJuIGwo
dGhpcy53ZWVrWWVhcigpLDUpfSxHRzpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMuaXNvV2Vla1ll
YXIoKSUxMDAsMil9LEdHR0c6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLmlzb1dlZWtZZWFyKCks
NCl9LEdHR0dHOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5pc29XZWVrWWVhcigpLDUpfSxlOmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla2RheSgpfSxFOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
aXNvV2Vla2RheSgpfSxhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFuZygpLm1lcmlkaWVtKHRo
aXMuaG91cnMoKSx0aGlzLm1pbnV0ZXMoKSwhMCl9LEE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5s
YW5nKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLCExKX0sSDpmdW5jdGlv
bigpe3JldHVybiB0aGlzLmhvdXJzKCl9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3Vycygp
JTEyfHwxMn0sbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1pbnV0ZXMoKX0sczpmdW5jdGlvbigp
e3JldHVybiB0aGlzLnNlY29uZHMoKX0sUzpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMubWlsbGlz
ZWNvbmRzKCkvMTAwKX0sU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0KHRoaXMubWlsbGlzZWNvbmRz
KCkvMTApLDIpfSxTU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLm1pbGxpc2Vjb25kcygpLDMp
fSxTU1NTOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5taWxsaXNlY29uZHMoKSwzKX0sWjpmdW5j
dGlvbigpe3ZhciBhPS10aGlzLnpvbmUoKSxiPSIrIjtyZXR1cm4gMD5hJiYoYT0tYSxiPSItIiks
YitsKHQoYS82MCksMikrIjoiK2wodChhKSU2MCwyKX0sWlo6ZnVuY3Rpb24oKXt2YXIgYT0tdGhp
cy56b25lKCksYj0iKyI7cmV0dXJuIDA+YSYmKGE9LWEsYj0iLSIpLGIrbCh0KGEvNjApLDIpK2wo
dChhKSU2MCwyKX0sejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmVBYmJyKCl9LHp6OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMuem9uZU5hbWUoKX0sWDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVu
aXgoKX0sUTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1YXJ0ZXIoKX19LGRjPVsibW9udGhzIiwi
bW9udGhzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5c01pbiJdO2Fj
Lmxlbmd0aDspa2I9YWMucG9wKCksY2Nba2IrIm8iXT1lKGNjW2tiXSxrYik7Zm9yKDtiYy5sZW5n
dGg7KWtiPWJjLnBvcCgpLGNjW2tiK2tiXT1kKGNjW2tiXSwyKTtmb3IoY2MuRERERD1kKGNjLkRE
RCwzKSxpKGYucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYyBpbiBhKWI9
YVtjXSwiZnVuY3Rpb24iPT10eXBlb2YgYj90aGlzW2NdPWI6dGhpc1siXyIrY109Yn0sX21vbnRo
czoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0
ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHM6ZnVuY3Rp
b24oYSl7cmV0dXJuIHRoaXMuX21vbnRoc1thLm1vbnRoKCldfSxfbW9udGhzU2hvcnQ6Ikphbl9G
ZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIpLG1v
bnRoc1Nob3J0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tb250aHNTaG9ydFthLm1vbnRoKCld
fSxtb250aHNQYXJzZTpmdW5jdGlvbihhKXt2YXIgYixjLGQ7Zm9yKHRoaXMuX21vbnRoc1BhcnNl
fHwodGhpcy5fbW9udGhzUGFyc2U9W10pLGI9MDsxMj5iO2IrKylpZih0aGlzLl9tb250aHNQYXJz
ZVtiXXx8KGM9aWIudXRjKFsyZTMsYl0pLGQ9Il4iK3RoaXMubW9udGhzKGMsIiIpKyJ8XiIrdGhp
cy5tb250aHNTaG9ydChjLCIiKSx0aGlzLl9tb250aHNQYXJzZVtiXT1uZXcgUmVnRXhwKGQucmVw
bGFjZSgiLiIsIiIpLCJpIikpLHRoaXMuX21vbnRoc1BhcnNlW2JdLnRlc3QoYSkpcmV0dXJuIGJ9
LF93ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9Gcmlk
YXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMu
X3dlZWtkYXlzW2EuZGF5KCldfSxfd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1RodV9G
cmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMu
X3dlZWtkYXlzU2hvcnRbYS5kYXkoKV19LF93ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhfRnJf
U2EiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dlZWtk
YXlzTWluW2EuZGF5KCldfSx3ZWVrZGF5c1BhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtmb3Io
dGhpcy5fd2Vla2RheXNQYXJzZXx8KHRoaXMuX3dlZWtkYXlzUGFyc2U9W10pLGI9MDs3PmI7Yisr
KWlmKHRoaXMuX3dlZWtkYXlzUGFyc2VbYl18fChjPWliKFsyZTMsMV0pLmRheShiKSxkPSJeIit0
aGlzLndlZWtkYXlzKGMsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KGMsIiIpKyJ8XiIrdGhp
cy53ZWVrZGF5c01pbihjLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2JdPW5ldyBSZWdFeHAoZC5y
ZXBsYWNlKCIuIiwiIiksImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtiXS50ZXN0KGEpKXJldHVy
biBifSxfbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1N
IEQgWVlZWSIsTExMOiJNTU1NIEQgWVlZWSBMVCIsTExMTDoiZGRkZCwgTU1NTSBEIFlZWVkgTFQi
fSxsb25nRGF0ZUZvcm1hdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9sb25nRGF0ZUZvcm1hdFth
XTtyZXR1cm4hYiYmdGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXSYmKGI9dGhp
cy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXS5yZXBsYWNlKC9NTU1NfE1NfEREfGRk
ZGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gYS5zbGljZSgxKX0pLHRoaXMuX2xvbmdEYXRlRm9ybWF0
W2FdPWIpLGJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJDYXNl
KCkuY2hhckF0KDApfSxfbWVyaWRpZW1QYXJzZTovW2FwXVwuP20/XC4/L2ksbWVyaWRpZW06ZnVu
Y3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/InBtIjoiUE0iOmM/ImFtIjoiQU0ifSxfY2FsZW5k
YXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5l
eHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2Vl
azoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlvbihh
LGIpe3ZhciBjPXRoaXMuX2NhbGVuZGFyW2FdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBjP2Mu
YXBwbHkoYik6Y30sX3JlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdvIixz
OiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhvdXIi
LGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToiJWQg
bW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LHJlbGF0aXZlVGltZTpmdW5jdGlvbihh
LGIsYyxkKXt2YXIgZT10aGlzLl9yZWxhdGl2ZVRpbWVbY107cmV0dXJuImZ1bmN0aW9uIj09dHlw
ZW9mIGU/ZShhLGIsYyxkKTplLnJlcGxhY2UoLyVkL2ksYSl9LHBhc3RGdXR1cmU6ZnVuY3Rpb24o
YSxiKXt2YXIgYz10aGlzLl9yZWxhdGl2ZVRpbWVbYT4wPyJmdXR1cmUiOiJwYXN0Il07cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIGM/YyhiKTpjLnJlcGxhY2UoLyVzL2ksYil9LG9yZGluYWw6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGEpfSxfb3JkaW5hbDoi
JWQiLHByZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxwb3N0Zm9ybWF0OmZ1bmN0aW9uKGEp
e3JldHVybiBhfSx3ZWVrOmZ1bmN0aW9uKGEpe3JldHVybiAkKGEsdGhpcy5fd2Vlay5kb3csdGhp
cy5fd2Vlay5kb3kpLndlZWt9LF93ZWVrOntkb3c6MCxkb3k6Nn0sX2ludmFsaWREYXRlOiJJbnZh
bGlkIGRhdGUiLGludmFsaWREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ludmFsaWREYXRl
fX0pLGliPWZ1bmN0aW9uKGMsZCxlLGYpe3ZhciBnO3JldHVybiJib29sZWFuIj09dHlwZW9mIGUm
JihmPWUsZT1hKSxnPXt9LGcuX2lzQU1vbWVudE9iamVjdD0hMCxnLl9pPWMsZy5fZj1kLGcuX2w9
ZSxnLl9zdHJpY3Q9ZixnLl9pc1VUQz0hMSxnLl9wZj1iKCksYWIoZyl9LGliLnN1cHByZXNzRGVw
cmVjYXRpb25XYXJuaW5ncz0hMSxpYi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1jKCJtb21lbnQg
Y29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyBkaXNjb3VyYWdlZCBh
bmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSByZWZl
ciB0byBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3IgbW9y
ZSBpbmZvLiIsZnVuY3Rpb24oYSl7YS5fZD1uZXcgRGF0ZShhLl9pKX0pLGliLnV0Yz1mdW5jdGlv
bihjLGQsZSxmKXt2YXIgZztyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlJiYoZj1lLGU9YSksZz17
fSxnLl9pc0FNb21lbnRPYmplY3Q9ITAsZy5fdXNlVVRDPSEwLGcuX2lzVVRDPSEwLGcuX2w9ZSxn
Ll9pPWMsZy5fZj1kLGcuX3N0cmljdD1mLGcuX3BmPWIoKSxhYihnKS51dGMoKX0saWIudW5peD1m
dW5jdGlvbihhKXtyZXR1cm4gaWIoMWUzKmEpfSxpYi5kdXJhdGlvbj1mdW5jdGlvbihhLGIpe3Zh
ciBjLGQsZSxmPWEsZz1udWxsO3JldHVybiBpYi5pc0R1cmF0aW9uKGEpP2Y9e21zOmEuX21pbGxp
c2Vjb25kcyxkOmEuX2RheXMsTTphLl9tb250aHN9OiJudW1iZXIiPT10eXBlb2YgYT8oZj17fSxi
P2ZbYl09YTpmLm1pbGxpc2Vjb25kcz1hKTooZz16Yi5leGVjKGEpKT8oYz0iLSI9PT1nWzFdPy0x
OjEsZj17eTowLGQ6dChnW3FiXSkqYyxoOnQoZ1tyYl0pKmMsbTp0KGdbc2JdKSpjLHM6dChnW3Ri
XSkqYyxtczp0KGdbdWJdKSpjfSk6KGc9QWIuZXhlYyhhKSkmJihjPSItIj09PWdbMV0/LTE6MSxl
PWZ1bmN0aW9uKGEpe3ZhciBiPWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTtyZXR1
cm4oaXNOYU4oYik/MDpiKSpjfSxmPXt5OmUoZ1syXSksTTplKGdbM10pLGQ6ZShnWzRdKSxoOmUo
Z1s1XSksbTplKGdbNl0pLHM6ZShnWzddKSx3OmUoZ1s4XSl9KSxkPW5ldyBoKGYpLGliLmlzRHVy
YXRpb24oYSkmJmEuaGFzT3duUHJvcGVydHkoIl9sYW5nIikmJihkLl9sYW5nPWEuX2xhbmcpLGR9
LGliLnZlcnNpb249bGIsaWIuZGVmYXVsdEZvcm1hdD1VYixpYi5tb21lbnRQcm9wZXJ0aWVzPXdi
LGliLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe30saWIubGFuZz1mdW5jdGlvbihhLGIpe3ZhciBj
O3JldHVybiBhPyhiP0MoQShhKSxiKTpudWxsPT09Yj8oRChhKSxhPSJlbiIpOnZiW2FdfHxFKGEp
LGM9aWIuZHVyYXRpb24uZm4uX2xhbmc9aWIuZm4uX2xhbmc9RShhKSxjLl9hYmJyKTppYi5mbi5f
bGFuZy5fYWJicn0saWIubGFuZ0RhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuX2xhbmcmJmEu
X2xhbmcuX2FiYnImJihhPWEuX2xhbmcuX2FiYnIpLEUoYSl9LGliLmlzTW9tZW50PWZ1bmN0aW9u
KGEpe3JldHVybiBhIGluc3RhbmNlb2YgZ3x8bnVsbCE9YSYmYS5oYXNPd25Qcm9wZXJ0eSgiX2lz
QU1vbWVudE9iamVjdCIpfSxpYi5pc0R1cmF0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiBhIGluc3Rh
bmNlb2YgaH0sa2I9ZGMubGVuZ3RoLTE7a2I+PTA7LS1rYilzKGRjW2tiXSk7aWIubm9ybWFsaXpl
VW5pdHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHEoYSl9LGliLmludmFsaWQ9ZnVuY3Rpb24oYSl7dmFy
IGI9aWIudXRjKDAvMCk7cmV0dXJuIG51bGwhPWE/aShiLl9wZixhKTpiLl9wZi51c2VySW52YWxp
ZGF0ZWQ9ITAsYn0saWIucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIGliLmFwcGx5KG51bGws
YXJndW1lbnRzKS5wYXJzZVpvbmUoKX0saWIucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24oYSl7
cmV0dXJuIHQoYSkrKHQoYSk+Njg/MTkwMDoyZTMpfSxpKGliLmZuPWcucHJvdG90eXBlLHtjbG9u
ZTpmdW5jdGlvbigpe3JldHVybiBpYih0aGlzKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVybit0
aGlzLl9kKzZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sdW5peDpmdW5jdGlvbigpe3JldHVybiBNYXRo
LmZsb29yKCt0aGlzLzFlMyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUo
KS5sYW5nKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloiKX0s
dG9EYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldD9uZXcgRGF0ZSgrdGhpcyk6dGhp
cy5fZH0sdG9JU09TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgYT1pYih0aGlzKS51dGMoKTtyZXR1cm4g
MDxhLnllYXIoKSYmYS55ZWFyKCk8PTk5OTk/SChhLCJZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NT
W1pdIik6SChhLCJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKX0sdG9BcnJheTpmdW5j
dGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuW2EueWVhcigpLGEubW9udGgoKSxhLmRhdGUoKSxhLmhv
dXJzKCksYS5taW51dGVzKCksYS5zZWNvbmRzKCksYS5taWxsaXNlY29uZHMoKV19LGlzVmFsaWQ6
ZnVuY3Rpb24oKXtyZXR1cm4geih0aGlzKX0saXNEU1RTaGlmdGVkOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX2E/dGhpcy5pc1ZhbGlkKCkmJnAodGhpcy5fYSwodGhpcy5faXNVVEM/aWIudXRjKHRo
aXMuX2EpOmliKHRoaXMuX2EpKS50b0FycmF5KCkpPjA6ITF9LHBhcnNpbmdGbGFnczpmdW5jdGlv
bigpe3JldHVybiBpKHt9LHRoaXMuX3BmKX0saW52YWxpZEF0OmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuX3BmLm92ZXJmbG93fSx1dGM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56b25lKDApfSxsb2Nh
bDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmUoMCksdGhpcy5faXNVVEM9ITEsdGhpc30sZm9y
bWF0OmZ1bmN0aW9uKGEpe3ZhciBiPUgodGhpcyxhfHxpYi5kZWZhdWx0Rm9ybWF0KTtyZXR1cm4g
dGhpcy5sYW5nKCkucG9zdGZvcm1hdChiKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0dXJu
IGM9InN0cmluZyI9PXR5cGVvZiBhP2liLmR1cmF0aW9uKCtiLGEpOmliLmR1cmF0aW9uKGEsYiks
bSh0aGlzLGMsMSksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4gYz0i
c3RyaW5nIj09dHlwZW9mIGE/aWIuZHVyYXRpb24oK2IsYSk6aWIuZHVyYXRpb24oYSxiKSxtKHRo
aXMsYywtMSksdGhpc30sZGlmZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPUIoYSx0aGlzKSxn
PTZlNCoodGhpcy56b25lKCktZi56b25lKCkpO3JldHVybiBiPXEoYiksInllYXIiPT09Ynx8Im1v
bnRoIj09PWI/KGQ9NDMyZTUqKHRoaXMuZGF5c0luTW9udGgoKStmLmRheXNJbk1vbnRoKCkpLGU9
MTIqKHRoaXMueWVhcigpLWYueWVhcigpKSsodGhpcy5tb250aCgpLWYubW9udGgoKSksZSs9KHRo
aXMtaWIodGhpcykuc3RhcnRPZigibW9udGgiKS0oZi1pYihmKS5zdGFydE9mKCJtb250aCIpKSkv
ZCxlLT02ZTQqKHRoaXMuem9uZSgpLWliKHRoaXMpLnN0YXJ0T2YoIm1vbnRoIikuem9uZSgpLShm
LnpvbmUoKS1pYihmKS5zdGFydE9mKCJtb250aCIpLnpvbmUoKSkpL2QsInllYXIiPT09YiYmKGUv
PTEyKSk6KGQ9dGhpcy1mLGU9InNlY29uZCI9PT1iP2QvMWUzOiJtaW51dGUiPT09Yj9kLzZlNDoi
aG91ciI9PT1iP2QvMzZlNToiZGF5Ij09PWI/KGQtZykvODY0ZTU6IndlZWsiPT09Yj8oZC1nKS82
MDQ4ZTU6ZCksYz9lOmsoZSl9LGZyb206ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaWIuZHVyYXRpb24o
dGhpcy5kaWZmKGEpKS5sYW5nKHRoaXMubGFuZygpLl9hYmJyKS5odW1hbml6ZSghYil9LGZyb21O
b3c6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZnJvbShpYigpLGEpfSxjYWxlbmRhcjpmdW5jdGlv
bigpe3ZhciBhPUIoaWIoKSx0aGlzKS5zdGFydE9mKCJkYXkiKSxiPXRoaXMuZGlmZihhLCJkYXlz
IiwhMCksYz0tNj5iPyJzYW1lRWxzZSI6LTE+Yj8ibGFzdFdlZWsiOjA+Yj8ibGFzdERheSI6MT5i
PyJzYW1lRGF5IjoyPmI/Im5leHREYXkiOjc+Yj8ibmV4dFdlZWsiOiJzYW1lRWxzZSI7cmV0dXJu
IHRoaXMuZm9ybWF0KHRoaXMubGFuZygpLmNhbGVuZGFyKGMsdGhpcykpfSxpc0xlYXBZZWFyOmZ1
bmN0aW9uKCl7cmV0dXJuIHgodGhpcy55ZWFyKCkpfSxpc0RTVDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnpvbmUoKTx0aGlzLmNsb25lKCkubW9udGgoMCkuem9uZSgpfHx0aGlzLnpvbmUoKTx0aGlz
LmNsb25lKCkubW9udGgoNSkuem9uZSgpfSxkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5faXNV
VEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBudWxsIT1hPyhh
PVgoYSx0aGlzLmxhbmcoKSksdGhpcy5hZGQoe2Q6YS1ifSkpOmJ9LG1vbnRoOmViKCJNb250aCIs
ITApLHN0YXJ0T2Y6ZnVuY3Rpb24oYSl7c3dpdGNoKGE9cShhKSl7Y2FzZSJ5ZWFyIjp0aGlzLm1v
bnRoKDApO2Nhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpO2Nhc2Uid2VlayI6
Y2FzZSJpc29XZWVrIjpjYXNlImRheSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMubWlu
dXRlcygwKTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlzLm1p
bGxpc2Vjb25kcygwKX1yZXR1cm4id2VlayI9PT1hP3RoaXMud2Vla2RheSgwKToiaXNvV2VlayI9
PT1hJiZ0aGlzLmlzb1dlZWtkYXkoMSksInF1YXJ0ZXIiPT09YSYmdGhpcy5tb250aCgzKk1hdGgu
Zmxvb3IodGhpcy5tb250aCgpLzMpKSx0aGlzfSxlbmRPZjpmdW5jdGlvbihhKXtyZXR1cm4gYT1x
KGEpLHRoaXMuc3RhcnRPZihhKS5hZGQoImlzb1dlZWsiPT09YT8id2VlayI6YSwxKS5zdWJ0cmFj
dCgibXMiLDEpfSxpc0FmdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIhPXR5
cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik+K2liKGEpLnN0
YXJ0T2YoYil9LGlzQmVmb3JlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIhPXR5
cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik8K2liKGEpLnN0
YXJ0T2YoYil9LGlzU2FtZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPWJ8fCJtcyIsK3RoaXMuY2xv
bmUoKS5zdGFydE9mKGIpPT09K0IoYSx0aGlzKS5zdGFydE9mKGIpfSxtaW46ZnVuY3Rpb24oYSl7
cmV0dXJuIGE9aWIuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXM+YT90aGlzOmF9LG1heDpmdW5j
dGlvbihhKXtyZXR1cm4gYT1pYi5hcHBseShudWxsLGFyZ3VtZW50cyksYT50aGlzP3RoaXM6YX0s
em9uZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX29mZnNldHx8MDtyZXR1cm4gbnVsbD09YT90
aGlzLl9pc1VUQz9jOnRoaXMuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKTooInN0cmluZyI9PXR5cGVv
ZiBhJiYoYT1LKGEpKSxNYXRoLmFicyhhKTwxNiYmKGE9NjAqYSksdGhpcy5fb2Zmc2V0PWEsdGhp
cy5faXNVVEM9ITAsYyE9PWEmJighYnx8dGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz9tKHRoaXMsaWIu
ZHVyYXRpb24oYy1hLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2No
YW5nZUluUHJvZ3Jlc3M9ITAsaWIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMuX2NoYW5nZUlu
UHJvZ3Jlc3M9bnVsbCkpLHRoaXMpfSx6b25lQWJicjpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9p
c1VUQz8iVVRDIjoiIn0sem9uZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/IkNv
b3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0scGFyc2Vab25lOmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3R6bT90aGlzLnpvbmUodGhpcy5fdHptKToic3RyaW5nIj09dHlwZW9mIHRoaXMuX2km
JnRoaXMuem9uZSh0aGlzLl9pKSx0aGlzfSxoYXNBbGlnbmVkSG91ck9mZnNldDpmdW5jdGlvbihh
KXtyZXR1cm4gYT1hP2liKGEpLnpvbmUoKTowLCh0aGlzLnpvbmUoKS1hKSU2MD09PTB9LGRheXNJ
bk1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sZGF5
T2ZZZWFyOmZ1bmN0aW9uKGEpe3ZhciBiPW5iKChpYih0aGlzKS5zdGFydE9mKCJkYXkiKS1pYih0
aGlzKS5zdGFydE9mKCJ5ZWFyIikpLzg2NGU1KSsxO3JldHVybiBudWxsPT1hP2I6dGhpcy5hZGQo
ImQiLGEtYil9LHF1YXJ0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/TWF0aC5jZWlsKCh0
aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKihhLTEpK3RoaXMubW9udGgoKSUzKX0sd2Vl
a1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLHRoaXMubGFuZygpLl93ZWVrLmRvdyx0aGlz
LmxhbmcoKS5fd2Vlay5kb3kpLnllYXI7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgieSIsYS1i
KX0saXNvV2Vla1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkueWVhcjtyZXR1cm4g
bnVsbD09YT9iOnRoaXMuYWRkKCJ5IixhLWIpfSx3ZWVrOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMu
bGFuZygpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgiZCIsNyooYS1iKSl9
LGlzb1dlZWs6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVsbD09
YT9iOnRoaXMuYWRkKCJkIiw3KihhLWIpKX0sd2Vla2RheTpmdW5jdGlvbihhKXt2YXIgYj0odGhp
cy5kYXkoKSs3LXRoaXMubGFuZygpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09YT9iOnRoaXMu
YWRkKCJkIixhLWIpfSxpc29XZWVrZGF5OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3RoaXMu
ZGF5KCl8fDc6dGhpcy5kYXkodGhpcy5kYXkoKSU3P2E6YS03KX0saXNvV2Vla3NJblllYXI6ZnVu
Y3Rpb24oKXtyZXR1cm4gdih0aGlzLnllYXIoKSwxLDQpfSx3ZWVrc0luWWVhcjpmdW5jdGlvbigp
e3ZhciBhPXRoaXMuX2xhbmcuX3dlZWs7cmV0dXJuIHYodGhpcy55ZWFyKCksYS5kb3csYS5kb3kp
fSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlzW2FdKCl9LHNldDpmdW5jdGlvbihh
LGIpe3JldHVybiBhPXEoYSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbYV0mJnRoaXNbYV0oYiks
dGhpc30sbGFuZzpmdW5jdGlvbihiKXtyZXR1cm4gYj09PWE/dGhpcy5fbGFuZzoodGhpcy5fbGFu
Zz1FKGIpLHRoaXMpfX0pLGliLmZuLm1pbGxpc2Vjb25kPWliLmZuLm1pbGxpc2Vjb25kcz1lYigi
TWlsbGlzZWNvbmRzIiwhMSksaWIuZm4uc2Vjb25kPWliLmZuLnNlY29uZHM9ZWIoIlNlY29uZHMi
LCExKSxpYi5mbi5taW51dGU9aWIuZm4ubWludXRlcz1lYigiTWludXRlcyIsITEpLGliLmZuLmhv
dXI9aWIuZm4uaG91cnM9ZWIoIkhvdXJzIiwhMCksaWIuZm4uZGF0ZT1lYigiRGF0ZSIsITApLGli
LmZuLmRhdGVzPWMoImRhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGluc3Rl
YWQuIixlYigiRGF0ZSIsITApKSxpYi5mbi55ZWFyPWViKCJGdWxsWWVhciIsITApLGliLmZuLnll
YXJzPWMoInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQuIixl
YigiRnVsbFllYXIiLCEwKSksaWIuZm4uZGF5cz1pYi5mbi5kYXksaWIuZm4ubW9udGhzPWliLmZu
Lm1vbnRoLGliLmZuLndlZWtzPWliLmZuLndlZWssaWIuZm4uaXNvV2Vla3M9aWIuZm4uaXNvV2Vl
ayxpYi5mbi5xdWFydGVycz1pYi5mbi5xdWFydGVyLGliLmZuLnRvSlNPTj1pYi5mbi50b0lTT1N0
cmluZyxpKGliLmR1cmF0aW9uLmZuPWgucHJvdG90eXBlLHtfYnViYmxlOmZ1bmN0aW9uKCl7dmFy
IGEsYixjLGQsZT10aGlzLl9taWxsaXNlY29uZHMsZj10aGlzLl9kYXlzLGc9dGhpcy5fbW9udGhz
LGg9dGhpcy5fZGF0YTtoLm1pbGxpc2Vjb25kcz1lJTFlMyxhPWsoZS8xZTMpLGguc2Vjb25kcz1h
JTYwLGI9ayhhLzYwKSxoLm1pbnV0ZXM9YiU2MCxjPWsoYi82MCksaC5ob3Vycz1jJTI0LGYrPWso
Yy8yNCksaC5kYXlzPWYlMzAsZys9ayhmLzMwKSxoLm1vbnRocz1nJTEyLGQ9ayhnLzEyKSxoLnll
YXJzPWR9LHdlZWtzOmZ1bmN0aW9uKCl7cmV0dXJuIGsodGhpcy5kYXlzKCkvNyl9LHZhbHVlT2Y6
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhp
cy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KnQodGhpcy5fbW9udGhzLzEyKX0saHVtYW5pemU6
ZnVuY3Rpb24oYSl7dmFyIGI9K3RoaXMsYz1aKGIsIWEsdGhpcy5sYW5nKCkpO3JldHVybiBhJiYo
Yz10aGlzLmxhbmcoKS5wYXN0RnV0dXJlKGIsYykpLHRoaXMubGFuZygpLnBvc3Rmb3JtYXQoYyl9
LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPWliLmR1cmF0aW9uKGEsYik7cmV0dXJuIHRoaXMuX21p
bGxpc2Vjb25kcys9Yy5fbWlsbGlzZWNvbmRzLHRoaXMuX2RheXMrPWMuX2RheXMsdGhpcy5fbW9u
dGhzKz1jLl9tb250aHMsdGhpcy5fYnViYmxlKCksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oYSxi
KXt2YXIgYz1pYi5kdXJhdGlvbihhLGIpO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHMtPWMuX21p
bGxpc2Vjb25kcyx0aGlzLl9kYXlzLT1jLl9kYXlzLHRoaXMuX21vbnRocy09Yy5fbW9udGhzLHRo
aXMuX2J1YmJsZSgpLHRoaXN9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT1xKGEpLHRoaXNbYS50
b0xvd2VyQ2FzZSgpKyJzIl0oKX0sYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlzWyJh
cyIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpKyJzIl0oKX0sbGFuZzppYi5m
bi5sYW5nLHRvSXNvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5hYnModGhpcy55ZWFycygp
KSxiPU1hdGguYWJzKHRoaXMubW9udGhzKCkpLGM9TWF0aC5hYnModGhpcy5kYXlzKCkpLGQ9TWF0
aC5hYnModGhpcy5ob3VycygpKSxlPU1hdGguYWJzKHRoaXMubWludXRlcygpKSxmPU1hdGguYWJz
KHRoaXMuc2Vjb25kcygpK3RoaXMubWlsbGlzZWNvbmRzKCkvMWUzKTtyZXR1cm4gdGhpcy5hc1Nl
Y29uZHMoKT8odGhpcy5hc1NlY29uZHMoKTwwPyItIjoiIikrIlAiKyhhP2ErIlkiOiIiKSsoYj9i
KyJNIjoiIikrKGM/YysiRCI6IiIpKyhkfHxlfHxmPyJUIjoiIikrKGQ/ZCsiSCI6IiIpKyhlP2Ur
Ik0iOiIiKSsoZj9mKyJTIjoiIik6IlAwRCJ9fSk7Zm9yKGtiIGluIFliKVliLmhhc093blByb3Bl
cnR5KGtiKSYmKGdiKGtiLFliW2tiXSksZmIoa2IudG9Mb3dlckNhc2UoKSkpO2diKCJXZWVrcyIs
NjA0OGU1KSxpYi5kdXJhdGlvbi5mbi5hc01vbnRocz1mdW5jdGlvbigpe3JldHVybigrdGhpcy0z
MTUzNmU2KnRoaXMueWVhcnMoKSkvMjU5MmU2KzEyKnRoaXMueWVhcnMoKX0saWIubGFuZygiZW4i
LHtvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09dChhJTEwMC8xMCk/InRoIjox
PT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9fSkseGI/bW9k
dWxlLmV4cG9ydHM9aWI6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD8oZGVm
aW5lKCJtb21lbnQiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYy5jb25maWcmJmMuY29uZmlnKCkm
JmMuY29uZmlnKCkubm9HbG9iYWw9PT0hMCYmKG1iLm1vbWVudD1qYiksaWJ9KSxoYighMCkpOmhi
KCl9KS5jYWxsKHRoaXMpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMK
LXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9CaWdTdXIucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQmlnU3VyLnBuZwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQmlnU3Vy
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0JpZ1N1ckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NSRURJVAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NSRURJVAkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9DUkVESVQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLVRoZSBU
dXggaW1hZ2VzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBkb3dubG9hZGVkIGZyb20gV2lraW1lZGlh
IENvbW1vbnM6Ci0KLWh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpbGU6Q2xhc3NpY19m
bGF0X2xvb2tfM0Quc3ZnCi0KLUxpY2Vuc2U6ICJUaGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGlz
IGZpbGUgYWxsb3dzIGFueW9uZSB0byB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLAotcHJvdmlkZWQg
dGhhdCB5b3UgYWNrbm93bGVkZ2UgbGV3aW5nQGlzYy50YW11LmVkdSBhbmQgVGhlIEdJTVAgaWYg
c29tZW9uZSBhc2tzLiIKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQ2F0YWxpbmEucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvQ2F0YWxpbmEucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9DYXRhbGluYUAyeC5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9DYXRh
bGluYUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL0VsQ2FwaXRhbi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9u
L29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9F
bENhcGl0YW4ucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCww
ICMjCi1hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9FbENhcGl0YW5AMngucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvRWxDYXBpdGFuQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvR1RL
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL0dUSy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0dUS0AyeC5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGlt
YWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9HVEtAMngu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFn
ZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9IaWdoU2llcnJhLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hpZ2hTaWVycmEucG5nCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9IaWdo
U2llcnJhQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hpZ2hTaWVycmFAMngucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMC5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9JT1MxMC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMj
IC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEwQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1h
Z2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEwQDJ4
LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1h
Z2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvSU9TMTBTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTBTaW11bGF0b3IucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9w
bmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1MxMFNpbXVsYXRvckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMFNpbXVsYXRvckAyeC5w
bmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdl
L3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
SW1hZ2VzL0lPUzExLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTFAMngucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvSU9TMTFAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMVNpbXVsYXRvci5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9J
T1MxMVNpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0x
ICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExU2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNh
bm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBl
ID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lP
UzExU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMg
LTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTIucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTIucG5nCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9JT1MxMkAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMkAyeC5wbmcKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEyU2ltdWxhdG9y
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL0lPUzEyU2ltdWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTJTaW11bGF0b3JAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvSU9TMTJTaW11bGF0b3JAMngucG5nCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMy5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1MxMy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEzQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5
OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5n
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEzQDJ4LnBuZwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFn
ZXMvSU9TMTNTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTNTaW11bGF0b3IucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9J
T1MxM1NpbXVsYXRvckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxM1NpbXVsYXRvckAyeC5wbmcKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2Vz
L0lPUzE0LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTRAMngucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1l
LXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFn
ZXMvSU9TMTRAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxNFNpbXVsYXRvci5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGlt
YWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxNFNp
bXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL0lPUzE0U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1h
Z2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0U2lt
dWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAs
MCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvSU9TOS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1M5LnBuZwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOUAy
eC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkg
dHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9JT1M5QDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOVNpbXVsYXRvci5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1M5U2ltdWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOVNpbXVsYXRvckAyeC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9JT1M5U2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlLnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPU0RldmljZS5wbmcJKHJldmlzaW9uIDI2ODczMSkKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
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
WAHTZ8xkYnzc25yGgwHdXtdTHq9l8Z/6I/qbNm+6+4nHnrhj7bq1ZQXQIdbnn39ePHTfQyfeeOuN
NwAbgOUcHeotWbLk+YsvvvieSy+79OnVq1YLVwXQIdeTTz45s9frzQI2FVbMjorGESjDMDNFxc+3
bt366urVqyc5/PqlXToQAAAAABDkbz3IxZBACIRACAQCIRACIRAIhEAIhEAgENtACIRAIBACIRAC
QZnpL1WQM5tkAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NEZXZpY2VAMngucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlQDJ4LnBuZwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9JT1NEZXZpY2VAMngucG5nCShub25leGlzdGVudCkKQEAgLTEsNzUg
KzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAABIAAAASAIBgAAABSDroAAAExKSURBVHgB7NQx
AQAACMAg7R96xvCBEGw1AB8EBAgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAABAQIC
EBAgIAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICBAQgIEBAAAICBAQgIODYLQscSW8g
Ci1/r5aZmXlXmJtEODcJ3mD3KOGrRBRYZhxmaL/M2CUHRGHa/9OU7Hou03T3k/8PBAP/KiR9LOmr
UyfO+eiRE969a48jwpJ+QwwREd6xfYe3bd3miE2W9FrSu5KOfvrpp5s2Qr/glxoDwwvobeHMmQvv
z85O35yenuSvY2Dv7n0szC1+sOrlWyQbxjM2Nlb4BbbN/5nBgAYunLvy/uT0xLrxTNR806ZNHD16
lOPHj7N79262b99eIyJIsETY2DQkcAGUeY4pml7Hs7ERwrjmuPZyGWNHrSGESsECBLIQUHDtO/dp
uHdr44AodS3JyK666eeoWcVNQ5m69PuVukxgkTUF5zny1DnWtSYIRi4sLy6yvLLM/Ow8L1694M3r
N4xGIwD27d7P/NzSuhEtdiP6pSENBvS/NqCBkyfPvP/8+ZObANu2beP69eucOXOmmlDHQhSKhJwm
gkAFCi2AarippEUgiQS71LwUoTAUIUwJSC9IQ4pam+6CZHJJCOHcqTtC7bY6Y1RU83a2VmOi5m2p
1JS+iFC0Khe3M1s4TQtU/0y/YdVLVYKo6xhkMFUDZ9NNKttgVEY8efyE27dvs7y8TPKB7VsMvE0G
NHDj6jv+9vbXAFy9erXG5k3RfzJYGIOoSn/R4AzRKAiRYJQlxoJw6kH6ggiM63irVX/95Hy579n9
pspqgkQW57yuU7Hp67hpxv0izVIb0Ua66TWMnamFouQ58v6ljfUSGiITp7mirG0TbBBUI7p75w53
7t4F4PSx8zx+cf8H9u0aYZs1r7vo+lW769HP3V1xUjzBUrLOyE7EBHpYTACbAu60+3/TjcsMXp51
S81g16Xz4iVA/5Di8+53v9v//J//y1tvv4WjRx2biQYgTAwmWcOpx4alG0+62ROHRQMeumwDFWY7
GuOOmQ07YR4dORs1AFsuNjQNMSczAAliJln0oEkew8lD2TjAIAzFRmESw03LNl221Pz1E1Lze7/3
u375l3/Z3XntE2/6/T/+nR+sftGr6mUX7MU/+fa06y/i43u/73u9+eYb5jjqzEDmlqQdIpI63dzS
Http6bIdsUXpSQHtKI1KkSFnjOQxPbHUaM5pZyPZMpncAWvILhsDKATWDKRh1Kw8I+eaCi3cRlGI
pVLjCCcAZMZlo8YIW4oM92drbf///3+353m+Ex/4WS9eAvSq+szP/fwP/8ZfrPn8z//1P33sIx9j
c0cbI+zO4gmDh9EzbhiLqGS6hGsqFeFmBrq5QwywnULc0c05LhU4aESyezCHa8hwnYVRuSgaJ90c
QDyRLNpcCWRi7FsHisMFyWlHWYCSKDqVxWJHAaQQH/3oh/33//E/AD7zrr3vHa+ilynYi9dee7M/
+IPf/bP1nu8sODPJs1GE0egg20w0N1YAmGTLmQeZnPUglW2AUVpmkhnCkMyQ4wYMTY7nsTthAAaI
jXJgthRPGAEWjbBoWRQbh5VtLog95tRYmGQNJENQbFYyBrjsGbjLsOVXf+3X/NZv/fafbdN/7gt/
Mq+SlxHQi3/2z/7VO9+Oz59tqf/bf/NvzLQ8pQiHGrFle4jDCcmcaTSYzI7MLu5RSfZMUakkIgSX
i7t0EZzdoydAcsAlY2FschKoaJ7NOi5MSxIuDjqLpBvSpiEaVwBIYRHKExaxQSawsNHZIRrF3XkG
Cf/xP/7nP9uJ/PwXP2fbO14lLwF68bk/+cPPwr//d//W8zyS4UwFPPGcGlGnMUM6YEvQqbPwQAKZ
DBXLjGXNgiMSsWfCnI52Fi1nbKAdOzXtXGcNuYDbuVLTZqJROI8YNZywncxKF+JocDZ2ATc14ULh
3HEBIXRs0xMdQYxEdPPud73Lv/7X/xp8+EMf/axXxUuAXmz7ic99/nN/tvD8j//xP9Ez4GJMznHT
DeeMRuhohkk3E+GZSodLwxI6VjR2yD3c0g202VA2umQKLWWxO+6Ae3Szxl88G2EQmpXBUScJNUnR
cli5UmlA8IzQdLkl0VEUUnNYgYLUSS66hEUiLg6WyttvvfVnZ7C++KXPe88+8I5XxEuAXvwCvP7a
a/aud9EhFbDMwyAWHTIJLRthS2GzCww2ddyQba7hXKPZnTWwUiiKpmcMkkdiw0NsseS03MKZaeeE
HOz0RNNRCMHRuCnWgKMydEeHtJlx02ZC4O8/GbYAAXKySBaW0PI87/LpT38afNNXf8qr4CVAL95+
85/+b3j9jTcMotgzHE13FHDDhAsGrrgIpU64cSVZJExiIxYEoAASDtfREEYJQJILB1njqOnYsULC
GZd2yJqWxI1hCUaddkCxyVyjc5ekOIBCiorjjqIbpQjMcJ0aI1Rqktdeew28+cm3/7dXwUuAXnz9
G1+DP7vbVRRwF82FDSksBkzc2Y2mhxxNDRGGYkySLutbzjRqQmJJForCkKIjx1EngafYaJIt5Jyk
TZdhd5LgiZ2JJqlz2HKd7eEYQgJzGNiibLloc5cH27Rjp0iIonOlZc2cLi6LdcIHP/hB8PVvfd0r
4SVAL7705S+A973v/ZKhgGQgYctFDiGNW1o6Ci2wFCvDgWlTGGHFBUSF1FjAEC6KnRnIBHILaYiO
jA3jzjYuZ9Y43Fy5bwUquyy6Ga5jqRxcxDXdIdcY15CKkVQqiy0a6IFZUW5ARSRK3Z/thMFXvvYl
r4SXAL346le/Av6UnTNQdSMKLYGo84C0//+1LZCxFOeI37CsobBN9u694eFBHc3vXx/8fLuCbzoh
HO8YhVsWSXWnwI+sjaQ/bywy+sQT9qZnF3st1rgsoqWkdahQXTFNtGKX5cB08p7hhbKuieTmOuMc
yuczfRFsilMB0EAQkwcifRsMzS0TRbrnuYko7VG+KDfNBcA8Px4AdzWu8Pl85m/290+99ggAvUax
Wf/l96YV2SNJt8aZnJQKLfXJtSaR0qQGQ73nSPAyS43Uc7yOqAXnJj0KLclQvuiZ2aLwkGhl9vHs
gVAKLcLf8E2MmN79uPYUs10U1s9Z6dr29ucEGLO+s7889CVaiWg/UJVrmwhIQdXp5mbnwJn3OeEW
pCfiuzNyr70AepSpyQeUzmZmrPDicYQSMOoyYxbyTLfTN5PPSgHTDq/mmkgkHcQrU2/D35WqVR0C
KNAws2RJ877pKHbWBU9ALiD5oa8nXycAyLN0I6QAYWX5U4yu/V7etd6JNSCqnZ2jFUDySvnyPH8+
D5T6QmegzbMsbff5a48E0Gs+A6FF745060JbxO2iCfE07a0Ixpp5hjcV8f5sxjYfHnXLCwxTC8o6
7r09z+GZGReZthw5aWMaJfk6PBuGtLVnFekclSpMqGLaFFCkhcjtDtI672WzWUUdasBjUq1tvhxw
Eoh1zVpl7UKvAv7EVa89EkCvoQg5jicFGgYSnYLyymRbzBXyO2kIIFplCUeulezbHqeWVq1aiIkz
rTI22+UMS5UGjlHtaqAjEWXNde+eA0tAS8F7ojqK5pzXp15FsTn36DvH1aw9hfETAd54T1sHb16n
ON/swf/vGRy4Aa/Xngeg13A8/lXAcR1niqktoh06fF1Wl7dYjEWp4h3SpoXVDD44EnRsVvh2BXN/
irgbjbkaF+9bS0J4BxycpTedUosNAp7FwEZZP/Ti2PsTIbzcFwg9fZAWv0c01r0ItQd+ag8ArTDc
uWdMOSUwlv+xawckwxZBGEXPfAjYyzZ2MY65TOBcU/jzsswJcXl2mWHIMtn8Quc35xcaA+Wfv/72
Hef3P/8QzDq3gJ6UtMs4H5NskfPmAjrBD5XzLQMhj7oAnZZ+TDnfEkjOo0+wMwZpxvmWNg3KuQA9
qUIq51uCMM4F6E1FZWadr1nBOhegN82M/ODH+ZYaSuNcgN60Zcq2zsdMknIuQG8arCXnY2axsJ50
ATqVMZTzLQuDvOkCdFZIzue0auVRF6Dzgzbng2aE9ai7hD4rBjlfU2BaT7oAnTEsTc63LBTlSfcE
O2tllfM1xdCMJ12AzvybhhnnYyqWkaddgG7mbznf0sAqb7o/oNMM0DrfMpuQR90COj+lTY3zLYtA
nnQL6GyZGXI+ZqAk58kFdIJFOd+ym/WwC9CZspKcj5lMKG+6AJ25mf9Vs5A1nnQBOkmw43xLKMiT
LkCnhZicr0mSPOoCdIbYcr6lSTLrTRegU2tlnK8p7FjjTRegU35KOV80a6wn3SHiaYZgnW8phJw3
F9CZVrLO5xTS5EkXoFMRyvkfTSamzGRiJJgEUTERYVHjURegM7ZVAHBmKAIMDIUwKMIABQGTAIlY
NNRYZEzYAWCGHYaRAXnSBehszDC9FY4pRShMGoCAIgQkBmgZGUCYmGEGYUYDEaABAoppFAMNmKFo
aJiygwhhNy3jVRegMyl2xi83DP+xd0a7jiMhEKX8/7881GqWOgIpT/NquSXvTdrd0HjFCdQoylwi
iX2Sdy7pTJvr3D+/n9WZ6BqAPOVJ9lapYQMXB+BRKHbNofaXSS8YLtjSIlm/thUzjq3mdR+i5U8f
1HkCKZ5Lv7YC+gD0ja6kS//bd8d8xFHlCi010DaYghYyOZf2pE8R0tllxa5hQHXjJmv12+rwH+FV
mqjyni0YYPtOe4FQKjeQUeLxZUZiWZgo6zfcudVyse4BkrRyC7yJtV1S1pUCu/h45/gA9PGn5xO8
b/EBGJjzYc8SR1Ymtxq4Sd/AxqJdOdXBEsA6r0GXtfqLfM+Enwi72nnNa3YCOWQWa9ssgZ3dPNpM
4t1Wbu+5zdJrc6Fob1Xn+fvE5tWUpMtzx/7fxbO2Oz7Mmm+8FEDfULLUefJoJ5PfgYMFHGa9SMJT
ARh4+JrH1q22xkdp9Q/83X3Z22lPHFA9gDClRB8yYh9wrnCM7SUBILShSREELdW2UNmmnJkQ8cGU
NLZuldY/ctPSujlDHPVSLXa6bFd/JdCbAfQNk3ztsnTbnSOqOonJ/Ml5QHIQYvsAZsTULtbzub8J
37ElUdEMbOoIwY+3LcFGeeuzVuZ7mybX+vf/9zYumRWIvkTg4vx/rjIjlzqLqZLYf6tAQAi7YYr/
xhBftwXtrfYSNDEF+qpvvBJA33Ad+NAKLTDOPwU7pYQPsJT/WX36NWvE3qcUIVXVUiqFmXdU3W78
ncoGrcgBSuysi1Rh5nza5D+iNPSzUXUgF/E4+s5CFD3JXkBq5sbPrcwCVFurUQHkp8pZD7C4gN8D
rEBPr1ZkLQT1fVH47QD6EGTAsl3IFYkvXE5bo+zePW3llxxMpXPaIs+acmB2xWGSO5jKtpmdecmn
8iF7x8zj7NQkctMTbrvE+4Aofp5ByyN8KQFzpu0RHZjm9sZm7Jqlt0W7FeNp++5PYgNnbcXkrfsA
9AvHB6Bv8EkusHBosmKvEWkCJTn37BV52H++Xybo9Eflm+TGV1zlUt/kjW/eWtPy5LWBTnPy3Huo
fFS+4m9nPtxgPRVdO/6BLJhbTWhD1dxQghBreCaxaSovgAOEiO2879rhezj1W/HzAegbdB5ezcIn
6W+F0r8JoivYknQSDMPe+GkqCi2gtoYUbaSjqXTAAb/wagAYYbznaMfX3L/nZw2w28OODUCqVnVR
vQUszZKMdmHf2xoFdEcQ632u3jBnZK18tHklvn1wKa7mAJ8G9GoAfQot9H/sncGOI0nOg8XAnhr7
/k+7FveSxEck5jp9SIQWPVXlstNZ/hH8JUqkbNMFIjOpksAQy4VMKw7mZn5nKwvQpLs2P6X86kHC
J3uplrcLbLTVCbMYPhwCUOO16qorr3levDngmfVZJpplzYSIzus2k4ei+7ewy+kh7pI3rQotRHJv
UgFqwK5a/dYDgiwLCEZ/Vip8AeiGu3e1eojPAqIdQCIzN+c5OHlcGr06UfPuCi15RsmGRBv8+YbD
mpRlsy4a8WaerE3p5OkqUGi0AKQipfk1wzoS3arNcRdlkTRjqYl2yrTnoSPxuhFdtoF811OyMWck
umUNrAtXtGHPvkpCXwC6sd6Hg/GsPFZI0ipjcjiVByCu13ki/8dzN7dfv4cv6fZ1QKPkD89IcMqq
feQUKxRakgZayUwX9wDiuEaEiujNdev5I80mo5JHA3ejDCqu8pkAnm6eu+enABYH3EU2N2cY5qyg
G0nJd+OTAHQj7WntjJYHtS0RoJ1jNakCtvzUZQcZERIJeJMcyIhEd8im1K/fZCaavt9lsg9hqHv6
WmN69bkFwpRefAi0+BVW/F0upZMWwNTDV6WUhNCm2Z+bkuHVtvVlDVL9B3qEOvXGBaBvr+Xx8ex5
QGaDG0gENE2c5hCSvSSz0ZrH0+GySm4B4aMIo/QcyE27m7mf+ObIphNFJ6wyqG53w6uM4VO20hQL
kn0NvIE94u9s36Tp9+vSFFCRU8Lp4Z0i5Ujni885mjohVAVok2LdE/FVALph1yHctpmASJ6lhAhm
cB77aw5dSw8AGh7T87NmW6ApSiwPOrLNMGMP9Y0hdlUJS7e1xwEKLXiU3zMGsH53smY3kotc07ND
htWZmEeMJAhg9ekWomctHlA6jp1ECi1Oq7WyTc6v58YFoM8ikGdH7TuzJZNsMJFm0ViRJ1izxVWs
AK6ukDrrmO6IkcHwmuCHKIsWeUNPbecrHbjcU0sh/GQjcqaYH0wAMCWmurlparTzEMKb+9VEPAot
kZ5ri5Z/YDglasDeC8lNV7C6gXa+zo1PAtANWynE4Gc0qMrJZKi9avK5B4PVracJeNQF15C2qvKm
uko6cE+plYIQ6diRCQE6ucfmXg5ELoBAb6r+5nY75PH3asCfNQ7XVBYjoybQAcPd8D1iCi16NBIg
nREIp0uYd/25rUtufBOAbsBhkPW8Mh/EqeuHZE13xuCKSRZUVqObzpMVoxt+Lh/kNS3nHc0iA8Hi
w+nIdVbF0KCkkXPwq9QjiYBbCi2cGa2Z3FmHXiZllE9owzQrN+gkAsH4EcERAbCelKGN0fML+e2U
fjc+CUA3aF9LL4JZhotR2U2M6lBEEuEQqilJZt0AYbo7a+xSVce5/9tyDDfrAk+lED31XvuUWCPN
KiDllkGMWtmP8yFF4UvRv7k/N5dkUHAFcBmLgJBDUrS+ak5qXGSzlta9xnNGPbMwR5obnwSgG3qm
/zaZzK8kCzlPPwMGKu9kU9roDK3zAgtVCbHQM91Rioo85QjllNreQqVaR2LBPFGXbKVlA9D4GyMI
VbfBedyr2cwrQVxRxi1SEo1nI1zVA87KY3m/TtmKF7Pn1/exz+u7pDy+avivAtANyOVkJuKglmhU
AQAkE+EtVjHeKhuL6k7tw7dskiAMPtYpNbD8WOT4+BQpmQ9AqHSd2jC643TJBXneiyzOluJ/IZbp
AD6Ns5SHLUFxuCHhcNgGbgag8ssdzwotIEaoH/P5fI74AGlvF+yzAHSDNF/H47LBcNrxdmmp4GTS
LN8yE2x7j358jSIc9bk49MzZVPdKMyfyDM8Ov5vJz6RCub/mpH774mWMI+PPDZgNPLXFIiXjzDgt
9whnQ2Q3N+bIWUAXb63gmZ767s9LmLppCG0U/De+CUA31nwNMcxXU4JYZCB6bYJI2YBfNDICoa/C
MB7AMgc+5VZ4GsBFRV4rQ4s8paaN+o9hoK+AjufRinc4rFWAkkxHJSZ9b+Joy5JxVYDm9ifatfdn
WeLXN8HvYXBROze+DUBXijEt/ioNk+tg4TRBB2yHMCtsos2IbMNtf2qPlyplAyiKZymeP1iXps1d
h/NES8XMTIAnr081BNoFeELgALJ2X0KVwbzHgup5MgOPqPKbh2IKLcCaDVSpr5FSLvAsAJr3u/FN
ALphL8N91YqXgk6IU9fCIrQMwyBplYMFluW5zND0Jg1mXbY6U7TE4XlgwOGHfmRgmVQ2Nw4JvCI7
WQO97+0T/Bmo1Huye403tCkBbSattYDVKOWVZ+2RhVkbMrki51Xvi8TlxvcB6Oox5kd54bbGYO/V
VJvbrxqOLplzgClPhHvijorAdfMjZEzx1RmNJjwUX2Nits2pwF0RBlBsrEW8lHOzyp2SCP7yDQB1
4pYYsIMXZ/tpSyxcQNI8VQ9jOoCv2dzfj/tb5+/dufFFALpBGeVToOGZhcMYweF4VcLTyaBhlV/q
VjfGYkMpNhZl16bUUg3qBXzaxbDMy0YQtijR4XACoEgZACZV2bZFXk90sY/GTA3AHiubPd4+Q0x9
+0dmFgYq3kfMVdW1hw6celBJLZrNgzc+CEA3LNc+L8Bge1J3yYqkch7VSwLhLrlm3qF6p7Z55THe
80T4ujwfZKEMw+jendGxHfXHEGBex49G6tUWIN3VXyQUb76s5RfLxHX9fc/jUvFKbhttgCzA1IvF
jPH9jS8C0A3OwTqWx/xC+bazk8oKLbJRYjUEQAPpO2Q5cNbTg4gqbJEYBlSuZ8P3BIsUNblGK7pZ
76WIbQmynm75GyBsNT8aOZYqMk7QJZZ7HXXKOOxDRuGLmEmS8b6G+G7VvWfTDTxP2XvjAtAXY3sx
Hs2htgmFhJ7KIEZkKL0vfsRcUMqLBq8fmRKdNReV1N0hRK/ZLzbPfI/GtSq5hwddxDlAoVh7BMSY
oYYw//UqnXJ8zP2QxNAhE3voZY2FdYewMeF99in1dgYZcAAp96qR2nTpHokLQB8NjUfamH7RYXqv
Ha4p4M6CJM+uZwNiZmMFFVPzIJ6VRxbczMLLuO/M3SnCpP7UzBJP6BWk8Fgjlf80avmVSj2b2+Z1
Wk0b4bu+10vBP4sBfavjd/AEQqVf4luVJ/dqVDvI1p5dM0194wLQN8OzmVzOAci08TLEB7/jx5sH
xbaknEp2UpTx1qbM+Wkkzfw0K0ey0banb3OwIBhcEVq0OszKGmU4qU2G5/z8UuCTeblIYIfTAXkh
65F1kGF1uXZyDywfWzJBJq+tGbHCOe+3ikNkRhYYCL1xAeiT4RXqrRxm9V5zyq+eIK7yDRFpypLs
mBevUc5hrzG2R9tbVN1jOsXFlIwjILF1g7lWE9bplK1GtchwexK5VPA/tx0tqReLMIrzKa4pIKXV
+DfJIt9LVmeF7msXs7KEzLCicw0M2G5cAPpmOJCCSTsHrYhXhvE06oPIr+GPBGJ5Xwv6NFUSweu4
t5JWd2tTfkHAcC/dPseRkN+5Dr5qfigJWwFW7vvkm3QFlyHMXiWNf1AAum0SMdRXUzlo3PBUWs2u
p7d/+b1pZD03PgtAlwOamGJtbcAAVHo/D6JN9zIJlfdOsiqPN7QMh3dNJjOQsb2tot/vhZRVtqXs
K4Cb9TDGmKwCEFuL3VtZLeQGkW77pwtXsowC3JPummrAUeod+ABMbr85L+WzfDKf2v3M58mIw40L
QJ+MbapDOPit27uGMF0z1uew8A+Vg8XhNiQt6nc0Yd0BazJ4RZb180N0bw5ySr0yGzvhoNSaMN40
V8Ni5KUlK+wLYOQDCi3Q/nj/XTdwMjMUqDT3lw6h8baGV1KXt3zoyi81Ny4AfTOUlTpqtfbMkVvP
xSHpw1zE9G753oQDOSnBGHrE7Zm5HQWM7Of1lDJkPMmwuE9LTBevUi4G2JjjKbGpao5oqxEvHACK
91b/HfgBDet18tmoJBgN3N4AuXCeDDjLgGkI/3wNjOVCNy4AfTE28ycWRHJ+VkBKs4tXcmUdTPlK
TRqTEcQXeT3+UU71sN+KMuUtAe/JaVkxImPfV/a7QxEBOit4LIaYA3q0+nFYfa9dRnjba5xhjVMy
cd3eLRYYEqXnGiDffcqtjDwcGgLrMNd7M6ALQN8NhUjZnQzzrd5Txa6OUWUUrRkrJrqJV7lKOmm0
rFoeAThnBvMtifKuxrOxYRY8jcJJefSUepDACExyqVzrN0w6U2f2mp1yB3D/bMCztGJKS70vZKbM
9ZRkyFHCUDPkuFtWs+L+d3duXAD6ZKzTMhe7trKZQuVeaIAl4Vc3iJKjDtVzADux2e5kdYdsSoUv
pBFybzdGTrGi7b2jzANFp9b+P1C5cuxmy461eZcGpCozF35Ji3YudNKmvFxNc0l5zuZzdPNTWYsN
yGnDbPN5aW5cAPpquBbImGV9sucY72O2XTDl2+3wnib+wWs80a1ptmnMelYaV7vf+cbFhZzuQjXh
glB0AlA78xv678z0aLY3jpa/0aiGC7d4ob5foZfDLCmLCi0hs7dXHdWgosbTu8dkBxxBuzJMlBvY
b1wA+mxotG8NFmbxK6FM7ZKkeBCdAiLInI52E2wRyCjdnggwVZyKBu3XPod1m2Tm/Zqr1Qh1azk1
qtKKvDzAqtpT7S2SutY3J0P8PUC1UyZryx77bV+iKhvHvZCwyfXyli4711HKYs+NC0AfDA6l1mOl
Q+NZdFPMywSc2qpj2oKZDaHbQJUroRpn6G7LHlA9HJhqS73clHXL24r4VmyUlzSg+ZorCi1wlFyk
CPWE8gtpthYTHnt6f5kCGCIb0gEcXcOVzDqBkUE1KffJtDWl340LQB+MTf4hsafKGi0teSwkAgot
lExaFTmreW1nZvXO9vsJy1Vpdl8GZvnV04YW9U1AsDpxAIDLgXHx/Kl2PF0oq83hJ900ItcoLik9
8d+I7Mlmg+lPgVvAMYUgJWJx1MxP+cR/Ww/AamJoduMC0GdDszPa54AwWIgmScy0lBxB3fPJcKIG
8eSLJ5r2m/6lzNBELKo1oFUktNe5Nvam7Ftnurg7T60xG43bHB7TNECL8x4hLAOPW8R8AKS2vTZG
SWRn6uzHGiGi5fHtldEBstdqZ+wTb1wA+l5kh9fxIhatGZ8NCCiHsMqwlkrUsN6h/82gnQotrMTr
pAwCtHg1QED54VKNyy/nwWmAy5OChuGVygQMQRq3b1MaaeibqWeWuPctj+rtrM0e1+YLMYeERIO2
PoDpWiFUEpYjvBhvXAD6WAQwAIesXlbPuShllkYPEfxbBvU8dK+UDKLVp+3uXvuy2llxssM94coo
zCHMZgmNWSjYZROqfEStW0ZfbVIWK5LNPRSf0xs6eo+ZuW7zRTuQy3xeJcUAhZBiTLfqhQ/2aRHv
bYNdAPpwaM6kVGnOZ19lltutMESsmRw2xC6ePHbtfIdslvN+JatYlWSC1v840ofKpnKPS/aQwcmj
dKIMIEkzaivWZDPUTYAC1Zwkdnipy6UGSJwMu4QUTotVs6ZDp5FY/7Nm84b9mNtjP3ItWS8AfTfc
WxcE+9DeOZ2tsIqdJ2VeR2dmyVWyHBCA23zPMkLKEjRhKZ9Om3HVgVYT3VYtMjQDf6PZZXlh+t8/
cbldSkW5t3gAGLttpA+4Ti0x1GiOAhkx7g/3VK6KAGn5JyF52coGJYD5046IF4BuGz6Cyt+yfSI4
EAMd25G5N38EeMFfkGmou1ShZvxe5YND4Ki4pGQS8DpxbAxISMZJsYBJ6gyCzKW9qle8RrmPFzW0
6xkJolmRU0C4ZzobF4Eq/9Te00L9P1iJ7Pg9cFjc3I60c5UYF4A+G1vraMKpSLTJ3RmNTds+R7dU
7p6E3pPSlEpmfmZ733zruJB0UPZ0m91RPJQ4NV/k2YLFKP1XuQ68jNRteUjkFWS5Fl6pbVW1EM/r
aNxAJcCMz4G0Eq/sfp5URmiv4c8bF4A+GjviiLNa2fxmjZiTCKh4ZIVk5TANYWnOaLY8fBxwyONS
3UPAsK/Z6Uy3ud3cFUgSgMFw57mvgGvJSgJ2+4DaozU7bivYwoNyajSlLB5CxqaW8tbcY88VuRTz
mMExxKi7GfUC0IeDTaZmGJAyBDlDtbN3A0aCnO1yQx5vIVGXdBiZsZQiXR+H/PaseN9OU/KYxf1P
gdc2kb4Pj1QothMJRYFDo6Yh1G1uWo0j26SyX97VZC0qDsvbWz4gzde4Jh699xB6vLcLdgHoyyG8
3SdzMMtK47VmBRYRHnOw6GTlsXEJVR+CGCN4gG5ZwrfhV+ZVfknYagCOvcUUwKhnKlKOms0ZSF3A
58DBK2DTyZTrfcCs9zAjoZkdFPIb8l4uBxIB1pqUp92M5O+R5sYFoI+GR15M0d0ZQ4zc3egzMqdM
LTVoYbdExyxzPAVKbeMBZ83hY6sGz2ubWLZ2eLa2aYQg1rYEAj5FIdU1IxseZ17WsaXAEplPgJVf
jEaafu5r1AACGpOz+EIXoq1nC1j1GKApothPxwWgawotDYGKr7EqL9CTSawpu3rDRac1okzDYIe1
M2MOluv0Itr06KVyx9K1M5JkNDMnnbIc5nFKvVnxgpDolFr5a8sV0pSjsiHIlY6dAMstM/sFUBew
BeAe7uqo3Rax/VB381a9RfXGBaBvhhUQMNlPEbvaHDRWJNPRakP6KfU8h4md7pWN9GYNVOZMIw+e
yWuzXmfzeE8DwmPt6XIIEFUp47VOvcOaZlb+4Mi4ARDkIA187QCgRRfWwC2Dv0dwZiH11Rq3Eddu
Td2NC0CfDgu86aV+4FAOJueeMgWRumr76L49k1GpR0OWtjOCUXfZRHNIyUTwZc7j43gWPVROAKY7
TRDGef+ACi18TPpj0ijEb6/Nyb3YNMmrTGM0gIloRPRowLS8Vj372WVouLcYsXlvD+wC0Jdj3+tf
yjLUKLKLAIa6KP/lqETPc3hWszEDqxMWQ66gxhlzLWFUr8o41Ob4xr0wIwAMEwKoTeZ6XXgksjZg
N7/H/N69VJBOV56Tv9HSyI8EhM+QiWkFR3o2StxbAeMpzkoldtWFoAtAXw1P9rT3VlExopKu1ZsX
qvU1DP3FTB5CgwPN/E1nTraSOVFyrKp7lseSjVB6bcOI8j1e1LxUgEnBjXkv/o3pDObnjAcIq5KT
ctGeFQLVd3W4tXjt4FdUGRlgv64JbsENrTU3LgB9MjR+yOEFM+rwmkXw+OiUOn0EZ9E6qT6M1nvZ
n0ZyC09HJ4DgKpVota8Mz+Rq/YtlhTsRkLW5PBMGuDC+S8wZKd0+VuxsAa8EsAwt/3Js5J4FmV8Q
qfz9qP1finj139YM/OWCLgB9NWKSKgiIKsWE9fOwSRQwGSxbe0PqYVBRD2O7boP3MmofeJ5IxNVL
E1PijLIBY5oBtwGH86ChDFhKHPYmmjGcDaj1vFHCowIM91LVfubwLYBLBkXp1mMMdNXOOJ9r/pDx
pGO41xXxAtB3Q96ZbY8asam0DhfZDmCQOu20M6EZGtwqj94lUA/ejem0td3qDgsL87W7Zf1aqX6f
XyqdrhDYgKKSaeTeO6vqvfHS+3NgyHLRc70FuKjgRQot1kLcNllbMjcftdwkmeKNC0DfjO1toE3U
qtbxhOegg13riTlk3QBztZmTXTHgp9l3WdMq9m0/IjRhEgRyr3KWB3K6IMirUdpjg9n+6hGkSrl/
/HnE53GkAuaUi2aB4mnjMso6+QV6+X5EYtnl3dS972tr7erb7fgLQNeQbGz2nLe9qMWamxdJW4hF
98puDomfYwbWgJPnSA1azB8FdPLfdS6JyZg1FuXNcR3sTRLi4pI0x5pjVmGouapeKHg0m+0XPRJQ
6WA0YUALmY0aaQagyrVyTyq/kv57M6UtXSnGBaAPh2fL9hRVuKSxHA6nOCIhkBQSBQWogivWbHtH
i+ds/KWrNHGpUyU3UYyqfNuzud4/tNWplcZ9vWQseDXnV81fYelRq31k5pKWD43nw99U1PtFdS/P
jkosC0COhVBXAcIHXBce6sYFoO+FzWHK/w7ePAGH7b3mAhxwACy71re04AS4yoArWc8ZWvTD9HG1
s5npab7o3SBqy9UFoNqTR5299AwOolMGCycB4GnBQ7Iu1PJVq43WIyvkOEJXhGIj89kBgA1MRjv2
1bgAdLtg2h2bI9KnrEldI5soawvsntXzLczm1Dobruh+n5ZqtDpfcE+ZubHc8g84FZfgk/3vgEpx
Wj16qFWJYvOaHlxUbaowujM7pHxtDBFZojSrkPHptBnPoinQ6wnqAP2TCi0taxxvXAD6XjBstyUF
gIx1+AgVENXgod7aMTiOVoTzmnjt0PKHHxKbKJxsajxboCCX3oznMjTZSrDOMAotXK02/KrX05IH
eve5xqk11uluVddsX6CSe/DwgVj1/gbg2Hvm2nWf9zijuXEB6JNBHeRRD7qEWymhJL8+HgSi4YvW
XSI1w8T2h20JRcStxmp6e1L44ZFW0X1hmEYpxZdkLfXcYacfABlQkQotdDwqdlxH+DxDnDMQWcDZ
Cx3l4nH679sqKRVsf+2jbyLeLkDab7fhLwDdxYTWjmJQs61/8ngBqoyoJM569njWTehWgWMVtyTW
2Bymj209RmbCbXpJxaSejQxnZIjrMvMSIPN8L6CKLKkOPF2nzcU0gNyW6NZNiMMVndixCi1AZlNq
Mhpa/e0ouemf4eKIzm4huC8AXQD6bJx3ORFC+fGQiHG7uu2smckKLZ4aJpQCIcXNbAAG56/3Kp0m
w6MjiwH+vhOdbbN7WuxSk8kaqzRhPTwImACWTXQbEJHgq5RnCx9rZaaIlj7T2UbygXfQ2+CQv5+7
Aaw0GgdVb1wA+mL81CxvmbwPhOworeQ+SE3k9gnWyKz7UXV8NmVPwhwySTnYrEheSre8r4o3ybFd
zWyXjPWe1ZyirGyr2FhkjNt4v4C0De2bHmIWSQUfPfjcwFLEEB1GZgGQrKTb9nBfsi78XAD6cJjO
0axH1dGyVSUCBwXRarIipfNU5Qot64Zjw6HWZBnzejmg4xGENPYYQiHeKZYAPFRdxh5kGW7MLBAk
9sBj4X6YwT+cpe3eaEG20xtSg79LVpYLAOyl7D+9TH6nRhsU0O3V0R9PgC4A3RJM0TUp7kCzS9vb
+dozOJo5kV/kAaPT2re0oNXl7QKYKeGMMYNuT3D4Ax3WUC8KLZDBf4hOWZdX7U8tDXegbufXMKK7
G8WmV5+8tUsm0RcZPi93Ci0mAKc+i7VmA0p4H4HT2rlxAeiTsbPZ6UXNsh7J83sIH50YjqlwoQ9f
6bK62hiGFxXHQgNKW+ZmWs2mRY9Lc0CROZ/KjFb13h6UVc/rjlrykRIpr2Nvl6fLogCw5gc4xRa7
NHEOcR2wYUtqMi0HCi0VhMTvpzpeGs8J+C0Anyno3fluXAC6fkBHT7u3jcD8dHhe+8nx+9FsK8iF
yfvIkMyvNTwNchPTdbKl2qJaw4q9qBChJ+WeABIPBl6Yyqckq3JvxTbULZfDPEZfjvcEtWf/Ydnh
NncGWZ0tsHweDYgWIPg8zrgB7//ZuAB01fC/4ixOG8n30nLAgBa2aywxIKU6+G0EdoY9YiXV0Hp+
r22ocEiUXBxWTNRaib5FGHOrlITxkw4Irnol9BMGfIIIXTJhak83C1j2KO6FyrYNsLZA9rXZFRnL
oW0P6x6S7MYFoC+GXoN6K3a72+rV5DnkZB2ihS+x5bOHBc+Pcg3Sd2JpMZsMqR5PeSXzb9cZgHz8
ptljTyu/W/FuzyAA6yn3xDwP2rSWjrTLo92AhgSkVuh0Rjn4DbXZG7xzeCV5lL9zq22fVUCIdG9c
APpkRK9ESbOTGRcO3JbItPdhGeDw84MzTie6TKJdzRYxtQVGm8pXmZNr0JNKUjLQKhngY197HnFP
ML9M4K2UPQ1gCGGnwVLtYmj4KdU1e91zi1xfZaoiJpMD3mz2UMBab+vZGxeAvhl2i03VnjRkR6fA
pP0oek+64uED/9Jts+X53ZHKptJM/pJFhFRR3JKfbMlIO5xFf/AvtbWV92geR/P2HSILa9lnK+2D
RLtxNDQzRct9OGDX4lb2m9EJtJtox+R/ACUJ4e9+GYEuAF0SehbVdtM+mz3xOzO9jNCQzZOtoC2i
nEQdaqMLg3cp+1bx8/Zo4FbWYo8OBzhbI34IY8mqTq/ZGfifLRDMcOPz2KbNXnvqE9sjzLWRQ+L3
JElmoFNcF7EvAIm5tqgYBZhdL6ALQN+OpwO2ywSvW/ogPFVrdzxzMaWP91bm08sMs78rA381cKcY
b63qPR0Hw1lRzh0/nTdBZOdQr3LvpkRcdFpezUAIc7+CK2LPvTHKB1Cr3sI0jdKywLe3tSZDk8bu
WapaFe2gWPcaA3R7LVkvAH03Nkv72uJiPW7b1BXlCyDU2qWXl49AMmlEmxll/cOB7D5ljChf9KNV
razqCYdS2i/HOyePJRNqXdVWK99DbMszMOHflHtGze+SU/Sa5qNwUO0hBDH/BESyaMszIUSH7GcH
5BEEz5nR3LgA9M1Q245mUG8UMODxtq1o8EFewYFezyZLQerxWu0sBKQKLbdT15aZrbGY36kMR6MA
zPh4Nts9areWyv41mOgisl3+RI4eywGQfpEAlvLQzoxPK8IMswMfhlK+gQot7mqTGfI4owCeGxeA
PhoeV0rQ8KKWgXVbvozHNoBQGyw25U2Tv2nPiyf3iuXYC/Yw4VIUce1kNEpHrHyVh8j3bkK9gbKG
oYOyaoW6zbqcMX+zPPsAU3fQ1u3KKECutWGQ9yVcJftDo0r2Bbv03bgAdDfDoz2qNcm2sTX1tAQC
awmzu4up6fKKtilD8FWuoIT7NQfkArCAwoocw2r3RPRXT6dpNZR4McDH95r2+lIWglFP6RjuaBUY
ZCrcZmHjwkONkJjIiFB7Nso2/1JivrLKeYlmb1wA+miYrk3pIaU2Ci2Dm1g92YHwXtbEHrXW0Rj/
5aWaACzSfdshyJbKRAd/acsphWreKKUYejU9aGZjA0J6IQAnHba3J1G6dqZ7F9lJ/iU7W8rCqu2q
M2bUabxTG99zfy40XXnmVl8XgL4ecrrCGu1rx/lBZX562eBo5EEvVhPCq+fgBQhSGm2VGxMgaX6p
Xdr51uru2gM4gjxmyrj9ndX2RMNYketxV4En3qwyElpaZQ3Sin7l3gWn06JSxrujReOmHqBdCwGq
yyFg1br+uXEB6JPhTMelbU5Xp4zg+7BBOms6i4i2izkhGJWURUIYOu51PsV80Io+g08QrXMOd2cy
v5ZGtG1qcyvPG4bo/fVus2nuRfjx5Dp9r/ldofU2Ge8upzwxne9Sb1+lZpex7vIz6HTjqwB0/chG
m7XFCEbVu9urBJsGKMjoMZlBi0W3drCrN6c2oU1Zg6HXPABRwDWGY9khXO3sKXN8cK2BiNm/k6yF
zAOVO3NOZdNa9hwrSk8U8NmigZe0NH5EvrPlQNCZUO5/BXLqPe9w4wLQ5wJN16HEyUHi9znQAA1a
KgCJFTXPYf4F4nhdQYZf+3vEauW3bGIDUDwd0OqhQc9KKOxbnf82lDdWr8Izmkg11qMEKu3Wc/0W
7foxK6PbB1rSnm/Q651mbSVbrxGP37gA9LkIT7PPqfaaMsJosWY9UXZrHRAAKaTiQ7LTi0i3h+0P
mpRRS4s+vEnN0hggqvrGvXnj5wBEZTHxmA6wwActyneAbdhawawPowirIqyN0DT3JoeUpqSEhDfr
lqs+26mv5l5IqhzwvXEB6Jvh86zlscerpP4YjK3HOYkWw4ru2RcxU1Nl1Q+FPBqy6RkgKGhtfmb6
ujdcFMsUIIGXknjfpSxUSSpsRgC6dc/0N+CzAixiUkaUNaKmjcmqNQ+QQmH3ABVDj51VGlAnU+Jm
b3wVgO4k9Ez4nN10ZTQKLdg45YpnFY0V/8peFfK6vHmmAUo9JazZZCryeISeS4YG2TKzL1J7fjy2
ZjBxFxU8vBFKd0htjaa4p6jvu0W/tNe3SWYIMTI2/mYI+A2oxfsZo3m1c5oL2LOtQ0FFzY0LQJ+M
3zrkMaSynpb8uhzoscVQ2urRUNnP81PiaFZkP712HjlD2uImM1myH1mzg0Rkp7KutzdP+TEnJFWm
xa+cDhhOkLXTLAQ0AHnEzM8pEWm/W28BcT9exLZcyxIldpa9xrab8tnNOMHOjQtAnwyJjMUOKd1q
Jlrbm+eJ3rxSrpS2auBEWr4BodxjjzU7sweuJs8Y1TUQjeAZ/bwgSxIdYHJbuNKC711mcrid4m02
GVM9nuyvMx6LVnqJUtdtUVI+2K97K36erSPhpIqfEzd34wLQB8NdM5QzjdQHC9lBH0Bhs5rMAGzq
koTaJZlRGbjneuGBAI+fXhPG4nlvs/heCi24lf1sDSyePKmWJFbZJUqo0miFcyKbCQ4pw4Sdyhhb
1URPhHfN2r4/7REks7rZc2Y1Ny4AfXgtj2e8z1d4lxyscDPJCi2IVa+zybQxWYNrKypqcsoOtFLd
km6SmI6T4FN8BvvXQqBkcKrXTfs4/16lHhka/3rZ4FZJ1CM6z/vuS2BhNCfPPeKFtKaE2/Vs1Yee
ZJ0q4E4p9hvdDOgC0FdDfMt0s/i5539U5cnuy8RLte7Y9X21pRvMTKsf7+PtbKYPOF0nK+DWJPaM
y8co4lNtt7iRgWzLPbgXkhg+GaQp68pmAqaabduOXkj40/M+AkQLGKWyARmVuJasz5nKlubGBaBP
ho0TMtlMQKMJXnRZEzOuxY51Fg7jsD2DZKd3oLtJYUpAuvBlDp+M5rCoL9WKtxcfaixxuJ//QVql
pR1HxWaiUioJy9Z9LxAst8J9tfFlBhBXNR4uQLU+K7UObtngfIaByuwQ0145/AWgzwZE7dqj9UsY
2tO7oENa1nJP0nGoFj6Iw5vVzzlgnXFIlB29Fz2re6qV7RXXthh8hEyh7FF+F+JZtMBbXLqtxcoa
V/Qcu81fd8n2hAM0BtTFr5hWBNy3Oo7pNv5Q/sMT2VeMegHo4xlQOlbqUkiUWFWqLK6F7PJqFfp6
NHobjyVTAXW6616ZjBdQaCtVD+WJF2Bc5Wf8lXNvWteq58cUv43vqzyUiwAnBezli7ToG3gLtKSp
+R7BWS2rlleGZ8v1pEmw4oj07yZAF4C+G0J/3lmLlOE91TLBgIBqSpoMQm7fH7doFAuPkNQgEGb1
OahmdmiNuZjgUvjZZYnhylJ+GTMg03sDo18k9cnvN/yVerSA7K0N0wotRNedGXH9Bmhtbb8I8PXs
0dbeNKQhNy4AfTe8Hq+xAeUEMYUcIHLvZA8oQJqK2RxKnZqpkVUoBw4trXtAq/ZjyaZE4qUQvFsS
hqcLtWoPHre3UKEQYLQBhNH87ExQo9oPohmQdnFQaj1ZDWfaRtNmSsK3/9JmPKBb8nc18wWgTwdk
LAe8hu7Uq6tWAEuhwabs2BZ/sm2Cvnh3gujrH88cKWudOyuq8qrV+GVWFlKYEpK1zr/a0SXRVu/d
Y67rWoCTAS9U/2Rb7w6eEaKycbV6+IviHesP9b4wWvjtGGndOcQLQB8PshrNmLbvWz/lAqk9me0p
V0VNrVBuUKMLlkdd+ij3wON4LKXNX0b0Qt9V9q7hfE4O7HjOoFdbA5ouCYhsLEcKLRgtJqzp3sHZ
7BruZ8VcEWVsN8BqnxrWHRvvJSxPeO1BFzfy7F1OeAHoy/E48ZQF6nsoJnwHa5GxrunshAtq4Ynq
YQ51kcnjBjeVvAIha3Mo7QDSiqtfNeR/MQUrsNoZiOhXN4uL9ThAPKt73BqeSNXVckS8046SPQJd
QJYFANZIyR7nxYupyPCrRb0A9OUw7RxzGMgIkDTAilJ2tIk7xmGijS/Xvq15rUQW8zcy14k2KuHi
meT2zoEU799phEWq8s3QAVOr5WPTYSamjRWGhSzFZSPi4sPougUvNLMBWtMhS7lI162nGJBrND8l
z+7cuAD0zdiUS96yEsUgTMqhxjBMboOwEpeqWtYS4tE8hNq8MxNIYvyFMCYrMawkHAjPcE/bq6Nf
e8eqJb5lwTHGkMzCcUyr0Tvj2i7PavIZarmnrmspIksSnQ8o5dWhJMRXuoYzGUy4JPQFoA+HPepO
TA366flZbSSmyYHDbmMBFofYXraR4v1TnJLe5VcRyJrR256V79nntXThMM7XQPNiLcuOsxDQgFHf
owUqanuX+wss8nVntCrzeiE5CVg77095tQtQ+bFEOYOtCB7dnhufB6BLQG9xFCGFd4eoFcLtgYxx
u+pwayZaJziRWj2cn+l2JXptso3Yc0XrGxtVhhfpx5eNBh0kwAF7jeZZmtRmg0VjZW3DcP+u0Jvu
H8ONq0x3Q86rPIucrzUIGfA6c57szXPjAtAnQ6PZVa2g8eiHy1+MB4v+wQfn1fxRY1U6TemuDSbw
TXFA77D+WNFjSSPEnoVOEMm7kNCzPbCjxiTAafjZS1mUUKvuVRmMEL8GiDbXFGDSowYN0jrsK+OC
rvsC9PRo7Ty/mZ0bF4C+G5tDt8+qmLgjygi5G2teCi35Sfs9ALY5nPUa9VhwD/NVKzpAwHs1+YzJ
WMtAFjOynsKmZc59tmezWqumgBDvibWHZ5OtVcm0AR+0YgGigCzT1SGS7Zm+3wkHFuAPqU7puj5j
3d3wF4A+HPKOc0iqozOLlSjGWcGCLoN6GWGbnPXyQEoihnwdQhs3wRXEdEqjzQQz11JLKU7xJp3p
iDZesqsdNnesW6VepWhM8M0Nm22oPYyJwp4d+LTm7Qbt5tHqcY3CY5mWuzEmw3j7xgWgL4bH1ekR
nZxkNbXG4hT/cqoLFkDRYK7VJchsrfxZ7CbyPqLGgfep8kkWGULAYMl0WgQitdmjRmJl8pkZyfhJ
q0hxprDZAgKmALxFku/W89RLFUEi+8WZKWZm5b2kEujWuusdxzDuxgWgbwYbPGsNc/4/sznAI7pR
ilG7NQk1cYuSHg4nZLVcPtFsgeiWu9YzotW9OfjdOq+VOhiSZU2zIcwf5BFE85NdBNgMiEkz3RI8
LcMIbiGQ7a2wKpI9H6QbhMoCpLt6vQ9sRFcu+ZXmjG4JdgHoi8HqmJaGQ+Rut6G3BaP03Lf5luZc
DHCMmhdpqrpX54Rz0kwMw2QI6jdxrdapvW1TNUpZqVLrp/yqcmxfnj7N0wyk+Zs77vY+A4q1GXXo
zMXCFTGvhDQj11g0bSPGHNa/8U2BPg1AdxL69DQ0pZjKDtQHTgLJBFO+am/lgheXmTR8CM8/8DMv
aQZDgKxjp+2/RSD7yRXWfk1wq3teIa4DCJjVD2DX/jtWV0eeRiw+q8Bac1NulXsb4DfBjguiNKrn
mAnurEK6cQHoi5GDv+FAOCBYiZIVqGfxanhwKytxDm4ArLMgP1lJWJvSfq3JvMLn1HDhRps15p4a
ENo6tqe085oRTosS66EHEOsO27TKvglseay3b5FmhZGZrOrstR8RJPkmg9sZlXm/T8h2TevzblwA
+mRgrrWUSptyqHUN3X73aAhoEwfVIKMHGYK6DVbSCatXP5evDwZpeGzAv0CiB0wP9+CUeopqnzJQ
20ZgauAqnZbY4lqu9b280FLdQbkvypRRLZyVAlxR98cahEHGnVFxVZFz3LgA9M3ozaiZCzoauzY3
pMzoVnWRrysSmLTytXAxufDizVMKLfpwR4AOOjDN2q8dXRrV+meJPWHa6LwKLUxWAbSAGSQ4mAbH
tEM5ZqFkL0PnhFIHvpYiasTiwgJtbwSrglOqTBTA9FhTK7FvXAD6YJD37zjEqqrUScVwDI/BAB/S
gp05w0E9M6xVDhgIt0STGdD5gtxFFJsyDqvStu0gWzqYeC3WGikBc3NMWssYiB1GDrgPrj1yXsrj
pYtTwHVmTpdVZJh02MY1+ImITb0lpPgxiQz0xgWgL0ayCi0M11fsYv9lgXwvaVZPQXPQ6ufom7pl
Tsqjep3Ztb4ap+0dsBH1i47gnkpLtqMRCi3XCEN5X6MVW9OpU7KV1bjdEN0lFoOPmnhBC1/ots9o
rki8h5/BRe0EWZkzEtwawSAogtkbF4A+GlC2m7KkDLdM27gYIZ1BBOpCoR1iuzXuWal1TwwjZoeX
eP0ZJbt4JAxZ68ORbBW7S9CaX0iCHRKTzP1XN4hKZEL5nVqa4t64Ed9mUz4tUgotDXGCTCegKd5z
5zXZDcAqn6f2ilEvAH0bf5zOzWEp37LlFB1WSo81GyrQNPF9WtF6K93ZLLGDFUVPOTY4uEEsYNDq
+gaTdlEcY4A/BWytAW27VbedfkDWYzXXAymcqm4Ok9XS85gEb9+TzhbXXjI0qeaHxiNV9jga7z0O
F4A+HO5puyplunsF0RocaFDyKORKiTyTIUjlF6Ten9XkbnXRVICjAp3TFZxGB2KbC1CuqR8WsgdH
W9akeXn0rDXHEO0tgLVcj0EwnwBvLpzPpV7cGdoKLRJ8dwotrYaQRlocHW9cAPpiaFlj3LpHiQZ3
T/oOB7Yp5FFKNfgXxARAGi1mWKX6jzBoP01ekw1pjTNHiG03HwNgrI3n8tNOFwjHk4WVawBCy9pm
MFft6thLD1teEXDlfkRu5S5BMwSqABKg16Xg7tz4i6E7ev7vh57a4c+fP9PDvt3p8omQNBlMG7q3
4ZbGpVdQvHRKonpGrGyWZ/aMzs6s4FGUVj+HVlkrmr1dc8ZcJzcMv1OAJGsCoycyiJqgVv0cIOst
X54FYn1mA4avDwotLiklpuYIXsudwQi9XaeUyjtHkKr6vD3zv/0lS9TcuBnQV8LSRN+1YggQVbwg
f3EoLCMuT4tIZXHI9oGW9LxnGpSYlXmerN5y6mVque4h19O4s7BSjW7J2kxnzghhtWixyFjyg7iU
EUKsdnpRmSI2xSaEqeuzSEsUUHy+/jRetZaDtUWYhfD52PO7JdgFoM9GZBhibiWZSK+nWQCKLaMZ
ritb1x2HlA7hwQRyG4MN4TUDeAU1DqO9i/7MerRWratazrirIyUHUFlxc3bmzKjnhCbApbHD4fx4
vYfp7eRAGxiNpgyQ0E8j70gw42oL++MaPdToYbmtlG0h+jd0240LQJ8MGNq0mGNCj2Cz185AkM4W
s1NA1OCiZCO0hbyUc7sbArvcD9FybDKiEwU+EgdN/HfEihztA0yLaVrev7pRDsk8AYEd53pjtmN4
MJaXCi000ItJSPGtpYx7wH0d4BpW8qyLmO4ZJI/WSapmRyn7bvzF+M/c+EsBzxBlustbcKtvrKcc
kGpOZVwtbJfH9E5cbKQdK50sT6QfatJW+zwWVnYmCCKfmbr+bu1k52jPf//P3lkDyZIdXfjL7Jme
x/SDmB0xM6O9jhhdmWL5nlim2Je7viNmZmbWo33YXZCp2YqMe6JGzNJsZUTFbe6umrhnEs7JPHaC
nd1dhmHgxo0bVH6LnZ0d+r7n2rXrGFbna5g1D6+N9nGyMbwxbwAlygCYUyAC6aZQsBBUiXphO8R8
hr7QsF3LpIDf1Ueb+q1pxmKHCi2AFlvZijFH5XWAqI3Z1OhtRrq049o4aEpqa+Vac94peNIm16id
2uzpBrOGZbVkSKBpCi13cDAQFCW4gfsOJ04c5/z58xy07XYLZf/7v//LtWtXGYeRtHKvzDX62CAU
x2GV/6JdBwl1cScOsAfNEGeqkMdiLuXwciUNdWR0aGGlFTij4mJ5lsGhsqUKLbbYkdWR3MaW9d4e
K5d6fF7gEShgjiWEJm/VfWuKbaNCLkFIk65nlczMQ/IJKyAzV+hitUk5oD73hKQBgyUT8NzcbNjs
H6vVinvd616cO3eOM2fOAHD58mUuXrzIj3/8Y8Zx5MiRIxzdP65evSbMQ5YTkCRR18KRG9NgVqHb
rPJmBU5WinwJ0GifaZi4TmS7b6qtqSLWviDbb3NzxhiNxRYAOgRl+O8B91uv17ivVJGxtjUq9yEW
IKZNow0slrJmpVeStsIYWsjTSs8tHFKZ2yrPpM8WQEj5XsnkKbTCmMDn7NmzPPKRj+TEiRPIZNeu
XeMLX/gCly5dmkAIcgot1TIUipmBpoRQFSzRlZ16roFShU/plVS2BpBh4GmE6RpaukYwmjHX52uh
AXqBnWls0d5qj82wMQ6BLUnoxb4BVXkioHFjwNuEBoVQMwKiIW8gDTGKg2lt+ZDA1NOmgRtytfDa
tEFqfnzbnjkbaxxE5UmMEydPNPB5ypOfwrHjJ8iMamGRxBiT1zPEwNEjR3nCE57AmTNnp/ccn16r
McmVUifIWYWLzAbEEervo8kdrk6R+qEFOlFr85oEPqE59urIKJpBhIBPvhEcWx3jsNgCQIt9ACDG
Uf2dG4BQVSo72JMZcYS8CbZCT6qCBJgZEna2knr7Pn2vQi7a/PkgCxwTUwdFC04eOzblfFarFQ95
6EMZxpGh6+j7gb7r99ctXd9NR9/3dEPP0I888EEPwN25cOHClKDOBnbZCI8WiTXi5UyZS9R8L3Oq
82EU6IpaEJZKQgtnRXZsui9mZXdPm5MgzdTgrZZL3aWfs9iShD4kI5lvNTMiAjAiA4m0UNgUgEHo
OTxTrGBDjGMr8p1DqsN6hWxOZYxQc3ckz0AhDSRpqgJhMdNZ+M4KLYC73e1urHfXdF0H5XXQXhrl
zShpvrva4S53uQs///nPWa0cQ2FO84hKhpEGHpBY8ZDA27RUfYNY4HVe8vja5fS6tpX9ooqBSt6n
rq160UrWciht8YAWe8gDHvJGgGEY2+ZpXBWCAGjAEAUg1dMZ5Mgo/GjJWEyVtFmbwsakFkkwjKZS
TUI4GKg3c1qrUvXdAMDx48fpth1dt2Xb36TbbvePDd1my3bbsZnWLZuuY9tNK0ePHgWYPKOMRMRI
wyQjUYMSFzBrOrTayCpCDdICx1puSWxtg5g3chPt+2COS2YkB7oCvYTFFg/osNjznvO8r331m18l
xnEKLWeyiHXq9hckXjyZUHXKHIsAs5nWyTKlXwot2vPmxZRW83mNYkZhHsasbG2NKNQ8j2ndbG4C
sLdes+lu1mcEEdZ+QyQN4NDc5Mljokr06sjcKDpKkpu1kT6Oqn4oj4W1ANE158yiKAdOZgFSogGL
6gV7UBArMLJakSX57sz8MIstVbDDZA994EPfsA9Cb74dgHz/ACWYDf0Xx9B2Tc0yd0BUukQiB1pY
562EDdpx2sJmRmTiaeAG0crxBYr6rkjD3aYq1gMf9CDWu3sY2UiSkYEVEBCVCMeaGr7rt3znO9+d
qmgxjrNydxpYGPgBDpRL5CqhW302TrpEo83atRCocVC/agotv/6UOU4QT18AaPGADp2d3DkJMFWM
zMDNJcOwhhMgeGmzrtySAJwkAhXNPbBQVU0KLS+N6iOj9YkORSnl5bgGgknZ3pLdu7vrCYCu3nYb
p8+cqTwWAhIQ8y8gy3MyYOIAwQRAXQREYl59gKT4b9MtvE0KLSkuFAVsSN+FOImTicms5+bq/PlU
2j9nQbxxAZ8lB3Qo7eNf+fhbHvWgR7VcUHkQJGgjhpGgEruDpZTlEcbBboYjAAHVVkKYYCp/Gyhf
7GJGS+ohJXsj9RlmDsC169cZ+p5hCIZxYIiecRwYh4Fh7Bm6oR4P4va1H5tMw6w8LQeigI/AiqFM
Fggjz8eYTFBqajGS6D2kCZiQJcnfYLcCn2axBYAOq33+65//9N3ucrd3UyA0ZjCfTzofR0xow6lL
oLXkapuTjnr3KGwLiAot3TT9QbO6WidAA8k41E6DZIyhMZ1v3LzJBDLD7Uc/Hf3QNxDq+56x76bE
9fWbN7hy5QotAMM4qgk+clQ0hog2jUMSi0DhpglYjGYq7f9D7GPAOxfvZ8kBHXozs6edPXX21Zeu
XLoFwN1wWzVvRTNjNAus2MuFSI4pvYzIigfabWXLjChMUWjWNru6LCZUbihDCi3Wvb31VOXa29vj
Tne6M1GvpZH4KixEHKXfXjg/8YSm0v3YQcM5E8MZUX905uixf51Uhs24uWPlfRYAWkDo7ne6+wt/
9uufvZIydwc3HLGA3TRMT9mQxvsRf2eWbFVvRKz9oaXzwusL5qpxVaWYx3jmAEQEu7u7nDp1itX+
yjiCiWcTacTYT7mfYRhw9wot6erXN2Bt1TiBUt3/N9i7gQ/eIcFnAaAFhB7/kMc/7nvf/t6bz3fn
QY83noqBgEaCSnUcbJ5SPYZIjWY0U55YEZe8DMkxoBLjNp98MVWyIqbDzFiv16z2H1uZgzEBzjiO
TERFnUN7fc5mP0v28O+yFStGxgV8ABYAWoDo5JGTr17H+pYL3YX/5N+Ju09A86fMq9T/H9wa5SDw
LLYA0AJCyJ4EvALY7IsiH7qNLWOO/1FANBvvM5/O+h9jbs7a10QGXXQfA772u3bqQAYAAABgkL/1
Pb6CSDwCAhAQICBAQAACAgQEICBAQAACAgS0AQgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAABAQgI
EBCAgAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIIAA8lwn7YL8zIkAAAAASUVO
RK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL0lPU1NpbXVsYXRvci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NTaW11bGF0b3IucG5nCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NT
aW11bGF0b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFz
IGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTWF2ZXJp
Y2tzLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL01hdmVyaWNrcy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01hdmVyaWNrc0AyeC5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9NYXZlcmlja3NAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Nb2phdmUucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90
IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBp
bWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW9qYXZl
LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1h
Z2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvTW9qYXZlQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0
eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vamF2ZUAyeC5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50
YWluTGlvbi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Nb3VudGFpbkxp
b24ucG5nCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWlu
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
7sanCi3bnuRzqUVHcM/VKrFFaZCw2o28ANKWJLlKIldpIHY40UflpSJK71Fjc7m2BcI82gWEWIiQ
ODMinCPjvkamcZIdS4mBKDnGXRbKVHt2vfeiH2YBUUhRXhmzigzpHG7DC2T6ee7c9MT5RwIT/NMA
k/82VdTjEfA+c/Xa5SX52xUNgZUhyPkZ9iID4W0YNPOCS9XE92VF700yz0vJr/TEeGYoNTjApEZL
PCeDFNKNJmm6ej/LYkDAzP8pNCm//z3gr+6S/5X6vK1zhX/9X/qBUBaFMoOF0NkryVcku1Tfc9+r
g2Id2X212HQge133VCNjlLhUJGRzJZFaAHSANE+BhDrgMYypoh/GGMeDHi/Hu0nrYGx4uAhhynwY
jHPC4EHCwMV4P4lpR8Qvx8dGeQj9NJwjIQkdlhcwoyY38lr6a7wIXIdhTOSz7EoS/F+z9v8gz/lv
Ema+nb/dnfB0OhjPFc6mISsdov9SSbHNAeNRikPf06dTnvNC4AEhi6HwaNoeflfY4sV4nyjbn7sQ
Yz6bZurBcJ6oe/3r+lz1P5nrz+f6Vo0YT5T/rR668b//j8BnQhRPH6epK/2eNWVFhChhGo2da8oy
5KxVHQHTUkl19Qec6y9N7V2pyHqSbIYrnMpDuZsJ1XyvM3/fnQnSruLcdzhMb2avnIfVkt9vp+mT
5+3si/bP0JY8V1+Zj8xd1+p1pk7zPJ2eK8l5j4SYhmFUVYfSxujJ1ZnvtZfOnv6CvOX3nCHR7Lnz
+015z5Q+/F1jnqulHfG981qEvcczeHhg+fKmhxNS/2NUyv5emrD/LNXkPw1+9O8CLXw3Jf9D8VQ/
ju7hjijg78lzHFzZ2HooU62H85oHkyftTXW5Mwb6ZPCihzNz/+2U9v8xPbN/lgot7a/EW/2FZata
/vKKlq6/HC/2H0opD9fnSowX/Nn/jR//Awy3Ci1KmHOODAAAAABJRU5ErkJgggpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW91bnRhaW5MaW9u
QDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWluTGlvbkAy
eC5wbmcJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW91bnRhaW5M
aW9uQDJ4LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDM3NyArMCwwIEBACi2JUE5HDQotGgotAAAA
DUlIRFIAAAEgAAABIAgGAAAAFIOugAABnpxJREFUeAHs2GOXnHsCxdGwEdvt2GqE12he27btf322
sW3bdlSzx544XTi/tXa53p4H06vV6pRSSjSfOXSzhQEuYYQbuIP7eYxneIHXeIO3KapQ9A5v8Cov
8gyP8gB3cAMjXMwAW+lmCa38gSNMieYzvXho2NI8tnCQMe7gcV6jwovcx02McDGDbGc9naxgEXNp
ZybTmYo8e89M2pnLIlbQyXq2M8jFjHAT9/EUT3AHYxxkC6to4zf8gdSgZYAapy4OMMH9vESF57mJ
K+hnHctooxZqYxnr6OcKLW7iER5ggv2sZyFH+AUpA5QmqTb6GedBXqfCfVzJbrqYTT03my52cyV3
8CDj9NPBTH7MMVIGKJ2HpjPE9TxB4VVG2UsHLTRDLXSwl1Ee4HqG6GAa36NKygClM6yXER6hwlsM
s4OlpH+0lB0M8wCjbGchv+FnnKSUAUq7uJkXKdzDAKs49dIqBriemxliJUf4PikDlP7aLm7nNSpc
w2bmks6+uWxmmNvZx0p+nzHKADVr67iFV/9pdDbQSjp/tbKBq7iFfhbzC35Kw5YBSrMY51kKLXew
mTbSha+NzYwyzmZa+AZHaYgyQGk791LhZfawgNopLWAPt3CI5fyKH5AyQHXZCM9RuIEuar/UxeWM
sY4qX6LmywClBdzCOxQGmE+qv+bTz63spI1v8HtqqgxQWs29FJ5jE9NI9d80NnEtg8zjO/yKlAGa
1Hp4kAotD9FDatx6GOYAC/gePydlgC5oXTxM4V7WkJqnNVzJARbwHX5BygCd15bzIIX7WEVq3lZx
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
1DvY3N8jf+fbk23sLTY699fCNVe2MVi61vhTxu6Lyf0n9HsnY+dahNaF9K2zUvizgtkzIv0FN/ma
yHBXcveE/wszjU/u2ktqmqtCxvUJc5uC+20h0q4m0r7Gw6Hg4Yh4Veg20DgEFkdQug6OLTKYXL87
6t+efP7XFzbMlWR3IM/EAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvUGxhdGZvcm1SaW5nLnBuZwkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCShub25leGlzdGVudCkKQEAg
LTEsMzMgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAAAoAAAAKMIBgAAAA1bFYMAACRkSURB
VHgB5JUBpFpRGMc/zMPAeGYMAjbP1JJlmCYyAEuRXgELk1S28RJFGSnQklJVpbJSCi1VlVLaUgTB
IIPM0KBNxaqqdvc5iL0720sy2sdPuJ3vnv//+59zIZVK/ZFQKAQ+n4/g9/uPEaItHo9vNScSCYhE
IkR7MBiEQCBA+z8duke4jqwPh8MQi8UgmUzSfD1WPxGar7/jr2Wz2aBcLkOxWIRcLrcT2WyWBnn2
7yB7qFarUK/XoVarQalUItqMRiOoVCrQarUgk8mAwWCcMJnMWxwO5w6Px3ugVCoF6MW50+l87na7
1V6v9xUafIHokAuPx/PC5XKp7Hb7M5PJ9FQsFj/icrksNpvNODs7u3F6egotQqEQsD95DwacvLtS
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
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvUGxhdGZvcm1SaW5nQDJ4LnBuZwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nCShub25leGlzdGVudCkKQEAgLTEs
MTA1ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAUAAAAFGCAYAAAAbyUa3AABOaElEQVR4
AeydBXAcV9LHP7MkR2DZlmNLJkEsW5aZFGawvzCjw3xmLoc5upiChrrIOZlJcWJmZgiZZWZmCi32
v6o31TWn5xnv7Eazq+6qLmlBs7Mz3T91v+733v+pqKioqKiouJdirMVJS5KWYi3NWkZoRAHKr/H7
+e/5WCXE8VVUvCF//vnn/+jZs2eDpmfOnPH9tP5ufez4WC7Ow/Pq5jzPnTsnH/sAVwJQYlBFkpYl
jY6NjY1r0KBBxTZt2iT37du3wZAhQ64fO3bs7ZMmTXpo6tSpj02bNu2puXPnvjh//vw2CxYsaL9w
4cKOpJ2gixYtwu8d8Bq956WZM2c+Re9/HH+bl5d359ChQ2/4/PPPG3Xo0CGlRYsWCXEk9Jkx/NmR
fC6l+NyK4zw9fD+gnvh863mYHzt/bxC1QNa4FwWgAtAMOcDlEsAmMzMz4eWXX07p06dP84kTJz5A
EGu3fPnyt9asWdN/27Zt43fv3r1w3759qw8ePLjx6NGju06ePHnkNAkd8zcC6Z8mPX/+vPE1+tvf
6RBn6FhHSfbQsTfRZ/xIn7WYPnPCunXrBq5cufJtwHPy5MkP9+/fP+uVV15Ja9q0aSU651g+90iO
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
sGJubu7q48aN2xx3SNsTkjkCNw06ed99973omGOOuRHVyXsvuuiiJ9AJ8zxWXH71jjvueBvR1wf3
33//pxgr9yWmhH0NvsUKLSjfCd/jf/ItIrVvsM1XGNrzKXq0P4TQ3sXyUK9jXy9in09h3w8ee+yx
t+yzzz6XIoo7Y6211jq+u7v7YBzLTnl5eZvh2NYDa4PVwcpgRbAMWFJk1y7CW8QRXoOkebrkwSQd
9UmeDbeqwA5VzvlxxVeixRciv9wkkZ+vAluPf/75JzIJeqQmVIbxO0FyVVRYoCh0KFJSJOWqbZBU
h1STtSAHgyEiyOFOxDhaJDBWhDAeTBBJTBFhzBSBzBaZNIMWEcwiEl0tJiJtA+1CB+hUdDi0gzYR
1uLEEVeLCLoBzJFjmC5Mk+Oa7MhsAhjvRHJabGSY5MFgLbgQyem2vnKhNLy9L7RDJNfBkJ4hvgRK
j/SxY7wAY4gwIZFhzAjRGP7iyDFEko4odc9xmUN5CJUaUCVUh7RD9hU1Ci05PgcnHUpamjKiZAbc
vAyRW0hEp8iJITpNxkCUnhfgwBCjJsOSpSHOLDW+LGy8oIVEmib5IRTMI0VESTkOej8F80h+GEb6
c6Kgz0OIwKSzIprQtNziSC55ZOcFmFQyjCFGNS5QPZcAjIITR7xZGpAdkZxeJjsiWSFYac+wpKRJ
2Pm2r7vIoksG6XkBJv8jNVmIIVlPYuSUmjQk48ML0D/0t2/yytuT0FpIQh5egP8CEPvlQws/NPwA
AAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvSW1hZ2VzL1NpZXJyYS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJr
ZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TaWVycmEucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TaWVycmFAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvU2llcnJhQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvU3F1aXJyZWxGaXNoLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL1NxdWlycmVsRmlzaC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMj
IC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1NxdWlycmVsRmlzaEAyeC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9T
cXVpcnJlbEZpc2hAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAt
MSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTMucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzEzLnBuZwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5n
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFn
ZXMvVHZPUzEzQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM0AyeC5wbmcKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM1NpbXVs
YXRvci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11bGF0b3IucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11bGF0
b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzEzU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzE0LnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
Lgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL1R2T1MxNC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxNEAyeC5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9T
MTRAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMj
Ci1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9Udk9TMTRTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3Bs
YXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9w
bmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzE0U2ltdWxh
dG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
aW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvVHZPUzE0U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNw
bGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2Uv
cG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxNFNpbXVs
YXRvckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1dQRS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEUucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEVAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvV1BFQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzYucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90
IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBp
bWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hP
UzYucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1p
bWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9XYXRjaE9TNkAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TNkAyeC5wbmcKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2Vz
L1dhdGNoT1M3LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1M3LnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzdAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvV2F0Y2hPUzdAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNi5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNi5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2QDJ4LnBu
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBl
Lgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2QDJ4LnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPU1NpbXVsYXRv
cjcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPU1NpbXVsYXRvcjcucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxh
dG9yN0AyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yN0AyeC5wbmcKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRv
d3MxMC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzMTAucG5nCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3Zu
Om1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzMTBAMngucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2
bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvV2luZG93czEwQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czcucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czcucG5nCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDYyICsw
LDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAA1EklEQVR4AezSA4xc
ARgA4dq2bZtBbbsNV0Ft23aDVVjbboPatm3jfDdnG0//JF/sTHp/f/90BisjSqE4yqIqyqAEiqIg
8iAHsiAwL/zDL3zFR7zDKzzES7zHG/jCMOl9oEwohaqojaqohsIogHzIjOTkjR/4hs94gIe4jYd4
Ax8ZSDuVR1O0CFEeBaBE3/Ac50JcxHMZSF1lQC10QnvUR0Gosa+4juM4gjvwk4GUqRJ6hmiE7NBS
/3EFe0M8kYFSv+xohyHogALQQ99wDJtwAv9loJStEAbCjAbQc9fgxlZ8kYGSVxGYYUVFGKmncMKN
TzJQ4soPC4ahHIzcC2yAC99loLjLgiGYgBoIT7qHZdgELxkoei0xEx0Qe9IxzMVZyECUH1MwDDkQ
f9I/bMAifDfyQB2xBHWR+KSbmISjRhsoJ6ZhLLIi6UmeWIkF+GuEgWpgPVoj5ZJOYzju6XmgfliD
Ekj5pHcYhR16GygDpmAWMiP1krwxB4vgp4eBcmMVLEi7JBfG4LeWByoGNzoj7ZMOw4wPWhyoHDah
OZRLOo8heKGlgSpiJ+pC+aSb6IunWhioEnajFtSTdAe98UTNA5XDXtSB+pJuoSdeqHGgYtiDplBv
0kX0wgc1DZQbW9AF6k86hEH4rYaB0sMBC7ST5IIN/koPNB3zoL2kGZiv5EB9A8h7CyA7jizf+3ey
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
ECq5MmjGRRSrB5Ieoh1deJTiK3STbvThDor5A0mqwTDeougLHaEJk5Di6kDSV4zkX0JF10IasgXF
64Gkp+lAcx4nVPCuM5heXEZxfyBJ5enH94Ty33raMBspoQ4kvUg7GvAUody7wij6cBYl7IEk/U1n
yhHKvjl0ZzFSOJCkx6hHK74iFElbGMAYbqBwoOx6kRQa8AGJ3D5GkcFZpHCgPPUayaTyMYnUbtLJ
5ARSOFCBeoXaJPMT8dwaMhnPKaRwoCLpScpQj3K8RDx0hjmMYR5XkcKBiq1PqBzxC08SS11lFdMj
diEpHKjkeohvqEBZfuRlorHTrGUus9jEHaRwoKjoQ37nr4gPeYnS6Ax7WRKxnL1EceFAkvQI7/EF
3/MlX/EaL/MURdEVTnOCLWxlPds4wC0khQPFdg/xCi0v8Trv8Cov8wLP8jSP44ByAK5zmYuc4zQn
OcRxznCKOyRM9wCmUa378i+URwAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czdAMngucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czdAMngucG5nCShyZXZpc2lvbiAyNjg3MzEp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3QDJ4LnBuZwkobm9uZXhpc3RlbnQpCkBA
IC0xLDE0NyArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAAAivZJ
REFUeAHs3AOsM20bReHXtm3btm3btm3btm3btm3b1kry/MZ31J52Zq/kio1d3uP39+/ffmyZCi2B
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
xmR0RmNURuH//JHO7nPe5A1e5zVe5WVe4gvqrJQBSr/jP/yLf/IP/sZf+Qt/4o/8nv5FH3rTkx50
5Vd+4ke+5zu+Lr7kcz7jEz7mIz7gfd7jHb6i40oZoJRS+g3B03KshLVGtQAAAABJRU5ErkJgggpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2lu
ZG93czgucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czgucG5n
CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4LnBuZwko
bm9uZXhpc3RlbnQpCkBAIC0xLDExICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQ
CAYAAADnRuK4AAALx0lEQVR4Ae2ddXQbVxpHJ244Wwisk3Jod8vMzMzMy8wbKDMzM3PDaIXtwDa0
dmPH0DBzYpAspt/+qnx/uDr2saUnWSPpu+fcgm1Jo5l7NPNG0hsLQL65Bz2YnkJvpg/RD6iDltF1
tI76aVT0y8/Wyd846Ady25vlvg6W+7byyVx/gh1pf3oxHUrfp/PoMrqDBmFOUO5rmdz3+/JYF8tj
d9SAsssB9Bb6Gi2ltcgctbIMr8kyDdCA7GcBPYoOpzPoLtiXXbKMw2WZCzSgzDmYDqFzqRfZh1eW
fQgdrAG1j93olfRrWovcoZZ+Lc+tmwaUevvQv9Iy5D5l8lz7aEDmFtJ76CrkH6vkuRdqQInbkw6l
a6GslXXRUwNq3c70V7Qa8SjVsm46a0DNezqdBqU1psm60oDEnvQ56kFbUTyyznrme0AX03IoyVJO
L87HgHrQp6gfpih+WZc98iWgw2gxlFRTTA/L9YBuoJuhpIvN9IZcDKiA3k+DUNJNUNZ1Qa4EtCf9
AO2N8gHdM9sD6kcdyBSKg/bL1oD60/nINMp82j/bAhpkq/M7SjkdlC0BDaaVsBtKJR1s94D60wot
2BWlgva3a0D96ELYHWUh7We3gPakRVCyhSK6p10C6tD+53mUQATY6I1gSX0YvnDS54k62CGgB6Ck
LZK1ngjKGMnUbUG8vMKP35Z6cM6cRhw1w4W+4xuw38QGbGJISfJApgO6noagJE2U1gaiqHSGMX5L
EK+v9OO+Sh+une+ORdJnQgMKLUbXwxpJv6mjdAQdSUfUox8D2uxLOqAQvT5TAR3S9jdGle3+KJY2
hDF7ZwgfrQ1gSIUXl//XjRNmuTDQ4UTXsfVgGBKJOJKO4s9H0zHNyN/tN8koIMg2PKS9A+pB51BF
CEeBukAUq90RlOwI4a1VfgxjJHct9uDUEhcOnNyALrLRm7yStBaJmNaAINuyR3sG9BTyFGcoimWu
CGZuD+HLDUE8XuPDLQvdOG6mC4McTvQc39AkEnGEQSTtEJDwVHsFdCENIFeRY5JV7ghK68KMJID7
K324dZEb581pxM+nOPGTcXJMksDuRrRzQAF6YboD6k2rcmWEs94Twbe7whi9KYjXVvrxxzIPzmYk
A4oa+EoiB68j6uJ2OQaR2DsgyLbtnc6AnkMW4f8hEm8E1c4IvGH8iHsrvSgcK8ckI1rY3RiEko0B
Cc+lK6BTqcfWw+DNu19JGEdsGHzEdBcKLTkM3mdcfWwE1JTbF3lgfVWXwQBsG5CHnprqgDrSmcgg
W32RWARzZBj8n3IvLuUw+PhZrtgup+uY5nY3P1iPTqPrY4E15df/8/DvNKAWmEk7pjKgO9tjGMxX
Eqxs/PEw+E4Og08uduEArqjOyQyD+XPGpQElzp2pCi2oJ12GFOEMRvG9K4IFdWGM2hTEYzIMPnam
CwOLnNhnfAOjMB8Ga0DGLKM9UxHQECRIYygae6NvMSP5fF0AD1X58IcyDy6c14ifyTA4FsOItA6D
NSBzhpgG1JeuQwJsYDgnTHfF3qPpMDqjIxwNyJx1tK9JQPcgQVa6I+g+tsEu50s0IHPuSTagXnQN
EmQVA+JJOFvEowGZIw30SiagP1NoQPkdkPDnRAPqRpdoQKIGtIR2SySgy2lUAxI1oCi9PJGARkDQ
gDQgYURbAxpEnRpQnBqQU9poNaB/Iw4NSAMS/t1aQB3pPA2oBTWgedJIiwEdSb0aUAtqQF5ppMWA
hqEFNCANSBjWUkAFdKYG1Ioa0Exa0FxAB9E6DagVNaA6aSU+INxMoQFpQG3g5uYCek0DaqMa0Gvx
AXWmpRpQG9WASqUZK5njHw1IA6qjBzcN6GIKLQ1IA0qAy5oGNFQDSlAN6L6mAb2vASWoBvSZBIRO
dJ4GlKAaUCntKAfQWK4BJagGtJEWWgBOpjs0oATVgLz0FxaAW2hIA9KAkuBsC8DDSA4NSAO63TKY
41kD0oD+ZRlcz0sD0oAetwCUaUBJqgG9brU+eULi343vNqZB5u6xgbIcFXEB3bGIAX1ZK3+XpX5T
h17jG7ApcwF9YgGoQwot4cSVOHWmC0dMc3KKORvI5TiO/17RKAEJ91V6cbhD/iZbnerEuSWu2CTm
GWKUleqL/0dlckufjfTTaNw6DkYAL/VltfLckDEmWkj+8RXFoQEpxgH5oSgGu7C6VF8m4OkaHx6u
9OGR6sz7cJUPj/Pf2+IONMduCi3iwaVe+bvslHNP4oVlPjhDmT2IXocUsrwxgk6j6ndP4v2NDfya
8t/lcRON37LADeuzWvm7LJXreO+x9djozeQwXk8kGqonEh0akIH6Voa+mWqivpmqH+cwUj/OoR8o
M1I/UKYfaTVSP9KqH6o3Uj9Ur1/rMVK/1qNfLDRSv1ioX202Ur/arJMrGKmTK+j0Lkbq9C46wZSR
OsGUTnFnpE5xp5NsGqmTbOo0v0bqNL860biROtG4XurASL3UgV5sxUi92Ipe7slQvdyTXnDOXL3g
nF7y0ly95KVedNdcveiuXvbbXL3sdze6RAMSNaAltFubAxL/rAGJGtCfqZVoQL3oGg0ovwOSBnol
HJB4jwaU9wHdQ61kA+qb6OQLK+InVxhB+f8ZCEoDMmedNJBcQOIQJIAnDHy2NoD/LPHixgVunDWn
EQOKGtCFT9gaSUc0CWtkWuPSgMwZQi3TgHrSZaZzBi1tCMOxLYhP1wXwQKUX18x34+gZLvRnXHuO
k7i4QUXTuDQgc5bRnsYBiXciDQQiwE7GtawxgmnbQ3hlhR//LvfilkVuHDfThX25cjqNiYsrgVcu
DciIO6mVqoA60ploR8JRYJM3EpsYataOEN5Z5cdfv/PionmNOHaWCwdPlrgYVPNxaUAGzKQdUxaQ
eCr1INNIXDv80VhcIzcFY69cwyq8uOJbNw6b5sRPJzQ55oqfoUwDag2PbGsrpQGJz8HmeMKxyc5j
rziTtwTx7Pc+/IGxrOPPmnLLQpniLn6kSPM8oOeola6AetMq5ACzuVt8tsaHP5V5cDZHigOLnLHz
VwWjm9stSli5H1AV7Z22gMQLaQA5BkeKsZOgZfVhfLUhgPsrfbhtkRvnz23EIVOd5iNF+wcUkG1r
pTUg8SnkEY2h3SPFmTtC+HJDEE9+/0NcHpwwy4VBDmfsgifcmBKWwQnUzAb0FLXaK6AedA7ynGgU
qAtGsdodweydHCmu9uPupV78isdcZ5S4cNBkOZgfZXgCNf0BzaE92i0g8RC6GS2i8Co6sYP5ebtC
+GxdIBbXlfPdsVeuwQ4nuo812C2mLqDNsi2tdg1IvJ6GoCRElNYHo6hxReDYGsQLy334Z7kXN3Jk
eMwMFwotJzZgj9FtOIFqHlBItqGVkYDEB5AylFAUWO+N4Lv6MKZvD+GNlX5wpBg7mD9mpgsHTJK4
UjNT/QPUynRAHegHaBc0rq2+3SPFrzcEY9fJeLjSi12BKJLgA9oh4wGJe9IiZAtKkWwzyxYBif3o
QtgdZaFsK8tWAYn9aQXsilIh28iyZUDiYFoJu6FUyraxbB2QOIiWwy4o5bJNrKwISOxP50PJNPMN
dluZC0jsRx1QMoVDtoGVlQGJe2bkPJHyAWSontUBiQX0fhpEulGCsq4LqJUrAYm4Ia1vwCqbZR1b
Ym4FJB5Gi5FqlGJZt1ZOByT2oE9RPxRT/LIue1ArXwIScbGeLzKiXNahJeZXQGJP+lxCXxlSPLLO
elIr3wMScTqdBqU1psm6skQNqImd6a9oNeJRqmXddKaWBtT6bm0oXQtlLR2a2O5KAxJRSO+hq5B/
rJLnXkgtUQNK0j70r7QMuU+ZPNc+1BI1oBTZjV5Jv6a1yB1q5TldGTcbqgaURgfTIXQu9SL78Mqy
DzH/oJcGZGIBPYoOpzPoLtiXXXSGLOtRcW94akA2cQC9hb5GSzO8q6ulpbIst8iyWXFqQDa2Ix1I
L6P30s9kg25I8Zlvj9xnqTzGvfKYA+Nn+tKAst8CWkgPoWfT2+m/6OP0dfoJHUUnUoc4UX72ifzN
43Kb2+U+DpH7LKBWPvl/H8aMT7HOdkMAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4QDJ4LnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4QDJ4LnBuZwkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzOEAyeC5wbmcJKG5vbmV4aXN0ZW50
KQpAQCAtMSwyMiArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAAA
GRNJREFUeAHs1ANuoAEYBuG1bdu2bdv3W9u2rdq27XaafGHtH+8kzxWme3V1dTdfpgZhAsZhLMZg
FEZiBIZhKAZjoOmHvuiNXuiOalSgHKUoQaHJRy5ykIVMZCANqUhBEgot4MOUtwekhmAWZmI6pmEq
pmAyhqKry0U84hCLGEQjEhHIg8NTGpCaioWYj3mYa8bAraUh1IQgGIGIRRelNCDVD8uxDEuxBIsx
CF6vAP/xD3/xB79Rgg5IaUCqJ9ZgNVZhJRaASAXhJ37gO76hEq1MaUBqBtabdViJ5qV+4gs+myg0
kdKA1HJsNhsxHm1LJeMj3pvfsJQGpJZjO7aZweiYVD7emNd+nZEGpGZjF3aaYejcVA5emhcIh/Ls
gNQA7MNe7ME0OCMVg2d4iicogifSgNQS7McBbIGzU+/wCI/xD65MA1IHcMhMhrtS8XhgHsHxaUBq
GI6aI+gJd6cqcQ93TQ4clQakJuIEjmM7vJl6jdu4hUR0aRqQmo6TOIW18EfqK27gJqLRqWlAairO
mFXwZ+oHrplYdGgakBqLc2YdalPqC66YVLRrGpDqjwtmB+pLqVe4ZIrR5jQgdQw17d11dBsH3u7x
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
jAGSq+wd0WKI5NcD7Dp2GyTLAMmxbDlbxk7G8IisYzew61kTZJADJHPZUqsCQyOSZDdaT0M0QDl6
PXsLuwKDI3IH+xO7G6IByoNx7E3WIhycyOPsL1YXRAOUZ8ewa615EPE9xW62mlFgGiCZyq62ZqFc
yXPsVqsREvAAyTR2BbuSzUW5kKfZ7ewOthmiARphk9nl7A3sQkipeoLdxe5kOxAyGiCpZK+zXsti
KHbisHvZPVYrpAgGSF7NllhTUGxkG1tl3Q8p0gGSmWyxDdJ5CDv5uw3OA6wGUiIDJOPZZexSdgk7
EWEhW9jD7CH2IOuElPAAyf+wi9irrEpI0FrZY9ajbCOkDAdIqtmF7AJrIgotRRLsSesJ9iIzogGS
anautZAdh+GSXexf7B/WIEZHNEDyCi0235rHzsZgyfPsKfYfaxNEAyQ5i7E5bDabZWN0KmBkjY3O
c+xZ9gxzUBCiAZKxrJqdyc5gM9nprAKlL8lqWQ17mb1kp1XdEA2QjJip7DR2Ci07mb3SOhrFazdb
b61ja1kda0ToiQZIJrEZbDqbxk60oTqBTWGHYeS1sW1sqw3LFraZNbB61g7RAEnJqWDHs2PZMfZO
6Uh2BKtilTZQE9kEaywbw0axOIswj/WxXpZi3azDStjAtLIWto/tZbtZM2tiO1kSogESEQnS/wcs
f4lX0c+dxAAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvV2luZG93c1hQLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvSW1hZ2VzL1dpbmRvd3NYUC5wbmcJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
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
QvGtnAK6USoOSBrjYm5ljlBsm+NWLmaMmBa5B4pbuTzGNkS/UCfX8BJSWg1I2ocnOZ7oFfqUK6kk
bq1CvKvkbB5ghtD/a4YHOJtKpDR+A0nSqTzEgYT+fT9zA+8jZdSApI25iStYh9DfN8lTPMAQytgB
STqW2zmF0J/3AXfzOZLCgKQ1KOY69kGhSJU8wjPMojCgP2tjLuAKLXYik2vmKcoZQgotA/pHbcH5
XMiuZFINlFFBL1IY0H9qMwotOJ9DSOd+oILn6UcKLQOKSmtzEsWcwiakQ4N8wDN8xBRSGFDM2o1z
Iw5jbVKpKb7j9Yh6JIUBxa9V2I/TOJmD2ZRkbIAf+ZD3+I1FpDCgpGhnjuSYiJ3ZhEQ0SBNfRHxN
E0lcGJAkrcYO7MWB7M0+bMGmrEM0mmSAXiqp4meqaWUeSWFAqd0qbMYmbMl2bM6mbMT6rMuarMZK
mmeGCcYYZoA+2ulhkH4WyZiWAYjbsjhED2oCAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzWFBAMngucG5nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93c1hQQDJ4LnBuZwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzWFBAMngucG5nCShub25l
eGlzdGVudCkKQEAgLTEsMTQ5ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAASAAAAEgCAYA
AAAUg66AAAB2eUlEQVR4AezcA8wcUQBF4dq2bdu2bdu2bdu2bdu2bds6SV5Ut792Zu5JvrzYuYuB
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
qwGy/+HJ4AnkRGJnh9Ad3YKtsLgfIHsEjwWnI7GyFegZ9IYl5ADZFXgYj+AOxHc2HL3RB9NhSTFA
VgAP4UE8gLMQH9lS9Ec/9MVuWNIOkJ2P+3Bv8D9YdNuKQcFALICl3ADZ1bgbdwX/hkWmHRgaDMEU
mANkoatxe3ArTkbmsjUYhRFAWkbHHCA7BzcHN+FaWNqahLEYEyxGBjMHyHLiBlyP63AtLoERzcYk
TMQEjMchmANkESgfrsZVuBJX4HL8C8neTszAdEzDVEzBXsQoc4DsTFyKi3ERLgxOQKK2HvOCuZiD
WViGOM8cIPsPzsO5OBtn4UycgdPxX8S6bViB5ViGpViCRViI7UiyzAGyf+EUnIQTcQKOw7E4Bv/D
f/FvFAzyIS9yIxey4wgO4gD2YS92BTuwDVuxGZuwEeuxDmuxGjthDpCZWfQ6Ci1SRA82mtxezwAA
AABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9JbWFnZXMvWW9zZW1pdGUucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFy
a2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvWW9zZW1pdGUu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1hcHBs
aWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Zb3NlbWl0ZUAyeC5wbmcKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3Qg
ZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFw
cGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9Zb3NlbWl0ZUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CYXNlT2JqZWN0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Jhc2VPYmplY3QuanMJKHJldmlz
aW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Jhc2VPYmplY3QuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0g
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLUJhc2VPYmplY3QgPSBmdW5jdGlvbigpCi17Ci19OwotCi1C
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zID0gZnVuY3Rpb24oc3ViY2xhc3NDb25z
dHJ1Y3RvcikKLXsKLSAgICAvLyBDb3BpZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGUgc3Vi
Y2xhc3MgY29uc3RydWN0b3IuCi0gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gQmFzZU9iamVjdCkg
ewotICAgICAgICB2YXIgdmFsdWUgPSBCYXNlT2JqZWN0W3Byb3BlcnR5XTsKLSAgICAgICAgaWYg
KHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICBpZiAodmFsdWUgPT09IGFyZ3VtZW50cy5jYWxsZWUpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgc3ViY2xhc3NDb25zdHJ1Y3Rvcltwcm9wZXJ0eV0gPSB2YWx1ZTsKLSAgICB9
Ci19OwotCi1CYXNlT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUs
IGxpc3RlbmVyLCB0aGlzT2JqZWN0KQotewotICAgIHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0IHx8
IG51bGw7Ci0KLSAgICBjb25zb2xlLmFzc2VydChldmVudFR5cGUpOwotICAgIGlmICghZXZlbnRU
eXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zb2xlLmFzc2VydChsaXN0ZW5lcik7Ci0g
ICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0aGlzLl9saXN0
ZW5lcnMpCi0gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwotCi0gICAgdmFyIGxpc3RlbmVy
cyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdOwotICAgIGlmICghbGlzdGVuZXJzKQotICAg
ICAgICBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSA9IFtdOwotCi0gICAg
Ly8gUHJldmVudCByZWdpc3RlcmluZyBtdWx0aXBsZSB0aW1lcy4KLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAobGlzdGVuZXJzW2ld
Lmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9PT0gdGhp
c09iamVjdCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsaXN0ZW5lcnMucHVz
aCh7dGhpc09iamVjdDogdGhpc09iamVjdCwgbGlzdGVuZXI6IGxpc3RlbmVyfSk7Ci19OwotCi1C
YXNlT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxpc3Rl
bmVyLCB0aGlzT2JqZWN0KQotewotICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZSB8fCBudWxsOwot
ICAgIGxpc3RlbmVyID0gbGlzdGVuZXIgfHwgbnVsbDsKLSAgICB0aGlzT2JqZWN0ID0gdGhpc09i
amVjdCB8fCBudWxsOwotCi0gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghZXZlbnRUeXBlKSB7Ci0gICAgICAgIGZvciAoZXZlbnRUeXBlIGluIHRo
aXMuX2xpc3RlbmVycykKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLSAgICBpZiAo
IWxpc3RlbmVycykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICh2YXIgaSA9IGxpc3RlbmVy
cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBpZiAobGlzdGVuZXIgJiYgbGlz
dGVuZXJzW2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVj
dCA9PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7Ci0g
ICAgICAgIGVsc2UgaWYgKCFsaXN0ZW5lciAmJiB0aGlzT2JqZWN0ICYmIGxpc3RlbmVyc1tpXS50
aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQotICAgICAgICAgICAgbGlzdGVuZXJzLnNwbGljZShp
LCAxKTsKLSAgICB9Ci0KLSAgICBpZiAoIWxpc3RlbmVycy5sZW5ndGgpCi0gICAgICAgIGRlbGV0
ZSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLQotICAgIGlmICghT2JqZWN0LmtleXModGhp
cy5fbGlzdGVuZXJzKS5sZW5ndGgpCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnM7Ci19
OwotCi1CYXNlT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBk
ZWxldGUgdGhpcy5fbGlzdGVuZXJzOwotfTsKLQotQmFzZU9iamVjdC5oYXNFdmVudExpc3RlbmVy
cyA9IGZ1bmN0aW9uKGV2ZW50VHlwZSkKLXsKLSAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8fCAh
dGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX07Ci0KLUJhc2VPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBCYXNlT2JqZWN0LAotCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjogQmFzZU9iamVjdC5hZGRF
dmVudExpc3RlbmVyLAotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IEJhc2VPYmplY3QucmVtb3Zl
RXZlbnRMaXN0ZW5lciwKLSAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IEJhc2VPYmplY3QucmVtb3Zl
QWxsTGlzdGVuZXJzLAotICAgIGhhc0V2ZW50TGlzdGVuZXJzOiBCYXNlT2JqZWN0Lmhhc0V2ZW50
TGlzdGVuZXJzLAotCi0gICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihldmVu
dFR5cGUsIGV2ZW50RGF0YSkKLSAgICB7Ci0gICAgICAgIHZhciBldmVudCA9IG5ldyBCYXNlT2Jq
ZWN0RXZlbnQodGhpcywgZXZlbnRUeXBlLCBldmVudERhdGEpOwotCi0gICAgICAgIGZ1bmN0aW9u
IGRpc3BhdGNoKG9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFvYmplY3QgfHwg
IW9iamVjdC5fbGlzdGVuZXJzIHx8ICFvYmplY3QuX2xpc3RlbmVyc1tldmVudFR5cGVdIHx8IGV2
ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAvLyBNYWtlIGEgY29weSB3aXRoIHNsaWNlIHNvIG11dGF0aW9ucyBkdXJpbmcgdGhl
IGxvb3AgZG9lc24ndCBhZmZlY3QgdXMuCi0gICAgICAgICAgICB2YXIgbGlzdGVuZXJzRm9yVGhp
c0V2ZW50ID0gb2JqZWN0Ll9saXN0ZW5lcnNbZXZlbnRUeXBlXS5zbGljZSgwKTsKLQotICAgICAg
ICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0ZW5lcnMgYW5kIGNhbGwgdGhlbS4gU3RvcCBp
ZiBzdG9wUHJvcGFnYXRpb24gaXMgY2FsbGVkLgotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsaXN0ZW5lcnNGb3JUaGlzRXZlbnQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICBsaXN0ZW5lcnNGb3JUaGlzRXZlbnRbaV0ubGlzdGVuZXIuY2FsbChsaXN0ZW5lcnNGb3JUaGlz
RXZlbnRbaV0udGhpc09iamVjdCwgZXZlbnQpOwotICAgICAgICAgICAgICAgIGlmIChldmVudC5f
c3RvcHBlZFByb3BhZ2F0aW9uKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIERpc3BhdGNoIHRvIGxpc3RlbmVycyBvZiB0
aGlzIHNwZWNpZmljIG9iamVjdC4KLSAgICAgICAgZGlzcGF0Y2godGhpcyk7Ci0KLSAgICAgICAg
Ly8gQWxsb3cgcHJvcGFnYXRpb24gYWdhaW4gc28gbGlzdGVuZXJzIG9uIHRoZSBjb25zdHJ1Y3Rv
ciBhbHdheXMgaGF2ZSBhIGNyYWNrIGF0IHRoZSBldmVudC4KLSAgICAgICAgZXZlbnQuX3N0b3Bw
ZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIC8vIERpc3BhdGNoIHRvIGxpc3RlbmVy
cyBvbiBhbGwgY29uc3RydWN0b3JzIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sIGluY2x1ZGluZyB0
aGUgaW1tZWRpYXRlIGNvbnN0cnVjdG9yLgotICAgICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlz
LmNvbnN0cnVjdG9yOwotICAgICAgICB3aGlsZSAoY29uc3RydWN0b3IpIHsKLSAgICAgICAgICAg
IGRpc3BhdGNoKGNvbnN0cnVjdG9yKTsKLQotICAgICAgICAgICAgaWYgKCFjb25zdHJ1Y3Rvci5w
cm90b3R5cGUuX19wcm90b19fKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3Byb3RvX18uY29uc3RydWN0
b3I7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZXZlbnQuZGVmYXVsdFByZXZlbnRlZDsK
LSAgICB9Ci19OwotCi1CYXNlT2JqZWN0RXZlbnQgPSBmdW5jdGlvbih0YXJnZXQsIHR5cGUsIGRh
dGEpCi17Ci0gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7Ci0gICAgdGhpcy50eXBlID0gdHlwZTsK
LSAgICB0aGlzLmRhdGEgPSBkYXRhOwotICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNl
OwotICAgIHRoaXMuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotfTsKLQotQmFzZU9iamVj
dEV2ZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQmFzZU9iamVjdEV2ZW50LAot
Ci0gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9z
dG9wcGVkUHJvcGFnYXRpb24gPSB0cnVlOwotICAgIH0sCi0KLSAgICBwcmV2ZW50RGVmYXVsdDog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1ZTsK
LSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMJKHJldmlzaW9u
IDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlLmpzCShub25leGlz
dGVudCkKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWJibGVRdWV1ZSA9
IGZ1bmN0aW9uKHF1ZXVlU2VydmVyLCBpZCwgaW5mbykKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwo
dGhpcyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChxdWV1ZVNlcnZlcik7Ci0gICAgY29uc29sZS5h
c3NlcnQoaWQpOwotCi0gICAgdGhpcy5xdWV1ZVNlcnZlciA9IHF1ZXVlU2VydmVyOwotICAgIHRo
aXMuaWQgPSBpZDsKLSAgICB0aGlzLnNob3J0TmFtZSA9IGluZm8uc2hvcnROYW1lIHx8IGlkOwot
ICAgIHRoaXMudGl0bGUgPSBpbmZvLnRpdGxlIHx8ICJceGEwIjsKLQotICAgIHRoaXMucGxhdGZv
cm0gPSBpbmZvLnBsYXRmb3JtID8gaW5mby5wbGF0Zm9ybS5uYW1lIDogInVua25vd24iOwotfTsK
LQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWJibGVRdWV1ZSk7Ci0KLUJ1
YmJsZVF1ZXVlLkV2ZW50ID0gewotICAgIFVwZGF0ZWQ6ICJ1cGRhdGVkIgotfTsKLQotQnViYmxl
UXVldWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWJibGVRdWV1ZSwKLSAgICBf
X3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IHN0YXR1c1BhZ2VVUkwo
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucXVldWVTZXJ2ZXIucXVldWVTdGF0dXNVUkwo
dGhpcy5pZCk7Ci0gICAgfSwKLQotICAgIGdldCBjaGFydHNQYWdlVVJMKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9jaGFydHNQYWdlVVJMOwotICAgIH0sCi0KLSAgICBnZXQgcGF0Y2hD
b3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcGF0Y2hDb3VudDsKLSAgICB9LAot
Ci0gICAgZ2V0IGxvYWRlZERldGFpbGVkU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9sb2FkZWREZXRhaWxlZFN0YXR1czsKLSAgICB9LAotCi0gICAgZ2V0IHBhdGNoZXMoKQot
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0dXMp
OwotICAgICAgICByZXR1cm4gdGhpcy5fcXVldWU7Ci0gICAgfSwKLQotICAgIGdldCBib3RzKCkK
LSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xvYWRlZERldGFpbGVkU3RhdHVz
KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2JvdHM7Ci0gICAgfSwKLQotICAgIHVwZGF0ZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0dXMgPSBmYWxz
ZTsKLQotICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZVNlcnZlci5qc29uUXVldWVMZW5ndGhV
UkwodGhpcy5pZCksIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIHZhciBuZXdQYXRjaENv
dW50ID0gZGF0YS5xdWV1ZV9sZW5ndGg7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcGF0Y2hDb3Vu
dCA9PSBuZXdQYXRjaENvdW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHRoaXMuX3BhdGNoQ291bnQgPSBuZXdQYXRjaENvdW50OwotICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnViYmxlUXVldWUuRXZlbnQuVXBkYXRlZCwgbnVsbCk7Ci0g
ICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIGxvYWREZXRhaWxlZFN0YXR1czog
ZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZVNl
cnZlci5qc29uUXVldWVTdGF0dXNVUkwodGhpcy5pZCksIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAg
ICAgICAgIHRoaXMuX3F1ZXVlID0gW107Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5k
ID0gZGF0YS5xdWV1ZS5sZW5ndGg7IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgICAgIHZh
ciBwYXRjaCA9IGRhdGEucXVldWVbaV07Ci0gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZVNpbmNl
VGltZSA9IHBhdGNoLmFjdGl2ZV9zaW5jZSA/IERhdGUucGFyc2UocGF0Y2guYWN0aXZlX3NpbmNl
KSA6IDA7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcXVldWUucHVzaCh7Ci0gICAgICAgICAgICAg
ICAgICAgIGF0dGFjaG1lbnRJRDogcGF0Y2guYXR0YWNobWVudF9pZCwKLSAgICAgICAgICAgICAg
ICAgICAgc3RhdHVzUGFnZVVSTDogcGF0Y2guc3RhdHVzX3BhZ2UsCi0gICAgICAgICAgICAgICAg
ICAgIGxhdGVzdE1lc3NhZ2U6IHBhdGNoLmxhdGVzdF9tZXNzYWdlLAotICAgICAgICAgICAgICAg
ICAgICBsYXRlc3RNZXNzYWdlVGltZTogcGF0Y2gubGF0ZXN0X21lc3NhZ2VfdGltZSA/IG5ldyBE
YXRlKHBhdGNoLmxhdGVzdF9tZXNzYWdlX3RpbWUpIDogbnVsbCwKLSAgICAgICAgICAgICAgICAg
ICAgZGV0YWlsZWRSZXN1bHRzVVJMRm9yTGF0ZXN0TWVzc2FnZTogcGF0Y2gubGF0ZXN0X3Jlc3Vs
dHMsCi0gICAgICAgICAgICAgICAgICAgIHJldHJ5Q291bnQ6IHBhdGNoLnJldHJ5X2NvdW50LAot
ICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHBhdGNoLmFjdGl2ZSwKLSAgICAgICAgICAgICAg
ICAgICAgYWN0aXZlU2luY2U6IG5ldyBEYXRlKGFjdGl2ZVNpbmNlVGltZSksCi0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2JvdHMgPSBbXTsK
LSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBkYXRhLmJvdHMubGVuZ3RoOyBpIDwg
ZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgYm90ID0gZGF0YS5ib3RzW2ldOwotICAg
ICAgICAgICAgICAgIHZhciBsYXRlc3RNZXNzYWdlVGltZSA9IGJvdC5sYXRlc3RfbWVzc2FnZV90
aW1lID8gRGF0ZS5wYXJzZShib3QubGF0ZXN0X21lc3NhZ2VfdGltZSkgOiAwOwotCi0gICAgICAg
ICAgICAgICAgdmFyIG9uZURheUluTWlsbGlzZWNvbmRzID0gMjQgKiA2MCAqIDYwICogMTAwMDsK
LSAgICAgICAgICAgICAgICB2YXIgYm90SXNDdXJyZW50bHlBY3RpdmUgPSBEYXRlLm5vdygpIDwg
bGF0ZXN0TWVzc2FnZVRpbWUgKyBvbmVEYXlJbk1pbGxpc2Vjb25kczsKLSAgICAgICAgICAgICAg
ICBpZiAoIWJvdElzQ3VycmVudGx5QWN0aXZlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgICAgIC8vIFNvbWV0aW1lcyAocmFyZWx5KSwgdGhlcmUgYXJlIHN0
YXR1cyBtZXNzYWdlcyB3aXRoIGFuIGVtcHR5IGJvdCBuYW1lIGFkZGVkIHRvIHRoZSBkYXRhYmFz
ZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJvdC5ib3RfaWQubGVuZ3RoKQotICAgICAgICAgICAg
ICAgICAgICBib3QuYm90X2lkID0gIjxlbXB0eSBuYW1lPiI7Ci0KLSAgICAgICAgICAgICAgICB0
aGlzLl9ib3RzLnB1c2goewotICAgICAgICAgICAgICAgICAgICBpZDogYm90LmJvdF9pZCwKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzUGFnZVVSTDogYm90LnN0YXR1c19wYWdlLAotICAgICAg
ICAgICAgICAgICAgICBsYXRlc3RNZXNzYWdlVGltZTogbmV3IERhdGUobGF0ZXN0TWVzc2FnZVRp
bWUpLAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLnN0YXR1c1BhZ2VVUkwucmVwbGFjZSgvaHR0cHM/OlwvXC8vZywg
IiIpID09PSBkYXRhLnN0YXR1c19wYWdlLnJlcGxhY2UoL2h0dHBzPzpcL1wvL2csICIiKSk7Ci0g
ICAgICAgICAgICB0aGlzLl9jaGFydHNQYWdlVVJMID0gZGF0YS5jaGFydHNfcGFnZTsKLQotICAg
ICAgICAgICAgdGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0dXMgPSB0cnVlOwotICAgICAgICAgICAg
Y2FsbGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotfTsKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlLmpzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIuanMJKHJldmlzaW9uIDI2ODczMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlU2VydmVyLmpzCShub25leGlzdGVu
dCkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1YmJsZVF1ZXVlU2VydmVy
ID0gZnVuY3Rpb24oKQotewotICAgIGNvbnN0IHF1ZXVlSW5mbyA9IHt9OwotCi0gICAgQmFzZU9i
amVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5iYXNlVVJMID0gImh0dHBzOi8vd2Via2l0LXF1
ZXVlcy53ZWJraXQub3JnLyI7Ci0gICAgdGhpcy5xdWV1ZXMgPSB7fTsKLQotICAgIGZvciAodmFy
IGlkIGluIHF1ZXVlSW5mbykKLSAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1YmJsZVF1
ZXVlKHRoaXMsIGlkLCBxdWV1ZUluZm9baWRdKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3Ry
dWN0b3JGdW5jdGlvbnMoQnViYmxlUXVldWVTZXJ2ZXIpOwotCi1CdWJibGVRdWV1ZVNlcnZlci5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1YmJsZVF1ZXVlU2VydmVyLAotICAgIF9f
cHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5cGUsCi0KLSAgICBqc29uUXVldWVMZW5ndGhVUkw6
IGZ1bmN0aW9uKHF1ZXVlSUQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJMICsg
InF1ZXVlLWxlbmd0aC1qc29uLyIgKyBlbmNvZGVVUklDb21wb25lbnQocXVldWVJRCk7Ci0gICAg
fSwKLQotICAgIGpzb25RdWV1ZVN0YXR1c1VSTDogZnVuY3Rpb24ocXVldWVJRCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAicXVldWUtc3RhdHVzLWpzb24vIiArIGVuY29k
ZVVSSUNvbXBvbmVudChxdWV1ZUlEKTsKLSAgICB9LAotCi0gICAganNvblByb2Nlc3NpbmdUaW1l
c1VSTDogZnVuY3Rpb24oZnJvbVRpbWUsIHRvVGltZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLmJhc2VVUkwgKyAicHJvY2Vzc2luZy10aW1lcy1qc29uLyIgKyBbZnJvbVRpbWUuZ2V0VVRD
RnVsbFllYXIoKSwgZnJvbVRpbWUuZ2V0VVRDTW9udGgoKSArIDEsIGZyb21UaW1lLmdldFVUQ0Rh
dGUoKSwgZnJvbVRpbWUuZ2V0VVRDSG91cnMoKSwgZnJvbVRpbWUuZ2V0VVRDTWludXRlcygpLCBm
cm9tVGltZS5nZXRVVENTZWNvbmRzKCldLmpvaW4oIi0iKQotICAgICAgICAgICAgKyAiLSIgKyBb
dG9UaW1lLmdldFVUQ0Z1bGxZZWFyKCksIHRvVGltZS5nZXRVVENNb250aCgpICsgMSwgdG9UaW1l
LmdldFVUQ0RhdGUoKSwgdG9UaW1lLmdldFVUQ0hvdXJzKCksIHRvVGltZS5nZXRVVENNaW51dGVz
KCksIHRvVGltZS5nZXRVVENTZWNvbmRzKCldLmpvaW4oIi0iKTsKLSAgICB9LAotCi0gICAgcXVl
dWVTdGF0dXNVUkw6IGZ1bmN0aW9uKHF1ZXVlSUQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5iYXNlVVJMICsgInF1ZXVlLXN0YXR1cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXVlSUQp
OwotICAgIH0sCi0KLSAgICAvLyBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBhdGNo
ZXMgdGhhdCB3ZXJlIHN1Ym1pdHRlZCBpbiB0aGUgdGltZSByYW5nZToKLSAgICAvLyB7Ci0gICAg
Ly8gICAgIHBhdGNoX2lkXzE6IHsKLSAgICAvLyAgICAgICAgIHF1ZXVlX25hbWVfMTogewotICAg
IC8vICAgICAgICAgICAgIGRhdGU6IDxkYXRlL3RpbWUgd2hlbiB0aGUgcGF0Y2ggd2FzIHN1Ym1p
dHRlZCB0byB0aGUgcXVldWU+LAotICAgIC8vICAgICAgICAgICAgIHJldHJ5X2NvdW50OiA8bnVt
YmVyIG9mIHRpbWVzIGEgYm90IGhhZCB0byBiYWlsIG91dCBhbmQgZHJvcCB0aGUgbG9jaywgZm9y
IGFub3RoZXIgYm90IHRvIHN0YXJ0IGZyb20gc2NyYXRjaD4sCi0gICAgLy8gICAgICAgICAgICAg
d2FpdF9kdXJhdGlvbjogPGhvdyBsb25nIGl0IHRvb2sgYmVmb3JlIGEgYm90IGZpcnN0IGxvY2tl
ZCB0aGUgcGF0Y2ggZm9yIHByb2Nlc3Npbmc+LAotICAgIC8vICAgICAgICAgICAgIHByb2Nlc3Nf
ZHVyYXRpb246IDxob3cgbG9uZyBpdCB0b29rIGZyb20gZW5kIG9mIHdhaXQgdG8gZmluaXNoLCBv
bmx5IHZhbGlkIGZvciBmaW5pc2hlZCBwYXRjaGVzLiBJbmNsdWRlcyB3YWl0IHRpbWUgYmV0d2Vl
biByZXRyaWVzPgotICAgIC8vICAgICAgICAgICAgIGZpbmFsX21lc3NhZ2U6IDwocGFzc3xmYWls
fG5vdCBwcm9jZXNzZWR8Y291bGQgbm90IGFwcGx5fGludGVybmFsIGVycm9yfGluIHByb2dyZXNz
KT4KLSAgICAvLyAgICAgICAgIH0sCi0gICAgLy8gICAgICAgICAuLi4KLSAgICAvLyAgICAgfSwK
LSAgICAvLyAgICAgLi4uCi0gICAgLy8gfQotICAgIGxvYWRQcm9jZXNzaW5nVGltZXM6IGZ1bmN0
aW9uKGZyb21UaW1lLCB0b1RpbWUsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgSlNPTi5sb2Fk
KHRoaXMuanNvblByb2Nlc3NpbmdUaW1lc1VSTChmcm9tVGltZSwgdG9UaW1lKSwgZnVuY3Rpb24o
ZGF0YSkgewotICAgICAgICAgICAgZm9yIChwYXRjaCBpbiBkYXRhKSB7Ci0gICAgICAgICAgICAg
ICAgZm9yIChxdWV1ZSBpbiBwYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgcXVldWUuZGF0ZSA9
IG5ldyBEYXRlKHF1ZXVlLmRhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGJh
Y2soZGF0YSwgZnJvbVRpbWUsIHRvVGltZSk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAg
fSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVR
dWV1ZVNlcnZlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAs
MCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3Zu
Om1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlVmlldy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVRdWV1ZVZpZXcuanMJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlVmll
dy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
QnViYmxlUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIFF1ZXVlVmlldy5jYWxs
KHRoaXMpOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlzLnF1
ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRmb3Jt
ICYmIHRoaXMucGxhdGZvcm0gIT0gcXVldWUucGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJvdyAi
QSBidWJibGUgcXVldWUgdmlldyBtYXkgbm90IGNvbnRhaW4gcXVldWVzIGZvciBtdWx0aXBsZSBw
bGF0Zm9ybXMuIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnBsYXRmb3JtID0gcXVl
dWUucGxhdGZvcm07Ci0gICAgICAgIHF1ZXVlLmFkZEV2ZW50TGlzdGVuZXIoQnViYmxlUXVldWUu
RXZlbnQuVXBkYXRlZCwgdGhpcy5fcXVldWVVcGRhdGVkLCB0aGlzKTsKLSAgICB9LmJpbmQodGhp
cykpOwotCi0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoQnViYmxlUXVldWVWaWV3KTsKLQotQnViYmxlUXVldWVWaWV3LnByb3RvdHlw
ZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnViYmxlUXVldWVWaWV3LAotICAgIF9fcHJvdG9fXzog
UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKLQotICAgICAgICB0
aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRR
dWV1ZShxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHF1ZXVlTGFiZWwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgICAgICBxdWV1ZUxhYmVsLmNsYXNzTGlz
dC5hZGQoInF1ZXVlTGFiZWwiKTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwudGV4dENvbnRlbnQg
PSBxdWV1ZS50aXRsZTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwuaHJlZiA9IHF1ZXVlLnN0YXR1
c1BhZ2VVUkw7Ci0gICAgICAgICAgICBxdWV1ZUxhYmVsLnRhcmdldCA9ICJfYmxhbmsiOwotICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHF1ZXVlTGFiZWwpOwotCi0gICAgICAg
ICAgICB2YXIgcGF0Y2hDb3VudCA9IHF1ZXVlLnBhdGNoQ291bnQ7Ci0KLSAgICAgICAgICAgIHZh
ciBtZXNzYWdlID0gcGF0Y2hDb3VudCA9PT0gMSA/ICJwYXRjaCBpbiBxdWV1ZSIgOiAicGF0Y2hl
cyBpbiBxdWV1ZSI7Ci0gICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3
KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBudWxsLCBwYXRjaENvdW50
IHx8ICIwIik7Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVs
ZW1lbnQpOwotCi0gICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1
YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yQnViYmxlUXVldWUuYmluZCh0aGlz
KSwgcXVldWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5j
dGlvbihxdWV1ZSkgewotICAgICAgICAgICAgYXBwZW5kUXVldWUuY2FsbCh0aGlzLCBxdWV1ZSk7
Ci0gICAgICAgIH0sIHRoaXMpOwotICAgIH0sCi0KLSAgICBfYWRkUXVldWVIZWFkaW5nVG9Qb3Bv
dmVyOiBmdW5jdGlvbihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUg
PSAicG9wb3Zlci1xdWV1ZS1oZWFkaW5nIjsKLQotICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyh0
aXRsZSwgInF1ZXVlLW5hbWUiLCBxdWV1ZS5pZCk7Ci0gICAgICAgIHRoaXMuYWRkTGlua1RvUm93
KHRpdGxlLCAicXVldWUtc3RhdHVzLWxpbmsiLCAic3RhdHVzIHBhZ2UiLCBxdWV1ZS5zdGF0dXNQ
YWdlVVJMKTsKLSAgICAgICAgdGhpcy5hZGRMaW5rVG9Sb3codGl0bGUsICJxdWV1ZS1jaGFydHMt
bGluayIsICJjaGFydHMiLCBxdWV1ZS5jaGFydHNQYWdlVVJMKTsKLQotICAgICAgICBjb250ZW50
LmFwcGVuZENoaWxkKHRpdGxlKTsKLSAgICB9LAotCi0gICAgX2FkZEJvdHNIZWFkaW5nVG9Qb3Bv
dmVyOiBmdW5jdGlvbihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUg
PSAicG9wb3Zlci1ib3RzLWhlYWRpbmciOwotICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9ICJs
YXRlc3QgYm90IGV2ZW50IjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRsZSk7Ci0g
ICAgfSwKLQotICAgIF90aW1lSW50ZXJ2YWxTdHJpbmc6IGZ1bmN0aW9uKHRpbWUpCi0gICAgewot
ICAgICAgICB2YXIgdGltZURpZmZlcmVuY2UgPSAoRGF0ZS5ub3coKSAtIHRpbWUuZ2V0VGltZSgp
KSAvIDEwMDA7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVRpbWVTdHJpbmcodGltZURp
ZmZlcmVuY2UpCi0gICAgfSwKLQotICAgIF9wb3BvdmVyQ29udGVudEZvckJ1YmJsZVF1ZXVlOiBm
dW5jdGlvbihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJsZS1z
ZXJ2ZXItcG9wb3ZlciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkUXVldWVIZWFkaW5nVG9Qb3BvdmVy
KHF1ZXVlLCBjb250ZW50KTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250
ZW50KTsKLQotICAgICAgICB2YXIgcGF0Y2hlcyA9IHF1ZXVlLnBhdGNoZXM7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwLCBlbmQgPSBwYXRjaGVzLmxlbmd0aDsgaSA8IGVuZDsgKytpKSB7Ci0gICAg
ICAgICAgICB2YXIgcGF0Y2ggPSBwYXRjaGVzW2ldOwotCi0gICAgICAgICAgICB2YXIgcm93RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgICAgICB0aGlz
LmFkZExpbmtUb1Jvdyhyb3dFbGVtZW50LCAicGF0Y2gtZGV0YWlscy1saW5rIiwgcGF0Y2guYXR0
YWNobWVudElELCBwYXRjaC5zdGF0dXNQYWdlVVJMKTsKLQotICAgICAgICAgICAgaWYgKHBhdGNo
LnJldHJ5Q291bnQpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93RWxlbWVu
dCwgImZhaWx1cmUtY291bnQiLCBwYXRjaC5yZXRyeUNvdW50ICsgIlx4YTAiICsgKHBhdGNoLnJl
dHJ5Q291bnQgPT09IDEgPyAiYXR0ZW1wdCIgOiAiYXR0ZW1wdHMiKSk7Ci0KLSAgICAgICAgICAg
IGlmIChwYXRjaC5kZXRhaWxlZFJlc3VsdHNVUkxGb3JMYXRlc3RNZXNzYWdlKQotICAgICAgICAg
ICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJsYXRlc3Qtc3RhdHVzLXdpdGgt
bGluayIsIHBhdGNoLmxhdGVzdE1lc3NhZ2UsIHBhdGNoLmRldGFpbGVkUmVzdWx0c1VSTEZvckxh
dGVzdE1lc3NhZ2UpOwotICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2gubGF0ZXN0TWVzc2FnZSAm
JiBwYXRjaC5sYXRlc3RNZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFRl
eHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1saW5rIiwgcGF0Y2gubGF0ZXN0
TWVzc2FnZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChwYXRjaC5hY3RpdmUpIHsKLSAgICAgICAg
ICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1s
aW5rIiwgIlN0YXJ0ZWQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dF
bGVtZW50LCAidGltZS1zaW5jZS1tZXNzYWdlIiwgdGhpcy5fdGltZUludGVydmFsU3RyaW5nKHBh
dGNoLmFjdGl2ZVNpbmNlKSArICJceGEwYWdvIik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1u
by1saW5rIiwgIk5vdCBzdGFydGVkIHlldCIpOwotCi0gICAgICAgICAgICBpZiAocGF0Y2gubGF0
ZXN0TWVzc2FnZVRpbWUpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93RWxl
bWVudCwgInRpbWUtc2luY2UtbWVzc2FnZSIsIHRoaXMuX3RpbWVJbnRlcnZhbFN0cmluZyhwYXRj
aC5sYXRlc3RNZXNzYWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0gICAgICAgICAgICB0aGlzLmFk
ZExpbmtUb1Jvdyhyb3dFbGVtZW50LCAiYnVnemlsbGEtbGluayIsICJidWd6aWxsYSIsIGJ1Z3pp
bGxhLmRldGFpbHNVUkxGb3JBdHRhY2htZW50KHBhdGNoLmF0dGFjaG1lbnRJRCkpOwotCi0gICAg
ICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAgICAgICAgdGhpcy5f
YWRkQm90c0hlYWRpbmdUb1BvcG92ZXIocXVldWUsIGNvbnRlbnQpOwotICAgICAgICB0aGlzLl9h
ZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIHZhciBib3RzID0gcXVldWUu
Ym90cy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChhLmlkIDwgYi5pZCkg
PyAtMSA6IDE7IH0pOwotICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYm90cy5sZW5ndGg7
IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIGJvdCA9IGJvdHNbaV07Ci0KLSAgICAg
ICAgICAgIHZhciByb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0K
LSAgICAgICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJib3Qtc3RhdHVzLWxp
bmsiLCBib3QuaWQsIGJvdC5zdGF0dXNQYWdlVVJMKTsKLSAgICAgICAgICAgIHRoaXMuYWRkVGV4
dFRvUm93KHJvd0VsZW1lbnQsICJib3Qtc3RhdHVzLWRlc2NyaXB0aW9uIiwgdGhpcy5fdGltZUlu
dGVydmFsU3RyaW5nKGJvdC5sYXRlc3RNZXNzYWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0gICAg
ICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvckJ1
YmJsZVF1ZXVlOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKLSAgICB7Ci0gICAg
ICAgIGlmIChxdWV1ZS5sb2FkZWREZXRhaWxlZFN0YXR1cykKLSAgICAgICAgICAgIHZhciBjb250
ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JCdWJibGVRdWV1ZShxdWV1ZSk7Ci0gICAgICAg
IGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJsZS1zZXJ2ZXIt
cG9wb3ZlciI7Ci0KLSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNz
TmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9y
LnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKLQotICAgICAgICAgICAgcXVldWUubG9hZERldGFp
bGVkU3RhdHVzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVudCA9
IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yQnViYmxlUXVldWUocXVldWUpOwotICAgICAgICAgICAg
fS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJk
LlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkp
OwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnBy
ZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdl
Lk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5f
WF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVlczog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihx
dWV1ZSkgeyBxdWV1ZS51cGRhdGUoKTsgfSk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVVwZGF0ZWQ6
IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy51cGRhdGVTb29uKCk7Ci0gICAg
fSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVR
dWV1ZVZpZXcuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwkocmV2aXNpb24gMjY4NzMx
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVnemlsbGEuanMJKG5vbmV4aXN0ZW50KQpAQCAt
MSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVnemlsbGEgPSBmdW5jdGlvbigpCi17Ci0gICAg
QmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5iYXNlVVJMID0gImh0dHBzOi8vYnVn
cy53ZWJraXQub3JnLyI7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25z
KEJ1Z3ppbGxhKTsKLQotQnVnemlsbGEucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBC
dWd6aWxsYSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZGV0
YWlsc1VSTEZvckF0dGFjaG1lbnQ6IGZ1bmN0aW9uKGF0dGFjaG1lbnRJRCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYXR0YWNobWVudC5jZ2k/aWQ9IiArIGVuY29kZVVS
SUNvbXBvbmVudChhdHRhY2htZW50SUQpICsgIiZhY3Rpb249ZWRpdCI7Ci0gICAgfSwKLX07CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI1MSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdCA9IGZ1bmN0aW9uKGJhc2VVUkwsIHF1ZXVlc0luZm8s
IG9wdGlvbnMpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5h
c3NlcnQoYmFzZVVSTCk7Ci0gICAgY29uc29sZS5hc3NlcnQocXVldWVzSW5mbyk7Ci0KLSAgICB0
aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwotICAgIHRoaXMucXVldWVzSW5mbyA9IHF1ZXVlc0luZm87
Ci0gICAgdGhpcy5xdWV1ZXMgPSB7fTsKLQotICAgIHRoaXMuX25vcm1hbGl6ZVF1ZXVlc0luZm8o
KTsKLQotICAgIC8vIFdlIHJlZ2FyZCBfbmVlZHNBdXRoZW50aWNhdGlvbiBhcyBhIGhpbnQgd2hl
dGhlciB0aGlzIEJ1aWxkYm90IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHNvIHRoYXQgd2UgY2Fu
IHNob3cKLSAgICAvLyBhbiBhcHByb3ByaWF0ZSBpbml0aWFsIHN0YXR1cyBtZXNzYWdlIChzYXks
IGFuICJ1bmF1dGhvcml6ZWQiIHN0YXR1cyBpZiB0aGUgQnVpbGRib3QgcmVxdWlyZXMgYXV0aGVu
dGljYXRpb24pCi0gICAgLy8gZm9yIGl0cyBhc3NvY2lhdGVkIHF1ZXVlcyBiZWZvcmUgd2UgbWFr
ZSB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdCBmb3IgdGhlIHN0YXR1cyBvZiBlYWNoIHF1ZXVlLgot
ICAgIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gIm9iamVj
dCIgJiYgb3B0aW9ucy5uZWVkc0F1dGhlbnRpY2F0aW9uID09PSB0cnVlOwotICAgIHRoaXMuX2F1
dGhlbnRpY2F0aW9uU3RhdHVzID0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuVW5hdXRo
ZW50aWNhdGVkOwotCi0gICAgdGhpcy5WRVJTSU9OX0xFU1NfVEhBTl8wOSA9IG9wdGlvbnMgJiYg
b3B0aW9ucy5VU0VfQlVJTERCT1RfVkVSU0lPTl9MRVNTX1RIQU5fMDk7Ci0KLSAgICBpZiAoIXRo
aXMuVkVSU0lPTl9MRVNTX1RIQU5fMDkpIHsKLSAgICAgICAgdGhpcy5fYnVpbGRlck5hbWVUb0lE
TWFwID0ge307Ci0gICAgICAgIHRoaXMuX2NvbXB1dGVCdWlsZGVyTmFtZVRvSURNYXAoKTsKLSAg
ICB9Ci0KLSAgICBmb3IgKHZhciBpZCBpbiBxdWV1ZXNJbmZvKSB7Ci0gICAgICAgIGlmIChxdWV1
ZXNJbmZvW2lkXS5jb21iaW5lZFF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgY29tYmlu
ZWRRdWV1ZUlEIGluIHF1ZXVlc0luZm9baWRdLmNvbWJpbmVkUXVldWVzKQotICAgICAgICAgICAg
ICAgIHRoaXMucXVldWVzW2NvbWJpbmVkUXVldWVJRF0gPSBuZXcgQnVpbGRib3RRdWV1ZSh0aGlz
LCBjb21iaW5lZFF1ZXVlSUQsIHF1ZXVlc0luZm9baWRdLmNvbWJpbmVkUXVldWVzW2NvbWJpbmVk
UXVldWVJRF0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMucXVldWVzW2lkXSA9
IG5ldyBCdWlsZGJvdFF1ZXVlKHRoaXMsIGlkLCBxdWV1ZXNJbmZvW2lkXSk7Ci0gICAgfQotfTsK
LQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdCk7Ci0KLUJ1aWxk
Ym90LkF1dGhlbnRpY2F0aW9uU3RhdHVzID0gewotICAgIFVuYXV0aGVudGljYXRlZDogInVuYXV0
aGVudGljYXRlZCIsCi0gICAgQXV0aGVudGljYXRlZDogImF1dGhlbnRpY2F0ZWQiLAotICAgIElu
dmFsaWRDcmVkZW50aWFsczogImludmFsaWQtY3JlZGVudGlhbHMiCi19OwotCi1CdWlsZGJvdC5V
cGRhdGVSZWFzb24gPSB7Ci0gICAgUmVhdXRoZW50aWNhdGU6ICJyZWF1dGhlbnRpY2F0ZSIKLX07
Ci0KLS8vIE9yZGVyZWQgaW1wb3J0YW5jZS4KLUJ1aWxkYm90LlRlc3RDYXRlZ29yeSA9IHsKLSAg
ICBXZWJLaXQyOiAid2Via2l0LTIiLAotICAgIFdlYktpdDE6ICJ3ZWJraXQtMSIKLX07Ci0KLS8v
IE9yZGVyZWQgaW1wb3J0YW5jZS4KLUJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlID0gewotICAg
IFVuaXZlcnNhbDogInVuaXZlcnNhbCIsCi0gICAgU2l4dHlGb3VyQml0OiAic2l4dHktZm91ci1i
aXQiLAotICAgIFRoaXJ0eVR3b0JpdDogInRoaXJ0eS10d28tYml0IgotfTsKLQotQnVpbGRib3Qu
cHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdCwKLSAgICBfX3Byb3RvX186
IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IG5lZWRzQXV0aGVudGljYXRpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb247Ci0gICAgfSwK
LQotICAgIGdldCBhdXRoZW50aWNhdGlvblN0YXR1cygpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXM7Ci0gICAgfSwKLQotICAgIGdldCBpc0F1dGhlbnRp
Y2F0ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uU3RhdHVz
ID09PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5BdXRoZW50aWNhdGVkOwotICAgIH0s
Ci0KLSAgICBzZXQgaXNBdXRoZW50aWNhdGVkKHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhpcy5f
YXV0aGVudGljYXRpb25TdGF0dXMgPSB2YWx1ZSA/IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3Rh
dHVzLkF1dGhlbnRpY2F0ZWQgOiBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5JbnZhbGlk
Q3JlZGVudGlhbHM7Ci0gICAgfSwKLQotICAgIF9ub3JtYWxpemVRdWV1ZUluZm86IGZ1bmN0aW9u
KHF1ZXVlSW5mbykKLSAgICB7Ci0gICAgICAgIGlmICghcXVldWVJbmZvLmNvbWJpbmVkUXVldWVz
KQotICAgICAgICAgICAgcXVldWVJbmZvLmJyYW5jaGVzID0gcXVldWVJbmZvLmJyYW5jaGVzIHx8
IHRoaXMuZGVmYXVsdEJyYW5jaGVzOwotICAgICAgICBxdWV1ZUluZm8uZGVidWcgPSBxdWV1ZUlu
Zm8uZGVidWcgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby5idWlsZGVyID0gcXVldWVJbmZv
LmJ1aWxkZXIgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby50ZXN0ZXIgPSBxdWV1ZUluZm8u
dGVzdGVyIHx8IGZhbHNlOwotICAgICAgICBxdWV1ZUluZm8ucGVyZm9ybWFuY2UgPSBxdWV1ZUlu
Zm8ucGVyZm9ybWFuY2UgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby5zdGF0aWNBbmFseXpl
ciA9IHF1ZXVlSW5mby5zdGF0aWNBbmFseXplciB8fCBmYWxzZTsKLSAgICAgICAgcXVldWVJbmZv
LmxlYWtzID0gcXVldWVJbmZvLmxlYWtzIHx8IGZhbHNlOwotICAgICAgICBxdWV1ZUluZm8uYXJj
aGl0ZWN0dXJlID0gcXVldWVJbmZvLmFyY2hpdGVjdHVyZSB8fCBudWxsOwotICAgICAgICBxdWV1
ZUluZm8udGVzdENhdGVnb3J5ID0gcXVldWVJbmZvLnRlc3RDYXRlZ29yeSB8fCBudWxsOwotICAg
ICAgICBxdWV1ZUluZm8uaGVhZGluZyA9IHF1ZXVlSW5mby5oZWFkaW5nIHx8IG51bGw7Ci0gICAg
ICAgIHF1ZXVlSW5mby5jcmFzaGVzT25seSA9IHF1ZXVlSW5mby5jcmFzaGVzT25seSB8fCBmYWxz
ZTsKLSAgICB9LAotCi0gICAgX25vcm1hbGl6ZVF1ZXVlc0luZm86IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGZvciAocXVldWVOYW1lIGluIHRoaXMucXVldWVzSW5mbykgewotICAgICAgICAg
ICAgdmFyIHF1ZXVlSW5mbyA9IHRoaXMucXVldWVzSW5mb1txdWV1ZU5hbWVdOwotICAgICAgICAg
ICAgdGhpcy5fbm9ybWFsaXplUXVldWVJbmZvKHF1ZXVlSW5mbyk7Ci0gICAgICAgICAgICBpZiAo
cXVldWVJbmZvLmNvbWJpbmVkUXVldWVzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChjb21iaW5l
ZFF1ZXVlTmFtZSBpbiBxdWV1ZUluZm8uY29tYmluZWRRdWV1ZXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgcXVldWVJbmZvLmNvbWJpbmVkUXVldWVzW2NvbWJpbmVkUXVldWVOYW1lXS5wbGF0Zm9y
bSA9IHF1ZXVlSW5mby5wbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9ybWFs
aXplUXVldWVJbmZvKHF1ZXVlSW5mby5jb21iaW5lZFF1ZXVlc1tjb21iaW5lZFF1ZXVlTmFtZV0p
OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICB1cGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKHVwZGF0ZVJlYXNvbikKLSAgICB7Ci0gICAgICAg
IHZhciBzaG91bGRSZWF1dGhlbnRpY2F0ZSA9IHVwZGF0ZVJlYXNvbiA9PT0gQnVpbGRib3QuVXBk
YXRlUmVhc29uLlJlYXV0aGVudGljYXRlOwotICAgICAgICBpZiAoc2hvdWxkUmVhdXRoZW50aWNh
dGUpIHsKLSAgICAgICAgICAgIHZhciBzYXZlZEF1dGhlbnRpY2F0aW9uU3RhdHVzID0gdGhpcy5f
YXV0aGVudGljYXRpb25TdGF0dXM7Ci0gICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlvblN0
YXR1cyA9IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLlVuYXV0aGVudGljYXRlZDsKLSAg
ICAgICAgfQotICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLnF1ZXVlcykKLSAgICAgICAgICAg
IHRoaXMucXVldWVzW2lkXS51cGRhdGUoKTsKLSAgICAgICAgaWYgKHNob3VsZFJlYXV0aGVudGlj
YXRlKSB7Ci0gICAgICAgICAgICAvLyBBc3NlcnQgc3RhdHVzIHdhc24ndCBjaGFuZ2VkIHN5bmNo
cm9ub3VzbHkuIE90aGVyd2lzZSwgd2Ugd2lsbCBvdmVycmlkZSBpdCAoYmVsb3cpLgotICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxk
Ym90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLlVuYXV0aGVudGljYXRlZCk7Ci0gICAgICAgICAgICB0
aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1cyA9IHNhdmVkQXV0aGVudGljYXRpb25TdGF0dXM7Ci0g
ICAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGxvZ2ljIGFmdGVy
IDxodHRwczovL2dpdGh1Yi5jb20vYnVpbGRib3QvYnVpbGRib3QvaXNzdWVzLzM0NjU+IGlzIGZp
eGVkLgotICAgIF9jb21wdXRlQnVpbGRlck5hbWVUb0lETWFwOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICBKU09OLmxvYWQodGhpcy5iYXNlVVJMICsgImFwaS92Mi9idWlsZGVycyIsIGZ1bmN0
aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIGlmICghZGF0YSB8fCAhKGRhdGEuYnVpbGRlcnMgaW5z
dGFuY2VvZiBBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBm
b3IgKHZhciBidWlsZGVyIG9mIGRhdGEuYnVpbGRlcnMpCi0gICAgICAgICAgICAgICAgdGhpcy5f
YnVpbGRlck5hbWVUb0lETWFwW2J1aWxkZXIubmFtZV0gPSBidWlsZGVyLmJ1aWxkZXJpZDsKLSAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgYnVpbGRQYWdlVVJMRm9ySXRlcmF0
aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICBpZiAodGhpcy5WRVJTSU9O
X0xFU1NfVEhBTl8wOSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVpbGRl
cnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWlsZHMv
IiArIGl0ZXJhdGlvbi5pZDsKLQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuX2J1aWxk
ZXJOYW1lVG9JRE1hcCBsb29rdXAgYWZ0ZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9i
dWlsZGJvdC9pc3N1ZXMvMzQ2NT4gaXMgZml4ZWQuCi0gICAgICAgIHJldHVybiB0aGlzLmJhc2VV
UkwgKyAiIy9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX2J1aWxkZXJOYW1l
VG9JRE1hcFtpdGVyYXRpb24ucXVldWUuaWRdKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24uaWQ7
Ci0gICAgfSwKLQotICAgIGphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0aW9u
OiBmdW5jdGlvbihpdGVyYXRpb24sIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5i
dWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSArICIvc3RlcHMvIiArIG5hbWUgKyAi
L2xvZ3MvanNvbi90ZXh0IjsKLSAgICB9LAotCi0gICAgamF2YVNjcmlwdENvcmVUZXN0U3RkaW9V
cmxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgbmFtZSkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9zdGVw
cy8iICsgbmFtZSArICIvbG9ncy9zdGRpbyI7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RSZXN1
bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewot
ICAgICAgICB2YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyA9ICJyIjsKLSAgICAgICAg
c29ydERpY3Rpb25hcmllc0J5T3JkZXIoRGFzaGJvYXJkLlJlcG9zaXRvcnkpLmZvckVhY2goZnVu
Y3Rpb24ocmVwb3NpdG9yeSkgewotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5yZXZpc2lvblty
ZXBvc2l0b3J5Lm5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVuZGVyc2NvcmVTZXBhcmF0
ZWRSZXZpc2lvbnMubGVuZ3RoID4gMSkKLSAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29yZVNl
cGFyYXRlZFJldmlzaW9ucyArPSAiXyI7Ci0gICAgICAgICAgICAgICAgdW5kZXJzY29yZVNlcGFy
YXRlZFJldmlzaW9ucyArPSBpdGVyYXRpb24ucmV2aXNpb25bcmVwb3NpdG9yeS5uYW1lXTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAi
cmVzdWx0cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAiLyIg
KyBlbmNvZGVVUklDb21wb25lbnQodW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyArICIgKCIg
KyBpdGVyYXRpb24uaWQgKyAiKSIpOwotICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0UmVzdWx0c1VS
TEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
KSArICIvcmVzdWx0cy5odG1sIjsKLSAgICB9LAotCi0gICAgZGFzaGJvYXJkVGVzdFJlc3VsdHNV
UkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlv
bikgKyAiL2Rhc2hib2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzL2luZGV4LXByZXR0eS1kaWZmLmh0
bWwiOwotICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0RnVsbFJlc3VsdHNVUkxGb3JJdGVyYXRpb246
IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRl
c3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiL2Z1bGxfcmVz
dWx0cy5qc29uIjsKLSAgICB9LAotCi0gICAgbGF5b3V0VGVzdENyYXNoTG9nVVJMRm9ySXRlcmF0
aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgdmFyIHBh
dGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86LiopJC8sICIkMS1jcmFzaC1sb2cudHh0
Iik7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9y
SXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiLyIgKyBwYXRoOwotICAgIH0sCi0KLSAgICBsYXlvdXRU
ZXN0U3RkZXJyVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQot
ICAgIHsKLSAgICAgICAgdmFyIHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86Liop
JC8sICIkMS1zdGRlcnIudHh0Iik7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRlc3RSZXN1
bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiLyIgKyBwYXRoOwotICAg
IH0sCi0KLSAgICBsYXlvdXRUZXN0RGlmZlVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0
aW9uLCB0ZXN0UGF0aCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBhdGgucmVwbGFj
ZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtZGlmZi50eHQiKTsKLSAgICAgICAgcmV0dXJuIHRoaXMu
bGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSArICIv
IiArIHBhdGg7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RQcmV0dHlEaWZmVVJMRm9ySXRlcmF0
aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgLy8gcHJl
dHR5LXBhdGNoIG1heSBub3QgYmUgYXZhaWxhYmxlLCBjYWxsZXIgc2hvdWxkIGNoZWNrIEpTT04g
cmVzdWx0cyBmb3IgaGFzX3ByZXR0eV9wYXRjaCBhdHRyaWJ1dGUuCi0gICAgICAgIHZhciBwYXRo
ID0gdGVzdFBhdGgucmVwbGFjZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtcHJldHR5LWRpZmYuaHRt
bCIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVzdWx0c0RpcmVjdG9yeVVSTEZv
ckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsKLSAgICB9LAotCi0gICAgbGF5b3V0
VGVzdEltYWdlc1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCB0ZXN0UGF0aCkK
LSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBhdGgucmVwbGFjZSgvXiguKilcLig/Oi4q
KSQvLCAiJDEtZGlmZnMuaHRtbCIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVz
dWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsKLSAg
ICB9LAotCi0gICAgbGF5b3V0VGVzdEltYWdlRGlmZlVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24o
aXRlcmF0aW9uLCB0ZXN0UGF0aCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBhdGgu
cmVwbGFjZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtZGlmZi5wbmciKTsKLSAgICAgICAgcmV0dXJu
IHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
KSArICIvIiArIHBhdGg7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxkYm90QnVpbGRlclF1ZXVl
VmlldyA9IGZ1bmN0aW9uKHF1ZXVlcykKLXsKLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxsKHRo
aXMsIHF1ZXVlcyk7Ci0KLSAgICBmdW5jdGlvbiBmaWx0ZXJRdWV1ZXMoYXJjaGl0ZWN0dXJlLCBk
ZWJ1ZywgcXVldWUpCi0gICAgewotICAgICAgICByZXR1cm4gcXVldWUuYXJjaGl0ZWN0dXJlID09
PSBhcmNoaXRlY3R1cmUgJiYgcXVldWUuZGVidWcgPT09IGRlYnVnOwotICAgIH0KLQotICAgIHRo
aXMudW5pdmVyc2FsUmVsZWFzZVF1ZXVlcyA9IHRoaXMucXVldWVzLmZpbHRlcihmaWx0ZXJRdWV1
ZXMuYmluZCh0aGlzLCBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwsIGZhbHNl
KSk7Ci0gICAgdGhpcy5zaXh0eUZvdXJCaXRSZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1ZXMuZmls
dGVyKGZpbHRlclF1ZXVlcy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNp
eHR5Rm91ckJpdCwgZmFsc2UpKTsKLSAgICB0aGlzLnRoaXJ0eVR3b0JpdFJlbGVhc2VRdWV1ZXMg
PSB0aGlzLnF1ZXVlcy5maWx0ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3QuQnVp
bGRBcmNoaXRlY3R1cmUuVGhpcnR5VHdvQml0LCBmYWxzZSkpOwotCi0gICAgdGhpcy51bml2ZXJz
YWxEZWJ1Z1F1ZXVlcyA9IHRoaXMucXVldWVzLmZpbHRlcihmaWx0ZXJRdWV1ZXMuYmluZCh0aGlz
LCBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwsIHRydWUpKTsKLSAgICB0aGlz
LnNpeHR5Rm91ckJpdERlYnVnUXVldWVzID0gdGhpcy5xdWV1ZXMuZmlsdGVyKGZpbHRlclF1ZXVl
cy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdCwgdHJ1
ZSkpOwotICAgIHRoaXMudGhpcnR5VHdvQml0RGVidWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5maWx0
ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuVGhp
cnR5VHdvQml0LCB0cnVlKSk7Ci0KLSAgICB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA9
IHRoaXMudW5pdmVyc2FsUmVsZWFzZVF1ZXVlcy5sZW5ndGggKyB0aGlzLnNpeHR5Rm91ckJpdFJl
bGVhc2VRdWV1ZXMubGVuZ3RoICsgdGhpcy50aGlydHlUd29CaXRSZWxlYXNlUXVldWVzLmxlbmd0
aCA+IDE7Ci0gICAgdGhpcy5oYXNNdWx0aXBsZURlYnVnQnVpbGRzID0gdGhpcy51bml2ZXJzYWxE
ZWJ1Z1F1ZXVlcy5sZW5ndGggKyB0aGlzLnNpeHR5Rm91ckJpdERlYnVnUXVldWVzLmxlbmd0aCAr
IHRoaXMudGhpcnR5VHdvQml0RGVidWdRdWV1ZXMubGVuZ3RoID4gMTsKLQotICAgIHRoaXMudXBk
YXRlKCk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90
QnVpbGRlclF1ZXVlVmlldyk7Ci0KLUJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldywKLSAgICBfX3By
b3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5j
YWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0g
ICAgICAgIGZ1bmN0aW9uIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYg
IXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMu
X2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZp
c2lvbkNvdW50KHF1ZXVlLCB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQodGhp
cywgcXVldWUpKTsKLQotICAgICAgICAgICAgdmFyIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRl
cmF0aW9uID0gcXVldWUuZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb247Ci0gICAgICAg
ICAgICB2YXIgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uID0gcXVldWUubW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uOwotICAgICAgICAgICAgdmFyIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRl
cmF0aW9uID0gcXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb247Ci0KLSAgICAgICAg
ICAgIGlmIChmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2VudFVu
c3VjY2Vzc2Z1bEl0ZXJhdGlvbi5sb2FkZWQKLSAgICAgICAgICAgICAgICAmJiBtb3N0UmVjZW50
RmluaXNoZWRJdGVyYXRpb24gJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmxvYWRlZCkg
ewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFtb3N0UmVjZW50RmluaXNoZWRJdGVy
YXRpb24uc3VjY2Vzc2Z1bCk7Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJl
dmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIG1v
c3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0aXZlID8gbW9zdFJlY2VudFN1Y2Nlc3Nm
dWxJdGVyYXRpb24gOiBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAobW9zdFJlY2VudEZpbmlz
aGVkSXRlcmF0aW9uLmZhaWxlZCAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJvZHVj
dGl2ZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBBc3N1bWUgaXQgd2FzIGEgYnVpbGQgc3Rl
cCB0aGF0IGZhaWxlZCwgYW5kIGxpbmsgZGlyZWN0bHkgdG8gb3V0cHV0LgotICAgICAgICAgICAg
ICAgICAgICB2YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVMb2dV
UkwoImJ1aWxkIGxvZyIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXVybCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHVybCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5mYWlsdXJl
TG9nVVJMKCJzdGRpbyIpOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3RhdHVz
TGluZVZpZXcuU3RhdHVzLkJhZDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXI7Ci0KLSAg
ICAgICAgICAgICAgICAvLyBTaG93IGEgcG9wb3ZlciB3aGVuIHRoZSBVUkwgaXMgbm90IGEgbWFp
biBidWlsZCBwYWdlIG9uZSwgYmVjYXVzZSB0aGVyZSBhcmUgdXN1YWxseSBtdWx0aXBsZSBsb2dz
LCBhbmQgaXQncyBnb29kIHRvIHByb3ZpZGUgYSBjaG9pY2UuCi0gICAgICAgICAgICAgICAgdmFy
IG5lZWRzUG9wb3ZlciA9ICEhdXJsOwotCi0gICAgICAgICAgICAgICAgLy8gU29tZSBvdGhlciBz
dGVwIGZhaWxlZCwgbGluayB0byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBpdGVyYXRpb24u
Ci0gICAgICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgICAgIHVybCA9IHF1
ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihtb3N0UmVjZW50RmluaXNoZWRJ
dGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZp
ZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24udGV4dCwgbnVs
bCwgdXJsKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVz
LmVsZW1lbnQpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5lZWRzUG9wb3ZlcikKLSAgICAgICAg
ICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50
LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZhaWx1cmVMb2dzLmJpbmQodGhpcyksIG1vc3RSZWNlbnRG
aW5pc2hlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtb3N0
UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlv
bi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25D
b250ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAg
ICAgICAgICAgICB2YXIgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0
aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICB2YXIg
c3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1
cy5Hb29kLCBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2Nlc3Nm
dWwgYnVpbGQiIDogImxhdGVzdCBidWlsZCIsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldygi
dW5rbm93biIsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBmaXJzdFJlY2VudFVuc3Vj
Y2Vzc2Z1bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2Nlc3NmdWwgYnVpbGQiIDogImxhdGVzdCBidWls
ZCIpOwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxl
bWVudCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVy
YXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGZhaWxlZCBpdGVyYXRp
b24gYnV0IG5vIHN1Y2Nlc3NmdWwuIEl0IG1pZ2h0IGJlIGZ1cnRoZXIgYmFjayBpbiB0aW1lLgot
ICAgICAgICAgICAgICAgICAgICBxdWV1ZS5sb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRpb25zKCk7
Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
dGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy51bml2ZXJzYWxSZWxlYXNlUXVl
dWVzLCB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlIChVbml2ZXJzYWwp
IiA6ICJSZWxlYXNlIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5h
cHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5zaXh0eUZvdXJCaXRSZWxlYXNlUXVldWVz
LCB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlICg2NC1iaXQpIiA6ICJS
ZWxlYXNlIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5hcHBlbmRC
dWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy50aGlydHlUd29CaXRSZWxlYXNlUXVldWVzLCB0aGlz
Lmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlICgzMi1iaXQpIiA6ICJSZWxlYXNl
IiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLQotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxk
U3R5bGUuY2FsbCh0aGlzLCB0aGlzLnVuaXZlcnNhbERlYnVnUXVldWVzLCB0aGlzLmhhc011bHRp
cGxlRGVidWdCdWlsZHMgPyAiRGVidWcgKFVuaXZlcnNhbCkiIDogIkRlYnVnIiwgYXBwZW5kQnVp
bGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhp
cywgdGhpcy5zaXh0eUZvdXJCaXREZWJ1Z1F1ZXVlcywgdGhpcy5oYXNNdWx0aXBsZURlYnVnQnVp
bGRzID8gIkRlYnVnICg2NC1iaXQpIiA6ICJEZWJ1ZyIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1
cyk7Ci0gICAgICAgIHRoaXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMudGhpcnR5
VHdvQml0RGVidWdRdWV1ZXMsIHRoaXMuaGFzTXVsdGlwbGVEZWJ1Z0J1aWxkcyA/ICJEZWJ1ZyAo
MzItYml0KSIgOiAiRGVidWciLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwotICAgIH0sCi0K
LSAgICBfcHJlc2VudFBvcG92ZXJGYWlsdXJlTG9nczogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3Zl
ciwgaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiYnVpbGQtbG9n
cy1wb3BvdmVyIjsKLQotICAgICAgICBmdW5jdGlvbiBhZGRMb2cobmFtZSwgdXJsKSB7Ci0gICAg
ICAgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAg
ICAgIGxpbmUuY2xhc3NOYW1lID0gImJ1aWxkLWxvZy1saW5rIjsKLSAgICAgICAgICAgIGxpbmUu
aHJlZiA9IHVybDsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBuYW1lOwotICAgICAg
ICAgICAgbGluZS50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQobGluZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFk
aW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVudCk7Ci0gICAgICAgIHRoaXMuX2FkZERpdmlk
ZXJUb1BvcG92ZXIoY29udGVudCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgbG9nc0hlYWRpbmdM
aW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGxvZ3NIZWFkaW5n
TGluZS5jbGFzc05hbWUgPSAiYnVpbGQtbG9ncy1oZWFkaW5nIjsKLSAgICAgICAgbG9nc0hlYWRp
bmdMaW5lLnRleHRDb250ZW50ID0gaXRlcmF0aW9uLmZpcnN0RmFpbGVkU3RlcE5hbWUgKyAiIGZh
aWxlZCI7Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobG9nc0hlYWRpbmdMaW5lKTsKLQot
ICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gaXRlcmF0aW9uLmZhaWx1cmVMb2dzLmxlbmd0
aDsgaSA8IGVuZDsgKytpKQotICAgICAgICAgICAgYWRkTG9nKGl0ZXJhdGlvbi5mYWlsdXJlTG9n
c1tpXVswXSwgaXRlcmF0aW9uLmZhaWx1cmVMb2dzW2ldWzFdKTsKLQotICAgICAgICB2YXIgcmVj
dCA9IERhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpKTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAg
ICAgcG9wb3Zlci5wcmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hi
b2FyZC5SZWN0RWRnZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQu
UmVjdEVkZ2UuTUlOX1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5q
cwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RDb21i
aW5lZFF1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI0MCArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVl
dWUpCi17Ci0gICAgY29uc29sZS5hc3NlcnQocXVldWUuYnJhbmNoZXMgPT09IHVuZGVmaW5lZCk7
Ci0gICAgdmFyIGluZGljZXNPZkZpcnN0UXVldWVXaXRoUmVwb3NpdG9yeSA9IHt9OwotICAgIHZh
ciBjb21iaW5lZFF1ZXVlcyA9IHF1ZXVlLmNvbWJpbmVkUXVldWVzOwotICAgIHZhciBidWlsZGJv
dCA9IGNvbWJpbmVkUXVldWVzWzBdLmJ1aWxkYm90OwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y29tYmluZWRRdWV1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHN1YlF1ZXVlID0gY29t
YmluZWRRdWV1ZXNbaV07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkYm90ID09PSBzdWJR
dWV1ZS5idWlsZGJvdCk7Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHN1YlF1ZXVlLmJyYW5jaGVz
OwotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJyYW5jaGVzLmxlbmd0aDsgKytqKSB7Ci0g
ICAgICAgICAgICB2YXIgYnJhbmNoID0gYnJhbmNoZXNbal07Ci0gICAgICAgICAgICB2YXIgcmVw
b3NpdG9yeU5hbWUgPSBicmFuY2gucmVwb3NpdG9yeS5uYW1lOwotICAgICAgICAgICAgdmFyIGV4
cGVjdGVkID0gaW5kaWNlc09mRmlyc3RRdWV1ZVdpdGhSZXBvc2l0b3J5W3JlcG9zaXRvcnlOYW1l
XTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAg
ICAgICAgaW5kaWNlc09mRmlyc3RRdWV1ZVdpdGhSZXBvc2l0b3J5W3JlcG9zaXRvcnlOYW1lXSA9
IHsgcXVldWVJbmRleDogaSwgYnJhbmNoSW5kZXg6IGogfTsKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBleHBlY3RlZEJyYW5jaCA9IGNv
bWJpbmVkUXVldWVzW2V4cGVjdGVkLnF1ZXVlSW5kZXhdLmJyYW5jaGVzW2V4cGVjdGVkLmJyYW5j
aEluZGV4XTsKLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcXVldWUuaWQgKyAiOiAiICsgYnJh
bmNoLm5hbWUgKyAiID09PSBjb21iaW5lZFF1ZXVlc1siICsgaSArICJdLmJyYW5jaFsiICsgaiAr
ICJdICI7Ci0gICAgICAgICAgICBtZXNzYWdlICs9ICI9PT0gY29tYmluZWRRdWV1ZXNbIiArIGV4
cGVjdGVkLnF1ZXVlSW5kZXggKyAiXS5icmFuY2hbIiArIGV4cGVjdGVkLmJyYW5jaEluZGV4ICsg
Il0gPT09ICIgKyBleHBlY3RlZEJyYW5jaC5uYW1lOwotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJhbmNoLm5hbWUgPT09IGV4cGVjdGVkQnJhbmNoLm5hbWUsIG1lc3NhZ2UpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgQnVpbGRib3RRdWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZS5jb21i
aW5lZFF1ZXVlcyk7Ci0KLSAgICB0aGlzLl9hbHdheXNFeHBhbmQgPSBmYWxzZTsKLSAgICB0aGlz
LmNvbWJpbmVkUXVldWUgPSBxdWV1ZTsKLSAgICB0aGlzLnVwZGF0ZSgpOwotfTsKLQotQmFzZU9i
amVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3KTsK
LQotQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IEJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1
ZXVlVmlldy5wcm90b3R5cGUsCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKLQotICAg
ICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBpZiAoIXRoaXMu
X2Fsd2F5c0V4cGFuZCAmJiB0aGlzLl9xdWV1ZXNTaG91bGREaXNwbGF5Q29tYmluZWQoKSkgewot
ICAgICAgICAgICAgdmFyIHJlbGVhc2VMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEi
KTsKLSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC5jbGFzc0xpc3QuYWRkKCJxdWV1ZUxhYmVsIik7
Ci0gICAgICAgICAgICByZWxlYXNlTGFiZWwuaHJlZiA9ICIjIjsKLSAgICAgICAgICAgIHJlbGVh
c2VMYWJlbC50ZXh0Q29udGVudCA9IHRoaXMuY29tYmluZWRRdWV1ZS5oZWFkaW5nOwotICAgICAg
ICAgICAgcmVsZWFzZUxhYmVsLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgdGhpcy5fYWx3YXlzRXhw
YW5kID0gdHJ1ZTsgdGhpcy51cGRhdGUoKTsgcmV0dXJuIGZhbHNlOyB9LmJpbmQodGhpcyk7Ci0g
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVsZWFzZUxhYmVsKTsKLQotICAg
ICAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5xdWV1ZXNbMF07IC8vIEFsbCBxdWV1ZXMgaW4gdGhl
IGNvbWJpbmVkIHF1ZXVlIGFyZSBmcm9tIHRoZSBzYW1lIGJ1aWxkYm90LgotICAgICAgICAgICAg
aWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxkYm90
LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9y
aXplZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIC8vIFNob3cgdGhlIHJldmlzaW9uIGZvciB0aGUgc2xvd2VzdCBx
dWV1ZSwgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGlmIGFueSBuZXdlciByZXZpc2lvbnMgYXJlIGdy
ZWVuIG9uIGFsbCBxdWV1ZXMuCi0gICAgICAgICAgICAvLyBUaGlzIGNhbiBiZSBzbGlnaHRseSBt
aXNsZWFkaW5nIGFmdGVyIGZpeGluZyBhIHByb2JsZW0sIGJlY2F1c2Ugd2UgY2FuIHNob3cgYSBr
bm93biBicm9rZW4gcmV2aXNpb24gYXMgZ3JlZW4uCi0gICAgICAgICAgICB2YXIgc2xvd2VzdFF1
ZXVlID0gdGhpcy5xdWV1ZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIEJ1
aWxkYm90UXVldWUucHJvdG90eXBlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoYS5tb3N0
UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiwgYi5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlv
bik7IH0pLnBvcCgpOwotICAgICAgICAgICAgdGhpcy5fYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291
bnQoc2xvd2VzdFF1ZXVlLCB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQodGhp
cywgc2xvd2VzdFF1ZXVlKSk7Ci0KLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5yZXZp
c2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oc2xvd2VzdFF1ZXVlLm1vc3RSZWNlbnRTdWNjZXNzZnVs
SXRlcmF0aW9uKTsKLSAgICAgICAgICAgIHZhciBzdGF0dXNNZXNzYWdlUGFzc2VkID0gImFsbCAi
ICsgKHF1ZXVlLmJ1aWxkZXIgPyAiYnVpbGRzIHN1Y2NlZWRlZCIgOiAidGVzdHMgcGFzc2VkIik7
Ci0gICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgc3RhdHVzTWVzc2FnZVBhc3NlZCwgbnVsbCwg
bnVsbCk7Ci0gICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzVmlldy5zdGF0dXNC
dWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckNvbWJpbmVkR3JlZW5CdWJibGUu
YmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVz
Vmlldy5lbGVtZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5k
QnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMucXVldWVzLCBudWxsLCBmdW5jdGlvbihxdWV1ZSkg
ewotICAgICAgICAgICAgICAgIGlmIChxdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9u
ICYmICFxdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcocXVldWUpOwotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhp
cy5fYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291bnQocXVldWUsIHRoaXMuX2xhdGVzdFByb2R1Y3Rp
dmVJdGVyYXRpb24uYmluZCh0aGlzLCBxdWV1ZSkpOwotCi0gICAgICAgICAgICAgICAgdmFyIGZp
cnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID0gcXVldWUuZmlyc3RSZWNlbnRVbnN1Y2Nl
c3NmdWxJdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgdmFyIG1vc3RSZWNlbnRGaW5pc2hlZEl0
ZXJhdGlvbiA9IHF1ZXVlLm1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbjsKLSAgICAgICAgICAg
ICAgICB2YXIgbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gPSBxdWV1ZS5tb3N0UmVjZW50
U3VjY2Vzc2Z1bEl0ZXJhdGlvbjsKLQotICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2VudFVu
c3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbi5s
b2FkZWQgJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
IW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKTsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihtb3N0
UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9k
dWN0aXZlID8gbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gOiBudWxsKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJvZHVjdGl2ZSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5EYW5nZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwcy5sZW5ndGggPT09IDEgJiYgLyg/PS4qdGVz
dCkoPz0uKmpzYykvLnRlc3QobW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRlc3RT
dGVwc1swXS5uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWxlZFN0ZXAg
PSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzWzBdOwotICAgICAg
ICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5x
dWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbihtb3N0
UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIGZhaWxlZFN0ZXAubmFtZSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlLCBT
dGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlv
bihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQsIFVSTCk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVtZW50
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNWaWV3
LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzLCBmYWlsZWRTdGVwLm5hbWUpLCBtb3N0UmVjZW50
RmluaXNoZWRJdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGly
ZWN0IGxpbmtzIHRvIHNvbWUgY29tbW9uIGxvZ3MuCi0gICAgICAgICAgICAgICAgICAgICAgICB2
YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVMb2dVUkwoImJ1aWxk
IGxvZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVM
b2dVUkwoInN0ZGlvIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkJhZDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgICAgIC8vIFNob3cgYSBwb3BvdmVyIHdoZW4gdGhlIFVSTCBpcyBub3QgYSBtYWlu
IGJ1aWxkIHBhZ2Ugb25lLCBiZWNhdXNlIHRoZXJlIGFyZSB1c3VhbGx5IG11bHRpcGxlIGxvZ3Ms
IGFuZCBpdCdzIGdvb2QgdG8gcHJvdmlkZSBhIGNob2ljZS4KLSAgICAgICAgICAgICAgICAgICAg
dmFyIG5lZWRzUG9wb3ZlciA9ICF1cmw7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBv
dGhlciBzdGVwIGZhaWxlZCwgbGluayB0byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBpdGVy
YXRpb24uCi0gICAgICAgICAgICAgICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAgICAg
ICAgICAgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1vc3RS
ZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXNW
aWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIHN0YXR1cywgbW9zdFJlY2VudEZpbmlz
aGVkSXRlcmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMu
ZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwotCi0gICAgICAgICAgICAg
ICAgICAgIGlmIChuZWVkc1BvcG92ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9w
b3ZlclRyYWNrZXIoc3RhdHVzVmlldy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50
SW5kaXZpZHVhbFF1ZXVlUG9wb3Zlci5iaW5kKHRoaXMpLCBtb3N0UmVjZW50RmluaXNoZWRJdGVy
YXRpb24pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBzdGF0dXNN
ZXNzYWdlUGFzc2VkID0gImFsbCAiICsgKHF1ZXVlLmJ1aWxkZXIgPyAiYnVpbGRzIHN1Y2NlZWRl
ZCIgOiAidGVzdHMgcGFzc2VkIik7Ci0gICAgICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnRTdWNj
ZXNzZnVsSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRlZCkg
ewotICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250ZW50
Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHVybCA9IHF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlv
bihtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZh
ciBsYWJlbCA9IGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8gImxhc3Qgc3VjY2Vl
ZGVkIiA6IHN0YXR1c01lc3NhZ2VQYXNzZWQ7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0
dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1
cy5Hb29kLCBsYWJlbCwgbnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5lbGVt
ZW50LmFwcGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gZmlyc3RSZWNlbnRVbnN1Y2Nl
c3NmdWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3NlZDsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgU3RhdHVzTGluZVZpZXco
InVua25vd24iLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuTmV1dHJhbCwgbGFiZWwpOwotICAgICAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVtZW50
KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVy
YXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBmYWlsZWQgaXRl
cmF0aW9uIGJ1dCBubyBzdWNjZXNzZnVsLiBJdCBtaWdodCBiZSBmdXJ0aGVyIGJhY2sgaW4gdGlt
ZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLmxvYWRNb3JlSGlzdG9yaWNhbEl0ZXJh
dGlvbnMoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIEFsbCBxdWV1ZXMgYXJlIGdy
ZWVuLCBvciBhbGwgYXJlIHVuYXV0aG9yaXplZCAodGhlIGxhdHRlciBjYXNlIGFsd2F5cyBhcHBs
aWVzIHRvIGFsbCBxdWV1ZXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIGZyb20gdGhlIHNhbWUgYnVp
bGRib3QpLgotICAgIF9xdWV1ZXNTaG91bGREaXNwbGF5Q29tYmluZWQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB0aGlzLnF1ZXVlcy5sZW5ndGg7IGkg
PCBlbmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5xdWV1ZXNbaV07Ci0g
ICAgICAgICAgICBpZiAocXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbiAmJiAhcXVl
dWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICAgICAgaWYgKCFxdWV1ZS5tb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24gfHwg
IXF1ZXVlLm1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9LAotCi0gICAgX3ByZXNlbnRQb3BvdmVyRm9yQ29tYmluZWRHcmVlbkJ1YmJsZTogZnVuY3Rp
b24oZWxlbWVudCwgcG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImNv
bWJpbmVkLXF1ZXVlLXBvcG92ZXIiOwotCi0gICAgICAgIHZhciB0aXRsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAicG9wb3Zlci1p
dGVyYXRpb24taGVhZGluZyI7Ci0gICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0gImxhdGVzdCB0
ZXN0ZWQgcmV2aXNpb25zIjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRsZSk7Ci0K
LSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAgICBm
dW5jdGlvbiBhZGRRdWV1ZShxdWV1ZSwgdmlldykgewotICAgICAgICAgICAgdmFyIGxpbmUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHZhciBsaW5rID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGluay5jbGFzc05hbWUgPSAi
cXVldWUtbGluayI7Ci0gICAgICAgICAgICBsaW5rLmhyZWYgPSBxdWV1ZS5vdmVydmlld1VSTDsK
LSAgICAgICAgICAgIGxpbmsudGV4dENvbnRlbnQgPSBxdWV1ZS5oZWFkaW5nOwotICAgICAgICAg
ICAgbGluay50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQo
bGluayk7Ci0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7Ci0gICAgICAgICAgICByZXZpc2lvbi5jbGFzc05hbWUgPSAicmV2aXNpb24iOwot
ICAgICAgICAgICAgcmV2aXNpb24uYXBwZW5kQ2hpbGQodmlldy5yZXZpc2lvbkNvbnRlbnRGb3JJ
dGVyYXRpb24ocXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24pKTsKLSAgICAgICAg
ICAgIGxpbmUuYXBwZW5kQ2hpbGQocmV2aXNpb24pOwotICAgICAgICAgICAgY29udGVudC5hcHBl
bmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQg
PSB0aGlzLnF1ZXVlcy5sZW5ndGg7IGkgPCBlbmQ7ICsraSkKLSAgICAgICAgICAgIGFkZFF1ZXVl
KHRoaXMucXVldWVzW2ldLCB0aGlzKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsK
LSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVz
ZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5N
QVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hd
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50SW5kaXZpZHVh
bFF1ZXVlUG9wb3ZlcjogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQotICAg
IHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiYnVpbGQtbG9ncy1wb3BvdmVyIjsKLQotICAg
ICAgICBmdW5jdGlvbiBhZGRMb2cobmFtZSwgdXJsKSB7Ci0gICAgICAgICAgICB2YXIgbGluZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgICAgIGxpbmUuY2xhc3NOYW1l
ID0gImJ1aWxkLWxvZy1saW5rIjsKLSAgICAgICAgICAgIGxpbmUuaHJlZiA9IHVybDsKLSAgICAg
ICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBuYW1lOwotICAgICAgICAgICAgbGluZS50YXJnZXQg
PSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobGluZSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJh
dGlvbiwgY29udGVudCk7Ci0gICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVu
dCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgbG9nc0hlYWRpbmdMaW5lID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGxvZ3NIZWFkaW5nTGluZS5jbGFzc05hbWUgPSAi
YnVpbGQtbG9ncy1oZWFkaW5nIjsKLSAgICAgICAgbG9nc0hlYWRpbmdMaW5lLnRleHRDb250ZW50
ID0gaXRlcmF0aW9uLmZpcnN0RmFpbGVkU3RlcE5hbWUgKyAiIGZhaWxlZCI7Ci0gICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQobG9nc0hlYWRpbmdMaW5lKTsKLQotICAgICAgICBmb3IgKHZhciBp
ID0gMCwgZW5kID0gaXRlcmF0aW9uLmZhaWx1cmVMb2dzLmxlbmd0aDsgaSA8IGVuZDsgKytpKQot
ICAgICAgICAgICAgYWRkTG9nKGl0ZXJhdGlvbi5mYWlsdXJlTG9nc1tpXVswXSwgaXRlcmF0aW9u
LmZhaWx1cmVMb2dzW2ldWzFdKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5SZWN0
LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAg
ICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVzZW50
KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhf
WSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hdKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMJKHJldmlzaW9uIDI2ODczMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCShub25leGlzdGVu
dCkKQEAgLTEsNTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQsIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdEl0
ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhT3JJRCwgZmluaXNoZWQpCi17Ci0gICAgQmFz
ZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQocXVldWUpOwotCi0gICAg
dGhpcy5xdWV1ZSA9IHF1ZXVlOwotCi0gICAgaWYgKHR5cGVvZiBkYXRhT3JJRCA9PT0gIm9iamVj
dCIpIHsKLSAgICAgICAgdGhpcy5fcGFyc2VEYXRhKGRhdGFPcklEKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkYXRhT3JJRCA9PT0gIm51bWJl
ciIpOwotICAgIHRoaXMuaWQgPSBkYXRhT3JJRDsKLQotICAgIHRoaXMubG9hZGVkID0gZmFsc2U7
Ci0gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTsKLSAgICB0aGlzLl9wcm9kdWN0aXZlID0gZmFs
c2U7Ci0KLSAgICB0aGlzLnJldmlzaW9uID0ge307Ci0KLSAgICB0aGlzLmxheW91dFRlc3RSZXN1
bHRzID0gbnVsbDsgLy8gTGF5b3V0IHRlc3QgcmVzdWx0cyBjYW4gYmUgbmVlZGVkIGV2ZW4gaWYg
YWxsIHRlc3RzIHBhc3NlZCwgZS5nLiBmb3IgdGhlIGxlYWtzIGJvdC4KLSAgICB0aGlzLmphdmFT
Y3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBudWxsOwotCi0gICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMg
PSBbXTsKLQotICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7Ci19OwotCi1CYXNlT2JqZWN0
LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90SXRlcmF0aW9uKTsKLQotLy8gSlNPTiBy
ZXN1bHQgdmFsdWVzIGZvciBib3RoIGluZGl2aWR1YWwgc3RlcHMgYW5kIHRoZSB3aG9sZSBpdGVy
YXRpb24uCi1CdWlsZGJvdEl0ZXJhdGlvbi5TVUNDRVNTID0gMDsKLUJ1aWxkYm90SXRlcmF0aW9u
LldBUk5JTkdTID0gMTsKLUJ1aWxkYm90SXRlcmF0aW9uLkZBSUxVUkUgPSAyOwotQnVpbGRib3RJ
dGVyYXRpb24uU0tJUFBFRCA9IDM7Ci1CdWlsZGJvdEl0ZXJhdGlvbi5FWENFUFRJT04gPSA0Owot
QnVpbGRib3RJdGVyYXRpb24uUkVUUlkgPSA1OwotCi0vLyBJZiBub25lIG9mIHRoZXNlIHN0ZXBz
IHJhbiwgdGhlbiB3ZSBkaWRuJ3QgZ2V0IGFueSByZWFsIHJlc3VsdHMsIGFuZCB0aGUgaXRlcmF0
aW9uIHdhcyBub3QgcHJvZHVjdGl2ZS4KLS8vIEFsbCB0ZXN0IHN0ZXBzIGFyZSBjb25zaWRlcmVk
IHByb2R1Y3RpdmUgdG9vLgotQnVpbGRib3RJdGVyYXRpb24uUHJvZHVjdGl2ZVN0ZXBzID0gewot
ICAgICJCdWlsZCIgOiAxLAotICAgICJidWlsZCBBU2FuIGFyY2hpdmUiOiAxLAotICAgICJjb21w
aWxlLXdlYmtpdCI6IDEsCi0gICAgInNjYW4gYnVpbGQiOiAxLAotfTsKLQotLy8gVGhlc2UgaGF2
ZSBhIHNwZWNpYWwgbWVhbmluZyBmb3IgdGVzdCBxdWV1ZSB2aWV3cy4KLUJ1aWxkYm90SXRlcmF0
aW9uLlRlc3RTdGVwcyA9IHsKLSAgICAiQVBJLXRlc3RzIjogInBsYXRmb3JtIGFwaSB0ZXN0IiwK
LSAgICAiYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cyI6ICJiaW5kaW5ncyB0ZXN0cyIsCi0gICAg
ImJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyI6ICJidWlsdGlucyBnZW5lcmF0b3IgdGVzdHMiLAot
ICAgICJqc2NvcmUtdGVzdCI6ICJqYXZhc2NyaXB0IHRlc3QiLAotICAgICJsYXlvdXQtdGVzdCI6
ICJsYXlvdXQgdGVzdCIsCi0gICAgInBlcmYtdGVzdCI6ICJwZXJmb3JtYW5jZSB0ZXN0IiwKLSAg
ICAicnVuLWFwaS10ZXN0cyI6ICJhcGkgdGVzdCIsCi0gICAgImRhc2hib2FyZC10ZXN0cyI6ICJk
YXNoYm9hcmQgdGVzdCIsCi0gICAgIndlYmtpdC0zMmJpdC1qc2MtdGVzdCI6ICJqYXZhc2NyaXB0
IHRlc3QiLAotICAgICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiOiAiamF2YXNjcmlwdCBjbG9vcCB0
ZXN0IiwKLSAgICAibGxkYi13ZWJraXQtdGVzdCI6ICJsbGRiIHdlYmtpdCB0ZXN0IiwgCi0gICAg
IndlYmtpdHBlcmwtdGVzdCI6ICJ3ZWJraXRwZXJsIHRlc3QiLAotICAgICJ3ZWJraXRweS10ZXN0
IjogIndlYmtpdHB5IHRlc3QiLAotICAgICJ0ZXN0MjYyLXRlc3QiOiAidGVzdDI2MiB0ZXN0IiwK
LX07Ci0KLUJ1aWxkYm90SXRlcmF0aW9uLkV2ZW50ID0gewotICAgIFVwZGF0ZWQ6ICJ1cGRhdGVk
IiwKLSAgICBVbmF1dGhvcml6ZWRBY2Nlc3M6ICJ1bmF1dGhvcml6ZWQtYWNjZXNzIgotfTsKLQot
Ly8gU2VlIDxodHRwOi8vZG9jcy5idWlsZGJvdC5uZXQvMC44LjgvbWFudWFsL2NmZy1wcm9wZXJ0
aWVzLmh0bWw+LgotZnVuY3Rpb24gaXNNdWx0aUNvZGViYXNlR290UmV2aXNpb25Qcm9wZXJ0eShw
cm9wZXJ0eSkKLXsKLSAgICByZXR1cm4gdHlwZW9mIHByb3BlcnR5WzBdID09PSAib2JqZWN0IjsK
LX0KLQotZnVuY3Rpb24gcGFyc2VSZXZpc2lvblByb3BlcnR5KHByb3BlcnR5LCBrZXksIGZhbGxi
YWNrS2V5KQotewotICAgIGlmICghcHJvcGVydHkpCi0gICAgICAgIHJldHVybiBudWxsOwotICAg
IHZhciB2YWx1ZSA9IHByb3BlcnR5WzBdOwotCi0gICAgLy8gVGhlIHByb3BlcnR5IGdvdF9yZXZp
c2lvbiBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1zIGluIEJ1aWxkYm90IHYwLjg6Ci0gICAg
Ly8gWyJnb3RfcmV2aXNpb24iLHsiSW50ZXJuYWwiOiIxMzU3IiwiV2ViS2l0T3BlblNvdXJjZSI6
IjI0NjgifSwiU291cmNlIl0KLSAgICAvLyBPUgotICAgIC8vIFsiZ290X3JldmlzaW9uIiwiMjQ2
OCIsIlNvdXJjZSJdCi0gICAgLy8KLSAgICAvLyBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIGZv
cm1zIGluIEJ1aWxkYm90IHYwLjk6Ci0gICAgLy8gW3siSW50ZXJuYWwiOiIxMzU3IiwiV2ViS2l0
T3BlblNvdXJjZSI6IjI0NjgifSwgIlNvdXJjZSJdCi0gICAgLy8gT1IKLSAgICAvLyBbIjI0Njgi
LCAiU291cmNlIl0KLSAgICBpZiAoaXNNdWx0aUNvZGViYXNlR290UmV2aXNpb25Qcm9wZXJ0eShw
cm9wZXJ0eSkpCi0gICAgICAgIHZhbHVlID0gKGtleSBpbiB2YWx1ZSkgPyB2YWx1ZVtrZXldIDog
dmFsdWVbZmFsbGJhY2tLZXldOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotQnVpbGRib3RJdGVy
YXRpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdEl0ZXJhdGlvbiwK
LSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IGZpbmlzaGVk
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDsKLSAgICB9LAotCi0gICAg
c2V0IGZpbmlzaGVkKHgpCi0gICAgewotICAgICAgICB0aGlzLl9maW5pc2hlZCA9IHg7Ci0gICAg
fSwKLQotICAgIGdldCBzdWNjZXNzZnVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9y
ZXN1bHQgPT09IEJ1aWxkYm90SXRlcmF0aW9uLlNVQ0NFU1M7Ci0gICAgfSwKLQotICAgIGdldCBw
cm9kdWN0aXZlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9kdWN0aXZlOwotICAg
IH0sCi0KLSAgICAvLyBJdCBpcyBub3QgYSByZWFsIGZhaWx1cmUgaWYgQnVpbGRib3QgaXRzZWxm
IGZhaWxlZCB3aXRoIGNvZGVzIGxpa2UgRVhDRVBUSU9OIG9yIFJFVFJZLgotICAgIGdldCBmYWls
ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdCA9PT0gQnVpbGRib3RJdGVy
YXRpb24uRkFJTFVSRTsKLSAgICB9LAotCi0gICAgZ2V0IGZpcnN0RmFpbGVkU3RlcE5hbWUoKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9maXJzdEZhaWxlZFN0ZXApCi0gICAgICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RGYWlsZWRTdGVwLm5h
bWU7Ci0gICAgfSwKLQotICAgIGZhaWx1cmVMb2dVUkw6IGZ1bmN0aW9uKGtpbmQpCi0gICAgewot
ICAgICAgICBpZiAoIXRoaXMuZmFpbGVkKQotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsK
LQotICAgICAgICBpZiAoIXRoaXMucXVldWUuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RIQU5fMDkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJ
dGVyYXRpb24odGhpcyk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmlyc3RGYWls
ZWRTdGVwKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2ZpcnN0RmFpbGVk
U3RlcC5sb2dzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZmlyc3RGYWls
ZWRTdGVwLmxvZ3NbaV1bMF0gPT0ga2luZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
Zmlyc3RGYWlsZWRTdGVwLmxvZ3NbaV1bMV07Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4g
dW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICBnZXQgZmFpbHVyZUxvZ3MoKQotICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLmZhaWxlZCkKLSAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0KLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmlyc3RGYWlsZWRTdGVwKTsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2ZpcnN0RmFpbGVkU3RlcC5sb2dzOwotICAgIH0sCi0KLSAgICBnZXQgcHJldmlv
dXNQcm9kdWN0aXZlSXRlcmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5xdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICAgICAg
aWYgKHRoaXMucXVldWUuaXRlcmF0aW9uc1tpXSA9PT0gdGhpcykgewotICAgICAgICAgICAgICAg
IHdoaWxlICgrK2kgPCB0aGlzLnF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLnF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAg
ICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24ucHJvZHVjdGl2ZSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBpdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBu
dWxsOwotICAgIH0sCi0KLSAgICBfcGFyc2VEYXRhOiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAg
ICAgICAgZGF0YSA9IHRoaXMuX2FkanVzdEJ1aWxkRGF0YUZvckJ1aWxkYm90MDkoZGF0YSkKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuaWQgfHwgdGhpcy5pZCA9PT0gZGF0YS5udW1iZXIp
OwotICAgICAgICB0aGlzLmlkID0gZGF0YS5udW1iZXI7Ci0KLSAgICAgICAgdGhpcy5yZXZpc2lv
biA9IHt9OwotICAgICAgICB2YXIgcmV2aXNpb25Qcm9wZXJ0eSA9IGRhdGEucHJvcGVydGllcy5n
b3RfcmV2aXNpb247Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHRoaXMucXVldWUuYnJhbmNoZXM7
Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFuY2hlc1tpXS5yZXBvc2l0b3J5OwotICAg
ICAgICAgICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gcmVwb3NpdG9yeS5uYW1lOwotICAgICAgICAg
ICAgdmFyIGtleTsKLSAgICAgICAgICAgIHZhciBmYWxsYmFja0tleTsKLQotICAgICAgICAgICAg
aWYgKHJlcG9zaXRvcnkgPT09IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UpIHsKLSAg
ICAgICAgICAgICAgICBrZXkgPSAiV2ViS2l0IjsKLSAgICAgICAgICAgICAgICBmYWxsYmFja0tl
eSA9ICJvcGVuc291cmNlIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
a2V5ID0gcmVwb3NpdG9yeU5hbWU7Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2tLZXkgPSBudWxs
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSBwYXJzZVJldmlz
aW9uUHJvcGVydHkocmV2aXNpb25Qcm9wZXJ0eSwga2V5LCBmYWxsYmFja0tleSk7Ci0gICAgICAg
ICAgICB0aGlzLnJldmlzaW9uW3JlcG9zaXRvcnlOYW1lXSA9IHJldmlzaW9uOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gc291cmNlU3RhbXBDaGFuZ2VzKHNvdXJjZVN0YW1wKSB7Ci0g
ICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgICAgICB2YXIgY2hhbmdlcyA9IHNv
dXJjZVN0YW1wLmNoYW5nZXM7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYW5n
ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hhbmdlID0geyByZXZpc2lv
bk51bWJlcjogY2hhbmdlc1tpXS5yZXZpc2lvbiB9Ci0gICAgICAgICAgICAgICAgaWYgKGNoYW5n
ZXNbaV0ucmVwb3NpdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlLnJlcG9zaXRvcnkg
PSBjaGFuZ2VzW2ldLnJlcG9zaXRvcnk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYW5nZXNbaV0u
YnJhbmNoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2UuYnJhbmNoID0gY2hhbmdlc1tpXS5i
cmFuY2g7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYWxzbyBhIHRpbWVzdGFtcCwgYnV0
IGl0J3Mgbm90IGFjY3VyYXRlLgotICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYW5nZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gVGhlIGNoYW5nZXMgYXJyYXkgaXMgZ2VuZXJhbGx5IG1lYW5pbmdmdWwgZm9y
IHN2biB0cmlnZ2VyZWQgcXVldWVzIChzdWNoIGFzIGJ1aWxkZXJzKSwKLSAgICAgICAgLy8gYnV0
IG5vdCBmb3IgaW50ZXJuYWxseSB0cmlnZ2VyZWQgb25lcyAoc3VjaCBhcyB0ZXN0ZXJzKSwgZHVl
IHRvIGNvYWxlc2NpbmcuCi0gICAgICAgIHRoaXMuY2hhbmdlcyA9IFtdOwotICAgICAgICBpZiAo
dGhpcy5xdWV1ZS5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkKLSAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGRhdGEuc291cmNlU3RhbXAgfHwgZGF0YS5zb3VyY2VTdGFtcHMpCi0gICAg
ICAgIGlmIChkYXRhLnNvdXJjZVN0YW1wKQotICAgICAgICAgICAgdGhpcy5jaGFuZ2VzID0gc291
cmNlU3RhbXBDaGFuZ2VzKGRhdGEuc291cmNlU3RhbXApOwotICAgICAgICBlbHNlIGlmIChkYXRh
LnNvdXJjZVN0YW1wcykKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5zb3Vy
Y2VTdGFtcHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzID0gdGhp
cy5jaGFuZ2VzLmNvbmNhdChzb3VyY2VTdGFtcENoYW5nZXMoZGF0YS5zb3VyY2VTdGFtcHNbaV0p
KTsKLQotICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKGRhdGEuc3RhcnRlZF9hdCAq
IDEwMDApOwotICAgICAgICB0aGlzLmVuZFRpbWUgPSBuZXcgRGF0ZShkYXRhLmNvbXBsZXRlX2F0
ICogMTAwMCk7Ci0KLSAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMgPSBbXTsKLSAgICAgICAg
ZGF0YS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXApIHsKLSAgICAgICAgICAgIGlmICghc3Rl
cC5jb21wbGV0ZSB8fCBzdGVwLmhpZGRlbiB8fCAhKHN0ZXAubmFtZSBpbiBCdWlsZGJvdEl0ZXJh
dGlvbi5UZXN0U3RlcHMpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHZh
ciByZXN1bHRzID0gbmV3IEJ1aWxkYm90VGVzdFJlc3VsdHMoc3RlcCwgdGhpcy5fc3RkaW9VUkxG
b3JTdGVwKHN0ZXApKTsKLSAgICAgICAgICAgIGlmIChzdGVwLm5hbWUgPT09ICJsYXlvdXQtdGVz
dCIpCi0gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cyA9IHJlc3VsdHM7Ci0g
ICAgICAgICAgICBlbHNlIGlmICgvKD89Lip0ZXN0KSg/PS4qanNjKS8udGVzdChzdGVwLm5hbWUp
KQotICAgICAgICAgICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHJlc3Vs
dHM7Ci0gICAgICAgICAgICBpZiAocmVzdWx0cy5hbGxQYXNzZWQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMucHVzaChyZXN1bHRzKTsK
LSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAg
PSBkYXRhLnN0ZXBzLmZpbmRGaXJzdChmdW5jdGlvbihzdGVwKSB7IHJldHVybiBzdGVwLm5hbWUg
PT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiOyB9KTsKLSAgICAgICAgaWYgKG1hc3RlclNoZWxsQ29t
bWFuZFN0ZXAgJiYgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzKSB7Ci0gICAgICAgICAgICAv
LyBTYW1wbGUgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzIGRhdGE6Ci0gICAgICAgICAgICAv
LyAidXJscyI6IFsKLSAgICAgICAgICAgIC8vICAgICB7Ci0gICAgICAgICAgICAvLyAgICAgICAg
ICJuYW1lIjogInZpZXcgcmVzdWx0cyIsCi0gICAgICAgICAgICAvLyAgICAgICAgICJ1cmwiOiAi
L3Jlc3VsdHMvQXBwbGUgU2llcnJhIFJlbGVhc2UgV0syIChUZXN0cykvcjIyMDAxMyAoMzI0NSkv
cmVzdWx0cy5odG1sIgotICAgICAgICAgICAgLy8gICAgIH0KLSAgICAgICAgICAgIC8vIF0KLSAg
ICAgICAgICAgIHRoaXMucmVzdWx0VVJMcyA9IG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAudXJsc1sw
XTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBsaW5rTmFtZSBpbiB0aGlzLnJlc3VsdFVS
THMpIHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlc3VsdFVSTHNbbGlua05hbWVdOwot
ICAgICAgICAgICAgaWYgKCF1cmwuc3RhcnRzV2l0aCgiaHR0cCIpKQotICAgICAgICAgICAgICAg
IHRoaXMucmVzdWx0VVJMc1tsaW5rTmFtZV0gPSB0aGlzLnF1ZXVlLmJ1aWxkYm90LmJhc2VVUkwg
KyB1cmw7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7Ci0KLSAgICAg
ICAgdGhpcy5fZmlyc3RGYWlsZWRTdGVwID0gZGF0YS5zdGVwcy5maW5kRmlyc3QoZnVuY3Rpb24o
c3RlcCkgeyByZXR1cm4gIXN0ZXAuaGlkZGVuICYmIHN0ZXAucmVzdWx0cyA9PT0gQnVpbGRib3RJ
dGVyYXRpb24uRkFJTFVSRTsgfSk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5yZXN1
bHRzID09PSBudWxsIHx8IHR5cGVvZiBkYXRhLnJlc3VsdHMgPT09ICJudW1iZXIiKTsKLSAgICAg
ICAgdGhpcy5fcmVzdWx0ID0gZGF0YS5yZXN1bHRzOwotCi0gICAgICAgIHRoaXMudGV4dCA9IGRh
dGEuc3RhdGVfc3RyaW5nOwotICAgICAgICB0aGlzLmZpbmlzaGVkID0gZGF0YS5jb21wbGV0ZTsK
LQotICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gdGhpcy5fZmluaXNoZWQgJiYgdGhpcy5fcmVz
dWx0ICE9PSBCdWlsZGJvdEl0ZXJhdGlvbi5FWENFUFRJT04gJiYgdGhpcy5fcmVzdWx0ICE9PSBC
dWlsZGJvdEl0ZXJhdGlvbi5SRVRSWTsKLSAgICAgICAgaWYgKHRoaXMuX3Byb2R1Y3RpdmUpIHsK
LSAgICAgICAgICAgIHZhciBmaW5pc2hlZEFueVByb2R1Y3RpdmVTdGVwID0gZmFsc2U7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgc3RlcCA9IGRhdGEuc3RlcHNbaV07Ci0gICAgICAgICAgICAgICAg
aWYgKCFzdGVwLmNvbXBsZXRlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICBpZiAoc3RlcC5uYW1lIGluIEJ1aWxkYm90SXRlcmF0aW9uLlByb2R1Y3RpdmVTdGVw
cyB8fCBzdGVwLm5hbWUgaW4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIGZpbmlzaGVkQW55UHJvZHVjdGl2ZVN0ZXAgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gZmluaXNoZWRBbnlQcm9kdWN0aXZlU3RlcDsKLSAg
ICAgICAgfQotICAgIH0sCi0KLSAgICBfc3RkaW9VUkxGb3JTdGVwOiBmdW5jdGlvbihzdGVwKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMucXVldWUuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RIQU5f
MDkpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAubG9n
c1swXVsxXTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IFVwZGF0
ZSB0aGlzIGxvZ2ljIGFmdGVyIDxodHRwczovL2dpdGh1Yi5jb20vYnVpbGRib3QvYnVpbGRib3Qv
aXNzdWVzLzM0NjU+IGlzIGZpeGVkLiBCdWlsZGJvdCAwLjkgZG9lcwotICAgICAgICAvLyBub3Qg
cHJvdmlkZSBhIFVSTCB0byBzdGRpbyBmb3IgYSBidWlsZCBzdGVwIGluIHRoZSBSRVNUIEFQSSwg
c28gd2UgYXJlIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUgdXJsIGhlcmUuCi0gICAgICAgIHJl
dHVybiB0aGlzLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbih0aGlzKSAr
ICIvc3RlcHMvIiArIHN0ZXAubnVtYmVyICsgIi9sb2dzL3N0ZGlvIjsKLSAgICB9LAotCi0gICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDU2IGlzIGZpeGVkLgotICAgIF9hZGp1c3RCdWlsZERhdGFG
b3JCdWlsZGJvdDA5OiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnF1
ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIGRh
dGE7Ci0KLSAgICAgICAgZGF0YS5zdGFydGVkX2F0ID0gZGF0YS50aW1lc1swXTsKLSAgICAgICAg
ZGF0YS5jb21wbGV0ZV9hdCA9IGRhdGEudGltZXNbMV07Ci0gICAgICAgIGRlbGV0ZSBkYXRhWyJ0
aW1lcyJdOwotCi0gICAgICAgIGxldCByZXZpc2lvblByb3BlcnR5ID0gZGF0YS5wcm9wZXJ0aWVz
LmZpbmRGaXJzdCgocHJvcGVydHkpID0+IHByb3BlcnR5WzBdID09PSAiZ290X3JldmlzaW9uIik7
Ci0KLSAgICAgICAgaWYgKHJldmlzaW9uUHJvcGVydHkpIHsKLSAgICAgICAgICAgIC8vIFJlbW92
aW5nIGZpcnN0IGVsZW1lbnQgZnJvbSByZXZpc2lvbiBwcm9wZXJ0eSB0byBtYXRjaCB3aXRoIG5l
dyBkYXRhIGZvcm1hdC4KLSAgICAgICAgICAgIC8vIE9sZCBmb3JtYXQ6IFsiZ290X3JldmlzaW9u
Iix7IkludGVybmFsIjoiMTM1NyIsIldlYktpdE9wZW5Tb3VyY2UiOiIyNDY4In0sIlNvdXJjZSJd
Ci0gICAgICAgICAgICAvLyBOZXcgZm9ybWF0OiBbeyJJbnRlcm5hbCI6IjEzNTciLCJXZWJLaXRP
cGVuU291cmNlIjoiMjQ2OCJ9LCJTb3VyY2UiXQotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
cmV2aXNpb25Qcm9wZXJ0eVswXSA9PT0gImdvdF9yZXZpc2lvbiIpCi0gICAgICAgICAgICByZXZp
c2lvblByb3BlcnR5LnNwbGljZSgwLCAxKTsKLSAgICAgICAgfQotICAgICAgICBkYXRhLnByb3Bl
cnRpZXMuZ290X3JldmlzaW9uID0gcmV2aXNpb25Qcm9wZXJ0eTsKLQotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGRhdGEu
c3RlcHNbaV0uY29tcGxldGUgPSBkYXRhLnN0ZXBzW2ldLmlzRmluaXNoZWQ7Ci0gICAgICAgICAg
ICBkZWxldGUgZGF0YS5zdGVwc1tpXVsiaXNGaW5pc2hlZCJdOwotICAgICAgICAgICAgLy8gU2Ft
cGxlIHN0YXRlX3N0cmluZzogIkV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMzAg
dGltZW91dHMuIDMxNjAzIHRlc3RzIHJ1bi4gMTQ3IGZhaWx1cmVzIDY5IG5ldyBwYXNzZXMiLgot
ICAgICAgICAgICAgZGF0YS5zdGVwc1tpXS5zdGF0ZV9zdHJpbmcgPSBkYXRhLnN0ZXBzW2ldLnJl
c3VsdHNbMV0uam9pbignICcpOwotICAgICAgICAgICAgZGF0YS5zdGVwc1tpXS5yZXN1bHRzID0g
ZGF0YS5zdGVwc1tpXS5yZXN1bHRzWzBdOyAvLyBTZWUgVVJMIGh0dHA6Ly9kb2NzLmJ1aWxkYm90
Lm5ldC9sYXRlc3QvZGV2ZWxvcGVyL3Jlc3VsdHMuaHRtbAotICAgICAgICB9Ci0KLSAgICAgICAg
bGV0IG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdCgoc3RlcCkg
PT4gc3RlcC5uYW1lID09PSAiTWFzdGVyU2hlbGxDb21tYW5kIik7Ci0gICAgICAgIGlmIChtYXN0
ZXJTaGVsbENvbW1hbmRTdGVwKQotICAgICAgICAgICAgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51
cmxzID0gW21hc3RlclNoZWxsQ29tbWFuZFN0ZXAudXJsc107Ci0KLSAgICAgICAgZGF0YS5zdGF0
ZV9zdHJpbmcgPSBkYXRhLnRleHQuam9pbigiICIpOwotICAgICAgICBkZWxldGUgZGF0YVsidGV4
dCJdOwotCi0gICAgICAgIGRhdGEuY29tcGxldGUgPSAhZGF0YS5jdXJyZW50U3RlcDsKLSAgICAg
ICAgZGVsZXRlIGRhdGFbImN1cnJlbnRTdGVwIl07Ci0KLSAgICAgICAgcmV0dXJuIGRhdGE7Ci0g
ICAgfSwKLQotICAgIF91cGRhdGVJZkRhdGFBdmFpbGFibGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5fc3RlcHMgfHwgIXRoaXMuX2J1aWxkRGF0YSkKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlOwotICAgICAgICB0aGlz
Ll9idWlsZERhdGEuc3RlcHMgPSB0aGlzLl9zdGVwczsKLQotICAgICAgICB0aGlzLl9kZXByZWNh
dGVkVXBkYXRlV2l0aERhdGEodGhpcy5fYnVpbGREYXRhKTsKLSAgICB9LAotCi0gICAgX2RlcHJl
Y2F0ZWRVcGRhdGVXaXRoRGF0YTogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGlmICh0
aGlzLmxvYWRlZCAmJiB0aGlzLl9maW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB0aGlzLl9wYXJzZURhdGEoZGF0YSk7Ci0KLSAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3J0
aW5nIHNpbmNlIGl0IGlzIGJhc2VkIG9uIHRoZSByZXZpc2lvbiBudW1iZXJzIHRoYXQganVzdCBi
ZWNhbWUga25vd24uCi0gICAgICAgIHRoaXMucXVldWUudXBkYXRlSXRlcmF0aW9uUG9zaXRpb24o
dGhpcyk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJ
dGVyYXRpb24uRXZlbnQuVXBkYXRlZCk7Ci0gICAgfSwKLQotCi0gICAgZ2V0IGJ1aWxkVVJMKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlLmJhc2VVUkwgKyAiL2J1aWxkcy8iICsg
dGhpcy5pZCArICI/cHJvcGVydHk9Z290X3JldmlzaW9uIjsKLSAgICB9LAotCi0gICAgZ2V0IGJ1
aWxkU3RlcHNVUkwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucXVldWUuYmFzZVVSTCAr
ICIvYnVpbGRzLyIgKyB0aGlzLmlkICsgIi9zdGVwcyI7Ci0gICAgfSwKLQotICAgIHVybEZhaWxl
ZFRvTG9hZDogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIHRoaXMuaXNMb2FkaW5nID0g
ZmFsc2U7Ci0gICAgICAgIGlmIChkYXRhLmVycm9yVHlwZSA9PT0gSlNPTi5Mb2FkRXJyb3IgJiYg
ZGF0YS5lcnJvckhUVFBDb2RlID09PSA0MDEpIHsKLSAgICAgICAgICAgIHRoaXMucXVldWUuYnVp
bGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nl
c3MpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMuX2ZpbmlzaGVkKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGlj
YXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVp
bGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7Ci0gICAgICAgIGlmICh0aGlz
LnF1ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgdGhpcy5k
ZXByZWNhdGVkVXBkYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuYWN0dWFs
VXBkYXRlKCk7Ci0gICAgfSwKLQotICAgIGFjdHVhbFVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgSlNPTi5sb2FkKHRoaXMuYnVpbGRTdGVwc1VSTCwgZnVuY3Rpb24oZGF0YSkgewot
ICAgICAgICAgICAgaWYgKCEoZGF0YS5zdGVwcyBpbnN0YW5jZW9mIEFycmF5KSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuX3N0ZXBzID0gZGF0YS5zdGVwczsK
LSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlmRGF0YUF2YWlsYWJsZSgpOwotICAgICAgICB9LmJp
bmQodGhpcyksIHRoaXMudXJsRmFpbGVkVG9Mb2FkLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1
ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLQotICAgICAgICBKU09OLmxvYWQo
dGhpcy5idWlsZFVSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhpcy5xdWV1ZS5i
dWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCEoZGF0YS5i
dWlsZHMgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAvLyBTYW1wbGUgZGF0YSBmb3IgYSBzaW5nbGUgYnVpbGQ6Ci0gICAgICAgICAgICAv
LyAiYnVpbGRzIjogWwotICAgICAgICAgICAgLy8gICAgIHsKLSAgICAgICAgICAgIC8vICAgICAg
ICAgImJ1aWxkZXJpZCI6IDI4MiwKLSAgICAgICAgICAgIC8vICAgICAgICAgImJ1aWxkaWQiOiA1
NjA5LAotICAgICAgICAgICAgLy8gICAgICAgICAiY29tcGxldGUiOiB0cnVlLAotICAgICAgICAg
ICAgLy8gICAgICAgICAuLi4KLSAgICAgICAgICAgIC8vICAgICAgICAgIndvcmtlcmlkIjogMTg4
Ci0gICAgICAgICAgICAvLyAgICAgfQotICAgICAgICAgICAgLy8gXQotICAgICAgICAgICAgdGhp
cy5fYnVpbGREYXRhID0gZGF0YS5idWlsZHNbMF07Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVJ
ZkRhdGFBdmFpbGFibGUoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLnVybEZhaWxlZFRv
TG9hZCwge3dpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRp
Y2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGRlcHJlY2F0ZWRVcGRhdGU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJhc2VVUkwgKyAiL2J1aWxkcy8iICsg
dGhpcy5pZCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBm
YWxzZTsKLSAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5wcm9wZXJ0aWVzKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5fZGVwcmVjYXRlZFVwZGF0ZVdp
dGhEYXRhKGRhdGEpOwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMudXJsRmFpbGVkVG9Mb2Fk
LCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRp
b259KTsKLSAgICB9LAotCi0gICAgbG9hZExheW91dFRlc3RSZXN1bHRzOiBmdW5jdGlvbihjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVu
dGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0g
QnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJ1aWxkYm90Lmxh
eW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0YSkg
ewotICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVl
OwotCi0gICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzLmFkZEZ1bGxMYXlvdXRUZXN0
UmVzdWx0cyhkYXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0uYmluZCh0
aGlzKSwKLSAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuZXJy
b3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09IDQwMSkg
ewotICAgICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0g
ZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVp
bGRib3RJdGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAgICAgICAgICAgY2FsbGJh
Y2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERfUkVT
VUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRp
Y2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzOiBm
dW5jdGlvbih0ZXN0TmFtZSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAodGhpcy5xdWV1
ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVldWUuYnVpbGRib3QuYXV0
aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLkludmFs
aWRDcmVkZW50aWFscykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBKU09OLmxvYWQo
dGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJh
dGlvbih0aGlzLCB0ZXN0TmFtZSksIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIHRoaXMu
cXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMu
amF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlcyhk
YXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwKLSAg
ICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlID09
PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09IDQwMSkgewotICAgICAg
ICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJdGVy
YXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgfS5iaW5kKHRoaXMpLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90
Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL0J1aWxkYm90TGVha3NRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RMZWFrc1F1ZXVlVmlldy5qcwkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RMZWFrc1F1ZXVlVmlldy5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDEzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RMZWFrc1F1ZXVl
VmlldyA9IGZ1bmN0aW9uKHF1ZXVlcykKLXsKLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxsKHRo
aXMsIHF1ZXVlcyk7Ci0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RMZWFrc1F1ZXVlVmlldyk7Ci0KLUJ1aWxkYm90TGVh
a3NRdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdExlYWtz
UXVldWVWaWV3LAotICAgIF9fcHJvdG9fXzogQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLAot
Ci0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBRdWV1ZVZpZXcucHJvdG90
eXBlLnVwZGF0ZS5jYWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZExlYWtzUXVldWVTdGF0dXMocXVldWUp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhcHBlbmRlZFN0YXR1cyA9IGZhbHNlOwotCi0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoOyAr
K2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9uc1tp
XTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlvbi5m
aW5pc2hlZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAg
ICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIG51bGwpOwotCi0gICAgICAgICAgICAgICAgdmFyIGJ1aWxkUGFnZVVSTCA9IGl0
ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
KTsKLQotICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24uc3VjY2Vzc2Z1bCkKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVu
dCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsICJubyBsZWFrcyIsIG51bGwsIGJ1aWxkUGFn
ZVVSTCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWl0ZXJhdGlvbi5wcm9kdWN0aXZlKQot
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3Nh
Z2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4dCwg
bnVsbCwgYnVpbGRQYWdlVVJMKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVyYXRpb24u
ZmFpbGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUu
YnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBsZWFrQ291bnQgPSBpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMudW5p
cXVlTGVha0NvdW50OwotICAgICAgICAgICAgICAgICAgICBpZiAobGVha0NvdW50KSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgbGVha3NWaWV3ZXJVUkwgPSBpdGVyYXRpb24ucmVzdWx0
VVJMc1sidmlldyBsZWFrcyJdOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
Lk5ldXRyYWwsIGxlYWtDb3VudCA9PT0gMSA/ICJ1bmlxdWUgbGVhayIgOiAidW5pcXVlIGxlYWtz
IiwgbGVha0NvdW50LCBsZWFrc1ZpZXdlclVSTCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxz
ZQotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9u
LnRleHQsIG51bGwsIGJ1aWxkUGFnZVVSTCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWls
ZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIG51bGwsIGJ1aWxkUGFnZVVSTCk7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3
IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWws
ICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBu
ZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNl
bnRQb3BvdmVyRm9yTGVha3NRdWV1ZS5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5xdWV1ZXMs
ICJMZWFrcyIsIGFwcGVuZExlYWtzUXVldWVTdGF0dXMpOwotICAgIH0sCi0KLSAgICBhZGRMaW5r
VG9Sb3c6IGZ1bmN0aW9uKHJvd0VsZW1lbnQsIGNsYXNzTmFtZSwgdGV4dCwgdXJsKQotICAgIHsK
LSAgICAgICAgdmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwot
ICAgICAgICBsaW5rRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gICAgICAgIGxpbmtF
bGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9IHVy
bDsKLSAgICAgICAgbGlua0VsZW1lbnQudGFyZ2V0ID0gIl9ibGFuayI7Ci0gICAgICAgIHJvd0Vs
ZW1lbnQuYXBwZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfcG9wb3ZlckNv
bnRlbnRGb3JMZWFrc1F1ZXVlOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICB2
YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgIGNv
bnRlbnQuY2xhc3NOYW1lID0gImxlYWtzLXBvcG92ZXIiOwotCi0gICAgICAgIHRoaXMuX2FkZEl0
ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiIik7Ci0gICAgICAg
IHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgdmFyIHJvdyA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICByb3cudGV4dENvbnRlbnQg
PSBpdGVyYXRpb24udGV4dDsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3cpOwotCi0g
ICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgZm9y
ICh2YXIgbGlua05hbWUgaW4gaXRlcmF0aW9uLnJlc3VsdFVSTHMpIHsKLSAgICAgICAgICAgIHZh
ciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHRoaXMu
YWRkTGlua1RvUm93KHJvdywgInJlc3VsdC1saW5rIiwgbGlua05hbWUsIGl0ZXJhdGlvbi5yZXN1
bHRVUkxzW2xpbmtOYW1lXSk7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvdyk7
Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX3By
ZXNlbnRQb3BvdmVyRm9yTGVha3NRdWV1ZTogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRl
cmF0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVu
dEZvckxlYWtzUXVldWUoaXRlcmF0aW9uKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2Fy
ZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
KTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5w
cmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRn
ZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi19OwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3LmpzCShy
ZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFBlcmZvcm1h
bmNlUXVldWVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi1CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVz
KQotewotICAgIEJ1aWxkYm90UXVldWVWaWV3LmNhbGwodGhpcywgcXVldWVzKTsKLSAgICB0aGlz
LnVwZGF0ZSgpOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWls
ZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3KTsKLQotQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVlVmll
dy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1aWxkYm90UGVyZm9ybWFuY2VRdWV1
ZVZpZXcsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUsCi0KLSAg
ICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFF1ZXVlVmlldy5wcm90b3R5cGUu
dXBkYXRlLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kUGVyZm9ybWFuY2VRdWV1ZVN0YXR1cyhxdWV1
ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7Ci0K
LSAgICAgICAgICAgIHZhciBsaW1pdCA9IDI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7Ci0gICAgICAg
ICAgICAgICAgdmFyIGl0ZXJhdGlvbiA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAgICAg
ICAgICAgaWYgKCFpdGVyYXRpb24ubG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgLS1saW1pdDsKLQot
ICAgICAgICAgICAgICAgIHZhciB3aWxsSGF2ZUFub3RoZXJTdGF0dXNMaW5lID0gaSArIDEgPCBx
dWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAmJiBsaW1pdCA+IDAgJiYgIWl0ZXJhdGlvbi5zdWNjZXNz
ZnVsOyAvLyBUaGlzIGlzIG5vdCAxMDAlIGNvcnJlY3QsIGFzIHRoZSByZW1haW5pbmcgaXRlcmF0
aW9ucyBtYXkgbm90IGJlIGZpbmlzaGVkIG9yIGxvYWRlZCB5ZXQsIGJ1dCBjbG9zZSBlbm91Z2gu
Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VFbGVtZW50ID0gdGhpcy5yZXZpc2lvbkNvbnRl
bnRGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCAoaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgd2lsbEhh
dmVBbm90aGVyU3RhdHVzTGluZSkgPyBpdGVyYXRpb24ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0
aW9uIDogbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwp
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyht
ZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsICJhbGwgdGVzdHMgcGFz
c2VkIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gMDsKLSAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICB2
YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlv
bihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1
c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBp
dGVyYXRpb24udGV4dCwgbnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0
ZXJhdGlvbi5mYWlsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlv
bi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAg
ICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
RWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgaXRlcmF0aW9uLnRleHQsIG51bGws
IHVybCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24o
aXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNM
aW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRl
cmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAg
ICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0g
bmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRy
YWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3By
ZXNlbnRQb3BvdmVyRm9yUGVyZm9ybWFuY2VRdWV1ZS5iaW5kKHRoaXMpLCBxdWV1ZSk7Ci0gICAg
ICAgIH0KLQotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLnF1
ZXVlcywgJ1JlbGVhc2UnLCBhcHBlbmRQZXJmb3JtYW5jZVF1ZXVlU3RhdHVzKTsKLSAgICB9LAot
Ci0gICAgYWRkTGlua1RvUm93OiBmdW5jdGlvbihyb3dFbGVtZW50LCBjbGFzc05hbWUsIHRleHQs
IHVybCkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImEiKTsKLSAgICAgICAgbGlua0VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1lOwot
ICAgICAgICBsaW5rRWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIGxpbmtFbGVt
ZW50LmhyZWYgPSB1cmw7Ci0gICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwot
ICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKLSAgICB9LAotCi0g
ICAgX3BvcG92ZXJDb250ZW50Rm9yUGVyZm9ybWFuY2VRdWV1ZTogZnVuY3Rpb24ocXVldWUpCi0g
ICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJwZXJmb3JtYW5jZS1wb3BvdmVyIjsKLQot
ICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAg
IHRoaXMuYWRkTGlua1RvUm93KHJvdywgImRhc2hib2FyZC1saW5rIiwgIlBlcmZvcm1hbmNlIERh
c2hib2FyZCIsIHF1ZXVlLmJ1aWxkYm90LnBlcmZvcm1hbmNlRGFzaGJvYXJkVVJMKTsKLQotICAg
ICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAgICAgICAgcmV0dXJuIGNvbnRlbnQ7
Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvclBlcmZvcm1hbmNlUXVldWU6IGZ1bmN0
aW9uKGVsZW1lbnQsIHBvcG92ZXIsIHF1ZXVlKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQg
PSB0aGlzLl9wb3BvdmVyQ29udGVudEZvclBlcmZvcm1hbmNlUXVldWUocXVldWUpOwotCi0gICAg
ICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb250
ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5N
SU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gs
IERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCShub25leGlz
dGVudCkKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFF1ZXVlID0gZnVu
Y3Rpb24oYnVpbGRib3QsIGlkLCBpbmZvKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsK
LQotICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkYm90KTsKLSAgICBjb25zb2xlLmFzc2VydChpZCk7
Ci0KLSAgICB0aGlzLmJ1aWxkYm90ID0gYnVpbGRib3Q7Ci0gICAgdGhpcy5pZCA9IGlkOwotCi0g
ICAgLy8gRklYTUU6IFNvbWUgb2YgdGhlc2UgYXJlIHByZXNlbnRhdGlvbiBvbmx5LCBhbmQgc2hv
dWxkIGJlIGhhbmRsZWQgYWJvdmUgQnVpbGRib3RRdWV1ZSBsZXZlbC4KLSAgICB0aGlzLmJyYW5j
aGVzID0gaW5mby5icmFuY2hlczsKLSAgICB0aGlzLnBsYXRmb3JtID0gaW5mby5wbGF0Zm9ybS5u
YW1lOwotICAgIHRoaXMuZGVidWcgPSBpbmZvLmRlYnVnOwotICAgIHRoaXMuYnVpbGRlciA9IGlu
Zm8uYnVpbGRlcjsKLSAgICB0aGlzLnRlc3RlciA9IGluZm8udGVzdGVyOwotICAgIHRoaXMucGVy
Zm9ybWFuY2UgPSBpbmZvLnBlcmZvcm1hbmNlOwotICAgIHRoaXMuc3RhdGljQW5hbHl6ZXIgPSBp
bmZvLnN0YXRpY0FuYWx5emVyOwotICAgIHRoaXMubGVha3MgPSBpbmZvLmxlYWtzOwotICAgIHRo
aXMuYXJjaGl0ZWN0dXJlID0gaW5mby5hcmNoaXRlY3R1cmU7Ci0gICAgdGhpcy50ZXN0Q2F0ZWdv
cnkgPSBpbmZvLnRlc3RDYXRlZ29yeTsKLSAgICB0aGlzLmhlYWRpbmcgPSBpbmZvLmhlYWRpbmc7
Ci0gICAgdGhpcy5jcmFzaGVzT25seSA9IGluZm8uY3Jhc2hlc09ubHk7Ci0KLSAgICB0aGlzLml0
ZXJhdGlvbnMgPSBbXTsKLSAgICB0aGlzLl9rbm93bkl0ZXJhdGlvbnMgPSB7fTsKLQotICAgIC8v
IFNvbWUgcXVldWVzIHByb2Nlc3MgY2hhbmdlcyBvdXQgb2Ygb3JkZXIsIGJ1dCB3ZSBuZWVkIHRv
IGRpc3BsYXkgcmVzdWx0cyBmb3IgdGhlIGxhdGVzdCBjb21taXQsCi0gICAgLy8gbm90IHRoZSBs
YXRlc3QgYnVpbGQuIEJ1aWxkYm90UXVldWUgZW5zdXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBwcm9k
dWN0aXZlIGl0ZXJhdGlvbgotICAgIC8vIHRoYXQgd2FzIHJ1biBpbiBvcmRlciBnZXRzIGxvYWRl
ZCAoaWYgdGhlIHF1ZXVlIGhhZCBhbnkgcHJvZHVjdGl2ZSBpdGVyYXRpb25zLCBvZiBjb3Vyc2Up
LgotICAgIHRoaXMuX2hhc0xvYWRlZEl0ZXJhdGlvbkZvckluT3JkZXJSZXN1bHQgPSBmYWxzZTsK
LX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1ZSk7
Ci0KLUJ1aWxkYm90UXVldWUuUmVjZW50SXRlcmF0aW9uc1RvTG9hZCA9IDEwOwotCi1CdWlsZGJv
dFF1ZXVlLkV2ZW50ID0gewotICAgIEl0ZXJhdGlvbnNBZGRlZDogIml0ZXJhdGlvbnMtYWRkZWQi
LAotICAgIFVuYXV0aG9yaXplZEFjY2VzczogInVuYXV0aG9yaXplZC1hY2Nlc3MiCi19OwotCi1C
dWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RRdWV1
ZSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IGJhc2VV
UkwoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RIQU5f
MDkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImpzb24vYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmlkKTsKLQotICAgICAgICByZXR1cm4g
dGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImFwaS92Mi9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29t
cG9uZW50KHRoaXMuaWQpOwotICAgIH0sCi0KLSAgICBnZXQgYWxsSXRlcmF0aW9uc1VSTCgpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkKLSAg
ICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcy9fYWxsLz9tYXg9MTAwMDAi
OwotCi0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVtYmVy
IjsKLSAgICB9LAotCi0gICAgZ2V0IGJ1aWxkc1VSTCgpCi0gICAgewotICAgICAgICAvLyBXZSBu
ZWVkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgYnVpbGRzIGZvciB3aGljaCB3ZSBmZXRjaCB0aGUg
aW5mbywgYXMgaXQgd291bGQKLSAgICAgICAgLy8gaW1wYWN0IHBlcmZvcm1hbmNlLiBGb3IgZWFj
aCBidWlsZCwgd2Ugd2lsbCBiZSBzdWJzZXF1ZW50bHkgbWFraW5nIFJFU1QgQVBJIGNhbGxzCi0g
ICAgICAgIC8vIHRvIGZldGNoIGRldGFpbGVkIGJ1aWxkIGluZm8uCi0gICAgICAgIHJldHVybiB0
aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVtYmVyJmxpbWl0PTIwIjsKLSAgICB9LAot
Ci0gICAgZ2V0IG92ZXJ2aWV3VVJMKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90
LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRib3Qu
YmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsgIj9u
dW1idWlsZHM9NTAiOwotCi0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LmJhc2VVUkwgKyAi
Iy9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsgIj9udW1idWlsZHM9
NTAiOwotICAgIH0sCi0KLSAgICBnZXQgcmVjZW50RmFpbGVkSXRlcmF0aW9uQ291bnQoKQotICAg
IHsKLSAgICAgICAgdmFyIGZpcnN0RmluaXNoZWRJdGVyYXRpb24gPSB0aGlzLm1vc3RSZWNlbnRG
aW5pc2hlZEl0ZXJhdGlvbjsKLSAgICAgICAgdmFyIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0
aW9uID0gdGhpcy5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbjsKLSAgICAgICAgcmV0dXJu
IHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKSAt
IHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKGZpcnN0RmluaXNoZWRJdGVyYXRpb24pOwotICAgIH0s
Ci0KLSAgICBnZXQgZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24oKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIG51
bGw7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5pdGVyYXRpb25zW2ldLmZpbmlzaGVkIHx8
ICF0aGlzLml0ZXJhdGlvbnNbaV0uc3VjY2Vzc2Z1bCkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLml0ZXJhdGlvbnNbaSAtIDFdICYmIHRoaXMuaXRlcmF0
aW9uc1tpIC0gMV0uZmluaXNoZWQgJiYgIXRoaXMuaXRlcmF0aW9uc1tpIC0gMV0uc3VjY2Vzc2Z1
bCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW2kgLSAxXTsKLSAgICAg
ICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLml0ZXJh
dGlvbnNbdGhpcy5pdGVyYXRpb25zLmxlbmd0aCAtIDFdLnN1Y2Nlc3NmdWwpCi0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTsKLQot
ICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotCi0gICAgZ2V0IG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRl
cmF0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnNb
aV0uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICByZXR1
cm4gdGhpcy5pdGVyYXRpb25zW2ldOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7
Ci0gICAgfSwKLQotICAgIGdldCBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbigpCi0gICAg
ewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9ucy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnNbaV0uZmluaXNoZWQgfHwgIXRo
aXMuaXRlcmF0aW9uc1tpXS5zdWNjZXNzZnVsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHJldHVybiBudWxsOwotICAgIH0sCi0KLSAgICBfbG9hZDogZnVuY3Rpb24odXJsLCBjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRp
b24gJiYgdGhpcy5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRib3QuQXV0
aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIEpTT04ubG9hZCgKLSAgICAgICAgICAgIHVybCwKLSAgICAgICAgICAgIGZ1
bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGlj
YXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSk7Ci0gICAgICAgICAg
ICB9LmJpbmQodGhpcyksCi0gICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlICE9PSBKU09OLkxvYWRFcnJvciB8fCBkYXRhLmVycm9y
SFRUUENvZGUgIT09IDQwMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRSAoMTI4MDA2KTogU2FmYXJpL1dlYktpdCBzaG91bGQgY29hbGVzY2Ug
YXV0aGVudGljYXRpb24gcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBvcmlnaW4gYW5kIGF1dGhlbnRp
Y2F0aW9uIHJlYWxtLgotICAgICAgICAgICAgICAgICAgICAvLyBJbiBhYnNlbmNlIG9mIHRoZSBm
aXgsIFNhZmFyaSBwcmVzZW50cyBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRpYWxvZ3MgcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIGFuIGVhcmxpZXIgYXV0aGVudGljYXRpb24KLSAgICAgICAgICAg
ICAgICAgICAgLy8gZGlhbG9nIHdhcyBkaXNtaXNzZWQuIEFzIGEgd2F5IHRvIGFtZWxpb3JhdGUg
dGhlIHVzZXIgZXhwZXJpZW5jZSB3aGVyZSBhIHBlcnNvbiBhdXRoZW50aWNhdGVkIHN1Y2Nlc3Nm
dWxseSB1c2luZyBhbgotICAgICAgICAgICAgICAgICAgICAvLyBlYXJsaWVyIGF1dGhlbnRpY2F0
aW9uIGRpYWxvZyBhbmQgY2FuY2VsbGVkIHRoZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgYXNzb2Np
YXRlZCB3aXRoIHRoZSBsb2FkIGZvciB0aGlzIHF1ZXVlLCB3ZSBjYWxsCi0gICAgICAgICAgICAg
ICAgICAgIC8vIG91cnNlbGYgc28gdGhhdCB3ZSBjYW4gc2NoZWR1bGUgYW5vdGhlciBsb2FkLCB3
aGljaCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IG5vdyB0aGF0IHdlIGhhdmUgY3JlZGVu
dGlhbHMuCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWQodXJsLCBjYWxsYmFjayk7Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IGZhbHNlOwotICAgICAgICAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUuRXZlbnQu
VW5hdXRob3JpemVkQWNjZXNzLCB7IH0pOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpLAotICAg
ICAgICAgICAge3dpdGhDcmVkZW50aWFsczogdGhpcy5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0
aW9ufQotICAgICAgICApOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRp
b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgaW5kZXhPZkZpcnN0TmV3bHlMb2Fk
aW5nSXRlcmF0aW9uOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9u
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGluZGV4T2ZGaXJzdE5ld2x5TG9hZGlu
Z0l0ZXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmIGkgPj0gaW5kZXhPZkZpcnN0TmV3bHlMb2FkaW5n
SXRlcmF0aW9uICsgQnVpbGRib3RRdWV1ZS5SZWNlbnRJdGVyYXRpb25zVG9Mb2FkKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLml0ZXJh
dGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRpb24uaXNMb2FkaW5nKSB7
Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGxhY2tzIHZpc2liaWxpdHkgaW50byBsb2FkaW5n
LCBzbyBpdCBpcyBsaWtlbHkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvbyBvZnRlbi4KLSAgICAg
ICAgICAgICAgICAvLyBHaXZlIGl0IGEgY2hhbmNlIHRvIGFuYWx5emUgZXZlcnl0aGluZyB0aGF0
J3MgYmVlbiBhbHJlYWR5IHJlcXVlc3RlZCBmaXJzdCwgYW5kIHRoZW4gaXQgY2FuIGRlY2lkZSB3
aGV0aGVyIGl0IG5lZWRzIG1vcmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5sb2FkZWQgJiYgaW5kZXhPZkZpcnN0TmV3
bHlMb2FkaW5nSXRlcmF0aW9uICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBU
aGVyZSB3YXMgYSBnYXAgYmV0d2VlbiBsb2FkZWQgaXRlcmF0aW9ucywgd2hpY2ggd2UndmUgY2xv
c2VkIG5vdy4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5kZXhP
ZkZpcnN0TmV3bHlMb2FkaW5nSXRlcmF0aW9uID09PSB1bmRlZmluZWQpCi0gICAgICAgICAgICAg
ICAgICAgIGluZGV4T2ZGaXJzdE5ld2x5TG9hZGluZ0l0ZXJhdGlvbiA9IGk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0KQotICAg
ICAgICAgICAgICAgICAgICBpdGVyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0ZXJh
dGlvbi5FdmVudC5VcGRhdGVkLCB0aGlzLl9jaGVja0ZvckluT3JkZXJSZXN1bHQuYmluZCh0aGlz
KSk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSwKLQotICAgIGdldCBidWlsZHNJbmZvVVJMKCkKLSAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAg
cmV0dXJuIHRoaXMuYmFzZVVSTDsKLQotICAgICAgICByZXR1cm4gdGhpcy5idWlsZHNVUkw7Ci0g
ICAgfSwKLQotICAgIGdldEJ1aWxkczogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJu
IGRhdGEuY2FjaGVkQnVpbGRzLnJldmVyc2UoKTsKLQotICAgICAgICByZXR1cm4gZGF0YS5idWls
ZHM7Ci0gICAgfSwKLQotICAgIGlzQnVpbGRDb21wbGV0ZTogZnVuY3Rpb24oZGF0YSwgaW5kZXgp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkg
ewotICAgICAgICAgICAgdmFyIGN1cnJlbnRCdWlsZHMgPSB7fTsKLSAgICAgICAgICAgIGlmIChk
YXRhLmN1cnJlbnRCdWlsZHMgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAgICAgICAgICAgICBkYXRh
LmN1cnJlbnRCdWlsZHMuZm9yRWFjaChmdW5jdGlvbihpZCkgeyBjdXJyZW50QnVpbGRzW2lkXSA9
IHRydWU7IH0pOwotCi0gICAgICAgICAgICByZXR1cm4gKCEoZGF0YS5jYWNoZWRCdWlsZHNbaW5k
ZXhdIGluIGN1cnJlbnRCdWlsZHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBkYXRh
LmJ1aWxkc1tpbmRleF0uY29tcGxldGU7Ci0gICAgfSwKLQotICAgIGdldEl0ZXJhdGlvbklEOiBm
dW5jdGlvbihkYXRhLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LlZF
UlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIGRhdGEuY2FjaGVkQnVpbGRz
W2luZGV4XTsKLQotICAgICAgICByZXR1cm4gZGF0YS5idWlsZHNbaW5kZXhdLm51bWJlcjsKLSAg
ICB9LAotCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9sb2Fk
KHRoaXMuYnVpbGRzSW5mb1VSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdmFyIGJ1
aWxkcyA9IHRoaXMuZ2V0QnVpbGRzKGRhdGEpOwotICAgICAgICAgICAgaWYgKCEoYnVpbGRzIGlu
c3RhbmNlb2YgQXJyYXkpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
dmFyIG5ld0l0ZXJhdGlvbnMgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBidWlsZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uSUQg
PSB0aGlzLmdldEl0ZXJhdGlvbklEKGRhdGEsIGkpOwotICAgICAgICAgICAgICAgIHZhciBpdGVy
YXRpb24gPSB0aGlzLl9rbm93bkl0ZXJhdGlvbnNbaXRlcmF0aW9uSURdOwotICAgICAgICAgICAg
ICAgIGlmICghaXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbiA9IG5l
dyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLCBpdGVyYXRpb25JRCwgdGhpcy5pc0J1aWxkQ29tcGxl
dGUoZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgICAgICBuZXdJdGVyYXRpb25zLnB1c2goaXRl
cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVyYXRpb25zLnB1c2goaXRlcmF0
aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fa25vd25JdGVyYXRpb25zW2l0ZXJhdGlv
bi5pZF0gPSBpdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
aWYgKGkgPCBCdWlsZGJvdFF1ZXVlLlJlY2VudEl0ZXJhdGlvbnNUb0xvYWQgJiYgKCFpdGVyYXRp
b24uZmluaXNoZWQgfHwgIWl0ZXJhdGlvbi5sb2FkZWQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGlmICghdGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGl0ZXJhdGlvbi5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90SXRlcmF0
aW9uLkV2ZW50LlVwZGF0ZWQsIHRoaXMuX2NoZWNrRm9ySW5PcmRlclJlc3VsdC5iaW5kKHRoaXMp
KTsKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFuZXdJdGVyYXRpb25zLmxl
bmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuc29ydEl0
ZXJhdGlvbnMoKTsKLQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
QnVpbGRib3RRdWV1ZS5FdmVudC5JdGVyYXRpb25zQWRkZWQsIHthZGRlZEl0ZXJhdGlvbnM6IG5l
d0l0ZXJhdGlvbnN9KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgX2No
ZWNrRm9ySW5PcmRlclJlc3VsdDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgdmFyIGl0ZXJhdGlvbnNJbk9yaWdpbmFsT3JkZXIgPSB0aGlzLml0ZXJh
dGlvbnMuY29uY2F0KCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiLmlkIC0gYS5pZDsg
fSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uc0luT3JpZ2luYWxPcmRl
ci5sZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBpMSA9IGl0ZXJhdGlvbnNJbk9y
aWdpbmFsT3JkZXJbaV07Ci0gICAgICAgICAgICB2YXIgaTIgPSBpdGVyYXRpb25zSW5PcmlnaW5h
bE9yZGVyW2kgKyAxXTsKLSAgICAgICAgICAgIGlmIChpMS5wcm9kdWN0aXZlICYmIGkyLmxvYWRl
ZCAmJiB0aGlzLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoaTEsIGkyKSA8IDApIHsKLSAg
ICAgICAgICAgICAgICB0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0ID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5sb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRpb25zKCk7Ci0gICAgfSwKLQot
ICAgIGxvYWRBbGw6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gRklYTUU6
IERvbid0IGxvYWQgZXZlcnl0aGluZyBhdCBvbmNlLCBkbyBpdCBpbmNyZW1lbnRhbGx5IGFzIHJl
cXVlc3RlZC4KLSAgICAgICAgdGhpcy5fbG9hZCh0aGlzLmFsbEl0ZXJhdGlvbnNVUkwsIGZ1bmN0
aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGlkU3RyaW5nIGluIGRhdGEpIHsKLSAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWRTdHJpbmcgPT09ICJzdHJpbmci
KTsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9u
KHRoaXMsIGRhdGFbaWRTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB0aGlzLml0ZXJhdGlvbnMu
cHVzaChpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHRoaXMuX2tub3duSXRlcmF0aW9uc1tp
dGVyYXRpb24uaWRdID0gaXRlcmF0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0
aGlzLnNvcnRJdGVyYXRpb25zKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZEl0ZXJh
dGlvbkZvckluT3JkZXJSZXN1bHQgPSB0cnVlOwotCi0gICAgICAgICAgICBjYWxsYmFjayh0aGlz
KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJhdGlv
bnM6IGZ1bmN0aW9uKGEsIGIpCi0gICAgewotICAgICAgICByZXN1bHQgPSB0aGlzLmNvbXBhcmVJ
dGVyYXRpb25zQnlSZXZpc2lvbnMoYSwgYik7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgIC8vIEEgbG9hZGVkIGl0ZXJhdGlvbiBtYXkg
bm90IGhhdmUgcmV2aXNpb24gbnVtYmVycyBpZiBpdCBmYWlsZWQgZWFybHksIGJlZm9yZSBzdm4g
c3RlcHMgZmluaXNoZWQuCi0gICAgICAgIHJlc3VsdCA9IGIubG9hZGVkIC0gYS5sb2FkZWQ7Ci0g
ICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAg
IHJldHVybiBiLmlkIC0gYS5pZDsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJhdGlvbnNCeVJl
dmlzaW9uczogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0ZWRSZXBvc2l0
b3JpZXMgPSBEYXNoYm9hcmQuc29ydGVkUmVwb3NpdG9yaWVzOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAg
dmFyIHJlcG9zaXRvcnlOYW1lID0gc29ydGVkUmVwb3NpdG9yaWVzW2ldLm5hbWU7Ci0gICAgICAg
ICAgICB2YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tpXS50cmFjOwotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQodHJhYyk7Ci0gICAgICAgICAgICB2YXIgaW5kZXhBID0gdHJhYy5pbmRl
eE9mUmV2aXNpb24oYS5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV0pOwotICAgICAgICAgICAgdmFy
IGluZGV4QiA9IHRyYWMuaW5kZXhPZlJldmlzaW9uKGIucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVd
KTsKLSAgICAgICAgICAgIGlmIChpbmRleEEgIT09IC0xICYmIGluZGV4QiAhPT0gLTEpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5kZXhCIC0gaW5kZXhBOwotICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9LAotCi0gICAg
Ly8gUmUtaW5zZXJ0IHRoZSBpdGVyYXRpb24gaWYgaXRzIHNvcnQgb3JkZXIgY2hhbmdlZCAod2hp
Y2ggaGFwcGVucyBvbmNlIGRldGFpbHMgYWJvdXQgaXQgZ2V0IGxvYWRlZCkuCi0gICAgdXBkYXRl
SXRlcmF0aW9uUG9zaXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHZh
ciBvbGRJbmRleDsKLSAgICAgICAgdmFyIGluc2VydGVkID0gZmFsc2U7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5pdGVyYXRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBpZiAoIWluc2VydGVkICYmIHRoaXMuY29tcGFyZUl0ZXJhdGlvbnModGhpcy5pdGVyYXRpb25z
W2ldLCBpdGVyYXRpb24pID4gMCkgewotICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0aW9ucy5z
cGxpY2UoaSwgMCwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAob2xkSW5kZXggIT09
IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAg
aW5zZXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKHRoaXMuaXRlcmF0aW9uc1tpXSA9PT0gaXRlcmF0aW9uKSB7Ci0g
ICAgICAgICAgICAgICAgb2xkSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGlmIChpbnNlcnRl
ZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgdGhpcy5pdGVyYXRpb25zLnNwbGljZShvbGRJbmRleCwgMSk7Ci0gICAgfSwKLQot
ICAgIHNvcnRJdGVyYXRpb25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLml0ZXJh
dGlvbnMuc29ydCh0aGlzLmNvbXBhcmVJdGVyYXRpb25zLmJpbmQodGhpcykpOwotICAgIH0KLX07
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcuanMJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwzNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxk
Ym90UXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIFF1ZXVlVmlldy5jYWxsKHRo
aXMpOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlzLnF1ZXVl
cy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtICYm
IHRoaXMucGxhdGZvcm0gIT0gcXVldWUucGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJvdyAiQSBi
dWlsZGJvdCB2aWV3IG1heSBub3QgY29udGFpbiBxdWV1ZXMgZm9yIG11bHRpcGxlIHBsYXRmb3Jt
cy4iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMucGxhdGZvcm0gPSBxdWV1ZS5wbGF0
Zm9ybTsKLSAgICAgICAgcXVldWUuYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdFF1ZXVlLkV2ZW50
Lkl0ZXJhdGlvbnNBZGRlZCwgdGhpcy5fcXVldWVJdGVyYXRpb25zQWRkZWQsIHRoaXMpOwotICAg
ICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQuVW5hdXRob3Jp
emVkQWNjZXNzLCB0aGlzLl91bmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMpOwotICAgIH0uYmluZCh0
aGlzKSk7Ci0KLSAgICB2YXIgc29ydGVkUmVwb3NpdG9yaWVzID0gRGFzaGJvYXJkLnNvcnRlZFJl
cG9zaXRvcmllczsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmllcy5s
ZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tpXS50
cmFjOwotICAgICAgICBpZiAodHJhYykKLSAgICAgICAgICAgIHRyYWMuYWRkRXZlbnRMaXN0ZW5l
cihUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCB0aGlzLl9uZXdDb21taXRzUmVjb3JkZWQsIHRo
aXMpOwotICAgIH0KLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVp
bGRib3RRdWV1ZVZpZXcpOwotCi1CdWlsZGJvdFF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCA9IDQ1
MDAwOyAvLyA0NSBzZWNvbmRzCi1CdWlsZGJvdFF1ZXVlVmlldy5VcGRhdGVTb29uVGltZW91dCA9
IDEwMDA7IC8vIDEgc2Vjb25kCi0KLUJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsKLSAg
ICBjb25zdHJ1Y3RvcjogQnVpbGRib3RRdWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBRdWV1ZVZp
ZXcucHJvdG90eXBlLAotCi0gICAgX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb246IGZ1bmN0aW9u
KHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYgKCFxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCkKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICBpZiAocXVldWUuaXRlcmF0aW9uc1swXS5w
cm9kdWN0aXZlKQotICAgICAgICAgICAgcmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNbMF07Ci0gICAg
ICAgIHJldHVybiBxdWV1ZS5pdGVyYXRpb25zWzBdLnByZXZpb3VzUHJvZHVjdGl2ZUl0ZXJhdGlv
bjsKLSAgICB9LAotCi0gICAgX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3OiBmdW5jdGlvbihx
dWV1ZSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHF1ZXVlLmJ1aWxkYm90Lm5lZWRz
QXV0aGVudGljYXRpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydCghcXVldWUuYnVpbGRib3Qu
aXNBdXRoZW50aWNhdGVkKTsKLSAgICAgICAgdmFyIGphdmFzY3JpcHRVUkwgPSAiamF2YXNjcmlw
dDpidWlsZGJvdHNbIiArIGJ1aWxkYm90cy5pbmRleE9mKHF1ZXVlLmJ1aWxkYm90KSArICJdLnVw
ZGF0ZVF1ZXVlcyhCdWlsZGJvdC5VcGRhdGVSZWFzb24uUmVhdXRoZW50aWNhdGUpIjsKLSAgICAg
ICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldygidW5hdXRob3JpemVkIiwgU3RhdHVz
TGluZVZpZXcuU3RhdHVzLlVuYXV0aG9yaXplZCwgIiIsIG51bGwsIGphdmFzY3JpcHRVUkwpOwot
ICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgIH0s
Ci0KLSAgICBfY3JlYXRlTG9hZGluZ0luZGljYXRvcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBoZWFk
aW5nKSB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVyIjsK
LQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwg
Y29udGVudCwgaGVhZGluZyk7Ci0gICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29u
dGVudCk7Ci0KLSAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKLSAgICAgICAgbG9hZGluZ0luZGljYXRvci5jbGFzc05hbWUgPSAibG9h
ZGluZy1pbmRpY2F0b3IiOwotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0g
IkxvYWRpbmdcdTIwMjYiOwotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJbmRp
Y2F0b3IpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0sCi0KLSAgICAvLyBXb3Jr
IGFyb3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVjdGVk
IHdoZW4gY29weWluZyBjb250ZW50LgotICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBtYW51
YWxseSwgdGVtcG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVuCi0g
ICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAgICBfb25Qb3Bv
dmVyQ29weTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9jdW1l
bnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCwK
LSAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAotICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgIGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVzZXJT
ZWxlY3QgIT09ICJub25lIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmls
dGVyLkZJTFRFUl9BQ0NFUFQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmlsdGVy
LkZJTFRFUl9TS0lQOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
KTsKLQotICAgICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAgICAg
ICAgICAgIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKLQotICAgICAgICBldmVu
dC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAgZXZl
bnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigpKTsK
LSAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUpCi0g
ICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0K
LSAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNv
bnRlbnQsICJqYXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIiwgaXRlcmF0aW9uLnF1ZXVlLmJ1
aWxkYm90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVXJsRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwg
dGVzdE5hbWUpKTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsK
LQotICAgICAgICBpZiAoIWl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jl
c3Npb25zKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICAgICAgbWVzc2FnZS5jbGFzc05hbWUgPSAibG9hZGluZy1mYWls
dXJlIjsKLSAgICAgICAgICAgIG1lc3NhZ2UudGV4dENvbnRlbnQgPSAiVGVzdCByZXN1bHRzIGNv
dWxkblx1MjAxOXQgYmUgbG9hZGVkIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQo
bWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciByZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRz
LnJlZ3Jlc3Npb25zOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSByZWdyZXNzaW9u
cy5sZW5ndGg7IGkgIT0gZW5kOyArK2kpIHsKLSAgICAgICAgICAgIHZhciB0ZXN0ID0gcmVncmVz
c2lvbnNbaV07Ci0gICAgICAgICAgICB2YXIgcm93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdmFyIHRlc3RQYXRoRWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC5jbGFz
c05hbWUgPSAidGVzdC1wYXRoIjsKLSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC50ZXh0Q29u
dGVudCA9IHRlc3Q7Ci0gICAgICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHRlc3RQYXRo
RWxlbWVudCk7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwot
ICAgICAgICB9Ci0KLSAgICAgICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJDb3B5
OwotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX3ByZXNlbnRQb3BvdmVy
Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKHRlc3ROYW1lLCBlbGVt
ZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0gICAgewotICAgICAgICBpZiAoaXRlcmF0aW9uLmph
dmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCi0gICAgICAgICAgICB2YXIgY29u
dGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lv
bnMoaXRlcmF0aW9uLCB0ZXN0TmFtZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFy
IGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImphdmFz
Y3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkSmF2
YVNjcmlwdENvcmVUZXN0UmVzdWx0cyh0ZXN0TmFtZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2NyaXB0
Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24sIHRlc3ROYW1lKTsKLSAgICAgICAgICAgIH0u
YmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsK
LSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVz
ZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5N
QVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hd
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZv
clJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRleHQpCi0gICAg
ewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsKLQot
ICAgICAgICAvLyBGSVhNRTogTm90aGluZyBndWFyYW50ZWVzIHRoYXQgVHJhYyBoYXMgaGlzdG9y
aWNhbCBkYXRhIGZvciB0aGVzZSByZXZpc2lvbnMuCi0gICAgICAgIHZhciBsaW5lc0ZvckNvbW1p
dHMgPSB0aGlzLl9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZShjb250ZXh0LnRyYWMsIGNvbnRl
eHQuYnJhbmNoLCBjb250ZXh0LmZpcnN0UmV2aXNpb24sIGNvbnRleHQubGFzdFJldmlzaW9uKTsK
LQotICAgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICBsaW5lLmNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci0KLSAgICAgICAgaWYgKGxpbmVzRm9yQ29t
bWl0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSAiY29tbWl0cyBz
aW5jZSBwcmV2aW91cyByZXN1bHQiOwotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChs
aW5lKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0g
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsaW5lLnRleHRDb250ZW50ID0gIm5vIGNvbW1p
dHMgdG8gIiArIGNvbnRleHQuYnJhbmNoLm5hbWUgKyAiIHNpbmNlIHByZXZpb3VzIHJlc3VsdCI7
Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxpbmUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gbGluZXNGb3JDb21taXRzLmxlbmd0aDsgKytpKQot
ICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lc0ZvckNvbW1pdHNbaV0pOwotCi0g
ICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBj
b250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRn
ZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFY
X1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCi0KLSAgICBfcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb246IGZ1
bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNJdGVyYXRpb24sIGJyYW5jaCkKLSAgICB7Ci0gICAg
ICAgIHZhciByZXBvc2l0b3J5ID0gYnJhbmNoLnJlcG9zaXRvcnk7Ci0gICAgICAgIHZhciByZXBv
c2l0b3J5TmFtZSA9IHJlcG9zaXRvcnkubmFtZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaXRl
cmF0aW9uLnJldmlzaW9uW3JlcG9zaXRvcnlOYW1lXSk7Ci0gICAgICAgIHZhciB0cmFjID0gcmVw
b3NpdG9yeS50cmFjOwotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoInNwYW4iKTsKLSAgICAgICAgY29udGVudC50ZXh0Q29udGVudCA9IHRoaXMuX2Zvcm1hdFJl
dmlzaW9uRm9yRGlzcGxheShpdGVyYXRpb24ucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVdLCByZXBv
c2l0b3J5KTsKLSAgICAgICAgY29udGVudC5jbGFzc0xpc3QuYWRkKCJyZXZpc2lvbi1udW1iZXIi
KTsKLQotICAgICAgICBpZiAoIXByZXZpb3VzSXRlcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJu
IGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFyIHByZXZpb3VzSXRlcmF0aW9uUmV2aXNpb24gPSBwcmV2
aW91c0l0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV07Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByZXZpb3VzSXRlcmF0aW9uUmV2aXNpb24pOwotICAgICAgICB2YXIgcHJldmlvdXNJ
dGVyYXRpb25SZXZpc2lvbkluZGV4ID0gdHJhYy5pbmRleE9mUmV2aXNpb24ocHJldmlvdXNJdGVy
YXRpb25SZXZpc2lvbik7Ci0gICAgICAgIGlmIChwcmV2aW91c0l0ZXJhdGlvblJldmlzaW9uSW5k
ZXggPT09IC0xKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFyIGZp
cnN0UmV2aXNpb24gPSB0cmFjLm5leHRSZXZpc2lvbihicmFuY2gubmFtZSwgcHJldmlvdXNJdGVy
YXRpb25SZXZpc2lvbik7Ci0gICAgICAgIGlmIChmaXJzdFJldmlzaW9uID09PSBUcmFjLk5PX01P
UkVfUkVWSVNJT05TKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgICAgIHZhciBm
aXJzdFJldmlzaW9uSW5kZXggPSB0cmFjLmluZGV4T2ZSZXZpc2lvbihmaXJzdFJldmlzaW9uKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoZmlyc3RSZXZpc2lvbkluZGV4ICE9PSAtMSk7Ci0KLSAg
ICAgICAgdmFyIGxhc3RSZXZpc2lvbiA9IGl0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5TmFt
ZV07Ci0gICAgICAgIHZhciBsYXN0UmV2aXNpb25JbmRleCA9IHRyYWMuaW5kZXhPZlJldmlzaW9u
KGxhc3RSZXZpc2lvbik7Ci0gICAgICAgIGlmIChsYXN0UmV2aXNpb25JbmRleCA9PT0gLTEpCi0g
ICAgICAgICAgICByZXR1cm4gY29udGVudDsKLQotICAgICAgICBpZiAoZmlyc3RSZXZpc2lvbklu
ZGV4ID4gbGFzdFJldmlzaW9uSW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLQot
ICAgICAgICB2YXIgY29udGV4dCA9IHsKLSAgICAgICAgICAgIHRyYWM6IHRyYWMsCi0gICAgICAg
ICAgICBicmFuY2g6IGJyYW5jaCwKLSAgICAgICAgICAgIGZpcnN0UmV2aXNpb246IGZpcnN0UmV2
aXNpb24sCi0gICAgICAgICAgICBsYXN0UmV2aXNpb246IGxhc3RSZXZpc2lvbiwKLSAgICAgICAg
fTsKLSAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKGNvbnRlbnQsIHRoaXMuX3ByZXNlbnRQb3Bv
dmVyRm9yUmV2aXNpb25SYW5nZS5iaW5kKHRoaXMpLCBjb250ZXh0KTsKLQotICAgICAgICByZXR1
cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXI6
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgY29udGVudCwgYWRkaXRpb25hbFRleHQsIGFkZGl0aW9uYWxU
ZXh0VGFyZ2V0KQotICAgIHsKLSAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgiZGl2Iik7Ci0gICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJwb3BvdmVyLWl0ZXJhdGlv
bi1oZWFkaW5nIjsKLQotICAgICAgICB2YXIgcXVldWVOYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgic3BhbiIpOwotICAgICAgICBxdWV1ZU5hbWUuY2xhc3NOYW1lID0gInF1ZXVlLW5hbWUi
OwotICAgICAgICBxdWV1ZU5hbWUudGV4dENvbnRlbnQgPSBpdGVyYXRpb24ucXVldWUuaWQ7Ci0g
ICAgICAgIHRpdGxlLmFwcGVuZENoaWxkKHF1ZXVlTmFtZSk7Ci0KLSAgICAgICAgdmFyIGJ1aWxk
Ym90TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgYnVpbGRib3RM
aW5rLmNsYXNzTmFtZSA9ICJidWlsZGJvdC1saW5rIjsKLSAgICAgICAgYnVpbGRib3RMaW5rLnRl
eHRDb250ZW50ID0gImJ1aWxkICMiICsgaXRlcmF0aW9uLmlkOwotICAgICAgICBidWlsZGJvdExp
bmsuaHJlZiA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRp
b24oaXRlcmF0aW9uKTsKLSAgICAgICAgYnVpbGRib3RMaW5rLnRhcmdldCA9ICJfYmxhbmsiOwot
ICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChidWlsZGJvdExpbmspOwotCi0gICAgICAgIGlmIChh
ZGRpdGlvbmFsVGV4dCkgewotICAgICAgICAgICAgdmFyIGVsZW1lbnRUeXBlID0gYWRkaXRpb25h
bFRleHRUYXJnZXQgPyAiYSIgOiAic3BhbiI7Ci0gICAgICAgICAgICB2YXIgYWRkaXRpb25hbFRl
eHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50VHlwZSk7Ci0gICAgICAg
ICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImFkZGl0aW9uYWwtdGV4dCI7
Ci0gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQudGV4dENvbnRlbnQgPSBhZGRpdGlv
bmFsVGV4dDsKLSAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsVGV4dFRhcmdldCkgewotICAgICAg
ICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC5ocmVmID0gYWRkaXRpb25hbFRleHRUYXJn
ZXQ7Ci0gICAgICAgICAgICAgICAgYWRkaXRpb25hbFRleHRFbGVtZW50LnRhcmdldCA9ICJfYmxh
bmsiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQoYWRkaXRp
b25hbFRleHRFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQodGl0bGUpOwotICAgIH0sCi0KLSAgICByZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb246IGZ1
bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5ZWRJdGVyYXRpb24pCi0gICAgewotICAg
ICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7Ci0g
ICAgICAgIHZhciBzaG91bGRBZGRQbHVzU2lnbiA9IGZhbHNlOwotICAgICAgICB2YXIgYnJhbmNo
ZXMgPSBpdGVyYXRpb24ucXVldWUuYnJhbmNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgYnJhbmNoZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmFuY2ggPSBicmFu
Y2hlc1tpXTsKLSAgICAgICAgICAgIGlmICghaXRlcmF0aW9uLnJldmlzaW9uW2JyYW5jaC5yZXBv
c2l0b3J5Lm5hbWVdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdmFy
IGNvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLCBicmFuY2gpOwotICAgICAgICAg
ICAgaWYgKHNob3VsZEFkZFBsdXNTaWduKQotICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgXHVmZjBiICIpKTsKLSAgICAgICAgICAg
IGZyYWdtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOwotICAgICAgICAgICAgc2hvdWxkQWRkUGx1
c1NpZ24gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICB9
LAotCi0gICAgX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uOiBmdW5jdGlvbihmYWlsZWRTdGVw
KQotICAgIHsKLSAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKLSAgICAgICAg
ICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1lXSAr
ICIgZmFpbGVkIjsKLSAgICAgICAgaWYgKGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ID09PSAxKQot
ICAgICAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRTdGVw
Lm5hbWVdICsgIiBmYWlsdXJlIjsKLSAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRl
c3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsdXJlcyI7Ci0gICAgfSwKLQotICAgIF90
ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhDb3VudDogZnVuY3Rpb24oZmFpbGVkU3RlcCkK
LSAgICB7Ci0gICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCi0gICAgICAgICAg
ICByZXR1cm4gdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7Ci0g
ICAgICAgIGlmIChmYWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgLy8g
RS5nLiAiNTArIGxheW91dCB0ZXN0IGZhaWx1cmVzIiwgcHJldmVudGluZyBsaW5lIGJyZWFrcyBh
cm91bmQgdGhlICIrIi4KLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3Vu
dCArICJcdWZlZmZcdWZmMGJcdTAwYTAiICsgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRp
b24oZmFpbGVkU3RlcCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRS5nLiAiMSBsYXlvdXQgdGVz
dCBmYWlsdXJlIiwgcHJldmVudGluZyBsaW5lIGJyZWFrIGFmdGVyIHRoZSBudW1iZXIuCi0gICAg
ICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdTAwYTAiICsgdGhpcy5fdGVz
dFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7Ci0gICAgfSwKLQotICAgIGFwcGVu
ZEJ1aWxkU3R5bGU6IGZ1bmN0aW9uKHF1ZXVlcywgZGVmYXVsdExhYmVsLCBhcHBlbmRGdW5jdGlv
bikKLSAgICB7Ci0gICAgICAgIHF1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAg
ICAgICAgICB2YXIgcmVsZWFzZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwot
ICAgICAgICAgICAgcmVsZWFzZUxhYmVsLmNsYXNzTGlzdC5hZGQoInF1ZXVlTGFiZWwiKTsKLSAg
ICAgICAgICAgIHJlbGVhc2VMYWJlbC50ZXh0Q29udGVudCA9IHF1ZXVlLmhlYWRpbmcgPyBxdWV1
ZS5oZWFkaW5nIDogZGVmYXVsdExhYmVsOwotICAgICAgICAgICAgcmVsZWFzZUxhYmVsLmhyZWYg
PSBxdWV1ZS5vdmVydmlld1VSTDsKLSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50YXJnZXQgPSAi
X2JsYW5rIjsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyZWxlYXNlTGFi
ZWwpOwotCi0gICAgICAgICAgICBhcHBlbmRGdW5jdGlvbi5jYWxsKHRoaXMsIHF1ZXVlKTsKLSAg
ICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVlczogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkg
eyBxdWV1ZS51cGRhdGUoKTsgfSk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZUl0ZXJhdGlvbnNBZGRl
ZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsKLQot
ICAgICAgICBldmVudC5kYXRhLmFkZGVkSXRlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZXJh
dGlvbikgewotICAgICAgICAgICAgaXRlcmF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoQnVpbGRib3RJ
dGVyYXRpb24uRXZlbnQuVXBkYXRlZCwgdGhpcy5faXRlcmF0aW9uVXBkYXRlZCwgdGhpcyk7Ci0g
ICAgICAgICAgICBpdGVyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0ZXJhdGlvbi5F
dmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMuX3VuYXV0aG9yaXplZEFjY2VzcywgdGhpcyk7
Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIF9pdGVyYXRpb25VcGRhdGVk
OiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlU29vbigpOwotICAg
IH0sCi0gICAgCi0gICAgX25ld0NvbW1pdHNSZWNvcmRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAg
ewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsKLSAgICB9LAotCi0gICAgX3VuYXV0aG9yaXpl
ZEFjY2VzczogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24o
KTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RTdGF0aWNB
bmFseXplclF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LmpzCShu
b25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxkYm90U3RhdGlj
QW5hbHl6ZXJRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgQnVpbGRib3RRdWV1
ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZXMpOwotICAgIHRoaXMudXBkYXRlKCk7Ci19OwotCi1CYXNl
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90U3RhdGljQW5hbHl6ZXJRdWV1
ZVZpZXcpOwotCi1CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RTdGF0aWNBbmFseXplclF1ZXVlVmlldywKLSAgICBf
X3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0
aGlzKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAg
ICBmdW5jdGlvbiBhcHBlbmRTdGF0aWNBbmFseXplclF1ZXVlU3RhdHVzKHF1ZXVlKQotICAgICAg
ICB7Ci0gICAgICAgICAgICB2YXIgYXBwZW5kZWRTdGF0dXMgPSBmYWxzZTsKLQotICAgICAgICAg
ICAgdmFyIGxpbWl0ID0gMjsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVldWUu
aXRlcmF0aW9ucy5sZW5ndGggJiYgbGltaXQgPiAwOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2
YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgICAgICAgICBpZiAo
IWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAtLWxpbWl0OwotCi0gICAgICAgICAg
ICAgICAgdmFyIHdpbGxIYXZlQW5vdGhlclN0YXR1c0xpbmUgPSBpICsgMSA8IHF1ZXVlLml0ZXJh
dGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMCAmJiAhaXRlcmF0aW9uLnN1Y2Nlc3NmdWw7IC8vIFRo
aXMgaXMgbm90IDEwMCUgY29ycmVjdCwgYXMgdGhlIHJlbWFpbmluZyBpdGVyYXRpb25zIG1heSBu
b3QgYmUgZmluaXNoZWQgb3IgbG9hZGVkIHlldCwgYnV0IGNsb3NlIGVub3VnaC4KLSAgICAgICAg
ICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJh
dGlvbihpdGVyYXRpb24sIChpdGVyYXRpb24ucHJvZHVjdGl2ZSAmJiB3aWxsSGF2ZUFub3RoZXJT
dGF0dXNMaW5lKSA/IGl0ZXJhdGlvbi5wcmV2aW91c1Byb2R1Y3RpdmVJdGVyYXRpb24gOiBudWxs
KTsKLQotICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qu
bGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAg
ICAgICB2YXIgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0
cmFsOwotICAgICAgICAgICAgICAgIHZhciB0ZXh0OwotCi0gICAgICAgICAgICAgICAgdmFyIGZh
aWxlZFN0ZXAgPSBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyhpdGVyYXRpb24uX2ZpcnN0RmFpbGVk
U3RlcCk7Ci0gICAgICAgICAgICAgICAgdmFyIGlzc3VlQ291bnQgPSBmYWlsZWRTdGVwLmlzc3Vl
Q291bnQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5Hb29kOwotICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IDA7Ci0gICAgICAgICAgICAg
ICAgICAgIHRleHQgPSAibm8gaXNzdWVzIGZvdW5kIjsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0dXNM
aW5lVmlld0NvbG9yID0gU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlcjsKLSAgICAgICAgICAg
ICAgICAgICAgdGV4dCA9IGl0ZXJhdGlvbi5fZmlyc3RGYWlsZWRTdGVwLm5hbWUgKyAiIGZhaWxl
ZCI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyYXRpb24uZmFpbGVkICYmIC9mYWls
ZWQgdG8gYnVpbGQvLnRlc3QoaXRlcmF0aW9uLnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24o
aXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0
YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgPSAiYnVp
bGQgZmFpbGVkIjsKLSAgICAgICAgICAgICAgICAgICAgaXNzdWVDb3VudCA9IG51bGw7Ci0gICAg
ICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNM
aW5lVmlldyhtZXNzYWdlRWxlbWVudCwgc3RhdHVzTGluZVZpZXdDb2xvciwgKHRleHQpID8gdGV4
dCA6ICJmb3VuZCAiICsgZmFpbGVkU3RlcC5pc3N1ZUNvdW50ICsgIiBpc3N1ZXMiLCBpc3N1ZUNv
dW50LCB1cmwpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0
YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0g
ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNh
bGwodGhpcywgdGhpcy5xdWV1ZXMsICdTdGF0aWMgQW5hbHl6ZXInLCBhcHBlbmRTdGF0aWNBbmFs
eXplclF1ZXVlU3RhdHVzKTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
QnVpbGRib3RUZXN0UmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTg5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFRlc3RSZXN1bHRzID0gZnVuY3Rp
b24odGVzdFN0ZXAsIHVybCkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0gICAgdGhp
cy5VUkwgPSB1cmw7Ci0KLSAgICB0aGlzLl9wYXJzZVJlc3VsdHModGVzdFN0ZXApOwotfTsKLQot
QmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFRlc3RSZXN1bHRzKTsK
LQotQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1
aWxkYm90VGVzdFJlc3VsdHMsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwK
LQotICAgIF9wYXJzZVJlc3VsdHM6IGZ1bmN0aW9uKHRlc3RTdGVwKQotICAgIHsKLSAgICAgICAg
dGhpcy5uYW1lID0gdGVzdFN0ZXAubmFtZTsKLSAgICAgICAgdGhpcy5hbGxQYXNzZWQgPSBmYWxz
ZTsKLSAgICAgICAgdGhpcy5lcnJvck9jY3VycmVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMudG9v
TWFueUZhaWx1cmVzID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQgPSAwOwot
ICAgICAgICB0aGlzLmZsYWtleUNvdW50ID0gMDsKLSAgICAgICAgdGhpcy50b3RhbExlYWtDb3Vu
dCA9IDA7Ci0gICAgICAgIHRoaXMudW5pcXVlTGVha0NvdW50ID0gMDsKLSAgICAgICAgdGhpcy5u
ZXdQYXNzZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMubWlzc2luZ0NvdW50ID0gMDsKLSAgICAg
ICAgdGhpcy5jcmFzaENvdW50ID0gMDsKLQotICAgICAgICBpZiAoIXRlc3RTdGVwLmNvbXBsZXRl
KSB7Ci0gICAgICAgICAgICAvLyBUaGUgc3RlcCBuZXZlciBldmVuIHJhbiwgb3IgaGFzbid0IGZp
bmlzaGVkIHJ1bm5pbmcuCi0gICAgICAgICAgICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmZpbmlzaGVkID0gdHJ1
ZTsKLQotICAgICAgICBpZiAoIXRlc3RTdGVwLnJlc3VsdHMgfHwgdGVzdFN0ZXAucmVzdWx0cyA9
PT0gQnVpbGRib3RJdGVyYXRpb24uU1VDQ0VTUyB8fCB0ZXN0U3RlcC5yZXN1bHRzID09PSBCdWls
ZGJvdEl0ZXJhdGlvbi5XQVJOSU5HUykgewotICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3Nl
ZC4KLSAgICAgICAgICAgIHRoaXMuYWxsUGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdCh0ZXN0U3Rl
cC5zdGF0ZV9zdHJpbmcpKQotICAgICAgICAgICAgdGhpcy50b29NYW55RmFpbHVyZXMgPSB0cnVl
OwotCi0gICAgICAgIGZ1bmN0aW9uIHJlc3VsdFN1bW1hcml6ZXIobWF0Y2hTdHJpbmcsIHN1bSwg
b3V0cHV0TGluZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU2FtcGxlIG91dHB1dExpbmU6
ICI1MyBmYWlsdXJlcyAzNyBuZXcgcGFzc2VzIDEgY3Jhc2hlcyIKLSAgICAgICAgICAgIHZhciBy
ZWdleCA9IG5ldyBSZWdFeHAoIihcXGQrKVxccyIgKyBtYXRjaFN0cmluZyk7Ci0gICAgICAgICAg
ICBtYXRjaCA9IHJlZ2V4LmV4ZWMob3V0cHV0TGluZSk7Ci0gICAgICAgICAgICBpZiAoIW1hdGNo
KSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSAvXihcZCspXHMvLmV4ZWMob3V0cHV0TGluZSk7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAg
IHJldHVybiBzdW07Ci0gICAgICAgICAgICBpZiAoIW91dHB1dExpbmUuY29udGFpbnMobWF0Y2hT
dHJpbmcpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICBpZiAoIXN1
bSB8fCBzdW0gPT09IC0xKQotICAgICAgICAgICAgICAgIHN1bSA9IDA7Ci0gICAgICAgICAgICBy
ZXR1cm4gc3VtICsgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuZmFpbHVyZUNvdW50ID0gcmVzdWx0U3VtbWFyaXplcignZmFpbCcsIG51bGwsIHRlc3RT
dGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMuZmxha2V5Q291bnQgPSByZXN1bHRTdW1t
YXJpemVyKCJmbGFrZSIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRo
aXMudG90YWxMZWFrQ291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJ0b3RhbCBsZWFrIiwgbnVsbCwg
dGVzdFN0ZXAuc3RhdGVfc3RyaW5nKTsKLSAgICAgICAgdGhpcy51bmlxdWVMZWFrQ291bnQgPSBy
ZXN1bHRTdW1tYXJpemVyKCJ1bmlxdWUgbGVhayIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmlu
Zyk7Ci0gICAgICAgIHRoaXMubmV3UGFzc2VzQ291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJuZXcg
cGFzcyIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMubWlzc2lu
Z0NvdW50ID0gcmVzdWx0U3VtbWFyaXplcigibWlzc2luZyIsIG51bGwsIHRlc3RTdGVwLnN0YXRl
X3N0cmluZyk7Ci0gICAgICAgIHRoaXMuY3Jhc2hDb3VudCA9IHJlc3VsdFN1bW1hcml6ZXIoImNy
YXNoIiwgbnVsbCwgdGVzdFN0ZXAuc3RhdGVfc3RyaW5nKTsKLSAgICAgICAgdGhpcy5pc3N1ZUNv
dW50ID0gcmVzdWx0U3VtbWFyaXplcigiaXNzdWUiLCBudWxsLCB0ZXN0U3RlcC5zdGF0ZV9zdHJp
bmcpOwotCi0gICAgICAgIGlmICghdGhpcy5mYWlsdXJlQ291bnQgJiYgIXRoaXMuZmxha3lDb3Vu
dCAmJiAhdGhpcy50b3RhbExlYWtDb3VudCAmJiAhdGhpcy51bmlxdWVMZWFrQ291bnQgJiYgIXRo
aXMubmV3UGFzc2VzQ291bnQgJiYgIXRoaXMubWlzc2luZ0NvdW50KSB7Ci0gICAgICAgICAgICAv
LyBUaGlzIHN0ZXAgZXhpdGVkIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cywgYnV0IHdlIGRp
ZG4ndCBmaW5kIGFueSBvdXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMuCi0g
ICAgICAgICAgICAvLyBTb21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4sIHRpbWVk
IG91dCBhbmQgd2FzIGtpbGxlZCBieSBidWlsZGJvdCkuCi0gICAgICAgICAgICB0aGlzLmVycm9y
T2NjdXJyZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGFkZEZ1bGxMYXlvdXRU
ZXN0UmVzdWx0czogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMubmFtZSA9PT0gImxheW91dC10ZXN0Iik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY29sbGVj
dFJlc3VsdHMoc3VidHJlZSwgcHJlZGljYXRlKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBS
ZXN1bHRzIG9iamVjdCBpcyBhIHRyaWU6Ci0gICAgICAgICAgICAvLyBkaXJlY3RvcnkKLSAgICAg
ICAgICAgIC8vICAgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAvLyAgICAgdGVzdDEuaHRtbAot
ICAgICAgICAgICAgLy8gICAgICAgZXhwZWN0ZWQ6IlBBU1MiCi0gICAgICAgICAgICAvLyAgICAg
ICBhY3R1YWw6ICJJTUFHRSIKLSAgICAgICAgICAgIC8vICAgICAgIHJlcG9ydDogIlJFR1JFU1NJ
T04iCi0gICAgICAgICAgICAvLyAgICAgdGVzdDIuaHRtbAotICAgICAgICAgICAgLy8gICAgICAg
ZXhwZWN0ZWQ6IkZBSUwiCi0gICAgICAgICAgICAvLyAgICAgICBhY3R1YWw6IlRFWFQiCi0KLSAg
ICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBz
dWJ0cmVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3VidHJlZVtrZXldOwotICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIpOwot
ICAgICAgICAgICAgICAgIHZhciBpc0luZGl2aWR1YWxUZXN0ID0gdmFsdWUuaGFzT3duUHJvcGVy
dHkoImFjdHVhbCIpICYmIHZhbHVlLmhhc093blByb3BlcnR5KCJleHBlY3RlZCIpOwotICAgICAg
ICAgICAgICAgIGlmIChpc0luZGl2aWR1YWxUZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IFBvc3NpYmxlIHZhbHVlcyBmb3IgYWN0dWFsIGFuZCBleHBlY3RlZCBrZXlzOiBQQVNTLCBGQUlM
LCBBVURJTywgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIFRJTUVPVVQsIENSQVNILCBNSVNTSU5H
LgotICAgICAgICAgICAgICAgICAgICAvLyBCb3RoIGFjdHVhbCBhbmQgZXhwZWN0ZWQgY2FuIGJl
IHNwYWNlIHNlcGFyYXRlZCBsaXN0cy4gQWN0dWFsIGNvbnRhaW5zIHR3byB2YWx1ZXMgd2hlbiBy
ZXRyeWluZyBhIGZhaWxlZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGdpdmVzIGEgZGlm
ZmVyZW50IHJlc3VsdCAocmV0cnlpbmcgbWF5IGJlIGRpc2FibGVkIGluIHRlc3RlciBjb25maWd1
cmF0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzIGZvciByZXBv
cnQga2V5ICh3aGVuIHByZXNlbnQpOiBSRUdSRVNTSU9OLCBNSVNTSU5HLCBGTEFLWS4KLQotICAg
ICAgICAgICAgICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIGl0ZW0gPSB7cGF0aDoga2V5fTsKLQotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYpOiBDcmFzaCBsb2cgVVJMIHdpbGwgYmUgaW5jb3JyZWN0
IGlmIGNyYXNoIG9ubHkgaGFwcGVuZWQgb24gcmV0cnkgKGUuZy4gIlRFWFQgQ1JBU0giKS4KLSAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBwb2ludCB0byByZXRyaWVzIHN1YmRp
cmVjdG9yeSwgYnV0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhdHRlbXB0IGZhaWxlZCBn
ZXRzIGxvc3QgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3R1YWwu
Y29udGFpbnMoIkNSQVNIIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5jcmFz
aCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFsLmNvbnRh
aW5zKCJUSU1FT1VUIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50aW1lb3V0
ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYp
OiBTaW1pbGFybHksIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBwcmVzZW50IHJlc3VsdHMg
Zm9yIHNvbWV0aGluZyBsaWtlICJUSU1FT1VUIFRFWFQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gbm90IGV2ZW4gVUkgd2lzZS4gRm9yIG5vdywgb25seSBzaG93IGEgZGlmZiBsaW5rIGlm
IHRoZSBmaXJzdCBhdHRlbXB0IGhhcyB0aGUgZGlmZi4KLSAgICAgICAgICAgICAgICAgICAgICAg
IGlmICh2YWx1ZS5hY3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiVEVYVCIpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaGFzX2RpZmYgPSB0cnVlOwotCi0gICAgICAgICAg
ICAgICAgICAgICAgICAvLyBGSVhNRSAoYnVnIDEyNzE4Nik6IEl0IGlzIHBhcnRpY3VsYXJseSB1
bmZvcnR1bmF0ZSBmb3IgaW1hZ2UgZGlmZnMsIGJlY2F1c2Ugd2UgY3VycmVudGx5IG9ubHkgY2hl
Y2sgaW1hZ2UgcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcmV0cnkgKGV4
Y2VwdCBmb3IgcmVmdGVzdHMpLCBzbyBtYW55IHRpbWVzLCB5b3Ugd2lsbCBzZWUgaW1hZ2VzIG9u
IGJ1aWxkYm90IHBhZ2UsIGJ1dCBub3Qgb24gdGhlIGRhc2hib2FyZC4KLSAgICAgICAgICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRpc3BsYXkgZXhwZWN0ZWQgbWlzbWF0
Y2ggcmVmdGVzdCBmYWlsdXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5h
Y3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiSU1BR0UiKSAmJiB2YWx1ZS5yZWZ0ZXN0X3R5
cGUgIT0gIiE9IikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmhhc19pbWFnZV9k
aWZmID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmhhc19zdGRl
cnIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5oYXNfc3RkZXJyID0gdHJ1ZTsK
LQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHZhciBuZXN0ZWRUZXN0cyA9IGNvbGxlY3RSZXN1bHRzKHZhbHVlLCBwcmVkaWNhdGUpOwot
ICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gbmVzdGVkVGVzdHMubGVu
Z3RoOyBpIDwgZW5kOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUZXN0c1tp
XS5wYXRoID0ga2V5ICsgIi8iICsgbmVzdGVkVGVzdHNbaV0ucGF0aDsKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChuZXN0ZWRUZXN0cyk7Ci0gICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9wYXRj
aDsKLQotICAgICAgICB0aGlzLnJlZ3Jlc3Npb25zID0gY29sbGVjdFJlc3VsdHMoZGF0YS50ZXN0
cywgZnVuY3Rpb24oaW5mbykgeyByZXR1cm4gaW5mb1sicmVwb3J0Il0gPT09ICJSRUdSRVNTSU9O
IiB9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fcmVncmVzc2lvbnMgPT09IHRo
aXMucmVncmVzc2lvbnMubGVuZ3RoKTsKLQotICAgICAgICB0aGlzLmZsYWt5VGVzdHMgPSBjb2xs
ZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZvWyJyZXBv
cnQiXSA9PT0gIkZMQUtZIiB9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fZmxh
a3kgPT09IHRoaXMuZmxha3lUZXN0cy5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMudGVzdHNXaXRo
TWlzc2luZ1Jlc3VsdHMgPSBjb2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZv
KSB7IHJldHVybiBpbmZvWyJyZXBvcnQiXSA9PT0gIk1JU1NJTkciIH0pOwotICAgICAgICAvLyBk
YXRhLm51bV9taXNzaW5nIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGVzdHNX
aXRoTWlzc2luZ1Jlc3VsdHMgYXJyYXksCi0gICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3QgY291
bnRzIHJlZ3Jlc3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRyeSAo
ZS5nLiAiVEVYVCBNSVNTSU5HIikuCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVtX21p
c3NpbmcgPj0gdGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwotICAgIH0sCi0K
LSAgICBhZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKLSAgICB7
Ci0gICAgICAgIHRoaXMucmVncmVzc2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWlsdXJlczsKLSAg
ICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVldWVW
aWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVy
UXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9C
dWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI2OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcgPSBmdW5j
dGlvbihxdWV1ZXMpCi17Ci0gICAgQnVpbGRib3RRdWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZXMp
OwotCi0gICAgdGhpcy5yZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1ZXMuZmlsdGVyKGZ1bmN0aW9u
KHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5kZWJ1ZyA9PT0gZmFsc2U7IH0pOwotICAgIHRoaXMuZGVi
dWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5maWx0ZXIoZnVuY3Rpb24ocXVldWUpIHsgcmV0dXJuIHF1
ZXVlLmRlYnVnID09PSB0cnVlOyB9KTsKLQotICAgIHRoaXMudXBkYXRlKCk7Ci19OwotCi1CYXNl
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3KTsK
LQotQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldywKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWVW
aWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
QnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMpOwotCi0gICAgICAg
IHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVu
ZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHF1
ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxkYm90LmlzQXV0
aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9yaXplZExp
bmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50KHF1ZXVlLCB0aGlz
Ll9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQodGhpcywgcXVldWUpKTsKLQotICAgICAg
ICAgICAgdmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhciBsaW1p
dCA9IDI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMu
bGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJhdGlv
biA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRpb24u
bG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotCi0gICAgICAgICAgICAgICAgLS1saW1pdDsKLQotICAgICAgICAgICAgICAgIHZhciB3
aWxsSGF2ZUFub3RoZXJTdGF0dXNMaW5lID0gaSArIDEgPCBxdWV1ZS5pdGVyYXRpb25zLmxlbmd0
aCAmJiBsaW1pdCA+IDAgJiYgIWl0ZXJhdGlvbi5zdWNjZXNzZnVsOyAvLyBUaGlzIGlzIG5vdCAx
MDAlIGNvcnJlY3QsIGFzIHRoZSByZW1haW5pbmcgaXRlcmF0aW9ucyBtYXkgbm90IGJlIGZpbmlz
aGVkIG9yIGxvYWRlZCB5ZXQsIGJ1dCBjbG9zZSBlbm91Z2guCi0gICAgICAgICAgICAgICAgdmFy
IG1lc3NhZ2VFbGVtZW50ID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oaXRlcmF0
aW9uLCAoaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgd2lsbEhhdmVBbm90aGVyU3RhdHVzTGluZSkg
PyBpdGVyYXRpb24ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uIDogbnVsbCk7Ci0KLSAgICAg
ICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVy
YXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBT
dGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2Qs
ICJhbGwgdGVzdHMgcGFzc2VkIiwgdW5kZWZpbmVkLCB1cmwpOwotICAgICAgICAgICAgICAgICAg
ICBsaW1pdCA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0aW9uLnByb2R1
Y3RpdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5i
dWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwg
U3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5lZCwg
dXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRUZXN0U3Rl
cHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNvbWV0aGluZyB3cm9u
ZyBoYXBwZW5lZCwgYnV0IGl0IHdhcyBub3QgYSB0ZXN0IGZhaWx1cmUuCi0gICAgICAgICAgICAg
ICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9y
SXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5E
YW5nZXIsIGl0ZXJhdGlvbi50ZXh0LCB1bmRlZmluZWQsIHVybCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChxdWV1ZS5jcmFzaGVzT25seSkgewotICAgICAgICAgICAgICAgICAgICAvLyBB
IGNyYXNoZXMtb25seSBxdWV1ZSBpcyBhIHF1ZXVlIHdoZXJlIHdlIGFyZSBvbmx5IGludGVyZXN0
ZWQgaW4gY3Jhc2hlcywgZS5nLiBhIEd1YXJkTWFsbG9jIG9yIGFuIEFTYW4gb25lLgotICAgICAg
ICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIG9ubHkgbGF5b3V0IHRlc3RzIGFyZSBzdXBwb3J0
ZWQgaW4gc3VjaC4KLSAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dFRlc3RSZXN1bHRzID0g
aXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICBpZiAoIWxh
eW91dFRlc3RSZXN1bHRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXN0cyBkaWQg
bm90IHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVl
dWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2VF
bGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4dCwgdW5k
ZWZpbmVkLCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheW91dFRlc3RS
ZXN1bHRzLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLkJhZCwgImZhaWx1cmUgbGltaXQgZXhjZWVkZWQiLCB1bmRlZmluZWQsIGl0ZXJhdGlv
bi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRp
b24pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMu
c3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVn
cmVzc2lvbnMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgfSBl
bHNlIGlmIChsYXlvdXRUZXN0UmVzdWx0cy5lcnJvck9jY3VycmVkKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVS
TEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5b3V0VGVzdFJlc3VsdHMuY3Jhc2hDb3VudCkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJv
dC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0
YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCAibm8gY3Jhc2hlcyBmb3VuZCIsIHVuZGVmaW5lZCwg
dXJsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gMDsKLSAgICAgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcg
U3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQs
IGxheW91dFRlc3RSZXN1bHRzLmNyYXNoQ291bnQgPT09IDEgPyAiY3Jhc2ggZm91bmQiIDogImNy
YXNoZXMgZm91bmQiLCBsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENvdW50LCBpdGVyYXRpb24ucXVl
dWUuYnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Np
b25zLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMubGVuZ3RoID09
PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsZWRTdGVwID0gaXRlcmF0aW9uLmZh
aWxlZFRlc3RTdGVwc1swXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZhaWxlZFN0ZXAubmFt
ZSA9PT0gImxheW91dC10ZXN0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1
cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCksIGZh
aWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzID8gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAiXHVm
ZjBiIiA6IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qu
bGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1l
bnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zLmJpbmQodGhp
cyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoLyg/PS4qdGVz
dCkoPz0uKmpzYykvLnRlc3QoZmFpbGVkU3RlcC5uYW1lKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24o
ZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVp
bGRib3QuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCBm
YWlsZWRTdGVwLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJh
Y2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JK
YXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAubmFtZSks
IGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFpbGVkU3RlcC5u
YW1lID09PSAiZGFzaGJvYXJkLXRlc3RzIikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3Rl
cCksIHVuZGVmaW5lZCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmRhc2hib2FyZFRlc3RSZXN1
bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICAgICAgICAgICAgICAgICAg
bmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVz
ZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZh
ciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVW
aWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxlZFN0
ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50IDog
dW5kZWZpbmVkLCBmYWlsZWRTdGVwLlVSTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcg
UG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQ
b3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlcy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwotICAg
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxG
b3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWx1cmVE
ZXNjcmlwdGlvbnMgPSBpdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzLm1hcChmdW5jdGlvbihmYWls
ZWRTdGVwKSB7IHJldHVybiB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhDb3Vu
dChmYWlsZWRTdGVwKSB9LCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9
IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVz
LkJhZCwgZmFpbHVyZURlc2NyaXB0aW9ucy5qb2luKCIsICIpLCB1bmRlZmluZWQsIHVybCk7Ci0g
ICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxl
RWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JHZW5lcmljVGVzdEZhaWx1cmVzLmJpbmQo
dGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlm
ICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0
YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJs
YXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5k
Q2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5yZWxlYXNlUXVldWVzLCAi
UmVsZWFzZSIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuYXBwZW5k
QnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMuZGVidWdRdWV1ZXMsICJEZWJ1ZyIsIGFwcGVuZEJ1
aWxkZXJRdWV1ZVN0YXR1cyk7Ci0gICAgfSwKLQotICAgIF9wb3BvdmVyQ29udGVudEZvckxheW91
dFRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdmFy
IGhhc1Rlc3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9PSAidW5kZWZpbmVkIjsKLQot
ICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAg
ICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQs
ICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3Bv
dmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGlmICghaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRz
LnJlZ3Jlc3Npb25zKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbWVzc2FnZS5jbGFzc05hbWUgPSAibG9hZGlu
Zy1mYWlsdXJlIjsKLSAgICAgICAgICAgIG1lc3NhZ2UudGV4dENvbnRlbnQgPSAiVGVzdCByZXN1
bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICAgICAgfQot
Ci0gICAgICAgIGZ1bmN0aW9uIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCBjbGFzc05h
bWUsIHRleHQsIHVybCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGxpbmtFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGlua0VsZW1lbnQuY2xh
c3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICAgICAgbGlua0VsZW1lbnQudGV4dENvbnRlbnQg
PSB0ZXh0OwotICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9IHVybDsKLSAgICAgICAgICAg
IGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgcm93RWxlbWVudC5h
cHBlbmRDaGlsZChsaW5rRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBh
ZGRGYWlsdXJlSW5mb1RleHQocm93RWxlbWVudCwgY2xhc3NOYW1lLCB0ZXh0KQotICAgICAgICB7
Ci0gICAgICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7Ci0gICAgICAgICAgICBzcGFuRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0g
ICAgICAgICAgICBzcGFuRWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgICAgICBy
b3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAg
IHZhciBzb3J0ZWRSZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5sYXlvdXRUZXN0UmVzdWx0cy5yZWdy
ZXNzaW9ucy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gKGEucGF0aCA9PT0g
Yi5wYXRoKSA/IDAgOiAoYS5wYXRoID4gYi5wYXRoKSA/IDEgOiAtMTsgfSk7Ci0KLSAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGVuZCA9IHNvcnRlZFJlZ3Jlc3Npb25zLmxlbmd0aDsgaSAhPSBlbmQ7
ICsraSkgewotICAgICAgICAgICAgdmFyIHRlc3QgPSBzb3J0ZWRSZWdyZXNzaW9uc1tpXTsKLQot
ICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5xdWV1ZS5jcmFzaGVzT25seSAmJiAhdGVzdC5jcmFz
aCAmJiAhaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnRvb01hbnlGYWlsdXJlcykKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAgICAgICAgICAgdmFyIHRlc3RQYXRoRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRlc3RQ
YXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRoIjsKLSAgICAgICAgICAgIHRlc3RQYXRo
RWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3QucGF0aDsKLSAgICAgICAgICAgIHJvd0VsZW1lbnQu
YXBwZW5kQ2hpbGQodGVzdFBhdGhFbGVtZW50KTsKLQotICAgICAgICAgICAgaWYgKHRlc3QuY3Jh
c2gpCi0gICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJmYWls
dXJlLWtpbmQtaW5kaWNhdG9yIiwgImNyYXNoIiwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90Lmxh
eW91dFRlc3RDcmFzaExvZ1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0aCkpOwot
Ci0gICAgICAgICAgICBpZiAodGVzdC50aW1lb3V0KQotICAgICAgICAgICAgICAgIGFkZEZhaWx1
cmVJbmZvVGV4dChyb3dFbGVtZW50LCAiZmFpbHVyZS1raW5kLWluZGljYXRvciIsICJ0aW1lb3V0
Iik7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0Lmhhc19kaWZmKSB7Ci0gICAgICAgICAgICAgICAg
YWRkRmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJhZGRpdGlvbmFsLWxpbmsiLCAiZGlmZiIs
IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0RGlmZlVSTEZvckl0ZXJhdGlvbihp
dGVyYXRpb24sIHRlc3QucGF0aCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5o
YXNQcmV0dHlQYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5rKHJv
d0VsZW1lbnQsICJhZGRpdGlvbmFsLWxpbmsiLCAicHJldHR5XHhhMGRpZmYiLCBpdGVyYXRpb24u
cXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFByZXR0eURpZmZVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uLCB0ZXN0LnBhdGgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRlc3Qu
aGFzX2ltYWdlX2RpZmYpIHsKLSAgICAgICAgICAgICAgICBhZGRGYWlsdXJlSW5mb0xpbmsocm93
RWxlbWVudCwgImFkZGl0aW9uYWwtbGluayIsICJpbWFnZXMiLCBpdGVyYXRpb24ucXVldWUuYnVp
bGRib3QubGF5b3V0VGVzdEltYWdlc1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0
aCkpOwotICAgICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCAiYWRk
aXRpb25hbC1saW5rIiwgImltYWdlXHhhMGRpZmYiLCBpdGVyYXRpb24ucXVldWUuYnVpbGRib3Qu
bGF5b3V0VGVzdEltYWdlRGlmZlVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0aCkp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGVzdC5oYXNfc3RkZXJyKQotICAg
ICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCAiYWRkaXRpb25hbC1s
aW5rIiwgInN0ZGVyciIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0U3RkZXJy
VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgdGVzdC5wYXRoKSk7Ci0KLSAgICAgICAgICAgIGlm
IChoYXNUZXN0SGlzdG9yeSkKLSAgICAgICAgICAgICAgICBhZGRGYWlsdXJlSW5mb0xpbmsocm93
RWxlbWVudCwgInRlc3QtaGlzdG9yeS1saW5rIiwgImhpc3RvcnkiLCB0ZXN0SGlzdG9yeS5oaXN0
b3J5UGFnZVVSTEZvclRlc3QodGVzdC5wYXRoKSk7Ci0KLSAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kQ2hpbGQocm93RWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb250ZW50Lm9uY29w
eSA9IHRoaXMuX29uUG9wb3ZlckNvcHk7Ci0gICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0s
Ci0KLSAgICBfcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9u
KGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChpdGVyYXRp
b24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCi0gICAgICAgICAgICB2YXIgY29udGVu
dCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJhdGlv
bik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9jcmVh
dGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0ZXN0IGZhaWx1cmVzIik7Ci0K
LSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJlc3VsdHMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRG
b3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKLSAgICAgICAgICAgIH0uYmluZCh0
aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0
RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAg
IHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0
LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERh
c2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfcHJlc2VudFBvcG92ZXJGb3JHZW5lcmlj
VGVzdEZhaWx1cmVzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0gICAg
ewotICAgICAgICBmdW5jdGlvbiBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIHVybCkgewotICAgICAg
ICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgICAg
ICBsaW5lLmNsYXNzTmFtZSA9ICJmYWlsaW5nLXRlc3Qta2luZC1zdW1tYXJ5IjsKLSAgICAgICAg
ICAgIGxpbmUuaHJlZiA9IHVybDsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBtZXNz
YWdlOwotICAgICAgICAgICAgbGluZS50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQobGluZSk7ICAgICAgICAgICAgCi0gICAgICAgIH0KLQotICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBj
b250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAgdGhp
cy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQpOwotICAg
ICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGl0ZXJh
dGlvbi5mYWlsZWRUZXN0U3RlcHMuZm9yRWFjaChmdW5jdGlvbihmYWlsZWRTdGVwKSB7Ci0gICAg
ICAgICAgICBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAibGF5b3V0LXRlc3QiKQotICAgICAgICAg
ICAgICAgIGFkZFJlc3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRo
Q291bnQoZmFpbGVkU3RlcCksIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVz
dWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGZh
aWxlZFN0ZXAubmFtZSA9PT0gImRhc2hib2FyZC10ZXN0cyIpCi0gICAgICAgICAgICAgICAgYWRk
UmVzdWx0S2luZCh0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVwKSwg
aXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmRhc2hib2FyZFRlc3RSZXN1bHRzVVJMRm9ySXRlcmF0
aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFkZFJl
c3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQoZmFpbGVk
U3RlcCksIGZhaWxlZFN0ZXAuVVJMKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgdmFy
IHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3Vu
ZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7Ci0g
ICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBE
YXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJv
YXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL1NjcmlwdHMvRGFzaGJvYXJkLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotRGFzaGJvYXJkID0gewotICAgIFBsYXRmb3JtOiB7Ci0gICAgICAg
IG1hY09TQmlnU3VyOiB7IG5hbWU6ICJtYWNvcy1iaWdzdXIiLCByZWFkYWJsZU5hbWU6ICJtYWNP
UyBCaWcgU3VyIiwgb3JkZXI6IDEgfSwKLSAgICAgICAgbWFjT1NDYXRhbGluYTogeyBuYW1lOiAi
bWFjb3MtY2F0YWxpbmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBDYXRhbGluYSIsIG9yZGVyOiAy
IH0sCi0gICAgICAgIG1hY09TTW9qYXZlOiB7IG5hbWU6ICJtYWNvcy1tb2phdmUiLCByZWFkYWJs
ZU5hbWU6ICJtYWNPUyBNb2phdmUiLCBvcmRlcjogMyB9LAotICAgICAgICBtYWNPU0hpZ2hTaWVy
cmE6IHsgbmFtZTogIm1hY29zLWhpZ2hzaWVycmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBIaWdo
IFNpZXJyYSIsIG9yZGVyOiA0IH0sCi0gICAgICAgIGlPUzE0U2ltdWxhdG9yOiB7IG5hbWU6ICJp
b3Mtc2ltdWxhdG9yLTE0IiwgcmVhZGFibGVOYW1lOiAiaU9TIDE0IFNpbXVsYXRvciIsIG9yZGVy
OiAyMCB9LAotICAgICAgICBpT1MxNERldmljZTogeyBuYW1lOiAiaW9zLTE0IiwgcmVhZGFibGVO
YW1lOiAiaU9TIDE0Iiwgb3JkZXI6IDI1IH0sCi0gICAgICAgIHR2T1MxNFNpbXVsYXRvcjogeyBu
YW1lOiAidHZvcy1zaW11bGF0b3ItMTQiLCByZWFkYWJsZU5hbWU6ICJUdk9TIFNpbXVsYXRvciAx
NCIsIG9yZGVyOiAyNiB9LAotICAgICAgICB0dk9TMTREZXZpY2U6IHsgbmFtZTogInR2b3MtMTQi
LCByZWFkYWJsZU5hbWU6ICJUdk9TIDE0Iiwgb3JkZXI6IDI3IH0sCi0gICAgICAgIHdhdGNoT1M3
U2ltdWxhdG9yOiB7IG5hbWU6ICJ3YXRjaG9zLXNpbXVsYXRvci03IiwgcmVhZGFibGVOYW1lOiAi
V2F0Y2hPUyBTaW11bGF0b3IgNyIsIG9yZGVyOiAyOCB9LAotICAgICAgICB3YXRjaE9TN0Rldmlj
ZTogeyBuYW1lOiAid2F0Y2hvcy03IiwgcmVhZGFibGVOYW1lOiAiV2F0Y2hPUyA3Iiwgb3JkZXI6
IDI5IH0sCi0gICAgICAgIFdpbmRvd3MxMDogeyBuYW1lOiAid2luZG93cy0xMCIsIHJlYWRhYmxl
TmFtZTogIldpbmRvd3MgMTAiLCBvcmRlcjogMzAgfSwKLSAgICAgICAgV2luQ2Fpcm86IHsgbmFt
ZTogIndpbmNhaXJvLXdpbmRvd3MtMTAiLCByZWFkYWJsZU5hbWU6ICJXaW5DYWlybyIsIG9yZGVy
OiA1MCB9LAotICAgICAgICBMaW51eFdQRTogeyBuYW1lIDogImxpbnV4LXdwZSIsIHJlYWRhYmxl
TmFtZTogIkxpbnV4IFdQRSIsIG9yZGVyOiA5MCB9LAotICAgICAgICBMaW51eEdUSzogeyBuYW1l
IDogImxpbnV4LWd0ayIsIHJlYWRhYmxlTmFtZTogIkxpbnV4IEdUSyIsIG9yZGVyOiA5MSB9LAot
ICAgICAgICBMaW51eEpTQ09ubHk6IHsgbmFtZSA6ICJsaW51eC1qc2Nvbmx5IiwgcmVhZGFibGVO
YW1lOiAiTGludXggSlNDT25seSIsIG9yZGVyOiA5MiB9LAotICAgIH0sCi0gICAgQnJhbmNoOiB7
fSwKLSAgICBSZXBvc2l0b3J5OiB7Ci0gICAgICAgIE9wZW5Tb3VyY2U6IHsgbmFtZTogIm9wZW5T
b3VyY2UiLCBpc1NWTjogdHJ1ZSwgb3JkZXI6IDAgfSwKLSAgICB9LAotICAgIGdldCBzb3J0ZWRQ
bGF0Zm9ybXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMpCi0g
ICAgICAgICAgICB0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMgPSBzb3J0RGljdGlvbmFyaWVzQnlPcmRl
cihEYXNoYm9hcmQuUGxhdGZvcm0pOwotICAgICAgICByZXR1cm4gdGhpcy5fc29ydGVkUGxhdGZv
cm1zOwotICAgIH0sCi0gICAgZ2V0IHNvcnRlZFJlcG9zaXRvcmllcygpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuX3NvcnRlZFJlcG9zaXRvcmllcykKLSAgICAgICAgICAgIHRoaXMuX3NvcnRl
ZFJlcG9zaXRvcmllcyA9IHNvcnREaWN0aW9uYXJpZXNCeU9yZGVyKERhc2hib2FyZC5SZXBvc2l0
b3J5KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFJlcG9zaXRvcmllczsKLSAgICB9LAot
fTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Rhc2hib2FyZC5q
cwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZl
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5LmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5LmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9HZW9tZXRyeS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIyMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotRGFzaGJvYXJkLlBvaW50ID0gZnVuY3Rpb24oeCwgeSkKLXsKLSAg
ICB0aGlzLnggPSB4IHx8IDA7Ci0gICAgdGhpcy55ID0geSB8fCAwOwotfTsKLQotRGFzaGJvYXJk
LlBvaW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogRGFzaGJvYXJkLlBvaW50LAot
Ci0gICAgdG9TdHJpbmcgOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIkRhc2hi
b2FyZC5Qb2ludFsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOwotICAgIH0sCi0KLSAg
ICBjb3B5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5Q
b2ludCh0aGlzLngsIHRoaXMueSk7Ci0gICAgfSwKLQotICAgIGVxdWFsczogZnVuY3Rpb24oYW5v
dGhlclBvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLnggPT09IGFub3RoZXJQb2lu
dC54ICYmIHRoaXMueSA9PT0gYW5vdGhlclBvaW50LnkpOwotICAgIH0KLX07Ci0KLURhc2hib2Fy
ZC5TaXplID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCkKLXsKLSAgICB0aGlzLndpZHRoID0gd2lk
dGggfHwgMDsKLSAgICB0aGlzLmhlaWdodCA9IGhlaWdodCB8fCAwOwotfTsKLQotRGFzaGJvYXJk
LlNpemUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9hcmQuU2l6ZSwKLQot
ICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIkRhc2hib2Fy
ZC5TaXplWyIgKyB0aGlzLndpZHRoICsgIiwiICsgdGhpcy5oZWlnaHQgKyAiXSI7Ci0gICAgfSwK
LQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRGFzaGJv
YXJkLlNpemUodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwotICAgIH0sCi0KLSAgICBlcXVhbHM6
IGZ1bmN0aW9uKGFub3RoZXJTaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLndpZHRo
ID09PSBhbm90aGVyU2l6ZS53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gYW5vdGhlclNpemUuaGVp
Z2h0KTsKLSAgICB9Ci19OwotCi1EYXNoYm9hcmQuU2l6ZS5aRVJPX1NJWkUgPSBuZXcgRGFzaGJv
YXJkLlNpemUoMCwgMCk7Ci0KLQotRGFzaGJvYXJkLlJlY3QgPSBmdW5jdGlvbih4LCB5LCB3aWR0
aCwgaGVpZ2h0KQotewotICAgIHRoaXMub3JpZ2luID0gbmV3IERhc2hib2FyZC5Qb2ludCh4IHx8
IDAsIHkgfHwgMCk7Ci0gICAgdGhpcy5zaXplID0gbmV3IERhc2hib2FyZC5TaXplKHdpZHRoIHx8
IDAsIGhlaWdodCB8fCAwKTsKLX07Ci0KLURhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVj
dCA9IGZ1bmN0aW9uKGNsaWVudFJlY3QpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQuUmVj
dChjbGllbnRSZWN0LmxlZnQsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBjbGll
bnRSZWN0LmhlaWdodCk7Ci19OwotCi1EYXNoYm9hcmQuUmVjdC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IERhc2hib2FyZC5SZWN0LAotCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiAiRGFzaGJvYXJkLlJlY3RbIiArIFt0aGlzLm9yaWdpbi54
LCB0aGlzLm9yaWdpbi55LCB0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLmpvaW4o
IiwgIikgKyAiXSI7Ci0gICAgfSwKLQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgRGFzaGJvYXJkLlJlY3QodGhpcy5vcmlnaW4ueCwgdGhpcy5vcmlnaW4u
eSwgdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0KTsKLSAgICB9LAotCi0gICAgZXF1
YWxzOiBmdW5jdGlvbihhbm90aGVyUmVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAodGhpcy5v
cmlnaW4uZXF1YWxzKGFub3RoZXJSZWN0Lm9yaWdpbikgJiYgdGhpcy5zaXplLmVxdWFscyhhbm90
aGVyUmVjdC5zaXplKSk7Ci0gICAgfSwKLQotICAgIGluc2V0OiBmdW5jdGlvbihpbnNldHMpCi0g
ICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5SZWN0KAotICAgICAgICAgICAgdGhp
cy5vcmlnaW4ueCArIGluc2V0cy5sZWZ0LAotICAgICAgICAgICAgdGhpcy5vcmlnaW4ueSArIGlu
c2V0cy50b3AsCi0gICAgICAgICAgICB0aGlzLnNpemUud2lkdGggLSBpbnNldHMubGVmdCAtIGlu
c2V0cy5yaWdodCwKLSAgICAgICAgICAgIHRoaXMuc2l6ZS5oZWlnaHQgLSBpbnNldHMudG9wIC0g
aW5zZXRzLmJvdHRvbQotICAgICAgICApOwotICAgIH0sCi0KLSAgICBwYWQ6IGZ1bmN0aW9uKHBh
ZGRpbmcpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5SZWN0KAotICAgICAg
ICAgICAgdGhpcy5vcmlnaW4ueCAtIHBhZGRpbmcsCi0gICAgICAgICAgICB0aGlzLm9yaWdpbi55
IC0gcGFkZGluZywKLSAgICAgICAgICAgIHRoaXMuc2l6ZS53aWR0aCArIHBhZGRpbmcgKiAyLAot
ICAgICAgICAgICAgdGhpcy5zaXplLmhlaWdodCArIHBhZGRpbmcgKiAyCi0gICAgICAgICk7Ci0g
ICAgfSwKLQotICAgIG1pblg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Lm9yaWdpbi54OwotICAgIH0sCi0KLSAgICBtaW5ZOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5vcmlnaW4ueTsKLSAgICB9LAotCi0gICAgbWlkWDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luLnggKyAodGhpcy5zaXplLndpZHRoIC8g
Mik7Ci0gICAgfSwKLQotICAgIG1pZFk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLm9yaWdpbi55ICsgKHRoaXMuc2l6ZS5oZWlnaHQgLyAyKTsKLSAgICB9LAotCi0gICAg
bWF4WDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luLnggKyB0
aGlzLnNpemUud2lkdGg7Ci0gICAgfSwKLQotICAgIG1heFk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi55ICsgdGhpcy5zaXplLmhlaWdodDsKLSAgICB9LAot
Ci0gICAgaW50ZXJzZWN0aW9uV2l0aFJlY3Q6IGZ1bmN0aW9uKHJlY3QpCi0gICAgewotICAgICAg
ICB2YXIgeDEgPSBNYXRoLm1heCh0aGlzLm1pblgoKSwgcmVjdC5taW5YKCkpOwotICAgICAgICB2
YXIgeDIgPSBNYXRoLm1pbih0aGlzLm1heFgoKSwgcmVjdC5tYXhYKCkpOwotICAgICAgICBpZiAo
eDEgPiB4MikKLSAgICAgICAgICAgIHJldHVybiBEYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1Q7Ci0g
ICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBuZXcgRGFzaGJvYXJkLlJlY3Q7Ci0gICAgICAgIGlu
dGVyc2VjdGlvbi5vcmlnaW4ueCA9IHgxOwotICAgICAgICBpbnRlcnNlY3Rpb24uc2l6ZS53aWR0
aCA9IHgyIC0geDE7Ci0gICAgICAgIHZhciB5MSA9IE1hdGgubWF4KHRoaXMubWluWSgpLCByZWN0
Lm1pblkoKSk7Ci0gICAgICAgIHZhciB5MiA9IE1hdGgubWluKHRoaXMubWF4WSgpLCByZWN0Lm1h
eFkoKSk7Ci0gICAgICAgIGlmICh5MSA+IHkyKQotICAgICAgICAgICAgcmV0dXJuIERhc2hib2Fy
ZC5SZWN0LlpFUk9fUkVDVDsKLSAgICAgICAgaW50ZXJzZWN0aW9uLm9yaWdpbi55ID0geTE7Ci0g
ICAgICAgIGludGVyc2VjdGlvbi5zaXplLmhlaWdodCA9IHkyIC0geTE7Ci0gICAgICAgIHJldHVy
biBpbnRlcnNlY3Rpb247Ci0gICAgfSwKLQotICAgIGNvbnRhaW5zUG9pbnQ6IGZ1bmN0aW9uKHBv
aW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBvaW50LnggPj0gdGhpcy5taW5YKCkgJiYgcG9p
bnQueCA8PSB0aGlzLm1heFgoKQotICAgICAgICAgICAgJiYgcG9pbnQueSA+PSB0aGlzLm1pblko
KSAmJiBwb2ludC55IDw9IHRoaXMubWF4WSgpOwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5SZWN0
LlpFUk9fUkVDVCA9IG5ldyBEYXNoYm9hcmQuUmVjdCgwLCAwLCAwLCAwKTsKLQotCi1EYXNoYm9h
cmQuRWRnZUluc2V0cyA9IGZ1bmN0aW9uKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkKLXsKLSAg
ICBjb25zb2xlLmFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSAxIHx8IGFyZ3VtZW50cy5sZW5n
dGggPT09IDQpOwotCi0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKLSAgICAgICAg
dGhpcy50b3AgPSB0b3A7Ci0gICAgICAgIHRoaXMucmlnaHQgPSB0b3A7Ci0gICAgICAgIHRoaXMu
Ym90dG9tID0gdG9wOwotICAgICAgICB0aGlzLmxlZnQgPSB0b3A7Ci0gICAgfSBlbHNlIGlmIChh
cmd1bWVudHMubGVuZ3RoID09PSA0KSB7Ci0gICAgICAgIHRoaXMudG9wID0gdG9wOwotICAgICAg
ICB0aGlzLnJpZ2h0ID0gcmlnaHQ7Ci0gICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tOwotICAg
ICAgICB0aGlzLmxlZnQgPSBsZWZ0OwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5FZGdlSW5zZXRz
LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogRGFzaGJvYXJkLkVkZ2VJbnNldHMsCi0K
LSAgICBlcXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJJbnNldCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAodGhpcy50b3AgPT09IGFub3RoZXJJbnNldC50b3AgJiYgdGhpcy5yaWdodCA9PT0gYW5vdGhl
ckluc2V0LnJpZ2h0ICYmCi0gICAgICAgICAgICAgICAgdGhpcy5ib3R0b20gPT09IGFub3RoZXJJ
bnNldC5ib3R0b20gJiYgdGhpcy5sZWZ0ID09PSBhbm90aGVySW5zZXQubGVmdCk7Ci0gICAgfSwK
LQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRGFzaGJv
YXJkLkVkZ2VJbnNldHModGhpcy50b3AsIHRoaXMucmlnaHQsIHRoaXMuYm90dG9tLCB0aGlzLmxl
ZnQpOwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5SZWN0RWRnZSA9IHsKLSAgICBNSU5fWCA6IDAs
Ci0gICAgTUlOX1kgOiAxLAotICAgIE1BWF9YIDogMiwKLSAgICBNQVhfWSA6IDMKLX07CgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9HZW9tZXRyeS5qcwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCww
ICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3M7Ci12
YXIgYnVpbGRib3RzID0gWyBuZXcgV2ViS2l0QnVpbGRib3QgXTsKLURhc2hib2FyZC5SZXBvc2l0
b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBUcmFjKCJodHRwczovL3RyYWMud2Via2l0Lm9yZy8i
KTsKLWlmICh0eXBlb2YgQnVnemlsbGEgIT09ICJ1bmRlZmluZWQiKQotICAgIHZhciBidWd6aWxs
YSA9IG5ldyBCdWd6aWxsYTsKLWlmICh0eXBlb2YgQnViYmxlUXVldWVTZXJ2ZXIgIT09ICJ1bmRl
ZmluZWQiKQotICAgIHZhciBidWJibGVRdWV1ZVNlcnZlciA9IG5ldyBCdWJibGVRdWV1ZVNlcnZl
cjsKLWlmICh0eXBlb2YgVGVzdEhpc3RvcnkgIT09ICJ1bmRlZmluZWQiKQotICAgIHZhciB0ZXN0
SGlzdG9yeSA9IG5ldyBUZXN0SGlzdG9yeTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01h
aW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDMzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIGhhc0J1YmJsZXMgPSB0
eXBlb2YgYnViYmxlUXVldWVTZXJ2ZXIgIT0gInVuZGVmaW5lZCI7Ci12YXIgQnViYmxlc0NhdGVn
b3J5ID0gImJ1YmJsZXMiOwotCi1pZiAoIWNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1
aWxkVHlwZSkKLSAgICB2YXIgY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBl
ID0ge307Ci12YXIgcGxhdGZvcm1zQnlGYW1pbHkgPSB7fTsKLQotZm9yICh2YXIgaSA9IDA7IGkg
PCBidWlsZGJvdHMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgYnVpbGRib3QgPSBidWlsZGJvdHNb
aV07Ci0gICAgZm9yICh2YXIgaWQgaW4gYnVpbGRib3QucXVldWVzSW5mbykgewotICAgICAgICBp
ZiAoYnVpbGRib3QucXVldWVzSW5mb1tpZF0uY29tYmluZWRRdWV1ZXMpIHsKLSAgICAgICAgICAg
IHZhciBpbmZvID0gYnVpbGRib3QucXVldWVzSW5mb1tpZF07Ci0gICAgICAgICAgICB2YXIgcXVl
dWUgPSB7Ci0gICAgICAgICAgICAgICAgaWQ6IGlkLAotICAgICAgICAgICAgICAgIGJyYW5jaGVz
OiBpbmZvLmJyYW5jaGVzLAotICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBpbmZvLnBsYXRmb3Jt
Lm5hbWUsCi0gICAgICAgICAgICAgICAgaGVhZGluZzogaW5mby5oZWFkaW5nLAotICAgICAgICAg
ICAgICAgIGJ1aWxkZXI6IGluZm8uYnVpbGRlciwKLSAgICAgICAgICAgICAgICBjb21iaW5lZFF1
ZXVlczogT2JqZWN0LmtleXMoaW5mby5jb21iaW5lZFF1ZXVlcykubWFwKGZ1bmN0aW9uKGNvbWJp
bmVkUXVldWVJRCkgeyByZXR1cm4gYnVpbGRib3QucXVldWVzW2NvbWJpbmVkUXVldWVJRF07IH0p
LAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXIgcXVldWUg
PSBidWlsZGJvdC5xdWV1ZXNbaWRdOwotCi0gICAgICAgIHZhciBwbGF0Zm9ybU5hbWUgPSBxdWV1
ZS5wbGF0Zm9ybTsKLSAgICAgICAgdmFyIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRRdWV1ZXNCeVBs
YXRmb3JtQW5kQnVpbGRUeXBlW3BsYXRmb3JtTmFtZV07Ci0gICAgICAgIGlmICghcGxhdGZvcm0p
Ci0gICAgICAgICAgICBwbGF0Zm9ybSA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1
aWxkVHlwZVtwbGF0Zm9ybU5hbWVdID0ge307Ci0gICAgICAgIGlmICghcGxhdGZvcm0uYnVpbGRl
cnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IFtdOwotCi0gICAgICAgIHZhciBj
YXRlZ29yeU5hbWU7Ci0gICAgICAgIGlmICgiY29tYmluZWRRdWV1ZXMiIGluIHF1ZXVlKQotICAg
ICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICAgICAgY2F0ZWdvcnlOYW1l
ID0gImJ1aWxkZXJDb21iaW5lZFF1ZXVlcyI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgY2F0ZWdvcnlOYW1lID0gIm90aGVyQ29tYmluZWRRdWV1ZXMiCi0gICAgICAgIGVsc2Ug
aWYgKHF1ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAiYnVpbGRlcnMi
OwotICAgICAgICBlbHNlIGlmIChxdWV1ZS50ZXN0ZXIpCi0gICAgICAgICAgICBjYXRlZ29yeU5h
bWUgPSBxdWV1ZS50ZXN0Q2F0ZWdvcnk7Ci0gICAgICAgIGVsc2UgaWYgKHF1ZXVlLnBlcmZvcm1h
bmNlKQotICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gInBlcmZvcm1hbmNlIjsKLSAgICAgICAg
ZWxzZSBpZiAocXVldWUubGVha3MpCi0gICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAibGVha3Mi
OwotICAgICAgICBlbHNlIGlmIChxdWV1ZS5zdGF0aWNBbmFseXplcikKLSAgICAgICAgICAgIGNh
dGVnb3J5TmFtZSA9ICJzdGF0aWNBbmFseXplciI7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoIlVua25vd24gcXVldWUgdHlwZS4iKTsKLSAgICAgICAgICAgIGNv
bnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgY2F0ZWdvcnkgPSBwbGF0Zm9ybVtjYXRlZ29y
eU5hbWVdOwotICAgICAgICBpZiAoIWNhdGVnb3J5KQotICAgICAgICAgICAgY2F0ZWdvcnkgPSBw
bGF0Zm9ybVtjYXRlZ29yeU5hbWVdID0gW107Ci0KLSAgICAgICAgY2F0ZWdvcnkucHVzaChxdWV1
ZSk7Ci0gICAgfQotfQotCi1pZiAoaGFzQnViYmxlcykgewotICAgIGZvciAodmFyIGlkIGluIGJ1
YmJsZVF1ZXVlU2VydmVyLnF1ZXVlcykgewotICAgICAgICB2YXIgcXVldWUgPSBidWJibGVRdWV1
ZVNlcnZlci5xdWV1ZXNbaWRdOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1
ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dOwotICAgICAgICBpZiAo
IXBsYXRmb3JtKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVlc0J5UGxh
dGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dID0ge307Ci0gICAgICAgIGlmICghcGxh
dGZvcm0uYnVpbGRlcnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IFtdOwotCi0g
ICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBCdWJibGVzQ2F0ZWdvcnk7Ci0KLSAgICAgICAgcGxh
dGZvcm1RdWV1ZXMgPSBwbGF0Zm9ybVtjYXRlZ29yeU5hbWVdOwotICAgICAgICBpZiAoIXBsYXRm
b3JtUXVldWVzKQotICAgICAgICAgICAgcGxhdGZvcm1RdWV1ZXMgPSBwbGF0Zm9ybVtjYXRlZ29y
eU5hbWVdID0gW107Ci0KLSAgICAgICAgcGxhdGZvcm1RdWV1ZXMucHVzaChxdWV1ZSk7Ci0gICAg
fQotfQotCi12YXIgdGVzdE5hbWVzID0ge307Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVn
b3J5LldlYktpdDJdID0gIldLMiBUZXN0cyI7Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVn
b3J5LldlYktpdDFdID0gIldLMSBUZXN0cyI7Ci0KLWZ1bmN0aW9uIGluaXRQbGF0Zm9ybXNCeUZh
bWlseSgpCi17Ci0gICAgdmFyIHBsYXRmb3JtcyA9IERhc2hib2FyZC5zb3J0ZWRQbGF0Zm9ybXM7
Ci0gICAgZm9yICh2YXIgaSBpbiBwbGF0Zm9ybXMpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJlIHRo
ZSBwbGF0Zm9ybSB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcGFnZSBiZWZvcmUgY29uc2lkZXJp
bmcgaXRzIHBsYXRmb3JtIGZhbWlseS4KLSAgICAgICAgaWYgKCFjYXRlZ29yaXplZFF1ZXVlc0J5
UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm1zW2ldLm5hbWVdKQotICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgdmFyIHBsYXRmb3JtRmFtaWx5ID0gc2V0dGluZ3MucGFyc2VQbGF0
Zm9ybUZhbWlseShwbGF0Zm9ybXNbaV0ubmFtZSk7Ci0gICAgICAgIGlmIChwbGF0Zm9ybXNCeUZh
bWlseVtwbGF0Zm9ybUZhbWlseV0pCi0gICAgICAgICAgICBwbGF0Zm9ybXNCeUZhbWlseVtwbGF0
Zm9ybUZhbWlseV0ucHVzaChwbGF0Zm9ybXNbaV0ubmFtZSkKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldID0gW3BsYXRmb3Jtc1tpXS5u
YW1lXQotICAgIH0KLX0KLQotZnVuY3Rpb24gdXBkYXRlSGlkZGVuUGxhdGZvcm1zKCkKLXsKLSAg
ICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9iamVjdCgiaGlkZGVu
UGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwotICAgIHZhciBwbGF0Zm9ybVJvd3MgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5wbGF0Zm9ybSIpOwotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGxhdGZvcm1Sb3dzLmxlbmd0aDsgKytpKQotICAgICAgICBwbGF0Zm9ybVJvd3NbaV0uY2xh
c3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhpZGRl
blBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHBsYXRmb3JtRmFt
aWx5ID0gaGlkZGVuUGxhdGZvcm1GYW1pbGllc1tpXTsKLSAgICAgICAgaWYgKCEocGxhdGZvcm1G
YW1pbHkgaW4gcGxhdGZvcm1zQnlGYW1pbHkpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHld
Lmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IHBsYXRmb3Jtc0J5RmFtaWx5
W3BsYXRmb3JtRmFtaWx5XVtqXTsKLSAgICAgICAgICAgIHZhciBwbGF0Zm9ybVJvdyA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoInRyLnBsYXRmb3JtLiIgKyBuYW1lKTsKLSAgICAgICAgICAgIGlm
IChwbGF0Zm9ybVJvdykKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVJvdy5jbGFzc0xpc3QuYWRk
KCJoaWRkZW4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzZXR0aW5ncy51cGRhdGVUb2dnbGVC
dXR0b25zKCk7Ci19Ci0KLWZ1bmN0aW9uIGFwcGx5QWNjZXNzaWJpbGl0eUNvbG9yU2V0dGluZygp
Ci17Ci0gICAgdmFyIHVzZUFjY2Vzc2libGVDb2xvcnMgPSBzZXR0aW5ncy5nZXRPYmplY3QoImFj
Y2Vzc2liaWxpdHlDb2xvcnNFbmFibGVkIik7Ci0gICAgdmFyIHRvZ2dsZUFjY2Vzc2liaWxpdHlD
b2xvckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NpYmlsaXR5QnV0dG9u
Iik7Ci0gICAgaWYgKHVzZUFjY2Vzc2libGVDb2xvcnMpIHsKLSAgICAgICAgdG9nZ2xlQWNjZXNz
aWJpbGl0eUNvbG9yQnV0dG9uLnRleHRDb250ZW50ID0gImRpc2FibGUgYWNjZXNzaWJpbGl0eSBj
b2xvcnMiOwotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImFjY2Vzc2li
aWxpdHktY29sb3JzIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlD
b2xvckJ1dHRvbi50ZXh0Q29udGVudCA9ICJlbmFibGUgYWNjZXNzaWJpbGl0eSBjb2xvcnMiOwot
fQotCi1mdW5jdGlvbiB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JzKCkKLXsKLSAgICB2YXIgaXND
dXJyZW50bHlBY3RpdmF0ZWQgPSBzZXR0aW5ncy5nZXRPYmplY3QoImFjY2Vzc2liaWxpdHlDb2xv
cnNFbmFibGVkIik7Ci0gICAgaWYgKGlzQ3VycmVudGx5QWN0aXZhdGVkID09PSB1bmRlZmluZWQp
Ci0gICAgICAgIGlzQ3VycmVudGx5QWN0aXZhdGVkID0gZmFsc2U7Ci0gICAgCi0gICAgc2V0dGlu
Z3Muc2V0T2JqZWN0KCJhY2Nlc3NpYmlsaXR5Q29sb3JzRW5hYmxlZCIsICFpc0N1cnJlbnRseUFj
dGl2YXRlZCk7Ci0gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCJhY2Nlc3NpYmls
aXR5LWNvbG9ycyIpOwotICAgIHZhciB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24gPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNjZXNzaWJpbGl0eUJ1dHRvbiIpOwotICAgIGlmICgh
aXNDdXJyZW50bHlBY3RpdmF0ZWQpCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1
dHRvbi50ZXh0Q29udGVudCA9ICJkaXNhYmxlIGFjY2Vzc2liaWxpdHkgY29sb3JzIjsKLSAgICBl
bHNlCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1dHRvbi50ZXh0Q29udGVudCA9
ICJlbmFibGUgYWNjZXNzaWJpbGl0eSBjb2xvcnMiOwotfQotCi1mdW5jdGlvbiBkb2N1bWVudFJl
YWR5KCkKLXsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIp
OwotICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQoInF1ZXVlLWdyaWQiKTsKLQotICAgIHZhciByb3cg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHJvdy5jbGFzc0xpc3QuYWRkKCJo
ZWFkZXJzIik7Ci0KLSAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGgi
KTsgCi0gICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWlsZGVy
cyI7Ci0gICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBmb3IgKHZhciB0ZXN0ZXJL
ZXkgaW4gQnVpbGRib3QuVGVzdENhdGVnb3J5KSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQgPSB0
ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5W3Rlc3RlcktleV1dOwotICAgICAgICByb3cu
YXBwZW5kQ2hpbGQoaGVhZGVyKTsKLSAgICB9Ci0KLSAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGgiKTsKLSAgICBoZWFkZXIudGV4dENvbnRlbnQgPSAiT3RoZXIiOwot
ICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQocm93
KTsKLQotICAgIHZhciBwbGF0Zm9ybXMgPSBEYXNoYm9hcmQuc29ydGVkUGxhdGZvcm1zOwotCi0g
ICAgZm9yICh2YXIgaSBpbiBwbGF0Zm9ybXMpIHsKLSAgICAgICAgdmFyIHBsYXRmb3JtID0gcGxh
dGZvcm1zW2ldOwotICAgICAgICB2YXIgcGxhdGZvcm1RdWV1ZXMgPSBjYXRlZ29yaXplZFF1ZXVl
c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm0ubmFtZV07Ci0gICAgICAgIGlmICghcGxh
dGZvcm1RdWV1ZXMpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB2YXIgcm93ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAgICAgcm93LmNsYXNzTGlzdC5hZGQo
InBsYXRmb3JtIik7Ci0gICAgICAgIHJvdy5jbGFzc0xpc3QuYWRkKHBsYXRmb3JtLm5hbWUpOwot
Ci0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAgICAg
ICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJsb2dvIik7Ci0KLSAgICAgICAgdmFyIGxvZ29JbWFnZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgICAgICBsb2dvSW1hZ2UuY2xhc3NM
aXN0LmFkZCgibG9nbyIpOwotICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGxvZ29JbWFnZSk7Ci0K
LSAgICAgICAgdmFyIHJpbmdJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwot
ICAgICAgICByaW5nSW1hZ2UuY2xhc3NMaXN0LmFkZCgicmluZyIpOwotICAgICAgICByaW5nSW1h
Z2UudGl0bGUgPSBwbGF0Zm9ybS5yZWFkYWJsZU5hbWU7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hp
bGQocmluZ0ltYWdlKTsKLQotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAgICAg
ICAgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHZhciB2aWV3
ID0gbmV3IEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVlcy5idWlsZGVycyk7
Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgcm93LmFw
cGVuZENoaWxkKGNlbGwpOwotCi0gICAgICAgIGlmICgiYnVpbGRlckNvbWJpbmVkUXVldWVzIiBp
biBwbGF0Zm9ybVF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF0
Zm9ybVF1ZXVlcy5idWlsZGVyQ29tYmluZWRRdWV1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3KHBsYXRmb3Jt
UXVldWVzLmJ1aWxkZXJDb21iaW5lZFF1ZXVlc1tpXSk7Ci0gICAgICAgICAgICAgICAgY2VsbC5h
cHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgZm9yICh2YXIgdGVzdGVyS2V5IGluIEJ1aWxkYm90LlRlc3RDYXRlZ29yeSkgewotICAg
ICAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAg
ICAgICAgICB2YXIgdGVzdGVyUHJvcGVydHkgPSBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnlbdGVzdGVy
S2V5XTsKLSAgICAgICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0pIHsK
LSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldyhw
bGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0pOwotICAgICAgICAgICAgICAgIGNlbGwuYXBw
ZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcm93
LmFwcGVuZENoaWxkKGNlbGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXMucGVy
Zm9ybWFuY2UpIHsKLSAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UGVyZm9ybWFu
Y2VRdWV1ZVZpZXcocGxhdGZvcm1RdWV1ZXMucGVyZm9ybWFuY2UpOwotICAgICAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBs
YXRmb3JtUXVldWVzLnN0YXRpY0FuYWx5emVyKSB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9IG5l
dyBCdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3KHBsYXRmb3JtUXVldWVzLnN0YXRpY0Fu
YWx5emVyKTsKLSAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlcy5sZWFrcykgewotICAgICAgICAg
ICAgdmFyIHZpZXcgPSBuZXcgQnVpbGRib3RMZWFrc1F1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVlcy5s
ZWFrcyk7Ci0gICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXMuY3VzdG9tVmlldykKLSAgICAgICAg
ICAgIGNlbGwuYXBwZW5kQ2hpbGQocGxhdGZvcm1RdWV1ZXMuY3VzdG9tVmlldy5lbGVtZW50KTsK
LQotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXNbQnViYmxlc0NhdGVnb3J5XSkgewotICAgICAg
ICAgICAgdmFyIHZpZXcgPSBuZXcgQnViYmxlUXVldWVWaWV3KHBsYXRmb3JtUXVldWVzW0J1YmJs
ZXNDYXRlZ29yeV0pOwotICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCJvdGhlckNvbWJpbmVkUXVldWVzIiBpbiBwbGF0
Zm9ybVF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybVF1
ZXVlcy5vdGhlckNvbWJpbmVkUXVldWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAg
dmFyIHZpZXcgPSBuZXcgQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVlcy5v
dGhlckNvbWJpbmVkUXVldWVzW2ldKTsKLSAgICAgICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxk
KHZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByb3cu
YXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLSAg
ICB9Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhYmxlKTsKLQotICAgIGlmIChz
ZXR0aW5ncy5hdmFpbGFibGUoKSkgewotICAgICAgICB2YXIgc2V0dGluZ3NCdXR0b24gPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgc2V0dGluZ3NCdXR0b24uYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNldHRpbmdzLnRvZ2dsZVNldHRpbmdz
RGlzcGxheSgpOyB9KTsKLSAgICAgICAgc2V0dGluZ3NCdXR0b24uY2xhc3NMaXN0LmFkZCgic2V0
dGluZ3MiKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZXR0aW5nc0J1dHRv
bik7Ci0KLSAgICAgICAgdmFyIHNldHRpbmdzV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpOwotICAgICAgICBzZXR0aW5nc1dyYXBwZXIuY2xhc3NMaXN0LmFkZCgidW5oaWRl
IiwgImhpZGRlbiIsICJzZXR0aW5nc1dyYXBwZXIiKQotCi0gICAgICAgIHZhciBwbGF0Zm9ybUZh
bWlseVRvZ2dsZVdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAg
ICAgcGxhdGZvcm1GYW1pbHlUb2dnbGVXcmFwcGVyLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJo
aWRkZW4iLCAiZmFtaWx5VG9nZ2xlV3JhcHBlciIpOwotCi0gICAgICAgIHZhciB1bmhpZGVBbGxC
dXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdW5oaWRlQWxs
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgeyBzZXR0aW5ncy5j
bGVhckhpZGRlblBsYXRmb3JtRmFtaWxpZXMoKTsgfSk7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRv
bi5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlkZGVuIiwgInBsYXRmb3JtRmFtaWx5VG9nZ2xl
QnV0dG9uIik7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRvbi5zZXRBdHRyaWJ1dGUoImlkIiwgImFs
bC1wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbiIpOwotICAgICAgICB1bmhpZGVBbGxCdXR0b24u
dGV4dENvbnRlbnQgPSAiYWxsIjsKLSAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGVXcmFwcGVy
LmFwcGVuZENoaWxkKHVuaGlkZUFsbEJ1dHRvbik7Ci0KLSAgICAgICAgaW5pdFBsYXRmb3Jtc0J5
RmFtaWx5KCk7Ci0gICAgICAgIGZvciAodmFyIHBsYXRmb3JtRmFtaWx5IGluIHBsYXRmb3Jtc0J5
RmFtaWx5KSB7Ci0gICAgICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHlUb2dnbGUgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xl
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAgICAg
IHNldHRpbmdzLnRvZ2dsZUhpZGRlblBsYXRmb3JtRmFtaWx5KHRoaXMudG9TdHJpbmcoKSk7Ci0g
ICAgICAgICAgICB9LmJpbmQocGxhdGZvcm1GYW1pbHkpKTsKLSAgICAgICAgICAgIHBsYXRmb3Jt
RmFtaWx5VG9nZ2xlLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAicGxhdGZvcm1G
YW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLnNl
dEF0dHJpYnV0ZSgiaWQiLCBwbGF0Zm9ybUZhbWlseSArICItcGxhdGZvcm1GYW1pbHlUb2dnbGVC
dXR0b24iKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLnRleHRDb250ZW50ID0g
cGxhdGZvcm1GYW1pbHk7Ci0gICAgICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIu
YXBwZW5kQ2hpbGQocGxhdGZvcm1GYW1pbHlUb2dnbGUpOwotICAgICAgICB9Ci0gICAgICAgIHNl
dHRpbmdzV3JhcHBlci5hcHBlbmRDaGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIpOwot
Ci0gICAgICAgIHZhciB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0
dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7IHRvZ2dsZUFjY2Vzc2li
aWxpdHlDb2xvcnMoKTsgfSk7Ci0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1dHRv
bi5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlkZGVuIiwgImFjY2Vzc2liaWxpdHlCdXR0b24i
KTsKLSAgICAgICAgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uLnNldEF0dHJpYnV0ZSgi
aWQiLCAiYWNjZXNzaWJpbGl0eUJ1dHRvbiIpOwotICAgICAgICB0b2dnbGVBY2Nlc3NpYmlsaXR5
Q29sb3JCdXR0b24udGV4dENvbnRlbnQgPSAiZW5hYmxlIGFjY2Vzc2liaWxpdHkgY29sb3JzIjsK
LSAgICAgICAgc2V0dGluZ3NXcmFwcGVyLmFwcGVuZENoaWxkKHRvZ2dsZUFjY2Vzc2liaWxpdHlD
b2xvckJ1dHRvbik7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2V0dGluZ3NX
cmFwcGVyKTsKLSAgICAgICAgYXBwbHlBY2Nlc3NpYmlsaXR5Q29sb3JTZXR0aW5nKCk7Ci0KLSAg
ICAgICAgdXBkYXRlSGlkZGVuUGxhdGZvcm1zKCk7Ci0gICAgICAgIHNldHRpbmdzLmFkZFNldHRp
bmdMaXN0ZW5lcigiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIsIHVwZGF0ZUhpZGRlblBsYXRmb3Jt
cyk7Ci0gICAgfQotfQotCi12YXIgc29ydGVkUmVwb3NpdG9yaWVzID0gRGFzaGJvYXJkLnNvcnRl
ZFJlcG9zaXRvcmllczsKLWZvciAodmFyIGkgPSAwOyBpIDwgc29ydGVkUmVwb3NpdG9yaWVzLmxl
bmd0aDsgKytpKSB7Ci0gICAgdmFyIHRyYWMgPSBzb3J0ZWRSZXBvc2l0b3JpZXNbaV0udHJhYzsK
LSAgICBpZiAodHlwZW9mIHRyYWMgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICB0cmFjLnN0YXJ0
UGVyaW9kaWNVcGRhdGVzKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNv
bnRlbnRMb2FkZWQiLCBkb2N1bWVudFJlYWR5KTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L01ldHJpY3NBbmFseXplci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9N
ZXRyaWNzQW5hbHl6ZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL01ldHJpY3NBbmFseXplci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDUwMyArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotQW5hbHl6ZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxs
KHRoaXMpOwotCi0gICAgLy8gT25seSBsb2FkIG9uZSBxdWV1ZSBhdCBhIHRpbWUgdG8gbm90IG92
ZXJsb2FkIHRoZSBzZXJ2ZXIuCi0gICAgdGhpcy5fcXVldWVCZWluZ0xvYWRlZCA9IG51bGw7Ci0K
LSAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMuYWRkRXZlbnRMaXN0ZW5l
cihUcmFjLkV2ZW50LkxvYWRlZCwgdGhpcy5fbG9hZGVkRnJvbVRyYWMsIHRoaXMpOwotfTsKLQot
QmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhBbmFseXplcik7Ci0KLUFuYWx5emVy
LkV2ZW50ID0gewotICAgIFN0YXJ0aW5nOiAic3RhcnRpbmciLAotICAgIFF1ZXVlUmVzdWx0czog
InF1ZXVlLXJlc3VsdHMiLAotICAgIEZpbmlzaGVkOiAiZmluaXNoZWQiLAotfTsKLQotQW5hbHl6
ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBBbmFseXplciwKLSAgICBfX3Byb3Rv
X186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgYW5hbHl6ZTogZnVuY3Rpb24ocXVldWVz
LCBmcm9tRGF0ZSwgdG9EYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcsIG51bGwpOwotCi0gICAgICAgIHRoaXMu
X3JhbmdlU3RhcnRUaW1lID0gbmV3IERhdGUoZnJvbURhdGUpOwotICAgICAgICB0aGlzLl9yYW5n
ZUVuZFRpbWUgPSBuZXcgRGF0ZSh0b0RhdGUpOwotCi0gICAgICAgIHRoaXMuX2hhc1RyYWNEYXRh
ID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gQSBjb21taXQgY2FuIHN0YXJ0IGEgYnVpbGQtdGVzdCBz
ZXF1ZW5jZSwgb3IgaXQgY2FuIGJlIGlnbm9yZWQgZm9sbG93aW5nIGJ1aWxkZXIgcXVldWUgcnVs
ZXMuCi0gICAgICAgIC8vIE9ubHkgdGhlIGJ1aWxkZXIgcXVldWUga25vd3Mgd2hpY2ggY29tbWl0
cyB0cmlnZ2VyZWQgYnVpbGRzLCBhbmQgd2hpY2ggd2VyZSBpZ25vcmVkLgotICAgICAgICAvLyBX
ZSBuZWVkIHRvIGtub3cgd2hpY2ggY29tbWl0cyB3ZXJlIGlnbm9yZWQgd2hlbiBtZWFzdXJpbmcg
dGVzdGVyIHF1ZXVlIHBlcmZvcm1hbmNlLAotICAgICAgICAvLyBzbyB3ZSBsb2FkIGFuZCBhbmFs
eXplIGJ1aWxkZXIgcXVldWVzIGZpcnN0LgotICAgICAgICB0aGlzLl9xdWV1ZXMgPSBxdWV1ZXMu
c2xpY2UoMCk7Ci0gICAgICAgIHRoaXMuX3F1ZXVlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0
dXJuIGIuYnVpbGRlciAtIGEuYnVpbGRlcjsgfSk7Ci0KLSAgICAgICAgdGhpcy5fcmVtYWluaW5n
UXVldWVzID0ge307Ci0gICAgICAgIHRoaXMuX3F1ZXVlc1JlYWR5VG9BbmFseXplID0gW107Ci0K
LSAgICAgICAgdGhpcy5fdHJpZ2dlcmluZ0NvbW1pdHNCeVRyaWdnZXJpbmdRdWV1ZSA9IHt9Owot
Ci0gICAgICAgIHRoaXMuX3F1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAg
ICAgICBpZiAoIXF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5fcmVtYWluaW5nUXVldWVzW3F1ZXVlLmlkXSA9IHF1ZXVlOwotICAgICAgICAgICAgICAgIGlm
ICghdGhpcy5fcXVldWVCZWluZ0xvYWRlZCkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLl9x
dWV1ZUJlaW5nTG9hZGVkID0gcXVldWUuaWQ7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVlLmxv
YWRBbGwodGhpcy5fbG9hZGVkRnJvbUJ1aWxkYm90LmJpbmQodGhpcykpOwotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVlc1Jl
YWR5VG9BbmFseXplLnB1c2gocXVldWUpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMubG9hZCh0aGlzLl9yYW5nZVN0YXJ0
VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKLQotICAgICAgICBidWJibGVRdWV1ZVNlcnZlci5s
b2FkUHJvY2Vzc2luZ1RpbWVzKHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVuZFRp
bWUsIHRoaXMuX2xvYWRlZEJ1YmJsZXNUaW1pbmcuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAg
IF90cmlnZ2VyaW5nUXVldWU6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYgKHF1
ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICByZXR1cm4gcXVldWU7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgdGhpcy5fcXVldWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
dGhpcy5fcXVldWVzW2ldLnRlc3RlcikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl9xdWV1ZXNbaV0ucGxhdGZvcm0gPT09IHF1ZXVlLnBsYXRmb3JtICYm
IHRoaXMuX3F1ZXVlc1tpXS5hcmNoaXRlY3R1cmUgPT09IHF1ZXVlLmFyY2hpdGVjdHVyZSAmJiB0
aGlzLl9xdWV1ZXNbaV0uZGVidWcgPT09IHF1ZXVlLmRlYnVnKQotICAgICAgICAgICAgICAgIHJl
dHVybiB0aGlzLl9xdWV1ZXNbaV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHF1ZXVlOwot
ICAgIH0sCi0KLSAgICBfcmVjb3JkVHJpZ2dlcmluZ0NvbW1pdHNGb3JUcmlnZ2VyaW5nUXVldWU6
IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIShxdWV1ZS5p
ZCBpbiB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJpZ2dlcmluZ1F1ZXVlKSk7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHF1ZXVlLmlkID09PSB0aGlzLl90cmlnZ2VyaW5nUXVldWUocXVldWUp
LmlkKTsKLQotICAgICAgICB2YXIgY29tbWl0cyA9IHt9OwotICAgICAgICBxdWV1ZS5pdGVyYXRp
b25zLmZvckVhY2goZnVuY3Rpb24oaXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICBpdGVyYXRpb24u
Y2hhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkgewotICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBTdXBwb3J0IG11bHRpcGxlIHNvdXJjZSB0cmVlcy4KLSAgICAgICAgICAgICAgICBjb21t
aXRzW2NoYW5nZS5yZXZpc2lvbk51bWJlcl0gPSAxOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg
IH0pOwotCi0gICAgICAgIHRoaXMuX3RyaWdnZXJpbmdDb21taXRzQnlUcmlnZ2VyaW5nUXVldWVb
cXVldWUuaWRdID0gY29tbWl0czsKLSAgICB9LAotCi0gICAgLy8gSXRlcmF0aW9ucyBpcyBhbiBh
cnJheSBvZiBmaW5pc2hlZCBpdGVyYXRpb25zIG9yZGVyZWQgYnkgdGltZSwgaXRlcmF0aW9uc1sw
XSBiZWluZyB0aGUgbmV3ZXN0LgotICAgIC8vIFJldHVybnMgYW4gaW5kZXggb2YgYW4gaXRlcmF0
aW9uIHRoYXQgZGVmaW5lZCB0aGUgcXVldWUgY29sb3IgYXQgdGhlIHN0YXJ0LCBvciAtMQotICAg
IC8vIGlmIHRoZXJlIHdhcyBub25lLgotICAgIF9maW5kSW5kZXhPZkxhcmdlc3RJdGVyYXRpb25B
dE9yQmVmb3JlU3RhcnQ6IGZ1bmN0aW9uKGl0ZXJhdGlvbnMpCi0gICAgewotICAgICAgICB2YXIg
cmVzdWx0ID0gLTE7Ci0gICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgd2hpbGUgKGkgPCBpdGVy
YXRpb25zLmxlbmd0aCAmJiBpdGVyYXRpb25zW2ldLmVuZFRpbWUgPiB0aGlzLl9yYW5nZVN0YXJ0
VGltZSkKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgaWYgKGkgPCBpdGVyYXRpb25zLmxlbmd0
aCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGkrKzsKLSAgICAgICAgd2hpbGUgKGkgPCBpdGVyYXRp
b25zLmxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0ucmV2aXNpb25bRGFz
aGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSA+IGl0ZXJhdGlvbnNbcmVzdWx0XS5y
ZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKQotICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IGk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2Rhc2hib2FyZElzQWxsR3JlZW46IGZ1bmN0
aW9uKHRvcEl0ZXJhdGlvbkJ5UXVldWUpCi0gICAgewotICAgICAgICB2YXIgY291bnRPZlF1ZXVl
c1dpdGhLbm93bkNvbG9yID0gT2JqZWN0LmtleXModG9wSXRlcmF0aW9uQnlRdWV1ZSkubGVuZ3Ro
OwotICAgICAgICBpZiAoY291bnRPZlF1ZXVlc1dpdGhLbm93bkNvbG9yID09PSAwKQotICAgICAg
ICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLQotICAgICAgICBmb3IgKHZhciBxdWV1ZUlEIGluIHRv
cEl0ZXJhdGlvbkJ5UXVldWUpIHsKLSAgICAgICAgICAgIGlmICghdG9wSXRlcmF0aW9uQnlRdWV1
ZVtxdWV1ZUlEXS5zdWNjZXNzZnVsKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVN0cmV0
Y2hPZlJlZENvdW50ZXJzOiBmdW5jdGlvbih0b3BJdGVyYXRpb25CeVF1ZXVlLCBjdXJyZW50VGlt
ZSwgc3RyZXRjaE9mUmVkQ291bnRlcnMpCi0gICAgewotICAgICAgICB2YXIgZGFzaGJvYXJkSXNB
bGxHcmVlbiA9IHRoaXMuX2Rhc2hib2FyZElzQWxsR3JlZW4odG9wSXRlcmF0aW9uQnlRdWV1ZSk7
Ci0KLSAgICAgICAgaWYgKGRhc2hib2FyZElzQWxsR3JlZW4gPT09IHVuZGVmaW5lZCkgewotICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0
Y2hPZlJlZFN0YXJ0ID09PSB1bmRlZmluZWQpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
c3RyZXRjaE9mUmVkQ291bnRlcnMubG9uZ2VzdFN0cmV0Y2hPZlJlZCA9PT0gMCk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGFzaGJvYXJkSXNBbGxHcmVl
bikgewotICAgICAgICAgICAgaWYgKHN0cmV0Y2hPZlJlZENvdW50ZXJzLmN1cnJlbnRTdHJldGNo
T2ZSZWRTdGFydCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgc3RyZXRjaE9mUmVk
Q291bnRlcnMubG9uZ2VzdFN0cmV0Y2hPZlJlZCA9IE1hdGgubWF4KHN0cmV0Y2hPZlJlZENvdW50
ZXJzLmxvbmdlc3RTdHJldGNoT2ZSZWQsIGN1cnJlbnRUaW1lIC0gc3RyZXRjaE9mUmVkQ291bnRl
cnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0KTsKLSAgICAgICAgICAgICAgICBzdHJldGNoT2ZS
ZWRDb3VudGVycy5jdXJyZW50U3RyZXRjaE9mUmVkU3RhcnQgPSB1bmRlZmluZWQ7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RyZXRjaE9mUmVkQ291
bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0ID09PSB1bmRlZmluZWQpCi0gICAgICAgICAg
ICAgICAgc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0ID0gY3Vy
cmVudFRpbWU7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2NvdW50UGVyY2VudGFnZU9mR3Jl
ZW46IGZ1bmN0aW9uKHF1ZXVlcywgcmVzdWx0KQotICAgIHsKLSAgICAgICAgdmFyIHRvcEl0ZXJh
dGlvbkJ5UXVldWUgPSB7fTsKLSAgICAgICAgdmFyIGl0ZXJhdGlvbnMgPSBbXTsKLQotICAgICAg
ICAvLyBGaW5kIHdoYXQgdGhlIHRvcCBpdGVyYXRpb24gZm9yIGVhY2ggcXVldWUgd2FzIGF0IHRo
ZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSAoYW5kIHRodXMgd2hhdCBjb2xvcnMgdGhlIGRhc2hi
b2FyZCB3YXMgc2hvd2luZykuCi0gICAgICAgIC8vIE1lcmdlIGFsbCBxdWV1ZXMnIGl0ZXJhdGlv
bnMgaW50byBvbmUgYXJyYXksIGZpbHRlcmluZyBvdXQgb25lcyB0aGF0IGNhbid0IHBvc3NpYmx5
IGFmZmVjdCB0aGUgZW5kIHJlc3VsdC4KLSAgICAgICAgcXVldWVzLmZvckVhY2goZnVuY3Rpb24o
cXVldWUpIHsKLSAgICAgICAgICAgIHZhciBxdWV1ZUl0ZXJhdGlvbnMgPSBxdWV1ZS5pdGVyYXRp
b25zLmZpbHRlcihmdW5jdGlvbihpdGVyYXRpb24pIHsgcmV0dXJuIGl0ZXJhdGlvbi5maW5pc2hl
ZDsgfSk7Ci0gICAgICAgICAgICBxdWV1ZUl0ZXJhdGlvbnMuc29ydChmdW5jdGlvbihhLCBiKSB7
IHJldHVybiBiLmVuZFRpbWUgLSBhLmVuZFRpbWU7IH0pOwotCi0gICAgICAgICAgICB2YXIgaW5k
ZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQgPSB0aGlzLl9maW5kSW5kZXhPZkxh
cmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQocXVldWVJdGVyYXRpb25zKTsKLSAgICAgICAg
ICAgIGlmIChpbmRleE9mTGFyZ2VzdEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydCA+PSAwKSB7Ci0g
ICAgICAgICAgICAgICAgdG9wSXRlcmF0aW9uQnlRdWV1ZVtxdWV1ZS5pZF0gPSBxdWV1ZUl0ZXJh
dGlvbnNbaW5kZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnRdOwotICAgICAgICAg
ICAgICAgIHZhciBpID0gaW5kZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQ7Ci0g
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB2YXIgaSA9IHF1ZXVlSXRlcmF0aW9u
cy5sZW5ndGggLSAxOwotICAgICAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBxdWV1ZUl0ZXJhdGlv
bnNbaV0uZW5kVGltZSA8PSB0aGlzLl9yYW5nZUVuZFRpbWUpCi0gICAgICAgICAgICAgICAgaXRl
cmF0aW9ucy5wdXNoKHF1ZXVlSXRlcmF0aW9uc1tpLS1dKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0K
LSAgICAgICAgaXRlcmF0aW9ucy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGIuZW5kVGlt
ZSAtIGEuZW5kVGltZTsgfSk7Ci0KLSAgICAgICAgLy8gR28gZm9yd2FyZCBpbiB0aW1lLCBpZ25v
cmluZyBvdXQgb2Ygb3JkZXIgaXRlcmF0aW9ucyB0aGF0IGRpZG4ndCBhZmZlY3QgcXVldWUgY29s
b3IuCi0gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRoaXMuX3JhbmdlU3RhcnRUaW1lOwotICAg
ICAgICB2YXIgZ3JlZW5UaW1lID0gMDsKLSAgICAgICAgdmFyIHN0cmV0Y2hPZlJlZENvdW50ZXJz
ID0gewotICAgICAgICAgICAgbG9uZ2VzdFN0cmV0Y2hPZlJlZDogMCwKLSAgICAgICAgICAgIGN1
cnJlbnRTdHJldGNoT2ZSZWRTdGFydDogdW5kZWZpbmVkCi0gICAgICAgIH07Ci0gICAgICAgIHZh
ciBlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yOwotICAgICAgICBpZiAodGhpcy5fZGFzaGJv
YXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25CeVF1ZXVlKSAhPT0gdW5kZWZpbmVkKQotICAgICAg
ICAgICAgZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciA9IHRoaXMuX3JhbmdlU3RhcnRUaW1l
OwotICAgICAgICB0aGlzLl91cGRhdGVTdHJldGNoT2ZSZWRDb3VudGVycyh0b3BJdGVyYXRpb25C
eVF1ZXVlLCB0aGlzLl9yYW5nZVN0YXJ0VGltZSwgc3RyZXRjaE9mUmVkQ291bnRlcnMpOwotICAg
ICAgICBmb3IgKHZhciBpID0gaXRlcmF0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0uZW5kVGltZSA8PSB0aGlzLl9yYW5nZVN0YXJ0
VGltZSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZXJhdGlvbnNbaV0ucXVl
dWUuaWQgaW4gdG9wSXRlcmF0aW9uQnlRdWV1ZSk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIShpdGVyYXRpb25zW2ldLnF1ZXVlLmlk
IGluIHRvcEl0ZXJhdGlvbkJ5UXVldWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9wSXRlcmF0aW9u
QnlRdWV1ZVtpdGVyYXRpb25zW2ldLnF1ZXVlLmlkXSA9IGl0ZXJhdGlvbnNbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKGVhcmxpZXN0VGltZUluUmFuZ2VXaXRoQ29sb3IgPT09IHVuZGVmaW5lZCkg
ewotICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGltZSA9IGl0ZXJhdGlvbnNbaV0uZW5kVGlt
ZTsKLSAgICAgICAgICAgICAgICAgICAgZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciA9IGN1
cnJlbnRUaW1lOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVTdHJldGNoT2ZSZWRDb3VudGVycyh0b3BJdGVyYXRpb25CeVF1ZXVlLCBjdXJyZW50VGltZSwg
c3RyZXRjaE9mUmVkQ291bnRlcnMpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0ucmV2aXNpb25bRGFzaGJvYXJk
LlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSA8PSB0b3BJdGVyYXRpb25CeVF1ZXVlW2l0ZXJh
dGlvbnNbaV0ucXVldWUuaWRdLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3Vy
Y2UubmFtZV0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZhciBk
YXNoYm9hcmRXYXNBbGxHcmVlbiA9IHRoaXMuX2Rhc2hib2FyZElzQWxsR3JlZW4odG9wSXRlcmF0
aW9uQnlRdWV1ZSk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRXYXNBbGxH
cmVlbiAhPT0gdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIHRvcEl0ZXJhdGlvbkJ5UXVldWVbaXRl
cmF0aW9uc1tpXS5xdWV1ZS5pZF0gPSBpdGVyYXRpb25zW2ldOwotCi0gICAgICAgICAgICBpZiAo
ZGFzaGJvYXJkV2FzQWxsR3JlZW4gPT09IHRydWUpCi0gICAgICAgICAgICAgICAgZ3JlZW5UaW1l
ICs9IGl0ZXJhdGlvbnNbaV0uZW5kVGltZSAtIGN1cnJlbnRUaW1lOwotCi0gICAgICAgICAgICBj
dXJyZW50VGltZSA9IGl0ZXJhdGlvbnNbaV0uZW5kVGltZTsKLSAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZVN0cmV0Y2hPZlJlZENvdW50ZXJzKHRvcEl0ZXJhdGlvbkJ5UXVldWUsIGN1cnJlbnRUaW1l
LCBzdHJldGNoT2ZSZWRDb3VudGVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5f
ZGFzaGJvYXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25CeVF1ZXVlKSA9PT0gdHJ1ZSkKLSAgICAg
ICAgICAgIGdyZWVuVGltZSArPSB0aGlzLl9yYW5nZUVuZFRpbWUgLSBjdXJyZW50VGltZTsKLQot
ICAgICAgICBpZiAoc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0
ICE9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBzdHJldGNoT2ZSZWRDb3VudGVycy5sb25nZXN0
U3RyZXRjaE9mUmVkID0gTWF0aC5tYXgoc3RyZXRjaE9mUmVkQ291bnRlcnMubG9uZ2VzdFN0cmV0
Y2hPZlJlZCwgdGhpcy5fcmFuZ2VFbmRUaW1lIC0gc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVu
dFN0cmV0Y2hPZlJlZFN0YXJ0KTsKLQotICAgICAgICByZXN1bHQubG9uZ2VzdFN0cmV0Y2hPZlJl
ZCA9IHN0cmV0Y2hPZlJlZENvdW50ZXJzLmxvbmdlc3RTdHJldGNoT2ZSZWQgLyAxMDAwOwotCi0g
ICAgICAgIGlmIChlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yID09PSB0aGlzLl9yYW5nZVN0
YXJ0VGltZSkKLSAgICAgICAgICAgIHJlc3VsdC5wZXJjZW50YWdlT2ZHcmVlbiA9IGdyZWVuVGlt
ZSAvICh0aGlzLl9yYW5nZUVuZFRpbWUgLSB0aGlzLl9yYW5nZVN0YXJ0VGltZSkgKiAxMDA7Ci0g
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvciA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciAhPT0gdW5k
ZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvclRleHQg
PSAiUXVldWUgb25seSBoYXMgcmVzdWx0cyBzdGFydGluZyAiICsgZWFybGllc3RUaW1lSW5SYW5n
ZVdpdGhDb2xvcjsKLSAgICAgICAgICAgICAgICByZXN1bHQucGVyY2VudGFnZU9mR3JlZW4gPSBn
cmVlblRpbWUgLyAodGhpcy5fcmFuZ2VFbmRUaW1lIC0gZWFybGllc3RUaW1lSW5SYW5nZVdpdGhD
b2xvcikgKiAxMDA7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1bHQu
YnVpbGRib3RSYW5nZUVycm9yVGV4dCA9ICJRdWV1ZSBoYXMgbm8gcmVzdWx0cyBpbiB0aGlzIHJh
bmdlIjsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfY291bnRUaW1lczogZnVuY3Rpb24ocXVl
dWVzLCByZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgcmVsZXZhbnRJdGVyYXRpb25zQnlRdWV1
ZSA9IHt9OwotICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgewotICAgICAg
ICAgICAgcmVsZXZhbnRJdGVyYXRpb25zQnlRdWV1ZVtxdWV1ZS5pZF0gPSBxdWV1ZS5pdGVyYXRp
b25zLmZpbHRlcihmdW5jdGlvbihpdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
aXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgaXRlcmF0aW9uLnN0YXJ0VGltZSA+IHRoaXMuX3Jhbmdl
U3RhcnRUaW1lICYmIGl0ZXJhdGlvbi5lbmRUaW1lIDwgdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAg
ICAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgICAgICByZWxldmFudEl0ZXJhdGlvbnNCeVF1ZXVl
W3F1ZXVlLmlkXS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuZW5kVGltZSAtIGIuZW5k
VGltZTsgfSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHZhciB0aW1lcyA9IFtdOwot
ICAgICAgICB2YXIgb3duVGltZXMgPSBbXTsKLSAgICAgICAgdmFyIHdvcnN0VGltZSA9IDA7Ci0g
ICAgICAgIHZhciB3b3JzdE93blRpbWUgPSAwCi0gICAgICAgIHZhciB3b3JzdFRpbWVSZXZpc2lv
bjsKLSAgICAgICAgdmFyIHdvcnN0T3duVGltZVJldmlzaW9uOwotCi0gICAgICAgIERhc2hib2Fy
ZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENvbW1pdHMuZm9yRWFjaChmdW5j
dGlvbihyZXZpc2lvbikgewotICAgICAgICAgICAgaWYgKHJldmlzaW9uLmRhdGUgPCB0aGlzLl9y
YW5nZVN0YXJ0VGltZSB8fCByZXZpc2lvbi5kYXRlID49IHRoaXMuX3JhbmdlRW5kVGltZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciBlbmRUaW1lID0gLTE7Ci0g
ICAgICAgICAgICB2YXIgb3duVGltZSA9IC0xOwotICAgICAgICAgICAgcXVldWVzLmZvckVhY2go
ZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShyZXZpc2lvbi5yZXZpc2lv
bk51bWJlciBpbiB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJpZ2dlcmluZ1F1ZXVlW3RoaXMu
X3RyaWdnZXJpbmdRdWV1ZShxdWV1ZSkuaWRdKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVsZXZhbnRJdGVyYXRpb25z
QnlRdWV1ZVtxdWV1ZS5pZF0ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFy
IGl0ZXJhdGlvbiA9IHJlbGV2YW50SXRlcmF0aW9uc0J5UXVldWVbcXVldWUuaWRdW2ldOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0
b3J5Lk9wZW5Tb3VyY2UubmFtZV0gPj0gcmV2aXNpb24ucmV2aXNpb25OdW1iZXIpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGVuZFRpbWUgPSBNYXRoLm1heChlbmRUaW1lLCBpdGVyYXRpb24u
ZW5kVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvd25UaW1lID0gTWF0aC5tYXgob3du
VGltZSwgaXRlcmF0aW9uLmVuZFRpbWUgLSBpdGVyYXRpb24uc3RhcnRUaW1lKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgICAgICBpZiAoZW5kVGltZSA+
PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob3duVGltZSA+PSAwKTsKLSAg
ICAgICAgICAgICAgICB2YXIgdGltZSA9IGVuZFRpbWUgLSByZXZpc2lvbi5kYXRlOwotICAgICAg
ICAgICAgICAgIHRpbWVzLnB1c2godGltZSk7Ci0gICAgICAgICAgICAgICAgb3duVGltZXMucHVz
aChvd25UaW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodGltZSA+IHdvcnN0VGltZSkgewotICAg
ICAgICAgICAgICAgICAgICB3b3JzdFRpbWUgPSB0aW1lOwotICAgICAgICAgICAgICAgICAgICB3
b3JzdFRpbWVDb21taXQgPSByZXZpc2lvbi5yZXZpc2lvbk51bWJlcjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgaWYgKG93blRpbWUgPiB3b3JzdE93blRpbWUpIHsKLSAgICAg
ICAgICAgICAgICAgICAgd29yc3RPd25UaW1lID0gb3duVGltZTsKLSAgICAgICAgICAgICAgICAg
ICAgd29yc3RPd25UaW1lQ29tbWl0ID0gcmV2aXNpb24ucmV2aXNpb25OdW1iZXI7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICBy
ZXN1bHQuYXZlcmFnZVNlY29uZHNGcm9tQ29tbWl0ID0gdGltZXMuYXZlcmFnZSgpIC8gMTAwMDsK
LSAgICAgICAgcmVzdWx0Lm1lZGlhblNlY29uZHNGcm9tQ29tbWl0ID0gdGltZXMubWVkaWFuKCkg
LyAxMDAwOwotICAgICAgICBjb25zb2xlLmFzc2VydCh3b3JzdFRpbWUgPT09IE1hdGgubWF4LmFw
cGx5KE1hdGgsIHRpbWVzKSk7Ci0gICAgICAgIHJlc3VsdC53b3JzdFNlY29uZHNGcm9tQ29tbWl0
ID0gd29yc3RUaW1lIC8gMTAwMDsKLSAgICAgICAgcmVzdWx0LnJldmlzaW9uV2l0aFdvcnN0VGlt
ZUZyb21Db21taXQgPSB3b3JzdFRpbWVDb21taXQ7Ci0KLSAgICAgICAgcmVzdWx0LmF2ZXJhZ2VT
ZWNvbmRzT3duVGltZSA9IG93blRpbWVzLmF2ZXJhZ2UoKSAvIDEwMDA7Ci0gICAgICAgIHJlc3Vs
dC5tZWRpYW5TZWNvbmRzT3duVGltZSA9IG93blRpbWVzLm1lZGlhbigpIC8gMTAwMDsKLSAgICAg
ICAgcmVzdWx0LndvcnN0U2Vjb25kc093blRpbWUgPSB3b3JzdE93blRpbWUgLyAxMDAwOwotICAg
ICAgICBjb25zb2xlLmFzc2VydCh3b3JzdE93blRpbWUgPT09IE1hdGgubWF4LmFwcGx5KE1hdGgs
IG93blRpbWVzKSk7Ci0gICAgICAgIHJlc3VsdC5yZXZpc2lvbldpdGhXb3JzdE93blRpbWUgPSB3
b3JzdE93blRpbWVDb21taXQ7Ci0gICAgfSwKLQotICAgIF9hbmFseXplUXVldWU6IGZ1bmN0aW9u
KHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXJpbmdRdWV1ZShxdWV1ZSku
aWQgPT09IHF1ZXVlLmlkICYmICEocXVldWUuaWQgaW4gdGhpcy5fdHJpZ2dlcmluZ0NvbW1pdHNC
eVRyaWdnZXJpbmdRdWV1ZSkpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRUcmlnZ2VyaW5nQ29t
bWl0c0ZvclRyaWdnZXJpbmdRdWV1ZShxdWV1ZSk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IHsg
cXVldWVJRDogcXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdlT2ZHcmVl
bihbcXVldWVdLCByZXN1bHQpOwotICAgICAgICB0aGlzLl9jb3VudFRpbWVzKFtxdWV1ZV0sIHJl
c3VsdCk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQW5hbHl6ZXIu
RXZlbnQuUXVldWVSZXN1bHRzLCByZXN1bHQpOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUFnZ3Jl
Z2F0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGJ1aWxkZXJRdWV1ZXMgPSB0aGlz
Ll9xdWV1ZXMuZmlsdGVyKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5idWlsZGVyOyB9
KTsKLQotICAgICAgICB2YXIgYnVpbGRlcnNSZXN1bHQgPSB7IHF1ZXVlSUQ6IGFsbEJ1aWxkZXJS
ZXN1bHRzUHNldWRvUXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdlT2ZH
cmVlbihidWlsZGVyUXVldWVzLCBidWlsZGVyc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuX2NvdW50
VGltZXMoYnVpbGRlclF1ZXVlcywgYnVpbGRlcnNSZXN1bHQpOwotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIGJ1aWxkZXJz
UmVzdWx0KTsKLQotICAgICAgICB2YXIgYWxsUXVldWVzUmVzdWx0ID0geyBxdWV1ZUlEOiBhbGxS
ZXN1bHRzUHNldWRvUXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdlT2ZH
cmVlbih0aGlzLl9xdWV1ZXMsIGFsbFF1ZXVlc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuX2NvdW50
VGltZXModGhpcy5fcXVldWVzLCBhbGxRdWV1ZXNSZXN1bHQpOwotICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIGFsbFF1ZXVl
c1Jlc3VsdCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplOiBmdW5jdGlvbihxdWV1ZSkKLSAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2hhc1RyYWNEYXRhKTsKLQotICAgICAgICB0
aGlzLl9xdWV1ZXNSZWFkeVRvQW5hbHl6ZS5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAg
ICAgICAgICB0aGlzLl9hbmFseXplUXVldWUocXVldWUpOwotICAgICAgICB9LCB0aGlzKTsKLQot
ICAgICAgICB0aGlzLl9xdWV1ZXNSZWFkeVRvQW5hbHl6ZSA9IFtdOwotCi0gICAgICAgIGlmICgh
T2JqZWN0LmtleXModGhpcy5fcmVtYWluaW5nUXVldWVzKS5sZW5ndGgpIHsKLSAgICAgICAgICAg
IHRoaXMuX2FuYWx5emVBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKEFuYWx5emVyLkV2ZW50LkZpbmlzaGVkLCBudWxsKTsKLSAgICAgICAgfQot
ICAgIH0sCi0KLSAgICBfbG9hZGVkRnJvbVRyYWM6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgdGhpcy5faGFzVHJhY0RhdGEgPSBldmVudC5kYXRhWzBdIDw9IHRoaXMuX3JhbmdlU3Rh
cnRUaW1lICYmIGV2ZW50LmRhdGFbMV0gPj0gdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAgICAgICBp
ZiAodGhpcy5faGFzVHJhY0RhdGEpCi0gICAgICAgICAgICB0aGlzLl9hbmFseXplKCk7Ci0gICAg
fSwKLQotICAgIF9sb2FkZWRGcm9tQnVpbGRib3Q6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcXVldWVCZWluZ0xvYWRlZCA9PT0gcXVldWUuaWQp
OwotICAgICAgICB0aGlzLl9xdWV1ZUJlaW5nTG9hZGVkID0gbnVsbDsKLQotICAgICAgICBpZiAo
cXVldWUuaWQgaW4gdGhpcy5fcmVtYWluaW5nUXVldWVzKSB7Ci0gICAgICAgICAgICBkZWxldGUg
dGhpcy5fcmVtYWluaW5nUXVldWVzW3F1ZXVlLmlkXTsKLSAgICAgICAgICAgIHRoaXMuX3F1ZXVl
c1JlYWR5VG9BbmFseXplLnB1c2gocXVldWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9yICh2
YXIgcXVldWVJRCBpbiB0aGlzLl9yZW1haW5pbmdRdWV1ZXMpIHsKLSAgICAgICAgICAgIHZhciBx
dWV1ZSA9IHRoaXMuX3JlbWFpbmluZ1F1ZXVlc1txdWV1ZUlEXTsKLSAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHF1ZXVlLmlkID09PSBxdWV1ZUlEKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCk7Ci0gICAgICAgICAgICB0aGlzLl9xdWV1ZUJl
aW5nTG9hZGVkID0gcXVldWVJRDsKLSAgICAgICAgICAgIHF1ZXVlLmxvYWRBbGwodGhpcy5fbG9h
ZGVkRnJvbUJ1aWxkYm90LmJpbmQodGhpcykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAodGhpcy5faGFzVHJhY0RhdGEpCi0gICAgICAgICAgICB0aGlzLl9h
bmFseXplKCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplQnViYmxlUGVyZm9ybWFuY2U6IGZ1bmN0
aW9uKHF1ZXVlSUQsIHBhdGNoZXMpCi0gICAgewotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRDYXVz
ZWRJbnRlcm5hbEVycm9yID0gW107Ci0gICAgICAgIGZvciAocGF0Y2hJRCBpbiBwYXRjaGVzKSB7
Ci0gICAgICAgICAgICBpZiAocGF0Y2hlc1twYXRjaElEXS5yZXNvbHV0aW9uID09PSAiaW50ZXJu
YWwgZXJyb3IiKQotICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0Q2F1c2VkSW50ZXJuYWxFcnJv
ci5wdXNoKHBhdGNoSUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHdhaXRUaW1lcyA9IFtd
OwotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRXYWl0ZWRNb3JlVGhhbjNNaW51dGVzID0gW107Ci0g
ICAgICAgIHZhciB0b3RhbFRpbWVzID0gW107Ci0gICAgICAgIHZhciB0b3RhbFRpbWVzRm9yUGF0
Y2hlc1RoYXRXZXJlTm90UmV0cmllZCA9IFtdOwotICAgICAgICB2YXIgdG90YWxUaW1lc0ZvclBh
dGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkID0gW107Ci0gICAgICAgIHZhciBwYXRj
aGVzVGhhdERpZE5vdENvbXBsZXRlID0gW107Ci0gICAgICAgIHZhciByZXRyeUNvdW50cyA9IFtd
OwotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGUgPSBbXTsK
LSAgICAgICAgdmFyIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHkgPSBbXTsKLSAg
ICAgICAgdmFyIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkID0gW107Ci0gICAg
ICAgIHZhciBwYXRjaGVzRGlkTm90QXBwbHkgPSBbXTsKLSAgICAgICAgZm9yIChwYXRjaElEIGlu
IHBhdGNoZXMpIHsKLSAgICAgICAgICAgIHZhciBwYXRjaCA9IHBhdGNoZXNbcGF0Y2hJRF07Ci0K
LSAgICAgICAgICAgIC8vIFdhaXQgdGltZSBpcyBlcXVhbGx5IGludGVyZXN0aW5nIGZvciBhbGwg
cGF0Y2hlcy4KLSAgICAgICAgICAgIHdhaXRUaW1lcy5wdXNoKHBhdGNoLndhaXRfZHVyYXRpb24p
OwotCi0gICAgICAgICAgICBpZiAocGF0Y2gud2FpdF9kdXJhdGlvbiA+IDMgKiA2MCkKLSAgICAg
ICAgICAgICAgICBwYXRjaGVzVGhhdFdhaXRlZE1vcmVUaGFuM01pbnV0ZXMucHVzaChwYXRjaElE
KTsKLQotICAgICAgICAgICAgaWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJub3QgcHJvY2Vzc2Vk
IikKLSAgICAgICAgICAgICAgICBwYXRjaGVzVGhhdERpZE5vdENvbXBsZXRlLnB1c2gocGF0Y2hJ
RCk7Ci0KLSAgICAgICAgICAgIGlmIChwYXRjaC5yZXRyeV9jb3VudCA9PT0gMCkKLSAgICAgICAg
ICAgICAgICB0b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZC5wdXNoKHBhdGNo
LndhaXRfZHVyYXRpb24gKyBwYXRjaC5wcm9jZXNzX2R1cmF0aW9uKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIHJldHJ5Q291bnRzLnB1c2gocGF0Y2gucmV0cnlfY291bnQp
OwotICAgICAgICAgICAgICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAibm90IHByb2Nlc3Nl
ZCIpCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5vdENvbXBs
ZXRlLnB1c2gocGF0Y2hJRCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2gucmVzb2x1
dGlvbiA9PT0gImNvdWxkIG5vdCBhcHBseSIpCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXNU
aGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHkucHVzaChwYXRjaElEKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAicGFzcyIgfHwgcGF0Y2gucmVzb2x1dGlv
biA9PT0gImZhaWwiKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFu
ZFBhc3NlZE9yRmFpbGVkLnB1c2gocGF0Y2hJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFs
VGltZXNGb3JQYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZC5wdXNoKHBhdGNoLndh
aXRfZHVyYXRpb24gKyBwYXRjaC5wcm9jZXNzX2R1cmF0aW9uKTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFuYWx5emUgcHJvY2Vzc2luZyBwZXJm
b3JtYW5jZSBmb3IgcGF0Y2hlcyB0aGF0IHdlcmUgZGVmaW5pdGVseSBwcm9jZXNzZWQuCi0gICAg
ICAgICAgICAvLyBXZSBjYW4ndCB0YXJnZXQgaW1wcm92aW5nIHBlcmZvcm1hbmNlIG9mIG90aGVy
cyAoc3VjaCBhcyBwYXRjaGVzIHRoYXQgd2VyZSBvYnNvbGV0ZWQgd2hpbGUgaW4gdGhlIHF1ZXVl
KS4KLSAgICAgICAgICAgIC8vIFBhdGNoZXMgdGhhdCBkb24ndCBhcHBseSB0byB0cnVuayBoYXZl
IHRvIGJlIGV4Y2x1ZGVkLCBiZWNhdXNlIG90aGVyd2lzZSB3ZQotICAgICAgICAgICAgLy8gZ2V0
IHRpbWVzIGZvciBwYXRjaGVzIHRoYXQgc3Bpbm5lZCB1bnRpbCB0aGV5IGNlYXNlZCB0byBhcHBs
eS4KLSAgICAgICAgICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAicGFzcyIgfHwgcGF0Y2gu
cmVzb2x1dGlvbiA9PT0gImZhaWwiKQotICAgICAgICAgICAgICAgIHRvdGFsVGltZXMucHVzaChw
YXRjaC53YWl0X2R1cmF0aW9uICsgcGF0Y2gucHJvY2Vzc19kdXJhdGlvbik7Ci0KLSAgICAgICAg
ICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAiY291bGQgbm90IGFwcGx5IikKLSAgICAgICAg
ICAgICAgICBwYXRjaGVzRGlkTm90QXBwbHkucHVzaChwYXRjaElEKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAgICBxdWV1ZUlEOiBxdWV1ZUlELAotICAg
ICAgICAgICAgdG90YWxQYXRjaGVzOiBPYmplY3Qua2V5cyhwYXRjaGVzKS5sZW5ndGgsCi0gICAg
ICAgICAgICBwYXRjaGVzVGhhdERpZE5vdENvbXBsZXRlQ291bnQ6IHBhdGNoZXNUaGF0RGlkTm90
Q29tcGxldGUubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQ6IHJl
dHJ5Q291bnRzLmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0RGlkTm90QXBwbHlDb3Vu
dDogcGF0Y2hlc0RpZE5vdEFwcGx5Lmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bp
bm5lZEFuZERpZE5vdENvbXBsZXRlQ291bnQ6IHBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5vdENv
bXBsZXRlLmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRv
QXBwbHlDb3VudDogcGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBseS5sZW5ndGgsCi0g
ICAgICAgICAgICBwYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50OiBwYXRj
aGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZC5sZW5ndGgsCi0gICAgICAgICAgICBtZWRp
YW5Ub3RhbFRpbWVGb3JQYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZEluU2Vjb25k
czogdG90YWxUaW1lc0ZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkLm1lZGlh
bigpLAotICAgICAgICAgICAgYXZlcmFnZVRvdGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5lZEFu
ZFBhc3NlZE9yRmFpbGVkSW5TZWNvbmRzOiB0b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRTcGlubmVk
QW5kUGFzc2VkT3JGYWlsZWQuYXZlcmFnZSgpLAotICAgICAgICAgICAgbWVkaWFuV2FpdFRpbWVJ
blNlY29uZHM6IHdhaXRUaW1lcy5tZWRpYW4oKSwKLSAgICAgICAgICAgIGF2ZXJhZ2VXYWl0VGlt
ZUluU2Vjb25kczogd2FpdFRpbWVzLmF2ZXJhZ2UoKSwKLSAgICAgICAgICAgIG1heGltdW1XYWl0
VGltZUluU2Vjb25kczogTWF0aC5tYXguYXBwbHkoTWF0aCwgd2FpdFRpbWVzKSwKLSAgICAgICAg
ICAgIHBhdGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlc0NvdW50OiBwYXRjaGVzVGhhdFdh
aXRlZE1vcmVUaGFuM01pbnV0ZXMubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1RoYXRDYXVz
ZWRJbnRlcm5hbEVycm9yOiBwYXRjaGVzVGhhdENhdXNlZEludGVybmFsRXJyb3IsCi0gICAgICAg
IH07Ci0KLSAgICAgICAgaWYgKHRvdGFsVGltZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICByZXN1
bHQubWVkaWFuVG90YWxUaW1lSW5TZWNvbmRzID0gdG90YWxUaW1lcy5tZWRpYW4oKTsKLSAgICAg
ICAgICAgIHJlc3VsdC5hdmVyYWdlVG90YWxUaW1lSW5TZWNvbmRzID0gdG90YWxUaW1lcy5hdmVy
YWdlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodG90YWxUaW1lc0ZvclBhdGNoZXNUaGF0
V2VyZU5vdFJldHJpZWQubGVuZ3RoKSB7Ci0gICAgICAgICAgICByZXN1bHQubWVkaWFuVG90YWxU
aW1lRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZEluU2Vjb25kcyA9IHRvdGFsVGltZXNGb3JQ
YXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkLm1lZGlhbigpOwotICAgICAgICAgICAgcmVzdWx0LmF2
ZXJhZ2VUb3RhbFRpbWVGb3JQYXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkSW5TZWNvbmRzID0gdG90
YWxUaW1lc0ZvclBhdGNoZXNUaGF0V2VyZU5vdFJldHJpZWQuYXZlcmFnZSgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQW5hbHl6ZXIuRXZlbnQu
UXVldWVSZXN1bHRzLCByZXN1bHQpOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUFsbEJ1YmJsZXNQ
ZXJmb3JtYW5jZTogZnVuY3Rpb24oZGF0YUJ5UGF0Y2gpCi0gICAgewotICAgICAgICB2YXIgZGF0
YSA9IHt9OwotICAgICAgICBmb3IgKHF1ZXVlSUQgaW4gYnViYmxlUXVldWVTZXJ2ZXIucXVldWVz
KQotICAgICAgICAgICAgZGF0YVtxdWV1ZUlEXSA9IHt9OwotCi0gICAgICAgIGZvciAocGF0Y2hJ
RCBpbiBkYXRhQnlQYXRjaCkgewotICAgICAgICAgICAgZm9yIChxdWV1ZUlEIGluIGRhdGFCeVBh
dGNoW3BhdGNoSURdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEocXVldWVJRCBpbiBkYXRhKSkK
LSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdmFyIHBhdGNo
RGF0YSA9IGRhdGFCeVBhdGNoW3BhdGNoSURdW3F1ZXVlSURdOwotICAgICAgICAgICAgICAgIGlm
IChwYXRjaERhdGEuZGF0ZSA8IHRoaXMuZnJvbURhdGUgfHwgcGF0Y2hEYXRhLmRhdGUgPiB0aGlz
LnRvRGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAg
aWYgKHBhdGNoRGF0YS5yZXNvbHV0aW9uID09PSAiaW4gcHJvZ3Jlc3MiKQotICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBkYXRhW3F1ZXVlSURdW3BhdGNoSURd
ID0gcGF0Y2hEYXRhOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgZm9yIChx
dWV1ZUlEIGluIGRhdGEpCi0gICAgICAgICAgICB0aGlzLl9hbmFseXplQnViYmxlUGVyZm9ybWFu
Y2UocXVldWVJRCwgZGF0YVtxdWV1ZUlEXSk7Ci0gICAgfSwKLQotICAgIF9sb2FkZWRCdWJibGVz
VGltaW5nOiBmdW5jdGlvbihkYXRhLCBmcm9tVGltZSwgdG9UaW1lKQotICAgIHsKLSAgICAgICAg
Ly8gT25seSBhbmFseXplIGlmIHRoZSBkYXRhIGNvdmVycyB0aGUgbGF0ZXN0IHJhbmdlIHJlcXVl
c3RlZCBieSB0aGUgdXNlci4KLSAgICAgICAgLy8gSXQgbWF5IGJlIGRpZmZlcmVudCBmcm9tIHRo
ZSBsb2FkZWQgb25lIGlmIHRoZSB1c2VyIHF1aWNrbHkgcmVxdWVzdGVkIG11bHRpcGxlIHJhbmdl
cy4KLSAgICAgICAgaWYgKGZyb21UaW1lID4gdGhpcy5fcmFuZ2VTdGFydFRpbWUgfHwgdG9UaW1l
IDwgdGhpcy5fcmFuZ2VFbmRUaW1lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlz
Ll9hbmFseXplQWxsQnViYmxlc1BlcmZvcm1hbmNlKGRhdGEpOwotICAgIH0sCi19OwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpzCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0x
ICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0J1YmJsZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0J1YmJsZVZpZXcuanMJKHJldmlzaW9uIDI2
ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NCdWJibGVWaWV3LmpzCShub25l
eGlzdGVudCkKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1NZXRyaWNzQnViYmxlVmll
dyA9IGZ1bmN0aW9uKGFuYWx5emVyLCBxdWV1ZSkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhp
cyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVldWUtdmlldyIpOwotCi0gICAgdGhp
cy5fcmVzdWx0cyA9IG51bGw7Ci0KLSAgICB0aGlzLl9xdWV1ZSA9IHF1ZXVlOwotCi0gICAgYW5h
bHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5FdmVudC5TdGFydGluZywgdGhpcy5fY2xl
YXJSZXN1bHRzLCB0aGlzKTsKLSAgICBhbmFseXplci5hZGRFdmVudExpc3RlbmVyKEFuYWx5emVy
LkV2ZW50LlF1ZXVlUmVzdWx0cywgdGhpcy5fcXVldWVSZXN1bHRzQWRkZWQsIHRoaXMpOwotICAg
IAotICAgIHRoaXMuX3VwZGF0ZVNvb24oKTsKLX07Ci0KLU1ldHJpY3NCdWJibGVWaWV3LlVwZGF0
ZVNvb25UaW1lb3V0ID0gMTAwOyAvLyAxMDAgbXMKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3Rv
ckZ1bmN0aW9ucyhNZXRyaWNzQnViYmxlVmlldyk7Ci0KLU1ldHJpY3NCdWJibGVWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTWV0cmljc0J1YmJsZVZpZXcsCi0gICAgX19wcm90
b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIF9jbGVhclJlc3VsdHM6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHMgPSBudWxsOwotICAgICAgICB0aGlzLl91
cGRhdGVTb29uKCk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVJlc3VsdHNBZGRlZDogZnVuY3Rpb24o
ZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcXVldWUuaWQgIT09IGV2ZW50LmRhdGEu
cXVldWVJRCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9yZXN1bHRzID0g
ZXZlbnQuZGF0YTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU29vbigpOwotICAgIH0sCi0KLSAgICBf
dXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hp
bGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhZGRMaW5lKGVsZW1lbnQsIHRleHQpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgICAgICBsaW5lLnRleHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgICAgIGxp
bmUuY2xhc3NMaXN0LmFkZCgicmVzdWx0LWxpbmUiKTsKLSAgICAgICAgICAgIGVsZW1lbnQuYXBw
ZW5kQ2hpbGQobGluZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhZGRFcnJvcihl
bGVtZW50LCB0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBhZGRMaW5lKGVsZW1lbnQsIHRl
eHQpOwotICAgICAgICAgICAgZWxlbWVudC5sYXN0Q2hpbGQuY2xhc3NMaXN0LmFkZCgiZXJyb3It
bGluZSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWRkRGl2aWRlcihlbGVtZW50
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgZGl2aWRlci5jbGFzc0xpc3QuYWRkKCJkaXZpZGVy
Iik7Ci0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXIpOwotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gcGx1cmFsaXplTWludXRlcyhpbnRlcnZhbEluU2Vjb25kcykK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKGludGVydmFsSW5TZWNvbmRzIDwgNjApCi0gICAg
ICAgICAgICAgICAgcmV0dXJuICJsZXNzIHRoYW4gYSBtaW51dGUiOwotICAgICAgICAgICAgZWxz
ZSBpZiAoaW50ZXJ2YWxJblNlY29uZHMgPCAxMjApCi0gICAgICAgICAgICAgICAgcmV0dXJuICIx
XHhhMG1pbnV0ZSI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIE1h
dGgucm91bmQoaW50ZXJ2YWxJblNlY29uZHMgLyA2MCkgKyAiXHhhMG1pbnV0ZXMiOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZShmcmFjdGlvbikKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uID4gMCAmJiBmcmFjdGlvbiA8IDAuMDEpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICI8IDElIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChmcmFjdGlvbiAqIDEwMCkgKyAiJSI7Ci0gICAgICAg
IH0KLQotICAgICAgICBpZiAoIXRoaXMuX3Jlc3VsdHMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgaWYgKHRoaXMuX3F1ZXVlLmlkID09PSAic3R5bGUtcXVldWUiKSB7Ci0gICAgICAg
ICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgICAgICBhZGRMaW5lKHRoaXMu
ZWxlbWVudCwgIlRpbWUgdG8gcmVzdWx0OiIpOwotICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVs
ZW1lbnQsICItIG1lZGlhbjogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5tZWRp
YW5Ub3RhbFRpbWVJblNlY29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgIGFkZExpbmUodGhpcy5l
bGVtZW50LCAiLSBhdmVyYWdlOiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlzLl9yZXN1bHRzLmF2
ZXJhZ2VUb3RhbFRpbWVJblNlY29uZHMpICsgIi4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcyAhPT0gdGhpcy5fcmVzdWx0cy5w
YXRjaGVzV2l0aFJldHJpZXNDb3VudCkgewotICAgICAgICAgICAgICAgIGFkZERpdmlkZXIodGhp
cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YXIgbnVtYmVyT2ZQYXRjaGVzVGhhdEhhZEZp
bmFsUmVzdWx0c0F0Rmlyc3RUcnkgPSB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcyAtIHRoaXMu
X3Jlc3VsdHMucGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQgLSB0aGlzLl9yZXN1bHRzLnBhdGNoZXNU
aGF0RGlkTm90Q29tcGxldGVDb3VudCArIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVk
QW5kRGlkTm90Q29tcGxldGVDb3VudDsKLSAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGZvcm1h
dFBlcmNlbnRhZ2UobnVtYmVyT2ZQYXRjaGVzVGhhdEhhZEZpbmFsUmVzdWx0c0F0Rmlyc3RUcnkg
LyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIG9mIHBhdGNoZXMgIjsKLSAgICAgICAg
ICAgICAgICB0ZXh0ICs9ICh0aGlzLl9xdWV1ZS5pZCA9PT0gImNvbW1pdC1xdWV1ZSIpID8gIndl
cmUgbGFuZGVkIG9yIHJlamVjdGVkIiA6ICJoYWQgZmluYWwgcmVzdWx0cyI7Ci0gICAgICAgICAg
ICAgICAgdGV4dCArPSAiIGF0IGZpcnN0IHRyeS4gVGltZSB0byByZXN1bHQ6IgotICAgICAgICAg
ICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAgICAgICBhZGRM
aW5lKHRoaXMuZWxlbWVudCwgIi0gbWVkaWFuOiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlzLl9y
ZXN1bHRzLm1lZGlhblRvdGFsVGltZUZvclBhdGNoZXNUaGF0V2VyZU5vdFJldHJpZWRJblNlY29u
ZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIi0gYXZl
cmFnZTogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5hdmVyYWdlVG90YWxUaW1l
Rm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZEluU2Vjb25kcykgKyAiLiIpOwotICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0RGlkTm90QXBwbHlDb3VudCAhPT0g
dGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQpIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RB
cHBseUNvdW50IC0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0Fw
cGx5Q291bnQgPT09IG51bWJlck9mUGF0Y2hlc1RoYXRIYWRGaW5hbFJlc3VsdHNBdEZpcnN0VHJ5
KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJOb25lIG9m
IHRoZXNlIHBhdGNoZXMgYXBwbGllZCB0byB0cnVuay4iKTsKLSAgICAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJUaGlz
IGluY2x1ZGVzICIgKyBmb3JtYXRQZXJjZW50YWdlKCh0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0
RGlkTm90QXBwbHlDb3VudCAtIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vh
c2VkVG9BcHBseUNvdW50KSAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgdGhhdCBk
aWQgbm90IGFwcGx5IHRvIHRydW5rLiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RDb21w
bGV0ZUNvdW50ICE9PSB0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5vdENv
bXBsZXRlQ291bnQpIHsKLSAgICAgICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7
Ci0gICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsIGZvcm1hdFBlcmNlbnRhZ2Uo
KHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RDb21wbGV0ZUNvdW50IC0gdGhpcy5fcmVz
dWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21wbGV0ZUNvdW50KSAvIHRoaXMuX3Jl
c3VsdHMudG90YWxQYXRjaGVzKSArICIgb2YgcGF0Y2hlcyBjZWFzZWQgdG8gYmUgZWxpZ2libGUg
Zm9yIHByb2Nlc3NpbmcgYmVmb3JlIHRoZSBmaXJzdCB0cnkgZmluaXNoZWQuIik7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNXaXRoUmV0cmll
c0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgYWRkRGl2aWRlcih0aGlzLmVsZW1lbnQpOwotICAg
ICAgICAgICAgICAgIHZhciB0ZXh0ID0gZm9ybWF0UGVyY2VudGFnZSh0aGlzLl9yZXN1bHRzLnBh
dGNoZXNXaXRoUmV0cmllc0NvdW50IC8gdGhpcy5fcmVzdWx0cy50b3RhbFBhdGNoZXMpICsgIiBv
ZiBwYXRjaGVzIGhhZCB0byBiZSByZXRyaWVkIjsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5f
cmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21wbGV0ZUNvdW50KSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHRleHQgKz0gIiwgaW5jbHVkaW5nICIgKyBmb3JtYXRQZXJjZW50YWdl
KHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGVDb3VudCAv
IHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgdGhhdCBrZXB0IGJlaW5nIHJldHJpZWQg
dW50aWwgdGhlIHBhdGNoIGJlY2FtZSBpbmVsaWdpYmxlIGZvciBwcm9jZXNzaW5nIjsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vh
c2VkVG9BcHBseUNvdW50KQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiLCBhbmQg
IiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRD
ZWFzZWRUb0FwcGx5Q291bnQgLyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIHRoYXQg
a2VwdCBiZWluZyByZXRyaWVkIHVudGlsIHRoZSBwYXRjaCBjZWFzZWQgdG8gYXBwbHkgdG8gdHJ1
bmsuIjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAg
dGV4dCArPSAiLiI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9yZXN1bHRzLnBh
dGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHlDb3VudCkKLSAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSAiLCBpbmNsdWRpbmcgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0
cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQgLyB0aGlzLl9yZXN1bHRz
LnRvdGFsUGF0Y2hlcykgKyAiIHRoYXQgd2VyZSBzcGlubmluZyB1bnRpbCB0aGUgcGF0Y2ggY2Vh
c2VkIHRvIGFwcGx5IHRvIHRydW5rLiI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICB0ZXh0ICs9ICIuIjsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0
cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRleHQgKz0gKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQg
PT09IHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWRDb3Vu
dCkgPyAiIEFsbCBvZiB0aGVtIiA6ICIgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0
cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50IC8gdGhpcy5fcmVzdWx0
cy50b3RhbFBhdGNoZXMpOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgZmluYWxseSBw
cm9kdWNlZCBhIHJlc3VsdCwgd2hpY2ggdG9vazoiOwotICAgICAgICAgICAgICAgICAgICBhZGRM
aW5lKHRoaXMuZWxlbWVudCwgdGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZExpbmUodGhp
cy5lbGVtZW50LCAiLSBtZWRpYW46ICIgKyBwbHVyYWxpemVNaW51dGVzKHRoaXMuX3Jlc3VsdHMu
bWVkaWFuVG90YWxUaW1lRm9yUGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWRJblNl
Y29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQs
ICItIGF2ZXJhZ2U6ICIgKyBwbHVyYWxpemVNaW51dGVzKHRoaXMuX3Jlc3VsdHMuYXZlcmFnZVRv
dGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkSW5TZWNvbmRzKSAr
ICIuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGFkZExp
bmUodGhpcy5lbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIGFkZERpdmlkZXIodGhpcy5lbGVtZW50KTsKLSAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1l
bnQsICJXYWl0IHRpbWUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhcnRlZDoiKTsKLSAgICAgICAgYWRk
TGluZSh0aGlzLmVsZW1lbnQsICItIG1lZGlhbjogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5f
cmVzdWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcykgKyAiOyIpOwotICAgICAgICBhZGRMaW5l
KHRoaXMuZWxlbWVudCwgIi0gYXZlcmFnZTogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVz
dWx0cy5hdmVyYWdlV2FpdFRpbWVJblNlY29uZHMpICsgIi4iKTsKLSAgICAgICAgYWRkTGluZSh0
aGlzLmVsZW1lbnQsICItIHdvcnN0OiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlzLl9yZXN1bHRz
Lm1heGltdW1XYWl0VGltZUluU2Vjb25kcykgKyAiLiIpOwotICAgICAgICBpZiAodGhpcy5fcmVz
dWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcyA8IDMgKiA2MCAmJiB0aGlzLl9yZXN1bHRzLnBh
dGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlc0NvdW50KQotICAgICAgICAgICAgYWRkTGlu
ZSh0aGlzLmVsZW1lbnQsIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhh
dFdhaXRlZE1vcmVUaGFuM01pbnV0ZXNDb3VudCAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVz
KSArICIgb2YgcGF0Y2hlcyBoYWQgYSB3YWl0IHRpbWUgb2YgbW9yZSB0aGFuIDMgbWludXRlcy4i
KTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdENhdXNlZEludGVybmFs
RXJyb3IubGVuZ3RoKSB7Ci0gICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdENhdXNlZEludGVybmFsRXJy
b3IubGVuZ3RoID09PSAxKQotICAgICAgICAgICAgICAgIGFkZEVycm9yKHRoaXMuZWxlbWVudCwg
Ik9uZSBwYXRjaCBjYXVzZWQgaW50ZXJuYWwgZXJyb3IiKTsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBhZGRFcnJvcih0aGlzLmVsZW1lbnQsIHRoaXMuX3Jlc3VsdHMucGF0Y2hl
c1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yLmxlbmd0aCArICJceGEwcGF0Y2hlcyBjYXVzZWQgaW50
ZXJuYWwgZXJyb3IsIHBsZWFzZSBzZWUgcGF0Y2ggbnVtYmVycyBpbiBjb25zb2xlIGxvZy4iKTsK
LSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJQYXRjaGVzIHRoYXQgY2F1c2VkIGludGVybmFsIGVy
cm9yIGZvciAiICsgdGhpcy5fcmVzdWx0cy5xdWV1ZUlEICsgIjogIiArIHRoaXMuX3Jlc3VsdHMu
cGF0Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yKTsKLSAgICAgICAgfQotICAgIH0sCi0KLSAg
ICBfdXBkYXRlU29vbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2V0VGltZW91dCh0aGlz
Ll91cGRhdGUuYmluZCh0aGlzKSwgTWV0cmljc0J1YmJsZVZpZXcuVXBkYXRlU29vblRpbWVvdXQp
OwotICAgIH0sCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
TWV0cmljc0J1YmJsZVZpZXcuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMj
IC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzTWFp
bi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzTWFpbi5qcwko
cmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc01haW4uanMJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwzODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBo
YXNCdWJibGVzID0gdHlwZW9mIGJ1YmJsZVF1ZXVlU2VydmVyICE9ICJ1bmRlZmluZWQiOwotCi12
YXIgYW5hbHl6ZXIgPSBuZXcgQW5hbHl6ZXI7Ci0KLXZhciBhbGxCdWlsZGVyUmVzdWx0c1BzZXVk
b1F1ZXVlID0geyBpZDogImFsbEJ1aWxkZXJSZXN1bHRzUHNldWRvUXVldWUiIH07Ci12YXIgYWxs
UmVzdWx0c1BzZXVkb1F1ZXVlID0geyBpZDogImFsbFJlc3VsdHNQc2V1ZG9RdWV1ZSIgfTsKLQot
dmFyIGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZSA9IHt9OwotdmFyIHBs
YXRmb3Jtc0J5RmFtaWx5ID0ge307Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgYnVpbGRib3RzLmxl
bmd0aDsgKytpKSB7Ci0gICAgdmFyIGJ1aWxkYm90ID0gYnVpbGRib3RzW2ldOwotICAgIGZvciAo
dmFyIGlkIGluIGJ1aWxkYm90LnF1ZXVlcykgewotICAgICAgICB2YXIgcXVldWUgPSBidWlsZGJv
dC5xdWV1ZXNbaWRdOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVlc0J5
UGxhdGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dOwotICAgICAgICBpZiAoIXBsYXRm
b3JtKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVlc0J5UGxhdGZvcm1B
bmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dID0ge307Ci0gICAgICAgIGlmICghcGxhdGZvcm0u
YnVpbGRlcnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IHt9OwotCi0gICAgICAg
IHZhciBjYXRlZ29yeU5hbWU7Ci0gICAgICAgIGlmIChxdWV1ZS5idWlsZGVyKQotICAgICAgICAg
ICAgY2F0ZWdvcnlOYW1lID0gImJ1aWxkZXJzIjsKLSAgICAgICAgZWxzZSBpZiAocXVldWUudGVz
dGVyKQotICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gcXVldWUudGVzdENhdGVnb3J5OwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIHF1ZXVlIHR5
cGUuIik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNhdGVn
b3J5ID0gcGxhdGZvcm1bY2F0ZWdvcnlOYW1lXTsKLSAgICAgICAgaWYgKCFjYXRlZ29yeSkKLSAg
ICAgICAgICAgIGNhdGVnb3J5ID0gcGxhdGZvcm1bY2F0ZWdvcnlOYW1lXSA9IHt9OwotCi0gICAg
ICAgIHZhciBidWlsZFR5cGUgPSBxdWV1ZS5kZWJ1ZyA/ICJkZWJ1ZyIgOiAicmVsZWFzZSI7Ci0K
LSAgICAgICAgYnVpbGRRdWV1ZXMgPSBjYXRlZ29yeVtidWlsZFR5cGVdOwotICAgICAgICBpZiAo
IWJ1aWxkUXVldWVzKQotICAgICAgICAgICAgYnVpbGRRdWV1ZXMgPSBjYXRlZ29yeVtidWlsZFR5
cGVdID0gW107Ci0KLSAgICAgICAgYnVpbGRRdWV1ZXMucHVzaChxdWV1ZSk7Ci0gICAgfQotfQot
Ci12YXIgdGVzdE5hbWVzID0ge307Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5Lldl
YktpdDJdID0gIldLMiBUZXN0cyI7Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5Lldl
YktpdDFdID0gIldLMSBUZXN0cyI7Ci0KLQotZnVuY3Rpb24gdXBkYXRlSGlkZGVuUGxhdGZvcm1z
KCkKLXsKLSAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9iamVj
dCgiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwotICAgIHZhciBwbGF0Zm9ybVJvd3Mg
PSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5wbGF0Zm9ybSIpOwotICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgcGxhdGZvcm1Sb3dzLmxlbmd0aDsgKytpKQotICAgICAgICBwbGF0Zm9ybVJv
d3NbaV0uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHBs
YXRmb3JtRmFtaWx5ID0gaGlkZGVuUGxhdGZvcm1GYW1pbGllc1tpXTsKLSAgICAgICAgZm9yICh2
YXIgaiA9IDA7IGogPCBwbGF0Zm9ybXNCeUZhbWlseVtwbGF0Zm9ybUZhbWlseV0ubGVuZ3RoOyAr
K2opIHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1G
YW1pbHldW2pdOwotICAgICAgICAgICAgdmFyIHBsYXRmb3JtUm93ID0gZG9jdW1lbnQucXVlcnlT
ZWxlY3RvcigidHIucGxhdGZvcm0uIiArIG5hbWUpOwotICAgICAgICAgICAgaWYgKHBsYXRmb3Jt
Um93KQotICAgICAgICAgICAgICAgIHBsYXRmb3JtUm93LmNsYXNzTGlzdC5hZGQoImhpZGRlbiIp
OwotICAgICAgICB9Ci0gICAgfQotICAgIHNldHRpbmdzLnVwZGF0ZVRvZ2dsZUJ1dHRvbnMoKTsK
LX0KLQotCi1mdW5jdGlvbiBpbml0UGxhdGZvcm1zQnlGYW1pbHkoKQotewotICAgIHZhciBwbGF0
Zm9ybXMgPSBEYXNoYm9hcmQuc29ydGVkUGxhdGZvcm1zOwotICAgIGZvciAodmFyIGkgaW4gcGxh
dGZvcm1zKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0gd2lsbCBiZSBkaXNw
bGF5ZWQgb24gdGhlIHBhZ2UgYmVmb3JlIGNvbnNpZGVyaW5nIGl0cyBwbGF0Zm9ybSBmYW1pbHku
Ci0gICAgICAgIGlmICghY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBlW3Bs
YXRmb3Jtc1tpXS5uYW1lXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHZhciBw
bGF0Zm9ybUZhbWlseSA9IHNldHRpbmdzLnBhcnNlUGxhdGZvcm1GYW1pbHkocGxhdGZvcm1zW2ld
Lm5hbWUpOwotICAgICAgICBpZiAocGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldKQot
ICAgICAgICAgICAgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldLnB1c2gocGxhdGZv
cm1zW2ldLm5hbWUpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBsYXRmb3Jtc0J5RmFtaWx5
W3BsYXRmb3JtRmFtaWx5XSA9IFtwbGF0Zm9ybXNbaV0ubmFtZV0KLSAgICB9Ci19Ci0KLWZ1bmN0
aW9uIHVuaGlkZGVuUXVldWVzKCkKLXsKLSAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9
IHNldHRpbmdzLmdldE9iamVjdCgiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwotICAg
IHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1aWxkYm90cy5sZW5n
dGg7ICsraSkgewotICAgICAgICB2YXIgYnVpbGRib3QgPSBidWlsZGJvdHNbaV07Ci0gICAgICAg
IGZvciAodmFyIGlkIGluIGJ1aWxkYm90LnF1ZXVlcykgewotICAgICAgICAgICAgdmFyIHF1ZXVl
ID0gYnVpbGRib3QucXVldWVzW2lkXTsKLSAgICAgICAgICAgIGlmICgtMSA9PT0gaGlkZGVuUGxh
dGZvcm1GYW1pbGllcy5pbmRleE9mKHNldHRpbmdzLnBhcnNlUGxhdGZvcm1GYW1pbHkocXVldWUu
cGxhdGZvcm0pKSkKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaChxdWV1ZSk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBhbGxRdWV1ZXMo
Y2F0ZWdvcnkpCi17Ci0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIGlmIChjYXRlZ29yeVsiZGVi
dWciXSkKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjYXRlZ29yeVsiZGVidWciXSk7
Ci0gICAgaWYgKGNhdGVnb3J5WyJyZWxlYXNlIl0pCi0gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5j
b25jYXQoY2F0ZWdvcnlbInJlbGVhc2UiXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotZnVu
Y3Rpb24gYnVpbGRBZ2dyZWdhdGVUYWJsZSgpCi17Ci0gICAgdmFyIHRhYmxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKCJxdWV1ZS1n
cmlkIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgiYWdncmVnYXRlLWdyaWQiKTsKLQotICAg
IHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHJvdy5jbGFzc0xp
c3QuYWRkKCJoZWFkZXJzIik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWlsZGVycyI7Ci0gICAgcm93LmFw
cGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJBbGwgcXVldWVzIjsKLSAgICByb3cu
YXBwZW5kQ2hpbGQoaGVhZGVyKTsKLQotICAgIHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAg
ICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLQotICAgIGNlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHZpZXcgPSBuZXcgTWV0cmlj
c1ZpZXcoYW5hbHl6ZXIsIFthbGxCdWlsZGVyUmVzdWx0c1BzZXVkb1F1ZXVlXSk7Ci0gICAgY2Vs
bC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsK
LQotICAgIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHZp
ZXcgPSBuZXcgTWV0cmljc1ZpZXcoYW5hbHl6ZXIsIFthbGxSZXN1bHRzUHNldWRvUXVldWVdKTsK
LSAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgcm93LmFwcGVuZENoaWxk
KGNlbGwpOwotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLQotICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQodGFibGUpOwotfQotCi1mdW5jdGlvbiBidWlsZFF1ZXVlc1RhYmxlKCkK
LXsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwotICAg
IHRhYmxlLmNsYXNzTGlzdC5hZGQoInF1ZXVlLWdyaWQiKTsKLSAgICB0YWJsZS5pZCA9ICJtZXRy
aWNzLXF1ZXVlcy10YWJsZSI7Ci0KLSAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgidHIiKTsKLSAgICByb3cuY2xhc3NMaXN0LmFkZCgiaGVhZGVycyIpOwotCi0gICAgdmFyIGhl
YWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAgcm93LmFwcGVuZENoaWxk
KGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwot
ICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWlsZGVycyI7Ci0gICAgcm93LmFwcGVuZENoaWxk
KGhlYWRlcik7Ci0KLSAgICBmb3IgKHZhciB0ZXN0ZXJLZXkgaW4gQnVpbGRib3QuVGVzdENhdGVn
b3J5KSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIp
OwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQgPSB0ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENh
dGVnb3J5W3Rlc3RlcktleV1dOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLSAg
ICB9Ci0KLSAgICB0YWJsZS5hcHBlbmRDaGlsZChyb3cpOwotCi0gICAgdmFyIHBsYXRmb3JtcyA9
IERhc2hib2FyZC5zb3J0ZWRQbGF0Zm9ybXM7Ci0KLSAgICBmb3IgKHZhciBpIGluIHBsYXRmb3Jt
cykgewotICAgICAgICB2YXIgcGxhdGZvcm0gPSBwbGF0Zm9ybXNbaV07Ci0gICAgICAgIHZhciBw
bGF0Zm9ybVF1ZXVlcyA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZVtw
bGF0Zm9ybS5uYW1lXTsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybVF1ZXVlcykKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotCi0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
ciIpOwotICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgicGxhdGZvcm0iKTsKLSAgICAgICAgcm93
LmNsYXNzTGlzdC5hZGQocGxhdGZvcm0ubmFtZSk7Ci0KLSAgICAgICAgdmFyIGNlbGwgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQoImxv
Z28iKTsKLQotICAgICAgICB2YXIgcmluZ0ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW1nIik7Ci0gICAgICAgIHJpbmdJbWFnZS5jbGFzc0xpc3QuYWRkKCJyaW5nIik7Ci0gICAgICAg
IHJpbmdJbWFnZS50aXRsZSA9IHBsYXRmb3JtLnJlYWRhYmxlTmFtZTsKLSAgICAgICAgY2VsbC5h
cHBlbmRDaGlsZChyaW5nSW1hZ2UpOwotCi0gICAgICAgIHZhciBsb2dvSW1hZ2UgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgbG9nb0ltYWdlLmNsYXNzTGlzdC5hZGQo
ImxvZ28iKTsKLSAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChsb2dvSW1hZ2UpOwotCi0gICAgICAg
IHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLQotICAgICAgICBjZWxsID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgidGQiKTsKLQotICAgICAgICB2YXIgdmlldyA9IG5ldyBNZXRyaWNzVmlldyhhbmFs
eXplciwgYWxsUXVldWVzKHBsYXRmb3JtUXVldWVzLmJ1aWxkZXJzKSk7Ci0gICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKGNlbGwp
OwotCi0gICAgICAgIGZvciAodmFyIHRlc3RlcktleSBpbiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkp
IHsKLSAgICAgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsK
LQotICAgICAgICAgICAgdmFyIHRlc3RlclByb3BlcnR5ID0gQnVpbGRib3QuVGVzdENhdGVnb3J5
W3Rlc3RlcktleV07Ci0gICAgICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXNbdGVzdGVyUHJvcGVy
dHldKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBuZXcgTWV0cmljc1ZpZXcoYW5hbHl6
ZXIsIGFsbFF1ZXVlcyhwbGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0pKTsKLSAgICAgICAg
ICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICAgICAgfQotCi0gICAgICAg
IHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgfQotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBl
bmRDaGlsZCh0YWJsZSk7Ci0KLSAgICByZXR1cm4gdGFibGU7Ci19Ci0KLWZ1bmN0aW9uIGJ1aWxk
QnViYmxlUXVldWVzVGFibGUoKQotewotICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInRhYmxlIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgicXVldWUtZ3JpZCIpOwot
Ci0gICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgcm93LmNs
YXNzTGlzdC5hZGQoImhlYWRlcnMiKTsKLQotICAgIGZvciAoaWQgaW4gYnViYmxlUXVldWVTZXJ2
ZXIucXVldWVzKSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0aCIpOwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQgPSBidWJibGVRdWV1ZVNlcnZlci5x
dWV1ZXNbaWRdLnNob3J0TmFtZTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0g
ICAgfQotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLQotICAgIHJvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgcm93LmNsYXNzTGlzdC5hZGQoInBsYXRmb3JtIik7
Ci0KLSAgICBmb3IgKGlkIGluIGJ1YmJsZVF1ZXVlU2VydmVyLnF1ZXVlcykgewotICAgICAgICB2
YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHZhciB2aWV3
ID0gbmV3IE1ldHJpY3NCdWJibGVWaWV3KGFuYWx5emVyLCBidWJibGVRdWV1ZVNlcnZlci5xdWV1
ZXNbaWRdKTsKLSAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAg
ICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0gICAgfQotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQo
cm93KTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFibGUpOwotCi0gICAgcmV0
dXJuIHRhYmxlOwotfQotCi1mdW5jdGlvbiBkb2N1bWVudFJlYWR5KCkKLXsKLSAgICB2YXIgcmFu
Z2VQaWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgcmFuZ2VQaWNr
ZXIuaWQgPSAicmFuZ2UtcGlja2VyIjsKLSAgICByYW5nZVBpY2tlci5zaXplID0gNDA7Ci0gICAg
cmFuZ2VQaWNrZXIudGV4dENvbnRlbnQgPSAiUGxlYXNlIHNlbGVjdCBhIGRhdGUgcmFuZ2UiOwot
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmFuZ2VQaWNrZXIpOwotICAgICQoIiNyYW5n
ZS1waWNrZXIiKS5kYXRlUmFuZ2VQaWNrZXIoewotICAgICAgICBzdGFydE9mV2VlazogbmF2aWdh
dG9yLmxhbmd1YWdlID09PSAiZW4tdXMiID8gInN1bmRheSIgOiAibW9uZGF5IiwKLSAgICAgICAg
ZW5kRGF0ZTogbmV3IERhdGUoKSwKLSAgICAgICAgc2hvd1Nob3J0Y3V0czogZmFsc2UsCi0gICAg
ICAgIGdldFZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudGV4dENvbnRlbnQ7IH0sCi0g
ICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbihzKSB7IHRoaXMudGV4dENvbnRlbnQgPSBzOyB9Ci0g
ICAgfSkKLSAgICAuYmluZCgnZGF0ZXBpY2tlci1hcHBseScsZnVuY3Rpb24oZXZlbnQsb2JqKQot
ICAgIHsKLSAgICAgICAgLy8gVGhpcyBtZXNzYWdlIGlzIGRpc3BhdGNoZWQgZXZlbiB3aGVuIHJh
bmdlIGhhc24ndCBiZWVuIHNlbGVjdGVkIChvciBvbmx5IG9uZSBlbmRwb2ludCB3YXMpLAotICAg
ICAgICAvLyBpbiB3aGljaCBjYXNlIHRoZSBhY3R1YWwgcmFuZ2UgaGFzbid0IGNoYW5nZWQsIGFu
ZCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgotICAgICAgICBpZiAoaXNOYU4ob2JqLmRhdGUxKSB8
fCBpc05hTihvYmouZGF0ZTIpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBl
bmREYXRlID0gbmV3IERhdGUobmV3IERhdGUob2JqLmRhdGUyKS5zZXREYXRlKG9iai5kYXRlMi5n
ZXREYXRlKCkgKyAxKSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgcGVyZm9ybWFuY2Ug
Ym90cy4KLSAgICAgICAgdmFyIHF1ZXVlcyA9IHVuaGlkZGVuUXVldWVzKCkuZmlsdGVyKGZ1bmN0
aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5idWlsZGVyIHx8IHF1ZXVlLnRlc3RlcjsgfSk7Ci0g
ICAgICAgIGFuYWx5emVyLmFuYWx5emUocXVldWVzLCBvYmouZGF0ZTEsIGVuZERhdGUpOwotICAg
IH0pOwotCi0gICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoIm1ldHJpY3MtbG9h
ZGluZy1pbmRpY2F0b3IiKTsKLSAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0gIkxv
YWRpbmcgKGZpcnN0IGxvYWQgdGFrZXMgc2V2ZXJhbCBtaW51dGVzKVx1MjAyNiI7Ci0gICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKLQotICAgIGFuYWx5emVy
LmFkZEV2ZW50TGlzdGVuZXIoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcsIGZ1bmN0aW9uKCkgewot
ICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7Ci0g
ICAgfSwgdGhpcyk7Ci0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5FdmVu
dC5GaW5pc2hlZCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvYWRpbmdJbmRpY2F0b3Iuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250
ZW50ID0gIkxvYWRpbmdcdTIwMjYiOyAvLyBSZW1vdmUgdGhlIGZpcnN0IHRpbWUgd2FybmluZyBu
b3cuCi0gICAgfSwgdGhpcyk7Ci0KLSAgICBidWlsZEFnZ3JlZ2F0ZVRhYmxlKCk7Ci0gICAgaWYg
KGhhc0J1YmJsZXMpIHsKLSAgICAgICAgdmFyIHRhYmxlc0RpdmlkZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGFibGVzRGl2aWRlci5jbGFzc0xpc3QuYWRkKCJ0
YWJsZXMtZGl2aWRlciIpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhYmxl
c0RpdmlkZXIpOwotICAgICAgICBidWlsZEJ1YmJsZVF1ZXVlc1RhYmxlKCk7Ci0gICAgfQotCi0g
ICAgdmFyIHRhYmxlc0RpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0YWJsZXNEaXZpZGVyLmNsYXNzTGlzdC5hZGQoInRhYmxlcy1kaXZpZGVyIik7Ci0gICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YWJsZXNEaXZpZGVyKTsKLQotICAgIHZhciBxdWV1ZXNU
YWJsZSA9IGJ1aWxkUXVldWVzVGFibGUoKTsKLSAgICB0YWJsZXNEaXZpZGVyLnN0eWxlLmhlaWdo
dCA9IE1hdGgubWF4KHRhYmxlc0RpdmlkZXIub2Zmc2V0SGVpZ2h0LCB3aW5kb3cuaW5uZXJIZWln
aHQgLSB0YWJsZXNEaXZpZGVyLm9mZnNldFRvcCkgKyAicHgiOwotCi0gICAgaWYgKHNldHRpbmdz
LmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHZhciBzZXR0aW5nc0J1dHRvbiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBzZXR0aW5nc0J1dHRvbi5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2V0dGluZ3MudG9nZ2xlU2V0dGluZ3NEaXNwbGF5
KCk7IH0pOwotICAgICAgICBzZXR0aW5nc0J1dHRvbi5jbGFzc0xpc3QuYWRkKCJzZXR0aW5ncyIp
OwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNldHRpbmdzQnV0dG9uKTsKLQot
ICAgICAgICB2YXIgc2V0dGluZ3NXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7Ci0gICAgICAgIHNldHRpbmdzV3JhcHBlci5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlk
ZGVuIiwgInNldHRpbmdzV3JhcHBlciIpCi0KLSAgICAgICAgdmFyIHBsYXRmb3JtRmFtaWx5VG9n
Z2xlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBwbGF0
Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwgImhpZGRlbiIs
ICJmYW1pbHlUb2dnbGVXcmFwcGVyIik7Ci0KLSAgICAgICAgdmFyIHVuaGlkZUFsbEJ1dHRvbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB1bmhpZGVBbGxCdXR0b24u
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNldHRpbmdzLmNsZWFySGlk
ZGVuUGxhdGZvcm1GYW1pbGllcygpOyB9KTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLmNsYXNz
TGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24i
KTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLnNldEF0dHJpYnV0ZSgiaWQiLCAiYWxsLXBsYXRm
b3JtRmFtaWx5VG9nZ2xlQnV0dG9uIik7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRvbi50ZXh0Q29u
dGVudCA9ICJhbGwiOwotICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuYXBwZW5k
Q2hpbGQodW5oaWRlQWxsQnV0dG9uKTsKLQotICAgICAgICBpbml0UGxhdGZvcm1zQnlGYW1pbHko
KTsKLSAgICAgICAgZm9yICh2YXIgcGxhdGZvcm1GYW1pbHkgaW4gcGxhdGZvcm1zQnlGYW1pbHkp
IHsKLSAgICAgICAgICAgIHZhciBwbGF0Zm9ybUZhbWlseVRvZ2dsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgc2V0dGlu
Z3MudG9nZ2xlSGlkZGVuUGxhdGZvcm1GYW1pbHkodGhpcy50b1N0cmluZygpKTsKLSAgICAgICAg
ICAgIH0uYmluZChwbGF0Zm9ybUZhbWlseSkpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlU
b2dnbGUuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwgImhpZGRlbiIsICJwbGF0Zm9ybUZhbWlseVRv
Z2dsZUJ1dHRvbiIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUuc2V0QXR0cmli
dXRlKCJpZCIsIHBsYXRmb3JtRmFtaWx5ICsgIi1wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbiIp
OwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUudGV4dENvbnRlbnQgPSBwbGF0Zm9y
bUZhbWlseTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlV3JhcHBlci5hcHBlbmRD
aGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0dGluZ3NX
cmFwcGVyLmFwcGVuZENoaWxkKHBsYXRmb3JtRmFtaWx5VG9nZ2xlV3JhcHBlcik7Ci0gICAgICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2V0dGluZ3NXcmFwcGVyKTsKLQotICAgICAgICB1
cGRhdGVIaWRkZW5QbGF0Zm9ybXMoKTsKLSAgICAgICAgc2V0dGluZ3MuYWRkU2V0dGluZ0xpc3Rl
bmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIiwgdXBkYXRlSGlkZGVuUGxhdGZvcm1zKTsKLSAg
ICAgICAgc2V0dGluZ3MuYWRkU2V0dGluZ0xpc3RlbmVyKCJlbnRlcmVkU2V0dGluZ3MiLCBmdW5j
dGlvbigpIHsgCi0gICAgICAgICAgICAkKCdodG1sLCBib2R5Jykuc3RvcCgpLmFuaW1hdGUoewot
ICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgiI21ldHJpY3MtcXVldWVzLXRhYmxlIikub2Zm
c2V0KCkudG9wCi0gICAgICAgICAgICB9LCAyMDApOwotICAgICAgICB9KTsKLSAgICB9Ci19Ci0K
LWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBkb2N1bWVudFJl
YWR5KTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NN
YWluLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1u
YXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc1ZpZXcuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc1ZpZXcuanMJKHJldmlzaW9uIDI2ODcz
MSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NWaWV3LmpzCShub25leGlzdGVudCkK
QEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1NZXRyaWNzVmlldyA9IGZ1bmN0
aW9uKGFuYWx5emVyLCBxdWV1ZXMpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0g
ICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhp
cy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1ZXVlLXZpZXciKTsKLQotICAgIHRoaXMuX3Jlc3Vs
dHMgPSB7IH07Ci0KLSAgICB0aGlzLl9kZWJ1Z1F1ZXVlcyA9IHF1ZXVlcy5maWx0ZXIoZnVuY3Rp
b24ocXVldWUpIHsgcmV0dXJuIHF1ZXVlLnBsYXRmb3JtICYmIHF1ZXVlLmRlYnVnOyB9KTsKLSAg
ICB0aGlzLl9yZWxlYXNlUXVldWVzID0gcXVldWVzLmZpbHRlcihmdW5jdGlvbihxdWV1ZSkgeyBy
ZXR1cm4gcXVldWUucGxhdGZvcm0gJiYgIXF1ZXVlLmRlYnVnOyB9KTsKLSAgICB0aGlzLl9hZ2dy
ZWdhdGVQc2V1ZG9RdWV1ZXMgPSBxdWV1ZXMuZmlsdGVyKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVy
biBxdWV1ZS5wbGF0Zm9ybSA9PT0gdW5kZWZpbmVkOyB9KTsKLQotICAgIGlmICh0aGlzLl9hZ2dy
ZWdhdGVQc2V1ZG9RdWV1ZXMubGVuZ3RoKQotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgiYWdncmVnYXRlLXF1ZXVlLXZpZXciKTsKLQotICAgIHRoaXMuX2hhc011bHRpcGxlRGVi
dWdRdWV1ZXMgPSB0aGlzLl9kZWJ1Z1F1ZXVlcy5sZW5ndGggPiAxOwotICAgIHRoaXMuX2hhc011
bHRpcGxlUmVsZWFzZVF1ZXVlcyA9IHRoaXMuX3JlbGVhc2VRdWV1ZXMubGVuZ3RoID4gMTsKLQot
ICAgIGFuYWx5emVyLmFkZEV2ZW50TGlzdGVuZXIoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcsIHRo
aXMuX2NsZWFyUmVzdWx0cywgdGhpcyk7Ci0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihB
bmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIHRoaXMuX3F1ZXVlUmVzdWx0c0FkZGVkLCB0aGlz
KTsKLSAgICAKLSAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci19OwotCi1NZXRyaWNzVmlldy5VcGRh
dGVTb29uVGltZW91dCA9IDEwMDsgLy8gMTAwIG1zCi0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoTWV0cmljc1ZpZXcpOwotCi1NZXRyaWNzVmlldy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IE1ldHJpY3NWaWV3LAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVjdC5w
cm90b3R5cGUsCi0KLSAgICBfY2xlYXJSZXN1bHRzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICB0aGlzLl9yZXN1bHRzID0geyB9OwotICAgICAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci0gICAg
fSwKLQotICAgIF9xdWV1ZVJlc3VsdHNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5fZGVidWdRdWV1ZXMuc29tZShmdW5jdGlvbihxdWV1ZSkgeyByZXR1cm4g
cXVldWUuaWQgPT09IGV2ZW50LmRhdGEucXVldWVJRDsgfSkKLSAgICAgICAgfHwgdGhpcy5fcmVs
ZWFzZVF1ZXVlcy5zb21lKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5pZCA9PT0gZXZl
bnQuZGF0YS5xdWV1ZUlEOyB9KQotICAgICAgICB8fCB0aGlzLl9hZ2dyZWdhdGVQc2V1ZG9RdWV1
ZXMuc29tZShmdW5jdGlvbihxdWV1ZSkgeyByZXR1cm4gcXVldWUuaWQgPT09IGV2ZW50LmRhdGEu
cXVldWVJRDsgfSkpIHsKLSAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHNbZXZlbnQuZGF0YS5xdWV1
ZUlEXSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci0gICAg
ICAgIH07Ci0gICAgfSwKLQotICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFkZExp
bmUoZWxlbWVudCwgdGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGxpbmUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQg
PSB0ZXh0OwotICAgICAgICAgICAgbGluZS5jbGFzc0xpc3QuYWRkKCJyZXN1bHQtbGluZSIpOwot
ICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIGZ1bmN0aW9uIGFkZEVycm9yKGVsZW1lbnQsIHRleHQpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGFkZExpbmUoZWxlbWVudCwgdGV4dCk7Ci0gICAgICAgICAgICBlbGVtZW50Lmxhc3RDaGls
ZC5jbGFzc0xpc3QuYWRkKCJlcnJvci1saW5lIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5j
dGlvbiBhZGREaXZpZGVyKGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBkaXZp
ZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBkaXZpZGVy
LmNsYXNzTGlzdC5hZGQoImRpdmlkZXIiKTsKLSAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5kQ2hp
bGQoZGl2aWRlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRRdWV1ZVJl
c3VsdHMocXVldWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghKHF1ZXVlLmlkIGluIHRo
aXMuX3Jlc3VsdHMpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdmFy
IHJlc3VsdCA9IHRoaXMuX3Jlc3VsdHNbcXVldWUuaWRdOwotCi0gICAgICAgICAgICB2YXIgaXNB
Z2dyZWdhdGVRdWV1ZSA9IC0xICE9PSB0aGlzLl9hZ2dyZWdhdGVQc2V1ZG9RdWV1ZXMuaW5kZXhP
ZihxdWV1ZSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXN1bHQuYnVpbGRib3RSYW5nZUVycm9yICYm
ICFpc0FnZ3JlZ2F0ZVF1ZXVlKQotICAgICAgICAgICAgICAgIGFkZEVycm9yKHRoaXMuZWxlbWVu
dCwgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvclRleHQpOwotCi0gICAgICAgICAgICBpZiAoInBl
cmNlbnRhZ2VPZkdyZWVuIiBpbiByZXN1bHQpCi0gICAgICAgICAgICAgICAgYWRkTGluZSh0aGlz
LmVsZW1lbnQsICJHcmVlbiAiICsgTWF0aC5yb3VuZChyZXN1bHQucGVyY2VudGFnZU9mR3JlZW4g
KiAxMDApIC8gMTAwICsgIiUgb2YgdGltZSIpOwotCi0gICAgICAgICAgICBpZiAoaXNBZ2dyZWdh
dGVRdWV1ZSAmJiByZXN1bHQubG9uZ2VzdFN0cmV0Y2hPZlJlZCkgewotICAgICAgICAgICAgICAg
IGFkZExpbmUodGhpcy5lbGVtZW50LCAiTG9uZ2VzdCByZWQ6ICIgKyBNYXRoLnJvdW5kKHJlc3Vs
dC5sb25nZXN0U3RyZXRjaE9mUmVkIC8gNjApICsgIiBtaW51dGVzIik7Ci0gICAgICAgICAgICAg
ICAgYWRkRGl2aWRlcih0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgicGVy
Y2VudGFnZU9mR3JlZW4iIGluIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBhZGREaXZpZGVyKHRo
aXMuZWxlbWVudCk7Ci0KLSAgICAgICAgICAgIGlmIChxdWV1ZS5idWlsZGVyIHx8IGlzQWdncmVn
YXRlUXVldWUpIHsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIlRpbWUg
ZnJvbSBjb21taXQ6ICIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAi
QXZlcmFnZTogIiArIE1hdGgucm91bmQocmVzdWx0LmF2ZXJhZ2VTZWNvbmRzRnJvbUNvbW1pdCAv
IDYwKSArICIgbWludXRlcyIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50
LCAiTWVkaWFuOiAiICsgTWF0aC5yb3VuZChyZXN1bHQubWVkaWFuU2Vjb25kc0Zyb21Db21taXQg
LyA2MCkgKyAiIG1pbnV0ZXMiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVu
dCwgIldvcnN0OiAiICsgTWF0aC5yb3VuZChyZXN1bHQud29yc3RTZWNvbmRzRnJvbUNvbW1pdCAv
IDYwKSArICIgbWludXRlcyAociIgKyByZXN1bHQucmV2aXNpb25XaXRoV29yc3RUaW1lRnJvbUNv
bW1pdCArICIpIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIFRp
bWUgZnJvbSBjb21taXQgaXMgcHJldHR5IHVzZWxlc3MgZm9yIHRlc3RlciBib3RzLgotICAgICAg
ICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiVGltZSBvbiB0aGUgYm90OiAiKTsKLSAg
ICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIkF2ZXJhZ2U6ICIgKyBNYXRoLnJv
dW5kKHJlc3VsdC5hdmVyYWdlU2Vjb25kc093blRpbWUgLyA2MCkgKyAiIG1pbnV0ZXMiKTsKLSAg
ICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIk1lZGlhbjogIiArIE1hdGgucm91
bmQocmVzdWx0Lm1lZGlhblNlY29uZHNPd25UaW1lIC8gNjApICsgIiBtaW51dGVzIik7Ci0gICAg
ICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJXb3JzdDogIiArIE1hdGgucm91bmQo
cmVzdWx0LndvcnN0U2Vjb25kc093blRpbWUgLyA2MCkgKyAiIG1pbnV0ZXMgKHIiICsgcmVzdWx0
LnJldmlzaW9uV2l0aFdvcnN0T3duVGltZSArICIpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRCdWlsZEFyY2hpdGVjdHVyZShxdWV1ZXMsIHNo
b3dBcmNoaXRlY3R1cmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHF1ZXVlcy5mb3JFYWNoKGZ1
bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxhYmVsVGV4dCA9IHF1ZXVlLmRl
YnVnID8gIkRlYnVnIiA6ICJSZWxlYXNlIjsKLSAgICAgICAgICAgICAgICBpZiAoc2hvd0FyY2hp
dGVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocXVldWUuYXJjaGl0ZWN0dXJlID09
PSBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsYWJlbFRleHQgKz0gIiAoVW5pdmVyc2FsKSI7Ci0gICAgICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHF1ZXVlLmFyY2hpdGVjdHVyZSA9PT0gQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1
cmUuU2l4dHlGb3VyQml0KQotICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0ICs9ICIg
KDY0LWJpdCkiOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWV1ZS5hcmNoaXRlY3R1
cmUgPT09IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdCkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxhYmVsVGV4dCArPSAiICgzMi1iaXQpIjsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgdmFyIHJlbGVhc2VMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImEiKTsKLSAgICAgICAgICAgICAgICByZWxlYXNlTGFiZWwuY2xhc3NMaXN0LmFkZCgi
cXVldWVMYWJlbCIpOwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50ZXh0Q29udGVudCA9
IGxhYmVsVGV4dDsKLSAgICAgICAgICAgICAgICByZWxlYXNlTGFiZWwuaHJlZiA9IHF1ZXVlLm92
ZXJ2aWV3VVJMOwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50YXJnZXQgPSAiX2JsYW5r
IjsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVsZWFzZUxhYmVs
KTsKLQotICAgICAgICAgICAgICAgIGFwcGVuZFF1ZXVlUmVzdWx0cy5jYWxsKHRoaXMsIHF1ZXVl
KTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBhcHBl
bmRCdWlsZEFyY2hpdGVjdHVyZS5jYWxsKHRoaXMsIHRoaXMuX3JlbGVhc2VRdWV1ZXMsIHRoaXMu
X2hhc011bHRpcGxlUmVsZWFzZVF1ZXVlcyk7Ci0gICAgICAgIGFwcGVuZEJ1aWxkQXJjaGl0ZWN0
dXJlLmNhbGwodGhpcywgdGhpcy5fZGVidWdRdWV1ZXMsIHRoaXMuX2hhc011bHRpcGxlRGVidWdR
dWV1ZXMpOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fYWdncmVnYXRlUHNldWRvUXVldWVzLmZv
ckVhY2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAgIGFwcGVuZFF1ZXVlUmVzdWx0cy5j
YWxsKHRoaXMsIHF1ZXVlKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAg
X3VwZGF0ZVNvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNldFRpbWVvdXQodGhpcy5f
dXBkYXRlLmJpbmQodGhpcyksIE1ldHJpY3NWaWV3LlVwZGF0ZVNvb25UaW1lb3V0KTsKLSAgICB9
LAotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NW
aWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1u
YXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9wb3Zlci5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCShub25leGlzdGVudCkKQEAgLTEsNTQ0ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1EYXNoYm9hcmQuUG9wb3ZlciA9IGZ1bmN0aW9uKGRl
bGVnYXRlKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZGVsZWdh
dGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLl9lZGdlID0gbnVsbDsKLSAgICB0aGlzLl9mcmFtZSA9
IG5ldyBEYXNoYm9hcmQuUmVjdDsKLSAgICB0aGlzLl9jb250ZW50ID0gbnVsbDsKLSAgICB0aGlz
Ll90YXJnZXRGcmFtZSA9IG5ldyBEYXNoYm9hcmQuUmVjdDsKLSAgICB0aGlzLl9wcmVmZXJyZWRF
ZGdlcyA9IG51bGw7Ci0KLSAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSBmYWxzZTsKLQot
ICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0
aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IERhc2hib2FyZC5Qb3BvdmVyLlN0eWxlQ2xhc3NOYW1l
OwotICAgIHRoaXMuX2NhbnZhc0lkID0gInBvcG92ZXItIiArIChEYXNoYm9hcmQuUG9wb3Zlci5j
YW52YXNJZCsrKTsKLSAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9ICIt
d2Via2l0LWNhbnZhcygiICsgdGhpcy5fY2FudmFzSWQgKyAiKSI7Ci0gICAgdGhpcy5fZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7Ci0gICAgCi0g
ICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9ICJj
b250YWluZXIiOwotfTsKLQotRGFzaGJvYXJkLlBvcG92ZXIuU3R5bGVDbGFzc05hbWUgPSAicG9w
b3ZlciI7Ci1EYXNoYm9hcmQuUG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lID0gInZpc2libGUiOwot
RGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lID0gInN0ZXAtaW4iOwotRGFzaGJvYXJk
LlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSA9ICJmYWRlLW91dCI7Ci1EYXNoYm9hcmQuUG9wb3Zl
ci5QcmV2ZW50RG9jdW1lbnRTY3JvbGxpbmdDbGFzc05hbWUgPSAicG9wb3Zlci1wcmV2ZW50LWRv
Y3VtZW50LXNjcm9sbGluZyI7Ci1EYXNoYm9hcmQuUG9wb3Zlci5jYW52YXNJZCA9IDA7Ci1EYXNo
Ym9hcmQuUG9wb3Zlci5Db3JuZXJSYWRpdXMgPSA1OwotRGFzaGJvYXJkLlBvcG92ZXIuTWluV2lk
dGggPSA0MDsKLURhc2hib2FyZC5Qb3BvdmVyLk1pbkhlaWdodCA9IDQwOwotRGFzaGJvYXJkLlBv
cG92ZXIuU2hhZG93UGFkZGluZyA9IDU7Ci1EYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFkZGlu
ZyA9IDU7Ci1EYXNoYm9hcmQuUG9wb3Zlci5BbmNob3JTaXplID0gbmV3IERhc2hib2FyZC5TaXpl
KDIyLCAxMSk7Ci1EYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dFZGdlSW5zZXRzID0gbmV3IERhc2hi
b2FyZC5FZGdlSW5zZXRzKERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcpOwotCi1CYXNl
T2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKERhc2hib2FyZC5Qb3BvdmVyKTsKLQotRGFz
aGJvYXJkLlBvcG92ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9hcmQu
UG9wb3ZlciwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgLy8g
UHVibGljCi0KLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
ZWxlbWVudDsKLSAgICB9LAotCi0gICAgZ2V0IGZyYW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9mcmFtZTsKLSAgICB9LAotCi0gICAgc2V0IGZyYW1lKGZyYW1lKQotICAgIHsKLSAg
ICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0ID0gd2luZG93LnNjcm9sbFggKyBmcmFtZS5v
cmlnaW4ueCArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wID0gd2luZG93
LnNjcm9sbFkgKyBmcmFtZS5vcmlnaW4ueSArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
c3R5bGUud2lkdGggPSBmcmFtZS5zaXplLndpZHRoICsgInB4IjsKLSAgICAgICAgdGhpcy5fZWxl
bWVudC5zdHlsZS5oZWlnaHQgPSBmcmFtZS5zaXplLmhlaWdodCArICJweCI7Ci0gICAgICAgIHRo
aXMuX2VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBmcmFtZS5zaXplLndpZHRoICsgInB4
ICIgKyBmcmFtZS5zaXplLmhlaWdodCArICJweCI7Ci0gICAgICAgIHRoaXMuX2ZyYW1lID0gZnJh
bWU7Ci0gICAgfSwKLQotICAgIGdldCB2aXNpYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHkKLSAgICAgICAgICAgICYm
ICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5TdGVw
SW5DbGFzc05hbWUpOwotICAgIH0sCi0KLSAgICBnZXQgcG90ZW50aWFsbHlWaXNpYmxlKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50
LmJvZHk7Ci0gICAgfSwKLQotICAgIHNldCBjb250ZW50KGNvbnRlbnQpCi0gICAgewotICAgICAg
ICBpZiAoY29udGVudCA9PT0gdGhpcy5fY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50KTsKLQotICAgICAgICB0aGlzLl9jb250ZW50
ID0gY29udGVudDsKLQotICAgICAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSB0cnVlOwot
Ci0gICAgICAgIGlmICh0aGlzLnBvdGVudGlhbGx5VmlzaWJsZSkKLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZSgpOwotICAgIH0sCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIGlmICghdGhpcy5wb3RlbnRpYWxseVZpc2libGUpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdmFyIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQ7Ci0KLSAgICAgICAgdGhpcy5fY29udGVudE5lZWRzVXBkYXRlID0gdHJ1ZTsKLSAgICAg
ICAgdGhpcy5fdXBkYXRlKCk7Ci0KLSAgICAgICAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVu
dCkKLSAgICAgICAgICAgIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0Rhc2hib2FyZC5SZWN0fSB0YXJnZXRGcmFtZQot
ICAgICAqIEBwYXJhbSB7RWxlbWVudH0gY29udGVudAotICAgICAqIEBwYXJhbSB7RGFzaGJvYXJk
LlJlY3RFZGdlfVtdIHByZWZlcnJlZEVkZ2VzCi0gICAgICovCi0gICAgcHJlc2VudDogZnVuY3Rp
b24odGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQotICAgIHsKLSAgICAgICAgdGhpcy5fdGFy
Z2V0RnJhbWUgPSB0YXJnZXRGcmFtZTsKLSAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMgPSBw
cmVmZXJyZWRFZGdlczsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50KTsK
LQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywgdHJ1
ZSk7Ci0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVl
KTsKLQotICAgICAgICB0aGlzLl91cGRhdGUoKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5hZGQoRGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLQotICAgICAg
ICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCB0aGlzLCB0cnVl
KTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwg
dGhpcywgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIG1ha2VWaXNpYmxlSW1tZWRpYXRlbHk6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnQpOwotCi0g
ICAgICAgIHRoaXMuX2ZpbmFsaXplUHJlc2VudGF0aW9uKCk7Ci0gICAgfSwKLSAgICAKLSAgICBk
aXNtaXNzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJl
bnROb2RlICE9PSBkb2N1bWVudC5ib2R5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0Q2xh
c3NOYW1lKTsKLSAgICB9LAotCi0gICAgZGlzbWlzc0ltbWVkaWF0ZWx5OiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVudC5i
b2R5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ZpbmFsaXplRGlzbWlz
c2FsKCk7Ci0gICAgfSwKLQotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAgICB7
Ci0gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewotICAgICAgICBjYXNlICJtb3VzZWRvd24i
OgotICAgICAgICBjYXNlICJzY3JvbGwiOgotICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVtZW50
LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpCi0gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNzSW1t
ZWRpYXRlbHkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0cmFuc2l0aW9u
ZW5kIjoKLSAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhE
YXNoYm9hcmQuUG9wb3Zlci5TdGVwSW5DbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIHRoaXMu
X2ZpbmFsaXplUHJlc2VudGF0aW9uKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9lbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0Q2xhc3NOYW1l
KSkKLSAgICAgICAgICAgICAgICB0aGlzLl9maW5hbGl6ZURpc21pc3NhbCgpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgIm1vdXNld2hlZWwiOgotICAgICAgICAgICAgLy8gU2Ny
b2xsaW5nIGluc2lkZSBhIHBvcG92ZXIgc2hvdWxkIG5vdCBjYXNjYWRlIHRvIGRvY3VtZW50IHdo
ZW4gcmVhY2hpbmcgYSBib3VuZCwgYmVjYXVzZSB0aGF0IHdvdWxkIG1ha2UgaXQgZGlzYXBwZWFy
IHVuZXhwZWN0ZWRseS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG1vdXNl
ZW50ZXIgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBvbmNlIGl0IHdvcmtzIHJlbGlhYmx5LCBzZWUg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3ODY+LgotICAgICAg
ICAgICAgaWYgKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQgPCB0aGlzLl9jb250YWluZXIu
c2Nyb2xsSGVpZ2h0KQotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFk
ZChEYXNoYm9hcmQuUG9wb3Zlci5QcmV2ZW50RG9jdW1lbnRTY3JvbGxpbmdDbGFzc05hbWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgIm1vdXNlbGVhdmUiOgotICAgICAgICAg
ICAgaWYgKCF0aGlzLl9lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudG9FbGVtZW50KSkK
LSAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJvYXJk
LlBvcG92ZXIuUHJldmVudERvY3VtZW50U2Nyb2xsaW5nQ2xhc3NOYW1lKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLQotICAgIF91cGRh
dGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciB0YXJnZXRGcmFtZSA9IHRoaXMuX3Rh
cmdldEZyYW1lOwotICAgICAgICB2YXIgcHJlZmVycmVkRWRnZXMgPSB0aGlzLl9wcmVmZXJyZWRF
ZGdlczsKLQotICAgICAgICAvLyBFbnN1cmUgb3VyIGVsZW1lbnQgaXMgb24gZGlzcGxheSBzbyB0
aGF0IGl0cyBtZXRyaWNzIGNhbiBiZSByZXNvbHZlZC4KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1l
bnQucGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuYm9keSkKLSAgICAgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2NvbnRl
bnROZWVkc1VwZGF0ZSkgewotICAgICAgICAgICAgLy8gUmVzZXQgQ1NTIHByb3BlcnRpZXMgb24g
ZWxlbWVudCBzbyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBzaXplZCB0byBmaXQgaXRzIGNvbnRl
bnQuCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJsZWZ0
Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0b3Ai
KTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndpZHRo
Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJoZWln
aHQiKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9lZGdlICE9PSBudWxsKQotICAgICAgICAgICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jc3NDbGFzc05hbWVGb3JF
ZGdlKCkpOwotCi0gICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnRlbnQgaW4gcGxhY2Ugb2YgdGhl
IHdyYXBwZXIgdG8gZ2V0IHRoZSByYXcgbWV0cmljcy4KLSAgICAgICAgICAgIHRoaXMuX2VsZW1l
bnQucmVwbGFjZUNoaWxkKHRoaXMuX2NvbnRlbnQsIHRoaXMuX2NvbnRhaW5lcik7Ci0KLSAgICAg
ICAgICAgIC8vIEdldCB0aGUgaWRlYWwgc2l6ZSBmb3IgdGhlIHBvcG92ZXIgdG8gZml0IGl0cyBj
b250ZW50LgotICAgICAgICAgICAgdmFyIHBvcG92ZXJCb3VuZHMgPSB0aGlzLl9lbGVtZW50Lmdl
dEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgdGhpcy5fcHJlZmVycmVkU2l6ZSA9
IG5ldyBEYXNoYm9hcmQuU2l6ZShNYXRoLmNlaWwocG9wb3ZlckJvdW5kcy53aWR0aCksIE1hdGgu
Y2VpbChwb3BvdmVyQm91bmRzLmhlaWdodCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhl
IGZyYW1lIG9mIHRoZSB3aW5kb3cgd2l0aCBhIGxpdHRsZSBpbnNldCB0byBtYWtlIHN1cmUgd2Ug
aGF2ZSByb29tIGZvciBzaGFkb3dzLgotICAgICAgICB2YXIgY29udGFpbmVyRnJhbWUgPSBuZXcg
RGFzaGJvYXJkLlJlY3QoMCwgMCwgd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhlaWdo
dCk7Ci0gICAgICAgIGNvbnRhaW5lckZyYW1lID0gY29udGFpbmVyRnJhbWUuaW5zZXQoRGFzaGJv
YXJkLlBvcG92ZXIuU2hhZG93RWRnZUluc2V0cyk7Ci0KLSAgICAgICAgLy8gV29yayBvdXQgdGhl
IG1ldHJpY3MgZm9yIGFsbCBlZGdlcy4KLSAgICAgICAgdmFyIG1ldHJpY3MgPSBuZXcgQXJyYXko
cHJlZmVycmVkRWRnZXMubGVuZ3RoKTsKLSAgICAgICAgZm9yICh2YXIgZWRnZU5hbWUgaW4gRGFz
aGJvYXJkLlJlY3RFZGdlKSB7Ci0gICAgICAgICAgICB2YXIgZWRnZSA9IERhc2hib2FyZC5SZWN0
RWRnZVtlZGdlTmFtZV07Ci0gICAgICAgICAgICB2YXIgaXRlbSA9IHsKLSAgICAgICAgICAgICAg
ICBlZGdlOiBlZGdlLAotICAgICAgICAgICAgICAgIG1ldHJpY3M6IHRoaXMuX2Jlc3RNZXRyaWNz
Rm9yRWRnZSh0aGlzLl9wcmVmZXJyZWRTaXplLCB0YXJnZXRGcmFtZSwgY29udGFpbmVyRnJhbWUs
IGVkZ2UpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIHByZWZlcnJlZEluZGV4ID0g
cHJlZmVycmVkRWRnZXMuaW5kZXhPZihlZGdlKTsKLSAgICAgICAgICAgIGlmIChwcmVmZXJyZWRJ
bmRleCAhPT0gLTEpCi0gICAgICAgICAgICAgICAgbWV0cmljc1twcmVmZXJyZWRJbmRleF0gPSBp
dGVtOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1ldHJpY3MucHVzaChpdGVt
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFyZWEoc2l6ZSkKLSAgICAgICAgewot
ICAgICAgICAgICAgcmV0dXJuIHNpemUud2lkdGggKiBzaXplLmhlaWdodDsKLSAgICAgICAgfQot
Ci0gICAgICAgIC8vIEZpbmQgaWYgYW55IG9mIHRob3NlIGZpdCBiZXR0ZXIgdGhhbiB0aGUgZnJh
bWUgZm9yIHRoZSBwcmVmZXJyZWQgZWRnZS4KLSAgICAgICAgdmFyIGJlc3RFZGdlID0gbWV0cmlj
c1swXS5lZGdlOwotICAgICAgICB2YXIgYmVzdE1ldHJpY3MgPSBtZXRyaWNzWzBdLm1ldHJpY3M7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbWV0cmljcy5sZW5ndGg7IGkrKykgewotICAg
ICAgICAgICAgdmFyIGl0ZW1NZXRyaWNzID0gbWV0cmljc1tpXS5tZXRyaWNzOwotICAgICAgICAg
ICAgaWYgKGFyZWEoaXRlbU1ldHJpY3MuY29udGVudFNpemUpID4gYXJlYShiZXN0TWV0cmljcy5j
b250ZW50U2l6ZSkpIHsKLSAgICAgICAgICAgICAgICBiZXN0RWRnZSA9IG1ldHJpY3NbaV0uZWRn
ZTsKLSAgICAgICAgICAgICAgICBiZXN0TWV0cmljcyA9IGl0ZW1NZXRyaWNzOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGFuY2hvclBvaW50OwotICAgICAgICB2YXIg
YmVzdEZyYW1lID0gYmVzdE1ldHJpY3MuZnJhbWU7Ci0KLSAgICAgICAgdGhpcy5mcmFtZSA9IGJl
c3RGcmFtZTsKLSAgICAgICAgdGhpcy5fZWRnZSA9IGJlc3RFZGdlOwotCi0gICAgICAgIGlmICh0
aGlzLmZyYW1lID09PSBEYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1QpIHsKLSAgICAgICAgICAgIC8v
IFRoZSB0YXJnZXQgZm9yIHRoZSBwb3BvdmVyIGlzIG9mZnNjcmVlbi4KLSAgICAgICAgICAgIHRo
aXMuZGlzbWlzcygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChiZXN0
RWRnZSkgewotICAgICAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8vIERp
c3BsYXllZCBvbiB0aGUgbGVmdCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQuCi0g
ICAgICAgICAgICAgICAgYW5jaG9yUG9pbnQgPSBuZXcgRGFzaGJvYXJkLlBvaW50KGJlc3RGcmFt
ZS5zaXplLndpZHRoIC0gRGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZywgdGFyZ2V0RnJh
bWUubWlkWSgpIC0gYmVzdEZyYW1lLm1pblkoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVkIG9u
IHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAgICAg
ICAgICBhbmNob3JQb2ludCA9IG5ldyBEYXNoYm9hcmQuUG9pbnQoRGFzaGJvYXJkLlBvcG92ZXIu
U2hhZG93UGFkZGluZywgdGFyZ2V0RnJhbWUubWlkWSgpIC0gYmVzdEZyYW1lLm1pblkoKSk7Ci0g
ICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRn
ZS5NSU5fWTogLy8gRGlzcGxheWVkIGFib3ZlIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBkb3du
LgotICAgICAgICAgICAgICAgIGFuY2hvclBvaW50ID0gbmV3IERhc2hib2FyZC5Qb2ludCh0YXJn
ZXRGcmFtZS5taWRYKCkgLSBiZXN0RnJhbWUubWluWCgpLCBiZXN0RnJhbWUuc2l6ZS5oZWlnaHQg
LSBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5
ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgICAgIGFu
Y2hvclBvaW50ID0gbmV3IERhc2hib2FyZC5Qb2ludCh0YXJnZXRGcmFtZS5taWRYKCkgLSBiZXN0
RnJhbWUubWluWCgpLCBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKHRoaXMuX2Nzc0NsYXNzTmFtZUZvckVkZ2UoKSk7Ci0KLSAgICAgICAg
ICAgIHRoaXMuX2RyYXdCYWNrZ3JvdW5kKGJlc3RFZGdlLCBhbmNob3JQb2ludCk7Ci0KLSAgICAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIGNhc2UgZWl0aGVyIG9m
IHRoZSBkaW1lbnNpb24gaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbWFsIGJvdW5kcy4KLSAgICAg
ICAgICAgIGlmICh0aGlzLl9wcmVmZXJyZWRTaXplLndpZHRoIDwgRGFzaGJvYXJkLlBvcG92ZXIu
TWluV2lkdGggfHwgdGhpcy5fcHJlZmVycmVkU2l6ZS5oZWlnaHQgPCBEYXNoYm9hcmQuUG9wb3Zl
ci5NaW5IZWlnaHQpCi0gICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlzdC5h
ZGQoImNlbnRlciIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX2Nv
bnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJjZW50ZXIiKTsKLSAgICAgICAgfQotCi0gICAgICAg
IC8vIFdyYXAgdGhlIGNvbnRlbnQgaW4gdGhlIGNvbnRhaW5lciBzbyB0aGF0IGl0J3MgbG9jYXRl
ZCBjb3JyZWN0bHkuCi0gICAgICAgIGlmICh0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUpIHsKLSAg
ICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAg
dGhpcy5fZWxlbWVudC5yZXBsYWNlQ2hpbGQodGhpcy5fY29udGFpbmVyLCB0aGlzLl9jb250ZW50
KTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9jb250ZW50
KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IGZhbHNl
OwotICAgIH0sCi0KLSAgICBfY3NzQ2xhc3NOYW1lRm9yRWRnZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgc3dpdGNoICh0aGlzLl9lZGdlKSB7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJl
Y3RFZGdlLk1JTl9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJy
b3cgcG9pbnRzIHJpZ2h0LgotICAgICAgICAgICAgcmV0dXJuICJhcnJvdy1yaWdodCI7Ci0gICAg
ICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIHJp
Z2h0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBsZWZ0LgotICAgICAgICAgICAgcmV0dXJu
ICJhcnJvdy1sZWZ0IjsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6IC8v
IERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAgICAg
ICAgIHJldHVybiAiYXJyb3ctZG93biI7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdl
Lk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgot
ICAgICAgICAgICAgcmV0dXJuICJhcnJvdy11cCI7Ci0gICAgICAgIH0KLSAgICAgICAgY29uc29s
ZS5lcnJvcigiVW5rbm93biBlZGdlLiIpOwotICAgICAgICByZXR1cm4gImFycm93LXVwIjsKLSAg
ICB9LAotCi0gICAgX2RyYXdCYWNrZ3JvdW5kOiBmdW5jdGlvbihlZGdlLCBhbmNob3JQb2ludCkK
LSAgICB7Ci0gICAgICAgIHZhciBzY2FsZUZhY3RvciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlv
OwotCi0gICAgICAgIHZhciB3aWR0aCA9IHRoaXMuX2ZyYW1lLnNpemUud2lkdGg7Ci0gICAgICAg
IHZhciBoZWlnaHQgPSB0aGlzLl9mcmFtZS5zaXplLmhlaWdodDsKLSAgICAgICAgdmFyIHNjYWxl
ZFdpZHRoID0gd2lkdGggKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgdmFyIHNjYWxlZEhlaWdodCA9
IGhlaWdodCAqIHNjYWxlRmFjdG9yOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIHNjcmF0Y2ggY2Fu
dmFzIHNvIHdlIGNhbiBkcmF3IHRoZSBwb3BvdmVyIHRoYXQgd2lsbCBsYXRlciBiZSBkcmF3biBp
bnRvCi0gICAgICAgIC8vIHRoZSBmaW5hbCBjb250ZXh0IHdpdGggYSBzaGFkb3cuCi0gICAgICAg
IHZhciBzY3JhdGNoQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7Ci0g
ICAgICAgIHNjcmF0Y2hDYW52YXMud2lkdGggPSBzY2FsZWRXaWR0aDsKLSAgICAgICAgc2NyYXRj
aENhbnZhcy5oZWlnaHQgPSBzY2FsZWRIZWlnaHQ7Ci0KLSAgICAgICAgdmFyIGN0eCA9IHNjcmF0
Y2hDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgY3R4LnNjYWxlKHNjYWxlRmFjdG9y
LCBzY2FsZUZhY3Rvcik7Ci0KLSAgICAgICAgLy8gQm91bmRzIG9mIHRoZSBwYXRoIGRvbid0IHRh
a2UgaW50byBhY2NvdW50IHRoZSBhcnJvdywgYnV0IHJlYWxseSBvbmx5IHRoZSB0aWdodCBib3Vu
ZGluZyBib3gKLSAgICAgICAgLy8gb2YgdGhlIGNvbnRlbnQgY29udGFpbmVkIHdpdGhpbiB0aGUg
ZnJhbWUuCi0gICAgICAgIHZhciBib3VuZHM7Ci0gICAgICAgIHZhciBhcnJvd0hlaWdodCA9IERh
c2hib2FyZC5Qb3BvdmVyLkFuY2hvclNpemUuaGVpZ2h0OwotICAgICAgICBzd2l0Y2ggKGVkZ2Up
IHsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8vIERpc3BsYXllZCBv
biB0aGUgbGVmdCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQuCi0gICAgICAgICAg
ICBib3VuZHMgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgMCwgd2lkdGggLSBhcnJvd0hlaWdodCwg
aGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0
RWRnZS5NQVhfWDogLy8gRGlzcGxheWVkIG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJv
dyBwb2ludHMgbGVmdC4KLSAgICAgICAgICAgIGJvdW5kcyA9IG5ldyBEYXNoYm9hcmQuUmVjdChh
cnJvd0hlaWdodCwgMCwgd2lkdGggLSBhcnJvd0hlaWdodCwgaGVpZ2h0KTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWTogLy8gRGlzcGxh
eWVkIGFib3ZlIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBkb3duLgotICAgICAgICAgICAgYm91
bmRzID0gbmV3IERhc2hib2FyZC5SZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQgLSBhcnJvd0hlaWdo
dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2Uu
TUFYX1k6IC8vIERpc3BsYXllZCBiZWxvdyB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgdXAuCi0g
ICAgICAgICAgICBib3VuZHMgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgYXJyb3dIZWlnaHQsIHdp
ZHRoLCBoZWlnaHQgLSBhcnJvd0hlaWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotCi0gICAgICAgIGJvdW5kcyA9IGJvdW5kcy5pbnNldChEYXNoYm9hcmQuUG9wb3Zlci5TaGFk
b3dFZGdlSW5zZXRzKTsKLQotICAgICAgICAvLyBDbGlwIHRoZSBmcmFtZS4KLSAgICAgICAgY3R4
LmZpbGxTdHlsZSA9ICJibGFjayI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJvdW5k
cywgZWRnZSwgYW5jaG9yUG9pbnQpOwotICAgICAgICBjdHguY2xpcCgpOwotCi0gICAgICAgIC8v
IEdyYWRpZW50IGZpbGwsIHRvcC10by1ib3R0b20uCi0gICAgICAgIHZhciBmaWxsR3JhZGllbnQg
PSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgaGVpZ2h0KTsKLSAgICAgICAgZmls
bEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSIpOwot
ICAgICAgICBmaWxsR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICJyZ2JhKDIzNSwgMjM1LCAyMzUs
IDAuOTUpIik7Ci0gICAgICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsR3JhZGllbnQ7Ci0gICAgICAg
IGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgICAgICAvLyBTdHJva2Uu
Ci0gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2JhKDAsIDAsIDAsIDAuMjUpIjsKLSAgICAg
ICAgY3R4LmxpbmVXaWR0aCA9IDI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJvdW5k
cywgZWRnZSwgYW5jaG9yUG9pbnQpOwotICAgICAgICBjdHguc3Ryb2tlKCk7Ci0KLSAgICAgICAg
Ly8gRHJhdyB0aGUgcG9wb3ZlciBpbnRvIHRoZSBmaW5hbCBjb250ZXh0IHdpdGggYSBkcm9wIHNo
YWRvdy4KLSAgICAgICAgdmFyIGZpbmFsQ29udGV4dCA9IGRvY3VtZW50LmdldENTU0NhbnZhc0Nv
bnRleHQoIjJkIiwgdGhpcy5fY2FudmFzSWQsIHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQpOwot
Ci0gICAgICAgIGZpbmFsQ29udGV4dC5jbGVhclJlY3QoMCwgMCwgc2NhbGVkV2lkdGgsIHNjYWxl
ZEhlaWdodCk7Ci0KLSAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd09mZnNldFggPSAxOwotICAg
ICAgICBmaW5hbENvbnRleHQuc2hhZG93T2Zmc2V0WSA9IDE7Ci0gICAgICAgIGZpbmFsQ29udGV4
dC5zaGFkb3dCbHVyID0gNTsKLSAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd0NvbG9yID0gInJn
YmEoMCwgMCwgMCwgMC41KSI7Ci0KLSAgICAgICAgZmluYWxDb250ZXh0LmRyYXdJbWFnZShzY3Jh
dGNoQ2FudmFzLCAwLCAwLCBzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICB9LAotICAg
IAotICAgIF9iZXN0TWV0cmljc0ZvckVkZ2U6IGZ1bmN0aW9uKHByZWZlcnJlZFNpemUsIHRhcmdl
dEZyYW1lLCBjb250YWluZXJGcmFtZSwgZWRnZSkKLSAgICB7Ci0gICAgICAgIHZhciB4LCB5Owot
ICAgICAgICB2YXIgd2lkdGggPSBwcmVmZXJyZWRTaXplLndpZHRoICsgKERhc2hib2FyZC5Qb3Bv
dmVyLlNoYWRvd1BhZGRpbmcgKiAyKSArIChEYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFkZGlu
ZyAqIDIpOwotICAgICAgICB2YXIgaGVpZ2h0ID0gcHJlZmVycmVkU2l6ZS5oZWlnaHQgKyAoRGFz
aGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZyAqIDIpICsgKERhc2hib2FyZC5Qb3BvdmVyLkNv
bnRlbnRQYWRkaW5nICogMik7Ci0gICAgICAgIHZhciBhcnJvd0xlbmd0aCA9IERhc2hib2FyZC5Q
b3BvdmVyLkFuY2hvclNpemUuaGVpZ2h0OwotCi0gICAgICAgIHN3aXRjaCAoZWRnZSkgewotICAg
ICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBs
ZWZ0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIHdpZHRo
ICs9IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgeCA9IHRhcmdldEZyYW1lLm9yaWdpbi54IC0g
d2lkdGggKyBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nOwotICAgICAgICAgICAgeSA9
IHRhcmdldEZyYW1lLm9yaWdpbi55IC0gKGhlaWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0
KSAvIDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVk
Z2UuTUFYX1g6IC8vIERpc3BsYXllZCBvbiB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCwgYXJyb3cg
cG9pbnRzIGxlZnQuCi0gICAgICAgICAgICB3aWR0aCArPSBhcnJvd0xlbmd0aDsKLSAgICAgICAg
ICAgIHggPSB0YXJnZXRGcmFtZS5vcmlnaW4ueCArIHRhcmdldEZyYW1lLnNpemUud2lkdGggLSBE
YXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nOwotICAgICAgICAgICAgeSA9IHRhcmdldEZy
YW1lLm9yaWdpbi55IC0gKGhlaWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0KSAvIDI7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6
IC8vIERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAg
ICAgICAgIGhlaWdodCArPSBhcnJvd0xlbmd0aDsKLSAgICAgICAgICAgIHggPSB0YXJnZXRGcmFt
ZS5vcmlnaW4ueCAtICh3aWR0aCAtIHRhcmdldEZyYW1lLnNpemUud2lkdGgpIC8gMjsKLSAgICAg
ICAgICAgIHkgPSB0YXJnZXRGcmFtZS5vcmlnaW4ueSAtIGhlaWdodCArIERhc2hib2FyZC5Qb3Bv
dmVyLlNoYWRvd1BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNo
Ym9hcmQuUmVjdEVkZ2UuTUFYX1k6IC8vIERpc3BsYXllZCBiZWxvdyB0aGUgdGFyZ2V0LCBhcnJv
dyBwb2ludHMgdXAuCi0gICAgICAgICAgICBoZWlnaHQgKz0gYXJyb3dMZW5ndGg7Ci0gICAgICAg
ICAgICB4ID0gdGFyZ2V0RnJhbWUub3JpZ2luLnggLSAod2lkdGggLSB0YXJnZXRGcmFtZS5zaXpl
LndpZHRoKSAvIDI7Ci0gICAgICAgICAgICB5ID0gdGFyZ2V0RnJhbWUub3JpZ2luLnkgKyB0YXJn
ZXRGcmFtZS5zaXplLmhlaWdodCAtIERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmc7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlZGdlID09PSBEYXNo
Ym9hcmQuUmVjdEVkZ2UuTUlOX1ggfHwgZWRnZSA9PT0gRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9Y
KSB7Ci0gICAgICAgICAgICBpZiAoeSA8IGNvbnRhaW5lckZyYW1lLm1pblkoKSkKLSAgICAgICAg
ICAgICAgICB5ID0gY29udGFpbmVyRnJhbWUubWluWSgpOwotICAgICAgICAgICAgaWYgKHkgKyBo
ZWlnaHQgPiBjb250YWluZXJGcmFtZS5tYXhZKCkpCi0gICAgICAgICAgICAgICAgeSA9IGNvbnRh
aW5lckZyYW1lLm1heFkoKSAtIGhlaWdodDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IGlmICh4IDwgY29udGFpbmVyRnJhbWUubWluWCgpKQotICAgICAgICAgICAgICAgIHggPSBjb250
YWluZXJGcmFtZS5taW5YKCk7IAotICAgICAgICAgICAgaWYgKHggKyB3aWR0aCA+IGNvbnRhaW5l
ckZyYW1lLm1heFgoKSkKLSAgICAgICAgICAgICAgICB4ID0gY29udGFpbmVyRnJhbWUubWF4WCgp
IC0gd2lkdGg7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcHJlZmVycmVkRnJhbWUgPSBuZXcg
RGFzaGJvYXJkLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHZhciBiZXN0RnJh
bWUgPSBwcmVmZXJyZWRGcmFtZS5pbnRlcnNlY3Rpb25XaXRoUmVjdChjb250YWluZXJGcmFtZSk7
Ci0KLSAgICAgICAgd2lkdGggPSBiZXN0RnJhbWUuc2l6ZS53aWR0aCAtIChEYXNoYm9hcmQuUG9w
b3Zlci5TaGFkb3dQYWRkaW5nICogMik7Ci0gICAgICAgIGhlaWdodCA9IGJlc3RGcmFtZS5zaXpl
LmhlaWdodCAtIChEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nICogMik7Ci0KLSAgICAg
ICAgc3dpdGNoIChlZGdlKSB7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9Y
OiAvLyBEaXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHJp
Z2h0LgotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVk
IG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAg
ICAgIHdpZHRoIC09IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZOiAvLyBEaXNwbGF5ZWQgYWJvdmUgdGhlIHRhcmdl
dCwgYXJyb3cgcG9pbnRzIGRvd24uCi0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1B
WF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAg
ICAgICAgICAgaGVpZ2h0IC09IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgZnJhbWU6IGJlc3RGcmFtZSwK
LSAgICAgICAgICAgIGNvbnRlbnRTaXplOiBuZXcgRGFzaGJvYXJkLlNpemUod2lkdGgsIGhlaWdo
dCkKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgX2RyYXdGcmFtZTogZnVuY3Rpb24oY3R4LCBi
b3VuZHMsIGFuY2hvckVkZ2UsIGFuY2hvclBvaW50KQotICAgIHsKLSAgICAgICAgdmFyIHIgPSBE
YXNoYm9hcmQuUG9wb3Zlci5Db3JuZXJSYWRpdXM7Ci0gICAgICAgIHZhciBhcnJvd0hhbGZMZW5n
dGggPSBEYXNoYm9hcmQuUG9wb3Zlci5BbmNob3JTaXplLndpZHRoIC8gMjsKLQotICAgICAgICBj
dHguYmVnaW5QYXRoKCk7Ci0gICAgICAgIHN3aXRjaCAoYW5jaG9yRWRnZSkgewotICAgICAgICBj
YXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0IG9m
IHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIGN0eC5tb3ZlVG8o
Ym91bmRzLm1heFgoKSwgYm91bmRzLm1pblkoKSArIHIpOwotICAgICAgICAgICAgY3R4LmxpbmVU
byhib3VuZHMubWF4WCgpLCBhbmNob3JQb2ludC55IC0gYXJyb3dIYWxmTGVuZ3RoKTsKLSAgICAg
ICAgICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCwgYW5jaG9yUG9pbnQueSk7Ci0gICAgICAg
ICAgICBjdHgubGluZVRvKGJvdW5kcy5tYXhYKCksIGFuY2hvclBvaW50LnkgKyBhcnJvd0hhbGZM
ZW5ndGgpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZ
KCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFy
Y1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5t
aW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5t
aW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4
LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5k
cy5tYXhZKCksIHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJk
LlJlY3RFZGdlLk1BWF9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IG9mIHRoZSB0YXJnZXQs
IGFycm93IHBvaW50cyBsZWZ0LgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhib3VuZHMubWluWCgp
LCBib3VuZHMubWF4WSgpIC0gcik7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGJvdW5kcy5taW5Y
KCksIGFuY2hvclBvaW50LnkgKyBhcnJvd0hhbGZMZW5ndGgpOwotICAgICAgICAgICAgY3R4Lmxp
bmVUbyhhbmNob3JQb2ludC54LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAgICAgIGN0eC5saW5l
VG8oYm91bmRzLm1pblgoKSwgYW5jaG9yUG9pbnQueSAtIGFycm93SGFsZkxlbmd0aCk7Ci0gICAg
ICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1h
eFgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1h
eFgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0g
ICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRz
Lm1pblgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRz
Lm1pblgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgcik7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1k6IC8vIERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAg
ICAgICAgICAgIGN0eC5tb3ZlVG8oYm91bmRzLm1heFgoKSAtIHIsIGJvdW5kcy5tYXhZKCkpOwot
ICAgICAgICAgICAgY3R4LmxpbmVUbyhhbmNob3JQb2ludC54ICsgYXJyb3dIYWxmTGVuZ3RoLCBi
b3VuZHMubWF4WSgpKTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCwgYW5j
aG9yUG9pbnQueSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGFuY2hvclBvaW50LnggLSBhcnJv
d0hhbGZMZW5ndGgsIGJvdW5kcy5tYXhZKCkpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5k
cy5taW5YKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIHIp
OwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCksIGJv
dW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJv
dW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCks
IHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZKCks
IGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cg
dGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhib3Vu
ZHMubWluWCgpICsgciwgYm91bmRzLm1pblkoKSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGFu
Y2hvclBvaW50LnggLSBhcnJvd0hhbGZMZW5ndGgsIGJvdW5kcy5taW5ZKCkpOwotICAgICAgICAg
ICAgY3R4LmxpbmVUbyhhbmNob3JQb2ludC54LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAgICAg
IGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCArIGFycm93SGFsZkxlbmd0aCwgYm91bmRzLm1pblko
KSk7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblkoKSwg
Ym91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8o
Ym91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1heFko
KSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1heFko
KSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJj
VG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1p
blkoKSwgcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjdHguY2xv
c2VQYXRoKCk7Ci0gICAgfSwKLQotICAgIF9maW5hbGl6ZVByZXNlbnRhdGlvbjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdmFyIHdhc1Zpc2libGUgPSB0aGlzLnZpc2libGU7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShEYXNoYm9hcmQuUG9wb3Zlci5TdGVwSW5D
bGFzc05hbWUpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJv
YXJkLlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuY2xh
c3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lKTsKLQotICAgICAg
ICAvLyBNYWtlIHNjcm9sbCBiYXIgZmxhc2ggaWYgcHJlc2VudCwgc28gdGhhdCB0aGUgdXNlciBz
ZWVzIHRoYXQgc2Nyb2xsaW5nIGlzIHBvc3NpYmxlLgotICAgICAgICAvLyBGSVhNRTogSXMgdGhl
cmUgYSBiZXR0ZXIgd2F5PwotICAgICAgICBpZiAoIXdhc1Zpc2libGUpIHsKLSAgICAgICAgICAg
IHRoaXMuX2NvbnRhaW5lci5zY3JvbGxUb3AgPSAxOwotICAgICAgICAgICAgdGhpcy5fY29udGFp
bmVyLnNjcm9sbFRvcCA9IDA7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2ZpbmFsaXplRGlz
bWlzc2FsOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcywgdHJ1ZSk7Ci0gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVu
dExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLQotICAgICAgICBkb2N1bWVudC5ib2R5
LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNz
TGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuUHJldmVudERvY3VtZW50U2Nyb2xsaW5nQ2xh
c3NOYW1lKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERhc2hib2Fy
ZC5Qb3BvdmVyLlZpc2libGVDbGFzc05hbWUpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNz
TGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLSAgICAgICAg
dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERhc2hib2FyZC5Qb3BvdmVyLkZhZGVPdXRD
bGFzc05hbWUpOwotICAgICAgICB0aGlzLl9jb250YWluZXIudGV4dENvbnRlbnQgPSAiIjsKLSAg
ICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZGlkRGlzbWlz
c1BvcG92ZXIgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmRpZERp
c21pc3NQb3BvdmVyKHRoaXMpOwotICAgIH0KLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9w
b3ZlclRyYWNrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9wb3Zl
clRyYWNrZXIuanMJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1Bv
cG92ZXJUcmFja2VyLmpzCShub25leGlzdGVudCkKQEAgLTEsMTc0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1Qb3BvdmVyVHJhY2tlciA9IGZ1bmN0aW9uKGVsZW1lbnQsIHByZXNlbnRQb3BvdmVyQ2Fs
bGJhY2ssIGNvbnRleHQpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29u
c29sZS5hc3NlcnQoZWxlbWVudCk7Ci0gICAgY29uc29sZS5hc3NlcnQocHJlc2VudFBvcG92ZXJD
YWxsYmFjayAmJiB0eXBlb2YgcHJlc2VudFBvcG92ZXJDYWxsYmFjayA9PT0gImZ1bmN0aW9uIik7
Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKLSAgICB0aGlzLl9wcmVzZW50UG9wb3Zl
ciA9IHByZXNlbnRQb3BvdmVyQ2FsbGJhY2s7Ci0gICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7
Ci0gICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7Ci0KLSAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQo
InBvcG92ZXItdHJhY2tpbmciKTsKLSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZW50ZXIiLCB0aGlzLl9tb3VzZUVudGVyZWRQb3BvdmVyT3JFbGVtZW50LmJpbmQodGhpcyksIHRy
dWUpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21v
dXNlRXhpdGVkUG9wb3Zlck9yRWxlbWVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICBlbGVtZW50
LnBvcG92ZXJUcmFja2VyID0gdGhpczsKLX07Ci0KLS8vIE9ubHkgb25lIHBvcG92ZXIgbWF5IGJl
IGFjdGl2ZSBhdCBhbnkgdGltZS4gQW4gYWN0aXZlIHBvcG92ZXIgaXMgbm90IG5lY2Vzc2FyaWx5
IHZpc2libGUgYWxyZWFkeS4KLVBvcG92ZXJUcmFja2VyLl9wb3BvdmVyID0gbnVsbDsKLQotLy8g
QSBjYW5kaWRhdGUgdGltZXIgbWF5IGJlIGFjdGl2ZSB3aGV0aGVyIHdlIGhhdmUgYW4gYWN0aXZl
IHBvcG92ZXIgb3Igbm90LgotUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIgPSBudWxs
OwotUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyID0gbnVsbDsKLVBvcG92ZXJUcmFja2Vy
LkNhbmRpZGF0ZVN3aXRjaERlbGF5ID0gMjAwOwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFBvcG92ZXJUcmFja2VyKTsKLQotUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0
ZVBvcG92ZXJUcmFja2VyID0gZnVuY3Rpb24ocG9wb3ZlclRyYWNrZXIpCi17Ci0gICAgY29uc29s
ZS5hc3NlcnQoIXBvcG92ZXJUcmFja2VyIHx8ICFwb3BvdmVyVHJhY2tlci5fYWN0aXZlKTsKLQot
ICAgIGlmIChQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRlVHJhY2tlcikgewotICAgICAgICBjbGVh
clRpbWVvdXQoUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLSAgICAgICAgUG9wb3Zl
clRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyID0gbnVsbDsKLSAgICB9Ci0KLSAgICBjb25zb2xlLmFz
c2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLSAgICAKLSAgICBQb3BvdmVy
VHJhY2tlci5fY2FuZGlkYXRlVHJhY2tlciA9IHBvcG92ZXJUcmFja2VyOwotCi0gICAgaWYgKHBv
cG92ZXJUcmFja2VyKQotICAgICAgICBQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRlVGltZXIgPSBz
ZXRUaW1lb3V0KFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVQb3BvdmVyVHJhY2tlclRpbWVyRmly
ZWQsIFBvcG92ZXJUcmFja2VyLkNhbmRpZGF0ZVN3aXRjaERlbGF5KTsKLX0KLQotUG9wb3ZlclRy
YWNrZXIuX2NhbmRpZGF0ZVBvcG92ZXJUcmFja2VyVGltZXJGaXJlZCA9IGZ1bmN0aW9uKCkKLXsK
LSAgICB2YXIgaGFkUG9wb3ZlciA9ICEhUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXI7Ci0gICAgaWYg
KGhhZFBvcG92ZXIpIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoUG9wb3ZlclRyYWNrZXIuX3Bv
cG92ZXIudmlzaWJsZSk7Ci0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyLmRpc21pc3NJ
bW1lZGlhdGVseSgpOwotICAgIH0KLSAgICBjb25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIu
X3BvcG92ZXIpOwotCi0gICAgdmFyIHRyYWNrZXIgPSBQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRl
VHJhY2tlcjsKLQotICAgIFBvcG92ZXJUcmFja2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJhY2tl
cihudWxsKTsKLSAgICB0cmFja2VyLl9zaG93UG9wb3ZlcigpOwotCi0gICAgaWYgKFBvcG92ZXJU
cmFja2VyLl9wb3BvdmVyICYmIGhhZFBvcG92ZXIpCi0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9w
b3BvdmVyLm1ha2VWaXNpYmxlSW1tZWRpYXRlbHkoKTsKLX0KLQotUG9wb3ZlclRyYWNrZXIuX29u
Ymx1ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXIpCi0g
ICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyLmRpc21pc3NJbW1lZGlhdGVseSgpOwotCi0g
ICAgUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92ZXJUcmFja2VyKG51bGwpOwotfQot
Ci13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIFBvcG92ZXJUcmFja2VyLl9vbmJsdXIs
IHRydWUpOwotCi1Qb3BvdmVyVHJhY2tlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IFBvcG92ZXJUcmFja2VyLAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5cGUsCi0K
LSAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwb3BvdmVy
ID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKHRoaXMpOwotICAgICAgICBpZiAoIXRoaXMuX3ByZXNl
bnRQb3BvdmVyKHRoaXMuX2VsZW1lbnQsIHBvcG92ZXIsIHRoaXMuX2NvbnRleHQpKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7Ci0gICAgICAgIFBv
cG92ZXJUcmFja2VyLl9wb3BvdmVyID0gcG9wb3ZlcjsKLSAgICAgICAgcG9wb3Zlci5lbGVtZW50
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCB0aGlzLl9tb3VzZUVudGVyZWRQb3BvdmVy
T3JFbGVtZW50LmJpbmQodGhpcyksIHRydWUpOwotICAgICAgICBwb3BvdmVyLmVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21vdXNlRXhpdGVkUG9wb3Zlck9yRWxl
bWVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB9LAotCi0gICAgX21vdXNlRW50ZXJlZFBvcG92
ZXJPckVsZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHBvcG92ZXIg
PSBQb3BvdmVyVHJhY2tlci5fcG9wb3ZlcjsKLQotICAgICAgICBpZiAocG9wb3ZlcikgewotICAg
ICAgICAgICAgLy8gQWJvcnQgZmFkZS1vdXQgd2hlbiByZS1lbnRlcmluZyB0aGUgc2FtZSBlbGVt
ZW50IG9yIGFuIGV4aXN0aW5nIHBvcG92ZXIuCi0gICAgICAgICAgICBpZiAoKHRoaXMuX2FjdGl2
ZSAmJiB0aGlzLl9lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudG9FbGVtZW50KSkKLSAg
ICAgICAgICAgICAgICB8fCBwb3BvdmVyLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3RvcihldmVudC50
b0VsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5tYWtlVmlzaWJsZUltbWVkaWF0
ZWx5KCk7Ci0gICAgICAgICAgICAgICAgUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92
ZXJUcmFja2VyKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LQotICAgICAgICAgICAgLy8gV2UgZW50ZXJlZCBhIGRpZmZlcmVudCBlbGVtZW50LgotICAgICAg
ICAgICAgaWYgKHBvcG92ZXIudmlzaWJsZSkgewotICAgICAgICAgICAgICAgIFBvcG92ZXJUcmFj
a2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJhY2tlcih0aGlzKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwb3BvdmVyIHdhc24n
dCB2aXNpYmxlIHlldCwgc28gaXQgd2FzIGVmZmVjdGl2ZWx5IG5vbi1leGlzdGVudC4KLSAgICAg
ICAgICAgIHBvcG92ZXIuZGlzbWlzc0ltbWVkaWF0ZWx5KCk7Ci0gICAgICAgIH0KLQotICAgICAg
ICBjb25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXIpOwotICAgICAgICBjb25z
b2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIpOwotICAgICAgICBj
b25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLQotICAgICAg
ICBQb3BvdmVyVHJhY2tlci5fc2V0Q2FuZGlkYXRlUG9wb3ZlclRyYWNrZXIodGhpcyk7Ci0gICAg
fSwKLQotICAgIF9tb3VzZUV4aXRlZFBvcG92ZXJPckVsZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT09IFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVUcmFj
a2VyKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2
ZW50LnRvRWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgUG9w
b3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92ZXJUcmFja2VyKG51bGwpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBvcG92ZXIgPSBQb3BvdmVyVHJh
Y2tlci5fcG9wb3ZlcjsKLQotICAgICAgICBpZiAoIXBvcG92ZXIpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuaXNTZWxmT3JBbmNlc3RvcihldmVudC50
b0VsZW1lbnQpIHx8IHBvcG92ZXIuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2ZW50LnRvRWxl
bWVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHBvcG92ZXIudmlzaWJs
ZSkKLSAgICAgICAgICAgIHBvcG92ZXIuZGlzbWlzcygpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBwb3BvdmVyLmRpc21pc3NJbW1lZGlhdGVseSgpOwotICAgIH0sCi0KLSAgICBkaWREaXNt
aXNzUG9wb3ZlcjogZnVuY3Rpb24ocG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHBvcG92ZXIgPT09IFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyKTsKLSAgICAgICAgdGhpcy5f
YWN0aXZlID0gZmFsc2U7Ci0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyID0gbnVsbDsK
LSAgICB9Ci19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9w
b3ZlclRyYWNrZXIuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9RdWV1ZVZpZXcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUXVldWVWaWV3LmpzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9RdWV1ZVZpZXcuanMJKG5vbmV4aXN0ZW50
KQpAQCAtMSwyNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVF1ZXVlVmlldyA9IGZ1bmN0aW9uKCkK
LXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgicXVldWUtdmlldyIpOwotICAgIHRoaXMuZWxlbWVudC5fX3F1ZXVlVmlldyA9IHRoaXM7Ci0K
LSAgICB0aGlzLnVwZGF0ZVRpbWVyID0gbnVsbDsKLSAgICBzZXRUaW1lb3V0KHRoaXMuX3VwZGF0
ZUhpZGRlblN0YXRlLmJpbmQodGhpcyksIDApOyAvLyBMZXRzIHN1YmNsYXNzIGNvbnN0cnVjdG9y
IGZpbmlzaCBiZWZvcmUgY2FsbGluZyBfdXBkYXRlSGlkZGVuU3RhdGUuCi0gICAgc2V0dGluZ3Mu
YWRkU2V0dGluZ0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIiwgdGhpcy5fdXBkYXRl
SGlkZGVuU3RhdGUuYmluZCh0aGlzKSk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9y
RnVuY3Rpb25zKFF1ZXVlVmlldyk7Ci0KLVF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCA9IDQ1MDAw
OyAvLyA0NSBzZWNvbmRzCi1RdWV1ZVZpZXcuVXBkYXRlU29vblRpbWVvdXQgPSAxMDAwOyAvLyAx
IHNlY29uZAotCi1RdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBRdWV1
ZVZpZXcsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIHVwZGF0
ZVNvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVUaW1lb3V0
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0gc2V0
VGltZW91dCh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpLCBRdWV1ZVZpZXcuVXBkYXRlU29vblRpbWVv
dXQpOwotICAgIH0sCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7Ci0gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5f
dXBkYXRlVGltZW91dCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlVGltZW91dDsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0gICAg
fSwKLQotICAgIF91cGRhdGVIaWRkZW5TdGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
aWYgKCFzZXR0aW5ncy5hdmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9iamVjdCgiaGlkZGVu
UGxhdGZvcm1GYW1pbGllcyIpOwotICAgICAgICB2YXIgd2FzSGlkZGVuID0gIXRoaXMudXBkYXRl
VGltZXI7Ci0gICAgICAgIHZhciBpc0hpZGRlbiA9IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMgJiYg
aGlkZGVuUGxhdGZvcm1GYW1pbGllcy5jb250YWlucyhzZXR0aW5ncy5wYXJzZVBsYXRmb3JtRmFt
aWx5KHRoaXMucGxhdGZvcm0pKTsKLQotICAgICAgICBpZiAod2FzSGlkZGVuICYmICFpc0hpZGRl
bikgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlUXVldWVzKCk7Ci0gICAgICAgICAgICB0aGlz
LnVwZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlUXVldWVzLmJpbmQodGhpcyks
IFF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXdhc0hpZGRl
biAmJiBpc0hpZGRlbikgewotICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0ZVRp
bWVyKTsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSBudWxsOwotICAgICAgICB9Ci0g
ICAgfSwKLQotICAgIGFkZExpbmtUb1JvdzogZnVuY3Rpb24ocm93RWxlbWVudCwgY2xhc3NOYW1l
LCB0ZXh0LCB1cmwpCi0gICAgeyAgIAotICAgICAgICB2YXIgbGlua0VsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgIGxpbmtFbGVtZW50LmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKLSAgICAgICAgbGlua0VsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwotICAgICAg
ICBsaW5rRWxlbWVudC5ocmVmID0gdXJsOwotICAgICAgICBsaW5rRWxlbWVudC50YXJnZXQgPSAi
X2JsYW5rIjsKLSAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7Ci0g
ICAgfSwgIAotCi0gICAgYWRkVGV4dFRvUm93OiBmdW5jdGlvbihyb3dFbGVtZW50LCBjbGFzc05h
bWUsIHRleHQpCi0gICAgeyAgIAotICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHNwYW5FbGVtZW50LmNsYXNzTmFtZSA9IGNs
YXNzTmFtZTsKLSAgICAgICAgc3BhbkVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwotICAgICAg
ICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsKLSAgICB9LAotCi0gICAgX2Fk
ZERpdmlkZXJUb1BvcG92ZXI6IGZ1bmN0aW9uKGNvbnRlbnQpCi0gICAgewotICAgICAgICB2YXIg
ZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkaXZpZGVy
LmNsYXNzTmFtZSA9ICJkaXZpZGVyIjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChkaXZp
ZGVyKTsKLSAgICB9LAotCi0gICAgX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50OiBmdW5jdGlv
bihxdWV1ZSwgbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKQotICAgIHsKLSAgICAgICAgdmFyIGxhdGVz
dFByb2R1Y3RpdmVJdGVyYXRpb24gPSBsYXRlc3RJdGVyYXRpb25HZXR0ZXIoKTsKLSAgICAgICAg
aWYgKCFsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgIHZhciB0b3RhbFJldmlzaW9uc0JlaGluZCA9IDA7Ci0KLSAgICAgICAgLy8gRklYTUU6
IFRvIGJlIDEwMCUgY29ycmVjdCwgd2Ugc2hvdWxkIGFsc28gZmlsdGVyIG91dCBjaGFuZ2VzIHRo
YXQgYXJlIGlnbm9yZWQgYnkKLSAgICAgICAgLy8gdGhlIHF1ZXVlLCBzZWUgX3Nob3VsZF9maWxl
X3RyaWdnZXJfYnVpbGQgaW4gd2tidWlsZC5weS4KLSAgICAgICAgdmFyIGJyYW5jaGVzID0gcXVl
dWUuYnJhbmNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJhbmNoZXMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmFuY2ggPSBicmFuY2hlc1tpXTsKLSAgICAgICAg
ICAgIHZhciByZXBvc2l0b3J5ID0gYnJhbmNoLnJlcG9zaXRvcnk7Ci0gICAgICAgICAgICB2YXIg
cmVwb3NpdG9yeU5hbWUgPSByZXBvc2l0b3J5Lm5hbWU7Ci0gICAgICAgICAgICB2YXIgdHJhYyA9
IHJlcG9zaXRvcnkudHJhYzsKLSAgICAgICAgICAgIHZhciBsYXRlc3RQcm9kdWN0aXZlUmV2aXNp
b25OdW1iZXIgPSBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW3JlcG9zaXRvcnlO
YW1lXTsKLSAgICAgICAgICAgIGlmICghbGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0cmFjKQotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0cmFjLmxhdGVzdFJlY29yZGVk
UmV2aXNpb25OdW1iZXIgfHwgdHJhYy5pbmRleE9mUmV2aXNpb24odHJhYy5vbGRlc3RSZWNvcmRl
ZFJldmlzaW9uTnVtYmVyKSA+IHRyYWMuaW5kZXhPZlJldmlzaW9uKGxhdGVzdFByb2R1Y3RpdmVS
ZXZpc2lvbk51bWJlcikpIHsKLSAgICAgICAgICAgICAgICB0cmFjLmxvYWRNb3JlSGlzdG9yaWNh
bERhdGEoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIHRvdGFsUmV2aXNpb25zQmVoaW5kICs9IHRyYWMuY29tbWl0c09uQnJhbmNoTGF0ZXJU
aGFuUmV2aXNpb24oYnJhbmNoLm5hbWUsIGxhdGVzdFByb2R1Y3RpdmVSZXZpc2lvbk51bWJlciku
bGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0b3RhbFJldmlzaW9uc0JlaGluZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7IC8vIFdlIGNhbid0IGp1c3QgcGFzcyB0ZXh0IHRv
IFN0YXR1c0xpbmVWaWV3IGhlcmUsIGJlY2F1c2Ugd2UgbmVlZCBhbiBlbGVtZW50IHRoYXQgcGVy
ZmVjdGx5IGZpdHMgdGhlIHRleHQgZm9yIHBvcG92ZXIgcG9zaXRpb25pbmcuCi0gICAgICAgIG1l
c3NhZ2VFbGVtZW50LnRleHRDb250ZW50ID0gdG90YWxSZXZpc2lvbnNCZWhpbmQgKyAiICIgKyAo
dG90YWxSZXZpc2lvbnNCZWhpbmQgPT09IDEgPyAicmV2aXNpb24gYmVoaW5kIiA6ICJyZXZpc2lv
bnMgYmVoaW5kIik7Ci0gICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVz
c2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Ob0J1YmJsZSk7Ci0gICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVudCk7Ci0KLSAgICAgICAgbmV3IFBv
cG92ZXJUcmFja2VyKG1lc3NhZ2VFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvclBlbmRp
bmdDb21taXRzLmJpbmQodGhpcywgbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKSwgcXVldWUpOwotICAg
IH0sCi0KLSAgICBfcG9wb3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2U6IGZ1bmN0aW9uKHRyYWMsIGJy
YW5jaCwgZmlyc3RSZXZpc2lvbk51bWJlciwgbGFzdFJldmlzaW9uTnVtYmVyKQotICAgIHsKLSAg
ICAgICAgZnVuY3Rpb24gbGluZUZvckNvbW1pdCh0cmFjLCBjb21taXQpCi0gICAgICAgIHsKLSAg
ICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5jbGFzc05hbWUgPSAicGVuZGluZy1jb21taXQiOwotCi0gICAgICAg
ICAgICB2YXIgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAg
ICAgICAgICBsaW5rRWxlbWVudC5jbGFzc05hbWUgPSAicmV2aXNpb24iOwotICAgICAgICAgICAg
bGlua0VsZW1lbnQuaHJlZiA9IHRyYWMucmV2aXNpb25VUkwoY29tbWl0LnJldmlzaW9uTnVtYmVy
KTsKLSAgICAgICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAg
ICAgbGlua0VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9mb3JtYXRSZXZpc2lvbkZvckRpc3Bs
YXkoY29tbWl0LnJldmlzaW9uTnVtYmVyLCBicmFuY2gucmVwb3NpdG9yeSk7Ci0gICAgICAgICAg
ICByZXN1bHQuYXBwZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotCi0gICAgICAgICAgICB2YXIgYXV0
aG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAg
IGF1dGhvckVsZW1lbnQuY2xhc3NOYW1lID0gImF1dGhvciI7Ci0gICAgICAgICAgICBhdXRob3JF
bGVtZW50LnRleHRDb250ZW50ID0gY29tbWl0LmF1dGhvcjsKLSAgICAgICAgICAgIHJlc3VsdC5h
cHBlbmRDaGlsZChhdXRob3JFbGVtZW50KTsKLQotICAgICAgICAgICAgdmFyIHRpdGxlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRpdGxlRWxl
bWVudC5jbGFzc05hbWUgPSAidGl0bGUiOwotICAgICAgICAgICAgdGl0bGVFbGVtZW50LmlubmVy
SFRNTCA9IGNvbW1pdC50aXRsZS5pbm5lckhUTUw7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5k
Q2hpbGQodGl0bGVFbGVtZW50KTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICAg
ICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyYWMuaW5kZXhPZlJldmlzaW9uKHRyYWMu
b2xkZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcikgPD0gdHJhYy5pbmRleE9mUmV2aXNpb24oZmly
c3RSZXZpc2lvbk51bWJlcikpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUbyBiZSAxMDAlIGNvcnJl
Y3QsIHdlIHNob3VsZCBhbHNvIGZpbHRlciBvdXQgY2hhbmdlcyB0aGF0IGFyZSBpZ25vcmVkIGJ5
Ci0gICAgICAgIC8vIHRoZSBxdWV1ZSwgc2VlIF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkIGlu
IHdrYnVpbGQucHkuCi0gICAgICAgIHZhciBjb21taXRzID0gdHJhYy5jb21taXRzT25CcmFuY2hJ
blJldmlzaW9uUmFuZ2UoYnJhbmNoLm5hbWUsIGZpcnN0UmV2aXNpb25OdW1iZXIsIGxhc3RSZXZp
c2lvbk51bWJlcik7Ci0gICAgICAgIHJldHVybiBjb21taXRzLm1hcChmdW5jdGlvbihjb21taXQp
IHsKLSAgICAgICAgICAgIHJldHVybiBsaW5lRm9yQ29tbWl0LmNhbGwodGhpcywgdHJhYywgY29t
bWl0KTsKLSAgICAgICAgfSwgdGhpcykucmV2ZXJzZSgpOwotICAgIH0sCi0KLSAgICBfcHJlc2Vu
dFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0czogZnVuY3Rpb24obGF0ZXN0SXRlcmF0aW9uR2V0dGVy
LCBlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBsYXRlc3RQcm9k
dWN0aXZlSXRlcmF0aW9uID0gbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKCk7Ci0gICAgICAgIGlmICgh
bGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAg
ICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsKLQotICAg
ICAgICB2YXIgc2hvdWxkQWRkRGl2aWRlciA9IGZhbHNlOwotICAgICAgICB2YXIgYnJhbmNoZXMg
PSBxdWV1ZS5icmFuY2hlczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmFuY2hlcy5s
ZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGJyYW5jaCA9IGJyYW5jaGVzW2ldOwotICAg
ICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFuY2gucmVwb3NpdG9yeTsKLSAgICAgICAgICAg
IHZhciByZXBvc2l0b3J5TmFtZSA9IHJlcG9zaXRvcnkubmFtZTsKLSAgICAgICAgICAgIHZhciB0
cmFjID0gcmVwb3NpdG9yeS50cmFjOwotICAgICAgICAgICAgdmFyIGxhdGVzdFByb2R1Y3RpdmVS
ZXZpc2lvbk51bWJlciA9IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bcmVwb3Np
dG9yeU5hbWVdOwotICAgICAgICAgICAgaWYgKCFsYXRlc3RQcm9kdWN0aXZlUmV2aXNpb25OdW1i
ZXIgfHwgIXRyYWMubGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcikKLSAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhciBuZXh0UmV2aXNpb24gPSB0cmFjLm5leHRSZXZp
c2lvbihicmFuY2gubmFtZSwgbGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyKTsKLSAgICAg
ICAgICAgIGlmIChuZXh0UmV2aXNpb24gPT09IFRyYWMuTk9fTU9SRV9SRVZJU0lPTlMpCi0gICAg
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIgbGluZXMgPSB0aGlzLl9wb3Bv
dmVyTGluZXNGb3JDb21taXRSYW5nZSh0cmFjLCBicmFuY2gsIG5leHRSZXZpc2lvbiwgdHJhYy5s
YXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciBsZW5ndGggPSBs
aW5lcy5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoICYmIHNob3VsZEFkZERpdmlkZXIp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyArK2opCi0gICAgICAgICAgICAg
ICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lc1tqXSk7Ci0gICAgICAgICAgICBzaG91bGRBZGRE
aXZpZGVyID0gc2hvdWxkQWRkRGl2aWRlciB8fCBsZW5ndGggPiAwOwotICAgICAgICB9Ci0KLSAg
ICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVu
dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNv
bnRlbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdl
Lk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhf
WCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgfSwKLQotICAgIF9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXk6IGZ1bmN0aW9uKHJldmlzaW9u
LCByZXBvc2l0b3J5KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwb3NpdG9yeS5p
c1NWTiB8fCByZXBvc2l0b3J5LmlzR2l0LCAiU2hvdWxkIG5vdCBnZXQgaGVyZTsgIiArIHJlcG9z
aXRvcnkubmFtZSArICIgZGlkIG5vdCBzcGVjaWZ5IGEga25vd24gVkNTIHR5cGUuIik7Ci0gICAg
ICAgIGlmIChyZXBvc2l0b3J5LmlzU1ZOKQotICAgICAgICAgICAgcmV0dXJuICJyIiArIHJldmlz
aW9uOwotICAgICAgICAvLyBUcnVuY2F0aW5nIGZvciBkaXNwbGF5LiBHaXQgdHJhZGl0aW9uYWxs
eSB1c2VzIHNldmVuIGNoYXJhY3RlcnMgZm9yIGEgc2hvcnQgaGFzaC4KLSAgICAgICAgcmV0dXJu
IHJldmlzaW9uLnN1YnN0cigwLCA3KTsKLSAgICB9LAotCi0gICAgX3JlYWRhYmxlVGltZVN0cmlu
ZzogZnVuY3Rpb24oc2Vjb25kcykKLSAgICB7Ci0gICAgICAgIHZhciBzZWNvbmRzSW5Ib3VyID0g
NjAgKiA2MDsKLSAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gc2Vjb25k
c0luSG91cik7Ci0gICAgICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAtIGhv
dXJzICogc2Vjb25kc0luSG91cikgLyA2MCk7Ci0gICAgICAgIHZhciBob3Vyc1BhcnQgPSAiIjsK
LSAgICAgICAgaWYgKGhvdXJzID09PSAxKQotICAgICAgICAgICAgaG91cnNQYXJ0ID0gIjFceGEw
aG91ciBhbmQgIjsKLSAgICAgICAgZWxzZSBpZiAoaG91cnMgPiAwKQotICAgICAgICAgICAgaG91
cnNQYXJ0ID0gaG91cnMgKyAiXHhhMGhvdXJzIGFuZCAiOwotICAgICAgICBpZiAoIW1pbnV0ZXMp
Ci0gICAgICAgICAgICByZXR1cm4gImxlc3MgdGhhbiBhIG1pbnV0ZSI7Ci0gICAgICAgIGlmICht
aW51dGVzID09PSAxKQotICAgICAgICAgICAgcmV0dXJuIGhvdXJzUGFydCArICIxXHhhMG1pbnV0
ZSI7Ci0gICAgICAgIHJldHVybiBob3Vyc1BhcnQgKyBtaW51dGVzICsgIlx4YTBtaW51dGVzIjsK
LSAgICB9Ci19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUXVl
dWVWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU2V0dGluZ3MuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU2V0dGluZ3MuanMJKHJldmlzaW9uIDI2ODczMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1NldHRpbmdzLmpzCShub25leGlzdGVudCkKQEAgLTEs
MTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKLXsKLSAgICBC
YXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmNoYW5nZUNhbGxiYWNrcyA9IHt9Owot
fTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhTZXR0aW5ncyk7Ci0KLVNl
dHRpbmdzLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogU2V0dGluZ3MsCi0gICAgX19w
cm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIHNldE9iamVjdDogZnVuY3Rpb24o
a2V5LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNP
Ti5zdHJpbmdpZnkodmFsdWUpKTsKLSAgICB9LAotCi0gICAgZ2V0T2JqZWN0OiBmdW5jdGlvbihr
ZXkpCi0gICAgewotICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRl
bShrZXkpKTsKLSAgICB9LAotCi0gICAgYXZhaWxhYmxlOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0cnkgewotICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oInRlc3RMb2NhbFN0
b3JhZ2UiLCAidGVzdCIpOwotICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCJ0
ZXN0TG9jYWxTdG9yYWdlIikgIT0gInRlc3QiKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJ0ZXN0TG9jYWxTdG9yYWdl
Iik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIkNvdWxk
bid0IHVzZSBsb2NhbFN0b3JhZ2UsIHNldHRpbmdzIHdvbid0IHdvcms6ICIgKyBlKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0sCi0KLSAgICBhZGRTZXR0aW5nTGlzdGVuZXI6IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2sp
Ci0gICAgewotICAgICAgICBpZiAoIXRoaXMuY2hhbmdlQ2FsbGJhY2tzW2tleV0pCi0gICAgICAg
ICAgICB0aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldID0gW107Ci0gICAgICAgIHRoaXMuY2hhbmdl
Q2FsbGJhY2tzW2tleV0ucHVzaChjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIGZpcmVTZXR0aW5n
TGlzdGVuZXI6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja3MgPSB0
aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldOwotICAgICAgICBpZiAoIWNhbGxiYWNrcykKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVu
Z3RoOyArK2kpCi0gICAgICAgICAgICBjYWxsYmFja3NbaV0oKTsKLSAgICB9LAotCi0gICAgdG9n
Z2xlU2V0dGluZ3NEaXNwbGF5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIWRvY3Vt
ZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJzZXR0aW5ncy12aXNpYmxlIikpCi0gICAgICAg
ICAgICB0aGlzLmZpcmVTZXR0aW5nTGlzdGVuZXIoImVudGVyZWRTZXR0aW5ncyIpOwotICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoInNldHRpbmdzLXZpc2libGUiKTsKLSAg
ICB9LAotCi0gICAgcGFyc2VQbGF0Zm9ybUZhbWlseTogZnVuY3Rpb24ocGxhdGZvcm1OYW1lKQot
ICAgIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gJyc7
Ci0gICAgICAgIHZhciByZXN1bHQgPSBwbGF0Zm9ybU5hbWUuc3Vic3RyKDAsIHBsYXRmb3JtTmFt
ZS5pbmRleE9mKCItIikpOwotICAgICAgICBpZiAocmVzdWx0ID09PSAibWFjb3MiKQotICAgICAg
ICAgICAgcmVzdWx0ID0gIm1hYyI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQot
ICAgIHRvZ2dsZUhpZGRlblBsYXRmb3JtRmFtaWx5OiBmdW5jdGlvbihwbGF0Zm9ybUZhbWlseSkK
LSAgICB7Ci0gICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzID0gdGhpcy5nZXRPYmpl
Y3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiKSB8fCBbXTsKLSAgICAgICAgdmFyIGhpZGRlblBs
YXRmb3JtSW5kZXggPSBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmluZGV4T2YocGxhdGZvcm1GYW1p
bHkpOwotICAgICAgICBpZiAoaGlkZGVuUGxhdGZvcm1JbmRleCA+IC0xKQotICAgICAgICAgICAg
aGlkZGVuUGxhdGZvcm1GYW1pbGllcy5zcGxpY2UoaGlkZGVuUGxhdGZvcm1JbmRleCwgMSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhpZGRlblBsYXRmb3JtRmFtaWxpZXMucHVzaChwbGF0
Zm9ybUZhbWlseSk7Ci0KLSAgICAgICAgdGhpcy5zZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFt
aWxpZXMiLCBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzKTsKLSAgICAgICAgdGhpcy5maXJlU2V0dGlu
Z0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIik7Ci0gICAgfSwKLQotICAgIGNsZWFy
SGlkZGVuUGxhdGZvcm1GYW1pbGllczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5z
ZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiLCBbXSk7Ci0gICAgICAgIHRoaXMuZmly
ZVNldHRpbmdMaXN0ZW5lcigiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpOwotICAgIH0sCi0KLSAg
ICB1cGRhdGVUb2dnbGVCdXR0b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgaGlk
ZGVuUGxhdGZvcm1GYW1pbGllcyA9IHRoaXMuZ2V0T2JqZWN0KCJoaWRkZW5QbGF0Zm9ybUZhbWls
aWVzIikgfHwgW107Ci0gICAgICAgIHZhciBoaWRkZW5GYW1pbHlCdXR0b25zID0geyJhbGwiOiBo
aWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmxlbmd0aCA+IDB9OwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBo
aWRkZW5GYW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWxpZXNbaV1dID0gdHJ1ZTsKLQot
ICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHlCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybUZhbWlseUJ1dHRvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlseSA9IHRoaXMucGFyc2VQbGF0Zm9ybUZhbWls
eShwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uaWQpOwotICAgICAgICAgICAgaWYgKCFoaWRkZW5G
YW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWx5XSkKLSAgICAgICAgICAgICAgICBwbGF0
Zm9ybUZhbWlseUJ1dHRvbnNbaV0uY2xhc3NMaXN0LmFkZCgiZmFtaWx5U2hvd24iKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uY2xh
c3NMaXN0LnJlbW92ZSgiZmFtaWx5U2hvd24iKTsKLSAgICAgICAgfQotICAgIH0sCi19OwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMJKHJldmlzaW9uIDI2ODczMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzCShub25leGlzdGVudCkK
QEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1TdGF0dXNMaW5lVmlldyA9IGZ1bmN0aW9u
KG1lc3NhZ2UsIHN0YXR1cywgbGFiZWwsIHJlcGVhdENvdW50LCB1cmwpCi17Ci0gICAgQmFzZU9i
amVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQobWVzc2FnZSk7Ci0KLSAgICB0
aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdHVzLWxpbmUiKTsKLSAgICB0aGlzLmVsZW1lbnQuX19z
dGF0dXNMaW5lVmlldyA9IHRoaXM7Ci0KLSAgICBpZiAodXJsKSB7Ci0gICAgICAgIHRoaXMuX3N0
YXR1c0J1YmJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAg
IHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuaHJlZiA9IHVybDsKLSAgICAgICAgdGhpcy5fc3Rh
dHVzQnViYmxlRWxlbWVudC50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICB9IGVsc2UKLSAgICAgICAg
dGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnViYmxlIik7
Ci0gICAgaWYgKHN0YXR1cyAhPSBTdGF0dXNMaW5lVmlldy5TdGF0dXMuTm9CdWJibGUpCi0gICAg
ICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50KTsK
LQotICAgIHRoaXMuX2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYWJlbCIpOwotCi0gICAg
dGhpcy5fbWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9tZXNzYWdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtZXNzYWdlIik7Ci0gICAgdGhp
cy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21lc3NhZ2VFbGVtZW50KTsKLQotICAgIHRoaXMu
c3RhdHVzID0gc3RhdHVzIHx8IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsOwotICAgIHRo
aXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgIiI7Ci0gICAgdGhpcy5sYWJlbCA9IGxhYmVsIHx8ICIi
OwotICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudCB8fCAwOwotICAgIHRoaXMudXJs
ID0gdXJsIHx8IG51bGw7Ci19OwotCi1TdGF0dXNMaW5lVmlldy5TdGF0dXMgPSB7Ci0gICAgTm9C
dWJibGU6ICJuby1idWJibGUiLAotICAgIE5ldXRyYWw6ICJuZXV0cmFsIiwKLSAgICBHb29kOiAi
Z29vZCIsCi0gICAgRGFuZ2VyOiAiZGFuZ2VyIiwKLSAgICBCYWQ6ICJiYWQiLAotICAgIFVuYXV0
aG9yaXplZDogInVuYXV0aG9yaXplZCIKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JG
dW5jdGlvbnMoU3RhdHVzTGluZVZpZXcpOwotCi1TdGF0dXNMaW5lVmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IFN0YXR1c0xpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogQmFzZU9i
amVjdC5wcm90b3R5cGUsCi0KLSAgICBnZXQgc3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9zdGF0dXM7Ci0gICAgfSwKLQotICAgIHNldCBzdGF0dXMoeCkKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHgpOwotICAgICAgICBpZiAoIXgpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3RhdHVz
KTsKLQotICAgICAgICB0aGlzLl9zdGF0dXMgPSB4OwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5j
bGFzc0xpc3QuYWRkKHRoaXMuX3N0YXR1cyk7Ci0gICAgfSwKLQotICAgIGdldCByZXBlYXRDb3Vu
dCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVwZWF0Q291bnQ7Ci0gICAgfSwKLQot
ICAgIHNldCByZXBlYXRDb3VudCh4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVwZWF0Q291bnQg
PSB4OwotCi0gICAgICAgIGlmICh0aGlzLl9yZXBlYXRDb3VudCkgewotICAgICAgICAgICAgdGhp
cy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3JlcGVhdENvdW50Owot
ICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJw
aWN0b2dyYW0iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1
YmJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicGljdG9ncmFtIik7Ci0KLSAgICAgICAgICAgIHN3
aXRjaCAodGhpcy5fc3RhdHVzKSB7Ci0gICAgICAgICAgICBjYXNlIFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5OZXV0cmFsOgotICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQu
dGV4dENvbnRlbnQgPSAiPyI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
IGNhc2UgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2Q6Ci0gICAgICAgICAgICAgICAgdGhpcy5f
c3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgICAgICBjYXNlIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXI6Ci0g
ICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9ICIh
IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBTdGF0dXNMaW5l
Vmlldy5TdGF0dXMuQmFkOgotICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1l
bnQudGV4dENvbnRlbnQgPSAiXHUyNzE1IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBnZXQgbGFiZWwoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAotCi0g
ICAgc2V0IGxhYmVsKHgpCi0gICAgewotICAgICAgICBpZiAoeCkgewotICAgICAgICAgICAgdGhp
cy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0geDsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVu
dC5pbnNlcnRCZWZvcmUodGhpcy5fbGFiZWxFbGVtZW50LCB0aGlzLl9tZXNzYWdlRWxlbWVudCk7
Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgibm8tbGFiZWwiKTsK
LSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOwotICAgICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnJlbW92ZSgpOwotICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vLWxhYmVsIik7Ci0gICAgICAg
IH0KLSAgICB9LAotCi0gICAgZ2V0IG1lc3NhZ2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRo
aXMuX21lc3NhZ2VFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCi0KLSAgICBzZXQgbWVzc2Fn
ZSh4KQotICAgIHsKLSAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBOb2RlKSB7Ci0gICAgICAgICAg
ICB0aGlzLl9tZXNzYWdlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAgICAgdGhp
cy5fbWVzc2FnZUVsZW1lbnQuYXBwZW5kQ2hpbGQoeCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IHg7Ci0gICAgICAgIH0K
LSAgICB9LAotCi0gICAgZ2V0IHN0YXR1c0J1YmJsZUVsZW1lbnQoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQ7Ci0gICAgfQotfTsKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL1RyYWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvVHJhYy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVHJh
Yy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
VHJhYyA9IGZ1bmN0aW9uKGJhc2VVUkwsIG9wdGlvbnMpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxs
KHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoYmFzZVVSTCk7Ci0KLSAgICB0aGlzLmJhc2VV
UkwgPSBiYXNlVVJMOwotICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gIm9iamVjdCIpIHsKLSAg
ICAgICAgdGhpcy5fbmVlZHNBdXRoZW50aWNhdGlvbiA9IG9wdGlvbnNbVHJhYy5OZWVkc0F1dGhl
bnRpY2F0aW9uXSA9PT0gdHJ1ZTsKLSAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSBwcm9qZWN0SWRl
bnRpZmllciBvcHRpb24gaWZmIHRoZSB0YXJnZXQgVHJhYyBpbnN0YW5jZSBpcyBob3N0aW5nIG11
bHRpcGxlIHJlcG9zaXRvcmllcyAmJiBUcmFjIHZlcnNpb24gPiAxLjAKLSAgICAgICAgdGhpcy5f
cHJvamVjdE5hbWUgPSBvcHRpb25zW1RyYWMuUHJvamVjdElkZW50aWZpZXJdOwotICAgIH0KLQot
ICAgIHRoaXMucmVjb3JkZWRDb21taXRzID0gW107IC8vIFdpbGwgYmUgc29ydGVkIGluIGFzY2Vu
ZGluZyBvcmRlci4KLSAgICB0aGlzLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1i
ZXIgPSB7fTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoVHJhYyk7
Ci0KLVRyYWMuTk9fTU9SRV9SRVZJU0lPTlMgPSBudWxsOwotCi1UcmFjLk5lZWRzQXV0aGVudGlj
YXRpb24gPSAibmVlZHNBdXRoZW50aWNhdGlvbiI7Ci1UcmFjLlByb2plY3RJZGVudGlmaWVyID0g
InByb2plY3RJZGVudGlmaWVyIjsKLVRyYWMuVXBkYXRlSW50ZXJ2YWwgPSA0NTAwMDsgLy8gNDUg
c2Vjb25kcwotCi1UcmFjLkV2ZW50ID0gewotICAgIENvbW1pdHNVcGRhdGVkOiAiY29tbWl0cy11
cGRhdGVkIiwKLSAgICBMb2FkZWQ6ICJsb2FkZWQiCi19OwotCi1UcmFjLnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogVHJhYywKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90
eXBlLAotCi0gICAgZ2V0IG9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLnJlY29yZGVkQ29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRlZENvbW1pdHNbMF0ucmV2
aXNpb25OdW1iZXI7Ci0gICAgfSwKLQotICAgIGdldCBsYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVt
YmVyKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5yZWNvcmRlZENvbW1pdHMubGVuZ3RoKQot
ICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVjb3Jk
ZWRDb21taXRzW3RoaXMucmVjb3JkZWRDb21taXRzLmxlbmd0aCAtIDFdLnJldmlzaW9uTnVtYmVy
OwotICAgIH0sCi0KLSAgICBfY29tbWl0c09uQnJhbmNoOiBmdW5jdGlvbihicmFuY2hOYW1lLCBi
ZWdpblBvc2l0aW9uLCBlbmRQb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIGJlZ2luUG9zaXRpb24g
PSBiZWdpblBvc2l0aW9uIHx8IDA7Ci0gICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PT0gdW5kZWZp
bmVkKQotICAgICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLnJlY29yZGVkQ29tbWl0cy5sZW5n
dGggLSAxOwotICAgICAgICB2YXIgY29tbWl0cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBpID0g
YmVnaW5Qb3NpdGlvbjsgaSA8PSBlbmRQb3NpdGlvbjsgKytpKSB7Ci0gICAgICAgICAgICB2YXIg
Y29tbWl0ID0gdGhpcy5yZWNvcmRlZENvbW1pdHNbaV07Ci0gICAgICAgICAgICBpZiAoIWNvbW1p
dC5jb250YWluc0JyYW5jaExvY2F0aW9uIHx8IGNvbW1pdC5icmFuY2hlcy5pbmNsdWRlcyhicmFu
Y2hOYW1lKSkKLSAgICAgICAgICAgICAgICBjb21taXRzLnB1c2goY29tbWl0KTsKLSAgICAgICAg
fQotICAgICAgICByZXR1cm4gY29tbWl0czsKLSAgICB9LAotCi0gICAgY29tbWl0c09uQnJhbmNo
TGF0ZXJUaGFuUmV2aXNpb246IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIHJldmlzaW9uKQotICAgIHsK
LSAgICAgICAgdmFyIGluZGV4VG9CZUxhdGVyVGhhbiA9IHRoaXMuaW5kZXhPZlJldmlzaW9uKHJl
dmlzaW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhUb0JlTGF0ZXJUaGFuICE9PSAt
MSwgcmV2aXNpb24gKyAiIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiByZWNvcmRlZCBjb21taXRzIik7
Ci0gICAgICAgIGlmIChpbmRleFRvQmVMYXRlclRoYW4gPT09IC0xKQotICAgICAgICAgICAgcmV0
dXJuIFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJyYW5jaE5hbWUs
IGluZGV4VG9CZUxhdGVyVGhhbiArIDEpOwotICAgIH0sCi0KLSAgICBjb21taXRzT25CcmFuY2hJ
blJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIGZpcnN0UmV2aXNpb24sIGxhc3RS
ZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBpbmRleE9mRmlyc3RSZXZpc2lvbiA9IHRoaXMu
aW5kZXhPZlJldmlzaW9uKGZpcnN0UmV2aXNpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydChp
bmRleE9mRmlyc3RSZXZpc2lvbiAhPT0gLTEsIGZpcnN0UmV2aXNpb24gKyAiIGlzIG5vdCBpbiB0
aGUgbGlzdCBvZiByZWNvcmRlZCBjb21taXRzIik7Ci0gICAgICAgIGlmIChpbmRleE9mRmlyc3RS
ZXZpc2lvbiA9PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgIHZhciBpbmRl
eE9mTGFzdFJldmlzaW9uID0gdGhpcy5pbmRleE9mUmV2aXNpb24obGFzdFJldmlzaW9uKTsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhPZkxhc3RSZXZpc2lvbiAhPT0gLTEsIGxhc3RSZXZp
c2lvbiArICIgaXMgbm90IGluIHRoZSBsaXN0IG9mIHJlY29yZGVkIGNvbW1pdHMiKTsKLSAgICAg
ICAgaWYgKGluZGV4T2ZMYXN0UmV2aXNpb24gPT09IC0xKQotICAgICAgICAgICAgcmV0dXJuIFtd
OwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJyYW5jaE5hbWUsIGluZGV4
T2ZGaXJzdFJldmlzaW9uLCBpbmRleE9mTGFzdFJldmlzaW9uKTsKLSAgICB9LAotCi0gICAgcmV2
aXNpb25VUkw6IGZ1bmN0aW9uKHJldmlzaW9uKQotICAgIHsKLSAgICAgICAgdmFyIHVybCA9IHRo
aXMuYmFzZVVSTCArICJjaGFuZ2VzZXQvIiArIGVuY29kZVVSSUNvbXBvbmVudChyZXZpc2lvbik7
Ci0gICAgICAgIGlmICh0aGlzLl9wcm9qZWN0TmFtZSkKLSAgICAgICAgICAgIHVybCArPSAnLycg
KyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fcHJvamVjdE5hbWUpOwotICAgICAgICByZXR1cm4g
dXJsOwotICAgIH0sCi0KLSAgICBfeG1sVGltZWxpbmVVUkw6IGZ1bmN0aW9uKGZyb21EYXRlLCB0
b0RhdGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChmcm9tRGF0ZSA8PSB0b0RhdGUp
OwotCi0gICAgICAgIHZhciBmcm9tRGF5ID0gbmV3IERhdGUoZnJvbURhdGUuZ2V0RnVsbFllYXIo
KSwgZnJvbURhdGUuZ2V0TW9udGgoKSwgZnJvbURhdGUuZ2V0RGF0ZSgpKTsKLSAgICAgICAgdmFy
IHRvRGF5ID0gbmV3IERhdGUodG9EYXRlLmdldEZ1bGxZZWFyKCksIHRvRGF0ZS5nZXRNb250aCgp
LCB0b0RhdGUuZ2V0RGF0ZSgpKTsKLSAgICAgICAgdmFyIGNoYW5nZXNldFBhcmFtZXRlciA9IHRo
aXMuX3Byb2plY3ROYW1lID8gInJlcG8tIiArIHRoaXMuX3Byb2plY3ROYW1lIDogImNoYW5nZXNl
dCI7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJ0aW1lbGluZT8iICsKLSAgICAg
ICAgICAgIGNoYW5nZXNldFBhcmFtZXRlciArICI9b24iICsKLSAgICAgICAgICAgICImZm9ybWF0
PXJzcyIgKwotICAgICAgICAgICAgIiZtYXg9MCIgKwotICAgICAgICAgICAgIiZmcm9tPSIgKyBl
bmNvZGVVUklDb21wb25lbnQodG9EYXkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCkpICsKLSAg
ICAgICAgICAgICImZGF5c2JhY2s9IiArIGVuY29kZVVSSUNvbXBvbmVudCgodG9EYXkgLSBmcm9t
RGF5KSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpOwotICAgIH0sCi0KLSAgICBfcGFyc2VSZXZpc2lv
bkZyb21VUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZXJlIGFyZSBtdWx0
aXBsZSBsaW5rIGZvcm1hdHMgZm9yIFRyYWMgdGhhdCB3ZSBzdXBwb3J0OgotICAgICAgICAvLyBo
dHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTkwNDk3Ci0gICAgICAgIC8vIGh0dHA6
Ly90cmFjLmZvb2Jhci5jb20vcmVwb3NpdG9yeS9jaGFuZ2VzZXQvNzUzODgvcHJvamVjdAotICAg
ICAgICAvLyBodHRwczovL2dpdC5mb29iYXIuY29tL3RyYWMvV2hhdGV2ZXIuZ2l0L2NoYW5nZXNl
dC8wZTQ5OGRiNWQ4ZTViNWEzNDI2MzEKLSAgICAgICAgcmV0dXJuIC9jaGFuZ2VzZXRcLyhbYS1m
MC05XSspLiokLy5leGVjKHVybClbMV07Ci0gICAgfSwKLQotICAgIF9jb252ZXJ0Q29tbWl0SW5m
b0VsZW1lbnRUb09iamVjdDogZnVuY3Rpb24oZG9jLCBjb21taXRFbGVtZW50KQotICAgIHsKLSAg
ICAgICAgdmFyIGxpbmsgPSBkb2MuZXZhbHVhdGUoIi4vbGluayIsIGNvbW1pdEVsZW1lbnQsIG51
bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJpbmdWYWx1ZTsKLSAgICAgICAgdmFyIHJl
dmlzaW9uTnVtYmVyID0gdGhpcy5fcGFyc2VSZXZpc2lvbkZyb21VUkwobGluayk7Ci0KLSAgICAg
ICAgZnVuY3Rpb24gdHJhY05TUmVzb2x2ZXIocHJlZml4KQotICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAocHJlZml4ID09ICJkYyIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJodHRwOi8vcHVy
bC5vcmcvZGMvZWxlbWVudHMvMS4xLyI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBhdXRob3IgPSBkb2MuZXZhbHVhdGUoIi4vYXV0aG9yfGRjOmNy
ZWF0b3IiLCBjb21taXRFbGVtZW50LCB0cmFjTlNSZXNvbHZlciwgWFBhdGhSZXN1bHQuU1RSSU5H
X1RZUEUpLnN0cmluZ1ZhbHVlOwotICAgICAgICB2YXIgZGF0ZSA9IGRvYy5ldmFsdWF0ZSgiLi9w
dWJEYXRlIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpLnN0
cmluZ1ZhbHVlOwotICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShkYXRlKSk7Ci0g
ICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGRvYy5ldmFsdWF0ZSgiLi9kZXNjcmlwdGlvbiIsIGNv
bW1pdEVsZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJpbmdWYWx1ZTsK
LQotICAgICAgICB2YXIgcGFyc2VkRGVzY3JpcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLSAgICAgICAgcGFyc2VkRGVzY3JpcHRpb24uaW5uZXJIVE1MID0gZGVzY3JpcHRp
b247Ci0KLSAgICAgICAgdmFyIGxvY2F0aW9uID0gIiI7Ci0gICAgICAgIGlmIChwYXJzZWREZXNj
cmlwdGlvbi5maXJzdENoaWxkICYmIHBhcnNlZERlc2NyaXB0aW9uLmZpcnN0Q2hpbGQuY2xhc3NO
YW1lID09PSAiY2hhbmdlcyIpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiBleHRyYWN0IGJyYW5j
aCBpbmZvcm1hdGlvbiB3aGVuIHRyYWMuaW5pIGNvbnRhaW5zICJjaGFuZ2VzZXRfc2hvd19maWxl
cz1sb2NhdGlvbiIuCi0gICAgICAgICAgICBsb2NhdGlvbiA9IGRvYy5ldmFsdWF0ZSgiLy9zdHJv
bmciLCBwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkLCBudWxsLCBYUGF0aFJlc3VsdC5TVFJJ
TkdfVFlQRSkuc3RyaW5nVmFsdWU7Ci0gICAgICAgICAgICBwYXJzZWREZXNjcmlwdGlvbi5yZW1v
dmVDaGlsZChwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFRoZSBmZWVkIGNvbnRhaW5zIGEgPHRpdGxlPiwgYnV0IGl0J3Mgbm90IHBhcnNlZCBh
cyB3ZWxsIGFzIHdoYXQgd2UgYXJlIGdldHRpbmcgZnJvbSBkZXNjcmlwdGlvbi4KLSAgICAgICAg
dmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHZhciBu
b2RlID0gcGFyc2VkRGVzY3JpcHRpb24uZmlyc3RDaGlsZCA/IHBhcnNlZERlc2NyaXB0aW9uLmZp
cnN0Q2hpbGQuZmlyc3RDaGlsZCA6IG51bGw7Ci0gICAgICAgIHdoaWxlIChub2RlICYmIG5vZGUu
dGFnTmFtZSAhPSAiQlIiKSB7Ci0gICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChub2RlLmNs
b25lTm9kZSh0cnVlKSk7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsKLSAg
ICAgICAgfQotCi0gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdHJhYyB0aXRsZXMgc3RhcnQg
d2l0aCBhIG5ld2xpbmUuIERlbGV0ZSBpdC4KLSAgICAgICAgaWYgKHRpdGxlLmZpcnN0Q2hpbGQg
JiYgdGl0bGUuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSAmJiB0aXRsZS5m
aXJzdENoaWxkLnRleHRDb250ZW50Lmxlbmd0aCA+IDAgJiYgdGl0bGUuZmlyc3RDaGlsZC50ZXh0
Q29udGVudFswXSA9PSAiXG4iKQotICAgICAgICAgICAgdGl0bGUuZmlyc3RDaGlsZC50ZXh0Q29u
dGVudCA9IHRpdGxlLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQuc3Vic3RyaW5nKDEpOwotCi0gICAg
ICAgIC8vIFdlIGhhdmUgYW4gb3ZlcmlkZGVuIHRpbWVsaW5lLnJzcyB0aGF0IGFkZHMgZ2l0IGJy
YW5jaGVzIHRvIHRoZSBUcmFjIHRpbWVsaW5lIFJTUyBvdXRwdXQgKHJkYXI6Ly9wcm9ibGVtLzIz
ODUzNjIzKS4KLSAgICAgICAgdmFyIGdpdEJyYW5jaGVzID0gZG9jLmV2YWx1YXRlKCIuL2JyYW5j
aGVzIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpLnN0cmlu
Z1ZhbHVlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAgICByZXZpc2lvbk51
bWJlcjogcmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICBsaW5rOiBsaW5rLAotICAgICAgICAg
ICAgdGl0bGU6IHRpdGxlLAotICAgICAgICAgICAgYXV0aG9yOiBhdXRob3IsCi0gICAgICAgICAg
ICBkYXRlOiBkYXRlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0aW9u
LmlubmVySFRNTCwKLSAgICAgICAgICAgIGNvbnRhaW5zQnJhbmNoTG9jYXRpb246IGxvY2F0aW9u
ICE9PSAiIiwKLSAgICAgICAgICAgIGJyYW5jaGVzOiBbXQotICAgICAgICB9OwotCi0gICAgICAg
IGlmIChyZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiAmJiAhZ2l0QnJhbmNoZXMpIHsKLSAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2F0aW9uW2xvY2F0aW9uLmxlbmd0aCAtIDFdICE9
PSAiLyIpOwotICAgICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiArPSAiLyI7Ci0gICAgICAg
ICAgICBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgidGFncy8iKSkKLSAgICAgICAgICAgICAgICBy
ZXN1bHQudGFnID0gbG9jYXRpb24uc3Vic3RyKDUsIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA1KSAt
IDUpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgiYnJhbmNoZXMv
IikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2gobG9jYXRpb24uc3Vic3Ry
KDksIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA5KSAtIDkpKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGxvY2F0aW9uLnN0YXJ0c1dpdGgoInJlbGVhc2VzLyIpKQotICAgICAgICAgICAgICAgIHJlc3Vs
dC5yZWxlYXNlID0gbG9jYXRpb24uc3Vic3RyKDksIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA5KSAt
IDkpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgidHJ1bmsvIikp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2goInRydW5rIik7Ci0gICAgICAg
ICAgICBlbHNlIGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKCJzdWJtaXNzaW9ucy8iKSkKLSAgICAg
ICAgICAgICAgICA7IC8vIFRoZXNlIGNoYW5nZXMgYXJlIG5ldmVyIHJlbGV2YW50IHRvIHRoZSBk
YXNoYm9hcmQuCi0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyByZXN1bHQu
Y29udGFpbnNCcmFuY2hMb2NhdGlvbiByZW1haW5zIHRydWUsIGJlY2F1c2UgdGhpcyBjb21taXQg
ZG9lcwotICAgICAgICAgICAgICAgIC8vIG5vdCBtYXRjaCBhbnkgZXhwbGljaXRseSBzcGVjaWZp
ZWQgYnJhbmNoZXMuCi0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UpOwotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdpdEJyYW5jaGVzKSB7Ci0gICAg
ICAgICAgICByZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiA9IHRydWU7Ci0gICAgICAgICAg
ICByZXN1bHQuYnJhbmNoZXMgPSByZXN1bHQuYnJhbmNoZXMuY29uY2F0KGdpdEJyYW5jaGVzLnNw
bGl0KCIsICIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwK
LQotICAgIF9sb2FkZWQ6IGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkKLSAgICB7Ci0gICAgICAgIGlm
ICghZGF0YURvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBrbm93
bkNvbW1pdHNXZXJlVXBkYXRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgbmV3Q29tbWl0cyA9IFtd
OwotCi0gICAgICAgIHZhciBjb21taXRJbmZvRWxlbWVudHMgPSBkYXRhRG9jdW1lbnQuZXZhbHVh
dGUoIi9yc3MvY2hhbm5lbC9pdGVtIiwgZGF0YURvY3VtZW50LCBudWxsLCBYUGF0aFJlc3VsdC5P
UkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSk7Ci0gICAgICAgIHZhciBjb21taXRJbmZvRWxlbWVu
dDsKLSAgICAgICAgd2hpbGUgKGNvbW1pdEluZm9FbGVtZW50ID0gY29tbWl0SW5mb0VsZW1lbnRz
Lml0ZXJhdGVOZXh0KCkpIHsKLSAgICAgICAgICAgIHZhciBjb21taXQgPSB0aGlzLl9jb252ZXJ0
Q29tbWl0SW5mb0VsZW1lbnRUb09iamVjdChkYXRhRG9jdW1lbnQsIGNvbW1pdEluZm9FbGVtZW50
KTsKLSAgICAgICAgICAgIHZhciBrbm93bkNvbW1pdEluZGV4ID0gdGhpcy5yZWNvcmRlZENvbW1p
dEluZGljZXNCeVJldmlzaW9uTnVtYmVyW2NvbW1pdC5yZXZpc2lvbk51bWJlcl07Ci0gICAgICAg
ICAgICBpZiAoa25vd25Db21taXRJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gQXV0
aG9yIGNvdWxkIGhhdmUgY2hhbmdlZCwgYXMgY29tbWl0IHF1ZXVlIHJlcGxhY2VzIGl0IGFmdGVy
IHRoZSBmYWN0LgotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVjb3JkZWRD
b21taXRzW2tub3duQ29tbWl0SW5kZXhdLnJldmlzaW9uTnVtYmVyID09PSBjb21taXQucmV2aXNp
b25OdW1iZXIpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZGVkQ29tbWl0c1trbm93
bkNvbW1pdEluZGV4XS5hdXRob3IgIT0gY29tbWl0LmF1dGhvcikgewotICAgICAgICAgICAgICAg
ICAgICB0aGlzLnJlY29yZGVkQ29tbWl0c1trbm93bkNvbW1pdEluZGV4XS5hdXRob3IgPSBjb21t
aXQuYXV0aG9yOwotICAgICAgICAgICAgICAgICAgICBrbm93bkNvbW1pdFdhc1VwZGF0ZWQgPSB0
cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgIG5ld0NvbW1pdHMucHVzaChjb21taXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5l
d0NvbW1pdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLnJlY29yZGVkQ29tbWl0cyA9IG5l
d0NvbW1pdHMuY29uY2F0KHRoaXMucmVjb3JkZWRDb21taXRzKS5zb3J0KGZ1bmN0aW9uKGEsIGIp
IHsgcmV0dXJuIGEuZGF0ZSAtIGIuZGF0ZTsgfSk7Ci0gICAgICAgICAgICB0aGlzLnJlY29yZGVk
Q29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXIgPSB7fTsKLSAgICAgICAgICAgIHRoaXMucmVj
b3JkZWRDb21taXRzLmZvckVhY2goZnVuY3Rpb24oY3VyZW50VmFsdWUsIGluZGV4KSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyW2N1
cmVudFZhbHVlLnJldmlzaW9uTnVtYmVyXSA9IGluZGV4OwotICAgICAgICAgICAgfSwgdGhpcyk7
Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmV3Q29tbWl0cy5sZW5ndGggfHwga25vd25Db21t
aXRzV2VyZVVwZGF0ZWQpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCBudWxsKTsKLSAgICB9LAotCi0gICAgbG9hZDog
ZnVuY3Rpb24oZnJvbURhdGUsIHRvRGF0ZSkKLSAgICB7Ci0gICAgICAgIGxvYWRYTUwodGhpcy5f
eG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkg
ewotICAgICAgICAgICAgdGhpcy5fbG9hZGVkKGRhdGFEb2N1bWVudCk7Ci0gICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhUcmFjLkV2ZW50LkxvYWRlZCwgW2Zyb21EYXRl
LCB0b0RhdGVdKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRpY2F0
aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLSAgICB9LAotCi0gICAgX3Vw
ZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGZyb21EYXRlID0gbmV3IERhdGUo
dGhpcy5fbGF0ZXN0TG9hZGVkRGF0ZSk7Ci0gICAgICAgIHZhciB0b0RhdGUgPSBuZXcgRGF0ZSgp
OwotCi0gICAgICAgIHRoaXMuX2xhdGVzdExvYWRlZERhdGUgPSB0b0RhdGU7Ci0KLSAgICAgICAg
bG9hZFhNTCh0aGlzLl94bWxUaW1lbGluZVVSTChmcm9tRGF0ZSwgdG9EYXRlKSwgdGhpcy5fbG9h
ZGVkLmJpbmQodGhpcyksIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPyB7IHdpdGhDcmVkZW50
aWFsczogdHJ1ZSB9IDoge30pOwotICAgIH0sCi0KLSAgICBzdGFydFBlcmlvZGljVXBkYXRlczog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX29sZGVzdEhp
c3RvcmljYWxEYXRlKTsKLQotICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOwotCi0gICAg
ICAgIHRoaXMuX29sZGVzdEhpc3RvcmljYWxEYXRlID0gdG9kYXk7Ci0gICAgICAgIHRoaXMuX2xh
dGVzdExvYWRlZERhdGUgPSB0b2RheTsKLQotICAgICAgICB0aGlzLl9sb2FkaW5nSGlzdG9yaWNh
bERhdGEgPSB0cnVlOwotICAgICAgICBsb2FkWE1MKHRoaXMuX3htbFRpbWVsaW5lVVJMKHRvZGF5
LCB0b2RheSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkgewotICAgICAgICAgICAgdGhpcy5fbG9h
ZGluZ0hpc3RvcmljYWxEYXRhID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9sb2FkZWQoZGF0
YURvY3VtZW50KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRpY2F0
aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLQotICAgICAgICB0aGlzLnVw
ZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlLmJpbmQodGhpcyksIFRyYWMuVXBk
YXRlSW50ZXJ2YWwpOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxEYXRhOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vbGRlc3RIaXN0b3Jp
Y2FsRGF0ZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmdIaXN0b3JpY2FsRGF0YSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBMb2FkIG9uZSBtb3JlIGRheSBvZiBoaXN0
b3JpY2FsIGRhdGEuCi0gICAgICAgIHZhciBmcm9tRGF0ZSA9IG5ldyBEYXRlKHRoaXMuX29sZGVz
dEhpc3RvcmljYWxEYXRlKTsKLSAgICAgICAgZnJvbURhdGUuc2V0RGF0ZShmcm9tRGF0ZS5nZXRE
YXRlKCkgLSAxKTsKLSAgICAgICAgdmFyIHRvRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlKTsKLQot
ICAgICAgICB0aGlzLl9vbGRlc3RIaXN0b3JpY2FsRGF0ZSA9IGZyb21EYXRlOwotCi0gICAgICAg
IHRoaXMuX2xvYWRpbmdIaXN0b3JpY2FsRGF0YSA9IHRydWU7Ci0gICAgICAgIGxvYWRYTUwodGhp
cy5feG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVu
dCkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0hpc3RvcmljYWxEYXRhID0gZmFsc2U7Ci0g
ICAgICAgICAgICB0aGlzLl9sb2FkZWQoZGF0YURvY3VtZW50KTsKLSAgICAgICAgfS5iaW5kKHRo
aXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRpY2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUg
fSA6IHt9KTsKLSAgICB9LAotCi0gICAgbmV4dFJldmlzaW9uOiBmdW5jdGlvbihicmFuY2hOYW1l
LCByZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBjb21taXRzID0gdGhpcy5jb21taXRzT25C
cmFuY2hMYXRlclRoYW5SZXZpc2lvbihicmFuY2hOYW1lLCByZXZpc2lvbik7Ci0gICAgICAgIGlm
IChjb21taXRzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXS5yZXZp
c2lvbk51bWJlcjsKLSAgICAgICAgcmV0dXJuIFRyYWMuTk9fTU9SRV9SRVZJU0lPTlM7Ci0gICAg
fSwKLQotICAgIGluZGV4T2ZSZXZpc2lvbjogZnVuY3Rpb24ocmV2aXNpb25OdW1iZXIpCi0gICAg
ewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlz
aW9uTnVtYmVyW3JldmlzaW9uTnVtYmVyXTsKLSAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSBjYWxs
ZXJzIHRvIGhhbmRsZSB1bmRlZmluZWQgcmVzdWx0LgotICAgICAgICBpZiAocmVzdWx0ID09PSB1
bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7
Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9U
cmFjLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1u
YXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0aWVzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1V0aWxpdGllcy5qcwkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0aWVzLmpzCShub25leGlzdGVudCkKQEAgLTEs
MjEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1KU09OLkxvYWRFcnJvciA9ICJKU09OTG9h
ZEVycm9yIjsKLUpTT04uUGFyc2VFcnJvciA9ICJKU09OUGFyc2VFcnJvciI7Ci0KLS8vIEpTT04u
bG9hZCgpIG1heSBiZSBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtczoKLS8vCi0vLyBK
U09OLmxvYWQoImh0dHA6Ly93d3cuYXBwbGUuY29tIiwgZnVuY3Rpb24oKSB7Lyogc3VjY2VzcyAq
L30pCi0vLyBPUgotLy8gSlNPTi5sb2FkKCJodHRwOi8vd3d3LmFwcGxlLmNvbSIsIGZ1bmN0aW9u
KCkgey8qIHN1Y2Nlc3MgKi99LCB7d2l0aENyZWRlbnRpYWxzOiB0cnVlLCAuLi59KQotLy8gT1IK
LS8vIEpTT04ubG9hZCgiaHR0cDovL3d3dy5hcHBsZS5jb20iLCBmdW5jdGlvbigpIHsvKiBzdWNj
ZXNzICovfSwgZnVuY3Rpb24oKSB7LyogZmFpbHVyZSAqL30pCi0vLyBPUgotLy8gSlNPTi5sb2Fk
KCJodHRwOi8vd3d3LmFwcGxlLmNvbSIsIGZ1bmN0aW9uKCkgey8qIHN1Y2Nlc3MgKi99LCBmdW5j
dGlvbigpIHsvKiBmYWlsdXJlICovfSwge3dpdGhDcmVkZW50aWFsczogdHJ1ZSwgLi4ufSkKLUpT
T04ubG9hZCA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJhY2ss
IG9wdGlvbnMpCi17Ci0gICAgY29uc29sZS5hc3NlcnQodXJsKTsKLQotICAgIGlmICghKHN1Y2Nl
c3NDYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
aWYgKGZhaWx1cmVDYWxsYmFjayAmJiB0eXBlb2YgZmFpbHVyZUNhbGxiYWNrID09PSAib2JqZWN0
IikKLSAgICAgICAgb3B0aW9ucyA9IGZhaWx1cmVDYWxsYmFjazsKLQotICAgIGlmICghKGZhaWx1
cmVDYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKLSAgICAgICAgZmFpbHVyZUNhbGxiYWNr
ID0gZnVuY3Rpb24oKSB7IH07Ci0KLSAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICJvYmplY3Qi
KQotICAgICAgICBvcHRpb25zID0ge307Ci0KLSAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxIdHRw
UmVxdWVzdDsKLSAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlICE9PSA0KQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIC8vIERvbid0IGNvbnNpZGVyIGEgc3RhdHVzIG9mIDAgdG8gYmUgYSBsb2FkIGVy
cm9yIGZvciBlYXNpZXIgdGVzdGluZyB3aXRoIGxvY2FsIGZpbGVzLgotICAgICAgICB2YXIgbG9h
ZEVycm9yT2NjdXJyZWQgPSB0aGlzLnN0YXR1cyAhPT0gMCAmJiB0aGlzLnN0YXR1cyAhPT0gMjAw
OwotICAgICAgICBpZiAobG9hZEVycm9yT2NjdXJyZWQpIHsKLSAgICAgICAgICAgIGZhaWx1cmVD
YWxsYmFjayh7ZXJyb3JUeXBlOiBKU09OLkxvYWRFcnJvciwgZXJyb3I6IHRoaXMuc3RhdHVzVGV4
dCwgZXJyb3JIVFRQQ29kZTogdGhpcy5zdGF0dXN9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2VUZXh0ID0g
cmVxdWVzdC5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Qcm9w
ZXJ0eSgianNvbnBDYWxsYmFja05hbWUiKSkKLSAgICAgICAgICAgICAgICByZXNwb25zZVRleHQg
PSByZXNwb25zZVRleHQucmVwbGFjZShuZXcgUmVnRXhwKCJeIiArIG9wdGlvbnMuanNvbnBDYWxs
YmFja05hbWUgKyAiXFwoKC4qKVxcKTs/JCIpLCAiJDEiKTsKLSAgICAgICAgICAgIHZhciBkYXRh
ID0gSlNPTi5wYXJzZShyZXNwb25zZVRleHQpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0gICAg
ICAgICAgICB2YXIgZGF0YSA9IHtlcnJvclR5cGU6IEpTT04uUGFyc2VFcnJvciwgZXJyb3I6IGUu
bWVzc2FnZX07Ci0gICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2soZGF0YSk7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZGF0YSk7Ci0g
ICAgfTsKLQotICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsKTsKLSAgICBpZiAob3B0aW9ucy5o
YXNPd25Qcm9wZXJ0eSgid2l0aENyZWRlbnRpYWxzIikpCi0gICAgICAgIHJlcXVlc3Qud2l0aENy
ZWRlbnRpYWxzID0gb3B0aW9ucy53aXRoQ3JlZGVudGlhbHM7Ci0gICAgcmVxdWVzdC5zZW5kKCk7
Ci19OwotCi1mdW5jdGlvbiBsb2FkWE1MKHVybCwgY2FsbGJhY2ssIG9wdGlvbnMpIHsKLSAgICBj
b25zb2xlLmFzc2VydCh1cmwpOwotCi0gICAgaWYgKCEoY2FsbGJhY2sgaW5zdGFuY2VvZiBGdW5j
dGlvbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0dHBS
ZXF1ZXN0OwotICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgLy8gQWxsb3cgYSBzdGF0dXMgb2YgMCBmb3IgZWFzaWVyIHRlc3Rpbmcgd2l0aCBs
b2NhbCBmaWxlcy4KLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cyB8fCB0aGlzLnN0YXR1cyA9PT0g
MjAwKQotICAgICAgICAgICAgY2FsbGJhY2socmVxdWVzdC5yZXNwb25zZVhNTCk7Ci0gICAgfTsK
LQotICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsKTsKLSAgICBpZiAoKHR5cGVvZiBvcHRpb25z
ID09PSAib2JqZWN0IikgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgid2l0aENyZWRlbnRpYWxz
IikpCi0gICAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gb3B0aW9ucy53aXRoQ3JlZGVu
dGlhbHM7Ci0gICAgcmVxdWVzdC5zZW5kKCk7Ci19OwotCi1Ob2RlLnByb3RvdHlwZS5pc0FuY2Vz
dG9yID0gZnVuY3Rpb24obm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICB3aGls
ZSAoY3VycmVudE5vZGUpIHsKLSAgICAgICAgaWYgKHRoaXMgPT09IGN1cnJlbnROb2RlKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUu
cGFyZW50Tm9kZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU5vZGUucHJvdG90
eXBlLmlzRGVzY2VuZGFudCA9IGZ1bmN0aW9uKGRlc2NlbmRhbnQpCi17Ci0gICAgcmV0dXJuICEh
ZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3IodGhpcyk7Ci19Ci0KLU5vZGUucHJv
dG90eXBlLmlzU2VsZk9yQW5jZXN0b3IgPSBmdW5jdGlvbihub2RlKQotewotICAgIHJldHVybiAh
IW5vZGUgJiYgKG5vZGUgPT09IHRoaXMgfHwgdGhpcy5pc0FuY2VzdG9yKG5vZGUpKTsKLX0KLQot
Tm9kZS5wcm90b3R5cGUuaXNTZWxmT3JEZXNjZW5kYW50ID0gZnVuY3Rpb24obm9kZSkKLXsKLSAg
ICByZXR1cm4gISFub2RlICYmIChub2RlID09PSB0aGlzIHx8IHRoaXMuaXNEZXNjZW5kYW50KG5v
ZGUpKTsKLX0KLQotRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBmdW5jdGlvbigp
Ci17Ci0gICAgLy8gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcmVtb3Zh
bCBtZXRob2QuCi0gICAgaWYgKHRoaXMuZmlyc3RDaGlsZCkKLSAgICAgICAgdGhpcy50ZXh0Q29u
dGVudCA9ICIiOwotfTsKLQotRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0
aW9uKHN0cmluZykKLXsKLSAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gdGhpcy5sZW5ndGg7IGkg
PCBlbmQ7ICsraSkgewotICAgICAgICBpZiAodGhpcy5pdGVtKGkpID09PSBzdHJpbmcpCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1BcnJh
eS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih2YWx1ZSkKLXsKLSAgICByZXR1cm4gdGhp
cy5pbmRleE9mKHZhbHVlKSA+PSAwOwotfTsKLQotQXJyYXkucHJvdG90eXBlLmZpbmRGaXJzdCA9
IGZ1bmN0aW9uKHByZWRpY2F0ZSkKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZSh0aGlzW2ldKSkKLSAgICAgICAgICAg
IHJldHVybiB0aGlzW2ldOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotfTsKLQotQXJyYXku
cHJvdG90eXBlLmF2ZXJhZ2UgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHN1bSA9IDA7Ci0gICAg
dmFyIGNvdW50ID0gdGhpcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsg
KytpKQotICAgICAgICBzdW0gKz0gdGhpc1tpXTsKLSAgICByZXR1cm4gc3VtIC8gY291bnQ7Ci19
OwotCi1BcnJheS5wcm90b3R5cGUubWVkaWFuID0gZnVuY3Rpb24oKQotewotICAgIHZhciBhcnJh
eSA9IHRoaXMuc2xpY2UoKTsgLy8gTWFrZSBhIGNvcHkgdG8gYXZvaWQgbW9kaWZ5aW5nIHRoZSBv
YmplY3QuCi0gICAgYXJyYXkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfSk7
Ci0KLSAgICB2YXIgaGFsZiA9IE1hdGguZmxvb3IoYXJyYXkubGVuZ3RoIC8gMik7Ci0KLSAgICBp
ZiAoYXJyYXkubGVuZ3RoICUgMikKLSAgICAgICAgcmV0dXJuIGFycmF5W2hhbGZdOwotICAgIGVs
c2UKLSAgICAgICAgcmV0dXJuIChhcnJheVtoYWxmIC0gMV0gKyBhcnJheVtoYWxmXSkgLyAyOwot
fTsKLQotU3RyaW5nLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKHN1YnN0cmluZykKLXsK
LSAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN1YnN0cmluZykgPj0gMDsKLX07Ci0KLVN0cmluZy5w
cm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKHN1YnN0cmluZykKLXsKLSAgICByZXR1cm4g
dGhpcy5sYXN0SW5kZXhPZihzdWJzdHJpbmcsIDApID09PSAwOwotfTsKLQotZnVuY3Rpb24gc29y
dERpY3Rpb25hcmllc0J5T3JkZXIodW5zb3J0ZWQpCi17Ci0gICAgdmFyIHNvcnRlZCA9IFtdOwot
Ci0gICAgZm9yICh2YXIga2V5IGluIHVuc29ydGVkKQotICAgICAgICBzb3J0ZWQucHVzaCh1bnNv
cnRlZFtrZXldKTsKLQotICAgIHNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAgICAg
cmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNvcnRlZDsK
LX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYktpdEJ1aWxk
Ym90ID0gZnVuY3Rpb24oKQotewotICAgIGNvbnN0IHF1ZXVlSW5mbyA9IHsKLSAgICAgICAgIkFw
cGxlLUJpZ1N1ci1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0u
bWFjT1NCaWdTdXIsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBC
dWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNP
U0NhdGFsaW5hLCBkZWJ1ZzogdHJ1ZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWls
ZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtQ2F0
YWxpbmEtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09T
Q2F0YWxpbmEsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWls
ZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtQ2F0
YWxpbmEtRGVidWctV0sxLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFj
T1NDYXRhbGluYSwgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWls
ZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJBcHBsZS1DYXRhbGluYS1EZWJ1
Zy1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU0NhdGFsaW5h
LCBkZWJ1ZzogdHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RD
YXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sxLVRl
c3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NDYXRhbGluYSwgZGVidWc6
IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5
LldlYktpdDF9LAotICAgICAgICAiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItUGVyZiI6IHtw
bGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TQ2F0YWxpbmEsIGRlYnVnOiBmYWxzZSwg
cGVyZm9ybWFuY2U6IHRydWUsIGhlYWRpbmc6ICJQZXJmb3JtYW5jZSJ9LAotICAgICAgICAiQXBw
bGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0
Zm9ybS5tYWNPU0NhdGFsaW5hLCBkZWJ1ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVn
b3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1DYXRh
bGluYSBKU0MiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU0NhdGFsaW5hLCBo
ZWFkaW5nOiAiSmF2YVNjcmlwdCIsIGNvbWJpbmVkUXVldWVzOiB7Ci0gICAgICAgICAgICAiQXBw
bGUtQ2F0YWxpbmEtTExJTlQtQ0xvb3AtQnVpbGRBbmRUZXN0Ijoge2hlYWRpbmc6ICJMTElOVCBD
TG9vcCAoQnVpbGRBbmRUZXN0KSJ9LAotICAgICAgICAgICAgIkFwcGxlLUNhdGFsaW5hLURlYnVn
LUpTQy1UZXN0cyI6IHtoZWFkaW5nOiAiRGVidWcgSlNDIChUZXN0cykifSwKLSAgICAgICAgICAg
ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUpTQy1UZXN0cyI6IHtoZWFkaW5nOiAiUmVsZWFzZSBK
U0MgKFRlc3RzKSJ9LAotICAgICAgICAgICAgIkFwcGxlLUNhdGFsaW5hLURlYnVnLVRlc3QyNjIt
VGVzdHMiOiB7aGVhZGluZzogIkRlYnVnIFRlc3QyNjIgKFRlc3RzKSJ9LAotICAgICAgICAgICAg
IkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtVGVzdDI2Mi1UZXN0cyI6IHtoZWFkaW5nOiAiUmVsZWFz
ZSBUZXN0MjYyIChUZXN0cykifSwKLSAgICAgICAgfX0sCi0gICAgICAgICJBcHBsZS1Nb2phdmUt
RGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2ZSwg
ZGVidWc6IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRB
cmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLU1vamF2ZS1SZWxlYXNl
LUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NNb2phdmUsIGRlYnVn
OiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hp
dGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtTW9qYXZlLURlYnVnLVdLMS1U
ZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TTW9qYXZlLCBkZWJ1Zzog
dHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5X
ZWJLaXQxfSwKLSAgICAgICAgIkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzItVGVzdHMiOiB7cGxhdGZv
cm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2ZSwgZGVidWc6IHRydWUsIHRlc3Rlcjog
dHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAg
ICAgICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS5tYWNPU01vamF2ZSwgZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRlc3RD
YXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDF9LAotICAgICAgICAiQXBwbGUt
TW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0u
bWFjT1NNb2phdmUsIGRlYnVnOiBmYWxzZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1
aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1SZWxl
YXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTREZXZpY2UsIGRl
YnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFy
Y2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtaU9TLTE0LVNpbXVsYXRv
ci1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11
bGF0b3IsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJv
dC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtaU9TLTE0
LVNpbXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRm
b3JtLmlPUzE0U2ltdWxhdG9yLCBoZWFkaW5nOiJpT1MgUmVsZWFzZSIsIGRlYnVnOiBmYWxzZSwg
dGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQy
fSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctQnVpbGQiOiB7cGxhdGZv
cm06IERhc2hib2FyZC5QbGF0Zm9ybS5pT1MxNFNpbXVsYXRvciwgZGVidWc6IHRydWUsIGJ1aWxk
ZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlG
b3VyQml0fSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3Rz
Ijoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11bGF0b3IsIGRlYnVnOiB0
cnVlLCBoZWFkaW5nOiJpT1MgRGVidWciLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVp
bGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiQXBwbGUtaVBhZE9TLTE0LVNp
bXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3Jt
LmlPUzE0U2ltdWxhdG9yLCBoZWFkaW5nOiJpUGFkT1MgUmVsZWFzZSIsIGRlYnVnOiBmYWxzZSwg
dGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQy
fSwKLSAgICAgICAgIkFwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzIjog
e3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11bGF0b3IsIGhlYWRpbmc6ImlQ
YWRPUyBEZWJ1ZyIsIGRlYnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVp
bGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiQXBwbGUtdHZPUy0xNC1SZWxl
YXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0udHZPUzE0RGV2aWNlLCBk
ZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRB
cmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLXR2T1MtU2ltdWxhdG9y
LTE0LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS50dk9TMTRT
aW11bGF0b3IsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWls
ZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtd2F0
Y2hPUy03LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS53YXRj
aE9TN0RldmljZSwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1
aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdH0sCi0gICAgICAgICJBcHBsZS13
YXRjaE9TLVNpbXVsYXRvci03LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5Q
bGF0Zm9ybS53YXRjaE9TN1NpbXVsYXRvciwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBh
cmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0g
ICAgICAgICJBcHBsZS1XaW4tMTAtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5Q
bGF0Zm9ybS5XaW5kb3dzMTAsIGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1
cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdCB9LAotICAgICAgICAi
QXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9y
bS5XaW5kb3dzMTAsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRB
cmNoaXRlY3R1cmUuVGhpcnR5VHdvQml0fSwKLSAgICAgICAgIkFwcGxlLVdpbi0xMC1EZWJ1Zy1U
ZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLldpbmRvd3MxMCwgZGVidWc6IHRy
dWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2Vi
S2l0MX0sCi0gICAgICAgICJBcHBsZS1XaW4tMTAtUmVsZWFzZS1UZXN0cyI6IHtwbGF0Zm9ybTog
RGFzaGJvYXJkLlBsYXRmb3JtLldpbmRvd3MxMCwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6
IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAgICAgICAgIldpbkNhaXJvLTY0LWJp
dC1XS0wtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLldpbkNh
aXJvLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0
dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJXaW5DYWlyby02NC1iaXQtV0tMLVJlbGVhc2Ut
VGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5XaW5DYWlybywgdGVzdGVyOiB0
cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAgICAg
ICAgIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS5XaW5DYWlybywgZGVidWc6IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVj
dHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAg
IldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5Q
bGF0Zm9ybS5XaW5DYWlybywgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5
OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJXUEUtTGludXgtNjQt
Yml0LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eFdQ
RSwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1
aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJXUEUtTGludXgtNjQtYml0
LVJlbGVhc2UtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eFdQRSwg
ZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENh
dGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCI6
IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4V1BFLCBkZWJ1ZzogdHJ1ZSwgYnVp
bGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0
eUZvdXJCaXR9LAotICAgICAgICAiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0cyI6IHtwbGF0
Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4V1BFLCBkZWJ1ZzogdHJ1ZSwgdGVzdGVyOiB0
cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAg
ICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJk
LlBsYXRmb3JtLkxpbnV4R1RLLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVj
dHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAg
IkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBs
YXRmb3JtLkxpbnV4R1RLLCBkZWJ1ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5
OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJHVEstTGludXgtNjQt
Yml0LURlYnVnLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEss
IGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxk
QXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJHVEstTGludXgtNjQtYml0LURl
YnVnLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEssIGRlYnVn
OiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5
LldlYktpdDJ9LAotICAgICAgICAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYiOiB7cGxh
dGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEdUSywgZGVidWc6IGZhbHNlLCBwZXJmb3Jt
YW5jZTogdHJ1ZSwgaGVhZGluZzogIlBlcmZvcm1hbmNlIn0sCi0gICAgICAgICJHVEsgTFRTIEJ1
aWxkZXJzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEssIGhlYWRpbmc6
ICJMVFMgQnVpbGRlcnMiLCBjb21iaW5lZFF1ZXVlczogewotICAgICAgICAgICAgIkdUSy1MaW51
eC02NC1iaXQtUmVsZWFzZS1EZWJpYW4tU3RhYmxlLUJ1aWxkIjoge2hlYWRpbmc6ICJEZWJpYW4g
U3RhYmxlIChCdWlsZCkifSwKLSAgICAgICAgICAgICJHVEstTGludXgtNjQtYml0LVJlbGVhc2Ut
VWJ1bnR1LUxUUy1CdWlsZCI6IHtoZWFkaW5nOiAiVWJ1bnR1IExUUyAoQnVpbGQpIn0sCi0gICAg
ICAgIH19LAotICAgICAgICAiR1RLIFdheWxhbmQgVGVzdGVycyI6IHtwbGF0Zm9ybTogRGFzaGJv
YXJkLlBsYXRmb3JtLkxpbnV4R1RLLCBoZWFkaW5nOiAiV2F5bGFuZCIsIGNvbWJpbmVkUXVldWVz
OiB7Ci0gICAgICAgICAgICAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdheWxhbmQtVGVzdHMi
OiB7aGVhZGluZzogIldheWxhbmQifSwKLSAgICAgICAgfX0sCi0gICAgICAgICJKU0NPbmx5IEFB
cmNoNjQgVGVzdGVycyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4SlNDT25s
eSwgaGVhZGluZzogIkFBcmNoNjQiLCBjb21iaW5lZFF1ZXVlczogewotICAgICAgICAgICAgIkpT
Q09ubHktTGludXgtQUFyY2g2NC1SZWxlYXNlIjoge2hlYWRpbmc6ICJBQXJjaDY0In0sCi0gICAg
ICAgIH19LAotICAgICAgICAiSlNDT25seSBBUk12NyBUZXN0ZXJzIjoge3BsYXRmb3JtOiBEYXNo
Ym9hcmQuUGxhdGZvcm0uTGludXhKU0NPbmx5LCBoZWFkaW5nOiAiQVJNdjciLCBjb21iaW5lZFF1
ZXVlczogewotICAgICAgICAgICAgIkpTQ09ubHktTGludXgtQVJNdjctVGh1bWIyLVJlbGVhc2Ui
OiB7aGVhZGluZzogIkFSTXY3IFRodW1iMiJ9LAotICAgICAgICAgICAgIkpTQ09ubHktTGludXgt
QVJNdjctVGh1bWIyLVNvZnRGUC1SZWxlYXNlIjoge2hlYWRpbmc6ICJBUk12NyBUaHVtYjIgU29m
dEZQIn0sCi0gICAgICAgIH19LAotICAgICAgICAiSlNDT25seSBNSVBTIFRlc3RlcnMiOiB7cGxh
dGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEpTQ09ubHksIGhlYWRpbmc6ICJNSVBTIiwg
Y29tYmluZWRRdWV1ZXM6IHsKLSAgICAgICAgICAgICJKU0NPbmx5LUxpbnV4LU1JUFMzMmVsLVJl
bGVhc2UiOiB7aGVhZGluZzogIk1JUFMzMmVsIn0sCi0gICAgICAgIH19LAotICAgIH07Ci0KLSAg
ICBCdWlsZGJvdC5jYWxsKHRoaXMsICJodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIiwgcXVldWVJ
bmZvLCB7IlVTRV9CVUlMREJPVF9WRVJTSU9OX0xFU1NfVEhBTl8wOSIgOiB0cnVlfSk7Ci19Owot
Ci1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYktpdEJ1aWxkYm90KTsKLQot
V2ViS2l0QnVpbGRib3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJLaXRCdWls
ZGJvdCwKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90LnByb3RvdHlwZSwKLSAgICBwZXJmb3JtYW5j
ZURhc2hib2FyZFVSTDogICJodHRwczovL3BlcmYud2Via2l0Lm9yZyIsCi0KLSAgICBnZXQgZGVm
YXVsdEJyYW5jaGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbeyByZXBvc2l0b3J5OiBEYXNo
Ym9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLCBuYW1lOiAidHJ1bmsiIH1dOwotICAgIH0KLX07
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0VGVzdEhpc3RvcnkuanMJ
KG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotVGVzdEhpc3Rvcnkg
PSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fYmFzZVVSTCA9ICJodHRwczovL3Jlc3VsdHMud2Vi
a2l0Lm9yZyI7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFRlc3RI
aXN0b3J5KTsKLQotVGVzdEhpc3RvcnkucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBU
ZXN0SGlzdG9yeSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAg
aGlzdG9yeVBhZ2VVUkxGb3JUZXN0OiBmdW5jdGlvbihwYXRoKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX2Jhc2VVUkwgKyAiP3N1aXRlPWxheW91dC10ZXN0cyZ0ZXN0PSIgKyBlbmNvZGVV
UklDb21wb25lbnQocGF0aCk7Ci0gICAgfQotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxh
aW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvdGVzdHMvaW5kZXgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL3Rlc3RzL2luZGV4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXgtZXhwZWN0ZWQudHh0CShub25leGlzdGVu
dCkKQEAgLTEsNDggKzAsMCBAQAotV2ViS2l0IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkIFFVbml0
IFRlc3QgUnVubmVyIG5vZ2xvYmFsc25vdHJ5Y2F0Y2gKLUhpZGUgcGFzc2VkIHRlc3RzCi1UcmFj
OiBfbG9hZGVkICgwLCA4LCA4KVJlcnVuCi1UcmFjOiBwYXJzZSBnaXRCcmFuY2hlcyAoMCwgNywg
NylSZXJ1bgotVHJhYzogX3BhcnNlUmV2aXNpb25Gcm9tVVJMICgwLCAzLCAzKVJlcnVuCi1UcmFj
OiBuZXh0UmV2aXNpb24gKDAsIDIsIDIpUmVydW4KLVRyYWM6IGluZGV4T2ZSZXZpc2lvbiAoMCwg
MSwgMSlSZXJ1bgotVHJhYzogY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNpb24gKDAsIDEs
IDEpUmVydW4KLVRyYWM6IGNvbW1pdHNPbkJyYW5jaExhdGVyVGhhblJldmlzaW9uIG5vIGNvbW1p
dHMgKDAsIDEsIDEpUmVydW4KLVRyYWM6IGNvbW1pdHNPbkJyYW5jaEluUmV2aXNpb25SYW5nZSAo
MCwgMSwgMSlSZXJ1bgotVHJhYzogcmV2aXNpb25VUkwgKDAsIDIsIDIpUmVydW4KLVRyYWM6IHJl
dmlzaW9uVVJMIHdpdGggVHJhYyBJZGVudGlmaWVyICgwLCAyLCAyKVJlcnVuCi1UcmFjOiBfeG1s
VGltZWxpbmVVUkwgKDAsIDIsIDIpUmVydW4KLVRyYWM6IF94bWxUaW1lbGluZVVSTCB3aXRoIFRy
YWMgSWRlbnRpZmllciAoMCwgMiwgMilSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9hcHBlbmRQ
ZW5kaW5nUmV2aXNpb25Db3VudCAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9w
b3BvdmVyTGluZXNGb3JDb21taXRSYW5nZSAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZp
ZXc6IF9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRzICgwLCAxLCAxKVJlcnVuCi1CdWls
ZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMgbm8gcGVuZGlu
ZyBjb21taXRzICgwLCAxLCAxKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3Bv
dmVyRm9yUmV2aXNpb25SYW5nZSAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9w
cmVzZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2Ugbm8gY29tbWl0cyAoMCwgMSwgMSlSZXJ1bgot
QnVpbGRCb3RRdWV1ZVZpZXc6IF9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlv
biAoMCwgMywgMylSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9yZXZpc2lvbkNvbnRlbnRXaXRo
UG9wb3ZlckZvckl0ZXJhdGlvbiBoYXMgcHJldmlvdXNJdGVyYXRpb24gKDAsIDQsIDQpUmVydW4K
LUJ1aWxkQm90UXVldWVWaWV3OiBfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IFN1YnZlcnNpb24g
KDAsIDEsIDEpUmVydW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfZm9ybWF0UmV2aXNpb25Gb3JEaXNw
bGF5IEdpdCAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9wb3BvdmVyQ29udGVu
dEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGxvYWQgZmFpbHVyZSBVSSB0ZXN0ICgw
LCAzLCAzKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNj
cmlwdENvcmVUZXN0UmVncmVzc2lvbnMgaW5jbHVkaW5nIGxvYWRpbmcgKDAsIDAsIDApUmVydW4K
LUJ1aWxkQm90UXVldWVWaWV3OiBfY3JlYXRlTG9hZGluZ0luZGljYXRvciAoMCwgMywgMylSZXJ1
bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3JlVGVz
dFJlZ3Jlc3Npb25zIGFscmVhZHkgbG9hZGVkICgwLCA0LCA0KVJlcnVuCi1CdWlsZEJvdFF1ZXVl
OiBjb21wYXJlSXRlcmF0aW9ucyBieSByZXZpc2lvbnMgKDAsIDMsIDMpUmVydW4KLUJ1aWxkQm90
UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zIGJ5IGxvYWRlZCAob25lIHJldmlzaW9uIG1pc3Npbmcp
ICgwLCAyLCAyKVJlcnVuCi1CdWlsZEJvdFF1ZXVlOiBjb21wYXJlSXRlcmF0aW9ucyBieSBsb2Fk
ZWQgKHNhbWUgcmV2aXNpb24pICgwLCAyLCAyKVJlcnVuCi1CdWlsZEJvdFF1ZXVlOiBjb21wYXJl
SXRlcmF0aW9ucyBieSBpZCAocmV2aXNpb25zIG5vdCBzcGVjaWZpZWQpICgwLCAzLCAzKVJlcnVu
Ci1CdWlsZEJvdFF1ZXVlOiBjb21wYXJlSXRlcmF0aW9ucyBieSBpZCAoc2FtZSByZXZpc2lvbikg
KDAsIDMsIDMpUmVydW4KLUJ1aWxkQm90UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lv
bnMgKDAsIDMsIDMpUmVydW4KLXIzMzAyMmJvYkB3ZWJraXQub3JnY29tbWl0IG1lc3NhZ2UKLWNv
bW1pdHMgc2luY2UgcHJldmlvdXMgcmVzdWx0Ci1yMzMwMjBnZW9yZ2VAd2Via2l0Lm9yZ2NvbW1p
dCBtZXNzYWdlCi1yMzMwMThqb2huQHdlYmtpdC5vcmdjb21taXQgbWVzc2FnZQotbm8gY29tbWl0
cyB0byB0cnVuayBzaW5jZSBwcmV2aW91cyByZXN1bHQKLWNvbW1pdHMgc2luY2UgcHJldmlvdXMg
cmVzdWx0Ci1yMzMwMjJib2JAd2Via2l0Lm9yZ2NvbW1pdCBtZXNzYWdlCi1yMzMwMjBnZW9yZ2VA
d2Via2l0Lm9yZ2NvbW1pdCBtZXNzYWdlCi1pZGJ1aWxkICMxamF2YXNjcmlwdGNvcmUgdGVzdCBm
YWlsdXJlcwotTG9hZGluZ+KApgotaWRidWlsZCAjMWphdmFzY3JpcHRjb3JlIHRlc3QgZmFpbHVy
ZXMKLXVubwotZG9zCi10cmVzCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9pbmRl
eC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4Lmh0
bWwJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4
Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4KLTwh
LS0KLUNvcHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
Ci1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0yLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
LS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci0gICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotCi0gICAg
PHRpdGxlPldlYktpdCBCb3QgV2F0Y2hlcidzIERhc2hib2FyZCBRVW5pdCBUZXN0IFJ1bm5lcjwv
dGl0bGU+Ci0KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4uLy4u
Ly4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmNzcyI+Ci0gICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9TdHlsZXMvTWFpbi5jc3MiPjwvbGluaz4K
LSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL1N0eWxlcy9Qb3BvdmVyLmNz
cyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vU3R5bGVz
L1F1ZXVlVmlldy5jc3MiPjwvbGluaz4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9
Ii4uLy4uL1N0eWxlcy9TdGF0dXNMaW5lVmlldy5jc3MiPjwvbGluaz4KLQotICAgIDxzY3JpcHQg
c3JjPSIuLi9VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CYXNl
T2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vRGFzaGJvYXJkLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSIuLi9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Ii4uL0J1YmJsZVF1ZXVlU2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4v
V2ViS2l0QnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJv
dFF1ZXVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnViYmxlUXVldWUuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdEl0ZXJhdGlvbi5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL1BvcG92ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9Q
b3BvdmVyVHJhY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1F1ZXVlVmll
dy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90UXVldWVWaWV3Lmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RUZXN0ZXJRdWV1ZVZp
ZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdENvbWJpbmVkUXVl
dWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RQZXJmb3Jt
YW5jZVF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90
TGVha3NRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWJibGVR
dWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9TdGF0dXNMaW5lVmll
dy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1NldHRpbmdzLmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vVHJhYy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1
bml0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tUcmFjLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1
ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1aWxk
Ym90VGVzdFJlc3VsdHMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
dGVzdHMuanMiPjwvc2NyaXB0PgotCi08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aDEgaWQ9InF1bml0
LWhlYWRlciI+V2ViS2l0IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkIFFVbml0IFRlc3QgUnVubmVy
PC9oMT4KLSAgICA8aDIgaWQ9InF1bml0LWJhbm5lciI+PC9oMj4KLSAgICA8ZGl2IGlkPSJxdW5p
dC10ZXN0cnVubmVyLXRvb2xiYXIiPjwvZGl2PgotICAgIDxoMiBpZD0icXVuaXQtdXNlckFnZW50
Ij48L2gyPgotICAgIDxvbCBpZD0icXVuaXQtdGVzdHMiPjwvb2w+Ci08L2JvZHk+Ci08L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
dGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90
LmpzCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLU1vY2tCdWls
ZGJvdCA9IGZ1bmN0aW9uKCkge307Ci0KLU1vY2tCdWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0gICAg
Y29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdCwKLQotICAgIGJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlv
bjogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVS
TCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkg
KyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwotICAgIH0sCi0KLSAgICBqYXZhU2NyaXB0Q29y
ZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1lKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuICJyZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uIjsK
LSAgICB9LAotCi0gICAgamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb246IGZ1
bmN0aW9uKGl0ZXJhdGlvbiwgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxk
UGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9zdGVwcy8iICsgbmFtZSArICIvbG9n
cy9zdGRpbyI7Ci0gICAgfSwKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jl
c291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanMJKHJldmlzaW9uIDI2
ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVpbGRi
b3RRdWV1ZS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
TW9ja0J1aWxkYm90UXVldWUgPSBmdW5jdGlvbigpCi17Ci0gICAgaW5mbyA9IHsKLSAgICAgICAg
YnJhbmNoZXM6ICIiLAotICAgICAgICBwbGF0Zm9ybTogIiIsCi0gICAgICAgIGRlYnVnOiAiIiwK
LSAgICAgICAgYnVpbGRlcjogIiIsCi0gICAgICAgIHRlc3RlcjogIiIsCi0gICAgICAgIHBlcmZv
cm1hbmNlOiAiIiwKLSAgICAgICAgc3RhdGljQW5hbHl6ZXI6ICIiLAotICAgICAgICBsZWFrczog
IiIsCi0gICAgICAgIGFyY2hpdGVjdHVyZTogIiIsCi0gICAgICAgIHRlc3RDYXRlZ29yeTogIiIs
Ci0gICAgICAgIGhlYWRpbmc6ICIiLAotICAgICAgICBjcmFzaGVzT25seTogIiIKLSAgICB9Owot
ICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCBuZXcgTW9ja0J1aWxkYm90KCksICJpZCIsIGlu
Zm8pOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNb2NrQnVpbGRi
b3RRdWV1ZSk7Ci0KLU1vY2tCdWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1
Y3RvcjogTW9ja0J1aWxkYm90UXVldWUsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1ZXVlLnBy
b3RvdHlwZQotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tCdWlsZGJvdFF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90
UXVldWVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci1Nb2NrQnVpbGRib3RRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgdGhpcy5l
bGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoInF1ZXVlLXZpZXciKTsKLSAgICB0aGlzLmVsZW1lbnQuX19xdWV1ZVZp
ZXcgPSB0aGlzOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICBCYXNl
T2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKE1vY2tCdWlsZGJvdFF1ZXVlVmlldyk7Ci0KLU1vY2tCdWlsZGJvdFF1ZXVlVmlldy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFF1ZXVlVmlldywKLSAgICBf
X3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIF9sYXRlc3RQcm9k
dWN0aXZlSXRlcmF0aW9uOiBmdW5jdGlvbihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICByZXZpc2lvbjogewotICAgICAgICAgICAgICAgICJvcGVuU291cmNlIjog
IjMzMDIwIgotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLX07CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tCdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotTW9ja0J1aWxkYm90VGVz
dFJlc3VsdHMgPSBmdW5jdGlvbigpIHt9OwotCi1Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90
b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLAotCi0g
ICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRhdGEpCi0gICAgewot
ICAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRhdGEuc3RyZXNzVGVzdEZhaWx1cmVzOwotICAg
IH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01vY2tU
cmFjLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNl
cy9Nb2NrVHJhYy5qcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
dGVzdHMvcmVzb3VyY2VzL01vY2tUcmFjLmpzCShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotTW9ja1RyYWMgPSBmdW5jdGlvbihwcm9qZWN0SWRlbnRpZmllcikK
LXsKLSAgICBpZiAocHJvamVjdElkZW50aWZpZXIpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMgPSB7
IH07Ci0gICAgICAgIG9wdGlvbnNbVHJhYy5Qcm9qZWN0SWRlbnRpZmllcl0gPSBwcm9qZWN0SWRl
bnRpZmllcjsKLSAgICAgICAgVHJhYy5jYWxsKHRoaXMsICJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy8iLCBvcHRpb25zKTsKLSAgICB9IGVsc2UgewotICAgICAgICBUcmFjLmNhbGwodGhpcywgImh0
dHBzOi8vdHJhYy53ZWJraXQub3JnLyIpOwotICAgIH0KLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoTW9ja1RyYWMpOwotCi1Nb2NrVHJhYy5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IE1vY2tUcmFjLAotICAgIF9fcHJvdG9fXzogVHJhYy5wcm90b3R5cGUs
Ci0KLSAgICBnZXQgb2xkZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcigpCi0gICAgewotICAgICAg
ICByZXR1cm4gIjMzMDE4IjsKLSAgICB9LAotCi0gICAgZ2V0IGxhdGVzdFJlY29yZGVkUmV2aXNp
b25OdW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICIzMzAyMiI7Ci0gICAgfSwKLQotICAg
IGxvYWRNb3JlSGlzdG9yaWNhbERhdGE6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLX07Ci0K
LU1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRTID0gWwotICAgIHsKLSAgICAgICAgInJldmlz
aW9uTnVtYmVyIjogIjMzMDE4IiwKLSAgICAgICAgImxpbmsiOiAiaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzMzMDE4IiwKLSAgICAgICAgInRpdGxlIjogeyBpbm5lckhUTUw6ICJj
b21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAgImF1dGhvciI6ICJqb2huQHdlYmtpdC5vcmciLAot
ICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTExLTE1VDE3OjA1OjQ0LjAwMFoiKSwKLSAg
ICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNvbnRhaW5zQnJh
bmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInRydW5rIl0KLSAgICB9
LAotICAgIHsKLSAgICAgICAgInJldmlzaW9uTnVtYmVyIjogIjMzMDE5IiwKLSAgICAgICAgImxp
bmsiOiAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDE5IiwKLSAgICAgICAg
InRpdGxlIjogeyBpbm5lckhUTUw6ICJjb21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAgImF1dGhv
ciI6ICJwYXVsQHdlYmtpdC5vcmciLAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTEx
LTE2VDAxOjE4OjIzLjAwMFoiKSwKLSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9u
IiwKLSAgICAgICAgImNvbnRhaW5zQnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJh
bmNoZXMiOiBbInNvbWVPdGhlckJyYW5jaCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICJyZXZp
c2lvbk51bWJlciI6ICIzMzAyMCIsCi0gICAgICAgICJsaW5rIjogImh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8zMzAyMCIsCi0gICAgICAgICJ0aXRsZSI6IHsgaW5uZXJIVE1MOiAi
Y29tbWl0IG1lc3NhZ2UiIH0sCi0gICAgICAgICJhdXRob3IiOiAiZ2VvcmdlQHdlYmtpdC5vcmci
LAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTExLTE2VDAxOjE5OjI3LjAwMFoiKSwK
LSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNvbnRhaW5z
QnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInRydW5rIl0KLSAg
ICB9LAotICAgIHsKLSAgICAgICAgInJldmlzaW9uTnVtYmVyIjogIjMzMDIxIiwKLSAgICAgICAg
ImxpbmsiOiAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDIxIiwKLSAgICAg
ICAgInRpdGxlIjogeyBpbm5lckhUTUw6ICJjb21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAgImF1
dGhvciI6ICJyaW5nb0B3ZWJraXQub3JnIiwKLSAgICAgICAgImRhdGUiOiBuZXcgRGF0ZSgiMjAx
NS0xMS0xNlQwMToyMDo1OC4wMDBaIiksCi0gICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXNjcmlw
dGlvbiIsCi0gICAgICAgICJjb250YWluc0JyYW5jaExvY2F0aW9uIjogdHJ1ZSwKLSAgICAgICAg
ImJyYW5jaGVzIjogWyJzb21lT3RoZXJCcmFuY2giXQotICAgIH0sCi0gICAgewotICAgICAgICAi
cmV2aXNpb25OdW1iZXIiOiAiMzMwMjIiLAotICAgICAgICAibGluayI6ICJodHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjIiLAotICAgICAgICAidGl0bGUiOiB7IGlubmVySFRN
TDogImNvbW1pdCBtZXNzYWdlIiB9LAotICAgICAgICAiYXV0aG9yIjogImJvYkB3ZWJraXQub3Jn
IiwKLSAgICAgICAgImRhdGUiOiBuZXcgRGF0ZSgiMjAxNS0xMS0xNlQwMToyMjowMS4wMDBaIiks
Ci0gICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXNjcmlwdGlvbiIsCi0gICAgICAgICJjb250YWlu
c0JyYW5jaExvY2F0aW9uIjogdHJ1ZSwKLSAgICAgICAgImJyYW5jaGVzIjogWyJ0cnVuayJdCi0g
ICAgfQotXTsKLQotTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJl
ciA9IHsKLSAgICAzMzAxODogMCwKLSAgICAzMzAxOTogMSwKLSAgICAzMzAyMDogMiwKLSAgICAz
MzAyMTogMywKLSAgICAzMzAyMjogNCwKLSAgICAzMzAyMzogNSwKLSAgICAzMzAyNDogNiwKLSAg
ICAzMzAyNTogNwotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNl
cy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMtcnNzLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1maXh0dXJlLWdpdC10cmFjLXJzcy54bWwJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNl
cy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMtcnNzLnhtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDc1ICsw
LDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotPCEtLQotQ29weXJpZ2h0IChDKSAyMDE2IEFw
cGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1h
cmUgbWV0OgotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLVBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLVNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi1U
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPHJzcyB4bWxuczpkYz0iaHR0
cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHZlcnNpb249IjIuMCI+Ci0gIDxjaGFubmVs
PgotICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPgotICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJr
aXQub3JnL3RpbWVsaW5lPC9saW5rPgotICAgIDxkZXNjcmlwdGlvbj5UcmFjIFRpbWVsaW5lPC9k
ZXNjcmlwdGlvbj4KLSAgICA8bGFuZ3VhZ2U+ZW4tVVM8L2xhbmd1YWdlPgotICAgIDxnZW5lcmF0
b3I+VHJhYyAwLjEyLjM8L2dlbmVyYXRvcj4KLSAgICA8aW1hZ2U+Ci0gICAgICA8dGl0bGU+V2Vi
S2l0PC90aXRsZT4KLSAgICAgIDx1cmw+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hyb21lL3Np
dGUvZmF2aWNvbi5wbmc8L3VybD4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L3RpbWVsaW5lPC9saW5rPgotICAgIDwvaW1hZ2U+Ci0gICAgPGl0ZW0+Ci0gICAgICA8dGl0bGU+
Q2hhbmdlc2V0IFszMzAyNV06IEl0YSBwcm9yc3VzIGlucXVhbSBBZCBjb3JwdXMgZGljZXJlcyBw
ZXJ0aW5lcmUsIHNlZCBlYSwgcXVhZSBkaXhpPC90aXRsZT4KLSAgICAgIDxicmFuY2hlcz5tYXN0
ZXIsIHNvbWVPdGhlckJyYW5jaDwvYnJhbmNoZXM+Ci0KLSAgICAgICAgPGF1dGhvcj5nZW9yZ2VA
d2Via2l0Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIy
OjQ4OjE1IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8zMzAyNTwvbGluaz4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI1LzE0NTM4NDg0OTUzMzI1Njk8
L2d1aWQ+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAg
ICAgPGNhdGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgIDxpdGVt
PgotICAgICAgPHRpdGxlPkNoYW5nZXNldCBbMzMwMjRdOiBBbiBldW0gZGlzY2VyZSBlYSBtYXZp
cywgcXVhZSBjdW0gcGxhbmUgcGVyZGlkaWNlcml0aSBuaWhpbCBzY2lhdDwvdGl0bGU+Ci0gICAg
ICA8YnJhbmNoZXM+bWFzdGVyPC9icmFuY2hlcz4KLQotICAgICAgICA8YXV0aG9yPnBhdWxAd2Vi
a2l0Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIyOjIy
OjI1IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8zMzAyNDwvbGluaz4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI0LzE0NTM4NDY5NDUyNDQwMDc8L2d1
aWQ+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAgICAg
PGNhdGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgIDxpdGVtPgot
ICAgICAgPHRpdGxlPkNoYW5nZXNldCBbMzMwMjNdOiBMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LjwvdGl0bGU+Ci0KLSAgICAgICAgPGF1dGhv
cj5qb2huQHdlYmtpdC5vcmc8L2F1dGhvcj4KLQotICAgICAgPHB1YkRhdGU+VHVlLCAyNiBKYW4g
MjAxNiAyMjoyMjoxNCBHTVQ8L3B1YkRhdGU+Ci0gICAgICA8bGluaz5odHRwczovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjM8L2xpbms+Ci0gICAgICA8Z3VpZCBpc1Blcm1hTGluaz0i
ZmFsc2UiPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMy8xNDUzODQ2OTM0
MDM0NTUwPC9ndWlkPgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlv
bj4KLSAgICAgIDxjYXRlZ29yeT5jaGFuZ2VzZXQ8L2NhdGVnb3J5PgotICAgIDwvaXRlbT4KLSAg
IDwvY2hhbm5lbD4KLTwvcnNzPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVz
b3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwJKHJl
dmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy90
ZXN0LWZpeHR1cmUtdHJhYy1yc3MueG1sCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAot
PD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6
Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08cnNzIHhtbG5zOmRjPSJodHRwOi8vcHVy
bC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmVyc2lvbj0iMi4wIj4KLSAgPGNoYW5uZWw+Ci0gICAg
PHRpdGxlPldlYktpdDwvdGl0bGU+Ci0gICAgPGxpbms+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
dGltZWxpbmU8L2xpbms+Ci0gICAgPGRlc2NyaXB0aW9uPlRyYWMgVGltZWxpbmU8L2Rlc2NyaXB0
aW9uPgotICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+Ci0gICAgPGdlbmVyYXRvcj5UcmFj
IDAuMTIuMzwvZ2VuZXJhdG9yPgotICAgIDxpbWFnZT4KLSAgICAgIDx0aXRsZT5XZWJLaXQ8L3Rp
dGxlPgotICAgICAgPHVybD5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaHJvbWUvc2l0ZS9mYXZp
Y29uLnBuZzwvdXJsPgotICAgICAgPGxpbms+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvdGltZWxp
bmU8L2xpbms+Ci0gICAgPC9pbWFnZT4KLSAgICA8aXRlbT4KLSAgICAgIDx0aXRsZT5DaGFuZ2Vz
ZXQgWzMzMDI1XTogSXRhIHByb3JzdXMgaW5xdWFtIEFkIGNvcnB1cyBkaWNlcmVzIHBlcnRpbmVy
ZSwgc2VkIGVhLCBxdWFlIGRpeGk8L3RpdGxlPgotICAgICAgCi0gICAgICAgIDxhdXRob3I+Z2Vv
cmdlQHdlYmtpdC5vcmc8L2F1dGhvcj4KLQotICAgICAgPHB1YkRhdGU+VHVlLCAyNiBKYW4gMjAx
NiAyMjo0ODoxNSBHTVQ8L3B1YkRhdGU+Ci0gICAgICA8bGluaz5odHRwczovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvMzMwMjU8L2xpbms+Ci0gICAgICA8Z3VpZCBpc1Blcm1hTGluaz0iZmFs
c2UiPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyNS8xNDUzODQ4NDk1MzMy
NTY5PC9ndWlkPgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlvbj4K
LSAgICAgIDxjYXRlZ29yeT5jaGFuZ2VzZXQ8L2NhdGVnb3J5PgotICAgIDwvaXRlbT48aXRlbT4K
LSAgICAgIDx0aXRsZT5DaGFuZ2VzZXQgWzMzMDI0XTogQW4gZXVtIGRpc2NlcmUgZWEgbWF2aXMs
IHF1YWUgY3VtIHBsYW5lIHBlcmRpZGljZXJpdGkgbmloaWwgc2NpYXQ8L3RpdGxlPgotICAgICAg
Ci0gICAgICAgIDxhdXRob3I+cGF1bEB3ZWJraXQub3JnPC9hdXRob3I+Ci0KLSAgICAgIDxwdWJE
YXRlPlR1ZSwgMjYgSmFuIDIwMTYgMjI6MjI6MjUgR01UPC9wdWJEYXRlPgotICAgICAgPGxpbms+
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI0PC9saW5rPgotICAgICAgPGd1
aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQv
MzMwMjQvMTQ1Mzg0Njk0NTI0NDAwNzwvZ3VpZD4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmlw
dGlvbjwvZGVzY3JpcHRpb24+Ci0gICAgICA8Y2F0ZWdvcnk+Y2hhbmdlc2V0PC9jYXRlZ29yeT4K
LSAgICA8L2l0ZW0+PGl0ZW0+Ci0gICAgICA8dGl0bGU+Q2hhbmdlc2V0IFszMzAyM106IExvcmVt
IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC90aXRs
ZT4KLSAgICAgIAotICAgICAgICA8YXV0aG9yPmpvaG5Ad2Via2l0Lm9yZzwvYXV0aG9yPgotCi0g
ICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIyOjIyOjE0IEdNVDwvcHViRGF0ZT4KLSAg
ICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMzwvbGluaz4K
LSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzMzMDIzLzE0NTM4NDY5MzQwMzQ1NTA8L2d1aWQ+Ci0gICAgICA8ZGVzY3JpcHRp
b24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAgICAgPGNhdGVnb3J5PmNoYW5nZXNldDwv
Y2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgPC9jaGFubmVsPgotPC9yc3M+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3Vy
Y2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVz
dWx0cy5qc29uCShub25leGlzdGVudCkKQEAgLTEgKzAsMCBAQAoteyJzdHJlc3NUZXN0RmFpbHVy
ZXMiOlsibG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiLCAiY29uc2VjdGV0dXIgYWRpcGlzY2lu
ZyBlbGl0IiwgInNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhIl0sICJhbGxBcGlUZXN0c1Bhc3NlZCI6IHRydWV9CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pZiAod2lu
ZG93LnRlc3RSdW5uZXIpIHsKLSAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7Ci0g
ICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1RVW5pdC5kb25lID0g
ZnVuY3Rpb24oZGV0YWlscykgewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAgICAg
ICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdW5pdC10ZXN0cmVzdWx0
Iik7Ci0gICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTsKLSAg
ICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdW5pdC11c2VyQWdlbnQi
KTsKLSAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwotICAg
ICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQotfTsKLQotbW9kdWxl
KCJUcmFjIiwgewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50cmFjID0g
bmV3IE1vY2tUcmFjKCk7Ci0gICAgICAgIHRoaXMudHJhY1dpdGhJZGVudGlmaWVyID0gbmV3IE1v
Y2tUcmFjKCJ3ZWJraXQiKTsKLSAgICB9Ci19KTsKLQotdGVzdCgiX2xvYWRlZCIsIGZ1bmN0aW9u
KCkKLXsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRzID0gTW9ja1RyYWMuRVhBTVBMRV9U
UkFDX0NPTU1JVFM7Ci0gICAgdmFyIGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwotICAg
IGNsaWVudC5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwi
LCBmYWxzZSk7Ci0gICAgY2xpZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgdGhp
cy50cmFjLl9sb2FkZWQoY2xpZW50LnJlc3BvbnNlWE1MKTsKLSAgICB9LmJpbmQodGhpcyk7Ci0g
ICAgY2xpZW50LnNlbmQoKTsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5yZWNvcmRlZENv
bW1pdHM7Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0cy5sZW5ndGgsIDgsICJzaG91bGQgaGF2ZSA4
IGNvbW1pdHMiKTsKLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvbW1pdHMubGVuZ3RoOyBpKysp
IHsKLSAgICAgICAgdmFyIGZpcnN0UmV2aXNpb24gPSBjb21taXRzW2kgLSAxXS5yZXZpc2lvbk51
bWJlcjsKLSAgICAgICAgdmFyIHNlY29uZFJldmlzaW9uID0gY29tbWl0c1tpXS5yZXZpc2lvbk51
bWJlcjsKLSAgICAgICAgc3RyaWN0RXF1YWwoc2Vjb25kUmV2aXNpb24gLSBmaXJzdFJldmlzaW9u
LCAxLCAiY29tbWl0cyBzaG91bGQgYmUgaW4gb3JkZXIgIiArIGZpcnN0UmV2aXNpb24gKyAiLCAi
ICsgc2Vjb25kUmV2aXNpb24pOwotICAgIH0KLX0pOwotCi10ZXN0KCJwYXJzZSBnaXRCcmFuY2hl
cyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
Ci0gICAgY2xpZW50Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvdGVzdC1maXh0dXJlLWdpdC10cmFj
LXJzcy54bWwiLCBmYWxzZSk7Ci0gICAgY2xpZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAg
ICAgICAgdGhpcy50cmFjLl9sb2FkZWQoY2xpZW50LnJlc3BvbnNlWE1MKTsKLSAgICB9LmJpbmQo
dGhpcyk7Ci0gICAgY2xpZW50LnNlbmQoKTsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5y
ZWNvcmRlZENvbW1pdHM7Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0cy5sZW5ndGgsIDMsICJzaG91
bGQgaGF2ZSAzIGNvbW1pdHMiKTsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzWzBdLmJyYW5jaGVz
Lmxlbmd0aCwgMCwgInNob3VsZCBoYXZlIG5vIGJyYW5jaGVzIik7Ci0gICAgc3RyaWN0RXF1YWwo
Y29tbWl0c1sxXS5icmFuY2hlcy5sZW5ndGgsIDEsICJzaG91bGQgaGF2ZSBvbmUgYnJhbmNoIik7
Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0c1sxXS5icmFuY2hlcy5pbmNsdWRlcygibWFzdGVyIiks
IHRydWUsICJzaG91bGQgY29udGFpbiBicmFuY2ggbWFzdGVyIik7Ci0gICAgc3RyaWN0RXF1YWwo
Y29tbWl0c1syXS5icmFuY2hlcy5sZW5ndGgsIDIsICJzaG91bGQgaGF2ZSB0d28gYnJhbmNoZXMi
KTsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzWzJdLmJyYW5jaGVzLmluY2x1ZGVzKCJtYXN0ZXIi
KSwgdHJ1ZSwgInNob3VsZCBjb250YWluIGJyYW5jaCBtYXN0ZXIiKTsKLSAgICBzdHJpY3RFcXVh
bChjb21taXRzWzJdLmJyYW5jaGVzLmluY2x1ZGVzKCJzb21lT3RoZXJCcmFuY2giKSwgdHJ1ZSwg
InNob3VsZCBjb250YWluIGJyYW5jaCBzb21lT3RoZXJCcmFuY2giKTsKLX0pOwotCi10ZXN0KCJf
cGFyc2VSZXZpc2lvbkZyb21VUkwiLCBmdW5jdGlvbigpCi17Ci0gICAgc3RyaWN0RXF1YWwodGhp
cy50cmFjLl9wYXJzZVJldmlzaW9uRnJvbVVSTCgiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzE5MDQ5NyIpLCAiMTkwNDk3IiwgIlN1YnZlcnNpb24iKTsKLSAgICBzdHJpY3RFcXVh
bCh0aGlzLnRyYWMuX3BhcnNlUmV2aXNpb25Gcm9tVVJMKCJodHRwOi8vdHJhYy5mb29iYXIuY29t
L3JlcG9zaXRvcnkvY2hhbmdlc2V0Lzc1Mzg4L3Byb2plY3QiKSwgIjc1Mzg4IiwgIlN1YnZlcnNp
b24gd2l0aCBzdWZmaXgiKTsKLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMuX3BhcnNlUmV2aXNp
b25Gcm9tVVJMKCJodHRwczovL2dpdC5mb29iYXIuY29tL3RyYWMvV2hhdGV2ZXIuZ2l0L2NoYW5n
ZXNldC8wZTQ5OGRiNWQ4ZTViNWEzNDI2MzEiKSwgIjBlNDk4ZGI1ZDhlNWI1YTM0MjYzMSIsICJH
aXQiKTsKLX0pOwotCi10ZXN0KCJuZXh0UmV2aXNpb24iLCBmdW5jdGlvbigpCi17Ci0gICAgdGhp
cy50cmFjLnJlY29yZGVkQ29tbWl0cyA9IE1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRTOwot
ICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyID0gTW9j
a1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlcjsKLSAgICBzdHJpY3RF
cXVhbCh0aGlzLnRyYWMubmV4dFJldmlzaW9uKCJ0cnVuayIsICIzMzAyMCIpLCAiMzMwMjIiLCAi
bmV4dFJldmlzaW9uIHNhbWUgYnJhbmNoIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjLm5l
eHRSZXZpc2lvbigidHJ1bmsiLCAiMzMwMTkiKSwgIjMzMDIwIiwgIm5leHRSZXZpc2lvbiBkaWZm
ZXJlbnQgYnJhbmNoIik7Ci19KTsKLQotdGVzdCgiaW5kZXhPZlJldmlzaW9uIiwgZnVuY3Rpb24o
KQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RS
QUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lv
bk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7
Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjLmluZGV4T2ZSZXZpc2lvbigiMzMwMjAiKSwgMiwg
ImluZGV4T2ZSZXZpc2lvbiIpOwotfSk7Ci0KLXRlc3QoImNvbW1pdHNPbkJyYW5jaExhdGVyVGhh
blJldmlzaW9uIiwgZnVuY3Rpb24oKQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMg
PSBNb2NrVHJhYy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRD
b21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5k
aWNlc0J5UmV2aXNpb25OdW1iZXI7Ci0gICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRyYWMuY29tbWl0
c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNpb24oInRydW5rIiwgIjMzMDIwIik7Ci0gICAgZXF1YWwo
Y29tbWl0cy5sZW5ndGgsIDEsICJncmVhdGVyIHRoYW4gMzMwMjAiKTsKLX0pOwotCi10ZXN0KCJj
b21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbiBubyBjb21taXRzIiwgZnVuY3Rpb24oKQot
ewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RSQUNf
Q09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51
bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7Ci0g
ICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRyYWMuY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNp
b24oInNvbWVPdGhlckJyYW5jaCIsICIzMzAyMSIpOwotICAgIGVxdWFsKGNvbW1pdHMubGVuZ3Ro
LCAwLCAiZ3JlYXRlciB0aGFuIDMzMDIxIik7Ci19KTsKLQotdGVzdCgiY29tbWl0c09uQnJhbmNo
SW5SZXZpc2lvblJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENv
bW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVj
b3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29t
bWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7Ci0gICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRyYWMu
Y29tbWl0c09uQnJhbmNoSW5SZXZpc2lvblJhbmdlKCJ0cnVuayIsICIzMzAyMCIsICIzMzAyMiIp
OwotICAgIGVxdWFsKGNvbW1pdHMubGVuZ3RoLCAyLCAiaW4gcmFuZ2UgMzMwMjAsIDMzMDIyIik7
Ci19KTsKLQotdGVzdCgicmV2aXNpb25VUkwiLCBmdW5jdGlvbigpCi17Ci0gICAgc3RyaWN0RXF1
YWwodGhpcy50cmFjLnJldmlzaW9uVVJMKCIzMzAyMCIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzMzMDIwIiwgImNoYW5nZXNldCBVUkwgbWF0Y2hlcyBmb3IgMzMwMjAiKTsK
LSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMucmV2aXNpb25VUkwoIjBlNDk4ZGI1ZDhlNWI1YTM0
MjYzMSIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzBlNDk4ZGI1ZDhlNWI1
YTM0MjYzMSIsICJjaGFuZ2VzZXQgVVJMIG1hdGNoZXMgZm9yIDBlNDk4ZGI1ZDhlNWI1YTM0MjYz
MSIpOwotfSk7Ci0KLXRlc3QoInJldmlzaW9uVVJMIHdpdGggVHJhYyBJZGVudGlmaWVyIiwgZnVu
Y3Rpb24oKQotewotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhY1dpdGhJZGVudGlmaWVyLnJldmlz
aW9uVVJMKCIzMzAyMCIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDIw
L3dlYmtpdCIsICJjaGFuZ2VzZXQgVVJMIG1hdGNoZXMgZm9yIDMzMDIwIik7Ci0gICAgc3RyaWN0
RXF1YWwodGhpcy50cmFjV2l0aElkZW50aWZpZXIucmV2aXNpb25VUkwoIjBlNDk4ZGI1ZDhlNWI1
YTM0MjYzMSIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzBlNDk4ZGI1ZDhl
NWI1YTM0MjYzMS93ZWJraXQiLCAiY2hhbmdlc2V0IFVSTCBtYXRjaGVzIGZvciAwZTQ5OGRiNWQ4
ZTViNWEzNDI2MzEiKTsKLX0pOwotCi10ZXN0KCJfeG1sVGltZWxpbmVVUkwiLCBmdW5jdGlvbigp
Ci17Ci0gICAgdmFyIGJlZm9yZSA9IG5ldyBEYXRlKCIxLzEvMjAxNyIpOwotICAgIHZhciBhZnRl
ciA9IG5ldyBEYXRlKCIxLzIvMjAxNyIpOwotCi0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjLl94
bWxUaW1lbGluZVVSTChiZWZvcmUsIGJlZm9yZSksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy90
aW1lbGluZT9jaGFuZ2VzZXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9tPTIwMTctMDEtMDEmZGF5
c2JhY2s9MCIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhYy5feG1sVGltZWxpbmVVUkwoYmVm
b3JlLCBhZnRlciksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy90aW1lbGluZT9jaGFuZ2VzZXQ9
b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9tPTIwMTctMDEtMDImZGF5c2JhY2s9MSIpOwotfSk7Ci0K
LXRlc3QoIl94bWxUaW1lbGluZVVSTCB3aXRoIFRyYWMgSWRlbnRpZmllciIsIGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgYmVmb3JlID0gbmV3IERhdGUoIjEvMS8yMDE3Iik7Ci0gICAgdmFyIGFmdGVy
ID0gbmV3IERhdGUoIjEvMi8yMDE3Iik7Ci0KLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWNXaXRo
SWRlbnRpZmllci5feG1sVGltZWxpbmVVUkwoYmVmb3JlLCBiZWZvcmUpLCAiaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvdGltZWxpbmU/cmVwby13ZWJraXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9t
PTIwMTctMDEtMDEmZGF5c2JhY2s9MCIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhY1dpdGhJ
ZGVudGlmaWVyLl94bWxUaW1lbGluZVVSTChiZWZvcmUsIGFmdGVyKSwgImh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL3RpbWVsaW5lP3JlcG8td2Via2l0PW9uJmZvcm1hdD1yc3MmbWF4PTAmZnJvbT0y
MDE3LTAxLTAyJmRheXNiYWNrPTEiKTsKLX0pOwotCi1tb2R1bGUoIkJ1aWxkQm90UXVldWVWaWV3
IiwgewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50cmFjID0gbmV3IE1v
Y2tUcmFjKCk7Ci0gICAgICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5F
WEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICAgICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0SW5k
aWNlc0J5UmV2aXNpb25OdW1iZXIgPSBNb2NrVHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJl
dmlzaW9uTnVtYmVyOwotICAgICAgICB0aGlzLnF1ZXVlID0gbmV3IE1vY2tCdWlsZGJvdFF1ZXVl
KCk7Ci0gICAgICAgIHRoaXMudHJ1bmtCcmFuY2ggPSB7Ci0gICAgICAgICAgICBuYW1lOiAidHJ1
bmsiLAotICAgICAgICAgICAgcmVwb3NpdG9yeTogewotICAgICAgICAgICAgICAgIG5hbWU6ICJv
cGVuU291cmNlIiwKLSAgICAgICAgICAgICAgICB0cmFjOiB0aGlzLnRyYWMsCi0gICAgICAgICAg
ICAgICAgaXNTVk46IHRydWUsCi0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAgIHRo
aXMucXVldWUuYnJhbmNoZXMgPSBbdGhpcy50cnVua0JyYW5jaF07Ci0gICAgICAgIHRoaXMudmll
dyA9IG5ldyBNb2NrQnVpbGRib3RRdWV1ZVZpZXcoW3RoaXMucXVldWVdKTsKLSAgICAgICAgdGhp
cy52aWV3Ll9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uID0gZnVuY3Rpb24ocXVldWUpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB7Ci0gICAgICAgICAgICAgICAgcmV2
aXNpb246IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMjEiIH0sCi0gICAgICAgICAgICB9OwotICAgICAg
ICAgICAgcmV0dXJuIGl0ZXJhdGlvbjsKLSAgICAgICAgfQotICAgIH0KLX0pOwotCi12YXIgc2V0
dGluZ3MgPSBuZXcgU2V0dGluZ3M7Ci10ZXN0KCJfYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291bnQi
LCBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy52aWV3Ll9hcHBlbmRQZW5kaW5nUmV2aXNpb25Db3Vu
dCh0aGlzLnF1ZXVlLCB0aGlzLnZpZXcuX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24pOwotICAg
IHZhciByZXZpc2lvbnNCZWhpbmQgPSB0aGlzLnZpZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJtZXNzYWdlIilbMF0uaW5uZXJIVE1MLm1hdGNoKC8uKihcZCspIHJldmlzaW9uKHxz
KSBiZWhpbmQvKVsxXTsKLSAgICBzdHJpY3RFcXVhbChyZXZpc2lvbnNCZWhpbmQsICIxIiwgImFz
c2VydCByZXZpc2lvbnMgYmVoaW5kIik7Ci19KTsKLQotdGVzdCgiX3BvcG92ZXJMaW5lc0ZvckNv
bW1pdFJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBsaW5lcyA9IHRoaXMudmlldy5fcG9w
b3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2UodGhpcy50cmFjLCB0aGlzLnRydW5rQnJhbmNoLCAiMzMw
MTgiLCAiMzMwMjAiKTsKLSAgICBzdHJpY3RFcXVhbChsaW5lcy5sZW5ndGgsIDIsICJoYXMgMiBs
aW5lcyIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRzIiwg
ZnVuY3Rpb24oKQotewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIoKTsKLSAgICB0
aGlzLnZpZXcuX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHModGhpcy52aWV3Ll9sYXRl
c3RQcm9kdWN0aXZlSXRlcmF0aW9uLCBlbGVtZW50LCBwb3BvdmVyLCB0aGlzLnF1ZXVlKTsKLSAg
ICB2YXIgbm9kZUxpc3QgPSBwb3BvdmVyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
InBlbmRpbmctY29tbWl0Iik7Ci0gICAgc3RyaWN0RXF1YWwobm9kZUxpc3QubGVuZ3RoLCAxLCAi
aGFzIDEgcGVuZGluZyBjb21taXQiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JQ
ZW5kaW5nQ29tbWl0cyBubyBwZW5kaW5nIGNvbW1pdHMiLCBmdW5jdGlvbigpCi17Ci0gICAgdGhp
cy5zb21lT3RoZXJCcmFuY2ggPSB7Ci0gICAgICAgIG5hbWU6ICJzb21lT3RoZXJCcmFuY2giLAot
ICAgICAgICByZXBvc2l0b3J5OiB7Ci0gICAgICAgICAgICBuYW1lOiAib3BlblNvdXJjZSIsCi0g
ICAgICAgICAgICB0cmFjOiB0aGlzLnRyYWMsCi0gICAgICAgICAgICBpc1NWTjogdHJ1ZSwKLSAg
ICAgICAgfQotICAgIH07Ci0gICAgdGhpcy5xdWV1ZS5icmFuY2hlcyA9IFt0aGlzLnNvbWVPdGhl
ckJyYW5jaF07Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHRoaXMu
dmlldy5fcHJlc2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0cyh0aGlzLnZpZXcuX2xhdGVzdFBy
b2R1Y3RpdmVJdGVyYXRpb24sIGVsZW1lbnQsIHBvcG92ZXIsIHRoaXMucXVldWUpOwotICAgIHZh
ciBub2RlTGlzdCA9IHBvcG92ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicGVu
ZGluZy1jb21taXQiKTsKLSAgICBzdHJpY3RFcXVhbChub2RlTGlzdC5sZW5ndGgsIDAsICJoYXMg
MCBwZW5kaW5nIGNvbW1pdHMiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JSZXZp
c2lvblJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92
ZXIoKTsKLSAgICB2YXIgY29udGV4dCA9IHsKLSAgICAgICAgdHJhYzogdGhpcy50cmFjLAotICAg
ICAgICBicmFuY2g6IHRoaXMudHJ1bmtCcmFuY2gsCi0gICAgICAgIGZpcnN0UmV2aXNpb246ICIz
MzAxOCIsCi0gICAgICAgIGxhc3RSZXZpc2lvbjogIjMzMDIwIgotICAgIH07Ci0gICAgdGhpcy52
aWV3Ll9wcmVzZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2UoZWxlbWVudCwgcG9wb3ZlciwgY29u
dGV4dCk7Ci0gICAgdmFyIG5vZGVMaXN0ID0gcG9wb3Zlci5fZWxlbWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJwZW5kaW5nLWNvbW1pdCIpOwotICAgIHN0cmljdEVxdWFsKG5vZGVMaXN0Lmxl
bmd0aCwgMiwgImhhcyAyIGNvbW1pdHMiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJG
b3JSZXZpc2lvblJhbmdlIG5vIGNvbW1pdHMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9IG5l
dyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHZhciBjb250ZXh0ID0gewotICAgICAgICB0cmFj
OiB0aGlzLnRyYWMsCi0gICAgICAgIGJyYW5jaDogdGhpcy50cnVua0JyYW5jaCwKLSAgICAgICAg
Zmlyc3RSZXZpc2lvbjogIjMzMDIwIiwKLSAgICAgICAgbGFzdFJldmlzaW9uOiAiMzMwMTgiCi0g
ICAgfTsKLSAgICB0aGlzLnZpZXcuX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZShlbGVt
ZW50LCBwb3BvdmVyLCBjb250ZXh0KTsKLSAgICB2YXIgbm9kZUxpc3QgPSBwb3BvdmVyLl9lbGVt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInBlbmRpbmctY29tbWl0Iik7Ci0gICAgc3RyaWN0
RXF1YWwobm9kZUxpc3QubGVuZ3RoLCAwLCAiaGFzIDAgY29tbWl0cyIpOwotfSk7Ci0KLXRlc3Qo
Il9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbiIsIGZ1bmN0aW9uKCkKLXsK
LSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxk
Ym90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24ucmV2
aXNpb24gPSB7ICJvcGVuU291cmNlIjogIjMzMDE4IiB9OwotICAgIHZhciBwcmV2aW91c0l0ZXJh
dGlvbiA9IG51bGw7Ci0gICAgdmFyIGNvbnRlbnQgPSB0aGlzLnZpZXcuX3JldmlzaW9uQ29udGVu
dFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNJdGVyYXRpb24sIHRo
aXMudHJ1bmtCcmFuY2gpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuaW5uZXJIVE1MLCAicjMz
MDE4IiwgInNob3VsZCBoYXZlIGNvcnJlY3QgcmV2aXNpb24gbnVtYmVyLiIpOwotICAgIHN0cmlj
dEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZXZpc2lvbi1udW1iZXIiKSwgdHJ1
ZSwgInNob3VsZCBoYXZlIGNsYXNzICdyZXZpc2lvbi1udW1iZXInLiIpOwotICAgIHN0cmljdEVx
dWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwb3BvdmVyLXRyYWNraW5nIiksIGZhbHNl
LCAic2hvdWxkIG5vdCBoYXZlIGNsYXNzICdwb3BvdmVyLXRyYWNraW5nJy4iKTsKLX0pOwotCi10
ZXN0KCJfcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24gaGFzIHByZXZpb3Vz
SXRlcmF0aW9uIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAg
IHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMiwgZmlu
aXNoZWQpOwotICAgIGl0ZXJhdGlvbi5yZXZpc2lvbiA9IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMjIi
IH07Ci0gICAgdmFyIHByZXZpb3VzSXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRo
aXMucXVldWUsIDEsIGZpbmlzaGVkKTsKLSAgICBwcmV2aW91c0l0ZXJhdGlvbi5yZXZpc2lvbiA9
IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMTgiIH07Ci0gICAgdmFyIGNvbnRlbnQgPSB0aGlzLnZpZXcu
X3JldmlzaW9uQ29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlv
dXNJdGVyYXRpb24sIHRoaXMudHJ1bmtCcmFuY2gpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQu
aW5uZXJIVE1MLCAicjMzMDIyIiwgInNob3VsZCBoYXZlIGNvcnJlY3QgcmV2aXNpb24gbnVtYmVy
LiIpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZXZpc2lv
bi1udW1iZXIiKSwgdHJ1ZSwgInNob3VsZCBoYXZlIGNsYXNzICdyZXZpc2lvbi1udW1iZXInLiIp
OwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwb3BvdmVyLXRy
YWNraW5nIiksIHRydWUsICJzaG91bGQgaGF2ZSBjbGFzcyAncG9wb3Zlci10cmFja2luZycuIik7
Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB2
YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHRoaXMudmlldy5fcHJl
c2VudFBvcG92ZXJGb3JSZXZpc2lvblJhbmdlKGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRlbnQucG9w
b3ZlclRyYWNrZXIuX2NvbnRleHQpOwotICAgIHZhciBub2RlTGlzdCA9IHBvcG92ZXIuX2VsZW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicGVuZGluZy1jb21taXQiKTsKLSAgICBzdHJpY3RF
cXVhbChub2RlTGlzdC5sZW5ndGgsIDIsICJoYXMgMiBjb21taXRzIik7Ci19KTsKLQotdGVzdCgi
X2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSBTdWJ2ZXJzaW9uIiwgZnVuY3Rpb24oKQotewotICAg
IHZhciByZXBvc2l0b3J5ID0gdGhpcy50cnVua0JyYW5jaC5yZXBvc2l0b3J5OwotICAgIHJlcG9z
aXRvcnkuaXNTVk4gPSB0cnVlOwotICAgIHJlcG9zaXRvcnkuaXNHaXQgPSBmYWxzZTsKLSAgICBz
dHJpY3RFcXVhbCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSgiMzMwMTgiLCBy
ZXBvc2l0b3J5KSwgInIzMzAxOCIsICJTaG91bGQgYmUgcjMzMDE4IikKLX0pOwotCi10ZXN0KCJf
Zm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IEdpdCIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcmVw
b3NpdG9yeSA9IHRoaXMudHJ1bmtCcmFuY2gucmVwb3NpdG9yeTsKLSAgICByZXBvc2l0b3J5Lmlz
U1ZOID0gZmFsc2U7Ci0gICAgcmVwb3NpdG9yeS5pc0dpdCA9IHRydWU7Ci0gICAgc3RyaWN0RXF1
YWwodGhpcy52aWV3Ll9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXkoIjBlNDk4ZGI1ZDhlNWI1YTM0
MjYzMSIsIHJlcG9zaXRvcnkpLCAiMGU0OThkYiIsICJTaG91bGQgYmUgMGU0OThkYiIpOwotfSk7
Ci0KLXRlc3QoIl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25z
IGxvYWQgZmFpbHVyZSBVSSB0ZXN0IiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9
IGZhbHNlOwotICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5x
dWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1
bHRzID0gbmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7Ci0KLSAgICB2YXIgdmlldyA9IG5l
dyBCdWlsZGJvdFF1ZXVlVmlldygpOwotICAgIHZhciBjb250ZW50ID0gdmlldy5fcG9wb3ZlckNv
bnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOwotCi0gICAg
dmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKLSAgICBzdHJpY3RFcXVh
bChjb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoLCAxICsgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3Zl
ckNvbnRlbnQpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlc1tudW1DaGlsZHJl
bkluRW1wdHlQb3BvdmVyQ29udGVudF0uY2xhc3NOYW1lLCAibG9hZGluZy1mYWlsdXJlIiwgIlBv
cG92ZXIgZm9yIGxvYWRpbmcgZmFpbHVyZSBtdXN0IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGNsYXNz
Iik7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5FbXB0
eVBvcG92ZXJDb250ZW50XS50ZXh0Q29udGVudCwgIlRlc3QgcmVzdWx0cyBjb3VsZG5cdTIwMTl0
IGJlIGxvYWRlZCIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUgbXVzdCB1c2UgdGhlIGNv
cnJlY3QgdGV4dCIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRD
b3JlVGVzdFJlZ3Jlc3Npb25zIGluY2x1ZGluZyBsb2FkaW5nIiwgZnVuY3Rpb24oKQotewotICAg
IHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIo
KTsKLSAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUs
IDEsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9
IG5ldyBNb2NrQnVpbGRib3RUZXN0UmVzdWx0cygpOwotCi0gICAgdmFyIHZpZXcgPSBuZXcgQnVp
bGRib3RRdWV1ZVZpZXcoKTsKLSAgICB2aWV3Ll9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRD
b3JlVGVzdFJlZ3Jlc3Npb25zKCJqc2NvcmUtdGVzdCIsIGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJh
dGlvbik7Ci0KLSAgICBKU09OLmxvYWQoInJlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpzb24i
LCBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgdmFyIHRlc3RSZWdyZXNzaW9ucyA9IGRh
dGEuc3RyZXNzVGVzdEZhaWx1cmVzOwotICAgICAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9w
b3ZlckNvbnRlbnQgPSAyOwotICAgICAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNo
aWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQsCi0gICAg
ICAgICAgICB0ZXN0UmVncmVzc2lvbnMubGVuZ3RoLAotICAgICAgICAgICAgIk51bWJlciBvZiBm
YWlsdXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0
cyIpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFJlZ3Jlc3Npb25zLmxlbmd0
aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9jb250
ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudF0uY2hpbGRO
b2Rlc1swXS50ZXh0Q29udGVudCwKLSAgICAgICAgICAgICAgICB0ZXN0UmVncmVzc2lvbnNbaV0s
Ci0gICAgICAgICAgICAgICAgIk5hbWVzIG9mIGZhaWx1cmVzIG11c3QgbWF0Y2giCi0gICAgICAg
ICAgICApOwotICAgICAgICB9Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiX2NyZWF0ZUxvYWRpbmdJ
bmRpY2F0b3IiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
dmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5p
c2hlZCk7Ci0KLSAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOwotICAgIHZh
ciBoZWFkaW5nID0gIkZhaXIgaXMgZm91bCwgYW5kIGZvdWwgaXMgZmFpciI7Ci0gICAgdmFyIGNv
bnRlbnQgPSB2aWV3Ll9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgaGVhZGluZyk7
Ci0KLSAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQgPSAyOwotICAgIHN0
cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEgKyBudW1DaGlsZHJlbkluRW1w
dHlQb3BvdmVyQ29udGVudCk7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251
bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFzc05hbWUsICJsb2FkaW5nLWluZGlj
YXRvciIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGluZGljYXRvciBtdXN0IGhhdmUgdGhlIGFwcHJv
cHJpYXRlIGNsYXNzIik7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNo
aWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS50ZXh0Q29udGVudCwgIkxvYWRpbmdcdTIwMjYi
LCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3QgdXNlIHRoZSBjb3JyZWN0IHRleHQi
KTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdy
ZXNzaW9ucyBhbHJlYWR5IGxvYWRlZCIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQg
PSBmYWxzZTsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgIHZhciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKCk7Ci0gICAgdmFyIGl0
ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7
Ci0gICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSB7InJlZ3Jlc3Npb25z
IjogWyJ1bm8iLCAiZG9zIiwgInRyZXMiXX07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJv
dFF1ZXVlVmlldygpOwotICAgIHZpZXcuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENvcmVU
ZXN0UmVncmVzc2lvbnMoImpzY29yZS10ZXN0IiwgZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9u
KTsKLQotICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7Ci0gICAg
c3RyaWN0RXF1YWwocG9wb3Zlci5fY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIG51bUNoaWxk
cmVuSW5FbXB0eVBvcG92ZXJDb250ZW50LAotICAgICAgICBpdGVyYXRpb24uamF2YVNjcmlwdENv
cmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGgsCi0gICAgICAgICJOdW1iZXIgb2YgZmFp
bHVyZXMgaW4gcG9wb3ZlciBtdXN0IGJlIGVxdWFsIHRvIG51bWJlciBvZiBmYWlsZWQgdGVzdHMi
KTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVz
dFJlc3VsdHMucmVncmVzc2lvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICBzdHJpY3RF
cXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1wdHlQb3Bv
dmVyQ29udGVudF0uY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCwKLSAgICAgICAgICAgIGl0ZXJh
dGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zW2ldLAotICAgICAgICAg
ICAgIk5hbWVzIG9mIGZhaWx1cmVzIG11c3QgbWF0Y2giCi0gICAgICAgICk7Ci0gICAgfQotfSk7
Ci0KLW1vZHVsZSgiQnVpbGRCb3RRdWV1ZSIsIHsKLSAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0g
ICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBNb2NrVHJh
YygpOwotICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMucmVjb3Jk
ZWRDb21taXRzID0gTW9ja1RyYWMuRVhBTVBMRV9UUkFDX0NPTU1JVFM7Ci0gICAgICAgIERhc2hi
b2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJl
dmlzaW9uTnVtYmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51
bWJlcjsKLSAgICAgICAgdGhpcy5xdWV1ZSA9IG5ldyBNb2NrQnVpbGRib3RRdWV1ZSgpOwotICAg
ICAgICB0aGlzLnF1ZXVlLmJyYW5jaGVzID0gW3sKLSAgICAgICAgICAgIG5hbWU6ICJ0cnVuayIs
Ci0gICAgICAgICAgICByZXBvc2l0b3J5OiBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuc291cmNl
Ci0gICAgICAgIH1dOwotICAgIH0KLX0pOwotCi10ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBieSBy
ZXZpc2lvbnMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAg
dmFyIGl0ZXJhdGlvbjEgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmlu
aXNoZWQpOwotICAgIHZhciBpdGVyYXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMu
cXVldWUsIDIsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNv
dXJjZSI6ICIzMzAxOCIgfTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJj
ZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IHRydWU7Ci0gICAgaXRlcmF0
aW9uMi5sb2FkZWQgPSB0cnVlOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMo
aXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGxlc3MgdGhh
biIpOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMSwgaXRl
cmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGdyZWF0ZXIgdGhhbiIpOwotICAgIHN0
cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMiwgaXRlcmF0
aW9uMiksIDAsICJjb21wYXJlSXRlcmF0aW9uczogZXF1YWwiKTsKLX0pOwotCi10ZXN0KCJjb21w
YXJlSXRlcmF0aW9ucyBieSBsb2FkZWQgKG9uZSByZXZpc2lvbiBtaXNzaW5nKSIsIGZ1bmN0aW9u
KCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRlcmF0aW9uMSA9IG5l
dyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7Ci0gICAgdmFyIGl0
ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMiwgZmluaXNoZWQp
OwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7fTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9u
ID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IGZh
bHNlOwotICAgIGl0ZXJhdGlvbjIubG9hZGVkID0gdHJ1ZTsKLSAgICBvayh0aGlzLnF1ZXVlLmNv
bXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVy
YXRpb25zOiBncmVhdGVyIHRoYW4iKTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRp
b25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjEpIDwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBsZXNz
IHRoYW4iKTsKLX0pOwotCi10ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBieSBsb2FkZWQgKHNhbWUg
cmV2aXNpb24pIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAg
IHZhciBpdGVyYXRpb24xID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZp
bmlzaGVkKTsKLSAgICB2YXIgaXRlcmF0aW9uMiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlz
LnF1ZXVlLCAyLCBmaW5pc2hlZCk7Ci0gICAgaXRlcmF0aW9uMS5yZXZpc2lvbiA9IHsgIm9wZW5T
b3VyY2UiOiAiMzMwMTkiIH07Ci0gICAgaXRlcmF0aW9uMi5yZXZpc2lvbiA9IHsgIm9wZW5Tb3Vy
Y2UiOiAiMzMwMTkiIH07Ci0gICAgaXRlcmF0aW9uMS5sb2FkZWQgPSBmYWxzZTsKLSAgICBpdGVy
YXRpb24yLmxvYWRlZCA9IHRydWU7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9u
cyhpdGVyYXRpb24xLCBpdGVyYXRpb24yKSA+IDAsICJjb21wYXJlSXRlcmF0aW9uczogZ3JlYXRl
ciB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24y
LCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVzcyB0aGFuIik7Ci19KTsK
LQotdGVzdCgiY29tcGFyZUl0ZXJhdGlvbnMgYnkgaWQgKHJldmlzaW9ucyBub3Qgc3BlY2lmaWVk
KSIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRl
cmF0aW9uMSA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7
Ci0gICAgdmFyIGl0ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwg
MiwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7fTsKLSAgICBpdGVyYXRp
b24yLnJldmlzaW9uID0ge307Ci0gICAgaXRlcmF0aW9uMS5sb2FkZWQgPSBmYWxzZTsKLSAgICBp
dGVyYXRpb24yLmxvYWRlZCA9IGZhbHNlOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJh
dGlvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGxl
c3MgdGhhbiIpOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9u
MSwgaXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGdyZWF0ZXIgdGhhbiIpOwot
ICAgIHN0cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMiwg
aXRlcmF0aW9uMiksIDAsICJjb21wYXJlSXRlcmF0aW9uczogZXF1YWwiKTsKLX0pOwotCi10ZXN0
KCJjb21wYXJlSXRlcmF0aW9ucyBieSBpZCAoc2FtZSByZXZpc2lvbikiLCBmdW5jdGlvbigpCi17
Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgdmFyIGl0ZXJhdGlvbjEgPSBuZXcgQnVp
bGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIHZhciBpdGVyYXRp
b24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDIsIGZpbmlzaGVkKTsKLSAg
ICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAgICBp
dGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVy
YXRpb24xLmxvYWRlZCA9IGZhbHNlOwotICAgIGl0ZXJhdGlvbjIubG9hZGVkID0gZmFsc2U7Ci0g
ICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24x
KSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVzcyB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1
ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24xLCBpdGVyYXRpb24yKSA+IDAsICJjb21wYXJl
SXRlcmF0aW9uczogZ3JlYXRlciB0aGFuIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy5xdWV1ZS5j
b21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwgMCwgImNvbXBhcmVJdGVy
YXRpb25zOiBlcXVhbCIpOwotfSk7Ci0KLXRlc3QoImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lv
bnMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgdmFyIGl0
ZXJhdGlvbjEgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQp
OwotICAgIHZhciBpdGVyYXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUs
IDIsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6
ICIzMzAxOCIgfTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIz
MzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IHRydWU7Ci0gICAgaXRlcmF0aW9uMi5s
b2FkZWQgPSBmYWxzZTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZp
c2lvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnNCeVJl
dmlzaW9uczogbGVzcyB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9u
c0J5UmV2aXNpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVyYXRp
b25zQnlSZXZpc2lvbnM6IGdyZWF0ZXIgdGhhbiIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMucXVl
dWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwg
MCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnM6IGVxdWFsIik7Ci19KTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TdHlsZXMvTWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0
eWxlcy9NYWluLmNzcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9N
YWluLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMwNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKiB7
Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBu
b25lOwotICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwotICAgIGN1cnNvcjogZGVmYXVsdDsK
LX0KLQotKjpsaW5rIHsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLWEgewotICAgIHRleHQt
ZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1
bmRlcmxpbmU7Ci19Ci0KLWRpdi5jZWxsQnV0dG9uLCBkaXYuYWNjZXNzaWJpbGl0eUJ1dHRvbiwg
ZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIHsKLSAgICBmb250LWZhbWlseTogIkhlbHZl
dGljYU5ldWUtTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICBj
b2xvcjogcmdiKDE4NSwgMTc1LCAxMjUpOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLX0KLQotZGl2
LmNlbGxCdXR0b24uaGlkZSwgZGl2LmFjY2Vzc2liaWxpdHlCdXR0b24uaGlkZSB7Ci0gICAgZGlz
cGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAycHg7Ci0g
ICAgcmlnaHQ6IDRweDsKLX0KLQotZGl2LmNlbGxCdXR0b24udW5oaWRlLCBkaXYuYWNjZXNzaWJp
bGl0eUJ1dHRvbi51bmhpZGUsIGRpdi5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbi51bmhpZGUg
ewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5zZXR0aW5ncy12aXNpYmxlIGRpdi5jZWxsQnV0
dG9uLmhpZGUsIC5zZXR0aW5ncy12aXNpYmxlIGRpdi5jZWxsQnV0dG9uLnVuaGlkZSwKLS5zZXR0
aW5ncy12aXNpYmxlIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLmhpZGUsIC5zZXR0aW5ncy12aXNp
YmxlIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLnVuaGlkZSwKLS5zZXR0aW5ncy12aXNpYmxlIGRp
di5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbi5oaWRlLCAuc2V0dGluZ3MtdmlzaWJsZSBkaXYu
cGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24udW5oaWRlLAotLnNldHRpbmdzLXZpc2libGUgZGl2
LnNldHRpbmdzV3JhcHBlci5oaWRlLCAuc2V0dGluZ3MtdmlzaWJsZSBkaXYuc2V0dGluZ3NXcmFw
cGVyIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotLmhpZGRlbiB7Ci0gICAgZGlzcGxheTog
bm9uZTsKLX0KLQotLnNldHRpbmdzIHsKLSAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgdG9wOiA1
cHg7Ci0gICAgbGVmdDogNXB4OwotICAgIHdpZHRoOiAzNXB4OwotICAgIGhlaWdodDogMzVweDsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTY2LCAxNTgsIDEzMCk7Ci0gICAgLXdlYmtpdC1t
YXNrLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI1MCAyNTAiPjxwYXRoIGQ9Ik0yMTMsMTQ0
di0zOWgtMjEuMDU1Yy0xLjQ3Ni01LTMuNTEtMTAuMDg1LTYuMDUxLTE0LjY2OGwxNC42NzMtMTQu
Njk3bC0yNy41NzgtMjcuNTg5bC0xNC41MjEsMTQuNjY1IEMxNTMuODg1LDYwLjE3LDE0OSw1OC4x
MywxNDQsNTYuNjU0VjM2aC0zOXYyMC42NTRjLTUsMS40NzYtMTAuMTg2LDMuNTEtMTQuNzY5LDYu
MDUxTDc1LjQ4NCw0OC4wMzNMNDcuODY5LDc1LjYwOWwxNC42NTIsMTQuNzIzIEM1OS45ODEsOTQu
OTE1LDU3LjkyOSwxMDAsNTYuNDUzLDEwNUgzNnYzOWgyMC40NTNjMS40NzYsNSwzLjUxMSw5Ljk4
NSw2LjA1MSwxNC41NjlsLTE0LjY3MiwxNC42NDZsMjcuNTc3LDI3LjU2NWwxNC44MjItMTQuNjc5
IGM0LjU4MywyLjU0MSw5Ljc2OSw0LjU2OSwxNC43NjksNi4wNDVWMjEzaDM5di0yMC44NTRjNS0x
LjQ3Niw5Ljg4NS0zLjUxLDE0LjQ2OC02LjA1MWwxNC41OTcsMTQuNjcybDI3LjU0MS0yNy41NzZs
LTE0LjY5MS0xNC42MjMgYzIuNTQtNC41ODMsNC41NTYtOS41NjgsNi4wMzEtMTQuNTY4SDIxM3og
TTEyNC4xOTksMTY0LjljLTIyLjM2NywwLTQwLjUtMTguMTMzLTQwLjUtNDAuNXMxOC4xMzMtNDAu
NSw0MC41LTQwLjUgczQwLjUsMTguMTMzLDQwLjUsNDAuNVMxNDYuNTY2LDE2NC45LDEyNC4xOTks
MTY0Ljl6Ii8+PC9zdmc+Jyk7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi0uc2V0dGluZ3M6
aG92ZXIgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxODUsIDE3NSwgMTI1KTsKLX0KLQot
LnNldHRpbmdzLXZpc2libGUgLnNldHRpbmdzIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
NzYsIDE1MSwgNjEpOwotfQotCi1ib2R5IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMz
LCAyMzEsIDIyMyk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIG1hcmdpbjogNTBweCAy
NXB4IDUwcHggMjVweDsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB7Ci0gICAgYm9yZGVyLXNwYWNp
bmc6IDA7Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLSAgICBkaXNwbGF5OiBpbmxp
bmUtdGFibGU7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIuaGVhZGVycyB0aCB7Ci0gICAgZm9u
dC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLVVsdHJhTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZv
bnQtc2l6ZTogMzBweDsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtdHJhbnNm
b3JtOiBsb3dlcmNhc2U7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHRyOm50aC1jaGlsZChvZGQpOm5vdCguaGVhZGVycykgdGQgewotICAgIGJv
cmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjExLCAyMDcsIDE5MSk7Ci0gICAgYm9yZGVyLWJvdHRv
bTogMXB4IHNvbGlkIHJnYigyMTEsIDIwNywgMTkxKTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0
ciB0aDpub3QoOmxhc3QtY2hpbGQpLAotdGFibGUucXVldWUtZ3JpZCB0ciB0ZDpub3QoOmxhc3Qt
Y2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2IoMjExLCAyMDcsIDE5MSk7
Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxkKG9kZCk6bm90KC5oZWFkZXJzKSB0
ZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyOSwgMjI2LCAyMTcpOwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHRyOm50aC1jaGlsZChvZGQpOm5vdCguaGVhZGVycykgdGQ6Zmlyc3QtY2hp
bGQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICAgIGJhY2tncm91bmQ6
IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMjI5LCAyMjYsIDIxNywgMCksIHJn
YigyMjksIDIyNiwgMjE3KSk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxkKG9k
ZCk6bm90KC5oZWFkZXJzKSB0ZDpsYXN0LWNoaWxkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0
cmFuc3BhcmVudDsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChyaWdo
dCwgcmdiYSgyMjksIDIyNiwgMjE3LCAwKSwgcmdiKDIyOSwgMjI2LCAyMTcpKTsKLX0KLQotdGFi
bGUucXVldWUtZ3JpZCB0ZCB7Ci0gICAgaGVpZ2h0OiAyMDBweDsKLSAgICB3aWR0aDogMjAwcHg7
Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ZC5sb2dv
IHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdGQubG9n
bzo6YmVmb3JlIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBjb250ZW50OiAiIjsKLSAgICB3
aWR0aDogMjAwcHg7Ci0gICAgaGVpZ2h0OiAwOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBs
YXRmb3JtIHRkLmxvZ286OmJlZm9yZSB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVl
LVVsdHJhTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250
LXdlaWdodDogbm9ybWFsOwotICAgIGxldHRlci1zcGFjaW5nOiAycHg7Ci0gICAgdGV4dC1zaGFk
b3c6IDRweCA0cHggNnB4IHJnYmEoMTUwLCAxNTAsIDE1MCwgMSk7Ci0gICAgY29sb3I6IHJnYigx
NDUsIDEzNSwgOTUpOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IDI0cHg7
Ci0gICAgbGVmdDogMHB4OwotICAgIHotaW5kZXg6IDI7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQg
dGQubG9nbyBpbWcucmluZyB7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4u
L0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9QbGF0Zm9ybVJp
bmcucG5nKSAxeCk7Ci0gICAgd2lkdGg6IDE2MHB4OwotICAgIGhlaWdodDogMTYzcHg7Ci0gICAg
cG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMjBweDsKLSAgICBsZWZ0OiAxOHB4OwotfQot
Ci10YWJsZS5xdWV1ZS1ncmlkIHRkLmxvZ28gaW1nLmxvZ28gewotICAgIHdpZHRoOiAxNDRweDsK
LSAgICBoZWlnaHQ6IDE0NHB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6IDI5
cHg7Ci0gICAgbGVmdDogMjZweDsKLSAgICAtd2Via2l0LWNsaXAtcGF0aDogY2lyY2xlKDcycHgg
YXQgY2VudGVyKTsKLSAgICBjbGlwLXBhdGg6IGNpcmNsZSg3MnB4IGF0IGNlbnRlcik7Ci19Ci0K
LXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ud2luZG93cy0xMCB0ZC5sb2dvOjpiZWZvcmUg
ewotICAgIGNvbnRlbnQ6ICJXaW5kb3dzIDEwIjsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5w
bGF0Zm9ybS53aW5jYWlyby13aW5kb3dzLTEwIHRkLmxvZ286OmJlZm9yZSB7Ci0gICAgY29udGVu
dDogIldpbkNhaXJvIjsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS5pb3Mtc2lt
dWxhdG9yLTE0IGltZy5sb2dvIHsKLSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTU1
ZGVnLCAjYjFhOGVkIDE2JSwjYWEzZGFhIDUwJSk7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFn
ZS1zZXQodXJsKC4uL0ltYWdlcy9JT1MxNFNpbXVsYXRvckAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1h
Z2VzL0lPUzE0U2ltdWxhdG9yLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBs
YXRmb3JtLmlvcy0xNCBpbWcubG9nbyB7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDE1NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwotICAgIGNvbnRlbnQ6IC13ZWJraXQt
aW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvSU9TMTRAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9J
T1MxNC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS50dm9zLXNp
bXVsYXRvci0xNCBpbWcubG9nbyB7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDE1
NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1h
Z2Utc2V0KHVybCguLi9JbWFnZXMvVHZPUzE0U2ltdWxhdG9yQDJ4LnBuZykgMngsIHVybCguLi9J
bWFnZXMvVHZPUzE0U2ltdWxhdG9yLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRy
LnBsYXRmb3JtLnR2b3MtMTQgaW1nLmxvZ28gewotICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFk
aWVudCgxNTVkZWcsICNiMWE4ZWQgMTYlLCNhYTNkYWEgNTAlKTsKLSAgICBjb250ZW50OiAtd2Vi
a2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1R2T1MxNEAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1h
Z2VzL1R2T1MxNC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS53
YXRjaG9zLXNpbXVsYXRvci03IGltZy5sb2dvIHsKLSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3Jh
ZGllbnQoMTU1ZGVnLCAjYjFhOGVkIDE2JSwjYWEzZGFhIDUwJSk7Ci0gICAgY29udGVudDogLXdl
YmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yN0AyeC5wbmcpIDJ4
LCB1cmwoLi4vSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I3LnBuZykgMXgpOwotfQotCi10YWJsZS5x
dWV1ZS1ncmlkIHRyLnBsYXRmb3JtLndhdGNob3MtNyBpbWcubG9nbyB7Ci0gICAgYmFja2dyb3Vu
ZDogbGluZWFyLWdyYWRpZW50KDE1NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwotICAg
IGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvV2F0Y2hPUzdAMngucG5n
KSAyeCwgdXJsKC4uL0ltYWdlcy9XYXRjaE9TNy5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUt
Z3JpZCB0ci5wbGF0Zm9ybS5tYWNvcy1tb2phdmUgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13
ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvTW9qYXZlQDJ4LnBuZykgMngsIHVybCguLi9J
bWFnZXMvTW9qYXZlLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3Jt
Lm1hY29zLWNhdGFsaW5hIGltZy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNl
dCh1cmwoLi4vSW1hZ2VzL0NhdGFsaW5hQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvQ2F0YWxp
bmEucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ubWFjb3MtYmln
c3VyIGltZy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1h
Z2VzL0JpZ1N1ckAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL0JpZ1N1ci5wbmcpIDF4KTsKLX0K
LQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS53aW5jYWlyby13aW5kb3dzLTEwIGltZy5s
b2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1dpbmRv
d3MxMEAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMC5wbmcpIDF4KTsKLX0KLQot
dGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS53aW5kb3dzLTEwIGltZy5sb2dvIHsKLSAgICBj
b250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMEAyeC5wbmcp
IDJ4LCB1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUt
Z3JpZCB0ci5wbGF0Zm9ybS53aW5kb3dzLTcgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13ZWJr
aXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvV2luZG93czdAMngucG5nKSAyeCwgdXJsKC4uL0lt
YWdlcy9XaW5kb3dzNy5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9y
bS5saW51eC1ndGsgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVy
bCguLi9JbWFnZXMvR1RLQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvR1RLLnBuZykgMXgpOwot
fQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLmxpbnV4LXdwZSBpbWcubG9nbyB7Ci0g
ICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9XUEVAMngucG5nKSAy
eCwgdXJsKC4uL0ltYWdlcy9XUEUucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIu
cGxhdGZvcm0ubGludXgtanNjb25seSBpbWcubG9nbyB7Ci0gICAgY29udGVudDogLXdlYmtpdC1p
bWFnZS1zZXQodXJsKC4uL0ltYWdlcy9TcXVpcnJlbEZpc2hAMngucG5nKSAyeCwgdXJsKC4uL0lt
YWdlcy9TcXVpcnJlbEZpc2gucG5nKSAxeCk7Ci19Ci0KLS5wb3BvdmVyLXRyYWNraW5nOmhvdmVy
IHsKLSAgICB0ZXh0LXNoYWRvdzogMHB4IDBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpCi19Ci0K
LWRpdi5zZXR0aW5nc1dyYXBwZXIuaGlkZSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotZGl2
LnNldHRpbmdzV3JhcHBlciB7Ci0gICAgcG9zaXRpb246IGZpeGVkOwotICAgIHdpZHRoOiAxMDAl
OwotICAgIGhlaWdodDogNDVweDsKLSAgICB0b3A6IDBweDsKLSAgICBsZWZ0OiA1MHB4OwotICAg
IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzMsIDIzMSwgMjIzKTsKLSAgICB6LWluZGV4OiAyOwot
fQotCi1kaXYuZmFtaWx5VG9nZ2xlV3JhcHBlciB7Ci0gICAgcG9zaXRpb246IGluaGVyaXQ7Ci0g
ICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGVmdDogNTBweDsKLSAgICB0b3A6IDEzLjVweDsKLX0K
LQotZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIHsKLSAgICBmbG9hdDogbGVmdDsKLSAg
ICBwYWRkaW5nLWxlZnQ6IDVweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19Ci0KLWRpdi5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1
dHRvbjpub3QoOmxhc3QtY2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2Io
MjExLCAyMDcsIDE5MSk7Ci19Ci0KLWRpdi5mYW1pbHlTaG93biB7Ci0gICAgdGV4dC1kZWNvcmF0
aW9uOiBub25lOwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi1kaXYuYWNjZXNzaWJpbGl0
eUJ1dHRvbiB7Ci0gICAgcG9zaXRpb246IGluaGVyaXQ7Ci0gICAgdG9wOiAxMy41cHg7Ci0gICAg
cmlnaHQ6IDguNXB4OwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9NZXRyaWNzLmNzcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL01ldHJpY3MuY3NzCShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL01ldHJpY3MuY3NzCShub25leGlzdGVudCkK
QEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWJvZHkgewotICAgIG1hcmdpbi10b3A6IDE1
cHg7Ci19Ci0KLSNyYW5nZS1waWNrZXIgewotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1
ZS1MaWdodCIsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXplOiAxNHB4OwotICAgIGNvbG9yOiBy
Z2IoMTQ1LCAxMzUsIDk1KTsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5xdWV1ZS12aWV3
IC5yZXN1bHQtbGluZSB7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLSAgICBwYWRkaW5nOiAycHgg
MDsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBm
b250LXNpemU6IDEycHg7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIC13ZWJr
aXQtdXNlci1zZWxlY3Q6IGF1dG87Ci0gICAgY3Vyc29yOiB0ZXh0OwotfQotCi10YWJsZS5hZ2dy
ZWdhdGUtZ3JpZCB0ci5oZWFkZXJzIHRoIHsKLSAgICBmb250LXNpemU6IDM2cHg7Ci19Ci0KLS5h
Z2dyZWdhdGUtcXVldWUtdmlldyAucmVzdWx0LWxpbmUgewotICAgIGZvbnQtc2l6ZTogMTRweDsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsK
LX0KLQotLnF1ZXVlLXZpZXcgLnF1ZXVlTGFiZWwgKyAucmVzdWx0LWxpbmUsCi0ucXVldWUtdmll
dyAuZXJyb3ItbGluZSArIC5yZXN1bHQtbGluZSwKLS5yZXN1bHQtbGluZTpmaXJzdC1jaGlsZAot
ewotICAgIHBhZGRpbmc6IDEwcHggMCAycHggMDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLX0K
LQotLnF1ZXVlLXZpZXcgLmVycm9yLWxpbmUgewotICAgIGNvbG9yOiByZ2IoMTkxLCA2NywgNDEp
OwotfQotCi0ucXVldWUtdmlldyAuZGl2aWRlciB7Ci0gICAgaGVpZ2h0OiA2cHg7Ci19Ci0KLXRh
YmxlLmFnZ3JlZ2F0ZS1ncmlkIC5xdWV1ZS12aWV3IC5kaXZpZGVyIHsKLSAgICBoZWlnaHQ6IDEw
cHg7Ci19Ci0KLS5tZXRyaWNzLWxvYWRpbmctaW5kaWNhdG9yIHsKLSAgICBmb250LWZhbWlseTog
IkhlbHZldGljYU5ldWUtTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTRweDsK
LSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgaGVpZ2h0OiAxMDBweDsKLSAgICBs
aW5lLWhlaWdodDogMTAwcHg7Ci0gICAgdmlzaWJpbGl0eTogaGlkZGVuOwotfQotCi0udGFibGVz
LWRpdmlkZXIgewotICAgIGhlaWdodDogNjBweDsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TdHlsZXMvTWV0cmljcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUG9wb3Zlci5jc3MKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9Qb3BvdmVyLmNzcwkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1N0eWxlcy9Qb3BvdmVyLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDEwNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLnBvcG92ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICBtaW4td2lkdGg6IDIwcHg7Ci0gICAgbWluLWhlaWdodDogMjBweDsKLSAgICBib3gtc2l6
aW5nOiBib3JkZXItYm94OwotICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwotICAgIHotaW5kZXg6
IDEwMDA7Ci0gICAgb3BhY2l0eTogMDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctdXAgewotICAgIHBh
ZGRpbmc6IDE2cHggNXB4IDVweCA1cHg7Ci19Ci0KLS5wb3BvdmVyLmFycm93LXJpZ2h0IHsKLSAg
ICBwYWRkaW5nOiA1cHggMTZweCA1cHggNXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1kb3duIHsK
LSAgICBwYWRkaW5nOiA1cHggNXB4IDE2cHggNXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1sZWZ0
IHsKLSAgICBwYWRkaW5nOiA1cHggNXB4IDVweCAxNnB4OwotfQotCi0ucG9wb3Zlci52aXNpYmxl
IHsKLSAgICBvcGFjaXR5OiAxOwotfQotCi0ucG9wb3Zlci5zdGVwLWluIHsKLSAgICAvKiBUaGUg
ZGVsYXkgaXMgYWZ0ZXIgcG9wb3ZlciBjcmVhdGlvbi4gUG9wb3ZlciB0cmFja2luZyBjb2RlIG1h
eSBhZGQgYSBkZWxheSBvZiBpdHMgb3duIGJlZm9yZSBpdCBkZWNpZGVzIHRvIGNyZWF0ZSB0aGUg
cG9wb3Zlci4gKi8KLSAgICAvKiBJdCBpcyB1c2VmdWwgdG8gc2VwYXJhdGUgdGhlIGRlbGF5cyBi
ZWNhdXNlIHBvcG92ZXIgY3JlYXRpb24gY2FuIGJlIGNvc3RseSwgZS5nLiBpdCBjYW4gbGF6aWx5
IGxvYWQgZGF0YSBmcm9tIG5ldHdvcmsgZHVyaW5nIHRoZSB0cmFuc2l0aW9uLiAqLwotICAgIHRy
YW5zaXRpb246IG9wYWNpdHkgMG1zIDgwMG1zOwotICAgIG9wYWNpdHk6IDE7Ci19Ci0KLS5wb3Bv
dmVyLmZhZGUtb3V0IHsKLSAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDUwMG1zIDIwMG1zOwotICAg
IG9wYWNpdHk6IDA7Ci19Ci0KLS5wb3BvdmVyID4gLmNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246
IGFic29sdXRlOwotICAgIGxlZnQ6IDVweDsKLSAgICB0b3A6IDVweDsKLSAgICByaWdodDogNXB4
OwotICAgIGJvdHRvbTogNXB4OwotCi0gICAgcGFkZGluZzogNXB4OwotCi0gICAgb3ZlcmZsb3ct
eTogYXV0bzsKLSAgICBvdmVyZmxvdy14OiBoaWRkZW47Ci0KLSAgICBwb2ludGVyLWV2ZW50czog
YXV0bzsKLX0KLQotLnBvcG92ZXIgPiAuY29udGFpbmVyLmNlbnRlciB7Ci0gICAgZGlzcGxheTog
LXdlYmtpdC1mbGV4OwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0gICAg
LXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotfQotCi0ucG9wb3Zlci5hcnJvdy11cCA+IC5j
b250YWluZXIgewotICAgIHRvcDogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctcmlnaHQgPiAu
Y29udGFpbmVyIHsKLSAgICByaWdodDogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctZG93biA+
IC5jb250YWluZXIgewotICAgIGJvdHRvbTogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctbGVm
dCA+IC5jb250YWluZXIgewotICAgIGxlZnQ6IDE2cHg7Ci19Ci0KLWJvZHkucG9wb3Zlci1wcmV2
ZW50LWRvY3VtZW50LXNjcm9sbGluZyB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUG9wb3Zlci5jc3MKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUXVldWVW
aWV3LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1F1ZXVlVmlldy5jc3MJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUXVldWVWaWV3LmNzcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDE1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEz
LCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnF1ZXVl
LXZpZXcgewotICAgIHdpZHRoOiAyMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4IDIwcHg7Ci19Ci0K
LS5xdWV1ZS12aWV3IC5xdWV1ZUxhYmVsIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBmb250
LWZhbWlseTogIkhlbHZldGljYU5ldWUtTGlnaHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNl
cmlmOwotICAgIGNvbG9yOiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0
OwotfQotCi0ucXVldWUtdmlldyAucXVldWVMYWJlbDpub3QoOmZpcnN0LWNoaWxkKSB7Ci0gICAg
bWFyZ2luLXRvcDogMTBweDsKLX0KLQotLnBvcG92ZXIgLmRpdmlkZXIgewotICAgIGhlaWdodDog
N3B4OwotfQotCi0ucG9wb3ZlciAucG9wb3Zlci1pdGVyYXRpb24taGVhZGluZyAuYnVpbGRib3Qt
bGluaywKLS5wb3BvdmVyIC5wb3BvdmVyLWl0ZXJhdGlvbi1oZWFkaW5nIC5hZGRpdGlvbmFsLXRl
eHQgewotICAgIHBhZGRpbmctbGVmdDogNXB4OwotfQotCi0uY29tbWl0LWhpc3RvcnktcG9wb3Zl
ciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLUxpZ2h0IiwgIkhlbHZldGljYSBO
ZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgZm9u
dC1zaXplOiAxMnB4OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0gICAgcGFkZGluZzogMXB4IDZw
eCAxcHggNnB4OwotICAgIHVzZXItc2VsZWN0OiBhdXRvOwotfQotCi0uY29tbWl0LWhpc3Rvcnkt
cG9wb3ZlciA+IC5wZW5kaW5nLWNvbW1pdCA+IC5hdXRob3IgewotICAgIHBhZGRpbmctbGVmdDog
NXB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKLX0KLQotLmNvbW1pdC1oaXN0b3J5LXBvcG92
ZXIgPiAucGVuZGluZy1jb21taXQgPiAudGl0bGUgewotICAgIGNvbG9yOiBibGFjazsKLX0KLQot
LmJ1aWxkLWxvZ3MtcG9wb3ZlciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLUxp
Z2h0IiwgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0NSwg
MTM1LCA5NSk7Ci0gICAgZm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0g
ICAgcGFkZGluZzogMXB4IDZweCAxcHggNnB4OwotfQotCi0uYnVpbGQtbG9ncy1wb3BvdmVyIC5i
dWlsZC1sb2dzLWhlYWRpbmcgewotICAgIGRpc3BsYXk6IGlubGluZTsKLX0KLQotLmJ1aWxkLWxv
Z3MtcG9wb3ZlciAuYnVpbGQtcGFnZS1saW5rIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQot
LmJ1aWxkLWxvZ3MtcG9wb3ZlciAuYnVpbGQtbG9nLWxpbmsgewotICAgIHBhZGRpbmctbGVmdDog
NXB4OwotfQotCi0udGVzdC1yZXN1bHRzLXBvcG92ZXIgewotICAgIGZvbnQtZmFtaWx5OiAiSGVs
dmV0aWNhTmV1ZS1MaWdodCIsICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgY29s
b3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICB0ZXh0LWFs
aWduOiBsZWZ0OwotICAgIHBhZGRpbmc6IDFweCA2cHggMXB4IDZweDsKLX0KLQotLnRlc3QtcmVz
dWx0cy1wb3BvdmVyIC5mYWlsaW5nLXRlc3Qta2luZC1zdW1tYXJ5IHsKLSAgICBkaXNwbGF5OiBi
bG9jazsKLX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC50ZXN0LXBhdGggewotICAgIGNvbG9y
OiBibGFjazsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhdXRvOwotICAgIGN1cnNvcjogdGV4
dDsKLX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC5mYWlsdXJlLWtpbmQtaW5kaWNhdG9yIHsK
LSAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLSAgICBwYWRkaW5nLWxlZnQ6IDdweDsKLX0K
LQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC50ZXN0LWhpc3RvcnktbGluayB7Ci0gICAgY29sb3I6
IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0udGVzdC1y
ZXN1bHRzLXBvcG92ZXIgLmFkZGl0aW9uYWwtbGluayB7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEz
NSwgOTUpOwotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0uYnViYmxlLXNlcnZlci1wb3Bv
dmVyLAotLnBlcmZvcm1hbmNlLXBvcG92ZXIsCi0ubGVha3MtcG9wb3ZlciwKLS5jb21iaW5lZC1x
dWV1ZS1wb3BvdmVyIHsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUtTGlnaHQiLCAi
SGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmOwotICAgIGNvbG9yOiByZ2IoMTQ1LCAxMzUsIDk1
KTsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLSAgICBwYWRk
aW5nOiAxcHggNnB4IDFweCA2cHg7Ci19Ci0KLS5idWJibGUtc2VydmVyLXBvcG92ZXIgLnBvcG92
ZXItcXVldWUtaGVhZGluZyAucXVldWUtc3RhdHVzLWxpbmssCi0uYnViYmxlLXNlcnZlci1wb3Bv
dmVyIC5wb3BvdmVyLXF1ZXVlLWhlYWRpbmcgLnF1ZXVlLWNoYXJ0cy1saW5rIHsKLSAgICBjb2xv
cjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19Ci0KLS5idWJi
bGUtc2VydmVyLXBvcG92ZXIgLmxhdGVzdC1zdGF0dXMtd2l0aC1saW5rLAotLmJ1YmJsZS1zZXJ2
ZXItcG9wb3ZlciAubGF0ZXN0LXN0YXR1cy1uby1saW5rIHsKLSAgICBjb2xvcjogYmxhY2s7Ci0g
ICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19Ci0KLS5idWJibGUtc2VydmVyLXBvcG92ZXIgLmZhaWx1
cmUtY291bnQsCi0uYnViYmxlLXNlcnZlci1wb3BvdmVyIC50aW1lLXNpbmNlLW1lc3NhZ2UsCi0u
YnViYmxlLXNlcnZlci1wb3BvdmVyIC5idWd6aWxsYS1saW5rLAotLmJ1YmJsZS1zZXJ2ZXItcG9w
b3ZlciAuYm90LXN0YXR1cy1kZXNjcmlwdGlvbiB7Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19
Ci0KLS8qIFN0eWxpbmcgdGhlIHBlcmZvcm1hbmNlIGRhc2hib2FyZCBsaW5rIGFzIHZpc2l0ZWQg
ZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYm90IHdhdGNoZXIncyBk
YXNoYm9hcmQuICovCi0ucGVyZm9ybWFuY2UtcG9wb3ZlciAuZGFzaGJvYXJkLWxpbmsgewotICAg
IGNvbG9yOiBibHVlOwotfQotCi0uY29tYmluZWQtcXVldWUtcG9wb3ZlciAucmV2aXNpb24gewot
ICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0
dXNMaW5lVmlldy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0dXNM
aW5lVmlldy5jc3MJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvU3Rh
dHVzTGluZVZpZXcuY3NzCShub25leGlzdGVudCkKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0uc3RhdHVzLWxpbmUgewotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0gICAgbWluLWhlaWdo
dDogMzJweDsKLSAgICBwYWRkaW5nOiAycHggMDsKLX0KLQotLnN0YXR1cy1saW5lIC5idWJibGUg
ewotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1pbi13aWR0aDogMjRweDsKLSAgICBoZWlnaHQ6IDI0
cHg7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwotICAgIGZvbnQt
c2l6ZTogMTZweDsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUtTWVkaXVtIiwgIkhl
bHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAg
Ym9yZGVyLXJhZGl1czogMTJweDsKLSAgICBwYWRkaW5nOiAwIDZweDsKLSAgICBvdmVyZmxvdzog
aGlkZGVuOwotICAgIG1hcmdpbi10b3A6IDJweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDZweDsKLSAg
ICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLS5zdGF0dXMtbGluZS5uZXV0cmFsIC5idWJi
bGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxODEsIDE3NCwgMTQ4KTsKLX0KLQotLnN0
YXR1cy1saW5lLnVuYXV0aG9yaXplZCAuYnViYmxlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoMTcxLCA2MSwgMTcxKTsKLX0KLQotLnN0YXR1cy1saW5lIC5idWJibGUucGljdG9ncmFtIHsK
LSAgICBwYWRkaW5nOiAwOwotICAgIG1heC13aWR0aDogMjRweDsKLX0KLQotLnN0YXR1cy1saW5l
Lmdvb2QgLmJ1YmJsZS5waWN0b2dyYW0gewotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnZGF0
YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2
aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMzApIHJvdGF0
ZSgtNDUgMzAgMTcpIiBzaGFwZS1yZW5kZXJpbmc9ImNyaXNwRWRnZXMiIGZpbGw9IndoaXRlIj48
cmVjdCB5PSI1IiB3aWR0aD0iMTAiIGhlaWdodD0iMjUiLz48cmVjdCB5PSIyMCIgd2lkdGg9IjYw
IiBoZWlnaHQ9IjEwIi8+PC9nPjwvc3ZnPicpOwotfQotCi0uc3RhdHVzLWxpbmUudW5hdXRob3Jp
emVkIC5idWJibGUucGljdG9ncmFtIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2RhdGE6
aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmll
d0JveD0iMCAwIDEwMCAxMDAiPjxjbGlwUGF0aCBpZD0idG9wLXNlbWljaXJjbGUiPjxyZWN0IHg9
IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMzciLz48L2NsaXBQYXRoPjxjaXJjbGUgY3g9
IjUwIiBjeT0iMzMiIHI9IjEzIiBjbGlwLXBhdGg9InVybCgjdG9wLXNlbWljaXJjbGUpIiBzdHJv
a2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBmaWxsPSJub25lIiAvPjxyZWN0IHg9IjI0IiB5
PSIzOCIgd2lkdGg9IjUyIiBoZWlnaHQ9IjM5IiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPicpOwotfQot
Ci0uc3RhdHVzLWxpbmUuZGFuZ2VyIC5idWJibGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJn
YigyMzAsIDE3NSwgNDQpOwotfQotCi0uc3RhdHVzLWxpbmUubmV1dHJhbCAuYnViYmxlLnBpY3Rv
Z3JhbSwKLS5zdGF0dXMtbGluZS5kYW5nZXIgLmJ1YmJsZS5waWN0b2dyYW0gewotICAgIGZvbnQt
d2VpZ2h0OiBib2xkOwotfQotCi0uc3RhdHVzLWxpbmUuYmFkIC5idWJibGUucGljdG9ncmFtIHsK
LSAgICBmb250LWZhbWlseTogIk1lbmxvLUJvbGQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6
ZTogMjNweDsKLSAgICBsaW5lLWhlaWdodDogMjJweDsKLX0KLQotLnN0YXR1cy1saW5lIC5sYWJl
bCB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAg
Zm9udC1zaXplOiAxMHB4OwotICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7Ci0gICAgbGlu
ZS1oZWlnaHQ6IDExcHg7Ci0gICAgcGFkZGluZy10b3A6IDFweDsKLSAgICBkaXNwbGF5OiBibG9j
azsKLX0KLQotLnN0YXR1cy1saW5lIC5tZXNzYWdlIHsKLSAgICBmb250LWZhbWlseTogIkhlbHZl
dGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4dC10
cmFuc2Zvcm06IGxvd2VyY2FzZTsKLX0KLQotLnN0YXR1cy1saW5lIC5tZXNzYWdlICogewotICAg
IGNvbG9yOiBpbmhlcml0OwotfQotCi0uc3RhdHVzLWxpbmUgLm1lc3NhZ2UgLnJldmlzaW9uLW51
bWJlciB7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKLSAgICBjdXJzb3I6IHRleHQ7
Ci19Ci0KLS5zdGF0dXMtbGluZS5uby1sYWJlbCAubWVzc2FnZSB7Ci0gICAgbGluZS1oZWlnaHQ6
IDI4cHg7Ci19Ci0KLS5zdGF0dXMtbGluZTpub3QoLm5vLWxhYmVsKSAubWVzc2FnZSB7Ci0gICAg
bGluZS1oZWlnaHQ6IDEzcHg7Ci19Ci0KLS5zdGF0dXMtbGluZS5uZXV0cmFsIC5sYWJlbCwKLS5z
dGF0dXMtbGluZS5uZXV0cmFsIC5tZXNzYWdlLAotLnN0YXR1cy1saW5lLm5vLWJ1YmJsZSAubGFi
ZWwsCi0uc3RhdHVzLWxpbmUubm8tYnViYmxlIC5tZXNzYWdlIHsKLSAgICBjb2xvcjogcmdiKDE0
NSwgMTM1LCA5NSk7Ci19Ci0KLS5zdGF0dXMtbGluZS5iYWQgLmJ1YmJsZSB7Ci0gICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLX0KLQotLnN0YXR1cy1saW5lLmdvb2QgLmJ1
YmJsZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc2LCAxNTEsIDYxKTsKLX0KLQotLnN0
YXR1cy1saW5lLmdvb2QgLmxhYmVsLAotLnN0YXR1cy1saW5lLmdvb2QgLm1lc3NhZ2UgewotICAg
IGNvbG9yOiByZ2IoNzYsIDE1MSwgNjEpOwotfQotCi0uc3RhdHVzLWxpbmUuYmFkIC5sYWJlbCwK
LS5zdGF0dXMtbGluZS5iYWQgLm1lc3NhZ2UgewotICAgIGNvbG9yOiByZ2IoMTkxLCA2NywgNDEp
OwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5zdGF0dXMtbGluZS5nb29kIC5idWJi
bGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig1MCwgMjE5LCA3Mik7Ci19Ci0KLWJvZHku
YWNjZXNzaWJpbGl0eS1jb2xvcnMgLnN0YXR1cy1saW5lLmJhZCAuYnViYmxlIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiByZ2IoMTk2LCA0OSwgNDkpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHkt
Y29sb3JzIC5zdGF0dXMtbGluZS5nb29kIC5sYWJlbCwKLWJvZHkuYWNjZXNzaWJpbGl0eS1jb2xv
cnMgLnN0YXR1cy1saW5lLmdvb2QgLm1lc3NhZ2UgewotICAgIGNvbG9yOiByZ2IoNDAsIDE3Nywg
NTgpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5zdGF0dXMtbGluZS5iYWQgLmxh
YmVsLAotYm9keS5hY2Nlc3NpYmlsaXR5LWNvbG9ycyAuc3RhdHVzLWxpbmUuYmFkIC5tZXNzYWdl
IHsKLSAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLX0KLQotLnN0YXR1cy1saW5lLmRhbmdl
ciAubGFiZWwsCi0uc3RhdHVzLWxpbmUuZGFuZ2VyIC5tZXNzYWdlIHsKLSAgICBjb2xvcjogcmdi
KDIzMCwgMTc1LCA0NCk7Ci19Ci0KLS5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmxhYmVsLAot
LnN0YXR1cy1saW5lLnVuYXV0aG9yaXplZCAubWVzc2FnZSB7Ci0gICAgY29sb3I6IHJnYigxNzEs
IDYxLCAxNzEpOwotfQotCi0uc3RhdHVzLWxpbmUgLmJ1YmJsZS5wb3BvdmVyLXRyYWNraW5nOmhv
dmVyIHsKLSAgICB0ZXh0LXNoYWRvdzogMHB4IDBweCA1cHggcmdiYSgyNTUsIDI1NSwgMjU1LCAw
LjcpCi19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvaW5kZXguaHRtbAkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL2lu
ZGV4Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi08IS0tCi1Db3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi1U
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
Ci1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci08IURPQ1RZUEUg
aHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHRpdGxlPldlYktpdCBCb3QgV2F0Y2hlcidzIERh
c2hib2FyZDwvdGl0bGU+Ci0KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlN0eWxl
cy9NYWluLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5
bGVzL1BvcG92ZXIuY3NzIj48L2xpbms+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJTdHlsZXMvUXVldWVWaWV3LmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iU3R5bGVzL1N0YXR1c0xpbmVWaWV3LmNzcyI+PC9saW5rPgotCi0gICAgPHNjcmlw
dCBzcmM9IlNjcmlwdHMvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
U2NyaXB0cy9CYXNlT2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0
cy9EYXNoYm9hcmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxk
Ym90LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWd6aWxsYS5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWJibGVRdWV1ZS5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0dlb21ldHJ5LmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9Qb3BvdmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iU2NyaXB0cy9Qb3BvdmVyVHJhY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlNjcmlwdHMvUXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2Ny
aXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNj
cmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVlVmll
dy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RMZWFrc1F1
ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnViYmxlUXVl
dWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9TdGF0dXNMaW5l
Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvU2V0dGluZ3MuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWFpbi5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9k
eT48L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvbWV0cmljcy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NyArMCwwIEBA
Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0y
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLS0+Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHRpdGxlPldlYktp
dCBCb3QgV2F0Y2hlcidzIERhc2hib2FyZCBNZXRyaWNzPC90aXRsZT4KLQotICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL01haW4uY3NzIj48L2xpbms+Ci0gICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJTdHlsZXMvUXVldWVWaWV3LmNzcyI+PC9saW5rPgotICAg
IDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL01ldHJpY3MuY3NzIj48L2xpbms+
Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJFeHRlcm5hbC9kYXRlcmFuZ2VwaWNr
ZXIuY3NzIj48L2xpbms+Ci0KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9VdGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0Jhc2VPYmplY3QuanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0Rhc2hib2FyZC5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJTY3JpcHRzL0J1YmJsZVF1ZXVlU2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlNjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlNjcmlwdHMvQnViYmxlUXVldWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJT
Y3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
U2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iU2NyaXB0cy9TZXR0aW5ncy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlw
dHMvVHJhYy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvSW5pdGlhbGl6
YXRpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NBbmFs
eXplci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWV0cmljc1ZpZXcu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NCdWJibGVWaWV3
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvanF1ZXJ5LTEuMTEuMS5t
aW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJFeHRlcm5hbC9tb21lbnQubWluLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBp
Y2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWV0cmljc01haW4u
anMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+PC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL21ldHJpY3MuaHRtbApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9odG1sClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2RlZmF1bHQuY3NzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rl
ZmF1bHQuY3NzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kZWZhdWx0LmNzcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDU2MyArMCwwIEBACi1ib2R5LmludGVyZmFjZSB7Ci0gICAgcG9zaXRpb246IHJl
bGF0aXZlOwotICAgIG1hcmdpbi10b3A6IDhweDsKLSAgICBiYWNrZ3JvdW5kOiB1cmwoJ2JnX2dy
YWRpZW50LmpwZycpIHJlcGVhdC14OwotICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2FOZXVlLCBz
YW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
ZmZmOwotICAgIGNvbG9yOiAjMzMzOwotfQotCi1ib2R5ID4gaHIgewotICAgIGRpc3BsYXk6IG5v
bmU7Ci19Ci0KLWRpdi5jb250ZW50IGgxIHsKLSAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7
Ci19Ci0KLXNtYWxsIHsKLSAgZm9udC1zaXplOiA5cHg7Ci19Ci0KLS5hdXRoIHsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiA1cHg7Ci0gICAgcmlnaHQ6IDEwcHg7Ci19Ci0K
LWE6bGluayxhOnZpc2l0ZWQsYTphY3RpdmUgewotICAgIGNvbG9yOiAjMzMzOwotfQotCi1hOnZp
c2l0ZWQgewotICAgIGNvbG9yOiAjNTU3OwotfQotCi10YWJsZSB7Ci0gICAgYm9yZGVyLXNwYWNp
bmc6IDFweCAxcHg7Ci19Ci0KLXRhYmxlIHRkIHsKLSAgICBwYWRkaW5nOiAzcHggMnB4IDNweCAy
cHg7Ci19Ci0KLS5Qcm9qZWN0IHsKLSAgICBtaW4td2lkdGg6IDZlbTsKLX0KLQotLkxhc3RCdWls
ZCwuQWN0aXZpdHkgewotICAgIHBhZGRpbmc6IDAgMCAwIDRweDsKLX0KLQotdGQuTGFzdEJ1aWxk
IHsKLSAgICBtaW4td2lkdGg6IDllbTsKLX0KLQotdGQuTGFzdEJ1aWxkIGEgewotICAgIGZvbnQt
d2VpZ2h0OiBib2xkOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotLyogQ2hyb21p
dW0gU3BlY2lmaWMgc3R5bGVzICovCi1kaXYuQnVpbGRSZXN1bHRJbmZvIHsKLSAgICBjb2xvcjog
IzQ0NDsKLX0KLQotZGl2LkFubm91bmNlbWVudCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMWVtOwot
fQotCi1kaXYuQW5ub3VuY2VtZW50PmE6aG92ZXIgewotICAgIGNvbG9yOiBibGFjazsKLX0KLQot
ZGl2LkFubm91bmNlbWVudD5kaXYuTm90aWNlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYWZk
YWZmOwotICAgIHBhZGRpbmc6IDAuNWVtOwotICAgIGZvbnQtc2l6ZTogMTZweDsKLSAgICB0ZXh0
LWFsaWduOiBjZW50ZXI7Ci19Ci0KLWRpdi5Bbm5vdW5jZW1lbnQ+ZGl2Lk9wZW4gewotICAgIGJv
cmRlcjogM3B4IHNvbGlkICM4ZmRmNWY7Ci0gICAgcGFkZGluZzogMC41ZW07Ci0gICAgZm9udC1z
aXplOiAxNnB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotZGl2LkFubm91bmNlbWVu
dD5kaXYuQ2xvc2VkIHsKLSAgICBib3JkZXI6IDVweCBzb2xpZCAjZTk4MDgwOwotICAgIHBhZGRp
bmc6IDAuNWVtOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsK
LSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRkLlRpbWUgewotICAgIGNvbG9yOiAjMDAw
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNlZWU7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLXRkLkFjdGl2aXR5LHRkLkNo
YW5nZSx0ZC5CdWlsZGVyIHsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjQ0NDQ0NDOwotfQotCi10ZC5MYXN0QnVpbGQsdGQuQWN0aXZpdHkgYSx0ZC5DaGFuZ2Ug
YSx0ZC5CdWlsZGVyIGEgewotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotdGQuQnVp
bGRlciB7Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLSAgICBsaW5lLWhlaWdodDogMTIwJTsK
LX0KLQotdGQuQ2hhbmdlIHsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1i
b3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Ci19Ci0KLXRk
LkV2ZW50IHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRkOwot
ICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsK
LSAgICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotdGQuQWN0aXZpdHkgewotICAgIGJv
cmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQt
cmFkaXVzOiAxMHB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiAxMHB4OwotICAg
IG1pbi1oZWlnaHQ6IDIwcHg7Ci0gICAgcGFkZGluZzogMnB4IDAgMnB4IDA7Ci0gICAgZm9udC1z
aXplOiA5cHg7Ci19Ci0KLXRkLmlkbGUsdGQud2FpdGluZyx0ZC5vZmZsaW5lLHRkLmJ1aWxkaW5n
IHsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHg7Ci0gICAgLXdlYmtpdC1ib3JkZXIt
dG9wLWxlZnQtcmFkaXVzOiAwcHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDBw
eDsKLX0KLQotLkxhc3RCdWlsZCB7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4Owot
ICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwotICAgIC1tb3otYm9yZGVy
LXJhZGl1cy10b3BsZWZ0OiA1cHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsK
LSAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3Jk
ZXItcmFkaXVzLXRvcHJpZ2h0OiA1cHg7Ci19Ci0KLS8qIENvbnNvbGUgdmlldyBzdHlsZXMgKi8K
LXRkLkRldlJldiB7Ci0gICAgcGFkZGluZzogNHB4IDhweCA0cHggOHB4OwotICAgIGNvbG9yOiAj
MzMzMzMzOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJv
cmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVm
dDogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgd2lkdGg6IDElOwotfQot
Ci10ZC5EZXZSZXZDb2xsYXBzZSB7Ci0gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4
OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAgIC1tb3ot
Ym9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA1cHg7Ci19Ci0KLXRkLkRldk5hbWUgewotICAgIHBh
ZGRpbmc6IDRweCA4cHggNHB4IDhweDsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZWVlOwotICAgIHdpZHRoOiAxJTsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0Owot
fQotCi10ZC5EZXZTdGF0dXMgewotICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAgICBj
b2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi10ZC5EZXZT
bGF2ZSB7Ci0gICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwotICAgIGNvbG9yOiAjMzMzMzMz
OwotICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci19Ci0KLXRkLmZpcnN0IHsKLSAgICBib3Jk
ZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLX0KLQotdGQu
bGFzdCB7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJv
cmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJp
Z2h0OiA1cHg7Ci19Ci0KLXRkLkRldlN0YXR1c0NhdGVnb3J5IHsKLSAgICBib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXIt
cmFkaXVzOiA1cHg7Ci0gICAgYm9yZGVyLXdpZHRoOiAxcHg7Ci0gICAgYm9yZGVyLXN0eWxlOiBz
b2xpZDsKLX0KLQotdGQuRGV2U3RhdHVzQ29sbGFwc2UgewotICAgIGJvcmRlci1ib3R0b20tcmln
aHQtcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czog
NXB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwotfQotCi10ZC5E
ZXZEZXRhaWxzIHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHBhZGRpbmc6IDhweCA4
cHggOHB4IDhweDsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
ZWVlOwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRkLkRldkNvbW1lbnQgewotICAgIGZv
bnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgcGFkZGluZzogOHB4IDhweCA4cHggOHB4OwotICAgIGNv
bG9yOiAjMzMzMzMzOwotICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAg
LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgIC1tb3otYm9yZGVy
LXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwotICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6
IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKLSAgICAt
bW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6
ICNlZWU7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuQWx0IHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZGRkOwotfQotCi0ubGVnZW5kIHsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7
Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgd2lkdGg6IDEwMHB4OwotICAgIG1heC13aWR0aDogMTAwcHg7Ci0gICAgdGV4
dC1hbGlnbjogY2VudGVyOwotICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDJweDsKLSAgICBoZWln
aHQ6IDE0cHg7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotLkRldlN0YXR1c0JveCB7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGhlaWdodDogMjBweDsKLSAgICBwYWRkaW5n
OiAwIDJweDsKLSAgICBsaW5lLWhlaWdodDogMDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwot
fQotCi0uRGV2U3RhdHVzQm94IGEgewotICAgIG9wYWNpdHk6IDAuODU7Ci0gICAgYm9yZGVyLXdp
ZHRoOiAxcHg7Ci0gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3JkZXItcmFkaXVzOiA0
cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFk
aXVzOiA0cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDkwJTsKLSAgICBoZWln
aHQ6IDIwcHg7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luLWxlZnQ6IGF1dG87
Ci0gICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwotfQotCi0uRGV2U2xhdmVCb3ggewotICAgIHRleHQt
YWxpZ246IGNlbnRlcjsKLSAgICBoZWlnaHQ6IDEwcHg7Ci0gICAgcGFkZGluZzogMCAycHg7Ci0g
ICAgbGluZS1oZWlnaHQ6IDA7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotLkRldlNs
YXZlQm94IGEgewotICAgIG9wYWNpdHk6IDAuODU7Ci0gICAgYm9yZGVyLXdpZHRoOiAxcHg7Ci0g
ICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLXdl
YmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7Ci0g
ICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDkwJTsKLSAgICBoZWlnaHQ6IDEwcHg7Ci0g
ICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luLWxlZnQ6IGF1dG87Ci0gICAgbWFyZ2lu
LXJpZ2h0OiBhdXRvOwotfQotCi1hLm5vcm91bmQgewotICAgIGJvcmRlci1yYWRpdXM6IDBweDsK
LSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDBweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXM6
IDBweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luLXRvcDogLThweDsKLSAg
ICBtYXJnaW4tYm90dG9tOiAtOHB4OwotICAgIGhlaWdodDogMzZweDsKLSAgICBib3JkZXItdG9w
LXdpZHRoOiAwOwotICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Ci19Ci0KLWEuYmVnaW4gewot
ICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAg
bWFyZ2luLXRvcDogMHB4OwotICAgIG1hcmdpbi1ib3R0b206IC03cHg7Ci0gICAgaGVpZ2h0OiAy
N3B4OwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJvcmRl
ci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDog
NHB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgLXdlYmtpdC1ib3Jk
ZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdo
dDogNHB4OwotfQotCi1hLmVuZCB7Ci0gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OwotICAg
IHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW4tdG9wOiAtN3B4OwotICAgIG1hcmdpbi1i
b3R0b206IDBweDsKLSAgICBoZWlnaHQ6IDI3cHg7Ci0gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJh
ZGl1czogNHB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4Owot
ICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7Ci0gICAgYm9yZGVyLWJvdHRv
bS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFk
aXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7Ci19Ci0K
LS5jZW50ZXJfYWxpZ24gewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLnJpZ2h0X2Fs
aWduIHsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLmxlZnRfYWxpZ24gewotICAgIHRl
eHQtYWxpZ246IGxlZnQ7Ci19Ci0KLWRpdi5CdWlsZFdhdGVyZmFsbCB7Ci0gICAgYm9yZGVyLXJh
ZGl1czogN3B4OwotICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwotICAgIC1tb3otYm9y
ZGVyLXJhZGl1czogN3B4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBsZWZ0OiAwcHg7
Ci0gICAgdG9wOiAwcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKLSAgICBwYWRk
aW5nOiA0cHggNHB4IDRweCA0cHg7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgZGlzcGxheTogbm9u
ZTsKLSAgICBib3JkZXItd2lkdGg6IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwotfQot
Ci0vKiBMYXN0QnVpbGQsIEJ1aWxkU3RlcCBzdGF0ZXMgKi8KLS5zdWNjZXNzIHsKLSAgICBjb2xv
cjogI0ZGRkZGRjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZERjVGOwotICAgIGJvcmRlci1j
b2xvcjogIzRGODUzMDsKLX0KLQotLmZhaWx1cmUgewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAg
IGJhY2tncm91bmQtY29sb3I6ICNFOTgwODA7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQTc3MjcyOwot
fQotCi0ud2FybmluZ3MgewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNGRkMzNDM7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQzI5RDQ2OwotfQotCi0uZXhjZXB0aW9u
IHsKLSAgICBjb2xvcjogI0ZGRkZGRjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBCMEZGOwot
ICAgIGJvcmRlci1jb2xvcjogI0FDQTBCMzsKLX0KLQotLnN0YXJ0LC5ydW5uaW5nLHRkLmJ1aWxk
aW5nIHsKLSAgICBjb2xvcjogIzY2NjY2NjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGQzZD
OwotICAgIGJvcmRlci1jb2xvcjogI0M1QzU2RDsKLX0KLQotLm9mZmxpbmUsdGQub2ZmbGluZSwu
cmV0cnkgewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNFMEIw
RkY7Ci0gICAgYm9yZGVyLWNvbG9yOiAjZGRkZGRkOwotfQotCi0KLS5zdGFydCB7Ci0gICAgYm9y
ZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20t
bGVmdC1yYWRpdXM6IDEwcHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDEw
cHg7Ci0gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHg7Ci0gICAgLXdlYmtpdC1i
b3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMt
Ym90dG9tcmlnaHQ6IDEwcHg7Ci19Ci0KLS5ub3RzdGFydGVkIHsKLSAgICBib3JkZXItd2lkdGg6
IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwotICAgIGJvcmRlci1jb2xvcjogI2FhYTsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwotfQotCi0uY2xvc2VkIHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZmYwMDAwOwotfQotCi0uY2xvc2VkIC5sYXJnZSB7Ci0gICAgZm9udC1zaXpl
OiAxLjVlbTsKLSAgICBmb250LXdlaWdodDogYm9sZGVyOwotfQotCi10ZC5Qcm9qZWN0IGE6aG92
ZXIsdGQuc3RhcnQgYTpob3ZlciB7Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLS5taW5pLWJveCB7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGhlaWdodDogMjBweDsKLSAgICBwYWRkaW5n
OiAwIDJweDsKLSAgICBsaW5lLWhlaWdodDogMDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwot
fQotCi0ubWluaS1ib3ggYSB7Ci0gICAgYm9yZGVyLXJhZGl1czogMDsKLSAgICAtd2Via2l0LWJv
cmRlci1yYWRpdXM6IDA7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwotICAgIGRpc3BsYXk6
IGJsb2NrOwotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMjBweDsKLSAgICBsaW5lLWhl
aWdodDogMjBweDsKLSAgICBtYXJnaW4tdG9wOiAtMzBweDsKLX0KLQotLm1pbmktY2xvc2VkIHsK
LSAgICAtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LWJveC1zaXppbmc6IGJv
cmRlci1ib3g7Ci0gICAgYm9yZGVyOiA0cHggc29saWQgcmVkOwotfQotCi0vKiBncmlkIHN0eWxl
cyAqLwotdGFibGUuR3JpZCB7Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLX0KLQot
dGFibGUuR3JpZCB0ciB0ZCB7Ci0gICAgcGFkZGluZzogMC4yZW07Ci0gICAgbWFyZ2luOiAwcHg7
Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi10YWJsZS5HcmlkIHRyIHRkLnRpdGxlIHsK
LSAgICBmb250LXNpemU6IDkwJTsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBncmF5IHNvbGlkOwot
ICAgIGJvcmRlci1ib3R0b206IDFweCBncmF5IHNvbGlkOwotfQotCi10YWJsZS5HcmlkIHRyIHRk
LnNvdXJjZXN0YW1wIHsKLSAgICBmb250LXNpemU6IDkwJTsKLX0KLQotdGFibGUuR3JpZCB0ciB0
ZC5idWlsZGVyIHsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLSAgICBmb250LXNpemU6IDkwJTsK
LX0KLQotdGFibGUuR3JpZCB0ciB0ZC5idWlsZCB7Ci0gICAgYm9yZGVyOiAxcHggZ3JheSBzb2xp
ZDsKLX0KLQotLyogY29sdW1uIGNvbnRhaW5lciAqLwotZGl2LmNvbHVtbiB7Ci0gICAgbWFyZ2lu
OiAwIDJlbSAyZW0gMDsKLSAgICBmbG9hdDogbGVmdDsKLX0KLQotLyogaW5mbyB0YWJsZXMgKi8K
LXRhYmxlLmluZm8gewotICAgIGJvcmRlci1zcGFjaW5nOiAxcHg7Ci19Ci0KLXRhYmxlLmluZm8g
dGQgewotICAgIHBhZGRpbmc6IDAuMWVtIDFlbSAwLjFlbSAxZW07Ci0gICAgdGV4dC1hbGlnbjog
Y2VudGVyOwotfQotCi10YWJsZS5pbmZvIHRoIHsKLSAgICBwYWRkaW5nOiAwLjJlbSAxLjVlbSAw
LjJlbSAxLjVlbTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRhYmxlLmluZm8gdGQu
bGVmdCB7Ci0gICAgdGV4dC1hbGlnbjogbGVmdAotfQotCi0uYWx0IHsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjZDZkNmQ2OwotfQotCi1saSB7Ci0gICAgcGFkZGluZzogMC4xZW0gMWVtIDAuMWVt
IDFlbTsKLX0KLQotLnJlc3VsdCB7Ci0gICAgcGFkZGluZzogMC4zZW0gMWVtIDAuM2VtIDFlbTsK
LX0KLQotLyogbG9nIHZpZXcgKi8KLS5sb2cgKiB7Ci0gICAgdmxpbms6ICM4MDAwODA7Ci0gICAg
Zm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm90eXBlOwotfQotCi1zcGFu
LnN0ZG91dCB7Ci0gICAgY29sb3I6IGJsYWNrOwotfQotCi1zcGFuLnN0ZGVyciB7Ci0gICAgY29s
b3I6IHJlZDsKLX0KLQotc3Bhbi5oZWFkZXIgewotICAgIGNvbG9yOiBibHVlOwotfQotCi0vKiBy
ZXZpc2lvbiAmIGVtYWlsICovCi0ucmV2aXNpb24gLmZ1bGwgewotICAgIGRpc3BsYXk6IG5vbmU7
Ci19Ci0KLS51c2VyIC5lbWFpbCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLyogY2hhbmdl
IGNvbW1lbnRzICh1c2UgcmVndWxhciBjb2xvcnMgaGVyZSkgKi8KLXByZS5jb21tZW50cz5hOmxp
bmsscHJlLmNvbW1lbnRzPmE6dmlzaXRlZCB7Ci0gICAgY29sb3I6IGJsdWU7Ci19Ci0KLXByZS5j
b21tZW50cz5hOmFjdGl2ZSB7Ci0gICAgY29sb3I6IHB1cnBsZTsKLX0KSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL3JvYm90
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvcm9ib3RzLnR4dAkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvcm9ib3RzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLVVzZXItYWdlbnQ6
ICoKLURpc2FsbG93OiAvd2F0ZXJmYWxsCi1EaXNhbGxvdzogL2J1aWxkZXJzCi1EaXNhbGxvdzog
L2NoYW5nZXMKLURpc2FsbG93OiAvYnVpbGRzbGF2ZXMKLURpc2FsbG93OiAvc2NoZWR1bGVycwot
RGlzYWxsb3c6IC9vbmVfbGluZV9wZXJfYnVpbGQKLURpc2FsbG93OiAvb25lX2JveF9wZXJfYnVp
bGRlcgotRGlzYWxsb3c6IC94bWxycGMKLURpc2FsbG93OiAvZ3JpZAotRGlzYWxsb3c6IC90Z3Jp
ZAotRGlzYWxsb3c6IC9jb25zb2xlCi1EaXNhbGxvdzogL3Jlc3VsdHMKLURpc2FsbG93OiAvZGFz
aGJvYXJkCi1EaXNhbGxvdzogL0xlYWtzVmlld2VyCi1EaXNhbGxvdzogL1Rlc3RGYWlsdXJlcwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcnVu
LWJ1aWxkYm90LXRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcnVuLWJ1aWxkYm90LXRlc3QucHkJKHJldmlzaW9uIDI2
ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3J1bi1idWlsZGJvdC10ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMzQ3ICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
IwotaW1wb3J0IHN5cwotaW1wb3J0IHNpZ25hbAotaW1wb3J0IG9zCi1pbXBvcnQgYXJncGFyc2UK
LWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKLWltcG9y
dCBzb2NrZXQKLWltcG9ydCBqc29uCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgbXVsdGlwcm9j
ZXNzaW5nCi1mcm9tIHRpbWUgaW1wb3J0IHNsZWVwCi0KLXRlc3RfYnVpbGRib3RfbWFzdGVyX3Rh
YyA9ICIiIgotaW1wb3J0IG9zCi1mcm9tIHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0IHNlcnZp
Y2UKLXRyeToKLSAgICBmcm9tIGJ1aWxkYm90Lm1hc3Rlci5ib3QgaW1wb3J0IEJ1aWxkTWFzdGVy
Ci1leGNlcHQ6Ci0gICAgZnJvbSBidWlsZGJvdC5tYXN0ZXIgaW1wb3J0IEJ1aWxkTWFzdGVyCi0K
LWJhc2VkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCi1j
b25maWdmaWxlID0gcidtYXN0ZXIuY2ZnJwotCi1hcHBsaWNhdGlvbiA9IHNlcnZpY2UuQXBwbGlj
YXRpb24oJ2J1aWxkbWFzdGVyJykKLUJ1aWxkTWFzdGVyKGJhc2VkaXIsIGNvbmZpZ2ZpbGUpLnNl
dFNlcnZpY2VQYXJlbnQoYXBwbGljYXRpb24pCi0iIiIKLQotd29ya2VyX2J1aWxkYm90X21hc3Rl
cl90YWMgPSAiIiIKLWltcG9ydCBvcwotZnJvbSB0d2lzdGVkLmFwcGxpY2F0aW9uIGltcG9ydCBz
ZXJ2aWNlCi1mcm9tIGJ1aWxkc2xhdmUuYm90IGltcG9ydCBCdWlsZFNsYXZlCi0KLWJhc2VkaXIg
PSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCi1idWlsZG1hc3Rl
cl9ob3N0ID0gJ2xvY2FsaG9zdCcKLXBvcnQgPSAxNzAwMAotc2xhdmVuYW1lID0gJ3t9JwotcGFz
c3dkID0gJzEyMzQnCi1rZWVwYWxpdmUgPSA2MDAKLXVzZXB0eSA9IDEKLQotYXBwbGljYXRpb24g
PSBzZXJ2aWNlLkFwcGxpY2F0aW9uKCdidWlsZHNsYXZlJykKLUJ1aWxkU2xhdmUoYnVpbGRtYXN0
ZXJfaG9zdCwgcG9ydCwgc2xhdmVuYW1lLCBwYXNzd2QsIGJhc2VkaXIsIGtlZXBhbGl2ZSwgdXNl
cHR5KS5zZXRTZXJ2aWNlUGFyZW50KGFwcGxpY2F0aW9uKQotIiIiCi0KLQotZGVmIGNoZWNrX3Rj
cF9wb3J0X29wZW4oYWRkcmVzcywgcG9ydCk6Ci0gICAgcyA9IHNvY2tldC5zb2NrZXQoKQotICAg
IHRyeToKLSAgICAgICAgcy5jb25uZWN0KChhZGRyZXNzLCBwb3J0KSkKLSAgICAgICAgcmV0dXJu
IFRydWUKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiB1cGdyYWRl
X2RiX25lZWRlZChsb2cpOgotICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKGxvZykgYXMgZjoK
LSAgICAgICAgICAgIGZvciBsIGluIGY6Ci0gICAgICAgICAgICAgICAgaWYgJ3VwZ3JhZGUgdGhl
IGRhdGFiYXNlJyBpbiBsOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGV4
Y2VwdDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIGNy
ZWF0ZV90ZW1wZGlyKHRtcGRpcj1Ob25lKToKLSAgICBpZiB0bXBkaXIgaXMgbm90IE5vbmU6Ci0g
ICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRtcGRpcik6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCd7fSBpcyBub3QgYSBkaXJlY3RvcnknLmZvcm1hdCh0bXBkaXIpKQotICAgICAg
ICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9b3MucGF0aC5qb2luKG9zLnBhdGguYWJz
cGF0aCh0bXBkaXIpLCAndG1wJykpCi0gICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQotCi0K
LWRlZiBwcmludF9pZl9lcnJvcl9zdGRvdXRfc3RkZXJyKGNtZCwgcmV0Y29kZSwgc3Rkb3V0PU5v
bmUsIHN0ZGVycj1Ob25lLCBleHRyYW1zZz1Ob25lKToKLSAgICBpZiByZXRjb2RlICE9IDA6Ci0g
ICAgICAgIGlmIHR5cGUoY21kKSA9PSB0eXBlKFtdKToKLSAgICAgICAgICAgIGNtZCA9ICcgJy5q
b2luKGNtZCkKLSAgICAgICAgcHJpbnQoJ1dBUk5JTkc6ICJ7Y21kfSIgcmV0dXJuZWQge3JldGNv
ZGV9IHN0YXR1cyBjb2RlJy5mb3JtYXQoY21kPWNtZCwgcmV0Y29kZT1yZXRjb2RlKSkKLSAgICAg
ICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQotICAg
ICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludChzdGRlcnIpCi0g
ICAgICAgIGlmIGV4dHJhbXNnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoZXh0cmFt
c2cpCi0KLQotZGVmIHNldHVwX21hc3Rlcl93b3JrZGlyKGNvbmZpZ2RpciwgYmFzZV93b3JrZGly
KToKLSAgICBtYXN0ZXJfd29ya2RpciA9IG9zLnBhdGguam9pbihiYXNlX3dvcmtkaXIsICdtYXN0
ZXInKQotICAgIHByaW50KCdDb3B5aW5nIGZpbGVzIGZyb20ge30gdG8ge30gLi4uJy5mb3JtYXQo
Y29uZmlnZGlyLCBtYXN0ZXJfd29ya2RpcikpCi0gICAgc2h1dGlsLmNvcHl0cmVlKGNvbmZpZ2Rp
ciwgbWFzdGVyX3dvcmtkaXIpCi0gICAgcHJpbnQoJ0dlbmVyYXRpbmcgYnVpbGRib3QgZmlsZXMg
YXQge30gLi4uJy5mb3JtYXQobWFzdGVyX3dvcmtkaXIpKQotICAgIHdpdGggb3Blbihvcy5wYXRo
LmpvaW4obWFzdGVyX3dvcmtkaXIsICdidWlsZGJvdC50YWMnKSwgJ3cnKSBhcyBmOgotICAgICAg
ICBmLndyaXRlKHRlc3RfYnVpbGRib3RfbWFzdGVyX3RhYykKLSAgICBta3B3ZF9jbWQgPSBbJy4v
bWFrZV9wYXNzd29yZHNfanNvbi5weSddCi0gICAgbWtwd2RfcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4obWtwd2RfY21kLCBjd2Q9bWFzdGVyX3dvcmtkaXIsCi0gICAgICAgICAgICAgICAgc3Rk
b3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHN0ZG91
dCwgc3RkZXJyID0gbWtwd2RfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgcHJpbnRfaWZfZXJy
b3Jfc3Rkb3V0X3N0ZGVycihta3B3ZF9jbWQsIG1rcHdkX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rk
b3V0LCBzdGRlcnIpCi0gICAgcmV0dXJuIG1hc3Rlcl93b3JrZGlyCi0KLQotZGVmIHdhaXRfZm9y
X21hc3Rlcl9yZWFkeShtYXN0ZXJfd29ya2Rpcik6Ci0gICAgbWFzdGVyX3JlYWR5X2NoZWNrX2Nv
dW50ZXIgPSAwCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUob3Mu
cGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAnLm1hc3Rlci1pcy1yZWFkeScpKToKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBpZiBtYXN0ZXJfcmVhZHlfY2hlY2tfY291bnRlciA+IDYwOgot
ICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFUlJPUjogQWJvcnRpbmcgYWZ0ZXIgd2Fp
dGluZyA2MCBzZWNvbmRzIGZvciB0aGUgbWFzdGVyIHRvIHN0YXJ0LicpCi0gICAgICAgIHNsZWVw
KDEpCi0gICAgICAgIG1hc3Rlcl9yZWFkeV9jaGVja19jb3VudGVyICs9IDEKLQotCi1kZWYgc3Rh
cnRfbWFzdGVyKG1hc3Rlcl93b3JrZGlyKToKLSAgICAjIFRoaXMgaXMgc3RhcnRlZCB2aWEgbXVs
dGlwcm9jZXNzaW5nLiBXZSBzZXQgYSBuZXcgcHJvY2VzcyBncm91cCBoZXJlCi0gICAgIyB0byBi
ZSBhYmxlIHRvIHJlbGlhYmx5IGtpbGwgdGhpcyBzdWJwcm9jZXNzIGFuZCBhbGwgb2YgaXRzIGNo
aWxkIG9uIGNsZWFuLgotICAgIG9zLnNldHNpZCgpCi0gICAgYnVpbGRtYXN0ZXJsb2cgPSBvcy5w
YXRoLmpvaW4obWFzdGVyX3dvcmtkaXIsICdidWlsZG1hc3Rlci5sb2cnKQotICAgIGRidXBncmFk
ZWQgPSBGYWxzZQotICAgIHJldHJ5ID0gVHJ1ZQotICAgIGlmIGNoZWNrX3RjcF9wb3J0X29wZW4o
J2xvY2FsaG9zdCcsIDg3MTApOgotICAgICAgICBwcmludCgnRVJST1I6IFRoZXJlIGlzIHNvbWUg
cHJvY2VzcyBhbHJlYWR5IGxpc3RlbmluZyBpbiBwb3J0IDgxNzAnKQotICAgICAgICByZXR1cm4g
MQotICAgIHdoaWxlIHJldHJ5OgotICAgICAgICByZXRyeSA9IEZhbHNlCi0gICAgICAgIHByaW50
KCdTdGFydGluZyB0aGUgdHdpc3RkIHByb2Nlc3MgLi4uJykKLSAgICAgICAgdHdpc3RkX2NtZCA9
IFsndHdpc3RkJywgJy1sJywgYnVpbGRtYXN0ZXJsb2csICctbm95JywgJ2J1aWxkYm90LnRhYydd
Ci0gICAgICAgIHR3aXN0ZF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih0d2lzdGRfY21kLCBj
d2Q9bWFzdGVyX3dvcmtkaXIsCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgd2hpbGUgdHdpc3RkX3By
b2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBjaGVja190Y3BfcG9ydF9vcGVu
KCdsb2NhbGhvc3QnLCA4NzEwKToKLSAgICAgICAgICAgICAgICBwcmludCgnVGVzdCBidWlsZG1h
c3RlciByZWFkeSEuXG5cbicKLSAgICAgICAgICAgICAgICAgICAgICArICcgLSBTZWUgYnVpbGRt
YXN0ZXIgbG9nOlxuJwotICAgICAgICAgICAgICAgICAgICAgICsgJyAgICAgdGFpbCAtZiB7fVxu
Jy5mb3JtYXQoYnVpbGRtYXN0ZXJsb2cpCi0gICAgICAgICAgICAgICAgICAgICAgKyAnIC0gT3Bl
biBhIGJyb3dzZXIgdG86XG4nCi0gICAgICAgICAgICAgICAgICAgICAgKyAnICAgICBodHRwOi8v
bG9jYWxob3N0Ojg3MTBcbicKLSAgICAgICAgICAgICAgICAgICAgICArICcgLSBDcmVkZW50aWFs
cyBmb3IgdHJpZ2dlcmluZyBtYW51YWwgYnVpbGRzOlxuJwotICAgICAgICAgICAgICAgICAgICAg
ICsgJyAgICAgbG9naW46ICAgICBjb21taXR0ZXJAd2Via2l0Lm9yZ1xuJwotICAgICAgICAgICAg
ICAgICAgICAgICsgJyAgICAgcGFzc3dvcmQ6ICBjb21taXR0ZXJwYXNzd29yZFxuJykKLSAgICAg
ICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAnLm1hc3Rl
ci1pcy1yZWFkeScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJ3Jl
YWR5JykKLSAgICAgICAgICAgICAgICB0d2lzdGRfcHJvY2Vzcy53YWl0KCkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gMAotICAgICAgICAgICAgc2xlZXAoMSkKLSAgICAgICAgc3Rkb3V0LCBzdGRl
cnIgPSB0d2lzdGRfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGlmIHR3aXN0ZF9wcm9j
ZXNzLnJldHVybmNvZGUgPT0gMCBhbmQgdXBncmFkZV9kYl9uZWVkZWQoYnVpbGRtYXN0ZXJsb2cp
IGFuZCBub3QgZGJ1cGdyYWRlZDoKLSAgICAgICAgICAgIHJldHJ5ID0gVHJ1ZQotICAgICAgICAg
ICAgZGJ1cGdyYWRlZCA9IFRydWUKLSAgICAgICAgICAgIHByaW50KCdVcGdyYWRpbmcgdGhlIGRh
dGFiYXNlIC4uLicpCi0gICAgICAgICAgICB1cGdyYWRlX2NtZCA9IFsnYnVpbGRib3QnLCAndXBn
cmFkZS1tYXN0ZXInLCBtYXN0ZXJfd29ya2Rpcl0KLSAgICAgICAgICAgIHVwZ3JhZGVfcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4odXBncmFkZV9jbWQsIGN3ZD1tYXN0ZXJfd29ya2RpciwKLSAg
ICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nl
c3MuU1RET1VUKQotICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSB1cGdyYWRlX3Byb2Nlc3Mu
Y29tbXVuaWNhdGUoKQotICAgICAgICAgICAgcHJpbnRfaWZfZXJyb3Jfc3Rkb3V0X3N0ZGVycih1
cGdyYWRlX2NtZCwgdXBncmFkZV9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnRfaWZfZXJyb3Jfc3Rkb3V0X3N0ZGVycih0
d2lzdGRfY21kLCB0d2lzdGRfcHJvY2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVyciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrIHRoZSBsb2cgYXQg
e30nLmZvcm1hdChidWlsZG1hc3RlcmxvZykpCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgZ2V0X2xp
c3Rfd29ya2VycyhtYXN0ZXJfd29ya2Rpcik6Ci0gICAgcGFzc3dvcmRfbGlzdCA9IG9zLnBhdGgu
am9pbihtYXN0ZXJfd29ya2RpciwgJ3Bhc3N3b3Jkcy5qc29uJykKLSAgICB3aXRoIG9wZW4ocGFz
c3dvcmRfbGlzdCkgYXMgZjoKLSAgICAgICAgcGFzc3dvcmRzID0ganNvbi5sb2FkKGYpCi0gICAg
bGlzdF93b3JrZXJzID0gW10KLSAgICBmb3Igd29ya2VyIGluIHBhc3N3b3JkczoKLSAgICAgICAg
bGlzdF93b3JrZXJzLmFwcGVuZChzdHIod29ya2VyKSkKLSAgICByZXR1cm4gbGlzdF93b3JrZXJz
Ci0KLQotZGVmIHN0YXJ0X3dvcmtlcihiYXNlX3dvcmtkaXIsIHdvcmtlcik6Ci0gICAgIyBUaGlz
IGlzIHN0YXJ0ZWQgdmlhIG11bHRpcHJvY2Vzc2luZy4gV2Ugc2V0IGEgbmV3IHByb2Nlc3MgZ3Jv
dXAgaGVyZQotICAgICMgdG8gYmUgYWJsZSB0byByZWxpYWJseSBraWxsIHRoaXMgc3VicHJvY2Vz
cyBhbmQgYWxsIG9mIGl0cyBjaGlsZCBvbiBjbGVhbi4KLSAgICBvcy5zZXRzaWQoKQotICAgIHdv
cmtlcl93b3JrZGlyID0gb3MucGF0aC5qb2luKGJhc2Vfd29ya2Rpciwgd29ya2VyKQotICAgIG9z
Lm1rZGlyKHdvcmtlcl93b3JrZGlyKQotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4od29ya2Vy
X3dvcmtkaXIsICdidWlsZGJvdC50YWMnKSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRlKHdv
cmtlcl9idWlsZGJvdF9tYXN0ZXJfdGFjLmZvcm1hdCh3b3JrZXIpKQotICAgIHR3aXN0ZF9jbWQg
PSBbJ3R3aXN0ZCcsICctbCcsICd3b3JrZXIubG9nJywgJy1ub3knLCAnYnVpbGRib3QudGFjJ10K
LSAgICB0d2lzdGRfd29ya2VyX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHR3aXN0ZF9jbWQs
IGN3ZD13b3JrZXJfd29ya2RpciwKLSAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3Rk
ZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHRyeToKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIg
PSB0d2lzdGRfd29ya2VyX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGV4Y2VwdDoKLSAgICAg
ICAgdHdpc3RkX3dvcmtlcl9wcm9jZXNzLmtpbGwoKQotICAgICAgICByZXR1cm4KLSAgICBwcmlu
dF9pZl9lcnJvcl9zdGRvdXRfc3RkZXJyKHR3aXN0ZF9jbWQsIHR3aXN0ZF93b3JrZXJfcHJvY2Vz
cy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdDaGVjayB0aGUgbG9nIGF0IHt9Jy5mb3JtYXQob3MucGF0aC5qb2luKHdvcmtlcl93
b3JrZGlyLCAnd29ya2VyLmxvZycpKSkKLQotCi1kZWYgY2xlYW4odGVtcF9kaXIpOgotICAgIGlm
IG9zLnBhdGguaXNkaXIodGVtcF9kaXIpOgotICAgICAgICBwcmludCgnXG5cbkNsZWFuaW5nIHt9
IC4uLiBcbicuZm9ybWF0KHRlbXBfZGlyKSkKLSAgICAgICAgIyBzaHV0aWwucm10cmVlIGNhbiBm
YWlsIGlmIHdlIGhvbGQgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3Igb24gdGVtcF9kaXIKLSAgICAg
ICAgIyAod2hpY2ggaXMgdmVyeSBsaWtlbHkgd2hlbiBjbGVhbmluZykgb3IgaWYgdGVtcF9kaXIg
aXMgYSBORlMgbW91bnQuCi0gICAgICAgICMgVXNlIHJtIGluc3RlYWQgdGhhdCBhbHdheXMgd29y
a3MuCi0gICAgICAgIHJtID0gc3VicHJvY2Vzcy5Qb3BlbihbJ3JtJywgJy1mcicsIHRlbXBfZGly
XSkKLSAgICAgICAgcm0ud2FpdCgpCi0KLQotZGVmIGNtZF9leGlzdHMoY21kKToKLSAgICByZXR1
cm4gYW55KG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4ocGF0aCwgY21kKSwgb3MuWF9PSykKLSAgICAg
ICAgICAgICAgIGZvciBwYXRoIGluIG9zLmVudmlyb25bJ1BBVEgnXS5zcGxpdChvcy5wYXRoc2Vw
KSkKLQotCi1kZWYgY2hlY2tfYnVpbGRib3RfaW5zdGFsbGVkKCk6Ci0gICAgaWYgY21kX2V4aXN0
cygndHdpc3RkJykgYW5kIGNtZF9leGlzdHMoJ2J1aWxkYm90Jyk6Ci0gICAgICAgIHJldHVybgot
ICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQnVpbGRib3QgaXMgbm90IGluc3RhbGxlZC4nKQotCi0K
LWRlZiBzZXR1cF92aXJ0dWFsZW52KGJhc2Vfd29ya2Rpcl90ZW1wKToKLSAgICBpZiBjbWRfZXhp
c3RzKCd2aXJ0dWFsZW52Jyk6Ci0gICAgICAgIHByaW50KCdTZXR0aW5nIHVwIHZpcnR1YWxlbnYg
YXQge30gLi4uICcuZm9ybWF0KGJhc2Vfd29ya2Rpcl90ZW1wKSkKLSAgICAgICAgdmlydHVhbGVu
dl9jbWQgPSBbJ3ZpcnR1YWxlbnYnLCAnLXAnLCAncHl0aG9uMicsICd2ZW52J10KLSAgICAgICAg
dmlydHVhbGVudl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih2aXJ0dWFsZW52X2NtZCwgY3dk
PWJhc2Vfd29ya2Rpcl90ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RE
T1VUKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHZpcnR1YWxlbnZfcHJvY2Vzcy5jb21tdW5p
Y2F0ZSgpCi0gICAgICAgIHByaW50X2lmX2Vycm9yX3N0ZG91dF9zdGRlcnIodmlydHVhbGVudl9j
bWQsIHZpcnR1YWxlbnZfcHJvY2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVycikKLSAgICAg
ICAgdmlydHVhbGVudl9iaW5kaXIgPSBvcy5wYXRoLmpvaW4oYmFzZV93b3JrZGlyX3RlbXAsICd2
ZW52JywgJ2JpbicpCi0gICAgICAgIHZpcnR1YWxlbnZfcGlwID0gb3MucGF0aC5qb2luKHZpcnR1
YWxlbnZfYmluZGlyLCAncGlwJykKLSAgICAgICAgaWYgbm90IG9zLmFjY2Vzcyh2aXJ0dWFsZW52
X3BpcCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBwcmludCgnU29tZXRoaW5nIHdlbnQgd3Jvbmcg
c2V0dGluZyB1cCB2aXJ0dWFsZW52JwotICAgICAgICAgICAgICAgICAgJ1RyeWluZyB0byBjb250
aW51ZSB1c2luZyB0aGUgc3lzdGVtIHZlcnNpb24gb2YgYnVpbGRib3QnKQotICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIHByaW50KCdTZXR0aW5nIHVwIGJ1aWxkYm90IGRlcGVuZGVuY2llcyBv
biB0aGUgdmlydHVhbGVudiAuLi4gJykKLSAgICAgICAgIyBUaGUgaWRlYSBpcyB0byBpbnN0YWxs
IHRoZSB2ZXJ5IHNhbWUgdmVyc2lvbiBvZiBidWlsZGJvdCBhbmQgaXRzCi0gICAgICAgICMgZGVw
ZW5kZW5jaWVzIHRoYW4gdGhlIG9uZXMgdXNlZCBmb3IgcnVubmluZyBodHRwczovL2J1aWxkLndl
YmtpdC5vcmcvYWJvdXQKLSAgICAgICAgcGlwX2NtZCA9IFt2aXJ0dWFsZW52X3BpcCwgJ2luc3Rh
bGwnLAotICAgICAgICAgICAgICAgICAgICAnYnVpbGRib3Q9PTAuOC42cDEnLAotICAgICAgICAg
ICAgICAgICAgICAnYnVpbGRib3Qtc2xhdmU9PTAuOC42cDEnLAotICAgICAgICAgICAgICAgICAg
ICAndHdpc3RlZD09MTIuMS4wJywKLSAgICAgICAgICAgICAgICAgICAgJ2ppbmphMj09Mi42JywK
LSAgICAgICAgICAgICAgICAgICAgJ3NxbGFsY2hlbXk9PTAuNy44JywKLSAgICAgICAgICAgICAg
ICAgICAgJ3NxbGFsY2hlbXktbWlncmF0ZT09MC4xMi4wJ10KLSAgICAgICAgcGlwX3Byb2Nlc3Mg
PSBzdWJwcm9jZXNzLlBvcGVuKHBpcF9jbWQsIGN3ZD1iYXNlX3dvcmtkaXJfdGVtcCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwaXBf
cHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHByaW50X2lmX2Vycm9yX3N0ZG91dF9zdGRl
cnIocGlwX2NtZCwgcGlwX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0LCBzdGRlcnIpCi0gICAg
ICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IHZpcnR1YWxlbnZfYmluZGlyICsgJzonICsgb3MuZW52
aXJvblsnUEFUSCddCi0gICAgICAgIHJldHVybgotICAgIHByaW50KCdXQVJOSU5HOiB2aXJ0dWFs
ZW52IG5vdCBpbnN0YWxsZWQuICcKLSAgICAgICAgICAnVHJ5aW5nIHRvIGNvbnRpbnVlIHVzaW5n
IHRoZSBzeXN0ZW0gdmVyc2lvbiBvZiBidWlsZGJvdCcpCi0KLQotZGVmIGNvbmZpZ2Rpcl9pc192
YWxpZChjb25maWdkaXIpOgotICAgIHJldHVybihvcy5wYXRoLmlzZGlyKGNvbmZpZ2RpcikgYW5k
Ci0gICAgICAgICAgIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihjb25maWdkaXIsICdjb25m
aWcuanNvbicpKSBhbmQKLSAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGNv
bmZpZ2RpciwgJ21hc3Rlci5jZmcnKSkgYW5kCi0gICAgICAgICAgIG9zLmFjY2Vzcyhvcy5wYXRo
LmpvaW4oY29uZmlnZGlyLCAnbWFrZV9wYXNzd29yZHNfanNvbi5weScpLCBvcy5YX09LKSkKLQot
Ci1kZWYgbWFpbihjb25maWdkaXIsIGJhc2V0ZW1wZGlyPU5vbmUsIG5vX2NsZWFuPUZhbHNlLCBu
b193b3JrZXJzPUZhbHNlLCB1c2Vfc3lzdGVtX3ZlcnNpb249RmFsc2UpOgotICAgIGNvbmZpZ2Rp
ciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLnJlYWxwYXRoKGNvbmZpZ2RpcikpCi0gICAgaWYg
bm90IGNvbmZpZ2Rpcl9pc192YWxpZChjb25maWdkaXIpOgotICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdUaGUgY29uZmlnZGlyIHt9IGRvbnQgY29udGFpbnMgdGhlIGJ1aWxkbWFzdGVyIGZpbGVz
IGV4cGVjdGVkIGJ5IHRoaXMgc2NyaXB0Jy5mb3JtYXQoY29uZmlnZGlyKSkKLSAgICBiYXNlX3dv
cmtkaXJfdGVtcCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLnJlYWxwYXRoKGNyZWF0ZV90ZW1w
ZGlyKGJhc2V0ZW1wZGlyKSkpCi0gICAgaWYgYmFzZV93b3JrZGlyX3RlbXAuc3RhcnRzd2l0aChj
b25maWdkaXIpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgdGVtcG9yYWwgd29ya2lu
ZyBkaXJlY3Rvcnkge30gY2FudCBiZSBsb2NhdGVkIGluc2lkZSBjb25maWdkaXIge30nLmZvcm1h
dChiYXNlX3dvcmtkaXJfdGVtcCwgY29uZmlnZGlyKSkKLSAgICB0cnk6Ci0gICAgICAgIGlmIG5v
dCB1c2Vfc3lzdGVtX3ZlcnNpb246Ci0gICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KGJhc2Vf
d29ya2Rpcl90ZW1wKQotICAgICAgICBjaGVja19idWlsZGJvdF9pbnN0YWxsZWQoKQotICAgICAg
ICBtYXN0ZXJfd29ya2RpciA9IHNldHVwX21hc3Rlcl93b3JrZGlyKGNvbmZpZ2RpciwgYmFzZV93
b3JrZGlyX3RlbXApCi0gICAgICAgIG1hc3Rlcl9ydW5uZXIgPSBtdWx0aXByb2Nlc3NpbmcuUHJv
Y2Vzcyh0YXJnZXQ9c3RhcnRfbWFzdGVyLCBhcmdzPShtYXN0ZXJfd29ya2RpciwpKQotICAgICAg
ICBtYXN0ZXJfcnVubmVyLnN0YXJ0KCkKLSAgICAgICAgd2FpdF9mb3JfbWFzdGVyX3JlYWR5KG1h
c3Rlcl93b3JrZGlyKQotICAgICAgICBpZiBub193b3JrZXJzOgotICAgICAgICAgICAgcHJpbnQo
JyAtIFRvIG1hbnVhbGx5IGF0dGFjaCBhIGJ1aWxkIHdvcmtlciB1c2UgdGhpcyBpbmZvOlxuJwot
ICAgICAgICAgICAgICAgICAgKyAnICAgICBUQ1AgcG9ydCBmb3IgdGhlIHdvcmtlci10by1tYXN0
ZXIgY29ubmVjdGlvbjogMTcwMDBcbicKLSAgICAgICAgICAgICAgICAgICsgJyAgICAgd29ya2Vy
LWlkOiB0aGUgb25lIGRlZmluZWQgYXQge31cbicuZm9ybWF0KG9zLnBhdGguam9pbihtYXN0ZXJf
d29ya2RpciwgJ3Bhc3N3b3Jkcy5qc29uJykpCi0gICAgICAgICAgICAgICAgICArICcgICAgIHBh
c3N3b3JkOiAgMTIzNFxuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdvcmtlcl9ydW5u
ZXJzID0gW10KLSAgICAgICAgICAgIGZvciB3b3JrZXIgaW4gZ2V0X2xpc3Rfd29ya2VycyhtYXN0
ZXJfd29ya2Rpcik6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3J1bm5lciA9IG11bHRpcHJvY2Vz
c2luZy5Qcm9jZXNzKHRhcmdldD1zdGFydF93b3JrZXIsIGFyZ3M9KGJhc2Vfd29ya2Rpcl90ZW1w
LCB3b3JrZXIsKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJfcnVubmVyLnN0YXJ0KCkKLSAgICAg
ICAgICAgICAgICB3b3JrZXJfcnVubmVycy5hcHBlbmQod29ya2VyX3J1bm5lcikKLSAgICAgICAg
ICAgIHByaW50KCcgLSBXb3JrZXJzIHN0YXJ0ZWQhLlxuJwotICAgICAgICAgICAgICAgICAgKyAn
ICAgICBDaGVjayB0aGUgbG9nIGZvciBlYWNoIG9uZSBhdCB7fS8ke3dvcmtlci1uYW1lLWlkfS93
b3JrZXIubG9nXG4nLmZvcm1hdChiYXNlX3dvcmtkaXJfdGVtcCkKLSAgICAgICAgICAgICAgICAg
ICsgJyAgICAgdGFpbCAtZiB7fS8qL3dvcmtlci5sb2dcbicuZm9ybWF0KGJhc2Vfd29ya2Rpcl90
ZW1wKSkKLSAgICAgICAgICAgIGZvciB3b3JrZXJfcnVubmVyIGluIHdvcmtlcl9ydW5uZXJzOgot
ICAgICAgICAgICAgICAgIHdvcmtlcl9ydW5uZXIuam9pbigpCi0gICAgICAgIG1hc3Rlcl9ydW5u
ZXIuam9pbigpCi0gICAgZXhjZXB0OgotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkKLSAg
ICBmaW5hbGx5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRoZSBjaGlsZHJlbiBtYXkg
ZXhpdCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlIGtpbGwgY2FsbC4KLSAgICAgICAgICAgICMg
SWdub3JlIGFueSBleGNlcHRpb24gcmFpc2VkIGhlcmUuCi0gICAgICAgICAgICBmb3IgYyBpbiBt
dWx0aXByb2Nlc3NpbmcuYWN0aXZlX2NoaWxkcmVuKCk6Ci0gICAgICAgICAgICAgICAgIyBTZW5k
IHRoZSBzaWduYWwgdG8gdGhlIHdob2xlIHByb2Nlc3MgZ3JvdXAuCi0gICAgICAgICAgICAgICAg
IyBPdGhlcndpc2Ugc29tZSB0d2lzdGQgc3ViLWNoaWxkcyBjYW4gcmVtYWluIGFsaXZlLgotICAg
ICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKGMucGlkKSwgc2lnbmFsLlNJR0tJTEwp
Ci0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgbm90IG5vX2Ns
ZWFuOgotICAgICAgICAgICAgY2xlYW4oYmFzZV93b3JrZGlyX3RlbXApCi0gICAgICAgIHN5cy5l
eGl0KDApCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwYXJzZXIgPSBhcmdw
YXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb25maWct
ZGlyJywgaGVscD0nUGF0aCB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBidWlsZCBtYXN0ZXIgY29u
ZmlnIGZpbGVzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnRGVmYXVscyB0byB0aGUgZGly
ZWN0b3J5IHdoZXJlIHRoaXMgc2NyaXB0IGlzIGxvY2F0ZWQuJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2NvbmZpZ2RpcicsIHR5cGU9c3RyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoJy0tYmFzZS10ZW1wLWRpcicsIGhlbHA9J1BhdGggd2hlcmUgdGhlIHRlbXBvcmFsIHdv
cmtpbmcgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZC4gJwotICAgICAgICAgICAgICAgICAgICAg
ICAgJ05vdGU6IFRvIHRyaWdnZXIgdGVzdCBidWlsZHMgd2l0aCB0aGUgdGVzdCB3b3JrZXJzIHlv
dSBuZWVkIGVub3VnaCBmcmVlIHNwYWNlIG9uIHRoYXQgcGF0aC4nLAotICAgICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nYmFzZXRlbXBkaXInLCBkZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQotICAg
IHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tY2xlYW4nLCBoZWxwPSdEbyBub3QgY2xlYW4gdGhl
IHRlbXBvcmFsIHdvcmtpbmcgZGlyIG9uIGV4aXQuJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J25vX2NsZWFuJywgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KCctLW5vLXdvcmtlcnMnLCBoZWxwPSdEbyBub3Qgc3RhcnQgdGhlIHRlc3Qgd29ya2Vy
cy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbm9fd29ya2VycycsIGFjdGlvbj0n
c3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11c2Utc3lzdGVtLXZlcnNp
b24nLCBoZWxwPSdJbnN0ZWFkIG9mIHNldHRpbmcgdXAgYSB2aXJ0dWFsZW52IHdpdGggdGhlIGJ1
aWxkYm90IHZlcnNpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZWQgYnkgYnVpbGQu
d2Via2l0Lm9yZywgdXNlIHRoZSBidWlsZGJvdCB2ZXJzaW9uIGluc3RhbGxlZCBvbiB0aGlzIHN5
c3RlbS4nLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3N5c3RlbV92ZXJzaW9u
JywgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQot
ICAgIG1haW4oYXJncy5jb25maWdkaXIsIGFyZ3MuYmFzZXRlbXBkaXIsIGFyZ3Mubm9fY2xlYW4s
IGFyZ3Mubm9fd29ya2VycywgYXJncy51c2Vfc3lzdGVtX3ZlcnNpb24pCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9y
dW4tYnVpbGRib3QtdGVzdC5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMj
IC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvc3RlcHMucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CShub25leGlzdGVudCkKQEAgLTEsMTA3
MyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
ZnJvbSBidWlsZGJvdC5wcm9jZXNzIGltcG9ydCBidWlsZHN0ZXAsIGZhY3RvcnksIHByb3BlcnRp
ZXMKLWZyb20gYnVpbGRib3Quc3RlcHMgaW1wb3J0IG1hc3Rlciwgc2hlbGwsIHNvdXJjZSwgdHJh
bnNmZXIsIHRyaWdnZXIKLWZyb20gYnVpbGRib3Quc3RhdHVzLmJ1aWxkZXIgaW1wb3J0IFNVQ0NF
U1MsIEZBSUxVUkUsIFdBUk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04KLQotZnJvbSB0d2lzdGVk
LmludGVybmV0IGltcG9ydCBkZWZlcgotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNv
Y2tldAotaW1wb3J0IGpzb24KLWltcG9ydCBjU3RyaW5nSU8KLWltcG9ydCB1cmxsaWIKLQotQVBQ
TEVfV0VCS0lUX0FXU19QUk9YWSA9ICJodHRwOi8vcHJveHkwMS53ZWJraXQub3JnOjMxMjgiCi1T
M1VSTCA9ICJodHRwczovL3MzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tLyIKLVdpdGhQcm9wZXJ0
aWVzID0gcHJvcGVydGllcy5XaXRoUHJvcGVydGllcwotUkVTVUxUU19XRUJLSVRfVVJMID0gJ2h0
dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnJwotUkVTVUxUU19TRVJWRVJfQVBJX0tFWSA9ICdSRVNV
TFRTX1NFUlZFUl9BUElfS0VZJwotQlVJTERfV0VCS0lUX1VSTCA9IHNvY2tldC5nZXRob3N0bmFt
ZSgpLnN0cmlwKCkKLQotCi1jbGFzcyBUZXN0V2l0aEZhaWx1cmVDb3VudChzaGVsbC5UZXN0KToK
LSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCB0ZXN0JXMgZmFpbGVkIgotCi0gICAg
ZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIGRl
ZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKLSAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5k
Q29tcGxldGUoc2VsZiwgY21kKQotICAgICAgICBzZWxmLmZhaWxlZFRlc3RDb3VudCA9IHNlbGYu
Y291bnRGYWlsdXJlcyhjbWQpCi0gICAgICAgIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZpeCA9
ICIiIGlmIHNlbGYuZmFpbGVkVGVzdENvdW50ID09IDEgZWxzZSAicyIKLQotICAgIGRlZiBldmFs
dWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgaWYgc2VsZi5mYWlsZWRUZXN0Q291bnQ6
Ci0gICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgot
ICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0g
ICAgZGVmIGdldFRleHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
Z2V0VGV4dDIoY21kLCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwgcmVz
dWx0cyk6Ci0gICAgICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgc2VsZi5mYWlsZWRUZXN0
Q291bnQ6Ci0gICAgICAgICAgICByZXR1cm4gW3NlbGYuZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcg
JSAoc2VsZi5mYWlsZWRUZXN0Q291bnQsIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZpeCldCi0K
LSAgICAgICAgcmV0dXJuIFtzZWxmLm5hbWVdCi0KLQotY2xhc3MgQ29uZmlndXJlQnVpbGQoYnVp
bGRzdGVwLkJ1aWxkU3RlcCk6Ci0gICAgbmFtZSA9ICJjb25maWd1cmUtYnVpbGQiCi0gICAgZGVz
Y3JpcHRpb24gPSBbImNvbmZpZ3VyaW5nIGJ1aWxkIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBb
ImNvbmZpZ3VyZWQgYnVpbGQiXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBj
b25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmUsIGJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3VtZW50
cywgZGV2aWNlX21vZGVsLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBidWlsZHN0ZXAuQnVp
bGRTdGVwLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5wbGF0
Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIGlmIHBsYXRmb3JtICE9ICdqc2Mtb25seSc6Ci0gICAg
ICAgICAgICBzZWxmLnBsYXRmb3JtID0gcGxhdGZvcm0uc3BsaXQoJy0nLCAxKVswXQotICAgICAg
ICBzZWxmLmZ1bGxQbGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIHNlbGYuY29uZmlndXJhdGlv
biA9IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBhcmNoaXRlY3R1
cmUKLSAgICAgICAgc2VsZi5idWlsZE9ubHkgPSBidWlsZE9ubHkKLSAgICAgICAgc2VsZi5hZGRp
dGlvbmFsQXJndW1lbnRzID0gYWRkaXRpb25hbEFyZ3VtZW50cwotICAgICAgICBzZWxmLmRldmlj
ZV9tb2RlbCA9IGRldmljZV9tb2RlbAotICAgICAgICBzZWxmLmFkZEZhY3RvcnlBcmd1bWVudHMo
cGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlPWFyY2hpdGVjdHVyZSwgYnVpbGRPbmx5PWJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3VtZW50
cz1hZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWw9ZGV2aWNlX21vZGVsKQotCi0gICAg
ZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJwbGF0Zm9ybSIsIHNl
bGYucGxhdGZvcm0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImZ1bGxQbGF0Zm9ybSIsIHNl
bGYuZnVsbFBsYXRmb3JtKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJjb25maWd1cmF0aW9u
Iiwgc2VsZi5jb25maWd1cmF0aW9uKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJhcmNoaXRl
Y3R1cmUiLCBzZWxmLmFyY2hpdGVjdHVyZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgiYnVp
bGRPbmx5Iiwgc2VsZi5idWlsZE9ubHkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImFkZGl0
aW9uYWxBcmd1bWVudHMiLCBzZWxmLmFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoImRldmljZV9tb2RlbCIsIHNlbGYuZGV2aWNlX21vZGVsKQotICAgICAgICBz
ZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUp
Ci0KLQotY2xhc3MgQ2hlY2tPdXRTb3VyY2Uoc291cmNlLlNWTik6Ci0gICAgbW9kZSA9ICJ1cGRh
dGUiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3Nb
J2Jhc2VVUkwnXSA9ICJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LyIK
LSAgICAgICAga3dhcmdzWydkZWZhdWx0QnJhbmNoJ10gPSAidHJ1bmsiCi0gICAgICAgIGt3YXJn
c1snbW9kZSddID0gc2VsZi5tb2RlCi0gICAgICAgIHNvdXJjZS5TVk4uX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpCi0KLQotY2xhc3MgSW5zdGFsbFdpbjMyRGVwZW5kZW5jaWVzKHNoZWxsLkNvbXBp
bGUpOgotICAgIGRlc2NyaXB0aW9uID0gWyJpbnN0YWxsaW5nIGRlcGVuZGVuY2llcyJdCi0gICAg
ZGVzY3JpcHRpb25Eb25lID0gWyJpbnN0YWxsZWQgZGVwZW5kZW5jaWVzIl0KLSAgICBjb21tYW5k
ID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWF1eGlsaWFyeS1saWJz
Il0KLQotCi1jbGFzcyBLaWxsT2xkUHJvY2Vzc2VzKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUg
PSAia2lsbC1vbGQtcHJvY2Vzc2VzIgotICAgIGRlc2NyaXB0aW9uID0gWyJraWxsaW5nIG9sZCBw
cm9jZXNzZXMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsia2lsbGVkIG9sZCBwcm9jZXNzZXMi
XQotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tp
bGwtb2xkLXByb2Nlc3NlcyIsICJidWlsZGJvdCJdCi0KLQotY2xhc3MgVHJpZ2dlckNyYXNoTG9n
U3VibWlzc2lvbihzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gInRyaWdnZXItY3Jhc2gtbG9n
LXN1Ym1pc3Npb24iCi0gICAgZGVzY3JpcHRpb24gPSBbInRyaWdnZXJpbmcgY3Jhc2ggbG9nIHN1
Ym1pc3Npb24iXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsidHJpZ2dlcmVkIGNyYXNoIGxvZyBz
dWJtaXNzaW9uIl0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uIl0KLQotCi1jbGFzcyBXYWl0Rm9y
Q3Jhc2hDb2xsZWN0aW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAid2FpdC1mb3ItY3Jh
c2gtY29sbGVjdGlvbiIKLSAgICBkZXNjcmlwdGlvbiA9IFsid2FpdGluZyBmb3IgY3Jhc2ggY29s
bGVjdGlvbiB0byBxdWllc2NlIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImNyYXNoIGNvbGxl
Y3Rpb24gaGFzIHF1aWVzY2VkIl0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC93YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uIiwgIi0tdGltZW91dCIs
IHN0cig1ICogNjApXQotCi0KLWNsYXNzIENsZWFuQnVpbGRJZlNjaGVkdWxlZChzaGVsbC5Db21w
aWxlKToKLSAgICBuYW1lID0gImRlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnkiCi0gICAgZGVz
Y3JpcHRpb24gPSBbImRlbGV0aW5nIFdlYktpdEJ1aWxkIGRpcmVjdG9yeSJdCi0gICAgZGVzY3Jp
cHRpb25Eb25lID0gWyJkZWxldGVkIFdlYktpdEJ1aWxkIGRpcmVjdG9yeSJdCi0gICAgY29tbWFu
ZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQiLCBX
aXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0
aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIGlmIG5vdCBzZWxmLmdldFByb3BlcnR5KCdpc19jbGVhbicpOgotICAgICAgICAgICAgc2Vs
Zi5oaWRlU3RlcElmID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIFNLSVBQRUQKLSAgICAgICAg
cmV0dXJuIHNoZWxsLkNvbXBpbGUuc3RhcnQoc2VsZikKLQotCi1jbGFzcyBEZWxldGVTdGFsZUJ1
aWxkRmlsZXMoc2hlbGwuQ29tcGlsZSk6Ci0gICAgbmFtZSA9ICJkZWxldGUtc3RhbGUtYnVpbGQt
ZmlsZXMiCi0gICAgZGVzY3JpcHRpb24gPSBbImRlbGV0aW5nIHN0YWxlIGJ1aWxkIGZpbGVzIl0K
LSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRlbGV0ZWQgc3RhbGUgYnVpbGQgZmlsZXMiXQotICAg
IGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2RlbGV0ZS1z
dGFsZS1idWlsZC1maWxlcyIsIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRm
b3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRl
ZiBzdGFydChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5nZXRQcm9wZXJ0eSgnaXNfY2xlYW4nKTog
ICMgTm90aGluZyB0byBiZSBkb25lIGlmIFdlYktpdEJ1aWxkIGhhZCBiZWVuIHJlbW92ZWQuCi0g
ICAgICAgICAgICBzZWxmLmhpZGVTdGVwSWYgPSBUcnVlCi0gICAgICAgICAgICByZXR1cm4gU0tJ
UFBFRAotICAgICAgICByZXR1cm4gc2hlbGwuQ29tcGlsZS5zdGFydChzZWxmKQotCi0KLWNsYXNz
IEluc3RhbGxXaW5DYWlyb0RlcGVuZGVuY2llcyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5h
bWUgPSAnd2luY2Fpcm8tcmVxdWlyZW1lbnRzJwotICAgIGRlc2NyaXB0aW9uID0gWyd1cGRhdGlu
ZyB3aW5jYWlybyBkZXBlbmRlbmNpZXMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsndXBkYXRl
ZCB3aW5jYWlybyBkZXBlbmRlbmNpZXMnXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuL1Rv
b2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC13aW5jYWlyby1saWJzLnB5J10KLSAgICBoYWx0T25G
YWlsdXJlID0gVHJ1ZQotCi0KLWNsYXNzIEluc3RhbGxHdGtEZXBlbmRlbmNpZXMoc2hlbGwuU2hl
bGxDb21tYW5kKToKLSAgICBuYW1lID0gImpoYnVpbGQiCi0gICAgZGVzY3JpcHRpb24gPSBbInVw
ZGF0aW5nIGd0ayBkZXBlbmRlbmNpZXMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsidXBkYXRl
ZCBndGsgZGVwZW5kZW5jaWVzIl0KLSAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2Ny
aXB0cy91cGRhdGUtd2Via2l0Z3RrLWxpYnMiLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3Vy
YXRpb24pcyIpXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLQotY2xhc3MgSW5zdGFsbFdw
ZURlcGVuZGVuY2llcyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAiamhidWlsZCIK
LSAgICBkZXNjcmlwdGlvbiA9IFsidXBkYXRpbmcgd3BlIGRlcGVuZGVuY2llcyJdCi0gICAgZGVz
Y3JpcHRpb25Eb25lID0gWyJ1cGRhdGVkIHdwZSBkZXBlbmRlbmNpZXMiXQotICAgIGNvbW1hbmQg
PSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXR3cGUtbGlicyIsIFdpdGhQ
cm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRy
dWUKLQotCi1kZWYgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzdGVwLCBwbGF0Zm9ybSwgZnVsbFBs
YXRmb3JtKToKLSAgICBpZiBwbGF0Zm9ybSBub3QgaW4gKCdndGsnLCAnd2luY2Fpcm8nLCAnaW9z
JywgJ2pzYy1vbmx5JywgJ3dwZScsICdwbGF5c3RhdGlvbicsICd0dm9zJywgJ3dhdGNob3MnLCk6
Ci0gICAgICAgIHJldHVybgotICAgIGlmICdzaW11bGF0b3InIGluIGZ1bGxQbGF0Zm9ybToKLSAg
ICAgICAgcGxhdGZvcm0gPSBwbGF0Zm9ybSArICctc2ltdWxhdG9yJwotICAgIGVsaWYgcGxhdGZv
cm0gaW4gWydpb3MnLCAndHZvcycsICd3YXRjaG9zJ106Ci0gICAgICAgIHBsYXRmb3JtID0gcGxh
dGZvcm0gKyAnLWRldmljZScKLSAgICBzdGVwLnNldENvbW1hbmQoc3RlcC5jb21tYW5kICsgWyct
LScgKyBwbGF0Zm9ybV0pCi0KLQotZGVmIGFwcGVuZEN1c3RvbVRlc3RpbmdGbGFncyhzdGVwLCBw
bGF0Zm9ybSwgZGV2aWNlX21vZGVsKToKLSAgICBpZiBwbGF0Zm9ybSBub3QgaW4gKCdndGsnLCAn
d2luY2Fpcm8nLCAnaW9zJywgJ2pzYy1vbmx5JywgJ3dwZScpOgotICAgICAgICByZXR1cm4KLSAg
ICBpZiBkZXZpY2VfbW9kZWwgPT0gJ2lwaG9uZSc6Ci0gICAgICAgIGRldmljZV9tb2RlbCA9ICdp
cGhvbmUtc2ltdWxhdG9yJwotICAgIGVsaWYgZGV2aWNlX21vZGVsID09ICdpcGFkJzoKLSAgICAg
ICAgZGV2aWNlX21vZGVsID0gJ2lwYWQtc2ltdWxhdG9yJwotICAgIGVsc2U6Ci0gICAgICAgIGRl
dmljZV9tb2RlbCA9IHBsYXRmb3JtCi0gICAgc3RlcC5zZXRDb21tYW5kKHN0ZXAuY29tbWFuZCAr
IFsnLS0nICsgZGV2aWNlX21vZGVsXSkKLQotCi1jbGFzcyBDb21waWxlV2ViS2l0KHNoZWxsLkNv
bXBpbGUpOgotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdCIsIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0gICAgZW52ID0g
eydNRkxBR1MnOiAnJ30KLSAgICBuYW1lID0gImNvbXBpbGUtd2Via2l0IgotICAgIGRlc2NyaXB0
aW9uID0gWyJjb21waWxpbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiY29tcGlsZWQiXQot
ICAgIHdhcm5pbmdQYXR0ZXJuID0gIi4qYXJuaW5nOiAuKiIKLQotICAgIGRlZiBzdGFydChzZWxm
KToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAg
ICAgIGJ1aWxkT25seSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkT25seScpCi0gICAgICAgIGFy
Y2hpdGVjdHVyZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScpCi0gICAgICAgIGFk
ZGl0aW9uYWxBcmd1bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRpdGlvbmFsQXJndW1lbnRz
JykKLQotICAgICAgICBpZiBhZGRpdGlvbmFsQXJndW1lbnRzOgotICAgICAgICAgICAgc2VsZi5z
ZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIGFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIGlm
IHBsYXRmb3JtIGluICgnbWFjJywgJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnKSBhbmQgYXJjaGl0
ZWN0dXJlOgotICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnQVJD
SFM9JyArIGFyY2hpdGVjdHVyZV0pCi0gICAgICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ2lvcycs
ICd0dm9zJywgJ3dhdGNob3MnXToKLSAgICAgICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2Vs
Zi5jb21tYW5kICsgWydPTkxZX0FDVElWRV9BUkNIPU5PJ10pCi0gICAgICAgIGlmIHBsYXRmb3Jt
IGluICgnbWFjJywgJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnKSBhbmQgYnVpbGRPbmx5OgotICAg
ICAgICAgICAgIyBGb3IgYnVpbGQtb25seSBib3RzLCB0aGUgZXhwZWN0YXRpb24gaXMgdGhhdCB0
ZXN0cyB3aWxsIGJlIHJ1biBvbiBzZXBhcmF0ZSBtYWNoaW5lcywKLSAgICAgICAgICAgICMgc28g
d2UgbmVlZCB0byBwYWNrYWdlIGRlYnVnIGluZm8gYXMgZFNZTXMuIE9ubHkgZ2VuZXJhdGluZyBs
aW5lIHRhYmxlcyBtYWtlcwotICAgICAgICAgICAgIyB0aGlzIG11Y2ggZmFzdGVyIHRoYW4gZnVs
bCBkZWJ1ZyBpbmZvLCBhbmQgY3Jhc2ggbG9ncyBzdGlsbCBoYXZlIGxpbmUgbnVtYmVycy4KLSAg
ICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJ0RFQlVHX0lORk9STUFU
SU9OX0ZPUk1BVD1kd2FyZi13aXRoLWRzeW0nXSkKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFu
ZChzZWxmLmNvbW1hbmQgKyBbJ0NMQU5HX0RFQlVHX0lORk9STUFUSU9OX0xFVkVMPWxpbmUtdGFi
bGVzLW9ubHknXSkKLQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHBsYXRm
b3JtLCBzZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLQotICAgICAgICByZXR1cm4g
c2hlbGwuQ29tcGlsZS5zdGFydChzZWxmKQotCi0gICAgZGVmIGNyZWF0ZVN1bW1hcnkoc2VsZiwg
bG9nKToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0g
ICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ21hYycpOgotICAgICAgICAgICAgd2Fybmlu
Z3MgPSBbXQotICAgICAgICAgICAgZXJyb3JzID0gW10KLSAgICAgICAgICAgIHNpbyA9IGNTdHJp
bmdJTy5TdHJpbmdJTyhsb2cuZ2V0VGV4dCgpKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2lv
LnJlYWRsaW5lcygpOgotICAgICAgICAgICAgICAgIGlmICJhcm5pbmc6IiBpbiBsaW5lOgotICAg
ICAgICAgICAgICAgICAgICB3YXJuaW5ncy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgICAgICBp
ZiAicnJvcjoiIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQobGlu
ZSkKLSAgICAgICAgICAgIGlmIHdhcm5pbmdzOgotICAgICAgICAgICAgICAgIHNlbGYuYWRkQ29t
cGxldGVMb2coJ3dhcm5pbmdzJywgIiIuam9pbih3YXJuaW5ncykpCi0gICAgICAgICAgICBpZiBl
cnJvcnM6Ci0gICAgICAgICAgICAgICAgc2VsZi5hZGRDb21wbGV0ZUxvZygnZXJyb3JzJywgIiIu
am9pbihlcnJvcnMpKQotCi0KLWNsYXNzIENvbXBpbGVMTElOVENMb29wKENvbXBpbGVXZWJLaXQp
OgotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL2J1aWxkLWpzYyIsICIt
LWNsb29wIiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotCi1jbGFz
cyBDb21waWxlMzJiaXRKU0MoQ29tcGlsZVdlYktpdCk6Ci0gICAgY29tbWFuZCA9IFsicGVybCIs
ICIuL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjIiwgIi0tMzItYml0IiwgV2l0aFByb3BlcnRpZXMo
Ii0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotCi1jbGFzcyBDb21waWxlSlNDT25seShDb21waWxl
V2ViS2l0KToKLSAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9idWlsZC1q
c2MiLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotCi0KLWNsYXNzIEFy
Y2hpdmVCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJw
eXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUi
LAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZv
cm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiYXJjaGl2ZSJd
Ci0gICAgbmFtZSA9ICJhcmNoaXZlLWJ1aWx0LXByb2R1Y3QiCi0gICAgZGVzY3JpcHRpb24gPSBb
ImFyY2hpdmluZyBidWlsdCBwcm9kdWN0Il0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImFyY2hp
dmVkIGJ1aWx0IHByb2R1Y3QiXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLQotY2xhc3Mg
QXJjaGl2ZU1pbmlmaWVkQnVpbHRQcm9kdWN0KEFyY2hpdmVCdWlsdFByb2R1Y3QpOgotICAgIGNv
bW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1
Y3QtYXJjaGl2ZSIsCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0l
KGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiks
ICJhcmNoaXZlIiwgIi0tbWluaWZ5Il0KLQotCi1jbGFzcyBHZW5lcmF0ZUpTQ0J1bmRsZShzaGVs
bC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbIi4vVG9vbHMvU2NyaXB0cy9nZW5lcmF0
ZS1idW5kbGUiLCAiLS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFt
ZSlzIiksCi0gICAgICAgICAgICAgICAiLS1idW5kbGU9anNjIiwgIi0tc3lzbGlicz1idW5kbGUt
YWxsIiwgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLAotICAg
ICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgV2l0aFBy
b3BlcnRpZXMoIi0tcmV2aXNpb249JShnb3RfcmV2aXNpb24pcyIpLAotICAgICAgICAgICAgICAg
Ii0tcmVtb3RlLWNvbmZpZy1maWxlIiwgIi4uLy4uL3JlbW90ZS1qc2MtYnVuZGxlLXVwbG9hZC1j
b25maWcuanNvbiJdCi0gICAgbmFtZSA9ICJnZW5lcmF0ZS1qc2MtYnVuZGxlIgotICAgIGRlc2Ny
aXB0aW9uID0gWyJnZW5lcmF0aW5nIGpzYyBidW5kbGUiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsiZ2VuZXJhdGVkIGpzYyBidW5kbGUiXQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotCi0K
LWNsYXNzIEdlbmVyYXRlTWluaUJyb3dzZXJCdW5kbGUoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAg
ICBjb21tYW5kID0gWyIuL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIiwgIi0tYnVpbGRl
ci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUpcyIpLAotICAgICAgICAgICAg
ICAgIi0tYnVuZGxlPU1pbmlCcm93c2VyIiwgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShm
dWxsUGxhdGZvcm0pcyIpLAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tJShjb25m
aWd1cmF0aW9uKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tcmV2aXNpb249JShnb3RfcmV2aXNpb24p
cyIpLAotICAgICAgICAgICAgICAgIi0tcmVtb3RlLWNvbmZpZy1maWxlIiwgIi4uLy4uL3JlbW90
ZS1taW5pYnJvd3Nlci1idW5kbGUtdXBsb2FkLWNvbmZpZy5qc29uIl0KLSAgICBuYW1lID0gImdl
bmVyYXRlLW1pbmlicm93c2VyLWJ1bmRsZSIKLSAgICBkZXNjcmlwdGlvbiA9IFsiZ2VuZXJhdGlu
ZyBtaW5pYnJvd3NlciBidW5kbGUiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiZ2VuZXJhdGVk
IG1pbmlicm93c2VyIGJ1bmRsZSJdCi0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLQotY2xh
c3MgRXh0cmFjdEJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQg
PSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJj
aGl2ZSIsCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQ
bGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksICJleHRy
YWN0Il0KLSAgICBuYW1lID0gImV4dHJhY3QtYnVpbHQtcHJvZHVjdCIKLSAgICBkZXNjcmlwdGlv
biA9IFsiZXh0cmFjdGluZyBidWlsdCBwcm9kdWN0Il0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBb
ImV4dHJhY3RlZCBidWlsdCBwcm9kdWN0Il0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0K
LWNsYXNzIFVwbG9hZEJ1aWx0UHJvZHVjdCh0cmFuc2Zlci5GaWxlVXBsb2FkKToKLSAgICB3b3Jr
ZXJzcmMgPSBXaXRoUHJvcGVydGllcygiV2ViS2l0QnVpbGQvJShjb25maWd1cmF0aW9uKXMuemlw
IikKLSAgICBtYXN0ZXJkZXN0ID0gV2l0aFByb3BlcnRpZXMoImFyY2hpdmVzLyUoZnVsbFBsYXRm
b3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy8lKGdvdF9yZXZpc2lvbilz
LnppcCIpCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snc2xhdmVzcmMnXSA9IHNlbGYud29ya2Vyc3Jj
Ci0gICAgICAgIGt3YXJnc1snbWFzdGVyZGVzdCddID0gc2VsZi5tYXN0ZXJkZXN0Ci0gICAgICAg
IGt3YXJnc1snbW9kZSddID0gMG82NDQKLSAgICAgICAga3dhcmdzWydibG9ja3NpemUnXSA9IDEw
MjQgKiAyNTYKLSAgICAgICAgdHJhbnNmZXIuRmlsZVVwbG9hZC5fX2luaXRfXyhzZWxmLCAqKmt3
YXJncykKLQotCi1jbGFzcyBVcGxvYWRNaW5pZmllZEJ1aWx0UHJvZHVjdChVcGxvYWRCdWlsdFBy
b2R1Y3QpOgotICAgIHdvcmtlcnNyYyA9IFdpdGhQcm9wZXJ0aWVzKCJXZWJLaXRCdWlsZC9taW5p
ZmllZC0lKGNvbmZpZ3VyYXRpb24pcy56aXAiKQotICAgIG1hc3RlcmRlc3QgPSBXaXRoUHJvcGVy
dGllcygiYXJjaGl2ZXMvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmln
dXJhdGlvbilzL21pbmlmaWVkLSUoZ290X3JldmlzaW9uKXMuemlwIikKLQotCi1jbGFzcyBEb3du
bG9hZEJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbInB5
dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3Qi
LAotICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKHBsYXRmb3JtKXMiKSwgV2l0
aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwKLSAgICAgICAgV2l0aFByb3BlcnRp
ZXMoUzNVUkwgKyAiYXJjaGl2ZXMud2Via2l0Lm9yZy8lKGZ1bGxQbGF0Zm9ybSlzLSUoYXJjaGl0
ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShnb3RfcmV2aXNpb24pcy56aXAiKV0KLSAgICBu
YW1lID0gImRvd25sb2FkLWJ1aWx0LXByb2R1Y3QiCi0gICAgZGVzY3JpcHRpb24gPSBbImRvd25s
b2FkaW5nIGJ1aWx0IHByb2R1Y3QiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiZG93bmxvYWRl
ZCBidWlsdCBwcm9kdWN0Il0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotICAgIGZsdW5rT25G
YWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBpZiAnYXBwbGUn
IGluIHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJykubG93ZXIoKToKLSAgICAgICAgICAg
IHNlbGYuc2xhdmVFbnZpcm9ubWVudFsnSFRUUFNfUFJPWFknXSA9IEFQUExFX1dFQktJVF9BV1Nf
UFJPWFkgICMgY3VybCBlbnYgdmFyIHRvIHVzZSBhIHByb3h5Ci0gICAgICAgIHJldHVybiBzaGVs
bC5TaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotCi1jbGFzcyBSdW5KYXZhU2NyaXB0Q29yZVRl
c3RzKFRlc3RXaXRoRmFpbHVyZUNvdW50KToKLSAgICBuYW1lID0gImpzY29yZS10ZXN0IgotICAg
IGRlc2NyaXB0aW9uID0gWyJqc2NvcmUtdGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25E
b25lID0gWyJqc2NvcmUtdGVzdHMiXQotICAgIGpzb25GaWxlTmFtZSA9ICJqc2NfcmVzdWx0cy5q
c29uIgotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9y
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiLAotICAgICAgICAiLS1uby1idWlsZCIsICItLW5vLWZh
aWwtZmFzdCIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXswfSIuZm9ybWF0KGpzb25GaWxlTmFt
ZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksCi0gICAg
ICAgICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwK
LSAgICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRudW1iZXIp
cyIpLAotICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJvcGVydGllcygiJShzbGF2
ZW5hbWUpcyIpLAotICAgICAgICAiLS1idWlsZGJvdC1tYXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJM
LAotICAgICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9VUkwsCi0gICAgXQotICAgIGZh
aWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIEpTQyB0ZXN0JXMgZmFpbGVkIgotICAgIGxvZ2Zp
bGVzID0geyJqc29uIjoganNvbkZpbGVOYW1lfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICph
cmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snbG9nRW52aXJvbiddID0gRmFsc2UKLSAg
ICAgICAgVGVzdFdpdGhGYWlsdXJlQ291bnQuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNsYXZlRW52aXJvbm1lbnRb
UkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVTVUxUU19TRVJWRVJfQVBJX0tF
WSkKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAg
ICAgIGFyY2hpdGVjdHVyZSA9IHNlbGYuZ2V0UHJvcGVydHkoImFyY2hpdGVjdHVyZSIpCi0gICAg
ICAgICMgQ3VycmVudGx5IHJ1bi1qYXZhc2NyaXB0Y29yZS10ZXN0IGRvZXNuJ3Qgc3VwcG9ydCBy
dW4gamF2YXNjcmlwdCBjb3JlIHRlc3QgYmluYXJpZXMgbGlzdCBiZWxvdyByZW1vdGVseQotICAg
ICAgICBpZiBhcmNoaXRlY3R1cmUgaW4gWydtaXBzJywgJ2FybXY3JywgJ2FhcmNoNjQnXToKLSAg
ICAgICAgICAgIHNlbGYuY29tbWFuZCArPSBbJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWly
JywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknXQotICAgICAg
ICAjIExpbnV4IGJvdHMgaGF2ZSBjdXJyZW50bHkgcHJvYmxlbXMgd2l0aCBKU0MgdGVzdHMgdGhh
dCB0cnkgdG8gdXNlIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5LgotICAgICAgICAjIENoZWNrOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MTQwCi0gICAgICAgIGlm
IHBsYXRmb3JtIGluICgnZ3RrJywgJ3dwZScsICdqc2Mtb25seScpOgotICAgICAgICAgICAgc2Vs
Zi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1tZW1vcnktbGltaXRlZCcsICctLXZlcmJv
c2UnXSkKLSAgICAgICAgIyBXaW5DYWlybyB1c2VzIHRoZSBXaW5kb3dzIGNvbW1hbmQgcHJvbXB0
LCBub3QgQ3lnd2luLgotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICd3aW5jYWlybyc6Ci0gICAg
ICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLXRlc3Qtd3JpdGVyPXJ1
YnknXSkKLQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHBsYXRmb3JtLCBz
ZWxmLmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRl
c3Quc3RhcnQoc2VsZikKLQotICAgIGRlZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAg
ICAgIGxvZ1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkKLSAgICAgICAgY291bnQg
PSAwCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocideUmVzdWx0cyBmb3IgSlNDIHN0cmVz
cyB0ZXN0czpccj9cblxzKyhcZCspIGZhaWx1cmUnLCBsb2dUZXh0LCByZS5NVUxUSUxJTkUpCi0g
ICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgY291bnQgKz0gaW50KG1hdGNoLmdyb3VwKDEp
KQotCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInUmVzdWx0cyBmb3IgSlNDIHRlc3QgYmlu
YXJpZXM6XHI/XG5ccysoXGQrKSBmYWlsdXJlJywgbG9nVGV4dCwgcmUuTVVMVElMSU5FKQotICAg
ICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIGNvdW50ICs9IGludChtYXRjaC5ncm91cCgxKSkK
LQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ15SZXN1bHRzIGZvciBNb3ppbGxhIHRlc3Rz
OlxyP1xuXHMrKFxkKykgcmVncmVzc2lvbicsIGxvZ1RleHQsIHJlLk1VTFRJTElORSkKLSAgICAg
ICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICBjb3VudCArPSBpbnQobWF0Y2guZ3JvdXAoMSkpCi0K
LSAgICAgICAgcmV0dXJuIGNvdW50Ci0KLQotY2xhc3MgUnVuUmVtb3RlSmF2YVNjcmlwdENvcmVU
ZXN0cyhSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKToKLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbIi0tcmVtb3RlLWNvbmZpZy1maWxl
IiwgIi4uLy4uL3JlbW90ZS1qc2MtdGVzdHMtY29uZmlnLmpzb24iXSkKLSAgICAgICAgcmV0dXJu
IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMuc3RhcnQoc2VsZikKLQotCi1jbGFzcyBSdW5UZXN0MjYy
VGVzdHMoVGVzdFdpdGhGYWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAidGVzdDI2Mi10ZXN0Igot
ICAgIGRlc2NyaXB0aW9uID0gWyJ0ZXN0MjYyLXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0
aW9uRG9uZSA9IFsidGVzdDI2Mi10ZXN0cyJdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcg
PSAiJWQgVGVzdDI2MiB0ZXN0JXMgZmFpbGVkIgotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9U
b29scy9TY3JpcHRzL3Rlc3QyNjItcnVubmVyIiwgIi0tdmVyYm9zZSIsIFdpdGhQcm9wZXJ0aWVz
KCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
IGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Moc2VsZiwgc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0n
KSwgc2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJykpCi0gICAgICAgIHJldHVybiBzaGVs
bC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgY291bnRGYWlsdXJlcyhzZWxmLCBjbWQpOgot
ICAgICAgICBsb2dUZXh0ID0gY21kLmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgpCi0gICAgICAgIG1h
dGNoZXMgPSByZS5maW5kYWxsKHInXlwhIE5FVyBGQUlMJywgbG9nVGV4dCwgZmxhZ3M9cmUuTVVM
VElMSU5FKQotICAgICAgICBpZiBtYXRjaGVzOgotICAgICAgICAgICAgcmV0dXJuIGxlbihtYXRj
aGVzKQotICAgICAgICByZXR1cm4gMAotCi0KLWNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRl
c3QpOgotICAgIG5hbWUgPSAibGF5b3V0LXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBbImxheW91
dC10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImxheW91dC10ZXN0cyJd
Ci0gICAgcmVzdWx0RGlyZWN0b3J5ID0gImxheW91dC10ZXN0LXJlc3VsdHMiCi0gICAgY29tbWFu
ZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzIiwKLSAgICAg
ICAgICAgICAgICItLW5vLWJ1aWxkIiwKLSAgICAgICAgICAgICAgICItLW5vLXNob3ctcmVzdWx0
cyIsCi0gICAgICAgICAgICAgICAiLS1uby1uZXctdGVzdC1yZXN1bHRzIiwKLSAgICAgICAgICAg
ICAgICItLWNsb2JiZXItb2xkLXJlc3VsdHMiLAotICAgICAgICAgICAgICAgIi0tYnVpbGRlci1u
YW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUpcyIpLAotICAgICAgICAgICAgICAg
Ii0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRudW1iZXIpcyIpLAotICAg
ICAgICAgICAgICAgIi0tYnVpbGRib3Qtd29ya2VyIiwgV2l0aFByb3BlcnRpZXMoIiUoc2xhdmVu
YW1lKXMiKSwKLSAgICAgICAgICAgICAgICItLW1hc3Rlci1uYW1lIiwgIndlYmtpdC5vcmciLAot
ICAgICAgICAgICAgICAgIi0tYnVpbGRib3QtbWFzdGVyIiwgQlVJTERfV0VCS0lUX1VSTCwKLSAg
ICAgICAgICAgICAgICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VSTCwKLSAgICAgICAgICAg
ICAgICItLWV4aXQtYWZ0ZXItbi1jcmFzaGVzLW9yLXRpbWVvdXRzIiwgIjUwIiwKLSAgICAgICAg
ICAgICAgICItLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIsICI1MDAiLAotICAgICAgICAgICAgICAg
V2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ2xvZ0Vudmlyb24nXSA9
IEZhbHNlCi0gICAgICAgIHNoZWxsLlRlc3QuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNsYXZlRW52aXJvbm1lbnRb
UkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVTVUxUU19TRVJWRVJfQVBJX0tF
WSkKLQotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAg
ICAgICAgYXBwZW5kQ3VzdG9tVGVzdGluZ0ZsYWdzKHNlbGYsIHBsYXRmb3JtLCBzZWxmLmdldFBy
b3BlcnR5KCdkZXZpY2VfbW9kZWwnKSkKLSAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA9IHNl
bGYuZ2V0UHJvcGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnKQotCi0gICAgICAgIHNlbGYuc2V0
Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbIi0tcmVzdWx0cy1kaXJlY3RvcnkiLCBzZWxmLnJlc3Vs
dERpcmVjdG9yeV0pCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0t
ZGVidWctcnd0LWxvZ2dpbmcnXSkKLQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAid2luIjoKLSAg
ICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tYmF0Y2gtc2l6ZScs
ICcxMDAnLCAnLS1yb290PScgKyBvcy5wYXRoLmpvaW4oIldlYktpdEJ1aWxkIiwgc2VsZi5nZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicpLCAiYmluNjQiKV0pCi0KLSAgICAgICAgaWYgYWRkaXRp
b25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQg
KyBhZGRpdGlvbmFsQXJndW1lbnRzKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChz
ZWxmKQotCi0gICAgIyBGSVhNRTogVGhpcyB3aWxsIGJyZWFrIGlmIHJ1bi13ZWJraXQtdGVzdHMg
Y2hhbmdlcyBpdHMgZGVmYXVsdCBsb2cgZm9ybWF0dGVyLgotICAgIG5yd3RfbG9nX21lc3NhZ2Vf
cmVnZXhwID0gcmUuY29tcGlsZShyJ1xkezJ9OlxkezJ9OlxkezJ9KFwuXGQrKT9ccytcZCtccyso
P1A8bWVzc2FnZT4uKiknKQotCi0gICAgZGVmIF9zdHJpcF9weXRob25fbG9nZ2luZ19wcmVmaXgo
c2VsZiwgbGluZSk6Ci0gICAgICAgIG1hdGNoX29iamVjdCA9IHNlbGYubnJ3dF9sb2dfbWVzc2Fn
ZV9yZWdleHAubWF0Y2gobGluZSkKLSAgICAgICAgaWYgbWF0Y2hfb2JqZWN0OgotICAgICAgICAg
ICAgcmV0dXJuIG1hdGNoX29iamVjdC5ncm91cCgnbWVzc2FnZScpCi0gICAgICAgIHJldHVybiBs
aW5lCi0KLSAgICBkZWYgX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQoc2VsZiwgbG9nVGV4dCk6
Ci0gICAgICAgIGluY29ycmVjdExheW91dExpbmVzID0gW10KLSAgICAgICAgZXhwcmVzc2lvbnMg
PSBbCi0gICAgICAgICAgICAoJ2ZsYWtlcycsIHJlLmNvbXBpbGUocidVbmV4cGVjdGVkIGZsYWtp
bmVzcy4rXCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCduZXcgcGFzc2VzJywgcmUuY29tcGls
ZShyJ0V4cGVjdGVkIHRvIC4rLCBidXQgcGFzc2VkOlxzK1woKFxkKylcKScpKSwKLSAgICAgICAg
ICAgICgnbWlzc2luZyByZXN1bHRzJywgcmUuY29tcGlsZShyJ1JlZ3Jlc3Npb25zOiBVbmV4cGVj
dGVkIG1pc3NpbmcgcmVzdWx0c1xzK1woKFxkKylcKScpKSwKLSAgICAgICAgICAgICgnZmFpbHVy
ZXMnLCByZS5jb21waWxlKHInUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQuK1woKFxkKylcKScpKSwK
LSAgICAgICAgXQotICAgICAgICB0ZXN0RmFpbHVyZXMgPSB7fQotCi0gICAgICAgIGZvciBsaW5l
IGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgbGluZS5maW5kKCdFeGl0
aW5nIGVhcmx5JykgPj0gMCBvciBsaW5lLmZpbmQoJ2xlYWtzIGZvdW5kJykgPj0gMDoKLSAgICAg
ICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc2VsZi5fc3RyaXBfcHl0aG9u
X2xvZ2dpbmdfcHJlZml4KGxpbmUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBmb3IgbmFtZSwgZXhwcmVzc2lvbiBpbiBleHByZXNzaW9uczoKLSAgICAgICAgICAgICAg
ICBtYXRjaCA9IGV4cHJlc3Npb24uc2VhcmNoKGxpbmUpCi0KLSAgICAgICAgICAgICAgICBpZiBt
YXRjaDoKLSAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWx1cmVzW25hbWVdID0gdGVzdEZhaWx1
cmVzLmdldChuYW1lLCAwKSArIGludChtYXRjaC5ncm91cCgxKSkKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLQotICAgICAgICAgICAgICAgICMgRklYTUU6IFBhcnNlIGZpbGUgbmFtZXMgYW5k
IHB1dCB0aGVtIGluIHJlc3VsdHMKLQotICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0RmFpbHVyZXM6
Ci0gICAgICAgICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc3RyKHRlc3RGYWlsdXJl
c1tuYW1lXSkgKyAnICcgKyBuYW1lKQotCi0gICAgICAgIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGlu
ZXMgPSBpbmNvcnJlY3RMYXlvdXRMaW5lcwotCi0gICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxm
LCBjbWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCi0K
LSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICBz
ZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCi0KLSAgICBkZWYgZXZhbHVh
dGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJlc3VsdCA9IFNVQ0NFU1MKLQotICAgICAg
ICBpZiBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAgICAgICAgICAgaWYgbGVuKHNlbGYu
aW5jb3JyZWN0TGF5b3V0TGluZXMpID09IDE6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYu
aW5jb3JyZWN0TGF5b3V0TGluZXNbMF0KLSAgICAgICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ3dl
cmUgbmV3JykgPj0gMCBvciBsaW5lLmZpbmQoJ3dhcyBuZXcnKSA+PSAwIG9yIGxpbmUuZmluZCgn
IGxlYWsnKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV0FSTklOR1MKLQotICAg
ICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lczoKLSAgICAgICAg
ICAgICAgICBpZiBsaW5lLmZpbmQoJ2ZsYWtlcycpID49IDAgb3IgbGluZS5maW5kKCduZXcgcGFz
c2VzJykgPj0gMCBvciBsaW5lLmZpbmQoJ21pc3NpbmcgcmVzdWx0cycpID49IDA6Ci0gICAgICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IFdBUk5JTkdTCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICAjIFJldHVybiBjb2Rl
IGZyb20gVG9vbHMvU2NyaXB0cy9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weS4KLSAg
ICAgICAgIyBUaGlzIG1lYW5zIHRoYXQgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgd2hlbiBydW5u
aW5nIHJ1bi13ZWJraXQtdGVzdHMgYW5kCi0gICAgICAgICMgd2FzIG5ldmVyIGhhbmRsZWQuCi0g
ICAgICAgIGlmIGNtZC5yYyA9PSAyNTQ6Ci0gICAgICAgICAgICByZXR1cm4gRVhDRVBUSU9OCi0g
ICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAg
ICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMp
OgotICAgICAgICByZXR1cm4gc2VsZi5nZXRUZXh0MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYg
Z2V0VGV4dDIoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUND
RVNTIGFuZCBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAgICAgICAgICAgcmV0dXJuIHNl
bGYuaW5jb3JyZWN0TGF5b3V0TGluZXMKLQotICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KLQot
Ci1jbGFzcyBSdW5EYXNoYm9hcmRUZXN0cyhSdW5XZWJLaXRUZXN0cyk6Ci0gICAgbmFtZSA9ICJk
YXNoYm9hcmQtdGVzdHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImRhc2hib2FyZC10ZXN0cyBydW5u
aW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRhc2hib2FyZC10ZXN0cyJdCi0gICAgcmVz
dWx0RGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKFJ1bldlYktpdFRlc3RzLnJlc3VsdERpcmVjdG9y
eSwgImRhc2hib2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzIikKLQotICAgIGRlZiBzdGFydChzZWxm
KToKLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1sYXlvdXQtdGVz
dHMtZGlyZWN0b3J5IiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiXSkKLSAgICAgICAg
cmV0dXJuIFJ1bldlYktpdFRlc3RzLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVuQVBJVGVzdHMo
VGVzdFdpdGhGYWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAicnVuLWFwaS10ZXN0cyIKLSAgICBk
ZXNjcmlwdGlvbiA9IFsiYXBpIHRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsiYXBpLXRlc3RzIl0KLSAgICBqc29uRmlsZU5hbWUgPSAiYXBpX3Rlc3RfcmVzdWx0cy5qc29u
IgotICAgIGxvZ2ZpbGVzID0geyJqc29uIjoganNvbkZpbGVOYW1lfQotICAgIGNvbW1hbmQgPSBb
Ci0gICAgICAgICJweXRob24iLAotICAgICAgICAiLi9Ub29scy9TY3JpcHRzL3J1bi1hcGktdGVz
dHMiLAotICAgICAgICAiLS1uby1idWlsZCIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXswfSIu
Zm9ybWF0KGpzb25GaWxlTmFtZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmln
dXJhdGlvbilzIiksCi0gICAgICAgICItLXZlcmJvc2UiLAotICAgICAgICAiLS1idWlsZGJvdC1t
YXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJMLAotICAgICAgICAiLS1idWlsZGVyLW5hbWUiLCBXaXRo
UHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICItLWJ1aWxkLW51bWJlciIs
IFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAgICAgIi0tYnVpbGRib3Qt
d29ya2VyIiwgV2l0aFByb3BlcnRpZXMoIiUoc2xhdmVuYW1lKXMiKSwKLSAgICAgICAgIi0tcmVw
b3J0IiwgUkVTVUxUU19XRUJLSVRfVVJMLAotICAgIF0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0
cmluZyA9ICIlZCBhcGkgdGVzdCVzIGZhaWxlZCBvciB0aW1lZCBvdXQiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydsb2dFbnZpcm9u
J10gPSBGYWxzZQotICAgICAgICBUZXN0V2l0aEZhaWx1cmVDb3VudC5fX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2xh
dmVFbnZpcm9ubWVudFtSRVNVTFRTX1NFUlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNVTFRT
X1NFUlZFUl9BUElfS0VZKQotICAgICAgICBhcHBlbmRDdXN0b21UZXN0aW5nRmxhZ3Moc2VsZiwg
c2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKSwgc2VsZi5nZXRQcm9wZXJ0eSgnZGV2aWNlX21v
ZGVsJykpCi0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYg
Y291bnRGYWlsdXJlcyhzZWxmLCBjbWQpOgotICAgICAgICBsb2dfdGV4dCA9IGNtZC5sb2dzWydz
dGRpbyddLmdldFRleHQoKQotCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInUmFuICg/UDxy
YW4+XGQrKSB0ZXN0cyBvZiAoP1A8dG90YWw+XGQrKSB3aXRoICg/UDxwYXNzZWQ+XGQrKSBzdWNj
ZXNzZnVsJywgbG9nX3RleHQpCi0gICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAgICAgICAgIHJl
dHVybiAtMQotICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdyYW4nKSkgLSBpbnQobWF0
Y2guZ3JvdXAoJ3Bhc3NlZCcpKQotCi0KLWNsYXNzIFJ1blB5dGhvblRlc3RzKFRlc3RXaXRoRmFp
bHVyZUNvdW50KToKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcGxhdGZvcm0gPSBz
ZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAgICAgICMgUHl0aG9uIHRlc3RzIGFyZSBm
bGFreSBvbiB0aGUgR1RLIGJ1aWxkZXJzLCBydW5uaW5nIHRoZW0gc2VyaWFsbHkKLSAgICAgICAg
IyBoZWxwcyBhbmQgZG9lcyBub3Qgc2lnbmlmaWNhbnRseSBwcm9sb25nIHRoZSBjeWNsZSB0aW1l
LgotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZ3RrJzoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29t
bWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzEnXSkKLSAgICAgICAg
IyBQeXRob24gdGVzdHMgZmFpbCBvbiB3aW5kb3dzIGJvdHMgd2hlbiBydW5uaW5nIG1vcmUgdGhh
biBvbmUgY2hpbGQgcHJvY2VzcwotICAgICAgICAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05NzQ2NQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luJzoKLSAgICAg
ICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tY2hpbGQtcHJvY2Vzc2Vz
JywgJzEnXSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKLQotICAgIGRl
ZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxvZ1RleHQgPSBjbWQubG9nc1sn
c3RkaW8nXS5nZXRUZXh0KCkKLSAgICAgICAgIyBXZSdyZSBsb29raW5nIGZvciB0aGUgbGluZSB0
aGF0IGxvb2tzIGxpa2UgdGhpczogRkFJTEVEIChmYWlsdXJlcz0yLCBlcnJvcnM9MSkKLSAgICAg
ICAgcmVnZXggPSByZS5jb21waWxlKHInXkZBSUxFRCBcKCg/UDxjb3VudHM+W14pXSspXCknKQot
ICAgICAgICBmb3IgbGluZSBpbiBsb2dUZXh0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIG1h
dGNoID0gcmVnZXgubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtYXRjaDoKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmV0dXJuIHN1bShpbnQoY29tcG9uZW50
LnNwbGl0KCc9JylbMV0pIGZvciBjb21wb25lbnQgaW4gbWF0Y2guZ3JvdXAoJ2NvdW50cycpLnNw
bGl0KCcsICcpKQotICAgICAgICByZXR1cm4gMAotCi0KLWNsYXNzIFJ1bldlYktpdFB5VGVzdHMo
UnVuUHl0aG9uVGVzdHMpOgotICAgIG5hbWUgPSAid2Via2l0cHktdGVzdCIKLSAgICBkZXNjcmlw
dGlvbiA9IFsicHl0aG9uLXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsi
cHl0aG9uLXRlc3RzIl0KLSAgICBjb21tYW5kID0gWwotICAgICAgICAicHl0aG9uIiwKLSAgICAg
ICAgIi4vVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5IiwKLSAgICAgICAgIi0tdmVyYm9zZSIs
Ci0gICAgICAgICItLWJ1aWxkYm90LW1hc3RlciIsIEJVSUxEX1dFQktJVF9VUkwsCi0gICAgICAg
ICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAg
ICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRudW1iZXIpcyIp
LAotICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJvcGVydGllcygiJShzbGF2ZW5h
bWUpcyIpLAotICAgICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9VUkwsCi0gICAgXQot
ICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIHB5dGhvbiB0ZXN0JXMgZmFpbGVkIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJn
c1snbG9nRW52aXJvbiddID0gRmFsc2UKLSAgICAgICAgUnVuUHl0aG9uVGVzdHMuX19pbml0X18o
c2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBz
ZWxmLnNsYXZlRW52aXJvbm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYo
UkVTVUxUU19TRVJWRVJfQVBJX0tFWSkKLSAgICAgICAgcmV0dXJuIFJ1blB5dGhvblRlc3RzLnN0
YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVuTExEQldlYktpdFRlc3RzKFJ1blB5dGhvblRlc3RzKToK
LSAgICBuYW1lID0gImxsZGItd2Via2l0LXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBbImxsZGIt
d2Via2l0LXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsibGxkYi13ZWJr
aXQtdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJweXRob24iLAotICAgICAgICAi
Li9Ub29scy9TY3JpcHRzL3Rlc3QtbGxkYi13ZWJraXQiLAotICAgICAgICAiLS12ZXJib3NlIiwK
LSAgICAgICAgIi0tbm8tYnVpbGQiLAotICAgICAgICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZp
Z3VyYXRpb24pcyIpLAotICAgIF0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCBs
bGRiIHRlc3QlcyBmYWlsZWQiCi0KLQotY2xhc3MgUnVuUGVybFRlc3RzKFRlc3RXaXRoRmFpbHVy
ZUNvdW50KToKLSAgICBuYW1lID0gIndlYmtpdHBlcmwtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9
IFsicGVybC10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInBlcmwtdGVz
dHMiXQotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0
cGVybCJdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcgPSAiJWQgcGVybCB0ZXN0JXMgZmFp
bGVkIgotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4
dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICAjIFdlJ3JlIGxvb2tpbmcg
Zm9yIHRoZSBsaW5lIHRoYXQgbG9va3MgbGlrZSB0aGlzOiBGYWlsZWQgMi8xOSB0ZXN0IHByb2dy
YW1zLiA1LzM2MyBzdWJ0ZXN0cyBmYWlsZWQuCi0gICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShy
J15GYWlsZWQgXGQrL1xkKyB0ZXN0IHByb2dyYW1zXC4gKD9QPGNvdW50PlxkKykvXGQrIHN1YnRl
c3RzIGZhaWxlZFwuJykKLSAgICAgICAgZm9yIGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVzKCk6
Ci0gICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBu
b3QgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVybiBp
bnQobWF0Y2guZ3JvdXAoJ2NvdW50JykpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVu
TExJTlRDTG9vcFRlc3RzKFRlc3RXaXRoRmFpbHVyZUNvdW50KToKLSAgICBuYW1lID0gIndlYmtp
dC1qc2MtY2xvb3AtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsiY2xvb3AtdGVzdHMgcnVubmlu
ZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJjbG9vcC10ZXN0cyJdCi0gICAganNvbkZpbGVO
YW1lID0gImpzY19jbG9vcC5qc29uIgotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJwZXJsIiwg
Ii4vVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiLAotICAgICAgICAiLS1j
bG9vcCIsICItLW5vLWJ1aWxkIiwKLSAgICAgICAgIi0tbm8tanNjLXN0cmVzcyIsICItLW5vLWZh
aWwtZmFzdCIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXswfSIuZm9ybWF0KGpzb25GaWxlTmFt
ZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksCi0gICAg
ICAgICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwK
LSAgICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRudW1iZXIp
cyIpLAotICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJvcGVydGllcygiJShzbGF2
ZW5hbWUpcyIpLAotICAgICAgICAiLS1idWlsZGJvdC1tYXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJM
LAotICAgICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9VUkwsCi0gICAgXQotICAgIGZh
aWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIHJlZ3Jlc3Npb24lcyBmb3VuZC4iCi0gICAgbG9n
ZmlsZXMgPSB7Impzb24iOiBqc29uRmlsZU5hbWV9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydsb2dFbnZpcm9uJ10gPSBGYWxzZQot
ICAgICAgICBUZXN0V2l0aEZhaWx1cmVDb3VudC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2Fy
Z3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2xhdmVFbnZpcm9ubWVu
dFtSRVNVTFRTX1NFUlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNVTFRTX1NFUlZFUl9BUElf
S0VZKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNv
dW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRp
byddLmdldFRleHQoKQotICAgICAgICAjIFdlJ3JlIGxvb2tpbmcgZm9yIHRoZSBsaW5lIHRoYXQg
bG9va3MgbGlrZSB0aGlzOiAwIHJlZ3Jlc3Npb25zIGZvdW5kLgotICAgICAgICByZWdleCA9IHJl
LmNvbXBpbGUocidccyooP1A8Y291bnQ+XGQrKSByZWdyZXNzaW9ucz8gZm91bmQuJykKLSAgICAg
ICAgZm9yIGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBtYXRjaCA9
IHJlZ2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2NvdW50
JykpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVuMzJiaXRKU0NUZXN0cyhUZXN0V2l0
aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9ICJ3ZWJraXQtMzJiaXQtanNjLXRlc3QiCi0gICAg
ZGVzY3JpcHRpb24gPSBbIjMyYml0LWpzYy10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlv
bkRvbmUgPSBbIjMyYml0LWpzYy10ZXN0cyJdCi0gICAganNvbkZpbGVOYW1lID0gImpzY18zMmJp
dC5qc29uIgotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiLAotICAgICAgICAiLS0zMi1iaXQiLCAiLS1uby1i
dWlsZCIsCi0gICAgICAgICItLW5vLWZhaWwtZmFzdCIsICItLW5vLWppdCIsICItLW5vLXRlc3Rh
aXIiLCAiLS1uby10ZXN0YjMiLCAiLS1uby10ZXN0bWFzbSIsCi0gICAgICAgICItLWpzb24tb3V0
cHV0PXswfSIuZm9ybWF0KGpzb25GaWxlTmFtZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCIt
LSUoY29uZmlndXJhdGlvbilzIiksCi0gICAgICAgICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9w
ZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0
aFByb3BlcnRpZXMoIiUoYnVpbGRudW1iZXIpcyIpLAotICAgICAgICAiLS1idWlsZGJvdC13b3Jr
ZXIiLCBXaXRoUHJvcGVydGllcygiJShzbGF2ZW5hbWUpcyIpLAotICAgICAgICAiLS1idWlsZGJv
dC1tYXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJMLAotICAgICAgICAiLS1yZXBvcnQiLCBSRVNVTFRT
X1dFQktJVF9VUkwsCi0gICAgXQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIHJl
Z3Jlc3Npb24lcyBmb3VuZC4iCi0gICAgbG9nZmlsZXMgPSB7Impzb24iOiBqc29uRmlsZU5hbWV9
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAga3dh
cmdzWydsb2dFbnZpcm9uJ10gPSBGYWxzZQotICAgICAgICBUZXN0V2l0aEZhaWx1cmVDb3VudC5f
X2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0g
ICAgICAgIHNlbGYuc2xhdmVFbnZpcm9ubWVudFtSRVNVTFRTX1NFUlZFUl9BUElfS0VZXSA9IG9z
LmdldGVudihSRVNVTFRTX1NFUlZFUl9BUElfS0VZKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVz
dC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAg
ICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICAjIFdlJ3Jl
IGxvb2tpbmcgZm9yIHRoZSBsaW5lIHRoYXQgbG9va3MgbGlrZSB0aGlzOiAwIGZhaWx1cmVzIGZv
dW5kLgotICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocidccyooP1A8Y291bnQ+XGQrKSBmYWls
dXJlcz8gZm91bmQuJykKLSAgICAgICAgZm9yIGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVzKCk6
Ci0gICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBu
b3QgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVybiBp
bnQobWF0Y2guZ3JvdXAoJ2NvdW50JykpCi0gICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVu
QmluZGluZ3NUZXN0cyhzaGVsbC5UZXN0KToKLSAgICBuYW1lID0gImJpbmRpbmdzLWdlbmVyYXRp
b24tdGVzdHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImJpbmRpbmdzLXRlc3RzIHJ1bm5pbmciXQot
ICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiYmluZGluZ3MtdGVzdHMiXQotICAgIGNvbW1hbmQgPSBb
InB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzIl0KLQotCi1jbGFz
cyBSdW5CdWlsdGluc1Rlc3RzKHNoZWxsLlRlc3QpOgotICAgIG5hbWUgPSAiYnVpbHRpbnMtZ2Vu
ZXJhdG9yLXRlc3RzIgotICAgIGRlc2NyaXB0aW9uID0gWyJidWlsdGlucy1nZW5lcmF0b3ItdGVz
dHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMiXQotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLWJ1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cyJdCi0KLQotY2xhc3MgUnVuR0xpYkFQSVRlc3RzKHNoZWxs
LlRlc3QpOgotICAgIG5hbWUgPSAiQVBJLXRlc3RzIgotICAgIGRlc2NyaXB0aW9uID0gWyJBUEkg
dGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJBUEkgdGVzdHMiXQotCi0g
ICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID0gc2VsZi5n
ZXRQcm9wZXJ0eSgiYWRkaXRpb25hbEFyZ3VtZW50cyIpCi0gICAgICAgIGlmIGFkZGl0aW9uYWxB
cmd1bWVudHM6Ci0gICAgICAgICAgICBzZWxmLmNvbW1hbmQgKz0gYWRkaXRpb25hbEFyZ3VtZW50
cwotICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kKQotICAgICAgICByZXR1cm4g
c2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBj
bWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCi0KLSAg
ICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotCi0gICAgICAgIGZh
aWxlZFRlc3RzID0gMAotICAgICAgICBjcmFzaGVkVGVzdHMgPSAwCi0gICAgICAgIHRpbWVkT3V0
VGVzdHMgPSAwCi0gICAgICAgIG1lc3NhZ2VzID0gW10KLSAgICAgICAgc2VsZi5zdGF0dXNMaW5l
ID0gW10KLQotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVW5leHBlY3RlZCBmYWls
dXJlcyBcKChcZCspXCkiLCBsb2dUZXh0KQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgotICAgICAg
ICAgICAgZmFpbGVkVGVzdHMgPSBpbnQoZm91bmRJdGVtc1swXSkKLSAgICAgICAgICAgIG1lc3Nh
Z2VzLmFwcGVuZCgiJWQgZmFpbHVyZXMiICUgZmFpbGVkVGVzdHMpCi0KLSAgICAgICAgZm91bmRJ
dGVtcyA9IHJlLmZpbmRhbGwoIlVuZXhwZWN0ZWQgY3Jhc2hlcyBcKChcZCspXCkiLCBsb2dUZXh0
KQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgotICAgICAgICAgICAgY3Jhc2hlZFRlc3RzID0gaW50
KGZvdW5kSXRlbXNbMF0pCi0gICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIiVkIGNyYXNoZXMi
ICUgY3Jhc2hlZFRlc3RzKQotCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxsKCJVbmV4
cGVjdGVkIHRpbWVvdXRzIFwoKFxkKylcKSIsIGxvZ1RleHQpCi0gICAgICAgIGlmIGZvdW5kSXRl
bXM6Ci0gICAgICAgICAgICB0aW1lZE91dFRlc3RzID0gaW50KGZvdW5kSXRlbXNbMF0pCi0gICAg
ICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIiVkIHRpbWVvdXRzIiAlIHRpbWVkT3V0VGVzdHMpCi0K
LSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIlVuZXhwZWN0ZWQgcGFzc2VzIFwoKFxk
KylcKSIsIGxvZ1RleHQpCi0gICAgICAgIGlmIGZvdW5kSXRlbXM6Ci0gICAgICAgICAgICBuZXdQ
YXNzVGVzdHMgPSBpbnQoZm91bmRJdGVtc1swXSkKLSAgICAgICAgICAgIG1lc3NhZ2VzLmFwcGVu
ZCgiJWQgbmV3IHBhc3NlcyIgJSBuZXdQYXNzVGVzdHMpCi0KLSAgICAgICAgc2VsZi50b3RhbEZh
aWxlZFRlc3RzID0gZmFpbGVkVGVzdHMgKyBjcmFzaGVkVGVzdHMgKyB0aW1lZE91dFRlc3RzCi0g
ICAgICAgIGlmIG1lc3NhZ2VzOgotICAgICAgICAgICAgc2VsZi5zdGF0dXNMaW5lID0gWyJBUEkg
dGVzdHM6ICVzIiAlICIsICIuam9pbihtZXNzYWdlcyldCi0KLSAgICBkZWYgZXZhbHVhdGVDb21t
YW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIGlmIHNlbGYudG90YWxGYWlsZWRUZXN0cyA+IDA6Ci0g
ICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAg
ICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAg
ZGVmIGdldFRleHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0
VGV4dDIoY21kLCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwgcmVzdWx0
cyk6Ci0gICAgICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgc2VsZi50b3RhbEZhaWxlZFRl
c3RzID4gMDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnN0YXR1c0xpbmUKLQotICAgICAgICBy
ZXR1cm4gW3NlbGYubmFtZV0KLQotCi1jbGFzcyBSdW5HdGtBUElUZXN0cyhSdW5HTGliQVBJVGVz
dHMpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10
ZXN0cyIsIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLQotY2xhc3Mg
UnVuV1BFQVBJVGVzdHMoUnVuR0xpYkFQSVRlc3RzKToKLSAgICBjb21tYW5kID0gWyJweXRob24i
LCAiLi9Ub29scy9TY3JpcHRzL3J1bi13cGUtdGVzdHMiLCBXaXRoUHJvcGVydGllcygiLS0lKGNv
bmZpZ3VyYXRpb24pcyIpXQotCi0KLWNsYXNzIFJ1bldlYkRyaXZlclRlc3RzKHNoZWxsLlRlc3Qp
OgotICAgIG5hbWUgPSAid2ViZHJpdmVyLXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBbIndlYmRy
aXZlci10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbIndlYmRyaXZlci10
ZXN0cyJdCi0gICAganNvbkZpbGVOYW1lID0gIndlYmRyaXZlcl90ZXN0cy5qc29uIgotICAgIGNv
bW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmRyaXZlci10ZXN0cyIs
ICItLWpzb24tb3V0cHV0PXswfSIuZm9ybWF0KGpzb25GaWxlTmFtZSksIFdpdGhQcm9wZXJ0aWVz
KCItLSUoY29uZmlndXJhdGlvbilzIildCi0gICAgbG9nZmlsZXMgPSB7Impzb24iOiBqc29uRmls
ZU5hbWV9Ci0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGFkZGl0aW9uYWxBcmd1bWVu
dHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRpdGlvbmFsQXJndW1lbnRzJykKLSAgICAgICAgaWYg
YWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNv
bW1hbmQgKyBhZGRpdGlvbmFsQXJndW1lbnRzKQotCi0gICAgICAgIGFwcGVuZEN1c3RvbUJ1aWxk
RmxhZ3Moc2VsZiwgc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKSwgc2VsZi5nZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJykpCi0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYp
Ci0KLSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAgICAgIHNoZWxsLlRl
c3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dz
WydzdGRpbyddLmdldFRleHQoKQotCi0gICAgICAgIHNlbGYuZmFpbHVyZXNDb3VudCA9IDAKLSAg
ICAgICAgc2VsZi5uZXdQYXNzZXNDb3VudCA9IDAKLSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZp
bmRhbGwoIl5VbmV4cGVjdGVkIC4rIFwoKFxkKylcKSIsIGxvZ1RleHQsIHJlLk1VTFRJTElORSkK
LSAgICAgICAgaWYgZm91bmRJdGVtczoKLSAgICAgICAgICAgIHNlbGYuZmFpbHVyZXNDb3VudCA9
IGludChmb3VuZEl0ZW1zWzBdKQotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiXkV4
cGVjdGVkIHRvIC4rLCBidXQgcGFzc2VkIFwoKFxkKylcKSIsIGxvZ1RleHQsIHJlLk1VTFRJTElO
RSkKLSAgICAgICAgaWYgZm91bmRJdGVtczoKLSAgICAgICAgICAgIHNlbGYubmV3UGFzc2VzQ291
bnQgPSBpbnQoZm91bmRJdGVtc1swXSkKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwg
Y21kKToKLSAgICAgICAgaWYgc2VsZi5mYWlsdXJlc0NvdW50OgotICAgICAgICAgICAgcmV0dXJu
IEZBSUxVUkUKLQotICAgICAgICBpZiBzZWxmLm5ld1Bhc3Nlc0NvdW50OgotICAgICAgICAgICAg
cmV0dXJuIFdBUk5JTkdTCi0KLSAgICAgICAgaWYgY21kLnJjICE9IDA6Ci0gICAgICAgICAgICBy
ZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBkZWYgZ2V0VGV4
dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRUZXh0MihjbWQs
IHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAg
ICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTIGFuZCAoc2VsZi5mYWlsdXJlc0NvdW50IG9yIHNlbGYu
bmV3UGFzc2VzQ291bnQpOgotICAgICAgICAgICAgbGluZXMgPSBbXQotICAgICAgICAgICAgaWYg
c2VsZi5mYWlsdXJlc0NvdW50OgotICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgiJWQgZmFp
bHVyZXMiICUgc2VsZi5mYWlsdXJlc0NvdW50KQotICAgICAgICAgICAgaWYgc2VsZi5uZXdQYXNz
ZXNDb3VudDoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVkIG5ldyBwYXNzZXMiICUg
c2VsZi5uZXdQYXNzZXNDb3VudCkKLSAgICAgICAgICAgIHJldHVybiBbIiVzICVzIiAlIChzZWxm
Lm5hbWUsICIsICIuam9pbihsaW5lcykpXQotCi0gICAgICAgIHJldHVybiBbc2VsZi5uYW1lXQot
Ci0KLWNsYXNzIFJ1bldlYktpdDFUZXN0cyhSdW5XZWJLaXRUZXN0cyk6Ci0gICAgZGVmIHN0YXJ0
KHNlbGYpOgotICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyItLWR1bXAt
cmVuZGVyLXRyZWUiXSkKLQotICAgICAgICByZXR1cm4gUnVuV2ViS2l0VGVzdHMuc3RhcnQoc2Vs
ZikKLQotCi1jbGFzcyBSdW5XZWJLaXQxTGVha1Rlc3RzKFJ1bldlYktpdDFUZXN0cyk6Ci0gICAg
d2FudF9zdGRvdXQgPSBGYWxzZQotICAgIHdhbnRfc3RkZXJyID0gRmFsc2UKLSAgICB3YXJuT25X
YXJuaW5ncyA9IFRydWUKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRD
b21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1sZWFrcyIsICItLXJlc3VsdC1yZXBvcnQtZmxhdm9y
IiwgIkxlYWtzIl0pCi0gICAgICAgIHJldHVybiBSdW5XZWJLaXQxVGVzdHMuc3RhcnQoc2VsZikK
LQotCi1jbGFzcyBSdW5BbmRVcGxvYWRQZXJmVGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9
ICJwZXJmLXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBbInBlcmYtdGVzdHMgcnVubmluZyJdCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWyJwZXJmLXRlc3RzIl0KLSAgICBjb21tYW5kID0gWyJweXRo
b24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi1wZXJmLXRlc3RzIiwKLSAgICAgICAgICAgICAgICIt
LW91dHB1dC1qc29uLXBhdGgiLCAicGVyZi10ZXN0LXJlc3VsdHMuanNvbiIsCi0gICAgICAgICAg
ICAgICAiLS1zbGF2ZS1jb25maWctanNvbi1wYXRoIiwgIi4uLy4uL3BlcmYtdGVzdC1jb25maWcu
anNvbiIsCi0gICAgICAgICAgICAgICAiLS1uby1zaG93LXJlc3VsdHMiLAotICAgICAgICAgICAg
ICAgIi0tcmVzZXQtcmVzdWx0cyIsCi0gICAgICAgICAgICAgICAiLS10ZXN0LXJlc3VsdHMtc2Vy
dmVyIiwgInBlcmYud2Via2l0Lm9yZyIsCi0gICAgICAgICAgICAgICAiLS1idWlsZGVyLW5hbWUi
LCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICAgICAgICAiLS1i
dWlsZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWlsZG51bWJlcilzIiksCi0gICAgICAg
ICAgICAgICAiLS1wbGF0Zm9ybSIsIFdpdGhQcm9wZXJ0aWVzKCIlKGZ1bGxQbGF0Zm9ybSlzIiks
Ci0gICAgICAgICAgICAgICAiLS1uby1idWlsZCIsCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVy
dGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAg
ICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID0gc2VsZi5nZXRQcm9wZXJ0eSgiYWRkaXRpb25hbEFy
Z3VtZW50cyIpCi0gICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHM6Ci0gICAgICAgICAgICBz
ZWxmLmNvbW1hbmQgKz0gYWRkaXRpb25hbEFyZ3VtZW50cwotICAgICAgICBzZWxmLnNldENvbW1h
bmQoc2VsZi5jb21tYW5kKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQot
Ci0gICAgZGVmIGdldFRleHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuZ2V0VGV4dDIoY21kLCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwg
cmVzdWx0cyk6Ci0gICAgICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIGlm
IGNtZC5yYyA9PSAtMSAmIDB4ZmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsiYnVpbGQgbm90
IHVwIHRvIGRhdGUiXQotICAgICAgICAgICAgZWxpZiBjbWQucmMgPT0gLTIgJiAweGZmOgotICAg
ICAgICAgICAgICAgIHJldHVybiBbIndvcmtlciBjb25maWcgSlNPTiBlcnJvciJdCi0gICAgICAg
ICAgICBlbGlmIGNtZC5yYyA9PSAtMyAmIDB4ZmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsi
b3V0cHV0IEpTT04gbWVyZ2UgZXJyb3IiXQotICAgICAgICAgICAgZWxpZiBjbWQucmMgPT0gLTQg
JiAweGZmOgotICAgICAgICAgICAgICAgIHJldHVybiBbInVwbG9hZCBlcnJvciJdCi0gICAgICAg
ICAgICBlbGlmIGNtZC5yYyA9PSAtNSAmIDB4ZmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsi
c3lzdGVtIGRlcGVuZGVuY3kgZXJyb3IiXQotICAgICAgICAgICAgZWxpZiBjbWQucmMgPT0gLTE6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsidGltZW91dCJdCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHJldHVybiBbIiVkIHBlcmYgdGVzdHMgZmFpbGVkIiAlIGNtZC5yY10K
LQotICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KLQotCi1jbGFzcyBSdW5CZW5jaG1hcmtUZXN0
cyhzaGVsbC5UZXN0KToKLSAgICBuYW1lID0gImJlbmNobWFyay10ZXN0IgotICAgIGRlc2NyaXB0
aW9uID0gWyJiZW5jaG1hcmsgdGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0g
WyJiZW5jaG1hcmsgdGVzdHMiXQotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL1Nj
cmlwdHMvYnJvd3NlcnBlcmZkYXNoLWJlbmNobWFyayIsICItLWFsbHBsYW5zIiwKLSAgICAgICAg
ICAgICAgICItLWNvbmZpZy1maWxlIiwgIi4uLy4uL2Jyb3dzZXJwZXJmZGFzaC1iZW5jaG1hcmst
Y29uZmlnLnR4dCIsCi0gICAgICAgICAgICAgICAiLS1icm93c2VyLXZlcnNpb24iLCBXaXRoUHJv
cGVydGllcygiciUoZ290X3JldmlzaW9uKXMiKV0KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCJwbGF0Zm9ybSIpCi0gICAgICAgIGlm
IHBsYXRmb3JtID09ICJndGsiOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kICs9IFsiLS1icm93
c2VyIiwgIm1pbmlicm93c2VyLWd0ayJdCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNv
bW1hbmQpCi0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYg
Z2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRUZXh0
MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2VsZiwgY21kLCByZXN1bHRzKToK
LSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIFsiJWQg
YmVuY2htYXJrIHRlc3RzIGZhaWxlZCIgJSBjbWQucmNdCi0gICAgICAgIHJldHVybiBbc2VsZi5u
YW1lXQotCi0KLWNsYXNzIEFyY2hpdmVUZXN0UmVzdWx0cyhzaGVsbC5TaGVsbENvbW1hbmQpOgot
ICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3Rlc3Qt
cmVzdWx0LWFyY2hpdmUiLAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZv
cm09JShwbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiks
ICJhcmNoaXZlIl0KLSAgICBuYW1lID0gImFyY2hpdmUtdGVzdC1yZXN1bHRzIgotICAgIGRlc2Ny
aXB0aW9uID0gWyJhcmNoaXZpbmcgdGVzdCByZXN1bHRzIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbImFyY2hpdmVkIHRlc3QgcmVzdWx0cyJdCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQot
Ci1jbGFzcyBVcGxvYWRUZXN0UmVzdWx0cyh0cmFuc2Zlci5GaWxlVXBsb2FkKToKLSAgICB3b3Jr
ZXJzcmMgPSAibGF5b3V0LXRlc3QtcmVzdWx0cy56aXAiCi0gICAgbWFzdGVyZGVzdCA9IFdpdGhQ
cm9wZXJ0aWVzKCJwdWJsaWNfaHRtbC9yZXN1bHRzLyUoYnVpbGRlcm5hbWUpcy9yJShnb3RfcmV2
aXNpb24pcyAoJShidWlsZG51bWJlcilzKS56aXAiKQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
ICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydzbGF2ZXNyYyddID0gc2VsZi53b3JrZXJzcmMK
LSAgICAgICAga3dhcmdzWydtYXN0ZXJkZXN0J10gPSBzZWxmLm1hc3RlcmRlc3QKLSAgICAgICAg
a3dhcmdzWydtb2RlJ10gPSAwbzY0NAotICAgICAgICBrd2FyZ3NbJ2Jsb2Nrc2l6ZSddID0gMTAy
NCAqIDI1NgotICAgICAgICB0cmFuc2Zlci5GaWxlVXBsb2FkLl9faW5pdF9fKHNlbGYsICoqa3dh
cmdzKQotCi0KLWNsYXNzIFRyYW5zZmVyVG9TMyhtYXN0ZXIuTWFzdGVyU2hlbGxDb21tYW5kKToK
LSAgICBuYW1lID0gInRyYW5zZmVyLXRvLXMzIgotICAgIGRlc2NyaXB0aW9uID0gWyJ0cmFuc2Zl
cnJpbmcgdG8gczMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsidHJhbnNmZXJyZWQgdG8gczMi
XQotICAgIGFyY2hpdmUgPSBXaXRoUHJvcGVydGllcygiYXJjaGl2ZXMvJShmdWxsUGxhdGZvcm0p
cy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzLyUoZ290X3JldmlzaW9uKXMuemlw
IikKLSAgICBtaW5pZmllZEFyY2hpdmUgPSBXaXRoUHJvcGVydGllcygiYXJjaGl2ZXMvJShmdWxs
UGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzL21pbmlmaWVkLSUo
Z290X3JldmlzaW9uKXMuemlwIikKLSAgICBpZGVudGlmaWVyID0gV2l0aFByb3BlcnRpZXMoIiUo
ZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcyIpCi0gICAg
cmV2aXNpb24gPSBXaXRoUHJvcGVydGllcygiJShnb3RfcmV2aXNpb24pcyIpCi0gICAgY29tbWFu
ZCA9IFsicHl0aG9uIiwgIi4uL1NoYXJlZC90cmFuc2Zlci1hcmNoaXZlLXRvLXMzIiwgIi0tcmV2
aXNpb24iLCByZXZpc2lvbiwgIi0taWRlbnRpZmllciIsIGlkZW50aWZpZXIsICItLWFyY2hpdmUi
LCBhcmNoaXZlXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ2NvbW1hbmQnXSA9IHNlbGYuY29tbWFu
ZAotICAgICAgICBtYXN0ZXIuTWFzdGVyU2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYsICoqa3dh
cmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICByZXR1cm4gbWFzdGVyLk1hc3Rl
clNoZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0gICAgZGVmIGZpbmlzaGVkKHNlbGYsIHJlc3Vs
dCk6Ci0gICAgICAgIHJldHVybiBtYXN0ZXIuTWFzdGVyU2hlbGxDb21tYW5kLmZpbmlzaGVkKHNl
bGYsIHJlc3VsdCkKLQotCi1jbGFzcyBFeHRyYWN0VGVzdFJlc3VsdHMobWFzdGVyLk1hc3RlclNo
ZWxsQ29tbWFuZCk6Ci0gICAgemlwRmlsZSA9IFdpdGhQcm9wZXJ0aWVzKCJwdWJsaWNfaHRtbC9y
ZXN1bHRzLyUoYnVpbGRlcm5hbWUpcy9yJShnb3RfcmV2aXNpb24pcyAoJShidWlsZG51bWJlcilz
KS56aXAiKQotICAgIHJlc3VsdERpcmVjdG9yeSA9IFdpdGhQcm9wZXJ0aWVzKCJwdWJsaWNfaHRt
bC9yZXN1bHRzLyUoYnVpbGRlcm5hbWUpcy9yJShnb3RfcmV2aXNpb24pcyAoJShidWlsZG51bWJl
cilzKSIpCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJ1cGxvYWRlZCByZXN1bHRzIl0KLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snY29tbWFuZCdd
ID0gIiIKLSAgICAgICAgbWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAq
Kmt3YXJncykKLQotICAgIGRlZiByZXN1bHREaXJlY3RvcnlVUkwoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLmJ1aWxkLmdldFByb3BlcnRpZXMoKS5yZW5kZXIoc2VsZi5yZXN1bHREaXJlY3Rv
cnkpLnJlcGxhY2UoInB1YmxpY19odG1sLyIsICIvIikgKyAiLyIKLQotICAgIGRlZiBzdGFydChz
ZWxmKToKLSAgICAgICAgc2VsZi5jb21tYW5kID0gWyJ1bnppcCIsIHNlbGYuYnVpbGQuZ2V0UHJv
cGVydGllcygpLnJlbmRlcihzZWxmLnppcEZpbGUpLCAiLWQiLCBzZWxmLmJ1aWxkLmdldFByb3Bl
cnRpZXMoKS5yZW5kZXIoc2VsZi5yZXN1bHREaXJlY3RvcnkpXQotICAgICAgICByZXR1cm4gbWFz
dGVyLk1hc3RlclNoZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0gICAgZGVmIGFkZEN1c3RvbVVS
THMoc2VsZik6Ci0gICAgICAgIHNlbGYuYWRkVVJMKCJ2aWV3IGxheW91dCB0ZXN0IHJlc3VsdHMi
LCBzZWxmLnJlc3VsdERpcmVjdG9yeVVSTCgpICsgInJlc3VsdHMuaHRtbCIpCi0gICAgICAgIHNl
bGYuYWRkVVJMKCJ2aWV3IGRhc2hib2FyZCB0ZXN0IHJlc3VsdHMiLCBzZWxmLnJlc3VsdERpcmVj
dG9yeVVSTCgpICsgImRhc2hib2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzL3Jlc3VsdHMuaHRtbCIp
Ci0KLSAgICBkZWYgZmluaXNoZWQoc2VsZiwgcmVzdWx0KToKLSAgICAgICAgc2VsZi5hZGRDdXN0
b21VUkxzKCkKLSAgICAgICAgcmV0dXJuIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuZmluaXNo
ZWQoc2VsZiwgcmVzdWx0KQotCi0KLWNsYXNzIEV4dHJhY3RUZXN0UmVzdWx0c0FuZExlYWtzKEV4
dHJhY3RUZXN0UmVzdWx0cyk6Ci0gICAgZGVmIGFkZEN1c3RvbVVSTHMoc2VsZik6Ci0gICAgICAg
IEV4dHJhY3RUZXN0UmVzdWx0cy5hZGRDdXN0b21VUkxzKHNlbGYpCi0gICAgICAgIHVybCA9ICIv
TGVha3NWaWV3ZXIvP3VybD0iICsgdXJsbGliLnF1b3RlKHNlbGYucmVzdWx0RGlyZWN0b3J5VVJM
KCksIHNhZmU9IiIpCi0gICAgICAgIHNlbGYuYWRkVVJMKCJ2aWV3IGxlYWtzIiwgdXJsKQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2ODczMSkKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3Vu
aXR0ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsNjk0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQganNvbgotCi0j
IFNob3cgRGVwcmljYXRpb25XYXJuaW5ncyBjb21lIGZyb20gYnVpbGRib3QgLSBpdCBpc24ndCBk
ZWZhdWx0IHdpdGggUHl0aG9uIDIuNyBvciBuZXdlci4KLSMgU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MDE2MSBmb3IgZGV0YWlscy4KLWltcG9ydCB3YXJuaW5n
cwotd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdkZWZhdWx0JykKLQotCi1jbGFzcyBCdWlsZEJvdENv
bmZpZ0xvYWRlcihvYmplY3QpOgotICAgIGRlZiBfYWRkX3dlYmtpdHB5X3RvX3N5c19wYXRoKHNl
bGYpOgotICAgICAgICAjIFdoZW4gZmlsZXMgYXJlIHBhc3NlZCB0byB0aGUgcHl0aG9uIGludGVy
cHJldGVyIG9uIHRoZSBjb21tYW5kIGxpbmUgKGUuZy4gcHl0aG9uIHRlc3QucHkpIF9fZmlsZV9f
IGlzIGEgcmVsYXRpdmUgcGF0aC4KLSAgICAgICAgYWJzb2x1dGVfZmlsZV9wYXRoID0gb3MucGF0
aC5hYnNwYXRoKF9fZmlsZV9fKQotICAgICAgICB3ZWJraXRfb3JnX2NvbmZpZ19kaXIgPSBvcy5w
YXRoLmRpcm5hbWUoYWJzb2x1dGVfZmlsZV9wYXRoKQotICAgICAgICB3b3JrZXJfc3VwcG9ydF9k
aXIgPSBvcy5wYXRoLmRpcm5hbWUod2Via2l0X29yZ19jb25maWdfZGlyKQotICAgICAgICB3ZWJr
aXRfdG9vbHNfZGlyID0gb3MucGF0aC5kaXJuYW1lKHdvcmtlcl9zdXBwb3J0X2RpcikKLSAgICAg
ICAgc2NyaXB0c19kaXIgPSBvcy5wYXRoLmpvaW4od2Via2l0X3Rvb2xzX2RpciwgJ1NjcmlwdHMn
KQotICAgICAgICBzeXMucGF0aC5hcHBlbmQoc2NyaXB0c19kaXIpCi0KLSAgICBkZWYgX2FkZF9k
ZXBlbmRlbnRfbW9kdWxlc190b19zeXNfbW9kdWxlcyhzZWxmKToKLSAgICAgICAgc2VsZi5fYWRk
X3dlYmtpdHB5X3RvX3N5c19wYXRoKCkKLSAgICAgICAgZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5
LmF1dG9pbnN0YWxsZWQgaW1wb3J0IGJ1aWxkYm90Ci0gICAgICAgIHN5cy5tb2R1bGVzWydidWls
ZGJvdCddID0gYnVpbGRib3QKLQotCi1jbGFzcyBSdW5XZWJLaXRUZXN0c1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X25yd3RfbGVha3NfcGFyc2luZyhzZWxmKToKLSAgICAg
ICAgcnVuX3dlYmtpdF90ZXN0cyA9IFJ1bldlYktpdFRlc3RzKCkgICMgcHlsaW50IGlzIGNvbmZ1
c2VkIGJ5IHRoZSB3YXkgd2UgaW1wb3J0IHRoZSBtb2R1bGUgLi4uIHB5bGludDogZGlzYWJsZS1t
c2c9RTA2MDIKLSAgICAgICAgbG9nX3RleHQgPSAiIiIKLTEyOjQ0OjI0LjI5NSA3NzcwNiAxMzk4
MSB0b3RhbCBsZWFrcyBmb3VuZCBmb3IgYSB0b3RhbCBvZiAxOTcsOTM2IGJ5dGVzLgotMTI6NDQ6
MjQuMjk1IDc3NzA2IDEgdW5pcXVlIGxlYWtzIGZvdW5kLgotIiIiCi0gICAgICAgIGV4cGVjdGVk
X2luY29ycmVjdF9saW5lcyA9IFsKLSAgICAgICAgICAgICcxMzk4MSB0b3RhbCBsZWFrcyBmb3Vu
ZCBmb3IgYSB0b3RhbCBvZiAxOTcsOTM2IGJ5dGVzLicsCi0gICAgICAgICAgICAnMSB1bmlxdWUg
bGVha3MgZm91bmQuJywKLSAgICAgICAgXQotICAgICAgICBydW5fd2Via2l0X3Rlc3RzLl9wYXJz
ZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ190ZXh0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJ1bl93ZWJraXRfdGVzdHMuaW5jb3JyZWN0TGF5b3V0TGluZXMsIGV4cGVjdGVkX2luY29ycmVj
dF9saW5lcykKLQotICAgIGRlZiB0ZXN0X25yd3RfbWlzc2luZ19yZXN1bHRzKHNlbGYpOgotICAg
ICAgICBydW5fd2Via2l0X3Rlc3RzID0gUnVuV2ViS2l0VGVzdHMoKSAgIyBweWxpbnQgaXMgY29u
ZnVzZWQgYnkgdGhlIHdheSB3ZSBpbXBvcnQgdGhlIG1vZHVsZSAuLi4gcHlsaW50OiBkaXNhYmxl
LW1zZz1FMDYwMgotICAgICAgICBsb2dfdGV4dCA9ICIiIgotRXhwZWN0ZWQgdG8gZmFpbCwgYnV0
IHBhc3NlZDogKDIpCi0gIGFuaW1hdGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMu
aHRtbAotICBhbmltYXRpb25zL2Nyb3NzLWZhZGUtd2Via2l0LW1hc2stYm94LWltYWdlLmh0bWwK
LQotVW5leHBlY3RlZCBmbGFraW5lc3M6IHRleHQtb25seSBmYWlsdXJlcyAoMikKLSAgZmFzdC9l
dmVudHMvdG91Y2gvdG91Y2gtaW5zaWRlLWlmcmFtZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KLSAg
aHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1vbi1m
cmFtZS1uYXZpZ2F0aW9uLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQotCi1VbmV4cGVjdGVkIGZsYWtp
bmVzczogdGltZW91dHMgKDEpCi0gIHN2Zy90ZXh0L2ZvcmVpZ25PYmplY3QtcmVwYWludC54bWwg
WyBUaW1lb3V0IFBhc3MgXQotCi1SZWdyZXNzaW9uczogVW5leHBlY3RlZCBtaXNzaW5nIHJlc3Vs
dHMgKDEpCi0gIHN2Zy9jdXN0b20vemVyby1wYXRoLXNxdWFyZS1jYXAtcmVuZGVyaW5nMi5zdmcg
WyBNaXNzaW5nIF0KLQotUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgdGV4dC1vbmx5IGZhaWx1cmVz
ICgxKQotICBzdmcvY3VzdG9tL3plcm8tcGF0aC1zcXVhcmUtY2FwLXJlbmRlcmluZzIuc3ZnIFsg
RmFpbHVyZSBdCi0iIiIKLSAgICAgICAgcnVuX3dlYmtpdF90ZXN0cy5fcGFyc2VSdW5XZWJLaXRU
ZXN0c091dHB1dChsb2dfdGV4dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocnVuX3dl
YmtpdF90ZXN0cy5pbmNvcnJlY3RMYXlvdXRMaW5lcyksCi0gICAgICAgICAgICBzZXQoWycyIG5l
dyBwYXNzZXMnLCAnMyBmbGFrZXMnLCAnMSBtaXNzaW5nIHJlc3VsdHMnLCAnMSBmYWlsdXJlcydd
KSkKLQotCi1jbGFzcyBTdHViU3RkaW8ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
c3RkaW8pOgotICAgICAgICBzZWxmLl9zdGRpbyA9IHN0ZGlvCi0KLSAgICBkZWYgZ2V0VGV4dChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3N0ZGlvCi0KLQotY2xhc3MgU3R1YlJlbW90ZUNv
bW1hbmQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmMsIHN0ZGlvKToKLSAgICAg
ICAgc2VsZi5yYyA9IHJjCi0gICAgICAgIHNlbGYubG9ncyA9IHsnc3RkaW8nOiBTdHViU3RkaW8o
c3RkaW8pfQotCi0KLWNsYXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCBleHBlY3RlZF9yZXN1bHQsIGV4
cGVjdGVkX3RleHQsIHJjLCBzdGRpbyk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5k
KHJjLCBzdGRpbykKLSAgICAgICAgc3RlcCA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoKQotICAg
ICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0g
c3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAuZ2V0
VGV4dDIoY21kLCBhY3R1YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkX3Jlc3VsdCwgYWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9ub19yZWdyZXNzaW9u
c19vbGRfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoU1VDQ0VTUywg
WyJqc2NvcmUtdGVzdCJdLCAwLCAiIiJSZXN1bHRzIGZvciBNb3ppbGxhIHRlc3RzOgotICAgIDAg
cmVncmVzc2lvbnMgZm91bmQuCi0gICAgMCB0ZXN0cyBmaXhlZC4KLSAgICBPSy4iIiIpCi0KLSAg
ICBkZWYgdGVzdF9ub19mYWlsdXJlX25ld19vdXRwdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0UmVzdWx0cyhTVUNDRVNTLCBbImpzY29yZS10ZXN0Il0sIDAsICIiIlJlc3VsdHMgZm9yIEpT
QyBzdHJlc3MgdGVzdHM6Ci0gICAgMCBmYWlsdXJlcyBmb3VuZC4KLSAgICBPSy4iIiIpCi0KLSAg
ICBkZWYgdGVzdF9tb3ppbGxhX2ZhaWx1cmVfb2xkX291dHB1dChzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiMSBKU0MgdGVzdCBmYWlsZWQiXSwgMSwgIiIiUmVz
dWx0cyBmb3IgTW96aWxsYSB0ZXN0czoKLSAgICAxIHJlZ3Jlc3Npb24gZm91bmQuCi0gICAgMCB0
ZXN0cyBmaXhlZC4iIiIpCi0KLSAgICBkZWYgdGVzdF9tb3ppbGxhX2ZhaWx1cmVzX29sZF9vdXRw
dXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbIjIgSlNDIHRl
c3RzIGZhaWxlZCJdLCAxLCAiIiJSZXN1bHRzIGZvciBNb3ppbGxhIHRlc3RzOgotICAgIDIgcmVn
cmVzc2lvbnMgZm91bmQuCi0gICAgMCB0ZXN0cyBmaXhlZC4iIiIpCi0KLSAgICBkZWYgdGVzdF9q
c2Nfc3RyZXNzX2ZhaWx1cmVfbmV3X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRS
ZXN1bHRzKEZBSUxVUkUsIFsiMSBKU0MgdGVzdCBmYWlsZWQiXSwgMSwgICIiIlJlc3VsdHMgZm9y
IEpTQyBzdHJlc3MgdGVzdHM6Ci0gICAgMSBmYWlsdXJlIGZvdW5kLiIiIikKLQotICAgIGRlZiB0
ZXN0X2pzY19zdHJlc3NfZmFpbHVyZXNfbmV3X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiNSBKU0MgdGVzdHMgZmFpbGVkIl0sIDEsICAiIiJSZXN1
bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOgotICAgIDUgZmFpbHVyZXMgZm91bmQuIiIiKQotCi0g
ICAgZGVmIHRlc3RfanNjX3N0cmVzc19mYWlsdXJlc193aXRoX2JpbmFyeV9yZXN1bHRzX291dHB1
dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiOCBKU0MgdGVz
dHMgZmFpbGVkIl0sIDEsICAiIiJSZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOgotICAgIDUg
ZmFpbHVyZXMgZm91bmQuCi1SZXN1bHRzIGZvciBKU0MgdGVzdCBiaW5hcmllczoKLSAgICAzIGZh
aWx1cmVzIGZvdW5kLiIiIikKLQotICAgIGRlZiB0ZXN0X2pzY19zdHJlc3NfZmFpbHVyZXNfd2l0
aF9iaW5hcnlfcmVzdWx0X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRz
KEZBSUxVUkUsIFsiNiBKU0MgdGVzdHMgZmFpbGVkIl0sIDEsICAiIiJSZXN1bHRzIGZvciBKU0Mg
c3RyZXNzIHRlc3RzOgotICAgIDUgZmFpbHVyZXMgZm91bmQuCi1SZXN1bHRzIGZvciBKU0MgdGVz
dCBiaW5hcmllczoKLSAgICAxIGZhaWx1cmUgZm91bmQuIiIiKQotCi0KLWNsYXNzIFJ1blRlc3Qy
NjJUZXN0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNl
bGYsIGV4cGVjdGVkX3Jlc3VsdCwgZXhwZWN0ZWRfdGV4dCwgcmMsIHN0ZGlvKToKLSAgICAgICAg
Y21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0gUnVuVGVz
dDI2MlRlc3RzKCkKLSAgICAgICAgc3RlcC5jb21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBh
Y3R1YWxfcmVzdWx0cyA9IHN0ZXAuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFs
X3RleHQgPSBzdGVwLmdldFRleHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZF9yZXN1bHQsIGFjdHVhbF9yZXN1bHRzKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQotCi0gICAgZGVmIHRl
c3Rfbm9fcmVncmVzc2lvbnNfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3Vs
dHMoU1VDQ0VTUywgWyJ0ZXN0MjYyLXRlc3QiXSwgMCwgIiIiCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tU2V0dGluZ3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3QyNjIgRGlyOiBKU1Rl
c3RzL3Rlc3QyNjIKLUpTQzogV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKLURZTERfRlJBTUVXT1JL
X1BBVEg6IFdlYktpdEJ1aWxkL1JlbGVhc2UKLUNoaWxkIFByb2Nlc3NlczogMzIKLUNvbmZpZyBm
aWxlOiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvY29uZmlnLnlhbWwKLUV4cGVjdGF0aW9ucyBmaWxl
OiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5FVyBQQVNTOiB0
ZXN0L2FubmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKGRl
ZmF1bHQpCi1ORVcgUEFTUyB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2NsYXNzL2ZpZWxkcy1h
ZnRlci1zYW1lLWxpbmUtc3RhdGljLW1ldGhvZC1jb21wdXRlZC1zeW1ib2wtbmFtZXMuanMgKGRl
ZmF1bHQpCi0KLVJ1biB3aXRoIC0tc2F2ZSB0byBzYXZlIGEgbmV3IGV4cGVjdGF0aW9ucyBmaWxl
Ci1TYXZlZCBhbGwgdGhlIHJlc3VsdHMgaW4gVG9vbHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMu
eWFtbAotU3VtbWFyaXppbmcgcmVzdWx0cy4uLgotU2VlIHN1bW1hcml6ZWQgcmVzdWx0cyBpbiBU
b29scy9TY3JpcHRzL3Rlc3QyNjIvcmVzdWx0cy1zdW1tYXJ5LnR4dAotCi01NjA3MSB0ZXN0cyBy
YW4KLTAgZXhwZWN0ZWQgdGVzdHMgZmFpbGVkCi0wIHRlc3RzIG5ld2x5IGZhaWwKLTI1NDYgdGVz
dHMgbmV3bHkgcGFzcwotMTI0MSB0ZXN0IGZpbGVzIHNraXBwZWQKLURvbmUgaW4gMjQ3IHNlY29u
ZHMhCi0iIiIpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX291dHB1dChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiMSBUZXN0MjYyIHRlc3QgZmFpbGVkIl0sIDAs
ICIiIgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVNldHRpbmdzLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1UZXN0MjYyIERpcjogSlNUZXN0cy90ZXN0MjYyCi1KU0M6IFdlYktpdEJ1aWxkL1Jl
bGVhc2UvanNjCi1EWUxEX0ZSQU1FV09SS19QQVRIOiBXZWJLaXRCdWlsZC9SZWxlYXNlCi1DaGls
ZCBQcm9jZXNzZXM6IDMyCi1Db25maWcgZmlsZTogVG9vbHMvU2NyaXB0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCi1FeHBlY3RhdGlvbnMgZmlsZTogVG9vbHMvU2NyaXB0cy90ZXN0MjYyL2V4cGVjdGF0
aW9ucy55YW1sCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi0hIE5FVyBGQUlMOiB0ZXN0L2FubmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90
b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKGRlZmF1bHQpCi1ORVcgUEFTUyB0ZXN0L2xhbmd1YWdl
L2V4cHJlc3Npb25zL2NsYXNzL2ZpZWxkcy1hZnRlci1zYW1lLWxpbmUtc3RhdGljLW1ldGhvZC1j
b21wdXRlZC1zeW1ib2wtbmFtZXMuanMgKGRlZmF1bHQpCi0KLVJ1biB3aXRoIC0tc2F2ZSB0byBz
YXZlIGEgbmV3IGV4cGVjdGF0aW9ucyBmaWxlCi1TYXZlZCBhbGwgdGhlIHJlc3VsdHMgaW4gVG9v
bHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMueWFtbAotU3VtbWFyaXppbmcgcmVzdWx0cy4uLgot
U2VlIHN1bW1hcml6ZWQgcmVzdWx0cyBpbiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvcmVzdWx0cy1z
dW1tYXJ5LnR4dAotCi01NjA3MSB0ZXN0cyByYW4KLTAgZXhwZWN0ZWQgdGVzdHMgZmFpbGVkCi0w
IHRlc3RzIG5ld2x5IGZhaWwKLTI1NDYgdGVzdHMgbmV3bHkgcGFzcwotMTI0MSB0ZXN0IGZpbGVz
IHNraXBwZWQKLURvbmUgaW4gMjQ3IHNlY29uZHMhCi0iIiIpCi0KLSAgICBkZWYgdGVzdF9mYWls
dXJlc19vdXRwdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBb
IjIgVGVzdDI2MiB0ZXN0cyBmYWlsZWQiXSwgMCwgIiIiCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tU2V0dGluZ3MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3QyNjIgRGlyOiBKU1Rlc3Rz
L3Rlc3QyNjIKLUpTQzogV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKLURZTERfRlJBTUVXT1JLX1BB
VEg6IFdlYktpdEJ1aWxkL1JlbGVhc2UKLUNoaWxkIFByb2Nlc3NlczogMzIKLUNvbmZpZyBmaWxl
OiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvY29uZmlnLnlhbWwKLUV4cGVjdGF0aW9ucyBmaWxlOiBU
b29scy9TY3JpcHRzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5FVyBQQVNTIHRlc3Qv
bGFuZ3VhZ2Uvc3RhdGVtZW50cy9jbGFzcy9maWVsZHMtYWZ0ZXItc2FtZS1saW5lLXN0YXRpYy1h
c3luYy1nZW4tY29tcHV0ZWQtbmFtZXMuanMgKGRlZmF1bHQpCi0hIE5FVyBGQUlMOiB0ZXN0L2Fu
bmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKGRlZmF1bHQp
Ci0hIE5FVyBGQUlMOiB0ZXN0L2FubmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVh
ci9sZW5ndGguanMgKHN0cmljdCBtb2RlKQotTkVXIFBBU1MgdGVzdC9sYW5ndWFnZS9leHByZXNz
aW9ucy9jbGFzcy9maWVsZHMtYWZ0ZXItc2FtZS1saW5lLXN0YXRpYy1tZXRob2QtY29tcHV0ZWQt
c3ltYm9sLW5hbWVzLmpzIChkZWZhdWx0KQotCi1SdW4gd2l0aCAtLXNhdmUgdG8gc2F2ZSBhIG5l
dyBleHBlY3RhdGlvbnMgZmlsZQotU2F2ZWQgYWxsIHRoZSByZXN1bHRzIGluIFRvb2xzL1Njcmlw
dHMvdGVzdDI2Mi9yZXN1bHRzLnlhbWwKLVN1bW1hcml6aW5nIHJlc3VsdHMuLi4KLVNlZSBzdW1t
YXJpemVkIHJlc3VsdHMgaW4gVG9vbHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMtc3VtbWFyeS50
eHQKLQotNTYwNzEgdGVzdHMgcmFuCi0wIGV4cGVjdGVkIHRlc3RzIGZhaWxlZAotMCB0ZXN0cyBu
ZXdseSBmYWlsCi0yNTQ2IHRlc3RzIG5ld2x5IHBhc3MKLTEyNDEgdGVzdCBmaWxlcyBza2lwcGVk
Ci1Eb25lIGluIDI0NyBzZWNvbmRzIQotIiIiKQotCi0KLWNsYXNzIFJ1bkxMSU5UQ0xvb3BUZXN0
c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNlbGYsIGV4
cGVjdGVkX3Jlc3VsdCwgZXhwZWN0ZWRfdGV4dCwgcmMsIHN0ZGlvKToKLSAgICAgICAgY21kID0g
U3R1YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0gUnVuTExJTlRDTG9v
cFRlc3RzKCkKLSAgICAgICAgc3RlcC5jb21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBhY3R1
YWxfcmVzdWx0cyA9IHN0ZXAuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFsX3Rl
eHQgPSBzdGVwLmdldFRleHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChleHBlY3RlZF9yZXN1bHQsIGFjdHVhbF9yZXN1bHRzKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQotCi0gICAgZGVmIHRlc3Rf
ZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbJzUg
cmVncmVzc2lvbnMgZm91bmQuJ10sIDEsICAnICAgIDUgcmVncmVzc2lvbnMgZm91bmQuJykKLQot
ICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhG
QUlMVVJFLCBbJzEgcmVncmVzc2lvbiBmb3VuZC4nXSwgMSwgICcgICAgMSByZWdyZXNzaW9uIGZv
dW5kLicpCi0KLSAgICBkZWYgdGVzdF9ub19mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydFJlc3VsdHMoU1VDQ0VTUywgWyd3ZWJraXQtanNjLWNsb29wLXRlc3QnXSwgMCwgICcgICAg
MCByZWdyZXNzaW9ucyBmb3VuZC4nKQotCi0KLWNsYXNzIFJ1bjMyYml0SlNDVGVzdHNUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCBleHBlY3RlZF9y
ZXN1bHQsIGV4cGVjdGVkX3RleHQsIHJjLCBzdGRpbyk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1v
dGVDb21tYW5kKHJjLCBzdGRpbykKLSAgICAgICAgc3RlcCA9IFJ1bjMyYml0SlNDVGVzdHMoKQot
ICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRz
ID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAu
Z2V0VGV4dDIoY21kLCBhY3R1YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX3Jlc3VsdCwgYWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoYWN0dWFsX3RleHQsIGV4cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnNSByZWdyZXNzaW9u
cyBmb3VuZC4nXSwgMSwgICcgICAgNSBmYWlsdXJlcyBmb3VuZC4nKQotCi0gICAgZGVmIHRlc3Rf
ZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnMSBy
ZWdyZXNzaW9uIGZvdW5kLiddLCAxLCAgJyAgICAxIGZhaWx1cmUgZm91bmQuJykKLQotICAgIGRl
ZiB0ZXN0X25vX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUND
RVNTLCBbJ3dlYmtpdC0zMmJpdC1qc2MtdGVzdCddLCAwLCAgJyAgICAwIGZhaWx1cmVzIGZvdW5k
LicpCi0KLQotY2xhc3MgUnVuQVBJVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgYXNzZXJ0RmFpbHVyZXMoc2VsZiwgZXhwZWN0ZWRfZmFpbHVyZV9jb3VudCwgc3RkaW8pOgot
ICAgICAgICBpZiBleHBlY3RlZF9mYWlsdXJlX2NvdW50OgotICAgICAgICAgICAgcmMgPSAxCi0g
ICAgICAgICAgICBleHBlY3RlZF9yZXN1bHRzID0gRkFJTFVSRQotICAgICAgICAgICAgcGx1cmFs
X3N1ZmZpeCA9ICIiIGlmIGV4cGVjdGVkX2ZhaWx1cmVfY291bnQgPT0gMSBlbHNlICJzIgotICAg
ICAgICAgICAgZXhwZWN0ZWRfdGV4dCA9ICclZCBhcGkgdGVzdCVzIGZhaWxlZCBvciB0aW1lZCBv
dXQnICUgKGV4cGVjdGVkX2ZhaWx1cmVfY291bnQsIHBsdXJhbF9zdWZmaXgpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByYyA9IDAKLSAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBT
VUNDRVNTCi0gICAgICAgICAgICBleHBlY3RlZF90ZXh0ID0gJ3J1bi1hcGktdGVzdHMnCi0KLSAg
ICAgICAgY21kID0gU3R1YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0g
UnVuQVBJVGVzdHMoKQotICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAg
IGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1
YWxfZmFpbHVyZV9jb3VudCA9IHN0ZXAuZmFpbGVkVGVzdENvdW50Ci0gICAgICAgIGFjdHVhbF90
ZXh0ID0gc3RlcC5nZXRUZXh0KGNtZCwgYWN0dWFsX3Jlc3VsdHMpWzBdCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChleHBlY3RlZF9yZXN1bHRzLCBhY3R1YWxfcmVzdWx0cykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9mYWlsdXJlX2NvdW50LCBhY3R1YWxfZmFpbHVyZV9j
b3VudCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4
dCkKLQotICAgIGRlZiB0ZXN0X25vX2ZhaWx1cmVzX29yX3RpbWVvdXRzKHNlbGYpOgotICAgICAg
ICBzZWxmLmFzc2VydEZhaWx1cmVzKDAsICIiIi4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFy
aWFudC5PcGVyYXRvckFtcGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuUmVmIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2Vk
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8w
IFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3Jr
ZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29y
a2VyLzAgZXhpdGluZwotUmFuIDE4ODggdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODggc3VjY2Vzc2Z1
bAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5
IHBhc3NlZCEKLSIiIikKLQotICAgIGRlZiB0ZXN0X25vX2ZhaWx1cmVzX29yX3RpbWVvdXRzX3dp
dGhfZGlzYWJsZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMCwgIiIiLi4u
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQu
UmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNp
bmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRv
clVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4MSB0ZXN0cyBv
ZiAxODg4IHdpdGggMTg4MSBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQotIiIiKQotCi0gICAgZGVmIHRlc3Rf
b25lX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMSwgIiIiLi4u
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQu
UmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNp
bmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRv
clVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBv
ZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLUNyYXNoZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0cmlu
Z0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5TdHJpbmdDb25jYXRl
bmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIEM6XFxjeWd3aW5cXGhvbWVcXGJ1aWxkYm90XFx3b3Jr
ZXJcXHdpbi1yZWxlYXNlXFxidWlsZFxcVG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXVEZc
XFN0cmluZ0NvbmNhdGVuYXRlLmNwcDo4NAotICAgICAgICBWYWx1ZSBvZjogbWFrZVN0cmluZygi
aGVsbG8gIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDQyKSAsICIgd29ybGQiKQotICAg
ICAgICAgIEFjdHVhbDogaGVsbG8gNDIgd29ybGQKLSAgICAgICAgRXhwZWN0ZWQ6ICJoZWxsbyAq
IHdvcmxkIgotICAgICAgICBXaGljaCBpczogNzRCMDBDOUMKLQotVGVzdGluZyBjb21wbGV0ZWQs
IEV4aXQgc3RhdHVzOiAzCi0iIiIpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9mYWlsdXJlcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlcygyLCAiIiIuLi4KLXdvcmtlci8wIFRl
c3RXVEYuV1RGX1ZhcmlhbnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQu
UmVmUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFz
c2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9y
IFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hP
biBQYXNzZWQKLXdvcmtlci8wIGV4aXRpbmcKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODggd2l0aCAx
ODg2IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGVzdCBzdWl0
ZSBmYWlsZWQKLQotQ3Jhc2hlZAotCi0gICAgVGVzdFdURi5XVEYuU3RyaW5nQ29uY2F0ZW5hdGVf
VW5zaWduZWQKLSAgICAgICAgKipGQUlMKiogV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVk
Ci0KLSAgICAgICAgQzpcXGN5Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdvcmtlclxcd2luLXJlbGVh
c2VcXGJ1aWxkXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdURlxcU3RyaW5nQ29uY2F0
ZW5hdGUuY3BwOjg0Ci0gICAgICAgIFZhbHVlIG9mOiBtYWtlU3RyaW5nKCJoZWxsbyAiLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oNDIpICwgIiB3b3JsZCIpCi0gICAgICAgICAgQWN0dWFs
OiBoZWxsbyA0MiB3b3JsZAotICAgICAgICBFeHBlY3RlZDogImhlbGxvICogd29ybGQiCi0gICAg
ICAgIFdoaWNoIGlzOiA3NEIwMEM5QwotCi0gICAgVGVzdFdURi5XVEZfRXhwZWN0ZWQuVW5leHBl
Y3RlZAotICAgICAgICAqKkZBSUwqKiBXVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotCi0gICAgICAg
IEM6XFxjeWd3aW5cXGhvbWVcXGJ1aWxkYm90XFx3b3JrZXJcXHdpbi1yZWxlYXNlXFxidWlsZFxc
VG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXVEZcXEV4cGVjdGVkLmNwcDo5NgotICAgICAg
ICBWYWx1ZSBvZjogczEKLSAgICAgICAgICBBY3R1YWw6IG9vcHMKLSAgICAgICAgRXhwZWN0ZWQ6
IHMwCi0gICAgICAgIFdoaWNoIGlzOiBvb3BzCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0
YXR1czogMwotIiIiKQotCi0gICAgZGVmIHRlc3Rfb25lX3RpbWVvdXQoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0RmFpbHVyZXMoMSwgIiIiLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJp
YW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFu
dC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQK
LXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAg
VGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtl
ci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3Jr
ZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVs
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLVRp
bWVvdXQKLQotICAgICBUZXN0V1RGLldURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURl
c3RydWN0aWJsZUFycmF5cy5Bc3NpZ25tZW50Ci0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0
YXR1czogMwotIiIiKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfdGltZW91dHMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMiwgIiIiLi4uCi13b3JrZXIvMCBUZXN0V1RGLldU
Rl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZf
VmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQ
YXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29y
a2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQK
LXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2Vk
Ci13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NiBzdWNj
ZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVk
Ci0KLVRpbWVvdXQKLQotICAgIFRlc3RXVEYuV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlh
bGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLkFzc2lnbm1lbnQKLSAgICBUZXN0V1RGLldURl9Mb2NrLkNv
bnRlbmRlZFNob3J0U2VjdGlvbgotCi1UZXN0aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6IDMK
LSIiIikKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzX2FuZF90aW1lb3V0cyhzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlcyg0LCAiIiIuLi4KLXdvcmtlci8wIFRlc3RX
VEYuV1RGX1ZhcmlhbnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVm
UHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2Vk
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBh
c3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQ
YXNzZWQKLXdvcmtlci8wIGV4aXRpbmcKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODggd2l0aCAxODg0
IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGVzdCBzdWl0ZSBm
YWlsZWQKLQotQ3Jhc2hlZAotCi0gICAgVGVzdFdURi5XVEYuU3RyaW5nQ29uY2F0ZW5hdGVfVW5z
aWduZWQKLSAgICAgICAgKipGQUlMKiogV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0K
LSAgICAgICAgQzpcXGN5Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdvcmtlclxcd2luLXJlbGVhc2Vc
XGJ1aWxkXFxUb29sc1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdURlxcU3RyaW5nQ29uY2F0ZW5h
dGUuY3BwOjg0Ci0gICAgICAgIFZhbHVlIG9mOiBtYWtlU3RyaW5nKCJoZWxsbyAiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZCBzaG9ydD4oNDIpICwgIiB3b3JsZCIpCi0gICAgICAgICAgQWN0dWFsOiBo
ZWxsbyA0MiB3b3JsZAotICAgICAgICBFeHBlY3RlZDogImhlbGxvICogd29ybGQiCi0gICAgICAg
IFdoaWNoIGlzOiA3NEIwMEM5QwotCi0gICAgVGVzdFdURi5XVEZfRXhwZWN0ZWQuVW5leHBlY3Rl
ZAotICAgICAgICAqKkZBSUwqKiBXVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotCi0gICAgICAgIEM6
XFxjeWd3aW5cXGhvbWVcXGJ1aWxkYm90XFx3b3JrZXJcXHdpbi1yZWxlYXNlXFxidWlsZFxcVG9v
bHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXVEZcXEV4cGVjdGVkLmNwcDo5NgotICAgICAgICBW
YWx1ZSBvZjogczEKLSAgICAgICAgICBBY3R1YWw6IG9vcHMKLSAgICAgICAgRXhwZWN0ZWQ6IHMw
Ci0gICAgICAgIFdoaWNoIGlzOiBvb3BzCi0KLVRpbWVvdXQKLQotICAgIFRlc3RXVEYuV1RGX1Bv
aXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLkFzc2lnbm1lbnQK
LSAgICBUZXN0V1RGLldURl9Mb2NrLkNvbnRlbmRlZFNob3J0U2VjdGlvbgotCi1UZXN0aW5nIGNv
bXBsZXRlZCwgRXhpdCBzdGF0dXM6IDMKLSIiIikKLQotCi1jbGFzcyBCdWlsZFN0ZXBzQ29uc3Ry
dWN0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAjICJQYXNzaW5nIGEgQnVpbGRTdGVw
IHN1YmNsYXNzIHRvIGZhY3RvcnkuYWRkU3RlcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGFzcyBh
IEJ1aWxkU3RlcCBpbnN0YW5jZSBpbnN0ZWFkLiAgU3VwcG9ydCB3aWxsIGJlIGRyb3BwZWQgaW4g
djAuOC43LiIKLSAgICAjIEl0IGNoZWNrcyBpZiBhbGwgYnVpbGRlcidzIGFsbCBidWlsZHN0ZXBz
IGNhbiBiZSBpbnNhbnRpYXRlZCBhZnRlciBtaWdyYXRpb24uCi0gICAgIyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwMDEKLSAgICAjIGh0dHA6Ly9idWlsZGJvdC5u
ZXQvYnVpbGRib3QvZG9jcy8wLjguNnAxL21hbnVhbC9jdXN0b21pemF0aW9uLmh0bWwjd3JpdGlu
Zy1idWlsZHN0ZXAtY29uc3RydWN0b3JzCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdl
bmVyYXRlVGVzdHMoKToKLSAgICAgICAgZm9yIGJ1aWxkZXJOdW1iZXIsIGJ1aWxkZXIgaW4gZW51
bWVyYXRlKGNbJ2J1aWxkZXJzJ10pOgotICAgICAgICAgICAgZm9yIHN0ZXBOdW1iZXIsIHN0ZXAg
aW4gZW51bWVyYXRlKGJ1aWxkZXJbJ2ZhY3RvcnknXS5zdGVwcyk6Ci0gICAgICAgICAgICAgICAg
YnVpbGRlck5hbWUgPSBidWlsZGVyWyduYW1lJ10uZW5jb2RlKCdhc2NpaScsICdpZ25vcmUnKQot
ICAgICAgICAgICAgICAgIHNldGF0dHIoQnVpbGRTdGVwc0NvbnN0cnVjdG9yVGVzdCwgJ3Rlc3Rf
YnVpbGRlciUwMmRfc3RlcCUwMmQnICUgKGJ1aWxkZXJOdW1iZXIsIHN0ZXBOdW1iZXIpLCBCdWls
ZFN0ZXBzQ29uc3RydWN0b3JUZXN0LmNyZWF0ZVRlc3QoYnVpbGRlck5hbWUsIHN0ZXApKQotCi0g
ICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBjcmVhdGVUZXN0KGJ1aWxkZXJOYW1lLCBzdGVwKToK
LSAgICAgICAgZGVmIGRvVGVzdChzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBidWlsZFN0ZXBGYWN0b3J5LCBrd2FyZ3MgPSBzdGVwCi0gICAgICAgICAgICAgICAgYnVp
bGRTdGVwRmFjdG9yeSgqKmt3YXJncykKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMg
ZToKLSAgICAgICAgICAgICAgICBidWlsZFN0ZXBOYW1lID0gc3RyKGJ1aWxkU3RlcEZhY3Rvcnkp
LnNwbGl0KCcuJylbLTFdCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFcnJvciBkdXJpbmcg
aW5zdGFudGlhdGlvbiAlcyBidWlsZHN0ZXAgZm9yICVzIGJ1aWxkZXI6ICVzXG4iICUgKGJ1aWxk
U3RlcE5hbWUsIGJ1aWxkZXJOYW1lLCBlKSkKLSAgICAgICAgcmV0dXJuIGRvVGVzdAotCi0KLWV4
cGVjdGVkX2J1aWxkX3N0ZXBzID0gewotICAgICdBcHBsZS1XaW4tMTAtRGVidWctVGVzdHMnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBp
bGUnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAn
anNjb3JlLXRlc3QnLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10
ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1
aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQn
LCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLVdpbi0xMC1SZWxlYXNlLVRlc3Rz
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxl
dGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdj
b21waWxlJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0
JywgJ2pzY29yZS10ZXN0JywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0
cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycs
ICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBs
b2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1XaW4tMTAtRGVidWctQnVp
bGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2Rl
bGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywg
J2NvbXBpbGUnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3Vw
bG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLVdpbi0xMC1S
ZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nl
c3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWls
ZC1maWxlcycsICdjb21waWxlJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJv
ZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotCi0gICAgJ0Fw
cGxlLUJpZ1N1ci1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tp
bGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0
ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotCi0gICAgJ0FwcGxlLUNh
dGFsaW5hLURlYnVnLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3Qn
LCAndXBsb2FkJywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXIt
dG8tczMnLCAndHJpZ2dlciddLAotICAgICdBcHBsZS1DYXRhbGluYS1EZWJ1Zy1KU0MtVGVzdHMn
OiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0
ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rv
d25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10
ZXN0J10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLURlYnVnLVRlc3QyNjItVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1
aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3Rlc3QyNjItdGVzdCddLAot
ICAgICdBcHBsZS1DYXRhbGluYS1EZWJ1Zy1XSzEtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcs
ICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rv
cnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3Qn
LCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAn
bGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtp
dHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMn
LCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2Vy
LWNyYXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcs
ICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtRGVidWctV0syLVRl
c3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdk
ZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycs
ICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0
LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAn
bGxkYi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdi
aW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdk
YXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZl
LXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0Fw
cGxlLUNhdGFsaW5hLURlYnVnLVdLMi1HUFVQcm9jZXNzLVRlc3RzJzogWydjb25maWd1cmUtYnVp
bGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGly
ZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9k
dWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9u
JywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcsICd3
ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRl
c3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJp
Z2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxv
YWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLUxMSU5ULUNM
b29wLUJ1aWxkQW5kVGVzdCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnd2Via2l0LWpzYy1jbG9vcC10ZXN0J10s
Ci0gICAgJ0FwcGxlLUNhdGFsaW5hLVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcs
ICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rv
cnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hp
dmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3Vw
bG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5h
LVJlbGVhc2UtSlNDLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQt
cHJvZHVjdCcsICdqc2NvcmUtdGVzdCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVRl
c3QyNjItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0
JywgJ3Rlc3QyNjItdGVzdCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMS1UZXN0
cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1m
b3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3RzJywgJ2xs
ZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmlu
ZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFz
aGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10
ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdBcHBs
ZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bics
ICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdk
ZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRy
YWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQt
dGVzdCcsICdydW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVz
dCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWls
dGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gt
bG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3Rl
clNoZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1QZXJmJzog
Wydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUt
V2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3du
bG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdwZXJmLXRlc3Qn
XSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItV2ViR0wtVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1
aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNv
bGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10
ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVy
YXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0
cycsICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRz
JywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLQotICAgICdBcHBsZS1Nb2phdmUt
RGVidWctQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxv
YWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycs
ICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLU1vamF2ZS1EZWJ1Zy1XSzEtVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1
aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNv
bGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10
ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVy
YXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0
cycsICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRz
JywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnQXBwbGUtTW9qYXZlLURl
YnVnLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9j
ZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVp
bGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1
Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBp
LXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJs
LXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24n
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCdd
LAotICAgICdBcHBsZS1Nb2phdmUtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywg
J3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9y
eScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2
ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBs
b2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdnZXInXSwKLSAgICAnQXBwbGUtTW9qYXZlLVJl
bGVhc2UtV0sxLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXBy
b2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1i
dWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJv
ZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1h
cGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBl
cmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRv
ci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lv
bicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5k
J10sCi0gICAgJ0FwcGxlLU1vamF2ZS1SZWxlYXNlLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1
aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRp
cmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJv
ZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlv
bicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAn
d2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10
ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3Ry
aWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBs
b2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1Nb2phdmUtUmVsZWFzZS1C
dWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAn
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMn
LCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICdh
cmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdn
ZXInXSwKLQotICAgICdBcHBsZS1pT1MtMTQtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1
aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRp
cmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwK
LSAgICAnQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQt
ZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcs
ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVj
dCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotICAgICdBcHBsZS1p
T1MtMTQtU2ltdWxhdG9yLVJlbGVhc2UtV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0Jywg
J2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xh
eW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJs
LXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24n
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCdd
LAotCi0gICAgJ0FwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctQnVpbGQnOiBbJ2NvbmZpZ3Vy
ZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWls
ZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0
JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9k
dWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxl
LWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0Jywg
J2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xh
eW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJs
LXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24n
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCdd
LAotCi0gICAgJ0FwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25s
b2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNy
YXNoLWNvbGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRw
eS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywg
J2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1j
cmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAn
TWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItRGVi
dWctV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nl
c3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWls
ZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVj
dCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGkt
dGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2Vu
ZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRl
c3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3Vs
dHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotCi0gICAgJ0FwcGxlLXR2T1Mt
MTQtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLSAgICAnQXBwbGUtdHZPUy1TaW11bGF0
b3ItMTQtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLQotICAgICdBcHBsZS13YXRjaE9T
LTctUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLSAgICAnQXBwbGUtd2F0Y2hPUy1TaW11
bGF0b3ItNy1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwt
b2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1z
dGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotCi0gICAgJ0pTQ09ubHktTGlu
dXgtQVJNdjctVGh1bWIyLVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
Y29tcGlsZS13ZWJraXQnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1BUk12
Ny1UaHVtYjItU29mdEZQLVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
Y29tcGlsZS13ZWJraXQnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1BQXJj
aDY0LVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVsZXRlLVdlYktpdEJ1
aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJr
aXQnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1NSVBTMzJlbC1SZWxlYXNl
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rv
cnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2pzY29y
ZS10ZXN0J10sCi0KLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCc6IFsnY29uZmln
dXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1
aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdj
b21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5z
ZmVyLXRvLXMzJywgJ3RyaWdnZXInXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0
cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
amhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVj
dCcsICdsYXlvdXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdi
aW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdk
YXNoYm9hcmQtdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3Rl
clNoZWxsQ29tbWFuZCcsICdBUEktdGVzdHMnXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1
Zy1XZWJEcml2ZXItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQt
cHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxl
LWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRy
YWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnR1RLLUxpbnV4LTY0
LWJpdC1EZWJ1Zy1KUy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4
dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICd0ZXN0MjYyLXRlc3QnXSwKLSAg
ICAnR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0
JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAn
dHJpZ2dlciddLAotICAgICdHVEstTGludXgtNjQtYml0LVJlbGVhc2UtUGVyZic6IFsnY29uZmln
dXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1
aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdk
b3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdwZXJmLXRl
c3QnLCAnYmVuY2htYXJrLXRlc3QnXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVRl
c3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdk
ZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycs
ICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9k
dWN0JywgJ2xheW91dC10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0Jywg
J2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywg
J2Rhc2hib2FyZC10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFz
dGVyU2hlbGxDb21tYW5kJywgJ0FQSS10ZXN0cyddLAotICAgICdHVEstTGludXgtNjQtYml0LVJl
bGVhc2UtV2ViRHJpdmVyLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwt
b2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1z
dGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAn
ZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dlYmRyaXZlci10ZXN0J10sCi0gICAgJ0dUSy1MaW51
eC02NC1iaXQtUmVsZWFzZS1KUy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0
JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICd0ZXN0MjYyLXRlc3Qn
XSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdheWxhbmQtVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAn
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnbGF5b3V0
LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2Vu
ZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRl
c3RzJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1h
bmQnLCAnQVBJLXRlc3RzJywgJ3dlYmRyaXZlci10ZXN0J10sCi0gICAgJ0dUSy1MaW51eC02NC1i
aXQtUmVsZWFzZS1VYnVudHUtTFRTLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywg
J2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2Rl
bGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotICAgICdHVEstTGlu
dXgtNjQtYml0LVJlbGVhc2UtRGViaWFuLVN0YWJsZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxk
JywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVj
dG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLQot
ICAgICdQbGF5U3RhdGlvbi1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bics
ICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdk
ZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLSAgICAnUGxheVN0
YXRpb24tUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLQotICAgICdXaW5DYWlyby02NC1i
aXQtSlNDLURlYnVnLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQt
cHJvZHVjdCcsICdqc2NvcmUtdGVzdCddLAotICAgICdXaW5DYWlyby02NC1iaXQtSlNDLVJlbGVh
c2UtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2Vz
JywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZp
bGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0Jywg
J2pzY29yZS10ZXN0J10sCi0gICAgJ1dpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctQnVpbGQnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBp
bGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXIt
dG8tczMnLCAndHJpZ2dlciddLAotICAgICdXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLVRlc3Rz
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxl
dGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdk
b3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3aW5jYWly
by1yZXF1aXJlbWVudHMnLCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRw
eS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywg
J2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxv
YWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ1dpbkNhaXJvLTY0LWJpdC1XS0wtUmVs
ZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNz
ZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQt
ZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9h
ZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ1dpbkNhaXJvLTY0LWJpdC1X
S0wtUmVsZWFzZS1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXBy
b2R1Y3QnLCAnd2luY2Fpcm8tcmVxdWlyZW1lbnRzJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGkt
dGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2Vu
ZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotCi0gICAgJ1dQRS1M
aW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdjb21waWxlLXdlYmtpdCcsICdhcmNo
aXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdnZXIn
XSwKLSAgICAnV1BFLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVRlc3RzJzogWydjb25maWd1cmUtYnVp
bGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGly
ZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2xheW91dC10ZXN0Jywg
J3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24t
dGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICdh
cmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJywgJ0FQ
SS10ZXN0cycsICd3ZWJkcml2ZXItdGVzdCddLAotICAgICdXUEUtTGludXgtNjQtYml0LVJlbGVh
c2UtSlMtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1
aWx0LXByb2R1Y3QnLCAnanNjb3JlLXRlc3QnLCAndGVzdDI2Mi10ZXN0J10sCi0gICAgJ1dQRS1M
aW51eC02NC1iaXQtRGVidWctQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2ls
bC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRl
LXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2
ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10s
Ci0gICAgJ1dQRS1MaW51eC02NC1iaXQtRGVidWctVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcs
ICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rv
cnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVp
bHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnbGF5b3V0LXRlc3QnLCAnd2Vi
a2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0
cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ2FyY2hp
dmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnLCAnQVBJLXRl
c3RzJywgJ3dlYmRyaXZlci10ZXN0J10sCi0gICAgJ1dQRS1MaW51eC02NC1iaXQtRGVidWctSlMt
VGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywg
J2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
JywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXBy
b2R1Y3QnLCAnanNjb3JlLXRlc3QnLCAndGVzdDI2Mi10ZXN0J10sCi0gICAgJ0dUSy1MaW51eC02
NGJpdC1SZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTE4MDQnOiBbJ2NvbmZpZ3VyZS1i
dWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1k
aXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnY29tcGls
ZS13ZWJraXQnLCAnZ2VuZXJhdGUtbWluaWJyb3dzZXItYnVuZGxlJ10sCi0gICAgJ0dUSy1MaW51
eC02NGJpdC1SZWxlYXNlLVBhY2thZ2luZy1OaWdodGx5LVVidW50dTIwMDQnOiBbJ2NvbmZpZ3Vy
ZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWls
ZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnY29t
cGlsZS13ZWJraXQnLCAnZ2VuZXJhdGUtanNjLWJ1bmRsZScsICdnZW5lcmF0ZS1taW5pYnJvd3Nl
ci1idW5kbGUnXSwKLSAgICAnV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0
bHktVWJ1bnR1MTgwNCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9j
ZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVp
bGQtZmlsZXMnLCAnamhidWlsZCcsICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5pYnJv
d3Nlci1idW5kbGUnXSwKLSAgICAnV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5p
Z2h0bHktVWJ1bnR1MjAwNCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5p
YnJvd3Nlci1idW5kbGUnXSwKLX0KLQotCi1jbGFzcyBCdWlsZFN0ZXBzVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBnZW5lcmF0ZVRlc3RzKCk6Ci0g
ICAgICAgIGZvciBidWlsZGVyIGluIGNbJ2J1aWxkZXJzJ106Ci0gICAgICAgICAgICBidWlsZGVy
TmFtZSA9IGJ1aWxkZXJbJ25hbWUnXS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpCi0gICAgICAg
ICAgICBzZXRhdHRyKEJ1aWxkU3RlcHNUZXN0LCAndGVzdF9idWlsZGVyICVzJyAlIGJ1aWxkZXJO
YW1lLCBCdWlsZFN0ZXBzVGVzdC5jcmVhdGVUZXN0KGJ1aWxkZXIpKQotCi0gICAgQHN0YXRpY21l
dGhvZAotICAgIGRlZiBjcmVhdGVUZXN0KGJ1aWxkZXIpOgotICAgICAgICBkZWYgZG9UZXN0KHNl
bGYpOgotICAgICAgICAgICAgYnVpbGRTdGVwcyA9IFtdCi0gICAgICAgICAgICBmb3Igc3RlcCBp
biBidWlsZGVyWydmYWN0b3J5J10uc3RlcHM6Ci0gICAgICAgICAgICAgICAgYnVpbGRTdGVwcy5h
cHBlbmQoc3RlcFswXS5uYW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJb
J25hbWUnXSBpbiBleHBlY3RlZF9idWlsZF9zdGVwcywgIk1pc3NpbmcgZXhwZWN0ZWQgcmVzdWx0
IGZvciBidWlsZGVyOiAlc1xuIEFjdHVhbCByZXN1bHQgaXMgJXMiICUgKGJ1aWxkZXJbJ25hbWUn
XSwgYnVpbGRTdGVwcykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChleHBlY3Rl
ZF9idWlsZF9zdGVwc1tidWlsZGVyWyduYW1lJ11dLCBidWlsZFN0ZXBzKQotCi0gICAgICAgIHJl
dHVybiBkb1Rlc3QKLQotICAgIGRlZiB0ZXN0X3VubmVjZXNzYXJ5X2V4cGVjdGVkX3Jlc3VsdHMo
c2VsZik6Ci0gICAgICAgIGJ1aWxkZXJzID0gc2V0KCkKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4g
Y1snYnVpbGRlcnMnXToKLSAgICAgICAgICAgIGJ1aWxkZXJzLmFkZChidWlsZGVyWyduYW1lJ10u
ZW5jb2RlKCdhc2NpaScsICdpZ25vcmUnKSkKLQotICAgICAgICBmb3IgYnVpbGRlciBpbiBleHBl
Y3RlZF9idWlsZF9zdGVwczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyIGlu
IGJ1aWxkZXJzLCAiQnVpbGRlciAlcyBkb2Vzbid0IGV4aXN0LCBidXQgaGFzIHVubmVjZXNzYXJ5
IGV4cGVjdGVkIHJlc3VsdHMiICUgYnVpbGRlcikKLQotCi1jbGFzcyBSdW5BbmRVcGxvYWRQZXJm
VGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxm
LCByYywgZXhwZWN0ZWRfdGV4dCk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5kKHJj
LCBleHBlY3RlZF90ZXh0KQotICAgICAgICBzdGVwID0gUnVuQW5kVXBsb2FkUGVyZlRlc3RzKCkK
LSAgICAgICAgc3RlcC5jb21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBhY3R1YWxfcmVzdWx0
cyA9IHN0ZXAuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFsX3RleHQgPSBzdHIo
c3RlcC5nZXRUZXh0MihjbWQsIGFjdHVhbF9yZXN1bHRzKVswXSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nl
c3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cygwLCAicGVyZi10ZXN0IikKLQot
ICAgIGRlZiB0ZXN0X3Rlc3RzX2ZhaWxlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1
bHRzKDUsICI1IHBlcmYgdGVzdHMgZmFpbGVkIikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9i
dWlsZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDI1NSwgImJ1aWxkIG5vdCB1
cCB0byBkYXRlIikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9zb3VyY2VfanNvbihzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDI1NCwgIndvcmtlciBjb25maWcgSlNPTiBlcnJv
ciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9iYWRfbWFyZ2Uoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0UmVzdWx0cygyNTMsICJvdXRwdXQgSlNPTiBtZXJnZSBlcnJvciIpCi0KLSAgICBkZWYg
dGVzdF9idWlsZF9iYWRfZmFpbGVkX3VwbG9hZGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRSZXN1bHRzKDI1MiwgInVwbG9hZCBlcnJvciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9iYWRf
cHJlcGFyYXRpb24oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cygyNTEsICJzeXN0
ZW0gZGVwZW5kZW5jeSBlcnJvciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZGJvdF90aW1lb3V0KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoLTEsICJ0aW1lb3V0IikKLQotCi1jbGFz
cyBSdW5CZW5jaG1hcmtUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVz
dWx0cyhzZWxmLCByYywgZXhwZWN0ZWRfdGV4dCk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVD
b21tYW5kKHJjLCBleHBlY3RlZF90ZXh0KQotICAgICAgICBzdGVwID0gUnVuQmVuY2htYXJrVGVz
dHMoKQotICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9y
ZXN1bHRzID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9
IHN0cihzdGVwLmdldFRleHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpWzBdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KQotCi0gICAgZGVmIHRlc3Rf
c3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDAsICJiZW5jaG1hcmst
dGVzdCIpCi0KLSAgICBkZWYgdGVzdF90ZXN0c19mYWlsZWQoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0UmVzdWx0cyg3LCAiNyBiZW5jaG1hcmsgdGVzdHMgZmFpbGVkIikKLQotCi0jIEZJWE1F
OiBXZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkuCi0jIFVu
Zm9ydHVuYXRlbHkgdGVzdC13ZWJraXRweSBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVz
dHMKLSMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUu
Ci0jICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUg
KGR1ZSB0byAnLicgYW5kICctJykKLSMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUg
dGVzdCBoYXJuZXNzLgotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBCdWlsZEJvdENv
bmZpZ0xvYWRlcigpLl9hZGRfZGVwZW5kZW50X21vZHVsZXNfdG9fc3lzX21vZHVsZXMoKQotICAg
IGZyb20gbG9hZENvbmZpZyBpbXBvcnQgKgotICAgIGMgPSB7fQotICAgIGxvYWRCdWlsZGVyQ29u
ZmlnKGMsIGlzX3Rlc3RfbW9kZV9lbmFibGVkPVRydWUpCi0gICAgQnVpbGRTdGVwc0NvbnN0cnVj
dG9yVGVzdC5nZW5lcmF0ZVRlc3RzKCkKLSAgICBCdWlsZFN0ZXBzVGVzdC5nZW5lcmF0ZVRlc3Rz
KCkKLSAgICB1bml0dGVzdC5tYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5Cl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy90ZW1wbGF0ZXMvYnVpbGRlci5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBs
YXRlcy9idWlsZGVyLmh0bWwJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9idWlsZGVyLmh0bWwJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMTggKzAsMCBAQAoteyUgZnJvbSAnYnVpbGRfbGluZS5odG1sJyBp
bXBvcnQgYnVpbGRfdGFibGUgJX0KLXslIGltcG9ydCAnZm9ybXMuaHRtbCcgYXMgZm9ybXMgJX0K
LQoteyUgZXh0ZW5kcyAibGF5b3V0Lmh0bWwiICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci0KLTxo
MT5CdWlsZGVyIHt7IG5hbWUgfX08L2gxPgotCi08cD4oPGEgaHJlZj0ie3sgcGF0aF90b19yb290
IH19d2F0ZXJmYWxsP3Nob3c9e3sgbmFtZSB9fSI+dmlldyBpbiB3YXRlcmZhbGw8L2E+KTwvcD4K
LQotPGRpdiBjbGFzcz0iY29sdW1uIj4KLQoteyUgaWYgY3VycmVudCAlfQotICA8aDI+Q3VycmVu
dCBCdWlsZHM6PC9oMj4KLSAgPHVsPgotICB7JSBmb3IgYiBpbiBjdXJyZW50ICV9Ci0gICAgPGxp
PjxhIGhyZWY9Int7IGIubGluayB9fSI+e3sgYi5udW0gfX08L2E+Ci0gICAgeyUgaWYgYi53aGVu
ICV9Ci0gICAgICBFVEE6IHt7IGIud2hlbl90aW1lIH19IFt7eyBiLndoZW4gfX1dCi0gICAgeyUg
ZW5kaWYgJX0KLQotICAgIHt7IGIuY3VycmVudF9zdGVwIH19Ci0KLSAgICB7JSBpZiBhdXRoei5h
ZHZlcnRpc2VBY3Rpb24oJ3N0b3BCdWlsZCcsIHJlcXVlc3QpICV9Ci0gICAgICB7eyBmb3Jtcy5z
dG9wX2J1aWxkKGIuc3RvcF91cmwsIGF1dGh6LCBvbl9hbGw9RmFsc2UsIHNob3J0PVRydWUsIGxh
YmVsPSdCdWlsZCcpIH19Ci0gICAgeyUgZW5kaWYgJX0KLSAgICA8L2xpPgotICB7JSBlbmRmb3Ig
JX0KLSAgPC91bD4KLXslIGVsc2UgJX0KLSAgPGgyPk5vIGN1cnJlbnQgYnVpbGRzPC9oMj4KLXsl
IGVuZGlmICV9Ci0KLXslIGlmIHBlbmRpbmcgJX0KLSAgPGgyPlBlbmRpbmcgQnVpbGQgUmVxdWVz
dHM6PC9oMj4KLSAgPHVsPgotICB7JSBmb3IgYiBpbiBwZW5kaW5nICV9Ci0gICAgPGxpPjxzbWFs
bD4oe3sgYi53aGVuIH19LCB3YWl0aW5nIHt7IGIuZGVsYXkgfX0pPC9zbWFsbD4KLQotICAgIHsl
IGlmIGF1dGh6LmFkdmVydGlzZUFjdGlvbignY2FuY2VsUGVuZGluZ0J1aWxkJywgcmVxdWVzdCkg
JX0KLSAgICAgIHt7IGZvcm1zLmNhbmNlbF9wZW5kaW5nX2J1aWxkKGJ1aWxkZXJfdXJsKyIvY2Fu
Y2VsYnVpbGQiLCBhdXRoeiwgc2hvcnQ9VHJ1ZSwgaWQ9Yi5pZCkgfX0KLSAgICB7JSBlbmRpZiAl
fQotCi0gICAgeyUgaWYgYi5udW1fY2hhbmdlcyA8IDQgJX0KLSAgICAgICAgeyUgZm9yIGMgaW4g
Yi5jaGFuZ2VzICV9e3sgYy5yZXZpc2lvbnxzaG9ydHJldihjLnJlcG8pIH19Ci0gICAgICAgICg8
YSBocmVmPSJ7eyBjLnVybCB9fSI+e3sgYy53aG8gfX08L2E+KXslIGlmIG5vdCBsb29wLmxhc3Qg
JX0seyUgZW5kaWYgJX0KLSAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgeyUgZWxzZSAlfQotICAg
ICAgICAoe3sgYi5udW1fY2hhbmdlcyB9fSBjaGFuZ2VzKQotICAgIHslIGVuZGlmICV9Ci0KLSAg
ICAgIHslIGlmICdvd25lcicgaW4gYi5wcm9wZXJ0aWVzICV9Ci0gICAgICAgIDxiPkZvcmNlZCBi
dWlsZDwvYj4KLSAgICAgICAgYnkge3tiLnByb3BlcnRpZXNbJ293bmVyJ11bMF19fQotICAgICAg
ICA8c21hbGw+e3tiLnByb3BlcnRpZXNbJ3JlYXNvbiddWzBdfX08L3NtYWxsPgotICAgICAgeyUg
ZW5kaWYgJX0KLSAgICA8L2xpPgotICB7JSBlbmRmb3IgJX0KLSAgPC91bD4KLQotICB7JSBpZiBh
dXRoei5hZHZlcnRpc2VBY3Rpb24oJ2NhbmNlbFBlbmRpbmdCdWlsZCcsIHJlcXVlc3QpICV9Ci0g
ICAge3sgZm9ybXMuY2FuY2VsX3BlbmRpbmdfYnVpbGQoYnVpbGRlcl91cmwrIi9jYW5jZWxidWls
ZCIsIGF1dGh6LCBzaG9ydD1GYWxzZSwgaWQ9J2FsbCcpIH19Ci0gIHslIGVuZGlmICV9Ci0KLXsl
IGVsc2UgJX0KLSAgPGgyPk5vIFBlbmRpbmcgQnVpbGQgUmVxdWVzdHM8L2gyPgoteyUgZW5kaWYg
JX0KLQotPGgyPlJlY2VudCBCdWlsZHM6PC9oMj4KLQote3sgYnVpbGRfdGFibGUocmVjZW50KSB9
fQotKCBTaG93OiA8YSBocmVmPSJ7eyBidWlsZGVyX3VybCB9fSI+ZGVmYXVsdDwvYT4KLXslIGZv
ciBjb3VudCBpbiBbMjUsIDUwLCAxMDAsIDIwMF0gJX0KLTxhIGhyZWY9Int7IGJ1aWxkZXJfdXJs
IH19P251bWJ1aWxkcz17eyBjb3VudCB9fSI+e3sgY291bnQgfX08L2E+Ci17JSBlbmRmb3IgJX0p
Ci0KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29sdW1uIj4KLQotPGgyPkJ1aWxkc2xhdmVzOjwvaDI+
Ci08dGFibGUgY2xhc3M9ImluZm8iPgoteyUgaWYgc2xhdmVzICV9Ci08dHI+Ci0gIDx0aD5OYW1l
PC90aD4KLSAgPHRoPlN0YXR1czwvdGg+Ci0gIDx0aD5BZG1pbjwvdGg+Ci08L3RyPgoteyUgZW5k
aWYgJX0KLXslIGZvciBzIGluIHNsYXZlcyAlfQotICA8dHIgY2xhc3M9Int7IGxvb3AuY3ljbGUo
J2FsdCcsICcnKSB9fSI+Ci0gIDx0ZD48Yj48YSBocmVmPSJ7eyBzLmxpbmt8ZSB9fSI+e3sgcy5u
YW1lfGUgfX08L2E+PC9iPjwvdGQ+Ci0gIHslIGlmIHMuY29ubmVjdGVkICV9Ci0gICAgPHRkIGNs
YXNzPSJpZGxlIj5jb25uZWN0ZWQ8L3RkPgotICAgIDx0ZD57eyBzLmFkbWlufGVtYWlsIGlmIHMu
YWRtaW4gZWxzZSAiIn19PC90ZD4KLSAgeyUgZWxzZSAlfQotICAgIDx0ZCBjbGFzcz0ib2ZmbGlu
ZSI+b2ZmbGluZTwvdGQ+Ci0gICAgPHRkLz4KLSAgeyUgZW5kaWYgJX0KLSAgPC90cj4KLXslIGVs
c2UgJX0KLSAgPHRkPm5vIHNsYXZlcyBhdHRhY2hlZDwvdGQ+Ci17JSBlbmRmb3IgJX0KLTwvdGFi
bGU+Ci0KLXslIGlmIGF1dGh6LmFkdmVydGlzZUFjdGlvbigncGluZ0J1aWxkZXInLCByZXF1ZXN0
KSAlfQotICA8aDI+UGluZyBzbGF2ZXM8L2gyPgotICB7eyBmb3Jtcy5waW5nX2J1aWxkZXIoYnVp
bGRlcl91cmwrIi9waW5nIiwgYXV0aHopIH19Ci17JSBlbmRpZiAlfQotCi17JSBpZiBhdXRoei5h
ZHZlcnRpc2VBY3Rpb24oJ2ZvcmNlQnVpbGQnLCByZXF1ZXN0KSBhbmQgZm9yY2Vfc2NoZWR1bGVy
cyAhPSB7fSAlfQotICA8aDI+Rm9yY2UgYnVpbGQ8L2gyPgotICB7eyBmb3Jtcy5mb3JjZV9idWls
ZChidWlsZGVyX3VybCsiL2ZvcmNlIiwgYXV0aHosIHJlcXVlc3QsIEZhbHNlLCBmb3JjZV9zY2hl
ZHVsZXJzPWZvcmNlX3NjaGVkdWxlcnMsZGVmYXVsdF9wcm9wcz1kZWZhdWx0X3Byb3BzKSB9fQot
eyUgZW5kaWYgJX0KLQotPC9kaXY+Ci0KLXslIGVuZGJsb2NrICV9Ci0KSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9yb290Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvdGVtcGxhdGVzL3Jvb3QuaHRtbAkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvdGVtcGxhdGVzL3Jvb3Qu
aHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0
bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLTx0aXRsZT5XZWJLaXQgQnVpbGQgQ2VudHJhbDwvdGl0
bGU+Ci08c3R5bGU+Ci0gICAgYm9keSB7Ci0gICAgICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNh
TmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7Ci0gICAgfQotCi0gICAgaDEsIGgyLCBoMyB7Ci0gICAg
ICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgfQotPC9z
dHlsZT4KLTwvaGVhZD4KLQotPGJvZHk+Ci08aDI+RGFzaGJvYXJkPC9oMj4KLTx1bD4KLSAgPGxp
PjxhIGhyZWY9ImRhc2hib2FyZCI+Qm90IHdhdGNoZXIncyBkYXNoYm9hcmQ8L2E+PC9saT4KLTwv
dWw+Ci0KLTxoMj5CdWlsZGJvdCBQYWdlczwvaDI+Ci08dWw+Ci0gIDxsaT48YSBocmVmPSJjb25z
b2xlIj5Db25zb2xlPC9hPiAtIDxhIGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFw
cGxlIE1hYzwvYT4sIDxhIGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9QXBwbGVXaW4iPkFwcGxlIFdp
bmRvd3M8L2E+LCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PWlPUyI+aU9TPC9hPiwKLSAgPGEg
aHJlZj0iY29uc29sZT9jYXRlZ29yeT1HVEsiPkdUSys8L2E+LCA8YSBocmVmPSJjb25zb2xlP2Nh
dGVnb3J5PVdQRSI+V1BFPC9hPiwgPGEgaHJlZj0iY29uc29sZT9jYXRlZ29yeT1XaW5DYWlybyI+
V2luQ2Fpcm88L2E+Ci0gIGFuZCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PW1pc2MiPm1pc2Nl
bGxhbmVvdXM8L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9IndhdGVyZmFsbCI+V2F0ZXJmYWxsIERp
c3BsYXk8L2E+LCBhIHRpbWUtb3JpZW50ZWQgc3VtbWFyeSBvZiByZWNlbnQgYnVpbGRib3QgYWN0
aXZpdHkKLSAgLSA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1h
YzwvYT4sIDxhIGhyZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1BcHBsZVdpbiI+QXBwbGUgV2luZG93
czwvYT4sIDxhIGhyZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1pT1MiPmlPUzwvYT4sCi0gIDxhIGhy
ZWY9IndhdGVyZmFsbD9jYXRlZ29yeT1HVEsiPkdUSys8L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/
Y2F0ZWdvcnk9V1BFIj5XUEU8L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9V2luQ2Fp
cm8iPldpbkNhaXJvPC9hPgotICBhbmQgPGEgaHJlZj0id2F0ZXJmYWxsP2NhdGVnb3J5PW1pc2Mi
Pm1pc2NlbGxhbmVvdXM8L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9Im9uZV9ib3hfcGVyX2J1aWxk
ZXIiPkxhdGVzdCBCdWlsZDwvYT4gZm9yIGVhY2ggYnVpbGRlciBpcyBoZXJlLjwvbGk+Ci0gIDxs
aT48YSBocmVmPSJvbmVfbGluZV9wZXJfYnVpbGQiPlJlY2VudCBCdWlsZHM8L2E+IGFyZSBzdW1t
YXJpemVkIGhlcmUsIG9uZSBwZXIgbGluZS48L2xpPgotICA8bGk+PGEgaHJlZj0icmVzdWx0cyI+
VGVzdCBSZXN1bHRzPC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJidWlsZHNsYXZlcyI+QnVpbGRz
bGF2ZTwvYT4gaW5mb3JtYXRpb248L2xpPgotPC91bD4KLQotPGgyPlRlc3RzIGFuZCBQZXJmb3Jt
YW5jZTwvaDI+Ci08dWw+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9y
ZyI+Rmxha2luZXNzIGRhc2hib2FyZDwvYT4gKEV4dGVybmFsIHNpdGUpPC9saT4KLSAgPGxpPjxh
IGhyZWY9IkxlYWtzVmlld2VyIj5MZWFrcyBWaWV3ZXI8L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9
IlRlc3RGYWlsdXJlcyI+VGVzdCBGYWlsdXJlczwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0
cHM6Ly9wZXJmLndlYmtpdC5vcmcvIj5XZWJLaXQgUGVyZiBNb25pdG9yPC9hPiByZXN1bHRzIHN1
Ym1pdHRlZCBieSA8YSBocmVmPSJodHRwczovL2J1aWxkLndlYmtpdC5vcmcvd2F0ZXJmYWxsP3No
b3c9QXBwbGUlMjBZb3NlbWl0ZSUyMFJlbGVhc2UlMjBXSzIlMjAlMjhQZXJmJTI5JnNob3c9R1RL
JTIwTGludXglMjA2NC1iaXQlMjBSZWxlYXNlJTIwJTI4UGVyZiUyOSI+cGVyZm9ybWFuY2UgYm90
czwvYT48L2xpPgotPC91bD4KLQotPGgyPlN0YXR1czwvaDI+Ci08dWw+Ci0gICAgPGxpPjxhIGhy
ZWY9Imh0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycyI+RWFybHkgV2Fybmlu
ZyBTeXN0ZW0gYW5kIENvbW1pdCBRdWV1ZSBTdGF0dXM8L2E+PC9saT4KLTwvdWw+Ci0KLTwvYm9k
eT4KLTwvaHRtbD4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3drYnVpbGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZC5weQkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWls
ZC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDE0OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIkZ1bmN0aW9ucyByZWxhdGluZyB0byBidWlsZGluZyBX
ZWJLaXQiIiIKLQotaW1wb3J0IHJlCi0KLQotZGVmIF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxk
KHRhcmdldF9wbGF0Zm9ybSwgZmlsZSk6Ci0gICAgIyBUaGUgZGlyZWN0b3JpZXMgYW5kIHBhdHRl
cm5zIGxpc3RzIGJlbG93IG1hcCBkaXJlY3RvcnkgbmFtZXMgb3IKLSAgICAjIHJlZ2V4cCBwYXR0
ZXJucyB0byB0aGUgYm90IHBsYXRmb3JtcyBmb3Igd2hpY2ggdGhleSBzaG91bGQgdHJpZ2dlciBh
Ci0gICAgIyBidWlsZC4gTWFwcGluZyB0byB0aGUgZW1wdHkgbGlzdCBtZWFucyB0aGF0IG5vIGJ1
aWxkcyBzaG91bGQgYmUKLSAgICAjIHRyaWdnZXJlZCBvbiBhbnkgcGxhdGZvcm1zLiBFYXJsaWVy
IGRpcmVjdG9yaWVzL3BhdHRlcm5zIHRha2UKLSAgICAjIHByZWNlbmRlbmNlIG92ZXIgbGF0ZXIg
b25lcy4KLQotICAgICMgRklYTUU6IFRoZSBwYXR0ZXJucyBiZWxvdyBoYXZlIG9ubHkgYmVlbiB2
ZXJpZmllZCB0byBiZSBjb3JyZWN0IG9uCi0gICAgIyB0aGUgcGxhdGZvcm1zIGxpc3RlZCBiZWxv
dy4gV2Ugc2hvdWxkIGltcGxlbWVudCB0aGlzIGZvciBvdGhlciBwbGF0Zm9ybXMKLSAgICAjIGFu
ZCBzdGFydCB1c2luZyBpdCBmb3IgdGhlaXIgYm90cy4gU29tZW9uZSBmYW1pbGlhciB3aXRoIGVh
Y2ggcGxhdGZvcm0KLSAgICAjIHdpbGwgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHJpZ2h0
IHNldCBvZiBkaXJlY3Rvcmllcy9wYXR0ZXJucyBpcyBmb3IKLSAgICAjIHRoYXQgcGxhdGZvcm0u
Ci0gICAgYXNzZXJ0KHRhcmdldF9wbGF0Zm9ybSBpbiAoCi0gICAgICAgICJtYWMteW9zZW1pdGUi
LAotICAgICAgICAibWFjLWVsY2FwaXRhbiIsCi0gICAgICAgICJtYWMtc2llcnJhIiwKLSAgICAg
ICAgIm1hYy1oaWdoc2llcnJhIiwKLSAgICAgICAgIm1hYy1tb2phdmUiLAotICAgICAgICAibWFj
LWNhdGFsaW5hIiwKLSAgICAgICAgIm1hYy1iaWdzdXIiLAotICAgICAgICAid2luIiwKLSAgICAg
ICAgImlvcy0xNCIsCi0gICAgICAgICJpb3Mtc2ltdWxhdG9yLTE0IiwKLSAgICAgICAgInR2b3Mt
MTQiLAotICAgICAgICAidHZvcy1zaW11bGF0b3ItMTQiLAotICAgICAgICAid2F0Y2hvcy03IiwK
LSAgICAgICAgIndhdGNob3Mtc2ltdWxhdG9yLTciLAotICAgICkpCi0KLSAgICBkaXJlY3Rvcmll
cyA9IFsKLSAgICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1aWxk
cyBvbiBhbnkgYm90cy4KLSAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKLSAgICAgICAgKCJQZXJm
b3JtYW5jZVRlc3RzIiwgW10pLAotICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAotICAgICAg
ICAoIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sIiwgW10pLAotICAgICAgICAoIldlYnNpdGVzIiwgW10pLAotICAgICAgICAoIm9wZW5n
bCIsIFtdKSwKLSAgICAgICAgKCJvcGVudHlwZSIsIFtdKSwKLSAgICAgICAgKCJvcGVudmciLCBb
XSksCi0gICAgICAgICgid3giLCBbXSksCi0KLSAgICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNo
b3VsZCB0cmlnZ2VyIGJ1aWxkcyBvbiBvbmx5IHNvbWUgYm90cy4KLSAgICAgICAgKCJMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yIiwgWyJpb3MiXSksCi0gICAgICAgICgiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13azEiLCBbImlvcyJdKSwKLSAgICAgICAgKCJM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMiIsIFsiaW9zIl0pLAotICAgICAg
ICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZSIsIFsibWFjLXlvc2VtaXRlIl0p
LAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1lbGNhcGl0YW4iLCBbIm1hYy15
b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRm
b3JtL21hYy1zaWVycmEiLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1z
aWVycmEiXSksCi0gICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEi
LCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhp
Z2hzaWVycmEiXSksCi0gICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZSIs
IFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGln
aHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1jYXRhbGluYSIsIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNp
ZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgIm1hYy1iaWdzdXIiXSksCi0g
ICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ciIsIFsibWFjLWJpZ3N1ciJd
KSwKLSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syIiwgWyJtYWMiXSksCi0g
ICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMSIsIFsibWFjIl0pLAotICAgICAg
ICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYyIsIFsibWFjIiwgIndpbiJdKSwKLSAgICAgICAg
KCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIiLCBbIm1hYyIsICJpb3MiXSksCi0gICAgICAgICgi
Y2Fpcm8iLCBbImd0ayIsICJ3aW5jYWlybyJdKSwKLSAgICAgICAgKCJjZiIsIFsibWFjIiwgIndp
biIsICJpb3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAoImNvY29hIiwgWyJtYWMi
LCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJjdXJsIiwgWyJndGsiLCAi
d2luY2Fpcm8iXSksCi0gICAgICAgICgiZ29iamVjdCIsIFsiZ3RrIl0pLAotICAgICAgICAoImdz
dHJlYW1lciIsIFsiZ3RrIl0pLAotICAgICAgICAoImd0ayIsIFsiZ3RrIl0pLAotICAgICAgICAo
ImlvcyIsIFsiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJtYWMiLCBbIm1h
YyJdKSwKLSAgICAgICAgKCJvYmpjIiwgWyJtYWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJd
KSwKLSAgICAgICAgKCJzb3VwIiwgWyJndGsiXSksCi0gICAgICAgICgid2luIiwgWyJ3aW4iXSks
Ci0gICAgXQotICAgIHBhdHRlcm5zID0gWwotICAgICAgICAjIFBhdHRlcm5zIHRoYXQgc2hvdWxk
bid0IHRyaWdnZXIgYnVpbGRzIG9uIGFueSBib3RzLgotICAgICAgICAociIoPzpefC8pQ2hhbmdl
TG9nLiokIiwgW10pLAotICAgICAgICAociIoPzpefC8pTWFrZWZpbGUkIiwgW10pLAotICAgICAg
ICAociIvQVJNIiwgW10pLAotICAgICAgICAociIvQ01ha2UuKiIsIFtdKSwKLSAgICAgICAgKHIi
L0xJQ0VOU0VbXi9dKyQiLCBbXSksCi0gICAgICAgIChyIkFSTSg/OnY3KT9cLig/OmNwcHxoKSQi
LCBbXSksCi0gICAgICAgIChyIk1JUFNcLig/OmNwcHxoKSQiLCBbXSksCi0gICAgICAgIChyIlwu
KD86YmtsfG1rKSQiLCBbXSksCi0KLSAgICAgICAgIyBQYXR0ZXJucyB0aGF0IHNob3VsZCB0cmln
Z2VyIGJ1aWxkcyBvbiBvbmx5IHNvbWUgYm90cy4KLSAgICAgICAgKHIiKD86XnwvKVBsYXRmb3Jt
R1RLXC5jbWFrZSQiLCBbImd0ayJdKSwKLSAgICAgICAgKHIiTWFjXC4oPzpjcHB8aHxtbSkkIiwg
WyJtYWMiXSksCi0gICAgICAgIChyIklPU1wuKD86Y3BwfGh8bW0pJCIsIFsiaW9zIiwgInR2b3Mi
LCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKHIiXC4oPzp2Y3Byb2p8dnNwcm9wc3xzbG58dmN4cHJv
anxwcm9wc3xmaWx0ZXJzKSQiLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC5leHAoPzpcLmluKT8k
IiwgWyJtYWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKHIiXC5vcmRl
ciQiLCBbIm1hYyIsICJpb3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAociJcLig/
OnZjcHJvanx2Y3hwcm9qKS8iLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC54Y2NvbmZpZyQiLCBb
Im1hYyIsICJpb3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAociJcLnhjb2RlcHJv
ai8iLCBbIm1hYyIsICJpb3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgIF0KLQotICAgIGJh
c2VfcGxhdGZvcm0gPSB0YXJnZXRfcGxhdGZvcm0uc3BsaXQoIi0iKVswXQotCi0gICAgIyBTZWUg
aWYgdGhlIGZpbGUgaXMgaW4gb25lIG9mIHRoZSBrbm93biBkaXJlY3Rvcmllcy4KLSAgICBmb3Ig
ZGlyZWN0b3J5LCBwbGF0Zm9ybXMgaW4gZGlyZWN0b3JpZXM6Ci0gICAgICAgIGlmIHJlLnNlYXJj
aChyIig/Ol58Lyklcy8iICUgZGlyZWN0b3J5LCBmaWxlKToKLSAgICAgICAgICAgIHJldHVybiB0
YXJnZXRfcGxhdGZvcm0gaW4gcGxhdGZvcm1zIG9yIGJhc2VfcGxhdGZvcm0gaW4gcGxhdGZvcm1z
Ci0KLSAgICAjIFNlZSBpZiB0aGUgZmlsZSBtYXRjaGVzIGEga25vd24gcGF0dGVybi4KLSAgICBm
b3IgcGF0dGVybiwgcGxhdGZvcm1zIGluIHBhdHRlcm5zOgotICAgICAgICBpZiByZS5zZWFyY2go
cGF0dGVybiwgZmlsZSk6Ci0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0X3BsYXRmb3JtIGluIHBs
YXRmb3JtcyBvciBiYXNlX3BsYXRmb3JtIGluIHBsYXRmb3JtcwotCi0gICAgIyBTZWUgaWYgdGhl
IGZpbGUgaXMgYSBwbGF0Zm9ybS1zcGVjaWZpYyB0ZXN0IHJlc3VsdC4KLSAgICBtYXRjaCA9IHJl
Lm1hdGNoKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS8oP1A8cGxhdGZvcm0+W14vXSspLyIsIGZpbGUp
Ci0gICAgaWYgbWF0Y2g6Ci0gICAgICAgICMgU2VlIGlmIHRoZSBmaWxlIGlzIGEgdGVzdCByZXN1
bHQgZm9yIHRoaXMgcGxhdGZvcm0sIG91ciBiYXNlCi0gICAgICAgICMgcGxhdGZvcm0sIG9yIG9u
ZSBvZiBvdXIgc3ViLXBsYXRmb3Jtcy4KLSAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCJwbGF0
Zm9ybSIpIGluICh0YXJnZXRfcGxhdGZvcm0sIGJhc2VfcGxhdGZvcm0pIG9yIG1hdGNoLmdyb3Vw
KCJwbGF0Zm9ybSIpLnN0YXJ0c3dpdGgoIiVzLSIgJSB0YXJnZXRfcGxhdGZvcm0pCi0KLSAgICAj
IFRoZSBmaWxlIGlzbid0IG9uZSB3ZSBrbm93IGFib3V0IHNwZWNpZmljYWxseSwgc28gd2Ugc2hv
dWxkIGFzc3VtZSB3ZQotICAgICMgaGF2ZSB0byBidWlsZC4KLSAgICByZXR1cm4gVHJ1ZQotCi0K
LWRlZiBzaG91bGRfYnVpbGQodGFyZ2V0X3BsYXRmb3JtLCBjaGFuZ2VkX2ZpbGVzKToKLSAgICAi
IiJSZXR1cm5zIHRydWUgaWYgdGhlIGNoYW5nZWQgZmlsZXMgYWZmZWN0IHRoZSBnaXZlbiBwbGF0
Zm9ybSwgYW5kCi0gICAgdGh1cyBhIGJ1aWxkIHNob3VsZCBiZSBwZXJmb3JtZWQuIHRhcmdldF9w
bGF0Zm9ybSBzaG91bGQgYmUgb25lIG9mIHRoZQotICAgIHBsYXRmb3JtcyB1c2VkIGluIHRoZSBi
dWlsZC53ZWJraXQub3JnIG1hc3RlcidzIGNvbmZpZy5qc29uIGZpbGUuIiIiCi0gICAgcmV0dXJu
IGFueShfc2hvdWxkX2ZpbGVfdHJpZ2dlcl9idWlsZCh0YXJnZXRfcGxhdGZvcm0sIGZpbGUpIGZv
ciBmaWxlIGluIGNoYW5nZWRfZmlsZXMpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRf
dW5pdHRlc3QucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSw4NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJl
IG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgot
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
Ci0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHdrYnVpbGQKLQotCi1jbGFzcyBTaG91
bGRCdWlsZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIF9zaG91bGRfYnVpbGRfdGVzdHMg
PSBbCi0gICAgICAgIChbIkNoYW5nZUxvZyIsICJTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2ciLCAi
U291cmNlL1dlYktpdC9DaGFuZ2VMb2ctMjAxMS0wMi0xMSJdLCBbXSksCi0gICAgICAgIChbIldl
YnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9mb28iLCAiU291cmNlL1dlYkNvcmUvYmFyIl0sIFsiKiJd
KSwKLSAgICAgICAgKFsiV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2ZvbyJdLCBbXSksCi0gICAg
ICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovZm9v
Il0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMt
aGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0Iiwg
InR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndhdGNob3Mtc2lt
dWxhdG9yLTciXSksCi0gICAgICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0
aW9ucy9CYXNlLnhjY29uZmlnIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAi
bWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgImlvcy0xNCIsICJp
b3Mtc2ltdWxhdG9yLTE0IiwgInR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAid2F0Y2hv
cy03IiwgIndhdGNob3Mtc2ltdWxhdG9yLTciXSksCi0gICAgICAgIChbIlNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovZm9vIiwgIlNvdXJjZS9XZWJLaXQvd2luL1dl
YktpdDIudmNwcm9qIiwgIlNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdC5zbG4iLCAiVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyQ29tbW9u
LnZzcHJvcHMiXSwgWyJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mb28iLCAiU291cmNlL1dlYkNvcmUvYmFyIl0sIFsiKiJdKSwKLSAgICAgICAgKFsiTGF5b3V0
VGVzdHMvZm9vIl0sIFsiKiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxp
cC90ZXN0cy9zaXplLmF0dHJpYnV0ZXMucGFyc2UuZXhwLWV4cGVjdGVkLnR4dCIsICJMYXlvdXRU
ZXN0cy9jYW52YXMvcGhpbGlwL3Rlc3RzL3NpemUuYXR0cmlidXRlcy5wYXJzZS5leHAuaHRtbCJd
LCBbIioiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZS9m
b28iXSwgWyJtYWMteW9zZW1pdGUiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy1lbGNhcGl0YW4vZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zaWVycmEvZm9vIl0sIFsibWFj
LXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSJdKSwKLSAgICAgICAgKFsi
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEvZm9vIl0sIFsibWFjLXlvc2VtaXRl
IiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSJdKSwKLSAg
ICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9mb28iXSwgWyJtYWMteW9z
ZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwg
Im1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1jYXRh
bGluYS9mb28iXSwgWyJtYWMtbW9qYXZlIiwgIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFu
IiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAgICAg
ICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mb28iXSwgWyJpb3MtMTQi
LCAiaW9zLXNpbXVsYXRvci0xNCJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azEvZm9vIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL2ZvbyJd
LCBbImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0Il0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS93azIvU2tpcHBlZCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFu
IiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQi
LCAiaW9zLXNpbXVsYXRvci0xNCJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjLXdrMi9Ta2lwcGVkIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFj
LXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAoWyJM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL2NvbXBvc2l0aW5nL3RpbGluZy90cmFuc2Zvcm0t
b3JpZ2luLXRpbGVkLWV4cGVjdGVkLnR4dCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBp
dGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAg
ICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIs
ICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1v
amF2ZSIsICJ3aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24t
ZXhwZWN0ZWQudHh0Il0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNp
ZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAoWyJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4teHAvZm9vIl0sIFsid2luIl0pLAotICAgICAgICAoWyJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4td2sxL2ZvbyJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL2ZvbyJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vc3BpL2NvY29hL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxj
YXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJp
b3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0
IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9zcGkvY2YvZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNh
cGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgIndp
biIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxh
dG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAo
WyJTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJLaXQubWFjLmV4cCJdLCBbIm1hYy15b3NlbWl0
ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFj
LW1vamF2ZSJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViS2l0LmlP
Uy5leHAiXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mt
c2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAg
ICAgICAoWyJTb3VyY2UvRHVtbXkvZm9vLmV4cCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxj
YXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJp
b3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0
IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3Vy
Y2UvV2ViQ29yZS9pb3MvZm9vIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZv
cy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0
b3ItNyJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvbWFjL2ZvbyJdLCBbIm1hYy15b3Nl
bWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAi
bWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvd2luL2ZvbyJdLCBbIndp
biJdKSwKLSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5t
bSJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFj
LWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIs
ICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNp
bXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNv
ZGUvd2luL2ZvbyJdLCBbXSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0iXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0x
NCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9z
LXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVGhlbWVNYWMubW0iLCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
LmgiXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1h
Yy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5tbSIsICJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MuaCJdLCBbImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0IiwgInR2b3Mt
MTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndhdGNob3Mtc2ltdWxhdG9y
LTciXSksCi0gICAgICAgIChbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzIl0sIFtdKSwK
LSAgICBdCi0KLSAgICBkZWYgdGVzdF9zaG91bGRfYnVpbGQoc2VsZik6Ci0gICAgICAgIGZvciBm
aWxlcywgcGxhdGZvcm1zIGluIHNlbGYuX3Nob3VsZF9idWlsZF90ZXN0czoKLSAgICAgICAgICAg
ICMgRklYTUU6IFdlIHNob3VsZCB0ZXN0IG1vcmUgcGxhdGZvcm1zIGhlcmUgb25jZQotICAgICAg
ICAgICAgIyB3a2J1aWxkLl9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkIGlzIGltcGxlbWVudGVk
IGZvciB0aGVtLgotICAgICAgICAgICAgZm9yIHBsYXRmb3JtIGluIFsibWFjLXlvc2VtaXRlIiwg
Im1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9q
YXZlIiwgIndpbiIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2
b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il06Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkX2J1aWxkID0gcGxhdGZvcm0gaW4gcGxhdGZvcm1zIG9yICIq
IiBpbiBwbGF0Zm9ybXMKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdrYnVpbGQu
c2hvdWxkX2J1aWxkKHBsYXRmb3JtLCBmaWxlcyksIHNob3VsZF9idWlsZCwgIiVzIHNob3VsZCVz
IGhhdmUgYnVpbHQgYnV0IGRpZCVzIChmaWxlczogJXMpIiAlIChwbGF0Zm9ybSwgIiIgaWYgc2hv
dWxkX2J1aWxkIGVsc2UgIm4ndCIsICJuJ3QiIGlmIHNob3VsZF9idWlsZCBlbHNlICIiLCBzdHIo
ZmlsZXMpKSkKLQotIyBGSVhNRTogV2Ugc2hvdWxkIHJ1biB0aGlzIGZpbGUgYXMgcGFydCBvZiB0
ZXN0LXJtIC4KLSMgVW5mb3J0dW5hdGVseSB0ZXN0LXJtICBjdXJyZW50bHkgcmVxdWlyZXMgdGhh
dCB1bml0dGVzdHMKLSMgYmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9k
dWxlIG5hbWUuCi0jICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9k
dWxlIG5hbWUgKGR1ZSB0byAnLicgYW5kICctJykKLSMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3Rh
bmQtYWxvbmUgdGVzdCBoYXJuZXNzLgotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1
bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZwkobm9uZXhpc3RlbnQpCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjppZ25vcmUKIyMgLTEgKzAsMCAjIwotcGFzc3dvcmRz
Lmpzb24KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2
ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFy
Y2hpdmUJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0
LXByb2R1Y3QtYXJjaGl2ZQkobm9uZXhpc3RlbnQpCkBAIC0xLDI4OSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
LSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWlt
cG9ydCBlcnJubwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWlt
cG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgemlwZmlsZQotCi1fY29uZmlndXJh
dGlvbkJ1aWxkRGlyZWN0b3J5ID0gTm9uZQotX3RvcExldmVsQnVpbGREaXJlY3RvcnkgPSBOb25l
Ci1faG9zdEJ1aWxkRGlyZWN0b3J5ID0gTm9uZQotCi1QQVRIX1RPX0xBVU5DSEVSID0gJy4vVG9v
bHMvV2ViS2l0QXJjaGl2ZVN1cHBvcnQvcnVuLXdlYmtpdC1hcmNoaXZlJwotUEFUSF9UT19SRUFE
TUUgPSAnLi9Ub29scy9XZWJLaXRBcmNoaXZlU3VwcG9ydC9SRUFETUUnCi0KLWRlZiBtYWluKCk6
Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCJ1c2FnZTogJXByb2cgW29wdGlv
bnNdIFthY3Rpb25dIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1wbGF0Zm9ybSIsIGRlc3Q9
InBsYXRmb3JtIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1kZWJ1ZyIsIGFjdGlvbj0ic3Rv
cmVfY29uc3QiLCBjb25zdD0iZGVidWciLCBkZXN0PSJjb25maWd1cmF0aW9uIikKLSAgICBwYXJz
ZXIuYWRkX29wdGlvbigiLS1yZWxlYXNlIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJy
ZWxlYXNlIiwgZGVzdD0iY29uZmlndXJhdGlvbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0t
bWluaWZ5IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibWluaWZ5IiwgZGVmYXVsdD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJDcmVhdGUgYSBtaW5pZmllZCBhcmNoaXZl
IGJ5IHJlbW92aW5nIGZpbGVzIHRoYXQgYXJlIG5vdCBuZWNlc3NhcnkgZm9yIHJ1bm5pbmcgYXBw
bGljYXRpb25zIGFnYWluc3QgdGhlIGJ1aWx0IHByb2R1Y3QsIGF0IHRoZSBjb3N0IG9mIGNvbXBs
aWNhdGluZyBkZWJ1Z2dpbmcuIikKLSAgICAgICAgICAgICAgICAgICAgICAKLSAgICBvcHRpb25z
LCAoYWN0aW9uLCApID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIG5vdCBvcHRpb25zLnBs
YXRmb3JtOgotICAgICAgICBwYXJzZXIuZXJyb3IoIlBsYXRmb3JtIGlzIHJlcXVpcmVkIikKLSAg
ICAgICAgcmV0dXJuIDEKLSAgICBpZiBub3Qgb3B0aW9ucy5jb25maWd1cmF0aW9uOgotICAgICAg
ICBwYXJzZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1
cm4gMQotICAgIGlmIGFjdGlvbiBub3QgaW4gKCdhcmNoaXZlJywgJ2V4dHJhY3QnKToKLSAgICAg
ICAgcGFyc2VyLmVycm9yKCJBY3Rpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4gMQot
Ci0gICAgZ2VuZXJpY1BsYXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBd
Ci0gICAgZGV0ZXJtaW5lV2ViS2l0QnVpbGREaXJlY3RvcmllcyhnZW5lcmljUGxhdGZvcm0sIG9w
dGlvbnMucGxhdGZvcm0sIG9wdGlvbnMuY29uZmlndXJhdGlvbikKLSAgICBpZiBub3QgX3RvcExl
dmVsQnVpbGREaXJlY3Rvcnk6Ci0gICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdDb3VsZCBu
b3QgZGV0ZXJtaW5lIHRvcC1sZXZlbCBidWlsZCBkaXJlY3RvcnknCi0gICAgICAgIHJldHVybiAx
Ci0gICAgaWYgbm90IF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3Rvcnk6Ci0gICAgICAgIHByaW50
ID4+IHN5cy5zdGRlcnIsICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZ3VyYXRpb24tc3BlY2lm
aWMgYnVpbGQgZGlyZWN0b3J5JwotICAgICAgICByZXR1cm4gMQotCi0gICAgaWYgYWN0aW9uID09
ICdhcmNoaXZlJzoKLSAgICAgICAgcmV0dXJuIGFyY2hpdmVCdWlsdFByb2R1Y3Qob3B0aW9ucy5j
b25maWd1cmF0aW9uLCBnZW5lcmljUGxhdGZvcm0sIG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMu
bWluaWZ5KQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBleHRyYWN0QnVpbHRQcm9kdWN0KG9w
dGlvbnMuY29uZmlndXJhdGlvbiwgZ2VuZXJpY1BsYXRmb3JtKQotCi0KLWRlZiB3ZWJraXRCdWls
ZERpcmVjdG9yeUZvckNvbmZpZ3VyYXRpb25BbmRQbGF0Zm9ybShjb25maWd1cmF0aW9uLCBwbGF0
Zm9ybSwgZnVsbFBsYXRmb3JtPScnLCByZXR1cm5Ub3BMZXZlbERpcmVjdG9yeT1GYWxzZSk6Ci0g
ICAgaWYgJ3NpbXVsYXRvcicgaW4gZnVsbFBsYXRmb3JtOgotICAgICAgICBwbGF0Zm9ybSA9IHBs
YXRmb3JtICsgJy1zaW11bGF0b3InCi0gICAgZWxpZiBwbGF0Zm9ybSBpbiBbJ2lvcycsICd0dm9z
JywgJ3dhdGNob3MnXToKLSAgICAgICAgcGxhdGZvcm0gPSBwbGF0Zm9ybSArICctZGV2aWNlJwot
ICAgIGNvbW1hbmQgPSBbJ3BlcmwnLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKSwgJy4uJywgJ1NjcmlwdHMnLCAnd2Via2l0LWJ1aWxkLWRpcmVjdG9yeScpLCAnLS0nICsg
cGxhdGZvcm0sICctLScgKyBjb25maWd1cmF0aW9uXQotICAgIGlmIHJldHVyblRvcExldmVsRGly
ZWN0b3J5OgotICAgICAgICBjb21tYW5kICs9IFsnLS10b3AtbGV2ZWwnXQotICAgIGVsc2U6Ci0g
ICAgICAgIGNvbW1hbmQgKz0gWyctLWNvbmZpZ3VyYXRpb24nXQotICAgIHJldHVybiBzdWJwcm9j
ZXNzLlBvcGVuKGNvbW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClb
MF0uc3RyaXAoKQotCi0KLWRlZiBkZXRlcm1pbmVXZWJLaXRCdWlsZERpcmVjdG9yaWVzKHBsYXRm
b3JtLCBmdWxsUGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24pOgotICAgIGdsb2JhbCBfY29uZmlndXJh
dGlvbkJ1aWxkRGlyZWN0b3J5Ci0gICAgZ2xvYmFsIF90b3BMZXZlbEJ1aWxkRGlyZWN0b3J5Ci0g
ICAgZ2xvYmFsIF9ob3N0QnVpbGREaXJlY3RvcnkKLSAgICBfY29uZmlndXJhdGlvbkJ1aWxkRGly
ZWN0b3J5ID0gd2Via2l0QnVpbGREaXJlY3RvcnlGb3JDb25maWd1cmF0aW9uQW5kUGxhdGZvcm0o
Y29uZmlndXJhdGlvbiwgcGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSkKLSAgICBfdG9wTGV2ZWxCdWls
ZERpcmVjdG9yeSA9IHdlYmtpdEJ1aWxkRGlyZWN0b3J5Rm9yQ29uZmlndXJhdGlvbkFuZFBsYXRm
b3JtKGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCBmdWxsUGxhdGZvcm0sIHJldHVyblRvcExldmVs
RGlyZWN0b3J5PVRydWUpCi0gICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZvcycsICd3YXRj
aG9zJ106Ci0gICAgICAgIF9ob3N0QnVpbGREaXJlY3RvcnkgPSB3ZWJraXRCdWlsZERpcmVjdG9y
eUZvckNvbmZpZ3VyYXRpb25BbmRQbGF0Zm9ybShjb25maWd1cmF0aW9uLCAnbWFjJykKLSAgICBl
bHNlOgotICAgICAgICBfaG9zdEJ1aWxkRGlyZWN0b3J5ID0gX2NvbmZpZ3VyYXRpb25CdWlsZERp
cmVjdG9yeQotICAgIAotICAgIHJldHVybiBfdG9wTGV2ZWxCdWlsZERpcmVjdG9yeQotCi0KLWRl
ZiByZW1vdmVEaXJlY3RvcnlJZkV4aXN0cyh0aGluRGlyZWN0b3J5KToKLSAgICBpZiBvcy5wYXRo
LmlzZGlyKHRoaW5EaXJlY3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKHRoaW5EaXJlY3Rv
cnkpCi0KLQotZGVmIGNvcHlCdWlsZEZpbGVzKHNvdXJjZSwgZGVzdGluYXRpb24sIHBhdHRlcm5z
KToKLSAgICBzaHV0aWwuY29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwgaWdub3JlPXNodXRp
bC5pZ25vcmVfcGF0dGVybnMoKnBhdHRlcm5zKSkKLQotCi1kZWYgY3JlYXRlWmlwRnJvbUxpc3Qo
bGlzdFRvWmlwLCBjb25maWd1cmF0aW9uLCBleGNsdWRlUGF0dGVybj1Ob25lKToKLSAgICBhcmNo
aXZlRGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAnLi4nLCAnLi4nLCAnV2ViS2l0QnVpbGQnKSkKLSAgICBhcmNoaXZlRmlsZSA9IG9z
LnBhdGguam9pbihhcmNoaXZlRGlyLCBjb25maWd1cmF0aW9uICsgJy56aXAnKQotCi0gICAgdHJ5
OgotICAgICAgICBvcy51bmxpbmsoYXJjaGl2ZUZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6
Ci0gICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UK
LQotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgotICAgICAgICB6aXBD
b21tYW5kID0gWyd6aXAnLCAnLXknLCAnLXInLCBhcmNoaXZlRmlsZV0gKyBsaXN0VG9aaXAKLSAg
ICAgICAgaWYgZXhjbHVkZVBhdHRlcm46Ci0gICAgICAgICAgICB6aXBDb21tYW5kICs9IFsnLXgn
LCBleGNsdWRlUGF0dGVybl0KLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbCh6aXBDb21t
YW5kLCBjd2Q9X2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSkKLQotICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IoJ1Vuc3VwcG9ydGVkIHBsYXRmb3JtOiB7cGxhdGZvcm19Jy5mb3JtYXQo
cGxhdGZvcm09c3lzLnBsYXRmb3JtKSkKLQotCi1kZWYgY3JlYXRlWmlwTWFudWFsbHkoZGlyZWN0
b3J5VG9aaXAsIGFyY2hpdmVGaWxlKToKLSAgICBhcmNoaXZlWmlwID0gemlwZmlsZS5aaXBGaWxl
KGFyY2hpdmVGaWxlLCAidyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKQotCi0gICAgZm9yIHBhdGgs
IGRpck5hbWVzLCBmaWxlTmFtZXMgaW4gb3Mud2FsayhkaXJlY3RvcnlUb1ppcCk6Ci0gICAgICAg
IHJlbGF0aXZlUGF0aCA9IG9zLnBhdGgucmVscGF0aChwYXRoLCBkaXJlY3RvcnlUb1ppcCkKLSAg
ICAgICAgZm9yIGZpbGVOYW1lIGluIGZpbGVOYW1lczoKLSAgICAgICAgICAgIGFyY2hpdmVaaXAu
d3JpdGUob3MucGF0aC5qb2luKHBhdGgsIGZpbGVOYW1lKSwgb3MucGF0aC5qb2luKHJlbGF0aXZl
UGF0aCwgZmlsZU5hbWUpKQotCi0gICAgYXJjaGl2ZVppcC5jbG9zZSgpCi0KLWRlZiBhZGRGaWxl
c1RvQXJjaGl2ZShhcmNoaXZlRmlsZSwgcGF0aFRvTGF1bmNoZXIsIHBhdGhUb1JlYWRtZSk6Ci0g
ICAgY29tbWFuZCA9IFsnL3Vzci9iaW4vemlwJywgJy1qJywgYXJjaGl2ZUZpbGUsIHBhdGhUb0xh
dW5jaGVyLCBwYXRoVG9SZWFkbWVdCi0gICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChjb21tYW5k
KQotCi1kZWYgY3JlYXRlWmlwKGRpcmVjdG9yeVRvWmlwLCBjb25maWd1cmF0aW9uLCBlbWJlZFBh
cmVudERpcmVjdG9yeU5hbWVPbkRhcndpbj1GYWxzZSwgbWluaWZ5PUZhbHNlKToKLSAgICBhcmNo
aXZlRGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19m
aWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQiKSkKLSAgICBpZiBtaW5pZnk6Ci0gICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSAnbWluaWZpZWQtJyArIGNvbmZpZ3VyYXRpb24KLSAgICBhcmNo
aXZlRmlsZSA9IG9zLnBhdGguam9pbihhcmNoaXZlRGlyLCBjb25maWd1cmF0aW9uICsgIi56aXAi
KQotCi0gICAgdHJ5OgotICAgICAgICBvcy51bmxpbmsoYXJjaGl2ZUZpbGUpCi0gICAgZXhjZXB0
IE9TRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAg
ICAgICAgcmFpc2UKLQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAg
Y29tbWFuZCA9IFsnZGl0dG8nLCAnLWMnLCAnLWsnLCAnLS1zZXF1ZXN0ZXJSc3JjJ10KLSAgICAg
ICAgaWYgZW1iZWRQYXJlbnREaXJlY3RvcnlOYW1lT25EYXJ3aW46Ci0gICAgICAgICAgICBjb21t
YW5kICs9IFsnLS1rZWVwUGFyZW50J10KLSAgICAgICAgY29tbWFuZCArPSBbZGlyZWN0b3J5VG9a
aXAsIGFyY2hpdmVGaWxlXQotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQp
IG9yIGFkZEZpbGVzVG9BcmNoaXZlKGFyY2hpdmVGaWxlLCBQQVRIX1RPX0xBVU5DSEVSLCBQQVRI
X1RPX1JFQURNRSkgCi0gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAg
IHJldHVybiBzdWJwcm9jZXNzLmNhbGwoWyJ6aXAiLCAiLXIiLCBhcmNoaXZlRmlsZSwgImJpbjY0
Il0sIGN3ZD1kaXJlY3RvcnlUb1ppcCkKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzIn
OgotICAgICAgICBjcmVhdGVaaXBNYW51YWxseShkaXJlY3RvcnlUb1ppcCwgYXJjaGl2ZUZpbGUp
Ci0gICAgICAgIHJldHVybiAwCi0gICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGlu
dXgnKToKLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICIteSIsICItciIs
IGFyY2hpdmVGaWxlLCAiLiJdLCBjd2Q9ZGlyZWN0b3J5VG9aaXApCi0KLQotZGVmIGRpckNvbnRh
aW5zZHdvKGRpcmVjdG9yeSk6Ci0gICAgc291cmNlZGlyID0gb3MucGF0aC5qb2luKF9jb25maWd1
cmF0aW9uQnVpbGREaXJlY3RvcnksIGRpcmVjdG9yeSkKLSAgICBmb3Igcm9vdCwgZGlycywgZmls
ZXMgaW4gb3Mud2Fsayhzb3VyY2VkaXIsIHRvcGRvd249RmFsc2UpOgotICAgICAgICBmb3IgbmFt
ZSBpbiBmaWxlczoKLSAgICAgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5kd28iKToKLSAgICAg
ICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBtaW5pZnlE
aXJlY3RvcnkocGxhdGZvcm0sIGRpcmVjdG9yeSk6Ci0gICAgaWYgcGxhdGZvcm0gaW4gWydtYWMn
LCAnaW9zJywgJ3R2b3MnLCAnd2F0Y2hvcyddOgotICAgICAgICBkaXJfcGF0dGVybnMgPSAoJy5k
U1lNJywgJ0Rlcml2ZWRTb3VyY2VzJykKLSAgICAgICAgZmlsZV9wYXR0ZXJucyA9ICgnLmEnLCkK
LSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAg
ICAgICAgICAgIGlmIGFueShyb290LmVuZHN3aXRoKHBhdHRlcm4pIGZvciBwYXR0ZXJuIGluIGRp
cl9wYXR0ZXJucyk6Ci0gICAgICAgICAgICAgICAgcHJpbnQgJ1JlbW92aW5nOiB7fScuZm9ybWF0
KHJvb3QpCi0gICAgICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShyb290KQotICAgICAgICAgICAg
Zm9yIG5hbWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICAgICAgaWYgYW55KG5hbWUuZW5kc3dpdGgo
cGF0dGVybikgZm9yIHBhdHRlcm4gaW4gZmlsZV9wYXR0ZXJucyk6Ci0gICAgICAgICAgICAgICAg
ICAgIHByaW50ICdSZW1vdmluZzoge30nLmZvcm1hdChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkp
Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkp
Ci0KLQotZGVmIGFyY2hpdmVCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0sIGZ1
bGxQbGF0Zm9ybSwgbWluaWZ5PUZhbHNlKToKLSAgICBhc3NlcnQgcGxhdGZvcm0gaW4gKCdndGsn
LCAnaW9zJywgJ2pzYycsICdtYWMnLCAndHZvcycsICd3YXRjaG9zJywgJ3dpbicsICd3aW5jYWly
bycsICd3cGUnKQotCi0gICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZvcycsICd3YXRjaG9z
J106Ci0gICAgICAgIGNvbWJpbmVkRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKF90b3BMZXZlbEJ1
aWxkRGlyZWN0b3J5LCAnY29tYmluZWQtbWFjLWFuZC17fScuZm9ybWF0KHBsYXRmb3JtKSkKLSAg
ICAgICAgcmVtb3ZlRGlyZWN0b3J5SWZFeGlzdHMoY29tYmluZWREaXJlY3RvcnkpCi0gICAgICAg
IG9zLm1ha2VkaXJzKGNvbWJpbmVkRGlyZWN0b3J5KQotICAgICAgICBpZiBtaW5pZnk6Ci0gICAg
ICAgICAgICBtaW5pZnlEaXJlY3RvcnkocGxhdGZvcm0sIF9jb25maWd1cmF0aW9uQnVpbGREaXJl
Y3RvcnkpCi0gICAgICAgICAgICBtaW5pZnlEaXJlY3RvcnkocGxhdGZvcm0sIF9ob3N0QnVpbGRE
aXJlY3RvcnkpCi0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbJy9iaW4vY3AnLCAnLXBSJywg
X2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgY29tYmluZWREaXJlY3RvcnldKToKLSAgICAg
ICAgICAgIHJldHVybiAxCi0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbJy9iaW4vY3AnLCAn
LXBSJywgX2hvc3RCdWlsZERpcmVjdG9yeSwgY29tYmluZWREaXJlY3RvcnldKToKLSAgICAgICAg
ICAgIHJldHVybiAxCi0KLSAgICAgICAgcmV0dXJuIGNyZWF0ZVppcChjb21iaW5lZERpcmVjdG9y
eSwgY29uZmlndXJhdGlvbiwgbWluaWZ5PW1pbmlmeSkKLSAgICBlbGlmIHBsYXRmb3JtID09ICdt
YWMnOgotICAgICAgICBpZiBtaW5pZnk6Ci0gICAgICAgICAgICBtaW5pZnlEaXJlY3RvcnkocGxh
dGZvcm0sIF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBjcmVh
dGVaaXAoX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiwgZW1iZWRQ
YXJlbnREaXJlY3RvcnlOYW1lT25EYXJ3aW49VHJ1ZSwgbWluaWZ5PW1pbmlmeSkKLSAgICBlbGlm
IHBsYXRmb3JtIGluICgnd2luJywgJ3dpbmNhaXJvJyk6Ci0gICAgICAgIGJpblR5cGUgPSAnYmlu
NjQnIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihfY29uZmlndXJhdGlvbkJ1aWxkRGly
ZWN0b3J5LCAnYmluNjQnKSkgZWxzZSAnYmluMzInCi0gICAgICAgIGJpbkRpcmVjdG9yeSA9IG9z
LnBhdGguam9pbihfY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCBiaW5UeXBlKQotICAgICAg
ICB0aGluRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3Rv
cnksICd0aGluJykKLSAgICAgICAgdGhpbkJpbkRpcmVjdG9yeSA9IG9zLnBhdGguam9pbih0aGlu
RGlyZWN0b3J5LCBiaW5UeXBlKQotCi0gICAgICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3RzKHRo
aW5EaXJlY3RvcnkpCi0gICAgICAgIGNvcHlCdWlsZEZpbGVzKGJpbkRpcmVjdG9yeSwgdGhpbkJp
bkRpcmVjdG9yeSwgWycqLmlsayddKQotCi0gICAgICAgICMgU2F2ZSBXaW5DYWlyb1JlcXVpcmVt
ZW50cyB2ZXJzaW9uIGZvciB0ZXN0IGJvdCB1c2UKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dp
bmNhaXJvJzoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KAotICAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbihvcy5nZXRlbnYoJ1dFQktJVF9MSUJSQVJJRVMnKSwgJ1dlYktpdFJlcXVpcmVtZW50
c1dpbjY0LnppcC52ZXJzaW9uJyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRoaW5E
aXJlY3RvcnksICdXZWJLaXRSZXF1aXJlbWVudHNXaW42NC56aXAuY29uZmlnJykpCi0KLSAgICAg
ICAgaWYgY3JlYXRlWmlwKHRoaW5EaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pOgotICAgICAgICAg
ICAgcmV0dXJuIDEKLQotICAgICAgICBzaHV0aWwucm10cmVlKHRoaW5EaXJlY3RvcnkpCi0KLSAg
ICBlbGlmIHBsYXRmb3JtIGluICgnZ3RrJywgJ2pzYycsICd3cGUnKToKLSAgICAgICAgIyBPbiBH
VEsrL1dQRS9KU0Mgd2UgZG9uJ3QgbmVlZCB0aGUgaW50ZXJtZWRpYXRlIHN0ZXAgb2YgY3JlYXRp
bmcgYSB0aGluRGlyZWN0b3J5Ci0gICAgICAgICMgdG8gYmUgY29tcHJlc3NlZCBpbiBhIFpJUCBm
aWxlLCBiZWNhdXNlIHdlIGNhbiBjcmVhdGUgdGhlIFpJUCBkaXJlY3RseS4KLSAgICAgICAgIyBU
aGlzIGlzIGZhc3RlciBhbmQgcmVxdWlyZXMgbGVzcyBkaXNrIHJlc291cmNlcy4KLSAgICAgICAg
bmVlZGVkRGlyZWN0b3JpZXMgPSBbJ2JpbicsICdsaWInXQotICAgICAgICAjIFdoZW4gZGVidWcg
Zmlzc2lvbiBpcyBlbmFibGVkIHRoZSBkaXJlY3RvcmllcyBiZWxvdyBjb250YWluIGR3byBmaWxl
cwotICAgICAgICAjIHdpdGggdGhlIGRlYnVnIGluZm9ybWF0aW9uIG5lZWRlZCB0byBnZW5lcmF0
ZSBiYWNrdHJhY2VzIHdpdGggR0RCLgotICAgICAgICBmb3Igb2JqZWN0RGlyIGluIFsnVG9vbHMn
LCAnU291cmNlJ106Ci0gICAgICAgICAgICBpZiBkaXJDb250YWluc2R3byhvYmplY3REaXIpOgot
ICAgICAgICAgICAgICAgIG5lZWRlZERpcmVjdG9yaWVzLmFwcGVuZChvYmplY3REaXIpCi0KLSAg
ICAgICAgaWYgY3JlYXRlWmlwRnJvbUxpc3QobmVlZGVkRGlyZWN0b3JpZXMsIGNvbmZpZ3VyYXRp
b24sIGV4Y2x1ZGVQYXR0ZXJuPScqLm8nKToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLWRlZiB1
bnppcEFyY2hpdmUoZGlyZWN0b3J5VG9FeHRyYWN0VG8sIGNvbmZpZ3VyYXRpb24pOgotICAgIGFy
Y2hpdmVEaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShf
X2ZpbGVfXyksICIuLiIsICIuLiIsICJXZWJLaXRCdWlsZCIpKQotICAgIGFzc2VydCBvcy5wYXRo
LmlzZGlyKGFyY2hpdmVEaXIpCi0gICAgYXJjaGl2ZUZpbGUgPSBvcy5wYXRoLmpvaW4oYXJjaGl2
ZURpciwgY29uZmlndXJhdGlvbiArICIuemlwIikKLQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAn
ZGFyd2luJzoKLSAgICAgICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsiZGl0dG8iLCAiLXgiLCAiLWsi
LCBhcmNoaXZlRmlsZSwgZGlyZWN0b3J5VG9FeHRyYWN0VG9dKToKLSAgICAgICAgICAgIHJldHVy
biAxCi0gICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzLnBsYXRmb3JtLnN0
YXJ0c3dpdGgoJ2xpbnV4Jyk6Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbInVuemlwIiwg
Ii1vIiwgYXJjaGl2ZUZpbGVdLCBjd2Q9ZGlyZWN0b3J5VG9FeHRyYWN0VG8pOgotICAgICAgICAg
ICAgcmV0dXJuIDEKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICBh
cmNoaXZlID0gemlwZmlsZS5aaXBGaWxlKGFyY2hpdmVGaWxlLCAiciIpCi0gICAgICAgIGFyY2hp
dmUuZXh0cmFjdGFsbChkaXJlY3RvcnlUb0V4dHJhY3RUbykKLSAgICAgICAgYXJjaGl2ZS5jbG9z
ZSgpCi0KLSAgICBvcy51bmxpbmsoYXJjaGl2ZUZpbGUpCi0KLQotZGVmIGV4dHJhY3RCdWlsdFBy
b2R1Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0pOgotICAgIGFzc2VydCBwbGF0Zm9ybSBpbiAo
J2d0aycsICdpb3MnLCAnanNjJywgJ21hYycsICd0dm9zJywgJ3dhdGNob3MnLCAnd2luJywgJ3dp
bmNhaXJvJywgJ3dwZScpCi0KLSAgICBhcmNoaXZlRmlsZSA9IG9zLnBhdGguam9pbihfdG9wTGV2
ZWxCdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiArICcuemlwJykKLQotICAgIHJlbW92ZURp
cmVjdG9yeUlmRXhpc3RzKF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpCi0gICAgb3MubWFr
ZWRpcnMoX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSkKLQotICAgIGlmIHBsYXRmb3JtIGlu
ICgnbWFjJywgJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnKToKLSAgICAgICAgcmV0dXJuIHVuemlw
QXJjaGl2ZShfdG9wTGV2ZWxCdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbikKLSAgICBlbGlm
IHBsYXRmb3JtIGluICgnZ3RrJywgJ2pzYycsICd3aW4nLCAnd2luY2Fpcm8nLCAnd3BlJyk6Ci0g
ICAgICAgIHByaW50ICdFeHRyYWN0aW5nJywgX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeQot
ICAgICAgICBpZiB1bnppcEFyY2hpdmUoX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgY29u
ZmlndXJhdGlvbik6Ci0gICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgICMgUmVzdG9yZSBX
aW5DYWlyb1JlcXVpcmVtZW50cyB2ZXJzaW9uIGZvciB0ZXN0IGJvdCB1c2UKLSAgICAgICAgaWYg
cGxhdGZvcm0gPT0gJ3dpbmNhaXJvJzoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KG9zLnBhdGgu
am9pbihfY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAnV2ViS2l0UmVxdWlyZW1lbnRzV2lu
NjQuemlwLmNvbmZpZycpLCBvcy5nZXRlbnYoJ1dFQktJVF9MSUJSQVJJRVMnKSkKLQotCi1pZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2NsZWFuLWJ1aWxkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2NsZWFuLWJ1aWxkCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9jbGVhbi1idWlsZAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3Vi
cHJvY2VzcwotaW1wb3J0IHN5cwotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNl
Lk9wdGlvblBhcnNlcigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oIi0tcGxhdGZvcm0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWRlYnVnIiwgYWN0
aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJkZWJ1ZyIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXJlbGVhc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0Iiwg
Y29uc3Q9InJlbGVhc2UiLCBkZXN0PSJjb25maWd1cmF0aW9uIikKLQotICAgIG9wdGlvbnMsIHBh
cmFtZXRlcnMgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgbm90IG9wdGlvbnMucGxhdGZv
cm06Ci0gICAgICAgIHBhcnNlci5lcnJvcigiUGxhdGZvcm0gaXMgcmVxdWlyZWQiKQotICAgICAg
ICByZXR1cm4gLTEKLSAgICBpZiBub3Qgb3B0aW9ucy5jb25maWd1cmF0aW9uOgotICAgICAgICBw
YXJzZXIuZXJyb3IoIkNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4g
LTIKLQotICAgIGlmIG9wdGlvbnMucGxhdGZvcm0uc3RhcnRzd2l0aCgnaW9zLXNpbXVsYXRvcicp
OgotICAgICAgICBwbGF0Zm9ybSA9ICdpb3Mtc2ltdWxhdG9yJwotICAgIGVsaWYgb3B0aW9ucy5w
bGF0Zm9ybS5zdGFydHN3aXRoKCdpb3MnKToKLSAgICAgICAgcGxhdGZvcm0gPSAnZGV2aWNlJwot
ICAgIGVsaWYgb3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqc2Mtb25seScpOgotICAgICAg
ICBwbGF0Zm9ybSA9ICdqc2Mtb25seScKLSAgICBlbHNlOgotICAgICAgICBwbGF0Zm9ybSA9IG9w
dGlvbnMucGxhdGZvcm0uc3BsaXQoJy0nLCAxKVswXQotCi0gICAgd2Via2l0X2J1aWxkX2RpcmVj
dG9yeSA9IHN1YnByb2Nlc3MuUG9wZW4oWydwZXJsJywgb3MucGF0aC5qb2luKG9zLnBhdGguZGly
bmFtZShfX2ZpbGVfXyksICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1idWlsZC1kaXJlY3Rvcnki
KSwKLSAgICAgICAgIi0tIiArIHBsYXRmb3JtLCAiLS0iICsgb3B0aW9ucy5jb25maWd1cmF0aW9u
LCAnLS10b3AtbGV2ZWwnXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVsw
XS5zdHJpcCgpCi0KLSAgICBpZiAob3MucGF0aC5pc2Rpcih3ZWJraXRfYnVpbGRfZGlyZWN0b3J5
KSk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUod2Via2l0X2J1aWxkX2RpcmVjdG9yeSkKLQotICAg
IHN1YnByb2Nlc3MuUG9wZW4oWydweXRob24nLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgIi4uIiwgIlNjcmlwdHMiLCAiY2xlYW4td2Via2l0IildKQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2NsZWFuLWJ1aWxkCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRl
LXN0YWxlLWJ1aWxkLWZpbGVzCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9kZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1
IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MK
LWltcG9ydCBzeXMKLQotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlv
blBhcnNlcigidXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24o
Ii0tcGxhdGZvcm0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWJ1aWxkLWRpcmVjdG9yeSIp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tZGVidWciLCBhY3Rpb249InN0b3JlX2NvbnN0Iiwg
Y29uc3Q9ImRlYnVnIiwgZGVzdD0iY29uZmlndXJhdGlvbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRp
b24oIi0tcmVsZWFzZSIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0icmVsZWFzZSIsIGRl
c3Q9ImNvbmZpZ3VyYXRpb24iKQotCi0gICAgb3B0aW9ucywgcGFyYW1ldGVycyA9IHBhcnNlci5w
YXJzZV9hcmdzKCkKLSAgICBpZiBub3Qgb3B0aW9ucy5wbGF0Zm9ybToKLSAgICAgICAgcGFyc2Vy
LmVycm9yKCJQbGF0Zm9ybSBpcyByZXF1aXJlZCIpCi0gICAgICAgIHJldHVybiAtMQotICAgIGlm
IG5vdCBvcHRpb25zLmNvbmZpZ3VyYXRpb246Ci0gICAgICAgIHBhcnNlci5lcnJvcigiQ29uZmln
dXJhdGlvbiBpcyByZXF1aXJlZCIpCi0gICAgICAgIHJldHVybiAtMgotCi0gICAgZ2VuZXJpY1Bs
YXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBdCi0gICAgaWYgZ2VuZXJp
Y1BsYXRmb3JtIG5vdCBpbiAoJ21hYycsICdpb3MnKToKLSAgICAgICAgcHJpbnQgJ0V4aXRlZCB3
aXRob3V0IHJlbW92aW5nIGFueSBmaWxlcy4nCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBpZiBv
cHRpb25zLmJ1aWxkX2RpcmVjdG9yeToKLSAgICAgICAgYnVpbGREaXJlY3RvcnkgPSBvcHRpb25z
LmJ1aWxkX2RpcmVjdG9yeQotICAgIGVsc2U6Ci0gICAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gd2Vi
a2l0QnVpbGREaXJlY3RvcnkoZ2VuZXJpY1BsYXRmb3JtLCBvcHRpb25zLnBsYXRmb3JtLCBvcHRp
b25zLmNvbmZpZ3VyYXRpb24pCi0KLSAgICBleGl0X2NvZGUgPSAwCi0KLSAgICBmb3Igcm9vdCwg
XywgZmlsZXMgaW4gb3Mud2FsayhidWlsZERpcmVjdG9yeSk6Ci0gICAgICAgIGZvciBuYW1lIGlu
IGZpbGVzOgotICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUp
Ci0gICAgICAgICAgICBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZ1bGxfcGF0aClbMV0KLQotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcubycsICcuZCcp
IG9yIG9zLnBhdGguZ2V0c2l6ZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjZXB0aW9uOgotICAgICAgICAg
ICAgICAgIHByaW50IGV4Y2VwdGlvbgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZnVsbF9wYXRoKQotICAgICAg
ICAgICAgICAgIHByaW50ICdSZW1vdmVkJywgZnVsbF9wYXRoCi0gICAgICAgICAgICBleGNlcHQg
T1NFcnJvciBhcyBleGNlcHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgZXhjZXB0aW9uCi0g
ICAgICAgICAgICAgICAgZXhpdF9jb2RlICs9IDEKLQotICAgIHJldHVybiBleGl0X2NvZGUKLQot
Ci1kZWYgd2Via2l0QnVpbGREaXJlY3RvcnkocGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSwgY29uZmln
dXJhdGlvbik6Ci0gICAgaWYgZnVsbFBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3In
KToKLSAgICAgICAgcGxhdGZvcm0gPSAnaW9zLXNpbXVsYXRvcicKLSAgICBlbGlmIHBsYXRmb3Jt
ID09ICdpb3MnOgotICAgICAgICBwbGF0Zm9ybSA9ICdkZXZpY2UnCi0gICAgcmV0dXJuIHN1YnBy
b2Nlc3MuUG9wZW4oWydwZXJsJywgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVf
XyksICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKSwKLSAgICAgICAg
Ii0tIiArIHBsYXRmb3JtLCAiLS0iICsgY29uZmlndXJhdGlvbiwgJy0tdG9wLWxldmVsJ10sIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVz
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9kb3dubG9hZC1idWlsdC1wcm9kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QJKG5vbmV4aXN0ZW50KQpA
QCAtMSw1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChD
KSAyMDA5IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwot
IyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBz
dWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdXJsbGliCi0KLQotZGVmIG1haW4oKToKLSAg
ICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10g
W3VybF0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXBsYXRmb3JtIiwgZGVzdD0icGxhdGZv
cm0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV9jb25z
dCIsIGNvbnN0PSJkZWJ1ZyIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iKQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCItLXJlbGVhc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9InJlbGVhc2Ui
LCBkZXN0PSJjb25maWd1cmF0aW9uIikKLQotICAgIG9wdGlvbnMsICh1cmwsICkgPSBwYXJzZXIu
cGFyc2VfYXJncygpCi0KLSAgICBhcmNoaXZlRGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQi
KSkKLSAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihhcmNoaXZlRGlyKToKLSAgICAgICAgb3MubWFr
ZWRpcnMoYXJjaGl2ZURpcikKLSAgICBhcmNoaXZlUGF0aCA9IG9zLnBhdGguam9pbihhcmNoaXZl
RGlyLCAiJXMuemlwIiAlIG9wdGlvbnMuY29uZmlndXJhdGlvbikKLQotICAgIGlmIHN5cy5wbGF0
Zm9ybSA9PSAnd2luMzInOiAgIyBjdXJsIGlzIG5vdCBhdmFpbGJsZSBvbiBXaW5kb3dzIChvdXRz
aWRlIG9mIGN5Z3dpbikKLSAgICAgICAgdXJsbGliLnVybHJldHJpZXZlKHVybCwgYXJjaGl2ZVBh
dGgpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKFsiY3Vy
bCIsICItLWZhaWwiLCAiLS1vdXRwdXQiLCBhcmNoaXZlUGF0aCwgdXJsXSkKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL19faW5pdF9fLnB5CShyZXZpc2lvbiAy
Njg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9fX2luaXRfXy5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDUgKzAsMCBAQAotaW1wb3J0IGxvZ2dpbmcKLQotbG9nZ2lu
Zy5iYXNpY0NvbmZpZyhmaWxlbmFtZT0nZXdzLmxvZycsIGxldmVsPWxvZ2dpbmcuSU5GTywgZm9y
bWF0PSclKGFzY3RpbWUpcyAtICUobWVzc2FnZSlzJykKLQotZGVmYXVsdF9hcHBfY29uZmlnID0g
J2V3cy5hcHBzLkV3c0NvbmZpZycKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1h
cHAvZXdzL2FkbWluLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzL2FkbWluLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYXBwL2V3cy9hZG1pbi5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0
IGFkbWluCi0KLSMgUmVnaXN0ZXIgeW91ciBtb2RlbHMgaGVyZS4KSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2FwcHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvYXBwcy5weQkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvYXBwcy5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDM0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdv
LmFwcHMgaW1wb3J0IEFwcENvbmZpZwotCi0KLWNsYXNzIEV3c0NvbmZpZyhBcHBDb25maWcpOgot
ICAgIG5hbWUgPSAnZXdzJwotCi0gICAgZGVmIHJlYWR5KHNlbGYpOgotICAgICAgICAjIEZJWE1F
OiBFbnN1cmUgdGhhdCB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBvbmNlLgotICAgICAgICBm
cm9tIGV3cy5mZXRjaGVyIGltcG9ydCBGZXRjaExvb3AKLSAgICAgICAgRmV0Y2hMb29wKCkKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2NvbW1vbi9fX2luaXRfXy5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9j
b21tb24vYnVnemlsbGEucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvY29tbW9uL2J1Z3ppbGxhLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vYnVnemlsbGEucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyOTYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQK
LSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLWltcG9ydCBiYXNlNjQKLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2lu
ZwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHNvY2tldAot
aW1wb3J0IHRpbWUKLQotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQot
Ci1mcm9tIGV3cy5tb2RlbHMucGF0Y2ggaW1wb3J0IFBhdGNoCi1mcm9tIGV3cy50aGlyZHBhcnR5
LkJlYXV0aWZ1bFNvdXAgaW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgotaW1wb3J0
IGV3cy5jb21tb24udXRpbCBhcyB1dGlsCi1pbXBvcnQgZXdzLmNvbmZpZyBhcyBjb25maWcKLWlt
cG9ydCBkYXRldXRpbC5wYXJzZXIKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQotCi0KLWNsYXNzIEJ1Z3ppbGxhKCk6Ci0gICAgYnVnX29wZW5fc3RhdHVzZXMgPSBbJ1VOQ09O
RklSTUVEJywgJ05FVycsICdBU1NJR05FRCcsICdSRU9QRU5FRCddCi0gICAgYnVnX2Nsb3NlZF9z
dGF0dXNlcyA9IFsnUkVTT0xWRUQnLCAnVkVSSUZJRUQnLCAnQ0xPU0VEJ10KLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiByZXRyaWV2ZV9hdHRhY2htZW50KGNscywgYXR0YWNobWVudF9pZCk6
Ci0gICAgICAgIGF0dGFjaG1lbnRfanNvbiA9IEJ1Z3ppbGxhLl9mZXRjaF9hdHRhY2htZW50X2pz
b24oYXR0YWNobWVudF9pZCkKLSAgICAgICAgaWYgbm90IGF0dGFjaG1lbnRfanNvbiBvciBub3Qg
YXR0YWNobWVudF9qc29uLmdldCgnZGF0YScpOgotICAgICAgICAgICAgX2xvZy53YXJuKCdVbmFi
bGUgdG8gZmV0Y2ggYXR0YWNobWVudCAie30iLicuZm9ybWF0KGF0dGFjaG1lbnRfaWQpKQotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBhdHRhY2htZW50X2RhdGEgPSBiYXNlNjQu
YjY0ZGVjb2RlKGF0dGFjaG1lbnRfanNvbi5nZXQoJ2RhdGEnKSkKLSAgICAgICAgQnVnemlsbGEu
c2F2ZV9hdHRhY2htZW50KGF0dGFjaG1lbnRfaWQsIGF0dGFjaG1lbnRfZGF0YSkKLSAgICAgICAg
YXR0YWNobWVudF9qc29uWydwYXRoJ10gPSBCdWd6aWxsYS5maWxlX3BhdGhfZm9yX3BhdGNoKGF0
dGFjaG1lbnRfaWQpCi0gICAgICAgIHJldHVybiBhdHRhY2htZW50X2pzb24KLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBnZXRfY3FfcGx1c190aW1lc3RhbXAoY2xzLCBhdHRhY2htZW50X2lk
KToKLSAgICAgICAgYXR0YWNobWVudF9qc29uID0gQnVnemlsbGEuX2ZldGNoX2F0dGFjaG1lbnRf
anNvbihhdHRhY2htZW50X2lkKQotICAgICAgICBpZiBub3QgYXR0YWNobWVudF9qc29uOgotICAg
ICAgICAgICAgX2xvZy53YXJuKCdVbmFibGUgdG8gZmV0Y2ggYXR0YWNobWVudCB7fS4nLmZvcm1h
dChhdHRhY2htZW50X2lkKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZm9y
IGZsYWcgaW4gYXR0YWNobWVudF9qc29uLmdldCgnZmxhZ3MnKToKLSAgICAgICAgICAgIGlmIGZs
YWcuZ2V0KCduYW1lJykgPT0gJ2NvbW1pdC1xdWV1ZScgYW5kIGZsYWcuZ2V0KCdzdGF0dXMnKSA9
PSAnKyc6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZGF0ZXV0aWwucGFyc2VyLnBhcnNlKGZsYWcuZ2V0KCdtb2RpZmljYXRpb25fZGF0ZScpKQotICAg
ICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignVW5h
YmxlIHRvIHBhcnNlIHRpbWVzdGFtcDoge30nLmZvcm1hdChmbGFnLmdldCgnbW9kaWZpY2F0aW9u
X2RhdGUnKSkpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgc2F2ZV9hdHRhY2htZW50KGNscywgYXR0YWNobWVudF9pZCwgYXR0YWNobWVudF9kYXRhKToK
LSAgICAgICAgd2l0aCBvcGVuKEJ1Z3ppbGxhLmZpbGVfcGF0aF9mb3JfcGF0Y2goYXR0YWNobWVu
dF9pZCksICd3JykgYXMgYXR0YWNobWVudF9maWxlOgotICAgICAgICAgICAgYXR0YWNobWVudF9m
aWxlLndyaXRlKGF0dGFjaG1lbnRfZGF0YSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBn
ZXRfYnVnemlsbGFfYXBpX2tleShjbHMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXNz
d29yZHMgPSBqc29uLmxvYWQob3BlbigncGFzc3dvcmRzLmpzb24nKSkKLSAgICAgICAgICAgIHJl
dHVybiBwYXNzd29yZHMuZ2V0KCdCVUdaSUxMQV9BUElfS0VZJywgJycpCi0gICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0Vycm9yIGluIHJlYWRp
bmcgQnVnemlsbGEgYXBpIGtleScpCi0gICAgICAgICAgICByZXR1cm4gJycKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBmZXRjaF9kYXRhX2Zyb21fYnVnemlsbGFfd2l0aF9hdXRoZW50aWNh
dGlvbihjbHMsIHVybCk6Ci0gICAgICAgIF9sb2cuaW5mbygnRmV0Y2hpbmcgZnJvbSBidWd6aWxs
YToge30nLmZvcm1hdCh1cmwpKQotICAgICAgICByZXNwb25zZSA9IE5vbmUKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCB0aW1lb3V0PTEwLCBw
YXJhbXM9eydCdWd6aWxsYV9hcGlfa2V5JzogY2xzLmdldF9idWd6aWxsYV9hcGlfa2V5KCl9KQot
ICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJ0FjY2Vzc2VkIHt1cmx9IHdpdGggdW5leHBlY3RlZCBzdGF0dXMgY29k
ZSB7c3RhdHVzX2NvZGV9LicuZm9ybWF0KHVybD11cmwsIHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0
YXR1c19jb2RlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAjIENhdGNoaW5nIGFsbCBleGNlcHRpb25zIGhl
cmUgdG8gc2FmZWd1YXJkIGFwaSBrZXkuCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQg
dG8gYWNjZXNzIHt9Jy5mb3JtYXQodXJsKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgIHJldHVybiByZXNwb25zZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9mZXRjaF9h
dHRhY2htZW50X2pzb24oY2xzLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgaWYgbm90IFBhdGNo
LmlzX3ZhbGlkX3BhdGNoX2lkKGF0dGFjaG1lbnRfaWQpOgotICAgICAgICAgICAgX2xvZy53YXJu
KCdJbnZhbGlkIGF0dGFjaG1lbnQgaWQ6ICJ7fSIsIHNraXBwaW5nIGRvd25sb2FkLicuZm9ybWF0
KGF0dGFjaG1lbnRfaWQpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBhdHRh
Y2htZW50X3VybCA9ICd7fXJlc3QvYnVnL2F0dGFjaG1lbnQve30nLmZvcm1hdChjb25maWcuQlVH
X1NFUlZFUl9VUkwsIGF0dGFjaG1lbnRfaWQpCi0gICAgICAgIGF0dGFjaG1lbnQgPSBjbHMuZmV0
Y2hfZGF0YV9mcm9tX2J1Z3ppbGxhX3dpdGhfYXV0aGVudGljYXRpb24oYXR0YWNobWVudF91cmwp
Ci0gICAgICAgIGlmIG5vdCBhdHRhY2htZW50OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgYXR0YWNobWVudF9qc29uID0gYXR0YWNobWVudC5qc29uKCkuZ2V0KCdhdHRhY2htZW50
cycpCi0gICAgICAgIGlmIG5vdCBhdHRhY2htZW50X2pzb24gb3IgbGVuKGF0dGFjaG1lbnRfanNv
bikgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBhdHRhY2ht
ZW50X2pzb24uZ2V0KHN0cihhdHRhY2htZW50X2lkKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBfZ2V0X2J1Z19qc29uKGNscywgYnVnX2lkKToKLSAgICAgICAgaWYgbm90IHV0aWwuaXNf
dmFsaWRfaWQoYnVnX2lkKToKLSAgICAgICAgICAgIF9sb2cud2FybignSW52YWxpZCBidWcgaWQ6
IHt9Jy5mb3JtYXQoYnVnX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIGJ1
Z191cmwgPSAne31yZXN0L2J1Zy97fScuZm9ybWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgYnVn
X2lkKQotICAgICAgICBidWcgPSBjbHMuZmV0Y2hfZGF0YV9mcm9tX2J1Z3ppbGxhX3dpdGhfYXV0
aGVudGljYXRpb24oYnVnX3VybCkKLSAgICAgICAgaWYgbm90IGJ1ZzoKLSAgICAgICAgICAgIHJl
dHVybiBOb25lCi0gICAgICAgIGJ1Z3NfanNvbiA9IGJ1Zy5qc29uKCkuZ2V0KCdidWdzJykKLSAg
ICAgICAgaWYgbm90IGJ1Z3NfanNvbiBvciBsZW4oYnVnc19qc29uKSA9PSAwOgotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGJ1Z3NfanNvblswXQotCi0gICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIF9nZXRfY29tbWl0X3F1ZXVlX3BhdGNoZXNfZnJvbV9idWcoY2xzLCBi
dWdfaWQpOgotICAgICAgICBpZiBub3QgdXRpbC5pc192YWxpZF9pZChidWdfaWQpOgotICAgICAg
ICAgICAgX2xvZy53YXJuKCdJbnZhbGlkIGJ1ZyBpZDogInt9IicuZm9ybWF0KGJ1Z19pZCkpCi0g
ICAgICAgICAgICByZXR1cm4gW10KLQotICAgICAgICBidWdfdXJsID0gJ3t9cmVzdC9idWcve30v
YXR0YWNobWVudCcuZm9ybWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgYnVnX2lkKQotICAgICAg
ICBidWcgPSBjbHMuZmV0Y2hfZGF0YV9mcm9tX2J1Z3ppbGxhX3dpdGhfYXV0aGVudGljYXRpb24o
YnVnX3VybCkKLSAgICAgICAgaWYgbm90IGJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBbXQotICAg
ICAgICBidWdfanNvbiA9IGJ1Zy5qc29uKCkuZ2V0KCdidWdzJykKLSAgICAgICAgaWYgbm90IGJ1
Z19qc29uIG9yIGxlbihidWdfanNvbikgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0g
ICAgICAgIGNvbW1pdF9xdWV1ZV9wYXRjaGVzID0gW10KLSAgICAgICAgZm9yIHBhdGNoX2pzb24g
aW4gYnVnX2pzb24uZ2V0KHN0cihidWdfaWQpKToKLSAgICAgICAgICAgIGlmIGNscy5faXNfcGF0
Y2hfY3FfcGx1cyhwYXRjaF9qc29uKSA9PSAxOgotICAgICAgICAgICAgICAgIGNvbW1pdF9xdWV1
ZV9wYXRjaGVzLmFwcGVuZChwYXRjaF9qc29uLmdldCgnaWQnKSkKLQotICAgICAgICByZXR1cm4g
Y29tbWl0X3F1ZXVlX3BhdGNoZXMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfaXNfcGF0
Y2hfY3FfcGx1cyhjbHMsIHBhdGNoX2pzb24pOgotICAgICAgICBpZiBub3QgcGF0Y2hfanNvbjoK
LSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24u
Z2V0KCdmbGFncycsIFtdKToKLSAgICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ2Nv
bW1pdC1xdWV1ZScgYW5kIGZsYWcuZ2V0KCdzdGF0dXMnKSA9PSAnKyc6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBmaWxlX3BhdGhfZm9yX3BhdGNoKGNscywgcGF0Y2hfaWQpOgotICAgICAgICBpZiBub3Qgb3Mu
cGF0aC5leGlzdHMoY29uZmlnLlBBVENIX0ZPTERFUik6Ci0gICAgICAgICAgICBvcy5ta2Rpcihj
b25maWcuUEFUQ0hfRk9MREVSKQotICAgICAgICByZXR1cm4gY29uZmlnLlBBVENIX0ZPTERFUiAr
ICd7fS5wYXRjaCcuZm9ybWF0KHBhdGNoX2lkKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IGdldF9saXN0X29mX3BhdGNoZXNfbmVlZGluZ19yZXZpZXdzKGNscyk6Ci0gICAgICAgIGN1cnJl
bnRfdGltZSA9IGRhdGV0aW1lLnRvZGF5KCkKLSAgICAgICAgaWRzX25lZWRpbmdfcmV2aWV3ID0g
c2V0KEJ1Z3ppbGxhQmVhdXRpZnVsU291cCgpLmZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2
aWV3X3F1ZXVlKGN1cnJlbnRfdGltZSAtIHRpbWVkZWx0YSg3KSkpCi0gICAgICAgICNUT0RPOiBh
ZGQgc2VjdXJpdHkgYnVncyBzdXBwb3J0IGhlcmUuCi0gICAgICAgIHJldHVybiBpZHNfbmVlZGlu
Z19yZXZpZXcKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfbGlzdF9vZl9wYXRjaGVz
X2Zvcl9jb21taXRfcXVldWUoY2xzKToKLSAgICAgICAgYnVnX2lkc19mb3JfY29tbWl0X3F1ZXVl
ID0gc2V0KEJ1Z3ppbGxhQmVhdXRpZnVsU291cCgpLmZldGNoX2J1Z19pZHNfZm9yX2NvbW1pdF9x
dWV1ZSgpKQotICAgICAgICBpZHNfZm9yX2NvbW1pdF9xdWV1ZSA9IFtdCi0gICAgICAgIGZvciBi
dWdfaWQgaW4gYnVnX2lkc19mb3JfY29tbWl0X3F1ZXVlOgotICAgICAgICAgICAgaWRzX2Zvcl9j
b21taXRfcXVldWUuZXh0ZW5kKGNscy5fZ2V0X2NvbW1pdF9xdWV1ZV9wYXRjaGVzX2Zyb21fYnVn
KGJ1Z19pZCkpCi0gICAgICAgIHJldHVybiBpZHNfZm9yX2NvbW1pdF9xdWV1ZQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGlzX2J1Z19jbG9zZWQoY2xzLCBidWdfaWQpOgotICAgICAgICBi
dWdfanNvbiA9IGNscy5fZ2V0X2J1Z19qc29uKGJ1Z19pZCkKLSAgICAgICAgaWYgbm90IGJ1Z19q
c29uIG9yIG5vdCBidWdfanNvbi5nZXQoJ3N0YXR1cycpOgotICAgICAgICAgICAgX2xvZy53YXJu
KCdVbmFibGUgdG8gZmV0Y2ggYnVnIHt9LicuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICBy
ZXR1cm4gLTEKLQotICAgICAgICBpZiBidWdfanNvbi5nZXQoJ3N0YXR1cycpIGluIGNscy5idWdf
Y2xvc2VkX3N0YXR1c2VzOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAK
LQotCi1jbGFzcyBCdWd6aWxsYUJlYXV0aWZ1bFNvdXAoKToKLSAgICAjIEZJWE1FOiBEZXByZWNh
dGUgdGhpcyBjbGFzcyB3aGVuIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTE1MDg1MzEgaXMgZml4ZWQuCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAg
ICBzZWxmLl9icm93c2VyID0gTm9uZQotCi0gICAgZGVmIF9nZXRfYnJvd3NlcihzZWxmKToKLSAg
ICAgICAgaWYgbm90IHNlbGYuX2Jyb3dzZXI6Ci0gICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVs
dHRpbWVvdXQoNjAwKQotICAgICAgICAgICAgZnJvbSBtZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIK
LSAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXIgPSBCcm93c2VyKCkKLSAgICAgICAgICAgIHNlbGYu
X2Jyb3dzZXIuc2V0X2hhbmRsZV9yb2JvdHMoRmFsc2UpCi0gICAgICAgIHJldHVybiBzZWxmLl9i
cm93c2VyCi0KLSAgICBkZWYgX3NldF9icm93c2VyKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2Vs
Zi5fYnJvd3NlciA9IHZhbHVlCi0KLSAgICBicm93c2VyID0gcHJvcGVydHkoX2dldF9icm93c2Vy
LCBfc2V0X2Jyb3dzZXIpCi0KLSAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICB1
c2VybmFtZSA9IG9zLmdldGVudignQlVHWklMTEFfVVNFUk5BTUUnLCBOb25lKQotICAgICAgICBw
YXNzd29yZCA9IG9zLmdldGVudignQlVHWklMTEFfUEFTU1dPUkQnLCBOb25lKQotICAgICAgICBp
ZiBub3QgdXNlcm5hbWUgb3Igbm90IHBhc3N3b3JkOgotICAgICAgICAgICAgX2xvZy53YXJuKCdC
dWd6aWxsYSB1c2VybmFtZS9wYXNzd29yZCBub3QgY29uZmlndXJlZCBpbiBlbnZpcm9ubWVudCB2
YXJpYWJsZXMuIFNraXBwaW5nIGF1dGhlbnRpY2F0aW9uLicpCi0gICAgICAgICAgICByZXR1cm4K
LQotICAgICAgICBhdXRoZW50aWNhdGVkID0gRmFsc2UKLSAgICAgICAgYXR0ZW1wdHMgPSAwCi0g
ICAgICAgIHdoaWxlIG5vdCBhdXRoZW50aWNhdGVkOgotICAgICAgICAgICAgYXR0ZW1wdHMgKz0g
MQotICAgICAgICAgICAgX2xvZy5kZWJ1ZygnTG9nZ2luZyBpbiBhcyB7fS4uLicuZm9ybWF0KHVz
ZXJuYW1lKSkKLSAgICAgICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKGNvbmZpZy5CVUdfU0VSVkVS
X1VSTCArICdpbmRleC5jZ2k/R29BaGVhZEFuZExvZ0luPTEnKQotICAgICAgICAgICAgc2VsZi5i
cm93c2VyLnNlbGVjdF9mb3JtKG5hbWU9ImxvZ2luIikKLSAgICAgICAgICAgIHNlbGYuYnJvd3Nl
clsnQnVnemlsbGFfbG9naW4nXSA9IHVzZXJuYW1lCi0gICAgICAgICAgICBzZWxmLmJyb3dzZXJb
J0J1Z3ppbGxhX3Bhc3N3b3JkJ10gPSBwYXNzd29yZAotICAgICAgICAgICAgc2VsZi5icm93c2Vy
LmZpbmRfY29udHJvbCgiQnVnemlsbGFfcmVzdHJpY3Rsb2dpbiIpLml0ZW1zWzBdLnNlbGVjdGVk
ID0gRmFsc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNl
bGYuYnJvd3Nlci5zdWJtaXQoKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAg
IF9sb2cuZXJyb3IoJ1VuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgYXV0aGVudGljYXRpbmcgdG8gYnVn
emlsbGEuJykKLSAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBtYXRjaCA9
IHJlLnNlYXJjaCgiPHRpdGxlPiguKz8pPC90aXRsZT4iLCByZXNwb25zZS5yZWFkKCkpCi0gICAg
ICAgICAgICAjIElmIHRoZSByZXN1bHRpbmcgcGFnZSBoYXMgYSB0aXRsZSwgYW5kIGl0IGNvbnRh
aW5zIHRoZSB3b3JkCi0gICAgICAgICAgICAjICJpbnZhbGlkIiBhc3N1bWUgaXQncyB0aGUgbG9n
aW4gZmFpbHVyZSBwYWdlLgotICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIHJlLnNlYXJjaCgiSW52
YWxpZCIsIG1hdGNoLmdyb3VwKDEpLCByZS5JR05PUkVDQVNFKToKLSAgICAgICAgICAgICAgICBl
cnJvck1lc3NhZ2UgPSAnQnVnemlsbGEgbG9naW4gZmFpbGVkOiB7fScuZm9ybWF0KG1hdGNoLmdy
b3VwKDEpKQotICAgICAgICAgICAgICAgIGlmIGF0dGVtcHRzID49IDM6Ci0gICAgICAgICAgICAg
ICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uIG9ubHkgaWYgdGhpcyB3YXMgdGhlIGxhc3QgYXR0
ZW1wdAotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZXJyb3JNZXNzYWdlKQot
ICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgICAg
IHRpbWUuc2xlZXAoMykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXV0aGVu
dGljYXRlZCA9IFRydWUKLQotICAgIGRlZiBmZXRjaF9hdHRhY2htZW50X2lkc19mcm9tX3Jldmll
d19xdWV1ZShzZWxmLCBzaW5jZT1Ob25lLCBvbmx5X3NlY3VyaXR5X2J1Z3M9RmFsc2UpOgotICAg
ICAgICByZXZpZXdfcXVldWVfdXJsID0gJ3JlcXVlc3QuY2dpP2FjdGlvbj1xdWV1ZSZ0eXBlPXJl
dmlldyZncm91cD10eXBlJwotICAgICAgICBpZiBvbmx5X3NlY3VyaXR5X2J1Z3M6Ci0gICAgICAg
ICAgICByZXZpZXdfcXVldWVfdXJsICs9ICcmcHJvZHVjdD1TZWN1cml0eScKLSAgICAgICAgcmV0
dXJuIHNlbGYuX3BhcnNlX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZi5fbG9hZF9x
dWVyeShyZXZpZXdfcXVldWVfdXJsKSwgc2luY2UpCi0KLSAgICBkZWYgZmV0Y2hfYnVnX2lkc19m
b3JfY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWVfdXJsID0gImJ1Z2xp
c3QuY2dpP3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19z
dGF0dXM9TkVXJmJ1Z19zdGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAt
MC0wPWZsYWd0eXBlcy5uYW1lJnR5cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1jb21taXQtcXVl
dWUlMkImb3JkZXI9TGFzdCtDaGFuZ2VkIgotICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChz
ZWxmLl9sb2FkX3F1ZXJ5KGNvbW1pdF9xdWV1ZV91cmwpKQotICAgICAgICAjIFRoZSBjb250ZW50
cyBvZiB0aGUgPGE+IGluc2lkZSB0aGUgY2VsbHMgaW4gdGhlIGZpcnN0IGNvbHVtbiBoYXBwZW4K
LSAgICAgICAgIyB0byBiZSB0aGUgYnVnIGlkLgotICAgICAgICByZXR1cm4gW2ludChidWdfbGlu
a19jZWxsLmZpbmQoImEiKS5zdHJpbmcpCi0gICAgICAgICAgICAgICAgZm9yIGJ1Z19saW5rX2Nl
bGwgaW4gc291cCgndGQnLCAiZmlyc3QtY2hpbGQiKV0KLQotICAgIGRlZiBfbG9hZF9xdWVyeShz
ZWxmLCBxdWVyeSk6Ci0gICAgICAgIHNlbGYuYXV0aGVudGljYXRlKCkKLSAgICAgICAgZnVsbF91
cmwgPSAne317fScuZm9ybWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgcXVlcnkpCi0gICAgICAg
IF9sb2cuZGVidWcoJ0dldHRpbmcgbGlzdCBvZiBwYXRjaGVzIG5lZWRpbmcgcmV2aWV3LCBVUkw6
IHt9Jy5mb3JtYXQoZnVsbF91cmwpKQotICAgICAgICByZXR1cm4gc2VsZi5icm93c2VyLm9wZW4o
ZnVsbF91cmwpCi0KLSAgICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnko
c2VsZiwgcGFnZSwgc2luY2U9Tm9uZSk6Ci0gICAgICAgICMgRm9ybWF0cwotICAgICAgICBkaWdp
dHMgPSByZS5jb21waWxlKCJcZCsiKQotICAgICAgICBhdHRhY2htZW50X2hyZWYgPSByZS5jb21w
aWxlKCJhdHRhY2htZW50LmNnaVw/aWQ9XGQrJmFjdGlvbj1yZXZpZXciKQotICAgICAgICAjIGlm
IG5vIGRhdGUgaXMgZ2l2ZW4sIHJldHVybiBhbGwgaWRzCi0gICAgICAgIGlmIG5vdCBzaW5jZToK
LSAgICAgICAgICAgIGF0dGFjaG1lbnRfbGlua3MgPSBTb3VwU3RyYWluZXIoImEiLCBocmVmPWF0
dGFjaG1lbnRfaHJlZikKLSAgICAgICAgICAgIHJldHVybiBbaW50KGRpZ2l0cy5zZWFyY2godGFn
WyJocmVmIl0pLmdyb3VwKDApKQotICAgICAgICAgICAgICAgIGZvciB0YWcgaW4gQmVhdXRpZnVs
U291cChwYWdlLCBwYXJzZU9ubHlUaGVzZT1hdHRhY2htZW50X2xpbmtzKV0KLQotICAgICAgICAj
IFBhcnNlIHRoZSBtYWluIHRhYmxlIG9ubHkKLSAgICAgICAgZGF0ZV9mb3JtYXQgPSByZS5jb21w
aWxlKCJcZHs0fS1cZHsyfS1cZHsyfSBcZHsyfTpcZHsyfSIpCi0gICAgICAgIG10YWIgPSBTb3Vw
U3RyYWluZXIoInRhYmxlIiwgeyJjbGFzcyI6ICJyZXF1ZXN0cyJ9KQotICAgICAgICBzb3VwID0g
QmVhdXRpZnVsU291cChwYWdlLCBwYXJzZU9ubHlUaGVzZT1tdGFiKQotICAgICAgICBwYXRjaF9p
ZHMgPSBbXQotCi0gICAgICAgIGZvciByb3cgaW4gc291cC5maW5kQWxsKCJ0ciIpOgotICAgICAg
ICAgICAgcGF0Y2hfdGFnID0gcm93LmZpbmQoImEiLCB7ImhyZWYiOiBhdHRhY2htZW50X2hyZWZ9
KQotICAgICAgICAgICAgaWYgbm90IHBhdGNoX3RhZzoKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgcGF0Y2hfaWQgPSBpbnQoZGlnaXRzLnNlYXJjaChwYXRjaF90YWdbImhy
ZWYiXSkuZ3JvdXAoMCkpCi0gICAgICAgICAgICBkYXRlX3RhZyA9IHJvdy5maW5kKCJ0ZCIsIHRl
eHQ9ZGF0ZV9mb3JtYXQpCi0gICAgICAgICAgICBpZiBkYXRlX3RhZyBhbmQgZGF0ZXRpbWUuc3Ry
cHRpbWUoZGF0ZV9mb3JtYXQuc2VhcmNoKGRhdGVfdGFnKS5ncm91cCgwKSwgIiVZLSVtLSVkICVI
OiVNIikgPCBzaW5jZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcGF0
Y2hfaWRzLmFwcGVuZChwYXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2lkcwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29tbW9uL2J1aWxkYm90LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2NvbW1vbi9i
dWlsZGJvdC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvY29tbW9uL2J1aWxkYm90LnB5CShub25leGlzdGVudCkKQEAgLTEsMTcxICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9t
IGZ1dHVyZS51dGlscyBpbXBvcnQgbHJhbmdlCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MK
LWltcG9ydCByZQotaW1wb3J0IHJlcXVlc3RzCi1pbXBvcnQgc3VicHJvY2VzcwotCi1pbXBvcnQg
ZXdzLmNvbW1vbi51dGlsIGFzIHV0aWwKLWltcG9ydCBld3MuY29uZmlnIGFzIGNvbmZpZwotCi1f
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgQnVpbGRib3QoKToK
LSAgICAjIEJ1aWxkYm90IHN0YXR1cyBjb2RlcyByZWZlcmVuY2VkIGZyb20gaHR0cHM6Ly9naXRo
dWIuY29tL2J1aWxkYm90L2J1aWxkYm90L2Jsb2IvbWFzdGVyL21hc3Rlci9idWlsZGJvdC9wcm9j
ZXNzL3Jlc3VsdHMucHkKLSAgICBBTExfUkVTVUxUUyA9IGxyYW5nZSg3KQotICAgIFNVQ0NFU1Ms
IFdBUk5JTkdTLCBGQUlMVVJFLCBTS0lQUEVELCBFWENFUFRJT04sIFJFVFJZLCBDQU5DRUxMRUQg
PSBBTExfUkVTVUxUUwotICAgIGljb25zX2Zvcl9xdWV1ZXNfbWFwcGluZyA9IHt9Ci0gICAgcXVl
dWVfbmFtZV9ieV9zaG9ydG5hbWVfbWFwcGluZyA9IHt9Ci0gICAgYnVpbGRlcl9uYW1lX3RvX2lk
X21hcHBpbmcgPSB7fQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNlbmRfcGF0Y2hfdG9f
YnVpbGRib3QoY2xzLCBwYXRjaF9wYXRoLCBzZW5kX3RvX2NvbW1pdF9xdWV1ZT1GYWxzZSwgcHJv
cGVydGllcz1Ob25lKToKLSAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgb3IgW10KLSAg
ICAgICAgYnVpbGRib3RfcG9ydCA9IGNvbmZpZy5DT01NSVRfUVVFVUVfUE9SVCBpZiBzZW5kX3Rv
X2NvbW1pdF9xdWV1ZSBlbHNlIGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfUE9SVAotICAgICAgICBj
b21tYW5kID0gWydidWlsZGJvdCcsICd0cnknLAotICAgICAgICAgICAgICAgICAgICctLWNvbm5l
Y3Q9cGInLAotICAgICAgICAgICAgICAgICAgICctLW1hc3Rlcj17fTp7fScuZm9ybWF0KGNvbmZp
Zy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgYnVpbGRib3RfcG9ydCksCi0gICAgICAgICAgICAgICAg
ICAgJy0tdXNlcm5hbWU9e30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfVFJZX1VTRVJOQU1FKSwK
LSAgICAgICAgICAgICAgICAgICAnLS1wYXNzd2Q9e30nLmZvcm1hdChjb25maWcuQlVJTERCT1Rf
VFJZX1BBU1NXT1JEKSwKLSAgICAgICAgICAgICAgICAgICAnLS1kaWZmPXt9Jy5mb3JtYXQocGF0
Y2hfcGF0aCksCi0gICAgICAgICAgICAgICAgICAgJy0tcmVwb3NpdG9yeT0nXQotCi0gICAgICAg
IGZvciBwcm9wZXJ0eSBpbiBwcm9wZXJ0aWVzOgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQo
Jy0tcHJvcGVydHk9e30nLmZvcm1hdChwcm9wZXJ0eSkpCi0KLSAgICAgICAgcmV0dXJuX2NvZGUg
PSBzdWJwcm9jZXNzLmNhbGwoY29tbWFuZCkKLSAgICAgICAgaWYgcmV0dXJuX2NvZGU6Ci0gICAg
ICAgICAgICBfbG9nLndhcm4oJ0Vycm9yIGV4ZWN1dGluZyBidWlsZGJvdCB0cnkgY29tbWFuZCBm
b3Ige30sIHJldHVybiBjb2RlPXt9Jy5mb3JtYXQocGF0Y2hfcGF0aCwgcmV0dXJuX2NvZGUpKQot
Ci0gICAgICAgIHJldHVybiByZXR1cm5fY29kZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IGdldF9idWlsZGVyX2lkX3RvX25hbWVfbWFwcGluZyhjbHMpOgotICAgICAgICBidWlsZGVyX2lk
X3RvX25hbWVfbWFwcGluZyA9IHt9Ci0gICAgICAgIGJ1aWxkZXJfdXJsID0gJ2h0dHA6Ly97fS9h
cGkvdjIvYnVpbGRlcnMnLmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QpCi0gICAg
ICAgIGJ1aWxkZXJzX2RhdGEgPSB1dGlsLmZldGNoX2RhdGFfZnJvbV91cmwoYnVpbGRlcl91cmwp
Ci0gICAgICAgIGlmIG5vdCBidWlsZGVyc19kYXRhOgotICAgICAgICAgICAgcmV0dXJuIHt9Ci0g
ICAgICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJzX2RhdGEuanNvbigpLmdldCgnYnVpbGRlcnMn
LCBbXSk6Ci0gICAgICAgICAgICBidWlsZGVyX2lkID0gYnVpbGRlclsnYnVpbGRlcmlkJ10KLSAg
ICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IGJ1aWxkZXIuZ2V0KCduYW1lJykKLSAgICAgICAgICAg
IGRpc3BsYXlfbmFtZSA9IGJ1aWxkZXIuZ2V0KCdkZXNjcmlwdGlvbicpCi0gICAgICAgICAgICBp
ZiBub3QgZGlzcGxheV9uYW1lOgotICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZSA9IEJ1aWxk
Ym90Ll9nZXRfZGlzcGxheV9uYW1lX2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxkZXJfbmFtZSkKLSAg
ICAgICAgICAgIGJ1aWxkZXJfaWRfdG9fbmFtZV9tYXBwaW5nW2J1aWxkZXJfaWRdID0geydidWls
ZGVyX25hbWUnOiBidWlsZGVyX25hbWUsICdkaXNwbGF5X25hbWUnOiBkaXNwbGF5X25hbWV9Ci0g
ICAgICAgIHJldHVybiBidWlsZGVyX2lkX3RvX25hbWVfbWFwcGluZwotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIF9nZXRfZGlzcGxheV9uYW1lX2Zyb21fYnVpbGRlcl9uYW1lKGNscywgYnVp
bGRlcl9uYW1lKToKLSAgICAgICAgd29yZHMgPSByZS5zcGxpdCgnWywgXC1fOigpXSsnLCBidWls
ZGVyX25hbWUpCi0gICAgICAgIGlmIG5vdCB3b3JkczoKLSAgICAgICAgICAgIHJldHVybiBidWls
ZGVyX25hbWUKLSAgICAgICAgcmV0dXJuIHdvcmRzWzBdLmxvd2VyKCkKLQotICAgIEBjbGFzc21l
dGhvZAotICAgIGRlZiBmZXRjaF9jb25maWcoY2xzKToKLSAgICAgICAgY29uZmlnX3VybCA9ICdo
dHRwczovL3t9L2NvbmZpZy5qc29uJy5mb3JtYXQoY29uZmlnLkJVSUxEQk9UX1NFUlZFUl9IT1NU
KQotICAgICAgICBjb25maWdfZGF0YSA9IHV0aWwuZmV0Y2hfZGF0YV9mcm9tX3VybChjb25maWdf
dXJsKQotICAgICAgICBpZiBub3QgY29uZmlnX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4ge30K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ19kYXRhLmpzb24oKQotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdFcnJv
ciBpbiBmZXRjaGluZyB7fS4gRXJyb3I6IHt9Jy5mb3JtYXQoY29uZmlnX3VybCwgZSkpCi0gICAg
ICAgICAgICByZXR1cm4ge30KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfaWNv
bnNfZm9yX3F1ZXVlc19tYXBwaW5nKGNscyk6Ci0gICAgICAgIGNvbmZpZyA9IGNscy5mZXRjaF9j
b25maWcoKQotICAgICAgICBpZiBub3QgY29uZmlnOgotICAgICAgICAgICAgX2xvZy5lcnJvcign
VW5hYmxlIHRvIGZldGNoIGJ1aWxkYm90IGNvbmZpZy5qc29uJykKLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBmb3IgYnVpbGRlciBpbiBjb25maWcuZ2V0KCdidWlsZGVycycsIFtdKToKLSAg
ICAgICAgICAgIHNob3J0bmFtZSA9IGJ1aWxkZXIuZ2V0KCdzaG9ydG5hbWUnKQotICAgICAgICAg
ICAgQnVpbGRib3QuaWNvbnNfZm9yX3F1ZXVlc19tYXBwaW5nW3Nob3J0bmFtZV0gPSBidWlsZGVy
LmdldCgnaWNvbicpCi0gICAgICAgICAgICBCdWlsZGJvdC5xdWV1ZV9uYW1lX2J5X3Nob3J0bmFt
ZV9tYXBwaW5nW3Nob3J0bmFtZV0gPSBidWlsZGVyLmdldCgnbmFtZScpCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgdXBkYXRlX2J1aWxkZXJfbmFtZV90b19pZF9tYXBwaW5nKGNscyk6Ci0g
ICAgICAgIHVybCA9ICdodHRwczovL3t9L2FwaS92Mi9idWlsZGVycycuZm9ybWF0KGNvbmZpZy5C
VUlMREJPVF9TRVJWRVJfSE9TVCkKLSAgICAgICAgYnVpbGRlcnNfZGF0YSA9IHV0aWwuZmV0Y2hf
ZGF0YV9mcm9tX3VybCh1cmwpCi0gICAgICAgIGlmIG5vdCBidWlsZGVyc19kYXRhOgotICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJzX2RhdGEuanNvbigp
LmdldCgnYnVpbGRlcnMnLCBbXSk6Ci0gICAgICAgICAgICBuYW1lID0gYnVpbGRlci5nZXQoJ25h
bWUnKQotICAgICAgICAgICAgQnVpbGRib3QuYnVpbGRlcl9uYW1lX3RvX2lkX21hcHBpbmdbbmFt
ZV0gPSBidWlsZGVyLmdldCgnYnVpbGRlcmlkJykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBmZXRjaF9wZW5kaW5nX2FuZF9pbnByb2dyZXNzX2J1aWxkcyhjbHMsIGJ1aWxkZXJfZnVsbF9u
YW1lKToKLSAgICAgICAgYnVpbGRlcmlkID0gQnVpbGRib3QuYnVpbGRlcl9uYW1lX3RvX2lkX21h
cHBpbmcuZ2V0KGJ1aWxkZXJfZnVsbF9uYW1lKQotICAgICAgICBpZiBub3QgQnVpbGRib3QuYnVp
bGRlcl9uYW1lX3RvX2lkX21hcHBpbmc6Ci0gICAgICAgICAgICBfbG9nLndhcm4oJ01pc3Npbmcg
YnVpbGRlcl9uYW1lX3RvX2lkX21hcHBpbmcsIHJlZmV0Y2hpbmcgaXQgZnJvbSB7fScuZm9ybWF0
KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCkpCi0gICAgICAgICAgICBjbHMudXBkYXRlX2J1
aWxkZXJfbmFtZV90b19pZF9tYXBwaW5nKCkKLQotICAgICAgICBpZiBub3QgYnVpbGRlcmlkOgot
ICAgICAgICAgICAgX2xvZy5lcnJvcignSW52YWxpZCBidWlsZGVyOiB7fS4gTnVtYmVyIG9mIGJ1
aWxkZXJzOiB7fScuZm9ybWF0KGJ1aWxkZXJfZnVsbF9uYW1lLCBsZW4oY2xzLmJ1aWxkZXJfbmFt
ZV90b19pZF9tYXBwaW5nKSkpCi0gICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgdXJsID0g
J2h0dHBzOi8ve30vYXBpL3YyL2J1aWxkZXJzL3t9L2J1aWxkcmVxdWVzdHM/Y29tcGxldGU9ZmFs
c2UmcHJvcGVydHk9KicuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgYnVpbGRl
cmlkKQotICAgICAgICBidWlsZGVyc19kYXRhID0gdXRpbC5mZXRjaF9kYXRhX2Zyb21fdXJsKHVy
bCkKLSAgICAgICAgaWYgbm90IGJ1aWxkZXJzX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4ge30K
LSAgICAgICAgcmV0dXJuIGJ1aWxkZXJzX2RhdGEuanNvbigpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgZ2V0X3BhdGNoZXNfaW5fcXVldWUoY2xzLCBidWlsZGVyX2Z1bGxfbmFtZSk6Ci0g
ICAgICAgIHBhdGNoX2lkcyA9IFtdCi0gICAgICAgIGJ1aWxkcyA9IGNscy5mZXRjaF9wZW5kaW5n
X2FuZF9pbnByb2dyZXNzX2J1aWxkcyhidWlsZGVyX2Z1bGxfbmFtZSkKLSAgICAgICAgZm9yIGJ1
aWxkcmVxdWVzdCBpbiBidWlsZHMuZ2V0KCdidWlsZHJlcXVlc3RzJywgW10pOgotICAgICAgICAg
ICAgcHJvcGVydGllcyA9IGJ1aWxkcmVxdWVzdC5nZXQoJ3Byb3BlcnRpZXMnKQotICAgICAgICAg
ICAgaWYgcHJvcGVydGllczoKLSAgICAgICAgICAgICAgICBwYXRjaF9pZHMuYXBwZW5kKHByb3Bl
cnRpZXMuZ2V0KCdwYXRjaF9pZCcpWzBdKQotICAgICAgICBfbG9nLmRlYnVnKCdQYXRjaGVzIGlu
IHF1ZXVlIGZvciB7fToge30nLmZvcm1hdChidWlsZGVyX2Z1bGxfbmFtZSwgcGF0Y2hfaWRzKSkK
LSAgICAgICAgcmV0dXJuIHBhdGNoX2lkcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJl
dHJ5X2J1aWxkKGNscywgYnVpbGRlcl9pZCwgYnVpbGRfbnVtYmVyKToKLSAgICAgICAgaWYgbm90
ICh1dGlsLmlzX3ZhbGlkX2lkKGJ1aWxkZXJfaWQpIGFuZCB1dGlsLmlzX3ZhbGlkX2lkKGJ1aWxk
X251bWJlcikpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgYnVpbGRfdXJs
ID0gJ2h0dHBzOi8ve30vYXBpL3YyL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KGNvbmZp
Zy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgYnVpbGRlcl9pZCwgYnVpbGRfbnVtYmVyKQotICAgICAg
ICB1c2VybmFtZSA9IG9zLmdldGVudignRVdTX0FETUlOX1VTRVJOQU1FJykKLSAgICAgICAgcGFz
c3dvcmQgPSBvcy5nZXRlbnYoJ0VXU19BRE1JTl9QQVNTV09SRCcpCi0gICAgICAgIHNlc3Npb24g
PSByZXF1ZXN0cy5TZXNzaW9uKCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZXNzaW9uLmhlYWQoJ2h0
dHBzOi8ve30vYXV0aC9sb2dpbicuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCks
IGF1dGg9KHVzZXJuYW1lLCBwYXNzd29yZCkpCi0gICAgICAgIGlmIChub3QgcmVzcG9uc2UpIG9y
IHJlc3BvbnNlLnN0YXR1c19jb2RlIG5vdCBpbiAoMjAwLCAzMDIpOgotICAgICAgICAgICAgX2xv
Zy5lcnJvcignQXV0aGVudGljYXRpb24gdG8ge30gZmFpbGVkLiBQbGVhc2UgY2hlY2sgdXNlcm5h
bWUvcGFzc3dvcmQuJy5mb3JtYXQoY29uZmlnLkJVSUxEQk9UX1NFUlZFUl9IT1NUKSkKLSAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIGpzb25fZGF0YSA9IHsnbWV0aG9kJzogJ3Jl
YnVpbGQnLCAnaWQnOiAxLCAnanNvbnJwYyc6ICcyLjAnLCAncGFyYW1zJzogeydyZWFzb24nOiAn
cmV0cmllZC1ieS11c2VyJ319Ci0gICAgICAgIHJlc3BvbnNlID0gc2Vzc2lvbi5wb3N0KGJ1aWxk
X3VybCwganNvbj1qc29uX2RhdGEpCi0KLSAgICAgICAgaWYgcmVzcG9uc2UgYW5kIHJlc3BvbnNl
LnN0YXR1c19jb2RlID09IDIwMDoKLSAgICAgICAgICAgIF9sb2cuaW5mbygnU3VjY2Vzc2Z1bHkg
c3VibWl0dGVkIHJldHJ5IHJlcXVlc3QgZm9yIGJ1aWxkOiB7fScuZm9ybWF0KGJ1aWxkX3VybCkp
Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0
byByZXRyeSBidWlsZDoge30sIGh0dHAgcmVzcG9uc2UgY29kZToge30nLmZvcm1hdChidWlsZF91
cmwsIHJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vdXRpbC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vdXRpbC5w
eQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9l
d3MvY29tbW9uL3V0aWwucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NiArMCwwIEBACi0jIENvcHly
aWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGxvZ2dpbmcKLWlt
cG9ydCByZXF1ZXN0cwotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQot
ZGVmIGZldGNoX2RhdGFfZnJvbV91cmwodXJsKToKLSAgICBfbG9nLmluZm8oJ0ZldGNoaW5nOiB7
fScuZm9ybWF0KHVybCkpCi0gICAgcmVzcG9uc2UgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICBy
ZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1cmwsIHRpbWVvdXQ9MTApCi0gICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgotICAgICAgICBpZiByZXNwb25zZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3Io
J0ZhaWxlZCB0byBhY2Nlc3Mge3VybH0gd2l0aCBzdGF0dXMgY29kZSB7c3RhdHVzX2NvZGV9Licu
Zm9ybWF0KHVybD11cmwsIHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH0g
d2l0aCBleGNlcHRpb246IHtleGNlcHRpb259Jy5mb3JtYXQodXJsPXVybCwgZXhjZXB0aW9uPWUp
KQotICAgICAgICByZXR1cm4gTm9uZQotICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIw
MDoKLSAgICAgICAgX2xvZy5lcnJvcignQWNjZXNzZWQge3VybH0gd2l0aCB1bmV4cGVjdGVkIHN0
YXR1cyBjb2RlIHtzdGF0dXNfY29kZX0uJy5mb3JtYXQodXJsPXVybCwgc3RhdHVzX2NvZGU9cmVz
cG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiByZXNw
b25zZQotCi0KLWRlZiBpc192YWxpZF9pZChpZCwgZXhwZWN0ZWRfZGF0YV90eXBlPWludCk6Ci0g
ICAgaWYgbm90IGlkOgotICAgICAgICBfbG9nLndhcm4oJ0ludmFsaWQgaWQ6IHt9Jy5mb3JtYXQo
aWQpKQotICAgICAgICByZXR1cm4gRmFsc2UKLSAgICBpZiB0eXBlKGlkKSAhPSBleHBlY3RlZF9k
YXRhX3R5cGU6Ci0gICAgICAgIF9sb2cud2FybignSW52YWxpZCB0eXBlIHt9IGZvciBpZDoge30s
IGV4cGVjdGVkOiB7fScuZm9ybWF0KHR5cGUoaWQpLCBpZCwgZXhwZWN0ZWRfZGF0YV90eXBlKSkK
LSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgaWYgZXhwZWN0ZWRfZGF0YV90eXBlID09IGludCBh
bmQgaWQgPCAwOgotICAgICAgICBfbG9nLndhcm4oJ0ludmFsaWQgaWQ6IHt9LCBpZCBzaG91bGQg
YmUgcG9zaXRpdmUgaW50ZWdlci4nLmZvcm1hdChpZCkpCi0gICAgICAgIHJldHVybiBGYWxzZQot
ICAgIHJldHVybiBUcnVlCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3
cy9jb25maWcucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFw
cC9ld3MvY29uZmlnLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy9jb25maWcucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBA
Ci0jIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IG9z
Ci0KLWlzX3Rlc3RfbW9kZV9lbmFibGVkID0gb3MuZ2V0ZW52KCdFV1NfUFJPRFVDVElPTicpIGlz
IE5vbmUKLQotQlVHX1NFUlZFUl9IT1NUID0gJ2J1Z3Mud2Via2l0Lm9yZycKLUJVR19TRVJWRVJf
VVJMID0gJ2h0dHBzOi8ve30vJy5mb3JtYXQoQlVHX1NFUlZFUl9IT1NUKQotUEFUQ0hfRk9MREVS
ID0gJy90bXAvJwotCi1pZiBpc190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICBCVUlMREJPVF9TRVJW
RVJfSE9TVCA9ICdsb2NhbGhvc3QnCi1lbHNlOgotICAgIEJVSUxEQk9UX1NFUlZFUl9IT1NUID0g
J2V3cy1idWlsZC53ZWJraXQub3JnJwotQlVJTERCT1RfU0VSVkVSX1BPUlQgPSAnNTU1NScKLUNP
TU1JVF9RVUVVRV9QT1JUID0gJzU1NTcnCi1CVUlMREJPVF9UUllfVVNFUk5BTUUgPSBvcy5nZXRl
bnYoJ0JVSUxEQk9UX1RSWV9VU0VSTkFNRScsICdzYW1wbGV1c2VyJykKLUJVSUxEQk9UX1RSWV9Q
QVNTV09SRCA9IG9zLmdldGVudignQlVJTERCT1RfVFJZX1BBU1NXT1JEJywgJ3NhbXBsZXBhc3Mn
KQotCi1TVUNDRVNTID0gMAotRVJSX1VORVhQRUNURUQgPSAtMQotRVJSX0VYSVNUSU5HX1BBVENI
ID0gLTIKLUVSUl9OT05fRVhJU1RJTkdfUEFUQ0ggPSAtMwotRVJSX0lOVkFMSURfUEFUQ0hfSUQg
PSAtNAotRVJSX09CU09MRVRFX1BBVENIID0gLTUKLUVSUl9VTkFCTEVfVE9fRkVUQ0hfUEFUQ0gg
PSAtNgotRVJSX0JVR19DTE9TRUQgPSAtNwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvZmV0Y2hlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy9mZXRjaGVyLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9mZXRjaGVyLnB5CShub25leGlzdGVudCkKQEAg
LTEsMTQzICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcHl0egotaW1wb3J0
IHRocmVhZGluZwotaW1wb3J0IHRpbWUKLQotZnJvbSBld3MuY29tbW9uLmJ1Z3ppbGxhIGltcG9y
dCBCdWd6aWxsYQotZnJvbSBld3MuY29tbW9uLmJ1aWxkYm90IGltcG9ydCBCdWlsZGJvdAotZnJv
bSBld3MuY29uZmlnIGltcG9ydCBFUlJfQlVHX0NMT1NFRCwgRVJSX09CU09MRVRFX1BBVENILCBF
UlJfVU5BQkxFX1RPX0ZFVENIX1BBVENICi1mcm9tIGV3cy5tb2RlbHMucGF0Y2ggaW1wb3J0IFBh
dGNoCi1mcm9tIGV3cy52aWV3cy5zdGF0dXNidWJibGUgaW1wb3J0IFN0YXR1c0J1YmJsZQotCi1f
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgRmV0Y2hMb29wKCk6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVydmFsPTMwKToKLSAgICAgICAgc2VsZi5pbnRl
cnZhbCA9IGludGVydmFsCi0gICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0
PXNlbGYucnVuLCBhcmdzPSgpKQotICAgICAgICB0aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAg
ICB0aHJlYWQuc3RhcnQoKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgQnVpbGRib3Qu
dXBkYXRlX2J1aWxkZXJfbmFtZV90b19pZF9tYXBwaW5nKCkKLSAgICAgICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgICAgIEJ1aWxkYm90LnVwZGF0ZV9pY29uc19mb3JfcXVldWVzX21hcHBpbmcoKQot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIEJ1Z3ppbGxhUGF0Y2hGZXRjaGVyKCku
ZmV0Y2goKQotICAgICAgICAgICAgICAgIEJ1Z3ppbGxhUGF0Y2hGZXRjaGVyKCkuZmV0Y2hfY29t
bWl0X3F1ZXVlX3BhdGNoZXMoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0V4Y2VwdGlvbiBpbiBCdWd6aWxsYVBhdGNoRmV0
Y2hlcjoge30nLmZvcm1hdChlKSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5pbnRlcnZh
bCkKLQotCi1jbGFzcyBCdWd6aWxsYVBhdGNoRmV0Y2hlcigpOgotICAgIGRlZiBmZXRjaChzZWxm
LCBwYXRjaF9pZHM9Tm9uZSk6Ci0gICAgICAgIGlmIHBhdGNoX2lkcyBhbmQgdHlwZShwYXRjaF9p
ZHMpICE9IGxpc3Q6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdFcnJvcjogcGF0Y2hfaWRzIHNo
b3VsZCBiZSBhIGxpc3QsIGZvdW5kOiB7fScuZm9ybWF0KHR5cGUocGF0Y2hfaWRzKSkpCi0gICAg
ICAgICAgICByZXR1cm4gLTEKLQotICAgICAgICBpZiBub3QgcGF0Y2hfaWRzOgotICAgICAgICAg
ICAgcGF0Y2hfaWRzID0gQnVnemlsbGEuZ2V0X2xpc3Rfb2ZfcGF0Y2hlc19uZWVkaW5nX3Jldmll
d3MoKQotICAgICAgICBwYXRjaF9pZHMgPSBCdWd6aWxsYVBhdGNoRmV0Y2hlci5maWx0ZXJfdmFs
aWRfcGF0Y2hlcyhwYXRjaF9pZHMpCi0gICAgICAgIF9sb2cuZGVidWcoJ3I/IHBhdGNoZXM6IHt9
Jy5mb3JtYXQocGF0Y2hfaWRzKSkKLSAgICAgICAgUGF0Y2guc2F2ZV9wYXRjaGVzKHBhdGNoX2lk
cykKLSAgICAgICAgcGF0Y2hlc190b19zZW5kID0gc2VsZi5wYXRjaGVzX3RvX3NlbmRfdG9fYnVp
bGRib3QocGF0Y2hfaWRzKQotICAgICAgICBfbG9nLmluZm8oJ3t9IHI/IHBhdGNoZXMsIHt9IHBh
dGNoZXMgbmVlZCB0byBiZSBzZW50IHRvIEJ1aWxkYm90OiB7fScuZm9ybWF0KGxlbihwYXRjaF9p
ZHMpLCBsZW4ocGF0Y2hlc190b19zZW5kKSwgcGF0Y2hlc190b19zZW5kKSkKLSAgICAgICAgcmV0
dXJuIHNlbGYuc2VuZF9wYXRjaGVzX3RvX2J1aWxkYm90KHBhdGNoZXNfdG9fc2VuZCkKLQotICAg
IGRlZiBmZXRjaF9jb21taXRfcXVldWVfcGF0Y2hlcyhzZWxmKToKLSAgICAgICAgcGF0Y2hfaWRz
X2NvbW1pdF9xdWV1ZSA9IEJ1Z3ppbGxhLmdldF9saXN0X29mX3BhdGNoZXNfZm9yX2NvbW1pdF9x
dWV1ZSgpCi0gICAgICAgIHBhdGNoX2lkc19jb21taXRfcXVldWUgPSBCdWd6aWxsYVBhdGNoRmV0
Y2hlci5maWx0ZXJfdmFsaWRfcGF0Y2hlcyhwYXRjaF9pZHNfY29tbWl0X3F1ZXVlKQotICAgICAg
ICBfbG9nLmRlYnVnKCdjcSsgcGF0Y2hlczoge30nLmZvcm1hdChwYXRjaF9pZHNfY29tbWl0X3F1
ZXVlKSkKLSAgICAgICAgUGF0Y2guc2F2ZV9wYXRjaGVzKHBhdGNoX2lkc19jb21taXRfcXVldWUp
Ci0gICAgICAgIHBhdGNoZXNfdG9fc2VuZCA9IHNlbGYucGF0Y2hlc190b19zZW5kX3RvX2NvbW1p
dF9xdWV1ZShwYXRjaF9pZHNfY29tbWl0X3F1ZXVlKQotICAgICAgICBfbG9nLmluZm8oJ3t9IGNx
KyBwYXRjaGVzLCB7fSBwYXRjaGVzIG5lZWQgdG8gYmUgc2VudCB0byBjb21taXQgcXVldWU6IHt9
Jy5mb3JtYXQobGVuKHBhdGNoX2lkc19jb21taXRfcXVldWUpLCBsZW4ocGF0Y2hlc190b19zZW5k
KSwgcGF0Y2hlc190b19zZW5kKSkKLSAgICAgICAgc2VsZi5zZW5kX3BhdGNoZXNfdG9fYnVpbGRi
b3QocGF0Y2hlc190b19zZW5kLCBzZW5kX3RvX2NvbW1pdF9xdWV1ZT1UcnVlKQotCi0gICAgZGVm
IHNlbmRfcGF0Y2hlc190b19idWlsZGJvdChzZWxmLCBwYXRjaGVzX3RvX3NlbmQsIHNlbmRfdG9f
Y29tbWl0X3F1ZXVlPUZhbHNlKToKLSAgICAgICAgaWYgbm90IHBhdGNoZXNfdG9fc2VuZDoKLSAg
ICAgICAgICAgIHJldHVybgotICAgICAgICBmb3IgcGF0Y2hfaWQgaW4gcGF0Y2hlc190b19zZW5k
OgotICAgICAgICAgICAgYnpfcGF0Y2ggPSBCdWd6aWxsYS5yZXRyaWV2ZV9hdHRhY2htZW50KHBh
dGNoX2lkKQotICAgICAgICAgICAgaWYgbm90IGJ6X3BhdGNoIG9yIGJ6X3BhdGNoWydpZCddICE9
IHBhdGNoX2lkOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0byByZXRyaXZl
IHBhdGNoICJ7fSInLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKHBh
dGNoZXNfdG9fc2VuZCkgPT0gMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9VTkFC
TEVfVE9fRkVUQ0hfUEFUQ0gKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
aWYgYnpfcGF0Y2guZ2V0KCdpc19vYnNvbGV0ZScpOgotICAgICAgICAgICAgICAgIF9sb2cud2Fy
bignUGF0Y2gge30gaXMgb2Jzb2xldGUsIHNraXBwaW5nJy5mb3JtYXQocGF0Y2hfaWQpKQotICAg
ICAgICAgICAgICAgIFBhdGNoLnNldF9vYnNvbGV0ZShwYXRjaF9pZCkKLSAgICAgICAgICAgICAg
ICBpZiBsZW4ocGF0Y2hlc190b19zZW5kKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRVJSX09CU09MRVRFX1BBVENICi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
ICAgIGlmIEJ1Z3ppbGxhLmlzX2J1Z19jbG9zZWQoYnpfcGF0Y2hbJ2J1Z19pZCddKSA9PSAxOgot
ICAgICAgICAgICAgICAgIF9sb2cud2FybignQnVnIHt9IGZvciBwYXRjaCB7fSBpcyBhbHJlYWR5
IGNsb3NlZCwgc2tpcHBpbmcnLmZvcm1hdChiel9wYXRjaFsnYnVnX2lkJ10sIHBhdGNoX2lkKSkK
LSAgICAgICAgICAgICAgICBpZiBsZW4ocGF0Y2hlc190b19zZW5kKSA9PSAxOgotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gRVJSX0JVR19DTE9TRUQKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgaWYgbm90IHNlbmRfdG9fY29tbWl0X3F1ZXVlIGFuZCBQYXRjaC5pc19w
YXRjaF9zZW50X3RvX2J1aWxkYm90KHBhdGNoX2lkKToKLSAgICAgICAgICAgICAgICBfbG9nLmVy
cm9yKCdQYXRjaCB7fSBpcyBhbHJlYWR5IHNlbnQgdG8gYnVpbGRib3QuJy5mb3JtYXQocGF0Y2hf
aWQpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBQYXRjaC5zZXRfc2Vu
dF90b19idWlsZGJvdChwYXRjaF9pZCwgVHJ1ZSwgY29tbWl0X3F1ZXVlPXNlbmRfdG9fY29tbWl0
X3F1ZXVlKQotICAgICAgICAgICAgcmMgPSBCdWlsZGJvdC5zZW5kX3BhdGNoX3RvX2J1aWxkYm90
KGJ6X3BhdGNoWydwYXRoJ10sCi0gICAgICAgICAgICAgICAgICAgICBzZW5kX3RvX2NvbW1pdF9x
dWV1ZT1zZW5kX3RvX2NvbW1pdF9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRp
ZXM9WydwYXRjaF9pZD17fScuZm9ybWF0KHBhdGNoX2lkKSwgJ2J1Z19pZD17fScuZm9ybWF0KGJ6
X3BhdGNoWydidWdfaWQnXSksICdvd25lcj17fScuZm9ybWF0KGJ6X3BhdGNoLmdldCgnY3JlYXRv
cicsICcnKSldKQotICAgICAgICAgICAgaWYgcmMgPT0gMDoKLSAgICAgICAgICAgICAgICBQYXRj
aC5zZXRfYnVnX2lkKHBhdGNoX2lkLCBiel9wYXRjaFsnYnVnX2lkJ10pCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBzZW5kIHBhdGNoIHRv
IGJ1aWxkYm90LicpCi0gICAgICAgICAgICAgICAgUGF0Y2guc2V0X3NlbnRfdG9fYnVpbGRib3Qo
cGF0Y2hfaWQsIEZhbHNlLCBjb21taXRfcXVldWU9c2VuZF90b19jb21taXRfcXVldWUpCi0gICAg
ICAgICAgICAgICAgI0ZJWE1FOiBzZW5kIGFuIGVtYWlsIGZvciB0aGlzIGZhaWx1cmUKLQotICAg
IGRlZiBwYXRjaGVzX3RvX3NlbmRfdG9fYnVpbGRib3Qoc2VsZiwgcGF0Y2hfaWRzKToKLSAgICAg
ICAgcmV0dXJuIFtwYXRjaF9pZCBmb3IgcGF0Y2hfaWQgaW4gcGF0Y2hfaWRzIGlmIG5vdCBQYXRj
aC5pc19wYXRjaF9zZW50X3RvX2J1aWxkYm90KHBhdGNoX2lkKV0KLQotICAgIGRlZiBwYXRjaGVz
X3RvX3NlbmRfdG9fY29tbWl0X3F1ZXVlKHNlbGYsIHBhdGNoX2lkcyk6Ci0gICAgICAgIGlmIG5v
dCBwYXRjaF9pZHM6Ci0gICAgICAgICAgICByZXR1cm4gcGF0Y2hfaWRzCi0gICAgICAgIHBhdGNo
ZXNfaW5fcXVldWUgPSBzZXQoQnVpbGRib3QuZ2V0X3BhdGNoZXNfaW5fcXVldWUoJ0NvbW1pdC1R
dWV1ZScpKQotICAgICAgICBwYXRjaF9pZHMgPSBbcGF0Y2hfaWQgZm9yIHBhdGNoX2lkIGluIHNl
dChwYXRjaF9pZHMpIGlmIHN0cihwYXRjaF9pZCkgbm90IGluIHBhdGNoZXNfaW5fcXVldWVdCi0K
LSAgICAgICAgcGF0Y2hfaWRzX3RvX3NlbmQgPSBbXQotICAgICAgICBmb3IgcGF0Y2hfaWQgaW4g
cGF0Y2hfaWRzOgotICAgICAgICAgICAgcGF0Y2ggPSBQYXRjaC5nZXRfcGF0Y2gocGF0Y2hfaWQp
Ci0gICAgICAgICAgICByZWNlbnRfYnVpbGQsIF8gPSBTdGF0dXNCdWJibGUoKS5nZXRfbGF0ZXN0
X2J1aWxkX2Zvcl9xdWV1ZShwYXRjaCwgJ2NvbW1pdCcpCi0gICAgICAgICAgICBpZiBub3QgcmVj
ZW50X2J1aWxkOgotICAgICAgICAgICAgICAgIHBhdGNoX2lkc190b19zZW5kLmFwcGVuZChwYXRj
aF9pZCkKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmVjZW50X2J1aWxk
X3RpbWVzdGFtcCA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAocmVjZW50X2J1aWxk
LmNvbXBsZXRlX2F0LCB0ej1weXR6LlVUQykKLSAgICAgICAgICAgIGNxX3RpbWVzdGFtcCA9IEJ1
Z3ppbGxhLmdldF9jcV9wbHVzX3RpbWVzdGFtcChwYXRjaF9pZCkKLSAgICAgICAgICAgIGlmIG5v
dCBjcV90aW1lc3RhbXA6Ci0gICAgICAgICAgICAgICAgcGF0Y2hfaWRzX3RvX3NlbmQuYXBwZW5k
KHBhdGNoX2lkKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBjcV90
aW1lc3RhbXAgPiByZWNlbnRfYnVpbGRfdGltZXN0YW1wOgotICAgICAgICAgICAgICAgIHBhdGNo
X2lkc190b19zZW5kLmFwcGVuZChwYXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2lkc190
b19zZW5kCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZmlsdGVyX3ZhbGlkX3BhdGNoZXMo
Y2xzLCBwYXRjaF9pZHMpOgotICAgICAgICByZXR1cm4gbGlzdChmaWx0ZXIobGFtYmRhIHA6IFBh
dGNoLmlzX3ZhbGlkX3BhdGNoX2lkKHApLCBwYXRjaF9pZHMpKQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8w
MDAxX2luaXRpYWwucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1hcHAvZXdzL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CShub25leGlzdGVudCkK
QEAgLTEsNzIgKzAsMCBAQAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgR2VuZXJhdGVkIGJ5
IERqYW5nbyAxLjExLjIwIG9uIDIwMTktMDMtMjYgMjA6MzAKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgdW5pY29kZV9saXRlcmFscwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywg
bW9kZWxzCi1pbXBvcnQgZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbgotCi0KLWNsYXNzIE1pZ3Jh
dGlvbihtaWdyYXRpb25zLk1pZ3JhdGlvbik6Ci0KLSAgICBpbml0aWFsID0gVHJ1ZQotCi0gICAg
ZGVwZW5kZW5jaWVzID0gWwotICAgIF0KLQotICAgIG9wZXJhdGlvbnMgPSBbCi0gICAgICAgIG1p
Z3JhdGlvbnMuQ3JlYXRlTW9kZWwoCi0gICAgICAgICAgICBuYW1lPSdCdWlsZCcsCi0gICAgICAg
ICAgICBmaWVsZHM9WwotICAgICAgICAgICAgICAgICgndWlkJywgbW9kZWxzLlRleHRGaWVsZChw
cmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2J1
aWxkZXJfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVp
bGRlcl9uYW1lJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxk
ZXJfZGlzcGxheV9uYW1lJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAo
J251bWJlcicsIG1vZGVscy5JbnRlZ2VyRmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdyZXN1
bHQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAg
ICAgICAgICAgICgnc3RhdGVfc3RyaW5nJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAg
ICAgICAgICAoJ3N0YXJ0ZWRfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51
bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY29tcGxldGVfYXQnLCBtb2RlbHMuSW50ZWdl
ckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY3JlYXRl
ZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAgICAgICAg
ICAgICAgKCdtb2RpZmllZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpKSwK
LSAgICAgICAgICAgIF0sCi0gICAgICAgICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9k
ZWwoCi0gICAgICAgICAgICBuYW1lPSdCdWlsZGJvdEluc3RhbmNlJywKLSAgICAgICAgICAgIGZp
ZWxkcz1bCi0gICAgICAgICAgICAgICAgKCdpbnN0YW5jZV9pZCcsIG1vZGVscy5BdXRvRmllbGQo
cHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdo
b3N0bmFtZScsIG1vZGVscy5UZXh0RmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdhY3RpdmUn
LCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgn
Y3JlYXRlZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAg
ICAgICAgICAgICAgKCdtb2RpZmllZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRy
dWUpKSwKLSAgICAgICAgICAgIF0sCi0gICAgICAgICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQ3Jl
YXRlTW9kZWwoCi0gICAgICAgICAgICBuYW1lPSdQYXRjaCcsCi0gICAgICAgICAgICBmaWVsZHM9
WwotICAgICAgICAgICAgICAgICgncGF0Y2hfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKHByaW1h
cnlfa2V5PVRydWUsIHNlcmlhbGl6ZT1GYWxzZSkpLAotICAgICAgICAgICAgICAgICgnYnVnX2lk
JywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ29ic29sZXRlJywg
bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdz
ZW50X3RvX2J1aWxkYm90JywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSksCi0g
ICAgICAgICAgICAgICAgKCdjcmVhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3df
YWRkPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ21vZGlmaWVkJywgbW9kZWxzLkRhdGVUaW1l
RmllbGQoYXV0b19ub3c9VHJ1ZSkpLAotICAgICAgICAgICAgXSwKLSAgICAgICAgKSwKLSAgICAg
ICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKLSAgICAgICAgICAgIG5hbWU9J1N0ZXAnLAotICAg
ICAgICAgICAgZmllbGRzPVsKLSAgICAgICAgICAgICAgICAoJ3VpZCcsIG1vZGVscy5UZXh0Rmll
bGQocHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlKSksCi0gICAgICAgICAgICAgICAg
KCdyZXN1bHQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAot
ICAgICAgICAgICAgICAgICgnc3RhdGVfc3RyaW5nJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAg
ICAgICAgICAgICAgICAoJ3N0YXJ0ZWRfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRy
dWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY29tcGxldGVfYXQnLCBtb2RlbHMu
SW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgn
Y3JlYXRlZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAg
ICAgICAgICAgICAgKCdtb2RpZmllZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRy
dWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkX3VpZCcsIG1vZGVscy5Gb3JlaWduS2V5KGRi
X2NvbHVtbj0nYnVpbGRfdWlkJywgZGJfY29uc3RyYWludD1GYWxzZSwgb25fZGVsZXRlPWRqYW5n
by5kYi5tb2RlbHMuZGVsZXRpb24uQ0FTQ0FERSwgdG89J2V3cy5CdWlsZCcpKSwKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCi0gICAgICAg
ICAgICBtb2RlbF9uYW1lPSdidWlsZCcsCi0gICAgICAgICAgICBuYW1lPSdwYXRjaCcsCi0gICAg
ICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkYl9jb25zdHJhaW50PUZhbHNlLCBvbl9k
ZWxldGU9ZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbi5DQVNDQURFLCB0bz0nZXdzLlBhdGNoJyks
Ci0gICAgICAgICksCi0gICAgXQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFw
cC9ld3MvbWlncmF0aW9ucy8wMDAyX2J1aWxkX3JldHJpZWQucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8wMDAyX2J1aWxkX3Jl
dHJpZWQucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzL21pZ3JhdGlvbnMvMDAwMl9idWlsZF9yZXRyaWVkLnB5CShub25leGlzdGVudCkK
QEAgLTEsMjAgKzAsMCBAQAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgR2VuZXJhdGVkIGJ5
IERqYW5nbyAxLjExLjE2IG9uIDIwMTktMTAtMTggMTg6NDYKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgdW5pY29kZV9saXRlcmFscwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywg
bW9kZWxzCi0KLQotY2xhc3MgTWlncmF0aW9uKG1pZ3JhdGlvbnMuTWlncmF0aW9uKToKLQotICAg
IGRlcGVuZGVuY2llcyA9IFsKLSAgICAgICAgKCdld3MnLCAnMDAwMV9pbml0aWFsJyksCi0gICAg
XQotCi0gICAgb3BlcmF0aW9ucyA9IFsKLSAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKLSAg
ICAgICAgICAgIG1vZGVsX25hbWU9J2J1aWxkJywKLSAgICAgICAgICAgIG5hbWU9J3JldHJpZWQn
LAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSwK
LSAgICAgICAgKSwKLSAgICBdCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy9taWdyYXRpb25zLzAwMDNfcGF0Y2hfc2VudF90b19jb21taXRfcXVldWUucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8w
MDAzX3BhdGNoX3NlbnRfdG9fY29tbWl0X3F1ZXVlLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9taWdyYXRpb25zLzAwMDNfcGF0Y2hf
c2VudF90b19jb21taXRfcXVldWUucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMCArMCwwIEBACi0j
IC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIyBHZW5lcmF0ZWQgYnkgRGphbmdvIDEuMTEuMTYgb24g
MjAyMC0wMS0yOCAwMjo1NgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxz
Ci0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtaWdyYXRpb25zLCBtb2RlbHMKLQotCi1jbGFzcyBN
aWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgotCi0gICAgZGVwZW5kZW5jaWVzID0gWwot
ICAgICAgICAoJ2V3cycsICcwMDAyX2J1aWxkX3JldHJpZWQnKSwKLSAgICBdCi0KLSAgICBvcGVy
YXRpb25zID0gWwotICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAotICAgICAgICAgICAgbW9k
ZWxfbmFtZT0ncGF0Y2gnLAotICAgICAgICAgICAgbmFtZT0nc2VudF90b19jb21taXRfcXVldWUn
LAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSwK
LSAgICAgICAgKSwKLSAgICBdCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy9taWdyYXRpb25zL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9fX2luaXRfXy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvX19pbml0X18ucHkJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdz
L21vZGVscy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotZnJvbSBi
dWlsZCBpbXBvcnQgKgotZnJvbSBwYXRjaCBpbXBvcnQgKgotZnJvbSBzdGVwIGltcG9ydCAqCklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGQucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxz
L2J1aWxkLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy9tb2RlbHMvYnVpbGQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTYgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9t
IGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi1mcm9tIGV3cy5jb25maWcgaW1wb3J0IEVSUl9VTkVY
UEVDVEVELCBTVUNDRVNTCi1mcm9tIGV3cy5tb2RlbHMuYnVpbGRib3RpbnN0YW5jZSBpbXBvcnQg
QnVpbGRib3RJbnN0YW5jZQotZnJvbSBld3MubW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAotaW1w
b3J0IGV3cy5jb21tb24udXRpbCBhcyB1dGlsCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKLQotCi1jbGFzcyBCdWlsZChtb2RlbHMuTW9kZWwpOgotICAgIHBhdGNoID0gbW9k
ZWxzLkZvcmVpZ25LZXkoUGF0Y2gsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgZGJfY29uc3Ry
YWludD1GYWxzZSkKLSAgICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUp
Ci0gICAgYnVpbGRlcl9pZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQotICAgIGJ1aWxkZXJfbmFt
ZSA9IG1vZGVscy5UZXh0RmllbGQoKQotICAgIGJ1aWxkZXJfZGlzcGxheV9uYW1lID0gbW9kZWxz
LlRleHRGaWVsZCgpCi0gICAgbnVtYmVyID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCi0gICAgcmVz
dWx0ID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUsIGJsYW5rPVRydWUpCi0gICAgc3Rh
dGVfc3RyaW5nID0gbW9kZWxzLlRleHRGaWVsZCgpCi0gICAgc3RhcnRlZF9hdCA9IG1vZGVscy5J
bnRlZ2VyRmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKQotICAgIGNvbXBsZXRlX2F0ID0gbW9k
ZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUsIGJsYW5rPVRydWUpCi0gICAgcmV0cmllZCA9IG1v
ZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkKLSAgICBjcmVhdGVkID0gbW9kZWxzLkRh
dGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpCi0gICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0
ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzdHIoc2VsZi51aWQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2F2
ZV9idWlsZChjbHMsIHBhdGNoX2lkLCBob3N0bmFtZSwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIGJ1
aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9z
dHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgotICAgICAgICBpZiBub3QgQnVp
bGQuaXNfdmFsaWRfcmVzdWx0KHBhdGNoX2lkLCBidWlsZF9pZCwgYnVpbGRlcl9pZCwgbnVtYmVy
LCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgotICAgICAg
ICAgICAgcmV0dXJuIEVSUl9VTkVYUEVDVEVECi0KLSAgICAgICAgaWYgc3RhdGVfc3RyaW5nIGlz
IE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZV9zdHJpbmcgPSAnJwotCi0gICAgICAgIHVpZCA9IEJ1
aWxkYm90SW5zdGFuY2UuZ2V0X3VpZChob3N0bmFtZSwgYnVpbGRfaWQpCi0gICAgICAgIGJ1aWxk
ID0gQnVpbGQuZ2V0X2V4aXN0aW5nX2J1aWxkKHVpZCkKLSAgICAgICAgaWYgYnVpbGQ6Ci0gICAg
ICAgICAgICAjIElmIHRoZSBidWlsZCBkYXRhIGlzIGFscmVhZHkgcHJlc2VudCBpbiBkYXRhYmFz
ZSwgdXBkYXRlIGl0LCBlLmcuOiBidWlsZCBjb21wbGV0ZSBldmVudC4KLSAgICAgICAgICAgIHJl
dHVybiBCdWlsZC51cGRhdGVfYnVpbGQoYnVpbGQsIHBhdGNoX2lkLCB1aWQsIGJ1aWxkZXJfaWQs
IGJ1aWxkZXJfbmFtZSwgYnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0
ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KQotCi0gICAgICAgICMgU2F2ZSB0aGUg
bmV3IGJ1aWxkIGRhdGEsIGUuZy46IGJ1aWxkIHN0YXJ0IGV2ZW50LgotICAgICAgICBCdWlsZChw
YXRjaF9pZCwgdWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9u
YW1lLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9h
dCkuc2F2ZSgpCi0gICAgICAgIF9sb2cuaW5mbygnU2F2ZWQgYnVpbGQge30gaW4gZGF0YWJhc2Ug
Zm9yIHBhdGNoX2lkOiB7fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQotICAgICAgICByZXR1cm4g
U1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHVwZGF0ZV9idWlsZChjbHMsIGJ1
aWxkLCBwYXRjaF9pZCwgdWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlz
cGxheV9uYW1lLCBudW1iZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21w
bGV0ZV9hdCk6Ci0gICAgICAgIGlmIGJ1aWxkLnBhdGNoX2lkICE9IHBhdGNoX2lkOgotICAgICAg
ICAgICAgX2xvZy5lcnJvcigncGF0Y2hfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXRjaF9p
ZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQucGF0Y2hfaWQsIHBhdGNoX2lk
KSkKLSAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBpZiBidWlsZC51
aWQgIT0gdWlkOgotICAgICAgICAgICAgX2xvZy5lcnJvcigndWlkIHt9IGRvZXMgbm90IG1hdGNo
IHdpdGggdWlkIHt9LiBJZ25vcmluZyBuZXcgZGF0YS4nLmZvcm1hdChidWlsZC51aWQsIHVpZCkp
Ci0gICAgICAgICAgICByZXR1cm4gRVJSX1VORVhQRUNURUQKLSAgICAgICAgaWYgYnVpbGQuYnVp
bGRlcl9pZCAhPSBidWlsZGVyX2lkOgotICAgICAgICAgICAgX2xvZy5lcnJvcignYnVpbGRlcl9p
ZCB7fSBkb2VzIG5vdCBtYXRjaCB3aXRoIGJ1aWxkZXJfaWQge30uIElnbm9yaW5nIG5ldyBkYXRh
LicuZm9ybWF0KGJ1aWxkLmJ1aWxkZXJfaWQsIGJ1aWxkZXJfaWQpKQotICAgICAgICAgICAgcmV0
dXJuIEVSUl9VTkVYUEVDVEVECi0gICAgICAgIGlmIGJ1aWxkLm51bWJlciAhPSBudW1iZXI6Ci0g
ICAgICAgICAgICBfbG9nLmVycm9yKCdidWlsZCBudW1iZXIge30gZG9lcyBub3QgbWF0Y2ggd2l0
aCBudW1iZXIge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxkLm51bWJlciwgbnVt
YmVyKSkKLSAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBidWlsZC5y
ZXN1bHQgPSByZXN1bHQKLSAgICAgICAgYnVpbGQuc3RhdGVfc3RyaW5nID0gc3RhdGVfc3RyaW5n
Ci0gICAgICAgIGJ1aWxkLnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0Ci0gICAgICAgIGJ1aWxkLmNv
bXBsZXRlX2F0ID0gY29tcGxldGVfYXQKLSAgICAgICAgYnVpbGQuc2F2ZSh1cGRhdGVfZmllbGRz
PVsncmVzdWx0JywgJ3N0YXRlX3N0cmluZycsICdzdGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0Jywg
J21vZGlmaWVkJ10pCi0gICAgICAgIF9sb2cuZGVidWcoJ1VwZGF0ZWQgYnVpbGQge30gaW4gZGF0
YWJhc2UgZm9yIHBhdGNoX2lkOiB7fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQotICAgICAgICBy
ZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldF9yZXRyaWVkKGNs
cywgdWlkLCByZXRyaWVkPVRydWUpOgotICAgICAgICBidWlsZCA9IEJ1aWxkLmdldF9leGlzdGlu
Z19idWlsZCh1aWQpCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBidWlsZC5yZXRyaWVkID0gcmV0cmllZAotICAgICAgICBidWlsZC5zYXZlKHVwZGF0
ZV9maWVsZHM9WydyZXRyaWVkJywgJ21vZGlmaWVkJ10pCi0gICAgICAgIF9sb2cuaW5mbygnVXBk
YXRlZCBidWlsZCB7fSBpbiBkYXRhYmFzZSB3aXRoIHJldHJpZWQ9e30nLmZvcm1hdCh1aWQsIHJl
dHJpZWQpKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19idWlsZChj
bHMsIHVpZCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBCdWlsZC5vYmplY3Rz
LmdldCh1aWQ9dWlkKQotICAgICAgICBleGNlcHQgQnVpbGQuRG9lc05vdEV4aXN0OgotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc192YWxpZF9y
ZXN1bHQoY2xzLCBwYXRjaF9pZCwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIG51bWJlciwgcmVzdWx0
LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgotICAgICAgICBp
ZiBub3QgKHV0aWwuaXNfdmFsaWRfaWQocGF0Y2hfaWQpIGFuZCB1dGlsLmlzX3ZhbGlkX2lkKGJ1
aWxkX2lkKSBhbmQgdXRpbC5pc192YWxpZF9pZChidWlsZGVyX2lkKSBhbmQgdXRpbC5pc192YWxp
ZF9pZChudW1iZXIpKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVy
biBUcnVlCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMv
YnVpbGRib3RpbnN0YW5jZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weQkocmV2aXNpb24gMjY4NzMx
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90
aW5zdGFuY2UucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NSArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0j
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29k
ZV9saXRlcmFscwotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9k
ZWxzCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1jbGFzcyBCdWls
ZGJvdEluc3RhbmNlKG1vZGVscy5Nb2RlbCk6Ci0gICAgaW5zdGFuY2VfaWQgPSBtb2RlbHMuQXV0
b0ZpZWxkKHByaW1hcnlfa2V5PVRydWUpCi0gICAgaG9zdG5hbWUgPSBtb2RlbHMuVGV4dEZpZWxk
KCkKLSAgICBhY3RpdmUgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9VHJ1ZSkKLSAgICBj
cmVhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpCi0gICAgbW9k
aWZpZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQotCi0gICAgZGVmIF9f
c3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAne31fe30nLmZvcm1hdChzZWxmLmluc3RhbmNl
X2lkLCBzZWxmLmhvc3RuYW1lKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9pbnN0
YW5jZV9pZChjbHMsIGhvc3RuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJu
IEJ1aWxkYm90SW5zdGFuY2Uub2JqZWN0cy5nZXQoaG9zdG5hbWU9aG9zdG5hbWUsIGFjdGl2ZT1U
cnVlKS5pbnN0YW5jZV9pZAotICAgICAgICBleGNlcHQgQnVpbGRib3RJbnN0YW5jZS5Eb2VzTm90
RXhpc3Q6Ci0gICAgICAgICAgICBpbnN0YW5jZSA9IEJ1aWxkYm90SW5zdGFuY2UoaG9zdG5hbWU9
aG9zdG5hbWUpCi0gICAgICAgICAgICBpbnN0YW5jZS5zYXZlKCkKLSAgICAgICAgICAgIF9sb2cu
aW5mbygnQ3JlYXRlZCBuZXcgYnVpbGRib3QgaW5zdGFuY2UgaWQge30gZm9yIGhvc3RuYW1lOiB7
fScuZm9ybWF0KGluc3RhbmNlLmluc3RhbmNlX2lkLCBob3N0bmFtZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gaW5zdGFuY2UuaW5zdGFuY2VfaWQKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBn
ZXRfdWlkKGNscywgaG9zdG5hbWUsIGJ1aWxkX29yX3N0ZXBfaWQpOgotICAgICAgICBpbnN0YW5j
ZV9pZCA9IEJ1aWxkYm90SW5zdGFuY2UuZ2V0X2luc3RhbmNlX2lkKGhvc3RuYW1lKQotICAgICAg
ICByZXR1cm4gJ3t9X3t9Jy5mb3JtYXQoaW5zdGFuY2VfaWQsIGJ1aWxkX29yX3N0ZXBfaWQpCklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvcGF0Y2gucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxz
L3BhdGNoLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy9tb2RlbHMvcGF0Y2gucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjYgKzAsMCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0j
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9t
IGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi0KLWZyb20gZXdzLmNvbmZpZyBpbXBvcnQgRVJSX0VY
SVNUSU5HX1BBVENILCBFUlJfSU5WQUxJRF9QQVRDSF9JRCwgRVJSX05PTl9FWElTVElOR19QQVRD
SCwgU1VDQ0VTUwotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xh
c3MgUGF0Y2gobW9kZWxzLk1vZGVsKToKLSAgICBwYXRjaF9pZCA9IG1vZGVscy5JbnRlZ2VyRmll
bGQocHJpbWFyeV9rZXk9VHJ1ZSkKLSAgICBidWdfaWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkK
LSAgICBvYnNvbGV0ZSA9IG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkKLSAgICBz
ZW50X3RvX2J1aWxkYm90ID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQotICAg
IHNlbnRfdG9fY29tbWl0X3F1ZXVlID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNl
KQotICAgIGNyZWF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQ9VHJ1ZSkK
LSAgICBtb2RpZmllZCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpCi0KLSAg
ICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmLnBhdGNoX2lkKQot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNhdmVfcGF0Y2goY2xzLCBwYXRjaF9pZCwgYnVn
X2lkPS0xLCBvYnNvbGV0ZT1GYWxzZSwgc2VudF90b19idWlsZGJvdD1GYWxzZSwgc2VudF90b19j
b21taXRfcXVldWU9RmFsc2UpOgotICAgICAgICBpZiBub3QgUGF0Y2guaXNfdmFsaWRfcGF0Y2hf
aWQocGF0Y2hfaWQpOgotICAgICAgICAgICAgX2xvZy53YXJuKCdQYXRjaCBpZCB7fSBpbiBpbnZh
bGlkLiBTa2lwcGVkIHNhdmluZy4nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1
cm4gRVJSX0lOVkFMSURfUEFUQ0hfSUQKLQotICAgICAgICBpZiBQYXRjaC5pc19leGlzdGluZ19w
YXRjaF9pZChwYXRjaF9pZCk6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdQYXRjaCBpZCB7fSBh
bHJlYWR5IGV4aXN0cyBpbiBkYXRhYmFzZS4gU2tpcHBlZCBzYXZpbmcuJy5mb3JtYXQocGF0Y2hf
aWQpKQotICAgICAgICAgICAgcmV0dXJuIEVSUl9FWElTVElOR19QQVRDSAotICAgICAgICBQYXRj
aChwYXRjaF9pZCwgYnVnX2lkLCBvYnNvbGV0ZSwgc2VudF90b19idWlsZGJvdCwgc2VudF90b19j
b21taXRfcXVldWUpLnNhdmUoKQotICAgICAgICBfbG9nLmluZm8oJ1NhdmVkIHBhdGNoIGluIGRh
dGFiYXNlLCBpZDoge30nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgIHJldHVybiBTVUNDRVNT
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2F2ZV9wYXRjaGVzKGNscywgcGF0Y2hfaWRf
bGlzdCk6Ci0gICAgICAgIGZvciBwYXRjaF9pZCBpbiBwYXRjaF9pZF9saXN0OgotICAgICAgICAg
ICAgUGF0Y2guc2F2ZV9wYXRjaChwYXRjaF9pZCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBpc192YWxpZF9wYXRjaF9pZChjbHMsIHBhdGNoX2lkKToKLSAgICAgICAgaWYgbm90IHBhdGNo
X2lkIG9yIHBhdGNoX2lkIDwgMToKLSAgICAgICAgICAgIF9sb2cud2FybignSW52YWxpZCBwYXRj
aCBpZDoge30nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgaWYgdHlwZShwYXRjaF9pZCkgIT0gaW50OgotICAgICAgICAgICAgX2xvZy53YXJuKCdE
YXRhIHR5cGUgbWlzbWF0Y2ggZm9yIHBhdGNoX2lkLCBleHBlY3RlZDogaW50LCBmb3VuZDoge30s
IGlkOiB7fScuZm9ybWF0KHR5cGUocGF0Y2hfaWQpLCBwYXRjaF9pZCkpCi0gICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBpc19leGlzdGluZ19wYXRjaF9pZChjbHMsIHBhdGNoX2lkKToKLSAgICAgICAgcmV0dXJu
IGJvb2woUGF0Y2gub2JqZWN0cy5maWx0ZXIocGF0Y2hfaWQ9cGF0Y2hfaWQpKQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGlzX3BhdGNoX3NlbnRfdG9fYnVpbGRib3QoY2xzLCBwYXRjaF9p
ZCwgY29tbWl0X3F1ZXVlPUZhbHNlKToKLSAgICAgICAgaWYgY29tbWl0X3F1ZXVlOgotICAgICAg
ICAgICAgcmV0dXJuIFBhdGNoLl9pc19wYXRjaF9zZW50X3RvX2NvbW1pdF9xdWV1ZShwYXRjaF9p
ZCkKLSAgICAgICAgcmV0dXJuIFBhdGNoLl9pc19wYXRjaF9zZW50X3RvX2J1aWxkYm90KHBhdGNo
X2lkKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9pc19wYXRjaF9zZW50X3RvX2J1aWxk
Ym90KGNscywgcGF0Y2hfaWQpOgotICAgICAgICByZXR1cm4gUGF0Y2guaXNfZXhpc3RpbmdfcGF0
Y2hfaWQocGF0Y2hfaWQpIGFuZCBQYXRjaC5vYmplY3RzLmdldChwaz1wYXRjaF9pZCkuc2VudF90
b19idWlsZGJvdAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9pc19wYXRjaF9zZW50X3Rv
X2NvbW1pdF9xdWV1ZShjbHMsIHBhdGNoX2lkKToKLSAgICAgICAgcmV0dXJuIFBhdGNoLmlzX2V4
aXN0aW5nX3BhdGNoX2lkKHBhdGNoX2lkKSBhbmQgUGF0Y2gub2JqZWN0cy5nZXQocGs9cGF0Y2hf
aWQpLnNlbnRfdG9fY29tbWl0X3F1ZXVlCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0
X3BhdGNoKGNscywgcGF0Y2hfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4g
UGF0Y2gub2JqZWN0cy5nZXQocGF0Y2hfaWQ9cGF0Y2hfaWQpCi0gICAgICAgIGV4Y2VwdDoKLSAg
ICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0X3Nl
bnRfdG9fYnVpbGRib3QoY2xzLCBwYXRjaF9pZCwgdmFsdWUsIGNvbW1pdF9xdWV1ZT1GYWxzZSk6
Ci0gICAgICAgIGlmIGNvbW1pdF9xdWV1ZToKLSAgICAgICAgICAgIHJldHVybiBQYXRjaC5fc2V0
X3NlbnRfdG9fY29tbWl0X3F1ZXVlKHBhdGNoX2lkLCBzZW50X3RvX2NvbW1pdF9xdWV1ZT12YWx1
ZSkKLSAgICAgICAgcmV0dXJuIFBhdGNoLl9zZXRfc2VudF90b19idWlsZGJvdChwYXRjaF9pZCwg
c2VudF90b19idWlsZGJvdD12YWx1ZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc2V0
X3NlbnRfdG9fYnVpbGRib3QoY2xzLCBwYXRjaF9pZCwgc2VudF90b19idWlsZGJvdD1UcnVlKToK
LSAgICAgICAgaWYgbm90IFBhdGNoLmlzX2V4aXN0aW5nX3BhdGNoX2lkKHBhdGNoX2lkKToKLSAg
ICAgICAgICAgIFBhdGNoLnNhdmVfcGF0Y2gocGF0Y2hfaWQ9cGF0Y2hfaWQsIHNlbnRfdG9fYnVp
bGRib3Q9c2VudF90b19idWlsZGJvdCkKLSAgICAgICAgICAgIF9sb2cuaW5mbygnUGF0Y2gge30g
c2F2ZWQgdG8gZGF0YWJhc2Ugd2l0aCBzZW50X3RvX2J1aWxkYm90PXt9Jy5mb3JtYXQocGF0Y2hf
aWQsIHNlbnRfdG9fYnVpbGRib3QpKQotICAgICAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQotICAg
ICAgICBwYXRjaCA9IFBhdGNoLm9iamVjdHMuZ2V0KHBrPXBhdGNoX2lkKQotICAgICAgICBpZiBw
YXRjaC5zZW50X3RvX2J1aWxkYm90ID09IHNlbnRfdG9fYnVpbGRib3Q6Ci0gICAgICAgICAgICBf
bG9nLndhcm4oJ1BhdGNoIHt9IGFscmVhZHkgaGFzIHNlbnRfdG9fYnVpbGRib3Q9e30nLmZvcm1h
dChwYXRjaF9pZCwgc2VudF90b19idWlsZGJvdCkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VT
UwotCi0gICAgICAgIHBhdGNoLnNlbnRfdG9fYnVpbGRib3QgPSBzZW50X3RvX2J1aWxkYm90Ci0g
ICAgICAgIHBhdGNoLnNhdmUoKQotICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgcGF0Y2gge30g
d2l0aCBzZW50X3RvX2J1aWxkYm90PXt9Jy5mb3JtYXQocGF0Y2hfaWQsIHNlbnRfdG9fYnVpbGRi
b3QpKQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IF9zZXRfc2VudF90b19jb21taXRfcXVldWUoY2xzLCBwYXRjaF9pZCwgc2VudF90b19jb21taXRf
cXVldWU9VHJ1ZSk6Ci0gICAgICAgIGlmIG5vdCBQYXRjaC5pc19leGlzdGluZ19wYXRjaF9pZChw
YXRjaF9pZCk6Ci0gICAgICAgICAgICBQYXRjaC5zYXZlX3BhdGNoKHBhdGNoX2lkPXBhdGNoX2lk
LCBzZW50X3RvX2NvbW1pdF9xdWV1ZT1zZW50X3RvX2NvbW1pdF9xdWV1ZSkKLSAgICAgICAgICAg
IF9sb2cuaW5mbygnUGF0Y2gge30gc2F2ZWQgdG8gZGF0YWJhc2Ugd2l0aCBzZW50X3RvX2NvbW1p
dF9xdWV1ZT17fScuZm9ybWF0KHBhdGNoX2lkLCBzZW50X3RvX2NvbW1pdF9xdWV1ZSkpCi0gICAg
ICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgICAgIHBhdGNoID0gUGF0Y2gub2JqZWN0cy5n
ZXQocGs9cGF0Y2hfaWQpCi0gICAgICAgIGlmIHBhdGNoLnNlbnRfdG9fY29tbWl0X3F1ZXVlID09
IHNlbnRfdG9fY29tbWl0X3F1ZXVlOgotICAgICAgICAgICAgX2xvZy53YXJuKCdQYXRjaCB7fSBh
bHJlYWR5IGhhcyBzZW50X3RvX2NvbW1pdF9xdWV1ZT17fScuZm9ybWF0KHBhdGNoX2lkLCBzZW50
X3RvX2NvbW1pdF9xdWV1ZSkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgICAg
IHBhdGNoLnNlbnRfdG9fY29tbWl0X3F1ZXVlID0gc2VudF90b19jb21taXRfcXVldWUKLSAgICAg
ICAgcGF0Y2guc2F2ZSgpCi0gICAgICAgIF9sb2cuaW5mbygnVXBkYXRlZCBwYXRjaCB7fSB3aXRo
IHNlbnRfdG9fY29tbWl0X3F1ZXVlPXt9Jy5mb3JtYXQocGF0Y2hfaWQsIHNlbnRfdG9fY29tbWl0
X3F1ZXVlKSkKLSAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQotICAgIEBjbGFzc21ldGhvZAotICAg
IGRlZiBzZXRfYnVnX2lkKGNscywgcGF0Y2hfaWQsIGJ1Z19pZCk6Ci0gICAgICAgIGlmIG5vdCBQ
YXRjaC5pc19leGlzdGluZ19wYXRjaF9pZChwYXRjaF9pZCk6Ci0gICAgICAgICAgICByZXR1cm4g
RVJSX05PTl9FWElTVElOR19QQVRDSAotCi0gICAgICAgIHBhdGNoID0gUGF0Y2gub2JqZWN0cy5n
ZXQocGs9cGF0Y2hfaWQpCi0gICAgICAgIGlmIHBhdGNoLmJ1Z19pZCA9PSBidWdfaWQ6Ci0gICAg
ICAgICAgICBfbG9nLndhcm4oJ1BhdGNoIHt9IGFscmVhZHkgaGFzIGJ1ZyBpZCB7fSBzZXQuJy5m
b3JtYXQocGF0Y2hfaWQsIGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0g
ICAgICAgIHBhdGNoLmJ1Z19pZCA9IGJ1Z19pZAotICAgICAgICBwYXRjaC5zYXZlKCkKLSAgICAg
ICAgX2xvZy5kZWJ1ZygnVXBkYXRlZCBwYXRjaCB7fSB3aXRoIGJ1ZyBpZCB7fScuZm9ybWF0KHBh
dGNoX2lkLCBidWdfaWQpKQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIHNldF9vYnNvbGV0ZShjbHMsIHBhdGNoX2lkLCBvYnNvbGV0ZT1UcnVlKToK
LSAgICAgICAgaWYgbm90IFBhdGNoLmlzX2V4aXN0aW5nX3BhdGNoX2lkKHBhdGNoX2lkKToKLSAg
ICAgICAgICAgIHJldHVybiBFUlJfTk9OX0VYSVNUSU5HX1BBVENICi0KLSAgICAgICAgcGF0Y2gg
PSBQYXRjaC5vYmplY3RzLmdldChwaz1wYXRjaF9pZCkKLSAgICAgICAgaWYgcGF0Y2gub2Jzb2xl
dGUgPT0gb2Jzb2xldGU6Ci0gICAgICAgICAgICBfbG9nLndhcm4oJ1BhdGNoIHt9IGlzIGFscmVh
ZHkgbWFya2VkIHdpdGggb2Jzb2xldGU9e30uJy5mb3JtYXQocGF0Y2hfaWQsIG9ic29sZXRlKSkK
LSAgICAgICAgICAgIHJldHVybiBTVUNDRVNTCi0gICAgICAgIHBhdGNoLm9ic29sZXRlID0gb2Jz
b2xldGUKLSAgICAgICAgcGF0Y2guc2F2ZSgpCi0gICAgICAgIF9sb2cuZGVidWcoJ01hcmtlZCBw
YXRjaCB7fSBhcyBvYnNvbGV0ZT17fScuZm9ybWF0KHBhdGNoX2lkLCBvYnNvbGV0ZSkpCi0gICAg
ICAgIHJldHVybiBTVUNDRVNTCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy9tb2RlbHMvc3RlcC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYXBwL2V3cy9tb2RlbHMvc3RlcC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL3N0ZXAucHkJKG5vbmV4aXN0ZW50
KQpAQCAtMSw5NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWltcG9y
dCBsb2dnaW5nCi0KLWZyb20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLWZyb20gZXdzLmNvbmZp
ZyBpbXBvcnQgRVJSX1VORVhQRUNURUQsIFNVQ0NFU1MKLWZyb20gZXdzLm1vZGVscy5idWlsZCBp
bXBvcnQgQnVpbGQKLWZyb20gZXdzLm1vZGVscy5idWlsZGJvdGluc3RhbmNlIGltcG9ydCBCdWls
ZGJvdEluc3RhbmNlCi1pbXBvcnQgZXdzLmNvbW1vbi51dGlsIGFzIHV0aWwKLQotX2xvZyA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIFN0ZXAobW9kZWxzLk1vZGVsKToK
LSAgICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUpCi0gICAgYnVpbGRf
dWlkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwg
ZGJfY29sdW1uPSdidWlsZF91aWQnLCBkYl9jb25zdHJhaW50PUZhbHNlKQotICAgIHJlc3VsdCA9
IG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKQotICAgIHN0YXRlX3N0
cmluZyA9IG1vZGVscy5UZXh0RmllbGQoKQotICAgIHN0YXJ0ZWRfYXQgPSBtb2RlbHMuSW50ZWdl
ckZpZWxkKG51bGw9VHJ1ZSwgYmxhbms9VHJ1ZSkKLSAgICBjb21wbGV0ZV9hdCA9IG1vZGVscy5J
bnRlZ2VyRmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKQotICAgIGNyZWF0ZWQgPSBtb2RlbHMu
RGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQ9VHJ1ZSkKLSAgICBtb2RpZmllZCA9IG1vZGVscy5E
YXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHN0cihzZWxmLnVpZCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBz
YXZlX3N0ZXAoY2xzLCBob3N0bmFtZSwgc3RlcF9pZCwgYnVpbGRfaWQsIHJlc3VsdCwgc3RhdGVf
c3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdD1Ob25lKToKLSAgICAgICAgaWYgbm90IFN0
ZXAuaXNfdmFsaWRfcmVzdWx0KHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmlu
Zywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgotICAgICAgICAgICAgcmV0dXJuIEVSUl9VTkVY
UEVDVEVECi0KLSAgICAgICAgaWYgc3RhdGVfc3RyaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICBz
dGF0ZV9zdHJpbmcgPSAnJwotCi0gICAgICAgIHN0ZXBfdWlkID0gQnVpbGRib3RJbnN0YW5jZS5n
ZXRfdWlkKGhvc3RuYW1lLCBzdGVwX2lkKQotICAgICAgICBidWlsZF91aWQgPSBCdWlsZGJvdElu
c3RhbmNlLmdldF91aWQoaG9zdG5hbWUsIGJ1aWxkX2lkKQotCi0gICAgICAgIHN0ZXAgPSBTdGVw
LmdldF9leGlzdGluZ19zdGVwKHN0ZXBfdWlkKQotICAgICAgICBpZiBzdGVwOgotICAgICAgICAg
ICAgIyBJZiB0aGUgc3RlcCBkYXRhIGlzIGFscmVhZHkgcHJlc2VudCBpbiBkYXRhYmFzZSwgdXBk
YXRlIGl0LCBlLmcuOiBzdGVwIGNvbXBsZXRlIGV2ZW50LgotICAgICAgICAgICAgcmV0dXJuIFN0
ZXAudXBkYXRlX3N0ZXAoc3RlcCwgc3RlcF91aWQsIGJ1aWxkX3VpZCwgcmVzdWx0LCBzdGF0ZV9z
dHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KQotCi0gICAgICAgICMgU2F2ZSB0aGUgbmV3
IHN0ZXAgZGF0YSwgZS5nLjogc3RlcCBzdGFydCBldmVudC4KLSAgICAgICAgU3RlcChzdGVwX3Vp
ZCwgYnVpbGRfdWlkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVf
YXQpLnNhdmUoKQotICAgICAgICBfbG9nLmRlYnVnKCdTYXZlZCBzdGVwIHt9IGluIGRhdGFiYXNl
IGZvciBidWlsZDoge30nLmZvcm1hdChzdGVwX3VpZCwgYnVpbGRfdWlkKSkKLSAgICAgICAgcmV0
dXJuIFNVQ0NFU1MKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfc3RlcChjbHMs
IHN0ZXAsIHN0ZXBfdWlkLCBidWlsZF91aWQsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVk
X2F0LCBjb21wbGV0ZV9hdCk6Ci0gICAgICAgIGlmIHN0ZXAudWlkICE9IHN0ZXBfdWlkOgotICAg
ICAgICAgICAgX2xvZy5lcnJvcignc3RlcF91aWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBzdGVw
X3VpZCB7fS4gSWdub3JpbmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC51aWQsIHN0ZXBfdWlkKSkK
LSAgICAgICAgICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBzdGVwLnJlc3VsdCA9
IHJlc3VsdAotICAgICAgICBzdGVwLnN0YXRlX3N0cmluZyA9IHN0YXRlX3N0cmluZwotICAgICAg
ICBzdGVwLnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0Ci0gICAgICAgIHN0ZXAuY29tcGxldGVfYXQg
PSBjb21wbGV0ZV9hdAotICAgICAgICBzdGVwLnNhdmUodXBkYXRlX2ZpZWxkcz1bJ3Jlc3VsdCcs
ICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCcsICdtb2RpZmllZCdd
KQotICAgICAgICBfbG9nLmRlYnVnKCdVcGRhdGVkIHN0ZXAge30gaW4gZGF0YWJhc2UgZm9yIGJ1
aWxkOiB7fScuZm9ybWF0KHN0ZXBfdWlkLCBidWlsZF91aWQpKQotICAgICAgICByZXR1cm4gU1VD
Q0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19zdGVwKGNscywg
dWlkKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0ZXAub2JqZWN0cy5nZXQo
dWlkPXVpZCkKLSAgICAgICAgZXhjZXB0IFN0ZXAuRG9lc05vdEV4aXN0OgotICAgICAgICAgICAg
cmV0dXJuIE5vbmUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc192YWxpZF9yZXN1bHQo
Y2xzLCBzdGVwX2lkLCBidWlsZF9pZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQs
IGNvbXBsZXRlX2F0KToKLSAgICAgICAgaWYgbm90ICh1dGlsLmlzX3ZhbGlkX2lkKHN0ZXBfaWQp
IGFuZCB1dGlsLmlzX3ZhbGlkX2lkKGJ1aWxkX2lkKSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLQotICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvdGVtcGxhdGVzL3JldHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGVtcGxhdGVzL3JldHJ5Lmh0bWwJKHJldmlzaW9u
IDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3RlbXBsYXRl
cy9yZXRyeS5odG1sCShub25leGlzdGVudCkKQEAgLTEsMyArMCwwIEBACi08Zm9ybSBuYW1lPSJy
ZXRyeSIgbWV0aG9kPSJQT1NUIj57JSBjc3JmX3Rva2VuICV9Ci1BdHRhY2htZW50IGlkIG9mIHBh
dGNoIHRvIHJldHJ5OiA8aW5wdXQgbmFtZT0icGF0Y2hfaWQiPjxpbnB1dCB0eXBlPSJzdWJtaXQi
IHZhbHVlPSJSZXRyeSBmYWlsZWQgYnVpbGRzIj4KLTwvZm9ybT4KSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3RlbXBsYXRlcy9zdGF0dXNidWJibGUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy90ZW1wbGF0ZXMv
c3RhdHVzYnViYmxlLmh0bWwJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1hcHAvZXdzL3RlbXBsYXRlcy9zdGF0dXNidWJibGUuaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDEyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08
c3R5bGU+Ci1ib2R5IHsKLSAgICBmb250LWZhbWlseTogVmVyZGFuYSwgc2Fucy1zZXJpZjsKLSAg
ICBtYXJnaW46IDBweDsKLSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0jYnViYmxlQ29udGFpbmVyIHsK
LSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0K
LS5zdGF0dXMgewotICAgIGRpc3BsYXk6IGJsb2NrOwotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1h
cmdpbjogMXB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYm9yZGVyLXJhZGl1
czogNXB4OwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMSwgMSwgMSwgMC4zKTsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgY3Vyc29y
OiBwb2ludGVyOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogYmxhY2s7
Ci19Ci0uc3RhdHVzOmhvdmVyIHsKLSAgICBib3JkZXItY29sb3I6IHJnYmEoMSwgMSwgMSwgMC43
KTsKLX0KLS5wYXNzIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZERjVGOwotfQotLmZhaWwg
ewotICAgIGJhY2tncm91bmQtY29sb3I6ICNFOTgwODA7Ci19Ci0uc3RhcnRlZCB7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogI0UxRjVGRjsKLX0KLS5wcm92aXNpb25hbC1mYWlsIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjRkZBRjA1OwotfQotLmVycm9yIHsKLSAgYmFja2dyb3VuZC1jb2xvcjog
I0UwQjBGRjsKLX0KLS5xdWV1ZV9wb3NpdGlvbiB7Ci0gICAgZm9udC1zaXplOiA5cHg7Ci19Ci1m
b3JtIHsKLSAgICBmbG9hdDogbGVmdDsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLTwvc3R5bGU+
Ci08c2NyaXB0Pgotd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihl
KSB7Ci0gIGlmIChlLmRhdGEgPT09ICdjb250YWluZXJNZXRyaWNzJykgewotICAgIHZhciBwYXJl
bnRDb250YWluZXIgPSBidWJibGVDb250YWluZXIucGFyZW50RWxlbWVudDsKLSAgICB2YXIgb3Jp
Z2luYWxXaWR0aCA9IHBhcmVudENvbnRhaW5lci5zdHlsZS53aWR0aDsKLSAgICBwYXJlbnRDb250
YWluZXIuc3R5bGUud2lkdGggPSAiMTAwMHB4IjsKLSAgICB2YXIgY2xpZW50UmVjdCA9IGJ1YmJs
ZUNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICBwYXJlbnRDb250YWluZXIu
c3R5bGUud2lkdGggPSBvcmlnaW5hbFdpZHRoOwotICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHsn
d2lkdGgnOiBNYXRoLmNlaWwoY2xpZW50UmVjdC53aWR0aCksICdoZWlnaHQnOiBNYXRoLmNlaWwo
Y2xpZW50UmVjdC5oZWlnaHQpfSwgZS5vcmlnaW4pOwotICB9IGVsc2UKLSAgICBjb25zb2xlLmxv
ZygiVW5rbm93biBwb3N0TWVzc2FnZTogIiArIGUuZGF0YSk7Ci19LCBmYWxzZSk7Ci08L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotPGRpdiBpZD0iYnViYmxlQ29udGFpbmVyIj4KLSAgeyUgaWYg
c2hvd19mYWlsdXJlX3RvX2FwcGx5ICV9Ci0gIDxhIGNsYXNzPSJzdGF0dXMgZmFpbCIgdGFyZ2V0
PSJfYmxhbmsiCi0gICAgICBocmVmPSIvcGF0Y2gve3sgcGF0Y2hfaWQgfX0iCi0gICAgICB0aXRs
ZT0iTm9uZSBvZiB0aGUgcXVldWVzIGNvdWxkIGFwcGx5IHRoZSBwYXRjaCIKLSAgPgotICAgIHBh
dGNoIGRvZXMgbm90IGFwcGx5IHRvIHRydW5rIG9mIHJlcG9zaXRvcnkKLSAgPC9hPgotICB7JSBl
bHNlICV9Ci0gIHslIGZvciBidWJibGUgaW4gYnViYmxlcyAlfQotICA8YSBjbGFzcz0ic3RhdHVz
IHt7IGJ1YmJsZS5zdGF0ZSB9fSIgdGFyZ2V0PSJfYmxhbmsiCi0gIHslIGlmIGJ1YmJsZS51cmwg
JX0KLSAgICAgIGhyZWY9Int7IGJ1YmJsZS51cmwgfX0iCi0gIHslIGVuZGlmICV9Ci0gIHslIGlm
IGJ1YmJsZS5kZXRhaWxzX21lc3NhZ2UgJX0KLSAgICAgIHRpdGxlPSJ7eyBidWJibGUuZGV0YWls
c19tZXNzYWdlIH19IgotICB7JSBlbmRpZiAlfQotICA+Ci0gICAge3sgYnViYmxlLm5hbWUgfX0K
LSAgICB7JSBpZiBidWJibGUucXVldWVfcG9zaXRpb24gJX0KLSAgICA8c3BhbiBjbGFzcz0icXVl
dWVfcG9zaXRpb24iPiN7eyBidWJibGUucXVldWVfcG9zaXRpb24gfX08L3NwYW4+Ci0gICAgeyUg
ZW5kaWYgJX0KLSAgPC9hPgotICB7JSBlbmRmb3IgJX0KLSAgeyUgZW5kaWYgJX0KLQoteyUgaWYg
c2hvd19zdWJtaXRfdG9fZXdzICV9Ci0gIDxmb3JtIG5hbWU9InN1Ym1pdF90b19ld3MiIG1ldGhv
ZD0iUE9TVCIgYWN0aW9uPSIvc3VibWl0LXRvLWV3cy8iPnslIGNzcmZfdG9rZW4gJX0KLSAgICA8
aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRjaF9pZCIgdmFsdWU9Int7IHBhdGNoX2lkIH19
Ij4KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJuZXh0X2FjdGlvbiIgdmFsdWU9InJl
dHVybl90b19idWJibGVzIj4KLSAgICA8aW5wdXQgY2xhc3M9InN0YXR1cyIgdHlwZT0ic3VibWl0
IiB2YWx1ZT0iU3VibWl0IGZvciBFV1MgYW5hbHlzaXMiPgotICA8L2Zvcm0+Ci17JSBlbmRpZiAl
fQotCi17JSBpZiBzaG93X3JldHJ5X2J1dHRvbiAlfQotICA8Zm9ybSBuYW1lPSJyZXRyeSIgbWV0
aG9kPSJQT1NUIiBhY3Rpb249Ii9yZXRyeS8iPnslIGNzcmZfdG9rZW4gJX0KLSAgICA8aW5wdXQg
dHlwZT0iaGlkZGVuIiBuYW1lPSJwYXRjaF9pZCIgdmFsdWU9Int7IHBhdGNoX2lkIH19Ij4KLSAg
ICA8aW5wdXQgY2xhc3M9InN0YXR1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJiM4NjM1OyBSZXRy
eSBmYWlsZWQgYnVpbGRzIj4KLSAgPC9mb3JtPgoteyUgZW5kaWYgJX0KLQotPHNjcmlwdD4KLS8v
IENvbnZlcnQgZnJvbSBVVEMgZGF0ZXMgdG8gbG9jYWwuCi12YXIgYnViYmxlcyA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInN0YXR1cyIpCi1mb3IgKHZhciBpID0gMDsgaSA8IGJ1
YmJsZXMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgYnViYmxlID0gYnViYmxlc1tpXTsKLSAgICBp
ZiAoYnViYmxlLmhhc0F0dHJpYnV0ZSgidGl0bGUiKSkgewotICAgICAgICB2YXIgbmV3VGl0bGUg
PSBidWJibGUuZ2V0QXR0cmlidXRlKCJ0aXRsZSIpLnJlcGxhY2UoL1xbXFsoLispXF1cXS8sIGZ1
bmN0aW9uKG1hdGNoLCBpc29EYXRlU3RyaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IERh
dGUoaXNvRGF0ZVN0cmluZykudG9TdHJpbmcoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJ1YmJs
ZS5zZXRBdHRyaWJ1dGUoInRpdGxlIiwgbmV3VGl0bGUpOwotICAgIH0KLX0KLTwvc2NyaXB0Pgot
PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy90ZW1wbGF0ZXMvc3VibWl0dG9ld3MuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy90ZW1wbGF0ZXMvc3VibWl0dG9ld3MuaHRt
bAkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9l
d3MvdGVtcGxhdGVzL3N1Ym1pdHRvZXdzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzICswLDAg
QEAKLTxmb3JtIG5hbWU9InN1Ym1pdF90b19ld3MiIG1ldGhvZD0iUE9TVCI+eyUgY3NyZl90b2tl
biAlfQotQXR0YWNobWVudCBpZCBvZiBwYXRjaCB0byBzdWJtaXQ6IDxpbnB1dCBuYW1lPSJwYXRj
aF9pZCI+PGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCBmb3IgRVdTIFByb2Nlc3Np
bmciPgotPC9mb3JtPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mv
dGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9l
d3MvdGVzdHMucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL3Rlc3RzLnB5CShub25leGlzdGVudCkKQEAgLTEsMjcgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IHVuaWNvZGVfbGl0ZXJhbHMKLQotZnJvbSBkamFuZ28udGVzdCBpbXBvcnQgVGVzdENhc2UK
LQotIyBDcmVhdGUgeW91ciB0ZXN0cyBoZXJlLgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWFwcC9ld3MvdGhpcmRwYXJ0eS9CZWF1dGlmdWxTb3VwLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3RoaXJkcGFydHkvQmVhdXRpZnVs
U291cC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdz
LWFwcC9ld3MvdGhpcmRwYXJ0eS9CZWF1dGlmdWxTb3VwLnB5CShub25leGlzdGVudCkKQEAgLTEs
MjAxNCArMCwwIEBACi0iIiJCZWF1dGlmdWwgU291cAotRWxpeGlyIGFuZCBUb25pYwotIlRoZSBT
Y3JlZW4tU2NyYXBlcidzIEZyaWVuZCIKLWh0dHA6Ly93d3cuY3J1bW15LmNvbS9zb2Z0d2FyZS9C
ZWF1dGlmdWxTb3VwLwotCi1CZWF1dGlmdWwgU291cCBwYXJzZXMgYSAocG9zc2libHkgaW52YWxp
ZCkgWE1MIG9yIEhUTUwgZG9jdW1lbnQgaW50byBhCi10cmVlIHJlcHJlc2VudGF0aW9uLiBJdCBw
cm92aWRlcyBtZXRob2RzIGFuZCBQeXRob25pYyBpZGlvbXMgdGhhdCBtYWtlCi1pdCBlYXN5IHRv
IG5hdmlnYXRlLCBzZWFyY2gsIGFuZCBtb2RpZnkgdGhlIHRyZWUuCi0KLUEgd2VsbC1mb3JtZWQg
WE1ML0hUTUwgZG9jdW1lbnQgeWllbGRzIGEgd2VsbC1mb3JtZWQgZGF0YQotc3RydWN0dXJlLiBB
biBpbGwtZm9ybWVkIFhNTC9IVE1MIGRvY3VtZW50IHlpZWxkcyBhIGNvcnJlc3BvbmRpbmdseQot
aWxsLWZvcm1lZCBkYXRhIHN0cnVjdHVyZS4gSWYgeW91ciBkb2N1bWVudCBpcyBvbmx5IGxvY2Fs
bHkKLXdlbGwtZm9ybWVkLCB5b3UgY2FuIHVzZSB0aGlzIGxpYnJhcnkgdG8gZmluZCBhbmQgcHJv
Y2VzcyB0aGUKLXdlbGwtZm9ybWVkIHBhcnQgb2YgaXQuCi0KLUJlYXV0aWZ1bCBTb3VwIHdvcmtz
IHdpdGggUHl0aG9uIDIuMiBhbmQgdXAuIEl0IGhhcyBubyBleHRlcm5hbAotZGVwZW5kZW5jaWVz
LCBidXQgeW91J2xsIGhhdmUgbW9yZSBzdWNjZXNzIGF0IGNvbnZlcnRpbmcgZGF0YSB0byBVVEYt
OAotaWYgeW91IGFsc28gaW5zdGFsbCB0aGVzZSB0aHJlZSBwYWNrYWdlczoKLQotKiBjaGFyZGV0
LCBmb3IgYXV0by1kZXRlY3RpbmcgY2hhcmFjdGVyIGVuY29kaW5ncwotICBodHRwOi8vY2hhcmRl
dC5mZWVkcGFyc2VyLm9yZy8KLSogY2prY29kZWNzIGFuZCBpY29udl9jb2RlYywgd2hpY2ggYWRk
IG1vcmUgZW5jb2RpbmdzIHRvIHRoZSBvbmVzIHN1cHBvcnRlZAotICBieSBzdG9jayBQeXRob24u
Ci0gIGh0dHA6Ly9jamtweXRob24uaTE4bi5vcmcvCi0KLUJlYXV0aWZ1bCBTb3VwIGRlZmluZXMg
Y2xhc3NlcyBmb3IgdHdvIG1haW4gcGFyc2luZyBzdHJhdGVnaWVzOgotCi0gKiBCZWF1dGlmdWxT
dG9uZVNvdXAsIGZvciBwYXJzaW5nIFhNTCwgU0dNTCwgb3IgeW91ciBkb21haW4tc3BlY2lmaWMK
LSAgIGxhbmd1YWdlIHRoYXQga2luZCBvZiBsb29rcyBsaWtlIFhNTC4KLQotICogQmVhdXRpZnVs
U291cCwgZm9yIHBhcnNpbmcgcnVuLW9mLXRoZS1taWxsIEhUTUwgY29kZSwgYmUgaXQgdmFsaWQK
LSAgIG9yIGludmFsaWQuIFRoaXMgY2xhc3MgaGFzIHdlYiBicm93c2VyLWxpa2UgaGV1cmlzdGlj
cyBmb3IKLSAgIG9idGFpbmluZyBhIHNlbnNpYmxlIHBhcnNlIHRyZWUgaW4gdGhlIGZhY2Ugb2Yg
Y29tbW9uIEhUTUwgZXJyb3JzLgotCi1CZWF1dGlmdWwgU291cCBhbHNvIGRlZmluZXMgYSBjbGFz
cyAoVW5pY29kZURhbW1pdCkgZm9yIGF1dG9kZXRlY3RpbmcKLXRoZSBlbmNvZGluZyBvZiBhbiBI
VE1MIG9yIFhNTCBkb2N1bWVudCwgYW5kIGNvbnZlcnRpbmcgaXQgdG8KLVVuaWNvZGUuIE11Y2gg
b2YgdGhpcyBjb2RlIGlzIHRha2VuIGZyb20gTWFyayBQaWxncmltJ3MgVW5pdmVyc2FsIEZlZWQg
UGFyc2VyLgotCi1Gb3IgbW9yZSB0aGFuIHlvdSBldmVyIHdhbnRlZCB0byBrbm93IGFib3V0IEJl
YXV0aWZ1bCBTb3VwLCBzZWUgdGhlCi1kb2N1bWVudGF0aW9uOgotaHR0cDovL3d3dy5jcnVtbXku
Y29tL3NvZnR3YXJlL0JlYXV0aWZ1bFNvdXAvZG9jdW1lbnRhdGlvbi5odG1sCi0KLUhlcmUsIGhh
dmUgc29tZSBsZWdhbGVzZToKLQotQ29weXJpZ2h0IChjKSAyMDA0LTIwMTAsIExlb25hcmQgUmlj
aGFyZHNvbgotCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLW1ldDoKLQotICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotCi0gICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICAgIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
Ci0gICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0gICogTmVpdGhlciB0aGUgbmFtZSBvZiB0
aGUgdGhlIEJlYXV0aWZ1bCBTb3VwIENvbnNvcnRpdW0gYW5kIEFsbAotICAgIE5pZ2h0IEtvc2hl
ciBCYWtlcnkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZQotICAgIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3
YXJlCi0gICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi1D
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKLUVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcKLU5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UsIERBTU1JVC4KLQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1w
b3J0IGdlbmVyYXRvcnMKLQotX19hdXRob3JfXyA9ICJMZW9uYXJkIFJpY2hhcmRzb24gKGxlb25h
cmRyQHNlZ2ZhdWx0Lm9yZykiCi1fX3ZlcnNpb25fXyA9ICIzLjIuMCIKLV9fY29weXJpZ2h0X18g
PSAiQ29weXJpZ2h0IChjKSAyMDA0LTIwMTAgTGVvbmFyZCBSaWNoYXJkc29uIgotX19saWNlbnNl
X18gPSAiTmV3LXN0eWxlIEJTRCIKLQotZnJvbSBzZ21sbGliIGltcG9ydCBTR01MUGFyc2VyLCBT
R01MUGFyc2VFcnJvcgotaW1wb3J0IGNvZGVjcwotaW1wb3J0IG1hcmt1cGJhc2UKLWltcG9ydCB0
eXBlcwotaW1wb3J0IHJlCi1pbXBvcnQgc2dtbGxpYgotdHJ5OgotICBmcm9tIGh0bWxlbnRpdHlk
ZWZzIGltcG9ydCBuYW1lMmNvZGVwb2ludAotZXhjZXB0IEltcG9ydEVycm9yOgotICBuYW1lMmNv
ZGVwb2ludCA9IHt9Ci10cnk6Ci0gICAgc2V0Ci1leGNlcHQgTmFtZUVycm9yOgotICAgIGZyb20g
c2V0cyBpbXBvcnQgU2V0IGFzIHNldAotCi0jVGhlc2UgaGFja3MgbWFrZSBCZWF1dGlmdWwgU291
cCBhYmxlIHRvIHBhcnNlIFhNTCB3aXRoIG5hbWVzcGFjZXMKLXNnbWxsaWIudGFnZmluZCA9IHJl
LmNvbXBpbGUoJ1thLXpBLVpdWy1fLjphLXpBLVowLTldKicpCi1tYXJrdXBiYXNlLl9kZWNsbmFt
ZV9tYXRjaCA9IHJlLmNvbXBpbGUocidbYS16QS1aXVstXy46YS16QS1aMC05XSpccyonKS5tYXRj
aAotCi1ERUZBVUxUX09VVFBVVF9FTkNPRElORyA9ICJ1dGYtOCIKLQotZGVmIF9tYXRjaF9jc3Nf
Y2xhc3Moc3RyKToKLSAgICAiIiJCdWlsZCBhIFJFIHRvIG1hdGNoIHRoZSBnaXZlbiBDU1MgY2xh
c3MuIiIiCi0gICAgcmV0dXJuIHJlLmNvbXBpbGUociIoXnwuKlxzKSVzKCR8XHMpIiAlIHN0cikK
LQotIyBGaXJzdCwgdGhlIGNsYXNzZXMgdGhhdCByZXByZXNlbnQgbWFya3VwIGVsZW1lbnRzLgot
Ci1jbGFzcyBQYWdlRWxlbWVudChvYmplY3QpOgotICAgICIiIkNvbnRhaW5zIHRoZSBuYXZpZ2F0
aW9uYWwgaW5mb3JtYXRpb24gZm9yIHNvbWUgcGFydCBvZiB0aGUgcGFnZQotICAgIChlaXRoZXIg
YSB0YWcgb3IgYSBwaWVjZSBvZiB0ZXh0KSIiIgotCi0gICAgZGVmIHNldHVwKHNlbGYsIHBhcmVu
dD1Ob25lLCBwcmV2aW91cz1Ob25lKToKLSAgICAgICAgIiIiU2V0cyB1cCB0aGUgaW5pdGlhbCBy
ZWxhdGlvbnMgYmV0d2VlbiB0aGlzIGVsZW1lbnQgYW5kCi0gICAgICAgIG90aGVyIGVsZW1lbnRz
LiIiIgotICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLnByZXZpb3Vz
ID0gcHJldmlvdXMKLSAgICAgICAgc2VsZi5uZXh0ID0gTm9uZQotICAgICAgICBzZWxmLnByZXZp
b3VzU2libGluZyA9IE5vbmUKLSAgICAgICAgc2VsZi5uZXh0U2libGluZyA9IE5vbmUKLSAgICAg
ICAgaWYgc2VsZi5wYXJlbnQgYW5kIHNlbGYucGFyZW50LmNvbnRlbnRzOgotICAgICAgICAgICAg
c2VsZi5wcmV2aW91c1NpYmxpbmcgPSBzZWxmLnBhcmVudC5jb250ZW50c1stMV0KLSAgICAgICAg
ICAgIHNlbGYucHJldmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nID0gc2VsZgotCi0gICAgZGVmIHJl
cGxhY2VXaXRoKHNlbGYsIHJlcGxhY2VXaXRoKToKLSAgICAgICAgb2xkUGFyZW50ID0gc2VsZi5w
YXJlbnQKLSAgICAgICAgbXlJbmRleCA9IHNlbGYucGFyZW50LmluZGV4KHNlbGYpCi0gICAgICAg
IGlmIGhhc2F0dHIocmVwbGFjZVdpdGgsICJwYXJlbnQiKVwKLSAgICAgICAgICAgICAgICAgIGFu
ZCByZXBsYWNlV2l0aC5wYXJlbnQgaXMgc2VsZi5wYXJlbnQ6Ci0gICAgICAgICAgICAjIFdlJ3Jl
IHJlcGxhY2luZyB0aGlzIGVsZW1lbnQgd2l0aCBvbmUgb2YgaXRzIHNpYmxpbmdzLgotICAgICAg
ICAgICAgaW5kZXggPSByZXBsYWNlV2l0aC5wYXJlbnQuaW5kZXgocmVwbGFjZVdpdGgpCi0gICAg
ICAgICAgICBpZiBpbmRleCBhbmQgaW5kZXggPCBteUluZGV4OgotICAgICAgICAgICAgICAgICMg
RnVydGhlcm1vcmUsIGl0IGNvbWVzIGJlZm9yZSB0aGlzIGVsZW1lbnQuIFRoYXQKLSAgICAgICAg
ICAgICAgICAjIG1lYW5zIHRoYXQgd2hlbiB3ZSBleHRyYWN0IGl0LCB0aGUgaW5kZXggb2YgdGhp
cwotICAgICAgICAgICAgICAgICMgZWxlbWVudCB3aWxsIGNoYW5nZS4KLSAgICAgICAgICAgICAg
ICBteUluZGV4ID0gbXlJbmRleCAtIDEKLSAgICAgICAgc2VsZi5leHRyYWN0KCkKLSAgICAgICAg
b2xkUGFyZW50Lmluc2VydChteUluZGV4LCByZXBsYWNlV2l0aCkKLQotICAgIGRlZiByZXBsYWNl
V2l0aENoaWxkcmVuKHNlbGYpOgotICAgICAgICBteVBhcmVudCA9IHNlbGYucGFyZW50Ci0gICAg
ICAgIG15SW5kZXggPSBzZWxmLnBhcmVudC5pbmRleChzZWxmKQotICAgICAgICBzZWxmLmV4dHJh
Y3QoKQotICAgICAgICByZXZlcnNlZENoaWxkcmVuID0gbGlzdChzZWxmLmNvbnRlbnRzKQotICAg
ICAgICByZXZlcnNlZENoaWxkcmVuLnJldmVyc2UoKQotICAgICAgICBmb3IgY2hpbGQgaW4gcmV2
ZXJzZWRDaGlsZHJlbjoKLSAgICAgICAgICAgIG15UGFyZW50Lmluc2VydChteUluZGV4LCBjaGls
ZCkKLQotICAgIGRlZiBleHRyYWN0KHNlbGYpOgotICAgICAgICAiIiJEZXN0cnVjdGl2ZWx5IHJp
cHMgdGhpcyBlbGVtZW50IG91dCBvZiB0aGUgdHJlZS4iIiIKLSAgICAgICAgaWYgc2VsZi5wYXJl
bnQ6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYucGFyZW50LmNv
bnRlbnRzW3NlbGYucGFyZW50LmluZGV4KHNlbGYpXQotICAgICAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgICNGaW5kIHRoZSB0d28gZWxl
bWVudHMgdGhhdCB3b3VsZCBiZSBuZXh0IHRvIGVhY2ggb3RoZXIgaWYKLSAgICAgICAgI3RoaXMg
ZWxlbWVudCAoYW5kIGFueSBjaGlsZHJlbikgaGFkbid0IGJlZW4gcGFyc2VkLiBDb25uZWN0Ci0g
ICAgICAgICN0aGUgdHdvLgotICAgICAgICBsYXN0Q2hpbGQgPSBzZWxmLl9sYXN0UmVjdXJzaXZl
Q2hpbGQoKQotICAgICAgICBuZXh0RWxlbWVudCA9IGxhc3RDaGlsZC5uZXh0Ci0KLSAgICAgICAg
aWYgc2VsZi5wcmV2aW91czoKLSAgICAgICAgICAgIHNlbGYucHJldmlvdXMubmV4dCA9IG5leHRF
bGVtZW50Ci0gICAgICAgIGlmIG5leHRFbGVtZW50OgotICAgICAgICAgICAgbmV4dEVsZW1lbnQu
cHJldmlvdXMgPSBzZWxmLnByZXZpb3VzCi0gICAgICAgIHNlbGYucHJldmlvdXMgPSBOb25lCi0g
ICAgICAgIGxhc3RDaGlsZC5uZXh0ID0gTm9uZQotCi0gICAgICAgIHNlbGYucGFyZW50ID0gTm9u
ZQotICAgICAgICBpZiBzZWxmLnByZXZpb3VzU2libGluZzoKLSAgICAgICAgICAgIHNlbGYucHJl
dmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nID0gc2VsZi5uZXh0U2libGluZwotICAgICAgICBpZiBz
ZWxmLm5leHRTaWJsaW5nOgotICAgICAgICAgICAgc2VsZi5uZXh0U2libGluZy5wcmV2aW91c1Np
YmxpbmcgPSBzZWxmLnByZXZpb3VzU2libGluZwotICAgICAgICBzZWxmLnByZXZpb3VzU2libGlu
ZyA9IHNlbGYubmV4dFNpYmxpbmcgPSBOb25lCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBk
ZWYgX2xhc3RSZWN1cnNpdmVDaGlsZChzZWxmKToKLSAgICAgICAgIkZpbmRzIHRoZSBsYXN0IGVs
ZW1lbnQgYmVuZWF0aCB0aGlzIG9iamVjdCB0byBiZSBwYXJzZWQuIgotICAgICAgICBsYXN0Q2hp
bGQgPSBzZWxmCi0gICAgICAgIHdoaWxlIGhhc2F0dHIobGFzdENoaWxkLCAnY29udGVudHMnKSBh
bmQgbGFzdENoaWxkLmNvbnRlbnRzOgotICAgICAgICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxk
LmNvbnRlbnRzWy0xXQotICAgICAgICByZXR1cm4gbGFzdENoaWxkCi0KLSAgICBkZWYgaW5zZXJ0
KHNlbGYsIHBvc2l0aW9uLCBuZXdDaGlsZCk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobmV3Q2hp
bGQsIGJhc2VzdHJpbmcpIFwKLSAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShuZXdDaGls
ZCwgTmF2aWdhYmxlU3RyaW5nKToKLSAgICAgICAgICAgIG5ld0NoaWxkID0gTmF2aWdhYmxlU3Ry
aW5nKG5ld0NoaWxkKQotCi0gICAgICAgIHBvc2l0aW9uID0gIG1pbihwb3NpdGlvbiwgbGVuKHNl
bGYuY29udGVudHMpKQotICAgICAgICBpZiBoYXNhdHRyKG5ld0NoaWxkLCAncGFyZW50JykgYW5k
IG5ld0NoaWxkLnBhcmVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgV2UncmUgJ2luc2Vy
dGluZycgYW4gZWxlbWVudCB0aGF0J3MgYWxyZWFkeSBvbmUKLSAgICAgICAgICAgICMgb2YgdGhp
cyBvYmplY3QncyBjaGlsZHJlbi4KLSAgICAgICAgICAgIGlmIG5ld0NoaWxkLnBhcmVudCBpcyBz
ZWxmOgotICAgICAgICAgICAgICAgIGluZGV4ID0gc2VsZi5pbmRleChuZXdDaGlsZCkKLSAgICAg
ICAgICAgICAgICBpZiBpbmRleCA+IHBvc2l0aW9uOgotICAgICAgICAgICAgICAgICAgICAjIEZ1
cnRoZXJtb3JlIHdlJ3JlIG1vdmluZyBpdCBmdXJ0aGVyIGRvd24gdGhlCi0gICAgICAgICAgICAg
ICAgICAgICMgbGlzdCBvZiB0aGlzIG9iamVjdCdzIGNoaWxkcmVuLiBUaGF0IG1lYW5zIHRoYXQK
LSAgICAgICAgICAgICAgICAgICAgIyB3aGVuIHdlIGV4dHJhY3QgdGhpcyBlbGVtZW50LCBvdXIg
dGFyZ2V0IGluZGV4Ci0gICAgICAgICAgICAgICAgICAgICMgd2lsbCBqdW1wIGRvd24gb25lLgot
ICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uIC0gMQotICAgICAgICAgICAg
bmV3Q2hpbGQuZXh0cmFjdCgpCi0KLSAgICAgICAgbmV3Q2hpbGQucGFyZW50ID0gc2VsZgotICAg
ICAgICBwcmV2aW91c0NoaWxkID0gTm9uZQotICAgICAgICBpZiBwb3NpdGlvbiA9PSAwOgotICAg
ICAgICAgICAgbmV3Q2hpbGQucHJldmlvdXNTaWJsaW5nID0gTm9uZQotICAgICAgICAgICAgbmV3
Q2hpbGQucHJldmlvdXMgPSBzZWxmCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmV2aW91
c0NoaWxkID0gc2VsZi5jb250ZW50c1twb3NpdGlvbi0xXQotICAgICAgICAgICAgbmV3Q2hpbGQu
cHJldmlvdXNTaWJsaW5nID0gcHJldmlvdXNDaGlsZAotICAgICAgICAgICAgbmV3Q2hpbGQucHJl
dmlvdXNTaWJsaW5nLm5leHRTaWJsaW5nID0gbmV3Q2hpbGQKLSAgICAgICAgICAgIG5ld0NoaWxk
LnByZXZpb3VzID0gcHJldmlvdXNDaGlsZC5fbGFzdFJlY3Vyc2l2ZUNoaWxkKCkKLSAgICAgICAg
aWYgbmV3Q2hpbGQucHJldmlvdXM6Ci0gICAgICAgICAgICBuZXdDaGlsZC5wcmV2aW91cy5uZXh0
ID0gbmV3Q2hpbGQKLQotICAgICAgICBuZXdDaGlsZHNMYXN0RWxlbWVudCA9IG5ld0NoaWxkLl9s
YXN0UmVjdXJzaXZlQ2hpbGQoKQotCi0gICAgICAgIGlmIHBvc2l0aW9uID49IGxlbihzZWxmLmNv
bnRlbnRzKToKLSAgICAgICAgICAgIG5ld0NoaWxkLm5leHRTaWJsaW5nID0gTm9uZQotCi0gICAg
ICAgICAgICBwYXJlbnQgPSBzZWxmCi0gICAgICAgICAgICBwYXJlbnRzTmV4dFNpYmxpbmcgPSBO
b25lCi0gICAgICAgICAgICB3aGlsZSBub3QgcGFyZW50c05leHRTaWJsaW5nOgotICAgICAgICAg
ICAgICAgIHBhcmVudHNOZXh0U2libGluZyA9IHBhcmVudC5uZXh0U2libGluZwotICAgICAgICAg
ICAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQKLSAgICAgICAgICAgICAgICBpZiBub3QgcGFy
ZW50OiAjIFRoaXMgaXMgdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBwYXJlbnRzTmV4dFNpYmxpbmc6Ci0g
ICAgICAgICAgICAgICAgbmV3Q2hpbGRzTGFzdEVsZW1lbnQubmV4dCA9IHBhcmVudHNOZXh0U2li
bGluZwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdDaGlsZHNMYXN0RWxl
bWVudC5uZXh0ID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV4dENoaWxkID0g
c2VsZi5jb250ZW50c1twb3NpdGlvbl0KLSAgICAgICAgICAgIG5ld0NoaWxkLm5leHRTaWJsaW5n
ID0gbmV4dENoaWxkCi0gICAgICAgICAgICBpZiBuZXdDaGlsZC5uZXh0U2libGluZzoKLSAgICAg
ICAgICAgICAgICBuZXdDaGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBuZXdDaGls
ZAotICAgICAgICAgICAgbmV3Q2hpbGRzTGFzdEVsZW1lbnQubmV4dCA9IG5leHRDaGlsZAotCi0g
ICAgICAgIGlmIG5ld0NoaWxkc0xhc3RFbGVtZW50Lm5leHQ6Ci0gICAgICAgICAgICBuZXdDaGls
ZHNMYXN0RWxlbWVudC5uZXh0LnByZXZpb3VzID0gbmV3Q2hpbGRzTGFzdEVsZW1lbnQKLSAgICAg
ICAgc2VsZi5jb250ZW50cy5pbnNlcnQocG9zaXRpb24sIG5ld0NoaWxkKQotCi0gICAgZGVmIGFw
cGVuZChzZWxmLCB0YWcpOgotICAgICAgICAiIiJBcHBlbmRzIHRoZSBnaXZlbiB0YWcgdG8gdGhl
IGNvbnRlbnRzIG9mIHRoaXMgdGFnLiIiIgotICAgICAgICBzZWxmLmluc2VydChsZW4oc2VsZi5j
b250ZW50cyksIHRhZykKLQotICAgIGRlZiBmaW5kTmV4dChzZWxmLCBuYW1lPU5vbmUsIGF0dHJz
PXt9LCB0ZXh0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZmlyc3Qg
aXRlbSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIGNyaXRlcmlhIGFuZAotICAgICAgICBhcHBlYXJz
IGFmdGVyIHRoaXMgVGFnIGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbmRPbmUoc2VsZi5maW5kQWxsTmV4dCwgbmFtZSwgYXR0cnMsIHRleHQsICoqa3dhcmdzKQot
Ci0gICAgZGVmIGZpbmRBbGxOZXh0KHNlbGYsIG5hbWU9Tm9uZSwgYXR0cnM9e30sIHRleHQ9Tm9u
ZSwgbGltaXQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICAi
IiJSZXR1cm5zIGFsbCBpdGVtcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjcml0ZXJpYSBhbmQgYXBw
ZWFyCi0gICAgICAgIGFmdGVyIHRoaXMgVGFnIGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbmRBbGwobmFtZSwgYXR0cnMsIHRleHQsIGxpbWl0LCBzZWxmLm5leHRH
ZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQotCi0gICAg
ZGVmIGZpbmROZXh0U2libGluZyhzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5vbmUs
ICoqa3dhcmdzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgY2xvc2VzdCBzaWJsaW5nIHRvIHRo
aXMgVGFnIHRoYXQgbWF0Y2hlcyB0aGUKLSAgICAgICAgZ2l2ZW4gY3JpdGVyaWEgYW5kIGFwcGVh
cnMgYWZ0ZXIgdGhpcyBUYWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZmluZE9uZShzZWxmLmZpbmROZXh0U2libGluZ3MsIG5hbWUsIGF0dHJzLCB0ZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKLQotICAgIGRlZiBmaW5kTmV4dFNp
YmxpbmdzKHNlbGYsIG5hbWU9Tm9uZSwgYXR0cnM9e30sIHRleHQ9Tm9uZSwgbGltaXQ9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJldHVybnMg
dGhlIHNpYmxpbmdzIG9mIHRoaXMgVGFnIHRoYXQgbWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNy
aXRlcmlhIGFuZCBhcHBlYXIgYWZ0ZXIgdGhpcyBUYWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5fZmluZEFsbChuYW1lLCBhdHRycywgdGV4dCwgbGltaXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubmV4dFNpYmxpbmdHZW5lcmF0b3IsICoqa3dh
cmdzKQotICAgIGZldGNoTmV4dFNpYmxpbmdzID0gZmluZE5leHRTaWJsaW5ncyAjIENvbXBhdGli
aWxpdHkgd2l0aCBwcmUtMy54Ci0KLSAgICBkZWYgZmluZFByZXZpb3VzKHNlbGYsIG5hbWU9Tm9u
ZSwgYXR0cnM9e30sIHRleHQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIHRo
ZSBmaXJzdCBpdGVtIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gY3JpdGVyaWEgYW5kCi0gICAgICAg
IGFwcGVhcnMgYmVmb3JlIHRoaXMgVGFnIGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAgcmV0
dXJuIHNlbGYuX2ZpbmRPbmUoc2VsZi5maW5kQWxsUHJldmlvdXMsIG5hbWUsIGF0dHJzLCB0ZXh0
LCAqKmt3YXJncykKLQotICAgIGRlZiBmaW5kQWxsUHJldmlvdXMoc2VsZiwgbmFtZT1Ob25lLCBh
dHRycz17fSwgdGV4dD1Ob25lLCBsaW1pdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAg
Kiprd2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIGFsbCBpdGVtcyB0aGF0IG1hdGNoIHRoZSBn
aXZlbiBjcml0ZXJpYSBhbmQgYXBwZWFyCi0gICAgICAgIGJlZm9yZSB0aGlzIFRhZyBpbiB0aGUg
ZG9jdW1lbnQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9maW5kQWxsKG5hbWUsIGF0dHJzLCB0
ZXh0LCBsaW1pdCwgc2VsZi5wcmV2aW91c0dlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICoqa3dhcmdzKQotICAgIGZldGNoUHJldmlvdXMgPSBmaW5kQWxsUHJldmlvdXMgIyBD
b21wYXRpYmlsaXR5IHdpdGggcHJlLTMueAotCi0gICAgZGVmIGZpbmRQcmV2aW91c1NpYmxpbmco
c2VsZiwgbmFtZT1Ob25lLCBhdHRycz17fSwgdGV4dD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAg
ICIiIlJldHVybnMgdGhlIGNsb3Nlc3Qgc2libGluZyB0byB0aGlzIFRhZyB0aGF0IG1hdGNoZXMg
dGhlCi0gICAgICAgIGdpdmVuIGNyaXRlcmlhIGFuZCBhcHBlYXJzIGJlZm9yZSB0aGlzIFRhZyBp
biB0aGUgZG9jdW1lbnQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9maW5kT25lKHNlbGYuZmlu
ZFByZXZpb3VzU2libGluZ3MsIG5hbWUsIGF0dHJzLCB0ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncykKLQotICAgIGRlZiBmaW5kUHJldmlvdXNTaWJsaW5ncyhzZWxm
LCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc2li
bGluZ3Mgb2YgdGhpcyBUYWcgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4KLSAgICAgICAgY3JpdGVyaWEg
YW5kIGFwcGVhciBiZWZvcmUgdGhpcyBUYWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAgICAgICBy
ZXR1cm4gc2VsZi5fZmluZEFsbChuYW1lLCBhdHRycywgdGV4dCwgbGltaXQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nR2VuZXJhdG9yLCAqKmt3YXJn
cykKLSAgICBmZXRjaFByZXZpb3VzU2libGluZ3MgPSBmaW5kUHJldmlvdXNTaWJsaW5ncyAjIENv
bXBhdGliaWxpdHkgd2l0aCBwcmUtMy54Ci0KLSAgICBkZWYgZmluZFBhcmVudChzZWxmLCBuYW1l
PU5vbmUsIGF0dHJzPXt9LCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGNsb3Nl
c3QgcGFyZW50IG9mIHRoaXMgVGFnIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4KLSAgICAgICAgY3Jp
dGVyaWEuIiIiCi0gICAgICAgICMgTk9URTogV2UgY2FuJ3QgdXNlIF9maW5kT25lIGJlY2F1c2Ug
ZmluZFBhcmVudHMgdGFrZXMgYSBkaWZmZXJlbnQKLSAgICAgICAgIyBzZXQgb2YgYXJndW1lbnRz
LgotICAgICAgICByID0gTm9uZQotICAgICAgICBsID0gc2VsZi5maW5kUGFyZW50cyhuYW1lLCBh
dHRycywgMSkKLSAgICAgICAgaWYgbDoKLSAgICAgICAgICAgIHIgPSBsWzBdCi0gICAgICAgIHJl
dHVybiByCi0KLSAgICBkZWYgZmluZFBhcmVudHMoc2VsZiwgbmFtZT1Ob25lLCBhdHRycz17fSwg
bGltaXQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBwYXJlbnRzIG9m
IHRoaXMgVGFnIHRoYXQgbWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhLiIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9maW5kQWxsKG5hbWUsIGF0dHJzLCBOb25lLCBsaW1pdCwgc2Vs
Zi5wYXJlbnRHZW5lcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdz
KQotICAgIGZldGNoUGFyZW50cyA9IGZpbmRQYXJlbnRzICMgQ29tcGF0aWJpbGl0eSB3aXRoIHBy
ZS0zLngKLQotICAgICNUaGVzZSBtZXRob2RzIGRvIHRoZSByZWFsIGhlYXZ5IGxpZnRpbmcuCi0K
LSAgICBkZWYgX2ZpbmRPbmUoc2VsZiwgbWV0aG9kLCBuYW1lLCBhdHRycywgdGV4dCwgKiprd2Fy
Z3MpOgotICAgICAgICByID0gTm9uZQotICAgICAgICBsID0gbWV0aG9kKG5hbWUsIGF0dHJzLCB0
ZXh0LCAxLCAqKmt3YXJncykKLSAgICAgICAgaWYgbDoKLSAgICAgICAgICAgIHIgPSBsWzBdCi0g
ICAgICAgIHJldHVybiByCi0KLSAgICBkZWYgX2ZpbmRBbGwoc2VsZiwgbmFtZSwgYXR0cnMsIHRl
eHQsIGxpbWl0LCBnZW5lcmF0b3IsICoqa3dhcmdzKToKLSAgICAgICAgIkl0ZXJhdGVzIG92ZXIg
YSBnZW5lcmF0b3IgbG9va2luZyBmb3IgdGhpbmdzIHRoYXQgbWF0Y2guIgotCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UobmFtZSwgU291cFN0cmFpbmVyKToKLSAgICAgICAgICAgIHN0cmFpbmVyID0g
bmFtZQotICAgICAgICAjIChQb3NzaWJseSkgc3BlY2lhbCBjYXNlIHNvbWUgZmluZEFsbCooLi4u
KSBzZWFyY2hlcwotICAgICAgICBlbGlmIHRleHQgaXMgTm9uZSBhbmQgbm90IGxpbWl0IGFuZCBu
b3QgYXR0cnMgYW5kIG5vdCBrd2FyZ3M6Ci0gICAgICAgICAgICAjIGZpbmRBbGwqKFRydWUpCi0g
ICAgICAgICAgICBpZiBuYW1lIGlzIFRydWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtlbGVt
ZW50IGZvciBlbGVtZW50IGluIGdlbmVyYXRvcigpCi0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKGVsZW1lbnQsIFRhZyldCi0gICAgICAgICAgICAjIGZpbmRBbGwqKCd0YWct
bmFtZScpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobmFtZSwgYmFzZXN0cmluZyk6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIFtlbGVtZW50IGZvciBlbGVtZW50IGluIGdlbmVyYXRvcigp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVsZW1lbnQsIFRhZykgYW5k
Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm5hbWUgPT0gbmFtZV0KLSAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3RyYWluZXIgPSBTb3VwU3RyYWluZXIobmFtZSwg
YXR0cnMsIHRleHQsICoqa3dhcmdzKQotICAgICAgICAjIEJ1aWxkIGEgU291cFN0cmFpbmVyCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdHJhaW5lciA9IFNvdXBTdHJhaW5lcihuYW1lLCBh
dHRycywgdGV4dCwgKiprd2FyZ3MpCi0gICAgICAgIHJlc3VsdHMgPSBSZXN1bHRTZXQoc3RyYWlu
ZXIpCi0gICAgICAgIGcgPSBnZW5lcmF0b3IoKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGkgPSBnLm5leHQoKQotICAgICAgICAgICAgZXhj
ZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlm
IGk6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBzdHJhaW5lci5zZWFyY2goaSkKLSAgICAgICAg
ICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoZm91
bmQpCi0gICAgICAgICAgICAgICAgICAgIGlmIGxpbWl0IGFuZCBsZW4ocmVzdWx0cykgPj0gbGlt
aXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gcmVzdWx0
cwotCi0gICAgI1RoZXNlIEdlbmVyYXRvcnMgY2FuIGJlIHVzZWQgdG8gbmF2aWdhdGUgc3RhcnRp
bmcgZnJvbSBib3RoCi0gICAgI05hdmlnYWJsZVN0cmluZ3MgYW5kIFRhZ3MuCi0gICAgZGVmIG5l
eHRHZW5lcmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGkgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBpID0gaS5uZXh0Ci0gICAgICAgICAgICB5aWVsZCBpCi0K
LSAgICBkZWYgbmV4dFNpYmxpbmdHZW5lcmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0g
ICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpID0gaS5uZXh0U2libGlu
ZwotICAgICAgICAgICAgeWllbGQgaQotCi0gICAgZGVmIHByZXZpb3VzR2VuZXJhdG9yKHNlbGYp
OgotICAgICAgICBpID0gc2VsZgotICAgICAgICB3aGlsZSBpIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgaSA9IGkucHJldmlvdXMKLSAgICAgICAgICAgIHlpZWxkIGkKLQotICAgIGRlZiBwcmV2
aW91c1NpYmxpbmdHZW5lcmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdo
aWxlIGkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpID0gaS5wcmV2aW91c1NpYmxpbmcKLSAg
ICAgICAgICAgIHlpZWxkIGkKLQotICAgIGRlZiBwYXJlbnRHZW5lcmF0b3Ioc2VsZik6Ci0gICAg
ICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBp
ID0gaS5wYXJlbnQKLSAgICAgICAgICAgIHlpZWxkIGkKLQotICAgICMgVXRpbGl0eSBtZXRob2Rz
Ci0gICAgZGVmIHN1YnN0aXR1dGVFbmNvZGluZyhzZWxmLCBzdHIsIGVuY29kaW5nPU5vbmUpOgot
ICAgICAgICBlbmNvZGluZyA9IGVuY29kaW5nIG9yICJ1dGYtOCIKLSAgICAgICAgcmV0dXJuIHN0
ci5yZXBsYWNlKCIlU09VUC1FTkNPRElORyUiLCBlbmNvZGluZykKLQotICAgIGRlZiB0b0VuY29k
aW5nKHNlbGYsIHMsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICAiIiJFbmNvZGVzIGFuIG9iamVj
dCB0byBhIHN0cmluZyBpbiBzb21lIGVuY29kaW5nLCBvciB0byBVbmljb2RlLgotICAgICAgICAu
IiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UocywgdW5pY29kZSk6Ci0gICAgICAgICAgICBpZiBl
bmNvZGluZzoKLSAgICAgICAgICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcpCi0gICAgICAg
IGVsaWYgaXNpbnN0YW5jZShzLCBzdHIpOgotICAgICAgICAgICAgaWYgZW5jb2Rpbmc6Ci0gICAg
ICAgICAgICAgICAgcyA9IHMuZW5jb2RlKGVuY29kaW5nKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBzID0gdW5pY29kZShzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
aWYgZW5jb2Rpbmc6Ci0gICAgICAgICAgICAgICAgcyAgPSBzZWxmLnRvRW5jb2Rpbmcoc3RyKHMp
LCBlbmNvZGluZykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHVuaWNv
ZGUocykKLSAgICAgICAgcmV0dXJuIHMKLQotY2xhc3MgTmF2aWdhYmxlU3RyaW5nKHVuaWNvZGUs
IFBhZ2VFbGVtZW50KToKLQotICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUpOgotICAgICAgICAi
IiJDcmVhdGUgYSBuZXcgTmF2aWdhYmxlU3RyaW5nLgotCi0gICAgICAgIFdoZW4gdW5waWNrbGlu
ZyBhIE5hdmlnYWJsZVN0cmluZywgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdpdGgKLSAgICAgICAg
dGhlIHN0cmluZyBpbiBERUZBVUxUX09VVFBVVF9FTkNPRElORy4gVGhhdCBlbmNvZGluZyBuZWVk
cyB0byBiZQotICAgICAgICBwYXNzZWQgaW4gdG8gdGhlIHN1cGVyY2xhc3MncyBfX25ld19fIG9y
IHRoZSBzdXBlcmNsYXNzIHdvbid0IGtub3cKLSAgICAgICAgaG93IHRvIGhhbmRsZSBub24tQVND
SUkgY2hhcmFjdGVycy4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUs
IHVuaWNvZGUpOgotICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUuX19uZXdfXyhjbHMsIHZhbHVl
KQotICAgICAgICByZXR1cm4gdW5pY29kZS5fX25ld19fKGNscywgdmFsdWUsIERFRkFVTFRfT1VU
UFVUX0VOQ09ESU5HKQotCi0gICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gKE5hdmlnYWJsZVN0cmluZy5fX3N0cl9fKHNlbGYpLCkKLQotICAgIGRlZiBfX2dldGF0
dHJfXyhzZWxmLCBhdHRyKToKLSAgICAgICAgIiIidGV4dC5zdHJpbmcgZ2l2ZXMgeW91IHRleHQu
IFRoaXMgaXMgZm9yIGJhY2t3YXJkcwotICAgICAgICBjb21wYXRpYmlsaXR5IGZvciBOYXZpZ2Fi
bGUqU3RyaW5nLCBidXQgZm9yIENEYXRhKiBpdCBsZXRzIHlvdQotICAgICAgICBnZXQgdGhlIHN0
cmluZyB3aXRob3V0IHRoZSBDRGF0YSB3cmFwcGVyLiIiIgotICAgICAgICBpZiBhdHRyID09ICdz
dHJpbmcnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yLCAiJyVzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAn
JXMnIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgYXR0cikKLQotICAgIGRlZiBfX3VuaWNv
ZGVfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmKS5kZWNvZGUoREVGQVVMVF9PVVRQ
VVRfRU5DT0RJTkcpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09V
VFBVVF9FTkNPRElORyk6Ci0gICAgICAgIGlmIGVuY29kaW5nOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuZW5jb2RlKGVuY29kaW5nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYKLQotY2xhc3MgQ0RhdGEoTmF2aWdhYmxlU3RyaW5nKToKLQotICAgIGRlZiBfX3N0cl9f
KHNlbGYsIGVuY29kaW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKToKLSAgICAgICAgcmV0dXJu
ICI8IVtDREFUQVslc11dPiIgJSBOYXZpZ2FibGVTdHJpbmcuX19zdHJfXyhzZWxmLCBlbmNvZGlu
ZykKLQotY2xhc3MgUHJvY2Vzc2luZ0luc3RydWN0aW9uKE5hdmlnYWJsZVN0cmluZyk6Ci0gICAg
ZGVmIF9fc3RyX18oc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgotICAg
ICAgICBvdXRwdXQgPSBzZWxmCi0gICAgICAgIGlmICIlU09VUC1FTkNPRElORyUiIGluIG91dHB1
dDoKLSAgICAgICAgICAgIG91dHB1dCA9IHNlbGYuc3Vic3RpdHV0ZUVuY29kaW5nKG91dHB1dCwg
ZW5jb2RpbmcpCi0gICAgICAgIHJldHVybiAiPD8lcz8+IiAlIHNlbGYudG9FbmNvZGluZyhvdXRw
dXQsIGVuY29kaW5nKQotCi1jbGFzcyBDb21tZW50KE5hdmlnYWJsZVN0cmluZyk6Ci0gICAgZGVm
IF9fc3RyX18oc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgotICAgICAg
ICByZXR1cm4gIjwhLS0lcy0tPiIgJSBOYXZpZ2FibGVTdHJpbmcuX19zdHJfXyhzZWxmLCBlbmNv
ZGluZykKLQotY2xhc3MgRGVjbGFyYXRpb24oTmF2aWdhYmxlU3RyaW5nKToKLSAgICBkZWYgX19z
dHJfXyhzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElORyk6Ci0gICAgICAgIHJl
dHVybiAiPCElcz4iICUgTmF2aWdhYmxlU3RyaW5nLl9fc3RyX18oc2VsZiwgZW5jb2RpbmcpCi0K
LWNsYXNzIFRhZyhQYWdlRWxlbWVudCk6Ci0KLSAgICAiIiJSZXByZXNlbnRzIGEgZm91bmQgSFRN
TCB0YWcgd2l0aCBpdHMgYXR0cmlidXRlcyBhbmQgY29udGVudHMuIiIiCi0KLSAgICBkZWYgX2lu
dmVydChoKToKLSAgICAgICAgIkNoZWFwIGZ1bmN0aW9uIHRvIGludmVydCBhIGhhc2guIgotICAg
ICAgICBpID0ge30KLSAgICAgICAgZm9yIGssdiBpbiBoLml0ZW1zKCk6Ci0gICAgICAgICAgICBp
W3ZdID0gawotICAgICAgICByZXR1cm4gaQotCi0gICAgWE1MX0VOVElUSUVTX1RPX1NQRUNJQUxf
Q0hBUlMgPSB7ICJhcG9zIiA6ICInIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgInF1b3QiIDogJyInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiYW1wIiA6ICImIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImx0
IiA6ICI8IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd0IiA6ICI+
IiB9Ci0KLSAgICBYTUxfU1BFQ0lBTF9DSEFSU19UT19FTlRJVElFUyA9IF9pbnZlcnQoWE1MX0VO
VElUSUVTX1RPX1NQRUNJQUxfQ0hBUlMpCi0KLSAgICBkZWYgX2NvbnZlcnRFbnRpdGllcyhzZWxm
LCBtYXRjaCk6Ci0gICAgICAgICIiIlVzZWQgaW4gYSBjYWxsIHRvIHJlLnN1YiB0byByZXBsYWNl
IEhUTUwsIFhNTCwgYW5kIG51bWVyaWMKLSAgICAgICAgZW50aXRpZXMgd2l0aCB0aGUgYXBwcm9w
cmlhdGUgVW5pY29kZSBjaGFyYWN0ZXJzLiBJZiBIVE1MCi0gICAgICAgIGVudGl0aWVzIGFyZSBi
ZWluZyBjb252ZXJ0ZWQsIGFueSB1bnJlY29nbml6ZWQgZW50aXRpZXMgYXJlCi0gICAgICAgIGVz
Y2FwZWQuIiIiCi0gICAgICAgIHggPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBpZiBzZWxmLmNv
bnZlcnRIVE1MRW50aXRpZXMgYW5kIHggaW4gbmFtZTJjb2RlcG9pbnQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gdW5pY2hyKG5hbWUyY29kZXBvaW50W3hdKQotICAgICAgICBlbGlmIHggaW4gc2VsZi5Y
TUxfRU5USVRJRVNfVE9fU1BFQ0lBTF9DSEFSUzoKLSAgICAgICAgICAgIGlmIHNlbGYuY29udmVy
dFhNTEVudGl0aWVzOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLlhNTF9FTlRJVElFU19U
T19TUEVDSUFMX0NIQVJTW3hdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJl
dHVybiB1JyYlczsnICUgeAotICAgICAgICBlbGlmIGxlbih4KSA+IDAgYW5kIHhbMF0gPT0gJyMn
OgotICAgICAgICAgICAgIyBIYW5kbGUgbnVtZXJpYyBlbnRpdGllcwotICAgICAgICAgICAgaWYg
bGVuKHgpID4gMSBhbmQgeFsxXSA9PSAneCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNo
cihpbnQoeFsyOl0sIDE2KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHVuaWNocihpbnQoeFsxOl0pKQotCi0gICAgICAgIGVsaWYgc2VsZi5lc2NhcGVVbnJlY29n
bml6ZWRFbnRpdGllczoKLSAgICAgICAgICAgIHJldHVybiB1JyZhbXA7JXM7JyAlIHgKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB1JyYlczsnICUgeAotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBhcnNlciwgbmFtZSwgYXR0cnM9Tm9uZSwgcGFyZW50PU5vbmUsCi0gICAgICAg
ICAgICAgICAgIHByZXZpb3VzPU5vbmUpOgotICAgICAgICAiQmFzaWMgY29uc3RydWN0b3IuIgot
Ci0gICAgICAgICMgV2UgZG9uJ3QgYWN0dWFsbHkgc3RvcmUgdGhlIHBhcnNlciBvYmplY3Q6IHRo
YXQgbGV0cyBleHRyYWN0ZWQKLSAgICAgICAgIyBjaHVua3MgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQK
LSAgICAgICAgc2VsZi5wYXJzZXJDbGFzcyA9IHBhcnNlci5fX2NsYXNzX18KLSAgICAgICAgc2Vs
Zi5pc1NlbGZDbG9zaW5nID0gcGFyc2VyLmlzU2VsZkNsb3NpbmdUYWcobmFtZSkKLSAgICAgICAg
c2VsZi5uYW1lID0gbmFtZQotICAgICAgICBpZiBhdHRycyBpcyBOb25lOgotICAgICAgICAgICAg
YXR0cnMgPSBbXQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYXR0cnMsIGRpY3QpOgotICAgICAg
ICAgICAgYXR0cnMgPSBhdHRycy5pdGVtcygpCi0gICAgICAgIHNlbGYuYXR0cnMgPSBhdHRycwot
ICAgICAgICBzZWxmLmNvbnRlbnRzID0gW10KLSAgICAgICAgc2VsZi5zZXR1cChwYXJlbnQsIHBy
ZXZpb3VzKQotICAgICAgICBzZWxmLmhpZGRlbiA9IEZhbHNlCi0gICAgICAgIHNlbGYuY29udGFp
bnNTdWJzdGl0dXRpb25zID0gRmFsc2UKLSAgICAgICAgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVz
ID0gcGFyc2VyLmNvbnZlcnRIVE1MRW50aXRpZXMKLSAgICAgICAgc2VsZi5jb252ZXJ0WE1MRW50
aXRpZXMgPSBwYXJzZXIuY29udmVydFhNTEVudGl0aWVzCi0gICAgICAgIHNlbGYuZXNjYXBlVW5y
ZWNvZ25pemVkRW50aXRpZXMgPSBwYXJzZXIuZXNjYXBlVW5yZWNvZ25pemVkRW50aXRpZXMKLQot
ICAgICAgICAjIENvbnZlcnQgYW55IEhUTUwsIFhNTCwgb3IgbnVtZXJpYyBlbnRpdGllcyBpbiB0
aGUgYXR0cmlidXRlIHZhbHVlcy4KLSAgICAgICAgY29udmVydCA9IGxhbWJkYShrLCB2YWwpOiAo
aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmUuc3ViKCImKCNcZCt8I3hb
MC05YS1mQS1GXSt8XHcrKTsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fY29udmVydEVudGl0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdmFsKSkKLSAgICAgICAgc2VsZi5hdHRycyA9IG1hcChjb252ZXJ0LCBz
ZWxmLmF0dHJzKQotCi0gICAgZGVmIGdldFN0cmluZyhzZWxmKToKLSAgICAgICAgaWYgKGxlbihz
ZWxmLmNvbnRlbnRzKSA9PSAxCi0gICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShzZWxmLmNvbnRl
bnRzWzBdLCBOYXZpZ2FibGVTdHJpbmcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbnRl
bnRzWzBdCi0KLSAgICBkZWYgc2V0U3RyaW5nKHNlbGYsIHN0cmluZyk6Ci0gICAgICAgICIiIlJl
cGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWcgd2l0aCBhIHN0cmluZyIiIgotICAgICAgICBz
ZWxmLmNsZWFyKCkKLSAgICAgICAgc2VsZi5hcHBlbmQoc3RyaW5nKQotCi0gICAgc3RyaW5nID0g
cHJvcGVydHkoZ2V0U3RyaW5nLCBzZXRTdHJpbmcpCi0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBz
ZXBhcmF0b3I9dSIiKToKLSAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbnRlbnRzKToKLSAgICAg
ICAgICAgIHJldHVybiB1IiIKLSAgICAgICAgc3RvcE5vZGUgPSBzZWxmLl9sYXN0UmVjdXJzaXZl
Q2hpbGQoKS5uZXh0Ci0gICAgICAgIHN0cmluZ3MgPSBbXQotICAgICAgICBjdXJyZW50ID0gc2Vs
Zi5jb250ZW50c1swXQotICAgICAgICB3aGlsZSBjdXJyZW50IGlzIG5vdCBzdG9wTm9kZToKLSAg
ICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY3VycmVudCwgTmF2aWdhYmxlU3RyaW5nKToKLSAgICAg
ICAgICAgICAgICBzdHJpbmdzLmFwcGVuZChjdXJyZW50LnN0cmlwKCkpCi0gICAgICAgICAgICBj
dXJyZW50ID0gY3VycmVudC5uZXh0Ci0gICAgICAgIHJldHVybiBzZXBhcmF0b3Iuam9pbihzdHJp
bmdzKQotCi0gICAgdGV4dCA9IHByb3BlcnR5KGdldFRleHQpCi0KLSAgICBkZWYgZ2V0KHNlbGYs
IGtleSwgZGVmYXVsdD1Ob25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhl
ICdrZXknIGF0dHJpYnV0ZSBmb3IgdGhlIHRhZywgb3IKLSAgICAgICAgdGhlIHZhbHVlIGdpdmVu
IGZvciAnZGVmYXVsdCcgaWYgaXQgZG9lc24ndCBoYXZlIHRoYXQKLSAgICAgICAgYXR0cmlidXRl
LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgpLmdldChrZXksIGRlZmF1bHQp
Ci0KLSAgICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAgICIiIkV4dHJhY3QgYWxsIGNoaWxkcmVu
LiIiIgotICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jb250ZW50c1s6XToKLSAgICAgICAgICAg
IGNoaWxkLmV4dHJhY3QoKQotCi0gICAgZGVmIGluZGV4KHNlbGYsIGVsZW1lbnQpOgotICAgICAg
ICBmb3IgaSwgY2hpbGQgaW4gZW51bWVyYXRlKHNlbGYuY29udGVudHMpOgotICAgICAgICAgICAg
aWYgY2hpbGQgaXMgZWxlbWVudDoKLSAgICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJUYWcuaW5kZXg6IGVsZW1lbnQgbm90IGluIHRhZyIpCi0KLSAgICBk
ZWYgaGFzX2tleShzZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgp
Lmhhc19rZXkoa2V5KQotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAg
ICIiInRhZ1trZXldIHJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAna2V5JyBhdHRyaWJ1dGUgZm9y
IHRoZSB0YWcsCi0gICAgICAgIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0J3Mgbm90IHRo
ZXJlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgpW2tleV0KLQotICAgIGRl
ZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgIkl0ZXJhdGluZyBvdmVyIGEgdGFnIGl0ZXJhdGVz
IG92ZXIgaXRzIGNvbnRlbnRzLiIKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykK
LQotICAgIGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICAiVGhlIGxlbmd0aCBvZiBhIHRhZyBp
cyB0aGUgbGVuZ3RoIG9mIGl0cyBsaXN0IG9mIGNvbnRlbnRzLiIKLSAgICAgICAgcmV0dXJuIGxl
bihzZWxmLmNvbnRlbnRzKQotCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKLSAgICAg
ICAgcmV0dXJuIHggaW4gc2VsZi5jb250ZW50cwotCi0gICAgZGVmIF9fbm9uemVyb19fKHNlbGYp
OgotICAgICAgICAiQSB0YWcgaXMgbm9uLU5vbmUgZXZlbiBpZiBpdCBoYXMgbm8gY29udGVudHMu
IgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwg
dmFsdWUpOgotICAgICAgICAiIiJTZXR0aW5nIHRhZ1trZXldIHNldHMgdGhlIHZhbHVlIG9mIHRo
ZSAna2V5JyBhdHRyaWJ1dGUgZm9yIHRoZQotICAgICAgICB0YWcuIiIiCi0gICAgICAgIHNlbGYu
X2dldEF0dHJNYXAoKQotICAgICAgICBzZWxmLmF0dHJNYXBba2V5XSA9IHZhbHVlCi0gICAgICAg
IGZvdW5kID0gRmFsc2UKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHNlbGYuYXR0cnMp
KToKLSAgICAgICAgICAgIGlmIHNlbGYuYXR0cnNbaV1bMF0gPT0ga2V5OgotICAgICAgICAgICAg
ICAgIHNlbGYuYXR0cnNbaV0gPSAoa2V5LCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9
IFRydWUKLSAgICAgICAgaWYgbm90IGZvdW5kOgotICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBl
bmQoKGtleSwgdmFsdWUpKQotICAgICAgICBzZWxmLl9nZXRBdHRyTWFwKClba2V5XSA9IHZhbHVl
Ci0KLSAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIkRlbGV0aW5nIHRh
Z1trZXldIGRlbGV0ZXMgYWxsICdrZXknIGF0dHJpYnV0ZXMgZm9yIHRoZSB0YWcuIgotICAgICAg
ICBmb3IgaXRlbSBpbiBzZWxmLmF0dHJzOgotICAgICAgICAgICAgaWYgaXRlbVswXSA9PSBrZXk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5hdHRycy5yZW1vdmUoaXRlbSkKLSAgICAgICAgICAgICAg
ICAjV2UgZG9uJ3QgYnJlYWsgYmVjYXVzZSBiYWQgSFRNTCBjYW4gZGVmaW5lIHRoZSBzYW1lCi0g
ICAgICAgICAgICAgICAgI2F0dHJpYnV0ZSBtdWx0aXBsZSB0aW1lcy4KLSAgICAgICAgICAgIHNl
bGYuX2dldEF0dHJNYXAoKQotICAgICAgICAgICAgaWYgc2VsZi5hdHRyTWFwLmhhc19rZXkoa2V5
KToKLSAgICAgICAgICAgICAgICBkZWwgc2VsZi5hdHRyTWFwW2tleV0KLQotICAgIGRlZiBfX2Nh
bGxfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAiIiJDYWxsaW5nIGEgdGFnIGxp
a2UgYSBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcyBjYWxsaW5nIGl0cwotICAgICAgICBmaW5kQWxs
KCkgbWV0aG9kLiBFZy4gdGFnKCdhJykgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBBIHRhZ3MK
LSAgICAgICAgZm91bmQgd2l0aGluIHRoaXMgdGFnLiIiIgotICAgICAgICByZXR1cm4gYXBwbHko
c2VsZi5maW5kQWxsLCBhcmdzLCBrd2FyZ3MpCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwg
dGFnKToKLSAgICAgICAgI3ByaW50ICJHZXRhdHRyICVzLiVzIiAlIChzZWxmLl9fY2xhc3NfXywg
dGFnKQotICAgICAgICBpZiBsZW4odGFnKSA+IDMgYW5kIHRhZy5yZmluZCgnVGFnJykgPT0gbGVu
KHRhZyktMzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbmQodGFnWzotM10pCi0gICAgICAg
IGVsaWYgdGFnLmZpbmQoJ19fJykgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbmQo
dGFnKQotICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvciwgIiclcycgb2JqZWN0IGhhcyBubyBh
dHRyaWJ1dGUgJyVzJyIgJSAoc2VsZi5fX2NsYXNzX18sIHRhZykKLQotICAgIGRlZiBfX2VxX18o
c2VsZiwgb3RoZXIpOgotICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGFnIGhhcyB0
aGUgc2FtZSBuYW1lLCB0aGUgc2FtZSBhdHRyaWJ1dGVzLAotICAgICAgICBhbmQgdGhlIHNhbWUg
Y29udGVudHMgKHJlY3Vyc2l2ZWx5KSBhcyB0aGUgZ2l2ZW4gdGFnLgotCi0gICAgICAgIE5PVEU6
IHJpZ2h0IG5vdyB0aGlzIHdpbGwgcmV0dXJuIGZhbHNlIGlmIHR3byB0YWdzIGhhdmUgdGhlCi0g
ICAgICAgIHNhbWUgYXR0cmlidXRlcyBpbiBhIGRpZmZlcmVudCBvcmRlci4gU2hvdWxkIHRoaXMg
YmUgZml4ZWQ/IiIiCi0gICAgICAgIGlmIG90aGVyIGlzIHNlbGY6Ci0gICAgICAgICAgICByZXR1
cm4gVHJ1ZQotICAgICAgICBpZiBub3QgaGFzYXR0cihvdGhlciwgJ25hbWUnKSBvciBub3QgaGFz
YXR0cihvdGhlciwgJ2F0dHJzJykgb3Igbm90IGhhc2F0dHIob3RoZXIsICdjb250ZW50cycpIG9y
IHNlbGYubmFtZSAhPSBvdGhlci5uYW1lIG9yIHNlbGYuYXR0cnMgIT0gb3RoZXIuYXR0cnMgb3Ig
bGVuKHNlbGYpICE9IGxlbihvdGhlcik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHNlbGYuY29udGVudHMpKToKLSAgICAgICAgICAgIGlm
IHNlbGYuY29udGVudHNbaV0gIT0gb3RoZXIuY29udGVudHNbaV06Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX19uZV9fKHNlbGYs
IG90aGVyKToKLSAgICAgICAgIiIiUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRhZyBpcyBub3QgaWRl
bnRpY2FsIHRvIHRoZSBvdGhlciB0YWcsCi0gICAgICAgIGFzIGRlZmluZWQgaW4gX19lcV9fLiIi
IgotICAgICAgICByZXR1cm4gbm90IHNlbGYgPT0gb3RoZXIKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElORyk6Ci0gICAgICAgICIiIlJlbmRl
cnMgdGhpcyB0YWcgYXMgYSBzdHJpbmcuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18o
ZW5jb2RpbmcpCi0KLSAgICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9fc3RyX18oTm9uZSkKLQotICAgIEJBUkVfQU1QRVJTQU5EX09SX0JSQUNLRVQgPSByZS5j
b21waWxlKCIoWzw+XXwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKyAiJig/ISNcZCs7fCN4WzAtOWEtZkEtRl0rO3xcdys7KSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICArICIpIikKLQotICAgIGRlZiBfc3ViX2VudGl0eShz
ZWxmLCB4KToKLSAgICAgICAgIiIiVXNlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIHRvIHN1
YnN0aXR1dGUgdGhlCi0gICAgICAgIGFwcHJvcHJpYXRlIFhNTCBlbnRpdHkgZm9yIGFuIFhNTCBz
cGVjaWFsIGNoYXJhY3Rlci4iIiIKLSAgICAgICAgcmV0dXJuICImIiArIHNlbGYuWE1MX1NQRUNJ
QUxfQ0hBUlNfVE9fRU5USVRJRVNbeC5ncm91cCgwKVswXV0gKyAiOyIKLQotICAgIGRlZiBfX3N0
cl9fKHNlbGYsIGVuY29kaW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HLAotICAgICAgICAgICAg
ICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRMZXZlbD0wKToKLSAgICAgICAgIiIiUmV0dXJu
cyBhIHN0cmluZyBvciBVbmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGFnIGFuZAotICAg
ICAgICBpdHMgY29udGVudHMuIFRvIGdldCBVbmljb2RlLCBwYXNzIE5vbmUgZm9yIGVuY29kaW5n
LgotCi0gICAgICAgIE5PVEU6IHNpbmNlIFB5dGhvbidzIEhUTUwgcGFyc2VyIGNvbnN1bWVzIHdo
aXRlc3BhY2UsIHRoaXMKLSAgICAgICAgbWV0aG9kIGlzIG5vdCBjZXJ0YWluIHRvIHJlcHJvZHVj
ZSB0aGUgd2hpdGVzcGFjZSBwcmVzZW50IGluCi0gICAgICAgIHRoZSBvcmlnaW5hbCBzdHJpbmcu
IiIiCi0KLSAgICAgICAgZW5jb2RlZE5hbWUgPSBzZWxmLnRvRW5jb2Rpbmcoc2VsZi5uYW1lLCBl
bmNvZGluZykKLQotICAgICAgICBhdHRycyA9IFtdCi0gICAgICAgIGlmIHNlbGYuYXR0cnM6Ci0g
ICAgICAgICAgICBmb3Iga2V5LCB2YWwgaW4gc2VsZi5hdHRyczoKLSAgICAgICAgICAgICAgICBm
bXQgPSAnJXM9IiVzIicKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgYmFzZXN0
cmluZyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY29udGFpbnNTdWJzdGl0dXRpb25z
IGFuZCAnJVNPVVAtRU5DT0RJTkclJyBpbiB2YWw6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2
YWwgPSBzZWxmLnN1YnN0aXR1dGVFbmNvZGluZyh2YWwsIGVuY29kaW5nKQotCi0gICAgICAgICAg
ICAgICAgICAgICMgVGhlIGF0dHJpYnV0ZSB2YWx1ZSBlaXRoZXI6Ci0gICAgICAgICAgICAgICAg
ICAgICMKLSAgICAgICAgICAgICAgICAgICAgIyAqIENvbnRhaW5zIG5vIGVtYmVkZGVkIGRvdWJs
ZSBxdW90ZXMgb3Igc2luZ2xlIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICAgICAgIyAgIE5vIHBy
b2JsZW06IHdlIGVuY2xvc2UgaXQgaW4gZG91YmxlIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICAg
ICAgIyAqIENvbnRhaW5zIGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMuIE5vIHByb2JsZW06Ci0gICAg
ICAgICAgICAgICAgICAgICMgICBkb3VibGUgcXVvdGVzIHdvcmsgaGVyZSB0b28uCi0gICAgICAg
ICAgICAgICAgICAgICMgKiBDb250YWlucyBlbWJlZGRlZCBkb3VibGUgcXVvdGVzLiBObyBwcm9i
bGVtOgotICAgICAgICAgICAgICAgICAgICAjICAgd2UgZW5jbG9zZSBpdCBpbiBzaW5nbGUgcXVv
dGVzLgotICAgICAgICAgICAgICAgICAgICAjICogRW1iZWRzIGJvdGggc2luZ2xlIF9hbmRfIGRv
dWJsZSBxdW90ZXMuIFRoaXMKLSAgICAgICAgICAgICAgICAgICAgIyAgIGNhbid0IGhhcHBlbiBu
YXR1cmFsbHksIGJ1dCBpdCBjYW4gaGFwcGVuIGlmCi0gICAgICAgICAgICAgICAgICAgICMgICB5
b3UgbW9kaWZ5IGFuIGF0dHJpYnV0ZSB2YWx1ZSBhZnRlciBwYXJzaW5nCi0gICAgICAgICAgICAg
ICAgICAgICMgICB0aGUgZG9jdW1lbnQuIE5vdyB3ZSBoYXZlIGEgYml0IG9mIGEKLSAgICAgICAg
ICAgICAgICAgICAgIyAgIHByb2JsZW0uIFdlIHNvbHZlIGl0IGJ5IGVuY2xvc2luZyB0aGUKLSAg
ICAgICAgICAgICAgICAgICAgIyAgIGF0dHJpYnV0ZSBpbiBzaW5nbGUgcXVvdGVzLCBhbmQgZXNj
YXBpbmcgYW55Ci0gICAgICAgICAgICAgICAgICAgICMgICBlbWJlZGRlZCBzaW5nbGUgcXVvdGVz
IHRvIFhNTCBlbnRpdGllcy4KLSAgICAgICAgICAgICAgICAgICAgaWYgJyInIGluIHZhbDoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICIlcz0nJXMnIgotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgIiciIGluIHZhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE86
IHJlcGxhY2Ugd2l0aCBhcG9zIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFw
cHJvcHJpYXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNl
KCInIiwgIiZzcXVvdDsiKQotCi0gICAgICAgICAgICAgICAgICAgICMgTm93IHdlJ3JlIG9rYXkg
dy9yL3QgcXVvdGVzLiBCdXQgdGhlIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAjIHZh
bHVlIG1pZ2h0IGFsc28gY29udGFpbiBhbmdsZSBicmFja2V0cywgb3IKLSAgICAgICAgICAgICAg
ICAgICAgIyBhbXBlcnNhbmRzIHRoYXQgYXJlbid0IHBhcnQgb2YgZW50aXRpZXMuIFdlIG5lZWQK
LSAgICAgICAgICAgICAgICAgICAgIyB0byBlc2NhcGUgdGhvc2UgdG8gWE1MIGVudGl0aWVzIHRv
by4KLSAgICAgICAgICAgICAgICAgICAgdmFsID0gc2VsZi5CQVJFX0FNUEVSU0FORF9PUl9CUkFD
S0VULnN1YihzZWxmLl9zdWJfZW50aXR5LCB2YWwpCi0KLSAgICAgICAgICAgICAgICBhdHRycy5h
cHBlbmQoZm10ICUgKHNlbGYudG9FbmNvZGluZyhrZXksIGVuY29kaW5nKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9FbmNvZGluZyh2YWwsIGVuY29kaW5nKSkp
Ci0gICAgICAgIGNsb3NlID0gJycKLSAgICAgICAgY2xvc2VUYWcgPSAnJwotICAgICAgICBpZiBz
ZWxmLmlzU2VsZkNsb3Npbmc6Ci0gICAgICAgICAgICBjbG9zZSA9ICcgLycKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGNsb3NlVGFnID0gJzwvJXM+JyAlIGVuY29kZWROYW1lCi0KLSAgICAg
ICAgaW5kZW50VGFnLCBpbmRlbnRDb250ZW50cyA9IDAsIDAKLSAgICAgICAgaWYgcHJldHR5UHJp
bnQ6Ci0gICAgICAgICAgICBpbmRlbnRUYWcgPSBpbmRlbnRMZXZlbAotICAgICAgICAgICAgc3Bh
Y2UgPSAoJyAnICogKGluZGVudFRhZy0xKSkKLSAgICAgICAgICAgIGluZGVudENvbnRlbnRzID0g
aW5kZW50VGFnICsgMQotICAgICAgICBjb250ZW50cyA9IHNlbGYucmVuZGVyQ29udGVudHMoZW5j
b2RpbmcsIHByZXR0eVByaW50LCBpbmRlbnRDb250ZW50cykKLSAgICAgICAgaWYgc2VsZi5oaWRk
ZW46Ci0gICAgICAgICAgICBzID0gY29udGVudHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHMgPSBbXQotICAgICAgICAgICAgYXR0cmlidXRlU3RyaW5nID0gJycKLSAgICAgICAgICAgIGlm
IGF0dHJzOgotICAgICAgICAgICAgICAgIGF0dHJpYnV0ZVN0cmluZyA9ICcgJyArICcgJy5qb2lu
KGF0dHJzKQotICAgICAgICAgICAgaWYgcHJldHR5UHJpbnQ6Ci0gICAgICAgICAgICAgICAgcy5h
cHBlbmQoc3BhY2UpCi0gICAgICAgICAgICBzLmFwcGVuZCgnPCVzJXMlcz4nICUgKGVuY29kZWRO
YW1lLCBhdHRyaWJ1dGVTdHJpbmcsIGNsb3NlKSkKLSAgICAgICAgICAgIGlmIHByZXR0eVByaW50
OgotICAgICAgICAgICAgICAgIHMuYXBwZW5kKCJcbiIpCi0gICAgICAgICAgICBzLmFwcGVuZChj
b250ZW50cykKLSAgICAgICAgICAgIGlmIHByZXR0eVByaW50IGFuZCBjb250ZW50cyBhbmQgY29u
dGVudHNbLTFdICE9ICJcbiI6Ci0gICAgICAgICAgICAgICAgcy5hcHBlbmQoIlxuIikKLSAgICAg
ICAgICAgIGlmIHByZXR0eVByaW50IGFuZCBjbG9zZVRhZzoKLSAgICAgICAgICAgICAgICBzLmFw
cGVuZChzcGFjZSkKLSAgICAgICAgICAgIHMuYXBwZW5kKGNsb3NlVGFnKQotICAgICAgICAgICAg
aWYgcHJldHR5UHJpbnQgYW5kIGNsb3NlVGFnIGFuZCBzZWxmLm5leHRTaWJsaW5nOgotICAgICAg
ICAgICAgICAgIHMuYXBwZW5kKCJcbiIpCi0gICAgICAgICAgICBzID0gJycuam9pbihzKQotICAg
ICAgICByZXR1cm4gcwotCi0gICAgZGVmIGRlY29tcG9zZShzZWxmKToKLSAgICAgICAgIiIiUmVj
dXJzaXZlbHkgZGVzdHJveXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgdHJlZS4iIiIKLSAgICAgICAg
c2VsZi5leHRyYWN0KCkKLSAgICAgICAgaWYgbGVuKHNlbGYuY29udGVudHMpID09IDA6Ci0gICAg
ICAgICAgICByZXR1cm4KLSAgICAgICAgY3VycmVudCA9IHNlbGYuY29udGVudHNbMF0KLSAgICAg
ICAgd2hpbGUgY3VycmVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG5leHQgPSBjdXJyZW50
Lm5leHQKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY3VycmVudCwgVGFnKToKLSAgICAgICAg
ICAgICAgICBkZWwgY3VycmVudC5jb250ZW50c1s6XQotICAgICAgICAgICAgY3VycmVudC5wYXJl
bnQgPSBOb25lCi0gICAgICAgICAgICBjdXJyZW50LnByZXZpb3VzID0gTm9uZQotICAgICAgICAg
ICAgY3VycmVudC5wcmV2aW91c1NpYmxpbmcgPSBOb25lCi0gICAgICAgICAgICBjdXJyZW50Lm5l
eHQgPSBOb25lCi0gICAgICAgICAgICBjdXJyZW50Lm5leHRTaWJsaW5nID0gTm9uZQotICAgICAg
ICAgICAgY3VycmVudCA9IG5leHQKLQotICAgIGRlZiBwcmV0dGlmeShzZWxmLCBlbmNvZGluZz1E
RUZBVUxUX09VVFBVVF9FTkNPRElORyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oZW5j
b2RpbmcsIFRydWUpCi0KLSAgICBkZWYgcmVuZGVyQ29udGVudHMoc2VsZiwgZW5jb2Rpbmc9REVG
QVVMVF9PVVRQVVRfRU5DT0RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgIHByZXR0eVByaW50
PUZhbHNlLCBpbmRlbnRMZXZlbD0wKToKLSAgICAgICAgIiIiUmVuZGVycyB0aGUgY29udGVudHMg
b2YgdGhpcyB0YWcgYXMgYSBzdHJpbmcgaW4gdGhlIGdpdmVuCi0gICAgICAgIGVuY29kaW5nLiBJ
ZiBlbmNvZGluZyBpcyBOb25lLCByZXR1cm5zIGEgVW5pY29kZSBzdHJpbmcuLiIiIgotICAgICAg
ICBzPVtdCi0gICAgICAgIGZvciBjIGluIHNlbGY6Ci0gICAgICAgICAgICB0ZXh0ID0gTm9uZQot
ICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjLCBOYXZpZ2FibGVTdHJpbmcpOgotICAgICAgICAg
ICAgICAgIHRleHQgPSBjLl9fc3RyX18oZW5jb2RpbmcpCi0gICAgICAgICAgICBlbGlmIGlzaW5z
dGFuY2UoYywgVGFnKToKLSAgICAgICAgICAgICAgICBzLmFwcGVuZChjLl9fc3RyX18oZW5jb2Rp
bmcsIHByZXR0eVByaW50LCBpbmRlbnRMZXZlbCkpCi0gICAgICAgICAgICBpZiB0ZXh0IGFuZCBw
cmV0dHlQcmludDoKLSAgICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zdHJpcCgpCi0gICAgICAg
ICAgICBpZiB0ZXh0OgotICAgICAgICAgICAgICAgIGlmIHByZXR0eVByaW50OgotICAgICAgICAg
ICAgICAgICAgICBzLmFwcGVuZCgiICIgKiAoaW5kZW50TGV2ZWwtMSkpCi0gICAgICAgICAgICAg
ICAgcy5hcHBlbmQodGV4dCkKLSAgICAgICAgICAgICAgICBpZiBwcmV0dHlQcmludDoKLSAgICAg
ICAgICAgICAgICAgICAgcy5hcHBlbmQoIlxuIikKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocykK
LQotICAgICNTb3VwIG1ldGhvZHMKLQotICAgIGRlZiBmaW5kKHNlbGYsIG5hbWU9Tm9uZSwgYXR0
cnM9e30sIHJlY3Vyc2l2ZT1UcnVlLCB0ZXh0PU5vbmUsCi0gICAgICAgICAgICAgKiprd2FyZ3Mp
OgotICAgICAgICAiIiJSZXR1cm4gb25seSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBUYWcgbWF0
Y2hpbmcgdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhLiIiIgotICAgICAgICByID0gTm9uZQot
ICAgICAgICBsID0gc2VsZi5maW5kQWxsKG5hbWUsIGF0dHJzLCByZWN1cnNpdmUsIHRleHQsIDEs
ICoqa3dhcmdzKQotICAgICAgICBpZiBsOgotICAgICAgICAgICAgciA9IGxbMF0KLSAgICAgICAg
cmV0dXJuIHIKLSAgICBmaW5kQ2hpbGQgPSBmaW5kCi0KLSAgICBkZWYgZmluZEFsbChzZWxmLCBu
YW1lPU5vbmUsIGF0dHJzPXt9LCByZWN1cnNpdmU9VHJ1ZSwgdGV4dD1Ob25lLAotICAgICAgICAg
ICAgICAgIGxpbWl0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgIiIiRXh0cmFjdHMgYSBsaXN0
IG9mIFRhZyBvYmplY3RzIHRoYXQgbWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhLiAg
WW91IGNhbiBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBUYWcgYW5kIGFueQotICAgICAgICBhdHRy
aWJ1dGVzIHlvdSB3YW50IHRoZSBUYWcgdG8gaGF2ZS4KLQotICAgICAgICBUaGUgdmFsdWUgb2Yg
YSBrZXktdmFsdWUgcGFpciBpbiB0aGUgJ2F0dHJzJyBtYXAgY2FuIGJlIGEKLSAgICAgICAgc3Ry
aW5nLCBhIGxpc3Qgb2Ygc3RyaW5ncywgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0LCBvciBh
Ci0gICAgICAgIGNhbGxhYmxlIHRoYXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgd2hldGhl
ciBvciBub3QgdGhlCi0gICAgICAgIHN0cmluZyBtYXRjaGVzIGZvciBzb21lIGN1c3RvbSBkZWZp
bml0aW9uIG9mICdtYXRjaGVzJy4gVGhlCi0gICAgICAgIHNhbWUgaXMgdHJ1ZSBvZiB0aGUgdGFn
IG5hbWUuIiIiCi0gICAgICAgIGdlbmVyYXRvciA9IHNlbGYucmVjdXJzaXZlQ2hpbGRHZW5lcmF0
b3IKLSAgICAgICAgaWYgbm90IHJlY3Vyc2l2ZToKLSAgICAgICAgICAgIGdlbmVyYXRvciA9IHNl
bGYuY2hpbGRHZW5lcmF0b3IKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRBbGwobmFtZSwgYXR0
cnMsIHRleHQsIGxpbWl0LCBnZW5lcmF0b3IsICoqa3dhcmdzKQotICAgIGZpbmRDaGlsZHJlbiA9
IGZpbmRBbGwKLQotICAgICMgUHJlLTMueCBjb21wYXRpYmlsaXR5IG1ldGhvZHMKLSAgICBmaXJz
dCA9IGZpbmQKLSAgICBmZXRjaCA9IGZpbmRBbGwKLQotICAgIGRlZiBmZXRjaFRleHQoc2VsZiwg
dGV4dD1Ob25lLCByZWN1cnNpdmU9VHJ1ZSwgbGltaXQ9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBz
ZWxmLmZpbmRBbGwodGV4dD10ZXh0LCByZWN1cnNpdmU9cmVjdXJzaXZlLCBsaW1pdD1saW1pdCkK
LQotICAgIGRlZiBmaXJzdFRleHQoc2VsZiwgdGV4dD1Ob25lLCByZWN1cnNpdmU9VHJ1ZSk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLmZpbmQodGV4dD10ZXh0LCByZWN1cnNpdmU9cmVjdXJzaXZlKQot
Ci0gICAgI1ByaXZhdGUgbWV0aG9kcwotCi0gICAgZGVmIF9nZXRBdHRyTWFwKHNlbGYpOgotICAg
ICAgICAiIiJJbml0aWFsaXplcyBhIG1hcCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRhZydzIGF0
dHJpYnV0ZXMsCi0gICAgICAgIGlmIG5vdCBhbHJlYWR5IGluaXRpYWxpemVkLiIiIgotICAgICAg
ICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnYXR0ck1hcCcpOgotICAgICAgICAgICAgc2VsZi5hdHRy
TWFwID0ge30KLSAgICAgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5hdHRyczoKLSAg
ICAgICAgICAgICAgICBzZWxmLmF0dHJNYXBba2V5XSA9IHZhbHVlCi0gICAgICAgIHJldHVybiBz
ZWxmLmF0dHJNYXAKLQotICAgICNHZW5lcmF0b3IgbWV0aG9kcwotICAgIGRlZiBjaGlsZEdlbmVy
YXRvcihzZWxmKToKLSAgICAgICAgIyBKdXN0IHVzZSB0aGUgaXRlcmF0b3IgZnJvbSB0aGUgY29u
dGVudHMKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKLQotICAgIGRlZiByZWN1
cnNpdmVDaGlsZEdlbmVyYXRvcihzZWxmKToKLSAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbnRl
bnRzKToKLSAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAgICAgc3RvcE5vZGUg
PSBzZWxmLl9sYXN0UmVjdXJzaXZlQ2hpbGQoKS5uZXh0Ci0gICAgICAgIGN1cnJlbnQgPSBzZWxm
LmNvbnRlbnRzWzBdCi0gICAgICAgIHdoaWxlIGN1cnJlbnQgaXMgbm90IHN0b3BOb2RlOgotICAg
ICAgICAgICAgeWllbGQgY3VycmVudAotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4
dAotCi0KLSMgTmV4dCwgYSBjb3VwbGUgY2xhc3NlcyB0byByZXByZXNlbnQgcXVlcmllcyBhbmQg
dGhlaXIgcmVzdWx0cy4KLWNsYXNzIFNvdXBTdHJhaW5lcjoKLSAgICAiIiJFbmNhcHN1bGF0ZXMg
YSBudW1iZXIgb2Ygd2F5cyBvZiBtYXRjaGluZyBhIG1hcmt1cCBlbGVtZW50ICh0YWcgb3IKLSAg
ICB0ZXh0KS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9
LCB0ZXh0PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAg
ICBpZiBpc2luc3RhbmNlKGF0dHJzLCBiYXNlc3RyaW5nKToKLSAgICAgICAgICAgIGt3YXJnc1sn
Y2xhc3MnXSA9IF9tYXRjaF9jc3NfY2xhc3MoYXR0cnMpCi0gICAgICAgICAgICBhdHRycyA9IE5v
bmUKLSAgICAgICAgaWYga3dhcmdzOgotICAgICAgICAgICAgaWYgYXR0cnM6Ci0gICAgICAgICAg
ICAgICAgYXR0cnMgPSBhdHRycy5jb3B5KCkKLSAgICAgICAgICAgICAgICBhdHRycy51cGRhdGUo
a3dhcmdzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhdHRycyA9IGt3YXJn
cwotICAgICAgICBzZWxmLmF0dHJzID0gYXR0cnMKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAot
Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudGV4dDoKLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLnRleHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAi
JXN8JXMiICUgKHNlbGYubmFtZSwgc2VsZi5hdHRycykKLQotICAgIGRlZiBzZWFyY2hUYWcoc2Vs
ZiwgbWFya3VwTmFtZT1Ob25lLCBtYXJrdXBBdHRycz17fSk6Ci0gICAgICAgIGZvdW5kID0gTm9u
ZQotICAgICAgICBtYXJrdXAgPSBOb25lCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobWFya3VwTmFt
ZSwgVGFnKToKLSAgICAgICAgICAgIG1hcmt1cCA9IG1hcmt1cE5hbWUKLSAgICAgICAgICAgIG1h
cmt1cEF0dHJzID0gbWFya3VwCi0gICAgICAgIGNhbGxGdW5jdGlvbldpdGhUYWdEYXRhID0gY2Fs
bGFibGUoc2VsZi5uYW1lKSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBu
b3QgaXNpbnN0YW5jZShtYXJrdXBOYW1lLCBUYWcpCi0KLSAgICAgICAgaWYgKG5vdCBzZWxmLm5h
bWUpIFwKLSAgICAgICAgICAgICAgIG9yIGNhbGxGdW5jdGlvbldpdGhUYWdEYXRhIFwKLSAgICAg
ICAgICAgICAgIG9yIChtYXJrdXAgYW5kIHNlbGYuX21hdGNoZXMobWFya3VwLCBzZWxmLm5hbWUp
KSBcCi0gICAgICAgICAgICAgICBvciAobm90IG1hcmt1cCBhbmQgc2VsZi5fbWF0Y2hlcyhtYXJr
dXBOYW1lLCBzZWxmLm5hbWUpKToKLSAgICAgICAgICAgIGlmIGNhbGxGdW5jdGlvbldpdGhUYWdE
YXRhOgotICAgICAgICAgICAgICAgIG1hdGNoID0gc2VsZi5uYW1lKG1hcmt1cE5hbWUsIG1hcmt1
cEF0dHJzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUK
LSAgICAgICAgICAgICAgICBtYXJrdXBBdHRyTWFwID0gTm9uZQotICAgICAgICAgICAgICAgIGZv
ciBhdHRyLCBtYXRjaEFnYWluc3QgaW4gc2VsZi5hdHRycy5pdGVtcygpOgotICAgICAgICAgICAg
ICAgICAgICBpZiBub3QgbWFya3VwQXR0ck1hcDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBoYXNhdHRyKG1hcmt1cEF0dHJzLCAnZ2V0Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFya3VwQXR0ck1hcCA9IG1hcmt1cEF0dHJzCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXBBdHRyTWFwID0ge30KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igayx2IGluIG1hcmt1cEF0dHJzOgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrdXBBdHRyTWFwW2tdID0gdgotICAgICAgICAg
ICAgICAgICAgICBhdHRyVmFsdWUgPSBtYXJrdXBBdHRyTWFwLmdldChhdHRyKQotICAgICAgICAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5fbWF0Y2hlcyhhdHRyVmFsdWUsIG1hdGNoQWdhaW5zdCk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IEZhbHNlCi0gICAgICAgICAgICAgICAg
ICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgaWYg
bWFya3VwOgotICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IG1hcmt1cAotICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGZvdW5kID0gbWFya3VwTmFtZQotICAgICAg
ICByZXR1cm4gZm91bmQKLQotICAgIGRlZiBzZWFyY2goc2VsZiwgbWFya3VwKToKLSAgICAgICAg
I3ByaW50ICdsb29raW5nIGZvciAlcyBpbiAlcycgJSAoc2VsZiwgbWFya3VwKQotICAgICAgICBm
b3VuZCA9IE5vbmUKLSAgICAgICAgIyBJZiBnaXZlbiBhIGxpc3Qgb2YgaXRlbXMsIHNjYW4gaXQg
Zm9yIGEgdGV4dCBlbGVtZW50IHRoYXQKLSAgICAgICAgIyBtYXRjaGVzLgotICAgICAgICBpZiBo
YXNhdHRyKG1hcmt1cCwgIl9faXRlcl9fIikgXAotICAgICAgICAgICAgICAgIGFuZCBub3QgaXNp
bnN0YW5jZShtYXJrdXAsIFRhZyk6Ci0gICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBtYXJrdXA6
Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShlbGVtZW50LCBOYXZpZ2FibGVTdHJpbmcp
IFwKLSAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuc2VhcmNoKGVsZW1lbnQpOgotICAg
ICAgICAgICAgICAgICAgICBmb3VuZCA9IGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgIyBJZiBpdCdzIGEgVGFnLCBtYWtlIHN1cmUgaXRzIG5hbWUgb3IgYXR0cmli
dXRlcyBtYXRjaC4KLSAgICAgICAgIyBEb24ndCBib3RoZXIgd2l0aCBUYWdzIGlmIHdlJ3JlIHNl
YXJjaGluZyBmb3IgdGV4dC4KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1hcmt1cCwgVGFnKToK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnRleHQ6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBz
ZWxmLnNlYXJjaFRhZyhtYXJrdXApCi0gICAgICAgICMgSWYgaXQncyB0ZXh0LCBtYWtlIHN1cmUg
dGhlIHRleHQgbWF0Y2hlcy4KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1hcmt1cCwgTmF2aWdh
YmxlU3RyaW5nKSBvciBcCi0gICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UobWFya3VwLCBiYXNl
c3RyaW5nKToKLSAgICAgICAgICAgIGlmIHNlbGYuX21hdGNoZXMobWFya3VwLCBzZWxmLnRleHQp
OgotICAgICAgICAgICAgICAgIGZvdW5kID0gbWFya3VwCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24sICJJIGRvbid0IGtub3cgaG93IHRvIG1hdGNoIGFnYWluc3Qg
YSAlcyIgXAotICAgICAgICAgICAgICAgICAgJSBtYXJrdXAuX19jbGFzc19fCi0gICAgICAgIHJl
dHVybiBmb3VuZAotCi0gICAgZGVmIF9tYXRjaGVzKHNlbGYsIG1hcmt1cCwgbWF0Y2hBZ2FpbnN0
KToKLSAgICAgICAgI3ByaW50ICJNYXRjaGluZyAlcyBhZ2FpbnN0ICVzIiAlIChtYXJrdXAsIG1h
dGNoQWdhaW5zdCkKLSAgICAgICAgcmVzdWx0ID0gRmFsc2UKLSAgICAgICAgaWYgbWF0Y2hBZ2Fp
bnN0IGlzIFRydWU6Ci0gICAgICAgICAgICByZXN1bHQgPSBtYXJrdXAgaXMgbm90IE5vbmUKLSAg
ICAgICAgZWxpZiBjYWxsYWJsZShtYXRjaEFnYWluc3QpOgotICAgICAgICAgICAgcmVzdWx0ID0g
bWF0Y2hBZ2FpbnN0KG1hcmt1cCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICNDdXN0b20g
bWF0Y2ggbWV0aG9kcyB0YWtlIHRoZSB0YWcgYXMgYW4gYXJndW1lbnQsIGJ1dCBhbGwKLSAgICAg
ICAgICAgICNvdGhlciB3YXlzIG9mIG1hdGNoaW5nIG1hdGNoIHRoZSB0YWcgbmFtZSBhcyBhIHN0
cmluZy4KLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobWFya3VwLCBUYWcpOgotICAgICAgICAg
ICAgICAgIG1hcmt1cCA9IG1hcmt1cC5uYW1lCi0gICAgICAgICAgICBpZiBtYXJrdXAgYW5kIG5v
dCBpc2luc3RhbmNlKG1hcmt1cCwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICAgICAgbWFya3Vw
ID0gdW5pY29kZShtYXJrdXApCi0gICAgICAgICAgICAjTm93IHdlIGtub3cgdGhhdCBjaHVuayBp
cyBlaXRoZXIgYSBzdHJpbmcsIG9yIE5vbmUuCi0gICAgICAgICAgICBpZiBoYXNhdHRyKG1hdGNo
QWdhaW5zdCwgJ21hdGNoJyk6Ci0gICAgICAgICAgICAgICAgIyBJdCdzIGEgcmVnZXhwIG9iamVj
dC4KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBtYXJrdXAgYW5kIG1hdGNoQWdhaW5zdC5zZWFy
Y2gobWFya3VwKQotICAgICAgICAgICAgZWxpZiBoYXNhdHRyKG1hdGNoQWdhaW5zdCwgJ19faXRl
cl9fJyk6ICMgbGlzdC1saWtlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFya3VwIGluIG1h
dGNoQWdhaW5zdAotICAgICAgICAgICAgZWxpZiBoYXNhdHRyKG1hdGNoQWdhaW5zdCwgJ2l0ZW1z
Jyk6Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFya3VwLmhhc19rZXkobWF0Y2hBZ2FpbnN0
KQotICAgICAgICAgICAgZWxpZiBtYXRjaEFnYWluc3QgYW5kIGlzaW5zdGFuY2UobWFya3VwLCBi
YXNlc3RyaW5nKToKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmt1cCwgdW5pY29k
ZSk6Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoQWdhaW5zdCA9IHVuaWNvZGUobWF0Y2hBZ2Fp
bnN0KQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoQWdh
aW5zdCA9IHN0cihtYXRjaEFnYWluc3QpCi0KLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0g
ICAgICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0ID09IG1hcmt1cAotICAgICAgICBy
ZXR1cm4gcmVzdWx0Ci0KLWNsYXNzIFJlc3VsdFNldChsaXN0KToKLSAgICAiIiJBIFJlc3VsdFNl
dCBpcyBqdXN0IGEgbGlzdCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBTb3VwU3RyYWluZXIKLSAg
ICB0aGF0IGNyZWF0ZWQgaXQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSk6Ci0g
ICAgICAgIGxpc3QuX19pbml0X18oW10pCi0gICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCi0K
LSMgTm93LCBzb21lIGhlbHBlciBmdW5jdGlvbnMuCi0KLWRlZiBidWlsZFRhZ01hcChkZWZhdWx0
LCAqYXJncyk6Ci0gICAgIiIiVHVybnMgYSBsaXN0IG9mIG1hcHMsIGxpc3RzLCBvciBzY2FsYXJz
IGludG8gYSBzaW5nbGUgbWFwLgotICAgIFVzZWQgdG8gYnVpbGQgdGhlIFNFTEZfQ0xPU0lOR19U
QUdTLCBORVNUQUJMRV9UQUdTLCBhbmQKLSAgICBORVNUSU5HX1JFU0VUX1RBR1MgbWFwcyBvdXQg
b2YgbGlzdHMgYW5kIHBhcnRpYWwgbWFwcy4iIiIKLSAgICBidWlsdCA9IHt9Ci0gICAgZm9yIHBv
cnRpb24gaW4gYXJnczoKLSAgICAgICAgaWYgaGFzYXR0cihwb3J0aW9uLCAnaXRlbXMnKToKLSAg
ICAgICAgICAgICNJdCdzIGEgbWFwLiBNZXJnZSBpdC4KLSAgICAgICAgICAgIGZvciBrLHYgaW4g
cG9ydGlvbi5pdGVtcygpOgotICAgICAgICAgICAgICAgIGJ1aWx0W2tdID0gdgotICAgICAgICBl
bGlmIGhhc2F0dHIocG9ydGlvbiwgJ19faXRlcl9fJyk6ICMgaXMgYSBsaXN0Ci0gICAgICAgICAg
ICAjSXQncyBhIGxpc3QuIE1hcCBlYWNoIGl0ZW0gdG8gdGhlIGRlZmF1bHQuCi0gICAgICAgICAg
ICBmb3IgayBpbiBwb3J0aW9uOgotICAgICAgICAgICAgICAgIGJ1aWx0W2tdID0gZGVmYXVsdAot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgI0l0J3MgYSBzY2FsYXIuIE1hcCBpdCB0byB0aGUg
ZGVmYXVsdC4KLSAgICAgICAgICAgIGJ1aWx0W3BvcnRpb25dID0gZGVmYXVsdAotICAgIHJldHVy
biBidWlsdAotCi0jIE5vdywgdGhlIHBhcnNlciBjbGFzc2VzLgotCi1jbGFzcyBCZWF1dGlmdWxT
dG9uZVNvdXAoVGFnLCBTR01MUGFyc2VyKToKLQotICAgICIiIlRoaXMgY2xhc3MgY29udGFpbnMg
dGhlIGJhc2ljIHBhcnNlciBhbmQgc2VhcmNoIGNvZGUuIEl0IGRlZmluZXMKLSAgICBhIHBhcnNl
ciB0aGF0IGtub3dzIG5vdGhpbmcgYWJvdXQgdGFnIGJlaGF2aW9yIGV4Y2VwdCBmb3IgdGhlCi0g
ICAgZm9sbG93aW5nOgotCi0gICAgICBZb3UgY2FuJ3QgY2xvc2UgYSB0YWcgd2l0aG91dCBjbG9z
aW5nIGFsbCB0aGUgdGFncyBpdCBlbmNsb3Nlcy4KLSAgICAgIFRoYXQgaXMsICI8Zm9vPjxiYXI+
PC9mb28+IiBhY3R1YWxseSBtZWFucwotICAgICAgIjxmb28+PGJhcj48L2Jhcj48L2Zvbz4iLgot
Ci0gICAgW0Fub3RoZXIgcG9zc2libGUgZXhwbGFuYXRpb24gaXMgIjxmb28+PGJhciAvPjwvZm9v
PiIsIGJ1dCBzaW5jZQotICAgIHRoaXMgY2xhc3MgZGVmaW5lcyBubyBTRUxGX0NMT1NJTkdfVEFH
UywgaXQgd2lsbCBuZXZlciB1c2UgdGhhdAotICAgIGV4cGxhbmF0aW9uLl0KLQotICAgIFRoaXMg
Y2xhc3MgaXMgdXNlZnVsIGZvciBwYXJzaW5nIFhNTCBvciBtYWRlLXVwIG1hcmt1cCBsYW5ndWFn
ZXMsCi0gICAgb3Igd2hlbiBCZWF1dGlmdWxTb3VwIG1ha2VzIGFuIGFzc3VtcHRpb24gY291bnRl
ciB0byB3aGF0IHlvdSB3ZXJlCi0gICAgZXhwZWN0aW5nLiIiIgotCi0gICAgU0VMRl9DTE9TSU5H
X1RBR1MgPSB7fQotICAgIE5FU1RBQkxFX1RBR1MgPSB7fQotICAgIFJFU0VUX05FU1RJTkdfVEFH
UyA9IHt9Ci0gICAgUVVPVEVfVEFHUyA9IHt9Ci0gICAgUFJFU0VSVkVfV0hJVEVTUEFDRV9UQUdT
ID0gW10KLQotICAgIE1BUktVUF9NQVNTQUdFID0gWyhyZS5jb21waWxlKCcoPFtePD5dKikvPicp
LAotICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgeDogeC5ncm91cCgxKSArICcgLz4nKSwK
LSAgICAgICAgICAgICAgICAgICAgICAocmUuY29tcGlsZSgnPCFccysoW148Pl0qKT4nKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHg6ICc8IScgKyB4Lmdyb3VwKDEpICsgJz4nKQot
ICAgICAgICAgICAgICAgICAgICAgIF0KLQotICAgIFJPT1RfVEFHX05BTUUgPSB1J1tkb2N1bWVu
dF0nCi0KLSAgICBIVE1MX0VOVElUSUVTID0gImh0bWwiCi0gICAgWE1MX0VOVElUSUVTID0gInht
bCIKLSAgICBYSFRNTF9FTlRJVElFUyA9ICJ4aHRtbCIKLSAgICAjIFRPRE86IFRoaXMgb25seSBl
eGlzdHMgZm9yIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5Ci0gICAgQUxMX0VOVElUSUVTID0gWEhU
TUxfRU5USVRJRVMKLQotICAgICMgVXNlZCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgYSB0ZXh0
IG5vZGUgaXMgYWxsIHdoaXRlc3BhY2UgYW5kCi0gICAgIyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBh
IHNpbmdsZSBzcGFjZS4gQSB0ZXh0IG5vZGUgdGhhdCBjb250YWlucwotICAgICMgZmFuY3kgVW5p
Y29kZSBzcGFjZXMgKHVzdWFsbHkgbm9uLWJyZWFraW5nKSBzaG91bGQgYmUgbGVmdAotICAgICMg
YWxvbmUuCi0gICAgU1RSSVBfQVNDSUlfU1BBQ0VTID0geyA5OiBOb25lLCAxMDogTm9uZSwgMTI6
IE5vbmUsIDEzOiBOb25lLCAzMjogTm9uZSwgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1h
cmt1cD0iIiwgcGFyc2VPbmx5VGhlc2U9Tm9uZSwgZnJvbUVuY29kaW5nPU5vbmUsCi0gICAgICAg
ICAgICAgICAgIG1hcmt1cE1hc3NhZ2U9VHJ1ZSwgc21hcnRRdW90ZXNUbz1YTUxfRU5USVRJRVMs
Ci0gICAgICAgICAgICAgICAgIGNvbnZlcnRFbnRpdGllcz1Ob25lLCBzZWxmQ2xvc2luZ1RhZ3M9
Tm9uZSwgaXNIVE1MPUZhbHNlKToKLSAgICAgICAgIiIiVGhlIFNvdXAgb2JqZWN0IGlzIGluaXRp
YWxpemVkIGFzIHRoZSAncm9vdCB0YWcnLCBhbmQgdGhlCi0gICAgICAgIHByb3ZpZGVkIG1hcmt1
cCAod2hpY2ggY2FuIGJlIGEgc3RyaW5nIG9yIGEgZmlsZS1saWtlIG9iamVjdCkKLSAgICAgICAg
aXMgZmVkIGludG8gdGhlIHVuZGVybHlpbmcgcGFyc2VyLgotCi0gICAgICAgIHNnbWxsaWIgd2ls
bCBwcm9jZXNzIG1vc3QgYmFkIEhUTUwsIGFuZCB0aGUgQmVhdXRpZnVsU291cAotICAgICAgICBj
bGFzcyBoYXMgc29tZSB0cmlja3MgZm9yIGRlYWxpbmcgd2l0aCBzb21lIEhUTUwgdGhhdCBraWxs
cwotICAgICAgICBzZ21sbGliLCBidXQgQmVhdXRpZnVsIFNvdXAgY2FuIG5vbmV0aGVsZXNzIGNo
b2tlIG9yIGxvc2UgZGF0YQotICAgICAgICBpZiB5b3VyIGRhdGEgdXNlcyBzZWxmLWNsb3Npbmcg
dGFncyBvciBkZWNsYXJhdGlvbnMKLSAgICAgICAgaW5jb3JyZWN0bHkuCi0KLSAgICAgICAgQnkg
ZGVmYXVsdCwgQmVhdXRpZnVsIFNvdXAgdXNlcyByZWdleGVzIHRvIHNhbml0aXplIGlucHV0LAot
ICAgICAgICBhdm9pZGluZyB0aGUgdmFzdCBtYWpvcml0eSBvZiB0aGVzZSBwcm9ibGVtcy4gSWYg
dGhlIHByb2JsZW1zCi0gICAgICAgIGRvbid0IGFwcGx5IHRvIHlvdSwgcGFzcyBpbiBGYWxzZSBm
b3IgbWFya3VwTWFzc2FnZSwgYW5kCi0gICAgICAgIHlvdSdsbCBnZXQgYmV0dGVyIHBlcmZvcm1h
bmNlLgotCi0gICAgICAgIFRoZSBkZWZhdWx0IHBhcnNlciBtYXNzYWdlIHRlY2huaXF1ZXMgZml4
IHRoZSB0d28gbW9zdCBjb21tb24KLSAgICAgICAgaW5zdGFuY2VzIG9mIGludmFsaWQgSFRNTCB0
aGF0IGNob2tlIHNnbWxsaWI6Ci0KLSAgICAgICAgIDxici8+IChObyBzcGFjZSBiZXR3ZWVuIG5h
bWUgb2YgY2xvc2luZyB0YWcgYW5kIHRhZyBjbG9zZSkKLSAgICAgICAgIDwhIC0tQ29tbWVudC0t
PiAoRXh0cmFuZW91cyB3aGl0ZXNwYWNlIGluIGRlY2xhcmF0aW9uKQotCi0gICAgICAgIFlvdSBj
YW4gcGFzcyBpbiBhIGN1c3RvbSBsaXN0IG9mIChSRSBvYmplY3QsIHJlcGxhY2UgbWV0aG9kKQot
ICAgICAgICB0dXBsZXMgdG8gZ2V0IEJlYXV0aWZ1bCBTb3VwIHRvIHNjcnViIHlvdXIgaW5wdXQg
dGhlIHdheSB5b3UKLSAgICAgICAgd2FudC4iIiIKLQotICAgICAgICBzZWxmLnBhcnNlT25seVRo
ZXNlID0gcGFyc2VPbmx5VGhlc2UKLSAgICAgICAgc2VsZi5mcm9tRW5jb2RpbmcgPSBmcm9tRW5j
b2RpbmcKLSAgICAgICAgc2VsZi5zbWFydFF1b3Rlc1RvID0gc21hcnRRdW90ZXNUbwotICAgICAg
ICBzZWxmLmNvbnZlcnRFbnRpdGllcyA9IGNvbnZlcnRFbnRpdGllcwotICAgICAgICAjIFNldCB0
aGUgcnVsZXMgZm9yIGhvdyB3ZSdsbCBkZWFsIHdpdGggdGhlIGVudGl0aWVzIHdlCi0gICAgICAg
ICMgZW5jb3VudGVyCi0gICAgICAgIGlmIHNlbGYuY29udmVydEVudGl0aWVzOgotICAgICAgICAg
ICAgIyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gY29udmVydCBlbmNvZGVkIGNoYXJhY3RlcnMg
dG8KLSAgICAgICAgICAgICMgZW50aXRpZXMgZXZlbiB3aGlsZSB5b3UncmUgY29udmVydGluZyBl
bnRpdGllcyB0byBVbmljb2RlLgotICAgICAgICAgICAgIyBKdXN0IGNvbnZlcnQgaXQgYWxsIHRv
IFVuaWNvZGUuCi0gICAgICAgICAgICBzZWxmLnNtYXJ0UXVvdGVzVG8gPSBOb25lCi0gICAgICAg
ICAgICBpZiBjb252ZXJ0RW50aXRpZXMgPT0gc2VsZi5IVE1MX0VOVElUSUVTOgotICAgICAgICAg
ICAgICAgIHNlbGYuY29udmVydFhNTEVudGl0aWVzID0gRmFsc2UKLSAgICAgICAgICAgICAgICBz
ZWxmLmNvbnZlcnRIVE1MRW50aXRpZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5lc2Nh
cGVVbnJlY29nbml6ZWRFbnRpdGllcyA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgY29udmVydEVu
dGl0aWVzID09IHNlbGYuWEhUTUxfRU5USVRJRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb252
ZXJ0WE1MRW50aXRpZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0SFRNTEVu
dGl0aWVzID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuZXNjYXBlVW5yZWNvZ25pemVkRW50
aXRpZXMgPSBGYWxzZQotICAgICAgICAgICAgZWxpZiBjb252ZXJ0RW50aXRpZXMgPT0gc2VsZi5Y
TUxfRU5USVRJRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXMgPSBU
cnVlCi0gICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVzID0gRmFsc2UKLSAg
ICAgICAgICAgICAgICBzZWxmLmVzY2FwZVVucmVjb2duaXplZEVudGl0aWVzID0gRmFsc2UKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuY29udmVydFhNTEVudGl0aWVzID0gRmFsc2UK
LSAgICAgICAgICAgIHNlbGYuY29udmVydEhUTUxFbnRpdGllcyA9IEZhbHNlCi0gICAgICAgICAg
ICBzZWxmLmVzY2FwZVVucmVjb2duaXplZEVudGl0aWVzID0gRmFsc2UKLQotICAgICAgICBzZWxm
Lmluc3RhbmNlU2VsZkNsb3NpbmdUYWdzID0gYnVpbGRUYWdNYXAoTm9uZSwgc2VsZkNsb3NpbmdU
YWdzKQotICAgICAgICBTR01MUGFyc2VyLl9faW5pdF9fKHNlbGYpCi0KLSAgICAgICAgaWYgaGFz
YXR0cihtYXJrdXAsICdyZWFkJyk6ICAgICAgICAjIEl0J3MgYSBmaWxlLXR5cGUgb2JqZWN0Lgot
ICAgICAgICAgICAgbWFya3VwID0gbWFya3VwLnJlYWQoKQotICAgICAgICBzZWxmLm1hcmt1cCA9
IG1hcmt1cAotICAgICAgICBzZWxmLm1hcmt1cE1hc3NhZ2UgPSBtYXJrdXBNYXNzYWdlCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2ZlZWQoaXNIVE1MPWlzSFRNTCkKLSAgICAgICAg
ZXhjZXB0IFN0b3BQYXJzaW5nOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLm1hcmt1
cCA9IE5vbmUgICAgICAgICAgICAgICAgICMgVGhlIG1hcmt1cCBjYW4gbm93IGJlIEdDZWQKLQot
ICAgIGRlZiBjb252ZXJ0X2NoYXJyZWYoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlRoaXMgbWV0
aG9kIGZpeGVzIGEgYnVnIGluIFB5dGhvbidzIFNHTUxQYXJzZXIuIiIiCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIG4gPSBpbnQobmFtZSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0g
ICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgbm90IDAgPD0gbiA8PSAxMjcgOiAjIEFTQ0lJ
IGVuZHMgYXQgMTI3LCBub3QgMjU1Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmV0dXJu
IHNlbGYuY29udmVydF9jb2RlcG9pbnQobikKLQotICAgIGRlZiBfZmVlZChzZWxmLCBpbkRvY3Vt
ZW50RW5jb2Rpbmc9Tm9uZSwgaXNIVE1MPUZhbHNlKToKLSAgICAgICAgIyBDb252ZXJ0IHRoZSBk
b2N1bWVudCB0byBVbmljb2RlLgotICAgICAgICBtYXJrdXAgPSBzZWxmLm1hcmt1cAotICAgICAg
ICBpZiBpc2luc3RhbmNlKG1hcmt1cCwgdW5pY29kZSk6Ci0gICAgICAgICAgICBpZiBub3QgaGFz
YXR0cihzZWxmLCAnb3JpZ2luYWxFbmNvZGluZycpOgotICAgICAgICAgICAgICAgIHNlbGYub3Jp
Z2luYWxFbmNvZGluZyA9IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhbW1pdCA9
IFVuaWNvZGVEYW1taXRcCi0gICAgICAgICAgICAgICAgICAgICAobWFya3VwLCBbc2VsZi5mcm9t
RW5jb2RpbmcsIGluRG9jdW1lbnRFbmNvZGluZ10sCi0gICAgICAgICAgICAgICAgICAgICAgc21h
cnRRdW90ZXNUbz1zZWxmLnNtYXJ0UXVvdGVzVG8sIGlzSFRNTD1pc0hUTUwpCi0gICAgICAgICAg
ICBtYXJrdXAgPSBkYW1taXQudW5pY29kZQotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29k
aW5nID0gZGFtbWl0Lm9yaWdpbmFsRW5jb2RpbmcKLSAgICAgICAgICAgIHNlbGYuZGVjbGFyZWRI
VE1MRW5jb2RpbmcgPSBkYW1taXQuZGVjbGFyZWRIVE1MRW5jb2RpbmcKLSAgICAgICAgaWYgbWFy
a3VwOgotICAgICAgICAgICAgaWYgc2VsZi5tYXJrdXBNYXNzYWdlOgotICAgICAgICAgICAgICAg
IGlmIG5vdCBoYXNhdHRyKHNlbGYubWFya3VwTWFzc2FnZSwgIl9faXRlcl9fIik6Ci0gICAgICAg
ICAgICAgICAgICAgIHNlbGYubWFya3VwTWFzc2FnZSA9IHNlbGYuTUFSS1VQX01BU1NBR0UKLSAg
ICAgICAgICAgICAgICBmb3IgZml4LCBtIGluIHNlbGYubWFya3VwTWFzc2FnZToKLSAgICAgICAg
ICAgICAgICAgICAgbWFya3VwID0gZml4LnN1YihtLCBtYXJrdXApCi0gICAgICAgICAgICAgICAg
IyBUT0RPOiBXZSBnZXQgcmlkIG9mIG1hcmt1cE1hc3NhZ2Ugc28gdGhhdCB0aGUKLSAgICAgICAg
ICAgICAgICAjIHNvdXAgb2JqZWN0IGNhbiBiZSBkZWVwY29waWVkIGxhdGVyIG9uLiBTb21lCi0g
ICAgICAgICAgICAgICAgIyBQeXRob24gaW5zdGFsbGF0aW9ucyBjYW4ndCBjb3B5IHJlZ2V4ZXMu
IElmIGFueW9uZQotICAgICAgICAgICAgICAgICMgd2FzIHJlbHlpbmcgb24gdGhlIGV4aXN0ZW5j
ZSBvZiBtYXJrdXBNYXNzYWdlLCB0aGlzCi0gICAgICAgICAgICAgICAgIyBtaWdodCBjYXVzZSBw
cm9ibGVtcy4KLSAgICAgICAgICAgICAgICBkZWwoc2VsZi5tYXJrdXBNYXNzYWdlKQotICAgICAg
ICBzZWxmLnJlc2V0KCkKLQotICAgICAgICBTR01MUGFyc2VyLmZlZWQoc2VsZiwgbWFya3VwKQot
ICAgICAgICAjIENsb3NlIG91dCBhbnkgdW5maW5pc2hlZCBzdHJpbmdzIGFuZCBjbG9zZSBhbGwg
dGhlIG9wZW4gdGFncy4KLSAgICAgICAgc2VsZi5lbmREYXRhKCkKLSAgICAgICAgd2hpbGUgc2Vs
Zi5jdXJyZW50VGFnLm5hbWUgIT0gc2VsZi5ST09UX1RBR19OQU1FOgotICAgICAgICAgICAgc2Vs
Zi5wb3BUYWcoKQotCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG1ldGhvZE5hbWUpOgotICAg
ICAgICAiIiJUaGlzIG1ldGhvZCByb3V0ZXMgbWV0aG9kIGNhbGwgcmVxdWVzdHMgdG8gZWl0aGVy
IHRoZSBTR01MUGFyc2VyCi0gICAgICAgIHN1cGVyY2xhc3Mgb3IgdGhlIFRhZyBzdXBlcmNsYXNz
LCBkZXBlbmRpbmcgb24gdGhlIG1ldGhvZCBuYW1lLiIiIgotICAgICAgICAjcHJpbnQgIl9fZ2V0
YXR0cl9fIGNhbGxlZCBvbiAlcy4lcyIgJSAoc2VsZi5fX2NsYXNzX18sIG1ldGhvZE5hbWUpCi0K
LSAgICAgICAgaWYgbWV0aG9kTmFtZS5zdGFydHN3aXRoKCdzdGFydF8nKSBvciBtZXRob2ROYW1l
LnN0YXJ0c3dpdGgoJ2VuZF8nKSBcCi0gICAgICAgICAgICAgICBvciBtZXRob2ROYW1lLnN0YXJ0
c3dpdGgoJ2RvXycpOgotICAgICAgICAgICAgcmV0dXJuIFNHTUxQYXJzZXIuX19nZXRhdHRyX18o
c2VsZiwgbWV0aG9kTmFtZSkKLSAgICAgICAgZWxpZiBub3QgbWV0aG9kTmFtZS5zdGFydHN3aXRo
KCdfXycpOgotICAgICAgICAgICAgcmV0dXJuIFRhZy5fX2dldGF0dHJfXyhzZWxmLCBtZXRob2RO
YW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKLQot
ICAgIGRlZiBpc1NlbGZDbG9zaW5nVGFnKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJSZXR1cm5z
IHRydWUgaWZmIHRoZSBnaXZlbiBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgYQotICAgICAgICBzZWxm
LWNsb3NpbmcgdGFnIGFjY29yZGluZyB0byB0aGlzIHBhcnNlci4iIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuU0VMRl9DTE9TSU5HX1RBR1MuaGFzX2tleShuYW1lKSBcCi0gICAgICAgICAgICAgICBv
ciBzZWxmLmluc3RhbmNlU2VsZkNsb3NpbmdUYWdzLmhhc19rZXkobmFtZSkKLQotICAgIGRlZiBy
ZXNldChzZWxmKToKLSAgICAgICAgVGFnLl9faW5pdF9fKHNlbGYsIHNlbGYsIHNlbGYuUk9PVF9U
QUdfTkFNRSkKLSAgICAgICAgc2VsZi5oaWRkZW4gPSAxCi0gICAgICAgIFNHTUxQYXJzZXIucmVz
ZXQoc2VsZikKLSAgICAgICAgc2VsZi5jdXJyZW50RGF0YSA9IFtdCi0gICAgICAgIHNlbGYuY3Vy
cmVudFRhZyA9IE5vbmUKLSAgICAgICAgc2VsZi50YWdTdGFjayA9IFtdCi0gICAgICAgIHNlbGYu
cXVvdGVTdGFjayA9IFtdCi0gICAgICAgIHNlbGYucHVzaFRhZyhzZWxmKQotCi0gICAgZGVmIHBv
cFRhZyhzZWxmKToKLSAgICAgICAgdGFnID0gc2VsZi50YWdTdGFjay5wb3AoKQotCi0gICAgICAg
ICNwcmludCAiUG9wIiwgdGFnLm5hbWUKLSAgICAgICAgaWYgc2VsZi50YWdTdGFjazoKLSAgICAg
ICAgICAgIHNlbGYuY3VycmVudFRhZyA9IHNlbGYudGFnU3RhY2tbLTFdCi0gICAgICAgIHJldHVy
biBzZWxmLmN1cnJlbnRUYWcKLQotICAgIGRlZiBwdXNoVGFnKHNlbGYsIHRhZyk6Ci0gICAgICAg
ICNwcmludCAiUHVzaCIsIHRhZy5uYW1lCi0gICAgICAgIGlmIHNlbGYuY3VycmVudFRhZzoKLSAg
ICAgICAgICAgIHNlbGYuY3VycmVudFRhZy5jb250ZW50cy5hcHBlbmQodGFnKQotICAgICAgICBz
ZWxmLnRhZ1N0YWNrLmFwcGVuZCh0YWcpCi0gICAgICAgIHNlbGYuY3VycmVudFRhZyA9IHNlbGYu
dGFnU3RhY2tbLTFdCi0KLSAgICBkZWYgZW5kRGF0YShzZWxmLCBjb250YWluZXJDbGFzcz1OYXZp
Z2FibGVTdHJpbmcpOgotICAgICAgICBpZiBzZWxmLmN1cnJlbnREYXRhOgotICAgICAgICAgICAg
Y3VycmVudERhdGEgPSB1Jycuam9pbihzZWxmLmN1cnJlbnREYXRhKQotICAgICAgICAgICAgaWYg
KGN1cnJlbnREYXRhLnRyYW5zbGF0ZShzZWxmLlNUUklQX0FTQ0lJX1NQQUNFUykgPT0gJycgYW5k
Ci0gICAgICAgICAgICAgICAgbm90IHNldChbdGFnLm5hbWUgZm9yIHRhZyBpbiBzZWxmLnRhZ1N0
YWNrXSkuaW50ZXJzZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlBSRVNFUlZFX1dI
SVRFU1BBQ0VfVEFHUykpOgotICAgICAgICAgICAgICAgIGlmICdcbicgaW4gY3VycmVudERhdGE6
Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gJ1xuJwotICAgICAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gJyAnCi0gICAgICAgICAg
ICBzZWxmLmN1cnJlbnREYXRhID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYucGFyc2VPbmx5VGhl
c2UgYW5kIGxlbihzZWxmLnRhZ1N0YWNrKSA8PSAxIGFuZCBcCi0gICAgICAgICAgICAgICAgICAg
KG5vdCBzZWxmLnBhcnNlT25seVRoZXNlLnRleHQgb3IgXAotICAgICAgICAgICAgICAgICAgICBu
b3Qgc2VsZi5wYXJzZU9ubHlUaGVzZS5zZWFyY2goY3VycmVudERhdGEpKToKLSAgICAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgICAgIG8gPSBjb250YWluZXJDbGFzcyhjdXJyZW50RGF0YSkK
LSAgICAgICAgICAgIG8uc2V0dXAoc2VsZi5jdXJyZW50VGFnLCBzZWxmLnByZXZpb3VzKQotICAg
ICAgICAgICAgaWYgc2VsZi5wcmV2aW91czoKLSAgICAgICAgICAgICAgICBzZWxmLnByZXZpb3Vz
Lm5leHQgPSBvCi0gICAgICAgICAgICBzZWxmLnByZXZpb3VzID0gbwotICAgICAgICAgICAgc2Vs
Zi5jdXJyZW50VGFnLmNvbnRlbnRzLmFwcGVuZChvKQotCi0KLSAgICBkZWYgX3BvcFRvVGFnKHNl
bGYsIG5hbWUsIGluY2x1c2l2ZVBvcD1UcnVlKToKLSAgICAgICAgIiIiUG9wcyB0aGUgdGFnIHN0
YWNrIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIG1vc3QgcmVjZW50Ci0gICAgICAgIGluc3RhbmNl
IG9mIHRoZSBnaXZlbiB0YWcuIElmIGluY2x1c2l2ZVBvcCBpcyBmYWxzZSwgcG9wcyB0aGUgdGFn
Ci0gICAgICAgIHN0YWNrIHVwIHRvIGJ1dCAqbm90KiBpbmNsdWRpbmcgdGhlIG1vc3QgcmVjZW50
IGluc3RxYW5jZSBvZgotICAgICAgICB0aGUgZ2l2ZW4gdGFnLiIiIgotICAgICAgICAjcHJpbnQg
IlBvcHBpbmcgdG8gJXMiICUgbmFtZQotICAgICAgICBpZiBuYW1lID09IHNlbGYuUk9PVF9UQUdf
TkFNRToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIG51bVBvcHMgPSAwCi0gICAgICAg
IG1vc3RSZWNlbnRUYWcgPSBOb25lCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzZWxmLnRh
Z1N0YWNrKS0xLCAwLCAtMSk6Ci0gICAgICAgICAgICBpZiBuYW1lID09IHNlbGYudGFnU3RhY2tb
aV0ubmFtZToKLSAgICAgICAgICAgICAgICBudW1Qb3BzID0gbGVuKHNlbGYudGFnU3RhY2spLWkK
LSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBpZiBub3QgaW5jbHVzaXZlUG9wOgotICAg
ICAgICAgICAgbnVtUG9wcyA9IG51bVBvcHMgLSAxCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2Uo
MCwgbnVtUG9wcyk6Ci0gICAgICAgICAgICBtb3N0UmVjZW50VGFnID0gc2VsZi5wb3BUYWcoKQot
ICAgICAgICByZXR1cm4gbW9zdFJlY2VudFRhZwotCi0gICAgZGVmIF9zbWFydFBvcChzZWxmLCBu
YW1lKToKLQotICAgICAgICAiIiJXZSBuZWVkIHRvIHBvcCB1cCB0byB0aGUgcHJldmlvdXMgdGFn
IG9mIHRoaXMgdHlwZSwgdW5sZXNzCi0gICAgICAgIG9uZSBvZiB0aGlzIHRhZydzIG5lc3Rpbmcg
cmVzZXQgdHJpZ2dlcnMgY29tZXMgYmV0d2VlbiB0aGlzCi0gICAgICAgIHRhZyBhbmQgdGhlIHBy
ZXZpb3VzIHRhZyBvZiB0aGlzIHR5cGUsIE9SIHVubGVzcyB0aGlzIHRhZyBpcyBhCi0gICAgICAg
IGdlbmVyaWMgbmVzdGluZyB0cmlnZ2VyIGFuZCBhbm90aGVyIGdlbmVyaWMgbmVzdGluZyB0cmln
Z2VyCi0gICAgICAgIGNvbWVzIGJldHdlZW4gdGhpcyB0YWcgYW5kIHRoZSBwcmV2aW91cyB0YWcg
b2YgdGhpcyB0eXBlLgotCi0gICAgICAgIEV4YW1wbGVzOgotICAgICAgICAgPHA+Rm9vPGI+QmFy
ICo8cD4qIHNob3VsZCBwb3AgdG8gJ3AnLCBub3QgJ2InLgotICAgICAgICAgPHA+Rm9vPHRhYmxl
PkJhciAqPHA+KiBzaG91bGQgcG9wIHRvICd0YWJsZScsIG5vdCAncCcuCi0gICAgICAgICA8cD5G
b288dGFibGU+PHRyPkJhciAqPHA+KiBzaG91bGQgcG9wIHRvICd0cicsIG5vdCAncCcuCi0KLSAg
ICAgICAgIDxsaT48dWw+PGxpPiAqPGxpPiogc2hvdWxkIHBvcCB0byAndWwnLCBub3QgdGhlIGZp
cnN0ICdsaScuCi0gICAgICAgICA8dHI+PHRhYmxlPjx0cj4gKjx0cj4qIHNob3VsZCBwb3AgdG8g
J3RhYmxlJywgbm90IHRoZSBmaXJzdCAndHInCi0gICAgICAgICA8dGQ+PHRyPjx0ZD4gKjx0ZD4q
IHNob3VsZCBwb3AgdG8gJ3RyJywgbm90IHRoZSBmaXJzdCAndGQnCi0gICAgICAgICIiIgotCi0g
ICAgICAgIG5lc3RpbmdSZXNldFRyaWdnZXJzID0gc2VsZi5ORVNUQUJMRV9UQUdTLmdldChuYW1l
KQotICAgICAgICBpc05lc3RhYmxlID0gbmVzdGluZ1Jlc2V0VHJpZ2dlcnMgIT0gTm9uZQotICAg
ICAgICBpc1Jlc2V0TmVzdGluZyA9IHNlbGYuUkVTRVRfTkVTVElOR19UQUdTLmhhc19rZXkobmFt
ZSkKLSAgICAgICAgcG9wVG8gPSBOb25lCi0gICAgICAgIGluY2x1c2l2ZSA9IFRydWUKLSAgICAg
ICAgZm9yIGkgaW4gcmFuZ2UobGVuKHNlbGYudGFnU3RhY2spLTEsIDAsIC0xKToKLSAgICAgICAg
ICAgIHAgPSBzZWxmLnRhZ1N0YWNrW2ldCi0gICAgICAgICAgICBpZiAobm90IHAgb3IgcC5uYW1l
ID09IG5hbWUpIGFuZCBub3QgaXNOZXN0YWJsZToKLSAgICAgICAgICAgICAgICAjTm9uLW5lc3Rh
YmxlIHRhZ3MgZ2V0IHBvcHBlZCB0byB0aGUgdG9wIG9yIHRvIHRoZWlyCi0gICAgICAgICAgICAg
ICAgI2xhc3Qgb2NjdXJhbmNlLgotICAgICAgICAgICAgICAgIHBvcFRvID0gbmFtZQotICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiAobmVzdGluZ1Jlc2V0VHJpZ2dlcnMgaXMg
bm90IE5vbmUKLSAgICAgICAgICAgICAgICBhbmQgcC5uYW1lIGluIG5lc3RpbmdSZXNldFRyaWdn
ZXJzKSBcCi0gICAgICAgICAgICAgICAgb3IgKG5lc3RpbmdSZXNldFRyaWdnZXJzIGlzIE5vbmUg
YW5kIGlzUmVzZXROZXN0aW5nCi0gICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLlJFU0VUX05F
U1RJTkdfVEFHUy5oYXNfa2V5KHAubmFtZSkpOgotCi0gICAgICAgICAgICAgICAgI0lmIHdlIGVu
Y291bnRlciBvbmUgb2YgdGhlIG5lc3RpbmcgcmVzZXQgdHJpZ2dlcnMKLSAgICAgICAgICAgICAg
ICAjcGVjdWxpYXIgdG8gdGhpcyB0YWcsIG9yIHdlIGVuY291bnRlciBhbm90aGVyIHRhZwotICAg
ICAgICAgICAgICAgICN0aGF0IGNhdXNlcyBuZXN0aW5nIHRvIHJlc2V0LCBwb3AgdXAgdG8gYnV0
IG5vdAotICAgICAgICAgICAgICAgICNpbmNsdWRpbmcgdGhhdCB0YWcuCi0gICAgICAgICAgICAg
ICAgcG9wVG8gPSBwLm5hbWUKLSAgICAgICAgICAgICAgICBpbmNsdXNpdmUgPSBGYWxzZQotICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwID0gcC5wYXJlbnQKLSAgICAgICAgaWYg
cG9wVG86Ci0gICAgICAgICAgICBzZWxmLl9wb3BUb1RhZyhwb3BUbywgaW5jbHVzaXZlKQotCi0g
ICAgZGVmIHVua25vd25fc3RhcnR0YWcoc2VsZiwgbmFtZSwgYXR0cnMsIHNlbGZDbG9zaW5nPTAp
OgotICAgICAgICAjcHJpbnQgIlN0YXJ0IHRhZyAlczogJXMiICUgKG5hbWUsIGF0dHJzKQotICAg
ICAgICBpZiBzZWxmLnF1b3RlU3RhY2s6Ci0gICAgICAgICAgICAjVGhpcyBpcyBub3QgYSByZWFs
IHRhZy4KLSAgICAgICAgICAgICNwcmludCAiPCVzPiBpcyBub3QgcmVhbCEiICUgbmFtZQotICAg
ICAgICAgICAgYXR0cnMgPSAnJy5qb2luKFsnICVzPSIlcyInICUgKHgsIHkpIGZvciB4LCB5IGlu
IGF0dHJzXSkKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoJzwlcyVzPicgJSAobmFtZSwg
YXR0cnMpKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuZW5kRGF0YSgpCi0KLSAg
ICAgICAgaWYgbm90IHNlbGYuaXNTZWxmQ2xvc2luZ1RhZyhuYW1lKSBhbmQgbm90IHNlbGZDbG9z
aW5nOgotICAgICAgICAgICAgc2VsZi5fc21hcnRQb3AobmFtZSkKLQotICAgICAgICBpZiBzZWxm
LnBhcnNlT25seVRoZXNlIGFuZCBsZW4oc2VsZi50YWdTdGFjaykgPD0gMSBcCi0gICAgICAgICAg
ICAgICBhbmQgKHNlbGYucGFyc2VPbmx5VGhlc2UudGV4dCBvciBub3Qgc2VsZi5wYXJzZU9ubHlU
aGVzZS5zZWFyY2hUYWcobmFtZSwgYXR0cnMpKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgIHRhZyA9IFRhZyhzZWxmLCBuYW1lLCBhdHRycywgc2VsZi5jdXJyZW50VGFnLCBzZWxmLnBy
ZXZpb3VzKQotICAgICAgICBpZiBzZWxmLnByZXZpb3VzOgotICAgICAgICAgICAgc2VsZi5wcmV2
aW91cy5uZXh0ID0gdGFnCi0gICAgICAgIHNlbGYucHJldmlvdXMgPSB0YWcKLSAgICAgICAgc2Vs
Zi5wdXNoVGFnKHRhZykKLSAgICAgICAgaWYgc2VsZkNsb3Npbmcgb3Igc2VsZi5pc1NlbGZDbG9z
aW5nVGFnKG5hbWUpOgotICAgICAgICAgICAgc2VsZi5wb3BUYWcoKQotICAgICAgICBpZiBuYW1l
IGluIHNlbGYuUVVPVEVfVEFHUzoKLSAgICAgICAgICAgICNwcmludCAiQmVnaW5uaW5nIHF1b3Rl
ICglcykiICUgbmFtZQotICAgICAgICAgICAgc2VsZi5xdW90ZVN0YWNrLmFwcGVuZChuYW1lKQot
ICAgICAgICAgICAgc2VsZi5saXRlcmFsID0gMQotICAgICAgICByZXR1cm4gdGFnCi0KLSAgICBk
ZWYgdW5rbm93bl9lbmR0YWcoc2VsZiwgbmFtZSk6Ci0gICAgICAgICNwcmludCAiRW5kIHRhZyAl
cyIgJSBuYW1lCi0gICAgICAgIGlmIHNlbGYucXVvdGVTdGFjayBhbmQgc2VsZi5xdW90ZVN0YWNr
Wy0xXSAhPSBuYW1lOgotICAgICAgICAgICAgI1RoaXMgaXMgbm90IGEgcmVhbCBlbmQgdGFnLgot
ICAgICAgICAgICAgI3ByaW50ICI8LyVzPiBpcyBub3QgcmVhbCEiICUgbmFtZQotICAgICAgICAg
ICAgc2VsZi5oYW5kbGVfZGF0YSgnPC8lcz4nICUgbmFtZSkKLSAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBzZWxmLmVuZERhdGEoKQotICAgICAgICBzZWxmLl9wb3BUb1RhZyhuYW1lKQotICAg
ICAgICBpZiBzZWxmLnF1b3RlU3RhY2sgYW5kIHNlbGYucXVvdGVTdGFja1stMV0gPT0gbmFtZToK
LSAgICAgICAgICAgIHNlbGYucXVvdGVTdGFjay5wb3AoKQotICAgICAgICAgICAgc2VsZi5saXRl
cmFsID0gKGxlbihzZWxmLnF1b3RlU3RhY2spID4gMCkKLQotICAgIGRlZiBoYW5kbGVfZGF0YShz
ZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5jdXJyZW50RGF0YS5hcHBlbmQoZGF0YSkKLQotICAg
IGRlZiBfdG9TdHJpbmdTdWJjbGFzcyhzZWxmLCB0ZXh0LCBzdWJjbGFzcyk6Ci0gICAgICAgICIi
IkFkZHMgYSBjZXJ0YWluIHBpZWNlIG9mIHRleHQgdG8gdGhlIHRyZWUgYXMgYSBOYXZpZ2FibGVT
dHJpbmcKLSAgICAgICAgc3ViY2xhc3MuIiIiCi0gICAgICAgIHNlbGYuZW5kRGF0YSgpCi0gICAg
ICAgIHNlbGYuaGFuZGxlX2RhdGEodGV4dCkKLSAgICAgICAgc2VsZi5lbmREYXRhKHN1YmNsYXNz
KQotCi0gICAgZGVmIGhhbmRsZV9waShzZWxmLCB0ZXh0KToKLSAgICAgICAgIiIiSGFuZGxlIGEg
cHJvY2Vzc2luZyBpbnN0cnVjdGlvbiBhcyBhIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgotICAgICAg
ICBvYmplY3QsIHBvc3NpYmx5IG9uZSB3aXRoIGEgJVNPVVAtRU5DT0RJTkclIHNsb3QgaW50byB3
aGljaCBhbgotICAgICAgICBlbmNvZGluZyB3aWxsIGJlIHBsdWdnZWQgbGF0ZXIuIiIiCi0gICAg
ICAgIGlmIHRleHRbOjNdID09ICJ4bWwiOgotICAgICAgICAgICAgdGV4dCA9IHUieG1sIHZlcnNp
b249JzEuMCcgZW5jb2Rpbmc9JyVTT1VQLUVOQ09ESU5HJSciCi0gICAgICAgIHNlbGYuX3RvU3Ry
aW5nU3ViY2xhc3ModGV4dCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uKQotCi0gICAgZGVmIGhhbmRs
ZV9jb21tZW50KHNlbGYsIHRleHQpOgotICAgICAgICAiSGFuZGxlIGNvbW1lbnRzIGFzIENvbW1l
bnQgb2JqZWN0cy4iCi0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3ModGV4dCwgQ29tbWVu
dCkKLQotICAgIGRlZiBoYW5kbGVfY2hhcnJlZihzZWxmLCByZWYpOgotICAgICAgICAiSGFuZGxl
IGNoYXJhY3RlciByZWZlcmVuY2VzIGFzIGRhdGEuIgotICAgICAgICBpZiBzZWxmLmNvbnZlcnRF
bnRpdGllczoKLSAgICAgICAgICAgIGRhdGEgPSB1bmljaHIoaW50KHJlZikpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBkYXRhID0gJyYjJXM7JyAlIHJlZgotICAgICAgICBzZWxmLmhhbmRs
ZV9kYXRhKGRhdGEpCi0KLSAgICBkZWYgaGFuZGxlX2VudGl0eXJlZihzZWxmLCByZWYpOgotICAg
ICAgICAiIiJIYW5kbGUgZW50aXR5IHJlZmVyZW5jZXMgYXMgZGF0YSwgcG9zc2libHkgY29udmVy
dGluZyBrbm93bgotICAgICAgICBIVE1MIGFuZC9vciBYTUwgZW50aXR5IHJlZmVyZW5jZXMgdG8g
dGhlIGNvcnJlc3BvbmRpbmcgVW5pY29kZQotICAgICAgICBjaGFyYWN0ZXJzLiIiIgotICAgICAg
ICBkYXRhID0gTm9uZQotICAgICAgICBpZiBzZWxmLmNvbnZlcnRIVE1MRW50aXRpZXM6Ci0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IHVuaWNocihuYW1lMmNvZGVwb2lu
dFtyZWZdKQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBh
c3MKLQotICAgICAgICBpZiBub3QgZGF0YSBhbmQgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXM6Ci0g
ICAgICAgICAgICAgICAgZGF0YSA9IHNlbGYuWE1MX0VOVElUSUVTX1RPX1NQRUNJQUxfQ0hBUlMu
Z2V0KHJlZikKLQotICAgICAgICBpZiBub3QgZGF0YSBhbmQgc2VsZi5jb252ZXJ0SFRNTEVudGl0
aWVzIGFuZCBcCi0gICAgICAgICAgICBub3Qgc2VsZi5YTUxfRU5USVRJRVNfVE9fU1BFQ0lBTF9D
SEFSUy5nZXQocmVmKToKLSAgICAgICAgICAgICAgICAjIFRPRE86IFdlJ3ZlIGdvdCBhIHByb2Js
ZW0gaGVyZS4gV2UncmUgdG9sZCB0aGlzIGlzCi0gICAgICAgICAgICAgICAgIyBhbiBlbnRpdHkg
cmVmZXJlbmNlLCBidXQgaXQncyBub3QgYW4gWE1MIGVudGl0eQotICAgICAgICAgICAgICAgICMg
cmVmZXJlbmNlIG9yIGFuIEhUTUwgZW50aXR5IHJlZmVyZW5jZS4gTm9uZXRoZWxlc3MsCi0gICAg
ICAgICAgICAgICAgIyB0aGUgbG9naWNhbCB0aGluZyB0byBkbyBpcyB0byBwYXNzIGl0IHRocm91
Z2ggYXMgYW4KLSAgICAgICAgICAgICAgICAjIHVucmVjb2duaXplZCBlbnRpdHkgcmVmZXJlbmNl
LgotICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAjIEV4Y2VwdDogd2hlbiB0aGUg
aW5wdXQgaXMgIiZjYXJvbDsiIHRoaXMgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAjIHdpbGwg
YmUgY2FsbGVkIHdpdGggaW5wdXQgImNhcm9sIi4gV2hlbiB0aGUgaW5wdXQgaXMKLSAgICAgICAg
ICAgICAgICAjICJBVCZUIiwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIGlucHV0
Ci0gICAgICAgICAgICAgICAgIyAiVCIuIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhl
ciBhIHNlbWljb2xvbgotICAgICAgICAgICAgICAgICMgd2FzIHByZXNlbnQgb3JpZ2luYWxseSwg
c28gd2UgZG9uJ3Qga25vdyB3aGV0aGVyCi0gICAgICAgICAgICAgICAgIyB0aGlzIGlzIGFuIHVu
a25vd24gZW50aXR5IG9yIGp1c3QgYSBtaXNwbGFjZWQKLSAgICAgICAgICAgICAgICAjIGFtcGVy
c2FuZC4KLSAgICAgICAgICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgbW9yZSBjb21t
b24gY2FzZSBpcyBhIG1pc3BsYWNlZCBhbXBlcnNhbmQsIHNvIEkKLSAgICAgICAgICAgICAgICAj
IGVzY2FwZSB0aGUgYW1wZXJzYW5kIGFuZCBvbWl0IHRoZSB0cmFpbGluZyBzZW1pY29sb24uCi0g
ICAgICAgICAgICAgICAgZGF0YSA9ICImYW1wOyVzIiAlIHJlZgotICAgICAgICBpZiBub3QgZGF0
YToKLSAgICAgICAgICAgICMgVGhpcyBjYXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgYWJv
dmUsIGJlY2F1c2Ugd2UKLSAgICAgICAgICAgICMgaGF2ZW4ndCBhbHJlYWR5IGdvbmUgdGhyb3Vn
aCBhIHN1cHBvc2VkbHkgY29tcHJlaGVuc2l2ZQotICAgICAgICAgICAgIyBtYXBwaW5nIG9mIGVu
dGl0aWVzIHRvIFVuaWNvZGUgY2hhcmFjdGVycy4gV2UgbWlnaHQgbm90Ci0gICAgICAgICAgICAj
IGhhdmUgZ29uZSB0aHJvdWdoIGFueSBtYXBwaW5nIGF0IGFsbC4gU28gdGhlIGNoYW5jZXMgYXJl
Ci0gICAgICAgICAgICAjIHZlcnkgaGlnaCB0aGF0IHRoaXMgaXMgYSByZWFsIGVudGl0eSwgYW5k
IG5vdCBhCi0gICAgICAgICAgICAjIG1pc3BsYWNlZCBhbXBlcnNhbmQuCi0gICAgICAgICAgICBk
YXRhID0gIiYlczsiICUgcmVmCi0gICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoZGF0YSkKLQotICAg
IGRlZiBoYW5kbGVfZGVjbChzZWxmLCBkYXRhKToKLSAgICAgICAgIkhhbmRsZSBET0NUWVBFcyBh
bmQgdGhlIGxpa2UgYXMgRGVjbGFyYXRpb24gb2JqZWN0cy4iCi0gICAgICAgIHNlbGYuX3RvU3Ry
aW5nU3ViY2xhc3MoZGF0YSwgRGVjbGFyYXRpb24pCi0KLSAgICBkZWYgcGFyc2VfZGVjbGFyYXRp
b24oc2VsZiwgaSk6Ci0gICAgICAgICIiIlRyZWF0IGEgYm9ndXMgU0dNTCBkZWNsYXJhdGlvbiBh
cyByYXcgZGF0YS4gVHJlYXQgYSBDREFUQQotICAgICAgICBkZWNsYXJhdGlvbiBhcyBhIENEYXRh
IG9iamVjdC4iIiIKLSAgICAgICAgaiA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5yYXdkYXRhW2k6
aSs5XSA9PSAnPCFbQ0RBVEFbJzoKLSAgICAgICAgICAgICBrID0gc2VsZi5yYXdkYXRhLmZpbmQo
J11dPicsIGkpCi0gICAgICAgICAgICAgaWYgayA9PSAtMToKLSAgICAgICAgICAgICAgICAgayA9
IGxlbihzZWxmLnJhd2RhdGEpCi0gICAgICAgICAgICAgZGF0YSA9IHNlbGYucmF3ZGF0YVtpKzk6
a10KLSAgICAgICAgICAgICBqID0gayszCi0gICAgICAgICAgICAgc2VsZi5fdG9TdHJpbmdTdWJj
bGFzcyhkYXRhLCBDRGF0YSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICBqID0gU0dNTFBhcnNlci5wYXJzZV9kZWNsYXJhdGlvbihzZWxmLCBpKQotICAg
ICAgICAgICAgZXhjZXB0IFNHTUxQYXJzZUVycm9yOgotICAgICAgICAgICAgICAgIHRvSGFuZGxl
ID0gc2VsZi5yYXdkYXRhW2k6XQotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEodG9I
YW5kbGUpCi0gICAgICAgICAgICAgICAgaiA9IGkgKyBsZW4odG9IYW5kbGUpCi0gICAgICAgIHJl
dHVybiBqCi0KLWNsYXNzIEJlYXV0aWZ1bFNvdXAoQmVhdXRpZnVsU3RvbmVTb3VwKToKLQotICAg
ICIiIlRoaXMgcGFyc2VyIGtub3dzIHRoZSBmb2xsb3dpbmcgZmFjdHMgYWJvdXQgSFRNTDoKLQot
ICAgICogU29tZSB0YWdzIGhhdmUgbm8gY2xvc2luZyB0YWcgYW5kIHNob3VsZCBiZSBpbnRlcnBy
ZXRlZCBhcyBiZWluZwotICAgICAgY2xvc2VkIGFzIHNvb24gYXMgdGhleSBhcmUgZW5jb3VudGVy
ZWQuCi0KLSAgICAqIFRoZSB0ZXh0IGluc2lkZSBzb21lIHRhZ3MgKGllLiAnc2NyaXB0JykgbWF5
IGNvbnRhaW4gdGFncyB3aGljaAotICAgICAgYXJlIG5vdCByZWFsbHkgcGFydCBvZiB0aGUgZG9j
dW1lbnQgYW5kIHdoaWNoIHNob3VsZCBiZSBwYXJzZWQKLSAgICAgIGFzIHRleHQsIG5vdCB0YWdz
LiBJZiB5b3Ugd2FudCB0byBwYXJzZSB0aGUgdGV4dCBhcyB0YWdzLCB5b3UgY2FuCi0gICAgICBh
bHdheXMgZmV0Y2ggaXQgYW5kIHBhcnNlIGl0IGV4cGxpY2l0bHkuCi0KLSAgICAqIFRhZyBuZXN0
aW5nIHJ1bGVzOgotCi0gICAgICBNb3N0IHRhZ3MgY2FuJ3QgYmUgbmVzdGVkIGF0IGFsbC4gRm9y
IGluc3RhbmNlLCB0aGUgb2NjdXJhbmNlIG9mCi0gICAgICBhIDxwPiB0YWcgc2hvdWxkIGltcGxp
Y2l0bHkgY2xvc2UgdGhlIHByZXZpb3VzIDxwPiB0YWcuCi0KLSAgICAgICA8cD5QYXJhMTxwPlBh
cmEyCi0gICAgICAgIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCBpbnRvOgotICAgICAgIDxwPlBhcmEx
PC9wPjxwPlBhcmEyCi0KLSAgICAgIFNvbWUgdGFncyBjYW4gYmUgbmVzdGVkIGFyYml0cmFyaWx5
LiBGb3IgaW5zdGFuY2UsIHRoZSBvY2N1cmFuY2UKLSAgICAgIG9mIGEgPGJsb2NrcXVvdGU+IHRh
ZyBzaG91bGQgX25vdF8gaW1wbGljaXRseSBjbG9zZSB0aGUgcHJldmlvdXMKLSAgICAgIDxibG9j
a3F1b3RlPiB0YWcuCi0KLSAgICAgICBBbGljZSBzYWlkOiA8YmxvY2txdW90ZT5Cb2Igc2FpZDog
PGJsb2NrcXVvdGU+QmxhaAotICAgICAgICBzaG91bGQgTk9UIGJlIHRyYW5zZm9ybWVkIGludG86
Ci0gICAgICAgQWxpY2Ugc2FpZDogPGJsb2NrcXVvdGU+Qm9iIHNhaWQ6IDwvYmxvY2txdW90ZT48
YmxvY2txdW90ZT5CbGFoCi0KLSAgICAgIFNvbWUgdGFncyBjYW4gYmUgbmVzdGVkLCBidXQgdGhl
IG5lc3RpbmcgaXMgcmVzZXQgYnkgdGhlCi0gICAgICBpbnRlcnBvc2l0aW9uIG9mIG90aGVyIHRh
Z3MuIEZvciBpbnN0YW5jZSwgYSA8dHI+IHRhZyBzaG91bGQKLSAgICAgIGltcGxpY2l0bHkgY2xv
c2UgdGhlIHByZXZpb3VzIDx0cj4gdGFnIHdpdGhpbiB0aGUgc2FtZSA8dGFibGU+LAotICAgICAg
YnV0IG5vdCBjbG9zZSBhIDx0cj4gdGFnIGluIGFub3RoZXIgdGFibGUuCi0KLSAgICAgICA8dGFi
bGU+PHRyPkJsYWg8dHI+QmxhaAotICAgICAgICBzaG91bGQgYmUgdHJhbnNmb3JtZWQgaW50bzoK
LSAgICAgICA8dGFibGU+PHRyPkJsYWg8L3RyPjx0cj5CbGFoCi0gICAgICAgIGJ1dCwKLSAgICAg
ICA8dHI+QmxhaDx0YWJsZT48dHI+QmxhaAotICAgICAgICBzaG91bGQgTk9UIGJlIHRyYW5zZm9y
bWVkIGludG8KLSAgICAgICA8dHI+QmxhaDx0YWJsZT48L3RyPjx0cj5CbGFoCi0KLSAgICBEaWZm
ZXJpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdGFnIG5lc3RpbmcgcnVsZXMgYXJlIGEgbWFqb3Igc291
cmNlCi0gICAgb2YgcHJvYmxlbXMgd2l0aCB0aGUgQmVhdXRpZnVsU291cCBjbGFzcy4gSWYgQmVh
dXRpZnVsU291cCBpcyBub3QKLSAgICB0cmVhdGluZyBhcyBuZXN0YWJsZSBhIHRhZyB5b3VyIHBh
Z2UgYXV0aG9yIHRyZWF0cyBhcyBuZXN0YWJsZSwKLSAgICB0cnkgSUNhbnRCZWxpZXZlSXRzQmVh
dXRpZnVsU291cCwgTWluaW1hbFNvdXAsIG9yCi0gICAgQmVhdXRpZnVsU3RvbmVTb3VwIGJlZm9y
ZSB3cml0aW5nIHlvdXIgb3duIHN1YmNsYXNzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
ICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIG5vdCBrd2FyZ3MuaGFzX2tleSgnc21hcnRR
dW90ZXNUbycpOgotICAgICAgICAgICAga3dhcmdzWydzbWFydFF1b3Rlc1RvJ10gPSBzZWxmLkhU
TUxfRU5USVRJRVMKLSAgICAgICAga3dhcmdzWydpc0hUTUwnXSA9IFRydWUKLSAgICAgICAgQmVh
dXRpZnVsU3RvbmVTb3VwLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQotICAgIFNF
TEZfQ0xPU0lOR19UQUdTID0gYnVpbGRUYWdNYXAoTm9uZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgnYnInICwgJ2hyJywgJ2lucHV0JywgJ2ltZycsICdtZXRhJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcGFjZXInLCAnbGluaycsICdmcmFt
ZScsICdiYXNlJywgJ2NvbCcpKQotCi0gICAgUFJFU0VSVkVfV0hJVEVTUEFDRV9UQUdTID0gc2V0
KFsncHJlJywgJ3RleHRhcmVhJ10pCi0KLSAgICBRVU9URV9UQUdTID0geydzY3JpcHQnIDogTm9u
ZSwgJ3RleHRhcmVhJyA6IE5vbmV9Ci0KLSAgICAjQWNjb3JkaW5nIHRvIHRoZSBIVE1MIHN0YW5k
YXJkLCBlYWNoIG9mIHRoZXNlIGlubGluZSB0YWdzIGNhbgotICAgICNjb250YWluIGFub3RoZXIg
dGFnIG9mIHRoZSBzYW1lIHR5cGUuIEZ1cnRoZXJtb3JlLCBpdCdzIGNvbW1vbgotICAgICN0byBh
Y3R1YWxseSB1c2UgdGhlc2UgdGFncyB0aGlzIHdheS4KLSAgICBORVNUQUJMRV9JTkxJTkVfVEFH
UyA9ICgnc3BhbicsICdmb250JywgJ3EnLCAnb2JqZWN0JywgJ2JkbycsICdzdWInLCAnc3VwJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VudGVyJykKLQotICAgICNBY2NvcmRpbmcg
dG8gdGhlIEhUTUwgc3RhbmRhcmQsIHRoZXNlIGJsb2NrIHRhZ3MgY2FuIGNvbnRhaW4KLSAgICAj
YW5vdGhlciB0YWcgb2YgdGhlIHNhbWUgdHlwZS4gRnVydGhlcm1vcmUsIGl0J3MgY29tbW9uCi0g
ICAgI3RvIGFjdHVhbGx5IHVzZSB0aGVzZSB0YWdzIHRoaXMgd2F5LgotICAgIE5FU1RBQkxFX0JM
T0NLX1RBR1MgPSAoJ2Jsb2NrcXVvdGUnLCAnZGl2JywgJ2ZpZWxkc2V0JywgJ2lucycsICdkZWwn
KQotCi0gICAgI0xpc3RzIGNhbiBjb250YWluIG90aGVyIGxpc3RzLCBidXQgdGhlcmUgYXJlIHJl
c3RyaWN0aW9ucy4KLSAgICBORVNUQUJMRV9MSVNUX1RBR1MgPSB7ICdvbCcgOiBbXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd1bCcgOiBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdsaScgOiBbJ3VsJywgJ29sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZGwn
IDogW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZGQnIDogWydkbCddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2R0JyA6IFsnZGwnXSB9Ci0KLSAgICAjVGFibGVzIGNhbiBj
b250YWluIG90aGVyIHRhYmxlcywgYnV0IHRoZXJlIGFyZSByZXN0cmljdGlvbnMuCi0gICAgTkVT
VEFCTEVfVEFCTEVfVEFHUyA9IHsndGFibGUnIDogW10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAndHInIDogWyd0YWJsZScsICd0Ym9keScsICd0Zm9vdCcsICd0aGVhZCddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3RkJyA6IFsndHInXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0aCcgOiBbJ3RyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlYWQn
IDogWyd0YWJsZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rib2R5JyA6IFsndGFi
bGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICd0Zm9vdCcgOiBbJ3RhYmxlJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICBOT05fTkVTVEFCTEVfQkxPQ0tfVEFH
UyA9ICgnYWRkcmVzcycsICdmb3JtJywgJ3AnLCAncHJlJykKLQotICAgICNJZiBvbmUgb2YgdGhl
c2UgdGFncyBpcyBlbmNvdW50ZXJlZCwgYWxsIHRhZ3MgdXAgdG8gdGhlIG5leHQgdGFnIG9mCi0g
ICAgI3RoaXMgdHlwZSBhcmUgcG9wcGVkLgotICAgIFJFU0VUX05FU1RJTkdfVEFHUyA9IGJ1aWxk
VGFnTWFwKE5vbmUsIE5FU1RBQkxFX0JMT0NLX1RBR1MsICdub3NjcmlwdCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OX05FU1RBQkxFX0JMT0NLX1RBR1MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVTVEFCTEVfTElTVF9UQUdTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FU1RBQkxFX1RBQkxFX1RBR1MpCi0K
LSAgICBORVNUQUJMRV9UQUdTID0gYnVpbGRUYWdNYXAoW10sIE5FU1RBQkxFX0lOTElORV9UQUdT
LCBORVNUQUJMRV9CTE9DS19UQUdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO
RVNUQUJMRV9MSVNUX1RBR1MsIE5FU1RBQkxFX1RBQkxFX1RBR1MpCi0KLSAgICAjIFVzZWQgdG8g
ZGV0ZWN0IHRoZSBjaGFyc2V0IGluIGEgTUVUQSB0YWc7IHNlZSBzdGFydF9tZXRhCi0gICAgQ0hB
UlNFVF9SRSA9IHJlLmNvbXBpbGUoIigoXnw7KVxzKmNoYXJzZXQ9KShbXjtdKikiLCByZS5NKQot
Ci0gICAgZGVmIHN0YXJ0X21ldGEoc2VsZiwgYXR0cnMpOgotICAgICAgICAiIiJCZWF1dGlmdWwg
U291cCBjYW4gZGV0ZWN0IGEgY2hhcnNldCBpbmNsdWRlZCBpbiBhIE1FVEEgdGFnLAotICAgICAg
ICB0cnkgdG8gY29udmVydCB0aGUgZG9jdW1lbnQgdG8gdGhhdCBjaGFyc2V0LCBhbmQgcmUtcGFy
c2UgdGhlCi0gICAgICAgIGRvY3VtZW50IGZyb20gdGhlIGJlZ2lubmluZy4iIiIKLSAgICAgICAg
aHR0cEVxdWl2ID0gTm9uZQotICAgICAgICBjb250ZW50VHlwZSA9IE5vbmUKLSAgICAgICAgY29u
dGVudFR5cGVJbmRleCA9IE5vbmUKLSAgICAgICAgdGFnTmVlZHNFbmNvZGluZ1N1YnN0aXR1dGlv
biA9IEZhbHNlCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGF0dHJzKSk6Ci0gICAg
ICAgICAgICBrZXksIHZhbHVlID0gYXR0cnNbaV0KLSAgICAgICAgICAgIGtleSA9IGtleS5sb3dl
cigpCi0gICAgICAgICAgICBpZiBrZXkgPT0gJ2h0dHAtZXF1aXYnOgotICAgICAgICAgICAgICAg
IGh0dHBFcXVpdiA9IHZhbHVlCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAnY29udGVudCc6Ci0g
ICAgICAgICAgICAgICAgY29udGVudFR5cGUgPSB2YWx1ZQotICAgICAgICAgICAgICAgIGNvbnRl
bnRUeXBlSW5kZXggPSBpCi0KLSAgICAgICAgaWYgaHR0cEVxdWl2IGFuZCBjb250ZW50VHlwZTog
IyBJdCdzIGFuIGludGVyZXN0aW5nIG1ldGEgdGFnLgotICAgICAgICAgICAgbWF0Y2ggPSBzZWxm
LkNIQVJTRVRfUkUuc2VhcmNoKGNvbnRlbnRUeXBlKQotICAgICAgICAgICAgaWYgbWF0Y2g6Ci0g
ICAgICAgICAgICAgICAgaWYgKHNlbGYuZGVjbGFyZWRIVE1MRW5jb2RpbmcgaXMgbm90IE5vbmUg
b3IKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29kaW5nID09IHNlbGYuZnJv
bUVuY29kaW5nKToKLSAgICAgICAgICAgICAgICAgICAgIyBBbiBIVE1MIGVuY29kaW5nIHdhcyBz
bmlmZmVkIHdoaWxlIGNvbnZlcnRpbmcKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgZG9jdW1l
bnQgdG8gVW5pY29kZSwgb3IgYW4gSFRNTCBlbmNvZGluZyB3YXMKLSAgICAgICAgICAgICAgICAg
ICAgIyBzbmlmZmVkIGR1cmluZyBhIHByZXZpb3VzIHBhc3MgdGhyb3VnaCB0aGUKLSAgICAgICAg
ICAgICAgICAgICAgIyBkb2N1bWVudCwgb3IgYW4gZW5jb2Rpbmcgd2FzIHNwZWNpZmllZAotICAg
ICAgICAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgYW5kIGl0IHdvcmtlZC4gUmV3cml0ZSB0aGUg
bWV0YSB0YWcuCi0gICAgICAgICAgICAgICAgICAgIGRlZiByZXdyaXRlKG1hdGNoKToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaC5ncm91cCgxKSArICIlU09VUC1FTkNPRElO
RyUiCi0gICAgICAgICAgICAgICAgICAgIG5ld0F0dHIgPSBzZWxmLkNIQVJTRVRfUkUuc3ViKHJl
d3JpdGUsIGNvbnRlbnRUeXBlKQotICAgICAgICAgICAgICAgICAgICBhdHRyc1tjb250ZW50VHlw
ZUluZGV4XSA9IChhdHRyc1tjb250ZW50VHlwZUluZGV4XVswXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXR0cikKLSAgICAgICAgICAgICAgICAg
ICAgdGFnTmVlZHNFbmNvZGluZ1N1YnN0aXR1dGlvbiA9IFRydWUKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICAjIFRoaXMgaXMgb3VyIGZpcnN0IHBhc3MgdGhyb3Vn
aCB0aGUgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgICAgICMgR28gdGhyb3VnaCBpdCBhZ2Fp
biB3aXRoIHRoZSBlbmNvZGluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbmV3
Q2hhcnNldCA9IG1hdGNoLmdyb3VwKDMpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5ld0NoYXJz
ZXQgYW5kIG5ld0NoYXJzZXQgIT0gc2VsZi5vcmlnaW5hbEVuY29kaW5nOgotICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IG5ld0NoYXJzZXQKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2ZlZWQoc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZykK
LSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIFN0b3BQYXJzaW5nCi0gICAgICAgICAgICAg
ICAgICAgIHBhc3MKLSAgICAgICAgdGFnID0gc2VsZi51bmtub3duX3N0YXJ0dGFnKCJtZXRhIiwg
YXR0cnMpCi0gICAgICAgIGlmIHRhZyBhbmQgdGFnTmVlZHNFbmNvZGluZ1N1YnN0aXR1dGlvbjoK
LSAgICAgICAgICAgIHRhZy5jb250YWluc1N1YnN0aXR1dGlvbnMgPSBUcnVlCi0KLWNsYXNzIFN0
b3BQYXJzaW5nKEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi1jbGFzcyBJQ2FudEJlbGlldmVJdHNC
ZWF1dGlmdWxTb3VwKEJlYXV0aWZ1bFNvdXApOgotCi0gICAgIiIiVGhlIEJlYXV0aWZ1bFNvdXAg
Y2xhc3MgaXMgb3JpZW50ZWQgdG93YXJkcyBza2lwcGluZyBvdmVyCi0gICAgY29tbW9uIEhUTUwg
ZXJyb3JzIGxpa2UgdW5jbG9zZWQgdGFncy4gSG93ZXZlciwgc29tZXRpbWVzIGl0IG1ha2VzCi0g
ICAgZXJyb3JzIG9mIGl0cyBvd24uIEZvciBpbnN0YW5jZSwgY29uc2lkZXIgdGhpcyBmcmFnbWVu
dDoKLQotICAgICA8Yj5Gb288Yj5CYXI8L2I+PC9iPgotCi0gICAgVGhpcyBpcyBwZXJmZWN0bHkg
dmFsaWQgKGlmIGJpemFycmUpIEhUTUwuIEhvd2V2ZXIsIHRoZQotICAgIEJlYXV0aWZ1bFNvdXAg
Y2xhc3Mgd2lsbCBpbXBsaWNpdGx5IGNsb3NlIHRoZSBmaXJzdCBiIHRhZyB3aGVuIGl0Ci0gICAg
ZW5jb3VudGVycyB0aGUgc2Vjb25kICdiJy4gSXQgd2lsbCB0aGluayB0aGUgYXV0aG9yIHdyb3Rl
Ci0gICAgIjxiPkZvbzxiPkJhciIsIGFuZCBkaWRuJ3QgY2xvc2UgdGhlIGZpcnN0ICdiJyB0YWcs
IGJlY2F1c2UKLSAgICB0aGVyZSdzIG5vIHJlYWwtd29ybGQgcmVhc29uIHRvIGJvbGQgc29tZXRo
aW5nIHRoYXQncyBhbHJlYWR5Ci0gICAgYm9sZC4gV2hlbiBpdCBlbmNvdW50ZXJzICc8L2I+PC9i
PicgaXQgd2lsbCBjbG9zZSB0d28gbW9yZSAnYicKLSAgICB0YWdzLCBmb3IgYSBncmFuZCB0b3Rh
bCBvZiB0aHJlZSB0YWdzIGNsb3NlZCBpbnN0ZWFkIG9mIHR3by4gVGhpcwotICAgIGNhbiB0aHJv
dyBvZmYgdGhlIHJlc3Qgb2YgeW91ciBkb2N1bWVudCBzdHJ1Y3R1cmUuIFRoZSBzYW1lIGlzCi0g
ICAgdHJ1ZSBvZiBhIG51bWJlciBvZiBvdGhlciB0YWdzLCBsaXN0ZWQgYmVsb3cuCi0KLSAgICBJ
dCdzIG11Y2ggbW9yZSBjb21tb24gZm9yIHNvbWVvbmUgdG8gZm9yZ2V0IHRvIGNsb3NlIGEgJ2In
IHRhZwotICAgIHRoYW4gdG8gYWN0dWFsbHkgdXNlIG5lc3RlZCAnYicgdGFncywgYW5kIHRoZSBC
ZWF1dGlmdWxTb3VwIGNsYXNzCi0gICAgaGFuZGxlcyB0aGUgY29tbW9uIGNhc2UuIFRoaXMgY2xh
c3MgaGFuZGxlcyB0aGUgbm90LWNvLWNvbW1vbgotICAgIGNhc2U6IHdoZXJlIHlvdSBjYW4ndCBi
ZWxpZXZlIHNvbWVvbmUgd3JvdGUgd2hhdCB0aGV5IGRpZCwgYnV0Ci0gICAgaXQncyB2YWxpZCBI
VE1MIGFuZCBCZWF1dGlmdWxTb3VwIHNjcmV3ZWQgdXAgYnkgYXNzdW1pbmcgaXQKLSAgICB3b3Vs
ZG4ndCBiZS4iIiIKLQotICAgIElfQ0FOVF9CRUxJRVZFX1RIRVlSRV9ORVNUQUJMRV9JTkxJTkVf
VEFHUyA9IFwKLSAgICAgKCdlbScsICdiaWcnLCAnaScsICdzbWFsbCcsICd0dCcsICdhYmJyJywg
J2Fjcm9ueW0nLCAnc3Ryb25nJywKLSAgICAgICdjaXRlJywgJ2NvZGUnLCAnZGZuJywgJ2tiZCcs
ICdzYW1wJywgJ3N0cm9uZycsICd2YXInLCAnYicsCi0gICAgICAnYmlnJykKLQotICAgIElfQ0FO
VF9CRUxJRVZFX1RIRVlSRV9ORVNUQUJMRV9CTE9DS19UQUdTID0gKCdub3NjcmlwdCcsKQotCi0g
ICAgTkVTVEFCTEVfVEFHUyA9IGJ1aWxkVGFnTWFwKFtdLCBCZWF1dGlmdWxTb3VwLk5FU1RBQkxF
X1RBR1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElfQ0FOVF9CRUxJRVZFX1RI
RVlSRV9ORVNUQUJMRV9CTE9DS19UQUdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBJX0NBTlRfQkVMSUVWRV9USEVZUkVfTkVTVEFCTEVfSU5MSU5FX1RBR1MpCi0KLWNsYXNzIE1p
bmltYWxTb3VwKEJlYXV0aWZ1bFNvdXApOgotICAgICIiIlRoZSBNaW5pbWFsU291cCBjbGFzcyBp
cyBmb3IgcGFyc2luZyBIVE1MIHRoYXQgY29udGFpbnMKLSAgICBwYXRob2xvZ2ljYWxseSBiYWQg
bWFya3VwLiBJdCBtYWtlcyBubyBhc3N1bXB0aW9ucyBhYm91dCB0YWcKLSAgICBuZXN0aW5nLCBi
dXQgaXQgZG9lcyBrbm93IHdoaWNoIHRhZ3MgYXJlIHNlbGYtY2xvc2luZywgdGhhdAotICAgIDxz
Y3JpcHQ+IHRhZ3MgY29udGFpbiBKYXZhc2NyaXB0IGFuZCBzaG91bGQgbm90IGJlIHBhcnNlZCwg
dGhhdAotICAgIE1FVEEgdGFncyBtYXkgY29udGFpbiBlbmNvZGluZyBpbmZvcm1hdGlvbiwgYW5k
IHNvIG9uLgotCi0gICAgVGhpcyBhbHNvIG1ha2VzIGl0IGJldHRlciBmb3Igc3ViY2xhc3Npbmcg
dGhhbiBCZWF1dGlmdWxTdG9uZVNvdXAKLSAgICBvciBCZWF1dGlmdWxTb3VwLiIiIgotCi0gICAg
UkVTRVRfTkVTVElOR19UQUdTID0gYnVpbGRUYWdNYXAoJ25vc2NyaXB0JykKLSAgICBORVNUQUJM
RV9UQUdTID0ge30KLQotY2xhc3MgQmVhdXRpZnVsU09BUChCZWF1dGlmdWxTdG9uZVNvdXApOgot
ICAgICIiIlRoaXMgY2xhc3Mgd2lsbCBwdXNoIGEgdGFnIHdpdGggb25seSBhIHNpbmdsZSBzdHJp
bmcgY2hpbGQgaW50bwotICAgIHRoZSB0YWcncyBwYXJlbnQgYXMgYW4gYXR0cmlidXRlLiBUaGUg
YXR0cmlidXRlJ3MgbmFtZSBpcyB0aGUgdGFnCi0gICAgbmFtZSwgYW5kIHRoZSB2YWx1ZSBpcyB0
aGUgc3RyaW5nIGNoaWxkLiBBbiBleGFtcGxlIHNob3VsZCBnaXZlCi0gICAgdGhlIGZsYXZvciBv
ZiB0aGUgY2hhbmdlOgotCi0gICAgPGZvbz48YmFyPmJhejwvYmFyPjwvZm9vPgotICAgICA9Pgot
ICAgIDxmb28gYmFyPSJiYXoiPjxiYXI+YmF6PC9iYXI+PC9mb28+Ci0KLSAgICBZb3UgY2FuIHRo
ZW4gYWNjZXNzIGZvb1RhZ1snYmFyJ10gaW5zdGVhZCBvZiBmb29UYWcuYmFyVGFnLnN0cmluZy4K
LQotICAgIFRoaXMgaXMsIG9mIGNvdXJzZSwgdXNlZnVsIGZvciBzY3JhcGluZyBzdHJ1Y3R1cmVz
IHRoYXQgdGVuZCB0bwotICAgIHVzZSBzdWJlbGVtZW50cyBpbnN0ZWFkIG9mIGF0dHJpYnV0ZXMs
IHN1Y2ggYXMgU09BUCBtZXNzYWdlcy4gTm90ZQotICAgIHRoYXQgaXQgbW9kaWZpZXMgaXRzIGlu
cHV0LCBzbyBkb24ndCBwcmludCB0aGUgbW9kaWZpZWQgdmVyc2lvbgotICAgIG91dC4KLQotICAg
IEknbSBub3Qgc3VyZSBob3cgbWFueSBwZW9wbGUgcmVhbGx5IHdhbnQgdG8gdXNlIHRoaXMgY2xh
c3M7IGxldCBtZQotICAgIGtub3cgaWYgeW91IGRvLiBNYWlubHkgSSBsaWtlIHRoZSBuYW1lLiIi
IgotCi0gICAgZGVmIHBvcFRhZyhzZWxmKToKLSAgICAgICAgaWYgbGVuKHNlbGYudGFnU3RhY2sp
ID4gMToKLSAgICAgICAgICAgIHRhZyA9IHNlbGYudGFnU3RhY2tbLTFdCi0gICAgICAgICAgICBw
YXJlbnQgPSBzZWxmLnRhZ1N0YWNrWy0yXQotICAgICAgICAgICAgcGFyZW50Ll9nZXRBdHRyTWFw
KCkKLSAgICAgICAgICAgIGlmIChpc2luc3RhbmNlKHRhZywgVGFnKSBhbmQgbGVuKHRhZy5jb250
ZW50cykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHRhZy5jb250ZW50c1sw
XSwgTmF2aWdhYmxlU3RyaW5nKSBhbmQKLSAgICAgICAgICAgICAgICBub3QgcGFyZW50LmF0dHJN
YXAuaGFzX2tleSh0YWcubmFtZSkpOgotICAgICAgICAgICAgICAgIHBhcmVudFt0YWcubmFtZV0g
PSB0YWcuY29udGVudHNbMF0KLSAgICAgICAgQmVhdXRpZnVsU3RvbmVTb3VwLnBvcFRhZyhzZWxm
KQotCi0jRW50ZXJwcmlzZSBjbGFzcyBuYW1lcyEgSXQgaGFzIGNvbWUgdG8gb3VyIGF0dGVudGlv
biB0aGF0IHNvbWUgcGVvcGxlCi0jdGhpbmsgdGhlIG5hbWVzIG9mIHRoZSBCZWF1dGlmdWwgU291
cCBwYXJzZXIgY2xhc3NlcyBhcmUgdG9vIHNpbGx5Ci0jYW5kICJ1bnByb2Zlc3Npb25hbCIgZm9y
IHVzZSBpbiBlbnRlcnByaXNlIHNjcmVlbi1zY3JhcGluZy4gV2UgZmVlbAotI3lvdXIgcGFpbiEg
Rm9yIHN1Y2gtbWluZGVkIGZvbGssIHRoZSBCZWF1dGlmdWwgU291cCBDb25zb3J0aXVtIEFuZAot
I0FsbC1OaWdodCBLb3NoZXIgQmFrZXJ5IHJlY29tbWVuZHMgcmVuYW1pbmcgdGhpcyBmaWxlIHRv
Ci0jIlJvYnVzdFBhcnNlci5weSIgKG9yLCBpbiBjYXNlcyBvZiBleHRyZW1lIGVudGVycHJpc2lu
ZXNzLAotIyJSb2J1c3RQYXJzZXJCZWFuSW50ZXJmYWNlLmNsYXNzIikgYW5kIHVzaW5nIHRoZSBm
b2xsb3dpbmcKLSNlbnRlcnByaXNlLWZyaWVuZGx5IGNsYXNzIGFsaWFzZXM6Ci1jbGFzcyBSb2J1
c3RYTUxQYXJzZXIoQmVhdXRpZnVsU3RvbmVTb3VwKToKLSAgICBwYXNzCi1jbGFzcyBSb2J1c3RI
VE1MUGFyc2VyKEJlYXV0aWZ1bFNvdXApOgotICAgIHBhc3MKLWNsYXNzIFJvYnVzdFdhY2tBc3NI
VE1MUGFyc2VyKElDYW50QmVsaWV2ZUl0c0JlYXV0aWZ1bFNvdXApOgotICAgIHBhc3MKLWNsYXNz
IFJvYnVzdEluc2FuZWx5V2Fja0Fzc0hUTUxQYXJzZXIoTWluaW1hbFNvdXApOgotICAgIHBhc3MK
LWNsYXNzIFNpbXBsaWZ5aW5nU09BUFBhcnNlcihCZWF1dGlmdWxTT0FQKToKLSAgICBwYXNzCi0K
LSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwot
IwotIyBCb251cyBsaWJyYXJ5OiBVbmljb2RlLCBEYW1taXQKLSMKLSMgVGhpcyBjbGFzcyBmb3Jj
ZXMgWE1MIGRhdGEgaW50byBhIHN0YW5kYXJkIGZvcm1hdCAodXN1YWxseSB0byBVVEYtOAotIyBv
ciBVbmljb2RlKS4gIEl0IGlzIGhlYXZpbHkgYmFzZWQgb24gY29kZSBmcm9tIE1hcmsgUGlsZ3Jp
bSdzCi0jIFVuaXZlcnNhbCBGZWVkIFBhcnNlci4gSXQgZG9lcyBub3QgcmV3cml0ZSB0aGUgWE1M
IG9yIEhUTUwgdG8KLSMgcmVmbGVjdCBhIG5ldyBlbmNvZGluZzogdGhhdCBoYXBwZW5zIGluIEJl
YXV0aWZ1bFN0b25lU291cC5oYW5kbGVfcGkKLSMgKFhNTCkgYW5kIEJlYXV0aWZ1bFNvdXAuc3Rh
cnRfbWV0YSAoSFRNTCkuCi0KLSMgQXV0b2RldGVjdHMgY2hhcmFjdGVyIGVuY29kaW5ncy4KLSMg
RG93bmxvYWQgZnJvbSBodHRwOi8vY2hhcmRldC5mZWVkcGFyc2VyLm9yZy8KLXRyeToKLSAgICBp
bXBvcnQgY2hhcmRldAotIyAgICBpbXBvcnQgY2hhcmRldC5jb25zdGFudHMKLSMgICAgY2hhcmRl
dC5jb25zdGFudHMuX2RlYnVnID0gMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNoYXJkZXQg
PSBOb25lCi0KLSMgY2prY29kZWNzIGFuZCBpY29udl9jb2RlYyBtYWtlIFB5dGhvbiBrbm93IGFi
b3V0IG1vcmUgY2hhcmFjdGVyIGVuY29kaW5ncy4KLSMgQm90aCBhcmUgYXZhaWxhYmxlIGZyb20g
aHR0cDovL2Nqa3B5dGhvbi5pMThuLm9yZy8KLSMgVGhleSdyZSBidWlsdCBpbiBpZiB5b3UgdXNl
IFB5dGhvbiAyLjQuCi10cnk6Ci0gICAgaW1wb3J0IGNqa2NvZGVjcy5hbGlhc2VzCi1leGNlcHQg
SW1wb3J0RXJyb3I6Ci0gICAgcGFzcwotdHJ5OgotICAgIGltcG9ydCBpY29udl9jb2RlYwotZXhj
ZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotY2xhc3MgVW5pY29kZURhbW1pdDoKLSAgICAi
IiJBIGNsYXNzIGZvciBkZXRlY3RpbmcgdGhlIGVuY29kaW5nIG9mIGEgKk1MIGRvY3VtZW50IGFu
ZAotICAgIGNvbnZlcnRpbmcgaXQgdG8gYSBVbmljb2RlIHN0cmluZy4gSWYgdGhlIHNvdXJjZSBl
bmNvZGluZyBpcwotICAgIHdpbmRvd3MtMTI1MiwgY2FuIHJlcGxhY2UgTVMgc21hcnQgcXVvdGVz
IHdpdGggdGhlaXIgSFRNTCBvciBYTUwKLSAgICBlcXVpdmFsZW50cy4iIiIKLQotICAgICMgVGhp
cyBkaWN0aW9uYXJ5IG1hcHMgY29tbW9ubHkgc2VlbiB2YWx1ZXMgZm9yICJjaGFyc2V0IiBpbiBI
VE1MCi0gICAgIyBtZXRhIHRhZ3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgUHl0aG9uIGNvZGVjIG5h
bWVzLiBJdCBvbmx5IGNvdmVycwotICAgICMgdmFsdWVzIHRoYXQgYXJlbid0IGluIFB5dGhvbidz
IGFsaWFzZXMgYW5kIGNhbid0IGJlIGRldGVybWluZWQKLSAgICAjIGJ5IHRoZSBoZXVyaXN0aWNz
IGluIGZpbmRfY29kZWMuCi0gICAgQ0hBUlNFVF9BTElBU0VTID0geyAibWFjaW50b3NoIiA6ICJt
YWMtcm9tYW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgIngtc2ppcyIgOiAic2hpZnQtamlz
IiB9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFya3VwLCBvdmVycmlkZUVuY29kaW5ncz1b
XSwKLSAgICAgICAgICAgICAgICAgc21hcnRRdW90ZXNUbz0neG1sJywgaXNIVE1MPUZhbHNlKToK
LSAgICAgICAgc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IE5vbmUKLSAgICAgICAgc2VsZi5t
YXJrdXAsIGRvY3VtZW50RW5jb2RpbmcsIHNuaWZmZWRFbmNvZGluZyA9IFwKLSAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2RldGVjdEVuY29kaW5nKG1hcmt1cCwgaXNIVE1MKQotICAgICAgICBz
ZWxmLnNtYXJ0UXVvdGVzVG8gPSBzbWFydFF1b3Rlc1RvCi0gICAgICAgIHNlbGYudHJpZWRFbmNv
ZGluZ3MgPSBbXQotICAgICAgICBpZiBtYXJrdXAgPT0gJycgb3IgaXNpbnN0YW5jZShtYXJrdXAs
IHVuaWNvZGUpOgotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29kaW5nID0gTm9uZQotICAg
ICAgICAgICAgc2VsZi51bmljb2RlID0gdW5pY29kZShtYXJrdXApCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICB1ID0gTm9uZQotICAgICAgICBmb3IgcHJvcG9zZWRFbmNvZGluZyBpbiBv
dmVycmlkZUVuY29kaW5nczoKLSAgICAgICAgICAgIHUgPSBzZWxmLl9jb252ZXJ0RnJvbShwcm9w
b3NlZEVuY29kaW5nKQotICAgICAgICAgICAgaWYgdTogYnJlYWsKLSAgICAgICAgaWYgbm90IHU6
Ci0gICAgICAgICAgICBmb3IgcHJvcG9zZWRFbmNvZGluZyBpbiAoZG9jdW1lbnRFbmNvZGluZywg
c25pZmZlZEVuY29kaW5nKToKLSAgICAgICAgICAgICAgICB1ID0gc2VsZi5fY29udmVydEZyb20o
cHJvcG9zZWRFbmNvZGluZykKLSAgICAgICAgICAgICAgICBpZiB1OiBicmVhawotCi0gICAgICAg
ICMgSWYgbm8gbHVjayBhbmQgd2UgaGF2ZSBhdXRvLWRldGVjdGlvbiBsaWJyYXJ5LCB0cnkgdGhh
dDoKLSAgICAgICAgaWYgbm90IHUgYW5kIGNoYXJkZXQgYW5kIG5vdCBpc2luc3RhbmNlKHNlbGYu
bWFya3VwLCB1bmljb2RlKToKLSAgICAgICAgICAgIHUgPSBzZWxmLl9jb252ZXJ0RnJvbShjaGFy
ZGV0LmRldGVjdChzZWxmLm1hcmt1cClbJ2VuY29kaW5nJ10pCi0KLSAgICAgICAgIyBBcyBhIGxh
c3QgcmVzb3J0LCB0cnkgdXRmLTggYW5kIHdpbmRvd3MtMTI1MjoKLSAgICAgICAgaWYgbm90IHU6
Ci0gICAgICAgICAgICBmb3IgcHJvcG9zZWRfZW5jb2RpbmcgaW4gKCJ1dGYtOCIsICJ3aW5kb3dz
LTEyNTIiKToKLSAgICAgICAgICAgICAgICB1ID0gc2VsZi5fY29udmVydEZyb20ocHJvcG9zZWRf
ZW5jb2RpbmcpCi0gICAgICAgICAgICAgICAgaWYgdTogYnJlYWsKLQotICAgICAgICBzZWxmLnVu
aWNvZGUgPSB1Ci0gICAgICAgIGlmIG5vdCB1OiBzZWxmLm9yaWdpbmFsRW5jb2RpbmcgPSBOb25l
Ci0KLSAgICBkZWYgX3N1Yk1TQ2hhcihzZWxmLCBvcmlnKToKLSAgICAgICAgIiIiQ2hhbmdlcyBh
IE1TIHNtYXJ0IHF1b3RlIGNoYXJhY3RlciB0byBhbiBYTUwgb3IgSFRNTAotICAgICAgICBlbnRp
dHkuIiIiCi0gICAgICAgIHN1YiA9IHNlbGYuTVNfQ0hBUlMuZ2V0KG9yaWcpCi0gICAgICAgIGlm
IGlzaW5zdGFuY2Uoc3ViLCB0dXBsZSk6Ci0gICAgICAgICAgICBpZiBzZWxmLnNtYXJ0UXVvdGVz
VG8gPT0gJ3htbCc6Ci0gICAgICAgICAgICAgICAgc3ViID0gJyYjeCVzOycgJSBzdWJbMV0KLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3ViID0gJyYlczsnICUgc3ViWzBdCi0g
ICAgICAgIHJldHVybiBzdWIKLQotICAgIGRlZiBfY29udmVydEZyb20oc2VsZiwgcHJvcG9zZWQp
OgotICAgICAgICBwcm9wb3NlZCA9IHNlbGYuZmluZF9jb2RlYyhwcm9wb3NlZCkKLSAgICAgICAg
aWYgbm90IHByb3Bvc2VkIG9yIHByb3Bvc2VkIGluIHNlbGYudHJpZWRFbmNvZGluZ3M6Ci0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLnRyaWVkRW5jb2RpbmdzLmFwcGVuZChw
cm9wb3NlZCkKLSAgICAgICAgbWFya3VwID0gc2VsZi5tYXJrdXAKLQotICAgICAgICAjIENvbnZl
cnQgc21hcnQgcXVvdGVzIHRvIEhUTUwgaWYgY29taW5nIGZyb20gYW4gZW5jb2RpbmcKLSAgICAg
ICAgIyB0aGF0IG1pZ2h0IGhhdmUgdGhlbS4KLSAgICAgICAgaWYgc2VsZi5zbWFydFF1b3Rlc1Rv
IGFuZCBwcm9wb3NlZC5sb3dlcigpIGluKCJ3aW5kb3dzLTEyNTIiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzby04ODU5LTEiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzby04
ODU5LTIiKToKLSAgICAgICAgICAgIG1hcmt1cCA9IHJlLmNvbXBpbGUoIihbXHg4MC1ceDlmXSki
KS5zdWIgXAotICAgICAgICAgICAgICAgICAgICAgKGxhbWJkYSh4KTogc2VsZi5fc3ViTVNDaGFy
KHguZ3JvdXAoMSkpLAotICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cCkKLQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAjIHByaW50ICJUcnlpbmcgdG8gY29udmVydCBkb2N1bWVudCB0byAl
cyIgJSBwcm9wb3NlZAotICAgICAgICAgICAgdSA9IHNlbGYuX3RvVW5pY29kZShtYXJrdXAsIHBy
b3Bvc2VkKQotICAgICAgICAgICAgc2VsZi5tYXJrdXAgPSB1Ci0gICAgICAgICAgICBzZWxmLm9y
aWdpbmFsRW5jb2RpbmcgPSBwcm9wb3NlZAotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgot
ICAgICAgICAgICAgIyBwcmludCAiVGhhdCBkaWRuJ3Qgd29yayEiCi0gICAgICAgICAgICAjIHBy
aW50IGUKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICNwcmludCAiQ29ycmVjdCBl
bmNvZGluZzogJXMiICUgcHJvcG9zZWQKLSAgICAgICAgcmV0dXJuIHNlbGYubWFya3VwCi0KLSAg
ICBkZWYgX3RvVW5pY29kZShzZWxmLCBkYXRhLCBlbmNvZGluZyk6Ci0gICAgICAgICcnJ0dpdmVu
IGEgc3RyaW5nIGFuZCBpdHMgZW5jb2RpbmcsIGRlY29kZXMgdGhlIHN0cmluZyBpbnRvIFVuaWNv
ZGUuCi0gICAgICAgICVlbmNvZGluZyBpcyBhIHN0cmluZyByZWNvZ25pemVkIGJ5IGVuY29kaW5n
cy5hbGlhc2VzJycnCi0KLSAgICAgICAgIyBzdHJpcCBCeXRlIE9yZGVyIE1hcmsgKGlmIHByZXNl
bnQpCi0gICAgICAgIGlmIChsZW4oZGF0YSkgPj0gNCkgYW5kIChkYXRhWzoyXSA9PSAnXHhmZVx4
ZmYnKSBcCi0gICAgICAgICAgICAgICBhbmQgKGRhdGFbMjo0XSAhPSAnXHgwMFx4MDAnKToKLSAg
ICAgICAgICAgIGVuY29kaW5nID0gJ3V0Zi0xNmJlJwotICAgICAgICAgICAgZGF0YSA9IGRhdGFb
MjpdCi0gICAgICAgIGVsaWYgKGxlbihkYXRhKSA+PSA0KSBhbmQgKGRhdGFbOjJdID09ICdceGZm
XHhmZScpIFwKLSAgICAgICAgICAgICAgICAgYW5kIChkYXRhWzI6NF0gIT0gJ1x4MDBceDAwJyk6
Ci0gICAgICAgICAgICBlbmNvZGluZyA9ICd1dGYtMTZsZScKLSAgICAgICAgICAgIGRhdGEgPSBk
YXRhWzI6XQotICAgICAgICBlbGlmIGRhdGFbOjNdID09ICdceGVmXHhiYlx4YmYnOgotICAgICAg
ICAgICAgZW5jb2RpbmcgPSAndXRmLTgnCi0gICAgICAgICAgICBkYXRhID0gZGF0YVszOl0KLSAg
ICAgICAgZWxpZiBkYXRhWzo0XSA9PSAnXHgwMFx4MDBceGZlXHhmZic6Ci0gICAgICAgICAgICBl
bmNvZGluZyA9ICd1dGYtMzJiZScKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzQ6XQotICAgICAg
ICBlbGlmIGRhdGFbOjRdID09ICdceGZmXHhmZVx4MDBceDAwJzoKLSAgICAgICAgICAgIGVuY29k
aW5nID0gJ3V0Zi0zMmxlJwotICAgICAgICAgICAgZGF0YSA9IGRhdGFbNDpdCi0gICAgICAgIG5l
d2RhdGEgPSB1bmljb2RlKGRhdGEsIGVuY29kaW5nKQotICAgICAgICByZXR1cm4gbmV3ZGF0YQot
Ci0gICAgZGVmIF9kZXRlY3RFbmNvZGluZyhzZWxmLCB4bWxfZGF0YSwgaXNIVE1MPUZhbHNlKToK
LSAgICAgICAgIiIiR2l2ZW4gYSBkb2N1bWVudCwgdHJpZXMgdG8gZGV0ZWN0IGl0cyBYTUwgZW5j
b2RpbmcuIiIiCi0gICAgICAgIHhtbF9lbmNvZGluZyA9IHNuaWZmZWRfeG1sX2VuY29kaW5nID0g
Tm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiB4bWxfZGF0YVs6NF0gPT0gJ1x4NGNc
eDZmXHhhN1x4OTQnOgotICAgICAgICAgICAgICAgICMgRUJDRElDCi0gICAgICAgICAgICAgICAg
eG1sX2RhdGEgPSBzZWxmLl9lYmNkaWNfdG9fYXNjaWkoeG1sX2RhdGEpCi0gICAgICAgICAgICBl
bGlmIHhtbF9kYXRhWzo0XSA9PSAnXHgwMFx4M2NceDAwXHgzZic6Ci0gICAgICAgICAgICAgICAg
IyBVVEYtMTZCRQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0x
NmJlJwotICAgICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0x
NmJlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIChsZW4oeG1sX2RhdGEpID49
IDQpIGFuZCAoeG1sX2RhdGFbOjJdID09ICdceGZlXHhmZicpIFwKLSAgICAgICAgICAgICAgICAg
ICAgIGFuZCAoeG1sX2RhdGFbMjo0XSAhPSAnXHgwMFx4MDAnKToKLSAgICAgICAgICAgICAgICAj
IFVURi0xNkJFIHdpdGggQk9NCi0gICAgICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2Rpbmcg
PSAndXRmLTE2YmUnCi0gICAgICAgICAgICAgICAgeG1sX2RhdGEgPSB1bmljb2RlKHhtbF9kYXRh
WzI6XSwgJ3V0Zi0xNmJlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9k
YXRhWzo0XSA9PSAnXHgzY1x4MDBceDNmXHgwMCc6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMTZM
RQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0xNmxlJwotICAg
ICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0xNmxlJykuZW5j
b2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIChsZW4oeG1sX2RhdGEpID49IDQpIGFuZCAo
eG1sX2RhdGFbOjJdID09ICdceGZmXHhmZScpIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAo
eG1sX2RhdGFbMjo0XSAhPSAnXHgwMFx4MDAnKToKLSAgICAgICAgICAgICAgICAjIFVURi0xNkxF
IHdpdGggQk9NCi0gICAgICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2RpbmcgPSAndXRmLTE2
bGUnCi0gICAgICAgICAgICAgICAgeG1sX2RhdGEgPSB1bmljb2RlKHhtbF9kYXRhWzI6XSwgJ3V0
Zi0xNmxlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0XSA9
PSAnXHgwMFx4MDBceDAwXHgzYyc6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMzJCRQotICAgICAg
ICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0zMmJlJwotICAgICAgICAgICAg
ICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0zMmJlJykuZW5jb2RlKCd1dGYt
OCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0XSA9PSAnXHgzY1x4MDBceDAwXHgwMCc6
Ci0gICAgICAgICAgICAgICAgIyBVVEYtMzJMRQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1s
X2VuY29kaW5nID0gJ3V0Zi0zMmxlJwotICAgICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29k
ZSh4bWxfZGF0YSwgJ3V0Zi0zMmxlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlm
IHhtbF9kYXRhWzo0XSA9PSAnXHgwMFx4MDBceGZlXHhmZic6Ci0gICAgICAgICAgICAgICAgIyBV
VEYtMzJCRSB3aXRoIEJPTQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0g
J3V0Zi0zMmJlJwotICAgICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YVs0
Ol0sICd1dGYtMzJiZScpLmVuY29kZSgndXRmLTgnKQotICAgICAgICAgICAgZWxpZiB4bWxfZGF0
YVs6NF0gPT0gJ1x4ZmZceGZlXHgwMFx4MDAnOgotICAgICAgICAgICAgICAgICMgVVRGLTMyTEUg
d2l0aCBCT00KLSAgICAgICAgICAgICAgICBzbmlmZmVkX3htbF9lbmNvZGluZyA9ICd1dGYtMzJs
ZScKLSAgICAgICAgICAgICAgICB4bWxfZGF0YSA9IHVuaWNvZGUoeG1sX2RhdGFbNDpdLCAndXRm
LTMybGUnKS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgIGVsaWYgeG1sX2RhdGFbOjNdID09
ICdceGVmXHhiYlx4YmYnOgotICAgICAgICAgICAgICAgICMgVVRGLTggd2l0aCBCT00KLSAgICAg
ICAgICAgICAgICBzbmlmZmVkX3htbF9lbmNvZGluZyA9ICd1dGYtOCcKLSAgICAgICAgICAgICAg
ICB4bWxfZGF0YSA9IHVuaWNvZGUoeG1sX2RhdGFbMzpdLCAndXRmLTgnKS5lbmNvZGUoJ3V0Zi04
JykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2Rp
bmcgPSAnYXNjaWknCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQ6Ci0gICAg
ICAgICAgICB4bWxfZW5jb2RpbmdfbWF0Y2ggPSBOb25lCi0gICAgICAgIHhtbF9lbmNvZGluZ19t
YXRjaCA9IHJlLmNvbXBpbGUoCi0gICAgICAgICAgICAnXjxcPy4qZW5jb2Rpbmc9W1wnIl0oLio/
KVtcJyJdLipcPz4nKS5tYXRjaCh4bWxfZGF0YSkKLSAgICAgICAgaWYgbm90IHhtbF9lbmNvZGlu
Z19tYXRjaCBhbmQgaXNIVE1MOgotICAgICAgICAgICAgcmVnZXhwID0gcmUuY29tcGlsZSgnPFxz
Km1ldGFbXj5dK2NoYXJzZXQ9KFtePl0qPylbO1wnIj5dJywgcmUuSSkKLSAgICAgICAgICAgIHht
bF9lbmNvZGluZ19tYXRjaCA9IHJlZ2V4cC5zZWFyY2goeG1sX2RhdGEpCi0gICAgICAgIGlmIHht
bF9lbmNvZGluZ19tYXRjaCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHhtbF9lbmNvZGluZyA9
IHhtbF9lbmNvZGluZ19tYXRjaC5ncm91cHMoKVswXS5sb3dlcigpCi0gICAgICAgICAgICBpZiBp
c0hUTUw6Ci0gICAgICAgICAgICAgICAgc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IHhtbF9l
bmNvZGluZwotICAgICAgICAgICAgaWYgc25pZmZlZF94bWxfZW5jb2RpbmcgYW5kIFwKLSAgICAg
ICAgICAgICAgICh4bWxfZW5jb2RpbmcgaW4gKCdpc28tMTA2NDYtdWNzLTInLCAndWNzLTInLCAn
Y3N1bmljb2RlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc28tMTA2NDYt
dWNzLTQnLCAndWNzLTQnLCAnY3N1Y3M0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd1dGYtMTYnLCAndXRmLTMyJywgJ3V0Zl8xNicsICd1dGZfMzInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3V0ZjE2JywgJ3UxNicpKToKLSAgICAgICAgICAgICAgICB4
bWxfZW5jb2RpbmcgPSBzbmlmZmVkX3htbF9lbmNvZGluZwotICAgICAgICByZXR1cm4geG1sX2Rh
dGEsIHhtbF9lbmNvZGluZywgc25pZmZlZF94bWxfZW5jb2RpbmcKLQotCi0gICAgZGVmIGZpbmRf
Y29kZWMoc2VsZiwgY2hhcnNldCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb2RlYyhzZWxmLkNI
QVJTRVRfQUxJQVNFUy5nZXQoY2hhcnNldCwgY2hhcnNldCkpIFwKLSAgICAgICAgICAgICAgIG9y
IChjaGFyc2V0IGFuZCBzZWxmLl9jb2RlYyhjaGFyc2V0LnJlcGxhY2UoIi0iLCAiIikpKSBcCi0g
ICAgICAgICAgICAgICBvciAoY2hhcnNldCBhbmQgc2VsZi5fY29kZWMoY2hhcnNldC5yZXBsYWNl
KCItIiwgIl8iKSkpIFwKLSAgICAgICAgICAgICAgIG9yIGNoYXJzZXQKLQotICAgIGRlZiBfY29k
ZWMoc2VsZiwgY2hhcnNldCk6Ci0gICAgICAgIGlmIG5vdCBjaGFyc2V0OiByZXR1cm4gY2hhcnNl
dAotICAgICAgICBjb2RlYyA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29kZWNz
Lmxvb2t1cChjaGFyc2V0KQotICAgICAgICAgICAgY29kZWMgPSBjaGFyc2V0Ci0gICAgICAgIGV4
Y2VwdCAoTG9va3VwRXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgcGFzcwotICAgICAg
ICByZXR1cm4gY29kZWMKLQotICAgIEVCQ0RJQ19UT19BU0NJSV9NQVAgPSBOb25lCi0gICAgZGVm
IF9lYmNkaWNfdG9fYXNjaWkoc2VsZiwgcyk6Ci0gICAgICAgIGMgPSBzZWxmLl9fY2xhc3NfXwot
ICAgICAgICBpZiBub3QgYy5FQkNESUNfVE9fQVNDSUlfTUFQOgotICAgICAgICAgICAgZW1hcCA9
ICgwLDEsMiwzLDE1Niw5LDEzNCwxMjcsMTUxLDE0MSwxNDIsMTEsMTIsMTMsMTQsMTUsCi0gICAg
ICAgICAgICAgICAgICAgIDE2LDE3LDE4LDE5LDE1NywxMzMsOCwxMzUsMjQsMjUsMTQ2LDE0Mywy
OCwyOSwzMCwzMSwKLSAgICAgICAgICAgICAgICAgICAgMTI4LDEyOSwxMzAsMTMxLDEzMiwxMCwy
MywyNywxMzYsMTM3LDEzOCwxMzksMTQwLDUsNiw3LAotICAgICAgICAgICAgICAgICAgICAxNDQs
MTQ1LDIyLDE0NywxNDgsMTQ5LDE1MCw0LDE1MiwxNTMsMTU0LDE1NSwyMCwyMSwxNTgsMjYsCi0g
ICAgICAgICAgICAgICAgICAgIDMyLDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4
LDkxLDQ2LDYwLDQwLDQzLDMzLAotICAgICAgICAgICAgICAgICAgICAzOCwxNjksMTcwLDE3MSwx
NzIsMTczLDE3NCwxNzUsMTc2LDE3Nyw5MywzNiw0Miw0MSw1OSw5NCwKLSAgICAgICAgICAgICAg
ICAgICAgNDUsNDcsMTc4LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxMjQsNDQsMzcsOTUs
NjIsNjMsCi0gICAgICAgICAgICAgICAgICAgIDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5Miwx
OTMsMTk0LDk2LDU4LDM1LDY0LDM5LDYxLDM0LAotICAgICAgICAgICAgICAgICAgICAxOTUsOTcs
OTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTk2LDE5NywxOTgsMTk5LDIwMCwKLSAgICAg
ICAgICAgICAgICAgICAgMjAxLDIwMiwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDEx
NCwyMDMsMjA0LDIwNSwKLSAgICAgICAgICAgICAgICAgICAgMjA2LDIwNywyMDgsMjA5LDEyNiwx
MTUsMTE2LDExNywxMTgsMTE5LDEyMCwxMjEsMTIyLDIxMCwKLSAgICAgICAgICAgICAgICAgICAg
MjExLDIxMiwyMTMsMjE0LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwK
LSAgICAgICAgICAgICAgICAgICAgMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDEyMyw2NSw2
Niw2Nyw2OCw2OSw3MCw3MSw3MiwKLSAgICAgICAgICAgICAgICAgICAgNzMsMjMyLDIzMywyMzQs
MjM1LDIzNiwyMzcsMTI1LDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLAotICAgICAgICAgICAgICAg
ICAgICA4MiwyMzgsMjM5LDI0MCwyNDEsMjQyLDI0Myw5MiwxNTksODMsODQsODUsODYsODcsODgs
ODksCi0gICAgICAgICAgICAgICAgICAgIDkwLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDQ4LDQ5
LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LAotICAgICAgICAgICAgICAgICAgICAyNTAsMjUxLDI1
MiwyNTMsMjU0LDI1NSkKLSAgICAgICAgICAgIGltcG9ydCBzdHJpbmcKLSAgICAgICAgICAgIGMu
RUJDRElDX1RPX0FTQ0lJX01BUCA9IHN0cmluZy5tYWtldHJhbnMoIFwKLSAgICAgICAgICAgICcn
LmpvaW4obWFwKGNociwgcmFuZ2UoMjU2KSkpLCAnJy5qb2luKG1hcChjaHIsIGVtYXApKSkKLSAg
ICAgICAgcmV0dXJuIHMudHJhbnNsYXRlKGMuRUJDRElDX1RPX0FTQ0lJX01BUCkKLQotICAgIE1T
X0NIQVJTID0geyAnXHg4MCcgOiAoJ2V1cm8nLCAnMjBBQycpLAotICAgICAgICAgICAgICAgICAn
XHg4MScgOiAnICcsCi0gICAgICAgICAgICAgICAgICdceDgyJyA6ICgnc2JxdW8nLCAnMjAxQScp
LAotICAgICAgICAgICAgICAgICAnXHg4MycgOiAoJ2Zub2YnLCAnMTkyJyksCi0gICAgICAgICAg
ICAgICAgICdceDg0JyA6ICgnYmRxdW8nLCAnMjAxRScpLAotICAgICAgICAgICAgICAgICAnXHg4
NScgOiAoJ2hlbGxpcCcsICcyMDI2JyksCi0gICAgICAgICAgICAgICAgICdceDg2JyA6ICgnZGFn
Z2VyJywgJzIwMjAnKSwKLSAgICAgICAgICAgICAgICAgJ1x4ODcnIDogKCdEYWdnZXInLCAnMjAy
MScpLAotICAgICAgICAgICAgICAgICAnXHg4OCcgOiAoJ2NpcmMnLCAnMkM2JyksCi0gICAgICAg
ICAgICAgICAgICdceDg5JyA6ICgncGVybWlsJywgJzIwMzAnKSwKLSAgICAgICAgICAgICAgICAg
J1x4OEEnIDogKCdTY2Fyb24nLCAnMTYwJyksCi0gICAgICAgICAgICAgICAgICdceDhCJyA6ICgn
bHNhcXVvJywgJzIwMzknKSwKLSAgICAgICAgICAgICAgICAgJ1x4OEMnIDogKCdPRWxpZycsICcx
NTInKSwKLSAgICAgICAgICAgICAgICAgJ1x4OEQnIDogJz8nLAotICAgICAgICAgICAgICAgICAn
XHg4RScgOiAoJyN4MTdEJywgJzE3RCcpLAotICAgICAgICAgICAgICAgICAnXHg4RicgOiAnPycs
Ci0gICAgICAgICAgICAgICAgICdceDkwJyA6ICc/JywKLSAgICAgICAgICAgICAgICAgJ1x4OTEn
IDogKCdsc3F1bycsICcyMDE4JyksCi0gICAgICAgICAgICAgICAgICdceDkyJyA6ICgncnNxdW8n
LCAnMjAxOScpLAotICAgICAgICAgICAgICAgICAnXHg5MycgOiAoJ2xkcXVvJywgJzIwMUMnKSwK
LSAgICAgICAgICAgICAgICAgJ1x4OTQnIDogKCdyZHF1bycsICcyMDFEJyksCi0gICAgICAgICAg
ICAgICAgICdceDk1JyA6ICgnYnVsbCcsICcyMDIyJyksCi0gICAgICAgICAgICAgICAgICdceDk2
JyA6ICgnbmRhc2gnLCAnMjAxMycpLAotICAgICAgICAgICAgICAgICAnXHg5NycgOiAoJ21kYXNo
JywgJzIwMTQnKSwKLSAgICAgICAgICAgICAgICAgJ1x4OTgnIDogKCd0aWxkZScsICcyREMnKSwK
LSAgICAgICAgICAgICAgICAgJ1x4OTknIDogKCd0cmFkZScsICcyMTIyJyksCi0gICAgICAgICAg
ICAgICAgICdceDlhJyA6ICgnc2Nhcm9uJywgJzE2MScpLAotICAgICAgICAgICAgICAgICAnXHg5
YicgOiAoJ3JzYXF1bycsICcyMDNBJyksCi0gICAgICAgICAgICAgICAgICdceDljJyA6ICgnb2Vs
aWcnLCAnMTUzJyksCi0gICAgICAgICAgICAgICAgICdceDlkJyA6ICc/JywKLSAgICAgICAgICAg
ICAgICAgJ1x4OWUnIDogKCcjeDE3RScsICcxN0UnKSwKLSAgICAgICAgICAgICAgICAgJ1x4OWYn
IDogKCdZdW1sJywgJycpLH0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi0jQnkgZGVmYXVsdCwgYWN0
IGFzIGFuIEhUTUwgcHJldHR5LXByaW50ZXIuCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgot
ICAgIGltcG9ydCBzeXMKLSAgICBzb3VwID0gQmVhdXRpZnVsU291cChzeXMuc3RkaW4pCi0gICAg
cHJpbnQgc291cC5wcmV0dGlmeSgpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YXBwL2V3cy90aGlyZHBhcnR5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3VybHMucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdXJscy5weQkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdXJscy5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDQ2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IK
LSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi1mcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAotCi1mcm9tIGV3cy52
aWV3cy5pbmRleCBpbXBvcnQgSW5kZXgKLWZyb20gZXdzLnZpZXdzLnJlc3VsdHMgaW1wb3J0IFJl
c3VsdHMKLWZyb20gZXdzLnZpZXdzLnN0YXR1cyBpbXBvcnQgU3RhdHVzCi1mcm9tIGV3cy52aWV3
cy5zdGF0dXNidWJibGUgaW1wb3J0IFN0YXR1c0J1YmJsZQotZnJvbSBld3Mudmlld3MucmV0cnlw
YXRjaCBpbXBvcnQgUmV0cnlQYXRjaAotZnJvbSBld3Mudmlld3Muc3VibWl0dG9ld3MgaW1wb3J0
IFN1Ym1pdFRvRVdTCi0KLWFwcF9uYW1lID0gJ2V3cycKLXVybHBhdHRlcm5zID0gWwotICAgICMg
ZXg6IC8KLSAgICB1cmwocideJCcsIEluZGV4LmFzX3ZpZXcoKSwgbmFtZT0naW5kZXgnKSwKLSAg
ICAjIGV4OiAvcmVzdWx0cy8KLSAgICB1cmwocidecmVzdWx0cy8kJywgUmVzdWx0cy5hc192aWV3
KCksIG5hbWU9J3Jlc3VsdHMnKSwKLSAgICAjIGV4OiAvcmV0cnkvCi0gICAgdXJsKHInXnJldHJ5
LyQnLCBSZXRyeVBhdGNoLmFzX3ZpZXcoKSwgbmFtZT0ncmV0cnlwYXRjaCcpLAotICAgICMgZXg6
IC9zdGF0dXMvNQotICAgIHVybChyJ15zdGF0dXMvKD9QPHBhdGNoX2lkPlswLTldKykvJCcsIFN0
YXR1cy5hc192aWV3KCksIG5hbWU9J3N0YXR1cycpLAotICAgICMgZXg6IC9zdGF0dXMtYnViYmxl
LzUKLSAgICB1cmwocidec3RhdHVzLWJ1YmJsZS8oP1A8cGF0Y2hfaWQ+WzAtOV0rKS8kJywgU3Rh
dHVzQnViYmxlLmFzX3ZpZXcoKSwgbmFtZT0nc3RhdHVzYnViYmxlJyksCi0gICAgIyBleDogL3N1
Ym1pdC10by1ld3MvCi0gICAgdXJsKHInXnN1Ym1pdC10by1ld3MvJCcsIFN1Ym1pdFRvRVdTLmFz
X3ZpZXcoKSwgbmFtZT0nc3VibWl0dG9ld3MnKSwKLV0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL2luZGV4LnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL2luZGV4LnB5
CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3
cy92aWV3cy9pbmRleC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1
bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQot
ZnJvbSBkamFuZ28udmlld3MgaW1wb3J0IFZpZXcKLQotCi1jbGFzcyBJbmRleChWaWV3KToKLSAg
ICBkZWYgZ2V0KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJF
V1MgZm9yIFdlYktpdC4iKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9l
d3Mvdmlld3MvcmVzdWx0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5CShub25leGlz
dGVudCkKQEAgLTEsOTMgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1p
bXBvcnQganNvbgotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotCi1mcm9tIGRqYW5nby5odHRw
IGltcG9ydCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQgcmVuZGVy
Ci1mcm9tIGRqYW5nby52aWV3cyBpbXBvcnQgVmlldwotZnJvbSBkamFuZ28udmlld3MuZGVjb3Jh
dG9ycy5jc3JmIGltcG9ydCBjc3JmX2V4ZW1wdAotZnJvbSBkamFuZ28udXRpbHMuZGVjb3JhdG9y
cyBpbXBvcnQgbWV0aG9kX2RlY29yYXRvcgotCi1mcm9tIGV3cy5tb2RlbHMuYnVpbGQgaW1wb3J0
IEJ1aWxkCi1mcm9tIGV3cy5tb2RlbHMuc3RlcCBpbXBvcnQgU3RlcAotCi1fbG9nID0gbG9nZ2lu
Zy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotQG1ldGhvZF9kZWNvcmF0b3IoY3NyZl9leGVtcHQs
IG5hbWU9J2Rpc3BhdGNoJykKLWNsYXNzIFJlc3VsdHMoVmlldyk6Ci0gICAgZGVmIHBvc3Qoc2Vs
ZiwgcmVxdWVzdCk6Ci0gICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QuYm9keSkKLQot
ICAgICAgICBpZiBkYXRhLmdldCgnRVdTX0FQSV9LRVknKSAhPSBvcy5nZXRlbnYoJ0VXU19BUElf
S0VZJywgTm9uZSk6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdJbmNvcnJlY3QgQVBJIEtleSB7
fS4gSG9zdDoge30uIElnbm9yaW5nIGRhdGEuJy5mb3JtYXQoZGF0YS5nZXQoJ0VXU19BUElfS0VZ
JyksIGRhdGEuZ2V0KCdob3N0bmFtZScpKSkKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9u
c2UoJ0luY29ycmVjdCBBUEkgS2V5IHJlY2VpdmVkJykKLQotICAgICAgICBpZiBkYXRhLmdldCgn
dHlwZScpID09IHUnZXdzLWJ1aWxkJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmJ1aWxkX2V2
ZW50KGRhdGEpCi0KLSAgICAgICAgaWYgZGF0YS5nZXQoJ3R5cGUnKSA9PSB1J2V3cy1zdGVwJzoK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLnN0ZXBfZXZlbnQoZGF0YSkKLQotICAgICAgICBfbG9n
LmVycm9yKCdVbmV4cGVjdGVkIGRhdGEgdHlwZSByZWNlaXZlZDoge30nLmZvcm1hdChkYXRhLmdl
dCgndHlwZScpKSkKLSAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgnVW5leHBlY3RlZCBkYXRh
IHR5cGUgcmVjZWl2ZWQ6IHt9Jy5mb3JtYXQoZGF0YS5nZXQoJ3R5cGUnKSkpCi0KLSAgICBkZWYg
YnVpbGRfZXZlbnQoc2VsZiwgZGF0YSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX3ZhbGlkX3Jl
c3VsdChkYXRhKToKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoIkluY29tcGxldGUg
ZGF0YS4iKQotCi0gICAgICAgIHBhdGNoX2lkID0gZGF0YVsncGF0Y2hfaWQnXQotICAgICAgICBp
ZiBub3QgcGF0Y2hfaWQgb3IgcGF0Y2hfaWQgPCAxOgotICAgICAgICAgICAgcmV0dXJuIEh0dHBS
ZXNwb25zZSgiSW52YWxpZCBwYXRjaCBpZDoge30uIi5mb3JtYXQocGF0Y2hfaWQpKQotCi0gICAg
ICAgIEJ1aWxkLnNhdmVfYnVpbGQocGF0Y2hfaWQ9aW50KHBhdGNoX2lkKSwgaG9zdG5hbWU9ZGF0
YVsnaG9zdG5hbWUnXSwgYnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgYnVpbGRlcl9pZD1kYXRh
WydidWlsZGVyX2lkJ10sIGJ1aWxkZXJfbmFtZT1kYXRhWydidWlsZGVyX25hbWUnXSwKLSAgICAg
ICAgICAgICAgICAgICBidWlsZGVyX2Rpc3BsYXlfbmFtZT1kYXRhWydidWlsZGVyX2Rpc3BsYXlf
bmFtZSddLCBudW1iZXI9ZGF0YVsnbnVtYmVyJ10sIHJlc3VsdD1kYXRhWydyZXN1bHQnXSwKLSAg
ICAgICAgICAgICAgICAgICBzdGF0ZV9zdHJpbmc9ZGF0YVsnc3RhdGVfc3RyaW5nJ10sIHN0YXJ0
ZWRfYXQ9ZGF0YVsnc3RhcnRlZF9hdCddLCBjb21wbGV0ZV9hdD1kYXRhWydjb21wbGV0ZV9hdCdd
KQotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJTYXZlZCBkYXRhIGZvciBwYXRjaDoge30u
XG4iLmZvcm1hdChwYXRjaF9pZCkpCi0KLSAgICBkZWYgc3RlcF9ldmVudChzZWxmLCBkYXRhKToK
LSAgICAgICAgaWYgbm90IHNlbGYuaXNfdmFsaWRfcmVzdWx0KGRhdGEpOgotICAgICAgICAgICAg
cmV0dXJuIEh0dHBSZXNwb25zZSgiSW5jb21wbGV0ZSBkYXRhLiIpCi0KLSAgICAgICAgU3RlcC5z
YXZlX3N0ZXAoaG9zdG5hbWU9ZGF0YVsnaG9zdG5hbWUnXSwgc3RlcF9pZD1kYXRhWydzdGVwX2lk
J10sIGJ1aWxkX2lkPWRhdGFbJ2J1aWxkX2lkJ10sIHJlc3VsdD1kYXRhWydyZXN1bHQnXSwKLSAg
ICAgICAgICAgICAgICAgICBzdGF0ZV9zdHJpbmc9ZGF0YVsnc3RhdGVfc3RyaW5nJ10sIHN0YXJ0
ZWRfYXQ9ZGF0YVsnc3RhcnRlZF9hdCddLCBjb21wbGV0ZV9hdD1kYXRhWydjb21wbGV0ZV9hdCdd
KQotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJTYXZlZCBkYXRhIGZvciBzdGVwOiB7fS5c
biIuZm9ybWF0KGRhdGFbJ3N0ZXBfaWQnXSkpCi0KLSAgICBkZWYgaXNfdmFsaWRfcmVzdWx0KHNl
bGYsIGRhdGEpOgotICAgICAgICBpZiBkYXRhWyd0eXBlJ10gbm90IGluIFt1J2V3cy1idWlsZCcs
IHUnZXdzLXN0ZXAnXToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkludmFsaWQgZGF0YSB0eXBl
OiB7fSIuZm9ybWF0KGRhdGFbJ3R5cGUnXSkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQot
ICAgICAgICByZXF1aXJlZF9rZXlzID0ge3UnZXdzLWJ1aWxkJzogWydob3N0bmFtZScsICdwYXRj
aF9pZCcsICdidWlsZF9pZCcsICdidWlsZGVyX2lkJywgJ2J1aWxkZXJfbmFtZScsICdidWlsZGVy
X2Rpc3BsYXlfbmFtZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ251bWJlcicsICdyZXN1bHQnLCAnc3RhdGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAnY29t
cGxldGVfYXQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB1J2V3cy1zdGVwJzogWydob3N0
bmFtZScsICdzdGVwX2lkJywgJ2J1aWxkX2lkJywgJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAn
c3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCddfQotCi0gICAgICAgIGZvciBrZXkgaW4gcmVxdWly
ZWRfa2V5cy5nZXQoZGF0YS5nZXQoJ3R5cGUnKSk6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGlu
IGRhdGE6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuKCdEYXRhIGlzIG1pc3Npbmcge30nLmZv
cm1hdChrZXkpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4g
VHJ1ZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmV0
cnlwYXRjaC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy92aWV3cy9yZXRyeXBhdGNoLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXRyeXBhdGNoLnB5CShub25leGlzdGVu
dCkKQEAgLTEsNzIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKLQotaW1wb3J0IGxv
Z2dpbmcKLQotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5n
by5zaG9ydGN1dHMgaW1wb3J0IHJlZGlyZWN0LCByZW5kZXIKLWZyb20gZGphbmdvLnZpZXdzIGlt
cG9ydCBWaWV3Ci1mcm9tIGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNsaWNramFja2luZyBpbXBv
cnQgeGZyYW1lX29wdGlvbnNfZXhlbXB0Ci0KLWZyb20gZXdzLmNvbW1vbi5idWlsZGJvdCBpbXBv
cnQgQnVpbGRib3QKLWZyb20gZXdzLm1vZGVscy5idWlsZCBpbXBvcnQgQnVpbGQKLWZyb20gZXdz
Lm1vZGVscy5wYXRjaCBpbXBvcnQgUGF0Y2gKLWZyb20gZXdzLnZpZXdzLnN0YXR1c2J1YmJsZSBp
bXBvcnQgU3RhdHVzQnViYmxlCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykK
LQotCi1jbGFzcyBSZXRyeVBhdGNoKFZpZXcpOgotICAgIGRlZiBnZXQoc2VsZiwgcmVxdWVzdCk6
Ci0gICAgICAgIHJldHVybiByZW5kZXIocmVxdWVzdCwgJ3JldHJ5Lmh0bWwnLCB7fSkKLQotICAg
IEB4ZnJhbWVfb3B0aW9uc19leGVtcHQKLSAgICBkZWYgcG9zdChzZWxmLCByZXF1ZXN0KToKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0Y2hfaWQgPSByZXF1ZXN0LlBPU1QuZ2V0KCdwYXRj
aF9pZCcpCi0gICAgICAgICAgICBwYXRjaF9pZCA9IGludChwYXRjaF9pZCkKLSAgICAgICAgZXhj
ZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICByZXR1cm4gSHR0
cFJlc3BvbnNlKCdJbnZhbGlkIHBhdGNoIGlkOiB7fScuZm9ybWF0KHJlcXVlc3QuUE9TVC5nZXQo
J3BhdGNoX2lkJykpKQotCi0gICAgICAgIGJ1aWxkc190b19yZXRyeSA9IFN0YXR1c0J1YmJsZSgp
LmZpbmRfZmFpbGVkX2J1aWxkc19mb3JfcGF0Y2gocGF0Y2hfaWQpCi0gICAgICAgIF9sb2cuaW5m
bygnUmV0cnlpbmcgcGF0Y2g6IHt9LiBGYWlsZWQgYnVpbGRzOiB7fScuZm9ybWF0KHBhdGNoX2lk
LCBidWlsZHNfdG9fcmV0cnkpKQotICAgICAgICBpZiBub3QgYnVpbGRzX3RvX3JldHJ5OgotICAg
ICAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgnTm8gcmVjZW50IGZhaWxlZCBidWlsZChzKSBm
b3VuZCBmb3IgcGF0Y2gge30uJy5mb3JtYXQocGF0Y2hfaWQpKQotCi0gICAgICAgIGZhaWxlZF90
b19yZXRyeV9idWlsZHMgPSBbXQotICAgICAgICBmb3IgYnVpbGQgaW4gYnVpbGRzX3RvX3JldHJ5
OgotICAgICAgICAgICAgaWYgYnVpbGQucmV0cmllZDoKLSAgICAgICAgICAgICAgICBfbG9nLndh
cm4oJ0J1aWxkIHt9IGZvciBwYXRjaCB7fSBpcyBhbHJlYWR5IHJldHJpZWQuJy5mb3JtYXQoYnVp
bGQudWlkLCBwYXRjaF9pZCkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAg
IEJ1aWxkLnNldF9yZXRyaWVkKGJ1aWxkLnVpZCwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBC
dWlsZGJvdC5yZXRyeV9idWlsZChidWlsZC5idWlsZGVyX2lkLCBidWlsZC5udW1iZXIpOgotICAg
ICAgICAgICAgICAgIGZhaWxlZF90b19yZXRyeV9idWlsZHMuYXBwZW5kKGJ1aWxkKQotICAgICAg
ICAgICAgICAgIEJ1aWxkLnNldF9yZXRyaWVkKGJ1aWxkLnVpZCwgRmFsc2UpCi0KLSAgICAgICAg
aWYgbGVuKGZhaWxlZF90b19yZXRyeV9idWlsZHMpID4gMDoKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PSAnRmFpbGVkIHRvIHJldHJ5IHt9IGJ1aWxkKHMpIGZvciBwYXRjaCB7fS4nLmZvcm1hdChsZW4o
ZmFpbGVkX3RvX3JldHJ5X2J1aWxkcyksIHBhdGNoX2lkKQotICAgICAgICAgICAgbWVzc2FnZSAr
PSAnIFBsZWFzZSBjb250YWN0IGFkbWluQHdlYmtpdC5vcmcgaWYgdGhlIHByb2JsZW0gcGVyc2lz
dC4nCi0gICAgICAgICAgICBfbG9nLndhcm4obWVzc2FnZSkKLSAgICAgICAgICAgIHJldHVybiBI
dHRwUmVzcG9uc2UobWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCcvc3RhdHVzLWJ1
YmJsZS97fScuZm9ybWF0KHBhdGNoX2lkKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL3ZpZXdzL3N0YXR1cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9zdGF0dXMucHkJKHJldmlzaW9uIDI2ODczMSkK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL3N0YXR1cy5weQko
bm9uZXhpc3RlbnQpCkBAIC0xLDY3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0K
LWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEpzb25SZXNwb25zZQotZnJvbSBkamFuZ28udmlld3Mg
aW1wb3J0IFZpZXcKLWZyb20gZXdzLmNvbW1vbi5idWlsZGJvdCBpbXBvcnQgQnVpbGRib3QKLWZy
b20gZXdzLm1vZGVscy5wYXRjaCBpbXBvcnQgUGF0Y2gKLWZyb20gZXdzLnZpZXdzLnN0YXR1c2J1
YmJsZSBpbXBvcnQgU3RhdHVzQnViYmxlCi1pbXBvcnQgZXdzLmNvbmZpZyBhcyBjb25maWcKLQot
Ci1jbGFzcyBTdGF0dXMoVmlldyk6Ci0gICAgZGVmIF9idWlsZF9zdGF0dXMoc2VsZiwgcGF0Y2gs
IHF1ZXVlKToKLSAgICAgICAgYnVpbGQsIF8gPSBTdGF0dXNCdWJibGUoKS5nZXRfbGF0ZXN0X2J1
aWxkX2Zvcl9xdWV1ZShwYXRjaCwgcXVldWUpCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAg
ICAgICAgIHJldHVybiB7fQotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAnc3RhdGUn
OiBidWlsZC5yZXN1bHQsCi0gICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8ve30vIy9idWlsZGVy
cy97fS9idWlsZHMve30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIGJ1aWxk
LmJ1aWxkZXJfaWQsIGJ1aWxkLm51bWJlciksCi0gICAgICAgICAgICAndGltZXN0YW1wJzogYnVp
bGQuY29tcGxldGVfYXQsCi0gICAgICAgIH0KLQotICAgIGRlZiBfYnVpbGRfc3RhdHVzZXNfZm9y
X3BhdGNoKHNlbGYsIHBhdGNoKToKLSAgICAgICAgaWYgbm90IHBhdGNoOgotICAgICAgICAgICAg
cmV0dXJuIFtdCi0KLSAgICAgICAgc3RhdHVzZXMgPSB7fQotICAgICAgICBpZiBwYXRjaC5zZW50
X3RvX2J1aWxkYm90OgotICAgICAgICAgICAgZm9yIHF1ZXVlIGluIFN0YXR1c0J1YmJsZS5BTExf
UVVFVUVTOgotICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNlbGYuX2J1aWxkX3N0YXR1cyhwYXRj
aCwgcXVldWUpCi0gICAgICAgICAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAgICAgICAgICAg
ICBzdGF0dXNlc1txdWV1ZV0gPSBzdGF0dXMKLQotICAgICAgICBpZiBwYXRjaC5zZW50X3RvX2Nv
bW1pdF9xdWV1ZToKLSAgICAgICAgICAgIGNxX3N0YXR1cyA9IHNlbGYuX2J1aWxkX3N0YXR1cyhw
YXRjaCwgJ2NvbW1pdCcpCi0gICAgICAgICAgICBpZiBjcV9zdGF0dXM6Ci0gICAgICAgICAgICAg
ICAgc3RhdHVzZXNbJ2NvbW1pdCddID0gY3Ffc3RhdHVzCi0KLSAgICAgICAgcmV0dXJuIHN0YXR1
c2VzCi0KLSAgICBkZWYgZ2V0KHNlbGYsIHJlcXVlc3QsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0
Y2hfaWQgPSBpbnQocGF0Y2hfaWQpCi0gICAgICAgIHBhdGNoID0gUGF0Y2guZ2V0X3BhdGNoKHBh
dGNoX2lkKQotICAgICAgICByZXNwb25zZV9kYXRhID0gc2VsZi5fYnVpbGRfc3RhdHVzZXNfZm9y
X3BhdGNoKHBhdGNoKQotICAgICAgICByZXR1cm4gSnNvblJlc3BvbnNlKHJlc3BvbnNlX2RhdGEp
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9zdGF0dXNi
dWJibGUucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9l
d3Mvdmlld3Mvc3RhdHVzYnViYmxlLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9zdGF0dXNidWJibGUucHkJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzNjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1p
bXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLQotZnJvbSBkamFuZ28u
aHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1wb3J0IHJl
bmRlcgotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1mcm9tIGRqYW5nby52aWV3
cyBpbXBvcnQgVmlldwotZnJvbSBkamFuZ28udmlld3MuZGVjb3JhdG9ycy5jbGlja2phY2tpbmcg
aW1wb3J0IHhmcmFtZV9vcHRpb25zX2V4ZW1wdAotZnJvbSBld3MuY29tbW9uLmJ1aWxkYm90IGlt
cG9ydCBCdWlsZGJvdAotZnJvbSBld3MubW9kZWxzLmJ1aWxkIGltcG9ydCBCdWlsZAotZnJvbSBl
d3MubW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAotaW1wb3J0IGV3cy5jb25maWcgYXMgY29uZmln
Ci0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1jbGFzcyBTdGF0dXNC
dWJibGUoVmlldyk6Ci0gICAgIyBUaGVzZSBxdWV1ZSBuYW1lcyBhcmUgZnJvbSBzaG9ydG5hbWUg
aW4gaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci93ZWJraXQvdHJ1bmsvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZpZy5qc29uCi0gICAgIyBGSVhNRTogQXV0by1n
ZW5lcmF0ZSB0aGlzIGxpc3QgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTY0MAotICAgICMgTm90ZTogVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiB0aGUgb3JkZXIgb2Yg
d2hpY2ggYnViYmxlcyBhcHBlYXIgaW4gYnVnemlsbGEuCi0gICAgQUxMX1FVRVVFUyA9IFsnc3R5
bGUnLCAnaW9zJywgJ2lvcy1zaW0nLCAnbWFjJywgJ21hYy1kZWJ1ZycsICdtYWMtQVMnLCAndHYn
LCAndHYtc2ltJywgJ3dhdGNoJywgJ3dhdGNoLXNpbScsICdndGsnLCAnd3BlJywgJ3dpbmNhaXJv
JywgJ3dpbicsCi0gICAgICAgICAgICAgICAgICAnaW9zLXdrMicsICdtYWMtd2sxJywgJ21hYy13
azInLCAnbWFjLWRlYnVnLXdrMScsICdhcGktaW9zJywgJ2FwaS1tYWMnLCAnYXBpLWd0aycsCi0g
ICAgICAgICAgICAgICAgICAnYmluZGluZ3MnLCAnanNjJywgJ2pzYy1hcm12NycsICdqc2MtYXJt
djctdGVzdHMnLCAnanNjLW1pcHMnLCAnanNjLW1pcHMtdGVzdHMnLCAnanNjLWkzODYnLCAnd2Vi
a2l0cGVybCcsICd3ZWJraXRweScsICdzZXJ2aWNlcyddCi0gICAgIyBGSVhNRTogQXV0by1nZW5l
cmF0ZSB0aGUgcXVldWUncyB0cmlnZ2VyIHJlbGF0aW9uc2hpcAotICAgIFFVRVVFX1RSSUdHRVJT
ID0gewotICAgICAgICAnYXBpLWlvcyc6ICdpb3Mtc2ltJywKLSAgICAgICAgJ2lvcy13azInOiAn
aW9zLXNpbScsCi0gICAgICAgICdhcGktbWFjJzogJ21hYycsCi0gICAgICAgICdtYWMtd2sxJzog
J21hYycsCi0gICAgICAgICdtYWMtd2syJzogJ21hYycsCi0gICAgICAgICdtYWMtZGVidWctd2sx
JzogJ21hYy1kZWJ1ZycsCi0gICAgICAgICdhcGktZ3RrJzogJ2d0aycsCi0gICAgICAgICdqc2Mt
bWlwcy10ZXN0cyc6ICdqc2MtbWlwcycsCi0gICAgICAgICdqc2MtYXJtdjctdGVzdHMnOiAnanNj
LWFybXY3JywKLSAgICB9Ci0KLSAgICBTVEVQU19UT19ISURFID0gWydeQXJjaGl2ZWQgYnVpbHQg
cHJvZHVjdCQnLCAnXlVwbG9hZGVkIGJ1aWx0IHByb2R1Y3QkJywgJ15UcmFuc2ZlcnJlZCBhcmNo
aXZlIHRvIFMzJCcsCi0gICAgICAgICAgICAgICAgICAgICAnXkFyY2hpdmVkIHRlc3QgcmVzdWx0
cyQnLCAnXlVwbG9hZGVkIHRlc3QgcmVzdWx0cyQnLCAnXkV4dHJhY3RlZCB0ZXN0IHJlc3VsdHMk
JywKLSAgICAgICAgICAgICAgICAgICAgICdeRG93bmxvYWRlZCBidWlsdCBwcm9kdWN0JCcsICde
RXh0cmFjdGVkIGJ1aWx0IHByb2R1Y3QkJywKLSAgICAgICAgICAgICAgICAgICAgICdeQ3Jhc2gg
Y29sbGVjdGlvbiBoYXMgcXVpZXNjZWQkJywgJ15UcmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Np
b24kJywKLSAgICAgICAgICAgICAgICAgICAgICdeQ2xlYW5lZCBhbmQgdXBkYXRlZCB3b3JraW5n
IGRpcmVjdG9yeSQnLCAnXkNoZWNrZWQgb3V0IHJlcXVpcmVkIHJldmlzaW9uJCcsICdeVXBkYXRl
ZCB3b3JraW5nIGRpcmVjdG9yeSQnLAotICAgICAgICAgICAgICAgICAgICAgJ15WYWxpZGF0ZWQg
cGF0Y2gkJywgJ15LaWxsZWQgb2xkIHByb2Nlc3NlcyQnLCAnXkNvbmZpZ3VyZWQgYnVpbGQkJywg
J15PUzouKlhjb2RlOicsICcoc2tpcHBlZCknLAotICAgICAgICAgICAgICAgICAgICAgJ15Qcmlu
dGVkIGNvbmZpZ3VyYXRpb24kJywgJ15QYXRjaCBjb250YWlucyByZWxldmFudCBjaGFuZ2VzJCcs
ICdeRGVsZXRlZCAuZ2l0L2luZGV4LmxvY2skJywKLSAgICAgICAgICAgICAgICAgICAgICdedHJp
Z2dlcmVkLiokJywgJ15Gb3VuZCBtb2RpZmllZCBDaGFuZ2VMb2dzJCcsICdeQ3JlYXRlZCBsb2Nh
bCBnaXQgY29tbWl0JCcsICdeU2V0IGJ1aWxkIHN1bW1hcnkkJywKLSAgICAgICAgICAgICAgICAg
ICAgICdeVmFsaWRhdGVkIGNvbW1pdGVyJCcsICdeVmFsaWRhdGVkIGNvbW1pdGVyIGFuZCByZXZp
ZXdlciQnLCAnXlZhbGlkYXRlZCBDaGFuZ2VMb2cgYW5kIFJldmlld2VyJCcsCi0gICAgICAgICAg
ICAgICAgICAgICAnXlJlbW92ZWQgZmxhZ3Mgb24gYnVnemlsbGEgcGF0Y2gkJywgJ15DaGVja2Vk
IHBhdGNoIHN0YXR1cyBvbiBvdGhlciBxdWV1ZXMkJ10KLSAgICBEQVlTX1RPX0NIRUNLID0gMwot
ICAgIEJVSUxERVJfSUNPTiA9IHUnXFUwMDAxZjZlMCcKLSAgICBURVNURVJfSUNPTiA9IHUnXFUw
MDAxZjUyYycKLSAgICBCVUlMRF9SRVRSWV9NU0cgPSAncmV0cnlpbmcgYnVpbGQnCi0KLSAgICBk
ZWYgX2J1aWxkX2J1YmJsZShzZWxmLCBwYXRjaCwgcXVldWUsIGhpZGVfaWNvbnM9RmFsc2UpOgot
ICAgICAgICBidWJibGUgPSB7Ci0gICAgICAgICAgICAnbmFtZSc6IHF1ZXVlLAotICAgICAgICB9
Ci0gICAgICAgIGlzX3Rlc3Rlcl9xdWV1ZSA9IHNlbGYuX2lzX3Rlc3Rlcl9xdWV1ZShxdWV1ZSkK
LSAgICAgICAgaXNfYnVpbGRlcl9xdWV1ZSA9IHNlbGYuX2lzX2J1aWxkZXJfcXVldWUocXVldWUp
Ci0gICAgICAgIGlmIGhpZGVfaWNvbnMgPT0gRmFsc2U6Ci0gICAgICAgICAgICBpZiBpc190ZXN0
ZXJfcXVldWU6Ci0gICAgICAgICAgICAgICAgYnViYmxlWyduYW1lJ10gPSBTdGF0dXNCdWJibGUu
VEVTVEVSX0lDT04gKyAnICAnICsgYnViYmxlWyduYW1lJ10KLSAgICAgICAgICAgIGlmIGlzX2J1
aWxkZXJfcXVldWU6Ci0gICAgICAgICAgICAgICAgYnViYmxlWyduYW1lJ10gPSBTdGF0dXNCdWJi
bGUuQlVJTERFUl9JQ09OICsgJyAgJyArIGJ1YmJsZVsnbmFtZSddCi0KLSAgICAgICAgYnVpbGRz
LCBpc19wYXJlbnRfYnVpbGQgPSBzZWxmLmdldF9hbGxfYnVpbGRzX2Zvcl9xdWV1ZShwYXRjaCwg
cXVldWUsIHNlbGYuX2dldF9wYXJlbnRfcXVldWUocXVldWUpKQotICAgICAgICBidWlsZCA9IE5v
bmUKLSAgICAgICAgaWYgYnVpbGRzOgotICAgICAgICAgICAgYnVpbGQgPSBidWlsZHNbMF0KLSAg
ICAgICAgICAgIGJ1aWxkcyA9IGJ1aWxkc1s6MTBdICAjIExpbWl0IG51bWJlciBvZiBidWlsZHMg
dG8gZGlzcGxheSBpbiBzdGF0dXMtYnViYmxlIGhvdmVyIG92ZXIgbWVzc2FnZQotICAgICAgICBp
ZiBub3Qgc2VsZi5fc2hvdWxkX3Nob3dfYnViYmxlX2Zvcl9idWlsZChidWlsZCk6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIGJ1
YmJsZVsnc3RhdGUnXSA9ICdub25lJwotICAgICAgICAgICAgcXVldWVfcG9zaXRpb24gPSBzZWxm
Ll9xdWV1ZV9wb3NpdGlvbihwYXRjaCwgcXVldWUsIHNlbGYuX2dldF9wYXJlbnRfcXVldWUocXVl
dWUpKQotICAgICAgICAgICAgYnViYmxlWydxdWV1ZV9wb3NpdGlvbiddID0gcXVldWVfcG9zaXRp
b24KLSAgICAgICAgICAgIGlmIG5vdCBxdWV1ZV9wb3NpdGlvbjoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICAgICAgaWYgc2VsZi5fZ2V0X3BhcmVudF9xdWV1ZShxdWV1ZSk6
Ci0gICAgICAgICAgICAgICAgcXVldWUgPSBzZWxmLl9nZXRfcGFyZW50X3F1ZXVlKHF1ZXVlKQot
ICAgICAgICAgICAgcXVldWVfZnVsbF9uYW1lID0gQnVpbGRib3QucXVldWVfbmFtZV9ieV9zaG9y
dG5hbWVfbWFwcGluZy5nZXQocXVldWUpCi0gICAgICAgICAgICBpZiBxdWV1ZV9mdWxsX25hbWU6
Ci0gICAgICAgICAgICAgICAgYnViYmxlWyd1cmwnXSA9ICdodHRwczovL3t9LyMvYnVpbGRlcnMv
e30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIHF1ZXVlX2Z1bGxfbmFtZSkK
LSAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSAnV2FpdGluZyBpbiBxdWV1
ZSwgcHJvY2Vzc2luZyBoYXMgbm90IHN0YXJ0ZWQgeWV0LlxuXG5Qb3NpdGlvbiBpbiBxdWV1ZTog
e30nLmZvcm1hdChxdWV1ZV9wb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBidWJibGUKLQot
ICAgICAgICBidWJibGVbJ3VybCddID0gJ2h0dHBzOi8ve30vIy9idWlsZGVycy97fS9idWlsZHMv
e30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIGJ1aWxkLmJ1aWxkZXJfaWQs
IGJ1aWxkLm51bWJlcikKLSAgICAgICAgYnVpbGRlcl9mdWxsX25hbWUgPSBidWlsZC5idWlsZGVy
X25hbWUucmVwbGFjZSgnLScsICcgJykKLQotICAgICAgICBpZiBidWlsZC5yZXN1bHQgaXMgTm9u
ZTogICMgSW4tcHJvZ3Jlc3MgYnVpbGQKLSAgICAgICAgICAgIGlmIHNlbGYuX2RvZXNfYnVpbGRf
Y29udGFpbnNfYW55X2ZhaWxlZF9zdGVwKGJ1aWxkKToKLSAgICAgICAgICAgICAgICBidWJibGVb
J3N0YXRlJ10gPSAncHJvdmlzaW9uYWwtZmFpbCcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ3N0YXJ0ZWQnCi0gICAgICAgICAgICBidWJibGVb
J2RldGFpbHNfbWVzc2FnZSddID0gJ0J1aWxkIGlzIGluLXByb2dyZXNzLiBSZWNlbnQgbWVzc2Fn
ZXM6JyArIHNlbGYuX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykK
LSAgICAgICAgZWxpZiBidWlsZC5yZXRyaWVkOgotICAgICAgICAgICAgYnViYmxlWydzdGF0ZSdd
ID0gJ3N0YXJ0ZWQnCi0gICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVzc2FnZSddID0gJ1dh
aXRpbmcgZm9yIGF2YWlsYWJsZSBib3QgdG8gcmV0cnkgdGhlIGJ1aWxkLlxuXG5SZWNlbnQgbWVz
c2FnZXM6JyArIHNlbGYuX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxk
cykKLSAgICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuU1VDQ0VTUzoKLSAgICAg
ICAgICAgIGlmIGlzX3BhcmVudF9idWlsZDoKLSAgICAgICAgICAgICAgICBpZiBwYXRjaC5jcmVh
dGVkIDwgKHRpbWV6b25lLm5vdygpIC0gZGF0ZXRpbWUudGltZWRlbHRhKGRheXM9U3RhdHVzQnVi
YmxlLkRBWVNfVE9fQ0hFQ0spKToKLSAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgZGlzcGxh
eSBidWJibGUgZm9yIG9sZCBwYXRjaCBmb3Igd2hpY2ggbm8gYnVpbGQgaGFzIGJlZW4gcmVwb3J0
ZWQgb24gZ2l2ZW4gcXVldWUuCi0gICAgICAgICAgICAgICAgICAgICMgTW9zdCBsaWtlbHkgdGhl
IHBhdGNoIHdvdWxkIG5ldmVyIGJlIHByb2Nlc3NlZCBvbiB0aGlzIHF1ZXVlLCBzaW5jZSBlaXRo
ZXIgdGhlIHF1ZXVlIHdhcwotICAgICAgICAgICAgICAgICAgICAjIGFkZGVkIGFmdGVyIHRoZSBw
YXRjaCB3YXMgc3VibWl0dGVkLCBvciBidWlsZCByZXF1ZXN0IGZvciB0aGF0IHBhdGNoIHdhcyBj
YW5jZWxsZWQuCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAg
ICAgYnViYmxlWydzdGF0ZSddID0gJ3N0YXJ0ZWQnCi0gICAgICAgICAgICAgICAgYnViYmxlWydk
ZXRhaWxzX21lc3NhZ2UnXSA9ICdXYWl0aW5nIHRvIHJ1biB0ZXN0cy4nCi0gICAgICAgICAgICAg
ICAgcXVldWVfZnVsbF9uYW1lID0gQnVpbGRib3QucXVldWVfbmFtZV9ieV9zaG9ydG5hbWVfbWFw
cGluZy5nZXQocXVldWUpCi0gICAgICAgICAgICAgICAgaWYgcXVldWVfZnVsbF9uYW1lOgotICAg
ICAgICAgICAgICAgICAgICBidWJibGVbJ3VybCddID0gJ2h0dHBzOi8ve30vIy9idWlsZGVycy97
fScuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgcXVldWVfZnVsbF9uYW1lKQot
ICAgICAgICAgICAgICAgICAgICBidWlsZGVyX2Z1bGxfbmFtZSA9IHF1ZXVlX2Z1bGxfbmFtZS5y
ZXBsYWNlKCctJywgJyAnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBidWJi
bGVbJ3N0YXRlJ10gPSAncGFzcycKLSAgICAgICAgICAgICAgICBpZiBpc19idWlsZGVyX3F1ZXVl
IGFuZCBpc190ZXN0ZXJfcXVldWU6Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWls
c19tZXNzYWdlJ10gPSAnQnVpbHQgc3VjY2Vzc2Z1bGx5IGFuZCBwYXNzZWQgdGVzdHMnCi0gICAg
ICAgICAgICAgICAgZWxpZiBpc19idWlsZGVyX3F1ZXVlOgotICAgICAgICAgICAgICAgICAgICBi
dWJibGVbJ2RldGFpbHNfbWVzc2FnZSddID0gJ0J1aWx0IHN1Y2Nlc3NmdWxseScKLSAgICAgICAg
ICAgICAgICBlbGlmIGlzX3Rlc3Rlcl9xdWV1ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgcXVl
dWUgPT0gJ3N0eWxlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19t
ZXNzYWdlJ10gPSAnUGFzc2VkIHN0eWxlIGNoZWNrJwotICAgICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdQ
YXNzZWQgdGVzdHMnCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
YnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdQYXNzJwotICAgICAgICBlbGlmIGJ1aWxkLnJl
c3VsdCA9PSBCdWlsZGJvdC5XQVJOSU5HUzoKLSAgICAgICAgICAgIGJ1YmJsZVsnc3RhdGUnXSA9
ICdwYXNzJwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdXYXJuaW5n
JyArIHNlbGYuX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykKLSAg
ICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuRkFJTFVSRToKLSAgICAgICAgICAg
IGJ1YmJsZVsnc3RhdGUnXSA9ICdmYWlsJwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21l
c3NhZ2UnXSA9IHNlbGYuX21vc3RfcmVjZW50X2ZhaWx1cmVfbWVzc2FnZShidWlsZCkKLSAgICAg
ICAgICAgIGlmIFN0YXR1c0J1YmJsZS5CVUlMRF9SRVRSWV9NU0cgaW4gYnViYmxlWydkZXRhaWxz
X21lc3NhZ2UnXToKLSAgICAgICAgICAgICAgICBidWJibGVbJ3N0YXRlJ10gPSAncHJvdmlzaW9u
YWwtZmFpbCcKLSAgICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuU0tJUFBFRDoK
LSAgICAgICAgICAgIGJ1YmJsZVsnc3RhdGUnXSA9ICdub25lJwotICAgICAgICAgICAgYnViYmxl
WydkZXRhaWxzX21lc3NhZ2UnXSA9ICdUaGUgcGF0Y2ggaXMgbm8gbG9uZ2VyIGVsaWdpYmxlIGZv
ciBwcm9jZXNzaW5nLicKLSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyJ0J1ZyAuKiBpcyBhbHJl
YWR5IGNsb3NlZCcsIGJ1aWxkLnN0YXRlX3N0cmluZyk6Ci0gICAgICAgICAgICAgICAgYnViYmxl
WydkZXRhaWxzX21lc3NhZ2UnXSArPSAnIEJ1ZyB3YXMgYWxyZWFkeSBjbG9zZWQgd2hlbiBFV1Mg
YXR0ZW1wdGVkIHRvIHByb2Nlc3MgaXQuJwotICAgICAgICAgICAgZWxpZiByZS5zZWFyY2gocidQ
YXRjaCAuKiBpcyBtYXJrZWQgci0nLCBidWlsZC5zdGF0ZV9zdHJpbmcpOgotICAgICAgICAgICAg
ICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gKz0gJyBQYXRjaCB3YXMgYWxyZWFkeSBtYXJr
ZWQgci0gd2hlbiBFV1MgYXR0ZW1wdGVkIHRvIHByb2Nlc3MgaXQuJwotICAgICAgICAgICAgZWxp
ZiByZS5zZWFyY2gocidQYXRjaCAuKiBpcyBvYnNvbGV0ZScsIGJ1aWxkLnN0YXRlX3N0cmluZyk6
Ci0gICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSArPSAnIFBhdGNoIHdh
cyBvYnNvbGV0ZSB3aGVuIEVXUyBhdHRlbXB0ZWQgdG8gcHJvY2VzcyBpdC4nCi0KLSAgICAgICAg
ICAgIGlmIGxlbihidWlsZHMpID4gMToKLSAgICAgICAgICAgICAgICBidWJibGVbJ2RldGFpbHNf
bWVzc2FnZSddICs9ICdcblNvbWUgbWVzc2FnZXMgd2VyZSBsb2dnZWQgd2hpbGUgdGhlIHBhdGNo
IHdhcyBzdGlsbCBlbGlnaWJsZTonCi0gICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21l
c3NhZ2UnXSArPSBzZWxmLl9zdGVwc19tZXNzYWdlc19mcm9tX211bHRpcGxlX2J1aWxkcyhidWls
ZHMpCi0KLSAgICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuRVhDRVBUSU9OOgot
ICAgICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ2Vycm9yJwotICAgICAgICAgICAgYnViYmxl
WydkZXRhaWxzX21lc3NhZ2UnXSA9ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQuIFJlY2Vu
dCBtZXNzYWdlczonICsgc2VsZi5fc3RlcHNfbWVzc2FnZXNfZnJvbV9tdWx0aXBsZV9idWlsZHMo
YnVpbGRzKQotICAgICAgICBlbGlmIGJ1aWxkLnJlc3VsdCA9PSBCdWlsZGJvdC5SRVRSWToKLSAg
ICAgICAgICAgIGJ1YmJsZVsnc3RhdGUnXSA9ICdwcm92aXNpb25hbC1mYWlsJwotICAgICAgICAg
ICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdCdWlsZCBpcyBiZWluZyByZXRyaWVkLiBS
ZWNlbnQgbWVzc2FnZXM6JyArIHNlbGYuX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVp
bGRzKGJ1aWxkcykKLSAgICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuQ0FOQ0VM
TEVEOgotICAgICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ25vbmUnCi0gICAgICAgICAgICBi
dWJibGVbJ2RldGFpbHNfbWVzc2FnZSddID0gJ0J1aWxkIHdhcyBjYW5jZWxsZWQuIFJlY2VudCBt
ZXNzYWdlczonICsgc2VsZi5fc3RlcHNfbWVzc2FnZXNfZnJvbV9tdWx0aXBsZV9idWlsZHMoYnVp
bGRzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ2Vycm9y
JwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdBbiB1bmV4cGVjdGVk
IGVycm9yIG9jY3VyZWQuIFJlY2VudCBtZXNzYWdlczonICsgc2VsZi5fc3RlcHNfbWVzc2FnZXNf
ZnJvbV9tdWx0aXBsZV9idWlsZHMoYnVpbGRzKQotCi0gICAgICAgIGlmICdkZXRhaWxzX21lc3Nh
Z2UnIGluIGJ1YmJsZToKLSAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSBi
dWlsZGVyX2Z1bGxfbmFtZSArICdcblxuJyArIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10KLSAg
ICAgICAgICAgIG9zX2RldGFpbHMgPSBzZWxmLmdldF9vc19kZXRhaWxzKGJ1aWxkKQotICAgICAg
ICAgICAgdGltZXN0YW1wID0gc2VsZi5nZXRfYnVpbGRfdGltZXN0YW1wKGJ1aWxkKQotICAgICAg
ICAgICAgaWYgb3NfZGV0YWlsczoKLSAgICAgICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVz
c2FnZSddICs9ICdcblxuJyArIG9zX2RldGFpbHMgKyAnXG4nICsgdGltZXN0YW1wCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gKz0g
J1xuXG4nICsgdGltZXN0YW1wCi0KLSAgICAgICAgcmV0dXJuIGJ1YmJsZQotCi0gICAgZGVmIF9p
c190ZXN0ZXJfcXVldWUoc2VsZiwgcXVldWUpOgotICAgICAgICBpY29uID0gQnVpbGRib3QuaWNv
bnNfZm9yX3F1ZXVlc19tYXBwaW5nLmdldChxdWV1ZSkKLSAgICAgICAgcmV0dXJuIGljb24gaW4g
Wyd0ZXN0T25seScsICdidWlsZEFuZFRlc3QnXQotCi0gICAgZGVmIF9pc19idWlsZGVyX3F1ZXVl
KHNlbGYsIHF1ZXVlKToKLSAgICAgICAgaWNvbiA9IEJ1aWxkYm90Lmljb25zX2Zvcl9xdWV1ZXNf
bWFwcGluZy5nZXQocXVldWUpCi0gICAgICAgIHJldHVybiBpY29uIGluIFsnYnVpbGRPbmx5Jywg
J2J1aWxkQW5kVGVzdCddCi0KLSAgICBkZWYgX2dldF9wYXJlbnRfcXVldWUoc2VsZiwgcXVldWUp
OgotICAgICAgICByZXR1cm4gU3RhdHVzQnViYmxlLlFVRVVFX1RSSUdHRVJTLmdldChxdWV1ZSkK
LQotICAgIGRlZiBnZXRfb3NfZGV0YWlscyhzZWxmLCBidWlsZCk6Ci0gICAgICAgIGZvciBzdGVw
IGluIGJ1aWxkLnN0ZXBfc2V0LmFsbCgpOgotICAgICAgICAgICAgaWYgc3RlcC5zdGF0ZV9zdHJp
bmcuc3RhcnRzd2l0aCgnT1M6Jyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAuc3RhdGVf
c3RyaW5nCi0gICAgICAgIHJldHVybiAnJwotCi0gICAgZGVmIGdldF9idWlsZF90aW1lc3RhbXAo
c2VsZiwgYnVpbGQpOgotICAgICAgICBpZiBidWlsZC5jb21wbGV0ZV9hdDoKLSAgICAgICAgICAg
IHJldHVybiBzZWxmLl9pc29fdGltZShidWlsZC5jb21wbGV0ZV9hdCkKLQotICAgICAgICByZWNl
bnRfYnVpbGRfc3RlcCA9IGJ1aWxkLnN0ZXBfc2V0Lmxhc3QoKQotICAgICAgICBpZiByZWNlbnRf
YnVpbGRfc3RlcDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9pc29fdGltZShyZWNlbnRfYnVp
bGRfc3RlcC5zdGFydGVkX2F0KQotCi0gICAgICAgIHJldHVybiBzZWxmLl9pc29fdGltZShidWls
ZC5zdGFydGVkX2F0KQotCi0gICAgZGVmIF9pc29fdGltZShzZWxmLCB0aW1lKToKLSAgICAgICAg
cmV0dXJuICdbWycgKyBkYXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKHRpbWUpLmlzb2Zv
cm1hdCgpICsgJ1pdXScKLQotICAgIGRlZiBfc3RlcHNfbWVzc2FnZXMoc2VsZiwgYnVpbGQpOgot
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKFtzdGVwLnN0YXRlX3N0cmluZyBmb3Igc3RlcCBpbiBi
dWlsZC5zdGVwX3NldC5hbGwoKS5vcmRlcl9ieSgndWlkJykgaWYgc2VsZi5fc2hvdWxkX2Rpc3Bs
YXlfc3RlcChzdGVwKV0pCi0KLSAgICBkZWYgX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVf
YnVpbGRzKHNlbGYsIGJ1aWxkcyk6Ci0gICAgICAgIG1lc3NhZ2UgPSAnJwotICAgICAgICBmb3Ig
YnVpbGQgaW4gcmV2ZXJzZWQoYnVpbGRzKToKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJ1xuXG4n
ICsgc2VsZi5fc3RlcHNfbWVzc2FnZXMoYnVpbGQpCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0K
LSAgICBkZWYgX3Nob3VsZF9kaXNwbGF5X3N0ZXAoc2VsZiwgc3RlcCk6Ci0gICAgICAgIHJldHVy
biBub3QgZmlsdGVyKGxhbWJkYSBzdGVwX3RvX2hpZGU6IHJlLnNlYXJjaChzdGVwX3RvX2hpZGUs
IHN0ZXAuc3RhdGVfc3RyaW5nKSwgU3RhdHVzQnViYmxlLlNURVBTX1RPX0hJREUpCi0KLSAgICBk
ZWYgX2RvZXNfYnVpbGRfY29udGFpbnNfYW55X2ZhaWxlZF9zdGVwKHNlbGYsIGJ1aWxkKToKLSAg
ICAgICAgZm9yIHN0ZXAgaW4gYnVpbGQuc3RlcF9zZXQuYWxsKCk6Ci0gICAgICAgICAgICBpZiBz
dGVwLnJlc3VsdCBhbmQgc3RlcC5yZXN1bHQgIT0gQnVpbGRib3QuU1VDQ0VTUyBhbmQgc3RlcC5y
ZXN1bHQgIT0gQnVpbGRib3QuV0FSTklOR1MgYW5kIHN0ZXAucmVzdWx0ICE9IEJ1aWxkYm90LlNL
SVBQRUQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICBkZWYgX21vc3RfcmVjZW50X2ZhaWx1cmVfbWVzc2FnZShzZWxmLCBidWlsZCk6Ci0g
ICAgICAgIGZvciBzdGVwIGluIGJ1aWxkLnN0ZXBfc2V0LmFsbCgpLm9yZGVyX2J5KCctdWlkJyk6
Ci0gICAgICAgICAgICBpZiBzdGVwLnJlc3VsdCA9PSBCdWlsZGJvdC5TVUNDRVNTIGFuZCBTdGF0
dXNCdWJibGUuQlVJTERfUkVUUllfTVNHIGluIHN0ZXAuc3RhdGVfc3RyaW5nOgotICAgICAgICAg
ICAgICAgIHJldHVybiBzdGVwLnN0YXRlX3N0cmluZwotICAgICAgICAgICAgaWYgc3RlcC5yZXN1
bHQgPT0gQnVpbGRib3QuRkFJTFVSRToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RlcC5zdGF0
ZV9zdHJpbmcKLSAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgZ2V0X2xhdGVzdF9idWlsZF9m
b3JfcXVldWUoc2VsZiwgcGF0Y2gsIHF1ZXVlLCBwYXJlbnRfcXVldWU9Tm9uZSk6Ci0gICAgICAg
IGJ1aWxkcywgaXNfcGFyZW50X2J1aWxkID0gc2VsZi5nZXRfYWxsX2J1aWxkc19mb3JfcXVldWUo
cGF0Y2gsIHF1ZXVlLCBwYXJlbnRfcXVldWUpCi0gICAgICAgIGlmIG5vdCBidWlsZHM6Ci0gICAg
ICAgICAgICByZXR1cm4gKE5vbmUsIE5vbmUpCi0gICAgICAgIHJldHVybiAoYnVpbGRzWzBdLCBp
c19wYXJlbnRfYnVpbGQpCi0KLSAgICBkZWYgZ2V0X2FsbF9idWlsZHNfZm9yX3F1ZXVlKHNlbGYs
IHBhdGNoLCBxdWV1ZSwgcGFyZW50X3F1ZXVlPU5vbmUpOgotICAgICAgICBidWlsZHMgPSBzZWxm
LmdldF9idWlsZHNfZm9yX3F1ZXVlKHBhdGNoLCBxdWV1ZSkKLSAgICAgICAgaXNfcGFyZW50X2J1
aWxkID0gRmFsc2UKLSAgICAgICAgaWYgbm90IGJ1aWxkcyBhbmQgcGFyZW50X3F1ZXVlOgotICAg
ICAgICAgICAgYnVpbGRzID0gc2VsZi5nZXRfYnVpbGRzX2Zvcl9xdWV1ZShwYXRjaCwgcGFyZW50
X3F1ZXVlKQotICAgICAgICAgICAgaXNfcGFyZW50X2J1aWxkID0gVHJ1ZQotICAgICAgICBpZiBu
b3QgYnVpbGRzOgotICAgICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQotICAgICAgICBidWls
ZHMuc29ydChrZXk9bGFtYmRhIGJ1aWxkOiBidWlsZC5udW1iZXIsIHJldmVyc2U9VHJ1ZSkKLSAg
ICAgICAgcmV0dXJuIChidWlsZHMsIGlzX3BhcmVudF9idWlsZCkKLQotICAgIGRlZiBnZXRfYnVp
bGRzX2Zvcl9xdWV1ZShzZWxmLCBwYXRjaCwgcXVldWUpOgotICAgICAgICByZXR1cm4gW2J1aWxk
IGZvciBidWlsZCBpbiBwYXRjaC5idWlsZF9zZXQuYWxsKCkgaWYgYnVpbGQuYnVpbGRlcl9kaXNw
bGF5X25hbWUgPT0gcXVldWVdCi0KLSAgICBkZWYgZmluZF9mYWlsZWRfYnVpbGRzX2Zvcl9wYXRj
aChzZWxmLCBwYXRjaF9pZCk6Ci0gICAgICAgIHBhdGNoID0gUGF0Y2guZ2V0X3BhdGNoKHBhdGNo
X2lkKQotICAgICAgICBpZiBub3QgcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAg
ICAgZmFpbGVkX2J1aWxkcyA9IFtdCi0gICAgICAgIGZvciBxdWV1ZSBpbiBTdGF0dXNCdWJibGUu
QUxMX1FVRVVFUzoKLSAgICAgICAgICAgIGJ1aWxkLCBfID0gc2VsZi5nZXRfbGF0ZXN0X2J1aWxk
X2Zvcl9xdWV1ZShwYXRjaCwgcXVldWUpCi0gICAgICAgICAgICBpZiBub3QgYnVpbGQ6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIGJ1aWxkLnJlc3VsdCBpbiAoQnVp
bGRib3QuRkFJTFVSRSwgQnVpbGRib3QuRVhDRVBUSU9OLCBCdWlsZGJvdC5DQU5DRUxMRUQpOgot
ICAgICAgICAgICAgICAgIGZhaWxlZF9idWlsZHMuYXBwZW5kKGJ1aWxkKQotICAgICAgICByZXR1
cm4gZmFpbGVkX2J1aWxkcwotCi0gICAgZGVmIF9zaG91bGRfc2hvd19idWJibGVfZm9yX2J1aWxk
KHNlbGYsIGJ1aWxkKToKLSAgICAgICAgaWYgYnVpbGQgYW5kIGJ1aWxkLnJlc3VsdCA9PSBCdWls
ZGJvdC5TS0lQUEVEIGFuZCByZS5zZWFyY2gocidQYXRjaCAuKiBkb2VzblwndCBoYXZlIHJlbGV2
YW50IGNoYW5nZXMnLCBidWlsZC5zdGF0ZV9zdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX3F1ZXVlX3Bvc2l0aW9uKHNlbGYs
IHBhdGNoLCBxdWV1ZSwgcGFyZW50X3F1ZXVlPU5vbmUpOgotICAgICAgICAjIEZJWE1FOiBIYW5k
bGUgcmV0cmllZCBidWlsZHMgYW5kIGNhbmNlbGxlZCBidWlsZC1yZXF1ZXN0cyBhcyB3ZWxsLgot
ICAgICAgICBmcm9tX3RpbWVzdGFtcCA9IHRpbWV6b25lLm5vdygpIC0gZGF0ZXRpbWUudGltZWRl
bHRhKGRheXM9U3RhdHVzQnViYmxlLkRBWVNfVE9fQ0hFQ0spCi0KLSAgICAgICAgaWYgcGF0Y2gu
Y3JlYXRlZCA8IGZyb21fdGltZXN0YW1wOgotICAgICAgICAgICAgIyBEbyBub3QgZGlzcGxheSBi
dWJibGUgZm9yIG9sZCBwYXRjaCBmb3Igd2hpY2ggbm8gYnVpbGQgaGFzIGJlZW4gcmVwb3J0ZWQg
b24gZ2l2ZW4gcXVldWUuCi0gICAgICAgICAgICAjIE1vc3QgbGlrZWx5IHRoZSBwYXRjaCB3b3Vs
ZCBuZXZlciBiZSBwcm9jZXNzZWQgb24gdGhpcyBxdWV1ZSwgc2luY2UgZWl0aGVyIHRoZSBxdWV1
ZSB3YXMKLSAgICAgICAgICAgICMgYWRkZWQgYWZ0ZXIgdGhlIHBhdGNoIHdhcyBzdWJtaXR0ZWQs
IG9yIGJ1aWxkIHJlcXVlc3QgZm9yIHRoYXQgcGF0Y2ggd2FzIGNhbmNlbGxlZC4KLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VudCA9ICdzZW50X3RvX2NvbW1pdF9xdWV1ZScg
aWYgcXVldWUgPT0gJ2NvbW1pdCcgZWxzZSAnc2VudF90b19idWlsZGJvdCcKLSAgICAgICAgcHJl
dmlvdXNseV9zZW50X3BhdGNoZXMgPSBzZXQoUGF0Y2gub2JqZWN0cwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihjcmVhdGVkX19ndGU9ZnJvbV90aW1l
c3RhbXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVy
KCoqe3NlbnQ6IFRydWV9KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLmZpbHRlcihvYnNvbGV0ZT1GYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC5maWx0ZXIoY3JlYXRlZF9fbHQ9cGF0Y2guY3JlYXRlZCkpCi0gICAgICAg
IGlmIHBhcmVudF9xdWV1ZToKLSAgICAgICAgICAgIHJlY2VudF9idWlsZHNfcGFyZW50X3F1ZXVl
ID0gQnVpbGQub2JqZWN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuZmlsdGVyKGNyZWF0ZWRfX2d0ZT1mcm9tX3RpbWVzdGFtcCkgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihidWlsZGVyX2Rpc3Bs
YXlfbmFtZT1wYXJlbnRfcXVldWUpCi0gICAgICAgICAgICBwcm9jZXNzZWRfcGF0Y2hlc19wYXJl
bnRfcXVldWUgPSBzZXQoW2J1aWxkLnBhdGNoIGZvciBidWlsZCBpbiByZWNlbnRfYnVpbGRzX3Bh
cmVudF9xdWV1ZV0pCi0gICAgICAgICAgICByZXR1cm4gbGVuKHByZXZpb3VzbHlfc2VudF9wYXRj
aGVzIC0gcHJvY2Vzc2VkX3BhdGNoZXNfcGFyZW50X3F1ZXVlKSArIDEKLQotICAgICAgICByZWNl
bnRfYnVpbGRzID0gQnVpbGQub2JqZWN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
LmZpbHRlcihjcmVhdGVkX19ndGU9ZnJvbV90aW1lc3RhbXApIFwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAuZmlsdGVyKGJ1aWxkZXJfZGlzcGxheV9uYW1lPXF1ZXVlKQotICAgICAgICBw
cm9jZXNzZWRfcGF0Y2hlcyA9IHNldChbYnVpbGQucGF0Y2ggZm9yIGJ1aWxkIGluIHJlY2VudF9i
dWlsZHNdKQotICAgICAgICBfbG9nLmRlYnVnKCdQYXRjaDoge30sIHF1ZXVlOiB7fSwgcHJldmlv
dXMgcGF0Y2hlczoge30nLmZvcm1hdChwYXRjaC5wYXRjaF9pZCwgcXVldWUsIHByZXZpb3VzbHlf
c2VudF9wYXRjaGVzIC0gcHJvY2Vzc2VkX3BhdGNoZXMpKQotICAgICAgICByZXR1cm4gbGVuKHBy
ZXZpb3VzbHlfc2VudF9wYXRjaGVzIC0gcHJvY2Vzc2VkX3BhdGNoZXMpICsgMQotCi0gICAgZGVm
IF9idWlsZF9idWJibGVzX2Zvcl9wYXRjaChzZWxmLCBwYXRjaCwgaGlkZV9pY29ucz1GYWxzZSk6
Ci0gICAgICAgIHNob3dfc3VibWl0X3RvX2V3cyA9IFRydWUKLSAgICAgICAgZmFpbGVkX3RvX2Fw
cGx5ID0gRmFsc2UgICMgVE9ETzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDU5OAotICAgICAgICBzaG93X3JldHJ5ID0gRmFsc2UKLSAgICAgICAgYnViYmxlcyA9
IFtdCi0KLSAgICAgICAgaWYgbm90IHBhdGNoOgotICAgICAgICAgICAgcmV0dXJuIChOb25lLCBz
aG93X3N1Ym1pdF90b19ld3MsIGZhaWxlZF90b19hcHBseSwgc2hvd19yZXRyeSkKLQotICAgICAg
ICBpZiBwYXRjaC5zZW50X3RvX2J1aWxkYm90OgotICAgICAgICAgICAgZm9yIHF1ZXVlIGluIFN0
YXR1c0J1YmJsZS5BTExfUVVFVUVTOgotICAgICAgICAgICAgICAgIGJ1YmJsZSA9IHNlbGYuX2J1
aWxkX2J1YmJsZShwYXRjaCwgcXVldWUsIGhpZGVfaWNvbnMpCi0gICAgICAgICAgICAgICAgaWYg
YnViYmxlOgotICAgICAgICAgICAgICAgICAgICBzaG93X3N1Ym1pdF90b19ld3MgPSBGYWxzZQot
ICAgICAgICAgICAgICAgICAgICBidWJibGVzLmFwcGVuZChidWJibGUpCi0gICAgICAgICAgICAg
ICAgICAgIGlmIGJ1YmJsZVsnc3RhdGUnXSBpbiAoJ2ZhaWwnLCAnZXJyb3InKToKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3dfcmV0cnkgPSBUcnVlCi0KLSAgICAgICAgaWYgcGF0Y2guc2Vu
dF90b19jb21taXRfcXVldWU6Ci0gICAgICAgICAgICBpZiBub3QgcGF0Y2guc2VudF90b19idWls
ZGJvdDoKLSAgICAgICAgICAgICAgICBoaWRlX2ljb25zID0gVHJ1ZQotICAgICAgICAgICAgY3Ff
YnViYmxlID0gc2VsZi5fYnVpbGRfYnViYmxlKHBhdGNoLCAnY29tbWl0JywgaGlkZV9pY29ucykK
LSAgICAgICAgICAgIGlmIGNxX2J1YmJsZToKLSAgICAgICAgICAgICAgICBidWJibGVzLmluc2Vy
dCgwLCBjcV9idWJibGUpCi0KLSAgICAgICAgcmV0dXJuIChidWJibGVzLCBzaG93X3N1Ym1pdF90
b19ld3MsIGZhaWxlZF90b19hcHBseSwgc2hvd19yZXRyeSkKLQotICAgIEB4ZnJhbWVfb3B0aW9u
c19leGVtcHQKLSAgICBkZWYgZ2V0KHNlbGYsIHJlcXVlc3QsIHBhdGNoX2lkKToKLSAgICAgICAg
aGlkZV9pY29ucyA9IHJlcXVlc3QuR0VULmdldCgnaGlkZV9pY29ucycsIEZhbHNlKQotICAgICAg
ICBwYXRjaF9pZCA9IGludChwYXRjaF9pZCkKLSAgICAgICAgcGF0Y2ggPSBQYXRjaC5nZXRfcGF0
Y2gocGF0Y2hfaWQpCi0gICAgICAgIGJ1YmJsZXMsIHNob3dfc3VibWl0X3RvX2V3cywgc2hvd19m
YWlsdXJlX3RvX2FwcGx5LCBzaG93X3JldHJ5ID0gc2VsZi5fYnVpbGRfYnViYmxlc19mb3JfcGF0
Y2gocGF0Y2gsIGhpZGVfaWNvbnMpCi0KLSAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewotICAg
ICAgICAgICAgJ2J1YmJsZXMnOiBidWJibGVzLAotICAgICAgICAgICAgJ3BhdGNoX2lkJzogcGF0
Y2hfaWQsCi0gICAgICAgICAgICAnc2hvd19zdWJtaXRfdG9fZXdzJzogc2hvd19zdWJtaXRfdG9f
ZXdzLAotICAgICAgICAgICAgJ3Nob3dfZmFpbHVyZV90b19hcHBseSc6IHNob3dfZmFpbHVyZV90
b19hcHBseSwKLSAgICAgICAgICAgICdzaG93X3JldHJ5X2J1dHRvbic6IHNob3dfcmV0cnksCi0g
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAnc3RhdHVzYnViYmxlLmh0
bWwnLCB0ZW1wbGF0ZV92YWx1ZXMpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YXBwL2V3cy92aWV3cy9zdWJtaXR0b2V3cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9zdWJtaXR0b2V3cy5weQkocmV2aXNpb24gMjY4
NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mvc3VibWl0
dG9ld3MucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmlj
b2RlX2xpdGVyYWxzCi0KLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5n
by5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQg
cmVkaXJlY3QsIHJlbmRlcgotZnJvbSBkamFuZ28udmlld3MgaW1wb3J0IFZpZXcKLWZyb20gZGph
bmdvLnZpZXdzLmRlY29yYXRvcnMuY2xpY2tqYWNraW5nIGltcG9ydCB4ZnJhbWVfb3B0aW9uc19l
eGVtcHQKLQotZnJvbSBld3MuY29uZmlnIGltcG9ydCBFUlJfQlVHX0NMT1NFRCwgRVJSX09CU09M
RVRFX1BBVENILCBFUlJfVU5BQkxFX1RPX0ZFVENIX1BBVENICi1mcm9tIGV3cy5mZXRjaGVyIGlt
cG9ydCBCdWd6aWxsYVBhdGNoRmV0Y2hlcgotZnJvbSBld3MubW9kZWxzLnBhdGNoIGltcG9ydCBQ
YXRjaAotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgU3Vi
bWl0VG9FV1MoVmlldyk6Ci0gICAgZGVmIGdldChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgcmV0
dXJuIHJlbmRlcihyZXF1ZXN0LCAnc3VibWl0dG9ld3MuaHRtbCcsIHt9KQotCi0gICAgQHhmcmFt
ZV9vcHRpb25zX2V4ZW1wdAotICAgIGRlZiBwb3N0KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBwYXRjaF9pZCA9IHJlcXVlc3QuUE9TVC5nZXQoJ3BhdGNoX2lkJykK
LSAgICAgICAgICAgIHBhdGNoX2lkID0gaW50KHBhdGNoX2lkKQotICAgICAgICBleGNlcHQ6Ci0g
ICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJJbnZhbGlkIHBhdGNoIGlkIHt9Ii5mb3Jt
YXQocmVxdWVzdC5QT1NULmdldCgncGF0Y2hfaWQnKSkpCi0KLSAgICAgICAgX2xvZy5pbmZvKCdT
dWJtaXRUb0VXUzo6cGF0Y2g6IHt9Jy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICBpZiBQYXRj
aC5pc19wYXRjaF9zZW50X3RvX2J1aWxkYm90KHBhdGNoX2lkKToKLSAgICAgICAgICAgIF9sb2cu
aW5mbygnU3VibWl0VG9FV1M6OnBhdGNoIHt9IGFscmVhZHkgc3VibWl0dGVkJy5mb3JtYXQocGF0
Y2hfaWQpKQotICAgICAgICAgICAgaWYgcmVxdWVzdC5QT1NULmdldCgnbmV4dF9hY3Rpb24nKSA9
PSAncmV0dXJuX3RvX2J1YmJsZXMnOgotICAgICAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgn
L3N0YXR1cy1idWJibGUve30nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4g
SHR0cFJlc3BvbnNlKCJQYXRjaCB7fSBhbHJlYWR5IHN1Ym1pdHRlZC4gUGxlYXNlIHdhaXQgZm9y
IHN0YXR1cy1idWJibGVzLiIuZm9ybWF0KHBhdGNoX2lkKSkKLQotICAgICAgICByYyA9IEJ1Z3pp
bGxhUGF0Y2hGZXRjaGVyKCkuZmV0Y2goW3BhdGNoX2lkXSkKLSAgICAgICAgaWYgcmMgPT0gRVJS
X1VOQUJMRV9UT19GRVRDSF9QQVRDSDoKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2Uo
J0VXUyBpcyB1bmFibGUgdG8gYWNjZXNzIHBhdGNoIHt9LiBQbGVhc2UgZW5zdXJlIHRoYXQgdGhp
cyBwYXRjaCBpcyBwdWJsaWNseSBhY2Nlc3NpYmxlIG9yIGhhcyByPyBzZXQuJy5mb3JtYXQocGF0
Y2hfaWQpKQotICAgICAgICBpZiByYyA9PSBFUlJfT0JTT0xFVEVfUEFUQ0g6Ci0gICAgICAgICAg
ICByZXR1cm4gSHR0cFJlc3BvbnNlKCdQYXRjaCB7fSBpcyBvYnNvbGV0ZSwgbm90IHN1Ym1pdHRp
bmcgdG8gRVdTLicuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgaWYgcmMgPT0gRVJSX0JVR19D
TE9TRUQ6Ci0gICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCdCdWcgZm9yIHBhdGNoIHt9
IGlzIGNsb3NlZCwgbm90IHN1Ym1pdHRpbmcgdG8gRVdTLicuZm9ybWF0KHBhdGNoX2lkKSkKLQot
ICAgICAgICBpZiByZXF1ZXN0LlBPU1QuZ2V0KCduZXh0X2FjdGlvbicpID09ICdyZXR1cm5fdG9f
YnViYmxlcyc6Ci0gICAgICAgICAgICByZXR1cm4gcmVkaXJlY3QoJy9zdGF0dXMtYnViYmxlL3t9
Jy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJTdWJtaXR0
ZWQgcGF0Y2gge30gdG8gRVdTLiIuZm9ybWF0KHBhdGNoX2lkKSkKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy1hcHAvc2V0dGluZ3MucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MtYXBwL3NldHRp
bmdzLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YXBwL2V3cy1hcHAvc2V0dGluZ3MucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcgKzAsMCBAQAot
IyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAot
IyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIiIiCi1EamFuZ28gc2V0dGlu
Z3MuCi0KLUdlbmVyYXRlZCBieSAnZGphbmdvLWFkbWluIHN0YXJ0cHJvamVjdCcgdXNpbmcgRGph
bmdvIDEuMTEuMTYuCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZmlsZSwgc2VlCi1o
dHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS90b3BpY3Mvc2V0dGluZ3MvCi0K
LUZvciB0aGUgZnVsbCBsaXN0IG9mIHNldHRpbmdzIGFuZCB0aGVpciB2YWx1ZXMsIHNlZQotaHR0
cHM6Ly9kb2NzLmRqYW5nb3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLwotIiIiCi0K
LWltcG9ydCBvcwotCi1pc190ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVudignRVdTX1BST0RV
Q1RJT04nKSBpcyBOb25lCi0KLSMgQnVpbGQgcGF0aHMgaW5zaWRlIHRoZSBwcm9qZWN0IGxpa2Ug
dGhpczogb3MucGF0aC5qb2luKEJBU0VfRElSLCAuLi4pCi1CQVNFX0RJUiA9IG9zLnBhdGguZGly
bmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpCi0KLQotIyBR
dWljay1zdGFydCBkZXZlbG9wbWVudCBzZXR0aW5ncyAtIHVuc3VpdGFibGUgZm9yIHByb2R1Y3Rp
b24KLSMgU2VlIGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL2hvd3RvL2Rl
cGxveW1lbnQvY2hlY2tsaXN0LwotCi0jIFNFQ1VSSVRZIFdBUk5JTkc6IGtlZXAgdGhlIHNlY3Jl
dCBrZXkgdXNlZCBpbiBwcm9kdWN0aW9uIHNlY3JldCEKLVNFQ1JFVF9LRVkgPSBvcy5lbnZpcm9u
LmdldCgnRVdTX1NFQ1JFVF9LRVknLCAnc2VjcmV0JykKLQotREVCVUcgPSBGYWxzZQotaWYgaXNf
dGVzdF9tb2RlX2VuYWJsZWQ6Ci0gICAgIyBTRUNVUklUWSBXQVJOSU5HOiBkb24ndCBydW4gd2l0
aCBkZWJ1ZyB0dXJuZWQgb24gaW4gcHJvZHVjdGlvbiEKLSAgICBERUJVRyA9IFRydWUKLQotQUxM
T1dFRF9IT1NUUyA9IFsnKiddCi0KLQotIyBBcHBsaWNhdGlvbiBkZWZpbml0aW9uCi0KLUlOU1RB
TExFRF9BUFBTID0gWwotICAgICdkamFuZ28uY29udHJpYi5hZG1pbicsCi0gICAgJ2RqYW5nby5j
b250cmliLmF1dGgnLAotICAgICdkamFuZ28uY29udHJpYi5jb250ZW50dHlwZXMnLAotICAgICdk
amFuZ28uY29udHJpYi5zZXNzaW9ucycsCi0gICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzJywK
LSAgICAnZGphbmdvLmNvbnRyaWIuc3RhdGljZmlsZXMnLAotICAgICdld3MnLAotXQotCi1NSURE
TEVXQVJFID0gWwotICAgICdkamFuZ28ubWlkZGxld2FyZS5zZWN1cml0eS5TZWN1cml0eU1pZGRs
ZXdhcmUnLAotICAgICdkamFuZ28uY29udHJpYi5zZXNzaW9ucy5taWRkbGV3YXJlLlNlc3Npb25N
aWRkbGV3YXJlJywKLSAgICAnZGphbmdvLm1pZGRsZXdhcmUuY29tbW9uLkNvbW1vbk1pZGRsZXdh
cmUnLAotICAgICdkamFuZ28ubWlkZGxld2FyZS5jc3JmLkNzcmZWaWV3TWlkZGxld2FyZScsCi0g
ICAgJ2RqYW5nby5jb250cmliLmF1dGgubWlkZGxld2FyZS5BdXRoZW50aWNhdGlvbk1pZGRsZXdh
cmUnLAotICAgICdkamFuZ28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJlLk1lc3NhZ2VNaWRk
bGV3YXJlJywKLSAgICAnZGphbmdvLm1pZGRsZXdhcmUuY2xpY2tqYWNraW5nLlhGcmFtZU9wdGlv
bnNNaWRkbGV3YXJlJywKLV0KLQotUk9PVF9VUkxDT05GID0gJ2V3cy1hcHAudXJscycKLQotVEVN
UExBVEVTID0gWwotICAgIHsKLSAgICAgICAgJ0JBQ0tFTkQnOiAnZGphbmdvLnRlbXBsYXRlLmJh
Y2tlbmRzLmRqYW5nby5EamFuZ29UZW1wbGF0ZXMnLAotICAgICAgICAnRElSUyc6IFtdLAotICAg
ICAgICAnQVBQX0RJUlMnOiBUcnVlLAotICAgICAgICAnT1BUSU9OUyc6IHsKLSAgICAgICAgICAg
ICdjb250ZXh0X3Byb2Nlc3NvcnMnOiBbCi0gICAgICAgICAgICAgICAgJ2RqYW5nby50ZW1wbGF0
ZS5jb250ZXh0X3Byb2Nlc3NvcnMuZGVidWcnLAotICAgICAgICAgICAgICAgICdkamFuZ28udGVt
cGxhdGUuY29udGV4dF9wcm9jZXNzb3JzLnJlcXVlc3QnLAotICAgICAgICAgICAgICAgICdkamFu
Z28uY29udHJpYi5hdXRoLmNvbnRleHRfcHJvY2Vzc29ycy5hdXRoJywKLSAgICAgICAgICAgICAg
ICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMuY29udGV4dF9wcm9jZXNzb3JzLm1lc3NhZ2VzJywK
LSAgICAgICAgICAgIF0sCi0gICAgICAgIH0sCi0gICAgfSwKLV0KLQotV1NHSV9BUFBMSUNBVElP
TiA9ICdld3MtYXBwLndzZ2kuYXBwbGljYXRpb24nCi0KLQotIyBEYXRhYmFzZQotIyBodHRwczov
L2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS9yZWYvc2V0dGluZ3MvI2RhdGFiYXNlcwot
Ci1pZiBpc190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICBEQVRBQkFTRVMgPSB7Ci0gICAgICAgICdk
ZWZhdWx0JzogewotICAgICAgICAgICAgJ0VOR0lORSc6ICdkamFuZ28uZGIuYmFja2VuZHMuc3Fs
aXRlMycsCi0gICAgICAgICAgICAnTkFNRSc6IG9zLnBhdGguam9pbihCQVNFX0RJUiwgJ2RiLnNx
bGl0ZTMnKSwKLSAgICAgICAgfQotICAgIH0KLWVsc2U6Ci0gICAgREFUQUJBU0VTID0gewotICAg
ICAgICAnZGVmYXVsdCc6IHsKLSAgICAgICAgICAgICdFTkdJTkUnOiAnZGphbmdvLmRiLmJhY2tl
bmRzLnBvc3RncmVzcWxfcHN5Y29wZzInLAotICAgICAgICAgICAgJ05BTUUnOiBvcy5lbnZpcm9u
LmdldCgnREJfTkFNRScsIE5vbmUpLAotICAgICAgICAgICAgJ1VTRVInOiBvcy5lbnZpcm9uLmdl
dCgnREJfVVNFUk5BTUUnLCBOb25lKSwKLSAgICAgICAgICAgICdQQVNTV09SRCc6IG9zLmVudmly
b24uZ2V0KCdEQl9QQVNTV09SRCcsIE5vbmUpLAotICAgICAgICAgICAgJ0hPU1QnOiBvcy5lbnZp
cm9uLmdldCgnREJfVVJMJywgTm9uZSksCi0gICAgICAgIH0KLSAgICB9Ci0KLQotIyBQYXNzd29y
ZCB2YWxpZGF0aW9uCi0jIGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL3Jl
Zi9zZXR0aW5ncy8jYXV0aC1wYXNzd29yZC12YWxpZGF0b3JzCi0KLUFVVEhfUEFTU1dPUkRfVkFM
SURBVE9SUyA9IFsKLSAgICB7Ci0gICAgICAgICdOQU1FJzogJ2RqYW5nby5jb250cmliLmF1dGgu
cGFzc3dvcmRfdmFsaWRhdGlvbi5Vc2VyQXR0cmlidXRlU2ltaWxhcml0eVZhbGlkYXRvcicsCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgICdOQU1FJzogJ2RqYW5nby5jb250cmliLmF1dGgucGFzc3dv
cmRfdmFsaWRhdGlvbi5NaW5pbXVtTGVuZ3RoVmFsaWRhdG9yJywKLSAgICB9LAotICAgIHsKLSAg
ICAgICAgJ05BTUUnOiAnZGphbmdvLmNvbnRyaWIuYXV0aC5wYXNzd29yZF92YWxpZGF0aW9uLkNv
bW1vblBhc3N3b3JkVmFsaWRhdG9yJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ05BTUUnOiAn
ZGphbmdvLmNvbnRyaWIuYXV0aC5wYXNzd29yZF92YWxpZGF0aW9uLk51bWVyaWNQYXNzd29yZFZh
bGlkYXRvcicsCi0gICAgfSwKLV0KLQotCi0jIEludGVybmF0aW9uYWxpemF0aW9uCi0jIGh0dHBz
Oi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL3RvcGljcy9pMThuLwotCi1MQU5HVUFH
RV9DT0RFID0gJ2VuLXVzJwotCi1USU1FX1pPTkUgPSAnVVRDJwotCi1VU0VfSTE4TiA9IFRydWUK
LQotVVNFX0wxME4gPSBUcnVlCi0KLVVTRV9UWiA9IFRydWUKLQotCi0jIFN0YXRpYyBmaWxlcyAo
Q1NTLCBKYXZhU2NyaXB0LCBJbWFnZXMpCi0jIGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNv
bS9lbi8xLjExL2hvd3RvL3N0YXRpYy1maWxlcy8KLQotU1RBVElDX1VSTCA9ICcvc3RhdGljLycK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC91cmxzLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC91cmxz
LnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy1hcHAvdXJscy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiVVJMIENvbmZpZ3VyYXRpb24KLQot
VGhlIGB1cmxwYXR0ZXJuc2AgbGlzdCByb3V0ZXMgVVJMcyB0byB2aWV3cy4gRm9yIG1vcmUgaW5m
b3JtYXRpb24gcGxlYXNlIHNlZToKLSAgICBodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20v
ZW4vMS4xMS90b3BpY3MvaHR0cC91cmxzLwotRXhhbXBsZXM6Ci1GdW5jdGlvbiB2aWV3cwotICAg
IDEuIEFkZCBhbiBpbXBvcnQ6ICBmcm9tIG15X2FwcCBpbXBvcnQgdmlld3MKLSAgICAyLiBBZGQg
YSBVUkwgdG8gdXJscGF0dGVybnM6ICB1cmwocideJCcsIHZpZXdzLmhvbWUsIG5hbWU9J2hvbWUn
KQotQ2xhc3MtYmFzZWQgdmlld3MKLSAgICAxLiBBZGQgYW4gaW1wb3J0OiAgZnJvbSBvdGhlcl9h
cHAudmlld3MgaW1wb3J0IEhvbWUKLSAgICAyLiBBZGQgYSBVUkwgdG8gdXJscGF0dGVybnM6ICB1
cmwocideJCcsIEhvbWUuYXNfdmlldygpLCBuYW1lPSdob21lJykKLUluY2x1ZGluZyBhbm90aGVy
IFVSTGNvbmYKLSAgICAxLiBJbXBvcnQgdGhlIGluY2x1ZGUoKSBmdW5jdGlvbjogZnJvbSBkamFu
Z28uY29uZi51cmxzIGltcG9ydCB1cmwsIGluY2x1ZGUKLSAgICAyLiBBZGQgYSBVUkwgdG8gdXJs
cGF0dGVybnM6ICB1cmwocideYmxvZy8nLCBpbmNsdWRlKCdibG9nLnVybHMnKSkKLSIiIgotZnJv
bSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKLWZyb20gZGphbmdvLmNvbnRy
aWIgaW1wb3J0IGFkbWluCi0KLXVybHBhdHRlcm5zID0gWwotICAgIHVybChyJ15hZG1pbi8nLCBh
ZG1pbi5zaXRlLnVybHMpLAotICAgIHVybChyJ14nLCBpbmNsdWRlKCdld3MudXJscycpKSwKLV0K
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC93c2dpLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC93c2dp
LnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy1hcHAvd3NnaS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM4ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiCi1XU0dJIGNvbmZpZy4KLQotSXQg
ZXhwb3NlcyB0aGUgV1NHSSBjYWxsYWJsZSBhcyBhIG1vZHVsZS1sZXZlbCB2YXJpYWJsZSBuYW1l
ZCBgYGFwcGxpY2F0aW9uYGAuCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZmlsZSwg
c2VlCi1odHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS9ob3d0by9kZXBsb3lt
ZW50L3dzZ2kvCi0iIiIKLQotaW1wb3J0IG9zCi0KLWZyb20gZGphbmdvLmNvcmUud3NnaSBpbXBv
cnQgZ2V0X3dzZ2lfYXBwbGljYXRpb24KLQotb3MuZW52aXJvbi5zZXRkZWZhdWx0KCJESkFOR09f
U0VUVElOR1NfTU9EVUxFIiwgImV3cy1hcHAuc2V0dGluZ3MiKQotCi1hcHBsaWNhdGlvbiA9IGdl
dF93c2dpX2FwcGxpY2F0aW9uKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1h
cHAvbWFuYWdlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1h
cHAvbWFuYWdlLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYXBwL21hbmFnZS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK
LSAgICBvcy5lbnZpcm9uLnNldGRlZmF1bHQoIkRKQU5HT19TRVRUSU5HU19NT0RVTEUiLCAiZXdz
LWFwcC5zZXR0aW5ncyIpCi0gICAgdHJ5OgotICAgICAgICBmcm9tIGRqYW5nby5jb3JlLm1hbmFn
ZW1lbnQgaW1wb3J0IGV4ZWN1dGVfZnJvbV9jb21tYW5kX2xpbmUKLSAgICBleGNlcHQgSW1wb3J0
RXJyb3I6Ci0gICAgICAgICMgVGhlIGFib3ZlIGltcG9ydCBtYXkgZmFpbCBmb3Igc29tZSBvdGhl
ciByZWFzb24uIEVuc3VyZSB0aGF0IHRoZQotICAgICAgICAjIGlzc3VlIGlzIHJlYWxseSB0aGF0
IERqYW5nbyBpcyBtaXNzaW5nIHRvIGF2b2lkIG1hc2tpbmcgb3RoZXIKLSAgICAgICAgIyBleGNl
cHRpb25zIG9uIFB5dGhvbiAyLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZGph
bmdvCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9y
dEVycm9yKAotICAgICAgICAgICAgICAgICJDb3VsZG4ndCBpbXBvcnQgRGphbmdvLiBBcmUgeW91
IHN1cmUgaXQncyBpbnN0YWxsZWQgYW5kICIKLSAgICAgICAgICAgICAgICAiYXZhaWxhYmxlIG9u
IHlvdXIgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZT8gRGlkIHlvdSAiCi0gICAgICAg
ICAgICAgICAgImZvcmdldCB0byBhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IikKLSAg
ICAgICAgcmFpc2UKLSAgICBleGVjdXRlX2Zyb21fY29tbWFuZF9saW5lKHN5cy5hcmd2KQoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9tYW5hZ2Uu
cHkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9idWlsZGJvdC50YWMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWJ1aWxkL2J1aWxkYm90LnRhYwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2J1aWxkYm90LnRhYwkobm9uZXhpc3RlbnQp
CkBAIC0xLDMxICswLDAgQEAKLWltcG9ydCBvcwotCi1mcm9tIHR3aXN0ZWQuYXBwbGljYXRpb24g
aW1wb3J0IHNlcnZpY2UKLWZyb20gYnVpbGRib3QubWFzdGVyIGltcG9ydCBCdWlsZE1hc3Rlcgot
Ci1iYXNlZGlyID0gJy4nCi0KLXJvdGF0ZUxlbmd0aCA9IDUwMDAwMDAwCi1tYXhSb3RhdGVkRmls
ZXMgPSAxNQotY29uZmlnZmlsZSA9ICdtYXN0ZXIuY2ZnJwotCi0jIERlZmF1bHQgdW1hc2sgZm9y
IHNlcnZlcgotdW1hc2sgPSAwbzAyMgotCi0jIGlmIHRoaXMgaXMgYSByZWxvY2F0YWJsZSB0YWMg
ZmlsZSwgZ2V0IHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgVEFDCi1pZiBiYXNlZGlyID09
ICcuJzoKLSAgICBiYXNlZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2Zp
bGVfXykpCi0KLSMgbm90ZTogdGhpcyBsaW5lIGlzIG1hdGNoZWQgYWdhaW5zdCB0byBjaGVjayB0
aGF0IHRoaXMgaXMgYSBidWlsZG1hc3RlcgotIyBkaXJlY3Rvcnk7IGRvIG5vdCBlZGl0IGl0Lgot
YXBwbGljYXRpb24gPSBzZXJ2aWNlLkFwcGxpY2F0aW9uKCdidWlsZG1hc3RlcicpCi1mcm9tIHR3
aXN0ZWQucHl0aG9uLmxvZ2ZpbGUgaW1wb3J0IExvZ0ZpbGUKLWZyb20gdHdpc3RlZC5weXRob24u
bG9nIGltcG9ydCBJTG9nT2JzZXJ2ZXIsIEZpbGVMb2dPYnNlcnZlcgotbG9nZmlsZSA9IExvZ0Zp
bGUuZnJvbUZ1bGxQYXRoKG9zLnBhdGguam9pbihiYXNlZGlyLCAidHdpc3RkLmxvZyIpLCByb3Rh
dGVMZW5ndGg9cm90YXRlTGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXhSb3RhdGVkRmlsZXM9bWF4Um90YXRlZEZpbGVzKQotYXBwbGljYXRpb24uc2V0Q29tcG9uZW50
KElMb2dPYnNlcnZlciwgRmlsZUxvZ09ic2VydmVyKGxvZ2ZpbGUpLmVtaXQpCi0KLW0gPSBCdWls
ZE1hc3RlcihiYXNlZGlyLCBjb25maWdmaWxlLCB1bWFzaykKLW0uc2V0U2VydmljZVBhcmVudChh
cHBsaWNhdGlvbikKLW0ubG9nX3JvdGF0aW9uLnJvdGF0ZUxlbmd0aCA9IHJvdGF0ZUxlbmd0aAot
bS5sb2dfcm90YXRpb24ubWF4Um90YXRlZEZpbGVzID0gbWF4Um90YXRlZEZpbGVzCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpzb24KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZpZy5qc29uCShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpz
b24JKG5vbmV4aXN0ZW50KQpAQCAtMSw3ODYgKzAsMCBAQAotewotICAid29ya2VycyI6IFsKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJ3ZWJraXQtbWlzYyIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIs
Ci0gICAgICAibWF4X2J1aWxkcyI6IDMKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImln
YWxpYS1qc2MzMi1hcm12Ny1ld3MiLAotICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiaWdhbGlhLWpzYzMyLWFybXY3LWV3cy0wMiIsCi0g
ICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJpZ2FsaWEtanNjMzItYXJtdjctZXdzLTAzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25s
eSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1taXBzZWwtZXdz
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogImlnYWxpYS1qc2MzMi1taXBzZWwtZXdzLTAyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJq
c2Mtb25seSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1taXBz
ZWwtZXdzLTAzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9LAotICAgIHsK
LSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1pMzg2LWV3cyIsCi0gICAgICAicGxhdGZvcm0i
OiAianNjLW9ubHkiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWExLWd0ay13
azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAi
bmFtZSI6ICJpZ2FsaWEyLWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWEzLWd0ay13azItZXdzIiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE0
LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAibmFtZSI6ICJpZ2FsaWE1LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJn
dGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE2LWd0ay13azItZXdzIiwK
LSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJp
Z2FsaWE3LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE4LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9y
bSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE5LWd0ay13azIt
ZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFt
ZSI6ICJhcGVyZXotZ3RrLWV3cyIsCi0gICAgICAicGxhdGZvcm0iOiAiZ3RrIgotICAgIH0sCi0g
ICAgewotICAgICAgIm5hbWUiOiAiaWdhbGlhLXdwZS1ld3MiLAotICAgICAgInBsYXRmb3JtIjog
IndwZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImFwZXJlei13cGUtZXdzIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJ3cGUiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJ3aW5j
YWlyby1ld3MtMDAxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogIndpbmNhaXJvLWV3cy0wMDIiLAotICAgICAgInBsYXRmb3JtIjog
IndpbmNhaXJvIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAid2luY2Fpcm8tZXdzLTAw
MyIsCi0gICAgICAicGxhdGZvcm0iOiAid2luY2Fpcm8iCi0gICAgfSwKLSAgICB7Ci0gICAgICAi
bmFtZSI6ICJ3aW5jYWlyby1ld3MtMDA0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIK
LSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwMCIsCi0gICAgICAicGxhdGZvcm0i
OiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwMSIsCi0g
ICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1l
IjogImV3czEwMiIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogImV3czEwMyIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2
ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwNCIsCi0gICAgICAicGxhdGZv
cm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwNSIs
Ci0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogImV3czEwNiIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwNyIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1v
amF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwOCIsCi0gICAgICAicGxh
dGZvcm0iOiAiaW9zLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTA5IiwK
LSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdz
MTEyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiZXdzMTEzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJt
YWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE1IiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAi
ZXdzMTE2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMTE3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE4IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE5IiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTIwIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAiZXdzMTIxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxh
dG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTIyIiwKLSAgICAgICJw
bGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTIzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mt
c2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI1IiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAiZXdzMTI2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0Igot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI3IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI4IiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTI5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIgotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAiZXdzMTUwIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTUxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwK
LSAgICAgICJtYXhfYnVpbGRzIjogMwotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdz
MTUyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTUzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAiZXdzMTU0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMTU1IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0g
ICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIq
IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU4IiwKLSAgICAgICJwbGF0Zm9y
bSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU5IiwKLSAgICAgICJw
bGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYwIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYx
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAi
ZXdzMTYyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiZXdzMTYzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiZXdzMTY0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAiZXdzMTY1IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY3IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY4IiwKLSAgICAgICJwbGF0
Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY5IiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAi
ZXdzMTcwIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiZXdzMjEwIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAibmFtZSI6ICJld3MyMTEiLAotICAgICAgInBsYXRmb3JtIjogIndpbiIKLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogImV3czIxMiIsCi0gICAgICAicGxhdGZvcm0iOiAid2luIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMjEzIiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJ3aW4iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJld3MyMTQiLAotICAgICAgInBs
YXRmb3JtIjogIndpbiIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czIxNSIsCi0g
ICAgICAicGxhdGZvcm0iOiAid2luIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAid2Vi
a2l0LWNxLTAxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAid2Via2l0LWNxLTAyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
bW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAid2Via2l0LWNxLTAzIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0KLSAgXSwKLSAgImJ1aWxkZXJzIjog
WwotICAgIHsKLSAgICAgICJuYW1lIjogIlN0eWxlLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjog
InN0eWxlIiwKLSAgICAgICJpY29uIjogInRlc3RPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogIlN0
eWxlRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0gICAgICAid29ya2VybmFtZXMi
OiBbImV3czE1MSIsICJ3ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJBcHBseS1XYXRjaExpc3QtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAid2F0Y2hsaXN0IiwK
LSAgICAgICJmYWN0b3J5IjogIldhdGNoTGlzdEZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjog
IioiLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJ3ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAgICB7
Ci0gICAgICAibmFtZSI6ICJHVEstQnVpbGQtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAiZ3Rr
IiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJHVEtCdWls
ZEZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImd0ayIsCi0gICAgICAiY29uZmlndXJhdGlv
biI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAg
ICJ0cmlnZ2VycyI6IFsiYXBpLXRlc3RzLWd0ay1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6
IFsiaWdhbGlhMS1ndGstd2syLWV3cyIsICJpZ2FsaWEyLWd0ay13azItZXdzIiwgImFwZXJlei1n
dGstZXdzIl0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIkdUSy1XSzItVGVzdHMtRVdT
IiwKLSAgICAgICJzaG9ydG5hbWUiOiAiZ3RrLXdrMiIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25s
eSIsCi0gICAgICAiZmFjdG9yeSI6ICJHVEtUZXN0c0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3Jt
IjogImd0ayIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhNS1n
dGstd2syLWV3cyIsICJpZ2FsaWE2LWd0ay13azItZXdzIiwgImlnYWxpYTctZ3RrLXdrMi1ld3Mi
LCAiaWdhbGlhOC1ndGstd2syLWV3cyIsICJpZ2FsaWE5LWd0ay13azItZXdzIl0KLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogImlPUy0xNC1CdWlsZC1FV1MiLAotICAgICAgInNob3J0bmFt
ZSI6ICJpb3MiLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0b3J5Ijog
ImlPU0VtYmVkZGVkQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3MtMTQiLAot
ICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6
IFsiYXJtNjQiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTUyIiwgImV3czE1NCIsICJl
d3MxMDgiLCAiZXdzMTA5Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlPUy0xNC1T
aW11bGF0b3ItQnVpbGQtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAiaW9zLXNpbSIsCi0gICAg
ICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiaU9TQnVpbGRGYWN0b3J5
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiwKLSAgICAgICJjb25maWd1
cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgInRyaWdnZXJzIjogWyJhcGktdGVzdHMtaW9zLXNpbS1ld3MiLCAiaW9zLTE0LXNpbS13
azItdGVzdHMtZXdzIl0sCi0gICAgICAid29ya2VybmFtZXMiOiBbImV3czE1MiIsICJld3MxNTQi
LCAiZXdzMTU2IiwgImV3czE1NyIsICJld3MxMDkiXQotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiaU9TLTE0LVNpbXVsYXRvci1XSzItVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUi
OiAiaW9zLXdrMiIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFjdG9yeSI6
ICJpT1NUZXN0c0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQi
LAotICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJl
cyI6IFsieDg2XzY0Il0sCi0gICAgICAidHJpZ2dlcmVkX2J5IjogWyJpb3MtMTQtc2ltLWJ1aWxk
LWV3cyJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxMjEiLCAiZXdzMTIyIiwgImV3czEy
MyIsICJld3MxMjQiLCAiZXdzMTI1IiwgImV3czEyNiJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAi
bmFtZSI6ICJtYWNPUy1BcHBsZS1TaWxpY29uLUJpZy1TdXItUmVsZWFzZS1CdWlsZC1FV1MiLAot
ICAgICAgInNob3J0bmFtZSI6ICJtYWMtQVMiLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwK
LSAgICAgICJmYWN0b3J5IjogIm1hY09TQnVpbGRPbmx5RmFjdG9yeSIsCi0gICAgICAicGxhdGZv
cm0iOiAibWFjLWJpZ3N1ciIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAg
ICAgICJhcmNoaXRlY3R1cmVzIjogWyJhcm02NCJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJl
d3MxMjkiLCAiZXdzMTY5Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIm1hY09TLU1v
amF2ZS1SZWxlYXNlLUJ1aWxkLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIm1hYyIsCi0gICAg
ICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAibWFjT1NCdWlsZEZhY3Rv
cnkiLAotICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLAotICAgICAgImNvbmZpZ3VyYXRp
b24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAg
ICAidHJpZ2dlcnMiOiBbImFwaS10ZXN0cy1tYWMtZXdzIiwgIm1hY29zLW1vamF2ZS1yZWxlYXNl
LXdrMS10ZXN0cy1ld3MiLCAibWFjb3MtbW9qYXZlLXJlbGVhc2Utd2syLXRlc3RzLWV3cyJdLAot
ICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxMTgiLCAiZXdzMTE5IiwgImV3czEyMCIsICJld3Mx
NTAiXQotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAibWFjT1MtTW9qYXZlLVJlbGVhc2Ut
V0sxLVRlc3RzLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIm1hYy13azEiLAotICAgICAgImlj
b24iOiAidGVzdE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAibWFjT1NXSzFGYWN0b3J5IiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJl
bGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgInRyaWdn
ZXJlZF9ieSI6IFsibWFjb3MtbW9qYXZlLXJlbGVhc2UtYnVpbGQtZXdzIl0sCi0gICAgICAid29y
a2VybmFtZXMiOiBbImV3czEwMCIsICJld3MxMDEiLCAiZXdzMTAyIiwgImV3czEwMyJdCi0gICAg
fSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJtYWNPUy1Nb2phdmUtUmVsZWFzZS1XSzItVGVzdHMt
RVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAibWFjLXdrMiIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0
T25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJtYWNPU1dLMkZhY3RvcnkiLAotICAgICAgInBsYXRm
b3JtIjogIm1hYy1tb2phdmUiLAotICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsCi0g
ICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAidHJpZ2dlcmVkX2J5Ijog
WyJtYWNvcy1tb2phdmUtcmVsZWFzZS1idWlsZC1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6
IFsiZXdzMTA0IiwgImV3czEwNSIsICJld3MxMDYiLCAiZXdzMTA3Il0KLSAgICB9LAotICAgIHsK
LSAgICAgICJuYW1lIjogIm1hY09TLU1vamF2ZS1EZWJ1Zy1CdWlsZC1FV1MiLAotICAgICAgInNo
b3J0bmFtZSI6ICJtYWMtZGVidWciLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAg
ICJmYWN0b3J5IjogIm1hY09TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
bW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwKLSAgICAgICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ0cmlnZ2VycyI6IFsibWFjb3MtbW9qYXZlLWRl
YnVnLXdrMS10ZXN0cy1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTEyIiwgImV3
czExMyIsICJld3MxMTUiLCAiZXdzMTE3IiwgImV3czE1MyJdCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAibmFtZSI6ICJtYWNPUy1Nb2phdmUtRGVidWctV0sxLVRlc3RzLUVXUyIsCi0gICAgICAic2hv
cnRuYW1lIjogIm1hYy1kZWJ1Zy13azEiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAg
ICAgImZhY3RvcnkiOiAibWFjT1NXSzFGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMt
bW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwKLSAgICAgICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ0cmlnZ2VyZWRfYnkiOiBbIm1hY29zLW1vamF2
ZS1kZWJ1Zy1idWlsZC1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTEyIiwgImV3
czExMyIsICJld3MxMTUiLCAiZXdzMTE3Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjog
IndhdGNoT1MtNy1CdWlsZC1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJ3YXRjaCIsCi0gICAg
ICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAid2F0Y2hPU0J1aWxkRmFj
dG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAid2F0Y2hvcy03IiwKLSAgICAgICJjb25maWd1cmF0
aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0XzMyIiwgImFy
bXY3ayJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxNjMiLCAiZXdzMTY0IiwgImV3czE2
NSJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJ3YXRjaE9TLTctU2ltdWxhdG9yLUJ1
aWxkLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIndhdGNoLXNpbSIsCi0gICAgICAiaWNvbiI6
ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAid2F0Y2hPU0J1aWxkRmFjdG9yeSIsCi0g
ICAgICAicGxhdGZvcm0iOiAid2F0Y2hvcy1zaW11bGF0b3ItNyIsCi0gICAgICAiY29uZmlndXJh
dGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2Il0sCi0gICAg
ICAid29ya2VybmFtZXMiOiBbImV3czE2NCIsICJld3MxNjUiLCAiZXdzMTY2Il0KLSAgICB9LAot
ICAgICB7Ci0gICAgICAibmFtZSI6ICJ0dk9TLTE0LUJ1aWxkLUVXUyIsCi0gICAgICAic2hvcnRu
YW1lIjogInR2IiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6
ICJ0dk9TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ0dm9zLTE0IiwKLSAgICAg
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFy
bTY0Il0sCi0gICAgICAid29ya2VybmFtZXMiOiBbImV3czE2NyIsICJld3MxNjgiXQotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAidHZPUy0xNC1TaW11bGF0b3ItQnVpbGQtRVdTIiwKLSAg
ICAgICJzaG9ydG5hbWUiOiAidHYtc2ltIiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0g
ICAgICAiZmFjdG9yeSI6ICJ0dk9TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ0
dm9zLXNpbXVsYXRvci0xNCIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAg
ICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsi
ZXdzMTY4IiwgImV3czE3MCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJXaW5kb3dz
LUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIndpbiIsCi0gICAgICAiaWNvbiI6ICJidWlsZEFu
ZFRlc3QiLAotICAgICAgImZhY3RvcnkiOiAiV2luZG93c0ZhY3RvcnkiLAotICAgICAgImNvbmZp
Z3VyYXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAicGxhdGZvcm0iOiAid2luIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMjEw
IiwgImV3czIxMSIsICJld3MyMTIiLCAiZXdzMjEzIiwgImV3czIxNCIsICJld3MyMTUiXQotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiV2luQ2Fpcm8tRVdTIiwKLSAgICAgICJzaG9ydG5h
bWUiOiAid2luY2Fpcm8iLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0
b3J5IjogIldpbkNhaXJvRmFjdG9yeSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJwbGF0Zm9ybSI6
ICJ3aW5jYWlybyIsCi0gICAgICAid29ya2VybmFtZXMiOiBbIndpbmNhaXJvLWV3cy0wMDEiLCAi
d2luY2Fpcm8tZXdzLTAwMiIsICJ3aW5jYWlyby1ld3MtMDAzIiwgIndpbmNhaXJvLWV3cy0wMDQi
XQotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiV1BFLUVXUyIsCi0gICAgICAic2hvcnRu
YW1lIjogIndwZSIsCi0gICAgICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3Rvcnki
OiAiV1BFRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAid3BlIiwKLSAgICAgICJjb25maWd1
cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgIndvcmtlcm5hbWVzIjogWyJpZ2FsaWEtd3BlLWV3cyIsICJhcGVyZXotd3BlLWV3cyJd
Ci0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJKU0MtVGVzdHMtRVdTIiwKLSAgICAgICJz
aG9ydG5hbWUiOiAianNjIiwKLSAgICAgICJpY29uIjogImJ1aWxkQW5kVGVzdCIsCi0gICAgICAi
ZmFjdG9yeSI6ICJKU0NCdWlsZEFuZFRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAi
bWFjLW1vamF2ZSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJy
dW5UZXN0cyI6ICJ0cnVlIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTI3IiwgImV3czEy
OCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJKU0MtTUlQU0VMLTMyYml0cy1CdWls
ZC1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJqc2MtbWlwcyIsCi0gICAgICAiaWNvbiI6ICJi
dWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiSlNDQnVpbGRGYWN0b3J5IiwKLSAgICAgICJw
bGF0Zm9ybSI6ICJqc2Mtb25seSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwK
LSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJtaXBzZWwiXSwKLSAgICAgICJ0cmlnZ2VycyI6IFsi
anNjLXRlc3RzLW1pcHNlbC10ZXN0cy1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdh
bGlhLWpzYzMyLW1pcHNlbC1ld3MiLCAiaWdhbGlhLWpzYzMyLW1pcHNlbC1ld3MtMDMiXQotICAg
IH0sCi0JewotICAgICAgIm5hbWUiOiAiSlNDLU1JUFNFTC0zMmJpdHMtVGVzdHMtRVdTIiwKLSAg
ICAgICJzaG9ydG5hbWUiOiAianNjLW1pcHMtdGVzdHMiLAotICAgICAgImljb24iOiAidGVzdE9u
bHkiLAotICAgICAgImZhY3RvcnkiOiAiSlNDVGVzdHNGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9y
bSI6ICJqc2Mtb25seSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAg
ICJhcmNoaXRlY3R1cmVzIjogWyJtaXBzZWwiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdh
bGlhLWpzYzMyLW1pcHNlbC1ld3MiLCAiaWdhbGlhLWpzYzMyLW1pcHNlbC1ld3MtMDIiXSwKLSAg
ICAgICJyZW1vdGVzIjogIi4uLy4uL0VXUy10ZXN0LWRldmljZXMuanNvbiIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogIkpTQy1BUk12Ny0zMmJpdHMtQnVpbGQtRVdTIiwKLSAgICAgICJz
aG9ydG5hbWUiOiAianNjLWFybXY3IiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAg
ICAiZmFjdG9yeSI6ICJKU0NCdWlsZEZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImpzYy1v
bmx5IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVj
dHVyZXMiOiBbImFybXY3Il0sCi0gICAgICAidHJpZ2dlcnMiOiBbImpzYy10ZXN0cy1hcm12Ny10
ZXN0cy1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpzYzMyLWFybXY3LWV3
cyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJKU0MtQVJNdjctMzJiaXRzLVRlc3Rz
LUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogImpzYy1hcm12Ny10ZXN0cyIsCi0gICAgICAiaWNv
biI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJKU0NUZXN0c0ZhY3RvcnkiLAotICAg
ICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFybXY3Il0sCi0gICAgICAid29ya2VybmFt
ZXMiOiBbImlnYWxpYS1qc2MzMi1hcm12Ny1ld3MiXSwKLSAgICAgICJyZW1vdGVzIjogIi4uLy4u
L0VXUy10ZXN0LWRldmljZXMuanNvbiIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIkpT
Qy1pMzg2LTMyYml0cy1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJqc2MtaTM4NiIsCi0gICAg
ICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiSlNDQnVpbGRBbmRUZXN0
c0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwKLSAgICAgICJjb25maWd1
cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4NiJdLAotICAg
ICAgInJ1blRlc3RzIjogImZhbHNlIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpz
YzMyLWkzODYtZXdzIl0sCi0gICAgICAicmVtb3RlcyI6ICIuLi8uLi9FV1MtdGVzdC1kZXZpY2Vz
Lmpzb24iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJCaW5kaW5ncy1UZXN0cy1FV1Mi
LAotICAgICAgInNob3J0bmFtZSI6ICJiaW5kaW5ncyIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25s
eSIsCi0gICAgICAiZmFjdG9yeSI6ICJCaW5kaW5nc0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3Jt
IjogIioiLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxNTEiLCAid2Via2l0LW1pc2MiXQot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiV2ViS2l0UHktVGVzdHMtRVdTIiwKLSAgICAg
ICJzaG9ydG5hbWUiOiAid2Via2l0cHkiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAg
ICAgImZhY3RvcnkiOiAiV2ViS2l0UHlGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwK
LSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTUxIiwgIndlYmtpdC1taXNjIl0KLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogIldlYktpdFBlcmwtVGVzdHMtRVdTIiwKLSAgICAgICJzaG9y
dG5hbWUiOiAid2Via2l0cGVybCIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAi
ZmFjdG9yeSI6ICJXZWJLaXRQZXJsRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0g
ICAgICAid29ya2VybmFtZXMiOiBbImV3czE1MSIsICJ3ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJBUEktVGVzdHMtaU9TLVNpbXVsYXRvci1FV1MiLAotICAgICAg
InNob3J0bmFtZSI6ICJhcGktaW9zIiwKLSAgICAgICJpY29uIjogInRlc3RPbmx5IiwKLSAgICAg
ICJmYWN0b3J5IjogIkFQSVRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0g
ICAgICAidHJpZ2dlcmVkX2J5IjogWyJpb3MtMTQtc2ltLWJ1aWxkLWV3cyJdLAotICAgICAgIndv
cmtlcm5hbWVzIjogWyJld3MxNTYiLCAiZXdzMTU3IiwgImV3czE1OCIsICJld3MxNTkiXQotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiQVBJLVRlc3RzLW1hY09TLUVXUyIsCi0gICAgICAi
c2hvcnRuYW1lIjogImFwaS1tYWMiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAg
ImZhY3RvcnkiOiAiQVBJVGVzdHNGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwKLSAg
ICAgICJ0cmlnZ2VyZWRfYnkiOiBbIm1hY29zLW1vamF2ZS1yZWxlYXNlLWJ1aWxkLWV3cyJdLAot
ICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxMTkiLCAiZXdzMTUwIiwgImV3czE1MyIsICJld3Mx
NTUiXQotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiQVBJLVRlc3RzLUdUSy1FV1MiLAot
ICAgICAgInNob3J0bmFtZSI6ICJhcGktZ3RrIiwKLSAgICAgICJpY29uIjogInRlc3RPbmx5IiwK
LSAgICAgICJmYWN0b3J5IjogIkFQSVRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAi
Z3RrIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVj
dHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJpZ2FsaWEzLWd0ay13
azItZXdzIiwgImlnYWxpYTQtZ3RrLXdrMi1ld3MiXQotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiU2VydmljZXMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAic2VydmljZXMiLAotICAg
ICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiU2VydmljZXNGYWN0b3J5
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTUx
IiwgIndlYmtpdC1taXNjIl0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIkNvbW1pdC1R
dWV1ZSIsCi0gICAgICAic2hvcnRuYW1lIjogImNvbW1pdCIsCi0gICAgICAiaWNvbiI6ICJidWls
ZEFuZFRlc3QiLAotICAgICAgImZhY3RvcnkiOiAiQ29tbWl0UXVldWVGYWN0b3J5IiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgIndvcmtlcm5h
bWVzIjogWyJ3ZWJraXQtY3EtMDEiLCAid2Via2l0LWNxLTAyIiwgIndlYmtpdC1jcS0wMyJdCi0g
ICAgfQotICBdLAotICAic2NoZWR1bGVycyI6IFsKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlf
VXNlcnBhc3MiLAotICAgICAgIm5hbWUiOiAidHJ5IiwKLSAgICAgICJwb3J0IjogNTU1NSwKLSAg
ICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGx5LVdhdGNoTGlzdC1FV1MiLCAiQmluZGluZ3MtVGVz
dHMtRVdTIiwgIkdUSy1CdWlsZC1FV1MiLCAiaU9TLTE0LUJ1aWxkLUVXUyIsICJpT1MtMTQtU2lt
dWxhdG9yLUJ1aWxkLUVXUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICJKU0MtQVJNdjctMzJi
aXRzLUJ1aWxkLUVXUyIsICJKU0MtaTM4Ni0zMmJpdHMtRVdTIiwgIkpTQy1NSVBTRUwtMzJiaXRz
LUJ1aWxkLUVXUyIsICJKU0MtVGVzdHMtRVdTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIm1h
Y09TLUFwcGxlLVNpbGljb24tQmlnLVN1ci1SZWxlYXNlLUJ1aWxkLUVXUyIsICJtYWNPUy1Nb2ph
dmUtRGVidWctQnVpbGQtRVdTIiwgIm1hY09TLU1vamF2ZS1SZWxlYXNlLUJ1aWxkLUVXUyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICJTZXJ2aWNlcy1FV1MiLCAiU3R5bGUtRVdTIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgInR2T1MtMTQtQnVpbGQtRVdTIiwgInR2T1MtMTQtU2ltdWxhdG9y
LUJ1aWxkLUVXUyIsICJ3YXRjaE9TLTctQnVpbGQtRVdTIiwgIndhdGNoT1MtNy1TaW11bGF0b3It
QnVpbGQtRVdTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIldQRS1FV1MiLCAiV2ViS2l0UGVy
bC1UZXN0cy1FV1MiLCAiV2ViS2l0UHktVGVzdHMtRVdTIiwgIldpbkNhaXJvLUVXUyIsICJXaW5k
b3dzLUVXUyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlfVXNlcnBhc3MiLAot
ICAgICAgIm5hbWUiOiAidHJ5X2NvbW1pdHF1ZXVlIiwKLSAgICAgICJwb3J0IjogNTU1NywKLSAg
ICAgICJidWlsZGVyTmFtZXMiOiBbIkNvbW1pdC1RdWV1ZSJdCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsCi0gICAgICAibmFtZSI6ICJtYWNvcy1tb2phdmUtZGVi
dWctYnVpbGQtZXdzIiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNPUy1N
b2phdmUtRGVidWctQnVpbGQtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5
cGUiOiAiVHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZlLWRlYnVnLXdr
MS10ZXN0cy1ld3MiLAotICAgICAgImJ1aWxkZXJOYW1lcyI6IFsKLSAgICAgICAgIm1hY09TLU1v
amF2ZS1EZWJ1Zy1XSzEtVGVzdHMtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAg
InR5cGUiOiAiVHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZlLXJlbGVh
c2UtYnVpbGQtZXdzIiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNPUy1N
b2phdmUtUmVsZWFzZS1CdWlsZC1FV1MiCi0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAi
dHlwZSI6ICJUcmlnZ2VyYWJsZSIsCi0gICAgICAibmFtZSI6ICJtYWNvcy1tb2phdmUtcmVsZWFz
ZS13azEtdGVzdHMtZXdzIiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNP
Uy1Nb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewot
ICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZl
LXJlbGVhc2Utd2syLXRlc3RzLWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAg
ICAibWFjT1MtTW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzLUVXUyIKLSAgICAgIF0KLSAgICB9LAot
ICAgIHsKLSAgICAgICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwKLSAgICAgICJuYW1lIjogImlvcy0x
NC1zaW0tYnVpbGQtZXdzIiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJpT1Mt
MTQtU2ltdWxhdG9yLUJ1aWxkLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwKLSAgICAgICJuYW1lIjogImlvcy0xNC1zaW0td2syLXRlc3Rz
LWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAiaU9TLTE0LVNpbXVsYXRv
ci1XSzItVGVzdHMtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAi
VHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUiOiAiYXBpLXRlc3RzLWlvcy1zaW0tZXdzIiwKLSAg
ICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJBUEktVGVzdHMtaU9TLVNpbXVsYXRvci1F
V1MiCi0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIs
Ci0gICAgICAibmFtZSI6ICJhcGktdGVzdHMtbWFjLWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVz
IjogWwotICAgICAgICAiQVBJLVRlc3RzLW1hY09TLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAg
IHsKLSAgICAgICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwKLSAgICAgICJuYW1lIjogImFwaS10ZXN0
cy1ndGstZXdzIiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJBUEktVGVzdHMt
R1RLLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0eXBlIjogIlRyeV9Vc2Vy
cGFzcyIsCi0gICAgICAibmFtZSI6ICJndGstd2syLXRlc3RzLWV3cy1kaXNhYmxlZCIsCi0gICAg
ICAicG9ydCI6IDU1NTgsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAiR1RLLVdL
Mi1UZXN0cy1FV1MiCi0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmln
Z2VyYWJsZSIsCi0gICAgICAibmFtZSI6ICJqc2MtdGVzdHMtbWlwc2VsLXRlc3RzLWV3cyIsCi0g
ICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAiSlNDLU1JUFNFTC0zMmJpdHMtVGVzdHMt
RVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUi
LAotICAgICAgIm5hbWUiOiAianNjLXRlc3RzLWFybXY3LXRlc3RzLWV3cyIsCi0gICAgICAiYnVp
bGRlck5hbWVzIjogWwotICAgICAgICAiSlNDLUFSTXY3LTMyYml0cy1UZXN0cy1FV1MiCi0gICAg
ICBdCi0gICAgfQotICBdCi19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVp
bGQvZW1haWxfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWJ1aWxkL2VtYWlsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZW1haWxfdW5pdHRlc3QucHkJKG5vbmV4aXN0
ZW50KQpAQCAtMSw0NSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9z
Ci1pbXBvcnQgdW5pdHRlc3QKLQotCi1jbGFzcyBFbWFpbHNEb3RKU09OVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfdmFsaWRfZW1haWxzX2pzb24oc2VsZik6Ci0gICAgICAg
IGN3ZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAg
ICBqc29uLmxvYWQob3Blbihvcy5wYXRoLmpvaW4oY3dkLCAnZW1haWxzLmpzb24nKSkpCi0KLSAg
ICBkZWYgdGVzdF9lbWFpbHNfanNvbl9yZXF1aXJlZF9jYXRlZ29yaWVzX3ByZXNlbnQoc2VsZik6
Ci0gICAgICAgIGN3ZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18p
KQotICAgICAgICBlbWFpbHMgPSBqc29uLmxvYWQob3Blbihvcy5wYXRoLmpvaW4oY3dkLCAnZW1h
aWxzLmpzb24nKSkpCi0gICAgICAgIHZhbGlkX2VtYWlsX2NhdGVnb3JpZXMgPSBbJ0FETUlOX0VN
QUlMUycsICdBUFBMRV9CT1RfV0FUQ0hFUlNfRU1BSUxTJywgJ0VNQUlMX0lEU19UT19VTlNVQlND
UklCRScsICdJR0FMSUFfSlNDX1RFQU1fRU1BSUxTJywgJ0lHQUxJQV9HVEtfV1BFX0VNQUlMUydd
Ci0gICAgICAgIGZvciBjYXRlZ29yeSBpbiB2YWxpZF9lbWFpbF9jYXRlZ29yaWVzOgotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGNhdGVnb3J5IGluIGVtYWlscy5rZXlzKCkpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9lbWFpbHMuanNvbgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZW1haWxzLmpzb24JKHJldmlzaW9uIDI2
ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9lbWFpbHMuanNvbgko
bm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLXsKLSAgIkFETUlOX0VNQUlMUyI6IFsKLSAg
ICAgICJhYWthc2hfamFpbkBhcHBsZS5jb20iLCAKLSAgICAgICJ3ZWJraXQtZXdzLWJvdC13YXRj
aGVyc0Bncm91cC5hcHBsZS5jb20iCi0gIF0sCi0gICJBUFBMRV9CT1RfV0FUQ0hFUlNfRU1BSUxT
IjogWwotICAgICAgIndlYmtpdC1ld3MtYm90LXdhdGNoZXJzQGdyb3VwLmFwcGxlLmNvbSIKLSAg
XSwKLSAgIklHQUxJQV9KU0NfVEVBTV9FTUFJTFMiOiBbCi0gICAgICAianNjMzJAaWdhbGlhLmNv
bSIKLSAgXSwKLSAgIklHQUxJQV9HVEtfV1BFX0VNQUlMUyI6IFsKLSAgICAgICJ3ZWJraXQtYm90
LWFkbWluQGlnYWxpYS5jb20iCi0gIF0sCi0gICJFTUFJTF9JRFNfVE9fVU5TVUJTQ1JJQkUiOiBb
InBub3JtYW5kQGlnYWxpYS5jb20iXQotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWJ1aWxkL2V2ZW50cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYnVpbGQvZXZlbnRzLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZlbnRzLnB5CShub25leGlzdGVudCkKQEAgLTEsMjE2ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNh
bGVuZGFyCi1pbXBvcnQgZGF0ZXRpbWUKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCB0
aW1lCi0KLWZyb20gYnVpbGRib3QudXRpbCBpbXBvcnQgc2VydmljZQotZnJvbSB0d2lzdGVkLmlu
dGVybmV0IGltcG9ydCBkZWZlcgotZnJvbSB0d2lzdGVkLmludGVybmV0IGltcG9ydCByZWFjdG9y
Ci1mcm9tIHR3aXN0ZWQuaW50ZXJuZXQuZGVmZXIgaW1wb3J0IHN1Y2NlZWQKLWZyb20gdHdpc3Rl
ZC5weXRob24gaW1wb3J0IGxvZwotZnJvbSB0d2lzdGVkLndlYi5jbGllbnQgaW1wb3J0IEFnZW50
Ci1mcm9tIHR3aXN0ZWQud2ViLmh0dHBfaGVhZGVycyBpbXBvcnQgSGVhZGVycwotZnJvbSB0d2lz
dGVkLndlYi5pd2ViIGltcG9ydCBJQm9keVByb2R1Y2VyCi1mcm9tIHpvcGUuaW50ZXJmYWNlIGlt
cG9ydCBpbXBsZW1lbnRzCi0KLQotY2xhc3MgSlNPTlByb2R1Y2VyKG9iamVjdCk6Ci0gICAgIiIi
Ci0gICAgUGVyZm9ybSBKU09OIGFzeW5jaHJvbm91c2x5IGFzIHRvIG5vdCBsb2NrIHRoZSBidWls
ZGJvdCBtYWluIGV2ZW50IGxvb3AKLSAgICAiIiIKLSAgICBpbXBsZW1lbnRzKElCb2R5UHJvZHVj
ZXIpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuYm9keSA9IGpzb24uZHVtcHMoZGF0YSwgZGVmYXVsdD1zZWxmLmpzb25fc2Vy
aWFsaXplX2RhdGV0aW1lKQotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAg
c2VsZi5ib2R5ID0gJycKLSAgICAgICAgc2VsZi5sZW5ndGggPSBsZW4oc2VsZi5ib2R5KQotCi0g
ICAgZGVmIHN0YXJ0UHJvZHVjaW5nKHNlbGYsIGNvbnN1bWVyKToKLSAgICAgICAgaWYgc2VsZi5i
b2R5OgotICAgICAgICAgICAgY29uc3VtZXIud3JpdGUoc2VsZi5ib2R5KQotICAgICAgICByZXR1
cm4gc3VjY2VlZChOb25lKQotCi0gICAgZGVmIHBhdXNlUHJvZHVjaW5nKHNlbGYpOgotICAgICAg
ICBwYXNzCi0KLSAgICBkZWYgc3RvcFByb2R1Y2luZyhzZWxmKToKLSAgICAgICAgcGFzcwotCi0g
ICAgZGVmIGpzb25fc2VyaWFsaXplX2RhdGV0aW1lKHNlbGYsIG9iaik6Ci0gICAgICAgICIiIgot
ICAgICAgICBTZXJpYWxpemluZyBidWlsZGJvdCBkYXRlcyBpbnRvIFVOSVggZXBvY2ggdGltZXN0
YW1wcy4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBkYXRldGltZS5k
YXRldGltZSk6Ci0gICAgICAgICAgICByZXR1cm4gaW50KGNhbGVuZGFyLnRpbWVnbShvYmoudGlt
ZXR1cGxlKCkpKQotCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSAlcyBub3Qgc2VyaWFs
aXphYmxlIiAlIHR5cGUob2JqKSkKLQotCi1jbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNl
cnZpY2UpOgotCi0gICAgRVZFTlRfU0VSVkVSX0VORFBPSU5UID0gJ2h0dHBzOi8vZXdzLndlYmtp
dC5vcmcvcmVzdWx0cy8nCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyX2hvc3RuYW1l
LCB0eXBlX3ByZWZpeD0nJywgbmFtZT0nRXZlbnRzJyk6Ci0gICAgICAgICIiIgotICAgICAgICBJ
bml0aWFsaXplIHRoZSBFdmVudHMgUGx1Z2luLiBTZW5kcyBkYXRhIHRvIGV2ZW50IHNlcnZlciBv
biBzcGVjaWZpYyBidWlsZGJvdCBldmVudHMuCi0gICAgICAgIDpwYXJhbSB0eXBlX3ByZWZpeDog
W29wdGlvbmFsXSBwcmVmaXggd2Ugd2FudCB0byBhZGQgdG8gdGhlICd0eXBlJyBmaWVsZCBvbiB0
aGUganNvbiB3ZSBzZW5kCi0gICAgICAgICB0byBldmVudCBzZXJ2ZXIuIChpLmUuIGV3cy1idWls
ZCwgd2hlcmUgJ2V3cy0nIGlzIHRoZSBwcmVmaXguCi0gICAgICAgIDpyZXR1cm46IEV2ZW50cyBP
YmplY3QKLSAgICAgICAgIiIiCi0gICAgICAgIHNlcnZpY2UuQnVpbGRib3RTZXJ2aWNlLl9faW5p
dF9fKHNlbGYsIG5hbWU9bmFtZSkKLQotICAgICAgICBpZiB0eXBlX3ByZWZpeCBhbmQgbm90IHR5
cGVfcHJlZml4LmVuZHN3aXRoKCItIik6Ci0gICAgICAgICAgICB0eXBlX3ByZWZpeCArPSAiLSIK
LSAgICAgICAgc2VsZi50eXBlX3ByZWZpeCA9IHR5cGVfcHJlZml4Ci0gICAgICAgIHNlbGYubWFz
dGVyX2hvc3RuYW1lID0gbWFzdGVyX2hvc3RuYW1lCi0KLSAgICBkZWYgc2VuZERhdGEoc2VsZiwg
ZGF0YSk6Ci0gICAgICAgIGlmIG9zLmdldGVudignRVdTX0FQSV9LRVknLCBOb25lKToKLSAgICAg
ICAgICAgIGRhdGFbJ0VXU19BUElfS0VZJ10gPSBvcy5nZXRlbnYoJ0VXU19BUElfS0VZJykKLSAg
ICAgICAgYWdlbnQgPSBBZ2VudChyZWFjdG9yKQotICAgICAgICBib2R5ID0gSlNPTlByb2R1Y2Vy
KGRhdGEpCi0KLSAgICAgICAgYWdlbnQucmVxdWVzdCgnUE9TVCcsIHNlbGYuRVZFTlRfU0VSVkVS
X0VORFBPSU5ULCBIZWFkZXJzKHsnQ29udGVudC1UeXBlJzogWydhcHBsaWNhdGlvbi9qc29uJ119
KSwgYm9keSkKLQotICAgIGRlZiBnZXRCdWlsZGVyTmFtZShzZWxmLCBidWlsZCk6Ci0gICAgICAg
IGlmIG5vdCAoYnVpbGQgYW5kICdwcm9wZXJ0aWVzJyBpbiBidWlsZCk6Ci0gICAgICAgICAgICBy
ZXR1cm4gJycKLQotICAgICAgICByZXR1cm4gYnVpbGQuZ2V0KCdwcm9wZXJ0aWVzJykuZ2V0KCdi
dWlsZGVybmFtZScpWzBdCi0KLSAgICBkZWYgZ2V0UGF0Y2hJRChzZWxmLCBidWlsZCk6Ci0gICAg
ICAgIGlmIG5vdCAoYnVpbGQgYW5kICdwcm9wZXJ0aWVzJyBpbiBidWlsZCBhbmQgJ3BhdGNoX2lk
JyBpbiBidWlsZFsncHJvcGVydGllcyddKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICAgICAgcmV0dXJuIGJ1aWxkLmdldCgncHJvcGVydGllcycpLmdldCgncGF0Y2hfaWQnKVswXQot
Ci0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBidWlsZFN0YXJ0ZWQoc2VsZiwg
a2V5LCBidWlsZCk6Ci0gICAgICAgIGlmIG5vdCBidWlsZC5nZXQoJ3Byb3BlcnRpZXMnKToKLSAg
ICAgICAgICAgIGJ1aWxkWydwcm9wZXJ0aWVzJ10gPSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5idWls
ZHMuZ2V0QnVpbGRQcm9wZXJ0aWVzKGJ1aWxkLmdldCgnYnVpbGRpZCcpKQotCi0gICAgICAgIGJ1
aWxkZXIgPSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5idWlsZGVycy5nZXRCdWlsZGVyKGJ1aWxkLmdl
dCgnYnVpbGRlcmlkJykpCi0gICAgICAgIGJ1aWxkZXJfZGlzcGxheV9uYW1lID0gYnVpbGRlci5n
ZXQoJ2Rlc2NyaXB0aW9uJykKLQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgInR5cGUi
OiBzZWxmLnR5cGVfcHJlZml4ICsgImJ1aWxkIiwKLSAgICAgICAgICAgICJzdGF0dXMiOiAic3Rh
cnRlZCIsCi0gICAgICAgICAgICAiaG9zdG5hbWUiOiBzZWxmLm1hc3Rlcl9ob3N0bmFtZSwKLSAg
ICAgICAgICAgICJwYXRjaF9pZCI6IHNlbGYuZ2V0UGF0Y2hJRChidWlsZCksCi0gICAgICAgICAg
ICAiYnVpbGRfaWQiOiBidWlsZC5nZXQoJ2J1aWxkaWQnKSwKLSAgICAgICAgICAgICJidWlsZGVy
X2lkIjogYnVpbGQuZ2V0KCdidWlsZGVyaWQnKSwKLSAgICAgICAgICAgICJudW1iZXIiOiBidWls
ZC5nZXQoJ251bWJlcicpLAotICAgICAgICAgICAgInJlc3VsdCI6IGJ1aWxkLmdldCgncmVzdWx0
cycpLAotICAgICAgICAgICAgInN0YXJ0ZWRfYXQiOiBidWlsZC5nZXQoJ3N0YXJ0ZWRfYXQnKSwK
LSAgICAgICAgICAgICJjb21wbGV0ZV9hdCI6IGJ1aWxkLmdldCgnY29tcGxldGVfYXQnKSwKLSAg
ICAgICAgICAgICJzdGF0ZV9zdHJpbmciOiBidWlsZC5nZXQoJ3N0YXRlX3N0cmluZycpLAotICAg
ICAgICAgICAgImJ1aWxkZXJfbmFtZSI6IHNlbGYuZ2V0QnVpbGRlck5hbWUoYnVpbGQpLAotICAg
ICAgICAgICAgImJ1aWxkZXJfZGlzcGxheV9uYW1lIjogYnVpbGRlcl9kaXNwbGF5X25hbWUsCi0g
ICAgICAgIH0KLQotICAgICAgICBzZWxmLnNlbmREYXRhKGRhdGEpCi0KLSAgICBAZGVmZXIuaW5s
aW5lQ2FsbGJhY2tzCi0gICAgZGVmIGJ1aWxkRmluaXNoZWQoc2VsZiwga2V5LCBidWlsZCk6Ci0g
ICAgICAgIGlmIG5vdCBidWlsZC5nZXQoJ3Byb3BlcnRpZXMnKToKLSAgICAgICAgICAgIGJ1aWxk
Wydwcm9wZXJ0aWVzJ10gPSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5idWlsZHMuZ2V0QnVpbGRQcm9w
ZXJ0aWVzKGJ1aWxkLmdldCgnYnVpbGRpZCcpKQotICAgICAgICBpZiBub3QgYnVpbGQuZ2V0KCdz
dGVwcycpOgotICAgICAgICAgICAgYnVpbGRbJ3N0ZXBzJ10gPSB5aWVsZCBzZWxmLm1hc3Rlci5k
Yi5zdGVwcy5nZXRTdGVwcyhidWlsZC5nZXQoJ2J1aWxkaWQnKSkKLQotICAgICAgICBidWlsZGVy
ID0geWllbGQgc2VsZi5tYXN0ZXIuZGIuYnVpbGRlcnMuZ2V0QnVpbGRlcihidWlsZC5nZXQoJ2J1
aWxkZXJpZCcpKQotICAgICAgICBidWlsZGVyX2Rpc3BsYXlfbmFtZSA9IGJ1aWxkZXIuZ2V0KCdk
ZXNjcmlwdGlvbicpCi0KLSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICJ0eXBlIjogc2Vs
Zi50eXBlX3ByZWZpeCArICJidWlsZCIsCi0gICAgICAgICAgICAic3RhdHVzIjogImZpbmlzaGVk
IiwKLSAgICAgICAgICAgICJob3N0bmFtZSI6IHNlbGYubWFzdGVyX2hvc3RuYW1lLAotICAgICAg
ICAgICAgInBhdGNoX2lkIjogc2VsZi5nZXRQYXRjaElEKGJ1aWxkKSwKLSAgICAgICAgICAgICJi
dWlsZF9pZCI6IGJ1aWxkLmdldCgnYnVpbGRpZCcpLAotICAgICAgICAgICAgImJ1aWxkZXJfaWQi
OiBidWlsZC5nZXQoJ2J1aWxkZXJpZCcpLAotICAgICAgICAgICAgIm51bWJlciI6IGJ1aWxkLmdl
dCgnbnVtYmVyJyksCi0gICAgICAgICAgICAicmVzdWx0IjogYnVpbGQuZ2V0KCdyZXN1bHRzJyks
Ci0gICAgICAgICAgICAic3RhcnRlZF9hdCI6IGJ1aWxkLmdldCgnc3RhcnRlZF9hdCcpLAotICAg
ICAgICAgICAgImNvbXBsZXRlX2F0IjogYnVpbGQuZ2V0KCdjb21wbGV0ZV9hdCcpLAotICAgICAg
ICAgICAgInN0YXRlX3N0cmluZyI6IGJ1aWxkLmdldCgnc3RhdGVfc3RyaW5nJyksCi0gICAgICAg
ICAgICAiYnVpbGRlcl9uYW1lIjogc2VsZi5nZXRCdWlsZGVyTmFtZShidWlsZCksCi0gICAgICAg
ICAgICAiYnVpbGRlcl9kaXNwbGF5X25hbWUiOiBidWlsZGVyX2Rpc3BsYXlfbmFtZSwKLSAgICAg
ICAgICAgICJzdGVwcyI6IGJ1aWxkLmdldCgnc3RlcHMnKSwKLSAgICAgICAgfQotCi0gICAgICAg
IHNlbGYuc2VuZERhdGEoZGF0YSkKLQotICAgIGRlZiBzdGVwU3RhcnRlZChzZWxmLCBrZXksIHN0
ZXApOgotICAgICAgICBzdGF0ZV9zdHJpbmcgPSBzdGVwLmdldCgnc3RhdGVfc3RyaW5nJykKLSAg
ICAgICAgaWYgc3RhdGVfc3RyaW5nID09ICdwZW5kaW5nJzoKLSAgICAgICAgICAgIHN0YXRlX3N0
cmluZyA9ICdSdW5uaW5nIHt9Jy5mb3JtYXQoc3RlcC5nZXQoJ25hbWUnKSkKLQotICAgICAgICBk
YXRhID0gewotICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJlZml4ICsgInN0ZXAiLAot
ICAgICAgICAgICAgInN0YXR1cyI6ICJzdGFydGVkIiwKLSAgICAgICAgICAgICJob3N0bmFtZSI6
IHNlbGYubWFzdGVyX2hvc3RuYW1lLAotICAgICAgICAgICAgInN0ZXBfaWQiOiBzdGVwLmdldCgn
c3RlcGlkJyksCi0gICAgICAgICAgICAiYnVpbGRfaWQiOiBzdGVwLmdldCgnYnVpbGRpZCcpLAot
ICAgICAgICAgICAgInJlc3VsdCI6IHN0ZXAuZ2V0KCdyZXN1bHRzJyksCi0gICAgICAgICAgICAi
c3RhdGVfc3RyaW5nIjogc3RhdGVfc3RyaW5nLAotICAgICAgICAgICAgInN0YXJ0ZWRfYXQiOiBz
dGVwLmdldCgnc3RhcnRlZF9hdCcpLAotICAgICAgICAgICAgImNvbXBsZXRlX2F0Ijogc3RlcC5n
ZXQoJ2NvbXBsZXRlX2F0JyksCi0gICAgICAgIH0KLQotICAgICAgICBzZWxmLnNlbmREYXRhKGRh
dGEpCi0KLSAgICBkZWYgc3RlcEZpbmlzaGVkKHNlbGYsIGtleSwgc3RlcCk6Ci0gICAgICAgIGRh
dGEgPSB7Ci0gICAgICAgICAgICAidHlwZSI6IHNlbGYudHlwZV9wcmVmaXggKyAic3RlcCIsCi0g
ICAgICAgICAgICAic3RhdHVzIjogImZpbmlzaGVkIiwKLSAgICAgICAgICAgICJob3N0bmFtZSI6
IHNlbGYubWFzdGVyX2hvc3RuYW1lLAotICAgICAgICAgICAgInN0ZXBfaWQiOiBzdGVwLmdldCgn
c3RlcGlkJyksCi0gICAgICAgICAgICAiYnVpbGRfaWQiOiBzdGVwLmdldCgnYnVpbGRpZCcpLAot
ICAgICAgICAgICAgInJlc3VsdCI6IHN0ZXAuZ2V0KCdyZXN1bHRzJyksCi0gICAgICAgICAgICAi
c3RhdGVfc3RyaW5nIjogc3RlcC5nZXQoJ3N0YXRlX3N0cmluZycpLAotICAgICAgICAgICAgInN0
YXJ0ZWRfYXQiOiBzdGVwLmdldCgnc3RhcnRlZF9hdCcpLAotICAgICAgICAgICAgImNvbXBsZXRl
X2F0Ijogc3RlcC5nZXQoJ2NvbXBsZXRlX2F0JyksCi0gICAgICAgIH0KLQotICAgICAgICBzZWxm
LnNlbmREYXRhKGRhdGEpCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIHN0
YXJ0U2VydmljZShzZWxmKToKLSAgICAgICAgeWllbGQgc2VydmljZS5CdWlsZGJvdFNlcnZpY2Uu
c3RhcnRTZXJ2aWNlKHNlbGYpCi0KLSAgICAgICAgc3RhcnRDb25zdW1pbmcgPSBzZWxmLm1hc3Rl
ci5tcS5zdGFydENvbnN1bWluZwotCi0gICAgICAgIHNlbGYuX2J1aWxkU3RhcnRlZENvbnN1bWVy
ID0geWllbGQgc3RhcnRDb25zdW1pbmcoc2VsZi5idWlsZFN0YXJ0ZWQsICgnYnVpbGRzJywgTm9u
ZSwgJ25ldycpKQotICAgICAgICBzZWxmLl9idWlsZENvbXBsZXRlQ29uc3VtZXIgPSB5aWVsZCBz
dGFydENvbnN1bWluZyhzZWxmLmJ1aWxkRmluaXNoZWQsICgnYnVpbGRzJywgTm9uZSwgJ2Zpbmlz
aGVkJykpCi0gICAgICAgIHNlbGYuX3N0ZXBTdGFydGVkQ29uc3VtZXIgPSB5aWVsZCBzdGFydENv
bnN1bWluZyhzZWxmLnN0ZXBTdGFydGVkLCAoJ3N0ZXBzJywgTm9uZSwgJ3N0YXJ0ZWQnKSkKLSAg
ICAgICAgc2VsZi5fc3RlcEZpbmlzaGVkQ29uc3VtZXIgPSB5aWVsZCBzdGFydENvbnN1bWluZyhz
ZWxmLnN0ZXBGaW5pc2hlZCwgKCdzdGVwcycsIE5vbmUsICdmaW5pc2hlZCcpKQotCi0gICAgZGVm
IHN0b3BTZXJ2aWNlKHNlbGYpOgotICAgICAgICBzZWxmLl9idWlsZFN0YXJ0ZWRDb25zdW1lci5z
dG9wQ29uc3VtaW5nKCkKLSAgICAgICAgc2VsZi5fYnVpbGRDb21wbGV0ZUNvbnN1bWVyLnN0b3BD
b25zdW1pbmcoKQotICAgICAgICBzZWxmLl9zdGVwU3RhcnRlZENvbnN1bWVyLnN0b3BDb25zdW1p
bmcoKQotICAgICAgICBzZWxmLl9zdGVwRmluaXNoZWRDb25zdW1lci5zdG9wQ29uc3VtaW5nKCkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXMucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5w
eQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxk
L2ZhY3Rvcmllcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3NSArMCwwIEBACi0jIENvcHlyaWdo
dCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIGJ1aWxkYm90LnByb2Nl
c3MgaW1wb3J0IGZhY3RvcnkKLWZyb20gYnVpbGRib3Quc3RlcHMgaW1wb3J0IHRyaWdnZXIKLQot
ZnJvbSBzdGVwcyBpbXBvcnQgKEFwcGx5UGF0Y2gsIEFwcGx5V2F0Y2hMaXN0LCBDaGVja091dFNv
dXJjZSwgQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uLCBDaGVja1BhdGNoUmVsZXZhbmNlLAotICAg
ICAgICAgICAgICAgICAgIENoZWNrUGF0Y2hTdGF0dXNPbkVXU1F1ZXVlcywgQ2hlY2tTdHlsZSwg
Q29tcGlsZUpTQywgQ29tcGlsZVdlYktpdCwgQ29uZmlndXJlQnVpbGQsIENyZWF0ZUxvY2FsR0lU
Q29tbWl0LAotICAgICAgICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBFeHRyYWN0
QnVpbHRQcm9kdWN0LCBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBJbnN0YWxsR3RrRGVwZW5kZW5j
aWVzLAotICAgICAgICAgICAgICAgICAgIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMsIEtpbGxPbGRQ
cm9jZXNzZXMsIFByaW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywKLSAg
ICAgICAgICAgICAgICAgICBSdW5BUElUZXN0cywgUnVuQmluZGluZ3NUZXN0cywgUnVuQnVpbGRX
ZWJLaXRPcmdVbml0VGVzdHMsIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcsIFJ1bkVXU1VuaXRU
ZXN0cywKLSAgICAgICAgICAgICAgICAgICBSdW5SZXN1bHRzZGJweVRlc3RzLCBSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzLCBSdW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2Vi
S2l0UHlQeXRob24yVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgUnVuV2ViS2l0UHlQeXRob24z
VGVzdHMsIFJ1bldlYktpdFRlc3RzLCBTZXRCdWlsZFN1bW1hcnksIFRyaWdnZXJDcmFzaExvZ1N1
Ym1pc3Npb24sIFVwZGF0ZVdvcmtpbmdEaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgVmFs
aWRhdGVQYXRjaCwgVmFsaWRhdGVDaGFuZ2VMb2dBbmRSZXZpZXdlciwgVmFsaWRhdGVDb21taXRl
ckFuZFJldmlld2VyLCBXYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKQotCi0KLWNsYXNzIEZhY3Rvcnko
ZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwg
Y29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIGJ1aWxkT25seT1UcnVlLCB0
cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFs
QXJndW1lbnRzPU5vbmUsIGNoZWNrUmVsZXZhbmNlPUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAg
IGZhY3RvcnkuQnVpbGRGYWN0b3J5Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuYWRkU3Rl
cChDb25maWd1cmVCdWlsZChwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1
cmF0aW9uLCBhcmNoaXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1idWlsZE9ubHks
IHRyaWdnZXJzPXRyaWdnZXJzLCB0cmlnZ2VyZWRfYnk9dHJpZ2dlcmVkX2J5LCByZW1vdGVzPXJl
bW90ZXMsIGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAgICAg
IGlmIGNoZWNrUmVsZXZhbmNlOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKENoZWNrUGF0Y2hS
ZWxldmFuY2UoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFZhbGlkYXRlUGF0Y2goKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKFByaW50Q29uZmlndXJhdGlvbigpKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoQ2hlY2tPdXRTb3VyY2UoKSkKLSAgICAgICAgIyBDaGVja091dFNvdXJjZSBzdGVwIHB1bGxz
IHRoZSBsYXRlc3QgcmV2aXNpb24sIHNpbmNlIHdlIHVzZSBhbHdheXNVc2VMYXRlc3Q9VHJ1ZS4g
V2l0aG91dCBhbHdheXNVc2VMYXRlc3QgQnVpbGRib3Qgd2lsbAotICAgICAgICAjIGF1dG9tYXRp
Y2FsbHkgYXBwbHkgdGhlIHBhdGNoIHRvIHRoZSByZXBvLCBhbmQgdGhhdCBkb2Vzbid0IGhhbmRs
ZSBDaGFuZ2VMb2dzIHdlbGwuIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi8xOTMxMzgKLSAgICAg
ICAgIyBUaGVyZWZvcmUgd2UgYWRkIENoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiBzdGVwIHRvIGNo
ZWNrb3V0IHJlcXVpcmVkIHJldmlzaW9uLgotICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRT
cGVjaWZpY1JldmlzaW9uKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChBcHBseVBhdGNoKCkpCi0K
LQotY2xhc3MgU3R5bGVGYWN0b3J5KGZhY3RvcnkuQnVpbGRGYWN0b3J5KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1O
b25lLCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9u
ZSwgKiprd2FyZ3MpOgotICAgICAgICBmYWN0b3J5LkJ1aWxkRmFjdG9yeS5fX2luaXRfXyhzZWxm
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29uZmlndXJlQnVpbGQocGxhdGZvcm09cGxhdGZvcm0s
IGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcz1hcmNoaXRlY3R1cmVz
LCBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPXRyaWdnZXJzLCByZW1vdGVzPXJlbW90ZXMsIGFk
ZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChWYWxpZGF0ZVBhdGNoKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChQcmludENvbmZpZ3Vy
YXRpb24oKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKENoZWNrT3V0U291cmNlKCkpCi0gICAgICAg
IHNlbGYuYWRkU3RlcChVcGRhdGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChBcHBseVBhdGNoKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja1N0eWxlKCkpCi0K
LQotY2xhc3MgV2F0Y2hMaXN0RmFjdG9yeShmYWN0b3J5LkJ1aWxkRmFjdG9yeSk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVy
ZXM9Tm9uZSwgdHJpZ2dlcnM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRz
PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgZmFjdG9yeS5CdWlsZEZhY3RvcnkuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbmZpZ3VyZUJ1aWxkKHBsYXRmb3JtPXBsYXRm
b3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0
dXJlcywgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz10cmlnZ2VycywgcmVtb3Rlcz1yZW1vdGVz
LCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoVmFsaWRhdGVQYXRjaCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUHJpbnRDb25m
aWd1cmF0aW9uKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja091dFNvdXJjZSgpKQotICAg
ICAgICBzZWxmLmFkZFN0ZXAoVXBkYXRlV29ya2luZ0RpcmVjdG9yeSgpKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoQXBwbHlQYXRjaCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQXBwbHlXYXRjaExp
c3QoKSkKLQotCi1jbGFzcyBCaW5kaW5nc0ZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9u
ZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZhY3Rvcnku
X19pbml0X18oc2VsZiwgcGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJh
dGlvbiwgYXJjaGl0ZWN0dXJlcz1hcmNoaXRlY3R1cmVzLCBidWlsZE9ubHk9RmFsc2UsIGFkZGl0
aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkK
LSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkJpbmRpbmdzVGVzdHMoKSkKLQotCi1jbGFzcyBXZWJL
aXRQZXJsRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0s
IGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1l
bnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0
Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVz
PWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1GYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRp
dGlvbmFsQXJndW1lbnRzKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViS2l0UGVybFRlc3Rz
KCkpCi0KLQotY2xhc3MgV2ViS2l0UHlGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUs
IGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9f
aW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRp
b24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCBhZGRpdGlv
bmFsQXJndW1lbnQ9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkKLSAg
ICAgICAgc2VsZi5hZGRTdGVwKFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzKCkpCi0gICAgICAgIHNl
bGYuYWRkU3RlcChSdW5XZWJLaXRQeVB5dGhvbjNUZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCi0KLQotY2xhc3MgQnVpbGRGYWN0b3J5KEZhY3RvcnkpOgot
ICAgIHNraXBVcGxvYWQgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3Jt
LCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgdHJpZ2dlcnM9Tm9uZSwg
YWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBjaGVja1JlbGV2YW5jZT1GYWxzZSwgKiprd2FyZ3Mp
OgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25m
aWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVp
bGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz10cmlnZ2VycywgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRp
dGlvbmFsQXJndW1lbnRzLCBjaGVja1JlbGV2YW5jZT1jaGVja1JlbGV2YW5jZSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0g
J2d0ayc6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoSW5zdGFsbEd0a0RlcGVuZGVuY2llcygp
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZVdlYktpdChza2lwVXBsb2FkPXNlbGYuc2tp
cFVwbG9hZCkpCi0KLQotY2xhc3MgVGVzdEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVz
dENsYXNzID0gTm9uZQotICAgIEFQSVRlc3RDbGFzcyA9IE5vbmUKLSAgICB3aWxsVHJpZ2dlckNy
YXNoTG9nU3VibWlzc2lvbiA9IEZhbHNlCi0KLSAgICBkZWYgZ2V0UHJvZHVjdChzZWxmKToKLSAg
ICAgICAgc2VsZi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYu
YWRkU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCB0cmlnZ2Vy
ZWRfYnk9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBjaGVja1JlbGV2YW5jZT1GYWxz
ZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBs
YXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0
ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2VyZWRfYnk9dHJpZ2dlcmVkX2J5LCBhZGRp
dGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMsIGNoZWNrUmVsZXZhbmNlPWNoZWNr
UmVsZXZhbmNlKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnZ3RrJzoKLSAgICAgICAgICAgIHNl
bGYuYWRkU3RlcChJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuZ2V0UHJv
ZHVjdCgpCi0gICAgICAgIGlmIHNlbGYud2lsbFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb246Ci0g
ICAgICAgICAgICBzZWxmLmFkZFN0ZXAoV2FpdEZvckNyYXNoQ29sbGVjdGlvbigpKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoS2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICBpZiBzZWxmLkxheW91
dFRlc3RDbGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChzZWxmLkxheW91dFRlc3RDbGFz
cygpKQotICAgICAgICBpZiBzZWxmLkFQSVRlc3RDbGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRk
U3RlcChzZWxmLkFQSVRlc3RDbGFzcygpKQotICAgICAgICBpZiBzZWxmLndpbGxUcmlnZ2VyQ3Jh
c2hMb2dTdWJtaXNzaW9uOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFRyaWdnZXJDcmFzaExv
Z1N1Ym1pc3Npb24oKSkKLSAgICAgICAgaWYgc2VsZi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAg
ICAgICBzZWxmLmFkZFN0ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCi0KLQotY2xhc3MgSlNDQnVpbGRG
YWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmln
dXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgdHJpZ2dlcnM9Tm9uZSwgcmVt
b3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAg
RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1j
b25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1GYWxz
ZSwgdHJpZ2dlcnM9dHJpZ2dlcnMsIHJlbW90ZXM9cmVtb3RlcywgYWRkaXRpb25hbEFyZ3VtZW50
cz1hZGRpdGlvbmFsQXJndW1lbnRzLCBjaGVja1JlbGV2YW5jZT1UcnVlKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoS2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGls
ZUpTQygpKQotCi0KLWNsYXNzIEpTQ0J1aWxkQW5kVGVzdHNGYWN0b3J5KEZhY3RvcnkpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFy
Y2hpdGVjdHVyZXM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUs
IHJ1blRlc3RzPSd0cnVlJywgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNl
bGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hp
dGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCByZW1vdGVzPXJlbW90ZXMs
IGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9
VHJ1ZSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKENvbXBpbGVKU0Moc2tpcFVwbG9hZD1UcnVlKSkKLSAgICAgICAgaWYgcnVu
VGVzdHMubG93ZXIoKSA9PSAndHJ1ZSc6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuSmF2
YVNjcmlwdENvcmVUZXN0cygpKQotCi0KLWNsYXNzIEpTQ1Rlc3RzRmFjdG9yeShGYWN0b3J5KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249J3JlbGVhc2Un
LCBhcmNoaXRlY3R1cmVzPU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1O
b25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm09
cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcz1hcmNo
aXRlY3R1cmVzLCBidWlsZE9ubHk9RmFsc2UsIHJlbW90ZXM9cmVtb3RlcywgYWRkaXRpb25hbEFy
Z3VtZW50cz1hZGRpdGlvbmFsQXJndW1lbnRzLCBjaGVja1JlbGV2YW5jZT1UcnVlKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRT
dGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxPbGRQ
cm9jZXNzZXMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMo
KSkKLQotCi1jbGFzcyBBUElUZXN0c0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgotICAgIEFQSVRlc3RD
bGFzcyA9IFJ1bkFQSVRlc3RzCi0KLQotY2xhc3MgaU9TQnVpbGRGYWN0b3J5KEJ1aWxkRmFjdG9y
eSk6Ci0gICAgcGFzcwotCi0KLWNsYXNzIGlPU0VtYmVkZGVkQnVpbGRGYWN0b3J5KEJ1aWxkRmFj
dG9yeSk6Ci0gICAgc2tpcFVwbG9hZCA9IFRydWUKLQotCi1jbGFzcyBpT1NUZXN0c0ZhY3Rvcnko
VGVzdEZhY3RvcnkpOgotICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCi0gICAg
d2lsbFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24gPSBUcnVlCi0KLQotY2xhc3MgbWFjT1NCdWls
ZEZhY3RvcnkoQnVpbGRGYWN0b3J5KToKLSAgICBwYXNzCi0KLQotY2xhc3MgbWFjT1NCdWlsZE9u
bHlGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgc2tpcFVwbG9hZCA9IFRydWUKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1
cmVzPU5vbmUsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgY2hlY2tS
ZWxldmFuY2U9VHJ1ZSwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihtYWNPU0J1aWxkT25seUZh
Y3RvcnksIHNlbGYpLl9faW5pdF9fKHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNv
bmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9dHJpZ2dl
cnMsIGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFu
Y2U9Y2hlY2tSZWxldmFuY2UsICoqa3dhcmdzKQotCi0KLWNsYXNzIHdhdGNoT1NCdWlsZEZhY3Rv
cnkoQnVpbGRGYWN0b3J5KToKLSAgICBza2lwVXBsb2FkID0gVHJ1ZQotCi0KLWNsYXNzIHR2T1NC
dWlsZEZhY3RvcnkoQnVpbGRGYWN0b3J5KToKLSAgICBza2lwVXBsb2FkID0gVHJ1ZQotCi0KLWNs
YXNzIG1hY09TV0sxRmFjdG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0g
UnVuV2ViS2l0MVRlc3RzCi0gICAgd2lsbFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24gPSBUcnVl
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwg
YXJjaGl0ZWN0dXJlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGNoZWNrUmVsZXZh
bmNlPUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKG1hY09TV0sxRmFjdG9yeSwgc2Vs
ZikuX19pbml0X18ocGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlv
biwgYXJjaGl0ZWN0dXJlcz1hcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0
aW9uYWxBcmd1bWVudHMsIGNoZWNrUmVsZXZhbmNlPVRydWUsICoqa3dhcmdzKQotCi0KLWNsYXNz
IG1hY09TV0syRmFjdG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVu
V2ViS2l0VGVzdHMKLSAgICB3aWxsVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiA9IFRydWUKLQot
Ci1jbGFzcyBXaW5kb3dzRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCB0cmlnZ2Vy
cz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFj
dG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25m
aWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1GYWxzZSwg
dHJpZ2dlcnM9dHJpZ2dlcnMsIGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50
cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9j
ZXNzZXMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoc2tpcFVwbG9hZD1U
cnVlKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2Vk
PUZhbHNlLCBhZGRVUkxzPUZhbHNlKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldlYktpdDFU
ZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCi0KLQotY2xh
c3MgV2luQ2Fpcm9GYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0
Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIHRyaWdnZXJzPU5v
bmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5
Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3Vy
YXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PVRydWUsIHRyaWdn
ZXJzPXRyaWdnZXJzLCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChDb21waWxlV2ViS2l0KHNraXBVcGxvYWQ9VHJ1ZSkpCi0KLQotY2xhc3MgR1RLQnVpbGRG
YWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEdUS1Rlc3RzRmFjdG9y
eShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHMKLQot
Ci1jbGFzcyBXUEVGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0
Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIHRyaWdnZXJzPU5v
bmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5
Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3Vy
YXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PVRydWUsIHRyaWdn
ZXJzPXRyaWdnZXJzLCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChJbnN0YWxsV3BlRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDb21w
aWxlV2ViS2l0KHNraXBVcGxvYWQ9VHJ1ZSkpCi0KLQotY2xhc3MgU2VydmljZXNGYWN0b3J5KEZh
Y3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1O
b25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2Fy
Z3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBj
b25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywg
YnVpbGRPbmx5PUZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMs
IGNoZWNrUmVsZXZhbmNlPVRydWUpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5FV1NVbml0VGVz
dHMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcoKSkK
LSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1blJlc3VsdHNkYnB5VGVzdHMoKSkKLSAgICAgICAgc2Vs
Zi5hZGRTdGVwKFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzKCkpCi0KLQotY2xhc3MgQ29tbWl0
UXVldWVGYWN0b3J5KGZhY3RvcnkuQnVpbGRGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgZmFjdG9yeS5CdWlsZEZh
Y3RvcnkuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbmZpZ3VyZUJ1aWxk
KHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCByZW1v
dGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAg
ICAgIHNlbGYuYWRkU3RlcChWYWxpZGF0ZVBhdGNoKHZlcmlmeWNxcGx1cz1UcnVlKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigpKQotICAgICAgICBz
ZWxmLmFkZFN0ZXAoUHJpbnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChD
aGVja091dFNvdXJjZSgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoVXBkYXRlV29ya2luZ0RpcmVj
dG9yeSgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQXBwbHlQYXRjaCgpKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoVmFsaWRhdGVDaGFuZ2VMb2dBbmRSZXZpZXdlcigpKQotICAgICAgICBzZWxmLmFk
ZFN0ZXAoRmluZE1vZGlmaWVkQ2hhbmdlTG9ncygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoS2ls
bE9sZFByb2Nlc3NlcygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZVdlYktpdChza2lw
VXBsb2FkPVRydWUpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoS2lsbE9sZFByb2Nlc3NlcygpKQot
ICAgICAgICBzZWxmLmFkZFN0ZXAoVmFsaWRhdGVQYXRjaChhZGRVUkxzPUZhbHNlLCB2ZXJpZnlj
cXBsdXM9VHJ1ZSkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja1BhdGNoU3RhdHVzT25FV1NR
dWV1ZXMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAg
IHNlbGYuYWRkU3RlcChWYWxpZGF0ZVBhdGNoKGFkZFVSTHM9RmFsc2UsIHZlcmlmeWNxcGx1cz1U
cnVlKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKENoZWNrT3V0U291cmNlKCkpCi0gICAgICAgIHNl
bGYuYWRkU3RlcChVcGRhdGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuYWRkU3Rl
cChBcHBseVBhdGNoKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDcmVhdGVMb2NhbEdJVENvbW1p
dCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUHVzaENvbW1pdFRvV2ViS2l0UmVwbygpKQotICAg
ICAgICBzZWxmLmFkZFN0ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYnVpbGQvZmFjdG9yaWVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXNfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9m
YWN0b3JpZXNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1ODcgKzAsMCBAQAotIyBD
b3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQot
ZnJvbSBidWlsZGJvdC5wcm9jZXNzLmJ1aWxkc3RlcCBpbXBvcnQgX0J1aWxkU3RlcEZhY3RvcnkK
LWZyb20gYnVpbGRib3Quc3RlcHMubWFzdGVyIGltcG9ydCBTZXRQcm9wZXJ0eQotCi1pbXBvcnQg
ZmFjdG9yaWVzCi1pbXBvcnQgc3RlcHMKLQotCi1jbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEJ1aWxkU3RlcHMoc2VsZiwgYWN0dWFsX3N0ZXBzLCBleHBl
Y3RlZF9zdGVwcyk6Ci0gICAgICAgIGFzc2VydCBhbGwobWFwKGxhbWJkYSBzdGVwOiBpc2luc3Rh
bmNlKHN0ZXAsIF9CdWlsZFN0ZXBGYWN0b3J5KSwgYWN0dWFsX3N0ZXBzKSkKLSAgICAgICAgYXNz
ZXJ0IGFsbChtYXAobGFtYmRhIHN0ZXA6IGlzaW5zdGFuY2Uoc3RlcCwgX0J1aWxkU3RlcEZhY3Rv
cnkpLCBleHBlY3RlZF9zdGVwcykpCi0KLSAgICAgICAgIyBDb252ZXJ0IHRvIGRpY3Rpb25hcmll
cyBiZWNhdXNlIGFzc2VydEVxdWFsKCkgb25seSBrbm93cyBob3cgdG8gZGlmZiBQeXRob24gYnVp
bHQtaW4gdHlwZXMuCi0gICAgICAgIGRlZiBzdGVwX3RvX2RpY3Qoc3RlcCk6Ci0gICAgICAgICAg
ICByZXR1cm4ge2tleTogZ2V0YXR0cihzdGVwLCBrZXkpIGZvciBrZXkgaW4gc3RlcC5jb21wYXJl
X2F0dHJzfQotCi0gICAgICAgIGFjdHVhbF9zdGVwcyA9IG1hcChzdGVwX3RvX2RpY3QsIGFjdHVh
bF9zdGVwcykKLSAgICAgICAgZXhwZWN0ZWRfc3RlcHMgPSBtYXAoc3RlcF90b19kaWN0LCBleHBl
Y3RlZF9zdGVwcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RlcHMsIGV4cGVj
dGVkX3N0ZXBzKQotCi0KLWNsYXNzIFRlc3RHZW5lcmljRmFjdG9yeShUZXN0Q2FzZSk6Ci0gICAg
ZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotCi0gICAg
ZGVmIHRlc3RfZ2VuZXJpY19mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9y
aWVzLkZhY3RvcnkocGxhdGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1cmF0aW9uPSdy
ZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz0nYXJtNjQnKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxk
U3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJh
dGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9J2FybTY0JywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ1aWxkT25seT1UcnVlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9
Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICBdKQotCi0g
ICAgZGVmIHRlc3RfZ2VuZXJpY19mYWN0b3J5X3dpdGhfY2hlY2tfcmVsZXZhbmNlKHNlbGYpOgot
ICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkZhY3RvcnkocGxhdGZvcm09J2lvcy1zaW11bGF0
b3ItMTMnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz0nYXJtNjQnLCBj
aGVja1JlbGV2YW5jZT1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9y
eS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJl
QnVpbGQsIHBsYXRmb3JtPSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFz
ZScsIGFyY2hpdGVjdHVyZXM9J2FybTY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1aWxkT25seT1UcnVlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rl
cz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgIF0pCi0KLQotY2xhc3MgVGVz
dFRlc3RzRmFjdG9yeShUZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBz
ZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotCi0gICAgZGVmIHRlc3Rfc3R5bGVfZmFjdG9yeShzZWxm
KToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5TdHlsZUZhY3RvcnkocGxhdGZvcm09Jyon
LCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nKicsIGNvbmZpZ3VyYXRpb249
Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxB
cmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxp
ZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29u
ZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091
dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5VcGRhdGVXb3Jr
aW5nRGlyZWN0b3J5KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5
UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tTdHlsZSks
Ci0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF93YXRjaGxpc3RfZmFjdG9yeShzZWxmKToKLSAg
ICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5XYXRjaExpc3RGYWN0b3J5KHBsYXRmb3JtPScqJywg
Y29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5v
bmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJn
dW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRh
dGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZp
Z3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRT
b3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVXBkYXRlV29ya2lu
Z0RpcmVjdG9yeSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBh
dGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5V2F0Y2hMaXN0
KSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X2JpbmRpbmdzX2ZhY3Rvcnkoc2VsZik6Ci0g
ICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuQmluZGluZ3NGYWN0b3J5KHBsYXRmb3JtPScqJywg
Y29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5v
bmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9
Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuUnVuQmluZGluZ3NUZXN0cyksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF93
ZWJraXRwZXJsX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuV2Vi
S2l0UGVybEZhY3RvcnkocGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVj
dHVyZXM9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMs
IFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBw
bGF0Zm9ybT0nKicsIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25l
LCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5v
bmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24p
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1Jldmlz
aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0UGVybFRlc3RzKSwK
LSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X3dlYmtpdHB5X2ZhY3Rvcnkoc2VsZik6Ci0gICAg
ICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuV2ViS2l0UHlGYWN0b3J5KHBsYXRmb3JtPScqJywgY29u
ZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUs
IGFyY2hpdGVjdHVyZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
T25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9u
ZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuUnVuV2ViS2l0UHlQeXRob24yVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuUnVuV2ViS2l0UHlQeXRob24zVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotICAgIGRl
ZiB0ZXN0X3NlcnZpY2VzX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3Jp
ZXMuU2VydmljZXNGYWN0b3J5KHBsYXRmb3JtPScqJywgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNo
aXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0
ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWls
ZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9
Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50
cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hS
ZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQ
YXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3Vy
YXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3Vy
Y2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZp
Y1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0
Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuRVdTVW5pdFRlc3Rz
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlJ1bkVXU0J1aWxkYm90Q2hl
Y2tDb25maWcpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuUmVzdWx0
c2RicHlUZXN0cyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5SdW5CdWls
ZFdlYktpdE9yZ1VuaXRUZXN0cyksCi0gICAgICAgIF0pCi0KLQotY2xhc3MgVGVzdEJ1aWxkRmFj
dG9yeShUZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZ2VuZXJpY19idWlsZF9mYWN0b3J5KHNlbGYp
OgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkJ1aWxkRmFjdG9yeShwbGF0Zm9ybT0nbWFj
LW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0
Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09
J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0
cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFs
QXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFs
aWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENv
bmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tP
dXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRT
cGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFw
cGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFBy
b2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2Vi
S2l0LCBza2lwVXBsb2FkPUZhbHNlKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X21hY29z
X2J1aWxkX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMubWFjT1NC
dWlsZEZhY3RvcnkocGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNl
JywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3Rl
cHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdtYWMtbW9qYXZlJywgY29uZmlndXJhdGlvbj0ncmVs
ZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUs
IHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWls
ZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQ29tcGlsZVdlYktpdCwgc2tpcFVwbG9hZD1GYWxzZSksCi0gICAgICAg
IF0pCi0KLSAgICBkZWYgdGVzdF9tYWNvc19idWlsZF9vbmx5X2ZhY3Rvcnkoc2VsZik6Ci0gICAg
ICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMubWFjT1NCdWlsZE9ubHlGYWN0b3J5KHBsYXRmb3JtPSdt
YWMtYmlnc3VyJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm02
NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3Jt
PSdtYWMtYmlnc3VyJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJh
cm02NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0
cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFs
QXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hl
Y2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5W
YWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50
Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVj
a091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091
dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
QXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xk
UHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVX
ZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF9pb3Nf
YnVpbGRfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5pT1NCdWls
ZEZhY3RvcnkocGxhdGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1cmF0aW9uPSdyZWxl
YXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxk
U3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJh
dGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVk
X2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29tcGlsZVdlYktpdCwgc2tpcFVwbG9hZD1GYWxzZSks
Ci0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF9pb3NfZW1iZWRkZWRfYnVpbGRfZmFjdG9yeShz
ZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5pT1NFbWJlZGRlZEJ1aWxkRmFjdG9y
eShwbGF0Zm9ybT0naW9zLTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVy
ZXM9WyJhcm02NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVw
cywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQs
IHBsYXRmb3JtPSdpb3MtMTMnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJl
cz1bImFybTY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFs
c2UsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0
aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlBy
aW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
aGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVj
a091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxs
T2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBp
bGVXZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF93
YXRjaG9zX2J1aWxkX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMu
d2F0Y2hPU0J1aWxkRmFjdG9yeShwbGF0Zm9ybT0nd2F0Y2hvcy02JywgY29uZmlndXJhdGlvbj0n
cmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm02NF8zMiJdKQotICAgICAgICBzZWxmLmFzc2Vy
dEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSd3YXRjaG9zLTYnLCBjb25maWd1cmF0
aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bImFybTY0XzMyIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJl
ZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVXZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSks
Ci0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF90dm9zX2J1aWxkX2ZhY3Rvcnkoc2VsZik6Ci0g
ICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMudHZPU0J1aWxkRmFjdG9yeShwbGF0Zm9ybT0ndHZv
cy0xMycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtNjQiXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0ndHZv
cy0xMycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtNjQiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9
Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50
cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0
Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0
aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNl
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNS
ZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNo
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29tcGlsZVdlYktpdCwgc2tp
cFVwbG9hZD1UcnVlKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X2d0a19idWlsZF9mYWN0
b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkdUS0J1aWxkRmFjdG9yeShw
bGF0Zm9ybT0nZ3RrJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Wyd4
ODZfNjQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0
Zm9ybT0nZ3RrJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Wyd4ODZf
NjQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJp
Z2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFy
Z3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlk
YXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25m
aWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0
U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3Bl
Y2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBs
eVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9j
ZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuSW5zdGFsbEd0a0Rl
cGVuZGVuY2llcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxl
V2ViS2l0LCBza2lwVXBsb2FkPUZhbHNlKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X3dw
ZV9mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLldQRUZhY3Rvcnko
cGxhdGZvcm09J3dwZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsn
eDg2XzY0J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBb
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxh
dGZvcm09J3dwZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsneDg2
XzY0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9VHJ1ZSwgdHJp
Z2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFy
Z3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlk
YXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25m
aWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0
U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3Bl
Y2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBs
eVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9j
ZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuSW5zdGFsbFdwZURl
cGVuZGVuY2llcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxl
V2ViS2l0LCBza2lwVXBsb2FkPVRydWUpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3Rfd2lu
Y2Fpcm9fZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5XaW5DYWly
b0ZhY3RvcnkocGxhdGZvcm09J3dpbmNhaXJvJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFy
Y2hpdGVjdHVyZXM9Wyd4ODZfNjQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZh
Y3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZp
Z3VyZUJ1aWxkLCBwbGF0Zm9ybT0nd2luY2Fpcm8nLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywg
YXJjaGl0ZWN0dXJlcz1bJ3g4Nl82NCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRPbmx5PVRydWUsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVz
PU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkNvbXBpbGVXZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAg
ICBkZWYgdGVzdF9qc2NfbWlwc2VsX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBm
YWN0b3JpZXMuSlNDQnVpbGRGYWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdy
ZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIm1pcHNlbCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1
aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxl
YXNlJywgYXJjaGl0ZWN0dXJlcz1bIm1pcHNlbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwg
cmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWls
ZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVKU0MpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3Rf
anNjX2FybXY3X2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlND
QnVpbGRGYWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJj
aGl0ZWN0dXJlcz1bImFybXY3Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0
b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1
cmVCdWlsZCwgcGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRl
Y3R1cmVzPVsiYXJtdjciXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25s
eT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwg
YWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5Db21waWxlSlNDKSwKLSAgICAgICAgXSkKLQotCi1jbGFzcyBUZXN0QnVpbGRBbmRUZXN0c0Zh
Y3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3dpbmRvd3NfZmFjdG9yeShzZWxmKToKLSAg
ICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5XaW5kb3dzRmFjdG9yeShwbGF0Zm9ybT0nd2luJywg
Y29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nd2luJywgY29u
ZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJp
Z2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2Up
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9u
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBsb2Fk
PVRydWUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRj
aCwgdmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlJ1bldlYktpdDFUZXN0cyksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQotCi0KLWNs
YXNzIFRlc3RDb21taXRRdWV1ZUZhY3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2NvbW1p
dF9xdWV1ZV9mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkNvbW1p
dFF1ZXVlRmFjdG9yeShwbGF0Zm9ybT0nbWFjLW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVh
c2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRT
dGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdy
ZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFk
ZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5WYWxpZGF0ZVBhdGNoLCB2ZXJpZnljcXBsdXM9VHJ1ZSksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlVwZGF0ZVdvcmtpbmdEaXJlY3RvcnkpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZUNoYW5nZUxvZ0FuZFJldmlld2VyKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkZpbmRNb2RpZmllZENoYW5nZUxv
Z3MpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3Nl
cyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBz
a2lwVXBsb2FkPVRydWUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2ls
bE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxp
ZGF0ZVBhdGNoLCBhZGRVUkxzPUZhbHNlLCB2ZXJpZnljcXBsdXM9VHJ1ZSksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCwgYWRkVVJMcz1G
YWxzZSwgdmVyaWZ5Y3FwbHVzPVRydWUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuVXBkYXRlV29ya2luZ0RpcmVjdG9yeSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkNyZWF0ZUxvY2FsR0lUQ29tbWl0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0
ZXBzLlB1c2hDb21taXRUb1dlYktpdFJlcG8pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotCi1jbGFzcyBUZXN0TGF5
b3V0VGVzdHNGYWN0b3J5KFRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9tYWNvc193azFfcmVsZWFz
ZV9mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLm1hY09TV0sxRmFj
dG9yeShwbGF0Zm9ybT0nbWFjLW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNo
aXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0
b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1
cmVCdWlsZCwgcGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywg
YXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rl
cz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5Eb3dubG9hZEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5FeHRyYWN0QnVpbHRQcm9kdWN0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLldhaXRGb3JDcmFzaENvbGxlY3Rpb24pLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5SdW5XZWJLaXQxVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQot
Ci0gICAgZGVmIHRlc3RfbWFjb3Nfd2sxX2RlYnVnX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZh
Y3RvcnkgPSBmYWN0b3JpZXMubWFjT1NXSzFGYWN0b3J5KHBsYXRmb3JtPSdtYWMtbW9qYXZlJywg
Y29uZmlndXJhdGlvbj0nZGVidWcnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAg
IHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J21hYy1tb2phdmUn
LCBjb25maWd1cmF0aW9uPSdkZWJ1ZycsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwg
dHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25l
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFu
Y2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24p
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1Jldmlz
aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRG93bmxvYWRCdWlsdFByb2R1Y3Qp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRXh0cmFjdEJ1aWx0UHJvZHVj
dCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5XYWl0Rm9yQ3Jhc2hDb2xs
ZWN0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9j
ZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0MVRl
c3RzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlRyaWdnZXJDcmFzaExv
Z1N1Ym1pc3Npb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVp
bGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X21hY29zX3drMl9mYWN0b3J5
KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLm1hY09TV0syRmFjdG9yeShwbGF0
Zm9ybT0nbWFjLW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVz
PVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBz
LCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwg
cGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0
dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5
PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBh
ZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
RG93bmxvYWRCdWlsdFByb2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuRXh0cmFjdEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5XYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRl
c3RfaW9zX3drMl9mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLmlP
U1Rlc3RzRmFjdG9yeShwbGF0Zm9ybT0naW9zLXNpbXVsYXRvci0xMycsIGNvbmZpZ3VyYXRpb249
J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0
QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25m
aWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmln
Z2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRG93bmxvYWRCdWlsdFByb2R1Y3QpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRXh0cmFjdEJ1aWx0UHJvZHVjdCksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5XYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9u
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVHJpZ2dlckNyYXNoTG9nU3VibWlz
c2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5TZXRCdWlsZFN1bW1h
cnkpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfZ3RrX2ZhY3Rvcnkoc2VsZik6Ci0gICAg
ICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuR1RLVGVzdHNGYWN0b3J5KHBsYXRmb3JtPSdndGsnLCBj
b25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdKQotICAgICAg
ICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdndGsnLCBjb25m
aWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmln
Z2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuSW5zdGFsbEd0a0RlcGVuZGVuY2llcyksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Eb3dubG9hZEJ1aWx0UHJvZHVjdCks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5FeHRyYWN0QnVpbHRQcm9kdWN0
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAg
ICAgICAgXSkKLQotCi1jbGFzcyBUZXN0SlNDQnVpbGRGYWN0b3J5KFRlc3RDYXNlKToKLSAgICBk
ZWYgdGVzdF9qc2NfbWlwc2VsX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0
b3JpZXMuSlNDQnVpbGRGYWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxl
YXNlJywgYXJjaGl0ZWN0dXJlcz1bIm1pcHNlbCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxk
U3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNl
JywgYXJjaGl0ZWN0dXJlcz1bIm1pcHNlbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVt
b3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNvbXBpbGVKU0MpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfanNj
X2FybXY3X2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlNDQnVp
bGRGYWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0
ZWN0dXJlcz1bImFybXY3Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5
LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVC
dWlsZCwgcGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1
cmVzPVsiYXJtdjciXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1G
YWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRk
aXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0
ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
S2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
b21waWxlSlNDKSwKLSAgICAgICAgXSkKLQotCi1jbGFzcyBUZXN0SlNDQnVpbGRBbmRUZXN0c0Zh
Y3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2pzY19taXBzZWxfZmFjdG9yeShzZWxmKToK
LSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5KU0NCdWlsZEZhY3RvcnkocGxhdGZvcm09J2pz
YycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J2pzYycs
IGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5vbmUs
IHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9u
ZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja1BhdGNoUmVsZXZh
bmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9u
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZp
c2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29tcGlsZUpTQyksCi0gICAgICAg
IF0pCi0KLSAgICBkZWYgdGVzdF9qc2NfYXJtdjdfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFj
dG9yeSA9IGZhY3Rvcmllcy5KU0NCdWlsZEZhY3RvcnkocGxhdGZvcm09J2pzYycsIGNvbmZpZ3Vy
YXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtdjciXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nanNjJywgY29uZmlndXJhdGlv
bj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm12NyJdLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9
Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVKU0MpLAotICAgICAgICBdKQotCi0KLWNsYXNz
IFRlc3RKU0NUZXN0c0ZhY3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2pzY19taXBzZWxf
ZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5KU0NUZXN0c0ZhY3Rv
cnkocGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVz
PVsibWlwc2VsIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBz
LCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwg
cGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsi
bWlwc2VsIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2Us
IHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9u
YWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
aGVja1BhdGNoUmVsZXZhbmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJp
bnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNo
ZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNr
T3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkRvd25s
b2FkQnVpbHRQcm9kdWN0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkV4
dHJhY3RCdWlsdFByb2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
S2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5S
dW5KYXZhU2NyaXB0Q29yZVRlc3RzKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X2pzY19h
cm12N19mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkpTQ1Rlc3Rz
RmFjdG9yeShwbGF0Zm9ybT0nanNjJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVj
dHVyZXM9WyJhcm12NyJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5z
dGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVp
bGQsIHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJl
cz1bImFybXY3Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFs
c2UsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0
aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5DaGVja1BhdGNoUmVsZXZhbmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0
ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
UHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNo
ZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkRv
d25sb2FkQnVpbHRQcm9kdWN0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkV4dHJhY3RCdWlsdFByb2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5SdW5KYXZhU2NyaXB0Q29yZVRlc3RzKSwKLSAgICAgICAgXSkKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVy
ZXMucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1i
dWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDc0ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24K
LQotCi1jbGFzcyBMYXlvdXRUZXN0RmFpbHVyZXMob2JqZWN0KToKLSAgICBfSlNPTl9QUkVGSVgg
PSAiQUREX1JFU1VMVFMoIgotICAgIF9KU09OX1NVRkZJWCA9ICIpOyIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmYWlsaW5nX3Rlc3RzLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCk6
Ci0gICAgICAgIHNlbGYuZmFpbGluZ190ZXN0cyA9IGZhaWxpbmdfdGVzdHMKLSAgICAgICAgc2Vs
Zi5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCA9IGRpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgaGFzX2pzb25fd3JhcHBlcihjbHMs
IHN0cmluZyk6Ci0gICAgICAgIHJldHVybiBzdHJpbmcuc3RhcnRzd2l0aChjbHMuX0pTT05fUFJF
RklYKSBhbmQgc3RyaW5nLmVuZHN3aXRoKGNscy5fSlNPTl9TVUZGSVgpCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgc3RyaXBfanNvbl93cmFwcGVyKGNscywganNvbl9jb250ZW50KToKLSAg
ICAgICAgaWYgY2xzLmhhc19qc29uX3dyYXBwZXIoanNvbl9jb250ZW50KToKLSAgICAgICAgICAg
IHJldHVybiBqc29uX2NvbnRlbnRbbGVuKGNscy5fSlNPTl9QUkVGSVgpOmxlbihqc29uX2NvbnRl
bnQpIC0gbGVuKGNscy5fSlNPTl9TVUZGSVgpXQotICAgICAgICByZXR1cm4ganNvbl9jb250ZW50
Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcmVzdWx0c19mcm9tX3N0cmluZyhjbHMsIHN0
cmluZyk6Ci0gICAgICAgIGlmIG5vdCBzdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQot
Ci0gICAgICAgIHN0cmluZyA9IHN0cmluZy5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBjbHMuaGFz
X2pzb25fd3JhcHBlcihzdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBjb250ZW50X3N0cmluZyA9IGNscy5zdHJpcF9qc29uX3dyYXBwZXIoc3RyaW5nKQotICAgICAg
ICAjIFdvcmthcm91bmQgZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9idWlsZGJvdC9p
c3N1ZXMvNDkwNgotICAgICAgICBjb250ZW50X3N0cmluZyA9ICcnLmpvaW4oY29udGVudF9zdHJp
bmcuc3BsaXRsaW5lcygpKQotICAgICAgICBqc29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRlbnRf
c3RyaW5nKQotCi0gICAgICAgIGZhaWxpbmdfdGVzdHMgPSBbXQotCi0gICAgICAgIGRlZiBnZXRf
ZmFpbGluZ190ZXN0cyh0ZXN0LCByZXN1bHQpOgotICAgICAgICAgICAgaWYgcmVzdWx0LmdldCgn
cmVwb3J0JykgaW4gWydSRUdSRVNTSU9OJywgJ01JU1NJTkcnXToKLSAgICAgICAgICAgICAgICBm
YWlsaW5nX3Rlc3RzLmFwcGVuZCh0ZXN0KQotCi0gICAgICAgIGNscy5wYXJzZV9mdWxsX3Jlc3Vs
dHNfanNvbihqc29uX2RpY3RbJ3Rlc3RzJ10sIGdldF9mYWlsaW5nX3Rlc3RzKQotICAgICAgICBy
ZXR1cm4gY2xzKGZhaWxpbmdfdGVzdHMsIGpzb25fZGljdC5nZXQoJ2ludGVycnVwdGVkJywgRmFs
c2UpKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHBhcnNlX2Z1bGxfcmVzdWx0c19qc29u
KGNscywgdHJlZSwgaGFuZGxlciwgcHJlZml4PScnKToKLSAgICAgICAgZm9yIGtleSBpbiB0cmVl
OgotICAgICAgICAgICAgbmV3X3ByZWZpeCA9IChwcmVmaXggKyAnLycgKyBrZXkpIGlmIHByZWZp
eCBlbHNlIGtleQotICAgICAgICAgICAgaWYgJ2FjdHVhbCcgbm90IGluIHRyZWVba2V5XToKLSAg
ICAgICAgICAgICAgICBjbHMucGFyc2VfZnVsbF9yZXN1bHRzX2pzb24odHJlZVtrZXldLCBoYW5k
bGVyLCBuZXdfcHJlZml4KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoYW5k
bGVyKG5ld19wcmVmaXgsIHRyZWVba2V5XSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1idWlsZC9sb2FkQ29uZmlnLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1idWlsZC9sb2FkQ29uZmlnLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbG9hZENvbmZpZy5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDIwMyArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUg
bWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0j
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIK
LSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotZnJvbSBidWls
ZGJvdC5zY2hlZHVsZXIgaW1wb3J0IEFueUJyYW5jaFNjaGVkdWxlciwgUGVyaW9kaWMsIERlcGVu
ZGVudCwgVHJpZ2dlcmFibGUsIE5pZ2h0bHkKLWZyb20gYnVpbGRib3Quc2NoZWR1bGVycy50cnlz
Y2hlZCBpbXBvcnQgVHJ5X1VzZXJwYXNzCi1mcm9tIGJ1aWxkYm90LndvcmtlciBpbXBvcnQgV29y
a2VyCi1mcm9tIGJ1aWxkYm90LnV0aWwgaW1wb3J0IGlkZW50aWZpZXJzIGFzIGJ1aWxkYm90X2lk
ZW50aWZpZXJzCi0KLWZyb20gZmFjdG9yaWVzIGltcG9ydCAoQVBJVGVzdHNGYWN0b3J5LCBCaW5k
aW5nc0ZhY3RvcnksIEJ1aWxkRmFjdG9yeSwgQ29tbWl0UXVldWVGYWN0b3J5LCBGYWN0b3J5LCBH
VEtCdWlsZEZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgIEdUS1Rlc3RzRmFjdG9yeSwg
SlNDQnVpbGRGYWN0b3J5LCBKU0NCdWlsZEFuZFRlc3RzRmFjdG9yeSwgSlNDVGVzdHNGYWN0b3J5
LCBTdHlsZUZhY3RvcnksIFRlc3RGYWN0b3J5LCB0dk9TQnVpbGRGYWN0b3J5LAotICAgICAgICAg
ICAgICAgICAgICAgICBXUEVGYWN0b3J5LCBXZWJLaXRQZXJsRmFjdG9yeSwgV2ViS2l0UHlGYWN0
b3J5LCBXaW5DYWlyb0ZhY3RvcnksIFdpbmRvd3NGYWN0b3J5LCBpT1NCdWlsZEZhY3RvcnksIGlP
U0VtYmVkZGVkQnVpbGRGYWN0b3J5LCBpT1NUZXN0c0ZhY3RvcnksCi0gICAgICAgICAgICAgICAg
ICAgICAgIG1hY09TQnVpbGRGYWN0b3J5LCBtYWNPU0J1aWxkT25seUZhY3RvcnksIG1hY09TV0sx
RmFjdG9yeSwgbWFjT1NXSzJGYWN0b3J5LCBTZXJ2aWNlc0ZhY3RvcnksIFdhdGNoTGlzdEZhY3Rv
cnksIHdhdGNoT1NCdWlsZEZhY3RvcnkpCi0KLUJVSUxERVJfTkFNRV9MRU5HVEhfTElNSVQgPSA3
MAotU1RFUF9OQU1FX0xFTkdUSF9MSU1JVCA9IDUwCi0KLQotZGVmIGxvYWRCdWlsZGVyQ29uZmln
KGMsIGlzX3Rlc3RfbW9kZV9lbmFibGVkPUZhbHNlLCBtYXN0ZXJfcHJlZml4X3BhdGg9Jy4vJyk6
Ci0gICAgY29uZmlnID0ganNvbi5sb2FkKG9wZW4ob3MucGF0aC5qb2luKG1hc3Rlcl9wcmVmaXhf
cGF0aCwgJ2NvbmZpZy5qc29uJykpKQotICAgIHVzZV9sb2NhbGhvc3Rfd29ya2VyID0gaXNfdGVz
dF9tb2RlX2VuYWJsZWQKLSAgICBpZiBpc190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICAgICAgcGFz
c3dvcmRzID0ge30KLSAgICBlbHNlOgotICAgICAgICBwYXNzd29yZHMgPSBqc29uLmxvYWQob3Bl
bihvcy5wYXRoLmpvaW4obWFzdGVyX3ByZWZpeF9wYXRoLCAncGFzc3dvcmRzLmpzb24nKSkpCi0K
LSAgICBjaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KGNvbmZpZywgY29uZmln
Wyd3b3JrZXJzJ10sIGNvbmZpZ1snYnVpbGRlcnMnXSkKLSAgICBjaGVja1ZhbGlkU2NoZWR1bGVy
cyhjb25maWcsIGNvbmZpZ1snc2NoZWR1bGVycyddKQotCi0gICAgY1snd29ya2VycyddID0gW1dv
cmtlcih3b3JrZXJbJ25hbWUnXSwgcGFzc3dvcmRzLmdldCh3b3JrZXJbJ25hbWUnXSwgJ3Bhc3N3
b3JkJyksIG1heF9idWlsZHM9d29ya2VyLmdldCgnbWF4X2J1aWxkcycsIDEpKSBmb3Igd29ya2Vy
IGluIGNvbmZpZ1snd29ya2VycyddXQotICAgIGlmIHVzZV9sb2NhbGhvc3Rfd29ya2VyOgotICAg
ICAgICBjWyd3b3JrZXJzJ10uYXBwZW5kKFdvcmtlcignbG9jYWwtd29ya2VyJywgJ3Bhc3N3b3Jk
JywgbWF4X2J1aWxkcz0xKSkKLQotICAgIGNbJ2J1aWxkZXJzJ10gPSBbXQotICAgIGZvciBidWls
ZGVyIGluIGNvbmZpZ1snYnVpbGRlcnMnXToKLSAgICAgICAgYnVpbGRlclsndGFncyddID0gZ2V0
VGFnc0ZvckJ1aWxkZXIoYnVpbGRlcikKLSAgICAgICAgZmFjdG9yeSA9IGdsb2JhbHMoKVtidWls
ZGVyWydmYWN0b3J5J11dCi0gICAgICAgIGJ1aWxkZXJbJ2Rlc2NyaXB0aW9uJ10gPSBidWlsZGVy
LnBvcCgnc2hvcnRuYW1lJykKLSAgICAgICAgaWYgJ2ljb24nIGluIGJ1aWxkZXI6Ci0gICAgICAg
ICAgICBkZWwgYnVpbGRlclsnaWNvbiddCi0gICAgICAgIGZhY3Rvcnlrd2FyZ3MgPSB7fQotICAg
ICAgICBmb3Iga2V5IGluIFsncGxhdGZvcm0nLCAnY29uZmlndXJhdGlvbicsICdhcmNoaXRlY3R1
cmVzJywgJ3RyaWdnZXJzJywgJ3JlbW90ZXMnLCAnYWRkaXRpb25hbEFyZ3VtZW50cycsICdydW5U
ZXN0cycsICd0cmlnZ2VyZWRfYnknXToKLSAgICAgICAgICAgIHZhbHVlID0gYnVpbGRlci5wb3Ao
a2V5LCBOb25lKQotICAgICAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICAgICAgZmFjdG9y
eWt3YXJnc1trZXldID0gdmFsdWUKLQotICAgICAgICBidWlsZGVyWydmYWN0b3J5J10gPSBmYWN0
b3J5KCoqZmFjdG9yeWt3YXJncykKLQotICAgICAgICBpZiB1c2VfbG9jYWxob3N0X3dvcmtlcjoK
LSAgICAgICAgICAgIGJ1aWxkZXJbJ3dvcmtlcm5hbWVzJ10uYXBwZW5kKCdsb2NhbC13b3JrZXIn
KQotCi0gICAgICAgIGNbJ2J1aWxkZXJzJ10uYXBwZW5kKGJ1aWxkZXIpCi0KLSAgICBjWydwcmlv
cml0aXplQnVpbGRlcnMnXSA9IHByaW9yaXRpemVCdWlsZGVycwotICAgIGNbJ3NjaGVkdWxlcnMn
XSA9IFtdCi0gICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWdbJ3NjaGVkdWxlcnMnXToKLSAgICAg
ICAgc2NoZWR1bGVyQ2xhc3NOYW1lID0gc2NoZWR1bGVyLnBvcCgndHlwZScpCi0gICAgICAgIHNj
aGVkdWxlckNsYXNzID0gZ2xvYmFscygpW3NjaGVkdWxlckNsYXNzTmFtZV0KLSAgICAgICAgIyBQ
eXRob24gMi42IGNhbid0IGhhbmRsZSB1bmljb2RlIGtleXMgYXMga2V5d29yZCBhcmd1bWVudHM6
Ci0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2NDYuICBNb2Rlcm4gdmVy
c2lvbnMgb2YganNvbiByZXR1cm4KLSAgICAgICAgIyB1bmljb2RlIHN0cmluZ3MgZnJvbSBqc29u
LmxvYWQsIHNvIHdlIG1hcCBhbGwga2V5cyB0byBzdHIgb2JqZWN0cy4KLSAgICAgICAgc2NoZWR1
bGVyID0gZGljdChtYXAobGFtYmRhIGtleV92YWx1ZV9wYWlyOiAoc3RyKGtleV92YWx1ZV9wYWly
WzBdKSwga2V5X3ZhbHVlX3BhaXJbMV0pLCBzY2hlZHVsZXIuaXRlbXMoKSkpCi0gICAgICAgIGlm
IChzY2hlZHVsZXJDbGFzc05hbWUgPT0gJ1RyeV9Vc2VycGFzcycpOgotICAgICAgICAgICAgIyBG
SVhNRTogUmVhZCB0aGUgY3JlZGVudGlhbHMgZnJvbSBsb2NhbCBmaWxlIG9uIGRpc2suCi0gICAg
ICAgICAgICBzY2hlZHVsZXJbJ3VzZXJwYXNzJ10gPSBbKG9zLmdldGVudignQlVJTERCT1RfVFJZ
X1VTRVJOQU1FJywgJ3NhbXBsZXVzZXInKSwgb3MuZ2V0ZW52KCdCVUlMREJPVF9UUllfUEFTU1dP
UkQnLCAnc2FtcGxlcGFzcycpKV0KLSAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChzY2hl
ZHVsZXJDbGFzcygqKnNjaGVkdWxlcikpCi0KLQotZGVmIHByaW9yaXRpemVCdWlsZGVycyhidWls
ZG1hc3RlciwgYnVpbGRlcnMpOgotICAgICMgUHJpb3JpdGl6ZSBidWlsZGVyIHF1ZXVlcyBvdmVy
IHRlc3RlciBxdWV1ZXMKLSAgICBidWlsZGVycy5zb3J0KGtleT1sYW1iZGEgYjogJ2J1aWxkJyBp
biBiLm5hbWUubG93ZXIoKSwgcmV2ZXJzZT1UcnVlKQotICAgIHJldHVybiBidWlsZGVycwotCi0K
LWRlZiBjaGVja1ZhbGlkV29ya2VyKHdvcmtlcik6Ci0gICAgaWYgbm90IHdvcmtlcjoKLSAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdXb3JrZXIgaXMgTm9uZSBvciBFbXB0eS4nKQotCi0gICAgaWYg
bm90IHdvcmtlci5nZXQoJ25hbWUnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdXb3JrZXIg
Int9IiBkb2VzIG5vdCBoYXZlIG5hbWUgZGVmaW5lZC4nLmZvcm1hdCh3b3JrZXIpKQotCi0gICAg
aWYgbm90IHdvcmtlci5nZXQoJ3BsYXRmb3JtJyk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
V29ya2VyIHt9IGRvZXMgbm90IGhhdmUgcGxhdGZvcm0gZGVmaW5lZC4nLmZvcm1hdCh3b3JrZXJb
J25hbWUnXSkpCi0KLQotZGVmIGNoZWNrVmFsaWRCdWlsZGVyKGNvbmZpZywgYnVpbGRlcik6Ci0g
ICAgaWYgbm90IGJ1aWxkZXI6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBpcyBO
b25lIG9yIEVtcHR5LicpCi0KLSAgICBpZiBub3QgYnVpbGRlci5nZXQoJ25hbWUnKToKLSAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdCdWlsZGVyICJ7fSIgZG9lcyBub3QgaGF2ZSBuYW1lIGRlZmlu
ZWQuJy5mb3JtYXQoYnVpbGRlcikpCi0KLSAgICBpZiBub3QgYnVpbGRlci5nZXQoJ3Nob3J0bmFt
ZScpOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0J1aWxkZXIgInt9IiBkb2VzIG5vdCBoYXZl
IHNob3J0IG5hbWUgZGVmaW5lZC4gVGhpcyBuYW1lIGlzIG5lZWRlZCBmb3IgRVdTIHN0YXR1cyBi
dWJibGVzLicuZm9ybWF0KGJ1aWxkZXIuZ2V0KCduYW1lJykpKQotCi0gICAgaWYgbm90IGJ1aWxk
Ym90X2lkZW50aWZpZXJzLmlkZW50X3JlLm1hdGNoKGJ1aWxkZXJbJ25hbWUnXSk6Ci0gICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBuYW1lIHt9IGlzIG5vdCBhIHZhbGlkIGJ1aWxkYm90
IGlkZW50aWZpZXIuJy5mb3JtYXQoYnVpbGRlclsnbmFtZSddKSkKLQotICAgIGlmIGxlbihidWls
ZGVyWyduYW1lJ10pID4gQlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVDoKLSAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdCdWlsZGVyIG5hbWUge30gaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2Vk
IGJ5IEJ1aWxkYm90ICh7fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChidWlsZGVyWyduYW1lJ10sIEJV
SUxERVJfTkFNRV9MRU5HVEhfTElNSVQpKQotCi0gICAgaWYgJ2NvbmZpZ3VyYXRpb24nIGluIGJ1
aWxkZXIgYW5kIGJ1aWxkZXJbJ2NvbmZpZ3VyYXRpb24nXSBub3QgaW4gWydkZWJ1ZycsICdwcm9k
dWN0aW9uJywgJ3JlbGVhc2UnXToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNv
bmZpZ3VyYXRpb246IHt9IGZvciBidWlsZGVyOiB7fScuZm9ybWF0KGJ1aWxkZXIuZ2V0KCdjb25m
aWd1cmF0aW9uJyksIGJ1aWxkZXIuZ2V0KCduYW1lJykpKQotCi0gICAgaWYgbm90IGJ1aWxkZXIu
Z2V0KCdmYWN0b3J5Jyk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciB7fSBkb2Vz
IG5vdCBoYXZlIGZhY3RvcnkgZGVmaW5lZC4nLmZvcm1hdChidWlsZGVyWyduYW1lJ10pKQotCi0g
ICAgaWYgbm90IGJ1aWxkZXIuZ2V0KCdwbGF0Zm9ybScpOgotICAgICAgICByYWlzZSBFeGNlcHRp
b24oJ0J1aWxkZXIge30gZG9lcyBub3QgaGF2ZSBwbGF0Zm9ybSBkZWZpbmVkLicuZm9ybWF0KGJ1
aWxkZXJbJ25hbWUnXSkpCi0KLSAgICBmb3IgdHJpZ2dlciBpbiBidWlsZGVyLmdldCgndHJpZ2dl
cnMnKSBvciBbXToKLSAgICAgICAgaWYgbm90IGRvZXNUcmlnZ2VyRXhpc3QoY29uZmlnLCB0cmln
Z2VyKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVHJpZ2dlcjoge30gaW4gYnVpbGRl
ciB7fSBkb2VzIG5vdCBleGlzdCBpbiBsaXN0IG9mIFRyaWdlcnJhYmxlIHNjaGVkdWxlcnMuJy5m
b3JtYXQodHJpZ2dlciwgYnVpbGRlclsnbmFtZSddKSkKLQotCi1kZWYgY2hlY2tWYWxpZFNjaGVk
dWxlcnMoY29uZmlnLCBzY2hlZHVsZXJzKToKLSAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZy5n
ZXQoJ3NjaGVkdWxlcnMnKSBvciBbXToKLSAgICAgICAgaWYgc2NoZWR1bGVyLmdldCgndHlwZScp
ID09ICdUcmlnZ2VyYWJsZSc6Ci0gICAgICAgICAgICBpZiBub3QgaXNUcmlnZ2VyVXNlZEJ5QW55
QnVpbGRlcihjb25maWcsIHNjaGVkdWxlclsnbmFtZSddKSBhbmQgJ2J1aWxkJyBub3QgaW4gc2No
ZWR1bGVyWyduYW1lJ10ubG93ZXIoKToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J1RyaWdnZXI6IHt9IGlzIG5vdCB1c2VkIGJ5IGFueSBidWlsZGVyIGluIGNvbmZpZy5qc29uJy5m
b3JtYXQoc2NoZWR1bGVyWyduYW1lJ10pKQotCi0KLWRlZiBkb2VzVHJpZ2dlckV4aXN0KGNvbmZp
ZywgdHJpZ2dlcik6Ci0gICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcuZ2V0KCdzY2hlZHVsZXJz
Jykgb3IgW106Ci0gICAgICAgIGlmIHNjaGVkdWxlclsnbmFtZSddID09IHRyaWdnZXI6Ci0gICAg
ICAgICAgICByZXR1cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBpc1RyaWdnZXJV
c2VkQnlBbnlCdWlsZGVyKGNvbmZpZywgdHJpZ2dlcik6Ci0gICAgZm9yIGJ1aWxkZXIgaW4gY29u
ZmlnLmdldCgnYnVpbGRlcnMnKToKLSAgICAgICAgaWYgdHJpZ2dlciBpbiAoYnVpbGRlci5nZXQo
J3RyaWdnZXJzJykgb3IgW10pOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4g
RmFsc2UKLQotCi1kZWYgY2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0ZW5jeShjb25m
aWcsIHdvcmtlcnMsIGJ1aWxkZXJzKToKLSAgICBkZWYgX2ZpbmRfd29ya2VyX3dpdGhfbmFtZSh3
b3JrZXJzLCB3b3JrZXJfbmFtZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgZm9y
IHdvcmtlciBpbiB3b3JrZXJzOgotICAgICAgICAgICAgaWYgd29ya2VyWyduYW1lJ10gPT0gd29y
a2VyX25hbWU6Ci0gICAgICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gd29ya2VyCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdEdXBsaWNhdGUgd29ya2VyIGVudHJ5IGZvdW5kIGZv
ciB7fS4nLmZvcm1hdCh3b3JrZXJbJ25hbWUnXSkpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQot
ICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKLSAgICAgICAgY2hlY2tWYWxpZFdvcmtlcih3b3Jr
ZXIpCi0KLSAgICBmb3IgYnVpbGRlciBpbiBidWlsZGVyczoKLSAgICAgICAgY2hlY2tWYWxpZEJ1
aWxkZXIoY29uZmlnLCBidWlsZGVyKQotICAgICAgICBmb3Igd29ya2VyX25hbWUgaW4gYnVpbGRl
clsnd29ya2VybmFtZXMnXToKLSAgICAgICAgICAgIHdvcmtlciA9IF9maW5kX3dvcmtlcl93aXRo
X25hbWUod29ya2Vycywgd29ya2VyX25hbWUpCi0gICAgICAgICAgICBpZiB3b3JrZXIgaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0J1aWxkZXIge30gaGFzIHdvcmtl
ciB7fSwgd2hpY2ggaXMgbm90IGRlZmluZWQgaW4gd29ya2VycyBsaXN0IScuZm9ybWF0KGJ1aWxk
ZXJbJ25hbWUnXSwgd29ya2VyX25hbWUpKQotCi0gICAgICAgICAgICBpZiB3b3JrZXJbJ3BsYXRm
b3JtJ10gIT0gYnVpbGRlclsncGxhdGZvcm0nXSBhbmQgd29ya2VyWydwbGF0Zm9ybSddICE9ICcq
JyBhbmQgYnVpbGRlclsncGxhdGZvcm0nXSAhPSAnKic6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdCdWlsZGVyIHswfSBpcyBmb3IgcGxhdGZvcm0gezF9LCBidXQgaGFzIHdvcmtl
ciB7Mn0gZm9yIHBsYXRmb3JtIHszfSEnLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgYnVp
bGRlclsnbmFtZSddLCBidWlsZGVyWydwbGF0Zm9ybSddLCB3b3JrZXJbJ25hbWUnXSwgd29ya2Vy
WydwbGF0Zm9ybSddKSkKLQotCi1kZWYgZ2V0SW52YWxpZFRhZ3MoKToKLSAgICAiIiIKLSAgICBX
ZSBtYWludGFpbiBhIGxpc3Qgb2Ygd29yZHMgd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gZGlzcGxh
eSBhcyB0YWcgaW4gYnVpbGRib3QuCi0gICAgV2UgZ2VuZXJhdGUgYSBsaXN0IG9mIHRhZ3MgYnkg
c3BsaXR0aW5nIHRoZSBidWlsZGVyIG5hbWUuIFdlIGRvIG5vdCB3YW50IGNlcnRhaW4gd29yZHMg
YXMgdGFnLgotICAgIEZvciBlLmcuIHdlIGRvbid0IHdhbnQgJzExJ2FzIHRhZyBmb3IgYnVpbGRl
ciBpT1MtMTEtU2ltdWxhdG9yLUVXUwotICAgICIiIgotICAgIGludmFsaWRfdGFncyA9IFtzdHIo
aSkgZm9yIGkgaW4geHJhbmdlKDAsIDIwKV0KLSAgICBpbnZhbGlkX3RhZ3MuZXh0ZW5kKFsnRVdT
JywgJ1RyeUJvdCddKQotICAgIHJldHVybiBpbnZhbGlkX3RhZ3MKLQotCi1kZWYgZ2V0VmFsaWRU
YWdzKHRhZ3MpOgotICAgIHJldHVybiBsaXN0KHNldCh0YWdzKSAtIHNldChnZXRJbnZhbGlkVGFn
cygpKSkKLQotCi1kZWYgZ2V0VGFnc0ZvckJ1aWxkZXIoYnVpbGRlcik6Ci0gICAga2V5d29yZHMg
PSBmaWx0ZXIoTm9uZSwgcmUuc3BsaXQoJ1ssIFwtXzooKV0rJywgc3RyKGJ1aWxkZXJbJ25hbWUn
XSkpKQotICAgIHJldHVybiBnZXRWYWxpZFRhZ3Moa2V5d29yZHMpCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbG9hZENvbmZpZ191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbG9hZENvbmZpZ191bml0dGVz
dC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1
aWxkL2xvYWRDb25maWdfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzkgKzAsMCBA
QAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRl
c3QKLQotaW1wb3J0IGxvYWRDb25maWcKLQotCi1jbGFzcyBDb25maWdEb3RKU09OVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGdldF9jb25maWcoc2VsZik6Ci0gICAgICAgIGN3ZCA9
IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICByZXR1
cm4ganNvbi5sb2FkKG9wZW4ob3MucGF0aC5qb2luKGN3ZCwgJ2NvbmZpZy5qc29uJykpKQotCi0g
ICAgZGVmIGdldF9idWlsZGVyX2Zyb21fY29uZmlnKHNlbGYsIGNvbmZpZywgYnVpbGRlcl9uYW1l
KToKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAgICAg
ICAgaWYgYnVpbGRlcl9uYW1lID09IGJ1aWxkZXIuZ2V0KCduYW1lJyk6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGJ1aWxkZXIKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0g
ICAgICAgIGN3ZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQot
ICAgICAgICBsb2FkQ29uZmlnLmxvYWRCdWlsZGVyQ29uZmlnKHt9LCBpc190ZXN0X21vZGVfZW5h
YmxlZD1UcnVlLCBtYXN0ZXJfcHJlZml4X3BhdGg9Y3dkKQotCi0gICAgZGVmIHRlc3RfYnVpbGRl
cl9rZXlzKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAg
ICB2YWxpZF9idWlsZGVyX2tleXMgPSBbJ2FkZGl0aW9uYWxBcmd1bWVudHMnLCAnYXJjaGl0ZWN0
dXJlcycsICdidWlsZGRpcicsICdjb25maWd1cmF0aW9uJywgJ2Rlc2NyaXB0aW9uJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0UHJvcGVydGllcycsICdlbnYnLCAnZmFj
dG9yeScsICdpY29uJywgJ2xvY2tzJywgJ25hbWUnLCAncGxhdGZvcm0nLCAncHJvcGVydGllcycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVtb3RlcycsICdydW5UZXN0cycsICdz
aG9ydG5hbWUnLCAndGFncycsICd0cmlnZ2VycycsICd0cmlnZ2VyZWRfYnknLCAnd29ya2VybmFt
ZXMnLCAnd29ya2VyYnVpbGRkaXInXQotICAgICAgICBmb3IgYnVpbGRlciBpbiBjb25maWcuZ2V0
KCdidWlsZGVycycsIFtdKToKLSAgICAgICAgICAgIGZvciBrZXkgaW4gYnVpbGRlcjoKLSAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoa2V5IGluIHZhbGlkX2J1aWxkZXJfa2V5cywgJ1Vu
ZXhwZWN0ZWQga2V5ICJ7fSIgZm9yIGJ1aWxkZXIge30nLmZvcm1hdChrZXksIGJ1aWxkZXIuZ2V0
KCduYW1lJykpKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfc2NoZWR1ZXJzX2Zvcl9idWlsZGVy
KHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICBidWls
ZGVyX3RvX3NjaGR1bGVyX21hcCA9IHt9Ci0gICAgICAgIHRyaWdnZXJlZF9ieV9zY2hlZHVsZXJz
ID0gW10KLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAg
ICAgICAgdHJpZ2dlcmVkX2J5ID0gYnVpbGRlci5nZXQoJ3RyaWdnZXJlZF9ieScpCi0gICAgICAg
ICAgICBpZiB0cmlnZ2VyZWRfYnk6Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcmVkX2J5X3NjaGVk
dWxlcnMuZXh0ZW5kKHRyaWdnZXJlZF9ieSkKLQotICAgICAgICBmb3Igc2NoZWR1bGVyIGluIGNv
bmZpZy5nZXQoJ3NjaGVkdWxlcnMnKToKLSAgICAgICAgICAgIGlmIHNjaGVkdWxlclsnbmFtZSdd
IGluIHRyaWdnZXJlZF9ieV9zY2hlZHVsZXJzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0g
ICAgICAgICAgICBmb3IgYnVpbGRlcm5hbWUgaW4gc2NoZWR1bGVyLmdldCgnYnVpbGRlck5hbWVz
Jyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJuYW1lIG5vdCBpbiBi
dWlsZGVyX3RvX3NjaGR1bGVyX21hcCwgJ2J1aWxkZXIge30gYXBwZWFycyBtdWx0aXBsZSB0aW1l
cyBpbiBzY2hlZHVsZXJzLicuZm9ybWF0KGJ1aWxkZXJuYW1lKSkKLSAgICAgICAgICAgICAgICBi
dWlsZGVyX3RvX3NjaGR1bGVyX21hcFtidWlsZGVybmFtZV0gPSBzY2hlZHVsZXIuZ2V0KCduYW1l
JykKLQotICAgIGRlZiB0ZXN0X3NjaGR1bGVyX2NvbnRhaW5zX3ZhbGlkX2J1aWxkZXJfbmFtZShz
ZWxmKToKLSAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKLSAgICAgICAgYnVpbGRl
cl9uYW1lX2xpc3QgPSBbYnVpbGRlclsnbmFtZSddIGZvciBidWlsZGVyIGluIGNvbmZpZ1snYnVp
bGRlcnMnXV0KLSAgICAgICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcuZ2V0KCdzY2hlZHVsZXJz
Jyk6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlcm5hbWUgaW4gc2NoZWR1bGVyLmdldCgnYnVpbGRl
ck5hbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJuYW1lIGlu
IGJ1aWxkZXJfbmFtZV9saXN0LCAnYnVpbGRlciAie30iIGluIHNjaGVkdWxlciAie30iIGlzIGlu
dmFsaWQuJy5mb3JtYXQoYnVpbGRlcm5hbWUsIHNjaGVkdWxlclsnbmFtZSddKSkKLQotICAgIGRl
ZiB0ZXN0X3NpbmdsZV9idWlsZGVyX2Zvcl90cmlnZ2VyYWJsZV9zY2hlZHVsZXIoc2VsZik6Ci0g
ICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCi0gICAgICAgIGZvciBzY2hlZHVsZXIg
aW4gY29uZmlnWydzY2hlZHVsZXJzJ106Ci0gICAgICAgICAgICBpZiBzY2hlZHVsZXIuZ2V0KCd0
eXBlJykgPT0gJ1RyaWdnZXJhYmxlJzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUo
bGVuKHNjaGVkdWxlci5nZXQoJ2J1aWxkZXJOYW1lcycpKSA9PSAxLCAnc2NoZWR1bGVyICJ7fSIg
dHJpZ2dlcnMgbXVsdGlwbGUgYnVpbGRlcnMuJy5mb3JtYXQoc2NoZWR1bGVyWyduYW1lJ10pKQot
Ci0gICAgZGVmIHRlc3RfaW5jb3JyZWN0X3RyaWdnZXJlZF9ieShzZWxmKToKLSAgICAgICAgY29u
ZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKLSAgICAgICAgc2NoZWR1bGVyc190b19idWlsZGVybmFt
ZV9tYXAgPSB7fQotICAgICAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZ1snc2NoZWR1bGVycydd
OgotICAgICAgICAgICAgc2NoZWR1bGVyc190b19idWlsZGVybmFtZV9tYXBbc2NoZWR1bGVyWydu
YW1lJ11dID0gc2NoZWR1bGVyWydidWlsZGVyTmFtZXMnXQotCi0gICAgICAgIGZvciBidWlsZGVy
IGluIGNvbmZpZ1snYnVpbGRlcnMnXToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGJ1
aWxkZXIuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgaWYga2V5ID09ICd0cmlnZ2VyZWRf
YnknOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHZhbHVlKSA9PSAx
LCAndHJpZ2dlcmVkX2J5ICJ7fSIgaXMgaW52YWxpZCwgaXQgc2hvdWxkIGNvbnRhaW4gYSBzaW5n
bGUgdHJpZ2dlci4nLmZvcm1hdCh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSh2YWx1ZVswXSBpbiBzY2hlZHVsZXJzX3RvX2J1aWxkZXJuYW1lX21hcC5rZXlzKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJpZ2dlcmVkX2J5ICJ7fSIg
Zm9yIGJ1aWxkZXIgInt9IiBpcyBub3QgbGlzdGVkIGluIHNjaGVkdWxlcnMgc2VjdGlvbi4nLmZv
cm1hdCh2YWx1ZVswXSwgYnVpbGRlclsnbmFtZSddKSkKLQotICAgICAgICAgICAgICAgICAgICAj
IEVuc3VyZSB0aGF0IHRoZSB0cmlnZ2VyZWRfYnkgaXMgY29ycmVjdCwgdmVyaWZ5IGJ5IG1hdGNo
aW5nIHRoYXQgdGhlIGJ1aWxkZXIgZm9yIHRoZSB0cmlnZ2VyZWRfYnkgc2NoZWR1bGVyIGFjdHVh
bGx5IHRyaWdnZXJzIGN1cnJlbnQgYnVpbGRlcgotICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vy
ZWRfYnkgPSB2YWx1ZVswXQotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyaW5nX2J1aWxkZXJf
bmFtZSA9IHNjaGVkdWxlcnNfdG9fYnVpbGRlcm5hbWVfbWFwLmdldCh0cmlnZ2VyZWRfYnkpWzBd
Ci0gICAgICAgICAgICAgICAgICAgIHRyaWdnZXJpbmdfYnVpbGRlciA9IHNlbGYuZ2V0X2J1aWxk
ZXJfZnJvbV9jb25maWcoY29uZmlnLCB0cmlnZ2VyaW5nX2J1aWxkZXJfbmFtZSkKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRyaWdnZXJpbmdfYnVpbGRlciwgJ2J1aWxkZXIg
Int9IiBpbiBzY2hlZHVsZXIgInt9IiBpcyBpbnZhbGlkLicuZm9ybWF0KHRyaWdnZXJpbmdfYnVp
bGRlcl9uYW1lLCB0cmlnZ2VyZWRfYnkpKQotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyaW5n
X2J1aWxkZXJfdHJpZ2dlcnMgPSB0cmlnZ2VyaW5nX2J1aWxkZXIuZ2V0KCd0cmlnZ2VycycpCi0g
ICAgICAgICAgICAgICAgICAgIHRyaWdnZXJpbmdfYnVpbGRlcl90cmlnZ2Vyc19idWlsZGVybmFt
ZXMgPSBbc2NoZWR1bGVyc190b19idWlsZGVybmFtZV9tYXBbc2NoZWR1bGVyXVswXSBmb3Igc2No
ZWR1bGVyIGluIHRyaWdnZXJpbmdfYnVpbGRlcl90cmlnZ2Vyc10KLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJbJ25hbWUnXSBpbiB0cmlnZ2VyaW5nX2J1aWxkZXJf
dHJpZ2dlcnNfYnVpbGRlcm5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ0luY29ycmVjdCB0cmlnZ2VyZWRfYnkgInt9IiBpbiBidWlsZGVyICJ7fSIsIHRoaXMgYnVp
bGRlciBpcyBub3QgaW4gY29ycmVzcG9uZGluZyBidWlsZGVyIHRyaWdnZXJzICJ7fSIuJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZvcm1hdCh0cmlnZ2VyZWRfYnksIGJ1
aWxkZXJbJ25hbWUnXSwgdHJpZ2dlcmluZ19idWlsZGVyX3RyaWdnZXJzX2J1aWxkZXJuYW1lcykp
Ci0KLQotY2xhc3MgVGFnc0ZvckJ1aWxkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgdmVyaWZ5VGFncyhzZWxmLCBidWlsZGVyTmFtZSwgZXhwZWN0ZWRUYWdzKToKLSAgICAgICAg
dGFncyA9IGxvYWRDb25maWcuZ2V0VGFnc0ZvckJ1aWxkZXIoeyduYW1lJzogYnVpbGRlck5hbWV9
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh0YWdzKSwgc29ydGVkKGV4cGVjdGVk
VGFncykpCi0KLSAgICBkZWYgdGVzdF9nZXRUYWdzRm9yQnVpbGRlcihzZWxmKToKLSAgICAgICAg
c2VsZi52ZXJpZnlUYWdzKCdFV1MnLCBbXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdUcnlC
b3QtMTAtRVdTJywgW10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnMTEtRVdTJywgW10pCi0g
ICAgICAgIHNlbGYudmVyaWZ5VGFncygnMzItRVdTJywgWyczMiddKQotICAgICAgICBzZWxmLnZl
cmlmeVRhZ3MoJ2lPUy0xMS1FV1MnLCBbJ2lPUyddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3Mo
J2lPUygxMSksKHRlc3QpLUVXUycsIFsnaU9TJywgJ3Rlc3QnXSkKLSAgICAgICAgc2VsZi52ZXJp
ZnlUYWdzKCdXaW5kb3dzLUVXUycsIFsnV2luZG93cyddKQotICAgICAgICBzZWxmLnZlcmlmeVRh
Z3MoJ1dpbmRvd3NfV2luZG93cycsIFsnV2luZG93cyddKQotICAgICAgICBzZWxmLnZlcmlmeVRh
Z3MoJ0dUSy1CdWlsZC1FV1MnLCBbJ0dUSycsICdCdWlsZCddKQotICAgICAgICBzZWxmLnZlcmlm
eVRhZ3MoJ0dUSy1XSzItVGVzdHMtRVdTJywgWydHVEsnLCAnV0syJywgJ1Rlc3RzJ10pCi0gICAg
ICAgIHNlbGYudmVyaWZ5VGFncygnbWFjT1MtU2llcnJhLVJlbGVhc2UtV0sxLUVXUycsIFsnU2ll
cnJhJywgJ1JlbGVhc2UnLCAnbWFjT1MnLCAnV0sxJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFn
cygnbWFjT1MtSGlnaC1TaWVycmEtUmVsZWFzZS0zMmJpdC1XSzItRVdTJywgWydtYWNPUycsICdI
aWdoJywgJ1NpZXJyYScsICdSZWxlYXNlJywgJ1dLMicsICczMmJpdCddKQotCi0gICAgZGVmIHRl
c3RfdGFnc190eXBlKHNlbGYpOgotICAgICAgICB0YWdzID0gbG9hZENvbmZpZy5nZXRUYWdzRm9y
QnVpbGRlcih7J25hbWUnOiB1J2lPUy0xMS1FV1MnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0YWdzLCBbJ2lPUyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodGFnc1swXSks
IHN0cikKLQotICAgIGRlZiB0ZXN0X2dldEludmFsaWRUYWdzKHNlbGYpOgotICAgICAgICBpbnZh
bGlkVGFncyA9IGxvYWRDb25maWcuZ2V0SW52YWxpZFRhZ3MoKQotICAgICAgICBleHBlY3RlZFRh
Z3MgPSBbJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAn
MTAnLAotICAgICAgICAgICAgICAgICAgICAgICAgJzExJywgJzEyJywgJzEzJywgJzE0JywgJzE1
JywgJzE2JywgJzE3JywgJzE4JywgJzE5JywgJ0VXUycsICdUcnlCb3QnXQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGludmFsaWRUYWdzLCBleHBlY3RlZFRhZ3MpCi0KLQotY2xhc3MgVGVzdGNo
ZWNrVmFsaWRXb3JrZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ludmFsaWRf
d29ya2VyKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikg
YXMgY29udGV4dDoKLSAgICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tWYWxpZFdvcmtlcih7fSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAoJ1dvcmtl
ciBpcyBOb25lIG9yIEVtcHR5LicsKSkKLQotICAgIGRlZiB0ZXN0X3dvcmtlcl93aXRoX21pc3Np
bmdfbmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24p
IGFzIGNvbnRleHQ6Ci0gICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRXb3JrZXIoeydw
bGF0Zm9ybSc6ICdtYWMtc2llcnJhJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4
dC5leGNlcHRpb24uYXJncywgKCdXb3JrZXIgIntcJ3BsYXRmb3JtXCc6IFwnbWFjLXNpZXJyYVwn
fSIgZG9lcyBub3QgaGF2ZSBuYW1lIGRlZmluZWQuJywpKQotCi0gICAgZGVmIHRlc3Rfd29ya2Vy
X3dpdGhfbWlzc2luZ19wbGF0TmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJh
aXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0gICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNr
VmFsaWRXb3JrZXIoeyduYW1lJzogJ2V3czEwMSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnV29ya2VyIGV3czEwMSBkb2VzIG5vdCBoYXZlIHBs
YXRmb3JtIGRlZmluZWQuJywpKQotCi0gICAgZGVmIHRlc3RfdmFsaWRfd29ya2VyKHNlbGYpOgot
ICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRXb3JrZXIoeyduYW1lJzogJ2V3czEwMScsICdw
bGF0Zm9ybSc6ICdtYWMtc2llcnJhJ30pCi0KLQotY2xhc3MgVGVzdGNoZWNrVmFsaWRCdWlsZGVy
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9pbnZhbGlkX2J1aWxkZXIoc2VsZik6
Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0Ogot
ICAgICAgICAgICAgbG9hZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwge30pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5leGNlcHRpb24uYXJncywgKCdCdWlsZGVyIGlzIE5v
bmUgb3IgRW1wdHkuJywpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX21pc3NpbmdfbmFt
ZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNv
bnRleHQ6Ci0gICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J3Bs
YXRmb3JtJzogJ21hYy1zaWVycmEnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0
LmV4Y2VwdGlvbi5hcmdzLCAoJ0J1aWxkZXIgIntcJ3BsYXRmb3JtXCc6IFwnbWFjLXNpZXJyYVwn
fSIgZG9lcyBub3QgaGF2ZSBuYW1lIGRlZmluZWQuJywpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRl
cl93aXRoX21pc3Npbmdfc2hvcnRuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0
UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKLSAgICAgICAgICAgIGxvYWRDb25maWcuY2hl
Y2tWYWxpZEJ1aWxkZXIoe30sIHsncGxhdGZvcm0nOiAnbWFjLXNpZXJyYScsICduYW1lJzogJ21h
Yy13azIodGVzdCknfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlv
bi5hcmdzLCAoJ0J1aWxkZXIgIm1hYy13azIodGVzdCkiIGRvZXMgbm90IGhhdmUgc2hvcnQgbmFt
ZSBkZWZpbmVkLiBUaGlzIG5hbWUgaXMgbmVlZGVkIGZvciBFV1Mgc3RhdHVzIGJ1YmJsZXMuJywp
KQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX2ludmFsaWRfaWRlbnRpZmllcihzZWxmKToK
LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0g
ICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFj
LXdrMih0ZXN0KScsICdzaG9ydG5hbWUnOiAnbWFjLXdrMid9KQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBuYW1lIG1hYy13azIodGVz
dCkgaXMgbm90IGEgdmFsaWQgYnVpbGRib3QgaWRlbnRpZmllci4nLCkpCi0KLSAgICBkZWYgdGVz
dF9idWlsZGVyX3dpdGhfZXh0cmFfbG9uZ19uYW1lKHNlbGYpOgotICAgICAgICBsb25nTmFtZSA9
ICdhJyAqIDcxCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBj
b250ZXh0OgotICAgICAgICAgICAgbG9hZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwgeydu
YW1lJzogbG9uZ05hbWUsICdzaG9ydG5hbWUnOiAnYSd9KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNvbnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBuYW1lIHt9IGlzIGxvbmdlciB0
aGFuIG1heGltdW0gYWxsb3dlZCBieSBCdWlsZGJvdCAoNzAgY2hhcmFjdGVycykuJy5mb3JtYXQo
bG9uZ05hbWUpLCkpCi0KLSAgICBkZWYgdGVzdF9idWlsZGVyX3dpdGhfaW52YWxpZF9jb25maWd1
cmF0aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikg
YXMgY29udGV4dDoKLSAgICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tWYWxpZEJ1aWxkZXIoe30s
IHsnbmFtZSc6ICdtYWMtd2syJywgJ3Nob3J0bmFtZSc6ICdtYWMtd2syJywgJ2NvbmZpZ3VyYXRp
b24nOiAnYXNhbid9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuZXhjZXB0aW9u
LmFyZ3MsICgnSW52YWxpZCBjb25maWd1cmF0aW9uOiBhc2FuIGZvciBidWlsZGVyOiBtYWMtd2sy
JywpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX21pc3NpbmdfZmFjdG9yeShzZWxmKToK
LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0g
ICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFj
LXdrMicsICdzaG9ydG5hbWUnOiAnbWFjLXdrMicsICdjb25maWd1cmF0aW9uJzogJ3JlbGVhc2Un
fSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAoJ0J1
aWxkZXIgbWFjLXdrMiBkb2VzIG5vdCBoYXZlIGZhY3RvcnkgZGVmaW5lZC4nLCkpCi0KLSAgICBk
ZWYgdGVzdF9idWlsZGVyX3dpdGhfbWlzc2luZ19zY2hlZHVsZXIoc2VsZik6Ci0gICAgICAgIHdp
dGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAg
bG9hZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwgeyduYW1lJzogJ21hYy13azInLCAnc2hv
cnRuYW1lJzogJ21hYy13azInLCAnY29uZmlndXJhdGlvbic6ICdyZWxlYXNlJywgJ2ZhY3Rvcnkn
OiAnV0syRmFjdG9yeScsICdwbGF0Zm9ybSc6ICdtYWMtc2llcnJhJywgJ3RyaWdnZXJzJzogWydh
cGktdGVzdHMtbWFjLWV3cyddfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4
Y2VwdGlvbi5hcmdzLCAoJ1RyaWdnZXI6IGFwaS10ZXN0cy1tYWMtZXdzIGluIGJ1aWxkZXIgbWFj
LXdrMiBkb2VzIG5vdCBleGlzdCBpbiBsaXN0IG9mIFRyaWdlcnJhYmxlIHNjaGVkdWxlcnMuJywp
KQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX21pc3NpbmdfcGxhdGZvcm0oc2VsZik6Ci0g
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAg
ICAgICAgICAgbG9hZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwgeyduYW1lJzogJ21hYy13
azInLCAnc2hvcnRuYW1lJzogJ21hYy13azInLCAnY29uZmlndXJhdGlvbic6ICdyZWxlYXNlJywg
J2ZhY3RvcnknOiAnV0syRmFjdG9yeSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRl
eHQuZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBtYWMtd2syIGRvZXMgbm90IGhhdmUgcGxhdGZv
cm0gZGVmaW5lZC4nLCkpCi0KLSAgICBkZWYgdGVzdF92YWxpZF9idWlsZGVyKHNlbGYpOgotICAg
ICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFjT1MtSGln
aC1TaWVycmEtV0syLUVXUycsICdzaG9ydG5hbWUnOiAnbWFjLXdrMicsICdjb25maWd1cmF0aW9u
JzogJ3JlbGVhc2UnLCAnZmFjdG9yeSc6ICdXSzJGYWN0b3J5JywgJ3BsYXRmb3JtJzogJ21hYy1z
aWVycmEnfSkKLQotCi1jbGFzcyBUZXN0Y2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0
ZW5jeSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHNlbGYuV0syQnVpbGRlciA9IHsnbmFtZSc6ICdtYWNPUy1IaWdo
LVNpZXJyYS1XSzItRVdTJywgJ3Nob3J0bmFtZSc6ICdtYWMtd2syJywgJ2ZhY3RvcnknOiAnV0sy
RmFjdG9yeScsICdwbGF0Zm9ybSc6ICdtYWMtc2llcnJhJywgJ3dvcmtlcm5hbWVzJzogWydld3Mx
MDEnLCAnZXdzMTAyJ119Ci0gICAgICAgIHNlbGYuZXdzMTAxID0geyduYW1lJzogJ2V3czEwMScs
ICdwbGF0Zm9ybSc6ICdtYWMtc2llcnJhJ30KLSAgICAgICAgc2VsZi5ld3MxMDIgPSB7J25hbWUn
OiAnZXdzMTAyJywgJ3BsYXRmb3JtJzogJ2lvcy0xMSd9Ci0gICAgICAgIHN1cGVyKFRlc3RjaGVj
a1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5LCBzZWxmKS5fX2luaXRfXygqYXJncywg
Kiprd2FyZ3MpCi0KLSAgICBkZWYgdGVzdF9jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNp
c3RlbmN5KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikg
YXMgY29udGV4dDoKLSAgICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tXb3JrZXJzQW5kQnVpbGRl
cnNGb3JDb25zaXN0ZW5jeSh7fSwgW10sIFtzZWxmLldLMkJ1aWxkZXJdKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNvbnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBtYWNPUy1IaWdo
LVNpZXJyYS1XSzItRVdTIGhhcyB3b3JrZXIgZXdzMTAxLCB3aGljaCBpcyBub3QgZGVmaW5lZCBp
biB3b3JrZXJzIGxpc3QhJywpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tXb3JrZXJzQW5kQnVpbGRl
cnNGb3JDb25zaXN0ZW5jeTEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMo
RXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAgbG9hZENvbmZpZy5jaGVja1dvcmtl
cnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KHt9LCBbc2VsZi5ld3MxMDEsIHNlbGYuZXdzMTAy
XSwgW3NlbGYuV0syQnVpbGRlcl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5l
eGNlcHRpb24uYXJncywgKCdCdWlsZGVyIG1hY09TLUhpZ2gtU2llcnJhLVdLMi1FV1MgaXMgZm9y
IHBsYXRmb3JtIG1hYy1zaWVycmEsIGJ1dCBoYXMgd29ya2VyIGV3czEwMiBmb3IgcGxhdGZvcm0g
aW9zLTExIScsKSkKLQotICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV93b3JrZXIoc2VsZik6Ci0gICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAg
ICAgICAgbG9hZENvbmZpZy5jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KHt9
LCBbc2VsZi5ld3MxMDEsIHNlbGYuZXdzMTAxXSwgW3NlbGYuV0syQnVpbGRlcl0pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5leGNlcHRpb24uYXJncywgKCdEdXBsaWNhdGUgd29y
a2VyIGVudHJ5IGZvdW5kIGZvciBld3MxMDEuJywpKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzcyhz
ZWxmKToKLSAgICAgICAgbG9hZENvbmZpZy5jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNp
c3RlbmN5KHt9LCBbc2VsZi5ld3MxMDEsIHsnbmFtZSc6ICdld3MxMDInLCAncGxhdGZvcm0nOiAn
bWFjLXNpZXJyYSd9XSwgW3NlbGYuV0syQnVpbGRlcl0pCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1idWlsZC9tYXN0ZXIuY2ZnCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbWFzdGVyLmNmZwkobm9uZXhpc3RlbnQpCkBAIC0x
LDc3ICswLDAgQEAKLWltcG9ydCBvcwotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwotCi1mcm9t
IGJ1aWxkYm90LnBsdWdpbnMgaW1wb3J0IHJlcG9ydGVycywgdXRpbAotCi1pbXBvcnQgbG9hZENv
bmZpZwotZnJvbSBldmVudHMgaW1wb3J0IEV2ZW50cwotCi0jIFRoaXMgaXMgd29yay1hcm91bmQg
Zm9yIFR3aXN0ZWQgaGF2aW5nIGEgc21hbGwgc2l6ZSBsaW1pdCBmb3IgcGF0Y2hlcy4gU2VlIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg4NTEjYzUKLWZyb20gdHdp
c3RlZC5zcHJlYWQgaW1wb3J0IGJhbmFuYQotYmFuYW5hLlNJWkVfTElNSVQgPSAxMDAgKiAxMDI0
ICogMTAyNAotCi1pc190ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVudignQlVJTERCT1RfUFJP
RFVDVElPTicpIGlzIE5vbmUKLQotYyA9IEJ1aWxkbWFzdGVyQ29uZmlnID0ge30KLQotY1snd3d3
J10gPSBkaWN0KHBvcnQ9ODAxMCwgYWxsb3dlZF9vcmlnaW5zPVsiKiJdKQotY1snd3d3J11bJ2N1
c3RvbV90ZW1wbGF0ZXNfZGlyJ10gPSAndGVtcGxhdGVzJwotCi1jWyd3d3cnXVsndWlfZGVmYXVs
dF9jb25maWcnXSA9IHsgCi0gICAgJ0J1aWxkZXJzLnNob3dfd29ya2Vyc19uYW1lJzogVHJ1ZSwK
LSAgICAnQnVpbGRlcnMuYnVpbGRGZXRjaExpbWl0JzogMTAwMCwKLSAgICAnV29ya2Vycy5zaG93
V29ya2VyQnVpbGRlcnMnOiBUcnVlLAotfQotCi1pZiBub3QgaXNfdGVzdF9tb2RlX2VuYWJsZWQ6
Ci0gICAgYWRtaW5fdXNlcm5hbWUgPSBvcy5nZXRlbnYoJ0VXU19BRE1JTl9VU0VSTkFNRScpCi0g
ICAgYWRtaW5fcGFzc3dvcmQgPSBvcy5nZXRlbnYoJ0VXU19BRE1JTl9QQVNTV09SRCcpCi0gICAg
aWYgbm90IGFkbWluX3VzZXJuYW1lIG9yIG5vdCBhZG1pbl9wYXNzd29yZDoKLSAgICAgICAgcHJp
bnQoJ0Vudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgYWRtaW4gdXNlcm5hbWUvcGFzc3dvcmQgbm90
IGZvdW5kLiBQbGVhc2UgZW5zdXJlIHRoZXNlIHZhcmlhYmxlcyBhcmUgc2V0LicpCi0gICAgICAg
IHN5cy5leGl0KDEpCi0gICAgIyBTZWUgaHR0cHM6Ly9kb2NzLmJ1aWxkYm90Lm5ldC9jdXJyZW50
L21hbnVhbC9jb25maWd1cmF0aW9uL3d3dy5odG1sI2V4YW1wbGUtY29uZmlncwotICAgIGF1dGh6
ID0gdXRpbC5BdXRoeigKLSAgICAgICAgYWxsb3dSdWxlcz1bdXRpbC5BbnlDb250cm9sRW5kcG9p
bnRNYXRjaGVyKHJvbGU9ImFkbWluIildLAotICAgICAgICByb2xlTWF0Y2hlcnM9W3V0aWwuUm9s
ZXNGcm9tRW1haWxzKGFkbWluPVthZG1pbl91c2VybmFtZV0pXQotICAgICkKLSAgICBhdXRoID0g
dXRpbC5Vc2VyUGFzc3dvcmRBdXRoKHthZG1pbl91c2VybmFtZTogYWRtaW5fcGFzc3dvcmR9KQot
ICAgIGNbJ3d3dyddWydhdXRoJ10gPSBhdXRoCi0gICAgY1snd3d3J11bJ2F1dGh6J10gPSBhdXRo
egotCi1jWydwcm90b2NvbHMnXSA9IHsncGInOiB7J3BvcnQnOiAxNzAwMH19Ci0KLWNbJ3Byb2pl
Y3ROYW1lJ10gPSAnV2ViS2l0IEVXUycKLWNbJ3Byb2plY3RVUkwnXSA9ICdodHRwczovL2V3cy1i
dWlsZC53ZWJraXQub3JnLycKLQotaWYgaXNfdGVzdF9tb2RlX2VuYWJsZWQ6Ci0gICAgY1snYnVp
bGRib3RVUkwnXSA9ICdodHRwOi8vbG9jYWxob3N0OjgwMTAvJwotICAgIGNbJ2RiX3VybCddID0g
J3NxbGl0ZTovLy9zdGF0ZS5zcWxpdGU/c2VyaWFsaXplX2FjY2Vzcz0xJwotZWxzZToKLSAgICBj
WydidWlsZGJvdFVSTCddID0gJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvJwotICAgIGRi
X3VybCA9IG9zLmdldGVudignREJfVVJMJywgTm9uZSkKLSAgICBkYl9uYW1lID0gb3MuZ2V0ZW52
KCdEQl9OQU1FJywgTm9uZSkKLSAgICBkYl91c2VybmFtZSA9IG9zLmdldGVudignREJfVVNFUk5B
TUUnLCBOb25lKQotICAgIGRiX3Bhc3N3b3JkID0gb3MuZ2V0ZW52KCdEQl9QQVNTV09SRCcsIE5v
bmUpCi0gICAgaWYgTm9uZSBpbiBbZGJfdXJsLCBkYl9uYW1lLCBkYl91c2VybmFtZSwgZGJfcGFz
c3dvcmRdOgotICAgICAgICBwcmludCgnRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBEQiBub3Qg
Zm91bmQuIFBsZWFzZSBlbnN1cmUgdGhlc2UgdmFyaWFibGVzIGFyZSBzZXQuJykKLSAgICAgICAg
c3lzLmV4aXQoMSkKLSAgICAjIFNlZSBodHRwczovL2RvY3MuYnVpbGRib3QubmV0LzEuNy4wL21h
bnVhbC9jb25maWd1cmF0aW9uL2dsb2JhbC5odG1sI2RhdGFiYXNlLXNwZWNpZmljYXRpb24KLSAg
ICBjWydkYl91cmwnXSA9ICdwb3N0Z3Jlc3FsOi8ve306e31Ae30ve30nLmZvcm1hdChkYl91c2Vy
bmFtZSwgZGJfcGFzc3dvcmQsIGRiX3VybCwgZGJfbmFtZSkKLQotY1snbG9nQ29tcHJlc3Npb25N
ZXRob2QnXSA9ICdsejQnCi1jWydidWlsZGJvdE5ldFVzYWdlRGF0YSddID0gTm9uZQotCi1sb2Fk
Q29uZmlnLmxvYWRCdWlsZGVyQ29uZmlnKGMsIGlzX3Rlc3RfbW9kZV9lbmFibGVkPWlzX3Rlc3Rf
bW9kZV9lbmFibGVkKQotCi1tYWlsX25vdGlmaWVyID0gcmVwb3J0ZXJzLk1haWxOb3RpZmllcigK
LSAgICBmcm9tYWRkcj0nZXdzLWJ1aWxkQHdlYmtpdC5vcmcnLAotICAgIHNlbmRUb0ludGVyZXN0
ZWRVc2Vycz1GYWxzZSwKLSAgICBleHRyYVJlY2lwaWVudHM9WydhYWthc2hfamFpbkB3ZWJraXQu
b3JnJ10sCi0gICAgbW9kZT0oJ2V4Y2VwdGlvbicpLAotICAgIGFkZFBhdGNoPUZhbHNlKQotCi1p
ZiBub3QgaXNfdGVzdF9tb2RlX2VuYWJsZWQ6Ci0gICAgaG9zdG5hbWUgPSAgc29ja2V0LmdldGhv
c3RuYW1lKCkuc3RyaXAoKQotICAgIGV2ZW50X3JlcG9ydGVyID0gRXZlbnRzKG1hc3Rlcl9ob3N0
bmFtZT1ob3N0bmFtZSwgdHlwZV9wcmVmaXg9J2V3cycpCi0gICAgY1snc2VydmljZXMnXSA9IFtl
dmVudF9yZXBvcnRlciwgbWFpbF9ub3RpZmllcl0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9ydW5Vbml0dGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weQkocmV2aXNpb24gMjY4NzMxKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weQkobm9u
ZXhpc3RlbnQpCkBAIC0xLDMwICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLWltcG9ydCBv
cwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci0KLSIiIgotVGhpcyBpcyB0aGUgZXF1aXZh
bGVudCBvZiBydW5uaW5nOgotICAgIHB5dGhvbiAtbSB1bml0dGVzdCBkaXNjb3ZlciAtLXN0YXJ0
LWRpcmVjdG9yeSB7dGVzdF9kaXNjb3ZlcnlfcGF0aH0gLS1wYXR0ZXJuIHtVTklUX1RFU1RfUEFU
VEVSTn0KLSIiIgotCi1VTklUX1RFU1RfUEFUVEVSTiA9ICcqX3VuaXR0ZXN0LnB5JwotCi0KLWRl
ZiBydW5fdW5pdHRlc3RzKHRlc3RfZGlzY292ZXJ5X3BhdGgpOgotICAgIHRlc3Rfc3VpdGUgPSB1
bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5kaXNjb3Zlcih0ZXN0X2Rpc2NvdmVyeV9wYXRoLCBw
YXR0ZXJuPVVOSVRfVEVTVF9QQVRURVJOKQotICAgIHJlc3VsdHMgPSB1bml0dGVzdC5UZXh0VGVz
dFJ1bm5lcihidWZmZXI9VHJ1ZSkucnVuKHRlc3Rfc3VpdGUpCi0gICAgaWYgcmVzdWx0cy5mYWls
dXJlcyBvciByZXN1bHRzLmVycm9yczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUZXN0
IGZhaWx1cmVzIG9yIGVycm9ycyB3ZXJlIGdlbmVyYXRlZCBkdXJpbmcgdGhpcyB0ZXN0IHJ1bi4n
KQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdHJ5OgotICAgICAgICByZWxh
dGl2ZV9wYXRoID0gc3lzLmFyZ3ZbMV0KLSAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAg
cmVsYXRpdmVfcGF0aCA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLQotICAgIHBhdGggPSBv
cy5wYXRoLmFic3BhdGgocmVsYXRpdmVfcGF0aCkKLSAgICBhc3NlcnQgb3MucGF0aC5pc2Rpcihw
YXRoKSwgJ3t9IGlzIG5vdCBhIGRpcmVjdG9yeS4gUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBkaXJl
Y3RvcnknLmZvcm1hdChwYXRoKQotICAgIHJ1bl91bml0dGVzdHMocGF0aCkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zZW5kX2VtYWlsLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9zZW5kX2VtYWlsLnB5CShyZXZpc2lv
biAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc2VuZF9lbWFp
bC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDg4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IHNtdHBs
aWIKLQotZnJvbSBlbWFpbC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Ci0KLWlzX3Rlc3RfbW9k
ZV9lbmFibGVkID0gb3MuZ2V0ZW52KCdCVUlMREJPVF9QUk9EVUNUSU9OJykgaXMgTm9uZQotCi1G
Uk9NX0VNQUlMID0gJ2V3c0B3ZWJraXQub3JnJwotSUdBTElBX0pTQ19RVUVVRVNfUEFUVEVSTlMg
PSBbJ2FybXY3JywgJ21pcHMnLCAnaTM4NiddCi1JR0FMSUFfR1RLX1dQRV9RVUVVRVNfUEFUVEVS
TlMgPSBbJ2d0aycsICd3cGUnXQotU0VSVkVSID0gJ2xvY2FsaG9zdCcKLQotCi1kZWYgZ2V0X2Vt
YWlsX2lkcyhjYXRlZ29yeSk6Ci0gICAgIyBWYWxpZCBjYXRlZ29yaWVzOiAnQURNSU5fRU1BSUxT
JywgJ0FQUExFX0JPVF9XQVRDSEVSU19FTUFJTFMnLCAnRU1BSUxfSURTX1RPX1VOU1VCU0NSSUJF
JyBldGMuCi0gICAgdHJ5OgotICAgICAgICBlbWFpbHMgPSBqc29uLmxvYWQob3BlbignZW1haWxz
Lmpzb24nKSkKLSAgICAgICAgcmV0dXJuIGVtYWlscy5nZXQoY2F0ZWdvcnksIFtdKQotICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHJlYWRpbmcgZW1h
aWxzLmpzb246IHt9Jy5mb3JtYXQoZSkpCi0gICAgICAgIHJldHVybiBbXQotCi0KLWRlZiBzZW5k
X2VtYWlsKHRvX2VtYWlscywgc3ViamVjdCwgdGV4dCwgcmVmZXJlbmNlPScnKToKLSAgICBpZiBp
c190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgbm90IHRvX2VtYWls
czoKLSAgICAgICAgcHJpbnQoJ0Vycm9yOiBza2lwcGluZyBlbWFpbCBzaW5jZSBubyByZWNpcGll
bnQgaXMgc3BlY2lmaWVkJykKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgbm90IHN1YmplY3Qgb3Ig
bm90IHRleHQ6Ci0gICAgICAgIHByaW50KCdFcnJvcjogc2tpcHBpbmcgZW1haWwgc2luY2Ugbm8g
c3ViamVjdCBvciB0ZXh0IGlzIHNwZWNpZmllZCcpCi0gICAgICAgIHJldHVybgotCi0gICAgdGV4
dCA9IHRleHQuZW5jb2RlKCd1dGYtOCcpCi0gICAgdGV4dCA9IHRleHQucmVwbGFjZSgnXG4nLCAn
PGJyPicpCi0KLSAgICBtc2cgPSBNSU1FVGV4dCh0ZXh0LCAnaHRtbCcpCi0gICAgbXNnWydGcm9t
J10gPSBGUk9NX0VNQUlMCi0gICAgbXNnWydUbyddID0gJywgJy5qb2luKHRvX2VtYWlscykKLSAg
ICBtc2dbJ1N1YmplY3QnXSA9IHN1YmplY3QKLSAgICBtc2cuYWRkX2hlYWRlcigncmVwbHktdG8n
LCAnYWFrYXNoX2phaW5AYXBwbGUuY29tJykKLSAgICBpZiByZWZlcmVuY2U6Ci0gICAgICAgIG1z
Zy5hZGRfaGVhZGVyKCdyZWZlcmVuY2VzJywgJ3t9QHdlYmtpdC5vcmcnLmZvcm1hdChyZWZlcmVu
Y2UpKQotCi0gICAgc2VydmVyID0gc210cGxpYi5TTVRQKFNFUlZFUikKLSAgICBzZXJ2ZXIuc2Vu
ZG1haWwoRlJPTV9FTUFJTCwgdG9fZW1haWxzLCBtc2cuYXNfc3RyaW5nKCkpCi0gICAgc2VydmVy
LnF1aXQoKQotCi0KLWRlZiBzZW5kX2VtYWlsX3RvX3BhdGNoX2F1dGhvcihhdXRob3JfZW1haWws
IHN1YmplY3QsIHRleHQsIHJlZmVyZW5jZT0nJyk6Ci0gICAgaWYgbm90IGF1dGhvcl9lbWFpbDoK
LSAgICAgICAgcmV0dXJuCi0gICAgc2VuZF9lbWFpbChbJ2Fha2FzaF9qYWluQGFwcGxlLmNvbSdd
LCBzdWJqZWN0LCB0ZXh0LCByZWZlcmVuY2UpCi0gICAgaWYgYXV0aG9yX2VtYWlsIGluIGdldF9l
bWFpbF9pZHMoJ0VNQUlMX0lEU19UT19VTlNVQlNDUklCRScpOgotICAgICAgICBwcmludCgnZW1h
aWwge30gaXMgaW4gdW5zdWJzY3JpYmUgbGlzdCwgc2tpcHBpbmcgZW1haWwnLmZvcm1hdChhdXRo
b3JfZW1haWwpKQotICAgICAgICByZXR1cm4KLSAgICBzZW5kX2VtYWlsKFthdXRob3JfZW1haWxd
LCBzdWJqZWN0LCB0ZXh0LCByZWZlcmVuY2UpCi0KLQotZGVmIHNlbmRfZW1haWxfdG9fYm90X3dh
dGNoZXJzKHN1YmplY3QsIHRleHQsIGJ1aWxkZXJfbmFtZSwgcmVmZXJlbmNlPScnKToKLSAgICBz
ZW5kX2VtYWlsKGdldF9lbWFpbF9pZHMoJ0FQUExFX0JPVF9XQVRDSEVSU19FTUFJTFMnKSwgc3Vi
amVjdCwgdGV4dCwgcmVmZXJlbmNlKQotICAgIGlmIGFueShwYXR0ZXJuIGluIGJ1aWxkZXJfbmFt
ZS5sb3dlcigpIGZvciBwYXR0ZXJuIGluIElHQUxJQV9KU0NfUVVFVUVTX1BBVFRFUk5TKToKLSAg
ICAgICAgc2VuZF9lbWFpbChnZXRfZW1haWxfaWRzKCdJR0FMSUFfSlNDX1RFQU1fRU1BSUxTJyks
IHN1YmplY3QsIHRleHQsIHJlZmVyZW5jZSkKLSAgICBpZiBhbnkocGF0dGVybiBpbiBidWlsZGVy
X25hbWUubG93ZXIoKSBmb3IgcGF0dGVybiBpbiBJR0FMSUFfR1RLX1dQRV9RVUVVRVNfUEFUVEVS
TlMpOgotICAgICAgICBzZW5kX2VtYWlsKGdldF9lbWFpbF9pZHMoJ0lHQUxJQV9HVEtfV1BFX0VN
QUlMUycpLCBzdWJqZWN0LCB0ZXh0LCByZWZlcmVuY2UpCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzLnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwz
MDY3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0j
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1mcm9tIGJ1aWxkYm90LnBsdWdpbnMgaW1wb3J0IHN0ZXBzLCB1dGlsCi1mcm9tIGJ1aWxkYm90
LnByb2Nlc3MgaW1wb3J0IGJ1aWxkc3RlcCwgbG9nb2JzZXJ2ZXIsIHByb3BlcnRpZXMKLWZyb20g
YnVpbGRib3QucHJvY2Vzcy5yZXN1bHRzIGltcG9ydCBSZXN1bHRzLCBTVUNDRVNTLCBGQUlMVVJF
LCBDQU5DRUxMRUQsIFdBUk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04sIFJFVFJZCi1mcm9tIGJ1
aWxkYm90LnN0ZXBzIGltcG9ydCBtYXN0ZXIsIHNoZWxsLCB0cmFuc2ZlciwgdHJpZ2dlcgotZnJv
bSBidWlsZGJvdC5zdGVwcy5zb3VyY2UgaW1wb3J0IGdpdAotZnJvbSBidWlsZGJvdC5zdGVwcy53
b3JrZXIgaW1wb3J0IENvbXBvc2l0ZVN0ZXBNaXhpbgotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0
ZQotZnJvbSB0d2lzdGVkLmludGVybmV0IGltcG9ydCBkZWZlcgotCi1mcm9tIGxheW91dF90ZXN0
X2ZhaWx1cmVzIGltcG9ydCBMYXlvdXRUZXN0RmFpbHVyZXMKLWZyb20gc2VuZF9lbWFpbCBpbXBv
cnQgc2VuZF9lbWFpbF90b19wYXRjaF9hdXRob3IsIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJz
Ci0KLWltcG9ydCBqc29uCi1pbXBvcnQgcmUKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IG9zCi0K
LUJVR19TRVJWRVJfVVJMID0gJ2h0dHBzOi8vYnVncy53ZWJraXQub3JnLycKLVMzVVJMID0gJ2h0
dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vJwotUzNfUkVTVUxUU19VUkwgPSAnaHR0
cHM6Ly9ld3MtYnVpbGQuczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vJwotRVdTX0JVSUxEX1VS
TCA9ICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnLycKLUVXU19VUkwgPSAnaHR0cHM6Ly9l
d3Mud2Via2l0Lm9yZy8nCi1SRVNVTFRTX0RCX1VSTCA9ICdodHRwczovL3Jlc3VsdHMud2Via2l0
Lm9yZy8nCi1XaXRoUHJvcGVydGllcyA9IHByb3BlcnRpZXMuV2l0aFByb3BlcnRpZXMKLUludGVy
cG9sYXRlID0gcHJvcGVydGllcy5JbnRlcnBvbGF0ZQotCi0KLWNsYXNzIENvbmZpZ3VyZUJ1aWxk
KGJ1aWxkc3RlcC5CdWlsZFN0ZXApOgotICAgIG5hbWUgPSAnY29uZmlndXJlLWJ1aWxkJwotICAg
IGRlc2NyaXB0aW9uID0gWydjb25maWd1cmluZyBidWlsZCddCi0gICAgZGVzY3JpcHRpb25Eb25l
ID0gWydDb25maWd1cmVkIGJ1aWxkJ10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9y
bSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5LCB0cmlnZ2VycywgcmVt
b3RlcywgYWRkaXRpb25hbEFyZ3VtZW50cywgdHJpZ2dlcmVkX2J5PU5vbmUpOgotICAgICAgICBz
dXBlcihDb25maWd1cmVCdWlsZCwgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLnBsYXRm
b3JtID0gcGxhdGZvcm0KLSAgICAgICAgaWYgcGxhdGZvcm0gIT0gJ2pzYy1vbmx5JzoKLSAgICAg
ICAgICAgIHNlbGYucGxhdGZvcm0gPSBwbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBdCi0gICAgICAg
IHNlbGYuZnVsbFBsYXRmb3JtID0gcGxhdGZvcm0KLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9u
ID0gY29uZmlndXJhdGlvbgotICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZSA9ICcgJy5qb2luKGFy
Y2hpdGVjdHVyZXMpIGlmIGFyY2hpdGVjdHVyZXMgZWxzZSBOb25lCi0gICAgICAgIHNlbGYuYnVp
bGRPbmx5ID0gYnVpbGRPbmx5Ci0gICAgICAgIHNlbGYudHJpZ2dlcnMgPSB0cmlnZ2VycwotICAg
ICAgICBzZWxmLnRyaWdnZXJlZF9ieSA9IHRyaWdnZXJlZF9ieQotICAgICAgICBzZWxmLnJlbW90
ZXMgPSByZW1vdGVzCi0gICAgICAgIHNlbGYuYWRkaXRpb25hbEFyZ3VtZW50cyA9IGFkZGl0aW9u
YWxBcmd1bWVudHMKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5wbGF0
Zm9ybSBhbmQgc2VsZi5wbGF0Zm9ybSAhPSAnKic6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdwbGF0Zm9ybScsIHNlbGYucGxhdGZvcm0sICdjb25maWcuanNvbicpCi0gICAgICAgIGlm
IHNlbGYuZnVsbFBsYXRmb3JtIGFuZCBzZWxmLmZ1bGxQbGF0Zm9ybSAhPSAnKic6Ci0gICAgICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCBzZWxmLmZ1bGxQbGF0Zm9ybSwg
J0NvbmZpZ3VyZUJ1aWxkJykKLSAgICAgICAgaWYgc2VsZi5jb25maWd1cmF0aW9uOgotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIHNlbGYuY29uZmlndXJhdGlv
biwgJ2NvbmZpZy5qc29uJykKLSAgICAgICAgaWYgc2VsZi5hcmNoaXRlY3R1cmU6Ci0gICAgICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdhcmNoaXRlY3R1cmUnLCBzZWxmLmFyY2hpdGVjdHVyZSwg
J2NvbmZpZy5qc29uJykKLSAgICAgICAgaWYgc2VsZi5idWlsZE9ubHk6Ci0gICAgICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZE9ubHknLCBzZWxmLmJ1aWxkT25seSwgJ2NvbmZpZy5qc29u
JykKLSAgICAgICAgaWYgc2VsZi50cmlnZ2VycyBhbmQgbm90IHNlbGYuZ2V0UHJvcGVydHkoJ3Ry
aWdnZXJzJyk6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd0cmlnZ2VycycsIHNlbGYu
dHJpZ2dlcnMsICdjb25maWcuanNvbicpCi0gICAgICAgIGlmIHNlbGYudHJpZ2dlcmVkX2J5Ogot
ICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgndHJpZ2dlcmVkX2J5Jywgc2VsZi50cmlnZ2Vy
ZWRfYnksICdjb25maWcuanNvbicpCi0gICAgICAgIGlmIHNlbGYucmVtb3RlczoKLSAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JlbW90ZXMnLCBzZWxmLnJlbW90ZXMsICdjb25maWcuanNv
bicpCi0gICAgICAgIGlmIHNlbGYuYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnLCBzZWxmLmFkZGl0aW9uYWxBcmd1
bWVudHMsICdjb25maWcuanNvbicpCi0KLSAgICAgICAgc2VsZi5hZGRfcGF0Y2hfaWRfdXJsKCkK
LSAgICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAgICAgICByZXR1cm4gZGVmZXIuc3Vj
Y2VlZChOb25lKQotCi0gICAgZGVmIGFkZF9wYXRjaF9pZF91cmwoc2VsZik6Ci0gICAgICAgIHBh
dGNoX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykKLSAgICAgICAgaWYgcGF0
Y2hfaWQ6Ci0gICAgICAgICAgICBzZWxmLmFkZFVSTCgnUGF0Y2gge30nLmZvcm1hdChwYXRjaF9p
ZCksIEJ1Z3ppbGxhLnBhdGNoX3VybChwYXRjaF9pZCkpCi0KLQotY2xhc3MgQ2hlY2tPdXRTb3Vy
Y2UoZ2l0LkdpdCk6Ci0gICAgbmFtZSA9ICdjbGVhbi1hbmQtdXBkYXRlLXdvcmtpbmctZGlyZWN0
b3J5JwotICAgIENIRUNLT1VUX0RFTEFZX0FORF9NQVhfUkVUUklFU19QQUlSID0gKDAsIDIpCi0g
ICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2Fy
Z3MpOgotICAgICAgICBzZWxmLnJlcG91cmwgPSAnaHR0cHM6Ly9naXQud2Via2l0Lm9yZy9naXQv
V2ViS2l0LmdpdCcKLSAgICAgICAgc3VwZXIoQ2hlY2tPdXRTb3VyY2UsIHNlbGYpLl9faW5pdF9f
KHJlcG91cmw9c2VsZi5yZXBvdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0cnk9c2VsZi5DSEVDS09VVF9ERUxBWV9BTkRfTUFYX1JFVFJJRVNf
UEFJUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9MiAqIDYwICogNjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhbHdheXNVc2VMYXRlc3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9J2NsZWFuJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzPVRydWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJn
cykKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJl
c3VsdHMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1
cnJlbnRTdGVwKFtDbGVhblVwR2l0SW5kZXhMb2NrKCldKQotCi0gICAgICAgIGlmIHNlbGYucmVz
dWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCB0
byB1cGRhdGVkIHdvcmtpbmcgZGlyZWN0b3J5J30KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJldHVybiB7dSdzdGVwJzogdSdDbGVhbmVkIGFuZCB1cGRhdGVkIHdvcmtpbmcgZGlyZWN0b3J5
J30KLQotCi1jbGFzcyBDbGVhblVwR2l0SW5kZXhMb2NrKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0g
ICAgbmFtZSA9ICdjbGVhbi1naXQtaW5kZXgtbG9jaycKLSAgICBjb21tYW5kID0gWydybScsICct
ZicsICcuZ2l0L2luZGV4LmxvY2snXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnRGVsZXRlZCAu
Z2l0L2luZGV4LmxvY2snXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAg
ICAgICAgc3VwZXIoQ2xlYW5VcEdpdEluZGV4TG9jaywgc2VsZikuX19pbml0X18odGltZW91dD0y
ICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYp
OgotICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJyonKQot
ICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luY2Fpcm8nOgotICAgICAgICAgICAgc2VsZi5jb21t
YW5kID0gWydkZWwnLCAnLmdpdFxpbmRleC5sb2NrJ10KLSAgICAgICAgcmV0dXJuIHNoZWxsLlNo
ZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBj
bWQpOgotICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoWydHaXQgaXNzdWUsIHJldHJ5
aW5nIGJ1aWxkJ10sIFJFVFJZKQotICAgICAgICByZXR1cm4gc3VwZXIoQ2xlYW5VcEdpdEluZGV4
TG9jaywgc2VsZikuZXZhbHVhdGVDb21tYW5kKGNtZCkKLQotCi1jbGFzcyBDaGVja091dFNwZWNp
ZmljUmV2aXNpb24oc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2NoZWNrb3V0LXNw
ZWNpZmljLXJldmlzaW9uJwotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQ2hlY2tlZCBvdXQgcmVx
dWlyZWQgcmV2aXNpb24nXQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLSAgICBoYWx0T25G
YWlsdXJlID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHN1cGVyKENoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiwgc2VsZikuX19pbml0X18obG9nRW52
aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgZG9TdGVwSWYoc2VsZiwgc3RlcCk6Ci0g
ICAgICAgIHJldHVybiBzZWxmLmdldFByb3BlcnR5KCdld3NfcmV2aXNpb24nLCBGYWxzZSkKLQot
ICAgIGRlZiBoaWRlU3RlcElmKHNlbGYsIHJlc3VsdHMsIHN0ZXApOgotICAgICAgICByZXR1cm4g
bm90IHNlbGYuZG9TdGVwSWYoc3RlcCkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
c2VsZi5zZXRDb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0Jywgc2VsZi5nZXRQcm9wZXJ0eSgnZXdz
X3JldmlzaW9uJyldKQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLnN0YXJ0KHNl
bGYpCi0KLQotY2xhc3MgQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KHNoZWxsLlNoZWxsQ29tbWFuZCk6
Ci0gICAgbmFtZSA9ICdjbGVhbi13b3JraW5nLWRpcmVjdG9yeScKLSAgICBkZXNjcmlwdGlvbiA9
IFsnY2xlYW4td29ya2luZy1kaXJlY3RvcnkgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25l
ID0gWydDbGVhbmVkIHdvcmtpbmcgZGlyZWN0b3J5J10KLSAgICBmbHVua09uRmFpbHVyZSA9IFRy
dWUKLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdU
b29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdCddCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKipr
d2FyZ3MpOgotICAgICAgICBzdXBlcihDbGVhbldvcmtpbmdEaXJlY3RvcnksIHNlbGYpLl9faW5p
dF9fKGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAgICAgICAg
aWYgcGxhdGZvcm0gaW4gKCdndGsnLCAnd3BlJyk6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1h
bmQoc2VsZi5jb21tYW5kICsgWyctLWtlZXAtamhidWlsZC1kaXJlY3RvcnknXSkKLSAgICAgICAg
cmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0KLWNsYXNzIFVwZGF0ZVdv
cmtpbmdEaXJlY3Rvcnkoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3VwZGF0ZS13
b3JraW5nLWRpcmVjdG9yeScKLSAgICBkZXNjcmlwdGlvbiA9IFsndXBkYXRlLXdvcmtyaW5nLWRp
cmVjdG9yeSBydW5uaW5nJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwZGF0ZWQgd29ya2lu
ZyBkaXJlY3RvcnknXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGhhbHRPbkZhaWx1
cmUgPSBUcnVlCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0ZS13
ZWJraXQnXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3Vw
ZXIoVXBkYXRlV29ya2luZ0RpcmVjdG9yeSwgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxz
ZSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgQXBwbHlQYXRjaChzaGVsbC5TaGVsbENvbW1hbmQsIENv
bXBvc2l0ZVN0ZXBNaXhpbik6Ci0gICAgbmFtZSA9ICdhcHBseS1wYXRjaCcKLSAgICBkZXNjcmlw
dGlvbiA9IFsnYXBwbHlpbmctcGF0Y2gnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQXBwbGll
ZCBwYXRjaCddCi0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0gICAgY29tbWFuZCA9IFsncGVy
bCcsICdUb29scy9TY3JpcHRzL3N2bi1hcHBseScsICctLWZvcmNlJywgJy5idWlsZGJvdC1kaWZm
J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKEFw
cGx5UGF0Y2gsIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9MTAgKiA2MCwgbG9nRW52aXJvbj1GYWxz
ZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgX2dldF9wYXRjaChzZWxmKToKLSAgICAgICAgc291cmNl
c3RhbXAgPSBzZWxmLmJ1aWxkLmdldFNvdXJjZVN0YW1wKHNlbGYuZ2V0UHJvcGVydHkoJ2NvZGVi
YXNlJywgJycpKQotICAgICAgICBpZiBub3Qgc291cmNlc3RhbXAgb3Igbm90IHNvdXJjZXN0YW1w
LnBhdGNoOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNvdXJjZXN0
YW1wLnBhdGNoWzFdCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHBhdGNoID0gc2Vs
Zi5fZ2V0X3BhdGNoKCkKLSAgICAgICAgaWYgbm90IHBhdGNoOgotICAgICAgICAgICAgc2VsZi5m
aW5pc2hlZChGQUlMVVJFKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBwYXRj
aF9yZXZpZXdlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfcmV2aWV3ZXJfZnVsbF9u
YW1lJywgJycpCi0gICAgICAgIGlmIHBhdGNoX3Jldmlld2VyX25hbWU6Ci0gICAgICAgICAgICBz
ZWxmLmNvbW1hbmQuZXh0ZW5kKFsnLS1yZXZpZXdlcicsIHBhdGNoX3Jldmlld2VyX25hbWVdKQot
ICAgICAgICBkID0gc2VsZi5kb3dubG9hZEZpbGVDb250ZW50VG9Xb3JrZXIoJy5idWlsZGJvdC1k
aWZmJywgcGF0Y2gpCi0gICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczogc2hlbGwuU2hl
bGxDb21tYW5kLnN0YXJ0KHNlbGYpKQotCi0gICAgZGVmIGhpZGVTdGVwSWYoc2VsZiwgcmVzdWx0
cywgc3RlcCk6Ci0gICAgICAgIHJldHVybiByZXN1bHRzID09IFNVQ0NFU1MgYW5kIHNlbGYuZ2V0
UHJvcGVydHkoJ3NlbnNpdGl2ZScsIEZhbHNlKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnko
c2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAg
cmV0dXJuIHt1J3N0ZXAnOiB1J3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkgcGF0Y2ggdG8gdHJ1
bmsnfQotICAgICAgICByZXR1cm4gc3VwZXIoQXBwbHlQYXRjaCwgc2VsZikuZ2V0UmVzdWx0U3Vt
bWFyeSgpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJj
ID0gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAg
IHBhdGNoX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykKLSAgICAgICAgaWYg
cmMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnVG9vbHMvU2NyaXB0cy9zdm4t
YXBwbHkgZmFpbGVkIHRvIGFwcGx5IHBhdGNoIHt9IHRvIHRydW5rJy5mb3JtYXQocGF0Y2hfaWQp
Ci0gICAgICAgICAgICBpZiBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKS5sb3dl
cigpID09ICdjb21taXQtcXVldWUnOgotICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9ICd7
fS5cblBsZWFzZSByZXNvbHZlIHRoZSBjb25mbGljdHMgYW5kIHVwbG9hZCBhIG5ldyBwYXRjaC4n
LmZvcm1hdChtZXNzYWdlLnJlcGxhY2UoJ3BhdGNoJywgJ2F0dGFjaG1lbnQnKSkKLSAgICAgICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBjb21tZW50
X3RleHQpCi0gICAgICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1
bW1hcnknLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRl
ckN1cnJlbnRTdGVwKFtDb21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBh
dGNoKCldKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1
aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBGQUlMVVJFKQotICAgICAgICByZXR1cm4gcmMKLQotCi1j
bGFzcyBDaGVja1BhdGNoUmVsZXZhbmNlKGJ1aWxkc3RlcC5CdWlsZFN0ZXApOgotICAgIG5hbWUg
PSAnY2hlY2stcGF0Y2gtcmVsZXZhbmNlJwotICAgIGRlc2NyaXB0aW9uID0gWydjaGVjay1wYXRj
aC1yZWxldmFuY2UgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydQYXRjaCBjb250
YWlucyByZWxldmFudCBjaGFuZ2VzJ10KLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLSAgICBo
YWx0T25GYWlsdXJlID0gVHJ1ZQotCi0gICAgYmluZGluZ3NfcGF0aHMgPSBbCi0gICAgICAgICdT
b3VyY2UvV2ViQ29yZScsCi0gICAgICAgICdUb29scycsCi0gICAgXQotCi0gICAgc2VydmljZXNf
cGF0aHMgPSBbCi0gICAgICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZycsCi0gICAgICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQn
LAotICAgICAgICAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvU2hhcmVkJywKLSAgICAgICAgJ1Rv
b2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5JywKLSAgICBdCi0KLSAgICBqc2NfcGF0
aHMgPSBbCi0gICAgICAgICdKU1Rlc3RzLycsCi0gICAgICAgICdTb3VyY2UvSmF2YVNjcmlwdENv
cmUvJywKLSAgICAgICAgJ1NvdXJjZS9XVEYvJywKLSAgICAgICAgJ1NvdXJjZS9ibWFsbG9jLycs
Ci0gICAgICAgICdNYWtlZmlsZScsCi0gICAgICAgICdNYWtlZmlsZS5zaGFyZWQnLAotICAgICAg
ICAnU291cmNlL01ha2VmaWxlJywKLSAgICAgICAgJ1NvdXJjZS9NYWtlZmlsZS5zaGFyZWQnLAot
ICAgICAgICAnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQnLAotICAgICAgICAnVG9vbHMvU2Ny
aXB0cy9idWlsZC1qc2MnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy8nLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tanNjJywKLSAgICAgICAgJ1Rv
b2xzL1NjcmlwdHMvcnVuLWpzYy1iZW5jaG1hcmtzJywKLSAgICAgICAgJ1Rvb2xzL1NjcmlwdHMv
cnVuLWpzYy1zdHJlc3MtdGVzdHMnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHMnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tbGF5b3V0LWpzYycs
Ci0gICAgICAgICdUb29scy9TY3JpcHRzL3VwZGF0ZS1qYXZhc2NyaXB0Y29yZS10ZXN0LXJlc3Vs
dHMnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtJywKLSAgICBdCi0KLSAg
ICB3azFfcGF0aHMgPSBbCi0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5JywKLSAgICAgICAg
J1NvdXJjZS9XZWJDb3JlJywKLSAgICAgICAgJ1NvdXJjZS9XZWJJbnNwZWN0b3JVSScsCi0gICAg
ICAgICdTb3VyY2UvV2ViRHJpdmVyJywKLSAgICAgICAgJ1NvdXJjZS9XVEYnLAotICAgICAgICAn
U291cmNlL2JtYWxsb2MnLAotICAgICAgICAnU291cmNlL0phdmFTY3JpcHRDb3JlJywKLSAgICAg
ICAgJ1NvdXJjZS9UaGlyZFBhcnR5JywKLSAgICAgICAgJ0xheW91dFRlc3RzJywKLSAgICAgICAg
J1Rvb2xzJywKLSAgICBdCi0KLSAgICBiaWdfc3VyX2J1aWxkZXJfcGF0aHMgPSBbCi0gICAgICAg
ICdTb3VyY2UvJywKLSAgICAgICAgJ1Rvb2xzLycsCi0gICAgXQotICAgIHdlYmtpdHB5X3BhdGhz
ID0gWwotICAgICAgICAnVG9vbHMvU2NyaXB0cy93ZWJraXRweScsCi0gICAgICAgICdUb29scy9T
Y3JpcHRzL2xpYnJhcmllcycsCi0gICAgXQotCi0gICAgZ3JvdXBfdG9fcGF0aHNfbWFwcGluZyA9
IHsKLSAgICAgICAgJ2JpbmRpbmdzJzogYmluZGluZ3NfcGF0aHMsCi0gICAgICAgICdiaWdzdXIt
cmVsZWFzZS1idWlsZCc6IGJpZ19zdXJfYnVpbGRlcl9wYXRocywKLSAgICAgICAgJ3NlcnZpY2Vz
LWV3cyc6IHNlcnZpY2VzX3BhdGhzLAotICAgICAgICAnanNjJzoganNjX3BhdGhzLAotICAgICAg
ICAnd2Via2l0cHknOiB3ZWJraXRweV9wYXRocywKLSAgICAgICAgJ3drMS10ZXN0cyc6IHdrMV9w
YXRocywKLSAgICAgICAgJ3dpbmRvd3MnOiB3azFfcGF0aHMsCi0gICAgfQotCi0gICAgZGVmIF9w
YXRjaF9pc19yZWxldmFudChzZWxmLCBwYXRjaCwgYnVpbGRlck5hbWUpOgotICAgICAgICBncm91
cCA9IFtncm91cCBmb3IgZ3JvdXAgaW4gc2VsZi5ncm91cF90b19wYXRoc19tYXBwaW5nLmtleXMo
KSBpZiBncm91cC5sb3dlcigpIGluIGJ1aWxkZXJOYW1lLmxvd2VyKCldCi0gICAgICAgIGlmIG5v
dCBncm91cDoKLSAgICAgICAgICAgICMgVGhpcyBidWlsZGVyIGRvZXNuJ3QgaGF2ZSBwYXRocyBk
ZWZpbmVkLCBhbGwgcGF0Y2hlcyBhcmUgcmVsZXZhbnQuCi0gICAgICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgICAgIHJlbGV2YW50X3BhdGhzID0gc2VsZi5ncm91cF90b19wYXRoc19tYXBwaW5n
W2dyb3VwWzBdXQotCi0gICAgICAgIGZvciBjaGFuZ2UgaW4gcGF0Y2guc3BsaXRsaW5lcygpOgot
ICAgICAgICAgICAgZm9yIHBhdGggaW4gcmVsZXZhbnRfcGF0aHM6Ci0gICAgICAgICAgICAgICAg
aWYgcmUuc2VhcmNoKHBhdGgsIGNoYW5nZSwgcmUuSUdOT1JFQ0FTRSk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9nZXRf
cGF0Y2goc2VsZik6Ci0gICAgICAgIHNvdXJjZXN0YW1wID0gc2VsZi5idWlsZC5nZXRTb3VyY2VT
dGFtcChzZWxmLmdldFByb3BlcnR5KCdjb2RlYmFzZScsICcnKSkKLSAgICAgICAgaWYgbm90IHNv
dXJjZXN0YW1wIG9yIG5vdCBzb3VyY2VzdGFtcC5wYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIHJldHVybiBzb3VyY2VzdGFtcC5wYXRjaFsxXQotCi0gICAgQGRlZmVyLmlu
bGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0g
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRk
TG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgcGF0Y2ggPSBzZWxmLl9nZXRfcGF0Y2goKQotICAgICAgICBp
ZiBub3QgcGF0Y2g6Ci0gICAgICAgICAgICAjIFRoaXMgYnVpbGQgZG9lc24ndCBoYXZlIGEgcGF0
Y2gsIGl0IG1pZ2h0IGJlIGEgZm9yY2UgYnVpbGQuCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVk
KFNVQ0NFU1MpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX3Bh
dGNoX2lzX3JlbGV2YW50KHBhdGNoLCBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcn
KSk6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVGhpcyBwYXRjaCBjb250
YWlucyByZWxldmFudCBjaGFuZ2VzLicpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NF
U1MpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdz
dGRpbycsICdUaGlzIHBhdGNoIGRvZXMgbm90IGhhdmUgcmVsZXZhbnQgY2hhbmdlcy4nKQotICAg
ICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9
IFNLSVBQRUQKLSAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFsnUGF0Y2gge30gZG9l
c25cJ3QgaGF2ZSByZWxldmFudCBjaGFuZ2VzJy5mb3JtYXQoc2VsZi5nZXRQcm9wZXJ0eSgncGF0
Y2hfaWQnLCAnJykpXSwgU0tJUFBFRCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBn
ZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gRkFJTFVS
RToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdQYXRjaCBkb2VzblwndCBoYXZlIHJl
bGV2YW50IGNoYW5nZXMnfQotICAgICAgICByZXR1cm4gc3VwZXIoQ2hlY2tQYXRjaFJlbGV2YW5j
ZSwgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0KLQotY2xhc3MgQnVnemlsbGEob2JqZWN0KToK
LSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgYnVnX3VybChjbHMsIGJ1Z19pZCk6Ci0gICAgICAg
IGlmIG5vdCBidWdfaWQ6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJuICd7
fXNob3dfYnVnLmNnaT9pZD17fScuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBidWdfaWQpCi0KLSAg
ICBAY2xhc3NtZXRob2QKLSAgICBkZWYgcGF0Y2hfdXJsKGNscywgcGF0Y2hfaWQpOgotICAgICAg
ICBpZiBub3QgcGF0Y2hfaWQ6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJu
ICd7fWF0dGFjaG1lbnQuY2dpP2lkPXt9JmFjdGlvbj1wcmV0dHlwYXRjaCcuZm9ybWF0KEJVR19T
RVJWRVJfVVJMLCBwYXRjaF9pZCkKLQotCi1jbGFzcyBCdWd6aWxsYU1peGluKG9iamVjdCk6Ci0g
ICAgYWRkVVJMcyA9IEZhbHNlCi0gICAgYnVnX29wZW5fc3RhdHVzZXMgPSBbJ1VOQ09ORklSTUVE
JywgJ05FVycsICdBU1NJR05FRCcsICdSRU9QRU5FRCddCi0gICAgYnVnX2Nsb3NlZF9zdGF0dXNl
cyA9IFsnUkVTT0xWRUQnLCAnVkVSSUZJRUQnLCAnQ0xPU0VEJ10KLSAgICByZXZlcnRfcHJlYW1i
bGUgPSAnUkVWRVJUIG9mIHInCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVm
IF9hZGRUb0xvZyhzZWxmLCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgbG9nID0gc2VsZi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9y
OgotICAgICAgICAgICAgbG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAg
bG9nLmFkZFN0ZG91dChtZXNzYWdlKQotCi0gICAgZGVmIGZldGNoX2RhdGFfZnJvbV91cmxfd2l0
aF9hdXRoZW50aWNhdGlvbihzZWxmLCB1cmwpOgotICAgICAgICByZXNwb25zZSA9IE5vbmUKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCBwYXJh
bXM9eydCdWd6aWxsYV9hcGlfa2V5Jzogc2VsZi5nZXRfYnVnemlsbGFfYXBpX2tleSgpfSkKLSAg
ICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnQWNjZXNzZWQge3VybH0gd2l0aCB1bmV4cGVjdGVk
IHN0YXR1cyBjb2RlIHtzdGF0dXNfY29kZX0uXG4nLmZvcm1hdCh1cmw9dXJsLCBzdGF0dXNfY29k
ZT1yZXNwb25zZS5zdGF0dXNfY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgIyBDYXRjaGluZyBhbGwg
ZXhjZXB0aW9ucyBoZXJlIHRvIHNhZmVndWFyZCBhcGkga2V5LgotICAgICAgICAgICAgc2VsZi5f
YWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH0uXG4nLmZvcm1hdCh1cmw9
dXJsKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiByZXNwb25zZQot
Ci0gICAgZGVmIGZldGNoX2RhdGFfZnJvbV91cmwoc2VsZiwgdXJsKToKLSAgICAgICAgcmVzcG9u
c2UgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMu
Z2V0KHVybCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYg
cmVzcG9uc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxl
ZCB0byBhY2Nlc3Mge3VybH0gd2l0aCBzdGF0dXMgY29kZSB7c3RhdHVzX2NvZGV9LlxuJy5mb3Jt
YXQodXJsPXVybCwgc3RhdHVzX2NvZGU9cmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnRmFpbGVk
IHRvIGFjY2VzcyB7dXJsfSB3aXRoIGV4Y2VwdGlvbjoge2V4Y2VwdGlvbn1cbicuZm9ybWF0KHVy
bD11cmwsIGV4Y2VwdGlvbj1lKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlm
IHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9n
KCdzdGRpbycsICdBY2Nlc3NlZCB7dXJsfSB3aXRoIHVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUge3N0
YXR1c19jb2RlfS5cbicuZm9ybWF0KHVybD11cmwsIHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0YXR1
c19jb2RlKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiByZXNwb25z
ZQotCi0gICAgZGVmIGdldF9wYXRjaF9qc29uKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0
Y2hfdXJsID0gJ3t9cmVzdC9idWcvYXR0YWNobWVudC97fScuZm9ybWF0KEJVR19TRVJWRVJfVVJM
LCBwYXRjaF9pZCkKLSAgICAgICAgcGF0Y2ggPSBzZWxmLmZldGNoX2RhdGFfZnJvbV91cmxfd2l0
aF9hdXRoZW50aWNhdGlvbihwYXRjaF91cmwpCi0gICAgICAgIGlmIG5vdCBwYXRjaDoKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHBhdGNoX2pzb24gPSBwYXRjaC5qc29uKCkuZ2V0
KCdhdHRhY2htZW50cycpCi0gICAgICAgIGlmIG5vdCBwYXRjaF9qc29uIG9yIGxlbihwYXRjaF9q
c29uKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHBhdGNo
X2pzb24uZ2V0KHN0cihwYXRjaF9pZCkpCi0KLSAgICBkZWYgZ2V0X2J1Z19qc29uKHNlbGYsIGJ1
Z19pZCk6Ci0gICAgICAgIGJ1Z191cmwgPSAne31yZXN0L2J1Zy97fScuZm9ybWF0KEJVR19TRVJW
RVJfVVJMLCBidWdfaWQpCi0gICAgICAgIGJ1ZyA9IHNlbGYuZmV0Y2hfZGF0YV9mcm9tX3VybF93
aXRoX2F1dGhlbnRpY2F0aW9uKGJ1Z191cmwpCi0gICAgICAgIGlmIG5vdCBidWc6Ci0gICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICBidWdzX2pzb24gPSBidWcuanNvbigpLmdldCgnYnVn
cycpCi0gICAgICAgIGlmIG5vdCBidWdzX2pzb24gb3IgbGVuKGJ1Z3NfanNvbikgPT0gMDoKLSAg
ICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBidWdzX2pzb25bMF0KLQotICAg
IGRlZiBnZXRfYnVnX2lkX2Zyb21fcGF0Y2goc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRj
aF9qc29uID0gc2VsZi5nZXRfcGF0Y2hfanNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYgbm90IHBh
dGNoX2pzb246Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRv
IGZldGNoIHBhdGNoIHt9LlxuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJu
IC0xCi0gICAgICAgIHJldHVybiBwYXRjaF9qc29uLmdldCgnYnVnX2lkJykKLQotICAgIGRlZiBf
aXNfcGF0Y2hfb2Jzb2xldGUoc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF9qc29uID0g
c2VsZi5nZXRfcGF0Y2hfanNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYgbm90IHBhdGNoX2pzb246
Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRvIGZldGNoIHBh
dGNoIHt9LlxuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAg
ICAgICAgaWYgc3RyKHBhdGNoX2pzb24uZ2V0KCdpZCcpKSAhPSBzZWxmLmdldFByb3BlcnR5KCdw
YXRjaF9pZCcsICcnKToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdGZXRj
aGVkIHBhdGNoIGlkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggcmVxdWVzdGVkIHBhdGNoIGlkIHt9
LiBVbmFibGUgdG8gdmFsaWRhdGUuXG4nLmZvcm1hdChwYXRjaF9qc29uLmdldCgnaWQnKSwgc2Vs
Zi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0K
LSAgICAgICAgcGF0Y2hfYXV0aG9yID0gcGF0Y2hfanNvbi5nZXQoJ2NyZWF0b3InKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9hdXRob3InLCBwYXRjaF9hdXRob3IpCi0gICAgICAg
IHBhdGNoX3RpdGxlID0gcGF0Y2hfanNvbi5nZXQoJ3N1bW1hcnknKQotICAgICAgICBpZiBwYXRj
aF90aXRsZS5zdGFydHN3aXRoKHNlbGYucmV2ZXJ0X3ByZWFtYmxlKToKLSAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3JldmVydCcsIFRydWUpCi0gICAgICAgIGlmIHNlbGYuYWRkVVJMczoK
LSAgICAgICAgICAgIHNlbGYuYWRkVVJMKCdQYXRjaCBieToge30nLmZvcm1hdChwYXRjaF9hdXRo
b3IpLCAnJykKLSAgICAgICAgcmV0dXJuIHBhdGNoX2pzb24uZ2V0KCdpc19vYnNvbGV0ZScpCi0K
LSAgICBkZWYgX2lzX3BhdGNoX3Jldmlld19kZW5pZWQoc2VsZiwgcGF0Y2hfaWQpOgotICAgICAg
ICBwYXRjaF9qc29uID0gc2VsZi5nZXRfcGF0Y2hfanNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYg
bm90IHBhdGNoX2pzb246Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5h
YmxlIHRvIGZldGNoIHBhdGNoIHt9LlxuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAg
cmV0dXJuIC0xCi0KLSAgICAgICAgZm9yIGZsYWcgaW4gcGF0Y2hfanNvbi5nZXQoJ2ZsYWdzJywg
W10pOgotICAgICAgICAgICAgaWYgZmxhZy5nZXQoJ25hbWUnKSA9PSAncmV2aWV3JyBhbmQgZmxh
Zy5nZXQoJ3N0YXR1cycpID09ICctJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAg
ICByZXR1cm4gMAotCi0gICAgZGVmIF9pc19wYXRjaF9jcV9wbHVzKHNlbGYsIHBhdGNoX2lkKToK
LSAgICAgICAgcGF0Y2hfanNvbiA9IHNlbGYuZ2V0X3BhdGNoX2pzb24ocGF0Y2hfaWQpCi0gICAg
ICAgIGlmIG5vdCBwYXRjaF9qc29uOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlv
JywgJ1VuYWJsZSB0byBmZXRjaCBwYXRjaCB7fS5cbicuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAg
ICAgICAgIHJldHVybiAtMQotCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24uZ2V0KCdm
bGFncycsIFtdKToKLSAgICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ2NvbW1pdC1x
dWV1ZScgYW5kIGZsYWcuZ2V0KCdzdGF0dXMnKSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgncGF0Y2hfY29tbWl0dGVyJywgZmxhZy5nZXQoJ3NldHRlcicsICcnKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9k
b2VzX3BhdGNoX2hhdmVfYWNjZXB0YWJsZV9yZXZpZXdfZmxhZyhzZWxmLCBwYXRjaF9pZCk6Ci0g
ICAgICAgIHBhdGNoX2pzb24gPSBzZWxmLmdldF9wYXRjaF9qc29uKHBhdGNoX2lkKQotICAgICAg
ICBpZiBub3QgcGF0Y2hfanNvbjoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycs
ICdVbmFibGUgdG8gZmV0Y2ggcGF0Y2gge30uXG4nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAg
ICAgICByZXR1cm4gLTEKLQotICAgICAgICBmb3IgZmxhZyBpbiBwYXRjaF9qc29uLmdldCgnZmxh
Z3MnLCBbXSk6Ci0gICAgICAgICAgICBpZiBmbGFnLmdldCgnbmFtZScpID09ICdyZXZpZXcnOgot
ICAgICAgICAgICAgICAgIHJldmlld19zdGF0dXMgPSBmbGFnLmdldCgnc3RhdHVzJykKLSAgICAg
ICAgICAgICAgICBpZiByZXZpZXdfc3RhdHVzID09ICcrJzoKLSAgICAgICAgICAgICAgICAgICAg
cGF0Y2hfcmV2aWV3ZXIgPSBmbGFnLmdldCgnc2V0dGVyJywgJycpCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyJywgcGF0Y2hfcmV2aWV3ZXIpCi0g
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuYWRkVVJMczoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuYWRkVVJMKCdSZXZpZXdlZCBieToge30nLmZvcm1hdChwYXRjaF9yZXZpZXdlciks
ICcnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgICAgIGlmIHJl
dmlld19zdGF0dXMgaW4gWyctJywgJz8nXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRk
VG9Mb2coJ3N0ZGlvJywgJ1BhdGNoIHt9IGlzIG1hcmtlZCBye30uXG4nLmZvcm1hdChwYXRjaF9p
ZCwgcmV2aWV3X3N0YXR1cykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAg
IHJldHVybiAxICAjIFBhdGNoIHdpdGhvdXQgcmV2aWV3IGZsYWcgaXMgYWNjZXB0YWJsZSwgc2lu
Y2UgdGhlIENoYW5nZUxvZyBtaWdodCBoYXZlICdSZXZpZXdlZCBieScgaW4gaXQuCi0KLSAgICBk
ZWYgX2lzX2J1Z19jbG9zZWQoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgaWYgbm90IGJ1Z19pZDoK
LSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdTa2lwcGluZyBidWcgc3RhdHVz
IHZhbGlkYXRpb24gc2luY2UgYnVnIGlkIGlzIE5vbmUuXG4nKQotICAgICAgICAgICAgcmV0dXJu
IC0xCi0KLSAgICAgICAgYnVnX2pzb24gPSBzZWxmLmdldF9idWdfanNvbihidWdfaWQpCi0gICAg
ICAgIGlmIG5vdCBidWdfanNvbiBvciBub3QgYnVnX2pzb24uZ2V0KCdzdGF0dXMnKToKLSAgICAg
ICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdVbmFibGUgdG8gZmV0Y2ggYnVnIHt9Llxu
Jy5mb3JtYXQoYnVnX2lkKSkKLSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAgICAgIGJ1Z190
aXRsZSA9IGJ1Z19qc29uLmdldCgnc3VtbWFyeScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2J1Z190aXRsZScsIGJ1Z190aXRsZSkKLSAgICAgICAgc2Vuc2l0aXZlID0gYnVnX2pzb24uZ2V0
KCdwcm9kdWN0JykgPT0gJ1NlY3VyaXR5JwotICAgICAgICBpZiBzZW5zaXRpdmU6Ci0gICAgICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdzZW5zaXRpdmUnLCBUcnVlKQotICAgICAgICAgICAgYnVn
X3RpdGxlID0gJycKLSAgICAgICAgaWYgc2VsZi5hZGRVUkxzOgotICAgICAgICAgICAgc2VsZi5h
ZGRVUkwodSdCdWcge30ge30nLmZvcm1hdChidWdfaWQsIGJ1Z190aXRsZSksIEJ1Z3ppbGxhLmJ1
Z191cmwoYnVnX2lkKSkKLSAgICAgICAgaWYgYnVnX2pzb24uZ2V0KCdzdGF0dXMnKSBpbiBzZWxm
LmJ1Z19jbG9zZWRfc3RhdHVzZXM6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICByZXR1
cm4gMAotCi0gICAgZGVmIHNob3VsZF9zZW5kX2VtYWlsKHNlbGYsIHBhdGNoX2lkKToKLSAgICAg
ICAgcGF0Y2hfanNvbiA9IHNlbGYuZ2V0X3BhdGNoX2pzb24ocGF0Y2hfaWQpCi0gICAgICAgIGlm
IG5vdCBwYXRjaF9qc29uOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1Vu
YWJsZSB0byBmZXRjaCBwYXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICAgICAgb2Jzb2xldGUgPSBwYXRjaF9qc29uLmdldCgnaXNfb2Jzb2xl
dGUnKQotICAgICAgICBpZiBvYnNvbGV0ZSA9PSAxOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9M
b2coJ3N0ZGlvJywgJ1NraXBwaW5nIGVtYWlsIHNpbmNlIHBhdGNoIHt9IGlzIG9ic29sZXRlJy5m
b3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV2
aWV3X2RlbmllZCA9IEZhbHNlCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24uZ2V0KCdm
bGFncycsIFtdKToKLSAgICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ3Jldmlldycg
YW5kIGZsYWcuZ2V0KCdzdGF0dXMnKSA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgcmV2aWV3X2Rl
bmllZCA9IFRydWUKLQotICAgICAgICBpZiByZXZpZXdfZGVuaWVkOgotICAgICAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1NraXBwaW5nIGVtYWlsIHNpbmNlIHBhdGNoIHt9IGlzIG1h
cmtlZCByLScuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIGdldF9idWd6aWxsYV9hcGlfa2V5KHNlbGYpOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXNzd29yZHMgPSBqc29uLmxvYWQob3BlbigncGFz
c3dvcmRzLmpzb24nKSkKLSAgICAgICAgICAgIHJldHVybiBwYXNzd29yZHMuZ2V0KCdCVUdaSUxM
QV9BUElfS0VZJywgJycpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHByaW50KCdFcnJv
ciBpbiByZWFkaW5nIEJ1Z3ppbGxhIGFwaSBrZXknKQotICAgICAgICAgICAgcmV0dXJuICcnCi0K
LSAgICBkZWYgcmVtb3ZlX2ZsYWdzX29uX3BhdGNoKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAg
cGF0Y2hfdXJsID0gJ3t9cmVzdC9idWcvYXR0YWNobWVudC97fScuZm9ybWF0KEJVR19TRVJWRVJf
VVJMLCBwYXRjaF9pZCkKLSAgICAgICAgZmxhZ3MgPSBbeyduYW1lJzogJ3JldmlldycsICdzdGF0
dXMnOiAnWCd9LCB7J25hbWUnOiAnY29tbWl0LXF1ZXVlJywgJ3N0YXR1cyc6ICdYJ31dCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucHV0KHBhdGNoX3VybCwg
anNvbj17J2ZsYWdzJzogZmxhZ3MsICdCdWd6aWxsYV9hcGlfa2V5Jzogc2VsZi5nZXRfYnVnemls
bGFfYXBpX2tleSgpfSkKLSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIG5vdCBp
biBbMjAwLCAyMDFdOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdV
bmFibGUgdG8gcmVtb3ZlIGZsYWdzIG9uIHBhdGNoIHt9LiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNv
ZGUgZnJvbSBidWd6aWxsYToge30nLmZvcm1hdChwYXRjaF9pZCwgcmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdFcnJvciBp
biByZW1vdmluZyBmbGFncyBvbiBQYXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAg
ICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBkZWYgc2V0
X2NxX21pbnVzX2ZsYWdfb25fcGF0Y2goc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF91
cmwgPSAne31yZXN0L2J1Zy9hdHRhY2htZW50L3t9Jy5mb3JtYXQoQlVHX1NFUlZFUl9VUkwsIHBh
dGNoX2lkKQotICAgICAgICBmbGFncyA9IFt7J25hbWUnOiAnY29tbWl0LXF1ZXVlJywgJ3N0YXR1
cyc6ICctJ31dCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMu
cHV0KHBhdGNoX3VybCwganNvbj17J2ZsYWdzJzogZmxhZ3MsICdCdWd6aWxsYV9hcGlfa2V5Jzog
c2VsZi5nZXRfYnVnemlsbGFfYXBpX2tleSgpfSkKLSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0
YXR1c19jb2RlIG5vdCBpbiBbMjAwLCAyMDFdOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRv
TG9nKCdzdGRpbycsICdVbmFibGUgdG8gc2V0IGNxLSBmbGFnIG9uIHBhdGNoIHt9LiBVbmV4cGVj
dGVkIHJlc3BvbnNlIGNvZGUgZnJvbSBidWd6aWxsYToge30nLmZvcm1hdChwYXRjaF9pZCwgcmVz
cG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdz
dGRpbycsICdFcnJvciBpbiBzZXR0aW5nIGNxLSBmbGFnIG9uIHBhdGNoIHt9Jy5mb3JtYXQocGF0
Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAgICAgcmV0dXJuIFNVQ0NF
U1MKLQotICAgIGRlZiBjbG9zZV9idWcoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgYnVnX3VybCA9
ICd7fXJlc3QvYnVnL3t9Jy5mb3JtYXQoQlVHX1NFUlZFUl9VUkwsIGJ1Z19pZCkKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5wdXQoYnVnX3VybCwganNvbj17
J3N0YXR1cyc6ICdSRVNPTFZFRCcsICdyZXNvbHV0aW9uJzogJ0ZJWEVEJywgJ0J1Z3ppbGxhX2Fw
aV9rZXknOiBzZWxmLmdldF9idWd6aWxsYV9hcGlfa2V5KCl9KQotICAgICAgICAgICAgaWYgcmVz
cG9uc2Uuc3RhdHVzX2NvZGUgbm90IGluIFsyMDAsIDIwMV06Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1VuYWJsZSB0byBjbG9zZSBidWcge30uIFVuZXhwZWN0ZWQg
cmVzcG9uc2UgY29kZSBmcm9tIGJ1Z3ppbGxhOiB7fScuZm9ybWF0KGJ1Z19pZCwgcmVzcG9uc2Uu
c3RhdHVzX2NvZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIGV4
Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycs
ICdFcnJvciBpbiBjbG9zaW5nIGJ1ZyB7fScuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICBy
ZXR1cm4gRkFJTFVSRQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgZGVmIGNvbW1lbnRf
b25fYnVnKHNlbGYsIGJ1Z19pZCwgY29tbWVudF90ZXh0KToKLSAgICAgICAgYnVnX2NvbW1lbnRf
dXJsID0gJ3t9cmVzdC9idWcve30vY29tbWVudCcuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBidWdf
aWQpCi0gICAgICAgIGlmIG5vdCBjb21tZW50X3RleHQ6Ci0gICAgICAgICAgICByZXR1cm4gRkFJ
TFVSRQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3Qo
YnVnX2NvbW1lbnRfdXJsLCBkYXRhPXsnY29tbWVudCc6IGNvbW1lbnRfdGV4dCwgJ0J1Z3ppbGxh
X2FwaV9rZXknOiBzZWxmLmdldF9idWd6aWxsYV9hcGlfa2V5KCl9KQotICAgICAgICAgICAgaWYg
cmVzcG9uc2Uuc3RhdHVzX2NvZGUgbm90IGluIFsyMDAsIDIwMV06Ci0gICAgICAgICAgICAgICAg
c2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1VuYWJsZSB0byBjb21tZW50IG9uIGJ1ZyB7fS4gVW5l
eHBlY3RlZCByZXNwb25zZSBjb2RlIGZyb20gYnVnemlsbGE6IHt9Jy5mb3JtYXQoYnVnX2lkLCBy
ZXNwb25zZS5zdGF0dXNfY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2co
J3N0ZGlvJywgJ0Vycm9yIGluIGNvbW1lbnRpbmcgb24gYnVnIHt9Jy5mb3JtYXQoYnVnX2lkKSkK
LSAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAg
ICBkZWYgY3JlYXRlX2J1ZyhzZWxmLCBidWdfdGl0bGUsIGJ1Z19kZXNjcmlwdGlvbiwgY29tcG9u
ZW50PSdUb29scyAvIFRlc3RzJywgY2NfbGlzdD1Ob25lKToKLSAgICAgICAgYnVnX3VybCA9ICd7
fXJlc3QvYnVnJy5mb3JtYXQoQlVHX1NFUlZFUl9VUkwpCi0gICAgICAgIGlmIG5vdCAoYnVnX3Rp
dGxlIGFuZCBidWdfZGVzY3JpcHRpb24pOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoYnVnX3Vy
bCwgZGF0YT17J3Byb2R1Y3QnOiAnV2ViS2l0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcG9uZW50JzogY29tcG9uZW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzog
J1dlYktpdCBOaWdodGx5IEJ1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnc3VtbWFyeSc6IGJ1Z190aXRsZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiBidWdf
ZGVzY3JpcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2NjJzogY2NfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnQnVnemlsbGFfYXBpX2tleSc6IHNlbGYuZ2V0X2J1Z3ppbGxh
X2FwaV9rZXkoKX0pCi0gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSBub3QgaW4g
WzIwMCwgMjAxXToKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5h
YmxlIHRvIGZpbGUgYnVnLiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgZnJvbSBidWd6aWxsYTog
e30nLmZvcm1hdChyZXNwb25zZS5zdGF0dXNfY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IEZBSUxVUkUKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2Vs
Zi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0Vycm9yIGluIGNyZWF0aW5nIGJ1Zzoge30nLmZvcm1hdChi
dWdfdGl0bGUpKQotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAgICAgc2VsZi5fYWRk
VG9Mb2coJ3N0ZGlvJywgJ0ZpbGVkIGJ1Zzoge30nLmZvcm1hdChidWdfdGl0bGUpKQotICAgICAg
ICByZXR1cm4gU1VDQ0VTUwotCi0KLWNsYXNzIFZhbGlkYXRlUGF0Y2goYnVpbGRzdGVwLkJ1aWxk
U3RlcCwgQnVnemlsbGFNaXhpbik6Ci0gICAgbmFtZSA9ICd2YWxpZGF0ZS1wYXRjaCcKLSAgICBk
ZXNjcmlwdGlvbiA9IFsndmFsaWRhdGUtcGF0Y2ggcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25E
b25lID0gWydWYWxpZGF0ZWQgcGF0Y2gnXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAg
IGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyaWZ5T2Jz
b2xldGU9VHJ1ZSwgdmVyaWZ5QnVnQ2xvc2VkPVRydWUsIHZlcmlmeVJldmlld0RlbmllZD1UcnVl
LCBhZGRVUkxzPVRydWUsIHZlcmlmeWNxcGx1cz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudmVyaWZ5
T2Jzb2xldGUgPSB2ZXJpZnlPYnNvbGV0ZQotICAgICAgICBzZWxmLnZlcmlmeUJ1Z0Nsb3NlZCA9
IHZlcmlmeUJ1Z0Nsb3NlZAotICAgICAgICBzZWxmLnZlcmlmeVJldmlld0RlbmllZCA9IHZlcmlm
eVJldmlld0RlbmllZAotICAgICAgICBzZWxmLnZlcmlmeWNxcGx1cyA9IHZlcmlmeWNxcGx1cwot
ICAgICAgICBzZWxmLmFkZFVSTHMgPSBhZGRVUkxzCi0gICAgICAgIGJ1aWxkc3RlcC5CdWlsZFN0
ZXAuX19pbml0X18oc2VsZikKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIHJldHVybiB7dSdz
dGVwJzogdW5pY29kZShzZWxmLmRlc2NyaXB0aW9uRG9uZSl9Ci0gICAgICAgIHJldHVybiBzdXBl
cihWYWxpZGF0ZVBhdGNoLCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotICAgIGRlZiBza2lw
X2J1aWxkKHNlbGYsIHJlYXNvbik6Ci0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsIHJl
YXNvbikKLSAgICAgICAgc2VsZi5maW5pc2hlZChGQUlMVVJFKQotICAgICAgICBzZWxmLmJ1aWxk
LnJlc3VsdHMgPSBTS0lQUEVECi0gICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gcmVhc29u
Ci0gICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbcmVhc29uXSwgU0tJUFBFRCkKLQot
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5
KCdwYXRjaF9pZCcsICcnKQotICAgICAgICBpZiBub3QgcGF0Y2hfaWQ6Ci0gICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnTm8gcGF0Y2hfaWQgZm91bmQuIFVuYWJsZSB0byBwcm9j
ZWVkIHdpdGhvdXQgcGF0Y2hfaWQuXG4nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRv
bmUgPSAnTm8gcGF0Y2ggaWQgZm91bmQnCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxV
UkUpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGJ1Z19pZCA9IHNlbGYuZ2V0
UHJvcGVydHkoJ2J1Z19pZCcsICcnKSBvciBzZWxmLmdldF9idWdfaWRfZnJvbV9wYXRjaChwYXRj
aF9pZCkKLQotICAgICAgICBidWdfY2xvc2VkID0gc2VsZi5faXNfYnVnX2Nsb3NlZChidWdfaWQp
IGlmIHNlbGYudmVyaWZ5QnVnQ2xvc2VkIGVsc2UgMAotICAgICAgICBpZiBidWdfY2xvc2VkID09
IDE6Ci0gICAgICAgICAgICBzZWxmLnNraXBfYnVpbGQoJ0J1ZyB7fSBpcyBhbHJlYWR5IGNsb3Nl
ZCcuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIG9i
c29sZXRlID0gc2VsZi5faXNfcGF0Y2hfb2Jzb2xldGUocGF0Y2hfaWQpIGlmIHNlbGYudmVyaWZ5
T2Jzb2xldGUgZWxzZSAwCi0gICAgICAgIGlmIG9ic29sZXRlID09IDE6Ci0gICAgICAgICAgICBz
ZWxmLnNraXBfYnVpbGQoJ1BhdGNoIHt9IGlzIG9ic29sZXRlJy5mb3JtYXQocGF0Y2hfaWQpKQot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICByZXZpZXdfZGVuaWVkID0gc2VsZi5f
aXNfcGF0Y2hfcmV2aWV3X2RlbmllZChwYXRjaF9pZCkgaWYgc2VsZi52ZXJpZnlSZXZpZXdEZW5p
ZWQgZWxzZSAwCi0gICAgICAgIGlmIHJldmlld19kZW5pZWQgPT0gMToKLSAgICAgICAgICAgIHNl
bGYuc2tpcF9idWlsZCgnUGF0Y2gge30gaXMgbWFya2VkIHItJy5mb3JtYXQocGF0Y2hfaWQpKQot
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBjcV9wbHVzID0gc2VsZi5faXNfcGF0
Y2hfY3FfcGx1cyhwYXRjaF9pZCkgaWYgc2VsZi52ZXJpZnljcXBsdXMgZWxzZSAxCi0gICAgICAg
IGlmIGNxX3BsdXMgIT0gMToKLSAgICAgICAgICAgIHNlbGYuc2tpcF9idWlsZCgnUGF0Y2gge30g
aXMgbm90IG1hcmtlZCBjcSsuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLQotICAgICAgICBhY2NlcHRhYmxlX3Jldmlld19mbGFnID0gc2VsZi5fZG9lc19wYXRj
aF9oYXZlX2FjY2VwdGFibGVfcmV2aWV3X2ZsYWcocGF0Y2hfaWQpIGlmIHNlbGYudmVyaWZ5Y3Fw
bHVzIGVsc2UgMQotICAgICAgICBpZiBhY2NlcHRhYmxlX3Jldmlld19mbGFnICE9IDE6Ci0gICAg
ICAgICAgICBzZWxmLnNraXBfYnVpbGQoJ1BhdGNoIHt9IGRvZXMgbm90IGhhdmUgYWNjZXB0YWJs
ZSByZXZpZXcgZmxhZy4nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIGlmIG9ic29sZXRlID09IC0xIG9yIHJldmlld19kZW5pZWQgPT0gLTEgb3Ig
YnVnX2Nsb3NlZCA9PSAtMToKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoV0FSTklOR1MpCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIHNlbGYudmVyaWZ5QnVnQ2xvc2Vk
OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0J1ZyBpcyBvcGVuLlxuJykK
LSAgICAgICAgaWYgc2VsZi52ZXJpZnlPYnNvbGV0ZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRv
TG9nKCdzdGRpbycsICdQYXRjaCBpcyBub3Qgb2Jzb2xldGUuXG4nKQotICAgICAgICBpZiBzZWxm
LnZlcmlmeVJldmlld0RlbmllZDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycs
ICdQYXRjaCBpcyBub3QgbWFya2VkIHItLlxuJykKLSAgICAgICAgaWYgc2VsZi52ZXJpZnljcXBs
dXM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnUGF0Y2ggaXMgbWFya2Vk
IGNxKy5cbicpCi0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnUGF0Y2ggaGF2
ZSBhY2NlcHRhYmxlIHJldmlldyBmbGFnLlxuJykKLSAgICAgICAgc2VsZi5maW5pc2hlZChTVUND
RVNTKQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLWNsYXNzIFZhbGlkYXRlQ29tbWl0ZXJBbmRS
ZXZpZXdlcihidWlsZHN0ZXAuQnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ3ZhbGlkYXRlLWNvbW1p
dGVyLWFuZC1yZXZpZXdlcicKLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1ZhbGlkYXRlZCBjb21t
aXRlciBhbmQgcmV2aWV3ZXInXQotICAgIHVybCA9ICdodHRwczovL3N2bi53ZWJraXQub3JnL3Jl
cG9zaXRvcnkvd2Via2l0L3RydW5rL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZp
Zy9jb250cmlidXRvcnMuanNvbicKLSAgICBjb250cmlidXRvcnMgPSB7fQotCi0gICAgZGVmIGxv
YWRfY29udHJpYnV0b3JzX2Zyb21fZGlzayhzZWxmKToKLSAgICAgICAgY3dkID0gb3MucGF0aC5h
YnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCi0gICAgICAgIHRvb2xzX2Rpcl9wYXRo
ID0gb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShjd2QpKQotICAgICAgICBjb250cmli
dXRvcnNfcGF0aCA9IG9zLnBhdGguam9pbih0b29sc19kaXJfcGF0aCwgJ1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMuanNvbicpCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJldHVybiBqc29uLmxvYWQob3Blbihjb250cmlidXRvcnNfcGF0aCkpCi0gICAgICAg
IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRp
bycsICdGYWlsZWQgdG8gbG9hZCB7fVxuJy5mb3JtYXQoY29udHJpYnV0b3JzX3BhdGgpKQotICAg
ICAgICAgICAgcmV0dXJuIHt9Ci0KLSAgICBkZWYgbG9hZF9jb250cmlidXRvcnNfZnJvbV90cmFj
KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdl
dChzZWxmLnVybCkKLSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnRmFpbGVkIHRvIGFjY2Vz
cyB7fSB3aXRoIHN0YXR1cyBjb2RlOiB7fVxuJy5mb3JtYXQoc2VsZi51cmwsIHJlc3BvbnNlLnN0
YXR1c19jb2RlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgICAgIHJldHVy
biByZXNwb25zZS5qc29uKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH1cbicu
Zm9ybWF0KHVybD1zZWxmLnVybCkpCi0gICAgICAgICAgICByZXR1cm4ge30KLQotICAgIGRlZiBs
b2FkX2NvbnRyaWJ1dG9ycyhzZWxmKToKLSAgICAgICAgY29udHJpYnV0b3JzX2pzb24gPSBzZWxm
LmxvYWRfY29udHJpYnV0b3JzX2Zyb21fdHJhYygpCi0gICAgICAgIGlmIG5vdCBjb250cmlidXRv
cnNfanNvbjoKLSAgICAgICAgICAgIGNvbnRyaWJ1dG9yc19qc29uID0gc2VsZi5sb2FkX2NvbnRy
aWJ1dG9yc19mcm9tX2Rpc2soKQotCi0gICAgICAgIGNvbnRyaWJ1dG9ycyA9IHt9Ci0gICAgICAg
IGZvciBrZXksIHZhbHVlIGluIGNvbnRyaWJ1dG9yc19qc29uLml0ZXJpdGVtcygpOgotICAgICAg
ICAgICAgZW1haWxzID0gdmFsdWUuZ2V0KCdlbWFpbHMnKQotICAgICAgICAgICAgZm9yIGVtYWls
IGluIGVtYWlsczoKLSAgICAgICAgICAgICAgICBjb250cmlidXRvcnNbZW1haWwubG93ZXIoKV0g
PSB7J25hbWUnOiBrZXksICdzdGF0dXMnOiB2YWx1ZS5nZXQoJ3N0YXR1cycpfQotICAgICAgICBy
ZXR1cm4gY29udHJpYnV0b3JzCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVm
IF9hZGRUb0xvZyhzZWxmLCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgbG9nID0gc2VsZi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9y
OgotICAgICAgICAgICAgbG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAg
bG9nLmFkZFN0ZG91dChtZXNzYWdlKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6
Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBGQUlMVVJFOgotICAgICAgICAgICAgcmV0dXJu
IHt1J3N0ZXAnOiB1bmljb2RlKHNlbGYuZGVzY3JpcHRpb25Eb25lKX0KLSAgICAgICAgcmV0dXJu
IGJ1aWxkc3RlcC5CdWlsZFN0ZXAuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQotCi0gICAgZGVmIGZh
aWxfYnVpbGQoc2VsZiwgZW1haWwsIHN0YXR1cyk6Ci0gICAgICAgIHJlYXNvbiA9ICd7fSBkb2Vz
IG5vdCBoYXZlIHt9IHBlcm1pc3Npb25zJy5mb3JtYXQoZW1haWwsIHN0YXR1cykKLSAgICAgICAg
Y29tbWVudCA9ICd7fSBkb2VzIG5vdCBoYXZlIHt9IHBlcm1pc3Npb25zIGFjY29yZGluZyB0byB7
fS4nLmZvcm1hdChlbWFpbCwgc3RhdHVzLCBzZWxmLnVybCkKLSAgICAgICAgY29tbWVudCArPSAn
XG5cblJlamVjdGluZyBhdHRhY2htZW50IHt9IGZyb20gY29tbWl0IHF1ZXVlLicuZm9ybWF0KHNl
bGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBjb21tZW50KQotCi0gICAgICAgIHNlbGYuX2FkZFRv
TG9nKCdzdGRpbycsIHJlYXNvbikKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmlu
aXNoX3N1bW1hcnknLCByZWFzb24pCi0gICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1
cnJlbnRTdGVwKFtDb21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNo
KCldKQotICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgIHNlbGYuZGVzY3Jp
cHRpb25Eb25lID0gcmVhc29uCi0KLSAgICBkZWYgaXNfcmV2aWV3ZXIoc2VsZiwgZW1haWwpOgot
ICAgICAgICBjb250cmlidXRvciA9IHNlbGYuY29udHJpYnV0b3JzLmdldChlbWFpbCkKLSAgICAg
ICAgcmV0dXJuIGNvbnRyaWJ1dG9yIGFuZCBjb250cmlidXRvclsnc3RhdHVzJ10gPT0gJ3Jldmll
d2VyJwotCi0gICAgZGVmIGlzX2NvbW1pdHRlcihzZWxmLCBlbWFpbCk6Ci0gICAgICAgIGNvbnRy
aWJ1dG9yID0gc2VsZi5jb250cmlidXRvcnMuZ2V0KGVtYWlsKQotICAgICAgICByZXR1cm4gY29u
dHJpYnV0b3IgYW5kIGNvbnRyaWJ1dG9yWydzdGF0dXMnXSBpbiBbJ3Jldmlld2VyJywgJ2NvbW1p
dHRlciddCi0KLSAgICBkZWYgZnVsbF9uYW1lX2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgotICAg
ICAgICBjb250cmlidXRvciA9IHNlbGYuY29udHJpYnV0b3JzLmdldChlbWFpbCkKLSAgICAgICAg
aWYgbm90IGNvbnRyaWJ1dG9yOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIHJldHVy
biBjb250cmlidXRvci5nZXQoJ25hbWUnKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbnRyaWJ1dG9ycyA9IHNlbGYubG9hZF9jb250cmlidXRvcnMoKQotICAgICAgICBp
ZiBub3Qgc2VsZi5jb250cmlidXRvcnM6Ci0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxV
UkUpCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9ICdGYWlsZWQgdG8gZ2V0IGNv
bnRyaWJ1dG9ycyBpbmZvcm1hdGlvbicKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5p
c2hlZChbJ0ZhaWxlZCB0byBnZXQgY29udHJpYnV0b3JzIGluZm9ybWF0aW9uJ10sIEZBSUxVUkUp
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBwYXRjaF9jb21taXR0ZXIgPSBzZWxm
LmdldFByb3BlcnR5KCdwYXRjaF9jb21taXR0ZXInLCAnJykubG93ZXIoKQotICAgICAgICBpZiBu
b3Qgc2VsZi5pc19jb21taXR0ZXIocGF0Y2hfY29tbWl0dGVyKToKLSAgICAgICAgICAgIHNlbGYu
ZmFpbF9idWlsZChwYXRjaF9jb21taXR0ZXIsICdjb21taXR0ZXInKQotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ3t9IGlzIGEgdmFsaWQg
Y29tbWl0ZXIuXG4nLmZvcm1hdChwYXRjaF9jb21taXR0ZXIpKQotCi0gICAgICAgIHBhdGNoX3Jl
dmlld2VyID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfcmV2aWV3ZXInLCAnJykubG93ZXIoKQot
ICAgICAgICBpZiBub3QgcGF0Y2hfcmV2aWV3ZXI6Ci0gICAgICAgICAgICAjIFBhdGNoIGRvZXMg
bm90IGhhdmUgcisgZmxhZy4gVGhpcyBpcyBhY2NlcHRhYmxlLCBzaW5jZSB0aGUgQ2hhbmdlTG9n
IG1pZ2h0IGhhdmUgJ1Jldmlld2VkIGJ5JyBpbiBpdC4KLSAgICAgICAgICAgIHNlbGYuZGVzY3Jp
cHRpb25Eb25lID0gJ1ZhbGlkYXRlZCBjb21taXR0ZXInCi0gICAgICAgICAgICBzZWxmLmZpbmlz
aGVkKFNVQ0NFU1MpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyX2Z1bGxfbmFtZScsIHNlbGYuZnVsbF9uYW1lX2Zyb21f
ZW1haWwocGF0Y2hfcmV2aWV3ZXIpKQotICAgICAgICBpZiBub3Qgc2VsZi5pc19yZXZpZXdlcihw
YXRjaF9yZXZpZXdlcik6Ci0gICAgICAgICAgICBzZWxmLmZhaWxfYnVpbGQocGF0Y2hfcmV2aWV3
ZXIsICdyZXZpZXdlcicpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9h
ZGRUb0xvZygnc3RkaW8nLCAne30gaXMgYSB2YWxpZCByZXZpZXdlci5cbicuZm9ybWF0KHBhdGNo
X3Jldmlld2VyKSkKLSAgICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAgICAgICByZXR1
cm4gTm9uZQotCi0KLWNsYXNzIFZhbGlkYXRlQ2hhbmdlTG9nQW5kUmV2aWV3ZXIoc2hlbGwuU2hl
bGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3ZhbGlkYXRlLWNoYW5nZWxvZy1hbmQtcmV2aWV3ZXIn
Ci0gICAgZGVzY3JpcHRpb25Eb25lID0gWydWYWxpZGF0ZWQgQ2hhbmdlTG9nIGFuZCBSZXZpZXdl
ciddCi0gICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNo
JywgJ3ZhbGlkYXRlLWNoYW5nZWxvZycsICctLWNoZWNrLW9vcHMnLCAnLS1ub24taW50ZXJhY3Rp
dmUnXQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1
ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hlbGwuU2hl
bGxDb21tYW5kLl9faW5pdF9fKHNlbGYsIHRpbWVvdXQ9MyAqIDYwLCBsb2dFbnZpcm9uPUZhbHNl
LCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2Jz
ZXJ2ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUpCi0g
ICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0g
ICAgICAgIHJldHVybiBzaGVsbC5TaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBn
ZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0gU1VDQ0VT
UzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdDaGFuZ2VMb2cgdmFsaWRhdGlvbiBm
YWlsZWQnfQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLmdldFJlc3VsdFN1bW1h
cnkoc2VsZikKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAg
cmMgPSBzaGVsbC5TaGVsbENvbW1hbmQuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAg
ICAgaWYgcmMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIGxvZ190ZXh0ID0gc2VsZi5sb2dfb2Jz
ZXJ2ZXIuZ2V0U3Rkb3V0KCkgKyBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRlcnIoKQotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JywgbG9nX3RleHQp
Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsICdD
aGFuZ2VMb2cgdmFsaWRhdGlvbiBmYWlsZWQnKQotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRT
dGVwc0FmdGVyQ3VycmVudFN0ZXAoW0NvbW1lbnRPbkJ1ZygpLCBTZXRDb21taXRRdWV1ZU1pbnVz
RmxhZ09uUGF0Y2goKV0pCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFNldENvbW1pdFF1
ZXVlTWludXNGbGFnT25QYXRjaChidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToK
LSAgICBuYW1lID0gJ3NldC1jcS1taW51cy1mbGFnLW9uLXBhdGNoJwotCi0gICAgZGVmIHN0YXJ0
KHNlbGYpOgotICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywg
JycpCi0gICAgICAgIGJ1aWxkX2ZpbmlzaF9zdW1tYXJ5ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVp
bGRfZmluaXNoX3N1bW1hcnknLCBOb25lKQotCi0gICAgICAgIHJjID0gc2VsZi5zZXRfY3FfbWlu
dXNfZmxhZ19vbl9wYXRjaChwYXRjaF9pZCkKLSAgICAgICAgc2VsZi5maW5pc2hlZChyYykKLSAg
ICAgICAgaWYgYnVpbGRfZmluaXNoX3N1bW1hcnk6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1
aWxkRmluaXNoZWQoW2J1aWxkX2ZpbmlzaF9zdW1tYXJ5XSwgRkFJTFVSRSkKLSAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdT
ZXQgY3EtIGZsYWcgb24gcGF0Y2gnfQotICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVk
IHRvIHNldCBjcS0gZmxhZyBvbiBwYXRjaCd9Ci0KLQotY2xhc3MgUmVtb3ZlRmxhZ3NPblBhdGNo
KGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgotICAgIG5hbWUgPSAncmVtb3Zl
LWZsYWdzLWZyb20tcGF0Y2gnCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBGYWxzZQotICAgIGhhbHRP
bkZhaWx1cmUgPSBGYWxzZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBwYXRjaF9p
ZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycpCi0gICAgICAgIGlmIG5vdCBwYXRj
aF9pZDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdwYXRjaF9pZCBidWls
ZCBwcm9wZXJ0eSBub3QgZm91bmQuXG4nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRv
bmUgPSAnTm8gcGF0Y2ggaWQgZm91bmQnCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxV
UkUpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJjID0gc2VsZi5yZW1vdmVf
ZmxhZ3Nfb25fcGF0Y2gocGF0Y2hfaWQpCi0gICAgICAgIHNlbGYuZmluaXNoZWQocmMpCi0gICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAg
ICAgaWYgc2VsZi5yZXN1bHRzID09IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3Rl
cCc6IHUnUmVtb3ZlZCBmbGFncyBvbiBidWd6aWxsYSBwYXRjaCd9Ci0gICAgICAgIHJldHVybiB7
dSdzdGVwJzogdSdGYWlsZWQgdG8gcmVtb3ZlIGZsYWdzIG9uIGJ1Z3ppbGxhIHBhdGNoJ30KLQot
Ci1jbGFzcyBDbG9zZUJ1ZyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKLSAg
ICBuYW1lID0gJ2Nsb3NlLWJ1Z3ppbGxhLWJ1ZycKLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNl
Ci0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYnVnX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX2lkJywgJycpCi0gICAgICAg
IGlmIG5vdCBzZWxmLmJ1Z19pZDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycs
ICdidWdfaWQgYnVpbGQgcHJvcGVydHkgbm90IGZvdW5kLlxuJykKLSAgICAgICAgICAgIHNlbGYu
ZGVzY3JpcHRpb25Eb25lID0gJ05vIGJ1ZyBpZCBmb3VuZCcKLSAgICAgICAgICAgIHNlbGYuZmlu
aXNoZWQoRkFJTFVSRSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmMgPSBz
ZWxmLmNsb3NlX2J1ZyhzZWxmLmJ1Z19pZCkKLSAgICAgICAgc2VsZi5maW5pc2hlZChyYykKLSAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdz
dGVwJzogdSdDbG9zZWQgYnVnIHt9Jy5mb3JtYXQoc2VsZi5idWdfaWQpfQotICAgICAgICByZXR1
cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGNsb3NlIGJ1ZyB7fScuZm9ybWF0KHNlbGYuYnVnX2lk
KX0KLQotCi1jbGFzcyBDb21tZW50T25CdWcoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFN
aXhpbik6Ci0gICAgbmFtZSA9ICdjb21tZW50LW9uLWJ1Z3ppbGxhLWJ1ZycKLSAgICBmbHVua09u
RmFpbHVyZSA9IEZhbHNlCi0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgc3Rh
cnQoc2VsZik6Ci0gICAgICAgIHNlbGYuYnVnX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX2lk
JywgJycpCi0gICAgICAgIHNlbGYuY29tbWVudF90ZXh0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVn
emlsbGFfY29tbWVudF90ZXh0JywgJycpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuY29tbWVudF90
ZXh0OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ2J1Z3ppbGxhX2NvbW1l
bnRfdGV4dCBidWlsZCBwcm9wZXJ0eSBub3QgZm91bmQuXG4nKQotICAgICAgICAgICAgc2VsZi5k
ZXNjcmlwdGlvbkRvbmUgPSAnTm8gYnVnemlsbGEgY29tbWVudCBmb3VuZCcKLSAgICAgICAgICAg
IHNlbGYuZmluaXNoZWQoV0FSTklOR1MpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAg
ICAgIHJjID0gc2VsZi5jb21tZW50X29uX2J1ZyhzZWxmLmJ1Z19pZCwgc2VsZi5jb21tZW50X3Rl
eHQpCi0gICAgICAgIHNlbGYuZmluaXNoZWQocmMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAg
ICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzID09
IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnQWRkZWQgY29tbWVudCBv
biBidWcge30nLmZvcm1hdChzZWxmLmJ1Z19pZCl9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzog
dSdGYWlsZWQgdG8gYWRkIGNvbW1lbnQgb24gYnVnIHt9Jy5mb3JtYXQoc2VsZi5idWdfaWQpfQot
Ci0KLWNsYXNzIFVuQXBwbHlQYXRjaElmUmVxdWlyZWQoQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KToK
LSAgICBuYW1lID0gJ3VuYXBwbHktcGF0Y2gnCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydVbmFw
cGxpZWQgcGF0Y2gnXQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICBy
ZXR1cm4gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUb0J1aWxkJykgb3Igc2VsZi5nZXRQ
cm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxmLCBy
ZXN1bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmRvU3RlcElmKHN0ZXApCi0K
LQotY2xhc3MgVHJpZ2dlcih0cmlnZ2VyLlRyaWdnZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzY2hlZHVsZXJOYW1lcywgaW5jbHVkZV9yZXZpc2lvbj1UcnVlLCB0cmlnZ2Vycz1Ob25lLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHNlbGYuaW5jbHVkZV9yZXZpc2lvbiA9IGluY2x1ZGVfcmV2aXNp
b24KLSAgICAgICAgc2VsZi50cmlnZ2VycyA9IHRyaWdnZXJzCi0gICAgICAgIHNldF9wcm9wZXJ0
aWVzID0gc2VsZi5wcm9wZXJ0aWVzVG9QYXNzVG9UcmlnZ2VycygpIG9yIHt9Ci0gICAgICAgIHN1
cGVyKFRyaWdnZXIsIHNlbGYpLl9faW5pdF9fKHNjaGVkdWxlck5hbWVzPXNjaGVkdWxlck5hbWVz
LCBzZXRfcHJvcGVydGllcz1zZXRfcHJvcGVydGllcywgKiprd2FyZ3MpCi0KLSAgICBkZWYgcHJv
cGVydGllc1RvUGFzc1RvVHJpZ2dlcnMoc2VsZik6Ci0gICAgICAgIHByb3BlcnRpZXNfdG9fcGFz
cyA9IHsKLSAgICAgICAgICAgICdwYXRjaF9pZCc6IHByb3BlcnRpZXMuUHJvcGVydHkoJ3BhdGNo
X2lkJyksCi0gICAgICAgICAgICAnYnVnX2lkJzogcHJvcGVydGllcy5Qcm9wZXJ0eSgnYnVnX2lk
JyksCi0gICAgICAgICAgICAnY29uZmlndXJhdGlvbic6IHByb3BlcnRpZXMuUHJvcGVydHkoJ2Nv
bmZpZ3VyYXRpb24nKSwKLSAgICAgICAgICAgICdwbGF0Zm9ybSc6IHByb3BlcnRpZXMuUHJvcGVy
dHkoJ3BsYXRmb3JtJyksCi0gICAgICAgICAgICAnZnVsbFBsYXRmb3JtJzogcHJvcGVydGllcy5Q
cm9wZXJ0eSgnZnVsbFBsYXRmb3JtJyksCi0gICAgICAgICAgICAnYXJjaGl0ZWN0dXJlJzogcHJv
cGVydGllcy5Qcm9wZXJ0eSgnYXJjaGl0ZWN0dXJlJyksCi0gICAgICAgICAgICAnb3duZXInOiBw
cm9wZXJ0aWVzLlByb3BlcnR5KCdvd25lcicpLAotICAgICAgICB9Ci0gICAgICAgIGlmIHNlbGYu
aW5jbHVkZV9yZXZpc2lvbjoKLSAgICAgICAgICAgIHByb3BlcnRpZXNfdG9fcGFzc1snZXdzX3Jl
dmlzaW9uJ10gPSBwcm9wZXJ0aWVzLlByb3BlcnR5KCdnb3RfcmV2aXNpb24nKQotICAgICAgICBp
ZiBzZWxmLnRyaWdnZXJzOgotICAgICAgICAgICAgcHJvcGVydGllc190b19wYXNzWyd0cmlnZ2Vy
cyddID0gc2VsZi50cmlnZ2VycwotICAgICAgICByZXR1cm4gcHJvcGVydGllc190b19wYXNzCi0K
LQotY2xhc3MgVGVzdFdpdGhGYWlsdXJlQ291bnQoc2hlbGwuVGVzdCk6Ci0gICAgZmFpbGVkVGVz
dHNGb3JtYXRTdHJpbmcgPSAnJWQgdGVzdCVzIGZhaWxlZCcKLSAgICBmYWlsZWRUZXN0Q291bnQg
PSAwCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nX29ic2VydmVyID0g
bG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIod2FudFN0ZGVycj1UcnVlKQotICAgICAgICBz
ZWxmLmFkZExvZ09ic2VydmVyKCdzdGRpbycsIHNlbGYubG9nX29ic2VydmVyKQotICAgICAgICBy
ZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2Vs
ZiwgY21kKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIGNv
bW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21w
bGV0ZShzZWxmLCBjbWQpCi0gICAgICAgIHNlbGYuZmFpbGVkVGVzdENvdW50ID0gc2VsZi5jb3Vu
dEZhaWx1cmVzKGNtZCkKLSAgICAgICAgc2VsZi5mYWlsZWRUZXN0UGx1cmFsU3VmZml4ID0gJycg
aWYgc2VsZi5mYWlsZWRUZXN0Q291bnQgPT0gMSBlbHNlICdzJwotCi0gICAgZGVmIGV2YWx1YXRl
Q29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBpZiBzZWxmLmZhaWxlZFRlc3RDb3VudDoKLSAg
ICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAgICAgaWYgY21kLnJjICE9IDA6Ci0gICAg
ICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBk
ZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgc3RhdHVzID0gc2VsZi5uYW1lCi0K
LSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICBpZiBzZWxm
LmZhaWxlZFRlc3RDb3VudDoKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBzZWxmLmZhaWxlZFRl
c3RzRm9ybWF0U3RyaW5nICUgKHNlbGYuZmFpbGVkVGVzdENvdW50LCBzZWxmLmZhaWxlZFRlc3RQ
bHVyYWxTdWZmaXgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0YXR1cyAr
PSB1JyAoe30pJy5mb3JtYXQoUmVzdWx0c1tzZWxmLnJlc3VsdHNdKQotCi0gICAgICAgIHJldHVy
biB7dSdzdGVwJzogdW5pY29kZShzdGF0dXMpfQotCi0KLWNsYXNzIENoZWNrU3R5bGUoVGVzdFdp
dGhGYWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAnY2hlY2std2Via2l0LXN0eWxlJwotICAgIGRl
c2NyaXB0aW9uID0gWydjaGVjay13ZWJraXQtc3R5bGUgcnVubmluZyddCi0gICAgZGVzY3JpcHRp
b25Eb25lID0gWydjaGVjay13ZWJraXQtc3R5bGUnXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1
ZQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gJyVkIHN0eWxlIGVycm9yJXMnCi0gICAg
Y29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlJ10K
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKENoZWNr
U3R5bGUsIHNlbGYpLl9faW5pdF9fKGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAg
ZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nX3RleHQgPSBzZWxmLmxv
Z19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVycigpCi0K
LSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocidUb3RhbCBlcnJvcnMgZm91bmQ6ICg/UDxlcnJv
cnM+XGQrKSBpbiAoP1A8ZmlsZXM+XGQrKSBmaWxlcycsIGxvZ190ZXh0KQotICAgICAgICBpZiBu
b3QgbWF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICByZXR1cm4gaW50KG1hdGNo
Lmdyb3VwKCdlcnJvcnMnKSkKLQotCi1jbGFzcyBSdW5CaW5kaW5nc1Rlc3RzKHNoZWxsLlNoZWxs
Q29tbWFuZCk6Ci0gICAgbmFtZSA9ICdiaW5kaW5ncy10ZXN0cycKLSAgICBkZXNjcmlwdGlvbiA9
IFsnYmluZGluZ3MtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydiaW5k
aW5ncy10ZXN0cyddCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0gICAganNvbkZpbGVOYW1l
ID0gJ2JpbmRpbmdzX3Rlc3RfcmVzdWx0cy5qc29uJwotICAgIGxvZ2ZpbGVzID0geydqc29uJzog
anNvbkZpbGVOYW1lfQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1
bi1iaW5kaW5ncy10ZXN0cycsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KGpzb25GaWxlTmFt
ZSldCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihS
dW5CaW5kaW5nc1Rlc3RzLCBzZWxmKS5fX2luaXRfXyh0aW1lb3V0PTUgKiA2MCwgbG9nRW52aXJv
bj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
bG9nX29ic2VydmVyID0gbG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIoKQotICAgICAgICBz
ZWxmLmFkZExvZ09ic2VydmVyKCdqc29uJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHJl
dHVybiBzaGVsbC5TaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBnZXRSZXN1bHRT
dW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAg
ICAgICAgIG1lc3NhZ2UgPSAnUGFzc2VkIGJpbmRpbmdzIHRlc3RzJwotICAgICAgICAgICAgc2Vs
Zi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgICAgIHJl
dHVybiB7dSdzdGVwJzogdW5pY29kZShtZXNzYWdlKX0KLQotICAgICAgICBsb2dMaW5lcyA9IHNl
bGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpCi0gICAgICAgIGpzb25fdGV4dCA9ICcnLmpvaW4o
W2xpbmUgZm9yIGxpbmUgaW4gbG9nTGluZXMuc3BsaXRsaW5lcygpXSkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgd2Via2l0cHlfcmVzdWx0cyA9IGpzb24ubG9hZHMoanNvbl90ZXh0KQotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2co
J3N0ZGVycicsICdFUlJPUjogdW5hYmxlIHRvIHBhcnNlIGRhdGEsIGV4Y2VwdGlvbjoge30nLmZv
cm1hdChleCkpCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIoUnVuQmluZGluZ3NUZXN0cywgc2Vs
ZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0KLSAgICAgICAgZmFpbHVyZXMgPSB3ZWJraXRweV9yZXN1
bHRzLmdldCgnZmFpbHVyZXMnKQotICAgICAgICBpZiBub3QgZmFpbHVyZXM6Ci0gICAgICAgICAg
ICByZXR1cm4gc3VwZXIoUnVuQmluZGluZ3NUZXN0cywgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgp
Ci0gICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmFpbHVyZXMpID4gMSBlbHNlICcn
Ci0gICAgICAgIGZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihbZmFpbHVyZS5yZXBsYWNlKCco
SlMpICcsICcnKSBmb3IgZmFpbHVyZSBpbiBmYWlsdXJlc10pCi0gICAgICAgIG1lc3NhZ2UgPSAn
Rm91bmQge30gQmluZGluZyB0ZXN0IGZhaWx1cmV7fToge30nLmZvcm1hdChsZW4oZmFpbHVyZXMp
LCBwbHVyYWxTdWZmaXgsIGZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgc2VsZi5idWlsZC5idWls
ZEZpbmlzaGVkKFttZXNzYWdlXSwgRkFJTFVSRSkKLSAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1
bmljb2RlKG1lc3NhZ2UpfQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBf
YWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoK
LSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxv
Zy5hZGRTdGRvdXQobWVzc2FnZSkKLQotCi1jbGFzcyBSdW5XZWJLaXRQZXJsVGVzdHMoc2hlbGwu
U2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3dlYmtpdHBlcmwtdGVzdHMnCi0gICAgZGVzY3Jp
cHRpb24gPSBbJ3dlYmtpdHBlcmwtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25l
ID0gWyd3ZWJraXRwZXJsLXRlc3RzJ10KLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0gICAg
aGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3Jp
cHRzL3Rlc3Qtd2Via2l0cGVybCddCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
OgotICAgICAgICBzdXBlcihSdW5XZWJLaXRQZXJsVGVzdHMsIHNlbGYpLl9faW5pdF9fKHRpbWVv
dXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBnZXRSZXN1
bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSAnUGFzc2VkIHdlYmtpdHBlcmwgdGVzdHMnCi0gICAgICAgICAg
ICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBTVUNDRVNTKQotICAgICAgICAg
ICAgcmV0dXJuIHt1J3N0ZXAnOiB1bmljb2RlKG1lc3NhZ2UpfQotICAgICAgICByZXR1cm4ge3Un
c3RlcCc6IHUnRmFpbGVkIHdlYmtpdHBlcmwgdGVzdHMnfQotCi0gICAgZGVmIGV2YWx1YXRlQ29t
bWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IHNoZWxsLlNoZWxsQ29tbWFuZC5ldmFsdWF0
ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBpZiByYyA9PSBGQUlMVVJFOgotICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0tpbGxPbGRQcm9jZXNzZXMo
KSwgUmVSdW5XZWJLaXRQZXJsVGVzdHMoKV0pCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNz
IFJlUnVuV2ViS2l0UGVybFRlc3RzKFJ1bldlYktpdFBlcmxUZXN0cyk6Ci0gICAgbmFtZSA9ICdy
ZS1ydW4td2Via2l0cGVybC10ZXN0cycKLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLSAgICBo
YWx0T25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQp
OgotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxm
LCBjbWQpCi0KLQotY2xhc3MgUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoc2hlbGwuU2hlbGxD
b21tYW5kKToKLSAgICBuYW1lID0gJ2J1aWxkLXdlYmtpdC1vcmctdW5pdC10ZXN0cycKLSAgICBk
ZXNjcmlwdGlvbiA9IFsnYnVpbGQtd2Via2l0LXVuaXQtdGVzdHMgcnVubmluZyddCi0gICAgY29t
bWFuZCA9IFsncHl0aG9uJywgJ3N0ZXBzX3VuaXR0ZXN0LnB5J10KLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNoZWxsLlNoZWxsQ29tbWFuZC5fX2luaXRfXyhz
ZWxmLCB3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZycsIHRpbWVvdXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykK
LQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3Vs
dHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdQYXNzZWQgYnVp
bGQud2Via2l0Lm9yZyB1bml0IHRlc3RzJ30KLSAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0Zh
aWxlZCBidWlsZC53ZWJraXQub3JnIHVuaXQgdGVzdHMnfQotCi0KLWNsYXNzIFJ1bkVXU1VuaXRU
ZXN0cyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnZXdzLXVuaXQtdGVzdHMnCi0g
ICAgZGVzY3JpcHRpb24gPSBbJ2V3cy11bml0LXRlc3RzIHJ1bm5pbmcnXQotICAgIGNvbW1hbmQg
PSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRl
c3RzLnB5J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1
cGVyKFJ1bkVXU1VuaXRUZXN0cywgc2VsZikuX19pbml0X18odGltZW91dD0yICogNjAsIGxvZ0Vu
dmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6
Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJu
IHt1J3N0ZXAnOiB1J1Bhc3NlZCBFV1MgdW5pdCB0ZXN0cyd9Ci0gICAgICAgIHJldHVybiB7dSdz
dGVwJzogdSdGYWlsZWQgRVdTIHVuaXQgdGVzdHMnfQotCi0KLWNsYXNzIFJ1bkVXU0J1aWxkYm90
Q2hlY2tDb25maWcoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2J1aWxkYm90LWNo
ZWNrLWNvbmZpZycKLSAgICBkZXNjcmlwdGlvbiA9IFsnYnVpbGRib3QtY2hlY2tjb25maWcgcnVu
bmluZyddCi0gICAgY29tbWFuZCA9IFsnYnVpbGRib3QnLCAnY2hlY2tjb25maWcnXQotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoUnVuRVdTQnVpbGRi
b3RDaGVja0NvbmZpZywgc2VsZikuX19pbml0X18od29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWJ1aWxkJywgdGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2Us
ICoqa3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlm
IHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1
J1Bhc3NlZCBidWlsZGJvdCBjaGVja2NvbmZpZyd9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzog
dSdGYWlsZWQgYnVpbGRib3QgY2hlY2tjb25maWcnfQotCi0KLWNsYXNzIFJ1blJlc3VsdHNkYnB5
VGVzdHMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3Jlc3VsdHNkYnB5LXVuaXQt
dGVzdHMnCi0gICAgZGVzY3JpcHRpb24gPSBbJ3Jlc3VsdHNkYnB5LXVuaXQtdGVzdHMgcnVubmlu
ZyddCi0gICAgY29tbWFuZCA9IFsKLSAgICAgICAgJ3B5dGhvbjMnLAotICAgICAgICAnVG9vbHMv
U2NyaXB0cy9saWJyYXJpZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzJywKLSAg
ICAgICAgJy0tdmVyYm9zZScsCi0gICAgICAgICctLW5vLXNlbGVuaXVtJywKLSAgICAgICAgJy0t
ZmFzdC10ZXN0cycsCi0gICAgXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToK
LSAgICAgICAgc3VwZXIoUnVuUmVzdWx0c2RicHlUZXN0cywgc2VsZikuX19pbml0X18odGltZW91
dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3Vs
dFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgotICAg
ICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J1Bhc3NlZCByZXN1bHRzZGJweSB1bml0IHRlc3Rz
J30KLSAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCByZXN1bHRzZGJweSB1bml0IHRl
c3RzJ30KLQotCi1jbGFzcyBXZWJLaXRQeVRlc3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBs
YW5ndWFnZSA9ICdweXRob24nCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyd3ZWJraXRweS10ZXN0
cyddCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BM
QVkgPSAxMAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3Vw
ZXIoV2ViS2l0UHlUZXN0LCBzZWxmKS5fX2luaXRfXyh0aW1lb3V0PTIgKiA2MCwgbG9nRW52aXJv
bj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
bG9nX29ic2VydmVyID0gbG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIoKQotICAgICAgICBz
ZWxmLmFkZExvZ09ic2VydmVyKCdqc29uJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHJl
dHVybiBzaGVsbC5TaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBzZXRCdWlsZFN1
bW1hcnkoc2VsZiwgYnVpbGRfc3VtbWFyeSk6Ci0gICAgICAgIHByZXZpb3VzX2J1aWxkX3N1bW1h
cnkgPSBzZWxmLmdldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgJycpCi0gICAgICAgIGlmIG5v
dCBwcmV2aW91c19idWlsZF9zdW1tYXJ5OgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
YnVpbGRfc3VtbWFyeScsIGJ1aWxkX3N1bW1hcnkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAg
ICAgICBpZiBidWlsZF9zdW1tYXJ5IGluIHByZXZpb3VzX2J1aWxkX3N1bW1hcnk6Ci0gICAgICAg
ICAgICAjIEVuc3VyZSB0aGF0IHdlIGRvIG5vdCBhcHBlbmQgc2FtZSBidWlsZCBzdW1tYXJ5IG11
bHRpcGxlIHRpbWVzIGluIGNhc2UKLSAgICAgICAgICAgICMgdGhpcyBtZXRob2QgaXMgY2FsbGVk
IG11bHRpcGxlIHRpbWVzLgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbmV3X2J1aWxk
X3N1bW1hcnkgPSBwcmV2aW91c19idWlsZF9zdW1tYXJ5ICsgJywgJyArIGJ1aWxkX3N1bW1hcnkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsIG5ld19idWlsZF9zdW1t
YXJ5KQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
cmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgbWVzc2FnZSA9ICdQYXNzZWQgd2Via2l0
cHkge30gdGVzdHMnLmZvcm1hdChzZWxmLmxhbmd1YWdlKQotICAgICAgICAgICAgc2VsZi5zZXRC
dWlsZFN1bW1hcnkobWVzc2FnZSkKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdW5pY29k
ZShtZXNzYWdlKX0KLQotICAgICAgICBsb2dMaW5lcyA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0
ZG91dCgpCi0gICAgICAgIGpzb25fdGV4dCA9ICcnLmpvaW4oW2xpbmUgZm9yIGxpbmUgaW4gbG9n
TGluZXMuc3BsaXRsaW5lcygpXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2Via2l0cHlf
cmVzdWx0cyA9IGpzb24ubG9hZHMoanNvbl90ZXh0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9u
IGFzIGV4OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdFUlJPUjogdW5h
YmxlIHRvIHBhcnNlIGRhdGEsIGV4Y2VwdGlvbjoge30nLmZvcm1hdChleCkpCi0gICAgICAgICAg
ICByZXR1cm4gc3VwZXIoV2ViS2l0UHlUZXN0LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQot
ICAgICAgICBmYWlsdXJlcyA9IHdlYmtpdHB5X3Jlc3VsdHMuZ2V0KCdmYWlsdXJlcycsIFtdKSAr
IHdlYmtpdHB5X3Jlc3VsdHMuZ2V0KCdlcnJvcnMnLCBbXSkKLSAgICAgICAgaWYgbm90IGZhaWx1
cmVzOgotICAgICAgICAgICAgcmV0dXJuIHN1cGVyKFdlYktpdFB5VGVzdCwgc2VsZikuZ2V0UmVz
dWx0U3VtbWFyeSgpCi0gICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmFpbHVyZXMp
ID4gMSBlbHNlICcnCi0gICAgICAgIGZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihbZmFpbHVy
ZS5nZXQoJ25hbWUnKSBmb3IgZmFpbHVyZSBpbiBmYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNf
VE9fRElTUExBWV1dKQotICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHt9IHdlYmtpdHB5IHt9IHRl
c3QgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxlbihmYWlsdXJlcyksIHNlbGYubGFuZ3VhZ2UsIHBs
dXJhbFN1ZmZpeCwgZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICBpZiBsZW4oZmFpbHVyZXMpID4g
c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAu
Li4nCi0gICAgICAgIHNlbGYuc2V0QnVpbGRTdW1tYXJ5KG1lc3NhZ2UpCi0gICAgICAgIHJldHVy
biB7dSdzdGVwJzogdW5pY29kZShtZXNzYWdlKX0KLQotICAgIEBkZWZlci5pbmxpbmVDYWxsYmFj
a3MKLSAgICBkZWYgX2FkZFRvTG9nKHNlbGYsIGxvZ05hbWUsIG1lc3NhZ2UpOgotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBsb2cgPSBzZWxmLmdldExvZyhsb2dOYW1lKQotICAgICAgICBleGNl
cHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBsb2cgPSB5aWVsZCBzZWxmLmFkZExvZyhsb2dOYW1l
KQotICAgICAgICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCi0KLQotY2xhc3MgUnVuV2ViS2l0UHlQ
eXRob24yVGVzdHMoV2ViS2l0UHlUZXN0KToKLSAgICBsYW5ndWFnZSA9ICdweXRob24yJwotICAg
IG5hbWUgPSAnd2Via2l0cHktdGVzdHMte30nLmZvcm1hdChsYW5ndWFnZSkKLSAgICBkZXNjcmlw
dGlvbiA9IFsnd2Via2l0cHktdGVzdHMgcnVubmluZyAoe30pJy5mb3JtYXQobGFuZ3VhZ2UpXQot
ICAgIGpzb25GaWxlTmFtZSA9ICd3ZWJraXRweV90ZXN0X3t9X3Jlc3VsdHMuanNvbicuZm9ybWF0
KGxhbmd1YWdlKQotICAgIGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZpbGVOYW1lfQotICAgIGNv
bW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAnLS12ZXJi
b3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVOYW1lKV0KLQotCi1jbGFz
cyBSdW5XZWJLaXRQeVB5dGhvbjNUZXN0cyhXZWJLaXRQeVRlc3QpOgotICAgIGxhbmd1YWdlID0g
J3B5dGhvbjMnCi0gICAgbmFtZSA9ICd3ZWJraXRweS10ZXN0cy17fScuZm9ybWF0KGxhbmd1YWdl
KQotICAgIGRlc2NyaXB0aW9uID0gWyd3ZWJraXRweS10ZXN0cyBydW5uaW5nICh7fSknLmZvcm1h
dChsYW5ndWFnZSldCi0gICAganNvbkZpbGVOYW1lID0gJ3dlYmtpdHB5X3Rlc3Rfe31fcmVzdWx0
cy5qc29uJy5mb3JtYXQobGFuZ3VhZ2UpCi0gICAgbG9nZmlsZXMgPSB7J2pzb24nOiBqc29uRmls
ZU5hbWV9Ci0gICAgY29tbWFuZCA9IFsncHl0aG9uMycsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Vi
a2l0cHknLCAnLS12ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVO
YW1lKV0KLQotCi1jbGFzcyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNoZWxsLlNoZWxsQ29tbWFu
ZCk6Ci0gICAgbmFtZSA9ICdqaGJ1aWxkJwotICAgIGRlc2NyaXB0aW9uID0gWyd1cGRhdGluZyBn
dGsgZGVwZW5kZW5jaWVzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwZGF0ZWQgZ3RrIGRl
cGVuZGVuY2llcyddCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0
ZS13ZWJraXRndGstbGlicycsIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyld
Ci0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3
YXJncyk6Ci0gICAgICAgIHN1cGVyKEluc3RhbGxHdGtEZXBlbmRlbmNpZXMsIHNlbGYpLl9faW5p
dF9fKGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0KLWNsYXNzIEluc3RhbGxXcGVEZXBl
bmRlbmNpZXMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2poYnVpbGQnCi0gICAg
ZGVzY3JpcHRpb24gPSBbJ3VwZGF0aW5nIHdwZSBkZXBlbmRlbmNpZXMnXQotICAgIGRlc2NyaXB0
aW9uRG9uZSA9IFsnVXBkYXRlZCB3cGUgZGVwZW5kZW5jaWVzJ10KLSAgICBjb21tYW5kID0gWydw
ZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdHdwZS1saWJzJywgV2l0aFByb3BlcnRp
ZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoSW5zdGFsbFdw
ZURlcGVuZGVuY2llcywgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3Mp
Ci0KLQotZGVmIGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Moc3RlcCwgcGxhdGZvcm0sIGZ1bGxQbGF0
Zm9ybSk6Ci0gICAgIyBGSVhNRTogTWFrZSBhIGNvbW1vbiAnc3VwcG9ydGVkIHBsYXRmb3Jtcycg
bGlzdC4KLSAgICBpZiBwbGF0Zm9ybSBub3QgaW4gKCdndGsnLCAnd2luY2Fpcm8nLCAnaW9zJywg
J2pzYy1vbmx5JywgJ3dwZScsICdwbGF5c3RhdGlvbicsICd0dm9zJywgJ3dhdGNob3MnKToKLSAg
ICAgICAgcmV0dXJuCi0gICAgaWYgJ3NpbXVsYXRvcicgaW4gZnVsbFBsYXRmb3JtOgotICAgICAg
ICBwbGF0Zm9ybSA9IHBsYXRmb3JtICsgJy1zaW11bGF0b3InCi0gICAgZWxpZiBwbGF0Zm9ybSBp
biBbJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnXToKLSAgICAgICAgcGxhdGZvcm0gPSBwbGF0Zm9y
bSArICctZGV2aWNlJwotICAgIHN0ZXAuc2V0Q29tbWFuZChzdGVwLmNvbW1hbmQgKyBbJy0tJyAr
IHBsYXRmb3JtXSkKLQotCi1jbGFzcyBCdWlsZExvZ0xpbmVPYnNlcnZlcihsb2dvYnNlcnZlci5M
b2dMaW5lT2JzZXJ2ZXIsIG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yUmVj
ZWl2ZWQsIHNlYXJjaFN0cmluZz0ncnJvcjonLCBpbmNsdWRlUmVsYXRlZExpbmVzPVRydWUpOgot
ICAgICAgICBzZWxmLmVycm9yUmVjZWl2ZWQgPSBlcnJvclJlY2VpdmVkCi0gICAgICAgIHNlbGYu
c2VhcmNoU3RyaW5nID0gc2VhcmNoU3RyaW5nCi0gICAgICAgIHNlbGYuaW5jbHVkZVJlbGF0ZWRM
aW5lcyA9IGluY2x1ZGVSZWxhdGVkTGluZXMKLSAgICAgICAgc2VsZi5lcnJvcl9jb250ZXh0X2J1
ZmZlciA9IFtdCi0gICAgICAgIHNlbGYud2hpdGVzcGFjZV9yZSA9IHJlLmNvbXBpbGUoJ15bXHNd
KiQnKQotICAgICAgICBzdXBlcihCdWlsZExvZ0xpbmVPYnNlcnZlciwgc2VsZikuX19pbml0X18o
KQotCi0gICAgZGVmIG91dExpbmVSZWNlaXZlZChzZWxmLCBsaW5lKToKLSAgICAgICAgaWYgbm90
IHNlbGYuZXJyb3JSZWNlaXZlZDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIG5v
dCBzZWxmLmluY2x1ZGVSZWxhdGVkTGluZXM6Ci0gICAgICAgICAgICBpZiBzZWxmLnNlYXJjaFN0
cmluZyBpbiBsaW5lOgotICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JSZWNlaXZlZChsaW5lKQot
ICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaXNfd2hpdGVzcGFjZSA9IHNlbGYud2hpdGVz
cGFjZV9yZS5zZWFyY2gobGluZSkgaXMgbm90IE5vbmUKLSAgICAgICAgaWYgaXNfd2hpdGVzcGFj
ZToKLSAgICAgICAgICAgIHNlbGYuZXJyb3JfY29udGV4dF9idWZmZXIgPSBbXQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc2VsZi5lcnJvcl9jb250ZXh0X2J1ZmZlci5hcHBlbmQobGluZSkK
LQotICAgICAgICBpZiBzZWxmLnNlYXJjaFN0cmluZyBpbiBsaW5lOgotICAgICAgICAgICAgbWFw
KHNlbGYuZXJyb3JSZWNlaXZlZCwgc2VsZi5lcnJvcl9jb250ZXh0X2J1ZmZlcikKLSAgICAgICAg
ICAgIHNlbGYuZXJyb3JfY29udGV4dF9idWZmZXIgPSBbXQotCi0KLWNsYXNzIENvbXBpbGVXZWJL
aXQoc2hlbGwuQ29tcGlsZSk6Ci0gICAgbmFtZSA9ICdjb21waWxlLXdlYmtpdCcKLSAgICBkZXNj
cmlwdGlvbiA9IFsnY29tcGlsaW5nJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0NvbXBpbGVk
IFdlYktpdCddCi0gICAgZW52ID0geydNRkxBR1MnOiAnJ30KLSAgICB3YXJuaW5nUGF0dGVybiA9
ICcuKmFybmluZzogLionCi0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0gICAgY29tbWFuZCA9
IFsncGVybCcsICdUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCcsIFdpdGhQcm9wZXJ0aWVzKCct
LSUoY29uZmlndXJhdGlvbilzJyldCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2tpcFVwbG9h
ZD1GYWxzZSwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLnNraXBVcGxvYWQgPSBza2lwVXBsb2Fk
Ci0gICAgICAgIHN1cGVyKENvbXBpbGVXZWJLaXQsIHNlbGYpLl9faW5pdF9fKGxvZ0Vudmlyb249
RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAg
ICByZXR1cm4gbm90IChzZWxmLmdldFByb3BlcnR5KCdyZXZlcnQnKSBhbmQgc2VsZi5nZXRQcm9w
ZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykubG93ZXIoKSA9PSAnY29tbWl0LXF1ZXVlJykKLQotICAg
IGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdw
bGF0Zm9ybScpCi0gICAgICAgIGJ1aWxkT25seSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkT25s
eScpCi0gICAgICAgIGFyY2hpdGVjdHVyZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVy
ZScpCi0gICAgICAgIGFkZGl0aW9uYWxBcmd1bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRp
dGlvbmFsQXJndW1lbnRzJykKLQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ3dpbicsICd3aW5j
YWlybyddOgotICAgICAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignc3RkaW8nLCBCdWlsZExv
Z0xpbmVPYnNlcnZlcihzZWxmLmVycm9yUmVjZWl2ZWQsIHNlYXJjaFN0cmluZz0nZXJyb3IgJywg
aW5jbHVkZVJlbGF0ZWRMaW5lcz1GYWxzZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
ZWxmLmFkZExvZ09ic2VydmVyKCdzdGRpbycsIEJ1aWxkTG9nTGluZU9ic2VydmVyKHNlbGYuZXJy
b3JSZWNlaXZlZCkpCi0KLSAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAg
ICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBhZGRpdGlvbmFsQXJndW1lbnRzKQot
ICAgICAgICBpZiBwbGF0Zm9ybSBpbiAoJ21hYycsICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykg
YW5kIGFyY2hpdGVjdHVyZToKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1h
bmQgKyBbJ0FSQ0hTPScgKyBhcmNoaXRlY3R1cmVdKQotICAgICAgICAgICAgaWYgcGxhdGZvcm0g
aW4gWydpb3MnLCAndHZvcycsICd3YXRjaG9zJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRD
b21tYW5kKHNlbGYuY29tbWFuZCArIFsnT05MWV9BQ1RJVkVfQVJDSD1OTyddKQotICAgICAgICBp
ZiBwbGF0Zm9ybSBpbiAoJ21hYycsICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykgYW5kIGJ1aWxk
T25seToKLSAgICAgICAgICAgICMgRm9yIGJ1aWxkLW9ubHkgYm90cywgdGhlIGV4cGVjdGF0aW9u
IGlzIHRoYXQgdGVzdHMgd2lsbCBiZSBydW4gb24gc2VwYXJhdGUgbWFjaGluZXMsCi0gICAgICAg
ICAgICAjIHNvIHdlIG5lZWQgdG8gcGFja2FnZSBkZWJ1ZyBpbmZvIGFzIGRTWU1zLiBPbmx5IGdl
bmVyYXRpbmcgbGluZSB0YWJsZXMgbWFrZXMKLSAgICAgICAgICAgICMgdGhpcyBtdWNoIGZhc3Rl
ciB0aGFuIGZ1bGwgZGVidWcgaW5mbywgYW5kIGNyYXNoIGxvZ3Mgc3RpbGwgaGF2ZSBsaW5lIG51
bWJlcnMuCi0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQ9ZHdhcmYtd2l0aC1kc3ltJ10pCi0gICAgICAgICAgICBzZWxm
LnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydDTEFOR19ERUJVR19JTkZPUk1BVElPTl9MRVZF
TD1saW5lLXRhYmxlcy1vbmx5J10pCi0KLSAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhz
ZWxmLCBwbGF0Zm9ybSwgc2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJykpCi0KLSAgICAg
ICAgcmV0dXJuIHNoZWxsLkNvbXBpbGUuc3RhcnQoc2VsZikKLQotICAgIEBkZWZlci5pbmxpbmVD
YWxsYmFja3MKLSAgICBkZWYgX2FkZFRvTG9nKHNlbGYsIGxvZ05hbWUsIG1lc3NhZ2UpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBsb2cgPSBzZWxmLmdldExvZyhsb2dOYW1lKQotICAgICAg
ICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBsb2cgPSB5aWVsZCBzZWxmLmFkZExvZyhs
b2dOYW1lKQotICAgICAgICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCi0KLSAgICBkZWYgZXJyb3JS
ZWNlaXZlZChzZWxmLCBlcnJvcik6Ci0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdlcnJvcnMnLCBl
cnJvciArICdcbicpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAg
ICAgIGlmIGNtZC5kaWRGYWlsKCk6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRj
aEZhaWxlZFRvQnVpbGQnLCBUcnVlKQotICAgICAgICAgICAgc3RlcHNfdG9fYWRkID0gW1VuQXBw
bHlQYXRjaElmUmVxdWlyZWQoKSwgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2Us
IGFkZFVSTHM9RmFsc2UpXQotICAgICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5
KCdwbGF0Zm9ybScpCi0gICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd3BlJzoKLSAgICAgICAg
ICAgICAgICBzdGVwc190b19hZGQuYXBwZW5kKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLSAg
ICAgICAgICAgIGVsaWYgcGxhdGZvcm0gPT0gJ2d0ayc6Ci0gICAgICAgICAgICAgICAgc3RlcHNf
dG9fYWRkLmFwcGVuZChJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgICAgICBpZiBz
ZWxmLmdldFByb3BlcnR5KCdncm91cCcpID09ICdqc2MnOgotICAgICAgICAgICAgICAgIHN0ZXBz
X3RvX2FkZC5hcHBlbmQoQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBzdGVwc190b19hZGQuYXBwZW5kKENvbXBpbGVXZWJLaXRXaXRo
b3V0UGF0Y2goKSkKLSAgICAgICAgICAgIHN0ZXBzX3RvX2FkZC5hcHBlbmQoQW5hbHl6ZUNvbXBp
bGVXZWJLaXRSZXN1bHRzKCkpCi0gICAgICAgICAgICAjIFVzaW5nIGEgc2luZ2xlIGFkZFN0ZXBz
QWZ0ZXJDdXJyZW50U3RlcCBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9i
dWlsZGJvdC9pc3N1ZXMvNDg3NAotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVy
Q3VycmVudFN0ZXAoc3RlcHNfdG9fYWRkKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJp
Z2dlcnMgPSBzZWxmLmdldFByb3BlcnR5KCd0cmlnZ2VycycsIE5vbmUpCi0gICAgICAgICAgICBp
ZiB0cmlnZ2VycyBvciBub3Qgc2VsZi5za2lwVXBsb2FkOgotICAgICAgICAgICAgICAgIHNlbGYu
YnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtBcmNoaXZlQnVpbHRQcm9kdWN0KCksIFVw
bG9hZEJ1aWx0UHJvZHVjdCgpLCBUcmFuc2ZlclRvUzMoKV0pCi0KLSAgICAgICAgcmV0dXJuIHN1
cGVyKENvbXBpbGVXZWJLaXQsIHNlbGYpLmV2YWx1YXRlQ29tbWFuZChjbWQpCi0KLSAgICBkZWYg
Z2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzID09IEZBSUxV
UkU6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGNvbXBpbGUgV2Vi
S2l0J30KLSAgICAgICAgcmV0dXJuIHNoZWxsLkNvbXBpbGUuZ2V0UmVzdWx0U3VtbWFyeShzZWxm
KQotCi0KLWNsYXNzIENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goQ29tcGlsZVdlYktpdCk6Ci0g
ICAgbmFtZSA9ICdjb21waWxlLXdlYmtpdC13aXRob3V0LXBhdGNoJwotICAgIGhhbHRPbkZhaWx1
cmUgPSBGYWxzZQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICByZXR1
cm4gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUb0J1aWxkJykgb3Igc2VsZi5nZXRQcm9w
ZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxmLCByZXN1
bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmRvU3RlcElmKHN0ZXApCi0KLSAg
ICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJldHVybiBzaGVsbC5D
b21waWxlLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgQW5hbHl6ZUNvbXBp
bGVXZWJLaXRSZXN1bHRzKGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgotICAg
IG5hbWUgPSAnYW5hbHl6ZS1jb21waWxlLXdlYmtpdC1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9u
ID0gWydhbmFseXplLWNvbXBpbGUtd2Via2l0LXJlc3VsdHMnXQotICAgIGRlc2NyaXB0aW9uRG9u
ZSA9IFsnYW5hbHl6ZS1jb21waWxlLXdlYmtpdC1yZXN1bHRzJ10KLQotICAgIGRlZiBzdGFydChz
ZWxmKToKLSAgICAgICAgc2VsZi5lcnJvcl9sb2dzID0ge30KLSAgICAgICAgc2VsZi5jb21waWxl
X3dlYmtpdF9zdGVwID0gQ29tcGlsZVdlYktpdC5uYW1lCi0gICAgICAgIGlmIHNlbGYuZ2V0UHJv
cGVydHkoJ2dyb3VwJykgPT0gJ2pzYyc6Ci0gICAgICAgICAgICBzZWxmLmNvbXBpbGVfd2Via2l0
X3N0ZXAgPSBDb21waWxlSlNDLm5hbWUKLSAgICAgICAgZCA9IHNlbGYuZ2V0UmVzdWx0cyhzZWxm
LmNvbXBpbGVfd2Via2l0X3N0ZXApCi0gICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczog
c2VsZi5hbmFseXplUmVzdWx0cygpKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25l
KQotCi0gICAgZGVmIGFuYWx5emVSZXN1bHRzKHNlbGYpOgotICAgICAgICBjb21waWxlX3dpdGhv
dXRfcGF0Y2hfc3RlcCA9IENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2gubmFtZQotICAgICAgICBp
ZiBzZWxmLmdldFByb3BlcnR5KCdncm91cCcpID09ICdqc2MnOgotICAgICAgICAgICAgY29tcGls
ZV93aXRob3V0X3BhdGNoX3N0ZXAgPSBDb21waWxlSlNDV2l0aG91dFBhdGNoLm5hbWUKLSAgICAg
ICAgY29tcGlsZV93aXRob3V0X3BhdGNoX3Jlc3VsdCA9IHNlbGYuZ2V0U3RlcFJlc3VsdChjb21w
aWxlX3dpdGhvdXRfcGF0Y2hfc3RlcCkKLQotICAgICAgICBpZiBjb21waWxlX3dpdGhvdXRfcGF0
Y2hfcmVzdWx0ID09IEZBSUxVUkU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1VuYWJsZSB0byBi
dWlsZCBXZWJLaXQgd2l0aG91dCBwYXRjaCwgcmV0cnlpbmcgYnVpbGQnCi0gICAgICAgICAgICBz
ZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFp
bF9mb3JfcHJlZXhpc3RpbmdfYnVpbGRfZmFpbHVyZSgpCi0gICAgICAgICAgICBzZWxmLmZpbmlz
aGVkKEZBSUxVUkUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3Nh
Z2VdLCBSRVRSWSkKLSAgICAgICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUpCi0KLSAg
ICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gRkFJTFVSRQotICAgICAgICBwYXRjaF9pZCA9IHNl
bGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycpCi0gICAgICAgIG1lc3NhZ2UgPSAnUGF0Y2gg
e30gZG9lcyBub3QgYnVpbGQnLmZvcm1hdChwYXRjaF9pZCkKLSAgICAgICAgc2VsZi5zZW5kX2Vt
YWlsX2Zvcl9uZXdfYnVpbGRfZmFpbHVyZSgpCi0KLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRv
bmUgPSBtZXNzYWdlCi0gICAgICAgIHNlbGYuZmluaXNoZWQoRkFJTFVSRSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknLCBtZXNzYWdlKQotICAgICAgICBp
ZiBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKS5sb3dlcigpID09ICdjb21taXQt
cXVldWUnOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90
ZXh0JywgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJl
bnRTdGVwKFtDb21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNoKCld
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3Vy
cmVudFN0ZXAoW1NldENvbW1pdFF1ZXVlTWludXNGbGFnT25QYXRjaCgpXSkKLQotICAgIEBkZWZl
ci5pbmxpbmVDYWxsYmFja3MKLSAgICBkZWYgZ2V0UmVzdWx0cyhzZWxmLCBuYW1lKToKLSAgICAg
ICAgc3RlcCA9IHNlbGYuZ2V0QnVpbGRTdGVwQnlOYW1lKG5hbWUpCi0gICAgICAgIGlmIG5vdCBz
dGVwOgotICAgICAgICAgICAgZGVmZXIucmV0dXJuVmFsdWUoTm9uZSkKLQotICAgICAgICBsb2dz
ID0geWllbGQgc2VsZi5tYXN0ZXIuZGIubG9ncy5nZXRMb2dzKHN0ZXAuc3RlcGlkKQotICAgICAg
ICBsb2cgPSBuZXh0KChsb2cgZm9yIGxvZyBpbiBsb2dzIGlmIGxvZ1snbmFtZSddID09IHUnZXJy
b3JzJyksIE5vbmUpCi0gICAgICAgIGlmIG5vdCBsb2c6Ci0gICAgICAgICAgICBkZWZlci5yZXR1
cm5WYWx1ZShOb25lKQotCi0gICAgICAgIGxhc3RsaW5lID0gaW50KG1heCgwLCBsb2dbJ251bV9s
aW5lcyddIC0gMSkpCi0gICAgICAgIGxvZ0xpbmVzID0geWllbGQgc2VsZi5tYXN0ZXIuZGIubG9n
cy5nZXRMb2dMaW5lcyhsb2dbJ2lkJ10sIDAsIGxhc3RsaW5lKQotICAgICAgICBpZiBsb2dbJ3R5
cGUnXSA9PSAncyc6Ci0gICAgICAgICAgICBsb2dMaW5lcyA9ICdcbicuam9pbihbbGluZVsxOl0g
Zm9yIGxpbmUgaW4gbG9nTGluZXMuc3BsaXRsaW5lcygpXSkKLQotICAgICAgICBzZWxmLmVycm9y
X2xvZ3NbbmFtZV0gPSBsb2dMaW5lcwotCi0gICAgZGVmIGdldFN0ZXBSZXN1bHQoc2VsZiwgc3Rl
cF9uYW1lKToKLSAgICAgICAgZm9yIHN0ZXAgaW4gc2VsZi5idWlsZC5leGVjdXRlZFN0ZXBzOgot
ICAgICAgICAgICAgaWYgc3RlcC5uYW1lID09IHN0ZXBfbmFtZToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RlcC5yZXN1bHRzCi0KLSAgICBkZWYgZ2V0QnVpbGRTdGVwQnlOYW1lKHNlbGYsIHN0
ZXBfbmFtZSk6Ci0gICAgICAgIGZvciBzdGVwIGluIHNlbGYuYnVpbGQuZXhlY3V0ZWRTdGVwczoK
LSAgICAgICAgICAgIGlmIHN0ZXAubmFtZSA9PSBzdGVwX25hbWU6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZXAKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBmaWx0ZXJfbG9nc19j
b250YWluaW5nX2Vycm9yKHNlbGYsIGxvZ3MsIHNlYXJjaFN0cmluZz0ncnJvcjonLCBtYXhfbnVt
X2xpbmVzPTEwKToKLSAgICAgICAgaWYgbm90IGxvZ3M6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICBmaWx0ZXJlZF9sb2dzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gbG9ncy5z
cGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBzZWFyY2hTdHJpbmcgaW4gbGluZToKLSAgICAg
ICAgICAgICAgICBmaWx0ZXJlZF9sb2dzLmFwcGVuZChsaW5lKQotICAgICAgICByZXR1cm4gJ1xu
Jy5qb2luKGZpbHRlcmVkX2xvZ3NbLW1heF9udW1fbGluZXM6XSkKLQotICAgIGRlZiBzZW5kX2Vt
YWlsX2Zvcl9uZXdfYnVpbGRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAgICAg
ICAgaWYgbm90IHNlbGYuc2hvdWxkX3NlbmRfZW1haWwocGF0Y2hfaWQpOgotICAgICAgICAgICAg
ICAgIHJldHVybgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgn
YnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIGJ1Z19pZCA9IHNlbGYuZ2V0UHJvcGVydHko
J2J1Z19pZCcsICcnKQotICAgICAgICAgICAgYnVnX3RpdGxlID0gc2VsZi5nZXRQcm9wZXJ0eSgn
YnVnX3RpdGxlJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3dvcmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHBhdGNoX2F1dGhvciA9IHNlbGYuZ2V0
UHJvcGVydHkoJ3BhdGNoX2F1dGhvcicsICcnKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBzZWxm
LmdldFByb3BlcnR5KCdwbGF0Zm9ybScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9
Iy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRi
b3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAg
ICAgICBsb2dzID0gc2VsZi5lcnJvcl9sb2dzLmdldChzZWxmLmNvbXBpbGVfd2Via2l0X3N0ZXAp
Ci0gICAgICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ3dpbicsICd3aW5jYWlybyddOgotICAgICAg
ICAgICAgICAgIGxvZ3MgPSBzZWxmLmZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3IobG9ncywg
c2VhcmNoU3RyaW5nPSdlcnJvciAnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBsb2dzID0gc2VsZi5maWx0ZXJfbG9nc19jb250YWluaW5nX2Vycm9yKGxvZ3MpCi0KLSAgICAg
ICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J0J1aWxkIGZhaWx1cmUgZm9yIFBhdGNoIHt9OiB7fScu
Zm9ybWF0KHBhdGNoX2lkLCBidWdfdGl0bGUpCi0gICAgICAgICAgICBlbWFpbF90ZXh0ID0gJ0VX
UyBoYXMgZGV0ZWN0ZWQgYnVpbGQgZmFpbHVyZSBvbiB7fScuZm9ybWF0KGJ1aWxkZXJfbmFtZSkK
LSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9Ij5Q
YXRjaCB7fTwvYT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRjaF9p
ZCkKLSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7fTwv
YT4uJy5mb3JtYXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCi0gICAgICAgICAg
ICBlbWFpbF90ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9XG5c
blBhdGNoIGF1dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKLSAgICAg
ICAgICAgIGlmIGxvZ3M6Ci0gICAgICAgICAgICAgICAgbG9ncyA9IGxvZ3MucmVwbGFjZSgnJics
ICcmYW1wOycpLnJlcGxhY2UoJzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpCi0gICAg
ICAgICAgICAgICAgZW1haWxfdGV4dCArPSB1J1xuXG5FcnJvciBsaW5lczpcblxuPGNvZGU+e308
L2NvZGU+Jy5mb3JtYXQobG9ncykKLSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuXG5UbyB1
bnN1YnNjcmlibGUgZnJvbSB0aGVzZSBub3RpZmljYXRpb25zIG9yIHRvIHByb3ZpZGUgYW55IGZl
ZWRiYWNrIHBsZWFzZSBlbWFpbCBhYWthc2hfamFpbkBhcHBsZS5jb20nCi0gICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnU2VuZGluZyBlbWFpbCBub3RpZmljYXRpb24gdG8ge30n
LmZvcm1hdChwYXRjaF9hdXRob3IpKQotICAgICAgICAgICAgc2VuZF9lbWFpbF90b19wYXRjaF9h
dXRob3IocGF0Y2hfYXV0aG9yLCBlbWFpbF9zdWJqZWN0LCBlbWFpbF90ZXh0LCBwYXRjaF9pZCkK
LSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9y
IGluIHNlbmRpbmcgZW1haWwgZm9yIG5ldyBidWlsZCBmYWlsdXJlOiB7fScuZm9ybWF0KGUpKQot
Ci0gICAgZGVmIHNlbmRfZW1haWxfZm9yX3ByZWV4aXN0aW5nX2J1aWxkX2ZhaWx1cmUoc2VsZik6
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ2J1aWxkZXJuYW1lJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0
UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5n
ZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7fSMv
YnVpbGRlcnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxkYm90
VVJMLCBzZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQotICAgICAgICAg
ICAgbG9ncyA9IHNlbGYuZXJyb3JfbG9ncy5nZXQoc2VsZi5jb21waWxlX3dlYmtpdF9zdGVwKQot
ICAgICAgICAgICAgaWYgcGxhdGZvcm0gaW4gWyd3aW4nLCAnd2luY2Fpcm8nXToKLSAgICAgICAg
ICAgICAgICBsb2dzID0gc2VsZi5maWx0ZXJfbG9nc19jb250YWluaW5nX2Vycm9yKGxvZ3MsIHNl
YXJjaFN0cmluZz0nZXJyb3IgJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
bG9ncyA9IHNlbGYuZmlsdGVyX2xvZ3NfY29udGFpbmluZ19lcnJvcihsb2dzKQotCi0gICAgICAg
ICAgICBlbWFpbF9zdWJqZWN0ID0gdSdCdWlsZCBmYWlsdXJlIG9uIHRydW5rIG9uIHt9Jy5mb3Jt
YXQoYnVpbGRlcl9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdGYWlsZWQgdG8gYnVp
bGQgV2ViS2l0IHdpdGhvdXQgcGF0Y2ggaW4ge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7
fScuZm9ybWF0KGJ1aWxkX3VybCwgYnVpbGRlcl9uYW1lLCB3b3JrZXJfbmFtZSkKLSAgICAgICAg
ICAgIGlmIGxvZ3M6Ci0gICAgICAgICAgICAgICAgbG9ncyA9IGxvZ3MucmVwbGFjZSgnJicsICcm
YW1wOycpLnJlcGxhY2UoJzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpCi0gICAgICAg
ICAgICAgICAgZW1haWxfdGV4dCArPSB1J1xuXG5FcnJvciBsaW5lczpcblxuPGNvZGU+e308L2Nv
ZGU+Jy5mb3JtYXQobG9ncykKLSAgICAgICAgICAgIHJlZmVyZW5jZSA9ICdwcmVleGlzdGluZy1i
dWlsZC1mYWlsdXJlLXt9LXt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1lLCBkYXRlLnRvZGF5KCkuc3Ry
ZnRpbWUoIiVZLSVkLSVtIikpCi0gICAgICAgICAgICBzZW5kX2VtYWlsX3RvX2JvdF93YXRjaGVy
cyhlbWFpbF9zdWJqZWN0LCBlbWFpbF90ZXh0LCBidWlsZGVyX25hbWUsIHJlZmVyZW5jZSkKLSAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGlu
IHNlbmRpbmcgZW1haWwgZm9yIGJ1aWxkIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLQotY2xh
c3MgQ29tcGlsZUpTQyhDb21waWxlV2ViS2l0KToKLSAgICBuYW1lID0gJ2NvbXBpbGUtanNjJwot
ICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQ29tcGlsZWQgSlNDJ10KLSAgICBjb21tYW5kID0gWydw
ZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjJywgV2l0aFByb3BlcnRpZXMoJy0tJShjb25m
aWd1cmF0aW9uKXMnKV0KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnZ3JvdXAnLCAnanNjJykKLSAgICAgICAgcmV0dXJuIENvbXBpbGVXZWJLaXQuc3Rh
cnQoc2VsZikKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdG
YWlsZWQgdG8gY29tcGlsZSBKU0MnfQotICAgICAgICByZXR1cm4gc2hlbGwuQ29tcGlsZS5nZXRS
ZXN1bHRTdW1tYXJ5KHNlbGYpCi0KLQotY2xhc3MgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaChDb21w
aWxlSlNDKToKLSAgICBuYW1lID0gJ2NvbXBpbGUtanNjLXdpdGhvdXQtcGF0Y2gnCi0KLSAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJldHVybiBzaGVsbC5Db21w
aWxlLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgUnVuSmF2YVNjcmlwdENv
cmVUZXN0cyhzaGVsbC5UZXN0KToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0JwotICAgIGRlc2Ny
aXB0aW9uID0gWydqc2NvcmUtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0g
Wydqc2NvcmUtdGVzdHMnXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGpzb25GaWxl
TmFtZSA9ICdqc2NfcmVzdWx0cy5qc29uJwotICAgIGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZp
bGVOYW1lfQotICAgIGNvbW1hbmQgPSBbJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNj
cmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24t
b3V0cHV0PXswfScuZm9ybWF0KGpzb25GaWxlTmFtZSksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29u
ZmlndXJhdGlvbilzJyldCi0gICAgcHJlZml4ID0gJ2pzY18nCi0gICAgTlVNX0ZBSUxVUkVTX1RP
X0RJU1BMQVlfSU5fU1RBVFVTID0gNQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdz
KToKLSAgICAgICAgc2hlbGwuVGVzdC5fX2luaXRfXyhzZWxmLCBsb2dFbnZpcm9uPUZhbHNlLCAq
Kmt3YXJncykKLSAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcyA9IFtdCi0gICAgICAgIHNlbGYu
c3RyZXNzVGVzdEZhaWx1cmVzID0gW10KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
c2VsZi5sb2dfb2JzZXJ2ZXJfanNvbiA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKCkK
LSAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignanNvbicsIHNlbGYubG9nX29ic2VydmVyX2pz
b24pCi0KLSAgICAgICAgIyBhZGQgcmVtb3RlcyBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCB0byB0
aGUgY29tbWFuZCBsaW5lIGlmIG5lZWRlZAotICAgICAgICByZW1vdGVzZmlsZSA9IHNlbGYuZ2V0
UHJvcGVydHkoJ3JlbW90ZXMnLCBGYWxzZSkKLSAgICAgICAgaWYgcmVtb3Rlc2ZpbGU6Ci0gICAg
ICAgICAgICBzZWxmLmNvbW1hbmQuYXBwZW5kKCctLXJlbW90ZS1jb25maWctZmlsZT17MH0nLmZv
cm1hdChyZW1vdGVzZmlsZSkpCi0KLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5
KCdwbGF0Zm9ybScpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdqc2Mtb25seScgYW5kIHJlbW90
ZXNmaWxlOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kLmV4dGVuZChbJy0tbm8tdGVzdG1hc20n
LCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRl
c3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCddKQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZs
YWdzKHNlbGYsIHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0UHJvcGVydHko
J2Z1bGxQbGF0Zm9ybScpKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQot
Ci0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IHNoZWxs
LlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgaWYgcmMgPT0gU1VDQ0VT
UyBvciByYyA9PSBXQVJOSU5HUzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnUGFzc2VkIEpTQyB0
ZXN0cycKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQotICAgICAg
ICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5idWls
ZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNo
KHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMo
KSwgUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzKCldKQotICAgICAgICByZXR1cm4gcmMKLQotICAg
IGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKLSAgICAgICAgc2hlbGwuVGVzdC5jb21t
YW5kQ29tcGxldGUoc2VsZiwgY21kKQotICAgICAgICBsb2dMaW5lcyA9IHNlbGYubG9nX29ic2Vy
dmVyX2pzb24uZ2V0U3Rkb3V0KCkKLSAgICAgICAganNvbl90ZXh0ID0gJycuam9pbihbbGluZSBm
b3IgbGluZSBpbiBsb2dMaW5lcy5zcGxpdGxpbmVzKCldKQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBqc2NfcmVzdWx0cyA9IGpzb24ubG9hZHMoanNvbl90ZXh0KQotICAgICAgICBleGNlcHQg
RXhjZXB0aW9uIGFzIGV4OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdF
UlJPUjogdW5hYmxlIHRvIHBhcnNlIGRhdGEsIGV4Y2VwdGlvbjoge30nLmZvcm1hdChleCkpCi0g
ICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbE1hc21U
ZXN0c1Bhc3NlZCcpID09IEZhbHNlOgotICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5h
cHBlbmQoJ3Rlc3RtYXNtJykKLSAgICAgICAgaWYganNjX3Jlc3VsdHMuZ2V0KCdhbGxBaXJUZXN0
c1Bhc3NlZCcpID09IEZhbHNlOgotICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBl
bmQoJ3Rlc3RhaXInKQotICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbEIzVGVzdHNQYXNz
ZWQnKSA9PSBGYWxzZToKLSAgICAgICAgICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0
ZXN0YjMnKQotICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbERGR1Rlc3RzUGFzc2VkJykg
PT0gRmFsc2U6Ci0gICAgICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVzLmFwcGVuZCgndGVzdGRm
ZycpCi0gICAgICAgIGlmIGpzY19yZXN1bHRzLmdldCgnYWxsQXBpVGVzdHNQYXNzZWQnKSA9PSBG
YWxzZToKLSAgICAgICAgICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0YXBpJykK
LQotICAgICAgICBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlcyA9IGpzY19yZXN1bHRzLmdldCgnc3Ry
ZXNzVGVzdEZhaWx1cmVzJykKLSAgICAgICAgaWYgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXM6Ci0g
ICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXMpCi0gICAgICAgIGlmIHNlbGYuYmluYXJ5
RmFpbHVyZXM6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2Jp
bmFyeV9mYWlsdXJlcycsIHNlbGYuYmluYXJ5RmFpbHVyZXMpCi0KLSAgICBkZWYgZ2V0UmVzdWx0
U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1MgYW5kIChz
ZWxmLnN0cmVzc1Rlc3RGYWlsdXJlcyBvciBzZWxmLmJpbmFyeUZhaWx1cmVzKToKLSAgICAgICAg
ICAgIHN0YXR1cyA9ICcnCi0gICAgICAgICAgICBpZiBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlczoK
LSAgICAgICAgICAgICAgICBudW1fZmFpbHVyZXMgPSBsZW4oc2VsZi5zdHJlc3NUZXN0RmFpbHVy
ZXMpCi0gICAgICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIG51bV9mYWlsdXJlcyA+
IDEgZWxzZSAnJwotICAgICAgICAgICAgICAgIGZhaWx1cmVzX3RvX2Rpc3BsYXkgPSBzZWxmLnN0
cmVzc1Rlc3RGYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV9JTl9TVEFUVVNd
Ci0gICAgICAgICAgICAgICAgc3RhdHVzID0gJ0ZvdW5kIHt9IGpzYyBzdHJlc3MgdGVzdCBmYWls
dXJle306ICcuZm9ybWF0KG51bV9mYWlsdXJlcywgcGx1cmFsU3VmZml4KSArICcsICcuam9pbihm
YWlsdXJlc190b19kaXNwbGF5KQotICAgICAgICAgICAgICAgIGlmIG51bV9mYWlsdXJlcyA+IHNl
bGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVlfSU5fU1RBVFVTOgotICAgICAgICAgICAgICAgICAg
ICBzdGF0dXMgKz0gJyAuLi4nCi0gICAgICAgICAgICBpZiBzZWxmLmJpbmFyeUZhaWx1cmVzOgot
ICAgICAgICAgICAgICAgIGlmIHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzICs9
ICcsICcKLSAgICAgICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKHNlbGYuYmlu
YXJ5RmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICAgICAgc3RhdHVzICs9ICdKU0Mg
dGVzdCBiaW5hcnkgZmFpbHVyZXt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgJywgJy5qb2lu
KHNlbGYuYmluYXJ5RmFpbHVyZXMpKQotCi0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHVu
aWNvZGUoc3RhdHVzKX0KLQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1t
YXJ5KHNlbGYpCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIF9hZGRUb0xv
ZyhzZWxmLCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9n
ID0gc2VsZi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAg
ICAgICAgbG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAgbG9nLmFkZFN0
ZG91dChtZXNzYWdlKQotCi0KLWNsYXNzIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhSdW5KYXZh
U2NyaXB0Q29yZVRlc3RzKToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXJlcnVuJwotICAgIHBy
ZWZpeCA9ICdqc2NfcmVydW5fJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQp
OgotICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAg
ICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJl
c3NfdGVzdF9mYWlsdXJlcycsIFtdKSArIHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFp
bHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQ
cm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmxha3lf
ZmFpbHVyZXMgPSBmaXJzdF9ydW5fZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9mYWlsdXJlcykg
LSBmaXJzdF9ydW5fZmFpbHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fZmFpbHVyZXMpCi0g
ICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWlsdXJlcykK
LQotICAgICAgICBpZiByYyA9PSBTVUNDRVNTIG9yIHJjID09IFdBUk5JTkdTOgotICAgICAgICAg
ICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihmbGFreV9mYWlsdXJlcykgPiAxIGVsc2UgJycK
LSAgICAgICAgICAgIG1lc3NhZ2UgPSAnRm91bmQgZmxha3kgdGVzdHt9OiB7fScuZm9ybWF0KHBs
dXJhbFN1ZmZpeCwgZmxha3lfZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgc2VsZi5kZXNj
cmlwdGlvbkRvbmUgPSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBT
VUNDRVNTCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBT
VUNDRVNTKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0
Y2hGYWlsZWRUZXN0cycsIFRydWUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0
ZXJDdXJyZW50U3RlcChbVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdD
bG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJp
ZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNXaXRob3V0
UGF0Y2goKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEFuYWx5emVKU0NUZXN0c1Jlc3VsdHMoKV0pCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNz
IFJ1bkpTQ1Rlc3RzV2l0aG91dFBhdGNoKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5h
bWUgPSAnanNjb3JlLXRlc3Qtd2l0aG91dC1wYXRjaCcKLSAgICBwcmVmaXggPSAnanNjX2NsZWFu
X3RyZWVfJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBy
ZXR1cm4gc2hlbGwuVGVzdC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotCi0KLWNsYXNzIEFu
YWx5emVKU0NUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6Ci0gICAgbmFtZSA9ICdh
bmFseXplLWpzYy10ZXN0cy1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0gWydhbmFseXplLWpz
Yy10ZXN0LXJlc3VsdHMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnYW5hbHl6ZS1qc2MtdGVz
dHMtcmVzdWx0cyddCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAotCi0gICAgZGVm
IHN0YXJ0KHNlbGYpOgotICAgICAgICBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNl
bGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAg
Zmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfYmlu
YXJ5X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcyA9
IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBb
XSkpCi0gICAgICAgIHNlY29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJv
cGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIGNsZWFuX3Ry
ZWVfc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVl
X3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pKQotICAgICAgICBjbGVhbl90cmVlX2JpbmFyeV9m
YWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFp
bHVyZXMnLCBbXSkpCi0gICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXMgPSBsaXN0KGNsZWFuX3Ry
ZWVfYmluYXJ5X2ZhaWx1cmVzKSArIGxpc3QoY2xlYW5fdHJlZV9zdHJlc3NfZmFpbHVyZXMpCi0g
ICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGNsZWFuX3RyZWVf
ZmFpbHVyZXNbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotCi0gICAgICAgIHN0cmVz
c19mYWlsdXJlc193aXRoX3BhdGNoID0gZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcy5pbnRlcnNl
Y3Rpb24oc2Vjb25kX3J1bl9zdHJlc3NfZmFpbHVyZXMpCi0gICAgICAgIGJpbmFyeV9mYWlsdXJl
c193aXRoX3BhdGNoID0gZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vj
b25kX3J1bl9iaW5hcnlfZmFpbHVyZXMpCi0KLSAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVz
ID0gZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX3N0cmVzc19mYWls
dXJlcykgLSBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVu
X3N0cmVzc19mYWlsdXJlcykKLSAgICAgICAgZmxha3lfYmluYXJ5X2ZhaWx1cmVzID0gZmlyc3Rf
cnVuX2JpbmFyeV9mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykgLSBm
aXJzdF9ydW5fYmluYXJ5X2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2JpbmFyeV9m
YWlsdXJlcykKLSAgICAgICAgZmxha3lfZmFpbHVyZXMgPSAobGlzdChmbGFreV9iaW5hcnlfZmFp
bHVyZXMpICsgbGlzdChmbGFreV9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNf
VE9fRElTUExBWV0KLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGZs
YWt5X2ZhaWx1cmVzKQotCi0gICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXMgPSBzdHJlc3NfZmFp
bHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzCi0gICAgICAgIG5l
d19iaW5hcnlfZmFpbHVyZXMgPSBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3Ry
ZWVfYmluYXJ5X2ZhaWx1cmVzCi0gICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXNfdG9fZGlzcGxh
eSA9ICcsICcuam9pbihsaXN0KG5ld19zdHJlc3NfZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJF
U19UT19ESVNQTEFZXSkKLSAgICAgICAgbmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0g
JywgJy5qb2luKGxpc3QobmV3X2JpbmFyeV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RP
X0RJU1BMQVldKQotCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJl
cyBpbiBmaXJzdCBydW46IHt9Jy5mb3JtYXQoKGxpc3QoZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJl
cykgKyBsaXN0KGZpcnN0X3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNf
VE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVy
ZXMgaW4gc2Vjb25kIHJ1bjoge30nLmZvcm1hdCgobGlzdChzZWNvbmRfcnVuX2JpbmFyeV9mYWls
dXJlcykgKyBsaXN0KHNlY29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxV
UkVTX1RPX0RJU1BMQVldKSkKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZs
YWt5IFRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0cmluZykpCi0gICAgICAgIHNl
bGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBvbiBjbGVhbiB0cmVlOiB7fScuZm9y
bWF0KGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5nKSkKLQotICAgICAgICBpZiBuZXdfc3RyZXNz
X2ZhaWx1cmVzIG9yIG5ld19iaW5hcnlfZmFpbHVyZXM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRU
b0xvZygnc3RkZXJyJywgJ1xuTmV3IGJpbmFyeSBmYWlsdXJlczoge30uXG5OZXcgc3RyZXNzIHRl
c3QgZmFpbHVyZXM6IHt9XG4nLmZvcm1hdChuZXdfYmluYXJ5X2ZhaWx1cmVzX3RvX2Rpc3BsYXks
IG5ld19zdHJlc3NfZmFpbHVyZXNfdG9fZGlzcGxheSkpCi0gICAgICAgICAgICBzZWxmLmZpbmlz
aGVkKEZBSUxVUkUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBGQUlMVVJFCi0g
ICAgICAgICAgICBtZXNzYWdlID0gJycKLSAgICAgICAgICAgIGlmIG5ld19iaW5hcnlfZmFpbHVy
ZXM6Ci0gICAgICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfYmluYXJ5
X2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnRm91bmQg
e30gbmV3IEpTQyBiaW5hcnkgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxlbihuZXdfYmluYXJ5X2Zh
aWx1cmVzKSwgcGx1cmFsU3VmZml4LCBuZXdfYmluYXJ5X2ZhaWx1cmVzX3RvX2Rpc3BsYXkpCi0g
ICAgICAgICAgICBpZiBuZXdfc3RyZXNzX2ZhaWx1cmVzOgotICAgICAgICAgICAgICAgIGlmIG1l
c3NhZ2U6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJywgJwotICAgICAgICAgICAg
ICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4obmV3X3N0cmVzc19mYWlsdXJlcykgPiAxIGVs
c2UgJycKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICdGb3VuZCB7fSBuZXcgSlNDIHN0cmVz
cyB0ZXN0IGZhaWx1cmV7fToge30nLmZvcm1hdChsZW4obmV3X3N0cmVzc19mYWlsdXJlcyksIHBs
dXJhbFN1ZmZpeCwgbmV3X3N0cmVzc19mYWlsdXJlc190b19kaXNwbGF5KQotICAgICAgICAgICAg
ICAgIGlmIGxlbihuZXdfc3RyZXNzX2ZhaWx1cmVzKSA+IHNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJ
U1BMQVk6Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgICAg
ICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVpbGQu
YnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIEZBSUxVUkUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuTm8gbmV3IGZhaWx1cmVzXG4nKQotICAg
ICAgICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAgICAgICAgICAgc2VsZi5idWlsZC5y
ZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFz
c2VkIEpTQyB0ZXN0cycKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oY2xl
YW5fdHJlZV9mYWlsdXJlcykgPiAxIGVsc2UgJycKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwot
ICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9mYWlsdXJlczoKLSAgICAgICAgICAgICAgICBtZXNz
YWdlID0gJ0ZvdW5kIHt9IHByZS1leGlzdGluZyBKU0MgdGVzdCBmYWlsdXJle306IHt9Jy5mb3Jt
YXQobGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgsIGNsZWFuX3RyZWVfZmFp
bHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgICAgIGZvciBjbGVhbl90cmVlX2ZhaWx1cmUgaW4g
Y2xlYW5fdHJlZV9mYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV06Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUo
Y2xlYW5fdHJlZV9mYWlsdXJlKQotICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVy
ZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNz
YWdlICs9ICcgLi4uJwotICAgICAgICAgICAgaWYgZmxha3lfZmFpbHVyZXM6Ci0gICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSAnIEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2Zh
aWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFr
eV9mYWlsdXJlczoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9mbGFr
eV9mYWlsdXJlKGZsYWt5X2ZhaWx1cmUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmlu
aXNoZWQoW21lc3NhZ2VdLCBTVUNDRVNTKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChO
b25lKQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2Vs
ZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNl
bGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAg
IGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQo
bWVzc2FnZSkKLQotICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRl
c3RfbmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYu
Z2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9
IHNlbGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3Vy
bCA9ICd7fSMvYnVpbGRlcnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmln
LmJ1aWxkYm90VVJMLCBzZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQot
ICAgICAgICAgICAgaGlzdG9yeV91cmwgPSAne30/c3VpdGU9amF2YXNjcmlwdGNvcmUtdGVzdHMm
dGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAg
IGVtYWlsX3N1YmplY3QgPSB1J0ZsYWt5IHRlc3Q6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAg
ICAgICAgICAgZW1haWxfdGV4dCA9ICdGbGFreSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVp
bGRlcjoge31cblxuV29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwg
YnVpbGRfdXJsLCBidWlsZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAg
ICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3Rl
eHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAg
ZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRp
bmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgc2Vu
ZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVp
bGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0
eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVy
cy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNl
bGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0
b3J5X3VybCA9ICd7fT9zdWl0ZT1qYXZhc2NyaXB0Y29yZS10ZXN0cyZ0ZXN0PXt9Jy5mb3JtYXQo
UkVTVUxUU19EQl9VUkwsIHRlc3RfbmFtZSkKLQotICAgICAgICAgICAgZW1haWxfc3ViamVjdCA9
IHUnUHJlLWV4aXN0aW5nIHRlc3QgZmFpbHVyZToge30nLmZvcm1hdCh0ZXN0X25hbWUpCi0gICAg
ICAgICAgICBlbWFpbF90ZXh0ID0gJ1Rlc3Qge30gZmFpbGVkIG9uIGNsZWFuIHRyZWUgcnVuIGlu
IHt9LlxuXG5CdWlsZGVyOiB7fVxuXG5Xb3JrZXI6IHt9XG5cbkhpc3Rvcnk6IHt9Jy5mb3JtYXQo
dGVzdF9uYW1lLCBidWlsZF91cmwsIGJ1aWxkZXJfbmFtZSwgd29ya2VyX25hbWUsIGhpc3Rvcnlf
dXJsKQotICAgICAgICAgICAgc2VuZF9lbWFpbF90b19ib3Rfd2F0Y2hlcnMoZW1haWxfc3ViamVj
dCwgZW1haWxfdGV4dCwgYnVpbGRlcl9uYW1lLCAncHJlZXhpc3Rpbmcte30nLmZvcm1hdCh0ZXN0
X25hbWUpKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBwcmlu
dCgnRXJyb3IgaW4gc2VuZGluZyBlbWFpbCBmb3IgcHJlLWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5m
b3JtYXQoZSkpCi0KLQotCi1jbGFzcyBDbGVhbkJ1aWxkKHNoZWxsLkNvbXBpbGUpOgotICAgIG5h
bWUgPSAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScKLSAgICBkZXNjcmlwdGlvbiA9IFsn
ZGVsZXRpbmcgV2ViS2l0QnVpbGQgZGlyZWN0b3J5J10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBb
J0RlbGV0ZWQgV2ViS2l0QnVpbGQgZGlyZWN0b3J5J10KLSAgICBjb21tYW5kID0gWydweXRob24n
LCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCBXaXRoUHJvcGVydGllcygn
LS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzJyksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmln
dXJhdGlvbilzJyldCi0KLQotY2xhc3MgS2lsbE9sZFByb2Nlc3NlcyhzaGVsbC5Db21waWxlKToK
LSAgICBuYW1lID0gJ2tpbGwtb2xkLXByb2Nlc3NlcycKLSAgICBkZXNjcmlwdGlvbiA9IFsna2ls
bGluZyBvbGQgcHJvY2Vzc2VzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0tpbGxlZCBvbGQg
cHJvY2Vzc2VzJ10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxkYm90J10KLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKEtpbGxPbGRQcm9jZXNzZXMsIHNlbGYp
Ll9faW5pdF9fKHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAg
ZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMg
aW4gW0ZBSUxVUkUsIEVYQ0VQVElPTl06Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmlu
aXNoZWQoWydGYWlsZWQgdG8ga2lsbCBvbGQgcHJvY2Vzc2VzLCByZXRyeWluZyBidWlsZCddLCBS
RVRSWSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLkNvbXBpbGUuZXZhbHVhdGVDb21tYW5kKHNlbGYs
IGNtZCkKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxm
LnJlc3VsdHMgaW4gW0ZBSUxVUkUsIEVYQ0VQVElPTl06Ci0gICAgICAgICAgICByZXR1cm4ge3Un
c3RlcCc6IHUnRmFpbGVkIHRvIGtpbGwgb2xkIHByb2Nlc3Nlcyd9Ci0gICAgICAgIHJldHVybiBz
aGVsbC5Db21waWxlLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotCi1jbGFzcyBUcmlnZ2VyQ3Jh
c2hMb2dTdWJtaXNzaW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAndHJpZ2dlci1jcmFz
aC1sb2ctc3VibWlzc2lvbicKLSAgICBkZXNjcmlwdGlvbiA9IFsndHJpZ2dlcmluZyBjcmFzaCBs
b2cgc3VibWlzc2lvbiddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydUcmlnZ2VyZWQgY3Jhc2gg
bG9nIHN1Ym1pc3Npb24nXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJ10KLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFRyaWdnZXJDcmFzaExvZ1N1Ym1p
c3Npb24sIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dh
cmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
cmVzdWx0cyBpbiBbRkFJTFVSRSwgRVhDRVBUSU9OXToKLSAgICAgICAgICAgIHJldHVybiB7dSdz
dGVwJzogdSdGYWlsZWQgdG8gdHJpZ2dlciBjcmFzaCBsb2cgc3VibWlzc2lvbid9Ci0gICAgICAg
IHJldHVybiBzaGVsbC5Db21waWxlLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotCi1jbGFzcyBX
YWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAnd2FpdC1m
b3ItY3Jhc2gtY29sbGVjdGlvbicKLSAgICBkZXNjcmlwdGlvbiA9IFsnd2FpdGluZy1mb3ItY3Jh
c2gtY29sbGVjdGlvbi10by1xdWllc2NlJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0NyYXNo
IGNvbGxlY3Rpb24gaGFzIHF1aWVzY2VkJ10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICctLXRpbWVv
dXQnLCBzdHIoNSAqIDYwKV0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0g
ICAgICAgIHN1cGVyKFdhaXRGb3JDcmFzaENvbGxlY3Rpb24sIHNlbGYpLl9faW5pdF9fKHRpbWVv
dXQ9NiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBnZXRSZXN1
bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgaW4gW0ZBSUxVUkUsIEVY
Q0VQVElPTl06Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnQ3Jhc2ggbG9nIGNvbGxl
Y3Rpb24gcHJvY2VzcyBzdGlsbCBydW5uaW5nJ30KLSAgICAgICAgcmV0dXJuIHNoZWxsLkNvbXBp
bGUuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQotCi0KLWNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxs
LlRlc3QpOgotICAgIG5hbWUgPSAnbGF5b3V0LXRlc3RzJwotICAgIGRlc2NyaXB0aW9uID0gWyds
YXlvdXQtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydsYXlvdXQtdGVz
dHMnXQotICAgIHJlc3VsdERpcmVjdG9yeSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzJwotICAgIGpz
b25GaWxlTmFtZSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJwotICAg
IGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZpbGVOYW1lfQotICAgIHRlc3RfZmFpbHVyZXNfbG9n
X25hbWUgPSAndGVzdC1mYWlsdXJlcycKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywKLSAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywK
LSAgICAgICAgICAgICAgICctLW5vLXNob3ctcmVzdWx0cycsCi0gICAgICAgICAgICAgICAnLS1u
by1uZXctdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICctLWNsb2JiZXItb2xkLXJlc3Vs
dHMnLAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMn
KV0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNoZWxsLlRl
c3QuX19pbml0X18oc2VsZiwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0gICAgICAgIHNl
bGYuaW5jb3JyZWN0TGF5b3V0TGluZXMgPSBbXQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0
ZXApOgotICAgICAgICByZXR1cm4gbm90ICgoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUn
LCAnJykubG93ZXIoKSA9PSAnY29tbWl0LXF1ZXVlJykgYW5kCi0gICAgICAgICAgICAgICAgICAg
IChzZWxmLmdldFByb3BlcnR5KCdyZXZlcnQnKSBvciBzZWxmLmdldFByb3BlcnR5KCdwYXNzZWRf
bWFjX3drMicpKSkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2Jz
ZXJ2ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUpCi0g
ICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0g
ICAgICAgIHNlbGYubG9nX29ic2VydmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNl
cnZlcigpCi0gICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNl
cnZlcl9qc29uKQotCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZv
cm0nKQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHBsYXRmb3JtLCBzZWxm
LmdldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLSAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50
cyA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnKQotCi0gICAgICAgIGlm
IHNlbGYuZ2V0UHJvcGVydHkoJ3VzZS1kdW1wLXJlbmRlci10cmVlJywgRmFsc2UpOgotICAgICAg
ICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1kdW1wLXJlbmRlci10cmVl
J10pCi0KLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1yZXN1bHRz
LWRpcmVjdG9yeScsIHNlbGYucmVzdWx0RGlyZWN0b3J5XSkKLSAgICAgICAgc2VsZi5zZXRDb21t
YW5kKHNlbGYuY29tbWFuZCArIFsnLS1kZWJ1Zy1yd3QtbG9nZ2luZyddKQotCi0gICAgICAgIHBh
dGNoX2F1dGhvciA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2F1dGhvcicpCi0gICAgICAgIGlm
IHBhdGNoX2F1dGhvciBpbiBbJ3dlYmtpdC13cHQtaW1wb3J0LWJvdEBpZ2FsaWEuY29tJ106Ci0g
ICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydpbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzJ10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNl
dENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcs
ICctLXNraXAtZmFpbGluZy10ZXN0cyddKQotCi0gICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVu
dHM6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgYWRkaXRpb25h
bEFyZ3VtZW50cykKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKLQotICAg
ICMgRklYTUU6IFRoaXMgd2lsbCBicmVhayBpZiBydW4td2Via2l0LXRlc3RzIGNoYW5nZXMgaXRz
IGRlZmF1bHQgbG9nIGZvcm1hdHRlci4KLSAgICBucnd0X2xvZ19tZXNzYWdlX3JlZ2V4cCA9IHJl
LmNvbXBpbGUocidcZHsyfTpcZHsyfTpcZHsyfShcLlxkKyk/XHMrXGQrXHMrKD9QPG1lc3NhZ2U+
LiopJykKLQotICAgIGRlZiBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KHNlbGYsIGxpbmUp
OgotICAgICAgICBtYXRjaF9vYmplY3QgPSBzZWxmLm5yd3RfbG9nX21lc3NhZ2VfcmVnZXhwLm1h
dGNoKGxpbmUpCi0gICAgICAgIGlmIG1hdGNoX29iamVjdDoKLSAgICAgICAgICAgIHJldHVybiBt
YXRjaF9vYmplY3QuZ3JvdXAoJ21lc3NhZ2UnKQotICAgICAgICByZXR1cm4gbGluZQotCi0gICAg
QGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwg
bWVzc2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxv
Z05hbWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxk
IHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQot
ICAgIGRlZiBfcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChzZWxmLCBsb2dUZXh0KToKLSAgICAg
ICAgaW5jb3JyZWN0TGF5b3V0TGluZXMgPSBbXQotICAgICAgICBleHByZXNzaW9ucyA9IFsKLSAg
ICAgICAgICAgICgnZmxha2VzJywgcmUuY29tcGlsZShyJ1VuZXhwZWN0ZWQgZmxha2luZXNzLitc
KChcZCspXCknKSksCi0gICAgICAgICAgICAoJ25ldyBwYXNzZXMnLCByZS5jb21waWxlKHInRXhw
ZWN0ZWQgdG8gLissIGJ1dCBwYXNzZWQ6XHMrXCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCdt
aXNzaW5nIHJlc3VsdHMnLCByZS5jb21waWxlKHInUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgbWlz
c2luZyByZXN1bHRzXHMrXCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCdmYWlsdXJlcycsIHJl
LmNvbXBpbGUocidSZWdyZXNzaW9uczogVW5leHBlY3RlZC4rXCgoXGQrKVwpJykpLAotICAgICAg
ICBdCi0gICAgICAgIHRlc3RGYWlsdXJlcyA9IHt9Ci0KLSAgICAgICAgZm9yIGxpbmUgaW4gbG9n
VGV4dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ0V4aXRpbmcgZWFy
bHknKSA+PSAwIG9yIGxpbmUuZmluZCgnbGVha3MgZm91bmQnKSA+PSAwOgotICAgICAgICAgICAg
ICAgIGluY29ycmVjdExheW91dExpbmVzLmFwcGVuZChzZWxmLl9zdHJpcF9weXRob25fbG9nZ2lu
Z19wcmVmaXgobGluZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZv
ciBuYW1lLCBleHByZXNzaW9uIGluIGV4cHJlc3Npb25zOgotICAgICAgICAgICAgICAgIG1hdGNo
ID0gZXhwcmVzc2lvbi5zZWFyY2gobGluZSkKLQotICAgICAgICAgICAgICAgIGlmIG1hdGNoOgot
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbHVyZXNbbmFtZV0gPSB0ZXN0RmFpbHVyZXMuZ2V0
KG5hbWUsIDApICsgaW50KG1hdGNoLmdyb3VwKDEpKQotICAgICAgICAgICAgICAgICAgICBicmVh
awotCi0gICAgICAgICAgICAgICAgIyBGSVhNRTogUGFyc2UgZmlsZSBuYW1lcyBhbmQgcHV0IHRo
ZW0gaW4gcmVzdWx0cwotCi0gICAgICAgIGZvciBuYW1lIGluIHRlc3RGYWlsdXJlczoKLSAgICAg
ICAgICAgIGluY29ycmVjdExheW91dExpbmVzLmFwcGVuZChzdHIodGVzdEZhaWx1cmVzW25hbWVd
KSArICcgJyArIG5hbWUpCi0KLSAgICAgICAgc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lcyA9IGlu
Y29ycmVjdExheW91dExpbmVzCi0KLSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6
Ci0gICAgICAgIHNoZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAg
bG9nVGV4dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2
ZXIuZ2V0U3RkZXJyKCkKLSAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9q
c29uLmdldFN0ZG91dCgpCi0KLSAgICAgICAgZmlyc3RfcmVzdWx0cyA9IExheW91dFRlc3RGYWls
dXJlcy5yZXN1bHRzX2Zyb21fc3RyaW5nKGxvZ1RleHRKc29uKQotCi0gICAgICAgIGlmIGZpcnN0
X3Jlc3VsdHM6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4
Y2VlZF9mYWlsdXJlX2xpbWl0JywgZmlyc3RfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVy
ZV9saW1pdCkKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJl
cycsIGZpcnN0X3Jlc3VsdHMuZmFpbGluZ190ZXN0cykKLSAgICAgICAgICAgIGlmIGZpcnN0X3Jl
c3VsdHMuZmFpbGluZ190ZXN0czoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxm
LnRlc3RfZmFpbHVyZXNfbG9nX25hbWUsICdcbicuam9pbihmaXJzdF9yZXN1bHRzLmZhaWxpbmdf
dGVzdHMpKQotICAgICAgICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQp
Ci0KLSAgICBkZWYgZXZhbHVhdGVSZXN1bHQoc2VsZiwgY21kKToKLSAgICAgICAgcmVzdWx0ID0g
U1VDQ0VTUwotCi0gICAgICAgIGlmIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXM6Ci0gICAgICAg
ICAgICBpZiBsZW4oc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lcykgPT0gMToKLSAgICAgICAgICAg
ICAgICBsaW5lID0gc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lc1swXQotICAgICAgICAgICAgICAg
IGlmIGxpbmUuZmluZCgnd2VyZSBuZXcnKSA+PSAwIG9yIGxpbmUuZmluZCgnd2FzIG5ldycpID49
IDAgb3IgbGluZS5maW5kKCcgbGVhaycpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBXQVJOSU5HUwotCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmluY29ycmVjdExheW91
dExpbmVzOgotICAgICAgICAgICAgICAgIGlmIGxpbmUuZmluZCgnZmxha2VzJykgPj0gMCBvciBs
aW5lLmZpbmQoJ25ldyBwYXNzZXMnKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQg
PSBXQVJOSU5HUwotICAgICAgICAgICAgICAgIGVsaWYgbGluZS5maW5kKCdtaXNzaW5nIHJlc3Vs
dHMnKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAg
ICAgIyBSZXR1cm4gY29kZSBmcm9tIFRvb2xzL1NjcmlwdHMvbGF5b3V0X3Rlc3RzL3J1bl93ZWJr
aXRfdGVzdHMucHkuCi0gICAgICAgICMgVGhpcyBtZWFucyB0aGF0IGFuIGV4Y2VwdGlvbiB3YXMg
cmFpc2VkIHdoZW4gcnVubmluZyBydW4td2Via2l0LXRlc3RzIGFuZAotICAgICAgICAjIHdhcyBu
ZXZlciBoYW5kbGVkLgotICAgICAgICBpZiBjbWQucmMgPT0gMjU0OgotICAgICAgICAgICAgcmV0
dXJuIFJFVFJZCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZB
SUxVUkUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5k
KHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJlc3VsdChjbWQpCi0gICAg
ICAgIGlmIHJjID09IFNVQ0NFU1Mgb3IgcmMgPT0gV0FSTklOR1M6Ci0gICAgICAgICAgICBtZXNz
YWdlID0gJ1Bhc3NlZCBsYXlvdXQgdGVzdHMnCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9u
RG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MK
LSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknLCBtZXNzYWdlKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVu
dFN0ZXAoWwotICAgICAgICAgICAgICAgIEFyY2hpdmVUZXN0UmVzdWx0cygpLAotICAgICAgICAg
ICAgICAgIFVwbG9hZFRlc3RSZXN1bHRzKCksCi0gICAgICAgICAgICAgICAgRXh0cmFjdFRlc3RS
ZXN1bHRzKCksCi0gICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9
RmFsc2UsIGFkZFVSTHM9RmFsc2UpLAotICAgICAgICAgICAgICAgIEtpbGxPbGRQcm9jZXNzZXMo
KSwKLSAgICAgICAgICAgICAgICBSZVJ1bldlYktpdFRlc3RzKCksCi0gICAgICAgICAgICBdKQot
ICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAg
ICAgICBzdGF0dXMgPSBzZWxmLm5hbWUKLQotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0gU1VD
Q0VTUyBhbmQgc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lczoKLSAgICAgICAgICAgIHN0YXR1cyA9
IHUnICcuam9pbihzZWxmLmluY29ycmVjdExheW91dExpbmVzKQotICAgICAgICAgICAgcmV0dXJu
IHt1J3N0ZXAnOiBzdGF0dXN9Ci0KLSAgICAgICAgcmV0dXJuIHN1cGVyKFJ1bldlYktpdFRlc3Rz
LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotCi1jbGFzcyBSZVJ1bldlYktpdFRlc3RzKFJ1
bldlYktpdFRlc3RzKToKLSAgICBuYW1lID0gJ3JlLXJ1bi1sYXlvdXQtdGVzdHMnCi0gICAgTlVN
X0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxm
LCBjbWQpOgotICAgICAgICByYyA9IHNlbGYuZXZhbHVhdGVSZXN1bHQoY21kKQotICAgICAgICBm
aXJzdF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcpCi0gICAgICAgIGZpcnN0
X3Jlc3VsdHNfZmFpbGluZ190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5f
ZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9m
YWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2Zh
aWx1cmVfbGltaXQnKQotICAgICAgICBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0
KHNlbGYuZ2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHRl
c3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxlZCA9IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0
cy5pbnRlcnNlY3Rpb24oc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cykKLSAgICAgICAgZmxh
a3lfZmFpbHVyZXMgPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMudW5pb24oc2Vjb25kX3Jl
c3VsdHNfZmFpbGluZ190ZXN0cykgLSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJz
ZWN0aW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCi0gICAgICAgIGZsYWt5X2ZhaWx1
cmVzID0gbGlzdChmbGFreV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVld
Ci0gICAgICAgIGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWlsdXJl
cykKLQotICAgICAgICBpZiByYyA9PSBTVUNDRVNTIG9yIHJjID09IFdBUk5JTkdTOgotICAgICAg
ICAgICAgbWVzc2FnZSA9ICdQYXNzZWQgbGF5b3V0IHRlc3RzJwotICAgICAgICAgICAgc2VsZi5k
ZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMg
PSBTVUNDRVNTCi0gICAgICAgICAgICBpZiBub3QgZmlyc3RfcmVzdWx0c19kaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdDoKLSAgICAgICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYg
bGVuKGZsYWt5X2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAgICAgICAgIG1lc3NhZ2Ug
PSAnRm91bmQgZmxha3kgdGVzdHt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgZmxha3lfZmFp
bHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGZsYWt5
X2ZhaWx1cmVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5
X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1
aWxkX3N1bW1hcnknLCBtZXNzYWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycsIFRydWUpCi0gICAgICAgICAgICBzZWxmLmJ1
aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1bHRzKCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRUZXN0UmVz
dWx0cyhpZGVudGlmaWVyPSdyZXJ1bicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgRXh0cmFjdFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcnVuJyks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbkFwcGx5
UGF0Y2hJZlJlcXVpcmVkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1G
YWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBD
b21waWxlV2ViS2l0V2l0aG91dFBhdGNoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwg
YWRkVVJMcz1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBLaWxsT2xkUHJvY2Vzc2VzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCgpXSkKLSAgICAg
ICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAg
ICAgIHNoZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4
dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0
U3RkZXJyKCkKLSAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdl
dFN0ZG91dCgpCi0KLSAgICAgICAgc2Vjb25kX3Jlc3VsdHMgPSBMYXlvdXRUZXN0RmFpbHVyZXMu
cmVzdWx0c19mcm9tX3N0cmluZyhsb2dUZXh0SnNvbikKLQotICAgICAgICBpZiBzZWNvbmRfcmVz
dWx0czoKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9yZXN1bHRzX2V4Y2Vl
ZF9mYWlsdXJlX2xpbWl0Jywgc2Vjb25kX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVf
bGltaXQpCi0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVz
Jywgc2Vjb25kX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykKLSAgICAgICAgICAgIGlmIHNlY29uZF9y
ZXN1bHRzLmZhaWxpbmdfdGVzdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2Vs
Zi50ZXN0X2ZhaWx1cmVzX2xvZ19uYW1lLCAnXG4nLmpvaW4oc2Vjb25kX3Jlc3VsdHMuZmFpbGlu
Z190ZXN0cykpCi0gICAgICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nVGV4
dCkKLQotICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRlc3RfbmFt
ZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJv
cGVydHkoJ2J1aWxkZXJuYW1lJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYu
Z2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7
fSMvYnVpbGRlcnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxk
Ym90VVJMLCBzZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQotICAgICAg
ICAgICAgaGlzdG9yeV91cmwgPSAne30/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1h
dChSRVNVTFRTX0RCX1VSTCwgdGVzdF9uYW1lKQotCi0gICAgICAgICAgICBlbWFpbF9zdWJqZWN0
ID0gdSdGbGFreSB0ZXN0OiB7fScuZm9ybWF0KHRlc3RfbmFtZSkKLSAgICAgICAgICAgIGVtYWls
X3RleHQgPSAnVGVzdCB7fSBmbGFrZWQgaW4ge31cblxuQnVpbGRlcjoge30nLmZvcm1hdCh0ZXN0
X25hbWUsIGJ1aWxkX3VybCwgYnVpbGRlcl9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9
ICdGbGFreSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7
fVxuXG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25h
bWUsIHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9f
Ym90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2Zs
YWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl
OgotICAgICAgICAgICAgIyBDYXRjaGluZyBhbGwgZXhjZXB0aW9ucyBoZXJlIHRvIGVuc3VyZSB0
aGF0IGZhaWx1cmUgdG8gc2VuZCBlbWFpbCBkb2Vzbid0IGltcGFjdCB0aGUgYnVpbGQKLSAgICAg
ICAgICAgIHByaW50KCdFcnJvciBpbiBzZW5kaW5nIGVtYWlsIGZvciBmbGFreSBmYWlsdXJlczog
e30nLmZvcm1hdChlKSkKLQotCi1jbGFzcyBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaChSdW5X
ZWJLaXRUZXN0cyk6Ci0gICAgbmFtZSA9ICdydW4tbGF5b3V0LXRlc3RzLXdpdGhvdXQtcGF0Y2gn
Ci0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hl
bGwuVGVzdC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBzZWxmLmJ1aWxkLmFk
ZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9hZFRlc3RS
ZXN1bHRzKGlkZW50aWZpZXI9J2NsZWFuLXRyZWUnKSwgRXh0cmFjdFRlc3RSZXN1bHRzKGlkZW50
aWZpZXI9J2NsZWFuLXRyZWUnKSwgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cygpXSkKLSAgICAg
ICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAg
ICAgIHNoZWxsLlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4
dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0
U3RkZXJyKCkKLSAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdl
dFN0ZG91dCgpCi0KLSAgICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzID0gTGF5b3V0VGVzdEZhaWx1
cmVzLnJlc3VsdHNfZnJvbV9zdHJpbmcobG9nVGV4dEpzb24pCi0KLSAgICAgICAgaWYgY2xlYW5f
dHJlZV9yZXN1bHRzOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgY2xlYW5fdHJlZV9yZXN1bHRzLmRpZF9leGNl
ZWRfdGVzdF9mYWlsdXJlX2xpbWl0KQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xl
YW5fdHJlZV9ydW5fZmFpbHVyZXMnLCBjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykK
LSAgICAgICAgICAgIGlmIGNsZWFuX3RyZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgotICAgICAg
ICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFtZSwgJ1xu
Jy5qb2luKGNsZWFuX3RyZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKLSAgICAgICAgc2VsZi5f
cGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2dUZXh0KQotCi0KLWNsYXNzIEFuYWx5emVMYXlv
dXRUZXN0c1Jlc3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6Ci0gICAg
bmFtZSA9ICdhbmFseXplLWxheW91dC10ZXN0cy1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0g
WydhbmFseXplLWxheW91dC10ZXN0LXJlc3VsdHMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsn
YW5hbHl6ZS1sYXlvdXQtdGVzdHMtcmVzdWx0cyddCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BM
QVkgPSAxMAotCi0gICAgZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIG5ld19mYWlsdXJlcyk6Ci0g
ICAgICAgIHNlbGYuZmluaXNoZWQoRkFJTFVSRSkKLSAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRz
ID0gRkFJTFVSRQotICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKG5ld19mYWlsdXJl
cykgPiAxIGVsc2UgJycKLSAgICAgICAgbmV3X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihz
b3J0ZWQobmV3X2ZhaWx1cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCi0gICAg
ICAgIG1lc3NhZ2UgPSAnRm91bmQge30gbmV3IHRlc3QgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxl
bihuZXdfZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgsIG5ld19mYWlsdXJlc19zdHJpbmcpCi0gICAg
ICAgIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToK
LSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgIHNlbGYuZGVzY3JpcHRpb25E
b25lID0gbWVzc2FnZQotICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1
cmVzKG5ld19mYWlsdXJlcykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNo
X3N1bW1hcnknLCBtZXNzYWdlKQotCi0gICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxk
ZXJuYW1lJywgJycpLmxvd2VyKCkgPT0gJ2NvbW1pdC1xdWV1ZSc6Ci0gICAgICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBtZXNzYWdlKQotICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0NvbW1lbnRPbkJ1ZygpLCBT
ZXRDb21taXRRdWV1ZU1pbnVzRmxhZ09uUGF0Y2goKV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbU2V0Q29tbWl0UXVldWVN
aW51c0ZsYWdPblBhdGNoKCldKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQot
Ci0gICAgZGVmIHJlcG9ydF9wcmVfZXhpc3RpbmdfZmFpbHVyZXMoc2VsZiwgY2xlYW5fdHJlZV9m
YWlsdXJlcywgZmxha3lfZmFpbHVyZXMpOgotICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1Mp
Ci0gICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgc2VsZi5kZXNj
cmlwdGlvbkRvbmUgPSAnUGFzc2VkIGxheW91dCB0ZXN0cycKLSAgICAgICAgbWVzc2FnZSA9ICcn
Ci0gICAgICAgIGlmIGNsZWFuX3RyZWVfZmFpbHVyZXM6Ci0gICAgICAgICAgICBjbGVhbl90cmVl
X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQoY2xlYW5fdHJlZV9mYWlsdXJlcylb
OnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotICAgICAgICAgICAgcGx1cmFsU3VmZml4
ID0gJ3MnIGlmIGxlbihjbGVhbl90cmVlX2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAg
ICAgbWVzc2FnZSA9ICdGb3VuZCB7fSBwcmUtZXhpc3RpbmcgdGVzdCBmYWlsdXJle306IHt9Jy5m
b3JtYXQobGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgsIGNsZWFuX3RyZWVf
ZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMp
ID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICcgLi4uJwotICAgICAgICAgICAgZm9yIGNsZWFuX3RyZWVfZmFpbHVyZSBpbiBsaXN0KGNs
ZWFuX3RyZWVfZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXToKLSAgICAg
ICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlKGNsZWFu
X3RyZWVfZmFpbHVyZSkKLQotICAgICAgICBpZiBmbGFreV9mYWlsdXJlczoKLSAgICAgICAgICAg
IGZsYWt5X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQoZmxha3lfZmFpbHVyZXMp
WzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZp
eCA9ICdzJyBpZiBsZW4oZmxha3lfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBt
ZXNzYWdlICs9ICcgRm91bmQgZmxha3kgdGVzdHt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwg
Zmxha3lfZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgaWYgbGVuKGZsYWt5X2ZhaWx1cmVz
KSA+IHNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVk6Ci0gICAgICAgICAgICAgICAgbWVzc2Fn
ZSArPSAnIC4uLicKLSAgICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGxpc3QoZmxha3lf
ZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXToKLSAgICAgICAgICAgICAg
ICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKLQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgbWVzc2FnZSkKLSAgICAgICAg
cmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkKLQotICAgIGRlZiByZXRyeV9idWlsZChzZWxmLCBt
ZXNzYWdlPScnKToKLSAgICAgICAgaWYgbm90IG1lc3NhZ2U6Ci0gICAgICAgICAgICBtZXNzYWdl
ID0gJ1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkg
cGF0Y2gsIHJldHJ5aW5nIGJ1aWxkJwotICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1l
c3NhZ2UKLQotICAgICAgICB0cmlnZ2VyZWRfYnkgPSBzZWxmLmdldFByb3BlcnR5KCd0cmlnZ2Vy
ZWRfYnknLCBOb25lKQotICAgICAgICBpZiB0cmlnZ2VyZWRfYnk6Ci0gICAgICAgICAgICAjIFRy
aWdnZXIgcGFyZW50IGJ1aWxkIHNvIHRoYXQgaXQgY2FuIHJlLWJ1aWxkIFRvVAotICAgICAgICAg
ICAgc2NoZHVsZXJfZm9yX2N1cnJlbnRfcXVldWUgPSBzZWxmLmdldFByb3BlcnR5KCdzY2hlZHVs
ZXInKQotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1Ry
aWdnZXIoc2NoZWR1bGVyTmFtZXM9dHJpZ2dlcmVkX2J5LCBpbmNsdWRlX3JldmlzaW9uPUZhbHNl
LCB0cmlnZ2Vycz1bc2NoZHVsZXJfZm9yX2N1cnJlbnRfcXVldWVdKV0pCi0gICAgICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgbWVzc2FnZSkKLSAgICAgICAgICAgIHNl
bGYuZmluaXNoZWQoU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmlu
aXNoZWQoUkVUUlkpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3Nh
Z2VdLCBSRVRSWSkKLSAgICAgICAgcmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkKLQotICAgIGRl
ZiBfcmVzdWx0c19mYWlsZWRfZGlmZmVyZW50X3Rlc3RzKHNlbGYsIGZpcnN0X3Jlc3VsdHNfZmFp
bGluZ190ZXN0cywgc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cyk6Ci0gICAgICAgIHJldHVy
biBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190
ZXN0cwotCi0gICAgZGVmIHNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoc2VsZiwgdGVzdF9u
YW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQ
cm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0g
J3t9Iy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVp
bGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAg
ICAgICAgICBoaXN0b3J5X3VybCA9ICd7fT9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD17fScuZm9y
bWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1Ympl
Y3QgPSB1J0ZsYWt5IHRlc3Q6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1h
aWxfdGV4dCA9ICdGbGFreSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxu
V29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBi
dWlsZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRf
ZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJf
bmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2Vw
dGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9y
IGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgc2VuZF9lbWFpbF9mb3Jf
cHJlX2V4aXN0aW5nX2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAn
JykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFt
ZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMv
e30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1
aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7
fT9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0
X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J1ByZS1leGlzdGluZyB0ZXN0
IGZhaWx1cmU6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9
ICdUZXN0IHt9IGZhaWxlZCBvbiBjbGVhbiB0cmVlIHJ1biBpbiB7fS5cblxuQnVpbGRlcjoge31c
blxuV29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJs
LCBidWlsZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNl
bmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxk
ZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcg
ZW1haWwgZm9yIHByZS1leGlzdGluZyBmYWlsdXJlOiB7fScuZm9ybWF0KGUpKQotCi0gICAgZGVm
IHNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMpOgotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNo
X2lkJywgJycpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5zaG91bGRfc2VuZF9lbWFpbChwYXRj
aF9pZCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBidWlsZGVyX25hbWUg
PSBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKQotICAgICAgICAgICAgYnVnX2lk
ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX2lkJywgJycpCi0gICAgICAgICAgICBidWdfdGl0bGUg
PSBzZWxmLmdldFByb3BlcnR5KCdidWdfdGl0bGUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9u
YW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgcGF0
Y2hfYXV0aG9yID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfYXV0aG9yJywgJycpCi0gICAgICAg
ICAgICBidWlsZF91cmwgPSAne30jL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYu
bWFzdGVyLmNvbmZpZy5idWlsZGJvdFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1
aWxkLm51bWJlcikKLSAgICAgICAgICAgIHRlc3RfbmFtZXNfc3RyaW5nID0gJycKLSAgICAgICAg
ICAgIGZvciB0ZXN0X25hbWUgaW4gc29ydGVkKHRlc3RfbmFtZXMpOgotICAgICAgICAgICAgICAg
IGhpc3RvcnlfdXJsID0gJ3t9P3N1aXRlPWxheW91dC10ZXN0cyZ0ZXN0PXt9Jy5mb3JtYXQoUkVT
VUxUU19EQl9VUkwsIHRlc3RfbmFtZSkKLSAgICAgICAgICAgICAgICB0ZXN0X25hbWVzX3N0cmlu
ZyArPSAnXG4tIHt9ICg8YSBocmVmPSJ7fSI+dGVzdCBoaXN0b3J5PC9hPiknLmZvcm1hdCh0ZXN0
X25hbWUsIGhpc3RvcnlfdXJsKQotCi0gICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYg
bGVuKHRlc3RfbmFtZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBlbWFpbF9zdWJqZWN0ID0g
dSdMYXlvdXQgdGVzdCBmYWlsdXJlIGZvciBQYXRjaCB7fToge30gJy5mb3JtYXQocGF0Y2hfaWQs
IGJ1Z190aXRsZSkKLSAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnRVdTIGhhcyBkZXRlY3RlZCBs
YXlvdXQgdGVzdCBmYWlsdXJle30gb24ge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGJ1aWxkZXJf
bmFtZSkKLSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9
Int9Ij5QYXRjaCB7fTwvYT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBw
YXRjaF9pZCkKLSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1
ZyB7fTwvYT4uJy5mb3JtYXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCi0gICAg
ICAgICAgICBlbWFpbF90ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6
IHt9XG5cblBhdGNoIGF1dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikK
LSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuXG5MYXlvdXQgdGVzdCBmYWlsdXJle306XG57
fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgdGVzdF9uYW1lc19zdHJpbmcpCi0gICAgICAgICAgICBl
bWFpbF90ZXh0ICs9ICdcblxuVG8gdW5zdWJzY3JpYmxlIGZyb20gdGhlc2Ugbm90aWZpY2F0aW9u
cyBvciB0byBwcm92aWRlIGFueSBmZWVkYmFjayBwbGVhc2UgZW1haWwgYWFrYXNoX2phaW5AYXBw
bGUuY29tJwotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1NlbmRpbmcgZW1h
aWwgbm90aWZpY2F0aW9uIHRvIHt9Jy5mb3JtYXQocGF0Y2hfYXV0aG9yKSkKLSAgICAgICAgICAg
IHNlbmRfZW1haWxfdG9fcGF0Y2hfYXV0aG9yKHBhdGNoX2F1dGhvciwgZW1haWxfc3ViamVjdCwg
ZW1haWxfdGV4dCwgcGF0Y2hfaWQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAg
ICAgICAgICAgIHByaW50KCdFcnJvciBpbiBzZW5kaW5nIGVtYWlsIGZvciBuZXcgbGF5b3V0IHRl
c3QgZmFpbHVyZXM6IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0
cyhzZWxmLCBmbGFreV90ZXN0cyk6Ci0gICAgICAgICNUT0RPOiBpbXBsZW1lbnQgdGhpcwotICAg
ICAgICBwYXNzCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGZpcnN0X3Jlc3VsdHNf
ZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JykKLSAgICAgICAgZmlyc3RfcmVzdWx0c19mYWls
aW5nX3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtd
KSkKLSAgICAgICAgc2Vjb25kX3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQg
PSBzZWxmLmdldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcp
Ci0gICAgICAgIHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9w
ZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgY2xlYW5fdHJlZV9yZXN1
bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xl
YW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JykKLSAgICAgICAgY2xlYW5fdHJl
ZV9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJl
ZV9ydW5fZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gZmlyc3RfcmVz
dWx0c19mYWlsaW5nX3Rlc3RzLnVuaW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpIC0g
Zmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzLmludGVyc2VjdGlvbihzZWNvbmRfcmVzdWx0c19m
YWlsaW5nX3Rlc3RzKQotCi0gICAgICAgIGlmIChub3QgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rl
c3RzKSBhbmQgKG5vdCBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKLSAgICAgICAgICAg
ICMgSWYgd2UndmUgbWFkZSBpdCBoZXJlLCB0aGVuIGxheW91dC10ZXN0cyBhbmQgcmUtcnVuLWxh
eW91dC10ZXN0cyBmYWlsZWQsIHdoaWNoIG1lYW5zCi0gICAgICAgICAgICAjIHRoZXJlIHNob3Vs
ZCBoYXZlIGJlZW4gc29tZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhlcmUgaXMgc29tZSB1
bmV4cGVjdGVkIGlzc3VlLgotICAgICAgICAgICAgIyBUT0RPOiBlbWFpbCBFV1MgYWRtaW5zCi0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9idWlsZCgnVW5leHBlY3RlZCBpbmZyYXN0cnVj
dHVyZSBpc3N1ZSwgcmV0cnlpbmcgYnVpbGQnKQotCi0gICAgICAgIGlmIGZpcnN0X3Jlc3VsdHNf
ZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgYW5kIHNlY29uZF9yZXN1bHRzX2RpZF9leGNl
ZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAgICAgICAgaWYgKGxlbihmaXJzdF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMpIC0gbGVuKGNsZWFuX3RyZWVfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKSkg
PD0gNToKLSAgICAgICAgICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlbiBtYW55
IHRlc3RzIGFyZSBmYWlsaW5nIHdpdGggdGhlIHBhdGNoIGFwcGxpZWQsIGJ1dAotICAgICAgICAg
ICAgICAgICMgaWYgdGhlIGNsZWFuIHRyZWUgaXMgYWxzbyBmYWlsaW5nIG1hbnkgdGVzdHMsIGV2
ZW4gaWYgaXQncyBub3QgcXVpdGUgYXMgbWFueSwKLSAgICAgICAgICAgICAgICAjIHRoZW4gd2Ug
Y2FuJ3QgYmUgY2VydGFpbiB0aGF0IHRoZSBkaXNjcmVwYW5jeSBpc24ndCBkdWUgdG8gZmxha2lu
ZXNzLCBhbmQgaGVuY2Ugd2UgbXVzdCBkZWZlciBqdWRnZW1lbnQuCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0
X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQotCi0gICAgICAgIGlmIHNlY29u
ZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAgICAgICAgaWYg
Y2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2J1aWxkKCkKLSAgICAgICAgICAgIGZhaWx1cmVz
X2ludHJvZHVjZWRfYnlfcGF0Y2ggPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgLSBjbGVh
bl90cmVlX3Jlc3VsdHNfZmFpbGluZ190ZXN0cwotICAgICAgICAgICAgaWYgZmFpbHVyZXNfaW50
cm9kdWNlZF9ieV9wYXRjaDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFp
bHVyZShmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoKQotICAgICAgICAgICAgcmV0dXJuIHNl
bGYucmV0cnlfYnVpbGQoKQotCi0gICAgICAgIGlmIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90
ZXN0X2ZhaWx1cmVfbGltaXQ6Ci0gICAgICAgICAgICBpZiBjbGVhbl90cmVlX3Jlc3VsdHNfZGlk
X2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmV0cnlfYnVpbGQoKQotICAgICAgICAgICAgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCA9
IHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgLSBjbGVhbl90cmVlX3Jlc3VsdHNfZmFpbGlu
Z190ZXN0cwotICAgICAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaDoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmYWlsdXJlc19pbnRyb2R1
Y2VkX2J5X3BhdGNoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQotCi0g
ICAgICAgIGlmIHNlbGYuX3Jlc3VsdHNfZmFpbGVkX2RpZmZlcmVudF90ZXN0cyhmaXJzdF9yZXN1
bHRzX2ZhaWxpbmdfdGVzdHMsIHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpOgotICAgICAg
ICAgICAgdGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJzdCA9IGZpcnN0X3Jlc3VsdHNfZmFpbGlu
Z190ZXN0cy5kaWZmZXJlbmNlKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCi0gICAgICAg
ICAgICBzZWxmLl9yZXBvcnRfZmxha3lfdGVzdHModGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJz
dCkKLQotICAgICAgICAgICAgdGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9zZWNvbmQgPSBzZWNvbmRf
cmVzdWx0c19mYWlsaW5nX3Rlc3RzLmRpZmZlcmVuY2UoZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rl
c3RzKQotICAgICAgICAgICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKHRlc3RzX3RoYXRfb25s
eV9mYWlsZWRfc2Vjb25kKQotCi0gICAgICAgICAgICB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9m
YWlsZWQgPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9y
ZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCi0gICAgICAgICAgICBpZiB0ZXN0c190aGF0X2NvbnNpc3Rl
bnRseV9mYWlsZWQ6Ci0gICAgICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9l
eGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vs
Zi5yZXRyeV9idWlsZCgpCi0gICAgICAgICAgICAgICAgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9w
YXRjaCA9IHRlc3RzX3RoYXRfY29uc2lzdGVudGx5X2ZhaWxlZCAtIGNsZWFuX3RyZWVfcmVzdWx0
c19mYWlsaW5nX3Rlc3RzCi0gICAgICAgICAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9i
eV9wYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUo
ZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCkKLQotICAgICAgICAgICAgIyBBdCB0aGlzIHBv
aW50IHdlIGtub3cgdGhhdCBhdCBsZWFzdCBvbmUgdGVzdCBmbGFrZWQsIGJ1dCBubyBjb25zaXN0
ZW50IGZhaWx1cmVzCi0gICAgICAgICAgICAjIHdlcmUgaW50cm9kdWNlZC4gVGhpcyBpcyBhIGJp
dCBvZiBhIGdyZXktem9uZS4gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2Vk
IHNvbWUgZmxha2luZXNzLgotICAgICAgICAgICAgIyBXZSBzdGlsbCBtYXJrIHRoZSBidWlsZCBh
cyBTVUNDRVNTLgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X3ByZV9leGlzdGluZ19m
YWlsdXJlcyhjbGVhbl90cmVlX3Jlc3VsdHNfZmFpbGluZ190ZXN0cywgZmxha3lfZmFpbHVyZXMp
Ci0KLSAgICAgICAgaWYgY2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQotICAgICAgICBm
YWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3Rz
IC0gY2xlYW5fdHJlZV9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMKLSAgICAgICAgaWYgZmFpbHVyZXNf
aW50cm9kdWNlZF9ieV9wYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWls
dXJlKGZhaWx1cmVzX2ludHJvZHVjZWRfYnlfcGF0Y2gpCi0KLSAgICAgICAgIyBBdCB0aGlzIHBv
aW50LCB3ZSBrbm93IHRoYXQgdGhlIGZpcnN0IGFuZCBzZWNvbmQgcnVucyBoYWQgdGhlIGV4YWN0
IHNhbWUgZmFpbHVyZXMsCi0gICAgICAgICMgYW5kIHRoYXQgdGhvc2UgZmFpbHVyZXMgYXJlIGFs
bCBwcmVzZW50IG9uIHRoZSBjbGVhbiB0cmVlLCBzbyB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5
Ci0gICAgICAgICMgdGhhdCB0aGUgcGF0Y2ggaXMgZ29vZC4KLSAgICAgICAgcmV0dXJuIHNlbGYu
cmVwb3J0X3ByZV9leGlzdGluZ19mYWlsdXJlcyhjbGVhbl90cmVlX3Jlc3VsdHNfZmFpbGluZ190
ZXN0cywgZmxha3lfZmFpbHVyZXMpCi0KLQotY2xhc3MgUnVuV2ViS2l0MVRlc3RzKFJ1bldlYktp
dFRlc3RzKToKLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3VzZS1kdW1wLXJlbmRlci10cmVlJywgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIFJ1bldlYktpdFRl
c3RzLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgQXJjaGl2ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVs
bENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRp
ZXMoJy0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcycpLCBXaXRoUHJvcGVydGllcygnLS0lKGNv
bmZpZ3VyYXRpb24pcycpLCAnYXJjaGl2ZSddCi0gICAgbmFtZSA9ICdhcmNoaXZlLWJ1aWx0LXBy
b2R1Y3QnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2FyY2hpdmluZyBidWlsdCBwcm9kdWN0J10KLSAg
ICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0FyY2hpdmVkIGJ1aWx0IHByb2R1Y3QnXQotICAgIGhhbHRP
bkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAg
ICAgICBzdXBlcihBcmNoaXZlQnVpbHRQcm9kdWN0LCBzZWxmKS5fX2luaXRfXyhsb2dFbnZpcm9u
PUZhbHNlLCAqKmt3YXJncykKLQotCi1jbGFzcyBVcGxvYWRCdWlsdFByb2R1Y3QodHJhbnNmZXIu
RmlsZVVwbG9hZCk6Ci0gICAgbmFtZSA9ICd1cGxvYWQtYnVpbHQtcHJvZHVjdCcKLSAgICB3b3Jr
ZXJzcmMgPSBXaXRoUHJvcGVydGllcygnV2ViS2l0QnVpbGQvJShjb25maWd1cmF0aW9uKXMuemlw
JykKLSAgICBtYXN0ZXJkZXN0ID0gV2l0aFByb3BlcnRpZXMoJ3B1YmxpY19odG1sL2FyY2hpdmVz
LyUoZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy8lKHBh
dGNoX2lkKXMuemlwJykKLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwbG9hZGVkIGJ1aWx0IHBy
b2R1Y3QnXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ3dvcmtlcnNyYyddID0gc2VsZi53b3JrZXJz
cmMKLSAgICAgICAga3dhcmdzWydtYXN0ZXJkZXN0J10gPSBzZWxmLm1hc3RlcmRlc3QKLSAgICAg
ICAga3dhcmdzWydtb2RlJ10gPSAwbzA2NDQKLSAgICAgICAga3dhcmdzWydibG9ja3NpemUnXSA9
IDEwMjQgKiAyNTYKLSAgICAgICAgdHJhbnNmZXIuRmlsZVVwbG9hZC5fX2luaXRfXyhzZWxmLCAq
Kmt3YXJncykKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMgIT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdG
YWlsZWQgdG8gdXBsb2FkIGJ1aWx0IHByb2R1Y3QnfQotICAgICAgICByZXR1cm4gc3VwZXIoVXBs
b2FkQnVpbHRQcm9kdWN0LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotCi1jbGFzcyBUcmFu
c2ZlclRvUzMobWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICd0cmFuc2Zl
ci10by1zMycKLSAgICBkZXNjcmlwdGlvbiA9IFsndHJhbnNmZXJyaW5nIHRvIHMzJ10KLSAgICBk
ZXNjcmlwdGlvbkRvbmUgPSBbJ1RyYW5zZmVycmVkIGFyY2hpdmUgdG8gUzMnXQotICAgIGFyY2hp
dmUgPSBXaXRoUHJvcGVydGllcygncHVibGljX2h0bWwvYXJjaGl2ZXMvJShmdWxsUGxhdGZvcm0p
cy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzLyUocGF0Y2hfaWQpcy56aXAnKQot
ICAgIGlkZW50aWZpZXIgPSBXaXRoUHJvcGVydGllcygnJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hp
dGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzJykKLSAgICBwYXRjaF9pZCA9IFdpdGhQcm9wZXJ0
aWVzKCclKHBhdGNoX2lkKXMnKQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9TaGFyZWQv
dHJhbnNmZXItYXJjaGl2ZS10by1zMycsICctLXBhdGNoX2lkJywgcGF0Y2hfaWQsICctLWlkZW50
aWZpZXInLCBpZGVudGlmaWVyLCAnLS1hcmNoaXZlJywgYXJjaGl2ZV0KLSAgICBoYWx0T25GYWls
dXJlID0gVHJ1ZQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydjb21tYW5kJ10gPSBzZWxmLmNvbW1h
bmQKLSAgICAgICAgbWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBsb2dF
bnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
c2VsZi5sb2dfb2JzZXJ2ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3Rk
ZXJyPVRydWUpCi0gICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2df
b2JzZXJ2ZXIpCi0gICAgICAgIHJldHVybiBzdXBlcihUcmFuc2ZlclRvUzMsIHNlbGYpLnN0YXJ0
KCkKLQotICAgIGRlZiBmaW5pc2hlZChzZWxmLCByZXN1bHRzKToKLSAgICAgICAgbG9nX3RleHQg
PSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0
ZGVycigpCi0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHInUzMgVVJMOiAoP1A8dXJsPlteXHNd
KyknLCBsb2dfdGV4dCkKLSAgICAgICAgIyBTYW1wbGUgbG9nOiBTMyBVUkw6IGh0dHBzOi8vczMt
dXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVs
YXRvci0xMi14ODZfNjQtcmVsZWFzZS8xMjM0NTYuemlwCi0gICAgICAgIGlmIG1hdGNoOgotICAg
ICAgICAgICAgc2VsZi5hZGRVUkwoJ3VwbG9hZGVkIGFyY2hpdmUnLCBtYXRjaC5ncm91cCgndXJs
JykpCi0KLSAgICAgICAgaWYgcmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgdHJpZ2dl
cnMgPSBzZWxmLmdldFByb3BlcnR5KCd0cmlnZ2VycycsIE5vbmUpCi0gICAgICAgICAgICBpZiB0
cmlnZ2VyczoKLSAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50
U3RlcChbVHJpZ2dlcihzY2hlZHVsZXJOYW1lcz10cmlnZ2VycyldKQotCi0gICAgICAgIHJldHVy
biBzdXBlcihUcmFuc2ZlclRvUzMsIHNlbGYpLmZpbmlzaGVkKHJlc3VsdHMpCi0KLSAgICBkZWYg
aGlkZVN0ZXBJZihzZWxmLCByZXN1bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMg
PT0gU1VDQ0VTUyBhbmQgc2VsZi5nZXRQcm9wZXJ0eSgnc2Vuc2l0aXZlJywgRmFsc2UpCi0KLSAg
ICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9
IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIHRyYW5z
ZmVyIGFyY2hpdmUgdG8gUzMnfQotICAgICAgICByZXR1cm4gc3VwZXIoVHJhbnNmZXJUb1MzLCBz
ZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotCi1jbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdChz
aGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywKLSAgICAgICAgV2l0aFByb3Bl
cnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwKLSAgICAgICAgV2l0aFByb3BlcnRpZXMoUzNV
UkwgKyAnZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVj
dHVyZSlzLSUoY29uZmlndXJhdGlvbilzLyUocGF0Y2hfaWQpcy56aXAnKV0KLSAgICBuYW1lID0g
J2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2Rvd25sb2FkaW5n
IGJ1aWx0IHByb2R1Y3QnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnRG93bmxvYWRlZCBidWls
dCBwcm9kdWN0J10KLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgZ2V0UmVz
dWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0g
ICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0IHBy
b2R1Y3QgZnJvbSBTMyd9Ci0gICAgICAgIHJldHVybiBzdXBlcihEb3dubG9hZEJ1aWx0UHJvZHVj
dCwgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKipr
d2FyZ3MpOgotICAgICAgICBzdXBlcihEb3dubG9hZEJ1aWx0UHJvZHVjdCwgc2VsZikuX19pbml0
X18obG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5k
KHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29t
bWFuZChzZWxmLCBjbWQpCi0gICAgICAgIGlmIHJjID09IEZBSUxVUkU6Ci0gICAgICAgICAgICBz
ZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbRG93bmxvYWRCdWlsdFByb2R1Y3RG
cm9tTWFzdGVyKCldKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBEb3dubG9hZEJ1aWx0
UHJvZHVjdEZyb21NYXN0ZXIoRG93bmxvYWRCdWlsdFByb2R1Y3QpOgotICAgIGNvbW1hbmQgPSBb
J3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0
JywKLSAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwKLSAgICAg
ICAgV2l0aFByb3BlcnRpZXMoRVdTX0JVSUxEX1VSTCArICdhcmNoaXZlcy8lKGZ1bGxQbGF0Zm9y
bSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShwYXRjaF9pZClzLnppcCcp
XQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0K
LSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRz
ICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGRv
d25sb2FkIGJ1aWx0IHByb2R1Y3QgZnJvbSBidWlsZCBtYXN0ZXInfQotICAgICAgICByZXR1cm4g
c2hlbGwuU2hlbGxDb21tYW5kLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotICAgIGRlZiBldmFs
dWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFu
ZC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotCi0KLWNsYXNzIEV4dHJhY3RCdWlsdFByb2R1
Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlJywKLSAgICAgICAgICAgICAg
IFdpdGhQcm9wZXJ0aWVzKCctLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMnKSwgV2l0aFByb3Bl
cnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwgJ2V4dHJhY3QnXQotICAgIG5hbWUgPSAnZXh0
cmFjdC1idWlsdC1wcm9kdWN0JwotICAgIGRlc2NyaXB0aW9uID0gWydleHRyYWN0aW5nIGJ1aWx0
IHByb2R1Y3QnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnRXh0cmFjdGVkIGJ1aWx0IHByb2R1
Y3QnXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVl
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihFeHRy
YWN0QnVpbHRQcm9kdWN0LCBzZWxmKS5fX2luaXRfXyhsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJn
cykKLQotCi1jbGFzcyBSdW5BUElUZXN0cyhUZXN0V2l0aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFt
ZSA9ICdydW4tYXBpLXRlc3RzJwotICAgIGRlc2NyaXB0aW9uID0gWydhcGkgdGVzdHMgcnVubmlu
ZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydhcGktdGVzdHMnXQotICAgIGpzb25GaWxlTmFt
ZSA9ICdhcGlfdGVzdF9yZXN1bHRzLmpzb24nCi0gICAgbG9nZmlsZXMgPSB7J2pzb24nOiBqc29u
RmlsZU5hbWV9Ci0gICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFw
aS10ZXN0cycsICctLW5vLWJ1aWxkJywKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCct
LSUoY29uZmlndXJhdGlvbilzJyksICctLXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChqc29uRmlsZU5hbWUpXQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gJyVkIGFw
aSB0ZXN0JXMgZmFpbGVkIG9yIHRpbWVkIG91dCcKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
Kmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFJ1bkFQSVRlc3RzLCBzZWxmKS5fX2luaXRfXyhsb2dF
bnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
cGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAgICAgIGlmIHBsYXRm
b3JtID09ICdndGsnOgotICAgICAgICAgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1Nj
cmlwdHMvcnVuLWd0ay10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICctLXswfScuZm9y
bWF0KHNlbGYuZ2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nKSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0KLSAg
ICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChjb21tYW5kKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBwbGF0Zm9ybSwgc2VsZi5nZXRQcm9w
ZXJ0eSgnZnVsbFBsYXRmb3JtJykpCi0gICAgICAgIHJldHVybiBUZXN0V2l0aEZhaWx1cmVDb3Vu
dC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAg
ICAgbG9nX3RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29i
c2VydmVyLmdldFN0ZGVycigpCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocidSYW4gKD9Q
PHJhbj5cZCspIHRlc3RzIG9mICg/UDx0b3RhbD5cZCspIHdpdGggKD9QPHBhc3NlZD5cZCspIHN1
Y2Nlc3NmdWwnLCBsb2dfdGV4dCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAg
cmV0dXJuIDAKLSAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgncmFuJykpIC0gaW50KG1h
dGNoLmdyb3VwKCdwYXNzZWQnKSkKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21k
KToKLSAgICAgICAgcmMgPSBzdXBlcihSdW5BUElUZXN0cywgc2VsZikuZXZhbHVhdGVDb21tYW5k
KGNtZCkKLSAgICAgICAgaWYgcmMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAn
UGFzc2VkIEFQSSB0ZXN0cycKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVz
c2FnZQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAg
ICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtW
YWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxP
bGRQcm9jZXNzZXMoKSwgUmVSdW5BUElUZXN0cygpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQot
Y2xhc3MgUmVSdW5BUElUZXN0cyhSdW5BUElUZXN0cyk6Ci0gICAgbmFtZSA9ICdyZS1ydW4tYXBp
LXRlc3RzJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBy
YyA9IFRlc3RXaXRoRmFpbHVyZUNvdW50LmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAg
ICAgIGlmIHJjID09IFNVQ0NFU1M6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1Bhc3NlZCBBUEkg
dGVzdHMnCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAg
ICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNlbGYuYnVp
bGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAg
ICAgICAgIHN0ZXBzX3RvX2FkZCA9IFtVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCksIFZhbGlkYXRl
UGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKV0KLSAgICAgICAgICAg
IHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICAgICAgaWYg
cGxhdGZvcm0gPT0gJ3dwZSc6Ci0gICAgICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVuZChJ
bnN0YWxsV3BlRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdn
dGsnOgotICAgICAgICAgICAgICAgIHN0ZXBzX3RvX2FkZC5hcHBlbmQoSW5zdGFsbEd0a0RlcGVu
ZGVuY2llcygpKQotICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVuZChDb21waWxlV2ViS2l0
V2l0aG91dFBhdGNoKCkpCi0gICAgICAgICAgICBzdGVwc190b19hZGQuYXBwZW5kKFZhbGlkYXRl
UGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSkKLSAgICAgICAgICAg
IHN0ZXBzX3RvX2FkZC5hcHBlbmQoS2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICAgICAgc3Rl
cHNfdG9fYWRkLmFwcGVuZChSdW5BUElUZXN0c1dpdGhvdXRQYXRjaCgpKQotICAgICAgICAgICAg
c3RlcHNfdG9fYWRkLmFwcGVuZChBbmFseXplQVBJVGVzdHNSZXN1bHRzKCkpCi0gICAgICAgICAg
ICAjIFVzaW5nIGEgc2luZ2xlIGFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcCBiZWNhdXNlIG9mIGh0
dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9idWlsZGJvdC9pc3N1ZXMvNDg3NAotICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoc3RlcHNfdG9fYWRkKQotCi0g
ICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFJ1bkFQSVRlc3RzV2l0aG91dFBhdGNoKFJ1bkFQ
SVRlc3RzKToKLSAgICBuYW1lID0gJ3J1bi1hcGktdGVzdHMtd2l0aG91dC1wYXRjaCcKLQotICAg
IGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIFRlc3RXaXRo
RmFpbHVyZUNvdW50LmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgQW5hbHl6
ZUFQSVRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ2FuYWx5
emUtYXBpLXRlc3RzLXJlc3VsdHMnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2FuYWx5emUtYXBpLXRl
c3QtcmVzdWx0cyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydhbmFseXplLWFwaS10ZXN0cy1y
ZXN1bHRzJ10KLSAgICBOVU1fRkFJTFVSRVNfVE9fRElTUExBWSA9IDEwCi0KLSAgICBkZWYgc3Rh
cnQoc2VsZik6Ci0gICAgICAgIHNlbGYucmVzdWx0cyA9IHt9Ci0gICAgICAgIGQgPSBzZWxmLmdl
dFRlc3RzUmVzdWx0cyhSdW5BUElUZXN0cy5uYW1lKQotICAgICAgICBkLmFkZENhbGxiYWNrKGxh
bWJkYSByZXM6IHNlbGYuZ2V0VGVzdHNSZXN1bHRzKFJlUnVuQVBJVGVzdHMubmFtZSkpCi0gICAg
ICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczogc2VsZi5nZXRUZXN0c1Jlc3VsdHMoUnVuQVBJ
VGVzdHNXaXRob3V0UGF0Y2gubmFtZSkpCi0gICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJl
czogc2VsZi5hbmFseXplUmVzdWx0cygpKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChO
b25lKQotCi0gICAgZGVmIGFuYWx5emVSZXN1bHRzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2Vs
Zi5yZXN1bHRzIG9yIGxlbihzZWxmLnJlc3VsdHMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLl9h
ZGRUb0xvZygnc3RkZXJyJywgJ1VuYWJsZSB0byBwYXJzZSBBUEkgdGVzdCByZXN1bHRzOiB7fScu
Zm9ybWF0KHNlbGYucmVzdWx0cykpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFJFVFJZKQot
ICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFsnVW5hYmxlIHRvIHBhcnNlIEFQ
SSB0ZXN0IHJlc3VsdHMnXSwgUkVUUlkpCi0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgICAg
ICBmaXJzdF9ydW5fcmVzdWx0cyA9IHNlbGYucmVzdWx0cy5nZXQoUnVuQVBJVGVzdHMubmFtZSkK
LSAgICAgICAgc2Vjb25kX3J1bl9yZXN1bHRzID0gc2VsZi5yZXN1bHRzLmdldChSZVJ1bkFQSVRl
c3RzLm5hbWUpCi0gICAgICAgIGNsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYucmVzdWx0cy5nZXQo
UnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gubmFtZSkKLQotICAgICAgICBpZiBub3QgKGZpcnN0X3J1
bl9yZXN1bHRzIGFuZCBzZWNvbmRfcnVuX3Jlc3VsdHMpOgotICAgICAgICAgICAgc2VsZi5maW5p
c2hlZChSRVRSWSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbJ1VuYWJs
ZSB0byBwYXJzZSBBUEkgdGVzdCByZXN1bHRzJ10sIFJFVFJZKQotICAgICAgICAgICAgcmV0dXJu
IC0xCi0KLSAgICAgICAgZGVmIGdldEFQSVRlc3RGYWlsdXJlcyhyZXN1bHQpOgotICAgICAgICAg
ICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2V0KFtdKQotICAgICAg
ICAgICAgIyBUT0RPOiBBbmFseXplIFRpbWUtb3V0LCBDcmFzaCBhbmQgRmFpbHVyZSBpbmRlcGVu
ZGVudGx5Ci0gICAgICAgICAgICByZXR1cm4gc2V0KFtmYWlsdXJlLmdldCgnbmFtZScpIGZvciBm
YWlsdXJlIGluIHJlc3VsdC5nZXQoJ1RpbWVkb3V0JywgW10pXSArCi0gICAgICAgICAgICAgICAg
W2ZhaWx1cmUuZ2V0KCduYW1lJykgZm9yIGZhaWx1cmUgaW4gcmVzdWx0LmdldCgnQ3Jhc2hlZCcs
IFtdKV0gKwotICAgICAgICAgICAgICAgIFtmYWlsdXJlLmdldCgnbmFtZScpIGZvciBmYWlsdXJl
IGluIHJlc3VsdC5nZXQoJ0ZhaWxlZCcsIFtdKV0pCi0KLSAgICAgICAgZmlyc3RfcnVuX2ZhaWx1
cmVzID0gZ2V0QVBJVGVzdEZhaWx1cmVzKGZpcnN0X3J1bl9yZXN1bHRzKQotICAgICAgICBzZWNv
bmRfcnVuX2ZhaWx1cmVzID0gZ2V0QVBJVGVzdEZhaWx1cmVzKHNlY29uZF9ydW5fcmVzdWx0cykK
LSAgICAgICAgY2xlYW5fdHJlZV9mYWlsdXJlcyA9IGdldEFQSVRlc3RGYWlsdXJlcyhjbGVhbl90
cmVlX3Jlc3VsdHMpCi0gICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXNfdG9fZGlzcGxheSA9IGxp
c3QoY2xlYW5fdHJlZV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCi0g
ICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGNsZWFuX3RyZWVf
ZmFpbHVyZXNfdG9fZGlzcGxheSkKLQotICAgICAgICBmYWlsdXJlc193aXRoX3BhdGNoID0gZmly
c3RfcnVuX2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2ZhaWx1cmVzKQotICAgICAg
ICBmbGFreV9mYWlsdXJlcyA9IGZpcnN0X3J1bl9mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX2Zh
aWx1cmVzKSAtIGZpcnN0X3J1bl9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9mYWls
dXJlcykKLSAgICAgICAgZmxha3lfZmFpbHVyZXMgPSBsaXN0KGZsYWt5X2ZhaWx1cmVzKVs6c2Vs
Zi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0KLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5n
ID0gJywgJy5qb2luKGZsYWt5X2ZhaWx1cmVzKQotICAgICAgICBuZXdfZmFpbHVyZXMgPSBmYWls
dXJlc193aXRoX3BhdGNoIC0gY2xlYW5fdHJlZV9mYWlsdXJlcwotICAgICAgICBuZXdfZmFpbHVy
ZXNfdG9fZGlzcGxheSA9IGxpc3QobmV3X2ZhaWx1cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9f
RElTUExBWV0KLSAgICAgICAgbmV3X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihuZXdfZmFp
bHVyZXNfdG9fZGlzcGxheSkKLQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xu
RmFpbHVyZXMgaW4gQVBJIFRlc3QgZmlyc3QgcnVuOiB7fScuZm9ybWF0KGxpc3QoZmlyc3RfcnVu
X2ZhaWx1cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxm
Ll9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gQVBJIFRlc3Qgc2Vjb25kIHJ1bjog
e30nLmZvcm1hdChsaXN0KHNlY29uZF9ydW5fZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19U
T19ESVNQTEFZXSkpCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GbGFreSBU
ZXN0czoge30nLmZvcm1hdChmbGFreV9mYWlsdXJlc19zdHJpbmcpKQotICAgICAgICBzZWxmLl9h
ZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gQVBJIFRlc3Qgb24gY2xlYW4gdHJlZTog
e30nLmZvcm1hdChjbGVhbl90cmVlX2ZhaWx1cmVzX3N0cmluZykpCi0KLSAgICAgICAgaWYgbmV3
X2ZhaWx1cmVzOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbk5ldyBm
YWlsdXJlczoge31cbicuZm9ybWF0KG5ld19mYWlsdXJlc19zdHJpbmcpKQotICAgICAgICAgICAg
c2VsZi5maW5pc2hlZChGQUlMVVJFKQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0g
RkFJTFVSRQotICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfZmFpbHVy
ZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHt9IG5ldyBBUEkg
dGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZp
eCwgbmV3X2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgIGlmIGxlbihuZXdfZmFpbHVyZXMp
ID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICcgLi4uJwotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCi0g
ICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBGQUlMVVJFKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbk5v
IG5ldyBmYWlsdXJlc1xuJykKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoU1VDQ0VTUykKLSAg
ICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNlbGYu
ZGVzY3JpcHRpb25Eb25lID0gJ1Bhc3NlZCBBUEkgdGVzdHMnCi0gICAgICAgICAgICBwbHVyYWxT
dWZmaXggPSAncycgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAg
ICAgICAgICBtZXNzYWdlID0gJycKLSAgICAgICAgICAgIGlmIGNsZWFuX3RyZWVfZmFpbHVyZXM6
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICdGb3VuZCB7fSBwcmUtZXhpc3RpbmcgQVBJIHRl
c3QgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxlbihjbGVhbl90cmVlX2ZhaWx1cmVzKSwgcGx1cmFs
U3VmZml4LCBjbGVhbl90cmVlX2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgICAgICBmb3Ig
Y2xlYW5fdHJlZV9mYWlsdXJlIGluIGNsZWFuX3RyZWVfZmFpbHVyZXNfdG9fZGlzcGxheToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVy
ZShjbGVhbl90cmVlX2ZhaWx1cmUpCi0gICAgICAgICAgICBpZiBsZW4oY2xlYW5fdHJlZV9mYWls
dXJlcykgPiBzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZOgotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgICAgICBpZiBmbGFreV9mYWlsdXJlczoKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlICs9ICcgRm91bmQgZmxha3kgdGVzdHM6IHt9Jy5mb3JtYXQoZmxha3lf
ZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGZs
YWt5X2ZhaWx1cmVzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2Zs
YWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRG
aW5pc2hlZChbbWVzc2FnZV0sIFNVQ0NFU1MpCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tz
Ci0gICAgZGVmIF9hZGRUb0xvZyhzZWxmLCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgbG9nID0gc2VsZi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0
IEtleUVycm9yOgotICAgICAgICAgICAgbG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkK
LSAgICAgICAgbG9nLmFkZFN0ZG91dChtZXNzYWdlKQotCi0gICAgZGVmIGdldEJ1aWxkU3RlcEJ5
TmFtZShzZWxmLCBuYW1lKToKLSAgICAgICAgZm9yIHN0ZXAgaW4gc2VsZi5idWlsZC5leGVjdXRl
ZFN0ZXBzOgotICAgICAgICAgICAgaWYgc3RlcC5uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHN0ZXAKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIEBkZWZlci5pbmxpbmVD
YWxsYmFja3MKLSAgICBkZWYgZ2V0VGVzdHNSZXN1bHRzKHNlbGYsIG5hbWUpOgotICAgICAgICBz
dGVwID0gc2VsZi5nZXRCdWlsZFN0ZXBCeU5hbWUobmFtZSkKLSAgICAgICAgaWYgbm90IHN0ZXA6
Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ0VSUk9SOiBzdGVwIG5vdCBm
b3VuZDoge30nLmZvcm1hdChzdGVwKSkKLSAgICAgICAgICAgIGRlZmVyLnJldHVyblZhbHVlKE5v
bmUpCi0KLSAgICAgICAgbG9ncyA9IHlpZWxkIHNlbGYubWFzdGVyLmRiLmxvZ3MuZ2V0TG9ncyhz
dGVwLnN0ZXBpZCkKLSAgICAgICAgbG9nID0gbmV4dCgobG9nIGZvciBsb2cgaW4gbG9ncyBpZiBs
b2dbJ25hbWUnXSA9PSB1J2pzb24nKSwgTm9uZSkKLSAgICAgICAgaWYgbm90IGxvZzoKLSAgICAg
ICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnRVJST1I6IGxvZyBmb3Igc3RlcCBub3Qg
Zm91bmQ6IHt9Jy5mb3JtYXQoc3RlcCkpCi0gICAgICAgICAgICBkZWZlci5yZXR1cm5WYWx1ZShO
b25lKQotCi0gICAgICAgIGxhc3RsaW5lID0gaW50KG1heCgwLCBsb2dbJ251bV9saW5lcyddIC0g
MSkpCi0gICAgICAgIGxvZ0xpbmVzID0geWllbGQgc2VsZi5tYXN0ZXIuZGIubG9ncy5nZXRMb2dM
aW5lcyhsb2dbJ2lkJ10sIDAsIGxhc3RsaW5lKQotICAgICAgICBpZiBsb2dbJ3R5cGUnXSA9PSAn
cyc6Ci0gICAgICAgICAgICBsb2dMaW5lcyA9ICcnLmpvaW4oW2xpbmVbMTpdIGZvciBsaW5lIGlu
IGxvZ0xpbmVzLnNwbGl0bGluZXMoKV0pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2Vs
Zi5yZXN1bHRzW25hbWVdID0ganNvbi5sb2Fkcyhsb2dMaW5lcykKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBleDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnRVJS
T1I6IHVuYWJsZSB0byBwYXJzZSBkYXRhLCBleGNlcHRpb246IHt9Jy5mb3JtYXQoZXgpKQotCi0g
ICAgZGVmIHNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgn
YnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWls
ZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkws
IHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBo
aXN0b3J5X3VybCA9ICd7fT9zdWl0ZT1hcGktdGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNf
REJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J0ZsYWt5
IHRlc3Q6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdG
bGFreSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxu
XG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUs
IHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90
X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5
LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgot
ICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1
cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5n
X2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnVp
bGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAg
ICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAg
ICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChz
ZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2Vs
Zi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7fT9zdWl0ZT1hcGkt
dGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAg
ICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J1ByZS1leGlzdGluZyB0ZXN0IGZhaWx1cmU6IHt9Jy5m
b3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdUZXN0IHt9IGZhaWxl
ZCBvbiBjbGVhbiB0cmVlIHJ1biBpbiB7fS5cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxu
XG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUs
IHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90
X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4
aXN0aW5nLXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh
cyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIHByZS1l
eGlzdGluZyBmYWlsdXJlOiB7fScuZm9ybWF0KGUpKQotCi1jbGFzcyBBcmNoaXZlVGVzdFJlc3Vs
dHMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1bHQtYXJjaGl2ZScsCi0gICAgICAgICAgICAgICBJ
bnRlcnBvbGF0ZSgnLS1wbGF0Zm9ybT0lKHByb3A6cGxhdGZvcm0pcycpLCBJbnRlcnBvbGF0ZSgn
LS0lKHByb3A6Y29uZmlndXJhdGlvbilzJyksICdhcmNoaXZlJ10KLSAgICBuYW1lID0gJ2FyY2hp
dmUtdGVzdC1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0gWydhcmNoaXZpbmcgdGVzdCByZXN1
bHRzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0FyY2hpdmVkIHRlc3QgcmVzdWx0cyddCi0g
ICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHN1cGVyKEFyY2hpdmVUZXN0UmVzdWx0cywgc2VsZikuX19pbml0X18obG9n
RW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgVXBsb2FkVGVzdFJlc3VsdHModHJh
bnNmZXIuRmlsZVVwbG9hZCk6Ci0gICAgbmFtZSA9ICd1cGxvYWQtdGVzdC1yZXN1bHRzJwotICAg
IGRlc2NyaXB0aW9uRG9uZSA9IFsnVXBsb2FkZWQgdGVzdCByZXN1bHRzJ10KLSAgICB3b3JrZXJz
cmMgPSAnbGF5b3V0LXRlc3QtcmVzdWx0cy56aXAnCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyPScnLCAqKmt3YXJncyk6Ci0gICAg
ICAgIGlmIGlkZW50aWZpZXIgYW5kIG5vdCBpZGVudGlmaWVyLnN0YXJ0c3dpdGgoJy0nKToKLSAg
ICAgICAgICAgIGlkZW50aWZpZXIgPSAnLXt9Jy5mb3JtYXQoaWRlbnRpZmllcikKLSAgICAgICAg
a3dhcmdzWyd3b3JrZXJzcmMnXSA9IHNlbGYud29ya2Vyc3JjCi0gICAgICAgIGt3YXJnc1snbWFz
dGVyZGVzdCddID0gSW50ZXJwb2xhdGUoJ3B1YmxpY19odG1sL3Jlc3VsdHMvJShwcm9wOmJ1aWxk
ZXJuYW1lKXMvciUocHJvcDpwYXRjaF9pZClzLSUocHJvcDpidWlsZG51bWJlcilze30uemlwJy5m
b3JtYXQoaWRlbnRpZmllcikpCi0gICAgICAgIGt3YXJnc1snbW9kZSddID0gMG8wNjQ0Ci0gICAg
ICAgIGt3YXJnc1snYmxvY2tzaXplJ10gPSAxMDI0ICogMjU2Ci0gICAgICAgIHRyYW5zZmVyLkZp
bGVVcGxvYWQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCi0KLQotY2xhc3MgRXh0cmFjdFRlc3RS
ZXN1bHRzKG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnZXh0cmFjdC10
ZXN0LXJlc3VsdHMnCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydFeHRyYWN0ZWQgdGVzdCByZXN1
bHRzJ10KLSAgICByZW5kZXJhYmxlcyA9IFsncmVzdWx0RGlyZWN0b3J5JywgJ3ppcEZpbGUnXQot
ICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZGVudGlmaWVyPScnKToKLSAgICAgICAgaWYgaWRlbnRp
ZmllciBhbmQgbm90IGlkZW50aWZpZXIuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgaWRl
bnRpZmllciA9ICcte30nLmZvcm1hdChpZGVudGlmaWVyKQotCi0gICAgICAgIHNlbGYuemlwRmls
ZSA9IEludGVycG9sYXRlKCdwdWJsaWNfaHRtbC9yZXN1bHRzLyUocHJvcDpidWlsZGVybmFtZSlz
L3IlKHByb3A6cGF0Y2hfaWQpcy0lKHByb3A6YnVpbGRudW1iZXIpc3t9LnppcCcuZm9ybWF0KGlk
ZW50aWZpZXIpKQotICAgICAgICBzZWxmLnJlc3VsdERpcmVjdG9yeSA9IEludGVycG9sYXRlKCdw
dWJsaWNfaHRtbC9yZXN1bHRzLyUocHJvcDpidWlsZGVybmFtZSlzL3IlKHByb3A6cGF0Y2hfaWQp
cy0lKHByb3A6YnVpbGRudW1iZXIpc3t9Jy5mb3JtYXQoaWRlbnRpZmllcikpCi0gICAgICAgIHNl
bGYuY29tbWFuZCA9IFsndW56aXAnLCAnLXEnLCAnLW8nLCBzZWxmLnppcEZpbGUsICctZCcsIHNl
bGYucmVzdWx0RGlyZWN0b3J5XQotCi0gICAgICAgIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQu
X19pbml0X18oc2VsZiwgY29tbWFuZD1zZWxmLmNvbW1hbmQsIGxvZ0Vudmlyb249RmFsc2UpCi0K
LSAgICBkZWYgcmVzdWx0RGlyZWN0b3J5VVJMKHNlbGYpOgotICAgICAgICBwYXRoID0gc2VsZi5y
ZXN1bHREaXJlY3RvcnkucmVwbGFjZSgncHVibGljX2h0bWwvcmVzdWx0cy8nLCAnJykgKyAnLycK
LSAgICAgICAgcmV0dXJuICd7fXt9Jy5mb3JtYXQoUzNfUkVTVUxUU19VUkwsIHBhdGgpCi0KLSAg
ICBkZWYgcmVzdWx0c0Rvd25sb2FkVVJMKHNlbGYpOgotICAgICAgICBwYXRoID0gc2VsZi56aXBG
aWxlLnJlcGxhY2UoJ3B1YmxpY19odG1sL3Jlc3VsdHMvJywgJycpCi0gICAgICAgIHJldHVybiAn
e317fScuZm9ybWF0KFMzX1JFU1VMVFNfVVJMLCBwYXRoKQotCi0gICAgZGVmIGdldExhc3RCdWls
ZFN0ZXBCeU5hbWUoc2VsZiwgbmFtZSk6Ci0gICAgICAgIGZvciBzdGVwIGluIHJldmVyc2VkKHNl
bGYuYnVpbGQuZXhlY3V0ZWRTdGVwcyk6Ci0gICAgICAgICAgICBpZiBuYW1lIGluIHN0ZXAubmFt
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RlcAotICAgICAgICByZXR1cm4gTm9uZQotCi0g
ICAgZGVmIGFkZEN1c3RvbVVSTHMoc2VsZik6Ci0gICAgICAgIHN0ZXAgPSBzZWxmLmdldExhc3RC
dWlsZFN0ZXBCeU5hbWUoUnVuV2ViS2l0VGVzdHMubmFtZSkKLSAgICAgICAgaWYgbm90IHN0ZXA6
Ci0gICAgICAgICAgICBzdGVwID0gc2VsZgotICAgICAgICBzdGVwLmFkZFVSTCgndmlldyBsYXlv
dXQgdGVzdCByZXN1bHRzJywgc2VsZi5yZXN1bHREaXJlY3RvcnlVUkwoKSArICdyZXN1bHRzLmh0
bWwnKQotICAgICAgICBzdGVwLmFkZFVSTCgnZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cycs
IHNlbGYucmVzdWx0c0Rvd25sb2FkVVJMKCkpCi0KLSAgICBkZWYgZmluaXNoZWQoc2VsZiwgcmVz
dWx0KToKLSAgICAgICAgc2VsZi5hZGRDdXN0b21VUkxzKCkKLSAgICAgICAgcmV0dXJuIG1hc3Rl
ci5NYXN0ZXJTaGVsbENvbW1hbmQuZmluaXNoZWQoc2VsZiwgcmVzdWx0KQotCi0KLWNsYXNzIFBy
aW50Q29uZmlndXJhdGlvbihzdGVwcy5TaGVsbFNlcXVlbmNlKToKLSAgICBuYW1lID0gJ2NvbmZp
Z3VyYXRpb24nCi0gICAgZGVzY3JpcHRpb24gPSBbJ2NvbmZpZ3VyYXRpb24nXQotICAgIGhhbHRP
bkZhaWx1cmUgPSBGYWxzZQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLSAgICB3YXJuT25G
YWlsdXJlID0gRmFsc2UKLSAgICBsb2dFbnZpcm9uID0gRmFsc2UKLSAgICBjb21tYW5kX2xpc3Rf
Z2VuZXJpYyA9IFtbJ2hvc3RuYW1lJ11dCi0gICAgY29tbWFuZF9saXN0X2FwcGxlID0gW1snZGYn
LCAnLWhsJ10sIFsnZGF0ZSddLCBbJ3N3X3ZlcnMnXSwgWyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAn
LXZlcnNpb24nXSwgWyd1cHRpbWUnXV0KLSAgICBjb21tYW5kX2xpc3RfbGludXggPSBbWydkZics
ICctaGwnXSwgWydkYXRlJ10sIFsndW5hbWUnLCAnLWEnXSwgWyd1cHRpbWUnXV0KLSAgICBjb21t
YW5kX2xpc3Rfd2luID0gW1snZGYnLCAnLWhsJ11dCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
Kiprd2FyZ3MpOgotICAgICAgICBzdXBlcihQcmludENvbmZpZ3VyYXRpb24sIHNlbGYpLl9faW5p
dF9fKHRpbWVvdXQ9NjAsICoqa3dhcmdzKQotICAgICAgICBzZWxmLmNvbW1hbmRzID0gW10KLSAg
ICAgICAgc2VsZi5sb2dfb2JzZXJ2ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3
YW50U3RkZXJyPVRydWUpCi0gICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2Vs
Zi5sb2dfb2JzZXJ2ZXIpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBjb21tYW5kX2xp
c3QgPSBsaXN0KHNlbGYuY29tbWFuZF9saXN0X2dlbmVyaWMpCi0gICAgICAgIHBsYXRmb3JtID0g
c2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnKicpCi0gICAgICAgIGlmIHBsYXRmb3JtICE9
ICdqc2Mtb25seSc6Ci0gICAgICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtLnNwbGl0KCctJylb
MF0KLSAgICAgICAgaWYgcGxhdGZvcm0gaW4gKCdtYWMnLCAnaW9zJywgJ3R2b3MnLCAnd2F0Y2hv
cycsICcqJyk6Ci0gICAgICAgICAgICBjb21tYW5kX2xpc3QuZXh0ZW5kKHNlbGYuY29tbWFuZF9s
aXN0X2FwcGxlKQotICAgICAgICBlbGlmIHBsYXRmb3JtIGluICgnZ3RrJywgJ3dwZScsICdqc2Mt
b25seScpOgotICAgICAgICAgICAgY29tbWFuZF9saXN0LmV4dGVuZChzZWxmLmNvbW1hbmRfbGlz
dF9saW51eCkKLSAgICAgICAgZWxpZiBwbGF0Zm9ybSBpbiAoJ3dpbicpOgotICAgICAgICAgICAg
Y29tbWFuZF9saXN0LmV4dGVuZChzZWxmLmNvbW1hbmRfbGlzdF93aW4pCi0KLSAgICAgICAgZm9y
IGNvbW1hbmQgaW4gY29tbWFuZF9saXN0OgotICAgICAgICAgICAgc2VsZi5jb21tYW5kcy5hcHBl
bmQodXRpbC5TaGVsbEFyZyhjb21tYW5kPWNvbW1hbmQsIGxvZ2ZpbGU9J3N0ZGlvJykpCi0gICAg
ICAgIHJldHVybiBzdXBlcihQcmludENvbmZpZ3VyYXRpb24sIHNlbGYpLnJ1bigpCi0KLSAgICBk
ZWYgY29udmVydF9idWlsZF90b19vc19uYW1lKHNlbGYsIGJ1aWxkKToKLSAgICAgICAgaWYgbm90
IGJ1aWxkOgotICAgICAgICAgICAgcmV0dXJuICdVbmtub3duJwotCi0gICAgICAgIGJ1aWxkX3Rv
X25hbWVfbWFwcGluZyA9IHsKLSAgICAgICAgICAgICcxMS4wJzogJ0JpZyBTdXInLAotICAgICAg
ICAgICAgJzEwLjE1JzogJ0NhdGFsaW5hJywKLSAgICAgICAgICAgICcxMC4xNCc6ICdNb2phdmUn
LAotICAgICAgICAgICAgJzEwLjEzJzogJ0hpZ2ggU2llcnJhJywKLSAgICAgICAgICAgICcxMC4x
Mic6ICdTaWVycmEnLAotICAgICAgICAgICAgJzEwLjExJzogJ0VsIENhcGl0YW4nLAotICAgICAg
ICAgICAgJzEwLjEwJzogJ1lvc2VtaXRlJywKLSAgICAgICAgICAgICcxMC45JzogJ01hdmVyaWNr
JywKLSAgICAgICAgICAgICcxMC44JzogJ01vdW50YWluIExpb24nLAotICAgICAgICAgICAgJzEw
LjcnOiAnTGlvbicsCi0gICAgICAgICAgICAnMTAuNic6ICdTbm93IExlb3BhcmQnLAotICAgICAg
ICAgICAgJzEwLjUnOiAnTGVvcGFyZCcsCi0gICAgICAgIH0KLQotICAgICAgICBmb3Iga2V5LCB2
YWx1ZSBpbiBidWlsZF90b19uYW1lX21hcHBpbmcuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBp
ZiBidWlsZC5zdGFydHN3aXRoKGtleSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0g
ICAgICAgIHJldHVybiAnVW5rbm93bicKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
OgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVy
biB7dSdzdGVwJzogdSdGYWlsZWQgdG8gcHJpbnQgY29uZmlndXJhdGlvbid9Ci0gICAgICAgIGxv
Z1RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVy
LmdldFN0ZGVycigpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24gPSB1J1ByaW50ZWQgY29uZmlndXJh
dGlvbicKLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ1Byb2R1Y3RWZXJzaW9uOlsgXHRdKigu
Kz8pXG4nLCBsb2dUZXh0KQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIG9zX3ZlcnNp
b24gPSBtYXRjaC5ncm91cCgxKS5zdHJpcCgpCi0gICAgICAgICAgICBvc19uYW1lID0gc2VsZi5j
b252ZXJ0X2J1aWxkX3RvX29zX25hbWUob3NfdmVyc2lvbikKLSAgICAgICAgICAgIGNvbmZpZ3Vy
YXRpb24gPSB1J09TOiB7fSAoe30pJy5mb3JtYXQob3NfbmFtZSwgb3NfdmVyc2lvbikKLQotICAg
ICAgICB4Y29kZV9yZSA9IHNka19yZSA9ICdYY29kZVsgXHRdKz8oWzAtOS5dKz8pXG4nCi0gICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKHhjb2RlX3JlLCBsb2dUZXh0KQotICAgICAgICBpZiBtYXRj
aDoKLSAgICAgICAgICAgIHhjb2RlX3ZlcnNpb24gPSBtYXRjaC5ncm91cCgxKS5zdHJpcCgpCi0g
ICAgICAgICAgICBjb25maWd1cmF0aW9uICs9IHUnLCBYY29kZToge30nLmZvcm1hdCh4Y29kZV92
ZXJzaW9uKQotICAgICAgICByZXR1cm4ge3Unc3RlcCc6IGNvbmZpZ3VyYXRpb259Ci0KLQotY2xh
c3MgQXBwbHlXYXRjaExpc3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2FwcGx5
LXdhdGNoLWxpc3QnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2FwcGx5aW5nIHdhdGNoaWxpc3QnXQot
ICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQXBwbGllZCBXYXRjaExpc3QnXQotICAgIGJ1Z19pZCA9
IFdpdGhQcm9wZXJ0aWVzKCclKGJ1Z19pZClzJykKLSAgICBjb21tYW5kID0gWydweXRob24nLCAn
VG9vbHMvU2NyaXB0cy93ZWJraXQtcGF0Y2gnLCAnYXBwbHktd2F0Y2hsaXN0LWxvY2FsJywgYnVn
X2lkXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVl
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzaGVsbC5TaGVs
bENvbW1hbmQuX19pbml0X18oc2VsZiwgdGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2Us
ICoqa3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlm
IHNlbGYucmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1
J0ZhaWxlZCB0byBhcHBseSB3YXRjaGxpc3QnfQotICAgICAgICByZXR1cm4gc3VwZXIoQXBwbHlX
YXRjaExpc3QsIHNlbGYpLmdldFJlc3VsdFN1bW1hcnkoKQotCi0KLWNsYXNzIFNldEJ1aWxkU3Vt
bWFyeShidWlsZHN0ZXAuQnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ3NldC1idWlsZC1zdW1tYXJ5
JwotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnU2V0IGJ1aWxkIHN1bW1hcnknXQotICAgIGFsd2F5
c1J1biA9IFRydWUKLSAgICBoYWx0T25GYWlsdXJlID0gRmFsc2UKLSAgICBmbHVua09uRmFpbHVy
ZSA9IEZhbHNlCi0KLSAgICBkZWYgZG9TdGVwSWYoc2VsZiwgc3RlcCk6Ci0gICAgICAgIHJldHVy
biBzZWxmLmdldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgRmFsc2UpCi0KLSAgICBkZWYgaGlk
ZVN0ZXBJZihzZWxmLCByZXN1bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmRv
U3RlcElmKHN0ZXApCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGJ1aWxkX3N1bW1h
cnkgPSBzZWxmLmdldFByb3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgJ2J1aWxkIHN1Y2Nlc3NmdWwn
KQotICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHNlbGYuYnVpbGQuYnVp
bGRGaW5pc2hlZChbYnVpbGRfc3VtbWFyeV0sIHNlbGYuYnVpbGQucmVzdWx0cykKLSAgICAgICAg
cmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkKLQotCi1jbGFzcyBGaW5kTW9kaWZpZWRDaGFuZ2VM
b2dzKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICdmaW5kLW1vZGlmaWVkLWNoYW5n
ZWxvZ3MnCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydGb3VuZCBtb2RpZmllZCBDaGFuZ2VMb2dz
J10KLSAgICBjb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywg
Jy0tbm8tcmVuYW1lcycsICctLW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRleCddCi0gICAgaGFs
dE9uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgot
ICAgICAgICBzaGVsbC5TaGVsbENvbW1hbmQuX19pbml0X18oc2VsZiwgdGltZW91dD0zICogNjAs
IGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAg
ICAgICBzZWxmLmxvZ19vYnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdh
bnRTdGRlcnI9VHJ1ZSkKLSAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignc3RkaW8nLCBzZWxm
LmxvZ19vYnNlcnZlcikKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5zdGFydChz
ZWxmKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
cmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3Bl
cnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxl
ZCB0byBmaW5kIGFueSBtb2RpZmllZCBDaGFuZ2VMb2cgaW4gUGF0Y2gge30nLmZvcm1hdChwYXRj
aF9pZCl9Ci0gICAgICAgIHJldHVybiBzaGVsbC5TaGVsbENvbW1hbmQuZ2V0UmVzdWx0U3VtbWFy
eShzZWxmKQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBy
YyA9IHNoZWxsLlNoZWxsQ29tbWFuZC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAg
ICBsb2dfdGV4dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2Jz
ZXJ2ZXIuZ2V0U3RkZXJyKCkKLSAgICAgICAgbW9kaWZpZWRfY2hhbmdlbG9ncyA9IHNlbGYuZXh0
cmFjdF9jaGFuZ2Vsb2dzKGxvZ190ZXh0LCBzZWxmLl9zdGF0dXNfcmVnZXhwKCdNQScpKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vsb2dzJywgbW9kaWZpZWRfY2hh
bmdlbG9ncykKLSAgICAgICAgaWYgcmMgPT0gRkFJTFVSRSBvciBub3QgbW9kaWZpZWRfY2hhbmdl
bG9nczoKLSAgICAgICAgICAgIHBhdGNoX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQn
LCAnJykKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnVW5hYmxlIHRvIGZpbmQgYW55IG1vZGlmaWVk
IENoYW5nZUxvZyBpbiBQYXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKQotICAgICAgICAgICAgaWYg
c2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykubG93ZXIoKSA9PSAnY29tbWl0LXF1
ZXVlJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50
X3RleHQnLCBtZXNzYWdlLnJlcGxhY2UoJ1BhdGNoJywgJ0F0dGFjaG1lbnQnKSkKLSAgICAgICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsIG1lc3NhZ2Up
Ci0gICAgICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0Nv
bW1lbnRPbkJ1ZygpLCBTZXRDb21taXRRdWV1ZU1pbnVzRmxhZ09uUGF0Y2goKV0pCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVz
c2FnZV0sIEZBSUxVUkUpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIGlzX3BhdGhfdG9f
Y2hhbmdlbG9nKHNlbGYsIHBhdGgpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShw
YXRoKSA9PSAnQ2hhbmdlTG9nJwotCi0gICAgZGVmIF9zdGF0dXNfcmVnZXhwKHNlbGYsIGV4cGVj
dGVkX3R5cGVzKToKLSAgICAgICAgcmV0dXJuICdeKD9QPHN0YXR1cz5be31dKVx0KD9QPGZpbGVu
YW1lPi4rKSQnLmZvcm1hdChleHBlY3RlZF90eXBlcykKLQotICAgIGRlZiBleHRyYWN0X2NoYW5n
ZWxvZ3Moc2VsZiwgb3V0cHV0LCBzdGF0dXNfcmVnZXhwKToKLSAgICAgICAgZmlsZW5hbWVzID0g
W10KLSAgICAgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKHN0YXR1c19yZWdleHAsIGxpbmUpCi0gICAgICAgICAgICBpZiBu
b3QgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZpbGVuYW1l
ID0gbWF0Y2guZ3JvdXAoJ2ZpbGVuYW1lJykKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfcGF0aF90
b19jaGFuZ2Vsb2coZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQo
ZmlsZW5hbWUpCi0gICAgICAgIHJldHVybiBmaWxlbmFtZXMKLQotCi1jbGFzcyBDcmVhdGVMb2Nh
bEdJVENvbW1pdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnY3JlYXRlLWxvY2Fs
LWdpdC1jb21taXQnCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydDcmVhdGVkIGxvY2FsIGdpdCBj
b21taXQnXQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hlbGwuU2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYs
IHRpbWVvdXQ9NSAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBz
dGFydChzZWxmKToKLSAgICAgICAgc2VsZi5mYWlsdXJlX21lc3NhZ2UgPSBOb25lCi0gICAgICAg
IG1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBzZWxmLmdldFByb3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vs
b2dzJykKLSAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcn
KQotICAgICAgICBpZiBub3QgbW9kaWZpZWRfY2hhbmdlbG9nczoKLSAgICAgICAgICAgIHNlbGYu
ZmFpbHVyZV9tZXNzYWdlID0gdSdObyBtb2RpZmllZCBDaGFuZ2VMb2cgZmlsZSBmb3VuZCBmb3Ig
UGF0Y2gge30nLmZvcm1hdChwYXRjaF9pZCkKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoRkFJ
TFVSRSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgbW9kaWZpZWRfY2hhbmdl
bG9ncyA9ICcgJy5qb2luKG1vZGlmaWVkX2NoYW5nZWxvZ3MpCi0gICAgICAgIHNlbGYuY29tbWFu
ZCA9ICdwZXJsIFRvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IgLS1wcmludC1sb2cge30n
LmZvcm1hdChtb2RpZmllZF9jaGFuZ2Vsb2dzKQotICAgICAgICBzZWxmLmNvbW1hbmQgKz0gJyB8
IGdpdCBjb21taXQgLS1hbGwgLUYgLScKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFu
ZC5zdGFydChzZWxmKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAg
IGlmIHNlbGYuZmFpbHVyZV9tZXNzYWdlOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiBz
ZWxmLmZhaWx1cmVfbWVzc2FnZX0KLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6
Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGNyZWF0ZSBnaXQgY29t
bWl0J30KLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5nZXRSZXN1bHRTdW1tYXJ5
KHNlbGYpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJj
ID0gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAg
IGlmIHJjID09IEZBSUxVUkU6Ci0gICAgICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3BhdGNoX2lkJywgJycpCi0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5mYWlsdXJlX21l
c3NhZ2Ugb3IgJ0ZhaWxlZCB0byBjcmVhdGUgZ2l0IGNvbW1pdCBmb3IgUGF0Y2gge30nLmZvcm1h
dChwYXRjaF9pZCkKLSAgICAgICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1l
JywgJycpLmxvd2VyKCkgPT0gJ2NvbW1pdC1xdWV1ZSc6Ci0gICAgICAgICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JywgbWVzc2FnZS5yZXBsYWNlKCdQYXRj
aCcsICdBdHRhY2htZW50JykpCi0gICAgICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVp
bGRfZmluaXNoX3N1bW1hcnknLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQu
YWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtDb21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVN
aW51c0ZsYWdPblBhdGNoKCldKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBGQUlMVVJFKQotICAgICAgICByZXR1
cm4gcmMKLQotCi1jbGFzcyBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvKHNoZWxsLlNoZWxsQ29tbWFu
ZCk6Ci0gICAgbmFtZSA9ICdwdXNoLWNvbW1pdC10by13ZWJraXQtcmVwbycKLSAgICBkZXNjcmlw
dGlvbkRvbmUgPSBbJ1B1c2hlZCBjb21taXQgdG8gV2ViS2l0IHJlcG9zaXRvcnknXQotICAgIGNv
bW1hbmQgPSBbJ2dpdCcsICdzdm4nLCAnZGNvbW1pdCcsICctLXJtZGlyJ10KLSAgICBjb21taXRf
c3VjY2Vzc19yZWdleHAgPSAnXkNvbW1pdHRlZCByKD9QPHN2bl9yZXZpc2lvbj5cZCspJCcKLSAg
ICBoYWx0T25GYWlsdXJlID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHNoZWxsLlNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCB0aW1lb3V0PTUg
KiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6
Ci0gICAgICAgIHNlbGYubG9nX29ic2VydmVyID0gbG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2
ZXIod2FudFN0ZGVycj1UcnVlKQotICAgICAgICBzZWxmLmFkZExvZ09ic2VydmVyKCdzdGRpbycs
IHNlbGYubG9nX29ic2VydmVyKQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLnN0
YXJ0KHNlbGYpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAg
IHJjID0gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAg
ICAgIGlmIHJjID09IFNVQ0NFU1M6Ci0gICAgICAgICAgICBsb2dfdGV4dCA9IHNlbGYubG9nX29i
c2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJyKCkKLSAgICAg
ICAgICAgIHN2bl9yZXZpc2lvbiA9IHNlbGYuc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQo
bG9nX3RleHQpCi0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50
X3RleHQnLCBzZWxmLmNvbW1lbnRfdGV4dF9mb3JfYnVnKHN2bl9yZXZpc2lvbikpCi0gICAgICAg
ICAgICBjb21taXRfc3VtbWFyeSA9ICdDb21taXR0ZWQgcnt9Jy5mb3JtYXQoc3ZuX3JldmlzaW9u
KQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBjb21taXRfc3VtbWFyeQotICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsICdDb21taXR0ZWQgcnt9
Jy5mb3JtYXQoc3ZuX3JldmlzaW9uKSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNB
ZnRlckN1cnJlbnRTdGVwKFtDb21tZW50T25CdWcoKSwgUmVtb3ZlRmxhZ3NPblBhdGNoKCksIENs
b3NlQnVnKCldKQotICAgICAgICAgICAgc2VsZi5hZGRVUkwoJ3J7fScuZm9ybWF0KHN2bl9yZXZp
c2lvbiksIHNlbGYudXJsX2Zvcl9yZXZpc2lvbihzdm5fcmV2aXNpb24pKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0Jywg
c2VsZi5jb21tZW50X3RleHRfZm9yX2J1ZygpKQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknLCAnRmFpbGVkIHRvIGNvbW1pdCB0byBXZWJLaXQgcmVw
b3NpdG9yeScpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3Rl
cChbQ29tbWVudE9uQnVnKCksIFNldENvbW1pdFF1ZXVlTWludXNGbGFnT25QYXRjaCgpXSkKLSAg
ICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdXJsX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lv
bik6Ci0gICAgICAgIHJldHVybiAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0L3t9
Jy5mb3JtYXQocmV2aXNpb24pCi0KLSAgICBkZWYgY29tbWVudF90ZXh0X2Zvcl9idWcoc2VsZiwg
c3ZuX3JldmlzaW9uPU5vbmUpOgotICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHko
J3BhdGNoX2lkJywgJycpCi0gICAgICAgIGlmIG5vdCBzdm5fcmV2aXNpb246Ci0gICAgICAgICAg
ICByZXR1cm4gJ2NvbW1pdC1xdWV1ZSBmYWlsZWQgdG8gY29tbWl0IGF0dGFjaG1lbnQge30gdG8g
V2ViS2l0IHJlcG9zaXRvcnkuJy5mb3JtYXQocGF0Y2hfaWQpCi0gICAgICAgIGNvbW1lbnQgPSAn
Q29tbWl0dGVkIHJ7fTogPHt9PicuZm9ybWF0KHN2bl9yZXZpc2lvbiwgc2VsZi51cmxfZm9yX3Jl
dmlzaW9uKHN2bl9yZXZpc2lvbikpCi0gICAgICAgIGNvbW1lbnQgKz0gJ1xuXG5BbGwgcmV2aWV3
ZWQgcGF0Y2hlcyBoYXZlIGJlZW4gbGFuZGVkLiBDbG9zaW5nIGJ1ZyBhbmQgY2xlYXJpbmcgZmxh
Z3Mgb24gYXR0YWNobWVudCB7fS4nLmZvcm1hdChwYXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIGNv
bW1lbnQKLQotICAgIGRlZiBzdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChzZWxmLCBjb21t
aXRfdGV4dCk6Ci0gICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYuY29tbWl0X3N1Y2Nlc3Nf
cmVnZXhwLCBjb21taXRfdGV4dCwgcmUuTVVMVElMSU5FKQotICAgICAgICByZXR1cm4gbWF0Y2gu
Z3JvdXAoJ3N2bl9yZXZpc2lvbicpCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToK
LSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4g
e3Unc3RlcCc6IHUnRmFpbGVkIHRvIHB1c2ggY29tbWl0IHRvIFdlYmtpdCByZXBvc2l0b3J5J30K
LSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
Ci0KLQotY2xhc3MgQ2hlY2tQYXRjaFN0YXR1c09uRVdTUXVldWVzKGJ1aWxkc3RlcC5CdWlsZFN0
ZXAsIEJ1Z3ppbGxhTWl4aW4pOgotICAgIG5hbWUgPSAnY2hlY2stc3RhdHVzLW9uLW90aGVyLWV3
c2VzJwotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQ2hlY2tlZCBwYXRjaCBzdGF0dXMgb24gb3Ro
ZXIgcXVldWVzJ10KLQotICAgIGRlZiBnZXRfcGF0Y2hfc3RhdHVzKHNlbGYsIHBhdGNoX2lkLCBx
dWV1ZSk6Ci0gICAgICAgIHVybCA9ICd7fXN0YXR1cy97fScuZm9ybWF0KEVXU19VUkwsIHBhdGNo
X2lkKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1
cmwpCi0gICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge30gd2l0
aCBzdGF0dXMgY29kZToge31cbicuZm9ybWF0KHVybCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAtMQotICAgICAgICAgICAgcXVldWVfZGF0YSA9IHJlc3Bv
bnNlLmpzb24oKS5nZXQocXVldWUpCi0gICAgICAgICAgICBpZiBub3QgcXVldWVfZGF0YToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gLTEKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZV9kYXRhLmdl
dCgnc3RhdGUnKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnRmFpbGVkIHRvIGFjY2VzcyB7fVxuJy5mb3JtYXQodXJs
KSkKLSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwot
ICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0g
ICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAg
ICBwYXRjaF9zdGF0dXNfb25fbWFjX3drMiA9IHNlbGYuZ2V0X3BhdGNoX3N0YXR1cyhwYXRjaF9p
ZCwgJ21hYy13azInKQotICAgICAgICBpZiBwYXRjaF9zdGF0dXNfb25fbWFjX3drMiA9PSBTVUND
RVNTOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGFzc2VkX21hY193azInLCBUcnVl
KQotICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHJldHVybiBOb25lCklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3Vu
aXR0ZXN0LnB5CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNjkwICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
Ci0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAot
IyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQg
aW5zcGVjdAotaW1wb3J0IGpzb24KLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IG9zCi1pbXBvcnQg
c2h1dGlsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLQotZnJvbSBidWlsZGJvdC5wcm9j
ZXNzIGltcG9ydCByZW1vdGV0cmFuc2ZlcgotZnJvbSBidWlsZGJvdC5wcm9jZXNzLnJlc3VsdHMg
aW1wb3J0IFJlc3VsdHMsIFNVQ0NFU1MsIEZBSUxVUkUsIFdBUk5JTkdTLCBTS0lQUEVELCBFWENF
UFRJT04sIFJFVFJZCi1mcm9tIGJ1aWxkYm90LnRlc3QuZmFrZS5yZW1vdGVjb21tYW5kIGltcG9y
dCBFeHBlY3QsIEV4cGVjdFJlbW90ZVJlZiwgRXhwZWN0U2hlbGwKLWZyb20gYnVpbGRib3QudGVz
dC51dGlsLnN0ZXBzIGltcG9ydCBCdWlsZFN0ZXBNaXhpbgotZnJvbSBidWlsZGJvdC51dGlsIGlt
cG9ydCBpZGVudGlmaWVycyBhcyBidWlsZGJvdF9pZGVudGlmaWVycwotZnJvbSBtb2NrIGltcG9y
dCBjYWxsCi1mcm9tIHR3aXN0ZWQuaW50ZXJuZXQgaW1wb3J0IGVycm9yLCByZWFjdG9yCi1mcm9t
IHR3aXN0ZWQucHl0aG9uIGltcG9ydCBmYWlsdXJlLCBsb2cKLWZyb20gdHdpc3RlZC50cmlhbCBp
bXBvcnQgdW5pdHRlc3QKLQotZnJvbSBzdGVwcyBpbXBvcnQgKEFuYWx5emVBUElUZXN0c1Jlc3Vs
dHMsIEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cywgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cywK
LSAgICAgICAgICAgICAgICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLCBBcHBseVBhdGNo
LCBBcHBseVdhdGNoTGlzdCwgQXJjaGl2ZUJ1aWx0UHJvZHVjdCwgQXJjaGl2ZVRlc3RSZXN1bHRz
LAotICAgICAgICAgICAgICAgICAgIENoZWNrT3V0U291cmNlLCBDaGVja091dFNwZWNpZmljUmV2
aXNpb24sIENoZWNrUGF0Y2hSZWxldmFuY2UsIENoZWNrUGF0Y2hTdGF0dXNPbkVXU1F1ZXVlcywg
Q2hlY2tTdHlsZSwKLSAgICAgICAgICAgICAgICAgICBDbGVhbkJ1aWxkLCBDbGVhblVwR2l0SW5k
ZXhMb2NrLCBDbGVhbldvcmtpbmdEaXJlY3RvcnksIENvbXBpbGVKU0MsIENvbXBpbGVKU0NXaXRo
b3V0UGF0Y2gsIENvbXBpbGVXZWJLaXQsCi0gICAgICAgICAgICAgICAgICAgQ29tcGlsZVdlYktp
dFdpdGhvdXRQYXRjaCwgQ29uZmlndXJlQnVpbGQsIENyZWF0ZUxvY2FsR0lUQ29tbWl0LAotICAg
ICAgICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBEb3dubG9hZEJ1aWx0UHJvZHVj
dEZyb21NYXN0ZXIsIEV4dHJhY3RCdWlsdFByb2R1Y3QsIEV4dHJhY3RUZXN0UmVzdWx0cywKLSAg
ICAgICAgICAgICAgICAgICBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBJbnN0YWxsR3RrRGVwZW5k
ZW5jaWVzLCBJbnN0YWxsV3BlRGVwZW5kZW5jaWVzLCBLaWxsT2xkUHJvY2Vzc2VzLAotICAgICAg
ICAgICAgICAgICAgIFByaW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywg
UmVSdW5BUElUZXN0cywgUmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBSZVJ1bldlYktpdFBlcmxU
ZXN0cywKLSAgICAgICAgICAgICAgICAgICBSZVJ1bldlYktpdFRlc3RzLCBSdW5BUElUZXN0cywg
UnVuQVBJVGVzdHNXaXRob3V0UGF0Y2gsIFJ1bkJpbmRpbmdzVGVzdHMsIFJ1bkJ1aWxkV2ViS2l0
T3JnVW5pdFRlc3RzLAotICAgICAgICAgICAgICAgICAgIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25m
aWcsIFJ1bkVXU1VuaXRUZXN0cywgUnVuUmVzdWx0c2RicHlUZXN0cywgUnVuSmF2YVNjcmlwdENv
cmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCwgUnVu
V2ViS2l0MVRlc3RzLCBSdW5XZWJLaXRQZXJsVGVzdHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3Rz
LAotICAgICAgICAgICAgICAgICAgIFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzLCBSdW5XZWJLaXRU
ZXN0cywgUnVuV2ViS2l0VGVzdHNXaXRob3V0UGF0Y2gsIFRlc3RXaXRoRmFpbHVyZUNvdW50LAot
ICAgICAgICAgICAgICAgICAgIFRyaWdnZXIsIFRyYW5zZmVyVG9TMywgVW5BcHBseVBhdGNoSWZS
ZXF1aXJlZCwgVXBkYXRlV29ya2luZ0RpcmVjdG9yeSwgVXBsb2FkQnVpbHRQcm9kdWN0LAotICAg
ICAgICAgICAgICAgICAgIFVwbG9hZFRlc3RSZXN1bHRzLCBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2
aWV3ZXIsIFZhbGlkYXRlUGF0Y2gpCi0KLSMgV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIu
Y29tL2J1aWxkYm90L2J1aWxkYm90L2lzc3Vlcy80NjY5Ci1mcm9tIGJ1aWxkYm90LnRlc3QuZmFr
ZS5mYWtlYnVpbGQgaW1wb3J0IEZha2VCdWlsZAotRmFrZUJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJy
ZW50U3RlcCA9IGxhbWJkYSBGYWtlQnVpbGQsIHN0ZXBfZmFjdG9yaWVzOiBOb25lCi0KLQotZGVm
IG1vY2tfc3RlcChzdGVwLCBsb2dzPScnLCByZXN1bHRzPVNVQ0NFU1MsIHN0b3BwZWQ9RmFsc2Us
IHByb3BlcnRpZXM9Tm9uZSk6Ci0gICAgc3RlcC5sb2dzID0gbG9ncwotICAgIHN0ZXAucmVzdWx0
cyA9IHJlc3VsdHMKLSAgICBzdGVwLnN0b3BwZWQgPSBzdG9wcGVkCi0gICAgcmV0dXJuIHN0ZXAK
LQotCi1jbGFzcyBFeHBlY3RNYXN0ZXJTaGVsbENvbW1hbmQob2JqZWN0KToKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgY29tbWFuZCwgd29ya2Rpcj1Ob25lLCBlbnY9Tm9uZSwgdXNlUFRZPTApOgot
ICAgICAgICBzZWxmLmFyZ3MgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudXNlUFRZID0gdXNlUFRZ
Ci0gICAgICAgIHNlbGYucmMgPSBOb25lCi0gICAgICAgIHNlbGYucGF0aCA9IE5vbmUKLSAgICAg
ICAgc2VsZi5sb2dzID0gW10KLQotICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBzZWxmLmVudiA9IGVudgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5lbnYg
PSBvcy5lbnZpcm9uCi0gICAgICAgIGlmIHdvcmtkaXI6Ci0gICAgICAgICAgICBzZWxmLnBhdGgg
PSBvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHdvcmtkaXIpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgbG9nKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgcmV0dXJuICgnbG9nJywg
bmFtZSwgdmFsdWUpCi0KLSAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlm
IGlzaW5zdGFuY2Uob3RoZXIsIGludCk6Ci0gICAgICAgICAgICBzZWxmLnJjID0gb3RoZXIKLSAg
ICAgICAgZWxpZiBpc2luc3RhbmNlKG90aGVyLCB0dXBsZSkgYW5kIG90aGVyWzBdID09ICdsb2cn
OgotICAgICAgICAgICAgc2VsZi5sb2dzLmFwcGVuZCgob3RoZXJbMV0sIG90aGVyWzJdKSkKLSAg
ICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0
dXJuICdFeHBlY3RNYXN0ZXJTaGVsbENvbW1hbmQoezB9KScuZm9ybWF0KHJlcHIoc2VsZi5hcmdz
KSkKLQotCi1jbGFzcyBCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucyhCdWlsZFN0ZXBNaXhpbik6Ci0g
ICAgZGVmIHNldFVwQnVpbGRTdGVwKHNlbGYpOgotICAgICAgICBzZWxmLnBhdGNoKHJlYWN0b3Is
ICdzcGF3blByb2Nlc3MnLCBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9jaGVja1NwYXdu
UHJvY2VzcygqYXJncywgKiprd2FyZ3MpKQotICAgICAgICBzZWxmLl9leHBlY3RlZF9sb2NhbF9j
b21tYW5kcyA9IFtdCi0KLSAgICAgICAgc2VsZi5fdGVtcF9kaXJlY3RvcnkgPSB0ZW1wZmlsZS5t
a2R0ZW1wKCkKLSAgICAgICAgb3MuY2hkaXIoc2VsZi5fdGVtcF9kaXJlY3RvcnkpCi0gICAgICAg
IHNlbGYuX2V4cGVjdGVkX3VwbG9hZGVkX2ZpbGVzID0gW10KLQotICAgICAgICBzdXBlcihCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRl
YXJEb3duQnVpbGRTdGVwKHNlbGYpOgotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuX3RlbXBf
ZGlyZWN0b3J5KQotICAgICAgICBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZiku
dGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIGZha2VCdWlsZEZpbmlzaGVkKHNlbGYsIHRl
eHQsIHJlc3VsdHMpOgotICAgICAgICBzZWxmLmJ1aWxkLnRleHQgPSB0ZXh0Ci0gICAgICAgIHNl
bGYuYnVpbGQucmVzdWx0cyA9IHJlc3VsdHMKLQotICAgIGRlZiBzZXR1cFN0ZXAoc2VsZiwgc3Rl
cCwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5wcmV2aW91c19zdGVwcyA9IGt3YXJn
cy5nZXQoJ3ByZXZpb3VzX3N0ZXBzJykgb3IgW10KLSAgICAgICAgaWYgc2VsZi5wcmV2aW91c19z
dGVwczoKLSAgICAgICAgICAgIGRlbCBrd2FyZ3NbJ3ByZXZpb3VzX3N0ZXBzJ10KLQotICAgICAg
ICBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikuc2V0dXBTdGVwKHN0ZXAsICph
cmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5idWlsZC50ZXJtaW5hdGUgPSBGYWxzZQotICAg
ICAgICBzZWxmLmJ1aWxkLnN0b3BwZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmJ1aWxkLmV4ZWN1
dGVkU3RlcHMgPSBzZWxmLmV4ZWN1dGVkU3RlcHMKLSAgICAgICAgc2VsZi5idWlsZC5idWlsZEZp
bmlzaGVkID0gc2VsZi5mYWtlQnVpbGRGaW5pc2hlZAotICAgICAgICBzZWxmLl9leHBlY3RlZF9h
ZGRlZF91cmxzID0gW10KLSAgICAgICAgc2VsZi5fZXhwZWN0ZWRfc291cmNlcyA9IE5vbmUKLQot
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBleGVjdXRlZFN0ZXBzKHNlbGYpOgotICAgICAgICByZXR1
cm4gZmlsdGVyKGxhbWJkYSBzdGVwOiBub3Qgc3RlcC5zdG9wcGVkLCBzZWxmLnByZXZpb3VzX3N0
ZXBzKQotCi0gICAgZGVmIHNldFByb3BlcnR5KHNlbGYsIG5hbWUsIHZhbHVlLCBzb3VyY2U9J1Vu
a25vd24nKToKLSAgICAgICAgc2VsZi5wcm9wZXJ0aWVzLnNldFByb3BlcnR5KG5hbWUsIHZhbHVl
LCBzb3VyY2UpCi0KLSAgICBkZWYgZ2V0UHJvcGVydHkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLnByb3BlcnRpZXMuZ2V0UHJvcGVydHkobmFtZSkKLQotICAgIGRlZiBleHBlY3RB
ZGRlZFVSTHMoc2VsZiwgYWRkZWRfdXJscyk6Ci0gICAgICAgIHNlbGYuX2V4cGVjdGVkX2FkZGVk
X3VybHMgPSBhZGRlZF91cmxzCi0KLSAgICBkZWYgZXhwZWN0VXBsb2FkZWRGaWxlKHNlbGYsIHBh
dGgpOgotICAgICAgICBzZWxmLl9leHBlY3RlZF91cGxvYWRlZF9maWxlcy5hcHBlbmQocGF0aCkK
LQotICAgIGRlZiBleHBlY3RMb2NhbENvbW1hbmRzKHNlbGYsICpleHBlY3RlZF9jb21tYW5kcyk6
Ci0gICAgICAgIHNlbGYuX2V4cGVjdGVkX2xvY2FsX2NvbW1hbmRzLmV4dGVuZChleHBlY3RlZF9j
b21tYW5kcykKLQotICAgIGRlZiBleHBlY3RSZW1vdGVDb21tYW5kcyhzZWxmLCAqZXhwZWN0ZWRf
Y29tbWFuZHMpOgotICAgICAgICBzZWxmLmV4cGVjdENvbW1hbmRzKCpleHBlY3RlZF9jb21tYW5k
cykKLQotICAgIGRlZiBleHBlY3RTb3VyY2VzKHNlbGYsIGV4cGVjdGVkX3NvdXJjZXMpOgotICAg
ICAgICBzZWxmLl9leHBlY3RlZF9zb3VyY2VzID0gZXhwZWN0ZWRfc291cmNlcwotCi0gICAgZGVm
IF9jaGVja1NwYXduUHJvY2VzcyhzZWxmLCBwcm9jZXNzUHJvdG9jb2wsIGV4ZWN1dGFibGUsIGFy
Z3MsIGVudiwgcGF0aCwgdXNlUFRZLCAqKmt3YXJncyk6Ci0gICAgICAgIGdvdCA9IChleGVjdXRh
YmxlLCBhcmdzLCBlbnYsIHBhdGgsIHVzZVBUWSkKLSAgICAgICAgaWYgbm90IHNlbGYuX2V4cGVj
dGVkX2xvY2FsX2NvbW1hbmRzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdnb3QgbG9jYWwgY29t
bWFuZCB7MH0gd2hlbiBubyBmdXJ0aGVyIGNvbW1hbmRzIHdlcmUgZXhwZWN0ZWQnLmZvcm1hdChn
b3QpKQotICAgICAgICBsb2NhbF9jb21tYW5kID0gc2VsZi5fZXhwZWN0ZWRfbG9jYWxfY29tbWFu
ZHMucG9wKDApCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290
LCAobG9jYWxfY29tbWFuZC5hcmdzWzBdLCBsb2NhbF9jb21tYW5kLmFyZ3MsIGxvY2FsX2NvbW1h
bmQuZW52LCBsb2NhbF9jb21tYW5kLnBhdGgsIGxvY2FsX2NvbW1hbmQudXNlUFRZKSkKLSAgICAg
ICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAgICAgICAgICAgbG9nLmVycigpCi0gICAgICAg
ICAgICByYWlzZQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbG9jYWxfY29tbWFuZC5sb2dz
OgotICAgICAgICAgICAgaWYgbmFtZSA9PSAnc3Rkb3V0JzoKLSAgICAgICAgICAgICAgICBwcm9j
ZXNzUHJvdG9jb2wub3V0UmVjZWl2ZWQodmFsdWUpCi0gICAgICAgICAgICBlbGlmIG5hbWUgPT0g
J3N0ZGVycic6Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc1Byb3RvY29sLmVyclJlY2VpdmVkKHZh
bHVlKQotICAgICAgICBpZiBsb2NhbF9jb21tYW5kLnJjICE9IDA6Ci0gICAgICAgICAgICB2YWx1
ZSA9IGVycm9yLlByb2Nlc3NUZXJtaW5hdGVkKGV4aXRDb2RlPWxvY2FsX2NvbW1hbmQucmMpCi0g
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YWx1ZSA9IGVycm9yLlByb2Nlc3NEb25lKE5vbmUp
Ci0gICAgICAgIHByb2Nlc3NQcm90b2NvbC5wcm9jZXNzRW5kZWQoZmFpbHVyZS5GYWlsdXJlKHZh
bHVlKSkKLQotICAgIGRlZiBfYWRkZWRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBb
XQotICAgICAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKHNl
bGYuX3RlbXBfZGlyZWN0b3J5KToKLSAgICAgICAgICAgIHJlbGF0aXZlX3Jvb3RfcGF0aCA9IG9z
LnBhdGgucmVscGF0aChkaXJwYXRoLCBzdGFydD1zZWxmLl90ZW1wX2RpcmVjdG9yeSkKLSAgICAg
ICAgICAgIGlmIHJlbGF0aXZlX3Jvb3RfcGF0aCA9PSAnLic6Ci0gICAgICAgICAgICAgICAgcmVs
YXRpdmVfcm9vdF9wYXRoID0gJycKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoK
LSAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChvcy5wYXRoLmpvaW4ocmVsYXRpdmVfcm9v
dF9wYXRoLCBuYW1lKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiBydW5TdGVw
KHNlbGYpOgotICAgICAgICBkZWYgY2hlY2socmVzdWx0KToKLSAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5fZXhwZWN0ZWRfbG9jYWxfY29tbWFuZHMsIFtdLCAnYXNzZXJ0IGFsbCBl
eHBlY3RlZCBsb2NhbCBjb21tYW5kcyB3ZXJlIHJ1bicpCi0gICAgICAgICAgICBzZWxmLmV4cGVj
dEFkZGVkVVJMcyhzZWxmLl9leHBlY3RlZF9hZGRlZF91cmxzKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLl9hZGRlZF9maWxlcygpLCBzZWxmLl9leHBlY3RlZF91cGxvYWRlZF9m
aWxlcykKLSAgICAgICAgICAgIGlmIHNlbGYuX2V4cGVjdGVkX3NvdXJjZXMgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICAgICAgIyBDb252ZXJ0IHRvIGRpY3Rpb25hcmllcyBiZWNhdXNlIGFzc2Vy
dEVxdWFsKCkgb25seSBrbm93cyBob3cgdG8gZGlmZiBQeXRob24gYnVpbHQtaW4gdHlwZXMuCi0g
ICAgICAgICAgICAgICAgYWN0dWFsX3NvdXJjZXMgPSBzb3J0ZWQoW3NvdXJjZS5hc0RpY3QoKSBm
b3Igc291cmNlIGluIHNlbGYuYnVpbGQuc291cmNlc10sIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVy
KCdjb2RlYmFzZScpKQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NvdXJjZXMgPSBzb3J0ZWQo
W3NvdXJjZS5hc0RpY3QoKSBmb3Igc291cmNlIGluIHNlbGYuX2V4cGVjdGVkX3NvdXJjZXNdLCBr
ZXk9b3BlcmF0b3IuaXRlbWdldHRlcignY29kZWJhc2UnKSkKLSAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGFjdHVhbF9zb3VyY2VzLCBleHBlY3RlZF9zb3VyY2VzKQotICAgICAgICBk
ZWZlcnJlZF9yZXN1bHQgPSBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikucnVu
U3RlcCgpCi0gICAgICAgIGRlZmVycmVkX3Jlc3VsdC5hZGRDYWxsYmFjayhjaGVjaykKLSAgICAg
ICAgcmV0dXJuIGRlZmVycmVkX3Jlc3VsdAotCi0KLWRlZiB1cGxvYWRGaWxlV2l0aENvbnRlbnRz
T2ZTdHJpbmcoc3RyaW5nLCB0aW1lc3RhbXA9Tm9uZSk6Ci0gICAgZGVmIGJlaGF2aW9yKGNvbW1h
bmQpOgotICAgICAgICB3cml0ZXIgPSBjb21tYW5kLmFyZ3NbJ3dyaXRlciddCi0gICAgICAgIHdy
aXRlci5yZW1vdGVfd3JpdGUoc3RyaW5nICsgJ1xuJykKLSAgICAgICAgd3JpdGVyLnJlbW90ZV9j
bG9zZSgpCi0gICAgICAgIGlmIHRpbWVzdGFtcDoKLSAgICAgICAgICAgIHdyaXRlci5yZW1vdGVf
dXRpbWUodGltZXN0YW1wKQotICAgIHJldHVybiBiZWhhdmlvcgotCi0KLWNsYXNzIFRlc3RTdGVw
TmFtZVNob3VsZEJlVmFsaWRJZGVudGlmaWVyKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rfc3RlcF9uYW1lc19hcmVfdmFsaWQoc2VsZik6
Ci0gICAgICAgIGltcG9ydCBzdGVwcwotICAgICAgICBidWlsZF9zdGVwX2NsYXNzZXMgPSBpbnNw
ZWN0LmdldG1lbWJlcnMoc3RlcHMsIGluc3BlY3QuaXNjbGFzcykKLSAgICAgICAgZm9yIGJ1aWxk
X3N0ZXAgaW4gYnVpbGRfc3RlcF9jbGFzc2VzOgotICAgICAgICAgICAgaWYgJ25hbWUnIGluIHZh
cnMoYnVpbGRfc3RlcFsxXSk6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGJ1aWxkX3N0ZXBbMV0u
bmFtZQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJyAnIGluIG5hbWUsICdzdGVw
IG5hbWUgInt9IiBjb250YWluIHNwYWNlLicuZm9ybWF0KG5hbWUpKQotICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGJvdF9pZGVudGlmaWVycy5pZGVudF9yZS5tYXRjaChuYW1l
KSwgJ3N0ZXAgbmFtZSAie30iIGlzIG5vdCBhIHZhbGlkIGJ1aWxkYm90IGlkZW50aWZpZXIuJy5m
b3JtYXQobmFtZSkpCi0KLQotY2xhc3MgVGVzdENoZWNrU3R5bGUoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVh
ckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzc19pbnRlcm5hbChzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tTdHlsZSgpKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCd0cnktY29kZWJhc2UnLCAnaW50ZXJuYWwnKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1
cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nY2hlY2st
d2Via2l0LXN0eWxlJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9mYWlsdXJlX3Vua25vd25fdHJ5X2NvZGViYXNlKHNlbGYpOgotICAgICAgICBzZWxmLnNl
dHVwU3RlcChDaGVja1N0eWxlKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3RyeS1jb2Rl
YmFzZScsICdmb28nKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMn
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQot
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMv
U2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nY2hlY2std2Via2l0LXN0eWxlIChmYWlsdXJl
KScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVy
ZXNfd2l0aF9zdHlsZV9pc3N1ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENoZWNr
U3R5bGUoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgndHJ5LWNvZGViYXNlJywgJ2ludGVy
bmFsJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAg
c2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtk
aXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMv
Y2hlY2std2Via2l0LXN0eWxlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnRVJST1I6IFNvdXJjZS9X
ZWJDb3JlL2xheW91dC9GbG9hdGluZ0NvbnRleHQuY3BwOjM2OiAgQ29kZSBpbnNpZGUgYSBuYW1l
c3BhY2Ugc2hvdWxkIG5vdCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdCi1F
UlJPUjogU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6OTQ6ICBXZWly
ZCBudW1iZXIgb2Ygc3BhY2VzIGF0IGxpbmUtc3RhcnQuICBBcmUgeW91IHVzaW5nIGEgNC1zcGFj
ZSBpbmRlbnQ/ICBbd2hpdGVzcGFjZS9pbmRlbnRdIFszXQotRVJST1I6IFNvdXJjZS9XZWJDb3Jl
L2xheW91dC9MYXlvdXRDb250ZXh0LmNwcDo1MjogIFBsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGlu
ZSBmb3IgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XQotRVJS
T1I6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcDo1NTogIEV4dHJhIHNw
YWNlIGJlZm9yZSBsYXN0IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4gZW1wdHkgc3Rh
dGVtZW50LCB1c2UgeyB9IGluc3RlYWQuICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XQotRVJS
T1I6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcDo2MDogIFRhYiBmb3Vu
ZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdCi1FUlJPUjogU291
cmNlL1dlYkNvcmUvbGF5b3V0L1ZlcmlmaWNhdGlvbi5jcHA6ODg6ICBNaXNzaW5nIHNwYWNlIGJl
Zm9yZSAoIGluIHdoaWxlKCAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0KLVRvdGFsIGVycm9ycyBm
b3VuZDogOCBpbiA0OCBmaWxlcycnJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nOCBz
dHlsZSBlcnJvcnMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X2ZhaWx1cmVzX25vX3N0eWxlX2lzc3VlcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoQ2hlY2tTdHlsZSgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd0cnktY29kZWJhc2Un
LCAnaW50ZXJuYWwnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMn
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQot
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMv
U2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVG90YWwgZXJy
b3JzIGZvdW5kOiAwIGluIDYgZmlsZXMnKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdj
aGVjay13ZWJraXQtc3R5bGUnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X2ZhaWx1cmVzX25vX2NoYW5nZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKENoZWNrU3R5bGUoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgndHJ5LWNvZGViYXNl
JywgJ2ludGVybmFsJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFj
JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0K
LSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xz
L1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1RvdGFsIGVy
cm9ycyBmb3VuZDogMCBpbiAwIGZpbGVzJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
Y2hlY2std2Via2l0LXN0eWxlIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0KLWNsYXNzIFRlc3RBcHBseVdhdGNoTGlzdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9u
cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2Vs
Zi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93
bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChBcHBseVdhdGNoTGlzdCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWdfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1Nj
cmlwdHMvd2Via2l0LXBhdGNoJywgJ2FwcGx5LXdhdGNobGlzdC1sb2NhbCcsICcxMjM0J10pCi0g
ICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1Jlc3VsdCBvZiB3
YXRjaGxpc3Q6IGNjICIiIG1lc3NhZ2VzICIiJykKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nQXBwbGllZCBXYXRjaExpc3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFwcGx5
V2F0Y2hMaXN0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1Z19pZCcsICcxMjM0JykK
LSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIw
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy93ZWJraXQtcGF0
Y2gnLCAnYXBwbHktd2F0Y2hsaXN0LWxvY2FsJywgJzEyMzQnXSkKLSAgICAgICAgICAgICsgRXhw
ZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlJykKLSAgICAg
ICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHRvIGFwcGx5IHdhdGNobGlzdCcpCi0gICAg
ICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5CaW5kaW5nc1Rlc3Rz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNl
dFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBzZWxm
Lmpzb25GaWxlTmFtZSA9ICdiaW5kaW5nc190ZXN0X3Jlc3VsdHMuanNvbicKLSAgICAgICAgcmV0
dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNj
ZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5CaW5kaW5nc1Rlc3RzKCkpCi0g
ICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdz
LXRlc3RzJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVO
YW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0
cmluZz0nUGFzc2VkIGJpbmRpbmdzIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChSdW5CaW5kaW5nc1Rlc3RzKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lb3V0PTMwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmly
b249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rv
b2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVz
PXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nRkFJTDogKEpT
KSBKU1Rlc3RJbnRlcmZhY2UuY3BwJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nYmlu
ZGluZ3MtdGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LQotY2xhc3MgVGVzdFJ1bldlYktpdFBlcmxUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywg
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5s
b25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAgc2VsZi5z
ZXR1cFN0ZXAoUnVuV2ViS2l0UGVybFRlc3RzKCkpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRwZXJs
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIHdlYmtpdHBl
cmwgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0
X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy90ZXN0
LXdlYmtpdHBlcmwnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PScnJ0ZhaWxlZCB0ZXN0czogIDEtMywgNS03LCA5LCAxMS0xMwotRmlsZXM9
NDAsIFRlc3RzPTYzMCwgIDQgd2FsbGNsb2NrIHNlY3MgKCAwLjE2IHVzciAgMC4wOSBzeXMgKyAg
Mi43OCBjdXNyICAwLjY0IGNzeXMgPSAgMy42NyBDUFUpCi1SZXN1bHQ6IEZBSUwKLUZhaWxlZCAx
LzQwIHRlc3QgcHJvZ3JhbXMuIDEwLzYzMCBzdWJ0ZXN0cyBmYWlsZWQuJycnKQotICAgICAgICAg
ICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgd2Via2l0cGVybCB0ZXN0cycpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RXZWJLaXRQeVB5dGhvbjJUZXN0cyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2VsZi5q
c29uRmlsZU5hbWUgPSAnd2Via2l0cHlfdGVzdF9weXRob24yX3Jlc3VsdHMuanNvbicKLSAgICAg
ICAgc2VsZi5qc29uX3dpdGhfZmFpbHVyZSA9ICcnJ3siZmFpbHVyZXMiOiBbeyJuYW1lIjogIndl
YmtpdHB5LnBvcnQud3BlX3VuaXR0ZXN0LldQRVBvcnRUZXN0LnRlc3RfZGlmZl9pbWFnZSJ9XX1c
bicnJwotICAgICAgICBzZWxmLmpzb25fd2l0aF9lcnJyb3MgPSAnJyd7ImZhaWx1cmVzIjogW10s
Ci0iZXJyb3JzIjogW3sibmFtZSI6ICJ3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jcHBfdW5pdHRl
c3QuV2ViS2l0U3R5bGVUZXN0LnRlc3Rfb3NfdmVyc2lvbl9jaGVja3MifSwgeyJuYW1lIjogIndl
YmtpdHB5LnBvcnQud2luX3VuaXR0ZXN0LldpblBvcnRUZXN0LnRlc3RfZGlmZl9pbWFnZV9fbWlz
c2luZ19hY3R1YWwifV19XG4nJycKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93
bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChSdW5XZWJLaXRQeVB5dGhvbjJUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtp
dHB5JywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFz
c2VkIHdlYmtpdHB5IHB5dGhvbjIgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5zZXR1cFN0ZXAoUnVuV2ViS2l0UHlQeXRob24yVGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBl
Y3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGly
JywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJr
aXRweScsICctLXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25G
aWxlTmFtZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2Vs
Zi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
c3RkaW8nLCBzdGRvdXQ9JycnUmFuIDE3NDQgdGVzdHMgaW4gNS45MTNzCi1GQUlMRUQgKGZhaWx1
cmVzPTEsIGVycm9ycz0wKScnJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nd2Via2l0
cHktdGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAg
ICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJL
aXRQeVB5dGhvbjJUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9zZScs
ICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYu
anNvbl93aXRoX2ZhaWx1cmUpICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEg
d2Via2l0cHkgcHl0aG9uMiB0ZXN0IGZhaWx1cmU6IHdlYmtpdHB5LnBvcnQud3BlX3VuaXR0ZXN0
LldQRVBvcnRUZXN0LnRlc3RfZGlmZl9pbWFnZScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0gICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChSdW5XZWJLaXRQeVB5dGhvbjJUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNv
bW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0t
dmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rk
b3V0PXNlbGYuanNvbl93aXRoX2VycnJvcykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
Rm91bmQgMiB3ZWJraXRweSBweXRob24yIHRlc3QgZmFpbHVyZXM6IHdlYmtpdHB5LnN0eWxlLmNo
ZWNrZXJzLmNwcF91bml0dGVzdC5XZWJLaXRTdHlsZVRlc3QudGVzdF9vc192ZXJzaW9uX2NoZWNr
cywgd2Via2l0cHkucG9ydC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdl
X19taXNzaW5nX2FjdHVhbCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAg
ZGVmIHRlc3RfbG90X29mX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChS
dW5XZWJLaXRQeVB5dGhvbjJUZXN0cygpKQotICAgICAgICBqc29uX3dpdGhfZmFpbHVyZXMgPSBq
c29uLmR1bXBzKHsiZmFpbHVyZXMiOiBbeyJuYW1lIjogJ3Rlc3R7fScuZm9ybWF0KGkpfSBmb3Ig
aSBpbiByYW5nZSgxLCAzMSldfSkKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9z
ZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PWpz
b25fd2l0aF9mYWlsdXJlcykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMzAg
d2Via2l0cHkgcHl0aG9uMiB0ZXN0IGZhaWx1cmVzOiB0ZXN0MSwgdGVzdDIsIHRlc3QzLCB0ZXN0
NCwgdGVzdDUsIHRlc3Q2LCB0ZXN0NywgdGVzdDgsIHRlc3Q5LCB0ZXN0MTAgLi4uJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFdlYktpdFB5UHl0aG9uM1Rl
c3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBz
ZWxmLmpzb25GaWxlTmFtZSA9ICd3ZWJraXRweV90ZXN0X3B5dGhvbjNfcmVzdWx0cy5qc29uJwot
ICAgICAgICBzZWxmLmpzb25fd2l0aF9mYWlsdXJlID0gJycneyJmYWlsdXJlcyI6IFt7Im5hbWUi
OiAid2Via2l0cHkucG9ydC53cGVfdW5pdHRlc3QuV1BFUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdl
In1dfVxuJycnCi0gICAgICAgIHNlbGYuanNvbl93aXRoX2VycnJvcyA9ICcnJ3siZmFpbHVyZXMi
OiBbXSwKLSJlcnJvcnMiOiBbeyJuYW1lIjogIndlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNwcF91
bml0dGVzdC5XZWJLaXRTdHlsZVRlc3QudGVzdF9vc192ZXJzaW9uX2NoZWNrcyJ9LCB7Im5hbWUi
OiAid2Via2l0cHkucG9ydC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdl
X19taXNzaW5nX2FjdHVhbCJ9XX1cbicnJwotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxk
U3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRl
YXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAg
IHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzKCkpCi0gICAgICAgIHNlbGYu
ZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3
a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbjMnLCAnVG9vbHMvU2NyaXB0cy90ZXN0
LXdlYmtpdHB5JywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEy
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nUGFzc2VkIHdlYmtpdHB5IHB5dGhvbjMgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZShzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoUnVuV2ViS2l0UHlQeXRob24zVGVzdHMoKSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uMycsICdUb29scy9TY3JpcHRzL3Rl
c3Qtd2Via2l0cHknLCAnLS12ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2Vs
Zi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNv
bic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9
MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVs
bC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1JhbiAxNzQ0IHRlc3RzIGluIDUuOTEzcwotRkFJTEVE
IChmYWlsdXJlcz0xLCBlcnJvcnM9MCknJycpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J3dlYmtpdHB5LXRlc3RzIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAo
UnVuV2ViS2l0UHlQeXRob24zVGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncHl0aG9uMycsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAnLS12
ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVO
YW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRv
dXQ9c2VsZi5qc29uX3dpdGhfZmFpbHVyZSkgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
Rm91bmQgMSB3ZWJraXRweSBweXRob24zIHRlc3QgZmFpbHVyZTogd2Via2l0cHkucG9ydC53cGVf
dW5pdHRlc3QuV1BFUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdlJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbjMnLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtp
dHB5JywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdq
c29uJywgc3Rkb3V0PXNlbGYuanNvbl93aXRoX2VycnJvcykgKwotICAgICAgICAgICAgMiwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRm91bmQgMiB3ZWJraXRweSBweXRob24zIHRlc3QgZmFpbHVyZXM6IHdlYmtpdHB5
LnN0eWxlLmNoZWNrZXJzLmNwcF91bml0dGVzdC5XZWJLaXRTdHlsZVRlc3QudGVzdF9vc192ZXJz
aW9uX2NoZWNrcywgd2Via2l0cHkucG9ydC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9k
aWZmX2ltYWdlX19taXNzaW5nX2FjdHVhbCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3RfbG90X29mX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLnNl
dHVwU3RlcChSdW5XZWJLaXRQeVB5dGhvbjNUZXN0cygpKQotICAgICAgICBqc29uX3dpdGhfZmFp
bHVyZXMgPSBqc29uLmR1bXBzKHsiZmFpbHVyZXMiOiBbeyJuYW1lIjogJ3Rlc3R7fScuZm9ybWF0
KGkpfSBmb3IgaSBpbiByYW5nZSgxLCAzMSldfSkKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24zJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweScs
ICctLXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFt
ZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29u
RmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICApICsKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsLmxvZygnanNvbics
IHN0ZG91dD1qc29uX3dpdGhfZmFpbHVyZXMpICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J0ZvdW5kIDMwIHdlYmtpdHB5IHB5dGhvbjMgdGVzdCBmYWlsdXJlczogdGVzdDEsIHRlc3QyLCB0
ZXN0MywgdGVzdDQsIHRlc3Q1LCB0ZXN0NiwgdGVzdDcsIHRlc3Q4LCB0ZXN0OSwgdGVzdDEwIC4u
LicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5FV1NC
dWlsZGJvdENoZWNrQ29uZmlnKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0g
VHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVh
ckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkVX
U0J1aWxkYm90Q2hlY2tDb25maWcoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2V3cy1idWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEy
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsnYnVpbGRib3QnLCAnY2hlY2tjb25maWcnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2Vk
IGJ1aWxkYm90IGNoZWNrY29uZmlnJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5F
V1NCdWlsZGJvdENoZWNrQ29uZmlnKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYnVpbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0x
MjAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWFuZD1bJ2J1aWxkYm90JywgJ2NoZWNrY29uZmlnJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3Rk
aW8nLCBzdGRvdXQ9J0NvbmZpZ3VyYXRpb24gRXJyb3JzOiAgYnVpbGRlcihzKSBpT1MtMTItRGVi
dWctQnVpbGQtRVdTIGhhdmUgbm8gc2NoZWR1bGVycyB0byBkcml2ZSB0aGVtJykKLSAgICAgICAg
ICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZB
SUxVUkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIGJ1aWxkYm90IGNoZWNrY29uZmlnJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bkVXU1VuaXRUZXN0cyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJu
IHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNz
KHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5FV1NVbml0VGVzdHMoKSkKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1
aWxkL3J1blVuaXR0ZXN0cy5weSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgRVdTIHVuaXQgdGVzdHMnKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkVXU1VuaXRUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRl
c3RzLnB5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVj
dFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuaGFuZGxlZCBFcnJvci4gVHJhY2ViYWNrICht
b3N0IHJlY2VudCBjYWxsIGxhc3QpOiBLZXlzIGluIGNtZCBtaXNzaW5nIGZyb20gZXhwZWN0YXRp
b246IFtsb2dmaWxlcy5qc29uXScpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZhaWxl
ZCBFV1MgdW5pdCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3RSdW5SZXN1bHRzZGJweVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdN
ZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAg
ICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKFJ1blJlc3VsdHNkYnB5VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24z
JywgJ1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10
ZXN0cycsICctLXZlcmJvc2UnLCAnLS1uby1zZWxlbml1bScsICctLWZhc3QtdGVzdHMnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFz
c2VkIHJlc3VsdHNkYnB5IHVuaXQgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVw
KFJ1blJlc3VsdHNkYnB5VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24zJywg
J1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10ZXN0
cycsICctLXZlcmJvc2UnLCAnLS1uby1zZWxlbml1bScsICctLWZhc3QtdGVzdHMnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRp
bycsIHN0ZG91dD0nRkFJTEVEIChlcnJvcnM9NSwgc2tpcHBlZD0yMjQpJykKLSAgICAgICAgICAg
ICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxV
UkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHJlc3VsdHNkYnB5IHVuaXQgdGVzdHMnKQotICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0UnVuQnVpbGRXZWJLaXRPcmdV
bml0VGVzdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAg
ICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRl
c3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQnVpbGRXZWJLaXRP
cmdVbml0VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAg
ICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNfdW5pdHRlc3QucHkn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nUGFzc2VkIGJ1aWxkLndlYmtpdC5vcmcgdW5pdCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5zZXR1cFN0ZXAoUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoKSkKLSAgICAgICAgc2VsZi5l
eHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1
aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9Wydw
eXRob24nLCAnc3RlcHNfdW5pdHRlc3QucHknXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5oYW5kbGVk
IEVycm9yLiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IEtleXMgaW4gY21kIG1p
c3NpbmcgZnJvbSBleHBlY3RhdGlvbjogW2xvZ2ZpbGVzLmpzb25dJykKLSAgICAgICAgICAgICsg
MiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUs
IHN0YXRlX3N0cmluZz0nRmFpbGVkIGJ1aWxkLndlYmtpdC5vcmcgdW5pdCB0ZXN0cycpCi0gICAg
ICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RLaWxsT2xkUHJvY2Vzc2Vz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNl
dFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1
cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nl
c3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxk
Ym90J10sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZW91dD02MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkK
LSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nS2lsbGVkIG9sZCBwcm9jZXNzZXMnKQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6
Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxkYm90J10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD02MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAg
ICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBlcnJvci4n
KQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8ga2lsbCBvbGQgcHJvY2Vz
c2VzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENsZWFu
QnVpbGQoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAg
IHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rf
c3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5CdWlsZCgpKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLTExJykKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCAnLS1wbGF0Zm9ybT1pb3MtMTEnLCAn
LS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J0RlbGV0ZWQgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAg
ICBzZWxmLnNldHVwU3RlcChDbGVhbkJ1aWxkKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yLTExJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2NsZWFuLWJ1aWxkJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvci0xMScsICctLWRl
YnVnJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNo
ZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAg
ICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxV
UkUsIHN0YXRlX3N0cmluZz0nRGVsZXRlZCBXZWJLaXRCdWlsZCBkaXJlY3RvcnkgKGZhaWx1cmUp
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENsZWFuVXBH
aXRJbmRleExvY2soQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0g
ICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVm
IHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5VcEdpdElu
ZGV4TG9jaygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
dGltZW91dD0xMjAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3JtJywgJy1mJywgJy5naXQvaW5kZXgu
bG9jayddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVf
c3RyaW5nPSdEZWxldGVkIC5naXQvaW5kZXgubG9jaycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1
blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzc193aW5kb3dzKHNlbGYpOgotICAgICAgICBz
ZWxmLnNldHVwU3RlcChDbGVhblVwR2l0SW5kZXhMb2NrKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3BsYXRmb3JtJywgJ3dpbicpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncm0nLCAnLWYn
LCAnLmdpdC9pbmRleC5sb2NrJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0RlbGV0ZWQgLmdpdC9pbmRleC5sb2NrJykKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dpbmNhaXJvKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDbGVhblVwR2l0SW5kZXhMb2NrKCkpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ3dpbmNhaXJvJykKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydkZWwnLCAnLmdpdFxpbmRleC5sb2NrJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0RlbGV0ZWQgLmdpdC9pbmRleC5s
b2NrJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWls
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDbGVhblVwR2l0SW5kZXhMb2NrKCkp
Ci0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RT
aGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEy
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncm0nLCAnLWYnLCAnLmdpdC9pbmRleC5sb2NrJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
c3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAgICsgMSwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRGVsZXRlZCAuZ2l0L2luZGV4LmxvY2sgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdEluc3RhbGxHdGtEZXBlbmRlbmNpZXMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVy
biBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vz
cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoSW5zdGFsbEd0a0RlcGVuZGVuY2llcygp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEluc3RhbGxHdGtEZXBlbmRlbmNpZXMuaGFsdE9uRmFp
bHVyZSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVy
bCcsICdUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicycsICctLXJlbGVhc2UnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0n
VXBkYXRlZCBndGsgZGVwZW5kZW5jaWVzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChJ
bnN0YWxsR3RrRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZp
Z3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW5zdGFsbEd0
a0RlcGVuZGVuY2llcy5oYWx0T25GYWlsdXJlLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0
ay1saWJzJywgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGVycm9y
LicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J1VwZGF0ZWQgZ3RrIGRlcGVuZGVuY2ll
cyAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBU
ZXN0SW5zdGFsbFdwZURlcGVuZGVuY2llcyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRl
c3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVz
c2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAg
ZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChJbnN0YWxsV3BlRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Nv
bmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW5zdGFs
bFdwZURlcGVuZGVuY2llcy5oYWx0T25GYWlsdXJlLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtp
dHdwZS1saWJzJywgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdVcGRhdGVkIHdwZSBkZXBlbmRlbmNpZXMnKQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6
Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChJbnN0YWxsV3BlRGVwZW5kZW5jaWVzLmhhbHRPbkZhaWx1cmUsIFRy
dWUpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9v
bHMvU2NyaXB0cy91cGRhdGUtd2Via2l0d3BlLWxpYnMnLCAnLS1yZWxlYXNlJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8n
LCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmlu
Zz0nVXBkYXRlZCB3cGUgZGVwZW5kZW5jaWVzIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RDb21waWxlV2ViS2l0KEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
JywgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAg
KyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VT
Uywgc3RhdGVfc3RyaW5nPSdDb21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfZ3RrKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChDb21waWxlV2ViS2l0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Bs
YXRmb3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScs
ICdndGsnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVh
c2UnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rv
b2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0JywgJy0tcmVsZWFzZScsICctLWd0ayddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdDb21waWxl
ZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0
X3N1Y2Nlc3Nfd3BlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21waWxlV2ViS2l0
KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ3dwZScpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICd3cGUnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0
JywgJy0tcmVsZWFzZScsICctLXdwZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdDb21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAg
IHNlbGYuc2V0dXBTdGVwKENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCcsICctLWRlYnVn
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxs
LmxvZygnc3RkaW8nLCBzdGRvdXQ9JzEgZXJyb3IgZ2VuZXJhdGVkLicpCi0gICAgICAgICAgICAr
IDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZhaWxlZCB0byBjb21waWxlIFdlYktpdCcpCi0gICAgICAgIHJldHVy
biBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc2tpcF9mb3JfcmV2ZXJ0X3BhdGNoZXNf
b25fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21waWxlV2Vi
S2l0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ0NvbW1pdC1R
dWV1ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcn
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdyZXZlcnQnLCBUcnVlKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNLSVBQRUQsIHN0YXRlX3N0cmluZz0nQ29tcGlsZWQgV2Vi
S2l0IChza2lwcGVkKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNz
IFRlc3RDb21waWxlV2ViS2l0V2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxv
bmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0K
LSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0
dXBTdGVwKENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdwYXRjaEZhaWxlZFRvQnVpbGQnLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Jywg
Jy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAw
LAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywg
c3RhdGVfc3RyaW5nPSdDb21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0
Y2hGYWlsZWRUZXN0cycsIFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQnLCAnLS1kZWJ1ZyddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2co
J3N0ZGlvJywgc3Rkb3V0PScxIGVycm9yIGdlbmVyYXRlZC4nKQotICAgICAgICAgICAgKyAyLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3Rh
dGVfc3RyaW5nPSdGYWlsZWQgdG8gY29tcGlsZSBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3NraXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0
dXBTdGVwKENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVj
dEhpZGRlbihUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNLSVBQRUQs
IHN0YXRlX3N0cmluZz0nQ29tcGlsZWQgV2ViS2l0IChza2lwcGVkKScpCi0gICAgICAgIHJldHVy
biBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RBbmFseXplQ29tcGlsZVdlYktpdFJlc3Vs
dHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYg
c2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIEFu
YWx5emVDb21waWxlV2ViS2l0UmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9idWlsZF9mYWlsdXJlID0g
bGFtYmRhIHNlbGY6IE5vbmUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9wYXRjaF93aXRoX2J1aWxkX2ZhaWx1cmUoc2VsZik6
Ci0gICAgICAgIHByZXZpb3VzX3N0ZXBzID0gWwotICAgICAgICAgICAgbW9ja19zdGVwKENvbXBp
bGVXZWJLaXQoKSwgcmVzdWx0cz1GQUlMVVJFKSwKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21w
aWxlV2ViS2l0V2l0aG91dFBhdGNoKCksIHJlc3VsdHM9U1VDQ0VTUyksCi0gICAgICAgIF0KLSAg
ICAgICAgc2VsZi5zZXR1cFN0ZXAoQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzKCksIHByZXZp
b3VzX3N0ZXBzPXByZXZpb3VzX3N0ZXBzKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRj
aF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J1BhdGNoIDEyMzQgZG9lcyBub3QgYnVpbGQgKGZhaWx1cmUpJykKLSAg
ICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
Z2V0UHJvcGVydHkoJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksICdQ
YXRjaCAxMjM0IGRvZXMgbm90IGJ1aWxkJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYg
dGVzdF9wYXRjaF93aXRoX2J1aWxkX2ZhaWx1cmVfb25fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAg
ICAgICBwcmV2aW91c19zdGVwcyA9IFsKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21waWxlV2Vi
S2l0KCksIHJlc3VsdHM9RkFJTFVSRSksCi0gICAgICAgICAgICBtb2NrX3N0ZXAoQ29tcGlsZVdl
YktpdFdpdGhvdXRQYXRjaCgpLCByZXN1bHRzPVNVQ0NFU1MpLAotICAgICAgICBdCi0gICAgICAg
IHNlbGYuc2V0dXBTdGVwKEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cygpLCBwcmV2aW91c19z
dGVwcz1wcmV2aW91c19zdGVwcykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQn
LCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ2NvbW1p
dC1xdWV1ZScpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3Rh
dGVfc3RyaW5nPSdQYXRjaCAxMjM0IGRvZXMgbm90IGJ1aWxkIChmYWlsdXJlKScpCi0gICAgICAg
IHJjID0gc2VsZi5ydW5TdGVwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFBy
b3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnKSwgJ1BhdGNoIDEyMzQgZG9lcyBub3QgYnVp
bGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2Zp
bmlzaF9zdW1tYXJ5JyksICdQYXRjaCAxMjM0IGRvZXMgbm90IGJ1aWxkJykKLSAgICAgICAgcmV0
dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXRjaF93aXRoX3RydW5rX2ZhaWx1cmUoc2VsZik6Ci0g
ICAgICAgIHByZXZpb3VzX3N0ZXBzID0gWwotICAgICAgICAgICAgbW9ja19zdGVwKENvbXBpbGVX
ZWJLaXQoKSwgcmVzdWx0cz1GQUlMVVJFKSwKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21waWxl
V2ViS2l0V2l0aG91dFBhdGNoKCksIHJlc3VsdHM9RkFJTFVSRSksCi0gICAgICAgIF0KLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzKCksIHByZXZpb3Vz
X3N0ZXBzPXByZXZpb3VzX3N0ZXBzKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nVW5hYmxlIHRvIGJ1aWxkIFdlYktpdCB3aXRob3V0IHBh
dGNoLCByZXRyeWluZyBidWlsZCAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3Ioc2VsZik6
Ci0gICAgICAgIGxvZ3MgPSAnSW4gZmlsZSBpbmNsdWRlZCBmcm9tIFdlYkNvcmUvdW5pZmllZC1z
b3VyY2VzL1VuaWZpZWRTb3VyY2UyNjMuY3BwOjQ6XG5JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tl
bmQuY3BwOjEwODozMDogZXJyb3I6IGRlZmluaXRpb24gb2YgaW1wbGljaXRseSBkZWNsYXJlZCBk
ZXN0cnVjdG9yJwotICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnSW1hZ2VCdWZmZXJJT1N1cmZh
Y2VCYWNrZW5kLmNwcDoxMDg6MzA6IGVycm9yOiBkZWZpbml0aW9uIG9mIGltcGxpY2l0bHkgZGVj
bGFyZWQgZGVzdHJ1Y3RvcicKLSAgICAgICAgb3V0cHV0ID0gQW5hbHl6ZUNvbXBpbGVXZWJLaXRS
ZXN1bHRzKCkuZmlsdGVyX2xvZ3NfY29udGFpbmluZ19lcnJvcihsb2dzKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGV4cGVjdGVkX291dHB1dCwgb3V0cHV0KQotCi0gICAgZGVmIHRlc3RfZmls
dGVyX2xvZ3NfY29udGFpbmluZ19lcnJvcl93aXRoX3Rvb19tYW55X2Vycm9ycyhzZWxmKToKLSAg
ICAgICAgbG9ncyA9ICdFcnJvcjoxXG5FcnJvcjoyXG5lcnJvcjozXG5lcnJvcjo0XG5lcnJvcjo1
XG5yYW5kb20tc3RyaW5nXG5lcnJvcjo2XG5lcnJvcjo3XG5lcnJvcjhcbmVycm9yOjlcbmVycm9y
OjEwXG5lcnJvcjoxMVxuZXJyb3I6MTJcbmVycm9yOjEzJwotICAgICAgICBleHBlY3RlZF9vdXRw
dXQgPSAnZXJyb3I6M1xuZXJyb3I6NFxuZXJyb3I6NVxuZXJyb3I6NlxuZXJyb3I6N1xuZXJyb3I6
OVxuZXJyb3I6MTBcbmVycm9yOjExXG5lcnJvcjoxMlxuZXJyb3I6MTMnCi0gICAgICAgIG91dHB1
dCA9IEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cygpLmZpbHRlcl9sb2dzX2NvbnRhaW5pbmdf
ZXJyb3IobG9ncykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9vdXRwdXQsIG91
dHB1dCkKLQotICAgIGRlZiB0ZXN0X2ZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3Jfd2l0aF9u
b19lcnJvcihzZWxmKToKLSAgICAgICAgbG9ncyA9ICdDb21waWxlQyAvVm9sdW1lcy9EYXRhL3dv
cmtlci9tYWNPUy1Nb2phdmUtUmVsZWFzZS1CdWlsZC1FV1MnCi0gICAgICAgIGV4cGVjdGVkX291
dHB1dCA9ICcnCi0gICAgICAgIG91dHB1dCA9IEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cygp
LmZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3IobG9ncykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZF9vdXRwdXQsIG91dHB1dCkKLQotCi1jbGFzcyBUZXN0Q29tcGlsZUpTQyhC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRV
cChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJu
IHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNz
KHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21waWxlSlNDKCkpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdqc2Mtb25seScpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhw
ZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rp
cicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9idWlsZC1qc2Mn
LCAnLS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAr
IDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNT
LCBzdGF0ZV9zdHJpbmc9J0NvbXBpbGVkIEpTQycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoQ29tcGlsZUpTQygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnanNjLW9ubHknKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywg
J2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcs
ICdUb29scy9TY3JpcHRzL2J1aWxkLWpzYycsICctLWRlYnVnJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9
JzEgZXJyb3IgZ2VuZXJhdGVkLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZhaWxl
ZCB0byBjb21waWxlIEpTQycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3RDb21waWxlSlNDV2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxv
bmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0K
LSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0
dXBTdGVwKENvbXBpbGVKU0NXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgJ2pzYy1vbmx5JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0
Y2hGYWlsZWRUb0J1aWxkJywgJ1RydWUnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1h
bmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjJywgJy0tcmVsZWFzZSdd
LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5n
PSdDb21waWxlZCBKU0MnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVKU0NX
aXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J2pzYy1vbmx5JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdk
ZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9idWlsZC1qc2MnLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScx
IGVycm9yIGdlbmVyYXRlZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQg
dG8gY29tcGlsZSBKU0MnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFz
cyBUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5p
dHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25n
TWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMu
anNvbicKLSAgICAgICAgc2VsZi5qc2NfbWFzbV9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bh
c3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjpmYWxzZSwiYWxsQjNUZXN0c1Bhc3NlZCI6
dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6W10sImFs
bEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxuJycnCi0gICAgICAgIHNlbGYuanNjX2IzX2FuZF9zdHJl
c3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRl
c3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjpmYWxzZSwiYWxsQWlyVGVzdHNQYXNz
ZWQiOnRydWUsImFsbEFwaVRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsi
c3RyZXNzL3dlYWtzZXQtZ2MuanMiXX1cbicnJwotICAgICAgICBzZWxmLmpzY19kZmdfYWlyX2Fu
ZF9zdHJlc3NfdGVzdF9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6ZmFsc2UsImFs
bE1hc21UZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVz
dHNQYXNzZWQiOmZhbHNlLCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1
cmVzIjpbInN0cmVzcy93ZWFrc2V0LWdjLmpzIl19XG4nJycKLSAgICAgICAgc2VsZi5qc2Nfc2lu
Z2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJh
bGxNYXNtVGVzdHNQYXNzZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRl
c3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsic3RyZXNzL3N3aXRjaC1vbi1j
aGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyIl0sImFsbEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxu
JycnCi0gICAgICAgIHNlbGYuanNjX211bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVzID0gJycn
eyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxC
M1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZh
aWx1cmVzIjpbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciIs
InN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlci1uby1jaml0LXZh
bGlkYXRlIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFnZXItamV0dGlz
b24tbm8tY2ppdCIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdl
ciIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlci1uby1jaml0
Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVhZ2VyLW5vLWNqaXQt
YjNvMSIsInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LWIz
bzAiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1p
bmxpbmUtdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwt
bm8tY2ppdC1uby1wdXQtc3RhY2stdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxp
bnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFy
LWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtdmFsaWRhdGUtc2FtcGxpbmctcHJvZmlsZXIiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1jaml0LWNvbGxlY3QtY29udGlu
dW91c2x5Iiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC12YWxp
ZGF0ZS1waGFzZXMiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1mdGwi
XSwiYWxsQXBpVGVzdHNQYXNzZWQiOnRydWV9XG4nJycKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0
VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4g
c2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmLCBw
bGF0Zm9ybT1Ob25lLCBmdWxsUGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAg
ICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpKQotICAgICAgICBz
ZWxmLnByZWZpeCA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMucHJlZml4Ci0gICAgICAgIGlmIHBs
YXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9y
bSkKLSAgICAgICAgaWYgZnVsbFBsYXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgZnVsbFBsYXRmb3JtKQotICAgICAgICBpZiBjb25maWd1cmF0aW9u
OgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3Vy
YXRpb24pCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAocGxhdGZvcm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBj
b25maWd1cmF0aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycs
ICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVz
dHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbW90
ZV9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZvcm09J2pz
Yy1vbmx5JywgZnVsbFBsYXRmb3JtPSdqc2Mtb25seScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2Un
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdyZW1vdGVzJywgJ3JlbW90ZS1tYWNoaW5lcy5q
c29uJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdU
b29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0t
bm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5h
bWUpLCAnLS1yZWxlYXNlJywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1tYWNoaW5lcy5q
c29uJywgJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0t
bm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcsICctLWpzYy1v
bmx5J10sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpz
b25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmln
dXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNv
bmZpZ3VyYXRpb249J2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICct
LW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQo
c2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSc5
IGZhaWx1cmVzIGZvdW5kLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2pzY29yZS10
ZXN0cyAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X3NpbmdsZV9zdHJlc3NfdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNv
bmZpZ3VyZVN0ZXAocGxhdGZvcm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEn
LCBjb25maWd1cmF0aW9uPSdkZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUt
dGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXsw
fScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICsgMgotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUpLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3Rh
dGVfc3RyaW5nPSdGb3VuZCAxIGpzYyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBzdHJlc3Mvc3dpdGNo
LW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXInKQotICAgICAgICByYyA9IHNlbGYucnVu
U3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnBy
ZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycpLCBbJ3N0cmVzcy9zd2l0Y2gtb24tY2hhci1s
bGludC1yb3BlLmpzLmRmZy1lYWdlciddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
Z2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIE5vbmUpCi0gICAg
ICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfbG90X29mX3N0cmVzc190ZXN0X2ZhaWx1cmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVsbFBs
YXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J2RlYnVnJykKLSAgICAgICAg
c2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtk
aXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFt
ZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3Jp
cHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1m
YXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1k
ZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAyCi0gICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19tdWx0aXBs
ZV9zdHJlc3NfdGVzdF9mYWlsdXJlcyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDE0IGpzYyBzdHJlc3Mg
dGVzdCBmYWlsdXJlczogc3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGZnLWVh
Z2VyLCBzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2pp
dC12YWxpZGF0ZSwgc3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFnZXItamV0
dGlzb24tbm8tY2ppdCwgc3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVh
Z2VyLCBzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2pp
dCAuLi4nKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJl
cycpLCBbInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciIsICJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2ppdC12YWxp
ZGF0ZSIsICJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5lYWdlci1qZXR0aXNv
bi1uby1jaml0IiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdl
ciIsICJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2pp
dCIsICJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2pp
dC1iM28xIiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0
LWIzbzAiLCAic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQt
bm8taW5saW5lLXZhbGlkYXRlIiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpz
LmZ0bC1uby1jaml0LW5vLXB1dC1zdGFjay12YWxpZGF0ZSIsICJzdHJlc3Mvc3dpdGNoLW9uLWNo
YXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwgInN0cmVzcy9zd2l0Y2gt
b24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LXZhbGlkYXRlLXNhbXBsaW5nLXByb2Zp
bGVyIiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLm5vLWNqaXQtY29sbGVj
dC1jb250aW51b3VzbHkiLCAic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8t
Y2ppdC12YWxpZGF0ZS1waGFzZXMiLCAic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUu
anMubm8tZnRsIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShz
ZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVyZXMnKSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHJj
Ci0KLSAgICBkZWYgdGVzdF9tYXNtX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmln
dXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNv
bmZpZ3VyYXRpb249J2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0
cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5m
b3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
anNvbicsIHN0ZG91dD1zZWxmLmpzY19tYXNtX2ZhaWx1cmUpLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdKU0MgdGVz
dCBiaW5hcnkgZmFpbHVyZTogdGVzdG1hc20nKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCAr
ICdzdHJlc3NfdGVzdF9mYWlsdXJlcycpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIFsndGVz
dG1hc20nXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9iM19hbmRfc3RyZXNz
X3Rlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3Jt
PSdtYWMnLCBmdWxsUGxhdGZvcm09J21hYy1oaWdoc2llcnJhJywgY29uZmlndXJhdGlvbj0ncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzog
c2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Bl
cmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWls
ZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNv
bkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAg
ICAgICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91
dD1zZWxmLmpzY19iM19hbmRfc3RyZXNzX3Rlc3RfZmFpbHVyZSksCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5k
IDEganNjIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHN0cmVzcy93ZWFrc2V0LWdjLmpzLCBKU0MgdGVz
dCBiaW5hcnkgZmFpbHVyZTogdGVzdGIzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAn
c3RyZXNzX3Rlc3RfZmFpbHVyZXMnKSwgWydzdHJlc3Mvd2Vha3NldC1nYy5qcyddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5
X2ZhaWx1cmVzJyksIFsndGVzdGIzJ10pCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRl
c3RfZGZnX2Fpcl9hbmRfc3RyZXNzX3Rlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKHBsYXRmb3JtPSdqc2Mtb25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHkn
LCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29y
ZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9
ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tanNjLW9ubHkn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMgotICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfZGZnX2Fpcl9hbmRf
c3RyZXNzX3Rlc3RfZmFpbHVyZSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEganNjIHN0cmVzcyB0ZXN0
IGZhaWx1cmU6IHN0cmVzcy93ZWFrc2V0LWdjLmpzLCBKU0MgdGVzdCBiaW5hcnkgZmFpbHVyZXM6
IHRlc3RhaXIsIHRlc3RkZmcnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3Nf
dGVzdF9mYWlsdXJlcycpLCBbJ3N0cmVzcy93ZWFrc2V0LWdjLmpzJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVy
ZXMnKSwgWyd0ZXN0YWlyJywgJ3Rlc3RkZmcnXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQotY2xh
c3MgVGVzdFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0
cyk6Ci0gICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZiwgcGxhdGZvcm09Tm9uZSwgZnVsbFBsYXRm
b3JtPU5vbmUsIGNvbmZpZ3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJl
UnVuSmF2YVNjcmlwdENvcmVUZXN0cygpKQotICAgICAgICBzZWxmLnByZWZpeCA9IFJlUnVuSmF2
YVNjcmlwdENvcmVUZXN0cy5wcmVmaXgKLSAgICAgICAgaWYgcGxhdGZvcm06Ci0gICAgICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsIHBsYXRmb3JtKQotICAgICAgICBpZiBmdWxs
UGxhdGZvcm06Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCBm
dWxsUGxhdGZvcm0pCi0gICAgICAgIGlmIGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgY29uZmlndXJhdGlvbikKLQotICAgIGRlZiB0
ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0n
bWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J3JlbGVh
c2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMn
LCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAn
LS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0
KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAg
ICAgICAgICAgKSArCi0gICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0
czogdGVzdDEsIHRlc3QyJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBk
ZWYgdGVzdF9yZW1vdGVfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KHBsYXRmb3JtPSdqc2Mtb25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHknLCBjb25maWd1cmF0
aW9uPSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmVtb3RlcycsICdyZW1v
dGUtbWFjaGluZXMuanNvbicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlf
ZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMn
LCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9y
bWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1jb25maWctZmls
ZT1yZW1vdGUtbWFjaGluZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8tdGVzdGFpcics
ICctLW5vLXRlc3RiMycsICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywgJy0tbWVtb3J5
LWxpbWl0ZWQnLCAnLS1qc2Mtb25seSddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
KSArCi0gICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0OiB0ZXN0bWFz
bScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5KU0NU
ZXN0c1dpdGhvdXRQYXRjaChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRy
dWUKLSAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKLSAgICAg
ICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5KU0NUZXN0c1dpdGhv
dXRQYXRjaCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnanNj
LW9ubHknKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVh
c2UnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rv
b2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1u
by1mYWlsLWZhc3QnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFt
ZSksICctLXJlbGVhc2UnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNv
bic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nanNjb3JlLXRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCgpKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnanNjLW9ubHknKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9
Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PSc5IGZhaWx1cmVzIGZvdW5kLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J2pzY29yZS10ZXN0cyAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotCi1jbGFzcyBUZXN0QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0
aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0
ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFy
RG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAg
c2VsZi5zZXR1cFN0ZXAoQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtd
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVy
ZXMnLCBbXSkKLSAgICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9m
bGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUpT
Q1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJk
YSBzZWxmLCB0ZXN0OiBOb25lCi0KLSAgICBkZWYgdGVzdF9zaW5nbGVfbmV3X3N0cmVzc19mYWls
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJv
ci5qcy5ieXRlY29kZS1jYWNoZSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVy
dW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5ieXRlY29k
ZS1jYWNoZSddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0
YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHN0cmVzcy9m
b3JjZS1lcnJvci5qcy5ieXRlY29kZS1jYWNoZSAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfYmluYXJ5X2ZhaWx1cmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdG
b3VuZCAxIG5ldyBKU0MgYmluYXJ5IGZhaWx1cmU6IHRlc3RtYXNtIChmYWlsdXJlKScpCi0gICAg
ICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfbmV3X3N0
cmVzc19mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3R7fScu
Zm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMwKV0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkg
Zm9yIGkgaW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDMwIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFp
bHVyZXM6IHRlc3QxLCB0ZXN0MCwgdGVzdDMsIHRlc3QyLCB0ZXN0NSwgdGVzdDQsIHRlc3Q3LCB0
ZXN0NiwgdGVzdDksIHRlc3Q4IC4uLiAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX25ld19iaW5hcnlfZmFpbHVyZShzZWxm
KToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nLCAndGVzdGFpcicsICd0ZXN0YjMn
LCAndGVzdGRmZycsICd0ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19y
ZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywg
J3Rlc3RkZmcnLCAndGVzdGFwaSddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0
PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgNSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlczog
dGVzdGIzLCB0ZXN0bWFzbSwgdGVzdGFwaSwgdGVzdGRmZywgdGVzdGFpciAoZmFpbHVyZSknKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X25ld19zdHJlc3Nf
YW5kX2JpbmFyeV9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2Vz
Ni55YW1sL2VzNi9TZXRfaXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsn
ZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20n
XSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJp
bmc9J0ZvdW5kIDEgbmV3IEpTQyBiaW5hcnkgZmFpbHVyZTogdGVzdG1hc20sIEZvdW5kIDEgbmV3
IEpTQyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3Np
bmcuanMuZGVmYXVsdCAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotICAgIGRlZiB0ZXN0X3N0cmVzc19mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2Zv
cmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2JpbmFyeV9mYWlsdXJlX29uX2NsZWFu
X3RyZWUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RkZmcnXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGRmZydd
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVy
ZXMnLCBbJ3Rlc3RkZmcnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUND
RVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N0cmVzc19hbmRfYmluYXJ5X2ZhaWx1cmVfb25f
Y2xlYW5fdHJlZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9l
czYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwv
ZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgWyd0
ZXN0YWlyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9mbGFreV9zdHJlc3NfYW5kX2JpbmFyeV9mYWlsdXJlcyhzZWxm
KToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVm
YXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywg
Wyd0ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywg
c3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVu
U3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9zdHJlc3NfZmFpbHVy
ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVz
JywgWyd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUs
IHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHRlc3Qy
IChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRl
c3RfZmxha3lfYW5kX2NvbnNpc3RlbnRfZmFpbHVyZXNfd2l0aF9jbGVhbl90cmVlX2ZhaWx1cmVz
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycs
IFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3Rz
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bldlYktp
dFRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
ZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAg
ICBzZWxmLmpzb25GaWxlTmFtZSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5q
c29uJwotICAgICAgICBzZWxmLnJlc3VsdHNfanNvbl9yZWdyZXNzaW9ucyA9ICcnJ0FERF9SRVNV
TFRTKHsidGVzdHMiOnsiaW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJJ
bmRleGVkREIiOnsiaW50ZXJsZWF2ZWQtY3Vyc29ycy1sYXJnZS5odG1sIjp7InJlcG9ydCI6IlJF
R1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ3YXNtIjp7Impz
YXBpIjp7ImludGVyZmFjZS5hbnkuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9LCJpbnN0YW5jZSI6eyJjb25zdHJ1Y3Rvci1iYWQt
aW1wb3J0cy5hbnkuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNT
IiwiYWN0dWFsIjoiVEVYVCJ9fSwiZ2xvYmFsIjp7ImNvbnN0cnVjdG9yLmFueS5odG1sIjp7InJl
cG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn0sImNv
bnN0cnVjdG9yLmFueS53b3JrZXIuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0
ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9LCJ0b1N0cmluZy5hbnkuaHRtbCI6eyJyZXBvcnQi
OiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwiY29uc3Ry
dWN0b3IiOnsiaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55Lmh0bWwiOnsicmVwb3J0IjoiUkVH
UkVTU0lPTiIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifSwiaW5zdGFudGlhdGUt
YmFkLWltcG9ydHMuYW55Lndvcmtlci5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBl
Y3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJpbnRlcmZhY2UuYW55Lndvcmtlci5odG1s
Ijp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhU
In19fX19LCJibGluayI6eyJzdG9yYWdlIjp7ImluZGV4ZWRkYiI6eyJibG9iLXZhbGlkLWJlZm9y
ZS1jb21taXQuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwi
YWN0dWFsIjoiVElNRU9VVCIsImhhc19zdGRlcnIiOnRydWV9fX19fX0sInNraXBwZWQiOjIzMjU2
LCJudW1fcmVncmVzc2lvbnMiOjEwLCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQiOnRy
dWUsIm51bV9taXNzaW5nIjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS93b3Jr
ZXIvaU9TLTEyLVNpbXVsYXRvci1XSzItVGVzdHMtRVdTL2J1aWxkL0xheW91dFRlc3RzIiwidmVy
c2lvbiI6NCwibnVtX3Bhc3NlcyI6MzIwNTYsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJk
YXRlIjoiMDY6MjFBTSBvbiBKdWx5IDE1LCAyMDE5IiwiaGFzX3ByZXR0eV9wYXRjaCI6dHJ1ZSwi
Zml4YWJsZSI6MjMyNjcsIm51bV9mbGFreSI6MCwidXNlc19leHBlY3RhdGlvbnNfZmlsZSI6dHJ1
ZX0pOwotICAgICAgICAnJycKLSAgICAgICAgc2VsZi5yZXN1bHRzX2pzb25fZmxha2VzID0gJycn
QUREX1JFU1VMVFMoeyJ0ZXN0cyI6eyJodHRwIjp7InRlc3RzIjp7IndvcmtlcnMiOnsic2Vydmlj
ZSI6eyJzZXJ2aWNlLXdvcmtlci1yZXNvdXJjZS10aW1pbmcuaHR0cHMuaHRtbCI6eyJyZXBvcnQi
OiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyIsImhhc19z
dGRlcnIiOnRydWV9fX0sInhtbGh0dHByZXF1ZXN0Ijp7InBvc3QtY29udGVudC10eXBlLWRvY3Vt
ZW50Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJU
SU1FT1VUIFBBU1MifX19fSwiaW1wb3J0ZWQiOnsiYmxpbmsiOnsic3RvcmFnZSI6eyJpbmRleGVk
ZGIiOnsiYmxvYi12YWxpZC1iZWZvcmUtY29tbWl0Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJl
eHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIFBBU1MiLCJoYXNfc3RkZXJyIjp0cnVl
fX19LCJmYXN0Ijp7InRleHQiOnsiaW50ZXJuYXRpb25hbCI6eyJyZXBhaW50LWdseXBoLWJvdW5k
cy5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiSU1B
R0UgUEFTUyIsInJlZnRlc3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDh9
fX19fX19LCJza2lwcGVkIjoxMzE3NiwibnVtX3JlZ3Jlc3Npb25zIjowLCJvdGhlcl9jcmFzaGVz
Ijp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2Rp
ciI6Ii9Wb2x1bWVzL0RhdGEvd29ya2VyL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9i
dWlsZC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTg1LCJwaXhlbF90
ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjA2OjU0QU0gb24gSnVseSAxNywgMjAxOSIsImhh
c19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjU1MzU2LCJudW1fZmxha3kiOjQsInVzZXNf
ZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0gICAgICAgIHNlbGYucmVz
dWx0c19qc29uX21peF9mbGFrZXNfYW5kX3JlZ3Jlc3Npb24gPSAnJydBRERfUkVTVUxUUyh7InRl
c3RzIjp7Imh0dHAiOnsidGVzdHMiOnsiSW5kZXhlZERCIjp7ImNvbGxlY3QtSURCLW9iamVjdHMu
aHR0cHMuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6
IlRFWFQgUEFTUyJ9fSwieG1saHR0cHJlcXVlc3QiOnsib24tbmV0d29yay10aW1lb3V0LWVycm9y
LWR1cmluZy1wcmVmbGlnaHQuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFT
UyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyJ9fX19LCJ0cmFuc2l0aW9ucyI6eyJsZW5ndGhzaXpl
LXRyYW5zaXRpb24tdG8tZnJvbS1hdXRvLmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3Rl
ZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIFBBU1MifX0sImltcG9ydGVkIjp7ImJsaW5rIjp7
InN0b3JhZ2UiOnsiaW5kZXhlZGRiIjp7ImJsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC5odG1sIjp7
InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVElNRU9VVCBQQVNT
IiwiaGFzX3N0ZGVyciI6dHJ1ZX19fX19LCJmYXN0Ijp7InRleHQiOnsiZm9udC13ZWlnaHQtZmFs
bGJhY2suaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6
IlRJTUVPVVQgUEFTUyIsImhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfX0s
InNjcm9sbGluZyI6eyJpb3MiOnsicmVjb25jaWxlLWxheWVyLXBvc2l0aW9uLXJlY3Vyc2l2ZS5o
dG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJU
RVhUIn19fX19LCJza2lwcGVkIjoxMzE3NCwibnVtX3JlZ3Jlc3Npb25zIjoxLCJvdGhlcl9jcmFz
aGVzIjp7fSwiaW50ZXJydXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3Rz
X2RpciI6Ii9Wb2x1bWVzL0RhdGEvd29ya2VyL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVX
Uy9idWlsZC9MYXlvdXRUZXN0cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTU4LCJwaXhl
bF90ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjExOjI4QU0gb24gSnVseSAxNiwgMjAxOSIs
Imhhc19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjU1MzI5LCJudW1fZmxha3kiOjUsInVz
ZXNfZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0KLSAgICAgICAgc2Vs
Zi5yZXN1bHRzX2pzb25fd2l0aF9uZXdsaW5lcyA9ICcnJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsi
aHR0cCI6eyJ0ZXN0cyI6eyJJbmRleGVkREIiOnsiY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5o
dG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQ
QVNTIn19LCJ4bWxodHRwcmVxdWVzdCI6eyJvbi1uZXR3b3JrLXRpbWVvdXQtZXJyb3ItZHVyaW5n
LXByZWZsaWdodC5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0
dWFsIjoiVElNRU9VVCBQQVNTIn19fX0sInRyYW5zaXRpb25zIjp7Imxlbmd0aHNpemUtdHJhbnMK
LWl0aW9uLXRvLWZyb20tYXV0by5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQ
QVNTIiwiYWN0dWFsIjoiVElNRU9VVCBQQVNTIn19LCJpbXBvcnRlZCI6eyJibGluayI6eyJzdG9y
YWdlIjp7ImluZGV4ZWRkYiI6eyJibG9iLXZhbGlkLWJlZm9yZS1jb21taXQuaHRtbCI6eyJyZXBv
cnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyIsImhh
c19zdGRlcnIiOnRydWV9fX19fSwiZmFzdCI6eyJ0ZXh0Ijp7ImZvbnQtd2VpZ2h0LWZhbGxiYWNr
Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1F
T1VUIFBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJzY3Jv
bGxpbmciOnsiaW9zIjp7InJlY29uY2lsZS1sYXllci1wb3NpdGlvbi1yZWN1cnNpdmUuaHRtbCI6
eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9
fX19fSwic2tpcHBlZCI6MTMxNzQsIm51bV9yZWdyZXNzaW9ucyI6MSwib3RoZXJfY3Jhc2hlcyI6
e30sImludGVycnVwdGVkIjpmYWxzZSwibnVtX21pc3NpbmciOjAsImxheW91dF90ZXN0c19kaXIi
OiIvVm9sdW1lcy9EYXRhL3dvcmtlci9pT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MvYnVp
bGQvTGF5b3V0VGVzCi10cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTU4LCJwaXhlbF90
ZXN0c19lbmFibGVkIjpmYWxzZSwiZGF0ZSI6IjExOjI4QU0gb24gSnVseSAxNiwgMjAxOSIsImhh
c19wcmV0dHlfcGF0Y2giOnRydWUsImZpeGFibGUiOjU1MzI5LCJudW1fZmxha3kiOjUsInVzZXNf
ZXhwZWN0YXRpb25zX2ZpbGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0KLSAgICAgICAgc2VsZi5y
ZXN1bHRzX3dpdGhfbWlzc2luZ19yZXN1bHRzID0gJycnQUREX1JFU1VMVFMoeyJ0ZXN0cyI6eyJo
dHRwIjp7IndwdCI6eyJjc3MiOnsiY3NzLWhpZ2hsaWdodC1hcGkiOnsiaGlnaGxpZ2h0LWltYWdl
LWV4cGVjdGVkLW1pc21hdGNoZWQuaHRtbCI6eyJyZXBvcnQiOiJNSVNTSU5HIiwiZXhwZWN0ZWQi
OiJQQVNTIiwiaXNfbWlzc2luZ190ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIn0sImhpZ2hs
aWdodC1pbWFnZS5odG1sIjp7InJlcG9ydCI6Ik1JU1NJTkciLCJleHBlY3RlZCI6IlBBU1MiLCJp
c19taXNzaW5nX3RleHQiOnRydWUsImFjdHVhbCI6Ik1JU1NJTkcifX19fX19LCAiaW50ZXJydXB0
ZWQiOmZhbHNlfSk7Ci0gICAgICAgICcnJwotCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
dGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAgIHNlbGYucHJvcGVy
dHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9s
aW1pdCcKLSAgICAgICAgc2VsZi5wcm9wZXJ0eV9mYWlsdXJlcyA9ICdmaXJzdF9ydW5fZmFpbHVy
ZXMnCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNp
bXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5
dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9s
ZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10
ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWls
dXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRlc3Rz
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF93YXJuaW5n
cyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3InKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmls
ZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4t
d2Via2l0LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1u
ZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsICctLXJlbGVhc2UnLCAn
LS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0
LWxvZ2dpbmcnLCAnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXMnLCAnMzAnLCAnLS1za2lwLWZhaWxp
bmctdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMAot
ICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1VuZXhwZWN0
ZWQgZmxha2luZXNzOiB0aW1lb3V0cyAoMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGltcG9ydGVkL2JsaW5rL3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1p
dC5odG1sIFsgVGltZW91dCBQYXNzIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
b3JhZ2UvaW5kZXhlZGRiL21vZGVybi9kZWxldGVpbmRleC0yLmh0bWwgWyBUaW1lb3V0IFBhc3Mg
XScnJyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1XQVJO
SU5HUywgc3RhdGVfc3RyaW5nPScyIGZsYWtlcycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0gICAgZGVmIHRlc3Rfc2tpcF9mb3JfcmV2ZXJ0X3BhdGNoZXNfb25fY29tbWl0X3F1
ZXVlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Jl
dmVydCcsIFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U0tJUFBFRCwg
c3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKHNraXBwZWQpJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9za2lwX2Zvcl9tYWNfd2syX3Bhc3NlZF9wYXRj
aF9vbl9jb21taXRfcXVldWUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3Bhc3NlZF9tYWNfd2syJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1TS0lQUEVELCBzdGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cyAoc2tpcHBlZCknKQotICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3Jlc3VsdHNfanNv
bl9yZWdyZXNzaW9uKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBz
ZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0
cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0t
cmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAn
LS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICct
LXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1z
ZWxmLnJlc3VsdHNfanNvbl9yZWdyZXNzaW9ucyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cyAo
ZmFpbHVyZSknKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWlsdXJlX2xp
bWl0KSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNl
bGYucHJvcGVydHlfZmFpbHVyZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaW50ZXJsZWF2ZWQtY3Vyc29y
cy1sYXJnZS5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55Lmh0bWwiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy93YXNtL2pzYXBpL2luc3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5odG1sIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9nbG9iYWwvY29uc3RydWN0b3IuYW55Lmh0bWwiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNt
L2pzYXBpL2dsb2JhbC9jb25zdHJ1Y3Rvci5hbnkud29ya2VyLmh0bWwiLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pz
YXBpL2dsb2JhbC90b1N0cmluZy5hbnkuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNl
LmFueS53b3JrZXIuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlh
dGUtYmFkLWltcG9ydHMuYW55Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2lu
c3RhbnRpYXRlLWJhZC1pbXBvcnRzLmFueS53b3JrZXIuaHRtbCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJpbXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlk
LWJlZm9yZS1jb21taXQuaHRtbCJdKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiB0ZXN0
X3BhcnNlX3Jlc3VsdHNfanNvbl9mbGFrZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2lt
dWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxl
YXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2Zp
bGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0
aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0t
bm8tc2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xk
LXJlc3VsdHMnLCAnLS1yZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRl
c3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1
cmVzJywgJzMwJywgJy0tc2tpcC1mYWlsaW5nLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdq
c29uJywgc3Rkb3V0PXNlbGYucmVzdWx0c19qc29uX2ZsYWtlcyksCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3Nl
ZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWls
dXJlX2xpbWl0KSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9w
ZXJ0eShzZWxmLnByb3BlcnR5X2ZhaWx1cmVzKSwgW10pCi0gICAgICAgIHJldHVybiByYwotCi0g
ICAgZGVmIHRlc3RfcGFyc2VfcmVzdWx0c19qc29uX2ZsYWtlc19hbmRfcmVncmVzc2lvbnMoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1l
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tc2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRl
c3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLCAnLS1yZWxlYXNlJywgJy0tcmVz
dWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dn
aW5nJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzJywgJzMwJywgJy0tc2tpcC1mYWlsaW5nLXRl
c3RzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDIKLSAgICAg
ICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYucmVzdWx0c19qc29u
X21peF9mbGFrZXNfYW5kX3JlZ3Jlc3Npb24pLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZh
aWx1cmUpJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcm9wZXJ0eV9leGNlZWRfZmFpbHVyZV9saW1p
dCksIEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2Vs
Zi5wcm9wZXJ0eV9mYWlsdXJlcyksIFsnZmFzdC9zY3JvbGxpbmcvaW9zL3JlY29uY2lsZS1sYXll
ci1wb3NpdGlvbi1yZWN1cnNpdmUuaHRtbCddKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRl
ZiB0ZXN0X3BhcnNlX3Jlc3VsdHNfanNvbl93aXRoX25ld2xpbmVzKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3Vy
YXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAn
LS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5
JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQt
YWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVj
dFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLnJlc3VsdHNfanNvbl93aXRoX25ld2xpbmVz
KSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUs
IHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3RzIChmYWlsdXJlKScpCi0gICAgICAgIHJjID0gc2Vs
Zi5ydW5TdGVwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNl
bGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJvcGVydHlfZmFpbHVyZXMpLCBbJ2Zh
c3Qvc2Nyb2xsaW5nL2lvcy9yZWNvbmNpbGUtbGF5ZXItcG9zaXRpb24tcmVjdXJzaXZlLmh0bWwn
XSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZXN1bHRzX2pzb25f
d2l0aF9taXNzaW5nX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9y
JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykK
LSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsn
anNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywg
J1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tc2hv
dy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJlc3Vs
dHMnLCAnLS1yZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVz
dWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzJywg
JzMwJywgJy0tc2tpcC1mYWlsaW5nLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICArIDIKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywg
c3Rkb3V0PXNlbGYucmVzdWx0c193aXRoX21pc3NpbmdfcmVzdWx0cyksCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2xh
eW91dC10ZXN0cyAoZmFpbHVyZSknKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2Vl
ZF9mYWlsdXJlX2xpbWl0KSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5n
ZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2ZhaWx1cmVzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICBbJ2h0dHAvd3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtaW1hZ2UtZXhw
ZWN0ZWQtbWlzbWF0Y2hlZC5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHAv
d3B0L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtaW1hZ2UuaHRtbCddKQotICAgICAg
ICByZXR1cm4gcmMKLQotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZXJyb3Ioc2VsZik6Ci0gICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQ
bGF0Zm9ybScsICdtYWMtaGlnaHNpZXJyYScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Nv
bmZpZ3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywg
Jy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRz
JywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsICctLWRlYnVnJywgJy0tcmVzdWx0cy1kaXJlY3Rv
cnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywgICctLWV4
aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAg
ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGVycm9yLicpCi0gICAgICAgICAgICArIDI1NCwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9z
dHJpbmc9J2xheW91dC10ZXN0cyAocmV0cnkpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNp
bXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dm
aWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5
dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9s
ZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10
ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICAnLS1leGl0LWFmdGVyLW4tZmFp
bHVyZXMnLCAnMzAnLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0n
OSBmYWlsdXJlcyBmb3VuZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQt
dGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBk
ZWYgdGVzdF9zdWNjZXNzX3dwdF9pbXBvcnRfYm90KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZp
Z3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9z
LXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAn
cmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2F1dGhvcicsICd3ZWJr
aXQtd3B0LWltcG9ydC1ib3RAaWdhbGlhLmNvbScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0
LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3Vs
dHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2lu
ZycsICdpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVz
dHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0UmVSdW5X
ZWJLaXRUZXN0cyhUZXN0UnVuV2ViS2l0VGVzdHMpOgotICAgIGRlZiBjb25maWd1cmVTdGVwKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSZVJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAg
IHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnc2Vjb25kX3Jlc3VsdHNfZXhj
ZWVkX2ZhaWx1cmVfbGltaXQnCi0gICAgICAgIHNlbGYucHJvcGVydHlfZmFpbHVyZXMgPSAnc2Vj
b25kX3J1bl9mYWlsdXJlcycKLSAgICAgICAgUmVSdW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zv
cl9mbGFreV9mYWlsdXJlID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLQotICAgIGRlZiB0ZXN0
X2ZsYWt5X2ZhaWx1cmVzX2luX2ZpcnN0X3J1bihzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1
cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1z
aW11bGF0b3InKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3Jl
bGVhc2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBb
J3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1u
by1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAn
LS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5
JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQt
YWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQg
bGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknKSwgJ0ZvdW5kIGZs
YWt5IHRlc3RzOiB0ZXN0MSwgdGVzdDInKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBU
ZXN0UnVuV2ViS2l0VGVzdHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVu
aXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9u
Z01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2xheW91dC10ZXN0
LXJlc3VsdHMvZnVsbF9yZXN1bHRzLmpzb24nCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
dGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNoKCkpCi0gICAgICAg
IHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnY2xlYW5fdHJlZV9yZXN1bHRz
X2V4Y2VlZF9mYWlsdXJlX2xpbWl0JwotICAgICAgICBzZWxmLnByb3BlcnR5X2ZhaWx1cmVzID0g
J2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJwotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWls
ZGVybmFtZScsICdpT1MtMTMtU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMjMnKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCd3b3JrZXJuYW1lJywgJ2V3czEyNicpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLW5vLXNob3ctcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJy0tcmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWRlYnVnLXJ3dC1sb2dnaW5nJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZhaWxpbmctdGVzdHMn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nbGF5b3V0LXRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBk
ZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24n
OiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9u
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRl
c3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLXNob3ctcmVzdWx0cycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcmVsZWFzZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVz
dC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRlYnVnLXJ3
dC1sb2dnaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWV4aXQtYWZ0
ZXItbi1mYWlsdXJlcycsICczMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3Vu
ZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZhaWx1cmUp
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bldlYktp
dDFUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAg
IGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAg
ICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMu
anNvbicKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRl
YXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5X
ZWJLaXQxVGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J2lvcy0xMScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVi
dWcnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1u
by1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQt
cmVzdWx0cycsICctLWRlYnVnJywgJy0tZHVtcC1yZW5kZXItdHJlZScsICctLXJlc3VsdHMtZGly
ZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICct
LWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgbGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAg
ICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJL
aXQxVGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lv
cy0xMScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhv
bicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5v
LXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1y
ZXN1bHRzJywgJy0tcmVsZWFzZScsICctLWR1bXAtcmVuZGVyLXRyZWUnLCAnLS1yZXN1bHRzLWRp
cmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxvZ2dpbmcnLCAn
LS1leGl0LWFmdGVyLW4tZmFpbHVyZXMnLCAnMzAnLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9n
KCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQotICAgICAgICAgICAgKyAyLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3Rh
dGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9za2lwX2Zvcl9yZXZlcnRfcGF0Y2hlc19vbl9jb21t
aXRfcXVldWUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdDFUZXN0cygp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUn
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjJykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3JldmVydCcsIFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9U0tJUFBFRCwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKHNraXBwZWQpJykK
LSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdEFuYWx5emVMYXlv
dXRUZXN0c1Jlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVl
Ci0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAg
ZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Ci0gICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3Vs
dHMuc2VuZF9lbWFpbF9mb3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBOb25l
Ci0gICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4
aXN0aW5nX2ZhaWx1cmUgPSBsYW1iZGEgc2VsZiwgdGVzdDogTm9uZQotICAgICAgICBzZWxmLnNl
dHVwU3RlcChBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQn
LCBGYWxzZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4
Y2VlZF9mYWlsdXJlX2xpbWl0JywgRmFsc2UpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Ns
ZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgW10pCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX2ludHJv
ZHVjZWRfYnlfcGF0Y2goc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsianF1ZXJ5L29mZnNl
dC5odG1sIl0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMn
LCBbImpxdWVyeS9vZmZzZXQuaHRtbCJdKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgdGVzdCBmYWlsdXJlOiBqcXVl
cnkvb2Zmc2V0Lmh0bWwgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
YWlsdXJlcycsIFsianF1ZXJ5L29mZnNldC5odG1sIl0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbImpxdWVyeS9vZmZzZXQuaHRtbCJdKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsianF1ZXJ5L29m
ZnNldC5odG1sIl0pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywg
c3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1
blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxk
X3N1bW1hcnknKSwgJ0ZvdW5kIDEgcHJlLWV4aXN0aW5nIHRlc3QgZmFpbHVyZToganF1ZXJ5L29m
ZnNldC5odG1sJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mbGFreV9hbmRf
Y29uc2lzdGVudF9mYWlsdXJlc193aXRob3V0X2NsZWFuX3RyZWVfZmFpbHVyZXMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1
aWxkZXJuYW1lJywgJ2lPUy0xMy1TaW11bGF0b3ItV0syLVRlc3RzLUVXUycpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVzdDEn
XSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJp
bmc9J0ZvdW5kIDEgbmV3IHRlc3QgZmFpbHVyZTogdGVzdDEgKGZhaWx1cmUpJykKLSAgICAgICAg
cmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJv
cGVydHkoJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksICdGb3VuZCAx
IG5ldyB0ZXN0IGZhaWx1cmU6IHRlc3QxJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYg
dGVzdF9jb25zaXN0ZW50X2ZhaWx1cmVfd2l0aG91dF9jbGVhbl90cmVlX2ZhaWx1cmVzX2NvbW1p
dF9xdWV1ZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVlJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQg
MSBuZXcgdGVzdCBmYWlsdXJlOiB0ZXN0MSAoZmFpbHVyZSknKQotICAgICAgICByYyA9IHNlbGYu
cnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVn
emlsbGFfY29tbWVudF90ZXh0JyksICdGb3VuZCAxIG5ldyB0ZXN0IGZhaWx1cmU6IHRlc3QxJykK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdidWlsZF9maW5pc2hf
c3VtbWFyeScpLCAnRm91bmQgMSBuZXcgdGVzdCBmYWlsdXJlOiB0ZXN0MScpCi0gICAgICAgIHJl
dHVybiByYwotCi0gICAgZGVmIHRlc3RfZmxha3lfYW5kX2luY29uc2lzdGVudF9mYWlsdXJlc193
aXRob3V0X2NsZWFuX3RyZWVfZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJl
U3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsn
dGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9m
YWlsdXJlcycsIFsndGVzdDMnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZsYWt5X2ZhaWx1cmVzX2luX2ZpcnN0
X3J1bihzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgW10pCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQg
bGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknKSwgJyBGb3VuZCBm
bGFreSB0ZXN0czogdGVzdDEsIHRlc3QyJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYg
dGVzdF9mbGFreV9hbmRfaW5jb25zaXN0ZW50X2ZhaWx1cmVzX3dpdGhfY2xlYW5fdHJlZV9mYWls
dXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MyddKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsndGVz
dDEnLCAndGVzdDInLCAndGVzdDMnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICBy
YyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9w
ZXJ0eSgnYnVpbGRfc3VtbWFyeScpLCAnRm91bmQgMyBwcmUtZXhpc3RpbmcgdGVzdCBmYWlsdXJl
czogdGVzdDEsIHRlc3QyLCB0ZXN0MyBGb3VuZCBmbGFreSB0ZXN0czogdGVzdDEsIHRlc3QyLCB0
ZXN0MycpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmxha3lfYW5kX2NvbnNp
c3RlbnRfZmFpbHVyZXNfd2l0aF9jbGVhbl90cmVlX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5f
ZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbJ3Rlc3QxJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2Vk
IGxheW91dCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVm
IHRlc3RfbWlsZGx5X2ZsYWt5X3BhdGNoX3dpdGhfc29tZV90cmVlX3JlZG5lc3NfYW5kX2ZsYWtp
bmVzcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MicsICd0ZXN0
MyddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0
ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1
bl9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInLCAndGVzdDQnXSkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQg
dGVzdHMnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScpLCAnRm91bmQgMyBwcmUtZXhp
c3RpbmcgdGVzdCBmYWlsdXJlczogdGVzdDEsIHRlc3QyLCB0ZXN0NCBGb3VuZCBmbGFreSB0ZXN0
OiB0ZXN0MycpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmlyc3RfcnVuX2V4
Y2VlZF9mYWlsdXJlX2xpbWl0KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xp
bWl0JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVz
JywgIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuYWJsZSB0byBjb25m
aXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1
aWxkIChyZXRyeSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3NlY29uZF9ydW5fZXhjZWVkX2ZhaWx1cmVfbGltaXQoc2VsZik6Ci0gICAgICAgIHNlbGYu
Y29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWls
dXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNl
ZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29u
ZF9ydW5fZmFpbHVyZXMnLCAgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAz
MCldKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJp
bmc9J1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkg
cGF0Y2gsIHJldHJ5aW5nIGJ1aWxkIChyZXRyeSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2NsZWFuX3RyZWVfZXhjZWVkX2ZhaWx1cmVfbGltaXQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFpbHVyZXMnLCAgWyd0
ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuYWJsZSB0byBjb25maXJt
IGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1aWxk
IChyZXRyeSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0
X2NsZWFuX3RyZWVfZXhjZWVkX2ZhaWx1cmVfbGltaXRfd2l0aF90cmlnZ2VyZWRfYnkoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2J1aWxkZXJuYW1lJywgJ2lPUy0xMy1TaW11bGF0b3ItV0syLVRlc3RzLUVXUycpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3RyaWdnZXJlZF9ieScsICdpb3MtMTMtc2ltLWJ1aWxkLWV3cycp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEn
XSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVz
dDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2Vl
ZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5f
dHJlZV9ydW5fZmFpbHVyZXMnLCAgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgw
LCAzMCldKQotICAgICAgICBtZXNzYWdlID0gJ1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFp
bHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1aWxkJwotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz1tZXNzYWdlKQot
ICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5nZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScpLCBtZXNzYWdlKQotICAgICAgICByZXR1cm4g
cmMKLQotICAgIGRlZiB0ZXN0X2NsZWFuX3RyZWVfaGFzX2xvdF9vZl9mYWlsdXJlcyhzZWxmKToK
LSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Zmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9y
IGkgaW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3Jl
c3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBUcnVlKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiBy
YW5nZSgwLCAzMCldKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9m
YWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMjcpXSkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdVbmFi
bGUgdG8gY29uZmlybSBpZiB0ZXN0IGZhaWx1cmVzIGFyZSBpbnRyb2R1Y2VkIGJ5IHBhdGNoLCBy
ZXRyeWluZyBidWlsZCAocmV0cnkpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9jbGVhbl90cmVlX2hhc19zb21lX2ZhaWx1cmVzKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9y
ZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiBy
YW5nZSgwLCAzMCldKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19l
eGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Nl
Y29uZF9ydW5fZmFpbHVyZXMnLCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAs
IDMwKV0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVz
JywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAxMCldKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMzAg
bmV3IHRlc3QgZmFpbHVyZXM6IHRlc3QwLCB0ZXN0MSwgdGVzdDEwLCB0ZXN0MTEsIHRlc3QxMiwg
dGVzdDEzLCB0ZXN0MTQsIHRlc3QxNSwgdGVzdDE2LCB0ZXN0MTcgLi4uIChmYWlsdXJlKScpCi0g
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfY2xlYW5fdHJlZV9o
YXNfbG90X29mX2ZhaWx1cmVzX2FuZF9ub19uZXdfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2Zh
aWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVu
X2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90
cmVlX3J1bl9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwg
MjApXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFy
eScpLCAnRm91bmQgMjAgcHJlLWV4aXN0aW5nIHRlc3QgZmFpbHVyZXM6IHRlc3QwLCB0ZXN0MSwg
dGVzdDEwLCB0ZXN0MTEsIHRlc3QxMiwgdGVzdDEzLCB0ZXN0MTQsIHRlc3QxNSwgdGVzdDE2LCB0
ZXN0MTcgLi4uJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXRjaF9pbnRy
b2R1Y2VzX2xvdF9vZl9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVl
JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVy
ZV9saW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWls
dXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzAwKV0pCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0
JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycs
IFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzAwKV0pCi0gICAgICAgIGZh
aWx1cmVfbWVzc2FnZSA9ICdGb3VuZCAzMDAgbmV3IHRlc3QgZmFpbHVyZXM6IHRlc3QwLCB0ZXN0
MSwgdGVzdDEwLCB0ZXN0MTAwLCB0ZXN0MTAxLCB0ZXN0MTAyLCB0ZXN0MTAzLCB0ZXN0MTA0LCB0
ZXN0MTA1LCB0ZXN0MTA2IC4uLicKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1G
QUlMVVJFLCBzdGF0ZV9zdHJpbmc9ZmFpbHVyZV9tZXNzYWdlICsgJyAoZmFpbHVyZSknKQotICAg
ICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5n
ZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksIGZhaWx1cmVfbWVzc2FnZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3Vt
bWFyeScpLCBmYWlsdXJlX21lc3NhZ2UpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRl
c3RfdW5leHBlY3RlZF9pbmZyYV9pc3N1ZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVT
dGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgW10p
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdVbmV4
cGVjdGVkIGluZnJhc3RydWN0dXJlIGlzc3VlLCByZXRyeWluZyBidWlsZCAocmV0cnkpJykKLSAg
ICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENoZWNrT3V0U3BlY2lm
aWNSZXZpc2lvbihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAg
ICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja091dFNwZWNp
ZmljUmV2aXNpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZXdzX3JldmlzaW9uJywg
JzFhMzQyNWNiOTJkYmNiY2ExMmExMGFhOTUxNGYxYjc3Yzc2ZGMyNicpCi0gICAgICAgIHNlbGYu
ZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgdGltZW91dD0xMjAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnY2hlY2tv
dXQnLCAnMWEzNDI1Y2I5MmRiY2JjYTEyYTEwYWE5NTE0ZjFiNzdjNzZkYzI2J10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0NoZWNrZWQg
b3V0IHJlcXVpcmVkIHJldmlzaW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVj
a091dFNwZWNpZmljUmV2aXNpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZXdzX3Jl
dmlzaW9uJywgJzFhMzQyNWNiOTJkYmNiY2ExMmExMGFhOTUxNGYxYjc3Yzc2ZGMyNicpCi0gICAg
ICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNv
bW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQn
LCAnY2hlY2tvdXQnLCAnMWEzNDI1Y2I5MmRiY2JjYTEyYTEwYWE5NTE0ZjFiNzdjNzZkYzI2J10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZmFpbHVyZScpCi0gICAgICAgICAgICArIDIs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBz
dGF0ZV9zdHJpbmc9J0NoZWNrZWQgb3V0IHJlcXVpcmVkIHJldmlzaW9uIChmYWlsdXJlKScpCi0g
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc2tpcChzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKCkpCi0gICAg
ICAgIHNlbGYuZXhwZWN0SGlkZGVuKFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShy
ZXN1bHQ9U0tJUFBFRCwgc3RhdGVfc3RyaW5nPSdDaGVja2VkIG91dCByZXF1aXJlZCByZXZpc2lv
biAoc2tpcHBlZCknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBU
ZXN0Q2xlYW5Xb3JraW5nRGlyZWN0b3J5KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNz
YWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBk
ZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVw
KCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVw
KENsZWFuV29ya2luZ0RpcmVjdG9yeSgpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1h
bmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9jbGVhbi13ZWJraXQnXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQ2xlYW5l
ZCB3b3JraW5nIGRpcmVjdG9yeScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0g
ICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5X
b3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdCddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rk
b3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
Q2xlYW5lZCB3b3JraW5nIGRpcmVjdG9yeSAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0VXBkYXRlV29ya2luZ0RpcmVjdG9yeShCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxm
KToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYu
c2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYp
OgotICAgICAgICBzZWxmLnNldHVwU3RlcChVcGRhdGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0
cy91cGRhdGUtd2Via2l0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUND
RVNTLCBzdGF0ZV9zdHJpbmc9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnknKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFVwZGF0ZVdvcmtpbmdEaXJlY3RvcnkoKSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0
ZS13ZWJraXQnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhw
ZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicpCi0gICAg
ICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnkgKGZhaWx1
cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdEFwcGx5
UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0KLSAgICAg
ICAgZGVmIG1vY2tfc3RhcnQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgZnJv
bSBidWlsZGJvdC5zdGVwcyBpbXBvcnQgc2hlbGwKLSAgICAgICAgICAgIHJldHVybiBzaGVsbC5T
aGVsbENvbW1hbmQuc3RhcnQoY2xzKQotICAgICAgICBBcHBseVBhdGNoLnN0YXJ0ID0gbW9ja19z
dGFydAotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVh
ckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFwcGx5
UGF0Y2goKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBcHBseVBhdGNoLmZsdW5rT25GYWls
dXJlLCBUcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEFwcGx5UGF0Y2guaGFsdE9uRmFp
bHVyZSwgRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAg
ICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0PTYwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L3N2bi1hcHBseScsICctLWZvcmNlJywgJy5idWlsZGJvdC1kaWZmJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICApICsKLSAgICAgICAgICAgIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0FwcGxpZWQgcGF0Y2gn
KQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFwcGx5UGF0Y2goKSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NjAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5JywgJy0tZm9yY2UnLCAn
LmJ1aWxkYm90LWRpZmYnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicp
ICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21l
KHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkg
cGF0Y2ggdG8gdHJ1bmsnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0Jyks
IE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRf
ZmluaXNoX3N1bW1hcnknKSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVz
dF9mYWlsdXJlX29uX2NvbW1pdF9xdWV1ZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAo
QXBwbHlQYXRjaCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdD
b21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0
JykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9
NjAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5
JywgJy0tZm9yY2UnLCAnLmJ1aWxkYm90LWRpZmYnXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBl
Y3RlZCBmYWlsdXJlLicpICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J3N2bi1hcHBseSBm
YWlsZWQgdG8gYXBwbHkgcGF0Y2ggdG8gdHJ1bmsnKQotICAgICAgICByYyA9IHNlbGYucnVuU3Rl
cCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFf
Y29tbWVudF90ZXh0JyksICdUb29scy9TY3JpcHRzL3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkg
YXR0YWNobWVudCAxMjM0IHRvIHRydW5rLlxuUGxlYXNlIHJlc29sdmUgdGhlIGNvbmZsaWN0cyBh
bmQgdXBsb2FkIGEgbmV3IHBhdGNoLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5n
ZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknKSwgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFw
cGx5IGZhaWxlZCB0byBhcHBseSBwYXRjaCAxMjM0IHRvIHRydW5rJykKLSAgICAgICAgcmV0dXJu
IHJjCi0KLQotY2xhc3MgVGVzdFVuQXBwbHlQYXRjaElmUmVxdWlyZWQoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
dGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRvQnVpbGQnLCBUcnVlKQotICAgICAgICBzZWxmLmV4
cGVjdEhpZGRlbihGYWxzZSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvY2xlYW4td2Via2l0J10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1VuYXBwbGllZCBwYXRj
aCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVy
ZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAg
ICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdCddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2co
J3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0
YXRlX3N0cmluZz0nVW5hcHBsaWVkIHBhdGNoIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc2tpcChzZWxmKToKLSAgICAgICAgc2VsZi5z
ZXR1cFN0ZXAoVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpKQotICAgICAgICBzZWxmLmV4cGVjdEhp
ZGRlbihUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNLSVBQRUQsIHN0
YXRlX3N0cmluZz0nVW5hcHBsaWVkIHBhdGNoIChza2lwcGVkKScpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RDaGVja1BhdGNoUmVsZXZhbmNlKEJ1aWxkU3Rl
cE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYp
OgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5z
ZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbGV2YW50X2pzY19w
YXRjaChzZWxmKToKLSAgICAgICAgQ2hlY2tQYXRjaFJlbGV2YW5jZS5fZ2V0X3BhdGNoID0gbGFt
YmRhIHg6ICdTYW1wbGUgcGF0Y2g7IGZpbGU6IEpTVGVzdHMvJwotICAgICAgICBzZWxmLnNldHVw
U3RlcChDaGVja1BhdGNoUmVsZXZhbmNlKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1
aWxkZXJuYW1lJywgJ0pTQy1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENo
ZWNrUGF0Y2hSZWxldmFuY2UuaGFsdE9uRmFpbHVyZSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChDaGVja1BhdGNoUmVsZXZhbmNlLmZsdW5rT25GYWlsdXJlLCBUcnVlKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2gg
Y29udGFpbnMgcmVsZXZhbnQgY2hhbmdlcycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3RfcmVsZXZhbnRfd2sxX3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVj
a1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmls
ZTogU291cmNlL1dlYktpdExlZ2FjeScKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRj
aFJlbGV2YW5jZSgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdt
YWNPUy1Nb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMtRVdTJykKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1BhdGNoIGNvbnRhaW5zIHJlbGV2
YW50IGNoYW5nZXMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3JlbGV2YW50X2JpZ3N1cl9idWlsZGVyX3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVja1Bh
dGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTog
U291cmNlL3h5eicKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFJlbGV2YW5jZSgp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1CaWdTdXIt
UmVsZWFzZS1CdWlsZC1FV1MnKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNV
Q0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZhbnQgY2hhbmdlcycpCi0g
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfcmVsZXZhbnRfd2lu
ZG93c193azFfcGF0Y2goc2VsZik6Ci0gICAgICAgIENoZWNrUGF0Y2hSZWxldmFuY2UuX2dldF9w
YXRjaCA9IGxhbWJkYSB4OiAnU2FtcGxlIHBhdGNoOyBmaWxlOiBTb3VyY2UvV2ViS2l0TGVnYWN5
JwotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja1BhdGNoUmVsZXZhbmNlKCkpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ1dpbmRvd3MtRVdTJykKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1BhdGNoIGNv
bnRhaW5zIHJlbGV2YW50IGNoYW5nZXMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotICAgIGRlZiB0ZXN0X3JlbGV2YW50X3dlYmtpdHB5X3BhdGNoKHNlbGYpOgotICAgICAgICBD
aGVja1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsg
ZmlsZTogVG9vbHMvU2NyaXB0cy93ZWJraXRweScKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hl
Y2tQYXRjaFJlbGV2YW5jZSgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFt
ZScsICdXZWJLaXRQeS1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZhbnQgY2hhbmdl
cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfcmVsZXZh
bnRfbGlicmFyaWVzX3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9n
ZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTogVG9vbHMvU2NyaXB0cy9s
aWJyYXJpZXMnCi0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENoZWNrUGF0Y2hSZWxldmFuY2UoKSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnV2ViS2l0UHktVGVzdHMt
RVdTJykKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1BhdGNoIGNvbnRhaW5zIHJlbGV2YW50IGNoYW5nZXMnKQotICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3F1ZXVlc193aXRob3V0X3JlbGV2YW5jZV9p
bmZvKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1i
ZGEgeDogJ1NhbXBsZSBwYXRjaCcKLSAgICAgICAgcXVldWVzID0gWydDb21taXQtUXVldWUnLCAn
U3R5bGUtRVdTJywgJ0FwcGx5LVdhdGNoTGlzdC1FV1MnLCAnR1RLLUJ1aWxkLUVXUycsICdHVEst
V0syLVRlc3RzLUVXUycsCi0gICAgICAgICAgICAgICAgICAnaU9TLTEzLUJ1aWxkLUVXUycsICdp
T1MtMTMtU2ltdWxhdG9yLUJ1aWxkLUVXUycsICdpT1MtMTMtU2ltdWxhdG9yLVdLMi1UZXN0cy1F
V1MnLAotICAgICAgICAgICAgICAgICAgJ21hY09TLU1vamF2ZS1SZWxlYXNlLUJ1aWxkLUVXUycs
ICdtYWNPUy1Nb2phdmUtUmVsZWFzZS1XSzItVGVzdHMtRVdTJywgJ21hY09TLU1vamF2ZS1EZWJ1
Zy1CdWlsZC1FV1MnLAotICAgICAgICAgICAgICAgICAgJ1dpbkNhaXJvLUVXUycsICdXUEUtRVdT
JywgJ1dlYktpdFBlcmwtVGVzdHMtRVdTJ10KLSAgICAgICAgZm9yIHF1ZXVlIGluIHF1ZXVlczoK
LSAgICAgICAgICAgIHNlbGYuc2V0dXBTdGVwKENoZWNrUGF0Y2hSZWxldmFuY2UoKSkKLSAgICAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgcXVldWUpCi0gICAgICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2gg
Y29udGFpbnMgcmVsZXZhbnQgY2hhbmdlcycpCi0gICAgICAgICAgICByYyA9IHNlbGYucnVuU3Rl
cCgpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3Rfbm9uX3JlbGV2YW50X3BhdGNo
X29uX3ZhcmlvdXNfcXVldWVzKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9n
ZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaCcKLSAgICAgICAgcXVldWVzID0gWydC
aW5kaW5ncy1UZXN0cy1FV1MnLCAnSlNDLVRlc3RzLUVXUycsICdtYWNPUy1CaWdTdXItUmVsZWFz
ZS1CdWlsZC1FV1MnLAotICAgICAgICAgICAgICAgICAgJ21hY09TLU1vamF2ZS1EZWJ1Zy1XSzEt
VGVzdHMtRVdTJywgJ1NlcnZpY2VzLUVXUycsICdXZWJLaXRQeS1UZXN0cy1FV1MnXQotICAgICAg
ICBmb3IgcXVldWUgaW4gcXVldWVzOgotICAgICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQ
YXRjaFJlbGV2YW5jZSgpKQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5h
bWUnLCBxdWV1ZSkKLSAgICAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVS
RSwgc3RhdGVfc3RyaW5nPSdQYXRjaCBkb2VzblwndCBoYXZlIHJlbGV2YW50IGNoYW5nZXMnKQot
ICAgICAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICByZXR1cm4gcmMKLQotCi1j
bGFzcyBUZXN0QXJjaGl2ZUJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5p
dHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25n
TWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0g
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxk
U3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVw
U3RlcChBcmNoaXZlQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1
bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1
Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdh
cmNoaXZlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0
ZV9zdHJpbmc9J0FyY2hpdmVkIGJ1aWx0IHByb2R1Y3QnKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0
dXBTdGVwKEFyY2hpdmVCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
ZnVsbFBsYXRmb3JtJywgJ21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
b25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3Qt
YXJjaGl2ZScsICctLXBsYXRmb3JtPW1hYy1zaWVycmEnLCAgJy0tZGVidWcnLCAnYXJjaGl2ZSdd
LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsg
MiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUs
IHN0YXRlX3N0cmluZz0nQXJjaGl2ZWQgYnVpbHQgcHJvZHVjdCAoZmFpbHVyZSknKQotICAgICAg
ICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0VXBsb2FkQnVpbHRQcm9kdWN0
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNl
dFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1
cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nl
c3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgpKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjLXNpZXJyYScpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBlY3RI
aWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAg
ICAgICBFeHBlY3QoJ3VwbG9hZEZpbGUnLCBkaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHdvcmtlcnNyYz0nV2ViS2l0QnVpbGQvcmVsZWFzZS56aXAnLCB3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxv
Y2tzaXplPTEwMjQgKiAyNTYsIG1heHNpemU9Tm9uZSwga2VlcHN0YW1wPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlcj1FeHBlY3RSZW1vdGVSZWYo
cmVtb3RldHJhbnNmZXIuRmlsZVdyaXRlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKSkKLSAgICAgICAgICAgICsgRXhwZWN0LmJlaGF2aW9yKHVwbG9hZEZpbGVXaXRo
Q29udGVudHNPZlN0cmluZygnRHVtbXkgemlwIGZpbGUgY29udGVudC4nKSkKLSAgICAgICAgICAg
ICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdFVwbG9hZGVkRmlsZSgncHVibGlj
X2h0bWwvYXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCcpCi0KLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Vw
bG9hZGVkIGJ1aWx0IHByb2R1Y3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFVwbG9h
ZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnbWFjLXNpZXJyYScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24n
LCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4
ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAg
ICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3QoJ3VwbG9hZEZpbGUnLCBkaWN0KAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtlcnNyYz0nV2ViS2l0QnVpbGQv
cmVsZWFzZS56aXAnLCB3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYmxvY2tzaXplPTEwMjQgKiAyNTYsIG1heHNpemU9Tm9uZSwga2VlcHN0
YW1wPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRl
cj1FeHBlY3RSZW1vdGVSZWYocmVtb3RldHJhbnNmZXIuRmlsZVdyaXRlciksCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKLSAgICAgICAgICAgICsgRXhwZWN0LmJlaGF2
aW9yKHVwbG9hZEZpbGVXaXRoQ29udGVudHNPZlN0cmluZygnRHVtbXkgemlwIGZpbGUgY29udGVu
dC4nKSkKLSAgICAgICAgICAgICsgMSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdFVw
bG9hZGVkRmlsZSgncHVibGljX2h0bWwvYXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQtcmVsZWFz
ZS8xMjM0LnppcCcpCi0KLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J0ZhaWxlZCB0byB1cGxvYWQgYnVpbHQgcHJvZHVjdCcpCi0gICAgICAg
IHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3REb3dubG9hZEJ1aWx0UHJvZHVj
dChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0
dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNj
ZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChEb3dubG9hZEJ1aWx0UHJvZHVjdCgp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRv
ci0xMicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnLS1yZWxlYXNlJywgJ2h0dHBzOi8vczMt
dXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVs
YXRvci0xMi14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdEb3dubG9hZGVkIGJ1aWx0IHByb2R1
Y3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1
cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtc2llcnJhJykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0NTYnKQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLWRlYnVnJywgJ2h0dHBzOi8vczMtdXMtd2VzdC0y
LmFtYXpvbmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvbWFjLXNpZXJyYS14ODZfNjQt
ZGVidWcvMTIzNDU2LnppcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUu
JykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0
IHByb2R1Y3QgZnJvbSBTMycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3REb3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVh
ckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
c2VsZi5zZXR1cFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyKCkpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yLTEyJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnYXJjaGl0ZWN0dXJlJywgJ3g4Nl82NCcpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93
bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLXJlbGVhc2UnLCAnaHR0cHM6Ly9ld3MtYnVpbGQud2Vi
a2l0Lm9yZy9hcmNoaXZlcy9pb3Mtc2ltdWxhdG9yLTEyLXg4Nl82NC1yZWxlYXNlLzEyMzQuemlw
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJp
bmc9J0Rvd25sb2FkZWQgYnVpbHQgcHJvZHVjdCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtc2llcnJhJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRj
aF9pZCcsICcxMjM0NTYnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9
WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVj
dCcsICctLWRlYnVnJywgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvYXJjaGl2ZXMvbWFj
LXNpZXJyYS14ODZfNjQtZGVidWcvMTIzNDU2LnppcCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4
cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHRv
IGRvd25sb2FkIGJ1aWx0IHByb2R1Y3QgZnJvbSBidWlsZCBtYXN0ZXInKQotICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0RXh0cmFjdEJ1aWx0UHJvZHVjdChCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChz
ZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNl
bGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPWlvcy1zaW11
bGF0b3InLCAgJy0tcmVsZWFzZScsICdleHRyYWN0J10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0V4dHJhY3RlZCBidWlsdCBwcm9kdWN0
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJl
KHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtc2llcnJhJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMtc2llcnJh
JywgICctLWRlYnVnJywgJ2V4dHJhY3QnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBm
YWlsdXJlLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0V4dHJhY3RlZCBidWlsdCBw
cm9kdWN0IChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3RUcmFuc2ZlclRvUzMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2Ug
PSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0
ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQot
Ci0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVHJh
bnNmZXJUb1MzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdt
YWMtaGlnaHNpZXJyYScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24n
LCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4
ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAg
ICAgICAgc2VsZi5leHBlY3RMb2NhbENvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0TWFzdGVy
U2hlbGxDb21tYW5kKGNvbW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICcuLi9TaGFyZWQvdHJhbnNmZXItYXJjaGl2ZS10by1zMycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcGF0Y2hf
aWQnLCAnMTIzNCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJy0taWRlbnRpZmllcicsICdtYWMtaGlnaHNpZXJyYS14ODZfNjQtcmVsZWFzZScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tYXJjaGl2ZScsICdw
dWJsaWNfaHRtbC9hcmNoaXZlcy9tYWMtaGlnaHNpZXJyYS14ODZfNjQtcmVsZWFzZS8xMjM0Lnpp
cCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdUcmFuc2ZlcnJlZCBhcmNoaXZlIHRvIFMzJykKLSAg
ICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYp
OgotICAgICAgICBzZWxmLnNldHVwU3RlcChUcmFuc2ZlclRvUzMoKSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3ItMTInKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnYXJjaGl0ZWN0dXJlJywgJ3g4Nl82NCcpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLmV4cGVjdExvY2FsQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RNYXN0ZXJTaGVsbENvbW1hbmQoY29tbWFuZD1bJ3B5dGhv
bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uL1No
YXJlZC90cmFuc2Zlci1hcmNoaXZlLXRvLXMzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1wYXRjaF9pZCcsICcxMjM0JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1pZGVudGlmaWVyJywgJ2lvcy1zaW11
bGF0b3ItMTIteDg2XzY0LWRlYnVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnLS1hcmNoaXZlJywgJ3B1YmxpY19odG1sL2FyY2hpdmVzL2lvcy1zaW11
bGF0b3ItMTIteDg2XzY0LWRlYnVnLzEyMzQuemlwJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0Zh
aWxlZCB0byB0cmFuc2ZlciBhcmNoaXZlIHRvIFMzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVu
U3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bkFQSVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxm
LmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9ICdhcGlfdGVz
dF9yZXN1bHRzLmpzb24nCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQot
ICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWls
ZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzc19tYWMoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKFJ1bkFQSVRlc3RzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQ
bGF0Zm9ybScsICdtYWMtbW9qYXZlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZv
cm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdy
ZWxlYXNlJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1yZWxl
YXNlJywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnLi4uCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5X
VEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0
ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNz
ZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFz
c2VkCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4OCBzdWNjZXNzZnVsCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQot
JycnKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2lvc19zaW11
bGF0b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQSVRlc3RzKCkpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yLTExJykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAgc2VsZi5l
eHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3dr
ZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFw
aS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tZGVidWcnLCAnLS12ZXJib3NlJywgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1pb3Mtc2ltdWxhdG9yJ10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNo
ZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJp
YW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFu
dC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQK
LXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAg
VGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtl
ci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi1SYW4g
MTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4OCBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQotJycnKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzJykKLSAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2d0ayhzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoUnVuQVBJVGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRm
b3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAn
cmVsZWFzZScpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0
aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cycsICctLXJlbGVhc2UnLCAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PScnJy4uLgotKipQQVNTKiogVHJhbnNmb3JtYXRpb25NYXRyaXguQmxlbmQKLSoqUEFT
UyoqIFRyYW5zZm9ybWF0aW9uTWF0cml4LkJsZW5kMgotKipQQVNTKiogVHJhbnNmb3JtYXRpb25N
YXRyaXguQmxlbmQ0Ci0qKlBBU1MqKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5FcXVhbGl0eQotKipQ
QVNTKiogVHJhbnNmb3JtYXRpb25NYXRyaXguQ2FzdGluZwotKipQQVNTKiogVHJhbnNmb3JtYXRp
b25NYXRyaXguTWFrZU1hcEJldHdlZW5SZWN0cwotKipQQVNTKiogVVJMUGFyc2VyVGV4dEVuY29k
aW5nVGVzdC5RdWVyeUVuY29kaW5nCi0qKlBBU1MqKiBHU3RyZWFtZXJUZXN0Lm1hcHBlZEJ1ZmZl
ckJhc2ljcwotKipQQVNTKiogR1N0cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJSZWFkU2FuaXR5Ci0q
KlBBU1MqKiBHU3RyZWFtZXJUZXN0Lm1hcHBlZEJ1ZmZlcldyaXRlU2FuaXR5Ci0qKlBBU1MqKiBH
U3RyZWFtZXJUZXN0Lm1hcHBlZEJ1ZmZlckNhY2hlc1NoYXJlZEJ1ZmZlcnMKLSoqUEFTUyoqIEdT
dHJlYW1lclRlc3QubWFwcGVkQnVmZmVyRG9lc05vdEFkZEV4dHJhUmVmcwotCi1SYW4gMTMxNiB0
ZXN0cyBvZiAxMzE4IHdpdGggMTMxNiBzdWNjZXNzZnVsCi0nJycpCi0gICAgICAgICAgICArIDAs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBz
dGF0ZV9zdHJpbmc9J3J1bi1hcGktdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X29uZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVw
U3RlcChSdW5BUElUZXN0cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnbWFjLW1vamF2ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywg
J21hYycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcn
KQotCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdU
b29scy9TY3JpcHRzL3J1bi1hcGktdGVzdHMnLCAnLS1uby1idWlsZCcsICctLWRlYnVnJywgJy0t
dmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNo
ZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5S
ZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdv
cmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVz
dFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8w
IFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIv
MCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVsCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLUNyYXNo
ZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAg
ICoqRkFJTCoqIFdURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIFRvb2xz
XFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xcV1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAg
ICAgICAgVmFsdWUgb2Y6IG1ha2VTdHJpbmcoJ2hlbGxvICcsIHN0YXRpY19jYXN0PHVuc2lnbmVk
IHNob3J0Pig0MikgLCAnIHdvcmxkJykKLSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxk
Ci0gICAgICAgIEV4cGVjdGVkOiAnaGVsbG8gKiB3b3JsZCcKLSAgICAgICAgV2hpY2ggaXM6IDc0
QjAwQzlDCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotJycnKQotICAgICAg
ICAgICAgKyAxLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
RkFJTFVSRSwgc3RhdGVfc3RyaW5nPScxIGFwaSB0ZXN0IGZhaWxlZCBvciB0aW1lZCBvdXQnKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX2Zh
aWx1cmVzX2FuZF90aW1lb3V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQVBJ
VGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1t
b2phdmUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAg
ICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29y
a2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0
cy9ydW4tYXBpLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1kZWJ1ZycsICctLXZlcmJvc2UnLCAn
LS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PScnJy4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRv
ckFtcGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3Nl
ZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBU
ZXN0V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RG
X1ZhcmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RG
LldURl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGlu
ZwotUmFuIDE4ODggdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODQgc3VjY2Vzc2Z1bAotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UZXN0IHN1aXRlIGZhaWxlZAotCi1GYWlsZWQKLQotICAg
IFRlc3RXVEYuV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoq
IFdURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIFRvb2xzXFxUZXN0V2Vi
S2l0QVBJXFxUZXN0c1xcV1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFs
dWUgb2Y6IG1ha2VTdHJpbmcoJ2hlbGxvICcsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0
MikgLCAnIHdvcmxkJykKLSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAg
IEV4cGVjdGVkOiAnaGVsbG8gKiB3b3JsZCcKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0K
LSAgICBUZXN0V1RGLldURl9FeHBlY3RlZC5VbmV4cGVjdGVkCi0gICAgICAgICoqRkFJTCoqIFdU
Rl9FeHBlY3RlZC5VbmV4cGVjdGVkCi0KLSAgICAgICAgVG9vbHNcVGVzdFdlYktpdEFQSVxUZXN0
c1xXVEZcRXhwZWN0ZWQuY3BwOjk2Ci0gICAgICAgIFZhbHVlIG9mOiBzMQotICAgICAgICAgIEFj
dHVhbDogb29wcwotICAgICAgICBFeHBlY3RlZDogczAKLSAgICAgICAgV2hpY2ggaXM6IG9vcHMK
LQotVGltZW91dAotCi0gICAgVGVzdFdURi5XVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFs
bHlEZXN0cnVjdGlibGVBcnJheXMuQXNzaWdubWVudAotICAgIFRlc3RXVEYuV1RGX0xvY2suQ29u
dGVuZGVkU2hvcnRTZWN0aW9uCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwot
JycnKQotICAgICAgICAgICAgKyA0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSc0IGFwaSB0ZXN0cyBmYWlsZWQgb3Ig
dGltZWQgb3V0JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF91bmV4cGVjdGVkX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQ
SVRlc3RzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMt
bW9qYXZlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1Njcmlw
dHMvcnVuLWFwaS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tZGVidWcnLCAnLS12ZXJib3NlJywg
Jy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdz
dGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLiBGYWlsZWQgdG8gcnVuIGFwaSB0ZXN0
cy4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzIChmYWlsdXJl
KScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfbm9fZmFp
bHVyZXNfb3JfdGltZW91dHNfd2l0aF9kaXNhYmxlZChzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1
cFN0ZXAoUnVuQVBJVGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJywgJ21hYy1tb2phdmUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScs
ICdtYWMnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVn
JykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAn
VG9vbHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1kZWJ1ZycsICct
LXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSld
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmls
ZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJy4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFy
aWFudC5PcGVyYXRvckFtcGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuUmVmIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2Vk
Ci13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8w
IFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3Jr
ZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29y
a2VyLzAgZXhpdGluZwotUmFuIDE4ODEgdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODEgc3VjY2Vzc2Z1
bAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5
IHBhc3NlZCEKLScnJykKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0ncnVuLWFwaS10ZXN0
cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5BUElU
ZXN0c1dpdGhvdXRQYXRjaChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRy
dWUKLSAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnYXBpX3Rlc3RfcmVzdWx0cy5qc29uJwot
ICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24o
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X3N1Y2Nlc3NfbWFjKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5BUElU
ZXN0c1dpdGhvdXRQYXRjaCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZv
cm0nLCAnbWFjLW1vamF2ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywg
J21hYycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ0FQSS1UZXN0cy1t
YWNPUy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMTUy
NScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnZXdzMTU1JykKLQot
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZWxlYXNlJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLXZlcmJvc2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1l
fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwu
bG9nKCdzdGRpbycsIHN0ZG91dD0nJycuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQu
T3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJl
ZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAotd29y
a2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2VyLzAg
VGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLVJhbiAxODg4
IHRlc3RzIG9mIDE4ODggd2l0aCAxODg4IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotQWxsIHRlc3RzIHN1Y2Nlc3NmdWxseSBwYXNzZWQhCi0nJycpCi0gICAgICAg
ICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J3J1bi1hcGktdGVzdHMtd2l0aG91dC1wYXRjaCcpCi0gICAg
ICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfb25lX2ZhaWx1cmUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQSVRlc3RzV2l0aG91dFBhdGNoKCkpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtbW9qYXZlJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdBUEktVGVzdHMtaU9TLUVXUycpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkbnVtYmVyJywgJzEyMycpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnZXdzMTU2JykKLQotICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cycsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1kZWJ1ZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS12
ZXJib3NlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9
JycnCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3Nl
ZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9y
VXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlz
aXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0
cyBvZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLUNyYXNoZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0
cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5TdHJpbmdDb25j
YXRlbmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xc
V1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUgb2Y6IG1ha2VTdHJp
bmcoJ2hlbGxvICcsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0MikgLCAnIHdvcmxkJykK
LSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4cGVjdGVkOiAnaGVs
bG8gKiB3b3JsZCcKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLVRlc3RpbmcgY29tcGxl
dGVkLCBFeGl0IHN0YXR1czogMwotJycnKQotICAgICAgICAgICAgKyAxLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPScx
IGFwaSB0ZXN0IGZhaWxlZCBvciB0aW1lZCBvdXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzX2d0ayhzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoUnVuQVBJVGVzdHNXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3BsYXRmb3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZp
Z3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFt
ZScsICdBUEktVGVzdHMtR1RLLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxk
bnVtYmVyJywgJzEzNTI5JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd29ya2VybmFtZScs
ICdpZ2FsaWE0LWd0ay13azItZXdzJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1h
bmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rv
b2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1kZWJ1ZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1qc29u
LW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PScnJwotKipQQVNTKiogR1N0cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJCYXNpY3MKLSoq
UEFTUyoqIEdTdHJlYW1lclRlc3QubWFwcGVkQnVmZmVyUmVhZFNhbml0eQotKipQQVNTKiogR1N0
cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJXcml0ZVNhbml0eQotKipQQVNTKiogR1N0cmVhbWVyVGVz
dC5tYXBwZWRCdWZmZXJDYWNoZXNTaGFyZWRCdWZmZXJzCi0qKlBBU1MqKiBHU3RyZWFtZXJUZXN0
Lm1hcHBlZEJ1ZmZlckRvZXNOb3RBZGRFeHRyYVJlZnMKLQotVW5leHBlY3RlZCBmYWlsdXJlcyAo
MykKLSAgICAvVGVzdFdURgotICAgICAgICBXVEZfRGF0ZU1hdGguY2FsY3VsYXRlTG9jYWxUaW1l
T2Zmc2V0Ci0gICAgL1dlYktpdDJHdGsvVGVzdFByaW50aW5nCi0gICAgICAgIC93ZWJraXQvV2Vi
S2l0UHJpbnRPcGVyYXRpb24vY2xvc2UtYWZ0ZXItcHJpbnQKLSAgICAvV2ViS2l0Mkd0ay9UZXN0
V2Vic2l0ZURhdGEKLSAgICAgICAgL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9kYXRhYmFzZXMK
LQotVW5leHBlY3RlZCBwYXNzZXMgKDEpCi0gICAgL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50Ci0g
ICAgICAgIC93ZWJraXQvV2ViS2l0V2ViVmlldy91c2VybWVkaWEtZW51bWVyYXRlZGV2aWNlcy1w
ZXJtaXNzaW9uLWNoZWNrCi0KLVJhbiAxMjk2IHRlc3RzIG9mIDEyOTggd2l0aCAxMjkzIHN1Y2Nl
c3NmdWwKLScnJykKLSAgICAgICAgICAgICsgMywKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nMyBhcGkgdGVzdHMgZmFp
bGVkIG9yIHRpbWVkIG91dCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3RBcmNoaXZlVGVzdFJlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01l
c3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0
ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoQXJjaGl2ZVRlc3RSZXN1bHRzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQ
bGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxh
dGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZp
Z3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNo
aXZlJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvcicsICAnLS1yZWxlYXNlJywgJ2FyY2hpdmUn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmlu
Zz0nQXJjaGl2ZWQgdGVzdCByZXN1bHRzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChB
cmNoaXZlVGVzdFJlc3VsdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJywgJ21hYy1tb2phdmUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScs
ICdtYWMnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVn
JykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmly
b249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L3Rlc3QtcmVzdWx0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1t
YWMnLCAgJy0tZGVidWcnLCAnYXJjaGl2ZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVk
IGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nQXJjaGl2ZWQgdGVzdCBy
ZXN1bHRzIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNs
YXNzIFRlc3RVcGxvYWRUZXN0UmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRl
c3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVz
c2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAg
ZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChVcGxvYWRUZXN0UmVzdWx0cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1
cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdhcmNoaXRlY3R1
cmUnLCAneDg2XzY0JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIz
NCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ21hY09TLVNpZXJy
YS1SZWxlYXNlLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWls
ZG51bWJlcicsICcxMicpCi0gICAgICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAg
ICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0KCd1cGxvYWRG
aWxlJywgZGljdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3Jr
ZXJzcmM9J2xheW91dC10ZXN0LXJlc3VsdHMuemlwJywgd29ya2Rpcj0nd2tkaXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZT0xMDI0ICogMjU2LCBt
YXhzaXplPU5vbmUsIGtlZXBzdGFtcD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3cml0ZXI9RXhwZWN0UmVtb3RlUmVmKHJlbW90ZXRyYW5zZmVyLkZpbGVX
cml0ZXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAg
ICAgICArIEV4cGVjdC5iZWhhdmlvcih1cGxvYWRGaWxlV2l0aENvbnRlbnRzT2ZTdHJpbmcoJ0R1
bW15IHppcCBmaWxlIGNvbnRlbnQuJykpCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RVcGxvYWRlZEZpbGUoJ3B1YmxpY19odG1sL3Jlc3VsdHMvbWFjT1Mt
U2llcnJhLVJlbGVhc2UtV0syLVRlc3RzLUVXUy9yMTIzNC0xMi56aXAnKQotCi0gICAgICAgIHNl
bGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdVcGxvYWRlZCB0
ZXN0IHJlc3VsdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3N1Y2Nlc3Nfd2l0aF9pZGVudGlmaWVyKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJykpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdwYXRjaF9pZCcsICcyNzEyMTEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWlsZGVybmFtZScsICdpT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMjAnKQotICAgICAgICBzZWxmLmV4cGVj
dEhpZGRlbihGYWxzZSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAg
ICAgICAgIEV4cGVjdCgndXBsb2FkRmlsZScsIGRpY3QoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgd29ya2Vyc3JjPSdsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCcsIHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
bG9ja3NpemU9MTAyNCAqIDI1NiwgbWF4c2l6ZT1Ob25lLCBrZWVwc3RhbXA9RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyPUV4cGVjdFJlbW90ZVJl
ZihyZW1vdGV0cmFuc2Zlci5GaWxlV3JpdGVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICApKQotICAgICAgICAgICAgKyBFeHBlY3QuYmVoYXZpb3IodXBsb2FkRmlsZVdp
dGhDb250ZW50c09mU3RyaW5nKCdEdW1teSB6aXAgZmlsZSBjb250ZW50LicpKQotICAgICAgICAg
ICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0VXBsb2FkZWRGaWxlKCdwdWJs
aWNfaHRtbC9yZXN1bHRzL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9yMjcxMjExLTEy
MC1jbGVhbi10cmVlLnppcCcpCi0KLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1VwbG9hZGVkIHRlc3QgcmVzdWx0cycpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RFeHRyYWN0VGVzdFJlc3VsdHMoQnVp
bGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAo
c2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBz
ZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRzKCkpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdT
JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRudW1iZXInLCAnMTInKQotICAgICAg
ICBzZWxmLmV4cGVjdExvY2FsQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RNYXN0ZXJTaGVs
bENvbW1hbmQoY29tbWFuZD1bJ3VuemlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLXEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctbycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3B1YmxpY19odG1sL3Jlc3VsdHMvbWFjT1MtU2llcnJhLVJlbGVhc2UtV0syLVRl
c3RzLUVXUy9yMTIzNC0xMi56aXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICctZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3B1YmxpY19odG1sL3Jlc3VsdHMvbWFjT1MtU2llcnJhLVJlbGVhc2UtV0syLVRl
c3RzLUVXUy9yMTIzNC0xMicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBdKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdFeHRyYWN0ZWQgdGVzdCBy
ZXN1bHRzJykKLSAgICAgICAgc2VsZi5leHBlY3RBZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0
IHRlc3QgcmVzdWx0cycsICdodHRwczovL2V3cy1idWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdz
LmNvbS9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IyNDY4LTEyL3Jlc3VsdHMu
aHRtbCcpXSkKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9z
dWNjZXNzX3dpdGhfaWRlbnRpZmllcihzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoRXh0
cmFjdFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcnVuJykpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVy
bmFtZScsICdpT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMicpCi0gICAgICAgIHNlbGYuZXhwZWN0TG9jYWxD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdE1hc3RlclNoZWxsQ29tbWFuZChjb21tYW5kPVsn
dW56aXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
cScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljX2h0
bWwvcmVzdWx0cy9pT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MvcjEyMzQtMTItcmVydW4u
emlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWQn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWNf
aHRtbC9yZXN1bHRzL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9yMTIzNC0xMi1yZXJ1
bicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdFeHRyYWN0ZWQgdGVzdCByZXN1bHRzJykKLSAgICAg
ICAgc2VsZi5leHBlY3RBZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cycs
ICdodHRwczovL2V3cy1idWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9pT1MtMTItU2lt
dWxhdG9yLVdLMi1UZXN0cy1FV1MvcjEyMzQtMTIvcmVzdWx0cy5odG1sJyldKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKEV4dHJhY3RUZXN0UmVzdWx0cygpKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxk
ZXJuYW1lJywgJ21hY09TLVNpZXJyYS1SZWxlYXNlLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMicpCi0gICAgICAgIHNlbGYuZXhwZWN0
TG9jYWxDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdE1hc3RlclNoZWxsQ29tbWFuZChjb21t
YW5kPVsndW56aXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICctcScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jy1vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVi
bGljX2h0bWwvcmVzdWx0cy9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IxMjM0
LTEyLnppcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Jy1kJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVi
bGljX2h0bWwvcmVzdWx0cy9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IxMjM0
LTEyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0g
ICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2ZhaWxlZCAoMikgKGZhaWx1cmUpJykKLSAgICAg
ICAgc2VsZi5leHBlY3RBZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cycs
ICdodHRwczovL2V3cy1idWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9tYWNPUy1TaWVy
cmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IxMjM0LTEyL3Jlc3VsdHMuaHRtbCcpXSkKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFByaW50Q29uZmlndXJhdGlv
bihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0
dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNj
ZXNzX21hYyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUHJpbnRDb25maWd1cmF0aW9u
KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ21hY09TLUhpZ2gt
U2llcnJhLVJlbGVhc2UtV0syLVRlc3RzLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3BsYXRmb3JtJywgJ21hYy1oaWdoc2llcnJhJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2hvc3RuYW1lJ10s
IHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J2V3czE1MC5hcHBsZS5j
b20nKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29y
a2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAKLSAgICAgICAg
ICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nJydGaWxlc3lzdGVtICAgICBT
aXplICAgVXNlZCAgQXZhaWwgQ2FwYWNpdHkgaXVzZWQgIGlmcmVlICVpdXNlZCAgTW91bnRlZCBv
bgotL2Rldi9kaXNrMXMxICAxMTlHaSAgIDk1R2kgICAyM0dpICAgIDgxJSAgOTM3OTU5IDkyMjMz
NzIwMzY4NTM4Mzc4NDggICAgMCUgICAvCi0vZGV2L2Rpc2sxczQgIDExOUdpICAgMjBLaSAgIDIz
R2kgICAgIDElICAgICAgIDAgOTIyMzM3MjAzNjg1NDc3NTgwNyAgICAwJSAgIC9wcml2YXRlL3Zh
ci92bQotL2Rldi9kaXNrMHMzICAxMTlHaSAgIDIyR2kgICA5N0dpICAgIDE5JSAgMzM3NTk1ICAg
ICAgICAgIDQyOTQ2Mjk2ODQgICAgMCUgICAvVm9sdW1lcy9EYXRhJycnKSwKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkYXRlJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02
MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
c3RkaW8nLCBzdGRvdXQ9J1R1ZSBBcHIgIDkgMTU6MzA6NTIgUERUIDIwMTknKSwKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydzd192ZXJzJ10sIHdvcmtkaXI9J3drZGlyJywgdGlt
ZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxs
LmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnUHJvZHVjdE5hbWU6CU1hYyBPUyBYCi1Qcm9kdWN0VmVy
c2lvbjoJMTAuMTMuNAotQnVpbGRWZXJzaW9uOgkxN0UxOTknJycpLAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwoY29tbWFuZD1bJ3hjb2RlYnVpbGQnLCAnLXNkaycsICctdmVyc2lvbiddLCB3b3Jr
ZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpCi0gICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnTWFjT1NYMTAuMTMuc2RrIC0gbWFj
T1MgMTAuMTMgKG1hY29zeDEwLjEzKQotU0RLVmVyc2lvbjogMTAuMTMKLVBhdGg6IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvTWFjT1NYLnBsYXRm
b3JtL0RldmVsb3Blci9TREtzL01hY09TWDEwLjEzLnNkawotUGxhdGZvcm1WZXJzaW9uOiAxLjEK
LVBsYXRmb3JtUGF0aDogL0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVy
L1BsYXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0KLVByb2R1Y3RCdWlsZFZlcnNpb246IDE3RTE4OQot
UHJvZHVjdENvcHlyaWdodDogMTk4My0yMDE4IEFwcGxlIEluYy4KLVByb2R1Y3ROYW1lOiBNYWMg
T1MgWAotUHJvZHVjdFVzZXJWaXNpYmxlVmVyc2lvbjogMTAuMTMuNAotUHJvZHVjdFZlcnNpb246
IDEwLjEzLjQKLQotWGNvZGUgOS40LjEKLUJ1aWxkIHZlcnNpb24gOUYyMDAwJycnKQotICAgICAg
ICAgICAgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VwdGltZSddLCB3
b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAg
ICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScgNjozMSAgdXAgMSBkYXks
IDE5OjA1LCAyNCB1c2VycywgbG9hZCBhdmVyYWdlczogNC4xNyA3LjIzIDUuNDUnKSwKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0
cmluZz0nT1M6IEhpZ2ggU2llcnJhICgxMC4xMy40KSwgWGNvZGU6IDkuNC4xJykKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2lvc19zaW11bGF0
b3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFByaW50Q29uZmlndXJhdGlvbigpKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1TaWVycmEtUmVs
ZWFzZS1XSzItVGVzdHMtRVdTJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0n
LCAnaW9zLXNpbXVsYXRvci0xMicpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0bmFtZSddLCB3b3JrZGly
PSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAg
KyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdld3MxNTIuYXBwbGUuY29tJyksCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsnZGYnLCAnLWhsJ10sIHdvcmtkaXI9J3dr
ZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4
cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnRmlsZXN5c3RlbSAgICAgU2l6ZSAgIFVz
ZWQgIEF2YWlsIENhcGFjaXR5IGl1c2VkICBpZnJlZSAlaXVzZWQgIE1vdW50ZWQgb24KLS9kZXYv
ZGlzazFzMSAgMTE5R2kgICA5NUdpICAgMjNHaSAgICA4MSUgIDkzNzk1OSA5MjIzMzcyMDM2ODUz
ODM3ODQ4ICAgIDAlICAgLwotL2Rldi9kaXNrMXM0ICAxMTlHaSAgIDIwS2kgICAyM0dpICAgICAx
JSAgICAgICAwIDkyMjMzNzIwMzY4NTQ3NzU4MDcgICAgMCUgICAvcHJpdmF0ZS92YXIvdm0KLS9k
ZXYvZGlzazBzMyAgMTE5R2kgICAyMkdpICAgOTdHaSAgICAxOSUgIDMzNzU5NSAgICAgICAgICA0
Mjk0NjI5Njg0ICAgIDAlICAgL1ZvbHVtZXMvRGF0YScnJyksCi0gICAgICAgICAgICBFeHBlY3RT
aGVsbChjb21tYW5kPVsnZGF0ZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vu
dmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PSdUdWUgQXByICA5IDE1OjMwOjUyIFBEVCAyMDE5JyksCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbChjb21tYW5kPVsnc3dfdmVycyddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAs
IGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PScnJ1Byb2R1Y3ROYW1lOglNYWMgT1MgWAotUHJvZHVjdFZlcnNpb246CTEw
LjE0LjUKLUJ1aWxkVmVyc2lvbjoJMThGMTMyJycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KGNvbW1hbmQ9Wyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNpb24nXSwgd29ya2Rpcj0nd2tk
aXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKQotICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ2lQaG9uZVNpbXVsYXRvcjEyLjIuc2RrIC0gU2lt
dWxhdG9yIC0gaU9TIDEyLjIgKGlwaG9uZXNpbXVsYXRvcjEyLjIpCi1TREtWZXJzaW9uOiAxMi4y
Ci1QYXRoOiAvQXBwbGljYXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZv
cm1zL2lQaG9uZVNpbXVsYXRvci5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVTaW11bGF0
b3IxMi4yLnNkawotUGxhdGZvcm1WZXJzaW9uOiAxMi4yCi1QbGF0Zm9ybVBhdGg6IC9BcHBsaWNh
dGlvbnMvWGNvZGUuYXBwL0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lU2ltdWxh
dG9yLnBsYXRmb3JtCi1CdWlsZElEOiAxNUM0QkFGOC00NjMyLTExRTktODZFQi1CQTQ3RjFGRkFD
M0MKLVByb2R1Y3RCdWlsZFZlcnNpb246IDE2RTIyNgotUHJvZHVjdENvcHlyaWdodDogMTk4My0y
MDE5IEFwcGxlIEluYy4KLVByb2R1Y3ROYW1lOiBpUGhvbmUgT1MKLVByb2R1Y3RWZXJzaW9uOiAx
Mi4yCi0KLVhjb2RlIDEwLjIKLUJ1aWxkIHZlcnNpb24gMTBFMTI1JycnKQotICAgICAgICAgICAg
KyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VwdGltZSddLCB3b3JrZGly
PSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAg
KyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScgNjozMSAgdXAgMSBkYXksIDE5OjA1
LCAyNCB1c2VycywgbG9hZCBhdmVyYWdlczogNC4xNyA3LjIzIDUuNDUnKSwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0n
T1M6IE1vamF2ZSAoMTAuMTQuNSksIFhjb2RlOiAxMC4yJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dlYmtpdHB5KHNlbGYpOgotICAgICAg
ICBzZWxmLnNldHVwU3RlcChQcmludENvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgncGxhdGZvcm0nLCAnKicpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0bmFtZSddLCB3b3Jr
ZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29ya2Rpcj0nd2tkaXInLCB0
aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bChjb21tYW5kPVsnZGF0ZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmly
b249RmFsc2UpICsgMCwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydzd192ZXJz
J10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0g
ICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnUHJvZHVjdE5h
bWU6CU1hYyBPUyBYCi1Qcm9kdWN0VmVyc2lvbjoJMTAuMTMuNgotQnVpbGRWZXJzaW9uOgkxN0c3
MDI0JycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wyd4Y29kZWJ1aWxkJywg
Jy1zZGsnLCAnLXZlcnNpb24nXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZp
cm9uPUZhbHNlKSArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0
ZG91dD0nJydYY29kZSAxMC4yXG5CdWlsZCB2ZXJzaW9uIDEwRTEyNScnJyksCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbChjb21tYW5kPVsndXB0aW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91
dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9JyA2OjMxICB1cCAyMiBzZWNvbmRzLCAxMjowNSwgMiB1c2Vycywg
bG9hZCBhdmVyYWdlczogMy4xNyA3LjIzIDUuNDUnKSwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nT1M6IEhpZ2ggU2ll
cnJhICgxMC4xMy42KSwgWGNvZGU6IDEwLjInKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGludXhfd3BlKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChQcmludENvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgncGxhdGZvcm0nLCAnd3BlJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2hvc3RuYW1lJ10sIHdvcmtkaXI9
J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J2V3czE5MCcpLAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RmJywgJy1obCddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVv
dXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ3N0ZGlvJywgc3Rkb3V0PScnJ0ZpbGVzeXN0ZW0gICAgIFNpemUgICBVc2VkICBBdmFpbCBD
YXBhY2l0eSBpdXNlZCAgaWZyZWUgJWl1c2VkICBNb3VudGVkIG9uCi0vZGV2L2Rpc2swczMgIDEx
OUdpICAgMjJHaSAgIDk3R2kgICAgMTklICAzMzc1OTUgICAgICAgICAgNDI5NDYyOTY4NCAgICAw
JSAgIC8nJycpLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RhdGUnXSwgd29y
a2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAKLSAgICAgICAg
ICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVHVlIEFwciAgOSAxNTozMDo1
MiBQRFQgMjAxOScpLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VuYW1lJywg
Jy1hJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAw
Ci0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnTGludXgg
a29kYW1hLWV3cyA1LjAuNC1hcmNoMS0xLUFSQ0ggIzEgU01QIFBSRUVNUFQgU2F0IE1hciAyMyAy
MTowMDozMyBVVEMgMjAxOSB4ODZfNjQgR05VL0xpbnV4JycnKSwKLSAgICAgICAgICAgIEV4cGVj
dFNoZWxsKGNvbW1hbmQ9Wyd1cHRpbWUnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBs
b2dFbnZpcm9uPUZhbHNlKSArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRp
bycsIHN0ZG91dD0nIDY6MzEgIHVwIDIyIHNlY29uZHMsIDEyOjA1LCAyIHVzZXJzLCBsb2FkIGF2
ZXJhZ2VzOiAzLjE3IDcuMjMgNS40NScpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQcmludGVkIGNvbmZpZ3VyYXRp
b24nKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nl
c3NfbGludXhfZ3RrKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChQcmludENvbmZpZ3Vy
YXRpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnZ3RrJykKLQot
ICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hl
bGwoY29tbWFuZD1bJ2hvc3RuYW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9n
RW52aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2Rm
JywgJy1obCddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2Up
ICsgMCwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkYXRlJ10sIHdvcmtkaXI9
J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VuYW1lJywgJy1hJ10sIHdvcmtkaXI9J3drZGlyJywgdGlt
ZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwo
Y29tbWFuZD1bJ3VwdGltZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmly
b249RmFsc2UpICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUHJpbnRlZCBjb25maWd1cmF0aW9uJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dpbihzZWxm
KToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUHJpbnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ3dpbicpCi0KLSAgICAgICAgc2VsZi5leHBl
Y3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0
bmFtZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsg
MCwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29ya2Rp
cj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9
J1ByaW50ZWQgY29uZmlndXJhdGlvbicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQot
Ci0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUHJp
bnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywg
J2lvcy0xMicpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbChjb21tYW5kPVsnaG9zdG5hbWUnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1l
b3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChj
b21tYW5kPVsnZGYnLCAnLWhsJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52
aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RhdGUn
XSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsnc3dfdmVycyddLCB3b3JrZGlyPSd3a2Rp
cicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMQotICAgICAgICAgICAgKyBFeHBl
Y3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1Vwb24gZXhlY3ZwZSBzd192ZXJzIFsnc3df
dmVycyddIGluIGVudmlyb25tZW50IGlkIDc2OTY1NDU2NTA0MDAKLTpUcmFjZWJhY2sgKG1vc3Qg
cmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIi91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2th
Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvcHJvY2Vzcy5weSIsIGxpbmUgNDQ1LCBpbiBfZm9yawotICAg
IGVudmlyb25tZW50KQotICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy90
d2lzdGVkL2ludGVybmV0L3Byb2Nlc3MucHkiLCBsaW5lIDUyMywgaW4gX2V4ZWNDaGlsZAotICAg
IG9zLmV4ZWN2cGUoZXhlY3V0YWJsZSwgYXJncywgZW52aXJvbm1lbnQpCi0gIEZpbGUgIi91c3Iv
bGliL3B5dGhvbjIuNy9vcy5weSIsIGxpbmUgMzU1LCBpbiBleGVjdnBlCi0gICAgX2V4ZWN2cGUo
ZmlsZSwgYXJncywgZW52KQotICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvb3MucHkiLCBsaW5l
IDM4MiwgaW4gX2V4ZWN2cGUKLSAgICBmdW5jKGZ1bGxuYW1lLCAqYXJncmVzdCkKLU9TRXJyb3I6
IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JycnKSwKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKGNvbW1hbmQ9Wyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNpb24nXSwgd29y
a2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKQotICAgICAgICAgICAg
KyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1Vwb24gZXhlY3ZwZSB4Y29kZWJ1
aWxkIFsneGNvZGVidWlsZCcsICctc2RrJywgJy12ZXJzaW9uJ10gaW4gZW52aXJvbm1lbnQgaWQg
NzY5NjU0NTYxMjQxNgotOlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgRmls
ZSAiL3Vzci9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm9j
ZXNzLnB5IiwgbGluZSA0NDUsIGluIF9mb3JrCi0gICAgZW52aXJvbm1lbnQpCi0gIEZpbGUgIi91
c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvcHJvY2Vzcy5w
eSIsIGxpbmUgNTIzLCBpbiBfZXhlY0NoaWxkCi0gICAgb3MuZXhlY3ZwZShleGVjdXRhYmxlLCBh
cmdzLCBlbnZpcm9ubWVudCkKLSAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMi43L29zLnB5IiwgbGlu
ZSAzNTUsIGluIGV4ZWN2cGUKLSAgICBfZXhlY3ZwZShmaWxlLCBhcmdzLCBlbnYpCi0gIEZpbGUg
Ii91c3IvbGliL3B5dGhvbjIuNy9vcy5weSIsIGxpbmUgMzgyLCBpbiBfZXhlY3ZwZQotICAgIGZ1
bmMoZnVsbG5hbWUsICphcmdyZXN0KQotT1NFcnJvcjogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBv
ciBkaXJlY3RvcnknJycpCi0gICAgICAgICAgICArIDEsCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bChjb21tYW5kPVsndXB0aW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52
aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShy
ZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gcHJpbnQgY29uZmlndXJhdGlv
bicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RGaW5kTW9k
aWZpZWRDaGFuZ2VMb2dzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1
ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRv
d24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZXN0X21vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKEZpbmRNb2RpZmllZENoYW5nZUxvZ3MoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChG
aW5kTW9kaWZpZWRDaGFuZ2VMb2dzLmhhbHRPbkZhaWx1cmUsIEZhbHNlKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxm
LmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0n
d2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xODAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ2dpdCcsICdkaWZmJywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLS1uby1yZW5h
bWVzJywgJy0tbm8tZXh0LWRpZmYnLCAnLS1mdWxsLWluZGV4J10pICsKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnTQlTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKLU0JU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRp
bmdDb250ZXh0LmgKLU0JU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9j
a01hcmdpbkNvbGxhcHNlLmNwcAotTQlUb29scy9DaGFuZ2VMb2cKLU0JVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dCcnJykgKwotICAgICAgICAgICAgMCwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91
bmQgbW9kaWZpZWQgQ2hhbmdlTG9ncycpCi0gICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vs
b2dzJyksIFsnU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nJywgJ1Rvb2xzL0NoYW5nZUxvZyddKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z3ppbGxhX2NvbW1l
bnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVy
dHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksIE5vbmUpCi0gICAgICAgIHJldHVybiByYwotCi0g
ICAgZGVmIHRlc3Rfc3VjY2Vzc19hZGRlZF9jaGFuZ2Vsb2coc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKEZpbmRNb2RpZmllZENoYW5nZUxvZ3MoKSkKLSAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTgwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9
WydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy0tbm8tcmVuYW1lcycsICct
LW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRleCddKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ0EJVG9vbHMvU2NyaXB0cy9DaGFuZ2VMb2cKLU0JVG9v
bHMvU2NyaXB0cy9ydW4tYXBpLXRlc3RzJycnKSArCi0gICAgICAgICAgICAwLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5n
PSdGb3VuZCBtb2RpZmllZCBDaGFuZ2VMb2dzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ21vZGlmaWVkX2No
YW5nZWxvZ3MnKSwgWydUb29scy9TY3JpcHRzL0NoYW5nZUxvZyddKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2Zpbmlz
aF9zdW1tYXJ5JyksIE5vbmUpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmFp
bHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoRmluZE1vZGlmaWVkQ2hhbmdlTG9n
cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVlJykKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTgwLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy0t
bm8tcmVuYW1lcycsICctLW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRleCddKSArCi0gICAgICAg
ICAgICBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUn
KSArCi0gICAgICAgICAgICAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gZmluZCBhbnkgbW9kaWZp
ZWQgQ2hhbmdlTG9nIGluIFBhdGNoIDEyMzQnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29t
bWVudF90ZXh0JyksICdVbmFibGUgdG8gZmluZCBhbnkgbW9kaWZpZWQgQ2hhbmdlTG9nIGluIEF0
dGFjaG1lbnQgMTIzNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0
eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknKSwgJ1VuYWJsZSB0byBmaW5kIGFueSBtb2RpZmllZCBD
aGFuZ2VMb2cgaW4gUGF0Y2ggMTIzNCcpCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFRl
c3RDcmVhdGVMb2NhbEdJVENvbW1pdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2Fn
ZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVm
IHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChD
cmVhdGVMb2NhbEdJVENvbW1pdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENyZWF0ZUxv
Y2FsR0lUQ29tbWl0LmhhbHRPbkZhaWx1cmUsIEZhbHNlKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdtb2RpZmllZF9jaGFuZ2Vsb2dzJywgWydUb29scy9TY3JpcHRzL0NoYW5nZUxvZycsICdT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cnXSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9MzAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9J3BlcmwgVG9v
bHMvU2NyaXB0cy9jb21taXQtbG9nLWVkaXRvciAtLXByaW50LWxvZyBUb29scy9TY3JpcHRzL0No
YW5nZUxvZyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgfCBnaXQgY29tbWl0IC0tYWxsIC1GIC0n
KSArCi0gICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdDcmVhdGVkIGxvY2FsIGdpdCBjb21taXQn
KQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksIE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnkn
KSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX25vX2No
YW5nZWxvZyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ3JlYXRlTG9jYWxHSVRDb21t
aXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdObyBt
b2RpZmllZCBDaGFuZ2VMb2cgZmlsZSBmb3VuZCBmb3IgUGF0Y2ggMTIzNCcpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoQ3JlYXRlTG9jYWxHSVRDb21taXQoKSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2J1aWxkZXJuYW1lJywgJ0NvbW1pdC1RdWV1ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J21vZGlmaWVkX2NoYW5nZWxvZ3MnLCBbJ1Rvb2xzL1NjcmlwdHMvQ2hhbmdlTG9nJ10pCi0gICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3
b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kPSdwZXJsIFRvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IgLS1w
cmludC1sb2cgVG9vbHMvU2NyaXB0cy9DaGFuZ2VMb2cgfCBnaXQgY29tbWl0IC0tYWxsIC1GIC0n
KSArCi0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVj
dGVkIGZhaWx1cmUnKSArCi0gICAgICAgICAgICAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gY3Jl
YXRlIGdpdCBjb21taXQnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0Jyks
ICdGYWlsZWQgdG8gY3JlYXRlIGdpdCBjb21taXQgZm9yIEF0dGFjaG1lbnQgMTIzNCcpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1h
cnknKSwgJ0ZhaWxlZCB0byBjcmVhdGUgZ2l0IGNvbW1pdCBmb3IgUGF0Y2ggMTIzNCcpCi0gICAg
ICAgIHJldHVybiByYwotCi0KLWNsYXNzIFRlc3RWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgZGVm
IG1vY2tfbG9hZF9jb250cmlidXRvcnMoY2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAg
ICAgcmV0dXJuIHsnYWFrYXNoX2phaW5AYXBwbGUuY29tJzogeyduYW1lJzogJ0Fha2FzaCBKYWlu
JywgJ3N0YXR1cyc6ICdyZXZpZXdlcid9LAotICAgICAgICAgICAgICAgICAgICAnY29tbWl0dGVy
QHdlYmtpdC5vcmcnOiB7J25hbWUnOiAnV2ViS2l0IENvbW1pdHRlcicsICdzdGF0dXMnOiAnY29t
bWl0dGVyJ319Ci0gICAgICAgIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5sb2FkX2NvbnRy
aWJ1dG9ycyA9IG1vY2tfbG9hZF9jb250cmlidXRvcnMKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0
VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4g
c2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgot
ICAgICAgICBzZWxmLnNldHVwU3RlcChWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIoKSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3BhdGNoX2NvbW1pdHRlcicsICdjb21taXR0ZXJAd2Via2l0Lm9yZycpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyJywgJ2Fha2FzaF9qYWluQGFw
cGxlLmNvbScpCi0gICAgICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5oYWx0T25GYWlsdXJlLCBG
YWxzZSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1ZhbGlkYXRlZCBjb21taXRlciBhbmQgcmV2aWV3ZXInKQotICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfbm9fcmV2aWV3ZXIoc2VsZik6
Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigpKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgncGF0Y2hfY29tbWl0dGVyJywgJ2Fha2FzaF9qYWluQGFwcGxlLmNvbScp
Ci0gICAgICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nVmFsaWRhdGVkIGNvbW1pdHRlcicp
Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9s
b2FkX2NvbnRyaWJ1dG9ycyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVmFsaWRhdGVD
b21taXRlckFuZFJldmlld2VyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lk
JywgJzEyMzQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9jb21taXR0ZXInLCAn
YWJjQHdlYmtpdC5vcmcnKQotICAgICAgICBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIubG9h
ZF9jb250cmlidXRvcnMgPSBsYW1iZGEgeDoge30KLSAgICAgICAgc2VsZi5leHBlY3RIaWRkZW4o
RmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVf
c3RyaW5nPSdGYWlsZWQgdG8gZ2V0IGNvbnRyaWJ1dG9ycyBpbmZvcm1hdGlvbicpCi0gICAgICAg
IHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9pbnZhbGlkX2Nv
bW1pdHRlcihzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVmFsaWRhdGVDb21taXRlckFu
ZFJldmlld2VyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQn
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9jb21taXR0ZXInLCAnYWJjQHdlYmtp
dC5vcmcnKQotICAgICAgICBzZWxmLmV4cGVjdEhpZGRlbihGYWxzZSkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2FiY0B3ZWJraXQub3Jn
IGRvZXMgbm90IGhhdmUgY29tbWl0dGVyIHBlcm1pc3Npb25zJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX2ludmFsaWRfcmV2aWV3ZXIoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfY29tbWl0dGVyJywgJ2Fha2FzaF9qYWluQGFwcGxlLmNv
bScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyJywgJ2NvbW1pdHRl
ckB3ZWJraXQub3JnJykKLSAgICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdjb21taXR0
ZXJAd2Via2l0Lm9yZyBkb2VzIG5vdCBoYXZlIHJldmlld2VyIHBlcm1pc3Npb25zJykKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9sb2FkX2NvbnRyaWJ1dG9y
c19mcm9tX2Rpc2soc2VsZik6Ci0gICAgICAgIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5f
YWRkVG9Mb2cgPSBsYW1iZGEgY2xzLCBsb2d0eXBlLCBsb2c6IHN5cy5zdGRvdXQud3JpdGUobG9n
KQotICAgICAgICBjb250cmlidXRvcnMgPSBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIoKS5s
b2FkX2NvbnRyaWJ1dG9yc19mcm9tX2Rpc2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRyaWJ1dG9yc1snQWFrYXNoIEphaW4nXVsnbmlja3MnXSwgWydhYWthc2hfamFpbiddKQotCi0K
LWNsYXNzIFRlc3RDaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVh
ckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
Q2hlY2tQYXRjaFN0YXR1c09uRVdTUXVldWVzLmdldF9wYXRjaF9zdGF0dXMgPSBsYW1iZGEgY2xz
LCBwYXRjaF9pZCwgcXVldWU6IFNVQ0NFU1MKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQ
YXRjaFN0YXR1c09uRVdTUXVldWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNo
X2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nQ2hlY2tlZCBwYXRjaCBzdGF0dXMgb24gb3RoZXIgcXVldWVzJykKLSAg
ICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
Z2V0UHJvcGVydHkoJ3Bhc3NlZF9tYWNfd2syJyksIFRydWUpCi0gICAgICAgIHJldHVybiByYwot
Ci0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hl
Y2tQYXRjaFN0YXR1c09uRVdTUXVldWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Bh
dGNoX2lkJywgJzEyMzQnKQotICAgICAgICBDaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMuZ2V0
X3BhdGNoX3N0YXR1cyA9IGxhbWJkYSBjbHMsIHBhdGNoX2lkLCBxdWV1ZTogRkFJTFVSRQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQ2hl
Y2tlZCBwYXRjaCBzdGF0dXMgb24gb3RoZXIgcXVldWVzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1
blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ3Bhc3Nl
ZF9tYWNfd2syJyksIE5vbmUpCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFRlc3RQdXNo
Q29tbWl0VG9XZWJLaXRSZXBvKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0g
VHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVh
ckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFB1c2hD
b21taXRUb1dlYktpdFJlcG8oKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQ9MzAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnc3ZuJywg
J2Rjb21taXQnLCAnLS1ybWRpciddKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PSdDb21taXR0ZWQgcjI1NjcyOScpICsKLSAgICAgICAgICAgIDAsCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J0NvbW1pdHRlZCByMjU2NzI5JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChQ
dXNoQ29tbWl0VG9XZWJLaXRSZXBvKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0PTMwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsnZ2l0JywgJ3N2
bicsICdkY29tbWl0JywgJy0tcm1kaXInXSkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9n
KCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlJykgKwotICAgICAgICAgICAgMiwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0
YXRlX3N0cmluZz0nRmFpbGVkIHRvIHB1c2ggY29tbWl0IHRvIFdlYmtpdCByZXBvc2l0b3J5JykK
LSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1idWlsZC90ZW1wbGF0ZXMvYnVpbGQuamFkZQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvdGVtcGxhdGVzL2J1aWxkLmphZGUJKHJldmlzaW9uIDI2
ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC90ZW1wbGF0ZXMvYnVp
bGQuamFkZQkobm9uZXhpc3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLS5jb250YWluZXIKLSAgLmFs
ZXJ0LmFsZXJ0LWRhbmdlcihuZy1zaG93PSJlcnJvciIpIHt7ZXJyb3J9fQotICBuYXYKLSAgICB1
bC5wYWdlcgotICAgICAgbGkucHJldmlvdXMobmctY2xhc3M9InsnZGlzYWJsZWQnOiBidWlsZC5u
dW1iZXIgPT0gMX0iKQotICAgICAgICBhKG5nLWlmPSJidWlsZC5udW1iZXIgPiAxICIsIHVpLXNy
ZWY9ImJ1aWxkKHtidWlsZDpwcmV2YnVpbGQubnVtYmVyfSkiKQotICAgICAgICAgICAgc3Bhbi5i
YWRnZS1zdGF0dXMobmctY2xhc3M9InJlc3VsdHMyY2xhc3MocHJldmJ1aWxkLCAncHVsc2UnKSIp
ICZsYXJyOwotICAgICAgICAgICAgc3Bhbi5ub21vYmlsZSAmbmJzcDtQcmV2aW91cwotICAgICAg
ICBzcGFuKG5nLWlmPSJidWlsZC5udW1iZXIgPT0gMSIpICZsYXJyOwotICAgICAgICAgICAgc3Bh
bi5ub21vYmlsZSAmbmJzcDtQcmV2aW91cwotICAgICAgbGkobmctaWY9ImJ1aWxkLmNvbXBsZXRl
IiB0aXRsZT0ie3sgYnVpbGQuY29tcGxldGVfYXQgfCBkYXRlZm9ybWF0OidMTEwnIH19IikgRmlu
aXNoZWQge3sgYnVpbGQuY29tcGxldGVfYXQgfCB0aW1lYWdvIH19Ci0gICAgICBsaS5uZXh0KG5n
LWNsYXNzPSJ7J2Rpc2FibGVkJzogbGFzdF9idWlsZH0iKQotICAgICAgICBhKG5nLWlmPSIhbGFz
dF9idWlsZCIsIHVpLXNyZWY9ImJ1aWxkKHtidWlsZDpuZXh0YnVpbGQubnVtYmVyfSkiKQotICAg
ICAgICAgICAgc3Bhbi5ub21vYmlsZSBOZXh0Jm5ic3A7Ci0gICAgICAgICAgICBzcGFuLmJhZGdl
LXN0YXR1cyhuZy1jbGFzcz0icmVzdWx0czJjbGFzcyhuZXh0YnVpbGQsICdwdWxzZScpIikgJnJh
cnI7Ci0gICAgICAgIHNwYW4obmctaWY9Imxhc3RfYnVpbGQiKQotICAgICAgICAgICAgc3Bhbi5u
b21vYmlsZSBOZXh0Jm5ic3A7Ci0gICAgICAgICAgICBzcGFuICZyYXJyOwotICAucm93Ci0gICAg
ICB1aWItdGFic2V0Ci0gICAgICAgICAgdWliLXRhYihoZWFkaW5nPSJCdWlsZCBzdGVwcyIpCi0g
ICAgICAgICAgICAgIGJ1aWxkc3VtbWFyeShuZy1pZj0iYnVpbGQiLCBidWlsZD0iYnVpbGQiLCBw
YXJlbnRidWlsZD0icGFyZW50X2J1aWxkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmVudHJlbGF0aW9uc2hpcD0iYnVpbGRzZXQucGFyZW50X3JlbGF0aW9uc2hpcCIpCi0gICAgICAg
ICAgdWliLXRhYihoZWFkaW5nPSJCdWlsZCBQcm9wZXJ0aWVzIikKLSAgICAgICAgICAgICAgcHJv
cGVydGllcyhwcm9wZXJ0aWVzPSJwcm9wZXJ0aWVzIikKLSAgICAgICAgICB1aWItdGFiKGhlYWRp
bmc9Ildvcmtlcjoge3t3b3JrZXIubmFtZX19IikKLSAgICAgICAgICAgIHRhYmxlLnRhYmxlLnRh
YmxlLWhvdmVyLnRhYmxlLXN0cmlwZWQudGFibGUtY29uZGVuc2VkCi0gICAgICAgICAgICAgIHRi
b2R5Ci0gICAgICAgICAgICAgICAgdHIKLSAgICAgICAgICAgICAgICAgIHRkLnRleHQtbGVmdCBu
YW1lCi0gICAgICAgICAgICAgICAgICB0ZC50ZXh0LWNlbnRlciB7e3dvcmtlci5uYW1lfX0KLSAg
ICAgICAgICAgICAgICB0cihuZy1yZXBlYXQ9IihuYW1lLCB2YWx1ZSkgaW4gd29ya2VyLndvcmtl
cmluZm8iKQotICAgICAgICAgICAgICAgICAgdGQudGV4dC1sZWZ0IHt7IG5hbWUgfX0KLSAgICAg
ICAgICAgICAgICAgIHRkLnRleHQtcmlnaHQge3sgdmFsdWUgfX0KLSAgICAgICAgICB1aWItdGFi
KGhlYWRpbmc9IkRlYnVnIikKLSAgICAgICAgICAgICAgaDQKLSAgICAgICAgICAgICAgICAgIGEo
dWktc3JlZj0iYnVpbGRyZXF1ZXN0KHtidWlsZHJlcXVlc3Q6YnVpbGRyZXF1ZXN0LmJ1aWxkcmVx
dWVzdGlkfSkiKQotICAgICAgICAgICAgICAgICAgICAgfCBCdWlsZHJlcXVlc3Q6Ci0gICAgICAg
ICAgICAgIHJhd2RhdGEoZGF0YT0iYnVpbGRyZXF1ZXN0IikKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2V3cy1idWlsZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYnVpbGQJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1idWlsZAkobm9uZXhpc3RlbnQpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46aWdub3JlCiMj
IC0xLDYgKzAsMCAjIwotdHdpc3RkLmxvZyoKLWh0dHAubG9nKgotcGFzc3dvcmRzLmpzb24KLXR3
aXN0ZC5waWQKLW1hc3Rlci5jZmcuc2FtcGxlCi1wdWJsaWNfaHRtbApJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXByb2Nlc3NlcwkocmV2aXNpb24gMjY4NzMxKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzCShub25leGlzdGVudCkK
QEAgLTEsMTkyICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1p
bXBvcnQgb3MsIHN5cwotaW1wb3J0IGdldHBhc3MKLWltcG9ydCByZQotaW1wb3J0IHN1YnByb2Nl
c3MKLQotZGVmIGxpc3RBbGxXZWJLaXRQcm9ncmFtcyhidWlsZGRpcl9iaW4pOgotICAgIGZvdW5k
V2ViS2l0UHJvZ3JhbXMgPSBbXQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxr
KGJ1aWxkZGlyX2Jpbik6Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAg
aWYgb3MuYWNjZXNzKG9zLnBhdGguam9pbihyb290LCBmaWxlKSwgb3MuWF9PSyk6Ci0gICAgICAg
ICAgICAgICAgZm91bmRXZWJLaXRQcm9ncmFtcy5hcHBlbmQoZmlsZSkKLSAgICByZXR1cm4gZm91
bmRXZWJLaXRQcm9ncmFtcwotCi1kZWYgcmVtb3ZlT3JwaGFuU2htU2VnbWVudHMoKToKLSAgICAj
IFdoZW4gQXBhY2hlMiBpcyBub3QgZ3JhY2VmdWxseSBzaHV0IGRvd24sIGl0IG1heSBsZWF2ZSBv
cnBoYW5lZCBzaGFyZWQgbWVtb3J5IHNlZ21lbnRzCi0gICAgIyB0aGF0IGNvdWxkIGNhdXNlIGZv
bGxvd2luZyBzZXJ2ZXIgaW5zdGFuY2VzIHRvIGFib3J0IG9uIHN0YXJ0dXAuCi0gICAgdHJ5Ogot
ICAgICAgICB1c2VybmFtZSA9IGdldHBhc3MuZ2V0dXNlcigpCi0gICAgICAgIHNlZ21lbnRzID0g
b3JwaGFuZWRTaG1TZWdtZW50c0J5VXNlcih1c2VybmFtZSkKLSAgICAgICAgZm9yIHMgaW4gc2Vn
bWVudHM6Ci0gICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJpcGNybSIsICItbSIs
IHNdKQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcHJpbnQoIkVycm9yIHJl
bW92aW5nIG9ycGhhbmVkIHNoYXJlZCBtZW1vcnkgc2VnbWVudHM6IHt9Ii5mb3JtYXQoZSksIGZp
bGU9c3lzLnN0ZGVycikKLQotZGVmIG9ycGhhbmVkU2htU2VnbWVudHNCeVVzZXIodXNlcm5hbWUp
OgotICAgIHJldCA9IFtdCi0gICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJp
cGNzIiwgIi1tIl0pCi0gICAgbGluZXMgPSBvdXRwdXQuc3BsaXQoJ1xuJykKLSAgICBpZiBsZW4o
bGluZXMpIDwgMzoKLSAgICAgICAgcmV0dXJuIFtdCi0KLSAgICBoZWFkZXJzID0gW2hlYWRlci5z
dHJpcCgpIGZvciBoZWFkZXIgaW4gbGluZXNbMl0uc3BsaXQoKV0KLSAgICB3YW50ZWRfaGVhZGVy
cyA9IFsnbmF0dGNoJywgJ293bmVyJywgJ3NobWlkJ10KLQotICAgIGlmIGFueShoIG5vdCBpbiBo
ZWFkZXJzIGZvciBoIGluIHdhbnRlZF9oZWFkZXJzKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVy
cm9yKCJGYWlsZWQgdG8gZmluZCByZXF1aXJlZCBuYXR0Y2gsIG93bmVyIGFuZCBzaG1pZCBjb2xz
IGluIGlwY3Mgb3V0cHV0IikKLSAgICBuYXR0Y2hfaWR4ID0gaGVhZGVycy5pbmRleCgnbmF0dGNo
JykKLSAgICBvd25lcl9pZHggPSBoZWFkZXJzLmluZGV4KCdvd25lcicpCi0gICAgc2htaWRfaWR4
ID0gaGVhZGVycy5pbmRleCgnc2htaWQnKQotCi0gICAgZm9yIGxpbmUgaW4gbGluZXNbMzpdOgot
ICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgIHRva2VucyA9IFt4LnN0cmlwKCkg
Zm9yIHggaW4gbGluZS5zcGxpdCgpXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiB0b2tl
bnNbbmF0dGNoX2lkeF0gPT0gJzAnIGFuZCB0b2tlbnNbb3duZXJfaWR4XSA9PSB1c2VybmFtZToK
LSAgICAgICAgICAgICAgICByZXQuYXBwZW5kKHRva2Vuc1tzaG1pZF9pZHhdKQotICAgICAgICBl
eGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgcmV0dXJuIHJldAot
Ci1kZWYgbWFpbih1c2VyPU5vbmUpOgotICAgIHRhc2tzVG9LaWxsV2luID0gWwotICAgICAgICAi
Y2wuZXhlIiwKLSAgICAgICAgImRldmVudi5jb20iLAotICAgICAgICAiZGV2ZW52LmV4ZSIsCi0g
ICAgICAgICJEdW1wUmVuZGVyVHJlZS5leGUiLAotICAgICAgICAiRHVtcFJlbmRlclRyZWVfZGVi
dWcuZXhlIiwKLSAgICAgICAgImh0dHBkLmV4ZSIsCi0gICAgICAgICJpbWFnZWRpZmYuZXhlIiwK
LSAgICAgICAgImltYWdlZGlmZl9kZWJ1Zy5leGUiLAotICAgICAgICAianNjLmV4ZSIsCi0gICAg
ICAgICJqc2NfZGVidWcuZXhlIiwKLSAgICAgICAgIkxpZ2h0VFBELmV4ZSIsCi0gICAgICAgICJs
aW5rLmV4ZSIsCi0gICAgICAgICJtaWRsLmV4ZSIsCi0gICAgICAgICJwZXJsLmV4ZSIsCi0gICAg
ICAgICJTYWZhcmkuZXhlIiwKLSAgICAgICAgInN2bi5leGUiLAotICAgICAgICAidGVzdGFwaS5l
eGUiLAotICAgICAgICAidGVzdGFwaV9kZWJ1Zy5leGUiLAotICAgICAgICAiVmNCdWlsZEhlbHBl
ci5leGUiLAotICAgICAgICAid2RpZmYuZXhlIiwKLSAgICAgICAgIldlYktpdE5ldHdvcmtQcm9j
ZXNzLmV4ZSIsCi0gICAgICAgICJXZWJLaXROZXR3b3JrUHJvY2Vzc19kZWJ1Zy5leGUiLAotICAg
ICAgICAiV2ViS2l0V2ViUHJvY2Vzcy5leGUiLAotICAgICAgICAiV2ViS2l0V2ViUHJvY2Vzc19k
ZWJ1Zy5leGUiLAotICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lci5leGUiLAotICAgICAgICAiV2Vi
S2l0VGVzdFJ1bm5lcl9kZWJ1Zy5leGUiLAotICAgIF0KLQotICAgIHRhc2tzVG9LaWxsTWFjID0g
WwotICAgICAgICAiYXBhY2hlMiIsCi0gICAgICAgICJjYzFwbHVzIiwKLSAgICAgICAgImNjMW9i
anBsdXMiLAotICAgICAgICAiY2xhbmciLAotICAgICAgICByImNsYW5nXFwrXFwrIiwKLSAgICAg
ICAgImdjYy00LjIiLAotICAgICAgICAiaHR0cGQiLAotICAgICAgICAiaTY4Ni1hcHBsZS1kYXJ3
aW4xMC1nY2MtNC4yLjEiLAotICAgICAgICAiSW1hZ2VEaWZmIiwKLSAgICAgICAgImpzYyIsCi0g
ICAgICAgICJMYXlvdXRUZXN0SGVscGVyIiwKLSAgICAgICAgIm1ha2UiLAotICAgICAgICAicGVy
bDUuMTIiLAotICAgICAgICAicGVybDUuMTYiLAotICAgICAgICAicGVybDUuMTgiLCAgICAgICAg
Ci0gICAgICAgICJwZXJsIiwKLSAgICAgICAgIlByb2JsZW0gUmVwb3J0ZXIiLAotICAgICAgICAi
cnVieSIsCi0gICAgICAgICJTYWZhcmkgV2ViIENvbnRlbnQiLAotICAgICAgICAiU2FmYXJpIiwK
LSAgICAgICAgInN2biIsCi0gICAgICAgICJEdW1wUmVuZGVyVHJlZSIsCi0gICAgICAgICJUZXN0
V2ViS2l0QVBJIFdlYiBDb250ZW50IiwKLSAgICAgICAgIlRlc3RXZWJLaXRBUEkiLAotICAgICAg
ICAiUGx1Z2luUHJvY2VzcyIsCi0gICAgICAgICJjb20uYXBwbGUuV2ViS2l0LlBsdWdpbi42NCIs
Ci0gICAgICAgICJjb20uYXBwbGUuV2ViS2l0LlBsdWdpbi4zMiIsCi0gICAgICAgICJjb20uYXBw
bGUuV2ViS2l0LlBsdWdpblByb2Nlc3MiLAotICAgICAgICAiY29tLmFwcGxlLldlYktpdC5QbHVn
aW5Qcm9jZXNzLkRldmVsb3BtZW50IgotICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lciBXZWIgQ29u
dGVudCIsCi0gICAgICAgICJXZWJLaXRUZXN0UnVubmVyIiwKLSAgICAgICAgIldlYlByb2Nlc3Mi
LAotICAgICAgICAieGNvZGVidWlsZCIsCi0gICAgICAgICMgRklYTUU6IENvbnNpZGVyIG1vdmlu
ZyBpT1Mtc3BlY2lmaWMgdGFza3MgdG8gdGhlaXIgb3duIGxpc3QuCi0gICAgICAgICJTaW11bGF0
b3IuYXBwIiwKLSAgICBdCi0KLSAgICB0YXNrVG9LaWxsVW5peCA9IFsKLSAgICAgICAgIyBTeXN0
ZW0gcHJvY2VzcyB0aGF0IGFyZSBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNz
Ci0gICAgICAgICJjYzFwbHVzIiwKLSAgICAgICAgImxkLmdvbGQiLAotICAgICAgICAibGQiLAot
ICAgICAgICAibWFrZSIsCi0gICAgICAgICJjbWFrZSIsCi0gICAgICAgICJzdm4iLAotICAgICAg
ICAjIFN5c3RlbSBwcm9jZXNzIHRoYXQgYXJlIGV4ZWN1dGVkIGFzIHBhcnQgb2YgdGhlIHRlc3Qg
c3RlcHMKLSAgICAgICAgIlh2ZmIiLAotICAgICAgICAiZ2RiIiwKLSAgICAgICAgInJ1YnkiLAot
ICAgICAgICAiYXBhY2hlMiIsCi0gICAgICAgICJodHRwZCIsCi0gICAgICAgICMgV2ViS2l0IHJl
bGF0ZWQgcHJvY2VzcyBuYW1lcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIEdUSysv
V1BFL0pTQ09ubHkKLSAgICBdCi0KLSAgICAjIFRoaXMgYWxsb3dzIHRvIHNwZWNpZnkgb24gdGhl
IGVudmlyb25tZW50IG9mIHRoZSBib3QgYSBsaXN0IG9mIHByb2Nlc3MgdGhhdCBzaG91bGQgYmUg
a2lsbGVkLgotICAgIHRhc2tzVG9LaWxsID0gb3MuZ2V0ZW52KCJXRUJLSVRCT1RfVEFTS1NUT0tJ
TEwiLCAiIikuc3BsaXQoKQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAg
ICAgb3Muc3lzdGVtKCJwcyBhdXgiKQotICAgICAgICBmb3IgdGFzayBpbiB0YXNrc1RvS2lsbCAr
IHRhc2tzVG9LaWxsTWFjOgotICAgICAgICAgICAgb3Muc3lzdGVtKCJraWxsYWxsIC05IC12IC1t
ICIgKyB0YXNrKQotICAgICAgICAjIFNodXRkb3duIGFueSBzaW11bGF0b3JzCi0gICAgICAgIGlm
IG9zLmdldGV1aWQoKSA9PSAwIGFuZCB1c2VyOgotICAgICAgICAgICAgb3Muc3lzdGVtKCJzdWRv
IC11IHt9IHhjcnVuIHNpbWN0bCBzaHV0ZG93biBib290ZWQiLmZvcm1hdCh1c2VyKSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIG9zLnN5c3RlbSgieGNydW4gc2ltY3RsIHNodXRkb3duIGJv
b3RlZCIpCi0gICAgICAgICMgS2lsbCBhbGwgaW5zdGFuY2VzIG9mIHB5dGhvbiBleGVjdXRpbmcg
cnVuLXdlYmtpdC10ZXN0cwotICAgICAgICBvcy5zeXN0ZW0oInBzIGF1eCB8IGdyZXAgLUUgJy4r
L1B5dGhvbiAuKyhydW5fd2Via2l0X3Rlc3RzfHJ1bi13ZWJraXQtdGVzdHN8bW9kX3B5d2Vic29j
a2V0KScgfCBncmVwIC12IGdyZXAgfCBhd2sgJ3twcmludCAkMn0nIHwgeGFyZ3Mga2lsbCIpCi0g
ICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzLnBsYXRmb3JtID09ICd3aW4z
Mic6Ci0gICAgICAgIGZvciB0YXNrIGluIHRhc2tzVG9LaWxsICsgdGFza3NUb0tpbGxXaW46Ci0g
ICAgICAgICAgICBvcy5zeXN0ZW0oInRhc2traWxsIC90IC9mIC9pbSAiICsgdGFzaykKLSAgICBl
bGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgotICAgICAgICBvcy5zeXN0ZW0o
InBzIGF1eCIpCi0gICAgICAgIGJ1aWxkZGlyX2JpbiA9ICJXZWJLaXRCdWlsZC9SZWxlYXNlL2Jp
biIgaWYgb3MucGF0aC5pc2RpcigiV2ViS2l0QnVpbGQvUmVsZWFzZS9iaW4iKSBlbHNlICJXZWJL
aXRCdWlsZC9EZWJ1Zy9iaW4iCi0gICAgICAgIGZvciB0YXNrIGluIHRhc2tzVG9LaWxsICsgdGFz
a1RvS2lsbFVuaXggKyBsaXN0QWxsV2ViS2l0UHJvZ3JhbXMoYnVpbGRkaXJfYmluKToKLSAgICAg
ICAgICAgIG9zLnN5c3RlbSgia2lsbGFsbCAtOSAtdiAiICsgdGFzaykKLSAgICAgICAgb3Muc3lz
dGVtKCJwcyBhdXggfCBncmVwIC1QICcuKy9weXRob24gLisocnVuX3dlYmtpdF90ZXN0c3xydW4t
d2Via2l0LXRlc3RzfG1vZF9weXdlYnNvY2tldCknIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJp
bnQgJDJ9JyB8IHhhcmdzIC1yIGtpbGwiKQotICAgICAgICByZW1vdmVPcnBoYW5TaG1TZWdtZW50
cygpCi0gICAgZWxzZToKLSAgICAgICAgc3lzLmV4aXQoKQotICAgICAgICAjIEZJWE1FOiBTaG91
bGQgd2UgcmV0dXJuIGFuIGV4aXQgY29kZSBiYXNlZCBvbiBob3cgdGhlIGtpbGxzIHdlbnQ/Ci0K
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1c2VyID0gc3lzLmFyZ3ZbMV0gaWYg
bGVuKHN5cy5hcmd2KSA+IDEgZWxzZSBOb25lCi0gICAgc3lzLmV4aXQobWFpbih1c2VyKSkKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXByb2Nl
c3NlcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0xICswLDAgIyMKLSoK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvdGVzdC1yZXN1bHQtYXJjaGl2ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlCShub25leGlzdGVudCkKQEAgLTEs
MTEwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAw
OSwgMjAxNSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBnemlwLCBvcHRwYXJzZSwgb3MsIHNodXRpbCwg
c3VicHJvY2Vzcywgc3lzLCB6aXBmaWxlCi0KLXNvdXJjZVJvb3REaXJlY3RvcnkgPSBvcy5wYXRo
LmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIu
LiIpKQotYXJjaGl2ZUZpbGUgPSBvcy5wYXRoLmpvaW4oc291cmNlUm9vdERpcmVjdG9yeSwgImxh
eW91dC10ZXN0LXJlc3VsdHMuemlwIikKLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBvcHRw
YXJzZS5PcHRpb25QYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10gW2FjdGlvbl0iKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCItLXBsYXRmb3JtIiwgZGVzdD0icGxhdGZvcm0iKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJk
ZWJ1ZyIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXJl
bGVhc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9InJlbGVhc2UiLCBkZXN0PSJjb25m
aWd1cmF0aW9uIikKLQotICAgIG9wdGlvbnMsIChhY3Rpb24sICkgPSBwYXJzZXIucGFyc2VfYXJn
cygpCi0gICAgaWYgbm90IG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIHBhcnNlci5lcnJvcigi
UGxhdGZvcm0gaXMgcmVxdWlyZWQiKQotICAgIGlmIG5vdCBvcHRpb25zLmNvbmZpZ3VyYXRpb246
Ci0gICAgICAgIHBhcnNlci5lcnJvcigiQ29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpCi0gICAg
aWYgYWN0aW9uIG5vdCBpbiAoJ2FyY2hpdmUnKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCJBY3Rp
b24gaXMgcmVxdWlyZWQiKQotCi0gICAgbGF5b3V0VGVzdFJlc3VsdHNEaXIgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKHNvdXJjZVJvb3REaXJlY3RvcnksICJsYXlvdXQtdGVzdC1yZXN1
bHRzIikpCi0gICAgcmV0dXJuIGFyY2hpdmVfdGVzdF9yZXN1bHRzKG9wdGlvbnMuY29uZmlndXJh
dGlvbiwgb3B0aW9ucy5wbGF0Zm9ybSwgbGF5b3V0VGVzdFJlc3VsdHNEaXIpCi0KLWRlZiBnemlw
X2ZpbGUocm9vdCwgbmFtZSk6Ci0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyb290LCBuYW1l
KSwgJ3JiJykgYXMgZl9pbiwgZ3ppcC5vcGVuKG9zLnBhdGguam9pbihyb290LCBuYW1lICsgJy5n
eicpLCAnd2InKSBhcyBmX291dDoKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKGZfaW4sIGZf
b3V0KQotICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotCi1kZWYg
Y29tcHJlc3Nfc3BpbmR1bXBzKGxheW91dFRlc3RSZXN1bHRzRGlyKToKLSAgICBmaWxlX3BhdHRl
cm5zID0gKCctc3BpbmR1bXAudHh0JywnLXNhbXBsZS50eHQnKQotICAgIGZvciByb290LCBkaXJz
LCBmaWxlcyBpbiBvcy53YWxrKGxheW91dFRlc3RSZXN1bHRzRGlyKToKLSAgICAgICAgZm9yIG5h
bWUgaW4gZmlsZXM6Ci0gICAgICAgICAgICBmb3IgcGF0dGVybiBpbiBmaWxlX3BhdHRlcm5zOiAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgcGF0dGVybiBpbiBuYW1lOgotICAgICAgICAgICAg
ICAgICAgICBnemlwX2ZpbGUocm9vdCwgbmFtZSkKLQotZGVmIGFyY2hpdmVfdGVzdF9yZXN1bHRz
KGNvbmZpZ3VyYXRpb24sIHBsYXRmb3JtLCBsYXlvdXRUZXN0UmVzdWx0c0Rpcik6Ci0gICAgYXNz
ZXJ0IHBsYXRmb3JtIGluICgnbWFjJywgJ3dpbicsICdndGsnLCAnd2luY2Fpcm8nLCAnaW9zJywg
J3dwZScpCi0KLSAgICB0cnk6Ci0gICAgICAgIG9zLnVubGluayhhcmNoaXZlRmlsZSkKLSAgICBl
eGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSAyOgotICAgICAgICAgICAg
cmFpc2UKLQotICAgIHRyeToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCBsYXlvdXRUZXN0UmVzdWx0
c0RpciBleGlzdHMgc2luY2Ugd2UgY2Fubm90IGFyY2hpdmUgYSBkaXJlY3RvcnkgdGhhdCBkb2Vz
IG5vdCBleGlzdAotICAgICAgICBvcy5tYWtlZGlycyhsYXlvdXRUZXN0UmVzdWx0c0RpcikKLSAg
ICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSAxNzoKLSAgICAgICAg
ICAgIHJhaXNlCi0KLSAgICBvcGVuKG9zLnBhdGguam9pbihsYXlvdXRUZXN0UmVzdWx0c0Rpciwg
Jy5wbGFjZWhvbGRlcicpLCAndycpLmNsb3NlKCkKLQotICAgIGlmIHBsYXRmb3JtIGluICgnbWFj
JywgJ2lvcycpOgotICAgICAgICBjb21wcmVzc19zcGluZHVtcHMobGF5b3V0VGVzdFJlc3VsdHNE
aXIpCi0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbImRpdHRvIiwgIi1jIiwgIi1rIiwgIi0t
c2VxdWVzdGVyUnNyYyIsICItLXpsaWJDb21wcmVzc2lvbkxldmVsIiwgIjIiLCBsYXlvdXRUZXN0
UmVzdWx0c0RpciwgYXJjaGl2ZUZpbGVdKToKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgZWxp
ZiBwbGF0Zm9ybSBpbiAoJ3dpbicsICdndGsnLCAnd3BlJyk6Ci0gICAgICAgIGlmIHN1YnByb2Nl
c3MuY2FsbChbInppcCIsICItciIsICItMiIsIGFyY2hpdmVGaWxlLCAiLiJdLCBjd2Q9bGF5b3V0
VGVzdFJlc3VsdHNEaXIpOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbGlmIHBsYXRmb3Jt
ID09ICd3aW5jYWlybyc6Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGFyY2hpdmVGaWxl
LCAndycsIHppcGZpbGUuWklQX0RFRkxBVEVEKSBhcyBhcmNoaXZlWmlwOgotICAgICAgICAgICAg
Zm9yIHBhdGgsIGRpck5hbWVzLCBmaWxlTmFtZXMgaW4gb3Mud2FsayhsYXlvdXRUZXN0UmVzdWx0
c0Rpcik6Ci0gICAgICAgICAgICAgICAgcmVsYXRpdmVQYXRoID0gb3MucGF0aC5yZWxwYXRoKHBh
dGgsIGxheW91dFRlc3RSZXN1bHRzRGlyKQotICAgICAgICAgICAgICAgIGZvciBmaWxlTmFtZSBp
biBmaWxlTmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIGFyY2hpdmVaaXAud3JpdGUob3MucGF0
aC5qb2luKHBhdGgsIGZpbGVOYW1lKSwgb3MucGF0aC5qb2luKHJlbGF0aXZlUGF0aCwgZmlsZU5h
bWUpKQotCi0gICAgdHJ5OgotICAgICAgICBzaHV0aWwucm10cmVlKGxheW91dFRlc3RSZXN1bHRz
RGlyKQotICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotCi0gICAgICAgICMgUHl0aG9uIGluIEN5Z3dp
biB0aHJvd3MgYSBteXN0ZXJpb3VzIGV4Y2VwdGlvbiB3aXRoIGVycm5vIG9mIDkwCi0gICAgICAg
ICMgd2hlbiByZW1vdmluZyB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRpcmVjdG9yeSBhZnRlciBz
dWNjZXNzZnVsbHkKLSAgICAgICAgIyBkZWxldGluZyBpdHMgY29udGVudHMsIGNsYWltaW5nICJE
aXJlY3Rvcnkgbm90IGVtcHR5Ii4KLSAgICAgICAgIyBXZSBjYW4gc2FmZWx5IGlnbm9yZSB0aGlz
IHNpbmNlIGl0IHdhcyB0aGUgZGlyZWN0b3J5IGNvbnRlbnRzIHRoYXQKLSAgICAgICAgIyB3ZSBh
cmUgbW9zdCBpbnRlcmVzdGVkIGluIGRlbGV0aW5nLgotICAgICAgICAjIFB5dGhvbiBpbiBDeWd3
aW4gd2lsbCBhbHNvIHNvbWV0aW1lcyB0aHJvdyBlcnJubyAyIG9yIDE2IGlmIGEgcHJvY2Vzcwot
ICAgICAgICAjIGlzIGhvbGRpbmcgYSBmaWxlIG9wZW4uIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZmFp
bGluZyB0byBjcmVhdGUgdGhlCi0gICAgICAgICMgYXJjaGl2ZSBqdXN0IGJlY2F1c2Ugc29tZSBv
dGhlciBwcm9jZXNzIGlzIGJlaGF2aW5nIGJhZGx5LiBTZWUKLSAgICAgICAgIyA8aHR0cDovL3dl
YmtpdC5vcmcvYi81NTU4MT4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE2NjcyMD4uCi0gICAg
ICAgIGlmIGUuZXJybm8gIT0gOTAgYW5kIGUuZXJybm8gIT0gMiBhbmQgZS5lcnJubyAhPSAxNjoK
LSAgICAgICAgICAgIHJhaXNlCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lz
LmV4aXQobWFpbigpKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdHJpZ2dlci1jcmFz
aC1sb2ctc3VibWlzc2lvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90
cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uCShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uCShub25leGlzdGVu
dCkKQEAgLTEsNTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAo
QykgMjAyMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0
IHRpbWUKLQotV0FJVF9TRUNPTkRTID0gMwotCi0KLWRlZiBtYWluKCk6Ci0gICAgaWYgc3lzLnBs
YXRmb3JtICE9ICdkYXJ3aW4nOgotICAgICAgICBwcmludCgiTm8gY3Jhc2ggbG9nIHN1Ym1pc3Np
b24gYXZhaWxhYmxlIGZvciBwbGF0Zm9ybSAne30nIi5mb3JtYXQoc3lzLnBsYXRmb3JtKSkKLSAg
ICAgICAgcmV0dXJuIDAKLQotICAgICMgV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYw
NTA3ODc3Pi4KLSAgICBpZiBzdWJwcm9jZXNzLmNhbGwoWycvdXNyL2Jpbi9raWxsYWxsJywgJy05
JywgJ2RpYWdub3N0aWNzX2FnZW50J10pOgotICAgICAgICBwcmludCgnRmFpbGVkIHRvIGtpbGwg
ZGlhZ25vc3RpY3NfYWdlbnQnKQotICAgICAgICByZXR1cm4gMQotICAgIHByaW50KCdLaWxsZWQg
ZGlhZ25vc3RpY3NfYWdlbnQnKQotCi0gICAgdGltZS5zbGVlcChXQUlUX1NFQ09ORFMpCi0gICAg
aWYgc3VicHJvY2Vzcy5jYWxsKFsnL3Vzci9iaW4vbm90aWZ5dXRpbCcsICctcCcsICdjb20uYXBw
bGUuY3Jhc2hyZXBvcnRlci5kZWJ1Zy5zdWJtaXQubm93J10pOgotICAgICAgICBwcmludCgnRmFp
bGVkIHRvIHRyaWdnZXIgY3Jhc2ggbG9nIHN1Ym1pc3Npb24nKQotICAgICAgICByZXR1cm4gMQot
ICAgIHByaW50KCdUcmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24nKQotCi0gICAgcmV0dXJu
IDAKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkK
ClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3RyaWdnZXItY3Jh
c2gtbG9nLXN1Ym1pc3Npb24KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbgkocmV2
aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gt
Y29sbGVjdGlvbgkobm9uZXhpc3RlbnQpCkBAIC0xLDg5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwot
IyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNl
Ci1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotCi1TVUJNSVRf
RElBR19JTkZPID0gJy9TeXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3VibWl0RGlhZ0luZm8n
Ci1XQUlUX1NFQ09ORFMgPSAzCi0KLQotZGVmIHBpZF9mb3JfbmFtZShwcm9jZXNzX25hbWUpOgot
ICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnL2Jpbi9wcycsICctZW8nLCAncGlkLGNv
bW0nXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLQot
ICAgIHN0ZG91dCwgXyA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGZvciBsaW5lIGluIHN0
ZG91dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBpZCwgY2FuZGlk
YXRlID0gbGluZS5zdHJpcCgpLnNwbGl0KGInICcsIDEpCi0gICAgICAgICAgICBpZiBjYW5kaWRh
dGUgPT0gcHJvY2Vzc19uYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocGlkKQotICAg
ICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICByZXR1cm4gTm9u
ZQotCi0KLWRlZiBjcHVfcGVyY2VudGFnZShwaWQpOgotICAgIHRvcF9vdXRwdXQgPSBzdWJwcm9j
ZXNzLmNoZWNrX291dHB1dChbJy91c3IvYmluL3RvcCcsICctcGlkJywgc3RyKHBpZCksICctc3Rh
dHMnLCAnY3B1JywgJy1sJywgJzInXSkKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBmbG9hdCh0
b3Bfb3V0cHV0LnNwbGl0bGluZXMoKVstMV0pCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAg
ICAgIHJldHVybiAwCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nV2FpdCBmb3IgY3Jhc2ggbG9nIHJlcG9ydGluZyB0byBx
dWllc2NlJykKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLXQnLCAnLS10aW1l
b3V0JywKLSAgICAgICAgaGVscD0nU2Vjb25kcyB0byB3YWl0IGZvciBwcm9jZXNzIHRvIHF1aWVz
Y2UuJywKLSAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MCwKLSAgICApCi0gICAgYXJncyA9IHBh
cnNlci5wYXJzZV9hcmdzKCkKLSAgICBkZWFkbGluZSA9ICh0aW1lLnRpbWUoKSArIGFyZ3MudGlt
ZW91dCkgaWYgYXJncy50aW1lb3V0IGVsc2UgTm9uZQotCi0gICAgaWYgc3lzLnBsYXRmb3JtICE9
ICdkYXJ3aW4nOgotICAgICAgICBwcmludCgiTm8gY3Jhc2ggcmVwb3J0aW5nIGF2YWlsYWJsZSBm
b3IgcGxhdGZvcm0gJ3t9JyIuZm9ybWF0KHN5cy5wbGF0Zm9ybSkpCi0gICAgICAgIHJldHVybiAw
Ci0KLSAgICBwaWQgPSBwaWRfZm9yX25hbWUoU1VCTUlUX0RJQUdfSU5GTykKLSAgICBpZiBub3Qg
cGlkOgotICAgICAgICBwcmludCgnRmFpbGVkIHRvIGZpbmQgYW55IHJ1bm5pbmcgcHJvY2VzcyBm
b3Ige30nLmZvcm1hdChTVUJNSVRfRElBR19JTkZPKSkKLSAgICAgICAgcmV0dXJuIDAKLSAgICBw
cmludCgnRm91bmQge30gcnVubmluZyB3aXRoIFBJRCB7fScuZm9ybWF0KFNVQk1JVF9ESUFHX0lO
Rk8sIHBpZCkpCi0KLSAgICBwcmludCgnV2FpdGluZyBmb3IgcHJvY2VzcyB7fSB0byBxdWllc2Nl
Jy5mb3JtYXQocGlkKSkKLSAgICB3aGlsZSBub3QgZGVhZGxpbmUgb3IgZGVhZGxpbmUgPiB0aW1l
LnRpbWUoKToKLSAgICAgICAgaWYgY3B1X3BlcmNlbnRhZ2UocGlkKSA8PSA1OgotICAgICAgICAg
ICAgcHJpbnQoJ1Byb2Nlc3Mge30gaGFzIHF1aWVzY2VkJy5mb3JtYXQocGlkKSkKLSAgICAgICAg
ICAgIHJldHVybiAwCi0gICAgICAgIHRpbWUuc2xlZXAoV0FJVF9TRUNPTkRTKQotCi0gICAgcHJp
bnQoJ1RpbWVkIG91dCB3YWl0aW5nIGZvciB7fSB0byBxdWllc2NlLCBjb250aW51ZScuZm9ybWF0
KHBpZCkpCi0gICAgcmV0dXJuIDAKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAg
IHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24KX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3dpbi9raWxsLW9sZC1wcm9jZXNzZXMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tpbGwtb2xkLXByb2Nl
c3NlcwkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tp
bGwtb2xkLXByb2Nlc3Nlcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLSMhL3Vzci9i
aW4vZW52IHB5dGhvbg0KLQ0KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuDQotIw0KLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0DQotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCi0jIGFyZSBt
ZXQ6DQotIw0KLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0DQotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiANCi0jIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUNCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiANCi0jDQotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQ0KLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRA0KLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQ0KLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsNCi0jIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORA0KLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
Rg0KLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4NCi0NCi1pbXBvcnQgb3MsIHN5cw0KLQ0KLWRlZiBtYWluKCk6DQotICAg
IHRhc2tzVG9LaWxsID0gWyAiY2wuZXhlIiwgDQotCQkJCQkiZGV2ZW52LmNvbSIsIA0KLQkJCQkJ
ImRldmVudi5leGUiLCANCi0JCQkJCSJEdW1wUmVuZGVyVHJlZS5leGUiLCANCi0JCQkJCSJEdW1w
UmVuZGVyVHJlZV9kZWJ1Zy5leGUiLA0KLQkJCQkJImh0dHBkLmV4ZSIsIA0KLQkJCQkJImltYWdl
ZGlmZi5leGUiLCANCi0JCQkJCSJpbWFnZWRpZmZfZGVidWcuZXhlIiwgDQotCQkJCQkianNjLmV4
ZSIsIA0KLQkJCQkJImpzY19kZWJ1Zy5leGUiLA0KLQkJCQkJIkxpZ2h0VFBELmV4ZSIsIA0KLQkJ
CQkJImxpbmsuZXhlIiwgDQotCQkJCQkibWlkbC5leGUiLCANCi0JCQkJCSJwZXJsLmV4ZSIsIA0K
LQkJCQkJIlNhZmFyaS5leGUiLCANCi0JCQkJCSJzdm4uZXhlIiwgDQotCQkJCQkidGVzdGFwaS5l
eGUiLCANCi0JCQkJCSJ0ZXN0YXBpX2RlYnVnLmV4ZSIsIA0KLQkJCQkJIlZjQnVpbGRIZWxwZXIu
ZXhlIiwgDQotCQkJCQkid2RpZmYuZXhlIiwgDQotCQkJCQkiV2ViS2l0MldlYlByb2Nlc3MuZXhl
IiwgDQotCQkJCQkiV2ViS2l0MldlYlByb2Nlc3NfZGVidWcuZXhlIiwgDQotCQkJCQkiV2ViS2l0
VGVzdFJ1bm5lci5leGUiLCANCi0JCQkJCSJXZWJLaXRUZXN0UnVubmVyX2RlYnVnLmV4ZSJdDQot
CQkJCQkNCi0gICAgZm9yIHRhc2sgaW4gdGFza3NUb0tpbGw6DQotICAgICAgICBvcy5zeXN0ZW0o
InRhc2traWxsIC90IC9mIC9pbSAiICsgdGFzaykNCi0NCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOg0KLSAgICBzeXMuZXhpdChtYWluKCkpDQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tpbGwtb2xkLXByb2Nlc3NlcwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSBAQAorbGluayBCdWlsZEF1dG9tYXRp
b24KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46c3BlY2lhbAojIyAtMCww
ICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1
aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwcy5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHMu
cHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9zdGVwcy5weQkod29ya2luZyBjb3B5KQpAQCAtMTIxLDI4ICsxMjEsMjgg
QEAgY2xhc3MgS2lsbE9sZFByb2Nlc3NlcyhzaGVsbC5Db21waWxlKToKICAgICBuYW1lID0gImtp
bGwtb2xkLXByb2Nlc3NlcyIKICAgICBkZXNjcmlwdGlvbiA9IFsia2lsbGluZyBvbGQgcHJvY2Vz
c2VzIl0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImtpbGxlZCBvbGQgcHJvY2Vzc2VzIl0KLSAg
ICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9s
ZC1wcm9jZXNzZXMiLCAiYnVpbGRib3QiXQorICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rv
b2xzL0J1aWxkQXV0b21hdGlvbi9raWxsLW9sZC1wcm9jZXNzZXMiLCAiYnVpbGRib3QiXQogCiAK
IGNsYXNzIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24oc2hlbGwuQ29tcGlsZSk6CiAgICAgbmFt
ZSA9ICJ0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uIgogICAgIGRlc2NyaXB0aW9uID0gWyJ0
cmlnZ2VyaW5nIGNyYXNoIGxvZyBzdWJtaXNzaW9uIl0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBb
InRyaWdnZXJlZCBjcmFzaCBsb2cgc3VibWlzc2lvbiJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9u
IiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lv
biJdCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRBdXRvbWF0aW9uL3Ry
aWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24iXQogCiAKIGNsYXNzIFdhaXRGb3JDcmFzaENvbGxl
Y3Rpb24oc2hlbGwuQ29tcGlsZSk6CiAgICAgbmFtZSA9ICJ3YWl0LWZvci1jcmFzaC1jb2xsZWN0
aW9uIgogICAgIGRlc2NyaXB0aW9uID0gWyJ3YWl0aW5nIGZvciBjcmFzaCBjb2xsZWN0aW9uIHRv
IHF1aWVzY2UiXQogICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiY3Jhc2ggY29sbGVjdGlvbiBoYXMg
cXVpZXNjZWQiXQotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24iLCAiLS10aW1lb3V0Iiwgc3RyKDUgKiA2
MCldCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRBdXRvbWF0aW9uL3dh
aXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24iLCAiLS10aW1lb3V0Iiwgc3RyKDUgKiA2MCldCiAKIAog
Y2xhc3MgQ2xlYW5CdWlsZElmU2NoZWR1bGVkKHNoZWxsLkNvbXBpbGUpOgogICAgIG5hbWUgPSAi
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeSIKICAgICBkZXNjcmlwdGlvbiA9IFsiZGVsZXRp
bmcgV2ViS2l0QnVpbGQgZGlyZWN0b3J5Il0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRlbGV0
ZWQgV2ViS2l0QnVpbGQgZGlyZWN0b3J5Il0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9jbGVhbi1idWlsZCIsIFdpdGhQcm9wZXJ0aWVzKCItLXBs
YXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0
aW9uKXMiKV0KKyAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZEF1dG9tYXRp
b24vY2xlYW4tYnVpbGQiLCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9y
bSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCiAKICAgICBkZWYg
c3RhcnQoc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmdldFByb3BlcnR5KCdpc19jbGVhbicp
OgpAQCAtMTU1LDcgKzE1NSw3IEBAIGNsYXNzIERlbGV0ZVN0YWxlQnVpbGRGaWxlcyhzaGVsbC5D
b21waWwKICAgICBuYW1lID0gImRlbGV0ZS1zdGFsZS1idWlsZC1maWxlcyIKICAgICBkZXNjcmlw
dGlvbiA9IFsiZGVsZXRpbmcgc3RhbGUgYnVpbGQgZmlsZXMiXQogICAgIGRlc2NyaXB0aW9uRG9u
ZSA9IFsiZGVsZXRlZCBzdGFsZSBidWlsZCBmaWxlcyJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9u
IiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzIiwg
V2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVy
dGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQorICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIu
L1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9kZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMiLCBXaXRoUHJv
cGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCIt
LSUoY29uZmlndXJhdGlvbilzIildCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuZ2V0UHJvcGVydHkoJ2lzX2NsZWFuJyk6ICAjIE5vdGhpbmcgdG8gYmUgZG9uZSBpZiBX
ZWJLaXRCdWlsZCBoYWQgYmVlbiByZW1vdmVkLgpAQCAtMjcxLDcgKzI3MSw3IEBAIGNsYXNzIENv
bXBpbGVKU0NPbmx5KENvbXBpbGVXZWJLaXQpOgogCiAKIGNsYXNzIEFyY2hpdmVCdWlsdFByb2R1
Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAorICAgIGNvbW1hbmQg
PSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsdC1wcm9kdWN0LWFyY2hp
dmUiLAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxh
dGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiYXJjaGl2
ZSJdCiAgICAgbmFtZSA9ICJhcmNoaXZlLWJ1aWx0LXByb2R1Y3QiCiAgICAgZGVzY3JpcHRpb24g
PSBbImFyY2hpdmluZyBidWlsdCBwcm9kdWN0Il0KQEAgLTI4MCw3ICsyODAsNyBAQCBjbGFzcyBB
cmNoaXZlQnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxsQ29tCiAKIAogY2xhc3MgQXJjaGl2ZU1pbmlm
aWVkQnVpbHRQcm9kdWN0KEFyY2hpdmVCdWlsdFByb2R1Y3QpOgotICAgIGNvbW1hbmQgPSBbInB5
dGhvbiIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZSIs
CisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWx0
LXByb2R1Y3QtYXJjaGl2ZSIsCiAgICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0
Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlv
bilzIiksICJhcmNoaXZlIiwgIi0tbWluaWZ5Il0KIAogCkBAIC0zMDcsNyArMzA3LDcgQEAgY2xh
c3MgR2VuZXJhdGVNaW5pQnJvd3NlckJ1bmRsZShzaGVsbC5TaAogCiAKIGNsYXNzIEV4dHJhY3RC
dWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24i
LCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAorICAg
IGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsdC1wcm9k
dWN0LWFyY2hpdmUiLAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09
JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIp
LCAiZXh0cmFjdCJdCiAgICAgbmFtZSA9ICJleHRyYWN0LWJ1aWx0LXByb2R1Y3QiCiAgICAgZGVz
Y3JpcHRpb24gPSBbImV4dHJhY3RpbmcgYnVpbHQgcHJvZHVjdCJdCkBAIC0zMzQsNyArMzM0LDcg
QEAgY2xhc3MgVXBsb2FkTWluaWZpZWRCdWlsdFByb2R1Y3QoVXBsb2FkQgogCiAKIGNsYXNzIERv
d25sb2FkQnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsi
cHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVj
dCIsCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2Rv
d25sb2FkLWJ1aWx0LXByb2R1Y3QiLAogICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9y
bT0lKHBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwK
ICAgICAgICAgV2l0aFByb3BlcnRpZXMoUzNVUkwgKyAiYXJjaGl2ZXMud2Via2l0Lm9yZy8lKGZ1
bGxQbGF0Zm9ybSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShnb3RfcmV2
aXNpb24pcy56aXAiKV0KICAgICBuYW1lID0gImRvd25sb2FkLWJ1aWx0LXByb2R1Y3QiCkBAIC01
NjAsNyArNTYwLDcgQEAgY2xhc3MgUnVuRGFzaGJvYXJkVGVzdHMoUnVuV2ViS2l0VGVzdHMpOgog
ICAgIHJlc3VsdERpcmVjdG9yeSA9IG9zLnBhdGguam9pbihSdW5XZWJLaXRUZXN0cy5yZXN1bHRE
aXJlY3RvcnksICJkYXNoYm9hcmQtbGF5b3V0LXRlc3QtcmVzdWx0cyIpCiAKICAgICBkZWYgc3Rh
cnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbIi0tbGF5
b3V0LXRlc3RzLWRpcmVjdG9yeSIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzIl0pCisg
ICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbIi0tbGF5b3V0LXRlc3RzLWRp
cmVjdG9yeSIsICIuL1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cyJdKQogICAgICAgICByZXR1cm4g
UnVuV2ViS2l0VGVzdHMuc3RhcnQoc2VsZikKIAogCkBAIC05OTksNyArOTk5LDcgQEAgY2xhc3Mg
UnVuQmVuY2htYXJrVGVzdHMoc2hlbGwuVGVzdCk6CiAKIAogY2xhc3MgQXJjaGl2ZVRlc3RSZXN1
bHRzKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1bHQtYXJjaGl2ZSIsCisgICAgY29tbWFuZCA9
IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRBdXRvbWF0aW9uL3Rlc3QtcmVzdWx0LWFyY2hpdmUi
LAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShwbGF0Zm9ybSlz
IiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksICJhcmNoaXZlIl0KICAg
ICBuYW1lID0gImFyY2hpdmUtdGVzdC1yZXN1bHRzIgogICAgIGRlc2NyaXB0aW9uID0gWyJhcmNo
aXZpbmcgdGVzdCByZXN1bHRzIl0KSW5kZXg6IFRvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkQXV0
b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5CShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2ti
dWlsZC5weQkod29ya2luZyBjb3B5KQpAQCAtNTksNyArNTksNyBAQCBkZWYgX3Nob3VsZF9maWxl
X3RyaWdnZXJfYnVpbGQodGFyZ2V0X3BsCiAgICAgICAgICgiRXhhbXBsZXMiLCBbXSksCiAgICAg
ICAgICgiUGVyZm9ybWFuY2VUZXN0cyIsIFtdKSwKICAgICAgICAgKCJNYW51YWxUZXN0cyIsIFtd
KSwKLSAgICAgICAgKCJUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbCIsIFtdKSwKKyAgICAgICAgKCJUb29scy9CdWlsZEF1dG9tYXRpb24v
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwiLCBbXSksCiAgICAgICAgICgiV2Vi
c2l0ZXMiLCBbXSksCiAgICAgICAgICgib3BlbmdsIiwgW10pLAogICAgICAgICAoIm9wZW50eXBl
IiwgW10pLApJbmRleDogVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3drYnVpbGRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRBdXRvbWF0
aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKHJldmlzaW9u
IDI2ODczMSkKKysrIFRvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy93a2J1aWxkX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02NSw3ICs2NSw3IEBAIGNs
YXNzIFNob3VsZEJ1aWxkVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSkKICAgICAgICAgKFsiU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbSJdLCBbImlvcy0x
NCIsICJpb3Mtc2ltdWxhdG9yLTE0IiwgInR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAi
d2F0Y2hvcy03IiwgIndhdGNob3Mtc2ltdWxhdG9yLTciXSksCiAgICAgICAgIChbIlNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5tbSIsICJTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWVNYWMuaCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFu
IiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKICAgICAg
ICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lSU9TLm1tIiwgIlNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUlPUy5oIl0sIFsiaW9zLTE0IiwgImlvcy1z
aW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTci
LCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAgICAgKFsiVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVh
a3NWaWV3ZXIuanMiXSwgW10pLAorICAgICAgICAoWyJUb29scy9CdWlsZEF1dG9tYXRpb24vYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NWaWV3ZXIu
anMiXSwgW10pLAogICAgIF0KIAogICAgIGRlZiB0ZXN0X3Nob3VsZF9idWlsZChzZWxmKToKSW5k
ZXg6IFRvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5qcwkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5q
cwkod29ya2luZyBjb3B5KQpAQCAtOTAsNyArOTAsNyBAQCB2YXIga0V4YW1wbGVXZWJLaXREb3RP
cmdCdWlsZGVyU3RhdHVzSlNPCiB2YXIga0V4YW1wbGVCdWlsZEluZm9KU09OID0gewogICAgICJi
bGFtZSI6IFsiYWJhcnRoQHdlYmtpdC5vcmciXSwKICAgICAiYnVpbGRlck5hbWUiOiAiV2ViS2l0
IExpbnV4IiwKLSAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4u
anNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5n
ZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHksIG1h
aW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cg
dG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOlBy
b3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dcbiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1z
aGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlw
bGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2Fs
LWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Jl
cGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRodSAwNCBB
dWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRz
OiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNl
dC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNl
dC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0
L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9y
aXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFp
bnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRm
b3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4
cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwKKyAgICAiY2hhbmdlcyI6IFsiRmlsZXM6
XG4gVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzXG4gVG9vbHMvQ2hhbmdlTG9nXG5BdDogVGh1IDA0IEF1
ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29tbWVudHM6
IEZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVl
ZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxu
KiBCdWlsZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL21haW4uanM6UHJvcGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRl
c3RzL0NoYW5nZUxvZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2Jv
eC1zaGFkb3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRh
bC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9y
ZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0
aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0
ZWQucG5nXG5BdDogVGh1IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhA
d2Via2l0Lm9yZ1xuQ29tbWVudHM6IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1l
eHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4
cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ct
bXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAogICAg
ICJjdXJyZW50U3RlcCI6IG51bGwsCiAgICAgImV0YSI6IG51bGwsCiAgICAgImxvZ3MiOiBbCkBA
IC0xMjcsOCArMTI3LDggQEAgdmFyIGtFeGFtcGxlQnVpbGRJbmZvSlNPTiA9IHsKICAgICAgICAg
ICAgICJjaGFuZ2VzIjogW3sKICAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKICAg
ICAgICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50
cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJ
IG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4p
XG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAorICAgICAgICAgICAg
ICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBj
b3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBv
ZiB0aGUgY29kZS4pXG5cbiogQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCisgICAgICAgICAgICAgICAgImZp
bGVzIjogWyJUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCiAgICAg
ICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAogICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVz
IjogW10sCiAgICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKQEAgLTE2MSw4ICsxNjEs
OCBAQCB2YXIga0V4YW1wbGVCdWlsZEluZm9KU09OID0gewogICAgICAgICAiY2hhbmdlcyI6IFt7
CiAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKICAgICAgICAgICAgICJjYXRlZ29yeSI6
IG51bGwsCi0gICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4u
anMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8g
dGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCi0g
ICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0No
YW5nZUxvZyJdLAorICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBt
YWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93
IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBCdWlsZEF1dG9tYXRpb24vYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwK
KyAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0No
YW5nZUxvZyJdLAogICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAogICAgICAgICAgICAgInBy
b3BlcnRpZXMiOiBbXSwKICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCkBAIC03MTUsNyAr
NzE1LDcgQEAgdmFyIGtFeGFtcGxlUGVyZkJ1aWxkZXJTdGF0dXNKU09OID0gIHsKIHZhciBrRXhh
bXBsZVBlcmZCdWlsZEluZm9KU09OID0gewogICAgICJibGFtZSI6IFsiYWJhcnRoQHdlYmtpdC5v
cmciXSwKICAgICAiYnVpbGRlck5hbWUiOiAiTWFjMTAuNiBQZXJmIiwKLSAgICAiY2hhbmdlcyI6
IFsiRmlsZXM6XG4gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0
OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3Jn
XG5Db21tZW50czogRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJh
Z2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhl
IGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxl
czpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRp
cGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhw
ZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZl
cnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdl
ZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVy
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5w
bmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9y
ZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4q
IHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmlj
dC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Jl
cGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBc
blxuXG4iXSwKKyAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQnVpbGRBdXRvbWF0aW9u
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpz
XG4gVG9vbHMvQ2hhbmdlTG9nXG5BdDogVGh1IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2Vk
IEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29tbWVudHM6IEZpeCB0eXBlcy4gIFNhZGx5LCBtYWlu
LmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRv
IHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBCdWlsZEF1dG9tYXRpb24vYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6UHJvcGVy
dGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5nZUxvZ1xuIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNoYWRv
d3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
cmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1z
dHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhw
ZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5BdDogVGh1IDA0IEF1ZyAy
MDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29tbWVudHM6IFVw
ZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJv
eC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9u
dGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0
ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAogICAgICJjdXJyZW50U3RlcCI6IG51bGwsCiAg
ICAgImV0YSI6IG51bGwsCiAgICAgImxvZ3MiOiBbCkBAIC03NTIsOCArNzUyLDggQEAgdmFyIGtF
eGFtcGxlUGVyZkJ1aWxkSW5mb0pTT04gPSB7CiAgICAgICAgICAgICAiY2hhbmdlcyI6IFt7CiAg
ICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCiAgICAgICAgICAgICAgICAgImNhdGVn
b3J5IjogbnVsbCwKLSAgICAgICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2Fk
bHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91
dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWlu
LmpzOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5q
cyIsICJUb29scy9DaGFuZ2VMb2ciXSwKKyAgICAgICAgICAgICAgICAiY29tbWVudHMiOiAiRml4
IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRv
IHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1
aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qczoiLAorICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRB
dXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAogICAgICAgICAgICAgICAgICJudW1iZXIi
OiA0MzcwNywKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAogICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5IjogIiIsCkBAIC03ODYsOCArNzg2LDggQEAgdmFyIGtFeGFtcGxlUGVy
ZkJ1aWxkSW5mb0pTT04gPSB7CiAgICAgICAgICJjaGFuZ2VzIjogW3sKICAgICAgICAgICAgICJi
cmFuY2giOiAidHJ1bmsiLAogICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAg
ICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBj
b3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBv
ZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICJmaWxl
cyI6IFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCisgICAg
ICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRl
c3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBh
cnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAorICAgICAgICAgICAgImZp
bGVzIjogWyJUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCiAgICAg
ICAgICAgICAibnVtYmVyIjogNDM3MDcsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAog
ICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKSW5kZXg6IFRvb2xzL0J1aWxkQXV0b21hdGlv
bi9ld3MtYXBwL2V3cy92aWV3cy9zdGF0dXNidWJibGUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRBdXRvbWF0aW9uL2V3cy1hcHAvZXdzL3ZpZXdzL3N0YXR1c2J1YmJsZS5weQkocmV2aXNp
b24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1hcHAvZXdzL3ZpZXdzL3N0
YXR1c2J1YmJsZS5weQkod29ya2luZyBjb3B5KQpAQCAtNDAsNyArNDAsNyBAQCBfbG9nID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAogY2xhc3MgU3RhdHVzQnViYmxlKFZpZXcpOgot
ICAgICMgVGhlc2UgcXVldWUgbmFtZXMgYXJlIGZyb20gc2hvcnRuYW1lIGluIGh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL2Jyb3dzZXIvd2Via2l0L3RydW5rL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1idWlsZC9jb25maWcuanNvbgorICAgICMgVGhlc2UgcXVldWUgbmFtZXMgYXJlIGZyb20g
c2hvcnRuYW1lIGluIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvd2Via2l0L3RydW5r
L1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9ld3MtYnVpbGQvY29uZmlnLmpzb24KICAgICAjIEZJWE1F
OiBBdXRvLWdlbmVyYXRlIHRoaXMgbGlzdCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTk1NjQwCiAgICAgIyBOb3RlOiBUaGlzIGxpc3QgaXMgc29ydGVkIGluIHRoZSBv
cmRlciBvZiB3aGljaCBidWJibGVzIGFwcGVhciBpbiBidWd6aWxsYS4KICAgICBBTExfUVVFVUVT
ID0gWydzdHlsZScsICdpb3MnLCAnaW9zLXNpbScsICdtYWMnLCAnbWFjLWRlYnVnJywgJ21hYy1B
UycsICd0dicsICd0di1zaW0nLCAnd2F0Y2gnLCAnd2F0Y2gtc2ltJywgJ2d0aycsICd3cGUnLCAn
d2luY2Fpcm8nLCAnd2luJywKSW5kZXg6IFRvb2xzL0J1aWxkQXV0b21hdGlvbi9ld3MtYnVpbGQv
c3RlcHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1idWlsZC9z
dGVwcy5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1i
dWlsZC9zdGVwcy5weQkod29ya2luZyBjb3B5KQpAQCAtMjU1LDkgKzI1NSw5IEBAIGNsYXNzIENo
ZWNrUGF0Y2hSZWxldmFuY2UoYnVpbGRzdGVwLkJ1aWwKICAgICBdCiAKICAgICBzZXJ2aWNlc19w
YXRocyA9IFsKLSAgICAgICAgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnJywKLSAgICAgICAgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZCcs
Ci0gICAgICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9TaGFyZWQnLAorICAgICAgICAnVG9v
bHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKKyAgICAgICAgJ1Rv
b2xzL0J1aWxkQXV0b21hdGlvbi9ld3MtYnVpbGQnLAorICAgICAgICAnVG9vbHMvQnVpbGRBdXRv
bWF0aW9uL1NoYXJlZCcsCiAgICAgICAgICdUb29scy9TY3JpcHRzL2xpYnJhcmllcy9yZXN1bHRz
ZGJweScsCiAgICAgXQogCkBAIC0xMTI1LDcgKzExMjUsNyBAQCBjbGFzcyBSdW5CdWlsZFdlYktp
dE9yZ1VuaXRUZXN0cyhzaGVsbC5TCiAgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ3N0ZXBzX3Vu
aXR0ZXN0LnB5J10KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAg
IHNoZWxsLlNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCB3b3JrZGlyPSdidWlsZC9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZycsIHRpbWVvdXQ9MiAqIDYw
LCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKKyAgICAgICAgc2hlbGwuU2hlbGxDb21tYW5k
Ll9faW5pdF9fKHNlbGYsIHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9idWls
ZC53ZWJraXQub3JnLWNvbmZpZycsIHRpbWVvdXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAq
Kmt3YXJncykKIAogICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgogICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKQEAgLTExMzYsNyArMTEzNiw3IEBAIGNsYXNzIFJ1bkJ1
aWxkV2ViS2l0T3JnVW5pdFRlc3RzKHNoZWxsLlMKIGNsYXNzIFJ1bkVXU1VuaXRUZXN0cyhzaGVs
bC5TaGVsbENvbW1hbmQpOgogICAgIG5hbWUgPSAnZXdzLXVuaXQtdGVzdHMnCiAgICAgZGVzY3Jp
cHRpb24gPSBbJ2V3cy11bml0LXRlc3RzIHJ1bm5pbmcnXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRlc3RzLnB5J10K
KyAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1idWls
ZC9ydW5Vbml0dGVzdHMucHknXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToK
ICAgICAgICAgc3VwZXIoUnVuRVdTVW5pdFRlc3RzLCBzZWxmKS5fX2luaXRfXyh0aW1lb3V0PTIg
KiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCkBAIC0xMTUzLDcgKzExNTMsNyBAQCBj
bGFzcyBSdW5FV1NCdWlsZGJvdENoZWNrQ29uZmlnKHNoZWxsLlNoCiAgICAgY29tbWFuZCA9IFsn
YnVpbGRib3QnLCAnY2hlY2tjb25maWcnXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dh
cmdzKToKLSAgICAgICAgc3VwZXIoUnVuRVdTQnVpbGRib3RDaGVja0NvbmZpZywgc2VsZikuX19p
bml0X18od29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkJywg
dGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQorICAgICAgICBzdXBl
cihSdW5FV1NCdWlsZGJvdENoZWNrQ29uZmlnLCBzZWxmKS5fX2luaXRfXyh3b3JrZGlyPSdidWls
ZC9Ub29scy9CdWlsZEF1dG9tYXRpb24vZXdzLWJ1aWxkJywgdGltZW91dD0yICogNjAsIGxvZ0Vu
dmlyb249RmFsc2UsICoqa3dhcmdzKQogCiAgICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6
CiAgICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgpAQCAtMTgyNCwxNCArMTgyNCwx
NCBAQCBjbGFzcyBDbGVhbkJ1aWxkKHNoZWxsLkNvbXBpbGUpOgogICAgIG5hbWUgPSAnZGVsZXRl
LVdlYktpdEJ1aWxkLWRpcmVjdG9yeScKICAgICBkZXNjcmlwdGlvbiA9IFsnZGVsZXRpbmcgV2Vi
S2l0QnVpbGQgZGlyZWN0b3J5J10KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0RlbGV0ZWQgV2Vi
S2l0QnVpbGQgZGlyZWN0b3J5J10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCBXaXRoUHJvcGVydGllcygnLS1wbGF0Zm9ybT0l
KGZ1bGxQbGF0Zm9ybSlzJyksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyld
CisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9jbGVhbi1i
dWlsZCcsIFdpdGhQcm9wZXJ0aWVzKCctLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMnKSwgV2l0
aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0KIAogCiBjbGFzcyBLaWxsT2xkUHJv
Y2Vzc2VzKHNoZWxsLkNvbXBpbGUpOgogICAgIG5hbWUgPSAna2lsbC1vbGQtcHJvY2Vzc2VzJwog
ICAgIGRlc2NyaXB0aW9uID0gWydraWxsaW5nIG9sZCBwcm9jZXNzZXMnXQogICAgIGRlc2NyaXB0
aW9uRG9uZSA9IFsnS2lsbGVkIG9sZCBwcm9jZXNzZXMnXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMnLCAnYnVpbGRi
b3QnXQorICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24va2ls
bC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxkYm90J10KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
Kmt3YXJncyk6CiAgICAgICAgIHN1cGVyKEtpbGxPbGRQcm9jZXNzZXMsIHNlbGYpLl9faW5pdF9f
KHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQpAQCAtMTg1MSw3ICsxODUx
LDcgQEAgY2xhc3MgVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbihzaGVsbC5DbwogICAgIG5hbWUg
PSAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicKICAgICBkZXNjcmlwdGlvbiA9IFsndHJp
Z2dlcmluZyBjcmFzaCBsb2cgc3VibWlzc2lvbiddCiAgICAgZGVzY3JpcHRpb25Eb25lID0gWydU
cmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24nXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbics
ICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJ10K
KyAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRBdXRvbWF0aW9uL3RyaWdnZXIt
Y3Jhc2gtbG9nLXN1Ym1pc3Npb24nXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdz
KToKICAgICAgICAgc3VwZXIoVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiwgc2VsZikuX19pbml0
X18odGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCkBAIC0xODY2LDcgKzE4
NjYsNyBAQCBjbGFzcyBXYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKHNoZWxsLkNvbXBpCiAgICAgbmFt
ZSA9ICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJwogICAgIGRlc2NyaXB0aW9uID0gWyd3YWl0
aW5nLWZvci1jcmFzaC1jb2xsZWN0aW9uLXRvLXF1aWVzY2UnXQogICAgIGRlc2NyaXB0aW9uRG9u
ZSA9IFsnQ3Jhc2ggY29sbGVjdGlvbiBoYXMgcXVpZXNjZWQnXQotICAgIGNvbW1hbmQgPSBbJ3B5
dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC93YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9u
JywgJy0tdGltZW91dCcsIHN0cig1ICogNjApXQorICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdU
b29scy9CdWlsZEF1dG9tYXRpb24vd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICctLXRpbWVv
dXQnLCBzdHIoNSAqIDYwKV0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CiAg
ICAgICAgIHN1cGVyKFdhaXRGb3JDcmFzaENvbGxlY3Rpb24sIHNlbGYpLl9faW5pdF9fKHRpbWVv
dXQ9NiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKQEAgLTIzMzksNyArMjMzOSw3
IEBAIGNsYXNzIFJ1bldlYktpdDFUZXN0cyhSdW5XZWJLaXRUZXN0cyk6CiAKIAogY2xhc3MgQXJj
aGl2ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5
dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLAor
ICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbHQtcHJv
ZHVjdC1hcmNoaXZlJywKICAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCctLXBsYXRmb3Jt
PSUoZnVsbFBsYXRmb3JtKXMnKSwgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMn
KSwgJ2FyY2hpdmUnXQogICAgIG5hbWUgPSAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JwogICAgIGRl
c2NyaXB0aW9uID0gWydhcmNoaXZpbmcgYnVpbHQgcHJvZHVjdCddCkBAIC0yNDE0LDcgKzI0MTQs
NyBAQCBjbGFzcyBUcmFuc2ZlclRvUzMobWFzdGVyLk1hc3RlclNoZWxsQ29tCiAKIAogY2xhc3Mg
RG93bmxvYWRCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0g
WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVj
dCcsCisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9kb3du
bG9hZC1idWlsdC1wcm9kdWN0JywKICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1
cmF0aW9uKXMnKSwKICAgICAgICAgV2l0aFByb3BlcnRpZXMoUzNVUkwgKyAnZXdzLWFyY2hpdmVz
LndlYmtpdC5vcmcvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJh
dGlvbilzLyUocGF0Y2hfaWQpcy56aXAnKV0KICAgICBuYW1lID0gJ2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnCkBAIC0yNDM4LDcgKzI0MzgsNyBAQCBjbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdChz
aGVsbC5TaGVsbENvCiAKIAogY2xhc3MgRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyKERv
d25sb2FkQnVpbHRQcm9kdWN0KToKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsCisgICAgY29tbWFuZCA9IFsn
cHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywK
ICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwKICAgICAgICAg
V2l0aFByb3BlcnRpZXMoRVdTX0JVSUxEX1VSTCArICdhcmNoaXZlcy8lKGZ1bGxQbGF0Zm9ybSlz
LSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShwYXRjaF9pZClzLnppcCcpXQog
ICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCkBAIC0yNDU0LDcgKzI0NTQsNyBAQCBjbGFzcyBEb3du
bG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIoRG93CiAKIAogY2xhc3MgRXh0cmFjdEJ1aWx0UHJv
ZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLAorICAgIGNvbW1hbmQg
PSBbJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24vYnVpbHQtcHJvZHVjdC1hcmNoaXZl
JywKICAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCctLXBsYXRmb3JtPSUoZnVsbFBsYXRm
b3JtKXMnKSwgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwgJ2V4dHJhY3Qn
XQogICAgIG5hbWUgPSAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JwogICAgIGRlc2NyaXB0aW9uID0g
WydleHRyYWN0aW5nIGJ1aWx0IHByb2R1Y3QnXQpAQCAtMjY5Niw3ICsyNjk2LDcgQEAgY2xhc3Mg
QW5hbHl6ZUFQSVRlc3RzUmVzdWx0cyhidWlsZHN0ZXAuQgogICAgICAgICAgICAgcHJpbnQoJ0Vy
cm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIHByZS1leGlzdGluZyBmYWlsdXJlOiB7fScuZm9ybWF0
KGUpKQogCiBjbGFzcyBBcmNoaXZlVGVzdFJlc3VsdHMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAg
ICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1
bHQtYXJjaGl2ZScsCisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21h
dGlvbi90ZXN0LXJlc3VsdC1hcmNoaXZlJywKICAgICAgICAgICAgICAgIEludGVycG9sYXRlKCct
LXBsYXRmb3JtPSUocHJvcDpwbGF0Zm9ybSlzJyksIEludGVycG9sYXRlKCctLSUocHJvcDpjb25m
aWd1cmF0aW9uKXMnKSwgJ2FyY2hpdmUnXQogICAgIG5hbWUgPSAnYXJjaGl2ZS10ZXN0LXJlc3Vs
dHMnCiAgICAgZGVzY3JpcHRpb24gPSBbJ2FyY2hpdmluZyB0ZXN0IHJlc3VsdHMnXQpJbmRleDog
VG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1idWlsZC9zdGVwc191bml0dGVzdC5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9CdWlsZEF1dG9tYXRpb24vZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5
CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9CdWlsZEF1dG9tYXRpb24vZXdzLWJ1aWxkL3N0
ZXBzX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MjYsNyArNjI2LDcgQEAgY2xhc3Mg
VGVzdFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcoQnVpbAogICAgIGRlZiB0ZXN0X3N1Y2Nlc3Mo
c2VsZik6CiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWco
KSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZCcs
CisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZEF1dG9t
YXRpb24vZXdzLWJ1aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAog
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydidWlsZGJvdCcsICdjaGVja2NvbmZpZyddLApAQCAtNjM5LDcg
KzYzOSw3IEBAIGNsYXNzIFRlc3RSdW5FV1NCdWlsZGJvdENoZWNrQ29uZmlnKEJ1aWwKICAgICBk
ZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5FV1NCdWls
ZGJvdENoZWNrQ29uZmlnKCkpCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0g
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYnVpbGQnLAorICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQv
VG9vbHMvQnVpbGRBdXRvbWF0aW9uL2V3cy1idWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICB0aW1lb3V0PTEyMCwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsnYnVpbGRib3QnLCAnY2hlY2tjb25m
aWcnXSwKQEAgLTY2NSw3ICs2NjUsNyBAQCBjbGFzcyBUZXN0UnVuRVdTVW5pdFRlc3RzKEJ1aWxk
U3RlcE1peGluCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAg
ICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKICAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0
aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9ydW5Vbml0dGVzdHMucHkn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVp
bGRBdXRvbWF0aW9uL2V3cy1idWlsZC9ydW5Vbml0dGVzdHMucHknXSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgICsgMCwKICAgICAgICAgKQpAQCAtNjc4LDcgKzY3OCw3
IEBAIGNsYXNzIFRlc3RSdW5FV1NVbml0VGVzdHMoQnVpbGRTdGVwTWl4aW4KICAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9MTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weSddLAorICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24vZXdzLWJ1aWxk
L3J1blVuaXR0ZXN0cy5weSddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmhhbmRsZWQgRXJyb3IuIFRy
YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTogS2V5cyBpbiBjbWQgbWlzc2luZyBmcm9t
IGV4cGVjdGF0aW9uOiBbbG9nZmlsZXMuanNvbl0nKQogICAgICAgICAgICAgKyAyLApAQCAtNzM0
LDcgKzczNCw3IEBAIGNsYXNzIFRlc3RSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cyhCdWkKICAg
ICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgogICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5CdWls
ZFdlYktpdE9yZ1VuaXRUZXN0cygpKQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcnLAorICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnJywKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAogICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNfdW5pdHRlc3QucHknXSwKQEAgLTc0Nyw3ICs3NDcs
NyBAQCBjbGFzcyBUZXN0UnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoQnVpCiAgICAgZGVmIHRl
c3RfZmFpbHVyZShzZWxmKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQnVpbGRXZWJLaXRP
cmdVbml0VGVzdHMoKSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAg
ICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKKyAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtk
aXI9J2J1aWxkL1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9idWlsZC53ZWJraXQub3JnLWNvbmZpZycs
CiAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncHl0aG9uJywgJ3N0ZXBzX3VuaXR0ZXN0LnB5J10sCkBAIC03NzEsNyArNzcxLDcgQEAgY2xh
c3MgVGVzdEtpbGxPbGRQcm9jZXNzZXMoQnVpbGRTdGVwTWl4aQogICAgICAgICBzZWxmLnNldHVw
U3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2tpbGwtb2xkLXByb2Nlc3NlcycsICdidWlsZGJvdCddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24va2lsbC1vbGQtcHJv
Y2Vzc2VzJywgJ2J1aWxkYm90J10sCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9u
PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD02MCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICkKQEAgLTc4NCw3ICs3ODQsNyBAQCBjbGFzcyBUZXN0S2lsbE9sZFByb2Nl
c3NlcyhCdWlsZFN0ZXBNaXhpCiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNz
ZXMoKSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2Vz
JywgJ2J1aWxkYm90J10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9u
JywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9raWxsLW9sZC1wcm9jZXNzZXMnLCAnYnVpbGRib3Qn
XSwKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0PTYwLAogICAgICAgICAgICAgICAgICAgICAgICAgKQpAQCAt
ODA5LDcgKzgwOSw3IEBAIGNsYXNzIFRlc3RDbGVhbkJ1aWxkKEJ1aWxkU3RlcE1peGluQWRkaXQK
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKICAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCAnLS1wbGF0Zm9ybT1p
b3MtMTEnLCAnLS1yZWxlYXNlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9jbGVhbi1idWlsZCcsICctLXBsYXRmb3Jt
PWlvcy0xMScsICctLXJlbGVhc2UnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICsgMCwKICAgICAgICAgKQpAQCAtODIyLDcgKzgyMiw3IEBAIGNsYXNzIFRlc3RDbGVh
bkJ1aWxkKEJ1aWxkU3RlcE1peGluQWRkaXQKICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29u
ZmlndXJhdGlvbicsICdkZWJ1ZycpCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
CiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Ns
ZWFuLWJ1aWxkJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvci0xMScsICctLWRlYnVnJ10sCisg
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0
b21hdGlvbi9jbGVhbi1idWlsZCcsICctLXBsYXRmb3JtPWlvcy1zaW11bGF0b3ItMTEnLCAnLS1k
ZWJ1ZyddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGVycm9yLicpCiAgICAgICAgICAg
ICArIDIsCkBAIC0yNDYzLDcgKzI0NjMsNyBAQCBjbGFzcyBUZXN0QXJjaGl2ZUJ1aWx0UHJvZHVj
dChCdWlsZFN0ZXBNCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAg
ICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5
dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAn
LS1wbGF0Zm9ybT1pb3Mtc2ltdWxhdG9yJywgICctLXJlbGVhc2UnLCAnYXJjaGl2ZSddLAorICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9t
YXRpb24vYnVpbHQtcHJvZHVjdC1hcmNoaXZlJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvcics
ICAnLS1yZWxlYXNlJywgJ2FyY2hpdmUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAg
ICAgICAgICAgICsgMCwKICAgICAgICAgKQpAQCAtMjQ3Nyw3ICsyNDc3LDcgQEAgY2xhc3MgVGVz
dEFyY2hpdmVCdWlsdFByb2R1Y3QoQnVpbGRTdGVwTQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQt
cHJvZHVjdC1hcmNoaXZlJywgJy0tcGxhdGZvcm09bWFjLXNpZXJyYScsICAnLS1kZWJ1ZycsICdh
cmNoaXZlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rv
b2xzL0J1aWxkQXV0b21hdGlvbi9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1t
YWMtc2llcnJhJywgICctLWRlYnVnJywgJ2FyY2hpdmUnXSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICkKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5l
eHBlY3RlZCBmYWlsdXJlLicpCiAgICAgICAgICAgICArIDIsCkBAIC0yNTU0LDcgKzI1NTQsNyBA
QCBjbGFzcyBUZXN0RG93bmxvYWRCdWlsdFByb2R1Y3QoQnVpbGRTdGVwCiAgICAgICAgIHNlbGYu
ZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3
a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0tcmVsZWFzZScsICdodHRwczovL3MzLXVz
LXdlc3QtMi5hbWF6b25hd3MuY29tL2V3cy1hcmNoaXZlcy53ZWJraXQub3JnL2lvcy1zaW11bGF0
b3ItMTIteDg2XzY0LXJlbGVhc2UvMTIzNC56aXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRBdXRvbWF0aW9uL2Rvd25sb2FkLWJ1aWx0
LXByb2R1Y3QnLCAnLS1yZWxlYXNlJywgJ2h0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5j
b20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVsYXRvci0xMi14ODZfNjQtcmVsZWFz
ZS8xMjM0LnppcCddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAw
LAogICAgICAgICApCkBAIC0yNTcwLDcgKzI1NzAsNyBAQCBjbGFzcyBUZXN0RG93bmxvYWRCdWls
dFByb2R1Y3QoQnVpbGRTdGVwCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAg
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9k
dWN0JywgJy0tZGVidWcnLCAnaHR0cHM6Ly9zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9ld3Mt
YXJjaGl2ZXMud2Via2l0Lm9yZy9tYWMtc2llcnJhLXg4Nl82NC1kZWJ1Zy8xMjM0NTYuemlwJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxk
QXV0b21hdGlvbi9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0tZGVidWcnLCAnaHR0cHM6Ly9z
My11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9ld3MtYXJjaGl2ZXMud2Via2l0Lm9yZy9tYWMtc2ll
cnJhLXg4Nl82NC1kZWJ1Zy8xMjM0NTYuemlwJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAp
CiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0
ZWQgZmFpbHVyZS4nKQogICAgICAgICAgICAgKyAyLApAQCAtMjU5Niw3ICsyNTk2LDcgQEAgY2xh
c3MgVGVzdERvd25sb2FkQnVpbHRQcm9kdWN0RnJvbU1hc3RlcgogICAgICAgICBzZWxmLmV4cGVj
dFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXIn
LAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLXJlbGVhc2UnLCAnaHR0cHM6Ly9ld3MtYnVpbGQu
d2Via2l0Lm9yZy9hcmNoaXZlcy9pb3Mtc2ltdWxhdG9yLTEyLXg4Nl82NC1yZWxlYXNlLzEyMzQu
emlwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xz
L0J1aWxkQXV0b21hdGlvbi9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0tcmVsZWFzZScsICdo
dHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FyY2hpdmVzL2lvcy1zaW11bGF0b3ItMTIteDg2
XzY0LXJlbGVhc2UvMTIzNC56aXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICsgMCwKICAgICAgICAgKQpAQCAtMjYxMiw3ICsyNjEyLDcgQEAgY2xhc3MgVGVzdERv
d25sb2FkQnVpbHRQcm9kdWN0RnJvbU1hc3RlcgogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNv
bW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQt
YnVpbHQtcHJvZHVjdCcsICctLWRlYnVnJywgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcv
YXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQtZGVidWcvMTIzNDU2LnppcCddLAorICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24v
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLWRlYnVnJywgJ2h0dHBzOi8vZXdzLWJ1aWxkLndl
YmtpdC5vcmcvYXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQtZGVidWcvMTIzNDU2LnppcCddLAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2co
J3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKICAgICAgICAgICAgICsgMiwK
QEAgLTI2MzYsNyArMjYzNiw3IEBAIGNsYXNzIFRlc3RFeHRyYWN0QnVpbHRQcm9kdWN0KEJ1aWxk
U3RlcE0KICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywg
J1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRm
b3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdleHRyYWN0J10sCisgICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkQXV0b21hdGlvbi9i
dWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1pb3Mtc2ltdWxhdG9yJywgICctLXJl
bGVhc2UnLCAnZXh0cmFjdCddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAg
ICAgKyAwLAogICAgICAgICApCkBAIC0yNjUwLDcgKzI2NTAsNyBAQCBjbGFzcyBUZXN0RXh0cmFj
dEJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0
LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMtc2llcnJhJywgICctLWRlYnVnJywgJ2V4dHJhY3Qn
XSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVp
bGRBdXRvbWF0aW9uL2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPW1hYy1zaWVy
cmEnLCAgJy0tZGVidWcnLCAnZXh0cmFjdCddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQog
ICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVk
IGZhaWx1cmUuJykKICAgICAgICAgICAgICsgMiwKQEAgLTMxMDQsNyArMzEwNCw3IEBAIGNsYXNz
IFRlc3RBcmNoaXZlVGVzdFJlc3VsdHMoQnVpbGRTdGVwTWkKICAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3Rl
c3QtcmVzdWx0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1pb3Mtc2ltdWxhdG9yJywgICctLXJlbGVh
c2UnLCAnYXJjaGl2ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhv
bicsICdUb29scy9CdWlsZEF1dG9tYXRpb24vdGVzdC1yZXN1bHQtYXJjaGl2ZScsICctLXBsYXRm
b3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdhcmNoaXZlJ10sCiAgICAgICAgICAg
ICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDAsCiAgICAgICAgICkKQEAgLTMxMTksNyAr
MzExOSw3IEBAIGNsYXNzIFRlc3RBcmNoaXZlVGVzdFJlc3VsdHMoQnVpbGRTdGVwTWkKICAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L3Rlc3QtcmVzdWx0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMnLCAgJy0t
ZGVidWcnLCAnYXJjaGl2ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5
dGhvbicsICdUb29scy9CdWlsZEF1dG9tYXRpb24vdGVzdC1yZXN1bHQtYXJjaGl2ZScsICctLXBs
YXRmb3JtPW1hYycsICAnLS1kZWJ1ZycsICdhcmNoaXZlJ10sCiAgICAgICAgICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1Vu
ZXhwZWN0ZWQgZmFpbHVyZS4nKQogICAgICAgICAgICAgKyAyLApJbmRleDogVG9vbHMvRVdTVG9v
bHMvU3RhcnQtUXVldWUucHMxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0VXU1Rvb2xzL1N0YXJ0LVF1
ZXVlLnBzMQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvRVdTVG9vbHMvU3RhcnQtUXVldWUu
cHMxCSh3b3JraW5nIGNvcHkpCkBAIC05OSw1ICs5OSw1IEBAIHdoaWxlICgkdHJ1ZSkgewogCiAg
ICAgcGVybCAuL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdDsKICAgICBweXRob24gLi9Ub29s
cy9TY3JpcHRzL3dlYmtpdC1wYXRjaCAkcXVldWUgLS1ib3QtaWQ9JG5hbWUgLS1uby1jb25maXJt
IC0tZXhpdC1hZnRlci1pdGVyYXRpb24gJGl0ZXJhdGlvbnM7Ci0gICAgcHl0aG9uIC9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMKKyAgICBweXRob24gL1Rvb2xzL0J1
aWxkQXV0b21hdGlvbi9raWxsLW9sZC1wcm9jZXNzZXMKIH0KSW5kZXg6IFRvb2xzL1NjcmlwdHMv
YmlzZWN0LWJ1aWxkcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Jpc2VjdC1idWlsZHMJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL1NjcmlwdHMvYmlzZWN0LWJ1aWxkcwkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsMTMgKzY4LDEzIEBAIGRlZiBkb3dubG9hZF9hcmNoaXZlKG9wdGlvbnMs
IHJldmlzaW9uKToKICAgICBhcGlfdXJsID0gZ2V0X2FwaV9hcmNoaXZlX3VybChvcHRpb25zKQog
ICAgIHMzX3VybCA9IGdldF9zM19sb2NhdGlvbl9mb3JfcmV2aXNpb24oYXBpX3VybCwgcmV2aXNp
b24pCiAgICAgcHJpbnQoJ0FyY2hpdmUgVVJMOiB7fScuZm9ybWF0KHMzX3VybCkpCi0gICAgY29t
bWFuZCA9IFsncHl0aG9uJywgJy4uL0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLCAnLS17fScuZm9ybWF0KG9wdGlvbnMuY29uZmlndXJhdGlvbiksICctLXBsYXRmb3Jt
Jywgb3B0aW9ucy5wbGF0Zm9ybSwgczNfdXJsXQorICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcu
Li9CdWlsZEF1dG9tYXRpb24vZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLXt9Jy5mb3JtYXQo
b3B0aW9ucy5jb25maWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCBz
M191cmxdCiAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHJldmlzaW9uOiB7fScuZm9ybWF0KHJldmlz
aW9uKSkKICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY29tbWFuZCkKIAogCiBkZWYgZXh0cmFj
dF9hcmNoaXZlKG9wdGlvbnMpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybScsIG9wdGlvbnMu
cGxhdGZvcm0sICctLSVzJyAlIG9wdGlvbnMuY29uZmlndXJhdGlvbiwgJ2V4dHJhY3QnXQorICAg
IGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9CdWlsZEF1dG9tYXRpb24vYnVpbHQtcHJvZHVjdC1h
cmNoaXZlJywgJy0tcGxhdGZvcm0nLCBvcHRpb25zLnBsYXRmb3JtLCAnLS0lcycgJSBvcHRpb25z
LmNvbmZpZ3VyYXRpb24sICdleHRyYWN0J10KICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY29t
bWFuZCkKIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1kYXNoYm9hcmQtdGVzdHMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tZGFzaGJvYXJkLXRlc3RzCShyZXZpc2lvbiAyNjg3
MzEpCisrKyBUb29scy9TY3JpcHRzL3J1bi1kYXNoYm9hcmQtdGVzdHMJKHdvcmtpbmcgY29weSkK
QEAgLTI1LDYgKzI1LDYgQEAKIAogVE9PTFNfRElSRUNUT1JZPSIkKGRpcm5hbWUgJDApIgogUlVO
X1dFQktJVF9URVNUUz0iJFRPT0xTX0RJUkVDVE9SWS9ydW4td2Via2l0LXRlc3RzIgotVEVTVF9E
SVJFQ1RPUlk9IiRUT09MU19ESVJFQ1RPUlkvLi4vQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiCitURVNU
X0RJUkVDVE9SWT0iJFRPT0xTX0RJUkVDVE9SWS8uLi9CdWlsZEF1dG9tYXRpb24vYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiCiAKICRS
VU5fV0VCS0lUX1RFU1RTIC0tbGF5b3V0LXRlc3RzLWRpcmVjdG9yeT0kVEVTVF9ESVJFQ1RPUlkg
IiRAIgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlz
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0
Y2hsaXN0CShyZXZpc2lvbiAyNjg3MzEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jb25maWcvd2F0Y2hsaXN0CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw4ICszMyw4IEBACiAgICAg
ICAgICJXZWJJREwiOiB7CiAgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJDb3Jl
Lyg/IWluc3BlY3RvcikoPyF0ZXN0aW5nKS4qXC5pZGwiCiAgICAgICAgIH0sCi0gICAgICAgICJC
dWlsZFNsYXZlU3VwcG9ydCI6IHsKLSAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvIiwKKyAgICAgICAgIkJ1aWxkQXV0b21hdGlvbiI6IHsKKyAgICAgICAg
ICAgICJmaWxlbmFtZSI6IHIiVG9vbHMvQnVpbGRBdXRvbWF0aW9uLyIsCiAgICAgICAgIH0sCiAg
ICAgICAgICJ3ZWJraXRweSI6IHsKICAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS8iLApAQCAtNDEyLDcgKzQxMiw3IEBACiAgICAgICAgICJBbmltYXRpb24i
IDogWyAic2ltb24uZnJhc2VyQGFwcGxlLmNvbSIsICJkaW5vQGFwcGxlLmNvbSIsICJkc3RvY2t3
ZWxsQGNocm9taXVtLm9yZyIgXSwKICAgICAgICAgIk1vdGlvbk1hcmsiIDogWyAic2Fib3VoYWxs
YXdhQGFwcGxlLmNvbSIgXSwKICAgICAgICAgIkJpbmRpbmdzU2NyaXB0cyI6IFsgImNkdW1lekBh
cHBsZS5jb20iIF0sCi0gICAgICAgICJCdWlsZFNsYXZlU3VwcG9ydCI6IFsgImFha2FzaF9qYWlu
QGFwcGxlLmNvbSIgXSwKKyAgICAgICAgIkJ1aWxkQXV0b21hdGlvbiI6IFsgImFha2FzaF9qYWlu
QGFwcGxlLmNvbSIgXSwKICAgICAgICAgIkNNYWtlIjogWyAiZ3l1eW91bmcua2ltQHdlYmtpdC5v
cmciLCAicnl1YW4uY2hvaUBuYXZlcmNvcnAuY29tIiwgInNlcmdpb0Bjb3JyZWlhLmNjIiwgImFu
bnVsZW5AeWFuZGV4LnJ1IiBdLAogICAgICAgICAiQ29vcmRpbmF0ZWRHcmFwaGljcyIgOiBbICJu
b2FtQHdlYmtpdC5vcmciLCAiemVub0B3ZWJraXQub3JnIiwgImNtYXJjZWxvQHdlYmtpdC5vcmci
LCAibHVpekB3ZWJraXQub3JnIiwgInJ5dWFuLmNob2lAbmF2ZXJjb3JwLmNvbSIsICJzZXJnaW9A
Y29ycmVpYS5jYyIsICJneXV5b3VuZy5raW1Ad2Via2l0Lm9yZyIgXSwKICAgICAgICAgIkNvbnNv
bGVVc2FnZSIgOiBbICJta3dzdEBjaHJvbWl1bS5vcmciIF0sCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9idWlsZGJvdF9yZXN1bHRzLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90
X3Jlc3VsdHMucHkJKHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jlc3VsdHMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgVGVzdEV4cGVjdGF0aW9uUGFyc2VyID0gdGVzdF9leHBlY3RhdGlvbgog
CiBjbGFzcyBCdWlsZEJvdFByaW50ZXIob2JqZWN0KToKICAgICAjIFRoaXMgb3V0cHV0IGlzIHBh
cnNlZCBieSBidWlsZGJvdHMgYW5kIG11c3Qgb25seSBiZSBjaGFuZ2VkIGluIGNvb3JkaW5hdGlv
biB3aXRoIGJ1aWxkYm90IHNjcmlwdHMgKHNlZSB3ZWJraXQub3JnJ3MKLSAgICAjIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmc6IFJ1bldl
YktpdFRlc3RzLl9wYXJzZU5ld1J1bldlYktpdFRlc3RzT3V0cHV0CisgICAgIyBUb29scy9CdWls
ZEF1dG9tYXRpb24vYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZzogUnVuV2ViS2l0
VGVzdHMuX3BhcnNlTmV3UnVuV2ViS2l0VGVzdHNPdXRwdXQKICAgICAjIGFuZCBjaHJvbWl1bS5v
cmcncyBidWlsZGJvdC9tYXN0ZXIuY2hyb21pdW0vc2NyaXB0cy9tYXN0ZXIvbG9nX3BhcnNlci93
ZWJraXRfdGVzdF9jb21tYW5kLnB5KS4KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJlYW0s
IGRlYnVnX2xvZ2dpbmcpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlcl91bml0dGVzdC5weQkocmV2aXNpb24gMjY4NzMxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC01
MDEsNyArNTAxLDcgQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXJEaXNwYXRjaFRlc3QodW5pdAog
ICAgICAgICAiIiJUZXN0IHBhdGhzIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQgYXMgSlNPTi4iIiIK
ICAgICAgICAgcGF0aHMgPSBbCiAgICAgICAgICAgIG9zLnBhdGguam9pbignU291cmNlJywgJ1dl
YkNvcmUnLCAnaW5zcGVjdG9yJywgJ0luc3BlY3Rvci5qc29uJyksCi0gICAgICAgICAgIG9zLnBh
dGguam9pbignVG9vbHMnLCAnQnVpbGRTbGF2ZVN1cHBvcnQnLCAnYnVpbGQud2Via2l0Lm9yZy1j
b25maWcnLCAnY29uZmlnLmpzb24nKSwKKyAgICAgICAgICAgb3MucGF0aC5qb2luKCdUb29scycs
ICdCdWlsZEF1dG9tYXRpb24nLCAnYnVpbGQud2Via2l0Lm9yZy1jb25maWcnLCAnY29uZmlnLmpz
b24nKSwKICAgICAgICAgXQogCiAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQkocmV2aXNpb24g
MjY4NzMxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgQXV0b2luc3RhbGxJbXBv
cnRIb29rKG9iamVjdCk6CiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHN5
cy5zdGRvdXQgPSBzeXMuX19zdGRvdXRfXwogCi0gICAgIyBhdXRvaW5zdGFsbGVkLmJ1aWxkYm90
IGlzIHVzZWQgYnkgQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFz
dGVyY2ZnX3VuaXR0ZXN0LnB5CisgICAgIyBhdXRvaW5zdGFsbGVkLmJ1aWxkYm90IGlzIHVzZWQg
YnkgQnVpbGRBdXRvbWF0aW9uL2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0
LnB5CiAgICAgIyBhbmQgc2hvdWxkIGlkZWFsbHkgbWF0Y2ggdGhlIHZlcnNpb24gb2YgQnVpbGRC
b3QgdXNlZCBhdCBidWlsZC53ZWJraXQub3JnLgogICAgIGRlZiBfaW5zdGFsbF9idWlsZGJvdChz
ZWxmKToKICAgICAgICAgIyBUaGUgYnVpbGRib3QgcGFja2FnZSB1c2VzIGppbmphMiwgZm9yIGV4
YW1wbGUsIGluIGJ1aWxkYm90L3N0YXR1cy93ZWIvYmFzZS5weS4KSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJzL2dhcmRlbmluZ3NlcnZlci5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkJ
KHJldmlzaW9uIDI2ODczMSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zZXJ2ZXJz
L2dhcmRlbmluZ3NlcnZlci5weQkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBjbGFz
cyBHYXJkZW5pbmdIVFRQUmVxdWVzdEhhbmRsZXIoUmVmbGVjCiAgICAgICAgICcuLicsCiAgICAg
ICAgICcuLicsCiAgICAgICAgICcuLicsCi0gICAgICAgICdCdWlsZFNsYXZlU3VwcG9ydCcsCisg
ICAgICAgICdCdWlsZEF1dG9tYXRpb24nLAogICAgICAgICAnYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcnLAogICAgICAgICAncHVibGljX2h0bWwnLAogICAgICAgICAnVGVzdEZhaWx1cmVzJykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412428</attachid>
            <date>2020-10-27 09:23:38 -0700</date>
            <delta_ts>2020-10-27 10:07:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218026-20201027122335.patch</filename>
            <type>text/plain</type>
            <size>2568823</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2OTA0MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDIwLTEwLTI3ICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNv
bT4KKworICAgICAgICBSZW5hbWUgQnVpbGRTbGF2ZVN1cHBvcnQgdG8gQ0lTdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgwMjYKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENJU3VwcG9ydDog
Q29waWVkIGZyb20gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQuCisgICAgICAgICogQ0lTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L2J1aWxkZXJzX3VuaXR0ZXN0cy5qczoKKyAgICAgICAgKiBDSVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvc3RlcHMucHk6CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3drYnVpbGQucHk6CisgICAgICAgICogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHk6CisgICAgICAgICogQ0lTdXBwb3J0L2V3cy1h
cHAvZXdzL3ZpZXdzL3N0YXR1c2J1YmJsZS5weToKKyAgICAgICAgKiBDSVN1cHBvcnQvZXdzLWJ1
aWxkL3N0ZXBzLnB5OgorICAgICAgICAqIENJU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRl
c3QucHk6CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQ6IFJlcGxhY2VkLgorICAgICAgICAq
IEVXU1Rvb2xzL1N0YXJ0LVF1ZXVlLnBzMToKKyAgICAgICAgKiBTY3JpcHRzL2Jpc2VjdC1idWls
ZHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tZGFzaGJvYXJkLXRlc3RzOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3Q6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0cy5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVuaW5nc2VydmVyLnB5OgorICAg
ICAgICAqIC5naXRhdHRyaWJ1dGVzOgorCiAyMDIwLTEwLTI3ICBDYXJsb3MgQWxiZXJ0byBMb3Bl
eiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1vdmUgc3RlcCBm
b3IgZ2VuZXJhdGluZyB0aGUgSlNDIGJ1bmRsZSBiYWNrIHRvIHRoZSByZWxlYXNlIGJ1aWxkIGJv
dApJbmRleDogVG9vbHMvLmdpdGF0dHJpYnV0ZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvLmdpdGF0
dHJpYnV0ZXMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzLy5naXRhdHRyaWJ1dGVzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotQnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tpbGwtb2xk
LXByb2Nlc3NlcyAtY3JsZgorQ0lTdXBwb3J0L3dpbi9raWxsLW9sZC1wcm9jZXNzZXMgLWNybGYK
IER1bXBSZW5kZXJUcmVlL2NhaXJvL1BpeGVsRHVtcFN1cHBvcnRDYWlyby5jcHAgLWNybGYKIEZp
bmRTYWZhcmkvU2FmYXJpLmV4ZS5tYW5pZmVzdCAtY3JsZgogTWluaUJyb3dzZXIvd2luL01pbmlC
cm93c2VyLnJjIC1jcmxmCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9TaGFyZWQvdHJh
bnNmZXItYXJjaGl2ZS10by1zMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9TaGFyZWQvdHJhbnNmZXItYXJjaGl2ZS10by1zMwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvU2hhcmVkL3RyYW5zZmVyLWFyY2hpdmUtdG8tczMJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1MiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLWltcG9ydCBh
cmdwYXJzZQotaW1wb3J0IGJvdG8zCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotUzNfREVGQVVM
VF9CVUNLRVQgPSAnYXJjaGl2ZXMud2Via2l0Lm9yZycKLVMzX0VXU19CVUNLRVQgPSAnZXdzLWFy
Y2hpdmVzLndlYmtpdC5vcmcnCi1TM19NSU5JRklFRF9CVUNLRVQgPSAnbWluaWZpZWQtYXJjaGl2
ZXMud2Via2l0Lm9yZycKLVMzX1JFR0lPTl9QUkVGSVggPSAnaHR0cHM6Ly9zMy11cy13ZXN0LTIu
YW1hem9uYXdzLmNvbScKLQotZGVmIHVwbG9hZFRvUzMoYXJjaGl2ZV9wYXRoLCBidWNrZXQsIGlk
ZW50aWZpZXIsIHJldmlzaW9uKToKLSAgICBwcmludCAnVHJhbnNmZXJyaW5nIHt9IHRvIFMzLi4u
Jy5mb3JtYXQoYXJjaGl2ZV9wYXRoKQotICAgIGtleSA9ICcvJy5qb2luKFtpZGVudGlmaWVyLCBy
ZXZpc2lvbiArICcuemlwJ10pCi0gICAgcHJpbnQgJ1x0UzMgQnVja2V0OiB7fVxuXHRTMyBLZXk6
IHt9Jy5mb3JtYXQoYnVja2V0LCBrZXkpCi0gICAgczMgPSBib3RvMy5jbGllbnQoJ3MzJykKLSAg
ICBzMy51cGxvYWRfZmlsZShhcmNoaXZlX3BhdGgsIGJ1Y2tldCwga2V5KQotICAgIHByaW50KCdc
dFMzIFVSTDoge30ve30ve30nLmZvcm1hdChTM19SRUdJT05fUFJFRklYLCBidWNrZXQsIGtleSkp
Ci0KLWRlZiBhcmNoaXZlRXhpc3RzKGFyY2hpdmUpOgotICAgIGlmIGFyY2hpdmU6Ci0gICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKGFyY2hpdmUpOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIHByaW50ICdXQVJOSU5HOiBBcmNoaXZlIGRvZXMgbm90
IGV4aXN0OiB7fScuZm9ybWF0KGFyY2hpdmUpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQot
ZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihhZGRfaGVs
cD1UcnVlKQotCi0gICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91
cChyZXF1aXJlZD1UcnVlKQotICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1yZXZpc2lvbicsIGFj
dGlvbj0ic3RvcmUiLCBoZWxwPSdSZXZpc2lvbiBudW1iZXIgb3IgcGF0Y2hfaWQgZm9yIHRoZSBi
dWlsdCBhcmNoaXZlJykKLSAgICBncm91cC5hZGRfYXJndW1lbnQoJy0tcGF0Y2hfaWQnLCBhY3Rp
b249InN0b3JlIiwgaGVscD0ncGF0Y2hfaWQgb2YgdGhlIHBhdGNoJykKLQotICAgIHBhcnNlci5h
ZGRfYXJndW1lbnQoJy0taWRlbnRpZmllcicsIGFjdGlvbj0ic3RvcmUiLCByZXF1aXJlZD1UcnVl
LCBoZWxwPSdTMyBkZXN0aW5hdGlvbiBpZGVudGlmaWVyLCBpbiB0aGUgZm9ybSBvZiBmdWxsUGxh
dGZvcm0tYXJjaGl0ZWN0dXJlLWNvbmZpZ3VyYXRpb24uIFttYWMtbW9qYXZlLXg4Nl82NC1yZWxl
YXNlXScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1hcmNoaXZlJywgYWN0aW9uPSJzdG9y
ZSIsIHJlcXVpcmVkPVRydWUsIGhlbHA9J1BhdGggdG8gdGhlIGZ1bGwgc2l6ZSBhcmNoaXZlLiBb
cGF0aC90by8xMjM0NTYuemlwXScpCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLQot
ICAgIHBhcmVudGRpciwgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHN0cihhcmdzLmFyY2hpdmUp
KQotICAgIG1pbmlmaWVkQXJjaGl2ZSA9IG9zLnBhdGguam9pbihwYXJlbnRkaXIsICdtaW5pZmll
ZC0nICsgZmlsZW5hbWUpCi0KLSAgICBzM19idWNrZXQgPSBTM19ERUZBVUxUX0JVQ0tFVAotICAg
IGlmIGFyZ3MucGF0Y2hfaWQ6Ci0gICAgICAgIHMzX2J1Y2tldCA9IFMzX0VXU19CVUNLRVQKLQot
ICAgIGlmIGFyY2hpdmVFeGlzdHMoYXJncy5hcmNoaXZlKToKLSAgICAgICAgdXBsb2FkVG9TMyhh
cmdzLmFyY2hpdmUsIHMzX2J1Y2tldCwgYXJncy5pZGVudGlmaWVyLCBhcmdzLnJldmlzaW9uIG9y
IGFyZ3MucGF0Y2hfaWQpCi0gICAgaWYgbm90IGFyZ3MucGF0Y2hfaWQgYW5kIGFyY2hpdmVFeGlz
dHMobWluaWZpZWRBcmNoaXZlKToKLSAgICAgICAgdXBsb2FkVG9TMyhtaW5pZmllZEFyY2hpdmUs
IFMzX01JTklGSUVEX0JVQ0tFVCwgYXJncy5pZGVudGlmaWVyLCBhcmdzLnJldmlzaW9uKQotCi1p
ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQtbGF1bmNoZXItZG1nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLWxhdW5jaGVyLWRtZwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQtbGF1bmNoZXItZG1nCShub25leGlzdGVudCkKQEAg
LTEsMTE5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHBlcmwKLQotIyBDb3B5cmlnaHQgKEMpIDIw
MDYgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA2
IE1hcmsgUm93ZSA8b3BlbmRhcndpbi5vcmdAYmRhc2gubmV0Lm56Pi4gIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uIAotIyAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0jICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0jICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBTY3JpcHQgdXNlZCBieSBidWlsZCBzbGF2ZXMg
dG8gY3JlYXRlIGEgZGlzay1pbWFnZSBjb250YWluaW5nIFdlYktpdC5hcHAuCi0KLXVzZSBzdHJp
Y3Q7Ci11c2Ugd2FybmluZ3M7Ci0KLXVzZSBGaWxlOjpCYXNlbmFtZTsKLXVzZSBHZXRvcHQ6Okxv
bmc7Ci11c2UgRmluZEJpbjsKLXVzZSBsaWIgIiRGaW5kQmluOjpCaW4vLi4vU2NyaXB0cyI7Ci11
c2Ugd2Via2l0ZGlyczsKLQotbXkgJG5pZ2h0bHlMYXVuY2hlclN0YWdpbmdQYXRoID0gcHJvZHVj
dERpcigpIC4gIi9XZWJLaXQuYXBwIjsKLW15ICRkcm9zZXJhU3RhZ2luZ1BhdGggPSBwcm9kdWN0
RGlyKCkgLiAiL0Ryb3NlcmFMYXVuY2hlci5hcHAiOwotbXkgJG5pZ2h0bHlMYXVuY2hlckRpc2tJ
bWFnZVBhdGg7Ci0KLW15ICRuaWdodGx5UmVtb3RlSG9zdCA9ICd3ZWJraXQtbmlnaHRsaWVzQGxp
dmUubmlnaHRseS53ZWJraXQub3JnJzsKLW15ICRuaWdodGx5UmVtb3RlUGF0aCA9ICIvaG9tZS93
ZWJraXQtbmlnaHRsaWVzIjsKLW15ICRuaWdodGx5UmVtb3RlTGF0ZXN0UGF0aCA9ICIkbmlnaHRs
eVJlbW90ZVBhdGgvdXBkYXRlLWxhdGVzdC5zaCI7Ci0KLXN1YiBidWlsZERpc2tJbWFnZQotewot
ICAgIG15ICRyZXZpc2lvbiA9IGN1cnJlbnRTVk5SZXZpc2lvbigpOwotICAgIG15ICRwcm9kdWN0
RGlyID0gcHJvZHVjdERpcigpOwotICAgICRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoID0g
cHJvZHVjdERpcigpIC4gIi9XZWJLaXQtU1ZOLXIkcmV2aXNpb24uZG1nIjsKLSAgICAKLSAgICBw
cmludCAiUmVtb3ZpbmcgcHJldmlvdXMgdGVtcCBzb3VyY2UgZGlyZWN0b3J5IChpZiBhbnkpLi4u
XG4iOwotICAgIGBybSAtcmYgL3RtcC9XZWJLaXROaWdodGx5YDsKLSAgICBkaWUgIlJlbW92aW5n
IHByZXZpb3VzIHRlbXAgc291cmNlIGRpcmVjdG9yeSBmYWlsZWQiIGlmICQ/OwotCi0gICAgcHJp
bnQgIk1ha2luZyBhIG5ldyB0ZW1wIHNvdXJjZSBkaXJlY3RvcnkuLi5cbiI7Ci0gICAgYG1rZGly
IC90bXAvV2ViS2l0TmlnaHRseWA7Ci0gICAgZGllICJNYWtpbmcgYSBuZXcgdGVtcCBzb3VyY2Ug
ZGlyZWN0b3J5IGZhaWxlZCIgaWYgJD87Ci0KLSAgICBwcmludCAiQ29weWluZyBXZWJLaXQuYXBw
IHRvIHRlbXAgc291cmNlIGRpcmVjdG9yeS4uLlxuIjsKLSAgICBgY3AgLVIgXCIkbmlnaHRseUxh
dW5jaGVyU3RhZ2luZ1BhdGhcIiAvdG1wL1dlYktpdE5pZ2h0bHkvV2ViS2l0LmFwcGA7Ci0gICAg
ZGllICJDb3B5aW5nIFdlYktpdC5hcHAgdG8gdGVtcCBzb3VyY2UgZGlyZWN0b3J5IGZhaWxlZCIg
aWYgJD87Ci0KLSAgICBwcmludCAiQ29weWluZyBEcm9zZXJhLmFwcCB0byB0ZW1wIHNvdXJjZSBk
aXJlY3RvcnkuLi5cbiI7Ci0gICAgYGNwIC1SIFwiJGRyb3NlcmFTdGFnaW5nUGF0aFwiIC90bXAv
V2ViS2l0TmlnaHRseS9Ecm9zZXJhLmFwcGA7Ci0gICAgZGllICJDb3B5aW5nIERyb3NlcmEuYXBw
IHRvIHRlbXAgc291cmNlIGRpcmVjdG9yeSBmYWlsZWQiIGlmICQ/OwotCi0gICAgcHJpbnQgIkNy
ZWF0aW5nIGRpc2sgaW1hZ2UuLi5cbiI7Ci0gICAgYGhkaXV0aWwgY3JlYXRlIFwiJG5pZ2h0bHlM
YXVuY2hlckRpc2tJbWFnZVBhdGhcIiAtb3YgLXNyY2ZvbGRlciAvdG1wL1dlYktpdE5pZ2h0bHkg
LWZzIEhGUysgLXZvbG5hbWUgXCJXZWJLaXRcImA7Ci0gICAgZGllICJDcmVhdGluZyBkaXNrIGlt
YWdlIGZhaWxlZCIgaWYgJD87Ci0KLSAgICBwcmludCAiUmVtb3ZpbmcgdGVtcCBzb3VyY2UgZGly
ZWN0b3J5Li4uXG4iOwotICAgIGBybSAtcmYgL3RtcC9XZWJLaXROaWdodGx5YDsKLSAgICBkaWUg
IlJlbW92aW5nIHRlbXAgc291cmNlIGRpcmVjdG9yeSBmYWlsZWQiIGlmICQ/OwotCi0gICAgcHJp
bnQgIkNvbXByZXNzaW5nIGRpc2sgaW1hZ2UuLi5cbiI7Ci0gICAgc3lzdGVtKCJtdiIsICItZiIs
ICRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoLCAiJG5pZ2h0bHlMYXVuY2hlckRpc2tJbWFn
ZVBhdGgudW5jb21wcmVzc2VkLmRtZyIpID09IDAgb3IgZGllICJSZW5hbWluZyBkaXNrIGltYWdl
IGZhaWxlZCI7Ci0gICAgc3lzdGVtKCJoZGl1dGlsIiwgImNvbnZlcnQiLCAiLXF1aWV0IiwgIiRu
aWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoLnVuY29tcHJlc3NlZC5kbWciLCAiLWZvcm1hdCIs
ICJVREJaIiwgIi1pbWFnZWtleSIsICJ6bGliLWxldmVsPTkiLCAiLW8iLCAiJG5pZ2h0bHlMYXVu
Y2hlckRpc2tJbWFnZVBhdGgiKTsKLSAgICBkaWUgIkNvbXByZXNzaW5nIGRpc2sgaW1hZ2UgZmFp
bGVkIiBpZiAkPzsKLQotICAgIHVubGluayAiJG5pZ2h0bHlMYXVuY2hlckRpc2tJbWFnZVBhdGgu
dW5jb21wcmVzc2VkLmRtZyI7Ci19Ci0KLXN1YiB1cGxvYWROaWdodGx5RGlza0ltYWdlCi17Ci0g
ICAgbXkgJGJ1aWxkVGFnID0gc2hpZnQoQF8pOwotICAgIG15ICRuaWdodGx5UmVtb3RlRGlza0lt
YWdlUGF0aCA9ICIkbmlnaHRseVJlbW90ZVBhdGgvYnVpbGRzLyRidWlsZFRhZy9tYWMvIiAuIGJh
c2VuYW1lKCRuaWdodGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoKTsKLSAgICBteSAkcmV2aXNpb24g
PSBjdXJyZW50U1ZOUmV2aXNpb24oKTsKLSAgICBzeXN0ZW0oInJzeW5jIiwgIi12UCIsICRuaWdo
dGx5TGF1bmNoZXJEaXNrSW1hZ2VQYXRoLCAiJG5pZ2h0bHlSZW1vdGVIb3N0OiRuaWdodGx5UmVt
b3RlRGlza0ltYWdlUGF0aCIpID09IDAgb3IgZGllICJGYWlsZWQgdXBsb2FkaW5nIGRpc2sgaW1h
Z2UiOwotICAgIHN5c3RlbSgic3NoIiwgJG5pZ2h0bHlSZW1vdGVIb3N0LCAkbmlnaHRseVJlbW90
ZUxhdGVzdFBhdGgsICRidWlsZFRhZywgIm1hYyIsICRuaWdodGx5UmVtb3RlRGlza0ltYWdlUGF0
aCwgJHJldmlzaW9uKSA9PSAwIG9yIGRpZSAiRmFpbGVkIGxpbmtpbmcgZGlzayBpbWFnZSB0byBs
YXRlc3QiOwotfQotCi1zdWIgdXBsb2FkQnVpbGRTbGF2ZURpc2tJbWFnZQotewotICAgIG15ICRy
ZW1vdGVEaXNrSW1hZ2VQYXRoID0gc2hpZnQoQF8pIC4gYmFzZW5hbWUoJG5pZ2h0bHlMYXVuY2hl
ckRpc2tJbWFnZVBhdGgpOwotICAgIHN5c3RlbSgicnN5bmMiLCAiLXZQIiwgJG5pZ2h0bHlMYXVu
Y2hlckRpc2tJbWFnZVBhdGgsICRyZW1vdGVEaXNrSW1hZ2VQYXRoKSA9PSAwIG9yIGRpZSAiRmFp
bGVkIHVwbG9hZGluZyBkaXNrIGltYWdlIjsKLX0KLQotCi1teSAkdXBsb2FkVG87Ci1teSAkbmln
aHRseUJ1aWxkID0gMDsKLW15ICRidWlsZFRhZyA9ICd0cnVuayc7Ci1HZXRPcHRpb25zKCd1cGxv
YWQtdG8taG9zdD1zJyA9PiBcJHVwbG9hZFRvLAotICAgICAgICAgICAndXBsb2FkLWFzLW5pZ2h0
bHkhJyA9PiBcJG5pZ2h0bHlCdWlsZCwKLSAgICAgICAgICAgJ3RhZz1zJyA9PiBcJGJ1aWxkVGFn
KTsKLQotY2hkaXJXZWJLaXQoKTsKLWJ1aWxkRGlza0ltYWdlKCRidWlsZFRhZyk7Ci0KLWlmICgk
bmlnaHRseUJ1aWxkKSB7Ci0gICAgdXBsb2FkTmlnaHRseURpc2tJbWFnZSgkYnVpbGRUYWcpOwot
fSBlbHNpZiAoJHVwbG9hZFRvKSB7Ci0gICAgdXBsb2FkQnVpbGRTbGF2ZURpc2tJbWFnZSgkdXBs
b2FkVG8pOwotfSBlbHNlIHsKLSAgICBwcmludCAiRGlzayBpbWFnZSBsZWZ0IGF0ICRuaWdodGx5
TGF1bmNoZXJEaXNrSW1hZ2VQYXRoXG4iOwotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQtbGF1bmNoZXItZG1nCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9NYWtlZmlsZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9NYWtlZmlsZQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvTWFrZWZpbGUJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxOSArMCwwIEBACi0jIC0qLSBtYWtlZmlsZSAtKi0KLQotIyBUaGlzIGlz
IGEgc2ltcGxlIG1ha2VmaWxlIHdoaWNoIGxpdmVzIGluIGEgYnVpbGRtYXN0ZXIvYnVpbGRzbGF2
ZQotIyBkaXJlY3RvcnkgKG5leHQgdG8gdGhlIGJ1aWxkYm90LnRhYyBmaWxlKS4gSXQgYWxsb3dz
IHlvdSB0byBzdGFydC9zdG9wIHRoZQotIyBtYXN0ZXIgb3Igc2xhdmUgYnkgZG9pbmcgJ21ha2Ug
c3RhcnQnIG9yICdtYWtlIHN0b3AnLgotCi0jIFRoZSAncmVjb25maWcnIHRhcmdldCB3aWxsIHRl
bGwgYSBidWlsZG1hc3RlciB0byByZWxvYWQgaXRzIGNvbmZpZyBmaWxlLgotCi1zdGFydDoKLQkv
b3B0L2xvY2FsL2Jpbi90d2lzdGQyLjUgLS1ub19zYXZlIC15IGJ1aWxkYm90LnRhYwotCi1zdG9w
OgotCWtpbGwgYGNhdCB0d2lzdGQucGlkYAotCi1yZWNvbmZpZzoKLQlraWxsIC1IVVAgYGNhdCB0
d2lzdGQucGlkYAotCi1sb2c6Ci0JdGFpbCAtZiB0d2lzdGQubG9nCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9SRUFETUUKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvUkVBRE1F
CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9SRUFETUUJKG5vbmV4aXN0ZW50KQpAQCAtMSwyICswLDAgQEAKLU5vdGU6
IFRoaXMgZGlyZWN0b3J5IGlzICpub3QqIGF1dG9tYXRpY2FsbHkgc3luY2hyb25pemVkIHdpdGgg
U3VidmVyc2lvbiB2aWEgYSBwb3N0LWNvbW1pdCBob29rLgotQW55IGNoYW5nZXMgbWFkZSB0byBj
b2RlIHdpdGhpbiB0aGlzIGRpcmVjdG9yeSB3aWxsIG5lZWQgdG8gYmUgbWFudWFsbHkgcHVzaGVk
IHRvIGJ1aWxkLndlYmtpdC5vcmcuCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9idWlsZGJvdC50YWMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvYnVpbGRib3QudGFjCShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9idWlsZGJvdC50YWMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMSArMCwwIEBACi1pbXBv
cnQgb3MKLQotVVNFX0JVSUxEQk9UX1ZFUlNJT04yID0gb3MuZ2V0ZW52KCdVU0VfQlVJTERCT1Rf
VkVSU0lPTjInKSBpcyBub3QgTm9uZQotCi1mcm9tIHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0
IHNlcnZpY2UKLWZyb20gYnVpbGRib3QubWFzdGVyIGltcG9ydCBCdWlsZE1hc3RlcgotCi1iYXNl
ZGlyID0gJy4nCi1pZiBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgY29uZmlnZmlsZSA9IHIn
bWFzdGVyX2J1aWxkYm90Mi5jZmcnCi1lbHNlOgotICAgIGNvbmZpZ2ZpbGUgPSByJ21hc3Rlci5j
ZmcnCi1yb3RhdGVMZW5ndGggPSA1MDAwMDAwMAotbWF4Um90YXRlZEZpbGVzID0gMjAKLXVtYXNr
ID0gMG8wMjIKLQotaWYgYmFzZWRpciA9PSAnLic6Ci0gICAgYmFzZWRpciA9IG9zLnBhdGguYWJz
cGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotCi1hcHBsaWNhdGlvbiA9IHNlcnZpY2Uu
QXBwbGljYXRpb24oJ2J1aWxkbWFzdGVyJykKLXRyeToKLSAgZnJvbSB0d2lzdGVkLnB5dGhvbi5s
b2dmaWxlIGltcG9ydCBMb2dGaWxlCi0gIGZyb20gdHdpc3RlZC5weXRob24ubG9nIGltcG9ydCBJ
TG9nT2JzZXJ2ZXIsIEZpbGVMb2dPYnNlcnZlcgotICBsb2dmaWxlID0gTG9nRmlsZS5mcm9tRnVs
bFBhdGgoInR3aXN0ZC5sb2ciLCByb3RhdGVMZW5ndGg9cm90YXRlTGVuZ3RoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbWF4Um90YXRlZEZpbGVzPW1heFJvdGF0ZWRGaWxlcykK
LSAgYXBwbGljYXRpb24uc2V0Q29tcG9uZW50KElMb2dPYnNlcnZlciwgRmlsZUxvZ09ic2VydmVy
KGxvZ2ZpbGUpLmVtaXQpCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICMgcHJvYmFibHkgbm90IHll
dCB0d2lzdGVkIDguMi4wIGFuZCBiZXlvbmQsIGNhbid0IHNldCBsb2cgeWV0Ci0gIHBhc3MKLUJ1
aWxkTWFzdGVyKGJhc2VkaXIsIGNvbmZpZ2ZpbGUpLnNldFNlcnZpY2VQYXJlbnQoYXBwbGljYXRp
b24pCi0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL2NvbW1pdHRlcl9hdXRoLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbW1pdHRlcl9hdXRoLnB5CShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9jb21taXR0ZXJfYXV0aC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDExNSArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIkFuIGltcGxlbWVudGF0aW9u
IG9mIGJ1aWxkYm90LnN0YXR1cy53ZWIuYXV0aC5JQXV0aCBmb3IgYXV0aGVudGljYXRpbmcgV2Vi
S2l0IGNvbW1pdHRlcnMiIiIKLQotaW1wb3J0IENvbmZpZ1BhcnNlcgotaW1wb3J0IGJ1aWxkYm90
LnN0YXR1cy53ZWIuYXV0aAotaW1wb3J0IGpzb24KLWltcG9ydCB6b3BlLmludGVyZmFjZQotCi1m
cm9tIGh0ZGlnZXN0cGFyc2VyIGltcG9ydCBIVERpZ2VzdFBhcnNlcgotCi0KLWNsYXNzIEVycm9y
KEV4Y2VwdGlvbik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIENvbW1pdHRlckF1dGgoYnVpbGRib3Qu
c3RhdHVzLndlYi5hdXRoLkF1dGhCYXNlKToKLSAgICB6b3BlLmludGVyZmFjZS5pbXBsZW1lbnRz
KGJ1aWxkYm90LnN0YXR1cy53ZWIuYXV0aC5JQXV0aCkKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBhdXRoX2pzb25fZmlsZW5hbWUpOgotICAgICAgICBzZWxmLl9hdXRoX2pzb25fZmlsZW5hbWUg
PSBhdXRoX2pzb25fZmlsZW5hbWUKLQotICAgIGRlZiBhdXRoX2pzb24oc2VsZik6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHdpdGggc2VsZi5vcGVuX2F1dGhfanNvbl9maWxlKCkgYXMgZjoK
LSAgICAgICAgICAgICAgICByZXR1cm4ganNvbi5sb2FkKGYpCi0gICAgICAgIGV4Y2VwdCBJT0Vy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBFcnJvcignRXJyb3Igb3BlbmluZyBhdXRoLmpz
b24gZmlsZTogezB9Jy5mb3JtYXQoZS5zdHJlcnJvcikpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVy
cm9yIGFzIGU6Ci0gICAgICAgICAgICByYWlzZSBFcnJvcignRXJyb3IgcGFyc2luZyBhdXRoLmpz
b24gZmlsZTogezB9Jy5mb3JtYXQoZS5tZXNzYWdlKSkKLQotICAgIGRlZiBhdXRoX2pzb25fZmls
ZW5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9hdXRoX2pzb25fZmlsZW5hbWUKLQot
ICAgIGRlZiBhdXRoZW50aWNhdGUoc2VsZiwgdXNlcm5hbWUsIHBhc3N3b3JkKToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuaXNfd2Via2l0X2NvbW1pdHRlcih1c2VybmFt
ZSkgYW5kIHNlbGYuaXNfd2Via2l0X3RyYWNfdXNlcih1c2VybmFtZSwgcGFzc3dvcmQpCi0gICAg
ICAgIGV4Y2VwdCBFcnJvciBhcyBlOgotICAgICAgICAgICAgc2VsZi5lcnIgPSBlLmFyZ3NbMF0K
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGlzX3dlYmtpdF9jb21taXR0ZXIo
c2VsZiwgdXNlcm5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiB1c2VybmFtZSBu
b3QgaW4gc2VsZi53ZWJraXRfY29tbWl0dGVycygpOgotICAgICAgICAgICAgICAgIHNlbGYuZXJy
ID0gJ0ludmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQnCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICBleGNlcHQgQ29uZmlnUGFyc2Vy
LkVycm9yOgotICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIHBhcnNpbmcgV2ViS2l0IGNv
bW1pdHRlcnMgZmlsZScpCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6Ci0gICAgICAgICAg
ICByYWlzZSBFcnJvcignRXJyb3Igb3BlbmluZyBXZWJLaXQgY29tbWl0dGVycyBmaWxlOiB7MH0n
LmZvcm1hdChlLnN0cmVycm9yKSkKLQotICAgIGRlZiBpc193ZWJraXRfdHJhY191c2VyKHNlbGYs
IHVzZXJuYW1lLCBwYXNzd29yZCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdpdGggc2Vs
Zi5vcGVuX3RyYWNfY3JlZGVudGlhbHNfZmlsZSgpIGFzIGY6Ci0gICAgICAgICAgICAgICAgaHRk
aWdlc3QgPSBIVERpZ2VzdFBhcnNlcihmKQotICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgot
ICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIG9wZW5pbmcgVHJhYyBjcmVkZW50aWFscyBm
aWxlOiB7MH0nLmZvcm1hdChlLnN0cmVycm9yKSkKLQotICAgICAgICBpZiBub3QgaHRkaWdlc3Qu
ZW50cmllcygpOgotICAgICAgICAgICAgcmFpc2UgRXJyb3IoJ0Vycm9yIHBhcnNpbmcgVHJhYyBj
cmVkZW50aWFscyBmaWxlJykKLQotICAgICAgICBpZiBub3QgaHRkaWdlc3QuYXV0aGVudGljYXRl
KHVzZXJuYW1lLCAnTWFjIE9TIEZvcmdlJywgcGFzc3dvcmQpOgotICAgICAgICAgICAgc2VsZi5l
cnIgPSAnSW52YWxpZCB1c2VybmFtZS9wYXNzd29yZCcKLSAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAjIFRoZXNlIHRocmVlIG1ldGhvZHMgZXhp
c3QgZm9yIGVhc2Ugb2YgdGVzdGluZy4KLSAgICBkZWYgb3Blbl9hdXRoX2pzb25fZmlsZShzZWxm
KToKLSAgICAgICAgcmV0dXJuIG9wZW4oc2VsZi5hdXRoX2pzb25fZmlsZW5hbWUoKSkKLQotICAg
IGRlZiBvcGVuX3RyYWNfY3JlZGVudGlhbHNfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9w
ZW4oc2VsZi50cmFjX2NyZWRlbnRpYWxzX2ZpbGVuYW1lKCkpCi0KLSAgICBkZWYgb3Blbl93ZWJr
aXRfY29tbWl0dGVyc19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gb3BlbihzZWxmLndlYmtp
dF9jb21taXR0ZXJzX2ZpbGVuYW1lKCkpCi0KLSAgICBkZWYgdHJhY19jcmVkZW50aWFsc19maWxl
bmFtZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXV0aF9q
c29uKClbJ3RyYWNfY3JlZGVudGlhbHMnXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAg
ICAgICAgICByYWlzZSBFcnJvcignYXV0aC5qc29uIGZpbGUgaXMgbWlzc2luZyAidHJhY19jcmVk
ZW50aWFscyIga2V5JykKLQotICAgIGRlZiB3ZWJraXRfY29tbWl0dGVycyhzZWxmKToKLSAgICAg
ICAgY29uZmlnID0gQ29uZmlnUGFyc2VyLlJhd0NvbmZpZ1BhcnNlcigpCi0gICAgICAgIHdpdGgg
c2VsZi5vcGVuX3dlYmtpdF9jb21taXR0ZXJzX2ZpbGUoKSBhcyBmOgotICAgICAgICAgICAgY29u
ZmlnLnJlYWRmcChmKQotICAgICAgICByZXR1cm4gY29uZmlnLmdldCgnZ3JvdXBzJywgJ3dlYmtp
dCcpLnNwbGl0KCcsJykKLQotICAgIGRlZiB3ZWJraXRfY29tbWl0dGVyc19maWxlbmFtZShzZWxm
KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYXV0aF9qc29uKClbJ3dl
YmtpdF9jb21taXR0ZXJzJ10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAg
cmFpc2UgRXJyb3IoJ2F1dGguanNvbiBmaWxlIGlzIG1pc3NpbmcgIndlYmtpdF9jb21taXR0ZXJz
IiBrZXknKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvY29tbWl0dGVyX2F1dGhfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvY29tbWl0dGVyX2F1dGhfdW5p
dHRlc3QucHkJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL2NvbW1pdHRlcl9hdXRoX3VuaXR0ZXN0LnB5CShub25leGlz
dGVudCkKQEAgLTEsMjIwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9y
dCBfX2J1aWx0aW5fXwotaW1wb3J0IGJ1aWxkYm90LnN0YXR1cy53ZWIuYXV0aAotaW1wb3J0IGNv
bnRleHRsaWIKLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWZyb20gY29tbWl0dGVyX2F1
dGggaW1wb3J0IENvbW1pdHRlckF1dGgKLQotCi0jIFRoaXMgc3ViY2xhc3Mgb2YgU3RyaW5nSU8g
c3VwcG9ydHMgdGhlIGNvbnRleHQgbWFuYWdlciBwcm90b2NvbCBzbyBpdCB3b3JrcwotIyB3aXRo
ICJ3aXRoIiBzdGF0ZW1lbnRzLCBqdXN0IGxpa2UgcmVhbCBmaWxlcy4KLWNsYXNzIENNU3RyaW5n
SU8oU3RyaW5nSU8uU3RyaW5nSU8pOgotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjZXB0aW9uLCB2YWx1ZSwg
dHJhY2ViYWNrKToKLSAgICAgICAgc2VsZi5jbG9zZSgpCi0KLQotQGNvbnRleHRsaWIuY29udGV4
dG1hbmFnZXIKLWRlZiBvcGVuX292ZXJyaWRlKGZ1bmMpOgotICAgIG9yaWdpbmFsX29wZW4gPSBf
X2J1aWx0aW5fXy5vcGVuCi0gICAgX19idWlsdGluX18ub3BlbiA9IGZ1bmMKLSAgICB5aWVsZAot
ICAgIF9fYnVpbHRpbl9fLm9wZW4gPSBvcmlnaW5hbF9vcGVuCi0KLQotY2xhc3MgQ29tbWl0dGVy
QXV0aFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5hdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRoLmpzb24nKQotICAgICAg
ICBzZWxmLmF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSA9IHNlbGYuZmFrZV9hdXRoX2pzb25fZmls
ZQotICAgICAgICBzZWxmLmF1dGgub3Blbl93ZWJraXRfY29tbWl0dGVyc19maWxlID0gc2VsZi5m
YWtlX2NvbW1pdHRlcnNfZmlsZQotICAgICAgICBzZWxmLmF1dGgub3Blbl90cmFjX2NyZWRlbnRp
YWxzX2ZpbGUgPSBzZWxmLmZha2VfaHRkaWdlc3RfZmlsZQotCi0gICAgZGVmIGZha2Vfb3Blbl9m
dW5jdGlvbihzZWxmLCBleHBlY3RlZF9maWxlbmFtZSk6Ci0gICAgICAgIGRlZiBmYWtlX29wZW4o
bmFtZSwgbW9kZT0ncicpOgotICAgICAgICAgICAgc2VsZi5mYWtlX29wZW5fd2FzX2NhbGxlZCA9
IFRydWUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZmlsZW5hbWUsIG5h
bWUpCi0gICAgICAgIHJldHVybiBmYWtlX29wZW4KLQotICAgIGRlZiB0ZXN0X2F1dGhlbnRpY2F0
aW9uX3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmF1dGguYXV0
aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLmF1dGguZXJybXNnKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXIyQGV4YW1w
bGUuY29tJywgJ2NvbW1pdHRlcjJwYXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcnLCBzZWxmLmF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYgdGVzdF9jb21taXR0ZXJfd2l0aG91
dF90cmFjX2NyZWRlbnRpYWxzX2ZhaWxzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNl
KHNlbGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlcjNAd2Via2l0Lm9yZycsICdjb21taXR0
ZXIzcGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSW52YWxpZCB1c2VybmFt
ZS9wYXNzd29yZCcsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X2ZhaWxfdG9f
b3Blbl9hdXRoX2pzb25fZmlsZShzZWxmKToKLSAgICAgICAgZGVmIHJhaXNlX0lPRXJyb3IoKToK
LSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoMiwgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3Rvcnkn
LCAncGF0aC90by9hdXRoLmpzb24nKQotICAgICAgICBhdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0
aC90by9hdXRoLmpzb24nKQotICAgICAgICBhdXRoLm9wZW5fYXV0aF9qc29uX2ZpbGUgPSByYWlz
ZV9JT0Vycm9yCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXV0aC5hdXRoZW50aWNhdGUoJ2Nv
bW1pdHRlckB3ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0Vycm9yIG9wZW5pbmcgYXV0aC5qc29uIGZpbGU6IE5vIHN1Y2ggZmlsZSBv
ciBkaXJlY3RvcnknLCBhdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfZmFpbF90b19vcGVu
X3RyYWNfY3JlZGVudGlhbHNfZmlsZShzZWxmKToKLSAgICAgICAgZGVmIHJhaXNlX0lPRXJyb3Io
KToKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoMiwgJ05vIHN1Y2ggZmlsZSBvciBkaXJlY3Rv
cnknLCAncGF0aC90by90cmFjL2NyZWRlbnRpYWxzJykKLSAgICAgICAgc2VsZi5hdXRoLm9wZW5f
dHJhY19jcmVkZW50aWFsc19maWxlID0gcmFpc2VfSU9FcnJvcgotICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHNlbGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnJywgJ2Nv
bW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Vycm9yIG9wZW5p
bmcgVHJhYyBjcmVkZW50aWFscyBmaWxlOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Jywgc2Vs
Zi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfZmFpbF90b19vcGVuX3dlYmtpdF9jb21t
aXR0ZXJzX2ZpbGUoc2VsZik6Ci0gICAgICAgIGRlZiByYWlzZV9JT0Vycm9yKCk6Ci0gICAgICAg
ICAgICByYWlzZSBJT0Vycm9yKDIsICdObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5JywgJ3BhdGgv
dG8vd2Via2l0L2NvbW1pdHRlcnMnKQotICAgICAgICBzZWxmLmF1dGgub3Blbl93ZWJraXRfY29t
bWl0dGVyc19maWxlID0gcmFpc2VfSU9FcnJvcgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBh
c3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Vycm9yIG9wZW5pbmcgV2ViS2l0
IGNvbW1pdHRlcnMgZmlsZTogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeScsIHNlbGYuYXV0aC5l
cnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X2ltcGxlbWVudHNfSUF1dGgoc2VsZik6Ci0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGJvdC5zdGF0dXMud2ViLmF1dGguSUF1dGguaW1wbGVtZW50
ZWRCeShDb21taXR0ZXJBdXRoKSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfYXV0aF9qc29uX2Zp
bGUoc2VsZik6Ci0gICAgICAgIGF1dGggPSBDb21taXR0ZXJBdXRoKCdwYXRoL3RvL2F1dGguanNv
bicpCi0gICAgICAgIGF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSA9IHNlbGYuaW52YWxpZF9hdXRo
X2pzb25fZmlsZQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF1dGguYXV0aGVudGljYXRlKCdj
b21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdFcnJvciBwYXJzaW5nIGF1dGguanNvbiBmaWxlOiBObyBKU09OIG9iamVj
dCBjb3VsZCBiZSBkZWNvZGVkJywgYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X2ludmFs
aWRfY29tbWl0dGVyc19maWxlKHNlbGYpOgotICAgICAgICBzZWxmLmF1dGgub3Blbl93ZWJraXRf
Y29tbWl0dGVyc19maWxlID0gc2VsZi5pbnZhbGlkX2NvbW1pdHRlcnNfZmlsZQotICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHNlbGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQu
b3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Vy
cm9yIHBhcnNpbmcgV2ViS2l0IGNvbW1pdHRlcnMgZmlsZScsIHNlbGYuYXV0aC5lcnJtc2coKSkK
LQotICAgIGRlZiB0ZXN0X2ludmFsaWRfdHJhY19jcmVkZW50aWFsc19maWxlKHNlbGYpOgotICAg
ICAgICBzZWxmLmF1dGgub3Blbl90cmFjX2NyZWRlbnRpYWxzX2ZpbGUgPSBzZWxmLmludmFsaWRf
aHRkaWdlc3RfZmlsZQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYXV0aC5hdXRoZW50
aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Vycm9yIHBhcnNpbmcgVHJhYyBjcmVkZW50aWFscyBmaWxl
Jywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfbWlzc2luZ19hdXRoX2pzb25f
a2V5cyhzZWxmKToKLSAgICAgICAgYXV0aCA9IENvbW1pdHRlckF1dGgoJ3BhdGgvdG8vYXV0aC5q
c29uJykKLSAgICAgICAgYXV0aC5vcGVuX2F1dGhfanNvbl9maWxlID0gbGFtYmRhOiBDTVN0cmlu
Z0lPKCd7ICJ0cmFjX2NyZWRlbnRpYWxzIjogInBhdGgvdG8vdHJhYy9jcmVkZW50aWFscyIgfScp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3
ZWJraXQub3JnJywgJ2NvbW1pdHRlcnBhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2F1dGguanNvbiBmaWxlIGlzIG1pc3NpbmcgIndlYmtpdF9jb21taXR0ZXJzIiBrZXknLCBh
dXRoLmVycm1zZygpKQotCi0gICAgICAgIGF1dGgub3Blbl9hdXRoX2pzb25fZmlsZSA9IGxhbWJk
YTogQ01TdHJpbmdJTygneyAid2Via2l0X2NvbW1pdHRlcnMiOiAicGF0aC90by93ZWJraXQvY29t
bWl0dGVycyIgfScpCi0gICAgICAgIGF1dGgub3Blbl93ZWJraXRfY29tbWl0dGVyc19maWxlID0g
c2VsZi5mYWtlX2NvbW1pdHRlcnNfZmlsZQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF1dGgu
YXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Via2l0Lm9yZycsICdjb21taXR0ZXJwYXNzd29yZCcp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhdXRoLmpzb24gZmlsZSBpcyBtaXNzaW5nICJ0
cmFjX2NyZWRlbnRpYWxzIiBrZXknLCBhdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3Rfb3Bl
bl9hdXRoX2pzb25fZmlsZShzZWxmKToKLSAgICAgICAgYXV0aCA9IENvbW1pdHRlckF1dGgoJ3Bh
dGgvdG8vYXV0aC5qc29uJykKLSAgICAgICAgc2VsZi5mYWtlX29wZW5fd2FzX2NhbGxlZCA9IEZh
bHNlCi0gICAgICAgIHdpdGggb3Blbl9vdmVycmlkZShzZWxmLmZha2Vfb3Blbl9mdW5jdGlvbihh
dXRoLmF1dGhfanNvbl9maWxlbmFtZSgpKSk6Ci0gICAgICAgICAgICBhdXRoLm9wZW5fYXV0aF9q
c29uX2ZpbGUoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5mYWtlX29wZW5fd2FzX2Nh
bGxlZCkKLQotICAgIGRlZiB0ZXN0X29wZW5fdHJhY19jcmVkZW50aWFsc19maWxlKHNlbGYpOgot
ICAgICAgICBhdXRoID0gQ29tbWl0dGVyQXV0aCgncGF0aC90by9hdXRoLmpzb24nKQotICAgICAg
ICBhdXRoLnRyYWNfY3JlZGVudGlhbHNfZmlsZW5hbWUgPSBsYW1iZGE6ICd0cmFjIGNyZWRlbnRp
YWxzIGZpbGVuYW1lJwotICAgICAgICBzZWxmLmZha2Vfb3Blbl93YXNfY2FsbGVkID0gRmFsc2UK
LSAgICAgICAgd2l0aCBvcGVuX292ZXJyaWRlKHNlbGYuZmFrZV9vcGVuX2Z1bmN0aW9uKGF1dGgu
dHJhY19jcmVkZW50aWFsc19maWxlbmFtZSgpKSk6Ci0gICAgICAgICAgICBhdXRoLm9wZW5fdHJh
Y19jcmVkZW50aWFsc19maWxlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZmFrZV9v
cGVuX3dhc19jYWxsZWQpCi0KLSAgICBkZWYgdGVzdF9vcGVuX3dlYmtpdF9jb21taXR0ZXJzX2Zp
bGUoc2VsZik6Ci0gICAgICAgIGF1dGggPSBDb21taXR0ZXJBdXRoKCdwYXRoL3RvL2F1dGguanNv
bicpCi0gICAgICAgIGF1dGgud2Via2l0X2NvbW1pdHRlcnNfZmlsZW5hbWUgPSBsYW1iZGE6ICd3
ZWJraXQgY29tbWl0dGVycyBmaWxlbmFtZScKLSAgICAgICAgc2VsZi5mYWtlX29wZW5fd2FzX2Nh
bGxlZCA9IEZhbHNlCi0gICAgICAgIHdpdGggb3Blbl9vdmVycmlkZShzZWxmLmZha2Vfb3Blbl9m
dW5jdGlvbihhdXRoLndlYmtpdF9jb21taXR0ZXJzX2ZpbGVuYW1lKCkpKToKLSAgICAgICAgICAg
IGF1dGgub3Blbl93ZWJraXRfY29tbWl0dGVyc19maWxlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHNlbGYuZmFrZV9vcGVuX3dhc19jYWxsZWQpCi0KLSAgICBkZWYgdGVzdF9ub25fY29tbWl0
dGVyX2ZhaWxzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYXV0aC5hdXRo
ZW50aWNhdGUoJ25vbmNvbW1pdHRlckBleGFtcGxlLmNvbScsICdub25jb21taXR0ZXJwYXNzd29y
ZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdJbnZhbGlkIHVzZXJuYW1lL3Bhc3N3b3Jk
Jywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3RfdHJhY19jcmVkZW50aWFsc19m
aWxlbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGF0aC90by90cmFjL2Ny
ZWRlbnRpYWxzJywgc2VsZi5hdXRoLnRyYWNfY3JlZGVudGlhbHNfZmlsZW5hbWUoKSkKLQotICAg
IGRlZiB0ZXN0X3Vua25vd25fdXNlcl9mYWlscyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdub2JvZHlAZXhhbXBsZS5jb20nLCAnbm9ib2R5
cGFzc3dvcmQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSW52YWxpZCB1c2VybmFtZS9w
YXNzd29yZCcsIHNlbGYuYXV0aC5lcnJtc2coKSkKLQotICAgIGRlZiB0ZXN0X3VzZXJuYW1lX2lz
X3ByZWZpeF9vZl92YWxpZF91c2VyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNl
bGYuYXV0aC5hdXRoZW50aWNhdGUoJ2NvbW1pdHRlckB3ZWJraXQub3JnZycsICdjb21taXR0ZXJw
YXNzd29yZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdJbnZhbGlkIHVzZXJuYW1lL3Bh
c3N3b3JkJywgc2VsZi5hdXRoLmVycm1zZygpKQotCi0gICAgZGVmIHRlc3Rfd2Via2l0X2NvbW1p
dHRlcnMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydjb21taXR0ZXJAd2Via2l0
Lm9yZycsICdjb21taXR0ZXIyQGV4YW1wbGUuY29tJywgJ2NvbW1pdHRlcjNAd2Via2l0Lm9yZydd
LCBzZWxmLmF1dGgud2Via2l0X2NvbW1pdHRlcnMoKSkKLQotICAgIGRlZiB0ZXN0X3dlYmtpdF9j
b21taXR0ZXJzX2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwYXRo
L3RvL3dlYmtpdC9jb21taXR0ZXJzJywgc2VsZi5hdXRoLndlYmtpdF9jb21taXR0ZXJzX2ZpbGVu
YW1lKCkpCi0KLSAgICBkZWYgdGVzdF93cm9uZ19wYXNzd29yZF9mYWlscyhzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmF1dGguYXV0aGVudGljYXRlKCdjb21taXR0ZXJAd2Vi
a2l0Lm9yZycsICd3cm9uZ3Bhc3N3b3JkJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0lu
dmFsaWQgdXNlcm5hbWUvcGFzc3dvcmQnLCBzZWxmLmF1dGguZXJybXNnKCkpCi0KLSAgICBkZWYg
ZmFrZV9hdXRoX2pzb25fZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIENNU3RyaW5nSU8oIiIi
ewotICAgICJ0cmFjX2NyZWRlbnRpYWxzIjogInBhdGgvdG8vdHJhYy9jcmVkZW50aWFscyIsCi0g
ICAgIndlYmtpdF9jb21taXR0ZXJzIjogInBhdGgvdG8vd2Via2l0L2NvbW1pdHRlcnMiCi19IiIi
KQotCi0gICAgZGVmIGludmFsaWRfYXV0aF9qc29uX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBDTVN0cmluZ0lPKCd+IUAjJCVeJiooKV8rJykKLQotICAgIGRlZiBmYWtlX2NvbW1pdHRlcnNf
ZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIENNU3RyaW5nSU8oIiIiW2dyb3Vwc10KLWdyb3Vw
MSA9IHVzZXJAZXhhbXBsZS5jb20sdXNlcjJAZXhhbXBsZS5jb20KLWdyb3VwMiA9IHVzZXIzQGV4
YW1wbGUuY29tCi0KLWdyb3VwMyA9Ci1ncm91cDQgPQotCi13ZWJraXQgPSBjb21taXR0ZXJAd2Vi
a2l0Lm9yZyxjb21taXR0ZXIyQGV4YW1wbGUuY29tLGNvbW1pdHRlcjNAd2Via2l0Lm9yZwotCi1b
c2VydmljZTovXQotKiAgICA9IHIKLSIiIikKLQotICAgIGRlZiBpbnZhbGlkX2NvbW1pdHRlcnNf
ZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIENNU3RyaW5nSU8oIiIiW2dyb3Vwc10KLQotW1tn
cm91cHMyXQotIiIiKQotCi0gICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIENNU3RyaW5nSU8oIiIiY29tbWl0dGVyQHdlYmtpdC5vcmc6TWFjIE9TIEZvcmdl
Ojc2MWM4ZGNiN2Q5YjU5MDgwMDdlZDE0MmY2MmZlNzNhCi1jb21taXR0ZXIyQGV4YW1wbGUuY29t
Ok1hYyBPUyBGb3JnZTpmYWVlZTY5YWNjMmU0OWFmM2EwZGJiMTViZDU5M2VmNAotbm9uY29tbWl0
dGVyQGV4YW1wbGUuY29tOk1hYyBPUyBGb3JnZTpiOTlhYTdhZDMyMzA2YTY1NGNhNGQ1NzgzOWZk
ZTljMQotIiIiKQotCi0gICAgZGVmIGludmFsaWRfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIENNU3RyaW5nSU8oIiIiY29tbWl0dGVyQHdlYmtpdC5vcmc6TWFjIE9TIEZvcmdl
Ojc2MWM4ZGNiN2Q5YjU5MDgwMDdlZDE0MmY2MmZlNzNhCi1jb21taXR0ZXIyQGV4YW1wbGUuY29t
Ok1hYyBPUyBGb3JnZTpmYWVlZTY5YWNjMmU0OWFmM2EwZGJiMTViZDU5M2VmNAotbm9uY29tbWl0
dGVyQGV4YW1wbGUuY29tOk1hYyBPUyBGb3JnZTpiOTlhYTdhZDMyMzA2YTY1NGNhNGQ1NzgzOWZk
ZTljMQotY29tbWl0dGVyNEBleGFtcGxlLmNvbTpNYWMgT1MgRm9yZ2U6OjoKLSIiIikKLQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQoKUHJvcGVydHkg
Y2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvY29tbWl0dGVyX2F1dGhfdW5pdHRlc3QucHkKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhl
Y3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2Nv
bmZpZy5qc29uCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL2NvbmZpZy5qc29uCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9jb25maWcuanNvbgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDYzNiArMCwwIEBACi17Ci0gICAgIndvcmtlcnMiOiAgICAgWwotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI3OSIsICJwbGF0Zm9ybSI6ICJtYWMtYmln
c3VyIn0sCi0KLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QxMjEiLCAicGxhdGZv
cm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJv
dDE1NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90MTg3IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyMDUiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFs
aW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0MSIsICJwbGF0Zm9y
bSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90
MjQyIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJib3QyNDMiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDI0NCIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxp
bmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjQ1IiwgInBsYXRmb3Jt
IjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Qy
NDYiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImJvdDI0NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjQ4IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGlu
YSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3QyNjAiLCAicGxhdGZvcm0i
OiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDMw
MiIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYm90NjAzIiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2MzIiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5h
IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDYzOCIsICJwbGF0Zm9ybSI6
ICJtYWMtY2F0YWxpbmEiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njc0
IiwgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJib3Q2ODMiLCAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImJvdDY4NyIsICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njg4IiwgInBsYXRmb3JtIjog
Im1hYy1jYXRhbGluYSIgfSwKLQotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90
MTMyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAiYm90MTc4IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTc5IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTgzIiwgInBsYXRmb3JtIjogIm1h
Yy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MTg0IiwgInBs
YXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90MTg1IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90MTk4IiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90MjEwIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjEwIiwgInBsYXRmb3JtIjog
Im1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjExIiwg
InBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYm90NjEyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90NjEzIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiIH0sCi0KLQot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImJvdDY3MyIsICJwbGF0Zm9ybSI6ICJpb3Mt
MTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjUxIiwgInBsYXRmb3Jt
IjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90NjUyIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiYm90NjUzIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQi
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjU0IiwgInBsYXRmb3JtIjog
Imlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90
NjQxIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiYm90NjgyIiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njk0IiwgInBsYXRmb3JtIjogImlv
cy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90Njk1
IiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiYm90NjY3IiwgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQifSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q2NjQiLCAicGxhdGZvcm0iOiAiaW9zLXNp
bXVsYXRvci0xNCJ9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjA3Iiwg
InBsYXRmb3JtIjogInR2b3MtMTQiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
Ym90NjA4IiwgInBsYXRmb3JtIjogInR2b3Mtc2ltdWxhdG9yLTE0IiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImJvdDYwOSIsICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLTciIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYm90NjcyIiwgInBsYXRmb3JtIjogIndhdGNo
b3Mtc2ltdWxhdG9yLTciIH0sCi0KLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJib3Q1
NDUiLCAicGxhdGZvcm0iOiAid2luIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImJvdDU0NiIsICJwbGF0Zm9ybSI6ICJ3aW4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5h
bWUiOiAiYm90NTQ3IiwgInBsYXRmb3JtIjogIndpbiIgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJib3Q1NDgiLCAicGxhdGZvcm0iOiAid2luIiB9LAotCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLXJlbGVhc2UtYnVpbGQtMDEiLCAicGxhdGZv
cm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fp
cm8td2tsLXJlbGVhc2UtdGVzdHMtMDEiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLXJlbGVhc2UtdGVzdHMtMDIi
LCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAid2luY2Fpcm8tanNjLXJlbGVhc2UtdGVzdHMtMDEiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8i
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid2luY2Fpcm8td2tsLWRlYnVnLWJ1
aWxkLTAxIiwgInBsYXRmb3JtIjogIndpbmNhaXJvIiB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cy0wMSIsICJwbGF0Zm9ybSI6ICJ3aW5j
YWlybyIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3aW5jYWlyby13a2wtZGVi
dWctdGVzdHMtMDIiLCAicGxhdGZvcm0iOiAid2luY2Fpcm8iIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAid2luY2Fpcm8tanNjLWRlYnVnLXRlc3RzLTAxIiwgInBsYXRmb3JtIjog
IndpbmNhaXJvIiB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAicGxheXN0YXRp
b24tcmVsZWFzZS1idWlsZC0wMSIsICJwbGF0Zm9ybSI6ICJwbGF5c3RhdGlvbiIgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJwbGF5c3RhdGlvbi1kZWJ1Zy1idWlsZC0wMSIsICJw
bGF0Zm9ybSI6ICJwbGF5c3RhdGlvbiIgfSwKLQotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImd0ay1saW51eC1ib3QtMSIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJvdC0yIiwgInBsYXRmb3JtIjogImd0ayIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTMiLCAicGxhdGZv
cm0iOiAiZ3RrIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51eC1i
b3QtNSIsICJwbGF0Zm9ybSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZ3RrLWxpbnV4LWJvdC02IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTciLCAicGxhdGZvcm0iOiAiZ3RrIiB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImd0ay1saW51eC1ib3QtOCIsICJwbGF0Zm9y
bSI6ICJndGsiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZ3RrLWxpbnV4LWJv
dC05IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJndGstbGludXgtYm90LTEwIiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTExIiwgInBsYXRmb3JtIjogImd0ayIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTEyIiwgInBsYXRm
b3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgt
Ym90LTEzIiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJndGstbGludXgtYm90LTE0IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTE1IiwgInBsYXRmb3JtIjogImd0ayIg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGludXgtYm90LTE2IiwgInBs
YXRmb3JtIjogImd0ayIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJndGstbGlu
dXgtYm90LTE3IiwgInBsYXRmb3JtIjogImd0ayIgfSwKLQotICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0xIiwgInBsYXRmb3JtIjogImpzYy1v
bmx5IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdh
bGlhLWJvdC0yIiwgInBsYXRmb3JtIjogImpzYy1vbmx5IiB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0zIiwgInBsYXRmb3JtIjogImpz
Yy1vbmx5IiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgt
aWdhbGlhLWJvdC00IiwgInBsYXRmb3JtIjogImpzYy1vbmx5IiB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImpzY29ubHktbGludXgtaWdhbGlhLWJvdC01IiwgInBsYXRmb3JtIjog
ImpzYy1vbmx5IiB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4
LWJvdC0xIiwgInBsYXRmb3JtIjogIndwZSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJ3cGUtbGludXgtYm90LTIiLCAicGxhdGZvcm0iOiAid3BlIiB9LAotICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogIndwZS1saW51eC1ib3QtMyIsICJwbGF0Zm9ybSI6ICJ3cGUiIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4LWJvdC00IiwgInBsYXRm
b3JtIjogIndwZSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3cGUtbGludXgt
Ym90LTUiLCAicGxhdGZvcm0iOiAid3BlIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIndwZS1saW51eC1ib3QtNiIsICJwbGF0Zm9ybSI6ICJ3cGUiIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAid3BlLWxpbnV4LWJvdC03IiwgInBsYXRmb3JtIjogIndwZSIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ3cGUtbGludXgtYm90LTgiLCAicGxhdGZv
cm0iOiAid3BlIiB9Ci0gICAgICAgICAgICAgICAgICBdLAotCi0gICAgImJ1aWxkZXJzIjogICBb
Ci0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtQmlnU3VyLVJlbGVhc2UtQnVp
bGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiYmlnc3VyLXJlbGVh
c2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIiwgImNv
bmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiLCAiYXJt
NjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI3OSJdCi0g
ICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBw
bGUtQ2F0YWxpbmEtRGVidWctQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVp
bGRkaXIiOiAiY2F0YWxpbmEtZGVidWciLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJhcmNoaXRlY3R1
cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBbImNh
dGFsaW5hLWRlYnVnLXRlc3RzLWpzYyIsICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy10ZXN0MjYyIiwg
ImNhdGFsaW5hLWRlYnVnLXRlc3RzLXdrMSIsICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azIiLCAi
Y2F0YWxpbmEtZGVidWctdGVzdHMtd2syLWdwdXByb2Nlc3MiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZXMiOiBbImJvdDY4NyIsICJib3Q2ODgiXQotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLURl
YnVnLVdLMS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQxQWxsQnV0SlNDRmFjdG9yeSIs
ICJidWlsZGRpciI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1
ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAi
YWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAg
ICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MjQxIiwgImJvdDI0MiJdCi0gICAgICAg
ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUtQ2F0
YWxpbmEtRGVidWctV0syLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEFsbEJ1dEpTQ0ZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2syIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVi
dWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI0MyIsICJib3QyNDQiXQotICAgICAg
ICAgICAgICAgICAgICB9LAotCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctV0syLUdQVVByb2Nlc3MtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxs
QnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy13azItZ3B1
cHJvY2VzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGlu
YSIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJl
dHJ5LWZhaWx1cmVzIiwgIi0tdXNlLWdwdS1wcm9jZXNzIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgIndvcmtlcm5hbWVzIjogWyJib3QyNjAiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtQnVpbGQi
LCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFz
ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJjYXRhbGluYS1yZWxlYXNlLXRlc3Rz
LXRlc3QyNjIiLCAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy1qc2MiLCAiY2F0YWxpbmEtcmVsZWFz
ZS1wZXJmLXRlc3RzIiwgImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtd2sxIiwgImNhdGFsaW5hLXJl
bGVhc2UtdGVzdHMtd2syIiwgImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtd2syLXdlYmdsIl0sCi0g
ICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2ODMiLCAiYm90Njc0Il0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJB
cHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMS1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQx
QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdr
MSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnkt
ZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDI0
NSIsICJib3QyNDYiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0syLVRlc3RzIiwgImZhY3Rvcnki
OiAiVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFzZS10
ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxp
bmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5v
LXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3QyNDciLCAiYm90MjQ4Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1XZWJHTC1UZXN0
cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImNhdGFs
aW5hLXJlbGVhc2UtdGVzdHMtd2syLXdlYmdsIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25h
bEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyIsICItLXdlYmdsLXRlc3Qtc3VpdGUi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDMwMiJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctSlNDLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEpTQ0ZhY3RvcnkiLCAi
YnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtanNjIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAicGxhdGZvcm0iOiAibWFjLWNhdGFsaW5hIiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWci
LCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndv
cmtlcm5hbWVzIjogWyJib3Q2MzgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtSlNDLVRlc3RzIiwg
ImZhY3RvcnkiOiAiVGVzdEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiY2F0YWxpbmEtcmVsZWFz
ZS10ZXN0cy1qc2MiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0
YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MTU3Il0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJB
cHBsZS1DYXRhbGluYS1MTElOVC1DTG9vcC1CdWlsZEFuZFRlc3QiLCAiZmFjdG9yeSI6ICJCdWls
ZEFuZFRlc3RMTElOVENMb29wRmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1jbG9vcC1k
ZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIs
ICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MTg3Il0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRh
bGluYS1EZWJ1Zy1UZXN0MjYyLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdDI2MkZhY3RvcnkiLCAi
YnVpbGRkaXIiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtdGVzdDI2MiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1jYXRhbGluYSIsICJjb25maWd1cmF0aW9uIjogImRl
YnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ3b3JrZXJuYW1lcyI6IFsiYm90NjAzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLUNh
dGFsaW5hLVJlbGVhc2UtV0syLVBlcmYiLCAiZmFjdG9yeSI6ICJEb3dubG9hZEFuZFBlcmZUZXN0
RmFjdG9yeSIsICJidWlsZGRpciI6ICJjYXRhbGluYS1yZWxlYXNlLXBlcmYtdGVzdHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJh
dGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAg
ICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90MjA1Il0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1DYXRhbGluYS1SZWxl
YXNlLVRlc3QyNjItVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0MjYyRmFjdG9yeSIsICJidWlsZGRp
ciI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXRlc3QyNjIiLAotICAgICAgICAgICAgICAgICAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtY2F0YWxpbmEiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3
b3JrZXJuYW1lcyI6IFsiYm90NjMyIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtRGVidWctQnVpbGQiLCAiZmFjdG9y
eSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAibW9qYXZlLWRlYnVnIiwKLSAgICAgICAg
ICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIsICJjb25maWd1cmF0aW9uIjog
ImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ0cmlnZ2VycyI6IFsibW9qYXZlLWRlYnVnLXRlc3RzLXdrMSIsICJtb2phdmUtZGVidWct
dGVzdHMtd2syIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2
MTIiLCAiYm90NjEzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtRGVidWctV0sxLVRlc3RzIiwgImZhY3RvcnkiOiAi
VGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIm1vamF2ZS1kZWJ1Zy10
ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZl
IiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0
cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJv
dDE4MyIsICJib3QxODQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzItVGVzdHMiLCAiZmFjdG9yeSI6
ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtZGVidWctdGVzdHMt
d2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIsICJj
b25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZh
aWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3QxNzgi
LCAiYm90MTc5Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxk
RmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAg
ICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0
cmlnZ2VycyI6IFsibW9qYXZlLXJlbGVhc2UtdGVzdHMtd2sxIiwgIm1vamF2ZS1yZWxlYXNlLXRl
c3RzLXdrMiJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjEw
IiwgImJvdDYxMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAiQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3RzIiwgImZhY3RvcnkiOiAi
VGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIm1vamF2ZS1yZWxlYXNl
LXRlc3RzLXdrMSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2ph
dmUiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5v
LXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjog
WyJib3QxMzIiLCAiYm90MTg1Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzItVGVzdHMiLCAiZmFj
dG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJtb2phdmUtcmVsZWFz
ZS10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9q
YXZlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZf
NjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1u
by1yZXRyeS1mYWlsdXJlcyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6
IFsiYm90MTk4IiwgImJvdDIxMCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBsZS1pT1MtMTQt
UmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJp
b3MtMTQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImlvcy0x
NCIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiYXJtNjQi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY3MyJdCi0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAibmFtZSI6ICJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLVJlbGVhc2UtQnVpbGQiLCAi
ZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiaW9zLXNpbXVsYXRvci0xNC1y
ZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRv
ci0xNCIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2
XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJpb3Mtc2ltdWxhdG9y
LTE0LXJlbGVhc2UtdGVzdHMtd2syIiwgImlwYWRvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10ZXN0
cy13azIiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDY0MSIs
ICJib3Q2ODIiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9TLTE0LVNpbXVsYXRvci1E
ZWJ1Zy1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJpb3Mt
c2ltdWxhdG9yLTE0LWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAi
aW9zLXNpbXVsYXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVy
ZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiaW9z
LXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIiLCAiaXBhZG9zLXNpbXVsYXRvci0xNC1kZWJ1
Zy10ZXN0cy13azIiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJv
dDY5NCIsICJib3Q2OTUiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtaU9TLTE0LVNpbXVs
YXRvci1SZWxlYXNlLVdLMi1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5
IiwgImJ1aWxkZGlyIjogImlvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10ZXN0cy13azIiLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiwgImNvbmZp
Z3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwgImRldmlj
ZV9tb2RlbCI6ICJpcGhvbmUiLAotICAgICAgICAgICAgICAgICAgICAgICJhZGRpdGlvbmFsQXJn
dW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
Indvcmtlcm5hbWVzIjogWyJib3Q2NTEiLCAiYm90NjUyIl0KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog
IkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVz
dEFsbEJ1dEpTQ0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiaW9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10
ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxh
dG9yLTE0IiwgImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2
XzY0Il0sICJkZXZpY2VfbW9kZWwiOiAiaXBob25lIiwKLSAgICAgICAgICAgICAgICAgICAgICAi
YWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1yZXRyeS1mYWlsdXJlcyIsICItLW5vLXNhbXBs
ZS1vbi10aW1lb3V0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJi
b3Q2NTMiLCAiYm90NjU0Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxlLWlQYWRPUy0xNC1T
aW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFj
dG9yeSIsICJidWlsZGRpciI6ICJpcGFkb3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2UtdGVzdHMtd2sy
IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRvci0xNCIs
ICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
ICJkZXZpY2VfbW9kZWwiOiAiaXBhZCIsCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9u
YWxBcmd1bWVudHMiOiBbIi0tbm8tcmV0cnktZmFpbHVyZXMiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZXMiOiBbImJvdDY2NyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBs
ZS1pUGFkT1MtMTQtU2ltdWxhdG9yLURlYnVnLVdLMi1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RB
bGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogImlwYWRvcy1zaW11bGF0b3ItMTQtZGVidWct
dGVzdHMtd2syIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiaW9zLXNpbXVs
YXRvci0xNCIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4
Nl82NCJdLCAiZGV2aWNlX21vZGVsIjogImlwYWQiLAotICAgICAgICAgICAgICAgICAgICAgICJh
ZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLXJldHJ5LWZhaWx1cmVzIiwgIi0tbm8tc2FtcGxl
LW9uLXRpbWVvdXQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJv
dDY2NCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJBcHBsZS10dk9TLTE0LVJlbGVhc2UtQnVpbGQi
LCAiZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAidHZvcy0xNC1yZWxlYXNl
IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAidHZvcy0xNCIsICJjb25maWd1
cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsiYXJtNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbImJvdDYwNyJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFt
ZSI6ICJBcHBsZS10dk9TLVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkIiwgImZhY3RvcnkiOiAi
QnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogInR2b3Mtc2ltdWxhdG9yLTE0LXJlbGVhc2UiLAot
ICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ0dm9zLXNpbXVsYXRvci0xNCIsICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2MDgiXQotICAgICAgICAg
ICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgIm5hbWUiOiAiQXBwbGUtd2F0Y2hPUy03LVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6ICJC
dWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2F0Y2hvcy03LXJlbGVhc2UiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLTciLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0XzMyIiwgImFybXY3ayJdLAotICAgICAg
ICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NjA5Il0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogIkFwcGxlLXdhdGNoT1MtU2ltdWxhdG9yLTctUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5
IjogIkJ1aWxkRmFjdG9yeSIsICJidWlsZGRpciI6ICJ3YXRjaG9zLXNpbXVsYXRvci03LXJlbGVh
c2UiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3YXRjaG9zLXNpbXVsYXRv
ci03IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJib3Q2NzIiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgIm5hbWUiOiAiQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6
ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2luMTAtcmVsZWFzZSIsCi0gICAgICAgICAg
ICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbiIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2Ui
LCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgInRy
aWdnZXJzIjogWyJ3aW4xMC1yZWxlYXNlLXRlc3RzIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
Indvcmtlcm5hbWVzIjogWyJib3Q1NDgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiQXBwbGUtV2lu
LTEwLURlYnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjog
IndpbjEwLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2luIiwg
ImNvbmZpZ3VyYXRpb24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJ3aW4xMC1kZWJ1Zy10ZXN0cyJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NTQ3Il0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogIkFwcGxlLVdpbi0xMC1SZWxlYXNlLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVz
dFdlYktpdDFGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbjEwLXJlbGVhc2UtdGVzdHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90NTQ2Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkFwcGxl
LVdpbi0xMC1EZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJLaXQxRmFjdG9yeSIsICJi
dWlsZGRpciI6ICJ3aW4xMC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogIndpbiIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiYm90
NTQ1Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1CdWls
ZCIsICJmYWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVKU0NCdW5kbGVGYWN0b3J5IiwgImJ1aWxk
ZGlyIjogImd0ay1saW51eC02NC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVz
IjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBbImd0ay1s
aW51eC02NC1yZWxlYXNlLXRlc3RzIiwgImd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLWpzIiwg
Imd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLXdlYmRyaXZlciIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJndGstbGludXgtNjQtcmVsZWFzZS13YXlsYW5kLXRlc3RzIiwg
Imd0ay1saW51eC02NC1yZWxlYXNlLXBlcmYtdGVzdHMiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMiJdCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6
ICJHVEstTGludXgtNjQtYml0LVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0
SlNDRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjog
InJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAg
ICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTYiXQotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5h
bWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVz
dEpTRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS10ZXN0cy1qcyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9u
IjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTEyIl0KLSAgICAgICAgICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAg
ICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XZWJEcml2ZXItVGVzdHMiLCAiZmFj
dG9yeSI6ICJUZXN0V2ViRHJpdmVyRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQt
cmVsZWFzZS10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICJwbGF0Zm9y
bSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3RrLWxp
bnV4LWJvdC0xNCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LURlYnVn
LUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogImd0ay1saW51
eC02NC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0ayIsICJj
b25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsiZ3RrLWxpbnV4LTY0LWRlYnVnLXRlc3Rz
IiwgImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyIsICJndGstbGludXgtNjQtZGVidWctdGVz
dHMtd2ViZHJpdmVyIl0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJn
dGstbGludXgtYm90LTMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1E
ZWJ1Zy1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGly
IjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMi
OiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3Rr
LWxpbnV4LWJvdC03Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIkdUSy1MaW51eC02NC1iaXQtRGVi
dWctSlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5IiwgImJ1aWxkZGlyIjogImd0
ay1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRm
b3JtIjogImd0ayIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBb
Ing4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3RrLWxp
bnV4LWJvdC0xMyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjQtYml0LURlYnVn
LVdlYkRyaXZlci1UZXN0cyIsICJmYWN0b3J5IjogIlRlc3RXZWJEcml2ZXJGYWN0b3J5IiwgImJ1
aWxkZGlyIjogImd0ay1saW51eC02NC1kZWJ1Zy10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29y
a2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTUiXQotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RL
LUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYiLCAiZmFjdG9yeSI6ICJEb3dubG9hZEFuZFBlcmZU
ZXN0RmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcmVsZWFzZS1wZXJmLXRlc3Rz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRp
b24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1kaXNwbGF5LXNlcnZlcj14b3Jn
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90
LTgiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdheWxh
bmQtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlNDRmFjdG9yeSIsICJidWlsZGRpciI6
ICJndGstbGludXgtNjQtcmVsZWFzZS13YXlsYW5kLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25h
bEFyZ3VtZW50cyI6IFsiLS1kaXNwbGF5LXNlcnZlcj13YXlsYW5kIl0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJndGstbGludXgtYm90LTkiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLURlYmlhbi1TdGFibGUtQnVpbGQiLCAi
ZmFjdG9yeSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJlbGVh
c2UtZGViaWFuIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNv
bmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1leHBlcmlt
ZW50YWwtZmVhdHVyZXMiLCAiLS1uby1tZWRpYS1zb3VyY2UiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAid29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTAiXQotICAgICAgICAgICAgICAg
ICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5h
bWUiOiAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVVidW50dS1MVFMtQnVpbGQiLCAiZmFjdG9y
eSI6ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdWJ1
bnR1IiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAiZ3RrIiwgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAiYWRkaXRpb25hbEFyZ3VtZW50cyI6IFsiLS1uby1leHBlcmltZW50YWwt
ZmVhdHVyZXMiLCAiLS1uby1tZWRpYS1zb3VyY2UiXSwKLSAgICAgICAgICAgICAgICAgICAgICAi
d29ya2VybmFtZXMiOiBbImd0ay1saW51eC1ib3QtMTEiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
R1RLLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MTgwNCIsICJm
YWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVNaW5pQnJvd3NlckJ1bmRsZUZhY3RvcnkiLCAiYnVp
bGRkaXIiOiAiZ3RrLWxpbnV4LTY0LXBhY2thZ2luZy1uaWd0aGx5LXVidW50dTE4MDQiLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJndGsiLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWJ1YmJsZXdyYXAtc2FuZGJveCJdLAot
ICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZ3RrLWxpbnV4LWJvdC0xNiJd
Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAibmFtZSI6ICJHVEstTGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmct
TmlnaHRseS1VYnVudHUyMDA0IiwgImZhY3RvcnkiOiAiQnVpbGRBbmRHZW5lcmF0ZU1pbmlCcm93
c2VyQnVuZGxlRmFjdG9yeSIsICJidWlsZGRpciI6ICJndGstbGludXgtNjQtcGFja2FnaW5nLW5p
Z3RobHktdWJ1bnR1MjAwNCIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImd0
ayIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8t
YnViYmxld3JhcC1zYW5kYm94Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVz
IjogWyJndGstbGludXgtYm90LTE3Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNhaXJvLTY0
LWJpdC1XS0wtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJidWls
ZGRpciI6ICJ3aW5jYWlyby13a2wtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBs
YXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRl
Y3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAidHJpZ2dlcnMiOiBb
IndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzIiwgIndpbmNhaXJvLWpzYy1yZWxlYXNlLXRlc3Rz
Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3aW5jYWlyby13a2wt
cmVsZWFzZS1idWlsZC0wMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXaW5DYWlyby02NC1iaXQt
V0tMLVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0V2ViS2l0MUFsbEJ1dEpTQ0ZhY3Rv
cnkiLCAiYnVpbGRkaXIiOiAid2luY2Fpcm8td2tsLXJlbGVhc2UtdGVzdHMiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJjb25maWd1cmF0aW9uIjogInJl
bGVhc2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAg
ICAgIndvcmtlcm5hbWVzIjogWyJ3aW5jYWlyby13a2wtcmVsZWFzZS10ZXN0cy0wMSIsICJ3aW5j
YWlyby13a2wtcmVsZWFzZS10ZXN0cy0wMiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXaW5DYWly
by02NC1iaXQtSlNDLVJlbGVhc2UtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNDRmFjdG9yeSIs
ICJidWlsZGRpciI6ICJ3aW5jYWlyby1qc2MtcmVsZWFzZS10ZXN0cyIsCi0gICAgICAgICAgICAg
ICAgICAgICAgInBsYXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFz
ZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAi
d29ya2VybmFtZXMiOiBbIndpbmNhaXJvLWpzYy1yZWxlYXNlLXRlc3RzLTAxIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAg
ICAgICJuYW1lIjogIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctQnVpbGQiLCAiZmFjdG9yeSI6
ICJCdWlsZEZhY3RvcnkiLCAiYnVpbGRkaXIiOiAid2luY2Fpcm8td2tsLWRlYnVnIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAicGxhdGZvcm0iOiAid2luY2Fpcm8iLCAiY29uZmlndXJhdGlvbiI6
ICJkZWJ1ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAidHJpZ2dlcnMiOiBbIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cyIsICJ3aW5jYWlyby1q
c2MtZGVidWctdGVzdHMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
IndpbmNhaXJvLXdrbC1kZWJ1Zy1idWlsZC0wMSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXaW5D
YWlyby02NC1iaXQtV0tMLURlYnVnLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdFdlYktpdDFBbGxC
dXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndpbmNhaXJvLXdrbC1kZWJ1Zy10ZXN0cyIsCi0g
ICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndpbmNhaXJvIiwgImNvbmZpZ3VyYXRp
b24iOiAiZGVidWciLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAg
ICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJ3aW5jYWlyby13a2wtZGVidWctdGVzdHMtMDEiLCAi
d2luY2Fpcm8td2tsLWRlYnVnLXRlc3RzLTAyIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldpbkNh
aXJvLTY0LWJpdC1KU0MtRGVidWctVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNDRmFjdG9yeSIs
ICJidWlsZGRpciI6ICJ3aW5jYWlyby1qc2MtZGVidWctdGVzdHMiLAotICAgICAgICAgICAgICAg
ICAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwg
ImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3Jr
ZXJuYW1lcyI6IFsid2luY2Fpcm8tanNjLWRlYnVnLXRlc3RzLTAxIl0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJu
YW1lIjogIlBsYXlTdGF0aW9uLURlYnVnLUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5
IiwgImJ1aWxkZGlyIjogInBsYXlzdGF0aW9uLWRlYnVnIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAicGxhdGZvcm0iOiAicGxheXN0YXRpb24iLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIsICJh
cmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2Vy
bmFtZXMiOiBbInBsYXlzdGF0aW9uLWRlYnVnLWJ1aWxkLTAxIl0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1l
IjogIlBsYXlTdGF0aW9uLVJlbGVhc2UtQnVpbGQiLCAiZmFjdG9yeSI6ICJCdWlsZEZhY3Rvcnki
LCAiYnVpbGRkaXIiOiAicGxheXN0YXRpb24tcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInBsYXRmb3JtIjogInBsYXlzdGF0aW9uIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29y
a2VybmFtZXMiOiBbInBsYXlzdGF0aW9uLXJlbGVhc2UtYnVpbGQtMDEiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
Im5hbWUiOiAiSlNDT25seS1MaW51eC1BQXJjaDY0LVJlbGVhc2UiLCAiZmFjdG9yeSI6ICJCdWls
ZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeSIsICJidWlsZGRpciI6ICJqc2Nvbmx5LWxpbnV4LWFh
cmNoNjQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImpzYy1v
bmx5IiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJhYXJj
aDY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgIndvcmtlcm5hbWVzIjogWyJqc2Nvbmx5LWxp
bnV4LWlnYWxpYS1ib3QtMiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJKU0NPbmx5LUxpbnV4LUFS
TXY3LVRodW1iMi1SZWxlYXNlIiwgImZhY3RvcnkiOiAiQnVpbGRBbmRSZW1vdGVKU0NUZXN0c0Zh
Y3RvcnkiLCAiYnVpbGRkaXIiOiAianNjb25seS1saW51eC1hcm12Ny10aHVtYjItcmVsZWFzZSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJhcm12NyJdLAotICAgICAgICAg
ICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsianNjb25seS1saW51eC1pZ2FsaWEtYm90LTMi
XQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgIm5hbWUiOiAiSlNDT25seS1MaW51eC1BUk12Ny1UaHVtYjItU29mdEZQ
LVJlbGVhc2UiLCAiZmFjdG9yeSI6ICJCdWlsZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeSIsICJi
dWlsZGRpciI6ICJqc2Nvbmx5LWxpbnV4LWFybXY3LXRodW1iMi1zb2Z0ZnAtcmVsZWFzZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwgImNvbmZpZ3VyYXRp
b24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJhcm12NyJdLAotICAgICAgICAgICAg
ICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsianNjb25seS1saW51eC1pZ2FsaWEtYm90LTUiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgIm5hbWUiOiAiSlNDT25seS1MaW51eC1NSVBTMzJlbC1SZWxlYXNlIiwgImZh
Y3RvcnkiOiAiQnVpbGRBbmRSZW1vdGVKU0NUZXN0c0ZhY3RvcnkiLCAiYnVpbGRkaXIiOiAianNj
b25seS1saW51eC1taXBzMzJlbC1yZWxlYXNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxh
dGZvcm0iOiAianNjLW9ubHkiLCAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwgImFyY2hpdGVj
dHVyZXMiOiBbIm1pcHMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBb
ImpzY29ubHktbGludXgtaWdhbGlhLWJvdC0xIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldQRS1M
aW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCIsICJmYWN0b3J5IjogIkJ1aWxkRmFjdG9yeSIsICJi
dWlsZGRpciI6ICJ3cGUtbGludXgtNjQtcmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
InBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLCAiYXJjaGl0ZWN0
dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAgInRyaWdnZXJzIjogWyJ3
cGUtbGludXgtNjQtcmVsZWFzZS10ZXN0cyIsICJ3cGUtbGludXgtNjQtcmVsZWFzZS10ZXN0cy1q
cyJdLAotICAgICAgICAgICAgICAgICAgICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJv
dC0xIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICJuYW1lIjogIldQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0
cyIsICJmYWN0b3J5IjogIlRlc3RBbGxCdXRKU0NGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndwZS1s
aW51eC02NC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZvcm0i
OiAid3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjogWyJ4
ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndwZS1saW51
eC1ib3QtMiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUtTGludXgtNjQtYml0LVJlbGVhc2Ut
SlMtVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0SlNGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndwZS1s
aW51eC02NC1yZWxlYXNlLXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAicGxhdGZv
cm0iOiAid3BlIiwgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsICJhcmNoaXRlY3R1cmVzIjog
WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29ya2VybmFtZXMiOiBbIndwZS1s
aW51eC1ib3QtNSJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUtTGludXgtNjQtYml0LURlYnVn
LUJ1aWxkIiwgImZhY3RvcnkiOiAiQnVpbGRGYWN0b3J5IiwgImJ1aWxkZGlyIjogIndwZS1saW51
eC02NC1kZWJ1ZyIsCi0gICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndwZSIsICJj
b25maWd1cmF0aW9uIjogImRlYnVnIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAg
ICAgICAgICAgICAgICAgICAgICJ0cmlnZ2VycyI6IFsid3BlLWxpbnV4LTY0LWRlYnVnLXRlc3Rz
IiwgIndwZS1saW51eC02NC1kZWJ1Zy10ZXN0cy1qcyJdLAotICAgICAgICAgICAgICAgICAgICAg
ICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC0zIl0KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICJuYW1lIjog
IldQRS1MaW51eC02NC1iaXQtRGVidWctVGVzdHMiLCAiZmFjdG9yeSI6ICJUZXN0QWxsQnV0SlND
RmFjdG9yeSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtZGVidWctdGVzdHMiLAotICAgICAg
ICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1
ZyIsICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAi
d29ya2VybmFtZXMiOiBbIndwZS1saW51eC1ib3QtNCJdCi0gICAgICAgICAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJX
UEUtTGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzIiwgImZhY3RvcnkiOiAiVGVzdEpTRmFjdG9y
eSIsICJidWlsZGRpciI6ICJ3cGUtbGludXgtNjQtZGVidWctdGVzdHMtanMiLAotICAgICAgICAg
ICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29uZmlndXJhdGlvbiI6ICJkZWJ1ZyIs
ICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAid29y
a2VybmFtZXMiOiBbIndwZS1saW51eC1ib3QtNiJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJXUEUt
TGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVudHUxODA0IiwgImZhY3Rv
cnkiOiAiQnVpbGRBbmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeSIsICJidWlsZGRp
ciI6ICJ3cGUtbGludXgtNjQtcGFja2FnaW5nLW5pZ3RobHktdWJ1bnR1MTgwNCIsCi0gICAgICAg
ICAgICAgICAgICAgICAgInBsYXRmb3JtIjogIndwZSIsICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLCAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ImFkZGl0aW9uYWxBcmd1bWVudHMiOiBbIi0tbm8tYnViYmxld3JhcC1zYW5kYm94IiwgIi0tY21h
a2VhcmdzPS1ERU5BQkxFX1dQRV9RVF9BUEk9T0ZGIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
Indvcmtlcm5hbWVzIjogWyJ3cGUtbGludXgtYm90LTciXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiAi
V1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MjAwNCIsICJm
YWN0b3J5IjogIkJ1aWxkQW5kR2VuZXJhdGVNaW5pQnJvd3NlckJ1bmRsZUZhY3RvcnkiLCAiYnVp
bGRkaXIiOiAid3BlLWxpbnV4LTY0LXBhY2thZ2luZy1uaWd0aGx5LXVidW50dTIwMDQiLAotICAg
ICAgICAgICAgICAgICAgICAgICJwbGF0Zm9ybSI6ICJ3cGUiLCAiY29uZmlndXJhdGlvbiI6ICJy
ZWxlYXNlIiwgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJhZGRpdGlvbmFsQXJndW1lbnRzIjogWyItLW5vLWJ1YmJsZXdyYXAtc2FuZGJveCIsICIt
LWNtYWtlYXJncz0tREVOQUJMRV9XUEVfUVRfQVBJPU9GRiJdLAotICAgICAgICAgICAgICAgICAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsid3BlLWxpbnV4LWJvdC04Il0KLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgICAgXSwKLQotICAgICJzY2hlZHVsZXJzIjogWyB7ICJ0eXBl
IjogIkFueUJyYW5jaFNjaGVkdWxlciIsICJuYW1lIjogInRydW5rIiwgImNoYW5nZV9maWx0ZXIi
OiAidHJ1bmtfZmlsdGVyIiwgInRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAg
ICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUJ1aWxk
IiwgIkdUSy1MaW51eC02NC1iaXQtRGVidWctQnVpbGQiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1EZWJpYW4tU3RhYmxl
LUJ1aWxkIiwgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1VYnVudHUtTFRTLUJ1aWxkIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKU0NPbmx5LUxpbnV4LUFBcmNo
NjQtUmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSlND
T25seS1MaW51eC1BUk12Ny1UaHVtYjItUmVsZWFzZSIsICJKU0NPbmx5LUxpbnV4LUFSTXY3LVRo
dW1iMi1Tb2Z0RlAtUmVsZWFzZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiSlNDT25seS1MaW51eC1NSVBTMzJlbC1SZWxlYXNlIiwgIlBsYXlTdGF0aW9uLVJlbGVh
c2UtQnVpbGQiLCAiUGxheVN0YXRpb24tRGVidWctQnVpbGQiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIldpbkNhaXJvLTY0LWJpdC1XS0wtUmVsZWFzZS1CdWlsZCIs
ICJXaW5DYWlyby02NC1iaXQtV0tMLURlYnVnLUJ1aWxkIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJXUEUtTGludXgtNjQtYml0LVJlbGVhc2UtQnVpbGQiLCAiV1BF
LUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJw
bGF0Zm9ybSI6ICJtYWMtYmlnc3VyIiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGlt
ZXIiOiA0NS4wLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxl
LUJpZ1N1ci1SZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwgInBsYXRm
b3JtIjogIm1hYy1jYXRhbGluYSIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRpbWVy
IjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1D
YXRhbGluYS1SZWxlYXNlLUJ1aWxkIiwgIkFwcGxlLUNhdGFsaW5hLURlYnVnLUJ1aWxkIiwgIkFw
cGxlLUNhdGFsaW5hLUxMSU5ULUNMb29wLUJ1aWxkQW5kVGVzdCJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFt
ZSI6ICJjYXRhbGluYS1yZWxlYXNlLXBlcmYtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAg
ICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0syLVBlcmYiXQotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdn
ZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEtcmVsZWFzZS10ZXN0cy13azEiLAotICAgICAgICAg
ICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sx
LVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
dHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtd2sy
IiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1DYXRhbGlu
YS1SZWxlYXNlLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1kZWJ1
Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFw
cGxlLUNhdGFsaW5hLURlYnVnLVdLMS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRh
bGluYS1kZWJ1Zy10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFt
ZXMiOiBbIkFwcGxlLUNhdGFsaW5hLURlYnVnLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFt
ZSI6ICJjYXRhbGluYS1yZWxlYXNlLXRlc3RzLXdrMi13ZWJnbCIsCi0gICAgICAgICAgICAgICAg
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItV2ViR0wt
VGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiY2F0YWxpbmEtZGVidWctdGVzdHMtd2syLWdw
dXByb2Nlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxl
LUNhdGFsaW5hLURlYnVnLVdLMi1HUFVQcm9jZXNzLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1l
IjogImNhdGFsaW5hLWRlYnVnLXRlc3RzLWpzYyIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1
aWxkZXJOYW1lcyI6IFsiQXBwbGUtQ2F0YWxpbmEtRGVidWctSlNDLVRlc3RzIl0KLSAgICAgICAg
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJs
ZSIsICJuYW1lIjogImNhdGFsaW5hLXJlbGVhc2UtdGVzdHMtanNjIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUpTQy1UZXN0
cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUi
OiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJjYXRhbGluYS1kZWJ1Zy10ZXN0cy10ZXN0MjYyIiwK
LSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1DYXRhbGluYS1E
ZWJ1Zy1UZXN0MjYyLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
ICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImNhdGFsaW5hLXJlbGVh
c2UtdGVzdHMtdGVzdDI2MiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6
IFsiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1UZXN0MjYyLVRlc3RzIl0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmlj
U2NoZWR1bGVyIiwgInBsYXRmb3JtIjogIm1hYy1tb2phdmUiLCAiYnJhbmNoIjogInRydW5rIiwg
InRyZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJO
YW1lcyI6IFsiQXBwbGUtTW9qYXZlLVJlbGVhc2UtQnVpbGQiLCAiQXBwbGUtTW9qYXZlLURlYnVn
LUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAi
dHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIm1vamF2ZS1yZWxlYXNlLXRlc3RzLXdrMSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUtTW9qYXZlLVJl
bGVhc2UtV0sxLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg
ICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIm1vamF2ZS1yZWxlYXNlLXRl
c3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiQXBwbGUt
TW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIm1vamF2ZS1k
ZWJ1Zy10ZXN0cy13azEiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBb
IkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzEtVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAibW9q
YXZlLWRlYnVnLXRlc3RzLXdrMiIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1l
cyI6IFsiQXBwbGUtTW9qYXZlLURlYnVnLVdLMi1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVk
dWxlciIsICJwbGF0Zm9ybSI6ICJpb3MtMTQiLCAiYnJhbmNoIjogInRydW5rIiwgInRyZWVTdGFi
bGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsi
QXBwbGUtaU9TLTE0LVJlbGVhc2UtQnVpbGQiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlBsYXRmb3JtU3BlY2lmaWNTY2hlZHVsZXIiLCAi
cGxhdGZvcm0iOiAiaW9zLXNpbXVsYXRvci0xNCIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0
YWJsZVRpbWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjog
WyJBcHBsZS1pT1MtMTQtU2ltdWxhdG9yLVJlbGVhc2UtQnVpbGQiLCAiQXBwbGUtaU9TLTE0LVNp
bXVsYXRvci1EZWJ1Zy1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJwbGF0Zm9y
bSI6ICJ0dm9zLTE0IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVlU3RhYmxlVGltZXIiOiA0NS4w
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLXR2T1MtMTQt
UmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
ICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJ0
dm9zLXNpbXVsYXRvci0xNCIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRpbWVyIjog
NDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS10dk9T
LVNpbXVsYXRvci0xNC1SZWxlYXNlLUJ1aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyIiwg
InBsYXRmb3JtIjogIndhdGNob3MtNyIsICJicmFuY2giOiAidHJ1bmsiLCAidHJlZVN0YWJsZVRp
bWVyIjogNDUuMCwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBs
ZS13YXRjaE9TLTctUmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVjaWZpY1NjaGVkdWxlciIsICJw
bGF0Zm9ybSI6ICJ3YXRjaG9zLXNpbXVsYXRvci03IiwgImJyYW5jaCI6ICJ0cnVuayIsICJ0cmVl
U3RhYmxlVGltZXIiOiA0NS4wLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMi
OiBbIkFwcGxlLXdhdGNoT1MtU2ltdWxhdG9yLTctUmVsZWFzZS1CdWlsZCJdCi0gICAgICAgICAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUiOiAiUGxhdGZvcm1TcGVj
aWZpY1NjaGVkdWxlciIsICJwbGF0Zm9ybSI6ICJ3aW4iLCAiYnJhbmNoIjogInRydW5rIiwgInRy
ZWVTdGFibGVUaW1lciI6IDQ1LjAsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1l
cyI6IFsiQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiLCAiQXBwbGUtV2luLTEwLURlYnVnLUJ1
aWxkIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlw
ZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImlvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10ZXN0
cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlP
Uy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9
LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAi
aW9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIiLAotICAgICAgICAgICAgICAgICAgICAg
ICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3Rz
Il0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6
ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImlwYWRvcy1zaW11bGF0b3ItMTQtcmVsZWFzZS10ZXN0
cy13azIiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlQ
YWRPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMiXQotICAgICAgICAgICAgICAgICAg
ICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUi
OiAiaXBhZG9zLXNpbXVsYXRvci0xNC1kZWJ1Zy10ZXN0cy13azIiLAotICAgICAgICAgICAgICAg
ICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItRGVidWct
V0syLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbjEwLXJlbGVhc2UtdGVzdHMiLAot
ICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkFwcGxlLVdpbi0xMC1SZWxl
YXNlLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAg
eyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndpbjEwLWRlYnVnLXRlc3RzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJBcHBsZS1XaW4tMTAtRGVidWct
VGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMi
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1i
aXQtUmVsZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg
ICAgICAgIHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJndGstbGludXgtNjQtcmVs
ZWFzZS10ZXN0cy1qcyIsCi0gICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXJOYW1lcyI6IFsi
R1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjog
Imd0ay1saW51eC02NC1yZWxlYXNlLXRlc3RzLXdlYmRyaXZlciIsCi0gICAgICAgICAgICAgICAg
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdlYkRyaXZl
ci1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsg
InR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJndGstbGludXgtNjQtZGVidWctdGVzdHMi
LAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1i
aXQtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAg
ICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAiZ3RrLWxpbnV4LTY0LWRlYnVn
LXRlc3RzLWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJHVEst
TGludXgtNjQtYml0LURlYnVnLUpTLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1s
aW51eC02NC1kZWJ1Zy10ZXN0cy13ZWJkcml2ZXIiLAotICAgICAgICAgICAgICAgICAgICAgICJi
dWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1iaXQtRGVidWctV2ViRHJpdmVyLVRlc3RzIl0K
LSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJU
cmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1yZWxlYXNlLXBlcmYtdGVzdHMiLAot
ICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NC1iaXQt
UmVsZWFzZS1QZXJmIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAg
ICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogImd0ay1saW51eC02NC1yZWxlYXNl
LXdheWxhbmQtdGVzdHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBb
IkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1XYXlsYW5kLVRlc3RzIl0KLSAgICAgICAgICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJu
YW1lIjogIndpbmNhaXJvLXdrbC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAiYnVpbGRlck5hbWVzIjogWyJXaW5DYWlyby02NC1iaXQtV0tMLVJlbGVhc2UtVGVzdHMiXQot
ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRy
aWdnZXJhYmxlIiwgIm5hbWUiOiAid2luY2Fpcm8tanNjLXJlbGVhc2UtdGVzdHMiLAotICAgICAg
ICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldpbkNhaXJvLTY0LWJpdC1KU0MtUmVs
ZWFzZS1UZXN0cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAg
IHsgInR5cGUiOiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3aW5jYWlyby13a2wtZGVidWctdGVz
dHMiLAotICAgICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldpbkNhaXJvLTY0
LWJpdC1XS0wtRGVidWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid2luY2Fpcm8tanNj
LWRlYnVnLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJX
aW5DYWlyby02NC1iaXQtSlNDLURlYnVnLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsICJuYW1lIjogIndw
ZS1saW51eC02NC1yZWxlYXNlLXRlc3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRl
ck5hbWVzIjogWyJXUEUtTGludXgtNjQtYml0LVJlbGVhc2UtVGVzdHMiXQotICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwg
Im5hbWUiOiAid3BlLWxpbnV4LTY0LXJlbGVhc2UtdGVzdHMtanMiLAotICAgICAgICAgICAgICAg
ICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQRS1MaW51eC02NC1iaXQtUmVsZWFzZS1KUy1UZXN0
cyJdCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgInR5cGUi
OiAiVHJpZ2dlcmFibGUiLCAibmFtZSI6ICJ3cGUtbGludXgtNjQtZGVidWctdGVzdHMiLAotICAg
ICAgICAgICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIldQRS1MaW51eC02NC1iaXQtRGVi
dWctVGVzdHMiXQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICB7
ICJ0eXBlIjogIlRyaWdnZXJhYmxlIiwgIm5hbWUiOiAid3BlLWxpbnV4LTY0LWRlYnVnLXRlc3Rz
LWpzIiwKLSAgICAgICAgICAgICAgICAgICAgICAiYnVpbGRlck5hbWVzIjogWyJXUEUtTGludXgt
NjQtYml0LURlYnVnLUpTLVRlc3RzIl0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICAgICAgeyAidHlwZSI6ICJOaWdodGx5IiwgIm5hbWUiOiAiTmlnaHRseVNjaGVkdWxl
ciIsICJjaGFuZ2VfZmlsdGVyIjogInRydW5rX2ZpbHRlciIsCi0gICAgICAgICAgICAgICAgICAg
ICAgImJyYW5jaCI6ICJ0cnVuayIsICJob3VyIjogMjIsICJtaW51dGUiOiAwLAotICAgICAgICAg
ICAgICAgICAgICAgICJidWlsZGVyTmFtZXMiOiBbIkdUSy1MaW51eC02NGJpdC1SZWxlYXNlLVBh
Y2thZ2luZy1OaWdodGx5LVVidW50dTE4MDQiLCAiR1RLLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFj
a2FnaW5nLU5pZ2h0bHktVWJ1bnR1MjAwNCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1
bnR1MTgwNCIsICJXUEUtTGludXgtNjRiaXQtUmVsZWFzZS1QYWNrYWdpbmctTmlnaHRseS1VYnVu
dHUyMDA0Il0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgXQotfQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvZmFj
dG9yaWVzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL2ZhY3Rvcmllcy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvZmFjdG9yaWVzLnB5CShu
b25leGlzdGVudCkKQEAgLTEsMjQ3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGJ1aWxkYm90LnByb2Nlc3MgaW1wb3J0IGZhY3RvcnkK
LWZyb20gYnVpbGRib3Quc3RlcHMgaW1wb3J0IHRyaWdnZXIKLQotZnJvbSBzdGVwcyBpbXBvcnQg
KgotCi0KLWNsYXNzIEZhY3RvcnkoZmFjdG9yeS5CdWlsZEZhY3RvcnkpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYnVpbGRP
bmx5LCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpOgotICAgICAgICBmYWN0b3J5
LkJ1aWxkRmFjdG9yeS5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29uZmln
dXJlQnVpbGQocGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwg
YXJjaGl0ZWN0dXJlPSIgIi5qb2luKGFyY2hpdGVjdHVyZXMpLCBidWlsZE9ubHk9YnVpbGRPbmx5
LCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbD1k
ZXZpY2VfbW9kZWwpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRTb3VyY2UoKSkKLSAg
ICAgICAgaWYgbm90IChwbGF0Zm9ybSA9PSAianNjLW9ubHkiKToKLSAgICAgICAgICAgIHNlbGYu
YWRkU3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDbGVhbkJ1
aWxkSWZTY2hlZHVsZWQoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKERlbGV0ZVN0YWxlQnVpbGRG
aWxlcygpKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAid2luIjoKLSAgICAgICAgICAgIHNlbGYu
YWRkU3RlcChJbnN0YWxsV2luMzJEZXBlbmRlbmNpZXMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0g
PT0gImd0ayIgYW5kICItLW5vLWV4cGVyaW1lbnRhbC1mZWF0dXJlcyIgbm90IGluIChhZGRpdGlv
bmFsQXJndW1lbnRzIG9yIFtdKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChJbnN0YWxsR3Rr
RGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICJ3cGUiOgotICAgICAgICAg
ICAgc2VsZi5hZGRTdGVwKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLQotCi1jbGFzcyBCdWls
ZEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgU2hvdWxkUnVuSlNDQnVuZGxlU3RlcCA9IEZhbHNlCi0g
ICAgU2hvdWxkUnVuTWluaUJyb3dzZXJCdW5kbGVTdGVwID0gRmFsc2UKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgdHJpZ2dl
cnM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0g
ICAgICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFy
Y2hpdGVjdHVyZXMsIFRydWUsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLQot
ICAgICAgICBpZiBwbGF0Zm9ybSA9PSAid2luIiBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCJwbGF5
c3RhdGlvbiIpOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQodGltZW91
dD0yICogNjAgKiA2MCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAo
Q29tcGlsZVdlYktpdCgpKQotCi0gICAgICAgIGlmIHNlbGYuU2hvdWxkUnVuSlNDQnVuZGxlU3Rl
cDoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChHZW5lcmF0ZUpTQ0J1bmRsZSgpKQotICAgICAg
ICBpZiBzZWxmLlNob3VsZFJ1bk1pbmlCcm93c2VyQnVuZGxlU3RlcDoKLSAgICAgICAgICAgIHNl
bGYuYWRkU3RlcChHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlKCkpCi0KLSAgICAgICAgaWYgdHJp
Z2dlcnM6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZUJ1aWx0UHJvZHVjdCgpKQot
ICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAg
ICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJykgb3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgn
aW9zLXNpbXVsYXRvcicpIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3R2b3Mtc2ltdWxhdG9yJykg
b3IgcGxhdGZvcm0uc3RhcnRzd2l0aCgnd2F0Y2hvcy1zaW11bGF0b3InKToKLSAgICAgICAgICAg
ICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2ZU1pbmlmaWVkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAg
ICAgICAgICAgc2VsZi5hZGRTdGVwKFVwbG9hZE1pbmlmaWVkQnVpbHRQcm9kdWN0KCkpCi0gICAg
ICAgICAgICBzZWxmLmFkZFN0ZXAoVHJhbnNmZXJUb1MzKCkpCi0gICAgICAgICAgICBzZWxmLmFk
ZFN0ZXAodHJpZ2dlci5UcmlnZ2VyKHNjaGVkdWxlck5hbWVzPXRyaWdnZXJzKSkKLQotCi1jbGFz
cyBUZXN0RmFjdG9yeShGYWN0b3J5KToKLSAgICBKU0NUZXN0Q2xhc3MgPSBSdW5KYXZhU2NyaXB0
Q29yZVRlc3RzCi0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHMKLQotICAgIGRl
ZiBnZXRQcm9kdWN0KHNlbGYpOgotICAgICAgICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFBy
b2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlcywgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2Fy
Z3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0
aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21v
ZGVsLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5nZXRQcm9kdWN0KCkKLQotICAgICAgICBpZiBw
bGF0Zm9ybSA9PSAnd2luY2Fpcm8nOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKEluc3RhbGxX
aW5DYWlyb0RlcGVuZGVuY2llcygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgo
J21hYycpIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAg
ICAgIHNlbGYuYWRkU3RlcChXYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKCkpCi0KLSAgICAgICAgaWYg
c2VsZi5KU0NUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoc2VsZi5KU0NUZXN0
Q2xhc3MoKSkKLSAgICAgICAgaWYgc2VsZi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBz
ZWxmLmFkZFN0ZXAoc2VsZi5MYXlvdXRUZXN0Q2xhc3MoKSkKLQotICAgICAgICBpZiBwbGF0Zm9y
bS5zdGFydHN3aXRoKCd3aW4nKSBvciBwbGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMnKSBvciBwbGF0
Zm9ybS5zdGFydHN3aXRoKCdpb3Mtc2ltdWxhdG9yJyk6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0
ZXAoUnVuQVBJVGVzdHMoKSkKLQotICAgICAgICBpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMn
KToKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5MTERCV2ViS2l0VGVzdHMoKSkKLQotICAg
ICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViS2l0UHlUZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoUnVuUGVybFRlc3RzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5CaW5kaW5nc1Rlc3Rz
KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5CdWlsdGluc1Rlc3RzKCkpCi0gICAgICAgIGlm
IG5vdCBwbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgICAgIHNlbGYuYWRkU3Rl
cChSdW5EYXNoYm9hcmRUZXN0cygpKQotCi0gICAgICAgIGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgo
J21hYycpIG9yIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAg
ICAgIHNlbGYuYWRkU3RlcChUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uKCkpCi0KLSAgICAgICAg
aWYgc2VsZi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoQXJjaGl2
ZVRlc3RSZXN1bHRzKCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoVXBsb2FkVGVzdFJlc3Vs
dHMoKSkKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0VGVzdFJlc3VsdHMoKSkKLSAg
ICAgICAgaWYgcGxhdGZvcm0gPT0gImd0ayI6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVu
R3RrQVBJVGVzdHMoKSkKLSAgICAgICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHMgYW5kICIt
LWRpc3BsYXktc2VydmVyPXdheWxhbmQiIGluIGFkZGl0aW9uYWxBcmd1bWVudHM6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldlYkRyaXZlclRlc3RzKCkpCi0gICAgICAgIGlmIHBs
YXRmb3JtID09ICJ3cGUiOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldQRUFQSVRlc3Rz
KCkpCi0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViRHJpdmVyVGVzdHMoKSkKLQotCi1j
bGFzcyBCdWlsZEFuZFRlc3RGYWN0b3J5KFRlc3RGYWN0b3J5KToKLSAgICBkZWYgZ2V0UHJvZHVj
dChzZWxmKToKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoKSkKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywg
dHJpZ2dlcnM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9u
ZSwgKiprd2FyZ3MpOgotICAgICAgICBUZXN0RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9y
bSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2
aWNlX21vZGVsLCAqKmt3YXJncykKLSAgICAgICAgaWYgdHJpZ2dlcnM6Ci0gICAgICAgICAgICBz
ZWxmLmFkZFN0ZXAoQXJjaGl2ZUJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAgICAgc2VsZi5hZGRT
dGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKHRyaWdn
ZXIuVHJpZ2dlcihzY2hlZHVsZXJOYW1lcz10cmlnZ2VycykpCi0KLQotY2xhc3MgQnVpbGRBbmRU
ZXN0TExJTlRDTG9vcEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBs
YXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCB0cmlnZ2Vycz1Ob25lLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lLCAqKmt3YXJncyk6Ci0gICAg
ICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hp
dGVjdHVyZXMsIEZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwsICoqa3dh
cmdzKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZUxMSU5UQ0xvb3AoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKFJ1bkxMSU5UQ0xvb3BUZXN0cygpKQotCi0KLWNsYXNzIEJ1aWxkQW5kVGVz
dDMyYml0SlNDRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZv
cm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9u
YWxBcmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAg
RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlcywgRmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCwgKiprd2FyZ3Mp
Ci0gICAgICAgIHNlbGYuYWRkU3RlcChDb21waWxlMzJiaXRKU0MoKSkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKFJ1bjMyYml0SlNDVGVzdHMoKSkKLQotCi1jbGFzcyBCdWlsZEFuZE5vbkxheW91dFRl
c3RGYWN0b3J5KEJ1aWxkQW5kVGVzdEZhY3RvcnkpOgotICAgIExheW91dFRlc3RDbGFzcyA9IE5v
bmUKLQotCi1jbGFzcyBCdWlsZEFuZFJlbW90ZUpTQ1Rlc3RzRmFjdG9yeShGYWN0b3J5KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVy
ZXMsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVs
PU5vbmUpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1
cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNl
X21vZGVsKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZUpTQ09ubHkodGltZW91dD02MCAq
IDYwKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1blJlbW90ZUphdmFTY3JpcHRDb3JlVGVzdHMo
dGltZW91dD02MCAqIDYwKSkKLQotCi1jbGFzcyBUZXN0V2ViS2l0MUxlYWtzRmFjdG9yeShGYWN0
b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFy
Y2hpdGVjdHVyZXMsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgZGV2aWNlX21vZGVsPU5vbmUp
OgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9u
LCBhcmNoaXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVs
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoRG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKEV4dHJhY3RCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVw
KFJ1bldlYktpdDFMZWFrVGVzdHMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEFyY2hpdmVUZXN0
UmVzdWx0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoVXBsb2FkVGVzdFJlc3VsdHMoKSkKLSAg
ICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RUZXN0UmVzdWx0c0FuZExlYWtzKCkpCi0KLQotY2xh
c3MgVGVzdEFsbEJ1dEpTQ0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgotICAgIEpTQ1Rlc3RDbGFzcyA9
IE5vbmUKLQotCi1jbGFzcyBCdWlsZEFuZEdlbmVyYXRlSlNDQnVuZGxlRmFjdG9yeShCdWlsZEZh
Y3RvcnkpOgotICAgIFNob3VsZFJ1bkpTQ0J1bmRsZVN0ZXAgPSBUcnVlCi0KLQotY2xhc3MgQnVp
bGRBbmRHZW5lcmF0ZU1pbmlCcm93c2VyQnVuZGxlRmFjdG9yeShCdWlsZEZhY3RvcnkpOgotICAg
IFNob3VsZFJ1bk1pbmlCcm93c2VyQnVuZGxlU3RlcCA9IFRydWUKLQotCi1jbGFzcyBCdWlsZEFu
ZEdlbmVyYXRlTWluaUJyb3dzZXJKU0NCdW5kbGVGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAg
U2hvdWxkUnVuSlNDQnVuZGxlU3RlcCA9IFRydWUKLSAgICBTaG91bGRSdW5NaW5pQnJvd3NlckJ1
bmRsZVN0ZXAgPSBUcnVlCi0KLQotY2xhc3MgVGVzdEpTQ0ZhY3RvcnkoRmFjdG9yeSk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVz
LCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAg
RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlcywgRmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3Rl
cChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzKCkpCi0KLQotY2xhc3MgVGVzdDI2MkZhY3RvcnkoRmFjdG9yeSk6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVz
LCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAg
RmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlcywgRmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3Rl
cChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5UZXN0MjYy
VGVzdHMoKSkKLQotCi1jbGFzcyBUZXN0SlNGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRp
b25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSk6Ci0gICAgICAgIEZhY3Rvcnku
X19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXMsIEZh
bHNlLCBhZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWwpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChEb3dubG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoRXh0cmFj
dEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVU
ZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuVGVzdDI2MlRlc3RzKCkpCi0KLQotY2xh
c3MgVGVzdFdlYkRyaXZlckZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1l
bnRzPU5vbmUsIGRldmljZV9tb2RlbD1Ob25lKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgRmFsc2UsIGFkZGl0
aW9uYWxBcmd1bWVudHMsIGRldmljZV9tb2RlbCkKLSAgICAgICAgc2VsZi5hZGRTdGVwKERvd25s
b2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0QnVpbHRQcm9k
dWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5XZWJEcml2ZXJUZXN0cygpKQotCi0KLWNs
YXNzIFRlc3RXZWJLaXQxRmFjdG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNz
ID0gUnVuV2ViS2l0MVRlc3RzCi0KLQotY2xhc3MgVGVzdFdlYktpdDFBbGxCdXRKU0NGYWN0b3J5
KFRlc3RXZWJLaXQxRmFjdG9yeSk6Ci0gICAgSlNDVGVzdENsYXNzID0gTm9uZQotCi0KLWNsYXNz
IEJ1aWxkQW5kUGVyZlRlc3RGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5
Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzLCBG
YWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAqKmt3YXJncykKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1
bkFuZFVwbG9hZFBlcmZUZXN0cygpKQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAiZ3RrIjoKLSAg
ICAgICAgICAgIHNlbGYuYWRkU3RlcChSdW5CZW5jaG1hcmtUZXN0cyh0aW1lb3V0PTIwMDApKQot
Ci0KLWNsYXNzIERvd25sb2FkQW5kUGVyZlRlc3RGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcywgYWRk
aXRpb25hbEFyZ3VtZW50cz1Ob25lLCBkZXZpY2VfbW9kZWw9Tm9uZSwgKiprd2FyZ3MpOgotICAg
ICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9uLCBhcmNo
aXRlY3R1cmVzLCBGYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cywgZGV2aWNlX21vZGVsLCAqKmt3
YXJncykKLSAgICAgICAgc2VsZi5hZGRTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAg
ICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChSdW5BbmRVcGxvYWRQZXJmVGVzdHMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gImd0
ayI6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuQmVuY2htYXJrVGVzdHModGltZW91dD0y
MDAwKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL2h0ZGlnZXN0cGFyc2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2h0ZGlnZXN0cGFyc2VyLnB5CShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9odGRpZ2VzdHBhcnNlci5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDU0ICswLDAgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiaHRkaWdlc3RwYXJzZXIgLSBh
IHBhcnNlciBmb3IgaHRkaWdlc3QgZmlsZXMiIiIKLQotaW1wb3J0IGhhc2hsaWIKLWltcG9ydCBz
dHJpbmcKLQotCi1jbGFzcyBIVERpZ2VzdFBhcnNlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBkaWdlc3RfZmlsZSk6Ci0gICAgICAgIHNlbGYuX2VudHJpZXMgPSBzZWxmLnBhcnNl
X2ZpbGUoZGlnZXN0X2ZpbGUpCi0KLSAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYsIHVzZXJuYW1l
LCByZWFsbSwgcGFzc3dvcmQpOgotICAgICAgICBoYXNoZWRfcGFzc3dvcmQgPSBoYXNobGliLm1k
NSgnOicuam9pbigodXNlcm5hbWUsIHJlYWxtLCBwYXNzd29yZCkpKS5oZXhkaWdlc3QoKQotICAg
ICAgICByZXR1cm4gW3VzZXJuYW1lLCByZWFsbSwgaGFzaGVkX3Bhc3N3b3JkXSBpbiBzZWxmLmVu
dHJpZXMoKQotCi0gICAgZGVmIGVudHJpZXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9l
bnRyaWVzCi0KLSAgICBkZWYgcGFyc2VfZmlsZShzZWxmLCBkaWdlc3RfZmlsZSk6Ci0gICAgICAg
IGVudHJpZXMgPSBbbGluZS5yc3RyaXAoKS5zcGxpdCgnOicpIGZvciBsaW5lIGluIGRpZ2VzdF9m
aWxlXQotCi0gICAgICAgICMgUGVyZm9ybSBzb21lIHNhbml0eS1jaGVja2luZyB0byBlbnN1cmUg
dGhlIGZpbGUgaXMgdmFsaWQuCi0gICAgICAgIHZhbGlkX2NoYXJhY3RlcnMgPSBzZXQoc3RyaW5n
LmhleGRpZ2l0cykKLSAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6Ci0gICAgICAgICAgICBp
ZiBsZW4oZW50cnkpICE9IDM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgICAg
ICBoYXNoZWRfcGFzc3dvcmQgPSBlbnRyeVstMV0KLSAgICAgICAgICAgIGlmIGxlbihoYXNoZWRf
cGFzc3dvcmQpICE9IDMyOgotICAgICAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICAgICAg
aWYgbm90IHNldChoYXNoZWRfcGFzc3dvcmQpLmlzc3Vic2V0KHZhbGlkX2NoYXJhY3RlcnMpOgot
ICAgICAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIHJldHVybiBlbnRyaWVzCkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2Vz
dHBhcnNlcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9odGRpZ2VzdHBhcnNlcl91bml0dGVzdC5weQkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvaHRkaWdlc3RwYXJzZXJfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5
NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
aW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLQotaWYgc3lzLnZlcnNpb25f
aW5mbyA+ICgzLCAwKToKLSAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotZWxzZToKLSAgICBm
cm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotCi1mcm9tIGh0ZGlnZXN0cGFyc2VyIGltcG9y
dCBIVERpZ2VzdFBhcnNlcgotCi0KLWNsYXNzIEhURGlnZXN0UGFyc2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEVudHJpZXNFcXVhbChzZWxmLCBlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9Tm9uZSk6Ci0gICAgICAgIGRpZ2VzdF9maWxlID0gc2VsZi5mYWtlX2h0
ZGlnZXN0X2ZpbGUoKQotICAgICAgICBpZiBhZGRpdGlvbmFsX2NvbnRlbnQgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBkaWdlc3RfZmlsZS5zZWVrKHBvcz0wLCBtb2RlPW9zLlNFRUtfRU5EKQot
ICAgICAgICAgICAgZGlnZXN0X2ZpbGUud3JpdGUoYWRkaXRpb25hbF9jb250ZW50KQotICAgICAg
ICAgICAgZGlnZXN0X2ZpbGUuc2Vlayhwb3M9MCwgbW9kZT1vcy5TRUVLX1NFVCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChlbnRyaWVzLCBIVERpZ2VzdFBhcnNlcihkaWdlc3RfZmlsZSkuZW50
cmllcygpKQotCi0gICAgZGVmIHRlc3RfYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICBodGRp
Z2VzdCA9IEhURGlnZXN0UGFyc2VyKHNlbGYuZmFrZV9odGRpZ2VzdF9maWxlKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtIDEn
LCAncGFzc3dvcmQxJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50
aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQyJykpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIzJywgJ3JlYWxtIDEnLCAncGFzc3dv
cmQzJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3Vz
ZXIzJywgJ3JlYWxtIDMnLCAncGFzc3dvcmQzJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShodGRpZ2VzdC5hdXRoZW50aWNhdGUoJ3VzZXIxJywgJ3JlYWxtJywgJ3Bhc3N3b3JkMScpKQot
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhlbnRpY2F0ZSgndXNlcjEnLCAn
cmVhbG0gMicsICdwYXNzd29yZDEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShodGRpZ2Vz
dC5hdXRoZW50aWNhdGUoJ3VzZXIyJywgJ3JlYWxtIDInLCAncGFzc3dvcmQxJykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RmFsc2UoaHRkaWdlc3QuYXV0aGVudGljYXRlKCd1c2VyMicsICdyZWFsbSAx
JywgJ3Bhc3N3b3JkMScpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGh0ZGlnZXN0LmF1dGhl
bnRpY2F0ZSgnJywgJycsICcnKSkKLQotICAgIGRlZiB0ZXN0X2VudHJpZXMoc2VsZik6Ci0gICAg
ICAgIGVudHJpZXMgPSBbCi0gICAgICAgICAgICBbJ3VzZXIxJywgJ3JlYWxtIDEnLCAnMzZiOGFh
MjdmYTVlOTA1MTA5NWQzN2I2MTlmOTI3NjInXSwKLSAgICAgICAgICAgIFsndXNlcjInLCAncmVh
bG0gMicsICcxNGY4Mjc2ODZmYTk3Nzc4ZjAyZmUxMzE0YTMzMzdjOCddLAotICAgICAgICAgICAg
Wyd1c2VyMycsICdyZWFsbSAxJywgJzE4MTdmYzhhMjQxMTljYzU3ZmJhZmM4YTYzMGVhNWE1J10s
Ci0gICAgICAgICAgICBbJ3VzZXIzJywgJ3JlYWxtIDMnLCAnYTA1ZjVhMjMzNWU5ZDg3YmJlNzVi
YmU1ZTUzMjQ4ZjAnXSwKLSAgICAgICAgXQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChlbnRyaWVzKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVhbChlbnRyaWVzLCBhZGRp
dGlvbmFsX2NvbnRlbnQ9JycpCi0KLSAgICBkZWYgdGVzdF9lbXB0eV9maWxlKHNlbGYpOgotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBIVERpZ2VzdFBhcnNlcihTdHJpbmdJTygpKS5lbnRy
aWVzKCkpCi0KLSAgICBkZWYgdGVzdF90b29fZmV3X2NvbG9ucyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVhbG0g
MVxuJykKLQotICAgIGRlZiB0ZXN0X3Rvb19tYW55X2NvbG9ucyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFbnRyaWVzRXF1YWwoW10sIGFkZGl0aW9uYWxfY29udGVudD0ndXNlcjE6cmVhbG0g
MTozNmI4YWEyN2ZhNWU5MDUxMDk1ZDM3YjYxOWY5Mjc2MjpnYXJiYWdlXG4nKQotCi0gICAgZGVm
IHRlc3RfaW52YWxpZF9oYXNoKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkwNTEw
OTVkMzdiNjE5ZjkyNzYyMDAwMDAwXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVudHJpZXNFcXVh
bChbXSwgYWRkaXRpb25hbF9jb250ZW50PSd1c2VyMTpyZWFsbSAxOjM2YjhhYTI3ZmE1ZTkwNTEw
OTVkMzdiNjE5ZjkyNzZcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBh
ZGRpdGlvbmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2
MTlmOTI3NnpcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW50cmllc0VxdWFsKFtdLCBhZGRpdGlv
bmFsX2NvbnRlbnQ9J3VzZXIxOnJlYWxtIDE6IDM2YjhhYTI3ZmE1ZTkwNTEwOTVkMzdiNjE5Zjky
NzYyXG4nKQotCi0gICAgZGVmIGZha2VfaHRkaWdlc3RfZmlsZShzZWxmKToKLSAgICAgICAgcmV0
dXJuIFN0cmluZ0lPKCIiInVzZXIxOnJlYWxtIDE6MzZiOGFhMjdmYTVlOTA1MTA5NWQzN2I2MTlm
OTI3NjIKLXVzZXIyOnJlYWxtIDI6MTRmODI3Njg2ZmE5Nzc3OGYwMmZlMTMxNGEzMzM3YzgKLXVz
ZXIzOnJlYWxtIDE6MTgxN2ZjOGEyNDExOWNjNTdmYmFmYzhhNjMwZWE1YTUKLXVzZXIzOnJlYWxt
IDM6YTA1ZjVhMjMzNWU5ZDg3YmJlNzViYmU1ZTUzMjQ4ZjAKLSIiIikKLQotCi0jIEZJWE1FOiBX
ZSBzaG91bGQgcnVuIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtcm0gLgotIyBVbmZvcnR1bmF0
ZWx5IHRlc3Qtcm0gIGN1cnJlbnRseSByZXF1aXJlcyB0aGF0IHVuaXR0ZXN0cwotIyBiZSBsb2Nh
dGVkIGluIGEgZGlyZWN0b3J5IHdpdGggYSB2YWxpZCBtb2R1bGUgbmFtZS4KLSMgJ2J1aWxkLndl
YmtpdC5vcmctY29uZmlnJyBpcyBub3QgYSB2YWxpZCBtb2R1bGUgbmFtZSAoZHVlIHRvICcuJyBh
bmQgJy0nKQotIyBzbyBmb3Igbm93IHRoaXMgaXMgYSBzdGFuZC1hbG9uZSB0ZXN0IGhhcm5lc3Mu
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbG9hZENvbmZp
Zy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9sb2FkQ29uZmlnLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9sb2FkQ29uZmlnLnB5CShub25l
eGlzdGVudCkKQEAgLTEsMTk0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
Ci0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MKLVVTRV9CVUlMREJPVF9WRVJTSU9OMiA9IG9zLmdl
dGVudignVVNFX0JVSUxEQk9UX1ZFUlNJT04yJykgaXMgbm90IE5vbmUKLQotaWYgVVNFX0JVSUxE
Qk9UX1ZFUlNJT04yOgotICAgIGZyb20gYnVpbGRib3Qud29ya2VyIGltcG9ydCBXb3JrZXIKLWVs
c2U6Ci0gICAgZnJvbSBidWlsZGJvdC5idWlsZHNsYXZlIGltcG9ydCBCdWlsZFNsYXZlCi1mcm9t
IGJ1aWxkYm90LnNjaGVkdWxlciBpbXBvcnQgQW55QnJhbmNoU2NoZWR1bGVyLCBUcmlnZ2VyYWJs
ZSwgTmlnaHRseQotZnJvbSBidWlsZGJvdC5zY2hlZHVsZXJzLmZvcmNlc2NoZWQgaW1wb3J0IEZp
eGVkUGFyYW1ldGVyLCBGb3JjZVNjaGVkdWxlciwgU3RyaW5nUGFyYW1ldGVyLCBCb29sZWFuUGFy
YW1ldGVyCi1mcm9tIGJ1aWxkYm90LnNjaGVkdWxlcnMuZmlsdGVyIGltcG9ydCBDaGFuZ2VGaWx0
ZXIKLWZyb20gYnVpbGRib3QucHJvY2VzcyBpbXBvcnQgYnVpbGRzdGVwLCBmYWN0b3J5LCBwcm9w
ZXJ0aWVzCi0KLWZyb20gZmFjdG9yaWVzIGltcG9ydCAqCi0KLWltcG9ydCByZQotaW1wb3J0IGpz
b24KLWltcG9ydCBvcGVyYXRvcgotCi1mcm9tIGNvbW1pdHRlcl9hdXRoIGltcG9ydCBDb21taXR0
ZXJBdXRoCi1pbXBvcnQgbWFrZV9wYXNzd29yZHNfanNvbgotaW1wb3J0IHdrYnVpbGQKLQotdHJ1
bmtfZmlsdGVyID0gQ2hhbmdlRmlsdGVyKGJyYW5jaD1bInRydW5rIiwgTm9uZV0pCi1idWlsZGJv
dF9pZGVudGlmaWVyc19yZSA9IHJlLmNvbXBpbGUoJ15bYS16QS1aXy1dW2EtekEtWjAtOV8tXSok
JykKLQotQlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVCA9IDcwCi1TVEVQX05BTUVfTEVOR1RIX0xJ
TUlUID0gNTAKLQotCi1kZWYgcGlja0xhdGVzdEJ1aWxkKGJ1aWxkZXIsIHJlcXVlc3RzKToKLSAg
ICByZXR1cm4gbWF4KHJlcXVlc3RzLCBrZXk9b3BlcmF0b3IuYXR0cmdldHRlcigic3VibWl0dGVk
QXQiKSkKLQotCi1kZWYgbG9hZEJ1aWxkZXJDb25maWcoYywgaXNfdGVzdF9tb2RlX2VuYWJsZWQ9
RmFsc2UpOgotICAgICMgRklYTUU6IFRoZXNlIGZpbGUgaGFuZGxlcyBhcmUgbGVha2VkLgotICAg
IGlmIGlzX3Rlc3RfbW9kZV9lbmFibGVkOgotICAgICAgICBwYXNzd29yZHMgPSB7fQotICAgIGVs
c2U6Ci0gICAgICAgIHBhc3N3b3JkcyA9IGpzb24ubG9hZChvcGVuKCdwYXNzd29yZHMuanNvbicp
KQotICAgIHJlc3VsdHNfc2VydmVyX2FwaV9rZXkgPSBwYXNzd29yZHMuZ2V0KCdyZXN1bHRzLXNl
cnZlci1hcGkta2V5JykKLSAgICBpZiByZXN1bHRzX3NlcnZlcl9hcGlfa2V5OgotICAgICAgICBv
cy5lbnZpcm9uWydSRVNVTFRTX1NFUlZFUl9BUElfS0VZJ10gPSByZXN1bHRzX3NlcnZlcl9hcGlf
a2V5Ci0KLSAgICBjb25maWcgPSBqc29uLmxvYWQob3BlbignY29uZmlnLmpzb24nKSkKLSAgICBp
ZiBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgIGNbJ3dvcmtlcnMnXSA9IFtXb3JrZXIo
d29ya2VyWyduYW1lJ10sIHBhc3N3b3Jkcy5nZXQod29ya2VyWyduYW1lJ10sICdwYXNzd29yZCcp
LCBtYXhfYnVpbGRzPTEpIGZvciB3b3JrZXIgaW4gY29uZmlnWyd3b3JrZXJzJ11dCi0gICAgZWxz
ZToKLSAgICAgICAgY1snc2xhdmVzJ10gPSBbQnVpbGRTbGF2ZSh3b3JrZXJbJ25hbWUnXSwgcGFz
c3dvcmRzLmdldCh3b3JrZXJbJ25hbWUnXSwgJ3Bhc3N3b3JkJyksIG1heF9idWlsZHM9MSkgZm9y
IHdvcmtlciBpbiBjb25maWdbJ3dvcmtlcnMnXV0KLQotICAgIGNbJ3NjaGVkdWxlcnMnXSA9IFtd
Ci0gICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWdbJ3NjaGVkdWxlcnMnXToKLSAgICAgICAgaWYg
ImNoYW5nZV9maWx0ZXIiIGluIHNjaGVkdWxlcjoKLSAgICAgICAgICAgIHNjaGVkdWxlclsiY2hh
bmdlX2ZpbHRlciJdID0gZ2xvYmFscygpW3NjaGVkdWxlclsiY2hhbmdlX2ZpbHRlciJdXQotICAg
ICAgICBzY2hlZHVsZXJUeXBlID0gZ2xvYmFscygpW3NjaGVkdWxlci5wb3AoJ3R5cGUnKV0KLSAg
ICAgICAgIyBQeXRob24gMi42IGNhbid0IGhhbmRsZSB1bmljb2RlIGtleXMgYXMga2V5d29yZCBh
cmd1bWVudHM6Ci0gICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2NDYuICBN
b2Rlcm4gdmVyc2lvbnMgb2YganNvbiByZXR1cm4KLSAgICAgICAgIyB1bmljb2RlIHN0cmluZ3Mg
ZnJvbSBqc29uLmxvYWQsIHNvIHdlIG1hcCBhbGwga2V5cyB0byBzdHIgb2JqZWN0cy4KLSAgICAg
ICAgc2NoZWR1bGVyID0gZGljdChtYXAobGFtYmRhIGtleV92YWx1ZV9wYWlyOiAoc3RyKGtleV92
YWx1ZV9wYWlyWzBdKSwga2V5X3ZhbHVlX3BhaXJbMV0pLCBzY2hlZHVsZXIuaXRlbXMoKSkpCi0K
LSAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChzY2hlZHVsZXJUeXBlKCoqc2NoZWR1bGVy
KSkKLQotICAgIGZvcmNlU2NoZWR1bGVyID0gRm9yY2VTY2hlZHVsZXIoCi0gICAgICAgIG5hbWU9
ImZvcmNlIiwKLSAgICAgICAgYnVpbGRlck5hbWVzPVtzdHIoYnVpbGRlclsnbmFtZSddKSBmb3Ig
YnVpbGRlciBpbiBjb25maWdbJ2J1aWxkZXJzJ11dLAotICAgICAgICByZWFzb249U3RyaW5nUGFy
YW1ldGVyKG5hbWU9InJlYXNvbiIsIGRlZmF1bHQ9IiIsIHNpemU9NDApLAotCi0gICAgICAgICMg
VmFsaWRhdGUgU1ZOIHJldmlzaW9uOiBudW1iZXIgb3IgZW1wdHkgc3RyaW5nCi0gICAgICAgIHJl
dmlzaW9uPVN0cmluZ1BhcmFtZXRlcihuYW1lPSJyZXZpc2lvbiIsIGRlZmF1bHQ9IiIsIHJlZ2V4
PXJlLmNvbXBpbGUocideKFxkKikkJykpLAotCi0gICAgICAgICMgRGlzYWJsZSBkZWZhdWx0IGVu
YWJsZWQgaW5wdXQgZmllbGRzOiBicmFuY2gsIHJlcG9zaXRvcnksIHByb2plY3QsIGFkZGl0aW9u
YWwgcHJvcGVydGllcwotICAgICAgICBicmFuY2g9Rml4ZWRQYXJhbWV0ZXIobmFtZT0iYnJhbmNo
IiksCi0gICAgICAgIHJlcG9zaXRvcnk9Rml4ZWRQYXJhbWV0ZXIobmFtZT0icmVwb3NpdG9yeSIp
LAotICAgICAgICBwcm9qZWN0PUZpeGVkUGFyYW1ldGVyKG5hbWU9InByb2plY3QiKSwKLSAgICAg
ICAgcHJvcGVydGllcz1bQm9vbGVhblBhcmFtZXRlcihuYW1lPSJpc19jbGVhbiIsIGxhYmVsPSJG
b3JjZSBDbGVhbiBidWlsZCIpXQotICAgICkKLSAgICBjWydzY2hlZHVsZXJzJ10uYXBwZW5kKGZv
cmNlU2NoZWR1bGVyKQotCi0gICAgY1snYnVpbGRlcnMnXSA9IFtdCi0gICAgZm9yIGJ1aWxkZXIg
aW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAgICBmb3Igd29ya2VyTmFtZSBpbiBidWlsZGVy
Wyd3b3JrZXJuYW1lcyddOgotICAgICAgICAgICAgZm9yIHdvcmtlciBpbiBjb25maWdbJ3dvcmtl
cnMnXToKLSAgICAgICAgICAgICAgICBpZiB3b3JrZXJbJ25hbWUnXSAhPSB3b3JrZXJOYW1lIG9y
IHdvcmtlclsncGxhdGZvcm0nXSA9PSAnKic6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0KLSAgICAgICAgICAgICAgICBpZiB3b3JrZXJbJ3BsYXRmb3JtJ10gIT0gYnVpbGRlclsncGxh
dGZvcm0nXToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdCdWlsZGVyIHt9
IGlzIGZvciBwbGF0Zm9ybSB7fSBidXQgaGFzIHdvcmtlciB7fSBmb3IgcGxhdGZvcm0ge30hJy5m
b3JtYXQoYnVpbGRlclsnbmFtZSddLCBidWlsZGVyWydwbGF0Zm9ybSddLCB3b3JrZXJbJ25hbWUn
XSwgd29ya2VyWydwbGF0Zm9ybSddKSkKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAg
IGlmIG5vdCBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgICAgICBidWlsZGVyWydzbGF2
ZW5hbWVzJ10gPSBidWlsZGVyLnBvcCgnd29ya2VybmFtZXMnKQotICAgICAgICBwbGF0Zm9ybSA9
IGJ1aWxkZXJbJ3BsYXRmb3JtJ10KLQotICAgICAgICBmYWN0b3J5TmFtZSA9IGJ1aWxkZXIucG9w
KCdmYWN0b3J5JykKLSAgICAgICAgZmFjdG9yeSA9IGdsb2JhbHMoKVtmYWN0b3J5TmFtZV0KLSAg
ICAgICAgZmFjdG9yeWt3YXJncyA9IHt9Ci0gICAgICAgIGZvciBrZXkgaW4gInBsYXRmb3JtIiwg
ImNvbmZpZ3VyYXRpb24iLCAiYXJjaGl0ZWN0dXJlcyIsICJ0cmlnZ2VycyIsICJhZGRpdGlvbmFs
QXJndW1lbnRzIiwgImRldmljZV9tb2RlbCI6Ci0gICAgICAgICAgICB2YWx1ZSA9IGJ1aWxkZXIu
cG9wKGtleSwgTm9uZSkKLSAgICAgICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgICAgIGZh
Y3Rvcnlrd2FyZ3Nba2V5XSA9IHZhbHVlCi0KLSAgICAgICAgYnVpbGRlclsiZmFjdG9yeSJdID0g
ZmFjdG9yeSgqKmZhY3Rvcnlrd2FyZ3MpCi0KLSAgICAgICAgYnVpbGRlcl9uYW1lID0gYnVpbGRl
clsnbmFtZSddCi0gICAgICAgIGlmIGxlbihidWlsZGVyX25hbWUpID4gQlVJTERFUl9OQU1FX0xF
TkdUSF9MSU1JVDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBuYW1lICJ7
fSIgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGJ5IEJ1aWxkYm90ICh7fSBjaGFyYWN0
ZXJzKS4nLmZvcm1hdChidWlsZGVyX25hbWUsIEJVSUxERVJfTkFNRV9MRU5HVEhfTElNSVQpKQot
ICAgICAgICBpZiBub3QgYnVpbGRib3RfaWRlbnRpZmllcnNfcmUubWF0Y2goYnVpbGRlcl9uYW1l
KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBuYW1lICJ7fSIgaXMgbm90
IGEgdmFsaWQgYnVpbGRib3QgaWRlbnRpZmllci4nLmZvcm1hdChidWlsZGVyX25hbWUpKQotICAg
ICAgICBmb3Igc3RlcCBpbiBidWlsZGVyWyJmYWN0b3J5Il0uc3RlcHM6Ci0gICAgICAgICAgICBp
ZiBVU0VfQlVJTERCT1RfVkVSU0lPTjI6Ci0gICAgICAgICAgICAgICAgc3RlcF9uYW1lID0gc3Rl
cC5idWlsZFN0ZXAoKS5uYW1lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0
ZXBfbmFtZSA9IHN0ZXBbMF0ubmFtZQotICAgICAgICAgICAgaWYgbGVuKHN0ZXBfbmFtZSkgPiBT
VEVQX05BTUVfTEVOR1RIX0xJTUlUOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
c3RlcCBuYW1lICJ7fSIgaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGJ5IEJ1aWxkYm90
ICh7fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChzdGVwX25hbWUsIFNURVBfTkFNRV9MRU5HVEhfTElN
SVQpKQotICAgICAgICAgICAgaWYgbm90IGJ1aWxkYm90X2lkZW50aWZpZXJzX3JlLm1hdGNoKHN0
ZXBfbmFtZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdzdGVwIG5hbWUgInt9
IiBpcyBub3QgYSB2YWxpZCBidWlsZGJvdCBpZGVudGlmaWVyLicuZm9ybWF0KHN0ZXBfbmFtZSkp
Ci0KLSAgICAgICAgaWYgcGxhdGZvcm0uc3RhcnRzd2l0aCgnbWFjJyk6Ci0gICAgICAgICAgICBj
YXRlZ29yeSA9ICdBcHBsZU1hYycKLSAgICAgICAgZWxpZiBwbGF0Zm9ybS5zdGFydHN3aXRoKCdp
b3MnKToKLSAgICAgICAgICAgIGNhdGVnb3J5ID0gJ2lPUycKLSAgICAgICAgZWxpZiBwbGF0Zm9y
bSA9PSAnd2luJzoKLSAgICAgICAgICAgIGNhdGVnb3J5ID0gJ0FwcGxlV2luJwotICAgICAgICBl
bGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2d0aycpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAn
R1RLJwotICAgICAgICBlbGlmIHBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dwZScpOgotICAgICAgICAg
ICAgY2F0ZWdvcnkgPSAnV1BFJwotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICd3aW5jYWlybyc6
Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdXaW5DYWlybycKLSAgICAgICAgZWxpZiBwbGF0Zm9y
bS5zdGFydHN3aXRoKCdwbGF5c3RhdGlvbicpOgotICAgICAgICAgICAgY2F0ZWdvcnkgPSAnUGxh
eVN0YXRpb24nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjYXRlZ29yeSA9ICdtaXNjJwot
Ci0gICAgICAgIGlmIChjYXRlZ29yeSBpbiAoJ0FwcGxlTWFjJywgJ0FwcGxlV2luJywgJ2lPUycp
KSBhbmQgZmFjdG9yeU5hbWUgIT0gJ0J1aWxkRmFjdG9yeSc6Ci0gICAgICAgICAgICBidWlsZGVy
WyduZXh0QnVpbGQnXSA9IHBpY2tMYXRlc3RCdWlsZAotCi0gICAgICAgIGlmIFVTRV9CVUlMREJP
VF9WRVJTSU9OMjoKLSAgICAgICAgICAgIGJ1aWxkZXJbJ3RhZ3MnXSA9IGdldFRhZ3NGb3JCdWls
ZGVyKGJ1aWxkZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBidWlsZGVyWydjYXRlZ29y
eSddID0gY2F0ZWdvcnkKLSAgICAgICAgY1snYnVpbGRlcnMnXS5hcHBlbmQoYnVpbGRlcikKLQot
Ci1jbGFzcyBQbGF0Zm9ybVNwZWNpZmljU2NoZWR1bGVyKEFueUJyYW5jaFNjaGVkdWxlcik6Ci0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBicmFuY2gsICoqa3dhcmdzKToKLSAgICAg
ICAgc2VsZi5wbGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIGZpbHRlciA9IENoYW5nZUZpbHRl
cihicmFuY2g9W2JyYW5jaCwgTm9uZV0sIGZpbHRlcl9mbj1zZWxmLmZpbHRlcikKLSAgICAgICAg
QW55QnJhbmNoU2NoZWR1bGVyLl9faW5pdF9fKHNlbGYsIG5hbWU9cGxhdGZvcm0sIGNoYW5nZV9m
aWx0ZXI9ZmlsdGVyLCAqKmt3YXJncykKLQotICAgIGRlZiBmaWx0ZXIoc2VsZiwgY2hhbmdlKToK
LSAgICAgICAgcmV0dXJuIHdrYnVpbGQuc2hvdWxkX2J1aWxkKHNlbGYucGxhdGZvcm0sIGNoYW5n
ZS5maWxlcykKLQotCi1kZWYgZ2V0SW52YWxpZFRhZ3MoKToKLSAgICAiIiIKLSAgICBXZSBtYWlu
dGFpbiBhIGxpc3Qgb2Ygd29yZHMgd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gZGlzcGxheSBhcyB0
YWcgaW4gYnVpbGRib3QuCi0gICAgV2UgZ2VuZXJhdGUgYSBsaXN0IG9mIHRhZ3MgYnkgc3BsaXR0
aW5nIHRoZSBidWlsZGVyIG5hbWUuIFdlIGRvIG5vdCB3YW50IGNlcnRhaW4gd29yZHMgYXMgdGFn
LgotICAgIEZvciBlLmcuIHdlIGRvbid0IHdhbnQgJzExJ2FzIHRhZyBmb3IgYnVpbGRlciBpT1Mt
MTEtU2ltdWxhdG9yLUVXUwotICAgICIiIgotICAgIGludmFsaWRfdGFncyA9IFtzdHIoaSkgZm9y
IGkgaW4gcmFuZ2UoMCwgMjApXQotICAgIGludmFsaWRfdGFncy5leHRlbmQoWydFV1MnLCAnVHJ5
Qm90J10pCi0gICAgcmV0dXJuIGludmFsaWRfdGFncwotCi0KLWRlZiBnZXRWYWxpZFRhZ3ModGFn
cyk6Ci0gICAgcmV0dXJuIGxpc3Qoc2V0KHRhZ3MpIC0gc2V0KGdldEludmFsaWRUYWdzKCkpKQot
Ci0KLWRlZiBnZXRUYWdzRm9yQnVpbGRlcihidWlsZGVyKToKLSAgICBrZXl3b3JkcyA9IGZpbHRl
cihOb25lLCByZS5zcGxpdCgnWywgXC1fOigpXSsnLCBzdHIoYnVpbGRlclsnbmFtZSddKSkpCi0g
ICAgcmV0dXJuIGdldFZhbGlkVGFncyhrZXl3b3JkcykKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL2xvYWRDb25maWdfdW5pdHRlc3QucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvbG9hZENvbmZpZ191bml0dGVzdC5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbG9hZENvbmZpZ191bml0dGVz
dC5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAot
IyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQg
anNvbgotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IGxvYWRDb25maWcKLQot
Ci1jbGFzcyBDb25maWdEb3RKU09OVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGdl
dF9jb25maWcoc2VsZik6Ci0gICAgICAgIGN3ZCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pKQotICAgICAgICByZXR1cm4ganNvbi5sb2FkKG9wZW4ob3MucGF0aC5q
b2luKGN3ZCwgJ2NvbmZpZy5qc29uJykpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl9rZXlzKHNl
bGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICB2YWxpZF9i
dWlsZGVyX2tleXMgPSBbJ2FkZGl0aW9uYWxBcmd1bWVudHMnLCAnYXJjaGl0ZWN0dXJlcycsICdi
dWlsZGRpcicsICdjb25maWd1cmF0aW9uJywgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdkZWZhdWx0UHJvcGVydGllcycsICdkZXZpY2VfbW9kZWwnLCAnZW52
JywgJ2ZhY3RvcnknLCAnaWNvbicsICdsb2NrcycsICduYW1lJywgJ3BsYXRmb3JtJywgJ3Byb3Bl
cnRpZXMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW90ZXMnLCAncnVuVGVz
dHMnLCAnc2hvcnRuYW1lJywgJ3RhZ3MnLCAndHJpZ2dlcnMnLCAnd29ya2VybmFtZXMnLCAnd29y
a2VyYnVpbGRkaXInXQotICAgICAgICBmb3IgYnVpbGRlciBpbiBjb25maWcuZ2V0KCdidWlsZGVy
cycsIFtdKToKLSAgICAgICAgICAgIGZvciBrZXkgaW4gYnVpbGRlcjoKLSAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUoa2V5IGluIHZhbGlkX2J1aWxkZXJfa2V5cywgJ1VuZXhwZWN0ZWQg
a2V5ICJ7fSIgZm9yIGJ1aWxkZXIge30nLmZvcm1hdChrZXksIGJ1aWxkZXIuZ2V0KCduYW1lJykp
KQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfc2NoZWR1ZXJzX2Zvcl9idWlsZGVyKHNlbGYpOgot
ICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICBidWlsZGVyX3RvX3Nj
aGR1bGVyX21hcCA9IHt9Ci0KLSAgICAgICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcuZ2V0KCdz
Y2hlZHVsZXJzJyk6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlcm5hbWUgaW4gc2NoZWR1bGVyLmdl
dCgnYnVpbGRlck5hbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxk
ZXJuYW1lIG5vdCBpbiBidWlsZGVyX3RvX3NjaGR1bGVyX21hcCwgJ2J1aWxkZXIge30gYXBwZWFy
cyBtdWx0aXBsZSB0aW1lcyBpbiBzY2hlZHVsZXJzLicuZm9ybWF0KGJ1aWxkZXJuYW1lKSkKLSAg
ICAgICAgICAgICAgICBidWlsZGVyX3RvX3NjaGR1bGVyX21hcFtidWlsZGVybmFtZV0gPSBzY2hl
ZHVsZXIuZ2V0KCduYW1lJykKLQotICAgIGRlZiB0ZXN0X3NjaGR1bGVyX2NvbnRhaW5zX3ZhbGlk
X2J1aWxkZXJfbmFtZShzZWxmKToKLSAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkK
LSAgICAgICAgYnVpbGRlcl9uYW1lX2xpc3QgPSBbYnVpbGRlclsnbmFtZSddIGZvciBidWlsZGVy
IGluIGNvbmZpZ1snYnVpbGRlcnMnXV0KLSAgICAgICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcu
Z2V0KCdzY2hlZHVsZXJzJyk6Ci0gICAgICAgICAgICBmb3IgYnVpbGRlcm5hbWUgaW4gc2NoZWR1
bGVyLmdldCgnYnVpbGRlck5hbWVzJyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KGJ1aWxkZXJuYW1lIGluIGJ1aWxkZXJfbmFtZV9saXN0LCAnYnVpbGRlciAie30iIGluIHNjaGVk
dWxlciAie30iIGlzIGludmFsaWQuJy5mb3JtYXQoYnVpbGRlcm5hbWUsIHNjaGVkdWxlci5nZXQo
J25hbWUnKSkpCi0KLSAgICBkZWYgdGVzdF9zaW5nbGVfYnVpbGRlcl9mb3JfdHJpZ2dlcmFibGVf
c2NoZWR1bGVyKHNlbGYpOgotICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAg
ICAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZ1snc2NoZWR1bGVycyddOgotICAgICAgICAgICAg
aWYgc2NoZWR1bGVyLmdldCgndHlwZScpID09ICdUcmlnZ2VyYWJsZSc6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKGxlbihzY2hlZHVsZXIuZ2V0KCdidWlsZGVyTmFtZXMnKSkgPT0g
MSwgJ3NjaGVkdWxlciAie30iIHRyaWdnZXJzIG11bHRpcGxlIGJ1aWxkZXJzLicuZm9ybWF0KHNj
aGVkdWxlclsnbmFtZSddKSkKLQotCi1jbGFzcyBUYWdzRm9yQnVpbGRlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiB2ZXJpZnlUYWdzKHNlbGYsIGJ1aWxkZXJOYW1lLCBleHBlY3Rl
ZFRhZ3MpOgotICAgICAgICB0YWdzID0gbG9hZENvbmZpZy5nZXRUYWdzRm9yQnVpbGRlcih7J25h
bWUnOiBidWlsZGVyTmFtZX0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHRhZ3Mp
LCBzb3J0ZWQoZXhwZWN0ZWRUYWdzKSkKLQotICAgIGRlZiB0ZXN0X2dldFRhZ3NGb3JCdWlsZGVy
KHNlbGYpOgotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ0VXUycsIFtdKQotICAgICAgICBzZWxm
LnZlcmlmeVRhZ3MoJ1RyeUJvdC0xMC1FV1MnLCBbXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdz
KCcxMS1FV1MnLCBbXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCczMi1FV1MnLCBbJzMyJ10p
Ci0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnaU9TLTExLUVXUycsIFsnaU9TJ10pCi0gICAgICAg
IHNlbGYudmVyaWZ5VGFncygnaU9TKDExKSwodGVzdCktRVdTJywgWydpT1MnLCAndGVzdCddKQot
ICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ1dpbmRvd3MtRVdTJywgWydXaW5kb3dzJ10pCi0gICAg
ICAgIHNlbGYudmVyaWZ5VGFncygnV2luZG93c19XaW5kb3dzJywgWydXaW5kb3dzJ10pCi0gICAg
ICAgIHNlbGYudmVyaWZ5VGFncygnR1RLLUJ1aWxkLUVXUycsIFsnR1RLJywgJ0J1aWxkJ10pCi0g
ICAgICAgIHNlbGYudmVyaWZ5VGFncygnR1RLLVdLMi1UZXN0cy1FV1MnLCBbJ0dUSycsICdXSzIn
LCAnVGVzdHMnXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdtYWNPUy1TaWVycmEtUmVsZWFz
ZS1XSzEtRVdTJywgWydTaWVycmEnLCAnUmVsZWFzZScsICdtYWNPUycsICdXSzEnXSkKLSAgICAg
ICAgc2VsZi52ZXJpZnlUYWdzKCdtYWNPUy1IaWdoLVNpZXJyYS1SZWxlYXNlLTMyYml0LVdLMi1F
V1MnLCBbJ21hY09TJywgJ0hpZ2gnLCAnU2llcnJhJywgJ1JlbGVhc2UnLCAnV0syJywgJzMyYml0
J10pCi0KLSAgICBkZWYgdGVzdF90YWdzX3R5cGUoc2VsZik6Ci0gICAgICAgIHRhZ3MgPSBsb2Fk
Q29uZmlnLmdldFRhZ3NGb3JCdWlsZGVyKHsnbmFtZSc6ICdpT1MtMTEtRVdTJ30pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwodGFncywgWydpT1MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh0eXBlKHRhZ3NbMF0pLCBzdHIpCi0KLSAgICBkZWYgdGVzdF9nZXRJbnZhbGlkVGFncyhzZWxm
KToKLSAgICAgICAgaW52YWxpZFRhZ3MgPSBsb2FkQ29uZmlnLmdldEludmFsaWRUYWdzKCkKLSAg
ICAgICAgZXhwZWN0ZWRUYWdzID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2Jywg
JzcnLCAnOCcsICc5JywgJzEwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICcxMScsICcxMics
ICcxMycsICcxNCcsICcxNScsICcxNicsICcxNycsICcxOCcsICcxOScsICdFV1MnLCAnVHJ5Qm90
J10KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZhbGlkVGFncywgZXhwZWN0ZWRUYWdzKQot
Ci0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYWtlX3Bh
c3N3b3Jkc19qc29uLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL21ha2VfcGFzc3dvcmRzX2pzb24ucHkJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L21ha2VfcGFzc3dvcmRzX2pzb24ucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NCArMCwwIEBACi0j
IS91c3IvYmluL2VudiBweXRob24KLQotIyBDb3B5cmlnaHQgKEMpIDIwMTEtMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxNCBVbml2ZXJzaXR5
IG9mIFN6ZWdlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBqc29uCi1pbXBvcnQgbWQ1
Ci0KLQotZGVmIGNyZWF0ZV9tb2NrX3dvcmtlcl9wYXNzd29yZHNfZGljdCgpOgotICAgIHdpdGgg
b3BlbignY29uZmlnLmpzb24nLCAncicpIGFzIGNvbmZpZ19qc29uOgotICAgICAgICBjb25maWdf
ZGljdCA9IGpzb24ubG9hZChjb25maWdfanNvbikKLSAgICByZXN1bHQgPSBkaWN0KFsod29ya2Vy
WyduYW1lJ10sICcxMjM0JykgZm9yIHdvcmtlciBpbiBjb25maWdfZGljdFsnd29ya2VycyddXSkK
LSAgICByZXN1bHRbJ3Jlc3VsdHMtc2VydmVyLWFwaS1rZXknXSA9ICdhcGkta2V5JwotICAgIHJl
dHVybiByZXN1bHQKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB3aXRoIG9wZW4o
J3Bhc3N3b3Jkcy5qc29uJywgJ3cnKSBhcyBwYXNzd29yZHNfZmlsZToKLSAgICAgICAgcGFzc3dv
cmRzX2ZpbGUud3JpdGUoanNvbi5kdW1wcyhjcmVhdGVfbW9ja193b3JrZXJfcGFzc3dvcmRzX2Rp
Y3QoKSwgaW5kZW50PTQsIHNvcnRfa2V5cz1UcnVlKSkKLQotICAgIHdpdGggb3BlbignYXV0aC5q
c29uJywgJ3cnKSBhcyBhdXRoX2pzb25fZmlsZToKLSAgICAgICAgYXV0aF9qc29uX2ZpbGUud3Jp
dGUoIiIiewotICAgICJ0cmFjX2NyZWRlbnRpYWxzIjogImNyZWRlbnRpYWxzLmNmZyIsCi0gICAg
IndlYmtpdF9jb21taXR0ZXJzIjogImNvbW1pdHRlcnMuY2ZnIgotfSIiIikKLQotICAgIHdpdGgg
b3BlbignY3JlZGVudGlhbHMuY2ZnJywgJ3cnKSBhcyBjcmVkZW50aWFsc19maWxlOgotICAgICAg
ICBjcmVkZW50aWFsc19maWxlLndyaXRlKCJjb21taXR0ZXJAd2Via2l0Lm9yZzpNYWMgT1MgRm9y
Z2U6JXMiICUgbWQ1Lm5ldygiY29tbWl0dGVyQHdlYmtpdC5vcmc6TWFjIE9TIEZvcmdlOmNvbW1p
dHRlcnBhc3N3b3JkIikuaGV4ZGlnZXN0KCkpCi0KLSAgICB3aXRoIG9wZW4oJ2NvbW1pdHRlcnMu
Y2ZnJywgJ3cnKSBhcyBjb21taXR0ZXJzX2ZpbGU6Ci0gICAgICAgIGNvbW1pdHRlcnNfZmlsZS53
cml0ZSgiIiJbZ3JvdXBzXQotd2Via2l0ID0gY29tbWl0dGVyQHdlYmtpdC5vcmcKLSIiIikKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL21ha2VfcGFzc3dvcmRzX2pzb24ucHkKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L21hc3Rlci5jZmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDQ4ICswLDAgQEAKLSMgLSotIHB5dGhvbiAtKi0KLSMgZXg6IHNldCBz
eW50YXg9cHl0aG9uOgotCi1mcm9tIGJ1aWxkYm90LmNoYW5nZXMucGIgaW1wb3J0IFBCQ2hhbmdl
U291cmNlCi1mcm9tIGJ1aWxkYm90LnN0YXR1cyBpbXBvcnQgaHRtbAotZnJvbSBidWlsZGJvdC5z
dGF0dXMud2ViLmF1dGh6IGltcG9ydCBBdXRoegotCi1mcm9tIGNvbW1pdHRlcl9hdXRoIGltcG9y
dCBDb21taXR0ZXJBdXRoCi1mcm9tIGxvYWRDb25maWcgaW1wb3J0ICoKLQotCi1pc190ZXN0X21v
ZGVfZW5hYmxlZCA9IG9zLmdldGVudignQlVJTERCT1RfVEVTVElORycpIGlzIG5vdCBOb25lCi0K
LWMgPSBCdWlsZG1hc3RlckNvbmZpZyA9IHt9Ci0KLWNbJ2NoYW5nZV9zb3VyY2UnXSA9IFBCQ2hh
bmdlU291cmNlKHBvcnQ9MTYwMDApCi0KLSMgcGVybWlzc2lvbnMgZm9yIFdlYlN0YXR1cwotYXV0
aHogPSBBdXRoeigKLSAgICBhdXRoPUNvbW1pdHRlckF1dGgoJ2F1dGguanNvbicpLAotICAgIGZv
cmNlQnVpbGQ9J2F1dGgnLAotICAgIGZvcmNlQWxsQnVpbGRzPSdhdXRoJywKLSAgICBwaW5nQnVp
bGRlcj1UcnVlLAotICAgIGdyYWNlZnVsU2h1dGRvd249RmFsc2UsCi0gICAgc3RvcEJ1aWxkPSdh
dXRoJywKLSAgICBzdG9wQWxsQnVpbGRzPSdhdXRoJywKLSAgICBjYW5jZWxQZW5kaW5nQnVpbGQ9
J2F1dGgnLAotICAgIHN0b3BDaGFuZ2U9VHJ1ZSwKLSAgICBjbGVhblNodXRkb3duPUZhbHNlKQot
Ci1jWydzdGF0dXMnXSA9IFtdCi1jWydzdGF0dXMnXS5hcHBlbmQoaHRtbC5XZWJTdGF0dXMoaHR0
cF9wb3J0PTg3MTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2bGluaz0i
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LyVzIiwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbmdlY29tbWVudGxpbms9KHIiKGh0dHBzOi8vYnVnc1wud2Vi
a2l0XC5vcmcvc2hvd19idWdcLmNnaVw/aWQ9fHdlYmtpdFwub3JnL2IvKShcZCspIiwgciJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9XDIiKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRoej1hdXRoeikpCi0KLWNbJ3NsYXZlUG9ydG51bSddID0g
MTcwMDAKLWNbJ3Byb2plY3ROYW1lJ10gPSAiV2ViS2l0IgotY1sncHJvamVjdFVSTCddID0gImh0
dHBzOi8vd2Via2l0Lm9yZyIKLWNbJ2J1aWxkYm90VVJMJ10gPSAiaHR0cHM6Ly9idWlsZC53ZWJr
aXQub3JnLyIKLQotY1snYnVpbGRIb3Jpem9uJ10gPSAxMDAwCi1jWydsb2dIb3Jpem9uJ10gPSA1
MDAKLWNbJ2V2ZW50SG9yaXpvbiddID0gMjAwCi1jWydidWlsZENhY2hlU2l6ZSddID0gNjAKLQot
Ci1sb2FkQnVpbGRlckNvbmZpZyhjLCBpc190ZXN0X21vZGVfZW5hYmxlZD1pc190ZXN0X21vZGVf
ZW5hYmxlZCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL21hc3Rlcl9idWlsZGJvdDIuY2ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlcl9idWlsZGJvdDIuY2ZnCShy
ZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9tYXN0ZXJfYnVpbGRib3QyLmNmZwkobm9uZXhpc3RlbnQpCkBAIC0xLDQ4ICsw
LDAgQEAKLSMgLSotIHB5dGhvbiAtKi0KLSMgZXg6IHNldCBzeW50YXg9cHl0aG9uOgotCi1mcm9t
IGJ1aWxkYm90LmNoYW5nZXMucGIgaW1wb3J0IFBCQ2hhbmdlU291cmNlCi1mcm9tIGJ1aWxkYm90
LnN0YXR1cyBpbXBvcnQgaHRtbAotZnJvbSBidWlsZGJvdC5zdGF0dXMud2ViLmF1dGh6IGltcG9y
dCBBdXRoegotCi1mcm9tIGNvbW1pdHRlcl9hdXRoIGltcG9ydCBDb21taXR0ZXJBdXRoCi1mcm9t
IGxvYWRDb25maWcgaW1wb3J0ICoKLQotCi1pc190ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVu
dignQlVJTERCT1RfVEVTVElORycpIGlzIG5vdCBOb25lCi0KLWMgPSBCdWlsZG1hc3RlckNvbmZp
ZyA9IHt9Ci0KLWNbJ2NoYW5nZV9zb3VyY2UnXSA9IFBCQ2hhbmdlU291cmNlKHBvcnQ9MTYwMDAp
Ci0KLSMgcGVybWlzc2lvbnMgZm9yIFdlYlN0YXR1cwotYXV0aHogPSBBdXRoeigKLSAgICBhdXRo
PUNvbW1pdHRlckF1dGgoJ2F1dGguanNvbicpLAotICAgIGZvcmNlQnVpbGQ9J2F1dGgnLAotICAg
IGZvcmNlQWxsQnVpbGRzPSdhdXRoJywKLSAgICBwaW5nQnVpbGRlcj1UcnVlLAotICAgIGdyYWNl
ZnVsU2h1dGRvd249RmFsc2UsCi0gICAgc3RvcEJ1aWxkPSdhdXRoJywKLSAgICBzdG9wQWxsQnVp
bGRzPSdhdXRoJywKLSAgICBjYW5jZWxQZW5kaW5nQnVpbGQ9J2F1dGgnLAotICAgIHN0b3BDaGFu
Z2U9VHJ1ZSwKLSAgICBjbGVhblNodXRkb3duPUZhbHNlKQotCi1jWydzdGF0dXMnXSA9IFtdCi1j
WydzdGF0dXMnXS5hcHBlbmQoaHRtbC5XZWJTdGF0dXMoaHR0cF9wb3J0PTg3MTAsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2bGluaz0iaHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LyVzIiwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hh
bmdlY29tbWVudGxpbms9KHIiKGh0dHBzOi8vYnVnc1wud2Via2l0XC5vcmcvc2hvd19idWdcLmNn
aVw/aWQ9fHdlYmtpdFwub3JnL2IvKShcZCspIiwgciJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9XDIiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRoej1hdXRoeikpCi0KLWNbJ3NsYXZlUG9ydG51bSddID0gMTcwMDAKLWNbJ3Byb2plY3ROYW1l
J10gPSAiV2ViS2l0IgotY1sncHJvamVjdFVSTCddID0gImh0dHBzOi8vd2Via2l0Lm9yZyIKLWNb
J2J1aWxkYm90VVJMJ10gPSAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnLyIKLQotY1snYnVpbGRI
b3Jpem9uJ10gPSAxMDAwCi1jWydsb2dIb3Jpem9uJ10gPSA1MDAKLWNbJ2V2ZW50SG9yaXpvbidd
ID0gMjAwCi1jWydidWlsZENhY2hlU2l6ZSddID0gNjAKLQotCi1sb2FkQnVpbGRlckNvbmZpZyhj
LCBpc190ZXN0X21vZGVfZW5hYmxlZD1pc190ZXN0X21vZGVfZW5hYmxlZCkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xl
YWtzVmlld2VyL0xlYWtzTG9hZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xl
YWtzTG9hZGVyLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc0xv
YWRlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5j
dGlvbiBMZWFrc0xvYWRlcihkaWRDb3VudExlYWtzRmlsZXNDYWxsYmFjaywgZGlkTG9hZExlYWtz
RmlsZUNhbGxiYWNrKSB7Ci0gICAgdGhpcy5fZGlkQ291bnRMZWFrc0ZpbGVzQ2FsbGJhY2sgPSBk
aWRDb3VudExlYWtzRmlsZXNDYWxsYmFjazsKLSAgICB0aGlzLl9kaWRMb2FkTGVha3NGaWxlQ2Fs
bGJhY2sgPSBkaWRMb2FkTGVha3NGaWxlQ2FsbGJhY2s7Ci19Ci0KLUxlYWtzTG9hZGVyLnByb3Rv
dHlwZSA9IHsKLSAgICBzdGFydDogZnVuY3Rpb24odXJsKSB7Ci0gICAgICAgIGlmICgvXC50eHQk
Ly50ZXN0KHVybCkpCi0gICAgICAgICAgICB0aGlzLl9sb2FkTGVha3NGaWxlcyhbdXJsXSk7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2xvYWRMZWFrc0Zyb21SZXN1bHRzUGFnZSh1
cmwpOwotICAgIH0sCi0KLSAgICBfbG9hZExlYWtzRmlsZXM6IGZ1bmN0aW9uKHVybHMpIHsKLSAg
ICAgICAgdGhpcy5fZGlkQ291bnRMZWFrc0ZpbGVzQ2FsbGJhY2sodXJscy5sZW5ndGgpOwotCi0g
ICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdmFyIHBlbmRpbmdVUkxzID0gdXJscy5s
ZW5ndGg7Ci0gICAgICAgIHVybHMuZm9yRWFjaChmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgICAg
IGdldFJlc291cmNlKHVybCwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5f
ZGlkTG9hZExlYWtzRmlsZUNhbGxiYWNrKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAg
fSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfbG9hZExlYWtzRnJvbVJlc3VsdHNQYWdl
OiBmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBnZXRS
ZXNvdXJjZSh1cmwsIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgdmFyIHJvb3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJodG1sIik7Ci0gICAgICAgICAgICByb290LmlubmVySFRNTCA9
IHhoci5yZXNwb25zZVRleHQ7Ci0KLSAgICAgICAgICAgIC8vIFN0cmlwIG9mZiBldmVyeXRoaW5n
IGFmdGVyIHRoZSBsYXN0IC8uCi0gICAgICAgICAgICB2YXIgYmFzZVVSTCA9IHVybC5zdWJzdHJp
bmcoMCwgdXJsLmxhc3RJbmRleE9mKCIvIikgKyAxKTsKLQotICAgICAgICAgICAgdmFyIHVybHMg
PSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5maWxl
ID4gdGQgPiBhW2hyZWYkPSctbGVha3MudHh0J10iKSwgZnVuY3Rpb24obGluaykgeyByZXR1cm4g
YmFzZVVSTCArIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7IH0pOwotCi0gICAgICAgICAgICBz
ZWxmLl9sb2FkTGVha3NGaWxlcyh1cmxzKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLX07CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1Zp
ZXdlci9MZWFrc1BhcnNlci5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIv
TGVha3NQYXJzZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotZnVuY3Rpb24gTGVha3NQYXJzZXIoZGlkUGFyc2VMZWFrc0ZpbGVDYWxsYmFjaykgewotICAg
IHRoaXMuX2RpZFBhcnNlTGVha3NGaWxlQ2FsbGJhY2sgPSBkaWRQYXJzZUxlYWtzRmlsZUNhbGxi
YWNrOwotICAgIAotICAgIGlmICh3b3JrZXJzU3VwcG9ydEN5Y2xpY1N0cnVjdHVyZXMoKSkgewot
ICAgICAgICB0aGlzLl93b3JrZXIgPSBuZXcgV29ya2VyKCJMZWFrc1BhcnNlcldvcmtlci5qcyIp
OwotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy5fd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgIHNlbGYuX2RpZFBhcnNlTGVha3NGaWxl
Q2FsbGJhY2soZS5kYXRhKTsKLSAgICAgICAgfTsKLSAgICB9IGVsc2UKLSAgICAgICAgdGhpcy5f
cGFyc2VySW1wbCA9IG5ldyBMZWFrc1BhcnNlckltcGwodGhpcy5fZGlkUGFyc2VMZWFrc0ZpbGVD
YWxsYmFjayk7Ci19Ci0KLUxlYWtzUGFyc2VyLnByb3RvdHlwZSA9IHsKLSAgICBhZGRMZWFrc0Zp
bGU6IGZ1bmN0aW9uKGxlYWtzVGV4dCkgewotICAgICAgICBpZiAodGhpcy5fd29ya2VyKQotICAg
ICAgICAgICAgdGhpcy5fd29ya2VyLnBvc3RNZXNzYWdlKGxlYWtzVGV4dCk7Ci0gICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHRoaXMuX3BhcnNlckltcGwuYWRkTGVha3NGaWxlKGxlYWtzVGV4dCk7
Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlckltcGwuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvTGVha3NQYXJzZXJJbXBsLmpzCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlckltcGwuanMJKG5vbmV4aXN0ZW50
KQpAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIExlYWtzUGFyc2VySW1w
bChkaWRQYXJzZUxlYWtzQ2FsbGJhY2spIHsKLSAgICB0aGlzLl9kaWRQYXJzZUxlYWtzQ2FsbGJh
Y2sgPSBkaWRQYXJzZUxlYWtzQ2FsbGJhY2s7Ci0gICAgdGhpcy5fcHJvZmlsZSA9IHRoaXMuX2Ny
ZWF0ZU5vZGUoInRvcCBsZXZlbCIpOwotfQotCi1MZWFrc1BhcnNlckltcGwucHJvdG90eXBlID0g
ewotICAgIGFkZExlYWtzRmlsZTogZnVuY3Rpb24obGVha3NUZXh0KSB7Ci0gICAgICAgIHRoaXMu
X2luY29ycG9yYXRlTGVha3ModGhpcy5fcGFyc2VMZWFrcyhsZWFrc1RleHQpKTsKLSAgICAgICAg
dGhpcy5fZGlkUGFyc2VMZWFrc0NhbGxiYWNrKHRoaXMuX3Byb2ZpbGUpOwotICAgIH0sCi0KLSAg
ICBfcGFyc2VMZWFrczogZnVuY3Rpb24odGV4dCkgewotICAgICAgICB2YXIgbGVha3MgPSBbXTsK
LSAgICAgICAgdmFyIGN1cnJlbnRTaXplID0gMDsKLSAgICAgICAgdGV4dC5zcGxpdCgiXG4iKS5m
b3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHsKLSAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eTGVhazou
Klxzc2l6ZT0oXGQrKVxzLy5leGVjKGxpbmUpOwotICAgICAgICAgICAgaWYgKG1hdGNoKSB7Ci0g
ICAgICAgICAgICAgICAgY3VycmVudFNpemUgPSBwYXJzZUludChtYXRjaFsxXSwgMTApOwotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghL15c
cytDYWxsIHN0YWNrOi8udGVzdChsaW5lKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgICAgIC8vIFRoZSBmaXJzdCBmcmFtZSBpcyBub3QgcmVhbGx5IGEgZnJhbWUgYXQgYWxs
ICgiQ2FsbCBzdGFjazogdGhyZWFkIDB4Tk5OTk46IiksIHNvIHdlIG9taXQgaXQuCi0gICAgICAg
ICAgICBsZWFrcy5wdXNoKHsgc2l6ZTogY3VycmVudFNpemUsIHN0YWNrOiBsaW5lLnNwbGl0KCIg
fCAiKS5zbGljZSgxKS5tYXAoZnVuY3Rpb24oc3RyKSB7IHJldHVybiBzdHIudHJpbSgpOyB9KSB9
KTsKLSAgICAgICAgICAgIGN1cnJlbnRTaXplID0gMDsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJl
dHVybiBsZWFrczsKLSAgICB9LAotCi0gICAgX2NyZWF0ZU5vZGU6IGZ1bmN0aW9uKGZ1bmN0aW9u
TmFtZSkgewotICAgICAgICB2YXIgdXJsOwotICAgICAgICB2YXIgbGluZU51bWJlcjsKLSAgICAg
ICAgdmFyIG1hdGNoID0gLyguKikgKFxTKyk6KFxkKykkLy5leGVjKGZ1bmN0aW9uTmFtZSk7Ci0g
ICAgICAgIGlmIChtYXRjaCkgewotICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gbWF0Y2hbMV07
Ci0gICAgICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgbmljZSB0byBiZSBhYmxlIHRvIGxp
bmsgc3RyYWlnaHQgdG8gdGhlIHJpZ2h0IGxpbmUgaW4gVHJhYywgYnV0IHRvCi0gICAgICAgICAg
ICAvLyBkbyB0aGF0IHdlJ2QgaGF2ZSB0byBoYXZlIHNvbWUgd2F5IG9mIHRyYW5zbGF0aW5nIGZy
b20gZmlsZW5hbWVzIHRvIFRyYWMgVVJMcy4KLSAgICAgICAgICAgIC8vIDxodHRwOi8vd2Via2l0
Lm9yZy9iLzcyNTA5PgotICAgICAgICAgICAgdXJsID0gbWF0Y2hbMl07Ci0gICAgICAgICAgICBs
aW5lTnVtYmVyID0gbWF0Y2hbM107Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgZnVuY3Rpb25OYW1lOiBmdW5jdGlvbk5hbWUsCi0gICAgICAgICAgICBzZWxmVGlt
ZTogMCwKLSAgICAgICAgICAgIHRvdGFsVGltZTogMCwKLSAgICAgICAgICAgIGF2ZXJhZ2VUaW1l
OiAwLAotICAgICAgICAgICAgbnVtYmVyT2ZDYWxsczogMCwKLSAgICAgICAgICAgIGNoaWxkcmVu
OiBbXSwKLSAgICAgICAgICAgIGNoaWxkcmVuQnlOYW1lOiB7fSwKLSAgICAgICAgICAgIGNhbGxV
SUQ6IGZ1bmN0aW9uTmFtZSwKLSAgICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgbGlu
ZU51bWJlcjogbGluZU51bWJlciwKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgLy8gVGhpcyBm
dW5jdGlvbiBjcmVhdGVzIGEgZmFrZSAicHJvZmlsZSIgZnJvbSBhIHNldCBvZiBsZWFrIHN0YWNr
cy4gInNlbGZUaW1lIiBpcyB0aGUgbnVtYmVyIG9mCi0gICAgLy8gc3RhY2tzIGluIHdoaWNoIHRo
aXMgZnVuY3Rpb24gd2FzIGF0IHRoZSB0b3AgKGluIHRoZW9yeSwgb25seSBmdW5jdGlvbnMgbGlr
ZSBtYWxsb2Mgc2hvdWxkIGhhdmUgYQotICAgIC8vIG5vbi16ZXJvIHNlbGZUaW1lKS4gInRvdGFs
VGltZSIgaXMgdGhlIG51bWJlciBvZiBzdGFja3Mgd2hpY2ggY29udGFpbiB0aGlzIGZ1bmN0aW9u
IChhbmQgdGh1cyBpcwotICAgIC8vIHRoZSBudW1iZXIgb2YgbGVha3MgdGhhdCBvY2N1cnJlZCBp
biBvciBiZW5lYXRoIHRoaXMgZnVuY3Rpb24pLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGV4cGVu
c2l2ZSEgQ2FuIHdlIHBhcmFsbGVsaXplIGl0PwotICAgIF9pbmNvcnBvcmF0ZUxlYWtzOiBmdW5j
dGlvbihsZWFrcykgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGxlYWtzLmZv
ckVhY2goZnVuY3Rpb24obGVhaykgewotICAgICAgICAgICAgbGVhay5zdGFjay5yZWR1Y2UoZnVu
Y3Rpb24obm9kZSwgZnJhbWUsIGluZGV4LCBhcnJheSkgewotICAgICAgICAgICAgICAgIHZhciBj
aGlsZE5vZGU7Ci0gICAgICAgICAgICAgICAgaWYgKGZyYW1lIGluIG5vZGUuY2hpbGRyZW5CeU5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5vZGUuY2hpbGRyZW5CeU5hbWVb
ZnJhbWVdOwotICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICBjaGls
ZE5vZGUgPSBzZWxmLl9jcmVhdGVOb2RlKGZyYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgY2hp
bGROb2RlLmhlYWQgPSBzZWxmLl9wcm9maWxlOwotICAgICAgICAgICAgICAgICAgICBub2RlLmNo
aWxkcmVuQnlOYW1lW2ZyYW1lXSA9IGNoaWxkTm9kZTsKLSAgICAgICAgICAgICAgICAgICAgbm9k
ZS5jaGlsZHJlbi5wdXNoKGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIGlmIChpbmRleCA9PT0gYXJyYXkubGVuZ3RoIC0gMSkKLSAgICAgICAgICAgICAgICAg
ICAgY2hpbGROb2RlLnNlbGZUaW1lICs9IGxlYWsuc2l6ZTsKLSAgICAgICAgICAgICAgICBjaGls
ZE5vZGUudG90YWxUaW1lICs9IGxlYWsuc2l6ZTsKLSAgICAgICAgICAgICAgICArK2NoaWxkTm9k
ZS5udW1iZXJPZkNhbGxzOwotICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGU7Ci0gICAg
ICAgICAgICB9LCBzZWxmLl9wcm9maWxlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHNlbGYuX3By
b2ZpbGUudG90YWxUaW1lID0gc2VsZi5fcHJvZmlsZS5jaGlsZHJlbi5yZWR1Y2UoZnVuY3Rpb24o
c3VtLCBjaGlsZCkgeyByZXR1cm4gc3VtICsgY2hpbGQudG90YWxUaW1lOyB9LCAwKTsKLSAgICB9
LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyV29ya2VyLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzUGFyc2VyV29ya2VyLmpzCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1BhcnNlcldvcmtlci5qcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pbXBvcnRTY3JpcHRzKCJMZWFrc1BhcnNl
ckltcGwuanMiKTsKLQotdmFyIHBhcnNlciA9IG5ldyBMZWFrc1BhcnNlckltcGwoZnVuY3Rpb24o
cHJvZmlsZSkgewotICAgIHBvc3RNZXNzYWdlKHByb2ZpbGUpOwotfSk7Ci0KLW9ubWVzc2FnZSA9
IGZ1bmN0aW9uKGUpIHsKLSAgICBwYXJzZXIuYWRkTGVha3NGaWxlKGUuZGF0YSk7Ci19CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NW
aWV3ZXIvTGVha3NWaWV3ZXIuY3NzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdl
ci9MZWFrc1ZpZXdlci5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3VybC1wcm9tcHQtY29udGFpbmVyIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0g
ICAgdG9wOiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotICAgIHJpZ2h0OiAwOwot
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKLSAgICB6LWluZGV4OiA1
MDAwMDsKLX0KLQotI3VybC1wcm9tcHQgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0
b3A6IDA7Ci0gICAgYm90dG9tOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgcmlnaHQ6IDA7Ci0gICAg
d2lkdGg6IDQwMHB4OwotICAgIGhlaWdodDogMzAwcHg7Ci0gICAgbWFyZ2luOiBhdXRvOwotICAg
IGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwotICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCA1cHgg
MTBweCByZ2JhKDAsIDAsIDAsIDAuOCk7Ci0gICAgcGFkZGluZzogNTBweCAwOwotICAgIHRleHQt
YWxpZ246IGNlbnRlcjsKLX0KLQotI2xvYWRpbmctaW5kaWNhdG9yIHsKLSAgICBwb3NpdGlvbjog
YWJzb2x1dGU7Ci0gICAgcmlnaHQ6IDIwcHg7Ci0gICAgd2lkdGg6IDE1MHB4OwotICAgIG1hcmdp
bi10b3A6IDVweDsKLX0KLQotI3NwaW5uZXIgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1hcmdp
bi10b3A6IC0xcHg7Ci19Ci0KLSNsb2FkaW5nLWluZGljYXRvci1sYWJlbCB7Ci0gICAgbWFyZ2lu
LWxlZnQ6IDVweDsKLX0KLQotI3JlY2VudC1idWlsZHMtbG9hZGluZy1pbmRpY2F0b3IgewotICAg
IGNvbG9yOiBncmF5OwotfQotCi0jcmVjZW50LWJ1aWxkcy1saXN0IHsKLSAgICBsaXN0LXN0eWxl
OiBub25lOwotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi0vKiBJbnNwZWN0
b3Igc3R5bGUgb3ZlcnJpZGVzICovCi0KLS5wZXJjZW50LXRpbWUtc3RhdHVzLWJhci1pdGVtIHsK
LSAgICAvKiBXZSBhbHdheXMgc2hvdyBsZWFrIGNvdW50cyBhcyByZWFsIHZhbHVlcywgbm90IHBl
cmNlbnRhZ2VzLCBzbyB0aGlzIGJ1dHRvbiBpc24ndCB1c2VmdWwuICovCi0gICAgZGlzcGxheTog
bm9uZSAhaW1wb3J0YW50OwotfQotCi0uZGF0YS1ncmlkIC5kYXRhLWNvbnRhaW5lciB7Ci0gICAg
b3ZlcmZsb3cteDogdmlzaWJsZTsKLSAgICBvdmVyZmxvdy15OiBhdXRvOwotfQotCi0uZGF0YS1n
cmlkIHRkID4gZGl2LCAuZGF0YS1ncmlkIHRoID4gZGl2IHsKLSAgICBvdmVyZmxvdzogdmlzaWJs
ZTsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9M
ZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotdmFyIExlYWtzVmlld2VyID0gewotICAgIGxvYWRlZDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRoaXMuX2xvYWRlciA9IG5ldyBMZWFrc0xvYWRlcih0aGlzLl9kaWRDb3Vu
dExlYWtzRmlsZXMuYmluZCh0aGlzKSwgdGhpcy5fZGlkTG9hZExlYWtzRmlsZS5iaW5kKHRoaXMp
KTsKLSAgICAgICAgdGhpcy5fcGFyc2VyID0gbmV3IExlYWtzUGFyc2VyKHRoaXMuX2RpZFBhcnNl
TGVha3NGaWxlLmJpbmQodGhpcykpOwotCi0gICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3Ig
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZy1pbmRpY2F0b3IiKTsKLSAgICAgICAg
dGhpcy5fbG9hZGluZ0luZGljYXRvckxhYmVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxv
YWRpbmctaW5kaWNhdG9yLWxhYmVsIik7Ci0KLSAgICAgICAgdGhpcy5fcHJvZmlsZVZpZXcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkNQVVByb2ZpbGVWaWV3KHt9KTsKLSAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoIm1haW4tcGFuZWxzIikuYXBwZW5kQ2hpbGQodGhpcy5fcHJvZmlsZVZpZXcu
ZWxlbWVudCk7Ci0gICAgICAgIHRoaXMuX3Byb2ZpbGVWaWV3LnNob3coKTsKLQotICAgICAgICAv
LyBGcm9tIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdwotICAgICAgICB2YXIgc3Rh
dHVzQmFySXRlbXMgPSB0aGlzLl9wcm9maWxlVmlldy5zdGF0dXNCYXJJdGVtczsKLSAgICAgICAg
aWYgKHN0YXR1c0Jhckl0ZW1zKSB7Ci0gICAgICAgICAgICB0aGlzLl9zdGF0dXNCYXJJdGVtQ29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHN0YXR1c0Jhckl0ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
ICAgIHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIuYXBwZW5kQ2hpbGQoc3RhdHVzQmFySXRl
bXNbaV0pOwotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm1haW4tc3RhdHVz
LWJhciIpLmFwcGVuZENoaWxkKHRoaXMuX3N0YXR1c0Jhckl0ZW1Db250YWluZXIpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIHVybDsKLSAgICAgICAgdmFyIG1hdGNoID0gL3VybD0oW14mXSsp
Ly5leGVjKGxvY2F0aW9uLnNlYXJjaCk7Ci0gICAgICAgIGlmIChtYXRjaCkKLSAgICAgICAgICAg
IHVybCA9IGRlY29kZVVSSUNvbXBvbmVudChtYXRjaFsxXSk7Ci0KLSAgICAgICAgaWYgKHVybCkK
LSAgICAgICAgICAgIHRoaXMuX2xvYWRMZWFrc0Zyb21VUkwodXJsKQotICAgICAgICBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9kaXNwbGF5VVJMUHJvbXB0KCk7Ci0gICAgfSwKLQotICAgIGdldCBm
aWxlc0xlZnRUb1BhcnNlKCkgewotICAgICAgICBpZiAoISgnX2ZpbGVzTGVmdFRvUGFyc2UnIGlu
IHRoaXMpKQotICAgICAgICAgICAgdGhpcy5fZmlsZXNMZWZ0VG9QYXJzZSA9IDA7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9maWxlc0xlZnRUb1BhcnNlOwotICAgIH0sCi0KLSAgICBzZXQgZmlsZXNM
ZWZ0VG9QYXJzZSh4KSB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlc0xlZnRUb1BhcnNlID09PSB4
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9maWxlc0xlZnRUb1BhcnNlID0g
eDsKLSAgICAgICAgdGhpcy5fbG9hZGluZ1N0YXR1c0NoYW5nZWQoKTsKLSAgICB9LAotCi0gICAg
Z2V0IGxvYWRpbmcoKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7Ci0gICAgfSwK
LQotICAgIHNldCBsb2FkaW5nKHgpIHsKLSAgICAgICAgaWYgKHRoaXMuX2lzTG9hZGluZyA9PT0g
eCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5faXNMb2FkaW5nID0geDsKLSAg
ICAgICAgdGhpcy5fbG9hZGluZ1N0YXR1c0NoYW5nZWQoKTsKLSAgICB9LAotCi0gICAgZ2V0IHVy
bCgpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3VybDsKLSAgICB9LAotCi0gICAgc2V0IHVybCh4
KSB7Ci0gICAgICAgIGlmICh0aGlzLl91cmwgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy5fdXJsID0geDsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAg
ICB9LAotCi0gICAgdXJsUHJvbXB0QnV0dG9uQ2xpY2tlZDogZnVuY3Rpb24oZSkgewotICAgICAg
ICB0aGlzLl91cmxDaG9zZW5Gcm9tUHJvbXB0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwi
KS52YWx1ZSk7Ci0gICAgfSwKLQotICAgIF9kaWRDb3VudExlYWtzRmlsZXM6IGZ1bmN0aW9uKGZp
bGVDb3VudCkgewotICAgICAgICB0aGlzLl9maWxlQ291bnQgPSBmaWxlQ291bnQ7Ci0gICAgICAg
IHRoaXMuZmlsZXNMZWZ0VG9QYXJzZSA9IGZpbGVDb3VudDsKLSAgICB9LAotCi0gICAgX2RpZExv
YWRMZWFrc0ZpbGU6IGZ1bmN0aW9uKGxlYWtzVGV4dCkgewotICAgICAgICB0aGlzLl9wYXJzZXIu
YWRkTGVha3NGaWxlKGxlYWtzVGV4dCk7Ci0gICAgfSwKLQotICAgIF9kaWRMb2FkUmVjZW50QnVp
bGRzOiBmdW5jdGlvbihidWlsZHMpIHsKLSAgICAgICAgdGhpcy5fcmVjZW50QnVpbGRzID0gYnVp
bGRzOwotICAgICAgICB0aGlzLl91cGRhdGVVUkxQcm9tcHQoKTsKLSAgICB9LAotCi0gICAgX2Rp
ZFBhcnNlTGVha3NGaWxlOiBmdW5jdGlvbihwcm9maWxlKSB7Ci0gICAgICAgIGlmICgtLXRoaXMu
ZmlsZXNMZWZ0VG9QYXJzZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgUHJvZmlsZXJB
Z2VudC5wcm9maWxlUmVhZHkocHJvZmlsZSk7Ci0gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNl
OwotICAgIH0sCi0KLSAgICBfZGlzcGxheVVSTFByb21wdDogZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwtcHJvbXB0LWNvbnRhaW5lciIpLnJlbW92ZVN0
eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXJs
IikuZm9jdXMoKTsKLSAgICAgICAgdmFyIGxvYWRlciA9IG5ldyBSZWNlbnRCdWlsZHNMb2FkZXIo
dGhpcy5fZGlkTG9hZFJlY2VudEJ1aWxkcy5iaW5kKHRoaXMpKTsKLSAgICAgICAgbG9hZGVyLnN0
YXJ0KCJBcHBsZSBTaWVycmEgKExlYWtzKSIsIHRoaXMuX251bWJlck9mUmVjZW50QnVpbGRzVG9M
b2FkKTsKLSAgICB9LAotCi0gICAgX2xvYWRMZWFrc0Zyb21VUkw6IGZ1bmN0aW9uKHVybCkgewot
ICAgICAgICB0aGlzLnVybCA9IHVybDsKLSAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTsKLQot
ICAgICAgICB0aGlzLl9sb2FkZXIuc3RhcnQodGhpcy51cmwpOwotICAgIH0sCi0KLSAgICBfbG9h
ZGluZ0luZGljYXRvclRleHQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGV4dCA9ICJMb2Fk
aW5nIjsKLSAgICAgICAgaWYgKHRoaXMuZmlsZXNMZWZ0VG9QYXJzZSkKLSAgICAgICAgICAgIHRl
eHQgKz0gIiAiICsgKHRoaXMuX2ZpbGVDb3VudCAtIHRoaXMuZmlsZXNMZWZ0VG9QYXJzZSArIDEp
ICsgIi8iICsgdGhpcy5fZmlsZUNvdW50ICsgIiBmaWxlcyI7Ci0gICAgICAgIHRleHQgKz0gIlx1
MjAyNiI7Ci0gICAgICAgIHJldHVybiB0ZXh0OwotICAgIH0sCi0KLSAgICBfbG9hZGluZ1N0YXR1
c0NoYW5nZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9zZXRMb2FkaW5nSW5kaWNhdG9y
SGlkZGVuKCF0aGlzLmxvYWRpbmcpOwotICAgICAgICB0aGlzLl91cGRhdGVMb2FkaW5nSW5kaWNh
dG9yTGFiZWwoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGUoKTsKLSAgICB9LAotCi0gICAg
X251bWJlck9mUmVjZW50QnVpbGRzVG9Mb2FkOiAxMCwKLQotICAgIF9zZXRMb2FkaW5nSW5kaWNh
dG9ySGlkZGVuOiBmdW5jdGlvbihoaWRkZW4pIHsKLSAgICAgICAgaWYgKGhpZGRlbikKLSAgICAg
ICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3IuYWRkU3R5bGVDbGFzcygiaGlkZGVuIik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3IucmVtb3ZlU3R5
bGVDbGFzcygiaGlkZGVuIik7Ci0gICAgfSwKLQotICAgIF91cGRhdGVMb2FkaW5nSW5kaWNhdG9y
TGFiZWw6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9sb2FkaW5nSW5kaWNhdG9yTGFiZWwu
aW5uZXJUZXh0ID0gdGhpcy5fbG9hZGluZ0luZGljYXRvclRleHQoKTsKLSAgICB9LAotCi0gICAg
X3VwZGF0ZVRpdGxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHRpdGxlID0gIkxlYWtzIFZp
ZXdlciBcdTIwMTQgIjsKLSAgICAgICAgaWYgKHRoaXMubG9hZGluZykKLSAgICAgICAgICAgIHRp
dGxlICs9ICIoIiArIHRoaXMuX2xvYWRpbmdJbmRpY2F0b3JUZXh0KCkgKyAiKSAiOwotICAgICAg
ICB0aXRsZSArPSB0aGlzLnVybDsKLSAgICAgICAgZG9jdW1lbnQudGl0bGUgPSB0aXRsZTsKLSAg
ICB9LAotCi0gICAgX3VwZGF0ZVVSTFByb21wdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBy
ZWNlbnRCdWlsZHNDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVjZW50LWJ1
aWxkcy1jb250YWluZXIiKTsKLSAgICAgICAgcmVjZW50QnVpbGRzQ29udGFpbmVyLnJlbW92ZUNo
aWxkcmVuKCk7Ci0gICAgICAgIGlmICh0aGlzLl9yZWNlbnRCdWlsZHMgJiYgdGhpcy5fcmVjZW50
QnVpbGRzLmxlbmd0aCkgewotICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJvbCIpOwotICAgICAgICAgICAgbGlzdC5pZCA9ICJyZWNlbnQtYnVpbGRzLWxpc3Qi
OwotCi0gICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICAgICB0aGlzLl9yZWNl
bnRCdWlsZHMuZm9yRWFjaChmdW5jdGlvbihidWlsZCkgewotICAgICAgICAgICAgICAgIHZhciBs
aW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgICAgIGxpbmsu
aHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKyAiP3VybD0iICsgZW5jb2RlVVJJQ29tcG9u
ZW50KGJ1aWxkLnVybCk7Ci0gICAgICAgICAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKCJj
bGljayIsIGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdXJsQ2hvc2Vu
RnJvbVByb21wdChidWlsZC51cmwpOwotICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZh
dWx0KCk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgbGluay5hcHBlbmRD
aGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiciIgKyBidWlsZC5yZXZpc2lvbiArICI6ICIg
KyBidWlsZC5sZWFrQ291bnQgKyAiIGxlYWtzIikpOwotICAgICAgICAgICAgICAgIHZhciBpdGVt
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFw
cGVuZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICAgICAgbGlzdC5hcHBlbmRDaGlsZChpdGVt
KTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICByZWNlbnRCdWlsZHNDb250YWluZXIu
YXBwZW5kQ2hpbGQobGlzdCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcmVjZW50QnVp
bGRzQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJObyByZWNl
bnQgbGVha3kgYnVpbGRzIGZvdW5kLiIpKTsKLSAgICB9LAotCi0gICAgX3VybENob3NlbkZyb21Q
cm9tcHQ6IGZ1bmN0aW9uKHVybCkgewotICAgICAgICB0aGlzLl9sb2FkTGVha3NGcm9tVVJMKHVy
bCk7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1cmwtcHJvbXB0LWNvbnRhaW5l
ciIpLmFkZFN0eWxlQ2xhc3MoImhpZGRlbiIpOwotICAgIH0sCi0KLX07Ci0KLWFkZEV2ZW50TGlz
dGVuZXIoImxvYWQiLCBMZWFrc1ZpZXdlci5sb2FkZWQuYmluZChMZWFrc1ZpZXdlcikpOwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvTGVha3NWaWV3ZXIvUmVjZW50QnVpbGRzTG9hZGVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L0xlYWtzVmlld2VyL1JlY2VudEJ1aWxkc0xvYWRlci5qcwkocmV2aXNpb24gMjY5MDQyKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvTGVha3NWaWV3ZXIvUmVjZW50QnVpbGRzTG9hZGVyLmpzCShub25leGlzdGVudCkKQEAgLTEs
ODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFJlY2VudEJ1aWxkc0xvYWRlcihkaWRM
b2FkUmVjZW50QnVpbGRzQ2FsbGJhY2spIHsKLSAgICB0aGlzLl9kaWRMb2FkUmVjZW50QnVpbGRz
Q2FsbGJhY2sgPSBkaWRMb2FkUmVjZW50QnVpbGRzQ2FsbGJhY2s7Ci19Ci0KLVJlY2VudEJ1aWxk
c0xvYWRlci5wcm90b3R5cGUgPSB7Ci0gICAgc3RhcnQ6IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCBt
YXhpbXVtTnVtYmVyT2ZCdWlsZHMpIHsKLSAgICAgICAgdmFyIHVybCA9IHRoaXMuX2J1aWxkYm90
QmFzZVVSTCArICIvanNvbi9idWlsZGVycy8iICsgYnVpbGRlck5hbWUgKyAiL2J1aWxkcy8/IjsK
LSAgICAgICAgdXJsICs9IHJhbmdlKG1heGltdW1OdW1iZXJPZkJ1aWxkcykubWFwKGZ1bmN0aW9u
KG4pIHsgcmV0dXJuICJzZWxlY3Q9LSIgKyAobiArIDEpOyB9KS5qb2luKCImIik7Ci0gICAgICAg
IHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2UodXJsLCBmdW5jdGlvbih4aHIp
IHsKLSAgICAgICAgICAgIHZhciBkYXRhID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsK
LSAgICAgICAgICAgIHZhciBidWlsZHMgPSBbXTsKLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGRh
dGEpLmZvckVhY2goZnVuY3Rpb24oYnVpbGROdW1iZXIpIHsKLSAgICAgICAgICAgICAgICB2YXIg
YnVpbGQgPSBkYXRhW2J1aWxkTnVtYmVyXTsKLSAgICAgICAgICAgICAgICBpZiAoYnVpbGQuZXJy
b3IpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coIkJ1aWxkICIgKyBidWlsZE51
bWJlciArICI6ICIgKyBidWlsZC5lcnJvcik7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHN2blJldmlzaW9uUHJvcGVy
dHkgPSBidWlsZC5wcm9wZXJ0aWVzLmZpcnN0KGZ1bmN0aW9uKHByb3BlcnR5KSB7IHJldHVybiBw
cm9wZXJ0eVswXSA9PT0gImdvdF9yZXZpc2lvbiI7IH0pOwotICAgICAgICAgICAgICAgIGlmICgh
c3ZuUmV2aXNpb25Qcm9wZXJ0eSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgICAgICAgICAgdmFyIGJ1aWxkSW5mbyA9IHsKLSAgICAgICAgICAgICAgICAgICAgcmV2aXNp
b246IHBhcnNlSW50KHN2blJldmlzaW9uUHJvcGVydHlbMV0sIDEwKSwKLSAgICAgICAgICAgICAg
ICAgICAgbGVha0NvdW50OiAwLAotICAgICAgICAgICAgICAgICAgICB1cmw6IG51bGwsCi0gICAg
ICAgICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICBmb3IgKHZhciBzdGVwSW5kZXggPSAwOyBz
dGVwSW5kZXggPCBidWlsZC5zdGVwcy5sZW5ndGg7ICsrc3RlcEluZGV4KSB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBzdGVwID0gYnVpbGQuc3RlcHNbc3RlcEluZGV4XTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKHN0ZXAubmFtZSA9PT0gImxheW91dC10ZXN0IikgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKCEoInRleHQiIGluIHN0ZXApKQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0cmluZ3MgPSBz
dGVwLnRleHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBzdHJpbmdJbmRleCA9
IDA7IHN0cmluZ0luZGV4IDwgc3RyaW5ncy5sZW5ndGg7ICsrc3RyaW5nSW5kZXgpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSAvXihcZCspIHRvdGFsIGxlYWtzIGZv
dW5kLy5leGVjKHN0cmluZ3Nbc3RyaW5nSW5kZXhdKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZEluZm8ubGVha0NvdW50ID0gcGFy
c2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChzdGVwLm5hbWUgPT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiKSB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoISgidXJscyIgaW4gc3RlcCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoInZpZXcgcmVzdWx0cyIg
aW4gc3RlcC51cmxzKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gc3RlcC51cmxzWyJ2aWV3IHJlc3VsdHMiXTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkSW5mby51cmwgPSBzZWxmLl9idWlsZGJvdEJh
c2VVUkwgKyB1cmwucmVwbGFjZSgvXC9yZXN1bHRzXC5odG1sJC8sICIiKSArICIvIjsKLSAgICAg
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZEluZm8ubGVh
a0NvdW50ICYmIGJ1aWxkSW5mby51cmwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxk
cy5wdXNoKGJ1aWxkSW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgLy8gU29ydCBkZXNjZW5kaW5nIGJ5IHJldmlzaW9uLgotICAgICAgICAgICAgYnVp
bGRzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYi5yZXZpc2lvbiAtIGEucmV2aXNpb247
IH0pOwotICAgICAgICAgICAgc2VsZi5fZGlkTG9hZFJlY2VudEJ1aWxkc0NhbGxiYWNrKGJ1aWxk
cyk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfYnVpbGRib3RCYXNlVVJMOiAiaHR0cHM6
Ly9idWlsZC53ZWJraXQub3JnLyIsCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvVXRpbGl0aWVz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1V0aWxpdGllcy5qcwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvVXRpbGl0aWVzLmpzCShub25leGlzdGVudCkKQEAg
LTEsNjYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBt
ZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIGdldFJlc291cmNlKHVybCwgY2Fs
bGJhY2spIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7Ci0gICAgeGhyLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBBbGxvdyBhIHN0YXR1
cyBvZiAwIGZvciBlYXNpZXIgdGVzdGluZyB3aXRoIGxvY2FsIGZpbGVzLgotICAgICAgICBpZiAo
dGhpcy5yZWFkeVN0YXRlID09IDQgJiYgKCF0aGlzLnN0YXR1cyB8fCB0aGlzLnN0YXR1cyA9PSAy
MDApKQotICAgICAgICAgICAgY2FsbGJhY2sodGhpcyk7Ci0gICAgfTsKLSAgICB4aHIub3Blbigi
R0VUIiwgdXJsKTsKLSAgICB4aHIuc2VuZCgpOwotfQotCi1mdW5jdGlvbiByYW5nZShuKSB7Ci0g
ICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheShuKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG47
ICsraSkKLSAgICAgICAgcmVzdWx0W2ldID0gaTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1m
dW5jdGlvbiB3b3JrZXJzU3VwcG9ydEN5Y2xpY1N0cnVjdHVyZXMoKSB7Ci0gICAgdmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIoIlV0aWxpdGllcy5qcyIpOwotICAgIHZhciBzdXBwb3J0c0N5Y2xpY1N0
cnVjdHVyZXMgPSB0cnVlOwotCi0gICAgdHJ5IHsKLSAgICAgICAgdmFyIGN5Y2xpY1N0cnVjdHVy
ZSA9IHsgY3ljbGU6IG51bGwgfTsKLSAgICAgICAgY3ljbGljU3RydWN0dXJlLmN5Y2xlID0gY3lj
bGljU3RydWN0dXJlOwotCi0gICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShjeWNsaWNTdHJ1Y3R1
cmUpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICBzdXBwb3J0c0N5Y2xpY1N0cnVjdHVyZXMg
PSBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gc3VwcG9ydHNDeWNsaWNTdHJ1Y3R1cmVzOwot
fQotCi1BcnJheS5wcm90b3R5cGUuZmlyc3QgPSBmdW5jdGlvbihwcmVkaWNhdGUpIHsKLSAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHByZWRp
Y2F0ZSh0aGlzW2ldKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzW2ldOwotICAgIH0KLSAgICBy
ZXR1cm4gbnVsbDsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1dlYkluc3BlY3RvclNoaW1zLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL1dlYkluc3BlY3RvclNoaW1zLmpzCShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9XZWJJbnNwZWN0b3JTaGltcy5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vLyBUaGlzIGZpbGUgY29u
dGFpbnMgZGVmaW5pdGlvbnMgdGhhdCBhcmUgbmVlZGVkIHRvIHNhdGlzZnkgdGhlIFdlYiBJbnNw
ZWN0b3IgSmF2YVNjcmlwdCBmaWxlcyB3ZQotLy8gaW1wb3J0LgotCi12YXIgV2ViSW5zcGVjdG9y
ID0gewotICAgIGRpc3BsYXlOYW1lRm9yVVJMOiBmdW5jdGlvbih1cmwpIHsKLSAgICAgICAgcmV0
dXJuIHVybDsKLSAgICB9LAotCi0gICAgbGlua2lmeVVSTEFzTm9kZTogZnVuY3Rpb24odXJsLCBs
aW5rVGV4dCwgY2xhc3NlcywgdG9vbHRpcFRleHQpIHsKLSAgICAgICAgaWYgKCFsaW5rVGV4dCkK
LSAgICAgICAgICAgIGxpbmtUZXh0ID0gdXJsOwotICAgICAgICBjbGFzc2VzID0gKGNsYXNzZXMg
PyBjbGFzc2VzICsgIiAiIDogIiIpOwotCi0gICAgICAgIC8vIEZJWE1FOiBDcmVhdGUgYW4gPGE+
IGVsZW1lbnQgaGVyZSBvbmNlIHdlIGFjdHVhbGx5IGhhdmUgc29tZXdoZXJlIHVzZWZ1bCB0byBs
aW5rIHRvLgotICAgICAgICAvLyA8aHR0cDovL3dlYmtpdC5vcmcvYi83MjUwOT4KLSAgICAgICAg
dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIGEuaHJlZiA9
IHVybDsKLSAgICAgICAgYS5jbGFzc05hbWUgPSBjbGFzc2VzOwotICAgICAgICBpZiAodHlwZW9m
IHRvb2x0aXBUZXh0ID09PSAidW5kZWZpbmVkIikKLSAgICAgICAgICAgIGEudGl0bGUgPSB1cmw7
Ci0gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b29sdGlwVGV4dCAhPT0gInN0cmluZyIgfHwgdG9v
bHRpcFRleHQubGVuZ3RoKQotICAgICAgICAgICAgYS50aXRsZSA9IHRvb2x0aXBUZXh0OwotICAg
ICAgICBhLnRleHRDb250ZW50ID0gbGlua1RleHQ7Ci0KLSAgICAgICAgcmV0dXJuIGE7Ci0gICAg
fSwKLQotICAgIGxpbmtpZnlSZXNvdXJjZUFzTm9kZTogZnVuY3Rpb24odXJsLCBwcmVmZXJyZWRQ
YW5lbCwgbGluZU51bWJlciwgY2xhc3NlcywgdG9vbHRpcFRleHQpIHsKLSAgICAgICAgdmFyIGxp
bmtUZXh0ID0gV2ViSW5zcGVjdG9yLmRpc3BsYXlOYW1lRm9yVVJMKHVybCk7Ci0gICAgICAgIGlm
IChsaW5lTnVtYmVyKQotICAgICAgICAgICAgbGlua1RleHQgKz0gIjoiICsgbGluZU51bWJlcjsK
LSAgICAgICAgcmV0dXJuIFdlYkluc3BlY3Rvci5saW5raWZ5VVJMQXNOb2RlKHVybCwgbGlua1Rl
eHQsIGNsYXNzZXMsIHRvb2x0aXBUZXh0KTsKLSAgICB9LAotCi0gICAgVUlTdHJpbmc6IGZ1bmN0
aW9uKHN0cmluZykgewotICAgICAgICByZXR1cm4gU3RyaW5nLnZzcHJpbnRmKHN0cmluZywgQXJy
YXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSk7Ci0gICAgfSwKLX07Ci0KLXZh
ciBQcmVmZXJlbmNlcyA9IHsKLSAgICAvLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2UgY2F1c2VzIHRo
ZSAiQXZlcmFnZSIgYW5kICJDYWxscyIgY29sdW1ucyB0byBiZSBzaG93bi4KLSAgICBzYW1wbGlu
Z0NQVVByb2ZpbGVyOiBmYWxzZSwKLX07Ci0KLXZhciBQcm9maWxlckFnZW50ID0gewotICAgIGdl
dFByb2ZpbGU6IGZ1bmN0aW9uKHR5cGVJZCwgdWlkLCBjYWxsYmFjaykgewotICAgICAgICB0aGlz
Ll9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIH0sCi0KLSAgICBwcm9maWxlUmVhZHk6IGZ1bmN0
aW9uKGhlYWQpIHsKLSAgICAgICAgdGhpcy5fY2FsbGJhY2soeyBoZWFkOiBoZWFkIH0pOwotICAg
IH0sCi19OwotCi0vLyBUaGlzIGZ1bmN0aW9uIG1ha2VzIGFueSByZXF1aXJlZCBjaGFuZ2VzIHRv
IG9iamVjdHMgaW1wb3J0ZWQgZnJvbSB0aGUgV2ViIEluc3BlY3RvciBKYXZhU2NyaXB0Ci0vLyBm
aWxlcy4KLWZ1bmN0aW9uIG1vbmtleVBhdGNoSW5zcGVjdG9yT2JqZWN0cygpIHsKLSAgICB2YXIg
b3JpZ2luYWxHZXR0ZXIgPSBXZWJJbnNwZWN0b3IuUHJvZmlsZURhdGFHcmlkTm9kZS5wcm90b3R5
cGUuX19sb29rdXBHZXR0ZXJfXygiZGF0YSIpOwotICAgIFdlYkluc3BlY3Rvci5Qcm9maWxlRGF0
YUdyaWROb2RlLnByb3RvdHlwZS5fX2RlZmluZUdldHRlcl9fKCJkYXRhIiwgZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHZhciBkYXRhID0gb3JpZ2luYWxHZXR0ZXIuY2FsbCh0aGlzKTsKLQotICAgICAg
ICAvLyBQcm9maWxlRGF0YUdyaWROb2RlIGZvcm1hdHMgdmFsdWVzIGFzIG1pbGxpc2Vjb25kcywg
YnV0IHdlIGFyZSBpbnN0ZWFkIG1lYXN1cmluZyBieXRlcy4KLSAgICAgICAgaWYgKCF0aGlzLnBy
b2ZpbGVWaWV3LnNob3dTZWxmVGltZUFzUGVyY2VudCkKLSAgICAgICAgICAgIGRhdGEuc2VsZiA9
IE51bWJlci5ieXRlc1RvU3RyaW5nKHRoaXMuc2VsZlRpbWUpOwotICAgICAgICBpZiAoIXRoaXMu
cHJvZmlsZVZpZXcuc2hvd1RvdGFsVGltZUFzUGVyY2VudCkKLSAgICAgICAgICAgIGRhdGEudG90
YWwgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLnRvdGFsVGltZSk7Ci0gICAgICAgIGlmICgh
dGhpcy5wcm9maWxlVmlldy5zaG93QXZlcmFnZVRpbWVBc1BlcmNlbnQpCi0gICAgICAgICAgICBk
YXRhLmF2ZXJhZ2UgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyh0aGlzLmF2ZXJhZ2VUaW1lKTsKLQot
ICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9KTsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL0xlYWtzVmlld2VyL2lu
ZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRtbAkocmV2aXNp
b24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvTGVha3NWaWV3ZXIvaW5kZXguaHRtbAkobm9uZXhpc3RlbnQpCkBA
IC0xLDgxICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi1hcmUgbWV0OgotMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
Ci1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLVBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLVNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi1USEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgot
ICAgIDx0aXRsZT5MZWFrcyBWaWV3ZXI8L3RpdGxlPgotICAgIDxsaW5rIHJlbD1zdHlsZXNoZWV0
IGhyZWY9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84
MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5j
c3MiPgotICAgIDxsaW5rIHJlbD1zdHlsZXNoZWV0IGhyZWY9TGVha3NWaWV3ZXIuY3NzPgotCi0g
ICAgPHNjcmlwdCBzcmM9V2ViSW5zcGVjdG9yU2hpbXMuanM+PC9zY3JpcHQ+Ci0KLSAgICA8IS0t
IFRoZSBvcmRlciBoZXJlIG1hdGNoZXMgaW5zcGVjdG9yLmh0bWwuIC0tPgotICAgIDxzY3JpcHQg
c3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1
NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9z
aXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC90cmVlb3V0bGluZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Imh0
dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90cnVu
ay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL09iamVjdC5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJr
aXQvIXN2bi9iYy84MDU2NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1ZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQu
b3JnL3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9QYW5lbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90
cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFHcmlkLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5
L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU2lkZWJhclRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
aHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3Ry
dW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RhdHVzQmFyQnV0dG9uLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBv
c2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2NS90
cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVEYXRhR3JpZFRy
ZWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3Jn
L3JlcG9zaXRvcnkvd2Via2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Cb3R0b21VcFByb2ZpbGVEYXRhR3JpZFRyZWUuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Vi
a2l0LyFzdm4vYmMvODA1NjUvdHJ1bmsvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9Ub3BEb3duUHJvZmlsZURhdGFHcmlkVHJlZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Imh0dHBzOi8vc3ZuLndlYmtpdC5vcmcvcmVwb3NpdG9yeS93ZWJraXQvIXN2bi9iYy84MDU2
NS90cnVuay9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVWaWV3Lmpz
Ij48L3NjcmlwdD4KLQotICAgIDxzY3JpcHQ+Ci0gICAgICAgIC8vIE5vdyB0aGF0IGFsbCB0aGUg
SW5zcGVjdG9yIGZpbGVzIGhhdmUgbG9hZGVkIHdlIGNhbiBhcHBseSBvdXIgbW9ua2V5IHBhdGNo
ZXMuCi0gICAgICAgIG1vbmtleVBhdGNoSW5zcGVjdG9yT2JqZWN0cygpOwotICAgIDwvc2NyaXB0
PgotCi0gICAgPHNjcmlwdCBzcmM9TGVha3NMb2FkZXIuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9TGVha3NQYXJzZXIuanM+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9TGVha3NQYXJz
ZXJJbXBsLmpzPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPUxlYWtzVmlld2VyLmpzPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPVJlY2VudEJ1aWxkc0xvYWRlci5qcz48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz1VdGlsaXRpZXMuanM+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLSAg
ICA8ZGl2IGlkPW1haW4tcGFuZWxzPjwvZGl2PgotICAgIDxkaXYgaWQ9bWFpbi1zdGF0dXMtYmFy
IGNsYXNzPXN0YXR1cy1iYXI+Ci0gICAgICAgIDxkaXYgaWQ9bG9hZGluZy1pbmRpY2F0b3IgY2xh
c3M9aGlkZGVuPgotICAgICAgICAgICAgPGltZyBpZD1zcGlubmVyIHNyYz0iaHR0cHM6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8hc3ZuL2JjLzgwNTY1L3RydW5rL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW1hZ2VzL3NwaW5uZXIuZ2lmIj4KLSAgICAgICAg
ICAgIDxzcGFuIGlkPWxvYWRpbmctaW5kaWNhdG9yLWxhYmVsPkxvYWRpbmcmaGVsbGlwOzwvc3Bh
bj4KLSAgICAgICAgPC9kaXY+Ci0gICAgPC9kaXY+Ci0gICAgPGRpdiBpZD11cmwtcHJvbXB0LWNv
bnRhaW5lciBjbGFzcz1oaWRkZW4+Ci0gICAgICAgIDxkaXYgaWQ9dXJsLXByb21wdD4KLSAgICAg
ICAgICAgIDxwPkVudGVyIHRoZSBVUkwgb2YgYSBidWlsZCByZXN1bHRzIHBhZ2Ugb3IgbGVha3Mg
ZmlsZTo8L3A+Ci0gICAgICAgICAgICA8aW5wdXQgaWQ9dXJsIHR5cGU9dXJsPjxidXR0b24gb25j
bGljaz0nTGVha3NWaWV3ZXIudXJsUHJvbXB0QnV0dG9uQ2xpY2tlZChldmVudCknPkZldGNoIGxl
YWtzPC9idXR0b24+Ci0gICAgICAgICAgICA8cD5PciBjaG9vc2UgYSByZWNlbnQgYnVpbGQ6PC9w
PgotICAgICAgICAgICAgPGRpdiBpZD1yZWNlbnQtYnVpbGRzLWNvbnRhaW5lcj4KLSAgICAgICAg
ICAgICAgICA8cCBpZD1yZWNlbnQtYnVpbGRzLWxvYWRpbmctaW5kaWNhdG9yPkxvYWRpbmcgYnVp
bGRzJmhlbGxpcDs8L3A+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgPC9kaXY+Ci0gICAg
PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi5p
Y28KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2Zhdmljb24uaWNvCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvZmF2aWNvbi5pY28JKG5vbmV4aXN0ZW50KQpAQCAt
MSArMCwwIEBACi0AAAEAAQAgIBAAAQAEAOgCAAAWAAAAKAAAACAAAABAAAAAAQAEAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAB0uHgApLCkAQkVDADFOMgA+YT8AWVxaAD5wPwBjgGMAcntzAI6ZjwCs
sa0AwcXBANPW1ADd4N4A/P/9AAAAAAD//u7u7u7rVe7u7u7u7v///u7u7u7uUlVS3u7u7u7u7/7u
7u7u6CUiJS7u7u7u7u7u7u7u7tFV7rJb7u7u7u7u7u7u7u5RK+7lVe7u7u7u7u7u7ryXEi7a6FXu
7u7u7u7u7pEUNxIuxepV7u7u7u7u7ugRQwMSLO7lVe7u7u7u7u6hBmZkEVju0lnu7u7u7u7uIWRm
YBIiWCUe7u7u7u7u7BBGZAABFVVRru7u7u7u7uoQZkAzFSIRGO7u7u7u7u7oEGZkRhoxJTnu7u7u
7u7u6hFmZEM2fu7Enu7u7u7u7uwhNmZgK+7u7Unu7u7u7u7uURBkAL7u7u60vu7u7u7u7qIRERSe
7u7u5N7u7u7u7u7qIhGNSe7u7pfu7u7u7u7u7uqu7rau7u567u7u7u7u7u7u7u7qSZqqTu7u7u7u
7u7u7u7u7qd3REnu7u7u7u7u7u7u7u7u7uxEnu7u7u7u7u7u7u7u7u7u1Enu7u7u7u7u7u7u7u7u
7u1Enu7u7u7u7u7u7u7u7u7u1Efu7u5e7u7u7u7u7u7u7u1znu6iXe7u7u7u7u7u7u7u1EjVWu7u
7u7u7u7u7u7u7u1wWu7u7u7u7u7u7u7u7u7lW+7u7u7u7u7u7u7u7u7pJd7u7u/+7u7u7u7u7u7u
hb7u7u7v/+7u7u7u7u7u7t7u7u7v/+AAAA+AAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAHAAAAHClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2dhcmRlbi1vLW1hdGljLmh0bWwJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCShub25leGlzdGVu
dCkKQEAgLTEsNzAgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotVGhlIGZhdmljb25zIGFy
ZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlzIHRoZSB3ZWJzaXRlIG9m
IE1hcmsKLUphbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4KLS0tPgot
PGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IlgtV2ViS2l0LUNTUCIgY29udGVudD0i
ZGVmYXVsdC1zcmMgJ25vbmUnOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzY3JpcHQtc3JjICdzZWxmJyBmaWxlOiBodHRwczovL3dlYmtpdC5vcmc7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2Fm
ZS1pbmxpbmUnIGZpbGU6IGh0dHBzOi8vd2Via2l0Lm9yZzsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW1nLXNyYyAnc2VsZicgaHR0cHM6Ly93ZWJraXQub3JnIGh0
dHBzOi8vYnVpbGQud2Via2l0Lm9yZzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVkaWEtc3JjICdzZWxmJyBodHRwczovL2J1aWxkLndlYmtpdC5vcmc7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLXNyYyAnc2VsZicgaHR0
cHM6Ly9idWlsZC53ZWJraXQub3JnIGh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnOwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0LXNyYyAnc2VsZicgaHR0
cHM6Ly90cmFjLndlYmtpdC5vcmcgaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnIj4KLTx0aXRsZT5H
YXJkZW4tTy1NYXRpYzwvdGl0bGU+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBz
Oi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5dWkvMS44LjE1L3RoZW1lcy9iYXNlL2pxdWVy
eS11aS5taW4uY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL2NvbW1v
bi5jc3MiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvb25lYmFyLmNzcyI+
Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9mYWlsdXJlcy5jc3MiPgotPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcmVzdWx0cy5jc3MiPgotPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvbm90aWZpY2F0aW9ucy5jc3MiPgotPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcGVyZi5jc3MiPgotPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJzdHlsZXMvcGl4ZWx6b29tZXIuY3NzIj4KLTwvaGVhZD4KLTxib2R5PgotPHNj
cmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVyeS0xLjYu
Mi5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4
L2xpYnMvanF1ZXJ5dWkvMS44LjE1L3VpL2pxdWVyeS11aS5taW4uanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0
cy9jb25maWcuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
YnVpbGRlcnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0cy91aS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0
cy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL2ZhaWx1cmVzLmpzIj48L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpL25vdGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0Pgot
PHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcGVyZi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0cy91aS9yZXN1bHRzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2Nv
bnRyb2xsZXJzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3BpeGVsem9vbWVy
LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2dhcmRlbi1vLW1hdGljLmpzIj48
L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9nYXJkZW4tby1tYXRpYy5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1z
dHlsZQojIyAtMSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2VzL2Zhdmljb24tZ3JlZW4ucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1ncmVlbi5wbmcJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2aWNvbi1ncmVlbi5wbmcJKG5vbmV4
aXN0ZW50KQpAQCAtMSw1ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAABAAAAAQCAYAAAAf
8/9hAAACjUlEQVR4AaSTQ4OdMRSG+zvuh0xt29jUumPbtm3btm3bNmrb5tvU9iLOc3xmAfiv8d2F
SveuuQot7VvtZVs2nxCrX/1AWLv8gbB66Qlh5VL7I2WL5v5SgFLndlHplg2XzVqkkToZgYKT6e9G
8kQ4dKqPYU8uubwnm4j+UADVKiretO5h0IAjKs8VIn4qBK4Dlu/G2335uQL4dllhTTz3cEM8J/qV
ALmWzXPEG9ZdovC7jzZ9+rDo0YFJlxbM6DCnw7pbF2Vn8uDdZoHlEeyl5WHsnE8CpBvWORg1Sr7T
TOF3oFGnOgzaVWHQpgLjNlU0XKiAQ6chyqkQhex9WBDIOnwSIFa7/ETyZDhiJ4Nh0a0Nww41Ci0q
w7CVjhZlNF2sBgBcfngB0cO+iB/whYgXe+KTgINlCx4Xn8qEU58JTDs1qCVFmLg9AqNmVTReqAIA
vHz1AtFDfnBo1kbBZDJ4R+bxJwF78snjwpMZcOwxglOPKe49uwsAuPXkxic4ot8LxtWysG/QROFk
EnibLwVkkxOJI8GIGfOHWasaPLut8fD5fQDAq9evENHrAf1KSZhQAZF97ojp9ASxYj67sD2Nd1Ar
OoSyUzmwblaDcYMi3NvNMX1zDNH9PtCrkIBBuRTMKuVQNpOBI7G7QSyZz0HcEMvNWUlT49ligpIT
WbCsU4JpjRyMqqRhWE7HO1gWpdPpcKzSBm8suESMmTlfFdLSYFZUxId56Nqgj3IqJKrPE/Z1GrCr
UUMUdaGMwvaVGuD0BA8pLPrDUp7tw4oSV+ayMGkPYno8kTsai9yRWER0uuJQ5HbwBoLLxIgR/WUz
EWd2LnFg7IkNc4I3FbzZZ7kCqc9AG28Dca18jjTWzEQRBgBn0KzlfT/JxAAAAABJRU5ErkJgggpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMv
ZmF2aWNvbi1yZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvZmF2
aWNvbi1yZWQucG5nCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW1hZ2Vz
L2Zhdmljb24tcmVkLnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDUgKzAsMCBAQAotiVBORw0KLRoK
LQAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAItSURBVHgBpZMDcN8xFMdfbdt2D7Nt295h3s6c
bW+H2cZpts3att0meWny96849XsX5/t5oRHnHLqidgC2e00Icj6fIy5GRE+RQKQikS4jw+uOey+n
dwotILtWz+DIT9QbmXuZh4SCqb29ur+mGhoSE8G4oboQka1zP3zrXjtAy85VwoyXmt39bazDw4AV
ZAOKJGXs5Q/G3gFQk5AITSn/65GxJX6nH97TAZq3rwxGxPctnv7eNuHh0PLxGUhZbzoLUnVblgMg
B/NBo6E6Lh7qEn8XMMRBoeceZxiDEGN0YYOxhd4soFwYtEKKwCiHhpePwT4yGritizclZCEIqQCU
0kUWYWLZeZkqIzIBoKgAIGHAWhCaM9LBITIWCCGLDAE+Zo6OQHMzpVEXUStpZETd35SWDmaOzkAJ
9dEBRAM441qjLiJJidNvgagTMgQQiVICBisg+c1lFeK0A6RRF7Hxw0uoe3hDFx1FaeoXCA1lZTJo
vuEKLa5Uxf0DE+9A3WRZ2i/fALZT56mMTPYxBIvAYCj5811u+4oOQAi52lJeUFAZHwfWw8fpIBUn
9kP5iX0qo2w7jp8IpXF/oDI3tUAArioeUsKiETOQsUuOMb1tnMQpN2VmqA5MjlsEBatSmTDnfH5W
j4hLhr9KutfuKf+ZNWAGQzxh6ezt5RLbHSwcnUAON1VWQPHvr1CZlyaeMq4b+Sa53VPW6evkniGI
OB+Z/ExM+ZkQr496m9r+M3VFreaiskYeKpVyAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9wYXJ0eXRpbWUuZ2lmCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbWFnZXMvcGFydHl0aW1lLmdpZgkocmV2aXNp
b24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2ltYWdlcy9wYXJ0eXRpbWUuZ2lmCShub25l
eGlzdGVudCkKQEAgLTEsMjE1ICswLDAgQEAKLUdJRjg5YSwBaAHVPwATaJygVZ6j1PMzo1bjk5/m
LCa2ibJqu++VstD63AhgjJ6nDRfsbFP3lGoQT3LSsdFgCi1e0/f/zI/HYQkR408t76oPollljddY
bLLb9tf0WFhxL4Wpe8z4yN31+8eiqEcm0NHcSJPL+7LKq9snhSt05+dNYM6OldWhsZMO89TZT6vV
qpxlMIzN8rPyU7brFTBa6CFA/PPRF3U5JAwgXF4kdJXA85PS8pbv2bPw1e/p3JPfd57w7v/++e76
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
UemUCi3l8YSsAwcg+zthl5GBbCg7Rapp9Zrddr/hSt5AuBmY6CY0MyL4ycb0OuIICw0PERMziHL+
BugGNk58mnx4QP5U0DQSOz0/QUOLeE5+HvP2KnNyBPo0FMBEZWdpayt5IrYATBqhfHz2amyHiYtn
OxBqTvRin3rAfo2lp6nfangUcpqrubu9CRuxELAon8q/0dPRB4ssrdTh49F5en4QzuXz9ff5+/3/
AQYU2GbbwIFBAAA7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL2luZGV4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0
bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbmRleC5odG1sCShub25l
eGlzdGVudCkKQEAgLTEsNjEgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBt
ZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08IURPQ1RZUEUgaHRtbD4KLTxodG1s
PgotPGhlYWQ+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvVGVzdEZh
aWx1cmVzLmNzcyI+PC9saW5rPgotICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcv
YWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS42LjIubWluLmpzIj48L3NjcmlwdD4KLQotICAgIDxz
Y3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
InNjcmlwdHMvYmFzZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3Njcmlw
dD4KLQotICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvTmV3QnVnRm9ybS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9InNjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtLmpzIj48L3NjcmlwdD4KLQot
ICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0ic2NyaXB0cy9CdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
InNjcmlwdHMvQnVpbGRlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InNjcmlwdHMv
Rmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJz
Y3JpcHRzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3Jp
cHQgc3JjPSJzY3JpcHRzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzIj48L3NjcmlwdD4KLSAg
ICA8c2NyaXB0IHNyYz0ic2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvT1JXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJzY3JpcHRzL1BlcnNpc3RlbnRDYWNoZS5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9InNjcmlwdHMvVmlld0NvbnRyb2xsZXIuanMiPjwvc2NyaXB0PgotICAg
IDxzY3JpcHQgc3JjPSJzY3JpcHRzL1dlYktpdEJ1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0ic2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdD4KLSAgICAgICAgdmFyIHZpZXdDb250cm9sbGVyID0gbmV3IFZpZXdDb250cm9sbGVyKG5l
dyBXZWJLaXRCdWlsZGJvdCgpKTsKLSAgICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotPC9i
b2R5PgotPC9odG1sPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3JlYmFzZWxpbmUuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvcmViYXNlbGluZS5odG1sCShub25leGlzdGVudCkKQEAg
LTEsNDYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotPGh0bWw+Ci08aGVhZD4KLTx0
aXRsZT5HYXJkZW4tTy1NYXRpYyBSZWJhc2VsaW5lPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0ic3R5bGVzL21haW4uY3NzIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iaHR0cHM6Ly93ZWJraXQub3JnL2FqYXgvbGlicy9qcXVlcnl1aS9qcXVlcnktdWktMS44LjE1
LmNzcyI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcv
YWpheC9saWJzL2pxdWVyeS9qcXVlcnktMS42LjIubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeXVpLzEuOC4xNS91aS9qcXVl
cnktdWkubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2NvbmZpZy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHRzL25ldC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9j
aGVja291dC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9yZXN1bHRzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3VpLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL3VpL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlw
dHMvbW9kZWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJvbGxlcnMu
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29udHJvbGxlcnMvcmViYXNlbGlu
ZS5qcyI+PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
cnVuLXVuaXR0ZXN0cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5p
dHRlc3RzLmh0bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9ydW4tdW5p
dHRlc3RzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMDMgKzAsMCBAQAotPCFET0NUWVBFIGh0
bWw+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS0tPgotPGh0bWw+Ci08aGVhZD4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
Li4vLi4vLi4vLi4vLi4vU291cmNlL1RoaXJkUGFydHkvcXVuaXQvcXVuaXQvcXVuaXQuY3NzIj4K
LTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcvYWpheC9saWJzL2pxdWVyeS9qcXVlcnkt
MS42LjIubWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJodHRwczovL3dlYmtpdC5vcmcv
YWpheC9saWJzL2pxdWVyeXVpL2pxdWVyeS11aS0xLjguMTUubWluLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9Tb3VyY2UvVGhpcmRQYXJ0eS9xdW5pdC9xdW5pdC9x
dW5pdC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMSBpZD0icXVuaXQtaGVhZGVy
Ij5UZXN0RmFpbHVyZXMgSmF2YVNjcmlwdCBVbml0IFRlc3RzPC9oMT4KLTxoMiBpZD0icXVuaXQt
YmFubmVyIj48L2gyPgotPGRpdiBpZD0icXVuaXQtdGVzdHJ1bm5lci10b29sYmFyIj48L2Rpdj4K
LTxoMiBpZD0icXVuaXQtdXNlckFnZW50Ij48L2gyPgotPG9sIGlkPSJxdW5pdC10ZXN0cyI+PC9v
bD4KLQotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZXMvcmVzdWx0cy5jc3MiPgot
Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJz
Y3JpcHRzL2NvbmZpZy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9iYXNlX3Vu
aXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9uZXQuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvbmV0X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0ic2NyaXB0cy9UcmFjLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3Jp
cHRzL3RyYWNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1
Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2J1Z3ppbGxhX3VuaXR0
ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9idWlsZGVycy5qcyI+PC9z
Y3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9idWlsZGVyc191bml0dGVzdHMuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlw
dCBzcmM9InNjcmlwdHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQg
c3JjPSJzY3JpcHRzL3Jlc3VsdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
cmVzdWx0c191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWku
anMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvYWN0aW9ucy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcyI+PC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS9mYWlsdXJlcy5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ic2NyaXB0cy91aS9mYWlsdXJlc191bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
c2NyaXB0cy9jb250cm9sbGVycy5qcyI+PC9zY3JpcHQ+IDwhLS0gVGhpcyBzY3JpcHQgaXMgc2xp
Z2h0bHkgb2Ygb3JkZXIuIC0tPgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVzdWx0c191bml0
dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWlfdW5pdHRlc3RzLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL21vZGVsLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJzY3JpcHRzL21vZGVsX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0
IHNyYz0ic2NyaXB0cy91aS9ub3RpZmljYXRpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3Jj
PSJzY3JpcHRzL3VpL25vdGlmaWNhdGlvbnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJzY3JpcHRzL3VpL3BlcmYuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlw
dHMvdWkvcGVyZl91bml0dGVzdHMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMv
Y29udHJvbGxlcnNfdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4KLQotPCEtLSBGSVhNRTogV2Ugc2hv
dWxkIGhhdmUgdGVzdHMgZm9yIHRoZXNlIGZpbGVzISAtLT4KLTxzY3JpcHQgc3JjPSJzY3JpcHRz
L0J1Z3ppbGxhLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1dlYktpdEJ1Z3pp
bGxhLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMvVXRpbGl0aWVzLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL1V0aWxpdGllc191bml0dGVzdHMuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9OZXdCdWdGb3JtLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJzY3JpcHRzL05ld0J1Z0Zvcm1fdW5pdHRlc3RzLmpzIj48L3NjcmlwdD4K
LQotPHNjcmlwdCBzcmM9InNjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJzY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybV91bml0dGVzdHMuanMiPjwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0ic2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzIj48
L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRl
c3RzLmpzIj48L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9InNjcmlwdHMvRmxha3lUZXN0QnVnRm9y
bS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtX3Vu
aXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5b3V0
VGVzdERldGVjdG9yLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0ZsYWt5TGF5
b3V0VGVzdERldGVjdG9yX3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJz
Y3JpcHRzL0J1aWxkYm90LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxk
Ym90X3VuaXR0ZXN0cy5qcyI+PC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL0J1aWxk
ZXIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVpbGRlcl91bml0dGVzdHMu
anMiPjwvc2NyaXB0PgotCi08L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9CdWd6aWxsYS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9CdWd6aWxsYS5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvQnVnemlsbGEuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotdmFyIGJ1Z3ppbGxhID0gYnVnemlsbGEgfHwge307Ci0KLShmdW5jdGlvbigpIHsKLQotdmFy
IGtPcGVuU3RhdHVzZXMgPSB7Ci0gICAgVU5DT05GSVJNRUQ6IHRydWUsCi0gICAgTkVXOiB0cnVl
LAotICAgIEFTU0lHTkVEOiB0cnVlLAotICAgIFJFT1BFTkVEOiB0cnVlLAotfTsKLQotZnVuY3Rp
b24gY3JlYXRlRGV0YWNoZWRGcmFnbWVudChodG1sRnJhZ21lbnQpCi17Ci0gICAgLy8gU3RlcCAx
OiBDcmVhdGUgYSBkZXRhY2hlZCBEb2N1bWVudCB0byBwZXJmb3JtIHRoZSBwYXJzaW5nLgotICAg
IHZhciBkZXRhY2hlZERvY3VtZW50ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRN
TERvY3VtZW50KCk7Ci0KLSAgICAvLyBTdGVwIDI6IENyZWF0ZSBhIGRldGFjaGVkIEVsZW1lbnQg
YXNzb2NpYXRlZCB3aXRoIHRoZSBkZXRhY2hlZCBEb2N1bWVudC4KLSAgICB2YXIgY29udGFpbmVy
ID0gZGV0YWNoZWREb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIC8vIFN0ZXAg
MzogUHVsbCB0aGUgdHJpZ2dlci4KLSAgICBjb250YWluZXIuaW5uZXJIVE1MID0gaHRtbEZyYWdt
ZW50OwotICAgIHJldHVybiBjb250YWluZXI7Ci19Ci0KLXZhciBnX3NlYXJjaENhY2hlID0gbmV3
IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24ocXVlcnksIGNhbGxiYWNrKSB7Ci0gICAg
dmFyIHVybCA9IGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2J1Z2xpc3QuY2dpPycgKyAkLnBhcmFt
KHsKLSAgICAgICAgY3R5cGU6ICdyc3MnLAotICAgICAgICBvcmRlcjogJ2J1Z3MuYnVnX2lkIGRl
c2MnLAotICAgICAgICBxdWlja3NlYXJjaDogcXVlcnksCi0gICAgfSk7Ci0KLSAgICBuZXQuZ2V0
KHVybCwgZnVuY3Rpb24ocmVzcG9uc2VYTUwpIHsKLSAgICAgICAgdmFyIGVudHJpZXMgPSByZXNw
b25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZW50cnknKTsKLSAgICAgICAgdmFyIHJlc3Vs
dHMgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHsK
LSAgICAgICAgICAgIHZhciBodG1sRnJhZ21lbnQgPSBlbnRyeS5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgnc3VtbWFyeScpWzBdLnRleHRDb250ZW50OwotICAgICAgICAgICAgdmFyIGZyYWdtZW50ID0g
Y3JlYXRlRGV0YWNoZWRGcmFnbWVudChodG1sRnJhZ21lbnQpOwotICAgICAgICAgICAgdmFyIHN0
YXR1c1JvdyA9IGZyYWdtZW50LnF1ZXJ5U2VsZWN0b3IoJ3RyLmJ6X2ZlZWRfYnVnX3N0YXR1cycp
OwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0aXRsZTogZW50cnkuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQsCi0gICAgICAgICAgICAg
ICAgdXJsOiBlbnRyeS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWQnKVswXS50ZXh0Q29udGVudCwK
LSAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1c1Jvdy5jZWxsc1sxXS50ZXh0Q29udGVudCwK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjayhyZXN1bHRzKTsK
LSAgICB9KTsKLX0pOwotCi1idWd6aWxsYS5idWdVUkwgPSBmdW5jdGlvbihidWdOdW1iZXIpCi17
Ci0gICAgcmV0dXJuIGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL3Nob3dfYnVnLmNnaT9pZD0nICsg
YnVnTnVtYmVyOwotfTsKLQotYnVnemlsbGEucXVpY2tTZWFyY2ggPSBmdW5jdGlvbihxdWVyeSwg
Y2FsbGJhY2spCi17Ci0gICAgZ19zZWFyY2hDYWNoZS5nZXQocXVlcnksIGNhbGxiYWNrKTsKLX07
Ci0KLWJ1Z3ppbGxhLmlzT3BlblN0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1cykKLXsKLSAgICByZXR1
cm4gc3RhdHVzIGluIGtPcGVuU3RhdHVzZXM7Ci19OwotCi0vLyBUaGlzIHZhbHVlIGlzIGJ1aWx0
LWluIHRvIGFsbCBCdWd6aWxsYSBpbnN0YWxsYXRpb25zLiBTZWUgPGh0dHA6Ly93ZWJraXQub3Jn
L2IvNjE2NjA+LgotYnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCA9IDI1NTsKLQotfSko
KTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyNjkwNDIp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdC5qcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBCdWlsZGJvdChiYXNlVVJMKSB7
Ci0gICAgdGhpcy5iYXNlVVJMID0gYmFzZVVSTDsKLSAgICB0aGlzLl9jYWNoZSA9IHt9OwotfQot
Ci1CdWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0gICAgX2J1aWxkZXJzOiB7fSwKLSAgICBfcmVzdWx0
c0RpcmVjdG9yeTogJ3Jlc3VsdHMvJywKLQotICAgIGJ1aWxkVVJMOiBmdW5jdGlvbihidWlsZGVy
TmFtZSwgYnVpbGROYW1lKSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAnYnVpbGRl
cnMvJyArIGJ1aWxkZXJOYW1lICsgJy9idWlsZHMvJyArIGJ1aWxkTmFtZTsKLSAgICB9LAotCi0g
ICAgYnVpbGRlck5hbWVkOiBmdW5jdGlvbihuYW1lKSB7Ci0gICAgICAgIGlmICghKG5hbWUgaW4g
dGhpcy5fYnVpbGRlcnMpKQotICAgICAgICAgICAgdGhpcy5fYnVpbGRlcnNbbmFtZV0gPSBuZXcg
QnVpbGRlcihuYW1lLCB0aGlzKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2J1aWxkZXJzW25hbWVd
OwotICAgIH0sCi0KLSAgICBnZXRUZXN0ZXJzOiBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAg
ICB2YXIgY2FjaGVLZXkgPSAnZ2V0VGVzdGVycyc7Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0
aGlzLl9jYWNoZSkgewotICAgICAgICAgICAgY2FsbGJhY2sodGhpcy5fYnVpbGRlcnNGb3JOYW1l
cyh0aGlzLl9jYWNoZVtjYWNoZUtleV0pKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2UodGhpcy5i
YXNlVVJMICsgdGhpcy5fcmVzdWx0c0RpcmVjdG9yeSwgZnVuY3Rpb24oeGhyKSB7Ci0gICAgICAg
ICAgICB2YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAg
ICAgIHJvb3QuaW5uZXJIVE1MID0geGhyLnJlc3BvbnNlVGV4dDsKLSAgICAgICAgICAgIHZhciBu
YW1lcyA9IEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3Rk
OmZpcnN0LWNoaWxkID4gYSA+IGInKSwgZnVuY3Rpb24oZWxlbSkgewotICAgICAgICAgICAgICAg
IHJldHVybiBlbGVtLmlubmVyVGV4dC5yZXBsYWNlKC9cLyQvLCAnJyk7Ci0gICAgICAgICAgICB9
KTsKLQotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gbmFtZXM7Ci0gICAgICAg
ICAgICBjYWxsYmFjayhzZWxmLl9idWlsZGVyc0Zvck5hbWVzKG5hbWVzKSk7Ci0gICAgICAgIH0p
OwotICAgIH0sCi0KLSAgICAvLyBSZXR1cm5zIGFuIG9iamVjdCB3aXRoIGF0IGxlYXN0IHRoZSBm
b2xsb3dpbmcgcHJvcGVydGllczoKLSAgICAvLyAgIHJldmlzaW9uOiBzb3VyY2UgcmV2aXNpb24g
bnVtYmVyIGZvciB0aGlzIGJ1aWxkIChpbnRlZ2VyKQotICAgIC8vICAgYnVpbGROdW1iZXI6IG51
bWJlciBvZiB0aGlzIGJ1aWxkIChpbnRlZ2VyKQotICAgIHBhcnNlQnVpbGROYW1lOiBmdW5jdGlv
bihidWlsZE5hbWUpIHsKLSAgICAgICAgdGhyb3cgIkRlcml2ZWQgY2xhc3NlcyBtdXN0IGltcGxl
bWVudCI7Ci0gICAgfSwKLQotICAgIHJlc3VsdHNEaXJlY3RvcnlVUkw6IGZ1bmN0aW9uKGJ1aWxk
ZXJOYW1lLCBidWlsZE5hbWUpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArIHRoaXMu
X3Jlc3VsdHNEaXJlY3RvcnkgKyBlbmNvZGVVUklDb21wb25lbnQoYnVpbGRlck5hbWUpICsgJy8n
ICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkTmFtZSkgKyAnLyc7Ci0gICAgfSwKLQotICAgIF9i
dWlsZGVyc0Zvck5hbWVzOiBmdW5jdGlvbihuYW1lcykgewotICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7Ci0gICAgICAgIHJldHVybiBuYW1lcy5tYXAoZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gc2Vs
Zi5idWlsZGVyTmFtZWQobmFtZSkgfSk7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9CdWlsZGJvdF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvQnVpbGRib3RfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWlsZGJvdF91bml0dGVzdHMuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uKCkgewotCi1tb2R1
bGUoJ0J1aWxkYm90Jyk7Ci0KLXRlc3QoJ3Jlc3VsdHNEaXJlY3RvcnlVUkwgaXMgVVJJLWVuY29k
ZWQnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYnVpbGRib3QgPSBuZXcgQnVpbGRib3QoJ2h0
dHA6Ly9idWlsZC5leGFtcGxlLmNvbS8nKTsKLSAgICBlcXVhbChidWlsZGJvdC5yZXN1bHRzRGly
ZWN0b3J5VVJMKCdXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpJywgJ3IxMCAoNSknKSwgJ2h0dHA6
Ly9idWlsZC5leGFtcGxlLmNvbS9yZXN1bHRzL1dpbmRvd3MlMjA3JTIwUmVsZWFzZSUyMChUZXN0
cykvcjEwJTIwKDUpLycpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9CdWlsZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1
aWxkZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1
aWxkZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1
bmN0aW9uIEJ1aWxkZXIobmFtZSwgYnVpbGRib3QpIHsKLSAgICB0aGlzLm5hbWUgPSBuYW1lOwot
ICAgIHRoaXMuYnVpbGRib3QgPSBidWlsZGJvdDsKLSAgICB0aGlzLl9jYWNoZSA9IHt9OwotfQot
Ci1CdWlsZGVyLnByb3RvdHlwZSA9IHsKLSAgICBidWlsZFVSTDogZnVuY3Rpb24oYnVpbGROYW1l
KSB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LmJ1aWxkVVJMKHRoaXMubmFtZSwgYnVp
bGROYW1lKTsKLSAgICB9LAotCi0gICAgZmFpbHVyZURpYWdub3Npc1RleHRBbmRVUkw6IGZ1bmN0
aW9uKGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpIHsKLSAgICAgICAgdmFyIHVybFN0
ZW0gPSB0aGlzLnJlc3VsdHNEaXJlY3RvcnlVUkwoYnVpbGROYW1lKSArIHRlc3ROYW1lLnJlcGxh
Y2UoL1wuW14uXSskLywgJycpOwotICAgICAgICB2YXIgZGlhZ25vc3RpY0luZm8gPSB7Ci0gICAg
ICAgICAgICBmYWlsOiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3ByZXR0eSBkaWZmJywKLSAg
ICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0eS1kaWZmLmh0bWwnLAotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIGZsYWt5OiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ3By
ZXR0eSBkaWZmIChmbGFreSknLAotICAgICAgICAgICAgICAgIHVybDogdXJsU3RlbSArICctcHJl
dHR5LWRpZmYuaHRtbCcsCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgdGltZW91dDogewot
ICAgICAgICAgICAgICAgIHRleHQ6ICd0aW1lZCBvdXQnLAotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIGNyYXNoOiB7Ci0gICAgICAgICAgICAgICAgdGV4dDogJ2NyYXNoIGxvZycsCi0gICAg
ICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1jcmFzaC1sb2cudHh0JywKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAnd2VicHJvY2VzcyBjcmFzaCc6IHsKLSAgICAgICAgICAgICAgICB0
ZXh0OiAnd2ViIHByb2Nlc3MgY3Jhc2ggbG9nJywKLSAgICAgICAgICAgICAgICB1cmw6IHVybFN0
ZW0gKyAnLWNyYXNoLWxvZy50eHQnLAotICAgICAgICAgICAgfSwKLSAgICAgICAgfTsKLQotICAg
ICAgICByZXR1cm4gZGlhZ25vc3RpY0luZm9bdGVzdFJlc3VsdC5mYWlsdXJlVHlwZV07Ci0gICAg
fSwKLQotICAgIGdldEJ1aWxkTmFtZXM6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7Ci0gICAgICAgIHRo
aXMuX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeSh0aGlzLmJ1aWxkYm90LmJhc2VV
UkwgKyAncmVzdWx0cy8nICsgdGhpcy5uYW1lLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIGdl
dE1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcjogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAg
ICAgICAgdmFyIGNhY2hlS2V5ID0gJ2dldE1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcic7
Ci0gICAgICAgIGlmIChjYWNoZUtleSBpbiB0aGlzLl9jYWNoZSkgewotICAgICAgICAgICAgY2Fs
bGJhY2sodGhpcy5fY2FjaGVbY2FjaGVLZXldKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZ2V0UmVzb3VyY2Uoc2Vs
Zi5idWlsZGJvdC5iYXNlVVJMICsgJ2pzb24vYnVpbGRlcnMvJyArIHNlbGYubmFtZSwgZnVuY3Rp
b24oeGhyKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2UoeGhyLnJlc3BvbnNl
VGV4dCk7Ci0KLSAgICAgICAgICAgIHZhciBjdXJyZW50QnVpbGRzID0ge307Ci0gICAgICAgICAg
ICBpZiAoJ2N1cnJlbnRCdWlsZHMnIGluIGRhdGEpCi0gICAgICAgICAgICAgICAgZGF0YS5jdXJy
ZW50QnVpbGRzLmZvckVhY2goZnVuY3Rpb24oYnVpbGROdW1iZXIpIHsgY3VycmVudEJ1aWxkc1ti
dWlsZE51bWJlcl0gPSB0cnVlIH0pOwotCi0gICAgICAgICAgICBmb3IgKHZhciBpID0gZGF0YS5j
YWNoZWRCdWlsZHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZGF0YS5jYWNoZWRCdWlsZHNbaV0gaW4gY3VycmVudEJ1aWxkcykKLSAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0g
PSBkYXRhLmNhY2hlZEJ1aWxkc1tpXTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhLmNh
Y2hlZEJ1aWxkc1tpXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICBzZWxmLl9jYWNoZVtjYWNoZUtleV0gPSAtMTsKLSAgICAgICAgICAgIGNh
bGxiYWNrKHNlbGYuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0
aW9uKHhocikgewotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gLTE7Ci0gICAg
ICAgICAgICBjYWxsYmFjayhzZWxmLl9jYWNoZVtjYWNoZUtleV0pOwotICAgICAgICB9KTsKLSAg
ICB9LAotCi0gICAgZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHM6IGZ1bmN0aW9uKGJ1aWxkTnVtYmVy
LCBjYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSB0aGlzLm5hbWUgKyAnX2dldE51
bWJlck9mRmFpbGluZ1Rlc3RzXycgKyBidWlsZE51bWJlcjsKLSAgICAgICAgY29uc3QgY3VycmVu
dENhY2hlZERhdGFWZXJzaW9uID0gMzsKLSAgICAgICAgaWYgKFBlcnNpc3RlbnRDYWNoZS5jb250
YWlucyhjYWNoZUtleSkpIHsKLSAgICAgICAgICAgIHZhciBjYWNoZWREYXRhID0gUGVyc2lzdGVu
dENhY2hlLmdldChjYWNoZUtleSk7Ci0gICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS52ZXJzaW9u
ID09PSBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24pIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ayhjYWNoZWREYXRhLmZhaWx1cmVDb3VudCwgY2FjaGVkRGF0YS50b29NYW55RmFpbHVyZXMpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciByZXN1bHQgPSB7IGZhaWx1cmVDb3VudDogLTEsIHRvb01hbnlGYWlsdXJlczogZmFs
c2UsIHZlcnNpb246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwotCi0gICAgICAgIHZhciBz
ZWxmID0gdGhpczsKLSAgICAgICAgc2VsZi5fZ2V0QnVpbGRKU09OKGJ1aWxkTnVtYmVyLCBmdW5j
dGlvbihkYXRhKSB7Ci0gICAgICAgICAgICB2YXIgbGF5b3V0VGVzdFN0ZXAgPSBkYXRhLnN0ZXBz
LmZpbmRGaXJzdChmdW5jdGlvbihzdGVwKSB7IHJldHVybiBzdGVwLm5hbWUgPT09ICdsYXlvdXQt
dGVzdCc7IH0pOwotICAgICAgICAgICAgaWYgKCFsYXlvdXRUZXN0U3RlcCkgewotICAgICAgICAg
ICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVzdWx0LnRvb01hbnlGYWlsdXJl
cyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBpZiAoISgnaXNGaW5pc2hlZCcgaW4gbGF5b3V0VGVzdFN0ZXApKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gcnVuLXdlYmtpdC10ZXN0cyBuZXZlciBldmVuIHJhbiwgb3IgZGlkbid0IGZpbmlzaCBy
dW5uaW5nLgotICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJl
c3VsdCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0LmZhaWx1cmVDb3VudCwgcmVz
dWx0LnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICBpZiAoISgncmVzdWx0cycgaW4gbGF5b3V0VGVzdFN0ZXApIHx8
IGxheW91dFRlc3RTdGVwLnJlc3VsdHNbMF0gPT09IDApIHsKLSAgICAgICAgICAgICAgICBpZiAo
ISgndGltZXMnIGluIGxheW91dFRlc3RTdGVwKSB8fCBsYXlvdXRUZXN0U3RlcC50aW1lcy5sZW5n
dGggPCAyIHx8IGxheW91dFRlc3RTdGVwLnRpbWVzWzFdIC0gbGF5b3V0VGVzdFN0ZXAudGltZXNb
MF0gPCBzZWxmLl9taW5pbXVtU3VjY2Vzc2Z1bExheW91dFRlc3RTdGVwUnVuVGltZSkgewotICAg
ICAgICAgICAgICAgICAgICAvLyBFaXRoZXIgc29tZXRoaW5nIGNhdXNlZCB0aGUgc3RhcnQvc3Rv
cCB0aW1lcyBub3QgdG8gYmUgcmVjb3JkZWQsIG9yCi0gICAgICAgICAgICAgICAgICAgIC8vIHJ1
bi13ZWJraXQtdGVzdHMgcmFuIHNvIHF1aWNrbHkgdGhhdCB3ZSBjYW4ndCBiZWxpZXZlIHRoZXJl
IHdhc24ndCBhbiBlcnJvcgotICAgICAgICAgICAgICAgICAgICAvLyAoZS5nLiwgYSBidWcgaW4g
dGhlIHNjcmlwdCB0aGF0IG1hZGUgaXQgbm90IGZpbmQgYW55IHRlc3RzIHRvIHJ1bikuCi0gICAg
ICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50
b29NYW55RmFpbHVyZXMpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KLSAgICAgICAg
ICAgICAgICByZXN1bHQuZmFpbHVyZUNvdW50ID0gMDsKLSAgICAgICAgICAgICAgICBQZXJzaXN0
ZW50Q2FjaGUuc2V0KGNhY2hlS2V5LCByZXN1bHQpOwotICAgICAgICAgICAgICAgIGNhbGxiYWNr
KHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGxheW91dFRl
c3RTdGVwLnJlc3VsdHNbMF0gPT09IDQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGJ1aWxk
IHN0ZXAgd2FzIGludGVycnVwdGVkIChwZXJoYXBzIGR1ZSB0byB0aGUgYnVpbGQgc2xhdmUgcmVz
dGFydGluZykuCi0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwg
cmVzdWx0KTsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQuZmFpbHVyZUNvdW50LCBy
ZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdChsYXlvdXRUZXN0
U3RlcC5yZXN1bHRzWzFdWzBdKSkKLSAgICAgICAgICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1
cmVzID0gdHJ1ZTsKLQotICAgICAgICAgICAgcmVzdWx0LmZhaWx1cmVDb3VudCA9IGxheW91dFRl
c3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKGZ1bmN0aW9uKHN1bSwgb3V0cHV0TGluZSkgewotICAg
ICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKylccy8uZXhlYyhvdXRwdXRMaW5lKTsKLSAg
ICAgICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vt
OwotICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IGxlYWtzLCBuZXcgdGVzdHMsIG9yIHBh
c3NlcyBhcyBmYWlsdXJlcy4KLSAgICAgICAgICAgICAgICBpZiAob3V0cHV0TGluZS5jb250YWlu
cygnbGVhaycpIHx8IG91dHB1dExpbmUuY29udGFpbnMoJ3dlcmUgbmV3JykgfHwgb3V0cHV0TGlu
ZS5jb250YWlucygnbmV3IHBhc3NlcycpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3Vt
OwotICAgICAgICAgICAgICAgIHJldHVybiBzdW0gKyBwYXJzZUludChtYXRjaFsxXSwgMTApOwot
ICAgICAgICAgICAgfSwgMCk7Ci0KLSAgICAgICAgICAgIGlmICghcmVzdWx0LmZhaWx1cmVDb3Vu
dCkgewotICAgICAgICAgICAgICAgIC8vIHJ1bi13ZWJraXQtdGVzdHMgZXhpdGVkIHdpdGggYSBu
b24temVybyBleGl0IHN0YXR1cywgYnV0IHdlCi0gICAgICAgICAgICAgICAgLy8gZGlkbid0IGZp
bmQgYW55IG91dHB1dCBhYm91dCB0aGUgbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cy4KLSAgICAgICAg
ICAgICAgICAvLyBTb21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4sIHJ1bi13ZWJr
aXQtdGVzdHMgdGltZWQKLSAgICAgICAgICAgICAgICAvLyBvdXQgYW5kIHdhcyBraWxsZWQgYnkg
YnVpbGRib3QpLgotICAgICAgICAgICAgICAgIHJlc3VsdC5mYWlsdXJlQ291bnQgPSAtMTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwg
cmVzdWx0KTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdC5mYWlsdXJlQ291bnQsIHJlc3Vs
dC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgZ2V0T2xkQnVp
bGROYW1lczogZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgdGhpcy5fZ2V0QnVpbGROYW1l
c0Zyb21SZXN1bHRzRGlyZWN0b3J5KHRoaXMuYnVpbGRib3QuYmFzZVVSTCArICdvbGQtcmVzdWx0
cy8nICsgdGhpcy5uYW1lLCBjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIHJlc3VsdHNEaXJlY3Rv
cnlVUkw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJv
dC5yZXN1bHRzRGlyZWN0b3J5VVJMKHRoaXMubmFtZSwgYnVpbGROYW1lKTsKLSAgICB9LAotCi0g
ICAgcmVzdWx0c1BhZ2VVUkw6IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4g
dGhpcy5yZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkTmFtZSkgKyAncmVzdWx0cy5odG1sJzsKLSAg
ICB9LAotCi0gICAgX2dldEJ1aWxkSlNPTjogZnVuY3Rpb24oYnVpbGROdW1iZXIsIGNhbGxiYWNr
KSB7Ci0gICAgICAgIHZhciBjYWNoZUtleSA9ICdnZXRCdWlsZEpTT05fJyArIGJ1aWxkTnVtYmVy
OwotICAgICAgICBpZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNh
bGxiYWNrKHRoaXMuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIH0KLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIGdldFJlc291cmNlKHNl
bGYuYnVpbGRib3QuYmFzZVVSTCArICdqc29uL2J1aWxkZXJzLycgKyBzZWxmLm5hbWUgKyAnL2J1
aWxkcy8nICsgYnVpbGROdW1iZXIsIGZ1bmN0aW9uKHhocikgewotICAgICAgICAgICAgdmFyIGRh
dGEgPSBKU09OLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOwotICAgICAgICAgICAgc2VsZi5fY2Fj
aGVbY2FjaGVLZXldID0gZGF0YTsKLSAgICAgICAgICAgIGNhbGxiYWNrKGRhdGEpOwotICAgICAg
ICB9KTsKLSAgICB9LAotCi0gICAgX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeTog
ZnVuY3Rpb24oZGlyZWN0b3J5VVJMLCBjYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkg
PSAnX2dldEJ1aWxkTmFtZXNGcm9tUmVzdWx0c0RpcmVjdG9yeS4nICsgZGlyZWN0b3J5VVJMOwot
ICAgICAgICBpZiAoY2FjaGVLZXkgaW4gdGhpcy5fY2FjaGUpIHsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHRoaXMuX2NhY2hlW2NhY2hlS2V5XSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KLQotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgZnVuY3Rpb24gYnVpbGRO
YW1lc0Zyb21EaXJlY3RvcnlYSFIoeGhyKSB7Ci0gICAgICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgICAgIHJvb3QuaW5uZXJIVE1MID0g
eGhyLnJlc3BvbnNlVGV4dDsKLQotICAgICAgICAgICAgdmFyIGJ1aWxkTmFtZXMgPSBBcnJheS5w
cm90b3R5cGUubWFwLmNhbGwocm9vdC5xdWVyeVNlbGVjdG9yQWxsKCd0ZDpmaXJzdC1jaGlsZCA+
IGEgPiBiJyksIGZ1bmN0aW9uKGVsZW0pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZWxlbS5p
bm5lclRleHQucmVwbGFjZSgvXC8kLywgJycpOwotICAgICAgICAgICAgfSkuZmlsdGVyKGZ1bmN0
aW9uKGZpbGVuYW1lKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnVpbGRib3QucGFy
c2VCdWlsZE5hbWUoZmlsZW5hbWUpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBidWls
ZE5hbWVzLnJldmVyc2UoKTsKLQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxkTmFtZXM7Ci0gICAg
ICAgIH0KLQotICAgICAgICBnZXRSZXNvdXJjZShkaXJlY3RvcnlVUkwsIGZ1bmN0aW9uKHhocikg
ewotICAgICAgICAgICAgdmFyIGJ1aWxkTmFtZXMgPSBidWlsZE5hbWVzRnJvbURpcmVjdG9yeVhI
Uih4aHIpOwotICAgICAgICAgICAgc2VsZi5fY2FjaGVbY2FjaGVLZXldID0gYnVpbGROYW1lczsK
LSAgICAgICAgICAgIGNhbGxiYWNrKGJ1aWxkTmFtZXMpOwotICAgICAgICB9KTsKLSAgICB9LAot
Ci0gICAgLy8gQW55IHN1Y2Nlc3NmdWwgcnVucyBvZiBydW4td2Via2l0LXRlc3RzIHRoYXQgdG9v
ayBsZXNzIHRoYW4gdGhpcyBudW1iZXIgb2Ygc2Vjb25kcyBhcmUKLSAgICAvLyBhc3N1bWVkIHRv
IGJlIGVycm9ycy4KLSAgICBfbWluaW11bVN1Y2Nlc3NmdWxMYXlvdXRUZXN0U3RlcFJ1blRpbWU6
IDIwLAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRlc3Rz
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0J1aWxkZXJfdW5pdHRl
c3RzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9CdWls
ZGVyX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI2OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoIkJ1aWxkZXIiKTsKLQotZnVuY3Rpb24gcnVu
R2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBjYWxsYmFjaykgewotICAgIHZh
ciBtb2NrQnVpbGRib3QgPSB7fTsKLSAgICBtb2NrQnVpbGRib3QuYmFzZVVSTCA9ICdodHRwOi8v
ZXhhbXBsZS5jb20vJzsKLQotICAgIHZhciBidWlsZGVyID0gbmV3IEJ1aWxkZXIoJ3Rlc3QgYnVp
bGRlcicsIG1vY2tCdWlsZGJvdCk7Ci0KLSAgICB2YXIgcmVhbEdldFJlc291cmNlID0gd2luZG93
LmdldFJlc291cmNlOwotICAgIHdpbmRvdy5nZXRSZXNvdXJjZSA9IGZ1bmN0aW9uKHVybCwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBtb2NrWEhSID0ge307
Ci0gICAgICAgIG1vY2tYSFIucmVzcG9uc2VUZXh0ID0gSlNPTi5zdHJpbmdpZnkoanNvbkRhdGEp
OwotCi0gICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBiZXR0ZXIgZm9yIHRoaXMgY2FsbGJh
Y2sgdG8gaGFwcGVuCi0gICAgICAgIC8vIGFzeW5jaHJvbm91c2x5LCB0byBtYXRjaCB3aGF0IGhh
cHBlbnMgZm9yIHJlYWwgcmVxdWVzdHMuCi0gICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhtb2NrWEhS
KTsKLSAgICB9OwotCi0gICAgLy8gRklYTUU6IEl0J3MgbGFtZSB0byBiZSBtb2RpZnlpbmcgc2lu
Z2xldG9ucyBsaWtlIHRoaXMuIFdlIHNob3VsZCBnZXQgcmlkCi0gICAgLy8gb2Ygb3VyIHNpbmds
ZXRvbiB1c2FnZSBlbnRpcmVseSEKLSAgICBvayghKCJQZXJzaXN0ZW50Q2FjaGUiIGluIHdpbmRv
dykpOwotICAgIHdpbmRvdy5QZXJzaXN0ZW50Q2FjaGUgPSB7Ci0gICAgICAgIGNvbnRhaW5zOiBm
dW5jdGlvbigpIHsgcmV0dXJuIGZhbHNlOyB9LAotICAgICAgICBzZXQ6IGZ1bmN0aW9uKCkgeyB9
LAotICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyB9LAotICAgIH07Ci0KLSAgICBidWlsZGVyLmdl
dE51bWJlck9mRmFpbGluZ1Rlc3RzKDEsIGNhbGxiYWNrKTsKLQotICAgIHdpbmRvdy5nZXRSZXNv
dXJjZSA9IHJlYWxHZXRSZXNvdXJjZTsKLSAgICBlcXVhbCh3aW5kb3cuZ2V0UmVzb3VyY2UsIHJl
YWxHZXRSZXNvdXJjZSk7Ci0gICAgZGVsZXRlIHdpbmRvdy5QZXJzaXN0ZW50Q2FjaGU7Ci19Ci0K
LXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rlc3RzIHNob3VsZG4ndCBpbmNsdWRlIGxlYWtzIiwg
NCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBzOiBb
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNGaW5pc2hlZDogdHJ1ZSwKLSAgICAg
ICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgbmFtZTogJ2xheW91
dC10ZXN0JywKLSAgICAgICAgICAgICAgICByZXN1bHRzOiBbCi0gICAgICAgICAgICAgICAgICAg
IDIsCi0gICAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICIyMTc4
IHRvdGFsIGxlYWtzIGZvdW5kISIsIAotICAgICAgICAgICAgICAgICAgICAgICAgIjIgdGVzdCBj
YXNlcyAoPDElKSBoYWQgaW5jb3JyZWN0IGxheW91dCIsIAotICAgICAgICAgICAgICAgICAgICAg
ICAgIjIgdGVzdCBjYXNlcyAoPDElKSBjcmFzaGVkIiwKLSAgICAgICAgICAgICAgICAgICAgXSwK
LSAgICAgICAgICAgICAgICBdLAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAg
ICAgICAgICAgIDEzMTA1OTkyMDQuMTIzMTIyOSwKLSAgICAgICAgICAgICAgICAgICAgMTMxMDYw
MDE1Mi45NzM2NTksCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwKLSAgICAgICAg
XSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRh
LCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICBlcXVh
bChmYWlsdXJlQ291bnQsIDQpOwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMsIGZhbHNl
KTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyBkZXRlY3Rz
IHNwdXJpb3VzIHJ1bi13ZWJraXQtdGVzdHMgZmFpbHVyZXMiLCA0LCBmdW5jdGlvbigpIHsKLSAg
ICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKLSAgICAgICAgICAgICAgICBpc1N0YXJ0
ZWQ6IHRydWUsIAotICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAg
ICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgICAgMiwgCi0gICAgICAgICAg
ICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgICAgICAgICJsYXlvdXQtdGVzdCIKLSAgICAg
ICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHN0
ZXBfbnVtYmVyOiA3LCAKLSAgICAgICAgICAgICAgICB0ZXh0OiBbCi0gICAgICAgICAgICAgICAg
ICAgICJsYXlvdXQtdGVzdCIKLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICB0
aW1lczogWwotICAgICAgICAgICAgICAgICAgICAxMzEwNDM3NzM2LjAwNDk0LCAKLSAgICAgICAg
ICAgICAgICAgICAgMTMxMDQ0MDExOC4wMzgwMjMKLSAgICAgICAgICAgICAgICBdLAotICAgICAg
ICAgICAgfSwgCi0gICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGlu
Z1Rlc3RzVGVzdChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVy
ZXMpIHsKLSAgICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFsKHRv
b01hbnlGYWlsdXJlcywgZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9m
RmFpbGluZ1Rlc3RzIHVuZGVyc3RhbmRzIE5SV1QgZXhpdGluZyBlYXJseSBkdWUgdG8gdG9vIG1h
bnkgZmFpbHVyZXMiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAg
ICAgICAgc3RlcHM6IFsKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVk
OiB0cnVlLCAKLSAgICAgICAgICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAotICAgICAgICAgICAg
ICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsIAotICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKLSAg
ICAgICAgICAgICAgICAgIDIsIAotICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAg
ICAgICAgICIyMDExLTA3LTEzIDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJO
SU5HIEV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0
ZXN0cyBydW4uIiwgCi0gICAgICAgICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKLSAgICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICBzdGVwX251
bWJlcjogNCwgCi0gICAgICAgICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAi
MjAxMS0wNy0xMyAwNDozODo0NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0
aW5nIGVhcmx5IGFmdGVyIDIwIGNyYXNoZXMgYW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVu
LiIsIAotICAgICAgICAgICAgICAgICAgICAiMjAgZmFpbGVkIgotICAgICAgICAgICAgICAgIF0s
IAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEzMTA1NTcx
MTUuNzkzMDgyLCAKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU1NzEyOS44MzIxMDQKLSAgICAg
ICAgICAgICAgICBdCi0gICAgICAgICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAg
cnVuR2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJl
Q291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDIw
KTsKLSAgICAgICAgZXF1YWwodG9vTWFueUZhaWx1cmVzLCB0cnVlKTsKLSAgICB9KTsKLX0pOwot
Ci10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgYnVpbGQgc3RlcCBpbnRlcnJ1
cHRpb25zIGFzIGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0g
ewotICAgICAgICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmlu
aXNoZWQ6IHRydWUsCi0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLAotICAgICAgICAg
ICAgICAgIG5hbWU6ICJsYXlvdXQtdGVzdCIsCi0gICAgICAgICAgICAgICAgcmVzdWx0czogWwot
ICAgICAgICAgICAgICAgICAgNCwKLSAgICAgICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAg
ICAgICAgICAiaW50ZXJydXB0ZWQiLAotICAgICAgICAgICAgICAgICAgXQotICAgICAgICAgICAg
ICAgIF0sCi0gICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDUsCi0gICAgICAgICAgICAgICAg
dGV4dDogWwotICAgICAgICAgICAgICAgICAgICAibGF5b3V0LXRlc3QiLAotICAgICAgICAgICAg
ICAgICAgICAiaW50ZXJydXB0ZWQiLAotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAg
ICAgdGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMDU5OTIwNC4xMjMxMjI5LAotICAg
ICAgICAgICAgICAgICAgICAxMzEwNjAwMTUyLjk3MzY1OSwKLSAgICAgICAgICAgICAgICBdCi0g
ICAgICAgICAgICB9LAotICAgICAgICBdLAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZh
aWxpbmdUZXN0c1Rlc3QoanNvbkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZh
aWx1cmVzKSB7Ci0gICAgICAgIGVxdWFsKGZhaWx1cmVDb3VudCwgLTEpOwotICAgICAgICBlcXVh
bCh0b29NYW55RmFpbHVyZXMsIGZhbHNlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1i
ZXJPZkZhaWxpbmdUZXN0cyB0cmVhdHMgdW5maW5pc2hlZCB0ZXN0IHJ1bnMgYXMgZXJyb3JzIiwg
NCwgZnVuY3Rpb24oKSB7Ci0gICAgY29uc3QganNvbkRhdGEgPSB7Ci0gICAgICAgIHN0ZXBzOiBb
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaXNTdGFydGVkOiB0cnVlLCAKLSAgICAg
ICAgICAgICAgICBuYW1lOiAibGF5b3V0LXRlc3QiLCAKLSAgICAgICAgICAgICAgICBzdGVwX251
bWJlcjogNSwgCi0gICAgICAgICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAi
bGF5b3V0LXRlc3RzIHJ1bm5pbmciCi0gICAgICAgICAgICAgICAgXSwgCi0gICAgICAgICAgICAg
ICAgdGltZXM6IFsKLSAgICAgICAgICAgICAgICAgICAgMTMxMjk4OTI5NS41MTg0ODEsIAotICAg
ICAgICAgICAgICAgICAgICBudWxsCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSwg
Ci0gICAgICAgIF0sCi0gICAgfTsKLQotICAgIHJ1bkdldE51bWJlck9mRmFpbGluZ1Rlc3RzVGVz
dChqc29uRGF0YSwgZnVuY3Rpb24oZmFpbHVyZUNvdW50LCB0b29NYW55RmFpbHVyZXMpIHsKLSAg
ICAgICAgZXF1YWwoZmFpbHVyZUNvdW50LCAtMSk7Ci0gICAgICAgIGVxdWFsKHRvb01hbnlGYWls
dXJlcywgZmFsc2UpOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImdldE51bWJlck9mRmFpbGluZ1Rl
c3RzIHRyZWF0cyBzdWNjZXNzZnVsIGJ1dCB1bmJlbGlldmFibHkgc2hvcnQgdGVzdCBydW5zIGFz
IGVycm9ycyIsIDQsIGZ1bmN0aW9uKCkgewotICAgIGNvbnN0IGpzb25EYXRhID0gewotICAgICAg
ICBzdGVwczogWwotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlzRmluaXNoZWQ6IHRy
dWUsIAotICAgICAgICAgICAgICAgIGlzU3RhcnRlZDogdHJ1ZSwgCi0gICAgICAgICAgICAgICAg
bmFtZTogImxheW91dC10ZXN0IiwgCi0gICAgICAgICAgICAgICAgc3RlcF9udW1iZXI6IDcsIAot
ICAgICAgICAgICAgICAgIHRleHQ6IFsKLSAgICAgICAgICAgICAgICAgICAgImxheW91dC10ZXN0
IgotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAgIHRpbWVzOiBbCi0gICAgICAg
ICAgICAgICAgICAgIDEzMTEyODg3OTcuNzIwNzAxOSwgCi0gICAgICAgICAgICAgICAgICAgIDEz
MTEyODg4MDIuNzc5MTk0MQotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgICAgIH0sIAotICAg
ICAgICBdLAotICAgIH07Ci0KLSAgICBydW5HZXROdW1iZXJPZkZhaWxpbmdUZXN0c1Rlc3QoanNv
bkRhdGEsIGZ1bmN0aW9uKGZhaWx1cmVDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAg
IGVxdWFsKGZhaWx1cmVDb3VudCwgLTEpOwotICAgICAgICBlcXVhbCh0b29NYW55RmFpbHVyZXMs
IGZhbHNlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJnZXROdW1iZXJPZkZhaWxpbmdUZXN0cyBk
b2Vzbid0IGNhcmUgaWYgYSBmYWlsaW5nIHJ1biBpcyB1bmJlbGlldmFibHkgc2hvcnQiLCA0LCBm
dW5jdGlvbigpIHsKLSAgICBjb25zdCBqc29uRGF0YSA9IHsKLSAgICAgICAgc3RlcHM6IFsKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpc0ZpbmlzaGVkOiB0cnVlLCAKLSAgICAgICAg
ICAgICAgICBpc1N0YXJ0ZWQ6IHRydWUsIAotICAgICAgICAgICAgICAgIG5hbWU6ICJsYXlvdXQt
dGVzdCIsIAotICAgICAgICAgICAgICAgIHJlc3VsdHM6IFsKLSAgICAgICAgICAgICAgICAgIDIs
IAotICAgICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICAgICIyMDExLTA3LTEz
IDA0OjM4OjQ2LDMxNSAxMTI0NyBtYW5hZ2VyLnB5Ojc4MCBXQVJOSU5HIEV4aXRpbmcgZWFybHkg
YWZ0ZXIgMjAgY3Jhc2hlcyBhbmQgMCB0aW1lb3V0cy4gMjI1MSB0ZXN0cyBydW4uIiwgCi0gICAg
ICAgICAgICAgICAgICAgICAgIjIwIGZhaWxlZCIKLSAgICAgICAgICAgICAgICAgIF0KLSAgICAg
ICAgICAgICAgICBdLCAKLSAgICAgICAgICAgICAgICBzdGVwX251bWJlcjogNCwgCi0gICAgICAg
ICAgICAgICAgdGV4dDogWwotICAgICAgICAgICAgICAgICAgICAiMjAxMS0wNy0xMyAwNDozODo0
NiwzMTUgMTEyNDcgbWFuYWdlci5weTo3ODAgV0FSTklORyBFeGl0aW5nIGVhcmx5IGFmdGVyIDIw
IGNyYXNoZXMgYW5kIDAgdGltZW91dHMuIDIyNTEgdGVzdHMgcnVuLiIsIAotICAgICAgICAgICAg
ICAgICAgICAiMjAgZmFpbGVkIgotICAgICAgICAgICAgICAgIF0sIAotICAgICAgICAgICAgICAg
IHRpbWVzOiBbCi0gICAgICAgICAgICAgICAgICAgIDEzMTA1NTcxMTUuNzkzMDgyLCAKLSAgICAg
ICAgICAgICAgICAgICAgMTMxMDU1NzExOS44MzIxMDQKLSAgICAgICAgICAgICAgICBdCi0gICAg
ICAgICAgICB9LCAKLSAgICAgICAgXSwKLSAgICB9OwotCi0gICAgcnVuR2V0TnVtYmVyT2ZGYWls
aW5nVGVzdHNUZXN0KGpzb25EYXRhLCBmdW5jdGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWls
dXJlcykgewotICAgICAgICBlcXVhbChmYWlsdXJlQ291bnQsIDIwKTsKLSAgICAgICAgZXF1YWwo
dG9vTWFueUZhaWx1cmVzLCB0cnVlKTsKLSAgICB9KTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvRmFpbGluZ1Rlc3RzQnVnRm9ybS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3JtLmpzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3Jt
LmpzCShub25leGlzdGVudCkKQEAgLTEsMTIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlv
biBGYWlsaW5nVGVzdHNCdWdGb3JtKHRlc3RlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1
aWxkTmFtZSwgZmFpbGluZ1Rlc3RzKSB7Ci0gICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhp
cywgdGVzdGVyKTsKLQotICAgIHRoaXMuX2ZhaWxpbmdCdWlsZE5hbWUgPSBmYWlsaW5nQnVpbGRO
YW1lOwotICAgIHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUgPSBwYXNzaW5nQnVpbGROYW1lOwotICAg
IHRoaXMuX2ZhaWxpbmdUZXN0cyA9IGZhaWxpbmdUZXN0czsKLQotICAgIHRoaXMuZGVzY3JpcHRp
b24gPSB0aGlzLl9jcmVhdGVCdWdEZXNjcmlwdGlvbigpOwotICAgIC8vIEZJWE1FOiBXaGVuIGEg
bmV3bHktYWRkZWQgdGVzdCBoYXMgYmVlbiBmYWlsaW5nIHNpbmNlIGl0cyBpbnRyb2R1Y3Rpb24s
IGl0IGlzbid0IHJlYWxseSBhCi0gICAgLy8gInJlZ3Jlc3Npb24iLiBXZSBzaG91bGQgdXNlIGRp
ZmZlcmVudCBrZXl3b3JkcyBpbiB0aGF0IGNhc2UuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYxNjQ1
PgotICAgIHRoaXMua2V5d29yZHMgKz0gJywgJyArIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuUmVn
cmVzc2lvbjsKLSAgICB0aGlzLnRpdGxlID0gdGhpcy5fY3JlYXRlQnVnVGl0bGUoKTsKLSAgICB0
aGlzLnVybCA9IHRoaXMuX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTCgpOwotfQotCi1GYWlsaW5nVGVz
dHNCdWdGb3JtLnByb3RvdHlwZSA9IHsKLSAgICBfY3JlYXRlQnVnRGVzY3JpcHRpb246IGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgZmlyc3RTdXNwZWN0UmV2aXNpb24gPSB0aGlzLl9wYXNzaW5n
UmV2aXNpb24oKSA/IHRoaXMuX3Bhc3NpbmdSZXZpc2lvbigpICsgMSA6IHRoaXMuX2ZhaWxpbmdS
ZXZpc2lvbigpOwotICAgICAgICB2YXIgbGFzdFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMuX2ZhaWxp
bmdSZXZpc2lvbigpOwotCi0gICAgICAgIHZhciBlbmRPZkZpcnN0U2VudGVuY2U7Ci0gICAgICAg
IGlmICh0aGlzLl9wYXNzaW5nQnVpbGROYW1lKSB7Ci0gICAgICAgICAgICBlbmRPZkZpcnN0U2Vu
dGVuY2UgPSAnc3RhcnRlZCBmYWlsaW5nIG9uICcgKyB0aGlzLl90ZXN0ZXIubmFtZTsKLSAgICAg
ICAgICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikK
LSAgICAgICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgKz0gJyBpbiByJyArIGZpcnN0U3Vz
cGVjdFJldmlzaW9uICsgJyA8JyArIHRyYWMuY2hhbmdlc2V0VVJMKGZpcnN0U3VzcGVjdFJldmlz
aW9uKSArICc+JzsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBlbmRPZkZpcnN0
U2VudGVuY2UgKz0gJyBiZXR3ZWVuIHInICsgZmlyc3RTdXNwZWN0UmV2aXNpb24gKyAnIGFuZCBy
JyArIGxhc3RTdXNwZWN0UmV2aXNpb24gKyAnIChpbmNsdXNpdmUpJzsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICBlbmRPZkZpcnN0U2VudGVuY2UgPSAodGhpcy5fZmFpbGluZ1Rlc3RzLmxl
bmd0aCA9PT0gMSA/ICdoYXMnIDogJ2hhdmUnKSArICcgYmVlbiBmYWlsaW5nIG9uICcgKyB0aGlz
Ll90ZXN0ZXIubmFtZSArICcgc2luY2UgYXQgbGVhc3QgcicgKyBmaXJzdFN1c3BlY3RSZXZpc2lv
biArICcgPCcgKyB0cmFjLmNoYW5nZXNldFVSTChmaXJzdFN1c3BlY3RSZXZpc2lvbikgKyAnPic7
Ci0gICAgICAgIHZhciBkZXNjcmlwdGlvbjsKLSAgICAgICAgaWYgKHRoaXMuX2ZhaWxpbmdUZXN0
cy5sZW5ndGggPT09IDEpCi0gICAgICAgICAgICBkZXNjcmlwdGlvbiA9IHRoaXMuX2ZhaWxpbmdU
ZXN0c1swXSArICcgJyArIGVuZE9mRmlyc3RTZW50ZW5jZSArICcuXG5cbic7Ci0gICAgICAgIGVs
c2UgaWYgKHRoaXMuX2ZhaWxpbmdUZXN0cy5sZW5ndGggPT09IDIpCi0gICAgICAgICAgICBkZXNj
cmlwdGlvbiA9IHRoaXMuX2ZhaWxpbmdUZXN0cy5qb2luKCcgYW5kICcpICsgJyAnICsgZW5kT2ZG
aXJzdFNlbnRlbmNlICsgJy5cblxuJzsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBkZXNj
cmlwdGlvbiA9ICdUaGUgZm9sbG93aW5nIHRlc3RzICcgKyBlbmRPZkZpcnN0U2VudGVuY2UgKyAn
OlxuXG4nCi0gICAgICAgICAgICAgICAgKyB0aGlzLl9mYWlsaW5nVGVzdHMubWFwKGZ1bmN0aW9u
KHRlc3QpIHsgcmV0dXJuICcgICAgJyArIHRlc3QgfSkuam9pbignXG4nKQotICAgICAgICAgICAg
ICAgICsgJ1xuXG4nOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmaXJzdFN1c3BlY3RSZXZpc2lv
biAhPT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAgICAgIGRlc2NyaXB0aW9uICs9IHRy
YWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVjdFJldmlz
aW9uKSArICdcblxuJzsKLSAgICAgICAgaWYgKHRoaXMuX3Bhc3NpbmdCdWlsZE5hbWUpCi0gICAg
ICAgICAgICBkZXNjcmlwdGlvbiArPSB0aGlzLl90ZXN0ZXIucmVzdWx0c1BhZ2VVUkwodGhpcy5f
cGFzc2luZ0J1aWxkTmFtZSkgKyAnIHBhc3NlZFxuJzsKLSAgICAgICAgZGVzY3JpcHRpb24gKz0g
dGhpcy5fZmFpbGluZ1Jlc3VsdHNIVE1MVVJMKCkgKyAnIGZhaWxlZFxuJzsKLQotICAgICAgICBy
ZXR1cm4gZGVzY3JpcHRpb247Ci0gICAgfSwKLQotICAgIF9jcmVhdGVCdWdUaXRsZTogZnVuY3Rp
b24oKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBXaGVuIGEgbmV3bHktYWRkZWQgdGVzdCBoYXMgYmVl
biBmYWlsaW5nIHNpbmNlIGl0cyBpbnRyb2R1Y3Rpb24sIGl0IGlzbid0IHJlYWxseSBhCi0gICAg
ICAgIC8vICJyZWdyZXNzaW9uIi4gV2Ugc2hvdWxkIHVzZSBhIGRpZmZlcmVudCB0aXRsZSBpbiB0
aGF0IGNhc2UuIDxodHRwOi8vd2Via2l0Lm9yZy9iLzYxNjQ1PgotCi0gICAgICAgIHZhciB0aXRs
ZVByZWZpeCA9ICdSRUdSRVNTSU9OICgnICsgdGhpcy5fcmVncmVzc2lvblJhbmdlU3RyaW5nKCkg
KyAnKTogJzsKLSAgICAgICAgdmFyIHRpdGxlU3VmZml4ID0gJyBmYWlsaW5nIG9uICcgKyB0aGlz
Ll90ZXN0ZXIubmFtZTsKLSAgICAgICAgdmFyIHRpdGxlID0gdGl0bGVQcmVmaXggKyB0aGlzLl9m
YWlsaW5nVGVzdHMuam9pbignLCAnKSArIHRpdGxlU3VmZml4OwotCi0gICAgICAgIGlmICh0aXRs
ZS5sZW5ndGggPD0gYnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCkKLSAgICAgICAgICAg
IHJldHVybiB0aXRsZTsKLQotICAgICAgICB2YXIgcGF0aFByZWZpeCA9IGxvbmdlc3RDb21tb25Q
YXRoUHJlZml4KHRoaXMuX2ZhaWxpbmdUZXN0cyk7Ci0gICAgICAgIGlmIChwYXRoUHJlZml4KSB7
Ci0gICAgICAgICAgICB0aXRsZSA9IHRpdGxlUHJlZml4ICsgdGhpcy5fZmFpbGluZ1Rlc3RzLmxl
bmd0aCArICcgJyArIHBhdGhQcmVmaXggKyAnIHRlc3RzJyArIHRpdGxlU3VmZml4OwotICAgICAg
ICAgICAgaWYgKHRpdGxlLmxlbmd0aCA8PSBidWd6aWxsYS5rTWF4aW11bUJ1Z1RpdGxlTGVuZ3Ro
KQotICAgICAgICAgICAgICAgIHJldHVybiB0aXRsZTsKLSAgICAgICAgfQotCi0gICAgICAgIHRp
dGxlID0gdGl0bGVQcmVmaXggKyB0aGlzLl9mYWlsaW5nVGVzdHMubGVuZ3RoICsgJyB0ZXN0cycg
KyB0aXRsZVN1ZmZpeDsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aXRsZS5sZW5ndGggPD0g
YnVnemlsbGEua01heGltdW1CdWdUaXRsZUxlbmd0aCk7Ci0gICAgICAgIHJldHVybiB0aXRsZTsK
LSAgICB9LAotCi0gICAgX2ZhaWxpbmdSZXN1bHRzSFRNTFVSTDogZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl90ZXN0ZXIucmVzdWx0c1BhZ2VVUkwodGhpcy5fZmFpbGluZ0J1aWxk
TmFtZSk7Ci0gICAgfSwKLQotICAgIF9mYWlsaW5nUmV2aXNpb246IGZ1bmN0aW9uKCkgewotICAg
ICAgICByZXR1cm4gdGhpcy5fdGVzdGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKHRoaXMuX2Zh
aWxpbmdCdWlsZE5hbWUpLnJldmlzaW9uOwotICAgIH0sCi0KLSAgICBfcGFzc2luZ1JldmlzaW9u
OiBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKCF0aGlzLl9wYXNzaW5nQnVpbGROYW1lKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0ZXIuYnVpbGRi
b3QucGFyc2VCdWlsZE5hbWUodGhpcy5fcGFzc2luZ0J1aWxkTmFtZSkucmV2aXNpb247Ci0gICAg
fSwKLQotICAgIF9yZWdyZXNzaW9uUmFuZ2VTdHJpbmc6IGZ1bmN0aW9uKCkgewotICAgICAgICB2
YXIgZmFpbGluZ1JldmlzaW9uID0gdGhpcy5fZmFpbGluZ1JldmlzaW9uKCk7Ci0gICAgICAgIHZh
ciBwYXNzaW5nUmV2aXNpb24gPSB0aGlzLl9wYXNzaW5nUmV2aXNpb24oKTsKLSAgICAgICAgaWYg
KCFwYXNzaW5nUmV2aXNpb24gfHwgZmFpbGluZ1JldmlzaW9uIC0gcGFzc2luZ1JldmlzaW9uIDw9
IDEpCi0gICAgICAgICAgICByZXR1cm4gJ3InICsgZmFpbGluZ1JldmlzaW9uOwotICAgICAgICBy
ZXR1cm4gJ3InICsgcGFzc2luZ1JldmlzaW9uICsgJy1yJyArIGZhaWxpbmdSZXZpc2lvbjsKLSAg
ICB9LAotfTsKLQotRmFpbGluZ1Rlc3RzQnVnRm9ybS5wcm90b3R5cGUuX19wcm90b19fID0gVGVz
dFJlbGF0ZWRCdWdGb3JtLnByb3RvdHlwZTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL0ZhaWxpbmdUZXN0c0J1Z0Zvcm1fdW5pdHRlc3RzLmpzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GYWlsaW5nVGVzdHNCdWdGb3Jt
X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE2MCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ0ZhaWxpbmdUZXN0c0J1Z0Zvcm0nKTsKLQotZnVu
Y3Rpb24gY3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2lu
Z0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3RzKSB7Ci0gICAgdmFyIG1vY2tCdWlsZGJvdCA9IHt9Owot
ICAgIG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewot
ICAgICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1lKTsKLSAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRjaFsxXSwgMTApLAotICAg
ICAgICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAxMCksCi0gICAgICAgIH07
Ci0gICAgfTsKLQotICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OwotICAgIG1vY2tCdWlsZGVyLm5h
bWUgPSB0ZXN0ZXJOYW1lOwotICAgIG1vY2tCdWlsZGVyLmJ1aWxkYm90ID0gbW9ja0J1aWxkYm90
OwotICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0gZnVuY3Rpb24oYnVpbGROYW1lKSB7
Ci0gICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwgJyArIHRoaXMubmFtZSArICcsICcg
KyBidWlsZE5hbWUgKyAnXSc7Ci0gICAgfQotCi0gICAgcmV0dXJuIG5ldyBGYWlsaW5nVGVzdHNC
dWdGb3JtKG1vY2tCdWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lLCBwYXNzaW5nQnVpbGROYW1lLCBm
YWlsaW5nVGVzdHMpOwotfQotCi10ZXN0KCdrZXl3b3JkcyBhcmUgc2V0JywgMSwgZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGZvcm0gPSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93cyA3IFJlbGVhc2UgKFRl
c3RzKScsICdyMTAgKDUpJywgJ3I4ICgyKScsIFsnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rv
ci5odG1sJ10pOwotCi0gICAgZGVlcEVxdWFsKGZvcm0ua2V5d29yZHMuc3BsaXQoJywgJyksIFtX
ZWJLaXRCdWd6aWxsYS5LZXl3b3JkLkxheW91dFRlc3RGYWlsdXJlLCBXZWJLaXRCdWd6aWxsYS5L
ZXl3b3JkLk1ha2luZ0JvdHNSZWQsIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuUmVncmVzc2lvbl0p
OwotfSk7Ci0KLWNvbnN0IHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWls
ZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiBbCi0gICAgICAgICAgICAn
Y3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sJywKLSAgICAgICAgXSwKLSAgICAgICAg
ZXhwZWN0ZWREZXNjcmlwdGlvbjogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBo
YXMgYmVlbiBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgc2luY2UgYXQgbGVh
c3QgcjEwIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMD4uXG5cbltSRVNVTFRT
IFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHIxMCAoNSldIGZhaWxlZFxuJywK
LSAgICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHIxMCk6IGNzczEvYmFzaWMvY2xh
c3NfYXNfc2VsZWN0b3IuaHRtbCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykn
LAotICAgIH0sCi0gICAgewotICAgICAgICBmYWlsaW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0g
ICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOSAoMyknLAotICAgICAgICBmYWlsaW5nVGVzdHM6
IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwnLAotICAg
ICAgICBdLAotICAgICAgICBleHBlY3RlZERlc2NyaXB0aW9uOiAnY3NzMS9iYXNpYy9jbGFzc19h
c19zZWxlY3Rvci5odG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVz
dHMpIGluIHIxMCA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTA+LlxuXG5bUkVT
VUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOSAoMyldIHBhc3NlZFxu
W1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFp
bGVkXG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjEwKTogY3NzMS9i
YXNpYy9jbGFzc19hc19zZWxlY3Rvci5odG1sIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2Ug
KFRlc3RzKScsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAg
KDUpJywKLSAgICAgICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxp
bmdUZXN0czogWwotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRt
bCcsCi0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2lj
L2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgc3RhcnRlZCBmYWlsaW5nIG9uIFdpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNsdXNpdmUpLlxuXG5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2xvZy90cnVuaz9yZXY9MTAmc3RvcF9yZXY9OSZsaW1pdD0zXG5cbltSRVNV
TFRTIFBBR0UgVVJMIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyksIHI4ICgyKV0gcGFzc2VkXG5b
UkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByMTAgKDUpXSBmYWls
ZWRcbicsCi0gICAgICAgIGV4cGVjdGVkVGl0bGU6ICdSRUdSRVNTSU9OIChyOC1yMTApOiBjc3Mx
L2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFz
ZSAoVGVzdHMpJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgZmFpbGluZ0J1aWxkTmFtZTogJ3Ix
MCAoNSknLAotICAgICAgICBwYXNzaW5nQnVpbGROYW1lOiAncjggKDIpJywKLSAgICAgICAgZmFp
bGluZ1Rlc3RzOiBbCi0gICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvci5o
dG1sJywKLSAgICAgICAgICAgICdmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCcs
Ci0gICAgICAgIF0sCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246ICdjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yLmh0bWwgYW5kIGZhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5o
dG1sIHN0YXJ0ZWQgZmFpbGluZyBvbiBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpIGJldHdlZW4g
cjkgYW5kIHIxMCAoaW5jbHVzaXZlKS5cblxuaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1
bms/cmV2PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVTVUxUUyBQQUdFIFVSTCBXaW5kb3dz
IDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxuW1JFU1VMVFMgUEFHRSBVUkwgV2lu
ZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFpbGVkXG4nLAotICAgICAgICBleHBl
Y3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogY3NzMS9iYXNpYy9jbGFzc19hc19zZWxl
Y3Rvci5odG1sLCBmYXN0L2Nzcy9leC1hZnRlci1mb250LXZhcmlhbnQuaHRtbCBmYWlsaW5nIG9u
IFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cyknLAotICAgIH0sCi0gICAgewotICAgICAgICBmYWls
aW5nQnVpbGROYW1lOiAncjEwICg1KScsCi0gICAgICAgIHBhc3NpbmdCdWlsZE5hbWU6ICdyOCAo
MiknLAotICAgICAgICBmYWlsaW5nVGVzdHM6IFsKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yMS5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yMi5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVj
dG9yMy5odG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNC5o
dG1sJywKLSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNS5odG1sJywK
LSAgICAgICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNi5odG1sJywKLSAgICAg
ICAgICAgICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yNy5odG1sJywKLSAgICAgICAgICAg
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yOC5odG1sJywKLSAgICAgICAgXSwKLSAgICAg
ICAgZXhwZWN0ZWREZXNjcmlwdGlvbjogJ1RoZSBmb2xsb3dpbmcgdGVzdHMgc3RhcnRlZCBmYWls
aW5nIG9uIFdpbmRvd3MgNyBSZWxlYXNlIChUZXN0cykgYmV0d2VlbiByOSBhbmQgcjEwIChpbmNs
dXNpdmUpOlxuXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjEuaHRtbFxuICAgIGNz
czEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWxcbiAgICBjc3MxL2Jhc2ljL2NsYXNzX2Fz
X3NlbGVjdG9yMy5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3RvcjQuaHRtbFxu
ICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWxcbiAgICBjc3MxL2Jhc2ljL2Ns
YXNzX2FzX3NlbGVjdG9yNi5odG1sXG4gICAgY3NzMS9iYXNpYy9jbGFzc19hc19zZWxlY3Rvcjcu
aHRtbFxuICAgIGNzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWxcblxuaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEwJnN0b3BfcmV2PTkmbGltaXQ9M1xuXG5bUkVT
VUxUUyBQQUdFIFVSTCBXaW5kb3dzIDcgUmVsZWFzZSAoVGVzdHMpLCByOCAoMildIHBhc3NlZFxu
W1JFU1VMVFMgUEFHRSBVUkwgV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSwgcjEwICg1KV0gZmFp
bGVkXG4nLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogOCBj
c3MxL2Jhc2ljIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAg
ICAgcGFzc2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwot
ICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwnLAotICAgICAg
ICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAotICAgICAgICAgICAg
J2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3I1Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3I2Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2Vs
ZWN0b3I3Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4
Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0b3I5Lmh0bWwnLAotICAg
ICAgICBdLAotICAgICAgICBleHBlY3RlZFRpdGxlOiAnUkVHUkVTU0lPTiAocjgtcjEwKTogOSBj
c3MxIHRlc3RzIGZhaWxpbmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwK
LSAgICB7Ci0gICAgICAgIGZhaWxpbmdCdWlsZE5hbWU6ICdyMTAgKDUpJywKLSAgICAgICAgcGFz
c2luZ0J1aWxkTmFtZTogJ3I4ICgyKScsCi0gICAgICAgIGZhaWxpbmdUZXN0czogWwotICAgICAg
ICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IxLmh0bWwnLAotICAgICAgICAgICAg
J2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IyLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEv
YmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IzLmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3I0Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3Nf
YXNfc2VsZWN0b3I1Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2Vs
ZWN0b3I2Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I3
Lmh0bWwnLAotICAgICAgICAgICAgJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3I4Lmh0bWwn
LAotICAgICAgICAgICAgJ2NzczEvY2xhc3NfYXNfc2VsZWN0b3I5Lmh0bWwnLAotICAgICAgICAg
ICAgJ2Zhc3QvY3NzL2V4LWFmdGVyLWZvbnQtdmFyaWFudC5odG1sJywKLSAgICAgICAgXSwKLSAg
ICAgICAgZXhwZWN0ZWRUaXRsZTogJ1JFR1JFU1NJT04gKHI4LXIxMCk6IDEwIHRlc3RzIGZhaWxp
bmcgb24gV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScsCi0gICAgfSwKLV07Ci0KLXRlc3QoJ3Rp
dGxlcycsIDcsIGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdENhc2Vz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0oJ1dpbmRv
d3MgNyBSZWxlYXNlIChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ0J1aWxkTmFtZSwgdGVz
dENhc2VzW2ldLnBhc3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5mYWlsaW5nVGVzdHMpOwot
ICAgICAgICBlcXVhbChmb3JtLnRpdGxlLCB0ZXN0Q2FzZXNbaV0uZXhwZWN0ZWRUaXRsZSk7Ci0g
ICAgfQotfSk7Ci0KLXRlc3QoJ2Rlc2NyaXB0aW9ucycsIDUsIGZ1bmN0aW9uKCkgewotICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGVzdENhc2VzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmICgh
KCdleHBlY3RlZERlc2NyaXB0aW9uJyBpbiB0ZXN0Q2FzZXNbaV0pKQotICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0oJ1dpbmRvd3MgNyBSZWxl
YXNlIChUZXN0cyknLCB0ZXN0Q2FzZXNbaV0uZmFpbGluZ0J1aWxkTmFtZSwgdGVzdENhc2VzW2ld
LnBhc3NpbmdCdWlsZE5hbWUsIHRlc3RDYXNlc1tpXS5mYWlsaW5nVGVzdHMpOwotICAgICAgICBl
cXVhbChmb3JtLmRlc2NyaXB0aW9uLCB0ZXN0Q2FzZXNbaV0uZXhwZWN0ZWREZXNjcmlwdGlvbik7
Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFr
eUxheW91dFRlc3REZXRlY3Rvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9GbGFreUxheW91dFRlc3REZXRlY3Rvci5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwxMTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIEZsYWt5TGF5b3V0
VGVzdERldGVjdG9yKCkgewotICAgIHRoaXMuX3Rlc3RzID0ge307Ci0gICAgdGhpcy5fYnVpbGRD
b3VudCA9IDA7Ci19Ci0KLUZsYWt5TGF5b3V0VGVzdERldGVjdG9yLnByb3RvdHlwZSA9IHsKLSAg
ICBpbmNvcnBvcmF0ZVRlc3RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIGZhaWxpbmdUZXN0
cywgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAgIHZhciBuZXdGbGFreVRlc3RzID0gW107Ci0K
LSAgICAgICAgaWYgKHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgLy8gU29tZXRoaW5n
IHdhcyBnb2luZyBob3JyaWJseSB3cm9uZyBkdXJpbmcgdGhpcyB0ZXN0IHJ1bi4gV2Ugc2hvdWxk
bid0IGFzc3VtZSB0aGF0IGFueQotICAgICAgICAgICAgLy8gcGFzc2VzL2ZhaWx1cmVzIGFyZSBk
dWUgdG8gZmxha2luZXNzLgotICAgICAgICAgICAgcmV0dXJuIG5ld0ZsYWt5VGVzdHM7Ci0gICAg
ICAgIH0KLQotICAgICAgICArK3RoaXMuX2J1aWxkQ291bnQ7Ci0KLSAgICAgICAgLy8gUmVjb3Jk
IGZhaWxpbmcgdGVzdHMuCi0gICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIGZhaWxpbmdUZXN0
cykgewotICAgICAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdGhpcy5fdGVzdHMpKSB7Ci0gICAg
ICAgICAgICAgICBpZiAodGhpcy5fYnVpbGRDb3VudCA+IHRoaXMuX21heGltdW1GYWlsT3JQYXNz
Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHRlc3QgaGFzbid0IGZhaWxlZCBp
biB0aGUgX21heGltdW1GYWlsT3JQYXNzQ291bnQgbW9zdCByZWNlbnQgYnVpbGRzLCBzbwotICAg
ICAgICAgICAgICAgICAgIC8vIGRvbid0IGNvbnNpZGVyIGl0IHRvIGJlIGZsYWt5LiBJbiBmYWN0
LCB3ZSBkb24ndCBoYXZlIHRvIHRyYWNrIGl0IGF0IGFsbCEKLSAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHRoaXMuX3Rlc3Rz
W3Rlc3ROYW1lXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgc3RhdGU6IHRoaXMuX3N0YXRlcy5M
YXN0U2VlbkZhaWxpbmcsCi0gICAgICAgICAgICAgICAgICAgIGNvdW50OiAwLAotICAgICAgICAg
ICAgICAgICAgICBoaXN0b3J5OiBbXSwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAg
fQotCi0gICAgICAgICAgICB2YXIgdGVzdERhdGEgPSB0aGlzLl90ZXN0c1t0ZXN0TmFtZV07Ci0g
ICAgICAgICAgICB0ZXN0RGF0YS5oaXN0b3J5LnB1c2goeyBidWlsZDogYnVpbGROYW1lLCByZXN1
bHQ6IGZhaWxpbmdUZXN0c1t0ZXN0TmFtZV0gfSk7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0RGF0
YS5zdGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZykgewotICAgICAgICAgICAg
ICAgICsrdGVzdERhdGEuY291bnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHRlc3REYXRhLmNvdW50
ID4gdGhpcy5fbWF4aW11bUZhaWxPclBhc3NDb3VudCkKLSAgICAgICAgICAgICAgICAgICAgdGVz
dERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuTm90Rmxha3k7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKHRlc3REYXRhLnN0YXRlID09PSB0aGlzLl9zdGF0ZXMuTGFzdFNlZW5QYXNzaW5nKSB7Ci0g
ICAgICAgICAgICAgICAgdGVzdERhdGEuc3RhdGUgPSB0aGlzLl9zdGF0ZXMuUG9zc2libHlGbGFr
eTsKLSAgICAgICAgICAgICAgICBuZXdGbGFreVRlc3RzLnB1c2godGVzdE5hbWUpOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVjb3JkIHBhc3NpbmcgdGVzdHMuCi0g
ICAgICAgIGZvciAodmFyIHRlc3ROYW1lIGluIHRoaXMuX3Rlc3RzKSB7Ci0gICAgICAgICAgICBp
ZiAodGVzdE5hbWUgaW4gZmFpbGluZ1Rlc3RzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICB2YXIgdGVzdERhdGEgPSB0aGlzLl90ZXN0c1t0ZXN0TmFtZV07Ci0gICAg
ICAgICAgICB0ZXN0RGF0YS5oaXN0b3J5LnB1c2goeyBidWlsZDogYnVpbGROYW1lLCByZXN1bHQ6
IHsgZmFpbHVyZVR5cGU6ICdwYXNzJyB9IH0pOwotCi0gICAgICAgICAgICBpZiAodGVzdERhdGEu
c3RhdGUgPT09IHRoaXMuX3N0YXRlcy5MYXN0U2VlblBhc3NpbmcpIHsKLSAgICAgICAgICAgICAg
ICArK3Rlc3REYXRhLmNvdW50OwotICAgICAgICAgICAgICAgIGlmICh0ZXN0RGF0YS5jb3VudCA+
IHRoaXMuX21heGltdW1GYWlsT3JQYXNzQ291bnQpCi0gICAgICAgICAgICAgICAgICAgIHRlc3RE
YXRhLnN0YXRlID0gdGhpcy5fc3RhdGVzLk5vdEZsYWt5OwotICAgICAgICAgICAgfSBlbHNlIGlm
ICh0ZXN0RGF0YS5zdGF0ZSA9PT0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuRmFpbGluZykgewotICAg
ICAgICAgICAgICAgIHRlc3REYXRhLnN0YXRlID0gdGhpcy5fc3RhdGVzLkxhc3RTZWVuUGFzc2lu
ZzsKLSAgICAgICAgICAgICAgICB0ZXN0RGF0YS5jb3VudCA9IDE7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbmV3Rmxha3lUZXN0czsKLSAgICB9LAotCi0gICAg
YWxsRmFpbHVyZXM6IGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAgIGlmICghKHRlc3ROYW1l
IGluIHRoaXMuX3Rlc3RzKSkKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHJl
dHVybiB0aGlzLl90ZXN0c1t0ZXN0TmFtZV0uaGlzdG9yeS5maWx0ZXIoZnVuY3Rpb24oaGlzdG9y
eUl0ZW0pIHsgcmV0dXJuIGhpc3RvcnlJdGVtLnJlc3VsdC5mYWlsdXJlVHlwZSAhPT0gJ3Bhc3Mn
IH0pOwotICAgIH0sCi0KLSAgICBnZXQgcG9zc2libHlGbGFreVRlc3RzKCkgewotICAgICAgICB2
YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyhzZWxmLl90ZXN0cyku
ZmlsdGVyKGZ1bmN0aW9uKHRlc3ROYW1lKSB7IHJldHVybiBzZWxmLl90ZXN0c1t0ZXN0TmFtZV0u
c3RhdGUgPT09IHNlbGYuX3N0YXRlcy5Qb3NzaWJseUZsYWt5IH0pOwotICAgIH0sCi0KLSAgICAv
LyBJZiBhIHRlc3QgaGFzIHJlY2VudGx5IGZhaWxlZCBvciBwYXNzZWQgbW9yZSB0aGFuIHRoaXMg
bnVtYmVyIG9mIHRpbWVzIGluIGEgcm93IHdlIGRvbid0Ci0gICAgLy8gY29uc2lkZXIgaXQgdG8g
YmUgZmxha3kuCi0gICAgX21heGltdW1GYWlsT3JQYXNzQ291bnQ6IDksCi0KLSAgICBfc3RhdGVz
OiB7Ci0gICAgICAgIExhc3RTZWVuRmFpbGluZzogMCwKLSAgICAgICAgTGFzdFNlZW5QYXNzaW5n
OiAxLAotICAgICAgICBQb3NzaWJseUZsYWt5OiAyLAotICAgICAgICBOb3RGbGFreTogMywKLSAg
ICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERl
dGVjdG9yX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9GbGFreUxheW91dFRlc3REZXRlY3Rvcl91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTA0MikK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yX3VuaXR0
ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1
bmN0aW9uKCkgewotCi1tb2R1bGUoJ0ZsYWt5TGF5b3V0VGVzdERldGVjdG9yJyk7Ci0KLWNvbnN0
IHJ1bnMgPSBbCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDYnLAotICAgICAgICBm
YWlsaW5nVGVzdHM6IHsKLSAgICAgICAgICAgIGI6ICdmYWlsJywKLSAgICAgICAgfSwKLSAgICAg
ICAgdG9vTWFueUZhaWx1cmVzOiBmYWxzZSwKLSAgICB9LAotICAgIHsKLSAgICAgICAgYnVpbGRO
YW1lOiAnYnVpbGQ1JywKLSAgICAgICAgZmFpbGluZ1Rlc3RzOiB7Ci0gICAgICAgICAgICBhOiAn
ZmFpbCcsCi0gICAgICAgICAgICBiOiAnZmFpbCcsCi0gICAgICAgIH0sCi0gICAgICAgIHRvb01h
bnlGYWlsdXJlczogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIGJ1aWxkTmFtZTogJ2J1
aWxkNCcsCi0gICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAgICAgICAgYjogJ2ZhaWwnLAot
ICAgICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAotICAgIH0sCi0gICAg
ewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDMnLAotICAgICAgICBmYWlsaW5nVGVzdHM6IHsK
LSAgICAgICAgICAgIGE6ICdjcmFzaCcsCi0gICAgICAgICAgICBiOiAnZmFpbCcsCi0gICAgICAg
IH0sCi0gICAgICAgIHRvb01hbnlGYWlsdXJlczogZmFsc2UsCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAgIGJ1aWxkTmFtZTogJ2J1aWxkMicsCi0gICAgICAgIGZhaWxpbmdUZXN0czogewotICAgICAg
ICAgICAgYTogJ2ZhaWwnLAotICAgICAgICB9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZh
bHNlLAotICAgIH0sCi0gICAgewotICAgICAgICBidWlsZE5hbWU6ICdidWlsZDEnLAotICAgICAg
ICBmYWlsaW5nVGVzdHM6IHt9LAotICAgICAgICB0b29NYW55RmFpbHVyZXM6IGZhbHNlLAotICAg
IH0sCi1dOwotCi10ZXN0KCdwb3NzaWJseUZsYWt5VGVzdHMnLCAxLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBydW5z
LmZvckVhY2goZnVuY3Rpb24ocnVuKSB7IGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMo
cnVuLmJ1aWxkTmFtZSwgcnVuLmZhaWxpbmdUZXN0cywgcnVuLnRvb01hbnlGYWlsdXJlcykgfSk7
Ci0KLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbJ2EnXSk7Ci19
KTsKLQotdGVzdCgnYWxsRmFpbHVyZXMnLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0ZWN0
b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBydW5zLmZvckVhY2goZnVu
Y3Rpb24ocnVuKSB7IGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMocnVuLmJ1aWxkTmFt
ZSwgcnVuLmZhaWxpbmdUZXN0cywgcnVuLnRvb01hbnlGYWlsdXJlcykgfSk7Ci0KLSAgICBkZWVw
RXF1YWwoZGV0ZWN0b3IuYWxsRmFpbHVyZXMoJ2EnKSwgWwotICAgICAgICB7IGJ1aWxkOiAnYnVp
bGQ1JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWlsZDogJ2J1aWxkMycsIHJlc3Vs
dDogJ2NyYXNoJyB9LAotICAgICAgICB7IGJ1aWxkOiAnYnVpbGQyJywgcmVzdWx0OiAnZmFpbCcg
fSwKLSAgICBdKTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5hbGxGYWlsdXJlcygnYicpLCBb
Ci0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDYnLCByZXN1bHQ6ICdmYWlsJyB9LAotICAgICAgICB7
IGJ1aWxkOiAnYnVpbGQ1JywgcmVzdWx0OiAnZmFpbCcgfSwKLSAgICAgICAgeyBidWlsZDogJ2J1
aWxkNCcsIHJlc3VsdDogJ2ZhaWwnIH0sCi0gICAgICAgIHsgYnVpbGQ6ICdidWlsZDMnLCByZXN1
bHQ6ICdmYWlsJyB9LAotICAgIF0pOwotCi0gICAgZXF1YWwoZGV0ZWN0b3IuYWxsRmFpbHVyZXMo
J2MnKSwgbnVsbCk7Ci19KTsKLQotdGVzdCgnZmFpbGluZyBtYW55IHRpbWVzIGluIGEgcm93IHNo
b3VsZCBub3QgY291bnQgYXMgZmxha3knLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGV0ZWN0
b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1
aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBv
c3NpYmx5Rmxha3lUZXN0cywgW10pOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzOyArK2kp
Ci0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZh
bHNlKTsKLQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsK
LQotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFp
bCcgfSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0
cywgW10pOwotfSk7Ci0KLXRlc3QoJ2ZhaWxpbmcgYWZ0ZXIgcGFzc2luZyBtYW55IHRpbWVzIGlu
IGEgcm93IHNob3VsZCBub3QgY291bnQgYXMgZmxha3knLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBkZXRlY3Rv
ci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsK
LQotICAgIGRlZXBFcXVhbChkZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMsIFtdKTsKLQotICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgMTA7ICsraSkKLSAgICAgICAgZGV0ZWN0b3IuaW5jb3Jwb3Jh
dGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7fSwgZmFsc2UpOwotCi0gICAgZGVlcEVxdWFsKGRldGVj
dG9yLnBvc3NpYmx5Rmxha3lUZXN0cywgW10pOwotCi0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVU
ZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdmYWlsJyB9LCBmYWxzZSk7Ci0KLSAgICBkZWVwRXF1
YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3RzLCBbXSk7Ci19KTsKLQotdGVzdCgnZmxha2lu
ZyBub3cgc2hvdWxkIG92ZXJyaWRlIG1hbnkgcGFzdCBmYWlsdXJlcycsIDEsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBkZXRlY3RvciA9IG5ldyBGbGFreUxheW91dFRlc3REZXRlY3RvcigpOwotICAg
IGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwg
ZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30s
IGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsg
YTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRz
KCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQot
ICAgICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2Zh
aWwnIH0sIGZhbHNlKTsKLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9zc2libHlGbGFreVRlc3Rz
LCBbJ2EnXSk7Ci19KTsKLQotdGVzdCgncGFzc2luZyBub3cgc2hvdWxkIG92ZXJyaWRlIHBhc3Qg
Zmxha2luZXNzJywgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRldGVjdG9yID0gbmV3IEZsYWt5
TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKQot
ICAgICAgICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxz
ZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVpbGQnLCB7IGE6ICdm
YWlsJyB9LCBmYWxzZSk7Ci0gICAgZGV0ZWN0b3IuaW5jb3Jwb3JhdGVUZXN0UmVzdWx0cygnYnVp
bGQnLCB7fSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1
aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVz
dFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBkZWVwRXF1YWwoZGV0ZWN0b3IucG9z
c2libHlGbGFreVRlc3RzLCBbXSk7Ci19KTsKLQotdGVzdCgndG9vIG1hbnkgZmFpbHVyZXMgbm93
IHNob3VsZCBub3Qgb3ZlcnJpZGUgcGFzdCBmbGFraW5lc3MnLCAxLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZGV0ZWN0b3IgPSBuZXcgRmxha3lMYXlvdXRUZXN0RGV0ZWN0b3IoKTsKLSAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDEwOyArK2kpCi0gICAgICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVz
dFJlc3VsdHMoJ2J1aWxkJywge30sIHRydWUpOwotICAgIGRldGVjdG9yLmluY29ycG9yYXRlVGVz
dFJlc3VsdHMoJ2J1aWxkJywgeyBhOiAnZmFpbCcgfSwgZmFsc2UpOwotICAgIGRldGVjdG9yLmlu
Y29ycG9yYXRlVGVzdFJlc3VsdHMoJ2J1aWxkJywge30sIGZhbHNlKTsKLSAgICBkZXRlY3Rvci5p
bmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHsgYTogJ2ZhaWwnIH0sIGZhbHNlKTsKLSAg
ICBkZXRlY3Rvci5pbmNvcnBvcmF0ZVRlc3RSZXN1bHRzKCdidWlsZCcsIHt9LCBmYWxzZSk7Ci0g
ICAgZGVlcEVxdWFsKGRldGVjdG9yLnBvc3NpYmx5Rmxha3lUZXN0cywgWydhJ10pOwotfSk7Ci0K
LX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9GbGFreVRlc3RCdWdGb3JtLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zvcm0u
anMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVz
dEJ1Z0Zvcm0uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NCArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
ZnVuY3Rpb24gRmxha3lUZXN0QnVnRm9ybSh0ZXN0ZXIsIGZhaWxpbmdCdWlsZE5hbWVzLCBmYWls
aW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwgbmV3ZXN0QW5hbHl6ZWRCdWlsZCwgYW5hbHl6
ZWRCdWlsZENvdW50KSB7Ci0gICAgVGVzdFJlbGF0ZWRCdWdGb3JtLmNhbGwodGhpcywgdGVzdGVy
KTsKLQotICAgIHRoaXMuX2ZhaWxpbmdCdWlsZE5hbWVzID0gZmFpbGluZ0J1aWxkTmFtZXM7Ci0g
ICAgdGhpcy5fZmFpbGluZ1Rlc3QgPSBmYWlsaW5nVGVzdDsKLSAgICB0aGlzLl9vbGRlc3RBbmFs
eXplZEJ1aWxkID0gb2xkZXN0QW5hbHl6ZWRCdWlsZDsKLSAgICB0aGlzLl9uZXdlc3RBbmFseXpl
ZEJ1aWxkID0gbmV3ZXN0QW5hbHl6ZWRCdWlsZDsKLSAgICB0aGlzLl9hbmFseXplZEJ1aWxkQ291
bnQgPSBhbmFseXplZEJ1aWxkQ291bnQ7Ci0KLSAgICB0aGlzLmRlc2NyaXB0aW9uID0gdGhpcy5f
Y3JlYXRlQnVnRGVzY3JpcHRpb24oKTsKLSAgICB0aGlzLnRpdGxlID0gdGhpcy5fY3JlYXRlQnVn
VGl0bGUoKTsKLSAgICB0aGlzLnVybCA9IHRoaXMuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTCh0aGlz
Ll9mYWlsaW5nQnVpbGROYW1lc1swXSk7Ci19Ci0KLUZsYWt5VGVzdEJ1Z0Zvcm0ucHJvdG90eXBl
ID0gewotICAgIF9jcmVhdGVCdWdEZXNjcmlwdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh
ciBzZWxmID0gdGhpczsKLQotICAgICAgICB2YXIgcmVzdWx0ID0gc2VsZi5fZmFpbGluZ1Rlc3QK
LSAgICAgICAgICAgICsgJyBmYWlsZWQgJyArIHNlbGYuX2ZhaWxpbmdCdWlsZE5hbWVzLmxlbmd0
aCArICcgb3V0IG9mICcgKyBzZWxmLl9hbmFseXplZEJ1aWxkQ291bnQgKyAnIHRpbWVzJwotICAg
ICAgICAgICAgKyAnIG9uICcgKyBzZWxmLl90ZXN0ZXIubmFtZQotICAgICAgICAgICAgKyAnIGJl
dHdlZW4gcicgKyBzZWxmLl90ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoc2VsZi5fb2xk
ZXN0QW5hbHl6ZWRCdWlsZCkucmV2aXNpb24KLSAgICAgICAgICAgICsgJyBhbmQgcicgKyBzZWxm
Ll90ZXN0ZXIuYnVpbGRib3QucGFyc2VCdWlsZE5hbWUoc2VsZi5fbmV3ZXN0QW5hbHl6ZWRCdWls
ZCkucmV2aXNpb24KLSAgICAgICAgICAgICsgJyAoaW5jbHVzaXZlKS5cblxuJzsKLQotICAgICAg
ICByZXN1bHQgKz0gJ0ZhaWx1cmVzOlxuXG4nOwotICAgICAgICByZXN1bHQgKz0gc2VsZi5fZmFp
bGluZ0J1aWxkTmFtZXMubWFwKGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICAgICAgcmV0
dXJuIHNlbGYuX3Rlc3Rlci5yZXN1bHRzUGFnZVVSTChidWlsZE5hbWUpICsgJ1xuJzsKLSAgICAg
ICAgfSkuam9pbignJyk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAg
X2NyZWF0ZUJ1Z1RpdGxlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZhaWxp
bmdUZXN0ICsgJyBzb21ldGltZXMgZmFpbHMgb24gJyArIHRoaXMuX3Rlc3Rlci5uYW1lOwotICAg
IH0sCi19OwotCi1GbGFreVRlc3RCdWdGb3JtLnByb3RvdHlwZS5fX3Byb3RvX18gPSBUZXN0UmVs
YXRlZEJ1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvRmxh
a3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvRmxha3lUZXN0QnVnRm9ybV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTA0MikK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0ZsYWt5VGVzdEJ1Z0Zvcm1fdW5pdHRlc3RzLmpz
CShub25leGlzdGVudCkKQEAgLTEsODcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigp
IHsKLQotbW9kdWxlKCdGbGFreVRlc3RCdWdGb3JtJyk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZVRlc3RG
b3JtKGZhaWxpbmdCdWlsZE5hbWVzLCBmYWlsaW5nVGVzdCwgb2xkZXN0QW5hbHl6ZWRCdWlsZCwg
bmV3ZXN0QW5hbHl6ZWRCdWlsZCwgYW5hbHl6ZWRCdWlsZENvdW50KSB7Ci0gICAgdmFyIG1vY2tC
dWlsZGJvdCA9IHt9OwotICAgIG1vY2tCdWlsZGJvdC5wYXJzZUJ1aWxkTmFtZSA9IGZ1bmN0aW9u
KGJ1aWxkTmFtZSkgewotICAgICAgICB2YXIgbWF0Y2ggPSAvKFxkKykvLmV4ZWMoYnVpbGROYW1l
KTsKLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIHJldmlzaW9uOiBwYXJzZUludChtYXRj
aFsxXSwgMTApLAotICAgICAgICAgICAgYnVpbGROdW1iZXI6IHBhcnNlSW50KG1hdGNoWzJdLCAx
MCksCi0gICAgICAgIH07Ci0gICAgfTsKLQotICAgIHZhciBtb2NrQnVpbGRlciA9IHt9OwotICAg
IG1vY2tCdWlsZGVyLm5hbWUgPSAnW0JVSUxERVIgTkFNRV0nOwotICAgIG1vY2tCdWlsZGVyLmJ1
aWxkYm90ID0gbW9ja0J1aWxkYm90OwotICAgIG1vY2tCdWlsZGVyLnJlc3VsdHNQYWdlVVJMID0g
ZnVuY3Rpb24oYnVpbGROYW1lKSB7Ci0gICAgICAgIHJldHVybiAnW1JFU1VMVFMgUEFHRSBVUkwg
JyArIHRoaXMubmFtZSArICcsICcgKyBidWlsZE5hbWUgKyAnXSc7Ci0gICAgfQotCi0gICAgcmV0
dXJuIG5ldyBGbGFreVRlc3RCdWdGb3JtKG1vY2tCdWlsZGVyLCBmYWlsaW5nQnVpbGROYW1lcywg
ZmFpbGluZ1Rlc3QsIG9sZGVzdEFuYWx5emVkQnVpbGQsIG5ld2VzdEFuYWx5emVkQnVpbGQsIGFu
YWx5emVkQnVpbGRDb3VudCk7Ci19Ci0KLWNvbnN0IHRlc3RDYXNlcyA9IFsKLSAgICB7Ci0gICAg
ICAgIG9sZGVzdEFuYWx5emVkQnVpbGQ6ICdyMSAoMSknLAotICAgICAgICBuZXdlc3RBbmFseXpl
ZEJ1aWxkOiAncjE1ICg4KScsCi0gICAgICAgIGFuYWx5emVkQnVpbGRDb3VudDogOCwKLSAgICAg
ICAgZmFpbGluZ0J1aWxkTmFtZXM6IFsKLSAgICAgICAgICAgICdyMTAgKDUpJywKLSAgICAgICAg
ICAgICdyOCAoMiknLAotICAgICAgICBdLAotICAgICAgICBmYWlsaW5nVGVzdDogJ2NzczEvYmFz
aWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCcsCi0gICAgICAgIGV4cGVjdGVkRGVzY3JpcHRpb246
ICdjc3MxL2Jhc2ljL2NsYXNzX2FzX3NlbGVjdG9yLmh0bWwgZmFpbGVkIDIgb3V0IG9mIDggdGlt
ZXMgb24gW0JVSUxERVIgTkFNRV0gYmV0d2VlbiByMSBhbmQgcjE1IChpbmNsdXNpdmUpLlxuXG5G
YWlsdXJlczpcblxuW1JFU1VMVFMgUEFHRSBVUkwgW0JVSUxERVIgTkFNRV0sIHIxMCAoNSldXG5b
UkVTVUxUUyBQQUdFIFVSTCBbQlVJTERFUiBOQU1FXSwgcjggKDIpXVxuJywKLSAgICAgICAgZXhw
ZWN0ZWRUaXRsZTogJ2NzczEvYmFzaWMvY2xhc3NfYXNfc2VsZWN0b3IuaHRtbCBzb21ldGltZXMg
ZmFpbHMgb24gW0JVSUxERVIgTkFNRV0nLAotICAgICAgICBleHBlY3RlZFVSTDogJ1tSRVNVTFRT
IFBBR0UgVVJMIFtCVUlMREVSIE5BTUVdLCByMTAgKDUpXScsCi0gICAgfSwKLV07Ci0KLXRlc3Qo
J3RpdGxlcycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHRlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9u
KHRlc3RDYXNlKSB7Ci0gICAgICAgIHZhciBmb3JtID0gY3JlYXRlVGVzdEZvcm0odGVzdENhc2Uu
ZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZhaWxpbmdUZXN0LCB0ZXN0Q2FzZS5vbGRlc3RB
bmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5hbmFs
eXplZEJ1aWxkQ291bnQpOwotICAgICAgICBlcXVhbChmb3JtLnRpdGxlLCB0ZXN0Q2FzZS5leHBl
Y3RlZFRpdGxlKTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCdkZXNjcmlwdGlvbnMnLCAxLCBmdW5j
dGlvbigpIHsKLSAgICB0ZXN0Q2FzZXMuZm9yRWFjaChmdW5jdGlvbih0ZXN0Q2FzZSkgewotICAg
ICAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKHRlc3RDYXNlLmZhaWxpbmdCdWlsZE5hbWVz
LCB0ZXN0Q2FzZS5mYWlsaW5nVGVzdCwgdGVzdENhc2Uub2xkZXN0QW5hbHl6ZWRCdWlsZCwgdGVz
dENhc2UubmV3ZXN0QW5hbHl6ZWRCdWlsZCwgdGVzdENhc2UuYW5hbHl6ZWRCdWlsZENvdW50KTsK
LSAgICAgICAgZXF1YWwoZm9ybS5kZXNjcmlwdGlvbiwgdGVzdENhc2UuZXhwZWN0ZWREZXNjcmlw
dGlvbik7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgnVVJMcycsIDEsIGZ1bmN0aW9uKCkgewotICAg
IHRlc3RDYXNlcy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RDYXNlKSB7Ci0gICAgICAgIHZhciBmb3Jt
ID0gY3JlYXRlVGVzdEZvcm0odGVzdENhc2UuZmFpbGluZ0J1aWxkTmFtZXMsIHRlc3RDYXNlLmZh
aWxpbmdUZXN0LCB0ZXN0Q2FzZS5vbGRlc3RBbmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5uZXdlc3RB
bmFseXplZEJ1aWxkLCB0ZXN0Q2FzZS5hbmFseXplZEJ1aWxkQ291bnQpOwotICAgICAgICBlcXVh
bChmb3JtLnVybCwgdGVzdENhc2UuZXhwZWN0ZWRVUkwpOwotICAgIH0pOwotfSk7Ci0KLX0pKCk7
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9MYXlvdXRUZXN0SGlzdG9yeUFuYWx5emVy
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xheW91dFRlc3RIaXN0
b3J5QW5hbHl6ZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL0xheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODAg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIExheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIo
YnVpbGRlcikgewotICAgIHRoaXMuX2J1aWxkZXIgPSBidWlsZGVyOwotICAgIHRoaXMuX2ZsYWtp
bmVzc0RldGVjdG9yID0gbmV3IEZsYWt5TGF5b3V0VGVzdERldGVjdG9yKCk7Ci0gICAgdGhpcy5f
aGlzdG9yeSA9IHt9OwotICAgIHRoaXMuX2xvYWRlciA9IG5ldyBMYXlvdXRUZXN0UmVzdWx0c0xv
YWRlcihidWlsZGVyKTsKLSAgICB0aGlzLl90ZXN0UnVuc1NpbmNlTGFzdEludGVyZXN0aW5nQ2hh
bmdlID0gMDsKLX0KLQotTGF5b3V0VGVzdEhpc3RvcnlBbmFseXplci5wcm90b3R5cGUgPSB7Ci0g
ICAgLyoKLSAgICAgKiBQZXJpb2RpY2FsbHkgY2FsbHMgY2FsbGJhY2sgdW50aWwgYWxsIGN1cnJl
bnQgZmFpbHVyZXMgaGF2ZSBiZWVuIGV4cGxhaW5lZC4gQ2FsbGJhY2sgaXMKLSAgICAgKiBwYXNz
ZWQgYW4gb2JqZWN0IGxpa2UgdGhlIGZvbGxvd2luZzoKLSAgICAgKiB7Ci0gICAgICogICAgICdo
aXN0b3J5JzogewotICAgICAqICAgICAgICAgJ3IxMjM0NyAoNjgxKSc6IHsKLSAgICAgKiAgICAg
ICAgICAgICAndG9vTWFueUZhaWx1cmVzJzogZmFsc2UsCi0gICAgICogICAgICAgICAgICAgJ3Rl
c3RzJzogewotICAgICAqICAgICAgICAgICAgICAgICAnY3NzMS9iYXNpYy9jbGFzc19hc19zZWxl
Y3RvcjIuaHRtbCc6ICdmYWlsJywKLSAgICAgKiAgICAgICAgICAgICB9LAotICAgICAqICAgICAg
ICAgfSwKLSAgICAgKiAgICAgICAgICdyMTIzNDYgKDY4MCknOiB7Ci0gICAgICogICAgICAgICAg
ICAgJ3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNlLAotICAgICAqICAgICAgICAgICAgICd0ZXN0cyc6
IHt9LAotICAgICAqICAgICAgICAgfSwKLSAgICAgKiAgICAgICAgICdyMTIzNDUgKDY3OSknOiB7
Ci0gICAgICogICAgICAgICAgICAgJ3Rvb01hbnlGYWlsdXJlcyc6IGZhbHNlLAotICAgICAqICAg
ICAgICAgICAgICd0ZXN0cyc6IHsKLSAgICAgKiAgICAgICAgICAgICAgICAgJ2NzczEvYmFzaWMv
Y2xhc3NfYXNfc2VsZWN0b3IuaHRtbCc6ICdjcmFzaCcsCi0gICAgICogICAgICAgICAgICAgfSwK
LSAgICAgKiAgICAgICAgIH0sCi0gICAgICogICAgIH0sCi0gICAgICogICAgICdwb3NzaWJseUZs
YWt5JzogewotICAgICAqICAgICAgICAgJ2Zhc3Qvd29ya2Vycy93b3JrZXItdGVzdC5odG1sJzog
WwotICAgICAqICAgICAgICAgICAgIHsgJ2J1aWxkJzogJ3IxMjM0NCAoNjc4KScsICdyZXN1bHQn
OiAnZmFpbCcgfSwKLSAgICAgKiAgICAgICAgICAgICB7ICdidWlsZCc6ICdyMTIzNDAgKDY3Nikn
LCAncmVzdWx0JzogJ2NyYXNoJyB9LAotICAgICAqICAgICAgICAgXSwKLSAgICAgKiAgICAgfSwK
LSAgICAgKiB9Ci0gICAgICogRWFjaCBidWlsZCBjb250YWlucyBqdXN0IHRoZSBmYWlsdXJlcyB0
aGF0IGEpIGFyZSBzdGlsbCBvY2N1cnJpbmcgb24gdGhlIGJvdHMsIGFuZCBiKSB3ZXJlIG5ldwot
ICAgICAqIGluIHRoYXQgYnVpbGQuCi0gICAgICovCi0gICAgc3RhcnQ6IGZ1bmN0aW9uKGNhbGxi
YWNrKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgc2VsZi5fYnVpbGRlci5n
ZXRCdWlsZE5hbWVzKGZ1bmN0aW9uKGJ1aWxkTmFtZXMpIHsKLSAgICAgICAgICAgIHNlbGYuX2Fu
YWx5emVCdWlsZHMoYnVpbGROYW1lcywgY2FsbGJhY2ssIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIHNlbGYuX2J1aWxkZXIuZ2V0T2xkQnVpbGROYW1lcyhmdW5jdGlvbihvbGRCdWlsZE5h
bWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2FuYWx5emVCdWlsZHMob2xkQnVpbGRO
YW1lcywgY2FsbGJhY2spOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfSk7Ci0g
ICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUJ1aWxkczogZnVuY3Rpb24oYnVpbGRO
YW1lcywgY2FsbGJhY2ssIGFuYWx5emVkQWxsQnVpbGRzQ2FsbGJhY2spIHsKLSAgICAgICAgdmFy
IHNlbGYgPSB0aGlzOwotICAgICAgICBmdW5jdGlvbiBpbm5lcihidWlsZEluZGV4KSB7Ci0gICAg
ICAgICAgICBzZWxmLl9pbmNvcnBvcmF0ZUJ1aWxkSGlzdG9yeShidWlsZE5hbWVzLCBidWlsZElu
ZGV4LCBmdW5jdGlvbihjYWxsQWdhaW4pIHsKLSAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHsK
LSAgICAgICAgICAgICAgICAgICAgaGlzdG9yeTogc2VsZi5faGlzdG9yeSwKLSAgICAgICAgICAg
ICAgICAgICAgcG9zc2libHlGbGFreToge30sCi0gICAgICAgICAgICAgICAgfTsKLSAgICAgICAg
ICAgICAgICBzZWxmLl9mbGFraW5lc3NEZXRlY3Rvci5wb3NzaWJseUZsYWt5VGVzdHMuZm9yRWFj
aChmdW5jdGlvbih0ZXN0TmFtZSkgewotICAgICAgICAgICAgICAgICAgICBkYXRhLnBvc3NpYmx5
Rmxha3lbdGVzdE5hbWVdID0gc2VsZi5fZmxha2luZXNzRGV0ZWN0b3IuYWxsRmFpbHVyZXModGVz
dE5hbWUpOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAgdmFyIG5leHRJ
bmRleCA9IGJ1aWxkSW5kZXggKyAxOwotICAgICAgICAgICAgICAgIHZhciBhbmFseXplZEFsbEJ1
aWxkcyA9IG5leHRJbmRleCA+PSBidWlsZE5hbWVzLmxlbmd0aDsKLSAgICAgICAgICAgICAgICB2
YXIgaGF2ZU1vcmVEYXRhVG9GZXRjaCA9ICFhbmFseXplZEFsbEJ1aWxkcyB8fCBhbmFseXplZEFs
bEJ1aWxkc0NhbGxiYWNrOwotCi0gICAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrUmVxdWVzdGVk
U3RvcCA9ICFjYWxsYmFjayhkYXRhLCBoYXZlTW9yZURhdGFUb0ZldGNoKTsKLSAgICAgICAgICAg
ICAgICBpZiAoY2FsbGJhY2tSZXF1ZXN0ZWRTdG9wKQotICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWNhbGxBZ2FpbikKLSAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgaWYgKGFuYWx5emVkQWxsQnVpbGRzKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChhbmFseXplZEFsbEJ1aWxkc0NhbGxiYWNrKQotICAgICAg
ICAgICAgICAgICAgICAgICAgYW5hbHl6ZWRBbGxCdWlsZHNDYWxsYmFjaygpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgaW5uZXIobmV4dEluZGV4KSB9LCAwKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0gICAgICAgIGlubmVyKDApOwotICAgIH0sCi0KLSAgICBfaW5j
b3Jwb3JhdGVCdWlsZEhpc3Rvcnk6IGZ1bmN0aW9uKGJ1aWxkTmFtZXMsIGJ1aWxkSW5kZXgsIGNh
bGxiYWNrKSB7Ci0gICAgICAgIHZhciBwcmV2aW91c0J1aWxkTmFtZSA9IE9iamVjdC5rZXlzKHRo
aXMuX2hpc3RvcnkpLmxhc3QoKTsKLSAgICAgICAgdmFyIG5leHRCdWlsZE5hbWUgPSBidWlsZE5h
bWVzW2J1aWxkSW5kZXhdOwotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgc2Vs
Zi5fbG9hZGVyLnN0YXJ0KG5leHRCdWlsZE5hbWUsIGZ1bmN0aW9uKHRlc3RzLCB0b29NYW55RmFp
bHVyZXMpIHsKLSAgICAgICAgICAgIGlmICh0b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAg
ICAgICB2YXIgZmlyc3RCdWlsZE5hbWUgPSBPYmplY3Qua2V5cyhzZWxmLl9oaXN0b3J5KVswXTsK
LSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZmlyc3QgKGkuZS4sIGN1cnJlbnQgb3IgbW9zdCBy
ZWNlbnQpIGJ1aWxkIGV4aXRlZCBlYXJseSBkdWUgdG8gdG9vIG1hbnkKLSAgICAgICAgICAgICAg
ICAvLyBmYWlsdXJlcywgd2Ugd2FudCB0byBwcm9jZXNzIG90aGVyIHRvby1tYW55LWZhaWx1cmVz
IGJ1aWxkcyBub3JtYWxseSB0byB0cnkgdG8KLSAgICAgICAgICAgICAgICAvLyBmaWd1cmUgb3V0
IHdoZW4gdGhlIHRvby1tYW55LWZhaWx1cmVzIHN0YXJ0ZWQgb2NjdXJyaW5nLiBJZiB0aGUgZmly
c3QvY3VycmVudAotICAgICAgICAgICAgICAgIC8vIGJ1aWxkIGRpZCBub3QgZXhpdCBkdWUgdG8g
dG9vIG1hbnkgZmFpbHVyZXMsIHRoZW4gdG9vLW1hbnktZmFpbHVyZXMgYnVpbGRzIHdpbGwKLSAg
ICAgICAgICAgICAgICAvLyBvbmx5IGNvbmZ1c2Ugb3VyIGFuYWx5c2lzIChzaW5jZSB0aGV5IHJ1
biBhIHNlbWktYXJiaXRyYXJ5IHN1YnNldCBvZiB0ZXN0cyksIHNvCi0gICAgICAgICAgICAgICAg
Ly8gd2Ugc2hvdWxkIGp1c3Qgc2tpcCB0aGVtIGVudGlyZWx5LgotICAgICAgICAgICAgICAgIGlm
IChmaXJzdEJ1aWxkTmFtZSAmJiAhc2VsZi5faGlzdG9yeVtmaXJzdEJ1aWxkTmFtZV0udG9vTWFu
eUZhaWx1cmVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHRydWUpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICArK3NlbGYuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdDaGFuZ2U7
Ci0KLSAgICAgICAgICAgIHZhciBoaXN0b3J5SXRlbSA9IHsKLSAgICAgICAgICAgICAgICB0b29N
YW55RmFpbHVyZXM6IHRvb01hbnlGYWlsdXJlcywKLSAgICAgICAgICAgICAgICB0ZXN0czoge30s
Ci0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc2VsZi5faGlzdG9yeVtuZXh0QnVpbGROYW1l
XSA9IGhpc3RvcnlJdGVtOwotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNIaXN0b3J5SXRlbTsK
LSAgICAgICAgICAgIGlmIChwcmV2aW91c0J1aWxkTmFtZSkKLSAgICAgICAgICAgICAgICBwcmV2
aW91c0hpc3RvcnlJdGVtID0gc2VsZi5faGlzdG9yeVtwcmV2aW91c0J1aWxkTmFtZV07Ci0KLSAg
ICAgICAgICAgIHZhciBuZXdGbGFreVRlc3RzID0gc2VsZi5fZmxha2luZXNzRGV0ZWN0b3IuaW5j
b3Jwb3JhdGVUZXN0UmVzdWx0cyhuZXh0QnVpbGROYW1lLCB0ZXN0cywgdG9vTWFueUZhaWx1cmVz
KTsKLSAgICAgICAgICAgIGlmIChuZXdGbGFreVRlc3RzLmxlbmd0aCkgewotICAgICAgICAgICAg
ICAgIHNlbGYuX3Rlc3RSdW5zU2luY2VMYXN0SW50ZXJlc3RpbmdDaGFuZ2UgPSAwOwotICAgICAg
ICAgICAgICAgIC8vIFJlbW92ZSBhbGwgcG9zc2libHkgZmxha3kgdGVzdHMgZnJvbSB0aGUgZmFp
bHVyZSBoaXN0b3J5LCBzaW5jZSB3aGVuIHRoZXkgZmFpbGVkCi0gICAgICAgICAgICAgICAgLy8g
aXMgbm8gbG9uZ2VyIG1lYW5pbmdmdWwuCi0gICAgICAgICAgICAgICAgbmV3Rmxha3lUZXN0cy5m
b3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAodmFy
IGJ1aWxkTmFtZSBpbiBzZWxmLl9oaXN0b3J5KQotICAgICAgICAgICAgICAgICAgICAgICAgZGVs
ZXRlIHNlbGYuX2hpc3RvcnlbYnVpbGROYW1lXS50ZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAgICAg
ICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGZvciAodmFyIHRlc3ROYW1l
IGluIHRlc3RzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzSGlzdG9yeUl0ZW0pIHsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gcHJldmlvdXNIaXN0b3J5SXRl
bS50ZXN0cykpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICAgICAgZGVsZXRlIHByZXZpb3VzSGlzdG9yeUl0ZW0udGVzdHNbdGVzdE5hbWVdOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBoaXN0b3J5SXRlbS50ZXN0c1t0ZXN0TmFt
ZV0gPSB0ZXN0c1t0ZXN0TmFtZV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBw
cmV2aW91c1VuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCA9IHByZXZpb3VzQnVpbGROYW1lID8gT2Jq
ZWN0LmtleXMoc2VsZi5faGlzdG9yeVtwcmV2aW91c0J1aWxkTmFtZV0udGVzdHMpLmxlbmd0aCA6
IDA7Ci0gICAgICAgICAgICB2YXIgdW5leHBsYWluZWRGYWlsdXJlc0NvdW50ID0gT2JqZWN0Lmtl
eXMoc2VsZi5faGlzdG9yeVtuZXh0QnVpbGROYW1lXS50ZXN0cykubGVuZ3RoOwotCi0gICAgICAg
ICAgICBpZiAocHJldmlvdXNVbmV4cGxhaW5lZEZhaWx1cmVzQ291bnQgJiYgIXVuZXhwbGFpbmVk
RmFpbHVyZXNDb3VudCkKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0UnVuc1NpbmNlTGFzdElu
dGVyZXN0aW5nQ2hhbmdlID0gMDsKLQotICAgICAgICAgICAgY29uc3QgbWluaW11bVJlcXVpcmVk
VGVzdFJ1bnNXaXRob3V0SW50ZXJlc3RpbmdDaGFuZ2VzID0gNTsKLSAgICAgICAgICAgIGNhbGxi
YWNrKHVuZXhwbGFpbmVkRmFpbHVyZXNDb3VudCB8fCBzZWxmLl90ZXN0UnVuc1NpbmNlTGFzdElu
dGVyZXN0aW5nQ2hhbmdlIDwgbWluaW11bVJlcXVpcmVkVGVzdFJ1bnNXaXRob3V0SW50ZXJlc3Rp
bmdDaGFuZ2VzKTsKLSAgICAgICAgfSwKLSAgICAgICAgZnVuY3Rpb24odGVzdHMpIHsKLSAgICAg
ICAgICAgIC8vIFNvbWUgdGVzdHMgZmFpbGVkLCBidXQgd2UgY291bGRuJ3QgZmV0Y2ggcmVzdWx0
cy5odG1sIChwZXJoYXBzIGJlY2F1c2UgdGhlIHRlc3QKLSAgICAgICAgICAgIC8vIHJ1biBhYm9y
dGVkIGVhcmx5IGZvciBzb21lIHJlYXNvbikuIEp1c3Qgc2tpcCB0aGlzIGJ1aWxkIGVudGlyZWx5
LgotICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi19OwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTGF5b3V0VGVzdFJlc3VsdHNM
b2FkZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL0xh
eW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzCShub25leGlzdGVudCkKQEAgLTEsMTQ1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1mdW5jdGlvbiBMYXlvdXRUZXN0UmVzdWx0c0xvYWRlcihidWlsZGVyKSB7
Ci0gICAgdGhpcy5fYnVpbGRlciA9IGJ1aWxkZXI7Ci19Ci0KLUxheW91dFRlc3RSZXN1bHRzTG9h
ZGVyLnByb3RvdHlwZSA9IHsKLSAgICBzdGFydDogZnVuY3Rpb24oYnVpbGROYW1lLCBjYWxsYmFj
aywgZXJyb3JDYWxsYmFjaykgewotICAgICAgICB2YXIgY2FjaGVLZXkgPSAnTGF5b3V0VGVzdFJl
c3VsdHNMb2FkZXIuJyArIHRoaXMuX2J1aWxkZXIubmFtZSArICcuJyArIGJ1aWxkTmFtZTsKLSAg
ICAgICAgY29uc3QgY3VycmVudENhY2hlZERhdGFWZXJzaW9uID0gODsKLSAgICAgICAgaWYgKFBl
cnNpc3RlbnRDYWNoZS5jb250YWlucyhjYWNoZUtleSkpIHsKLSAgICAgICAgICAgIHZhciBjYWNo
ZWREYXRhID0gUGVyc2lzdGVudENhY2hlLmdldChjYWNoZUtleSk7Ci0gICAgICAgICAgICBpZiAo
Y2FjaGVkRGF0YS52ZXJzaW9uID09PSBjdXJyZW50Q2FjaGVkRGF0YVZlcnNpb24pIHsKLSAgICAg
ICAgICAgICAgICBpZiAoY2FjaGVkRGF0YS5lcnJvcikKLSAgICAgICAgICAgICAgICAgICAgZXJy
b3JDYWxsYmFjayhjYWNoZWREYXRhLnRlc3RzLCBjYWNoZWREYXRhLnRvb01hbnlGYWlsdXJlcyk7
Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhjYWNo
ZWREYXRhLnRlc3RzLCBjYWNoZWREYXRhLnRvb01hbnlGYWlsdXJlcyk7Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHJlc3Vs
dCA9IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGZhbHNlLCBlcnJvcjogZmFsc2UsIHZl
cnNpb246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwotCi0gICAgICAgIGZ1bmN0aW9uIGNh
Y2hlUGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxiYWNrKHBhcnNlUmVzdWx0KSB7Ci0gICAgICAgICAg
ICByZXN1bHQudGVzdHMgPSBwYXJzZVJlc3VsdC50ZXN0czsKLSAgICAgICAgICAgIHJlc3VsdC50
b29NYW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFpbHVyZXM7Ci0KLSAgICAgICAg
ICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICBj
YWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBzZWxmLl9mZXRjaEFuZFBhcnNl
TlJXVFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxsYmFjaywg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzZWxmLl9mZXRjaEFuZFBhcnNlT1JXVFJlc3VsdHMo
YnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxsYmFjaywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmV0Y2ggcmVzdWx0cyBmb3IgdGhpcyBi
dWlsZC4KLSAgICAgICAgICAgICAgICByZXN1bHQuZXJyb3IgPSB0cnVlOwotICAgICAgICAgICAg
ICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0KLSAgICBfZmV0Y2hBbmRQYXJz
ZU5SV1RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykgewotICAgICAgICBnZXRSZXNvdXJjZSh0aGlzLl9idWlsZGVyLnJlc3VsdHNEaXJl
Y3RvcnlVUkwoYnVpbGROYW1lKSArICdmdWxsX3Jlc3VsdHMuanNvbicsIGZ1bmN0aW9uKHhocikg
ewotICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKChuZXcgTlJXVFJlc3VsdHNQYXJzZXIoKSku
cGFyc2UoeGhyLnJlc3BvbnNlVGV4dCkpOwotICAgICAgICB9LAotICAgICAgICBmdW5jdGlvbih4
aHIpIHsKLSAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKLSAgICAgICAgfSk7Ci0gICAgfSwK
LQotICAgIF9mZXRjaEFuZFBhcnNlT1JXVFJlc3VsdHM6IGZ1bmN0aW9uKGJ1aWxkTmFtZSwgc3Vj
Y2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgIHZhciBwYXJzZWRCdWlsZE5h
bWUgPSB0aGlzLl9idWlsZGVyLmJ1aWxkYm90LnBhcnNlQnVpbGROYW1lKGJ1aWxkTmFtZSk7Ci0K
LSAgICAgICAgLy8gaHR0cDovL3dlYmtpdC5vcmcvYi82MjM4MCB3YXMgZml4ZWQgaW4gcjg5NjEw
LgotICAgICAgICB2YXIgcmVzdWx0c0hUTUxTdXBwb3J0c1Rvb01hbnlGYWlsdXJlc0luZm8gPSBw
YXJzZWRCdWlsZE5hbWUucmV2aXNpb24gPj0gODk2MTA7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9
IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGZhbHNlIH07Ci0KLSAgICAgICAgdmFyIHNl
bGYgPSB0aGlzOwotCi0gICAgICAgIGZ1bmN0aW9uIGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKLSAgICAgICAgICAgIGdldFJlc291cmNl
KHNlbGYuX2J1aWxkZXIucmVzdWx0c1BhZ2VVUkwoYnVpbGROYW1lKSwgZnVuY3Rpb24oeGhyKSB7
Ci0gICAgICAgICAgICAgICAgdmFyIHBhcnNlUmVzdWx0ID0gKG5ldyBPUldUUmVzdWx0c1BhcnNl
cigpKS5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKLSAgICAgICAgICAgICAgICByZXN1bHQudGVz
dHMgPSBwYXJzZVJlc3VsdC50ZXN0czsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0c0hUTUxT
dXBwb3J0c1Rvb01hbnlGYWlsdXJlc0luZm8pCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50
b29NYW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFpbHVyZXM7Ci0gICAgICAgICAg
ICAgICAgc3VjY2Vzc0NhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgZnVu
Y3Rpb24oeGhyKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgZmFpbGVkIHRvIGZldGNoIHJlc3Vs
dHMuaHRtbC4KLSAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGZldGNoTnVtYmVyT2ZGYWlsaW5nVGVz
dHMoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgICAgICAgICBzZWxmLl9i
dWlsZGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKHBhcnNlZEJ1aWxkTmFtZS5idWlsZE51bWJl
ciwgZnVuY3Rpb24oZmFpbGluZ1Rlc3RDb3VudCwgdG9vTWFueUZhaWx1cmVzKSB7Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHRvb01hbnlGYWlsdXJlczsKLQotICAg
ICAgICAgICAgICAgIGlmIChmYWlsaW5nVGVzdENvdW50IDwgMCkgewotICAgICAgICAgICAgICAg
ICAgICAvLyBUaGUgbnVtYmVyIG9mIGZhaWxpbmcgdGVzdHMgY291bGRuJ3QgYmUgZGV0ZXJtaW5l
ZC4KLSAgICAgICAgICAgICAgICAgICAgZXJyb3JDYWxsYmFjaygpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgc3VjY2Vz
c0NhbGxiYWNrKGZhaWxpbmdUZXN0Q291bnQpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAocmVzdWx0c0hUTUxTdXBwb3J0c1Rvb01hbnlGYWlsdXJlc0luZm8pIHsK
LSAgICAgICAgICAgIGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBmZXRjaE51bWJlck9mRmFpbGlu
Z1Rlc3RzKGZ1bmN0aW9uKGZhaWxpbmdUZXN0Q291bnQpIHsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCFmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBBbGwg
dGVzdHMgcGFzc2VkLCBzbyBubyByZXN1bHRzLmh0bWwgd2FzIGdlbmVyYXRlZC4KLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjayhyZXN1bHQpOwotICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgLy8gU29tZXRoaW5nIHdlbnQgd3Jvbmcgd2l0aCBmZXRjaGluZyByZXN1bHRzLgotICAg
ICAgICAgICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7Ci0gICAgICAgICAgICAgICAgfSwgZXJy
b3JDYWxsYmFjayk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGZldGNoTnVtYmVyT2ZGYWlsaW5nVGVzdHMoZnVuY3Rpb24oZmFpbGlu
Z1Rlc3RDb3VudCkgewotICAgICAgICAgICAgaWYgKCFmYWlsaW5nVGVzdENvdW50KSB7Ci0gICAg
ICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBhc3NlZC4KLSAgICAgICAgICAgICAgICBzdWNjZXNz
Q2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIC8vIEZpbmQgb3V0IHdoaWNoIHRlc3RzIGZhaWxlZC4KLSAgICAgICAg
ICAgIGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg
ICBzdWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKLSAgICAgICAgICAgIH0sIGVycm9yQ2FsbGJhY2sp
OwotICAgICAgICB9LCBlcnJvckNhbGxiYWNrKTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFyc2VyLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL05SV1RSZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiAyNjkwNDIp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OUldUUmVzdWx0c1BhcnNlci5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDk5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
LSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0g
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBOUldUUmVzdWx0
c1BhcnNlcigpIHsKLX0KLQotTlJXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0gewotICAgIHBh
cnNlOiBmdW5jdGlvbih1bmV4cGVjdGVkUmVzdWx0c0pTKSB7Ci0gICAgICAgIHZhciBkYXRhOwot
ICAgICAgICBmdW5jdGlvbiBBRERfUkVTVUxUUyh4KSB7Ci0gICAgICAgICAgICBkYXRhID0geDsK
LSAgICAgICAgfQotCi0gICAgICAgIGV2YWwodW5leHBlY3RlZFJlc3VsdHNKUyk7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRhdGEpOwotCi0gICAgICAgIHZhciByZXN1bHQgPSB7IHRlc3RzOiB7
fSwgdG9vTWFueUZhaWx1cmVzOiBkYXRhLmludGVycnVwdGVkIH07Ci0KLSAgICAgICAgZnVuY3Rp
b24gZm9yRWFjaFRlc3QodHJlZSwgaGFuZGxlciwgb3B0X3ByZWZpeCkgewotICAgICAgICAgICAg
dmFyIHByZWZpeCA9IG9wdF9wcmVmaXggfHwgJyc7Ci0KLSAgICAgICAgICAgIGZvciAodmFyIGtl
eSBpbiB0cmVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIG5ld1ByZWZpeCA9IHByZWZpeCA/IChw
cmVmaXggKyAnLycgKyBrZXkpIDoga2V5OwotICAgICAgICAgICAgICAgIGlmICgnYWN0dWFsJyBp
biB0cmVlW2tleV0pIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3RPYmplY3QgPSB0cmVl
W2tleV07Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RPYmplY3QubmFtZSA9IG5ld1ByZWZpeDsK
LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlcih0ZXN0T2JqZWN0KTsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yRWFjaFRlc3QodHJlZVtrZXldLCBoYW5k
bGVyLCBuZXdQcmVmaXgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gaXNGYWlsdXJlRXhwZWN0ZWQoZXhwZWN0ZWQsIGFjdHVhbCkgewotICAgICAgICAgICAg
aWYgKGFjdHVhbCA9PT0gJ1NLSVAnKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgICAgICAgICB2YXIgZXhwZWN0ZWRBcnJheSA9IGV4cGVjdGVkLnNwbGl0KCcgJyk7Ci0gICAg
ICAgICAgICB2YXIgYWN0dWFsQXJyYXkgPSBhY3R1YWwuc3BsaXQoJyAnKTsKLSAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYWN0dWFsQXJyYXkubGVuZ3RoOyBpKyspIHsKLSAgICAgICAg
ICAgICAgICB2YXIgYWN0dWFsVmFsdWUgPSBhY3R1YWxBcnJheVtpXTsKLSAgICAgICAgICAgICAg
ICBpZiAoZXhwZWN0ZWRBcnJheS5jb250YWlucyhhY3R1YWxWYWx1ZSkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChleHBlY3RlZEFycmF5LmNvbnRh
aW5zKCdGQUlMJykgJiYgWydJTUFHRScsICdURVhUJywgJ0lNQUdFK1RFWFQnXS5jb250YWlucyhh
Y3R1YWxWYWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjb252ZXJ0TlJXVFJlc3VsdFN0cmlu
Zyhucnd0UmVzdWx0KSB7Ci0gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB7Ci0gICAg
ICAgICAgICAgICAgQ1JBU0g6ICdjcmFzaCcsCi0gICAgICAgICAgICAgICAgJ0lNQUdFK1RFWFQn
OiAnZmFpbCcsCi0gICAgICAgICAgICAgICAgSU1BR0U6ICdmYWlsJywKLSAgICAgICAgICAgICAg
ICBURVhUOiAnZmFpbCcsCi0gICAgICAgICAgICAgICAgVElNRU9VVDogJ3RpbWVvdXQnLAotICAg
ICAgICAgICAgfTsKLQotICAgICAgICAgICAgaWYgKG5yd3RSZXN1bHQgaW4gdHJhbnNsYXRpb25z
KQotICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc2xhdGlvbnNbbnJ3dFJlc3VsdF07Ci0KLSAg
ICAgICAgICAgIGlmIChucnd0UmVzdWx0LmNvbnRhaW5zKCcgJykpCi0gICAgICAgICAgICAgICAg
cmV0dXJuICdmbGFreSc7Ci0KLSAgICAgICAgICAgIHJldHVybiAndW5rbm93biBmYWlsdXJlIHR5
cGUgJyArIG5yd3RSZXN1bHQ7Ci0gICAgICAgIH0KLQotICAgICAgICBmb3JFYWNoVGVzdChkYXRh
LnRlc3RzLCBmdW5jdGlvbih0ZXN0KSB7Ci0gICAgICAgICAgICBpZiAoaXNGYWlsdXJlRXhwZWN0
ZWQodGVzdC5leHBlY3RlZCwgdGVzdC5hY3R1YWwpKQotICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0Lm5hbWVdID0geyBmYWlsdXJlVHlwZTogY29u
dmVydE5SV1RSZXN1bHRTdHJpbmcodGVzdC5hY3R1YWwpIH07Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9OZXdCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRz
L05ld0J1Z0Zvcm0uanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL05ld0J1Z0Zvcm0uanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NiArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotZnVuY3Rpb24gTmV3QnVnRm9ybSgpIHsKLX0KLQotTmV3QnVnRm9ybS5wcm90b3R5cGUg
PSB7Ci0gICAgZG9tRWxlbWVudDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBmb3JtRGF0YSA9
IHt9OwotCi0gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudCkKLSAgICAgICAgICAgIGZvcm1EYXRh
LmNvbXBvbmVudCA9IHRoaXMuY29tcG9uZW50OwotICAgICAgICBpZiAodGhpcy5kZXNjcmlwdGlv
bikKLSAgICAgICAgICAgIGZvcm1EYXRhLmNvbW1lbnQgPSB0aGlzLmRlc2NyaXB0aW9uOwotICAg
ICAgICBpZiAodGhpcy5rZXl3b3JkcykKLSAgICAgICAgICAgIGZvcm1EYXRhLmtleXdvcmRzID0g
dGhpcy5rZXl3b3JkczsKLSAgICAgICAgaWYgKHRoaXMub3BlcmF0aW5nU3lzdGVtKQotICAgICAg
ICAgICAgZm9ybURhdGEub3Bfc3lzID0gdGhpcy5vcGVyYXRpbmdTeXN0ZW07Ci0gICAgICAgIGlm
ICh0aGlzLnBsYXRmb3JtKQotICAgICAgICAgICAgZm9ybURhdGEucmVwX3BsYXRmb3JtID0gdGhp
cy5wbGF0Zm9ybTsKLSAgICAgICAgaWYgKHRoaXMucHJvZHVjdCkKLSAgICAgICAgICAgIGZvcm1E
YXRhLnByb2R1Y3QgPSB0aGlzLnByb2R1Y3Q7Ci0gICAgICAgIGlmICh0aGlzLnRpdGxlKQotICAg
ICAgICAgICAgZm9ybURhdGEuc2hvcnRfZGVzYyA9IHRoaXMudGl0bGU7Ci0gICAgICAgIGlmICh0
aGlzLnVybCkKLSAgICAgICAgICAgIGZvcm1EYXRhLmJ1Z19maWxlX2xvYyA9IHRoaXMudXJsOwot
ICAgICAgICBpZiAodGhpcy52ZXJzaW9uKQotICAgICAgICAgICAgZm9ybURhdGEudmVyc2lvbiA9
IHRoaXMudmVyc2lvbjsKLQotICAgICAgICB2YXIgZm9ybSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2Zvcm0nKTsKLSAgICAgICAgZm9ybS5tZXRob2QgPSAnUE9TVCc7Ci0gICAgICAgIGZvcm0u
YWN0aW9uID0gY29uZmlnLmtCdWd6aWxsYVVSTCArICcvZW50ZXJfYnVnLmNnaSc7Ci0KLSAgICAg
ICAgZm9yICh2YXIga2V5IGluIGZvcm1EYXRhKSB7Ci0gICAgICAgICAgICB2YXIgaW5wdXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpOwotICAgICAgICAgICAgaW5wdXQudHlwZSA9
ICdoaWRkZW4nOwotICAgICAgICAgICAgaW5wdXQubmFtZSA9IGtleTsKLSAgICAgICAgICAgIGlu
cHV0LnZhbHVlID0gZm9ybURhdGFba2V5XTsKLSAgICAgICAgICAgIGZvcm0uYXBwZW5kQ2hpbGQo
aW5wdXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZvcm07Ci0gICAgfSwKLX07Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9OZXdCdWdGb3JtX3VuaXR0ZXN0cy5q
cwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvTmV3QnVnRm9y
bV91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotKGZ1bmN0aW9uKCkgewotCi1tb2R1bGUoJ05ld0J1Z0Zvcm0nKTsKLQotY29uc3QgdGVzdEZv
cm1EYXRhID0gewotICAgIGNvbXBvbmVudDogeyBmb3JtTmFtZTogJ2NvbXBvbmVudCcsIHZhbHVl
OiAnVG9vbHMgLyBUZXN0cycgfSwKLSAgICBkZXNjcmlwdGlvbjogeyBmb3JtTmFtZTogJ2NvbW1l
bnQnLCB2YWx1ZTogJ1RoaXMgaXMgYSBkZXNjcmlwdGlvblxuXG53aXRoXG5uZXdsaW5lcycgfSwK
LSAgICBrZXl3b3JkczogeyBmb3JtTmFtZTogJ2tleXdvcmRzJywgdmFsdWU6ICdRdCwgUGxhdGZv
cm1Pbmx5JyB9LAotICAgIG9wZXJhdGluZ1N5c3RlbTogeyBmb3JtTmFtZTogJ29wX3N5cycsIHZh
bHVlOiAnV2luZG93cyA3JyB9LAotICAgIHBsYXRmb3JtOiB7IGZvcm1OYW1lOiAncmVwX3BsYXRm
b3JtJywgdmFsdWU6ICdQQycgfSwKLSAgICBwcm9kdWN0OiB7IGZvcm1OYW1lOiAncHJvZHVjdCcs
IHZhbHVlOiAnV2ViS2l0JyB9LAotICAgIHRpdGxlOiB7IGZvcm1OYW1lOiAnc2hvcnRfZGVzYycs
IHZhbHVlOiAnVGhpcyBpcyBhIGJ1ZyB0aXRsZScgfSwKLSAgICB1cmw6IHsgZm9ybU5hbWU6ICdi
dWdfZmlsZV9sb2MnLCB2YWx1ZTogJ2h0dHA6Ly9leGFtcGxlLmNvbS9wYXRoP3F1ZXJ5PWZvbyNh
bmNob3InIH0sCi0gICAgdmVyc2lvbjogeyBmb3JtTmFtZTogJ3ZlcnNpb24nLCB2YWx1ZTogJzUy
OCsgKE5pZ2h0bHkgQnVpbGQpJyB9LAotfTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0oKSB7
Ci0gICAgdmFyIGZvcm0gPSBuZXcgTmV3QnVnRm9ybSgpOwotICAgIGZvciAodmFyIGtleSBpbiB0
ZXN0Rm9ybURhdGEpIHsKLSAgICAgICAgZm9ybVtrZXldID0gdGVzdEZvcm1EYXRhW2tleV0udmFs
dWU7Ci0gICAgfQotICAgIHJldHVybiBmb3JtOwotfQotCi10ZXN0KCdwcm9wZXJ0aWVzIGFyZSBz
ZXQnLCA5LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKCk7Ci0K
LSAgICBmb3IgKHZhciBrZXkgaW4gdGVzdEZvcm1EYXRhKSB7Ci0gICAgICAgIGVxdWFsKGZvcm1b
a2V5XSwgdGVzdEZvcm1EYXRhW2tleV0udmFsdWUpOwotICAgIH0KLX0pOwotCi10ZXN0KCdkb21F
bGVtZW50KCkgcG9zdHMgdG8gZW50ZXJfYnVnLmNnaScsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBmb3JtRWxlbWVudCA9IGNyZWF0ZVRlc3RGb3JtKCkuZG9tRWxlbWVudCgpOwotICAgIGVxdWFs
KGZvcm1FbGVtZW50LnRhZ05hbWUsICdGT1JNJyk7Ci0gICAgZXF1YWwoZm9ybUVsZW1lbnQubWV0
aG9kLCAncG9zdCcpOwotICAgIGVxdWFsKGZvcm1FbGVtZW50LmFjdGlvbiwgJ2h0dHBzOi8vYnVn
cy53ZWJraXQub3JnL2VudGVyX2J1Zy5jZ2knKTsKLX0pOwotCi10ZXN0KCdkb21FbGVtZW50KCkg
Y29udGFpbnMgb25seSBoaWRkZW4gaW5wdXQgZWxlbWVudHMnLCA5LCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgZWxlbWVudHMgPSBjcmVhdGVUZXN0Rm9ybSgpLmRvbUVsZW1lbnQoKS5lbGVtZW50czsK
LSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
IGVxdWFsKGVsZW1lbnRzW2ldLnR5cGUsICdoaWRkZW4nKTsKLSAgICB9Ci19KTsKLQotdGVzdCgn
ZG9tRWxlbWVudCgpIGNvbnRhaW5zIGFsbCBmb3JtIHZhbHVlcycsIDksIGZ1bmN0aW9uKCkgewot
ICAgIHZhciBmb3JtRWxlbWVudCA9IGNyZWF0ZVRlc3RGb3JtKCkuZG9tRWxlbWVudCgpOwotCi0g
ICAgZm9yICh2YXIga2V5IGluIHRlc3RGb3JtRGF0YSkgewotICAgICAgICB2YXIgZGF0YSA9IHRl
c3RGb3JtRGF0YVtrZXldOwotICAgICAgICBlcXVhbChmb3JtRWxlbWVudFtkYXRhLmZvcm1OYW1l
XS52YWx1ZSwgZGF0YS52YWx1ZSwga2V5KTsKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL09SV1RSZXN1bHRzUGFyc2VyLmpzCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9PUldUUmVzdWx0c1BhcnNlci5qcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1mdW5jdGlvbiBPUldU
UmVzdWx0c1BhcnNlcigpIHsKLX0KLQotT1JXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0gewot
ICAgIHBhcnNlOiBmdW5jdGlvbihyZXN1bHRzSFRNTFN0cmluZykgewotICAgICAgICB2YXIgcmVz
dWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlGYWlsdXJlczogZmFsc2UgfTsKLQotICAgICAgICB2
YXIgcm9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgcm9vdC5p
bm5lckhUTUwgPSByZXN1bHRzSFRNTFN0cmluZzsKLQotICAgICAgICAvLyBOb3RlIHRoYXQgc29t
ZSBvbGQgcmVzdWx0cy5odG1sIGZpbGVzIHdvbid0IGNvbnRhaW4gdGhpcyBlbGVtZW50IGV2ZW4g
aWYgd2UgaGFkIHRvIHN0b3AKLSAgICAgICAgLy8gcnVubmluZyBlYXJseSBkdWUgdG8gdG9vIG1h
bnkgZmFpbHVyZXMuIE91ciBjYWxsZXIgd2lsbCBoYXZlIHRvIGZpZ3VyZSB0aGF0IG91dAotICAg
ICAgICAvLyB0aGVtc2VsdmVzLgotICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gcm9v
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdzdG9wcGVkLXJ1bm5pbmctZWFybHktbWVzc2FnZScp
Lmxlbmd0aCA+IDA7Ci0KLSAgICAgICAgZnVuY3Rpb24gcGFyc2VSZXN1bHRUYWJsZShyZWdleCkg
ewotICAgICAgICAgICAgdmFyIHBhcmFncmFwaCA9IEFycmF5LnByb3RvdHlwZS5maW5kRmlyc3Qu
Y2FsbChyb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ3AnKSwgZnVuY3Rpb24ocGFyYWdyYXBoKSB7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QocGFyYWdyYXBoLmlubmVyVGV4dCk7Ci0g
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIGlmICghcGFyYWdyYXBoKQotICAgICAgICAgICAg
ICAgIHJldHVybiBbXTsKLSAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFncmFwaC5uZXh0RWxl
bWVudFNpYmxpbmc7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJsZS5ub2RlTmFtZSA9
PT0gJ1RBQkxFJyk7Ci0gICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxs
KHRhYmxlLnJvd3MsIGZ1bmN0aW9uKHJvdykgewotICAgICAgICAgICAgICAgIHZhciBsaW5rcyA9
IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOwotICAgICAgICAgICAgICAgIHZhciByZXN1
bHQgPSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hbWU6IGxpbmtzWzBdLmlubmVyVGV4dCwKLSAg
ICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGlu
a3MubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL15jcmFz
aCBsb2cgXCgoLiopXCkkLy5leGVjKGxpbmtzW2ldLmlubmVyVGV4dCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0LmNyYXNoaW5nU3ltYm9sID0gbWF0Y2hbMV07Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBw
YXJzZVJlc3VsdFRhYmxlKC9kaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHMvKS5mb3JFYWNo
KGZ1bmN0aW9uKHRlc3REYXRhKSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEu
bmFtZV0gPSB7IGZhaWx1cmVUeXBlOiAnZmFpbCcgfTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHBh
cnNlUmVzdWx0VGFibGUoL3RpbWVkIG91dC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsK
LSAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6
ICd0aW1lb3V0JyB9OwotICAgICAgICB9KTsKLSAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvdG9v
bCB0byBjcmFzaC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKLSAgICAgICAgICAgIHJl
c3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsKLSAgICAgICAgICAgICAgICBmYWlsdXJlVHlw
ZTogJ2NyYXNoJywKLSAgICAgICAgICAgICAgICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jh
c2hpbmdTeW1ib2wsCi0gICAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAgICAgICAgcGFyc2VS
ZXN1bHRUYWJsZSgvV2ViIHByb2Nlc3MgdG8gY3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RE
YXRhKSB7Ci0gICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7Ci0gICAg
ICAgICAgICAgICAgZmFpbHVyZVR5cGU6ICd3ZWJwcm9jZXNzIGNyYXNoJywKLSAgICAgICAgICAg
ICAgICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCi0gICAgICAgICAg
ICB9OwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIH0sCi19OwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1BlcnNpc3RlbnRDYWNoZS5qcwkocmV2aXNp
b24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvUGVyc2lzdGVudENhY2hlLmpz
CShub25leGlzdGVudCkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBQZXJzaXN0
ZW50Q2FjaGUgPSB7Ci0gICAgY29udGFpbnM6IGZ1bmN0aW9uKGtleSkgewotICAgICAgICByZXR1
cm4ga2V5IGluIGxvY2FsU3RvcmFnZTsKLSAgICB9LAotCi0gICAgZ2V0OiBmdW5jdGlvbihrZXkp
IHsKLSAgICAgICAgdmFyIHN0cmluZyA9IGxvY2FsU3RvcmFnZVtrZXldOwotICAgICAgICBpZiAo
IXN0cmluZykKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAgICAgLy8gRklYTUU6
IFdlIGNvdWxkIHVwZGF0ZSB0aGUgZGF0ZSBzdG9yZWQgd2l0aCB0aGUgdmFsdWUgaGVyZSB0byBt
YWtlIHRoaXMgbW9yZSBvZiBhbiBNUlUKLSAgICAgICAgLy8gY2FjaGUgKGluc3RlYWQgb2YgbW9z
dC1yZWNlbnRseS1zdG9yZWQpLCBidXQgdGhhdCB3b3VsZCByZXN1bHQgaW4gZXh0cmEgZGlzayBh
Y2Nlc3MgdGhhdAotICAgICAgICAvLyBtaWdodCBub3QgYmUgc28gZ3JlYXQuCi0gICAgICAgIHJl
dHVybiBKU09OLnBhcnNlKHRoaXMuX3BhcnNlRGF0ZUFuZEpTT05Gcm9tU3RyaW5nKHN0cmluZyku
anNvbik7Ci0gICAgfSwKLQotICAgIHNldDogZnVuY3Rpb24oa2V5LCB2YWx1ZSkgewotICAgICAg
ICB0cnkgewotICAgICAgICAgICAgbG9jYWxTdG9yYWdlW2tleV0gPSB0aGlzLl9hZGREYXRlVG9K
U09OU3RyaW5nKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7Ci0gICAgICAgIH0gY2F0Y2ggKGUpIHsK
LSAgICAgICAgICAgIGlmIChlLmNvZGUgIT09IDIyKSAvLyBRVU9UQV9FWENFRURFRF9FUlIKLSAg
ICAgICAgICAgICAgICB0aHJvdyBlOwotCi0gICAgICAgICAgICAvLyBXZSd2ZSBydW4gb3V0IG9m
IHNwYWNlIGluIGxvY2FsU3RvcmFnZS4gTGV0J3MganVzdCB0aHJvdyBhd2F5IGV2ZXJ5dGhpbmcg
YW5kIHRyeQotICAgICAgICAgICAgLy8gYWdhaW4uCi0gICAgICAgICAgICB0aGlzLl9lbXB0eUNh
Y2hlKCk7Ci0gICAgICAgICAgICB0aGlzLnNldChrZXksIHZhbHVlKTsKLSAgICAgICAgfQotICAg
IH0sCi0KLSAgICBwcnVuZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBub3cgPSBEYXRlLm5v
dygpOwotICAgICAgICBmb3IgKHZhciBrZXkgaW4gbG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgICAg
ICB2YXIgZGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZUFuZEpTT05Gcm9tU3RyaW5nKGxvY2FsU3RvcmFn
ZVtrZXldKS5kYXRlOwotICAgICAgICAgICAgaWYgKG5vdyAtIGRhdGUgPD0gdGhpcy5fZGF0YUFn
ZUxpbWl0TVMpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBkZWxldGUg
bG9jYWxTdG9yYWdlW2tleV07Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLnNldCh0aGlzLl9s
YXN0UHJ1bmVEYXRlS2V5LCBub3cpOwotICAgIH0sCi0KLSAgICBfYWRkRGF0ZVRvSlNPTlN0cmlu
ZzogZnVuY3Rpb24oanNvblN0cmluZykgewotICAgICAgICByZXR1cm4gRGF0ZS5ub3coKSArIHRo
aXMuX2RhdGVBbmRKU09OU2VwYXJhdG9yICsganNvblN0cmluZzsKLSAgICB9LAotCi0gICAgX2Rh
dGFBZ2VMaW1pdE1TOiAxMDAwICogNjAgKiA2MCAqIDI0ICogMS4xLCAvLyBKdXN0IG92ZXIgb25l
IGRheQotCi0gICAgX2RhdGVBbmRKU09OU2VwYXJhdG9yOiAnOiAnLAotCi0gICAgX2VtcHR5Q2Fj
aGU6IGZ1bmN0aW9uKCkgewotICAgICAgICBmb3IgKHZhciBrZXkgaW4gbG9jYWxTdG9yYWdlKQot
ICAgICAgICAgICAgZGVsZXRlIGxvY2FsU3RvcmFnZVtrZXldOwotICAgIH0sCi0KLSAgICBfcGFy
c2VEYXRlQW5kSlNPTkZyb21TdHJpbmc6IGZ1bmN0aW9uKHN0cmluZykgewotICAgICAgICB2YXIg
c2VwYXJhdG9ySW5kZXggPSBzdHJpbmcuaW5kZXhPZih0aGlzLl9kYXRlQW5kSlNPTlNlcGFyYXRv
cik7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZShwYXJzZUlu
dChzdHJpbmcuc3Vic3RyaW5nKDAsIHNlcGFyYXRvckluZGV4KSwgMTApKSwKLSAgICAgICAgICAg
IGpzb246IHN0cmluZy5zdWJzdHJpbmcoc2VwYXJhdG9ySW5kZXggKyB0aGlzLl9kYXRlQW5kSlNP
TlNlcGFyYXRvci5sZW5ndGgpLAotICAgICAgICB9OwotICAgIH0sCi19OwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1Rlc3RSZWxhdGVkQnVnRm9ybS5qcwkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtLmpzCShu
b25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFRlc3RS
ZWxhdGVkQnVnRm9ybSh0ZXN0ZXIpIHsKLSAgICBOZXdCdWdGb3JtLmNhbGwodGhpcyk7Ci0KLSAg
ICB0aGlzLl90ZXN0ZXIgPSB0ZXN0ZXI7Ci0KLSAgICB0aGlzLmNvbXBvbmVudCA9IFdlYktpdEJ1
Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3RzOwotICAgIHRoaXMua2V5d29yZHMgPSBbCi0gICAg
ICAgIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsCi0gICAgICAgIFdl
YktpdEJ1Z3ppbGxhLktleXdvcmQuTWFraW5nQm90c1JlZCwKLSAgICBdLmpvaW4oJywgJyk7Ci0g
ICAgdGhpcy5vcGVyYXRpbmdTeXN0ZW0gPSB0aGlzLl9jb21wdXRlT3BlcmF0aW5nU3lzdGVtKCk7
Ci0gICAgdGhpcy5wbGF0Zm9ybSA9IHRoaXMuX2NvbXB1dGVQbGF0Zm9ybSgpOwotICAgIHRoaXMu
cHJvZHVjdCA9IFdlYktpdEJ1Z3ppbGxhLlByb2R1Y3QuV2ViS2l0OwotICAgIHRoaXMudmVyc2lv
biA9IFdlYktpdEJ1Z3ppbGxhLlZlcnNpb24uTmlnaHRseTsKLX0KLQotVGVzdFJlbGF0ZWRCdWdG
b3JtLnByb3RvdHlwZSA9IHsKLSAgICBkb21FbGVtZW50OiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIGZvcm0gPSBOZXdCdWdGb3JtLnByb3RvdHlwZS5kb21FbGVtZW50LmNhbGwodGhpcyk7Ci0g
ICAgICAgIGZvcm0uY2xhc3NOYW1lID0gJ25ldy1idWctZm9ybSc7Ci0gICAgICAgIGZvcm0udGFy
Z2V0ID0gJ19ibGFuayc7Ci0gICAgICAgIHJldHVybiBmb3JtOwotICAgIH0sCi0KLSAgICBfY29t
cHV0ZU9wZXJhdGluZ1N5c3RlbTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmICgvV2luZG93cyA3
Ly50ZXN0KHRoaXMuX3Rlc3Rlci5uYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBXZWJLaXRCdWd6
aWxsYS5PcGVyYXRpbmdTeXN0ZW0uV2luZG93czc7Ci0gICAgICAgIGlmICgvV2luZG93cyBYUC8u
dGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVnemls
bGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUDsKLSAgICAgICAgaWYgKC9Tbm93TGVvcGFyZC8u
dGVzdCh0aGlzLl90ZXN0ZXIubmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gV2ViS2l0QnVnemls
bGEuT3BlcmF0aW5nU3lzdGVtLlNub3dMZW9wYXJkOwotICAgICAgICBpZiAoL0xlb3BhcmQvLnRl
c3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxh
Lk9wZXJhdGluZ1N5c3RlbS5MZW9wYXJkOwotICAgICAgICByZXR1cm4gJyc7Ci0gICAgfSwKLQot
ICAgIF9jb21wdXRlUGxhdGZvcm06IGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoL1dpbmRvd3Mv
LnRlc3QodGhpcy5fdGVzdGVyLm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3pp
bGxhLlBsYXRmb3JtLlBDOwotICAgICAgICBpZiAoL0xlb3BhcmQvLnRlc3QodGhpcy5fdGVzdGVy
Lm5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLk1hY2lu
dG9zaDsKLSAgICAgICAgcmV0dXJuICcnOwotICAgIH0sCi19OwotCi1UZXN0UmVsYXRlZEJ1Z0Zv
cm0ucHJvdG90eXBlLl9fcHJvdG9fXyA9IE5ld0J1Z0Zvcm0ucHJvdG90eXBlOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvVGVzdFJlbGF0ZWRCdWdGb3JtX3VuaXR0ZXN0cy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9UZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5p
dHRlc3RzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9U
ZXN0UmVsYXRlZEJ1Z0Zvcm1fdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsOTQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCdUZXN0UmVsYXRlZEJ1
Z0Zvcm0nKTsKLQotZnVuY3Rpb24gY3JlYXRlVGVzdEZvcm0odGVzdGVyTmFtZSkgewotICAgIHZh
ciBtb2NrQnVpbGRib3QgPSB7fTsKLSAgICBtb2NrQnVpbGRib3QucGFyc2VCdWlsZE5hbWUgPSBm
dW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gLyhcZCspLy5leGVjKGJ1
aWxkTmFtZSk7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZpc2lvbjogcGFyc2VJ
bnQobWF0Y2hbMV0sIDEwKSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBwYXJzZUludChtYXRj
aFsyXSwgMTApLAotICAgICAgICB9OwotICAgIH07Ci0KLSAgICB2YXIgbW9ja0J1aWxkZXIgPSB7
fTsKLSAgICBtb2NrQnVpbGRlci5uYW1lID0gdGVzdGVyTmFtZTsKLSAgICBtb2NrQnVpbGRlci5i
dWlsZGJvdCA9IG1vY2tCdWlsZGJvdDsKLSAgICBtb2NrQnVpbGRlci5yZXN1bHRzUGFnZVVSTCA9
IGZ1bmN0aW9uKGJ1aWxkTmFtZSkgewotICAgICAgICByZXR1cm4gJ1tSRVNVTFRTIFBBR0UgVVJM
ICcgKyB0aGlzLm5hbWUgKyAnLCAnICsgYnVpbGROYW1lICsgJ10nOwotICAgIH0KLQotICAgIHJl
dHVybiBuZXcgVGVzdFJlbGF0ZWRCdWdGb3JtKG1vY2tCdWlsZGVyKTsKLX0KLQotdGVzdCgnY29t
cG9uZW50IGFuZCBrZXl3b3JkcyBhcmUgc2V0JywgMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGZv
cm0gPSBjcmVhdGVUZXN0Rm9ybSgnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKScpOwotCi0gICAg
ZXF1YWwoZm9ybS5jb21wb25lbnQsIFdlYktpdEJ1Z3ppbGxhLkNvbXBvbmVudC5Ub29sc1Rlc3Rz
KTsKLSAgICBkZWVwRXF1YWwoZm9ybS5rZXl3b3Jkcy5zcGxpdCgnLCAnKSwgW1dlYktpdEJ1Z3pp
bGxhLktleXdvcmQuTGF5b3V0VGVzdEZhaWx1cmUsIFdlYktpdEJ1Z3ppbGxhLktleXdvcmQuTWFr
aW5nQm90c1JlZF0pOwotfSk7Ci0KLWNvbnN0IHRlc3RlcnMgPSB7Ci0gICAgJ0dUSyBMaW51eCAz
Mi1iaXQgUmVsZWFzZSc6IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiAnJywKLSAgICAgICAg
cGxhdGZvcm06ICcnLAotICAgIH0sCi0gICAgJ0xlb3BhcmQgSW50ZWwgUmVsZWFzZSAoVGVzdHMp
JzogewotICAgICAgICBvcGVyYXRpbmdTeXN0ZW06IFdlYktpdEJ1Z3ppbGxhLk9wZXJhdGluZ1N5
c3RlbS5MZW9wYXJkLAotICAgICAgICBwbGF0Zm9ybTogV2ViS2l0QnVnemlsbGEuUGxhdGZvcm0u
TWFjaW50b3NoLAotICAgIH0sCi0gICAgJ1Nub3dMZW9wYXJkIEludGVsIFJlbGVhc2UgKFRlc3Rz
KSc6IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdT
eXN0ZW0uU25vd0xlb3BhcmQsCi0gICAgICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0
Zm9ybS5NYWNpbnRvc2gsCi0gICAgfSwKLSAgICAnV2luZG93cyA3IFJlbGVhc2UgKFRlc3RzKSc6
IHsKLSAgICAgICAgb3BlcmF0aW5nU3lzdGVtOiBXZWJLaXRCdWd6aWxsYS5PcGVyYXRpbmdTeXN0
ZW0uV2luZG93czcsCi0gICAgICAgIHBsYXRmb3JtOiBXZWJLaXRCdWd6aWxsYS5QbGF0Zm9ybS5Q
QywKLSAgICB9LAotICAgICdXaW5kb3dzIFhQIERlYnVnIChUZXN0cyknOiB7Ci0gICAgICAgIG9w
ZXJhdGluZ1N5c3RlbTogV2ViS2l0QnVnemlsbGEuT3BlcmF0aW5nU3lzdGVtLldpbmRvd3NYUCwK
LSAgICAgICAgcGxhdGZvcm06IFdlYktpdEJ1Z3ppbGxhLlBsYXRmb3JtLlBDLAotICAgIH0sCi19
OwotCi10ZXN0KCdvcGVyYXRpbmcgc3lzdGVtIGlzIGRlZHVjZWQnLCA1LCBmdW5jdGlvbigpIHsK
LSAgICBmb3IgKHZhciBuYW1lIGluIHRlc3RlcnMpIHsKLSAgICAgICAgdmFyIGZvcm0gPSBjcmVh
dGVUZXN0Rm9ybShuYW1lKTsKLSAgICAgICAgZXF1YWwoZm9ybS5vcGVyYXRpbmdTeXN0ZW0sIHRl
c3RlcnNbbmFtZV0ub3BlcmF0aW5nU3lzdGVtKTsKLSAgICB9Ci19KTsKLQotdGVzdCgncGxhdGZv
cm0gaXMgZGVkdWNlZCcsIDUsIGZ1bmN0aW9uKCkgewotICAgIGZvciAodmFyIG5hbWUgaW4gdGVz
dGVycykgewotICAgICAgICB2YXIgZm9ybSA9IGNyZWF0ZVRlc3RGb3JtKG5hbWUpOwotICAgICAg
ICBlcXVhbChmb3JtLnBsYXRmb3JtLCB0ZXN0ZXJzW25hbWVdLnBsYXRmb3JtKTsKLSAgICB9Ci19
KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1RyYWMuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVHJhYy5qcwkocmV2aXNpb24gMjY5MDQy
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvVHJhYy5qcwkobm9uZXhpc3RlbnQpCkBAIC0x
LDE3NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHRyYWMgPSB0cmFjIHx8IHt9OwotCi0oZnVu
Y3Rpb24oKSB7Ci0KLWZ1bmN0aW9uIGZpbmRVc2luZ1JlZ0V4cChzdHJpbmcsIHJlZ2V4cCkKLXsK
LSAgICB2YXIgbWF0Y2ggPSByZWdleHAuZXhlYyhzdHJpbmcpOwotICAgIGlmIChtYXRjaCkKLSAg
ICAgICAgcmV0dXJuIG1hdGNoWzFdOwotICAgIHJldHVybiBudWxsOwotfQotCi1mdW5jdGlvbiBm
aW5kUmV2aWV3ZXIobWVzc2FnZSkKLXsKLSAgICB2YXIgcmVnZXhwID0gL1Jldmlld2VkIGJ5IChb
Xi5dKykvOwotICAgIHJldHVybiBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwgcmVnZXhwKTsKLX0K
LQotZnVuY3Rpb24gZmluZEF1dGhvcihtZXNzYWdlKQotewotICAgIHZhciByZWdleHAgPSAvUGF0
Y2ggYnkgKFtePF0rKSA8LzsKLSAgICByZXR1cm4gZmluZFVzaW5nUmVnRXhwKG1lc3NhZ2UsIHJl
Z2V4cCk7Ci19Ci0KLWZ1bmN0aW9uIGZpbmRCdWdJRChtZXNzYWdlKQotewotICAgIHZhciByZWdl
eHAgPSAvXC9zaG93X2J1Zy5jZ2lcP2lkPShcZCspLzsKLSAgICByZXR1cm4gcGFyc2VJbnQoZmlu
ZFVzaW5nUmVnRXhwKG1lc3NhZ2UsIHJlZ2V4cCksIDEwKTsKLX0KLQotZnVuY3Rpb24gZmluZFJl
dmlzaW9uKHRpdGxlKQotewotICAgIHZhciByZWdleHAgPSAvXlJldmlzaW9uIChcZCspOi87Ci0g
ICAgcmV0dXJuIHBhcnNlSW50KGZpbmRVc2luZ1JlZ0V4cCh0aXRsZSwgcmVnZXhwKSwgMTApOwot
fQotCi1mdW5jdGlvbiBmaW5kU3VtbWFyeShtZXNzYWdlKQotewotICAgIHZhciBsaW5lcyA9IG1l
c3NhZ2Uuc3BsaXQoJ1xuJyk7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7
ICsraSkgewotICAgICAgICB2YXIgbGluZSA9IGxpbmVzW2ldCi0gICAgICAgIGlmIChmaW5kQnVn
SUQobGluZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKGZpbmRSZXZpZXdl
cihsaW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBPbGQtc3R5bGUgY29t
bWl0IG1lc3NhZ2UuCi0gICAgICAgIGlmICgvXlxkXGRcZFxkLVxkXGQtXGRcZC8uZXhlYyhsaW5l
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBpZiAobGluZS5sZW5ndGggPiAwKQot
ICAgICAgICAgICAgcmV0dXJuIGxpbmU7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBmaW5kUmV2ZXJ0
KG1lc3NhZ2UpCi17Ci0gICAgdmFyIHJlZ2V4cCA9IC8oPzpyb2xsaW5nIG91dHxyZXZlcnRpbmcp
IHIoXGQrKVwuLzsKLSAgICB2YXIgcmV2aXNpb24gPSBmaW5kVXNpbmdSZWdFeHAobWVzc2FnZSwg
cmVnZXhwKTsKLSAgICBpZiAoIXJldmlzaW9uKQotICAgICAgICByZXR1cm4gdW5kZWZpbmVkOwot
ICAgIHJldHVybiBwYXJzZUludChyZXZpc2lvbiwgMTApOwotfQotCi0vLyBGSVhNRTogQ29uc2lk
ZXIgZXhwb3NpbmcgdGhpcyBtZXRob2QgZm9yIHVuaXQgdGVzdGluZy4KLWZ1bmN0aW9uIHBhcnNl
Q29tbWl0RGF0YShyZXNwb25zZVhNTCkKLXsKLSAgICB2YXIgY29tbWl0cyA9IEFycmF5LnByb3Rv
dHlwZS5tYXAuY2FsbChyZXNwb25zZVhNTC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaXRlbScpLCBm
dW5jdGlvbihpdGVtKSB7Ci0gICAgICAgIHZhciB0aXRsZSA9IGl0ZW0uZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ3RpdGxlJylbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgIHZhciBhdXRob3IgPSBpdGVt
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhdXRob3InKVswXSB8fCBpdGVtLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdkYzpjcmVhdG9yJylbMF07Ci0gICAgICAgIGF1dGhvciA9IGF1dGhvci50ZXh0Q29u
dGVudDsKLSAgICAgICAgdmFyIHRpbWUgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdwdWJE
YXRlJylbMF0udGV4dENvbnRlbnQ7Ci0KLSAgICAgICAgLy8gRklYTUU6IFRoaXMgaXNuJ3QgYSB2
ZXJ5IGhpZ2gtZmlkZWxpdHkgcmVwcm9kdWN0aW9uIG9mIHRoZSBjb21taXQgbWVzc2FnZSwKLSAg
ICAgICAgLy8gYnV0IGl0J3MgZ29vZCBlbm91Z2ggZm9yIG91ciBwdXJwb3Nlcy4KLSAgICAgICAg
dmFyIGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBj
b250YWluZXIuaW5uZXJIVE1MID0gaXRlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGVzY3JpcHRp
b24nKVswXS50ZXh0Q29udGVudDsKLSAgICAgICAgdmFyIG1lc3NhZ2UgPSBjb250YWluZXIuaW5u
ZXJUZXh0OwotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAncmV2aXNpb24nOiBmaW5k
UmV2aXNpb24odGl0bGUpLAotICAgICAgICAgICAgJ3RpdGxlJzogdGl0bGUsCi0gICAgICAgICAg
ICAndGltZSc6IHRpbWUsCi0gICAgICAgICAgICAnc3VtbWFyeSc6IGZpbmRTdW1tYXJ5KG1lc3Nh
Z2UpLAotICAgICAgICAgICAgJ2F1dGhvcic6IGZpbmRBdXRob3IobWVzc2FnZSkgfHwgYXV0aG9y
LAotICAgICAgICAgICAgJ3Jldmlld2VyJzogZmluZFJldmlld2VyKG1lc3NhZ2UpLAotICAgICAg
ICAgICAgJ2J1Z0lEJzogZmluZEJ1Z0lEKG1lc3NhZ2UpLAotICAgICAgICAgICAgJ21lc3NhZ2Un
OiBtZXNzYWdlLAotICAgICAgICAgICAgJ3JldmVydGVkUmV2aXNpb24nOiBmaW5kUmV2ZXJ0KG1l
c3NhZ2UpLAotICAgICAgICB9OwotICAgIH0pOwotCi0gICAgcmV0dXJuIGNvbW1pdHM7Ci19Ci0K
LXZhciBnX2NhY2hlID0gbmV3IGJhc2UuQXN5bmNocm9ub3VzQ2FjaGUoZnVuY3Rpb24oa2V5LCBj
YWxsYmFjaykgewotICAgIHZhciBleHBsb2RlZEtleSA9IGtleS5zcGxpdCgnXG4nKTsKLQotICAg
IHZhciBwYXRoID0gZXhwbG9kZWRLZXlbMF07Ci0gICAgdmFyIHN0YXJ0UmV2aXNpb24gPSBleHBs
b2RlZEtleVsxXTsKLSAgICB2YXIgZW5kUmV2aXNpb24gPSBleHBsb2RlZEtleVsyXTsKLQotICAg
IHZhciB1cmwgPSB0cmFjLmxvZ1VSTChwYXRoLCBzdGFydFJldmlzaW9uLCBlbmRSZXZpc2lvbiwg
dHJ1ZSwgdHJ1ZSk7Ci0KLSAgICBuZXQuZ2V0KHVybCwgZnVuY3Rpb24oY29tbWl0RGF0YSkgewot
ICAgICAgICBjYWxsYmFjayhwYXJzZUNvbW1pdERhdGEoY29tbWl0RGF0YSkpOwotICAgIH0pOwot
fSk7Ci0KLXRyYWMuY2hhbmdlc2V0VVJMID0gZnVuY3Rpb24ocmV2aXNpb24pCi17Ci0gICAgcmV0
dXJuIGNvbmZpZy5rVHJhY1VSTCArICcvY2hhbmdlc2V0LycgKyByZXZpc2lvbjsKLX07Ci0KLXRy
YWMubG9nVVJMID0gZnVuY3Rpb24ocGF0aCwgc3RhcnRSZXZpc2lvbiwgZW5kUmV2aXNpb24sIHNo
b3dGdWxsQ29tbWl0TG9ncywgZm9ybWF0QXNSU1MpCi17Ci0gICAgdmFyIHF1ZXJ5UGFyYW1ldGVy
cyA9IHsKLSAgICAgICAgcmV2OiBlbmRSZXZpc2lvbiwKLSAgICAgICAgc3RvcF9yZXY6IHN0YXJ0
UmV2aXNpb24sCi0gICAgICAgIC8vIFRyYWMgcmVxdWlyZXMgbGltaXQgdG8gYmUgMSBtb3JlIHRo
YW4gdGhlIG51bWJlciBvZiByZXZpc2lvbnMgd2UgYWN0dWFsbHkgd2FudCB0byBzaG93LgotICAg
ICAgICAvLyBTZWUgPGh0dHA6Ly90cmFjLmVkZ2V3YWxsLm9yZy90aWNrZXQvMTAzMTc+LgotICAg
ICAgICBsaW1pdDogZW5kUmV2aXNpb24gLSBzdGFydFJldmlzaW9uICsgMiwKLSAgICB9OwotCi0g
ICAgaWYgKHNob3dGdWxsQ29tbWl0TG9ncykKLSAgICAgICAgcXVlcnlQYXJhbWV0ZXJzLnZlcmJv
c2UgPSAnb24nOwotICAgIGlmIChmb3JtYXRBc1JTUykKLSAgICAgICAgcXVlcnlQYXJhbWV0ZXJz
LmZvcm1hdCA9ICdyc3MnOwotCi0gICAgcmV0dXJuIGNvbmZpZy5rVHJhY1VSTCArICcvbG9nLycg
KyBwYXRoICsgJz8nICsgJC5wYXJhbShxdWVyeVBhcmFtZXRlcnMpOwotfTsKLQotdHJhYy5yZWNl
bnRDb21taXREYXRhID0gZnVuY3Rpb24ocGF0aCwgbGltaXQsIGNhbGxiYWNrKQotewotICAgIHZh
ciB1cmwgPSBjb25maWcua1RyYWNVUkwgKyAnL2xvZy8nICsgcGF0aCArICc/JyArICQucGFyYW0o
ewotICAgICAgICAndmVyYm9zZSc6ICdvbicsCi0gICAgICAgICdmb3JtYXQnOiAncnNzJywKLSAg
ICAgICAgJ2xpbWl0JzogbGltaXQsCi0gICAgfSk7Ci0KLSAgICBuZXQuZ2V0KHVybCwgZnVuY3Rp
b24oY29tbWl0RGF0YSkgewotICAgICAgICBjYWxsYmFjayhwYXJzZUNvbW1pdERhdGEoY29tbWl0
RGF0YSkpOwotICAgIH0pOwotfTsKLQotdHJhYy5jb21taXREYXRhRm9yUmV2aXNpb25SYW5nZSA9
IGZ1bmN0aW9uKHBhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uLCBjYWxsYmFjaykKLXsK
LSAgICB2YXIga2V5ID0gW3BhdGgsIHN0YXJ0UmV2aXNpb24sIGVuZFJldmlzaW9uXS5qb2luKCdc
bicpOwotICAgIGdfY2FjaGUuZ2V0KGtleSwgY2FsbGJhY2spOwotfTsKLQotfSkoKTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXMuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGllcy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE3
OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotZnVuY3Rpb24gY3JlYXRlRGVzY3JpcHRpb25MaXN0KGl0
ZW1zKSB7Ci0gICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkbCcpOwotICAg
IGl0ZW1zLmZvckVhY2goZnVuY3Rpb24ocGFpcikgewotICAgICAgICB2YXIgZHQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkdCcpOwotICAgICAgICBkdC5hcHBlbmRDaGlsZChwYWlyWzBdKTsK
LSAgICAgICAgdmFyIGRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGQnKTsKLSAgICAgICAg
ZGQuYXBwZW5kQ2hpbGQocGFpclsxXSk7Ci0gICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoZHQpOwot
ICAgICAgICBsaXN0LmFwcGVuZENoaWxkKGRkKTsKLSAgICB9KTsKLSAgICByZXR1cm4gbGlzdDsK
LX0KLQotZnVuY3Rpb24gZmV0Y2hSZXNvdXJjZSh1cmwsIG1ldGhvZCwgcXVlcnlQYXJhbWV0ZXJz
LCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjaykgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIC8vIEFsbG93IGEgc3RhdHVzIG9mIDAgZm9yIGVhc2llciB0ZXN0aW5nIHdpdGggbG9jYWwg
ZmlsZXMuCi0gICAgICAgIGlmICghdGhpcy5zdGF0dXMgfHwgdGhpcy5zdGF0dXMgPT09IDIwMCkK
LSAgICAgICAgICAgIGNhbGxiYWNrKHRoaXMpOwotICAgICAgICBlbHNlIGlmIChlcnJvckNhbGxi
YWNrKQotICAgICAgICAgICAgZXJyb3JDYWxsYmFjayh0aGlzKTsKLSAgICB9OwotCi0gICAgaWYg
KG1ldGhvZCA9PT0gJ0dFVCcgJiYgcXVlcnlQYXJhbWV0ZXJzKQotICAgICAgICB1cmwgPSBhZGRR
dWVyeVBhcmFtZXRlcnNUb1VSTCh1cmwsIHF1ZXJ5UGFyYW1ldGVycyk7Ci0KLSAgICB4aHIub3Bl
bihtZXRob2QsIHVybCk7Ci0KLSAgICBpZiAobWV0aG9kID09PSAnR0VUJykgewotICAgICAgICB4
aHIuc2VuZCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgdmFyIGRhdGEgPSB1cmxF
bmNvZGVRdWVyeVBhcmFtZXRlcnMocXVlcnlQYXJhbWV0ZXJzKTsKLSAgICB4aHIuc2V0UmVxdWVz
dEhlYWRlcignQ29udGVudC1UeXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2Rl
ZCcpOwotICAgIHhoci5zZW5kKGRhdGEpOwotfQotCi1mdW5jdGlvbiBnZXRSZXNvdXJjZSh1cmws
IGNhbGxiYWNrLCBlcnJvckNhbGxiYWNrKSB7Ci0gICAgZmV0Y2hSZXNvdXJjZSh1cmwsICdHRVQn
LCBudWxsLCBjYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7Ci19Ci0KLWZ1bmN0aW9uIHVybEVuY29k
ZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpIHsKLSAgICB2YXIgZW5jb2RlZFBhcmFt
ZXRlcnMgPSBPYmplY3Qua2V5cyhxdWVyeVBhcmFtZXRlcnMpLm1hcChmdW5jdGlvbihrZXkpIHsK
LSAgICAgICAgcmV0dXJuIGtleSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFt
ZXRlcnNba2V5XSk7Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGVuY29kZWRQYXJhbWV0ZXJzLmpvaW4o
JyYnKTsKLX0KLQotZnVuY3Rpb24gYWRkUXVlcnlQYXJhbWV0ZXJzVG9VUkwodXJsLCBxdWVyeVBh
cmFtZXRlcnMpIHsKLSAgICBpZiAodXJsLmluZGV4T2YoJz8nKSA8IDApCi0gICAgICAgIHVybCAr
PSAnPyc7Ci0gICAgZWxzZQotICAgICAgICB1cmwgKz0gJyYnOwotCi0gICAgcmV0dXJuIHVybCAr
IHVybEVuY29kZVF1ZXJ5UGFyYW1ldGVycyhxdWVyeVBhcmFtZXRlcnMpOwotfQotCi1mdW5jdGlv
biBsb25nZXN0Q29tbW9uUGF0aFByZWZpeChwYXRocykgewotICAgIGNvbnN0IHNlcGFyYXRvciA9
ICcvJzsKLQotICAgIHZhciBzcGxpdFBhdGhzID0gcGF0aHMubWFwKGZ1bmN0aW9uKHBhdGgpIHsg
cmV0dXJuIHBhdGguc3BsaXQoc2VwYXJhdG9yKSB9KTsKLSAgICB2YXIgZmlyc3RTcGxpdFBhdGgg
PSBzcGxpdFBhdGhzLnNoaWZ0KCk7Ci0KLSAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBmaXJzdFNwbGl0UGF0aC5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAo
IXNwbGl0UGF0aHMuZXZlcnkoZnVuY3Rpb24oc3BsaXRQYXRoKSB7IHJldHVybiBzcGxpdFBhdGhb
aV0gPT09IGZpcnN0U3BsaXRQYXRoW2ldIH0pKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IHJlc3VsdC5wdXNoKGZpcnN0U3BsaXRQYXRoW2ldKTsKLSAgICB9Ci0KLSAgICBpZiAoIXJlc3Vs
dC5sZW5ndGgpCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiByZXN1bHQuam9pbihz
ZXBhcmF0b3IpOwotfQotCi1mdW5jdGlvbiByZW1vdmVQYXRoRXh0ZW5zaW9uKHN0cmluZykgewot
ICAgIHZhciBkb3RJbmRleCA9IHN0cmluZy5sYXN0SW5kZXhPZignLicpOwotICAgIGlmIChkb3RJ
bmRleCA8IDApCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0gICAgcmV0dXJuIHN0cmluZy5zdWJz
dHJpbmcoMCwgZG90SW5kZXgpOwotfQotCi1mdW5jdGlvbiBzb3J0ZWQoYXJyYXksIHNvcnRGdW5j
dGlvbikgewotICAgIHZhciBuZXdBcnJheSA9IGFycmF5LnNsaWNlKCk7Ci0gICAgbmV3QXJyYXku
c29ydChzb3J0RnVuY3Rpb24pOwotICAgIHJldHVybiBuZXdBcnJheTsKLX0KLQotQXJyYXkucHJv
dG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24odmFsdWUpIHsKLSAgICByZXR1cm4gdGhpcy5pbmRl
eE9mKHZhbHVlKSA+PSAwOwotfQotCi1BcnJheS5wcm90b3R5cGUuZmluZEZpcnN0ID0gZnVuY3Rp
b24ocHJlZGljYXRlKSB7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytp
KSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkpCi0gICAgICAgICAgICByZXR1cm4g
dGhpc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19Ci0KLUFycmF5LnByb3RvdHlwZS5m
aW5kTGFzdCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkgewotICAgIGZvciAodmFyIGkgPSB0aGlzLmxl
bmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7Ci0gICAgICAgIGlmIChwcmVkaWNhdGUodGhpc1tpXSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhpc1tpXTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7Ci19
Ci0KLUFycmF5LnByb3RvdHlwZS5sYXN0ID0gZnVuY3Rpb24oKSB7Ci0gICAgaWYgKCF0aGlzLmxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICByZXR1cm4gdGhpc1t0aGlzLmxl
bmd0aCAtIDFdOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5oYXNTdHlsZUNsYXNzID0gZnVuY3Rp
b24oa2xhc3MpIHsKLSAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdcXGInICsga2xhc3MgKyAn
XFxiJyk7Ci0gICAgcmV0dXJuIHJlZ2V4LnRlc3QodGhpcy5jbGFzc05hbWUpOwotfQotCi1FbGVt
ZW50LnByb3RvdHlwZS5hZGRTdHlsZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICBpZiAo
dGhpcy5oYXNTdHlsZUNsYXNzKGtsYXNzKSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRoaXMuY2xh
c3NOYW1lICs9ICcgJyArIGtsYXNzOwotfQotCi1FbGVtZW50LnByb3RvdHlwZS5yZW1vdmVTdHls
ZUNsYXNzID0gZnVuY3Rpb24oa2xhc3MpIHsKLSAgICB2YXIgcmVnZXggPSBuZXcgUmVnRXhwKCdc
XGInICsga2xhc3MgKyAnXFxiJywgJ2cnKTsKLSAgICB0aGlzLmNsYXNzTmFtZSA9IHRoaXMuY2xh
c3NOYW1lLnJlcGxhY2UocmVnZXgsICcnKTsKLX0KLQotRWxlbWVudC5wcm90b3R5cGUudG9nZ2xl
U3R5bGVDbGFzcyA9IGZ1bmN0aW9uKGtsYXNzKSB7Ci0gICAgaWYgKHRoaXMuaGFzU3R5bGVDbGFz
cyhrbGFzcykpCi0gICAgICAgIHRoaXMucmVtb3ZlU3R5bGVDbGFzcyhrbGFzcyk7Ci0gICAgZWxz
ZQotICAgICAgICB0aGlzLmFkZFN0eWxlQ2xhc3Moa2xhc3MpOwotfQotCi1Ob2RlLnByb3RvdHlw
ZS5hcHBlbmRDaGlsZHJlbiA9IGZ1bmN0aW9uKGNoaWxkcmVuKSB7Ci0gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7ICsraSkKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChj
aGlsZHJlbltpXSk7Ci19Ci0KLU5vZGUucHJvdG90eXBlLnJlbW92ZUFsbENoaWxkcmVuID0gZnVu
Y3Rpb24oKSB7Ci0gICAgd2hpbGUgKHRoaXMuZmlyc3RDaGlsZCkKLSAgICAgICAgdGhpcy5yZW1v
dmVDaGlsZCh0aGlzLmZpcnN0Q2hpbGQpOwotfQotCi1TdHJpbmcucHJvdG90eXBlLmNvbnRhaW5z
ID0gZnVuY3Rpb24oc3Vic3RyaW5nKSB7Ci0gICAgcmV0dXJuIHRoaXMuaW5kZXhPZihzdWJzdHJp
bmcpID49IDA7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9VdGlsaXRpZXNfdW5p
dHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1V0aWxpdGll
c191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL1V0aWxpdGllc191bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjcgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsKLQotbW9kdWxlKCdVdGlsaXRpZXMnKTsKLQot
dGVzdCgnaGFzU3R5bGVDbGFzcycsIDExLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVudCA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgb2soIWVsZW1lbnQuaGFzU3R5
bGVDbGFzcygnZm9vJykpOwotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsK
LQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgb2soZWxlbWVudC5oYXNTdHls
ZUNsYXNzKCdmb28nKSkKLSAgICBvayghZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7Ci0K
LSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb28gZm9vJzsKLSAgICBvayhlbGVtZW50Lmhhc1N0
eWxlQ2xhc3MoJ2ZvbycpKQotICAgIG9rKCFlbGVtZW50Lmhhc1N0eWxlQ2xhc3MoJ2JhcicpKTsK
LQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2ZvbyBiYXInOwotICAgIG9rKGVsZW1lbnQuaGFz
U3R5bGVDbGFzcygnZm9vJykpCi0gICAgb2soZWxlbWVudC5oYXNTdHlsZUNsYXNzKCdiYXInKSk7
Ci0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnYmF6JykpOwotCi0gICAgZWxlbWVudC5j
bGFzc05hbWUgPSAnZm9vZCc7Ci0gICAgb2soIWVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vJykp
OwotICAgIG9rKGVsZW1lbnQuaGFzU3R5bGVDbGFzcygnZm9vZCcpKTsKLX0pOwotCi10ZXN0KCdh
ZGRTdHlsZUNsYXNzJywgNCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQuYWRkU3R5bGVDbGFzcygnZm9v
Jyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgZm9vJyk7Ci0KLSAgICBlbGVtZW50
LmFkZFN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZv
bycpOwotCi0gICAgZWxlbWVudC5hZGRTdHlsZUNsYXNzKCdiYXInKTsKLSAgICBlcXVhbChlbGVt
ZW50LmNsYXNzTmFtZSwgJyBmb28gYmFyJyk7Ci0KLSAgICBlbGVtZW50LmFkZFN0eWxlQ2xhc3Mo
J2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGZvbyBiYXInKTsKLX0pOwot
Ci10ZXN0KCdyZW1vdmVTdHlsZUNsYXNzJywgOCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLQotICAgIGVsZW1lbnQucmVtb3Zl
U3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcnKTsKLQot
ICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNs
YXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJycpOwotCi0gICAgZWxl
bWVudC5jbGFzc05hbWUgPSAnIGZvbyc7Ci0gICAgZWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCdm
b28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyAnKTsKLQotICAgIGVsZW1lbnQu
Y2xhc3NOYW1lID0gJ2ZvbyBmb28nOwotICAgIGVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygnZm9v
Jyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFzc05hbWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNs
YXNzTmFtZSA9ICdmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xhc3MoJ2Zvbycp
OwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnIGJhcicpOwotCi0gICAgZWxlbWVudC5j
bGFzc05hbWUgPSAnZm9vIGJhciBmb28gYmFyJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoJ2JhcicpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vICBmb28gJyk7Ci0K
LSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xhc3NOYW1lLCAnZm9vZCcpOwotCi0g
ICAgZWxlbWVudC5jbGFzc05hbWUgPSAnZm9vJzsKLSAgICBlbGVtZW50LnJlbW92ZVN0eWxlQ2xh
c3MoJ2Zvb2QnKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJ2ZvbycpOwotfSk7Ci0K
LXRlc3QoJ3RvZ2dsZVN0eWxlQ2xhc3MnLCA1LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotCi0gICAgZWxlbWVudC50b2dnbGVT
dHlsZUNsYXNzKCdmb28nKTsKLSAgICBlcXVhbChlbGVtZW50LmNsYXNzTmFtZSwgJyBmb28nKTsK
LQotICAgIGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVu
dC5jbGFzc05hbWUsICcgJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdiYXInOwotICAg
IGVsZW1lbnQudG9nZ2xlU3R5bGVDbGFzcygnZm9vJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5jbGFz
c05hbWUsICdiYXIgZm9vJyk7Ci0KLSAgICBlbGVtZW50LmNsYXNzTmFtZSA9ICdmb29kJzsKLSAg
ICBlbGVtZW50LnRvZ2dsZVN0eWxlQ2xhc3MoJ2ZvbycpOwotICAgIGVxdWFsKGVsZW1lbnQuY2xh
c3NOYW1lLCAnZm9vZCBmb28nKTsKLQotICAgIGVsZW1lbnQuY2xhc3NOYW1lID0gJ2Zvbyc7Ci0g
ICAgZWxlbWVudC50b2dnbGVTdHlsZUNsYXNzKCdmb29kJyk7Ci0gICAgZXF1YWwoZWxlbWVudC5j
bGFzc05hbWUsICdmb28gZm9vZCcpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9WaWV3Q29udHJvbGxlci5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvVmlld0NvbnRyb2xsZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0
MzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFZpZXdDb250cm9sbGVyKGJ1aWxkYm90
KSB7Ci0gICAgdGhpcy5fYnVpbGRib3QgPSBidWlsZGJvdDsKLSAgICB0aGlzLl9uYXZpZ2F0aW9u
SUQgPSAwOwotCi0gICAgdmFyIHNlbGYgPSB0aGlzOwotICAgIGFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBmdW5jdGlvbigpIHsgc2VsZi5sb2FkZWQoKSB9LCBmYWxzZSk7Ci0gICAgYWRkRXZlbnRM
aXN0ZW5lcignaGFzaGNoYW5nZScsIGZ1bmN0aW9uKCkgeyBzZWxmLnBhcnNlSGFzaChsb2NhdGlv
bi5oYXNoKSB9LCBmYWxzZSk7Ci19Ci0KLVZpZXdDb250cm9sbGVyLnByb3RvdHlwZSA9IHsKLSAg
ICBsb2FkZWQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl9oZWFkZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdoMScpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRo
aXMuX2hlYWRlcik7Ci0gICAgICAgIHRoaXMuX21haW5Db250ZW50RWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KHRoaXMuX21haW5Db250ZW50RWxlbWVudCk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQodGhpcy5fZG9tRm9yQXV4aWxpYXJ5VUlFbGVtZW50cygpKTsKLQotICAgICAgICB0aGlz
LnBhcnNlSGFzaChsb2NhdGlvbi5oYXNoKTsKLSAgICB9LAotCi0gICAgcGFyc2VIYXNoOiBmdW5j
dGlvbihoYXNoKSB7Ci0gICAgICAgICsrdGhpcy5fbmF2aWdhdGlvbklEOwotCi0gICAgICAgIHZh
ciBtYXRjaCA9IC8jXC8oLiopLy5leGVjKGhhc2gpOwotICAgICAgICBpZiAobWF0Y2gpCi0gICAg
ICAgICAgICB0aGlzLl9kaXNwbGF5QnVpbGRlcih0aGlzLl9idWlsZGJvdC5idWlsZGVyTmFtZWQo
ZGVjb2RlVVJJQ29tcG9uZW50KG1hdGNoWzFdKSkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl9kaXNwbGF5VGVzdGVycygpOwotICAgIH0sCi0KLSAgICBfZGlzcGxheUJ1aWxkZXI6
IGZ1bmN0aW9uKGJ1aWxkZXIpIHsKLSAgICAgICAgdGhpcy5fc2V0VGl0bGUoYnVpbGRlci5uYW1l
KTsKLSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50LnJlbW92ZUFsbENoaWxkcmVuKCk7
Ci0KLSAgICAgICAgdmFyIG5hdmlnYXRpb25JRCA9IHRoaXMuX25hdmlnYXRpb25JRDsKLQotICAg
ICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIChuZXcgTGF5b3V0VGVzdEhpc3RvcnlBbmFs
eXplcihidWlsZGVyKSkuc3RhcnQoZnVuY3Rpb24oZGF0YSwgc3RpbGxGZXRjaGluZ0RhdGEpIHsK
LSAgICAgICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkgewot
ICAgICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGhhcyBuYXZpZ2F0ZWQgc29tZXdoZXJlIGVsc2Uu
IFN0b3AgbG9hZGluZyBkYXRhIGFib3V0IHRoaXMgdGVzdGVyLgotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGxpc3QgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICAgICAgbGlzdC5pZCA9ICdmYWlsdXJl
LWhpc3RvcnknOwotCi0gICAgICAgICAgICB2YXIgYnVpbGROYW1lcyA9IE9iamVjdC5rZXlzKGRh
dGEuaGlzdG9yeSkKLSAgICAgICAgICAgIGJ1aWxkTmFtZXMuZm9yRWFjaChmdW5jdGlvbihidWls
ZE5hbWUsIGJ1aWxkSW5kZXgsIGJ1aWxkTmFtZUFycmF5KSB7Ci0gICAgICAgICAgICAgICAgdmFy
IGZhaWxpbmdUZXN0TmFtZXMgPSBPYmplY3Qua2V5cyhkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50
ZXN0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKCFmYWlsaW5nVGVzdE5hbWVzLmxlbmd0aCkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwotICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5k
Q2hpbGQoaXRlbSk7Ci0KLSAgICAgICAgICAgICAgICB2YXIgdGVzdExpc3QgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQodGVz
dExpc3QpOwotCi0gICAgICAgICAgICAgICAgdGVzdExpc3QuY2xhc3NOYW1lID0gJ3Rlc3QtbGlz
dCc7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIgdGVzdE5hbWUgaW4gZGF0YS5oaXN0b3J5W2J1
aWxkTmFtZV0udGVzdHMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHRlc3RJdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICAgICAgdGVzdEl0ZW0u
YXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yRmFpbGVkVGVzdChidWlsZGVyLCBidWlsZE5hbWUsIHRl
c3ROYW1lLCBkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50ZXN0c1t0ZXN0TmFtZV0pKTsKLSAgICAg
ICAgICAgICAgICAgICAgdGVzdExpc3QuYXBwZW5kQ2hpbGQodGVzdEl0ZW0pOwotICAgICAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChkYXRhLmhpc3RvcnlbYnVpbGROYW1lXS50
b29NYW55RmFpbHVyZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdwJyk7Ci0gICAgICAgICAgICAgICAgICAgIHAuY2xhc3NOYW1lID0gJ2lu
Zm8nOwotICAgICAgICAgICAgICAgICAgICBwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCdydW4td2Via2l0LXRlc3RzIGV4aXRlZCBlYXJseSBkdWUgdG8gdG9vIG1hbnkgZmFp
bHVyZXMvY3Jhc2hlcy90aW1lb3V0cycpKTsKLSAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBl
bmRDaGlsZChwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB2YXIgcGFz
c2luZ0J1aWxkTmFtZTsKLSAgICAgICAgICAgICAgICBpZiAoYnVpbGRJbmRleCArIDEgPCBidWls
ZE5hbWVBcnJheS5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHBhc3NpbmdCdWlsZE5hbWUg
PSBidWlsZE5hbWVBcnJheVtidWlsZEluZGV4ICsgMV07Ci0KLSAgICAgICAgICAgICAgICBpdGVt
LmFwcGVuZENoaWxkKHNlbGYuX2RvbUZvclJlZ3Jlc3Npb25SYW5nZShidWlsZGVyLCBidWlsZE5h
bWUsIHBhc3NpbmdCdWlsZE5hbWUsIGZhaWxpbmdUZXN0TmFtZXMpKTsKLQotICAgICAgICAgICAg
ICAgIGlmIChwYXNzaW5nQnVpbGROYW1lIHx8ICFzdGlsbEZldGNoaW5nRGF0YSkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgYnVnRm9ybSA9IG5ldyBGYWlsaW5nVGVzdHNCdWdGb3JtKGJ1aWxk
ZXIsIGJ1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGluZ1Rlc3ROYW1lcyk7Ci0gICAg
ICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoc2VsZi5fZG9tRm9yTmV3QW5kRXhpc3Rp
bmdCdWdzKGJ1aWxkZXIsIGZhaWxpbmdUZXN0TmFtZXMsIGJ1Z0Zvcm0pKQotICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICBzZWxmLl9tYWluQ29udGVudEVs
ZW1lbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIHNlbGYuX21haW5Db250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZChsaXN0KTsKLSAgICAgICAgICAgIHNlbGYuX21haW5Db250ZW50
RWxlbWVudC5hcHBlbmRDaGlsZChzZWxmLl9kb21Gb3JQb3NzaWJseUZsYWt5VGVzdHMoYnVpbGRl
ciwgZGF0YS5wb3NzaWJseUZsYWt5LCBidWlsZE5hbWVzKSk7Ci0KLSAgICAgICAgICAgIGlmICgh
c3RpbGxGZXRjaGluZ0RhdGEpCi0gICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnBydW5l
KCk7Ci0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLSAgICB9LAotCi0g
ICAgX2Rpc3BsYXlUZXN0ZXJzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fc2V0VGl0bGUo
J1Rlc3RlcnMnKTsKLSAgICAgICAgdGhpcy5fbWFpbkNvbnRlbnRFbGVtZW50LnJlbW92ZUFsbENo
aWxkcmVuKCk7Ci0KLSAgICAgICAgdmFyIGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1
bCcpOwotICAgICAgICB0aGlzLl9tYWluQ29udGVudEVsZW1lbnQuYXBwZW5kQ2hpbGQobGlzdCk7
Ci0KLSAgICAgICAgdmFyIGxhdGVzdEJ1aWxkSW5mb3MgPSBbXTsKLSAgICAgICAgdmFyIG5hdmln
YXRpb25JRCA9IHRoaXMuX25hdmlnYXRpb25JRDsKLQotICAgICAgICBmdW5jdGlvbiB1cGRhdGVM
aXN0KCkgewotICAgICAgICAgICAgbGF0ZXN0QnVpbGRJbmZvcy5zb3J0KGZ1bmN0aW9uKGEsIGIp
IHsgcmV0dXJuIGEudGVzdGVyLm5hbWUubG9jYWxlQ29tcGFyZShiLnRlc3Rlci5uYW1lKSB9KTsK
LSAgICAgICAgICAgIGxpc3QucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLSAgICAgICAgICAgIGxhdGVz
dEJ1aWxkSW5mb3MuZm9yRWFjaChmdW5jdGlvbihidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAg
ICB2YXIgbGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJyMvJyArIGJ1aWxkSW5mby50ZXN0ZXIu
bmFtZSwgYnVpbGRJbmZvLnRlc3Rlci5uYW1lKQotICAgICAgICAgICAgICAgIHZhciBpdGVtID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKGxpbmspOwotICAgICAgICAgICAgICAgIGlmIChidWlsZEluZm8udG9vTWFueUZhaWx1
cmVzKQotICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCcgKHRvbyBtYW55IGZhaWx1cmVzL2NyYXNoZXMvdGltZW91dHMpJykpOwotICAg
ICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICgnICsgYnVpbGRJbmZvLmZhaWx1cmVDb3VudCArICcg
ZmFpbGluZyB0ZXN0JyArIChidWlsZEluZm8uZmFpbHVyZUNvdW50ID4gMSA/ICdzJyA6ICcnKSAr
ICcpJykpOwotICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0gICAgICAg
ICAgICB9KTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAg
dGhpcy5fYnVpbGRib3QuZ2V0VGVzdGVycyhmdW5jdGlvbih0ZXN0ZXJzKSB7Ci0gICAgICAgICAg
ICBpZiAoc2VsZi5fbmF2aWdhdGlvbklEICE9PSBuYXZpZ2F0aW9uSUQpIHsKLSAgICAgICAgICAg
ICAgICAvLyBUaGUgdXNlciBoYXMgbmF2aWdhdGVkIHNvbWV3aGVyZSBlbHNlLgotICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRlc3RlcnMuZm9yRWFj
aChmdW5jdGlvbih0ZXN0ZXIpIHsKLSAgICAgICAgICAgICAgICB0ZXN0ZXIuZ2V0TW9zdFJlY2Vu
dENvbXBsZXRlZEJ1aWxkTnVtYmVyKGZ1bmN0aW9uKGJ1aWxkTnVtYmVyKSB7Ci0gICAgICAgICAg
ICAgICAgICAgIGlmIChzZWxmLl9uYXZpZ2F0aW9uSUQgIT09IG5hdmlnYXRpb25JRCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGJ1aWxk
TnVtYmVyIDwgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
ICAgICAgICAgdGVzdGVyLmdldE51bWJlck9mRmFpbGluZ1Rlc3RzKGJ1aWxkTnVtYmVyLCBmdW5j
dGlvbihmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHNlbGYuX25hdmlnYXRpb25JRCAhPT0gbmF2aWdhdGlvbklEKQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChm
YWlsdXJlQ291bnQgPD0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBsYXRlc3RCdWlsZEluZm9zLnB1c2goeyB0ZXN0ZXI6IHRl
c3RlciwgZmFpbHVyZUNvdW50OiBmYWlsdXJlQ291bnQsIHRvb01hbnlGYWlsdXJlczogdG9vTWFu
eUZhaWx1cmVzIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTGlzdCgpOwotICAg
ICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0p
OwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgX2RvbUZvclJlZ3Jlc3Npb25SYW5nZTogZnVu
Y3Rpb24oYnVpbGRlciwgZmFpbGluZ0J1aWxkTmFtZSwgcGFzc2luZ0J1aWxkTmFtZSwgZmFpbGlu
Z1Rlc3ROYW1lcykgewotICAgICAgICB2YXIgcmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1l
bnRGcmFnbWVudCgpOwotCi0gICAgICAgIHZhciBkbEl0ZW1zID0gWwotICAgICAgICAgICAgW2Rv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdGYWlsZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1
aWxkZXIsIGZhaWxpbmdCdWlsZE5hbWUpXSwKLSAgICAgICAgXTsKLSAgICAgICAgaWYgKHBhc3Np
bmdCdWlsZE5hbWUpCi0gICAgICAgICAgICBkbEl0ZW1zLnB1c2goW2RvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCdQYXNzZWQnKSwgdGhpcy5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIsIHBhc3NpbmdC
dWlsZE5hbWUpXSk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChjcmVhdGVEZXNjcmlwdGlv
bkxpc3QoZGxJdGVtcykpOwotCi0gICAgICAgIGlmICghcGFzc2luZ0J1aWxkTmFtZSkKLSAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIGZpcnN0U3VzcGVjdFJldmlzaW9u
ID0gdGhpcy5fYnVpbGRib3QucGFyc2VCdWlsZE5hbWUocGFzc2luZ0J1aWxkTmFtZSkucmV2aXNp
b24gKyAxOwotICAgICAgICB2YXIgbGFzdFN1c3BlY3RSZXZpc2lvbiA9IHRoaXMuX2J1aWxkYm90
LnBhcnNlQnVpbGROYW1lKGZhaWxpbmdCdWlsZE5hbWUpLnJldmlzaW9uOwotCi0gICAgICAgIGlm
IChmaXJzdFN1c3BlY3RSZXZpc2lvbiA9PT0gbGFzdFN1c3BlY3RSZXZpc2lvbikKLSAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIHN1c3BlY3RzQ29udGFpbmVyID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChz
dXNwZWN0c0NvbnRhaW5lcik7Ci0KLSAgICAgICAgdmFyIGxpbmsgPSBiYXNlLmNyZWF0ZUxpbmtO
b2RlKHRyYWMubG9nVVJMKCd0cnVuaycsIGZpcnN0U3VzcGVjdFJldmlzaW9uLCBsYXN0U3VzcGVj
dFJldmlzaW9uLCB0cnVlKSwgJ1ZpZXcgcmVncmVzc2lvbiByYW5nZSBpbiBUcmFjJyk7Ci0gICAg
ICAgIHJlc3VsdC5hcHBlbmRDaGlsZChsaW5rKTsKLQotICAgICAgICBzdXNwZWN0c0NvbnRhaW5l
ci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnU2VhcmNoaW5nIGZvciBzdXNw
ZWN0IHJldmlzaW9uc1x1MjAyNicpKTsKLQotICAgICAgICAvLyBGSVhNRTogTWF5YmUgc29tZSBv
ZiB0aGlzIGNvZGUgc2hvdWxkIGdvIGluIExheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIsIG9yIHNv
bWUgb3RoZXIgY2xhc3M/Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdHJhYy5j
b21taXREYXRhRm9yUmV2aXNpb25SYW5nZSgndHJ1bmsnLCBmaXJzdFN1c3BlY3RSZXZpc2lvbiwg
bGFzdFN1c3BlY3RSZXZpc2lvbiwgZnVuY3Rpb24oY29tbWl0cykgewotICAgICAgICAgICAgdmFy
IGZhaWxpbmdUZXN0TmFtZXNXaXRob3V0RXh0ZW5zaW9ucyA9IGZhaWxpbmdUZXN0TmFtZXMubWFw
KHJlbW92ZVBhdGhFeHRlbnNpb24pOwotICAgICAgICAgICAgdmFyIHN1c3BlY3RDb21taXRzID0g
Y29tbWl0cy5maWx0ZXIoZnVuY3Rpb24oY29tbWl0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhaWxpbmdUZXN0TmFtZXNXaXRob3V0RXh0ZW5zaW9ucy5zb21lKGZ1bmN0aW9uKHRlc3ROYW1l
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb21taXQubWVzc2FnZS5jb250YWlucyh0
ZXN0TmFtZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAg
ICAgICAgc3VzcGVjdHNDb250YWluZXIucmVtb3ZlQWxsQ2hpbGRyZW4oKTsKLQotICAgICAgICAg
ICAgaWYgKCFzdXNwZWN0Q29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSAnU3VzcGVjdCByZXZpc2lvbicgKyAoc3VzcGVjdENv
bW1pdHMubGVuZ3RoID4gMSA/ICdzJyA6ICcnKSArICc6JzsKLSAgICAgICAgICAgIHN1c3BlY3Rz
Q29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7Ci0K
LSAgICAgICAgICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKTsKLSAg
ICAgICAgICAgIHN1c3BlY3RzQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpOwotICAgICAgICAg
ICAgbGlzdC5jbGFzc05hbWUgPSAnc3VzcGVjdC1yZXZpc2lvbnMtbGlzdCc7Ci0KLSAgICAgICAg
ICAgIGZ1bmN0aW9uIGNvbXBhcmVDb21taXRzKGEsIGIpIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gYi5yZXZpc2lvbiAtIGEucmV2aXNpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGxpc3QuYXBwZW5kQ2hpbGRyZW4oc29ydGVkKHN1c3BlY3RDb21taXRzLCBjb21wYXJlQ29tbWl0
cykubWFwKGZ1bmN0aW9uKGNvbW1pdCkgewotICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENo
aWxkKGJhc2UuY3JlYXRlTGlua05vZGUodHJhYy5jaGFuZ2VzZXRVUkwoY29tbWl0LnJldmlzaW9u
KSwgY29tbWl0LnRpdGxlKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAg
ICAgICB9KSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwK
LQotICAgIF9kb21Gb3JBdXhpbGlhcnlVSUVsZW1lbnRzOiBmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIGFzaWRlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYXNpZGUnKTsKLSAgICAgICAgYXNp
ZGUuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1NvbWV0aGluZyBub3Qgd29y
a2luZz8gSGF2ZSBhbiBpZGVhIHRvIGltcHJvdmUgdGhpcyBwYWdlPyAnKSk7Ci0gICAgICAgIHZh
ciBxdWVyeVBhcmFtZXRlcnMgPSB7Ci0gICAgICAgICAgICBwcm9kdWN0OiAnV2ViS2l0JywKLSAg
ICAgICAgICAgIGNvbXBvbmVudDogJ1Rvb2xzIC8gVGVzdHMnLAotICAgICAgICAgICAgdmVyc2lv
bjogJzUyOCsgKE5pZ2h0bHkgYnVpbGQpJywKLSAgICAgICAgICAgIGJ1Z19maWxlX2xvYzogbG9j
YXRpb24uaHJlZiwKLSAgICAgICAgICAgIGNjOiAnYXJvYmVuQGFwcGxlLmNvbScsCi0gICAgICAg
ICAgICBzaG9ydF9kZXNjOiAnVGVzdEZhaWx1cmVzIHBhZ2UgbmVlZHMgbW9yZSB1bmljb3JucyEn
LAotICAgICAgICB9OwotICAgICAgICBhc2lkZS5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtO
b2RlKGFkZFF1ZXJ5UGFyYW1ldGVyc1RvVVJMKGNvbmZpZy5rQnVnemlsbGFVUkwgKyAnL2VudGVy
X2J1Zy5jZ2knLCBxdWVyeVBhcmFtZXRlcnMpLCAnRmlsZSBhIGJ1ZyEnLCAnX2JsYW5rJykpOwot
ICAgICAgICByZXR1cm4gYXNpZGU7Ci0gICAgfSwKLQotICAgIF9kb21Gb3JCdWlsZE5hbWU6IGZ1
bmN0aW9uKGJ1aWxkZXIsIGJ1aWxkTmFtZSkgewotICAgICAgICB2YXIgcGFyc2VkID0gdGhpcy5f
YnVpbGRib3QucGFyc2VCdWlsZE5hbWUoYnVpbGROYW1lKTsKLQotICAgICAgICB2YXIgc291cmNl
TGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJ2h0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8nICsgcGFyc2VkLnJldmlzaW9uLCAncicgKyBwYXJzZWQucmV2aXNpb24pOwotICAgICAg
ICB2YXIgYnVpbGRMaW5rID0gYmFzZS5jcmVhdGVMaW5rTm9kZShidWlsZGVyLmJ1aWxkVVJMKHBh
cnNlZC5idWlsZE51bWJlciksIHBhcnNlZC5idWlsZE51bWJlcik7Ci0gICAgICAgIHZhciByZXN1
bHRzTGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoYnVpbGRlci5yZXN1bHRzUGFnZVVSTChidWls
ZE5hbWUpLCAncmVzdWx0cy5odG1sJyk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9IGRvY3VtZW50
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKHNv
dXJjZUxpbmspOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJyAoJykpOwotICAgICAgICByZXN1bHQuYXBwZW5kQ2hpbGQoYnVpbGRMaW5rKTsKLSAg
ICAgICAgcmVzdWx0LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcpICgnKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChyZXN1bHRzTGluayk7Ci0gICAgICAgIHJlc3Vs
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnKScpKTsKLQotICAgICAgICBy
ZXR1cm4gcmVzdWx0OwotICAgIH0sCi0KLSAgICBfZG9tRm9yRmFpbGVkVGVzdDogZnVuY3Rpb24o
YnVpbGRlciwgYnVpbGROYW1lLCB0ZXN0TmFtZSwgdGVzdFJlc3VsdCkgewotICAgICAgICB2YXIg
cmVzdWx0ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICByZXN1
bHQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUgKyAnOiAnKSk7
Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZCh0aGlzLl9kb21Gb3JGYWlsdXJlRGlhZ25vc2lz
KGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2RvbUZvckZhaWx1cmVEaWFnbm9zaXM6IGZ1bmN0
aW9uKGJ1aWxkZXIsIGJ1aWxkTmFtZSwgdGVzdE5hbWUsIHRlc3RSZXN1bHQpIHsKLSAgICAgICAg
dmFyIGRpYWdub3N0aWNJbmZvID0gYnVpbGRlci5mYWlsdXJlRGlhZ25vc2lzVGV4dEFuZFVSTChi
dWlsZE5hbWUsIHRlc3ROYW1lLCB0ZXN0UmVzdWx0KTsKLSAgICAgICAgaWYgKCFkaWFnbm9zdGlj
SW5mbykKLSAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXN0UmVz
dWx0LmZhaWx1cmVUeXBlKTsKLQotICAgICAgICB2YXIgdGV4dEFuZENyYXNoaW5nU3ltYm9sID0g
ZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwotICAgICAgICB0ZXh0QW5kQ3Jhc2hp
bmdTeW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlhZ25vc3RpY0lu
Zm8udGV4dCkpOwotICAgICAgICBpZiAodGVzdFJlc3VsdC5jcmFzaGluZ1N5bWJvbCkgewotICAg
ICAgICAgICAgdmFyIGNvZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjb2RlJyk7Ci0gICAg
ICAgICAgICBjb2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRlc3RSZXN1
bHQuY3Jhc2hpbmdTeW1ib2wpKTsKLSAgICAgICAgICAgIHRleHRBbmRDcmFzaGluZ1N5bWJvbC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnICgnKSk7Ci0gICAgICAgICAgICB0
ZXh0QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoY29kZSk7Ci0gICAgICAgICAgICB0ZXh0
QW5kQ3Jhc2hpbmdTeW1ib2wuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJykn
KSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoISgndXJsJyBpbiBkaWFnbm9zdGljSW5mbykp
Ci0gICAgICAgICAgICByZXR1cm4gdGV4dEFuZENyYXNoaW5nU3ltYm9sOwotCi0gICAgICAgIHJl
dHVybiBiYXNlLmNyZWF0ZUxpbmtOb2RlKGRpYWdub3N0aWNJbmZvLnVybCwgdGV4dEFuZENyYXNo
aW5nU3ltYm9sKTsKLSAgICB9LAotCi0gICAgX2RvbUZvck5ld0FuZEV4aXN0aW5nQnVnczogZnVu
Y3Rpb24odGVzdGVyLCBmYWlsaW5nVGVzdHMsIGJ1Z0Zvcm0pIHsKLSAgICAgICAgdmFyIHJlc3Vs
dCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLQotICAgICAgICB2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncCcpOwotICAgICAgICByZXN1bHQuYXBw
ZW5kQ2hpbGQoY29udGFpbmVyKTsKLQotICAgICAgICBjb250YWluZXIuY2xhc3NOYW1lID0gJ2V4
aXN0aW5nLWFuZC1uZXctYnVncyc7Ci0KLSAgICAgICAgdmFyIGJ1Z3NDb250YWluZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KGJ1Z3NDb250YWluZXIpOwotCi0gICAgICAgIGJ1Z3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1NlYXJjaGluZyBmb3IgYnVncyByZWxhdGVkIHRvICcgKyAo
ZmFpbGluZ1Rlc3RzLmxlbmd0aCA+IDEgPyAndGhlc2UgdGVzdHMnIDogJ3RoaXMgdGVzdCcpICsg
J1x1MjAyNicpKTsKLQotICAgICAgICBidWd6aWxsYS5xdWlja1NlYXJjaCgnQUxMICcgKyBmYWls
aW5nVGVzdHMuam9pbignfCcpLCBmdW5jdGlvbihidWdzKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1
Z3MubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgYnVnc0NvbnRhaW5lci5wYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGJ1Z3NDb250YWluZXIpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgd2hpbGUgKGJ1Z3NDb250YWluZXIuZmlyc3RDaGlsZCkK
LSAgICAgICAgICAgICAgICBidWdzQ29udGFpbmVyLnJlbW92ZUNoaWxkKGJ1Z3NDb250YWluZXIu
Zmlyc3RDaGlsZCk7Ci0KLSAgICAgICAgICAgIGJ1Z3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0V4aXN0aW5nIGJ1Z3MgcmVsYXRlZCB0byAnICsgKGZhaWxp
bmdUZXN0cy5sZW5ndGggPiAxID8gJ3RoZXNlIHRlc3RzJyA6ICd0aGlzIHRlc3QnKSArICc6Jykp
OwotCi0gICAgICAgICAgICB2YXIgbGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3VsJyk7
Ci0gICAgICAgICAgICBidWdzQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpOwotCi0gICAgICAg
ICAgICBsaXN0LmNsYXNzTmFtZSA9ICdleGlzdGluZy1idWdzLWxpc3QnOwotCi0gICAgICAgICAg
ICBmdW5jdGlvbiBidWdUb0xpc3RJdGVtKGJ1ZykgewotICAgICAgICAgICAgICAgIHZhciBsaW5r
ID0gYmFzZS5jcmVhdGVMaW5rTm9kZShidWcudXJsLCBidWcudGl0bGUpOwotICAgICAgICAgICAg
ICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAg
ICAgICBpdGVtLmFwcGVuZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICAgICAgcmV0dXJuIGl0
ZW07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBvcGVuQnVncyA9IGJ1Z3MuZmls
dGVyKGZ1bmN0aW9uKGJ1ZykgeyByZXR1cm4gYnVnemlsbGEuaXNPcGVuU3RhdHVzKGJ1Zy5zdGF0
dXMpIH0pOwotICAgICAgICAgICAgdmFyIGNsb3NlZEJ1Z3MgPSBidWdzLmZpbHRlcihmdW5jdGlv
bihidWcpIHsgcmV0dXJuICFidWd6aWxsYS5pc09wZW5TdGF0dXMoYnVnLnN0YXR1cykgfSk7Ci0K
LSAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGRyZW4ob3BlbkJ1Z3MubWFwKGJ1Z1RvTGlzdEl0
ZW0pKTsKLQotICAgICAgICAgICAgaWYgKCFjbG9zZWRCdWdzLmxlbmd0aCkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnbGknKTsKLSAgICAgICAgICAgIGxpc3QuYXBwZW5kQ2hpbGQoaXRlbSk7Ci0KLSAgICAg
ICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ0Nsb3NlZCBi
dWdzOicpKTsKLQotICAgICAgICAgICAgdmFyIGNsb3NlZExpc3QgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCd1bCcpOwotICAgICAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChjbG9zZWRMaXN0KTsK
LQotICAgICAgICAgICAgY2xvc2VkTGlzdC5hcHBlbmRDaGlsZHJlbihjbG9zZWRCdWdzLm1hcChi
dWdUb0xpc3RJdGVtKSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHZhciBmb3JtID0gYnVnRm9y
bS5kb21FbGVtZW50KCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmRDaGlsZChmb3JtKTsKLQotICAg
ICAgICB2YXIgbGlua1RleHQgPSAnRmlsZSBidWcgZm9yICcgKyAoZmFpbGluZ1Rlc3RzLmxlbmd0
aCA+IDEgPyAndGhlc2UgZmFpbHVyZXMnIDogJ3RoaXMgZmFpbHVyZScpOwotICAgICAgICB2YXIg
bGluayA9IGJhc2UuY3JlYXRlTGlua05vZGUoJyMnLCBsaW5rVGV4dCk7Ci0gICAgICAgIGxpbmsu
YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihldmVudCkgeyBmb3JtLnN1Ym1pdCgp
OyBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyB9KTsKLQotICAgICAgICBjb250YWluZXIuYXBwZW5k
Q2hpbGQobGluayk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9kb21G
b3JQb3NzaWJseUZsYWt5VGVzdHM6IGZ1bmN0aW9uKGJ1aWxkZXIsIHBvc3NpYmx5Rmxha3lUZXN0
RGF0YSwgYWxsQnVpbGRzKSB7Ci0gICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCk7Ci0gICAgICAgIHZhciBmbGFreVRlc3RzID0gT2JqZWN0LmtleXMo
cG9zc2libHlGbGFreVRlc3REYXRhKTsKLSAgICAgICAgaWYgKCFmbGFreVRlc3RzLmxlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0KLSAgICAgICAgdmFyIGZsYWt5SGVhZGVyID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaDInKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZENoaWxk
KGZsYWt5SGVhZGVyKTsKLSAgICAgICAgZmxha3lIZWFkZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoJ1Bvc3NpYmx5IEZsYWt5IFRlc3RzJykpOwotCi0gICAgICAgIHZhciBm
bGFreUxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvbCcpOwotICAgICAgICByZXN1bHQu
YXBwZW5kQ2hpbGQoZmxha3lMaXN0KTsKLQotICAgICAgICBmbGFreUxpc3QuaWQgPSAncG9zc2li
bHktZmxha3ktdGVzdHMnOwotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgZmxh
a3lMaXN0LmFwcGVuZENoaWxkcmVuKHNvcnRlZChmbGFreVRlc3RzKS5tYXAoZnVuY3Rpb24odGVz
dE5hbWUpIHsKLSAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
bGknKTsKLQotICAgICAgICAgICAgdmFyIGRpc2Nsb3N1cmVUcmlhbmdsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZGlzY2xv
c3VyZVRyaWFuZ2xlKTsKLQotICAgICAgICAgICAgZGlzY2xvc3VyZVRyaWFuZ2xlLmNsYXNzTmFt
ZSA9ICdkaXNjbG9zdXJlLXRyaWFuZ2xlJzsKLSAgICAgICAgICAgIGNvbnN0IGJsYWNrUmlnaHRQ
b2ludGluZ1NtYWxsVHJpYW5nbGUgPSAnXHUyNWI4JzsKLSAgICAgICAgICAgIGRpc2Nsb3N1cmVU
cmlhbmdsZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShibGFja1JpZ2h0UG9p
bnRpbmdTbWFsbFRyaWFuZ2xlKSk7Ci0KLSAgICAgICAgICAgIHZhciBmYWlsdXJlcyA9IHBvc3Np
Ymx5Rmxha3lUZXN0RGF0YVt0ZXN0TmFtZV07Ci0KLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGVzdE5hbWUgKyAnIChmYWlsZWQgJyArIGZhaWx1
cmVzLmxlbmd0aCArICcgb3V0IG9mICcgKyBhbGxCdWlsZHMubGVuZ3RoICsgJyB0aW1lcyknKSk7
Ci0KLSAgICAgICAgICAgIHZhciBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKLSAgICAgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoY29udGFpbmVyKTsKLQotICAgICAg
ICAgICAgY29udGFpbmVyLmNsYXNzTmFtZSA9ICdleHBhbmRhYmxlJzsKLQotICAgICAgICAgICAg
ZGlzY2xvc3VyZVRyaWFuZ2xlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICAgICAgaXRlbS50b2dnbGVTdHlsZUNsYXNzKCdleHBhbmRlZCcpOwotICAg
ICAgICAgICAgICAgIGlmICghaXRlbS5oYXNTdHlsZUNsYXNzKCdleHBhbmRlZCcpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5m
aXJzdENoaWxkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsdXJlTGlzdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ29sJyk7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZChmYWlsdXJlTGlzdCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZmFpbHVyZUxp
c3QuY2xhc3NOYW1lID0gJ2ZsYWtpbmVzcy1leGFtcGxlcy1saXN0JzsKLQotICAgICAgICAgICAg
ICAgICAgICBmYWlsdXJlTGlzdC5hcHBlbmRDaGlsZHJlbihmYWlsdXJlcy5tYXAoZnVuY3Rpb24o
aGlzdG9yeUl0ZW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnbGknKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBw
ZW5kQ2hpbGQoc2VsZi5fZG9tRm9yQnVpbGROYW1lKGJ1aWxkZXIsIGhpc3RvcnlJdGVtLmJ1aWxk
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCc6ICcpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uYXBwZW5k
Q2hpbGQoc2VsZi5fZG9tRm9yRmFpbHVyZURpYWdub3NpcyhidWlsZGVyLCBoaXN0b3J5SXRlbS5i
dWlsZCwgdGVzdE5hbWUsIGhpc3RvcnlJdGVtLnJlc3VsdCkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGl0ZW07Ci0gICAgICAgICAgICAgICAgICAgIH0pKTsKLQotICAgICAgICAg
ICAgICAgICAgICB2YXIgZmFpbGluZ0J1aWxkTmFtZXMgPSBmYWlsdXJlcy5tYXAoZnVuY3Rpb24o
aGlzdG9yeUl0ZW0pIHsgcmV0dXJuIGhpc3RvcnlJdGVtLmJ1aWxkIH0pOwotICAgICAgICAgICAg
ICAgICAgICB2YXIgYnVnRm9ybSA9IG5ldyBGbGFreVRlc3RCdWdGb3JtKGJ1aWxkZXIsIGZhaWxp
bmdCdWlsZE5hbWVzLCB0ZXN0TmFtZSwgYWxsQnVpbGRzLmxhc3QoKSwgYWxsQnVpbGRzWzBdLCBh
bGxCdWlsZHMubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLmFwcGVuZENo
aWxkKHNlbGYuX2RvbUZvck5ld0FuZEV4aXN0aW5nQnVncyhidWlsZGVyLCBbdGVzdE5hbWVdLCBi
dWdGb3JtKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAg
ICAgIHJldHVybiBpdGVtOwotICAgICAgICB9KSk7Ci0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsK
LSAgICB9LAotCi0gICAgX3NldFRpdGxlOiBmdW5jdGlvbih0aXRsZSkgewotICAgICAgICBkb2N1
bWVudC50aXRsZSA9IHRpdGxlOwotICAgICAgICB0aGlzLl9oZWFkZXIudGV4dENvbnRlbnQgPSB0
aXRsZTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1
Z3ppbGxhLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1
Z3ppbGxhLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9X
ZWJLaXRCdWd6aWxsYS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDU2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1jb25zdCBXZWJLaXRCdWd6aWxsYSA9IHsKLSAgICBDb21wb25lbnQ6IHsKLSAgICAgICAg
VG9vbHNUZXN0czogJ1Rvb2xzIC8gVGVzdHMnLAotICAgIH0sCi0KLSAgICBLZXl3b3JkOiB7Ci0g
ICAgICAgIExheW91dFRlc3RGYWlsdXJlOiAnTGF5b3V0VGVzdEZhaWx1cmUnLAotICAgICAgICBN
YWtpbmdCb3RzUmVkOiAnTWFraW5nQm90c1JlZCcsCi0gICAgICAgIFJlZ3Jlc3Npb246ICdSZWdy
ZXNzaW9uJywKLSAgICB9LAotCi0gICAgT3BlcmF0aW5nU3lzdGVtOiB7Ci0gICAgICAgIExlb3Bh
cmQ6ICdNYWMgT1MgWCAxMC41JywKLSAgICAgICAgU25vd0xlb3BhcmQ6ICdNYWMgT1MgWCAxMC42
JywKLSAgICAgICAgV2luZG93czc6ICdXaW5kb3dzIDcnLAotICAgICAgICBXaW5kb3dzWFA6ICdX
aW5kb3dzIFhQJywKLSAgICB9LAotCi0gICAgUGxhdGZvcm06IHsKLSAgICAgICAgTWFjaW50b3No
OiAnTWFjaW50b3NoJywKLSAgICAgICAgUEM6ICdQQycsCi0gICAgfSwKLQotICAgIFByb2R1Y3Q6
IHsKLSAgICAgICAgV2ViS2l0OiAnV2ViS2l0JywKLSAgICB9LAotCi0gICAgVmVyc2lvbjogewot
ICAgICAgICBOaWdodGx5OiAnNTI4KyAoTmlnaHRseSBidWlsZCknLAotICAgIH0sCi19OwpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL1dlYktpdEJ1aWxkYm90LmpzCShub25l
eGlzdGVudCkKQEAgLTEsNDIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWZ1bmN0aW9uIFdlYktpdEJ1
aWxkYm90KCkgewotICAgIEJ1aWxkYm90LmNhbGwodGhpcywgJ2h0dHBzOi8vYnVpbGQud2Via2l0
Lm9yZy8nKTsKLX0KLQotV2ViS2l0QnVpbGRib3QucHJvdG90eXBlID0gewotICAgIHBhcnNlQnVp
bGROYW1lOiBmdW5jdGlvbihidWlsZE5hbWUpIHsKLSAgICAgICAgdmFyIG1hdGNoID0gL15yKFxk
KykgXCgoXGQrKVwpJC8uZXhlYyhidWlsZE5hbWUpOwotICAgICAgICBpZiAoIW1hdGNoKQotICAg
ICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICByZXZp
c2lvbjogcGFyc2VJbnQobWF0Y2hbMV0sIDEwKSwKLSAgICAgICAgICAgIGJ1aWxkTnVtYmVyOiBw
YXJzZUludChtYXRjaFsyXSwgMTApLAotICAgICAgICB9OwotICAgIH0sCi19OwotCi1XZWJLaXRC
dWlsZGJvdC5wcm90b3R5cGUuX19wcm90b19fID0gQnVpbGRib3QucHJvdG90eXBlOwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9iYXNlLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9iYXNlLmpzCShub25leGlzdGVudCkKQEAgLTEsNDY0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotdmFyIGJhc2UgPSBiYXNlIHx8IHt9OwotCi0oZnVuY3Rpb24oKXsKLQotLy8gU2Fm
YXJpIDUuMSBsYWNrcyBGdW5jdGlvbi5wcm90b3R5cGUuYmluZC4KLWlmICghKCdiaW5kJyBpbiBG
dW5jdGlvbi5wcm90b3R5cGUpKSB7Ci0gICAgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5j
dGlvbih0aGlzT2JqZWN0KSB7Ci0gICAgICAgIHZhciBtZXRob2QgPSB0aGlzOwotICAgICAgICB2
YXIgYm91bmRBcmd1bWVudHMgPSBbXTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1
bWVudHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGJvdW5kQXJndW1lbnRzLnB1c2goYXJn
dW1lbnRzW2ldKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB2YXIgYWN0dWFsUGFyYW1ldGVycyA9IFtdOwotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBib3VuZEFyZ3VtZW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAg
IGFjdHVhbFBhcmFtZXRlcnMucHVzaChib3VuZEFyZ3VtZW50c1tpXSk7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgICAgIGFjdHVhbFBhcmFtZXRlcnMucHVzaChhcmd1bWVudHNbaV0pOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1ldGhvZC5hcHBseSh0aGlzT2JqZWN0
LCBhY3R1YWxQYXJhbWV0ZXJzKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotYmFzZS5hc0ludGVn
ZXIgPSBmdW5jdGlvbihzdHJpbmdPckludGVnZXIpCi17Ci0gICAgaWYgKHR5cGVvZiBzdHJpbmdP
ckludGVnZXIgPT0gJ3N0cmluZycpCi0gICAgICAgIHJldHVybiBwYXJzZUludChzdHJpbmdPcklu
dGVnZXIpOwotICAgIHJldHVybiBzdHJpbmdPckludGVnZXI7Ci19OwotCi1iYXNlLmVuZHNXaXRo
ID0gZnVuY3Rpb24oc3RyaW5nLCBzdWZmaXgpCi17Ci0gICAgaWYgKHN1ZmZpeC5sZW5ndGggPiBz
dHJpbmcubGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgdmFyIGV4cGVjdGVkSW5k
ZXggPSBzdHJpbmcubGVuZ3RoIC0gc3VmZml4Lmxlbmd0aDsKLSAgICByZXR1cm4gc3RyaW5nLmxh
c3RJbmRleE9mKHN1ZmZpeCkgPT0gZXhwZWN0ZWRJbmRleDsKLX07Ci0KLWJhc2UucmVwZWF0U3Ry
aW5nID0gZnVuY3Rpb24oc3RyaW5nLCBjb3VudCkKLXsKLSAgICByZXR1cm4gbmV3IEFycmF5KGNv
dW50ICsgMSkuam9pbihzdHJpbmcpOwotfTsKLQotYmFzZS5qb2luUGF0aCA9IGZ1bmN0aW9uKHBh
cmVudCwgY2hpbGQpCi17Ci0gICAgaWYgKHBhcmVudC5sZW5ndGggPT0gMCkKLSAgICAgICAgcmV0
dXJuIGNoaWxkOwotICAgIHJldHVybiBwYXJlbnQgKyAnLycgKyBjaGlsZDsKLX07Ci0KLWJhc2Uu
ZGlyTmFtZSA9IGZ1bmN0aW9uKHBhdGgpCi17Ci0gICAgdmFyIGRpcmVjdG9yeUluZGV4ID0gcGF0
aC5sYXN0SW5kZXhPZignLycpOwotICAgIGlmIChkaXJlY3RvcnlJbmRleCA9PSAtMSkKLSAgICAg
ICAgcmV0dXJuIHBhdGg7Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyKDAsIGRpcmVjdG9yeUluZGV4
KTsKLX07Ci0KLWJhc2UudHJpbUV4dGVuc2lvbiA9IGZ1bmN0aW9uKHVybCkKLXsKLSAgICB2YXIg
aW5kZXggPSB1cmwubGFzdEluZGV4T2YoJy4nKTsKLSAgICBpZiAoaW5kZXggPT0gLTEpCi0gICAg
ICAgIHJldHVybiB1cmw7Ci0gICAgcmV0dXJuIHVybC5zdWJzdHIoMCwgaW5kZXgpOwotfQotCi1i
YXNlLnVuaXF1aWZ5QXJyYXkgPSBmdW5jdGlvbihhcnJheSkKLXsKLSAgICB2YXIgc2VlbiA9IHt9
OwotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAkLmVhY2goYXJyYXksIGZ1bmN0aW9uKGluZGV4
LCB2YWx1ZSkgewotICAgICAgICBpZiAoc2Vlblt2YWx1ZV0pCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIHNlZW5bdmFsdWVdID0gdHJ1ZTsKLSAgICAgICAgcmVzdWx0LnB1c2godmFsdWUp
OwotICAgIH0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19OwotCi1iYXNlLmZsYXR0ZW5BcnJheSA9
IGZ1bmN0aW9uKGFycmF5T2ZBcnJheXMpCi17Ci0gICAgaWYgKCFhcnJheU9mQXJyYXlzLmxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIFtdOwotICAgIHJldHVybiBhcnJheU9mQXJyYXlzLnJlZHVjZShm
dW5jdGlvbihsZWZ0LCByaWdodCkgewotICAgICAgICByZXR1cm4gbGVmdC5jb25jYXQocmlnaHQp
OyAgCi0gICAgfSk7Ci19OwotCi1iYXNlLmZpbHRlckRpY3Rpb25hcnkgPSBmdW5jdGlvbihkaWN0
aW9uYXJ5LCBwcmVkaWNhdGUpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotCi0gICAgZm9yICh2
YXIga2V5IGluIGRpY3Rpb25hcnkpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZShrZXkpKQotICAg
ICAgICAgICAgcmVzdWx0W2tleV0gPSBkaWN0aW9uYXJ5W2tleV07Ci0gICAgfQotCi0gICAgcmV0
dXJuIHJlc3VsdDsKLX07Ci0KLWJhc2UubWFwRGljdGlvbmFyeSA9IGZ1bmN0aW9uKGRpY3Rpb25h
cnksIGZ1bmN0b3IpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotCi0gICAgZm9yICh2YXIga2V5
IGluIGRpY3Rpb25hcnkpIHsKLSAgICAgICAgdmFyIHZhbHVlID0gZnVuY3RvcihkaWN0aW9uYXJ5
W2tleV0pOwotICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJykKLSAgICAg
ICAgICAgIHJlc3VsdFtrZXldID0gdmFsdWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsK
LX07Ci0KLWJhc2UuZmlsdGVyVHJlZSA9IGZ1bmN0aW9uKHRyZWUsIGlzTGVhZiwgcHJlZGljYXRl
KQotewotICAgIHZhciBmaWx0ZXJlZFRyZWUgPSB7fTsKLQotICAgIGZ1bmN0aW9uIHdhbGtTdWJ0
cmVlKHN1YnRyZWUsIGRpcmVjdG9yeSkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGNoaWxkTmFt
ZSBpbiBzdWJ0cmVlKSB7Ci0gICAgICAgICAgICB2YXIgY2hpbGQgPSBzdWJ0cmVlW2NoaWxkTmFt
ZV07Ci0gICAgICAgICAgICB2YXIgY2hpbGRQYXRoID0gYmFzZS5qb2luUGF0aChkaXJlY3Rvcnks
IGNoaWxkTmFtZSk7Ci0gICAgICAgICAgICBpZiAoaXNMZWFmKGNoaWxkKSkgewotICAgICAgICAg
ICAgICAgIGlmIChwcmVkaWNhdGUoY2hpbGQpKQotICAgICAgICAgICAgICAgICAgICBmaWx0ZXJl
ZFRyZWVbY2hpbGRQYXRoXSA9IGNoaWxkOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgd2Fsa1N1YnRyZWUoY2hpbGQsIGNoaWxkUGF0aCk7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLSAgICB3YWxrU3VidHJlZSh0cmVlLCAnJyk7Ci0gICAgcmV0dXJu
IGZpbHRlcmVkVHJlZTsKLX07Ci0KLWJhc2UuZm9yRWFjaERpcmVjdG9yeSA9IGZ1bmN0aW9uKHBh
dGhMaXN0LCBjYWxsYmFjaykKLXsKLSAgICB2YXIgcGF0aHNCeURpcmVjdG9yeSA9IHt9OwotICAg
IHBhdGhMaXN0LmZvckVhY2goZnVuY3Rpb24ocGF0aCkgewotICAgICAgICB2YXIgZGlyZWN0b3J5
ID0gYmFzZS5kaXJOYW1lKHBhdGgpOwotICAgICAgICBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9y
eV0gPSBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9yeV0gfHwgW107Ci0gICAgICAgIHBhdGhzQnlE
aXJlY3RvcnlbZGlyZWN0b3J5XS5wdXNoKHBhdGgpOwotICAgIH0pOwotICAgIE9iamVjdC5rZXlz
KHBhdGhzQnlEaXJlY3RvcnkpLnNvcnQoKS5mb3JFYWNoKGZ1bmN0aW9uKGRpcmVjdG9yeSkgewot
ICAgICAgICB2YXIgcGF0aHMgPSBwYXRoc0J5RGlyZWN0b3J5W2RpcmVjdG9yeV07Ci0gICAgICAg
IGNhbGxiYWNrKGRpcmVjdG9yeSArICcgKCcgKyBwYXRocy5sZW5ndGggKyAnIHRlc3RzKScsIHBh
dGhzKTsKLSAgICB9KTsKLX07Ci0KLWJhc2UucGFyc2VKU09OUCA9IGZ1bmN0aW9uKGpzb25wKQot
ewotICAgIHZhciBzdGFydEluZGV4ID0ganNvbnAuaW5kZXhPZignKCcpICsgMTsKLSAgICB2YXIg
ZW5kSW5kZXggPSBqc29ucC5sYXN0SW5kZXhPZignKScpOwotICAgIGlmIChzdGFydEluZGV4ID09
IDAgfHwgZW5kSW5kZXggPT0gLTEpCi0gICAgICAgIHJldHVybiB7fTsKLSAgICByZXR1cm4gSlNP
Ti5wYXJzZShqc29ucC5zdWJzdHIoc3RhcnRJbmRleCwgZW5kSW5kZXggLSBzdGFydEluZGV4KSk7
Ci19OwotCi1iYXNlLlJlcXVlc3RUcmFja2VyID0gZnVuY3Rpb24ocmVxdWVzdHNJbkZsaWdodCwg
Y2FsbGJhY2ssIGFyZ3MpCi17Ci0gICAgdGhpcy5fcmVxdWVzdHNJbkZsaWdodCA9IHJlcXVlc3Rz
SW5GbGlnaHQ7Ci0gICAgdGhpcy5fY2FsbGJhY2sgPSBjYWxsYmFjazsKLSAgICB0aGlzLl9hcmdz
ID0gYXJncyB8fCBbXTsKLSAgICB0aGlzLl90cnlDYWxsYmFjaygpOwotfTsKLQotYmFzZS5SZXF1
ZXN0VHJhY2tlci5wcm90b3R5cGUgPSB7Ci0gICAgX3RyeUNhbGxiYWNrOiBmdW5jdGlvbigpCi0g
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3JlcXVlc3RzSW5GbGlnaHQgJiYgdGhpcy5fY2FsbGJh
Y2spCi0gICAgICAgICAgICB0aGlzLl9jYWxsYmFjay5hcHBseShudWxsLCB0aGlzLl9hcmdzKTsK
LSAgICB9LAotICAgIHJlcXVlc3RDb21wbGV0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAg
LS10aGlzLl9yZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICB0aGlzLl90cnlDYWxsYmFjaygpOwot
ICAgIH0KLX0KLQotYmFzZS5jYWxsSW5QYXJhbGxlbCA9IGZ1bmN0aW9uKGZ1bmN0aW9uTGlzdCwg
Y2FsbGJhY2spCi17Ci0gICAgdmFyIHJlcXVlc3RUcmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRy
YWNrZXIoZnVuY3Rpb25MaXN0Lmxlbmd0aCwgY2FsbGJhY2spOwotCi0gICAgJC5lYWNoKGZ1bmN0
aW9uTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGZ1bmMpIHsKLSAgICAgICAgZnVuYyhmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHJlcXVlc3RUcmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAg
ICB9KTsKLSAgICB9KTsKLX07Ci0KLWJhc2UuY2FsbEluU2VxdWVuY2UgPSBmdW5jdGlvbihmdW5j
LCBhcmd1bWVudExpc3QsIGNhbGxiYWNrKQotewotICAgIHZhciBuZXh0SW5kZXggPSAwOwotCi0g
ICAgZnVuY3Rpb24gY2FsbE5leHQoKQotICAgIHsKLSAgICAgICAgaWYgKG5leHRJbmRleCA+PSBh
cmd1bWVudExpc3QubGVuZ3RoKSB7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuYyhhcmd1bWVudExpc3RbbmV4dElu
ZGV4KytdLCBjYWxsTmV4dCk7Ci0gICAgfQotCi0gICAgY2FsbE5leHQoKTsKLX07Ci0KLWJhc2Uu
Q2FsbGJhY2tJdGVyYXRvciA9IGZ1bmN0aW9uKGNhbGxiYWNrLCBsaXN0T2ZBcmd1bWVudEFycmF5
cykKLXsKLSAgICB0aGlzLl9jYWxsYmFjayA9IGNhbGxiYWNrOwotICAgIHRoaXMuX25leHRJbmRl
eCA9IDA7Ci0gICAgdGhpcy5fbGlzdE9mQXJndW1lbnRBcnJheXMgPSBsaXN0T2ZBcmd1bWVudEFy
cmF5czsKLX07Ci0KLWJhc2UuQ2FsbGJhY2tJdGVyYXRvci5wcm90b3R5cGUuaGFzTmV4dCA9IGZ1
bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fbmV4dEluZGV4IDwgdGhpcy5fbGlzdE9mQXJn
dW1lbnRBcnJheXMubGVuZ3RoOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlw
ZS5oYXNQcmV2aW91cyA9IGZ1bmN0aW9uKCkKLXsKLSAgICByZXR1cm4gdGhpcy5fbmV4dEluZGV4
IC0gMiA+PSAwOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5jYWxsTmV4
dCA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoIXRoaXMuaGFzTmV4dCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgdmFyIGFyZ3MgPSB0aGlzLl9saXN0T2ZBcmd1bWVudEFycmF5c1t0aGlzLl9uZXh0
SW5kZXhdOwotICAgIHRoaXMuX25leHRJbmRleCsrOwotICAgIHRoaXMuX2NhbGxiYWNrLmFwcGx5
KG51bGwsIGFyZ3MpOwotfTsKLQotYmFzZS5DYWxsYmFja0l0ZXJhdG9yLnByb3RvdHlwZS5jYWxs
UHJldmlvdXMgPSBmdW5jdGlvbigpCi17Ci0gICAgaWYgKCF0aGlzLmhhc1ByZXZpb3VzKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICB2YXIgYXJncyA9IHRoaXMuX2xpc3RPZkFyZ3VtZW50QXJyYXlz
W3RoaXMuX25leHRJbmRleCAtIDJdOwotICAgIHRoaXMuX25leHRJbmRleC0tOwotICAgIHRoaXMu
X2NhbGxiYWNrLmFwcGx5KG51bGwsIGFyZ3MpOwotfTsKLQotYmFzZS5Bc3luY2hyb25vdXNDYWNo
ZSA9IGZ1bmN0aW9uKGZldGNoKQotewotICAgIHRoaXMuX2ZldGNoID0gZmV0Y2g7Ci0gICAgdGhp
cy5fZGF0YUNhY2hlID0ge307Ci0gICAgdGhpcy5fY2FsbGJhY2tDYWNoZSA9IHt9OwotfTsKLQot
YmFzZS5Bc3luY2hyb25vdXNDYWNoZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24oa2V5LCBjYWxs
YmFjaykKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICBpZiAoc2VsZi5fZGF0YUNhY2hl
W2tleV0pIHsKLSAgICAgICAgLy8gRklYTUU6IENvbnNpZGVyIGFsd2F5cyBjYWxsaW5nIGNhbGxi
YWNrIGFzeW5jaHJvbm91c2x5LgotICAgICAgICBjYWxsYmFjayhzZWxmLl9kYXRhQ2FjaGVba2V5
XSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoa2V5IGluIHNlbGYuX2NhbGxi
YWNrQ2FjaGUpIHsKLSAgICAgICAgc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldLnB1c2goY2FsbGJh
Y2spOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VsZi5fY2FsbGJhY2tDYWNoZVtr
ZXldID0gW2NhbGxiYWNrXTsKLQotICAgIHNlbGYuX2ZldGNoLmNhbGwobnVsbCwga2V5LCBmdW5j
dGlvbihkYXRhKSB7Ci0gICAgICAgIHNlbGYuX2RhdGFDYWNoZVtrZXldID0gZGF0YTsKLQotICAg
ICAgICB2YXIgY2FsbGJhY2tMaXN0ID0gc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldOwotICAgICAg
ICBkZWxldGUgc2VsZi5fY2FsbGJhY2tDYWNoZVtrZXldOwotCi0gICAgICAgIGNhbGxiYWNrTGlz
dC5mb3JFYWNoKGZ1bmN0aW9uKGNhY2hlZENhbGxiYWNrKSB7Ci0gICAgICAgICAgICBjYWNoZWRD
YWxsYmFjayhkYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19OwotCi1iYXNlLkFzeW5jaHJv
bm91c0NhY2hlLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkKLXsKLSAgICB0aGlzLl9kYXRh
Q2FjaGUgPSB7fTsKLSAgICB0aGlzLl9jYWxsYmFja0NhY2hlID0ge307Ci19Ci0KLS8qCi0gICAg
TWFpbnRhaW5zIGEgZGljdGlvbmFyeSBvZiBpdGVtcywgdHJhY2tpbmcgdGhlaXIgdXBkYXRlcyBh
bmQgcmVtb3ZpbmcgaXRlbXMgdGhhdCBoYXZlbid0IGJlZW4gdXBkYXRlZC4KLSAgICBBbiAidXBk
YXRlIiBpcyBhIGNhbGwgdG8gdGhlICJ1cGRhdGUiIG1ldGhvZC4KLSAgICBUbyByZW1vdmUgc3Rh
bGUgaXRlbXMsIGNhbGwgdGhlICJyZW1vdmUiIG1ldGhvZC4gSXQgd2lsbCByZW1vdmUgYWxsCi0g
ICAgaXRlbXMgdGhhdCBoYXZlIG5vdCBiZWVuIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgbGFzdCBj
YWxsIG9mICJyZW1vdmUiLgotKi8KLWJhc2UuVXBkYXRlVHJhY2tlciA9IGZ1bmN0aW9uKCkKLXsK
LSAgICB0aGlzLl9pdGVtcyA9IHt9OwotICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsKLX0KLQotYmFz
ZS5VcGRhdGVUcmFja2VyLnByb3RvdHlwZSA9IHsKLSAgICAvKgotICAgICAgICBVcGRhdGUgYW4g
e2tleX0ve2l0ZW19IHBhaXIuIFlvdSBjYW4gbWFrZSB0aGUgZGljdGlvbmFyeSBhY3QgYXMgYSBz
ZXQgYW5kCi0gICAgICAgIHNraXAgdGhlIHtpdGVtfSwgaW4gd2hpY2ggY2FzZSB0aGUge2tleX0g
aXMgYWxzbyB0aGUge2l0ZW19LgotICAgICovCi0gICAgdXBkYXRlOiBmdW5jdGlvbihrZXksIG9i
amVjdCkKLSAgICB7Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdCB8fCBrZXk7Ci0gICAgICAgIHRo
aXMuX2l0ZW1zW2tleV0gPSBvYmplY3Q7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWRba2V5XSA9IDE7
Ci0gICAgfSwKLSAgICBleGlzdHM6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biAhIXRoaXMuZ2V0KGtleSk7Ci0gICAgfSwKLSAgICBnZXQ6IGZ1bmN0aW9uKGtleSkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9pdGVtc1trZXldOwotICAgIH0sCi0gICAgbGVuZ3RoOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5faXRlbXMp
Lmxlbmd0aDsKLSAgICB9LAotICAgIC8qCi0gICAgICAgIENhbGxiYWNrIHBhcmFtZXRlcnMgYXJl
OgotICAgICAgICAtIGl0ZW0KLSAgICAgICAgLSBrZXkKLSAgICAgICAgLSB1cGRhdGVkLCB3aGlj
aCBpcyB0cnVlIGlmIHRoZSBpdGVtIHdhcyB1cGRhdGVkIGFmdGVyIGxhc3QgcHVyZ2UoKSBjYWxs
LgotICAgICovCi0gICAgZm9yRWFjaDogZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNPYmplY3QpCi0g
ICAgewotICAgICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIE9iamVjdC5rZXlzKHRoaXMuX2l0ZW1zKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbihrZXkp
IHsKLSAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faXRlbXNba2V5XTsKLSAgICAgICAgICAg
IGNhbGxiYWNrLmNhbGwodGhpc09iamVjdCB8fCBpdGVtLCBpdGVtLCBrZXksICEhdGhpcy5fdXBk
YXRlZFtrZXldKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rp
b24ocmVtb3ZlQ2FsbGJhY2ssIHRoaXNPYmplY3QpIHsKLSAgICAgICAgcmVtb3ZlQ2FsbGJhY2sg
PSByZW1vdmVDYWxsYmFjayB8fCBmdW5jdGlvbigpIHt9OwotICAgICAgICB0aGlzLmZvckVhY2go
ZnVuY3Rpb24oaXRlbSwga2V5LCB1cGRhdGVkKSB7Ci0gICAgICAgICAgICBpZiAodXBkYXRlZCkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICByZW1vdmVDYWxsYmFjay5jYWxs
KHRoaXNPYmplY3QgfHwgaXRlbSwgaXRlbSk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5faXRl
bXNba2V5XTsKLSAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZWQgPSB7fTsK
LSAgICB9Ci19Ci0KLS8vIEJhc2VkIG9uIGh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9j
aHJvbWUvdHJ1bmsvc3JjL2Nocm9tZS9icm93c2VyL3Jlc291cmNlcy9zaGFyZWQvanMvY3IvdWku
anMKLWJhc2UuZXh0ZW5kcyA9IGZ1bmN0aW9uKGJhc2UsIHByb3RvdHlwZSkKLXsKLSAgICB2YXIg
ZXh0ZW5kZWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIGVsZW1lbnQgPSB0eXBlb2YgYmFz
ZSA9PSAnc3RyaW5nJyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYmFzZSkgOiBiYXNlLmNhbGwo
dGhpcyk7Ci0gICAgICAgIGV4dGVuZGVkLnByb3RvdHlwZS5fX3Byb3RvX18gPSBlbGVtZW50Ll9f
cHJvdG9fXzsKLSAgICAgICAgZWxlbWVudC5fX3Byb3RvX18gPSBleHRlbmRlZC5wcm90b3R5cGU7
Ci0gICAgICAgIHZhciBzaW5nbGV0b24gPSBlbGVtZW50LmluaXQgJiYgZWxlbWVudC5pbml0LmFw
cGx5KGVsZW1lbnQsIGFyZ3VtZW50cyk7Ci0gICAgICAgIGlmIChzaW5nbGV0b24pCi0gICAgICAg
ICAgICByZXR1cm4gc2luZ2xldG9uOwotICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICB9Ci0K
LSAgICBleHRlbmRlZC5wcm90b3R5cGUgPSBwcm90b3R5cGU7Ci0gICAgcmV0dXJuIGV4dGVuZGVk
OwotfQotCi1mdW5jdGlvbiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKGRpdmlzb3JJbk1p
bGxpc2Vjb25kcywgdW5pdCkKLXsKLSAgICByZXR1cm4gZnVuY3Rpb24oZGVsdGEpIHsKLSAgICAg
ICAgdmFyIGRlbHRhSW5Vbml0cyA9IGRlbHRhIC8gZGl2aXNvckluTWlsbGlzZWNvbmRzOwotICAg
ICAgICByZXR1cm4gKGRlbHRhSW5Vbml0cykudG9GaXhlZCgwKSArICcgJyArIHVuaXQgKyAoZGVs
dGFJblVuaXRzID49IDEuNSA/ICdzJyA6ICcnKSArICcgYWdvJzsKLSAgICB9Ci19Ci0KLXZhciBr
TWludXRlSW5NaWxsaXNlY29uZHMgPSA2MCAqIDEwMDA7Ci12YXIga1JlbGF0aXZlVGltZVNsb3Rz
ID0gWwotICAgIHsKLSAgICAgICAgbWF4TWlsbGlzZWNvbmRzOiBrTWludXRlSW5NaWxsaXNlY29u
ZHMsCi0gICAgICAgIGRlc2NyaWJlOiBmdW5jdGlvbihkZWx0YSkgeyByZXR1cm4gJ0p1c3Qgbm93
JzsgfQotICAgIH0sCi0gICAgewotICAgICAgICBtYXhNaWxsaXNlY29uZHM6IDYwICoga01pbnV0
ZUluTWlsbGlzZWNvbmRzLAotICAgICAgICBkZXNjcmliZTogY3JlYXRlUmVsYXRpdmVUaW1lRGVz
Y3JpcHRvcihrTWludXRlSW5NaWxsaXNlY29uZHMsICdtaW51dGUnKQotICAgIH0sCi0gICAgewot
ICAgICAgICBtYXhNaWxsaXNlY29uZHM6IDI0ICogNjAgKiBrTWludXRlSW5NaWxsaXNlY29uZHMs
Ci0gICAgICAgIGRlc2NyaWJlOiBjcmVhdGVSZWxhdGl2ZVRpbWVEZXNjcmlwdG9yKDYwICoga01p
bnV0ZUluTWlsbGlzZWNvbmRzLCAnaG91cicpCi0gICAgfSwKLSAgICB7Ci0gICAgICAgIG1heE1p
bGxpc2Vjb25kczogTnVtYmVyLk1BWF9WQUxVRSwKLSAgICAgICAgZGVzY3JpYmU6IGNyZWF0ZVJl
bGF0aXZlVGltZURlc2NyaXB0b3IoMjQgKiA2MCAqIGtNaW51dGVJbk1pbGxpc2Vjb25kcywgJ2Rh
eScpCi0gICAgfQotXTsKLQotLyoKLSAgICBSZXByZXNlbnQgdGltZSBhcyBkZXNjcmlwdGl2ZSB0
ZXh0LCByZWxhdGl2ZSB0byBub3cgYW5kIGdyYWR1YWxseSBkZWNyZWFzaW5nIGluIHByZWNpc2lv
bjoKLSAgICAgICAgZGVsdGEgPCAxIG1pbnV0ZXMgPT4gSnVzdCBOb3cKLSAgICAgICAgZGVsdGEg
PCA2MCBtaW51dGVzID0+IFggbWludXRlW3NdIGFnbwotICAgICAgICBkZWx0YSA8IDI0IGhvdXJz
ID0+IFggaG91cltzXSBhZ28KLSAgICAgICAgZGVsdGEgPCBpbmYgPT4gWCBkYXlbc10gYWdvCi0q
LwotYmFzZS5yZWxhdGl2aXplVGltZSA9IGZ1bmN0aW9uKHRpbWUpCi17Ci0gICAgdmFyIHJlc3Vs
dDsKLSAgICB2YXIgZGVsdGEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHRpbWU7Ci0gICAga1Jl
bGF0aXZlVGltZVNsb3RzLnNvbWUoZnVuY3Rpb24oc2xvdCkgewotICAgICAgICBpZiAoZGVsdGEg
Pj0gc2xvdC5tYXhNaWxsaXNlY29uZHMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgcmVzdWx0ID0gc2xvdC5kZXNjcmliZShkZWx0YSk7Ci0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0pOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLWJhc2UuZ2V0VVJMUGFyYW1ldGVy
ID0gZnVuY3Rpb24obmFtZSkKLXsKLSAgICB2YXIgbWF0Y2ggPSBSZWdFeHAobmFtZSArICc9JyAr
ICcoLis/KSgmfCQpJykuZXhlYyhsb2NhdGlvbi5zZWFyY2gpOwotICAgIGlmICghbWF0Y2gpCi0g
ICAgICAgIHJldHVybiBudWxsOwotICAgIHJldHVybiBkZWNvZGVVUkkobWF0Y2hbMV0pCi19Ci0K
LWJhc2UudW5kZXJzY29yZWRCdWlsZGVyTmFtZSA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQotewot
ICAgIHJldHVybiBidWlsZGVyTmFtZS5yZXBsYWNlKC9bIC4oKV0vZywgJ18nKTsKLX0KLQotYmFz
ZS5jcmVhdGVMaW5rTm9kZSA9IGZ1bmN0aW9uKHVybCwgdGV4dENvbnRlbnQsIG9wdF90YXJnZXQp
Ci17Ci0gICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7Ci0gICAgbGlu
ay5ocmVmID0gdXJsOwotICAgIGlmIChvcHRfdGFyZ2V0KQotICAgICAgICBsaW5rLnRhcmdldCA9
IG9wdF90YXJnZXQ7Ci0gICAgbGluay5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZSh0ZXh0Q29udGVudCkpOwotICAgIHJldHVybiBsaW5rOwotfQotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvYmFzZV91bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTA0MikK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2Jhc2VfdW5pdHRlc3RzLmpzCShub25leGlzdGVu
dCkKQEAgLTEsNDc0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
ICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0g
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotbW9k
dWxlKCJiYXNlIik7Ci0KLXRlc3QoImJpbmQiLCAzLCBmdW5jdGlvbigpIHsKLSAgICBmdW5jdGlv
biBmdW5jKGEsIGIpIHsKLSAgICAgICAgZXF1YWxzKHRoaXMucHJvcCwgNSk7Ci0gICAgICAgIGVx
dWFscyhhLCAiYmFuYW5hIik7Ci0gICAgICAgIGRlZXBFcXVhbChiLCBbMiwgMywgNF0pOwotICAg
IH0KLQotICAgIHZhciB0aGlzT2JqZWN0ID0gewotICAgICAgICAicHJvcCI6IDUKLSAgICB9Owot
Ci0gICAgdmFyIGJvdW5kID0gZnVuYy5iaW5kKHRoaXNPYmplY3QsICJiYW5hbmEiKTsKLSAgICBi
b3VuZChbMiwgMywgNF0pOwotfSk7Ci0KLQotdGVzdCgiam9pblBhdGgiLCAxLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgdmFsdWUgPSBiYXNlLmpvaW5QYXRoKCJwYXRoL3RvIiwgInRlc3QuaHRtbCIp
OwotICAgIGVxdWFscyh2YWx1ZSwgInBhdGgvdG8vdGVzdC5odG1sIik7Ci19KTsKLQotdGVzdCgi
ZW5kc1dpdGgiLCA5LCBmdW5jdGlvbigpIHsKLSAgICBvayhiYXNlLmVuZHNXaXRoKCJ4eXoiLCAi
IikpOwotICAgIG9rKGJhc2UuZW5kc1dpdGgoInh5eiIsICJ6IikpOwotICAgIG9rKGJhc2UuZW5k
c1dpdGgoInh5eiIsICJ5eiIpKTsKLSAgICBvayhiYXNlLmVuZHNXaXRoKCJ4eXoiLCAieHl6Iikp
OwotICAgIG9rKCFiYXNlLmVuZHNXaXRoKCJ4eXoiLCAid3h5eiIpKTsKLSAgICBvayghYmFzZS5l
bmRzV2l0aCgieHl6IiwgImd3eHl6IikpOwotICAgIG9rKGJhc2UuZW5kc1dpdGgoIiIsICIiKSk7
Ci0gICAgb2soIWJhc2UuZW5kc1dpdGgoIiIsICJ6IikpOwotICAgIG9rKCFiYXNlLmVuZHNXaXRo
KCJ4eXh5IiwgInl4IikpOwotfSk7Ci0KLXRlc3QoInRyaW1FeHRlbnNpb24iLCA2LCBmdW5jdGlv
bigpIHsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCJ4eXoiKSwgInh5eiIpOwotICAg
IGVxdWFscyhiYXNlLnRyaW1FeHRlbnNpb24oInh5LnoiKSwgInh5Iik7Ci0gICAgZXF1YWxzKGJh
c2UudHJpbUV4dGVuc2lvbigieC55eiIpLCAieCIpOwotICAgIGVxdWFscyhiYXNlLnRyaW1FeHRl
bnNpb24oIngueS56IiksICJ4LnkiKTsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCIu
eHl6IiksICIiKTsKLSAgICBlcXVhbHMoYmFzZS50cmltRXh0ZW5zaW9uKCIiKSwgIiIpOwotfSk7
Ci0KLXRlc3QoImpvaW5QYXRoIHdpdGggZW1wdHkgcGFyZW50IiwgMSwgZnVuY3Rpb24oKSB7Ci0g
ICAgdmFyIHZhbHVlID0gYmFzZS5qb2luUGF0aCgiIiwgInRlc3QuaHRtbCIpOwotICAgIGVxdWFs
cyh2YWx1ZSwgInRlc3QuaHRtbCIpOwotfSk7Ci0KLXRlc3QoImRpck5hbWUiLCAzLCBmdW5jdGlv
bigpIHsKLSAgICBlcXVhbHMoYmFzZS5kaXJOYW1lKCJmb28uaHRtbCIpLCAiZm9vLmh0bWwiKTsK
LSAgICBlcXVhbHMoYmFzZS5kaXJOYW1lKCJmb28vYmFyLmh0bWwiKSwgImZvbyIpOwotICAgIGVx
dWFscyhiYXNlLmRpck5hbWUoImZvby9iYXIvYmF6Lmh0bWwiKSwgImZvby9iYXIiKTsKLX0pOwot
Ci10ZXN0KCJ1bmlxdWlmeUFycmF5IiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgZGVlcEVxdWFsKGJh
c2UudW5pcXVpZnlBcnJheShbXSksIFtdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS51bmlxdWlmeUFy
cmF5KFsiYSJdKSwgWyJhIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXkoWyJh
IiwgImIiXSksIFsiYSIsICJiIl0pOwotICAgIGRlZXBFcXVhbChiYXNlLnVuaXF1aWZ5QXJyYXko
WyJhIiwgImIiLCAiYiJdKSwgWyJhIiwgImIiXSk7Ci0gICAgZGVlcEVxdWFsKGJhc2UudW5pcXVp
ZnlBcnJheShbImEiLCAiYiIsICJiIiwgImEiXSksIFsiYSIsICJiIl0pOwotfSk7Ci0KLXRlc3Qo
ImZsYXR0ZW5BcnJheSIsIDUsIGZ1bmN0aW9uKCkgewotICAgIGRlZXBFcXVhbChiYXNlLmZsYXR0
ZW5BcnJheShbXSksIFtdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJd
XSksIFsiYSJdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJdLCBbImIi
XV0pLCBbImEiLCAiYiJdKTsKLSAgICBkZWVwRXF1YWwoYmFzZS5mbGF0dGVuQXJyYXkoW1siYSJd
LCBbImIiLCAiYyJdXSksIFsiYSIsICJiIiwgImMiXSk7Ci0gICAgZGVlcEVxdWFsKGJhc2UuZmxh
dHRlbkFycmF5KFtbImEiXSwgW10sIFsiYiJdXSksIFsiYSIsICJiIl0pOwotfSk7Ci0KLXRlc3Qo
ImNhbGxJblBhcmFsbGVsIiwgNCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkQ2FsbCA9
IFt0cnVlLCB0cnVlLCB0cnVlXTsKLSAgICB2YXIgZXhwZWN0Q29tcGxldGlvbkNhbGxiYWNrID0g
dHJ1ZTsKLQotICAgIGJhc2UuY2FsbEluUGFyYWxsZWwoWwotICAgICAgICBmdW5jdGlvbihjYWxs
YmFjaykgewotICAgICAgICAgICAgb2soZXhwZWN0ZWRDYWxsWzBdKTsKLSAgICAgICAgICAgIGV4
cGVjdGVkQ2FsbFswXSA9IGZhbHNlOwotICAgICAgICAgICAgY2FsbGJhY2soKTsKLSAgICAgICAg
fSwKLSAgICAgICAgZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgICAgIG9rKGV4cGVjdGVk
Q2FsbFsxXSk7Ci0gICAgICAgICAgICBleHBlY3RlZENhbGxbMV0gPSBmYWxzZTsKLSAgICAgICAg
ICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0sCi0gICAgICAgIGZ1bmN0aW9uKGNhbGxiYWNrKSB7
Ci0gICAgICAgICAgICBvayhleHBlY3RlZENhbGxbMl0pOwotICAgICAgICAgICAgZXhwZWN0ZWRD
YWxsWzJdID0gZmFsc2U7Ci0gICAgICAgICAgICBjYWxsYmFjaygpOwotICAgICAgICB9LAotICAg
IF0sIGZ1bmN0aW9uKCkgewotICAgICAgICBvayhleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2spOwot
ICAgICAgICBleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2sgPSBmYWxzZTsKLSAgICB9KQotfSk7Ci0K
LXRlc3QoImNhbGxJblNlcXVlbmNlIiwgNywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVk
QXJnID0gNDI7Ci0gICAgdmFyIGV4cGVjdENvbXBsZXRpb25DYWxsYmFjayA9IHRydWU7Ci0KLSAg
ICBiYXNlLmNhbGxJblNlcXVlbmNlKGZ1bmN0aW9uKGFyZywgY2FsbGJhY2spIHsKLSAgICAgICAg
b2soYXJnIDwgNDUpOwotICAgICAgICBlcXVhbHMoYXJnLCBleHBlY3RlZEFyZysrKTsKLSAgICAg
ICAgY2FsbGJhY2soKTsKLSAgICB9LCBbNDIsIDQzLCA0NF0sIGZ1bmN0aW9uKCkgewotICAgICAg
ICBvayhleHBlY3RDb21wbGV0aW9uQ2FsbGJhY2spOwotICAgICAgICBleHBlY3RDb21wbGV0aW9u
Q2FsbGJhY2sgPSBmYWxzZTsKLSAgICB9KQotfSk7Ci0KLXRlc3QoIlJlcXVlc3RUcmFja2VyIiwg
NSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHJlYWR5ID0gZmFsc2U7Ci0gICAgdmFyIHRyYWNrZXIg
PSBuZXcgYmFzZS5SZXF1ZXN0VHJhY2tlcigxLCBmdW5jdGlvbigpIHsKLSAgICAgICAgb2socmVh
ZHkpOwotICAgIH0pOwotICAgIHJlYWR5ID0gdHJ1ZTsKLSAgICB0cmFja2VyLnJlcXVlc3RDb21w
bGV0ZSgpOwotICAgIHJlYWR5ID0gZmFsc2U7Ci0KLSAgICB0cmFja2VyID0gbmV3IGJhc2UuUmVx
dWVzdFRyYWNrZXIoMiwgZnVuY3Rpb24ocGFyYW1ldGVyKSB7Ci0gICAgICAgIG9rKHJlYWR5KTsK
LSAgICAgICAgZXF1YWxzKHBhcmFtZXRlciwgJ2FyZ3VtZW50Jyk7Ci0gICAgfSwgWydhcmd1bWVu
dCddKTsKLSAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgIHJlYWR5ID0gdHJ1ZTsK
LSAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgIHJlYWR5ID0gZmFsc2U7Ci0KLSAg
ICB0cmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMCwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIG9rKHRydWUpOwotICAgIH0pOwotICAgIHRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0K
LSAgICB0cmFja2VyID0gbmV3IGJhc2UuUmVxdWVzdFRyYWNrZXIoMCk7Ci0gICAgdHJhY2tlci5y
ZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAvLyBTaG91bGQgbm90IGJhcmYuCi0gICAgb2sodHJ1ZSk7
Ci19KTsKLQotdGVzdCgiQ2FsbGJhY2tJdGVyYXRvciIsIDIyLCBmdW5jdGlvbigpIHsKLSAgICB2
YXIgZXhwZWN0ZWQgPSAwOwotICAgIHZhciBpdGVyYXRvciA9IG5ldyBiYXNlLkNhbGxiYWNrSXRl
cmF0b3IoZnVuY3Rpb24oYSwgYikgewotICAgICAgICBlcXVhbHMoYSwgJ0FyZ0EnICsgZXhwZWN0
ZWQpOwotICAgICAgICBlcXVhbHMoYiwgJ0FyZ0InICsgZXhwZWN0ZWQpOwotICAgICAgICArK2V4
cGVjdGVkOwotICAgIH0sIFsKLSAgICAgICAgWydBcmdBMCcsICdBcmdCMCddLAotICAgICAgICBb
J0FyZ0ExJywgJ0FyZ0IxJ10sCi0gICAgICAgIFsnQXJnQTInLCAnQXJnQjInXSwKLSAgICBdKTsK
LSAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgb2soIWl0ZXJhdG9yLmhhc1ByZXZpb3Vz
KCkpCi0gICAgaXRlcmF0b3IuY2FsbE5leHQoKTsKLSAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkp
Ci0gICAgb2soIWl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi0gICAgaXRlcmF0b3IuY2FsbE5leHQo
KTsKLSAgICBvayhpdGVyYXRvci5oYXNOZXh0KCkpCi0gICAgb2soaXRlcmF0b3IuaGFzUHJldmlv
dXMoKSkKLSAgICBpdGVyYXRvci5jYWxsTmV4dCgpOwotICAgIG9rKCFpdGVyYXRvci5oYXNOZXh0
KCkpCi0gICAgb2soaXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLSAgICBleHBlY3RlZCA9IDE7Ci0g
ICAgaXRlcmF0b3IuY2FsbFByZXZpb3VzKCk7Ci0gICAgb2soaXRlcmF0b3IuaGFzTmV4dCgpKQot
ICAgIG9rKGl0ZXJhdG9yLmhhc1ByZXZpb3VzKCkpCi0gICAgZXhwZWN0ZWQgPSAwOwotICAgIGl0
ZXJhdG9yLmNhbGxQcmV2aW91cygpOwotICAgIG9rKGl0ZXJhdG9yLmhhc05leHQoKSkKLSAgICBv
ayghaXRlcmF0b3IuaGFzUHJldmlvdXMoKSkKLX0pOwotCi10ZXN0KCJmaWx0ZXJEaWN0aW9uYXJ5
IiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Rpb25hcnkgPSB7Ci0gICAgICAgICdmb28n
OiA0MywKLSAgICAgICAgJ2Jhcic6IDExCi0gICAgfTsKLSAgICBkZWVwRXF1YWwoYmFzZS5maWx0
ZXJEaWN0aW9uYXJ5KGRpY3Rpb25hcnksIGZ1bmN0aW9uKCkgeyByZXR1cm4gdHJ1ZTsgfSksIHsK
LSAgICAgICAgImZvbyI6IDQzLAotICAgICAgICAiYmFyIjogMTEKLSAgICB9KTsKLSAgICBkZWVw
RXF1YWwoYmFzZS5maWx0ZXJEaWN0aW9uYXJ5KGRpY3Rpb25hcnksIGZ1bmN0aW9uKCkgeyByZXR1
cm4gZmFsc2U7IH0pLCB7IH0pOwotICAgIGRlZXBFcXVhbChiYXNlLmZpbHRlckRpY3Rpb25hcnko
ZGljdGlvbmFyeSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiBrZXkgPT0gJ2Zvbyc7IH0pLCB7Ci0g
ICAgICAgICJmb28iOiA0MwotICAgIH0pOwotfSk7Ci0KLXRlc3QoIm1hcERpY3Rpb25hcnkiLCAz
LCBmdW5jdGlvbigpIHsKLSAgICBkZWVwRXF1YWwoYmFzZS5tYXBEaWN0aW9uYXJ5KHt9LCBmdW5j
dGlvbih2YWx1ZSkgeyByZXR1cm4gdmFsdWUgLSAxMDsgfSksIHt9KTsKLSAgICB2YXIgZGljdGlv
bmFyeSA9IHsKLSAgICAgICAgJ2Zvbyc6IDQzLAotICAgICAgICAnYmFyJzogMTEKLSAgICB9Owot
ICAgIGRlZXBFcXVhbChiYXNlLm1hcERpY3Rpb25hcnkoZGljdGlvbmFyeSwgZnVuY3Rpb24odmFs
dWUpIHsgcmV0dXJuIHZhbHVlIC0gMTA7IH0pLCB7Ci0gICAgICAgICJmb28iOiAzMywKLSAgICAg
ICAgImJhciI6IDEKLSAgICB9KTsKLSAgICBkZWVwRXF1YWwoYmFzZS5tYXBEaWN0aW9uYXJ5KGRp
Y3Rpb25hcnksIGZ1bmN0aW9uKHZhbHVlKSB7Ci0gICAgICAgIGlmICh2YWx1ZSA+IDIwKQotICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlIC0gMjA7Ci0gICAgfSksIHsKLSAgICAgICAgImZvbyI6IDIz
LAotICAgIH0pOwotfSk7Ci0KLXRlc3QoImZpbHRlclRyZWUiLCAyLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgdHJlZSA9IHsKLSAgICAgICAgJ3BhdGgnOiB7Ci0gICAgICAgICAgICAndG8nOiB7Ci0g
ICAgICAgICAgICAgICAgJ3Rlc3QuaHRtbCc6IHsKLSAgICAgICAgICAgICAgICAgICAgJ2FjdHVh
bCc6ICdQQVNTJywKLSAgICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkJzogJ0ZBSUwnCi0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICdhbm90aGVyLmh0bWwn
OiB7Ci0gICAgICAgICAgICAgICAgJ2FjdHVhbCc6ICdURVhUJywKLSAgICAgICAgICAgICAgICAn
ZXhwZWN0ZWQnOiAnUEFTUycKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAg
IGZ1bmN0aW9uIGlzTGVhZihub2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuICEhbm9kZS5hY3R1
YWw7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gYWN0dWFsSXNUZXh0KG5vZGUpCi0gICAgewotICAg
ICAgICByZXR1cm4gbm9kZS5hY3R1YWwgPT0gJ1RFWFQnOwotICAgIH0KLQotICAgIHZhciBhbGwg
PSBiYXNlLmZpbHRlclRyZWUodHJlZSwgaXNMZWFmLCBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWUg
fSk7Ci0gICAgZGVlcEVxdWFsKGFsbCwgewotICAgICAgICAncGF0aC90by90ZXN0Lmh0bWwnOiB7
Ci0gICAgICAgICAgICAnYWN0dWFsJzogJ1BBU1MnLAotICAgICAgICAgICAgJ2V4cGVjdGVkJzog
J0ZBSUwnCi0gICAgICAgIH0sCi0gICAgICAgICdwYXRoL2Fub3RoZXIuaHRtbCc6IHsKLSAgICAg
ICAgICAgICdhY3R1YWwnOiAnVEVYVCcsCi0gICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycK
LSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIHRleHQgPSBiYXNlLmZpbHRlclRyZWUodHJl
ZSwgaXNMZWFmLCBhY3R1YWxJc1RleHQpOwotICAgIGRlZXBFcXVhbCh0ZXh0LCB7Ci0gICAgICAg
ICdwYXRoL2Fub3RoZXIuaHRtbCc6IHsKLSAgICAgICAgICAgICdhY3R1YWwnOiAnVEVYVCcsCi0g
ICAgICAgICAgICAnZXhwZWN0ZWQnOiAnUEFTUycKLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0K
LXRlc3QoIlVwZGF0ZVRyYWNrZXIiLCAyMCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Q7Ci0K
LSAgICBmdW5jdGlvbiBkdW1wS2V5cygpCi0gICAgewotICAgICAgICB2YXIgdXBkYXRlcyA9IFtd
Ci0gICAgICAgIGRpY3QuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBrZXksIHVwZGF0ZWQpIHsKLSAg
ICAgICAgICAgIHVwZGF0ZXMucHVzaChrZXkpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJu
IHVwZGF0ZXM7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gZHVtcFVwZGF0ZWRLZXlzKCkKLSAgICB7
Ci0gICAgICAgIHZhciB1cGRhdGVzID0gW10KLSAgICAgICAgZGljdC5mb3JFYWNoKGZ1bmN0aW9u
KGl0ZW0sIGtleSwgdXBkYXRlZCkgewotICAgICAgICAgICAgdXBkYXRlZCAmJiB1cGRhdGVzLnB1
c2goa2V5KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB1cGRhdGVzOwotICAgIH0KLQot
Ci0gICAgZGljdCA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAgICBkaWN0LnVwZGF0ZSgi
NSIsIHt9KTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSJdKTsKLSAgICBk
aWN0LnVwZGF0ZSgiNiIsIHt9KTsKLSAgICBkaWN0LnVwZGF0ZSgiNyIsIHt9KTsKLSAgICBkZWVw
RXF1YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7Ci0gICAgZGVlcEVxdWFs
KGRpY3QuZ2V0KCI2IiksIHt9KTsKLSAgICBvayhkaWN0LmV4aXN0cygiNyIpKTsKLSAgICBkaWN0
LnB1cmdlKCk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7Ci0gICAgZGVl
cEVxdWFsKGR1bXBLZXlzKCksIFsiNSIsICI2IiwgIjciXSk7Ci0gICAgZGljdC51cGRhdGUoIjUi
LCB7fSk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjUiXSk7Ci0gICAgZGlj
dC51cGRhdGUoIjQiLCB7fSk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbIjQi
LCAiNSJdKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUiLCAiNiIsICI3Il0p
OwotICAgIGRpY3QucHVyZ2UoKTsKLSAgICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyI0IiwgIjUi
XSk7Ci0gICAgZGVlcEVxdWFsKGR1bXBVcGRhdGVkS2V5cygpLCBbXSk7Ci0gICAgZGljdC5wdXJn
ZSgpOwotICAgIGRlZXBFcXVhbChkdW1wS2V5cygpLCBbXSk7Ci0KLSAgICB2YXIgcmVtb3ZlQ291
bnQgPSAwOwotICAgIGRpY3QudXBkYXRlKCJvbmUiKTsKLSAgICBkZWVwRXF1YWwoZHVtcFVwZGF0
ZWRLZXlzKCksIFsib25lIl0pOwotICAgIGRpY3QudXBkYXRlKCJ0d28iKTsKLSAgICBkZWVwRXF1
YWwoZHVtcFVwZGF0ZWRLZXlzKCksIFsib25lIiwgInR3byJdKTsKLSAgICBkaWN0LnVwZGF0ZSgi
dGhyZWUiKTsKLSAgICBkaWN0LnB1cmdlKCk7Ci0gICAgZGVlcEVxdWFsKGR1bXBLZXlzKCksIFsi
b25lIiwgInRocmVlIiwgInR3byJdKTsKLSAgICBkaWN0LnVwZGF0ZSgidHdvIik7Ci0gICAgZGlj
dC5wdXJnZShmdW5jdGlvbigpIHsKLSAgICAgICAgcmVtb3ZlQ291bnQrKzsKLSAgICB9KTsKLSAg
ICBkZWVwRXF1YWwoZHVtcEtleXMoKSwgWyJ0d28iXSk7Ci0gICAgZXF1YWwocmVtb3ZlQ291bnQs
IDIpOwotICAgIGRpY3QudXBkYXRlKCJmb3VyIik7Ci0gICAgdmFyIHJlbW92ZUNvdW50ZXIgPSB7
IGNvdW50OiAwIH07Ci0gICAgZGljdC5wdXJnZShmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5j
b3VudCsrOwotICAgIH0sIHJlbW92ZUNvdW50ZXIpOwotICAgIGVxdWFsKHJlbW92ZUNvdW50ZXIu
Y291bnQsIDEpOwotICAgIGRpY3QucHVyZ2UoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGVxdWFsKFN0
cmluZyh0aGlzKSwgImZvdXIiKTsKLSAgICB9KTsKLQotICAgIGRpY3QgPSBuZXcgYmFzZS5VcGRh
dGVUcmFja2VyKCk7Ci0gICAgZGljdC51cGRhdGUoIm9uZSIpOwotICAgIHZhciB0aGlzT2JqZWN0
ID0ge30KLSAgICBkaWN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSkgewotICAgICAgICBlcXVhbCh0
aGlzLCB0aGlzT2JqZWN0KTsKLSAgICB9LCB0aGlzT2JqZWN0KTsKLQotfSk7Ci0KLXRlc3QoImV4
dGVuZHMiLCAxNCwgZnVuY3Rpb24oKSB7Ci0KLSAgICB2YXIgTGlrZURpdiA9IGJhc2UuZXh0ZW5k
cygiZGl2IiwgewotICAgICAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMu
dGV4dENvbnRlbnQgPSAiYXdlc29tZSI7Ci0gICAgICAgIH0sCi0gICAgICAgIG1ldGhvZDogZnVu
Y3Rpb24obXNnKSB7Ci0gICAgICAgICAgICByZXR1cm4gNDI7Ci0gICAgICAgIH0KLSAgICB9KTsK
LQotICAgIHZhciBMaWtlTGlrZURpdiA9IGJhc2UuZXh0ZW5kcyhMaWtlRGl2LCB7Ci0gICAgICAg
IGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAibGlrZSI7
Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBMaWtlUCA9IGJhc2UuZXh0ZW5kcygicCIs
IHsKLSAgICAgICAgaW5pdDogZnVuY3Rpb24oY29udGVudCkgewotICAgICAgICAgICAgdGhpcy50
ZXh0Q29udGVudCA9IGNvbnRlbnQKLSAgICAgICAgfQotICAgIH0pOwotCi0gICAgdmFyIExpa2VQ
cm9ncmVzcyA9IGJhc2UuZXh0ZW5kcygicHJvZ3Jlc3MiLCB7Ci0gICAgICAgIGluaXQ6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgdGhpcy5tYXggPSAxMDA7Ci0gICAgICAgICAgICB0aGlzLnZh
bHVlID0gMTA7Ci0gICAgICAgIH0KLSAgICB9KTsKLQotICAgIHZhciBMaWtlTGlrZVByb2dyZXNz
ID0gYmFzZS5leHRlbmRzKExpa2VQcm9ncmVzcywgewotICAgICAgICBjb21wbGV0ZWQ6IGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgdGhpcy52YWx1ZSA9IDEwMDsKLSAgICAgICAgfQotICAgIH0p
OwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZURpdigpKTsKLSAgICBl
cXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIkRJViIpOwotICAgIGVxdWFs
cyhkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJhd2Vzb21lIik7Ci0gICAgZXF1
YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpLCA0Mik7Ci0gICAgZG9jdW1lbnQu
Ym9keS5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5Lmxhc3RDaGlsZCk7Ci0KLSAgICBkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKG5ldyBMaWtlTGlrZURpdigpKTsKLSAgICBlcXVhbHMoZG9jdW1l
bnQuYm9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIkRJViIpOwotICAgIGVxdWFscyhkb2N1bWVudC5i
b2R5Lmxhc3RDaGlsZC5pbm5lckhUTUwsICJhd2Vzb21lIik7Ci0gICAgZXF1YWxzKGRvY3VtZW50
LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpLCA0Mik7Ci0gICAgZXF1YWxzKGRvY3VtZW50LmJvZHku
bGFzdENoaWxkLmNsYXNzTmFtZSwgImxpa2UiKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNo
aWxkKGRvY3VtZW50LmJvZHkubGFzdENoaWxkKTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQobmV3IExpa2VQKCJzdXBlciIpKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0
Q2hpbGQudGFnTmFtZSwgIlAiKTsKLSAgICBlcXVhbHMoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQu
aW5uZXJIVE1MLCAic3VwZXIiKTsKLSAgICByYWlzZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGRv
Y3VtZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpOwotICAgIH0pOwotICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotCi0gICAgZG9jdW1lbnQu
Ym9keS5hcHBlbmRDaGlsZChuZXcgTGlrZVByb2dyZXNzKCkpOwotICAgIGVxdWFscyhkb2N1bWVu
dC5ib2R5Lmxhc3RDaGlsZC50YWdOYW1lLCAiUFJPR1JFU1MiKTsKLSAgICAvLyBTYWZhcmkgNS4x
IGxhY2tzIHRoZSA8cHJvZ3Jlc3M+IGVsZW1lbnQuCi0gICAgLy8gZXF1YWxzKGRvY3VtZW50LmJv
ZHkubGFzdENoaWxkLnBvc2l0aW9uLCAwLjEpOwotICAgIGVxdWFscyhkb2N1bWVudC5ib2R5Lmxh
c3RDaGlsZC5pbm5lckhUTUwsICIiKTsKLSAgICByYWlzZXMoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IGRvY3VtZW50LmJvZHkubGFzdENoaWxkLm1ldGhvZCgpOwotICAgIH0pOwotICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQpOwotCi0gICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChuZXcgTGlrZUxpa2VQcm9ncmVzcygpKTsKLSAgICBlcXVhbHMo
ZG9jdW1lbnQuYm9keS5sYXN0Q2hpbGQudGFnTmFtZSwgIlBST0dSRVNTIik7Ci0gICAgLy8gU2Fm
YXJpIDUuMSBsYWNrcyB0aGUgPHByb2dyZXNzPiBlbGVtZW50LgotICAgIC8vIGVxdWFscyhkb2N1
bWVudC5ib2R5Lmxhc3RDaGlsZC5wb3NpdGlvbiwgMC4xKTsKLSAgICBkb2N1bWVudC5ib2R5Lmxh
c3RDaGlsZC5jb21wbGV0ZWQoKTsKLSAgICAvLyBTYWZhcmkgNS4xIGxhY2tzIHRoZSA8cHJvZ3Jl
c3M+IGVsZW1lbnQuCi0gICAgLy8gZXF1YWxzKGRvY3VtZW50LmJvZHkubGFzdENoaWxkLnBvc2l0
aW9uLCAxKTsKLSAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvY3VtZW50LmJvZHkubGFz
dENoaWxkKTsKLX0pOwotCi10ZXN0KCJyZWxhdGl2aXplVGltZSIsIDE0LCBmdW5jdGlvbigpIHsK
LSAgICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRp
bWUodGltZSksICJKdXN0IG5vdyIpOwotICAgIHRpbWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0
ZXMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMSBtaW51
dGUgYWdvIik7Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7Ci0g
ICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyIG1pbnV0ZXMgYWdvIik7Ci0g
ICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMSk7Ci0gICAgZXF1YWxzKGJh
c2UucmVsYXRpdml6ZVRpbWUodGltZSksICIzIG1pbnV0ZXMgYWdvIik7Ci0gICAgdGltZS5zZXRN
aW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gNTYpOwotICAgIGVxdWFscyhiYXNlLnJlbGF0aXZp
emVUaW1lKHRpbWUpLCAiNTkgbWludXRlcyBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGlt
ZS5nZXRNaW51dGVzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1l
KSwgIjEgaG91ciBhZ28iKTsKLSAgICB0aW1lLnNldE1pbnV0ZXModGltZS5nZXRNaW51dGVzKCkg
LSAyOSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIxIGhvdXIgYWdv
Iik7Ci0gICAgdGltZS5zZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gMik7Ci0gICAgZXF1
YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyIGhvdXJzIGFnbyIpOwotICAgIHRpbWUu
c2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDI5KTsKLSAgICBlcXVhbHMoYmFzZS5yZWxh
dGl2aXplVGltZSh0aW1lKSwgIjIgaG91cnMgYWdvIik7Ci0gICAgdGltZS5zZXRIb3Vycyh0aW1l
LmdldEhvdXJzKCkgLSAxKTsKLSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwg
IjMgaG91cnMgYWdvIik7Ci0gICAgdGltZS5zZXRIb3Vycyh0aW1lLmdldEhvdXJzKCkgLSAyMCk7
Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSksICIyMyBob3VycyBhZ28iKTsK
LSAgICB0aW1lLnNldEhvdXJzKHRpbWUuZ2V0SG91cnMoKSAtIDEpOwotICAgIGVxdWFscyhiYXNl
LnJlbGF0aXZpemVUaW1lKHRpbWUpLCAiMSBkYXkgYWdvIik7Ci0gICAgdGltZS5zZXREYXRlKHRp
bWUuZ2V0RGF0ZSgpIC0gMSk7Ci0gICAgZXF1YWxzKGJhc2UucmVsYXRpdml6ZVRpbWUodGltZSks
ICIyIGRheXMgYWdvIik7Ci0gICAgdGltZS5zZXREYXRlKHRpbWUuZ2V0RGF0ZSgpIC0gOTk4KTsK
LSAgICBlcXVhbHMoYmFzZS5yZWxhdGl2aXplVGltZSh0aW1lKSwgIjEwMDAgZGF5cyBhZ28iKTsK
LX0pOwotCi10ZXN0KCJnZXRVUkxQYXJhbWV0ZXIiLCAxLCBmdW5jdGlvbigpIHsKLSAgICBvaygh
YmFzZS5nZXRVUkxQYXJhbWV0ZXIoJ25vbi1leGlzdGFudCcpKTsKLX0pOwotCi10ZXN0KCJwYXJz
ZUpTT05QIiwgMiwgZnVuY3Rpb24oKSB7Ci0gICAgZGVlcEVxdWFsKGJhc2UucGFyc2VKU09OUCgi
IiksIHt9KTsKLSAgICBkZWVwRXF1YWwoYmFzZS5wYXJzZUpTT05QKCdwKHsia2V5IjogInZhbHVl
In0pJyksIHsia2V5IjogInZhbHVlIn0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL3NjcmlwdHMvYnVnemlsbGFfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkwNDIp
CisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWd6aWxsYV91bml0dGVzdHMuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwyMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewot
Ci1tb2R1bGUoImJ1Z3ppbGxhIik7Ci0KLXZhciBrRXhhbXBsZVJlc3BvbnNlWE1MID0KLSAgICAn
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4nICsKLSAgICAnPGZlZWQgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDUvQXRvbSI+JyArCi0gICAgJyAgPHRpdGxlPkJ1Z3pp
bGxhIEJ1Z3M8L3RpdGxlPicgKwotICAgICcgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJ0
ZXh0L2h0bWwiJyArCi0gICAgJyAgICAgICAgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
YnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1SRU9QRU5FRCZhbXA7YnVnX3N0YXR1cz1ORVcmYW1wO2J1
Z19zdGF0dXM9QVNTSUdORUQmYW1wO2J1Z19zdGF0dXM9VU5DT05GSVJNRUQmYW1wO2ZpZWxkLTEt
MC0wPWJ1Z19zdGF0dXMmYW1wO2ZpZWxkMC0wLTA9cHJvZHVjdCZhbXA7ZmllbGQwLTAtMT1jb21w
b25lbnQmYW1wO2ZpZWxkMC0wLTI9c2hvcnRfZGVzYyZhbXA7ZmllbGQwLTAtMz1zdGF0dXNfd2hp
dGVib2FyZCZhbXA7ZmllbGQwLTAtND1sb25nZGVzYyZhbXA7cXVlcnlfZm9ybWF0PWFkdmFuY2Vk
JmFtcDtyZW1hY3Rpb249JmFtcDt0eXBlLTEtMC0wPWFueWV4YWN0JmFtcDt0eXBlMC0wLTA9c3Vi
c3RyaW5nJmFtcDt0eXBlMC0wLTE9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTI9c3Vic3RyaW5nJmFt
cDt0eXBlMC0wLTM9c3Vic3RyaW5nJmFtcDt0eXBlMC0wLTQ9c3Vic3RyaW5nJmFtcDt2YWx1ZS0x
LTAtMD1SRU9QRU5FRCUyQ05FVyUyQ0FTU0lHTkVEJTJDVU5DT05GSVJNRUQmYW1wO3ZhbHVlMC0w
LTA9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTE9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVl
MC0wLTI9Z2FyZGVuLW8tbWF0aWMmYW1wO3ZhbHVlMC0wLTM9Z2FyZGVuLW8tbWF0aWMmYW1wO3Zh
bHVlMC0wLTQ9Z2FyZGVuLW8tbWF0aWMiLz4nICsKLSAgICAnICA8bGluayByZWw9InNlbGYiIHR5
cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIicgKwotICAgICcgICAgICAgIGhyZWY9Imh0dHBzOi8v
YnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVPUEVORUQmYW1wO2J1Z19z
dGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFtcDtidWdfc3RhdHVzPVVOQ09ORklS
TUVEJmFtcDtjdHlwZT1hdG9tJmFtcDtmaWVsZC0xLTAtMD1idWdfc3RhdHVzJmFtcDtmaWVsZDAt
MC0wPXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFtcDtmaWVsZDAtMC0yPXNob3J0
X2Rlc2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQmYW1wO2ZpZWxkMC0wLTQ9bG9u
Z2Rlc2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVtYWN0aW9uPSZhbXA7dHlwZS0x
LTAtMD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0xPXN1YnN0
cmluZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0zPXN1YnN0cmluZyZhbXA7
dHlwZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVPUEVORUQlMkNORVclMkNBU1NJ
R05FRCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1
ZTAtMC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdhcmRlbi1vLW1hdGljJmFtcDt2
YWx1ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00PWdhcmRlbi1vLW1hdGljIi8+
JyArCi0gICAgJyAgPHVwZGF0ZWQ+MjAxMS0wOC0wNFQwMDoyMjo0OVo8L3VwZGF0ZWQ+JyArCi0g
ICAgJyAgPGlkPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9
UkVPUEVORUQmYW1wO2J1Z19zdGF0dXM9TkVXJmFtcDtidWdfc3RhdHVzPUFTU0lHTkVEJmFtcDti
dWdfc3RhdHVzPVVOQ09ORklSTUVEJmFtcDtjdHlwZT1hdG9tJmFtcDtmaWVsZC0xLTAtMD1idWdf
c3RhdHVzJmFtcDtmaWVsZDAtMC0wPXByb2R1Y3QmYW1wO2ZpZWxkMC0wLTE9Y29tcG9uZW50JmFt
cDtmaWVsZDAtMC0yPXNob3J0X2Rlc2MmYW1wO2ZpZWxkMC0wLTM9c3RhdHVzX3doaXRlYm9hcmQm
YW1wO2ZpZWxkMC0wLTQ9bG9uZ2Rlc2MmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7cmVt
YWN0aW9uPSZhbXA7dHlwZS0xLTAtMD1hbnlleGFjdCZhbXA7dHlwZTAtMC0wPXN1YnN0cmluZyZh
bXA7dHlwZTAtMC0xPXN1YnN0cmluZyZhbXA7dHlwZTAtMC0yPXN1YnN0cmluZyZhbXA7dHlwZTAt
MC0zPXN1YnN0cmluZyZhbXA7dHlwZTAtMC00PXN1YnN0cmluZyZhbXA7dmFsdWUtMS0wLTA9UkVP
UEVORUQlMkNORVclMkNBU1NJR05FRCUyQ1VOQ09ORklSTUVEJmFtcDt2YWx1ZTAtMC0wPWdhcmRl
bi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0xPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0yPWdh
cmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC0zPWdhcmRlbi1vLW1hdGljJmFtcDt2YWx1ZTAtMC00
PWdhcmRlbi1vLW1hdGljPC9pZD4nICsKLSAgICAnJyArCi0gICAgJyAgPGVudHJ5PicgKwotICAg
ICcgICAgPHRpdGxlPltCdWcgNjU2NTRdIEFkZCBtaXNzaW5nIGxpY2Vuc2UgYmxvY2tzIHRvIGdh
cmRlbi1vLW1hdGljPC90aXRsZT4nICsKLSAgICAnICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0
eXBlPSJ0ZXh0L2h0bWwiJyArCi0gICAgJyAgICAgICAgICBocmVmPSJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQiLz4nICsKLSAgICAnICAgIDxpZD5odHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQ8L2lkPicgKwotICAgICcgICAg
PGF1dGhvcj4nICsKLSAgICAnICAgICAgPG5hbWU+QWRhbSBCYXJ0aDwvbmFtZT4nICsKLSAgICAn
ICAgIDwvYXV0aG9yPicgKwotICAgICcgICAgPHVwZGF0ZWQ+MjAxMS0wOC0wNFQwMDoyMjoyNlo8
L3VwZGF0ZWQ+ICcgKwotICAgICcgICAgPHN1bW1hcnkgdHlwZT0iaHRtbCI+JyArCi0gICAgJyAg
ICAgICcgKwotICAgICcgICAgICAmbHQ7dGFibGUmZ3Q7JyArCi0gICAgJyAgICAgICZsdDt0ciZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGgmZ3Q7RmllbGQmbHQ7L3RoJmd0OyZsdDt0aCZndDtW
YWx1ZSZsdDsvdGgmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZx
dW90O2J6X2ZlZWRfcHJvZHVjdCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
UHJvZHVjdCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1dlYktpdCZsdDsv
dGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2Zl
ZWRfY29tcG9uZW50JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtDb21wb25l
bnQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtOZXcgQnVncyZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRf
YXNzaWduZWUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0Fzc2lnbmVlJmx0
Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7
JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVw
b3J0ZXImcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1JlcG9ydGVyJmx0Oy90
ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QWRhbSBCYXJ0aCZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfYnVnX3N0
YXR1cyZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U3RhdHVzJmx0Oy90ZCZn
dDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TkVXJmx0Oy90ZCZndDsnICsKLSAgICAnICAg
ICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXNvbHV0aW9uJnF1b3Q7
Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtSZXNvbHV0aW9uICZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICAgJmx0O3RkJmd0OyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsv
dHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcHJpb3JpdHkmcXVvdDsmZ3Q7JyArCi0g
ICAgJyAgICAgICAgJmx0O3RkJmd0O1ByaW9yaXR5Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
ICAmbHQ7dGQmZ3Q7UDImbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0
ciBjbGFzcz0mcXVvdDtiel9mZWVkX3NldmVyaXR5JnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAg
ICZsdDt0ZCZndDtTZXZlcml0eSAmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZn
dDtOb3JtYWwmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFz
cz0mcXVvdDtiel9mZWVkX2NyZWF0aW9uX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAg
Jmx0O3RkJmd0O09wZW5lZCZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE2
OjIxOjUyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9
JnF1b3Q7YnpfZmVlZF9jaGFuZ2VkX2RhdGUmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0
O3RkJmd0O0NoYW5nZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsxNjoy
MjoyNiZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7JyArCi0gICAgJyAgICAg
ICZsdDsvdGFibGUmZ3Q7JyArCi0gICAgJyAgICA8L3N1bW1hcnk+JyArCi0gICAgJyAgPC9lbnRy
eT4nICsKLSAgICAnICA8ZW50cnk+JyArCi0gICAgJyAgICA8dGl0bGU+W0J1ZyA2NTY1M10gZ2Fy
ZGVuLW8tbWF0aWMgbmVlZHMgYSB3YXkgdG8gbW9jayBvdXQgdGhlIG5ldHdvcms8L3RpdGxlPicg
KwotICAgICcgICAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9InRleHQvaHRtbCInICsKLSAg
ICAnICAgICAgICAgIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTY1MyIvPicgKwotICAgICcgICAgPGlkPmh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD02NTY1MzwvaWQ+JyArCi0gICAgJyAgICA8YXV0aG9yPicgKwotICAgICcgICAg
ICA8bmFtZT5BZGFtIEJhcnRoPC9uYW1lPicgKwotICAgICcgICAgPC9hdXRob3I+JyArCi0gICAg
JyAgICA8dXBkYXRlZD4yMDExLTA4LTA0VDAwOjIyOjQ5WjwvdXBkYXRlZD4gJyArCi0gICAgJyAg
ICA8c3VtbWFyeSB0eXBlPSJodG1sIj4nICsKLSAgICAnICAgICAgJyArCi0gICAgJyAgICAgICZs
dDt0YWJsZSZndDsnICsKLSAgICAnICAgICAgJmx0O3RyJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0aCZndDtGaWVsZCZsdDsvdGgmZ3Q7Jmx0O3RoJmd0O1ZhbHVlJmx0Oy90aCZndDsnICsKLSAg
ICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9wcm9kdWN0JnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcm9kdWN0Jmx0Oy90ZCZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7V2ViS2l0Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAg
Jmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jb21wb25lbnQmcXVvdDsmZ3Q7
JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0NvbXBvbmVudCZsdDsvdGQmZ3Q7JyArCi0gICAg
JyAgICAgICAgJmx0O3RkJmd0O05ldyBCdWdzJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0
Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9hc3NpZ25lZSZxdW90OyZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7QXNzaWduZWUmbHQ7L3RkJmd0OycgKwotICAgICcgICAg
ICAgICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90
ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9yZXBvcnRlciZxdW90OyZndDsnICsKLSAg
ICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVwb3J0ZXImbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAg
ICZsdDt0ZCZndDtBZGFtIEJhcnRoJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZn
dDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9idWdfc3RhdHVzJnF1b3Q7Jmd0OycgKwotICAg
ICcgICAgICAgICZsdDt0ZCZndDtTdGF0dXMmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZs
dDt0ZCZndDtORVcmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBj
bGFzcz0mcXVvdDtiel9mZWVkX3Jlc29sdXRpb24mcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAg
Jmx0O3RkJmd0O1Jlc29sdXRpb24gJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQm
Z3Q7Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1
b3Q7YnpfZmVlZF9wcmlvcml0eSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7
UHJpb3JpdHkmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQMiZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRf
c2V2ZXJpdHkmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1NldmVyaXR5ICZs
dDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05vcm1hbCZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY3JlYXRp
b25fZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7T3BlbmVkJmx0Oy90
ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7MTY6MTY6NDQmbHQ7L3RkJmd0OycgKwot
ICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX2NoYW5nZWRf
ZGF0ZSZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7Q2hhbmdlZCZsdDsvdGQm
Z3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0OzE2OjIyOjQ5Jmx0Oy90ZCZndDsnICsKLSAg
ICAnICAgICAgJmx0Oy90ciZndDsnICsKLSAgICAnICAgICAgJmx0Oy90YWJsZSZndDsnICsKLSAg
ICAnICAgIDwvc3VtbWFyeT4nICsKLSAgICAnICA8L2VudHJ5PicgKwotICAgICcgIDxlbnRyeT4n
ICsKLSAgICAnICAgIDx0aXRsZT5bQnVnIDY1NjUwXSBVc2UgZmFpbHVyZUluZm8gbW9yZSBwZXJ2
YXNpdmVseSBpbiBnYXJkZW4tby1tYXRpYzwvdGl0bGU+JyArCi0gICAgJyAgICA8bGluayByZWw9
ImFsdGVybmF0ZSIgdHlwZT0idGV4dC9odG1sIicgKwotICAgICcgICAgICAgICAgaHJlZj0iaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwIi8+JyArCi0gICAgJyAg
ICA8aWQ+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjUwPC9pZD4n
ICsKLSAgICAnICAgIDxhdXRob3I+JyArCi0gICAgJyAgICAgIDxuYW1lPkFkYW0gQmFydGg8L25h
bWU+JyArCi0gICAgJyAgICA8L2F1dGhvcj4nICsKLSAgICAnICAgIDx1cGRhdGVkPjIwMTEtMDgt
MDNUMjM6NDA6MzRaPC91cGRhdGVkPiAnICsKLSAgICAnICAgIDxzdW1tYXJ5IHR5cGU9Imh0bWwi
PicgKwotICAgICcgICAgICAnICsKLSAgICAnICAgICAgJmx0O3RhYmxlJmd0OycgKwotICAgICcg
ICAgICAmbHQ7dHImZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RoJmd0O0ZpZWxkJmx0Oy90aCZn
dDsmbHQ7dGgmZ3Q7VmFsdWUmbHQ7L3RoJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZs
dDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3Byb2R1Y3QmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAg
ICAgJmx0O3RkJmd0O1Byb2R1Y3QmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZn
dDtXZWJLaXQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFz
cz0mcXVvdDtiel9mZWVkX2NvbXBvbmVudCZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7
dGQmZ3Q7Q29tcG9uZW50Jmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7TmV3
IEJ1Z3MmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0m
cXVvdDtiel9mZWVkX2Fzc2lnbmVlJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZn
dDtBc3NpZ25lZSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFy
dGgmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVv
dDtiel9mZWVkX3JlcG9ydGVyJnF1b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtS
ZXBvcnRlciZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O0FkYW0gQmFydGgm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDti
el9mZWVkX2J1Z19zdGF0dXMmcXVvdDsmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O1N0
YXR1cyZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICAgJmx0O3RkJmd0O05FVyZsdDsvdGQmZ3Q7
JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfcmVz
b2x1dGlvbiZxdW90OyZndDsnICsKLSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7UmVzb2x1dGlvbiAm
bHQ7L3RkJmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDsmbHQ7L3RkJmd0OycgKwotICAg
ICcgICAgICAmbHQ7L3RyJmd0OyZsdDt0ciBjbGFzcz0mcXVvdDtiel9mZWVkX3ByaW9yaXR5JnF1
b3Q7Jmd0OycgKwotICAgICcgICAgICAgICZsdDt0ZCZndDtQcmlvcml0eSZsdDsvdGQmZ3Q7JyAr
Ci0gICAgJyAgICAgICAgJmx0O3RkJmd0O1AyJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0
Oy90ciZndDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9zZXZlcml0eSZxdW90OyZndDsnICsK
LSAgICAnICAgICAgICAmbHQ7dGQmZ3Q7U2V2ZXJpdHkgJmx0Oy90ZCZndDsnICsKLSAgICAnICAg
ICAgICAmbHQ7dGQmZ3Q7Tm9ybWFsJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgJmx0Oy90ciZn
dDsmbHQ7dHIgY2xhc3M9JnF1b3Q7YnpfZmVlZF9jcmVhdGlvbl9kYXRlJnF1b3Q7Jmd0OycgKwot
ICAgICcgICAgICAgICZsdDt0ZCZndDtPcGVuZWQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAg
ICZsdDt0ZCZndDsxNTozNTo1NSZsdDsvdGQmZ3Q7JyArCi0gICAgJyAgICAgICZsdDsvdHImZ3Q7
Jmx0O3RyIGNsYXNzPSZxdW90O2J6X2ZlZWRfY2hhbmdlZF9kYXRlJnF1b3Q7Jmd0OycgKwotICAg
ICcgICAgICAgICZsdDt0ZCZndDtDaGFuZ2VkJmx0Oy90ZCZndDsnICsKLSAgICAnICAgICAgICAm
bHQ7dGQmZ3Q7MTU6NDA6MzQmbHQ7L3RkJmd0OycgKwotICAgICcgICAgICAmbHQ7L3RyJmd0Oycg
KwotICAgICcgICAgICAmbHQ7L3RhYmxlJmd0OycgKwotICAgICcgICAgPC9zdW1tYXJ5PicgKwot
ICAgICcgIDwvZW50cnk+JyArCi0gICAgJzwvZmVlZD4nCi0KLXRlc3QoInF1aWNrU2VhcmNoIiwg
MywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9y
KCk7Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBm
dW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNo
KHVybCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgdmFyIHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTsKLSAgICAgICAgICAgIHZh
ciByZXNwb25zZURPTSA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoa0V4YW1wbGVSZXNwb25zZVhN
TCwgImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00p
OwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24o
KSB7Ci0gICAgICAgIGJ1Z3ppbGxhLnF1aWNrU2VhcmNoKCdnYXJkZW4tby1tYXRpYycsIGZ1bmN0
aW9uKGJ1Z3MpIHsKLSAgICAgICAgICAgIGRlZXBFcXVhbChidWdzLCBbewotICAgICAgICAgICAg
ICAgICJ0aXRsZSI6ICJbQnVnIDY1NjU0XSBBZGQgbWlzc2luZyBsaWNlbnNlIGJsb2NrcyB0byBn
YXJkZW4tby1tYXRpYyIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTQiLAotICAgICAgICAgICAgICAgICJzdGF0dXMi
OiAiTkVXIgotICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJbQnVn
IDY1NjUzXSBnYXJkZW4tby1tYXRpYyBuZWVkcyBhIHdheSB0byBtb2NrIG91dCB0aGUgbmV0d29y
ayIsCi0gICAgICAgICAgICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjU2NTMiLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiTkVXIgotICAg
ICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJ0aXRsZSI6ICJbQnVnIDY1NjUwXSBVc2Ug
ZmFpbHVyZUluZm8gbW9yZSBwZXJ2YXNpdmVseSBpbiBnYXJkZW4tby1tYXRpYyIsCi0gICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU2NTAiLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiTkVXIgotICAgICAgICAgICAgfV0p
OwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRlZXBFcXVhbChyZXF1ZXN0ZWRVUkxzLCBb
Ci0gICAgICAgICJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9idWdsaXN0LmNnaT9jdHlwZT1yc3Mm
b3JkZXI9YnVncy5idWdfaWQrZGVzYyZxdWlja3NlYXJjaD1nYXJkZW4tby1tYXRpYyIsCi0gICAg
XSk7Ci19KTsKLQotdGVzdCgiaXNPcGVuU3RhdHVzIiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAgb2so
YnVnemlsbGEuaXNPcGVuU3RhdHVzKCdVTkNPTkZJUk1FRCcpKTsKLSAgICBvayhidWd6aWxsYS5p
c09wZW5TdGF0dXMoJ05FVycpKTsKLSAgICBvayhidWd6aWxsYS5pc09wZW5TdGF0dXMoJ0FTU0lH
TkVEJykpOwotICAgIG9rKGJ1Z3ppbGxhLmlzT3BlblN0YXR1cygnUkVPUEVORUQnKSk7Ci0gICAg
b2soIWJ1Z3ppbGxhLmlzT3BlblN0YXR1cygnRklYRUQnKSk7Ci0gICAgb2soIWJ1Z3ppbGxhLmlz
T3BlblN0YXR1cygnVkVSSUZJRUQnKSk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL2J1aWxkZXJzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL2J1aWxkZXJzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9idWlsZGVycy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLXZhciBidWlsZGVycyA9IGJ1aWxkZXJzIHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7
Ci0KLXZhciBrVXBkYXRlU3RlcE5hbWUgPSAndXBkYXRlJzsKLXZhciBrVXBkYXRlU2NyaXB0c1N0
ZXBOYW1lID0gJ3VwZGF0ZV9zY3JpcHRzJzsKLXZhciBrQ29tcGlsZVN0ZXBOYW1lID0gJ2NvbXBp
bGUnOwotdmFyIGtXZWJLaXRUZXN0c1N0ZXBOYW1lcyA9IFsnd2Via2l0X3Rlc3RzJywgJ2xheW91
dC10ZXN0J107Ci0KLXZhciBrQ3Jhc2hlZE9ySHVuZ091dHB1dE1hcmtlciA9ICdjcmFzaGVkIG9y
IGh1bmcnOwotCi1mdW5jdGlvbiBidWlsZEJvdFVSTChwbGF0Zm9ybSkKLXsKLSAgICByZXR1cm4g
Y29uZmlnLmtQbGF0Zm9ybXNbcGxhdGZvcm1dLmJ1aWxkQ29uc29sZVVSTDsKLX0KLQotZnVuY3Rp
b24gdXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVy
biBidWlsZEJvdFVSTChwbGF0Zm9ybSkgKyAnL2pzb24vYnVpbGRlcnMvJyArIGVuY29kZVVSSUNv
bXBvbmVudChidWlsZGVyTmFtZSkgKyAnLyc7Ci19Ci0KLWZ1bmN0aW9uIHVybEZvckJ1aWxkSW5m
byhwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyKQotewotICAgIHJldHVybiBidWls
ZEJvdFVSTChwbGF0Zm9ybSkgKyAnL2pzb24vYnVpbGRlcnMvJyArIGVuY29kZVVSSUNvbXBvbmVu
dChidWlsZGVyTmFtZSkgKyAnL2J1aWxkcy8nICsgZW5jb2RlVVJJQ29tcG9uZW50KGJ1aWxkTnVt
YmVyKTsKLX0KLQotZnVuY3Rpb24gZGlkRmFpbChzdGVwKQotewotICAgIGlmIChrV2ViS2l0VGVz
dHNTdGVwTmFtZXMuaW5kZXhPZihzdGVwLm5hbWUpICE9IC0xKSB7Ci0gICAgICAgIC8vIHJ1bi13
ZWJraXQtdGVzdHMgZmFpbHMgdG8gZ2VuZXJhdGUgdGVzdCBjb3ZlcmFnZSB3aGVuIGl0IGNyYXNo
ZXMgb3IgaGFuZ3MuCi0gICAgICAgIC8vIEZJWE1FOiBEbyBidWlsZC53ZWJraXQub3JnIGJvdHMg
b3V0cHV0IHRoaXMgbWFya2VyIHdoZW4gdGhlIHRlc3RzIGZhaWwgdG8gcnVuPwotICAgICAgICBy
ZXR1cm4gc3RlcC50ZXh0LmluZGV4T2Yoa0NyYXNoZWRPckh1bmdPdXRwdXRNYXJrZXIpICE9IC0x
OwotICAgIH0KLSAgICAvLyBUaGUgZmlyc3QgaXRlbSBpbiBzdGVwLnJlc3VsdHMgaXMgdGhlIHN1
Y2Nlc3Mgb2YgdGhlIHN0ZXA6Ci0gICAgLy8gMCA9PSBwYXNzLCAxID09IHdhcm5pbmcsIDIgPT0g
ZmFpbAotICAgIHJldHVybiBzdGVwLnJlc3VsdHNbMF0gPT0gMjsKLX0KLQotZnVuY3Rpb24gZmFp
bGluZ1N0ZXBzKGJ1aWxkSW5mbykKLXsKLSAgICByZXR1cm4gYnVpbGRJbmZvLnN0ZXBzLmZpbHRl
cihkaWRGYWlsKTsKLX0KLQotZnVuY3Rpb24gbW9zdFJlY2VudENvbXBsZXRlZEJ1aWxkTnVtYmVy
KGluZGl2aWR1YWxCdWlsZGVyU3RhdHVzKQotewotICAgIGlmICghaW5kaXZpZHVhbEJ1aWxkZXJT
dGF0dXMpCi0gICAgICAgIHJldHVybiBudWxsOwotCi0gICAgZm9yICh2YXIgaSA9IGluZGl2aWR1
YWxCdWlsZGVyU3RhdHVzLmNhY2hlZEJ1aWxkcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewot
ICAgICAgICB2YXIgYnVpbGROdW1iZXIgPSBpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jYWNoZWRC
dWlsZHNbaV07Ci0gICAgICAgIGlmIChpbmRpdmlkdWFsQnVpbGRlclN0YXR1cy5jdXJyZW50QnVp
bGRzLmluZGV4T2YoYnVpbGROdW1iZXIpID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
TnVtYmVyOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotfQotCi12YXIgZ19idWlsZEluZm9D
YWNoZSA9IG5ldyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uKGtleSwgY2FsbGJhY2sp
IHsKLSAgICB2YXIgZXhwbG9kZWRLZXkgPSBrZXkuc3BsaXQoJ1xuJyk7Ci0gICAgbmV0LmdldCh1
cmxGb3JCdWlsZEluZm8oZXhwbG9kZWRLZXlbMF0sIGV4cGxvZGVkS2V5WzFdLCBleHBsb2RlZEtl
eVsyXSksIGNhbGxiYWNrKTsKLX0pOwotCi1idWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlID0g
ZnVuY3Rpb24oKQotewotICAgIGdfYnVpbGRJbmZvQ2FjaGUuY2xlYXIoKTsKLX0KLQotZnVuY3Rp
b24gZmV0Y2hNb3N0UmVjZW50QnVpbGRJbmZvQnlCdWlsZGVyKHBsYXRmb3JtLCBjYWxsYmFjaykK
LXsKLSAgICBuZXQuZ2V0KGJ1aWxkQm90VVJMKHBsYXRmb3JtKSArICcvanNvbi9idWlsZGVycycs
IGZ1bmN0aW9uKGJ1aWxkZXJTdGF0dXMpIHsKLSAgICAgICAgdmFyIGJ1aWxkSW5mb0J5QnVpbGRl
ciA9IHt9OwotICAgICAgICB2YXIgYnVpbGRlck5hbWVzID0gT2JqZWN0LmtleXMoYnVpbGRlclN0
YXR1cyk7Ci0gICAgICAgIHZhciByZXF1ZXN0VHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFj
a2VyKGJ1aWxkZXJOYW1lcy5sZW5ndGgsIGNhbGxiYWNrLCBbYnVpbGRJbmZvQnlCdWlsZGVyXSk7
Ci0gICAgICAgIGJ1aWxkZXJOYW1lcy5mb3JFYWNoKGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7Ci0g
ICAgICAgICAgICBpZiAoIWNvbmZpZy5idWlsZGVyQXBwbGllcyhidWlsZGVyTmFtZSkpIHsKLSAg
ICAgICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1ZXN0Q29tcGxldGUoKTsKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZhciBidWlsZE51
bWJlciA9IG1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE51bWJlcihidWlsZGVyU3RhdHVzW2J1aWxk
ZXJOYW1lXSk7Ci0gICAgICAgICAgICBpZiAoIWJ1aWxkTnVtYmVyKSB7Ci0gICAgICAgICAgICAg
ICAgYnVpbGRJbmZvQnlCdWlsZGVyW2J1aWxkZXJOYW1lXSA9IG51bGw7Ci0gICAgICAgICAgICAg
ICAgcmVxdWVzdFRyYWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBnX2J1aWxkSW5mb0NhY2hlLmdldChw
bGF0Zm9ybSArICdcbicgKyBidWlsZGVyTmFtZSArICdcbicgKyBidWlsZE51bWJlciwgZnVuY3Rp
b24oYnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICAgICAgYnVpbGRJbmZvQnlCdWlsZGVyW2J1aWxk
ZXJOYW1lXSA9IGJ1aWxkSW5mbzsKLSAgICAgICAgICAgICAgICByZXF1ZXN0VHJhY2tlci5yZXF1
ZXN0Q29tcGxldGUoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0K
LQotYnVpbGRlcnMuYnVpbGRlckluZm8gPSBmdW5jdGlvbihwbGF0Zm9ybSwgYnVpbGRlck5hbWUs
IGNhbGxiYWNrKQotewotICAgIHZhciBidWlsZGVySW5mb1VSTCA9IHVybEZvckJ1aWxkZXJJbmZv
KHBsYXRmb3JtLCBidWlsZGVyTmFtZSk7Ci0gICAgbmV0LmdldChidWlsZGVySW5mb1VSTCwgY2Fs
bGJhY2spOwotfTsKLQotYnVpbGRlcnMuY2FjaGVkQnVpbGRJbmZvcyA9IGZ1bmN0aW9uKHBsYXRm
b3JtLCBidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGJ1aWxkZXJJbmZvVVJMID0g
dXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKTsKLSAgICBuZXQuZ2V0KGJ1
aWxkZXJJbmZvVVJMLCBmdW5jdGlvbihidWlsZGVySW5mbykgewotICAgICAgICB2YXIgc2VsZWN0
VVJMID0gdXJsRm9yQnVpbGRlckluZm8ocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKSArICdidWlsZHMn
OwotICAgICAgICB2YXIgc3RhcnQgPSBNYXRoLm1heCgwLCBidWlsZGVySW5mby5jYWNoZWRCdWls
ZHMubGVuZ3RoIC0gY29uZmlnLmtCdWlsZE51bWJlckxpbWl0KTsKLSAgICAgICAgdmFyIHNlbGVj
dFBhcmFtcyA9IHsgc2VsZWN0IDogYnVpbGRlckluZm8uY2FjaGVkQnVpbGRzLnNsaWNlKHN0YXJ0
KSB9OwotICAgICAgICB2YXIgdHJhZGl0aW9uYWxFbmNvZGluZyA9IHRydWU7Ci0gICAgICAgIHNl
bGVjdFVSTCArPSAnPycgKyAkLnBhcmFtKHNlbGVjdFBhcmFtcywgdHJhZGl0aW9uYWxFbmNvZGlu
Zyk7Ci0gICAgICAgIG5ldC5nZXQoc2VsZWN0VVJMLCBjYWxsYmFjayk7Ci0gICAgfSk7Ci19Ci0K
LWJ1aWxkZXJzLnJlY2VudEJ1aWxkSW5mb3MgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBm
ZXRjaE1vc3RSZWNlbnRCdWlsZEluZm9CeUJ1aWxkZXIoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwg
ZnVuY3Rpb24oYnVpbGRJbmZvQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBidWlsZEluZm8gPSB7
fTsKLSAgICAgICAgJC5lYWNoKGJ1aWxkSW5mb0J5QnVpbGRlciwgZnVuY3Rpb24oYnVpbGRlck5h
bWUsIHRoaXNCdWlsZEluZm8pIHsKLSAgICAgICAgICAgIGlmICghYnVpbGRJbmZvKQotICAgICAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgYnVpbGRJbmZvW2J1
aWxkZXJOYW1lXSA9IHRoaXNCdWlsZEluZm87Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFj
ayhidWlsZEluZm8pOwotICAgIH0pOwotfTsKLQotYnVpbGRlcnMuYnVpbGRlcnNGYWlsaW5nTm9u
TGF5b3V0VGVzdHMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBmZXRjaE1vc3RSZWNlbnRC
dWlsZEluZm9CeUJ1aWxkZXIoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgZnVuY3Rpb24oYnVpbGRJ
bmZvQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBmYWlsdXJlTGlzdCA9IHt9OwotICAgICAgICAk
LmVhY2goYnVpbGRJbmZvQnlCdWlsZGVyLCBmdW5jdGlvbihidWlsZGVyTmFtZSwgYnVpbGRJbmZv
KSB7Ci0gICAgICAgICAgICBpZiAoIWJ1aWxkSW5mbykKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB2YXIgZmFpbHVyZXMgPSBmYWlsaW5nU3RlcHMoYnVpbGRJbmZvKTsKLSAg
ICAgICAgICAgIGlmIChmYWlsdXJlcy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgZmFpbHVyZUxp
c3RbYnVpbGRlck5hbWVdID0gZmFpbHVyZXMubWFwKGZ1bmN0aW9uKGZhaWx1cmUpIHsgcmV0dXJu
IGZhaWx1cmUubmFtZTsgfSk7Ci0gICAgICAgIH0pOwotICAgICAgICBjYWxsYmFjayhmYWlsdXJl
TGlzdCk7Ci0gICAgfSk7Ci19OwotCi1idWlsZGVycy5wZXJmQnVpbGRlcnMgPSBmdW5jdGlvbihj
YWxsYmFjaykKLXsKLSAgICBmZXRjaE1vc3RSZWNlbnRCdWlsZEluZm9CeUJ1aWxkZXIoY29uZmln
LmN1cnJlbnRQbGF0Zm9ybSwgZnVuY3Rpb24oYnVpbGRJbmZvQnlCdWlsZGVyKSB7Ci0gICAgICAg
IHZhciBwZXJmVGVzdE1hcCA9IHt9OwotICAgICAgICAkLmVhY2goYnVpbGRJbmZvQnlCdWlsZGVy
LCBmdW5jdGlvbihidWlsZGVyTmFtZSwgYnVpbGRJbmZvKSB7Ci0gICAgICAgICAgICBpZiAoIWJ1
aWxkSW5mbyB8fCBidWlsZGVyTmFtZS5pbmRleE9mKCdQZXJmJykgPT0gLTEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBidWlsZEluZm8uc3RlcHMuZm9yRWFjaChmdW5j
dGlvbihzdGVwKSB7Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IElmIHRoZSBjb21waWxlIGlz
IGJyb2tlbiwgZ3JhYiBhbiBvbGRlciBidWlsZC4KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUg
Y29tcGlsZS91cGRhdGUgaXMgYnJva2VuLCBubyBzdGVwcyB3aWxsIGhhdmUgYSByZXN1bHRzIHVy
bC4KLSAgICAgICAgICAgICAgICBpZiAoIXN0ZXAudXJscy5yZXN1bHRzKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgaWYgKCFwZXJmVGVzdE1hcFtzdGVwLm5h
bWVdKQotICAgICAgICAgICAgICAgICAgICBwZXJmVGVzdE1hcFtzdGVwLm5hbWVdID0gW107Ci0g
ICAgICAgICAgICAgICAgcGVyZlRlc3RNYXBbc3RlcC5uYW1lXS5wdXNoKHsgYnVpbGRlcjogYnVp
bGRlck5hbWUsIHVybDogc3RlcC51cmxzLnJlc3VsdHMgfSk7Ci0gICAgICAgICAgICB9KTsKLSAg
ICAgICAgfSk7Ci0gICAgICAgIGNhbGxiYWNrKHBlcmZUZXN0TWFwKTsKLSAgICB9KTsKLX0KLQot
fSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0cy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9idWlsZGVyc191bml0dGVz
dHMuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxk
ZXJzX3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDExOTcgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoImJ1aWxkZXJzIik7Ci0KLXZhciBrRXhh
bXBsZUJ1aWxkZXJTdGF0dXNKU09OID0gIHsKLSAgICAiV2ViS2l0IExpbnV4IjogewotICAgICAg
ICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzEx
NDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQg
bGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjJdLAotICAgICAg
ICAicGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0g
ICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9LAotICAgICJXZWJLaXQgTWFjMTAuNiI6
IHsKLSAgICAgICAgImJhc2VkaXIiOiAiV2ViS2l0X0xpbnV4IiwKLSAgICAgICAgImNhY2hlZEJ1
aWxkcyI6IFsxMTQ1OSwgMTE0NjAsIDExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJjYXRlZ29yeSI6
ICI2d2Via2l0IGxpbnV4IGxhdGVzdCIsCi0gICAgICAgICJjdXJyZW50QnVpbGRzIjogWzExNDYx
LCAxMTQ2Ml0sCi0gICAgICAgICJwZW5kaW5nQnVpbGRzIjogMCwKLSAgICAgICAgInNsYXZlcyI6
IFsidm0xMjQtbTEiXSwKLSAgICAgICAgInN0YXRlIjogImJ1aWxkaW5nIgotICAgIH0sCi0gICAg
IldlYktpdCBBU0FOIjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAg
ICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAg
ICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRC
dWlsZHMiOiBbMTE0NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWlsZHMiOiAwLAotICAg
ICAgICAic2xhdmVzIjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUiOiAiYnVpbGRpbmci
Ci0gICAgfSwKLX07Ci0KLXZhciBrRXhhbXBsZVdlYktpdERvdE9yZ0J1aWxkZXJTdGF0dXNKU09O
ID0gIHsKLSAgICAiQXBwbGUgTGlvbiBSZWxlYXNlIFdLMiAoVGVzdHMpIjogewotICAgICAgICAi
YmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5
LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGlu
dXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAi
cGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAg
ICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAgICB9LAotICAgICJHVEsgTGludXggNjQtYml0IERl
YnVnIjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAotICAgICAgICAiY2Fj
aGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAgICAgICAgImNhdGVn
b3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJlbnRCdWlsZHMiOiBb
MTE0NjEsIDExNDYyXSwKLSAgICAgICAgInBlbmRpbmdCdWlsZHMiOiAwLAotICAgICAgICAic2xh
dmVzIjogWyJ2bTEyNC1tMSJdLAotICAgICAgICAic3RhdGUiOiAiYnVpbGRpbmciCi0gICAgfSwK
LSAgICAiUXQgTGludXggUmVsZWFzZSI6IHsKLSAgICAgICAgImJhc2VkaXIiOiAiV2ViS2l0X0xp
bnV4IiwKLSAgICAgICAgImNhY2hlZEJ1aWxkcyI6IFsxMTQ1OSwgMTE0NjAsIDExNDYxLCAxMTQ2
Ml0sCi0gICAgICAgICJjYXRlZ29yeSI6ICI2d2Via2l0IGxpbnV4IGxhdGVzdCIsCi0gICAgICAg
ICJjdXJyZW50QnVpbGRzIjogWzExNDYxLCAxMTQ2Ml0sCi0gICAgICAgICJwZW5kaW5nQnVpbGRz
IjogMCwKLSAgICAgICAgInNsYXZlcyI6IFsidm0xMjQtbTEiXSwKLSAgICAgICAgInN0YXRlIjog
ImJ1aWxkaW5nIgotICAgIH0sCi19OwotCi12YXIga0V4YW1wbGVCdWlsZEluZm9KU09OID0gewot
ICAgICJibGFtZSI6IFsiYWJhcnRoQHdlYmtpdC5vcmciXSwKLSAgICAiYnVpbGRlck5hbWUiOiAi
V2ViS2l0IExpbnV4IiwKLSAgICAiY2hhbmdlcyI6IFsiRmlsZXM6XG4gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L21haW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6Mzhc
bkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5cGVzLiAgU2Fk
bHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91
dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWlu
LmpzOlByb3BlcnRpZXM6IFxuXG5cbiIsICJGaWxlczpcbiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2dc
biBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0
LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5n
XG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ct
bXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZl
cnRpY2FsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZ1xuQXQ6IFRo
dSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNv
bW1lbnRzOiBVcGRhdGUgYmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRv
dy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxu
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0
L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4q
IHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRp
Y2FsLWV4cGVjdGVkLnBuZzpQcm9wZXJ0aWVzOiBcblxuXG4iXSwKLSAgICAiY3VycmVudFN0ZXAi
OiBudWxsLAotICAgICJldGEiOiBudWxsLAotICAgICJsb2dzIjogWwotICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBkYXRlX3NjcmlwdHMvbG9ncy9zdGRp
byJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJv
bWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdXBk
YXRlL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21p
dW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzEx
NDYxL3N0ZXBzL2NvbXBpbGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBM
aW51eC9idWlsZHMvMTE0NjEvc3RlcHMvdGVzdF9zaGVsbF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0g
ICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndl
YmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfdW5p
dF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNo
cm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxk
cy8xMTQ2MS9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVz
dWx0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8x
MTQ2MS9zdGVwcy93ZWJraXRfZ3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRp
byIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMv
V2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3RzX2dw
dV9yZXN1bHRzL2xvZ3Mvc3RkaW8iXQotICAgIF0sCi0gICAgIm51bWJlciI6IDExNDYxLAotICAg
ICJwcm9wZXJ0aWVzIjogWwotICAgICAgICBbImJsYW1lbGlzdCIsIFsiYWJhcnRoQHdlYmtpdC5v
cmciXSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiYnJhbmNoIiwgInRydW5rIiwgIkJ1aWxkIl0sCi0g
ICAgICAgIFsiYnVpbGRlcm5hbWUiLCAiV2ViS2l0IExpbnV4IiwgIkJ1aWxkIl0sCi0gICAgICAg
IFsiYnVpbGRudW1iZXIiLCAxMTQ2MSwgIkJ1aWxkIl0sCi0gICAgICAgIFsiZ290X3JldmlzaW9u
IiwgIjk1Mzk1IiwgIlNvdXJjZSJdLAotICAgICAgICBbImdvdF93ZWJraXRfcmV2aXNpb24iLCAi
OTIzNTgiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ3Rlc3RfZmlsdGVyIiwgbnVsbCwgIkZhY3Rv
cnkiXSwKLSAgICAgICAgWyJtYXN0ZXJuYW1lIiwgImNocm9taXVtLndlYmtpdCIsICJtYXN0ZXIu
Y2ZnIl0sCi0gICAgICAgIFsicmV2aXNpb24iLCAiOTIzNTgiLCAiQnVpbGQiXSwKLSAgICAgICAg
WyJzY2hlZHVsZXIiLCAiczZfd2Via2l0X3JlbCIsICJTY2hlZHVsZXIiXSwKLSAgICAgICAgWyJz
bGF2ZW5hbWUiLCAidm0xMjQtbTEiLCAiQnVpbGRTbGF2ZSJdCi0gICAgXSwKLSAgICAicmVhc29u
IjogIiIsCi0gICAgInJlcXVlc3RzIjogW3sKLSAgICAgICAgImJ1aWxkZXJOYW1lIjogIldlYktp
dCBMaW51eCIsCi0gICAgICAgICJidWlsZHMiOiBbMTE0NjFdLAotICAgICAgICAic291cmNlIjog
ewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2hhbmdlcyI6
IFt7Ci0gICAgICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAgICAg
ImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVz
LiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5r
XG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9tYWluLmpzOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
bWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKLSAgICAgICAgICAgICAgICAibnVtYmVyIjog
NDM3MDcsCi0gICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKLSAgICAgICAgICAgICAg
ICAicmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1NyIs
Ci0gICAgICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFu
Z2VzZXQvOTIzNTciLAotICAgICAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTUwODEs
Ci0gICAgICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAgICAgICAg
IH0sIHsKLSAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICAg
ICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJVcGRhdGUg
YmFzZWxpbmVzIGFmdGVyIDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4u
XG5cbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hh
ZG93cy1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQv
c2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJv
bWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1l
eHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9t
aXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBu
ZzoiLAotICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIiwg
IkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQt
Ym94LXNoYWRvd3MtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
LW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLWhvcml6b250YWwtZXhwZWN0ZWQucG5n
IiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3Qt
dmVydGljYWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZyJdLAot
ICAgICAgICAgICAgICAgICJudW1iZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICAgICAicHJvcGVy
dGllcyI6IFtdLAotICAgICAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAg
ICAgICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAgICAgICAgICAgICAgICAicmV2bGluayI6ICJo
dHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1OCIsCi0gICAgICAgICAgICAgICAg
IndoZW4iOiAxMzEyNDQ0MjM4Ljg1NTUzOCwKLSAgICAgICAgICAgICAgICAid2hvIjogImFiYXJ0
aEB3ZWJraXQub3JnIgotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAiaGFzUGF0Y2giOiBm
YWxzZSwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICAgICAgfSwKLSAgICAg
ICAgInN1Ym1pdHRlZEF0IjogMTMxMjQ0NDI5OC45ODk4MTgKLSAgICB9XSwKLSAgICAicmVzdWx0
cyI6IDIsCi0gICAgInNsYXZlIjogInZtMTI0LW0xIiwKLSAgICAic291cmNlU3RhbXAiOiB7Ci0g
ICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAiY2hhbmdlcyI6IFt7Ci0gICAgICAg
ICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0g
ICAgICAgICAgICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5v
IHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlz
IHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCi0gICAgICAgICAg
ICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJd
LAotICAgICAgICAgICAgIm51bWJlciI6IDQzNzA3LAotICAgICAgICAgICAgInByb3BlcnRpZXMi
OiBbXSwKLSAgICAgICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAicmV2aXNp
b24iOiAiOTIzNTciLAotICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzNTciLAotICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1
NTA4MSwKLSAgICAgICAgICAgICJ3aG8iOiAiYWJhcnRoQHdlYmtpdC5vcmciCi0gICAgICAgIH0s
IHsKLSAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5
IjogbnVsbCwKLSAgICAgICAgICAgICJjb21tZW50cyI6ICJVcGRhdGUgYmFzZWxpbmVzIGFmdGVy
IDxodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MD4uXG5cbiogcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5w
bmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9y
ZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4q
IHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmlj
dC12ZXJ0aWNhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3Jl
cGFpbnQvc2hhZG93LW11bHRpcGxlLXZlcnRpY2FsLWV4cGVjdGVkLnBuZzoiLAotICAgICAgICAg
ICAgImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VMb2ciLCAiTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNldC1ib3gtc2hhZG93cy1leHBlY3Rl
ZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhv
cml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1h
Yy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5w
bmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFk
b3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nIl0sCi0gICAgICAgICAgICAibnVtYmVy
IjogNDM3MDgsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAgICAgInJl
cG9zaXRvcnkiOiAiIiwKLSAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIsCi0gICAgICAg
ICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM1OCIs
Ci0gICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQyMzguODU1NTM4LAotICAgICAgICAgICAgIndo
byI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAgICAgfV0sCi0gICAgICAgICJoYXNQYXRjaCI6
IGZhbHNlLAotICAgICAgICAicmV2aXNpb24iOiAiOTIzNTgiCi0gICAgfSwKLSAgICAic3RlcHMi
OiBbewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVjdGF0aW9ucyI6IFsKLSAg
ICAgICAgICAgIFsib3V0cHV0IiwgMjI5NywgMjMwMC42NTcxMDE0MDgzNzg0XQotICAgICAgICBd
LAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVl
LAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxk
LmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1
aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGVfc2NyaXB0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwK
LSAgICAgICAgIm5hbWUiOiAidXBkYXRlX3NjcmlwdHMiLAotICAgICAgICAicmVzdWx0cyI6IFsw
LCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6
IDAsCi0gICAgICAgICJ0ZXh0IjogWyJ1cGRhdGVfc2NyaXB0cyJdLAotICAgICAgICAidGltZXMi
OiBbMTMxMjQ0NDI5OS4xMDI4MzQsIDEzMTI0NDQzMDkuMjcwMzI0XSwKLSAgICAgICAgInVybHMi
OiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlv
bnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDIwNDUzLCAxNzU4MC41MDAyMzg5NjQ1XQot
ICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0
ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUy
MExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGUvbG9ncy9zdGRpbyJdIF0sCi0gICAgICAg
ICJuYW1lIjogInVwZGF0ZSIsCi0gICAgICAgICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAg
InN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogMSwKLSAgICAgICAgInRl
eHQiOiBbInVwZGF0ZSIsICJyOTUzOTUiLCAid2Via2l0IHI5MjM1OCJdLAotICAgICAgICAidGlt
ZXMiOiBbMTMxMjQ0NDMwOS4yNzA3NjMsIDEzMTI0NDQzOTguNDY4MTM5XSwKLSAgICAgICAgInVy
bHMiOiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3Rh
dGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDE3MzE2LCAyNjUyLjQ4NTA0OTk1ODk0
NTZdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlz
U3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
S2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2NvbXBpbGUvbG9ncy9zdGRpbyJdCi0gICAg
ICAgIF0sCi0gICAgICAgICJuYW1lIjogImNvbXBpbGUiLAotICAgICAgICAicmVzdWx0cyI6IFsw
LCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6
IDIsCi0gICAgICAgICJ0ZXh0IjogWyJjb21waWxlIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzEy
NDQ0Mzk4LjQ2ODU1LCAxMzEyNDQ0NDQxLjY4ODM4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAg
IH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0g
ICAgICAgICAgICBbIm91dHB1dCIsIDkxOTgwLCA5MjAwMi4xMjYyODMyNTI1MV0KLSAgICAgICAg
XSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1
ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9i
dWlsZHMvMTE0NjEvc3RlcHMvdGVzdF9zaGVsbF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAg
XSwKLSAgICAgICAgIm5hbWUiOiAidGVzdF9zaGVsbF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVt
YmVyIjogMywKLSAgICAgICAgInRleHQiOiBbInRlc3Rfc2hlbGxfdGVzdHMiLCAiMSBkaXNhYmxl
ZCIsICIyIGZsYWt5Il0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0NDQxLjY4ODc1NiwgMTMx
MjQ0NDQ1MS43NDkwOF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJl
dGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRw
dXQiLCAyMDc3MiwgMjA3NzIuNjM4NTAzNDQzMDg2XQotICAgICAgICBdLAotICAgICAgICAiaXNG
aW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9n
cyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVw
cy93ZWJraXRfdW5pdF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5h
bWUiOiAid2Via2l0X3VuaXRfdGVzdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0g
ICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDQsCi0gICAg
ICAgICJ0ZXh0IjogWyJ3ZWJraXRfdW5pdF90ZXN0cyIsICIxIGRpc2FibGVkIl0sCi0gICAgICAg
ICJ0aW1lcyI6IFsxMzEyNDQ0NDUxLjc0OTU3NCwgMTMxMjQ0NDQ1Mi4zMDYxNDNdLAotICAgICAg
ICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4
cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjQ3NzQwNiwgMjQ5ODkxNS42
MTQ2Mjc1NDk0XQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAg
ICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRfdGVzdHMvbG9ncy9z
dGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogIndlYmtpdF90ZXN0cyIsCi0gICAg
ICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0X3Rlc3RzIl1dLAotICAgICAgICAic3RhdGlzdGlj
cyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA1LAotICAgICAgICAidGV4dCI6IFsid2Vi
a2l0X3Rlc3RzIiwgIjIwMTQgZml4YWJsZSIsICIoMzcwIHNraXBwZWQpIiwgImZhaWxlZCAxIiwg
IjxkaXYgY2xhc3M9XCJCdWlsZFJlc3VsdEluZm9cIj4iLCAiPGEgaHJlZj1cImh0dHBzOi8vcmVz
dWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9ZmFzdC9ib3gtc2hh
ZG93L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbFwiPiIsICI8YWJiciB0aXRsZT1cImZh
c3QvYm94LXNoYWRvdy9ib3gtc2hhZG93LWNsaXBwZWQtc2xpY2VzLmh0bWxcIj5ib3gtc2hhZG93
LWNsaXBwZWQtc2xpY2VzLmh0bWw8L2FiYnI+IiwgIjwvYT4iLCAiPC9kaXY+Il0sCi0gICAgICAg
ICJ0aW1lcyI6IFsxMzEyNDQ0NDUyLjMwNjY5NSwgMTMxMjQ0NDc2OC44ODgyNjZdLAotICAgICAg
ICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4
cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjY2ODg0NSwgMjY3Mjc0Ni4z
NzIzNjMyNTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAg
ICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJz
dGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRl
cnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL2FyY2hpdmVfd2Via2l0X3Rlc3Rz
X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogImFyY2hp
dmVfd2Via2l0X3Rlc3RzX3Jlc3VsdHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0g
ICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDYsCi0gICAg
ICAgICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgcmVzdWx0cyJdLAotICAgICAgICAi
dGltZXMiOiBbMTMxMjQ0NDc2OC44ODg3NDYsIDEzMTI0NDQ3ODEuNDQ0Mzk5XSwKLSAgICAgICAg
InVybHMiOiB7Ci0gICAgICAgICAgICAibGF5b3V0IHRlc3QgcmVzdWx0cyI6ICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvV2ViS2l0X0xpbnV4
XHIvOTUzOTVcck5vbmUiCi0gICAgICAgIH0KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMTA5
NTgsIDIwODEzOC40OTY1MTgyOTkzXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6
IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAg
ICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVt
LndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy93ZWJraXRf
Z3B1X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ3ZWJr
aXRfZ3B1X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfZ3B1X3Rlc3Rz
Il1dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA3
LAotICAgICAgICAidGV4dCI6IFsid2Via2l0X2dwdV90ZXN0cyIsICIxNDggZml4YWJsZSIsICIo
MjQgc2tpcHBlZCkiLCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wi
PiIsICI8YSBocmVmPVwiaHR0cDovL2h0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1s
YXlvdXQtdGVzdHMmYW1wO3Rlc3Q9Y29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1
cnNpb24uaHRtbFwiPiIsICI8YWJiciB0aXRsZT1cImNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQt
bGF5ZXItcmVjdXJzaW9uLmh0bWxcIj50aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYWJicj4i
LCAiPC9hPiIsICI8L2Rpdj4iXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ3ODEuNDQ0OTAz
LCAxMzEyNDQ0OTY2Ljg1NjA3NF0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAg
ICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAg
WyJvdXRwdXQiLCAxNDg4MjUsIDE0NzgyMi4xMDc0Mjc3MDcyXQotICAgICAgICBdLAotICAgICAg
ICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAg
ICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVt
Lm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2
MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAg
ICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3Vs
dHMiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjog
e30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDgsCi0gICAgICAgICJ0ZXh0IjogWyJhcmNoaXZl
ZCB3ZWJraXRfdGVzdHMgZ3B1IHJlc3VsdHMiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ5
NjYuODU2NTc1LCAxMzEyNDQ0OTcwLjQ1ODY1NV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAg
ICAgICAgImxheW91dCB0ZXN0IGdwdSByZXN1bHRzIjogImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5v
cmcvYnVpbGRib3QvbGF5b3V0X3Rlc3RfcmVzdWx0cy9XZWJLaXRfTGludXhfLV9HUFVcci85NTM5
NVxyTm9uZSIKLSAgICAgICAgfQotICAgIH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Vi
a2l0X3Rlc3RzIiwgIndlYmtpdF9ncHVfdGVzdHMiXSwKLSAgICAidGltZXMiOiBbMTMxMjQ0NDI5
OS4xMDIxNiwgMTMxMjQ0NDk3MC40NTkxMzhdCi19OwotCi12YXIga0V4YW1wbGVCdWlsZEluZm9X
aXRoV2ViS2l0VGVzdENyYXNoSlNPTiA9IHsKLSAgICAiYmxhbWUiOiBbImFzdml0a2luZUBjaHJv
bWl1bS5vcmciLCAiZGVyYXRAY2hyb21pdW0ub3JnIiwgIm5pcm5pbWVzaEBjaHJvbWl1bS5vcmci
XSwKLSAgICAiYnVpbGRlck5hbWUiOiAiV2ViS2l0IFdpbiAoZGVwcykoZGJnKSgyKSIsCi0gICAg
ImN1cnJlbnRTdGVwIjogbnVsbCwKLSAgICAiZXRhIjogbnVsbCwKLSAgICAibG9ncyI6IFsKLSAg
ICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Vi
a2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVp
bGRzLzc2NTMvc3RlcHMvc3Zua2lsbC9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktp
dCUyMFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3Vw
ZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIw
JTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdGFza2tpbGwvbG9n
cy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
cC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJn
JTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy91cGRhdGUvbG9ncy9zdGRpbyJdLAotICAgICAg
ICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRi
dWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMv
NzY1My9zdGVwcy9leHRyYWN0X2J1aWxkL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
S2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMv
d2Via2l0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIw
JTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvYXJjaGl2ZV93ZWJr
aXRfdGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMFdp
biUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxkcy83NjUzL3N0ZXBzL3dlYmtpdF9n
cHVfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhk
ZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9hcmNoaXZlX3dlYmtpdF90
ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICBdLAotICAgICJudW1iZXIiOiA3NjUz
LAotICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAgICBbImJsYW1lbGlzdCIsIFsiYXN2aXRraW5l
QGNocm9taXVtLm9yZyIsICJkZXJhdEBjaHJvbWl1bS5vcmciLCAibmlybmltZXNoQGNocm9taXVt
Lm9yZyJdLCAiQnVpbGQiXSwKLSAgICAgICAgWyJicmFuY2giLCAic3JjIiwgIkJ1aWxkIl0sCi0g
ICAgICAgIFsiYnVpbGRlcm5hbWUiLCAiV2ViS2l0IFdpbiAoZGVwcykoZGJnKSgyKSIsICJCdWls
ZGVyIl0sCi0gICAgICAgIFsiYnVpbGRudW1iZXIiLCA3NjUzLCAiQnVpbGQiXSwKLSAgICAgICAg
WyJnb3RfcmV2aXNpb24iLCAiMTA0OTM5IiwgIlNvdXJjZSJdLAotICAgICAgICBbImd0ZXN0X2Zp
bHRlciIsIG51bGwsICJGYWN0b3J5Il0sCi0gICAgICAgIFsibWFzdGVybmFtZSIsICJjaHJvbWl1
bS53ZWJraXQiLCAibWFzdGVyLmNmZyJdLAotICAgICAgICBbInByb2plY3QiLCAiIiwgIkJ1aWxk
Il0sCi0gICAgICAgIFsicmVwb3NpdG9yeSIsICJzdm46Ly9zdm4tbWlycm9yLmdvbG8uY2hyb21p
dW0ub3JnL2Nocm9tZS90cnVuayIsICJCdWlsZCJdLAotICAgICAgICBbInJldmlzaW9uIiwgIjEw
NDkzOSIsICJCdWlsZCJdLAotICAgICAgICBbInNjaGVkdWxlciIsICJzMV9jaHJvbWl1bV9kYmdf
ZGVwIiwgIlNjaGVkdWxlciJdLAotICAgICAgICBbInNsYXZlbmFtZSIsICJ2bTExNC1tMSIsICJC
dWlsZFNsYXZlIl0KLSAgICBdLAotICAgICJyZWFzb24iOiAiZG93bnN0cmVhbSIsCi0gICAgInJl
c3VsdHMiOiAyLAotICAgICJzbGF2ZSI6ICJ2bTExNC1tMSIsCi0gICAgInNvdXJjZVN0YW1wIjog
ewotICAgICAgICAiYnJhbmNoIjogInNyYyIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAgICAg
ICAgICAgICJhdCI6ICJUdWUgMTEgT2N0IDIwMTEgMTI6MTg6NDAiLAotICAgICAgICAgICAgImJy
YW5jaCI6ICJzcmMiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAg
ICJjb21tZW50cyI6ICJEaXNhYmxlIHByZWZzLlByZWZzVGVzdC50ZXN0R2VvbG9jYXRpb25QcmVm
IG9uIHdpblxuXG5UQlI9ZGVubmlzamVmZnJleUBjaHJvbWl1bS5vcmdcbkJVRz05OTg2NVxuVEVT
VD1cblxuUmV2aWV3IFVSTDogaHR0cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzgyMzQwMDci
LAotICAgICAgICAgICAgImZpbGVzIjogW3sKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJv
bWUvdGVzdC9mdW5jdGlvbmFsL1BZQVVUT19URVNUUyIsCi0gICAgICAgICAgICAgICAgInVybCI6
IG51bGwKLSAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgIm51bWJlciI6IDEzOTcsCi0gICAg
ICAgICAgICAicHJvamVjdCI6ICIiLAotICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKLSAg
ICAgICAgICAgICJyZXBvc2l0b3J5IjogInN2bjovL3N2bi1taXJyb3IuZ29sby5jaHJvbWl1bS5v
cmcvY2hyb21lL3RydW5rIiwKLSAgICAgICAgICAgICJyZXYiOiAiMTA0OTM2IiwKLSAgICAgICAg
ICAgICJyZXZpc2lvbiI6ICIxMDQ5MzYiLAotICAgICAgICAgICAgInJldmxpbmsiOiAiaHR0cDov
L3NyYy5jaHJvbWl1bS5vcmcvdmlld3ZjL2Nocm9tZT92aWV3PXJldiZyZXZpc2lvbj0xMDQ5MzYi
LAotICAgICAgICAgICAgIndoZW4iOiAxMzE4MzYwNzIwLAotICAgICAgICAgICAgIndobyI6ICJu
aXJuaW1lc2hAY2hyb21pdW0ub3JnIgotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAiYXQiOiAi
VHVlIDExIE9jdCAyMDExIDEyOjIzOjExIiwKLSAgICAgICAgICAgICJicmFuY2giOiAic3JjIiwK
LSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29tbWVudHMiOiAi
YXVyYTogR2V0IHJpZCBvZiBzb21lIHVubmVlZGVkIHN0dWJzLlxuXG5Nb3N0IG9mIHRoZXNlIGFy
ZSBmb3IgZGlhbG9ncyB0aGF0IGFscmVhZHkgaGFkIFdlYlVJXG5pbXBsZW1lbnRhdGlvbnMuXG5c
bkJVRz05OTcxOFxuVEVTVD1idWlsdCB3aXRoIHVzZV9hdXJhPTFcblxuUmV2aWV3IFVSTDogaHR0
cDovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzgyMTgwMjciLAotICAgICAgICAgICAgImZpbGVz
IjogW3sKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvYnJvd3Nlci91aS9sb2dpbi9s
b2dpbl9wcm9tcHRfdWkuY2MiLAotICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAg
ICAgICB9LCB7Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAiY2hyb21lL2Jyb3dzZXIvdWkvdmll
d3Mvc3R1YnNfYXVyYS5jYyIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAg
ICAgIH0sIHsKLSAgICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvY2hyb21lX2Jyb3dzZXIu
Z3lwaSIsCi0gICAgICAgICAgICAgICAgInVybCI6IG51bGwKLSAgICAgICAgICAgIH0sIHsKLSAg
ICAgICAgICAgICAgICAibmFtZSI6ICJjaHJvbWUvY29tbW9uL3VybF9jb25zdGFudHMuY2MiLAot
ICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAgICAgIm5hbWUiOiAiY2hyb21lL2NvbW1vbi91cmxfY29uc3RhbnRzLmgiLAotICAgICAgICAg
ICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJudW1iZXIi
OiAxMzk4LAotICAgICAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgICAgICJwcm9wZXJ0
aWVzIjogW10sCi0gICAgICAgICAgICAicmVwb3NpdG9yeSI6ICJzdm46Ly9zdm4tbWlycm9yLmdv
bG8uY2hyb21pdW0ub3JnL2Nocm9tZS90cnVuayIsCi0gICAgICAgICAgICAicmV2IjogIjEwNDkz
NyIsCi0gICAgICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM3IiwKLSAgICAgICAgICAgICJyZXZs
aW5rIjogImh0dHA6Ly9zcmMuY2hyb21pdW0ub3JnL3ZpZXd2Yy9jaHJvbWU/dmlldz1yZXYmcmV2
aXNpb249MTA0OTM3IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxODM2MDk5MSwKLSAgICAgICAg
ICAgICJ3aG8iOiAiZGVyYXRAY2hyb21pdW0ub3JnIgotICAgICAgICB9LCB7Ci0gICAgICAgICAg
ICAiYXQiOiAiVHVlIDExIE9jdCAyMDExIDEyOjM0OjEwIiwKLSAgICAgICAgICAgICJicmFuY2gi
OiAic3JjIiwKLSAgICAgICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAiY29t
bWVudHMiOiAiQWRkIFdpbmRvd3MgbWFuaWZlc3QgZm9yIHZpZXdzX2V4YW1wbGVzLlxuXG5UaGlz
IGFsbG93cyB2aWV3c19leGFtcGxlcyB0byB1c2UgdGhlbWVkIGNvbnRyb2xzIGFuZCBmaXhlc1xu
YSBwcm9ibGVtIHdpdGggY29tYm8gYm94IGRyb3AgZG93biBtZW51cyBub3QgYmVpbmcgc2hvd24u
XG5cbk1hbmlmZXN0IGZpbGUgY29waWVkIGZyb20gY2hyb21lL2FwcC9jaHJvbWUuZXhlLm1hbmlm
ZXN0LlxuXG5CVUc9bm9uZVxuVEVTVD1tYW51YWxcblxuUmV2aWV3IFVSTDogaHR0cDovL2NvZGVy
ZXZpZXcuY2hyb21pdW0ub3JnLzgyMjcwMTciLAotICAgICAgICAgICAgImZpbGVzIjogW3sKLSAg
ICAgICAgICAgICAgICAibmFtZSI6ICJ2aWV3cy9leGFtcGxlcy92aWV3c19leGFtcGxlcy5leGUu
bWFuaWZlc3QiLAotICAgICAgICAgICAgICAgICJ1cmwiOiBudWxsCi0gICAgICAgICAgICB9LCB7
Ci0gICAgICAgICAgICAgICAgIm5hbWUiOiAidmlld3Mvdmlld3MuZ3lwIiwKLSAgICAgICAgICAg
ICAgICAidXJsIjogbnVsbAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAibnVtYmVyIjog
MTQwMCwKLSAgICAgICAgICAgICJwcm9qZWN0IjogIiIsCi0gICAgICAgICAgICAicHJvcGVydGll
cyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xv
LmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAgICAgICAgInJldiI6ICIxMDQ5Mzki
LAotICAgICAgICAgICAgInJldmlzaW9uIjogIjEwNDkzOSIsCi0gICAgICAgICAgICAicmV2bGlu
ayI6ICJodHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lP3ZpZXc9cmV2JnJldmlz
aW9uPTEwNDkzOSIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTgzNjE2NTAsCi0gICAgICAgICAg
ICAid2hvIjogImFzdml0a2luZUBjaHJvbWl1bS5vcmciCi0gICAgICAgIH1dLAotICAgICAgICAi
aGFzUGF0Y2giOiBmYWxzZSwKLSAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgInJlcG9z
aXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsi
LAotICAgICAgICAicmV2aXNpb24iOiAiMTA0OTM5IgotICAgIH0sCi0gICAgInN0ZXBzIjogW3sK
LSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAg
ICAgICBbIm91dHB1dCIsIDE0NDQsIDE0NDQuMF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmlu
aXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3Mi
OiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9j
aHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5
JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy9zdm5raWxsL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJzdm5raWxsIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11d
LAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAwLAot
ICAgICAgICAidGV4dCI6IFsic3Zua2lsbCJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NDIx
MC4wNjk3NzAxLCAxMzE4MzY0MjEwLjQ2MzY0OV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9
LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAg
ICAgICAgICAgWyJvdXRwdXQiLCAyOTE2LCAyNzU3LjE1ODA5Njc4MzA4MTldCi0gICAgICAgIF0s
Ci0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUs
Ci0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4
ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdXBkYXRlX3NjcmlwdHMv
bG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogInVwZGF0ZV9zY3JpcHRz
IiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9
LAotICAgICAgICAic3RlcF9udW1iZXIiOiAxLAotICAgICAgICAidGV4dCI6IFsidXBkYXRlX3Nj
cmlwdHMiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjQyMTAuNDY0Mjk5LCAxMzE4MzY0MjM0
Ljc0MTU3NV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBu
dWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCA0
NTQ0LCA0NTQzLjk2ODc0OTk2OTEyOTldCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVk
IjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwot
ICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIl
MjkvYnVpbGRzLzc2NTMvc3RlcHMvdGFza2tpbGwvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0g
ICAgICAgICJuYW1lIjogInRhc2traWxsIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAot
ICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAyLAotICAg
ICAgICAidGV4dCI6IFsidGFza2tpbGwiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjQyMzQu
NzQyMjY1LCAxMzE4MzY0MjQ1Ljg0MjAwNl0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7
Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAg
ICAgICAgWyJvdXRwdXQiLCAxMDE5NzczLCAyMjgyNi4xMDQ1NzI1Njg4MzhdCi0gICAgICAgIF0s
Ci0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUs
Ci0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4
ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvdXBkYXRlL2xvZ3Mvc3Rk
aW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGUiLAotICAgICAgICAicmVz
dWx0cyI6IFswLCBbXV0sCi0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVw
X251bWJlciI6IDMsCi0gICAgICAgICJ0ZXh0IjogWyJ1cGRhdGUiLCAicjEwNDkzOSJdLAotICAg
ICAgICAidGltZXMiOiBbMTMxODM2NDI0NS44NDMwMDgsIDEzMTgzNjYzNzAuOTQ2NzU5XSwKLSAg
ICAgICAgInVybHMiOiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAg
ICJleHBlY3RhdGlvbnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDE5ODI5LCAxOTYyMC40
Mzc1MDAwMDM4NDJdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAg
ICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAg
WyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVp
bGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2
NTMvc3RlcHMvZXh0cmFjdF9idWlsZC9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAg
Im5hbWUiOiAiZXh0cmFjdF9idWlsZCIsCi0gICAgICAgICJyZXN1bHRzIjogWzEsIFtdXSwKLSAg
ICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogNCwKLSAgICAg
ICAgInRleHQiOiBbImV4dHJhY3RfYnVpbGQiLCAid2FybmluZ3MiXSwKLSAgICAgICAgInRpbWVz
IjogWzEzMTgzNjYzNzAuOTQ3NzEsIDEzMTgzNjY0MDQuNTUyNzgzXSwKLSAgICAgICAgInVybHMi
OiB7fQotICAgIH0sIHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlv
bnMiOiBbCi0gICAgICAgICAgICBbIm91dHB1dCIsIDI2ODUsIDEzMjA2MjQuNDgxNzY4Mzc1M10K
LSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAiaXNTdGFy
dGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlvIiwgImh0
dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQl
MjBXaW4lMjAlMjhkZXBzJTI5JTI4ZGJnJTI5JTI4MiUyOS9idWlsZHMvNzY1My9zdGVwcy93ZWJr
aXRfdGVzdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0sCi0gICAgICAgICJuYW1lIjogIndlYmtp
dF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0X3Rlc3RzIl1dLAotICAg
ICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiA1LAotICAgICAg
ICAidGV4dCI6IFsid2Via2l0X3Rlc3RzIiwgIj8/IGZpeGFibGUiLCAiKDAgc2tpcHBlZCkiLCAi
Y3Jhc2hlZCBvciBodW5nIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzE4MzY2NDA0LjU1MzcwMjEs
IDEzMTgzNjY0MDUuMjU2NDgwOV0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAg
ICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAg
WyJvdXRwdXQiLCAzNzM2LCA2MDY3NDcuNTgzMjE4NTQyNjNdCi0gICAgICAgIF0sCi0gICAgICAg
ICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAg
ICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUy
OGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVzdHNfcmVz
dWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiYXJjaGl2ZV93
ZWJraXRfdGVzdHNfcmVzdWx0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsiYXJjaGl2ZV93
ZWJraXRfdGVzdHNfcmVzdWx0cyJdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAg
ICAgInN0ZXBfbnVtYmVyIjogNiwKLSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90
ZXN0cyByZXN1bHRzIiwgImZhaWxlZCJdLAotICAgICAgICAidGltZXMiOiBbMTMxODM2NjQwNS4y
NTczNzMxLCAxMzE4MzY2NDA2LjUwNTgxNV0sCi0gICAgICAgICJ1cmxzIjogewotICAgICAgICAg
ICAgImxheW91dCB0ZXN0IHJlc3VsdHMiOiAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9idWls
ZGJvdC9sYXlvdXRfdGVzdF9yZXN1bHRzL1dlYktpdF9XaW5fX2RlcHNfX2RiZ19fMl9cci8wXHJO
b25lIgotICAgICAgICB9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAg
ImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjc1MSwgMTI0NDM0Ljky
NjYxNDA2MDJdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAg
ICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJz
dGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRl
cnMvV2ViS2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMv
c3RlcHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAg
Im5hbWUiOiAid2Via2l0X2dwdV90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRzIjogWzIsIFsid2Vi
a2l0X2dwdV90ZXN0cyJdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0
ZXBfbnVtYmVyIjogNywKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF9ncHVfdGVzdHMiLCAiPz8g
Zml4YWJsZSIsICIoMCBza2lwcGVkKSIsICJjcmFzaGVkIG9yIGh1bmciXSwKLSAgICAgICAgInRp
bWVzIjogWzEzMTgzNjY0MDYuNTA2NzExLCAxMzE4MzY2NDA3LjE3OTU4NV0sCi0gICAgICAgICJ1
cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0
YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAzNzYwLCAzNTcwOS40MDc4MDA5NTgz
NzVdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlz
U3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
S2l0JTIwV2luJTIwJTI4ZGVwcyUyOSUyOGRiZyUyOSUyODIlMjkvYnVpbGRzLzc2NTMvc3RlcHMv
YXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgICAgIF0s
Ci0gICAgICAgICJuYW1lIjogImFyY2hpdmVfd2Via2l0X3Rlc3RzX2dwdV9yZXN1bHRzIiwKLSAg
ICAgICAgInJlc3VsdHMiOiBbMiwgWyJhcmNoaXZlX3dlYmtpdF90ZXN0c19ncHVfcmVzdWx0cyJd
XSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogOCwK
LSAgICAgICAgInRleHQiOiBbImFyY2hpdmVkIHdlYmtpdF90ZXN0cyBncHUgcmVzdWx0cyIsICJm
YWlsZWQiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTgzNjY0MDcuMTgwNDg5MSwgMTMxODM2NjQw
OC4wNzE1MDFdLAotICAgICAgICAidXJscyI6IHsKLSAgICAgICAgICAgICJsYXlvdXQgdGVzdCBn
cHUgcmVzdWx0cyI6ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90
ZXN0X3Jlc3VsdHMvV2ViS2l0X1dpbl9fZGVwc19fZGJnX18yX18tX0dQVVxyLzBcck5vbmUiCi0g
ICAgICAgIH0KLSAgICB9XSwKLSAgICAidGV4dCI6IFsiZmFpbGVkIiwgIndlYmtpdF90ZXN0cyIs
ICJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1bHRzIiwgIndlYmtpdF9ncHVfdGVzdHMiLCAiYXJj
aGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMiXSwKLSAgICAidGltZXMiOiBbMTMxODM2NDIx
MC4wNjY1MjQsIDEzMTgzNjY0MDguMDczMjExOV0KLX07Ci0KLXZhciBrRXhhbXBsZUJ1aWxkSW5m
b1dpdGhUYXNrS2lsbFdhcm5pbmcgPSB7Ci0gICAgImJsYW1lIjogWyJhc3ZpdGtpbmVAY2hyb21p
dW0ub3JnIiwgImRlcmF0QGNocm9taXVtLm9yZyIsICJuaXJuaW1lc2hAY2hyb21pdW0ub3JnIl0s
Ci0gICAgImJ1aWxkZXJOYW1lIjogIldlYktpdCBXaW4gKGRlcHMpKGRiZykoMikiLAotICAgICJj
dXJyZW50U3RlcCI6IG51bGwsCi0gICAgImV0YSI6IG51bGwsCi0gICAgImxvZ3MiOiBbCi0gICAg
ICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtp
dGJ1aWxkZXJzL1dlYktpdCUyMFdpbiUyMCUyOGRlcHMlMjklMjhkYmclMjklMjgyJTI5L2J1aWxk
cy83NjUzL3N0ZXBzL3N2bmtpbGwvbG9ncy9zdGRpbyJdLAotICAgIF0sCi0gICAgIm51bWJlciI6
IDc2NTMsCi0gICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0IiwgWyJhc3Zp
dGtpbmVAY2hyb21pdW0ub3JnIiwgImRlcmF0QGNocm9taXVtLm9yZyIsICJuaXJuaW1lc2hAY2hy
b21pdW0ub3JnIl0sICJCdWlsZCJdLAotICAgICAgICBbImJyYW5jaCIsICJzcmMiLCAiQnVpbGQi
XSwKLSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJLaXQgV2luIChkZXBzKShkYmcpKDIpIiwg
IkJ1aWxkZXIiXSwKLSAgICAgICAgWyJidWlsZG51bWJlciIsIDc2NTMsICJCdWlsZCJdLAotICAg
ICAgICBbImdvdF9yZXZpc2lvbiIsICIxMDQ5MzkiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ3Rl
c3RfZmlsdGVyIiwgbnVsbCwgIkZhY3RvcnkiXSwKLSAgICAgICAgWyJtYXN0ZXJuYW1lIiwgImNo
cm9taXVtLndlYmtpdCIsICJtYXN0ZXIuY2ZnIl0sCi0gICAgICAgIFsicHJvamVjdCIsICIiLCAi
QnVpbGQiXSwKLSAgICAgICAgWyJyZXBvc2l0b3J5IiwgInN2bjovL3N2bi1taXJyb3IuZ29sby5j
aHJvbWl1bS5vcmcvY2hyb21lL3RydW5rIiwgIkJ1aWxkIl0sCi0gICAgICAgIFsicmV2aXNpb24i
LCAiMTA0OTM5IiwgIkJ1aWxkIl0sCi0gICAgICAgIFsic2NoZWR1bGVyIiwgInMxX2Nocm9taXVt
X2RiZ19kZXAiLCAiU2NoZWR1bGVyIl0sCi0gICAgICAgIFsic2xhdmVuYW1lIiwgInZtMTE0LW0x
IiwgIkJ1aWxkU2xhdmUiXQotICAgIF0sCi0gICAgInJlYXNvbiI6ICJkb3duc3RyZWFtIiwKLSAg
ICAicmVzdWx0cyI6IDIsCi0gICAgInNsYXZlIjogInZtMTE0LW0xIiwKLSAgICAic291cmNlU3Rh
bXAiOiB7Ci0gICAgICAgICJicmFuY2giOiAic3JjIiwKLSAgICAgICAgImNoYW5nZXMiOiBbewot
ICAgICAgICAgICAgImF0IjogIlR1ZSAxMSBPY3QgMjAxMSAxMjoxODo0MCIsCi0gICAgICAgICAg
ICAiYnJhbmNoIjogInNyYyIsCi0gICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAg
ICAgICAgImNvbW1lbnRzIjogIkRpc2FibGUgcHJlZnMuUHJlZnNUZXN0LnRlc3RHZW9sb2NhdGlv
blByZWYgb24gd2luXG5cblRCUj1kZW5uaXNqZWZmcmV5QGNocm9taXVtLm9yZ1xuQlVHPTk5ODY1
XG5URVNUPVxuXG5SZXZpZXcgVVJMOiBodHRwOi8vY29kZXJldmlldy5jaHJvbWl1bS5vcmcvODIz
NDAwNyIsCi0gICAgICAgICAgICAiZmlsZXMiOiBbewotICAgICAgICAgICAgICAgICJuYW1lIjog
ImNocm9tZS90ZXN0L2Z1bmN0aW9uYWwvUFlBVVRPX1RFU1RTIiwKLSAgICAgICAgICAgICAgICAi
dXJsIjogbnVsbAotICAgICAgICAgICAgfV0sCi0gICAgICAgICAgICAibnVtYmVyIjogMTM5NywK
LSAgICAgICAgICAgICJwcm9qZWN0IjogIiIsCi0gICAgICAgICAgICAicHJvcGVydGllcyI6IFtd
LAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9t
aXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAgICAgICAgICAgInJldiI6ICIxMDQ5MzYiLAotICAg
ICAgICAgICAgInJldmlzaW9uIjogIjEwNDkzNiIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJo
dHRwOi8vc3JjLmNocm9taXVtLm9yZy92aWV3dmMvY2hyb21lP3ZpZXc9cmV2JnJldmlzaW9uPTEw
NDkzNiIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTgzNjA3MjAsCi0gICAgICAgICAgICAid2hv
IjogIm5pcm5pbWVzaEBjaHJvbWl1bS5vcmciCi0gICAgICAgIH1dLAotICAgICAgICAiaGFzUGF0
Y2giOiBmYWxzZSwKLSAgICAgICAgInByb2plY3QiOiAiIiwKLSAgICAgICAgInJlcG9zaXRvcnki
OiAic3ZuOi8vc3ZuLW1pcnJvci5nb2xvLmNocm9taXVtLm9yZy9jaHJvbWUvdHJ1bmsiLAotICAg
ICAgICAicmV2aXNpb24iOiAiMTA0OTM5IgotICAgIH0sCi0gICAgInN0ZXBzIjogW3sKLSAgICAg
ICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbWyJvdXRwdXQiLDE3NzYs
MTUzNC4wNjI1MDE0MjY3ODYyXV0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAg
ICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogW1sic3RkaW8iLCJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvWFAlMjBQZXJmL2J1
aWxkcy8xMDI2OC9zdGVwcy90YXNra2lsbC9sb2dzL3N0ZGlvIl1dLAotICAgICAgICAibmFtZSI6
ICJ0YXNra2lsbCIsCi0gICAgICAgICJyZXN1bHRzIjogWzEsW11dLAotICAgICAgICAic3RhdGlz
dGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAyLAotICAgICAgICAidGV4dCI6IFsi
dGFza2tpbGwiLCJ3YXJuaW5nIl0sCi0gICAgICAgICJ0aW1lcyI6IFsxMzM5NDM4MjE0LjE3NzM2
MiwxMzM5NDM4MjIyLjU1NTU3Ml0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9XSwKLSAgICAi
dGV4dCI6IFsiZmFpbGVkIiwgIndlYmtpdF90ZXN0cyIsICJhcmNoaXZlX3dlYmtpdF90ZXN0c19y
ZXN1bHRzIiwgIndlYmtpdF9ncHVfdGVzdHMiLCAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jl
c3VsdHMiXSwKLSAgICAidGltZXMiOiBbMTMxODM2NDIxMC4wNjY1MjQsIDEzMTgzNjY0MDguMDcz
MjExOV0KLX07Ci0KLQotdmFyIGtFeGFtcGxlUGVyZkJ1aWxkZXJTdGF0dXNKU09OID0gIHsKLSAg
ICAiV2ViS2l0IExpbnV4IjogewotICAgICAgICAiYmFzZWRpciI6ICJXZWJLaXRfTGludXgiLAot
ICAgICAgICAiY2FjaGVkQnVpbGRzIjogWzExNDU5LCAxMTQ2MCwgMTE0NjEsIDExNDYyXSwKLSAg
ICAgICAgImNhdGVnb3J5IjogIjZ3ZWJraXQgbGludXggbGF0ZXN0IiwKLSAgICAgICAgImN1cnJl
bnRCdWlsZHMiOiBbMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxkcyI6IDAsCi0gICAgICAg
ICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6ICJidWlsZGluZyIKLSAg
ICB9LAotICAgICJNYWMxMC42IFBlcmYiOiB7Ci0gICAgICAgICJiYXNlZGlyIjogIk1hYzEwXzZf
UGVyZiIsCi0gICAgICAgICJjYWNoZWRCdWlsZHMiOiBbMTE0NTksIDExNDYwLCAxMTQ2MSwgMTE0
NjJdLAotICAgICAgICAiY2F0ZWdvcnkiOiAiNndlYmtpdCBsaW51eCBsYXRlc3QiLAotICAgICAg
ICAiY3VycmVudEJ1aWxkcyI6IFsxMTQ2MSwgMTE0NjJdLAotICAgICAgICAicGVuZGluZ0J1aWxk
cyI6IDAsCi0gICAgICAgICJzbGF2ZXMiOiBbInZtMTI0LW0xIl0sCi0gICAgICAgICJzdGF0ZSI6
ICJidWlsZGluZyIKLSAgICB9LAotfTsKLQotdmFyIGtFeGFtcGxlUGVyZkJ1aWxkSW5mb0pTT04g
PSB7Ci0gICAgImJsYW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAotICAgICJidWlsZGVyTmFt
ZSI6ICJNYWMxMC42IFBlcmYiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1
MDozOFxuQ2hhbmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMu
ICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtc
bmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L21haW4uanM6UHJvcGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5n
ZUxvZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cv
aW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3Rl
ZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3No
YWRvdy1tdWx0aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtdmVydGljYWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
bWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5B
dDogVGh1IDA0IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9y
Z1xuQ29tbWVudHM6IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gt
c2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5w
bmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxl
LXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
dmVydGljYWwtZXhwZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAotICAgICJjdXJyZW50
U3RlcCI6IG51bGwsCi0gICAgImV0YSI6IG51bGwsCi0gICAgImxvZ3MiOiBbCi0gICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy91cGRhdGVfc2NyaXB0cy9sb2dz
L3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVw
cy91cGRhdGUvbG9ncy9zdGRpbyJdLAotICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWls
ZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsic3RkaW8iLCAi
aHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dlYktp
dCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3RkaW8i
XSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtp
dF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgv
YnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtpdF90ZXN0cy9sb2dzL3N0ZGlvIl0sCi0gICAgICAgIFsi
c3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxk
ZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90ZXN0
c19yZXN1bHRzL2xvZ3Mvc3RkaW8iXSwKLSAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVp
bGRzLzExNDYxL3N0ZXBzL3dlYmtpdF9ncHVfdGVzdHMvbG9ncy9zdGRpbyJdLAotICAgICAgICBb
InN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWls
ZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2ZV93ZWJraXRfdGVz
dHNfZ3B1X3Jlc3VsdHMvbG9ncy9zdGRpbyJdCi0gICAgXSwKLSAgICAibnVtYmVyIjogMTE0NjEs
Ci0gICAgInByb3BlcnRpZXMiOiBbCi0gICAgICAgIFsiYmxhbWVsaXN0IiwgWyJhYmFydGhAd2Vi
a2l0Lm9yZyJdLCAiQnVpbGQiXSwKLSAgICAgICAgWyJicmFuY2giLCAidHJ1bmsiLCAiQnVpbGQi
XSwKLSAgICAgICAgWyJidWlsZGVybmFtZSIsICJXZWJLaXQgTGludXgiLCAiQnVpbGQiXSwKLSAg
ICAgICAgWyJidWlsZG51bWJlciIsIDExNDYxLCAiQnVpbGQiXSwKLSAgICAgICAgWyJnb3RfcmV2
aXNpb24iLCAiOTUzOTUiLCAiU291cmNlIl0sCi0gICAgICAgIFsiZ290X3dlYmtpdF9yZXZpc2lv
biIsICI5MjM1OCIsICJTb3VyY2UiXSwKLSAgICAgICAgWyJndGVzdF9maWx0ZXIiLCBudWxsLCAi
RmFjdG9yeSJdLAotICAgICAgICBbIm1hc3Rlcm5hbWUiLCAiY2hyb21pdW0ud2Via2l0IiwgIm1h
c3Rlci5jZmciXSwKLSAgICAgICAgWyJyZXZpc2lvbiIsICI5MjM1OCIsICJCdWlsZCJdLAotICAg
ICAgICBbInNjaGVkdWxlciIsICJzNl93ZWJraXRfcmVsIiwgIlNjaGVkdWxlciJdLAotICAgICAg
ICBbInNsYXZlbmFtZSIsICJ2bTEyNC1tMSIsICJCdWlsZFNsYXZlIl0KLSAgICBdLAotICAgICJy
ZWFzb24iOiAiIiwKLSAgICAicmVxdWVzdHMiOiBbewotICAgICAgICAiYnVpbGRlck5hbWUiOiAi
V2ViS2l0IExpbnV4IiwKLSAgICAgICAgImJ1aWxkcyI6IFsxMTQ2MV0sCi0gICAgICAgICJzb3Vy
Y2UiOiB7Ci0gICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAgICJjaGFu
Z2VzIjogW3sKLSAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKLSAgICAgICAgICAg
ICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXgg
dHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8g
dGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAotICAgICAgICAgICAgICAgICJudW1i
ZXIiOiA0MzcwNywKLSAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAotICAgICAgICAg
ICAgICAgICJyZXBvc2l0b3J5IjogIiIsCi0gICAgICAgICAgICAgICAgInJldmlzaW9uIjogIjky
MzU3IiwKLSAgICAgICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAgICAgIndoZW4iOiAxMzEyNDQ0MjM4Ljg1
NTA4MSwKLSAgICAgICAgICAgICAgICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAg
ICAgICAgfSwgewotICAgICAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAg
ICAgICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIlVw
ZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJv
eC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3Jt
L2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9u
dGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0v
Y2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0
ZWQucG5nOiIsCi0gICAgICAgICAgICAgICAgImZpbGVzIjogWyJMYXlvdXRUZXN0cy9DaGFuZ2VM
b2ciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9p
bnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3Rl
ZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9z
aGFkb3ctbXVsdGlwbGUtc3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nIiwgIkxheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0
cmljdC12ZXJ0aWNhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5n
Il0sCi0gICAgICAgICAgICAgICAgIm51bWJlciI6IDQzNzA4LAotICAgICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAg
ICAgICAgICAgICAicmV2aXNpb24iOiAiOTIzNTgiLAotICAgICAgICAgICAgICAgICJyZXZsaW5r
IjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzU4IiwKLSAgICAgICAgICAg
ICAgICAid2hlbiI6IDEzMTI0NDQyMzguODU1NTM4LAotICAgICAgICAgICAgICAgICJ3aG8iOiAi
YWJhcnRoQHdlYmtpdC5vcmciCi0gICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICJoYXNQYXRj
aCI6IGZhbHNlLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IgotICAgICAgICB9LAot
ICAgICAgICAic3VibWl0dGVkQXQiOiAxMzEyNDQ0Mjk4Ljk4OTgxOAotICAgIH1dLAotICAgICJy
ZXN1bHRzIjogMiwKLSAgICAic2xhdmUiOiAidm0xMjQtbTEiLAotICAgICJzb3VyY2VTdGFtcCI6
IHsKLSAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICJjaGFuZ2VzIjogW3sKLSAg
ICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAotICAgICAgICAgICAgImNhdGVnb3J5IjogbnVs
bCwKLSAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBo
YXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0
IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAg
ICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdl
TG9nIl0sCi0gICAgICAgICAgICAibnVtYmVyIjogNDM3MDcsCi0gICAgICAgICAgICAicHJvcGVy
dGllcyI6IFtdLAotICAgICAgICAgICAgInJlcG9zaXRvcnkiOiAiIiwKLSAgICAgICAgICAgICJy
ZXZpc2lvbiI6ICI5MjM1NyIsCi0gICAgICAgICAgICAicmV2bGluayI6ICJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjM1NyIsCi0gICAgICAgICAgICAid2hlbiI6IDEzMTI0NDQy
MzguODU1MDgxLAotICAgICAgICAgICAgIndobyI6ICJhYmFydGhAd2Via2l0Lm9yZyIKLSAgICAg
ICAgfSwgewotICAgICAgICAgICAgImJyYW5jaCI6ICJ0cnVuayIsCi0gICAgICAgICAgICAiY2F0
ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgImNvbW1lbnRzIjogIlVwZGF0ZSBiYXNlbGluZXMg
YWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQwPi5cblxuKiBwbGF0
Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4cGVj
dGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVs
dGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9m
YXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
c3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nOiIsCi0gICAg
ICAgICAgICAiZmlsZXMiOiBbIkxheW91dFRlc3RzL0NoYW5nZUxvZyIsICJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0LWJveC1zaGFkb3dzLWV4
cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBh
aW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZyIsICJMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJp
Y3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmciLCAiTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVj
dGVkLnBuZyIsICJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50
L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmciXSwKLSAgICAgICAgICAgICJu
dW1iZXIiOiA0MzcwOCwKLSAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCi0gICAgICAgICAg
ICAicmVwb3NpdG9yeSI6ICIiLAotICAgICAgICAgICAgInJldmlzaW9uIjogIjkyMzU4IiwKLSAg
ICAgICAgICAgICJyZXZsaW5rIjogImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzU4IiwKLSAgICAgICAgICAgICJ3aGVuIjogMTMxMjQ0NDIzOC44NTU1MzgsCi0gICAgICAgICAg
ICAid2hvIjogImFiYXJ0aEB3ZWJraXQub3JnIgotICAgICAgICB9XSwKLSAgICAgICAgImhhc1Bh
dGNoIjogZmFsc2UsCi0gICAgICAgICJyZXZpc2lvbiI6ICI5MjM1OCIKLSAgICB9LAotICAgICJz
dGVwcyI6IFt7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAgICAiZXhwZWN0YXRpb25zIjog
WwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyMjk3LCAyMzAwLjY1NzEwMTQwODM3ODRdCi0gICAg
ICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6
IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGlu
dXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZV9zY3JpcHRzL2xvZ3Mvc3RkaW8iXQotICAgICAg
ICBdLAotICAgICAgICAibmFtZSI6ICJ1cGRhdGVfc2NyaXB0cyIsCi0gICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVt
YmVyIjogMCwKLSAgICAgICAgInRleHQiOiBbInVwZGF0ZV9zY3JpcHRzIl0sCi0gICAgICAgICJ0
aW1lcyI6IFsxMzEyNDQ0Mjk5LjEwMjgzNCwgMTMxMjQ0NDMwOS4yNzAzMjRdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjA0NTMsIDE3NTgwLjUwMDIzODk2
NDVdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlz
U3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIs
ICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2Vi
S2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3VwZGF0ZS9sb2dzL3N0ZGlvIl0KLSAgICAg
ICAgXSwKLSAgICAgICAgIm5hbWUiOiAidXBkYXRlIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMCwg
W11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAgICAgICAic3RlcF9udW1iZXIiOiAx
LAotICAgICAgICAidGV4dCI6IFsidXBkYXRlIiwgInI5NTM5NSIsICJ3ZWJraXQgcjkyMzU4Il0s
Ci0gICAgICAgICJ0aW1lcyI6IFsxMzEyNDQ0MzA5LjI3MDc2MywgMTMxMjQ0NDM5OC40NjgxMzld
LAotICAgICAgICAidXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAg
ICAgICAgImV4cGVjdGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMTczMTYsIDI2
NTIuNDg1MDQ5OTU4OTQ1Nl0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVl
LAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAg
ICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJr
aXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvY29tcGlsZS9sb2dz
L3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAiY29tcGlsZSIsCi0gICAgICAg
ICJyZXN1bHRzIjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAg
InN0ZXBfbnVtYmVyIjogMiwKLSAgICAgICAgInRleHQiOiBbImNvbXBpbGUiXSwKLSAgICAgICAg
InRpbWVzIjogWzEzMTI0NDQzOTguNDY4NTUsIDEzMTI0NDQ0NDEuNjg4MzhdLAotICAgICAgICAi
dXJscyI6IHt9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgOTE5ODAsIDkyMDAyLjEyNjI4MzI1
MjUxXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0gICAgICAgICJp
c1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAgIFsic3RkaW8i
LCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1aWxkZXJzL1dl
YktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy90ZXN0X3NoZWxsX3Rlc3RzL2xvZ3Mvc3Rk
aW8iXQotICAgICAgICBdLAotICAgICAgICAibmFtZSI6ICJ0ZXN0X3NoZWxsX3Rlc3RzIiwKLSAg
ICAgICAgInJlc3VsdHMiOiBbMCwgW11dLAotICAgICAgICAic3RhdGlzdGljcyI6IHt9LAotICAg
ICAgICAic3RlcF9udW1iZXIiOiAzLAotICAgICAgICAidGV4dCI6IFsidGVzdF9zaGVsbF90ZXN0
cyIsICIxIGRpc2FibGVkIiwgIjIgZmxha3kiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0
NDEuNjg4NzU2LCAxMzEyNDQ0NDUxLjc0OTA4XSwKLSAgICAgICAgInVybHMiOiB7fQotICAgIH0s
IHsKLSAgICAgICAgImV0YSI6IG51bGwsCi0gICAgICAgICJleHBlY3RhdGlvbnMiOiBbCi0gICAg
ICAgICAgICBbIm91dHB1dCIsIDIwNzcyLCAyMDc3Mi42Mzg1MDM0NDMwODZdCi0gICAgICAgIF0s
Ci0gICAgICAgICJpc0ZpbmlzaGVkIjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUs
Ci0gICAgICAgICJsb2dzIjogWwotICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVp
bGRzLzExNDYxL3N0ZXBzL3dlYmtpdF91bml0X3Rlc3RzL2xvZ3Mvc3RkaW8iXQotICAgICAgICBd
LAotICAgICAgICAibmFtZSI6ICJ3ZWJraXRfdW5pdF90ZXN0cyIsCi0gICAgICAgICJyZXN1bHRz
IjogWzAsIFtdXSwKLSAgICAgICAgInN0YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVt
YmVyIjogNCwKLSAgICAgICAgInRleHQiOiBbIndlYmtpdF91bml0X3Rlc3RzIiwgIjEgZGlzYWJs
ZWQiXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTEuNzQ5NTc0LCAxMzEyNDQ0NDUyLjMw
NjE0M10sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNDc3
NDA2LCAyNDk4OTE1LjYxNDYyNzU0OTRdCi0gICAgICAgIF0sCi0gICAgICAgICJpc0ZpbmlzaGVk
IjogdHJ1ZSwKLSAgICAgICAgImlzU3RhcnRlZCI6IHRydWUsCi0gICAgICAgICJsb2dzIjogWwot
ICAgICAgICAgICAgWyJzdGRpbyIsICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21p
dW0ud2Via2l0YnVpbGRlcnMvV2ViS2l0JTIwTGludXgvYnVpbGRzLzExNDYxL3N0ZXBzL3dlYmtp
dF90ZXN0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0
X3Rlc3RzIiwKLSAgICAgICAgInJlc3VsdHMiOiBbMiwgWyJ3ZWJraXRfdGVzdHMiXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDUsCi0gICAgICAg
ICJ0ZXh0IjogWyJ3ZWJraXRfdGVzdHMiLCAiMjAxNCBmaXhhYmxlIiwgIigzNzAgc2tpcHBlZCki
LCAiZmFpbGVkIDEiLCAiPGRpdiBjbGFzcz1cIkJ1aWxkUmVzdWx0SW5mb1wiPiIsICI8YSBocmVm
PVwiaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVz
dD1mYXN0L2JveC1zaGFkb3cvYm94LXNoYWRvdy1jbGlwcGVkLXNsaWNlcy5odG1sXCI+IiwgIjxh
YmJyIHRpdGxlPVwiZmFzdC9ib3gtc2hhZG93L2JveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRt
bFwiPmJveC1zaGFkb3ctY2xpcHBlZC1zbGljZXMuaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rp
dj4iXSwKLSAgICAgICAgInRpbWVzIjogWzEzMTI0NDQ0NTIuMzA2Njk1LCAxMzEyNDQ0NzY4Ljg4
ODI2Nl0sCi0gICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxs
LAotICAgICAgICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAyNjY4
ODQ1LCAyNjcyNzQ2LjM3MjM2MzI1NF0KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQi
OiB0cnVlLAotICAgICAgICAiaXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0g
ICAgICAgICAgICBbInN0ZGlvIiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1
bS53ZWJraXRidWlsZGVycy9XZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvYXJjaGl2
ZV93ZWJraXRfdGVzdHNfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAg
Im5hbWUiOiAiZHVtbXlfcGVyZl90ZXN0XzEiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0s
Ci0gICAgICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDYsCi0g
ICAgICAgICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgcmVzdWx0cyJdLAotICAgICAg
ICAidGltZXMiOiBbMTMxMjQ0NDc2OC44ODg3NDYsIDEzMTI0NDQ3ODEuNDQ0Mzk5XSwKLSAgICAg
ICAgInVybHMiOiB7Ci0gICAgICAgICAgICAicmVzdWx0cyI6ICJodHRwOi8vZHVtbXl1cmwxIgot
ICAgICAgICB9Ci0gICAgfSwgewotICAgICAgICAiZXRhIjogbnVsbCwKLSAgICAgICAgImV4cGVj
dGF0aW9ucyI6IFsKLSAgICAgICAgICAgIFsib3V0cHV0IiwgMjEwOTU4LCAyMDgxMzguNDk2NTE4
Mjk5M10KLSAgICAgICAgXSwKLSAgICAgICAgImlzRmluaXNoZWQiOiB0cnVlLAotICAgICAgICAi
aXNTdGFydGVkIjogdHJ1ZSwKLSAgICAgICAgImxvZ3MiOiBbCi0gICAgICAgICAgICBbInN0ZGlv
IiwgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXRidWlsZGVycy9X
ZWJLaXQlMjBMaW51eC9idWlsZHMvMTE0NjEvc3RlcHMvd2Via2l0X2dwdV90ZXN0cy9sb2dzL3N0
ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUiOiAid2Via2l0X2dwdV90ZXN0cyIsCi0g
ICAgICAgICJyZXN1bHRzIjogWzIsIFsid2Via2l0X2dwdV90ZXN0cyJdXSwKLSAgICAgICAgInN0
YXRpc3RpY3MiOiB7fSwKLSAgICAgICAgInN0ZXBfbnVtYmVyIjogNywKLSAgICAgICAgInRleHQi
OiBbIndlYmtpdF9ncHVfdGVzdHMiLCAiMTQ4IGZpeGFibGUiLCAiKDI0IHNraXBwZWQpIiwgImZh
aWxlZCAxIiwgIjxkaXYgY2xhc3M9XCJCdWlsZFJlc3VsdEluZm9cIj4iLCAiPGEgaHJlZj1cImh0
dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9Y29t
cG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFwiPiIsICI8YWJiciB0
aXRsZT1cImNvbXBvc2l0aW5nL3NjYWxpbmcvdGlsZWQtbGF5ZXItcmVjdXJzaW9uLmh0bWxcIj50
aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbDwvYWJicj4iLCAiPC9hPiIsICI8L2Rpdj4iXSwKLSAg
ICAgICAgInRpbWVzIjogWzEzMTI0NDQ3ODEuNDQ0OTAzLCAxMzEyNDQ0OTY2Ljg1NjA3NF0sCi0g
ICAgICAgICJ1cmxzIjoge30KLSAgICB9LCB7Ci0gICAgICAgICJldGEiOiBudWxsLAotICAgICAg
ICAiZXhwZWN0YXRpb25zIjogWwotICAgICAgICAgICAgWyJvdXRwdXQiLCAxNDg4MjUsIDE0Nzgy
Mi4xMDc0Mjc3MDcyXQotICAgICAgICBdLAotICAgICAgICAiaXNGaW5pc2hlZCI6IHRydWUsCi0g
ICAgICAgICJpc1N0YXJ0ZWQiOiB0cnVlLAotICAgICAgICAibG9ncyI6IFsKLSAgICAgICAgICAg
IFsic3RkaW8iLCAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdGJ1
aWxkZXJzL1dlYktpdCUyMExpbnV4L2J1aWxkcy8xMTQ2MS9zdGVwcy9hcmNoaXZlX3dlYmtpdF90
ZXN0c19ncHVfcmVzdWx0cy9sb2dzL3N0ZGlvIl0KLSAgICAgICAgXSwKLSAgICAgICAgIm5hbWUi
OiAiZHVtbXlfcGVyZl90ZXN0XzIiLAotICAgICAgICAicmVzdWx0cyI6IFswLCBbXV0sCi0gICAg
ICAgICJzdGF0aXN0aWNzIjoge30sCi0gICAgICAgICJzdGVwX251bWJlciI6IDgsCi0gICAgICAg
ICJ0ZXh0IjogWyJhcmNoaXZlZCB3ZWJraXRfdGVzdHMgZ3B1IHJlc3VsdHMiXSwKLSAgICAgICAg
InRpbWVzIjogWzEzMTI0NDQ5NjYuODU2NTc1LCAxMzEyNDQ0OTcwLjQ1ODY1NV0sCi0gICAgICAg
ICJ1cmxzIjogewotICAgICAgICAgICAgInJlc3VsdHMiOiAiaHR0cDovL2R1bW15dXJsMiIKLSAg
ICAgICAgfQotICAgIH1dLAotICAgICJ0ZXh0IjogWyJmYWlsZWQiLCAid2Via2l0X3Rlc3RzIiwg
IndlYmtpdF9ncHVfdGVzdHMiXSwKLSAgICAidGltZXMiOiBbMTMxMjQ0NDI5OS4xMDIxNiwgMTMx
MjQ0NDk3MC40NTkxMzhdCi19OwotCi10ZXN0KCJidWlsZGVyc0ZhaWxpbmciLCAzLCBmdW5jdGlv
bigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLSAgICBi
dWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hlKCk7Ci0KLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5m
b0pTT04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvSlNPTikp
OwotICAgIGZhaWxpbmdCdWlsZEluZm9KU09OLm51bWJlciA9IDExNDYwOwotICAgIGZhaWxpbmdC
dWlsZEluZm9KU09OLnN0ZXBzWzJdLnJlc3VsdHNbMF0gPSAxOwotCi0gICAgdmFyIHJlcXVlc3Rl
ZFVSTHMgPSBbXTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykK
LSAgICB7Ci0gICAgICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICBzaW11bGF0
b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgvXC9qc29u
XC9idWlsZGVycyQvLmV4ZWModXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBs
ZUJ1aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQlMjBMaW51
eC8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGtFeGFtcGxlQnVpbGRJbmZv
SlNPTik7Ci0gICAgICAgICAgICBlbHNlIGlmICgvV2ViS2l0JTIwTWFjMTBcLjYvLmV4ZWModXJs
KSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhmYWlsaW5nQnVpbGRJbmZvSlNPTik7Ci0gICAg
ICAgICAgICBlbHNlIGlmICgvV2ViS2l0JTIwQVNBTi8uZXhlYyh1cmwpKQotICAgICAgICAgICAg
ICAgIGNhbGxiYWNrKGZhaWxpbmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAg
IH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRl
cnMuYnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0
KSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAgICAg
ICAgICAgIldlYktpdCBMaW51eCI6IFsKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9ncHVf
dGVzdHMiCi0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICAiV2ViS2l0IE1hYzEw
LjYiOiBbCi0gICAgICAgICAgICAgICAgICAgICJ3ZWJraXRfZ3B1X3Rlc3RzIgotICAgICAgICAg
ICAgICAgIF0KLSAgICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRl
ZXBFcXVhbChyZXF1ZXN0ZWRVUkxzLCBbCi0gICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9y
Zy9wL2Nocm9taXVtLndlYmtpdC9qc29uL2J1aWxkZXJzIiwKLSAgICAgICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMvV2ViS2l0JTIwTGlu
dXgvYnVpbGRzLzExNDYxIiwKLSAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMvV2ViS2l0JTIwTWFjMTAuNi9idWlsZHMvMTE0NjAi
LAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzRmFpbGluZyAoQXBwbGUpIiwgMywgZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0g
ICAgYnVpbGRlcnMuY2xlYXJCdWlsZEluZm9DYWNoZSgpOwotCi0gICAgY29uZmlnLmN1cnJlbnRQ
bGF0Zm9ybSA9ICdhcHBsZSc7Ci0KLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5mb0pTT04gPSBKU09O
LnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlQnVpbGRJbmZvSlNPTikpOwotICAgIGZhaWxp
bmdCdWlsZEluZm9KU09OLm51bWJlciA9IDExNDYwOwotICAgIGZhaWxpbmdCdWlsZEluZm9KU09O
LnN0ZXBzWzJdLnJlc3VsdHNbMF0gPSAxOwotCi0gICAgdmFyIHJlcXVlc3RlZFVSTHMgPSBbXTsK
LSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykKLSAgICB7Ci0gICAg
ICAgIHJlcXVlc3RlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVD
YWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICgvXC9qc29uXC9idWlsZGVycyQv
LmV4ZWModXJsKSkKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhrRXhhbXBsZVdlYktpdERvdE9y
Z0J1aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKC9BcHBsZSUyMExpb24l
MjBSZWxlYXNlJTIwV0syJTIwXChUZXN0c1wpLy5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAg
Y2FsbGJhY2soa0V4YW1wbGVCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH07
Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMu
YnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7
Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAgICAgICAgICAg
ICAgIkFwcGxlIExpb24gUmVsZWFzZSBXSzIgKFRlc3RzKSI6IFsKLSAgICAgICAgICAgICAgICAg
ICAgIndlYmtpdF9ncHVfdGVzdHMiCi0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsK
LSAgICAgICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzIiwKLSAgICAg
ICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9qc29uL2J1aWxkZXJzL0FwcGxlJTIwTGlvbiUy
MFJlbGVhc2UlMjBXSzIlMjAoVGVzdHMpL2J1aWxkcy8xMTQ2MSIKLSAgICBdKTsKLQotICAgIGNv
bmZpZy5jdXJyZW50UGxhdGZvcm0gPSAnY2hyb21pdW0nOwotfSk7Ci0KLQotdGVzdCgiYnVpbGRl
cnNGYWlsaW5nIChydW4td2Via2l0LXRlc3RzIGNyYXNoKSIsIDMsIGZ1bmN0aW9uKCkgewotICAg
IHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJzLmNs
ZWFyQnVpbGRJbmZvQ2FjaGUoKTsKLQotICAgIHZhciBidWlsZGVyU3RhdHVzSlNPTiA9IEpTT04u
cGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZGVyU3RhdHVzSlNPTikpOwotICAgIGRl
bGV0ZSBidWlsZGVyU3RhdHVzSlNPTlsnV2ViS2l0IE1hYzEwLjYnXTsKLSAgICBidWlsZGVyU3Rh
dHVzSlNPTlsnV2ViS2l0IExpbnV4J10uY2FjaGVkQnVpbGRzID0gWzIxNDYwXTsKLSAgICBidWls
ZGVyU3RhdHVzSlNPTlsnV2ViS2l0IExpbnV4J10uY3VycmVudEJ1aWxkcyA9IFtdOwotCi0gICAg
dmFyIGZhaWxpbmdCdWlsZEluZm9KU09OID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShrRXhh
bXBsZUJ1aWxkSW5mb1dpdGhXZWJLaXRUZXN0Q3Jhc2hKU09OKSk7Ci0gICAgZmFpbGluZ0J1aWxk
SW5mb0pTT04ubnVtYmVyID0gMjE0NjA7Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwot
ICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAg
ICAgcmVxdWVzdGVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNh
bGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgaWYgKC9cL2pzb25cL2J1aWxkZXJzJC8u
ZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGJ1aWxkZXJTdGF0dXNKU09OKTsK
LSAgICAgICAgICAgIGVsc2UgaWYgKC9XZWJLaXQlMjBMaW51eC8uZXhlYyh1cmwpKQotICAgICAg
ICAgICAgICAgIGNhbGxiYWNrKGZhaWxpbmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVs
c2UgewotICAgICAgICAgICAgICAgIG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwp
OwotICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0p
OwotICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAg
YnVpbGRlcnMuYnVpbGRlcnNGYWlsaW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5h
bWVMaXN0KSB7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7Ci0gICAg
ICAgICAgICAgICAgIldlYktpdCBMaW51eCI6IFsKLSAgICAgICAgICAgICAgICAgICAgIndlYmtp
dF90ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICJhcmNoaXZlX3dlYmtpdF90ZXN0c19yZXN1
bHRzIiwKLSAgICAgICAgICAgICAgICAgICAgIndlYmtpdF9ncHVfdGVzdHMiLAotICAgICAgICAg
ICAgICAgICAgICAiYXJjaGl2ZV93ZWJraXRfdGVzdHNfZ3B1X3Jlc3VsdHMiCi0gICAgICAgICAg
ICAgICAgXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVl
cEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMiLAotICAgICAgImh0dHA6Ly9idWlsZC5j
aHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycy9XZWJLaXQlMjBMaW51
eC9idWlsZHMvMjE0NjAiLAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzRmFpbGluZyAo
dGFza2tpbGwgd2FybmluZykiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0g
bmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLSAgICBidWlsZGVycy5jbGVhckJ1aWxkSW5mb0NhY2hl
KCk7Ci0KLSAgICB2YXIgYnVpbGRlclN0YXR1c0pTT04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5n
aWZ5KGtFeGFtcGxlQnVpbGRlclN0YXR1c0pTT04pKTsKLSAgICBkZWxldGUgYnVpbGRlclN0YXR1
c0pTT05bJ1dlYktpdCBNYWMxMC42J107Ci0gICAgYnVpbGRlclN0YXR1c0pTT05bJ1dlYktpdCBM
aW51eCddLmNhY2hlZEJ1aWxkcyA9IFsyMTQ2MF07Ci0gICAgYnVpbGRlclN0YXR1c0pTT05bJ1dl
YktpdCBMaW51eCddLmN1cnJlbnRCdWlsZHMgPSBbXTsKLQotICAgIHZhciBmYWlsaW5nQnVpbGRJ
bmZvSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoa0V4YW1wbGVCdWlsZEluZm9XaXRo
VGFza0tpbGxXYXJuaW5nKSk7Ci0gICAgZmFpbGluZ0J1aWxkSW5mb0pTT04ubnVtYmVyID0gMjE0
NjA7Ci0KLSAgICB2YXIgcmVxdWVzdGVkVVJMcyA9IFtdOwotICAgIHNpbXVsYXRvci5nZXQgPSBm
dW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgcmVxdWVzdGVkVVJMcy5wdXNo
KHVybCk7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgaWYgKC9cL2pzb25cL2J1aWxkZXJzJC8uZXhlYyh1cmwpKQotICAgICAgICAg
ICAgICAgIGNhbGxiYWNrKGJ1aWxkZXJTdGF0dXNKU09OKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KC9XZWJLaXQlMjBMaW51eC8uZXhlYyh1cmwpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKGZh
aWxpbmdCdWlsZEluZm9KU09OKTsKLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IG9rKGZhbHNlLCAiVW5leHBlY3RlZCBVUkw6ICIgKyB1cmwpOwotICAgICAgICAgICAgICAgIGNh
bGxiYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11
bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMuYnVpbGRlcnNGYWls
aW5nTm9uTGF5b3V0VGVzdHMoZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0KSB7Ci0gICAgICAgICAg
ICBkZWVwRXF1YWwoYnVpbGRlck5hbWVMaXN0LCB7fSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwot
Ci0gICAgZGVlcEVxdWFsKHJlcXVlc3RlZFVSTHMsIFsKLSAgICAgICJodHRwOi8vYnVpbGQuY2hy
b21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L2pzb24vYnVpbGRlcnMiLAotICAgICAgImh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvanNvbi9idWlsZGVycy9XZWJL
aXQlMjBMaW51eC9idWlsZHMvMjE0NjAiLAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJz
LnBlcmZCdWlsZGVycyIsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcg
TmV0d29ya1NpbXVsYXRvcigpOwotICAgIGJ1aWxkZXJzLmNsZWFyQnVpbGRJbmZvQ2FjaGUoKTsK
LQotICAgIHZhciBidWlsZGVyU3RhdHVzSlNPTiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnko
a0V4YW1wbGVQZXJmQnVpbGRlclN0YXR1c0pTT04pKTsKLSAgICB2YXIgZmFpbGluZ0J1aWxkSW5m
b0pTT04gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGtFeGFtcGxlUGVyZkJ1aWxkSW5mb0pT
T04pKTsKLQotICAgIHZhciByZXF1ZXN0ZWRVUkxzID0gW107Ci0gICAgc2ltdWxhdG9yLmdldCA9
IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAgewotICAgICAgICByZXF1ZXN0ZWRVUkxzLnB1
c2godXJsKTsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBpZiAoL1wvanNvblwvYnVpbGRlcnMkLy5leGVjKHVybCkpCi0gICAgICAg
ICAgICAgICAgY2FsbGJhY2soYnVpbGRlclN0YXR1c0pTT04pOwotICAgICAgICAgICAgZWxzZSBp
ZiAoL01hYzEwLjYlMjBQZXJmLy5leGVjKHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2so
ZmFpbGluZ0J1aWxkSW5mb0pTT04pOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IGNhbGxiYWNrKCk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBzaW11bGF0b3IucnVuVGVz
dChmdW5jdGlvbigpIHsKLSAgICAgICAgYnVpbGRlcnMucGVyZkJ1aWxkZXJzKGZ1bmN0aW9uKGJ1
aWxkZXJOYW1lTGlzdCkgewotICAgICAgICAgICAgZGVlcEVxdWFsKGJ1aWxkZXJOYW1lTGlzdCwg
ewotICAgICAgICAgICAgICAgICJkdW1teV9wZXJmX3Rlc3RfMSI6IFsKLSAgICAgICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkZXIiOiAiTWFjMTAuNiBQZXJm
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovL2R1bW15dXJsMSIKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAg
ImR1bW15X3BlcmZfdGVzdF8yIjogWwotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAiYnVpbGRlciI6ICJNYWMxMC42IFBlcmYiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwyIgotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgXQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0p
OwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dC5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9jaGVja291dC5qcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXQuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSw5NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciBjaGVja291dCA9
IGNoZWNrb3V0IHx8IHt9OwotCi0oZnVuY3Rpb24oKSB7Ci0KLXZhciBrV2ViS2l0VHJ1bmsgPSAn
aHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay8nOwotCi12YXIg
Z19oYXZlU2VlbkNoZWNrb3V0QXZhaWxhYmxlID0gZmFsc2U7Ci0KLWZ1bmN0aW9uIGNhbGxJZkNo
ZWNrb3V0QXZhaWxhYmxlKGNhbGxiYWNrLCBjaGVja291dFVuYXZhaWxhYmxlKQotewotICAgIGlm
IChnX2hhdmVTZWVuQ2hlY2tvdXRBdmFpbGFibGUpIHsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjaGVja291dC5pc0F2YWlsYWJsZShmdW5jdGlvbihp
c0F2YWlsYWJsZSkgewotICAgICAgICBpZiAoaXNBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIGdf
aGF2ZVNlZW5DaGVja291dEF2YWlsYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjYWxsYmFjaygp
OwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjaGVja291dFVu
YXZhaWxhYmxlKQotICAgICAgICAgICAgY2hlY2tvdXRVbmF2YWlsYWJsZSgpOwotICAgIH0pOwot
fQotCi1jaGVja291dC5zdWJ2ZXJzaW9uVVJMRm9yVGVzdCA9IGZ1bmN0aW9uKHRlc3ROYW1lKQot
ewotICAgIHJldHVybiBrV2ViS2l0VHJ1bmsgKyAnTGF5b3V0VGVzdHMvJyArIHRlc3ROYW1lOwot
fTsKLQotY2hlY2tvdXQuaXNBdmFpbGFibGUgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICBu
ZXQuYWpheCh7Ci0gICAgICAgIHVybDogJy9waW5nJywKLSAgICAgICAgc3VjY2VzczogZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBjYWxsYmFjayh0cnVlKTsKLSAgICAgICAgfSwKLSAgICAgICAg
ZXJyb3I6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soZmFsc2UpOwotICAgICAg
ICB9LAotICAgIH0pOwotfTsKLQotY2hlY2tvdXQucmV2ZXJ0ID0gZnVuY3Rpb24ocmV2aXNpb24s
IHJlYXNvbiwgY2FsbGJhY2ssIGNoZWNrb3V0VW5hdmFpbGFibGUpCi17Ci0gICAgY2FsbElmQ2hl
Y2tvdXRBdmFpbGFibGUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIG5ldC5wb3N0KCcvcmV2ZXJ0Pycg
KyAkLnBhcmFtKHsKLSAgICAgICAgICAgICdyZXZpc2lvbic6IHJldmlzaW9uLAotICAgICAgICAg
ICAgJ3JlYXNvbic6IHJlYXNvbgotICAgICAgICB9KSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg
ICBjYWxsYmFjaygpOwotICAgICAgICB9KTsKLSAgICB9LCBjaGVja291dFVuYXZhaWxhYmxlKTsK
LX07Ci0KLWNoZWNrb3V0LnJlYmFzZWxpbmUgPSBmdW5jdGlvbihmYWlsdXJlSW5mb0xpc3QsIGNh
bGxiYWNrLCBwcm9ncmVzc0NhbGxiYWNrLCBjaGVja291dFVuYXZhaWxhYmxlKQotewotICAgIGNh
bGxJZkNoZWNrb3V0QXZhaWxhYmxlKGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGVzdHMgPSB7
fTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmYWlsdXJlSW5mb0xpc3QubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgICAgIHZhciBmYWlsdXJlSW5mbyA9IGZhaWx1cmVJbmZvTGlzdFtpXTsK
LSAgICAgICAgICAgIHRlc3RzW2ZhaWx1cmVJbmZvLnRlc3ROYW1lXSA9IHRlc3RzW2ZhaWx1cmVJ
bmZvLnRlc3ROYW1lXSB8fCB7fTsKLSAgICAgICAgICAgIHRlc3RzW2ZhaWx1cmVJbmZvLnRlc3RO
YW1lXVtmYWlsdXJlSW5mby5idWlsZGVyTmFtZV0gPSAKLSAgICAgICAgICAgICAgICBiYXNlLnVu
aXF1aWZ5QXJyYXkoYmFzZS5mbGF0dGVuQXJyYXkoZmFpbHVyZUluZm8uZmFpbHVyZVR5cGVMaXN0
Lm1hcChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KSkpOwotICAgICAgICB9Ci0g
ICAgICAgIG5ldC5wb3N0KCcvcmViYXNlbGluZWFsbCcsIEpTT04uc3RyaW5naWZ5KHRlc3RzKSwg
ZnVuY3Rpb24oKSB7IGNhbGxiYWNrKCkgfSk7Ci0gICAgfSwgY2hlY2tvdXRVbmF2YWlsYWJsZSk7
Ci19OwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY2hlY2tvdXRfdW5p
dHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NoZWNrb3V0
X3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvY2hlY2tvdXRfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsOTAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoImNoZWNrb3V0Iik7Ci0KLXRl
c3QoInN1YnZlcnNpb25VUkxGb3JUZXN0IiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgZXF1YWxzKGNo
ZWNrb3V0LnN1YnZlcnNpb25VUkxGb3JUZXN0KCJwYXRoL3RvL3Rlc3QuaHRtbCIpLCAiaHR0cHM6
Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9wYXRo
L3RvL3Rlc3QuaHRtbCIpOwotfSk7Ci0KLXRlc3QoInJlYmFzZWxpbmUiLCAzLCBmdW5jdGlvbigp
IHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAgIHZh
ciByZXF1ZXN0cyA9IFtdOwotICAgIHNpbXVsYXRvci5wb3N0ID0gZnVuY3Rpb24odXJsLCBib2R5
LCBjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHJlcXVlc3RzLnB1c2goW3VybCwgYm9keV0pOwot
ICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhjYWxsYmFjayk7Ci0gICAgfTsKLSAg
ICBzaW11bGF0b3IuYWpheCA9IGZ1bmN0aW9uKG9wdGlvbnMpCi0gICAgewotICAgICAgICBpZiAo
b3B0aW9ucy51cmwuaW5kZXhPZignL3BpbmcnKSA9PSAtMSkKLSAgICAgICAgICAgIG9rKGZhbHNl
LCAnUmVjZWl2ZWQgbm9uLXBpbmcgYWpheCByZXF1ZXN0OiAnICsgb3B0aW9ucy51cmwpOwotICAg
ICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhvcHRpb25zLnN1Y2Nlc3MpOwotICAgIH07
Ci0KLSAgICB2YXIga0V4cGVjdGVkVGVzdE5hbWVQcm9ncmVzc1N0YWNrID0gWwotICAgICAgICAn
ZmFzdC90ZXN0Lmh0bWwnLAotICAgICAgICAnYW5vdGhlci90ZXN0LnN2ZycsCi0gICAgICAgICdh
bm90aGVyL3Rlc3Quc3ZnJywgLy8gVGhpcyBpcyB0aGUgZmlyc3Qgb25lLgotICAgIF07Ci0KLSAg
ICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAgY2hlY2tvdXQucmViYXNl
bGluZShbewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogJ1dlYktpdCBMaW51eCcsCi0gICAg
ICAgICAgICAndGVzdE5hbWUnOiAnYW5vdGhlci90ZXN0LnN2ZycsCi0gICAgICAgICAgICAnZmFp
bHVyZVR5cGVMaXN0JzogWydJTUFHRSddLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgICAnYnVp
bGRlck5hbWUnOiAnV2ViS2l0IE1hYzEwLjYnLAotICAgICAgICAgICAgJ3Rlc3ROYW1lJzogJ2Fu
b3RoZXIvdGVzdC5zdmcnLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0Un
LCAnVEVYVCcsICdJTUFHRStURVhUJ10sCi0gICAgICAgIH0sIHsKLSAgICAgICAgICAgICdidWls
ZGVyTmFtZSc6ICdXZWJraXQgV2luNycsCi0gICAgICAgICAgICAndGVzdE5hbWUnOiAnZmFzdC90
ZXN0Lmh0bWwnLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UrVEVYVCdd
LAotICAgICAgICB9XSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBvayh0cnVlKTsKLSAgICAg
ICAgfSwgZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKLSAgICAgICAgICAgIGVxdWFscyhmYWlsdXJl
SW5mby50ZXN0TmFtZSwga0V4cGVjdGVkVGVzdE5hbWVQcm9ncmVzc1N0YWNrLnBvcCgpKTsKLSAg
ICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBvayhmYWxzZSwgJ0NoZWNrb3V0IHNo
b3VsZCBiZSBhdmFpbGFibGUuJyk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVx
dWFsKHJlcXVlc3RzLCBbCi0gICAgICAgIFsiL3JlYmFzZWxpbmVhbGwiLAotICAgICAgICAgSlNP
Ti5zdHJpbmdpZnkoewotICAgICAgICAgICAgICJhbm90aGVyL3Rlc3Quc3ZnIjogewotICAgICAg
ICAgICAgICAgICAiV2ViS2l0IExpbnV4IjogWyJwbmciXSwgCi0gICAgICAgICAgICAgICAgICJX
ZWJLaXQgTWFjMTAuNiI6IFsicG5nIiwidHh0Il19LAotICAgICAgICAgICAgICJmYXN0L3Rlc3Qu
aHRtbCI6IHsKLSAgICAgICAgICAgICAgICAgIldlYmtpdCBXaW43IjogWyJ0eHQiLCJwbmciXQot
ICAgICAgICAgICAgIH19KV0KLSAgICBdKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvY29uZmlnLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
Y3JpcHRzL2NvbmZpZy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvY29uZmlnLmpzCShub25leGlzdGVudCkKQEAgLTEsMTU2ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotdmFyIGNvbmZpZyA9IGNvbmZpZyB8fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi1jb25m
aWcua0J1aWxkTnVtYmVyTGltaXQgPSAyMDsKLQotY29uZmlnLmtQbGF0Zm9ybXMgPSB7Ci0gICAg
J2FwcGxlJyA6IHsKLSAgICAgICAgbGFiZWwgOiAnQXBwbGUnLAotICAgICAgICBidWlsZENvbnNv
bGVVUkw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcnLAotICAgICAgICBsYXlvdXRUZXN0UmVz
dWx0c1VSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzJywKLSAgICAgICAgd2F0
ZXJmYWxsVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3dhdGVyZmFsbCcsCi0gICAgICAg
IGJ1aWxkZXJzOiB7Ci0gICAgICAgICAgICAnQXBwbGUgTGlvbiBSZWxlYXNlIFdLMSAoVGVzdHMp
JyA6IHt2ZXJzaW9uOiAnbGlvbicgfSwKLSAgICAgICAgICAgICdBcHBsZSBMaW9uIERlYnVnIFdL
MSAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnbGlvbicsIGRlYnVnOiB0cnVlfSwKLSAgICAgICAgICAg
ICdBcHBsZSBMaW9uIFJlbGVhc2UgV0syIChUZXN0cyknIDoge3ZlcnNpb246ICdsaW9uJyB9LAot
ICAgICAgICAgICAgJ0FwcGxlIExpb24gRGVidWcgV0syIChUZXN0cyknIDoge3ZlcnNpb246ICds
aW9uJywgZGVidWc6IHRydWV9LAotICAgICAgICAgICAgJ0FwcGxlIE1vdW50YWluTGlvbiBSZWxl
YXNlIFdLMSAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnbW91bnRhaW5saW9uJyB9LAotICAgICAgICAg
ICAgJ0FwcGxlIE1vdW50YWluTGlvbiBEZWJ1ZyBXSzEgKFRlc3RzKScgOiB7dmVyc2lvbjogJ21v
dW50YWlubGlvbicsIGRlYnVnOiB0cnVlfSwKLSAgICAgICAgICAgICdBcHBsZSBNb3VudGFpbkxp
b24gUmVsZWFzZSBXSzIgKFRlc3RzKScgOiB7dmVyc2lvbjogJ21vdW50YWlubGlvbicgfSwKLSAg
ICAgICAgICAgICdBcHBsZSBNb3VudGFpbkxpb24gRGVidWcgV0syIChUZXN0cyknIDoge3ZlcnNp
b246ICdtb3VudGFpbmxpb24nLCBkZWJ1ZzogdHJ1ZX0sCi0gICAgICAgICAgICAvLyAnQXBwbGUg
V2luIFhQIERlYnVnIChUZXN0cyknIDoge3ZlcnNpb246ICd4cCcsZGVidWc6IHRydWV9LAotICAg
ICAgICAgICAgLy8gJ0FwcGxlIFdpbiA3IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJ3dp
bjcnfSwKLSAgICAgICAgfSwKLSAgICAgICAgaGF2ZUJ1aWxkZXJBY2N1bXVsYXRlZFJlc3VsdHMg
OiBmYWxzZSwKLSAgICAgICAgdXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9sZEJ1aWxkczogZmFsc2Us
Ci0gICAgICAgIHVzZUZsYWtpbmVzc0Rhc2hib2FyZDogZmFsc2UsCi0gICAgICAgIHJlc3VsdHNE
aXJlY3RvcnlOYW1lRnJvbUJ1aWxkZXJOYW1lOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAg
ICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChidWlsZGVyTmFtZSk7Ci0gICAgICAg
IH0sCi0gICAgICAgIHJlc3VsdHNEaXJlY3RvcnlGb3JCdWlsZE51bWJlcjogZnVuY3Rpb24oYnVp
bGROdW1iZXIsIHJldmlzaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9u
ZW50KCdyJyArIHJldmlzaW9uICsgJyAoJyArIGJ1aWxkTnVtYmVyICsgJyknKTsKLSAgICAgICAg
fSwKLSAgICAgICAgX2J1aWxkZXJBcHBsaWVzOiBmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAg
ICAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lLmluZGV4T2YoJ0FwcGxlJykgIT09IC0xOwotICAg
ICAgICB9LAotICAgIH0sCi0gICAgJ2d0aycgOiB7Ci0gICAgICAgIGxhYmVsIDogJ0dUSycsCi0g
ICAgICAgIGJ1aWxkQ29uc29sZVVSTDogJ2h0dHBzOi8vYnVpbGQud2Via2l0Lm9yZycsCi0gICAg
ICAgIGxheW91dFRlc3RSZXN1bHRzVVJMOiAnaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3Vs
dHMnLAotICAgICAgICB3YXRlcmZhbGxVUkw6ICdodHRwczovL2J1aWxkLndlYmtpdC5vcmcvd2F0
ZXJmYWxsJywKLSAgICAgICAgYnVpbGRlcnM6IHsKLSAgICAgICAgICAgICdHVEsgTGludXggNjQt
Yml0IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJzY0LWJpdCByZWxlYXNlJ30sCi0gICAg
ICAgICAgICAnR1RLIExpbnV4IDY0LWJpdCBEZWJ1ZyAoVGVzdHMpJyA6IHt2ZXJzaW9uOiAnNjQt
Yml0IGRlYnVnJywgZGVidWc6IHRydWV9LAotICAgICAgICB9LAotICAgICAgICBoYXZlQnVpbGRl
ckFjY3VtdWxhdGVkUmVzdWx0cyA6IGZhbHNlLAotICAgICAgICB1c2VEaXJlY3RvcnlMaXN0aW5n
Rm9yT2xkQnVpbGRzOiBmYWxzZSwKLSAgICAgICAgdXNlRmxha2luZXNzRGFzaGJvYXJkOiBmYWxz
ZSwKLSAgICAgICAgcmVzdWx0c0RpcmVjdG9yeU5hbWVGcm9tQnVpbGRlck5hbWU6IGZ1bmN0aW9u
KGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGJ1
aWxkZXJOYW1lKTsKLSAgICAgICAgfSwKLSAgICAgICAgcmVzdWx0c0RpcmVjdG9yeUZvckJ1aWxk
TnVtYmVyOiBmdW5jdGlvbihidWlsZE51bWJlciwgcmV2aXNpb24pIHsKLSAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVVUklDb21wb25lbnQoJ3InICsgcmV2aXNpb24gKyAnICgnICsgYnVpbGROdW1i
ZXIgKyAnKScpOwotICAgICAgICB9LAotICAgICAgICBfYnVpbGRlckFwcGxpZXM6IGZ1bmN0aW9u
KGJ1aWxkZXJOYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gYnVpbGRlck5hbWUuaW5kZXhPZign
R1RLJykgIT09IC0xOwotICAgICAgICB9LAotICAgIH0sCi0gICAgJ3dwZScgOiB7Ci0gICAgICAg
IGxhYmVsIDogJ1dQRScsCi0gICAgICAgIGJ1aWxkQ29uc29sZVVSTDogJ2h0dHBzOi8vYnVpbGQu
d2Via2l0Lm9yZycsCi0gICAgICAgIGxheW91dFRlc3RSZXN1bHRzVVJMOiAnaHR0cHM6Ly9idWls
ZC53ZWJraXQub3JnL3Jlc3VsdHMnLAotICAgICAgICB3YXRlcmZhbGxVUkw6ICdodHRwczovL2J1
aWxkLndlYmtpdC5vcmcvd2F0ZXJmYWxsJywKLSAgICAgICAgYnVpbGRlcnM6IHsKLSAgICAgICAg
ICAgICdXUEUgTGludXggNjQtYml0IFJlbGVhc2UgKFRlc3RzKScgOiB7dmVyc2lvbjogJzY0LWJp
dCByZWxlYXNlJ30sCi0gICAgICAgIH0sCi0gICAgICAgIGhhdmVCdWlsZGVyQWNjdW11bGF0ZWRS
ZXN1bHRzIDogZmFsc2UsCi0gICAgICAgIHVzZURpcmVjdG9yeUxpc3RpbmdGb3JPbGRCdWlsZHM6
IGZhbHNlLAotICAgICAgICB1c2VGbGFraW5lc3NEYXNoYm9hcmQ6IGZhbHNlLAotICAgICAgICBy
ZXN1bHRzRGlyZWN0b3J5TmFtZUZyb21CdWlsZGVyTmFtZTogZnVuY3Rpb24oYnVpbGRlck5hbWUp
IHsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoYnVpbGRlck5hbWUpOwot
ICAgICAgICB9LAotICAgICAgICByZXN1bHRzRGlyZWN0b3J5Rm9yQnVpbGROdW1iZXI6IGZ1bmN0
aW9uKGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgewotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVS
SUNvbXBvbmVudCgncicgKyByZXZpc2lvbiArICcgKCcgKyBidWlsZE51bWJlciArICcpJyk7Ci0g
ICAgICAgIH0sCi0gICAgICAgIF9idWlsZGVyQXBwbGllczogZnVuY3Rpb24oYnVpbGRlck5hbWUp
IHsKLSAgICAgICAgICAgIHJldHVybiBidWlsZGVyTmFtZS5pbmRleE9mKCdXUEUnKSAhPT0gLTE7
Ci0gICAgICAgIH0sCi0gICAgfSwKLX07Ci0KLWNvbmZpZy5rVHJhY1VSTCA9ICdodHRwczovL3Ry
YWMud2Via2l0Lm9yZyc7Ci1jb25maWcua0J1Z3ppbGxhVVJMID0gJ2h0dHBzOi8vYnVncy53ZWJr
aXQub3JnJzsKLQotY29uZmlnLmtSZXZpc2lvbkF0dHIgPSAnZGF0YS1yZXZpc2lvbic7Ci1jb25m
aWcua1Rlc3ROYW1lQXR0ciA9ICdkYXRhLXRlc3QtbmFtZSc7Ci1jb25maWcua0J1aWxkZXJOYW1l
QXR0ciA9ICdkYXRhLWJ1aWxkZXItbmFtZSc7Ci1jb25maWcua0ZhaWx1cmVDb3VudEF0dHIgPSAn
ZGF0YS1mYWlsdXJlLWNvdW50JzsKLWNvbmZpZy5rRmFpbHVyZVR5cGVzQXR0ciA9ICdkYXRhLWZh
aWx1cmUtdHlwZXMnOwotY29uZmlnLmtJbmZvYmFyVHlwZUF0dHIgPSAnZGF0YS1pbmZvYmFyLXR5
cGUnOwotCi12YXIga1Rlbk1pbnV0ZXNJbk1pbGxpc2Vjb25kcyA9IDEwICogNjAgKiAxMDAwOwot
Y29uZmlnLmtVcGRhdGVGcmVxdWVuY3kgPSBrVGVuTWludXRlc0luTWlsbGlzZWNvbmRzOwotY29u
ZmlnLmtSZWxhdGl2ZVRpbWVVcGRhdGVGcmVxdWVuY3kgPSAxMDAwICogNjA7Ci0KLWNvbmZpZy5r
RXhwZXJpbWVudGFsRmVhdHVyZXMgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgnZW5h
YmxlRXhwZXJpbWVudHM9MScpICE9IC0xOwotCi1jb25maWcuY3VycmVudFBsYXRmb3JtID0gYmFz
ZS5nZXRVUkxQYXJhbWV0ZXIoJ3BsYXRmb3JtJykgfHwgJ2FwcGxlJzsKLQotLy8gRklYTUU6IFdl
IHNob3VsZCBhZGQgYSB3YXkgdG8gcmVzdHJpY3QgdGhlIHJlc3VsdHMgdG8gYSBzdWJzZXQgb2Yg
dGhlIGJ1aWxkZXJzCi0vLyAob3IgbWF5YmUganVzdCBhIHNpbmdsZSBidWlsZGVyKSBpbiB0aGUg
VUkgYXMgd2VsbCBhcyB2aWEgYW4gVVJMIHBhcmFtZXRlci4KLWNvbmZpZy5jdXJyZW50QnVpbGRl
ciA9IGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCdidWlsZGVyJyk7Ci0KLWNvbmZpZy5jdXJyZW50QnVp
bGRlcnMgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgY3VycmVudF9idWlsZGVycyA9IHt9OwotICAg
IGlmIChjb25maWcuY3VycmVudEJ1aWxkZXIpIHsKLSAgICAgICAgY3VycmVudF9idWlsZGVyc1tj
b25maWcuY3VycmVudEJ1aWxkZXJdID0gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQ
bGF0Zm9ybV0uYnVpbGRlcnNbY29uZmlnLmN1cnJlbnRCdWlsZGVyXTsKLSAgICAgICAgcmV0dXJu
IGN1cnJlbnRfYnVpbGRlcnM7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0dXJuIGNvbmZpZy5r
UGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmJ1aWxkZXJzOwotICAgIH0KLX07Ci0K
LWNvbmZpZy5idWlsZGVyQXBwbGllcyA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKSB7Ci0gICAgaWYg
KGNvbmZpZy5jdXJyZW50QnVpbGRlcikKLSAgICAgICAgcmV0dXJuIGJ1aWxkZXJOYW1lID09IGNv
bmZpZy5jdXJyZW50QnVpbGRlcjsKLSAgICByZXR1cm4gY29uZmlnLmtQbGF0Zm9ybXNbY29uZmln
LmN1cnJlbnRQbGF0Zm9ybV0uX2J1aWxkZXJBcHBsaWVzKGJ1aWxkZXJOYW1lKTsKLX07Ci0KLWNv
bmZpZy5zZXRQbGF0Zm9ybSA9IGZ1bmN0aW9uKHBsYXRmb3JtKSB7Ci0gICAgaWYgKCF0aGlzLmtQ
bGF0Zm9ybXNbcGxhdGZvcm1dKSB7Ci0gICAgICAgIHdpbmRvdy5jb25zb2xlLmxvZyhwbGF0Zm9y
bSArICcgaXMgbm90IGEgcmVjb2duaXplZCBwbGF0Zm9ybScpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIGNvbmZpZy5jdXJyZW50UGxhdGZvcm0gPSBwbGF0Zm9ybTsKLX07Ci0KLWNvbmZp
Zy51c2VMb2NhbFJlc3VsdHMgPSBCb29sZWFuKGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCd1c2VMb2Nh
bFJlc3VsdHMnKSkgfHwgZmFsc2U7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy9jb250cm9sbGVycy9yZWJhc2VsaW5lLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanMJKHJldmlzaW9uIDI2OTA0MikK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbnRyb2xsZXJzL3JlYmFzZWxpbmUuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbigpIHsK
LQotJChmdW5jdGlvbigpIHsKLSAgICBtb2RlbC51cGRhdGVSZXN1bHRzQnlCdWlsZGVyKGZ1bmN0
aW9uKCkgewotICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KHsK
LSAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcwot
ICAgICAgICB9KTsKLQotICAgICAgICB2YXIgZmFpbHVyZXNCeVRlc3QgPSByZXN1bHRzLmV4cGVj
dGVkRmFpbHVyZXNCeVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgICAg
IHZhciBjb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNW
aWV3LCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
cmVzdWx0c1ZpZXcpOwotICAgIH0pOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9jb250cm9sbGVycy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9jb250cm9sbGVycy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvY29udHJvbGxlcnMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNDUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi12YXIgY29udHJvbGxlcnMgPSBjb250cm9sbGVycyB8fCB7fTsKLQot
KGZ1bmN0aW9uKCl7Ci0KLXZhciBrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UgPSAnRmFpbGVk
ISBHYXJkZW4tby1tYXRpYyBuZWVkcyBhIGxvY2FsIHNlcnZlciB0byBtb2RpZnkgeW91ciB3b3Jr
aW5nIGNvcHkuIFBsZWFzZSBydW4gIndlYmtpdC1wYXRjaCBnYXJkZW4tby1tYXRpYyIgc3RhcnQg
dGhlIGxvY2FsIHNlcnZlci4nOwotCi0vLyBGSVhNRTogV2hlcmUgc2hvdWxkIHRoaXMgZnVuY3Rp
b24gZ28/Ci1mdW5jdGlvbiByZWJhc2VsaW5lV2l0aFN0YXR1c1VwZGF0ZXMoZmFpbHVyZUluZm9M
aXN0LCByZXN1bHRzQnlUZXN0KQotewotICAgIHZhciBzdGF0dXNWaWV3ID0gbmV3IHVpLlN0YXR1
c0FyZWEoJ1JlYmFzZWxpbmUnKTsKLSAgICB2YXIgaWQgPSBzdGF0dXNWaWV3Lm5ld0lkKCk7Ci0K
LSAgICB2YXIgZmFpbHVyZXNUb1JlYmFzZWxpbmUgPSBbXTsKLSAgICB2YXIgdGVzdE5hbWVzTG9n
Z2VkID0gW107Ci0gICAgZmFpbHVyZUluZm9MaXN0LmZvckVhY2goZnVuY3Rpb24oZmFpbHVyZUlu
Zm8pIHsKLSAgICAgICAgaWYgKGlzQW55UmVmdGVzdChmYWlsdXJlSW5mby50ZXN0TmFtZSwgcmVz
dWx0c0J5VGVzdCkpIHsKLSAgICAgICAgICAgIGlmICh0ZXN0TmFtZXNMb2dnZWQuaW5kZXhPZihm
YWlsdXJlSW5mby50ZXN0TmFtZSkgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBzdGF0dXNWaWV3
LmFkZE1lc3NhZ2UoaWQsIGZhaWx1cmVJbmZvLnRlc3ROYW1lICsgJyBpcyBhIHJlZiB0ZXN0LCBz
a2lwcGluZycpOwotICAgICAgICAgICAgICAgIHRlc3ROYW1lc0xvZ2dlZC5wdXNoKGZhaWx1cmVJ
bmZvLnRlc3ROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGZhaWx1cmVzVG9SZWJhc2VsaW5lLnB1c2goZmFpbHVyZUluZm8pOwotICAgICAgICAgICAg
aWYgKHRlc3ROYW1lc0xvZ2dlZC5pbmRleE9mKGZhaWx1cmVJbmZvLnRlc3ROYW1lKSA9PSAtMSkg
ewotICAgICAgICAgICAgICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgJ1JlYmFzZWxpbmlu
ZyAnICsgZmFpbHVyZUluZm8udGVzdE5hbWUgKyAnLi4uJyk7Ci0gICAgICAgICAgICAgICAgdGVz
dE5hbWVzTG9nZ2VkLnB1c2goZmFpbHVyZUluZm8udGVzdE5hbWUpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgfSk7Ci0gICAgCi0gICAgaWYgKGZhaWx1cmVzVG9SZWJhc2VsaW5lLmxl
bmd0aCkgewotICAgICAgICBjaGVja291dC5yZWJhc2VsaW5lKGZhaWx1cmVzVG9SZWJhc2VsaW5l
LCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHN0YXR1c1ZpZXcuYWRkRmluYWxNZXNzYWdlKGlk
LCAnUmViYXNlbGluZSBkb25lISBQbGVhc2UgbGFuZCB3aXRoICJ3ZWJraXQtcGF0Y2ggbGFuZC1j
b3doYW5kIi4nKTsKLSAgICAgICAgfSwgZnVuY3Rpb24oZmFpbHVyZUluZm8pIHsKLSAgICAgICAg
ICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgZmFpbHVyZUluZm8udGVzdE5hbWUgKyAnIG9u
ICcgKyB1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoZmFpbHVyZUluZm8uYnVpbGRlck5hbWUpKTsK
LSAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFs
TWVzc2FnZShpZCwga0NoZWNrb3V0VW5hdmFpbGFibGVNZXNzYWdlKTsKLSAgICAgICAgfSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgc3RhdHVzVmlldy5hZGRGaW5hbE1lc3NhZ2UoaWQsICdObyBu
b24tcmVmdGVzdHMgbGVmdCB0byByZWJhc2VsaW5lIScpCi0gICAgfQotfQotCi0vLyBGSVhNRTog
VGhpcyBpcyBkdXBsaWNhdGVkIGZyb20gdWkvcmVzdWx0cy5qcyA6KC4KLWZ1bmN0aW9uIGlzQW55
UmVmdGVzdCh0ZXN0TmFtZSwgcmVzdWx0c0J5VGVzdCkKLXsKLSAgICByZXR1cm4gT2JqZWN0Lmtl
eXMocmVzdWx0c0J5VGVzdFt0ZXN0TmFtZV0pLm1hcChmdW5jdGlvbihidWlsZGVyKSB7Ci0gICAg
ICAgIHJldHVybiByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyXTsKLSAgICB9KS5zb21l
KGZ1bmN0aW9uKHJlc3VsdE5vZGUpIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdE5vZGUucmVmdGVz
dF90eXBlICYmIHJlc3VsdE5vZGUucmVmdGVzdF90eXBlLmxlbmd0aDsKLSAgICB9KTsKLX0KLQot
Ly8gRklYTUU6IFdoZXJlIHNob3VsZCB0aGlzIGZ1bmN0aW9uIGdvPwotZnVuY3Rpb24gdXBkYXRl
RXhwZWN0YXRpb25zV2l0aFN0YXR1c1VwZGF0ZXMoZmFpbHVyZUluZm9MaXN0KQotewotICAgIHZh
ciBzdGF0dXNWaWV3ID0gbmV3IHVpLlN0YXR1c0FyZWEoJ0V4cGVjdGF0aW9ucyBVcGRhdGUnKTsK
LSAgICB2YXIgaWQgPSBzdGF0dXNWaWV3Lm5ld0lkKCk7Ci0KLSAgICB2YXIgdGVzdE5hbWVzID0g
YmFzZS51bmlxdWlmeUFycmF5KGZhaWx1cmVJbmZvTGlzdC5tYXAoZnVuY3Rpb24oZmFpbHVyZUlu
Zm8pIHsgcmV0dXJuIGZhaWx1cmVJbmZvLnRlc3ROYW1lOyB9KSk7Ci0gICAgdmFyIHRlc3ROYW1l
ID0gdGVzdE5hbWVzLmxlbmd0aCA9PSAxID8gdGVzdE5hbWVzWzBdIDogdGVzdE5hbWVzLmxlbmd0
aCArICcgdGVzdHMnOwotICAgIHN0YXR1c1ZpZXcuYWRkTWVzc2FnZShpZCwgJ1VwZGF0aW5nIGV4
cGVjdGF0aW9ucyBvZiAnICsgdGVzdE5hbWUgKyAnLi4uJyk7Ci0KLSAgICBjaGVja291dC51cGRh
dGVFeHBlY3RhdGlvbnMoZmFpbHVyZUluZm9MaXN0LCBmdW5jdGlvbigpIHsKLSAgICAgICAgc3Rh
dHVzVmlldy5hZGRGaW5hbE1lc3NhZ2UoaWQsICdFeHBlY3RhdGlvbnMgdXBkYXRlIGRvbmUhIFBs
ZWFzZSBsYW5kIHdpdGggIndlYmtpdC1wYXRjaCBsYW5kLWNvd2hhbmQiLicpOwotICAgIH0sIGZ1
bmN0aW9uKCkgewotICAgICAgICBzdGF0dXNWaWV3LmFkZEZpbmFsTWVzc2FnZShpZCwga0NoZWNr
b3V0VW5hdmFpbGFibGVNZXNzYWdlKTsKLSAgICB9KTsKLX0KLQotY29udHJvbGxlcnMuUmVzdWx0
c0RldGFpbHMgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odmll
dywgcmVzdWx0c0J5VGVzdCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcgPSB2aWV3OwotICAg
ICAgICB0aGlzLl9yZXN1bHRzQnlUZXN0ID0gcmVzdWx0c0J5VGVzdDsKLSAgICAgICAgdGhpcy5f
dmlldy5zZXRSZXN1bHRzQnlUZXN0KHJlc3VsdHNCeVRlc3QpOwotCi0gICAgICAgIHRoaXMuX3Zp
ZXcuZmlyc3RSZXN1bHQoKTsKLQotICAgICAgICAkKHRoaXMuX3ZpZXcpLmJpbmQoJ25leHQnLCB0
aGlzLm9uTmV4dC5iaW5kKHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3KS5iaW5kKCdwcmV2
aW91cycsIHRoaXMub25QcmV2aW91cy5iaW5kKHRoaXMpKTsKLSAgICAgICAgJCh0aGlzLl92aWV3
KS5iaW5kKCdyZWJhc2VsaW5lJywgdGhpcy5vblJlYmFzZWxpbmUuYmluZCh0aGlzKSk7Ci0gICAg
ICAgICQodGhpcy5fdmlldykuYmluZCgnZXhwZWN0ZmFpbHVyZScsIHRoaXMub25VcGRhdGVFeHBl
Y3RhdGlvbnMuYmluZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBvbk5leHQ6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcubmV4dFJlc3VsdCgpOwotICAgIH0sCi0gICAgb25QcmV2
aW91czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdmlldy5wcmV2aW91c1Jlc3Vs
dCgpOwotICAgIH0sCi0gICAgX2ZhaWx1cmVJbmZvTGlzdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgdmFyIHRlc3ROYW1lID0gdGhpcy5fdmlldy5jdXJyZW50VGVzdE5hbWUoKTsKLSAgICAg
ICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3Jlc3VsdHNCeVRlc3RbdGVzdE5hbWVdKS5tYXAo
ZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHRzLmZhaWx1
cmVJbmZvRm9yVGVzdEFuZEJ1aWxkZXIodGhpcy5fcmVzdWx0c0J5VGVzdCwgdGVzdE5hbWUsIGJ1
aWxkZXJOYW1lKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG9uUmViYXNl
bGluZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmViYXNlbGluZVdpdGhTdGF0dXNVcGRh
dGVzKHRoaXMuX2ZhaWx1cmVJbmZvTGlzdCgpLCB0aGlzLl9yZXN1bHRzQnlUZXN0KTsKLSAgICAg
ICAgdGhpcy5fdmlldy5uZXh0VGVzdCgpOwotICAgIH0sCi0gICAgb25VcGRhdGVFeHBlY3RhdGlv
bnM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHVwZGF0ZUV4cGVjdGF0aW9uc1dpdGhTdGF0
dXNVcGRhdGVzKHRoaXMuX2ZhaWx1cmVJbmZvTGlzdCgpKTsKLSAgICB9Ci19KTsKLQotY29udHJv
bGxlcnMuRXhwZWN0ZWRGYWlsdXJlcyA9IGJhc2UuZXh0ZW5kcyhPYmplY3QsIHsKLSAgICBpbml0
OiBmdW5jdGlvbihtb2RlbCwgdmlldywgZGVsZWdhdGUpCi0gICAgewotICAgICAgICB0aGlzLl9t
b2RlbCA9IG1vZGVsOwotICAgICAgICB0aGlzLl92aWV3ID0gdmlldzsKLSAgICAgICAgdGhpcy5f
ZGVsZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVkRmFpbHVy
ZXNCeVRlc3QodGhpcy5fbW9kZWwucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgICAgIHZhciBmYWls
aW5nVGVzdHNMaXN0ID0gT2JqZWN0LmtleXMoZXhwZWN0ZWRGYWlsdXJlcyk7Ci0KLSAgICAgICAg
JCh0aGlzLl92aWV3KS5lbXB0eSgpOwotICAgICAgICBiYXNlLmZvckVhY2hEaXJlY3RvcnkoZmFp
bGluZ1Rlc3RzTGlzdCwgZnVuY3Rpb24obGFiZWwsIHRlc3RzRmFpbGluZ0luRGlyZWN0b3J5KSB7
Ci0gICAgICAgICAgICB2YXIgbGlzdEl0ZW0gPSBuZXcgdWkuZmFpbHVyZXMuTGlzdEl0ZW0obGFi
ZWwsIHRlc3RzRmFpbGluZ0luRGlyZWN0b3J5KTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcuYXBw
ZW5kQ2hpbGQobGlzdEl0ZW0pOwotICAgICAgICAgICAgJChsaXN0SXRlbSkuYmluZCgnZXhhbWlu
ZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRoaXMub25FeGFtaW5lKHRlc3RzRmFp
bGluZ0luRGlyZWN0b3J5KTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0u
YmluZCh0aGlzKSk7Ci0gICAgfSwKLSAgICBvbkV4YW1pbmU6IGZ1bmN0aW9uKGZhaWxpbmdUZXN0
c0xpc3QpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5W
aWV3KHsKLSAgICAgICAgICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRz
VVJMcwotICAgICAgICB9KTsKLSAgICAgICAgdmFyIGZhaWx1cmVzQnlUZXN0ID0gYmFzZS5maWx0
ZXJEaWN0aW9uYXJ5KAotICAgICAgICAgICAgcmVzdWx0cy5leHBlY3RlZEZhaWx1cmVzQnlUZXN0
KHRoaXMuX21vZGVsLnJlc3VsdHNCeUJ1aWxkZXIpLAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5
KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhaWxpbmdUZXN0c0xpc3QuaW5kZXhPZihrZXkp
ICE9IC0xOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIHZhciBjb250cm9sbGVyID0gbmV3IGNv
bnRyb2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3VsdHNWaWV3LCBmYWlsdXJlc0J5VGVzdCk7Ci0g
ICAgICAgIHRoaXMuX2RlbGVnYXRlLnNob3dSZXN1bHRzKHJlc3VsdHNWaWV3KTsKLSAgICB9Ci19
KTsKLQotdmFyIEZhaWx1cmVTdHJlYW1Db250cm9sbGVyID0gYmFzZS5leHRlbmRzKE9iamVjdCwg
ewotICAgIF9yZXN1bHRzRmlsdGVyOiBudWxsLAotICAgIF9rZXlGb3I6IGZ1bmN0aW9uKGZhaWx1
cmVBbmFseXNpcykgeyB0aHJvdyAiTm90IGltcGxlbWVudGVkISI7IH0sCi0gICAgX2NyZWF0ZUZh
aWx1cmVWaWV3OiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpIHsgdGhyb3cgIk5vdCBpbXBsZW1l
bnRlZCEiOyB9LAotCi0gICAgaW5pdDogZnVuY3Rpb24obW9kZWwsIHZpZXcsIGRlbGVnYXRlKQot
ICAgIHsKLSAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDsKLSAgICAgICAgdGhpcy5fdmlldyA9
IHZpZXc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgICAgIHRoaXMu
X3Rlc3RGYWlsdXJlcyA9IG5ldyBiYXNlLlVwZGF0ZVRyYWNrZXIoKTsKLSAgICB9LAotICAgIHVw
ZGF0ZTogZnVuY3Rpb24oZmFpbHVyZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgdmFyIGtleSA9
IHRoaXMuX2tleUZvcihmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICB2YXIgZmFpbHVyZSA9IHRo
aXMuX3Rlc3RGYWlsdXJlcy5nZXQoa2V5KTsKLSAgICAgICAgaWYgKCFmYWlsdXJlKSB7Ci0gICAg
ICAgICAgICBmYWlsdXJlID0gdGhpcy5fY3JlYXRlRmFpbHVyZVZpZXcoZmFpbHVyZUFuYWx5c2lz
KTsKLSAgICAgICAgICAgIHRoaXMuX3ZpZXcuYWRkKGZhaWx1cmUpOwotICAgICAgICAgICAgJChm
YWlsdXJlKS5iaW5kKCdleGFtaW5lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhp
cy5vbkV4YW1pbmUoZmFpbHVyZSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAgICAg
ICAgICAgJChmYWlsdXJlKS5iaW5kKCdyZWJhc2VsaW5lJywgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5vblJlYmFzZWxpbmUoZmFpbHVyZSk7Ci0gICAgICAgICAgICB9LmJpbmQo
dGhpcykpOwotICAgICAgICAgICAgJChmYWlsdXJlKS5iaW5kKCdleHBlY3RmYWlsdXJlJywgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5vblVwZGF0ZUV4cGVjdGF0aW9ucyhmYWls
dXJlKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZmFp
bHVyZS5hZGRGYWlsdXJlQW5hbHlzaXMoZmFpbHVyZUFuYWx5c2lzKTsKLSAgICAgICAgdGhpcy5f
dGVzdEZhaWx1cmVzLnVwZGF0ZShrZXksIGZhaWx1cmUpOwotICAgICAgICByZXR1cm4gZmFpbHVy
ZTsKLSAgICB9LAotICAgIHB1cmdlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fdGVzdEZh
aWx1cmVzLnB1cmdlKGZ1bmN0aW9uKGZhaWx1cmUpIHsKLSAgICAgICAgICAgIGZhaWx1cmUuZGlz
bWlzcygpOwotICAgICAgICB9KTsKLSAgICAgICAgdGhpcy5fdGVzdEZhaWx1cmVzLmZvckVhY2go
ZnVuY3Rpb24oZmFpbHVyZSkgewotICAgICAgICAgICAgZmFpbHVyZS5wdXJnZSgpOwotICAgICAg
ICB9KTsKLSAgICB9LAotICAgIG9uRXhhbWluZTogZnVuY3Rpb24oZmFpbHVyZXMpCi0gICAgewot
ICAgICAgICB2YXIgcmVzdWx0c1ZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KHsKLSAgICAgICAg
ICAgIGZldGNoUmVzdWx0c1VSTHM6IHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcwotICAgICAgICB9
KTsKLQotICAgICAgICB2YXIgdGVzdE5hbWVMaXN0ID0gZmFpbHVyZXMudGVzdE5hbWVMaXN0KCk7
Ci0gICAgICAgIHZhciBmYWlsdXJlc0J5VGVzdCA9IGJhc2UuZmlsdGVyRGljdGlvbmFyeSgKLSAg
ICAgICAgICAgIHRoaXMuX3Jlc3VsdHNGaWx0ZXIodGhpcy5fbW9kZWwucmVzdWx0c0J5QnVpbGRl
ciksCi0gICAgICAgICAgICBmdW5jdGlvbihrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4g
dGVzdE5hbWVMaXN0LmluZGV4T2Yoa2V5KSAhPSAtMTsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgIHZhciBjb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLlJlc3VsdHNEZXRhaWxzKHJlc3Vs
dHNWaWV3LCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlLnNob3dSZXN1
bHRzKHJlc3VsdHNWaWV3KTsKLSAgICB9LAotICAgIF90b0ZhaWx1cmVJbmZvTGlzdDogZnVuY3Rp
b24oZmFpbHVyZXMpCi0gICAgewotICAgICAgICByZXR1cm4gYmFzZS5mbGF0dGVuQXJyYXkoZmFp
bHVyZXMudGVzdE5hbWVMaXN0KCkubWFwKG1vZGVsLnVuZXhwZWN0ZWRGYWlsdXJlSW5mb0ZvclRl
c3ROYW1lKSk7Ci0gICAgfSwKLSAgICBvblJlYmFzZWxpbmU6IGZ1bmN0aW9uKGZhaWx1cmVzKQot
ICAgIHsKLSAgICAgICAgdmFyIHRlc3ROYW1lTGlzdCA9IGZhaWx1cmVzLnRlc3ROYW1lTGlzdCgp
OwotICAgICAgICB2YXIgZmFpbHVyZXNCeVRlc3QgPSBiYXNlLmZpbHRlckRpY3Rpb25hcnkoCi0g
ICAgICAgICAgICB0aGlzLl9yZXN1bHRzRmlsdGVyKHRoaXMuX21vZGVsLnJlc3VsdHNCeUJ1aWxk
ZXIpLAotICAgICAgICAgICAgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IHRlc3ROYW1lTGlzdC5pbmRleE9mKGtleSkgIT0gLTE7Ci0gICAgICAgICAgICB9KTsKLQotICAg
ICAgICByZWJhc2VsaW5lV2l0aFN0YXR1c1VwZGF0ZXModGhpcy5fdG9GYWlsdXJlSW5mb0xpc3Qo
ZmFpbHVyZXMpLCBmYWlsdXJlc0J5VGVzdCk7Ci0gICAgfSwKLSAgICBvblVwZGF0ZUV4cGVjdGF0
aW9uczogZnVuY3Rpb24oZmFpbHVyZXMpCi0gICAgewotICAgICAgICB1cGRhdGVFeHBlY3RhdGlv
bnNXaXRoU3RhdHVzVXBkYXRlcyh0aGlzLl90b0ZhaWx1cmVJbmZvTGlzdChmYWlsdXJlcykpOwot
ICAgIH0KLX0pOwotCi1jb250cm9sbGVycy5VbmV4cGVjdGVkRmFpbHVyZXMgPSBiYXNlLmV4dGVu
ZHMoRmFpbHVyZVN0cmVhbUNvbnRyb2xsZXIsIHsKLSAgICBfcmVzdWx0c0ZpbHRlcjogcmVzdWx0
cy51bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsCi0KLSAgICBfaW1wbGllZEZpcnN0RmFpbGluZ1Jl
dmlzaW9uOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4g
ZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7Ci0gICAgfSwKLSAgICBf
a2V5Rm9yOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4g
ZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArICIrIiArIGZhaWx1cmVBbmFs
eXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247Ci0gICAgfSwKLSAgICBfY3JlYXRlRmFpbHVyZVZp
ZXc6IGZ1bmN0aW9uKGZhaWx1cmVBbmFseXNpcykKLSAgICB7Ci0gICAgICAgIHZhciBmYWlsdXJl
ID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RzU3VtbWFyeSgpOwotICAgICAgICBt
b2RlbC5jb21taXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UodGhpcy5faW1wbGllZEZpcnN0RmFp
bGluZ1JldmlzaW9uKGZhaWx1cmVBbmFseXNpcyksIGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWls
aW5nUmV2aXNpb24pLmZvckVhY2goZnVuY3Rpb24oY29tbWl0RGF0YSkgewotICAgICAgICAgICAg
dmFyIHN1c3BpY2lvdXNDb21taXQgPSBmYWlsdXJlLmFkZENvbW1pdERhdGEoY29tbWl0RGF0YSk7
Ci0gICAgICAgICAgICAkKHN1c3BpY2lvdXNDb21taXQpLmJpbmQoJ3JldmVydCcsIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgICAgIHRoaXMub25SZXZlcnQoY29tbWl0RGF0YS5yZXZpc2lvbiwg
ZmFpbHVyZS50ZXN0TmFtZUxpc3QoKSk7Ci0gICAgICAgICAgICB9LmJpbmQodGhpcykpOwotICAg
ICAgICAgICAgJChmYWlsdXJlKS5iaW5kKCdibGFtZScsIGZ1bmN0aW9uKCkgewotICAgICAgICAg
ICAgICAgIHRoaXMub25CbGFtZShmYWlsdXJlLCBjb21taXREYXRhKTsKLSAgICAgICAgICAgIH0u
YmluZCh0aGlzKSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHJldHVybiBmYWlsdXJl
OwotICAgIH0sCi0gICAgdXBkYXRlOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewot
ICAgICAgICB2YXIgZmFpbHVyZSA9IEZhaWx1cmVTdHJlYW1Db250cm9sbGVyLnByb3RvdHlwZS51
cGRhdGUuY2FsbCh0aGlzLCBmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICBmYWlsdXJlLnVwZGF0
ZUJ1aWxkZXJSZXN1bHRzKG1vZGVsLmJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbih0aGlzLl9p
bXBsaWVkRmlyc3RGYWlsaW5nUmV2aXNpb24oZmFpbHVyZUFuYWx5c2lzKSkpOwotICAgIH0sCi0g
ICAgbGVuZ3RoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdEZh
aWx1cmVzLmxlbmd0aCgpOwotICAgIH0sCi0gICAgb25CbGFtZTogZnVuY3Rpb24oZmFpbHVyZSwg
Y29tbWl0RGF0YSkKLSAgICB7Ci0gICAgICAgIGZhaWx1cmUucGluVG9Db21taXREYXRhKGNvbW1p
dERhdGEpOwotICAgICAgICAkKCcuYWN0aW9uJywgZmFpbHVyZSkuZWFjaChmdW5jdGlvbigpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzbid0IHRoZSByaWdodCB3YXkgb2YgZmluZGlu
ZyBhbmQgZGlzYWJsaW5nIHRoaXMgYWN0aW9uLgotICAgICAgICAgICAgaWYgKHRoaXMudGV4dENv
bnRlbnQgPT0gJ0JsYW1lJykKLSAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTsK
LSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBvblJldmVydDogZnVuY3Rpb24ocmV2aXNpb24sIHRl
c3ROYW1lTGlzdCkKLSAgICB7Ci0gICAgICAgIGNoZWNrb3V0LnJldmVydChyZXZpc2lvbiwgdWku
cmV2ZXJ0UmVhc29uRm9yVGVzdE5hbWVMaXN0KHRlc3ROYW1lTGlzdCksICQubm9vcCwgZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSBiZXR0ZXIgZXJy
b3IgVUkuCi0gICAgICAgICAgICBhbGVydChrQ2hlY2tvdXRVbmF2YWlsYWJsZU1lc3NhZ2UpOwot
ICAgICAgICB9KTsKLSAgICB9Ci19KTsKLQotY29udHJvbGxlcnMuRmFpbHVyZXMgPSBiYXNlLmV4
dGVuZHMoRmFpbHVyZVN0cmVhbUNvbnRyb2xsZXIsIHsKLSAgICBfcmVzdWx0c0ZpbHRlcjogcmVz
dWx0cy5leHBlY3RlZEZhaWx1cmVzQnlUZXN0LAotCi0gICAgX2tleUZvcjogZnVuY3Rpb24oZmFp
bHVyZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJhc2UuZGlyTmFtZShmYWlsdXJl
QW5hbHlzaXMudGVzdE5hbWUpOwotICAgIH0sCi0gICAgX2NyZWF0ZUZhaWx1cmVWaWV3OiBmdW5j
dGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IHVpLm5vdGlm
aWNhdGlvbnMuRmFpbGluZ1Rlc3RzKCk7Ci0gICAgfSwKLX0pOwotCi1jb250cm9sbGVycy5GYWls
aW5nQnVpbGRlcnMgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
dmlldywgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3ZpZXcgPSB2aWV3OwotICAgICAg
ICB0aGlzLl9tZXNzYWdlID0gbWVzc2FnZTsKLSAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uID0g
bnVsbDsKLSAgICB9LAotICAgIGhhc0ZhaWx1cmVzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gISF0aGlzLl9ub3RpZmljYXRpb247Ci0gICAgfSwKLSAgICB1cGRhdGU6IGZ1bmN0
aW9uKGZhaWx1cmVzTGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChPYmplY3Qua2V5cyhmYWlsdXJl
c0xpc3QpLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fbm90aWZpY2F0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uLmRpc21pc3MoKTsKLSAgICAg
ICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24gPSBudWxsOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGlmICghdGhpcy5fbm90aWZpY2F0
aW9uKSB7Ci0gICAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24gPSBuZXcgdWkubm90aWZpY2F0
aW9ucy5CdWlsZGVyc0ZhaWxpbmcodGhpcy5fbWVzc2FnZSk7Ci0gICAgICAgICAgICB0aGlzLl92
aWV3LmFkZCh0aGlzLl9ub3RpZmljYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIC8vIEZJWE1F
OiBXZSBzaG91bGQgcHJvdmlkZSByZWdyZXNzaW9uIHJhbmdlcyBmb3IgdGhlIGZhaWxpbmcgYnVp
bGRlcnMuCi0gICAgICAgIC8vIFRoaXMgZG9lc24ndCBzZWVtIHRvIGhhcHBlbiBvZnRlbiBlbm91
Z2ggdG8gd29ycnkgdG9vIG11Y2ggYWJvdXQgdGhhdCwgaG93ZXZlci4KLSAgICAgICAgdGhpcy5f
bm90aWZpY2F0aW9uLnNldEZhaWxpbmdCdWlsZGVycyhmYWlsdXJlc0xpc3QpOwotICAgIH0KLX0p
OwotCi19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvY29udHJvbGxlcnNfdW5p
dHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2NvbnRyb2xs
ZXJzX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvY29udHJvbGxlcnNfdW5pdHRlc3RzLmpzCShub25leGlzdGVudCkKQEAgLTEsMTA2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQotdmFyIGtFeGFtcGxlUmVzdWx0
c0J5QnVpbGRlciA9IHsKLSAgICAiTW9jayBCdWlsZGVyIjogdW5pdHRlc3Qua0V4YW1wbGVSZXN1
bHRzSlNPTiwKLX07Ci0KLW1vZHVsZSgiY29udHJvbGxlcnMiKTsKLQotdGVzdCgiVW5leHBlY3Rl
ZEZhaWx1cmVzIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3
b3JrU2ltdWxhdG9yKCk7Ci0KLSAgICBzaW11bGF0b3IucHJvYmUgPSBmdW5jdGlvbigpIHsKLSAg
ICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBt
b2NrVmlldyA9IHt9OwotICAgICAgICB2YXIgbW9ja1N0YXRlID0gewotICAgICAgICAgICAgcmVz
dWx0c0J5QnVpbGRlcjoga0V4YW1wbGVSZXN1bHRzQnlCdWlsZGVyCi0gICAgICAgIH07Ci0gICAg
ICAgIHZhciBleHBlY3RlZFJlc3VsdHNCeVRlc3QgPSBudWxsOwotICAgICAgICB2YXIgbW9ja0Rl
bGVnYXRlID0gewotICAgICAgICAgICAgc2hvd1Jlc3VsdHM6IGZ1bmN0aW9uKHJlc3VsdHNWaWV3
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRlZXBFcXVhbChyZXN1bHRzVmlldy5f
cmVzdWx0c0J5VGVzdCwgZXhwZWN0ZWRSZXN1bHRzQnlUZXN0KTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgICAgICB2YXIgY29udHJvbGxlciA9IGNvbnRyb2xsZXJzLlVuZXhwZWN0ZWRG
YWlsdXJlcyhtb2NrU3RhdGUsIG1vY2tWaWV3LCBtb2NrRGVsZWdhdGUpOwotCi0gICAgICAgIHZh
ciB0ZXN0TmFtZUxpc3QgPSBudWxsOwotICAgICAgICB2YXIgbW9ja0ZhaWx1cmVzID0gewotICAg
ICAgICAgICAgdGVzdE5hbWVMaXN0OiBmdW5jdGlvbigpIHsgcmV0dXJuIHRlc3ROYW1lTGlzdDsg
fQotICAgICAgICB9OwotCi0gICAgICAgIHRlc3ROYW1lTGlzdCA9IFsic2Nyb2xsYmFycy9jdXN0
b20tc2Nyb2xsYmFyLXdpdGgtaW5jb21wbGV0ZS1zdHlsZS5odG1sIl07Ci0gICAgICAgIGV4cGVj
dGVkUmVzdWx0c0J5VGVzdCA9IHt9OwotICAgICAgICBjb250cm9sbGVyLm9uRXhhbWluZShtb2Nr
RmFpbHVyZXMpOwotCi0gICAgICAgIHRlc3ROYW1lTGlzdCA9IFsidXNlcnNjcmlwdHMvYW5vdGhl
ci10ZXN0Lmh0bWwiXTsKLSAgICAgICAgZXhwZWN0ZWRSZXN1bHRzQnlUZXN0ID0gewotICAgICAg
ICAgICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICJNb2Nr
IEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAg
ICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLSAgICAgICAgY29udHJvbGxlci5vbkV4YW1pbmUobW9ja0ZhaWx1cmVzKTsKLSAgICB9
KTsKLX0pOwotCi10ZXN0KCJjb250cm9sbGVycy5GYWlsaW5nQnVpbGRlcnMiLCAzLCBmdW5jdGlv
bigpIHsKLSAgICB2YXIgTW9ja1ZpZXcgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICAgICAg
YWRkOiBmdW5jdGlvbihub2RlKSB7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5vZGUp
OwotICAgICAgICB9Ci0gICAgfSkKLSAgICB2YXIgdmlldyA9IG5ldyBNb2NrVmlldygpOwotICAg
IHZhciBmYWlsaW5nQnVpbGRlcnMgPSBuZXcgY29udHJvbGxlcnMuRmFpbGluZ0J1aWxkZXJzKHZp
ZXcsICdkdW1teSBtZXNzYWdlJyk7Ci0gICAgb2soIWZhaWxpbmdCdWlsZGVycy5oYXNGYWlsdXJl
cygpKTsKLQotICAgIGZhaWxpbmdCdWlsZGVycy51cGRhdGUoeydEdW1teUJ1aWxkZXInOiBbJ3dl
YmtpdF90ZXN0cyddfSk7Ci0gICAgb2soZmFpbGluZ0J1aWxkZXJzLmhhc0ZhaWx1cmVzKCkpOwot
Ci0gICAgZXF1YWwodmlldy5vdXRlckhUTUwsICc8ZGl2PicgKwotICAgICAgICAnPGxpIHN0eWxl
PSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PHRpbWUg
Y2xhc3M9InJlbGF0aXZlIj48L3RpbWU+PC9kaXY+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFz
cz0id2hhdCI+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9InByb2JsZW0iPmR1bW15
IG1lc3NhZ2U6JyArCi0gICAgICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImVmZmVjdHMiPicg
KwotICAgICAgICAgICAgICAgICAgICAgICAgJzxsaSBjbGFzcz0iYnVpbGRlciI+PGEgY2xhc3M9
ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJv
bWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9RHVtbXlCdWlsZGVy
Ij4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9InZlcnNpb24i
PkR1bW15QnVpbGRlcjwvc3Bhbj48c3BhbiBjbGFzcz0iZmFpbHVyZXMiPiB3ZWJraXRfdGVzdHM8
L3NwYW4+PC9hPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzwvbGk+JyArCi0gICAgICAg
ICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAg
ICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPjwvdWw+JyArCi0gICAgICAgICAgICAnPC9k
aXY+JyArCi0gICAgICAgICc8L2xpPicgKwotICAgICc8L2Rpdj4nKQotfSk7Ci0KLX0pKCk7Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9nYXJkZW4tby1tYXRpYy5qcwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvZ2FyZGVuLW8tbWF0aWMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7
Ci0KLXZhciBnX2luZm8gPSBudWxsOwotdmFyIGdfcmV2aXNpb25IaW50ID0gbnVsbDsKLQotdmFy
IGdfdXBkYXRlVGltZXJJZCA9IDA7Ci12YXIgZ19idWlsZGVyc0ZhaWxpbmcgPSBudWxsOwotCi12
YXIgZ191bmV4cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyID0gbnVsbDsKLXZhciBnX2ZhaWx1cmVz
Q29udHJvbGxlciA9IG51bGw7Ci0KLXZhciBnX25vbkxheW91dFRlc3RGYWlsdXJlQnVpbGRlcnMg
PSBudWxsOwotCi1mdW5jdGlvbiB1cGRhdGVQYXJ0eVRpbWUoKQotewotICAgIGlmICghZ191bmV4
cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyLmxlbmd0aCgpICYmICFnX25vbkxheW91dFRlc3RGYWls
dXJlQnVpbGRlcnMuaGFzRmFpbHVyZXMoKSkKLSAgICAgICAgJCgnI29uZWJhcicpLmFkZENsYXNz
KCdwYXJ0eXRpbWUnKTsKLSAgICBlbHNlCi0gICAgICAgICQoJyNvbmViYXInKS5yZW1vdmVDbGFz
cygncGFydHl0aW1lJyk7Ci19Ci0KLWZ1bmN0aW9uIHVwZGF0ZSgpCi17Ci0gICAgaWYgKGdfcmV2
aXNpb25IaW50KQotICAgICAgICBnX3JldmlzaW9uSGludC5kaXNtaXNzKCk7Ci0KLSAgICB2YXIg
Z3Rlc3RJZnJhbWUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjY2hyb21pdW0tZ3Rlc3RzIGlm
cmFtZScpOwotICAgIGlmIChndGVzdElmcmFtZSkKLSAgICAgICAgZ3Rlc3RJZnJhbWUuc3JjID0g
Z3Rlc3RJZnJhbWUuc3JjOwotCi0gICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGEgYnV0dG9u
IHdpdGggYSBwcm9ncmVzcyBlbGVtZW50LgotICAgIHZhciBudW1iZXJPZlRlc3RzQW5hbHl6ZWQg
PSAwOwotICAgIHZhciB1cGRhdGluZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oJ0xvYWRp
bmcgY29tbWl0IGRhdGEgLi4uJyk7Ci0KLSAgICBnX2luZm8uYWRkKHVwZGF0aW5nKTsKLQotICAg
IGJ1aWxkZXJzLmJ1aWxkZXJzRmFpbGluZ05vbkxheW91dFRlc3RzKGZ1bmN0aW9uKGZhaWx1cmVz
TGlzdCkgewotICAgICAgICBnX25vbkxheW91dFRlc3RGYWlsdXJlQnVpbGRlcnMudXBkYXRlKGZh
aWx1cmVzTGlzdCk7Ci0gICAgICAgIHVwZGF0ZVBhcnR5VGltZSgpOwotICAgIH0pOwotCi0gICAg
YmFzZS5jYWxsSW5QYXJhbGxlbChbbW9kZWwudXBkYXRlUmVjZW50Q29tbWl0cywgbW9kZWwudXBk
YXRlUmVzdWx0c0J5QnVpbGRlcl0sIGZ1bmN0aW9uKCkgewotICAgICAgICBpZiAoZ19mYWlsdXJl
c0NvbnRyb2xsZXIpCi0gICAgICAgICAgICBnX2ZhaWx1cmVzQ29udHJvbGxlci51cGRhdGUoKTsK
LQotICAgICAgICB1cGRhdGluZy51cGRhdGUoJ0FuYWx5emluZyB0ZXN0IGZhaWx1cmVzIC4uLicp
OwotCi0gICAgICAgIG1vZGVsLmFuYWx5emVVbmV4cGVjdGVkRmFpbHVyZXMoZnVuY3Rpb24oZmFp
bHVyZUFuYWx5c2lzKSB7Ci0gICAgICAgICAgICB1cGRhdGluZy51cGRhdGUoJ0FuYWx5emluZyB0
ZXN0IGZhaWx1cmVzIC4uLiAnICsgKytudW1iZXJPZlRlc3RzQW5hbHl6ZWQgKyAnIHRlc3RzIGFu
YWx5emVkLicpOwotICAgICAgICAgICAgZ191bmV4cGVjdGVkRmFpbHVyZXNDb250cm9sbGVyLnVw
ZGF0ZShmYWlsdXJlQW5hbHlzaXMpOwotICAgICAgICB9LCBmdW5jdGlvbigpIHsKLSAgICAgICAg
ICAgIHVwZGF0ZVBhcnR5VGltZSgpOwotICAgICAgICAgICAgZ191bmV4cGVjdGVkRmFpbHVyZXND
b250cm9sbGVyLnB1cmdlKCk7Ci0KLSAgICAgICAgICAgIE9iamVjdC5rZXlzKGNvbmZpZy5jdXJy
ZW50QnVpbGRlcnMoKSkuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAg
ICAgICAgIGlmICghbW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0pCi0g
ICAgICAgICAgICAgICAgICAgIGdfaW5mby5hZGQobmV3IHVpLm5vdGlmaWNhdGlvbnMuSW5mbygn
Q291bGQgbm90IGZpbmQgdGVzdCByZXN1bHRzIGZvciAnICsgYnVpbGRlck5hbWUgKyAnIGluIHRo
ZSBsYXN0ICcgKyBjb25maWcua0J1aWxkTnVtYmVyTGltaXQgKyAnIHJ1bnMuJykpOyAgICAgICAg
ICAgIAotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHVwZGF0aW5nLmRpc21pc3MoKTsK
LQotICAgICAgICAgICAgZ19yZXZpc2lvbkhpbnQgPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZv
KCcnKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgdmFyIGxhdGVzdFJldmlzaW9uU3BhbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKLSAgICAgICAgICAgIGxhdGVzdFJldmlz
aW9uU3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnTGF0ZXN0IHJldmlz
aW9uIHByb2Nlc3NlZCBieSBldmVyeSBib3Q6ICcpKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgdmFyIGxhdGVzdFJldmlzaW9uID0gbW9kZWwubGF0ZXN0UmV2aXNpb25XaXRoTm9CdWlsZGVy
c0luRmxpZ2h0KCk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNwYW4uYXBwZW5kQ2hpbGQo
YmFzZS5jcmVhdGVMaW5rTm9kZSh0cmFjLmNoYW5nZXNldFVSTChsYXRlc3RSZXZpc2lvbiksIGxh
dGVzdFJldmlzaW9uKSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHZhciB0b3RSZXZpc2lv
biA9IG1vZGVsLmxhdGVzdFJldmlzaW9uKCk7Ci0gICAgICAgICAgICBsYXRlc3RSZXZpc2lvblNw
YW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJyAodHJ1bmsgaXMgYXQgJykp
OwotICAgICAgICAgICAgbGF0ZXN0UmV2aXNpb25TcGFuLmFwcGVuZENoaWxkKGJhc2UuY3JlYXRl
TGlua05vZGUodHJhYy5jaGFuZ2VzZXRVUkwodG90UmV2aXNpb24pLCB0b3RSZXZpc2lvbikpOwot
ICAgICAgICAgICAgbGF0ZXN0UmV2aXNpb25TcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCcpJykpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBnX3JldmlzaW9uSGlu
dC51cGRhdGVXaXRoTm9kZShsYXRlc3RSZXZpc2lvblNwYW4pOwotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBnX2luZm8uYWRkKGdfcmV2aXNpb25IaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7
Ci19Ci0KLSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgIGdfdXBkYXRlVGltZXJJ
ZCA9IHdpbmRvdy5zZXRJbnRlcnZhbCh1cGRhdGUsIGNvbmZpZy5rVXBkYXRlRnJlcXVlbmN5KTsK
LQotICAgIHBpeGVsem9vbWVyLmluc3RhbGxFdmVudExpc3RlbmVycygpOwotCi0gICAgb25lYmFy
ID0gbmV3IHVpLm9uZWJhcigpOwotICAgIG9uZWJhci5hdHRhY2goKTsKLQotICAgIC8vIEZJWE1F
OiBUaGlzIGRvZXNuJ3QgYmVsb25nIGhlcmUuCi0gICAgdmFyIG9uZWJhckNvbnRyb2xsZXIgPSB7
Ci0gICAgICAgIHNob3dSZXN1bHRzOiBmdW5jdGlvbihyZXN1bHRzVmlldykKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIHJlc3VsdHNDb250YWluZXIgPSBvbmViYXIucmVzdWx0cygpOwotICAg
ICAgICAgICAgJChyZXN1bHRzQ29udGFpbmVyKS5lbXB0eSgpLmFwcGVuZChyZXN1bHRzVmlldyk7
Ci0gICAgICAgICAgICBvbmViYXIuc2VsZWN0KCdyZXN1bHRzJyk7Ci0gICAgICAgIH0KLSAgICB9
OwotCi0gICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlc1ZpZXcgPSBuZXcgdWkubm90aWZpY2F0aW9u
cy5TdHJlYW0oKTsKLSAgICBnX3VuZXhwZWN0ZWRGYWlsdXJlc0NvbnRyb2xsZXIgPSBuZXcgY29u
dHJvbGxlcnMuVW5leHBlY3RlZEZhaWx1cmVzKG1vZGVsLnN0YXRlLCB1bmV4cGVjdGVkRmFpbHVy
ZXNWaWV3LCBvbmViYXJDb250cm9sbGVyKTsKLQotICAgIGdfaW5mbyA9IG5ldyB1aS5ub3RpZmlj
YXRpb25zLlN0cmVhbSgpOwotICAgIGdfbm9uTGF5b3V0VGVzdEZhaWx1cmVCdWlsZGVycyA9IG5l
dyBjb250cm9sbGVycy5GYWlsaW5nQnVpbGRlcnMoZ19pbmZvLCAnTm9uLWxheW91dCB0ZXN0IGZh
aWx1cmVzJyk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYW4gQWN0aW9uIG9iamVj
dC4KLSAgICB2YXIgdXBkYXRlQnV0dG9uID0gZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJyksIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7
Ci0gICAgdXBkYXRlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdXBkYXRlKTsKLSAg
ICB1cGRhdGVCdXR0b24udGV4dENvbnRlbnQgPSAndXBkYXRlJzsKLQotICAgIHZhciB1bmV4cGVj
dGVkID0gb25lYmFyLnVuZXhwZWN0ZWQoKTsKLSAgICB1bmV4cGVjdGVkLmFwcGVuZENoaWxkKHVw
ZGF0ZUJ1dHRvbik7Ci0gICAgdW5leHBlY3RlZC5hcHBlbmRDaGlsZChnX2luZm8pOwotICAgIHVu
ZXhwZWN0ZWQuYXBwZW5kQ2hpbGQodW5leHBlY3RlZEZhaWx1cmVzVmlldyk7Ci0KLSAgICB2YXIg
ZXhwZWN0ZWQgPSBvbmViYXIuZXhwZWN0ZWQoKTsKLSAgICBpZiAoZXhwZWN0ZWQpIHsKLSAgICAg
ICAgdmFyIGZhaWx1cmVzVmlldyA9IG5ldyB1aS5mYWlsdXJlcy5MaXN0KCk7Ci0gICAgICAgIGdf
ZmFpbHVyZXNDb250cm9sbGVyID0gbmV3IGNvbnRyb2xsZXJzLkV4cGVjdGVkRmFpbHVyZXMobW9k
ZWwuc3RhdGUsIGZhaWx1cmVzVmlldywgb25lYmFyQ29udHJvbGxlcik7Ci0gICAgICAgIGV4cGVj
dGVkLmFwcGVuZENoaWxkKGZhaWx1cmVzVmlldyk7Ci0gICAgfQotCi0gICAgb25lYmFyLnBlcmYo
KS5hcHBlbmRDaGlsZChuZXcgdWkucGVyZi5WaWV3KCkpOwotCi0gICAgdXBkYXRlKCk7Ci19KTsK
LQotfSkoKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2dh
cmRlbi1vLW1hdGljLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSAr
MCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9tb2RlbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c2NyaXB0cy9tb2RlbC5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Nj
cmlwdHMvbW9kZWwuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNDcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi12YXIgbW9kZWwgPSBtb2RlbCB8fCB7fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotdmFyIGtD
b21taXRMb2dMZW5ndGggPSA1MDsKLQotbW9kZWwuc3RhdGUgPSB7fTsKLW1vZGVsLnN0YXRlLmZh
aWx1cmVBbmFseXNpc0J5VGVzdCA9IHt9OwotbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0g
W107Ci1tb2RlbC5zdGF0ZS5leHBlY3RhdGlvbnNVcGRhdGVRdWV1ZSA9IFtdOwotCi1mdW5jdGlv
biBmaW5kQW5kTWFya1JldmVydGVkUmV2aXNpb25zKGNvbW1pdERhdGFMaXN0KQotewotICAgIHZh
ciByZXZlcnRlZFJldmlzaW9ucyA9IHt9OwotICAgICQuZWFjaChjb21taXREYXRhTGlzdCwgZnVu
Y3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEucmV2ZXJ0
ZWRSZXZpc2lvbikKLSAgICAgICAgICAgIHJldmVydGVkUmV2aXNpb25zW2NvbW1pdERhdGEucmV2
ZXJ0ZWRSZXZpc2lvbl0gPSB0cnVlOwotICAgIH0pOwotICAgICQuZWFjaChjb21taXREYXRhTGlz
dCwgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgaWYgKGNvbW1pdERhdGEu
cmV2aXNpb24gaW4gcmV2ZXJ0ZWRSZXZpc2lvbnMpCi0gICAgICAgICAgICBjb21taXREYXRhLndh
c1JldmVydGVkID0gdHJ1ZTsKLSAgICB9KTsKLX0KLQotZnVuY3Rpb24gZnV6enlGaW5kKHRlc3RO
YW1lLCBjb21taXREYXRhKQotewotICAgIHZhciBpbmRleE9mTGFzdERvdCA9IHRlc3ROYW1lLmxh
c3RJbmRleE9mKCcuJyk7Ci0gICAgdmFyIHN0ZW0gPSBpbmRleE9mTGFzdERvdCA9PSAtMSA/IHRl
c3ROYW1lIDogdGVzdE5hbWUuc3Vic3RyKDAsIGluZGV4T2ZMYXN0RG90KTsKLSAgICByZXR1cm4g
Y29tbWl0RGF0YS5tZXNzYWdlLmluZGV4T2Yoc3RlbSkgIT0gLTE7Ci19Ci0KLWZ1bmN0aW9uIGhl
dXJpc3RpY2FsbHlOYXJyb3dSZWdyZXNzaW9uUmFuZ2UoZmFpbHVyZUFuYWx5c2lzKQotewotICAg
IHZhciBjb21taXREYXRhTGlzdCA9IG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgdmFy
IGNvbW1pdERhdGFJbmRleCA9IGNvbW1pdERhdGFMaXN0Lmxlbmd0aCAtIDE7Ci0KLSAgICBmb3Io
dmFyIHJldmlzaW9uID0gZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiArIDE7
IHJldmlzaW9uIDw9IGZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5nUmV2aXNpb247ICsrcmV2
aXNpb24pIHsKLSAgICAgICAgd2hpbGUgKGNvbW1pdERhdGFJbmRleCA+PSAwICYmIGNvbW1pdERh
dGFMaXN0W2NvbW1pdERhdGFJbmRleF0ucmV2aXNpb24gPCByZXZpc2lvbikKLSAgICAgICAgICAg
IC0tY29tbWl0RGF0YUluZGV4OwotICAgICAgICB2YXIgY29tbWl0RGF0YSA9IGNvbW1pdERhdGFM
aXN0W2NvbW1pdERhdGFJbmRleF07Ci0gICAgICAgIGlmIChjb21taXREYXRhLnJldmlzaW9uICE9
IHJldmlzaW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChmdXp6eUZpbmQo
ZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lLCBjb21taXREYXRhKSkgewotICAgICAgICAgICAgZmFp
bHVyZUFuYWx5c2lzLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAg
ICAgZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uIC0gMTsK
LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotbW9kZWwucXVldWVG
b3JSZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFpbHVyZUluZm8pCi17Ci0gICAgbW9kZWwuc3RhdGUu
cmViYXNlbGluZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZVJlYmFz
ZWxpbmVRdWV1ZSA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcXVldWUgPSBtb2RlbC5zdGF0ZS5y
ZWJhc2VsaW5lUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUucmViYXNlbGluZVF1ZXVlID0gW107Ci0g
ICAgcmV0dXJuIHF1ZXVlOwotfTsKLQotbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSA9
IGZ1bmN0aW9uKGZhaWx1cmVJbmZvKQotewotICAgIG1vZGVsLnN0YXRlLmV4cGVjdGF0aW9uc1Vw
ZGF0ZVF1ZXVlLnB1c2goZmFpbHVyZUluZm8pOwotfTsKLQotbW9kZWwudGFrZUV4cGVjdGF0aW9u
VXBkYXRlUXVldWUgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwuc3RhdGUu
ZXhwZWN0YXRpb25zVXBkYXRlUXVldWU7Ci0gICAgbW9kZWwuc3RhdGUuZXhwZWN0YXRpb25zVXBk
YXRlUXVldWUgPSBbXTsKLSAgICByZXR1cm4gcXVldWU7Ci19OwotCi12YXIgZ19jb21taXRJbmRl
eCA9IHt9OwotCi1tb2RlbC51cGRhdGVSZWNlbnRDb21taXRzID0gZnVuY3Rpb24oY2FsbGJhY2sp
Ci17Ci0gICAgdHJhYy5yZWNlbnRDb21taXREYXRhKCd0cnVuaycsIGtDb21taXRMb2dMZW5ndGgs
IGZ1bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7Ci0gICAgICAgIG1vZGVsLnN0YXRlLnJlY2VudENv
bW1pdHMgPSBjb21taXREYXRhTGlzdDsKLSAgICAgICAgdXBkYXRlQ29tbWl0SW5kZXgoKTsKLSAg
ICAgICAgZmluZEFuZE1hcmtSZXZlcnRlZFJldmlzaW9ucyhtb2RlbC5zdGF0ZS5yZWNlbnRDb21t
aXRzKTsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLWZ1bmN0aW9uIHVwZGF0
ZUNvbW1pdEluZGV4KCkKLXsKLSAgICBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzLmZvckVhY2go
ZnVuY3Rpb24oY29tbWl0RGF0YSkgewotICAgICAgICBnX2NvbW1pdEluZGV4W2NvbW1pdERhdGEu
cmV2aXNpb25dID0gY29tbWl0RGF0YTsKLSAgICB9KTsKLX0KLQotbW9kZWwuY29tbWl0RGF0YUxp
c3RGb3JSZXZpc2lvblJhbmdlID0gZnVuY3Rpb24oZnJvbVJldmlzaW9uLCB0b1JldmlzaW9uKQot
ewotICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciByZXZpc2lvbiA9IGZyb21SZXZp
c2lvbjsgcmV2aXNpb24gPD0gdG9SZXZpc2lvbjsgKytyZXZpc2lvbikgewotICAgICAgICB2YXIg
Y29tbWl0RGF0YSA9IGdfY29tbWl0SW5kZXhbcmV2aXNpb25dOwotICAgICAgICBpZiAoY29tbWl0
RGF0YSkKLSAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbW1pdERhdGEpOwotICAgIH0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfTsKLQotbW9kZWwuYnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uID0g
ZnVuY3Rpb24ocmV2aXNpb24pCi17Ci0gICAgdmFyIGJ1aWxkZXJzID0ge307Ci0gICAgT2JqZWN0
LmtleXMobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcikuZm9yRWFjaChmdW5jdGlvbihidWls
ZGVyTmFtZSkgewotICAgICAgICB2YXIgcmVzdWx0cyA9IG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1
aWxkZXJbYnVpbGRlck5hbWVdOwotICAgICAgICBpZiAocGFyc2VJbnQocmVzdWx0cy5yZXZpc2lv
bikgPCByZXZpc2lvbikKLSAgICAgICAgICAgIGJ1aWxkZXJzW2J1aWxkZXJOYW1lXSA9IHsgYWN0
dWFsOiAnQlVJTERJTkcnIH07Ci0gICAgfSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXJzOwotfTsKLQot
bW9kZWwubGF0ZXN0UmV2aXNpb24gPSBmdW5jdGlvbigpCi17Ci0gICAgcmV0dXJuIG1vZGVsLnN0
YXRlLnJlY2VudENvbW1pdHNbMF0ucmV2aXNpb247Ci19Ci0KLW1vZGVsLmxhdGVzdFJldmlzaW9u
V2l0aE5vQnVpbGRlcnNJbkZsaWdodCA9IGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgcmV2aXNpb24g
PSAwOwotICAgIE9iamVjdC5rZXlzKG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpLmZvckVh
Y2goZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBtb2RlbC5z
dGF0ZS5yZXN1bHRzQnlCdWlsZGVyW2J1aWxkZXJOYW1lXTsKLSAgICAgICAgaWYgKCFyZXN1bHRz
LnJldmlzaW9uKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB2YXIgdGVzdGVkUmV2aXNp
b24gPSBwYXJzZUludChyZXN1bHRzLnJldmlzaW9uKTsKLSAgICAgICAgcmV2aXNpb24gPSByZXZp
c2lvbiA/IE1hdGgubWluKHJldmlzaW9uLCB0ZXN0ZWRSZXZpc2lvbikgOiB0ZXN0ZWRSZXZpc2lv
bjsKLSAgICB9KTsKLSAgICByZXR1cm4gcmV2aXNpb247Ci19Ci0KLW1vZGVsLnVwZGF0ZVJlc3Vs
dHNCeUJ1aWxkZXIgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgcGxhdGZvcm1CdWls
ZGVycyA9IGNvbmZpZy5jdXJyZW50QnVpbGRlcnMoKTsKLSAgICByZXN1bHRzLmZldGNoUmVzdWx0
c0J5QnVpbGRlcihPYmplY3Qua2V5cyhwbGF0Zm9ybUJ1aWxkZXJzKSwgZnVuY3Rpb24ocmVzdWx0
c0J5QnVpbGRlcikgewotICAgICAgICBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyID0gcmVz
dWx0c0J5QnVpbGRlcjsKLSAgICAgICAgY2FsbGJhY2soKTsKLSAgICB9KTsKLX07Ci0KLW1vZGVs
LmFuYWx5emVVbmV4cGVjdGVkRmFpbHVyZXMgPSBmdW5jdGlvbihjYWxsYmFjaywgY29tcGxldGlv
bkNhbGxiYWNrKQotewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLnVuZXhw
ZWN0ZWRGYWlsdXJlc0J5VGVzdChtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLQotICAg
ICQuZWFjaChtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3QsIGZ1bmN0aW9uKHRlc3RO
YW1lLCBmYWlsdXJlQW5hbHlzaXMpIHsKLSAgICAgICAgaWYgKCEodGVzdE5hbWUgaW4gdW5leHBl
Y3RlZEZhaWx1cmVzKSkKLSAgICAgICAgICAgIGRlbGV0ZSBtb2RlbC5zdGF0ZS5mYWlsdXJlQW5h
bHlzaXNCeVRlc3RbdGVzdE5hbWVdOwotICAgIH0pOwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcg
YmFzZS5SZXF1ZXN0VHJhY2tlcihPYmplY3Qua2V5cyh1bmV4cGVjdGVkRmFpbHVyZXMpLmxlbmd0
aCwgY29tcGxldGlvbkNhbGxiYWNrKTsKLSAgICAkLmVhY2godW5leHBlY3RlZEZhaWx1cmVzLCBm
dW5jdGlvbih0ZXN0TmFtZSwgcmVzdWx0Tm9kZXNCeUJ1aWxkZXIpIHsKLSAgICAgICAgdmFyIGJ1
aWxkZXJOYW1lTGlzdCA9IE9iamVjdC5rZXlzKHJlc3VsdE5vZGVzQnlCdWlsZGVyKTsKLSAgICAg
ICAgcmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMoYnVpbGRlck5hbWVMaXN0LCB0ZXN0TmFt
ZSwgZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24p
IHsKLSAgICAgICAgICAgIHZhciBmYWlsdXJlQW5hbHlzaXMgPSB7Ci0gICAgICAgICAgICAgICAg
J3Rlc3ROYW1lJzogdGVzdE5hbWUsCi0gICAgICAgICAgICAgICAgJ3Jlc3VsdE5vZGVzQnlCdWls
ZGVyJzogcmVzdWx0Tm9kZXNCeUJ1aWxkZXIsCi0gICAgICAgICAgICAgICAgJ29sZGVzdEZhaWxp
bmdSZXZpc2lvbic6IG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAnbmV3
ZXN0UGFzc2luZ1JldmlzaW9uJzogbmV3ZXN0UGFzc2luZ1JldmlzaW9uLAotICAgICAgICAgICAg
fTsKLQotICAgICAgICAgICAgaGV1cmlzdGljYWxseU5hcnJvd1JlZ3Jlc3Npb25SYW5nZShmYWls
dXJlQW5hbHlzaXMpOwotCi0gICAgICAgICAgICB2YXIgcHJldmlvdXNGYWlsdXJlQW5hbHlzaXMg
PSBtb2RlbC5zdGF0ZS5mYWlsdXJlQW5hbHlzaXNCeVRlc3RbdGVzdE5hbWVdOwotICAgICAgICAg
ICAgaWYgKHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzCi0gICAgICAgICAgICAgICAgJiYgcHJldmlv
dXNGYWlsdXJlQW5hbHlzaXMub2xkZXN0RmFpbGluZ1JldmlzaW9uIDw9IGZhaWx1cmVBbmFseXNp
cy5vbGRlc3RGYWlsaW5nUmV2aXNpb24KLSAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0ZhaWx1
cmVBbmFseXNpcy5uZXdlc3RQYXNzaW5nUmV2aXNpb24gPj0gZmFpbHVyZUFuYWx5c2lzLm5ld2Vz
dFBhc3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAgICAgIGZhaWx1cmVBbmFseXNpcy5vbGRl
c3RGYWlsaW5nUmV2aXNpb24gPSBwcmV2aW91c0ZhaWx1cmVBbmFseXNpcy5vbGRlc3RGYWlsaW5n
UmV2aXNpb247Ci0gICAgICAgICAgICAgICAgZmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbiA9IHByZXZpb3VzRmFpbHVyZUFuYWx5c2lzLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsK
LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbW9kZWwuc3RhdGUuZmFpbHVyZUFuYWx5c2lz
QnlUZXN0W3Rlc3ROYW1lXSA9IGZhaWx1cmVBbmFseXNpczsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5c2lzKTsKLSAgICAgICAgICAgIHRyYWNrZXIucmVx
dWVzdENvbXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotbW9kZWwudW5leHBl
Y3RlZEZhaWx1cmVJbmZvRm9yVGVzdE5hbWUgPSBmdW5jdGlvbih0ZXN0TmFtZSkKLXsKLSAgICB2
YXIgcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzQnlUZXN0KG1vZGVs
LnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIpOwotCi0gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3Vs
dHNCeVRlc3RbdGVzdE5hbWVdKS5tYXAoZnVuY3Rpb24oYnVpbGRlck5hbWUpIHsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcihyZXN1bHRzQnlUZXN0
LCB0ZXN0TmFtZSwgYnVpbGRlck5hbWUpOwotICAgIH0pOwotfTsKLQotbW9kZWwuYW5hbHl6ZVVu
ZXhwZWN0ZWRTdWNjZXNzZXMgPSBmdW5jdGlvbihjYWxsYmFjaykKLXsKLSAgICB2YXIgdW5leHBl
Y3RlZFN1Y2Nlc3NlcyA9IHJlc3VsdHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdChtb2RlbC5z
dGF0ZS5yZXN1bHRzQnlCdWlsZGVyKTsKLSAgICAkLmVhY2godW5leHBlY3RlZFN1Y2Nlc3Nlcywg
ZnVuY3Rpb24odGVzdE5hbWUsIHJlc3VsdE5vZGVzQnlCdWlsZGVyKSB7Ci0gICAgICAgIHZhciBz
dWNjZXNzQW5hbHlzaXMgPSB7Ci0gICAgICAgICAgICAndGVzdE5hbWUnOiB0ZXN0TmFtZSwKLSAg
ICAgICAgICAgICdyZXN1bHROb2Rlc0J5QnVpbGRlcic6IHJlc3VsdE5vZGVzQnlCdWlsZGVyLAot
ICAgICAgICB9OwotCi0gICAgICAgIC8vIEZJWE1FOiBDb25zaWRlciBsb29raW5nIGF0IHRoZSBo
aXN0b3J5IHRvIHNlZSBob3cgbG9uZyB0aGlzIHRlc3QKLSAgICAgICAgLy8gaGFzIGJlZW4gdW5l
eHBlY3RlZGx5IHBhc3NpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soc3VjY2Vzc0FuYWx5c2lzKTsK
LSAgICB9KTsKLX07Ci0KLW1vZGVsLmFuYWx5emVleHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24o
Y2FsbGJhY2spCi17Ci0gICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMgPSByZXN1bHRzLmV4cGVjdGVk
RmFpbHVyZXNCeVRlc3QobW9kZWwuc3RhdGUucmVzdWx0c0J5QnVpbGRlcik7Ci0gICAgJC5lYWNo
KGV4cGVjdGVkRmFpbHVyZXMsIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2Rlc0J5QnVpbGRl
cikgewotICAgICAgICB2YXIgZmFpbHVyZUFuYWx5c2lzID0gewotICAgICAgICAgICAgJ3Rlc3RO
YW1lJzogdGVzdE5hbWUsCi0gICAgICAgICAgICAncmVzdWx0Tm9kZXNCeUJ1aWxkZXInOiByZXN1
bHROb2Rlc0J5QnVpbGRlciwKLSAgICAgICAgfTsKLQotICAgICAgICAvLyBGSVhNRTogQ29uc2lk
ZXIgbG9va2luZyBhdCB0aGUgaGlzdG9yeSB0byBzZWUgaG93IGxvbmcgdGhpcyB0ZXN0Ci0gICAg
ICAgIC8vIGhhcyBiZWVuIGZhaWxpbmcuCi0KLSAgICAgICAgY2FsbGJhY2soZmFpbHVyZUFuYWx5
c2lzKTsKLSAgICB9KTsKLX07Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0
cy9tb2RlbF91bml0dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3Njcmlw
dHMvbW9kZWxfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy9tb2RlbF91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwyNTQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoIm1vZGVsIik7Ci0K
LXZhciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPQotICAgICc8P3htbCB2ZXJzaW9uPSIxLjAiPz5c
blxuJyArCi0gICAgJzxyc3MgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8x
LjEvIiB2ZXJzaW9uPSIyLjAiPlxuXG4nICsKLSAgICAnICBcblxuJyArCi0gICAgJ1xuXG4nICsK
LSAgICAnICA8Y2hhbm5lbD5cblxuJyArCi0gICAgJyAgICA8dGl0bGU+UmV2aXNpb25zIG9mIC90
cnVuazwvdGl0bGU+XG5cbicgKwotICAgICcgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9sb2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKLSAgICAnICAgIDxkZXNjcmlwdGlv
bj5UcmFjIExvZyAtIFJldmlzaW9ucyBvZiAvdHJ1bms8L2Rlc2NyaXB0aW9uPlxuXG4nICsKLSAg
ICAnICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+XG5cbicgKwotICAgICcgICAgPGdlbmVy
YXRvcj5UcmFjIDAuMTEuNzwvZ2VuZXJhdG9yPlxuXG4nICsKLSAgICAnICAgIDxpbWFnZT5cblxu
JyArCi0gICAgJyAgICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPlxuXG4nICsKLSAgICAnICAgICAg
PHVybD5odHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nPC91cmw+XG5c
bicgKwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJraXQub3JnL2xvZy90cnVuaz9y
ZXY9OTIzNjI8L2xpbms+XG5cbicgKwotICAgICcgICAgPC9pbWFnZT5cblxuJyArCi0gICAgJyAg
ICA8aXRlbT5cbicgKwotICAgICcgICAgICAgICAgPGF1dGhvcj5jb21taXQtcXVldWVAd2Via2l0
Lm9yZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPldlZCwgMDMgQXVnIDIwMTEg
MDQ6MjY6NTIgR01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5
MjI1OTogVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHI5MjI1Ni5cbicgKwotICAgICdodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi48L3RpdGxlPlxuJyArCi0gICAgJyAgICAg
IDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU5L3RydW5rPC9saW5r
PlxuJyArCi0gICAgJyAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2d1aWQ+XG4nICsKLSAgICAnICAgICAg
PGRlc2NyaXB0aW9uPiZsdDtwJmd0O1xuJyArCi0gICAgJ1VucmV2aWV3ZWQsIHJldmVydGluZyAm
bHQ7YSBjbGFzcz0iY2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC85MjI1NiIgdGl0bGU9Ik1ha2UgRXZlbnREaXNwYXRjaE1lZGlhdG9yIFJlZkNvdW50ZWQu
IC4uLiImZ3Q7cjkyMjU2Jmx0Oy9hJmd0Oy5cbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxp
bmsiIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IiZndDsmbHQ7
c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC85MjI1NiZsdDsvYSZndDtcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxp
bmsiIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5MyIm
Z3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTkzJmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsv
cCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdDYXVzaW5nIHRvbnMgb2YgY3Jh
c2hlcyBvbiB0aGUgY2hyb21pdW0gd2luIGJvdHMgKFJlcXVlc3RlZCBieVxuJyArCi0gICAgJ2ph
bWVzciBvbiAjd2Via2l0KS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3Am
Z3Q7XG4nICsKLSAgICAnUGF0Y2ggYnkgU2hlcmlmZiBCb3QgJmFtcDtsdDsmbHQ7YSBjbGFzcz0i
bWFpbC1saW5rIiBocmVmPSJtYWlsdG86d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tIiZndDsm
bHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDt3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20mbHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wMlxuJyArCi0gICAgJyZsdDsv
cCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGRvbS9FdmVudC5jcHA6XG4n
ICsKLSAgICAnKiBkb20vRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9FdmVudERpc3BhdGNoZXIu
Y3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQp
OlxuJyArCi0gICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5oOlxuJyArCi0gICAgJyogZG9tL0tl
eWJvYXJkRXZlbnQuY3BwOlxuJyArCi0gICAgJyogZG9tL0tleWJvYXJkRXZlbnQuaDpcbicgKwot
ICAgICcqIGRvbS9Nb3VzZUV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9Nb3VzZUV2ZW50Lmg6
XG4nICsKLSAgICAnKiBkb20vTm9kZS5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6Ok5vZGU6OmRp
c3BhdGNoRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRjaEtleUV2ZW50
KTpcbicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hNb3VzZUV2ZW50KTpcbicgKwot
ICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hXaGVlbEV2ZW50KTpcbicgKwotICAgICcqIGRv
bS9XaGVlbEV2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9XaGVlbEV2ZW50Lmg6XG4nICsKLSAg
ICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAgICAg
PGNhdGVnb3J5PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT48aXRlbT5cbicg
KwotICAgICcgICAgICAgICAgPGF1dGhvcj5tYWNwaGVyc29uQGNocm9taXVtLm9yZzwvYXV0aG9y
PlxuXG4nICsKLSAgICAnICAgICAgPHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMjowOToxOSBH
TVQ8L3B1YkRhdGU+XG5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIyNTY6IFN1
cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2Ug
aW4gLi4uPC90aXRsZT5cblxuJyArCi0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzkyMjU2L3RydW5rPC9saW5rPlxuXG4nICsKLSAgICAnICAgICAgPGd1
aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85
MjI1Ni90cnVuazwvZ3VpZD5cblxuJyArCi0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZn
dDtcblxuJyArCi0gICAgJ1N1cHBvcnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFu
ZCBFQm94U2l6aW5nLCB1c2UgaW4gQ1NTU3R5bGVTZWxlY3Rvci5cblxuJyArCi0gICAgJyZsdDth
IGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTY1NjU3IiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDto
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTcmbHQ7L2EmZ3Q7XG5c
bicgKwotICAgICcmbHQ7L3AmZ3Q7XG5cbicgKwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAg
J1Jldmlld2VkIGJ5IFNpbW9uIEZyYXNlci5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyAr
Ci0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jpbmcg
b25seS5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4n
ICsKLSAgICAnKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oOlxuXG4nICsKLSAgICAn
KFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6XG5cbicgKwot
ICAgICdJbXBsZW1lbnQgY2FzdCBmcm9tIEVCb3hTaXppbmcuXG4nICsKLSAgICAnKFdlYkNvcmU6
OkNTU1ByaW1pdGl2ZVZhbHVlOjpvcGVyYXRvciBFQm94U2l6aW5nKTpcbicgKwotICAgICdJbXBs
ZW1lbnQgY2FzdCB0byBFQm94U2l6aW5nLlxuJyArCi0gICAgJyogY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwOlxuJyArCi0gICAgJyhXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3Bl
cnR5KTpcbicgKwotICAgICdVc2UgYXBwcm9wcmlhdGUgbWFjcm8gdG8gc2ltcGxpZnkgY29kZSB1
c2luZyBjYXN0LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9u
PlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAg
ICA8L2l0ZW0+XG4nICsKLSAgICAnIDwvY2hhbm5lbD5cbicgKwotICAgICc8L3Jzcz5cbicKLQot
dGVzdCgicmViYXNlbGluZVF1ZXVlIiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHF1ZXVlID0g
bW9kZWwudGFrZVJlYmFzZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwot
ICAgIG1vZGVsLnF1ZXVlRm9yUmViYXNlbGluZSgnZmFpbHVyZUluZm8xJyk7Ci0gICAgbW9kZWwu
cXVldWVGb3JSZWJhc2VsaW5lKCdmYWlsdXJlSW5mbzInKTsKLSAgICB2YXIgcXVldWUgPSBtb2Rl
bC50YWtlUmViYXNlbGluZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1ZXVlLCBbJ2ZhaWx1cmVJ
bmZvMScsICdmYWlsdXJlSW5mbzInXSk7Ci0gICAgdmFyIHF1ZXVlID0gbW9kZWwudGFrZVJlYmFz
ZWxpbmVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChxdWV1ZSwgW10pOwotfSk7Ci0KLXRlc3QoInJl
YmFzZWxpbmVRdWV1ZSIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciBxdWV1ZSA9IG1vZGVsLnRh
a2VFeHBlY3RhdGlvblVwZGF0ZVF1ZXVlKCk7Ci0gICAgZGVlcEVxdWFsKHF1ZXVlLCBbXSk7Ci0g
ICAgbW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUluZm8xJyk7Ci0gICAg
bW9kZWwucXVldWVGb3JFeHBlY3RhdGlvblVwZGF0ZSgnZmFpbHVyZUluZm8yJyk7Ci0gICAgdmFy
IHF1ZXVlID0gbW9kZWwudGFrZUV4cGVjdGF0aW9uVXBkYXRlUXVldWUoKTsKLSAgICBkZWVwRXF1
YWwocXVldWUsIFsnZmFpbHVyZUluZm8xJywgJ2ZhaWx1cmVJbmZvMiddKTsKLSAgICB2YXIgcXVl
dWUgPSBtb2RlbC50YWtlRXhwZWN0YXRpb25VcGRhdGVRdWV1ZSgpOwotICAgIGRlZXBFcXVhbChx
dWV1ZSwgW10pOwotfSk7Ci0KLXRlc3QoInVwZGF0ZVJlY2VudENvbW1pdHMiLCAyLCBmdW5jdGlv
bigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdvcmtTaW11bGF0b3IoKTsKLQotICAg
IHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAg
c2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIg
cGFyc2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0g
cGFyc2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlv
bi94bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7
Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICBt
b2RlbC51cGRhdGVSZWNlbnRDb21taXRzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgdmFyIHJl
Y2VudENvbW1pdHMgPSBtb2RlbC5zdGF0ZS5yZWNlbnRDb21taXRzOwotICAgICAgICAgICAgZGVs
ZXRlIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAgICAgICAgICAkLmVhY2gocmVjZW50
Q29tbWl0cywgZnVuY3Rpb24oaW5kZXgsIGNvbW1pdERhdGEpIHsKLSAgICAgICAgICAgICAgICBk
ZWxldGUgY29tbWl0RGF0YS5tZXNzYWdlOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBk
ZWVwRXF1YWwocmVjZW50Q29tbWl0cywgW3sKLSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiA5
MjI1OSwKLSAgICAgICAgICAgICAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIyNTk6IFVucmV2aWV3
ZWQsIHJldmVydGluZyByOTIyNTYuXG5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85
MjI1NiAuLi4iLAotICAgICAgICAgICAgICAgICJ0aW1lIjogIldlZCwgMDMgQXVnIDIwMTEgMDQ6
MjY6NTIgR01UIiwKLSAgICAgICAgICAgICAgICAic3VtbWFyeSI6ICJVbnJldmlld2VkLCByZXZl
cnRpbmcgcjkyMjU2LiIsCi0gICAgICAgICAgICAgICAgImF1dGhvciI6ICJTaGVyaWZmIEJvdCIs
Ci0gICAgICAgICAgICAgICAgInJldmlld2VyIjogbnVsbCwKLSAgICAgICAgICAgICAgICAiYnVn
SUQiOiA2NTU5MywKLSAgICAgICAgICAgICAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IDkyMjU2Ci0g
ICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6IDkyMjU2LAotICAg
ICAgICAgICAgICAgICJ0aXRsZSI6ICJSZXZpc2lvbiA5MjI1NjogU3VwcG9ydCBjYXN0IGJldHdl
ZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVzZSBpbiAuLi4iLAotICAgICAg
ICAgICAgICAgICJ0aW1lIjogIlRodSwgMDQgQXVnIDIwMTEgMDI6MDk6MTkgR01UIiwKLSAgICAg
ICAgICAgICAgICAic3VtbWFyeSI6ICJTdXBwb3J0IGNhc3QgYmV0d2VlbiBDU1NQcmltaXRpdmVW
YWx1ZSBhbmQgRUJveFNpemluZywgdXNlIGluIENTU1N0eWxlU2VsZWN0b3IuIiwKLSAgICAgICAg
ICAgICAgICAiYXV0aG9yIjogIm1hY3BoZXJzb25AY2hyb21pdW0ub3JnIiwKLSAgICAgICAgICAg
ICAgICAicmV2aWV3ZXIiOiAiU2ltb24gRnJhc2VyIiwKLSAgICAgICAgICAgICAgICAiYnVnSUQi
OiA2NTY1NywKLSAgICAgICAgICAgICAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6IHVuZGVmaW5lZCwK
LSAgICAgICAgICAgICAgICAid2FzUmV2ZXJ0ZWQiOiB0cnVlCi0gICAgICAgICAgICB9XSk7Ci0g
ICAgICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImNvbW1pdERhdGFMaXN0Rm9yUmV2aXNp
b25SYW5nZSIsIDYsIGZ1bmN0aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29y
a1NpbXVsYXRvcigpOwotCi0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigp
IHsKLSAgICAgICAgICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAg
ICB2YXIgcmVzcG9uc2VET00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0
RGF0YVhNTCwgImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9u
c2VET00pOwotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIG1vZGVsLnVwZGF0ZVJlY2VudENvbW1pdHMoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICBmdW5jdGlvbiBleHRyYWN0QnVnSURzKGNvbW1pdERhdGEpCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbW1pdERhdGEuYnVnSUQ7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21taXREYXRhTGlzdEZvclJl
dmlzaW9uUmFuZ2UoOTIyNTksIDkyMjU5KS5tYXAoZXh0cmFjdEJ1Z0lEcyksIFs2NTU5M10pOwot
ICAgICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5n
ZSg5MjI1NiwgOTIyNTkpLm1hcChleHRyYWN0QnVnSURzKSwgWzY1NjU3LCA2NTU5M10pOwotICAg
ICAgICAgICAgZGVlcEVxdWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSg5
MjI1OSwgOTIyNTYpLm1hcChleHRyYWN0QnVnSURzKSwgW10pOwotICAgICAgICAgICAgZGVlcEVx
dWFsKG1vZGVsLmNvbW1pdERhdGFMaXN0Rm9yUmV2aXNpb25SYW5nZSgwLCA5MjI1NikubWFwKGV4
dHJhY3RCdWdJRHMpLCBbNjU2NTddKTsKLSAgICAgICAgICAgIGRlZXBFcXVhbChtb2RlbC5jb21t
aXREYXRhTGlzdEZvclJldmlzaW9uUmFuZ2UoOTIyNTYsIDApLm1hcChleHRyYWN0QnVnSURzKSwg
W10pOwotICAgICAgICAgICAgZGVsZXRlIG1vZGVsLnN0YXRlLnJlY2VudENvbW1pdHM7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lv
biIsIDMsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1vY2sgPSBtb2RlbC5zdGF0ZS5yZXN1bHRz
QnlCdWlsZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAg
ICdNci4gQmVhc2xleSc6IHtyZXZpc2lvbjogJzUnfSwKLSAgICAgICAgJ01yIERpeG9uJzoge3Jl
dmlzaW9uOiAnMSd9LAotICAgICAgICAnTXIuIFNhYmF0aW5pJzoge3JldmlzaW9uOiAnNCd9LAot
ICAgICAgICAnQm9iJzoge3JldmlzaW9uOiAnNid9Ci0gICAgfTsKLSAgICBkZWVwRXF1YWwobW9k
ZWwuYnVpbGRlcnNJbkZsaWdodEZvclJldmlzaW9uKDEpLCB7fSk7Ci0gICAgZGVlcEVxdWFsKG1v
ZGVsLmJ1aWxkZXJzSW5GbGlnaHRGb3JSZXZpc2lvbigzKSwgewotICAgICAgIk1yIERpeG9uIjog
ewotICAgICAgICAiYWN0dWFsIjogIkJVSUxESU5HIgotICAgICAgfQotICAgIH0pOwotICAgIGRl
ZXBFcXVhbChtb2RlbC5idWlsZGVyc0luRmxpZ2h0Rm9yUmV2aXNpb24oMTApLCB7Ci0gICAgICAi
TXIuIEJlYXNsZXkiOiB7Ci0gICAgICAgICJhY3R1YWwiOiAiQlVJTERJTkciCi0gICAgICB9LAot
ICAgICAgIk1yIERpeG9uIjogewotICAgICAgICAiYWN0dWFsIjogIkJVSUxESU5HIgotICAgICAg
fSwKLSAgICAgICJNci4gU2FiYXRpbmkiOiB7Ci0gICAgICAgICJhY3R1YWwiOiAiQlVJTERJTkci
Ci0gICAgICB9LAotICAgICAgIkJvYiI6IHsKLSAgICAgICAgImFjdHVhbCI6ICJCVUlMRElORyIK
LSAgICAgIH0KLSAgICB9KTsKLSAgICBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlCdWlsZGVyID0gdW5t
b2NrOwotfSk7Ci0KLXRlc3QoImxhdGVzdFJldmlzaW9uV2l0aE5vQnVpbGRlcnNJbkZsaWdodCIs
IDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bm1vY2sgPSBtb2RlbC5zdGF0ZS5yZXN1bHRzQnlC
dWlsZGVyOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1aWxkZXIgPSB7Ci0gICAgICAgICdN
ci4gQmVhc2xleSc6IHsgfSwKLSAgICAgICAgJ01yIERpeG9uJzoge3JldmlzaW9uOiAnMid9LAot
ICAgICAgICAnTXIuIFNhYmF0aW5pJzoge3JldmlzaW9uOiAnNCd9LAotICAgICAgICAnQm9iJzog
e3JldmlzaW9uOiAnNid9Ci0gICAgfTsKLSAgICBlcXVhbHMobW9kZWwubGF0ZXN0UmV2aXNpb25X
aXRoTm9CdWlsZGVyc0luRmxpZ2h0KCksIDIpOwotICAgIG1vZGVsLnN0YXRlLnJlc3VsdHNCeUJ1
aWxkZXIgPSB1bm1vY2s7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL25ldC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9uZXQuanMJ
KHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldC5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDk3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIG5ldCA9IG5ldCB8
fCB7fTsKLQotKGZ1bmN0aW9uICgpIHsKLQotLy8gRklYTUU6IEV4Y2lzZSB0aGlzIGxhc3QgYml0
IG9mIGpxdWVyeSBhamF4IGNvZGUuCi0vLyBUaGVyZSBhcmUgY2FsbGVycyB0aGF0IGRlcGVuZCBv
biBhdXRvbWF0aWNhbGx5IHBhcnNpbmcgdGhlIGNvbnRlbnQgYXMgSlNPTiBvciBYTUwKLS8vIGJh
c2VkIG9mZiB0aGUgY29udGVudC10eXBlLiBJbnN0ZWFkIHdlIHNob3VsZCBhZGQgbmV0Lmpzb24g
YW5kIG5ldC54bWwgZm9yIHRob3NlIGNhc2VzLgotbmV0LmdldCA9IGZ1bmN0aW9uKHVybCwgc3Vj
Y2VzcykKLXsKLSAgICAkLmdldCh1cmwsIHN1Y2Nlc3MpOwotfTsKLQotbmV0LmFqYXggPSBmdW5j
dGlvbihvcHRpb25zKQotewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKLSAg
ICB2YXIgbWV0aG9kID0gb3B0aW9ucy50eXBlIHx8ICdHRVQnOwotICAgIHZhciBhc3luYyA9IHRy
dWU7Ci0gICAgeGhyLm9wZW4obWV0aG9kLCBvcHRpb25zLnVybCwgYXN5bmMpOwotICAgIHhoci5v
bmxvYWQgPSBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHhoci5zdGF0dXMgPT0gMjAwICYmIG9w
dGlvbnMuc3VjY2VzcykKLSAgICAgICAgICAgIG9wdGlvbnMuc3VjY2Vzcyh4aHIucmVzcG9uc2VU
ZXh0KTsKLSAgICAgICAgZWxzZSBpZiAoeGhyLnN0YXR1cyAhPSAyMDAgJiYgb3B0aW9ucy5lcnJv
cikKLSAgICAgICAgICAgIG9wdGlvbnMuZXJyb3IoKTsKLSAgICB9OwotICAgIHhoci5vbmVycm9y
ID0gZnVuY3Rpb24oKSB7Ci0gICAgICAgIGlmIChvcHRpb25zLmVycm9yKQotICAgICAgICAgICAg
b3B0aW9ucy5lcnJvcigpOwotICAgIH07Ci0gICAgdmFyIGRhdGEgPSBvcHRpb25zLmRhdGEgfHwg
bnVsbDsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIoImNvbnRl
bnQtdHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpOwotICAgIHhoci5z
ZW5kKGRhdGEpOwotfTsKLQotbmV0LnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIHN1Y2Nlc3Mp
Ci17Ci0gICAgbmV0LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ1BP
U1QnLAotICAgICAgICBkYXRhOiBkYXRhLAotICAgICAgICBzdWNjZXNzOiBzdWNjZXNzLAotICAg
IH0pOwotCi19OwotCi1uZXQucHJvYmUgPSBmdW5jdGlvbih1cmwsIG9wdGlvbnMpCi17Ci0gICAg
bmV0LmFqYXgoewotICAgICAgICB1cmw6IHVybCwKLSAgICAgICAgdHlwZTogJ0hFQUQnLAotICAg
ICAgICBzdWNjZXNzOiBvcHRpb25zLnN1Y2Nlc3MsCi0gICAgICAgIGVycm9yOiBvcHRpb25zLmVy
cm9yLAotICAgIH0pOwotfTsKLQotLy8gV2UgdXNlIFhNTEh0dHBSZXF1ZXN0IGFuZCBDT1JTIHRv
IGZldGNoIEpTT05QIHJhdGhlciB0aGFuIHVzaW5nIHNjcmlwdCB0YWdzLgotLy8gVGhhdCdzIGJl
dHRlciBmb3Igc2VjdXJpdHkgYW5kIHBlcmZvcm1hbmNlLCBidXQgd2UgbmVlZCB0aGUgc2VydmVy
IHRvIGNvb3BlcmF0ZQotLy8gYnkgc2V0dGluZyBDT1JTIGhlYWRlcnMuCi1uZXQuanNvbnAgPSBm
dW5jdGlvbih1cmwsIGNhbGxiYWNrKQotewotICAgIG5ldC5hamF4KHsKLSAgICAgICAgdXJsOiB1
cmwsCi0gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKGpzb25wKSB7Ci0gICAgICAgICAgICBjYWxs
YmFjayhiYXNlLnBhcnNlSlNPTlAoanNvbnApKTsKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6
IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soe30pOwotICAgICAgICB9LAotICAg
IH0pOwotfTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL25ldF91bml0
dGVzdHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0X3VuaXR0
ZXN0cy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvbmV0
X3VuaXR0ZXN0cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotLy8gRXhwb3J0IE5ldHdvcmtTaW11bGF0b3IgZm9yIHVzZSBieSBvdGhlciB1bml0dGVzdHMu
Ci1mdW5jdGlvbiBOZXR3b3JrU2ltdWxhdG9yKCkKLXsKLSAgICB0aGlzLl9wZW5kaW5nQ2FsbGJh
Y2tzID0gW107Ci19OwotCi1OZXR3b3JrU2ltdWxhdG9yLnByb3RvdHlwZS5zY2hlZHVsZUNhbGxi
YWNrID0gZnVuY3Rpb24oY2FsbGJhY2spCi17Ci0gICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcy5w
dXNoKGNhbGxiYWNrKTsKLX07Ci0KLU5ldHdvcmtTaW11bGF0b3IucHJvdG90eXBlLnJ1blRlc3Qg
PSBmdW5jdGlvbih0ZXN0Q2FzZSkKLXsKLSAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgdmFyIHJl
YWxOZXQgPSB3aW5kb3cubmV0OwotCi0gICAgd2luZG93Lm5ldCA9IHt9OwotICAgIGlmIChzZWxm
LnByb2JlKQotICAgICAgICBuZXQucHJvYmUgPSBzZWxmLnByb2JlOwotICAgIGlmIChzZWxmLmpz
b25wKQotICAgICAgICBuZXQuanNvbnAgPSBzZWxmLmpzb25wOwotICAgIGlmIChzZWxmLmdldCkK
LSAgICAgICAgbmV0LmdldCA9IHNlbGYuZ2V0OwotICAgIGlmIChzZWxmLnBvc3QpCi0gICAgICAg
IG5ldC5wb3N0ID0gc2VsZi5wb3N0OwotICAgIGlmIChzZWxmLmFqYXgpCi0gICAgICAgIG5ldC5h
amF4ID0gc2VsZi5hamF4OwotCi0gICAgdGVzdENhc2UoKTsKLQotICAgIHdoaWxlICh0aGlzLl9w
ZW5kaW5nQ2FsbGJhY2tzLmxlbmd0aCkgewotICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9w
ZW5kaW5nQ2FsbGJhY2tzLnNoaWZ0KCk7Ci0gICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgfQotCi0g
ICAgd2luZG93Lm5ldCA9IHJlYWxOZXQ7Ci0gICAgZXF1YWwod2luZG93Lm5ldCwgcmVhbE5ldCwg
IkZhaWxlZCB0byByZXN0b3JlIHJlYWwgYmFzZSEiKTsKLX07Ci0KLShmdW5jdGlvbiAoKSB7Ci0K
LW1vZHVsZSgibmV0Iik7Ci0KLS8vIE5vIHVuaXQgdGVzdHMgeWV0IQotCi19KSgpOwpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvcGl4ZWx6b29tZXIuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvcGl4ZWx6b29tZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3BpeGVsem9vbWVyLmpzCShub25leGlzdGVudCkKQEAg
LTEsMTY4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLy8gcGl4ZWx6b29tZXIgaXMgc2hhcmVkIHdp
dGggTGF5b3V0VGVzdHMvZmFzdC9oYXJuZXNzL3Jlc3VsdHMuaHRtbAotLy8gVW5mb3J0dWFudGVs
eSwgdGhlcmUncyBubyBnb29kIHdheSB0byBzaGFyZSBjb2RlIGJldHdlZW4gdGhlc2UgdHdvIHVz
ZXMuCi0KLXZhciBwaXhlbHpvb21lciA9IHBpeGVsem9vbWVyIHx8IHt9OwotCi0oZnVuY3Rpb24o
KSB7Ci0KLXZhciBrWm9vbUZhY3RvciA9IDY7Ci12YXIga0RlbGF5VGltZW91dE1TID0gNDAwOwot
Ci12YXIga1Jlc3VsdFdpZHRoID0gODAwOwotdmFyIGtSZXN1bHRIZWlnaHQgPSA2MDA7Ci0KLXZh
ciBrWm9vbWVkUmVzdWx0V2lkdGggPSBrUmVzdWx0V2lkdGggKiBrWm9vbUZhY3RvcjsKLXZhciBr
Wm9vbWVkUmVzdWx0SGVpZ2h0ID0ga1Jlc3VsdEhlaWdodCAqIGtab29tRmFjdG9yOwotCi1mdW5j
dGlvbiBtYXRjaGVzU2VsZWN0b3Iobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgaWYgKG5vZGUud2Vi
a2l0TWF0Y2hlc1NlbGVjdG9yKQotICAgICAgICByZXR1cm4gbm9kZS53ZWJraXRNYXRjaGVzU2Vs
ZWN0b3Ioc2VsZWN0b3IpOwotCi0gICAgaWYgKG5vZGUubW96TWF0Y2hlc1NlbGVjdG9yKQotICAg
ICAgICByZXR1cm4gbm9kZS5tb3pNYXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOwotfQotCi1mdW5j
dGlvbiBwYXJlbnRPZlR5cGUobm9kZSwgc2VsZWN0b3IpCi17Ci0gICAgd2hpbGUgKG5vZGUgPSBu
b2RlLnBhcmVudE5vZGUpIHsKLSAgICAgICAgaWYgKG1hdGNoZXNTZWxlY3Rvcihub2RlLCBzZWxl
Y3RvcikpCi0gICAgICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0gICAgcmV0dXJuIG51bGw7
Ci19Ci0KLWZ1bmN0aW9uIHpvb21JbWFnZUNvbnRhaW5lcih1cmwpCi17Ci0gICAgdmFyIGNvbnRh
aW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRhaW5lci5jbGFz
c05hbWUgPSAnem9vbS1pbWFnZS1jb250YWluZXInOwotCi0gICAgdmFyIHRpdGxlID0gdXJsLm1h
dGNoKC9cLShbXlwtXSopXC5wbmcvKVsxXTsKLSAgICAKLSAgICB2YXIgbGFiZWwgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBsYWJlbC5jbGFzc05hbWUgPSAnbGFiZWwnOwot
ICAgIGxhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRpdGxlKSk7Ci0g
ICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGxhYmVsKTsKLQotICAgIHZhciBpbWFnZUNvbnRhaW5l
ciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGltYWdlQ29udGFpbmVyLmNs
YXNzTmFtZSA9ICdzY2FsZWQtaW1hZ2UtY29udGFpbmVyJzsKLQotICAgIHZhciBpbWFnZSA9IG5l
dyBJbWFnZSgpOwotICAgIGltYWdlLnNyYyA9IHVybDsKLSAgICBpbWFnZS5zdHlsZS53aWR0aCA9
IGtab29tZWRSZXN1bHRXaWR0aCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuaGVpZ2h0ID0ga1pv
b21lZFJlc3VsdEhlaWdodCArICdweCc7Ci0gICAgaW1hZ2Uuc3R5bGUuYm9yZGVyID0gJzFweCBz
b2xpZCBibGFjayc7Ci0gICAgaW1hZ2VDb250YWluZXIuYXBwZW5kQ2hpbGQoaW1hZ2UpOwotICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChpbWFnZUNvbnRhaW5lcik7Ci0KLSAgICByZXR1cm4gY29u
dGFpbmVyOwotfQotCi1mdW5jdGlvbiBjcmVhdGVDb250YWluZXIoZSkKLXsKLSAgICB2YXIgdGJv
ZHkgPSBwYXJlbnRPZlR5cGUoZS50YXJnZXQsICd0Ym9keScpOwotICAgIHZhciByb3cgPSB0Ym9k
eS5xdWVyeVNlbGVjdG9yKCd0cicpOwotICAgIHZhciBpbWFnZXMgPSByb3cucXVlcnlTZWxlY3Rv
ckFsbCgnaW1nW3NyYyQ9Ii5wbmciXScpOwotCi0gICAgdmFyIGNvbnRhaW5lciA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwotICAgIGNvbnRhaW5lci5jbGFzc05hbWUgPSAncGl4ZWwt
em9vbS1jb250YWluZXInOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbWFnZXMubGVuZ3Ro
OyBpKyspCi0gICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZCh6b29tSW1hZ2VDb250YWluZXIo
aW1hZ2VzW2ldLnNyYykpOwotCi0gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWlu
ZXIpOwotICAgIGRyYXdBbGwoKTsKLX0KLQotZnVuY3Rpb24gZHJhdyhpbWFnZUNvbnRhaW5lcikK
LXsKLSAgICB2YXIgaW1hZ2UgPSBpbWFnZUNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCdpbWcnKTsK
LSAgICB2YXIgY29udGFpbmVyQm91bmRzID0gaW1hZ2VDb250YWluZXIuZ2V0Qm91bmRpbmdDbGll
bnRSZWN0KCk7Ci0gICAgaW1hZ2Uuc3R5bGUubGVmdCA9IChjb250YWluZXJCb3VuZHMud2lkdGgg
LyAyIC0gcGl4ZWx6b29tZXIuX3BlcmNlbnRYICoga1pvb21lZFJlc3VsdFdpZHRoKSArICdweCc7
Ci0gICAgaW1hZ2Uuc3R5bGUudG9wID0gKGNvbnRhaW5lckJvdW5kcy5oZWlnaHQgLyAyIC0gcGl4
ZWx6b29tZXIuX3BlcmNlbnRZICoga1pvb21lZFJlc3VsdEhlaWdodCkgKyAncHgnOwotfQotCi1m
dW5jdGlvbiBkcmF3QWxsKCkKLXsKLSAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5waXhlbC16b29tLWNvbnRhaW5lciAuc2NhbGVkLWlt
YWdlLWNvbnRhaW5lcicpLCBkcmF3KTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlTW91c2VPdXQoZSkK
LXsKLSAgICBpZiAoZS5yZWxhdGVkVGFyZ2V0ICYmIGUucmVsYXRlZFRhcmdldC50YWdOYW1lICE9
ICdJRlJBTUUnKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBJZiBlLnJlbGF0ZWRUYXJnZXQg
aXMgbnVsbCwgd2UndmUgbW91c2VkIG91dCBvZiB0aGUgZG9jdW1lbnQuCi0gICAgJCgncGl4ZWwt
em9vbS1jb250YWluZXInKS5kZXRhY2goKTsKLX0KLQotZnVuY3Rpb24gaGFuZGxlTW91c2VNb3Zl
KGUpCi17Ci0gICAgaWYgKHBpeGVsem9vbWVyLl9tb3VzZU1vdmVUaW1lb3V0KQotICAgICAgICBj
bGVhclRpbWVvdXQocGl4ZWx6b29tZXIuX21vdXNlTW92ZVRpbWVvdXQpOwotCi0gICAgaWYgKHBh
cmVudE9mVHlwZShlLnRhcmdldCwgJy5waXhlbC16b29tLWNvbnRhaW5lcicpKQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICB2YXIgY29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBp
eGVsLXpvb20tY29udGFpbmVyJyk7Ci0KLSAgICB2YXIgcmVzdWx0Q29udGFpbmVyID0gKGUudGFy
Z2V0LmNsYXNzTmFtZSA9PSAncmVzdWx0LWNvbnRhaW5lcicpID8KLSAgICAgICAgZS50YXJnZXQg
OiBwYXJlbnRPZlR5cGUoZS50YXJnZXQsICcucmVzdWx0LWNvbnRhaW5lcicpOwotICAgIGlmICgh
cmVzdWx0Q29udGFpbmVyIHx8ICFyZXN1bHRDb250YWluZXIucXVlcnlTZWxlY3RvcignaW1nJykp
IHsKLSAgICAgICAgJChjb250YWluZXIpLmRldGFjaCgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgdmFyIHRhcmdldExvY2F0aW9uID0gZS50YXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRS
ZWN0KCk7Ci0gICAgcGl4ZWx6b29tZXIuX3BlcmNlbnRYID0gKGUuY2xpZW50WCAtIHRhcmdldExv
Y2F0aW9uLmxlZnQpIC8gdGFyZ2V0TG9jYXRpb24ud2lkdGg7Ci0gICAgcGl4ZWx6b29tZXIuX3Bl
cmNlbnRZID0gKGUuY2xpZW50WSAtIHRhcmdldExvY2F0aW9uLnRvcCkgLyB0YXJnZXRMb2NhdGlv
bi5oZWlnaHQ7Ci0KLSAgICBpZiAoIWNvbnRhaW5lcikgewotICAgICAgICBpZiAocGl4ZWx6b29t
ZXIuc2hvd09uRGVsYXkpIHsKLSAgICAgICAgICAgIHBpeGVsem9vbWVyLl9tb3VzZU1vdmVUaW1l
b3V0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBjcmVhdGVDb250
YWluZXIoZSk7Ci0gICAgICAgICAgICB9LCBrRGVsYXlUaW1lb3V0TVMpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgY3JlYXRlQ29udGFpbmVyKGUpOwotICAgICAg
ICByZXR1cm47Ci0gICAgfQotCi0gICAgZHJhd0FsbCgpOwotfQotCi1waXhlbHpvb21lci5zaG93
T25EZWxheSA9IHRydWU7Ci0KLXBpeGVsem9vbWVyLmluc3RhbGxFdmVudExpc3RlbmVycyA9IGZ1
bmN0aW9uKCkKLXsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBo
YW5kbGVNb3VzZU1vdmUsIGZhbHNlKTsKLSAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdt
b3VzZW91dCcsIGhhbmRsZU1vdXNlT3V0LCBmYWxzZSk7Ci19OwotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9yZXN1bHRzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvc2NyaXB0cy9yZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsNjc5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotdmFyIHJlc3VsdHMgPSByZXN1bHRzIHx8IHt9OwotCi0oZnVuY3Rpb24o
KSB7Ci0KLXZhciBrUmVzdWx0c05hbWUgPSAnZnVsbF9yZXN1bHRzLmpzb24nOwotCi12YXIga0J1
aWxkTGlua1JlZ2V4cCA9IC9hIGhyZWY9IlxkK1wvIi9nOwotdmFyIGtCdWlsZE51bWJlclJlZ2V4
cCA9IC9cZCsvOwotCi12YXIgUEFTUyA9ICdQQVNTJzsKLXZhciBUSU1FT1VUID0gJ1RJTUVPVVQn
OwotdmFyIFRFWFQgPSAnVEVYVCc7Ci12YXIgQ1JBU0ggPSAnQ1JBU0gnOwotdmFyIElNQUdFID0g
J0lNQUdFJzsKLXZhciBJTUFHRV9URVhUID0gJ0lNQUdFK1RFWFQnOwotdmFyIEFVRElPID0gJ0FV
RElPJzsKLXZhciBNSVNTSU5HID0gJ01JU1NJTkcnOwotCi12YXIga0ZhaWxpbmdSZXN1bHRzID0g
W1RFWFQsIElNQUdFX1RFWFQsIEFVRElPXTsKLQotdmFyIGtFeHBlY3RlZEltYWdlU3VmZml4ID0g
Jy1leHBlY3RlZC5wbmcnOwotdmFyIGtBY3R1YWxJbWFnZVN1ZmZpeCA9ICctYWN0dWFsLnBuZyc7
Ci12YXIga0ltYWdlRGlmZlN1ZmZpeCA9ICctZGlmZi5wbmcnOwotdmFyIGtFeHBlY3RlZEF1ZGlv
U3VmZml4ID0gJy1leHBlY3RlZC53YXYnOwotdmFyIGtBY3R1YWxBdWRpb1N1ZmZpeCA9ICctYWN0
dWFsLndhdic7Ci12YXIga0V4cGVjdGVkVGV4dFN1ZmZpeCA9ICctZXhwZWN0ZWQudHh0JzsKLXZh
ciBrQWN0dWFsVGV4dFN1ZmZpeCA9ICctYWN0dWFsLnR4dCc7Ci12YXIga0RpZmZUZXh0U3VmZml4
ID0gJy1kaWZmLnR4dCc7Ci12YXIga0NyYXNoTG9nU3VmZml4ID0gJy1jcmFzaC1sb2cudHh0JzsK
LQotdmFyIGtQTkdFeHRlbnNpb24gPSAncG5nJzsKLXZhciBrVFhURXh0ZW5zaW9uID0gJ3R4dCc7
Ci12YXIga1dBVkV4dGVuc2lvbiA9ICd3YXYnOwotCi12YXIga1ByZWZlcnJlZFN1ZmZpeE9yZGVy
ID0gWwotICAgIGtFeHBlY3RlZEltYWdlU3VmZml4LAotICAgIGtBY3R1YWxJbWFnZVN1ZmZpeCwK
LSAgICBrSW1hZ2VEaWZmU3VmZml4LAotICAgIGtFeHBlY3RlZFRleHRTdWZmaXgsCi0gICAga0Fj
dHVhbFRleHRTdWZmaXgsCi0gICAga0RpZmZUZXh0U3VmZml4LAotICAgIGtDcmFzaExvZ1N1ZmZp
eCwKLSAgICBrRXhwZWN0ZWRBdWRpb1N1ZmZpeCwKLSAgICBrQWN0dWFsQXVkaW9TdWZmaXgsCi0g
ICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0aGUgcmVzdWx0IHR5cGVz
LgotXTsKLQotLy8gS2luZHMgb2YgcmVzdWx0cy4KLXJlc3VsdHMua0FjdHVhbEtpbmQgPSAnYWN0
dWFsJzsKLXJlc3VsdHMua0V4cGVjdGVkS2luZCA9ICdleHBlY3RlZCc7Ci1yZXN1bHRzLmtEaWZm
S2luZCA9ICdkaWZmJzsKLXJlc3VsdHMua1Vua25vd25LaW5kID0gJ3Vua25vd24nOwotCi0vLyBU
eXBlcyBvZiB0ZXN0cy4KLXJlc3VsdHMua0ltYWdlVHlwZSA9ICdpbWFnZScKLXJlc3VsdHMua0F1
ZGlvVHlwZSA9ICdhdWRpbycKLXJlc3VsdHMua1RleHRUeXBlID0gJ3RleHQnCi0vLyBGSVhNRTog
VGhlcmUgYXJlIG1vcmUgdHlwZXMgb2YgdGVzdHMuCi0KLWZ1bmN0aW9uIGxheW91dFRlc3RSZXN1
bHRzVVJMKHBsYXRmb3JtKQotewotICAgIHJldHVybiBjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9y
bV0ubGF5b3V0VGVzdFJlc3VsdHNVUkw7Ci19Ci0KLWZ1bmN0aW9uIHBvc3NpYmxlU3VmZml4TGlz
dEZvcihmYWlsdXJlVHlwZUxpc3QpCi17Ci0gICAgdmFyIHN1ZmZpeExpc3QgPSBbXTsKLQotICAg
IGZ1bmN0aW9uIHB1c2hJbWFnZVN1ZmZpeGVzKCkKLSAgICB7Ci0gICAgICAgIHN1ZmZpeExpc3Qu
cHVzaChrRXhwZWN0ZWRJbWFnZVN1ZmZpeCk7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrQWN0
dWFsSW1hZ2VTdWZmaXgpOwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0ltYWdlRGlmZlN1ZmZp
eCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24gcHVzaEF1ZGlvU3VmZml4ZXMoKQotICAgIHsKLSAg
ICAgICAgc3VmZml4TGlzdC5wdXNoKGtFeHBlY3RlZEF1ZGlvU3VmZml4KTsKLSAgICAgICAgc3Vm
Zml4TGlzdC5wdXNoKGtBY3R1YWxBdWRpb1N1ZmZpeCk7Ci0gICAgfQotCi0gICAgZnVuY3Rpb24g
cHVzaFRleHRTdWZmaXhlcygpCi0gICAgewotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0FjdHVh
bFRleHRTdWZmaXgpOwotICAgICAgICBzdWZmaXhMaXN0LnB1c2goa0V4cGVjdGVkVGV4dFN1ZmZp
eCk7Ci0gICAgICAgIHN1ZmZpeExpc3QucHVzaChrRGlmZlRleHRTdWZmaXgpOwotICAgICAgICAv
LyAnLXdkaWZmLmh0bWwnLAotICAgICAgICAvLyAnLXByZXR0eS1kaWZmLmh0bWwnLAotICAgIH0K
LQotICAgICQuZWFjaChmYWlsdXJlVHlwZUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBmYWlsdXJlVHlw
ZSkgewotICAgICAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICAgICAgY2FzZSBJTUFHRToK
LSAgICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBURVhUOgotICAgICAgICAgICAgcHVzaFRleHRTdWZmaXhlcygpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQVVESU86Ci0gICAgICAgICAgICBwdXNoQXVkaW9T
dWZmaXhlcygpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSU1BR0VfVEVYVDoK
LSAgICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBwdXNoVGV4dFN1
ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDUkFTSDoKLSAgICAg
ICAgICAgIHN1ZmZpeExpc3QucHVzaChrQ3Jhc2hMb2dTdWZmaXgpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgTUlTU0lORzoKLSAgICAgICAgICAgIHB1c2hJbWFnZVN1ZmZpeGVz
KCk7Ci0gICAgICAgICAgICBwdXNoVGV4dFN1ZmZpeGVzKCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3Ig
dGhlIHJlc3Qgb2YgdGhlIHJlc3VsdCB0eXBlcy4KLSAgICAgICAgICAgIC8vICctZXhwZWN0ZWQu
aHRtbCcsCi0gICAgICAgICAgICAvLyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAotICAgICAg
ICAgICAgLy8gLi4uIGFuZCBwb3NzaWJseSBtb3JlLgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICB9KTsKLQotICAgIHJldHVybiBiYXNlLnVuaXF1aWZ5QXJyYXkoc3VmZml4TGlz
dCk7Ci19Ci0KLXJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3QgPSBmdW5jdGlvbihm
YWlsdXJlVHlwZSkKLXsKLSAgICBzd2l0Y2goZmFpbHVyZVR5cGUpIHsKLSAgICBjYXNlIElNQUdF
OgotICAgICAgICByZXR1cm4gW2tQTkdFeHRlbnNpb25dOwotICAgIGNhc2UgQVVESU86Ci0gICAg
ICAgIHJldHVybiBba1dBVkV4dGVuc2lvbl07Ci0gICAgY2FzZSBURVhUOgotICAgICAgICByZXR1
cm4gW2tUWFRFeHRlbnNpb25dOwotICAgIGNhc2UgTUlTU0lORzoKLSAgICBjYXNlIElNQUdFX1RF
WFQ6Ci0gICAgICAgIHJldHVybiBba1RYVEV4dGVuc2lvbiwga1BOR0V4dGVuc2lvbl07Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciB0aGUgcmVzdCBvZiB0
aGUgcmVzdWx0IHR5cGVzLgotICAgICAgICAvLyAnLWV4cGVjdGVkLmh0bWwnLAotICAgICAgICAv
LyAnLWV4cGVjdGVkLW1pc21hdGNoLmh0bWwnLAotICAgICAgICAvLyAuLi4gYW5kIHBvc3NpYmx5
IG1vcmUuCi0gICAgICAgIHJldHVybiBbXTsKLSAgICB9Ci19OwotCi1yZXN1bHRzLmZhaWx1cmVU
eXBlTGlzdCA9IGZ1bmN0aW9uKGZhaWx1cmVCbG9iKQotewotICAgIHJldHVybiBmYWlsdXJlQmxv
Yi5zcGxpdCgnICcpOwotfTsKLQotcmVzdWx0cy5jYW5SZWJhc2VsaW5lID0gZnVuY3Rpb24oZmFp
bHVyZVR5cGVMaXN0KQotewotICAgIHJldHVybiBmYWlsdXJlVHlwZUxpc3Quc29tZShmdW5jdGlv
bihlbGVtZW50KSB7Ci0gICAgICAgIHJldHVybiByZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNp
b25MaXN0KGVsZW1lbnQpLmxlbmd0aCA+IDA7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmRpcmVj
dG9yeUZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKLXsKLSAgICByZXR1cm4gY29u
ZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0ucmVzdWx0c0RpcmVjdG9yeU5h
bWVGcm9tQnVpbGRlck5hbWUoYnVpbGRlck5hbWUpOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGly
ZWN0b3J5VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSkKLXsKLSAgICBpZiAoY29uZmlnLnVzZUxv
Y2FsUmVzdWx0cykKLSAgICAgICAgcmV0dXJuICcvbG9jYWxyZXN1bHQ/cGF0aD0nOwotICAgIHJl
dHVybiByZXN1bHRzRGlyZWN0b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpICsg
J3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy8nOwotfQotCi1mdW5jdGlvbiByZXN1bHRzRGly
ZWN0b3J5TGlzdGluZ1VSTChwbGF0Zm9ybSwgYnVpbGRlck5hbWUpCi17Ci0gICAgcmV0dXJuIGxh
eW91dFRlc3RSZXN1bHRzVVJMKHBsYXRmb3JtKSArICcvJyArIHJlc3VsdHMuZGlyZWN0b3J5Rm9y
QnVpbGRlcihidWlsZGVyTmFtZSkgKyAnLyc7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNEaXJlY3Rv
cnlVUkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCBy
ZXZpc2lvbikKLXsKLSAgICByZXR1cm4gcmVzdWx0c0RpcmVjdG9yeUxpc3RpbmdVUkwocGxhdGZv
cm0sIGJ1aWxkZXJOYW1lKSArIGNvbmZpZy5rUGxhdGZvcm1zW3BsYXRmb3JtXS5yZXN1bHRzRGly
ZWN0b3J5Rm9yQnVpbGROdW1iZXIoYnVpbGROdW1iZXIsIHJldmlzaW9uKSArICcvJzsKLX0KLQot
ZnVuY3Rpb24gcmVzdWx0c1N1bW1hcnlVUkwocGxhdGZvcm0sIGJ1aWxkZXJOYW1lKQotewotICAg
IHJldHVybiByZXN1bHRzRGlyZWN0b3J5VVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSkgKyBrUmVz
dWx0c05hbWU7Ci19Ci0KLWZ1bmN0aW9uIHJlc3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIo
cGxhdGZvcm0sIGJ1aWxkZXJOYW1lLCBidWlsZE51bWJlciwgcmV2aXNpb24pCi17Ci0gICAgcmV0
dXJuIHJlc3VsdHNEaXJlY3RvcnlVUkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5h
bWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbikgKyBrUmVzdWx0c05hbWU7Ci19Ci0KLXZhciBnX3Jl
c3VsdHNDYWNoZSA9IG5ldyBiYXNlLkFzeW5jaHJvbm91c0NhY2hlKGZ1bmN0aW9uIChrZXksIGNh
bGxiYWNrKSB7Ci0gICAgbmV0Lmpzb25wKGtleSwgY2FsbGJhY2spOwotfSk7Ci0KLXJlc3VsdHMu
UmVzdWx0QW5hbHl6ZXIgPSBiYXNlLmV4dGVuZHMoT2JqZWN0LCB7Ci0gICAgaW5pdDogZnVuY3Rp
b24ocmVzdWx0Tm9kZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2FjdHVhbCA9IHJlc3VsdE5vZGUg
PyByZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmFjdHVhbCkgOiBbXTsKLSAgICAg
ICAgdGhpcy5fZXhwZWN0ZWQgPSByZXN1bHROb2RlID8gdGhpcy5fYWRkSW1wbGllZEV4cGVjdGF0
aW9ucyhyZXN1bHRzLmZhaWx1cmVUeXBlTGlzdChyZXN1bHROb2RlLmV4cGVjdGVkKSkgOiBbXTsK
LSAgICAgICAgdGhpcy5fd29udGZpeCA9IHJlc3VsdE5vZGUgPyByZXN1bHROb2RlLndvbnRmaXgg
OiBmYWxzZTsKLSAgICB9LAotICAgIF9hZGRJbXBsaWVkRXhwZWN0YXRpb25zOiBmdW5jdGlvbihy
ZXN1bHRzTGlzdCkKLSAgICB7Ci0gICAgICAgIGlmIChyZXN1bHRzTGlzdC5pbmRleE9mKCdGQUlM
JykgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0c0xpc3Q7Ci0gICAgICAgIHJldHVy
biByZXN1bHRzTGlzdC5jb25jYXQoa0ZhaWxpbmdSZXN1bHRzKTsKLSAgICB9LAotICAgIF9oYXNQ
YXNzOiBmdW5jdGlvbihyZXN1bHRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMuaW5k
ZXhPZihQQVNTKSAhPSAtMTsKLSAgICB9LAotICAgIHVuZXhwZWN0ZWRSZXN1bHRzOiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmZpbHRlcihmdW5jdGlvbihy
ZXN1bHQpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9leHBlY3RlZC5pbmRleE9mKHJlc3Vs
dCkgPT0gLTE7Ci0gICAgICAgIH0sIHRoaXMpOwotICAgIH0sCi0gICAgc3VjY2VlZGVkOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5faGFzUGFzcyh0aGlzLl9hY3R1YWwp
OwotICAgIH0sCi0gICAgZXhwZWN0ZWRUb1N1Y2NlZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLl9oYXNQYXNzKHRoaXMuX2V4cGVjdGVkKTsKLSAgICB9LAotICAgIGZs
YWt5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fYWN0dWFsLmxlbmd0
aCA+IDE7Ci0gICAgfSwKLSAgICB3b250Zml4OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fd29udGZpeDsKLSAgICB9LAotICAgIGhhc1VuZXhwZWN0ZWRGYWlsdXJlczog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSB7fTsKLSAgICAgICAg
dGhpcy5fYWN0dWFsLmZvckVhY2goZnVuY3Rpb24oYWN0dWFsKSB7Ci0gICAgICAgICAgICBkaWZm
ZXJlbmNlW2FjdHVhbF0gPSBhY3R1YWwgIT09IFBBU1M7Ci0gICAgICAgIH0pOwotICAgICAgICB0
aGlzLl9leHBlY3RlZC5mb3JFYWNoKGZ1bmN0aW9uKGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICBp
ZiAoZXhwZWN0ZWQgIT09IFBBU1MpCi0gICAgICAgICAgICAgICAgZGVsZXRlIGRpZmZlcmVuY2Vb
ZXhwZWN0ZWRdOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGRpZmZl
cmVuY2UpLnNvbWUoZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICByZXR1cm4gZGlmZmVyZW5j
ZVtrZXldOwotICAgICAgICB9KTsKLSAgICB9Ci19KQotCi1mdW5jdGlvbiBpc0V4cGVjdGVkRmFp
bHVyZShyZXN1bHROb2RlKQotewotICAgIHZhciBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3Vs
dEFuYWx5emVyKHJlc3VsdE5vZGUpOwotICAgIHJldHVybiAhYW5hbHl6ZXIuaGFzVW5leHBlY3Rl
ZEZhaWx1cmVzKCkgJiYgIWFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgp
ICYmICFhbmFseXplci53b250Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzVW5leHBlY3RlZEZhaWx1
cmUocmVzdWx0Tm9kZSkKLXsKLSAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRB
bmFseXplcihyZXN1bHROb2RlKTsKLSAgICByZXR1cm4gYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZh
aWx1cmVzKCkgJiYgIWFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpICYm
ICFhbmFseXplci53b250Zml4KCk7Ci19Ci0KLWZ1bmN0aW9uIGlzUmVzdWx0Tm9kZShub2RlKQot
ewotICAgIHJldHVybiAhIW5vZGUuYWN0dWFsOwotfQotCi1yZXN1bHRzLmV4cGVjdGVkRmFpbHVy
ZXMgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSkKLXsKLSAgICByZXR1cm4gYmFzZS5maWx0ZXJUcmVl
KHJlc3VsdHNUcmVlLnRlc3RzLCBpc1Jlc3VsdE5vZGUsIGlzRXhwZWN0ZWRGYWlsdXJlKTsKLX07
Ci0KLXJlc3VsdHMudW5leHBlY3RlZEZhaWx1cmVzID0gZnVuY3Rpb24ocmVzdWx0c1RyZWUpCi17
Ci0gICAgcmV0dXJuIGJhc2UuZmlsdGVyVHJlZShyZXN1bHRzVHJlZS50ZXN0cywgaXNSZXN1bHRO
b2RlLCBpc1VuZXhwZWN0ZWRGYWlsdXJlKTsKLX07Ci0KLXJlc3VsdHMudW5leHBlY3RlZFN1Y2Nl
c3NlcyA9IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKQotewotICAgIHJldHVybiBiYXNlLmZpbHRlclRy
ZWUocmVzdWx0c1RyZWUudGVzdHMsIGlzUmVzdWx0Tm9kZSwgZnVuY3Rpb24ocmVzdWx0Tm9kZSkg
ewotICAgICAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1
bHROb2RlKTsKLSAgICAgICAgcmV0dXJuICFhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpICYm
IGFuYWx5emVyLnN1Y2NlZWRlZCgpICYmICFhbmFseXplci5mbGFreSgpOwotICAgIH0pOwotfTsK
LQotZnVuY3Rpb24gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWlsZGVyLCBmaWx0ZXIpCi17Ci0g
ICAgdmFyIHJlc3VsdHNCeVRlc3QgPSB7fTsKLQotICAgICQuZWFjaChyZXN1bHRzQnlCdWlsZGVy
LCBmdW5jdGlvbihidWlsZGVyTmFtZSwgcmVzdWx0c1RyZWUpIHsKLSAgICAgICAgJC5lYWNoKGZp
bHRlcihyZXN1bHRzVHJlZSksIGZ1bmN0aW9uKHRlc3ROYW1lLCByZXN1bHROb2RlKSB7Ci0gICAg
ICAgICAgICByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXSA9IHJlc3VsdHNCeVRlc3RbdGVzdE5hbWVd
IHx8IHt9OwotICAgICAgICAgICAgaWYgKCFjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVu
dFBsYXRmb3JtXS5oYXZlQnVpbGRlckFjY3VtdWxhdGVkUmVzdWx0cykKLSAgICAgICAgICAgICAg
ICByZXN1bHROb2RlLl9idWlsZExvY2F0aW9uID0gcmVzdWx0c1RyZWUuX2J1aWxkTG9jYXRpb247
Ci0gICAgICAgICAgICByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0gPSByZXN1
bHROb2RlOwotICAgICAgICB9KTsKLSAgICB9KTsKLQotICAgIHJldHVybiByZXN1bHRzQnlUZXN0
OwotfQotCi1yZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSBmdW5jdGlvbihyZXN1bHRz
QnlCdWlsZGVyKQotewotICAgIHJldHVybiByZXN1bHRzQnlUZXN0KHJlc3VsdHNCeUJ1aWxkZXIs
IHJlc3VsdHMuZXhwZWN0ZWRGYWlsdXJlcyk7Ci19OwotCi1yZXN1bHRzLnVuZXhwZWN0ZWRGYWls
dXJlc0J5VGVzdCA9IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCi17Ci0gICAgcmV0dXJuIHJl
c3VsdHNCeVRlc3QocmVzdWx0c0J5QnVpbGRlciwgcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXMp
OwotfTsKLQotcmVzdWx0cy51bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0ID0gZnVuY3Rpb24ocmVz
dWx0c0J5QnVpbGRlcikKLXsKLSAgICByZXR1cm4gcmVzdWx0c0J5VGVzdChyZXN1bHRzQnlCdWls
ZGVyLCByZXN1bHRzLnVuZXhwZWN0ZWRTdWNjZXNzZXMpOwotfTsKLQotcmVzdWx0cy5mYWlsdXJl
SW5mb0ZvclRlc3RBbmRCdWlsZGVyID0gZnVuY3Rpb24ocmVzdWx0c0J5VGVzdCwgdGVzdE5hbWUs
IGJ1aWxkZXJOYW1lKQotewotICAgIHZhciBmYWlsdXJlSW5mb0ZvclRlc3QgPSB7Ci0gICAgICAg
ICd0ZXN0TmFtZSc6IHRlc3ROYW1lLAotICAgICAgICAnYnVpbGRlck5hbWUnOiBidWlsZGVyTmFt
ZSwKLSAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IHJlc3VsdHMuZmFpbHVyZVR5cGVMaXN0KHJl
c3VsdHNCeVRlc3RbdGVzdE5hbWVdW2J1aWxkZXJOYW1lXS5hY3R1YWwpLAotICAgIH07Ci0gICAg
Ci0gICAgaWYgKCFjb25maWcua1BsYXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5oYXZl
QnVpbGRlckFjY3VtdWxhdGVkUmVzdWx0cykKLSAgICAgICAgZmFpbHVyZUluZm9Gb3JUZXN0LmJ1
aWxkTG9jYXRpb24gPSByZXN1bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyTmFtZV0uX2J1aWxk
TG9jYXRpb247Ci0gICAgCi0gICAgcmV0dXJuIGZhaWx1cmVJbmZvRm9yVGVzdDsKLX07Ci0KLXJl
c3VsdHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzID0gZnVuY3Rpb24oZGljdGlvbmFyeU9mUmVz
dWx0Tm9kZXMpCi17Ci0gICAgdmFyIGNvbGxlY3RlZFJlc3VsdHMgPSBbXTsKLSAgICAkLmVhY2go
ZGljdGlvbmFyeU9mUmVzdWx0Tm9kZXMsIGZ1bmN0aW9uKGtleSwgcmVzdWx0Tm9kZSkgewotICAg
ICAgICB2YXIgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcihyZXN1bHROb2Rl
KTsKLSAgICAgICAgY29sbGVjdGVkUmVzdWx0cyA9IGNvbGxlY3RlZFJlc3VsdHMuY29uY2F0KGFu
YWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCkpOwotICAgIH0pOwotICAgIHJldHVybiBiYXNlLnVu
aXF1aWZ5QXJyYXkoY29sbGVjdGVkUmVzdWx0cyk7Ci19OwotCi0vLyBDYWxsYmFjayBkYXRhIGlz
IFt7IGJ1aWxkTnVtYmVyOiwgcmV2aXNpb246LCB1cmw6IH1dCi1mdW5jdGlvbiBoaXN0b3JpY2Fs
UmVzdWx0c0xvY2F0aW9ucyhwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGNhbGxiYWNrKQotewotICAg
IGlmIChjb25maWcua1BsYXRmb3Jtc1twbGF0Zm9ybV0udXNlRGlyZWN0b3J5TGlzdGluZ0Zvck9s
ZEJ1aWxkcykgewotICAgICAgICB2YXIgbGlzdGluZ1VSTCA9IHJlc3VsdHNEaXJlY3RvcnlMaXN0
aW5nVVJMKHBsYXRmb3JtLCBidWlsZGVyTmFtZSk7Ci0gICAgICAgIG5ldC5nZXQobGlzdGluZ1VS
TCwgZnVuY3Rpb24oZGlyZWN0b3J5TGlzdGluZykgewotICAgICAgICAgICAgdmFyIGhpc3Rvcmlj
YWxSZXN1bHRzRGF0YSA9IGRpcmVjdG9yeUxpc3RpbmcubWF0Y2goa0J1aWxkTGlua1JlZ2V4cCku
bWFwKGZ1bmN0aW9uKGJ1aWxkTGluaykgewotICAgICAgICAgICAgICAgIHZhciBidWlsZE51bWJl
ciA9IHBhcnNlSW50KGJ1aWxkTGluay5tYXRjaChrQnVpbGROdW1iZXJSZWdleHApWzBdKTsKLSAg
ICAgICAgICAgICAgICB2YXIgcmV2aXNpb24gPSAwOyAvLyB1bnVzZWQgZm9yIENocm9taXVtLgot
ICAgICAgICAgICAgICAgIHZhciByZXN1bHRzRGF0YSA9IHsKLSAgICAgICAgICAgICAgICAgICAg
J2J1aWxkTnVtYmVyJzogYnVpbGROdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICdyZXZpc2lv
bic6IHJldmlzaW9uLAotICAgICAgICAgICAgICAgICAgICAndXJsJzogcmVzdWx0c1N1bW1hcnlV
UkxGb3JCdWlsZE51bWJlcihwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZp
c2lvbikKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRz
RGF0YTsKLSAgICAgICAgICAgIH0pLnJldmVyc2UoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgY2FsbGJhY2soaGlzdG9yaWNhbFJlc3VsdHNEYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgfSBl
bHNlIHsKLSAgICAgICAgdmFyIGhpc3RvcmljYWxSZXN1bHRzRGF0YSA9IFtdOwotICAgICAgICBi
dWlsZGVycy5jYWNoZWRCdWlsZEluZm9zKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24o
Y2FjaGVkQnVpbGRJbmZvcykgewotICAgICAgICAgICAgJC5lYWNoKGNhY2hlZEJ1aWxkSW5mb3Ms
IGZ1bmN0aW9uKGJ1aWxkTnVtYmVyLCBidWlsZEluZm8pIHsKLSAgICAgICAgICAgICAgICB2YXIg
cmVzdWx0c0RhdGEgPSB7Ci0gICAgICAgICAgICAgICAgICAgICdidWlsZE51bWJlcic6IGJ1aWxk
TnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAncmV2aXNpb24nOiBidWlsZEluZm8uc291cmNl
U3RhbXAucmV2aXNpb24sCi0gICAgICAgICAgICAgICAgICAgICd1cmwnOiByZXN1bHRzU3VtbWFy
eVVSTEZvckJ1aWxkTnVtYmVyKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgYnVpbGROdW1iZXIsIGJ1
aWxkSW5mby5zb3VyY2VTdGFtcC5yZXZpc2lvbiksCi0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGhpc3RvcmljYWxSZXN1bHRzRGF0YS5wdXNoKHJlc3VsdHNEYXRhKTsKLSAgICAg
ICAgICAgIH0pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBjYWxsYmFjayhoaXN0b3JpY2Fs
UmVzdWx0c0RhdGEucmV2ZXJzZSgpKTsKLSAgICAgICAgfSk7Ci0gICAgfQotfQotCi1mdW5jdGlv
biB3YWxrSGlzdG9yeShwbGF0Zm9ybSwgYnVpbGRlck5hbWUsIHRlc3ROYW1lLCBjYWxsYmFjaykK
LXsKLSAgICB2YXIgaW5kZXhPZk5leHRLZXlUb0ZldGNoID0gMDsKLSAgICB2YXIga2V5TGlzdCA9
IFtdOwotCi0gICAgZnVuY3Rpb24gY29udGludWVXYWxrKCkKLSAgICB7Ci0gICAgICAgIGlmIChp
bmRleE9mTmV4dEtleVRvRmV0Y2ggPj0ga2V5TGlzdC5sZW5ndGgpIHsKLSAgICAgICAgICAgIHBy
b2Nlc3NSZXN1bHROb2RlKDAsIG51bGwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KLSAgICAgICAgdmFyIHJlc3VsdHNVUkwgPSBrZXlMaXN0W2luZGV4T2ZOZXh0S2V5VG9GZXRj
aF0udXJsOwotICAgICAgICArK2luZGV4T2ZOZXh0S2V5VG9GZXRjaDsKLSAgICAgICAgZ19yZXN1
bHRzQ2FjaGUuZ2V0KHJlc3VsdHNVUkwsIGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAg
ICAgICBpZiAoJC5pc0VtcHR5T2JqZWN0KHJlc3VsdHNUcmVlKSkgewotICAgICAgICAgICAgICAg
IGNvbnRpbnVlV2FsaygpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHZhciByZXN1bHROb2RlID0gcmVzdWx0cy5yZXN1bHROb2RlRm9yVGVzdChy
ZXN1bHRzVHJlZSwgdGVzdE5hbWUpOwotICAgICAgICAgICAgdmFyIHJldmlzaW9uID0gcGFyc2VJ
bnQocmVzdWx0c1RyZWVbJ3JldmlzaW9uJ10pCi0gICAgICAgICAgICBpZiAoaXNOYU4ocmV2aXNp
b24pKQotICAgICAgICAgICAgICAgIHJldmlzaW9uID0gMDsKLSAgICAgICAgICAgIHByb2Nlc3NS
ZXN1bHROb2RlKHJldmlzaW9uLCByZXN1bHROb2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0g
ICAgZnVuY3Rpb24gcHJvY2Vzc1Jlc3VsdE5vZGUocmV2aXNpb24sIHJlc3VsdE5vZGUpCi0gICAg
ewotICAgICAgICB2YXIgc2hvdWxkQ29udGludWUgPSBjYWxsYmFjayhyZXZpc2lvbiwgcmVzdWx0
Tm9kZSk7Ci0gICAgICAgIGlmICghc2hvdWxkQ29udGludWUpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIGNvbnRpbnVlV2FsaygpOwotICAgIH0KLQotICAgIGhpc3RvcmljYWxSZXN1bHRz
TG9jYXRpb25zKHBsYXRmb3JtLCBidWlsZGVyTmFtZSwgZnVuY3Rpb24ocmVzdWx0c0xvY2F0aW9u
cykgewotICAgICAgICBrZXlMaXN0ID0gcmVzdWx0c0xvY2F0aW9uczsKLSAgICAgICAgY29udGlu
dWVXYWxrKCk7Ci0gICAgfSk7Ci19Ci0KLXJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVy
ZSA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFy
IG9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgdmFyIG5ld2VzdFBhc3NpbmdSZXZpc2lv
biA9IDA7Ci0KLSAgICAvLyBGSVhNRTogc2hvdWxkIHRyZWF0IHtwbGF0Zm9ybSwgYnVpbGRlck5h
bWV9IGFzIGEgdHVwbGUKLSAgICB3YWxrSGlzdG9yeShjb25maWcuY3VycmVudFBsYXRmb3JtLCBi
dWlsZGVyTmFtZSwgdGVzdE5hbWUsIGZ1bmN0aW9uKHJldmlzaW9uLCByZXN1bHROb2RlKSB7Ci0g
ICAgICAgIGlmICghcmV2aXNpb24pIHsKLSAgICAgICAgICAgIGNhbGxiYWNrKG9sZGVzdEZhaWxp
bmdSZXZpc2lvbiwgbmV3ZXN0UGFzc2luZ1JldmlzaW9uKTsKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXJlc3VsdE5vZGUpIHsKLSAgICAgICAgICAg
IG5ld2VzdFBhc3NpbmdSZXZpc2lvbiA9IHJldmlzaW9uOwotICAgICAgICAgICAgY2FsbGJhY2so
b2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChpc1VuZXhwZWN0ZWRGYWls
dXJlKHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAgICBvbGRlc3RGYWlsaW5nUmV2aXNpb24gPSBy
ZXZpc2lvbjsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGlm
ICghb2xkZXN0RmFpbGluZ1JldmlzaW9uKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBX
ZSBuZWVkIHRvIGtlZXAgbG9va2luZyBmb3IgYSBmYWlsaW5nIHJldmlzaW9uLgotICAgICAgICBu
ZXdlc3RQYXNzaW5nUmV2aXNpb24gPSByZXZpc2lvbjsKLSAgICAgICAgY2FsbGJhY2sob2xkZXN0
RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pOwotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgfSk7Ci19OwotCi1mdW5jdGlvbiBtZXJnZVJlZ3Jlc3Npb25SYW5nZXMocmVn
cmVzc2lvblJhbmdlcykKLXsKLSAgICB2YXIgbWVyZ2VkUmFuZ2UgPSB7fTsKLQotICAgIG1lcmdl
ZFJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IDA7Ci0gICAgbWVyZ2VkUmFuZ2UubmV3ZXN0
UGFzc2luZ1JldmlzaW9uID0gMDsKLQotICAgICQuZWFjaChyZWdyZXNzaW9uUmFuZ2VzLCBmdW5j
dGlvbihidWlsZGVyTmFtZSwgcmFuZ2UpIHsKLSAgICAgICAgaWYgKCFyYW5nZS5vbGRlc3RGYWls
aW5nUmV2aXNpb24gJiYgIXJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAg
IHJldHVybgotCi0gICAgICAgIGlmICghbWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9u
KQotICAgICAgICAgICAgbWVyZ2VkUmFuZ2Uub2xkZXN0RmFpbGluZ1JldmlzaW9uID0gcmFuZ2Uu
b2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICBpZiAoIW1lcmdlZFJhbmdlLm5ld2VzdFBh
c3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZp
c2lvbiA9IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLQotICAgICAgICBpZiAocmFuZ2Uu
b2xkZXN0RmFpbGluZ1JldmlzaW9uICYmIHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA8IG1l
cmdlZFJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdl
Lm9sZGVzdEZhaWxpbmdSZXZpc2lvbiA9IHJhbmdlLm9sZGVzdEZhaWxpbmdSZXZpc2lvbjsKLSAg
ICAgICAgaWYgKHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbiA+IG1lcmdlZFJhbmdlLm5ld2Vz
dFBhc3NpbmdSZXZpc2lvbikKLSAgICAgICAgICAgIG1lcmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdS
ZXZpc2lvbiA9IHJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbjsKLSAgICB9KTsKLQotICAgIHJl
dHVybiBtZXJnZWRSYW5nZTsKLX0KLQotcmVzdWx0cy51bmlmeVJlZ3Jlc3Npb25SYW5nZXMgPSBm
dW5jdGlvbihidWlsZGVyTmFtZUxpc3QsIHRlc3ROYW1lLCBjYWxsYmFjaykKLXsKLSAgICB2YXIg
cmVncmVzc2lvblJhbmdlcyA9IHt9OwotCi0gICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFzZS5SZXF1
ZXN0VHJhY2tlcihidWlsZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAgICAgICAg
dmFyIG1lcmdlZFJhbmdlID0gbWVyZ2VSZWdyZXNzaW9uUmFuZ2VzKHJlZ3Jlc3Npb25SYW5nZXMp
OwotICAgICAgICBjYWxsYmFjayhtZXJnZWRSYW5nZS5vbGRlc3RGYWlsaW5nUmV2aXNpb24sIG1l
cmdlZFJhbmdlLm5ld2VzdFBhc3NpbmdSZXZpc2lvbik7Ci0gICAgfSk7Ci0KLSAgICAkLmVhY2go
YnVpbGRlck5hbWVMaXN0LCBmdW5jdGlvbihpbmRleCwgYnVpbGRlck5hbWUpIHsKLSAgICAgICAg
cmVzdWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKGJ1aWxkZXJOYW1lLCB0ZXN0TmFtZSwg
ZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9uLCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsK
LSAgICAgICAgICAgIHZhciByYW5nZSA9IHt9OwotICAgICAgICAgICAgcmFuZ2Uub2xkZXN0RmFp
bGluZ1JldmlzaW9uID0gb2xkZXN0RmFpbGluZ1JldmlzaW9uOwotICAgICAgICAgICAgcmFuZ2Uu
bmV3ZXN0UGFzc2luZ1JldmlzaW9uID0gbmV3ZXN0UGFzc2luZ1JldmlzaW9uOwotICAgICAgICAg
ICAgcmVncmVzc2lvblJhbmdlc1tidWlsZGVyTmFtZV0gPSByYW5nZTsKLSAgICAgICAgICAgIHRy
YWNrZXIucmVxdWVzdENvbXBsZXRlKCk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotfTsKLQotcmVz
dWx0cy5jb3VudEZhaWx1cmVPY2N1cmVuY2VzID0gZnVuY3Rpb24oYnVpbGRlck5hbWVMaXN0LCB0
ZXN0TmFtZSwgY2FsbGJhY2spCi17Ci0gICAgdmFyIGZhaWx1cmVDb3VudCA9IDA7Ci0KLSAgICB2
YXIgdHJhY2tlciA9IG5ldyBiYXNlLlJlcXVlc3RUcmFja2VyKGJ1aWxkZXJOYW1lTGlzdC5sZW5n
dGgsIGZ1bmN0aW9uKCkgewotICAgICAgICBjYWxsYmFjayhmYWlsdXJlQ291bnQpOwotICAgIH0p
OwotCi0gICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJO
YW1lKSB7Ci0gICAgICAgIHdhbGtIaXN0b3J5KGNvbmZpZy5jdXJyZW50UGxhdGZvcm0sIGJ1aWxk
ZXJOYW1lLCB0ZXN0TmFtZSwgZnVuY3Rpb24ocmV2aXNpb24sIHJlc3VsdE5vZGUpIHsKLSAgICAg
ICAgICAgIGlmIChpc1VuZXhwZWN0ZWRGYWlsdXJlKHJlc3VsdE5vZGUpKSB7Ci0gICAgICAgICAg
ICAgICAgKytmYWlsdXJlQ291bnQ7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9KTsKLSAgICB9KTsKLX07Ci0KLXJlc3VsdHMu
cmVzdWx0Tm9kZUZvclRlc3QgPSBmdW5jdGlvbihyZXN1bHRzVHJlZSwgdGVzdE5hbWUpCi17Ci0g
ICAgdmFyIHRlc3ROYW1lUGF0aCA9IHRlc3ROYW1lLnNwbGl0KCcvJyk7Ci0gICAgdmFyIGN1cnJl
bnROb2RlID0gcmVzdWx0c1RyZWVbJ3Rlc3RzJ107Ci0gICAgJC5lYWNoKHRlc3ROYW1lUGF0aCwg
ZnVuY3Rpb24oaW5kZXgsIHNlZ21lbnROYW1lKSB7Ci0gICAgICAgIGlmICghY3VycmVudE5vZGUp
Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGN1cnJlbnROb2RlID0gKHNlZ21lbnROYW1l
IGluIGN1cnJlbnROb2RlKSA/IGN1cnJlbnROb2RlW3NlZ21lbnROYW1lXSA6IG51bGw7Ci0gICAg
fSk7Ci0gICAgcmV0dXJuIGN1cnJlbnROb2RlOwotfTsKLQotcmVzdWx0cy5yZXN1bHRLaW5kID0g
ZnVuY3Rpb24odXJsKQotewotICAgIGlmICgvLWFjdHVhbFwuW2Etel0rJC8udGVzdCh1cmwpKQot
ICAgICAgICByZXR1cm4gcmVzdWx0cy5rQWN0dWFsS2luZDsKLSAgICBlbHNlIGlmICgvLWV4cGVj
dGVkXC5bYS16XSskLy50ZXN0KHVybCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtFeHBlY3Rl
ZEtpbmQ7Ci0gICAgZWxzZSBpZiAoL2RpZmZcLlthLXpdKyQvLnRlc3QodXJsKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdHMua0RpZmZLaW5kOwotICAgIHJldHVybiByZXN1bHRzLmtVbmtub3duS2lu
ZDsKLX0KLQotcmVzdWx0cy5yZXN1bHRUeXBlID0gZnVuY3Rpb24odXJsKQotewotICAgIGlmICgv
XC5wbmckLy50ZXN0KHVybCkpCi0gICAgICAgIHJldHVybiByZXN1bHRzLmtJbWFnZVR5cGU7Ci0g
ICAgaWYgKC9cLndhdiQvLnRlc3QodXJsKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMua0F1ZGlv
VHlwZTsKLSAgICByZXR1cm4gcmVzdWx0cy5rVGV4dFR5cGU7Ci19Ci0KLWZ1bmN0aW9uIHNvcnRS
ZXN1bHRVUkxzQnlTdWZmaXgodXJscykKLXsKLSAgICB2YXIgc29ydGVkVVJMcyA9IFtdOwotICAg
ICQuZWFjaChrUHJlZmVycmVkU3VmZml4T3JkZXIsIGZ1bmN0aW9uKGksIHN1ZmZpeCkgewotICAg
ICAgICAkLmVhY2godXJscywgZnVuY3Rpb24oaiwgdXJsKSB7Ci0gICAgICAgICAgICBpZiAoIWJh
c2UuZW5kc1dpdGgodXJsLCBzdWZmaXgpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIHNvcnRlZFVSTHMucHVzaCh1cmwpOwotICAgICAgICB9KTsKLSAgICB9KTsKLSAgICBp
ZiAoc29ydGVkVVJMcy5sZW5ndGggIT0gdXJscy5sZW5ndGgpCi0gICAgICAgIHRocm93ICJzb3J0
UmVzdWx0VVJMc0J5U3VmZml4IGZhaWxlZCB0byByZXR1cm4gdGhlIHNhbWUgbnVtYmVyIG9mIFVS
THMuIgotICAgIHJldHVybiBzb3J0ZWRVUkxzOwotfQotCi1yZXN1bHRzLmZldGNoUmVzdWx0c1VS
THMgPSBmdW5jdGlvbihmYWlsdXJlSW5mbywgY2FsbGJhY2spCi17Ci0gICAgdmFyIHRlc3ROYW1l
U3RlbSA9IGJhc2UudHJpbUV4dGVuc2lvbihmYWlsdXJlSW5mby50ZXN0TmFtZSk7Ci0gICAgdmFy
IHVybFN0ZW07Ci0gICAgCi0gICAgaWYgKGNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50
UGxhdGZvcm1dLmhhdmVCdWlsZGVyQWNjdW11bGF0ZWRSZXN1bHRzKQotICAgICAgICB1cmxTdGVt
ID0gcmVzdWx0c0RpcmVjdG9yeVVSTChjb25maWcuY3VycmVudFBsYXRmb3JtLCBmYWlsdXJlSW5m
by5idWlsZGVyTmFtZSk7Ci0gICAgZWxzZSAKLSAgICAgICAgdXJsU3RlbSA9IGZhaWx1cmVJbmZv
LmJ1aWxkTG9jYXRpb24udXJsLnJlcGxhY2Uoa1Jlc3VsdHNOYW1lLCAnJyk7Ci0KLSAgICB2YXIg
c3VmZml4TGlzdCA9IHBvc3NpYmxlU3VmZml4TGlzdEZvcihmYWlsdXJlSW5mby5mYWlsdXJlVHlw
ZUxpc3QpOwotICAgIHZhciByZXN1bHRVUkxzID0gW107Ci0gICAgdmFyIHRyYWNrZXIgPSBuZXcg
YmFzZS5SZXF1ZXN0VHJhY2tlcihzdWZmaXhMaXN0Lmxlbmd0aCwgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgIGNhbGxiYWNrKHNvcnRSZXN1bHRVUkxzQnlTdWZmaXgocmVzdWx0VVJMcykpOwotICAgIH0p
OwotICAgICQuZWFjaChzdWZmaXhMaXN0LCBmdW5jdGlvbihpbmRleCwgc3VmZml4KSB7Ci0gICAg
ICAgIHZhciB1cmwgPSB1cmxTdGVtICsgdGVzdE5hbWVTdGVtICsgc3VmZml4OwotICAgICAgICBu
ZXQucHJvYmUodXJsLCB7Ci0gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgICAgICByZXN1bHRVUkxzLnB1c2godXJsKTsKLSAgICAgICAgICAgICAgICB0cmFja2Vy
LnJlcXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGVycm9yOiBm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJlcXVlc3RDb21wbGV0ZSgpOwot
ICAgICAgICAgICAgfSwKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19OwotCi1yZXN1bHRzLmZldGNo
UmVzdWx0c0ZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0g
ICAgdmFyIHJlc3VsdHNVUkwgPSByZXN1bHRzU3VtbWFyeVVSTChjb25maWcuY3VycmVudFBsYXRm
b3JtLCBidWlsZGVyTmFtZSk7Ci0gICAgbmV0Lmpzb25wKHJlc3VsdHNVUkwsIGNhbGxiYWNrKTsK
LX07Ci0KLXJlc3VsdHMuZmV0Y2hSZXN1bHRzRm9yQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlvbihi
dWlsZGVyTmFtZSwgYnVpbGROdW1iZXIsIHJldmlzaW9uLCBjYWxsYmFjaykKLXsKLSAgICB2YXIg
cmVzdWx0c1VSTCA9IHJlc3VsdHNTdW1tYXJ5VVJMRm9yQnVpbGROdW1iZXIoY29uZmlnLmN1cnJl
bnRQbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGJ1aWxkTnVtYmVyLCByZXZpc2lvbik7Ci0gICAgbmV0
Lmpzb25wKHJlc3VsdHNVUkwsIGNhbGxiYWNrKTsKLX07Ci0KLS8vIExvb2sgZm9yIHRoZSBtb3N0
IHJlY2VudCBjb21wbGV0ZWQgYnVpbGQgdGhhdCBoYXMgZnVsbCByZXN1bHRzLgotcmVzdWx0cy5m
ZXRjaFJlc3VsdHNGb3JNb3N0UmVjZW50Q29tcGxldGVkQnVpbGRPbkJ1aWxkZXIgPSBmdW5jdGlv
bihidWlsZGVyTmFtZSwgY2FsbGJhY2spCi17Ci0gICAgaGlzdG9yaWNhbFJlc3VsdHNMb2NhdGlv
bnMoY29uZmlnLmN1cnJlbnRQbGF0Zm9ybSwgYnVpbGRlck5hbWUsIGZ1bmN0aW9uKGJ1aWxkTG9j
YXRpb25zKSB7Ci0gICAgICAgIHZhciBjdXJyZW50SW5kZXggPSAwOwotICAgICAgICB2YXIgcmVz
dWx0c0NhbGxiYWNrID0gZnVuY3Rpb24oYnVpbGRSZXN1bHRzKSB7Ci0gICAgICAgICAgICBpZiAo
JC5pc0VtcHR5T2JqZWN0KGJ1aWxkUmVzdWx0cykpIHsKLSAgICAgICAgICAgICAgICArK2N1cnJl
bnRJbmRleDsKLSAgICAgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4ID49IGJ1aWxkTG9jYXRp
b25zLmxlbmd0aCkgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsKTsKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
ICAgIG5ldC5qc29ucChidWlsZExvY2F0aW9uc1tjdXJyZW50SW5kZXhdLnVybCwgcmVzdWx0c0Nh
bGxiYWNrKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAoIWNvbmZpZy5rUGxhdGZvcm1zW2NvbmZpZy5jdXJyZW50UGxhdGZvcm1dLmhhdmVC
dWlsZGVyQWNjdW11bGF0ZWRSZXN1bHRzKQotICAgICAgICAgICAgICAgIGJ1aWxkUmVzdWx0cy5f
YnVpbGRMb2NhdGlvbiA9IGJ1aWxkTG9jYXRpb25zW2N1cnJlbnRJbmRleF07Ci0gICAgICAgICAg
ICBjYWxsYmFjayhidWlsZFJlc3VsdHMpOwotICAgICAgICB9OwotICAgICAgICBuZXQuanNvbnAo
YnVpbGRMb2NhdGlvbnNbY3VycmVudEluZGV4XS51cmwsIHJlc3VsdHNDYWxsYmFjayk7Ci0gICAg
fSk7Ci19OwotCi1yZXN1bHRzLmZldGNoUmVzdWx0c0J5QnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxk
ZXJOYW1lTGlzdCwgY2FsbGJhY2spCi17Ci0gICAgdmFyIHJlc3VsdHNCeUJ1aWxkZXIgPSB7fTsK
LSAgICBpZiAoY29uZmlnLmtQbGF0Zm9ybXNbY29uZmlnLmN1cnJlbnRQbGF0Zm9ybV0uaGF2ZUJ1
aWxkZXJBY2N1bXVsYXRlZFJlc3VsdHMpIHsKLSAgICAgICAgdmFyIHRyYWNrZXIgPSBuZXcgYmFz
ZS5SZXF1ZXN0VHJhY2tlcihidWlsZGVyTmFtZUxpc3QubGVuZ3RoLCBmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdHNCeUJ1aWxkZXIpOwotICAgICAgICB9KTsKLSAgICAg
ICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1lKSB7
Ci0gICAgICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c0ZvckJ1aWxkZXIoYnVpbGRlck5hbWUs
IGZ1bmN0aW9uKHJlc3VsdHNUcmVlKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c0J5QnVpbGRl
cltidWlsZGVyTmFtZV0gPSByZXN1bHRzVHJlZTsKLSAgICAgICAgICAgICAgICB0cmFja2VyLnJl
cXVlc3RDb21wbGV0ZSgpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIGJ1aWxkZXJzLnJlY2VudEJ1aWxkSW5mb3MoZnVuY3Rpb24ocmVjZW50QnVp
bGRJbmZvcykgewotICAgICAgICAgICAgdmFyIHJlcXVlc3RzSW5GbGlnaHQgPSAwOwotICAgICAg
ICAgICAgJC5lYWNoKGJ1aWxkZXJOYW1lTGlzdCwgZnVuY3Rpb24oaW5kZXgsIGJ1aWxkZXJOYW1l
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlY2VudEJ1aWxkSW5mb3NbYnVpbGRlck5hbWVdKSB7
Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB1c2UgUmVxdWVzdFRyYWNrZXIKLSAgICAg
ICAgICAgICAgICAgICAgKytyZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRzLmZldGNoUmVzdWx0c0Zvck1vc3RSZWNlbnRDb21wbGV0ZWRCdWlsZE9uQnVpbGRlcihi
dWlsZGVyTmFtZSwgZnVuY3Rpb24ocmVzdWx0c1RyZWUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHRzVHJlZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRz
QnlCdWlsZGVyW2J1aWxkZXJOYW1lXSA9IHJlc3VsdHNUcmVlOwotICAgICAgICAgICAgICAgICAg
ICAgICAgLS1yZXF1ZXN0c0luRmxpZ2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFy
ZXF1ZXN0c0luRmxpZ2h0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJl
c3VsdHNCeUJ1aWxkZXIpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgfQotfTsKLQotfSkoKTsKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy9yZXN1bHRzX3VuaXR0ZXN0
cy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDYwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciB1
bml0dGVzdCA9IHVuaXR0ZXN0IHx8IHt9OwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoInJl
c3VsdHMiKTsKLQotdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTiA9IHsKLSAgICAidGVzdHMi
OiB7Ci0gICAgICAgICJzY3JvbGxiYXJzIjogewotICAgICAgICAgICAgImN1c3RvbS1zY3JvbGxi
YXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogIklNQUdFIiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIgotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgICJleHBlY3RlZC13b250Zml4IjogewotICAgICAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFH
RSIsCi0gICAgICAgICAgICAgICAgIndvbnRmaXgiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAg
ICAgICAgICAgInVuZXhwZWN0ZWQtd29udGZpeCI6IHsKLSAgICAgICAgICAgICAgICAiZXhwZWN0
ZWQiOiAiSU1BR0UiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIsCi0gICAgICAg
ICAgICAgICAgIndvbnRmaXgiOiB0cnVlCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgImZs
YWt5LXNjcm9sbGJhci5odG1sIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNT
IiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlBBU1MgVEVYVCIKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICAidW5leHBlY3RlZC1mYWlsaW5nLWZsYWt5LXNjcm9sbGJhci5odG1sIjog
ewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICAgICAi
YWN0dWFsIjogIlRJTUVPVVQgVEVYVCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAidW5l
eHBlY3RlZC1wYXNzLmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwi
LAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfSwKLSAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAgICAgICAgICAgInVzZXItc2NyaXB0
LXZpZGVvLWRvY3VtZW50Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZB
SUwiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfSwKLSAgICB9LAotICAgICJza2lwcGVkIjogMzM5LAotICAgICJudW1f
cmVncmVzc2lvbnMiOiAxNCwKLSAgICAiaW50ZXJydXB0ZWQiOiBmYWxzZSwKLSAgICAibGF5b3V0
X3Rlc3RzX2RpciI6ICJcL21udFwvZGF0YVwvYlwvYnVpbGRcL3NsYXZlXC9XZWJraXRfTGludXhc
L2J1aWxkXC9zcmNcL3RoaXJkX3BhcnR5XC9XZWJLaXRcL0xheW91dFRlc3RzIiwKLSAgICAidmVy
c2lvbiI6IDMsCi0gICAgIm51bV9wYXNzZXMiOiAxNTU2NiwKLSAgICAiaGFzX3ByZXR0eV9wYXRj
aCI6IGZhbHNlLAotICAgICJmaXhhYmxlIjogMTIzMywKLSAgICAibnVtX2ZsYWt5IjoxLAotICAg
ICJ1c2VzX2V4cGVjdGF0aW9uc19maWxlIjogdHJ1ZSwKLSAgICAiaGFzX3dkaWZmIjogdHJ1ZSwK
LSAgICAicmV2aXNpb24iOiAiOTA0MzAiCi19OwotCi10ZXN0KCJSZXN1bHRBbmFseXplciIsIDU1
LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYW5hbHl6ZXI7Ci0KLSAgICBhbmFseXplciA9IG5ldyBy
ZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDogJ1BBU1MnLCBhY3R1YWw6ICdURVhUJ30p
OwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKGFuYWx5emVy
Lmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5hbHl6ZXIudW5leHBl
Y3RlZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7
Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0
cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQQVNTIFRJTUVPVVQnLCBhY3R1YWw6ICdURVhU
J30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKGFuYWx5
emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5hbHl6ZXIudW5l
eHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJ10pOwotICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQo
KSk7Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVz
dWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdURVhUJywgYWN0dWFsOiAnVEVYVCBUSU1F
T1VUJ30pOwotICAgIG9rKCFhbmFseXplci5leHBlY3RlZFRvU3VjY2VlZCgpKTsKLSAgICBvayhh
bmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVy
LnVuZXhwZWN0ZWRSZXN1bHRzKCksIFsnVElNRU9VVCddKTsKLSAgICBvayghYW5hbHl6ZXIuc3Vj
Y2VlZGVkKCkpOwotICAgIG9rKGFuYWx5emVyLmZsYWt5KCkpOwotCi0gICAgYW5hbHl6ZXIgPSBu
ZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6ICdQQVNTJywgYWN0dWFsOiAnVEVY
VCBUSU1FT1VUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwotICAg
IG9rKGFuYWx5emVyLmhhc1VuZXhwZWN0ZWRGYWlsdXJlcygpKTsKLSAgICBkZWVwRXF1YWwoYW5h
bHl6ZXIudW5leHBlY3RlZFJlc3VsdHMoKSwgWydURVhUJywgJ1RJTUVPVVQnXSk7Ci0gICAgb2so
IWFuYWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBvayhhbmFseXplci5mbGFreSgpKTsKLQotICAg
IGFuYWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnUEFTUyBU
SU1FT1VUJywgYWN0dWFsOiAnUEFTUyBUSU1FT1VUJ30pOwotICAgIG9rKGFuYWx5emVyLmV4cGVj
dGVkVG9TdWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMo
KSk7Ci0gICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAg
ICBvayhhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuZmxha3koKSk7Ci0K
LSAgICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3RlZDogJ1BB
U1MgVElNRU9VVCcsIGFjdHVhbDogJ1RJTUVPVVQgUEFTUyd9KTsKLSAgICBvayhhbmFseXplci5l
eHBlY3RlZFRvU3VjY2VlZCgpKTsKLSAgICBvayghYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1
cmVzKCkpOwotICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbXSk7
Ci0gICAgb2soYW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKGFuYWx5emVyLmZsYWt5KCkp
OwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6
ICdGQUlMJywgYWN0dWFsOiAnVElNRU9VVCd9KTsKLSAgICBvayghYW5hbHl6ZXIuZXhwZWN0ZWRU
b1N1Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkpOwot
ICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbJ1RJTUVPVVQnXSk7
Ci0gICAgb2soIWFuYWx5emVyLnN1Y2NlZWRlZCgpKTsKLSAgICBvayghYW5hbHl6ZXIuZmxha3ko
KSk7Ci0KLSAgICBhbmFseXplciA9IG5ldyByZXN1bHRzLlJlc3VsdEFuYWx5emVyKHtleHBlY3Rl
ZDogJ0ZBSUwnLCBhY3R1YWw6ICdJTUFHRSd9KTsKLSAgICBvayghYW5hbHl6ZXIuZXhwZWN0ZWRU
b1N1Y2NlZWQoKSk7Ci0gICAgb2soYW5hbHl6ZXIuaGFzVW5leHBlY3RlZEZhaWx1cmVzKCkpOwot
ICAgIGRlZXBFcXVhbChhbmFseXplci51bmV4cGVjdGVkUmVzdWx0cygpLCBbJ0lNQUdFJ10pOwot
ICAgIG9rKCFhbmFseXplci5zdWNjZWVkZWQoKSk7Ci0gICAgb2soIWFuYWx5emVyLmZsYWt5KCkp
OwotCi0gICAgYW5hbHl6ZXIgPSBuZXcgcmVzdWx0cy5SZXN1bHRBbmFseXplcih7ZXhwZWN0ZWQ6
ICdGQUlMJywgYWN0dWFsOiAnQVVESU8nfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9T
dWNjZWVkKCkpOwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0g
ICAgZGVlcEVxdWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvaygh
YW5hbHl6ZXIuc3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLQotICAg
IGFuYWx5emVyID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnRkFJTCcs
IGFjdHVhbDogJ1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkp
OwotICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVx
dWFsKGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvayghYW5hbHl6ZXIu
c3VjY2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLQotICAgIGFuYWx5emVy
ID0gbmV3IHJlc3VsdHMuUmVzdWx0QW5hbHl6ZXIoe2V4cGVjdGVkOiAnRkFJTCcsIGFjdHVhbDog
J0lNQUdFK1RFWFQnfSk7Ci0gICAgb2soIWFuYWx5emVyLmV4cGVjdGVkVG9TdWNjZWVkKCkpOwot
ICAgIG9rKCFhbmFseXplci5oYXNVbmV4cGVjdGVkRmFpbHVyZXMoKSk7Ci0gICAgZGVlcEVxdWFs
KGFuYWx5emVyLnVuZXhwZWN0ZWRSZXN1bHRzKCksIFtdKTsKLSAgICBvayghYW5hbHl6ZXIuc3Vj
Y2VlZGVkKCkpOwotICAgIG9rKCFhbmFseXplci5mbGFreSgpKTsKLX0pOwotCi10ZXN0KCJleHBl
Y3RlZEZhaWx1cmVzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGV4cGVjdGVkRmFpbHVyZXMg
PSByZXN1bHRzLmV4cGVjdGVkRmFpbHVyZXModW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTik7
Ci0gICAgZGVlcEVxdWFsKGV4cGVjdGVkRmFpbHVyZXMsIHsKLSAgICAgICAgInNjcm9sbGJhcnMv
Y3VzdG9tLXNjcm9sbGJhci13aXRoLWluY29tcGxldGUtc3R5bGUuaHRtbCI6IHsKLSAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIgot
ICAgICAgICB9LAotICAgICAgICAidXNlcnNjcmlwdHMvdXNlci1zY3JpcHQtdmlkZW8tZG9jdW1l
bnQuaHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAgICAgICAg
ICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoInVuZXhw
ZWN0ZWRGYWlsdXJlcyIsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciB1bmV4cGVjdGVkRmFpbHVy
ZXMgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWlsdXJlcyh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNK
U09OKTsKLSAgICBkZWVwRXF1YWwodW5leHBlY3RlZEZhaWx1cmVzLCB7Ci0gICAgICAgICJ1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCI6IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJQ
QVNTIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICAgICAgfQotICAgIH0pOwot
fSk7Ci0KLXRlc3QoInVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCIsIDEsIGZ1bmN0aW9uKCkgewot
ICAgIHZhciB1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QgPSByZXN1bHRzLnVuZXhwZWN0ZWRGYWls
dXJlc0J5VGVzdCh7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB1bml0dGVzdC5rRXhhbXBsZVJl
c3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVz
dCwgewotICAgICAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAg
ICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNT
IiwKLSAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICB9KTsKLX0pOwotCi10ZXN0KCJ1bmV4cGVjdGVkU3VjY2Vzc2VzQnlUZXN0Iiwg
MSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHVuZXhwZWN0ZWRGYWlsdXJlc0J5VGVzdCA9IHJlc3Vs
dHMudW5leHBlY3RlZFN1Y2Nlc3Nlc0J5VGVzdCh7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB1
bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OCi0gICAgfSk7Ci0gICAgZGVlcEVxdWFsKHVuZXhw
ZWN0ZWRGYWlsdXJlc0J5VGVzdCwgewotICAgICAgICAic2Nyb2xsYmFycy91bmV4cGVjdGVkLXBh
c3MuaHRtbCI6IHsKLSAgICAgICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiUEFTUyIK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0pOwotfSk7Ci0KLXRlc3QoImZhaWx1cmVJ
bmZvRm9yVGVzdEFuZEJ1aWxkZXIiLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdW5leHBlY3Rl
ZEZhaWx1cmVzQnlUZXN0ID0gcmVzdWx0cy51bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QoewotICAg
ICAgICAiTW9jayBCdWlsZGVyIjogdW5pdHRlc3Qua0V4YW1wbGVSZXN1bHRzSlNPTgotICAgIH0p
OwotICAgIHZhciBmYWlsdXJlSW5mbyA9IHJlc3VsdHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVp
bGRlcih1bmV4cGVjdGVkRmFpbHVyZXNCeVRlc3QsICJ1c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3Qu
aHRtbCIsICJNb2NrIEJ1aWxkZXIiKTsKLSAgICBkZWVwRXF1YWwoZmFpbHVyZUluZm8sIHsKLSAg
ICAgICAgInRlc3ROYW1lIjogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwKLSAgICAg
ICAgImJ1aWxkZXJOYW1lIjogIk1vY2sgQnVpbGRlciIsCi0gICAgICAgICJmYWlsdXJlVHlwZUxp
c3QiOiBbIlRFWFQiXSwKLSAgICB9KTsKLX0pOwotCi10ZXN0KCJyZXN1bHRLaW5kIiwgMTIsIGZ1
bmN0aW9uKCkgewotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxl
LmNvbS9mb28tYWN0dWFsLnR4dCIpLCAiYWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVz
dWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1leHBlY3RlZC50eHQiKSwgImV4cGVjdGVk
Iik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zv
by1kaWZmLnR4dCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWFjdHVhbC50eHQiKSwgImFjdHVhbCIpOwotICAgIGVx
dWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28uYmFyLWV4cGVj
dGVkLnR4dCIpLCAiZXhwZWN0ZWQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRLaW5kKCJo
dHRwOi8vZXhhbXBsZS5jb20vZm9vLmJhci1kaWZmLnR4dCIpLCAiZGlmZiIpOwotICAgIGVxdWFs
cyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnBuZyIp
LCAiYWN0dWFsIik7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1w
bGUuY29tL2Zvby1leHBlY3RlZC5wbmciKSwgImV4cGVjdGVkIik7Ci0gICAgZXF1YWxzKHJlc3Vs
dHMucmVzdWx0S2luZCgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1kaWZmLnBuZyIpLCAiZGlmZiIp
OwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28t
cHJldHR5LWRpZmYuaHRtbCIpLCAiZGlmZiIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdEtp
bmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28td2RpZmYuaHRtbCIpLCAiZGlmZiIpOwotICAgIGVx
dWFscyhyZXN1bHRzLnJlc3VsdEtpbmQoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28teHl6Lmh0bWwi
KSwgInVua25vd24iKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRUeXBlIiwgMTIsIGZ1bmN0aW9uKCkg
ewotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28t
YWN0dWFsLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0
dHA6Ly9leGFtcGxlLmNvbS9mb28tZXhwZWN0ZWQudHh0IiksICJ0ZXh0Iik7Ci0gICAgZXF1YWxz
KHJlc3VsdHMucmVzdWx0VHlwZSgiaHR0cDovL2V4YW1wbGUuY29tL2Zvby1kaWZmLnR4dCIpLCAi
dGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNv
bS9mb28uYmFyLWFjdHVhbC50eHQiKSwgInRleHQiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1
bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLmJhci1leHBlY3RlZC50eHQiKSwgInRleHQi
KTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9v
LmJhci1kaWZmLnR4dCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28tYWN0dWFsLnBuZyIpLCAiaW1hZ2UiKTsKLSAgICBlcXVh
bHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhhbXBsZS5jb20vZm9vLWV4cGVjdGVkLnBu
ZyIpLCAiaW1hZ2UiKTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1bHRUeXBlKCJodHRwOi8vZXhh
bXBsZS5jb20vZm9vLWRpZmYucG5nIiksICJpbWFnZSIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJl
c3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9mb28tcHJldHR5LWRpZmYuaHRtbCIpLCAidGV4
dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUoImh0dHA6Ly9leGFtcGxlLmNvbS9m
b28td2RpZmYuaHRtbCIpLCAidGV4dCIpOwotICAgIGVxdWFscyhyZXN1bHRzLnJlc3VsdFR5cGUo
Imh0dHA6Ly9leGFtcGxlLmNvbS9mb28ueHl6IiksICJ0ZXh0Iik7Ci19KTsKLQotdGVzdCgicmVz
dWx0Tm9kZUZvclRlc3QiLCA0LCBmdW5jdGlvbigpIHsKLSAgICBkZWVwRXF1YWwocmVzdWx0cy5y
ZXN1bHROb2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OLCAidXNlcnNjcmlw
dHMvYW5vdGhlci10ZXN0Lmh0bWwiKSwgewotICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0g
ICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAgICB9KTsKLSAgICBlcXVhbHMocmVzdWx0cy5yZXN1
bHROb2RlRm9yVGVzdCh1bml0dGVzdC5rRXhhbXBsZVJlc3VsdHNKU09OLCAiZm9vLmh0bWwiKSwg
bnVsbCk7Ci0gICAgZXF1YWxzKHJlc3VsdHMucmVzdWx0Tm9kZUZvclRlc3QodW5pdHRlc3Qua0V4
YW1wbGVSZXN1bHRzSlNPTiwgInVzZXJzY3JpcHRzL2Zvby5odG1sIiksIG51bGwpOwotICAgIGVx
dWFscyhyZXN1bHRzLnJlc3VsdE5vZGVGb3JUZXN0KHVuaXR0ZXN0LmtFeGFtcGxlUmVzdWx0c0pT
T04sICJ1c2Vyc2NyaXB0cy9mb28vYmFyLmh0bWwiKSwgbnVsbCk7Ci19KTsKLQotdGVzdCgid2Fs
a0hpc3RvcnkiLCA2LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5ldHdv
cmtTaW11bGF0b3IoKTsKLQotICAgIHZhciBrZXlNYXAgPSB7Ci0gICAgICAgICJNb2NrX0J1aWxk
ZXIiOiB7Ci0gICAgICAgICAgICAiMTExMDgiOiB7Ci0gICAgICAgICAgICAgICAgInRlc3RzIjog
ewotICAgICAgICAgICAgICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICAiYW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1
YWwiOiAiVEVYVCIKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5
MDQzMCIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAiMTExMDciOnsKLSAgICAgICAgICAg
ICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjog
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgICAgICAgImFub3RoZXItdGVzdC5odG1sIjog
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgICAgICAicmV2aXNpb24iOiAiOTA0MjkiCi0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgIjExMTA2Ijp7Ci0gICAgICAgICAgICAgICAgInRlc3RzIjogewotICAgICAgICAgICAg
ICAgICAgICAidXNlcnNjcmlwdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAiYW5vdGhl
ci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
IlBBU1MiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhY3R1YWwiOiAiVEVYVCIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgICAgICB9LAotICAgICAgICAgICAgICAgICJyZXZpc2lvbiI6ICI5MDQyNiIKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAiMTExMDUiOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7
Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2NyaXB0cyI6IHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgICJ1c2VyLXNjcmlwdC12aWRlby1kb2N1bWVudC5odG1sIjogewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAgICAgICB9LAotICAg
ICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAg
InJldmlzaW9uIjogIjkwNDI0IgotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwKLSAgICAgICAg
IkFub3RoZXJfQnVpbGRlciI6IHsKLSAgICAgICAgICAgICIyMjIwMiI6ewotICAgICAgICAgICAg
ICAgICJ0ZXN0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgInVzZXJzY3JpcHRzIjogewotICAg
ICAgICAgICAgICAgICAgICAgICAgImFub3RoZXItdGVzdC5odG1sIjogewotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAi
cmV2aXNpb24iOiAiOTA0MjYiCi0gICAgICAgICAgICB9LAotICAgICAgICAgICAgIjIyMjAxIjp7
Ci0gICAgICAgICAgICAgICAgInRlc3RzIjogewotICAgICAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICAgICAgInJldmlzaW9uIjogIjkwNDI1IgotICAgICAgICAgICAgfSwKLSAgICAgICAgfSwK
LSAgICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykg
ewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1aWxkZXIvLmV4ZWModXJsKV1bL1xk
Ky8uZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCA/IHJlc3VsdCA6IHt9
KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlvbih1
cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgaWYgKC9Nb2NrX0J1aWxkZXIvLnRlc3QodXJsKSkKLSAgICAg
ICAgICAgICAgICBjYWxsYmFjaygnPGEgaHJlZj0iMTExMDEvIj48L2E+PGEgaHJlZj0iMTExMDIv
Ij48L2E+PGEgaHJlZj0iMTExMDMvIj48L2E+PGEgaHJlZj0iMTExMDQvIj48L2E+PGEgaHJlZj0i
MTExMDUvIj48L2E+PGEgaHJlZj0iMTExMDYvIj48L2E+PGEgaHJlZj0iMTExMDcvIj48L2E+PGEg
aHJlZj0iMTExMDgvIj48L2E+Jyk7Ci0gICAgICAgICAgICBlbHNlIGlmICgvQW5vdGhlcl9CdWls
ZGVyLy50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAgY2FsbGJhY2soJzxhIGhyZWY9IjIyMjAx
LyI+PC9hPjxhIGhyZWY9IjIyMjAyLyI+PC9hPicpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIG9rKGZhbHNlLCAnVW5leHBlY3RlZCBVUkw6ICcgKyB1cmwpOwotICAgICAgICB9
KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7Ci0gICAgICAg
IHJlc3VsdHMucmVncmVzc2lvblJhbmdlRm9yRmFpbHVyZSgiTW9jayBCdWlsZGVyIiwgInVzZXJz
Y3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24ob2xkZXN0RmFpbGluZ1JldmlzaW9u
LCBuZXdlc3RQYXNzaW5nUmV2aXNpb24pIHsKLSAgICAgICAgICAgIGVxdWFscyhvbGRlc3RGYWls
aW5nUmV2aXNpb24sIDkwNDI2KTsKLSAgICAgICAgICAgIGVxdWFscyhuZXdlc3RQYXNzaW5nUmV2
aXNpb24sIDkwNDI0KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgcmVzdWx0cy51bmlmeVJlZ3Jl
c3Npb25SYW5nZXMoWyJNb2NrIEJ1aWxkZXIiLCAiQW5vdGhlciBCdWlsZGVyIl0sICJ1c2Vyc2Ny
aXB0cy9hbm90aGVyLXRlc3QuaHRtbCIsIGZ1bmN0aW9uKG9sZGVzdEZhaWxpbmdSZXZpc2lvbiwg
bmV3ZXN0UGFzc2luZ1JldmlzaW9uKSB7Ci0gICAgICAgICAgICBlcXVhbHMob2xkZXN0RmFpbGlu
Z1JldmlzaW9uLCA5MDQyNik7Ci0gICAgICAgICAgICBlcXVhbHMobmV3ZXN0UGFzc2luZ1Jldmlz
aW9uLCA5MDQyNSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJlc3VsdHMuY291bnRGYWlsdXJl
T2NjdXJlbmNlcyhbIk1vY2sgQnVpbGRlciIsICJBbm90aGVyIEJ1aWxkZXIiXSwgInVzZXJzY3Jp
cHRzL2Fub3RoZXItdGVzdC5odG1sIiwgZnVuY3Rpb24oZmFpbHVyZUNvdW50KSB7Ci0gICAgICAg
ICAgICBlcXVhbHMoZmFpbHVyZUNvdW50LCA0KTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsK
LQotdGVzdCgid2Fsa0hpc3RvcnkgKG5vIHJldmlzaW9uKSIsIDMsIGZ1bmN0aW9uKCkgewotICAg
IHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0gICAgdmFyIGtleU1h
cCA9IHsKLSAgICAgICAgIk1vY2tfQnVpbGRlciI6IHsKLSAgICAgICAgICAgICIxMTEwMyI6IHsK
LSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJ1c2Vyc2Ny
aXB0cyI6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICJhbm90aGVyLXRlc3QuaHRtbCI6IHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICAgICAgInJldmlzaW9uIjogIiIKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAi
MTExMDIiOnsKLSAgICAgICAgICAgICAgICAidGVzdHMiOiB7Ci0gICAgICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgICAgICAicmV2aXNpb24iOiAiIgotICAgICAgICAgICAgfSwKLSAgICAgICAg
fSwKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLmpzb25wID0gZnVuY3Rpb24odXJsLCBjYWxsYmFj
aykgewotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAg
ICAgICAgICAgIHZhciByZXN1bHQgPSBrZXlNYXBbL1teL10rX0J1aWxkZXIvLmV4ZWModXJsKV1b
L1xkKy8uZXhlYyh1cmwpXTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3VsdCA/IHJlc3VsdCA6
IHt9KTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVsYXRvci5nZXQgPSBmdW5jdGlv
bih1cmwsIGNhbGxiYWNrKSB7Ci0gICAgICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1
bmN0aW9uKCkgewotICAgICAgICAgICAgY2FsbGJhY2soJzxhIGhyZWY9IjExMTAxLyI+PC9hPjxh
IGhyZWY9IjExMTAyLyI+PC9hPjxhIGhyZWY9IjExMTAzLyI+PC9hPicpOwotICAgICAgICB9KTsK
LSAgICB9OwotCi0KLSAgICBzaW11bGF0b3IucnVuVGVzdChmdW5jdGlvbigpIHsKLSAgICAgICAg
cmVzdWx0cy5yZWdyZXNzaW9uUmFuZ2VGb3JGYWlsdXJlKCJNb2NrIEJ1aWxkZXIiLCAidXNlcnNj
cmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLCBmdW5jdGlvbihvbGRlc3RGYWlsaW5nUmV2aXNpb24s
IG5ld2VzdFBhc3NpbmdSZXZpc2lvbikgewotICAgICAgICAgICAgZXF1YWxzKG9sZGVzdEZhaWxp
bmdSZXZpc2lvbiwgMCk7Ci0gICAgICAgICAgICBlcXVhbHMobmV3ZXN0UGFzc2luZ1JldmlzaW9u
LCAwKTsKLSAgICAgICAgfSk7Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiY29sbGVjdFVuZXhwZWN0
ZWRSZXN1bHRzIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGRpY3Rpb25hcnlPZlJlc3VsdE5v
ZGVzID0gewotICAgICAgICAiZm9vIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIklNQUdF
IiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiCi0gICAgICAgIH0sCi0gICAgICAgICJi
YXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0
dWFsIjogIlBBU1MgVEVYVCIKLSAgICAgICAgfSwKLSAgICAgICAgImJheiI6IHsKLSAgICAgICAg
ICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwiOiAiSU1BR0UiCi0g
ICAgICAgIH0sCi0gICAgICAgICJxdXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFT
UyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgIH0sCi0gICAgICAgICJ0
YWNvIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAotICAgICAgICAgICAgImFj
dHVhbCI6ICJURVhUIgotICAgICAgICB9LAotICAgIH07Ci0KLSAgICB2YXIgY29sbGVjdGVkUmVz
dWx0cyA9IHJlc3VsdHMuY29sbGVjdFVuZXhwZWN0ZWRSZXN1bHRzKGRpY3Rpb25hcnlPZlJlc3Vs
dE5vZGVzKTsKLSAgICBkZWVwRXF1YWwoY29sbGVjdGVkUmVzdWx0cywgWyJURVhUIiwgIklNQUdF
Il0pOwotfSk7Ci0KLXRlc3QoImZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0IiwgNSwgZnVuY3Rp
b24oKSB7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4dGVuc2lvbkxpc3Qo
J1RFWFQnKSwgWyd0eHQnXSk7Ci0gICAgZGVlcEVxdWFsKHJlc3VsdHMuZmFpbHVyZVR5cGVUb0V4
dGVuc2lvbkxpc3QoJ0lNQUdFK1RFWFQnKSwgWyd0eHQnLCAncG5nJ10pOwotICAgIGRlZXBFcXVh
bChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0KCdJTUFHRScpLCBbJ3BuZyddKTsK
LSAgICBkZWVwRXF1YWwocmVzdWx0cy5mYWlsdXJlVHlwZVRvRXh0ZW5zaW9uTGlzdCgnQ1JBU0gn
KSwgW10pOwotICAgIGRlZXBFcXVhbChyZXN1bHRzLmZhaWx1cmVUeXBlVG9FeHRlbnNpb25MaXN0
KCdUSU1FT1VUJyksIFtdKTsKLX0pOwotCi10ZXN0KCJjYW5SZWJhc2VsaW5lIiwgNiwgZnVuY3Rp
b24oKSB7Ci0gICAgb2socmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnVEVYVCddKSk7Ci0gICAgb2so
cmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UrVEVYVCcsICdDUkFTSCddKSk7Ci0gICAgb2so
cmVzdWx0cy5jYW5SZWJhc2VsaW5lKFsnSU1BR0UnXSkpOwotICAgIG9rKCFyZXN1bHRzLmNhblJl
YmFzZWxpbmUoWydDUkFTSCddKSk7Ci0gICAgb2soIXJlc3VsdHMuY2FuUmViYXNlbGluZShbJ1RJ
TUVPVVQnXSkpOwotICAgIG9rKCFyZXN1bHRzLmNhblJlYmFzZWxpbmUoW10pKTsKLX0pOwotCi10
ZXN0KCJmZXRjaFJlc3VsdHNVUkxzIiwgNSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRv
ciA9IG5ldyBOZXR3b3JrU2ltdWxhdG9yKCk7Ci0KLSAgICB2YXIgcHJvYmVkVVJMcyA9IFtdOwot
ICAgIHNpbXVsYXRvci5wcm9iZSA9IGZ1bmN0aW9uKHVybCwgb3B0aW9ucykKLSAgICB7Ci0gICAg
ICAgIHNpbXVsYXRvci5zY2hlZHVsZUNhbGxiYWNrKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
cHJvYmVkVVJMcy5wdXNoKHVybCk7Ci0gICAgICAgICAgICBpZiAoYmFzZS5lbmRzV2l0aCh1cmws
ICcudHh0JykpCi0gICAgICAgICAgICAgICAgb3B0aW9ucy5zdWNjZXNzLmNhbGwoKTsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKC90YWNvLitwbmckLy50ZXN0KHVybCkpCi0gICAgICAgICAgICAgICAg
b3B0aW9ucy5zdWNjZXNzLmNhbGwoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBvcHRpb25zLmVycm9yLmNhbGwoKTsKLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHNpbXVs
YXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICByZXN1bHRzLmZldGNoUmVzdWx0c1VS
THMoewotICAgICAgICAgICAgJ2J1aWxkZXJOYW1lJzogIk1vY2sgQnVpbGRlciIsCi0gICAgICAg
ICAgICAndGVzdE5hbWUnOiAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0bWwiLAotICAgICAg
ICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1BR0UnLCAnQ1JBU0gnXSwKLSAgICAgICAgfSwg
ZnVuY3Rpb24ocmVzdWx0VVJMcykgewotICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdFVSTHMs
IFsKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVt
L2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy9hbm90aGVyLXRlc3QtY3Jhc2gtbG9nLnR4dCIKLSAgICAgICAgICAg
IF0pOwotICAgICAgICB9KTsKLSAgICAgICAgcmVzdWx0cy5mZXRjaFJlc3VsdHNVUkxzKHsKLSAg
ICAgICAgICAgICdidWlsZGVyTmFtZSc6ICJNb2NrIEJ1aWxkZXIiLAotICAgICAgICAgICAgJ3Rl
c3ROYW1lJzogInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIiwKLSAgICAgICAgICAgICdm
YWlsdXJlVHlwZUxpc3QnOiBbJ1RJTUVPVVQnXSwKLSAgICAgICAgfSwgZnVuY3Rpb24ocmVzdWx0
VVJMcykgewotICAgICAgICAgICAgZGVlcEVxdWFsKHJlc3VsdFVSTHMsIFtdKTsKLSAgICAgICAg
fSk7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzVVJMcyh7Ci0gICAgICAgICAgICAnYnVp
bGRlck5hbWUnOiAiTW9jayBCdWlsZGVyIiwKLSAgICAgICAgICAgICd0ZXN0TmFtZSc6ICJ1c2Vy
c2NyaXB0cy90YWNvLmh0bWwiLAotICAgICAgICAgICAgJ2ZhaWx1cmVUeXBlTGlzdCc6IFsnSU1B
R0UnLCAnSU1BR0UrVEVYVCddLAotICAgICAgICB9LCBmdW5jdGlvbihyZXN1bHRVUkxzKSB7Ci0g
ICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0VVJMcywgWwotICAgICAgICAgICAgICAgICJodHRw
Oi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2Nr
X0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZXhw
ZWN0ZWQucG5nIiwKLSAgICAgICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9m
L2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0
LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFjdHVhbC5wbmciLAotICAgICAgICAgICAg
ICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVz
dWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRz
L3RhY28tZGlmZi5wbmciLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0u
b3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9s
YXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZXhwZWN0ZWQudHh0IiwKLSAgICAg
ICAgICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90
ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vy
c2NyaXB0cy90YWNvLWFjdHVhbC50eHQiLAotICAgICAgICAgICAgICAgICJodHRwOi8vYnVpbGQu
Y2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIv
cmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi50eHQiLAot
ICAgICAgICAgICAgXSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHBy
b2JlZFVSTHMsIFsKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1
bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJl
c3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWV4cGVjdGVkLnBuZyIsCi0gICAgICAgICJo
dHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9N
b2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL2Fub3Ro
ZXItdGVzdC1hY3R1YWwucG5nIiwKLSAgICAgICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
Zi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91
dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0LWRpZmYucG5nIiwKLSAgICAg
ICAgImh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvZi9jaHJvbWl1bS9sYXlvdXRfdGVzdF9yZXN1
bHRzL01vY2tfQnVpbGRlci9yZXN1bHRzL2xheW91dC10ZXN0LXJlc3VsdHMvdXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0LWNyYXNoLWxvZy50eHQiLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9t
aXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3Vs
dHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWV4cGVjdGVkLnBuZyIsCi0g
ICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3Rf
cmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3Jp
cHRzL3RhY28tYWN0dWFsLnBuZyIsCi0gICAgICAgICJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3Jn
L2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxkZXIvcmVzdWx0cy9sYXlv
dXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi5wbmciLAotICAgICAgICAiaHR0
cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVtL2xheW91dF90ZXN0X3Jlc3VsdHMvTW9j
a19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVzdWx0cy91c2Vyc2NyaXB0cy90YWNvLWFj
dHVhbC50eHQiLAotICAgICAgICAiaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9mL2Nocm9taXVt
L2xheW91dF90ZXN0X3Jlc3VsdHMvTW9ja19CdWlsZGVyL3Jlc3VsdHMvbGF5b3V0LXRlc3QtcmVz
dWx0cy91c2Vyc2NyaXB0cy90YWNvLWV4cGVjdGVkLnR4dCIsCi0gICAgICAgICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL2YvY2hyb21pdW0vbGF5b3V0X3Rlc3RfcmVzdWx0cy9Nb2NrX0J1aWxk
ZXIvcmVzdWx0cy9sYXlvdXQtdGVzdC1yZXN1bHRzL3VzZXJzY3JpcHRzL3RhY28tZGlmZi50eHQi
LAotICAgIF0pOwotfSk7Ci0KLXRlc3QoImZldGNoUmVzdWx0c0J5QnVpbGRlciIsIDUsIGZ1bmN0
aW9uKCkgewotICAgIHZhciBzaW11bGF0b3IgPSBuZXcgTmV0d29ya1NpbXVsYXRvcigpOwotCi0g
ICAgdmFyIHByb2JlZFVSTHMgPSBbXTsKLSAgICBzaW11bGF0b3IuanNvbnAgPSBmdW5jdGlvbih1
cmwsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgc2ltdWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2so
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBwcm9iZWRVUkxzLnB1c2godXJsKTsKLSAgICAgICAg
ICAgIGlmIChiYXNlLmVuZHNXaXRoKHVybCwgJ01vY2tCdWlsZGVyMi9yMSUyMCgxKS9mdWxsX3Jl
c3VsdHMuanNvbicpKQotICAgICAgICAgICAgICAgIGNhbGxiYWNrKHsnTW9ja0J1aWxkUmVzdWx0
cyc6IHRydWV9KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjYWxsYmFjayh7
fSk7Ci0gICAgICAgIH0pOwotICAgIH07Ci0KLSAgICBjb25maWcuY3VycmVudFBsYXRmb3JtID0g
J2d0ayc7Ci0KLSAgICB2YXIgb2xkQ2FjaGVkQnVpbGRJbmZvcyA9IGJ1aWxkZXJzLmNhY2hlZEJ1
aWxkSW5mb3M7Ci0gICAgYnVpbGRlcnMuY2FjaGVkQnVpbGRJbmZvcyA9IGZ1bmN0aW9uKHBsYXRm
b3JtLCBidWlsZGVyTmFtZSwgY2FsbGJhY2spIHsKLSAgICAgICAgY2FsbGJhY2soCi0gICAgICAg
IHsKLSAgICAgICAgICAgIDE6IHsKLSAgICAgICAgICAgICAgICBzb3VyY2VTdGFtcDogewotICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbjogMQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICAyOiB7Ci0gICAgICAgICAgICAgICAgc291cmNlU3RhbXA6IHsK
LSAgICAgICAgICAgICAgICAgICAgcmV2aXNpb246IDIKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgfSk7Ci0gICAgfTsKLQotICAgIHZhciBvbGRSZWNlbnRCdWls
ZEluZm9zID0gYnVpbGRlcnMucmVjZW50QnVpbGRJbmZvczsKLSAgICBidWlsZGVycy5yZWNlbnRC
dWlsZEluZm9zID0gZnVuY3Rpb24oY2FsbGJhY2spIHsKLSAgICAgICAgY2FsbGJhY2soewotICAg
ICAgICAgICAgJ01vY2tCdWlsZGVyMSc6IHRydWUsCi0gICAgICAgICAgICAnTW9ja0J1aWxkZXIy
JzogdHJ1ZQotICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIHJlc3VsdHMuZmV0Y2hSZXN1bHRzQnlCdWlsZGVyKFsnTW9ja0J1
aWxkZXIxJywgJ01vY2tCdWlsZGVyMiddLCBmdW5jdGlvbihyZXN1bHRzQnlCdWlsZGVyKSB7Ci0g
ICAgICAgICAgICBkZWVwRXF1YWwocmVzdWx0c0J5QnVpbGRlciwgewotICAgICAgICAgICAgICAg
ICJNb2NrQnVpbGRlcjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJNb2NrQnVpbGRSZXN1bHRz
IjogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIl9idWlsZExvY2F0aW9uIjogewotICAgICAg
ICAgICAgICAgICAgICAgICAgImJ1aWxkTnVtYmVyIjogIjEiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgInJldmlzaW9uIjogMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0
cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvTW9ja0J1aWxkZXIyL3IxJTIwKDEpL2Z1bGxf
cmVzdWx0cy5qc29uIgotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVlcEVxdWFsKHBy
b2JlZFVSTHMsIFsKLSAgICAgICAgImh0dHBzOi8vYnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL01v
Y2tCdWlsZGVyMS9yMiUyMCgyKS9mdWxsX3Jlc3VsdHMuanNvbiIsCi0gICAgICAgICJodHRwczov
L2J1aWxkLndlYmtpdC5vcmcvcmVzdWx0cy9Nb2NrQnVpbGRlcjIvcjIlMjAoMikvZnVsbF9yZXN1
bHRzLmpzb24iLAotICAgICAgICAiaHR0cHM6Ly9idWlsZC53ZWJraXQub3JnL3Jlc3VsdHMvTW9j
a0J1aWxkZXIxL3IxJTIwKDEpL2Z1bGxfcmVzdWx0cy5qc29uIiwKLSAgICAgICAgImh0dHBzOi8v
YnVpbGQud2Via2l0Lm9yZy9yZXN1bHRzL01vY2tCdWlsZGVyMi9yMSUyMCgxKS9mdWxsX3Jlc3Vs
dHMuanNvbiIKLSAgICBdKTsKLQotICAgIGJ1aWxkZXJzLmNhY2hlZEJ1aWxkSW5mb3MgPSBvbGRD
YWNoZWRCdWlsZEluZm9zOwotICAgIGVxdWFsKGJ1aWxkZXJzLmNhY2hlZEJ1aWxkSW5mb3MsIG9s
ZENhY2hlZEJ1aWxkSW5mb3MsICJGYWlsZWQgdG8gcmVzdG9yZSByZWFsIGJhc2UhIik7Ci0KLSAg
ICBidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zID0gb2xkUmVjZW50QnVpbGRJbmZvczsKLSAgICBl
cXVhbChidWlsZGVycy5yZWNlbnRCdWlsZEluZm9zLCBvbGRSZWNlbnRCdWlsZEluZm9zLCAiRmFp
bGVkIHRvIHJlc3RvcmUgcmVhbCBiYXNlISIpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL3NjcmlwdHMvc3VtbWFyeS1tb2NrLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy9zdW1tYXJ5LW1vY2suanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwx
NjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24oKSB7Ci0KLWZ1bmN0aW9uIG1pbnV0
ZXNBZ28obWludXRlcykKLXsKLSAgICB2YXIgdGltZSA9IG5ldyBEYXRlKCk7Ci0gICAgdGltZS5z
ZXRNaW51dGVzKHRpbWUuZ2V0TWludXRlcygpIC0gbWludXRlcyk7Ci0gICAgcmV0dXJuIHRpbWU7
Ci19Ci0KLWZ1bmN0aW9uIEN5Y2xlcihpdGVtcywgcmVwZWF0KQotewotICAgIHRoaXMuX2luZGV4
ID0gMDsKLSAgICB0aGlzLl9yZXBlYXQgPSByZXBlYXQgfHwgMTsKLSAgICB0aGlzLl9yZXBlYXRl
ZCA9IDA7Ci0gICAgdGhpcy5faXRlbXMgPSBpdGVtczsKLX0KLQotQ3ljbGVyLnByb3RvdHlwZSA9
IHsKLSAgICBfdXBkYXRlUmVwZWF0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoKyt0
aGlzLl9yZXBlYXRlZCA+PSB0aGlzLl9yZXBlYXQpIHsKLSAgICAgICAgICAgIHRoaXMuX3JlcGVh
dGVkID0gdGhpcy5fcmVwZWF0OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgX3VwZGF0ZUluZGV4OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fdXBkYXRlUmVwZWF0KCkpCi0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIGlmICgrK3RoaXMuX2luZGV4ID49IHRoaXMuX2l0ZW1zLmxlbmd0
aCkKLSAgICAgICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICB9LAotICAgIGN5Y2xlOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5faXRlbXNbdGhpcy5faW5k
ZXhdOwotICAgICAgICB0aGlzLl91cGRhdGVJbmRleCgpOwotICAgICAgICByZXR1cm4gcmVzdWx0
OwotICAgIH0KLX0KLQotdmFyIHBlb3BsZSA9IG5ldyBDeWNsZXIoWwotICAgICdFdXN0YWNlIEJh
Z2dlJywKLSAgICAnRGljayBEYXN0YXJkbHknLAotICAgICdNYWpvciBHbG9yeScsCi0gICAgJ0Jh
cm5leSBSdWJibGUnLAotICAgICdCdW5ueSBCcmF2bycsCi0gICAgJ1JhY2UgQmFubm9uJywKLV0p
OwotCi12YXIgYnVnVGl0bGVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ1VucmV2aWV3ZWQuIENocm9t
aXVtIHJlYmFzZWxpbmVzIGZvciByOTM3OTQuICogLi4uJywKLSAgICAnRml4IGJ1aWxkIHdoZW4g
R0NDIDQuMiBpcyBub3QgaW5zdGFsbGVkLiAqIC4uLiAnLAotICAgICdbUXRdIFVucmV2aWV3ZWQg
Z2FyZGVuaW5nLiAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6IFNraXAgbmV3IHRlc3RzIHVudGlsIC4u
LicsCi0gICAgJ2dhcmRlbi1vLW1hdGljIG5lZWRzIGEgd2F5IHRvIHJlcG9ydCB3aGVyZSBhbmQg
aG93IHRlc3RzIGFyZSBmYWlsaW5nIGluIC4uLiAnLAotICAgICdSRUdSRVNTSU9OKHI5MDk3MSk6
IEZpeCBhbiBhc3NlcnRpb24gZmFpbHVyZSB3aXRoIHRleHRhcmVhIHBsYWNlaG9sZGVyLiAuLi4n
LAotICAgICdJbmNvcnJlY3QgbGF5b3V0IG9mIDpiZWZvcmUgYW5kIDphZnRlciBjb250ZW50LCB3
aXRoIGRpc3BsYXkgdGFibGUsIC4uLicsCi0gICAgJyBKU0hUTUxJbWFnZUVsZW1lbnQgKGFuZCBh
c3NvY2lhdGVkIE5vZGUpIGlzIGFiYW5kb25lZCB3aGVuIGltYWdlIGxvYWQgaXMgLi4uICcKLV0p
OwotCi12YXIgdGVzdE5hbWVzID0gbmV3IEN5Y2xlcihbCi0gICAgJ2Zhc3QvcnVieS90ZXh0LWVt
cGhhc2lzLmh0bWwnLAotICAgICdwbHVnaW5zL2Rlc3Ryb3ktZHVyaW5nLW5wcC1uZXcuaHRtbCcs
Ci0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNjA3NDkuaHRtbCcsCi0gICAgJ3RhYmxlcy9t
b3ppbGxhL2J1Z3MvYnVnNTE3MjcuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVn
MzM4NTUuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDYuaHRtJywKLSAg
ICAndGFibGVzL21vemlsbGEvYnVncy9idWcxODM1OS5odG1sJywKLSAgICAndGFibGVzL21vemls
bGEvYnVncy9idWc0NjM2OC0xLmh0bWwnLAotICAgICd0YWJsZXMvbW96aWxsYS9idWdzL2J1ZzQ2
MzY4LTIuaHRtbCcsCi0gICAgJ3RhYmxlcy9tb3ppbGxhL2J1Z3MvYnVnNTI1MDUuaHRtbCcKLV0p
OwotCi12YXIgYnVpbGRlcnMgPSBuZXcgQ3ljbGVyKE9iamVjdC5rZXlzKGNvbmZpZy5jdXJyZW50
QnVpbGRlcnMoKSksIDMpOwotCi12YXIgZXhwZWN0YXRpb25zID0gbmV3IEN5Y2xlcihbCi0gICAg
J1RFWFQnLAotICAgICdJTUFHRStURVhUJywKLSAgICAnVElNRU9VVCcsCi0gICAgJ0NSQVNIJwot
XSwgNCk7Ci0KLWZ1bmN0aW9uIGNyZWF0ZVJlc3VsdE5vZGVzQnlCdWlsZGVyKGJ1aWxkZXJGYWls
dXJlQ291bnQpCi17Ci0gICAgdmFyIHJlc3VsdCA9IHt9OwotICAgIGZvcih2YXIgaSA9IDA7IGkg
PCBidWlsZGVyRmFpbHVyZUNvdW50OyArK2kpCi0gICAgICAgIHJlc3VsdFtidWlsZGVycy5jeWNs
ZSgpXSA9IHsgYWN0dWFsOiBleHBlY3RhdGlvbnMuY3ljbGUoKSB9OwotICAgIHJldHVybiByZXN1
bHQ7Ci19Ci0KLXZhciBjdXJyZW50UmV2aXNpb24gPSA2NjY2NjsKLXZhciBjdXJyZW50TWludXRl
c0FnbyA9IDA7Ci0KLWZ1bmN0aW9uIGNyZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoY29tbWl0RGF0
YUNvdW50LCBmYWlsdXJlQW5hbHlzaXNDb3VudCwgYnVpbGRlckZhaWx1cmVDb3VudCkKLXsKLSAg
ICB2YXIgZmFpbGluZ1Rlc3RzU3VtbWFyeSA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdU
ZXN0c1N1bW1hcnkoKTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvbW1pdERhdGFDb3VudDsg
KytpKQotICAgICAgICBmYWlsaW5nVGVzdHNTdW1tYXJ5LmFkZENvbW1pdERhdGEoewotICAgICAg
ICAgICAgdGltZTogbWludXRlc0FnbyhjdXJyZW50TWludXRlc0FnbysrKSwKLSAgICAgICAgICAg
IHJldmlzaW9uOiBjdXJyZW50UmV2aXNpb24rKywKLSAgICAgICAgICAgIHN1bW1hcnk6IGJ1Z1Rp
dGxlcy5jeWNsZSgpLAotICAgICAgICAgICAgYXV0aG9yOiBwZW9wbGUuY3ljbGUoKSwKLSAgICAg
ICAgICAgIHJldmlld2VyOiBwZW9wbGUuY3ljbGUoKQotICAgICAgICB9KTsKLSAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGZhaWx1cmVBbmFseXNpc0NvdW50OyArK2kpCi0gICAgICAgIGZhaWxpbmdU
ZXN0c1N1bW1hcnkuYWRkRmFpbHVyZUFuYWx5c2lzKHsKLSAgICAgICAgICAgIHRlc3ROYW1lOiB0
ZXN0TmFtZXMuY3ljbGUoKSwKLSAgICAgICAgICAgIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiBjcmVh
dGVSZXN1bHROb2Rlc0J5QnVpbGRlcihidWlsZGVyRmFpbHVyZUNvdW50KQotICAgICAgICB9KTsK
LSAgICByZXR1cm4gZmFpbGluZ1Rlc3RzU3VtbWFyeTsKLX0KLQotZnVuY3Rpb24gY3JlYXRlQnVp
bGRlcnNGYWlsaW5nKGZhaWxpbmdCdWlsZGVyQ291bnQpCi17Ci0gICAgdmFyIGJ1aWxkZXJzRmFp
bGluZyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkJ1aWxkZXJzRmFpbGluZygpOwotICAgIGJ1aWxk
ZXJOYW1lTGlzdCA9IFtdOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmFpbGluZ0J1aWxkZXJD
b3VudDsgKytpKQotICAgICAgICBidWlsZGVyTmFtZUxpc3QucHVzaChidWlsZGVycy5jeWNsZSgp
KTsKLSAgICBidWlsZGVyc0ZhaWxpbmcuc2V0RmFpbGluZ0J1aWxkZXJzKGJ1aWxkZXJOYW1lTGlz
dCk7Ci0gICAgcmV0dXJuIGJ1aWxkZXJzRmFpbGluZwotfQotCi0kKGRvY3VtZW50KS5yZWFkeShm
dW5jdGlvbigpIHsKLQotICAgIHZhciBhY3Rpb25zID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuU3Ry
ZWFtKCk7Ci0gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoYWN0aW9ucywgZG9jdW1lbnQu
Ym9keS5maXJzdENoaWxkKTsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBBY3Rp
b24gb2JqZWN0LgotICAgIHZhciBidXR0b24gPSBkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxk
KTsKLSAgICBidXR0b24udGV4dENvbnRlbnQgPSAndXBkYXRlJzsKLQotICAgIGFjdGlvbnMuYWRk
KGNyZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMywgNCwgMSkpOwotICAgIGFjdGlvbnMuYWRkKGNy
ZWF0ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMywgMSwgMykpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0
ZUZhaWxpbmdUZXN0c1N1bW1hcnkoMSwgMjAsIDEpKTsKLSAgICBhY3Rpb25zLmFkZChjcmVhdGVC
dWlsZGVyc0ZhaWxpbmcoMSkpOwotICAgIGFjdGlvbnMuYWRkKGNyZWF0ZUJ1aWxkZXJzRmFpbGlu
Zyg4KSk7Ci19KTsKLQotfSkoKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL3N1bW1hcnktbW9jay5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5
bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdHJhY191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3RyYWNfdW5pdHRlc3RzLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMzQ1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsK
LQotbW9kdWxlKCJ0cmFjIik7Ci0KLXZhciBrRXhhbXBsZUNvbW1pdERhdGFYTUwgPSAKLSAgICAn
PD94bWwgdmVyc2lvbj0iMS4wIj8+XG5cbicgKwotICAgICc8cnNzIHhtbG5zOmRjPSJodHRwOi8v
cHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmVyc2lvbj0iMi4wIj5cblxuJyArCi0gICAgJyAg
XG5cbicgKwotICAgICdcblxuJyArCi0gICAgJyAgPGNoYW5uZWw+XG5cbicgKwotICAgICcgICAg
PHRpdGxlPlJldmlzaW9ucyBvZiAvdHJ1bms8L3RpdGxlPlxuXG4nICsKLSAgICAnICAgIDxsaW5r
Pmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj05MjM2MjwvbGluaz5cblxuJyAr
Ci0gICAgJyAgICA8ZGVzY3JpcHRpb24+VHJhYyBMb2cgLSBSZXZpc2lvbnMgb2YgL3RydW5rPC9k
ZXNjcmlwdGlvbj5cblxuJyArCi0gICAgJyAgICA8bGFuZ3VhZ2U+ZW4tVVM8L2xhbmd1YWdlPlxu
XG4nICsKLSAgICAnICAgIDxnZW5lcmF0b3I+VHJhYyAwLjExLjc8L2dlbmVyYXRvcj5cblxuJyAr
Ci0gICAgJyAgICA8aW1hZ2U+XG5cbicgKwotICAgICcgICAgICA8dGl0bGU+V2ViS2l0PC90aXRs
ZT5cblxuJyArCi0gICAgJyAgICAgIDx1cmw+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaHJvbWUv
c2l0ZS9pY29uLnBuZzwvdXJsPlxuXG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTkyMzYyPC9saW5rPlxuXG4nICsKLSAgICAnICAgIDwv
aW1hZ2U+XG5cbicgKwotICAgICcgICAgPGl0ZW0+XG5cbicgKwotICAgICcgICAgICAgICAgPGF1
dGhvcj5tYWNwaGVyc29uQGNocm9taXVtLm9yZzwvYXV0aG9yPlxuXG4nICsKLSAgICAnICAgICAg
PHB1YkRhdGU+VGh1LCAwNCBBdWcgMjAxMSAwMjowOToxOSBHTVQ8L3B1YkRhdGU+XG5cbicgKwot
ICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzNDI6IFN1cHBvcnQgY2FzdCBiZXR3ZWVuIENT
U1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uPC90aXRsZT5cblxuJyAr
Ci0gICAgJyAgICAgIDxsaW5rPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMzQy
L3RydW5rPC9saW5rPlxuXG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNl
Ij5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjM0Mi90cnVuazwvZ3VpZD5cblxu
JyArCi0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtcblxuJyArCi0gICAgJ1N1cHBv
cnQgY2FzdCBiZXR3ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4g
Q1NTU3R5bGVTZWxlY3Rvci5cblxuJyArCi0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJl
Zj0iaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NjU3IiZndDsmbHQ7
c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjU2NTcmbHQ7L2EmZ3Q7XG5cbicgKwotICAgICcmbHQ7L3AmZ3Q7
XG5cbicgKwotICAgICcmbHQ7cCZndDtcblxuJyArCi0gICAgJ1Jldmlld2VkIGJ5IFNpbW9uIEZy
YXNlci5cblxuJyArCi0gICAgJyZsdDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4n
ICsKLSAgICAnTm8gbmV3IHRlc3RzIC8gcmVmYWN0b3Jpbmcgb25seS5cblxuJyArCi0gICAgJyZs
dDsvcCZndDtcblxuJyArCi0gICAgJyZsdDtwJmd0O1xuXG4nICsKLSAgICAnKiBjc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oOlxuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6XG5cbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCBm
cm9tIEVCb3hTaXppbmcuXG4nICsKLSAgICAnKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpv
cGVyYXRvciBFQm94U2l6aW5nKTpcbicgKwotICAgICdJbXBsZW1lbnQgY2FzdCB0byBFQm94U2l6
aW5nLlxuJyArCi0gICAgJyogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOlxuJyArCi0gICAgJyhX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KTpcbicgKwotICAgICdVc2Ug
YXBwcm9wcmlhdGUgbWFjcm8gdG8gc2ltcGxpZnkgY29kZSB1c2luZyBjYXN0LlxuJyArCi0gICAg
JyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9uPlxuJyArCi0gICAgJyAgICAgIDxj
YXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAgICA8L2l0ZW0+PGl0ZW0+XG4nICsK
LSAgICAnICAgICAgICAgIDxhdXRob3I+Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc8L2F1dGhvcj5c
bicgKwotICAgICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDExIDAyOjAxOjMxIEdNVDwv
cHViRGF0ZT5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzNDE6IEltcGxlbWVu
dCBFdmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAg
PGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvOTIzNDEvdHJ1bms8L2xpbms+
XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC85MjM0MS90cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8
ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsKLSAgICAnSW1wbGVtZW50IEV2ZW50U2VuZGVyLnNj
YWxlUGFnZUJ5KClcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODAxMyImZ3Q7Jmx0O3NwYW4gY2xh
c3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTU4MDEzJmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAg
ICcmbHQ7cCZndDtcbicgKwotICAgICdQYXRjaCBieSBLZW50YXJvIEhhcmEgJmFtcDtsdDsmbHQ7
YSBjbGFzcz0ibWFpbC1saW5rIiBocmVmPSJtYWlsdG86aGFyYWtlbkBnb29nbGUuY29tIiZndDsm
bHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7ICZsdDsvc3BhbiZndDtoYXJha2VuQGdvb2dsZS5jb20m
bHQ7L2EmZ3Q7JmFtcDtndDsgb24gMjAxMS0wOC0wM1xuJyArCi0gICAgJ1Jldmlld2VkIGJ5IERh
cmluIEZpc2hlci5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4n
ICsKLSAgICAnSW1wbGVtZW50ZWQgRXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoZiwgeCwgeSksIHdo
aWNoIHNjYWxlcyBhIHBhZ2UgYnkgYSBmYWN0b3Igb2YgZlxuJyArCi0gICAgJ2FuZCB0aGVuIHNl
dHMgYSBzY3JvbGwgcG9zaXRpb24gdG8gKHgsIHkpLiBFbmFibGVkIHRoZSB0ZXN0cyB0aGF0IGhh
ZCBiZWVuIHdhaXRpbmdcbicgKwotICAgICdmb3IgdGhlIGltcGxlbWVudGF0aW9uIG9mIEV2ZW50
U2VuZGVyLnNjYWxlUGFnZUJ5KGYsIHgsIHkpLlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwot
ICAgICcmbHQ7cCZndDtcbicgKwotICAgICdTb3VyY2UvV2ViS2l0L2Nocm9taXVtOlxuJyArCi0g
ICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdUZXN0czogY29t
cG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFxuJyArCi0gICAgJyZs
dDsvcCZndDtcbicgKwotICAgICcmbHQ7YmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZn
dDtcbicgKwotICAgICdmYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmsuaHRtbFxuJyArCi0g
ICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbFxuJyArCi0g
ICAgJ2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicgKwotICAg
ICdmYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1oaWRkZW4u
aHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGluZy1jbGll
bnQtcmVjdC5odG1sXG4nICsKLSAgICAnZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1ib3VuZGlu
Zy1jbGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDsv
YmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIHB1YmxpYy9X
ZWJWaWV3Lmg6XG4nICsKLSAgICAnKiBzcmMvV2ViVmlld0ltcGwuY3BwOlxuJyArCi0gICAgJyhX
ZWJLaXQ6OldlYlZpZXdJbXBsOjpzY2FsZVBhZ2UpOiBBIHdyYXBwZXIgbWV0aG9kIGZvciBzY2Fs
ZVBhZ2UoKSBpbiBXZWJDb3JlLlxuJyArCi0gICAgJyogc3JjL1dlYlZpZXdJbXBsLmg6XG4nICsK
LSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJ1Rvb2xzOlxu
JyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdUZXN0
czogY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24uaHRtbFxuJyArCi0g
ICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7YmxvY2txdW90ZSZndDtcbicgKwotICAgICcm
bHQ7cCZndDtcbicgKwotICAgICdmYXN0L3JlcGFpbnQvc2NhbGUtcGFnZS1zaHJpbmsuaHRtbFxu
JyArCi0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1jbGllbnQtcmVjdHMuaHRtbFxu
JyArCi0gICAgJ2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLmh0bWxcbicg
KwotICAgICdmYXN0L2V2ZW50cy9zY3JvbGwtaW4tc2NhbGVkLXBhZ2Utd2l0aC1vdmVyZmxvdy1o
aWRkZW4uaHRtbFxuJyArCi0gICAgJ2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUtcGFnZS1ib3VuZGlu
Zy1jbGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnZmFzdC9kb20vUmFuZ2Uvc2NhbGUtcGFnZS1i
b3VuZGluZy1jbGllbnQtcmVjdC5odG1sXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAg
JyZsdDsvYmxvY2txdW90ZSZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0V2ZW50U2VuZGVyLmNwcDpcbicgKwotICAgICcoRXZlbnRT
ZW5kZXI6OkV2ZW50U2VuZGVyKTogQWRkZWQgYmluZGluZ3MgZm9yIHNjYWxlUGFnZUJ5KCkuXG4n
ICsKLSAgICAnKEV2ZW50U2VuZGVyOjpzY2FsZVBhZ2VCeSk6IEEgd3JhcHBlciBtZXRob2QgZm9y
IHNjYWxlUGFnZSgpIGluIFdlYlZpZXcuXG4nICsKLSAgICAnKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9FdmVudFNlbmRlci5oOlxuJyArCi0gICAgJyogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmNwcDpcbicgKwotICAgICcoVGVzdFNoZWxsOjpyZXNldFRlc3RDb250cm9sbGVy
KTogUmVzZXRzIHRoZSBzY2FsZSBmYWN0b3IgdG8gMS5cbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4n
ICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnTGF5b3V0VGVzdHM6XG4nICsKLSAgICAnJmx0
Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xuJyArCi0gICAgJyogcGxhdGZvcm0vY2hyb21p
dW0tbGludXgvY29tcG9zaXRpbmcvc2NhbGluZy90aWxlZC1sYXllci1yZWN1cnNpb24tZXhwZWN0
ZWQucG5nOiBBZGRlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLWxpbnV4L2Zhc3Qv
cmVwYWludC9zY2FsZS1wYWdlLXNocmluay1leHBlY3RlZC5wbmc6IEFkZGVkLlxuJyArCi0gICAg
JyogcGxhdGZvcm0vY2hyb21pdW0tbGludXgvZmFzdC9yZXBhaW50L3NjYWxlLXBhZ2Utc2hyaW5r
LWV4cGVjdGVkLnR4dDogQWRkZWQuXG4nICsKLSAgICAnKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9kb20vRWxlbWVudC9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2Rv
bS9SYW5nZS9zY2FsZS1wYWdlLWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9mYXN0L2RvbS9FbGVtZW50
L3NjYWxlLXBhZ2UtYm91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxu
JyArCi0gICAgJyogcGxhdGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL0VsZW1lbnQvc2NhbGUt
cGFnZS1jbGllbnQtcmVjdHMtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCi0gICAgJyogcGxh
dGZvcm0vY2hyb21pdW0td2luL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtYm91bmRpbmctY2xp
ZW50LXJlY3QtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLlxuJyArCi0gICAgJyogcGxhdGZvcm0vY2hy
b21pdW0td2luL2Zhc3QvZG9tL1JhbmdlL3NjYWxlLXBhZ2UtY2xpZW50LXJlY3RzLWV4cGVjdGVk
LnR4dDogUmVtb3ZlZC5cbicgKwotICAgICcqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0
YXRpb25zLnR4dDogRW5hYmxlZCBvbmUgdGVzdC4gRW5hYmxlZCB0d28gdGVzdHMgZm9yIGNocm9t
aXVtLWxpbnV4LlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICc8L2Rlc2NyaXB0aW9u
PlxuJyArCi0gICAgJyAgICAgIDxjYXRlZ29yeT5Mb2c8L2NhdGVnb3J5PlxuJyArCi0gICAgJyAg
ICA8L2l0ZW0+PGl0ZW0+XG4nICsKLSAgICAnICAgICAgICAgIDxhdXRob3I+cm5pd2FAd2Via2l0
Lm9yZzwvYXV0aG9yPlxuJyArCi0gICAgJyAgICAgIDxwdWJEYXRlPlRodSwgMDQgQXVnIDIwMTEg
MDE6NDE6MjkgR01UPC9wdWJEYXRlPlxuJyArCi0gICAgJyAgICAgIDx0aXRsZT5SZXZpc2lvbiA5
MjMzODogUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2VsaW5lIGZyb20gcjkyMzE1LlxuJyArCi0g
ICAgJyogLi4uPC90aXRsZT5cbicgKwotICAgICcgICAgICA8bGluaz5odHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC85MjMzOC90cnVuazwvbGluaz5cbicgKwotICAgICcgICAgICA8Z3Vp
ZCBpc1Blcm1hTGluaz0iZmFsc2UiPmh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0Lzky
MzM4L3RydW5rPC9ndWlkPlxuJyArCi0gICAgJyAgICAgIDxkZXNjcmlwdGlvbj4mbHQ7cCZndDtc
bicgKwotICAgICdSZXZlcnQgYW4gZXJyb25lb3VzIHJlYmFzZWxpbmUgZnJvbSAmbHQ7YSBjbGFz
cz0iY2hhbmdlc2V0IiBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMx
NSIgdGl0bGU9IlJlbW92ZSBMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMgZmxhZyBmcm9t
IG5hdmlnYXRvciBJREwgZmlsZXMgLi4uIiZndDtyOTIzMTUmbHQ7L2EmZ3Q7LlxuJyArCi0gICAg
JyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICcqIGZhc3QvZG9tL25h
dmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6XG4nICsKLSAgICAnJmx0Oy9w
Jmd0O1xuJyArCi0gICAgJzwvZGVzY3JpcHRpb24+XG4nICsKLSAgICAnICAgICAgPGNhdGVnb3J5
PkxvZzwvY2F0ZWdvcnk+XG4nICsKLSAgICAnICAgIDwvaXRlbT48aXRlbT5cbicgKwotICAgICcg
ICAgICAgICAgPGF1dGhvcj5ub2FtLnJvc2VudGhhbEBub2tpYS5jb208L2F1dGhvcj5cbicgKwot
ICAgICcgICAgICA8cHViRGF0ZT5UaHUsIDA0IEF1ZyAyMDExIDAwOjIyOjIxIEdNVDwvcHViRGF0
ZT5cbicgKwotICAgICcgICAgICA8dGl0bGU+UmV2aXNpb24gOTIzMzc6IFtRdF1bVGV4bWFwXVtS
RUdSRVNTSU9OXSBodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9ybS1zdHlsZS5o
dG1sIC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIzMzcvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQg
aXNQZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjMz
Ny90cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4n
ICsKLSAgICAnW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dICZsdDthIGNsYXNzPSJleHQtbGluayIg
aHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvYmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCIm
Z3Q7Jmx0O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cDovL3dlYmtpdC5v
cmcvYmxvZy1maWxlcy90cmFuc2Zvcm0tc3R5bGUuaHRtbCZsdDsvYSZndDsgZG9lc25cJ3Qgc2hv
dyBjb21wb3NpdGVkIGNvbnRlbnRcbicgKwotICAgICcmbHQ7YSBjbGFzcz0iZXh0LWxpbmsiIGhy
ZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTYyOSImZ3Q7Jmx0
O3NwYW4gY2xhc3M9Imljb24iJmd0OyAmbHQ7L3NwYW4mZ3Q7aHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTY1NjI5Jmx0Oy9hJmd0O1xuJyArCi0gICAgJyZsdDsvcCZndDtc
bicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdSZXZpZXdlZCBieSBCZW5qYW1pbiBQb3Vs
YWluLlxuJyArCi0gICAgJyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAg
ICdTb21lIG5vbi1FUzIgaW5pdGlhbGl6YXRpb24gd2FzIHdyb25nZnVsbHkgI2lmZGVmZWQgaW4g
Q1BVKFg4NikgYW5kIHRodXMgY29tcGlsZWQtb3V0LlxuJyArCi0gICAgJ1doZW4gcHV0IGl0IGlu
IHRoZSBjb3JyZWN0ICNpZmRlZiwgY29tcG9zaXRlZCBsYXllcnMgd2hpY2ggcmVxdWlyZSBhbiBp
bnRlcm1lZGlhdGUgYnVmZmVyXG4nICsKLSAgICAnd29yayBhZ2Fpbi5cbicgKwotICAgICcmbHQ7
L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnTm8gbmV3IHRlc3RzLiBFeGlz
dGluZyBvcGFjaXR5IHRlc3RzIGluIExheW91dFRlc3RzL2NvbXBvc2l0aW5nIHRlc3QgdGhpcy5c
bicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnJmx0O3AmZ3Q7XG4nICsKLSAgICAnKiBw
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcDpcbicgKwotICAgICco
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjpiaW5kKTpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4n
ICsKLSAgICAnPC9kZXNjcmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9j
YXRlZ29yeT5cbicgKwotICAgICcgICAgPC9pdGVtPjxpdGVtPlxuJyArCi0gICAgJyAgICAgICAg
ICA8YXV0aG9yPmNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPC9hdXRob3I+XG4nICsKLSAgICAnICAg
ICAgPHB1YkRhdGU+V2VkLCAwMyBBdWcgMjAxMSAwNDoyNjo1MiBHTVQ8L3B1YkRhdGU+XG4nICsK
LSAgICAnICAgICAgPHRpdGxlPlJldmlzaW9uIDkyMjU5OiBVbnJldmlld2VkLCByZXZlcnRpbmcg
cjkyMjU2LlxuJyArCi0gICAgJ2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2
IC4uLjwvdGl0bGU+XG4nICsKLSAgICAnICAgICAgPGxpbms+aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIyNTkvdHJ1bms8L2xpbms+XG4nICsKLSAgICAnICAgICAgPGd1aWQgaXNQ
ZXJtYUxpbms9ImZhbHNlIj5odHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1OS90
cnVuazwvZ3VpZD5cbicgKwotICAgICcgICAgICA8ZGVzY3JpcHRpb24+Jmx0O3AmZ3Q7XG4nICsK
LSAgICAnVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nICZsdDthIGNsYXNzPSJjaGFuZ2VzZXQiIGhyZWY9
Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2IiB0aXRsZT0iTWFrZSBFdmVu
dERpc3BhdGNoTWVkaWF0b3IgUmVmQ291bnRlZC4gLi4uIiZndDtyOTIyNTYmbHQ7L2EmZ3Q7Llxu
JyArCi0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvOTIyNTYiJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0Oy9z
cGFuJmd0O2h0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzkyMjU2Jmx0Oy9hJmd0O1xu
JyArCi0gICAgJyZsdDthIGNsYXNzPSJleHQtbGluayIgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTkzIiZndDsmbHQ7c3BhbiBjbGFzcz0iaWNvbiImZ3Q7
ICZsdDsvc3BhbiZndDtodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjU1
OTMmbHQ7L2EmZ3Q7XG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xu
JyArCi0gICAgJ0NhdXNpbmcgdG9ucyBvZiBjcmFzaGVzIG9uIHRoZSBjaHJvbWl1bSB3aW4gYm90
cyAoUmVxdWVzdGVkIGJ5XG4nICsKLSAgICAnamFtZXNyIG9uICN3ZWJraXQpLlxuJyArCi0gICAg
JyZsdDsvcCZndDtcbicgKwotICAgICcmbHQ7cCZndDtcbicgKwotICAgICdQYXRjaCBieSBTaGVy
aWZmIEJvdCAmYW1wO2x0OyZsdDthIGNsYXNzPSJtYWlsLWxpbmsiIGhyZWY9Im1haWx0bzp3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20iJmd0OyZsdDtzcGFuIGNsYXNzPSJpY29uIiZndDsgJmx0
Oy9zcGFuJmd0O3dlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbSZsdDsvYSZndDsmYW1wO2d0OyBv
biAyMDExLTA4LTAyXG4nICsKLSAgICAnJmx0Oy9wJmd0O1xuJyArCi0gICAgJyZsdDtwJmd0O1xu
JyArCi0gICAgJyogZG9tL0V2ZW50LmNwcDpcbicgKwotICAgICcqIGRvbS9FdmVudC5oOlxuJyAr
Ci0gICAgJyogZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHA6XG4nICsKLSAgICAnKFdlYkNvcmU6OkV2
ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6XG4nICsKLSAgICAnKiBkb20vRXZlbnREaXNw
YXRjaGVyLmg6XG4nICsKLSAgICAnKiBkb20vS2V5Ym9hcmRFdmVudC5jcHA6XG4nICsKLSAgICAn
KiBkb20vS2V5Ym9hcmRFdmVudC5oOlxuJyArCi0gICAgJyogZG9tL01vdXNlRXZlbnQuY3BwOlxu
JyArCi0gICAgJyogZG9tL01vdXNlRXZlbnQuaDpcbicgKwotICAgICcqIGRvbS9Ob2RlLmNwcDpc
bicgKwotICAgICcoV2ViQ29yZTo6Tm9kZTo6ZGlzcGF0Y2hFdmVudCk6XG4nICsKLSAgICAnKFdl
YkNvcmU6Ok5vZGU6OmRpc3BhdGNoS2V5RXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2Rl
OjpkaXNwYXRjaE1vdXNlRXZlbnQpOlxuJyArCi0gICAgJyhXZWJDb3JlOjpOb2RlOjpkaXNwYXRj
aFdoZWVsRXZlbnQpOlxuJyArCi0gICAgJyogZG9tL1doZWVsRXZlbnQuY3BwOlxuJyArCi0gICAg
JyogZG9tL1doZWVsRXZlbnQuaDpcbicgKwotICAgICcmbHQ7L3AmZ3Q7XG4nICsKLSAgICAnPC9k
ZXNjcmlwdGlvbj5cbicgKwotICAgICcgICAgICA8Y2F0ZWdvcnk+TG9nPC9jYXRlZ29yeT5cbicg
KwotICAgICcgICAgPC9pdGVtPlxuJyArCi0gICAgJyA8L2NoYW5uZWw+XG4nICsKLSAgICAnPC9y
c3M+XG4nCi0KLXZhciBrRXhhbXBsZUNvbW1pdERhdGFMaXN0ID0gW3sKLSAgICAicmV2aXNpb24i
OiA5MjM0MiwKLSAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIzNDI6IFN1cHBvcnQgY2FzdCBiZXR3
ZWVuIENTU1ByaW1pdGl2ZVZhbHVlIGFuZCBFQm94U2l6aW5nLCB1c2UgaW4gLi4uIiwKLSAgICAi
dGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAyOjA5OjE5IEdNVCIsCi0gICAgInN1bW1hcnkiOiAi
U3VwcG9ydCBjYXN0IGJldHdlZW4gQ1NTUHJpbWl0aXZlVmFsdWUgYW5kIEVCb3hTaXppbmcsIHVz
ZSBpbiBDU1NTdHlsZVNlbGVjdG9yLiIsCi0gICAgImF1dGhvciI6ICJtYWNwaGVyc29uQGNocm9t
aXVtLm9yZyIsCi0gICAgInJldmlld2VyIjogIlNpbW9uIEZyYXNlciIsCi0gICAgImJ1Z0lEIjog
NjU2NTcsCi0gICAgInJldmVydGVkUmV2aXNpb24iOiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2
aXNpb24iOiA5MjM0MSwKLSAgICAidGl0bGUiOiAiUmV2aXNpb24gOTIzNDE6IEltcGxlbWVudCBF
dmVudFNlbmRlci5zY2FsZVBhZ2VCeSgpIC4uLiIsCi0gICAgInRpbWUiOiAiVGh1LCAwNCBBdWcg
MjAxMSAwMjowMTozMSBHTVQiLAotICAgICJzdW1tYXJ5IjogIkltcGxlbWVudCBFdmVudFNlbmRl
ci5zY2FsZVBhZ2VCeSgpIiwKLSAgICAiYXV0aG9yIjogIktlbnRhcm8gSGFyYSIsCi0gICAgInJl
dmlld2VyIjogIkRhcmluIEZpc2hlciIsCi0gICAgImJ1Z0lEIjogNTgwMTMsCi0gICAgInJldmVy
dGVkUmV2aXNpb24iOiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNpb24iOiA5MjMzOCwKLSAg
ICAidGl0bGUiOiAiUmV2aXNpb24gOTIzMzg6IFJldmVydCBhbiBlcnJvbmVvdXMgcmViYXNlbGlu
ZSBmcm9tIHI5MjMxNS5cbiogLi4uIiwKLSAgICAidGltZSI6ICJUaHUsIDA0IEF1ZyAyMDExIDAx
OjQxOjI5IEdNVCIsCi0gICAgInN1bW1hcnkiOiAiUmV2ZXJ0IGFuIGVycm9uZW91cyByZWJhc2Vs
aW5lIGZyb20gcjkyMzE1LiIsCi0gICAgImF1dGhvciI6ICJybml3YUB3ZWJraXQub3JnIiwKLSAg
ICAicmV2aWV3ZXIiOiBudWxsLAotICAgICJidWdJRCI6IE5hTiwKLSAgICAicmV2ZXJ0ZWRSZXZp
c2lvbiI6IHVuZGVmaW5lZAotfSwgewotICAgICJyZXZpc2lvbiI6IDkyMzM3LAotICAgICJ0aXRs
ZSI6ICJSZXZpc2lvbiA5MjMzNzogW1F0XVtUZXhtYXBdW1JFR1JFU1NJT05dIGh0dHA6Ly93ZWJr
aXQub3JnL2Jsb2ctZmlsZXMvdHJhbnNmb3JtLXN0eWxlLmh0bWwgLi4uIiwKLSAgICAidGltZSI6
ICJUaHUsIDA0IEF1ZyAyMDExIDAwOjIyOjIxIEdNVCIsCi0gICAgInN1bW1hcnkiOiAiW1F0XVtU
ZXhtYXBdW1JFR1JFU1NJT05dICBodHRwOi8vd2Via2l0Lm9yZy9ibG9nLWZpbGVzL3RyYW5zZm9y
bS1zdHlsZS5odG1sIGRvZXNuJ3Qgc2hvdyBjb21wb3NpdGVkIGNvbnRlbnQiLAotICAgICJhdXRo
b3IiOiAibm9hbS5yb3NlbnRoYWxAbm9raWEuY29tIiwKLSAgICAicmV2aWV3ZXIiOiAiQmVuamFt
aW4gUG91bGFpbiIsCi0gICAgImJ1Z0lEIjogNjU2MjksCi0gICAgInJldmVydGVkUmV2aXNpb24i
OiB1bmRlZmluZWQKLX0sIHsKLSAgICAicmV2aXNpb24iOiA5MjI1OSwKLSAgICAidGl0bGUiOiAi
UmV2aXNpb24gOTIyNTk6IFVucmV2aWV3ZWQsIHJldmVydGluZyByOTIyNTYuXG5odHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC85MjI1NiAuLi4iLAotICAgICJ0aW1lIjogIldlZCwgMDMg
QXVnIDIwMTEgMDQ6MjY6NTIgR01UIiwKLSAgICAic3VtbWFyeSI6ICJVbnJldmlld2VkLCByZXZl
cnRpbmcgcjkyMjU2LiIsCi0gICAgImF1dGhvciI6ICJTaGVyaWZmIEJvdCIsCi0gICAgInJldmll
d2VyIjogbnVsbCwKLSAgICAiYnVnSUQiOiA2NTU5MywKLSAgICAicmV2ZXJ0ZWRSZXZpc2lvbiI6
IDkyMjU2Ci19XTsKLQotdGVzdCgiY2hhbmdlc2V0VVJMIiwgMSwgZnVuY3Rpb24oKSB7Ci0gICAg
ZXF1YWxzKHRyYWMuY2hhbmdlc2V0VVJMKDEyMzQpLCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvMTIzNCIpOwotfSk7Ci0KLXRlc3QoImxvZ1VSTCIsIDQsIGZ1bmN0aW9uKCkgewot
ICAgIGVxdWFscyh0cmFjLmxvZ1VSTCgndHJ1bmsnLCAxMjM0LCAxMjM2LCBmYWxzZSwgZmFsc2Up
LCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9MTIz
NCZsaW1pdD00Iik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzQs
IHRydWUsIGZhbHNlKSwgImh0dHA6Ly90cmFjLndlYmtpdC5vcmcvbG9nL3RydW5rP3Jldj0xMjM0
JnN0b3BfcmV2PTEyMzQmbGltaXQ9MiZ2ZXJib3NlPW9uIik7Ci0gICAgZXF1YWxzKHRyYWMubG9n
VVJMKCd0cnVuaycsIDEyMzYsIDEyMzYsIGZhbHNlLCB0cnVlKSwgImh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvbG9nL3RydW5rP3Jldj0xMjM2JnN0b3BfcmV2PTEyMzYmbGltaXQ9MiZmb3JtYXQ9cnNz
Iik7Ci0gICAgZXF1YWxzKHRyYWMubG9nVVJMKCd0cnVuaycsIDEyMzQsIDEyMzYsIHRydWUsIHRy
dWUpLCAiaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/cmV2PTEyMzYmc3RvcF9yZXY9
MTIzNCZsaW1pdD00JnZlcmJvc2U9b24mZm9ybWF0PXJzcyIpOwotfSk7Ci0KLXRlc3QoInJlY2Vu
dENvbW1pdERhdGEiLCAzLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2ltdWxhdG9yID0gbmV3IE5l
dHdvcmtTaW11bGF0b3IoKTsKLSAgICBzaW11bGF0b3IuZ2V0ID0gZnVuY3Rpb24odXJsLCBjYWxs
YmFjaykKLSAgICB7Ci0gICAgICAgIGVxdWFscyh1cmwsICdodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2xvZy90cnVuaz92ZXJib3NlPW9uJmZvcm1hdD1yc3MmbGltaXQ9MTAnKTsKLSAgICAgICAgc2lt
dWxhdG9yLnNjaGVkdWxlQ2FsbGJhY2soZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB2YXIgcGFy
c2VyID0gbmV3IERPTVBhcnNlcigpOwotICAgICAgICAgICAgdmFyIHJlc3BvbnNlRE9NID0gcGFy
c2VyLnBhcnNlRnJvbVN0cmluZyhrRXhhbXBsZUNvbW1pdERhdGFYTUwsICJhcHBsaWNhdGlvbi94
bWwiKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKHJlc3BvbnNlRE9NKTsKLSAgICAgICAgfSk7Ci0g
ICAgfTsKLQotICAgIHNpbXVsYXRvci5ydW5UZXN0KGZ1bmN0aW9uKCkgewotICAgICAgICB0cmFj
LnJlY2VudENvbW1pdERhdGEoJ3RydW5rJywgMTAsIGZ1bmN0aW9uKGNvbW1pdERhdGFMaXN0KSB7
Ci0gICAgICAgICAgICAkLmVhY2goY29tbWl0RGF0YUxpc3QsIGZ1bmN0aW9uKGluZGV4LCBjb21t
aXREYXRhKSB7Ci0gICAgICAgICAgICAgICAgLy8gSW5jbHVkaW5nIHRoZSBlbnRpcmUgbWVzc2Fn
ZSBtYWtlcyB0aGUgZGVlcEVxdWFsIGJlbG93IHRvIHVud2llbGR5LgotICAgICAgICAgICAgICAg
IGRlbGV0ZSBjb21taXREYXRhLm1lc3NhZ2U7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
IGRlZXBFcXVhbChjb21taXREYXRhTGlzdCwga0V4YW1wbGVDb21taXREYXRhTGlzdCk7Ci0gICAg
ICAgIH0pOwotICAgIH0pOwotfSk7Ci0KLXRlc3QoImNvbW1pdERhdGFGb3JSZXZpc2lvblJhbmdl
IiwgMywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHNpbXVsYXRvciA9IG5ldyBOZXR3b3JrU2ltdWxh
dG9yKCk7Ci0gICAgc2ltdWxhdG9yLmdldCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spCi0gICAg
ewotICAgICAgICBlcXVhbHModXJsLCAnaHR0cDovL3RyYWMud2Via2l0Lm9yZy9sb2cvdHJ1bms/
cmV2PTEyMzY1JnN0b3BfcmV2PTEyMzQ1JmxpbWl0PTIyJnZlcmJvc2U9b24mZm9ybWF0PXJzcycp
OwotICAgICAgICBzaW11bGF0b3Iuc2NoZWR1bGVDYWxsYmFjayhmdW5jdGlvbigpIHsKLSAgICAg
ICAgICAgIHZhciBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7Ci0gICAgICAgICAgICB2YXIgcmVz
cG9uc2VET00gPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGtFeGFtcGxlQ29tbWl0RGF0YVhNTCwg
ImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICAgICAgY2FsbGJhY2socmVzcG9uc2VET00pOwot
ICAgICAgICB9KTsKLSAgICB9OwotCi0gICAgc2ltdWxhdG9yLnJ1blRlc3QoZnVuY3Rpb24oKSB7
Ci0gICAgICAgIHRyYWMuY29tbWl0RGF0YUZvclJldmlzaW9uUmFuZ2UoJ3RydW5rJywgMTIzNDUs
IDEyMzY1LCBmdW5jdGlvbihjb21taXREYXRhTGlzdCkgewotICAgICAgICAgICAgJC5lYWNoKGNv
bW1pdERhdGFMaXN0LCBmdW5jdGlvbihpbmRleCwgY29tbWl0RGF0YSkgewotICAgICAgICAgICAg
ICAgIC8vIEluY2x1ZGluZyB0aGUgZW50aXJlIG1lc3NhZ2UgbWFrZXMgdGhlIGRlZXBFcXVhbCBi
ZWxvdyB0byB1bndpZWxkeS4KLSAgICAgICAgICAgICAgICBkZWxldGUgY29tbWl0RGF0YS5tZXNz
YWdlOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICBkZWVwRXF1YWwoY29tbWl0RGF0YUxp
c3QsIGtFeGFtcGxlQ29tbWl0RGF0YUxpc3QpOwotICAgICAgICB9KTsKLSAgICB9KTsKLX0pOwot
Ci19KSgpOwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvYWN0aW9ucy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zLmpzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMTI0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwg
e307Ci11aS5hY3Rpb25zID0gdWkuYWN0aW9ucyB8fCB7fTsKLQotKGZ1bmN0aW9uKCkgewotCi12
YXIgQWN0aW9uID0gYmFzZS5leHRlbmRzKCdidXR0b24nLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
KSB7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9IG51bGw7Ci0gICAgICAgICQodGhpcykuYWRk
Q2xhc3MoJ2FjdGlvbicpOwotICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywg
ZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE5hbWUpIHsKLSAg
ICAgICAgICAgICAgICAkKHRoaXMpLnRyaWdnZXIodGhpcy5fZXZlbnROYW1lKTsKLSAgICAgICAg
ICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fS5iaW5kKHRoaXMpKTsKLSAgICB9LAotICAgIG1ha2VEZWZhdWx0OiBmdW5jdGlvbigpIHsKLSAg
ICAgICAgJCh0aGlzKS5hZGRDbGFzcygnZGVmYXVsdCcpOwotICAgICAgICByZXR1cm4gdGhpczsK
LSAgICB9Ci19KTsKLQotdWkuYWN0aW9ucy5CbGFtZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsK
LSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdCbGFt
ZSc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICdibGFtZSc7Ci0gICAgICAgIHRoaXMudGl0
bGUgPSAnQmxhbWVzIHRoaXMgZmFpbHVyZSBvbiB0aGlzIHJldmlzaW9uLicKLSAgICB9Ci19KTsK
LQotdWkuYWN0aW9ucy5DbG9zZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsKLSAgICBpbml0OiBm
dW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdDbG9zZSc7Ci0gICAgICAg
IHRoaXMuX2V2ZW50TmFtZSA9ICdjbG9zZSc7Ci0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuUmV2
ZXJ0ID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAg
ICAgICB0aGlzLnRleHRDb250ZW50ID0gJ1JldmVydCc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFt
ZSA9ICdyZXZlcnQnOwotICAgICAgICB0aGlzLnRpdGxlID0gJ1JldmVydHMgdGhpcyByZXZpc2lv
bi4nCi0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuRXhhbWluZSA9IGJhc2UuZXh0ZW5kcyhBY3Rp
b24sIHsKLSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9
ICdFeGFtaW5lJzsKLSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ2V4YW1pbmUnOwotICAgICAg
ICB0aGlzLnRpdGxlID0gJ0V4YW1pbmUgdGhlc2UgZmFpbHVyZXMgaW4gZGV0YWlsLicKLSAgICB9
Ci19KTsKLQotdWkuYWN0aW9ucy5SZWJhc2VsaW5lID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewot
ICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLnRleHRDb250ZW50ID0gJ1JlYmFz
ZWxpbmUnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAncmViYXNlbGluZSc7Ci0gICAgfQot
fSk7Ci0KLXVpLmFjdGlvbnMuRXhwZWN0RmFpbHVyZSA9IGJhc2UuZXh0ZW5kcyhBY3Rpb24sIHsK
LSAgICBpbml0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9ICdFeHBl
Y3QgRmFpbHVyZSc7Ci0gICAgICAgIHRoaXMuX2V2ZW50TmFtZSA9ICdleHBlY3RmYWlsdXJlJzsK
LSAgICB9Ci19KTsKLQotdWkuYWN0aW9ucy5OZXh0ID0gYmFzZS5leHRlbmRzKEFjdGlvbiwgewot
ICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLmlubmVySFRNTCA9ICcmIzk2NTQ7
JzsKLSAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gJ25leHQnOwotICAgICAgICAkKHRoaXMpLmFk
ZENsYXNzKCduZXh0Jyk7Ci0gICAgfQotfSk7Ci0KLXVpLmFjdGlvbnMuUHJldmlvdXMgPSBiYXNl
LmV4dGVuZHMoQWN0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMu
aW5uZXJIVE1MID0gJyYjOTY2NDsnOwotICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSAncHJldmlv
dXMnOwotICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdwcmV2aW91cycpOwotICAgIH0KLX0pOwot
Ci11aS5hY3Rpb25zLkxpc3QgPSBiYXNlLmV4dGVuZHMoJ3VsJywgewotICAgIGluaXQ6IGZ1bmN0
aW9uKGFjdGlvbnMpIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnYWN0aW9ucyc7Ci0gICAg
ICAgIGlmICghYWN0aW9ucykKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgYWN0aW9ucy5m
b3JFYWNoKHRoaXMuYWRkLmJpbmQodGhpcykpOwotICAgIH0sCi0gICAgYWRkOiBmdW5jdGlvbihh
Y3Rpb24pCi0gICAgewotICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2xpJyk7Ci0gICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoYWN0aW9uKTsKLSAgICAgICAgJCh0aGlz
KS5hcHBlbmQoaXRlbSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy91aS9hY3Rpb25zX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MDQy
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvYWN0aW9uc191bml0dGVzdHMuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7
Ci0KLW1vZHVsZSgndWkuYWN0aW9ucycpOwotCi10ZXN0KCdCdXR0b25zJywgNiwgZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGJ1dHRvbkluZm9zID0gW3sKLSAgICAgICAgdmlldzogbmV3IHVpLmFjdGlv
bnMuUmV2ZXJ0KCksCi0gICAgICAgIHRleHQ6ICdSZXZlcnQnLAotICAgICAgICBldmVudDogJ3Jl
dmVydCcKLSAgICB9LCB7Ci0gICAgICAgIHZpZXc6IG5ldyB1aS5hY3Rpb25zLkV4YW1pbmUoKSwK
LSAgICAgICAgdGV4dDogJ0V4YW1pbmUnLAotICAgICAgICBldmVudDogJ2V4YW1pbmUnCi0gICAg
fSwgewotICAgICAgICB2aWV3OiBuZXcgdWkuYWN0aW9ucy5SZWJhc2VsaW5lKCksCi0gICAgICAg
IHRleHQ6ICdSZWJhc2VsaW5lJywKLSAgICAgICAgZXZlbnQ6ICdyZWJhc2VsaW5lJwotICAgIH1d
OwotICAgIGJ1dHRvbkluZm9zLmZvckVhY2goZnVuY3Rpb24oYnV0dG9uSW5mbykgewotICAgICAg
ICBlcXVhbChidXR0b25JbmZvLnZpZXcudGV4dENvbnRlbnQsIGJ1dHRvbkluZm8udGV4dCk7Ci0g
ICAgICAgIGVxdWFsKGJ1dHRvbkluZm8udmlldy5fZXZlbnROYW1lLCBidXR0b25JbmZvLmV2ZW50
KTsKLSAgICB9KTsKLX0pOwotCi10ZXN0KCdjbGljaycsIDEsIGZ1bmN0aW9uKCkgewotICAgIHZh
ciBleGFtaW5lID0gbmV3IHVpLmFjdGlvbnMuRXhhbWluZSgpOwotICAgICQoZXhhbWluZSkuYmlu
ZCgnZXhhbWluZScsIGZ1bmN0aW9uKCkgewotICAgICAgICBvaygnRXhhbWluZSB0cmlnZ2VyZWQu
Jyk7Ci0gICAgfSk7Ci0gICAgJChleGFtaW5lKS50cmlnZ2VyKCdjbGljaycpOwotfSk7Ci0KLXRl
c3QoJ2RlZmF1bHQnLCAyLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgbmV4dCA9IG5ldyB1aS5hY3Rp
b25zLk5leHQoKTsKLSAgICBlcXVhbChuZXh0Lm1ha2VEZWZhdWx0KCksIG5leHQpOwotICAgIGVx
dWFsKG5leHQuY2xhc3NOYW1lLCAnYWN0aW9uIG5leHQgZGVmYXVsdCcpOwotfSk7Ci0KLXRlc3Qo
J0xpc3QnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgbGlzdCA9IG5ldyB1aS5hY3Rpb25zLkxp
c3QoWwotICAgICAgICBuZXcgdWkuYWN0aW9ucy5SZWJhc2VsaW5lKCksCi0gICAgICAgIG5ldyB1
aS5hY3Rpb25zLlByZXZpb3VzKCksCi0gICAgICAgIG5ldyB1aS5hY3Rpb25zLk5leHQoKQotICAg
IF0pOwotICAgIGVxdWFsKGxpc3QuaW5uZXJIVE1MLAotICAgICAgICAnPGxpPjxidXR0b24gY2xh
c3M9ImFjdGlvbiI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICc8bGk+PGJ1
dHRvbiBjbGFzcz0iYWN0aW9uIHByZXZpb3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPicgKwotICAg
ICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xp
PicpOwotfSk7Ci0KLX0oKSk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWls
dXJlcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9mYWlsdXJl
cy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFp
bHVyZXMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12
YXIgdWkgPSB1aSB8fCB7fTsKLXVpLmZhaWx1cmVzID0gdWkuZmFpbHVyZXMgfHwge307Ci0KLShm
dW5jdGlvbigpewotCi12YXIga0J1aWxkaW5nUmVzdWx0ID0gJ0JVSUxESU5HJzsKLQotdWkuZmFp
bHVyZXMuQnVpbGRlciA9IGJhc2UuZXh0ZW5kcygnYScsIHsKLSAgICBpbml0OiBmdW5jdGlvbihi
dWlsZGVyTmFtZSwgZmFpbHVyZXMpCi0gICAgewotICAgICAgICB2YXIgcGxhdGZvcm1CdWlsZGVy
cyA9IGNvbmZpZy5jdXJyZW50QnVpbGRlcnMoKTsKLSAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24g
PSBwbGF0Zm9ybUJ1aWxkZXJzW2J1aWxkZXJOYW1lXTsKLSAgICAgICAgaWYgKGNvbmZpZ3VyYXRp
b24pIHsKLSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZlcnNpb24pCi0gICAgICAgICAg
ICAgICAgdGhpcy5fYWRkU3BhbigndmVyc2lvbicsIGNvbmZpZ3VyYXRpb24udmVyc2lvbik7Ci0g
ICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5pczY0Yml0KQotICAgICAgICAgICAgICAgIHRo
aXMuX2FkZFNwYW4oJ2FyY2hpdGVjdHVyZScsICc2NC1iaXQnKTsKLSAgICAgICAgICAgIHRoaXMu
X2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uOwotICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgIHRoaXMuX2FkZFNwYW4oJ3ZlcnNpb24nLCBidWlsZGVyTmFtZSk7Ci0KLSAgICAgICAgdGhp
cy5jbGFzc05hbWUgPSAnZmFpbGluZy1idWlsZGVyJzsKLSAgICAgICAgdGhpcy50YXJnZXQgPSAn
X2JsYW5rJzsKLSAgICAgICAgdGhpcy5ocmVmID0gdWkuZGlzcGxheVVSTEZvckJ1aWxkZXIoYnVp
bGRlck5hbWUpOwotICAgICAgICBpZiAoZmFpbHVyZXMpCi0gICAgICAgICAgICB0aGlzLl9hZGRT
cGFuKCdmYWlsdXJlcycsICcgJyArIGZhaWx1cmVzLmpvaW4oJywgJykpOwotICAgIH0sCi0gICAg
X2FkZFNwYW46IGZ1bmN0aW9uKGNsYXNzTmFtZSwgdGV4dCkKLSAgICB7Ci0gICAgICAgIHZhciBz
cGFuID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJykpOwot
ICAgICAgICBzcGFuLmNsYXNzTmFtZSA9IGNsYXNzTmFtZTsKLSAgICAgICAgc3Bhbi50ZXh0Q29u
dGVudCA9IHRleHQ7Ci0gICAgfSwKLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGNvbmZpZ3VyYXRpb24p
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fY29uZmlndXJhdGlvbiAmJiB0aGlzLl9jb25m
aWd1cmF0aW9uLmlzNjRiaXQgPT0gY29uZmlndXJhdGlvbi5pczY0Yml0ICYmIHRoaXMuX2NvbmZp
Z3VyYXRpb24udmVyc2lvbiA9PSBjb25maWd1cmF0aW9uLnZlcnNpb247IAotICAgIH0KLX0pOwot
Ci1mdW5jdGlvbiBjZWxsQ29udGFpbnNDb25maWd1cmF0aW9uKGNlbGwsIGNvbmZpZ3VyYXRpb24p
Ci17Ci0gICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zb21lLmNhbGwoY2VsbC5jaGlsZHJlbiwg
ZnVuY3Rpb24oY29uZmlndXJhdGlvbkVsZW1lbnQpIHsKLSAgICAgICAgcmV0dXJuIGNvbmZpZ3Vy
YXRpb25FbGVtZW50LmVxdWFscyAmJiBjb25maWd1cmF0aW9uRWxlbWVudC5lcXVhbHMoY29uZmln
dXJhdGlvbik7Ci0gICAgfSk7Ci19Ci0KLWZ1bmN0aW9uIGNlbGxCeUJ1aWxkVHlwZShyb3csIGNv
bmZpZ3VyYXRpb24pCi17Ci0gICAgcmV0dXJuIHJvdy5jZWxsc1tjb25maWd1cmF0aW9uLmRlYnVn
ID8gMiA6IDFdOwotfQotCi11aS5mYWlsdXJlcy5GYWlsdXJlR3JpZCA9IGJhc2UuZXh0ZW5kcygn
dGFibGUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFz
c05hbWUgPSAnZmFpbHVyZXMnOwotICAgICAgICB2YXIgdGl0bGVzID0gdGhpcy5jcmVhdGVUSGVh
ZCgpLmluc2VydFJvdygpOwotICAgICAgICB0aXRsZXMuaW5zZXJ0Q2VsbCgpLnRleHRDb250ZW50
ID0gJ2RlYnVnJzsKLSAgICAgICAgdGl0bGVzLmluc2VydENlbGwoKS50ZXh0Q29udGVudCA9ICdy
ZWxlYXNlJzsKLSAgICAgICAgdGl0bGVzLmluc2VydENlbGwoKS50ZXh0Q29udGVudCA9ICd0eXBl
JzsKLSAgICAgICAgdGhpcy5fYm9keSA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgndGJvZHknKSk7Ci0gICAgICAgIHRoaXMuX3Jlc2V0KCk7Ci0gICAgfSwKLSAgICBf
cm93QnlSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKLSAgICB7Ci0gICAgICAgIHZhciByb3cgPSB0
aGlzLl9yZXN1bHRSb3dzW3Jlc3VsdF07Ci0gICAgICAgICQocm93KS5zaG93KCk7Ci0gICAgICAg
IGlmIChyb3cpCi0gICAgICAgICAgICByZXR1cm4gcm93OwotCi0gICAgICAgIHJvdyA9IHRoaXMu
X3Jlc3VsdFJvd3NbcmVzdWx0XSA9IHRoaXMuX2JvZHkuaW5zZXJ0Um93KDApOwotICAgICAgICBy
b3cuY2xhc3NOYW1lID0gcmVzdWx0OwotICAgICAgICByb3cuaW5zZXJ0Q2VsbCgpOwotICAgICAg
ICByb3cuaW5zZXJ0Q2VsbCgpOwotICAgICAgICB2YXIgdGl0bGVDZWxsID0gcm93Lmluc2VydENl
bGwoKTsKLSAgICAgICAgdGl0bGVDZWxsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3NwYW4nKSkudGV4dENvbnRlbnQgPSByZXN1bHQ7Ci0gICAgICAgIHJldHVybiByb3c7Ci0g
ICAgfSwKLSAgICB1cGRhdGU6IGZ1bmN0aW9uKHJlc3VsdHNCeUJ1aWxkZXIpCi0gICAgewotICAg
ICAgICBpZiAodGhpcy5fcGVuZGluZ1Jlc2V0KQotICAgICAgICAgICAgdGhpcy5fcmVzZXQoKTsK
LQotICAgICAgICBpZiAoIXJlc3VsdHNCeUJ1aWxkZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgT2JqZWN0LmtleXMocmVzdWx0c0J5QnVpbGRlcikuZm9yRWFjaChmdW5jdGlvbihi
dWlsZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGNvbmZpZ3VyYXRpb24gPSBjb25maWcua1Bs
YXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS5idWlsZGVyc1tidWlsZGVyTmFtZV07Ci0g
ICAgICAgICAgICBpZiAoIWNvbmZpZ3VyYXRpb24pCi0gICAgICAgICAgICAgICAgdGhyb3cgIlVu
a25vd24gYnVpbGRlciBuYW1lOiAiICsgYnVpbGRlck5hbWU7Ci0gICAgICAgICAgICB2YXIgcm93
ID0gdGhpcy5fcm93QnlSZXN1bHQocmVzdWx0c0J5QnVpbGRlcltidWlsZGVyTmFtZV0uYWN0dWFs
KTsKLSAgICAgICAgICAgIHZhciBjZWxsID0gY2VsbEJ5QnVpbGRUeXBlKHJvdywgY29uZmlndXJh
dGlvbik7Ci0gICAgICAgICAgICBpZiAoY2VsbENvbnRhaW5zQ29uZmlndXJhdGlvbihjZWxsLCBj
b25maWd1cmF0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBjZWxs
LmFwcGVuZENoaWxkKG5ldyB1aS5mYWlsdXJlcy5CdWlsZGVyKGJ1aWxkZXJOYW1lKSk7Ci0gICAg
ICAgIH0sIHRoaXMpOwotICAgIH0sCi0gICAgcHVyZ2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3BlbmRpbmdSZXNldCA9IHRydWU7Ci0gICAgfSwKLSAgICBfcmVzZXQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3BlbmRpbmdSZXNldCA9IGZhbHNlOwotICAgICAg
ICB0aGlzLl9yZXN1bHRSb3dzID0ge307Ci0gICAgICAgICQodGhpcy5fYm9keSkuZW1wdHkoKTsK
LSAgICAgICAgLy8gQWRkIHRoZSBCVUlMRElORyByb3cgZWFnZXJseSBzbyB0aGF0IGl0IGFwcGVh
cnMgbGFzdC4KLSAgICAgICAgdGhpcy5fcm93QnlSZXN1bHQoa0J1aWxkaW5nUmVzdWx0KTsKLSAg
ICAgICAgJCh0aGlzLl9yZXN1bHRSb3dzW2tCdWlsZGluZ1Jlc3VsdF0pLmhpZGUoKTsKLSAgICB9
Ci19KTsKLQotdWkuZmFpbHVyZXMuTGlzdEl0ZW0gPSBiYXNlLmV4dGVuZHMoJ2xpJywgewotICAg
IGluaXQ6IGZ1bmN0aW9uKGdyb3VwTmFtZSwgZmFpbGluZ1Rlc3RzTGlzdCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX2ZhaWxpbmdUZXN0c0xpc3QgPSBmYWlsaW5nVGVzdHNMaXN0OwotICAgICAgICB0
aGlzLmFwcGVuZENoaWxkKG5ldyB1aS5hY3Rpb25zLkxpc3QoWwotICAgICAgICAgICAgbmV3IHVp
LmFjdGlvbnMuRXhhbWluZSgpLm1ha2VEZWZhdWx0KCksCi0gICAgICAgIF0pKTsKLSAgICAgICAg
dmFyIGxhYmVsID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJl
bCcpKQotICAgICAgICBsYWJlbC50ZXh0Q29udGVudCA9IGZhaWxpbmdUZXN0c0xpc3QubGVuZ3Ro
ID09IDEgPyBmYWlsaW5nVGVzdHNMaXN0WzBdIDogZ3JvdXBOYW1lOwotICAgIH0sCi19KTsKLQot
dWkuZmFpbHVyZXMuTGlzdCA9IGJhc2UuZXh0ZW5kcygndWwnLCB7Ci0gICAgaW5pdDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnZmFpbHVyZXMnOwotICAgICAg
ICB0aGlzLnRleHRDb250ZW50ID0gJ0xvYWRpbmcuLi4nOwotICAgIH0KLX0pOwotCi19KSgpOwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvZmFpbHVyZXMu
anMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3Jp
cHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy91aS9mYWlsdXJlc191bml0dGVzdHMuanMJKHJldmlzaW9uIDI2OTA0MikKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDE0NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAoKSB7Ci0K
LW1vZHVsZSgndWkuZmFpbHVyZXMnKTsKLQotdGVzdCgnQnVpbGRlcicsIDYsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBjb25maWd1cmF0aW9uOwotICAgIGNvbmZpZ3VyYXRpb24gPSBuZXcgdWkuZmFp
bHVyZXMuQnVpbGRlcigiV2Via2l0IExpbnV4IiwgWyJ1cGRhdGUiLCAid2Via2l0X3Rlc3RzIl0p
OwotICAgIGRlZXBFcXVhbChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhjb25maWd1cmF0aW9u
Ll9fcHJvdG9fXykuc29ydCgpLCBbCi0gICAgICAgICdfYWRkU3BhbicsCi0gICAgICAgICdlcXVh
bHMnLAotICAgICAgICAnaW5pdCcsCi0gICAgXSk7Ci0gICAgZXF1YWwoY29uZmlndXJhdGlvbi5v
dXRlckhUTUwsICc8YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJl
Zj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/
YnVpbGRlcj1XZWJraXQrTGludXgiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwvc3Bhbj48
c3BhbiBjbGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+PHNwYW4gY2xhc3M9ImZhaWx1
cmVzIj4gdXBkYXRlLCB3ZWJraXRfdGVzdHM8L3NwYW4+PC9hPicpOwotICAgIGNvbmZpZ3VyYXRp
b24gPSBuZXcgdWkuZmFpbHVyZXMuQnVpbGRlcigiV2Via2l0IFdpbiIpOwotICAgIGVxdWFsKGNv
bmZpZ3VyYXRpb24ub3V0ZXJIVE1MLCAnPGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0
PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJr
aXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K1dpbiI+PHNwYW4gY2xhc3M9InZlcnNpb24iPnhw
PC9zcGFuPjwvYT4nKTsKLSAgICBjb25maWd1cmF0aW9uLl9hZGRTcGFuKCdmb28nLCAnYmFyJyk7
Ci0gICAgZXF1YWwoY29uZmlndXJhdGlvbi5vdXRlckhUTUwsICc8YSBjbGFzcz0iZmFpbGluZy1i
dWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9w
L2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJraXQrV2luIj48c3BhbiBjbGFz
cz0idmVyc2lvbiI+eHA8L3NwYW4+PHNwYW4gY2xhc3M9ImZvbyI+YmFyPC9zcGFuPjwvYT4nKTsK
LSAgICBvayhjb25maWd1cmF0aW9uLmVxdWFscyh7dmVyc2lvbjogJ3hwJ30pKTsKLSAgICBvaygh
Y29uZmlndXJhdGlvbi5lcXVhbHMoe3ZlcnNpb246ICdsdWNpZCcsIGlzNjRiaXQ6IHRydWV9KSk7
Ci19KTsKLQotdGVzdCgnRmFpbHVyZUdyaWQnLCAxMCwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIGdy
aWQgPSBuZXcgdWkuZmFpbHVyZXMuRmFpbHVyZUdyaWQoKTsKLSAgICBkZWVwRXF1YWwoT2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXMoZ3JpZC5fX3Byb3RvX18pLnNvcnQoKSwgWwotICAgICAgICAi
X3Jlc2V0IiwKLSAgICAgICAgIl9yb3dCeVJlc3VsdCIsCi0gICAgICAgICJpbml0IiwKLSAgICAg
ICAgInB1cmdlIiwKLSAgICAgICAgInVwZGF0ZSIKLSAgICBdKTsKLSAgICBlcXVhbChncmlkLm91
dGVySFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAnPHRoZWFkPjx0
cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFk
PicgKwotICAgICAgICAnPHRib2R5Pjx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5
OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3Rk
PjwvdHI+PC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsKLSAgICB2YXIgcm93ID0gZ3JpZC5f
cm93QnlSZXN1bHQoJ1RFWFQnKTsKLSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBj
bGFzcz0iZmFpbHVyZXMiPicgKwotICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRk
PnJlbGVhc2U8L3RkPjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRi
b2R5PicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAgICAgICAg
ICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+JyArCi0gICAg
ICAgICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHls
ZT0iZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90
ZD48dGQ+PC90ZD48L3RyPicgKwotICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4n
KTsKLSAgICBlcXVhbChyb3cub3V0ZXJIVE1MLCAnPHRyIGNsYXNzPSJURVhUIj48dGQ+PHNwYW4+
VEVYVDwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+Jyk7Ci0gICAgZ3JpZC51cGRh
dGUoe30pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1MLCAnPHRhYmxlIGNsYXNzPSJmYWlsdXJl
cyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwvdGQ+
PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICc8dGJvZHk+JyArCi0gICAg
ICAgICAgICAnPHRyIGNsYXNzPSJURVhUIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFu
PlRFWFQ8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3Ry
PicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBu
b25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwv
dHI+JyArCi0gICAgICAgICc8L3Rib2R5PicgKwotICAgICc8L3RhYmxlPicpOwotICAgIHJhaXNl
cyhmdW5jdGlvbigpIHsKLSAgICAgICAgZ3JpZC51cGRhdGUoeydBdGFyaSc6IHt9fSkKLSAgICB9
KTsKLSAgICBncmlkLnVwZGF0ZSh7J1dlYmtpdCBMaW51eCAoZGJnKSc6IHsgYWN0dWFsOiAnVEVY
VCd9fSk7Ci0gICAgZXF1YWwoZ3JpZC5vdXRlckhUTUwsICc8dGFibGUgY2xhc3M9ImZhaWx1cmVz
Ij4nICsKLSAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48
dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgJzx0Ym9keT4nICsKLSAgICAg
ICAgICAgICc8dHIgY2xhc3M9IlRFWFQiIHN0eWxlPSIiPicgKwotICAgICAgICAgICAgICAgICc8
dGQ+PHNwYW4+VEVYVDwvc3Bhbj48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4n
ICsKLSAgICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdl
dD0iX2JsYW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Vi
a2l0L3dhdGVyZmFsbD9idWlsZGVyPVdlYmtpdCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9InZl
cnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bh
bj48L2E+PC90ZD4nICsKLSAgICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzx0ciBj
bGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElO
Rzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAgICc8L3Rib2R5
PicgKwotICAgICc8L3RhYmxlPicpOwotICAgIGdyaWQudXBkYXRlKHsnV2Via2l0IE1hYzEwLjYn
OiB7IGFjdHVhbDogJ0lNQUdFK1RFWFQnfX0pOwotICAgIGVxdWFsKGdyaWQub3V0ZXJIVE1MLCAn
PHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBl
PC90ZD48dGQ+cmVsZWFzZTwvdGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAg
ICAgICc8dGJvZHk+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJJTUFHRStURVhUIj4nICsK
LSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPklNQUdFK1RFWFQ8L3NwYW4+PC90ZD4nICsKLSAg
ICAgICAgICAgICAgICAnPHRkPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2Js
YW5rIiBocmVmPSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dh
dGVyZmFsbD9idWlsZGVyPVdlYmtpdCtNYWMxMC42Ij48c3BhbiBjbGFzcz0idmVyc2lvbiI+c25v
d2xlb3BhcmQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48L3RkPicg
KwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJURVhUIiBz
dHlsZT0iIj4nICsKLSAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90ZD4n
ICsKLSAgICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48
YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2J1
aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1XZWJr
aXQrTGludXgrKGRiZykiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5sdWNpZDwvc3Bhbj48c3BhbiBj
bGFzcz0iYXJjaGl0ZWN0dXJlIj42NC1iaXQ8L3NwYW4+PC9hPjwvdGQ+JyArCi0gICAgICAgICAg
ICAnPC90cj4nICsKLSAgICAgICAgICAgICc8dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlz
cGxheTogbm9uZTsgIj48dGQ+PHNwYW4+QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+
PC90ZD48L3RyPicgKwotICAgICAgICAnPC90Ym9keT4nICsKLSAgICAnPC90YWJsZT4nKTsKLSAg
ICBncmlkLnVwZGF0ZSh7J1dlYmtpdCBNYWMxMC42JzogeyBhY3R1YWw6ICdJTUFHRStURVhUJ319
KTsKLSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicg
KwotICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5k
ZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAg
ICAgJzx0ciBjbGFzcz0iSU1BR0UrVEVYVCIgc3R5bGU9IiI+JyArCi0gICAgICAgICAgICAgICAg
Jzx0ZD48c3Bhbj5JTUFHRStURVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0
ZD48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDov
L2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRlcmZhbGw/YnVpbGRlcj1X
ZWJraXQrTWFjMTAuNiI+PHNwYW4gY2xhc3M9InZlcnNpb24iPnNub3dsZW9wYXJkPC9zcGFuPjwv
YT48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICc8
L3RyPicgKwotICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCIgc3R5bGU9IiI+JyArCi0gICAg
ICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAg
ICAgJzx0ZD48L3RkPicgKwotICAgICAgICAgICAgICAgICc8dGQ+PGEgY2xhc3M9ImZhaWxpbmct
YnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcv
cC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0K0xpbnV4KyhkYmcpIj48
c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3NwYW4+PHNwYW4gY2xhc3M9ImFyY2hpdGVjdHVy
ZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAg
ICAgICAgICAnPHRyIGNsYXNzPSJCVUlMRElORyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRk
PjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4nICsKLSAg
ICAgICAgJzwvdGJvZHk+JyArCi0gICAgJzwvdGFibGU+Jyk7Ci0gICAgZ3JpZC5wdXJnZSgpOwot
ICAgIGdyaWQudXBkYXRlKHsnV2Via2l0IExpbnV4IChkYmcpJzogeyBhY3R1YWw6ICdURVhUJ319
KTsKLSAgICBlcXVhbChncmlkLm91dGVySFRNTCwgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicg
KwotICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3RkPjx0ZD5k
ZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAnPHRib2R5PicgKwotICAgICAgICAg
ICAgJzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhU
PC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgJzx0ZD48L3RkPicgKwotICAgICAgICAg
ICAgICAgICc8dGQ+PGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhy
ZWY9Imh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxs
P2J1aWxkZXI9V2Via2l0K0xpbnV4KyhkYmcpIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8
L3NwYW4+PHNwYW4gY2xhc3M9ImFyY2hpdGVjdHVyZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicg
KwotICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAnPHRyIGNsYXNzPSJCVUlMRElO
RyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7ICI+PHRkPjxzcGFuPkJVSUxESU5HPC9zcGFuPjwvdGQ+
PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4nICsKLSAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgJzwv
dGFibGU+Jyk7Ci19KTsKLQotfSgpKTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL3VpL2ZhaWx1cmVzX3VuaXR0ZXN0cy5qcwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotTEYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9ucy5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25z
LmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3Rp
ZmljYXRpb25zLmpzCShub25leGlzdGVudCkKQEAgLTEsMjYyICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotdmFyIHVpID0gdWkgfHwge307Ci11aS5ub3RpZmljYXRpb25zID0gdWkubm90aWZpY2F0aW9u
cyB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXZhciBrTWF4VGVzdHNQZXJHcm91cCA9IDM7Ci0K
LXVpLm5vdGlmaWNhdGlvbnMuU3RyZWFtID0gYmFzZS5leHRlbmRzKCdvbCcsIHsKLSAgICBpbml0
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdub3RpZmljYXRp
b25zJzsKLSAgICB9LAotICAgIGFkZDogZnVuY3Rpb24obm90aWZpY2F0aW9uKQotICAgIHsKLSAg
ICAgICAgdmFyIGluc2VydEJlZm9yZSA9IG51bGw7Ci0gICAgICAgIEFycmF5LnByb3RvdHlwZS5z
b21lLmNhbGwodGhpcy5jaGlsZHJlbiwgZnVuY3Rpb24oZXhpc3RpbmdOb3RpZmljYXRpb24pIHsK
LSAgICAgICAgICAgIGlmIChleGlzdGluZ05vdGlmaWNhdGlvbi5pbmRleCgpIDwgbm90aWZpY2F0
aW9uLmluZGV4KCkpIHsKLSAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUgPSBleGlzdGluZ05v
dGlmaWNhdGlvbjsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKG5vdGlmaWNhdGlvbiwgaW5z
ZXJ0QmVmb3JlKTsKLSAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKLSAgICB9Ci19KTsKLQot
dWkubm90aWZpY2F0aW9ucy5Ob3RpZmljYXRpb24gPSBiYXNlLmV4dGVuZHMoJ2xpJywgewotICAg
IGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2hvdyA9IHRoaXMuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwotICAgICAgICB0aGlzLl9ob3cu
Y2xhc3NOYW1lID0gJ2hvdyc7Ci0gICAgICAgIHRoaXMuX3doYXQgPSB0aGlzLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTsKLSAgICAgICAgdGhpcy5fd2hhdC5jbGFz
c05hbWUgPSAnd2hhdCc7Ci0gICAgICAgIHRoaXMuX2luZGV4ID0gMDsKLSAgICAgICAgJCh0aGlz
KS5oaWRlKCkuZmFkZUluKCdmYXN0Jyk7Ci0gICAgfSwKLSAgICBpbmRleDogZnVuY3Rpb24oKQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2luZGV4OwotICAgIH0sCi0gICAgc2V0SW5kZXg6
IGZ1bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgICAgdGhpcy5faW5kZXggPSBpbmRleDsKLSAg
ICB9LAotICAgIGRpc21pc3M6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBU
aGVzZSBmYWRlIGluL291dCBlZmZlY3RzIGFyZSBsYW1lLgotICAgICAgICAkKHRoaXMpLmZhZGVP
dXQoZnVuY3Rpb24oKQotICAgICAgICB7Ci0gICAgICAgICAgICB0aGlzLnBhcmVudE5vZGUgJiYg
dGhpcy5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMpOwotICAgICAgICB9KTsKLSAgICB9LAot
fSk7Ci0KLXVpLm5vdGlmaWNhdGlvbnMuSW5mbyA9IGJhc2UuZXh0ZW5kcyh1aS5ub3RpZmljYXRp
b25zLk5vdGlmaWNhdGlvbiwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewot
ICAgICAgICB0aGlzLnVwZGF0ZShtZXNzYWdlKTsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rp
b24obWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3doYXQudGV4dENvbnRlbnQgPSBtZXNz
YWdlOwotICAgIH0sCi0gICAgdXBkYXRlV2l0aE5vZGU6IGZ1bmN0aW9uKG5vZGUpCi0gICAgewot
ICAgICAgICAkKHRoaXMuX3doYXQpLmVtcHR5KCk7Ci0gICAgICAgIHRoaXMuX3doYXQuYXBwZW5k
Q2hpbGQobm9kZSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RH
cm91cCA9IGJhc2UuZXh0ZW5kcygnbGknLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZ3JvdXBOYW1l
LCB0ZXN0TmFtZUxpc3QpCi0gICAgewotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGJhc2UuY3Jl
YXRlTGlua05vZGUodWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkKHRlc3ROYW1lTGlzdCksIGdy
b3VwTmFtZSwgJ19ibGFuaycpKTsKLSAgICB9Ci19KTsKLQotdmFyIENhdXNlID0gYmFzZS5leHRl
bmRzKCdsaScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9k
ZXNjcmlwdGlvbiA9IHRoaXMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2
JykpOwotICAgICAgICB0aGlzLl9kZXNjcmlwdGlvbi5jbGFzc05hbWUgPSAnZGVzY3JpcHRpb24n
OwotICAgIH0KLX0pOwotCi11aS5ub3RpZmljYXRpb25zLlN1c3BpY2lvdXNDb21taXQgPSBiYXNl
LmV4dGVuZHMoQ2F1c2UsIHsKLSAgICBpbml0OiBmdW5jdGlvbihjb21taXREYXRhKQotICAgIHsK
LSAgICAgICAgdGhpcy5fcmV2aXNpb24gPSBjb21taXREYXRhLnJldmlzaW9uOwotICAgICAgICB0
aGlzLl9kZXNjcmlwdGlvbi5hcHBlbmRDaGlsZChiYXNlLmNyZWF0ZUxpbmtOb2RlKHRyYWMuY2hh
bmdlc2V0VVJMKGNvbW1pdERhdGEucmV2aXNpb24pLCBjb21taXREYXRhLnJldmlzaW9uLCAnX2Js
YW5rJykpOwotICAgICAgICB0aGlzLl9kZXRhaWxzID0gdGhpcy5fZGVzY3JpcHRpb24uYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpKTsKLSAgICAgICAgdGhpcy5fYWRk
RGV0YWlsKCdzdW1tYXJ5JywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgn
YXV0aG9yJywgY29tbWl0RGF0YSk7Ci0gICAgICAgIHRoaXMuX2FkZERldGFpbCgncmV2aWV3ZXIn
LCBjb21taXREYXRhKTsKLSAgICAgICAgdGhpcy5fYWRkRGV0YWlsKCdidWdJRCcsIGNvbW1pdERh
dGEsIGJ1Z3ppbGxhLmJ1Z1VSTCk7Ci0gICAgfSwKLSAgICBoYXNSZXZpc2lvbjogZnVuY3Rpb24o
cmV2aXNpb24pCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmV2aXNpb24gPT0gcmV2aXNp
b247Ci0gICAgfSwKLSAgICBfYWRkRGV0YWlsOiBmdW5jdGlvbihwYXJ0LCBjb21taXREYXRhLCBs
aW5rRnVuY3Rpb24pCi0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGNvbW1pdERhdGFbcGFy
dF07Ci0gICAgICAgIGlmICghY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB2YXIgc3BhbiA9IHRoaXMuX2RldGFpbHMuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnc3BhbicpKTsKLSAgICAgICAgc3Bhbi5jbGFzc05hbWUgPSBwYXJ0OwotICAgICAgICAK
LSAgICAgICAgaWYgKGxpbmtGdW5jdGlvbikgewotICAgICAgICAgICAgdmFyIGxpbmsgPSBiYXNl
LmNyZWF0ZUxpbmtOb2RlKGxpbmtGdW5jdGlvbihjb250ZW50KSwgY29udGVudCwgJ19ibGFuaycp
OwotICAgICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChsaW5rKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBzcGFuLnRleHRDb250ZW50ID0gY29udGVudDsKLSAgICB9Ci19KTsKLQotdWku
bm90aWZpY2F0aW9ucy5GYWlsdXJlID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlvbnMuTm90
aWZpY2F0aW9uLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5f
dGltZSA9IHRoaXMuX2hvdy5hcHBlbmRDaGlsZChuZXcgdWkuUmVsYXRpdmVUaW1lKCkpOwotICAg
ICAgICB0aGlzLl9wcm9ibGVtID0gdGhpcy5fd2hhdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKSk7Ci0gICAgICAgIHRoaXMuX3Byb2JsZW0uY2xhc3NOYW1lID0gJ3By
b2JsZW0nOwotICAgICAgICB0aGlzLl9lZmZlY3RzID0gdGhpcy5fcHJvYmxlbS5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKLSAgICAgICAgdGhpcy5fZWZmZWN0cy5j
bGFzc05hbWUgPSAnZWZmZWN0cyc7Ci0gICAgICAgIHRoaXMuX2NhdXNlcyA9IHRoaXMuX3doYXQu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndWwnKSk7Ci0gICAgICAgIHRoaXMu
X2NhdXNlcy5jbGFzc05hbWUgPSAnY2F1c2VzJzsKLSAgICB9LAotICAgIGRhdGU6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90aW1lLmRhdGU7Ci0gICAgfQotfSk7Ci0K
LXVpLm5vdGlmaWNhdGlvbnMuRmFpbGluZ1Rlc3RzID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNh
dGlvbnMuRmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAvLyBGSVhN
RTogQ29udmVydCBhY3Rpb25zIHRvIGEgbGluayBmcm9tIHRlc3QhCi0gICAgICAgIHRoaXMuX3By
b2JsZW0uYXBwZW5kQ2hpbGQobmV3IHVpLmFjdGlvbnMuTGlzdChbCi0gICAgICAgICAgICBuZXcg
dWkuYWN0aW9ucy5FeGFtaW5lKCkubWFrZURlZmF1bHQoKSwKLSAgICAgICAgICAgIG5ldyB1aS5h
Y3Rpb25zLlJlYmFzZWxpbmUoKSwKLSAgICAgICAgXSkpOwotICAgICAgICB0aGlzLl90ZXN0TmFt
ZUxpc3QgPSBbXTsKLSAgICB9LAotICAgIHRlc3ROYW1lTGlzdDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3ROYW1lTGlzdDsKLSAgICB9LAotICAgIGNvbnRhaW5z
RmFpbHVyZUFuYWx5c2lzOiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fdGVzdE5hbWVMaXN0LmluZGV4T2YoZmFpbHVyZUFuYWx5c2lzLnRlc3RO
YW1lKSAhPSAtMTsKLSAgICB9LAotICAgIGFkZEZhaWx1cmVBbmFseXNpczogZnVuY3Rpb24oZmFp
bHVyZUFuYWx5c2lzKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuY29udGFpbnNGYWlsdXJlQW5h
bHlzaXMoZmFpbHVyZUFuYWx5c2lzKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgdGhpcy5fdGVzdE5hbWVMaXN0LnB1c2goZmFpbHVyZUFuYWx5c2lzLnRlc3ROYW1lKTsKLSAg
ICAgICAgJCh0aGlzLl9lZmZlY3RzKS5lbXB0eSgpOwotICAgICAgICB0aGlzLl9mb3JFYWNoVGVz
dEdyb3VwKGZ1bmN0aW9uKGdyb3VwTmFtZSwgdGVzdE5hbWVMaXN0KSB7Ci0gICAgICAgICAgICB0
aGlzLl9lZmZlY3RzLmFwcGVuZENoaWxkKG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0
R3JvdXAoZ3JvdXBOYW1lLCB0ZXN0TmFtZUxpc3QpKQotICAgICAgICB9LmJpbmQodGhpcykpOwot
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotICAgIF9mb3JFYWNoVGVzdEdyb3VwOiBmdW5j
dGlvbihjYWxsYmFjaykKLSAgICB7Ci0gICAgICAgIHZhciBpbmRpdmlkdWFsVGVzdHMgPSBbXTsK
LSAgICAgICAgYmFzZS5mb3JFYWNoRGlyZWN0b3J5KHRoaXMuX3Rlc3ROYW1lTGlzdCwgZnVuY3Rp
b24oZ3JvdXBMYWJlbCwgdGVzdHNJbkRpcmVjdG9yeSkgewotICAgICAgICAgICAgaWYgKHRlc3Rz
SW5EaXJlY3RvcnkubGVuZ3RoIDw9IGtNYXhUZXN0c1Blckdyb3VwKSB7Ci0gICAgICAgICAgICAg
ICAgaW5kaXZpZHVhbFRlc3RzID0gaW5kaXZpZHVhbFRlc3RzLmNvbmNhdCh0ZXN0c0luRGlyZWN0
b3J5KTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBjYWxsYmFjayhncm91cExhYmVsLCB0ZXN0c0luRGlyZWN0b3J5KTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGluZGl2aWR1YWxUZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKHRlc3ROYW1lKSB7Ci0gICAg
ICAgICAgICBjYWxsYmFjayh0ZXN0TmFtZSwgW3Rlc3ROYW1lXSk7Ci0gICAgICAgIH0pOwotICAg
IH0KLX0pOwotCi11aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkgPSBiYXNlLmV4
dGVuZHModWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMsIHsKLSAgICBpbml0OiBmdW5jdGlv
bigpIHsKLSAgICAgICAgdGhpcy5fd2hlcmUgPSB0aGlzLl9ob3cuYXBwZW5kQ2hpbGQobmV3IHVp
LmZhaWx1cmVzLkZhaWx1cmVHcmlkKCkpOwotICAgICAgICB0aGlzLl9jb21taXREYXRhUGlubmVk
ID0gZmFsc2U7Ci0gICAgfSwKLSAgICBwdXJnZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMu
X3doZXJlLnB1cmdlKCk7Ci0gICAgfSwKLSAgICB1cGRhdGVCdWlsZGVyUmVzdWx0czogZnVuY3Rp
b24ocmVzdWx0Tm9kZXNCeUJ1aWxkZXIpCi0gICAgewotICAgICAgICB0aGlzLl93aGVyZS51cGRh
dGUocmVzdWx0Tm9kZXNCeUJ1aWxkZXIpOwotICAgIH0sCi0gICAgYWRkRmFpbHVyZUFuYWx5c2lz
OiBmdW5jdGlvbihmYWlsdXJlQW5hbHlzaXMpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZUJ1
aWxkZXJSZXN1bHRzKGZhaWx1cmVBbmFseXNpcy5yZXN1bHROb2Rlc0J5QnVpbGRlcik7Ci0gICAg
ICAgIGlmICghdWkubm90aWZpY2F0aW9ucy5GYWlsaW5nVGVzdHMucHJvdG90eXBlLmFkZEZhaWx1
cmVBbmFseXNpcy5jYWxsKHRoaXMsIGZhaWx1cmVBbmFseXNpcykpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfSwKLSAgICBwaW5Ub0NvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERh
dGEpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fY29tbWl0RGF0YVBpbm5lZCA9IHRydWU7Ci0gICAg
ICAgICQodGhpcy5fY2F1c2VzKS5jaGlsZHJlbigpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBpZiAodGhpcy5oYXNSZXZpc2lvbihjb21taXREYXRhLnJldmlzaW9uKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAkKHRoaXMpLmRldGFjaCgpOwotICAgICAgICB9
KTsKLSAgICB9LAotICAgIGFkZENvbW1pdERhdGE6IGZ1bmN0aW9uKGNvbW1pdERhdGEpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fY29tbWl0RGF0YVBpbm5lZCkKLSAgICAgICAgICAgIHJldHVy
biBudWxsOwotICAgICAgICB2YXIgY29tbWl0RGF0YURhdGUgPSBuZXcgRGF0ZShjb21taXREYXRh
LnRpbWUpOwotICAgICAgICBpZiAodGhpcy5fdGltZS5kYXRlID4gY29tbWl0RGF0YURhdGUpOyB7
Ci0gICAgICAgICAgICB0aGlzLnNldEluZGV4KGNvbW1pdERhdGFEYXRlLmdldFRpbWUoKSk7Ci0g
ICAgICAgICAgICB0aGlzLl90aW1lLnNldERhdGUoY29tbWl0RGF0YURhdGUpOwotICAgICAgICB9
Ci0gICAgICAgIHJldHVybiB0aGlzLl9jYXVzZXMuYXBwZW5kQ2hpbGQobmV3IHVpLm5vdGlmaWNh
dGlvbnMuU3VzcGljaW91c0NvbW1pdChjb21taXREYXRhKSk7Ci0gICAgfQotfSk7Ci0KLXVpLm5v
dGlmaWNhdGlvbnMuQnVpbGRlcnNGYWlsaW5nID0gYmFzZS5leHRlbmRzKHVpLm5vdGlmaWNhdGlv
bnMuRmFpbHVyZSwgewotICAgIGluaXQ6IGZ1bmN0aW9uKG1lc3NhZ2UpCi0gICAgewotICAgICAg
ICB0aGlzLl9wcm9ibGVtLmluc2VydEJlZm9yZShkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlICsgJzonKSwgdGhpcy5fcHJvYmxlbS5maXJzdENoaWxkKTsKLSAgICB9LAotICAgIHNldEZh
aWxpbmdCdWlsZGVyczogZnVuY3Rpb24oZmFpbHVyZXNMaXN0KQotICAgIHsKLSAgICAgICAgJCh0
aGlzLl9lZmZlY3RzKS5lbXB0eSgpLmFwcGVuZChPYmplY3Qua2V5cyhmYWlsdXJlc0xpc3QpLm1h
cChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAgICAgdmFyIGVmZmVjdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJyk7Ci0gICAgICAgICAgICBlZmZlY3QuY2xhc3NOYW1lID0g
J2J1aWxkZXInOwotICAgICAgICAgICAgZWZmZWN0LmFwcGVuZENoaWxkKG5ldyB1aS5mYWlsdXJl
cy5CdWlsZGVyKGJ1aWxkZXJOYW1lLCBmYWlsdXJlc0xpc3RbYnVpbGRlck5hbWVdKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gZWZmZWN0OwotICAgICAgICB9KSk7Ci0gICAgfQotfSk7Ci0KLX0pKCk7
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmlj
YXRpb25zLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9ub3RpZmljYXRpb25zX3VuaXR0ZXN0cy5qcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9u
c191bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMzcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoJ3VpLm5vdGlmaWNhdGlvbnMnKTsKLQotdGVz
dCgnTm90aWZpY2F0aW9uJywgNSwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG5vdGlmaWNhdGlvbiA9
IG5ldyB1aS5ub3RpZmljYXRpb25zLk5vdGlmaWNhdGlvbigpOwotICAgIGVxdWFsKG5vdGlmaWNh
dGlvbi50YWdOYW1lLCAnTEknKTsKLSAgICBlcXVhbChub3RpZmljYXRpb24uaW5uZXJIVE1MLCAn
PGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij48L2Rpdj4nKTsKLSAgICBl
cXVhbChub3RpZmljYXRpb24uaW5kZXgoKSwgMCk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4
KDEpOwotICAgIGVxdWFsKG5vdGlmaWNhdGlvbi5pbmRleCgpLCAxKTsKLSAgICAvLyBGSVhNRTog
UmVhbGx5IG5lZWQgdG8gZmlndXJlIG91dCBob3cgdG8gbW9jay90ZXN0IGFuaW1hdGVkIHJlbW92
YWwuCi0gICAgb2sobm90aWZpY2F0aW9uLmRpc21pc3MpOwotfSk7Ci0KLXRlc3QoJ1N0cmVhbScs
IDExLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgc3RyZWFtID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMu
U3RyZWFtKCk7Ci0gICAgZXF1YWwoc3RyZWFtLnRhZ05hbWUsICdPTCcpOwotICAgIGVxdWFsKHN0
cmVhbS5jbGFzc05hbWUsICdub3RpZmljYXRpb25zJyk7Ci0gICAgZXF1YWwoc3RyZWFtLmNoaWxk
RWxlbWVudENvdW50LCAwKTsKLQotICAgIHZhciBub3RpZmljYXRpb247Ci0KLSAgICBub3RpZmlj
YXRpb24gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZvKCctby1tYXRpYycpOwotICAgIG5vdGlm
aWNhdGlvbi5zZXRJbmRleCgyKTsKLSAgICBzdHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAg
ZXF1YWwoc3RyZWFtLmNoaWxkRWxlbWVudENvdW50LCAxKTsKLSAgICBlcXVhbChzdHJlYW0udGV4
dENvbnRlbnQsICctby1tYXRpYycpOwotCi0gICAgbm90aWZpY2F0aW9uID0gbmV3IHVpLm5vdGlm
aWNhdGlvbnMuSW5mbygnZ2FyZGVuJyk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4KDMpOwot
ICAgIHN0cmVhbS5hZGQobm90aWZpY2F0aW9uKTsKLSAgICBlcXVhbChzdHJlYW0uY2hpbGRFbGVt
ZW50Q291bnQsIDIpOwotICAgIGVxdWFsKHN0cmVhbS50ZXh0Q29udGVudCwgJ2dhcmRlbi1vLW1h
dGljJyk7Ci0KLSAgICBub3RpZmljYXRpb24gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5JbmZvKCcg
aXMgJyk7Ci0gICAgbm90aWZpY2F0aW9uLnNldEluZGV4KDEpOwotICAgIHN0cmVhbS5hZGQobm90
aWZpY2F0aW9uKTsKLSAgICBlcXVhbChzdHJlYW0uY2hpbGRFbGVtZW50Q291bnQsIDMpOwotICAg
IGVxdWFsKHN0cmVhbS50ZXh0Q29udGVudCwgJ2dhcmRlbi1vLW1hdGljIGlzICcpOwotCi0gICAg
bm90aWZpY2F0aW9uID0gbmV3IHVpLm5vdGlmaWNhdGlvbnMuSW5mbygnYXdlc29tZSEnKTsKLSAg
ICBzdHJlYW0uYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgZXF1YWwoc3RyZWFtLmNoaWxkRWxlbWVu
dENvdW50LCA0KTsKLSAgICBlcXVhbChzdHJlYW0udGV4dENvbnRlbnQsICdnYXJkZW4tby1tYXRp
YyBpcyBhd2Vzb21lIScpOwotfSk7Ci0KLXRlc3QoJ0luZm8nLCAyLCBmdW5jdGlvbigpIHsKLSAg
ICB2YXIgaW5mbyA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkluZm8oJ2luZm8nKTsKLSAgICBlcXVh
bChpbmZvLnRhZ05hbWUsICdMSScpOwotICAgIGVxdWFsKGluZm8uaW5uZXJIVE1MLCAnPGRpdiBj
bGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5pbmZvPC9kaXY+Jyk7Ci19KTsKLQot
dGVzdCgnRmFpbGluZ1Rlc3RHcm91cCcsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBmYWlsaW5n
VGVzdCA9IG5ldyB1aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0R3JvdXAoJ3Rlc3QnLCBbJ3Rl
c3QuaHRtbCddKTsKLSAgICBlcXVhbChmYWlsaW5nVGVzdC50YWdOYW1lLCAnTEknKTsKLSAgICBl
cXVhbChmYWlsaW5nVGVzdC5pbm5lckhUTUwsICc8YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Vi
a2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFtcDt0ZXN0PXRlc3QuaHRtbCIgdGFyZ2V0PSJf
YmxhbmsiPnRlc3Q8L2E+Jyk7Ci19KTsKLQotdGVzdCgnU3VzcGljaW91c0NvbW1pdCcsIDIsIGZ1
bmN0aW9uKCkgewotICAgIHZhciBzdXNwaWNpb3VzQ29tbWl0ID0gbmV3IHVpLm5vdGlmaWNhdGlv
bnMuU3VzcGljaW91c0NvbW1pdCh7cmV2aXNpb246IDEsIHN1bW1hcnk6ICJzdW1tYXJ5IiwgYXV0
aG9yOiAiYXV0aG9yIiwgcmV2aWV3ZXI6ICJyZXZpZXdlciJ9KTsKLSAgICBlcXVhbChzdXNwaWNp
b3VzQ29tbWl0LnRhZ05hbWUsICdMSScpOwotICAgIGVxdWFsKHN1c3BpY2lvdXNDb21taXQuaW5u
ZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicgKwotICAgICAgICAg
ICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEiIHRhcmdldD0i
X2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAgJzxzcGFuPicgKwotICAgICAgICAgICAgICAg
ICc8c3BhbiBjbGFzcz0ic3VtbWFyeSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAg
ICAnPHNwYW4gY2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAgICAg
ICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicgKwotICAgICAgICAgICAg
Jzwvc3Bhbj4nICsKLSAgICAgICAgJzwvZGl2PicpOwotfSk7Ci0KLXRlc3QoJ0ZhaWxpbmdUZXN0
c1N1bW1hcnknLCAxMiwgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIHRlc3RGYWlsdXJlcyA9IG5ldyB1
aS5ub3RpZmljYXRpb25zLkZhaWxpbmdUZXN0c1N1bW1hcnkoKTsKLSAgICBlcXVhbCh0ZXN0RmFp
bHVyZXMudGFnTmFtZSwgJ0xJJyk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwK
LSAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9
InJlbGF0aXZlIj48L3RpbWU+JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJl
cyI+JyArCi0gICAgICAgICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxl
YXNlPC90ZD48dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAn
PHRib2R5Pjx0ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48
c3Bhbj5CVUlMRElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4n
ICsKLSAgICAgICAgICAgICc8L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAg
ICc8ZGl2IGNsYXNzPSJ3aGF0Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVt
Ij4nICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj48L3VsPicgKwotICAg
ICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAg
ICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVz
ZSBmYWlsdXJlcyBpbiBkZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2
PicgKwotICAgICAgICAgICAgJzx1bCBjbGFzcz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAn
PC9kaXY+Jyk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVzdE5hbWU6
ICd0ZXN0JywgcmVzdWx0Tm9kZXNCeUJ1aWxkZXI6IHt9fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1
cmVzLmluZGV4KCksIDApOwotICAgIGVxdWFsKHRlc3RGYWlsdXJlcy5pbm5lckhUTUwsCi0gICAg
ICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwotICAgICAgICAgICAgJzx0aW1lIGNsYXNzPSJyZWxh
dGl2ZSI+PC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicg
KwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwv
dGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0Ym9k
eT48dHIgY2xhc3M9IkJVSUxESU5HIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgIj48dGQ+PHNwYW4+
QlVJTERJTkc8L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPjwvdGJvZHk+JyArCi0g
ICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPGRp
diBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+JyAr
Ci0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAg
ICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxh
eW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVzdDwvYT48L2xpPicg
KwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9
ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFj
dGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBkZXRhaWwuIj5F
eGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48YnV0dG9u
IGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAgICAgICAgICAg
ICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzx1bCBj
bGFzcz0iY2F1c2VzIj48L3VsPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0gICAgb2sodGVzdEZh
aWx1cmVzLmNvbnRhaW5zRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3Rlc3QnfSkpOwotICAg
IG9rKCF0ZXN0RmFpbHVyZXMuY29udGFpbnNGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAnZm9v
J30pKTsKLSAgICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3Rl
c3QnfSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAgJzxkaXYg
Y2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj48L3Rp
bWU+JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAg
ICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVi
dWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0ciBjbGFz
cz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwv
c3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAgICAgICAg
ICc8L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNsYXNzPSJ3
aGF0Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAgICAgICAg
ICAgICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxs
aT48YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3Rz
JmFtcDt0ZXN0PXRlc3QiIHRhcmdldD0iX2JsYW5rIj50ZXN0PC9hPjwvbGk+JyArCi0gICAgICAg
ICAgICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+
JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1
bHQiIHRpdGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1
dHRvbj48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFj
dGlvbiI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+
JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVz
ZXMiPjwvdWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLSAgICBkZWVwRXF1YWwodGVzdEZhaWx1
cmVzLnRlc3ROYW1lTGlzdCgpLCBbJ3Rlc3QnXSk7Ci0gICAgdmFyIHRpbWUgPSBuZXcgRGF0ZSgp
OwotICAgIHRpbWUuc2V0TWludXRlcyh0aW1lLmdldE1pbnV0ZXMoKSAtIDEwKTsKLSAgICB0ZXN0
RmFpbHVyZXMuYWRkQ29tbWl0RGF0YSh7cmV2aXNpb246IDEsIHRpbWU6IHRpbWUsIHN1bW1hcnk6
ICJzdW1tYXJ5IiwgYXV0aG9yOiAiYXV0aG9yIiwgcmV2aWV3ZXI6ICJyZXZpZXdlciJ9KTsKLSAg
ICBlcXVhbCh0ZXN0RmFpbHVyZXMuaW5kZXgoKSwgdGltZS5nZXRUaW1lKCkpOwotICAgIGVxdWFs
KHRlc3RGYWlsdXJlcy5pbm5lckhUTUwsCi0gICAgICAgICc8ZGl2IGNsYXNzPSJob3ciPicgKwot
ICAgICAgICAgICAgJzx0aW1lIGNsYXNzPSJyZWxhdGl2ZSI+MTAgbWludXRlcyBhZ288L3RpbWU+
JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0gICAgICAgICAg
ICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48dGQ+ZGVidWc8
L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0ciBjbGFzcz0i
QlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bh
bj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAgICAgICAgICc8
L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNsYXNzPSJ3aGF0
Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAgICAgICAgICAg
ICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxsaT48
YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0LXRlc3RzJmFt
cDt0ZXN0PXRlc3QiIHRhcmdldD0iX2JsYW5rIj50ZXN0PC9hPjwvbGk+JyArCi0gICAgICAgICAg
ICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+JyAr
Ci0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1bHQi
IHRpdGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlv
biI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyAr
Ci0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMi
PicgKwotICAgICAgICAgICAgICAgICc8bGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2
IGNsYXNzPSJkZXNjcmlwdGlvbiI+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPGEgaHJl
Zj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMSIgdGFyZ2V0PSJfYmxhbmsiPjE8
L2E+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4+JyArCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJzdW1tYXJ5Ij5zdW1tYXJ5PC9zcGFuPicgKwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iYXV0aG9yIj5hdXRob3I8
L3NwYW4+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJyZXZp
ZXdlciI+cmV2aWV3ZXI8L3NwYW4+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPC9zcGFu
PicgKwotICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwv
bGk+JyArCi0gICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAg
dGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVzdE5hbWU6ICdmb28nLCByZXN1bHRO
b2Rlc0J5QnVpbGRlcjogeydXZWJraXQgTGludXggKGRiZyknOiB7IGFjdHVhbDogJ1RFWFQnfX19
KTsKLSAgICBlcXVhbCh0ZXN0RmFpbHVyZXMuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFz
cz0iaG93Ij4nICsKLSAgICAgICAgICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjEwIG1pbnV0
ZXMgYWdvPC90aW1lPicgKwotICAgICAgICAgICAgJzx0YWJsZSBjbGFzcz0iZmFpbHVyZXMiPicg
KwotICAgICAgICAgICAgICAgICc8dGhlYWQ+PHRyPjx0ZD50eXBlPC90ZD48dGQ+cmVsZWFzZTwv
dGQ+PHRkPmRlYnVnPC90ZD48L3RyPjwvdGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0Ym9k
eT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0ciBjbGFzcz0iVEVYVCI+JyArCi0gICAgICAg
ICAgICAgICAgICAgICAgICAnPHRkPjxzcGFuPlRFWFQ8L3NwYW4+PC90ZD4nICsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8
dGQ+PGEgY2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6
Ly9idWlsZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9
V2Via2l0K0xpbnV4KyhkYmcpIj48c3BhbiBjbGFzcz0idmVyc2lvbiI+bHVjaWQ8L3NwYW4+PHNw
YW4gY2xhc3M9ImFyY2hpdGVjdHVyZSI+NjQtYml0PC9zcGFuPjwvYT48L3RkPicgKwotICAgICAg
ICAgICAgICAgICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0ciBjbGFzcz0i
QlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlMRElORzwvc3Bh
bj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+JyArCi0gICAgICAgICAgICAgICAgJzwvdGJv
ZHk+JyArCi0gICAgICAgICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAg
ICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJv
YmxlbSI+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAg
ICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcv
P3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdHM9Zm9vIiB0YXJnZXQ9Il9ibGFuayI+Zm9vPC9h
PjwvbGk+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1
bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9
Il9ibGFuayI+dGVzdDwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAg
ICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAg
ICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVz
ZSBmYWlsdXJlcyBpbiBkZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJzxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2
PicgKwotICAgICAgICAgICAgJzx1bCBjbGFzcz0iY2F1c2VzIj4nICsKLSAgICAgICAgICAgICAg
ICAnPGxpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24i
PicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzEiIHRhcmdldD0iX2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAg
ICAgICAgICAgICAgJzxzcGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3Bh
biBjbGFzcz0ic3VtbWFyeSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnPHNwYW4gY2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFu
PicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgICAgICAg
ICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAg
JzwvdWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLQotICAgIHRlc3RGYWlsdXJlcy51cGRhdGVC
dWlsZGVyUmVzdWx0cyh7J1dlYmtpdCBNYWMxMC42JzogeyBhY3R1YWw6ICdCVUlMRElORyd9fSk7
Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xhc3M9
ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj4xMCBtaW51dGVz
IGFnbzwvdGltZT4nICsKLSAgICAgICAgICAgICc8dGFibGUgY2xhc3M9ImZhaWx1cmVzIj4nICsK
LSAgICAgICAgICAgICAgICAnPHRoZWFkPjx0cj48dGQ+dHlwZTwvdGQ+PHRkPnJlbGVhc2U8L3Rk
Pjx0ZD5kZWJ1ZzwvdGQ+PC90cj48L3RoZWFkPicgKwotICAgICAgICAgICAgICAgICc8dGJvZHk+
JyArCi0gICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IlRFWFQiPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJzx0ZD48c3Bhbj5URVhUPC9zcGFuPjwvdGQ+JyArCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnPHRkPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICAgICAnPHRk
PjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8v
YnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9idWlsZGVyPVdl
YmtpdCtMaW51eCsoZGJnKSI+PHNwYW4gY2xhc3M9InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxzcGFu
IGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bhbj48L2E+PC90ZD4nICsKLSAgICAgICAg
ICAgICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dHIgY2xhc3M9IkJV
SUxESU5HIiBzdHlsZT0iIj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PHNwYW4+
QlVJTERJTkc8L3NwYW4+PC90ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PGEg
Y2xhc3M9ImZhaWxpbmctYnVpbGRlciIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9idWls
ZC5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS53ZWJraXQvd2F0ZXJmYWxsP2J1aWxkZXI9V2Via2l0
K01hYzEwLjYiPjxzcGFuIGNsYXNzPSJ2ZXJzaW9uIj5zbm93bGVvcGFyZDwvc3Bhbj48L2E+PC90
ZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICc8dGQ+PC90ZD4nICsKLSAgICAgICAgICAg
ICAgICAgICAgJzwvdHI+JyArCi0gICAgICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAg
ICAgICAnPC90YWJsZT4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPGRpdiBjbGFz
cz0id2hhdCI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0icHJvYmxlbSI+JyArCi0gICAg
ICAgICAgICAgICAgJzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAgICAgICAg
ICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcvP3N1aXRlPWxheW91dC10
ZXN0cyZhbXA7dGVzdHM9Zm9vIiB0YXJnZXQ9Il9ibGFuayI+Zm9vPC9hPjwvbGk+JyArCi0gICAg
ICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcv
P3N1aXRlPWxheW91dC10ZXN0cyZhbXA7dGVzdD10ZXN0IiB0YXJnZXQ9Il9ibGFuayI+dGVzdDwv
YT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgICAgICc8
dWwgY2xhc3M9ImFjdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24g
Y2xhc3M9ImFjdGlvbiBkZWZhdWx0IiB0aXRsZT0iRXhhbWluZSB0aGVzZSBmYWlsdXJlcyBpbiBk
ZXRhaWwuIj5FeGFtaW5lPC9idXR0b24+PC9saT4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxs
aT48YnV0dG9uIGNsYXNzPSJhY3Rpb24iPlJlYmFzZWxpbmU8L2J1dHRvbj48L2xpPicgKwotICAg
ICAgICAgICAgICAgICc8L3VsPicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAg
ICAgJzx1bCBjbGFzcz0iY2F1c2VzIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpPicgKwotICAg
ICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzEiIHRhcmdldD0iX2JsYW5rIj4xPC9hPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgJzxz
cGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0ic3VtbWFy
eSI+c3VtbWFyeTwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4g
Y2xhc3M9ImF1dGhvciI+YXV0aG9yPC9zcGFuPicgKwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICc8c3BhbiBjbGFzcz0icmV2aWV3ZXIiPnJldmlld2VyPC9zcGFuPicgKwotICAgICAgICAg
ICAgICAgICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzwvZGl2Picg
KwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvdWw+JyArCi0gICAg
ICAgICc8L2Rpdj4nKTsKLX0pOwotCi10ZXN0KCdGYWlsaW5nVGVzdHNTdW1tYXJ5IChncm91cGlu
ZyknLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgdGVzdEZhaWx1cmVzID0gbmV3IHVpLm5vdGlm
aWNhdGlvbnMuRmFpbGluZ1Rlc3RzU3VtbWFyeSgpOwotICAgIHRlc3RGYWlsdXJlcy5hZGRGYWls
dXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC90by90ZXN0MS5odG1sJywgcmVzdWx0Tm9kZXNC
eUJ1aWxkZXI6IHt9fSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFseXNpcyh7dGVz
dE5hbWU6ICdwYXRoL3RvL3Rlc3QyLmh0bWwnLCByZXN1bHROb2Rlc0J5QnVpbGRlcjoge319KTsK
LSAgICB0ZXN0RmFpbHVyZXMuYWRkRmFpbHVyZUFuYWx5c2lzKHt0ZXN0TmFtZTogJ3BhdGgvdG8v
dGVzdDMuaHRtbCcsIHJlc3VsdE5vZGVzQnlCdWlsZGVyOiB7fX0pOwotICAgIHRlc3RGYWlsdXJl
cy5hZGRGYWlsdXJlQW5hbHlzaXMoe3Rlc3ROYW1lOiAncGF0aC90by90ZXN0NC5odG1sJywgcmVz
dWx0Tm9kZXNCeUJ1aWxkZXI6IHt9fSk7Ci0gICAgdGVzdEZhaWx1cmVzLmFkZEZhaWx1cmVBbmFs
eXNpcyh7dGVzdE5hbWU6ICdwYXRoL2Fub3RoZXIvdGVzdC5odG1sJywgcmVzdWx0Tm9kZXNCeUJ1
aWxkZXI6IHt9fSk7Ci0gICAgZXF1YWwodGVzdEZhaWx1cmVzLmlubmVySFRNTCwKLSAgICAgICAg
JzxkaXYgY2xhc3M9ImhvdyI+JyArCi0gICAgICAgICAgICAnPHRpbWUgY2xhc3M9InJlbGF0aXZl
Ij48L3RpbWU+JyArCi0gICAgICAgICAgICAnPHRhYmxlIGNsYXNzPSJmYWlsdXJlcyI+JyArCi0g
ICAgICAgICAgICAgICAgJzx0aGVhZD48dHI+PHRkPnR5cGU8L3RkPjx0ZD5yZWxlYXNlPC90ZD48
dGQ+ZGVidWc8L3RkPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAnPHRib2R5Pjx0
ciBjbGFzcz0iQlVJTERJTkciIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiPjx0ZD48c3Bhbj5CVUlM
RElORzwvc3Bhbj48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+PC90Ym9keT4nICsKLSAgICAg
ICAgICAgICc8L3RhYmxlPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGNs
YXNzPSJ3aGF0Ij4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJwcm9ibGVtIj4nICsKLSAg
ICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJlZmZlY3RzIj4nICsKLSAgICAgICAgICAgICAgICAg
ICAgJzxsaT48YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8/c3VpdGU9bGF5b3V0
LXRlc3RzJmFtcDt0ZXN0PXBhdGglMkZ0byUyRnRlc3QxLmh0bWwlMkNwYXRoJTJGdG8lMkZ0ZXN0
Mi5odG1sJTJDcGF0aCUyRnRvJTJGdGVzdDMuaHRtbCUyQ3BhdGglMkZ0byUyRnRlc3Q0Lmh0bWwi
IHRhcmdldD0iX2JsYW5rIj5wYXRoL3RvICg0IHRlc3RzKTwvYT48L2xpPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPGxpPjxhIGhyZWY9Imh0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnLz9zdWl0
ZT1sYXlvdXQtdGVzdHMmYW1wO3Rlc3Q9cGF0aCUyRmFub3RoZXIlMkZ0ZXN0Lmh0bWwiIHRhcmdl
dD0iX2JsYW5rIj5wYXRoL2Fub3RoZXIvdGVzdC5odG1sPC9hPjwvbGk+JyArCi0gICAgICAgICAg
ICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+JyAr
Ci0gICAgICAgICAgICAgICAgICAgICc8bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIGRlZmF1bHQi
IHRpdGxlPSJFeGFtaW5lIHRoZXNlIGZhaWx1cmVzIGluIGRldGFpbC4iPkV4YW1pbmU8L2J1dHRv
bj48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxpPjxidXR0b24gY2xhc3M9ImFjdGlv
biI+UmViYXNlbGluZTwvYnV0dG9uPjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyAr
Ci0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMi
PjwvdWw+JyArCi0gICAgICAgICc8L2Rpdj4nKTsKLX0pOwotCi10ZXN0KCdCdWlsZGVyc0ZhaWxp
bmcnLCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgYnVpbGRlckZhaWxpbmcgPSBuZXcgdWkubm90
aWZpY2F0aW9ucy5CdWlsZGVyc0ZhaWxpbmcoJ0Rpc2FzdGVyaWZ5aW5nJyk7Ci0gICAgYnVpbGRl
ckZhaWxpbmcuc2V0RmFpbGluZ0J1aWxkZXJzKHsnV2Via2l0IExpbnV4JzogWydjb21waWxlJ10s
ICdXZWJraXQgV2luNyc6IFsnd2Via2l0X3Rlc3RzJywgJ3VwZGF0ZSddfSk7Ci0gICAgZXF1YWwo
YnVpbGRlckZhaWxpbmcuaW5uZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij4nICsK
LSAgICAgICAgICAgICc8dGltZSBjbGFzcz0icmVsYXRpdmUiPjwvdGltZT4nICsKLSAgICAgICAg
JzwvZGl2PicgKwotICAgICAgICAnPGRpdiBjbGFzcz0id2hhdCI+JyArCi0gICAgICAgICAgICAn
PGRpdiBjbGFzcz0icHJvYmxlbSI+RGlzYXN0ZXJpZnlpbmc6JyArCi0gICAgICAgICAgICAgICAg
Jzx1bCBjbGFzcz0iZWZmZWN0cyI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8bGkgY2xhc3M9
ImJ1aWxkZXIiPjxhIGNsYXNzPSJmYWlsaW5nLWJ1aWxkZXIiIHRhcmdldD0iX2JsYW5rIiBocmVm
PSJodHRwOi8vYnVpbGQuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0ud2Via2l0L3dhdGVyZmFsbD9i
dWlsZGVyPVdlYmtpdCtMaW51eCI+PHNwYW4gY2xhc3M9InZlcnNpb24iPmx1Y2lkPC9zcGFuPjxz
cGFuIGNsYXNzPSJhcmNoaXRlY3R1cmUiPjY0LWJpdDwvc3Bhbj48c3BhbiBjbGFzcz0iZmFpbHVy
ZXMiPiBjb21waWxlPC9zcGFuPjwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICAgICAnPGxp
IGNsYXNzPSJidWlsZGVyIj48YSBjbGFzcz0iZmFpbGluZy1idWlsZGVyIiB0YXJnZXQ9Il9ibGFu
ayIgaHJlZj0iaHR0cDovL2J1aWxkLmNocm9taXVtLm9yZy9wL2Nocm9taXVtLndlYmtpdC93YXRl
cmZhbGw/YnVpbGRlcj1XZWJraXQrV2luNyI+PHNwYW4gY2xhc3M9InZlcnNpb24iPndpbjc8L3Nw
YW4+PHNwYW4gY2xhc3M9ImZhaWx1cmVzIj4gd2Via2l0X3Rlc3RzLCB1cGRhdGU8L3NwYW4+PC9h
PjwvbGk+JyArCi0gICAgICAgICAgICAgICAgJzwvdWw+JyArCi0gICAgICAgICAgICAnPC9kaXY+
JyArCi0gICAgICAgICAgICAnPHVsIGNsYXNzPSJjYXVzZXMiPjwvdWw+JyArCi0gICAgICAgICc8
L2Rpdj4nKTsKLX0pOwotCi19KCkpOwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL3NjcmlwdHMvdWkvbm90aWZpY2F0aW9uc191bml0dGVzdHMuanMKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLUxGClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpL3BlcmYuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcGVyZi5qcwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcGVyZi5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZhciB1aSA9IHVpIHx8IHt9Owot
dWkucGVyZiA9IHVpLnBlcmYgfHwge307Ci0KLShmdW5jdGlvbigpewotCi11aS5wZXJmLlBpY2tl
ciA9IGJhc2UuZXh0ZW5kcygnc2VsZWN0JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKGl0ZW1zLCBv
bkNoYW5nZSwgb3B0X3ZhbHVlcykKLSAgICB7Ci0gICAgICAgIHRoaXMub25jaGFuZ2UgPSBvbkNo
YW5nZTsKLSAgICAgICAgdGhpcy5fdmFsdWVzID0gb3B0X3ZhbHVlczsKLSAgICAgICAgaXRlbXMu
Zm9yRWFjaCh0aGlzLl9hcHBlbmRJdGVtLmJpbmQodGhpcykpOwotICAgIH0sCi0gICAgX2FwcGVu
ZEl0ZW06IGZ1bmN0aW9uKGl0ZW0sIGluZGV4KQotICAgIHsKLSAgICAgICAgdmFyIG9wdGlvbiA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ29wdGlvbicpOwotICAgICAgICBvcHRpb24uaW5uZXJI
VE1MID0gaXRlbTsKLSAgICAgICAgaWYgKHRoaXMuX3ZhbHVlcykKLSAgICAgICAgICAgIG9wdGlv
bi52YWx1ZSA9IHRoaXMuX3ZhbHVlc1tpbmRleF07Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
b3B0aW9uKTsKLSAgICB9Ci19KTsKLQotdWkucGVyZi5WaWV3ID0gYmFzZS5leHRlbmRzKCdkaXYn
LCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5pZCA9ICdwZXJm
LXZpZXcnOwotICAgICAgICBidWlsZGVycy5wZXJmQnVpbGRlcnModGhpcy5sb2FkR3JhcGhzLmJp
bmQodGhpcykpOwotCi0gICAgICAgIHZhciBzdHJlYW0gPSBuZXcgdWkubm90aWZpY2F0aW9ucy5T
dHJlYW0oKTsKLSAgICAgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKLSAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uID0gdWkubm90aWZpY2F0aW9u
cy5JbmZvKCJMb2FkaW5nIGxpc3Qgb2YgcGVyZiBkYXNoYm9hcmRzLi4uIik7Ci0gICAgICAgIHN0
cmVhbS5hcHBlbmRDaGlsZCh0aGlzLl9ub3RpZmljYXRpb24pOwotICAgICAgICB0aGlzLmFwcGVu
ZENoaWxkKHN0cmVhbSk7Ci0gICAgfSwKLSAgICBsb2FkR3JhcGhzOiBmdW5jdGlvbihncmFwaERh
dGEpCi0gICAgewotICAgICAgICB0aGlzLl9ub3RpZmljYXRpb24uZGlzbWlzcygpOwotCi0gICAg
ICAgIC8vIEZJWE1FOiBBZGQgbmV4dC9wcmV2aW91cyBidXR0b25zIGZvciBlYXN5IG5hdmlnYXRp
b24gdGhyb3VnaCBhbGwgdGhlIGdyYXBocy4KLSAgICAgICAgLy8gRklYTUU6IEFsc28sIHNob3cg
dGhlIGxpc3Qgb2YgZmFpbGluZyBwZXJmIGJ1aWxkZXJzIGFsb25nIHdpdGggd2hpY2ggc3RlcHMg
YXJlIGZhaWxpbmcuCi0gICAgICAgIHRoaXMuX2RhdGEgPSBncmFwaERhdGE7Ci0KLSAgICAgICAg
dGhpcy5fdGl0bGVCYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAg
dGhpcy5fdGl0bGVCYXIuY2xhc3NOYW1lID0gJ3RpdGxlLWJhcic7Ci0gICAgICAgIHRoaXMuYXBw
ZW5kQ2hpbGQodGhpcy5fdGl0bGVCYXIpOwotCi0gICAgICAgIHZhciB0ZXN0U3VpdGVzID0gT2Jq
ZWN0LmtleXMoZ3JhcGhEYXRhKTsKLSAgICAgICAgdmFyIHN1aXRlUGlja2VyID0gbmV3IHVpLnBl
cmYuUGlja2VyKHRlc3RTdWl0ZXMsIHRoaXMuX29uQ2hhbmdlU3VpdGUuYmluZCh0aGlzKSk7Ci0g
ICAgICAgIHRoaXMuX3RpdGxlQmFyLmFwcGVuZENoaWxkKHN1aXRlUGlja2VyKTsKLQotICAgICAg
ICB0aGlzLl90aXRsZUJhci5hcHBlbmRDaGlsZChuZXcgdWkuYWN0aW9ucy5MaXN0KFtuZXcgdWku
YWN0aW9ucy5QcmV2aW91cygpLCBuZXcgdWkuYWN0aW9ucy5OZXh0KCldKSk7Ci0KLSAgICAgICAg
JCh0aGlzKS5iaW5kKCduZXh0JywgdGhpcy5fbmV4dEdyYXBoLmJpbmQodGhpcykpOwotICAgICAg
ICAkKHRoaXMpLmJpbmQoJ3ByZXZpb3VzJywgdGhpcy5fcHJldmlvdXNHcmFwaC5iaW5kKHRoaXMp
KTsKLQotICAgICAgICB0aGlzLl9zdWl0ZVBpY2tlciA9IHN1aXRlUGlja2VyOwotICAgICAgICB0
aGlzLl9vbkNoYW5nZVN1aXRlKCk7Ci0gICAgfSwKLSAgICBfb25DaGFuZ2VTdWl0ZTogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fdXBkYXRlQnVpbGRlclBpY2tlcigpOwotICAgICAg
ICB0aGlzLl9kaXNwbGF5R3JhcGgoKTsKLSAgICB9LAotICAgIF91cGRhdGVCdWlsZGVyUGlja2Vy
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fYnVpbGRlclBpY2tlcikKLSAg
ICAgICAgICAgIHRoaXMuX3RpdGxlQmFyLnJlbW92ZUNoaWxkKHRoaXMuX2J1aWxkZXJQaWNrZXIp
OwotCi0gICAgICAgIGlmICghdGhpcy5fc3VpdGVQaWNrZXIubGVuZ3RoKQotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB2YXIgc2VsZWN0ZWRTdWl0ZSA9IHRoaXMuX3N1aXRlUGlja2VyW3Ro
aXMuX3N1aXRlUGlja2VyLnNlbGVjdGVkSW5kZXhdLnRleHQ7Ci0gICAgICAgIHZhciBidWlsZGVy
cyA9IFtdOwotICAgICAgICB2YXIgdXJscyA9IFtdOwotICAgICAgICB0aGlzLl9kYXRhW3NlbGVj
dGVkU3VpdGVdLmZvckVhY2goZnVuY3Rpb24oY29uZmlnKSB7Ci0gICAgICAgICAgICBidWlsZGVy
cy5wdXNoKGNvbmZpZy5idWlsZGVyKTsKLSAgICAgICAgICAgIHVybHMucHVzaChjb25maWcudXJs
KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHRoaXMuX2J1aWxkZXJQaWNrZXIgPSBuZXcgdWkucGVy
Zi5QaWNrZXIoYnVpbGRlcnMsIHRoaXMuX2Rpc3BsYXlHcmFwaC5iaW5kKHRoaXMpLCB1cmxzKTsK
LSAgICAgICAgdGhpcy5fdGl0bGVCYXIuYXBwZW5kQ2hpbGQodGhpcy5fYnVpbGRlclBpY2tlcik7
Ci0gICAgfSwKLSAgICBfZGlzcGxheUdyYXBoOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2
YXIgcG9wT3V0TGluayA9IHRoaXMucXVlcnlTZWxlY3RvcignLnBvcC1vdXQnKTsKLSAgICAgICAg
aWYgKCFwb3BPdXRMaW5rKSB7Ci0gICAgICAgICAgICBwb3BPdXRMaW5rID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnYScpOwotICAgICAgICAgICAgcG9wT3V0TGluay5jbGFzc05hbWUgPSAncG9w
LW91dCc7Ci0gICAgICAgICAgICBwb3BPdXRMaW5rLnRleHRDb250ZW50ID0gJ1BvcCBvdXQnOwot
ICAgICAgICAgICAgcG9wT3V0TGluay50YXJnZXQgPSAnX2JsYW5rJzsKLSAgICAgICAgICAgIHRo
aXMuX3RpdGxlQmFyLmFwcGVuZENoaWxkKHBvcE91dExpbmspOwotICAgICAgICB9Ci0KLSAgICAg
ICAgdmFyIGdyYXBoID0gdGhpcy5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKTsKLSAgICAgICAgaWYg
KCFncmFwaCkgewotICAgICAgICAgICAgZ3JhcGggPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdp
ZnJhbWUnKTsKLSAgICAgICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoZ3JhcGgpOwotICAgICAgICB9
Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9idWlsZGVyUGlja2VyIHx8ICF0aGlzLl9idWlsZGVyUGlj
a2VyLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgdXJsID0gdGhp
cy5fYnVpbGRlclBpY2tlclt0aGlzLl9idWlsZGVyUGlja2VyLnNlbGVjdGVkSW5kZXhdLnZhbHVl
OwotICAgICAgICBwb3BPdXRMaW5rLmhyZWYgPSB1cmw7Ci0gICAgICAgIGdyYXBoLnNyYyA9IHVy
bDsKLSAgICB9LAotICAgIF9uZXh0R3JhcGg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICghdGhpcy5fYnVpbGRlclBpY2tlcikKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBp
ZiAodGhpcy5fYnVpbGRlclBpY2tlci5zZWxlY3RlZEluZGV4IDwgdGhpcy5fYnVpbGRlclBpY2tl
ci5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICB0aGlzLl9idWlsZGVyUGlja2VyLnNlbGVjdGVk
SW5kZXgrKzsKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlHcmFwaCgpOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRoaXMuX3N1aXRlUGlja2VyLnNlbGVj
dGVkSW5kZXggPCB0aGlzLl9zdWl0ZVBpY2tlci5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICB0
aGlzLl9zdWl0ZVBpY2tlci5zZWxlY3RlZEluZGV4Kys7Ci0gICAgICAgICAgICB0aGlzLl9vbkNo
YW5nZVN1aXRlKCk7Ci0gICAgICAgIH0KLSAgICB9LAotICAgIF9wcmV2aW91c0dyYXBoOiBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuX2J1aWxkZXJQaWNrZXIpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJ
bmRleCA+IDApIHsKLSAgICAgICAgICAgIHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRl
eC0tOwotICAgICAgICAgICAgdGhpcy5fZGlzcGxheUdyYXBoKCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhpcy5fc3VpdGVQaWNrZXIuc2VsZWN0ZWRJ
bmRleCA+IDApIHsKLSAgICAgICAgICAgIHRoaXMuX3N1aXRlUGlja2VyLnNlbGVjdGVkSW5kZXgt
LTsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJ1aWxkZXJQaWNrZXIoKTsKLSAgICAgICAgICAg
IHRoaXMuX2J1aWxkZXJQaWNrZXIuc2VsZWN0ZWRJbmRleCA9IHRoaXMuX2J1aWxkZXJQaWNrZXIu
bGVuZ3RoIC0gMTsKLSAgICAgICAgICAgIHRoaXMuX2Rpc3BsYXlHcmFwaCgpOwotICAgICAgICB9
Ci0gICAgfQotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9w
ZXJmX3VuaXR0ZXN0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91
aS9wZXJmX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3NjcmlwdHMvdWkvcGVyZl91bml0dGVzdHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxODAgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0oZnVuY3Rpb24gKCkgewotCi1tb2R1bGUoJ3VpLnBlcmYnKTsK
LQotdmFyIGtEdW1teVBlcmZHcmFwaERhdGEgPSB7Ci0gICAgImR1bW15X3BlcmZfdGVzdF8xIjog
WwotICAgICAgICB7Ci0gICAgICAgICAgICAiYnVpbGRlciI6ICJNYWMxMC42IFBlcmYiLAotICAg
ICAgICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwxIgotICAgICAgICB9Ci0gICAgXSwKLSAg
ICAiZHVtbXlfcGVyZl90ZXN0XzIiOiBbCi0gICAgICAgIHsKLSAgICAgICAgICAgICJidWlsZGVy
IjogIk1hYzEwLjYgUGVyZiIsCi0gICAgICAgICAgICAidXJsIjogImh0dHA6Ly9kdW1teXVybDIi
Ci0gICAgICAgIH0sCi0gICAgICAgIHsKLSAgICAgICAgICAgICJidWlsZGVyIjogIkxpbnV4IFBl
cmYiLAotICAgICAgICAgICAgInVybCI6ICJodHRwOi8vZHVtbXl1cmwzIgotICAgICAgICB9Ci0g
ICAgXQotfTsKLQotYXN5bmNUZXN0KCJWaWV3IiwgNywgZnVuY3Rpb24oKSB7Ci0gICAgdmFyIG9s
ZFBlcmZCdWlsZGVycyA9IGJ1aWxkZXJzLnBlcmZCdWlsZGVyczsKLSAgICBidWlsZGVycy5wZXJm
QnVpbGRlcnMgPSBmdW5jdGlvbihjYWxsYmFjaykgewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyBjYWxsYmFjayhrRHVtbXlQZXJmR3JhcGhEYXRhKSB9LCAwKTsKLSAgICB9Ci0KLSAg
ICB2YXIgdmlldyA9IG5ldyB1aS5wZXJmLlZpZXcoKTsKLQotICAgIHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7Ci0gICAgICAgIGVxdWFsKHZpZXcub3V0ZXJIVE1MLCAnPGRpdiBpZD0icGVyZi12aWV3
Ij4nICsKLSAgICAgICAgICAgICc8b2wgY2xhc3M9Im5vdGlmaWNhdGlvbnMiPicgKwotICAgICAg
ICAgICAgICAgICc8bGkgc3R5bGU9Im9wYWNpdHk6IDA7ICI+JyArCi0gICAgICAgICAgICAgICAg
ICAgICc8ZGl2IGNsYXNzPSJob3ciPjwvZGl2PjxkaXYgY2xhc3M9IndoYXQiPkxvYWRpbmcgbGlz
dCBvZiBwZXJmIGRhc2hib2FyZHMuLi48L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4n
ICsKLSAgICAgICAgICAgICc8L29sPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRpdGxl
LWJhciI+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rl
c3RfMTwvb3B0aW9uPjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4n
ICsKLSAgICAgICAgICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFz
cz0iYWN0aW9uIHByZXZpb3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPjxsaT48YnV0dG9uIGNsYXNz
PSJhY3Rpb24gbmV4dCI+XHUyNUI2PC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAg
ICAgICc8c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVy
Zjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFzcz0icG9wLW91
dCIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDEiPlBvcCBvdXQ8L2E+JyAr
Ci0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6
Ly9kdW1teXVybDEiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAg
dmlldy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhUTUwsICc8ZGl2
IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90aWZpY2F0aW9u
cyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsgIj4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBjbGFzcz0id2hh
dCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwotICAgICAgICAg
ICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAgICAgICAnPGRp
diBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVjdD48b3B0aW9u
PmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMjwvb3B0
aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPjxs
aT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9uPjwvbGk+PGxp
PjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xpPjwvdWw+JyAr
Ci0gICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9ibGFuayIgaHJl
Zj0iaHR0cDovL2R1bW15dXJsMiI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAgICAgICAnPHNl
bGVjdD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMxMC42IFBlcmY8L29wdGlv
bj48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQZXJmPC9vcHRpb24+PC9z
ZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAnPGlmcmFtZSBz
cmM9Imh0dHA6Ly9kdW1teXVybDIiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0K
LSAgICAgICAgdmlldy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmlldy5vdXRlckhU
TUwsICc8ZGl2IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBjbGFzcz0ibm90
aWZpY2F0aW9ucyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3BhY2l0eTogMDsg
Ij4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9kaXY+PGRpdiBj
bGFzcz0id2hhdCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwvZGl2PicgKwot
ICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyArCi0gICAgICAg
ICAgICAnPGRpdiBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNlbGVj
dD48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1teV9wZXJmX3Rl
c3RfMjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwgY2xhc3M9ImFj
dGlvbnMiPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVDMDwvYnV0dG9u
PjwvbGk+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1dHRvbj48L2xp
PjwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0YXJnZXQ9Il9i
bGFuayIgaHJlZj0iaHR0cDovL2R1bW15dXJsMyI+UG9wIG91dDwvYT4nICsKLSAgICAgICAgICAg
ICAgICAnPHNlbGVjdD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5NYWMxMC42IFBl
cmY8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51eCBQZXJmPC9v
cHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICAgICAn
PGlmcmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDMiPjwvaWZyYW1lPicgKwotICAgICAgICAnPC9k
aXY+Jyk7Ci0KLSAgICAgICAgdmlldy5fbmV4dEdyYXBoKCk7Ci0KLSAgICAgICAgZXF1YWwodmll
dy5vdXRlckhUTUwsICc8ZGl2IGlkPSJwZXJmLXZpZXciPicgKwotICAgICAgICAgICAgJzxvbCBj
bGFzcz0ibm90aWZpY2F0aW9ucyI+JyArCi0gICAgICAgICAgICAgICAgJzxsaSBzdHlsZT0ib3Bh
Y2l0eTogMDsgIj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImhvdyI+PC9k
aXY+PGRpdiBjbGFzcz0id2hhdCI+TG9hZGluZyBsaXN0IG9mIHBlcmYgZGFzaGJvYXJkcy4uLjwv
ZGl2PicgKwotICAgICAgICAgICAgICAgICc8L2xpPicgKwotICAgICAgICAgICAgJzwvb2w+JyAr
Ci0gICAgICAgICAgICAnPGRpdiBjbGFzcz0idGl0bGUtYmFyIj4nICsKLSAgICAgICAgICAgICAg
ICAnPHNlbGVjdD48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8xPC9vcHRpb24+PG9wdGlvbj5kdW1t
eV9wZXJmX3Rlc3RfMjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgICAgICc8dWwg
Y2xhc3M9ImFjdGlvbnMiPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gcHJldmlvdXMiPlx1MjVD
MDwvYnV0dG9uPjwvbGk+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBuZXh0Ij5cdTI1QjY8L2J1
dHRvbj48L2xpPjwvdWw+JyArCi0gICAgICAgICAgICAgICAgJzxhIGNsYXNzPSJwb3Atb3V0IiB0
YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL2R1bW15dXJsMyI+UG9wIG91dDwvYT4nICsKLSAg
ICAgICAgICAgICAgICAnPHNlbGVjdD48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwyIj5N
YWMxMC42IFBlcmY8L29wdGlvbj48b3B0aW9uIHZhbHVlPSJodHRwOi8vZHVtbXl1cmwzIj5MaW51
eCBQZXJmPC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAg
ICAgICAgICAnPGlmcmFtZSBzcmM9Imh0dHA6Ly9kdW1teXVybDMiPjwvaWZyYW1lPicgKwotICAg
ICAgICAnPC9kaXY+Jyk7Ci0KLSAgICAgICAgdmlldy5fcHJldmlvdXNHcmFwaCgpOwotCi0gICAg
ICAgIGVxdWFsKHZpZXcub3V0ZXJIVE1MLCAnPGRpdiBpZD0icGVyZi12aWV3Ij4nICsKLSAgICAg
ICAgICAgICc8b2wgY2xhc3M9Im5vdGlmaWNhdGlvbnMiPicgKwotICAgICAgICAgICAgICAgICc8
bGkgc3R5bGU9Im9wYWNpdHk6IDA7ICI+JyArCi0gICAgICAgICAgICAgICAgICAgICc8ZGl2IGNs
YXNzPSJob3ciPjwvZGl2PjxkaXYgY2xhc3M9IndoYXQiPkxvYWRpbmcgbGlzdCBvZiBwZXJmIGRh
c2hib2FyZHMuLi48L2Rpdj4nICsKLSAgICAgICAgICAgICAgICAnPC9saT4nICsKLSAgICAgICAg
ICAgICc8L29sPicgKwotICAgICAgICAgICAgJzxkaXYgY2xhc3M9InRpdGxlLWJhciI+JyArCi0g
ICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbj5kdW1teV9wZXJmX3Rlc3RfMTwvb3B0aW9u
PjxvcHRpb24+ZHVtbXlfcGVyZl90ZXN0XzI8L29wdGlvbj48L3NlbGVjdD4nICsKLSAgICAgICAg
ICAgICAgICAnPHVsIGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIHBy
ZXZpb3VzIj5cdTI1QzA8L2J1dHRvbj48L2xpPjxsaT48YnV0dG9uIGNsYXNzPSJhY3Rpb24gbmV4
dCI+XHUyNUI2PC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgICAgICc8YSBjbGFz
cz0icG9wLW91dCIgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9kdW1teXVybDIiPlBvcCBv
dXQ8L2E+JyArCi0gICAgICAgICAgICAgICAgJzxzZWxlY3Q+PG9wdGlvbiB2YWx1ZT0iaHR0cDov
L2R1bW15dXJsMiI+TWFjMTAuNiBQZXJmPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0iaHR0cDovL2R1
bW15dXJsMyI+TGludXggUGVyZjwvb3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgJzwv
ZGl2PicgKwotICAgICAgICAgICAgJzxpZnJhbWUgc3JjPSJodHRwOi8vZHVtbXl1cmwyIj48L2lm
cmFtZT4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgICAgIHZpZXcuX3ByZXZpb3VzR3Jh
cGgoKTsKLQotICAgICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwgJzxkaXYgaWQ9InBlcmYtdmll
dyI+JyArCi0gICAgICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmljYXRpb25zIj4nICsKLSAgICAg
ICAgICAgICAgICAnPGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicgKwotICAgICAgICAgICAgICAg
ICAgICAnPGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNzPSJ3aGF0Ij5Mb2FkaW5nIGxp
c3Qgb2YgcGVyZiBkYXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzwvbGk+
JyArCi0gICAgICAgICAgICAnPC9vbD4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJ0aXRs
ZS1iYXIiPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24+ZHVtbXlfcGVyZl90
ZXN0XzE8L29wdGlvbj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8yPC9vcHRpb24+PC9zZWxlY3Q+
JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xh
c3M9ImFjdGlvbiBwcmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9saT48bGk+PGJ1dHRvbiBjbGFz
cz0iYWN0aW9uIG5leHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91bD4nICsKLSAgICAgICAgICAg
ICAgICAnPGEgY2xhc3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZHVt
bXl1cmwxIj5Qb3Agb3V0PC9hPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0PjxvcHRpb24g
dmFsdWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVyZjwvb3B0aW9uPjwvc2VsZWN0Picg
KwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzxpZnJhbWUgc3JjPSJodHRw
Oi8vZHVtbXl1cmwxIj48L2lmcmFtZT4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgICAg
IHZpZXcuX3ByZXZpb3VzR3JhcGgoKTsKLQotICAgICAgICBlcXVhbCh2aWV3Lm91dGVySFRNTCwg
JzxkaXYgaWQ9InBlcmYtdmlldyI+JyArCi0gICAgICAgICAgICAnPG9sIGNsYXNzPSJub3RpZmlj
YXRpb25zIj4nICsKLSAgICAgICAgICAgICAgICAnPGxpIHN0eWxlPSJvcGFjaXR5OiAwOyAiPicg
KwotICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iaG93Ij48L2Rpdj48ZGl2IGNsYXNz
PSJ3aGF0Ij5Mb2FkaW5nIGxpc3Qgb2YgcGVyZiBkYXNoYm9hcmRzLi4uPC9kaXY+JyArCi0gICAg
ICAgICAgICAgICAgJzwvbGk+JyArCi0gICAgICAgICAgICAnPC9vbD4nICsKLSAgICAgICAgICAg
ICc8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPicgKwotICAgICAgICAgICAgICAgICc8c2VsZWN0Pjxv
cHRpb24+ZHVtbXlfcGVyZl90ZXN0XzE8L29wdGlvbj48b3B0aW9uPmR1bW15X3BlcmZfdGVzdF8y
PC9vcHRpb24+PC9zZWxlY3Q+JyArCi0gICAgICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9u
cyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlvbiBwcmV2aW91cyI+XHUyNUMwPC9idXR0b24+PC9s
aT48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIG5leHQiPlx1MjVCNjwvYnV0dG9uPjwvbGk+PC91
bD4nICsKLSAgICAgICAgICAgICAgICAnPGEgY2xhc3M9InBvcC1vdXQiIHRhcmdldD0iX2JsYW5r
IiBocmVmPSJodHRwOi8vZHVtbXl1cmwxIj5Qb3Agb3V0PC9hPicgKwotICAgICAgICAgICAgICAg
ICc8c2VsZWN0PjxvcHRpb24gdmFsdWU9Imh0dHA6Ly9kdW1teXVybDEiPk1hYzEwLjYgUGVyZjwv
b3B0aW9uPjwvc2VsZWN0PicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAg
JzxpZnJhbWUgc3JjPSJodHRwOi8vZHVtbXl1cmwxIj48L2lmcmFtZT4nICsKLSAgICAgICAgJzwv
ZGl2PicpOwotCi0gICAgICAgIGJ1aWxkZXJzLnBlcmZCdWlsZGVycyA9IG9sZFBlcmZCdWlsZGVy
czsKLSAgICAgICAgc3RhcnQoKTsKLSAgICB9LCAwKTsKLX0pOwotCi19KSgpOwpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3NjcmlwdHMvdWkvcmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9U
ZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEsNDc0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIHVpID0gdWkgfHwge307Ci11aS5yZXN1bHRzID0g
dWkucmVzdWx0cyB8fCB7fTsKLQotKGZ1bmN0aW9uKCl7Ci0KLXZhciBrUmVzdWx0c1ByZWZldGNo
RGVsYXlNUyA9IDUwMDsKLQotLy8gRklYTUU6IFJhdGhlciB0aGFuIHVzaW5nIHRhYmxlLCBzaG91
bGQgd2UgYmUgdXNpbmcgc29tZXRoaW5nIGZhbmNpZXI/Ci11aS5yZXN1bHRzLkNvbXBhcmlzb24g
PSBiYXNlLmV4dGVuZHMoJ3RhYmxlJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ2NvbXBhcmlzb24nOwotICAgICAgICB0aGlzLmlubmVy
SFRNTCA9ICc8dGhlYWQ+PHRyPjx0aD5FeHBlY3RlZDwvdGg+PHRoPkFjdHVhbDwvdGg+PHRoPkRp
ZmY8L3RoPjwvdHI+PC90aGVhZD4nICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAnPHRib2R5
Pjx0cj48dGQgY2xhc3M9ImV4cGVjdGVkIHJlc3VsdC1jb250YWluZXIiPjwvdGQ+PHRkIGNsYXNz
PSJhY3R1YWwgcmVzdWx0LWNvbnRhaW5lciI+PC90ZD48dGQgY2xhc3M9ImRpZmYgcmVzdWx0LWNv
bnRhaW5lciI+PC90ZD48L3RyPjwvdGJvZHk+JzsKLSAgICB9LAotICAgIF9zZWxlY3RvckZvcktp
bmQ6IGZ1bmN0aW9uKGtpbmQpCi0gICAgewotICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAg
ICAgY2FzZSByZXN1bHRzLmtFeHBlY3RlZEtpbmQ6Ci0gICAgICAgICAgICByZXR1cm4gJy5leHBl
Y3RlZCc7Ci0gICAgICAgIGNhc2UgcmVzdWx0cy5rQWN0dWFsS2luZDoKLSAgICAgICAgICAgIHJl
dHVybiAnLmFjdHVhbCc7Ci0gICAgICAgIGNhc2UgcmVzdWx0cy5rRGlmZktpbmQ6Ci0gICAgICAg
ICAgICByZXR1cm4gJy5kaWZmJzsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gJy51bmtub3du
JzsKLSAgICB9LAotICAgIHVwZGF0ZTogZnVuY3Rpb24oa2luZCwgcmVzdWx0KQotICAgIHsKLSAg
ICAgICAgdmFyIHNlbGVjdG9yID0gdGhpcy5fc2VsZWN0b3JGb3JLaW5kKGtpbmQpOwotICAgICAg
ICAkKHNlbGVjdG9yLCB0aGlzKS5lbXB0eSgpLmFwcGVuZChyZXN1bHQpOwotICAgICAgICByZXR1
cm4gcmVzdWx0OwotICAgIH0sCi19KTsKLQotLy8gV2UnZCByZWFsbHkgbGlrZSBUZXh0UmVzdWx0
IGFuZCBJbWFnZVJlc3VsdCB0byBleHRlbmQgYSBjb21tb24gUmVzdWx0IGJhc2UKLS8vIGNsYXNz
LCBidXQgd2UgY2FuJ3Qgc2VlbSB0byBkbyB0aGF0IGJlY2F1c2UgdGhleSBpbmhlcml0IGZyb20g
ZGlmZmVyZW50Ci0vLyBIVE1MRWxlbWVudHMuIFdlIGNvdWxkIGhhdmUgdGhlbSBpbmhlcml0IGZy
b20gPGRpdj4sIGJ1dCB0aGF0IHNlZW1zIGxhbWUuCi0KLXVpLnJlc3VsdHMuVGV4dFJlc3VsdCA9
IGJhc2UuZXh0ZW5kcygnaWZyYW1lJywgewotICAgIGluaXQ6IGZ1bmN0aW9uKHVybCkKLSAgICB7
Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3RleHQtcmVzdWx0JzsKLSAgICAgICAgdGhpcy5z
cmMgPSB1cmw7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuSW1hZ2VSZXN1bHQgPSBiYXNlLmV4
dGVuZHMoJ2ltZycsIHsKLSAgICBpbml0OiBmdW5jdGlvbih1cmwpCi0gICAgewotICAgICAgICB0
aGlzLmNsYXNzTmFtZSA9ICdpbWFnZS1yZXN1bHQnOwotICAgICAgICB0aGlzLnNyYyA9IHVybDsK
LSAgICB9Ci19KTsKLQotdWkucmVzdWx0cy5BdWRpb1Jlc3VsdCA9IGJhc2UuZXh0ZW5kcygnYXVk
aW8nLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24odXJsKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFz
c05hbWUgPSAnYXVkaW8tcmVzdWx0JzsKLSAgICAgICAgdGhpcy5zcmMgPSB1cmw7Ci0gICAgICAg
IHRoaXMuY29udHJvbHMgPSAnY29udHJvbHMnOwotICAgIH0KLX0pOwotCi1mdW5jdGlvbiBjb25z
dHJ1Y3RvckZvclJlc3VsdFR5cGUodHlwZSkKLXsKLSAgICBpZiAodHlwZSA9PSByZXN1bHRzLmtJ
bWFnZVR5cGUpCi0gICAgICAgIHJldHVybiB1aS5yZXN1bHRzLkltYWdlUmVzdWx0OwotICAgIGlm
ICh0eXBlID09IHJlc3VsdHMua0F1ZGlvVHlwZSkKLSAgICAgICAgcmV0dXJuIHVpLnJlc3VsdHMu
QXVkaW9SZXN1bHQ7Ci0gICAgcmV0dXJuIHVpLnJlc3VsdHMuVGV4dFJlc3VsdDsKLX0KLQotdWku
cmVzdWx0cy5SZXN1bHRzR3JpZCA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3VsdHMtZ3JpZCc7
Ci0gICAgfSwKLSAgICBfYWRkUmVzdWx0OiBmdW5jdGlvbihjb21wYXJpc29uLCBjb25zdHJ1Y3Rv
ciwgcmVzdWx0c1VSTHNCeUtpbmQsIGtpbmQpCi0gICAgewotICAgICAgICB2YXIgdXJsID0gcmVz
dWx0c1VSTHNCeUtpbmRba2luZF07Ci0gICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICBjb21wYXJpc29uLnVwZGF0ZShraW5kLCBuZXcgY29uc3RydWN0b3IodXJs
KSk7Ci0gICAgfSwKLSAgICBhZGRDb21wYXJpc29uOiBmdW5jdGlvbihyZXN1bHRUeXBlLCByZXN1
bHRzVVJMc0J5S2luZCkKLSAgICB7Ci0gICAgICAgIHZhciBjb21wYXJpc29uID0gbmV3IHVpLnJl
c3VsdHMuQ29tcGFyaXNvbigpOwotICAgICAgICB2YXIgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rv
ckZvclJlc3VsdFR5cGUocmVzdWx0VHlwZSk7Ci0KLSAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNv
bXBhcmlzb24sIGNvbnN0cnVjdG9yLCByZXN1bHRzVVJMc0J5S2luZCwgcmVzdWx0cy5rRXhwZWN0
ZWRLaW5kKTsKLSAgICAgICAgdGhpcy5fYWRkUmVzdWx0KGNvbXBhcmlzb24sIGNvbnN0cnVjdG9y
LCByZXN1bHRzVVJMc0J5S2luZCwgcmVzdWx0cy5rQWN0dWFsS2luZCk7Ci0gICAgICAgIHRoaXMu
X2FkZFJlc3VsdChjb21wYXJpc29uLCBjb25zdHJ1Y3RvciwgcmVzdWx0c1VSTHNCeUtpbmQsIHJl
c3VsdHMua0RpZmZLaW5kKTsKLQotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKGNvbXBhcmlzb24p
OwotICAgICAgICByZXR1cm4gY29tcGFyaXNvbjsKLSAgICB9LAotICAgIGFkZFJvdzogZnVuY3Rp
b24ocmVzdWx0VHlwZSwgdXJsKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnN0cnVjdG9yID0gY29u
c3RydWN0b3JGb3JSZXN1bHRUeXBlKHJlc3VsdFR5cGUpOwotICAgICAgICB2YXIgdmlldyA9IG5l
dyBjb25zdHJ1Y3Rvcih1cmwpOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHZpZXcpOwotICAg
ICAgICByZXR1cm4gdmlldzsKLSAgICB9LAotICAgIGFkZFJlc3VsdHM6IGZ1bmN0aW9uKHJlc3Vs
dHNVUkxzKQotICAgIHsKLSAgICAgICAgdmFyIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZCA9IHt9
OwotCi0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtJbWFnZVR5cGVd
ID0ge307Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtBdWRpb1R5
cGVdID0ge307Ci0gICAgICAgIHJlc3VsdHNVUkxzQnlUeXBlQW5kS2luZFtyZXN1bHRzLmtUZXh0
VHlwZV0gPSB7fTsKLQotICAgICAgICByZXN1bHRzVVJMcy5mb3JFYWNoKGZ1bmN0aW9uKHVybCkg
ewotICAgICAgICAgICAgcmVzdWx0c1VSTHNCeVR5cGVBbmRLaW5kW3Jlc3VsdHMucmVzdWx0VHlw
ZSh1cmwpXVtyZXN1bHRzLnJlc3VsdEtpbmQodXJsKV0gPSB1cmw7Ci0gICAgICAgIH0pOwotCi0g
ICAgICAgICQuZWFjaChyZXN1bHRzVVJMc0J5VHlwZUFuZEtpbmQsIGZ1bmN0aW9uKHJlc3VsdFR5
cGUsIHJlc3VsdHNVUkxzQnlLaW5kKSB7Ci0gICAgICAgICAgICBpZiAoJC5pc0VtcHR5T2JqZWN0
KHJlc3VsdHNVUkxzQnlLaW5kKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAg
ICBpZiAocmVzdWx0cy5rVW5rbm93bktpbmQgaW4gcmVzdWx0c1VSTHNCeUtpbmQpIHsKLSAgICAg
ICAgICAgICAgICAvLyBUaGlzIGlzIHNvbWV0aGluZyBsaWtlICJjcmFzaCIgdGhhdCBpc24ndCBh
IGNvbXBhcmlzb24uCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRSb3cocmVzdWx0VHlwZSwgcmVz
dWx0c1VSTHNCeUtpbmRbcmVzdWx0cy5rVW5rbm93bktpbmRdKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmFkZENvbXBhcmlzb24ocmVz
dWx0VHlwZSwgcmVzdWx0c1VSTHNCeUtpbmQpOwotICAgICAgICB9LmJpbmQodGhpcykpOwotCi0g
ICAgICAgIGlmICghdGhpcy5jaGlsZHJlbi5sZW5ndGgpCi0gICAgICAgICAgICB0aGlzLnRleHRD
b250ZW50ID0gJ05vIHJlc3VsdHMgdG8gZGlzcGxheS4nCi0gICAgfQotfSk7Ci0KLXVpLnJlc3Vs
dHMuUmVzdWx0c0RldGFpbHMgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBmdW5j
dGlvbihkZWxlZ2F0ZSwgZmFpbHVyZUluZm8pCi0gICAgewotICAgICAgICB0aGlzLmNsYXNzTmFt
ZSA9ICdyZXN1bHRzLWRldGFpbCc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7
Ci0gICAgICAgIHRoaXMuX2ZhaWx1cmVJbmZvID0gZmFpbHVyZUluZm87Ci0gICAgICAgIHRoaXMu
X2hhdmVTaG93bk9uY2UgPSBmYWxzZTsKLSAgICB9LAotICAgIHNob3c6IGZ1bmN0aW9uKCkgewot
ICAgICAgICBpZiAodGhpcy5faGF2ZVNob3duT25jZSkKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgdGhpcy5faGF2ZVNob3duT25jZSA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRl
LmZldGNoUmVzdWx0c1VSTHModGhpcy5fZmFpbHVyZUluZm8sIGZ1bmN0aW9uKHJlc3VsdHNVUkxz
KSB7Ci0gICAgICAgICAgICB2YXIgcmVzdWx0c0dyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRz
R3JpZCgpOwotICAgICAgICAgICAgcmVzdWx0c0dyaWQuYWRkUmVzdWx0cyhyZXN1bHRzVVJMcyk7
Ci0KLSAgICAgICAgICAgICQodGhpcykuZW1wdHkoKS5hcHBlbmQoCi0gICAgICAgICAgICAgICAg
bmV3IHVpLmFjdGlvbnMuTGlzdChbCi0gICAgICAgICAgICAgICAgICAgIG5ldyB1aS5hY3Rpb25z
LlByZXZpb3VzKCksCi0gICAgICAgICAgICAgICAgICAgIG5ldyB1aS5hY3Rpb25zLk5leHQoKQot
ICAgICAgICAgICAgICAgIF0pKS5hcHBlbmQocmVzdWx0c0dyaWQpOwotCi0KLSAgICAgICAgfS5i
aW5kKHRoaXMpKTsKLSAgICB9LAotfSk7Ci0KLWZ1bmN0aW9uIGlzQW55UmVmdGVzdCh0ZXN0TmFt
ZSwgcmVzdWx0c0J5VGVzdCkKLXsKLSAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzdWx0c0J5VGVz
dFt0ZXN0TmFtZV0pLm1hcChmdW5jdGlvbihidWlsZGVyKSB7Ci0gICAgICAgIHJldHVybiByZXN1
bHRzQnlUZXN0W3Rlc3ROYW1lXVtidWlsZGVyXTsKLSAgICB9KS5zb21lKGZ1bmN0aW9uKHJlc3Vs
dE5vZGUpIHsKLSAgICAgICAgcmV0dXJuIHJlc3VsdE5vZGUucmVmdGVzdF90eXBlICYmIHJlc3Vs
dE5vZGUucmVmdGVzdF90eXBlLmxlbmd0aDsKLSAgICB9KTsKLX0KLQotdWkucmVzdWx0cy5GbGFr
aW5lc3NEYXRhID0gYmFzZS5leHRlbmRzKCdpZnJhbWUnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAnZmxha2luZXNzLWlmcmFtZSc7Ci0g
ICAgICAgIHRoaXMuc3JjID0gdWkudXJsRm9yRW1iZWRkZWRGbGFraW5lc3NEYXNoYm9hcmQoKTsK
LSAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuX2hhbmRsZU1l
c3NhZ2UuYmluZCh0aGlzKSk7Ci0gICAgICAgIH0pOwotICAgIH0sCi0gICAgX2hhbmRsZU1lc3Nh
Z2U6IGZ1bmN0aW9uKGV2ZW50KSB7Ci0gICAgICAgIGlmICghdGhpcy5jb250ZW50V2luZG93KQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENoZWNrIGZvciBudWxsIGV2ZW50Lm9y
aWdpbiBzbyB0aGF0IHRoZSB1bml0dGVzdHMgY2FuIGdldCBwYXN0IHRoaXMgcG9pbnQuCi0gICAg
ICAgIC8vIEZJWE1FOiBJcyB0aGlzIHNhZmU/IEluIHByYWN0aWNlLCB0aGVyZSdzIG5vIG1lYW5p
bmdmdWwgaGFybSB0aGF0IGNhbiBjb21lIGZyb20KLSAgICAgICAgLy8gYSBtYWxpY2lvdXMgcGFn
ZSBzZW5kaW5nIHVzIGhlaWdodENoYW5nZWQgY29tbWFuZHMsIHNvIGl0IGRvZXNuJ3QgcmVhbGx5
IG1hdHRlci4KLSAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gJ251bGwnICYmIGV2ZW50Lm9y
aWdpbiAhPSAnaHR0cHM6Ly9yZXN1bHRzLndlYmtpdC5vcmcnKSB7Ci0gICAgICAgICAgICBjb25z
b2xlLmxvZygnSW52YWxpZCBvcmlnaW46ICcgKyBldmVudC5vcmlnaW4pOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGV2ZW50LmRhdGEuY29tbWFuZCAhPSAn
aGVpZ2h0Q2hhbmdlZCcpIHsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCdVbmtub3duIHBvc3RN
ZXNzYWdlIGNvbW1hbmQ6ICcgKyBldmVudC5kYXRhKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIHRoaXMuc3R5bGUuaGVpZ2h0ID0gZXZlbnQuZGF0YS5oZWlnaHQg
KyAncHgnOwotICAgIH0KLX0pOwotCi11aS5yZXN1bHRzLlRlc3RTZWxlY3RvciA9IGJhc2UuZXh0
ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0aW9uKGRlbGVnYXRlLCByZXN1bHRzQnlUZXN0
KQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFzc05hbWUgPSAndGVzdC1zZWxlY3Rvcic7Ci0gICAg
ICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0KLSAgICAgICAgdmFyIHRvcFBhbmVsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgIHRvcFBhbmVsLmNsYXNzTmFt
ZSA9ICd0b3AtcGFuZWwnOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHRvcFBhbmVsKTsKLQot
ICAgICAgICB0aGlzLl9hcHBlbmRSZXNpemVIYW5kbGUoKTsKLQotICAgICAgICB2YXIgYm90dG9t
UGFuZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgICAgYm90dG9tUGFu
ZWwuY2xhc3NOYW1lID0gJ2JvdHRvbS1wYW5lbCc7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQo
Ym90dG9tUGFuZWwpOwotCi0gICAgICAgIHRoaXMuX2ZsYWtpbmVzc0RhdGEgPSBuZXcgdWkucmVz
dWx0cy5GbGFraW5lc3NEYXRhKCk7Ci0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5fZmxh
a2luZXNzRGF0YSk7Ci0KLSAgICAgICAgdmFyIHRlc3ROYW1lcyA9IE9iamVjdC5rZXlzKHJlc3Vs
dHNCeVRlc3QpOwotICAgICAgICB0ZXN0TmFtZXMuc29ydCgpLmZvckVhY2goZnVuY3Rpb24odGVz
dE5hbWUpIHsKLSAgICAgICAgICAgIHZhciBub25MaW5rVGl0bGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdhJyk7Ci0gICAgICAgICAgICBub25MaW5rVGl0bGUuY2xhc3NMaXN0LmFkZCgnbm9u
LWxpbmstdGl0bGUnKTsKLSAgICAgICAgICAgIG5vbkxpbmtUaXRsZS50ZXh0Q29udGVudCA9IHRl
c3ROYW1lOwotCi0gICAgICAgICAgICB2YXIgbGlua1RpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnYScpOwotICAgICAgICAgICAgbGlua1RpdGxlLmNsYXNzTGlzdC5hZGQoJ2xpbmstdGl0
bGUnKTsKLSAgICAgICAgICAgIGxpbmtUaXRsZS5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCB1aS51cmxG
b3JGbGFraW5lc3NEYXNoYm9hcmQoW3Rlc3ROYW1lXSkpCi0gICAgICAgICAgICBsaW5rVGl0bGUu
dGV4dENvbnRlbnQgPSB0ZXN0TmFtZTsKLQotICAgICAgICAgICAgdmFyIGhlYWRlciA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2gzJyk7Ci0gICAgICAgICAgICBoZWFkZXIuYXBwZW5kQ2hpbGQo
bm9uTGlua1RpdGxlKTsKLSAgICAgICAgICAgIGhlYWRlci5hcHBlbmRDaGlsZChsaW5rVGl0bGUp
OwotICAgICAgICAgICAgaGVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5fc2hv
d1Jlc3VsdHMuYmluZCh0aGlzLCBoZWFkZXIsIGZhbHNlKSk7Ci0gICAgICAgICAgICB0b3BQYW5l
bC5hcHBlbmRDaGlsZChoZWFkZXIpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAgICAvLyBJ
ZiB3ZSBoYXZlIGEgc21hbGwgYW1vdW50IG9mIGNvbnRlbnQsIGRvbid0IHNob3cgdGhlIHJlc2l6
ZSBoYW5kbGVyLgotICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgbWluSGVpZ2h0IHNvIHRo
YXQgdGhlIHBlcmNlbnRhZ2UgaGVpZ2h0IG9mIHRoZSAKLSAgICAgICAgLy8gdG9wUGFuZWwgaXMg
bm90IHRvbyBzbWFsbC4KLSAgICAgICAgaWYgKHRlc3ROYW1lcy5sZW5ndGggPD0gNCkKLSAgICAg
ICAgICAgIHRoaXMucmVtb3ZlQ2hpbGQodGhpcy5xdWVyeVNlbGVjdG9yKCcucmVzaXplLWhhbmRs
ZScpKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9wUGFuZWwuc3R5bGUubWluSGVpZ2h0
ID0gJzEwMHB4JzsKLSAgICB9LAotICAgIF9hcHBlbmRSZXNpemVIYW5kbGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIHZhciByZXNpemVIYW5kbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKLSAgICAgICAgcmVzaXplSGFuZGxlLmNsYXNzTmFtZSA9ICdyZXNpemUtaGFuZGxl
JzsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZChyZXNpemVIYW5kbGUpOwotCi0gICAgICAgIHJl
c2l6ZUhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbihldmVudCkg
ewotICAgICAgICAgICAgdGhpcy5faXNfcmVzaXppbmcgPSB0cnVlOwotICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLQotICAgICAgICB2
YXIgY2FuY2VsUmVzaXplID0gZnVuY3Rpb24oZXZlbnQpIHsgdGhpcy5faXNfcmVzaXppbmcgPSBm
YWxzZTsgfS5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNl
dXAnLCBjYW5jZWxSZXNpemUpOwotICAgICAgICAvLyBGSVhNRTogVXNlIGFkZEV2ZW50TGlzdGVu
ZXIgb25jZSBXZWJLaXQgYWRkcyBzdXBwb3J0IGZvciBtb3VzZWxlYXZlL21vdXNlZW50ZXIuCi0g
ICAgICAgICQod2luZG93KS5iaW5kKCdtb3VzZWxlYXZlJywgY2FuY2VsUmVzaXplKTsKLQotICAg
ICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGZ1bmN0aW9uKGV2ZW50KSB7
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2lzX3Jlc2l6aW5nKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgICAgIHZhciBtb3VzZVkgPSBldmVudC5jbGllbnRZICsgZG9jdW1lbnQu
Ym9keS5zY3JvbGxUb3AgLSB0aGlzLm9mZnNldFRvcDsKLSAgICAgICAgICAgIHZhciBwZXJjZW50
YWdlID0gMTAwICogbW91c2VZIC8gdGhpcy5vZmZzZXRIZWlnaHQ7Ci0gICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yKCcudG9wLXBhbmVsJykuc3R5bGUubWF4SGVpZ2h0ID0gcGVyY2Vu
dGFnZSArICclJzsKLSAgICAgICAgfS5iaW5kKHRoaXMpKQotICAgIH0sCi0gICAgX3Nob3dSZXN1
bHRzOiBmdW5jdGlvbihoZWFkZXIsIHNjcm9sbEluZm9WaWV3KQotICAgIHsKLSAgICAgICAgaWYg
KCFoZWFkZXIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdmFyIGFjdGl2
ZUhlYWRlciA9IHRoaXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpCi0gICAgICAgIGlmIChhY3Rp
dmVIZWFkZXIpCi0gICAgICAgICAgICBhY3RpdmVIZWFkZXIuY2xhc3NMaXN0LnJlbW92ZSgnYWN0
aXZlJyk7Ci0gICAgICAgIGhlYWRlci5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKTsKLQotICAgICAg
ICB2YXIgdGVzdE5hbWUgPSB0aGlzLmN1cnJlbnRUZXN0TmFtZSgpOwotICAgICAgICB0aGlzLl9m
bGFraW5lc3NEYXRhLnNyYyA9IHVpLnVybEZvckVtYmVkZGVkRmxha2luZXNzRGFzaGJvYXJkKFt0
ZXN0TmFtZV0pOwotCi0gICAgICAgIHZhciBib3R0b21QYW5lbCA9IHRoaXMucXVlcnlTZWxlY3Rv
cignLmJvdHRvbS1wYW5lbCcpCi0gICAgICAgIGJvdHRvbVBhbmVsLmlubmVySFRNTCA9ICcnOwot
ICAgICAgICBib3R0b21QYW5lbC5hcHBlbmRDaGlsZCh0aGlzLl9kZWxlZ2F0ZS5jb250ZW50Rm9y
VGVzdCh0ZXN0TmFtZSkpOwotCi0gICAgICAgIHZhciB0b3BQYW5lbCA9IHRoaXMucXVlcnlTZWxl
Y3RvcignLnRvcC1wYW5lbCcpOwotICAgICAgICBpZiAoc2Nyb2xsSW5mb1ZpZXcpIHsKLSAgICAg
ICAgICAgIHRvcFBhbmVsLnNjcm9sbFRvcCA9IGhlYWRlci5vZmZzZXRUb3A7Ci0gICAgICAgICAg
ICBpZiAoaGVhZGVyLm9mZnNldFRvcCAtIHRvcFBhbmVsLnNjcm9sbFRvcCA8IGhlYWRlci5vZmZz
ZXRIZWlnaHQpCi0gICAgICAgICAgICAgICAgdG9wUGFuZWwuc2Nyb2xsVG9wID0gdG9wUGFuZWwu
c2Nyb2xsVG9wIC0gaGVhZGVyLm9mZnNldEhlaWdodDsKLSAgICAgICAgfQotCi0gICAgICAgIHZh
ciByZXN1bHRzRGV0YWlscyA9IHRoaXMucXVlcnlTZWxlY3RvckFsbCgnLnJlc3VsdHMtZGV0YWls
Jyk7Ci0gICAgICAgIGlmIChyZXN1bHRzRGV0YWlscy5sZW5ndGgpCi0gICAgICAgICAgICByZXN1
bHRzRGV0YWlsc1swXS5zaG93KCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHJlc3VsdHNEZXRhaWxzLCBm
dW5jdGlvbihyZXN1bHRzRGV0YWlsKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0c0RldGFpbC5z
aG93KCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgfSwga1Jlc3VsdHNQcmVmZXRjaERlbGF5
TVMpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgbmV4dFJlc3VsdDogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucXVlcnlTZWxlY3RvcignLmJ1aWxkZXIt
c2VsZWN0b3InKS5uZXh0UmVzdWx0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuIHRoaXMubmV4dFRlc3QoKTsKLSAgICB9LAotICAgIHByZXZpb3VzUmVzdWx0OiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5xdWVyeVNlbGVjdG9yKCcuYnVpbGRl
ci1zZWxlY3RvcicpLnByZXZpb3VzUmVzdWx0KCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgcmV0dXJuIHRoaXMucHJldmlvdXNUZXN0KCk7Ci0gICAgfSwKLSAgICBuZXh0VGVz
dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Nob3dSZXN1bHRzKHRo
aXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpLm5leHRTaWJsaW5nLCB0cnVlKTsKLSAgICB9LAot
ICAgIHByZXZpb3VzVGVzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIHN1Y2NlZWRl
ZCA9IHRoaXMuX3Nob3dSZXN1bHRzKHRoaXMucXVlcnlTZWxlY3RvcignLmFjdGl2ZScpLnByZXZp
b3VzU2libGluZywgdHJ1ZSk7Ci0gICAgICAgIGlmIChzdWNjZWVkZWQpCi0gICAgICAgICAgICB0
aGlzLnF1ZXJ5U2VsZWN0b3IoJy5idWlsZGVyLXNlbGVjdG9yJykubGFzdFJlc3VsdCgpOwotICAg
ICAgICByZXR1cm4gc3VjY2VlZGVkOwotICAgIH0sCi0gICAgZmlyc3RSZXN1bHQ6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Nob3dSZXN1bHRzKHRoaXMucXVlcnlTZWxlY3Rvcign
aDMnKSwgdHJ1ZSk7Ci0gICAgfSwKLSAgICBjdXJyZW50VGVzdE5hbWU6IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUgLm5vbi1saW5r
LXRpdGxlJykudGV4dENvbnRlbnQ7Ci0gICAgfQotfSk7Ci0KLXVpLnJlc3VsdHMuQnVpbGRlclNl
bGVjdG9yID0gYmFzZS5leHRlbmRzKCdkaXYnLCB7Ci0gICAgaW5pdDogZnVuY3Rpb24oZGVsZWdh
dGUsIHRlc3ROYW1lLCByZXN1bHRzQnlCdWlsZGVyKQotICAgIHsKLSAgICAgICAgdGhpcy5jbGFz
c05hbWUgPSAnYnVpbGRlci1zZWxlY3Rvcic7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVs
ZWdhdGU7Ci0KLSAgICAgICAgdmFyIHRhYlN0cmlwID0gdGhpcy5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCd1bCcpKTsKLQotICAgICAgICBPYmplY3Qua2V5cyhyZXN1bHRzQnlC
dWlsZGVyKS5zb3J0KCkuZm9yRWFjaChmdW5jdGlvbihidWlsZGVyTmFtZSkgewotICAgICAgICAg
ICAgdmFyIGJ1aWxkZXJIYXNoID0gYmFzZS51bmRlcnNjb3JlZEJ1aWxkZXJOYW1lKGJ1aWxkZXJO
YW1lKTsKLQotICAgICAgICAgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdh
Jyk7Ci0gICAgICAgICAgICAkKGxpbmspLmF0dHIoJ2hyZWYnLCAiIyIgKyBidWlsZGVySGFzaCku
dGV4dCh1aS5kaXNwbGF5TmFtZUZvckJ1aWxkZXIoYnVpbGRlck5hbWUpKTsKLSAgICAgICAgICAg
IHRhYlN0cmlwLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpJykpLmFwcGVu
ZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICB2YXIgY29udGVudCA9IHRoaXMuX2RlbGVnYXRl
LmNvbnRlbnRGb3JUZXN0QW5kQnVpbGRlcih0ZXN0TmFtZSwgYnVpbGRlck5hbWUpOwotICAgICAg
ICAgICAgY29udGVudC5pZCA9IGJ1aWxkZXJIYXNoOwotICAgICAgICAgICAgdGhpcy5hcHBlbmRD
aGlsZChjb250ZW50KTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgJCh0aGlzKS50YWJz
KCk7Ci0gICAgfSwKLSAgICBuZXh0UmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2
YXIgbmV4dEluZGV4ID0gJCh0aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSArIDE7Ci0g
ICAgICAgIGlmIChuZXh0SW5kZXggPj0gJCh0aGlzKS50YWJzKCdsZW5ndGgnKSkKLSAgICAgICAg
ICAgIHJldHVybiBmYWxzZQotICAgICAgICAkKHRoaXMpLnRhYnMoJ29wdGlvbicsICdzZWxlY3Rl
ZCcsIG5leHRJbmRleCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0gICAgcHJldmlv
dXNSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwcmV2aW91c0luZGV4ID0g
JCh0aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSAtIDE7Ci0gICAgICAgIGlmIChwcmV2
aW91c0luZGV4IDwgMCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgJCh0aGlz
KS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnLCBwcmV2aW91c0luZGV4KTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfSwKLSAgICBmaXJzdFJlc3VsdDogZnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgJCh0aGlzKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnLCAwKTsKLSAgICB9LAotICAg
IGxhc3RSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgICQodGhpcykudGFicygnb3B0
aW9uJywgJ3NlbGVjdGVkJywgJCh0aGlzKS50YWJzKCdsZW5ndGgnKSAtIDEpOwotICAgIH0KLX0p
OwotCi11aS5yZXN1bHRzLlZpZXcgPSBiYXNlLmV4dGVuZHMoJ2RpdicsIHsKLSAgICBpbml0OiBm
dW5jdGlvbihkZWxlZ2F0ZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuY2xhc3NOYW1lID0gJ3Jlc3Vs
dHMtdmlldyc7Ci0gICAgICAgIHRoaXMuX2RlbGVnYXRlID0gZGVsZWdhdGU7Ci0gICAgfSwKLSAg
ICBjb250ZW50Rm9yVGVzdDogZnVuY3Rpb24odGVzdE5hbWUpCi0gICAgewotICAgICAgICB2YXIg
cmViYXNlbGluZUFjdGlvbjsKLSAgICAgICAgaWYgKGlzQW55UmVmdGVzdCh0ZXN0TmFtZSwgdGhp
cy5fcmVzdWx0c0J5VGVzdCkpCi0gICAgICAgICAgICByZWJhc2VsaW5lQWN0aW9uID0gJCgnPGRp
diBjbGFzcz0ibm9uLWFjdGlvbi1idXR0b24iPlJlZnRlc3RzIGNhbm5vdCBiZSByZWJhc2VsaW5l
ZC4gRW1haWwgd2Via2l0LWdhcmRlbmluZ0BjaHJvbWl1bS5vcmcgaWYgdW5zdXJlIGhvdyB0byBm
aXggdGhpcy48L2Rpdj4nKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmViYXNlbGluZUFj
dGlvbiA9IG5ldyB1aS5hY3Rpb25zLkxpc3QoW25ldyB1aS5hY3Rpb25zLlJlYmFzZWxpbmUoKS5t
YWtlRGVmYXVsdCgpXSk7Ci0gICAgICAgICQocmViYXNlbGluZUFjdGlvbikuYWRkQ2xhc3MoJ3Jl
YmFzZWxpbmUtYWN0aW9uJyk7Ci0KLSAgICAgICAgdmFyIGJ1aWxkZXJTZWxlY3RvciA9IG5ldyB1
aS5yZXN1bHRzLkJ1aWxkZXJTZWxlY3Rvcih0aGlzLCB0ZXN0TmFtZSwgdGhpcy5fcmVzdWx0c0J5
VGVzdFt0ZXN0TmFtZV0pOwotICAgICAgICAkKGJ1aWxkZXJTZWxlY3RvcikuYXBwZW5kKHJlYmFz
ZWxpbmVBY3Rpb24pLmFwcGVuZCgkKCc8YnIgc3R5bGU9ImNsZWFyOmJvdGgiPicpKTsKLSAgICAg
ICAgJChidWlsZGVyU2VsZWN0b3IpLmJpbmQoJ3RhYnNzZWxlY3QnLCBmdW5jdGlvbihldmVudCwg
dWkpIHsKLSAgICAgICAgICAgIC8vIFdlIHdpbGwgcHJvYmFibHkgaGF2ZSBwcmUtZmV0Y2hlZCB0
aGUgdGFiIGFscmVhZHksIGJ1dCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZS4KLSAgICAgICAgICAgIHVp
LnBhbmVsLnNob3coKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiBidWlsZGVyU2VsZWN0
b3I7Ci0gICAgfSwKLSAgICBjb250ZW50Rm9yVGVzdEFuZEJ1aWxkZXI6IGZ1bmN0aW9uKHRlc3RO
YW1lLCBidWlsZGVyTmFtZSkKLSAgICB7Ci0gICAgICAgIHZhciBmYWlsdXJlSW5mbyA9IHJlc3Vs
dHMuZmFpbHVyZUluZm9Gb3JUZXN0QW5kQnVpbGRlcih0aGlzLl9yZXN1bHRzQnlUZXN0LCB0ZXN0
TmFtZSwgYnVpbGRlck5hbWUpOwotICAgICAgICByZXR1cm4gbmV3IHVpLnJlc3VsdHMuUmVzdWx0
c0RldGFpbHModGhpcywgZmFpbHVyZUluZm8pOwotICAgIH0sCi0gICAgc2V0UmVzdWx0c0J5VGVz
dDogZnVuY3Rpb24ocmVzdWx0c0J5VGVzdCkKLSAgICB7Ci0gICAgICAgICQodGhpcykuZW1wdHko
KTsKLSAgICAgICAgdGhpcy5fcmVzdWx0c0J5VGVzdCA9IHJlc3VsdHNCeVRlc3Q7Ci0gICAgICAg
IHRoaXMuX3Rlc3RTZWxlY3RvciA9IG5ldyB1aS5yZXN1bHRzLlRlc3RTZWxlY3Rvcih0aGlzLCBy
ZXN1bHRzQnlUZXN0KTsKLSAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLl90ZXN0U2VsZWN0
b3IpOwotICAgIH0sCi0gICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8s
IGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGVsZWdhdGUuZmV0Y2hSZXN1bHRzVVJM
cyhmYWlsdXJlSW5mbywgY2FsbGJhY2spCi0gICAgfSwKLSAgICBuZXh0UmVzdWx0OiBmdW5jdGlv
bigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLm5leHRSZXN1bHQo
KTsKLSAgICB9LAotICAgIHByZXZpb3VzUmVzdWx0OiBmdW5jdGlvbigpCi0gICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLnByZXZpb3VzUmVzdWx0KCk7Ci0gICAgfSwKLSAg
ICBuZXh0VGVzdDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Rlc3RT
ZWxlY3Rvci5uZXh0VGVzdCgpOwotICAgIH0sCi0gICAgcHJldmlvdXNUZXN0OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdGVzdFNlbGVjdG9yLnByZXZpb3VzVGVzdCgp
OwotICAgIH0sCi0gICAgZmlyc3RSZXN1bHQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3Rlc3RTZWxlY3Rvci5maXJzdFJlc3VsdCgpCi0gICAgfSwKLSAgICBjdXJyZW50VGVzdE5h
bWU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl90ZXN0U2VsZWN0b3Iu
Y3VycmVudFRlc3ROYW1lKCkKLSAgICB9Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zY3JpcHRzL3VpL3Jlc3VsdHNfdW5pdHRlc3RzLmpzCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2NyaXB0cy91aS9yZXN1bHRzX3VuaXR0ZXN0cy5qcwko
bm9uZXhpc3RlbnQpCkBAIC0xLDIwNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLShmdW5jdGlvbiAo
KSB7Ci0KLW1vZHVsZSgndWkucmVzdWx0cycpOwotCi1hc3luY1Rlc3QoJ0ZsYWtpbmVzc0RhdGEn
LCAxLCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGFzaGJvYXJkID0gbmV3IHVpLnJlc3VsdHMuRmxh
a2luZXNzRGF0YSgpOwotICAgIGRhc2hib2FyZC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVu
Y3Rpb24oKSB7Ci0gICAgICAgIC8vIHNldFRpbWVvdXQgdG8gYmUgYWZ0ZXIgdGhlIEZsYWtpbmVz
c0RhdGEncyBsb2FkIGhhbmRsZXIuCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2Uoe2NvbW1hbmQ6ICdoZWlnaHRDaGFuZ2VkJywg
aGVpZ2h0OiAxNX0sICcqJyk7Ci0gICAgICAgICAgICAvLyBzZXRUaW1lb3V0IHRvIGJlIGFmdGVy
IHRoZSBwb3N0TWVzc2FnZSBoYXMgYmVlbiBoYW5kbGVkLgotICAgICAgICAgICAgc2V0VGltZW91
dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBlcXVhbHMoZGFzaGJvYXJkLm9mZnNldEhl
aWdodCwgMTUpOwotICAgICAgICAgICAgICAgICQoZGFzaGJvYXJkKS5kZXRhY2goKTsKLSAgICAg
ICAgICAgICAgICBzdGFydCgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgIH0sIDApOwot
ICAgIH0pOwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGFzaGJvYXJkKTsKLX0pOwot
Ci12YXIga0V4YW1wbGVSZXN1bHRzQnlUZXN0ID0gewotICAgICJzY3JvbGxiYXJzL2N1c3RvbS1z
Y3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1
aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0UiLAotICAgICAgICAgICAg
ImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfSwKLSAgICAgICAgIk1vY2sgTGludXgiOiB7Ci0g
ICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIkNS
QVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAidXNlcnNjcmlwdHMvYW5vdGhlci10ZXN0Lmh0
bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQi
OiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0gICAgICAgIH0KLSAgICB9
Ci19OwotCi12YXIga0V4YW1wbGVSZWZ0ZXN0UmVzdWx0cyA9IHsKLSAgICAicmVmdGVzdC5odG1s
IjogewotICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjog
IlBBU1MiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJJTUFHRSIsCi0gICAgICAgICAgICAicmVm
dGVzdF90eXBlIjogWyI9PSJdCi0gICAgICAgIH0KLSAgICB9LAotICAgICJtaXNtYXRjaC1yZWZ0
ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhw
ZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIklNQUdFIiwKLSAgICAgICAg
ICAgICJyZWZ0ZXN0X3R5cGUiOiBbIiE9Il0KLSAgICAgICAgfQotICAgIH0KLX07Ci0KLXZhciBr
RXhhbXBsZVJlc3VsdHNXaXRoVGltZW91dEJ5VGVzdCA9IHsKLSAgICAiZmFzdC9ub3QtZmFzdC10
ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhw
ZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRJTUVPVVQiCi0gICAgICAg
IH0KLSAgICB9Ci19OwotCi12YXIga0V4YW1wbGVHcmVhdGVyVGhhbkZvdXJSZXN1bHRzQnlUZXN0
ID0gewotICAgICJzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0
eWxlLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIExpbnV4IjogewotICAgICAgICAgICAgImV4cGVj
dGVkIjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfQot
ICAgIH0sCi0gICAgInNjcm9sbGJhcnMvMS5odG1sIjogewotICAgICAgICAiTW9jayBMaW51eCI6
IHsKLSAgICAgICAgICAgICJleHBlY3RlZCI6ICJURVhUIiwKLSAgICAgICAgICAgICJhY3R1YWwi
OiAiQ1JBU0giCi0gICAgICAgIH0KLSAgICB9LAotICAgICJzY3JvbGxiYXJzLzIuaHRtbCI6IHsK
LSAgICAgICAgIk1vY2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIs
Ci0gICAgICAgICAgICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAi
c2Nyb2xsYmFycy8zLmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIExpbnV4IjogewotICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlRFWFQiLAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAg
ICAgICAgfQotICAgIH0sCi0gICAgInVzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sIjogewot
ICAgICAgICAiTW9jayBCdWlsZGVyIjogewotICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1Mi
LAotICAgICAgICAgICAgImFjdHVhbCI6ICJURVhUIgotICAgICAgICB9Ci0gICAgfQotfTsKLQot
dGVzdCgnVmlldycsIDE4LCBmdW5jdGlvbigpIHsKLSAgICB2YXIgZGVsZWdhdGUgPSB7Ci0gICAg
ICAgIGZldGNoUmVzdWx0c1VSTHM6IGZ1bmN0aW9uKGZhaWx1cmVJbmZvLCBjYWxsYmFjaykgeyBy
ZXR1cm47IH0KLSAgICB9OwotCi0gICAgdmFyIHZpZXcgPSBuZXcgdWkucmVzdWx0cy5WaWV3KGRl
bGVnYXRlKTsKLSAgICB2aWV3LnNldFJlc3VsdHNCeVRlc3Qoa0V4YW1wbGVSZXN1bHRzQnlUZXN0
KTsKLQotICAgIHZpZXcuZmlyc3RSZXN1bHQoKTsKLSAgICB2YXIgdGVzdFNlbGVjdG9yID0gdmll
dy5xdWVyeVNlbGVjdG9yKCcudGVzdC1zZWxlY3RvcicpOwotICAgIHZhciB0b3BQYW5lbCA9IHRl
c3RTZWxlY3Rvci5xdWVyeVNlbGVjdG9yKCcudG9wLXBhbmVsJyk7Ci0gICAgZXF1YWxzKHRvcFBh
bmVsLmNoaWxkTm9kZXNbMF0sIHRvcFBhbmVsLnF1ZXJ5U2VsZWN0b3IoJy5hY3RpdmUnKSk7Owot
ICAgIGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9yJywgdmlldylbMF0pLnRhYnMoJ29wdGlv
bicsICdzZWxlY3RlZCcpLCAwKTsKLQotICAgIHZpZXcubmV4dFJlc3VsdCgpOwotICAgIGVxdWFs
cyh0b3BQYW5lbC5jaGlsZE5vZGVzWzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZl
JykpOzsKLSAgICBlcXVhbHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJz
KCdvcHRpb24nLCAnc2VsZWN0ZWQnKSwgMSk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3RO
YW1lKCksICdzY3JvbGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxl
Lmh0bWwnKTsKLQotICAgIHZpZXcubmV4dFJlc3VsdCgpOwotICAgIGVxdWFscyh0b3BQYW5lbC5j
aGlsZE5vZGVzWzFdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykpOzsKLSAgICBl
cXVhbHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJzKCdvcHRpb24nLCAn
c2VsZWN0ZWQnKSwgMCk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3ROYW1lKCksICd1c2Vy
c2NyaXB0cy9hbm90aGVyLXRlc3QuaHRtbCcpOwotCi0gICAgdmlldy5wcmV2aW91c1Jlc3VsdCgp
OwotICAgIGVxdWFscyh0b3BQYW5lbC5jaGlsZE5vZGVzWzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVj
dG9yKCcuYWN0aXZlJykpOzsKLSAgICBlcXVhbHMoJCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZp
ZXcpWzBdKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0ZWQnKSwgMSk7Ci0KLSAgICB2aWV3Lm5leHRU
ZXN0KCk7Ci0gICAgZXF1YWxzKHRvcFBhbmVsLmNoaWxkTm9kZXNbMV0sIHRvcFBhbmVsLnF1ZXJ5
U2VsZWN0b3IoJy5hY3RpdmUnKSk7OwotICAgIGVxdWFscygkKCQoJy5idWlsZGVyLXNlbGVjdG9y
JywgdmlldylbMF0pLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpLCAwKTsKLSAgICBlcXVhbHMo
dmlldy5jdXJyZW50VGVzdE5hbWUoKSwgJ3VzZXJzY3JpcHRzL2Fub3RoZXItdGVzdC5odG1sJyk7
Ci0KLSAgICB2aWV3LnByZXZpb3VzVGVzdCgpOwotICAgIGVxdWFscyh0b3BQYW5lbC5jaGlsZE5v
ZGVzWzBdLCB0b3BQYW5lbC5xdWVyeVNlbGVjdG9yKCcuYWN0aXZlJykpOzsKLSAgICBlcXVhbHMo
JCgkKCcuYnVpbGRlci1zZWxlY3RvcicsIHZpZXcpWzBdKS50YWJzKCdvcHRpb24nLCAnc2VsZWN0
ZWQnKSwgMSk7Ci0gICAgZXF1YWxzKHZpZXcuY3VycmVudFRlc3ROYW1lKCksICdzY3JvbGxiYXJz
L2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwnKTsKLQotICAgIG9r
KCF0ZXN0U2VsZWN0b3IucXVlcnlTZWxlY3RvcignLnJlc2l6ZS1oYW5kbGUnKSk7Ci0gICAgZXF1
YWxzKHRvcFBhbmVsLnN0eWxlLm1pbkhlaWdodCwgJycpOwotfSk7Ci0KLXRlc3QoJ1ZpZXcgd2l0
aCBtb3JlIHRoYW4gZm91ciB0ZXN0cycsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBkZWxlZ2F0
ZSA9IHsKLSAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNh
bGxiYWNrKSB7IHJldHVybjsgfQotICAgIH07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyB1aS5yZXN1
bHRzLlZpZXcoZGVsZWdhdGUpOwotICAgIHZpZXcuc2V0UmVzdWx0c0J5VGVzdChrRXhhbXBsZUdy
ZWF0ZXJUaGFuRm91clJlc3VsdHNCeVRlc3QpOwotCi0gICAgdmFyIHRlc3RTZWxlY3RvciA9IHZp
ZXcucXVlcnlTZWxlY3RvcignLnRlc3Qtc2VsZWN0b3InKTsKLSAgICB2YXIgdG9wUGFuZWwgPSB0
ZXN0U2VsZWN0b3IucXVlcnlTZWxlY3RvcignLnRvcC1wYW5lbCcpOwotCi0gICAgb2sodGVzdFNl
bGVjdG9yLnF1ZXJ5U2VsZWN0b3IoJy5yZXNpemUtaGFuZGxlJykpOwotICAgIGVxdWFscyh0b3BQ
YW5lbC5zdHlsZS5taW5IZWlnaHQsICcxMDBweCcpOwotfSk7Ci0KLXRlc3QoJ1ZpZXcgd2l0aCBy
ZWZ0ZXN0cycsIDIsIGZ1bmN0aW9uKCkgewotICAgIHZhciBkZWxlZ2F0ZSA9IHsKLSAgICAgICAg
ZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rpb24oZmFpbHVyZUluZm8sIGNhbGxiYWNrKSB7IHJldHVy
bjsgfQotICAgIH07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoZGVsZWdh
dGUpOwotICAgIHZpZXcuc2V0UmVzdWx0c0J5VGVzdChrRXhhbXBsZVJlZnRlc3RSZXN1bHRzKTsK
LSAgICB2aWV3LmZpcnN0UmVzdWx0KCk7Ci0KLSAgICBlcXVhbHMoJCgnLm5vbi1hY3Rpb24tYnV0
dG9uJywgdmlldykubGVuZ3RoLCAxKTsKLSAgICBlcXVhbHMoJCgnLmFjdGlvbicsIHZpZXcpLmxl
bmd0aCwgMCk7Ci19KTsKLQotdGVzdCgnVmlldyBvZiB0aW1lb3V0cycsIDEsIGZ1bmN0aW9uKCkg
ewotICAgIHZhciBkZWxlZ2F0ZSA9IHsKLSAgICAgICAgZmV0Y2hSZXN1bHRzVVJMczogZnVuY3Rp
b24oZmFpbHVyZUluZm8sIGNhbGxiYWNrKSB7IGNhbGxiYWNrKFtdKTsgfQotICAgIH07Ci0KLSAg
ICB2YXIgdmlldyA9IG5ldyB1aS5yZXN1bHRzLlZpZXcoZGVsZWdhdGUpOwotICAgIHZpZXcuc2V0
UmVzdWx0c0J5VGVzdChrRXhhbXBsZVJlc3VsdHNXaXRoVGltZW91dEJ5VGVzdCk7Ci0gICAgdmll
dy5maXJzdFJlc3VsdCgpOwotCi0gICAgZXF1YWxzKCQoJy5yZXN1bHRzLWdyaWQnLCB2aWV3KS5o
dG1sKCksICdObyByZXN1bHRzIHRvIGRpc3BsYXkuJyk7Ci19KTsKLQotfSkoKTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zY3JpcHRzL3VpLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc2Ny
aXB0cy91aS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI5NiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LXZhciB1aSA9IHVpIHx8IHt9OwotCi0oZnVuY3Rpb24gKCkgewotCi11aS5kaXNwbGF5VVJMRm9y
QnVpbGRlciA9IGZ1bmN0aW9uKGJ1aWxkZXJOYW1lKQotewotICAgIHJldHVybiBjb25maWcua1Bs
YXRmb3Jtc1tjb25maWcuY3VycmVudFBsYXRmb3JtXS53YXRlcmZhbGxVUkwgKyAnPycgKyAkLnBh
cmFtKHsKLSAgICAgICAgJ2J1aWxkZXInOiBidWlsZGVyTmFtZQotICAgIH0pOwotfQotCi11aS5k
aXNwbGF5TmFtZUZvckJ1aWxkZXIgPSBmdW5jdGlvbihidWlsZGVyTmFtZSkKLXsKLSAgICByZXR1
cm4gYnVpbGRlck5hbWUucmVwbGFjZSgvV2Via2l0IC8sICcnKTsKLX0KLQotdWkudXJsRm9yVGVz
dCA9IGZ1bmN0aW9uKHRlc3ROYW1lKQotewotICAgIHJldHVybiAnaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvYnJvd3Nlci90cnVuay9MYXlvdXRUZXN0cy8nICsgdGVzdE5hbWU7Ci19Ci0KLXVpLnVy
bEZvckZsYWtpbmVzc0Rhc2hib2FyZCA9IGZ1bmN0aW9uKG9wdF90ZXN0TmFtZUxpc3QpCi17Ci0g
ICAgdmFyIHRlc3RzUGFyYW1ldGVyID0gb3B0X3Rlc3ROYW1lTGlzdCA/IG9wdF90ZXN0TmFtZUxp
c3Quam9pbignLCcpIDogJyc7Ci0gICAgcmV0dXJuICdodHRwczovL3Jlc3VsdHMud2Via2l0Lm9y
Zy8/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0c1Bh
cmFtZXRlcik7Ci19Ci0KLXVpLnVybEZvckVtYmVkZGVkRmxha2luZXNzRGFzaGJvYXJkID0gZnVu
Y3Rpb24ob3B0X3Rlc3ROYW1lTGlzdCkKLXsKLSAgICBpZiAoY29uZmlnLmtQbGF0Zm9ybXNbY29u
ZmlnLmN1cnJlbnRQbGF0Zm9ybV0udXNlRmxha2luZXNzRGFzaGJvYXJkKQotICAgICAgICByZXR1
cm4gdWkudXJsRm9yRmxha2luZXNzRGFzaGJvYXJkKG9wdF90ZXN0TmFtZUxpc3QpICsgJyZzaG93
Q2hyb21lPWZhbHNlJzsKLSAgICAKLSAgICByZXR1cm4gJ2Fib3V0OmJsYW5rJzsKLX0KLQotdWku
cmV2ZXJ0UmVhc29uRm9yVGVzdE5hbWVMaXN0ID0gZnVuY3Rpb24odGVzdE5hbWVMaXN0KQotewot
ICAgIHJldHVybiAnQnJva2U6XG4nICsgdGVzdE5hbWVMaXN0Lm1hcChmdW5jdGlvbih0ZXN0TmFt
ZSkgewotICAgICAgICByZXR1cm4gJyogJyArIHRlc3ROYW1lOwotICAgIH0pLmpvaW4oJ1xuJyk7
Ci19Ci0KLXVpLm9uZWJhciA9IGJhc2UuZXh0ZW5kcygnZGl2JywgewotICAgIGluaXQ6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuaWQgPSAnb25lYmFyJzsKLSAgICAgICAgdGhpcy5p
bm5lckhUTUwgPQotICAgICAgICAgICAgJzxkaXY+PHNlbGVjdCBpZD0icGxhdGZvcm0tcGlja2Vy
Ij48L3NlbGVjdD48L2Rpdj4nICsKLSAgICAgICAgICAgICc8dWw+JyArCi0gICAgICAgICAgICAg
ICAgJzxsaT48YSBocmVmPSIjdW5leHBlY3RlZCI+VW5leHBlY3RlZCBGYWlsdXJlczwvYT48L2xp
PicgKwotICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iI2V4cGVjdGVkIj5FeHBlY3RlZCBG
YWlsdXJlczwvYT48L2xpPicgKwotICAgICAgICAgICAgICAgICc8bGk+PGEgaHJlZj0iI3Jlc3Vs
dHMiPlJlc3VsdHM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICAgICAnPGxpPjxhIGhyZWY9IiNw
ZXJmIj5wZXJmPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAnPC91bD4nICsKLSAgICAgICAgICAg
ICc8ZGl2IGlkPSJ1bmV4cGVjdGVkIj48L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJl
eHBlY3RlZCI+PC9kaXY+JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+
JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0icGVyZiI+PC9kaXY+JzsKLSAgICAgICAgdGhpcy5f
dGFiTmFtZXMgPSBbCi0gICAgICAgICAgICAndW5leHBlY3RlZCcsCi0gICAgICAgICAgICAnZXhw
ZWN0ZWQnLAotICAgICAgICAgICAgJ3Jlc3VsdHMnLAotICAgICAgICAgICAgJ3BlcmYnLAotICAg
ICAgICBdCi0KLSAgICAgICAgdGhpcy5fdGFiSW5kZXhUb1NhdmVkU2Nyb2xsT2Zmc2V0ID0ge307
Ci0gICAgICAgIHRoaXMuX3RhYnMgPSAkKHRoaXMpLnRhYnMoewotICAgICAgICAgICAgZGlzYWJs
ZWQ6IFsyXSwKLSAgICAgICAgICAgIHNob3c6IGZ1bmN0aW9uKGV2ZW50LCB1aSkgeyB0aGlzLl9y
ZXN0b3JlU2Nyb2xsT2Zmc2V0KHVpLmluZGV4KTsgfSwKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAg
ICBfYnVpbGRQbGF0Zm9ybXNQb3B1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBm
aW5kIGEgYmV0dGVyIHBsYWNlIHRvIGRvIHRoaXMuCi0gICAgICAgIHZhciB1cmxQbGF0Zm9ybSA9
IGJhc2UuZ2V0VVJMUGFyYW1ldGVyKCdwbGF0Zm9ybScpOwotICAgICAgICBpZiAodXJsUGxhdGZv
cm0pCi0gICAgICAgICAgICBjb25maWcuc2V0UGxhdGZvcm0odXJsUGxhdGZvcm0pOwotICAgICAg
ICAKLSAgICAgICAgdmFyIHBsYXRmb3JtU2VsZWN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3BsYXRmb3JtLXBpY2tlcicpOwotICAgICAgICB2YXIgY3VycmVudFBsYXRmb3JtSW5kZXggPSAw
OwotICAgICAgICBPYmplY3Qua2V5cyhjb25maWcua1BsYXRmb3Jtcykuc29ydCgpLmZvckVhY2go
ZnVuY3Rpb24ocGxhdGZvcm1OYW1lKSB7Ci0gICAgICAgICAgICB2YXIgb3B0aW9uID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7Ci0gICAgICAgICAgICBvcHRpb24uaW5uZXJUZXh0
ID0gY29uZmlnLmtQbGF0Zm9ybXNbcGxhdGZvcm1OYW1lXS5sYWJlbDsKLSAgICAgICAgICAgIG9w
dGlvbi5fcGxhdGZvcm0gPSBwbGF0Zm9ybU5hbWU7Ci0gICAgICAgICAgICBpZiAocGxhdGZvcm1O
YW1lID09IGNvbmZpZy5jdXJyZW50UGxhdGZvcm0pCi0gICAgICAgICAgICAgICAgY3VycmVudFBs
YXRmb3JtSW5kZXggPSBwbGF0Zm9ybVNlbGVjdC5jaGlsZE5vZGVzLmxlbmd0aDsKLSAgICAgICAg
ICAgIHBsYXRmb3JtU2VsZWN0LmFwcGVuZENoaWxkKG9wdGlvbik7Ci0gICAgICAgIH0pOwotICAg
ICAgICAKLSAgICAgICAgcGxhdGZvcm1TZWxlY3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywg
ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uc2VhcmNoID0gJz9wbGF0
Zm9ybT0nICsgcGxhdGZvcm1TZWxlY3Qub3B0aW9uc1twbGF0Zm9ybVNlbGVjdC5zZWxlY3RlZElu
ZGV4XS5fcGxhdGZvcm07Ci0gICAgICAgIH0pOwotICAgICAgICAKLSAgICAgICAgcGxhdGZvcm1T
ZWxlY3Quc2VsZWN0ZWRJbmRleCA9IGN1cnJlbnRQbGF0Zm9ybUluZGV4OwotICAgIH0sCi0gICAg
X3NhdmVTY3JvbGxPZmZzZXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgdGFiSW5kZXggPSB0
aGlzLl90YWJzLnRhYnMoJ29wdGlvbicsICdzZWxlY3RlZCcpOwotICAgICAgICB0aGlzLl90YWJJ
bmRleFRvU2F2ZWRTY3JvbGxPZmZzZXRbdGFiSW5kZXhdID0gZG9jdW1lbnQuYm9keS5zY3JvbGxU
b3A7Ci0gICAgfSwKLSAgICBfcmVzdG9yZVNjcm9sbE9mZnNldDogZnVuY3Rpb24odGFiSW5kZXgp
Ci0gICAgewotICAgICAgICBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCA9IHRoaXMuX3RhYkluZGV4
VG9TYXZlZFNjcm9sbE9mZnNldFt0YWJJbmRleF0gfHwgMDsKLSAgICB9LAotICAgIF9zZXR1cEhp
c3RvcnlIYW5kbGVyczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgZnVuY3Rpb24gY3VycmVu
dEhhc2goKSB7Ci0gICAgICAgICAgICB2YXIgaGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoOwot
ICAgICAgICAgICAgcmV0dXJuICghaGFzaCB8fCBoYXNoID09ICcjJykgPyAnI3VuZXhwZWN0ZWQn
IDogaGFzaDsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAg
JCgnLnVpLXRhYnMtbmF2IGEnKS5iaW5kKCdtb3VzZXVwJywgZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICAgICAgICAgIHZhciBocmVmID0gZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnaHJlZicpOwot
ICAgICAgICAgICAgdmFyIGhhc2ggPSBjdXJyZW50SGFzaCgpOwotICAgICAgICAgICAgaWYgKGhy
ZWYgIT0gaGFzaCkgewotICAgICAgICAgICAgICAgIHNlbGYuX3NhdmVTY3JvbGxPZmZzZXQoKTsK
LSAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBocmVmCi0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIHdpbmRvdy5vbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbihldmVu
dCkgewotICAgICAgICAgICAgdmFyIHRhYk5hbWUgPSBjdXJyZW50SGFzaCgpLnN1YnN0cmluZygx
KTsKLSAgICAgICAgICAgIHNlbGYuX3NlbGVjdEludGVybmFsKHRhYk5hbWUpOwotICAgICAgICB9
OwotCi0gICAgICAgIC8vIFdoZW4gbmF2aWdhdGluZyBmcm9tIHRoZSBicm93c2VyIGNocm9tZSwg
d2UnbGwKLSAgICAgICAgLy8gc2Nyb2xsIHRvIHRoZSAjdGFibmFtZSBjb250ZW50cy4gcG9wc3Rh
dGUgZmlyZXMgYmVmb3JlCi0gICAgICAgIC8vIHdlIHNjcm9sbCwgc28gd2UgY2FuIHNhdmUgdGhl
IHNjcm9sbCBvZmZzZXQgZmlyc3QuCi0gICAgICAgIHdpbmRvdy5vbnBvcHN0YXRlID0gZnVuY3Rp
b24oKSB7Ci0gICAgICAgICAgICBzZWxmLl9zYXZlU2Nyb2xsT2Zmc2V0KCk7Ci0gICAgICAgIH07
Ci0gICAgfSwKLSAgICBhdHRhY2g6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGRvY3VtZW50
LmJvZHkuaW5zZXJ0QmVmb3JlKHRoaXMsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7Ci0gICAg
ICAgIHRoaXMuX3NldHVwSGlzdG9yeUhhbmRsZXJzKCk7Ci0gICAgICAgIHRoaXMuX2J1aWxkUGxh
dGZvcm1zUG9wdXAoKTsKLSAgICB9LAotICAgIHRhYk5hbWVkOiBmdW5jdGlvbih0YWJOYW1lKQot
ICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3RhYk5hbWVzLmluZGV4T2YodGFiTmFtZSkgPT0gLTEp
Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgdGFiID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQodGFiTmFtZSk7Ci0gICAgICAgIC8vIFdlIHBlcmZvcm0gdGhpcyBzYW5pdHkgY2hl
Y2sgYmVsb3cgdG8gbWFrZSBzdXJlIGdldEVsZW1lbnRCeUlkCi0gICAgICAgIC8vIGhhc24ndCBn
aXZlbiB1cyBhIG5vZGUgaW4gc29tZSBvdGhlciB1bnJlbGF0ZWQgcGFydCBvZiB0aGUgZG9jdW1l
bnQuCi0gICAgICAgIC8vIHRoYXQgc2hvdWxkbid0IGhhcHBlbiBub3JtYWxseSwgYnV0IGl0IGNv
dWxkIGhhcHBlbiBpZiBhbiBhdHRhY2tlcgotICAgICAgICAvLyBoYXMgc29tZWhvdyBzbmVha2ls
eSBhZGRlZCBhIG5vZGUgdG8gb3VyIGRvY3VtZW50LgotICAgICAgICBpZiAodGFiLnBhcmVudE5v
ZGUgIT0gdGhpcykKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gdGFi
OwotICAgIH0sCi0gICAgdW5leHBlY3RlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMudGFiTmFtZWQoJ3VuZXhwZWN0ZWQnKTsKLSAgICB9LAotICAgIGV4cGVjdGVkOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy50YWJOYW1lZCgnZXhwZWN0ZWQn
KTsKLSAgICB9LAotICAgIHJlc3VsdHM6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLnRhYk5hbWVkKCdyZXN1bHRzJyk7Ci0gICAgfSwKLSAgICBwZXJmOiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICByZXR1cm4gdGhpcy50YWJOYW1lZCgncGVyZicpOwotICAgIH0sCi0g
ICAgX3NlbGVjdEludGVybmFsOiBmdW5jdGlvbih0YWJOYW1lKSB7Ci0gICAgICAgIHZhciB0YWJJ
bmRleCA9IHRoaXMuX3RhYk5hbWVzLmluZGV4T2YodGFiTmFtZSk7Ci0gICAgICAgIHRoaXMuX3Rh
YnMudGFicygnZW5hYmxlJywgdGFiSW5kZXgpOwotICAgICAgICB0aGlzLl90YWJzLnRhYnMoJ3Nl
bGVjdCcsIHRhYkluZGV4KTsKLSAgICB9LAotICAgIHNlbGVjdDogZnVuY3Rpb24odGFiTmFtZSkK
LSAgICB7Ci0gICAgICAgIHRoaXMuX3NhdmVTY3JvbGxPZmZzZXQoKTsKLSAgICAgICAgdGhpcy5f
c2VsZWN0SW50ZXJuYWwodGFiTmFtZSk7Ci0gICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICcjJyAr
IHRhYk5hbWU7Ci0gICAgfQotfSk7Ci0KLS8vIEZJWE1FOiBMb2FkaW5nIGEgbW9kdWxlIHNob3Vs
ZG4ndCBzZXQgb2ZmIGEgdGltZXIuICBUaGUgY29udHJvbGxlciBzaG91bGQga2ljayB0aGlzIG9m
Zi4KLXNldEludGVydmFsKGZ1bmN0aW9uKCkgewotICAgIEFycmF5LnByb3RvdHlwZS5mb3JFYWNo
LmNhbGwoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgidGltZS5yZWxhdGl2ZSIpLCBmdW5jdGlv
bih0aW1lKSB7Ci0gICAgICAgIHRpbWUudXBkYXRlICYmIHRpbWUudXBkYXRlKCk7Ci0gICAgfSk7
Ci19LCBjb25maWcua1JlbGF0aXZlVGltZVVwZGF0ZUZyZXF1ZW5jeSk7Ci0KLXVpLlJlbGF0aXZl
VGltZSA9IGJhc2UuZXh0ZW5kcygndGltZScsIHsKLSAgICBpbml0OiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICB0aGlzLmNsYXNzTmFtZSA9ICdyZWxhdGl2ZSc7Ci0gICAgfSwKLSAgICBkYXRl
OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0ZTsKLSAgICB9LAot
ICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy50ZXh0Q29udGVudCA9
IHRoaXMuX2RhdGUgPyBiYXNlLnJlbGF0aXZpemVUaW1lKHRoaXMuX2RhdGUpIDogJyc7Ci0gICAg
fSwKLSAgICBzZXREYXRlOiBmdW5jdGlvbihkYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy5fZGF0
ZSA9IGRhdGU7Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7Ci0gICAgfQotfSk7Ci0KLXVpLlN0YXR1
c0FyZWEgPSBiYXNlLmV4dGVuZHMoJ2RpdicsICB7Ci0gICAgaW5pdDogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgLy8gVGhpcyBpcyBhIFNpbmdsZXRvbi4KLSAgICAgICAgaWYgKHVpLlN0YXR1
c0FyZWEuX2luc3RhbmNlKQotICAgICAgICAgICAgcmV0dXJuIHVpLlN0YXR1c0FyZWEuX2luc3Rh
bmNlOwotICAgICAgICB1aS5TdGF0dXNBcmVhLl9pbnN0YW5jZSA9IHRoaXM7Ci0KLSAgICAgICAg
dGhpcy5jbGFzc05hbWUgPSAnc3RhdHVzJzsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRD
aGlsZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fY3VycmVudElkID0gMDsKLSAgICAgICAgdGhpcy5f
dW5maW5pc2hlZElkcyA9IHt9OwotCi0gICAgICAgIHRoaXMuYXBwZW5kQ2hpbGQobmV3IHVpLmFj
dGlvbnMuTGlzdChbbmV3IHVpLmFjdGlvbnMuQ2xvc2UoKV0pKTsKLSAgICAgICAgJCh0aGlzKS5i
aW5kKCdjbG9zZScsIHRoaXMuY2xvc2UuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgdmFyIHByb2Nl
c3NpbmcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcm9ncmVzcycpOwotICAgICAgICBwcm9j
ZXNzaW5nLmNsYXNzTmFtZSA9ICdwcm9jZXNzLXRleHQnOwotICAgICAgICBwcm9jZXNzaW5nLnRl
eHRDb250ZW50ID0gJ1Byb2Nlc3NpbmcuLi4nOwotICAgICAgICB0aGlzLmFwcGVuZENoaWxkKHBy
b2Nlc3NpbmcpOwotICAgIH0sCi0gICAgY2xvc2U6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nOwotICAgICAgICBBcnJheS5wcm90b3R5
cGUuZm9yRWFjaC5jYWxsKHRoaXMucXVlcnlTZWxlY3RvckFsbCgnLnN0YXR1cy1jb250ZW50Jyks
IGZ1bmN0aW9uKG5vZGUpIHsKLSAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChub2RlKTsKLSAgICAgICAgfSk7Ci0gICAgfSwKLSAgICBhZGRNZXNzYWdlOiBmdW5jdGlvbihp
ZCwgbWVzc2FnZSkKLSAgICB7Ci0gICAgICAgIHRoaXMuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNp
YmxlJzsKLSAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygncHJvY2Vzc2luZycpOwotCi0gICAgICAg
IHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgICAgICQo
ZWxlbWVudCkuYWRkQ2xhc3MoJ21lc3NhZ2UnKS50ZXh0KG1lc3NhZ2UpOwotCi0gICAgICAgIHZh
ciBjb250ZW50ID0gdGhpcy5xdWVyeVNlbGVjdG9yKCcjJyArIGlkKTsKLSAgICAgICAgaWYgKCFj
b250ZW50KSB7Ci0gICAgICAgICAgICBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Ci0gICAgICAgICAgICBjb250ZW50LmlkID0gaWQ7Ci0gICAgICAgICAgICBjb250ZW50
LmNsYXNzTmFtZSA9ICdzdGF0dXMtY29udGVudCc7Ci0gICAgICAgICAgICB0aGlzLmFwcGVuZENo
aWxkKGNvbnRlbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChl
bGVtZW50KTsKLSAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0VG9wIDwgdGhpcy5zY3JvbGxUb3Ag
fHwgZWxlbWVudC5vZmZzZXRUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCA+IHRoaXMuc2Nyb2xs
VG9wICsgdGhpcy5vZmZzZXRIZWlnaHQpCi0gICAgICAgICAgICB0aGlzLnNjcm9sbFRvcCA9IGVs
ZW1lbnQub2Zmc2V0VG9wOwotICAgIH0sCi0gICAgLy8gRklYTUU6IEl0J3MgdW5jbGVhciB3aGV0
aGVyIHRoaXMgY29kZSBjb3VsZCBsaXZlIGhlcmUgb3IgaW4gYSBjb250cm9sbGVyLgotICAgIGFk
ZEZpbmFsTWVzc2FnZTogZnVuY3Rpb24oaWQsIG1lc3NhZ2UpCi0gICAgewotICAgICAgICB0aGlz
LmFkZE1lc3NhZ2UoaWQsIG1lc3NhZ2UpOwotCi0gICAgICAgIGRlbGV0ZSB0aGlzLl91bmZpbmlz
aGVkSWRzW2lkXTsKLSAgICAgICAgaWYgKCFPYmplY3Qua2V5cyh0aGlzLl91bmZpbmlzaGVkSWRz
KS5sZW5ndGgpCi0gICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdwcm9jZXNzaW5nJyk7
Ci0gICAgfSwKLSAgICBuZXdJZDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBpZCA9ICdzdGF0
dXMtY29udGVudC0nICsgKyt0aGlzLl9jdXJyZW50SWQ7Ci0gICAgICAgIHRoaXMuX3VuZmluaXNo
ZWRJZHNbaWRdID0gMTsKLSAgICAgICAgcmV0dXJuIGlkOwotICAgIH0KLX0pOwotCi19KSgpOwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL3VpX3VuaXR0ZXN0cy5qcwkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvdWlfdW5pdHRlc3RzLmpzCShub25leGlz
dGVudCkKQEAgLTEsMjAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotKGZ1bmN0aW9uICgpIHsKLQot
bW9kdWxlKCJ1aSIpOwotCi12YXIga0V4YW1wbGVSZXN1bHRzQnlUZXN0ID0gewotICAgICJzY3Jv
bGxiYXJzL2N1c3RvbS1zY3JvbGxiYXItd2l0aC1pbmNvbXBsZXRlLXN0eWxlLmh0bWwiOiB7Ci0g
ICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiSU1BR0Ui
LAotICAgICAgICAgICAgImFjdHVhbCI6ICJDUkFTSCIKLSAgICAgICAgfSwKLSAgICAgICAgIk1v
Y2sgTGludXgiOiB7Ci0gICAgICAgICAgICAiZXhwZWN0ZWQiOiAiVEVYVCIsCi0gICAgICAgICAg
ICAiYWN0dWFsIjogIkNSQVNIIgotICAgICAgICB9Ci0gICAgfSwKLSAgICAidXNlcnNjcmlwdHMv
YW5vdGhlci10ZXN0Lmh0bWwiOiB7Ci0gICAgICAgICJNb2NrIEJ1aWxkZXIiOiB7Ci0gICAgICAg
ICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCi0gICAgICAgICAgICAiYWN0dWFsIjogIlRFWFQiCi0g
ICAgICAgIH0KLSAgICB9Ci19Ci0KLXRlc3QoInVpLm9uZWJhciIsIDMsIGZ1bmN0aW9uKCkgewot
ICAgIGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCkgewotICAgICAgICB3aW5kb3cubG9jYXRpb24u
aGFzaCA9ICcnOwotICAgIH0KLQotICAgIG9uZWJhciA9IG5ldyB1aS5vbmViYXIoKTsKLSAgICBv
bmViYXIuYXR0YWNoKCk7Ci0gICAgZXF1YWwob25lYmFyLmlubmVySFRNTCwKLSAgICAgICAgJzxk
aXY+PHNlbGVjdCBpZD0icGxhdGZvcm0tcGlja2VyIj48b3B0aW9uPkFwcGxlPC9vcHRpb24+PG9w
dGlvbj5DaHJvbWl1bTwvb3B0aW9uPjxvcHRpb24+R1RLPC9vcHRpb24+PG9wdGlvbj5RdDwvb3B0
aW9uPjwvc2VsZWN0PjwvZGl2PicgKwotICAgICAgICAnPHVsIGNsYXNzPSJ1aS10YWJzLW5hdiB1
aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29y
bmVyLWFsbCI+JyArCi0gICAgICAgICAgICAnPGxpIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IHVp
LWNvcm5lci10b3AgdWktdGFicy1zZWxlY3RlZCB1aS1zdGF0ZS1hY3RpdmUiPjxhIGhyZWY9IiN1
bmV4cGVjdGVkIj5VbmV4cGVjdGVkIEZhaWx1cmVzPC9hPjwvbGk+JyArCi0gICAgICAgICAgICAn
PGxpIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci10b3AiPjxhIGhyZWY9IiNleHBl
Y3RlZCI+RXhwZWN0ZWQgRmFpbHVyZXM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8bGkgY2xh
c3M9InVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCB1aS1zdGF0ZS1kaXNhYmxlZCI+PGEg
aHJlZj0iI3Jlc3VsdHMiPlJlc3VsdHM8L2E+PC9saT4nICsKLSAgICAgICAgICAgICc8bGkgY2xh
c3M9InVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLXRvcCI+PGEgaHJlZj0iI3BlcmYiPnBlcmY8
L2E+PC9saT4nICsKLSAgICAgICAgJzwvdWw+JyArCi0gICAgICAgICc8ZGl2IGlkPSJ1bmV4cGVj
dGVkIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90
dG9tIj48L2Rpdj4nICsKLSAgICAgICAgJzxkaXYgaWQ9ImV4cGVjdGVkIiBjbGFzcz0idWktdGFi
cy1wYW5lbCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+
PC9kaXY+JyArCi0gICAgICAgICc8ZGl2IGlkPSJyZXN1bHRzIiBjbGFzcz0idWktdGFicy1wYW5l
bCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+PC9kaXY+
JyArCi0gICAgICAgICc8ZGl2IGlkPSJwZXJmIiBjbGFzcz0idWktdGFicy1wYW5lbCB1aS13aWRn
ZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIHVpLXRhYnMtaGlkZSI+PC9kaXY+Jyk7Ci0KLSAg
ICBvbmViYXIuc2VsZWN0KCdleHBlY3RlZCcpOwotICAgIGVxdWFsKHdpbmRvdy5sb2NhdGlvbi5o
YXNoLCAnI2V4cGVjdGVkJyk7Ci0gICAgb25lYmFyLnNlbGVjdCgndW5leHBlY3RlZCcpOwotICAg
IGVxdWFsKHdpbmRvdy5sb2NhdGlvbi5oYXNoLCAnI3VuZXhwZWN0ZWQnKTsKLQotICAgICQob25l
YmFyKS5kZXRhY2goKTsKLX0pOwotCi10ZXN0KCJyZXN1bHRzLlJlc3VsdHNHcmlkIiwgMSwgZnVu
Y3Rpb24oKSB7Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpCi0g
ICAgZ3JpZC5hZGRSZXN1bHRzKFsKLSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQt
dGVzdC1yZXN1bHRzL2Zvby1iYXItZGlmZi50eHQnLAotICAgICAgICAnaHR0cDovL2V4YW1wbGUu
Y29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3RlZC5wbmcnLAotICAgICAgICAn
aHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1hY3R1YWwucG5n
JywKLSAgICAgICAgJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1i
YXItZGlmZi5wbmcnLAotICAgIF0pOwotICAgIGVxdWFsKGdyaWQuaW5uZXJIVE1MLAotICAgICAg
ICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAgICAgICAgICAgICc8dGhlYWQ+JyAr
Ci0gICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5FeHBl
Y3RlZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90aD4nICsKLSAg
ICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKLSAgICAgICAgICAgICAgICAnPC90
cj4nICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAgICAgICAgICAgJzx0Ym9keT4nICsK
LSAgICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNz
PSJleHBlY3RlZCByZXN1bHQtY29udGFpbmVyIj48aW1nIGNsYXNzPSJpbWFnZS1yZXN1bHQiIHNy
Yz0iaHR0cDovL2V4YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1leHBlY3Rl
ZC5wbmciPjwvdGQ+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGQgY2xhc3M9ImFjdHVhbCBy
ZXN1bHQtY29udGFpbmVyIj48aW1nIGNsYXNzPSJpbWFnZS1yZXN1bHQiIHNyYz0iaHR0cDovL2V4
YW1wbGUuY29tL2xheW91dC10ZXN0LXJlc3VsdHMvZm9vLWJhci1hY3R1YWwucG5nIj48L3RkPicg
KwotICAgICAgICAgICAgICAgICAgICAnPHRkIGNsYXNzPSJkaWZmIHJlc3VsdC1jb250YWluZXIi
PjxpbWcgY2xhc3M9ImltYWdlLXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0
LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYucG5nIj48L3RkPicgKwotICAgICAgICAgICAgICAg
ICc8L3RyPicgKwotICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAgICc8L3RhYmxlPicg
KwotICAgICAgICAnPHRhYmxlIGNsYXNzPSJjb21wYXJpc29uIj4nICsKLSAgICAgICAgICAgICc8
dGhlYWQ+JyArCi0gICAgICAgICAgICAgICAgJzx0cj4nICsKLSAgICAgICAgICAgICAgICAgICAg
Jzx0aD5FeHBlY3RlZDwvdGg+JyArCi0gICAgICAgICAgICAgICAgICAgICc8dGg+QWN0dWFsPC90
aD4nICsKLSAgICAgICAgICAgICAgICAgICAgJzx0aD5EaWZmPC90aD4nICsKLSAgICAgICAgICAg
ICAgICAnPC90cj4nICsKLSAgICAgICAgICAgICc8L3RoZWFkPicgKwotICAgICAgICAgICAgJzx0
Ym9keT4nICsKLSAgICAgICAgICAgICAgICAnPHRyPicgKwotICAgICAgICAgICAgICAgICAgICAn
PHRkIGNsYXNzPSJleHBlY3RlZCByZXN1bHQtY29udGFpbmVyIj48L3RkPicgKwotICAgICAgICAg
ICAgICAgICAgICAnPHRkIGNsYXNzPSJhY3R1YWwgcmVzdWx0LWNvbnRhaW5lciI+PC90ZD4nICsK
LSAgICAgICAgICAgICAgICAgICAgJzx0ZCBjbGFzcz0iZGlmZiByZXN1bHQtY29udGFpbmVyIj48
aWZyYW1lIGNsYXNzPSJ0ZXh0LXJlc3VsdCIgc3JjPSJodHRwOi8vZXhhbXBsZS5jb20vbGF5b3V0
LXRlc3QtcmVzdWx0cy9mb28tYmFyLWRpZmYudHh0Ij48L2lmcmFtZT48L3RkPicgKwotICAgICAg
ICAgICAgICAgICc8L3RyPicgKwotICAgICAgICAgICAgJzwvdGJvZHk+JyArCi0gICAgICAgICc8
L3RhYmxlPicpOwotfSk7Ci0KLXRlc3QoInJlc3VsdHMuUmVzdWx0c0dyaWQgKGNyYXNobG9nKSIs
IDEsIGZ1bmN0aW9uKCkgewotICAgIHZhciBncmlkID0gbmV3IHVpLnJlc3VsdHMuUmVzdWx0c0dy
aWQoKQotICAgIGdyaWQuYWRkUmVzdWx0cyhbJ2h0dHA6Ly9leGFtcGxlLmNvbS9sYXlvdXQtdGVz
dC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCddKTsKLSAgICBlcXVhbChncmlkLmlubmVy
SFRNTCwgJzxpZnJhbWUgY2xhc3M9InRleHQtcmVzdWx0IiBzcmM9Imh0dHA6Ly9leGFtcGxlLmNv
bS9sYXlvdXQtdGVzdC1yZXN1bHRzL2Zvby1iYXItY3Jhc2gtbG9nLnR4dCI+PC9pZnJhbWU+Jyk7
Ci19KTsKLQotdGVzdCgicmVzdWx0cy5SZXN1bHRzR3JpZCAoZW1wdHkpIiwgMSwgZnVuY3Rpb24o
KSB7Ci0gICAgdmFyIGdyaWQgPSBuZXcgdWkucmVzdWx0cy5SZXN1bHRzR3JpZCgpCi0gICAgZ3Jp
ZC5hZGRSZXN1bHRzKFtdKTsKLSAgICBlcXVhbChncmlkLmlubmVySFRNTCwgJ05vIHJlc3VsdHMg
dG8gZGlzcGxheS4nKTsKLX0pOwotCi10ZXN0KCJ0aW1lIiwgNiwgZnVuY3Rpb24oKSB7Ci0gICAg
dmFyIHRpbWUgPSBuZXcgdWkuUmVsYXRpdmVUaW1lKCk7Ci0gICAgZXF1YWwodGltZS50YWdOYW1l
LCAnVElNRScpOwotICAgIGVxdWFsKHRpbWUuY2xhc3NOYW1lLCAncmVsYXRpdmUnKTsKLSAgICBk
ZWVwRXF1YWwoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGltZS5fX3Byb3RvX18pLnNvcnQo
KSwgWwotICAgICAgICAnZGF0ZScsCi0gICAgICAgICdpbml0JywKLSAgICAgICAgJ3NldERhdGUn
LAotICAgICAgICAndXBkYXRlJywKLSAgICBdKTsKLSAgICBlcXVhbCh0aW1lLm91dGVySFRNTCwg
Jzx0aW1lIGNsYXNzPSJyZWxhdGl2ZSI+PC90aW1lPicpOwotICAgIHZhciB0ZW5NaW51dGVzQWdv
ID0gbmV3IERhdGUoKTsKLSAgICB0ZW5NaW51dGVzQWdvLnNldE1pbnV0ZXModGVuTWludXRlc0Fn
by5nZXRNaW51dGVzKCkgLSAxMCk7Ci0gICAgdGltZS5zZXREYXRlKHRlbk1pbnV0ZXNBZ28pOwot
ICAgIGVxdWFsKHRpbWUub3V0ZXJIVE1MLCAnPHRpbWUgY2xhc3M9InJlbGF0aXZlIj4xMCBtaW51
dGVzIGFnbzwvdGltZT4nKTsKLSAgICBlcXVhbCh0aW1lLmRhdGUoKS5nZXRUaW1lKCksIHRlbk1p
bnV0ZXNBZ28uZ2V0VGltZSgpKTsKLX0pOwotCi10ZXN0KCJTdGF0dXNBcmVhIiwgMywgZnVuY3Rp
b24oKSB7Ci0gICAgdmFyIHN0YXR1c0FyZWEgPSBuZXcgdWkuU3RhdHVzQXJlYSgpOwotICAgIHZh
ciBpZCA9IHN0YXR1c0FyZWEubmV3SWQoKTsKLSAgICBzdGF0dXNBcmVhLmFkZE1lc3NhZ2UoaWQs
ICdGaXJzdCBNZXNzYWdlJyk7Ci0gICAgc3RhdHVzQXJlYS5hZGRNZXNzYWdlKGlkLCAnU2Vjb25k
IE1lc3NhZ2UnKTsKLSAgICBlcXVhbChzdGF0dXNBcmVhLm91dGVySFRNTCwKLSAgICAgICAgJzxk
aXYgY2xhc3M9InN0YXR1cyBwcm9jZXNzaW5nIiBzdHlsZT0idmlzaWJpbGl0eTogdmlzaWJsZTsg
Ij4nICsKLSAgICAgICAgICAgICc8dWwgY2xhc3M9ImFjdGlvbnMiPjxsaT48YnV0dG9uIGNsYXNz
PSJhY3Rpb24iPkNsb3NlPC9idXR0b24+PC9saT48L3VsPicgKwotICAgICAgICAgICAgJzxwcm9n
cmVzcyBjbGFzcz0icHJvY2Vzcy10ZXh0Ij5Qcm9jZXNzaW5nLi4uPC9wcm9ncmVzcz4nICsKLSAg
ICAgICAgICAgICc8ZGl2IGlkPSJzdGF0dXMtY29udGVudC0xIiBjbGFzcz0ic3RhdHVzLWNvbnRl
bnQiPicgKwotICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNz
YWdlPC9kaXY+JyArCi0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3NhZ2UiPlNlY29u
ZCBNZXNzYWdlPC9kaXY+JyArCi0gICAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8L2Rp
dj4nKTsKLQotICAgIHZhciBzZWNvbmRTdGF0dXNBcmVhID0gbmV3IHVpLlN0YXR1c0FyZWEoKTsK
LSAgICB2YXIgc2Vjb25kSWQgPSBzZWNvbmRTdGF0dXNBcmVhLm5ld0lkKCk7Ci0gICAgc2Vjb25k
U3RhdHVzQXJlYS5hZGRNZXNzYWdlKHNlY29uZElkLCAnRmlyc3QgTWVzc2FnZSBzZWNvbmQgaWQn
KTsKLQotICAgIGVxdWFsKHN0YXR1c0FyZWEub3V0ZXJIVE1MLAotICAgICAgICAnPGRpdiBjbGFz
cz0ic3RhdHVzIHByb2Nlc3NpbmciIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyAiPicgKwot
ICAgICAgICAgICAgJzx1bCBjbGFzcz0iYWN0aW9ucyI+PGxpPjxidXR0b24gY2xhc3M9ImFjdGlv
biI+Q2xvc2U8L2J1dHRvbj48L2xpPjwvdWw+JyArCi0gICAgICAgICAgICAnPHByb2dyZXNzIGNs
YXNzPSJwcm9jZXNzLXRleHQiPlByb2Nlc3NpbmcuLi48L3Byb2dyZXNzPicgKwotICAgICAgICAg
ICAgJzxkaXYgaWQ9InN0YXR1cy1jb250ZW50LTEiIGNsYXNzPSJzdGF0dXMtY29udGVudCI+JyAr
Ci0gICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9Im1lc3NhZ2UiPkZpcnN0IE1lc3NhZ2U8L2Rp
dj4nICsKLSAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ibWVzc2FnZSI+U2Vjb25kIE1lc3Nh
Z2U8L2Rpdj4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlk
PSJzdGF0dXMtY29udGVudC0yIiBjbGFzcz0ic3RhdHVzLWNvbnRlbnQiPicgKwotICAgICAgICAg
ICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNzYWdlIHNlY29uZCBpZDwvZGl2
PicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAnPC9kaXY+Jyk7Ci0KLSAgICBz
dGF0dXNBcmVhLmFkZEZpbmFsTWVzc2FnZShpZCwgJ0ZpbmFsIE1lc3NhZ2UgMScpOwotICAgIHN0
YXR1c0FyZWEuYWRkRmluYWxNZXNzYWdlKHNlY29uZElkLCAnRmluYWwgTWVzc2FnZSAyJyk7Ci0K
LSAgICBlcXVhbChzdGF0dXNBcmVhLm91dGVySFRNTCwKLSAgICAgICAgJzxkaXYgY2xhc3M9InN0
YXR1cyIgc3R5bGU9InZpc2liaWxpdHk6IHZpc2libGU7ICI+JyArCi0gICAgICAgICAgICAnPHVs
IGNsYXNzPSJhY3Rpb25zIj48bGk+PGJ1dHRvbiBjbGFzcz0iYWN0aW9uIj5DbG9zZTwvYnV0dG9u
PjwvbGk+PC91bD4nICsKLSAgICAgICAgICAgICc8cHJvZ3Jlc3MgY2xhc3M9InByb2Nlc3MtdGV4
dCI+UHJvY2Vzc2luZy4uLjwvcHJvZ3Jlc3M+JyArCi0gICAgICAgICAgICAnPGRpdiBpZD0ic3Rh
dHVzLWNvbnRlbnQtMSIgY2xhc3M9InN0YXR1cy1jb250ZW50Ij4nICsKLSAgICAgICAgICAgICAg
ICAnPGRpdiBjbGFzcz0ibWVzc2FnZSI+Rmlyc3QgTWVzc2FnZTwvZGl2PicgKwotICAgICAgICAg
ICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5TZWNvbmQgTWVzc2FnZTwvZGl2PicgKwotICAg
ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaW5hbCBNZXNzYWdlIDE8L2Rpdj4n
ICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICc8ZGl2IGlkPSJzdGF0dXMt
Y29udGVudC0yIiBjbGFzcz0ic3RhdHVzLWNvbnRlbnQiPicgKwotICAgICAgICAgICAgICAgICc8
ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaXJzdCBNZXNzYWdlIHNlY29uZCBpZDwvZGl2PicgKwotICAg
ICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJtZXNzYWdlIj5GaW5hbCBNZXNzYWdlIDI8L2Rpdj4n
ICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgJzwvZGl2PicpOwotCi0gICAgc3Rh
dHVzQXJlYS5jbG9zZSgpOwotfSk7Ci0KLX0pKCk7CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5
bGVzL1Rlc3RGYWlsdXJlcy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxl
cy9UZXN0RmFpbHVyZXMuY3NzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
c3R5bGVzL1Rlc3RGYWlsdXJlcy5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTkgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotICovCi0KLWFzaWRlIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAz
cHg7Ci0gICAgcmlnaHQ6IDVweDsKLSAgICBjb2xvcjogIzg4ODsKLSAgICBmb250LXNpemU6IDAu
OWVtOwotfQotCi1jb2RlIHsKLSAgICBmb250LXNpemU6IDAuOWVtOwotfQotCi1vbCB7Ci0gICAg
bGlzdC1zdHlsZS10eXBlOiBub25lOwotfQotCi1kdCB7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAg
Zm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgbWFyZ2luLXJpZ2h0OiAzcHg7Ci19Ci0KLWR0OjphZnRl
ciB7Ci0gICAgY29udGVudDogJzonOwotfQotCi0jZmFpbHVyZS1oaXN0b3J5LCAjcG9zc2libHkt
Zmxha3ktdGVzdHMgewotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwIDAgMCAxNXB4Owot
fQotCi0jZmFpbHVyZS1oaXN0b3J5ID4gbGkgewotICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Ci0g
ICAgcGFkZGluZzogMTBweDsKLX0KLQotI3Bvc3NpYmx5LWZsYWt5LXRlc3RzID4gbGkgewotICAg
IHBhZGRpbmc6IDFweCAwcHg7Ci19Ci0KLSNmYWlsdXJlLWhpc3RvcnkgPiBsaSwgI3Bvc3NpYmx5
LWZsYWt5LXRlc3RzID4gbGkgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7Ci0gICAg
cGFkZGluZy1sZWZ0OiA1MHB4OwotfQotCi0jcG9zc2libHktZmxha3ktdGVzdHMgPiBsaSA+IDpm
aXJzdC1jaGlsZCB7Ci0gICAgbWFyZ2luLWxlZnQ6IC01MHB4OwotfQotCi0uZmxha2luZXNzLWV4
YW1wbGVzLWxpc3QgewotICAgIHBhZGRpbmc6IDA7Ci19Ci0KLS50ZXN0LWxpc3QgewotICAgIG1h
cmdpbjogMCAwIDAgLTQwcHg7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotLmluZm8gewotICAgIGZv
bnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLmV4aXN0aW5nLWFuZC1uZXctYnVncyB7Ci0gICAgbWFy
Z2luLWJvdHRvbTogMDsKLX0KLQotLmV4aXN0aW5nLWJ1Z3MtbGlzdCwgLnN1c3BlY3QtcmV2aXNp
b25zLWxpc3QsIC5mbGFraW5lc3MtZXhhbXBsZXMtbGlzdCB7Ci0gICAgZm9udC1zaXplOiBzbWFs
bGVyOwotfQotCi0ubmV3LWJ1Zy1mb3JtIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0uZGlz
Y2xvc3VyZS10cmlhbmdsZSB7Ci0gICAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5z
Zm9ybSAwLjFzOwotICAgIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Ci0gICAgY3Vyc29yOiBk
ZWZhdWx0OwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICBwYWRkaW5nOiAwcHggM3B4
OwotfQotCi0uZXhwYW5kZWQgPiAuZGlzY2xvc3VyZS10cmlhbmdsZSB7Ci0gICAgLXdlYmtpdC10
cmFuc2Zvcm06IHJvdGF0ZVooOTBkZWcpOwotfQotCi0uZXhwYW5kYWJsZSB7Ci0gICAgaGVpZ2h0
OiAwcHg7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotLmV4cGFuZGVkID4gLmV4cGFuZGFi
bGUgewotICAgIGhlaWdodDogYXV0bzsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMv
Y29tbW9uLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL2NvbW1vbi5j
c3MJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvY29tbW9uLmNz
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWh0bWwgewot
ICAgIG92ZXJmbG93LXk6IHNjcm9sbDsKLX0KLQotYm9keSB7Ci0gICAgZm9udC1mYW1pbHk6ICdI
ZWx2ZXRpY2EnOwotICAgIGZvbnQtc2l6ZTogMTRweDsKLSAgICBtYXJnaW46IDBweDsKLX0KLQot
YSB7Ci0gICAgY29sb3I6ICMzMzM7Ci19Ci0KLS51aS13aWRnZXQtY29udGVudCB7Ci0gICAgZm9u
dC1mYW1pbHk6ICdIZWx2ZXRpY2EnOwotfQotCi0udWktd2lkZ2V0IGJ1dHRvbiwgYnV0dG9uIHsK
LSAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSc7Ci0gICAgYm9yZGVyLXJhZGl1czogMnB4Owot
ICAgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjVmNWY1
LCNmMWYxZjEpOwotICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTsKLSAg
ICBib3JkZXItcmFkaXVzOiAycHg7Ci0gICAgY29sb3I6ICM2NjY7Ci0gICAgY3Vyc29yOiBwb2lu
dGVyOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICBo
ZWlnaHQ6IDI5cHg7Ci0gICAgbGluZS1oZWlnaHQ6IDI3cHg7Ci0gICAgbWluLXdpZHRoOiA1NHB4
OwotICAgIHBhZGRpbmc6IDAgOHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcgotfQotCi1idXR0
b24ubmV4dCB7Ci0gICAgbWFyZ2luLWxlZnQ6IDBweDsKLX0KLQotYnV0dG9uLnByZXZpb3VzIHsK
LSAgICBtYXJnaW4tcmlnaHQ6IDBweDsKLX0KLQotYnV0dG9uW2Rpc2FibGVkXSB7Ci0gICAgdmlz
aWJpbGl0eTogaGlkZGVuOwotfQotCi1idXR0b246aG92ZXIgewotICAgIGJhY2tncm91bmQtaW1h
Z2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEpOwotICAgIC13
ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZjhmOGY4OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVhci1ncmFkaWVu
dCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjYzZjNmM2Owot
ICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7Ci0gICAgY29sb3I6ICMz
MzMKLX0KLQotYnV0dG9uOmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjNGQ5MGZlOwot
ICAgIG91dGxpbmU6IG5vbmUKLX0KLQotYnV0dG9uLmRlZmF1bHQgewotICAgIGJvcmRlcjogMXB4
IHNvbGlkICMzMDc5RUQ7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtaW1hZ2U6
IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwotfQotCi1idXR0
b24uZGVmYXVsdDpob3ZlciB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzJmNWJiNzsKLSAgICBj
b2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogIzM1N2FlODsKLSAgICBiYWNrZ3Jv
dW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0IGJvdHRvbSxm
cm9tKCM0ZDkwZmUpLHRvKCMzNTdhZTgpKTsKLX0KLQotLmNsZWFyIHsKLSAgICBjbGVhcjogYm90
aDsKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvZmFpbHVyZXMuY3NzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvZmFpbHVyZXMuY3NzCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL2ZhaWx1cmVzLmNzcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDgwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLmZhaWx1cmVzIC5CVUlMRElORyB7Ci0g
ICAgb3BhY2l0eTogMC41OwotfQotCi1hLmZhaWxpbmctYnVpbGRlciB7Ci0gICAgZGlzcGxheTog
aW5saW5lLWJsb2NrOwotICAgIGJvcmRlcjogMXB4IHNvbGlkIEdyYXk7Ci0gICAgbWFyZ2luOiAw
IDAgMnB4IDA7Ci0gICAgcGFkZGluZzogMXB4OwotICAgIGNvbG9yOiBCbGFjazsKLSAgICBmb250
LXNpemU6IDExcHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0gICAgYS5mYWls
aW5nLWJ1aWxkZXI+c3Bhbi52ZXJzaW9uIHsKLSAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVy
Y2FzZTsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKLSAgICAgICAgY29sb3I6IFdo
aXRlOwotICAgICAgICBwYWRkaW5nOiAwIDJweDsKLSAgICB9Ci0KLSAgICBhLmZhaWxpbmctYnVp
bGRlcj5zcGFuLmFyY2hpdGVjdHVyZSB7Ci0gICAgICAgIHBhZGRpbmc6IDAgMnB4OwotICAgIH0K
LQotICAgIC5lZmZlY3RzIGEuZmFpbGluZy1idWlsZGVyPnNwYW4uYXJjaGl0ZWN0dXJlIHsKLSAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzU1NTsKLSAgICAgICAgY29sb3I6IFdoaXRlOwotICAg
IH0KLQotICAgIGEuZmFpbGluZy1idWlsZGVyPnNwYW4uZ3JhcGhpY3MgewotICAgICAgICBwYWRk
aW5nOiAwIDJweDsKLSAgICB9Ci0KLQotdWwuZmFpbHVyZXMgewotICAgIHBhZGRpbmc6IDBweDsK
LX0KLQotICAgIHVsLmZhaWx1cmVzPmxpIHsKLSAgICAgICAgZGlzcGxheTogLXdlYmtpdC1ib3g7
Ci0gICAgfQotCi0gICAgdWwuZmFpbHVyZXM+bGkgbGFiZWwgewotICAgICAgICBtYXJnaW4tbGVm
dDogMTBweDsKLSAgICB9Ci0KLSAgICAgICAgdWwuZmFpbHVyZXM+bGkgdWwuYWN0aW9ucyB7Ci0g
ICAgICAgICAgICBwYWRkaW5nOiAwcHg7Ci0gICAgICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47
Ci0gICAgICAgIH0KLQotICAgICAgICB1bC5mYWlsdXJlcz5saTpob3ZlciB1bC5hY3Rpb25zIHsK
LSAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7Ci0gICAgICAgIH0KSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9zdHlsZXMvbWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3N0eWxlcy9tYWluLmNzcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0
eWxlcy9tYWluLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLWJvZHkgewotICAgIGZvbnQtZmFtaWx5OiBUYWhvbWEsIHNhbnMtc2VyaWY7Ci0gICAgZm9u
dC1zaXplOiAxMXB4OwotICAgIG1hcmdpbjogMDsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1hIHsK
LSAgICBjb2xvcjogQmxhY2s7Ci19Ci0KLXRhYmxlIHsKLSAgICB0YWJsZS1sYXlvdXQ6IGZpeGVk
OwotICAgIHdpZHRoOiAxMDAlOwotICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0K
LXRkLCB0aCB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB2ZXJ0aWNhbC1hbGlnbjogdG9w
OwotICAgIC8qIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNjNmM2YzY7ICovCi19Ci0KLXRkOmxh
c3Qtb2YtdHlwZSwgdGg6bGFzdC1vZi10eXBlIHsKLSAgICAvKiBib3JkZXItcmlnaHQ6IDBweDsg
Ki8KLX0KLQotdGggewotICAgIC8qIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzZjNmM2OyAq
LwotfQotCi1idXR0b24gewotICAgIGJvcmRlci1yYWRpdXM6IDJweDsKLSAgICBiYWNrZ3JvdW5k
LWltYWdlOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsI2Y1ZjVmNSwjZjFmMWYxKTsKLSAg
ICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuMSk7Ci0gICAgYm9yZGVyLXJhZGl1
czogMnB4OwotICAgIGNvbG9yOiAjNjY2OwotICAgIGN1cnNvcjogcG9pbnRlcjsKLSAgICBmb250
LXNpemU6IDExcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgaGVpZ2h0OiAyOXB4Owot
ICAgIGxpbmUtaGVpZ2h0OiAyN3B4OwotICAgIG1hcmdpbjogMTFweCA2cHg7Ci0gICAgbWluLXdp
ZHRoOiA1NHB4OwotICAgIHBhZGRpbmc6IDAgOHB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcgot
fQotCi1idXR0b24ubmV4dCB7Ci0gICAgbWFyZ2luLWxlZnQ6IDBweDsKLX0KLQotYnV0dG9uLnBy
ZXZpb3VzIHsKLSAgICBtYXJnaW4tcmlnaHQ6IDBweDsKLX0KLQotYnV0dG9uW2Rpc2FibGVkXSB7
Ci0gICAgdmlzaWJpbGl0eTogaGlkZGVuOwotfQotCi1idXR0b246aG92ZXIgewotICAgIGJhY2tn
cm91bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjZjhmOGY4LCNmMWYxZjEp
OwotICAgIC13ZWJraXQtYm94LXNoYWRvdzogMCAxcHggMXB4IHJnYmEoMCwwLDAsMC4xKTsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjhmOGY4OwotICAgIGJhY2tncm91bmQtaW1hZ2U6IGxpbmVh
ci1ncmFkaWVudCh0b3AsI2Y4ZjhmOCwjZjFmMWYxKTsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAj
YzZjNmM2OwotICAgIGJveC1zaGFkb3c6IDAgMXB4IDFweCByZ2JhKDAsMCwwLDAuMSk7Ci0gICAg
Y29sb3I6ICMzMzMKLX0KLQotYnV0dG9uOmZvY3VzIHsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAj
NGQ5MGZlOwotICAgIG91dGxpbmU6IG5vbmUKLX0KLQotYnV0dG9uLmRlZmF1bHQgewotICAgIGJv
cmRlcjogMXB4IHNvbGlkICMzMDc5RUQ7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91
bmQtaW1hZ2U6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KHRvcCwjNGQ5MGZlLCM0Nzg3ZWQpOwot
fQotCi1idXR0b24uZGVmYXVsdDpob3ZlciB7Ci0gICAgYm9yZGVyOiAxcHggc29saWQgIzJmNWJi
NzsKLSAgICBjb2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogIzM1N2FlODsKLSAg
ICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhcixsZWZ0IHRvcCxsZWZ0
IGJvdHRvbSxmcm9tKCM0ZDkwZmUpLHRvKCMzNTdhZTgpKTsKLX0KLQotLmNsZWFyIHsKLSAgICBj
bGVhcjogYm90aDsKLX0KLQotLyoqKiBidXR0ZXJiYXIgKioqLwotCi0uYnV0dGVyYmFyIHsKLSAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1OwotICAgIHBhZGRpbmc6IDVweDsKLSAgICBwb3Np
dGlvbjogZml4ZWQ7Ci0gICAgdG9wOiAwcHg7Ci0gICAgcmlnaHQ6IDBweDsKLX0KLQotLmJ1dHRl
cmJhciAuaGlkZSB7Ci0gICAgbWFyZ2luLWxlZnQ6IDIwcHg7Ci19Ci0KLS8qKiogaW5mb2JhciAq
KiovCi0KLS5pbmZvYmFyIHsKLSAgICBkaXNwbGF5OiBub25lOwotICAgIGJhY2tncm91bmQtY29s
b3I6IENvcm5zaWxrOwotICAgIGJvcmRlcjogNXB4IHNvbGlkIFRvbWF0bzsKLSAgICBwYWRkaW5n
OiAxMHB4OwotICAgIG1hcmdpbjogNXB4IGF1dG87Ci0gICAgZm9udC1zaXplOiAxNXB4OwotICAg
IHdpZHRoOiAxMDAlOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLmluZm9iYXIgLnN0
YXR1cyBhIHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotfQotCi0uaW5mb2JhciAuc3RhdHVz
IHVsIHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBsaXN0LXN0eWxlOiBu
b25lOwotICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgICBwYWRkaW5nOiAwIDAgMCAxMHB4
OwotfQotCi0uaW5mb2JhciAuc3RhdHVzIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
Ci0gICAgbWFyZ2luOiAwcHggNXB4OwotfQotCi0vKioqIHJlY2VudC1oaXN0b3J5ICoqKi8KLQot
LnJlY2VudC1oaXN0b3J5IHsKLX0KLQotLnJlY2VudC1oaXN0b3J5IC5idWlsZGVyIHsKLSAgICB3
aWR0aDogNXB4OwotICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNmNWY1ZjU7Ci19Ci0KLS5y
ZWNlbnQtaGlzdG9yeSAuYnVpbHQgewotICAgIGJhY2tncm91bmQtY29sb3I6ICNjNmM2YzY7Ci19
Ci0KLS5yZWNlbnQtaGlzdG9yeSB0ZFtkYXRhLWZhaWx1cmUtdHlwZXNdIHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBCbGFjazsKLX0KLQotLmNoYW5nZWxvZyAucmVzdWx0IHsKLSAgICBwYWRkaW5n
OiA0cHggMHB4OwotICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCB3aGl0ZTsKLSAgICBib3JkZXIt
Ym90dG9tOiAycHggc29saWQgd2hpdGU7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnRlc3QgewotICAgIHBh
ZGRpbmctbGVmdDogM3B4OwotfQotCi0uY2hhbmdlbG9nIC5lbnRyeSB7Ci0gICAgcGFkZGluZzog
NHB4IDBweCA0cHggM3B4OwotfQotCi0uY2hhbmdlbG9nIC5yZXZlcnRlZCB7Ci0gICAgdGV4dC1k
ZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19Ci0KLS5jaGFuZ2Vsb2cgLnBvc3NpYmxlLXJlZ3Jl
c3Npb24gewotICAgIGJhY2tncm91bmQtY29sb3I6IFBhcGF5YVdoaXA7Ci19Ci0KLS5jaGFuZ2Vs
b2cgLmRldGFpbHMsIC5jaGFuZ2Vsb2cgLmRldGFpbHMgYSB7Ci0gICAgY29sb3I6ICM1NTU7Ci19
Ci0KLS5jaGFuZ2Vsb2cgLnN1bW1hcnkgewotICAgIGNvbG9yOiBCbGFjazsKLX0KLQotLmNoYW5n
ZWxvZyAuYXV0aG9yIHsKLSAgICBmb250LXN0eWxlOiBpdGFsaWM7Ci19Ci0KLS50ZXN0LW5hbWUu
SU1BR0VcK1RFWFQ6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnSU1BR0UrVEVYVCc7Ci0gICAgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6
IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IEluZGlnbzsKLSAgICBmb250LXNpemU6IDEw
cHg7Ci0gICAgcGFkZGluZzogMXB4IDJweDsKLSAgICBtYXJnaW46IDAgMCAwIDNweDsKLSAgICBi
b3JkZXItcmFkaXVzOiA0cHg7Ci19Ci0KLS50ZXN0LW5hbWUuSU1BR0U6OmFmdGVyIHsKLSAgICBj
b250ZW50OiAnSU1BR0UnOwotICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgdGV4dC1kZWNv
cmF0aW9uOiBub25lOwotICAgIGNvbG9yOiB3aGl0ZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBN
aWRuaWdodEJsdWU7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7
Ci0gICAgbWFyZ2luOiAwIDAgMCAzcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0u
dGVzdC1uYW1lLlRJTUVPVVQ6OmFmdGVyIHsKLSAgICBjb250ZW50OiAnVElNRU9VVCc7Ci0gICAg
Zm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29s
b3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQtY29sb3I6IERhcmtHb2xkZW5Sb2Q7Ci0gICAgZm9u
dC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFweCAycHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAz
cHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4OwotfQotCi0udGVzdC1uYW1lLlRFWFQ6OmFmdGVy
IHsKLSAgICBjb250ZW50OiAnVEVYVCc7Ci0gICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKLSAgICB0
ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGJhY2tncm91bmQt
Y29sb3I6IERvZGdlckJsdWU7Ci0gICAgZm9udC1zaXplOiAxMHB4OwotICAgIHBhZGRpbmc6IDFw
eCAycHg7Ci0gICAgbWFyZ2luOiAwIDAgMCAzcHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNHB4Owot
fQotCi0udGVzdC1uYW1lLkNSQVNIOjphZnRlciB7Ci0gICAgY29udGVudDogJ0NSQVNIJzsKLSAg
ICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBj
b2xvcjogd2hpdGU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogVG9tYXRvOwotICAgIGZvbnQtc2l6
ZTogMTBweDsKLSAgICBwYWRkaW5nOiAxcHggMnB4OwotICAgIG1hcmdpbjogMCAwIDAgM3B4Owot
ICAgIGJvcmRlci1yYWRpdXM6IDRweDsKLX0KLQotLyoqKiByZXN1bHRzLXZpZXcgKioqLwotCi0v
KiBGSVhNRTogUmVtb3ZlIHRoaXMgb25jZSBnYXJkZW4tby1tYXRpYyBzd2l0Y2hlcyB0byB0aGUg
bmV3IHJlc3VsdHMgdmlldy4gKi8KLS5vbGQtcmVzdWx0cy12aWV3IHsKLSAgICBkaXNwbGF5OiBu
b25lOwotICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICBsZWZ0OiAwcHg7Ci0gICAgcmlnaHQ6IDBw
eDsKLSAgICB0b3A6IDI1JTsKLSAgICBib3R0b206IDBweDsKLX0KLQotLnJlc3VsdHMtdmlldyB7
Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTsKLX0KLQotLnJlc3VsdHMtdmlldyAudG9v
bGJhciB7Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNjNmM2YzY7Ci0gICAgYm9yZGVyLWJv
dHRvbTogMXB4IHNvbGlkICNjNmM2YzY7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnRvb2xiYXIgLnNl
bGVjdG9yIHsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0g
ICAgaGVpZ2h0OiAyOXB4OwotICAgIGxpbmUtaGVpZ2h0OiAyN3B4OwotICAgIG1hcmdpbjogMTFw
eCA2cHg7Ci0gICAgcGFkZGluZzogMCA4cHg7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnRlc3Qtc2Vs
ZWN0b3IgewotICAgIHdpZHRoOiA0MDBweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDZweDsKLX0KLQot
LnJlc3VsdHMtdmlldyAudG9vbGJhciAuYWN0aW9ucyB7Ci0gICAgZmxvYXQ6IHJpZ2h0OwotfQot
Ci0ucmVzdWx0cy1kZXRhaWwgdGQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwotfQot
Ci0udGV4dC1yZXN1bHQgewotICAgIGJvcmRlcjogbm9uZTsKLSAgICB3aWR0aDogMTAwJTsKLSAg
ICBoZWlnaHQ6IDQwMHB4OyAvKiBGSVhNRTogSG93IGRvIHdlIGdldCBhIHJlYXNvbmFibGUgaGVp
Z2h0IGhlcmU/ICovCi19Ci0KLS5pbWFnZS1yZXN1bHQgewotICAgIHdpZHRoOiAxMDAlOwotICAg
IGhlaWdodDogYXV0bzsKLX0KLQotLyoqKiBwYXJ0eXRpbWUgKioqLwotCi0ucGFydHl0aW1lIHsK
LSAgICBkaXNwbGF5OiBub25lOwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L1Rlc3RGYWlsdXJlcy9zdHlsZXMvbm90aWZpY2F0aW9ucy5jc3MKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL3N0eWxlcy9ub3RpZmljYXRpb25zLmNzcwkocmV2aXNpb24gMjY5MDQyKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9ub3RpZmljYXRpb25zLmNzcwkobm9uZXhpc3RlbnQp
CkBAIC0xLDIzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qIEZJWE1FOiBUaGlzIHNob3VsZCBy
ZWFsbHkgYmUgaW4gYWN0aW9ucy5jc3MuICovCi11bC5hY3Rpb25zPmxpIHsKLSAgICBkaXNwbGF5
OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLW9sLm5vdGlmaWNhdGlvbnMgewotICAgIGxpc3Qtc3R5bGU6
IG5vbmU7Ci0gICAgcGFkZGluZzogMDsKLX0KLQotb2wubm90aWZpY2F0aW9ucyB1bCB7Ci0gICAg
bGlzdC1zdHlsZTogbm9uZTsKLSAgICBwYWRkaW5nOiAwOwotfQotCi1vbC5ub3RpZmljYXRpb25z
PmxpIHsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBw
YWRkaW5nOiAxMHB4OwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgYm9yZGVyLXRv
cDogMXB4IHNvbGlkIEdyYXk7Ci19Ci0KLW9sLm5vdGlmaWNhdGlvbnMgZGl2LmhvdyB7Ci0gICAg
d2lkdGg6IDM1MHB4OwotfQotCi1vbC5ub3RpZmljYXRpb25zIHRpbWUgewotICAgIGRpc3BsYXk6
IGJsb2NrOwotICAgIGNvbG9yOiAjODg4OwotICAgIHBhZGRpbmc6IDAgMCAyMHB4IDA7Ci19Ci0K
LW9sLm5vdGlmaWNhdGlvbnMgZGl2LndoYXQgewotICAgIGRpc3BsYXk6IC13ZWJraXQtYm94Owot
ICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7Ci0gICAgcGFkZGluZzogMCAwIDAgMTBw
eDsKLSAgICAtd2Via2l0LWJveC1mbGV4OiAxOwotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5s
aSBkaXYud2hhdCB1bC5lZmZlY3RzPmxpLmJ1aWxkZXIgewotICAgICAgICBkaXNwbGF5OiBpbmxp
bmU7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogNXB4OwotICAgIH0KLQotb2wubm90aWZpY2F0aW9u
cyB1bC5jYXVzZXM+bGksIG9sLm5vdGlmaWNhdGlvbnMgZGl2LnByb2JsZW0gewotICAgIGRpc3Bs
YXk6IC13ZWJraXQtYm94OwotfQotCi1vbC5ub3RpZmljYXRpb25zIHVsLmNhdXNlcyBkaXYuZGVz
Y3JpcHRpb24sIG9sLm5vdGlmaWNhdGlvbnMgZGl2LnByb2JsZW0gdWwuZWZmZWN0cyB7Ci0gICAg
LXdlYmtpdC1ib3gtZmxleDogMTsKLX0KLQotb2wubm90aWZpY2F0aW9ucz5saSBkaXYucHJvYmxl
bSB7Ci0gICAgcGFkZGluZy1ib3R0b206IDEwcHg7Ci19Ci0KLSAgICBvbC5ub3RpZmljYXRpb25z
PmxpIGRpdi5wcm9ibGVtPnVsLmFjdGlvbnMgewotICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47
Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saTpob3ZlciBkaXYucHJvYmxlbT51bC5h
Y3Rpb25zIHsKLSAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKLSAgICB9Ci0KLSAgICBvbC5u
b3RpZmljYXRpb25zPmxpIHRhYmxlLmZhaWx1cmVzIHsKLSAgICAgICAgb3BhY2l0eTogMC4yOwot
ICAgICAgICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC41czsKLSAgICB9Ci0KLSAgICBv
bC5ub3RpZmljYXRpb25zPmxpOmhvdmVyIHRhYmxlLmZhaWx1cmVzIHsKLSAgICAgICAgb3BhY2l0
eTogMTsKLSAgICB9Ci0KLW9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPnVsLmFjdGlv
bnMgewotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk+ZGl2LmRlc2Ny
aXB0aW9uIHsKLSAgICAgICAgcGFkZGluZzogMCAxMHB4IDVweCAwOwotICAgICAgICBkaXNwbGF5
OiAtd2Via2l0LWJveDsKLSAgICB9Ci0KLSAgICAgICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5j
YXVzZXM+bGk+ZGl2LmRlc2NyaXB0aW9uPmEgewotICAgICAgICAgICAgcGFkZGluZzogNXB4IDEw
cHggNXB4IDEwcHg7Ci0gICAgICAgICAgICBtYXJnaW46IC01cHggMTBweCAtMnB4IDA7Ci0gICAg
ICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUt
YmxvY2s7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNl
cz5saTpob3Zlcj5kaXYuZGVzY3JpcHRpb24+YSB7Ci0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiAjNTU1OwotICAgICAgICAgICAgY29sb3I6IFdoaXRlOwotICAgICAgICB9Ci0KLSAgICAg
ICAgb2wubm90aWZpY2F0aW9ucz5saSB1bC5jYXVzZXM+bGk6aG92ZXI+ZGl2LmRlc2NyaXB0aW9u
PmE6OmFmdGVyIHsKLSAgICAgICAgICAgIGNvbnRlbnQ6ICcnOwotICAgICAgICAgICAgd2lkdGg6
IDA7Ci0gICAgICAgICAgICBoZWlnaHQ6IDA7Ci0gICAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7
Ci0gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgICAgICBtYXJnaW4tbGVm
dDogMTBweDsKLSAgICAgICAgICAgIGJvcmRlci10b3A6IDVweCBzb2xpZCBXaGl0ZTsKLSAgICAg
ICAgICAgIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzU1NTsKLSAgICAgICAgICAgIGJvcmRlci1i
b3R0b206IDVweCBzb2xpZCBXaGl0ZTsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNh
dGlvbnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuIHsKLSAgICAgICAgICAg
IHBhZGRpbmc6IDAgMTBweCAwIDA7Ci0gICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKLSAgICAg
ICAgICAgIGN1cnNvcjogZGVmYXVsdDsKLSAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25l
OwotICAgICAgICAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsKLSAgICAgICAgfQotCi0gICAgICAg
IG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNw
YW4uYXV0aG9yIHsKLSAgICAgICAgICAgIHBhZGRpbmc6IDAgMCAwIDVweDsKLSAgICAgICAgICAg
IGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlv
bnM+bGkgdWwuY2F1c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4ucmV2aWV3ZXIgewot
ICAgICAgICAgICAgY29sb3I6IEdyYXk7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmlj
YXRpb25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVzY3JpcHRpb24+c3Bhbj5zcGFuLmJ1Z0lEOjpi
ZWZvcmUgewotICAgICAgICAgICAgY29udGVudDogJ2J1ZyAnOwotICAgICAgICAgICAgcGFkZGlu
Zy1sZWZ0OiA4cHg7Ci0gICAgICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVs
LmNhdXNlcz5saT5kaXYuZGVzY3JpcHRpb24+c3Bhbj5zcGFuLmJ1Z0lEPmEgewotICAgICAgICAg
ICAgY3Vyc29yOiBoYW5kOwotICAgICAgICAgICAgcG9pbnRlci1ldmVudHM6IGF1dG87Ci0gICAg
ICAgIH0KLQotICAgICAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saT5kaXYuZGVz
Y3JpcHRpb24+c3Bhbj5zcGFuLnJldmlld2VyOjpiZWZvcmUgewotICAgICAgICAgICAgY29udGVu
dDogJyAoJzsKLSAgICAgICAgfQotCi0gICAgICAgIG9sLm5vdGlmaWNhdGlvbnM+bGkgdWwuY2F1
c2VzPmxpPmRpdi5kZXNjcmlwdGlvbj5zcGFuPnNwYW4ucmV2aWV3ZXI6OmFmdGVyIHsKLSAgICAg
ICAgICAgIGNvbnRlbnQ6ICcpJzsKLSAgICAgICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucz5s
aSB1bC5jYXVzZXM+bGk+dWwuYWN0aW9ucyB7Ci0gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsK
LSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saTpob3Zlcj51bC5h
Y3Rpb25zIHsKLSAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKLSAgICB9Ci0KLSAgICBvbC5u
b3RpZmljYXRpb25zPmxpIHVsLmNhdXNlcz5saSBsaSB7Ci0gICAgICAgIHBhZGRpbmc6IDEwcHgg
MCAwIDA7Ci0gICAgICAgIGRpc3BsYXk6IGlubGluZTsKLSAgICB9Ci0KLW9sLm5vdGlmaWNhdGlv
bnMgdGFibGUuZmFpbHVyZXMgewotICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci0gICAg
dGFibGUtbGF5b3V0OiBmaXhlZDsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgd2lkdGg6IDM1
MHB4OwotfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0aGVhZCB0ciB0
ZDpmaXJzdC1jaGlsZCB7Ci0gICAgICAgIHZpc2liaWxpdHk6IGhpZGRlbjsKLSAgICB9Ci0KLSAg
ICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHsKLSAgICAgICAgYm9y
ZGVyLXRvcDogMXB4IHNvbGlkICNlZWU7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0
YWJsZS5mYWlsdXJlcyB0Ym9keSB0ZDpmaXJzdC1jaGlsZCB7Ci0gICAgICAgIHdpZHRoOiAyMCU7
Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0Ym9keSB0ZCB7
Ci0gICAgICAgIHdpZHRoOiA0MCU7Ci0gICAgICAgIHBhZGRpbmc6IDJweDsKLSAgICB9Ci0KLSAg
ICBvbC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxk
IHsKLSAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmlj
YXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyIHRkOmZpcnN0LWNoaWxkIHNwYW4gewotICAg
ICAgICBwYWRkaW5nOiAwIDJweDsKLSAgICB9Ci0KLSAgICBvbC5ub3RpZmljYXRpb25zIHRhYmxl
LmZhaWx1cmVzIHRib2R5IHRyLlRJTUVPVVQgdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAg
IGJhY2tncm91bmQtY29sb3I6ICNmZmZjNmM7Ci0gICAgfQotCi0gICAgb2wubm90aWZpY2F0aW9u
cyB0YWJsZS5mYWlsdXJlcyB0Ym9keSB0ci5URVhUIHRkOmZpcnN0LWNoaWxkIHNwYW4gewotICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTk4MDgwOwotICAgIH0KLQotICAgIG9sLm5vdGlmaWNh
dGlvbnMgdGFibGUuZmFpbHVyZXMgdGJvZHkgdHIuQ1JBU0ggdGQ6Zmlyc3QtY2hpbGQgc3BhbiB7
Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmMzNDM7Ci0gICAgfQotCi0gICAgb2wubm90
aWZpY2F0aW9ucyB0YWJsZS5mYWlsdXJlcyB0Ym9keSB0ci5BVURJTyB0ZDpmaXJzdC1jaGlsZCBz
cGFuIHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2JmZGZmZjsKLSAgICB9Ci0KLSAgICBv
bC5ub3RpZmljYXRpb25zIHRhYmxlLmZhaWx1cmVzIHRib2R5IHRyLklNQUdFIHRkOmZpcnN0LWNo
aWxkIHNwYW4gewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjlmOwotICAgIH0KLQotICAg
IG9sLm5vdGlmaWNhdGlvbnMgdGFibGUuZmFpbHVyZXMgdGJvZHkgdHIuSU1BR0VcK1RFWFQgdGQ6
Zmlyc3QtY2hpbGQgc3BhbiB7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5NmY7Ci0gICAg
fQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9vbmViYXIuY3NzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvb25lYmFyLmNzcwkocmV2aXNpb24gMjY5MDQyKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL3N0eWxlcy9vbmViYXIuY3NzCShub25leGlzdGVudCkKQEAgLTEsNzIg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKgotICogV2UgbW9zdGx5IHVzZSB0aGUgc3R5bGVzIGZy
b20galF1ZXJ5IFVJLCBidXQgd2UgY2xlYXIgc29tZSBvZiB0aGVtIHRvCi0gKiBtYWtlIHRoZSBV
SSBzbGlnaHRseSB0aWdodGVyLgotICovCi0KLSNvbmViYXIgewotICAgIGJvcmRlcjogbm9uZTsK
LSAgICBwYWRkaW5nOiAwcHg7Ci0gICAgbWFyZ2luLWJvdHRvbTogMTAwcHg7Ci19Ci0KLSNvbmVi
YXIgLnVpLXdpZGdldC1oZWFkZXIgewotICAgIGJvcmRlci10b3A6IG5vbmU7Ci0gICAgYm9yZGVy
LXJpZ2h0OiBub25lOwotICAgIGJvcmRlci1sZWZ0OiBub25lOwotICAgIGJvcmRlci1yYWRpdXM6
IDBweDsKLX0KLQotI29uZWJhciAjcGxhdGZvcm0tcGlja2VyIHsKLSAgICBmbG9hdDogcmlnaHQ7
Ci0gICAgbWFyZ2luLXRvcDogOHB4OwotICAgIG1hcmdpbi1yaWdodDogOHB4OwotICAgIGZvbnQt
c2l6ZTogbGFyZ2VyOwotfQotCi0jdW5leHBlY3RlZCB7Ci0gICAgbWluLWhlaWdodDogNTUwcHg7
Ci19Ci0KLSNvbmViYXIucGFydHl0aW1lICN1bmV4cGVjdGVkIHsKLSAgICBiYWNrZ3JvdW5kOiB1
cmwoLi4vaW1hZ2VzL3BhcnR5dGltZS5naWYpIGNlbnRlciBjZW50ZXIgbm8tcmVwZWF0OwotfQot
Ci0jY2hyb21pdW0tZ3Rlc3RzIGlmcmFtZSB7Ci0gICAgYm9yZGVyOiAwOwotICAgIGhlaWdodDog
MjBweDsKLX0KLQotI2Nocm9taXVtLWd0ZXN0cyB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwot
ICAgIHRvcDogMTBweDsKLSAgICByaWdodDogNXB4OwotfQotCi0jZ3Rlc3QtbGFiZWwgewotICAg
IHZlcnRpY2FsLWFsaWduOiB0b3A7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3Bl
cmYuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGVyZi5jc3MJKHJl
dmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcGVyZi5jc3MJKG5vbmV4
aXN0ZW50KQpAQCAtMSw0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwZXJmLXZpZXcgewotICAg
IGhlaWdodDogMTAwJTsKLX0KLQotI3BlcmYtdmlldyA+IC50aXRsZS1iYXIgewotICAgIGhlaWdo
dDogMmVtOwotfQotCi0jcGVyZi12aWV3ID4gLm5vdGlmaWNhdGlvbnMgewotICAgIG1hcmdpbjog
MDsKLX0KLQotI3BlcmYtdmlldyAuYWN0aW9ucywKLSNwZXJmLXZpZXcgLnBvcC1vdXQgewotICAg
IGZsb2F0OiByaWdodDsKLSAgICBtYXJnaW46IDA7Ci19Ci0KLSNwZXJmLXZpZXcgPiBpZnJhbWUg
ewotICAgIHdpZHRoOiAxMDAlOwotICAgIGJvcmRlcjogMDsKLSAgICAvKiBGSVhNRTogQWRkIHBl
cmYtZGFzaGJvYXJkLXNpZGUgcG9zdE1lc3NhZ2UgY2FsbHMgc28gdGhlIGlmcmFtZSBjYW4gc2l6
ZSB0byBpdCdzIGNvbnRlbnRzLiAqLwotICAgIGhlaWdodDogLXdlYmtpdC1jYWxjKDEwMCUgLSAy
ZW0pOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJl
cy9zdHlsZXMvcGl4ZWx6b29tZXIuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9z
dHlsZXMvcGl4ZWx6b29tZXIuY3NzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVy
ZXMvc3R5bGVzL3BpeGVsem9vbWVyLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDYzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotLnBpeGVsLXpvb20tY29udGFpbmVyIHsKLSAgICBwb3NpdGlvbjogZml4
ZWQ7Ci0gICAgdG9wOiAwOwotICAgIGxlZnQ6IDA7Ci0gICAgd2lkdGg6IDk2JTsKLSAgICBtYXJn
aW46IDEwcHg7Ci0gICAgcGFkZGluZzogMTBweDsKLSAgICBkaXNwbGF5OiAtd2Via2l0LWJveDsK
LSAgICBkaXNwbGF5OiAtbW96LWJveDsKLSAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBzaWx2ZXI7Ci0gICAgYm9yZGVyLXJhZGl1czogMjBweDsKLSAgICBi
b3JkZXI6IDFweCBzb2xpZCBncmF5OwotICAgIGJveC1zaGFkb3c6IDAgMCA1cHggcmdiYSgwLCAw
LCAwLCAwLjc1KTsKLX0KLQotLnBpeGVsLXpvb20tY29udGFpbmVyID4gKiB7Ci0gICAgLXdlYmtp
dC1ib3gtZmxleDogMTsKLSAgICAtbW96LWJveC1mbGV4OiAxOwotICAgIGJvcmRlcjogMXB4IHNv
bGlkIGJsYWNrOwotICAgIG1hcmdpbjogNHB4OwotICAgIG92ZXJmbG93OiBoaWRkZW47Ci0gICAg
YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci19Ci0KLS5waXhlbC16b29tLWNvbnRhaW5lciAuc2Nh
bGVkLWltYWdlLWNvbnRhaW5lciB7Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIG92ZXJm
bG93OiBoaWRkZW47Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiA0MDBweDsKLX0KLQot
LnNjYWxlZC1pbWFnZS1jb250YWluZXIgPiBpbWcgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsK
LSAgICB0b3A6IDA7Ci0gICAgbGVmdDogMDsKLSAgICBpbWFnZS1yZW5kZXJpbmc6IC13ZWJraXQt
b3B0aW1pemUtY29udHJhc3Q7Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvc3R5bGVzL3Jlc3Vs
dHMuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcmVzdWx0cy5jc3MJ
KHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdHlsZXMvcmVzdWx0cy5jc3MJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0ubm9uLWFjdGlv
bi1idXR0b24sIC5yZXN1bHRzLXZpZXcgdWwuYWN0aW9ucywgLnVpLWRpYWxvZyB1bC5hY3Rpb25z
IHsKLSAgICBmbG9hdDogcmlnaHQ7Ci0gICAgbWFyZ2luOiAwOwotICAgIHBhZGRpbmc6IDVweCAw
cHg7Ci0gICAgbGlzdC1zdHlsZTogbm9uZTsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19
Ci0KLS5ub24tYWN0aW9uLWJ1dHRvbiB7Ci0gICAgcGFkZGluZzogNXB4OwotfQotCi0ucmVzdWx0
cy12aWV3IHVsLmFjdGlvbnMucmViYXNlbGluZS1hY3Rpb24gewotICAgIGZsb2F0OiBub25lOwot
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICByaWdodDogNHB4OwotICAgIHRvcDogN3B4Owot
ICAgIHBhZGRpbmc6IDA7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgdWwuYWN0aW9ucyBsaSwgLnVpLWRp
YWxvZyB1bC5hY3Rpb25zIGxpIHsKLSAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Ci19Ci0KLS5y
ZXN1bHRzLXZpZXcgaDMgdWwuYWN0aW9ucyB7Ci0gICAgcGFkZGluZzogMnB4IDBweDsKLX0KLQot
LnJlc3VsdHMtdmlldyBoMyB1bC5hY3Rpb25zIHsKLSAgICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19
Ci0KLS5yZXN1bHRzLXZpZXcgaDMudWktc3RhdGUtYWN0aXZlIHVsLmFjdGlvbnMgewotICAgIHZp
c2liaWxpdHk6IHZpc2libGU7Ci19Ci0KLS51aS10YWJzIC51aS10YWJzLXBhbmVsLnJlc3VsdHMt
ZGV0YWlsIHsKLSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0KLS5yZXN1bHRzLWdyaWQgdGFibGUgewot
ICAgIHRhYmxlLWxheW91dDogZml4ZWQ7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgYm9yZGVyLWNv
bGxhcHNlOiBjb2xsYXBzZTsKLX0KLQotLnJlc3VsdHMtZ3JpZCB0YWJsZSB0ZCwgLnJlc3VsdHMt
dmlldyB0YWJsZSB0aCB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAgICB2ZXJ0aWNhbC1hbGln
bjogdG9wOwotfQotCi0ucmVzdWx0cy1ncmlkIHRhYmxlIHRoIHsKLSAgICBwYWRkaW5nOiAzcHg7
Ci0gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNEREQ7Ci0gICAgYm9yZGVyLWJvdHRvbTogMXB4
IHNvbGlkICNEREQ7Ci19Ci0KLS5yZXN1bHRzLWdyaWQgLnRleHQtcmVzdWx0IHsKLSAgICBib3Jk
ZXI6IG5vbmU7Ci0gICAgd2lkdGg6IDEwMCU7Ci0gICAgaGVpZ2h0OiA0MDBweDsgLyogRklYTUU6
IEhvdyBkbyB3ZSBnZXQgYSByZWFzb25hYmxlIGhlaWdodCBoZXJlPyAqLwotfQotCi0ucmVzdWx0
cy1ncmlkIC5pbWFnZS1yZXN1bHQgewotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogYXV0
bzsKLX0KLQotLnJlc3VsdHMtdmlldyAudG9wLXBhbmVsIHsKLSAgICBtYXgtaGVpZ2h0OiAyMCU7
Ci0gICAgb3ZlcmZsb3c6IGF1dG87Ci0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgIGJvcmRl
cjogMXB4IHNvbGlkICNFRUU7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLnJlc2l6ZS1oYW5kbGUgewot
ICAgIGhlaWdodDogNXB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLSAgICAtd2Via2l0LXVz
ZXItc2VsZWN0OiBub25lOwotICAgIGxpbmUtaGVpZ2h0OiA1cHg7Ci0gICAgY3Vyc29yOiBucy1y
ZXNpemU7Ci0gICAgZm9udC1zaXplOiA1cHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAg
cGFkZGluZzogMXB4OwotfQotCi0ucmVzdWx0cy12aWV3IC5yZXNpemUtaGFuZGxlOmJlZm9yZSB7
Ci0gICAgY29udGVudDogJ3x8fCc7Ci19Ci0KLS5yZXN1bHRzLXZpZXcgLmxpbmstdGl0bGUsCi0u
cmVzdWx0cy12aWV3IC5hY3RpdmUgLm5vbi1saW5rLXRpdGxlIHsKLSAgICBkaXNwbGF5OiBub25l
OwotfQotCi0ucmVzdWx0cy12aWV3IC5ub24tbGluay10aXRsZSwKLS5yZXN1bHRzLXZpZXcgLmFj
dGl2ZSAubGluay10aXRsZSB7Ci0gICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwotfQotCi0ucmVz
dWx0cy12aWV3IGgzIHsKLSAgICBmb250LXNpemU6IDE0cHg7Ci0gICAgZm9udC13ZWlnaHQ6IG5v
cm1hbDsKLSAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0RERDsKLSAgICBtYXJnaW46IDA7Ci0g
ICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi0ucmVzdWx0cy12aWV3IGgzOm5vdCguYWN0aXZlKTpo
b3ZlciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRTsKLX0KLQotLnJlc3VsdHMtdmlldyAu
YWN0aXZlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjQ0NDOwotfQotCi0vKiBDU1MgcGVyY2Vu
dGFnZXMgaW4gc3RhbmRhcmRzLW1vZGUgYXJlIGR1bWIuIFlvdSBuZWVkIHRvIGhhdmUgYSBwZXJj
ZW50YWdlIG9yIGZpeGVkIGhlaWdodAotICAgYWxsIHRoZSB3YXkgdXAgdGhlIHRyZWUgaW4gb3Jk
ZXIgdG8gaGF2ZSBwZXJjZW50YWdlcyByZXNvbHZlLiAqLwotaHRtbCwgYm9keSwgI29uZWJhciwg
LnJlc3VsdHMtdmlldywgLnRlc3Qtc2VsZWN0b3IgewotICAgIGhlaWdodDogMTAwJTsKLX0KLQot
I3Jlc3VsdHMsICNwZXJmIHsKLSAgICAvKiBGSVhNRTogV2UgcmVhbGx5IHNob3VsZCB1c2UgZmxl
eGJveCBzbyB3ZSBkb24ndCBoYXZlIHRvIGRvIHRoaXMuIEJ1dCB0aGF0IHJlcXVpcmVzIHJlc3Ry
dWN0dXJpbmcgdGhlIERPTSBhIGJpdC4gKi87Ci0gICAgaGVpZ2h0OiAtd2Via2l0LWNhbGMoMTAw
JSAtIDM5cHgpOwotICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Ci0gICAgLyogUG9zaXRpb24g
cmVsYXRpdmUgc28gdGhhdCBuZXN0ZWQgcGVyY2VudGFnZXMgc2l6ZSB0byB0aGlzIGVsZW1lbnQu
ICovCi0gICAgcG9zaXRpb246IHJlbGF0aXZlOwotfQotCi0vKioqIHN0YXR1cyBjb25zb2xlICoq
Ki8KLS5zdGF0dXMgewotICAgIHBvc2l0aW9uOiBmaXhlZDsKLSAgICBib3R0b206IDA7Ci0gICAg
bGVmdDogMDsKLSAgICByaWdodDogMDsKLSAgICBoZWlnaHQ6IDEwMHB4OwotICAgIGJhY2tncm91
bmQtY29sb3I6IHdoaXRlOwotICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCBncmF5OwotICAgIC13
ZWJraXQtYm94LXNoYWRvdzogMHB4IC0ycHggMTBweCBncmF5OwotICAgIG92ZXJmbG93OiBhdXRv
OwotICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgcGFkZGluZzogNHB4OwotfQotCi0uc3Rh
dHVzIC5hY3Rpb25zLCAuc3RhdHVzIC5wcm9jZXNzLXRleHQgewotICAgIHBvc2l0aW9uOiBmaXhl
ZDsKLSAgICBib3R0b206IDA7Ci0gICAgcmlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luOiA0cHg7Ci19
Ci0KLS5wcm9jZXNzaW5nIC5hY3Rpb25zIHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi0ucHJv
Y2Vzc2luZyAucHJvY2Vzcy10ZXh0IHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotLnByb2Nl
c3MtdGV4dCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLnN0YXR1cy1jb250ZW50IHsKLSAg
ICBib3JkZXItYm90dG9tOiAxcHggZGFzaGVkOwotICAgIG1hcmdpbi1ib3R0b206IDFlbTsKLX0K
LQotLnN0YXR1cy1jb250ZW50Omxhc3QtY2hpbGQgewotICAgIGJvcmRlci1ib3R0b206IDA7Ci0g
ICAgbWFyZ2luLWJvdHRvbTogMDsKLX0KLQotLmZsYWtpbmVzcy1pZnJhbWUsIC5mbGFraW5lc3Mt
aWZyYW1lLXBsYWNlaG9sZGVyIHsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgaGVpZ2h0OiAwOwot
ICAgIHdpZHRoOiAxMDAlOwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zdW1tYXJ5LW1vY2suaHRtbAkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3N1bW1hcnktbW9jay5odG1sCShub25l
eGlzdGVudCkKQEAgLTEsNTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWw+Ci08IS0tCi1Db3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLVRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotVGhlIGZhdmlj
b25zIGFyZSBmcm9tIHRoZSBhd2Vzb21lIGZhbWZhbWZhbS5jb20sIHdoaWNoIGlzIHRoZSB3ZWJz
aXRlIG9mIE1hcmsKLUphbWVzLCBhIHdlYiBkZXZlbG9wZXIgZnJvbSBCaXJtaW5naGFtLCBVSy4K
LS0tPgotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5Nb2NrIFN1bW1hcnkgVmlldzwvdGl0bGU+Ci08
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlcy9jb21tb24uY3NzIj4KLTxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGVzL3Jlc3VsdHMuY3NzIj4KLTxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0ic3R5bGVzL25vdGlmaWNhdGlvbnMuY3NzIj4KLTwvaGVhZD4KLTxib2R5
PgotPHNjcmlwdCBzcmM9Imh0dHBzOi8vd2Via2l0Lm9yZy9hamF4L2xpYnMvanF1ZXJ5L2pxdWVy
eS0xLjYuMi5taW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvY29uZmlnLmpz
Ij48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL2Jhc2UuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvbmV0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRz
L1RyYWMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvQnVnemlsbGEuanMiPjwv
c2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvYnVpbGRlcnMuanMiPjwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9InNjcmlwdHMvY2hlY2tvdXQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNj
cmlwdHMvcmVzdWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy91aS5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9tb2RlbC5qcyI+PC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0ic2NyaXB0cy91aS9hY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJz
Y3JpcHRzL3VpL2ZhaWx1cmVzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJzY3JpcHRzL3Vp
L25vdGlmaWNhdGlvbnMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9InNjcmlwdHMvdWkvcmVz
dWx0cy5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9jb250cm9sbGVycy5qcyI+
PC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0ic2NyaXB0cy9zdW1tYXJ5LW1vY2suanMiPjwvc2NyaXB0
PgotPC9ib2R5PgotPC9odG1sPgoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L3N1bW1hcnktbW9jay5odG1sCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MSArMCwwICMjCi1MRgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9i
dWlsZGJvdC5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvYnVpbGRib3QuY3NzCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9idWlsZGJvdC5jc3MJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODIgKzAsMCBAQAot
Ym9keSB7Ci0JbWFyZ2luLWJvdHRvbTo1MHB4OwotfQotCi1ib2R5LCB0ZCB7Ci0JZm9udC1mYW1p
bHk6IFZlcmRhbmEsIEN1cnNvcjsKLQlmb250LXNpemU6IDEwcHg7Ci0JZm9udC13ZWlnaHQ6IGJv
bGQ7Ci19Ci0KLWE6bGluayxhOnZpc2l0ZWQsYTphY3RpdmUgewotCWNvbG9yOiAjNDQ0OwotfQot
Ci1hOmhvdmVyIHsKLQljb2xvcjogIzAwMDAwMDsKLX0KLQotdGFibGUgewotCWJvcmRlci1zcGFj
aW5nOiAxcHggMXB4OwotfQotCi10YWJsZSB0ZCB7Ci0JcGFkZGluZzogM3B4IDBweCAzcHggMHB4
OwotCXRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLlByb2plY3QgewotCXdpZHRoOiAxMDBweDsK
LX0KLQotLkxhc3RCdWlsZCwgLkFjdGl2aXR5IHsKLQlwYWRkaW5nOiAwIDAgMCA0cHg7Ci19Ci0K
LS5MYXN0QnVpbGQsIC5BY3Rpdml0eSwgLkJ1aWxkZXIsIC5CdWlsZFN0ZXAgewotICAgICAgICB3
aWR0aDogMTU1cHg7Ci0gICAgICAgIG1heC13aWR0aDogMTU1cHg7Ci19Ci0KLXRkLlRpbWUgewot
CWNvbG9yOiAjMDAwOwotCWJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwotCWJhY2tncm91
bmQtY29sb3I6ICNlZWU7Ci19Ci0KLXRkLkFjdGl2aXR5LCB0ZC5DaGFuZ2UsIHRkLkJ1aWxkZXIg
ewotCWNvbG9yOiAjMzMzMzMzOwotCWJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7Ci19Ci0KLXRk
LkNoYW5nZSB7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czog
NXB4OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQotdGQuRXZlbnQgewotCWNvbG9yOiAj
Nzc3OwotCWJhY2tncm91bmQtY29sb3I6ICNkZGQ7Ci0JYm9yZGVyLXJhZGl1czogNXB4OwotCS13
ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OwotCS1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotfQot
Ci10ZC5BY3Rpdml0eSB7Ci0JYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDsKLQktd2Via2l0
LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxl
ZnQ6IDEwcHg7Ci0JbWluLWhlaWdodDogMjBweDsKLQlwYWRkaW5nOiAycHggMCAycHggMDsKLX0K
LQotdGQuaWRsZSwgdGQud2FpdGluZywgdGQub2ZmbGluZSwgdGQuYnVpbGRpbmcgewotCWJvcmRl
ci10b3AtbGVmdC1yYWRpdXM6IDBweDsKLQktd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6
IDBweDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogMHB4OwotfQotCi0uTGFzdEJ1aWxk
IHsKLQlib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxl
ZnQtcmFkaXVzOiA1cHg7Ci0JLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLQlib3Jk
ZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotCS13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRp
dXM6IDVweDsKLQktbW96LWJvcmRlci1yYWRpdXMtdG9wcmlnaHQ6IDVweDsKLX0KLQotLyogQ29u
c29sZSB2aWV3IHN0eWxlcyAqLwotCi10ZC5EZXZSZXYgewotICAgICAgICBwYWRkaW5nOiA0cHgg
OHB4IDRweCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItdG9w
LWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1
czogNXB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNXB4OwotICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotICAgICAgICB3aWR0aDogMSU7Ci19Ci0KLXRkLkRl
dlJldkNvbGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4Owot
ICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAg
LW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDVweDsKLX0KLQotdGQuRGV2TmFtZSB7Ci0g
ICAgICAgIHBhZGRpbmc6IDRweCA4cHggNHB4IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7
Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgICAgIHdpZHRoOiAxJTsKLSAg
ICAgICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuRGV2U3RhdHVzIHsKLSAgICAgICAgcGFk
ZGluZzogNHB4IDRweCA0cHggNHB4OwotICAgICAgICBjb2xvcjogIzMzMzMzMzsKLSAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogI2VlZTsKLX0KLQotdGQuRGV2U2xhdmUgewotICAgICAgICBwYWRk
aW5nOiA0cHggNHB4IDRweCA0cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi10ZC5maXJzdCB7Ci0gICAgICAgIGJvcmRlci10
b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFk
aXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA1cHg7Ci19Ci0K
LXRkLmxhc3QgewotICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAg
ICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9y
ZGVyLXJhZGl1cy10b3ByaWdodDogNXB4OwotfQotCi10ZC5EZXZTdGF0dXNDYXRlZ29yeSB7Ci0g
ICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVz
OiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OwotICAgICAgICBib3JkZXIt
d2lkdGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci19Ci0KLXRkLkRldlN0YXR1
c0NvbGxhcHNlIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDVweDsKLSAg
ICAgICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAt
bW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6IDVweDsKLX0KLQotdGQuRGV2RGV0YWlscyB7
Ci0gICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgICAgIHBhZGRpbmc6IDhweCA4cHgg
OHB4IDhweDsKLSAgICAgICAgY29sb3I6ICMzMzMzMzM7Ci0gICAgICAgIGJhY2tncm91bmQtY29s
b3I6ICNlZWU7Ci0gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRkLkRldkNvbW1lbnQg
ewotICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgICAgICBwYWRkaW5nOiA4cHggOHB4
IDhweCA4cHg7Ci0gICAgICAgIGNvbG9yOiAjMzMzMzMzOwotICAgICAgICBib3JkZXItYm90dG9t
LXJpZ2h0LXJhZGl1czogNXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQt
cmFkaXVzOiA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4
OwotICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgICAgIC13ZWJr
aXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAgICAgICAtbW96LWJvcmRlci1y
YWRpdXMtYm90dG9tbGVmdDogNXB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwot
ICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi10ZC5BbHQgewotICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjQ0NDQ0NDOwotfQotCi0ubGVnZW5kIHsKLSAgICAgICAgYm9yZGVyLXJhZGl1
czogNXB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAgICAgLW1v
ei1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgbWF4
LXdpZHRoOiAxMDBweDsKLSAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7Ci0gICAgICAgIHBhZGRp
bmc6IDJweCAycHggMnB4IDJweDsKLSAgICAgICAgaGVpZ2h0OjE0cHg7Ci0gICAgICAgIHdoaXRl
LXNwYWNlOm5vd3JhcDsKLX0KLQotLkRldlN0YXR1c0JveCB7Ci0gICAgICAgIHRleHQtYWxpZ246
Y2VudGVyOwotICAgICAgICBoZWlnaHQ6MjBweDsKLSAgICAgICAgcGFkZGluZzowIDJweDsKLSAg
ICAgICAgbGluZS1oZWlnaHQ6MDsKLSAgICAgICAgd2hpdGUtc3BhY2U6bm93cmFwOwotfQotCi0u
RGV2U3RhdHVzQm94IGEgewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXIt
d2lkdGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1y
YWRpdXM6IDRweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAg
IC1tb3otYm9yZGVyLXJhZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAg
ICB3aWR0aDo5MCU7Ci0gICAgICAgIGhlaWdodDoyMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoy
MHB4OwotICAgICAgICBtYXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBh
dXRvOwotfQotCi0uRGV2U2xhdmVCb3ggewotICAgICAgICB0ZXh0LWFsaWduOmNlbnRlcjsKLSAg
ICAgICAgaGVpZ2h0OjEwcHg7Ci0gICAgICAgIHBhZGRpbmc6MCAycHg7Ci0gICAgICAgIGxpbmUt
aGVpZ2h0OjA7Ci0gICAgICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKLX0KLQotLkRldlNsYXZlQm94
IGEgewotICAgICAgICBvcGFjaXR5OiAwLjg1OwotICAgICAgICBib3JkZXItd2lkdGg6MXB4Owot
ICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsK
LSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIC1tb3otYm9yZGVy
LXJhZGl1czogNHB4OwotICAgICAgICBkaXNwbGF5OmJsb2NrOwotICAgICAgICB3aWR0aDo5MCU7
Ci0gICAgICAgIGhlaWdodDoxMHB4OwotICAgICAgICBsaW5lLWhlaWdodDoyMHB4OwotICAgICAg
ICBtYXJnaW4tbGVmdDogYXV0bzsKLSAgICAgICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwotfQotCi1h
Lm5vcm91bmQgewotICAgICAgICBib3JkZXItcmFkaXVzOiAwcHg7Ci0gICAgICAgIC13ZWJraXQt
Ym9yZGVyLXJhZGl1czogMHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDBweDsKLSAg
ICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAtOHB4OwotICAg
ICAgICBtYXJnaW4tYm90dG9tOiAtOHB4OwotICAgICAgICBoZWlnaHQ6IDM2cHg7Ci0gICAgICAg
IGJvcmRlci10b3Atd2lkdGg6IDA7Ci0gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Ci19
Ci0KLWEuYmVnaW4gewotICAgICAgICBib3JkZXItdG9wLXdpZHRoOjFweDsKLSAgICAgICAgcG9z
aXRpb246IHJlbGF0aXZlOwotICAgICAgICBtYXJnaW4tdG9wOiAwcHg7Ci0gICAgICAgIG1hcmdp
bi1ib3R0b206IC03cHg7Ci0gICAgICAgIGhlaWdodDogMjdweDsKLQlib3JkZXItdG9wLWxlZnQt
cmFkaXVzOiA0cHg7Ci0JLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAg
ICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA0cHg7Ci0JYm9yZGVyLXRvcC1yaWdodC1y
YWRpdXM6IDRweDsKLQktd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAg
ICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OwotfQotCi1hLmVuZCB7Ci0gICAg
ICAgIGJvcmRlci1ib3R0b20td2lkdGg6MXB4OwotICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7
Ci0gICAgICAgIG1hcmdpbi10b3A6IC03cHg7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206IDBweDsK
LSAgICAgICAgaGVpZ2h0OiAyN3B4OwotCWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsK
LQktd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDRweDsKLSAgICAgICAgLW1vei1i
b3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDRweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1
czogNHB4OwotCS13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAg
ICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7Ci19Ci0KLS5jZW50ZXJfYWxp
Z24gewotICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS5yaWdodF9hbGlnbiB7Ci0g
ICAgICAgIHRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ubGVmdF9hbGlnbiB7Ci0gICAgICAgIHRl
eHQtYWxpZ246IGxlZnQ7Ci19Ci0KLWRpdi5CdWlsZFdhdGVyZmFsbCB7Ci0JYm9yZGVyLXJhZGl1
czogN3B4OwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwotCS1tb3otYm9yZGVyLXJhZGl1
czogN3B4OwotICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIGxlZnQ6IDBweDsK
LSAgICAgICAgdG9wOiAwcHg7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Ci0g
ICAgICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAgICAgICAgZmxvYXQ6IGxlZnQ7Ci0g
ICAgICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgICAgIGJvcmRlci13aWR0aDogMXB4OwotICAgICAg
ICBib3JkZXItc3R5bGU6IHNvbGlkOwotfQotCi0vKiBMYXN0QnVpbGQsIEJ1aWxkU3RlcCBzdGF0
ZXMgKi8KLS5zdWNjZXNzIHsKLQljb2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAj
OGZkZjVmOwotICAgICAgICBib3JkZXItY29sb3I6ICM0Rjg1MzA7Ci19Ci0KLS5mYWlsdXJlIHsK
LQljb2xvcjogI0ZGRkZGRjsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZTk4MDgwOwotICAgICAgICBi
b3JkZXItY29sb3I6ICNBNzcyNzI7Ci19Ci0KLS53YXJuaW5ncyB7Ci0JY29sb3I6ICNGRkZGRkY7
Ci0JYmFja2dyb3VuZC1jb2xvcjogI2ZmYzM0MzsKLSAgICAgICAgYm9yZGVyLWNvbG9yOiAjQzI5
RDQ2OwotfQotCi0uZXhjZXB0aW9uLCB0ZC5vZmZsaW5lIHsKLQljb2xvcjogI0ZGRkZGRjsKLQli
YWNrZ3JvdW5kLWNvbG9yOiAjZTBiMGZmOwotICAgICAgICBib3JkZXItY29sb3I6ICNBQ0EwQjM7
Ci19Ci0KLS5zdGFydCwucnVubmluZywgdGQuYnVpbGRpbmcgewotCWNvbG9yOiAjNjY2NjY2Owot
CWJhY2tncm91bmQtY29sb3I6ICNmZmZjNmM7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogI0M1QzU2
RDsKLX0KLQotLnN0YXJ0IHsKLQlib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAxMHB4OwotCS13
ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLQktbW96LWJvcmRlci1yYWRp
dXMtYm90dG9tbGVmdDogMTBweDsKLQlib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsK
LQktd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4OwotCS1tb3otYm9yZGVy
LXJhZGl1cy1ib3R0b21yaWdodDogMTBweDsKLX0KLQotLm5vdHN0YXJ0ZWQgewotICAgICAgICBi
b3JkZXItd2lkdGg6MXB4OwotICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7Ci0gICAgICAgIGJv
cmRlci1jb2xvcjojYWFhOwotfQotCi10ZC5Qcm9qZWN0IGE6aG92ZXIsIHRkLnN0YXJ0IGE6aG92
ZXIgewotICAgICAgICBjb2xvcjogIzAwMDsKLX0KLQotLyogZ3JpZCBzdHlsZXMgKi8KLQotdGFi
bGUuR3JpZCB7Ci0gICAgICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Ci19Ci0KLXRhYmxl
LkdyaWQgdHIgdGQgewotICAgICAgICBwYWRkaW5nOiAwLjJlbTsKLSAgICAgICAgbWFyZ2luOiAw
cHg7Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotdGFibGUuR3JpZCB0ciB0ZC50
aXRsZSB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAlOwotICAgICAgICBib3JkZXItcmlnaHQ6IDFw
eCBncmF5IHNvbGlkOwotICAgICAgICBib3JkZXItYm90dG9tOiAxcHggZ3JheSBzb2xpZDsKLX0K
LQotdGFibGUuR3JpZCB0ciB0ZC5zb3VyY2VzdGFtcCB7Ci0gICAgICAgIGZvbnQtc2l6ZTogOTAl
OwotfQotCi10YWJsZS5HcmlkIHRyIHRkLmJ1aWxkZXIgewotICAgICAgICB0ZXh0LWFsaWduOiBy
aWdodDsKLSAgICAgICAgZm9udC1zaXplOiA5MCU7Ci19Ci0KLXRhYmxlLkdyaWQgdHIgdGQuYnVp
bGQgewotICAgICAgICBib3JkZXI6IDFweCBncmF5IHNvbGlkOwotfQpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0V4dGVybmFsL2RhdGVyYW5nZXBpY2tlci5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0V4dGVybmFsL2RhdGVyYW5nZXBpY2tlci5jc3MJKHJldmlzaW9uIDI2OTA0MikKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9FeHRlcm5hbC9kYXRlcmFuZ2VwaWNrZXIuY3NzCShub25leGlzdGVudCkKQEAg
LTEsMjEyICswLDAgQEAKLS5kYXRlLXBpY2tlci13cmFwcGVyDQotew0KLQlwb3NpdGlvbjphYnNv
bHV0ZTsNCi0Jei1pbmRleDoxOw0KLQlib3JkZXI6MXB4IHNvbGlkICNiZmJmYmY7DQotCWJhY2tn
cm91bmQ6bGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMC45NSkscmdiYSgyMzUsMjM1
LDIzNSwwLjk1KSk7DQotCXdpZHRoOjQyOHB4Ow0KLQlwYWRkaW5nOiA1cHggMTJweDsNCi0JZm9u
dC1zaXplOjEycHg7DQotCWxpbmUtaGVpZ2h0OjIwcHg7DQotICAgIGNvbG9yOnJnYigxNDUsIDEz
NSwgOTUpOw0KLSAgICBmb250LWZhbWlseToiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNhbnMtc2Vy
aWY7DQotCWJveC1zaGFkb3c6M3B4IDNweCAxMHB4IHJnYmEoMCwwLDAsMC41KTsNCi0JbGVmdDow
Ow0KLQlyaWdodDowOw0KLSAgICBtYXJnaW4tbGVmdDphdXRvOw0KLSAgICBtYXJnaW4tcmlnaHQ6
YXV0bzsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIuc2luZ2xlLWRhdGUgew0KLQl3aWR0aDph
dXRvOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlci5uby1zaG9ydGN1dHMgeyBwYWRkaW5nLWJv
dHRvbToxMnB4O30NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZm9vdGVyDQotew0KLQlmb250LXNp
emU6MTFweDsNCi0JcGFkZGluZy10b3A6IDNweDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIg
YSANCi17DQotCWNvbG9yOiByZ2IoMTA3LCAxODAsIDIxNCk7DQotCXRleHQtZGVjb3JhdGlvbjp1
bmRlcmxpbmU7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyDQotew0K
LQlib3JkZXI6MXB4IHNvbGlkICNiZmJmYmY7DQotCWJvcmRlci1yYWRpdXM6M3B4Ow0KLQliYWNr
Z3JvdW5kLWNvbG9yOiNmZmY7DQotCXBhZGRpbmc6NXB4Ow0KLQljdXJzb3I6ZGVmYXVsdDsNCi0J
cG9zaXRpb246cmVsYXRpdmU7DQotCV9vdmVyZmxvdzpoaWRkZW47DQotfQ0KLS5kYXRlLXBpY2tl
ci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlDQotew0KLQl3aWR0aDoxOTBweDsNCi0JZmxv
YXQ6bGVmdDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLm1vbnRoLXdyYXBwZXIgdGFibGUu
bW9udGgyDQotew0KLQl3aWR0aDoxOTBweDsNCi0JZmxvYXQ6cmlnaHQ7DQotfQ0KLS5kYXRlLXBp
Y2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIHRoLA0KLS5kYXRlLXBpY2tlci13cmFw
cGVyIC5tb250aC13cmFwcGVyIHRhYmxlIHRkDQotew0KLQl2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7
DQotCXRleHQtYWxpZ246Y2VudGVyOw0KLQlsaW5lLWhlaWdodDoxNHB4Ow0KLQltYXJnaW4gOiAw
cHg7DQotCXBhZGRpbmcgOiAwcHg7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13
cmFwcGVyIHRhYmxlIC5kYXkNCi17DQotCWhlaWdodDoxOXB4Ow0KLQlsaW5lLWhlaWdodDoxOXB4
Ow0KLQlmb250LXNpemU6MTJweDsNCi0JbWFyZ2luLWJvdHRvbToxcHg7DQotCWNvbG9yOiM5OTk7
DQotCWN1cnNvcjpkZWZhdWx0Ow0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3Jh
cHBlciB0YWJsZSBkaXYuZGF5Lmxhc3RNb250aCwNCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9u
dGgtd3JhcHBlciB0YWJsZSBkaXYuZGF5Lm5leHRNb250aA0KLXsNCi0JY29sb3I6Izk5OTsNCi0J
Y3Vyc29yOmRlZmF1bHQ7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVy
IHRhYmxlIC5kYXkuY2hlY2tlZA0KLXsNCi0JYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NiwgMjE5
LCAyNDcpOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAu
d2Vlay1uYW1lDQotew0KLQloZWlnaHQ6MjBweDsNCi0JbGluZS1oZWlnaHQ6MjBweDsNCi0JZm9u
dC13ZWlnaHQ6MTAwOw0KLSAgICBjb2xvcjpyZ2IoMTg1LCAxNzUsIDEyNSk7DQotfQ0KLQ0KLS5k
YXRlLXBpY2tlci13cmFwcGVyIC5tb250aC13cmFwcGVyIHRhYmxlIC5kYXkuaGFzLXRvb2x0aXAg
eyBjdXJzb3I6aGVscCAhaW1wb3J0YW50O30NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9u
dGgtd3JhcHBlciB0YWJsZSAuZGF5LnRvTW9udGgudmFsaWQNCi17DQotCWNvbG9yOiMzMzM7DQot
CWN1cnNvcjpwb2ludGVyOw0KLX0NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3Jh
cHBlciB0YWJsZSAuZGF5LnJlYWwtdG9kYXkgeyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAy
MzAsIDEzMik7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAubW9udGgtd3JhcHBlciB0YWJsZSAu
ZGF5LnJlYWwtdG9kYXkuY2hlY2tlZCB7IGJhY2tncm91bmQtY29sb3I6IHJnYigxMTIsIDIwNCwg
MjEzKTsgfQ0KLQ0KLQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uDQotew0K
LQloZWlnaHQ6NDBweDsNCi0gICAgY29sb3I6cmdiKDE4NSwgMTc1LCAxMjUpOw0KLX0NCi0uZGF0
ZS1waWNrZXItd3JhcHBlciB0YWJsZSAuY2FwdGlvbiAubmV4dCwNCi0uZGF0ZS1waWNrZXItd3Jh
cHBlciB0YWJsZSAuY2FwdGlvbiAucHJldg0KLXsNCi0JcGFkZGluZzowIDVweDsNCi0JY3Vyc29y
OnBvaW50ZXI7DQotfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uIC5uZXh0
OmhvdmVyLA0KLS5kYXRlLXBpY2tlci13cmFwcGVyIHRhYmxlIC5jYXB0aW9uIC5wcmV2OmhvdmVy
DQotew0KLQliYWNrZ3JvdW5kLWNvbG9yOiNjY2M7DQotCWNvbG9yOndoaXRlOw0KLX0NCi0uZGF0
ZS1waWNrZXItd3JhcHBlciAuZ2FwDQotew0KLQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0JZGlzcGxh
eTpub25lOw0KLQl0b3A6MHB4Ow0KLQlsZWZ0OjIwNHB4Ow0KLQl6LWluZGV4OiAxOw0KLQl3aWR0
aDoxNXB4Ow0KLQloZWlnaHQ6IDEwMCU7DQotCWJhY2tncm91bmQtY29sb3I6cmVkOw0KLQlmb250
LXNpemU6MDsNCi0JbGluZS1oZWlnaHQ6MDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdh
cCAuZ2FwLWxpbmVzIHsgaGVpZ2h0OiAxMDAlOyBvdmVyZmxvdzpoaWRkZW47IH0NCi0uZGF0ZS1w
aWNrZXItd3JhcHBlciAuZ2FwIC5nYXAtbGluZSB7IGhlaWdodDoxNXB4O3dpZHRoOjE1cHg7IHBv
c2l0aW9uOnJlbGF0aXZlOyAgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5nYXAgLmdhcC1saW5l
IC5nYXAtMSB7IHotaW5kZXg6MTsgaGVpZ2h0OjA7IGJvcmRlci1sZWZ0OjhweCBzb2xpZCB3aGl0
ZTsgYm9yZGVyLXRvcDo4cHggc29saWQgI2VlZTtib3JkZXItYm90dG9tOjhweCBzb2xpZCAjZWVl
OyB9DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmdhcCAuZ2FwLWxpbmUgLmdhcC0yIHsgcG9zaXRp
b246YWJzb2x1dGU7IHJpZ2h0OjA7IHRvcDowcHg7IHotaW5kZXg6MjsgaGVpZ2h0OjA7IGJvcmRl
ci1sZWZ0OjhweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo4cHggc29saWQgd2hpdGU7
IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZ2FwIC5nYXAtbGluZSAuZ2FwLTMgeyBwb3NpdGlv
bjphYnNvbHV0ZTsgcmlnaHQ6MDsgdG9wOjhweDsgei1pbmRleDoyOyBoZWlnaHQ6MDsgYm9yZGVy
LWxlZnQ6OHB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjhweCBzb2xpZCB3aGl0
ZTsgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5nYXAgLmdhcC10b3AtbWFzayB7IHdpZHRoOiA2
cHg7IGhlaWdodDoxcHg7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IC0xcHg7IGxlZnQ6IDFweDsg
YmFja2dyb3VuZC1jb2xvcjogI2VlZTsgei1pbmRleDozOyB9DQotLmRhdGUtcGlja2VyLXdyYXBw
ZXIgLmdhcCAuZ2FwLWJvdHRvbS1tYXNrIHsgd2lkdGg6IDZweDsgaGVpZ2h0OjFweDsgcG9zaXRp
b246YWJzb2x1dGU7IGJvdHRvbTogLTFweDsgbGVmdDogN3B4OyBiYWNrZ3JvdW5kLWNvbG9yOiAj
ZWVlOyB6LWluZGV4OjM7IH0NCi0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuc2VsZWN0ZWQtZGF5
cw0KLXsNCi0JZGlzcGxheTpub25lOw0KLX0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3Rv
cC1iYXINCi17DQotCWxpbmUtaGVpZ2h0OjM2cHg7DQotCXBvc2l0aW9uOnJlbGF0aXZlOw0KLQlm
b250LXNpemU6MTRweDsNCi19DQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyIC5l
cnJvci10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3Rv
cC1iYXIgLm5vcm1hbC10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0uZGF0ZS1waWNrZXItd3JhcHBl
ciAuZHJwX3RvcC1iYXIgLmRlZmF1bHQtdG9wIHsgZGlzcGxheTpibG9jazt9DQotDQotLmRhdGUt
cGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyLmVycm9yIC5kZWZhdWx0LXRvcCB7IGRpc3BsYXk6
bm9uZTsgfQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5kcnBfdG9wLWJhci5lcnJvciAuZXJyb3It
dG9wIHsgZGlzcGxheTpibG9jazsgY29sb3I6cmVkOyB9DQotDQotLmRhdGUtcGlja2VyLXdyYXBw
ZXIgLmRycF90b3AtYmFyLm5vcm1hbCAuZGVmYXVsdC10b3AgeyBkaXNwbGF5Om5vbmU7IH0NCi0u
ZGF0ZS1waWNrZXItd3JhcHBlciAuZHJwX3RvcC1iYXIubm9ybWFsIC5ub3JtYWwtdG9wIHsgZGlz
cGxheTpibG9jazsgfQ0KLQ0KLS5kYXRlLXBpY2tlci13cmFwcGVyIC5kcnBfdG9wLWJhciAuYXBw
bHktYnRuDQotew0KLQlwb3NpdGlvbjphYnNvbHV0ZTsNCi0JcmlnaHQ6IDBweDsgDQotCXRvcDog
NnB4Ow0KLQlwYWRkaW5nOjNweCA1cHg7DQotCW1hcmdpbjowOw0KLQlmb250LXNpemU6MTJweDsN
Ci0JYm9yZGVyLXJhZGl1czo0cHg7DQotCWN1cnNvcjpwb2ludGVyOw0KLQkNCi0JY29sb3I6ICNk
OWVlZjc7DQotCWJvcmRlcjogc29saWQgMXB4ICMwMDc2YTM7DQotCWJhY2tncm91bmQ6ICMwMDk1
Y2Q7DQotCWJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVm
dCBib3R0b20sIGZyb20oIzAwYWRlZSksIHRvKCMwMDc4YTUpKTsNCi0JYmFja2dyb3VuZDogLW1v
ei1saW5lYXItZ3JhZGllbnQodG9wLCAgIzAwYWRlZSwgICMwMDc4YTUpOw0KLS8qCWZpbHRlcjog
IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3Ry
PScjMDBhZGVlJywgZW5kQ29sb3JzdHI9JyMwMDc4YTUnKTsqLw0KLQljb2xvcjp3aGl0ZTsNCi19
DQotDQotLmRhdGUtcGlja2VyLXdyYXBwZXIgLmRycF90b3AtYmFyIC5hcHBseS1idG4uZGlzYWJs
ZWQNCi17DQotCWN1cnNvcjogcG9pbnRlcjsNCi0JY29sb3I6ICM2MDYwNjA7DQotCWJvcmRlcjog
c29saWQgMXB4ICNiN2I3Yjc7DQotCWJhY2tncm91bmQ6ICNmZmY7DQotCWJhY2tncm91bmQ6IC13
ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI2ZmZiks
IHRvKCNlZGVkZWQpKTsNCi0JYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAg
I2ZmZiwgICNlZGVkZWQpOw0KLS8qCWZpbHRlcjogIHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1p
Y3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPScjZmZmZmZmJywgZW5kQ29sb3JzdHI9JyNl
ZGVkZWQnKTsqLw0KLX0NCi0vKnRpbWUgc3R5bGluZyovDQotLnRpbWUgew0KLQlwb3NpdGlvbjog
cmVsYXRpdmU7DQotfQ0KLS50aW1lIGlucHV0W3R5cGU9cmFuZ2VdIHsNCi0gIHZlcnRpY2FsLWFs
aWduOiBtaWRkbGU7DQotfQ0KLS50aW1lMSwgLnRpbWUyIHsNCi0Jd2lkdGg6IDE4MHB4Ow0KLQlw
YWRkaW5nOiAwIDVweDsNCi0JdGV4dC1hbGlnbjogY2VudGVyOw0KLX0NCi0udGltZTEgew0KLQlm
bG9hdDogbGVmdDsNCi19DQotLnRpbWUyIHsNCi0JZmxvYXQ6IHJpZ2h0OwkNCi19DQotLmhvdXIs
IC5taW51dGUgew0KLQl0ZXh0LWFsaWduOiByaWdodDsNCi19DQotLmhpZGUgew0KLQlkaXNwbGF5
OiBub25lOw0KLX0NCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwv
ZGF0ZXJhbmdlcGlja2VyLmNzcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMg
LTEgKzAsMCAjIwotdGV4dC9jc3MKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL2pxdWVyeS0xLjExLjEubWluLmpzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9qcXVlcnktMS4xMS4xLm1pbi5qcwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL2pxdWVyeS0xLjExLjEubWluLmpzCShu
b25leGlzdGVudCkKQEAgLTEsNCArMCwwIEBACi0vKiEgalF1ZXJ5IHYxLjExLjEgfCAoYykgMjAw
NSwgMjAxNCBqUXVlcnkgRm91bmRhdGlvbiwgSW5jLiB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwot
IWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJiJvYmplY3QiPT10eXBlb2Yg
bW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsITApOmZ1bmN0aW9u
KGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVzIGEgd2lu
ZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHlw
ZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxl
PWMuY29uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNP
d25Qcm9wZXJ0eSxrPXt9LGw9IjEuMTEuMSIsbT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgbS5m
bi5pbml0KGEsYil9LG49L15bXHNcdUZFRkZceEEwXSt8W1xzXHVGRUZGXHhBMF0rJC9nLG89L14t
bXMtLyxwPS8tKFtcZGEtel0pL2dpLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi50b1VwcGVyQ2Fz
ZSgpfTttLmZuPW0ucHJvdG90eXBlPXtqcXVlcnk6bCxjb25zdHJ1Y3RvcjptLHNlbGVjdG9yOiIi
LGxlbmd0aDowLHRvQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gZC5jYWxsKHRoaXMpfSxnZXQ6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG51bGwhPWE/MD5hP3RoaXNbYSt0aGlzLmxlbmd0aF06dGhpc1thXTpk
LmNhbGwodGhpcyl9LHB1c2hTdGFjazpmdW5jdGlvbihhKXt2YXIgYj1tLm1lcmdlKHRoaXMuY29u
c3RydWN0b3IoKSxhKTtyZXR1cm4gYi5wcmV2T2JqZWN0PXRoaXMsYi5jb250ZXh0PXRoaXMuY29u
dGV4dCxifSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG0uZWFjaCh0aGlzLGEsYil9LG1hcDpm
dW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobS5tYXAodGhpcyxmdW5jdGlvbihiLGMp
e3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1
c2hTdGFjayhkLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9LGZpcnN0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuZXEoMCl9LGxhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgtMSl9LGVxOmZ1bmN0
aW9uKGEpe3ZhciBiPXRoaXMubGVuZ3RoLGM9K2ErKDA+YT9iOjApO3JldHVybiB0aGlzLnB1c2hT
dGFjayhjPj0wJiZiPmM/W3RoaXNbY11dOltdKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
cHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpmLHNvcnQ6Yy5zb3J0LHNw
bGljZTpjLnNwbGljZX0sbS5leHRlbmQ9bS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxiLGMs
ZCxlLGYsZz1hcmd1bWVudHNbMF18fHt9LGg9MSxpPWFyZ3VtZW50cy5sZW5ndGgsaj0hMTtmb3Io
ImJvb2xlYW4iPT10eXBlb2YgZyYmKGo9ZyxnPWFyZ3VtZW50c1toXXx8e30saCsrKSwib2JqZWN0
Ij09dHlwZW9mIGd8fG0uaXNGdW5jdGlvbihnKXx8KGc9e30pLGg9PT1pJiYoZz10aGlzLGgtLSk7
aT5oO2grKylpZihudWxsIT0oZT1hcmd1bWVudHNbaF0pKWZvcihkIGluIGUpYT1nW2RdLGM9ZVtk
XSxnIT09YyYmKGomJmMmJihtLmlzUGxhaW5PYmplY3QoYyl8fChiPW0uaXNBcnJheShjKSkpPyhi
PyhiPSExLGY9YSYmbS5pc0FycmF5KGEpP2E6W10pOmY9YSYmbS5pc1BsYWluT2JqZWN0KGEpP2E6
e30sZ1tkXT1tLmV4dGVuZChqLGYsYykpOnZvaWQgMCE9PWMmJihnW2RdPWMpKTtyZXR1cm4gZ30s
bS5leHRlbmQoe2V4cGFuZG86ImpRdWVyeSIrKGwrTWF0aC5yYW5kb20oKSkucmVwbGFjZSgvXEQv
ZywiIiksaXNSZWFkeTohMCxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LG5v
b3A6ZnVuY3Rpb24oKXt9LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuImZ1bmN0aW9uIj09
PW0udHlwZShhKX0saXNBcnJheTpBcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4iYXJy
YXkiPT09bS50eXBlKGEpfSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbCE9YSYmYT09
YS53aW5kb3d9LGlzTnVtZXJpYzpmdW5jdGlvbihhKXtyZXR1cm4hbS5pc0FycmF5KGEpJiZhLXBh
cnNlRmxvYXQoYSk+PTB9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7dmFyIGI7Zm9yKGIgaW4g
YSlyZXR1cm4hMTtyZXR1cm4hMH0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXt2YXIgYjtpZigh
YXx8Im9iamVjdCIhPT1tLnR5cGUoYSl8fGEubm9kZVR5cGV8fG0uaXNXaW5kb3coYSkpcmV0dXJu
ITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFqLmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIWouY2Fs
bChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNo
KGMpe3JldHVybiExfWlmKGsub3duTGFzdClmb3IoYiBpbiBhKXJldHVybiBqLmNhbGwoYSxiKTtm
b3IoYiBpbiBhKTtyZXR1cm4gdm9pZCAwPT09Ynx8ai5jYWxsKGEsYil9LHR5cGU6ZnVuY3Rpb24o
YSl7cmV0dXJuIG51bGw9PWE/YSsiIjoib2JqZWN0Ij09dHlwZW9mIGF8fCJmdW5jdGlvbiI9PXR5
cGVvZiBhP2hbaS5jYWxsKGEpXXx8Im9iamVjdCI6dHlwZW9mIGF9LGdsb2JhbEV2YWw6ZnVuY3Rp
b24oYil7YiYmbS50cmltKGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2Fs
bChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKG8sIm1z
LSIpLnJlcGxhY2UocCxxKX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFt
ZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yi50b0xvd2VyQ2FzZSgpfSxlYWNoOmZ1bmN0
aW9uKGEsYixjKXt2YXIgZCxlPTAsZj1hLmxlbmd0aCxnPXIoYSk7aWYoYyl7aWYoZyl7Zm9yKDtm
PmU7ZSsrKWlmKGQ9Yi5hcHBseShhW2VdLGMpLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEp
aWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgaWYoZyl7Zm9yKDtmPmU7ZSsr
KWlmKGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWt9ZWxzZSBmb3IoZSBpbiBhKWlm
KGQ9Yi5jYWxsKGFbZV0sZSxhW2VdKSxkPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06ZnVuY3Rp
b24oYSl7cmV0dXJuIG51bGw9PWE/IiI6KGErIiIpLnJlcGxhY2UobiwiIil9LG1ha2VBcnJheTpm
dW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO3JldHVybiBudWxsIT1hJiYocihPYmplY3QoYSkpP20u
bWVyZ2UoYywic3RyaW5nIj09dHlwZW9mIGE/W2FdOmEpOmYuY2FsbChjLGEpKSxjfSxpbkFycmF5
OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihnKXJldHVybiBnLmNhbGwoYixhLGMpO2Zv
cihkPWIubGVuZ3RoLGM9Yz8wPmM/TWF0aC5tYXgoMCxkK2MpOmM6MDtkPmM7YysrKWlmKGMgaW4g
YiYmYltjXT09PWEpcmV0dXJuIGN9cmV0dXJuLTF9LG1lcmdlOmZ1bmN0aW9uKGEsYil7dmFyIGM9
K2IubGVuZ3RoLGQ9MCxlPWEubGVuZ3RoO3doaWxlKGM+ZClhW2UrK109YltkKytdO2lmKGMhPT1j
KXdoaWxlKHZvaWQgMCE9PWJbZF0pYVtlKytdPWJbZCsrXTtyZXR1cm4gYS5sZW5ndGg9ZSxhfSxn
cmVwOmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQsZT1bXSxmPTAsZz1hLmxlbmd0aCxoPSFjO2c+
ZjtmKyspZD0hYihhW2ZdLGYpLGQhPT1oJiZlLnB1c2goYVtmXSk7cmV0dXJuIGV9LG1hcDpmdW5j
dGlvbihhLGIsYyl7dmFyIGQsZj0wLGc9YS5sZW5ndGgsaD1yKGEpLGk9W107aWYoaClmb3IoO2c+
ZjtmKyspZD1iKGFbZl0sZixjKSxudWxsIT1kJiZpLnB1c2goZCk7ZWxzZSBmb3IoZiBpbiBhKWQ9
YihhW2ZdLGYsYyksbnVsbCE9ZCYmaS5wdXNoKGQpO3JldHVybiBlLmFwcGx5KFtdLGkpfSxndWlk
OjEscHJveHk6ZnVuY3Rpb24oYSxiKXt2YXIgYyxlLGY7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBi
JiYoZj1hW2JdLGI9YSxhPWYpLG0uaXNGdW5jdGlvbihhKT8oYz1kLmNhbGwoYXJndW1lbnRzLDIp
LGU9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShifHx0aGlzLGMuY29uY2F0KGQuY2FsbChhcmd1
bWVudHMpKSl9LGUuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxtLmd1aWQrKyxlKTp2b2lkIDB9LG5vdzpm
dW5jdGlvbigpe3JldHVybituZXcgRGF0ZX0sc3VwcG9ydDprfSksbS5lYWNoKCJCb29sZWFuIE51
bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0IEVycm9yIi5zcGxp
dCgiICIpLGZ1bmN0aW9uKGEsYil7aFsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9
KTtmdW5jdGlvbiByKGEpe3ZhciBiPWEubGVuZ3RoLGM9bS50eXBlKGEpO3JldHVybiJmdW5jdGlv
biI9PT1jfHxtLmlzV2luZG93KGEpPyExOjE9PT1hLm5vZGVUeXBlJiZiPyEwOiJhcnJheSI9PT1j
fHwwPT09Ynx8Im51bWJlciI9PXR5cGVvZiBiJiZiPjAmJmItMSBpbiBhfXZhciBzPWZ1bmN0aW9u
KGEpe3ZhciBiLGMsZCxlLGYsZyxoLGksaixrLGwsbSxuLG8scCxxLHIscyx0LHU9InNpenpsZSIr
LW5ldyBEYXRlLHY9YS5kb2N1bWVudCx3PTAseD0wLHk9Z2IoKSx6PWdiKCksQT1nYigpLEI9ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gYT09PWImJihsPSEwKSwwfSxDPSJ1bmRlZmluZWQiLEQ9MTw8MzEs
RT17fS5oYXNPd25Qcm9wZXJ0eSxGPVtdLEc9Ri5wb3AsSD1GLnB1c2gsST1GLnB1c2gsSj1GLnNs
aWNlLEs9Ri5pbmRleE9mfHxmdW5jdGlvbihhKXtmb3IodmFyIGI9MCxjPXRoaXMubGVuZ3RoO2M+
YjtiKyspaWYodGhpc1tiXT09PWEpcmV0dXJuIGI7cmV0dXJuLTF9LEw9ImNoZWNrZWR8c2VsZWN0
ZWR8YXN5bmN8YXV0b2ZvY3VzfGF1dG9wbGF5fGNvbnRyb2xzfGRlZmVyfGRpc2FibGVkfGhpZGRl
bnxpc21hcHxsb29wfG11bHRpcGxlfG9wZW58cmVhZG9ubHl8cmVxdWlyZWR8c2NvcGVkIixNPSJb
XFx4MjBcXHRcXHJcXG5cXGZdIixOPSIoPzpcXFxcLnxbXFx3LV18W15cXHgwMC1cXHhhMF0pKyIs
Tz1OLnJlcGxhY2UoInciLCJ3IyIpLFA9IlxcWyIrTSsiKigiK04rIikoPzoiK00rIiooWypeJHwh
fl0/PSkiK00rIiooPzonKCg/OlxcXFwufFteXFxcXCddKSopJ3xcIigoPzpcXFxcLnxbXlxcXFxc
Il0pKilcInwoIitPKyIpKXwpIitNKyIqXFxdIixRPSI6KCIrTisiKSg/OlxcKCgoJygoPzpcXFxc
LnxbXlxcXFwnXSkqKSd8XCIoKD86XFxcXC58W15cXFxcXCJdKSopXCIpfCgoPzpcXFxcLnxbXlxc
XFwoKVtcXF1dfCIrUCsiKSopfC4qKVxcKXwpIixSPW5ldyBSZWdFeHAoIl4iK00rIit8KCg/Ol58
W15cXFxcXSkoPzpcXFxcLikqKSIrTSsiKyQiLCJnIiksUz1uZXcgUmVnRXhwKCJeIitNKyIqLCIr
TSsiKiIpLFQ9bmV3IFJlZ0V4cCgiXiIrTSsiKihbPit+XXwiK00rIikiK00rIioiKSxVPW5ldyBS
ZWdFeHAoIj0iK00rIiooW15cXF0nXCJdKj8pIitNKyIqXFxdIiwiZyIpLFY9bmV3IFJlZ0V4cChR
KSxXPW5ldyBSZWdFeHAoIl4iK08rIiQiKSxYPXtJRDpuZXcgUmVnRXhwKCJeIygiK04rIikiKSxD
TEFTUzpuZXcgUmVnRXhwKCJeXFwuKCIrTisiKSIpLFRBRzpuZXcgUmVnRXhwKCJeKCIrTi5yZXBs
YWNlKCJ3IiwidyoiKSsiKSIpLEFUVFI6bmV3IFJlZ0V4cCgiXiIrUCksUFNFVURPOm5ldyBSZWdF
eHAoIl4iK1EpLENISUxEOm5ldyBSZWdFeHAoIl46KG9ubHl8Zmlyc3R8bGFzdHxudGh8bnRoLWxh
c3QpLShjaGlsZHxvZi10eXBlKSg/OlxcKCIrTSsiKihldmVufG9kZHwoKFsrLV18KShcXGQqKW58
KSIrTSsiKig/OihbKy1dfCkiK00rIiooXFxkKyl8KSkiK00rIipcXCl8KSIsImkiKSxib29sOm5l
dyBSZWdFeHAoIl4oPzoiK0wrIikkIiwiaSIpLG5lZWRzQ29udGV4dDpuZXcgUmVnRXhwKCJeIitN
KyIqWz4rfl18OihldmVufG9kZHxlcXxndHxsdHxudGh8Zmlyc3R8bGFzdCkoPzpcXCgiK00rIioo
KD86LVxcZCk/XFxkKikiK00rIipcXCl8KSg/PVteLV18JCkiLCJpIil9LFk9L14oPzppbnB1dHxz
ZWxlY3R8dGV4dGFyZWF8YnV0dG9uKSQvaSxaPS9eaFxkJC9pLCQ9L15bXntdK1x7XHMqXFtuYXRp
dmUgXHcvLF89L14oPzojKFtcdy1dKyl8KFx3Kyl8XC4oW1x3LV0rKSkkLyxhYj0vWyt+XS8sYmI9
Lyd8XFwvZyxjYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK00rIj98KCIrTSsiKXwu
KSIsImlnIiksZGI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9
PWR8fGM/YjowPmQ/U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJD
b2RlKGQ+PjEwfDU1Mjk2LDEwMjMmZHw1NjMyMCl9O3RyeXtJLmFwcGx5KEY9Si5jYWxsKHYuY2hp
bGROb2Rlcyksdi5jaGlsZE5vZGVzKSxGW3YuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNh
dGNoKGViKXtJPXthcHBseTpGLmxlbmd0aD9mdW5jdGlvbihhLGIpe0guYXBwbHkoYSxKLmNhbGwo
YikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3RoLGQ9MDt3aGlsZShhW2MrK109YltkKytd
KTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBmYihhLGIsZCxlKXt2YXIgZixoLGosayxsLG8scixz
LHcseDtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dikhPT1uJiZtKGIpLGI9Ynx8bixkPWR8fFtd
LCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShrPWIubm9kZVR5cGUpJiY5
IT09aylyZXR1cm5bXTtpZihwJiYhZSl7aWYoZj1fLmV4ZWMoYSkpaWYoaj1mWzFdKXtpZig5PT09
ayl7aWYoaD1iLmdldEVsZW1lbnRCeUlkKGopLCFofHwhaC5wYXJlbnROb2RlKXJldHVybiBkO2lm
KGguaWQ9PT1qKXJldHVybiBkLnB1c2goaCksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGg9
Yi5vd25lckRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGopKSYmdChiLGgpJiZoLmlkPT09ailyZXR1
cm4gZC5wdXNoKGgpLGR9ZWxzZXtpZihmWzJdKXJldHVybiBJLmFwcGx5KGQsYi5nZXRFbGVtZW50
c0J5VGFnTmFtZShhKSksZDtpZigoaj1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZi
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIEkuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoaikpLGR9aWYoYy5xc2EmJighcXx8IXEudGVzdChhKSkpe2lmKHM9cj11LHc9Yix4
PTk9PT1rJiZhLDE9PT1rJiYib2JqZWN0IiE9PWIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7bz1n
KGEpLChyPWIuZ2V0QXR0cmlidXRlKCJpZCIpKT9zPXIucmVwbGFjZShiYiwiXFwkJiIpOmIuc2V0
QXR0cmlidXRlKCJpZCIscykscz0iW2lkPSciK3MrIiddICIsbD1vLmxlbmd0aDt3aGlsZShsLS0p
b1tsXT1zK3FiKG9bbF0pO3c9YWIudGVzdChhKSYmb2IoYi5wYXJlbnROb2RlKXx8Yix4PW8uam9p
bigiLCIpfWlmKHgpdHJ5e3JldHVybiBJLmFwcGx5KGQsdy5xdWVyeVNlbGVjdG9yQWxsKHgpKSxk
fWNhdGNoKHkpe31maW5hbGx5e3J8fGIucmVtb3ZlQXR0cmlidXRlKCJpZCIpfX19cmV0dXJuIGko
YS5yZXBsYWNlKFIsIiQxIiksYixkLGUpfWZ1bmN0aW9uIGdiKCl7dmFyIGE9W107ZnVuY3Rpb24g
YihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW5ndGgmJmRlbGV0ZSBiW2Euc2hp
ZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBoYihhKXtyZXR1cm4gYVt1XT0hMCxh
fWZ1bmN0aW9uIGliKGEpe3ZhciBiPW4uY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5e3JldHVybiEh
YShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gamIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8
IiksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24ga2Io
YSxiKXt2YXIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIu
c291cmNlSW5kZXh8fEQpLSh+YS5zb3VyY2VJbmRleHx8RCk7aWYoZClyZXR1cm4gZDtpZihjKXdo
aWxlKGM9Yy5uZXh0U2libGluZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0
aW9uIGxiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNl
KCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZT09PWF9fWZ1bmN0aW9uIG1iKGEpe3JldHVybiBm
dW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9
PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGlvbiBuYihhKXtyZXR1cm4gaGIo
ZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsaGIoZnVuY3Rpb24oYyxkKXt2YXIgZSxmPWEoW10sYy5s
ZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hKGRbZV09Y1tl
XSkpfSl9KX1mdW5jdGlvbiBvYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRh
Z05hbWUhPT1DJiZhfWM9ZmIuc3VwcG9ydD17fSxmPWZiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBi
PWEmJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIh
PT1iLm5vZGVOYW1lOiExfSxtPWZiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9h
Lm93bmVyRG9jdW1lbnR8fGE6dixnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1uJiY5PT09ZS5u
b2RlVHlwZSYmZS5kb2N1bWVudEVsZW1lbnQ/KG49ZSxvPWUuZG9jdW1lbnRFbGVtZW50LHA9IWYo
ZSksZyYmZyE9PWcudG9wJiYoZy5hZGRFdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigi
dW5sb2FkIixmdW5jdGlvbigpe20oKX0sITEpOmcuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQo
Im9udW5sb2FkIixmdW5jdGlvbigpe20oKX0pKSxjLmF0dHJpYnV0ZXM9aWIoZnVuY3Rpb24oYSl7
cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIpfSksYy5n
ZXRFbGVtZW50c0J5VGFnTmFtZT1pYihmdW5jdGlvbihhKXtyZXR1cm4gYS5hcHBlbmRDaGlsZChl
LmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aH0p
LGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT0kLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KSYmaWIoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rp
dj48ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09
PWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1pYihmdW5j
dGlvbihhKXtyZXR1cm4gby5hcHBlbmRDaGlsZChhKS5pZD11LCFlLmdldEVsZW1lbnRzQnlOYW1l
fHwhZS5nZXRFbGVtZW50c0J5TmFtZSh1KS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1m
dW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT09QyYmcCl7dmFyIGM9Yi5n
ZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVy
LklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShjYixkYik7cmV0dXJuIGZ1bmN0aW9uKGEp
e3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlbGV0ZSBkLmZpbmQuSUQsZC5m
aWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGNiLGRiKTtyZXR1cm4gZnVuY3Rp
b24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUMmJmEuZ2V0QXR0cmlidXRl
Tm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW1l
bnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlU
YWdOYW1lIT09Qz9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxi
KXt2YXIgYyxkPVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7
d2hpbGUoYz1mW2UrK10pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4g
Zn0sZC5maW5kLkNMQVNTPWMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXty
ZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9PUMmJnA/Yi5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scj1bXSxxPVtdLChjLnFzYT0kLnRlc3QoZS5xdWVyeVNl
bGVjdG9yQWxsKSkmJihpYihmdW5jdGlvbihhKXthLmlubmVySFRNTD0iPHNlbGVjdCBtc2FsbG93
Y2xpcD0nJz48b3B0aW9uIHNlbGVjdGVkPScnPjwvb3B0aW9uPjwvc2VsZWN0PiIsYS5xdWVyeVNl
bGVjdG9yQWxsKCJbbXNhbGxvd2NsaXBePScnXSIpLmxlbmd0aCYmcS5wdXNoKCJbKl4kXT0iK00r
IiooPzonJ3xcIlwiKSIpLGEucXVlcnlTZWxlY3RvckFsbCgiW3NlbGVjdGVkXSIpLmxlbmd0aHx8
cS5wdXNoKCJcXFsiK00rIiooPzp2YWx1ZXwiK0wrIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIjpj
aGVja2VkIikubGVuZ3RofHxxLnB1c2goIjpjaGVja2VkIil9KSxpYihmdW5jdGlvbihhKXt2YXIg
Yj1lLmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7Yi5zZXRBdHRyaWJ1dGUoInR5cGUiLCJoaWRkZW4i
KSxhLmFwcGVuZENoaWxkKGIpLnNldEF0dHJpYnV0ZSgibmFtZSIsIkQiKSxhLnF1ZXJ5U2VsZWN0
b3JBbGwoIltuYW1lPWRdIikubGVuZ3RoJiZxLnB1c2goIm5hbWUiK00rIipbKl4kfCF+XT89Iiks
YS5xdWVyeVNlbGVjdG9yQWxsKCI6ZW5hYmxlZCIpLmxlbmd0aHx8cS5wdXNoKCI6ZW5hYmxlZCIs
IjpkaXNhYmxlZCIpLGEucXVlcnlTZWxlY3RvckFsbCgiKiw6eCIpLHEucHVzaCgiLC4qOiIpfSkp
LChjLm1hdGNoZXNTZWxlY3Rvcj0kLnRlc3Qocz1vLm1hdGNoZXN8fG8ud2Via2l0TWF0Y2hlc1Nl
bGVjdG9yfHxvLm1vek1hdGNoZXNTZWxlY3Rvcnx8by5vTWF0Y2hlc1NlbGVjdG9yfHxvLm1zTWF0
Y2hlc1NlbGVjdG9yKSkmJmliKGZ1bmN0aW9uKGEpe2MuZGlzY29ubmVjdGVkTWF0Y2g9cy5jYWxs
KGEsImRpdiIpLHMuY2FsbChhLCJbcyE9JyddOngiKSxyLnB1c2goIiE9IixRKX0pLHE9cS5sZW5n
dGgmJm5ldyBSZWdFeHAocS5qb2luKCJ8IikpLHI9ci5sZW5ndGgmJm5ldyBSZWdFeHAoci5qb2lu
KCJ8IikpLGI9JC50ZXN0KG8uY29tcGFyZURvY3VtZW50UG9zaXRpb24pLHQ9Ynx8JC50ZXN0KG8u
Y29udGFpbnMpP2Z1bmN0aW9uKGEsYil7dmFyIGM9OT09PWEubm9kZVR5cGU/YS5kb2N1bWVudEVs
ZW1lbnQ6YSxkPWImJmIucGFyZW50Tm9kZTtyZXR1cm4gYT09PWR8fCEoIWR8fDEhPT1kLm5vZGVU
eXBlfHwhKGMuY29udGFpbnM/Yy5jb250YWlucyhkKTphLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
JiYxNiZhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGQpKSl9OmZ1bmN0aW9uKGEsYil7aWYoYil3
aGlsZShiPWIucGFyZW50Tm9kZSlpZihiPT09YSlyZXR1cm4hMDtyZXR1cm4hMX0sQj1iP2Z1bmN0
aW9uKGEsYil7aWYoYT09PWIpcmV0dXJuIGw9ITAsMDt2YXIgZD0hYS5jb21wYXJlRG9jdW1lbnRQ
b3NpdGlvbi0hYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbjtyZXR1cm4gZD9kOihkPShhLm93bmVy
RG9jdW1lbnR8fGEpPT09KGIub3duZXJEb2N1bWVudHx8Yik/YS5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbihiKToxLDEmZHx8IWMuc29ydERldGFjaGVkJiZiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9u
KGEpPT09ZD9hPT09ZXx8YS5vd25lckRvY3VtZW50PT09diYmdCh2LGEpPy0xOmI9PT1lfHxiLm93
bmVyRG9jdW1lbnQ9PT12JiZ0KHYsYik/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA6NCZk
Py0xOjEpfTpmdW5jdGlvbihhLGIpe2lmKGE9PT1iKXJldHVybiBsPSEwLDA7dmFyIGMsZD0wLGY9
YS5wYXJlbnROb2RlLGc9Yi5wYXJlbnROb2RlLGg9W2FdLGk9W2JdO2lmKCFmfHwhZylyZXR1cm4g
YT09PWU/LTE6Yj09PWU/MTpmPy0xOmc/MTprP0suY2FsbChrLGEpLUsuY2FsbChrLGIpOjA7aWYo
Zj09PWcpcmV0dXJuIGtiKGEsYik7Yz1hO3doaWxlKGM9Yy5wYXJlbnROb2RlKWgudW5zaGlmdChj
KTtjPWI7d2hpbGUoYz1jLnBhcmVudE5vZGUpaS51bnNoaWZ0KGMpO3doaWxlKGhbZF09PT1pW2Rd
KWQrKztyZXR1cm4gZD9rYihoW2RdLGlbZF0pOmhbZF09PT12Py0xOmlbZF09PT12PzE6MH0sZSk6
bn0sZmIubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBmYihhLG51bGwsbnVsbCxiKX0sZmIu
bWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYil7aWYoKGEub3duZXJEb2N1bWVudHx8YSkhPT1u
JiZtKGEpLGI9Yi5yZXBsYWNlKFUsIj0nJDEnXSIpLCEoIWMubWF0Y2hlc1NlbGVjdG9yfHwhcHx8
ciYmci50ZXN0KGIpfHxxJiZxLnRlc3QoYikpKXRyeXt2YXIgZD1zLmNhbGwoYSxiKTtpZihkfHxj
LmRpc2Nvbm5lY3RlZE1hdGNofHxhLmRvY3VtZW50JiYxMSE9PWEuZG9jdW1lbnQubm9kZVR5cGUp
cmV0dXJuIGR9Y2F0Y2goZSl7fXJldHVybiBmYihiLG4sbnVsbCxbYV0pLmxlbmd0aD4wfSxmYi5j
b250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybihhLm93bmVyRG9jdW1lbnR8fGEpIT09biYmbShh
KSx0KGEsYil9LGZiLmF0dHI9ZnVuY3Rpb24oYSxiKXsoYS5vd25lckRvY3VtZW50fHxhKSE9PW4m
Jm0oYSk7dmFyIGU9ZC5hdHRySGFuZGxlW2IudG9Mb3dlckNhc2UoKV0sZj1lJiZFLmNhbGwoZC5h
dHRySGFuZGxlLGIudG9Mb3dlckNhc2UoKSk/ZShhLGIsIXApOnZvaWQgMDtyZXR1cm4gdm9pZCAw
IT09Zj9mOmMuYXR0cmlidXRlc3x8IXA/YS5nZXRBdHRyaWJ1dGUoYik6KGY9YS5nZXRBdHRyaWJ1
dGVOb2RlKGIpKSYmZi5zcGVjaWZpZWQ/Zi52YWx1ZTpudWxsfSxmYi5lcnJvcj1mdW5jdGlvbihh
KXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246
ICIrYSl9LGZiLnVuaXF1ZVNvcnQ9ZnVuY3Rpb24oYSl7dmFyIGIsZD1bXSxlPTAsZj0wO2lmKGw9
IWMuZGV0ZWN0RHVwbGljYXRlcyxrPSFjLnNvcnRTdGFibGUmJmEuc2xpY2UoMCksYS5zb3J0KEIp
LGwpe3doaWxlKGI9YVtmKytdKWI9PT1hW2ZdJiYoZT1kLnB1c2goZikpO3doaWxlKGUtLSlhLnNw
bGljZShkW2VdLDEpfXJldHVybiBrPW51bGwsYX0sZT1mYi5nZXRUZXh0PWZ1bmN0aW9uKGEpe3Zh
ciBiLGM9IiIsZD0wLGY9YS5ub2RlVHlwZTtpZihmKXtpZigxPT09Znx8OT09PWZ8fDExPT09Zil7
aWYoInN0cmluZyI9PXR5cGVvZiBhLnRleHRDb250ZW50KXJldHVybiBhLnRleHRDb250ZW50O2Zv
cihhPWEuZmlyc3RDaGlsZDthO2E9YS5uZXh0U2libGluZyljKz1lKGEpfWVsc2UgaWYoMz09PWZ8
fDQ9PT1mKXJldHVybiBhLm5vZGVWYWx1ZX1lbHNlIHdoaWxlKGI9YVtkKytdKWMrPWUoYik7cmV0
dXJuIGN9LGQ9ZmIuc2VsZWN0b3JzPXtjYWNoZUxlbmd0aDo1MCxjcmVhdGVQc2V1ZG86aGIsbWF0
Y2g6WCxhdHRySGFuZGxlOnt9LGZpbmQ6e30scmVsYXRpdmU6eyI+Ijp7ZGlyOiJwYXJlbnROb2Rl
IixmaXJzdDohMH0sIiAiOntkaXI6InBhcmVudE5vZGUifSwiKyI6e2RpcjoicHJldmlvdXNTaWJs
aW5nIixmaXJzdDohMH0sIn4iOntkaXI6InByZXZpb3VzU2libGluZyJ9fSxwcmVGaWx0ZXI6e0FU
VFI6ZnVuY3Rpb24oYSl7cmV0dXJuIGFbMV09YVsxXS5yZXBsYWNlKGNiLGRiKSxhWzNdPShhWzNd
fHxhWzRdfHxhWzVdfHwiIikucmVwbGFjZShjYixkYiksIn49Ij09PWFbMl0mJihhWzNdPSIgIith
WzNdKyIgIiksYS5zbGljZSgwLDQpfSxDSElMRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFd
LnRvTG93ZXJDYXNlKCksIm50aCI9PT1hWzFdLnNsaWNlKDAsMyk/KGFbM118fGZiLmVycm9yKGFb
MF0pLGFbNF09KyhhWzRdP2FbNV0rKGFbNl18fDEpOjIqKCJldmVuIj09PWFbM118fCJvZGQiPT09
YVszXSkpLGFbNV09KyhhWzddK2FbOF18fCJvZGQiPT09YVszXSkpOmFbM10mJmZiLmVycm9yKGFb
MF0pLGF9LFBTRVVETzpmdW5jdGlvbihhKXt2YXIgYixjPSFhWzZdJiZhWzJdO3JldHVybiBYLkNI
SUxELnRlc3QoYVswXSk/bnVsbDooYVszXT9hWzJdPWFbNF18fGFbNV18fCIiOmMmJlYudGVzdChj
KSYmKGI9ZyhjLCEwKSkmJihiPWMuaW5kZXhPZigiKSIsYy5sZW5ndGgtYiktYy5sZW5ndGgpJiYo
YVswXT1hWzBdLnNsaWNlKDAsYiksYVsyXT1jLnNsaWNlKDAsYikpLGEuc2xpY2UoMCwzKSl9fSxm
aWx0ZXI6e1RBRzpmdW5jdGlvbihhKXt2YXIgYj1hLnJlcGxhY2UoY2IsZGIpLnRvTG93ZXJDYXNl
KCk7cmV0dXJuIioiPT09YT9mdW5jdGlvbigpe3JldHVybiEwfTpmdW5jdGlvbihhKXtyZXR1cm4g
YS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yn19LENMQVNTOmZ1bmN0aW9u
KGEpe3ZhciBiPXlbYSsiICJdO3JldHVybiBifHwoYj1uZXcgUmVnRXhwKCIoXnwiK00rIikiK2Er
IigiK00rInwkKSIpKSYmeShhLGZ1bmN0aW9uKGEpe3JldHVybiBiLnRlc3QoInN0cmluZyI9PXR5
cGVvZiBhLmNsYXNzTmFtZSYmYS5jbGFzc05hbWV8fHR5cGVvZiBhLmdldEF0dHJpYnV0ZSE9PUMm
JmEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpfHwiIil9KX0sQVRUUjpmdW5jdGlvbihhLGIsYyl7cmV0
dXJuIGZ1bmN0aW9uKGQpe3ZhciBlPWZiLmF0dHIoZCxhKTtyZXR1cm4gbnVsbD09ZT8iIT0iPT09
YjpiPyhlKz0iIiwiPSI9PT1iP2U9PT1jOiIhPSI9PT1iP2UhPT1jOiJePSI9PT1iP2MmJjA9PT1l
LmluZGV4T2YoYyk6Iio9Ij09PWI/YyYmZS5pbmRleE9mKGMpPi0xOiIkPSI9PT1iP2MmJmUuc2xp
Y2UoLWMubGVuZ3RoKT09PWM6In49Ij09PWI/KCIgIitlKyIgIikuaW5kZXhPZihjKT4tMToifD0i
PT09Yj9lPT09Y3x8ZS5zbGljZSgwLGMubGVuZ3RoKzEpPT09YysiLSI6ITEpOiEwfX0sQ0hJTEQ6
ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZj0ibnRoIiE9PWEuc2xpY2UoMCwzKSxnPSJsYXN0IiE9
PWEuc2xpY2UoLTQpLGg9Im9mLXR5cGUiPT09YjtyZXR1cm4gMT09PWQmJjA9PT1lP2Z1bmN0aW9u
KGEpe3JldHVybiEhYS5wYXJlbnROb2RlfTpmdW5jdGlvbihiLGMsaSl7dmFyIGosayxsLG0sbixv
LHA9ZiE9PWc/Im5leHRTaWJsaW5nIjoicHJldmlvdXNTaWJsaW5nIixxPWIucGFyZW50Tm9kZSxy
PWgmJmIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxzPSFpJiYhaDtpZihxKXtpZihmKXt3aGlsZShw
KXtsPWI7d2hpbGUobD1sW3BdKWlmKGg/bC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09cjoxPT09
bC5ub2RlVHlwZSlyZXR1cm4hMTtvPXA9Im9ubHkiPT09YSYmIW8mJiJuZXh0U2libGluZyJ9cmV0
dXJuITB9aWYobz1bZz9xLmZpcnN0Q2hpbGQ6cS5sYXN0Q2hpbGRdLGcmJnMpe2s9cVt1XXx8KHFb
dV09e30pLGo9a1thXXx8W10sbj1qWzBdPT09dyYmalsxXSxtPWpbMF09PT13JiZqWzJdLGw9biYm
cS5jaGlsZE5vZGVzW25dO3doaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfHxvLnBvcCgpKWlm
KDE9PT1sLm5vZGVUeXBlJiYrK20mJmw9PT1iKXtrW2FdPVt3LG4sbV07YnJlYWt9fWVsc2UgaWYo
cyYmKGo9KGJbdV18fChiW3VdPXt9KSlbYV0pJiZqWzBdPT09dyltPWpbMV07ZWxzZSB3aGlsZShs
PSsrbiYmbCYmbFtwXXx8KG09bj0wKXx8by5wb3AoKSlpZigoaD9sLm5vZGVOYW1lLnRvTG93ZXJD
YXNlKCk9PT1yOjE9PT1sLm5vZGVUeXBlKSYmKyttJiYocyYmKChsW3VdfHwobFt1XT17fSkpW2Fd
PVt3LG1dKSxsPT09YikpYnJlYWs7cmV0dXJuIG0tPWUsbT09PWR8fG0lZD09PTAmJm0vZD49MH19
fSxQU0VVRE86ZnVuY3Rpb24oYSxiKXt2YXIgYyxlPWQucHNldWRvc1thXXx8ZC5zZXRGaWx0ZXJz
W2EudG9Mb3dlckNhc2UoKV18fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBwc2V1ZG86ICIrYSk7cmV0
dXJuIGVbdV0/ZShiKTplLmxlbmd0aD4xPyhjPVthLGEsIiIsYl0sZC5zZXRGaWx0ZXJzLmhhc093
blByb3BlcnR5KGEudG9Mb3dlckNhc2UoKSk/aGIoZnVuY3Rpb24oYSxjKXt2YXIgZCxmPWUoYSxi
KSxnPWYubGVuZ3RoO3doaWxlKGctLSlkPUsuY2FsbChhLGZbZ10pLGFbZF09IShjW2RdPWZbZ10p
fSk6ZnVuY3Rpb24oYSl7cmV0dXJuIGUoYSwwLGMpfSk6ZX19LHBzZXVkb3M6e25vdDpoYihmdW5j
dGlvbihhKXt2YXIgYj1bXSxjPVtdLGQ9aChhLnJlcGxhY2UoUiwiJDEiKSk7cmV0dXJuIGRbdV0/
aGIoZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGYsZz1kKGEsbnVsbCxlLFtdKSxoPWEubGVuZ3RoO3do
aWxlKGgtLSkoZj1nW2hdKSYmKGFbaF09IShiW2hdPWYpKX0pOmZ1bmN0aW9uKGEsZSxmKXtyZXR1
cm4gYlswXT1hLGQoYixudWxsLGYsYyksIWMucG9wKCl9fSksaGFzOmhiKGZ1bmN0aW9uKGEpe3Jl
dHVybiBmdW5jdGlvbihiKXtyZXR1cm4gZmIoYSxiKS5sZW5ndGg+MH19KSxjb250YWluczpoYihm
dW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuKGIudGV4dENvbnRlbnR8fGIuaW5u
ZXJUZXh0fHxlKGIpKS5pbmRleE9mKGEpPi0xfX0pLGxhbmc6aGIoZnVuY3Rpb24oYSl7cmV0dXJu
IFcudGVzdChhfHwiIil8fGZiLmVycm9yKCJ1bnN1cHBvcnRlZCBsYW5nOiAiK2EpLGE9YS5yZXBs
YWNlKGNiLGRiKS50b0xvd2VyQ2FzZSgpLGZ1bmN0aW9uKGIpe3ZhciBjO2RvIGlmKGM9cD9iLmxh
bmc6Yi5nZXRBdHRyaWJ1dGUoInhtbDpsYW5nIil8fGIuZ2V0QXR0cmlidXRlKCJsYW5nIikpcmV0
dXJuIGM9Yy50b0xvd2VyQ2FzZSgpLGM9PT1hfHwwPT09Yy5pbmRleE9mKGErIi0iKTt3aGlsZSgo
Yj1iLnBhcmVudE5vZGUpJiYxPT09Yi5ub2RlVHlwZSk7cmV0dXJuITF9fSksdGFyZ2V0OmZ1bmN0
aW9uKGIpe3ZhciBjPWEubG9jYXRpb24mJmEubG9jYXRpb24uaGFzaDtyZXR1cm4gYyYmYy5zbGlj
ZSgxKT09PWIuaWR9LHJvb3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1vfSxmb2N1czpmdW5jdGlv
bihhKXtyZXR1cm4gYT09PW4uYWN0aXZlRWxlbWVudCYmKCFuLmhhc0ZvY3VzfHxuLmhhc0ZvY3Vz
KCkpJiYhIShhLnR5cGV8fGEuaHJlZnx8fmEudGFiSW5kZXgpfSxlbmFibGVkOmZ1bmN0aW9uKGEp
e3JldHVybiBhLmRpc2FibGVkPT09ITF9LGRpc2FibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRp
c2FibGVkPT09ITB9LGNoZWNrZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYhIWEuY2hlY2tlZHx8Im9wdGlvbiI9PT1iJiYhIWEu
c2VsZWN0ZWR9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLnBhcmVudE5vZGUmJmEucGFy
ZW50Tm9kZS5zZWxlY3RlZEluZGV4LGEuc2VsZWN0ZWQ9PT0hMH0sZW1wdHk6ZnVuY3Rpb24oYSl7
Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWlmKGEubm9kZVR5cGU8NilyZXR1
cm4hMTtyZXR1cm4hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiFkLnBzZXVkb3MuZW1wdHko
YSl9LGhlYWRlcjpmdW5jdGlvbihhKXtyZXR1cm4gWi50ZXN0KGEubm9kZU5hbWUpfSxpbnB1dDpm
dW5jdGlvbihhKXtyZXR1cm4gWS50ZXN0KGEubm9kZU5hbWUpfSxidXR0b246ZnVuY3Rpb24oYSl7
dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT1iJiYiYnV0dG9u
Ij09PWEudHlwZXx8ImJ1dHRvbiI9PT1ifSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiO3JldHVybiJp
bnB1dCI9PT1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkmJiJ0ZXh0Ij09PWEudHlwZSYmKG51bGw9
PShiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIikpfHwidGV4dCI9PT1iLnRvTG93ZXJDYXNlKCkpfSxm
aXJzdDpuYihmdW5jdGlvbigpe3JldHVyblswXX0pLGxhc3Q6bmIoZnVuY3Rpb24oYSxiKXtyZXR1
cm5bYi0xXX0pLGVxOm5iKGZ1bmN0aW9uKGEsYixjKXtyZXR1cm5bMD5jP2MrYjpjXX0pLGV2ZW46
bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MDtiPmM7Yys9MilhLnB1c2goYyk7cmV0dXJuIGF9
KSxvZGQ6bmIoZnVuY3Rpb24oYSxiKXtmb3IodmFyIGM9MTtiPmM7Yys9MilhLnB1c2goYyk7cmV0
dXJuIGF9KSxsdDpuYihmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBkPTA+Yz9jK2I6YzstLWQ+PTA7
KWEucHVzaChkKTtyZXR1cm4gYX0pLGd0Om5iKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5j
P2MrYjpjOysrZDxiOylhLnB1c2goZCk7cmV0dXJuIGF9KX19LGQucHNldWRvcy5udGg9ZC5wc2V1
ZG9zLmVxO2ZvcihiIGlue3JhZGlvOiEwLGNoZWNrYm94OiEwLGZpbGU6ITAscGFzc3dvcmQ6ITAs
aW1hZ2U6ITB9KWQucHNldWRvc1tiXT1sYihiKTtmb3IoYiBpbntzdWJtaXQ6ITAscmVzZXQ6ITB9
KWQucHNldWRvc1tiXT1tYihiKTtmdW5jdGlvbiBwYigpe31wYi5wcm90b3R5cGU9ZC5maWx0ZXJz
PWQucHNldWRvcyxkLnNldEZpbHRlcnM9bmV3IHBiLGc9ZmIudG9rZW5pemU9ZnVuY3Rpb24oYSxi
KXt2YXIgYyxlLGYsZyxoLGksaixrPXpbYSsiICJdO2lmKGspcmV0dXJuIGI/MDprLnNsaWNlKDAp
O2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1TLmV4ZWMoaCkpKSYmKGUm
JihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9VC5leGVj
KGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShSLCIg
Iil9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9WFtnXS5leGVj
KGgpKXx8altnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5
cGU6ZyxtYXRjaGVzOmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4g
Yj9oLmxlbmd0aDpoP2ZiLmVycm9yKGEpOnooYSxpKS5zbGljZSgwKX07ZnVuY3Rpb24gcWIoYSl7
Zm9yKHZhciBiPTAsYz1hLmxlbmd0aCxkPSIiO2M+YjtiKyspZCs9YVtiXS52YWx1ZTtyZXR1cm4g
ZH1mdW5jdGlvbiByYihhLGIsYyl7dmFyIGQ9Yi5kaXIsZT1jJiYicGFyZW50Tm9kZSI9PT1kLGY9
eCsrO3JldHVybiBiLmZpcnN0P2Z1bmN0aW9uKGIsYyxmKXt3aGlsZShiPWJbZF0paWYoMT09PWIu
bm9kZVR5cGV8fGUpcmV0dXJuIGEoYixjLGYpfTpmdW5jdGlvbihiLGMsZyl7dmFyIGgsaSxqPVt3
LGZdO2lmKGcpe3doaWxlKGI9YltkXSlpZigoMT09PWIubm9kZVR5cGV8fGUpJiZhKGIsYyxnKSly
ZXR1cm4hMH1lbHNlIHdoaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSl7aWYoaT1iW3Vd
fHwoYlt1XT17fSksKGg9aVtkXSkmJmhbMF09PT13JiZoWzFdPT09ZilyZXR1cm4galsyXT1oWzJd
O2lmKGlbZF09aixqWzJdPWEoYixjLGcpKXJldHVybiEwfX19ZnVuY3Rpb24gc2IoYSl7cmV0dXJu
IGEubGVuZ3RoPjE/ZnVuY3Rpb24oYixjLGQpe3ZhciBlPWEubGVuZ3RoO3doaWxlKGUtLSlpZigh
YVtlXShiLGMsZCkpcmV0dXJuITE7cmV0dXJuITB9OmFbMF19ZnVuY3Rpb24gdGIoYSxiLGMpe2Zv
cih2YXIgZD0wLGU9Yi5sZW5ndGg7ZT5kO2QrKylmYihhLGJbZF0sYyk7cmV0dXJuIGN9ZnVuY3Rp
b24gdWIoYSxiLGMsZCxlKXtmb3IodmFyIGYsZz1bXSxoPTAsaT1hLmxlbmd0aCxqPW51bGwhPWI7
aT5oO2grKykoZj1hW2hdKSYmKCFjfHxjKGYsZCxlKSkmJihnLnB1c2goZiksaiYmYi5wdXNoKGgp
KTtyZXR1cm4gZ31mdW5jdGlvbiB2YihhLGIsYyxkLGUsZil7cmV0dXJuIGQmJiFkW3VdJiYoZD12
YihkKSksZSYmIWVbdV0mJihlPXZiKGUsZikpLGhiKGZ1bmN0aW9uKGYsZyxoLGkpe3ZhciBqLGss
bCxtPVtdLG49W10sbz1nLmxlbmd0aCxwPWZ8fHRiKGJ8fCIqIixoLm5vZGVUeXBlP1toXTpoLFtd
KSxxPSFhfHwhZiYmYj9wOnViKHAsbSxhLGgsaSkscj1jP2V8fChmP2E6b3x8ZCk/W106ZzpxO2lm
KGMmJmMocSxyLGgsaSksZCl7aj11YihyLG4pLGQoaixbXSxoLGkpLGs9ai5sZW5ndGg7d2hpbGUo
ay0tKShsPWpba10pJiYocltuW2tdXT0hKHFbbltrXV09bCkpfWlmKGYpe2lmKGV8fGEpe2lmKGUp
e2o9W10saz1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJmoucHVzaChxW2tdPWwpO2UobnVs
bCxyPVtdLGosaSl9az1yLmxlbmd0aDt3aGlsZShrLS0pKGw9cltrXSkmJihqPWU/Sy5jYWxsKGYs
bCk6bVtrXSk+LTEmJihmW2pdPSEoZ1tqXT1sKSl9fWVsc2Ugcj11YihyPT09Zz9yLnNwbGljZShv
LHIubGVuZ3RoKTpyKSxlP2UobnVsbCxnLHIsaSk6SS5hcHBseShnLHIpfSl9ZnVuY3Rpb24gd2Io
YSl7Zm9yKHZhciBiLGMsZSxmPWEubGVuZ3RoLGc9ZC5yZWxhdGl2ZVthWzBdLnR5cGVdLGg9Z3x8
ZC5yZWxhdGl2ZVsiICJdLGk9Zz8xOjAsaz1yYihmdW5jdGlvbihhKXtyZXR1cm4gYT09PWJ9LGgs
ITApLGw9cmIoZnVuY3Rpb24oYSl7cmV0dXJuIEsuY2FsbChiLGEpPi0xfSxoLCEwKSxtPVtmdW5j
dGlvbihhLGMsZCl7cmV0dXJuIWcmJihkfHxjIT09ail8fCgoYj1jKS5ub2RlVHlwZT9rKGEsYyxk
KTpsKGEsYyxkKSl9XTtmPmk7aSsrKWlmKGM9ZC5yZWxhdGl2ZVthW2ldLnR5cGVdKW09W3JiKHNi
KG0pLGMpXTtlbHNle2lmKGM9ZC5maWx0ZXJbYVtpXS50eXBlXS5hcHBseShudWxsLGFbaV0ubWF0
Y2hlcyksY1t1XSl7Zm9yKGU9KytpO2Y+ZTtlKyspaWYoZC5yZWxhdGl2ZVthW2VdLnR5cGVdKWJy
ZWFrO3JldHVybiB2YihpPjEmJnNiKG0pLGk+MSYmcWIoYS5zbGljZSgwLGktMSkuY29uY2F0KHt2
YWx1ZToiICI9PT1hW2ktMl0udHlwZT8iKiI6IiJ9KSkucmVwbGFjZShSLCIkMSIpLGMsZT5pJiZ3
YihhLnNsaWNlKGksZSkpLGY+ZSYmd2IoYT1hLnNsaWNlKGUpKSxmPmUmJnFiKGEpKX1tLnB1c2go
Yyl9cmV0dXJuIHNiKG0pfWZ1bmN0aW9uIHhiKGEsYil7dmFyIGM9Yi5sZW5ndGg+MCxlPWEubGVu
Z3RoPjAsZj1mdW5jdGlvbihmLGcsaCxpLGspe3ZhciBsLG0sbyxwPTAscT0iMCIscj1mJiZbXSxz
PVtdLHQ9aix1PWZ8fGUmJmQuZmluZC5UQUcoIioiLGspLHY9dys9bnVsbD09dD8xOk1hdGgucmFu
ZG9tKCl8fC4xLHg9dS5sZW5ndGg7Zm9yKGsmJihqPWchPT1uJiZnKTtxIT09eCYmbnVsbCE9KGw9
dVtxXSk7cSsrKXtpZihlJiZsKXttPTA7d2hpbGUobz1hW20rK10paWYobyhsLGcsaCkpe2kucHVz
aChsKTticmVha31rJiYodz12KX1jJiYoKGw9IW8mJmwpJiZwLS0sZiYmci5wdXNoKGwpKX1pZihw
Kz1xLGMmJnEhPT1wKXttPTA7d2hpbGUobz1iW20rK10pbyhyLHMsZyxoKTtpZihmKXtpZihwPjAp
d2hpbGUocS0tKXJbcV18fHNbcV18fChzW3FdPUcuY2FsbChpKSk7cz11YihzKX1JLmFwcGx5KGks
cyksayYmIWYmJnMubGVuZ3RoPjAmJnArYi5sZW5ndGg+MSYmZmIudW5pcXVlU29ydChpKX1yZXR1
cm4gayYmKHc9dixqPXQpLHJ9O3JldHVybiBjP2hiKGYpOmZ9cmV0dXJuIGg9ZmIuY29tcGlsZT1m
dW5jdGlvbihhLGIpe3ZhciBjLGQ9W10sZT1bXSxmPUFbYSsiICJdO2lmKCFmKXtifHwoYj1nKGEp
KSxjPWIubGVuZ3RoO3doaWxlKGMtLSlmPXdiKGJbY10pLGZbdV0/ZC5wdXNoKGYpOmUucHVzaChm
KTtmPUEoYSx4YihlLGQpKSxmLnNlbGVjdG9yPWF9cmV0dXJuIGZ9LGk9ZmIuc2VsZWN0PWZ1bmN0
aW9uKGEsYixlLGYpe3ZhciBpLGosayxsLG0sbj0iZnVuY3Rpb24iPT10eXBlb2YgYSYmYSxvPSFm
JiZnKGE9bi5zZWxlY3Rvcnx8YSk7aWYoZT1lfHxbXSwxPT09by5sZW5ndGgpe2lmKGo9b1swXT1v
WzBdLnNsaWNlKDApLGoubGVuZ3RoPjImJiJJRCI9PT0oaz1qWzBdKS50eXBlJiZjLmdldEJ5SWQm
Jjk9PT1iLm5vZGVUeXBlJiZwJiZkLnJlbGF0aXZlW2pbMV0udHlwZV0pe2lmKGI9KGQuZmluZC5J
RChrLm1hdGNoZXNbMF0ucmVwbGFjZShjYixkYiksYil8fFtdKVswXSwhYilyZXR1cm4gZTtuJiYo
Yj1iLnBhcmVudE5vZGUpLGE9YS5zbGljZShqLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1pPVgubmVl
ZHNDb250ZXh0LnRlc3QoYSk/MDpqLmxlbmd0aDt3aGlsZShpLS0pe2lmKGs9altpXSxkLnJlbGF0
aXZlW2w9ay50eXBlXSlicmVhaztpZigobT1kLmZpbmRbbF0pJiYoZj1tKGsubWF0Y2hlc1swXS5y
ZXBsYWNlKGNiLGRiKSxhYi50ZXN0KGpbMF0udHlwZSkmJm9iKGIucGFyZW50Tm9kZSl8fGIpKSl7
aWYoai5zcGxpY2UoaSwxKSxhPWYubGVuZ3RoJiZxYihqKSwhYSlyZXR1cm4gSS5hcHBseShlLGYp
LGU7YnJlYWt9fX1yZXR1cm4obnx8aChhLG8pKShmLGIsIXAsZSxhYi50ZXN0KGEpJiZvYihiLnBh
cmVudE5vZGUpfHxiKSxlfSxjLnNvcnRTdGFibGU9dS5zcGxpdCgiIikuc29ydChCKS5qb2luKCIi
KT09PXUsYy5kZXRlY3REdXBsaWNhdGVzPSEhbCxtKCksYy5zb3J0RGV0YWNoZWQ9aWIoZnVuY3Rp
b24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihuLmNyZWF0ZUVsZW1lbnQo
ImRpdiIpKX0pLGliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+
PC9hPiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGpiKCJ0eXBl
fGhyZWZ8aGVpZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0
QXR0cmlidXRlKGIsInR5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMm
JmliKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGls
ZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRl
KCJ2YWx1ZSIpfSl8fGpiKCJ2YWx1ZSIsZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQi
IT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMDphLmRlZmF1bHRWYWx1ZX0pLGliKGZ1
bmN0aW9uKGEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxqYihM
LGZ1bmN0aW9uKGEsYixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dl
ckNhc2UoKTooZD1hLmdldEF0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51
bGx9KSxmYn0oYSk7bS5maW5kPXMsbS5leHByPXMuc2VsZWN0b3JzLG0uZXhwclsiOiJdPW0uZXhw
ci5wc2V1ZG9zLG0udW5pcXVlPXMudW5pcXVlU29ydCxtLnRleHQ9cy5nZXRUZXh0LG0uaXNYTUxE
b2M9cy5pc1hNTCxtLmNvbnRhaW5zPXMuY29udGFpbnM7dmFyIHQ9bS5leHByLm1hdGNoLm5lZWRz
Q29udGV4dCx1PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8sdj0vXi5bXjojXFtcLixdKiQv
O2Z1bmN0aW9uIHcoYSxiLGMpe2lmKG0uaXNGdW5jdGlvbihiKSlyZXR1cm4gbS5ncmVwKGEsZnVu
Y3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlVHlwZSlyZXR1
cm4gbS5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmciPT10
eXBlb2YgYil7aWYodi50ZXN0KGIpKXJldHVybiBtLmZpbHRlcihiLGEsYyk7Yj1tLmZpbHRlcihi
LGEpfXJldHVybiBtLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbS5pbkFycmF5KGEsYik+PTAh
PT1jfSl9bS5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6
bm90KCIrYSsiKSIpLDE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bS5maW5kLm1hdGNoZXNT
ZWxlY3RvcihkLGEpP1tkXTpbXTptLmZpbmQubWF0Y2hlcyhhLG0uZ3JlcChiLGZ1bmN0aW9uKGEp
e3JldHVybiAxPT09YS5ub2RlVHlwZX0pKX0sbS5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7
dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aDtpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJu
IHRoaXMucHVzaFN0YWNrKG0oYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGI9MDtlPmI7YisrKWlm
KG0uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3IoYj0wO2U+YjtiKyspbS5maW5k
KGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bS51bmlxdWUoYyk6YyksYy5z
ZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaWx0ZXI6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMSkpfSxub3Q6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHcodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5j
dGlvbihhKXtyZXR1cm4hIXcodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnQudGVzdChhKT9tKGEp
OmF8fFtdLCExKS5sZW5ndGh9fSk7dmFyIHgseT1hLmRvY3VtZW50LHo9L14oPzpccyooPFtcd1xX
XSs+KVtePl0qfCMoW1x3LV0qKSkkLyxBPW0uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7
aWYoIWEpcmV0dXJuIHRoaXM7aWYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hh
ckF0KDApJiYiPiI9PT1hLmNoYXJBdChhLmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxu
dWxsXTp6LmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJldHVybiFifHxiLmpxdWVyeT8oYnx8eCkuZmlu
ZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aWYoY1sxXSl7aWYoYj1iIGluc3RhbmNl
b2YgbT9iWzBdOmIsbS5tZXJnZSh0aGlzLG0ucGFyc2VIVE1MKGNbMV0sYiYmYi5ub2RlVHlwZT9i
Lm93bmVyRG9jdW1lbnR8fGI6eSwhMCkpLHUudGVzdChjWzFdKSYmbS5pc1BsYWluT2JqZWN0KGIp
KWZvcihjIGluIGIpbS5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGhpcy5hdHRy
KGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD15LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucGFy
ZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHguZmluZChhKTt0aGlzLmxlbmd0aD0xLHRo
aXNbMF09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXksdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJu
IGEubm9kZVR5cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpt
LmlzRnVuY3Rpb24oYSk/InVuZGVmaW5lZCIhPXR5cGVvZiB4LnJlYWR5P3gucmVhZHkoYSk6YSht
KToodm9pZCAwIT09YS5zZWxlY3RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNv
bnRleHQ9YS5jb250ZXh0KSxtLm1ha2VBcnJheShhLHRoaXMpKX07QS5wcm90b3R5cGU9bS5mbix4
PW0oeSk7dmFyIEI9L14oPzpwYXJlbnRzfHByZXYoPzpVbnRpbHxBbGwpKS8sQz17Y2hpbGRyZW46
ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTttLmV4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEs
YixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZVR5cGUmJih2b2lkIDA9PT1j
fHwxIT09ZS5ub2RlVHlwZXx8IW0oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJiZkLnB1c2goZSks
ZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtdO2E7YT1h
Lm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0p
LG0uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1tKGEsdGhpcyksZD1jLmxlbmd0
aDtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobS5jb250
YWlucyh0aGlzLGNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFy
IGMsZD0wLGU9dGhpcy5sZW5ndGgsZj1bXSxnPXQudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBh
P20oYSxifHx0aGlzLmNvbnRleHQpOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9
Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cGU8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9k
ZVR5cGUmJm0uZmluZC5tYXRjaGVzU2VsZWN0b3IoYyxhKSkpe2YucHVzaChjKTticmVha31yZXR1
cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9tLnVuaXF1ZShmKTpmKX0saW5kZXg6ZnVuY3Rp
b24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP20uaW5BcnJheSh0aGlzWzBdLG0oYSkp
Om0uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1swXS5wYXJlbnRO
b2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oYSxiKXty
ZXR1cm4gdGhpcy5wdXNoU3RhY2sobS51bmlxdWUobS5tZXJnZSh0aGlzLmdldCgpLG0oYSxiKSkp
KX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZP
YmplY3Q6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRChhLGIpe2RvIGE9
YVtiXTt3aGlsZShhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bS5lYWNoKHtwYXJlbnQ6ZnVu
Y3Rpb24oYSl7dmFyIGI9YS5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/Yjpu
dWxsfSxwYXJlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBtLmRpcihhLCJwYXJlbnROb2RlIil9LHBh
cmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG0uZGlyKGEsInBhcmVudE5vZGUiLGMp
fSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBEKGEsIm5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rp
b24oYSl7cmV0dXJuIEQoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRBbGw6ZnVuY3Rpb24oYSl7
cmV0dXJuIG0uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVuY3Rpb24oYSl7cmV0dXJu
IG0uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3Jl
dHVybiBtLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLGIsYyl7
cmV0dXJuIG0uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEp
e3JldHVybiBtLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxk
cmVuOmZ1bmN0aW9uKGEpe3JldHVybiBtLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6
ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1l
bnR8fGEuY29udGVudFdpbmRvdy5kb2N1bWVudDptLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxm
dW5jdGlvbihhLGIpe20uZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1tLm1hcCh0aGlzLGIsYyk7
cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUpJiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQm
JihlPW0uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjEmJihDW2FdfHwoZT1tLnVuaXF1ZShlKSks
Qi50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBFPS9c
UysvZyxGPXt9O2Z1bmN0aW9uIEcoYSl7dmFyIGI9RlthXT17fTtyZXR1cm4gbS5lYWNoKGEubWF0
Y2goRSl8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bS5DYWxsYmFja3M9ZnVuY3Rpb24o
YSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/RlthXXx8RyhhKTptLmV4dGVuZCh7fSxhKTt2YXIgYixj
LGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkm
JmwsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBw
bHkobFswXSxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/
aS5sZW5ndGgmJmooaS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rp
b24oKXtpZihoKXt2YXIgZD1oLmxlbmd0aDshZnVuY3Rpb24gZihiKXttLmVhY2goYixmdW5jdGlv
bihiLGMpe3ZhciBkPW0udHlwZShjKTsiZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8
fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0cmluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyks
Yj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigp
e3JldHVybiBoJiZtLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGEsYyl7dmFyIGQ7d2hpbGUoKGQ9
bS5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZCYmZS0tLGY+PWQmJmYt
LSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bS5pbkFycmF5KGEsaCk+LTE6ISgh
aHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30sZGlz
YWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rp
b24oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2Fi
bGUoKSx0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24o
YSxjKXtyZXR1cm4haHx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10s
Yj9pLnB1c2goYyk6aihjKSksdGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRo
KHRoaXMsYXJndW1lbnRzKSx0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVy
biBrfSxtLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRv
bmUiLG0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZXNvbHZlZCJdLFsicmVqZWN0IiwiZmFp
bCIsbS5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVkIl0sWyJub3RpZnkiLCJwcm9n
cmVzcyIsbS5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD17c3RhdGU6ZnVuY3Rp
b24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcmd1bWVudHMp
LmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3Jl
dHVybiBtLkRlZmVycmVkKGZ1bmN0aW9uKGMpe20uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9
bS5pc0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFw
cGx5KHRoaXMsYXJndW1lbnRzKTthJiZtLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2Uo
KS5kb25lKGMucmVzb2x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlsw
XSsiV2l0aCJdKHRoaXM9PT1kP2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSks
YT1udWxsfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP20u
ZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQucGlwZT1kLnRoZW4sbS5lYWNoKGIsZnVuY3Rp
b24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPWcuYWRkLGgmJmcuYWRkKGZ1bmN0aW9u
KCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spLGVbZlswXV09ZnVuY3Rpb24o
KXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3VtZW50cyksdGhpc30s
ZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGwoZSxlKSxl
fSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3Ro
LGY9MSE9PWV8fGEmJm0uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bS5EZWZl
cnJlZCgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1th
XT1hcmd1bWVudHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdp
dGgoYixjKTotLWZ8fGcucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcg
QXJyYXkoZSksaj1uZXcgQXJyYXkoZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZtLmlz
RnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWls
KGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRo
KGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEg7bS5mbi5yZWFkeT1mdW5jdGlvbihhKXtyZXR1cm4g
bS5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxtLmV4dGVuZCh7aXNSZWFkeTohMSxyZWFk
eVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9tLnJlYWR5V2FpdCsrOm0ucmVhZHkoITAp
fSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbS5yZWFkeVdhaXQ6IW0uaXNSZWFkeSl7
aWYoIXkuYm9keSlyZXR1cm4gc2V0VGltZW91dChtLnJlYWR5KTttLmlzUmVhZHk9ITAsYSE9PSEw
JiYtLW0ucmVhZHlXYWl0PjB8fChILnJlc29sdmVXaXRoKHksW21dKSxtLmZuLnRyaWdnZXJIYW5k
bGVyJiYobSh5KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKSxtKHkpLm9mZigicmVhZHkiKSkpfX19
KTtmdW5jdGlvbiBJKCl7eS5hZGRFdmVudExpc3RlbmVyPyh5LnJlbW92ZUV2ZW50TGlzdGVuZXIo
IkRPTUNvbnRlbnRMb2FkZWQiLEosITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSiwh
MSkpOih5LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEopLGEuZGV0YWNoRXZlbnQo
Im9ubG9hZCIsSikpfWZ1bmN0aW9uIEooKXsoeS5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1l
dmVudC50eXBlfHwiY29tcGxldGUiPT09eS5yZWFkeVN0YXRlKSYmKEkoKSxtLnJlYWR5KCkpfW0u
cmVhZHkucHJvbWlzZT1mdW5jdGlvbihiKXtpZighSClpZihIPW0uRGVmZXJyZWQoKSwiY29tcGxl
dGUiPT09eS5yZWFkeVN0YXRlKXNldFRpbWVvdXQobS5yZWFkeSk7ZWxzZSBpZih5LmFkZEV2ZW50
TGlzdGVuZXIpeS5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixKLCExKSxhLmFk
ZEV2ZW50TGlzdGVuZXIoImxvYWQiLEosITEpO2Vsc2V7eS5hdHRhY2hFdmVudCgib25yZWFkeXN0
YXRlY2hhbmdlIixKKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEopO3ZhciBjPSExO3RyeXtjPW51
bGw9PWEuZnJhbWVFbGVtZW50JiZ5LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyYmYy5kb1Nj
cm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbS5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdCIp
fWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUkoKSxtLnJlYWR5KCl9fSgpfXJldHVy
biBILnByb21pc2UoYil9O3ZhciBLPSJ1bmRlZmluZWQiLEw7Zm9yKEwgaW4gbShrKSlicmVhaztr
Lm93bkxhc3Q9IjAiIT09TCxrLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbShmdW5jdGlvbigp
e3ZhciBhLGIsYyxkO2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5
bGUmJihiPXkuY3JlYXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQu
c3R5bGUuY3NzVGV4dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6
MDt0b3A6MDtsZWZ0Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksdHlw
ZW9mIGIuc3R5bGUuem9vbSE9PUsmJihiLnN0eWxlLmNzc1RleHQ9ImRpc3BsYXk6aW5saW5lO21h
cmdpbjowO2JvcmRlcjowO3BhZGRpbmc6MXB4O3dpZHRoOjFweDt6b29tOjEiLGsuaW5saW5lQmxv
Y2tOZWVkc0xheW91dD1hPTM9PT1iLm9mZnNldFdpZHRoLGEmJihjLnN0eWxlLnpvb209MSkpLGMu
cmVtb3ZlQ2hpbGQoZCkpfSksZnVuY3Rpb24oKXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImRpdiIp
O2lmKG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVFeHBhbmRvPSEwO3RyeXtkZWxldGUg
YS50ZXN0fWNhdGNoKGIpe2suZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG0uYWNjZXB0RGF0
YT1mdW5jdGlvbihhKXt2YXIgYj1tLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNl
KCldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZh
LmdldEF0dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE09L14oPzpce1tcd1xXXSpcfXxcW1tc
d1xXXSpcXSkkLyxOPS8oW0EtWl0pL2c7ZnVuY3Rpb24gTyhhLGIsYyl7aWYodm9pZCAwPT09YyYm
MT09PWEubm9kZVR5cGUpe3ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE4sIi0kMSIpLnRvTG93ZXJD
YXNlKCk7aWYoYz1hLmdldEF0dHJpYnV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0
cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpN
LnRlc3QoYyk/bS5wYXJzZUpTT04oYyk6Y31jYXRjaChlKXt9bS5kYXRhKGEsYixjKX1lbHNlIGM9
dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFAoYSl7dmFyIGI7Zm9yKGIgaW4gYSlpZigoImRhdGEi
IT09Ynx8IW0uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09YilyZXR1cm4hMTtyZXR1
cm4hMH1mdW5jdGlvbiBRKGEsYixkLGUpe2lmKG0uYWNjZXB0RGF0YShhKSl7dmFyIGYsZyxoPW0u
ZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP20uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoOwotaWYo
ayYmaltrXSYmKGV8fGpba10uZGF0YSl8fHZvaWQgMCE9PWR8fCJzdHJpbmciIT10eXBlb2YgYily
ZXR1cm4ga3x8KGs9aT9hW2hdPWMucG9wKCl8fG0uZ3VpZCsrOmgpLGpba118fChqW2tdPWk/e306
e3RvSlNPTjptLm5vb3B9KSwoIm9iamVjdCI9PXR5cGVvZiBifHwiZnVuY3Rpb24iPT10eXBlb2Yg
YikmJihlP2pba109bS5leHRlbmQoaltrXSxiKTpqW2tdLmRhdGE9bS5leHRlbmQoaltrXS5kYXRh
LGIpKSxnPWpba10sZXx8KGcuZGF0YXx8KGcuZGF0YT17fSksZz1nLmRhdGEpLHZvaWQgMCE9PWQm
JihnW20uY2FtZWxDYXNlKGIpXT1kKSwic3RyaW5nIj09dHlwZW9mIGI/KGY9Z1tiXSxudWxsPT1m
JiYoZj1nW20uY2FtZWxDYXNlKGIpXSkpOmY9ZyxmfX1mdW5jdGlvbiBSKGEsYixjKXtpZihtLmFj
Y2VwdERhdGEoYSkpe3ZhciBkLGUsZj1hLm5vZGVUeXBlLGc9Zj9tLmNhY2hlOmEsaD1mP2FbbS5l
eHBhbmRvXTptLmV4cGFuZG87aWYoZ1toXSl7aWYoYiYmKGQ9Yz9nW2hdOmdbaF0uZGF0YSkpe20u
aXNBcnJheShiKT9iPWIuY29uY2F0KG0ubWFwKGIsbS5jYW1lbENhc2UpKTpiIGluIGQ/Yj1bYl06
KGI9bS5jYW1lbENhc2UoYiksYj1iIGluIGQ/W2JdOmIuc3BsaXQoIiAiKSksZT1iLmxlbmd0aDt3
aGlsZShlLS0pZGVsZXRlIGRbYltlXV07aWYoYz8hUChkKTohbS5pc0VtcHR5T2JqZWN0KGQpKXJl
dHVybn0oY3x8KGRlbGV0ZSBnW2hdLmRhdGEsUChnW2hdKSkpJiYoZj9tLmNsZWFuRGF0YShbYV0s
ITApOmsuZGVsZXRlRXhwYW5kb3x8ZyE9Zy53aW5kb3c/ZGVsZXRlIGdbaF06Z1toXT1udWxsKX19
fW0uZXh0ZW5kKHtjYWNoZTp7fSxub0RhdGE6eyJhcHBsZXQgIjohMCwiZW1iZWQgIjohMCwib2Jq
ZWN0ICI6ImNsc2lkOkQyN0NEQjZFLUFFNkQtMTFjZi05NkI4LTQ0NDU1MzU0MDAwMCJ9LGhhc0Rh
dGE6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9YS5ub2RlVHlwZT9tLmNhY2hlW2FbbS5leHBhbmRvXV06
YVttLmV4cGFuZG9dLCEhYSYmIVAoYSl9LGRhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBRKGEs
YixjKX0scmVtb3ZlRGF0YTpmdW5jdGlvbihhLGIpe3JldHVybiBSKGEsYil9LF9kYXRhOmZ1bmN0
aW9uKGEsYixjKXtyZXR1cm4gUShhLGIsYywhMCl9LF9yZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYil7
cmV0dXJuIFIoYSxiLCEwKX19KSxtLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihhLGIpe3ZhciBj
LGQsZSxmPXRoaXNbMF0sZz1mJiZmLmF0dHJpYnV0ZXM7aWYodm9pZCAwPT09YSl7aWYodGhpcy5s
ZW5ndGgmJihlPW0uZGF0YShmKSwxPT09Zi5ub2RlVHlwZSYmIW0uX2RhdGEoZiwicGFyc2VkQXR0
cnMiKSkpe2M9Zy5sZW5ndGg7d2hpbGUoYy0tKWdbY10mJihkPWdbY10ubmFtZSwwPT09ZC5pbmRl
eE9mKCJkYXRhLSIpJiYoZD1tLmNhbWVsQ2FzZShkLnNsaWNlKDUpKSxPKGYsZCxlW2RdKSkpO20u
X2RhdGEoZiwicGFyc2VkQXR0cnMiLCEwKX1yZXR1cm4gZX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IGE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3Ro
PjE/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5kYXRhKHRoaXMsYSxiKX0pOmY/TyhmLGEsbS5kYXRh
KGYsYSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1
bmN0aW9uKCl7bS5yZW1vdmVEYXRhKHRoaXMsYSl9KX19KSxtLmV4dGVuZCh7cXVldWU6ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSsicXVldWUiLGQ9bS5fZGF0YShh
LGIpLGMmJighZHx8bS5pc0FycmF5KGMpP2Q9bS5fZGF0YShhLGIsbS5tYWtlQXJyYXkoYykpOmQu
cHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Ynx8ImZ4Ijt2
YXIgYz1tLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW0uX3F1ZXVlSG9va3Mo
YSxiKSxnPWZ1bmN0aW9uKCl7bS5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMu
c2hpZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRl
IGYuc3RvcCxlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tz
OmZ1bmN0aW9uKGEsYil7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIG0uX2RhdGEoYSxjKXx8
bS5fZGF0YShhLGMse2VtcHR5Om0uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlv
bigpe20uX3JlbW92ZURhdGEoYSxiKyJxdWV1ZSIpLG0uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSks
bS5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9
dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lbnRzLmxlbmd0aDxjP20ucXVldWUodGhp
c1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGM9bS5xdWV1
ZSh0aGlzLGEsYik7bS5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiYiaW5wcm9ncmVzcyIh
PT1jWzBdJiZtLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0
aGlzLmVhY2goZnVuY3Rpb24oKXttLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1bmN0
aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEs
Yil7dmFyIGMsZD0xLGU9bS5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rp
b24oKXstLWR8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEs
YT12b2lkIDApLGE9YXx8ImZ4Ijt3aGlsZShnLS0pYz1tLl9kYXRhKGZbZ10sYSsicXVldWVIb29r
cyIpLGMmJmMuZW1wdHkmJihkKyssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNl
KGIpfX0pO3ZhciBTPS9bKy1dPyg/OlxkKlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNl
LFQ9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkxlZnQiXSxVPWZ1bmN0aW9uKGEsYil7cmV0dXJu
IGE9Ynx8YSwibm9uZSI9PT1tLmNzcyhhLCJkaXNwbGF5Iil8fCFtLmNvbnRhaW5zKGEub3duZXJE
b2N1bWVudCxhKX0sVj1tLmFjY2Vzcz1mdW5jdGlvbihhLGIsYyxkLGUsZixnKXt2YXIgaD0wLGk9
YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09bS50eXBlKGMpKXtlPSEwO2ZvcihoIGlu
IGMpbS5hY2Nlc3MoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCYmKGU9ITAs
bS5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9Yixi
PWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKG0oYSksYyl9KSksYikpZm9yKDtpPmg7aCsr
KWIoYVtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNh
bGwoYSk6aT9iKGFbMF0sYyk6Zn0sVz0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24o
KXt2YXIgYT15LmNyZWF0ZUVsZW1lbnQoImlucHV0IiksYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIp
LGM9eS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYi5pbm5lckhUTUw9IiAgPGxpbmsvPjx0
YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJz5hPC9hPjxpbnB1dCB0eXBlPSdjaGVja2JveCcvPiIs
ay5sZWFkaW5nV2hpdGVzcGFjZT0zPT09Yi5maXJzdENoaWxkLm5vZGVUeXBlLGsudGJvZHk9IWIu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGsuaHRtbFNlcmlhbGl6ZT0hIWIu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKS5sZW5ndGgsay5odG1sNUNsb25lPSI8Om5hdj48
LzpuYXY+IiE9PXkuY3JlYXRlRWxlbWVudCgibmF2IikuY2xvbmVOb2RlKCEwKS5vdXRlckhUTUws
YS50eXBlPSJjaGVja2JveCIsYS5jaGVja2VkPSEwLGMuYXBwZW5kQ2hpbGQoYSksay5hcHBlbmRD
aGVja2VkPWEuY2hlY2tlZCxiLmlubmVySFRNTD0iPHRleHRhcmVhPng8L3RleHRhcmVhPiIsay5u
b0Nsb25lQ2hlY2tlZD0hIWIuY2xvbmVOb2RlKCEwKS5sYXN0Q2hpbGQuZGVmYXVsdFZhbHVlLGMu
YXBwZW5kQ2hpbGQoYiksYi5pbm5lckhUTUw9IjxpbnB1dCB0eXBlPSdyYWRpbycgY2hlY2tlZD0n
Y2hlY2tlZCcgbmFtZT0ndCcvPiIsay5jaGVja0Nsb25lPWIuY2xvbmVOb2RlKCEwKS5jbG9uZU5v
ZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGsubm9DbG9uZUV2ZW50PSEwLGIuYXR0YWNoRXZlbnQm
JihiLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe2subm9DbG9uZUV2ZW50PSExfSks
Yi5jbG9uZU5vZGUoITApLmNsaWNrKCkpLG51bGw9PWsuZGVsZXRlRXhwYW5kbyl7ay5kZWxldGVF
eHBhbmRvPSEwO3RyeXtkZWxldGUgYi50ZXN0fWNhdGNoKGQpe2suZGVsZXRlRXhwYW5kbz0hMX19
fSgpLGZ1bmN0aW9uKCl7dmFyIGIsYyxkPXkuY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57
c3VibWl0OiEwLGNoYW5nZTohMCxmb2N1c2luOiEwfSljPSJvbiIrYiwoa1tiKyJCdWJibGVzIl09
YyBpbiBhKXx8KGQuc2V0QXR0cmlidXRlKGMsInQiKSxrW2IrIkJ1YmJsZXMiXT1kLmF0dHJpYnV0
ZXNbY10uZXhwYW5kbz09PSExKTtkPW51bGx9KCk7dmFyIFg9L14oPzppbnB1dHxzZWxlY3R8dGV4
dGFyZWEpJC9pLFk9L15rZXkvLFo9L14oPzptb3VzZXxwb2ludGVyfGNvbnRleHRtZW51KXxjbGlj
ay8sJD0vXig/OmZvY3VzaW5mb2N1c3xmb2N1c291dGJsdXIpJC8sXz0vXihbXi5dKikoPzpcLigu
Kyl8KSQvO2Z1bmN0aW9uIGFiKCl7cmV0dXJuITB9ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMX1mdW5j
dGlvbiBjYigpe3RyeXtyZXR1cm4geS5hY3RpdmVFbGVtZW50fWNhdGNoKGEpe319bS5ldmVudD17
Z2xvYmFsOnt9LGFkZDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmLGcsaCxpLGosayxsLG4sbyxw
LHEscj1tLl9kYXRhKGEpO2lmKHIpe2MuaGFuZGxlciYmKGk9YyxjPWkuaGFuZGxlcixlPWkuc2Vs
ZWN0b3IpLGMuZ3VpZHx8KGMuZ3VpZD1tLmd1aWQrKyksKGc9ci5ldmVudHMpfHwoZz1yLmV2ZW50
cz17fSksKGs9ci5oYW5kbGUpfHwoaz1yLmhhbmRsZT1mdW5jdGlvbihhKXtyZXR1cm4gdHlwZW9m
IG09PT1LfHxhJiZtLmV2ZW50LnRyaWdnZXJlZD09PWEudHlwZT92b2lkIDA6bS5ldmVudC5kaXNw
YXRjaC5hcHBseShrLmVsZW0sYXJndW1lbnRzKX0say5lbGVtPWEpLGI9KGJ8fCIiKS5tYXRjaChF
KXx8WyIiXSxoPWIubGVuZ3RoO3doaWxlKGgtLSlmPV8uZXhlYyhiW2hdKXx8W10sbz1xPWZbMV0s
cD0oZlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihqPW0uZXZlbnQuc3BlY2lhbFtvXXx8
e30sbz0oZT9qLmRlbGVnYXRlVHlwZTpqLmJpbmRUeXBlKXx8byxqPW0uZXZlbnQuc3BlY2lhbFtv
XXx8e30sbD1tLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6YyxndWlk
OmMuZ3VpZCxzZWxlY3RvcjplLG5lZWRzQ29udGV4dDplJiZtLmV4cHIubWF0Y2gubmVlZHNDb250
ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbigiLiIpfSxpKSwobj1nW29dKXx8KG49Z1tvXT1b
XSxuLmRlbGVnYXRlQ291bnQ9MCxqLnNldHVwJiZqLnNldHVwLmNhbGwoYSxkLHAsaykhPT0hMXx8
KGEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIobyxrLCExKTphLmF0dGFjaEV2
ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbyxrKSkpLGouYWRkJiYoai5hZGQuY2FsbChhLGwpLGwu
aGFuZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9uLnNwbGljZShuLmRlbGVn
YXRlQ291bnQrKywwLGwpOm4ucHVzaChsKSxtLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsfX0s
cmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixvLHAscSxyPW0u
aGFzRGF0YShhKSYmbS5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRj
aChFKXx8WyIiXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPV8uZXhlYyhiW2pdKXx8W10sbz1x
PWhbMV0scD0oaFsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8pe2w9bS5ldmVudC5zcGVjaWFs
W29dfHx7fSxvPShkP2wuZGVsZWdhdGVUeXBlOmwuYmluZFR5cGUpfHxvLG49a1tvXXx8W10saD1o
WzJdJiZuZXcgUmVnRXhwKCIoXnxcXC4pIitwLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwk
KSIpLGk9Zj1uLmxlbmd0aDt3aGlsZShmLS0pZz1uW2ZdLCFlJiZxIT09Zy5vcmlnVHlwZXx8YyYm
Yy5ndWlkIT09Zy5ndWlkfHxoJiYhaC50ZXN0KGcubmFtZXNwYWNlKXx8ZCYmZCE9PWcuc2VsZWN0
b3ImJigiKioiIT09ZHx8IWcuc2VsZWN0b3IpfHwobi5zcGxpY2UoZiwxKSxnLnNlbGVjdG9yJiZu
LmRlbGVnYXRlQ291bnQtLSxsLnJlbW92ZSYmbC5yZW1vdmUuY2FsbChhLGcpKTtpJiYhbi5sZW5n
dGgmJihsLnRlYXJkb3duJiZsLnRlYXJkb3duLmNhbGwoYSxwLHIuaGFuZGxlKSE9PSExfHxtLnJl
bW92ZUV2ZW50KGEsbyxyLmhhbmRsZSksZGVsZXRlIGtbb10pfWVsc2UgZm9yKG8gaW4gayltLmV2
ZW50LnJlbW92ZShhLG8rYltqXSxjLGQsITApO20uaXNFbXB0eU9iamVjdChrKSYmKGRlbGV0ZSBy
LmhhbmRsZSxtLl9yZW1vdmVEYXRhKGEsImV2ZW50cyIpKX19LHRyaWdnZXI6ZnVuY3Rpb24oYixj
LGQsZSl7dmFyIGYsZyxoLGksayxsLG4sbz1bZHx8eV0scD1qLmNhbGwoYiwidHlwZSIpP2IudHlw
ZTpiLHE9ai5jYWxsKGIsIm5hbWVzcGFjZSIpP2IubmFtZXNwYWNlLnNwbGl0KCIuIik6W107aWYo
aD1sPWQ9ZHx8eSwzIT09ZC5ub2RlVHlwZSYmOCE9PWQubm9kZVR5cGUmJiEkLnRlc3QocCttLmV2
ZW50LnRyaWdnZXJlZCkmJihwLmluZGV4T2YoIi4iKT49MCYmKHE9cC5zcGxpdCgiLiIpLHA9cS5z
aGlmdCgpLHEuc29ydCgpKSxnPXAuaW5kZXhPZigiOiIpPDAmJiJvbiIrcCxiPWJbbS5leHBhbmRv
XT9iOm5ldyBtLkV2ZW50KHAsIm9iamVjdCI9PXR5cGVvZiBiJiZiKSxiLmlzVHJpZ2dlcj1lPzI6
MyxiLm5hbWVzcGFjZT1xLmpvaW4oIi4iKSxiLm5hbWVzcGFjZV9yZT1iLm5hbWVzcGFjZT9uZXcg
UmVnRXhwKCIoXnxcXC4pIitxLmpvaW4oIlxcLig/Oi4qXFwufCkiKSsiKFxcLnwkKSIpOm51bGws
Yi5yZXN1bHQ9dm9pZCAwLGIudGFyZ2V0fHwoYi50YXJnZXQ9ZCksYz1udWxsPT1jP1tiXTptLm1h
a2VBcnJheShjLFtiXSksaz1tLmV2ZW50LnNwZWNpYWxbcF18fHt9LGV8fCFrLnRyaWdnZXJ8fGsu
dHJpZ2dlci5hcHBseShkLGMpIT09ITEpKXtpZighZSYmIWsubm9CdWJibGUmJiFtLmlzV2luZG93
KGQpKXtmb3IoaT1rLmRlbGVnYXRlVHlwZXx8cCwkLnRlc3QoaStwKXx8KGg9aC5wYXJlbnROb2Rl
KTtoO2g9aC5wYXJlbnROb2RlKW8ucHVzaChoKSxsPWg7bD09PShkLm93bmVyRG9jdW1lbnR8fHkp
JiZvLnB1c2gobC5kZWZhdWx0Vmlld3x8bC5wYXJlbnRXaW5kb3d8fGEpfW49MDt3aGlsZSgoaD1v
W24rK10pJiYhYi5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKWIudHlwZT1uPjE/aTprLmJpbmRUeXBl
fHxwLGY9KG0uX2RhdGEoaCwiZXZlbnRzIil8fHt9KVtiLnR5cGVdJiZtLl9kYXRhKGgsImhhbmRs
ZSIpLGYmJmYuYXBwbHkoaCxjKSxmPWcmJmhbZ10sZiYmZi5hcHBseSYmbS5hY2NlcHREYXRhKGgp
JiYoYi5yZXN1bHQ9Zi5hcHBseShoLGMpLGIucmVzdWx0PT09ITEmJmIucHJldmVudERlZmF1bHQo
KSk7aWYoYi50eXBlPXAsIWUmJiFiLmlzRGVmYXVsdFByZXZlbnRlZCgpJiYoIWsuX2RlZmF1bHR8
fGsuX2RlZmF1bHQuYXBwbHkoby5wb3AoKSxjKT09PSExKSYmbS5hY2NlcHREYXRhKGQpJiZnJiZk
W3BdJiYhbS5pc1dpbmRvdyhkKSl7bD1kW2ddLGwmJihkW2ddPW51bGwpLG0uZXZlbnQudHJpZ2dl
cmVkPXA7dHJ5e2RbcF0oKX1jYXRjaChyKXt9bS5ldmVudC50cmlnZ2VyZWQ9dm9pZCAwLGwmJihk
W2ddPWwpfXJldHVybiBiLnJlc3VsdH19LGRpc3BhdGNoOmZ1bmN0aW9uKGEpe2E9bS5ldmVudC5m
aXgoYSk7dmFyIGIsYyxlLGYsZyxoPVtdLGk9ZC5jYWxsKGFyZ3VtZW50cyksaj0obS5fZGF0YSh0
aGlzLCJldmVudHMiKXx8e30pW2EudHlwZV18fFtdLGs9bS5ldmVudC5zcGVjaWFsW2EudHlwZV18
fHt9O2lmKGlbMF09YSxhLmRlbGVnYXRlVGFyZ2V0PXRoaXMsIWsucHJlRGlzcGF0Y2h8fGsucHJl
RGlzcGF0Y2guY2FsbCh0aGlzLGEpIT09ITEpe2g9bS5ldmVudC5oYW5kbGVycy5jYWxsKHRoaXMs
YSxqKSxiPTA7d2hpbGUoKGY9aFtiKytdKSYmIWEuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSl7YS5j
dXJyZW50VGFyZ2V0PWYuZWxlbSxnPTA7d2hpbGUoKGU9Zi5oYW5kbGVyc1tnKytdKSYmIWEuaXNJ
bW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSkoIWEubmFtZXNwYWNlX3JlfHxhLm5hbWVzcGFj
ZV9yZS50ZXN0KGUubmFtZXNwYWNlKSkmJihhLmhhbmRsZU9iaj1lLGEuZGF0YT1lLmRhdGEsYz0o
KG0uZXZlbnQuc3BlY2lhbFtlLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8ZS5oYW5kbGVyKS5hcHBs
eShmLmVsZW0saSksdm9pZCAwIT09YyYmKGEucmVzdWx0PWMpPT09ITEmJihhLnByZXZlbnREZWZh
dWx0KCksYS5zdG9wUHJvcGFnYXRpb24oKSkpfXJldHVybiBrLnBvc3REaXNwYXRjaCYmay5wb3N0
RGlzcGF0Y2guY2FsbCh0aGlzLGEpLGEucmVzdWx0fX0saGFuZGxlcnM6ZnVuY3Rpb24oYSxiKXt2
YXIgYyxkLGUsZixnPVtdLGg9Yi5kZWxlZ2F0ZUNvdW50LGk9YS50YXJnZXQ7aWYoaCYmaS5ub2Rl
VHlwZSYmKCFhLmJ1dHRvbnx8ImNsaWNrIiE9PWEudHlwZSkpZm9yKDtpIT10aGlzO2k9aS5wYXJl
bnROb2RlfHx0aGlzKWlmKDE9PT1pLm5vZGVUeXBlJiYoaS5kaXNhYmxlZCE9PSEwfHwiY2xpY2si
IT09YS50eXBlKSl7Zm9yKGU9W10sZj0wO2g+ZjtmKyspZD1iW2ZdLGM9ZC5zZWxlY3RvcisiICIs
dm9pZCAwPT09ZVtjXSYmKGVbY109ZC5uZWVkc0NvbnRleHQ/bShjLHRoaXMpLmluZGV4KGkpPj0w
Om0uZmluZChjLHRoaXMsbnVsbCxbaV0pLmxlbmd0aCksZVtjXSYmZS5wdXNoKGQpO2UubGVuZ3Ro
JiZnLnB1c2goe2VsZW06aSxoYW5kbGVyczplfSl9cmV0dXJuIGg8Yi5sZW5ndGgmJmcucHVzaCh7
ZWxlbTp0aGlzLGhhbmRsZXJzOmIuc2xpY2UoaCl9KSxnfSxmaXg6ZnVuY3Rpb24oYSl7aWYoYVtt
LmV4cGFuZG9dKXJldHVybiBhO3ZhciBiLGMsZCxlPWEudHlwZSxmPWEsZz10aGlzLmZpeEhvb2tz
W2VdO2d8fCh0aGlzLmZpeEhvb2tzW2VdPWc9Wi50ZXN0KGUpP3RoaXMubW91c2VIb29rczpZLnRl
c3QoZSk/dGhpcy5rZXlIb29rczp7fSksZD1nLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGcucHJv
cHMpOnRoaXMucHJvcHMsYT1uZXcgbS5FdmVudChmKSxiPWQubGVuZ3RoO3doaWxlKGItLSljPWRb
Yl0sYVtjXT1mW2NdO3JldHVybiBhLnRhcmdldHx8KGEudGFyZ2V0PWYuc3JjRWxlbWVudHx8eSks
Mz09PWEudGFyZ2V0Lm5vZGVUeXBlJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5t
ZXRhS2V5PSEhYS5tZXRhS2V5LGcuZmlsdGVyP2cuZmlsdGVyKGEsZik6YX0scHJvcHM6ImFsdEtl
eSBidWJibGVzIGNhbmNlbGFibGUgY3RybEtleSBjdXJyZW50VGFyZ2V0IGV2ZW50UGhhc2UgbWV0
YUtleSByZWxhdGVkVGFyZ2V0IHNoaWZ0S2V5IHRhcmdldCB0aW1lU3RhbXAgdmlldyB3aGljaCIu
c3BsaXQoIiAiKSxmaXhIb29rczp7fSxrZXlIb29rczp7cHJvcHM6ImNoYXIgY2hhckNvZGUga2V5
IGtleUNvZGUiLnNwbGl0KCIgIiksZmlsdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIG51bGw9PWEu
d2hpY2gmJihhLndoaWNoPW51bGwhPWIuY2hhckNvZGU/Yi5jaGFyQ29kZTpiLmtleUNvZGUpLGF9
fSxtb3VzZUhvb2tzOntwcm9wczoiYnV0dG9uIGJ1dHRvbnMgY2xpZW50WCBjbGllbnRZIGZyb21F
bGVtZW50IG9mZnNldFggb2Zmc2V0WSBwYWdlWCBwYWdlWSBzY3JlZW5YIHNjcmVlblkgdG9FbGVt
ZW50Ii5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWIuYnV0dG9u
LGc9Yi5mcm9tRWxlbWVudDtyZXR1cm4gbnVsbD09YS5wYWdlWCYmbnVsbCE9Yi5jbGllbnRYJiYo
ZD1hLnRhcmdldC5vd25lckRvY3VtZW50fHx5LGU9ZC5kb2N1bWVudEVsZW1lbnQsYz1kLmJvZHks
YS5wYWdlWD1iLmNsaWVudFgrKGUmJmUuc2Nyb2xsTGVmdHx8YyYmYy5zY3JvbGxMZWZ0fHwwKS0o
ZSYmZS5jbGllbnRMZWZ0fHxjJiZjLmNsaWVudExlZnR8fDApLGEucGFnZVk9Yi5jbGllbnRZKyhl
JiZlLnNjcm9sbFRvcHx8YyYmYy5zY3JvbGxUb3B8fDApLShlJiZlLmNsaWVudFRvcHx8YyYmYy5j
bGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZnJiYoYS5yZWxhdGVkVGFyZ2V0PWc9PT1h
LnRhcmdldD9iLnRvRWxlbWVudDpnKSxhLndoaWNofHx2b2lkIDA9PT1mfHwoYS53aGljaD0xJmY/
MToyJmY/Mzo0JmY/MjowKSxhfX0sc3BlY2lhbDp7bG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOnt0
cmlnZ2VyOmZ1bmN0aW9uKCl7aWYodGhpcyE9PWNiKCkmJnRoaXMuZm9jdXMpdHJ5e3JldHVybiB0
aGlzLmZvY3VzKCksITF9Y2F0Y2goYSl7fX0sZGVsZWdhdGVUeXBlOiJmb2N1c2luIn0sYmx1cjp7
dHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzPT09Y2IoKSYmdGhpcy5ibHVyPyh0aGlzLmJs
dXIoKSwhMSk6dm9pZCAwfSxkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sY2xpY2s6e3RyaWdnZXI6
ZnVuY3Rpb24oKXtyZXR1cm4gbS5ub2RlTmFtZSh0aGlzLCJpbnB1dCIpJiYiY2hlY2tib3giPT09
dGhpcy50eXBlJiZ0aGlzLmNsaWNrPyh0aGlzLmNsaWNrKCksITEpOnZvaWQgMH0sX2RlZmF1bHQ6
ZnVuY3Rpb24oYSl7cmV0dXJuIG0ubm9kZU5hbWUoYS50YXJnZXQsImEiKX19LGJlZm9yZXVubG9h
ZDp7cG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWEucmVzdWx0JiZhLm9yaWdpbmFs
RXZlbnQmJihhLm9yaWdpbmFsRXZlbnQucmV0dXJuVmFsdWU9YS5yZXN1bHQpfX19LHNpbXVsYXRl
OmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW0uZXh0ZW5kKG5ldyBtLkV2ZW50LGMse3R5cGU6YSxp
c1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9tLmV2ZW50LnRyaWdnZXIoZSxudWxs
LGIpOm0uZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMu
cHJldmVudERlZmF1bHQoKX19LG0ucmVtb3ZlRXZlbnQ9eS5yZW1vdmVFdmVudExpc3RlbmVyP2Z1
bmN0aW9uKGEsYixjKXthLnJlbW92ZUV2ZW50TGlzdGVuZXImJmEucmVtb3ZlRXZlbnRMaXN0ZW5l
cihiLGMsITEpfTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Im9uIitiO2EuZGV0YWNoRXZlbnQmJih0
eXBlb2YgYVtkXT09PUsmJihhW2RdPW51bGwpLGEuZGV0YWNoRXZlbnQoZCxjKSl9LG0uRXZlbnQ9
ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcyBpbnN0YW5jZW9mIG0uRXZlbnQ/KGEmJmEudHlwZT8o
dGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZl
bnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fHZvaWQgMD09PWEuZGVmYXVsdFByZXZlbnRlZCYmYS5y
ZXR1cm5WYWx1ZT09PSExP2FiOmJiKTp0aGlzLnR5cGU9YSxiJiZtLmV4dGVuZCh0aGlzLGIpLHRo
aXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxtLm5vdygpLHZvaWQodGhpc1ttLmV4cGFuZG9d
PSEwKSk6bmV3IG0uRXZlbnQoYSxiKX0sbS5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZl
bnRlZDpiYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpiYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3Rv
cHBlZDpiYixwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVu
dDt0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hYixhJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZl
bnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigp
e3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWFiLGEm
JihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0h
MCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2lu
YWxFdmVudDt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPWFiLGEmJmEuc3RvcElt
bWVkaWF0ZVByb3BhZ2F0aW9uJiZhLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpLHRoaXMuc3Rv
cFByb3BhZ2F0aW9uKCl9fSxtLmVhY2goe21vdXNlZW50ZXI6Im1vdXNlb3ZlciIsbW91c2VsZWF2
ZToibW91c2VvdXQiLHBvaW50ZXJlbnRlcjoicG9pbnRlcm92ZXIiLHBvaW50ZXJsZWF2ZToicG9p
bnRlcm91dCJ9LGZ1bmN0aW9uKGEsYil7bS5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6
YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRU
YXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1cm4oIWV8fGUhPT1kJiYhbS5jb250YWlucyhkLGUpKSYm
KGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5
cGU9YiksY319fSksay5zdWJtaXRCdWJibGVzfHwobS5ldmVudC5zcGVjaWFsLnN1Ym1pdD17c2V0
dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbS5ub2RlTmFtZSh0aGlzLCJmb3JtIik/ITE6dm9pZCBtLmV2
ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiLGZ1bmN0aW9uKGEp
e3ZhciBiPWEudGFyZ2V0LGM9bS5ub2RlTmFtZShiLCJpbnB1dCIpfHxtLm5vZGVOYW1lKGIsImJ1
dHRvbiIpP2IuZm9ybTp2b2lkIDA7YyYmIW0uX2RhdGEoYywic3VibWl0QnViYmxlcyIpJiYobS5l
dmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9
ITB9KSxtLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0
aW9uKGEpe2EuX3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBh
cmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmbS5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBh
cmVudE5vZGUsYSwhMCkpfSx0ZWFyZG93bjpmdW5jdGlvbigpe3JldHVybiBtLm5vZGVOYW1lKHRo
aXMsImZvcm0iKT8hMTp2b2lkIG0uZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksay5j
aGFuZ2VCdWJibGVzfHwobS5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXty
ZXR1cm4gWC50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJh
ZGlvIj09PXRoaXMudHlwZSkmJihtLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hh
bmdlIixmdW5jdGlvbihhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1l
JiYodGhpcy5fanVzdF9jaGFuZ2VkPSEwKX0pLG0uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFu
Z2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5f
anVzdF9jaGFuZ2VkPSExKSxtLmV2ZW50LnNpbXVsYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSks
ITEpOnZvaWQgbS5ldmVudC5hZGQodGhpcywiYmVmb3JlYWN0aXZhdGUuX2NoYW5nZSIsZnVuY3Rp
b24oYSl7dmFyIGI9YS50YXJnZXQ7WC50ZXN0KGIubm9kZU5hbWUpJiYhbS5fZGF0YShiLCJjaGFu
Z2VCdWJibGVzIikmJihtLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIsZnVuY3Rpb24oYSl7
IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG0uZXZlbnQuc2lt
dWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksbS5fZGF0YShiLCJjaGFuZ2VC
dWJibGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4g
dGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09Yi50eXBlJiYi
Y2hlY2tib3giIT09Yi50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVu
dHMpOnZvaWQgMH0sdGVhcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbS5ldmVudC5yZW1vdmUodGhp
cywiLl9jaGFuZ2UiKSwhWC50ZXN0KHRoaXMubm9kZU5hbWUpfX0pLGsuZm9jdXNpbkJ1YmJsZXN8
fG0uZWFjaCh7Zm9jdXM6ImZvY3VzaW4iLGJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2
YXIgYz1mdW5jdGlvbihhKXttLmV2ZW50LnNpbXVsYXRlKGIsYS50YXJnZXQsbS5ldmVudC5maXgo
YSksITApfTttLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ1bmN0aW9uKCl7dmFyIGQ9dGhpcy5v
d25lckRvY3VtZW50fHx0aGlzLGU9bS5fZGF0YShkLGIpO2V8fGQuYWRkRXZlbnRMaXN0ZW5lcihh
LGMsITApLG0uX2RhdGEoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb24oKXt2YXIgZD10
aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1tLl9kYXRhKGQsYiktMTtlP20uX2RhdGEoZCxiLGUp
OihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxtLl9yZW1vdmVEYXRhKGQsYikpfX19KSxt
LmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10
eXBlb2YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZiBpbiBh
KXRoaXMub24oZixiLGMsYVtmXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhk
PWIsYz1iPXZvaWQgMCk6bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAw
KTooZD1jLGM9YixiPXZvaWQgMCkpLGQ9PT0hMSlkPWJiO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7
cmV0dXJuIDE9PT1lJiYoZz1kLGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG0oKS5vZmYoYSksZy5hcHBs
eSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1nLmd1aWR8fChnLmd1aWQ9bS5ndWlkKyspKSx0aGlz
LmVhY2goZnVuY3Rpb24oKXttLmV2ZW50LmFkZCh0aGlzLGEsZCxjLGIpfSl9LG9uZTpmdW5jdGlv
bihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY6ZnVuY3Rpb24oYSxiLGMp
e3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcmV0dXJuIGQ9YS5o
YW5kbGVPYmosbShhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnVHlwZSsi
LiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigi
b2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0
aGlzfXJldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCks
Yz09PSExJiYoYz1iYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bS5ldmVudC5yZW1vdmUodGhpcyxh
LGMsYil9KX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24o
KXttLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEs
Yil7dmFyIGM9dGhpc1swXTtyZXR1cm4gYz9tLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApOnZvaWQg
MH19KTtmdW5jdGlvbiBkYihhKXt2YXIgYj1lYi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxl
bWVudChiLnBvcCgpKTtyZXR1cm4gY312YXIgZWI9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xi
ZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8
aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1t
YXJ5fHRpbWV8dmlkZW8iLGZiPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csZ2I9bmV3IFJl
Z0V4cCgiPCg/OiIrZWIrIilbXFxzLz5dIiwiaSIpLGhiPS9eXHMrLyxpYj0vPCg/IWFyZWF8YnJ8
Y29sfGVtYmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+
L2dpLGpiPS88KFtcdzpdKykvLGtiPS88dGJvZHkvaSxsYj0vPHwmIz9cdys7LyxtYj0vPCg/OnNj
cmlwdHxzdHlsZXxsaW5rKS9pLG5iPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9p
LG9iPS9eJHxcLyg/OmphdmF8ZWNtYSlzY3JpcHQvaSxwYj0vXnRydWVcLyguKikvLHFiPS9eXHMq
PCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18LS0pPlxzKiQvZyxyYj17b3B0aW9uOlsxLCI8c2Vs
ZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWxlY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRz
ZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLHBhcmFtOlsxLCI8
b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpb
MiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRi
b2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMywiPHRh
YmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6ay5odG1s
U2VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LHNiPWRiKHkpLHRiPXNi
LmFwcGVuZENoaWxkKHkuY3JlYXRlRWxlbWVudCgiZGl2IikpO3JiLm9wdGdyb3VwPXJiLm9wdGlv
bixyYi50Ym9keT1yYi50Zm9vdD1yYi5jb2xncm91cD1yYi5jYXB0aW9uPXJiLnRoZWFkLHJiLnRo
PXJiLnRkO2Z1bmN0aW9uIHViKGEsYil7dmFyIGMsZCxlPTAsZj10eXBlb2YgYS5nZXRFbGVtZW50
c0J5VGFnTmFtZSE9PUs/YS5nZXRFbGVtZW50c0J5VGFnTmFtZShifHwiKiIpOnR5cGVvZiBhLnF1
ZXJ5U2VsZWN0b3JBbGwhPT1LP2EucXVlcnlTZWxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZigh
Zilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxsIT0oZD1jW2VdKTtlKyspIWJ8fG0ubm9k
ZU5hbWUoZCxiKT9mLnB1c2goZCk6bS5tZXJnZShmLHViKGQsYikpO3JldHVybiB2b2lkIDA9PT1i
fHxiJiZtLm5vZGVOYW1lKGEsYik/bS5tZXJnZShbYV0sZik6Zn1mdW5jdGlvbiB2YihhKXtXLnRl
c3QoYS50eXBlKSYmKGEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkKX1mdW5jdGlvbiB3YihhLGIp
e3JldHVybiBtLm5vZGVOYW1lKGEsInRhYmxlIikmJm0ubm9kZU5hbWUoMTEhPT1iLm5vZGVUeXBl
P2I6Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18
fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9
ZnVuY3Rpb24geGIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PW0uZmluZC5hdHRyKGEsInR5cGUi
KSkrIi8iK2EudHlwZSxhfWZ1bmN0aW9uIHliKGEpe3ZhciBiPXBiLmV4ZWMoYS50eXBlKTtyZXR1
cm4gYj9hLnR5cGU9YlsxXTphLnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gemIo
YSxiKXtmb3IodmFyIGMsZD0wO251bGwhPShjPWFbZF0pO2QrKyltLl9kYXRhKGMsImdsb2JhbEV2
YWwiLCFifHxtLl9kYXRhKGJbZF0sImdsb2JhbEV2YWwiKSl9ZnVuY3Rpb24gQWIoYSxiKXtpZigx
PT09Yi5ub2RlVHlwZSYmbS5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZj1tLl9kYXRhKGEpLGc9bS5f
ZGF0YShiLGYpLGg9Zi5ldmVudHM7aWYoaCl7ZGVsZXRlIGcuaGFuZGxlLGcuZXZlbnRzPXt9O2Zv
cihjIGluIGgpZm9yKGQ9MCxlPWhbY10ubGVuZ3RoO2U+ZDtkKyspbS5ldmVudC5hZGQoYixjLGhb
Y11bZF0pfWcuZGF0YSYmKGcuZGF0YT1tLmV4dGVuZCh7fSxnLmRhdGEpKX19ZnVuY3Rpb24gQmIo
YSxiKXt2YXIgYyxkLGU7aWYoMT09PWIubm9kZVR5cGUpe2lmKGM9Yi5ub2RlTmFtZS50b0xvd2Vy
Q2FzZSgpLCFrLm5vQ2xvbmVFdmVudCYmYlttLmV4cGFuZG9dKXtlPW0uX2RhdGEoYik7Zm9yKGQg
aW4gZS5ldmVudHMpbS5yZW1vdmVFdmVudChiLGQsZS5oYW5kbGUpO2IucmVtb3ZlQXR0cmlidXRl
KG0uZXhwYW5kbyl9InNjcmlwdCI9PT1jJiZiLnRleHQhPT1hLnRleHQ/KHhiKGIpLnRleHQ9YS50
ZXh0LHliKGIpKToib2JqZWN0Ij09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0
ZXJIVE1MKSxrLmh0bWw1Q2xvbmUmJmEuaW5uZXJIVE1MJiYhbS50cmltKGIuaW5uZXJIVE1MKSYm
KGIuaW5uZXJIVE1MPWEuaW5uZXJIVE1MKSk6ImlucHV0Ij09PWMmJlcudGVzdChhLnR5cGUpPyhi
LmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmNoZWNrZWQsYi52YWx1ZSE9PWEudmFsdWUmJihi
LnZhbHVlPWEudmFsdWUpKToib3B0aW9uIj09PWM/Yi5kZWZhdWx0U2VsZWN0ZWQ9Yi5zZWxlY3Rl
ZD1hLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PWN8fCJ0ZXh0YXJlYSI9PT1jKSYmKGIuZGVm
YXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19bS5leHRlbmQoe2Nsb25lOmZ1bmN0aW9uKGEsYixj
KXt2YXIgZCxlLGYsZyxoLGk9bS5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWYoay5odG1s
NUNsb25lfHxtLmlzWE1MRG9jKGEpfHwhZ2IudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2Y9YS5j
bG9uZU5vZGUoITApOih0Yi5pbm5lckhUTUw9YS5vdXRlckhUTUwsdGIucmVtb3ZlQ2hpbGQoZj10
Yi5maXJzdENoaWxkKSksIShrLm5vQ2xvbmVFdmVudCYmay5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEu
bm9kZVR5cGUmJjExIT09YS5ub2RlVHlwZXx8bS5pc1hNTERvYyhhKSkpZm9yKGQ9dWIoZiksaD11
YihhKSxnPTA7bnVsbCE9KGU9aFtnXSk7KytnKWRbZ10mJkJiKGUsZFtnXSk7aWYoYilpZihjKWZv
cihoPWh8fHViKGEpLGQ9ZHx8dWIoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylBYihlLGRbZ10p
O2Vsc2UgQWIoYSxmKTtyZXR1cm4gZD11YihmLCJzY3JpcHQiKSxkLmxlbmd0aD4wJiZ6YihkLCFp
JiZ1YihhLCJzY3JpcHQiKSksZD1oPWU9bnVsbCxmfSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEs
YixjLGQpe2Zvcih2YXIgZSxmLGcsaCxpLGosbCxuPWEubGVuZ3RoLG89ZGIoYikscD1bXSxxPTA7
bj5xO3ErKylpZihmPWFbcV0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT1tLnR5cGUoZikpbS5tZXJn
ZShwLGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobGIudGVzdChmKSl7aD1ofHxvLmFwcGVuZENo
aWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGk9KGpiLmV4ZWMoZil8fFsiIiwiIl0pWzFdLnRv
TG93ZXJDYXNlKCksbD1yYltpXXx8cmIuX2RlZmF1bHQsaC5pbm5lckhUTUw9bFsxXStmLnJlcGxh
Y2UoaWIsIjwkMT48LyQyPiIpK2xbMl0sZT1sWzBdO3doaWxlKGUtLSloPWgubGFzdENoaWxkO2lm
KCFrLmxlYWRpbmdXaGl0ZXNwYWNlJiZoYi50ZXN0KGYpJiZwLnB1c2goYi5jcmVhdGVUZXh0Tm9k
ZShoYi5leGVjKGYpWzBdKSksIWsudGJvZHkpe2Y9InRhYmxlIiE9PWl8fGtiLnRlc3QoZik/Ijx0
YWJsZT4iIT09bFsxXXx8a2IudGVzdChmKT8wOmg6aC5maXJzdENoaWxkLGU9ZiYmZi5jaGlsZE5v
ZGVzLmxlbmd0aDt3aGlsZShlLS0pbS5ub2RlTmFtZShqPWYuY2hpbGROb2Rlc1tlXSwidGJvZHki
KSYmIWouY2hpbGROb2Rlcy5sZW5ndGgmJmYucmVtb3ZlQ2hpbGQoail9bS5tZXJnZShwLGguY2hp
bGROb2RlcyksaC50ZXh0Q29udGVudD0iIjt3aGlsZShoLmZpcnN0Q2hpbGQpaC5yZW1vdmVDaGls
ZChoLmZpcnN0Q2hpbGQpO2g9by5sYXN0Q2hpbGR9ZWxzZSBwLnB1c2goYi5jcmVhdGVUZXh0Tm9k
ZShmKSk7aCYmby5yZW1vdmVDaGlsZChoKSxrLmFwcGVuZENoZWNrZWR8fG0uZ3JlcCh1YihwLCJp
bnB1dCIpLHZiKSxxPTA7d2hpbGUoZj1wW3ErK10paWYoKCFkfHwtMT09PW0uaW5BcnJheShmLGQp
KSYmKGc9bS5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksaD11YihvLmFwcGVuZENoaWxkKGYp
LCJzY3JpcHQiKSxnJiZ6YihoKSxjKSl7ZT0wO3doaWxlKGY9aFtlKytdKW9iLnRlc3QoZi50eXBl
fHwiIikmJmMucHVzaChmKX1yZXR1cm4gaD1udWxsLG99LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIp
e2Zvcih2YXIgZCxlLGYsZyxoPTAsaT1tLmV4cGFuZG8saj1tLmNhY2hlLGw9ay5kZWxldGVFeHBh
bmRvLG49bS5ldmVudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8bS5hY2NlcHRE
YXRhKGQpKSYmKGY9ZFtpXSxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50
cyluW2VdP20uZXZlbnQucmVtb3ZlKGQsZSk6bS5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pb
Zl0mJihkZWxldGUgaltmXSxsP2RlbGV0ZSBkW2ldOnR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZSE9
PUs/ZC5yZW1vdmVBdHRyaWJ1dGUoaSk6ZFtpXT1udWxsLGMucHVzaChmKSl9fX0pLG0uZm4uZXh0
ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBWKHRoaXMsZnVuY3Rpb24oYSl7cmV0dXJuIHZv
aWQgMD09PWE/bS50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQoKHRoaXNbMF0mJnRoaXNb
MF0ub3duZXJEb2N1bWVudHx8eSkuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGEsYXJndW1lbnRz
Lmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50
cyxmdW5jdGlvbihhKXtpZigxPT09dGhpcy5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5
PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9d2IodGhpcyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxw
cmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9u
KGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZVR5cGV8fDk9PT10aGlzLm5v
ZGVUeXBlKXt2YXIgYj13Yih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5maXJzdENoaWxkKX19
KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0
aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRo
aXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1
bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShh
LHRoaXMubmV4dFNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPWE/
bS5maWx0ZXIoYSx0aGlzKTp0aGlzLGU9MDtudWxsIT0oYz1kW2VdKTtlKyspYnx8MSE9PWMubm9k
ZVR5cGV8fG0uY2xlYW5EYXRhKHViKGMpKSxjLnBhcmVudE5vZGUmJihiJiZtLmNvbnRhaW5zKGMu
b3duZXJEb2N1bWVudCxjKSYmemIodWIoYywic2NyaXB0IikpLGMucGFyZW50Tm9kZS5yZW1vdmVD
aGlsZChjKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxs
IT0oYT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZtLmNsZWFuRGF0YSh1YihhLCExKSk7
d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdENoaWxkKTthLm9wdGlvbnMm
Jm0ubm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfXJldHVybiB0aGlz
fSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9PWI/YTpi
LHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG0uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVu
Y3Rpb24oYSl7cmV0dXJuIFYodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAs
ZD10aGlzLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09Yi5ub2RlVHlwZT9iLmlubmVy
SFRNTC5yZXBsYWNlKGZiLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fG1iLnRl
c3QoYSl8fCFrLmh0bWxTZXJpYWxpemUmJmdiLnRlc3QoYSl8fCFrLmxlYWRpbmdXaGl0ZXNwYWNl
JiZoYi50ZXN0KGEpfHxyYlsoamIuZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0p
KXthPWEucmVwbGFjZShpYiwiPCQxPjwvJDI+Iik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118
fHt9LDE9PT1iLm5vZGVUeXBlJiYobS5jbGVhbkRhdGEodWIoYiwhMSkpLGIuaW5uZXJIVE1MPWEp
O2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlbmQoYSl9LG51bGwsYSxhcmd1bWVu
dHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHNbMF07cmV0
dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGIpe2E9dGhpcy5wYXJlbnROb2Rl
LG0uY2xlYW5EYXRhKHViKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYSYmKGEu
bGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihh
KXtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1lLmFw
cGx5KFtdLGEpO3ZhciBjLGQsZixnLGgsaSxqPTAsbD10aGlzLmxlbmd0aCxuPXRoaXMsbz1sLTEs
cD1hWzBdLHE9bS5pc0Z1bmN0aW9uKHApO2lmKHF8fGw+MSYmInN0cmluZyI9PXR5cGVvZiBwJiYh
ay5jaGVja0Nsb25lJiZuYi50ZXN0KHApKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFy
IGQ9bi5lcShjKTtxJiYoYVswXT1wLmNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChh
LGIpfSk7aWYobCYmKGk9bS5idWlsZEZyYWdtZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCEx
LHRoaXMpLGM9aS5maXJzdENoaWxkLDE9PT1pLmNoaWxkTm9kZXMubGVuZ3RoJiYoaT1jKSxjKSl7
Zm9yKGc9bS5tYXAodWIoaSwic2NyaXB0IikseGIpLGY9Zy5sZW5ndGg7bD5qO2orKylkPWksaiE9
PW8mJihkPW0uY2xvbmUoZCwhMCwhMCksZiYmbS5tZXJnZShnLHViKGQsInNjcmlwdCIpKSksYi5j
YWxsKHRoaXNbal0sZCxqKTtpZihmKWZvcihoPWdbZy5sZW5ndGgtMV0ub3duZXJEb2N1bWVudCxt
Lm1hcChnLHliKSxqPTA7Zj5qO2orKylkPWdbal0sb2IudGVzdChkLnR5cGV8fCIiKSYmIW0uX2Rh
dGEoZCwiZ2xvYmFsRXZhbCIpJiZtLmNvbnRhaW5zKGgsZCkmJihkLnNyYz9tLl9ldmFsVXJsJiZt
Ll9ldmFsVXJsKGQuc3JjKTptLmdsb2JhbEV2YWwoKGQudGV4dHx8ZC50ZXh0Q29udGVudHx8ZC5p
bm5lckhUTUx8fCIiKS5yZXBsYWNlKHFiLCIiKSkpO2k9Yz1udWxsfXJldHVybiB0aGlzfX0pLG0u
ZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6
ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1
bmN0aW9uKGEsYil7bS5mblthXT1mdW5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZz1tKGEp
LGg9Zy5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9PT1oP3RoaXM6dGhpcy5jbG9uZSghMCksbShnW2Rd
KVtiXShjKSxmLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUpfX0pO3Zh
ciBDYixEYj17fTtmdW5jdGlvbiBFYihiLGMpe3ZhciBkLGU9bShjLmNyZWF0ZUVsZW1lbnQoYikp
LmFwcGVuZFRvKGMuYm9keSksZj1hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlJiYoZD1hLmdldERl
ZmF1bHRDb21wdXRlZFN0eWxlKGVbMF0pKT9kLmRpc3BsYXk6bS5jc3MoZVswXSwiZGlzcGxheSIp
O3JldHVybiBlLmRldGFjaCgpLGZ9ZnVuY3Rpb24gRmIoYSl7dmFyIGI9eSxjPURiW2FdO3JldHVy
biBjfHwoYz1FYihhLGIpLCJub25lIiE9PWMmJmN8fChDYj0oQ2J8fG0oIjxpZnJhbWUgZnJhbWVi
b3JkZXI9JzAnIHdpZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVs
ZW1lbnQpLGI9KENiWzBdLmNvbnRlbnRXaW5kb3d8fENiWzBdLmNvbnRlbnREb2N1bWVudCkuZG9j
dW1lbnQsYi53cml0ZSgpLGIuY2xvc2UoKSxjPUViKGEsYiksQ2IuZGV0YWNoKCkpLERiW2FdPWMp
LGN9IWZ1bmN0aW9uKCl7dmFyIGE7ay5zaHJpbmtXcmFwQmxvY2tzPWZ1bmN0aW9uKCl7aWYobnVs
bCE9YSlyZXR1cm4gYTthPSExO3ZhciBiLGMsZDtyZXR1cm4gYz15LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJib2R5IilbMF0sYyYmYy5zdHlsZT8oYj15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9eS5j
cmVhdGVFbGVtZW50KCJkaXYiKSxkLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO2Jv
cmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7dG9wOjA7bGVmdDotOTk5OXB4IixjLmFwcGVuZENoaWxk
KGQpLmFwcGVuZENoaWxkKGIpLHR5cGVvZiBiLnN0eWxlLnpvb20hPT1LJiYoYi5zdHlsZS5jc3NU
ZXh0PSItd2Via2l0LWJveC1zaXppbmc6Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRl
bnQtYm94O2JveC1zaXppbmc6Y29udGVudC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3Jk
ZXI6MDtwYWRkaW5nOjFweDt3aWR0aDoxcHg7em9vbToxIixiLmFwcGVuZENoaWxkKHkuY3JlYXRl
RWxlbWVudCgiZGl2IikpLnN0eWxlLndpZHRoPSI1cHgiLGE9MyE9PWIub2Zmc2V0V2lkdGgpLGMu
cmVtb3ZlQ2hpbGQoZCksYSk6dm9pZCAwfX0oKTt2YXIgR2I9L15tYXJnaW4vLEhiPW5ldyBSZWdF
eHAoIl4oIitTKyIpKD8hcHgpW2EteiVdKyQiLCJpIiksSWIsSmIsS2I9L14odG9wfHJpZ2h0fGJv
dHRvbXxsZWZ0KSQvO2EuZ2V0Q29tcHV0ZWRTdHlsZT8oSWI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEu
b3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCl9LEpiPWZ1
bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8SWIoYSksZz1j
P2MuZ2V0UHJvcGVydHlWYWx1ZShiKXx8Y1tiXTp2b2lkIDAsYyYmKCIiIT09Z3x8bS5jb250YWlu
cyhhLm93bmVyRG9jdW1lbnQsYSl8fChnPW0uc3R5bGUoYSxiKSksSGIudGVzdChnKSYmR2IudGVz
dChiKSYmKGQ9aC53aWR0aCxlPWgubWluV2lkdGgsZj1oLm1heFdpZHRoLGgubWluV2lkdGg9aC5t
YXhXaWR0aD1oLndpZHRoPWcsZz1jLndpZHRoLGgud2lkdGg9ZCxoLm1pbldpZHRoPWUsaC5tYXhX
aWR0aD1mKSksdm9pZCAwPT09Zz9nOmcrIiJ9KTp5LmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5
bGUmJihJYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5jdXJyZW50U3R5bGV9LEpiPWZ1bmN0aW9uKGEs
YixjKXt2YXIgZCxlLGYsZyxoPWEuc3R5bGU7cmV0dXJuIGM9Y3x8SWIoYSksZz1jP2NbYl06dm9p
ZCAwLG51bGw9PWcmJmgmJmhbYl0mJihnPWhbYl0pLEhiLnRlc3QoZykmJiFLYi50ZXN0KGIpJiYo
ZD1oLmxlZnQsZT1hLnJ1bnRpbWVTdHlsZSxmPWUmJmUubGVmdCxmJiYoZS5sZWZ0PWEuY3VycmVu
dFN0eWxlLmxlZnQpLGgubGVmdD0iZm9udFNpemUiPT09Yj8iMWVtIjpnLGc9aC5waXhlbExlZnQr
InB4IixoLmxlZnQ9ZCxmJiYoZS5sZWZ0PWYpKSx2b2lkIDA9PT1nP2c6ZysiInx8ImF1dG8ifSk7
ZnVuY3Rpb24gTGIoYSxiKXtyZXR1cm57Z2V0OmZ1bmN0aW9uKCl7dmFyIGM9YSgpO2lmKG51bGwh
PWMpcmV0dXJuIGM/dm9pZCBkZWxldGUgdGhpcy5nZXQ6KHRoaXMuZ2V0PWIpLmFwcGx5KHRoaXMs
YXJndW1lbnRzKX19fSFmdW5jdGlvbigpe3ZhciBiLGMsZCxlLGYsZyxoO2lmKGI9eS5jcmVhdGVF
bGVtZW50KCJkaXYiKSxiLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJl
Zj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixkPWIuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImEiKVswXSxjPWQmJmQuc3R5bGUpe2MuY3NzVGV4dD0iZmxvYXQ6bGVmdDtvcGFjaXR5
Oi41IixrLm9wYWNpdHk9IjAuNSI9PT1jLm9wYWNpdHksay5jc3NGbG9hdD0hIWMuY3NzRmxvYXQs
Yi5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGIuY2xvbmVOb2RlKCEwKS5zdHls
ZS5iYWNrZ3JvdW5kQ2xpcD0iIixrLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Yi5z
dHlsZS5iYWNrZ3JvdW5kQ2xpcCxrLmJveFNpemluZz0iIj09PWMuYm94U2l6aW5nfHwiIj09PWMu
TW96Qm94U2l6aW5nfHwiIj09PWMuV2Via2l0Qm94U2l6aW5nLG0uZXh0ZW5kKGsse3JlbGlhYmxl
SGlkZGVuT2Zmc2V0czpmdW5jdGlvbigpe3JldHVybiBudWxsPT1nJiZpKCksZ30sYm94U2l6aW5n
UmVsaWFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZiYmaSgpLGZ9LHBpeGVsUG9zaXRpb246
ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbD09ZSYmaSgpLGV9LHJlbGlhYmxlTWFyZ2luUmlnaHQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gbnVsbD09aCYmaSgpLGh9fSk7ZnVuY3Rpb24gaSgpe3ZhciBiLGMsZCxp
O2M9eS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLGMmJmMuc3R5bGUmJihiPXkuY3Jl
YXRlRWxlbWVudCgiZGl2IiksZD15LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQuc3R5bGUuY3NzVGV4
dD0icG9zaXRpb246YWJzb2x1dGU7Ym9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDt0b3A6MDtsZWZ0
Oi05OTk5cHgiLGMuYXBwZW5kQ2hpbGQoZCkuYXBwZW5kQ2hpbGQoYiksYi5zdHlsZS5jc3NUZXh0
PSItd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDstbW96LWJveC1zaXppbmc6Ym9yZGVyLWJv
eDtib3gtc2l6aW5nOmJvcmRlci1ib3g7ZGlzcGxheTpibG9jazttYXJnaW4tdG9wOjElO3RvcDox
JTtib3JkZXI6MXB4O3BhZGRpbmc6MXB4O3dpZHRoOjRweDtwb3NpdGlvbjphYnNvbHV0ZSIsZT1m
PSExLGg9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYoZT0iMSUiIT09KGEuZ2V0Q29tcHV0ZWRTdHls
ZShiLG51bGwpfHx7fSkudG9wLGY9IjRweCI9PT0oYS5nZXRDb21wdXRlZFN0eWxlKGIsbnVsbCl8
fHt3aWR0aDoiNHB4In0pLndpZHRoLGk9Yi5hcHBlbmRDaGlsZCh5LmNyZWF0ZUVsZW1lbnQoImRp
diIpKSxpLnN0eWxlLmNzc1RleHQ9Yi5zdHlsZS5jc3NUZXh0PSItd2Via2l0LWJveC1zaXppbmc6
Y29udGVudC1ib3g7LW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94O2JveC1zaXppbmc6Y29udGVu
dC1ib3g7ZGlzcGxheTpibG9jazttYXJnaW46MDtib3JkZXI6MDtwYWRkaW5nOjAiLGkuc3R5bGUu
bWFyZ2luUmlnaHQ9aS5zdHlsZS53aWR0aD0iMCIsYi5zdHlsZS53aWR0aD0iMXB4IixoPSFwYXJz
ZUZsb2F0KChhLmdldENvbXB1dGVkU3R5bGUoaSxudWxsKXx8e30pLm1hcmdpblJpZ2h0KSksYi5p
bm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkPjwvdGQ+PHRkPnQ8L3RkPjwvdHI+PC90YWJsZT4iLGk9
Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGQiKSxpWzBdLnN0eWxlLmNzc1RleHQ9Im1hcmdpbjow
O2JvcmRlcjowO3BhZGRpbmc6MDtkaXNwbGF5Om5vbmUiLGc9MD09PWlbMF0ub2Zmc2V0SGVpZ2h0
LGcmJihpWzBdLnN0eWxlLmRpc3BsYXk9IiIsaVsxXS5zdHlsZS5kaXNwbGF5PSJub25lIixnPTA9
PT1pWzBdLm9mZnNldEhlaWdodCksYy5yZW1vdmVDaGlsZChkKSl9fX0oKSxtLnN3YXA9ZnVuY3Rp
b24oYSxiLGMsZCl7dmFyIGUsZixnPXt9O2ZvcihmIGluIGIpZ1tmXT1hLnN0eWxlW2ZdLGEuc3R5
bGVbZl09YltmXTtlPWMuYXBwbHkoYSxkfHxbXSk7Zm9yKGYgaW4gYilhLnN0eWxlW2ZdPWdbZl07
cmV0dXJuIGV9O3ZhciBNYj0vYWxwaGFcKFteKV0qXCkvaSxOYj0vb3BhY2l0eVxzKj1ccyooW14p
XSopLyxPYj0vXihub25lfHRhYmxlKD8hLWNbZWFdKS4rKS8sUGI9bmV3IFJlZ0V4cCgiXigiK1Mr
IikoLiopJCIsImkiKSxRYj1uZXcgUmVnRXhwKCJeKFsrLV0pPSgiK1MrIikiLCJpIiksUmI9e3Bv
c2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LFNi
PXtsZXR0ZXJTcGFjaW5nOiIwIixmb250V2VpZ2h0OiI0MDAifSxUYj1bIldlYmtpdCIsIk8iLCJN
b3oiLCJtcyJdO2Z1bmN0aW9uIFViKGEsYil7aWYoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hh
ckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkPWIsZT1UYi5sZW5ndGg7d2hpbGUoZS0t
KWlmKGI9VGJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9ZnVuY3Rpb24gVmIoYSxiKXtm
b3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWFbZ10sZC5zdHlsZSYm
KGZbZ109bS5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj8oZltnXXx8
Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJlUo
ZCkmJihmW2ddPW0uX2RhdGEoZCwib2xkZGlzcGxheSIsRmIoZC5ub2RlTmFtZSkpKSk6KGU9VShk
KSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZtLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzptLmNzcyhk
LCJkaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUi
IT09ZC5zdHlsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxh
eT1iP2ZbZ118fCIiOiJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFdiKGEsYixjKXt2YXIgZD1Q
Yi5leGVjKGIpO3JldHVybiBkP01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpi
fWZ1bmN0aW9uIFhiKGEsYixjLGQsZSl7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVu
dCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0PmY7Zis9MikibWFyZ2luIj09PWMmJihnKz1tLmNz
cyhhLGMrVFtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09YyYmKGctPW0uY3NzKGEsInBhZGRpbmci
K1RbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lk
dGgiLCEwLGUpKSk6KGcrPW0uY3NzKGEsInBhZGRpbmciK1RbZl0sITAsZSksInBhZGRpbmciIT09
YyYmKGcrPW0uY3NzKGEsImJvcmRlciIrVFtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dXJuIGd9ZnVu
Y3Rpb24gWWIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphLm9m
ZnNldEhlaWdodCxmPUliKGEpLGc9ay5ib3hTaXppbmcmJiJib3JkZXItYm94Ij09PW0uY3NzKGEs
ImJveFNpemluZyIsITEsZik7aWYoMD49ZXx8bnVsbD09ZSl7aWYoZT1KYihhLGIsZiksKDA+ZXx8
bnVsbD09ZSkmJihlPWEuc3R5bGVbYl0pLEhiLnRlc3QoZSkpcmV0dXJuIGU7ZD1nJiYoay5ib3hT
aXppbmdSZWxpYWJsZSgpfHxlPT09YS5zdHlsZVtiXSksZT1wYXJzZUZsb2F0KGUpfHwwfXJldHVy
biBlK1hiKGEsYixjfHwoZz8iYm9yZGVyIjoiY29udGVudCIpLGQsZikrInB4In1tLmV4dGVuZCh7
Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPUpiKGEsIm9w
YWNpdHkiKTtyZXR1cm4iIj09PWM/IjEiOmN9fX19LGNzc051bWJlcjp7Y29sdW1uQ291bnQ6ITAs
ZmlsbE9wYWNpdHk6ITAsZmxleEdyb3c6ITAsZmxleFNocmluazohMCxmb250V2VpZ2h0OiEwLGxp
bmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5k
ZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6ay5jc3NGbG9hdD8iY3NzRmxvYXQiOiJz
dHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUm
JjghPT1hLm5vZGVUeXBlJiZhLnN0eWxlKXt2YXIgZSxmLGcsaD1tLmNhbWVsQ2FzZShiKSxpPWEu
c3R5bGU7aWYoYj1tLmNzc1Byb3BzW2hdfHwobS5jc3NQcm9wc1toXT1VYihpLGgpKSxnPW0uY3Nz
SG9va3NbYl18fG0uY3NzSG9va3NbaF0sdm9pZCAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2
b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07aWYoZj10eXBlb2YgYywic3RyaW5nIj09
PWYmJihlPVFiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3BhcnNlRmxvYXQobS5jc3MoYSxi
KSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PWZ8fG0uY3NzTnVtYmVy
W2hdfHwoYys9InB4Iiksay5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIuaW5kZXhPZigi
YmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9PT0o
Yz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09Y31jYXRjaChqKXt9fX0sY3NzOmZ1bmN0aW9uKGEs
YixjLGQpe3ZhciBlLGYsZyxoPW0uY2FtZWxDYXNlKGIpO3JldHVybiBiPW0uY3NzUHJvcHNbaF18
fChtLmNzc1Byb3BzW2hdPVViKGEuc3R5bGUsaCkpLGc9bS5jc3NIb29rc1tiXXx8bS5jc3NIb29r
c1toXSxnJiYiZ2V0ImluIGcmJihmPWcuZ2V0KGEsITAsYykpLHZvaWQgMD09PWYmJihmPUpiKGEs
YixkKSksIm5vcm1hbCI9PT1mJiZiIGluIFNiJiYoZj1TYltiXSksIiI9PT1jfHxjPyhlPXBhcnNl
RmxvYXQoZiksYz09PSEwfHxtLmlzTnVtZXJpYyhlKT9lfHwwOmYpOmZ9fSksbS5lYWNoKFsiaGVp
Z2h0Iiwid2lkdGgiXSxmdW5jdGlvbihhLGIpe20uY3NzSG9va3NbYl09e2dldDpmdW5jdGlvbihh
LGMsZCl7cmV0dXJuIGM/T2IudGVzdChtLmNzcyhhLCJkaXNwbGF5IikpJiYwPT09YS5vZmZzZXRX
aWR0aD9tLnN3YXAoYSxSYixmdW5jdGlvbigpe3JldHVybiBZYihhLGIsZCl9KTpZYihhLGIsZCk6
dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPWQmJkliKGEpO3JldHVybiBXYihhLGMs
ZD9YYihhLGIsZCxrLmJveFNpemluZyYmImJvcmRlci1ib3giPT09bS5jc3MoYSwiYm94U2l6aW5n
IiwhMSxlKSxlKTowKX19fSksay5vcGFjaXR5fHwobS5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVu
Y3Rpb24oYSxiKXtyZXR1cm4gTmIudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5
bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpPy4wMSpwYXJzZUZsb2F0KFJlZ0V4cC4kMSkr
IiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRT
dHlsZSxlPW0uaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrMTAwKmIrIikiOiIiLGY9ZCYm
ZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MSwoYj49MXx8IiI9PT1iKSYmIiI9PT1tLnRy
aW0oZi5yZXBsYWNlKE1iLCIiKSkmJmMucmVtb3ZlQXR0cmlidXRlJiYoYy5yZW1vdmVBdHRyaWJ1
dGUoImZpbHRlciIpLCIiPT09Ynx8ZCYmIWQuZmlsdGVyKXx8KGMuZmlsdGVyPU1iLnRlc3QoZik/
Zi5yZXBsYWNlKE1iLGUpOmYrIiAiK2UpfX0pLG0uY3NzSG9va3MubWFyZ2luUmlnaHQ9TGIoay5y
ZWxpYWJsZU1hcmdpblJpZ2h0LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/bS5zd2FwKGEse2Rpc3Bs
YXk6ImlubGluZS1ibG9jayJ9LEpiLFthLCJtYXJnaW5SaWdodCJdKTp2b2lkIDB9KSxtLmVhY2go
e21hcmdpbjoiIixwYWRkaW5nOiIiLGJvcmRlcjoiV2lkdGgifSxmdW5jdGlvbihhLGIpe20uY3Nz
SG9va3NbYStiXT17ZXhwYW5kOmZ1bmN0aW9uKGMpe2Zvcih2YXIgZD0wLGU9e30sZj0ic3RyaW5n
Ij09dHlwZW9mIGM/Yy5zcGxpdCgiICIpOltjXTs0PmQ7ZCsrKWVbYStUW2RdK2JdPWZbZF18fGZb
ZC0yXXx8ZlswXTtyZXR1cm4gZX19LEdiLnRlc3QoYSl8fChtLmNzc0hvb2tzW2ErYl0uc2V0PVdi
KX0pLG0uZm4uZXh0ZW5kKHtjc3M6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9u
KGEsYixjKXt2YXIgZCxlLGY9e30sZz0wO2lmKG0uaXNBcnJheShiKSl7Zm9yKGQ9SWIoYSksZT1i
Lmxlbmd0aDtlPmc7ZysrKWZbYltnXV09bS5jc3MoYSxiW2ddLCExLGQpO3JldHVybiBmfXJldHVy
biB2b2lkIDAhPT1jP20uc3R5bGUoYSxiLGMpOm0uY3NzKGEsYil9LGEsYixhcmd1bWVudHMubGVu
Z3RoPjEpfSxzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIFZiKHRoaXMsITApfSxoaWRlOmZ1bmN0aW9u
KCl7cmV0dXJuIFZiKHRoaXMpfSx0b2dnbGU6ZnVuY3Rpb24oYSl7cmV0dXJuImJvb2xlYW4iPT10
eXBlb2YgYT9hP3RoaXMuc2hvdygpOnRoaXMuaGlkZSgpOnRoaXMuZWFjaChmdW5jdGlvbigpe1Uo
dGhpcyk/bSh0aGlzKS5zaG93KCk6bSh0aGlzKS5oaWRlKCl9KX19KTtmdW5jdGlvbiBaYihhLGIs
YyxkLGUpe3JldHVybiBuZXcgWmIucHJvdG90eXBlLmluaXQoYSxiLGMsZCxlKX1tLlR3ZWVuPVpi
LFpiLnByb3RvdHlwZT17Y29uc3RydWN0b3I6WmIsaW5pdDpmdW5jdGlvbihhLGIsYyxkLGUsZil7
dGhpcy5lbGVtPWEsdGhpcy5wcm9wPWMsdGhpcy5lYXNpbmc9ZXx8InN3aW5nIix0aGlzLm9wdGlv
bnM9Yix0aGlzLnN0YXJ0PXRoaXMubm93PXRoaXMuY3VyKCksdGhpcy5lbmQ9ZCx0aGlzLnVuaXQ9
Znx8KG0uY3NzTnVtYmVyW2NdPyIiOiJweCIpCi19LGN1cjpmdW5jdGlvbigpe3ZhciBhPVpiLnBy
b3BIb29rc1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTpaYi5wcm9wSG9v
a3MuX2RlZmF1bHQuZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz1aYi5wcm9wSG9v
a3NbdGhpcy5wcm9wXTtyZXR1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bS5l
YXNpbmdbdGhpcy5lYXNpbmddKGEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0
aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0odGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0
YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0
aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTpaYi5wcm9wSG9va3MuX2RlZmF1bHQu
c2V0KHRoaXMpLHRoaXN9fSxaYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5cGU9WmIucHJvdG90eXBl
LFpiLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjtyZXR1cm4gbnVs
bD09YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2EucHJv
cF0/KGI9bS5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVth
LnByb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bS5meC5zdGVwW2EucHJvcF0/bS5meC5zdGVwW2EucHJv
cF0oYSk6YS5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW20uY3NzUHJvcHNbYS5wcm9w
XV18fG0uY3NzSG9va3NbYS5wcm9wXSk/bS5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5p
dCk6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0sWmIucHJvcEhvb2tzLnNjcm9sbFRvcD1aYi5wcm9w
SG9va3Muc2Nyb2xsTGVmdD17c2V0OmZ1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVt
LnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wXT1hLm5vdyl9fSxtLmVhc2luZz17bGluZWFyOmZ1
bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlvbihhKXtyZXR1cm4uNS1NYXRoLmNvcyhh
Kk1hdGguUEkpLzJ9fSxtLmZ4PVpiLnByb3RvdHlwZS5pbml0LG0uZnguc3RlcD17fTt2YXIgJGIs
X2IsYWM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGJjPW5ldyBSZWdFeHAoIl4oPzooWystXSk9
fCkoIitTKyIpKFthLXolXSopJCIsImkiKSxjYz0vcXVldWVIb29rcyQvLGRjPVtpY10sZWM9eyIq
IjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigpLGU9
YmMuZXhlYyhiKSxmPWUmJmVbM118fChtLmNzc051bWJlclthXT8iIjoicHgiKSxnPShtLmNzc051
bWJlclthXXx8InB4IiE9PWYmJitkKSYmYmMuZXhlYyhtLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIw
O2lmKGcmJmdbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41Iixn
Lz1oLG0uc3R5bGUoYy5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgm
Ji0taSl9cmV0dXJuIGUmJihnPWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/
ZysoZVsxXSsxKSplWzJdOitlWzJdKSxjfV19O2Z1bmN0aW9uIGZjKCl7cmV0dXJuIHNldFRpbWVv
dXQoZnVuY3Rpb24oKXskYj12b2lkIDB9KSwkYj1tLm5vdygpfWZ1bmN0aW9uIGdjKGEsYil7dmFy
IGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0PmU7ZSs9Mi1iKWM9VFtlXSxkWyJtYXJn
aW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9wYWNpdHk9ZC53aWR0aD1hKSxk
fWZ1bmN0aW9uIGhjKGEsYixjKXtmb3IodmFyIGQsZT0oZWNbYl18fFtdKS5jb25jYXQoZWNbIioi
XSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcmV0dXJuIGR9
ZnVuY3Rpb24gaWMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGwsbj10aGlzLG89e30scD1hLnN0
eWxlLHE9YS5ub2RlVHlwZSYmVShhKSxyPW0uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9
bS5fcXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1o
LmVtcHR5LmZpcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51
bnF1ZXVlZCsrLG4uYWx3YXlzKGZ1bmN0aW9uKCl7bi5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVl
dWVkLS0sbS5xdWV1ZShhLCJmeCIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5u
b2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVy
ZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0saj1tLmNzcyhhLCJkaXNwbGF5IiksbD0ibm9u
ZSI9PT1qP20uX2RhdGEoYSwib2xkZGlzcGxheSIpfHxGYihhLm5vZGVOYW1lKTpqLCJpbmxpbmUi
PT09bCYmIm5vbmUiPT09bS5jc3MoYSwiZmxvYXQiKSYmKGsuaW5saW5lQmxvY2tOZWVkc0xheW91
dCYmImlubGluZSIhPT1GYihhLm5vZGVOYW1lKT9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1i
bG9jayIpKSxjLm92ZXJmbG93JiYocC5vdmVyZmxvdz0iaGlkZGVuIixrLnNocmlua1dyYXBCbG9j
a3MoKXx8bi5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdmVy
Zmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGlu
IGIpaWYoZT1iW2RdLGFjLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1l
LGU9PT0ocT8iaGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0p
Y29udGludWU7cT0hMH1vW2RdPXImJnJbZF18fG0uc3R5bGUoYSxkKX1lbHNlIGo9dm9pZCAwO2lm
KG0uaXNFbXB0eU9iamVjdChvKSkiaW5saW5lIj09PSgibm9uZSI9PT1qP0ZiKGEubm9kZU5hbWUp
OmopJiYocC5kaXNwbGF5PWopO2Vsc2V7cj8iaGlkZGVuImluIHImJihxPXIuaGlkZGVuKTpyPW0u
X2RhdGEoYSwiZnhzaG93Iix7fSksZiYmKHIuaGlkZGVuPSFxKSxxP20oYSkuc2hvdygpOm4uZG9u
ZShmdW5jdGlvbigpe20oYSkuaGlkZSgpfSksbi5kb25lKGZ1bmN0aW9uKCl7dmFyIGI7bS5fcmVt
b3ZlRGF0YShhLCJmeHNob3ciKTtmb3IoYiBpbiBvKW0uc3R5bGUoYSxiLG9bYl0pfSk7Zm9yKGQg
aW4gbylnPWhjKHE/cltkXTowLGQsbiksZCBpbiByfHwocltkXT1nLnN0YXJ0LHEmJihnLmVuZD1n
LnN0YXJ0LGcuc3RhcnQ9IndpZHRoIj09PWR8fCJoZWlnaHQiPT09ZD8xOjApKX19ZnVuY3Rpb24g
amMoYSxiKXt2YXIgYyxkLGUsZixnO2ZvcihjIGluIGEpaWYoZD1tLmNhbWVsQ2FzZShjKSxlPWJb
ZF0sZj1hW2NdLG0uaXNBcnJheShmKSYmKGU9ZlsxXSxmPWFbY109ZlswXSksYyE9PWQmJihhW2Rd
PWYsZGVsZXRlIGFbY10pLGc9bS5jc3NIb29rc1tkXSxnJiYiZXhwYW5kImluIGcpe2Y9Zy5leHBh
bmQoZiksZGVsZXRlIGFbZF07Zm9yKGMgaW4gZiljIGluIGF8fChhW2NdPWZbY10sYltjXT1lKX1l
bHNlIGJbZF09ZX1mdW5jdGlvbiBrYyhhLGIsYyl7dmFyIGQsZSxmPTAsZz1kYy5sZW5ndGgsaD1t
LkRlZmVycmVkKCkuYWx3YXlzKGZ1bmN0aW9uKCl7ZGVsZXRlIGkuZWxlbX0pLGk9ZnVuY3Rpb24o
KXtpZihlKXJldHVybiExO2Zvcih2YXIgYj0kYnx8ZmMoKSxjPU1hdGgubWF4KDAsai5zdGFydFRp
bWUrai5kdXJhdGlvbi1iKSxkPWMvai5kdXJhdGlvbnx8MCxmPTEtZCxnPTAsaT1qLnR3ZWVucy5s
ZW5ndGg7aT5nO2crKylqLnR3ZWVuc1tnXS5ydW4oZik7cmV0dXJuIGgubm90aWZ5V2l0aChhLFtq
LGYsY10pLDE+ZiYmaT9jOihoLnJlc29sdmVXaXRoKGEsW2pdKSwhMSl9LGo9aC5wcm9taXNlKHtl
bGVtOmEscHJvcHM6bS5leHRlbmQoe30sYiksb3B0czptLmV4dGVuZCghMCx7c3BlY2lhbEVhc2lu
Zzp7fX0sYyksb3JpZ2luYWxQcm9wZXJ0aWVzOmIsb3JpZ2luYWxPcHRpb25zOmMsc3RhcnRUaW1l
OiRifHxmYygpLGR1cmF0aW9uOmMuZHVyYXRpb24sdHdlZW5zOltdLGNyZWF0ZVR3ZWVuOmZ1bmN0
aW9uKGIsYyl7dmFyIGQ9bS5Ud2VlbihhLGoub3B0cyxiLGMsai5vcHRzLnNwZWNpYWxFYXNpbmdb
Yl18fGoub3B0cy5lYXNpbmcpO3JldHVybiBqLnR3ZWVucy5wdXNoKGQpLGR9LHN0b3A6ZnVuY3Rp
b24oYil7dmFyIGM9MCxkPWI/ai50d2VlbnMubGVuZ3RoOjA7aWYoZSlyZXR1cm4gdGhpcztmb3Io
ZT0hMDtkPmM7YysrKWoudHdlZW5zW2NdLnJ1bigxKTtyZXR1cm4gYj9oLnJlc29sdmVXaXRoKGEs
W2osYl0pOmgucmVqZWN0V2l0aChhLFtqLGJdKSx0aGlzfX0pLGs9ai5wcm9wcztmb3IoamMoayxq
Lm9wdHMuc3BlY2lhbEVhc2luZyk7Zz5mO2YrKylpZihkPWRjW2ZdLmNhbGwoaixhLGssai5vcHRz
KSlyZXR1cm4gZDtyZXR1cm4gbS5tYXAoayxoYyxqKSxtLmlzRnVuY3Rpb24oai5vcHRzLnN0YXJ0
KSYmai5vcHRzLnN0YXJ0LmNhbGwoYSxqKSxtLmZ4LnRpbWVyKG0uZXh0ZW5kKGkse2VsZW06YSxh
bmltOmoscXVldWU6ai5vcHRzLnF1ZXVlfSkpLGoucHJvZ3Jlc3Moai5vcHRzLnByb2dyZXNzKS5k
b25lKGoub3B0cy5kb25lLGoub3B0cy5jb21wbGV0ZSkuZmFpbChqLm9wdHMuZmFpbCkuYWx3YXlz
KGoub3B0cy5hbHdheXMpfW0uQW5pbWF0aW9uPW0uZXh0ZW5kKGtjLHt0d2VlbmVyOmZ1bmN0aW9u
KGEsYil7bS5pc0Z1bmN0aW9uKGEpPyhiPWEsYT1bIioiXSk6YT1hLnNwbGl0KCIgIik7Zm9yKHZh
ciBjLGQ9MCxlPWEubGVuZ3RoO2U+ZDtkKyspYz1hW2RdLGVjW2NdPWVjW2NdfHxbXSxlY1tjXS51
bnNoaWZ0KGIpfSxwcmVmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiP2RjLnVuc2hpZnQoYSk6ZGMucHVz
aChhKX19KSxtLnNwZWVkPWZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiYib2JqZWN0Ij09dHlwZW9m
IGE/bS5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxtLmlzRnVuY3Rpb24oYSkmJmEs
ZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIW0uaXNGdW5jdGlvbihiKSYmYn07cmV0dXJuIGQu
ZHVyYXRpb249bS5meC5vZmY/MDoibnVtYmVyIj09dHlwZW9mIGQuZHVyYXRpb24/ZC5kdXJhdGlv
bjpkLmR1cmF0aW9uIGluIG0uZnguc3BlZWRzP20uZnguc3BlZWRzW2QuZHVyYXRpb25dOm0uZngu
c3BlZWRzLl9kZWZhdWx0LChudWxsPT1kLnF1ZXVlfHxkLnF1ZXVlPT09ITApJiYoZC5xdWV1ZT0i
ZngiKSxkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oKXttLmlzRnVuY3Rpb24o
ZC5vbGQpJiZkLm9sZC5jYWxsKHRoaXMpLGQucXVldWUmJm0uZGVxdWV1ZSh0aGlzLGQucXVldWUp
fSxkfSxtLmZuLmV4dGVuZCh7ZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZp
bHRlcihVKS5jc3MoIm9wYWNpdHkiLDApLnNob3coKS5lbmQoKS5hbmltYXRlKHtvcGFjaXR5OmJ9
LGEsYyxkKX0sYW5pbWF0ZTpmdW5jdGlvbihhLGIsYyxkKXt2YXIgZT1tLmlzRW1wdHlPYmplY3Qo
YSksZj1tLnNwZWVkKGIsYyxkKSxnPWZ1bmN0aW9uKCl7dmFyIGI9a2ModGhpcyxtLmV4dGVuZCh7
fSxhKSxmKTsoZXx8bS5fZGF0YSh0aGlzLCJmaW5pc2giKSkmJmIuc3RvcCghMCl9O3JldHVybiBn
LmZpbmlzaD1nLGV8fGYucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShmLnF1ZXVl
LGcpfSxzdG9wOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1mdW5jdGlvbihhKXt2YXIgYj1hLnN0b3A7
ZGVsZXRlIGEuc3RvcCxiKGMpfTtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihjPWIsYj1hLGE9
dm9pZCAwKSxiJiZhIT09ITEmJnRoaXMucXVldWUoYXx8ImZ4IixbXSksdGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIGI9ITAsZT1udWxsIT1hJiZhKyJxdWV1ZUhvb2tzIixmPW0udGltZXJzLGc9bS5f
ZGF0YSh0aGlzKTtpZihlKWdbZV0mJmdbZV0uc3RvcCYmZChnW2VdKTtlbHNlIGZvcihlIGluIGcp
Z1tlXSYmZ1tlXS5zdG9wJiZjYy50ZXN0KGUpJiZkKGdbZV0pO2ZvcihlPWYubGVuZ3RoO2UtLTsp
ZltlXS5lbGVtIT09dGhpc3x8bnVsbCE9YSYmZltlXS5xdWV1ZSE9PWF8fChmW2VdLmFuaW0uc3Rv
cChjKSxiPSExLGYuc3BsaWNlKGUsMSkpOyhifHwhYykmJm0uZGVxdWV1ZSh0aGlzLGEpfSl9LGZp
bmlzaDpmdW5jdGlvbihhKXtyZXR1cm4gYSE9PSExJiYoYT1hfHwiZngiKSx0aGlzLmVhY2goZnVu
Y3Rpb24oKXt2YXIgYixjPW0uX2RhdGEodGhpcyksZD1jW2ErInF1ZXVlIl0sZT1jW2ErInF1ZXVl
SG9va3MiXSxmPW0udGltZXJzLGc9ZD9kLmxlbmd0aDowO2ZvcihjLmZpbmlzaD0hMCxtLnF1ZXVl
KHRoaXMsYSxbXSksZSYmZS5zdG9wJiZlLnN0b3AuY2FsbCh0aGlzLCEwKSxiPWYubGVuZ3RoO2It
LTspZltiXS5lbGVtPT09dGhpcyYmZltiXS5xdWV1ZT09PWEmJihmW2JdLmFuaW0uc3RvcCghMCks
Zi5zcGxpY2UoYiwxKSk7Zm9yKGI9MDtnPmI7YisrKWRbYl0mJmRbYl0uZmluaXNoJiZkW2JdLmZp
bmlzaC5jYWxsKHRoaXMpO2RlbGV0ZSBjLmZpbmlzaH0pfX0pLG0uZWFjaChbInRvZ2dsZSIsInNo
b3ciLCJoaWRlIl0sZnVuY3Rpb24oYSxiKXt2YXIgYz1tLmZuW2JdO20uZm5bYl09ZnVuY3Rpb24o
YSxkLGUpe3JldHVybiBudWxsPT1hfHwiYm9vbGVhbiI9PXR5cGVvZiBhP2MuYXBwbHkodGhpcyxh
cmd1bWVudHMpOnRoaXMuYW5pbWF0ZShnYyhiLCEwKSxhLGQsZSl9fSksbS5lYWNoKHtzbGlkZURv
d246Z2MoInNob3ciKSxzbGlkZVVwOmdjKCJoaWRlIiksc2xpZGVUb2dnbGU6Z2MoInRvZ2dsZSIp
LGZhZGVJbjp7b3BhY2l0eToic2hvdyJ9LGZhZGVPdXQ6e29wYWNpdHk6ImhpZGUifSxmYWRlVG9n
Z2xlOntvcGFjaXR5OiJ0b2dnbGUifX0sZnVuY3Rpb24oYSxiKXttLmZuW2FdPWZ1bmN0aW9uKGEs
YyxkKXtyZXR1cm4gdGhpcy5hbmltYXRlKGIsYSxjLGQpfX0pLG0udGltZXJzPVtdLG0uZngudGlj
az1mdW5jdGlvbigpe3ZhciBhLGI9bS50aW1lcnMsYz0wO2ZvcigkYj1tLm5vdygpO2M8Yi5sZW5n
dGg7YysrKWE9YltjXSxhKCl8fGJbY10hPT1hfHxiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fG0u
Znguc3RvcCgpLCRiPXZvaWQgMH0sbS5meC50aW1lcj1mdW5jdGlvbihhKXttLnRpbWVycy5wdXNo
KGEpLGEoKT9tLmZ4LnN0YXJ0KCk6bS50aW1lcnMucG9wKCl9LG0uZnguaW50ZXJ2YWw9MTMsbS5m
eC5zdGFydD1mdW5jdGlvbigpe19ifHwoX2I9c2V0SW50ZXJ2YWwobS5meC50aWNrLG0uZnguaW50
ZXJ2YWwpKX0sbS5meC5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChfYiksX2I9bnVsbH0s
bS5meC5zcGVlZHM9e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sbS5mbi5kZWxheT1m
dW5jdGlvbihhLGIpe3JldHVybiBhPW0uZng/bS5meC5zcGVlZHNbYV18fGE6YSxiPWJ8fCJmeCIs
dGhpcy5xdWV1ZShiLGZ1bmN0aW9uKGIsYyl7dmFyIGQ9c2V0VGltZW91dChiLGEpO2Muc3RvcD1m
dW5jdGlvbigpe2NsZWFyVGltZW91dChkKX19KX0sZnVuY3Rpb24oKXt2YXIgYSxiLGMsZCxlO2I9
eS5jcmVhdGVFbGVtZW50KCJkaXYiKSxiLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGIu
aW5uZXJIVE1MPSIgIDxsaW5rLz48dGFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5w
dXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9
eS5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxlPWMuYXBwZW5kQ2hpbGQoeS5jcmVhdGVFbGVtZW50
KCJvcHRpb24iKSksYT1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGQuc3R5bGUu
Y3NzVGV4dD0idG9wOjFweCIsay5nZXRTZXRBdHRyaWJ1dGU9InQiIT09Yi5jbGFzc05hbWUsay5z
dHlsZT0vdG9wLy50ZXN0KGQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxrLmhyZWZOb3JtYWxpemVk
PSIvYSI9PT1kLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGsuY2hlY2tPbj0hIWEudmFsdWUsay5vcHRT
ZWxlY3RlZD1lLnNlbGVjdGVkLGsuZW5jdHlwZT0hIXkuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVu
Y3R5cGUsYy5kaXNhYmxlZD0hMCxrLm9wdERpc2FibGVkPSFlLmRpc2FibGVkLGE9eS5jcmVhdGVF
bGVtZW50KCJpbnB1dCIpLGEuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLGsuaW5wdXQ9IiI9PT1h
LmdldEF0dHJpYnV0ZSgidmFsdWUiKSxhLnZhbHVlPSJ0IixhLnNldEF0dHJpYnV0ZSgidHlwZSIs
InJhZGlvIiksay5yYWRpb1ZhbHVlPSJ0Ij09PWEudmFsdWV9KCk7dmFyIGxjPS9cci9nO20uZm4u
ZXh0ZW5kKHt2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRz
Lmxlbmd0aClyZXR1cm4gZD1tLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3Zh
ciBlOzE9PT10aGlzLm5vZGVUeXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbSh0aGlzKS52YWwoKSk6
YSxudWxsPT1lP2U9IiI6Im51bWJlciI9PXR5cGVvZiBlP2UrPSIiOm0uaXNBcnJheShlKSYmKGU9
bS5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT8iIjphKyIifSkpLGI9bS52YWxIb29r
c1t0aGlzLnR5cGVdfHxtLnZhbEhvb2tzW3RoaXMubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYm
InNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVlIil8fCh0aGlzLnZhbHVlPWUp
KX0pO2lmKGUpcmV0dXJuIGI9bS52YWxIb29rc1tlLnR5cGVdfHxtLnZhbEhvb2tzW2Uubm9kZU5h
bWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldChlLCJ2YWx1
ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShsYywiIik6bnVs
bD09Yz8iIjpjKX19fSksbS5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihh
KXt2YXIgYj1tLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bS50cmltKG0u
dGV4dChhKSl9fSxzZWxlY3Q6e2dldDpmdW5jdGlvbihhKXtmb3IodmFyIGIsYyxkPWEub3B0aW9u
cyxlPWEuc2VsZWN0ZWRJbmRleCxmPSJzZWxlY3Qtb25lIj09PWEudHlwZXx8MD5lLGc9Zj9udWxs
OltdLGg9Zj9lKzE6ZC5sZW5ndGgsaT0wPmU/aDpmP2U6MDtoPmk7aSsrKWlmKGM9ZFtpXSwhKCFj
LnNlbGVjdGVkJiZpIT09ZXx8KGsub3B0RGlzYWJsZWQ/Yy5kaXNhYmxlZDpudWxsIT09Yy5nZXRB
dHRyaWJ1dGUoImRpc2FibGVkIikpfHxjLnBhcmVudE5vZGUuZGlzYWJsZWQmJm0ubm9kZU5hbWUo
Yy5wYXJlbnROb2RlLCJvcHRncm91cCIpKSl7aWYoYj1tKGMpLnZhbCgpLGYpcmV0dXJuIGI7Zy5w
dXNoKGIpfXJldHVybiBnfSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9YS5vcHRpb25zLGY9
bS5tYWtlQXJyYXkoYiksZz1lLmxlbmd0aDt3aGlsZShnLS0paWYoZD1lW2ddLG0uaW5BcnJheSht
LnZhbEhvb2tzLm9wdGlvbi5nZXQoZCksZik+PTApdHJ5e2Quc2VsZWN0ZWQ9Yz0hMH1jYXRjaCho
KXtkLnNjcm9sbEhlaWdodH1lbHNlIGQuc2VsZWN0ZWQ9ITE7cmV0dXJuIGN8fChhLnNlbGVjdGVk
SW5kZXg9LTEpLGV9fX19KSxtLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtt
LnZhbEhvb2tzW3RoaXNdPXtzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbS5pc0FycmF5KGIpP2Eu
Y2hlY2tlZD1tLmluQXJyYXkobShhKS52YWwoKSxiKT49MDp2b2lkIDB9fSxrLmNoZWNrT258fCht
LnZhbEhvb2tzW3RoaXNdLmdldD1mdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09PWEuZ2V0QXR0cmli
dXRlKCJ2YWx1ZSIpPyJvbiI6YS52YWx1ZX0pfSk7dmFyIG1jLG5jLG9jPW0uZXhwci5hdHRySGFu
ZGxlLHBjPS9eKD86Y2hlY2tlZHxzZWxlY3RlZCkkL2kscWM9ay5nZXRTZXRBdHRyaWJ1dGUscmM9
ay5pbnB1dDttLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBWKHRoaXMsbS5h
dHRyLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVy
biB0aGlzLmVhY2goZnVuY3Rpb24oKXttLnJlbW92ZUF0dHIodGhpcyxhKX0pfX0pLG0uZXh0ZW5k
KHthdHRyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxlLGY9YS5ub2RlVHlwZTtpZihhJiYzIT09ZiYm
OCE9PWYmJjIhPT1mKXJldHVybiB0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PT1LP20ucHJvcChhLGIs
Yyk6KDE9PT1mJiZtLmlzWE1MRG9jKGEpfHwoYj1iLnRvTG93ZXJDYXNlKCksZD1tLmF0dHJIb29r
c1tiXXx8KG0uZXhwci5tYXRjaC5ib29sLnRlc3QoYik/bmM6bWMpKSx2b2lkIDA9PT1jP2QmJiJn
ZXQiaW4gZCYmbnVsbCE9PShlPWQuZ2V0KGEsYikpP2U6KGU9bS5maW5kLmF0dHIoYSxiKSxudWxs
PT1lP3ZvaWQgMDplKTpudWxsIT09Yz9kJiYic2V0ImluIGQmJnZvaWQgMCE9PShlPWQuc2V0KGEs
YyxiKSk/ZTooYS5zZXRBdHRyaWJ1dGUoYixjKyIiKSxjKTp2b2lkIG0ucmVtb3ZlQXR0cihhLGIp
KX0scmVtb3ZlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBjLGQsZT0wLGY9YiYmYi5tYXRjaChFKTtp
ZihmJiYxPT09YS5ub2RlVHlwZSl3aGlsZShjPWZbZSsrXSlkPW0ucHJvcEZpeFtjXXx8YyxtLmV4
cHIubWF0Y2guYm9vbC50ZXN0KGMpP3JjJiZxY3x8IXBjLnRlc3QoYyk/YVtkXT0hMTphW20uY2Ft
ZWxDYXNlKCJkZWZhdWx0LSIrYyldPWFbZF09ITE6bS5hdHRyKGEsYywiIiksYS5yZW1vdmVBdHRy
aWJ1dGUocWM/YzpkKX0sYXR0ckhvb2tzOnt0eXBlOntzZXQ6ZnVuY3Rpb24oYSxiKXtpZighay5y
YWRpb1ZhbHVlJiYicmFkaW8iPT09YiYmbS5ub2RlTmFtZShhLCJpbnB1dCIpKXt2YXIgYz1hLnZh
bHVlO3JldHVybiBhLnNldEF0dHJpYnV0ZSgidHlwZSIsYiksYyYmKGEudmFsdWU9YyksYn19fX19
KSxuYz17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj09PSExP20ucmVtb3ZlQXR0cihhLGMp
OnJjJiZxY3x8IXBjLnRlc3QoYyk/YS5zZXRBdHRyaWJ1dGUoIXFjJiZtLnByb3BGaXhbY118fGMs
Yyk6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2MpXT1hW2NdPSEwLGN9fSxtLmVhY2gobS5leHBy
Lm1hdGNoLmJvb2wuc291cmNlLm1hdGNoKC9cdysvZyksZnVuY3Rpb24oYSxiKXt2YXIgYz1vY1ti
XXx8bS5maW5kLmF0dHI7b2NbYl09cmMmJnFjfHwhcGMudGVzdChiKT9mdW5jdGlvbihhLGIsZCl7
dmFyIGUsZjtyZXR1cm4gZHx8KGY9b2NbYl0sb2NbYl09ZSxlPW51bGwhPWMoYSxiLGQpP2IudG9M
b3dlckNhc2UoKTpudWxsLG9jW2JdPWYpLGV9OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYz92b2lk
IDA6YVttLmNhbWVsQ2FzZSgiZGVmYXVsdC0iK2IpXT9iLnRvTG93ZXJDYXNlKCk6bnVsbH19KSxy
YyYmcWN8fChtLmF0dHJIb29rcy52YWx1ZT17c2V0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbS5u
b2RlTmFtZShhLCJpbnB1dCIpP3ZvaWQoYS5kZWZhdWx0VmFsdWU9Yik6bWMmJm1jLnNldChhLGIs
Yyl9fSkscWN8fChtYz17c2V0OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hLmdldEF0dHJpYnV0ZU5v
ZGUoYyk7cmV0dXJuIGR8fGEuc2V0QXR0cmlidXRlTm9kZShkPWEub3duZXJEb2N1bWVudC5jcmVh
dGVBdHRyaWJ1dGUoYykpLGQudmFsdWU9Yis9IiIsInZhbHVlIj09PWN8fGI9PT1hLmdldEF0dHJp
YnV0ZShjKT9iOnZvaWQgMH19LG9jLmlkPW9jLm5hbWU9b2MuY29vcmRzPWZ1bmN0aW9uKGEsYixj
KXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6KGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGIpKSYmIiIhPT1k
LnZhbHVlP2QudmFsdWU6bnVsbH0sbS52YWxIb29rcy5idXR0b249e2dldDpmdW5jdGlvbihhLGIp
e3ZhciBjPWEuZ2V0QXR0cmlidXRlTm9kZShiKTtyZXR1cm4gYyYmYy5zcGVjaWZpZWQ/Yy52YWx1
ZTp2b2lkIDB9LHNldDptYy5zZXR9LG0uYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17c2V0OmZ1
bmN0aW9uKGEsYixjKXttYy5zZXQoYSwiIj09PWI/ITE6YixjKX19LG0uZWFjaChbIndpZHRoIiwi
aGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXttLmF0dHJIb29rc1tiXT17c2V0OmZ1bmN0aW9uKGEsYyl7
cmV0dXJuIiI9PT1jPyhhLnNldEF0dHJpYnV0ZShiLCJhdXRvIiksYyk6dm9pZCAwfX19KSksay5z
dHlsZXx8KG0uYXR0ckhvb2tzLnN0eWxlPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGUu
Y3NzVGV4dHx8dm9pZCAwfSxzZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0
PWIrIiJ9fSk7dmFyIHNjPS9eKD86aW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbnxvYmplY3Qp
JC9pLHRjPS9eKD86YXxhcmVhKSQvaTttLmZuLmV4dGVuZCh7cHJvcDpmdW5jdGlvbihhLGIpe3Jl
dHVybiBWKHRoaXMsbS5wcm9wLGEsYixhcmd1bWVudHMubGVuZ3RoPjEpfSxyZW1vdmVQcm9wOmZ1
bmN0aW9uKGEpe3JldHVybiBhPW0ucHJvcEZpeFthXXx8YSx0aGlzLmVhY2goZnVuY3Rpb24oKXt0
cnl7dGhpc1thXT12b2lkIDAsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYil7fX0pfX0pLG0uZXh0ZW5k
KHtwcm9wRml4OnsiZm9yIjoiaHRtbEZvciIsImNsYXNzIjoiY2xhc3NOYW1lIn0scHJvcDpmdW5j
dGlvbihhLGIsYyl7dmFyIGQsZSxmLGc9YS5ub2RlVHlwZTtpZihhJiYzIT09ZyYmOCE9PWcmJjIh
PT1nKXJldHVybiBmPTEhPT1nfHwhbS5pc1hNTERvYyhhKSxmJiYoYj1tLnByb3BGaXhbYl18fGIs
ZT1tLnByb3BIb29rc1tiXSksdm9pZCAwIT09Yz9lJiYic2V0ImluIGUmJnZvaWQgMCE9PShkPWUu
c2V0KGEsYyxiKSk/ZDphW2JdPWM6ZSYmImdldCJpbiBlJiZudWxsIT09KGQ9ZS5nZXQoYSxiKSk/
ZDphW2JdfSxwcm9wSG9va3M6e3RhYkluZGV4OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9bS5maW5k
LmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4gYj9wYXJzZUludChiLDEwKTpzYy50ZXN0KGEubm9k
ZU5hbWUpfHx0Yy50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDotMX19fX0pLGsuaHJlZk5vcm1h
bGl6ZWR8fG0uZWFjaChbImhyZWYiLCJzcmMiXSxmdW5jdGlvbihhLGIpe20ucHJvcEhvb2tzW2Jd
PXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKGIsNCl9fX0pLGsub3B0U2Vs
ZWN0ZWR8fChtLnByb3BIb29rcy5zZWxlY3RlZD17Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFy
ZW50Tm9kZTtyZXR1cm4gYiYmKGIuc2VsZWN0ZWRJbmRleCxiLnBhcmVudE5vZGUmJmIucGFyZW50
Tm9kZS5zZWxlY3RlZEluZGV4KSxudWxsfX0pLG0uZWFjaChbInRhYkluZGV4IiwicmVhZE9ubHki
LCJtYXhMZW5ndGgiLCJjZWxsU3BhY2luZyIsImNlbGxQYWRkaW5nIiwicm93U3BhbiIsImNvbFNw
YW4iLCJ1c2VNYXAiLCJmcmFtZUJvcmRlciIsImNvbnRlbnRFZGl0YWJsZSJdLGZ1bmN0aW9uKCl7
bS5wcm9wRml4W3RoaXMudG9Mb3dlckNhc2UoKV09dGhpc30pLGsuZW5jdHlwZXx8KG0ucHJvcEZp
eC5lbmN0eXBlPSJlbmNvZGluZyIpO3ZhciB1Yz0vW1x0XHJcblxmXS9nO20uZm4uZXh0ZW5kKHth
ZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcsaD0wLGk9dGhpcy5sZW5ndGgsaj0i
c3RyaW5nIj09dHlwZW9mIGEmJmE7aWYobS5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2go
ZnVuY3Rpb24oYil7bSh0aGlzKS5hZGRDbGFzcyhhLmNhbGwodGhpcyxiLHRoaXMuY2xhc3NOYW1l
KSl9KTtpZihqKWZvcihiPShhfHwiIikubWF0Y2goRSl8fFtdO2k+aDtoKyspaWYoYz10aGlzW2hd
LGQ9MT09PWMubm9kZVR5cGUmJihjLmNsYXNzTmFtZT8oIiAiK2MuY2xhc3NOYW1lKyIgIikucmVw
bGFjZSh1YywiICIpOiIgIikpe2Y9MDt3aGlsZShlPWJbZisrXSlkLmluZGV4T2YoIiAiK2UrIiAi
KTwwJiYoZCs9ZSsiICIpO2c9bS50cmltKGQpLGMuY2xhc3NOYW1lIT09ZyYmKGMuY2xhc3NOYW1l
PWcpfXJldHVybiB0aGlzfSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxmLGcs
aD0wLGk9dGhpcy5sZW5ndGgsaj0wPT09YXJndW1lbnRzLmxlbmd0aHx8InN0cmluZyI9PXR5cGVv
ZiBhJiZhO2lmKG0uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe20o
dGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailm
b3IoYj0oYXx8IiIpLm1hdGNoKEUpfHxbXTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5v
ZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UodWMsIiAi
KToiIikpe2Y9MDt3aGlsZShlPWJbZisrXSl3aGlsZShkLmluZGV4T2YoIiAiK2UrIiAiKT49MClk
PWQucmVwbGFjZSgiICIrZSsiICIsIiAiKTtnPWE/bS50cmltKGQpOiIiLGMuY2xhc3NOYW1lIT09
ZyYmKGMuY2xhc3NOYW1lPWcpfXJldHVybiB0aGlzfSx0b2dnbGVDbGFzczpmdW5jdGlvbihhLGIp
e3ZhciBjPXR5cGVvZiBhO3JldHVybiJib29sZWFuIj09dHlwZW9mIGImJiJzdHJpbmciPT09Yz9i
P3RoaXMuYWRkQ2xhc3MoYSk6dGhpcy5yZW1vdmVDbGFzcyhhKTp0aGlzLmVhY2gobS5pc0Z1bmN0
aW9uKGEpP2Z1bmN0aW9uKGMpe20odGhpcykudG9nZ2xlQ2xhc3MoYS5jYWxsKHRoaXMsYyx0aGlz
LmNsYXNzTmFtZSxiKSxiKX06ZnVuY3Rpb24oKXtpZigic3RyaW5nIj09PWMpe3ZhciBiLGQ9MCxl
PW0odGhpcyksZj1hLm1hdGNoKEUpfHxbXTt3aGlsZShiPWZbZCsrXSllLmhhc0NsYXNzKGIpP2Uu
cmVtb3ZlQ2xhc3MoYik6ZS5hZGRDbGFzcyhiKX1lbHNlKGM9PT1LfHwiYm9vbGVhbiI9PT1jKSYm
KHRoaXMuY2xhc3NOYW1lJiZtLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NO
YW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOm0uX2RhdGEodGhp
cywiX19jbGFzc05hbWVfXyIpfHwiIil9KX0saGFzQ2xhc3M6ZnVuY3Rpb24oYSl7Zm9yKHZhciBi
PSIgIithKyIgIixjPTAsZD10aGlzLmxlbmd0aDtkPmM7YysrKWlmKDE9PT10aGlzW2NdLm5vZGVU
eXBlJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZSh1YywiICIpLmluZGV4T2Yo
Yik+PTApcmV0dXJuITA7cmV0dXJuITF9fSksbS5lYWNoKCJibHVyIGZvY3VzIGZvY3VzaW4gZm9j
dXNvdXQgbG9hZCByZXNpemUgc2Nyb2xsIHVubG9hZCBjbGljayBkYmxjbGljayBtb3VzZWRvd24g
bW91c2V1cCBtb3VzZW1vdmUgbW91c2VvdmVyIG1vdXNlb3V0IG1vdXNlZW50ZXIgbW91c2VsZWF2
ZSBjaGFuZ2Ugc2VsZWN0IHN1Ym1pdCBrZXlkb3duIGtleXByZXNzIGtleXVwIGVycm9yIGNvbnRl
eHRtZW51Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7bS5mbltiXT1mdW5jdGlvbihhLGMpe3Jl
dHVybiBhcmd1bWVudHMubGVuZ3RoPjA/dGhpcy5vbihiLG51bGwsYSxjKTp0aGlzLnRyaWdnZXIo
Yil9fSksbS5mbi5leHRlbmQoe2hvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2Vl
bnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfSxiaW5kOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gdGhp
cy5vbihhLG51bGwsYixjKX0sdW5iaW5kOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMub2ZmKGEs
bnVsbCxiKX0sZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24oYixhLGMs
ZCl9LHVuZGVsZWdhdGU6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiAxPT09YXJndW1lbnRzLmxlbmd0
aD90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYXx8IioqIixjKX19KTt2YXIgdmM9bS5ub3co
KSx3Yz0vXD8vLHhjPS8oLCl8KFxbfHspfCh9fF0pfCIoPzpbXiJcXFxyXG5dfFxcWyJcXFwvYmZu
cnRdfFxcdVtcZGEtZkEtRl17NH0pKiJccyo6P3x0cnVlfGZhbHNlfG51bGx8LT8oPyEwXGQpXGQr
KD86XC5cZCt8KSg/OltlRV1bKy1dP1xkK3wpL2c7bS5wYXJzZUpTT049ZnVuY3Rpb24oYil7aWYo
YS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKyIiKTt2YXIgYyxkPW51
bGwsZT1tLnRyaW0oYisiIik7cmV0dXJuIGUmJiFtLnRyaW0oZS5yZXBsYWNlKHhjLGZ1bmN0aW9u
KGEsYixlLGYpe3JldHVybiBjJiZiJiYoZD0wKSwwPT09ZD9hOihjPWV8fGIsZCs9IWYtIWUsIiIp
fSkpP0Z1bmN0aW9uKCJyZXR1cm4gIitlKSgpOm0uZXJyb3IoIkludmFsaWQgSlNPTjogIitiKX0s
bS5wYXJzZVhNTD1mdW5jdGlvbihiKXt2YXIgYyxkO2lmKCFifHwic3RyaW5nIiE9dHlwZW9mIGIp
cmV0dXJuIG51bGw7dHJ5e2EuRE9NUGFyc2VyPyhkPW5ldyBET01QYXJzZXIsYz1kLnBhcnNlRnJv
bVN0cmluZyhiLCJ0ZXh0L3htbCIpKTooYz1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhN
TERPTSIpLGMuYXN5bmM9ImZhbHNlIixjLmxvYWRYTUwoYikpfWNhdGNoKGUpe2M9dm9pZCAwfXJl
dHVybiBjJiZjLmRvY3VtZW50RWxlbWVudCYmIWMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNl
cmVycm9yIikubGVuZ3RofHxtLmVycm9yKCJJbnZhbGlkIFhNTDogIitiKSxjfTt2YXIgeWMsemMs
QWM9LyMuKiQvLEJjPS8oWz8mXSlfPVteJl0qLyxDYz0vXiguKj8pOlsgXHRdKihbXlxyXG5dKilc
cj8kL2dtLERjPS9eKD86YWJvdXR8YXBwfGFwcC1zdG9yYWdlfC4rLWV4dGVuc2lvbnxmaWxlfHJl
c3x3aWRnZXQpOiQvLEVjPS9eKD86R0VUfEhFQUQpJC8sRmM9L15cL1wvLyxHYz0vXihbXHcuKy1d
KzopKD86XC9cLyg/OlteXC8/I10qQHwpKFteXC8/IzpdKikoPzo6KFxkKyl8KXwpLyxIYz17fSxJ
Yz17fSxKYz0iKi8iLmNvbmNhdCgiKiIpO3RyeXt6Yz1sb2NhdGlvbi5ocmVmfWNhdGNoKEtjKXt6
Yz15LmNyZWF0ZUVsZW1lbnQoImEiKSx6Yy5ocmVmPSIiLHpjPXpjLmhyZWZ9eWM9R2MuZXhlYyh6
Yy50b0xvd2VyQ2FzZSgpKXx8W107ZnVuY3Rpb24gTGMoYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7
InN0cmluZyIhPXR5cGVvZiBiJiYoYz1iLGI9IioiKTt2YXIgZCxlPTAsZj1iLnRvTG93ZXJDYXNl
KCkubWF0Y2goRSl8fFtdO2lmKG0uaXNGdW5jdGlvbihjKSl3aGlsZShkPWZbZSsrXSkiKyI9PT1k
LmNoYXJBdCgwKT8oZD1kLnNsaWNlKDEpfHwiKiIsKGFbZF09YVtkXXx8W10pLnVuc2hpZnQoYykp
OihhW2RdPWFbZF18fFtdKS5wdXNoKGMpfX1mdW5jdGlvbiBNYyhhLGIsYyxkKXt2YXIgZT17fSxm
PWE9PT1JYztmdW5jdGlvbiBnKGgpe3ZhciBpO3JldHVybiBlW2hdPSEwLG0uZWFjaChhW2hdfHxb
XSxmdW5jdGlvbihhLGgpe3ZhciBqPWgoYixjLGQpO3JldHVybiJzdHJpbmciIT10eXBlb2Yganx8
Znx8ZVtqXT9mPyEoaT1qKTp2b2lkIDA6KGIuZGF0YVR5cGVzLnVuc2hpZnQoaiksZyhqKSwhMSl9
KSxpfXJldHVybiBnKGIuZGF0YVR5cGVzWzBdKXx8IWVbIioiXSYmZygiKiIpfWZ1bmN0aW9uIE5j
KGEsYil7dmFyIGMsZCxlPW0uYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBi
KXZvaWQgMCE9PWJbZF0mJigoZVtkXT9hOmN8fChjPXt9KSlbZF09YltkXSk7cmV0dXJuIGMmJm0u
ZXh0ZW5kKCEwLGEsYyksYX1mdW5jdGlvbiBPYyhhLGIsYyl7dmFyIGQsZSxmLGcsaD1hLmNvbnRl
bnRzLGk9YS5kYXRhVHlwZXM7d2hpbGUoIioiPT09aVswXSlpLnNoaWZ0KCksdm9pZCAwPT09ZSYm
KGU9YS5taW1lVHlwZXx8Yi5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1UeXBlIikpO2lmKGUp
Zm9yKGcgaW4gaClpZihoW2ddJiZoW2ddLnRlc3QoZSkpe2kudW5zaGlmdChnKTticmVha31pZihp
WzBdaW4gYylmPWlbMF07ZWxzZXtmb3IoZyBpbiBjKXtpZighaVswXXx8YS5jb252ZXJ0ZXJzW2cr
IiAiK2lbMF1dKXtmPWc7YnJlYWt9ZHx8KGQ9Zyl9Zj1mfHxkfXJldHVybiBmPyhmIT09aVswXSYm
aS51bnNoaWZ0KGYpLGNbZl0pOnZvaWQgMH1mdW5jdGlvbiBQYyhhLGIsYyxkKXt2YXIgZSxmLGcs
aCxpLGo9e30saz1hLmRhdGFUeXBlcy5zbGljZSgpO2lmKGtbMV0pZm9yKGcgaW4gYS5jb252ZXJ0
ZXJzKWpbZy50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbZ107Zj1rLnNoaWZ0KCk7d2hpbGUo
ZilpZihhLnJlc3BvbnNlRmllbGRzW2ZdJiYoY1thLnJlc3BvbnNlRmllbGRzW2ZdXT1iKSwhaSYm
ZCYmYS5kYXRhRmlsdGVyJiYoYj1hLmRhdGFGaWx0ZXIoYixhLmRhdGFUeXBlKSksaT1mLGY9ay5z
aGlmdCgpKWlmKCIqIj09PWYpZj1pO2Vsc2UgaWYoIioiIT09aSYmaSE9PWYpe2lmKGc9altpKyIg
IitmXXx8alsiKiAiK2ZdLCFnKWZvcihlIGluIGopaWYoaD1lLnNwbGl0KCIgIiksaFsxXT09PWYm
JihnPWpbaSsiICIraFswXV18fGpbIiogIitoWzBdXSkpe2c9PT0hMD9nPWpbZV06altlXSE9PSEw
JiYoZj1oWzBdLGsudW5zaGlmdChoWzFdKSk7YnJlYWt9aWYoZyE9PSEwKWlmKGcmJmFbInRocm93
cyJdKWI9ZyhiKTtlbHNlIHRyeXtiPWcoYil9Y2F0Y2gobCl7cmV0dXJue3N0YXRlOiJwYXJzZXJl
cnJvciIsZXJyb3I6Zz9sOiJObyBjb252ZXJzaW9uIGZyb20gIitpKyIgdG8gIitmfX19cmV0dXJu
e3N0YXRlOiJzdWNjZXNzIixkYXRhOmJ9fW0uZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6
e30sZXRhZzp7fSxhamF4U2V0dGluZ3M6e3VybDp6Yyx0eXBlOiJHRVQiLGlzTG9jYWw6RGMudGVz
dCh5Y1sxXSksZ2xvYmFsOiEwLHByb2Nlc3NEYXRhOiEwLGFzeW5jOiEwLGNvbnRlbnRUeXBlOiJh
cHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgiLGFjY2VwdHM6
eyIqIjpKYyx0ZXh0OiJ0ZXh0L3BsYWluIixodG1sOiJ0ZXh0L2h0bWwiLHhtbDoiYXBwbGljYXRp
b24veG1sLCB0ZXh0L3htbCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0
In0sY29udGVudHM6e3htbDoveG1sLyxodG1sOi9odG1sLyxqc29uOi9qc29uL30scmVzcG9uc2VG
aWVsZHM6e3htbDoicmVzcG9uc2VYTUwiLHRleHQ6InJlc3BvbnNlVGV4dCIsanNvbjoicmVzcG9u
c2VKU09OIn0sY29udmVydGVyczp7IiogdGV4dCI6U3RyaW5nLCJ0ZXh0IGh0bWwiOiEwLCJ0ZXh0
IGpzb24iOm0ucGFyc2VKU09OLCJ0ZXh0IHhtbCI6bS5wYXJzZVhNTH0sZmxhdE9wdGlvbnM6e3Vy
bDohMCxjb250ZXh0OiEwfX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/TmMoTmMo
YSxtLmFqYXhTZXR0aW5ncyksYik6TmMobS5hamF4U2V0dGluZ3MsYSl9LGFqYXhQcmVmaWx0ZXI6
TGMoSGMpLGFqYXhUcmFuc3BvcnQ6TGMoSWMpLGFqYXg6ZnVuY3Rpb24oYSxiKXsib2JqZWN0Ij09
dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGI9Ynx8e307dmFyIGMsZCxlLGYsZyxoLGksaixrPW0u
YWpheFNldHVwKHt9LGIpLGw9ay5jb250ZXh0fHxrLG49ay5jb250ZXh0JiYobC5ub2RlVHlwZXx8
bC5qcXVlcnkpP20obCk6bS5ldmVudCxvPW0uRGVmZXJyZWQoKSxwPW0uQ2FsbGJhY2tzKCJvbmNl
IG1lbW9yeSIpLHE9ay5zdGF0dXNDb2RlfHx7fSxyPXt9LHM9e30sdD0wLHU9ImNhbmNlbGVkIix2
PXtyZWFkeVN0YXRlOjAsZ2V0UmVzcG9uc2VIZWFkZXI6ZnVuY3Rpb24oYSl7dmFyIGI7aWYoMj09
PXQpe2lmKCFqKXtqPXt9O3doaWxlKGI9Q2MuZXhlYyhmKSlqW2JbMV0udG9Mb3dlckNhc2UoKV09
YlsyXX1iPWpbYS50b0xvd2VyQ2FzZSgpXX1yZXR1cm4gbnVsbD09Yj9udWxsOmJ9LGdldEFsbFJl
c3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiAyPT09dD9mOm51bGx9LHNldFJlcXVlc3RI
ZWFkZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHR8fChhPXNb
Y109c1tjXXx8YSxyW2FdPWIpLHRoaXN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7cmV0
dXJuIHR8fChrLm1pbWVUeXBlPWEpLHRoaXN9LHN0YXR1c0NvZGU6ZnVuY3Rpb24oYSl7dmFyIGI7
aWYoYSlpZigyPnQpZm9yKGIgaW4gYSlxW2JdPVtxW2JdLGFbYl1dO2Vsc2Ugdi5hbHdheXMoYVt2
LnN0YXR1c10pO3JldHVybiB0aGlzfSxhYm9ydDpmdW5jdGlvbihhKXt2YXIgYj1hfHx1O3JldHVy
biBpJiZpLmFib3J0KGIpLHgoMCxiKSx0aGlzfX07aWYoby5wcm9taXNlKHYpLmNvbXBsZXRlPXAu
YWRkLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsay51cmw9KChhfHxrLnVybHx8emMp
KyIiKS5yZXBsYWNlKEFjLCIiKS5yZXBsYWNlKEZjLHljWzFdKyIvLyIpLGsudHlwZT1iLm1ldGhv
ZHx8Yi50eXBlfHxrLm1ldGhvZHx8ay50eXBlLGsuZGF0YVR5cGVzPW0udHJpbShrLmRhdGFUeXBl
fHwiKiIpLnRvTG93ZXJDYXNlKCkubWF0Y2goRSl8fFsiIl0sbnVsbD09ay5jcm9zc0RvbWFpbiYm
KGM9R2MuZXhlYyhrLnVybC50b0xvd2VyQ2FzZSgpKSxrLmNyb3NzRG9tYWluPSEoIWN8fGNbMV09
PT15Y1sxXSYmY1syXT09PXljWzJdJiYoY1szXXx8KCJodHRwOiI9PT1jWzFdPyI4MCI6IjQ0MyIp
KT09PSh5Y1szXXx8KCJodHRwOiI9PT15Y1sxXT8iODAiOiI0NDMiKSkpKSxrLmRhdGEmJmsucHJv
Y2Vzc0RhdGEmJiJzdHJpbmciIT10eXBlb2Ygay5kYXRhJiYoay5kYXRhPW0ucGFyYW0oay5kYXRh
LGsudHJhZGl0aW9uYWwpKSxNYyhIYyxrLGIsdiksMj09PXQpcmV0dXJuIHY7aD1rLmdsb2JhbCxo
JiYwPT09bS5hY3RpdmUrKyYmbS5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKSxrLnR5cGU9ay50
eXBlLnRvVXBwZXJDYXNlKCksay5oYXNDb250ZW50PSFFYy50ZXN0KGsudHlwZSksZT1rLnVybCxr
Lmhhc0NvbnRlbnR8fChrLmRhdGEmJihlPWsudXJsKz0od2MudGVzdChlKT8iJiI6Ij8iKStrLmRh
dGEsZGVsZXRlIGsuZGF0YSksay5jYWNoZT09PSExJiYoay51cmw9QmMudGVzdChlKT9lLnJlcGxh
Y2UoQmMsIiQxXz0iK3ZjKyspOmUrKHdjLnRlc3QoZSk/IiYiOiI/IikrIl89Iit2YysrKSksay5p
Zk1vZGlmaWVkJiYobS5sYXN0TW9kaWZpZWRbZV0mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9k
aWZpZWQtU2luY2UiLG0ubGFzdE1vZGlmaWVkW2VdKSxtLmV0YWdbZV0mJnYuc2V0UmVxdWVzdEhl
YWRlcigiSWYtTm9uZS1NYXRjaCIsbS5ldGFnW2VdKSksKGsuZGF0YSYmay5oYXNDb250ZW50JiZr
LmNvbnRlbnRUeXBlIT09ITF8fGIuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNv
bnRlbnQtVHlwZSIsay5jb250ZW50VHlwZSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGsu
ZGF0YVR5cGVzWzBdJiZrLmFjY2VwdHNbay5kYXRhVHlwZXNbMF1dP2suYWNjZXB0c1trLmRhdGFU
eXBlc1swXV0rKCIqIiE9PWsuZGF0YVR5cGVzWzBdPyIsICIrSmMrIjsgcT0wLjAxIjoiIik6ay5h
Y2NlcHRzWyIqIl0pO2ZvcihkIGluIGsuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIoZCxrLmhl
YWRlcnNbZF0pO2lmKGsuYmVmb3JlU2VuZCYmKGsuYmVmb3JlU2VuZC5jYWxsKGwsdixrKT09PSEx
fHwyPT09dCkpcmV0dXJuIHYuYWJvcnQoKTt1PSJhYm9ydCI7Zm9yKGQgaW57c3VjY2VzczoxLGVy
cm9yOjEsY29tcGxldGU6MX0pdltkXShrW2RdKTtpZihpPU1jKEljLGssYix2KSl7di5yZWFkeVN0
YXRlPTEsaCYmbi50cmlnZ2VyKCJhamF4U2VuZCIsW3Ysa10pLGsuYXN5bmMmJmsudGltZW91dD4w
JiYoZz1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxrLnRpbWVvdXQp
KTt0cnl7dD0xLGkuc2VuZChyLHgpfWNhdGNoKHcpe2lmKCEoMj50KSl0aHJvdyB3O3goLTEsdyl9
fWVsc2UgeCgtMSwiTm8gVHJhbnNwb3J0Iik7ZnVuY3Rpb24geChhLGIsYyxkKXt2YXIgaixyLHMs
dSx3LHg9YjsyIT09dCYmKHQ9MixnJiZjbGVhclRpbWVvdXQoZyksaT12b2lkIDAsZj1kfHwiIix2
LnJlYWR5U3RhdGU9YT4wPzQ6MCxqPWE+PTIwMCYmMzAwPmF8fDMwND09PWEsYyYmKHU9T2Moayx2
LGMpKSx1PVBjKGssdSx2LGopLGo/KGsuaWZNb2RpZmllZCYmKHc9di5nZXRSZXNwb25zZUhlYWRl
cigiTGFzdC1Nb2RpZmllZCIpLHcmJihtLmxhc3RNb2RpZmllZFtlXT13KSx3PXYuZ2V0UmVzcG9u
c2VIZWFkZXIoImV0YWciKSx3JiYobS5ldGFnW2VdPXcpKSwyMDQ9PT1hfHwiSEVBRCI9PT1rLnR5
cGU/eD0ibm9jb250ZW50IjozMDQ9PT1hP3g9Im5vdG1vZGlmaWVkIjooeD11LnN0YXRlLHI9dS5k
YXRhLHM9dS5lcnJvcixqPSFzKSk6KHM9eCwoYXx8IXgpJiYoeD0iZXJyb3IiLDA+YSYmKGE9MCkp
KSx2LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0oYnx8eCkrIiIsaj9vLnJlc29sdmVXaXRoKGwsW3Is
eCx2XSk6by5yZWplY3RXaXRoKGwsW3YseCxzXSksdi5zdGF0dXNDb2RlKHEpLHE9dm9pZCAwLGgm
Jm4udHJpZ2dlcihqPyJhamF4U3VjY2VzcyI6ImFqYXhFcnJvciIsW3YsayxqP3I6c10pLHAuZmly
ZVdpdGgobCxbdix4XSksaCYmKG4udHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixrXSksLS1tLmFj
dGl2ZXx8bS5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKSl9cmV0dXJuIHZ9LGdldEpTT046ZnVu
Y3Rpb24oYSxiLGMpe3JldHVybiBtLmdldChhLGIsYywianNvbiIpfSxnZXRTY3JpcHQ6ZnVuY3Rp
b24oYSxiKXtyZXR1cm4gbS5nZXQoYSx2b2lkIDAsYiwic2NyaXB0Iil9fSksbS5lYWNoKFsiZ2V0
IiwicG9zdCJdLGZ1bmN0aW9uKGEsYil7bVtiXT1mdW5jdGlvbihhLGMsZCxlKXtyZXR1cm4gbS5p
c0Z1bmN0aW9uKGMpJiYoZT1lfHxkLGQ9YyxjPXZvaWQgMCksbS5hamF4KHt1cmw6YSx0eXBlOmIs
ZGF0YVR5cGU6ZSxkYXRhOmMsc3VjY2VzczpkfSl9fSksbS5lYWNoKFsiYWpheFN0YXJ0IiwiYWph
eFN0b3AiLCJhamF4Q29tcGxldGUiLCJhamF4RXJyb3IiLCJhamF4U3VjY2VzcyIsImFqYXhTZW5k
Il0sZnVuY3Rpb24oYSxiKXttLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9
fSksbS5fZXZhbFVybD1mdW5jdGlvbihhKXtyZXR1cm4gbS5hamF4KHt1cmw6YSx0eXBlOiJHRVQi
LGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOiExLGdsb2JhbDohMSwidGhyb3dzIjohMH0pfSxtLmZu
LmV4dGVuZCh7d3JhcEFsbDpmdW5jdGlvbihhKXtpZihtLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRo
aXMuZWFjaChmdW5jdGlvbihiKXttKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYo
dGhpc1swXSl7dmFyIGI9bShhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITAp
O3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rp
b24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmMT09PWEuZmlyc3RDaGlsZC5ub2Rl
VHlwZSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30s
d3JhcElubmVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2gobS5pc0Z1bmN0aW9uKGEpP2Z1
bmN0aW9uKGIpe20odGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX06ZnVuY3Rpb24oKXt2
YXIgYj1tKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVu
ZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPW0uaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhp
cy5lYWNoKGZ1bmN0aW9uKGMpe20odGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9
LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtt
Lm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8bSh0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9k
ZXMpfSkuZW5kKCl9fSksbS5leHByLmZpbHRlcnMuaGlkZGVuPWZ1bmN0aW9uKGEpe3JldHVybiBh
Lm9mZnNldFdpZHRoPD0wJiZhLm9mZnNldEhlaWdodDw9MHx8IWsucmVsaWFibGVIaWRkZW5PZmZz
ZXRzKCkmJiJub25lIj09PShhLnN0eWxlJiZhLnN0eWxlLmRpc3BsYXl8fG0uY3NzKGEsImRpc3Bs
YXkiKSl9LG0uZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIW0uZXhwci5m
aWx0ZXJzLmhpZGRlbihhKX07dmFyIFFjPS8lMjAvZyxSYz0vXFtcXSQvLFNjPS9ccj9cbi9nLFRj
PS9eKD86c3VibWl0fGJ1dHRvbnxpbWFnZXxyZXNldHxmaWxlKSQvaSxVYz0vXig/OmlucHV0fHNl
bGVjdHx0ZXh0YXJlYXxrZXlnZW4pL2k7ZnVuY3Rpb24gVmMoYSxiLGMsZCl7dmFyIGU7aWYobS5p
c0FycmF5KGIpKW0uZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8UmMudGVzdChhKT9kKGEsZSk6VmMo
YSsiWyIrKCJvYmplY3QiPT10eXBlb2YgZT9iOiIiKSsiXSIsZSxjLGQpfSk7ZWxzZSBpZihjfHwi
b2JqZWN0IiE9PW0udHlwZShiKSlkKGEsYik7ZWxzZSBmb3IoZSBpbiBiKVZjKGErIlsiK2UrIl0i
LGJbZV0sYyxkKX1tLnBhcmFtPWZ1bmN0aW9uKGEsYil7dmFyIGMsZD1bXSxlPWZ1bmN0aW9uKGEs
Yil7Yj1tLmlzRnVuY3Rpb24oYik/YigpOm51bGw9PWI/IiI6YixkW2QubGVuZ3RoXT1lbmNvZGVV
UklDb21wb25lbnQoYSkrIj0iK2VuY29kZVVSSUNvbXBvbmVudChiKX07aWYodm9pZCAwPT09YiYm
KGI9bS5hamF4U2V0dGluZ3MmJm0uYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxtLmlzQXJyYXko
YSl8fGEuanF1ZXJ5JiYhbS5pc1BsYWluT2JqZWN0KGEpKW0uZWFjaChhLGZ1bmN0aW9uKCl7ZSh0
aGlzLm5hbWUsdGhpcy52YWx1ZSl9KTtlbHNlIGZvcihjIGluIGEpVmMoYyxhW2NdLGIsZSk7cmV0
dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoUWMsIisiKX0sbS5mbi5leHRlbmQoe3NlcmlhbGl6ZTpm
dW5jdGlvbigpe3JldHVybiBtLnBhcmFtKHRoaXMuc2VyaWFsaXplQXJyYXkoKSl9LHNlcmlhbGl6
ZUFycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9bS5wcm9w
KHRoaXMsImVsZW1lbnRzIik7cmV0dXJuIGE/bS5tYWtlQXJyYXkoYSk6dGhpc30pLmZpbHRlcihm
dW5jdGlvbigpe3ZhciBhPXRoaXMudHlwZTtyZXR1cm4gdGhpcy5uYW1lJiYhbSh0aGlzKS5pcygi
OmRpc2FibGVkIikmJlVjLnRlc3QodGhpcy5ub2RlTmFtZSkmJiFUYy50ZXN0KGEpJiYodGhpcy5j
aGVja2VkfHwhVy50ZXN0KGEpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPW0odGhpcykudmFs
KCk7cmV0dXJuIG51bGw9PWM/bnVsbDptLmlzQXJyYXkoYyk/bS5tYXAoYyxmdW5jdGlvbihhKXty
ZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKFNjLCJcclxuIil9fSk6e25hbWU6Yi5u
YW1lLHZhbHVlOmMucmVwbGFjZShTYywiXHJcbiIpfX0pLmdldCgpfX0pLG0uYWpheFNldHRpbmdz
Lnhocj12b2lkIDAhPT1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtyZXR1cm4hdGhpcy5pc0xv
Y2FsJiYvXihnZXR8cG9zdHxoZWFkfHB1dHxkZWxldGV8b3B0aW9ucykkL2kudGVzdCh0aGlzLnR5
cGUpJiZaYygpfHwkYygpfTpaYzt2YXIgV2M9MCxYYz17fSxZYz1tLmFqYXhTZXR0aW5ncy54aHIo
KTthLkFjdGl2ZVhPYmplY3QmJm0oYSkub24oInVubG9hZCIsZnVuY3Rpb24oKXtmb3IodmFyIGEg
aW4gWGMpWGNbYV0odm9pZCAwLCEwKX0pLGsuY29ycz0hIVljJiYid2l0aENyZWRlbnRpYWxzImlu
IFljLFljPWsuYWpheD0hIVljLFljJiZtLmFqYXhUcmFuc3BvcnQoZnVuY3Rpb24oYSl7aWYoIWEu
Y3Jvc3NEb21haW58fGsuY29ycyl7dmFyIGI7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oYyxkKXt2YXIg
ZSxmPWEueGhyKCksZz0rK1djO2lmKGYub3BlbihhLnR5cGUsYS51cmwsYS5hc3luYyxhLnVzZXJu
YW1lLGEucGFzc3dvcmQpLGEueGhyRmllbGRzKWZvcihlIGluIGEueGhyRmllbGRzKWZbZV09YS54
aHJGaWVsZHNbZV07YS5taW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlJiZmLm92ZXJyaWRlTWlt
ZVR5cGUoYS5taW1lVHlwZSksYS5jcm9zc0RvbWFpbnx8Y1siWC1SZXF1ZXN0ZWQtV2l0aCJdfHwo
Y1siWC1SZXF1ZXN0ZWQtV2l0aCJdPSJYTUxIdHRwUmVxdWVzdCIpO2ZvcihlIGluIGMpdm9pZCAw
IT09Y1tlXSYmZi5zZXRSZXF1ZXN0SGVhZGVyKGUsY1tlXSsiIik7Zi5zZW5kKGEuaGFzQ29udGVu
dCYmYS5kYXRhfHxudWxsKSxiPWZ1bmN0aW9uKGMsZSl7dmFyIGgsaSxqO2lmKGImJihlfHw0PT09
Zi5yZWFkeVN0YXRlKSlpZihkZWxldGUgWGNbZ10sYj12b2lkIDAsZi5vbnJlYWR5c3RhdGVjaGFu
Z2U9bS5ub29wLGUpNCE9PWYucmVhZHlTdGF0ZSYmZi5hYm9ydCgpO2Vsc2V7aj17fSxoPWYuc3Rh
dHVzLCJzdHJpbmciPT10eXBlb2YgZi5yZXNwb25zZVRleHQmJihqLnRleHQ9Zi5yZXNwb25zZVRl
eHQpO3RyeXtpPWYuc3RhdHVzVGV4dH1jYXRjaChrKXtpPSIifWh8fCFhLmlzTG9jYWx8fGEuY3Jv
c3NEb21haW4/MTIyMz09PWgmJihoPTIwNCk6aD1qLnRleHQ/MjAwOjQwNH1qJiZkKGgsaSxqLGYu
Z2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpfSxhLmFzeW5jPzQ9PT1mLnJlYWR5U3RhdGU/c2V0VGlt
ZW91dChiKTpmLm9ucmVhZHlzdGF0ZWNoYW5nZT1YY1tnXT1iOmIoKX0sYWJvcnQ6ZnVuY3Rpb24o
KXtiJiZiKHZvaWQgMCwhMCl9fX19KTtmdW5jdGlvbiBaYygpe3RyeXtyZXR1cm4gbmV3IGEuWE1M
SHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiAkYygpe3RyeXtyZXR1cm4gbmV3IGEuQWN0
aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTEhUVFAiKX1jYXRjaChiKXt9fW0uYWpheFNldHVwKHth
Y2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwg
YXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVu
dHM6e3NjcmlwdDovKD86amF2YXxlY21hKXNjcmlwdC99LGNvbnZlcnRlcnM6eyJ0ZXh0IHNjcmlw
dCI6ZnVuY3Rpb24oYSl7cmV0dXJuIG0uZ2xvYmFsRXZhbChhKSxhfX19KSxtLmFqYXhQcmVmaWx0
ZXIoInNjcmlwdCIsZnVuY3Rpb24oYSl7dm9pZCAwPT09YS5jYWNoZSYmKGEuY2FjaGU9ITEpLGEu
Y3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksbS5hamF4VHJhbnNwb3J0
KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBiLGM9eS5oZWFkfHxt
KCJoZWFkIilbMF18fHkuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGQsZSl7
Yj15LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGIuYXN5bmM9ITAsYS5zY3JpcHRDaGFyc2V0JiYo
Yi5jaGFyc2V0PWEuc2NyaXB0Q2hhcnNldCksYi5zcmM9YS51cmwsYi5vbmxvYWQ9Yi5vbnJlYWR5
c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oYSxjKXsoY3x8IWIucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21w
bGV0ZS8udGVzdChiLnJlYWR5U3RhdGUpKSYmKGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbmdl
PW51bGwsYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYiksYj1udWxsLGN8
fGUoMjAwLCJzdWNjZXNzIikpfSxjLmluc2VydEJlZm9yZShiLGMuZmlyc3RDaGlsZCl9LGFib3J0
OmZ1bmN0aW9uKCl7YiYmYi5vbmxvYWQodm9pZCAwLCEwKX19fX0pO3ZhciBfYz1bXSxhZD0vKD0p
XD8oPz0mfCQpfFw/XD8vO20uYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJh
Y2s6ZnVuY3Rpb24oKXt2YXIgYT1fYy5wb3AoKXx8bS5leHBhbmRvKyJfIit2YysrO3JldHVybiB0
aGlzW2FdPSEwLGF9fSksbS5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMs
ZCl7dmFyIGUsZixnLGg9Yi5qc29ucCE9PSExJiYoYWQudGVzdChiLnVybCk/InVybCI6InN0cmlu
ZyI9PXR5cGVvZiBiLmRhdGEmJiEoYi5jb250ZW50VHlwZXx8IiIpLmluZGV4T2YoImFwcGxpY2F0
aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIpJiZhZC50ZXN0KGIuZGF0YSkmJiJkYXRhIik7cmV0
dXJuIGh8fCJqc29ucCI9PT1iLmRhdGFUeXBlc1swXT8oZT1iLmpzb25wQ2FsbGJhY2s9bS5pc0Z1
bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNr
LGg/YltoXT1iW2hdLnJlcGxhY2UoYWQsIiQxIitlKTpiLmpzb25wIT09ITEmJihiLnVybCs9KHdj
LnRlc3QoYi51cmwpPyImIjoiPyIpK2IuanNvbnArIj0iK2UpLGIuY29udmVydGVyc1sic2NyaXB0
IGpzb24iXT1mdW5jdGlvbigpe3JldHVybiBnfHxtLmVycm9yKGUrIiB3YXMgbm90IGNhbGxlZCIp
LGdbMF19LGIuZGF0YVR5cGVzWzBdPSJqc29uIixmPWFbZV0sYVtlXT1mdW5jdGlvbigpe2c9YXJn
dW1lbnRzfSxkLmFsd2F5cyhmdW5jdGlvbigpe2FbZV09ZixiW2VdJiYoYi5qc29ucENhbGxiYWNr
PWMuanNvbnBDYWxsYmFjayxfYy5wdXNoKGUpKSxnJiZtLmlzRnVuY3Rpb24oZikmJmYoZ1swXSks
Zz1mPXZvaWQgMH0pLCJzY3JpcHQiKTp2b2lkIDB9KSxtLnBhcnNlSFRNTD1mdW5jdGlvbihhLGIs
Yyl7aWYoIWF8fCJzdHJpbmciIT10eXBlb2YgYSlyZXR1cm4gbnVsbDsiYm9vbGVhbiI9PXR5cGVv
ZiBiJiYoYz1iLGI9ITEpLGI9Ynx8eTt2YXIgZD11LmV4ZWMoYSksZT0hYyYmW107cmV0dXJuIGQ/
W2IuY3JlYXRlRWxlbWVudChkWzFdKV06KGQ9bS5idWlsZEZyYWdtZW50KFthXSxiLGUpLGUmJmUu
bGVuZ3RoJiZtKGUpLnJlbW92ZSgpLG0ubWVyZ2UoW10sZC5jaGlsZE5vZGVzKSl9O3ZhciBiZD1t
LmZuLmxvYWQ7bS5mbi5sb2FkPWZ1bmN0aW9uKGEsYixjKXtpZigic3RyaW5nIiE9dHlwZW9mIGEm
JmJkKXJldHVybiBiZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIGQsZSxmLGc9dGhpcyxoPWEu
aW5kZXhPZigiICIpO3JldHVybiBoPj0wJiYoZD1tLnRyaW0oYS5zbGljZShoLGEubGVuZ3RoKSks
YT1hLnNsaWNlKDAsaCkpLG0uaXNGdW5jdGlvbihiKT8oYz1iLGI9dm9pZCAwKTpiJiYib2JqZWN0
Ij09dHlwZW9mIGImJihmPSJQT1NUIiksZy5sZW5ndGg+MCYmbS5hamF4KHt1cmw6YSx0eXBlOmYs
ZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yn0pLmRvbmUoZnVuY3Rpb24oYSl7ZT1hcmd1bWVudHMsZy5o
dG1sKGQ/bSgiPGRpdj4iKS5hcHBlbmQobS5wYXJzZUhUTUwoYSkpLmZpbmQoZCk6YSl9KS5jb21w
bGV0ZShjJiZmdW5jdGlvbihhLGIpe2cuZWFjaChjLGV8fFthLnJlc3BvbnNlVGV4dCxiLGFdKX0p
LHRoaXN9LG0uZXhwci5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKGEpe3JldHVybiBtLmdyZXAo
bS50aW1lcnMsZnVuY3Rpb24oYil7cmV0dXJuIGE9PT1iLmVsZW19KS5sZW5ndGh9O3ZhciBjZD1h
LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtmdW5jdGlvbiBkZChhKXtyZXR1cm4gbS5pc1dpbmRv
dyhhKT9hOjk9PT1hLm5vZGVUeXBlP2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfW0u
b2Zmc2V0PXtzZXRPZmZzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGs9bS5j
c3MoYSwicG9zaXRpb24iKSxsPW0oYSksbj17fTsic3RhdGljIj09PWsmJihhLnN0eWxlLnBvc2l0
aW9uPSJyZWxhdGl2ZSIpLGg9bC5vZmZzZXQoKSxmPW0uY3NzKGEsInRvcCIpLGk9bS5jc3MoYSwi
bGVmdCIpLGo9KCJhYnNvbHV0ZSI9PT1rfHwiZml4ZWQiPT09aykmJm0uaW5BcnJheSgiYXV0byIs
W2YsaV0pPi0xLGo/KGQ9bC5wb3NpdGlvbigpLGc9ZC50b3AsZT1kLmxlZnQpOihnPXBhcnNlRmxv
YXQoZil8fDAsZT1wYXJzZUZsb2F0KGkpfHwwKSxtLmlzRnVuY3Rpb24oYikmJihiPWIuY2FsbChh
LGMsaCkpLG51bGwhPWIudG9wJiYobi50b3A9Yi50b3AtaC50b3ArZyksbnVsbCE9Yi5sZWZ0JiYo
bi5sZWZ0PWIubGVmdC1oLmxlZnQrZSksInVzaW5nImluIGI/Yi51c2luZy5jYWxsKGEsbik6bC5j
c3Mobil9fSxtLmZuLmV4dGVuZCh7b2Zmc2V0OmZ1bmN0aW9uKGEpe2lmKGFyZ3VtZW50cy5sZW5n
dGgpcmV0dXJuIHZvaWQgMD09PWE/dGhpczp0aGlzLmVhY2goZnVuY3Rpb24oYil7bS5vZmZzZXQu
c2V0T2Zmc2V0KHRoaXMsYSxiKX0pO3ZhciBiLGMsZD17dG9wOjAsbGVmdDowfSxlPXRoaXNbMF0s
Zj1lJiZlLm93bmVyRG9jdW1lbnQ7aWYoZilyZXR1cm4gYj1mLmRvY3VtZW50RWxlbWVudCxtLmNv
bnRhaW5zKGIsZSk/KHR5cGVvZiBlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCE9PUsmJihkPWUuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkpLGM9ZGQoZikse3RvcDpkLnRvcCsoYy5wYWdlWU9mZnNldHx8
Yi5zY3JvbGxUb3ApLShiLmNsaWVudFRvcHx8MCksbGVmdDpkLmxlZnQrKGMucGFnZVhPZmZzZXR8
fGIuc2Nyb2xsTGVmdCktKGIuY2xpZW50TGVmdHx8MCl9KTpkfSxwb3NpdGlvbjpmdW5jdGlvbigp
e2lmKHRoaXNbMF0pe3ZhciBhLGIsYz17dG9wOjAsbGVmdDowfSxkPXRoaXNbMF07cmV0dXJuImZp
eGVkIj09PW0uY3NzKGQsInBvc2l0aW9uIik/Yj1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOihh
PXRoaXMub2Zmc2V0UGFyZW50KCksYj10aGlzLm9mZnNldCgpLG0ubm9kZU5hbWUoYVswXSwiaHRt
bCIpfHwoYz1hLm9mZnNldCgpKSxjLnRvcCs9bS5jc3MoYVswXSwiYm9yZGVyVG9wV2lkdGgiLCEw
KSxjLmxlZnQrPW0uY3NzKGFbMF0sImJvcmRlckxlZnRXaWR0aCIsITApKSx7dG9wOmIudG9wLWMu
dG9wLW0uY3NzKGQsIm1hcmdpblRvcCIsITApLGxlZnQ6Yi5sZWZ0LWMubGVmdC1tLmNzcyhkLCJt
YXJnaW5MZWZ0IiwhMCl9fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFw
KGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGNkO3doaWxlKGEmJiFtLm5vZGVO
YW1lKGEsImh0bWwiKSYmInN0YXRpYyI9PT1tLmNzcyhhLCJwb3NpdGlvbiIpKWE9YS5vZmZzZXRQ
YXJlbnQ7cmV0dXJuIGF8fGNkfSl9fSksbS5lYWNoKHtzY3JvbGxMZWZ0OiJwYWdlWE9mZnNldCIs
c2Nyb2xsVG9wOiJwYWdlWU9mZnNldCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGM9L1kvLnRlc3QoYik7
bS5mblthXT1mdW5jdGlvbihkKXtyZXR1cm4gVih0aGlzLGZ1bmN0aW9uKGEsZCxlKXt2YXIgZj1k
ZChhKTtyZXR1cm4gdm9pZCAwPT09ZT9mP2IgaW4gZj9mW2JdOmYuZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50W2RdOmFbZF06dm9pZChmP2Yuc2Nyb2xsVG8oYz9tKGYpLnNjcm9sbExlZnQoKTplLGM/
ZTptKGYpLnNjcm9sbFRvcCgpKTphW2RdPWUpfSxhLGQsYXJndW1lbnRzLmxlbmd0aCxudWxsKX19
KSxtLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oYSxiKXttLmNzc0hvb2tzW2JdPUxiKGsu
cGl4ZWxQb3NpdGlvbixmdW5jdGlvbihhLGMpe3JldHVybiBjPyhjPUpiKGEsYiksSGIudGVzdChj
KT9tKGEpLnBvc2l0aW9uKClbYl0rInB4IjpjKTp2b2lkIDB9KX0pLG0uZWFjaCh7SGVpZ2h0OiJo
ZWlnaHQiLFdpZHRoOiJ3aWR0aCJ9LGZ1bmN0aW9uKGEsYil7bS5lYWNoKHtwYWRkaW5nOiJpbm5l
ciIrYSxjb250ZW50OmIsIiI6Im91dGVyIithfSxmdW5jdGlvbihjLGQpe20uZm5bZF09ZnVuY3Rp
b24oZCxlKXt2YXIgZj1hcmd1bWVudHMubGVuZ3RoJiYoY3x8ImJvb2xlYW4iIT10eXBlb2YgZCks
Zz1jfHwoZD09PSEwfHxlPT09ITA/Im1hcmdpbiI6ImJvcmRlciIpO3JldHVybiBWKHRoaXMsZnVu
Y3Rpb24oYixjLGQpe3ZhciBlO3JldHVybiBtLmlzV2luZG93KGIpP2IuZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50WyJjbGllbnQiK2FdOjk9PT1iLm5vZGVUeXBlPyhlPWIuZG9jdW1lbnRFbGVtZW50
LE1hdGgubWF4KGIuYm9keVsic2Nyb2xsIithXSxlWyJzY3JvbGwiK2FdLGIuYm9keVsib2Zmc2V0
IithXSxlWyJvZmZzZXQiK2FdLGVbImNsaWVudCIrYV0pKTp2b2lkIDA9PT1kP20uY3NzKGIsYyxn
KTptLnN0eWxlKGIsYyxkLGcpfSxiLGY/ZDp2b2lkIDAsZixudWxsKX19KX0pLG0uZm4uc2l6ZT1m
dW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sbS5mbi5hbmRTZWxmPW0uZm4uYWRkQmFjaywi
ZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kJiZkZWZpbmUoImpxdWVyeSIsW10s
ZnVuY3Rpb24oKXtyZXR1cm4gbX0pO3ZhciBlZD1hLmpRdWVyeSxmZD1hLiQ7cmV0dXJuIG0ubm9D
b25mbGljdD1mdW5jdGlvbihiKXtyZXR1cm4gYS4kPT09bSYmKGEuJD1mZCksYiYmYS5qUXVlcnk9
PT1tJiYoYS5qUXVlcnk9ZWQpLG19LHR5cGVvZiBiPT09SyYmKGEualF1ZXJ5PWEuJD1tKSxtfSk7
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LTEuMTEu
MS5taW4uanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMK
LW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHBy
b3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5nZXBpY2tl
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5n
ZXBpY2tlci5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0V4dGVybmFsL2px
dWVyeS5kYXRlcmFuZ2VwaWNrZXIuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMjY2ICswLDAgQEAK
LS8vIGRhdGVyYW5nZXBpY2tlci5qcwotLy8gdmVyc2lvbiA6IDAuMC41Ci0vLyBhdXRob3IgOiBD
aHVubG9uZyBMaXUKLS8vIGxhc3QgdXBkYXRlZCBhdDogMjAxNC0wNS0yNwotLy8gbGljZW5zZSA6
IE1JVAotLy8gd3d3LmpzemVuLmNvbQotCi0oZnVuY3Rpb24oJCkKLXsKLQotICAgICQuZGF0ZVJh
bmdlUGlja2VyTGFuZ3VhZ2VzID0KLSAgICB7Ci0gICAgICAgICdjbic6Ci0gICAgICAgIHsKLSAg
ICAgICAgICAgICdzZWxlY3RlZCc6ICflt7LpgInmi6k6JywKLSAgICAgICAgICAgICdkYXknOifl
pKknLAotICAgICAgICAgICAgJ2RheXMnOiAn5aSpJywKLSAgICAgICAgICAgICdhcHBseSc6ICfn
oa7lrponLAotICAgICAgICAgICAgJ3dlZWstMScgOiAn5LiAJywKLSAgICAgICAgICAgICd3ZWVr
LTInIDogJ+S6jCcsCi0gICAgICAgICAgICAnd2Vlay0zJyA6ICfkuIknLAotICAgICAgICAgICAg
J3dlZWstNCcgOiAn5ZubJywKLSAgICAgICAgICAgICd3ZWVrLTUnIDogJ+S6lCcsCi0gICAgICAg
ICAgICAnd2Vlay02JyA6ICflha0nLAotICAgICAgICAgICAgJ3dlZWstNycgOiAn5pelJywKLSAg
ICAgICAgICAgICdtb250aC1uYW1lJzogWyfkuIDmnIgnLCfkuozmnIgnLCfkuInmnIgnLCflm5vm
nIgnLCfkupTmnIgnLCflha3mnIgnLCfkuIPmnIgnLCflhavmnIgnLCfkuZ3mnIgnLCfljYHmnIgn
LCfljYHkuIDmnIgnLCfljYHkuozmnIgnXSwKLSAgICAgICAgICAgICdzaG9ydGN1dHMnIDogJ+W/
q+aNt+mAieaLqScsCi0gICAgICAgICAgICAncGFzdCc6ICfov4fljrsnLAotICAgICAgICAgICAg
J2ZvbGxvd2luZyc6J+WwhuadpScsCi0gICAgICAgICAgICAncHJldmlvdXMnIDogJyZuYnNwOyZu
YnNwOyZuYnNwOycsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICfkuIrlkagnLAotICAgICAg
ICAgICAgJ3ByZXYtbW9udGgnIDogJ+S4iuS4quaciCcsCi0gICAgICAgICAgICAncHJldi15ZWFy
JyA6ICfljrvlubQnLAotICAgICAgICAgICAgJ25leHQnOiAnJm5ic3A7Jm5ic3A7Jm5ic3A7JywK
LSAgICAgICAgICAgICduZXh0LXdlZWsnOifkuIvlkagnLAotICAgICAgICAgICAgJ25leHQtbW9u
dGgnOifkuIvkuKrmnIgnLAotICAgICAgICAgICAgJ25leHQteWVhcic6J+aYjuW5tCcsCi0gICAg
ICAgICAgICAnbGVzcy10aGFuJyA6ICfmiYDpgInml6XmnJ/ojIPlm7TkuI3og73lpKfkuo4lZOWk
qScsCi0gICAgICAgICAgICAnbW9yZS10aGFuJyA6ICfmiYDpgInml6XmnJ/ojIPlm7TkuI3og73l
sI/kuo4lZOWkqScsCi0gICAgICAgICAgICAnZGVmYXVsdC1tb3JlJyA6ICfor7fpgInmi6nlpKfk
uo4lZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAgICAgICAgICAnZGVmYXVsdC1sZXNzJyA6ICfo
r7fpgInmi6nlsI/kuo4lZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAgICAgICAgICAnZGVmYXVs
dC1yYW5nZScgOiAn6K+36YCJ5oupJWTlpKnliLAlZOWkqeeahOaXpeacn+iMg+WbtCcsCi0gICAg
ICAgICAgICAnZGVmYXVsdC1zaW5nbGUnOifor7fpgInmi6nkuIDkuKrml6XmnJ8nLAotICAgICAg
ICAgICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICfor7fpgInmi6nkuIDkuKrml6XmnJ/ojIPlm7QnCi0g
ICAgICAgIH0sCi0gICAgICAgICdlbic6Ci0gICAgICAgIHsKLSAgICAgICAgICAgICdzZWxlY3Rl
ZCc6ICdTZWxlY3RlZDonLAotICAgICAgICAgICAgJ2RheSc6J0RheScsCi0gICAgICAgICAgICAn
ZGF5cyc6ICdEYXlzJywKLSAgICAgICAgICAgICdhcHBseSc6ICdTdGFydCcsCi0gICAgICAgICAg
ICAnd2Vlay0xJyA6ICdNTycsCi0gICAgICAgICAgICAnd2Vlay0yJyA6ICdUVScsCi0gICAgICAg
ICAgICAnd2Vlay0zJyA6ICdXRScsCi0gICAgICAgICAgICAnd2Vlay00JyA6ICdUSCcsCi0gICAg
ICAgICAgICAnd2Vlay01JyA6ICdGUicsCi0gICAgICAgICAgICAnd2Vlay02JyA6ICdTQScsCi0g
ICAgICAgICAgICAnd2Vlay03JyA6ICdTVScsCi0gICAgICAgICAgICAnbW9udGgtbmFtZSc6IFsn
SkFOVUFSWScsJ0ZFQlJVQVJZJywnTUFSQ0gnLCdBUFJJTCcsJ01BWScsJ0pVTkUnLCdKVUxZJywn
QVVHVVNUJywnU0VQVEVNQkVSJywnT0NUT0JFUicsJ05PVkVNQkVSJywnREVDRU1CRVInXSwKLSAg
ICAgICAgICAgICdzaG9ydGN1dHMnIDogJ1Nob3J0Y3V0cycsCi0gICAgICAgICAgICAncGFzdCc6
ICdQYXN0JywKLSAgICAgICAgICAgICdmb2xsb3dpbmcnOidGb2xsb3dpbmcnLAotICAgICAgICAg
ICAgJ3ByZXZpb3VzJyA6ICdQcmV2aW91cycsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdX
ZWVrJywKLSAgICAgICAgICAgICdwcmV2LW1vbnRoJyA6ICdNb250aCcsCi0gICAgICAgICAgICAn
cHJldi15ZWFyJyA6ICdZZWFyJywKLSAgICAgICAgICAgICduZXh0JzonTmV4dCcsCi0gICAgICAg
ICAgICAnbmV4dC13ZWVrJzonV2VlaycsCi0gICAgICAgICAgICAnbmV4dC1tb250aCc6J01vbnRo
JywKLSAgICAgICAgICAgICduZXh0LXllYXInOidZZWFyJywKLSAgICAgICAgICAgICdsZXNzLXRo
YW4nIDogJ0RhdGUgcmFuZ2Ugc2hvdWxkIG5vdCBiZSBtb3JlIHRoYW4gJWQgZGF5cycsCi0gICAg
ICAgICAgICAnbW9yZS10aGFuJyA6ICdEYXRlIHJhbmdlIHNob3VsZCBub3QgYmUgbGVzcyB0aGFu
ICVkIGRheXMnLAotICAgICAgICAgICAgJ2RlZmF1bHQtbW9yZScgOiAnUGxlYXNlIHNlbGVjdCBh
IGRhdGUgcmFuZ2UgbG9uZ2VyIHRoYW4gJWQgZGF5cycsCi0gICAgICAgICAgICAnZGVmYXVsdC1z
aW5nbGUnIDogJ1BsZWFzZSBzZWxlY3QgYSBkYXRlJywKLSAgICAgICAgICAgICdkZWZhdWx0LWxl
c3MnIDogJ1BsZWFzZSBzZWxlY3QgYSBkYXRlIHJhbmdlIGxlc3MgdGhhbiAlZCBkYXlzJywKLSAg
ICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICdQbGVhc2Ugc2VsZWN0IGEgZGF0ZSByYW5nZSBi
ZXR3ZWVuICVkIGFuZCAlZCBkYXlzJywKLSAgICAgICAgICAgICdkZWZhdWx0LWRlZmF1bHQnOiAn
UGxlYXNlIHNlbGVjdCBhIGRhdGUgcmFuZ2UnCi0gICAgICAgIH0sCi0gICAgICAgICdpdCc6Ci0g
ICAgICAgIHsKLSAgICAgICAgICAgICdzZWxlY3RlZCc6ICdTZWxlemlvbmF0aTonLAotICAgICAg
ICAgICAgJ2RheSc6J0dpb3JubycsCi0gICAgICAgICAgICAnZGF5cyc6ICdHaW9ybmknLAotICAg
ICAgICAgICAgJ2FwcGx5JzogJ0NoaXVkaScsCi0gICAgICAgICAgICAnd2Vlay0xJyA6ICdMVScs
Ci0gICAgICAgICAgICAnd2Vlay0yJyA6ICdNQScsCi0gICAgICAgICAgICAnd2Vlay0zJyA6ICdN
RScsCi0gICAgICAgICAgICAnd2Vlay00JyA6ICdHSScsCi0gICAgICAgICAgICAnd2Vlay01JyA6
ICdWRScsCi0gICAgICAgICAgICAnd2Vlay02JyA6ICdTQScsCi0gICAgICAgICAgICAnd2Vlay03
JyA6ICdETycsCi0gICAgICAgICAgICAnbW9udGgtbmFtZSc6IFsnR0VOTkFJTycsJ0ZFQkJSQUlP
JywnTUFSWk8nLCdBUFJJTEUnLCdNQUdHSU8nLCdHSVVHTk8nLCdMVUdMSU8nLCdBR09TVE8nLCdT
RVRURU1CUkUnLCdPVFRPQlJFJywnTk9WRU1CUkUnLCdESUNFTUJSRSddLAotICAgICAgICAgICAg
J3Nob3J0Y3V0cycgOiAnU2NvcmNpYXRvaWUnLAotICAgICAgICAgICAgJ3Bhc3QnOiAnU2NvcnNv
JywKLSAgICAgICAgICAgICdmb2xsb3dpbmcnOidTdWNjZXNzaXZvJywKLSAgICAgICAgICAgICdw
cmV2aW91cycgOiAnUHJlY2VkZW50ZScsCi0gICAgICAgICAgICAncHJldi13ZWVrJyA6ICdTZXR0
aW1hbmEnLAotICAgICAgICAgICAgJ3ByZXYtbW9udGgnIDogJ01lc2UnLAotICAgICAgICAgICAg
J3ByZXYteWVhcicgOiAnQW5ubycsCi0gICAgICAgICAgICAnbmV4dCc6J1Byb3NzaW1vJywKLSAg
ICAgICAgICAgICduZXh0LXdlZWsnOidTZXR0aW1hbmEnLAotICAgICAgICAgICAgJ25leHQtbW9u
dGgnOidNZXNlJywKLSAgICAgICAgICAgICduZXh0LXllYXInOidBbm5vJywKLSAgICAgICAgICAg
ICdsZXNzLXRoYW4nIDogJ0xcJ2ludGVydmFsbG8gbm9uIGRldlwnZXNzZXJlIG1hZ2dpb3JlIGRp
ICVkIGdpb3JuaScsCi0gICAgICAgICAgICAnbW9yZS10aGFuJyA6ICdMXCdpbnRlcnZhbGxvIG5v
biBkZXZcJ2Vzc2VyZSBtaW5vcmUgZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdkZWZhdWx0
LW1vcmUnIDogJ1NlbGV6aW9uYSB1biBpbnRlcnZhbGxvIG1hZ2dpb3JlIGRpICVkIGdpb3JuaScs
Ci0gICAgICAgICAgICAnZGVmYXVsdC1zaW5nbGUnIDogJ1NlbGV6aW9uYSB1bmEgZGF0YScsCi0g
ICAgICAgICAgICAnZGVmYXVsdC1sZXNzJyA6ICdTZWxlemlvbmEgdW4gaW50ZXJ2YWxsbyBtaW5v
cmUgZGkgJWQgZ2lvcm5pJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6ICdTZWxlemlv
bmEgdW4gaW50ZXJ2YWxsbyBjb21wcmVzbyB0cmEgaSAlZCBlIGkgJWQgZ2lvcm5pJywKLSAgICAg
ICAgICAgICdkZWZhdWx0LWRlZmF1bHQnOiAnU2VsZXppb25hIHVuIGludGVydmFsbG8gZGkgZGF0
ZScKLSAgICAgICAgfSwKLSAgICAgICAgJ2VzJzoKLSAgICAgICAgewotICAgICAgICAgICAgJ3Nl
bGVjdGVkJzogJ1NlbGVjY2lvbmFkbzonLAotICAgICAgICAgICAgJ2RheSc6J0RpYScsCi0gICAg
ICAgICAgICAnZGF5cyc6ICdEaWFzJywKLSAgICAgICAgICAgICdhcHBseSc6ICdDZXJyYXInLAot
ICAgICAgICAgICAgJ3dlZWstMScgOiAnTFUnLAotICAgICAgICAgICAgJ3dlZWstMicgOiAnTUEn
LAotICAgICAgICAgICAgJ3dlZWstMycgOiAnTUknLAotICAgICAgICAgICAgJ3dlZWstNCcgOiAn
SlUnLAotICAgICAgICAgICAgJ3dlZWstNScgOiAnVkknLAotICAgICAgICAgICAgJ3dlZWstNicg
OiAnU0EnLAotICAgICAgICAgICAgJ3dlZWstNycgOiAnRE8nLAotICAgICAgICAgICAgJ21vbnRo
LW5hbWUnOiBbJ0VORVJPJywnRkVCUkVSTycsJ01BUlpPJywnQUJSSUwnLCdNQVlPJywnSlVOSU8n
LCdKVUxJTycsJ0FHT1NUTycsJ1NFUFRJRU1CUkUnLCdPQ1RVQlJFJywnTk9WSUVNQlJFJywnRElD
SUVNQlJFJ10sCi0gICAgICAgICAgICAnc2hvcnRjdXRzJyA6ICdBY2Nlc29zIGRpcmVjdG9zJywK
LSAgICAgICAgICAgICdwYXN0JzogJ1Bhc2FkbycsCi0gICAgICAgICAgICAnZm9sbG93aW5nJzon
U2lndWllbnRlJywKLSAgICAgICAgICAgICdwcmV2aW91cycgOiAnQW50ZXJpb3InLAotICAgICAg
ICAgICAgJ3ByZXYtd2VlaycgOiAnU2VtYW5hJywKLSAgICAgICAgICAgICdwcmV2LW1vbnRoJyA6
ICdNZXMnLAotICAgICAgICAgICAgJ3ByZXYteWVhcicgOiAnQcOxbycsCi0gICAgICAgICAgICAn
bmV4dCc6J1NpZ3VpZW50ZScsCi0gICAgICAgICAgICAnbmV4dC13ZWVrJzonU2VtYW5hJywKLSAg
ICAgICAgICAgICduZXh0LW1vbnRoJzonTWVzJywKLSAgICAgICAgICAgICduZXh0LXllYXInOidB
w7FvJywKLSAgICAgICAgICAgICdsZXNzLXRoYW4nIDogJ0VsIHJhbmdvIG5vIGRlYmVyaWEgc2Vy
IG1heW9yIGRlICVkIGRpYXMnLAotICAgICAgICAgICAgJ21vcmUtdGhhbicgOiAnRWwgcmFuZ28g
bm8gZGViZXJpYSBzZXIgbWVub3IgZGUgJWQgZGlhcycsCi0gICAgICAgICAgICAnZGVmYXVsdC1t
b3JlJyA6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBtYXlvciBhICVkIGRpYXMnLAot
ICAgICAgICAgICAgJ2RlZmF1bHQtc2luZ2xlJyA6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biBk
aWEnLAotICAgICAgICAgICAgJ2RlZmF1bHQtbGVzcycgOiAnUG9yIGZhdm9yIHNlbGVjY2lvbmEg
dW4gcmFuZ28gbWVub3IgYSAlZCBkaWFzJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdlJyA6
ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5nbyBlbnRyZSAlZCB5ICVkIGRpYXMnLAotICAg
ICAgICAgICAgJ2RlZmF1bHQtZGVmYXVsdCc6ICdQb3IgZmF2b3Igc2VsZWNjaW9uYSB1biByYW5n
byBkZSBmZWNoYXMuJwotICAgICAgICB9LAotICAgICAgICAnZGUnOgotICAgICAgICB7Ci0gICAg
ICAgICAgICAnc2VsZWN0ZWQnOiAnQXVzd2FobDonLAotICAgICAgICAgICAgJ2RheSc6J1RhZycs
Ci0gICAgICAgICAgICAnZGF5cyc6ICdUYWdlJywKLSAgICAgICAgICAgICdhcHBseSc6ICdTY2hs
aWXDn2VuJywKLSAgICAgICAgICAgICd3ZWVrLTEnIDogJ01PJywKLSAgICAgICAgICAgICd3ZWVr
LTInIDogJ0RJJywKLSAgICAgICAgICAgICd3ZWVrLTMnIDogJ01JJywKLSAgICAgICAgICAgICd3
ZWVrLTQnIDogJ0RPJywKLSAgICAgICAgICAgICd3ZWVrLTUnIDogJ0ZSJywKLSAgICAgICAgICAg
ICd3ZWVrLTYnIDogJ1NBJywKLSAgICAgICAgICAgICd3ZWVrLTcnIDogJ1NPJywKLSAgICAgICAg
ICAgICdtb250aC1uYW1lJzogWydKQU5VQVInLCdGRUJSVUFSJywnTcOEUlonLCdBUFJJTCcsJ01B
SScsJ0pVTkknLCdKVUxJJywnQVVHVVNUJywnU0VQVEVNQkVSJywnT0tUT0JFUicsJ05PVkVNQkVS
JywnREVaRU1CRVInXSwKLSAgICAgICAgICAgICdzaG9ydGN1dHMnIDogJ1NjaG5lbGx3YWhsJywK
LSAgICAgICAgICAgICdwYXN0JzogJ1ZvcmhlcmlnZScsCi0gICAgICAgICAgICAnZm9sbG93aW5n
JzonRm9sZ2VuZGUnLAotICAgICAgICAgICAgJ3ByZXZpb3VzJyA6ICdWb3JoZXJpZ2UnLAotICAg
ICAgICAgICAgJ3ByZXYtd2VlaycgOiAnV29jaGUnLAotICAgICAgICAgICAgJ3ByZXYtbW9udGgn
IDogJ01vbmF0JywKLSAgICAgICAgICAgICdwcmV2LXllYXInIDogJ0phaHInLAotICAgICAgICAg
ICAgJ25leHQnOidOw6RjaHN0ZScsCi0gICAgICAgICAgICAnbmV4dC13ZWVrJzonV29jaGUnLAot
ICAgICAgICAgICAgJ25leHQtbW9udGgnOidNb25hdCcsCi0gICAgICAgICAgICAnbmV4dC15ZWFy
JzonSmFocicsCi0gICAgICAgICAgICAnbGVzcy10aGFuJyA6ICdEYXR1bXNiZXJlaWNoIGRhcmYg
bmljaHQgZ3LDtsOfZXIgc2VpbiBhbHMgJWQgVGFnZScsCi0gICAgICAgICAgICAnbW9yZS10aGFu
JyA6ICdEYXR1bXNiZXJlaWNoIGRhcmYgbmljaHQga2xlaW5lciBzZWluIGFscyAlZCBUYWdlJywK
LSAgICAgICAgICAgICdkZWZhdWx0LW1vcmUnIDogJ0JpdHRlIG1pbmRlc3RlbnMgJWQgVGFnZSBh
dXN3w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LXNpbmdsZScgOiAnQml0dGUgZWluIERh
dHVtIGF1c3fDpGhsZW4nLAotICAgICAgICAgICAgJ2RlZmF1bHQtbGVzcycgOiAnQml0dGUgd2Vu
aWdlciBhbHMgJWQgVGFnZSBhdXN3w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LXJhbmdl
JyA6ICdCaXR0ZSBlaW5lbiBEYXR1bXNiZXJlaWNoIHp3aXNjaGVuICVkIHVuZCAlZCBUYWdlbiBh
dXN3w6RobGVuJywKLSAgICAgICAgICAgICdkZWZhdWx0LWRlZmF1bHQnOiAnQml0dGUgZWluIFN0
YXJ0LSB1bmQgRW5kZGF0dW0gYXVzd8OkaGxlbicKLSAgICAgICAgfQotICAgIH07Ci0KLQotICAg
IGlmICh3aW5kb3dbJ21vbWVudCddID09PSB1bmRlZmluZWQpCi0gICAgewotICAgICAgICBpZiAo
d2luZG93Wydjb25zb2xlJ10gJiYgY29uc29sZVsnd2FybiddKSBjb25zb2xlLndhcm4oJ1BsZWFz
ZSBpbXBvcnQgbW9tZW50LmpzIGJlZm9yZSBkYXRlcmFuZ2VwaWNrZXIuanMnKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgICQuZm4uZGF0ZVJhbmdlUGlja2VyID0gZnVuY3Rpb24ob3B0
KQotICAgIHsKLSAgICAgICAgaWYgKCFvcHQpIG9wdCA9IHt9OwotICAgICAgICBvcHQgPSAkLmV4
dGVuZCh0cnVlLAotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvQ2xvc2U6IGZhbHNlLAotICAg
ICAgICAgICAgZm9ybWF0OiAnWVlZWS1NTS1ERCcsCi0gICAgICAgICAgICBzZXBhcmF0b3I6ICcg
dG8gJywKLSAgICAgICAgICAgIGxhbmd1YWdlOiAnYXV0bycsCi0gICAgICAgICAgICBzdGFydE9m
V2VlazogJ3N1bmRheScsLy8gb3IgbW9uZGF5Ci0gICAgICAgICAgICBnZXRWYWx1ZTogZnVuY3Rp
b24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbihzKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICQodGhpcykudmFsKHMpOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIHN0YXJ0RGF0ZTogZmFsc2UsCi0gICAgICAgICAgICBlbmREYXRlOiBm
YWxzZSwKLSAgICAgICAgICAgIHRpbWU6IHsKLSAgICAgICAgICAgICAgICBlbmFibGVkOiBmYWxz
ZQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIG1pbkRheXM6IDAsCi0gICAgICAgICAgICBt
YXhEYXlzOiAwLAotICAgICAgICAgICAgc2hvd1Nob3J0Y3V0czogdHJ1ZSwKLSAgICAgICAgICAg
IHNob3J0Y3V0czoKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAvLydwcmV2LWRheXMn
OiBbMSwzLDUsN10sCi0gICAgICAgICAgICAgICAgJ25leHQtZGF5cyc6IFszLDUsN10sCi0gICAg
ICAgICAgICAgICAgLy8ncHJldicgOiBbJ3dlZWsnLCdtb250aCcsJ3llYXInXSwKLSAgICAgICAg
ICAgICAgICAnbmV4dCcgOiBbJ3dlZWsnLCdtb250aCcsJ3llYXInXQotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIGN1c3RvbVNob3J0Y3V0cyA6IFtdLAotICAgICAgICAgICAgaW5saW5lOmZh
bHNlLAotICAgICAgICAgICAgY29udGFpbmVyOidib2R5JywKLSAgICAgICAgICAgIGFsd2F5c09w
ZW46ZmFsc2UsCi0gICAgICAgICAgICBzaW5nbGVEYXRlOmZhbHNlLAotICAgICAgICAgICAgYmF0
Y2hNb2RlOiBmYWxzZQotICAgICAgICB9LG9wdCk7Ci0KLSAgICAgICAgb3B0LnN0YXJ0ID0gZmFs
c2U7Ci0gICAgICAgIG9wdC5lbmQgPSBmYWxzZTsKLQotICAgICAgICBpZiAob3B0LnN0YXJ0RGF0
ZSAmJiB0eXBlb2Ygb3B0LnN0YXJ0RGF0ZSA9PSAnc3RyaW5nJykgb3B0LnN0YXJ0RGF0ZSA9IG1v
bWVudChvcHQuc3RhcnREYXRlLG9wdC5mb3JtYXQpLnRvRGF0ZSgpOwotICAgICAgICBpZiAob3B0
LmVuZERhdGUgJiYgdHlwZW9mIG9wdC5lbmREYXRlID09ICdzdHJpbmcnKSBvcHQuZW5kRGF0ZSA9
IG1vbWVudChvcHQuZW5kRGF0ZSxvcHQuZm9ybWF0KS50b0RhdGUoKTsKLQotICAgICAgICB2YXIg
bGFuZ3MgPSBnZXRMYW5ndWFnZXMoKTsKLSAgICAgICAgdmFyIGJveDsKLSAgICAgICAgdmFyIGlu
aXRpYXRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHZhciBz
ZWxmRG9tID0gJChzZWxmKS5nZXQoMCk7Ci0KLSAgICAgICAgJCh0aGlzKS51bmJpbmQoJy5kYXRl
cGlja2VyJykuYmluZCgnY2xpY2suZGF0ZXBpY2tlcicsZnVuY3Rpb24oZXZ0KQotICAgICAgICB7
Ci0gICAgICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAgICBvcGVuKDIw
MCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGluaXRfZGF0ZXBpY2tlci5jYWxsKHRoaXMpOwot
Ci0gICAgICAgIGlmIChvcHQuYWx3YXlzT3BlbikKLSAgICAgICAgewotICAgICAgICAgICAgb3Bl
bigwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIGV4cG9zZSBzb21lIGFwaQotICAgICAgICAk
KHRoaXMpLmRhdGEoJ2RhdGVSYW5nZVBpY2tlcicsCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNl
dERhdGVSYW5nZSA6IGZ1bmN0aW9uKGQxLGQyKQotICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGlmICh0eXBlb2YgZDEgPT0gJ3N0cmluZycgJiYgdHlwZW9mIGQyID09ICdzdHJpbmcnKQot
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgZDEgPSBtb21lbnQoZDEsb3B0
LmZvcm1hdCkudG9EYXRlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGQyID0gbW9tZW50KGQyLG9w
dC5mb3JtYXQpLnRvRGF0ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBz
ZXREYXRlUmFuZ2UoZDEsZDIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGNsZWFyOiBj
bGVhclNlbGVjdGlvbiwKLSAgICAgICAgICAgIGNsb3NlOiBjbG9zZURhdGVQaWNrZXIsCi0gICAg
ICAgICAgICBvcGVuOiBvcGVuLAotICAgICAgICAgICAgZGVzdHJveTogZnVuY3Rpb24oKQotICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICQoc2VsZikudW5iaW5kKCcuZGF0ZXBpY2tlcicp
OwotICAgICAgICAgICAgICAgICQoc2VsZikuZGF0YSgnZGF0ZVJhbmdlUGlja2VyJywnJyk7Ci0g
ICAgICAgICAgICAgICAgYm94LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICQod2luZG93KS51
bmJpbmQoJ3Jlc2l6ZS5kYXRlcGlja2VyJyxjYWxjUG9zaXRpb24pOwotICAgICAgICAgICAgICAg
ICQoZG9jdW1lbnQpLnVuYmluZCgnY2xpY2suZGF0ZXBpY2tlcicsY2xvc2VEYXRlUGlja2VyKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgJCh3aW5kb3cpLmJpbmQoJ3Jl
c2l6ZS5kYXRlcGlja2VyJyxjYWxjUG9zaXRpb24pOwotCi0gICAgICAgIHJldHVybiB0aGlzOwot
Ci0KLQotCi0KLQotCi0KLQotCi0KLSAgICAgICAgZnVuY3Rpb24gaW5pdF9kYXRlcGlja2VyKCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgICAgICBp
ZiAoJCh0aGlzKS5kYXRhKCdkYXRlLXBpY2tlci1vcGVuZWQnKSkKLSAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICBjbG9zZURhdGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2RhdGUtcGlja2VyLW9w
ZW5lZCcsdHJ1ZSk7Ci0KLQotCi0KLQotICAgICAgICAgICAgYm94ID0gY3JlYXRlRG9tKCkuaGlk
ZSgpOwotICAgICAgICAgICAgJChvcHQuY29udGFpbmVyKS5hcHBlbmQoYm94KTsKLQotICAgICAg
ICAgICAgaWYgKCFvcHQuaW5saW5lKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGNh
bGNQb3NpdGlvbigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIGJveC5jc3Moe3Bvc2l0aW9uOidzdGF0aWMnfSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChvcHQuYWx3YXlzT3BlbikKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLmhpZGUoKTsKLSAgICAg
ICAgICAgIH0KLQotICAgICAgICAgICAgdmFyIGRlZmF1bHRUaW1lID0gbmV3IERhdGUoKTsKLSAg
ICAgICAgICAgIGlmIChvcHQuc3RhcnREYXRlICYmIGNvbXBhcmVfbW9udGgoZGVmYXVsdFRpbWUs
b3B0LnN0YXJ0RGF0ZSkgPCAwICkgZGVmYXVsdFRpbWUgPSBtb21lbnQob3B0LnN0YXJ0RGF0ZSku
dG9EYXRlKCk7Ci0gICAgICAgICAgICBpZiAob3B0LmVuZERhdGUgJiYgY29tcGFyZV9tb250aChu
ZXh0TW9udGgoZGVmYXVsdFRpbWUpLG9wdC5lbmREYXRlKSA+IDAgKSBkZWZhdWx0VGltZSA9IHBy
ZXZNb250aChtb21lbnQob3B0LmVuZERhdGUpLnRvRGF0ZSgpKTsKLQotCi0gICAgICAgICAgICBz
aG93TW9udGgoZGVmYXVsdFRpbWUsJ21vbnRoMScpOwotICAgICAgICAgICAgc2hvd01vbnRoKG5l
eHRNb250aChkZWZhdWx0VGltZSksJ21vbnRoMicpOwotCi0gICAgICAgICAgICBpZiAob3B0LnRp
bWUuZW5hYmxlZCkgewotICAgICAgICAgICAgICAgIGlmICgob3B0LnN0YXJ0RGF0ZSAmJiBvcHQu
ZW5kRGF0ZSkgfHwgKG9wdC5zdGFydCAmJiBvcHQuZW5kKSkgewotICAgICAgICAgICAgICAgICAg
ICBzaG93VGltZShtb21lbnQob3B0LnN0YXJ0IHx8IG9wdC5zdGFydERhdGUpLnRvRGF0ZSgpLCd0
aW1lMScpOwotICAgICAgICAgICAgICAgICAgICBzaG93VGltZShtb21lbnQob3B0LmVuZCB8fCBv
cHQuZW5kRGF0ZSkudG9EYXRlKCksJ3RpbWUyJyk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgc2hvd1RpbWUoZGVmYXVsdFRpbWUsJ3RpbWUxJyk7Ci0gICAg
ICAgICAgICAgICAgICAgIHNob3dUaW1lKGRlZmF1bHRUaW1lLCd0aW1lMicpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy9zaG93U2VsZWN0ZWRJbmZv
KCk7Ci0KLQotCi0KLSAgICAgICAgICAgIHZhciBkZWZhdWx0VG9wVGV4dCA9ICcnOwotICAgICAg
ICAgICAgaWYgKG9wdC5zaW5nbGVEYXRlKQotICAgICAgICAgICAgICAgIGRlZmF1bHRUb3BUZXh0
ID0gbGFuZygnZGVmYXVsdC1zaW5nbGUnKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5taW5E
YXlzICYmIG9wdC5tYXhEYXlzKQotICAgICAgICAgICAgICAgIGRlZmF1bHRUb3BUZXh0ID0gbGFu
ZygnZGVmYXVsdC1yYW5nZScpOwotICAgICAgICAgICAgZWxzZSBpZiAob3B0Lm1pbkRheXMpCi0g
ICAgICAgICAgICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LW1vcmUnKTsKLSAg
ICAgICAgICAgIGVsc2UgaWYgKG9wdC5tYXhEYXlzKQotICAgICAgICAgICAgICAgIGRlZmF1bHRU
b3BUZXh0ID0gbGFuZygnZGVmYXVsdC1sZXNzJyk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZGVmYXVsdFRvcFRleHQgPSBsYW5nKCdkZWZhdWx0LWRlZmF1bHQnKTsKLQotICAg
ICAgICAgICAgYm94LmZpbmQoJy5kZWZhdWx0LXRvcCcpLmh0bWwoIGRlZmF1bHRUb3BUZXh0LnJl
cGxhY2UoL1wlZC8sb3B0Lm1pbkRheXMpLnJlcGxhY2UoL1wlZC8sb3B0Lm1heERheXMpKTsKLQot
Ci0KLQotICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgaW5pdGlhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIH0sMCk7Ci0KLSAg
ICAgICAgICAgIGJveC5jbGljayhmdW5jdGlvbihldnQpCi0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgICAgICQoZG9jdW1lbnQpLmJpbmQoJ2NsaWNrLmRhdGVwaWNrZXInLGNsb3NlRGF0ZVBpY2tl
cik7Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCcubmV4dCcpLmNsaWNrKGZ1bmN0aW9uKCkKLSAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgaXNNb250aDIgPSAkKHRoaXMpLnBhcmVu
dHMoJ3RhYmxlJykuaGFzQ2xhc3MoJ21vbnRoMicpOwotICAgICAgICAgICAgICAgIHZhciBtb250
aCA9IGlzTW9udGgyID8gb3B0Lm1vbnRoMiA6IG9wdC5tb250aDE7Ci0gICAgICAgICAgICAgICAg
bW9udGggPSBuZXh0TW9udGgobW9udGgpOwotICAgICAgICAgICAgICAgIGlmICghb3B0LnNpbmds
ZURhdGUgJiYgIWlzTW9udGgyICYmIGNvbXBhcmVfbW9udGgobW9udGgsb3B0Lm1vbnRoMikgPj0g
MCkgcmV0dXJuOwotICAgICAgICAgICAgICAgIHNob3dNb250aChtb250aCxpc01vbnRoMiA/ICdt
b250aDInIDogJ21vbnRoMScpOwotICAgICAgICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgICAgICBib3guZmluZCgnLnByZXYnKS5jbGljayhmdW5jdGlvbigp
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgdmFyIGlzTW9udGgyID0gJCh0aGlzKS5w
YXJlbnRzKCd0YWJsZScpLmhhc0NsYXNzKCdtb250aDInKTsKLSAgICAgICAgICAgICAgICB2YXIg
bW9udGggPSBpc01vbnRoMiA/IG9wdC5tb250aDIgOiBvcHQubW9udGgxOwotICAgICAgICAgICAg
ICAgIG1vbnRoID0gcHJldk1vbnRoKG1vbnRoKTsKLSAgICAgICAgICAgICAgICAvL2lmIChpc01v
bnRoMiAmJiBtb250aC5nZXRGdWxsWWVhcigpKycnK21vbnRoLmdldE1vbnRoKCkgPD0gb3B0Lm1v
bnRoMS5nZXRGdWxsWWVhcigpKycnK29wdC5tb250aDEuZ2V0TW9udGgoKSkgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIGlmIChpc01vbnRoMiAmJiBjb21wYXJlX21vbnRoKG1vbnRoLG9wdC5tb250
aDEpIDw9IDApIHJldHVybjsKLSAgICAgICAgICAgICAgICBzaG93TW9udGgobW9udGgsaXNNb250
aDIgPyAnbW9udGgyJyA6ICdtb250aDEnKTsKLSAgICAgICAgICAgICAgICBzaG93R2FwKCk7Ci0g
ICAgICAgICAgICB9KTsKLQotCi0gICAgICAgICAgICBib3guYmluZCgnY2xpY2snLGZ1bmN0aW9u
KGV2dCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoJChldnQudGFyZ2V0KS5o
YXNDbGFzcygnZGF5JykpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBk
YXlDbGlja2VkKCQoZXZ0LnRhcmdldCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
IH0pOwotCi0gICAgICAgICAgICBib3guYXR0cigndW5zZWxlY3RhYmxlJywgJ29uJykKLSAgICAg
ICAgICAgIC5jc3MoJ3VzZXItc2VsZWN0JywgJ25vbmUnKQotICAgICAgICAgICAgLmJpbmQoJ3Nl
bGVjdHN0YXJ0JywgZnVuY3Rpb24oZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBl
LnByZXZlbnREZWZhdWx0KCk7IHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0pOwotCi0gICAg
ICAgICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLmNsaWNrKGZ1bmN0aW9uKCkKLSAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICBjbG9zZURhdGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAg
ICB2YXIgZGF0ZVJhbmdlID0gZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuc3RhcnQpKSsgb3B0
LnNlcGFyYXRvciArZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuZW5kKSk7Ci0gICAgICAgICAg
ICAgICAgJChzZWxmKS50cmlnZ2VyKCdkYXRlcGlja2VyLWFwcGx5JywKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IGRhdGVSYW5nZSwKLSAgICAgICAgICAg
ICAgICAgICAgJ2RhdGUxJyA6IG5ldyBEYXRlKG9wdC5zdGFydCksCi0gICAgICAgICAgICAgICAg
ICAgICdkYXRlMicgOiBuZXcgRGF0ZShvcHQuZW5kKQotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGJveC5maW5kKCdbc2hvcnRjdXRdJykuY2xpY2so
ZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZhciBzaG9ydGN1dCA9
ICQodGhpcykuYXR0cignc2hvcnRjdXQnKTsKLSAgICAgICAgICAgICAgICB2YXIgZW5kID0gbmV3
IERhdGUoKSxzdGFydCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzaG9ydGN1dC5pbmRl
eE9mKCdkYXknKSAhPSAtMSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBkYXkgPSBwYXJzZUludChzaG9ydGN1dC5zcGxpdCgnLCcsMilbMV0sMTApOwotICAgICAg
ICAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgODY0
MDAwMDAqZGF5KTsKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gbmV3IERhdGUoZW5kLmdldFRp
bWUoKSArIDg2NDAwMDAwKihkYXk+MD8xOi0xKSApOwotICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChzaG9ydGN1dC5pbmRleE9mKCd3ZWVrJykhPSAtMSkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBzaG9ydGN1dC5pbmRl
eE9mKCdwcmV2LCcpICE9IC0xID8gLTEgOiAxOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChk
aXIgPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdG9wRGF5ID0gb3B0LnN0YXJ0
T2ZXZWVrID09ICdtb25kYXknID8gMSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZhciBzdG9wRGF5ID0gb3B0LnN0YXJ0T2ZXZWVrID09ICdt
b25kYXknID8gMCA6IDY7Ci0KLSAgICAgICAgICAgICAgICAgICAgZW5kID0gbmV3IERhdGUoZW5k
LmdldFRpbWUoKSAtIDg2NDAwMDAwKTsKLSAgICAgICAgICAgICAgICAgICAgd2hpbGUoZW5kLmdl
dERheSgpICE9IHN0b3BEYXkpIGVuZCA9IG5ldyBEYXRlKGVuZC5nZXRUaW1lKCkgKyBkaXIqODY0
MDAwMDApOwotICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRlKGVuZC5nZXRUaW1l
KCkgKyBkaXIqODY0MDAwMDAqNik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHNob3J0Y3V0LmluZGV4T2YoJ21vbnRoJykgIT0gLTEpCi0gICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICB2YXIgZGlyID0gc2hvcnRjdXQuaW5kZXhPZigncHJl
diwnKSAhPSAtMSA/IC0xIDogMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRpciA9PSAxKQot
ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBuZXh0TW9udGgoZW5kKTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBwcmV2TW9u
dGgoZW5kKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0RGF0ZSgxKTsKLSAgICAgICAg
ICAgICAgICAgICAgZW5kID0gbmV4dE1vbnRoKHN0YXJ0KTsKLSAgICAgICAgICAgICAgICAgICAg
ZW5kLnNldERhdGUoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9IG5ldyBEYXRlKGVuZC5n
ZXRUaW1lKCkgLSA4NjQwMDAwMCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKHNob3J0Y3V0LmluZGV4T2YoJ3llYXInKSAhPSAtMSkKLSAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBkaXIgPSBzaG9ydGN1dC5pbmRleE9mKCdwcmV2
LCcpICE9IC0xID8gLTEgOiAxOwotICAgICAgICAgICAgICAgICAgICBzdGFydCA9IG5ldyBEYXRl
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0LnNldEZ1bGxZZWFyKGVuZC5nZXRGdWxsWWVh
cigpICsgZGlyKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnQuc2V0TW9udGgoMCk7Ci0gICAg
ICAgICAgICAgICAgICAgIHN0YXJ0LnNldERhdGUoMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVu
ZC5zZXRGdWxsWWVhcihlbmQuZ2V0RnVsbFllYXIoKSArIGRpcik7Ci0gICAgICAgICAgICAgICAg
ICAgIGVuZC5zZXRNb250aCgxMSk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZC5zZXREYXRlKDMx
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2hvcnRjdXQg
PT0gJ2N1c3RvbScpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB2YXIg
bmFtZSA9ICQodGhpcykuaHRtbCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmN1c3Rv
bVNob3J0Y3V0cyAmJiBvcHQuY3VzdG9tU2hvcnRjdXRzLmxlbmd0aCA+IDApCi0gICAgICAgICAg
ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8b3B0LmN1
c3RvbVNob3J0Y3V0cy5sZW5ndGg7aSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaCA9IG9wdC5jdXN0b21TaG9ydGN1dHNbaV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNoLm5hbWUgPT0gbmFtZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBkYXRhID0gW107Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRyeQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkYXRhID0gc2hbJ2RhdGVzJ10uY2FsbCgpOwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvL31jYXRjaChlKXt9Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID09IDIpCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YXJ0ID0gZGF0YVswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCA9
IGRhdGFbMV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBvbmx5IG9uZSBkYXRlIGlzIHNwZWNpZmllZCB0
aGVuIGp1c3QgbW92ZSBjYWxlbmRhcnMgdGhlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbW92ZSBjYWxlbmRhcnMgdG8gc2hvdyB0aGlzIGRhdGUncyBtb250aCBhbmQgbmV4
dCBtb250aHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEgJiYgZGF0
YS5sZW5ndGggPT0gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZXRvZGF0ZSA9IGRhdGFbMF07Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGgobW92ZXRvZGF0ZSwnbW9u
dGgxJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TW9udGgobmV4
dE1vbnRoKG1vdmV0b2RhdGUpLCdtb250aDInKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQot
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc3RhcnQgJiYg
ZW5kKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc2V0RGF0ZVJhbmdl
KHN0YXJ0LGVuZCk7Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrU2VsZWN0aW9uVmFsaWQoKTsK
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgYm94LmZp
bmQoIi50aW1lMSBpbnB1dFt0eXBlPXJhbmdlXSIpLmJpbmQoImNoYW5nZSBtb3VzZW1vdmUiLCBm
dW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCwKLSAg
ICAgICAgICAgICAgICAgICAgaG91ciA9IHRhcmdldC5uYW1lID09ICJob3VyIiA/ICQodGFyZ2V0
KS52YWwoKS5yZXBsYWNlKC9eKFxkezF9KSQvLCAiMCQxIikgOiB1bmRlZmluZWQsCi0gICAgICAg
ICAgICAgICAgICAgIG1pbiA9IHRhcmdldC5uYW1lID09ICJtaW51dGUiID8gJCh0YXJnZXQpLnZh
bCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHVuZGVmaW5lZDsKLSAgICAgICAgICAg
ICAgICBzZXRUaW1lKCJ0aW1lMSIsIGhvdXIsIG1pbik7Ci0gICAgICAgICAgICB9KTsKLQotICAg
ICAgICAgICAgYm94LmZpbmQoIi50aW1lMiBpbnB1dFt0eXBlPXJhbmdlXSIpLmJpbmQoImNoYW5n
ZSBtb3VzZW1vdmUiLCBmdW5jdGlvbiAoZSkgewotICAgICAgICAgICAgICAgIHZhciB0YXJnZXQg
PSBlLnRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgaG91ciA9IHRhcmdldC5uYW1lID09ICJo
b3VyIiA/ICQodGFyZ2V0KS52YWwoKS5yZXBsYWNlKC9eKFxkezF9KSQvLCAiMCQxIikgOiB1bmRl
ZmluZWQsCi0gICAgICAgICAgICAgICAgICAgIG1pbiA9IHRhcmdldC5uYW1lID09ICJtaW51dGUi
ID8gJCh0YXJnZXQpLnZhbCgpLnJlcGxhY2UoL14oXGR7MX0pJC8sICIwJDEiKSA6IHVuZGVmaW5l
ZDsKLSAgICAgICAgICAgICAgICBzZXRUaW1lKCJ0aW1lMiIsIGhvdXIsIG1pbik7Ci0gICAgICAg
ICAgICB9KTsKLQotICAgICAgICB9Ci0KLQotICAgICAgICBmdW5jdGlvbiBjYWxjUG9zaXRpb24o
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW9wdC5pbmxpbmUpCi0gICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgdmFyIG9mZnNldCA9ICQoc2VsZikub2Zmc2V0KCk7Ci0vKiBBcHBs
ZSBjaGFuZ2UKLSAgICAgICAgICAgICAgICBpZiAob2Zmc2V0LmxlZnQgPCA0NjApIC8vbGVmdCB0
byByaWdodAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYm94LmNzcygK
LSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBvZmZz
ZXQudG9wKyQoc2VsZikub3V0ZXJIZWlnaHQoKSArIHBhcnNlSW50KCQoJ2JvZHknKS5jc3MoJ2Jv
cmRlci10b3AnKSB8fCAwLDEwICksCi0gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0OiBvZmZz
ZXQubGVmdAotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAg
Ym94LmNzcygKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAg
dG9wOiBvZmZzZXQudG9wKyQoc2VsZikub3V0ZXJIZWlnaHQoKSArIHBhcnNlSW50KCQoJ2JvZHkn
KS5jc3MoJ2JvcmRlci10b3AnKSB8fCAwLDEwICksCi0gICAgICAgICAgICAgICAgICAgICAgICBs
ZWZ0OiBvZmZzZXQubGVmdCArICQoc2VsZikud2lkdGgoKSAtIGJveC53aWR0aCgpIC0gMTYKLSAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotKi8KLSAgICAgICAgICAg
ICAgICBib3guY3NzKAotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgdG9w
OiAkKHNlbGYpLm91dGVySGVpZ2h0KCkgKyBwYXJzZUludCgkKCdib2R5JykuY3NzKCdib3JkZXIt
dG9wJykgfHwgMCwxMCApLAotLy8gICAgICAgICAgICAgICAgICAgIGxlZnQ6IG9mZnNldC5sZWZ0
ICsgJChzZWxmKS53aWR0aCgpIC0gYm94LndpZHRoKCkgLSAxNgotICAgICAgICAgICAgICAgIH0p
OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gb3Blbihhbmlt
YXRpb25UaW1lKQotICAgICAgICB7Ci0gICAgICAgICAgICBjYWxjUG9zaXRpb24oKTsKLSAgICAg
ICAgICAgIHZhciBfX2RlZmF1bHRfc3RyaW5nID0gb3B0LmdldFZhbHVlLmNhbGwoc2VsZkRvbSk7
Ci0gICAgICAgICAgICB2YXIgZGVmYXVsdHMgPSBfX2RlZmF1bHRfc3RyaW5nID8gX19kZWZhdWx0
X3N0cmluZy5zcGxpdCggb3B0LnNlcGFyYXRvciApIDogJyc7Ci0KLSAgICAgICAgICAgIGlmIChk
ZWZhdWx0cyAmJiBkZWZhdWx0cy5sZW5ndGggPj0gMikKLSAgICAgICAgICAgIHsKLSAgICAgICAg
ICAgICAgICB2YXIgX19fZm9ybWF0ID0gb3B0LmZvcm1hdDsKLSAgICAgICAgICAgICAgICBpZiAo
X19fZm9ybWF0Lm1hdGNoKC9Eby8pKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgX19fZm9ybWF0ID0gX19fZm9ybWF0LnJlcGxhY2UoL0RvLywnRCcpOwotICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0c1swXSA9IGRlZmF1bHRzWzBdLnJlcGxhY2UoLyhcZCspKHRofG5k
fHN0KS8sJyQxJyk7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRzWzFdID0gZGVmYXVsdHNb
MV0ucmVwbGFjZSgvKFxkKykodGh8bmR8c3QpLywnJDEnKTsKLSAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgIC8vIHNldCBpbml0aWF0ZWQgIHRvIGF2b2lkIHRyaWdnZXJyaW5nIGRhdGVwaWNrZXIt
Y2hhbmdlIGV2ZW50Ci0gICAgICAgIGluaXRpYXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAg
IHNldERhdGVSYW5nZShtb21lbnQoZGVmYXVsdHNbMF0sIF9fX2Zvcm1hdCkudG9EYXRlKCksbW9t
ZW50KGRlZmF1bHRzWzFdLCBfX19mb3JtYXQpLnRvRGF0ZSgpKTsKLSAgICAgICAgaW5pdGlhdGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJveC5zbGlkZURvd24oYW5pbWF0
aW9uVGltZSk7Ci0gICAgICAgIH0KLQotCi0KLSAgICAgICAgZnVuY3Rpb24gcmVuZGVyVGltZSAo
bmFtZSwgZGF0ZSkgewotICAgICAgICAgICAgYm94LmZpbmQoIi4iICsgbmFtZSArICIgaW5wdXRb
dHlwZT1yYW5nZV0uaG91ci1yYW5nZSIpLnZhbChtb21lbnQoZGF0ZSkuaG91cnMoKSk7Ci0gICAg
ICAgICAgICBib3guZmluZCgiLiIgKyBuYW1lICsgIiBpbnB1dFt0eXBlPXJhbmdlXS5taW51dGUt
cmFuZ2UiKS52YWwobW9tZW50KGRhdGUpLm1pbnV0ZXMoKSk7Ci0gICAgICAgICAgICBzZXRUaW1l
KG5hbWUsIG1vbWVudChkYXRlKS5mb3JtYXQoIkhIIiksIG1vbWVudChkYXRlKS5mb3JtYXQoIm1t
IikpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gY2hhbmdlVGltZSAobmFtZSwgZGF0
ZSkgewotICAgICAgICAgICAgb3B0W25hbWVdID0gcGFyc2VJbnQoCi0gICAgICAgICAgICAgICAg
bW9tZW50KHBhcnNlSW50KGRhdGUpKQotICAgICAgICAgICAgICAgICAgICAuc3RhcnRPZignZGF5
JykKLSAgICAgICAgICAgICAgICAgICAgLmFkZCgnaCcsIG1vbWVudChvcHRbbmFtZSArICJUaW1l
Il0pLmZvcm1hdCgiSEgiKSkKLSAgICAgICAgICAgICAgICAgICAgLmFkZCgnbScsIG1vbWVudChv
cHRbbmFtZSArICJUaW1lIl0pLmZvcm1hdCgibW0iKSkudmFsdWVPZigpCi0gICAgICAgICAgICAg
ICAgKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHN3YXBUaW1lICgpIHsKLSAgICAg
ICAgICAgIHJlbmRlclRpbWUoInRpbWUxIiwgb3B0LnN0YXJ0KTsKLSAgICAgICAgICAgIHJlbmRl
clRpbWUoInRpbWUyIiwgb3B0LmVuZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBz
ZXRUaW1lIChuYW1lLCBob3VyLCBtaW51dGUpIHsKLSAgICAgICAgICAgIGhvdXIgJiYgKGJveC5m
aW5kKCIuIiArIG5hbWUgKyAiIC5ob3VyLXZhbCIpLnRleHQoaG91cikpOwotICAgICAgICAgICAg
bWludXRlICYmIChib3guZmluZCgiLiIgKyBuYW1lICsgIiAubWludXRlLXZhbCIpLnRleHQobWlu
dXRlKSk7Ci0gICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKLSAgICAgICAgICAgICAgICBjYXNl
ICJ0aW1lMSI6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuc3RhcnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHNldFJhbmdlKCJzdGFydCIsIG1vbWVudChvcHQuc3RhcnQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzZXRSYW5nZSgic3RhcnRU
aW1lIiwgbW9tZW50KG9wdC5zdGFydFRpbWUgfHwgbW9tZW50KCkudmFsdWVPZigpKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgInRpbWUyIjoKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKG9wdC5lbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNldFJhbmdlKCJlbmQiLCBtb21lbnQob3B0LmVuZCkpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIHNldFJhbmdlKCJlbmRUaW1lIiwgbW9tZW50KG9wdC5lbmRU
aW1lIHx8IG1vbWVudCgpLnZhbHVlT2YoKSkpOwotICAgICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZ1bmN0aW9uIHNldFJhbmdlKG5hbWUsIHRpbWVQ
b2ludCkgewotICAgICAgICAgICAgICAgIHZhciBoID0gdGltZVBvaW50LmZvcm1hdCgiSEgiKSwK
LSAgICAgICAgICAgICAgICAgICAgbSA9IHRpbWVQb2ludC5mb3JtYXQoIm1tIik7Ci0gICAgICAg
ICAgICAgICAgb3B0W25hbWVdID0gdGltZVBvaW50Ci0gICAgICAgICAgICAgICAgICAgIC5zdGFy
dE9mKCdkYXknKQotICAgICAgICAgICAgICAgICAgICAuYWRkKCJoIiwgaG91ciB8fCBoKQotICAg
ICAgICAgICAgICAgICAgICAuYWRkKCJtIiwgbWludXRlIHx8IG0pCi0gICAgICAgICAgICAgICAg
ICAgIC52YWx1ZU9mKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjaGVja1NlbGVjdGlv
blZhbGlkKCk7Ci0gICAgICAgICAgICBzaG93U2VsZWN0ZWRJbmZvKCk7Ci0gICAgICAgICAgICBz
aG93U2VsZWN0ZWREYXlzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjbGVhclNl
bGVjdGlvbigpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG9wdC5zdGFydCA9IGZhbHNlOwotICAg
ICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgYm94LmZpbmQoJy5kYXkuY2hl
Y2tlZCcpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICBvcHQuc2V0VmFsdWUu
Y2FsbChzZWxmRG9tLCAnJyk7Ci0gICAgICAgICAgICBjaGVja1NlbGVjdGlvblZhbGlkKCk7Ci0g
ICAgICAgICAgICBzaG93U2VsZWN0ZWRJbmZvKCk7Ci0gICAgICAgICAgICBzaG93U2VsZWN0ZWRE
YXlzKCk7Ci0gICAgICAgIH0KLQotICAgIGZ1bmN0aW9uIGhhbmRsZVN0YXJ0KHRpbWUpCi0gICAg
ewotICAgICAgdmFyIHIgPSB0aW1lOwotICAgICAgaWYgIChvcHQuYmF0Y2hNb2RlID09PSAnd2Vl
ay1yYW5nZScpIHsKLSAgICAgICAgaWYgKG9wdC5zdGFydE9mV2VlayA9PT0gJ21vbmRheScpIHsK
LSAgICAgICAgICAgICAgICAgICAgciA9IG1vbWVudChwYXJzZUludCh0aW1lKSkuc3RhcnRPZign
aXNvd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCd3ZWVrJykudmFs
dWVPZigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgIH0gZWxzZSBpZiAob3B0LmJhdGNoTW9k
ZSA9PT0gJ21vbnRoLXJhbmdlJykgewotICAgICAgICAgICAgICAgIHIgPSBtb21lbnQocGFyc2VJ
bnQodGltZSkpLnN0YXJ0T2YoJ21vbnRoJykudmFsdWVPZigpOwotICAgICAgfQotCi0gICAgICBy
ZXR1cm4gcjsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBoYW5kbGVFbmQodGltZSkKLSAgICB7Ci0g
ICAgICB2YXIgciA9IHRpbWU7Ci0gICAgICBpZiAgKG9wdC5iYXRjaE1vZGUgPT09ICd3ZWVrLXJh
bmdlJykgewotICAgICAgICBpZiAob3B0LnN0YXJ0T2ZXZWVrID09PSAnbW9uZGF5LXJhbmdlJykg
ewotICAgICAgICAgICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZign
aXNvd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZignd2VlaycpLnZhbHVl
T2YoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICB9IGVsc2UgaWYgKG9wdC5iYXRjaE1vZGUg
PT09ICdtb250aCcpIHsKLSAgICAgICAgICAgICAgICByID0gbW9tZW50KHBhcnNlSW50KHRpbWUp
KS5lbmRPZignbW9udGgnKS52YWx1ZU9mKCk7Ci0gICAgICB9Ci0KLSAgICAgIHJldHVybiByOwot
ICAgIH0KLQotCi0gICAgICAgIGZ1bmN0aW9uIGRheUNsaWNrZWQoZGF5KQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoZGF5Lmhhc0NsYXNzKCdpbnZhbGlkJykpIHJldHVybjsKLSAgICAgICAg
ICAgIHZhciB0aW1lID0gZGF5LmF0dHIoJ3RpbWUnKTsKLSAgICAgICAgICAgIGRheS5hZGRDbGFz
cygnY2hlY2tlZCcpOwotICAgICAgICAgICAgaWYgKCBvcHQuc2luZ2xlRGF0ZSApCi0gICAgICAg
ICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gdGltZTsKLSAgICAgICAgICAgICAg
ICBvcHQuZW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKG9wdC50aW1lLmVuYWJsZWQp
IHsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlVGltZSgic3RhcnQiLCBvcHQuc3RhcnQpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgIChv
cHQuYmF0Y2hNb2RlID09PSAnd2VlaycpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aWYgKG9wdC5zdGFydE9mV2VlayA9PT0gJ21vbmRheScpIHsKLSAgICAgICAgICAgICAgICAgICAg
b3B0LnN0YXJ0ID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCdpc293ZWVrJykudmFs
dWVPZigpOwotICAgICAgICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRp
bWUpKS5lbmRPZignaXNvd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
ewotICAgICAgICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5l
bmRPZignd2VlaycpLnZhbHVlT2YoKTsKLSAgICAgICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0g
bW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCd3ZWVrJykudmFsdWVPZigpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG9wdC5iYXRj
aE1vZGUgPT09ICdtb250aCcpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0
YXJ0ID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5zdGFydE9mKCdtb250aCcpLnZhbHVlT2YoKTsK
LSAgICAgICAgICAgICAgICBvcHQuZW5kID0gbW9tZW50KHBhcnNlSW50KHRpbWUpKS5lbmRPZign
bW9udGgnKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICgo
b3B0LnN0YXJ0ICYmIG9wdC5lbmQpIHx8ICghb3B0LnN0YXJ0ICYmICFvcHQuZW5kKSApCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gaGFuZGxlU3RhcnQodGltZSk7
Ci0gICAgICAgICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChv
cHQudGltZS5lbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNoYW5nZVRpbWUoInN0YXJ0
Iiwgb3B0LnN0YXJ0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBlbHNlIGlmIChvcHQuc3RhcnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
b3B0LmVuZCA9IGhhbmRsZUVuZCh0aW1lKTsKLSAgICAgICAgICAgICAgICBpZiAob3B0LnRpbWUu
ZW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICBjaGFuZ2VUaW1lKCJlbmQiLCBvcHQuZW5k
KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICgh
b3B0LnNpbmdsZURhdGUgJiYgb3B0LnN0YXJ0ICYmIG9wdC5lbmQgJiYgb3B0LnN0YXJ0ID4gb3B0
LmVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2YXIgdG1wID0gb3B0LmVuZDsK
LSAgICAgICAgICAgICAgICBvcHQuZW5kID0gaGFuZGxlRW5kKG9wdC5zdGFydCk7Ci0gICAgICAg
ICAgICAgICAgb3B0LnN0YXJ0ID0gaGFuZGxlU3RhcnQodG1wKTsKLSAgICAgICAgICAgICAgICBp
ZiAob3B0LnRpbWUuZW5hYmxlZCkgewotICAgICAgICAgICAgICAgICAgICBzd2FwVGltZSgpOwot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3B0LnN0YXJ0
ID0gcGFyc2VJbnQob3B0LnN0YXJ0KTsKLSAgICAgICAgICAgIG9wdC5lbmQgPSBwYXJzZUludChv
cHQuZW5kKTsKLQotICAgICAgICAgICAgY2hlY2tTZWxlY3Rpb25WYWxpZCgpOwotICAgICAgICAg
ICAgc2hvd1NlbGVjdGVkSW5mbygpOwotICAgICAgICAgICAgc2hvd1NlbGVjdGVkRGF5cygpOwot
ICAgICAgICAgICAgYXV0b2Nsb3NlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBh
dXRvY2xvc2UgKCkgewotICAgICAgICAgICAgaWYgKG9wdC5zaW5nbGVEYXRlID09PSB0cnVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKGluaXRpYXRlZCAmJiBvcHQuc3RhcnQgKQotICAgICAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9wdC5hdXRvQ2xvc2UpIGNsb3NlRGF0
ZVBpY2tlcigpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKGluaXRpYXRlZCAmJiBvcHQuc3RhcnQgJiYgb3B0LmVuZCkKLSAgICAg
ICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvcHQuYXV0b0Nsb3NlKSBjbG9z
ZURhdGVQaWNrZXIoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLQotICAgICAgICBmdW5jdGlvbiBjaGVja1NlbGVjdGlvblZhbGlkKCkKLSAgICAgICAgewot
ICAgICAgICAgICAgdmFyIGRheXMgPSBNYXRoLmNlaWwoIChvcHQuZW5kIC0gb3B0LnN0YXJ0KSAv
IDg2NDAwMDAwICkgKyAxOwotICAgICAgICAgICAgaWYgKG9wdC5zaW5nbGVEYXRlKSB7IC8vIFZh
bGlkYXRlIGlmIG9ubHkgc3RhcnQgaXMgdGhlcmUKLSAgICAgICAgICAgICAgICBpZiAob3B0LnN0
YXJ0ICYmICFvcHQuZW5kKQotICAgICAgICAgICAgICAgICAgICBib3guZmluZCgnLmRycF90b3At
YmFyJykucmVtb3ZlQ2xhc3MoJ2Vycm9yJykuYWRkQ2xhc3MoJ25vcm1hbCcpOwotICAgICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBfdG9wLWJhcicp
LnJlbW92ZUNsYXNzKCdlcnJvcicpLnJlbW92ZUNsYXNzKCdub3JtYWwnKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgaWYgKCBvcHQubWF4RGF5cyAmJiBkYXlzID4gb3B0Lm1heERh
eXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgb3B0LnN0YXJ0ID0gZmFsc2U7Ci0g
ICAgICAgICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJveC5maW5k
KCcuZGF5JykucmVtb3ZlQ2xhc3MoJ2NoZWNrZWQnKTsKLSAgICAgICAgICAgICAgICBib3guZmlu
ZCgnLmRycF90b3AtYmFyJykucmVtb3ZlQ2xhc3MoJ25vcm1hbCcpLmFkZENsYXNzKCdlcnJvcicp
LmZpbmQoJy5lcnJvci10b3AnKS5odG1sKCBsYW5nKCdsZXNzLXRoYW4nKS5yZXBsYWNlKCclZCcs
b3B0Lm1heERheXMpICk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmICggb3B0
Lm1pbkRheXMgJiYgZGF5cyA8IG9wdC5taW5EYXlzKQotICAgICAgICAgICAgewotICAgICAgICAg
ICAgICAgIG9wdC5zdGFydCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG9wdC5lbmQgPSBmYWxz
ZTsKLSAgICAgICAgICAgICAgICBib3guZmluZCgnLmRheScpLnJlbW92ZUNsYXNzKCdjaGVja2Vk
Jyk7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBfdG9wLWJhcicpLnJlbW92ZUNsYXNz
KCdub3JtYWwnKS5hZGRDbGFzcygnZXJyb3InKS5maW5kKCcuZXJyb3ItdG9wJykuaHRtbCggbGFu
ZygnbW9yZS10aGFuJykucmVwbGFjZSgnJWQnLG9wdC5taW5EYXlzKSApOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChv
cHQuc3RhcnQgfHwgb3B0LmVuZCkKLSAgICAgICAgICAgICAgICAgICAgYm94LmZpbmQoJy5kcnBf
dG9wLWJhcicpLnJlbW92ZUNsYXNzKCdlcnJvcicpLmFkZENsYXNzKCdub3JtYWwnKTsKLSAgICAg
ICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZHJwX3RvcC1i
YXInKS5yZW1vdmVDbGFzcygnZXJyb3InKS5yZW1vdmVDbGFzcygnbm9ybWFsJyk7Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIGlmICggKG9wdC5zaW5nbGVEYXRlICYmIG9wdC5zdGFydCAm
JiAhb3B0LmVuZCkgfHwgKCFvcHQuc2luZ2xlRGF0ZSAmJiBvcHQuc3RhcnQgJiYgb3B0LmVuZCkg
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBwbHktYnRuJyku
cmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5hcHBseS1idG4nKS5h
ZGRDbGFzcygnZGlzYWJsZWQnKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG9w
dC5iYXRjaE1vZGUpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCAob3B0LnN0
YXJ0ICYmIG9wdC5zdGFydERhdGUgJiYgY29tcGFyZV9kYXkob3B0LnN0YXJ0LCBvcHQuc3RhcnRE
YXRlKSA8IDApCi0gICAgICAgICAgICAgICAgICAgIHx8IChvcHQuZW5kICYmIG9wdC5lbmREYXRl
ICYmIGNvbXBhcmVfZGF5KG9wdC5lbmQsIG9wdC5lbmREYXRlKSA+IDApICApCi0gICAgICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgICAgICBvcHQuc3RhcnQgPSBmYWxzZTsKLSAgICAgICAg
ICAgICAgICAgICAgb3B0LmVuZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBib3guZmlu
ZCgnLmRheScpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd1NlbGVjdGVkSW5m
bygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJveC5maW5kKCcuc3RhcnQtZGF5JykuaHRtbCgn
Li4uJyk7Ci0gICAgICAgICAgICBib3guZmluZCgnLmVuZC1kYXknKS5odG1sKCcuLi4nKTsKLSAg
ICAgICAgICAgIGJveC5maW5kKCcuc2VsZWN0ZWQtZGF5cycpLmhpZGUoKTsKLSAgICAgICAgICAg
IGlmIChvcHQuc3RhcnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQo
Jy5zdGFydC1kYXknKS5odG1sKGdldERhdGVTdHJpbmcobmV3IERhdGUocGFyc2VJbnQob3B0LnN0
YXJ0KSkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvcHQuZW5kKQotICAgICAg
ICAgICAgewotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuZW5kLWRheScpLmh0bWwoZ2V0RGF0
ZVN0cmluZyhuZXcgRGF0ZShwYXJzZUludChvcHQuZW5kKSkpKTsKLSAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgaWYgKG9wdC5zdGFydCAmJiBvcHQuc2luZ2xlRGF0ZSkKLSAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICBib3guZmluZCgnLmFwcGx5LWJ0bicpLnJlbW92ZUNsYXNzKCdk
aXNhYmxlZCcpOwotICAgICAgICAgICAgICAgIHZhciBkYXRlUmFuZ2UgPSBnZXREYXRlU3RyaW5n
KG5ldyBEYXRlKG9wdC5zdGFydCkpOwotICAgICAgICAgICAgICAgIG9wdC5zZXRWYWx1ZS5jYWxs
KHNlbGZEb20sIGRhdGVSYW5nZSwgZ2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuc3RhcnQpKSwg
Z2V0RGF0ZVN0cmluZyhuZXcgRGF0ZShvcHQuZW5kKSkpOwotCi0gICAgICAgICAgICAgICAgaWYg
KGluaXRpYXRlZCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICQoc2Vs
ZikudHJpZ2dlcignZGF0ZXBpY2tlci1jaGFuZ2UnLAotICAgICAgICAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAndmFsdWUnOiBkYXRlUmFuZ2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAnZGF0ZTEnIDogbmV3IERhdGUob3B0LnN0YXJ0KQotICAgICAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlIGlmIChvcHQuc3RhcnQgJiYgb3B0LmVuZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBib3guZmluZCgnLnNlbGVjdGVkLWRheXMnKS5zaG93KCkuZmluZCgnLnNlbGVjdGVkLWRh
eXMtbnVtJykuaHRtbChNYXRoLnJvdW5kKChvcHQuZW5kLW9wdC5zdGFydCkvODY0MDAwMDApKzEp
OwotICAgICAgICAgICAgICAgIGJveC5maW5kKCcuYXBwbHktYnRuJykucmVtb3ZlQ2xhc3MoJ2Rp
c2FibGVkJyk7Ci0gICAgICAgICAgICAgICAgdmFyIGRhdGVSYW5nZSA9IGdldERhdGVTdHJpbmco
bmV3IERhdGUob3B0LnN0YXJ0KSkrIG9wdC5zZXBhcmF0b3IgK2dldERhdGVTdHJpbmcobmV3IERh
dGUob3B0LmVuZCkpOwotICAgICAgICAgICAgICAgIG9wdC5zZXRWYWx1ZS5jYWxsKHNlbGZEb20s
ZGF0ZVJhbmdlLCBnZXREYXRlU3RyaW5nKG5ldyBEYXRlKG9wdC5zdGFydCkpLCBnZXREYXRlU3Ry
aW5nKG5ldyBEYXRlKG9wdC5lbmQpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGluaXRpYXRlZCkK
LSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICQoc2VsZikudHJpZ2dlcign
ZGF0ZXBpY2tlci1jaGFuZ2UnLAotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAndmFsdWUnOiBkYXRlUmFuZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAn
ZGF0ZTEnIDogbmV3IERhdGUob3B0LnN0YXJ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdk
YXRlMicgOiBuZXcgRGF0ZShvcHQuZW5kKQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5hcHBseS1idG4nKS5hZGRDbGFzcygnZGlz
YWJsZWQnKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIHNl
dERhdGVSYW5nZShkYXRlMSxkYXRlMikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGRhdGUx
LmdldFRpbWUoKSA+IGRhdGUyLmdldFRpbWUoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICB2YXIgdG1wID0gZGF0ZTI7Ci0gICAgICAgICAgICAgICAgZGF0ZTIgPSBkYXRlMTsKLSAg
ICAgICAgICAgICAgICBkYXRlMSA9IHRtcDsKLSAgICAgICAgICAgICAgICB0bXAgPSBudWxsOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIHZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAg
IGlmIChvcHQuc3RhcnREYXRlICYmIGNvbXBhcmVfZGF5KGRhdGUxLG9wdC5zdGFydERhdGUpIDwg
MCkgdmFsaWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChvcHQuZW5kRGF0ZSAmJiBjb21wYXJl
X2RheShkYXRlMixvcHQuZW5kRGF0ZSkgPiAwKSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAg
aWYgKCF2YWxpZCkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBzaG93TW9udGgob3B0
LnN0YXJ0RGF0ZSwnbW9udGgxJyk7Ci0gICAgICAgICAgICAgICAgc2hvd01vbnRoKG5leHRNb250
aChvcHQuc3RhcnREYXRlKSwnbW9udGgyJyk7Ci0gICAgICAgICAgICAgICAgc2hvd0dhcCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgb3B0
LnN0YXJ0ID0gZGF0ZTEuZ2V0VGltZSgpOwotICAgICAgICAgICAgb3B0LmVuZCA9IGRhdGUyLmdl
dFRpbWUoKTsKLSAgICAgICAgICAgIGlmIChjb21wYXJlX21vbnRoKGRhdGUxLGRhdGUyKSA9PSAw
KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRhdGUyID0gbmV4dE1vbnRoKGRhdGUx
KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChvcHQudGltZS5lbmFibGVkKSB7Ci0g
ICAgICAgICAgICAgICAgcmVuZGVyVGltZSgidGltZTEiLCBkYXRlMSk7Ci0gICAgICAgICAgICAg
ICAgcmVuZGVyVGltZSgidGltZTIiLCBkYXRlMik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBzaG93TW9udGgoZGF0ZTEsJ21vbnRoMScpOwotICAgICAgICAgICAgc2hvd01vbnRoKGRhdGUy
LCdtb250aDInKTsKLSAgICAgICAgICAgIHNob3dHYXAoKTsKLSAgICAgICAgICAgIHNob3dTZWxl
Y3RlZEluZm8oKTsKLSAgICAgICAgICAgIGF1dG9jbG9zZSgpOwotICAgICAgICB9Ci0KLSAgICAg
ICAgZnVuY3Rpb24gc2hvd1NlbGVjdGVkRGF5cygpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghb3B0LnN0YXJ0ICYmICFvcHQuZW5kKSByZXR1cm47Ci0gICAgICAgICAgICBib3guZmluZCgn
LmRheScpLmVhY2goZnVuY3Rpb24oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHZh
ciB0aW1lID0gcGFyc2VJbnQoJCh0aGlzKS5hdHRyKCd0aW1lJykpLAotICAgICAgICAgICAgICAg
ICAgICBzdGFydCA9IG9wdC5zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgZW5kID0gb3B0LmVu
ZDsKLSAgICAgICAgICAgICAgICBpZiAob3B0LnRpbWUuZW5hYmxlZCkgewotICAgICAgICAgICAg
ICAgICAgICB0aW1lID0gbW9tZW50KHRpbWUpLnN0YXJ0T2YoJ2RheScpLnZhbHVlT2YoKTsKLSAg
ICAgICAgICAgICAgICAgICAgc3RhcnQgPSBtb21lbnQoc3RhcnQgfHwgbW9tZW50KCkudmFsdWVP
ZigpKS5zdGFydE9mKCdkYXknKS52YWx1ZU9mKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVuZCA9
IG1vbWVudChlbmQgfHwgbW9tZW50KCkudmFsdWVPZigpKS5zdGFydE9mKCdkYXknKS52YWx1ZU9m
KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgKLSAgICAgICAgICAg
ICAgICAgICAgKG9wdC5zdGFydCAmJiBvcHQuZW5kICYmIGVuZCA+PSB0aW1lICYmIHN0YXJ0IDw9
IHRpbWUgKQotICAgICAgICAgICAgICAgICAgICB8fCAoIG9wdC5zdGFydCAmJiAhb3B0LmVuZCAm
JiBtb21lbnQoc3RhcnQpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID09IG1vbWVudCh0aW1lKS5mb3Jt
YXQoJ1lZWVktTU0tREQnKSApCi0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnY2hlY2tlZCcpOwotICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCdjaGVja2VkJyk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBzaG93TW9udGgoZGF0ZSxtb250aCkKLSAgICAgICAgewotICAgICAgICAgICAgZGF0ZSA9IG1v
bWVudChkYXRlKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTsKLSAgICAgICAgICAgIHZhciBtb250
aE5hbWUgPSBuYW1lTW9udGgoZGF0ZS5nZXRNb250aCgpKTsKLSAgICAgICAgICAgIGJveC5maW5k
KCcuJyttb250aCsnIC5tb250aC1uYW1lJykuaHRtbChtb250aE5hbWUrJyAnK2RhdGUuZ2V0RnVs
bFllYXIoKSk7Ci0gICAgICAgICAgICBib3guZmluZCgnLicrbW9udGgrJyB0Ym9keScpLmh0bWwo
Y3JlYXRlTW9udGhIVE1MKGRhdGUpKTsKLSAgICAgICAgICAgIG9wdFttb250aF0gPSBkYXRlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd1RpbWUoZGF0ZSxuYW1lKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBib3guZmluZCgnLicgKyBuYW1lKS5hcHBlbmQoZ2V0VGltZUhUTUwo
KSk7Ci0gICAgICAgICAgICByZW5kZXJUaW1lKG5hbWUsIGRhdGUpOwotICAgICAgICB9Ci0KLSAg
ICAgICAgZnVuY3Rpb24gbmFtZU1vbnRoKG0pCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBsYW5nKCdtb250aC1uYW1lJylbbV07Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBn
ZXREYXRlU3RyaW5nKGQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtb21lbnQoZCku
Zm9ybWF0KG9wdC5mb3JtYXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc2hvd0dh
cCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHNob3dTZWxlY3RlZERheXMoKTsKLSAgICAgICAg
ICAgIHZhciBtMSA9IHBhcnNlSW50KG1vbWVudChvcHQubW9udGgxKS5mb3JtYXQoJ1lZWVlNTScp
KTsKLSAgICAgICAgICAgIHZhciBtMiA9IHBhcnNlSW50KG1vbWVudChvcHQubW9udGgyKS5mb3Jt
YXQoJ1lZWVlNTScpKTsKLSAgICAgICAgICAgIHZhciBwID0gTWF0aC5hYnMobTEgLSBtMik7Ci0g
ICAgICAgICAgICB2YXIgc2hvdWxkU2hvdyA9IChwID4gMSAmJiBwICE9ODkpOwotICAgICAgICAg
ICAgaWYgKHNob3VsZFNob3cpCi0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5nYXAnKS5zaG93
KCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYm94LmZpbmQoJy5nYXAnKS5o
aWRlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjbG9zZURhdGVQaWNrZXIoKQot
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob3B0LmFsd2F5c09wZW4pIHJldHVybjsKLSAgICAg
ICAgICAgICQoYm94KS5zbGlkZVVwKDIwMCxmdW5jdGlvbigpCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgJChzZWxmKS5kYXRhKCdkYXRlLXBpY2tlci1vcGVuZWQnLGZhbHNlKTsKLSAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgLy8kKGRvY3VtZW50KS51bmJpbmQoJy5kYXRlcGlj
a2VyJyk7Ci0gICAgICAgICAgICAkKHNlbGYpLnRyaWdnZXIoJ2RhdGVwaWNrZXItY2xvc2UnKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGNvbXBhcmVfbW9udGgobTEsbTIpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIHZhciBwID0gcGFyc2VJbnQobW9tZW50KG0xKS5mb3JtYXQoJ1lZ
WVlNTScpKSAtIHBhcnNlSW50KG1vbWVudChtMikuZm9ybWF0KCdZWVlZTU0nKSk7Ci0gICAgICAg
ICAgICBpZiAocCA+IDAgKSByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChwID09IDApIHJldHVy
biAwOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rp
b24gY29tcGFyZV9kYXkobTEsbTIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBwID0gcGFy
c2VJbnQobW9tZW50KG0xKS5mb3JtYXQoJ1lZWVlNTUREJykpIC0gcGFyc2VJbnQobW9tZW50KG0y
KS5mb3JtYXQoJ1lZWVlNTUREJykpOwotICAgICAgICAgICAgaWYgKHAgPiAwICkgcmV0dXJuIDE7
Ci0gICAgICAgICAgICBpZiAocCA9PSAwKSByZXR1cm4gMDsKLSAgICAgICAgICAgIHJldHVybiAt
MTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG5leHRNb250aChtb250aCkKLSAgICAg
ICAgewotICAgICAgICAgICAgbW9udGggPSBtb21lbnQobW9udGgpLnRvRGF0ZSgpOwotICAgICAg
ICAgICAgdmFyIHRvTW9udGggPSBtb250aC5nZXRNb250aCgpOwotICAgICAgICAgICAgd2hpbGUo
bW9udGguZ2V0TW9udGgoKSA9PSB0b01vbnRoKSBtb250aCA9IG5ldyBEYXRlKG1vbnRoLmdldFRp
bWUoKSs4NjQwMDAwMCk7Ci0gICAgICAgICAgICByZXR1cm4gbW9udGg7Ci0gICAgICAgIH0KLQot
ICAgICAgICBmdW5jdGlvbiBwcmV2TW9udGgobW9udGgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IG1vbnRoID0gbW9tZW50KG1vbnRoKS50b0RhdGUoKTsKLSAgICAgICAgICAgIHZhciB0b01vbnRo
ID0gbW9udGguZ2V0TW9udGgoKTsKLSAgICAgICAgICAgIHdoaWxlKG1vbnRoLmdldE1vbnRoKCkg
PT0gdG9Nb250aCkgbW9udGggPSBuZXcgRGF0ZShtb250aC5nZXRUaW1lKCktODY0MDAwMDApOwot
ICAgICAgICAgICAgcmV0dXJuIG1vbnRoOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24g
Z2V0VGltZUhUTUwoKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgdGltZUh0bWwgPSAnPGRp
dj4nCi0gICAgICAgICAgICAgICAgKyc8c3Bhbj5UaW1lOiA8c3BhbiBjbGFzcz0iaG91ci12YWwi
PjAwPC9zcGFuPjo8c3BhbiBjbGFzcz0ibWludXRlLXZhbCI+MDA8L3NwYW4+PC9zcGFuPicKLSAg
ICAgICAgICAgICAgICArJzwvZGl2PicKLSAgICAgICAgICAgICAgICArJzxkaXYgY2xhc3M9Imhv
dXIiPicKLSAgICAgICAgICAgICAgICArJzxsYWJlbD5Ib3VyOiA8aW5wdXQgdHlwZT0icmFuZ2Ui
IGNsYXNzPSJob3VyLXJhbmdlIiBuYW1lPSJob3VyIiBtaW49IjAiIG1heD0iMjMiPjwvbGFiZWw+
JwotICAgICAgICAgICAgICAgICsnPC9kaXY+JwotICAgICAgICAgICAgICAgICsnPGRpdiBjbGFz
cz0ibWludXRlIj4nCi0gICAgICAgICAgICAgICAgKyc8bGFiZWw+TWludXRlOiA8aW5wdXQgdHlw
ZT0icmFuZ2UiIGNsYXNzPSJtaW51dGUtcmFuZ2UiIG5hbWU9Im1pbnV0ZSIgbWluPSIwIiBtYXg9
IjU5Ij48L2xhYmVsPicKLSAgICAgICAgICAgICAgICArJzwvZGl2Pic7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGltZUh0bWw7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBjcmVhdGVEb20o
KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgaHRtbCA9ICc8ZGl2IGNsYXNzPSJkYXRlLXBp
Y2tlci13cmFwcGVyJwotICAgICAgICAgICAgaWYgKCBvcHQuc2luZ2xlRGF0ZSApIGh0bWwgKz0g
JyBzaW5nbGUtZGF0ZSc7Ci0gICAgICAgICAgICBpZiAoICFvcHQuc2hvd1Nob3J0Y3V0cyApIGh0
bWwgKz0gJyBuby1zaG9ydGN1dHMgJzsKLSAgICAgICAgICAgIGh0bWwgKz0gJyI+JwotICAgICAg
ICAgICAgICAgICsnPGRpdiBjbGFzcz0iZHJwX3RvcC1iYXIiPlwKLSAgICAgICAgICAgICAgICAg
ICAgPGRpdiBjbGFzcz0ibm9ybWFsLXRvcCI+XAotICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4+JytsYW5nKCdzZWxlY3RlZCcpKycgPC9zcGFuPiA8YiBjbGFzcz0ic3RhcnQtZGF5Ij4uLi48
L2I+JwotICAgICAgICAgICAgaWYgKCAhIG9wdC5zaW5nbGVEYXRlICkgewotICAgICAgICAgICAg
ICAgIGh0bWwgKz0gJyA8c3BhbiBjbGFzcz0ic2VwYXJhdG9yLWRheSI+JytvcHQuc2VwYXJhdG9y
Kyc8L3NwYW4+IDxiIGNsYXNzPSJlbmQtZGF5Ij4uLi48L2I+IDxpIGNsYXNzPSJzZWxlY3RlZC1k
YXlzIj4oPHNwYW4gY2xhc3M9InNlbGVjdGVkLWRheXMtbnVtIj4zPC9zcGFuPiAnK2xhbmcoJ2Rh
eXMnKSsnKTwvaT4nCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj5c
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVycm9yLXRvcCI+ZXJyb3I8L2Rpdj5c
Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRlZmF1bHQtdG9wIj5kZWZhdWx0PC9k
aXY+XAotICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYXBw
bHktYnRuIGRpc2FibGVkICcrIGdldEhpZGVDbGFzcygpICsnIiB2YWx1ZT0iJytsYW5nKCdhcHBs
eScpKyciIC8+XAotICAgICAgICAgICAgICAgIDwvZGl2PicKLSAgICAgICAgICAgICAgICArJzxk
aXYgY2xhc3M9Im1vbnRoLXdyYXBwZXIiPicKLSAgICAgICAgICAgICAgICArJzx0YWJsZSBjbGFz
cz0ibW9udGgxIiBjZWxsc3BhY2luZz0iMCIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCI+PHRo
ZWFkPjx0ciBjbGFzcz0iY2FwdGlvbiI+PHRoIHN0eWxlPSJ3aWR0aDoyN3B4OyI+PHNwYW4gY2xh
c3M9InByZXYiPiZsdDs8L3NwYW4+PC90aD48dGggY29sc3Bhbj0iNSIgY2xhc3M9Im1vbnRoLW5h
bWUiPkphbnVhcnksIDIwMTE8L3RoPjx0aCBzdHlsZT0id2lkdGg6MjdweDsiPjxzcGFuIGNsYXNz
PSJuZXh0Ij4mZ3Q7PC9zcGFuPjwvdGg+PC90cj48dHIgY2xhc3M9IndlZWstbmFtZSI+JytnZXRX
ZWVrSGVhZCgpKyc8L3RoZWFkPjx0Ym9keT48L3Rib2R5PjwvdGFibGU+JwotICAgICAgICAgICAg
aWYgKCAhIG9wdC5zaW5nbGVEYXRlICkgewotICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYg
Y2xhc3M9ImdhcCI+JytnZXRHYXBIVE1MKCkrJzwvZGl2PicKLSAgICAgICAgICAgICAgICAgICAg
Kyc8dGFibGUgY2xhc3M9Im1vbnRoMiIgY2VsbHNwYWNpbmc9IjAiIGJvcmRlcj0iMCIgY2VsbHBh
ZGRpbmc9IjAiPjx0aGVhZD48dHIgY2xhc3M9ImNhcHRpb24iPjx0aCBzdHlsZT0id2lkdGg6Mjdw
eDsiPjxzcGFuIGNsYXNzPSJwcmV2Ij4mbHQ7PC9zcGFuPjwvdGg+PHRoIGNvbHNwYW49IjUiIGNs
YXNzPSJtb250aC1uYW1lIj5KYW51YXJ5LCAyMDExPC90aD48dGggc3R5bGU9IndpZHRoOjI3cHg7
Ij48c3BhbiBjbGFzcz0ibmV4dCI+Jmd0Ozwvc3Bhbj48L3RoPjwvdHI+PHRyIGNsYXNzPSJ3ZWVr
LW5hbWUiPicrZ2V0V2Vla0hlYWQoKSsnPC90aGVhZD48dGJvZHk+PC90Ym9keT48L3RhYmxlPicK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLysnPC9kaXY+JwotICAgICAgICAgICAg
aHRtbCArPSAgICAnPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDtoZWlnaHQ6MDtmb250LXNpemU6MDsi
PjwvZGl2PicKLSAgICAgICAgICAgICAgICArJzxkaXYgY2xhc3M9InRpbWUiPicKLSAgICAgICAg
ICAgICAgICArJzxkaXYgY2xhc3M9InRpbWUxIj48L2Rpdj4nCi0gICAgICAgICAgICBpZiAoICEg
b3B0LnNpbmdsZURhdGUgKSB7Ci0gICAgICAgICAgICAgICAgaHRtbCArPSAnPGRpdiBjbGFzcz0i
dGltZTIiPjwvZGl2PicKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGh0bWwgKz0gJzwvZGl2
PicKLSAgICAgICAgICAgICAgICArJzxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7aGVpZ2h0OjA7Zm9u
dC1zaXplOjA7Ij48L2Rpdj4nCi0gICAgICAgICAgICAgICAgKyc8L2Rpdj4nOwotCi0gICAgICAg
ICAgICBpZiAob3B0LnNob3dTaG9ydGN1dHMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgaHRtbCArPSAnPGRpdiBjbGFzcz0iZm9vdGVyIj48Yj4nK2xhbmcoJ3Nob3J0Y3V0cycpKyc8
L2I+JzsKLQotICAgICAgICAgICAgICAgIHZhciBkYXRhID0gb3B0LnNob3J0Y3V0czsKLSAgICAg
ICAgICAgICAgICBpZiAoZGF0YSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmIChkYXRhWydwcmV2LWRheXMnXSAmJiBkYXRhWydwcmV2LWRheXMnXS5sZW5ndGggPiAw
KQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9
ICcmbmJzcDs8c3BhbiBjbGFzcz0icHJldi1kYXlzIj4nK2xhbmcoJ3Bhc3QnKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGZvcih2YXIgaT0wO2k8ZGF0YVsncHJldi1kYXlzJ10ubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdmFyIG5hbWUgPSBkYXRhWydwcmV2LWRheXMnXVtpXTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBuYW1lICs9IChkYXRhWydwcmV2LWRheXMnXVtpXSA+IDEpID8gbGFuZygnZGF5cycp
IDogbGFuZygnZGF5Jyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAnIDxh
IGhyZWY9ImphdmFzY3JpcHQ6OyIgc2hvcnRjdXQ9ImRheSwtJytkYXRhWydwcmV2LWRheXMnXVtp
XSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgICAgICAgICAgaHRtbCs9Jzwvc3Bhbj4nOwotICAgICAgICAgICAgICAgICAgICB9Ci0K
LSAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGFbJ25leHQtZGF5cyddICYmIGRhdGFbJ25leHQt
ZGF5cyddLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJuZXh0LWRheXMiPicrbGFuZygn
Zm9sbG93aW5nJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPGRhdGFb
J25leHQtZGF5cyddLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICAgICAgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gZGF0YVsnbmV4dC1kYXlzJ11baV07
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSAoZGF0YVsnbmV4dC1kYXlzJ11b
aV0gPiAxKSA/IGxhbmcoJ2RheXMnKSA6IGxhbmcoJ2RheScpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGh0bWwgKz0gJyA8YSBocmVmPSJqYXZhc2NyaXB0OjsiIHNob3J0Y3V0PSJkYXks
JytkYXRhWyduZXh0LWRheXMnXVtpXSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9ICc8L3NwYW4+JzsKLSAg
ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChkYXRhWydwcmV2
J10gJiYgZGF0YVsncHJldiddLmxlbmd0aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJwcmV2LWJ1
dHRvbnMiPicrbGFuZygncHJldmlvdXMnKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvcih2
YXIgaT0wO2k8ZGF0YVsncHJldiddLmxlbmd0aDsgaSsrKQotICAgICAgICAgICAgICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbGFuZygncHJldi0n
K2RhdGFbJ3ByZXYnXVtpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCArPSAn
IDxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgc2hvcnRjdXQ9InByZXYsJytkYXRhWydwcmV2J11baV0r
JyI+JytuYW1lKyc8L2E+JzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGh0bWwrPSc8L3NwYW4+JzsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChkYXRhWyduZXh0J10gJiYgZGF0YVsnbmV4dCddLmxlbmd0
aCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGh0
bWwgKz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJuZXh0LWJ1dHRvbnMiPicrbGFuZygnbmV4dCcpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpPTA7aTxkYXRhWyduZXh0J10ubGVuZ3Ro
OyBpKyspCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIG5hbWUgPSBsYW5nKCduZXh0LScrZGF0YVsnbmV4dCddW2ldKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBodG1sICs9ICcgPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBzaG9y
dGN1dD0ibmV4dCwnK2RhdGFbJ25leHQnXVtpXSsnIj4nK25hbWUrJzwvYT4nOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaHRtbCs9Jzwvc3Bhbj4n
OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgaWYgKG9wdC5jdXN0b21TaG9ydGN1dHMpCi0gICAgICAgICAgICAgICAgewotICAgICAg
ICAgICAgICAgICAgICBmb3IodmFyIGk9MDtpPG9wdC5jdXN0b21TaG9ydGN1dHMubGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBz
aCA9IG9wdC5jdXN0b21TaG9ydGN1dHNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBodG1s
Kz0gJyZuYnNwOzxzcGFuIGNsYXNzPSJjdXN0b20tc2hvcnRjdXQiPjxhIGhyZWY9ImphdmFzY3Jp
cHQ6OyIgc2hvcnRjdXQ9ImN1c3RvbSI+JytzaC5uYW1lKyc8L2E+PC9zcGFuPic7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBodG1s
ICs9JzwvZGl2Pic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBodG1sICs9ICc8L2Rpdj4n
OwotCi0KLSAgICAgICAgICAgIHJldHVybiAkKGh0bWwpOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gZ2V0SGlkZUNsYXNzKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG9wdC5h
dXRvQ2xvc2UgPT09IHRydWUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2hpZGUnOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuICcnOwotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gZ2V0V2Vla0hlYWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAob3B0LnN0
YXJ0T2ZXZWVrID09ICdtb25kYXknKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJl
dHVybiAnPHRoPicrbGFuZygnd2Vlay0xJykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8
dGg+JytsYW5nKCd3ZWVrLTInKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xh
bmcoJ3dlZWstMycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vl
ay00JykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTUnKSsn
PC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstNicpKyc8L3RoPlwK
LSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay03JykrJzwvdGg+JzsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICByZXR1cm4gJzx0aD4nK2xhbmcoJ3dlZWstNycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAg
ICAgPHRoPicrbGFuZygnd2Vlay0xJykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+
JytsYW5nKCd3ZWVrLTInKSsnPC90aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmco
J3dlZWstMycpKyc8L3RoPlwKLSAgICAgICAgICAgICAgICAgICAgPHRoPicrbGFuZygnd2Vlay00
JykrJzwvdGg+XAotICAgICAgICAgICAgICAgICAgICA8dGg+JytsYW5nKCd3ZWVrLTUnKSsnPC90
aD5cCi0gICAgICAgICAgICAgICAgICAgIDx0aD4nK2xhbmcoJ3dlZWstNicpKyc8L3RoPic7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBnZXRHYXBIVE1MKCkK
LSAgICAgICAgewotICAgICAgICAgICAgdmFyIGh0bWwgPSBbJzxkaXYgY2xhc3M9ImdhcC10b3At
bWFzayI+PC9kaXY+PGRpdiBjbGFzcz0iZ2FwLWJvdHRvbS1tYXNrIj48L2Rpdj48ZGl2IGNsYXNz
PSJnYXAtbGluZXMiPiddOwotICAgICAgICAgICAgZm9yKHZhciBpPTA7aTwyMDtpKyspCi0gICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8ZGl2IGNsYXNzPSJnYXAtbGlu
ZSI+XAotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnYXAtMSI+PC9kaXY+XAotICAg
ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJnYXAtMiI+PC9kaXY+XAotICAgICAgICAgICAg
ICAgICAgICA8ZGl2IGNsYXNzPSJnYXAtMyI+PC9kaXY+XAotICAgICAgICAgICAgICAgIDwvZGl2
PicpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaHRtbC5wdXNoKCc8L2Rpdj4nKTsKLSAg
ICAgICAgICAgIHJldHVybiBodG1sLmpvaW4oJycpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVu
Y3Rpb24gY3JlYXRlTW9udGhIVE1MKGQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBkYXlz
ID0gW107Ci0gICAgICAgICAgICBkLnNldERhdGUoMSk7Ci0gICAgICAgICAgICB2YXIgbGFzdE1v
bnRoID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgLSA4NjQwMDAwMCk7Ci0gICAgICAgICAgICB2YXIg
bm93ID0gbmV3IERhdGUoKTsKLQotICAgICAgICAgICAgdmFyIGRheU9mV2VlayA9IGQuZ2V0RGF5
KCk7Ci0gICAgICAgICAgICBpZigoZGF5T2ZXZWVrID09IDApICYmIChvcHQuc3RhcnRPZldlZWsg
PT0gJ21vbmRheScpKSB7Ci0gICAgICAgICAgICAgICAgLy8gYWRkIG9uZSB3ZWVrCi0gICAgICAg
ICAgICAgICAgZGF5T2ZXZWVrID0gNzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYg
KGRheU9mV2VlayA+IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IGRheU9mV2VlazsgaSA+IDA7IGktLSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciBkYXkgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSAtIDg2NDAwMDAwKmkpOwot
ICAgICAgICAgICAgICAgICAgICB2YXIgdmFsaWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAg
ICBpZiAob3B0LnN0YXJ0RGF0ZSAmJiBjb21wYXJlX2RheShkYXksb3B0LnN0YXJ0RGF0ZSkgPCAw
KSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBpZiAob3B0LmVuZERhdGUgJiYg
Y29tcGFyZV9kYXkoZGF5LG9wdC5lbmREYXRlKSA+IDApIHZhbGlkID0gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgICAgIGRheXMucHVzaCh7dHlwZTonbGFzdE1vbnRoJyxkYXk6IGRheS5nZXREYXRl
KCksdGltZTpkYXkuZ2V0VGltZSgpLCB2YWxpZDp2YWxpZCB9KTsKLSAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB2YXIgdG9Nb250aCA9IGQuZ2V0TW9udGgoKTsK
LSAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpPDQwOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgdmFyIHRvZGF5ID0gbW9tZW50KGQpLmFkZCgnZGF5cycsIGkpLnRvRGF0ZSgp
OwotICAgICAgICAgICAgICAgIHZhciB2YWxpZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYg
KG9wdC5zdGFydERhdGUgJiYgY29tcGFyZV9kYXkodG9kYXksb3B0LnN0YXJ0RGF0ZSkgPCAwKSB2
YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChvcHQuZW5kRGF0ZSAmJiBjb21wYXJl
X2RheSh0b2RheSxvcHQuZW5kRGF0ZSkgPiAwKSB2YWxpZCA9IGZhbHNlOwotICAgICAgICAgICAg
ICAgIGRheXMucHVzaCh7dHlwZTogdG9kYXkuZ2V0TW9udGgoKSA9PSB0b01vbnRoID8gJ3RvTW9u
dGgnIDogJ25leHRNb250aCcsZGF5OiB0b2RheS5nZXREYXRlKCksdGltZTp0b2RheS5nZXRUaW1l
KCksIHZhbGlkOnZhbGlkIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdmFyIGh0bWwg
PSBbXTsKLSAgICAgICAgICAgIGZvcih2YXIgd2Vlaz0wOyB3ZWVrPDY7IHdlZWsrKykKLSAgICAg
ICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAoZGF5c1t3ZWVrKjddLnR5cGUgPT0gJ25leHRN
b250aCcpIGJyZWFrOwotICAgICAgICAgICAgICAgIGh0bWwucHVzaCgnPHRyPicpOwotICAgICAg
ICAgICAgICAgIGZvcih2YXIgZGF5ID0gMDsgZGF5PDc7IGRheSsrKQotICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIF9kYXkgPSAob3B0LnN0YXJ0T2ZXZWVrID09ICdt
b25kYXknKSA/IGRheSsxIDogZGF5OwotICAgICAgICAgICAgICAgICAgICB2YXIgdG9kYXkgPSBk
YXlzW3dlZWsqNytfZGF5XTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGhpZ2hsaWdodFRvZGF5
ID0gbW9tZW50KHRvZGF5LnRpbWUpLmZvcm1hdCgnTCcpID09IG1vbWVudChub3cpLmZvcm1hdCgn
TCcpOwotICAgICAgICAgICAgICAgICAgICB0b2RheS5leHRyYUNsYXNzID0gJyc7Ci0gICAgICAg
ICAgICAgICAgICAgIHRvZGF5LnRvb2x0aXAgPSAnJzsKLSAgICAgICAgICAgICAgICAgICAgaWYo
b3B0LmJlZm9yZVNob3dEYXkgJiYgdHlwZW9mIG9wdC5iZWZvcmVTaG93RGF5ID09ICdmdW5jdGlv
bicpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBf
ciA9IG9wdC5iZWZvcmVTaG93RGF5KG1vbWVudCh0b2RheS50aW1lKS50b0RhdGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0b2RheS52YWxpZCA9IF9yWzBdOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdG9kYXkuZXh0cmFDbGFzcyA9IF9yWzFdIHx8ICcnOwotICAgICAgICAgICAgICAg
ICAgICAgICAgdG9kYXkudG9vbHRpcCA9IF9yWzJdIHx8ICcnOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKHRvZGF5LnRvb2x0aXAgIT0gJycpIHRvZGF5LmV4dHJhQ2xhc3MgKz0gJyBoYXMt
dG9vbHRpcCAnOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGh0
bWwucHVzaCgnPHRkPjxkaXYgdGltZT0iJyt0b2RheS50aW1lKyciIHRpdGxlPSInK3RvZGF5LnRv
b2x0aXArJyIgY2xhc3M9ImRheSAnK3RvZGF5LnR5cGUrJyAnK3RvZGF5LmV4dHJhQ2xhc3MrJyAn
Kyh0b2RheS52YWxpZCA/ICd2YWxpZCcgOiAnaW52YWxpZCcpKycgJysoaGlnaGxpZ2h0VG9kYXk/
J3JlYWwtdG9kYXknOicnKSsnIj4nK3RvZGF5LmRheSsnPC9kaXY+PC90ZD4nKTsKLSAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaHRtbC5wdXNoKCc8L3RyPicpOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgcmV0dXJuIGh0bWwuam9pbignJyk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBnZXRMYW5ndWFnZXMoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
b3B0Lmxhbmd1YWdlID09ICdhdXRvJykKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB2
YXIgbGFuZ3VhZ2UgPSBuYXZpZ2F0b3IubGFuZ3VhZ2UgPyBuYXZpZ2F0b3IubGFuZ3VhZ2UgOiBu
YXZpZ2F0b3IuYnJvd3Nlckxhbmd1YWdlOwotICAgICAgICAgICAgICAgIGlmICghbGFuZ3VhZ2Up
IHJldHVybiAkLmRhdGVSYW5nZVBpY2tlckxhbmd1YWdlc1snZW4nXTsKLSAgICAgICAgICAgICAg
ICB2YXIgbGFuZ3VhZ2UgPSBsYW5ndWFnZS50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgICAgICAg
IGZvcih2YXIga2V5IGluICQuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzKQotICAgICAgICAgICAg
ICAgIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhbmd1YWdlLmluZGV4T2Yoa2V5KSAhPSAt
MSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICQuZGF0ZVJhbmdlUGlja2VyTGFuZ3VhZ2VzW2tleV07Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlj
a2VyTGFuZ3VhZ2VzWydlbiddOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAo
IG9wdC5sYW5ndWFnZSAmJiBvcHQubGFuZ3VhZ2UgaW4gJC5kYXRlUmFuZ2VQaWNrZXJMYW5ndWFn
ZXMpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlj
a2VyTGFuZ3VhZ2VzW29wdC5sYW5ndWFnZV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICQuZGF0ZVJhbmdlUGlj
a2VyTGFuZ3VhZ2VzWydlbiddOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAg
ZnVuY3Rpb24gbGFuZyh0KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKHQgaW4gbGFu
Z3MpPyBsYW5nc1t0XSA6IHQ7Ci0gICAgICAgIH0KLQotCi0gICAgfTsKLX0pKGpRdWVyeSk7CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5n
ZXBpY2tlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvRXh0ZXJuYWwvbW9tZW50Lm1pbi5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDYgKzAsMCBAQAotLy8hIG1vbWVudC5qcwotLy8hIHZlcnNpb24gOiAyLjYuMAot
Ly8hIGF1dGhvcnMgOiBUaW0gV29vZCwgSXNrcmVuIENoZXJuZXYsIE1vbWVudC5qcyBjb250cmli
dXRvcnMKLS8vISBsaWNlbnNlIDogTUlUCi0vLyEgbW9tZW50anMuY29tCi0oZnVuY3Rpb24oYSl7
ZnVuY3Rpb24gYigpe3JldHVybntlbXB0eTohMSx1bnVzZWRUb2tlbnM6W10sdW51c2VkSW5wdXQ6
W10sb3ZlcmZsb3c6LTIsY2hhcnNMZWZ0T3ZlcjowLG51bGxJbnB1dDohMSxpbnZhbGlkTW9udGg6
bnVsbCxpbnZhbGlkRm9ybWF0OiExLHVzZXJJbnZhbGlkYXRlZDohMSxpc286ITF9fWZ1bmN0aW9u
IGMoYSxiKXtmdW5jdGlvbiBjKCl7aWIuc3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzPT09ITEm
JiJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmY29uc29sZS53YXJuJiZjb25zb2xlLndhcm4o
IkRlcHJlY2F0aW9uIHdhcm5pbmc6ICIrYSl9dmFyIGQ9ITA7cmV0dXJuIGkoZnVuY3Rpb24oKXty
ZXR1cm4gZCYmKGMoKSxkPSExKSxiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sYil9ZnVuY3Rpb24g
ZChhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gbChhLmNhbGwodGhpcyxjKSxiKX19ZnVu
Y3Rpb24gZShhLGIpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gdGhpcy5sYW5nKCkub3JkaW5h
bChhLmNhbGwodGhpcyxjKSxiKX19ZnVuY3Rpb24gZigpe31mdW5jdGlvbiBnKGEpe3koYSksaSh0
aGlzLGEpfWZ1bmN0aW9uIGgoYSl7dmFyIGI9cihhKSxjPWIueWVhcnx8MCxkPWIucXVhcnRlcnx8
MCxlPWIubW9udGh8fDAsZj1iLndlZWt8fDAsZz1iLmRheXx8MCxoPWIuaG91cnx8MCxpPWIubWlu
dXRlfHwwLGo9Yi5zZWNvbmR8fDAsaz1iLm1pbGxpc2Vjb25kfHwwO3RoaXMuX21pbGxpc2Vjb25k
cz0raysxZTMqais2ZTQqaSszNmU1KmgsdGhpcy5fZGF5cz0rZys3KmYsdGhpcy5fbW9udGhzPStl
KzMqZCsxMipjLHRoaXMuX2RhdGE9e30sdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24gaShhLGIpe2Zv
cih2YXIgYyBpbiBiKWIuaGFzT3duUHJvcGVydHkoYykmJihhW2NdPWJbY10pO3JldHVybiBiLmhh
c093blByb3BlcnR5KCJ0b1N0cmluZyIpJiYoYS50b1N0cmluZz1iLnRvU3RyaW5nKSxiLmhhc093
blByb3BlcnR5KCJ2YWx1ZU9mIikmJihhLnZhbHVlT2Y9Yi52YWx1ZU9mKSxhfWZ1bmN0aW9uIGoo
YSl7dmFyIGIsYz17fTtmb3IoYiBpbiBhKWEuaGFzT3duUHJvcGVydHkoYikmJndiLmhhc093blBy
b3BlcnR5KGIpJiYoY1tiXT1hW2JdKTtyZXR1cm4gY31mdW5jdGlvbiBrKGEpe3JldHVybiAwPmE/
TWF0aC5jZWlsKGEpOk1hdGguZmxvb3IoYSl9ZnVuY3Rpb24gbChhLGIsYyl7Zm9yKHZhciBkPSIi
K01hdGguYWJzKGEpLGU9YT49MDtkLmxlbmd0aDxiOylkPSIwIitkO3JldHVybihlP2M/IisiOiIi
OiItIikrZH1mdW5jdGlvbiBtKGEsYixjLGQpe3ZhciBlPWIuX21pbGxpc2Vjb25kcyxmPWIuX2Rh
eXMsZz1iLl9tb250aHM7ZD1udWxsPT1kPyEwOmQsZSYmYS5fZC5zZXRUaW1lKCthLl9kK2UqYyks
ZiYmZGIoYSwiRGF0ZSIsY2IoYSwiRGF0ZSIpK2YqYyksZyYmYmIoYSxjYihhLCJNb250aCIpK2cq
YyksZCYmaWIudXBkYXRlT2Zmc2V0KGEsZnx8Zyl9ZnVuY3Rpb24gbihhKXtyZXR1cm4iW29iamVj
dCBBcnJheV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGEpfWZ1bmN0aW9uIG8o
YSl7cmV0dXJuIltvYmplY3QgRGF0ZV0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxs
KGEpfHxhIGluc3RhbmNlb2YgRGF0ZX1mdW5jdGlvbiBwKGEsYixjKXt2YXIgZCxlPU1hdGgubWlu
KGEubGVuZ3RoLGIubGVuZ3RoKSxmPU1hdGguYWJzKGEubGVuZ3RoLWIubGVuZ3RoKSxnPTA7Zm9y
KGQ9MDtlPmQ7ZCsrKShjJiZhW2RdIT09YltkXXx8IWMmJnQoYVtkXSkhPT10KGJbZF0pKSYmZysr
O3JldHVybiBnK2Z9ZnVuY3Rpb24gcShhKXtpZihhKXt2YXIgYj1hLnRvTG93ZXJDYXNlKCkucmVw
bGFjZSgvKC4pcyQvLCIkMSIpO2E9WmJbYV18fCRiW2JdfHxifXJldHVybiBhfWZ1bmN0aW9uIHIo
YSl7dmFyIGIsYyxkPXt9O2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmKGI9cShjKSxi
JiYoZFtiXT1hW2NdKSk7cmV0dXJuIGR9ZnVuY3Rpb24gcyhiKXt2YXIgYyxkO2lmKDA9PT1iLmlu
ZGV4T2YoIndlZWsiKSljPTcsZD0iZGF5IjtlbHNle2lmKDAhPT1iLmluZGV4T2YoIm1vbnRoIikp
cmV0dXJuO2M9MTIsZD0ibW9udGgifWliW2JdPWZ1bmN0aW9uKGUsZil7dmFyIGcsaCxpPWliLmZu
Ll9sYW5nW2JdLGo9W107aWYoIm51bWJlciI9PXR5cGVvZiBlJiYoZj1lLGU9YSksaD1mdW5jdGlv
bihhKXt2YXIgYj1pYigpLnV0YygpLnNldChkLGEpO3JldHVybiBpLmNhbGwoaWIuZm4uX2xhbmcs
YixlfHwiIil9LG51bGwhPWYpcmV0dXJuIGgoZik7Zm9yKGc9MDtjPmc7ZysrKWoucHVzaChoKGcp
KTtyZXR1cm4gan19ZnVuY3Rpb24gdChhKXt2YXIgYj0rYSxjPTA7cmV0dXJuIDAhPT1iJiZpc0Zp
bml0ZShiKSYmKGM9Yj49MD9NYXRoLmZsb29yKGIpOk1hdGguY2VpbChiKSksY31mdW5jdGlvbiB1
KGEsYil7cmV0dXJuIG5ldyBEYXRlKERhdGUuVVRDKGEsYisxLDApKS5nZXRVVENEYXRlKCl9ZnVu
Y3Rpb24gdihhLGIsYyl7cmV0dXJuICQoaWIoW2EsMTEsMzErYi1jXSksYixjKS53ZWVrfWZ1bmN0
aW9uIHcoYSl7cmV0dXJuIHgoYSk/MzY2OjM2NX1mdW5jdGlvbiB4KGEpe3JldHVybiBhJTQ9PT0w
JiZhJTEwMCE9PTB8fGElNDAwPT09MH1mdW5jdGlvbiB5KGEpe3ZhciBiO2EuX2EmJi0yPT09YS5f
cGYub3ZlcmZsb3cmJihiPWEuX2FbcGJdPDB8fGEuX2FbcGJdPjExP3BiOmEuX2FbcWJdPDF8fGEu
X2FbcWJdPnUoYS5fYVtvYl0sYS5fYVtwYl0pP3FiOmEuX2FbcmJdPDB8fGEuX2FbcmJdPjIzP3Ji
OmEuX2Fbc2JdPDB8fGEuX2Fbc2JdPjU5P3NiOmEuX2FbdGJdPDB8fGEuX2FbdGJdPjU5P3RiOmEu
X2FbdWJdPDB8fGEuX2FbdWJdPjk5OT91YjotMSxhLl9wZi5fb3ZlcmZsb3dEYXlPZlllYXImJihv
Yj5ifHxiPnFiKSYmKGI9cWIpLGEuX3BmLm92ZXJmbG93PWIpfWZ1bmN0aW9uIHooYSl7cmV0dXJu
IG51bGw9PWEuX2lzVmFsaWQmJihhLl9pc1ZhbGlkPSFpc05hTihhLl9kLmdldFRpbWUoKSkmJmEu
X3BmLm92ZXJmbG93PDAmJiFhLl9wZi5lbXB0eSYmIWEuX3BmLmludmFsaWRNb250aCYmIWEuX3Bm
Lm51bGxJbnB1dCYmIWEuX3BmLmludmFsaWRGb3JtYXQmJiFhLl9wZi51c2VySW52YWxpZGF0ZWQs
YS5fc3RyaWN0JiYoYS5faXNWYWxpZD1hLl9pc1ZhbGlkJiYwPT09YS5fcGYuY2hhcnNMZWZ0T3Zl
ciYmMD09PWEuX3BmLnVudXNlZFRva2Vucy5sZW5ndGgpKSxhLl9pc1ZhbGlkfWZ1bmN0aW9uIEEo
YSl7cmV0dXJuIGE/YS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoIl8iLCItIik6YX1mdW5jdGlvbiBC
KGEsYil7cmV0dXJuIGIuX2lzVVRDP2liKGEpLnpvbmUoYi5fb2Zmc2V0fHwwKTppYihhKS5sb2Nh
bCgpfWZ1bmN0aW9uIEMoYSxiKXtyZXR1cm4gYi5hYmJyPWEsdmJbYV18fCh2YlthXT1uZXcgZiks
dmJbYV0uc2V0KGIpLHZiW2FdfWZ1bmN0aW9uIEQoYSl7ZGVsZXRlIHZiW2FdfWZ1bmN0aW9uIEUo
YSl7dmFyIGIsYyxkLGUsZj0wLGc9ZnVuY3Rpb24oYSl7aWYoIXZiW2FdJiZ4Yil0cnl7cmVxdWly
ZSgiLi9sYW5nLyIrYSl9Y2F0Y2goYil7fXJldHVybiB2YlthXX07aWYoIWEpcmV0dXJuIGliLmZu
Ll9sYW5nO2lmKCFuKGEpKXtpZihjPWcoYSkpcmV0dXJuIGM7YT1bYV19Zm9yKDtmPGEubGVuZ3Ro
Oyl7Zm9yKGU9QShhW2ZdKS5zcGxpdCgiLSIpLGI9ZS5sZW5ndGgsZD1BKGFbZisxXSksZD1kP2Qu
c3BsaXQoIi0iKTpudWxsO2I+MDspe2lmKGM9ZyhlLnNsaWNlKDAsYikuam9pbigiLSIpKSlyZXR1
cm4gYztpZihkJiZkLmxlbmd0aD49YiYmcChlLGQsITApPj1iLTEpYnJlYWs7Yi0tfWYrK31yZXR1
cm4gaWIuZm4uX2xhbmd9ZnVuY3Rpb24gRihhKXtyZXR1cm4gYS5tYXRjaCgvXFtbXHNcU10vKT9h
LnJlcGxhY2UoL15cW3xcXSQvZywiIik6YS5yZXBsYWNlKC9cXC9nLCIiKX1mdW5jdGlvbiBHKGEp
e3ZhciBiLGMsZD1hLm1hdGNoKEJiKTtmb3IoYj0wLGM9ZC5sZW5ndGg7Yz5iO2IrKylkW2JdPWNj
W2RbYl1dP2NjW2RbYl1dOkYoZFtiXSk7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPSIiO2Zvcihi
PTA7Yz5iO2IrKylmKz1kW2JdaW5zdGFuY2VvZiBGdW5jdGlvbj9kW2JdLmNhbGwoZSxhKTpkW2Jd
O3JldHVybiBmfX1mdW5jdGlvbiBIKGEsYil7cmV0dXJuIGEuaXNWYWxpZCgpPyhiPUkoYixhLmxh
bmcoKSksX2JbYl18fChfYltiXT1HKGIpKSxfYltiXShhKSk6YS5sYW5nKCkuaW52YWxpZERhdGUo
KX1mdW5jdGlvbiBJKGEsYil7ZnVuY3Rpb24gYyhhKXtyZXR1cm4gYi5sb25nRGF0ZUZvcm1hdChh
KXx8YX12YXIgZD01O2ZvcihDYi5sYXN0SW5kZXg9MDtkPj0wJiZDYi50ZXN0KGEpOylhPWEucmVw
bGFjZShDYixjKSxDYi5sYXN0SW5kZXg9MCxkLT0xO3JldHVybiBhfWZ1bmN0aW9uIEooYSxiKXt2
YXIgYyxkPWIuX3N0cmljdDtzd2l0Y2goYSl7Y2FzZSJRIjpyZXR1cm4gTmI7Y2FzZSJEREREIjpy
ZXR1cm4gUGI7Y2FzZSJZWVlZIjpjYXNlIkdHR0ciOmNhc2UiZ2dnZyI6cmV0dXJuIGQ/UWI6RmI7
Y2FzZSJZIjpjYXNlIkciOmNhc2UiZyI6cmV0dXJuIFNiO2Nhc2UiWVlZWVlZIjpjYXNlIllZWVlZ
IjpjYXNlIkdHR0dHIjpjYXNlImdnZ2dnIjpyZXR1cm4gZD9SYjpHYjtjYXNlIlMiOmlmKGQpcmV0
dXJuIE5iO2Nhc2UiU1MiOmlmKGQpcmV0dXJuIE9iO2Nhc2UiU1NTIjppZihkKXJldHVybiBQYjtj
YXNlIkRERCI6cmV0dXJuIEViO2Nhc2UiTU1NIjpjYXNlIk1NTU0iOmNhc2UiZGQiOmNhc2UiZGRk
IjpjYXNlImRkZGQiOnJldHVybiBJYjtjYXNlImEiOmNhc2UiQSI6cmV0dXJuIEUoYi5fbCkuX21l
cmlkaWVtUGFyc2U7Y2FzZSJYIjpyZXR1cm4gTGI7Y2FzZSJaIjpjYXNlIlpaIjpyZXR1cm4gSmI7
Y2FzZSJUIjpyZXR1cm4gS2I7Y2FzZSJTU1NTIjpyZXR1cm4gSGI7Y2FzZSJNTSI6Y2FzZSJERCI6
Y2FzZSJZWSI6Y2FzZSJHRyI6Y2FzZSJnZyI6Y2FzZSJISCI6Y2FzZSJoaCI6Y2FzZSJtbSI6Y2Fz
ZSJzcyI6Y2FzZSJ3dyI6Y2FzZSJXVyI6cmV0dXJuIGQ/T2I6RGI7Y2FzZSJNIjpjYXNlIkQiOmNh
c2UiZCI6Y2FzZSJIIjpjYXNlImgiOmNhc2UibSI6Y2FzZSJzIjpjYXNlInciOmNhc2UiVyI6Y2Fz
ZSJlIjpjYXNlIkUiOnJldHVybiBEYjtjYXNlIkRvIjpyZXR1cm4gTWI7ZGVmYXVsdDpyZXR1cm4g
Yz1uZXcgUmVnRXhwKFIoUShhLnJlcGxhY2UoIlxcIiwiIikpLCJpIikpfX1mdW5jdGlvbiBLKGEp
e2E9YXx8IiI7dmFyIGI9YS5tYXRjaChKYil8fFtdLGM9YltiLmxlbmd0aC0xXXx8W10sZD0oYysi
IikubWF0Y2goWGIpfHxbIi0iLDAsMF0sZT0rKDYwKmRbMV0pK3QoZFsyXSk7cmV0dXJuIisiPT09
ZFswXT8tZTplfWZ1bmN0aW9uIEwoYSxiLGMpe3ZhciBkLGU9Yy5fYTtzd2l0Y2goYSl7Y2FzZSJR
IjpudWxsIT1iJiYoZVtwYl09MyoodChiKS0xKSk7YnJlYWs7Y2FzZSJNIjpjYXNlIk1NIjpudWxs
IT1iJiYoZVtwYl09dChiKS0xKTticmVhaztjYXNlIk1NTSI6Y2FzZSJNTU1NIjpkPUUoYy5fbCku
bW9udGhzUGFyc2UoYiksbnVsbCE9ZD9lW3BiXT1kOmMuX3BmLmludmFsaWRNb250aD1iO2JyZWFr
O2Nhc2UiRCI6Y2FzZSJERCI6bnVsbCE9YiYmKGVbcWJdPXQoYikpO2JyZWFrO2Nhc2UiRG8iOm51
bGwhPWImJihlW3FiXT10KHBhcnNlSW50KGIsMTApKSk7YnJlYWs7Y2FzZSJEREQiOmNhc2UiRERE
RCI6bnVsbCE9YiYmKGMuX2RheU9mWWVhcj10KGIpKTticmVhaztjYXNlIllZIjplW29iXT1pYi5w
YXJzZVR3b0RpZ2l0WWVhcihiKTticmVhaztjYXNlIllZWVkiOmNhc2UiWVlZWVkiOmNhc2UiWVlZ
WVlZIjplW29iXT10KGIpO2JyZWFrO2Nhc2UiYSI6Y2FzZSJBIjpjLl9pc1BtPUUoYy5fbCkuaXNQ
TShiKTticmVhaztjYXNlIkgiOmNhc2UiSEgiOmNhc2UiaCI6Y2FzZSJoaCI6ZVtyYl09dChiKTti
cmVhaztjYXNlIm0iOmNhc2UibW0iOmVbc2JdPXQoYik7YnJlYWs7Y2FzZSJzIjpjYXNlInNzIjpl
W3RiXT10KGIpO2JyZWFrO2Nhc2UiUyI6Y2FzZSJTUyI6Y2FzZSJTU1MiOmNhc2UiU1NTUyI6ZVt1
Yl09dCgxZTMqKCIwLiIrYikpO2JyZWFrO2Nhc2UiWCI6Yy5fZD1uZXcgRGF0ZSgxZTMqcGFyc2VG
bG9hdChiKSk7YnJlYWs7Y2FzZSJaIjpjYXNlIlpaIjpjLl91c2VVVEM9ITAsYy5fdHptPUsoYik7
YnJlYWs7Y2FzZSJ3IjpjYXNlInd3IjpjYXNlIlciOmNhc2UiV1ciOmNhc2UiZCI6Y2FzZSJkZCI6
Y2FzZSJkZGQiOmNhc2UiZGRkZCI6Y2FzZSJlIjpjYXNlIkUiOmE9YS5zdWJzdHIoMCwxKTtjYXNl
ImdnIjpjYXNlImdnZ2ciOmNhc2UiR0ciOmNhc2UiR0dHRyI6Y2FzZSJHR0dHRyI6YT1hLnN1YnN0
cigwLDIpLGImJihjLl93PWMuX3d8fHt9LGMuX3dbYV09Yil9fWZ1bmN0aW9uIE0oYSl7dmFyIGIs
YyxkLGUsZixnLGgsaSxqLGssbD1bXTtpZighYS5fZCl7Zm9yKGQ9TyhhKSxhLl93JiZudWxsPT1h
Ll9hW3FiXSYmbnVsbD09YS5fYVtwYl0mJihmPWZ1bmN0aW9uKGIpe3ZhciBjPXBhcnNlSW50KGIs
MTApO3JldHVybiBiP2IubGVuZ3RoPDM/Yz42OD8xOTAwK2M6MmUzK2M6YzpudWxsPT1hLl9hW29i
XT9pYigpLndlZWtZZWFyKCk6YS5fYVtvYl19LGc9YS5fdyxudWxsIT1nLkdHfHxudWxsIT1nLld8
fG51bGwhPWcuRT9oPV8oZihnLkdHKSxnLld8fDEsZy5FLDQsMSk6KGk9RShhLl9sKSxqPW51bGwh
PWcuZD9YKGcuZCxpKTpudWxsIT1nLmU/cGFyc2VJbnQoZy5lLDEwKStpLl93ZWVrLmRvdzowLGs9
cGFyc2VJbnQoZy53LDEwKXx8MSxudWxsIT1nLmQmJmo8aS5fd2Vlay5kb3cmJmsrKyxoPV8oZihn
LmdnKSxrLGosaS5fd2Vlay5kb3ksaS5fd2Vlay5kb3cpKSxhLl9hW29iXT1oLnllYXIsYS5fZGF5
T2ZZZWFyPWguZGF5T2ZZZWFyKSxhLl9kYXlPZlllYXImJihlPW51bGw9PWEuX2Fbb2JdP2Rbb2Jd
OmEuX2Fbb2JdLGEuX2RheU9mWWVhcj53KGUpJiYoYS5fcGYuX292ZXJmbG93RGF5T2ZZZWFyPSEw
KSxjPVcoZSwwLGEuX2RheU9mWWVhciksYS5fYVtwYl09Yy5nZXRVVENNb250aCgpLGEuX2FbcWJd
PWMuZ2V0VVRDRGF0ZSgpKSxiPTA7Mz5iJiZudWxsPT1hLl9hW2JdOysrYilhLl9hW2JdPWxbYl09
ZFtiXTtmb3IoOzc+YjtiKyspYS5fYVtiXT1sW2JdPW51bGw9PWEuX2FbYl0/Mj09PWI/MTowOmEu
X2FbYl07bFtyYl0rPXQoKGEuX3R6bXx8MCkvNjApLGxbc2JdKz10KChhLl90em18fDApJTYwKSxh
Ll9kPShhLl91c2VVVEM/VzpWKS5hcHBseShudWxsLGwpfX1mdW5jdGlvbiBOKGEpe3ZhciBiO2Eu
X2R8fChiPXIoYS5faSksYS5fYT1bYi55ZWFyLGIubW9udGgsYi5kYXksYi5ob3VyLGIubWludXRl
LGIuc2Vjb25kLGIubWlsbGlzZWNvbmRdLE0oYSkpfWZ1bmN0aW9uIE8oYSl7dmFyIGI9bmV3IERh
dGU7cmV0dXJuIGEuX3VzZVVUQz9bYi5nZXRVVENGdWxsWWVhcigpLGIuZ2V0VVRDTW9udGgoKSxi
LmdldFVUQ0RhdGUoKV06W2IuZ2V0RnVsbFllYXIoKSxiLmdldE1vbnRoKCksYi5nZXREYXRlKCld
fWZ1bmN0aW9uIFAoYSl7YS5fYT1bXSxhLl9wZi5lbXB0eT0hMDt2YXIgYixjLGQsZSxmLGc9RShh
Ll9sKSxoPSIiK2EuX2ksaT1oLmxlbmd0aCxqPTA7Zm9yKGQ9SShhLl9mLGcpLm1hdGNoKEJiKXx8
W10sYj0wO2I8ZC5sZW5ndGg7YisrKWU9ZFtiXSxjPShoLm1hdGNoKEooZSxhKSl8fFtdKVswXSxj
JiYoZj1oLnN1YnN0cigwLGguaW5kZXhPZihjKSksZi5sZW5ndGg+MCYmYS5fcGYudW51c2VkSW5w
dXQucHVzaChmKSxoPWguc2xpY2UoaC5pbmRleE9mKGMpK2MubGVuZ3RoKSxqKz1jLmxlbmd0aCks
Y2NbZV0/KGM/YS5fcGYuZW1wdHk9ITE6YS5fcGYudW51c2VkVG9rZW5zLnB1c2goZSksTChlLGMs
YSkpOmEuX3N0cmljdCYmIWMmJmEuX3BmLnVudXNlZFRva2Vucy5wdXNoKGUpO2EuX3BmLmNoYXJz
TGVmdE92ZXI9aS1qLGgubGVuZ3RoPjAmJmEuX3BmLnVudXNlZElucHV0LnB1c2goaCksYS5faXNQ
bSYmYS5fYVtyYl08MTImJihhLl9hW3JiXSs9MTIpLGEuX2lzUG09PT0hMSYmMTI9PT1hLl9hW3Ji
XSYmKGEuX2FbcmJdPTApLE0oYSkseShhKX1mdW5jdGlvbiBRKGEpe3JldHVybiBhLnJlcGxhY2Uo
L1xcKFxbKXxcXChcXSl8XFsoW15cXVxbXSopXF18XFwoLikvZyxmdW5jdGlvbihhLGIsYyxkLGUp
e3JldHVybiBifHxjfHxkfHxlfSl9ZnVuY3Rpb24gUihhKXtyZXR1cm4gYS5yZXBsYWNlKC9bLVwv
XFxeJCorPy4oKXxbXF17fV0vZywiXFwkJiIpfWZ1bmN0aW9uIFMoYSl7dmFyIGMsZCxlLGYsZztp
ZigwPT09YS5fZi5sZW5ndGgpcmV0dXJuIGEuX3BmLmludmFsaWRGb3JtYXQ9ITAsdm9pZChhLl9k
PW5ldyBEYXRlKDAvMCkpO2ZvcihmPTA7ZjxhLl9mLmxlbmd0aDtmKyspZz0wLGM9aSh7fSxhKSxj
Ll9wZj1iKCksYy5fZj1hLl9mW2ZdLFAoYykseihjKSYmKGcrPWMuX3BmLmNoYXJzTGVmdE92ZXIs
Zys9MTAqYy5fcGYudW51c2VkVG9rZW5zLmxlbmd0aCxjLl9wZi5zY29yZT1nLChudWxsPT1lfHxl
PmcpJiYoZT1nLGQ9YykpO2koYSxkfHxjKX1mdW5jdGlvbiBUKGEpe3ZhciBiLGMsZD1hLl9pLGU9
VGIuZXhlYyhkKTtpZihlKXtmb3IoYS5fcGYuaXNvPSEwLGI9MCxjPVZiLmxlbmd0aDtjPmI7Yisr
KWlmKFZiW2JdWzFdLmV4ZWMoZCkpe2EuX2Y9VmJbYl1bMF0rKGVbNl18fCIgIik7YnJlYWt9Zm9y
KGI9MCxjPVdiLmxlbmd0aDtjPmI7YisrKWlmKFdiW2JdWzFdLmV4ZWMoZCkpe2EuX2YrPVdiW2Jd
WzBdO2JyZWFrfWQubWF0Y2goSmIpJiYoYS5fZis9IloiKSxQKGEpfWVsc2UgaWIuY3JlYXRlRnJv
bUlucHV0RmFsbGJhY2soYSl9ZnVuY3Rpb24gVShiKXt2YXIgYz1iLl9pLGQ9eWIuZXhlYyhjKTtj
PT09YT9iLl9kPW5ldyBEYXRlOmQ/Yi5fZD1uZXcgRGF0ZSgrZFsxXSk6InN0cmluZyI9PXR5cGVv
ZiBjP1QoYik6bihjKT8oYi5fYT1jLnNsaWNlKDApLE0oYikpOm8oYyk/Yi5fZD1uZXcgRGF0ZSgr
Yyk6Im9iamVjdCI9PXR5cGVvZiBjP04oYik6Im51bWJlciI9PXR5cGVvZiBjP2IuX2Q9bmV3IERh
dGUoYyk6aWIuY3JlYXRlRnJvbUlucHV0RmFsbGJhY2soYil9ZnVuY3Rpb24gVihhLGIsYyxkLGUs
ZixnKXt2YXIgaD1uZXcgRGF0ZShhLGIsYyxkLGUsZixnKTtyZXR1cm4gMTk3MD5hJiZoLnNldEZ1
bGxZZWFyKGEpLGh9ZnVuY3Rpb24gVyhhKXt2YXIgYj1uZXcgRGF0ZShEYXRlLlVUQy5hcHBseShu
dWxsLGFyZ3VtZW50cykpO3JldHVybiAxOTcwPmEmJmIuc2V0VVRDRnVsbFllYXIoYSksYn1mdW5j
dGlvbiBYKGEsYil7aWYoInN0cmluZyI9PXR5cGVvZiBhKWlmKGlzTmFOKGEpKXtpZihhPWIud2Vl
a2RheXNQYXJzZShhKSwibnVtYmVyIiE9dHlwZW9mIGEpcmV0dXJuIG51bGx9ZWxzZSBhPXBhcnNl
SW50KGEsMTApO3JldHVybiBhfWZ1bmN0aW9uIFkoYSxiLGMsZCxlKXtyZXR1cm4gZS5yZWxhdGl2
ZVRpbWUoYnx8MSwhIWMsYSxkKX1mdW5jdGlvbiBaKGEsYixjKXt2YXIgZD1uYihNYXRoLmFicyhh
KS8xZTMpLGU9bmIoZC82MCksZj1uYihlLzYwKSxnPW5iKGYvMjQpLGg9bmIoZy8zNjUpLGk9NDU+
ZCYmWyJzIixkXXx8MT09PWUmJlsibSJdfHw0NT5lJiZbIm1tIixlXXx8MT09PWYmJlsiaCJdfHwy
Mj5mJiZbImhoIixmXXx8MT09PWcmJlsiZCJdfHwyNT49ZyYmWyJkZCIsZ118fDQ1Pj1nJiZbIk0i
XXx8MzQ1PmcmJlsiTU0iLG5iKGcvMzApXXx8MT09PWgmJlsieSJdfHxbInl5IixoXTtyZXR1cm4g
aVsyXT1iLGlbM109YT4wLGlbNF09YyxZLmFwcGx5KHt9LGkpfWZ1bmN0aW9uICQoYSxiLGMpe3Zh
ciBkLGU9Yy1iLGY9Yy1hLmRheSgpO3JldHVybiBmPmUmJihmLT03KSxlLTc+ZiYmKGYrPTcpLGQ9
aWIoYSkuYWRkKCJkIixmKSx7d2VlazpNYXRoLmNlaWwoZC5kYXlPZlllYXIoKS83KSx5ZWFyOmQu
eWVhcigpfX1mdW5jdGlvbiBfKGEsYixjLGQsZSl7dmFyIGYsZyxoPVcoYSwwLDEpLmdldFVUQ0Rh
eSgpO3JldHVybiBjPW51bGwhPWM/YzplLGY9ZS1oKyhoPmQ/NzowKS0oZT5oPzc6MCksZz03Kihi
LTEpKyhjLWUpK2YrMSx7eWVhcjpnPjA/YTphLTEsZGF5T2ZZZWFyOmc+MD9nOncoYS0xKStnfX1m
dW5jdGlvbiBhYihiKXt2YXIgYz1iLl9pLGQ9Yi5fZjtyZXR1cm4gbnVsbD09PWN8fGQ9PT1hJiYi
Ij09PWM/aWIuaW52YWxpZCh7bnVsbElucHV0OiEwfSk6KCJzdHJpbmciPT10eXBlb2YgYyYmKGIu
X2k9Yz1FKCkucHJlcGFyc2UoYykpLGliLmlzTW9tZW50KGMpPyhiPWooYyksYi5fZD1uZXcgRGF0
ZSgrYy5fZCkpOmQ/bihkKT9TKGIpOlAoYik6VShiKSxuZXcgZyhiKSl9ZnVuY3Rpb24gYmIoYSxi
KXt2YXIgYztyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihiPWEubGFuZygpLm1vbnRoc1BhcnNl
KGIpLCJudW1iZXIiIT10eXBlb2YgYik/YTooYz1NYXRoLm1pbihhLmRhdGUoKSx1KGEueWVhcigp
LGIpKSxhLl9kWyJzZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrIk1vbnRoIl0oYixjKSxhKX1mdW5j
dGlvbiBjYihhLGIpe3JldHVybiBhLl9kWyJnZXQiKyhhLl9pc1VUQz8iVVRDIjoiIikrYl0oKX1m
dW5jdGlvbiBkYihhLGIsYyl7cmV0dXJuIk1vbnRoIj09PWI/YmIoYSxjKTphLl9kWyJzZXQiKyhh
Ll9pc1VUQz8iVVRDIjoiIikrYl0oYyl9ZnVuY3Rpb24gZWIoYSxiKXtyZXR1cm4gZnVuY3Rpb24o
Yyl7cmV0dXJuIG51bGwhPWM/KGRiKHRoaXMsYSxjKSxpYi51cGRhdGVPZmZzZXQodGhpcyxiKSx0
aGlzKTpjYih0aGlzLGEpfX1mdW5jdGlvbiBmYihhKXtpYi5kdXJhdGlvbi5mblthXT1mdW5jdGlv
bigpe3JldHVybiB0aGlzLl9kYXRhW2FdfX1mdW5jdGlvbiBnYihhLGIpe2liLmR1cmF0aW9uLmZu
WyJhcyIrYV09ZnVuY3Rpb24oKXtyZXR1cm4rdGhpcy9ifX1mdW5jdGlvbiBoYihhKXsidW5kZWZp
bmVkIj09dHlwZW9mIGVuZGVyJiYoamI9bWIubW9tZW50LG1iLm1vbWVudD1hP2MoIkFjY2Vzc2lu
ZyBNb21lbnQgdGhyb3VnaCB0aGUgZ2xvYmFsIHNjb3BlIGlzIGRlcHJlY2F0ZWQsIGFuZCB3aWxs
IGJlIHJlbW92ZWQgaW4gYW4gdXBjb21pbmcgcmVsZWFzZS4iLGliKTppYil9Zm9yKHZhciBpYixq
YixrYixsYj0iMi42LjAiLG1iPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsP2dsb2JhbDp0aGlz
LG5iPU1hdGgucm91bmQsb2I9MCxwYj0xLHFiPTIscmI9MyxzYj00LHRiPTUsdWI9Nix2Yj17fSx3
Yj17X2lzQU1vbWVudE9iamVjdDpudWxsLF9pOm51bGwsX2Y6bnVsbCxfbDpudWxsLF9zdHJpY3Q6
bnVsbCxfaXNVVEM6bnVsbCxfb2Zmc2V0Om51bGwsX3BmOm51bGwsX2xhbmc6bnVsbH0seGI9InVu
ZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzLHliPS9eXC8/RGF0ZVwoKFwt
P1xkKykvaSx6Yj0vKFwtKT8oPzooXGQqKVwuKT8oXGQrKVw6KFxkKykoPzpcOihcZCspXC4/KFxk
ezN9KT8pPy8sQWI9L14oLSk/UCg/Oig/OihbMC05LC5dKilZKT8oPzooWzAtOSwuXSopTSk/KD86
KFswLTksLl0qKUQpPyg/OlQoPzooWzAtOSwuXSopSCk/KD86KFswLTksLl0qKU0pPyg/OihbMC05
LC5dKilTKT8pP3woWzAtOSwuXSopVykkLyxCYj0vKFxbW15cW10qXF0pfChcXCk/KE1vfE1NP00/
TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFF8WVlZWVlZfFlZ
WVlZfFlZWVl8WVl8Z2coZ2dnPyk/fEdHKEdHRz8pP3xlfEV8YXxBfGhoP3xISD98bW0/fHNzP3xT
ezEsNH18WHx6ej98Wlo/fC4pL2csQ2I9LyhcW1teXFtdKlxdKXwoXFwpPyhMVHxMTD9MP0w/fGx7
MSw0fSkvZyxEYj0vXGRcZD8vLEViPS9cZHsxLDN9LyxGYj0vXGR7MSw0fS8sR2I9L1srXC1dP1xk
ezEsNn0vLEhiPS9cZCsvLEliPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZG
XHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2
MDAtXHUwNkZGXSspezEsMn0vaSxKYj0vWnxbXCtcLV1cZFxkOj9cZFxkL2dpLEtiPS9UL2ksTGI9
L1tcK1wtXT9cZCsoXC5cZHsxLDN9KT8vLE1iPS9cZHsxLDJ9LyxOYj0vXGQvLE9iPS9cZFxkLyxQ
Yj0vXGR7M30vLFFiPS9cZHs0fS8sUmI9L1srLV0/XGR7Nn0vLFNiPS9bKy1dP1xkKy8sVGI9L15c
cyooPzpbKy1dXGR7Nn18XGR7NH0pLSg/OihcZFxkLVxkXGQpfChXXGRcZCQpfChXXGRcZC1cZCl8
KFxkXGRcZCkpKChUfCApKFxkXGQoOlxkXGQoOlxkXGQoXC5cZCspPyk/KT8pPyhbXCtcLV1cZFxk
KD86Oj9cZFxkKT98XHMqWik/KT8kLyxVYj0iWVlZWS1NTS1ERFRISDptbTpzc1oiLFZiPVtbIllZ
WVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZHsyfS1cZHsyfS9dLFsiWVlZWS1NTS1ERCIsL1xkezR9
LVxkezJ9LVxkezJ9L10sWyJHR0dHLVtXXVdXLUUiLC9cZHs0fS1XXGR7Mn0tXGQvXSxbIkdHR0ct
W1ddV1ciLC9cZHs0fS1XXGR7Mn0vXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXV0sV2I9W1si
SEg6bW06c3MuU1NTUyIsLyhUfCApXGRcZDpcZFxkOlxkXGRcLlxkKy9dLFsiSEg6bW06c3MiLC8o
VHwgKVxkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsLyhUfCApXGRcZDpcZFxkL10sWyJISCIsLyhU
fCApXGRcZC9dXSxYYj0vKFtcK1wtXXxcZFxkKS9naSxZYj0oIkRhdGV8SG91cnN8TWludXRlc3xT
ZWNvbmRzfE1pbGxpc2Vjb25kcyIuc3BsaXQoInwiKSx7TWlsbGlzZWNvbmRzOjEsU2Vjb25kczox
ZTMsTWludXRlczo2ZTQsSG91cnM6MzZlNSxEYXlzOjg2NGU1LE1vbnRoczoyNTkyZTYsWWVhcnM6
MzE1MzZlNn0pLFpiPXttczoibWlsbGlzZWNvbmQiLHM6InNlY29uZCIsbToibWludXRlIixoOiJo
b3VyIixkOiJkYXkiLEQ6ImRhdGUiLHc6IndlZWsiLFc6Imlzb1dlZWsiLE06Im1vbnRoIixROiJx
dWFydGVyIix5OiJ5ZWFyIixEREQ6ImRheU9mWWVhciIsZToid2Vla2RheSIsRToiaXNvV2Vla2Rh
eSIsZ2c6IndlZWtZZWFyIixHRzoiaXNvV2Vla1llYXIifSwkYj17ZGF5b2Z5ZWFyOiJkYXlPZlll
YXIiLGlzb3dlZWtkYXk6Imlzb1dlZWtkYXkiLGlzb3dlZWs6Imlzb1dlZWsiLHdlZWt5ZWFyOiJ3
ZWVrWWVhciIsaXNvd2Vla3llYXI6Imlzb1dlZWtZZWFyIn0sX2I9e30sYWM9IkRERCB3IFcgTSBE
IGQiLnNwbGl0KCIgIiksYmM9Ik0gRCBIIGggbSBzIHcgVyIuc3BsaXQoIiAiKSxjYz17TTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLm1vbnRoKCkrMX0sTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LmxhbmcoKS5tb250aHNTaG9ydCh0aGlzLGEpfSxNTU1NOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlz
LmxhbmcoKS5tb250aHModGhpcyxhKX0sRDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUoKX0s
REREOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGF5T2ZZZWFyKCl9LGQ6ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy5kYXkoKX0sZGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMubGFuZygpLndlZWtkYXlz
TWluKHRoaXMsYSl9LGRkZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5sYW5nKCkud2Vla2RheXNT
aG9ydCh0aGlzLGEpfSxkZGRkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmxhbmcoKS53ZWVrZGF5
cyh0aGlzLGEpfSx3OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2VlaygpfSxXOmZ1bmN0aW9uKCl7
cmV0dXJuIHRoaXMuaXNvV2VlaygpfSxZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigp
JTEwMCwyKX0sWVlZWTpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpLDQpfSxZWVlZWTpm
dW5jdGlvbigpe3JldHVybiBsKHRoaXMueWVhcigpLDUpfSxZWVlZWVk6ZnVuY3Rpb24oKXt2YXIg
YT10aGlzLnllYXIoKSxiPWE+PTA/IisiOiItIjtyZXR1cm4gYitsKE1hdGguYWJzKGEpLDYpfSxn
ZzpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMud2Vla1llYXIoKSUxMDAsMil9LGdnZ2c6ZnVuY3Rp
b24oKXtyZXR1cm4gbCh0aGlzLndlZWtZZWFyKCksNCl9LGdnZ2dnOmZ1bmN0aW9uKCl7cmV0dXJu
IGwodGhpcy53ZWVrWWVhcigpLDUpfSxHRzpmdW5jdGlvbigpe3JldHVybiBsKHRoaXMuaXNvV2Vl
a1llYXIoKSUxMDAsMil9LEdHR0c6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLmlzb1dlZWtZZWFy
KCksNCl9LEdHR0dHOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5pc29XZWVrWWVhcigpLDUpfSxl
OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMud2Vla2RheSgpfSxFOmZ1bmN0aW9uKCl7cmV0dXJuIHRo
aXMuaXNvV2Vla2RheSgpfSxhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFuZygpLm1lcmlkaWVt
KHRoaXMuaG91cnMoKSx0aGlzLm1pbnV0ZXMoKSwhMCl9LEE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhp
cy5sYW5nKCkubWVyaWRpZW0odGhpcy5ob3VycygpLHRoaXMubWludXRlcygpLCExKX0sSDpmdW5j
dGlvbigpe3JldHVybiB0aGlzLmhvdXJzKCl9LGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ob3Vy
cygpJTEyfHwxMn0sbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1pbnV0ZXMoKX0sczpmdW5jdGlv
bigpe3JldHVybiB0aGlzLnNlY29uZHMoKX0sUzpmdW5jdGlvbigpe3JldHVybiB0KHRoaXMubWls
bGlzZWNvbmRzKCkvMTAwKX0sU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0KHRoaXMubWlsbGlzZWNv
bmRzKCkvMTApLDIpfSxTU1M6ZnVuY3Rpb24oKXtyZXR1cm4gbCh0aGlzLm1pbGxpc2Vjb25kcygp
LDMpfSxTU1NTOmZ1bmN0aW9uKCl7cmV0dXJuIGwodGhpcy5taWxsaXNlY29uZHMoKSwzKX0sWjpm
dW5jdGlvbigpe3ZhciBhPS10aGlzLnpvbmUoKSxiPSIrIjtyZXR1cm4gMD5hJiYoYT0tYSxiPSIt
IiksYitsKHQoYS82MCksMikrIjoiK2wodChhKSU2MCwyKX0sWlo6ZnVuY3Rpb24oKXt2YXIgYT0t
dGhpcy56b25lKCksYj0iKyI7cmV0dXJuIDA+YSYmKGE9LWEsYj0iLSIpLGIrbCh0KGEvNjApLDIp
K2wodChhKSU2MCwyKX0sejpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmVBYmJyKCl9LHp6OmZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuem9uZU5hbWUoKX0sWDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnVuaXgoKX0sUTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1YXJ0ZXIoKX19LGRjPVsibW9udGhz
IiwibW9udGhzU2hvcnQiLCJ3ZWVrZGF5cyIsIndlZWtkYXlzU2hvcnQiLCJ3ZWVrZGF5c01pbiJd
O2FjLmxlbmd0aDspa2I9YWMucG9wKCksY2Nba2IrIm8iXT1lKGNjW2tiXSxrYik7Zm9yKDtiYy5s
ZW5ndGg7KWtiPWJjLnBvcCgpLGNjW2tiK2tiXT1kKGNjW2tiXSwyKTtmb3IoY2MuRERERD1kKGNj
LkRERCwzKSxpKGYucHJvdG90eXBlLHtzZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYztmb3IoYyBpbiBh
KWI9YVtjXSwiZnVuY3Rpb24iPT10eXBlb2YgYj90aGlzW2NdPWI6dGhpc1siXyIrY109Yn0sX21v
bnRoczoiSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9T
ZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSxtb250aHM6ZnVu
Y3Rpb24oYSl7cmV0dXJuIHRoaXMuX21vbnRoc1thLm1vbnRoKCldfSxfbW9udGhzU2hvcnQ6Ikph
bl9GZWJfTWFyX0Fwcl9NYXlfSnVuX0p1bF9BdWdfU2VwX09jdF9Ob3ZfRGVjIi5zcGxpdCgiXyIp
LG1vbnRoc1Nob3J0OmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLl9tb250aHNTaG9ydFthLm1vbnRo
KCldfSxtb250aHNQYXJzZTpmdW5jdGlvbihhKXt2YXIgYixjLGQ7Zm9yKHRoaXMuX21vbnRoc1Bh
cnNlfHwodGhpcy5fbW9udGhzUGFyc2U9W10pLGI9MDsxMj5iO2IrKylpZih0aGlzLl9tb250aHNQ
YXJzZVtiXXx8KGM9aWIudXRjKFsyZTMsYl0pLGQ9Il4iK3RoaXMubW9udGhzKGMsIiIpKyJ8XiIr
dGhpcy5tb250aHNTaG9ydChjLCIiKSx0aGlzLl9tb250aHNQYXJzZVtiXT1uZXcgUmVnRXhwKGQu
cmVwbGFjZSgiLiIsIiIpLCJpIikpLHRoaXMuX21vbnRoc1BhcnNlW2JdLnRlc3QoYSkpcmV0dXJu
IGJ9LF93ZWVrZGF5czoiU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9G
cmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIiksd2Vla2RheXM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo
aXMuX3dlZWtkYXlzW2EuZGF5KCldfSxfd2Vla2RheXNTaG9ydDoiU3VuX01vbl9UdWVfV2VkX1Ro
dV9GcmlfU2F0Ii5zcGxpdCgiXyIpLHdlZWtkYXlzU2hvcnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRo
aXMuX3dlZWtkYXlzU2hvcnRbYS5kYXkoKV19LF93ZWVrZGF5c01pbjoiU3VfTW9fVHVfV2VfVGhf
RnJfU2EiLnNwbGl0KCJfIiksd2Vla2RheXNNaW46ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX3dl
ZWtkYXlzTWluW2EuZGF5KCldfSx3ZWVrZGF5c1BhcnNlOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtm
b3IodGhpcy5fd2Vla2RheXNQYXJzZXx8KHRoaXMuX3dlZWtkYXlzUGFyc2U9W10pLGI9MDs3PmI7
YisrKWlmKHRoaXMuX3dlZWtkYXlzUGFyc2VbYl18fChjPWliKFsyZTMsMV0pLmRheShiKSxkPSJe
Iit0aGlzLndlZWtkYXlzKGMsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KGMsIiIpKyJ8XiIr
dGhpcy53ZWVrZGF5c01pbihjLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW2JdPW5ldyBSZWdFeHAo
ZC5yZXBsYWNlKCIuIiwiIiksImkiKSksdGhpcy5fd2Vla2RheXNQYXJzZVtiXS50ZXN0KGEpKXJl
dHVybiBifSxfbG9uZ0RhdGVGb3JtYXQ6e0xUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJN
TU1NIEQgWVlZWSIsTExMOiJNTU1NIEQgWVlZWSBMVCIsTExMTDoiZGRkZCwgTU1NTSBEIFlZWVkg
TFQifSxsb25nRGF0ZUZvcm1hdDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl9sb25nRGF0ZUZvcm1h
dFthXTtyZXR1cm4hYiYmdGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXSYmKGI9
dGhpcy5fbG9uZ0RhdGVGb3JtYXRbYS50b1VwcGVyQ2FzZSgpXS5yZXBsYWNlKC9NTU1NfE1NfERE
fGRkZGQvZyxmdW5jdGlvbihhKXtyZXR1cm4gYS5zbGljZSgxKX0pLHRoaXMuX2xvbmdEYXRlRm9y
bWF0W2FdPWIpLGJ9LGlzUE06ZnVuY3Rpb24oYSl7cmV0dXJuInAiPT09KGErIiIpLnRvTG93ZXJD
YXNlKCkuY2hhckF0KDApfSxfbWVyaWRpZW1QYXJzZTovW2FwXVwuP20/XC4/L2ksbWVyaWRpZW06
ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBhPjExP2M/InBtIjoiUE0iOmM/ImFtIjoiQU0ifSxfY2Fs
ZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQi
LG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0
V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxjYWxlbmRhcjpmdW5jdGlv
bihhLGIpe3ZhciBjPXRoaXMuX2NhbGVuZGFyW2FdO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBj
P2MuYXBwbHkoYik6Y30sX3JlbGF0aXZlVGltZTp7ZnV0dXJlOiJpbiAlcyIscGFzdDoiJXMgYWdv
IixzOiJhIGZldyBzZWNvbmRzIixtOiJhIG1pbnV0ZSIsbW06IiVkIG1pbnV0ZXMiLGg6ImFuIGhv
dXIiLGhoOiIlZCBob3VycyIsZDoiYSBkYXkiLGRkOiIlZCBkYXlzIixNOiJhIG1vbnRoIixNTToi
JWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LHJlbGF0aXZlVGltZTpmdW5jdGlv
bihhLGIsYyxkKXt2YXIgZT10aGlzLl9yZWxhdGl2ZVRpbWVbY107cmV0dXJuImZ1bmN0aW9uIj09
dHlwZW9mIGU/ZShhLGIsYyxkKTplLnJlcGxhY2UoLyVkL2ksYSl9LHBhc3RGdXR1cmU6ZnVuY3Rp
b24oYSxiKXt2YXIgYz10aGlzLl9yZWxhdGl2ZVRpbWVbYT4wPyJmdXR1cmUiOiJwYXN0Il07cmV0
dXJuImZ1bmN0aW9uIj09dHlwZW9mIGM/YyhiKTpjLnJlcGxhY2UoLyVzL2ksYil9LG9yZGluYWw6
ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGEpfSxfb3JkaW5h
bDoiJWQiLHByZXBhcnNlOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxwb3N0Zm9ybWF0OmZ1bmN0aW9u
KGEpe3JldHVybiBhfSx3ZWVrOmZ1bmN0aW9uKGEpe3JldHVybiAkKGEsdGhpcy5fd2Vlay5kb3cs
dGhpcy5fd2Vlay5kb3kpLndlZWt9LF93ZWVrOntkb3c6MCxkb3k6Nn0sX2ludmFsaWREYXRlOiJJ
bnZhbGlkIGRhdGUiLGludmFsaWREYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2ludmFsaWRE
YXRlfX0pLGliPWZ1bmN0aW9uKGMsZCxlLGYpe3ZhciBnO3JldHVybiJib29sZWFuIj09dHlwZW9m
IGUmJihmPWUsZT1hKSxnPXt9LGcuX2lzQU1vbWVudE9iamVjdD0hMCxnLl9pPWMsZy5fZj1kLGcu
X2w9ZSxnLl9zdHJpY3Q9ZixnLl9pc1VUQz0hMSxnLl9wZj1iKCksYWIoZyl9LGliLnN1cHByZXNz
RGVwcmVjYXRpb25XYXJuaW5ncz0hMSxpYi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjaz1jKCJtb21l
bnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZS4gVGhpcyBpcyBkaXNjb3VyYWdl
ZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHVwY29taW5nIG1ham9yIHJlbGVhc2UuIFBsZWFzZSBy
ZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vbW9tZW50L21vbWVudC9pc3N1ZXMvMTQwNyBmb3Ig
bW9yZSBpbmZvLiIsZnVuY3Rpb24oYSl7YS5fZD1uZXcgRGF0ZShhLl9pKX0pLGliLnV0Yz1mdW5j
dGlvbihjLGQsZSxmKXt2YXIgZztyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlJiYoZj1lLGU9YSks
Zz17fSxnLl9pc0FNb21lbnRPYmplY3Q9ITAsZy5fdXNlVVRDPSEwLGcuX2lzVVRDPSEwLGcuX2w9
ZSxnLl9pPWMsZy5fZj1kLGcuX3N0cmljdD1mLGcuX3BmPWIoKSxhYihnKS51dGMoKX0saWIudW5p
eD1mdW5jdGlvbihhKXtyZXR1cm4gaWIoMWUzKmEpfSxpYi5kdXJhdGlvbj1mdW5jdGlvbihhLGIp
e3ZhciBjLGQsZSxmPWEsZz1udWxsO3JldHVybiBpYi5pc0R1cmF0aW9uKGEpP2Y9e21zOmEuX21p
bGxpc2Vjb25kcyxkOmEuX2RheXMsTTphLl9tb250aHN9OiJudW1iZXIiPT10eXBlb2YgYT8oZj17
fSxiP2ZbYl09YTpmLm1pbGxpc2Vjb25kcz1hKTooZz16Yi5leGVjKGEpKT8oYz0iLSI9PT1nWzFd
Py0xOjEsZj17eTowLGQ6dChnW3FiXSkqYyxoOnQoZ1tyYl0pKmMsbTp0KGdbc2JdKSpjLHM6dChn
W3RiXSkqYyxtczp0KGdbdWJdKSpjfSk6KGc9QWIuZXhlYyhhKSkmJihjPSItIj09PWdbMV0/LTE6
MSxlPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJnBhcnNlRmxvYXQoYS5yZXBsYWNlKCIsIiwiLiIpKTty
ZXR1cm4oaXNOYU4oYik/MDpiKSpjfSxmPXt5OmUoZ1syXSksTTplKGdbM10pLGQ6ZShnWzRdKSxo
OmUoZ1s1XSksbTplKGdbNl0pLHM6ZShnWzddKSx3OmUoZ1s4XSl9KSxkPW5ldyBoKGYpLGliLmlz
RHVyYXRpb24oYSkmJmEuaGFzT3duUHJvcGVydHkoIl9sYW5nIikmJihkLl9sYW5nPWEuX2xhbmcp
LGR9LGliLnZlcnNpb249bGIsaWIuZGVmYXVsdEZvcm1hdD1VYixpYi5tb21lbnRQcm9wZXJ0aWVz
PXdiLGliLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe30saWIubGFuZz1mdW5jdGlvbihhLGIpe3Zh
ciBjO3JldHVybiBhPyhiP0MoQShhKSxiKTpudWxsPT09Yj8oRChhKSxhPSJlbiIpOnZiW2FdfHxF
KGEpLGM9aWIuZHVyYXRpb24uZm4uX2xhbmc9aWIuZm4uX2xhbmc9RShhKSxjLl9hYmJyKTppYi5m
bi5fbGFuZy5fYWJicn0saWIubGFuZ0RhdGE9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJmEuX2xhbmcm
JmEuX2xhbmcuX2FiYnImJihhPWEuX2xhbmcuX2FiYnIpLEUoYSl9LGliLmlzTW9tZW50PWZ1bmN0
aW9uKGEpe3JldHVybiBhIGluc3RhbmNlb2YgZ3x8bnVsbCE9YSYmYS5oYXNPd25Qcm9wZXJ0eSgi
X2lzQU1vbWVudE9iamVjdCIpfSxpYi5pc0R1cmF0aW9uPWZ1bmN0aW9uKGEpe3JldHVybiBhIGlu
c3RhbmNlb2YgaH0sa2I9ZGMubGVuZ3RoLTE7a2I+PTA7LS1rYilzKGRjW2tiXSk7aWIubm9ybWFs
aXplVW5pdHM9ZnVuY3Rpb24oYSl7cmV0dXJuIHEoYSl9LGliLmludmFsaWQ9ZnVuY3Rpb24oYSl7
dmFyIGI9aWIudXRjKDAvMCk7cmV0dXJuIG51bGwhPWE/aShiLl9wZixhKTpiLl9wZi51c2VySW52
YWxpZGF0ZWQ9ITAsYn0saWIucGFyc2Vab25lPWZ1bmN0aW9uKCl7cmV0dXJuIGliLmFwcGx5KG51
bGwsYXJndW1lbnRzKS5wYXJzZVpvbmUoKX0saWIucGFyc2VUd29EaWdpdFllYXI9ZnVuY3Rpb24o
YSl7cmV0dXJuIHQoYSkrKHQoYSk+Njg/MTkwMDoyZTMpfSxpKGliLmZuPWcucHJvdG90eXBlLHtj
bG9uZTpmdW5jdGlvbigpe3JldHVybiBpYih0aGlzKX0sdmFsdWVPZjpmdW5jdGlvbigpe3JldHVy
bit0aGlzLl9kKzZlNCoodGhpcy5fb2Zmc2V0fHwwKX0sdW5peDpmdW5jdGlvbigpe3JldHVybiBN
YXRoLmZsb29yKCt0aGlzLzFlMyl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xv
bmUoKS5sYW5nKCJlbiIpLmZvcm1hdCgiZGRkIE1NTSBERCBZWVlZIEhIOm1tOnNzIFtHTVRdWloi
KX0sdG9EYXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX29mZnNldD9uZXcgRGF0ZSgrdGhpcyk6
dGhpcy5fZH0sdG9JU09TdHJpbmc6ZnVuY3Rpb24oKXt2YXIgYT1pYih0aGlzKS51dGMoKTtyZXR1
cm4gMDxhLnllYXIoKSYmYS55ZWFyKCk8PTk5OTk/SChhLCJZWVlZLU1NLUREW1RdSEg6bW06c3Mu
U1NTW1pdIik6SChhLCJZWVlZWVktTU0tRERbVF1ISDptbTpzcy5TU1NbWl0iKX0sdG9BcnJheTpm
dW5jdGlvbigpe3ZhciBhPXRoaXM7cmV0dXJuW2EueWVhcigpLGEubW9udGgoKSxhLmRhdGUoKSxh
LmhvdXJzKCksYS5taW51dGVzKCksYS5zZWNvbmRzKCksYS5taWxsaXNlY29uZHMoKV19LGlzVmFs
aWQ6ZnVuY3Rpb24oKXtyZXR1cm4geih0aGlzKX0saXNEU1RTaGlmdGVkOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX2E/dGhpcy5pc1ZhbGlkKCkmJnAodGhpcy5fYSwodGhpcy5faXNVVEM/aWIudXRj
KHRoaXMuX2EpOmliKHRoaXMuX2EpKS50b0FycmF5KCkpPjA6ITF9LHBhcnNpbmdGbGFnczpmdW5j
dGlvbigpe3JldHVybiBpKHt9LHRoaXMuX3BmKX0saW52YWxpZEF0OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMuX3BmLm92ZXJmbG93fSx1dGM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy56b25lKDApfSxs
b2NhbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnpvbmUoMCksdGhpcy5faXNVVEM9ITEsdGhpc30s
Zm9ybWF0OmZ1bmN0aW9uKGEpe3ZhciBiPUgodGhpcyxhfHxpYi5kZWZhdWx0Rm9ybWF0KTtyZXR1
cm4gdGhpcy5sYW5nKCkucG9zdGZvcm1hdChiKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM7cmV0
dXJuIGM9InN0cmluZyI9PXR5cGVvZiBhP2liLmR1cmF0aW9uKCtiLGEpOmliLmR1cmF0aW9uKGEs
YiksbSh0aGlzLGMsMSksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYztyZXR1cm4g
Yz0ic3RyaW5nIj09dHlwZW9mIGE/aWIuZHVyYXRpb24oK2IsYSk6aWIuZHVyYXRpb24oYSxiKSxt
KHRoaXMsYywtMSksdGhpc30sZGlmZjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPUIoYSx0aGlz
KSxnPTZlNCoodGhpcy56b25lKCktZi56b25lKCkpO3JldHVybiBiPXEoYiksInllYXIiPT09Ynx8
Im1vbnRoIj09PWI/KGQ9NDMyZTUqKHRoaXMuZGF5c0luTW9udGgoKStmLmRheXNJbk1vbnRoKCkp
LGU9MTIqKHRoaXMueWVhcigpLWYueWVhcigpKSsodGhpcy5tb250aCgpLWYubW9udGgoKSksZSs9
KHRoaXMtaWIodGhpcykuc3RhcnRPZigibW9udGgiKS0oZi1pYihmKS5zdGFydE9mKCJtb250aCIp
KSkvZCxlLT02ZTQqKHRoaXMuem9uZSgpLWliKHRoaXMpLnN0YXJ0T2YoIm1vbnRoIikuem9uZSgp
LShmLnpvbmUoKS1pYihmKS5zdGFydE9mKCJtb250aCIpLnpvbmUoKSkpL2QsInllYXIiPT09YiYm
KGUvPTEyKSk6KGQ9dGhpcy1mLGU9InNlY29uZCI9PT1iP2QvMWUzOiJtaW51dGUiPT09Yj9kLzZl
NDoiaG91ciI9PT1iP2QvMzZlNToiZGF5Ij09PWI/KGQtZykvODY0ZTU6IndlZWsiPT09Yj8oZC1n
KS82MDQ4ZTU6ZCksYz9lOmsoZSl9LGZyb206ZnVuY3Rpb24oYSxiKXtyZXR1cm4gaWIuZHVyYXRp
b24odGhpcy5kaWZmKGEpKS5sYW5nKHRoaXMubGFuZygpLl9hYmJyKS5odW1hbml6ZSghYil9LGZy
b21Ob3c6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZnJvbShpYigpLGEpfSxjYWxlbmRhcjpmdW5j
dGlvbigpe3ZhciBhPUIoaWIoKSx0aGlzKS5zdGFydE9mKCJkYXkiKSxiPXRoaXMuZGlmZihhLCJk
YXlzIiwhMCksYz0tNj5iPyJzYW1lRWxzZSI6LTE+Yj8ibGFzdFdlZWsiOjA+Yj8ibGFzdERheSI6
MT5iPyJzYW1lRGF5IjoyPmI/Im5leHREYXkiOjc+Yj8ibmV4dFdlZWsiOiJzYW1lRWxzZSI7cmV0
dXJuIHRoaXMuZm9ybWF0KHRoaXMubGFuZygpLmNhbGVuZGFyKGMsdGhpcykpfSxpc0xlYXBZZWFy
OmZ1bmN0aW9uKCl7cmV0dXJuIHgodGhpcy55ZWFyKCkpfSxpc0RTVDpmdW5jdGlvbigpe3JldHVy
biB0aGlzLnpvbmUoKTx0aGlzLmNsb25lKCkubW9udGgoMCkuem9uZSgpfHx0aGlzLnpvbmUoKTx0
aGlzLmNsb25lKCkubW9udGgoNSkuem9uZSgpfSxkYXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5f
aXNVVEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBudWxsIT1h
PyhhPVgoYSx0aGlzLmxhbmcoKSksdGhpcy5hZGQoe2Q6YS1ifSkpOmJ9LG1vbnRoOmViKCJNb250
aCIsITApLHN0YXJ0T2Y6ZnVuY3Rpb24oYSl7c3dpdGNoKGE9cShhKSl7Y2FzZSJ5ZWFyIjp0aGlz
Lm1vbnRoKDApO2Nhc2UicXVhcnRlciI6Y2FzZSJtb250aCI6dGhpcy5kYXRlKDEpO2Nhc2Uid2Vl
ayI6Y2FzZSJpc29XZWVrIjpjYXNlImRheSI6dGhpcy5ob3VycygwKTtjYXNlImhvdXIiOnRoaXMu
bWludXRlcygwKTtjYXNlIm1pbnV0ZSI6dGhpcy5zZWNvbmRzKDApO2Nhc2Uic2Vjb25kIjp0aGlz
Lm1pbGxpc2Vjb25kcygwKX1yZXR1cm4id2VlayI9PT1hP3RoaXMud2Vla2RheSgwKToiaXNvV2Vl
ayI9PT1hJiZ0aGlzLmlzb1dlZWtkYXkoMSksInF1YXJ0ZXIiPT09YSYmdGhpcy5tb250aCgzKk1h
dGguZmxvb3IodGhpcy5tb250aCgpLzMpKSx0aGlzfSxlbmRPZjpmdW5jdGlvbihhKXtyZXR1cm4g
YT1xKGEpLHRoaXMuc3RhcnRPZihhKS5hZGQoImlzb1dlZWsiPT09YT8id2VlayI6YSwxKS5zdWJ0
cmFjdCgibXMiLDEpfSxpc0FmdGVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIh
PXR5cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik+K2liKGEp
LnN0YXJ0T2YoYil9LGlzQmVmb3JlOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9InVuZGVmaW5lZCIh
PXR5cGVvZiBiP2I6Im1pbGxpc2Vjb25kIiwrdGhpcy5jbG9uZSgpLnN0YXJ0T2YoYik8K2liKGEp
LnN0YXJ0T2YoYil9LGlzU2FtZTpmdW5jdGlvbihhLGIpe3JldHVybiBiPWJ8fCJtcyIsK3RoaXMu
Y2xvbmUoKS5zdGFydE9mKGIpPT09K0IoYSx0aGlzKS5zdGFydE9mKGIpfSxtaW46ZnVuY3Rpb24o
YSl7cmV0dXJuIGE9aWIuYXBwbHkobnVsbCxhcmd1bWVudHMpLHRoaXM+YT90aGlzOmF9LG1heDpm
dW5jdGlvbihhKXtyZXR1cm4gYT1pYi5hcHBseShudWxsLGFyZ3VtZW50cyksYT50aGlzP3RoaXM6
YX0sem9uZTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuX29mZnNldHx8MDtyZXR1cm4gbnVsbD09
YT90aGlzLl9pc1VUQz9jOnRoaXMuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKTooInN0cmluZyI9PXR5
cGVvZiBhJiYoYT1LKGEpKSxNYXRoLmFicyhhKTwxNiYmKGE9NjAqYSksdGhpcy5fb2Zmc2V0PWEs
dGhpcy5faXNVVEM9ITAsYyE9PWEmJighYnx8dGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz9tKHRoaXMs
aWIuZHVyYXRpb24oYy1hLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMu
X2NoYW5nZUluUHJvZ3Jlc3M9ITAsaWIudXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMuX2NoYW5n
ZUluUHJvZ3Jlc3M9bnVsbCkpLHRoaXMpfSx6b25lQWJicjpmdW5jdGlvbigpe3JldHVybiB0aGlz
Ll9pc1VUQz8iVVRDIjoiIn0sem9uZU5hbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNVVEM/
IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIjoiIn0scGFyc2Vab25lOmZ1bmN0aW9uKCl7cmV0
dXJuIHRoaXMuX3R6bT90aGlzLnpvbmUodGhpcy5fdHptKToic3RyaW5nIj09dHlwZW9mIHRoaXMu
X2kmJnRoaXMuem9uZSh0aGlzLl9pKSx0aGlzfSxoYXNBbGlnbmVkSG91ck9mZnNldDpmdW5jdGlv
bihhKXtyZXR1cm4gYT1hP2liKGEpLnpvbmUoKTowLCh0aGlzLnpvbmUoKS1hKSU2MD09PTB9LGRh
eXNJbk1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHUodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0s
ZGF5T2ZZZWFyOmZ1bmN0aW9uKGEpe3ZhciBiPW5iKChpYih0aGlzKS5zdGFydE9mKCJkYXkiKS1p
Yih0aGlzKS5zdGFydE9mKCJ5ZWFyIikpLzg2NGU1KSsxO3JldHVybiBudWxsPT1hP2I6dGhpcy5h
ZGQoImQiLGEtYil9LHF1YXJ0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/TWF0aC5jZWls
KCh0aGlzLm1vbnRoKCkrMSkvMyk6dGhpcy5tb250aCgzKihhLTEpK3RoaXMubW9udGgoKSUzKX0s
d2Vla1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLHRoaXMubGFuZygpLl93ZWVrLmRvdyx0
aGlzLmxhbmcoKS5fd2Vlay5kb3kpLnllYXI7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgieSIs
YS1iKX0saXNvV2Vla1llYXI6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkueWVhcjtyZXR1
cm4gbnVsbD09YT9iOnRoaXMuYWRkKCJ5IixhLWIpfSx3ZWVrOmZ1bmN0aW9uKGEpe3ZhciBiPXRo
aXMubGFuZygpLndlZWsodGhpcyk7cmV0dXJuIG51bGw9PWE/Yjp0aGlzLmFkZCgiZCIsNyooYS1i
KSl9LGlzb1dlZWs6ZnVuY3Rpb24oYSl7dmFyIGI9JCh0aGlzLDEsNCkud2VlaztyZXR1cm4gbnVs
bD09YT9iOnRoaXMuYWRkKCJkIiw3KihhLWIpKX0sd2Vla2RheTpmdW5jdGlvbihhKXt2YXIgYj0o
dGhpcy5kYXkoKSs3LXRoaXMubGFuZygpLl93ZWVrLmRvdyklNztyZXR1cm4gbnVsbD09YT9iOnRo
aXMuYWRkKCJkIixhLWIpfSxpc29XZWVrZGF5OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsPT1hP3Ro
aXMuZGF5KCl8fDc6dGhpcy5kYXkodGhpcy5kYXkoKSU3P2E6YS03KX0saXNvV2Vla3NJblllYXI6
ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLnllYXIoKSwxLDQpfSx3ZWVrc0luWWVhcjpmdW5jdGlv
bigpe3ZhciBhPXRoaXMuX2xhbmcuX3dlZWs7cmV0dXJuIHYodGhpcy55ZWFyKCksYS5kb3csYS5k
b3kpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlzW2FdKCl9LHNldDpmdW5jdGlv
bihhLGIpe3JldHVybiBhPXEoYSksImZ1bmN0aW9uIj09dHlwZW9mIHRoaXNbYV0mJnRoaXNbYV0o
YiksdGhpc30sbGFuZzpmdW5jdGlvbihiKXtyZXR1cm4gYj09PWE/dGhpcy5fbGFuZzoodGhpcy5f
bGFuZz1FKGIpLHRoaXMpfX0pLGliLmZuLm1pbGxpc2Vjb25kPWliLmZuLm1pbGxpc2Vjb25kcz1l
YigiTWlsbGlzZWNvbmRzIiwhMSksaWIuZm4uc2Vjb25kPWliLmZuLnNlY29uZHM9ZWIoIlNlY29u
ZHMiLCExKSxpYi5mbi5taW51dGU9aWIuZm4ubWludXRlcz1lYigiTWludXRlcyIsITEpLGliLmZu
LmhvdXI9aWIuZm4uaG91cnM9ZWIoIkhvdXJzIiwhMCksaWIuZm4uZGF0ZT1lYigiRGF0ZSIsITAp
LGliLmZuLmRhdGVzPWMoImRhdGVzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSBkYXRlIGlu
c3RlYWQuIixlYigiRGF0ZSIsITApKSxpYi5mbi55ZWFyPWViKCJGdWxsWWVhciIsITApLGliLmZu
LnllYXJzPWMoInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQu
IixlYigiRnVsbFllYXIiLCEwKSksaWIuZm4uZGF5cz1pYi5mbi5kYXksaWIuZm4ubW9udGhzPWli
LmZuLm1vbnRoLGliLmZuLndlZWtzPWliLmZuLndlZWssaWIuZm4uaXNvV2Vla3M9aWIuZm4uaXNv
V2VlayxpYi5mbi5xdWFydGVycz1pYi5mbi5xdWFydGVyLGliLmZuLnRvSlNPTj1pYi5mbi50b0lT
T1N0cmluZyxpKGliLmR1cmF0aW9uLmZuPWgucHJvdG90eXBlLHtfYnViYmxlOmZ1bmN0aW9uKCl7
dmFyIGEsYixjLGQsZT10aGlzLl9taWxsaXNlY29uZHMsZj10aGlzLl9kYXlzLGc9dGhpcy5fbW9u
dGhzLGg9dGhpcy5fZGF0YTtoLm1pbGxpc2Vjb25kcz1lJTFlMyxhPWsoZS8xZTMpLGguc2Vjb25k
cz1hJTYwLGI9ayhhLzYwKSxoLm1pbnV0ZXM9YiU2MCxjPWsoYi82MCksaC5ob3Vycz1jJTI0LGYr
PWsoYy8yNCksaC5kYXlzPWYlMzAsZys9ayhmLzMwKSxoLm1vbnRocz1nJTEyLGQ9ayhnLzEyKSxo
LnllYXJzPWR9LHdlZWtzOmZ1bmN0aW9uKCl7cmV0dXJuIGsodGhpcy5kYXlzKCkvNyl9LHZhbHVl
T2Y6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMr
dGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KnQodGhpcy5fbW9udGhzLzEyKX0saHVtYW5p
emU6ZnVuY3Rpb24oYSl7dmFyIGI9K3RoaXMsYz1aKGIsIWEsdGhpcy5sYW5nKCkpO3JldHVybiBh
JiYoYz10aGlzLmxhbmcoKS5wYXN0RnV0dXJlKGIsYykpLHRoaXMubGFuZygpLnBvc3Rmb3JtYXQo
Yyl9LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPWliLmR1cmF0aW9uKGEsYik7cmV0dXJuIHRoaXMu
X21pbGxpc2Vjb25kcys9Yy5fbWlsbGlzZWNvbmRzLHRoaXMuX2RheXMrPWMuX2RheXMsdGhpcy5f
bW9udGhzKz1jLl9tb250aHMsdGhpcy5fYnViYmxlKCksdGhpc30sc3VidHJhY3Q6ZnVuY3Rpb24o
YSxiKXt2YXIgYz1pYi5kdXJhdGlvbihhLGIpO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHMtPWMu
X21pbGxpc2Vjb25kcyx0aGlzLl9kYXlzLT1jLl9kYXlzLHRoaXMuX21vbnRocy09Yy5fbW9udGhz
LHRoaXMuX2J1YmJsZSgpLHRoaXN9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gYT1xKGEpLHRoaXNb
YS50b0xvd2VyQ2FzZSgpKyJzIl0oKX0sYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9cShhKSx0aGlz
WyJhcyIrYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSthLnNsaWNlKDEpKyJzIl0oKX0sbGFuZzpp
Yi5mbi5sYW5nLHRvSXNvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9TWF0aC5hYnModGhpcy55ZWFy
cygpKSxiPU1hdGguYWJzKHRoaXMubW9udGhzKCkpLGM9TWF0aC5hYnModGhpcy5kYXlzKCkpLGQ9
TWF0aC5hYnModGhpcy5ob3VycygpKSxlPU1hdGguYWJzKHRoaXMubWludXRlcygpKSxmPU1hdGgu
YWJzKHRoaXMuc2Vjb25kcygpK3RoaXMubWlsbGlzZWNvbmRzKCkvMWUzKTtyZXR1cm4gdGhpcy5h
c1NlY29uZHMoKT8odGhpcy5hc1NlY29uZHMoKTwwPyItIjoiIikrIlAiKyhhP2ErIlkiOiIiKSso
Yj9iKyJNIjoiIikrKGM/YysiRCI6IiIpKyhkfHxlfHxmPyJUIjoiIikrKGQ/ZCsiSCI6IiIpKyhl
P2UrIk0iOiIiKSsoZj9mKyJTIjoiIik6IlAwRCJ9fSk7Zm9yKGtiIGluIFliKVliLmhhc093blBy
b3BlcnR5KGtiKSYmKGdiKGtiLFliW2tiXSksZmIoa2IudG9Mb3dlckNhc2UoKSkpO2diKCJXZWVr
cyIsNjA0OGU1KSxpYi5kdXJhdGlvbi5mbi5hc01vbnRocz1mdW5jdGlvbigpe3JldHVybigrdGhp
cy0zMTUzNmU2KnRoaXMueWVhcnMoKSkvMjU5MmU2KzEyKnRoaXMueWVhcnMoKX0saWIubGFuZygi
ZW4iLHtvcmRpbmFsOmZ1bmN0aW9uKGEpe3ZhciBiPWElMTAsYz0xPT09dChhJTEwMC8xMCk/InRo
IjoxPT09Yj8ic3QiOjI9PT1iPyJuZCI6Mz09PWI/InJkIjoidGgiO3JldHVybiBhK2N9fSkseGI/
bW9kdWxlLmV4cG9ydHM9aWI6ImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD8o
ZGVmaW5lKCJtb21lbnQiLGZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYy5jb25maWcmJmMuY29uZmln
KCkmJmMuY29uZmlnKCkubm9HbG9iYWw9PT0hMCYmKG1iLm1vbWVudD1qYiksaWJ9KSxoYighMCkp
OmhiKCl9KS5jYWxsKHRoaXMpOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKClByb3BlcnR5
IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9FeHRlcm5hbC9tb21lbnQubWluLmpzCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAg
IyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9CaWdTdXIucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZp
bGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQmlnU3VyLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQmln
U3VyQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0JpZ1N1ckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NSRURJVAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0NSRURJVAkocmV2aXNpb24gMjY5MDQyKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9DUkVESVQJKG5vbmV4aXN0ZW50KQpAQCAtMSw2ICswLDAgQEAKLVRo
ZSBUdXggaW1hZ2VzIGluIHRoaXMgZGlyZWN0b3J5IGFyZSBkb3dubG9hZGVkIGZyb20gV2lraW1l
ZGlhIENvbW1vbnM6Ci0KLWh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZpbGU6Q2xhc3Np
Y19mbGF0X2xvb2tfM0Quc3ZnCi0KLUxpY2Vuc2U6ICJUaGUgY29weXJpZ2h0IGhvbGRlciBvZiB0
aGlzIGZpbGUgYWxsb3dzIGFueW9uZSB0byB1c2UgaXQgZm9yIGFueSBwdXJwb3NlLAotcHJvdmlk
ZWQgdGhhdCB5b3UgYWNrbm93bGVkZ2UgbGV3aW5nQGlzYy50YW11LmVkdSBhbmQgVGhlIEdJTVAg
aWYgc29tZW9uZSBhc2tzLiIKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvQ2F0YWxpbmEucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvQ2F0YWxpbmEucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9DYXRhbGluYUAyeC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9D
YXRhbGluYUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0VsQ2FwaXRhbi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxh
eTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0
aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9FbENhcGl0YW4ucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi1hcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9FbENhcGl0YW5AMngucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvRWxDYXBpdGFuQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMv
R1RLLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0dUSy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0dUS0AyeC5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9HVEtA
MngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1p
bWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9IaWdoU2llcnJhLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hpZ2hTaWVycmEucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9I
aWdoU2llcnJhQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0hpZ2hTaWVycmFAMngucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMC5w
bmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlw
ZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9JT1MxMC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEwQDJ4LnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
aW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEw
QDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
aW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvSU9TMTBTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6
IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcK
ClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTBTaW11bGF0b3Iu
cG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFn
ZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9JT1MxMFNpbXVsYXRvckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMFNpbXVsYXRvckAy
eC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWlt
YWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvSW1hZ2VzL0lPUzExLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExLnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTFAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvSU9TMTFAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0
eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMVNpbXVsYXRvci5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9JT1MxMVNpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMj
IC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzExU2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10
eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2Vz
L0lPUzExU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUK
IyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTIucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTIucG5n
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9w
bmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1MxMkAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQg
YXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hh
bmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMkAyeC5wbmcKX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxl
dGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEyU2ltdWxh
dG9yLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFy
eSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEyU2ltdWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTJTaW11bGF0b3JA
MngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvSU9TMTJTaW11bGF0b3JAMngucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxMy5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9JT1MxMy5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0x
ICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEzQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNw
bGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2Uv
cG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzEzQDJ4LnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2Uv
cG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9J
bWFnZXMvSU9TMTNTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTNTaW11bGF0b3IucG5nCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9JT1MxM1NpbXVsYXRvckAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxM1NpbXVsYXRvckAyeC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3Bu
ZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL0lPUzE0LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBh
IGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0LnBuZwpfX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TMTRAMngucG5nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjpt
aW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9J
bWFnZXMvSU9TMTRAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAt
MSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1MxNFNpbXVsYXRvci5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1Mx
NFNpbXVsYXRvci5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5v
dCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0g
aW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPUzE0
U2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEg
KzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1M5LnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9T
OUAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5h
cnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1M5QDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOVNpbXVsYXRvci5wbmcKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3Zu
Om1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L0ltYWdlcy9JT1M5U2ltdWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TOVNpbXVsYXRvckAyeC5wbmcKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1p
bWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0lt
YWdlcy9JT1M5U2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlLnBuZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL0lPU0RldmljZS5wbmcJKHJldmlzaW9uIDI2OTA0MikKKysr
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlLnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDMw
ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAR+klEQVR4AezS
QQEAEAAEMOLo/7l2JwM8twybbQfcEgiBEAiBEAgEQiAEQiAQCIEQCIFAIARCIAQCgRAIgf5Isja7
5QAjZxTE8XnferfG2XebBrWD2lbs2nYbJ8X5Lqxj53wX1LZtY8OzFm/anffdZBXW7c6HyfvPLP+/
zPs8bm8fr88jfD4f/ImhaRplIcQzp9P52O12w8uXLyEmJka4XC4cOXIkpKWlRQH6lXHy5KnB2dnZ
60+ePDHLbrN3N5qM8GMD9SwA6a40BKEUZIX7/KtIgYjQ3u4Gj8ddl5KUUrVp86ai3jG9b9fU1Ih7
9+7BqlWr8NsVBehXRUF+4aJt27blJyTGdcvKcoLD4QCj0QiaZtCdRjrJUnafJF1HwDC/gxtRIAgM
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
hQAfAuEJkDJw5DcQiXKI5I/tB6DYC09hBUuXLmXGjBl0Oh2+/vprkAgxoCQZ80NP1eQOIZaaeUKW
/AnJACUpnlUAHWyVk+UXeVB3kUIDckKSy5JPpclxism7RWGMjIyybds25s6b46AtW7aMl19+GZVi
MoSEGIgII6vFoZTlP7NMQ2YA1KxWVeMPtk455ZQXFy5c+FFZlkSA3xuuQUSkThoibyUmKpt4KAzD
DFauXMG0ep1Ou0Or3abVajE+PrE3RZLACi3LTK3SUOJpqiNkApI1b2fCnKVBOfihAugga+PGje0z
Tz7z4RCCNwB67FPFJJBcBFJAfh2FN1oSr91dPeLuVYyNjdNoNmi3WnvXVqtNo9FgbHQUSUQfm5GM
ETJ5GM20nQotZU3TvoKSB2bPnv3C7p/jyQotoEOgCy+58JGJ8YnvYggOgXmuJk9qFJU5t+5/WjHz
7kn9nUW306HdbtPpdunuXvu9Hr09x71e8hwoMwQSSlu9HSD5AuJ31bvg/Avu3P1z9CuADoGOP+n4
d3fu3Hl9CGG4e03dxsDHSVs21z0pc6TdDcivCREV+eHHHxgMh7vXPoN+n/7udTAY8NNPPxMk/27e
r5Itfu2vtHnz5juvufaa5zgKLWWSOBr1wYcfjJ579rlXvP7G6zebMcOKGsYBWVr7wQwkP8Fy4/Gk
ddFkWAHTZ8xkYnzc25yGgwHdXtdTHq9l8Z/6I/qbNm+6+4nHnrhj7bq1ZQXQIdbnn39ePHTfQyfe
eOuNNwAbgOUcHeotWbLk+YsvvvieSy+79OnVq1YLVwXQIdeTTz45s9frzQI2FVbMjorGESjDMDNF
xc+3bt366urVqyc5/PqlXToQAAAAABDkbz3IxZBACIRACAQCIRACIRAIhEAIhEAgENtACIRAIBAC
IRACQZnpL1WQM5tkAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NEZXZpY2VAMngucG5nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvSU9TRGV2aWNlQDJ4LnBuZwkocmV2aXNpb24gMjY5MDQyKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NEZXZpY2VAMngucG5nCShub25leGlzdGVudCkKQEAgLTEs
NzUgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAABIAAAASAIBgAAABSDroAAAExKSURBVHgB
7NQxAQAACMAg7R96xvCBEGw1AB8EBAgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAAB
AQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICBAQgIEBAAAICBAQgIODYLQsc
SW8gCi1/r5aZmXlXmJtEODcJ3mD3KOGrRBRYZhxmaL/M2CUHRGHa/9OU7Hou03T3k/8PBAP/KiR9
LOmrUyfO+eiRE969a48jwpJ+QwwREd6xfYe3bd3miE2W9FrSu5KOfvrpp5s2Qr/glxoDwwvobeHM
mQvvz85O35yenuSvY2Dv7n0szC1+sOrlWyQbxjM2Nlb4BbbN/5nBgAYunLvy/uT0xLrxTNR806ZN
HD16lOPHj7N79262b99eIyJIsETY2DQkcAGUeY4pml7Hs7ERwrjmuPZyGWNHrSGESsECBLIQUHDt
O/dpuHdr44AodS3JyK666eeoWcVNQ5m69PuVukxgkTUF5zny1DnWtSYIRi4sLy6yvLLM/Ow8L169
4M3rN4xGIwD27d7P/NzSuhEtdiP6pSENBvS/NqCBkyfPvP/8+ZObANu2beP69eucOXOmmlDHQhSK
hJwmgkAFCi2AarippEUgiQS71LwUoTAUIUwJSC9IQ4pam+6CZHJJCOHcqTtC7bY6Y1RU83a2VmOi
5m2p1JS+iFC0Khe3M1s4TQtU/0y/YdVLVYKo6xhkMFUDZ9NNKttgVEY8efyE27dvs7y8TPKB7VsM
vE0GNHDj6jv+9vbXAFy9erXG5k3RfzJYGIOoSn/R4AzRKAiRYJQlxoJw6kH6ggiM63irVX/95Hy5
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
Gyhf7GJGS+ohJXsj9RlmDsC169cZ+p5hCIZxYIiecRwYh4Fh7Bm6oR4P4va1H5tMw6w8LQeigI/A
iqFMFggjz8eYTFBqajGS6D2kCZiQJcnfYLcCn2axBYAOq33+65//9N3ucrd3UyA0ZjCfTzofR0xo
w6lLoLXkapuTjnr3KGwLiAot3TT9QbO6WidAA8k41E6DZIyhMZ1v3LzJBDLD7Uc/Hf3QNxDq+56x
76bE9fWbN7hy5QotAMM4qgk+clQ0hog2jUMSi0DhpglYjGYq7f9D7GPAOxfvZ8kBHXozs6edPXX2
1ZeuXLoFwN1wWzVvRTNjNAus2MuFSI4pvYzIigfabWXLjChMUWjWNru6LCZUbihDCi3Wvb31VOXa
29vjTne6M1GvpZH4KixEHKXfXjg/8YSm0v3YQcM5E8MZUX905uixf51Uhs24uWPlfRYAWkDo7ne6
+wt/9uufvZIydwc3HLGA3TRMT9mQxvsRf2eWbFVvRKz9oaXzwusL5qpxVaWYx3jmAEQEu7u7nDp1
itX+yjiCiWcTacTYT7mfYRhw9wot6erXN2Bt1TiBUt3/N9i7gQ/eIcFnAaAFhB7/kMc/7nvf/t6b
z3fnQY83noqBgEaCSnUcbJ5SPYZIjWY0U55YEZe8DMkxoBLjNp98MVWyIqbDzFiv16z2H1uZgzEB
zjiOTERFnUN7fc5mP0v28O+yFStGxgV8ABYAWoDo5JGTr17H+pYL3YX/5N+Ju09A86fMq9T/H9wa
5SDwLLYA0AJCyJ4EvALY7IsiH7qNLWOO/1FANBvvM5/O+h9jbs7a10QGXXQfA772u3bqQAYAAABg
kL/1Pb6CSDwCAhAQICBAQAACAgQEICBAQAACAgS0AQgIEBCAgAABAQgIEBCAgAABAQgIEBCAgAAB
AQgIEBCAgAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIAABAQICEBAgIIAA8lwn7YL8zIkAAAAA
SUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
SW1hZ2VzL0lPU1NpbXVsYXRvci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9JT1NTaW11bGF0b3IucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9J
T1NTaW11bGF0b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2Vk
IGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNo
YW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvSU9TU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTWF2
ZXJpY2tzLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJp
bmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01hdmVyaWNrcy5wbmcKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBz
dm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01hdmVyaWNrc0AyeC5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9NYXZlcmlja3NAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUt
dHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Nb2phdmUucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fu
bm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUg
PSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW9q
YXZlLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwot
aW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvTW9qYXZlQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxl
IG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vamF2ZUAyeC5wbmcKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01v
dW50YWluTGlvbi5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Nb3VudGFp
bkxpb24ucG5nCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50
YWluTGlvbi5wbmcJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMzEgKzAsMCBAQAotiVBORw0KLRoKLQAA
AA1JSERSAAAAkAAAAJAIBgAAAOdG4rgAAHsVSURBVHgB7NdDmGvpAobRXVXJsW3btm3btm2NzvTe
tiZt27Zt27Y7u1fbVvC/edbm9CukII7jaM+ePbmkgFo0pTvjmckS1rGNXexlH7vZyjqWMpMx9KUN
VShJAe8SE+WKAocoi0tQi86MZS4bWMw8ptGfdjSkKmUoSoI8cO0ZZahKQ9rRl9GMZQKT6EZjSvIZ
75IiG8vKAdVlCIvYy2YWMoh21KICxSngr1ZAcSpQi3YMYgazmEALSvMeb4YBpVf5tGQ2e9jFTDpT
jaL8VxWlGp2ZwAwGUpV3eIU4DOi/qQFz2c8uhlKPYqRrxajHQOYwiHK8wuthQP98RRnKXvYzmtok
ybSS1GYQM2jLxzzDp2FAf28VmMsBrKMFRcmWitKCqQwlyRO8Hwb016rESg5mBlXJ9qoyjPEU42He
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
n7sQYz6bZurBcJ6oe/3r+lz1P5nrz+f6Vo0YT5T/rR668b//j8BnQhRPH6epK/2eNWVFhChhGo2d
a8oy5KxVHQHTUkl19Qec6y9N7V2pyHqSbIYrnMpDuZsJ1XyvM3/fnQnSruLcdzhMb2avnIfVkt9v
p+mT5+3si/bP0JY8V1+Zj8xd1+p1pk7zPJ2eK8l5j4SYhmFUVYfSxujJ1ZnvtZfOnv6CvOX3nCHR
7Lnz+015z5Q+/F1jnqulHfG981qEvcczeHhg+fKmhxNS/2NUyv5emrD/LNXkPw1+9O8CLXw3Jf9D
8VQ/ju7hjijg78lzHFzZ2HooU62H85oHkyftTXW5Mwb6ZPCihzNz/+2U9v8xPbN/lgot7a/EW/2F
Zata/vKKlq6/HC/2H0opD9fnSowX/Nn/jR//Awy3Ci1KmHOODAAAAABJRU5ErkJgggpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW91bnRhaW5M
aW9uQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL01vdW50YWluTGlv
bkAyeC5wbmcJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvTW91bnRh
aW5MaW9uQDJ4LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDM3NyArMCwwIEBACi2JUE5HDQotGgot
AAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAABnpxJREFUeAHs2GOXnHsCxdGwEdvt2GqE12he27bt
f322sW3bdlSzx544XTi/tXa53p4H06vV6pRSSjSfOXSzhQEuYYQbuIP7eYxneIHXeIO3KapQ9A5v
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
MNTvhX09H1D9beKAzsWcuryYMrUpKnYrR91Lysk9x4az0Z8OJSTjXp7RXu71rQDTdTGccVKcjUPg
t9n38wH+72W7r+X9mZz0h3Iubw9I/otc+9/JPv5CBPf//9C9O3/z0P7+v8vo+0BMvy/MLK78cH55
/fR/YO+cDu2KgjD8V3B9j7dt24rN/jvJnJUqgodvmaPXoWwd1zQrf3tu+P8ByPZDRPNXGO0X6PUn
2N1XBNMPGNUHcOGKsz+Bu+IOOFkNntUMT3KKvVbiqFfYKSnORgHRb3FxGtZ+lgLcXyzcnnWqbTwJ
Ho352BEXPQFvZlTHjKMS4ESYUQs7HSA5dJaV/15jJKzN0Z4n3sFBCWGmE/R4YPOy38NINxjJBDtf
EY4f4fUfqP5MfILbvoPTvEW2fUe60Z/ylxC9HlI4Iujfo3r5E275Gmo0QUsXaMlMZy2w0hl61LO7
vOo1O58zc0huDa98AbegO+Px2icqKH4NLeyobiF7DUxar0f0F7dk/7moEf3Rh2ylkCz6vx7Rn0II
ZkKk4KmWaa3qV7Q+o7mI9gQQjJjWhtT2cZId7HmDcRBN7DiN2vqv9o4SsaEoFrv+/5ihzHjGMc+M
XV1lbXV1fX0P0At8tewYg4fhqIALRIRDE2kI23oPcneKdw6hNQYVmqBjG0zuAbd1oCqBsA3QqVup
1D2q1DvY3N8jf+fbk23sLTY699fCNVe2MVi61vhTxu6Lyf0n9HsnY+dahNaF9K2zUvizgtkzIv0F
N/mayHBXcveE/wszjU/u2ktqmqtCxvUJc5uC+20h0q4m0r7Gw6Hg4Yh4Veg20DgEFkdQug6OLTKY
XL876t+efP7XFzbMlWR3IM/EAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvUGxhdGZvcm1SaW5nLnBuZwkocmV2aXNpb24gMjY5MDQy
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmcucG5nCShub25leGlzdGVudCkK
QEAgLTEsMzMgKzAsMCBAQAotiVBORw0KLRoKLQAAAA1JSERSAAAAoAAAAKMIBgAAAA1bFYMAACRk
SURBVHgB5JUBpFpRGMc/zMPAeGYMAjbP1JJlmCYyAEuRXgELk1S28RJFGSnQklJVpbJSCi1VlVLa
UgTBIIPM0KBNxaqqdvc5iL0720sy2sdPuJ3vnv//+59zIZVK/ZFQKAQ+n4/g9/uPEaItHo9vNScS
CYhEIkR7MBiEQCBA+z8duke4jqwPh8MQi8UgmUzSfD1WPxGar7/jr2Wz2aBcLkOxWIRcLrcT2WyW
Bnn27yB7qFarUK/XoVarQalUItqMRiOoVCrQarUgk8mAwWCcMJnMWxwO5w6Px3ugVCoF6MW50+l8
7na71V6v9xUafIHokAuPx/PC5XKp7Hb7M5PJ9FQsFj/icrksNpvNODs7u3F6egotQqEQsD95Dwac
vLtSqQDuhVAoFK7q0d5eHnIe+XweMDMEFosFe1Wn0wGKoo6KbrcLOHASArVafd1sNt/VaDRP8PSq
0+m0s9ls5gaDQXc6nX5arVZfcc2S2r1+YH1fLBZfxuPxx16v9x4D9hZvhNcWi0Wu0+keGgyG23q9
nuwFDwVMJpOj81ogEMBe1Wg0SKPNZgPz+XwnZrMZDfLs8PxiAoaJnEy5XA4YuJsikeixw+F4mclk
Ev1+/8NoNPpGXSrUS2H4qOVySWGICNiX/F4FXEfAHoTLhV4sh8PhZzzg76LR6Bu8Gc8VCi3FPalU
eoK3KLRaLViv11sN2IPm7R7+HHQeqHu7bz6f//8EEIe0Fd5utwEHCRKJ5BrebvetVqsKLT8NmZ/t
nQWYFUfW/uvODMEHd5chuDu7xN1dgV1C3N2VEBfibkiWbNy+jRIh7ri7LsRYNP5/f/vd8/2bpvvO
vRlhpN7nOc+1vt3Vdd4+VXXq1KlVq1YtwDQFiQZRwgTj/X/F3ofIFz7WXuOORcLvw8SUxV07efLk
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
LamM3CT5UBKkQ2koDyU2TSq3RVJaStpJumiudVdV9FDNQ1904okn3itivihifKSmbpYWbq+UZfpB
/ahNao5+1X1jraKSckIs4hX/EJl/Uf9svVKcfasdg5bJHTNN1vd9Ra88e/DBB98jN8klckIPV53s
w46nkt6SrpRF0kmyvaRNsozNJE2S99Ag8EAZCXOT917VSBiUIBGDZIyr+zABEYyHtudIa+Sruijc
iQotzSO6X375xSkP8BailfKcPC0foBRL5iUXQcAsJE0riFTMzxKGrKFZQhRWF0KixAhSIigaYraS
5EnaK0K4h+al/6oZhT3atGlzsCK5j5RDeYgIxAzKiJ49e56A6P0JSsA5Qn7Kvyu+bogcwUe2bNny
QOVc2b1KlSqD2d9F0i1JrvZJgkF+rtNW0jpEtkaUMVnWupQfibF8RrzKMcTbLky8DMiH4Fdko6K0
9K1+t3EE3qB7VyDQL2CjmrCQIbWgiCIjkoFljJPtkBSENamShlQyRZrYNVJf0x6M8MOBpL6eSSyh
kNT3n5OWpUPCpCsgMDhBnmhu2xUI77zzTiQB+b6IkSgkySqAZBeJBM6fYXkShSRFBgiXCQH/HxOB
/aSTfC0nAAAAAElFTkSuQmCCClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvUGxhdGZvcm1SaW5nQDJ4LnBuZwkocmV2aXNpb24gMjY5MDQyKQorKysg
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nCShub25leGlzdGVudCkKQEAg
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
ZAbcvAyRW0hEp8iJITpNxkCUnhfgwBCjJsOSpSHOLDW+LGy8oIVEmib5IRTMI0VESTkOej8F80h+
GEb6c6Kgz0OIwKSzIprQtNziSC55ZOcFmFQyjCFGNS5QPZcAjIITR7xZGpAdkZxeJjsiWSFYac+w
pKRJ2Pm2r7vIoksG6XkBJv8jNVmIIVlPYuSUmjQk48ML0D/0t2/yytuT0FpIQh5egP8CEPvlQws/
NPwAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL1NpZXJyYS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBt
YXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TaWVycmEucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9TaWVycmFA
MngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5
IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9JbWFnZXMvU2llcnJhQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpt
aW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvU3F1aXJyZWxGaXNoLnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46
bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
SW1hZ2VzL1NxdWlycmVsRmlzaC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBl
CiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1NxdWlycmVsRmlzaEAyeC5wbmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUt
dHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdl
cy9TcXVpcnJlbEZpc2hAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQoj
IyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTMucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzEzLnBu
ZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2Uv
cG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9J
bWFnZXMvVHZPUzEzQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtl
ZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM0AyeC5wbmcKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxM1Np
bXVsYXRvci5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11bGF0b3IucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTNTaW11
bGF0b3JAMngucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzEzU2ltdWxhdG9yQDJ4LnBuZwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzE0
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1R2T1MxNC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxNEAyeC5wbmcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpD
YW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlw
ZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9U
dk9TMTRAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCww
ICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
ZGFzaGJvYXJkL0ltYWdlcy9Udk9TMTRTaW11bGF0b3IucG5nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRp
c3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFn
ZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvVHZPUzE0U2lt
dWxhdG9yLnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAj
IwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvVHZPUzE0U2ltdWxhdG9yQDJ4LnBuZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBk
aXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1h
Z2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1R2T1MxNFNp
bXVsYXRvckAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvSW1hZ2VzL1dQRS5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmls
ZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEUucG5nCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XUEVAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvV1BFQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1lLXR5
cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzYucG5nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fu
bm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUg
PSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0
Y2hPUzYucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMj
Ci1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL0ltYWdlcy9XYXRjaE9TNkAyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTog
ZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoK
UHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TNkAyeC5wbmcK
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3Bu
ZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1h
Z2VzL1dhdGNoT1M3LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBh
cyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1M3LnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPUzdAMngu
cG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5
cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9JbWFnZXMvV2F0Y2hPUzdAMngucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNi5wbmcK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4K
c3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yNi5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2QDJ4
LnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0
eXBlLgpzdm46bWltZS10eXBlID0gaW1hZ2UvcG5nCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9k
YXNoYm9hcmQvSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I2QDJ4LnBuZwpfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPU1NpbXVs
YXRvcjcucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmlu
YXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvV2F0Y2hPU1NpbXVsYXRvcjcucG5nCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2lt
dWxhdG9yN0AyeC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMg
YSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdl
cyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yN0AyeC5wbmcKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLWltYWdlL3BuZwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dp
bmRvd3MxMC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGltYWdlL3BuZwoKUHJvcGVydHkgY2hhbmdlcyBv
bjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzMTAucG5nCl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDog
c3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1pbWFnZS9wbmcKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzMTBAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEgYmluYXJ5IHR5cGUu
CnN2bjptaW1lLXR5cGUgPSBpbWFnZS9wbmcKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvV2luZG93czEwQDJ4LnBuZwpfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjptaW1l
LXR5cGUKIyMgLTEgKzAsMCAjIwotaW1hZ2UvcG5nClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJv
cGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czcucG5nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czcucG5nCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3LnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDYy
ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAA1EklEQVR4AezS
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
IGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czdAMngucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czdAMngucG5nCShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M3QDJ4LnBuZwkobm9uZXhpc3RlbnQp
CkBAIC0xLDE0NyArMCwwIEBACi2JUE5HDQotGgotAAAADUlIRFIAAAEgAAABIAgGAAAAFIOugAAA
ivZJREFUeAHs3AOsM20bReHXtm3btm3btm3btm3btm3b1kry/MZ31J52Zq/kio1d3uP39+/ffmyZ
Ci2BaIiCyIiECAiPcAiD0AiJ4EYQBEZABIBf/MYPfMdXfMFH4z3e4g1e4SVe4Bme4gke4QNsmLL2
AKlQSID4iIs4iI1YiInQ8O3e4j7u4S7u4DZu4gbeQWmAlIsXG8mRFEmQ2IgEd+0ZrhpXcBkXcRdK
A6R8qSBIizRIjVRIiRCweh9wHudwFmdwGl/ggJQGSPlHJmREBqRHMiiiSziJEziOY/gJpQFSXiwe
shpZkB7KY53EERw2bkFpgNRflBY5jeyICi3vpR7jIPYbp2FSGiCVFnmRxwgJx6TeY4+xW2Nk1wFS
CVEA+Y0wUM7tDXYaO3AdSgNk2YKhCAotoxDiQLlGd7ANW7EFn6A0QJYoFYqiGHJBuXb7sAmbcQ5K
A+SWFUMJIyaUe3UfG4xNUBogly8MShul4B/KvfuJdVhrvIHSALlU0VEOZZEXyprtxmqswkP4ahog
FRflUQGZoezRUazAStyGU9MAqdioZGSAsmcnsAzQgawGyPFFRhWA8wiliI5gifEUPpoGSAVFNSMf
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
bgHVYl3ZuBiLlKq5lziy+BVlgOqh+diQhUipGruKo7mOUgaonhqVDYrfkVI19BXHFK+jDFA9tzLr
MQOdWUr3cBxnUsoANUITs27Rg44spZ84vngSZYAasdVZm+npiFK6lxM5lVIjD1CakLVYk9+TUnv0
JSdzEk8jlTJAaWlWZ35Sasuu5VQuJGWAhtu/WI1VGY/WlNJznM5pvEfKADWpaVml+B0pNaevOKO4
n5QBalGLsRJLklJTupizuIxWlwFKfVmhmIOUhtUtnFN8S8oAtWn/ZLliOroopfs4r3iflAFq10Zl
mWIqGrP0EBcUr9OhZYDS6CzJUkxLY5Tu5yIu5lVSBqhT+y9LsDizU5+lW7mUS3iblAGqqv7EosUi
dCfVdj9zBZcXn5EyQFXfAixU/J9UW73JVcU1pAxQTTYJ87MAs5Cquzu4hmt5grooA5T6MR/zMg+j
kaqj17iB67mOb6jbMkBpbOZizuJPdGzpM24ubuJFGq4MUJqc2Zmt+D2pffqS24pbeZRSygClyZm5
mJF/07rSu9zNnZDRyQClpjQG0xfTMSWpaT3MfdxbvELKAKUW1p1pmJqpmJIJkNIzPMxDPMgD/EzK
AKV2qA+TMxmTMgkT8zvqva94kid4nMd4lO9IGaDUSY3KhIzPeIxb/INa7QOeL57jWZ7mdVIGKFV5
f2AsxmR0RmNURuH//JHO7nPe5A1e5zVe5WVe4gvqrJQBSr/jP/yLf/IP/sZf+Qt/4o/8nv5FH3rT
kx505Vd+4ke+5zu+Lr7kcz7jEz7mIz7gfd7jHb6i40oZoJRS+g3B03KshLVGtQAAAABJRU5ErkJg
ggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMv
V2luZG93czgucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93czgu
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
TJK4UjNT/QPUynRAHegHaBc0rq2+3SPFrzcEY9fJeLjSi12BKJLgA9oh4wGJe9IiZAtKkWwzyxYB
if3oQtgdZaFsK8tWAYn9aQXsilIh28iyZUDiYFoJu6FUyraxbB2QOIiWwy4o5bJNrKwISOxP50PJ
NPMNdluZC0jsRx1QMoVDtoGVlQGJe2bkPJHyAWSontUBiQX0fhpEulGCsq4LqJUrAYm4Ia1vwCqb
ZR1bYm4FJB5Gi5FqlGJZt1ZOByT2oE9RPxRT/LIue1ArXwIScbGeLzKiXNahJeZXQGJP+lxCXxlS
PLLOelIr3wMScTqdBqU1psm6skQNqImd6a9oNeJRqmXddKaWBtT6bm0oXQtlLR2a2O5KAxJRSO+h
q5B/rJLnXkgtUQNK0j70r7QMuU+ZPNc+1BI1oBTZjV5Jv6a1yB1q5TldGTcbqgaURgfTIXQu9SL7
8MqyDzH/oJcGZGIBPYoOpzPoLtiXXXSGLOtRcW94akA2cQC9hb5GSzO8q6ulpbIst8iyWXFqQDa2
Ix1IL6P30s9kg25I8Zlvj9xnqTzGvfKYA+Nn+tKAst8CWkgPoWfT2+m/6OP0dfoJHUUnUoc4UX72
ifzN43Kb2+U+DpH7LKBWPvl/H8aMT7HOdkMAAAAASUVORK5CYIIKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4QDJ4LnBuZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvSW1hZ2VzL1dpbmRvd3M4QDJ4LnBuZwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzOEAyeC5wbmcJKG5vbmV4aXN0
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
azdbb61ja1kda0ToiQZIJrEZbDqbxk60oTqBTWGHYeS1sW1sqw3LFraZNbB61g7RAEnJqWDHs2PZ
MfZO6Uh2BKtilTZQE9kEaywbw0axOIswj/WxXpZi3azDStjAtLIWto/tZbtZM2tiO1kSogESEQnS
/wcsf4lX0c+dxAAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93c1hQLnBuZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvSW1hZ2VzL1dpbmRvd3NYUC5wbmcJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvV2luZG93c1hQLnBuZwkobm9uZXhpc3RlbnQpCkBAIC0xLDU5ICswLDAgQEAK
LYlQTkcNCi0aCi0AAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAArk0lEQVR4AezXA+hdYRyH8dm2
bZthRpgdL9Js2/bSRZwdZoTZtm3+7ac66dr34PfUpzfze/Dmzs7OzmWw8qIaKqMmGqIGqqAiyqIE
iqAAKFcakvAPP/EVn/AOT/EWn/EBmTBMeh9QPlRDQzRXzkYojzIohfwIp3T8wS98xxM8xX3l/IAM
GZB2qo2O6KKojTKIR7/wGpcUV/FaBqSu8qAZ+qE3WqMs1NhP3MZpnMADZMmA4lM9DFS0Q2FoqWTc
wFHFCxlQ9CuMXhiDPigDPfQLp7ALZ5AsA4ps5TASZrSBnrsFJ/bihwwovCrADCvqwki9hB1OfJMB
BVdpWDAOtWDk3mAHHPgtA/JdAYzBDDQBKUmPsA67kCYDcq8rFqIPvCedwlJcBMmASmMOxqEI/Ccl
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
dCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzWFBAMngucG5n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvV2luZG93c1hQQDJ4LnBuZwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9XaW5kb3dzWFBAMngucG5nCShu
b25leGlzdGVudCkKQEAgLTEsMTQ5ICswLDAgQEAKLYlQTkcNCi0aCi0AAAANSUhEUgAAASAAAAEg
CAYAAAAUg66AAAB2eUlEQVR4AezcA8wcUQBF4dq2bdu2bdu2bdu2bdu2bds6SV5Ut792Zu5JvrzY
uYuB969fv3pTjiwQIiAcwiIMQiEkQiAYgiIwAhr+4Be+4Qve8RWf8BHv8Q6vjZd4jmd4gsd4hAe4
j3u4g1dwYEoDZO+CIBZiIjqiISqiIDKCwqt7jpu4geu4hqu4jEt4ARdPaYBUVCREfMRDXCMMrNoD
nDfO4SxO4zq8KKUBUv6QHMmQFEmQGIFg917hJE7gOI7hKN5BaYCUB+QTaZAaqZASCUCkzuAwDuEg
DuAzlAZI/WcxkN5Ih5RQf9dh7MNe4wotlAZI/aHkyGxkRHgot3UXu7HTOAotpQFSpuTIjmxGYCiP
6SW2GVs1RhogpxYbuZDTCAbluT3DZmMTLkJpgGxbAORDXuRBNLhG6ho2YD3W4Q2UBsgWJUF+FEAW
uHZqB9ZgLU5AaYAsWQEUMiJDWaubWAUwSEoDZIGCoahRBD6hrN1nrMBy4xlcKg2QiogSKI7sUPZs
K5ZiCW7DS9MAqegoiVJIC+WM9mMRFuMqlAbIU4uKMkYqKGd2CAuM6/DQNEAqLMoZ6bwRKbUP84z7
cNc0QMo/Khg5oNTP2oI5xlu4OQ2QKoZKKAml/qbFmIVlUBqg/yotqhiBoNS/9AotM4z9UBqgvyoc
qqEq4sEtKXUO0zEN96A0QL+sNKojP9wzpdZiKhaCSGmATAlRCzURGB6RUi8xGZNw2pvSAFF11EZ6
eEZK7cVETIVD0wAlRl3DFzwzpT5hvHFSA+SsKqMeMsArU2oPxmGmBsj+RUUDIxBcIaVeYYxxXQNk
z/KhIQotwRVTahVGY50GyD55R2MjFlw5pS5hpPFVA2TtYqIpGkMpKzUSw3FZA2TNcqA5Ci1BKSu2
Ci1DsUUDZK2qoTmSQCkrdwJDMU0D5Pr5RUsjBOyQUk8w2HivAXLNIqM1GsOOKTUSA3FTA+RapUBr
lIOdU2oeBuKIBsg1yoW24HRESm1Cf3BaO1+wciXQHqnglJTKhWAIgiX6BuQ1VUUHxIETU+oC+mC6
Bshzq4+OiAgnp9Rt9MZYDZDn1ByddJldKSJ6gl4YqgHy2NqgMwLBpJSiV+iJARogj6kdusIffkwp
9Q7d0U8D5P7j0w1+8euUUu/Rzf1GSAPUBt3hD39OKfUOXTFAA+S2mqMHAuHvU0q9QhcM1QD9X/XR
CyGglPr3nqCTK1+i9wFXrCo6uml8lFIh0BFVNUB/Xwl0QES4LaVURHRACQ3Qn8uF9nq8Qil3LQ7a
I5cG6NelQFsPebBUKZUKLW2RQgP0Y5HR2kMXWimVC60RWQNkIr+e9jIxpVQ5tIZfXYYn6oDeUP/b
N/b+AtqO68rzxz/7VF18qCdmsmXLDHEMcZgzacZ/wzAz/JiZsbuHuZm7p389Yeh0EodjZslifgyX
qursv/rq1npn7XVy5SSOLem976w9VQduSZ1E37V5q6LdBcg7kPfAZ+AL8Dnq8yvvIuBSJEn7T1wC
1SZSHYV0hDWHdfznwP+01gnozwL/53q4/VWiKNDFM+jSZenMQGcWnT9+WU6gS+fQLIM8u3IvLwbP
HLICVFAVpP904BxSqSH1EWR0C7JxH27bTbipbcjGA8jkAUC4obGeI/QPgH+zVgnoXYMszbuIYx1Z
B3/pBXTpGCwcRWeeRZfPQLaEqkeKAlUB7/qiBVAo6rX/pADtP/XKM1fIPVoMnpeFvECzHPIcVKFe
xW2YwO04RHLTm0n2HibZfhuM7uaGxPrIn78HfGatEdBB4P+B9aGBFjp3DJ1+Hj/7Enrua+jKSVwl
g4pAWh0QjUDhrxBLzpXnYE0eEpCi9pkr0l8PfpMr4V2f0ycmn10x39xoSrJtE5VbH6Zyx6Ok+++H
sX2s44Yafvh3gaNrhYBkMHL2bwHryDv4M1/Hn/4qOnvksrwIxTKSArUqVCpIIpA6UIXckE1AHnHS
8aUmFPzW/CYv1+CV/lO94P2AlHoezbtITUi3baL+wKPUH/wA7sB7AMc6bohxP38H0LVAQH97QEBr
FtqZx5/6ymX5Gv78szB/DDS/Qja1KqQJkgCpUD5xAj4woQyBhHv4cK+8P4Sw8gFJ+VKk//SqaLDv
c/C9HC16pFNVGvc9QPNtHyS96/sgGWcd1zX+DvBzNzoBfWDAtjex1pCt4E88Rv7cR/HnX+47jQWF
ahWpViBxA00HSCQkoP4aEfD+KsTC6tmAhIxGFOx5pFB8SETFgHj6BKSoEmpFq2sPvqdor4urK43b
9jP2oR+k+tDPQGUD67gucWRglXzsRiWgvcAvrDW/j7/wFMUTv0fxyhP42VMICi2VKlJNIRVIQJwM
yEYgESQFQgJKHShQ+IG2MoRYfHhmNSFg8D7Y74vkOiAe+k8tBK9X9qz4AsJ1kSvazXDVguad+5j8
kZ+i8uafAmlyXWLdH/Q3gRM3IgH9r8B/xBqAti9RvPTHFI//e4pTL6CdFaRag2oFSUOSKUknfDfa
z+A+pVnlS+ezQpSAQu3I3gNyqx0pUmhALDIgIl+aYoOn4r0G56yaZwotPlN8Nyepe8YfPszEj/0F
0js+DKSs47rC/wb8xzcaAf0s8I/WQmOx/OwLdH/xb6HTFxHnoFpDqglcIZpV4gm1n4TBOiQn4/8p
NCAP68MpzS4gNM+GOalzH+yDeuN81ojWExJQICEh+QyKTpfqpLDxB9/K+I/9PWTTnazjusEy8NeB
X7pRSjHuBP7qWulq2Pnyx/EnTyNpA6p1SB0I4EAcIIIIgFLuIzIQ4gKgCi0AHlClFFUFFJRgL4hn
KHEZXJdgLzgKLf+IAIICaHBufk8iuEaN7lLKmX/5OU79rZ+l84n/C/wC1wXWMQot/FXgzhuFgP4K
LfAIawC+28G/8EVcowFOQEBCEhEISUfsfnhfWF2ogl55oBonFyAkIaJ3NRACMUSiioUaYhOEEPZ7
LnFIrc7iSx1e+S9/gQv/+U9TvPQxrgus4xHgr9wIBPTngL/CGoGfOYvMnkKTCi0I31oQcACySkhA
eB4SERoQSPmIEQgAAipQEkbILhpoPR5ACfkLFUANoQiqAAKh9lOSmNWECNaAVBOKosG5f/ciR//6
32Hp1/8L6J5lHdc8/got8OeuZwK6HfhLa8kLmb3yJPRWIHEgoWkVEorViARBwAVmmKN8BsRhbSQN
iAPLBJaczFpRdJWIwp+EZIPVjECt0mP/OGu3KYiDpFlj5bzj6H//y5z9T/8c2ctfZB3XNFLgLwG3
X68E9BeBh1kjUO/JvvkJJHGGbGKaTVzsGRizy5pQPlxbsrESXAi1oOAKLQotYLUYjRCRrK5DqICC
IsFfd/W+qzrUNTn1W89x5Df/gHVc83gY+IvXIwH9GPAXWEPw85eQs88jaQUICAVLNDI4E+JEJEig
PYmGjmdDMADe+mAMMRmCEiVuOqkYsjF3QiiA/YY5t3soeHBANlLF3XwH1wXW8ReAH7ueCGjbwHYc
Yw2hOHsEOguQJMb8AsGYVCHZxIiI4KmKGpPKitWSyj0BwNwLnMpxMtGAr+wZgV8JwnNUjAO7vGtM
vMLDlk1se/QdXBdYxxjw54Bt1wsB/Vngg6wxdJ/4LOJzEMAZjcdZzQYgRjpG1NhHNvzuQ2YBNU4a
9aBh2N4PCMYrEpKCcWKLJThCSEQTCx3TMniPaUlK0esxct99TOzYzXWDdXwQ+LPXAwE9CPwZ1hi0
KJDTz0CagkjJO3GNJk5CITmVDmmr1awKLeapgCduhlkS88ahHPP9QDw8bwkpYqKF79a0Q6HnoHr7
Ya47rOPPAA9e6wT0p4FbWWPIL5xAZ04hlQotZRQ8Hv0ScCCsnkO5HxCRDTMZ4lFvnM5gEhEto9ik
Q0tOhL8LHcmG7ARVNQQWMesItKtAO5NCyUabbHrwLbwaqOas45rBrcCfvpYJ6AfNX3ANmV+fgc4i
uMSaUYFGQ1xc1AQrYX09EbspfBIXYuaUgFqykeBOSHzW9xPLFdJI+F6A1YhZkWU0br2VTbffzdXw
4slP8omv/yhfOvKP6PkW67gm8KeBH7wWCagB/AwwyhqDAvrSV5A0ARluYg03uwACwgottRkFDbWW
KDkZjSn8jVek/FZ4DsPLNjB3SvJRiPOgva/BO+S+oHbv3SRJyjA8ceQjfOIb/w2zi8f5pd//N/z8
H/51Xp5+jHVcE2UaPwM0rjUC+ingR1iD8ItzMH0C0hQISyysdhOG30shRBAuwyYdWsewJR3zD96Q
1bDfItaCMwRmOUnA5gGhaJy8wgVZmjB+13DtJy96fPm5X2W0mdPp1Fmeq/LE157lF37nP+SjT/8c
K9k0byjW8SPAT11LBLQV+CnWKHovfBVdvABJCi0OEC19OvGoF4BxUodFqjjr04mQjQe8sauGakfm
99ZXY38bZkTHyCse3rf+nyAippDlJDt3sOXNjzAM88vnWGlfYKwpzMw5EKhWayxdUH77o/+Wn//I
X+Opsx/nDcU6fgot2HqtENBPAu9ijUKPPY5TH+Tz2CeIC0Pz0fdAZFWb8SbUbjUcS04EBBVGw+iL
qd+ynBXuWyIBEENkkVwfE0ULK/UL9XDoAI0NmxiG05eeRlkhETh3KcE5RQSSisP5Bi8/f4p/9gf/
Df/6C3+fE/PfZB1weu5ZPv/sb5EXXV4nvOu1GiSa8t1h71qeaOrzguLks0gljScTmnex2pDNDSol
rs3Ew/DengsQtOnAniuoBGtDHAigkQLTeAa0qdaPmI9Xzru+YOL+NyEMg/L8ic8y2vSstIS5BcEl
gIAA4oQkqZCtwGNf/wIvnniCR+/6U7z10E8zUdvGWoL3Gc+e/yxPTD/GC698ldOPzfCVA3/Mn/up
/5CN43terwmrvw+ceCMJ6MeBh1ijyI4/iz/7Emm1aggFJFJ+AcGdaJsOsaQS0XCsZjLE/+NjtWGC
QhhWt3fQSE1YeUlVDDcqGssNCi2IicIjUxvY8a73MQxLrWkuzL3I1o3C9DRkuadaA4HwP0ucg8TV
WZjN+PeP/TpPHf8iDx36IG/e/8OMVjdyo0K14NzCyzxz4XO8NP8kRxdeoOuU2mKKW97A5z/9OLXK
z/G3/sL/Bji+x3gI+HHgf3+jCGg/8OOsYRQvfhmXr6D1sSB/R+LZzhhCMmcS3iMgkdCM8mFYarDv
o2UYwTow5zAmGMTzdspzteeWqMR8KGaSKZrnyE0HGN93kGG4NH+MXj5PrapcnEkRUQSjHZZ87gY9
h7TJmbMX+b3pf8lXjnyUe/e/nYcP/AQT9W03COl45lpneOrsp3hh9uucXjnBUr6ESopLqjTEUczn
5F0hTap0lnqA8Drhx4HfBo69EQT0I8CbWMPwJ59BkgRBAydyrLDU7gMuckZAIhiHsQe1sW4MKQQS
sa2QgMOwJhXWvLNakzHdsERjwvGBZtXznsptt5C4hGF44dQfU6tkaAHTs0KSaJCyIIiAhGtAHKQu
RbTC+UvTfHTu1/nGsU9zeOebeWDv97Nz8nacJFxPaPXmmWud5cVLX+LI7ONc6JxhsTeHdylOUqpp
E6/gBVzb05mFPAeXeO6+66HXk4DeNOCB/+P1JqCdwI+yhpFdOkdx4ukr5peLaz24IPyOXMVHJFfE
aylGmxkuQ6rfA2IISAQBjRGH4S/CxEP7x1nzixBlDhJ5vcrud3+AYVD1nJt5nolRYXkF2h0lSQGT
rRDrMiCu1IgSRFJmFhb4/PJHePzkZ9iz8RAP7/9R9k7dzVh9M9ciVLWv5UyvnOT5i1/glbnHWSoW
aeUtcCkiCWnaDAKguupeW/L0FgWfK+PjDW4//ACvM34U+DXgzOtJQD8MPLimCei5x3ArMzDSBCnD
7w5E4mYWsep3oyVFtQ9MEZaikabMqljSQb0lJ4GQXFDiGFy3pRoIxDUl8xsp76N5TnLzPjbdfR/D
MLd8lsXWGXZvUV45UcV7JY340qKN3ZBAUxoQUZLSzeCli89xbPa/Y7IxxcFN93H7tneydfwgGxrb
QYQ3Ci1LnWkWO5c4Pvc4L156jJn2Gdq+RaY5zlVQcVc0nQFBebUlfeAQ/KLQazlUC7Zt28zGDa+7
6fnggA9+/vUioEngh1jj0BNPIaLxsDsRR7QDhq0lyH72lgkAFVAPPl4oGl4Xk5KsVhOKO5rB+nQI
yCQwv+xdxbSEZdWELPIcd3A/1cbIcPPrxB/h/TyJCGfOCy7xq9qjC8wvACT4j10CE01DYsI5QZIq
CMz3Fvn62U/yxIXP0qw02Tp6gAMb7mXTyF62jB1g0+ie75mpttydZXblDIudCyx2L3Fq/mnOLb9M
T9v0ig64BCRBXEqFCi2K4gGvgNiaXkUBBFxP6c0qeQ8KLe1x+233Ua+P8Qbgh4BfAuZfDwL6AeCd
rGEU7Vbf/EoqleH1XWILTO0eIXnFTSqbLMiQrGYfriMh+GA7XoqhkdIKLbXV8YCg9nvEw/yFE7a8
9R1cDa+c+ypjTaXThaUVj3PG/BIwNbymgFcBKddIcOYciEv6QiJ0pMvxlWc4vvgUzkMtafSJaMfY
Iaaau2lWJmhUxmhWJxmtbaBWGcVJ0pdEUhDB+xyvBYXmZEWHbtaim6/QyZdo9RboZAssdM5zcfkV
5tpn6RSLqHg8fqDJpag4KmkDjw7IxjjxxfRXIoAIslzQm4cig0Yj5b6738YbhHcOeOHfvj4EtMaR
n3gOZk5CrQLDwu6lELTZIDDPHGH2c+ghhtKE8tgIl7V5iLCGEbU9fyI9pgXF/o9dgm8LSghFDSGq
aVgvhZJvGGfyvuGxik5vifnlM0xNwOxcSl5ApQotYtvZ2gROBKFkHL3yiJMVEDqyk4Fc2StQznWO
cLb1EqKKIwFVEkmouDrVtNF/pq5KmlT654XPyHyHrGjjNUfV99dOIHEAnpJFxaVUkwotXhVvAgFe
ifv+o8mdphnmstJddvjCs3nnBDu27+UNxOtCQB8Cvp81Dn/6eaTooG4UiTefjxBRPEqGCb8bYjBm
WKT0IirhdzSeQBhvm2HMrXJLYrlCATEZcqOcK19Q7N3JyPZdDMOxc1+n1b3A9orj1NkEoUBEiGuM
xs3mABSxZGX/sw/OwGpVQioVxEl5HUEA8OR0WKTrF8GD5B4QnDicCOIEh5CIUHE1RIWSqj2CKgMN
RwkTPS3UtjSJWMQqSrl2hVLMKllH8Nrj4P6DjI1u4g3E9w/44SPfy1KMDwMJaxiqSvb8l5A0NZnN
EbPLCi3EK+ORoREttY3HPKgP7wd72FAVSLCNMc8UDEEJAPH6MjOEA/nW1fQoWZYx9chbqdYbDMML
Jz9HvZpRFJ65BV3Nfg6EgYglJoLzUKuMKKEQ+JIUBAl4aJV8QhNTxJFIgiMllZTEVUkvSyIppVkm
kgACKpRQhNWQwSr5KDZ6GJrZgIBizsRQlgPpKNm84DNIUuVN970TEccbiGTAD3yvCOgu4MOscWRn
XkFPPIlUqoZsxBJNPPwuEicptUmFUQlgol+DdayLodqMaCTa+VBVgWAd9RkJ2Omr2G8oFEox0mDL
24eXCRY+59L8UcZGYGnZ0ekpzkFIGmGgy44zslqOQJz4CbUgEOwzRKAF6epaCT8b/r8gLwmF0BEf
/zoYzo42QYjzP4hAS+kuCi15rmyYGuXg/tu5BvBh4K7vFQF9ENjNGoc/9Tyus4g6BwSkAkiMkKxJ
ANhe0QB4NQRgtSFQIpNNMWtDYqIKLVjyUavRBJE2SzoaqaY3NOjDeWKD98KT7djM6L79DMOFuZdZ
bJ1lrOk4dzFBPYhYbdKar5E7hAQfajNhAqMChjitirFKKUCgcQXfAzHfUvOtwJwNu0ICihKSDVch
G+vo94B4Ree0H34vipzt27ayYcM2rgHsBj74vSCgJvAhWEd+5JtIoOYTyevRcE2sQb2RWCTJEhEK
LeW2MccAwnuC9QNFPq0m/G6npBKrfDdJiNgflHtCnmfU77zzqtXvR898BWWZSuKZnQPnFCSgAqvF
2AgiJu3BaEESL3+Jq0KBmR3arsOhEOMg4lOzIVzb/8xDsje/H5yV4fdsTsl7gOTcc9dDpEmVawQf
ApqvNQF9AHgbaxz5wizFC48h1VrQYIy4/wczjsfmCIUvoWPZK0SKSqPN54nUiCkRCa4TG6ejEXMs
8q8JwO5jilwV8EqeJGx/3wcRuIoG9BJjTU+rLSytCC6JJRwGxGMiXOKI52BFM6YFG5gEq8gG5Ge9
RIFxJYGGJMjgqYBpcQsY/QdLRJZsEFCUeHMBgbbSW3D4DJpNx8EDt3AN4W3AB15rAno/rKM48Syy
eB5NEhAiIkPKMCR+L+LwVSzRgCrWwRzJdDbkYUsrbDSLMM9HhpKX/Sbh2mpLhSffvIGJ2+9kGJbb
M5ydfpbJUceFSwndniIOwJAPak0yyxamrs6QD/Ktm0+qISINP62ghpyC+2I/EPXUh6Rkb1nyibv6
wldBYUHpLQuF92zZsoE9u27lGsP7X0sCuhl4H8A6AT2DIwe5yux3J8PNLsy7zWr2sTanRjMyBACY
c0VQLJGA2sbxQ/8hKDZXCFC1GdTBbxSf5aT799Hcsp1hePn0Y7R6F6lXhfOXHIgixpcmAEPWJkPa
OpsDLcmqHYDReuLqqz232xYytDbYmqsakF2MoJTAD4fgcq6E39tC4bvcdcebGR/bzDWG9wE3v1YE
9B5gH2scPsvInvkCUqkgzpCIbasRPdOIuSZRs8u0FYyFzSNi2m14QDFkYwjPLmKEF50LJlhoYC7m
6tn49neSphWG4cz0szRqOd4rC0tKktiyC6tFEhdLUOa3YRBAjGM5YABklVwNg4WsIMFdiOgn0TFF
NskTwRL/1bUhp0jb050X8h5Uq3D41ru5BrEPeM9rRUDvhnX4uQu4uZNoWgFR2/M54uuxTs5Yy9a4
CTV84kWYsBgKLagHCf2nPl73FevrEypVtu7L5qUIoLHwPSAeuiNVmodvu2rz+fMzLzA+4pidT2h3
BOcAjJNGAuImQjR2EKRbJRmR8hnx+Ui8Ey5hSF11cB4mKCpS/v+iq3dNaB0UML4cVdRmN0tEMQvu
YcPvK9BbcvhC2TDVZNfOg1yjePdrQUD3AusEBGTHnoL2AuJsxfuQMgwXhN9NCFkliKuG0IjYEJS3
d8JomJYEFWkeH+QKLYV+CVPJYc2B0H8UywIgJKy8QHdsY8NV/D9nZ55jZukYYw3HmfMJ3muYqmDI
QwKTS8wakDgZSdzcjTiDTFkHFmo+AoKGrBh3KltHtIhxR1stJ1jbLGhAvOLnPL0W5HmPmw7cyvat
1zQB3fvdEtA7gUnWOBToffPTiAvDuZZYBAHi4fdYbktYrW7zd+IaztDeQKFvxpsaMARVsWUVETYJ
HdUS7wltNSgkyHeBPOsx9ejbaU5MMQwXZo+QJB0S55mdU1yihMStEp8iEs0cLMkKLRttLEUNfRjS
ic+VjpORSJzITNGoISRzZktYNDYAFwjOBCRTsnkouoJLPXff9SAijmsUk8A7v1sCegeso1iY689+
L7OfcSBxorF+g3jvn/DHQctVjWVCE5KFHcejqAbPaIN6QBWLoPTCKFlhNC5iwtnfBz8Wr/SqCWNv
ehNXr37/GqMNT6vtWG4LzgVul8BfJjb8TrAX+oti98vwuC1IJURYxEqc3wImEdTYgSCqIGFNncYd
+tb8Ci3WQNwlF5LsIPye59AcSdm7+yDXON7x3RDQvcA6AQH+/CvI8iVIEkMyEcdoUEYgzjYnM+KJ
OYDjRZ8q5WJI/RVWYwoti02N3yY0v2w1h01iFCAyCdpG07ynNzXB+C2HGYaZxZOcuvgEG8YSLk47
epkiLiQPE40Sa34JAccQN6dMm45YMEvB2miWhEQEtP/sC5QeIIzvpyRyiZhYUe3INKcsoXHzS4E5
fyX8nufs3L6Tvbtvux4I6N7vlIDeCi2MwTq6T/0x4jNwLl7PBWY/QjpGStjQu3Uw24SRuCgSKT4F
QIe/x0MzAiomamaicTZPCCi6PUbuvpvJvQcZhnMzL5IXi9Srysw8iOiQIlNBsASjWM0y7BENwFX9
PxLZl3hrSIwmqUI8lq/osIGP1i2tABrXlMyeFFDMQ9YVkJxbb72NarXJNY4x4K3fBQGtw3fa+Be+
gFTjvX+IF6JeXayvhzDrORAi0bHgnmh5HtzzDMnTIYyk2cJVQyxmLwgzx+bPZwJTb3s7IsIwnLr0
dD/8nmXSj4Alyav15RDPiA7PIDoaW9R4fIxvyewaJgy2NTDvsEWlAqgNv5dr07IkgOWp0JwrLb6u
robfa8qB/Ye4TvAdEdAB4C2wjmLmDG7+DCSpydk3ZpdtFxH1+wAiNv8nPvsL0EikKySssB5LwjvR
Fqka8zMYYrJTOYb0iAaUVRtCPHSbNUZi5pdpPvbKmS8zOZYyPetYXlGcixC7KUAVkfg5lvglrJY3
hBYrNwXUhuYVARA1dBScCwYKLbalhgg2oqXWx6OYMH1cMZXFgt6S4HPP1NQkd9z6ENcJ3gIc+HYJ
6GFgO6wje+Fr0FtBnQMXZDa7GLHY8LvEI2FX8/mg4Il1PRxeKmGrGE2HQjQ+btk0HY5rORAvvSib
pmcZ9ZtvZurwHQzDmUvPstQ+y2hDuTQjKD50FAfkohEtJRZ+l7BWzPxGY8nM5qX07ai9QFgNhqix
uS29C8Rno0VtQFVTGW+tbfOzYgGyFUfhM247fCeTk9u5TrAdePg7ISBgHfnzX0QSR5ijAtEe0NFz
MfeC2e/R6aaoeYf4ZFTFFLAqoSZkPx3m8QyLvthuiIpEM3ZBCCvu8yKnds/dVOtNhuHc7EskSQ8n
MLfgSBLieTx2dhqAJZkh5Rmhs9oSC/GEILsVLUMFrB0NCNjAI5FIYmysmtVGxYTfAdcPvwtZB9JK
wf59B7ie8O0SUAI8BOvw7RVk+hikKQhgqq+NLzNCSBoPy6Nm4umQ8LuPRcTi5RJqxNZ5AYCA1Yos
EQUSakHWKa3IavZzNaF5x+0Mg9eCo2e/3M9+XlkR5hfBBeRtp1pYYhlOTDYgoEGnw+EDakGDiJdS
JiTaLtliqlGNX8zEvMI3Qz7y6qvfcYJb9mQLQpEro6N1Dt/yJq4zPAQkr5aA3gzcD+vovvRNdO4c
klawDmcxSYi4sEpb4tEyJzBkKqkhk4gJFg+1C2Yfk/mMmVgKLYCYUoxvnT1tm40pJtGxKJCtW9j+
lncwDIsrF5heOMrkKMwtQlboal1vqNIMKUglWIcXxCYlioAzhRFia7gkOnVjlVZsj+iyRMPWlKkt
WQnfA23UUJUOyWfU4FsLSndZ+lrmTQcPXQ/hd4v7gTe/WgJ6AADWkT3+KZxmYDPVhHhBEaGWRFxQ
sKaWt3uGhWLdCCPaiVg/D2KmaABRk0oJEJyJ3QZr4qlQZBnN++5ldPM2huH87BEKLb9EtQKXytnv
1k9mO0piuhxGnP/x5nDKKowpFk9+BhSwS8Hu2y1FTD2wmMuhxmjGJsWV0CD8ruSLkLUFJOPgwZsQ
Sbj+EOcVF5/3vA4tCi3k3AsQaj9GrGM5fmbsCRvN8lBCMRnPdrqprdcKLUir1GDKrWh5BSXh2XC7
BOtI5bxXuxfcVzKU2uHDXA3Pn/hsP/ze6wot5y+BDb/b2i2x7y5cxzsh2kzzaEqQxvkGJfa7eIg+
rsJGSvcMuYTkDaZlq/mKQNJWsjmhyKBWS7j54J1cn4jziiWg+rr5VTafP4pOn0RC/0+k8t2cGVsA
UzU/pFOhN4MFCevDNOJ0Bqxg2TDWkMxk5mow+yskKiTUpIxZFoRuCi3Fj46w5eHhaWOt7jynLj7O
5GjCwhJ0uooLNRg0Sj4Skg9heF5MrVgYfrddNKzz2ggSTesKLalCrIg1tYJiUzURr9hTiGuXlusW
PN1FR54XbN++lVsPXbf6wf1A/WoEdC9wG6yj9+xjSHcJEgc2vyQ0x5Ah86jAJsRhTaJY+Bwbropk
rHmbCa3xAYF2FryJiMXMDpMkaSI2xgGbF7ib9jNxaLgGNLd0hk5vjmbDMzvvICQNABe00ICIimOJ
wfaIjgQDbLmE1YeGBcjUTscIuh+qEmYMqdFkELCmnW0wFvf/mzIXD8UiZC0BLdi9ezuN+jjXKW4D
7r0aAd0DAOuQs88jiQOGmF+WXJyNhBmJRrHi6zCr2WpIQ3ODAJAYcdjyCi1DRuG4ZUx+kJ2qCi1a
Zj9rQXLLzVQq1at2P3SuA144ezHBJWoiidbnA7YgFeJRMXsX0UgP59B5Y2G2RSIxf6ynOq7lmLHK
Ci3xhE877dSQlQotJD0l65dfgEsKLe647bo3Tu65GgHdDevIF+fIXylnf9lpCi1xfdyuJZKtG/hr
oiH0qBcSG3VSJB42Nw5OM7E5+L0ZuxPXcJAIGYHV4PJE2PKO91y1+dhLpz7P+KiwtOxYXFQSB3HT
1vqfI83pbfgdQ1wEeyrRsjCrHwnB9w1Li835sf4bk8AZ7QVki1Bj//mbAlVZ8YPqd8/khnHuufO6
r466+2oEdBeso/f0F5GFs6v5P842PTcNyWxWnBUngMRD7UP3FEIhXrMltpuifbfejODzhGI5ML4X
NB/LSfbuYeubH2EY5pfPsbhylvERmFuAQpV46wwQAiJyIcPEs5/j88EEsKwTMatCzUhAsKQkiAot
wGpZhyoCYfZQpA2HEm3TjRmvJMND8n4Jev3Z7wV79+5k48ZdXOe4axgB7QXuhHXoyadw4lHzP3is
RjN0WJ6pT4rO6jLRLB/UeRExrTyIISY188J0iDZlySuu5QSOaWIFqbrqfy48enAftfFJhuH0pacp
dJlaCi0XLqU4p8iwJMLwiSWfIZoRlnCEVcTfEeKwQYXofZvSJcHC3AunL0nk9zb7OVeKOaXXBtWc
A/sOITiuc9wJ7IU4Ad0OjLLG4fOc4uQzSKUSn/3FkIZkxlMaktPQxu8AljS8vWtCtLFIWoxYiJNR
jKyiDe9DhL4ihR6e8QfejDAcL536Ao2aUuQwu6C4cGSRzQPCakImATRarG5q8GIVM2qIDgUECd6x
sA6amAZJfIpFWNFu/UPE3HbGhefaeiX7OYPmSIV7736UGwCjwO0QJ6DDsI7ekSfQMy9BWo33ejbr
eNGprYKPm1Wx8LtNTNTwvlfwoN7ej/tusPVjhBBTbxaSmUa0IlPwmntk00Z2vvsDDEOWd5hZPM7E
KCwsC92eCb+LAkSzy0NLNyQfs7YpzCHhRCDGlxWE4AVE1YTlg7+HCi2CjQzGcp6DKKOBCi3xzGj7
V1zydPvN5z1btoyzY/t+bhAchjgB3Qot68hf/CrOd1AXEAzlO3GnNBqm/hv/TzDpoCQW9agvoMjB
D6Qon8WVMx3cLa7c03xwJ88hy65IXkBhhxKacTAeINb9UAGb7Ah29hfETDZBixw9sIfRXXuu0nz+
+UH1u3DuQgVVRQSbuhAvOo03nw8mXliiUgwC1jKbYsLzlpjRiKmmpnYruB7v62Pb3cb7RNvhgx78
AvRWoPAZ+/cdZHRkIzcCLM+krOIWYB2nn0fSBIk7lOMV7kHrVXFgyQn14BUQIAFXRWpNaI4jSR1x
NUiq4CpXzlwKLZICQJHjex3IumjWQTvtfpGsLi/h5+fR5RbazdE+UQE4E1kzzcowWg0SG9ljmqbb
iJySFwWN228nEccwPHf8MySuAzjOX1JcQtyxDEC8rQYIELZlVcCaZAJh+w3TPtVE0Q3CjeBbQBzx
MLyCKbvQq09BtXPiRUg6Bb15yLtCpQIP3P8uRIQbBLfECGgc1gmod/E0xfGnSMvm8wIaazLmIvPd
Q8Ip1+JAqkAdqY0irnllrVWUKt4n+AJ85vGtAp9dlnwFzXJ8r4fP8j4ZulqFpJriag2SsXHcRoeT
gorvQdbBd1bw84vk52bILy3i2xk+96gKLSCGjAzRKJac4uYXQfpAoeSNGrvf/X6GQdX3Ry+Pjwjt
Nqy0lCSFcEBgPK/HtruNEZUln1hjSlsPFqzDqJYI8YYbkTA/EAYIVDQyjFAGZ7ZBWWjqhr8L7yqy
onQXHHmmbNo8wsEDtwPcSAQ0DiyGBHQTsIU1Dn/qeVxnHm02kGhms4BY1V4RgrM0RdI6UmkCFYos
xfcc2VKX7ux5ejNLZAtLFO0uRaeLzzKKXt5/qpokOA2ZwSPOkVYruMuSNOok9RrVqTHqWyeobx6l
ummMWt7Bt1pkFxfpnV4iny/JCECi3k/bxxjMmYqZzKFkW6cY2X/wquH3+ZWz7NwinL+QUvhSWQw9
w67UaoxZRpx8bMEqwRqJ5Q0ap7MAaue6B9pR6ecR41cSxI7UES39YkH+zir5oMbVJgDBmWlCVsIv
Kt1lh/c5O3bsYnJiKzcQtgz45pshAR2EdeRHn0AoolnM1iRDFUSumGu1ymWpgkso2p5sQenNzrFy
ep7e/Aot+UqXrNUjV4drjpFOTpFMbifZtJPqhi0kk5uRapW0OUryJ9Jokl4WvCdvrVyWZYp2C9GC
3vlT5BdP4xemyeamWToyjT75Ci2VCi1UxhrUpkYY2T1BbVOTkR0NaHfpnm/TOdUhm8vRXFGR0idh
GpAFsWJM6D3QpIo8o3rHYUY2bWEYXjz5OfJinkoinD7rEFcgCDbiBRqrho/V2/UlPgotW4PFMKit
24jPH7RQpWRCVdMBUUzXgahj2U47DUPzSrl2mVLMQd4RRHLuu+dR0qTKDYaDloD2s8ZRtFbIn/si
lWotnlCIBx2o7ZUUGamSNOt4L2TLGd1zLVZOzNM+v0hvpUfmHcnEJirbb0Vu2cXowdtoHjjMyM59
VKc246o1ksTxncIPGuZ3Zy6ycuwlVp77OtmRp1g6f5K5o8eoJAW1qSbjByZobm8wuX+EbLrHygsr
dC9l+K4HZzrzmdHB0T5CCi0Zyrb3fAAnjmE4cvbLjDSUrAfzi54kCTOdBYSIhmFC7Db8TqT5vNV+
bBQLAdFoZaqU63goPpgDZiacBuH1eI8fW+9lndHx8Lt0PL1B8/mx8Tp33v4gNyD2Wx/QPtY4suPP
IrMnoFGDMMzrFRLpazluvH5ZaldIZ6nH4vFZlo7O0JlZodtVZGyKZNth3AO3s+WBt7Ph9nv7ZGOJ
5rWAA1y9QbpzLyOXhUffiwLZ4gLzz36Txcc+Tu/oU5x7/BhpcZ6RXRNsuHWCybdsoFgpWHp6mdap
Lr7lIQn+1ZtSDRsZksJTbJxk8u77GIZub5n5pTP98ovFZUeWQ1oh3s8H25ZVCDnF+nrAaEUuiIRF
tBhFcVASUUBMCi0CggaENngP/HnlXRBDzqYa3tyJlmeIrQMzWFF6ywlFXrBx0wY2Te3gBsQ+S0B7
gXX/j89QqSFewQnSqOAm6ySTDTSBznSHzjPTfdJpz7ToUKe6+ybq77qX5k13sfHeh6lv3UlaSXgj
IEB1fIItD7+zL3mvx9JLT7P05U+y/NU/YuHjLzKyscLkoSkm3jzO2J2exWdbLB/t4FsFuCGlF5Th
d4/fu5uR7TsYhmPnv85y5wI7tsArxxJUPeKM07l8cfqtux86wIV1YGZemBAi0oMj9OnE0v7CfUEC
BpNIFzJF4lOxQ/IJZHXQoyEic8cDrlB0DnotofAZdxy+j0ZjghsQey0B7WENQ70ne+bzJOKQJCGZ
qpNsaiDjVbrzHZaPzLB4ZJrl8ytk1QnqN99L/e33s/Guh5m6636q9TrXItJqlQ133N+X3k/9bab/
6N+z9Pn/jxNf+hKjY56p2zax4c2jjN3SZO7xFZaPtvG5RxJniGe15CPLe2x89G1Uag2G4cSFJ6ik
XZy4K9nPCUCMZJQwDwhnCIr4+Gs7QaP/xKhNSjycLpHWhpagVAkZziLaWF4g3nrV/sZWv5fml9Kd
E7Iu1GrK4Vvv5gbFnpCARoHdrGH0TryATL9E9bYduE1NiqJg8fgCK49Ns3RmiW4yTvX2t7DxR99L
49DdjN90K4lwXaHabLLjQz+Gvyyzj3+ZmU/8Dic+/4eMPXuJDZeJaPM7xxm7tcHMV1donepAAkrY
SREolGJ8jC3vePdVw+/nZl7om18rLcdyS3BOo90E4n4fc0fM9CNnWwUJYopNo83nbZP6IOplWAsR
JWxWZrUfbMlpGGInhoDMI+SECLSU3oLgc2XjlhH27D7EDYrdwCiwnAI7gAnWMHRllnRfQg/P4ldP
sXxshpUVhxy4i41/9sOM3PkQk7fchuP6hwM23fsQGy/L3J/6KWY++uuc+fwfsPDSDJvv38quH9jA
/NNtLn1lmWIpR9Igj6jw5JunaO4erjCfn3uZi3MvsXeH48TJhCz3VGuE/ZPiAwMlZBs11fLhe6SO
zM51t4nMCPG+QBqG3wPCERsaM1Nlr97POYTahUDoXhNVWPR0V9K+lnnTgXvYumUfNygmBrzzUgot
bGONo3rTfVw6/lOc/1f/L15qjDzyk+x4y/vZcO/DVGtVbkQIMHXHvX2Z+9BPMPMHv8SJP/4IE9uE
zfdtYWTvRi59ucX8syuoL0CuNJ8fu/c+GhNTDMORM19CWaaWCi2XZkrtR6J1W7EeP6A28TDapAxW
TThChFoRYBnKMkAUJhco2GXohmg45s12PzSTUgd3BZLMk88JWVtIUs89dz2E4LiBsa0koK2scbh6
ky0f/ks0bn8nrlZndMcuXk94r3hVylKxxIETwTnh9cCG2+9j8rIsPv9nOPdv/i+OfeQLbDo8zo73
TzF2c41zn1qke6lDL3Vsf8ujCMNxfuYlRupQFLC4DIkztVwQm3A6JCM6EMtL2C4+tmVrEHISMe4j
CYjGcpElHmt6BeQSHToYWasCRAmJttJbcBQ9GJ+osHfPTdzg2AotkAJbYB0CjO+/idcanaygm3nm
2zln57scu9Tm0nKPhXZOVmjpWqFQxfsrT1XFBWZBNXFsG6+yc7LGvk0Ndm2oM9FMqb+G0TYBJg7f
w+j//G+Z+/xHufCv/hcWjh1j+8PbuOnPbuTcxxZ55XiXkZsOMQwr7VnOTj/HhomEC9MJ7Y5SqQYc
E85QQwPzShFxQGRKainY3ty287z1VWvEJyQIagYSBmf2O4QpzJZcxPh/grMhDmtiZ0tKd0nI85wd
27eze+et3ODYUhLQJtbxmmB2ucfMSsZ8K+fIpRanZ7sUCOKEnldaPY+nDD8n+GRAPl7JVfEouXqy
gsuil6XoP3t5xtfOtcgLRVCaFcd41bGpkXLHzlHu3zvOzg11tk3U+G6ROGHT2z/E2D0Pc/G3/wWn
Pv5LTG5fYPMjNfx997Ph4K0Mw8tnHmOle55ddeHlIw6kQGJN4kXBAZiyCi2HLTK1Zpr1DVkrKwKx
DBDxfisgJrwvQHyMTpRcbGU88WmnahzQUih+HrKWA+ly3z2PUK02ucGxqSSgjXxHWMdiK+PCUo/T
c12ePL3MpeWMiZEaI7UKLR5hZLSBCHgg98pIQ/skknlPVlx5z71HABQKLQEvQuJAFcAhojgHlVT6
93uF0iqUpeWcE3NdvnJikV/80llGUsfBzQ3ecXgj9+6d4MDl98QJ3ylqExvY/Rf+Q5be8j7O/Mv/
jQW/nQN/7m/0a9GGdz98hlrVIwhzC56w+RjOlFEg1skcH8kc7EmscT3E2Uiu1v1QwEKtB9vUf8XC
62o7AsV6mlmSUiir33tKd0HIOkKtLhw8cJg1gI0lAU2xjlcHVc7OdTk13+Urxxc4Mt2hUkv7hDN2
+Xlge4NGJUEVekVB0ScbxQ+k6IvH+9XcGg94BSXsQ6aU4vtP8H71nhMQJ6SpQx1ooX1T7/HjC3zt
yGz/73Bg6wg/cP82Hjk0xdbxKt8pxm69m1v+918BQBiO3Pc4P/si401haTllpS04pwGJmNydIS1W
GVodL9ikaFGI7wmg2PKM0NEswRz5Vae2aVMilAvTQvXKffVxLQfb60Qi3Q9X/KD6vWDb5kl27zrE
GsBUSUCTrGMonjuzxAuX2nzj1DKnFnuk1YRGNWVyQ5PRiqOe/IkITsAreD8gDV0lmmD2ekg8kYiJ
DpnUYzoksnrJCdRSoSIJWhQ8d2yOZ47OMjVR4z13beWdd2zmgf0TfCcQXh3OTT/P9MIrHNzlOH5S
yHOlWgfESqz4NCKYZnAI9j7RWWABVO3dMOwealCRwScKLTaj2fRuRqQkKBOa1yHaD5Rn4hWdV3ot
wWuP2w7fyYaJ7awBTAKk8RygdRy/1OKJsyt84dgCz15qk1RTxhop46M1GqlQTx2VoIuEK52iCi2+
JBs0IBcIO6uG75T3YyPjCbUhADPeJzrUEGqpQwvP4lybX/vkEX778yd4251b+YEHd/LooQ0Irz3O
z76MSJtqKszOJ4jTSM8fCUbg2Kb/EC4R+26bjwUtB01BqQQEFlwCjfp/hlS/xyrZBUtEGLKCGCkB
hpBcPpj91YY0Ldi3bz9rBBMlAY0BwDoWVjI+/vwMXz6zzOPnW7S8MlKvMDlapZE4aqkjEXAiq+Ig
6b9feQIlWRjiMd3vVKMajy9/HyWlgQTDvhTAs4qQpIAkEZrVBJ9lfPpLJ/js189w3y0b+dG37eP9
d2zitcTRs19hrKl0Oikzc440LeJqlG02FgjDiAewZRoiJrKlIBI8bTxKxITfDVEZh5QGDXzi0S1A
45MuQsaxTmylbD7vafWr35Wx8Qa3H36QNYKxkoBGWOP4yivzfOzlOT5/comTSxlpJWGinvT9OvXU
kQBSEo9wRSif5Z4gCD5MtQ/9O/RJZWCeGW0oELzirUIDgz3DZEG1qIY9p1EINSVA5IrWplnO175x
hm8+e5E/vHcHf/79N3Hv7lG+W8wsnuTM9DNs3VznwkVPu+Op1g25OMASDVjTKD4FNVCPlLKLYQib
IxRwjhOEsvthrOOhEuYToYJYQsGu1dapRu8R3FWNDK5dvFL9nucZBw/exu4dt7JGMLKmCWi5nfO7
T17ko68s8MVTS7QURmoJ47WURipUnJCUZOMEF2g5l2WwB0l5JoIIeA0JRlF0dY9AAh+QR1cJyvQJ
9oQ+JKvhmI+VCHnIziETqFcTfLfHZz93lMefOc+H33GAn33XPnZ+F87q0zNPsywLJK0xlloFadpF
VU1BlhgtJwizOxAJlRIhJCPbtRALGRYJA1AI321WdNAs33Y+xNZxaSQ6FjZtQ6+ajAggg9nvvWXB
uYKbD96MiFtzBFRnDeIf/Pbz/LPn50nrKZP1hLFK0tcQ0pBkwmdISAJJXyR4D9wxJaFEx7gH5hXf
2swKLYnMm99TnvnyXVEItCBAlVAXU/OHiAiNiqM1vcwv/voTfPYrJ/lzP3AbP/bQDhK+fXSzjPnT
OVknYXyHcOiQcOZcRruTkSQuzDyOjFq3Be5mz4X5h/Y8bLMadeMEEFOLJaaCVe3dOImYwFaUrKw/
yJ6JkHYLOoPq90bTcejmu1hDqAM4oMYaQ5EVfP5iC2oJ41VH1Q00GgYEY8ythNW9QAKiAhFBQ79N
KFaLgahz2obeFbDEg4/+LzsyqwotQke1KKCA+Xu4xPU1vnNHLvE//dwX+as//zWeO9/i28Xd+97P
Ow79FZbmOpx/sUs+69i/O2Hb1got4sArILqaBR0Pv5unIZBgH8JXtWVjxj8U8TtHZ0pKqCgF/jmN
t9CwzcdC0eAbRKaiiiJLnu6ikGc527dv55ab3sQaQg3AARXWGJ49ucDx+S6N1AWEMjC1XLAOzK1V
LSg8J/D/gI+Fzo2G43VVVIk6o80MLxsBCw/MmE37XkpkoioaEheVSkKS5Xzxky/wV/+7z/CPP3GM
5Ux5tahVG/zAn/oL/JU//7+zc9thLp3sMP2iMJFUOLAzYWxMwnFb0XC6uGAPCd8NcRhIpNmGGtPM
tmgFBA12NSCh4MeG1O202QjhRJzU8fdiEbrLgpJz+NbbqdVGWUOoADggZY3h9564QLuAijWzwnej
CZXrgawSEWXRqKySDRr4cELiiUTBlLgJFobfgTD6pYFmo4NDxZCS0Yhs2F4NgZU+kFrFMXdyhp/7
+c/zV/7Px3jp9ALfDm679X7+zl//OT78wb+C6Ainn++xcrrCzvGU3VuhWgWvoMTLLKxmZLOicRD+
yxejy5j6r4Bsgw3LL1ivtcRNLzuzP6QZsWOMQnMr6OMtIAotzban0U4hcySJZ//em1ljSIPuLGsI
qnz2fAsqSUgq9r3UeAISMtqPuWvNLB84LL0nOFPioXlWndCq2DMgNKPCicZgCCbgH/ORmP0HNoST
pI6q93z5o0/z27/zFb5dpGnK+971U/yDv/VPuO+ed7Ayr5x8qoCZGvumHFs3KEkCRUgEtiGZrYAP
DlbPxJaBRWwtCbaMk1pBwPp+QtIOwu/BmcRC8iHZGA22LLHxnvFuwbalHhvmM7J5pV4v2Lx59DJx
P8gag5QspGuJhC7OtnlutkM1dbjQpIqYYglBawzoS/ib0DwL/TbekIqiQ3KCgmiXhpGW4PfGqRyS
hqpHLcFYEw1dfagajQhLXldEHBUpuO3gJr5TbJzazp/96f+WF1/+Op/+3K/ywotfp3YpYdPOKns3
ZCzhme8kFAotqUQiZDZeHgu/24ZjASmHd8V+Ci0QU5MmYfhdIuaWJSLMneCeF/AootDIPPVeTq1b
UCwJ7aWEzqKjs5TT7rR5y8OPsmnjLtYYtCSgfC35gT797EUutXLGxuoDQomE2YPwu3BlnZSkFPqG
Bu8A6jXuTMYQT0A6lHciZ2qcoKoKLVFzCwBDJAAaEkzEdAj3r0j4XhSePdubvPXhm/huccvNb+rL
l776B3zui7/LqRePMjJWYfNuGJssaDlYzB2ZFxIRRGz5RUAcBqZw1KhSgEbC76b5fHhUQo3/x9Z1
gZgYQGliCQotVL2nmuXUujmyrH1fz/xiSnfJ0Wn36PWUTRv38rZH3sEH3vsjiDjWGPKSgLK1REC/
99IcVFJKUklKggn9OsF7EouKmfsEwSlPhFDK4tNSUEKfkI8TVBh+D8LpIDFNxpZjoBB3TMdLOGy/
G1+wb1uDjVNjvFZ4+M3fzz13vYtvPP5JPv+l3+fYc0cZHaswtdWxY3NOPqbM5ykdLwC4aPmFddXE
83xsSGw4FMSZuH1kfpdGpmEEpJNqQa2XU8kKLVj2dOYci0sJ3Zaj1y7o9Xr4osZNBx/igfvew913
PcjY6ChrFFlJQF2gyRpAt5vzxFwPl4SlFCG5SCCQBEmISeR8IEFujprCUVv1vip2GKASaE0BKXmw
4XdLKtapHJCWoiHxaPgJq/kAAeFl3S733H4ARHgt0aiP8ujDP8R9d7+bbz71Gb70lT/kxNGXqJ0W
prakbNzsSaZyll3Cik/wIjiMP4igFMMIgGoZmQyynIPm87bgVITSvAvC75Guh+EkVATFk3JF03G9
HF1SOjNCu+Vor1T7pJNlPYrCMTmxh7c8+C5uPXRfv+CUdXRLAuqwRvD4K7OcWOhSb9RwoWZDSTQY
E0uCd4x25FbD7yHxRE0pwxmGmFQDjUitX8gUFAUmW/kea1QjgGK0IUxoPp6MhC+UTROVy47kw6+2
qz/ICN8Oms1xHn3oB3ngvvfzzHNf7GtFLx15kgtnWkxOJUxshrHNGb4JrTQlc44Ch7JKSIgtMBVr
kdkJp0HekAB2QqqWlGTygECdgHqceKpFgevmaNeTz0F7Xui1Ejotodf19LIeaVqjUd/Mm+59lIP7
7+bwLXczNhZok+volAS0whrBJ44u0FOhUfp6SnHlMyQYkJKQ3ICUgrOSkBDBe8Vjspsh1HpsAWqg
vATEQ6QyPgy5W+dywCmE54AG9l15jjHnRMMzBaD0/+zbXWf/3k0MhS6x8sJ/TXXlC6TbP4zs/A+B
BhZXyx+6/5739OXs+Vd4/MlP89VvfJKTL10iOaqMjaeMTCmbtnRJJqBTSei4lEIdhQotqiCllgRo
qelEG5URrX43xaeBG0lJ8KQDwqGTky1Da1roLCb0uglZF3p5ji8yKtUGo6M7uOPWt3D3XW9hx7a9
35p01rGy5gjoa+dXIHE4YYiYJEQxkTKC8gsn4T/8aB4gNvTuIbzrTaa0Nz4h69sJxwJD4DgG+wej
PrSrQiIDAi0MhdAc9FmXg3umSJKUYbjw9f+a4vRv0EjqvPjZX+Lwo59m4v7/BaoP851gx7YDfXnH
oz/O8ZPP8o0nPsVLR5/g3LFFzhxVmk2hMeIZ2ZAxsdlTHVd6aUrPJRTOoeLwKqgKLQCCmNqx1foy
x6qJ5gQcHuc9FB7NcsgKLbLWFedxe0HoLkG3I5cF8rxAyalW69SrY2zfvp+7bn+Emw/exZbNu2g0
6qzj1RPQEmsAZ84v8bXTS1SrFePLMaaWi2k6pRYEiRucmexnr4HG48GHSYSAhn4dHdJyA6D8HQot
8ZwdJOglFIpiYH5nSQotxWhTSq2ifPA9tzEMeWeG2WNfYvt4k4X5OtOXRvjGRy+y7+TPsOeyjyfd
/fdBdvCdYGRkgtsPP9KXpaVZLk6f4qUj3+DI0SeZX5jm7NFLZC+2aDSEeqMgrXpqI0J9FBpNJa0p
Kg4VoEwSFUFUbYsC1EPWFXotobMMWVvJekqWKVkXsqxAgVq1xvj4RjZv3MDkxHZuOnAve3bdfHlv
M1MbNrKObxtLJQEtsAbwseenudD1jFUlCL1DKMKqD0hcxBdkyjQQQb0PncjxrobWr4PtF8Tq2ofJ
iDaf3xSa2mxna4qF2pCJjmm0wbFS5MrBrQ3uvWs3w7B05vOQTVOtOi6cb1Cp5Khrcuy5GjNnfpOD
936Eqfv/Sxj/MSDlO8XY2BSXpe9H4b3Q7bY4f+E4L7/yOMeOP9snpFZrmZn5RTrdFupzRDzOKeIE
F86RB9SWwQQdLJMkoV4fodkcY2J0tP+8nMvEzu03s3vXrWzZtIt6ffS1GZe0joWSgOZZA3jsfAuS
pNRugmcgjtXIGJDYiBcE5hlgtJih5Viq8SCWLVYlOLehc8JD60Qm2ASsuWXNuvLhw29Dkefs2jp6
VTNi4eSnaFQVnwmL84JLFHFKkkC7vYHnvtxl2+m/y657/g31Q/8t1B7itUCt1mTvntv6AuB9Qa/X
YXFpltn588zMnGVu/uLl9QwrrQWKIsd737+n6nEuoZRarU6jPnZZRhhpTrBlyx42b9rNxPhGqpUa
SVJhHd8zzJcENMsNjvZKj6+eWsRVE9PNsC/BngsIxkTFEEKyEhGTSqOGbGzez7eufo8mItoQuSkP
wEayVh+WlGJmlyE1UK99Ec15z9sOMQxadOkuHGFjE1ZaCXmmVCogon1JEo9zKZfOb2LxM8+z7ZUf
ZMud30e6669A9bWt+Haur7X0Zcvm3XAz1y60BdIE1lHyjgNmuMHxzZMLPL/QozHEAZ3YIlNXakQQ
akelP0hE8BiNBQJCMVEw4tXvgW/IFLIKLRCL4Zs+xKZKPmygTvAeYTkgfFe8h8km3HPHToahNfMs
ResM9ZrjwsXGYDKEmtldSlrxeGly7vgYL3/m95j93Afxp/4B9B5nzaCYg/nfh1N/h3OffQvnvvaf
gs7COmYAUmD6hiegCy0KLXVRs8sRq3TvS6AlYTOkg8iRSToMSCei1ZiG87HJGYPfh1oOgZYDWD+P
2iFV2OJUQ1TmfbVo1rNjS8r2bZMMw8Lxj1KRNqIJc9NCkijIQANCEafgAMCJ4lLI8knOHC1YuPjP
mdrxS4zt/1Hc1v8fNN7KDYfsPKx8EZa/DHO/A+1j5AWcOb6Lkyd+j7tmT3HgXf8QV5lgDWO6JKCL
3MjwyqdemIaKMz6doKVqXwJSEivYsgxb/W6JJWKOASY8731wFio5IbFgyidsszEMCfXFEg22LiyY
U64QZD+//eFDNBq1od0EVi59k5EGdDuOTluumFwCEvT0cTIgooFZ5pI/Eeh2pzh/Imfhwi8ytvFX
GNv1MOmWH4CpnwKZ4LqE9mDla7D4CWg/AStfge4F8IAArkqnV2VpZZJWZ4rnvv4yu958mvqGNU1A
F0sCusANjKNnFvncmRVqtSrOYUsvTNvVMCM6NMtsKYapfg/C8Ioxs4y248PKd0CtJmQKLUcNkUTa
btiQlnVexx3YNvymCi3jDeHtj9zEMPSWT5NdluakY/piDe8hTQEURAmH1giBWTbYd4m/LELuJ5if
9rQWv8DIyU/S3PwLVDe/G6Z+DJoPgNS5ZlEsQ+c5WPoMdJ6B9uNX1gVASTopiAMVQFleqbG83ADN
2bBpktrINtY4LpQEdJ4bGF89u8xCAWMOEuNcDp6RUotAEMKGZYAdPhhKNAJmHc4+VpYRtt+wpRYh
qXiNhOZNfVekZV94jmlw7wvPpnHYs2uKYVg8/UdINkO96pi5lODEB/6fcOCgUj5LIdzrR8wUpUmr
1aB7+iS1i79AbfRfUB3fTzJ2D2z4ARh9K6TbAOENgeaQz1whmaVPwcqXID8L+QnIFYRVJBUIpxQi
gOJVmFto0O1WgC6b9r0dqW5kjeN8SUBngYUbdUDhl08sgHNhYqHNcLbvhowG78FoHqzTmVh0yzqV
AUM6Ya8g65AOWMWWYhhiAQD7lICQlEhbDvO9XrfH3Ye3sGHDKMPQnnmGRq2gKBJaKw6XeEQA0dL0
Ci0IiYB0wA2eIWGJ40oIP6mQ6wR+pSDrHqEy9xzJuV8lbW7F1XZB43YYfw+MPAiVneBGXnszyrcg
n4buEWg/CStfhewMFJcgPwO+C2EJWeoCMhdQACGctIFAr5ewsDBCliXUa8rm/ffDeg7Q2ZKAloFT
NyIBLSx0+MhLsyRh+D0UZ/07cZMrcVBOxRCBkBCirpdw1M7qmZmGEfcZMazIFFBi7VVDssKQFhgG
NAmJivdQr8CHrpL97LMW7ZmnmWomzM1V+j6gSupD7ScgnoCIynMC8kEBRSQkKMUlgKvgSZCiIG9d
IuleIFn+Bsz8IiRjUNkCyUZIp6B2E1T3QO3AlTUJSAKSrvbb0xzIrzy1gGIR8guQXYTuK5BfBL8M
vg1FC3QJfDtoQuTB1cE50C6oB8S0P3El8QRrAVFWOhUWlxoUubJpa4XxLbewxnEKLVgmSFE9CdzB
DYZvnFzgyErRb37lQpPL2Z4+DC/PgCsiDhGhMLk74ehkpf805xiyGtbA3jISSEAo0e6FaMArti2r
iaQFRBfWjE3UC26+SvfD5fNfJlt6heaOhNPHq6h6xAGhCTYQGYgLzC9xijC4M/DFlffC3vMOrtx1
IC5BnECiICn4LnRPg5wGFeBzA4KoAgK4AQFVgWS1zw8M9mtXzhSQ0SvvooAHKgPNqgotSRd0IJSk
44k2lA7XavpTq7Cw1KDVqoH22LjrVqqTh1njOAkQEtCJGzX8jnOkgHOm2j3sgmjD745ybSJmQEgm
aPAe7+WsMTPLEpSpG7OkoSa/R8Kwv1riifQGCi1NOewfDllecNPBSbZumbwKLQF9harr4qiwtOhI
nCIEIlwRQphWqG5wj9BpDRhf0ZVzkHAOPAKhduOCd1KQgVA+k/LdnCXBuQftXBF6gIIWV4RitWAs
bLZrm93rQOycZoGsEOYXmnS7KYlrseWmtwIJaxaGbxwAcJwbDD4v+Mgzl5CKIz7bi8goHtPrORxK
OFgrxqFskw0B4sRjNCGllAiHxPN3AELNhoBQTNlYGA0Ta8qZhmVSZLz70f0kSTI0/N6efY6RpmNl
JaHdcrhEwYGU1gYDEnHB05WkE2hKhM5pVu8L4IIzNxA7GgMz6zk6GVUJGkRfkVCL0YGQA0VAMEVw
byCiARFF/hwEsLOXAaDdrfT9P3nuGBsXNmy7GdZx3BLQMW4wnJvr8Ph8j2qaWIIxUa+gF9DgXWyG
NANzIQybl2KiXEGYvS/eNJ73plEZxhcUrVS3plfIP7HaLzS4GwnbmxFjFelx0/4phqEz/xKdmWcY
aaZMT9fI88C3E/hysLMFWTW7yn0k9P2YfYIzAAYEpLa9fLAWBzjT20cipOXC/YB0AtFwrySegRDr
Uq/G8cwqBJZWaqys1FFfMLVlM83Nd8I6jlkCOsoNhqfOLjGfeSouyPEx/Z8TIVJoShB2hzD8jggl
uaAM1WDUzvIiXqjqQ1POkItpr2pC6jaTOeJUwt6xJphS5J7dWxvccXjXVcLvn8P5BSqJMjudkJRa
C2FUKyAbQzJRghGiEbRyjQhO1JBMqHJFyIg4+cRJSQNysZqPggZ7EppfAtiZQpi1ol6YX2zQaVcQ
7bLpwCNIZQot1nHUEtCRGy0j+ne+eR6cIw0LSh1xJ7OUPqJyAgbRnkCEOTtEiIdSVkPsKPF2q6HW
FBKWH3whwlQaK8HAOJWIRNIIsyFBVw/Ier3L5tcBxsaaXD38DkUug/C7MavKZyhm3xCSIRuFgKTC
c4QB4mSDlrZbTMshQjxlgqAlFw+WhLBrCwmeSmj+9XLHwvwIvSyhUS/YvO8eWMdF4IgloEXgRW4Q
LC11+ey5Fmk1sfk9pSN68G67IEYICi3M7HeMKIodx0O8LANFMXVgwV3r4IyOViYyAwxLTIpimJHy
GyERQUUy7ji0+arNx1rTTzE2kjA/X6XXc7igzAIBxDqQQzFakg3bowhB1MyF9wB1gIAdAK92iJjd
C/1ERkJyCX1DUr4XJTkFmpCJdsXMrnItsNyusrTUwBfK6OQIo5sPwzpeBBYtAXEjEdBL021OtAuq
TpAwwmW0HYcZx4x1UK/WipXV79gaL6x/BzRCPKZg1ezb8Lvt3xwwlol8RYcLhk7uIWF7XygbR4U7
brtK9fulJ/DtszTrwvxsAvgwYmW1n9CvE70HARkR8oUG/mRBxAMEJOICkXCYfMwsM+JAgqdgIlzG
DNNAI5KAuJHIJNX4dML5pQatdg18l0177qAydhPrCHjGENAL3CD47HMXKQotpWK0HwHiWc+rppcr
Sza4IjK4jyETH3JFyBGEviFTfmFKM7A5QdZfY8kFwBaqYhuRGSF4GvLqdTMeuGcnO7ZPMQzt2eep
pRkCLCymJE4hzNmhJJIBMTnKnB+TlLh6BwnOjD8JCX1FZkA85l1j+zHNxzqyfSBFSERGNDgz3KOB
xoUGa8iLhIWFJr1uhUolY/OuA4DAOl6AOAE9zw2AvFfw+y/OIdU06O9sZr1zRRI3JBExmIQhCCVB
hOF2r4GAaclhImbGdxSfoBxWv9smZAEJmbA8PvJBBQGwZRwBKToyHrl/F8OgRdav/xppOhYXK6ws
JQP/j1E6SgJBYdUEW6WCMFpuIlyC9QlJeT+uyVitxjqa7e8kEBwoYH094q1JZsSaX3FtqHy0uymL
i03yAkZHHVN7HmAdhmcMAT0LLHOd49RsmycWM2pp2N2wlJBcCOu7IrO/wqeg6k0BuakH86G2YyRS
oOo1JKZYkajx/9iQOuHMeEyrDZN4GA3pQz0puOXglqs6n3tzzzM6kjI7nVIUirhoKUUk1wdKIgKw
DmlnI2Si9juBuRUQDlzFz+MAIDzXkIxCwtHh4Xes89mWW5hjAIHFlSpLy40+gU9s3cvItgdhHcvA
sxAnoBPA01znePzkAiu9MvwOicPm9YR5P7bPjxnRXJYLQOi3IVbhzqr48h4aH9WsgOmeiL0Q9fMo
YqtaUVA1hAXlOrQewu9kvZzbb97E4Vt2DCeguRdwtKkkyuJSspr9LDEZFhnTCMlgyCc8VyCE+9bR
L8X4hsS829wgjUS7imAdvtvyC+LmF5jyiyaddhWRjC17bwPXhHU8basunE2f4TrHv3tuGhJniETi
Gc9uVfOxGlC4pxoWkmJC8CHx2PC7jY6FUzEUyzegaFiCYcblmB7QEZ+Q/aDtCS2r3yhy7jw0SZIm
DMPS2S/2nc/tdsLCfEpZ/V4KLSHBWM3G5vlgI2KWcMI+QmpD6oZU7DN+BzX7Ci3grVhSCi1IvTwD
FKsFGUICROjmV/w/WeZoNgotNu0+zDri/GIJ6EmuY2RZwddmurjUmdB7SDpEIl2GfIKImIhDbQOx
eK8fGzmPttmw4lEguEig5XibuayAmmmpQKRmLBodC8hRig5337adYcjb07QvPd43v+ZmUrIuOBea
VYolH4zZZVpvmLC9MeMciJPA0hIjdm+I/0cJ9p2Jptms5wI01HqCfRQUm+8TrDH7ynKrwtJSE194
xibHmdj9NtYR5xdLQE9c196tU4scn+9QT50NvZs+z4N9I0lk/LIAXoFILZe/aoV7pOWqKmreKSWm
5URLMBSJzQHChvGDg+BuXnj27RzjkQeHh4W7i8fRbJZ6VVlcTBCnEPb1cWHUyiQgEtZ4hRnSYfg9
uEP4DTU5PS54YrWe4C5DwvEuNL+stjM8EVFMuF3DPxfseOfFpTqtlRpoj8177yJp7mYdcX5x1oUC
PHfdZj8/fp62FyrW1LIkE+vzbJISyx5AEJKGhsRRSjBOOd5gXolrTR5TLhELtwdZzKKm8LR8V4/t
/xPG+O1csbyXcd/tmxkfH2EYFk59mmrSQQthfq5CkijOtNxYJQ0PtvUGgIRkBUTML8SE3/HWiWzr
vmKakNl3kT0itV8eiGk/tv7Lwla/C6AU3jG30KTbS6mkGZt2HwTWMeCVx69GQB3gG9dt8/kzK5Am
hJMurIiAw5hbUYJy8ep3U8Plw3N7Jwjd2yLUkLBQMGqS2QewDmtQO6jQ/haic8V83uPQVYpPfd5m
6fQfMdqs9Esv2i0Jsp9BAMFErwg1HiDMBWL1XVAonyXhBGSENb8AxMV9Oth3scRlzkICsmUYMS0I
E+ny0XB8iZVOyuLiCEUO9WaVyd0PAesY8EonSkAGX+c6xMX5NkcWe1RTF6l+fzXOZ3DOkBViwuYD
CUbxxJvLQ0lMEI5kBkzbVmwT+uDdtGA1/Z7NxFRsc3qiIf2iULZsqPH2t9x81ebzeessIw1YWkxR
XTVJbcQKLUzACQJCAkI/D9YRHYrgxIbfHabMPpr9bEoy4nlAKFjtR4MImMSjX+AgdDQTNDkzBLW0
UuuH370v2LhtJyOb72YdlleGE9DXuA7xiacvcnElp5YISUkyLpwDBqH5JSYJscx+DmvCkFBrsRnO
RGd8QTz7OVz70KSLkESwiYbjkyPTLYSgRIMgoDPYs6H4Ii/Ys7XK7l0bGYaVC1/H+RUSBxcvVUmc
B1NKYZrOG0dzPL8nDM8Tb+VqtYpIRMs6nOXVteAQE+mSaN6PMcMMw0jgbzIOalVhfrHZr35PJGPL
rp3gGqzD8spwAvrq9WiG/e4Ls5AmdspF/B1IMNXwAwlHMBO2y0DjUTBsdXusM8Zqwaj9DrFoVuBE
FjTmhwjIJSSq8sz+ZrU4Nc+63HFoI845gDjUM3/8ozQb0GknLC0kJAkBoRAnGKPhYHN+yjU298cT
khg4EEzlelwQa3K5IS0yrG8nWMdC8VgoqI2COQAQpZMlg+ZjCdVqzqaDbwfWMeCTr75aAiqAL3Md
odPJeWoxI6k44h0PTdtVsxdzVotga7kiI5jNeTwKLRYZzwye6Kz2iD/H9gaKT8gAIDD7YuqZ99Cs
wgev0nw+a52nO/c8Y03H8mJCnrM6ZNA4kUOzzDYYc0I8STGaqCggpvuhxkws+26JwBBS+dSQXEzP
H2xUrAjSIiQShpdocvRKu9ovvyhyz8SmLUzueRuwjgGfFHECiuNLXEf45tFZTs53qSeuJJbArLJ1
Xrbtqq0XW22/4VXN6C01/ZsDYgGbdGjLNkw7VuunwWY3h3sm/G6SE4M9CEjKRMuK3LNnW4Pbr5L9
3Jk/AvkitSrMzqU4UYiVSZT7zkSynEKYE0ToiAYcCCYPKCAxrE8HB5Z4lKskHxoR6/8JSMjWgokS
D78DuHhhKrC4XBs0n8/YtH0rrraZdQzjk+EEdI7rBB8/Ok+mkDpKYrnyLN8RXDD11JZgmALUIPwO
HjuCGdPvR+O+oejEC0LyMoWiAYOY3tCxVkHWH6RxNQ0JTLYiz7hp9wi1eu0qs98/RjXNoBDmZiur
xadlmNz6g1GsyeVg9a4DwX4jMNVs/k8oEimvwA1pPIb9jXVAB+9F+Qz2hmU/hwj/rkqWO+YXRuj1
EhKXsXHvfYDAOs59JwT0Ci3wxevGvX6xBZUkqHQPiSVssYGZjCphJ8Swcb2p+4o7kA0pmXcboo/N
/yIe+UIjDcnMe9iMjEjFO4BCWCRL0eOdV4l+oZ727LOMNBydjtC9LM6tkgcOBNNCozwP+kDjtCSe
wRpwJenYJvZSEpHVdIb0giZegkHkvkK8wl2N2RWaZFhiC6JflvCg1U375RdFASOjNTbufzuwjgGP
vDKcgOL4PNcBzpxf4qunFqlVkjDEbgotS0FktblYPEco8P8gJpKleAICIU4o8TE8gTvGmEWhvybi
/zEO53itl428x6ter5hfu7Y0eMuDB66a/ZytnGakIczOVlEfOJdZJR9M8zFQBDWRLCXMEXKAjZoh
YWgf49OxTmabYDgk69lGvyTWdD5SkCoKLdbBo1bjifh/+s3nG6j3TG0ZoT6xm3UYHvkOCGiJaxwf
eW6a6a5SC3J7DMmY7GewviC7RlZJxmP9PzHzCi28bVSG1Yx0lYTiBWNmH/AM737orXakqCGf8j3P
C3ZvrTE1NcYwzF82v1wxR+qEi+eruMTH+zpjG9DbyJd1PJu2rZH2G6+y7mu42ITFePmFiXgN7f9j
Wq+aiKQo3gtzg/C7o8uWvXfhqptgHUvfDQE9DvzRNe/dutiCNDHkEp/3FZ4n4T7hUEIxKTm23isw
x4zD2YqPmWqA2uZgAJh2qpEJFkAkJK+I7SMUaWbm84wH790NCMOwfO4xmnVH1hNWVoTEgSUUJ5g+
0BgyMYQU6wsmagnJ5O6UMrQg1ZTkR80wM9kiRkT2HTPllAihOcqzTi/p+3+yfvgdNh96H7COAX88
/p0SENc6AbVXenzlxGJ89jsDidSA2dyf0GHtCEjDRK28HTpo60DDs5jGZCLv4Q9L2L7OgcfHMtyg
EVp53ZhzfvCO4j2MN4W3XsX8Krrz9JZP9s2vpaWUIpcgohUO+rPJhQRrb9ZAQGDY8H1ISnp1jSfe
osNGv8ICNIAh5pcWhoTizefBmTXAavh9qR9+VyamGoxtOcw6LH98ZwT0WWD+mg2/n1zghYUe9TQI
pYdPtypOCMPvq45pCZ+ASFDlbvw3QfN50yfeEFakCDUgNrAH8ZouCc8Izoi0cPVASF7BxENfeDaN
wu5dU1ft/ePb56hVHRfOV6MkEwotKHYyBsK3NMcA7HBCCJrPG8IZSjLyKk2zWH1XuBa7ZxN8jHYZ
Fp8qAP3Z7+1WFaHXz35OmztgHfPAZ79bAnoc+PQ1G/06v4IXIQ1zemzfH8BhfUDgCDoeBn4h1JZc
BA5osKZUIGWdmCElM/8LiPprTNV6rBWryX621e9gi1VLdDs9Hrx3J+PjTYZh4cTHqVU8msP8XEqS
xLofstqQ3mEKLU0DkoKBmHHMTgEPGL8SEpXhzceIN6YXVjOoxRKPqYC3pRmELTcYMnwQE35PSV3G
lpvfA1KBdXwaePy7JSCuWQLyysefnUbSZJVohJgvKNgLTLEwWhacKzbzGYg3IbNaks1UNk7qiDsH
BVuQOkQ7Ci1/p9aMM/ZdufYeGlXlA+8abhZo0aMz/zKjTaHddmQ9SvMrqFqHMOfHkkiYcIhECi1Q
gzQdV55F/T+2z48VF4rVgOzoHSMajNnx5jkk/G6naqiCQGcQfs9zYXS8xtTeh1mH4Y3vkoA+BRzn
GsPRs4s8dqFFrZoETueAYIw2ZH0/iRBmTfdFCKZahBoNakLskSJTgjOjMYX5QIZcIhqPGaNDvO9z
SDjWaY2ZXzZRL9i/52qjd54jXzlNs+GYnq6gKkEfH+PnIdZMXsyECyBuvgV3BGzzMWxpvSWdIaUZ
lrxs9MuOYI75goQSluFXJSCnxXL2uxZMbp6gOrYT1nEc+NRrRUAvA5/gGsNXz66wUEBF7NQLrAwy
ocP2rIFgZ79jZ7uv5gIpFB6KwTPz2pfcK4VfPfPBfaspxadbWCIJyGpI4mJowkn8Dlkv47aDG9i6
ZeKqs98TXaHiYH42xTmNDA4MiQQzy8vsB4Ihq8ChbWa/fxvz3WX43cD/YyTYE42bXwiE/h6NmHsC
3l+pfu92K6BdNu97EEknYR2fGPDGVZG+2moH4C9zDeGLr8yBc6vmE+AISjGMueXKZ+D7sdNSUfBe
KfSKZANiyT0okAhIAhUH9VQQHKrQzT2dXPvPbq60Vck99AotT14oxYCktCSKaJ8fzF6sqTzEchQJ
Hdy2RqzI+eC7DyPOMQyduedpNiDPhFYrwSWGNFykFmzI7HcsScXXEDafJ25SxUPrsXvGdBOj7Ygt
Og3PTfvaqP9HV7OhBbpZyvz8CFnmaNQLNu27F9ZR8gWvJQF9DPhj4Joo711c7PCJo/MktWSVbJwY
MywYLChgSy3KhmOUpgCCR0kFGhWopo5KKn2iGU2hkkAtEaqJ4L2S5QV57skuS6FQSk+hlSnLPc9c
97K0C5Y6BbOtjItLGcsdj88VvEdUcXboYFTzUTTmiDbmnCgowW88jDf0qs3ns9YF2tNPsnU86Ztf
vZ5QqwUtVglJIzLjPUo+YeRcw28N1kIZsgdjbqlNGhoi8XMbWrdrOwl1yOz3JNKEXkCUlU510HxM
mZyqM7b5EKzjj4GPvdYE1AI+co0QUD/35+WVgpGRJCAV24Y13nIVKeeOC1UnTFZgsiE0K0oqSkWV
rJuxsNDhwqUVLlxcZm6+Q7uT08sKLbrdgs5l6fb+RP5kz5MkQrWSkKauLyPNKs1GSqNRYWKizu7N
Te64LH5Xg9mOZ66Vc2auy9nZDu2swBcep4rYgYJh1TzxwYUQa2avKIPs550NduzYMJzQT30G371I
vZJw9GIFZ8PvDmNODRuvE4qNjpXKjiIIghLPeI70cy7XVyUlN5B4k/n4e8z8MohUaMwv1mm36lB0
2bj7TioTt8I6PgK0XmsCAvgo8DeA3bzB+Oa5ZRAhHRCJi4lb7evjAQXSBKaqji2NhIm6oylK3u5y
+sUFTpycZ2auzdxch3MXlpmeWaHVzlBVEqfUKo56Lb0sCfXqZalfllqFsbGEvFA63R6LSzmdXkGr
nbPcyskKLQUFlwiTEw127Rpn06Ym23dMcO/uSe7aPslMu+DSfJcTF1osrfTQQnEKLWI1ItNszJZo
xAotWLNej7c/dAu1WpVhaE0/1Q+/owkrK6X5FRAOptg00HRsd0TwCBBv3+EDEwzEqSWaqwhgNSTi
YswtMwPeNKLXmPllHeNKWFvWG4Tfu92ENO2w5eBbAMcax6kBT/C9IKCngD8E/hpvIHxe8IkXZ5DK
wPxyNtQOAF7BORhJHTtHKmxrpow6pZLnTJ9e4OmjM5w7v8zJ0/OXnwuoV0YaCWMNx54do7zzTfs4
sG8jGyfrbJ6qMzFeZ3y0zuhIrU9GaV/jSUgSh/d9baMvWa7MLbSZnm0xu9Bl/k80qekVnnnxEs+8
NMMrR2Zod471K6b37J1k644xdh/YyO5bJvvm2umLK5y72KKXKwlhJrQ1zYxGFAmW1VzG7Yc2Mwy+
6NCefprxZsLiQtoPwVcrBYSE4zAzvIzmQ2SssomaAWE7V1P9TrwKLV4AjTQYG9ayQ2LV72pG7xgz
TEz4XY2/h3Adzn4fociFDROOyW3r5teAH556zQnI/AF/GUh4g3BmrsPXZ7tU05QytC6AAgVX1hvr
CQfHq+xqpjRQ8pUux75xhhcuk8C5C0tMX1pCvWdixLF/Z5Mfe/dhHrh3D9u3jrFxssHUhhEQx6uF
c0K16i5LBYCJ8Qb7dk9hsbDY5sJ0i5ePzfLpLx7jy4+f5+hLlyj+6BU2bRnl5ls2c+i2bezfPsrZ
S63L5LhIp5WDKi5M/LG9gbAlHFAUyqbxhLtu38kwrJz/Kr3Fl2luSzh2qgotqiAB4URMrrD6PQxK
2ep3AYiG3wP/jwZqFaUQmlyWnK7ufEaBYdpP4HQu923fH9QQkkA4+325zsplUZ+zYetWGpvuYo2j
GPAD30sC+gjwB8AP8QbhydNLLPY8oyOCArnCeCLsGKlyaLLG7mZC2snozC3x+Fcu8cors0xfWmZp
YZktGxvs29HgB956kLc/fJB9uyfZsW2CJE35HqMkpr4cOrCRP/Xum/ua0smzi3z2seN86osn+doX
j/ONr5xi/82bOHDHdu67YzPTc11OnZqntdgF9UhYCR+qOyYhsdft8ZZH97B58+RVyi8eI3U9Uqmw
tJiQJGC1GiAgm7ivB2eq4l919bsLxRCNISGN7BEL0Sto1AQz0bDChBQFUDMBQ8zsL9BB+L3TqeCk
zZab3oqk46xx/AHwke81AQH8uzeSgH7niQuA4AS2NivcMVXnzskalU7GytwyT335Ai++cJG52WUS
KdizfYRH7xrl/W+/l4cf2M+2reOIOK4FbJho9OXuw1v5W3/2Ab75zHl+6Xef5Ut/oq09dZ6d+ya5
9U17uOPOrVy61OLs8Vnayz1QRTC9g8x46JScB+/ZQRQmAXGk7uh0HK2Wwzk1ioY1u2LRMJsPZCdf
EHNgR/J5eJURL8yeES2AIQ3I1EbBzCgjGNL7R69Uv8+PkmUJjYayac9drKPPC7xeBPRZ4J28zpid
7/BHZ5c5vHWUd+4cY7uDzvwKLS8+dpbnnjrL7Mwi9YpycPco73tgB9///tu5+45dNJt1rnUkieOB
u3f05fylZX7l95/lDz91lE/91pNs2zPJLW/ey6337OT86Xkunpwj6xQ4zJywIHGymWbcctMWhqG7
cJTO7DNMbUiYPV8hz4Ra3Q+Z26UQypDxOi7oGWR9QeUanB0+eHXykWEDCcscHTvpQm2+z5DeP2H1
u4IKLfZ8uV1lebmO957RiRFGNh1mjeOzrycBzQO/90YQ0FLmed/uDUx6z8zz5/jkCxc4fWIaKTrc
d8cW7nvPzbznbTf3/R7VapXrFds2j/IP/tKD/OWfuoff/8TL/NYfvsDnfvsJdhzYxP77djNx/27O
H5th7vQ8vvCIaWjf62a8+Y6t3HzT9qtEv56BfKEf2Stnv4fhc0QRI+F0WYmG4sPm9GAd2OKC6ncb
Og/3hk48tRKf/R7XfopXGX4XolBYWGzSbteuZD/vfYB0dD9rHL8HzL9eBATwu8BPAw/yOmKqmXIr
bf7lrz3Bwuwi+3Y0+ckP7OI9bz3A299yCy5JuJEwNlLjZ3/oDn7sQ7fya3/wHL/2757jsd99ggN3
72Lr4W2MTI1y6chFWrMrhCaZ+py3P7Rv+OwvYOXiN6hXPEWWMD+fkiZmwCDGjAIo99yqk7mU8hwC
843VvtGEs8OwBWPD5rkP9vQq5RgqkRov64S2ZwotFupAI7PfRQmr36uVNpt3H2CN4ysDPuD1JKAz
wG+/3gQ0NlLlb/7knYy7Hr1ejx/+U3exdesGbnTUayl/7sfu4oc/cAv/5Fee4Lf+v+c58/IlDrx5
Hzvv2c3M8RkWjl0iLwotQEi1x837p67afGzpzB+zcTRlfrbSD7/XagWE5pSDkERwZRazpyQVAZyw
unaU+yWZBTPi5crTYaNeV+90aPbi+UCANb+IvMeaj6n1/5i1Ag5a/fB7gyKHsQnHht0PsMbx28CZ
15uAAH4H+AngTbyOqFSr/IWfeZi1iImxGv/xX32QH/3gLfzL33iS375smo1tn2DHvXuobR5j7rmz
LJye55a9E9x1x26GYeXSExStM4xsEC6eShEUTPN5KLUXQDxSrsOcHhe06MCE3wGbyIh4AGteWRPM
akNDMqZdrPzCSBEnImK5SH7w1OgAwoXlOsvLDdRnTG2/mebWB9f6vPff4buA4zvHMeA3WcfrjoN7
J/mf/qO388/+tw+xZ7zCCx9/lpWz82y4ew+1fRu589DGqzreO7PPkSY5DlhcTHEJpvmYKacI+CAW
FQufNnJm75cI1CzzzhDSiXdIjA8fNM+YqE2oMtnPJQQKLS/90cudThXnemzeewikxhrGbwLHXncC
Mn+BL7OONwTveGg3v/Lz38/f+/NvYvnFc5z8wktsGK/yzrffxjCoz/vtN0YaCctLySD/xxuXjCEP
MM3FjHPZZkHbCi35aPMxgIBQFEtKhpwC30zwjVV2jEa6zHu4ZxDResLkxm6W9B3QeS40GwUbd93G
GsaXXwsFJOW7wwng14GHWMcbgma9wl//2Xt576P7+Pinn+UD77iZm27ayjBkK2fpLhxhaoPj0pmU
ooC0gunvTIRYBjJE63EB6YRmGeHsd3UgMniaEPvwbGfreDZlGz4e6YpqRcb80lj4XQPfEiy1qiwt
NfGFZ3xqIxO738Eaxq8DJ94wAjJ/ke8H3sU63jDcvH8DN//FR4nDJh8+jxSL1CvS14CcWx23Y8Pw
UBKLzfnRSLIiEPb7CYVI+P2q/XwCCXs9Ew+/IwV423pDw4iXISEi/h4HwXZIUItLDVqtMvx+P66+
jTWKzwC/zmsAx3ePC8Cvct1gHfPHP0q9UpB1HfPzFZJEERNOFxdpyRM4lB1h9buNpsc1JRN+j0e9
1Kxxq3vq4u1XRWK5P2YveB8QawSmwXdJSkpWCOXs92olY+Oum1jD+FXgwhtOQOYv9Dus45pH3pll
+fzXGWlWWF5ydDuCJIEvZ/DEaEGIEka/cJGuh5S/t9XzEhBZLKSO6e0cj4wB4X5wLyypMDVfFMF+
pPmYRswvsbPfYaVTYXGxiS+g0ayzYc+jrFH8jlU4rgUCagO/DCyzjmsanflXaKRnmJpq08kdhF1R
I5qPC95tNrQQ5gyFlfEKLcTbtaJmfnus6dhVe0JjNCUMwYSEpKAFYPZi5pfJ/wkX/er3lTrqMzbu
2EFj45p0QC8Dvwy0rzUCAvh94BdZxzUNXfh9tmw5znwroaglbN3foVJX1JcaDFYTile5h+QT9/uY
iaqR4YPKVfr82D1DXkObzw93QkcQD78j+EH5RbdTIU0ytuzes1bD778I/D7ANUVA5i/4Auu4ZlGZ
uJeTp/bzzNMbmJlpUh+HrQc6TGzJcCmoAhIhH1NiQdTHU54TaEpiik9L2N4/VxGRIcWrQ6ed2nfj
74mG3wN/k9Lupf38nzx3VKsFmw68kzWIF6yCcS0S0FeAf8s6rlnUt/0Imx/+HRobD9NaWGDmUq3f
WH10U8GWfV1GNxaICKogNgTvQmJRRLzpHW0mqBKSFJHBge7qxGPvSCT6hSEeLaUAsVGxMBNb7fBB
M3GVcvZ73/9TFAWTm7YwvntN+n/+LfCVa52AAP4N8FHWcc1i8/57uffH/jF7HvqbFN6xOJdx6cIo
7W6N8U0ZG3f3aE5oOADUJBKCmDA8YHtDD55QPpFXY1pdtSe0ETVRL5OAGB+9HIFp9C8KLc4DysJS
k9ZKDSFn887tuMoUawwfBf4N3wOkvPY4D/xr4FFgjHVck6g1x7n5bX+djfse4diX/znzJ7/Yr/Bu
rUwwPtlibHOHIoPeiqPogqrakcsm89n6iwgKLVMVJJ7nA0OiYZg9TARNAdSYX5GROwyb/aWE2zgP
6sizKvMLk/SyBJ9VqFYEn3cHs7+ENYQl4F8D568XAgL4LeAR4O+yjmsaU3vuYXLXL3D+xc/wyhd+
jpX5V+h0miw1G2yYWmJkYxe8krVTii4IHlBkoOE4QEpiIpgjL0H1e7S5fKwVh4s3HZMhUTLxVylA
Dc6js99LW9OjPqHdGusTT6vVoNOtkvUcXmH7lmXavYQNBz7IGsO/BH4L4HoiIIB/ATwIPMw6rmk4
J+w4/G427n0Tp574Pc588xdZXrhEpz1GoznC1J8Q0XgHQfFZQtEVpDR3Am3IFqKCBFEwB4RPO2Yn
XIf1XUaEgKQU1FS6q323AhBE5VTIsjqLi+MsrzTpdmt9TbDTSel1U7LMU+Q9KhWY3PcuahM3sYbw
JeBf8D2EqCrfQ/w54J8BKdcN1rEyd5bjX/81Zo58nN7yeSqVCi2NEWVycomx8TaVao4WguYCPsdJ
TuIKLVzqSZLisnhcoiQJuKS4LADJFZHK4JkGz/TKU5LgfXCO3U+AyuCpoN0rQm/wDN7tPhkAWlTI
spROe7TfWqPTqdHuVMl6CZ12hSwX8iynuCxJYysjW+9jz30/xqa995BWKqwR5MBfBv719UxAAL8A
/A2uO6yjtXCJV778i8y+8il6S2dI0oRqPWFywzKTk8s0mh3SRFGfooXHkZG4HOcyklQHJOQRcRHC
Scq12bMEZEiKBFwFNAHJQTugPaC7+qRcdyn3izy/LCntdpOV5RE6nUpfw+l2K7TbfVOrfyfPerh0
hOrEfjYefA977vk+Ria3sgbxD4G/CXC9E9CdwD8BHuG6xDray3OceeoPmXnlMyyeewotR0alVmVk
NGNycpHRsRbNke5gpE+C+B4injTxJC4DDAEFRGNIKdirrJIUhqSkAriQcELS6YsWXbJejzz3dNuO
VqtKp1On0672iafdqVDkyWXJLksPT4WRjbcwvvNNbDn0bjbuvqtPuGsUjwF/FXj6RiAggJ8F/hEw
ynWLdfhCOfvCH3HpyCeZO/EV8tYl0jSlUksYG28xPrFCo9lmdLRDrdbDJR7nEkQVEIQKLfQlBWuG
iTXHLCml5hzwHdA2WrQo8hbet/F5j6yX0WkrrVal3zw+613RcrrdKr7gsvRQn+E1pbHhIOM77mXD
vkfZdtMjpNUqaxzLwF8HfgngRiEggP8V+I+4IbCOxenTnHn6oyye/RqL559B8xWcEyrVCi31RsH4
+DIjo8uX37uXny0al58u0UCrqYFPgAotqilQBVLAoSSIVFCE0gxTBFRRhHKkdJG1yLIOeS+n25V+
qUSvVyHLKrRb9X4Uq8gF7/M+MSGAG2F08y2MXJbJXQ+y5aaHqdabUGId/xvwHwPcaAS0d+AP+jA3
DNahwOzpF1g8/yxzp75xWb5J3plGNMcJJJUKLbW6p9nsUKt1qVQzqpelVr+iJaXpFac1QFgcqj6l
8OC9uyKFI88SisLR6Vbo9E2oCi15X1Ky3p88E7z3+KJAfQYi4OpUx/YwtfcBxrceZmTTISa334Jz
QhTrs93/JnDiRiQggA8APw/coLHMdazMX2L+/Et0F08xf/pJ5s8+S9a6iGgG5AggLiVJ3BUndaok
zg9KPTxOyvmCgvdXRPtPUHX99ZUzj/oc9WUrWYeSkNQ2UJ/cy9Suu2huPEhzwz4mtt5MWq0xFOs4
Avwt4GMANyoBAfxt4P9lHWsC3dYyCxeO0l48R96eYWX2+GU5SWfpEkVvGdEe+BxxAuiAVHJQj7hk
ICkgqOqVdVLHpaM0JncxumkfjfFtVBobqYxsYmTDbpoTmxHh28M6/g7wcwA3OgHJgID+FutYs+h1
2uTdFfJeC19kgKJaoEV2RdA+8bjLIkkFkQTE4ZIKLUmlTqU2clnq/P/buwdYSdMFDMJjXq5t27Zt
27Y1tm3btm3btm1Wki9aHrWrkic23u7fWZLVwJc4kvQDFDoXVfEYYpeZ9cRXWISolwOxaBGqYDpi
k5lNRxUsAqXIAIUGowotNsPMottmVMFgUIoNUKgpKsEsulklNAWl6ACFKqEGzCw61UAlkAO0DxXQ
FpHNzNqiAvbBAQotrUAFDERkMrOBqIAVIAeIiGgyymEizCxrm4hymAxygP5qoctgPrImM5uPMhgI
coD+rs4ojVXIXGa2Ci2l0RnkAKWlZiiFzchYZrYZpdAM5AClpzooiZ1IX2a2EyVRB+QAZaQqKIG9
SFtmthclUAVxXXgYNe77CUWRF3+dme1DUZQFOUBZOUJFkA9/zMz2olgExscBCi39gEL4F0JmRjtR
AuVBDlCk+hq/4RikfGa0GSVRBeQARbqP8StOhVkqtwotpVAH5ABFqzfxCy6AWSo2H6XRDOQARbtn
8DOug1kqNRFl0BnkAMWq+/Aj7oNZKjQQ5TAQ5ADFumvwPV6CpUK+z2cyyAGKl07H9/gcyZhZDVTA
Ci2QAxRv5cW3wTFIhsw2o1KwD+QAxXNv4WtcgWTI/HROU4QcoEToHnyNx2CWiPVEFQxGUpYLydpg
LMMSfA6zRKoGqmERQv4DSsSy4/PgPJjFcwtRIzgCcoCSoYfwKR6DWTzWE7XQFyEHKJk6E58E/4JZ
PLQTtYNlIAcomXsdH+EWmMWy0aiLFgg5QKnQ5fgwyIVoZnYQ9YIZIAcoFXsb7+NmRCOzMWiAJgil
8gDZpXgP7+LfMItEO9AIDTELIQfIiJ7H23gYZllZHzRBB9hfDpCdhLfwJi5CZjKbi2ZoirWwNA2Q
3Yg3gn/BLD3tRPNgHCxDA2RP4TU8C7O01Akt0RWW6QGy/HgluAdmf9ZgtA72wLJ0gOxEvBTchGxm
NBZtg3WwiA6QnYkXguuQmtlEtA+WwaI6QHY2nsVzuBGpkY1DR3TCElhMB8hOxTN4GncjObMh6ILO
WAWLqwGy/+HJ4AnkRGJnh9Ad3YKtsLgfIHsEjwWnI7GyFegZ9IYl5ADZFXgYj+AOxHc2HL3RB9Nh
STFAVgAP4UE8gLMQH9lS9Ec/9MVuWNIOkJ2P+3Bv8D9YdNuKQcFALICl3ADZ1bgbdwX/hkWmHRga
DMEUmANkoatxe3ArTkbmsjUYhRFAWkbHHCA7BzcHN+FaWNqahLEYEyxGBjMHyHLiBlyP63AtLoER
zcYkTMQEjMchmANkESgfrsZVuBJX4HL8C8neTszAdEzDVEzBXsQoc4DsTFyKi3ERLgxOQKK2HvOC
uZiDWViGOM8cIPsPzsO5OBtn4UycgdPxX8S6bViB5ViGpViCRViI7UiyzAGyf+EUnIQTcQKOw7E4
Bv/Df/FvFAzyIS9yIxey4wgO4gD2YS92BTuwDVuxGZuwEeuxDmuxGjthDpCZWfQ6Ci1SRA82mtxe
zwAAAABJRU5ErkJgggpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9JbWFnZXMvWW9zZW1pdGUucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUg
bWFya2VkIGFzIGEgYmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3Rl
dC1zdHJlYW0KClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9JbWFnZXMvWW9zZW1p
dGUucG5nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi1h
cHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL0ltYWdlcy9Zb3NlbWl0ZUAyeC5wbmcKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpDYW5u
b3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBiaW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9
IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJv
YXJkL0ltYWdlcy9Zb3NlbWl0ZUAyeC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46bWltZS10
eXBlCiMjIC0xICswLDAgIyMKLWFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CYXNlT2JqZWN0
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Jhc2VPYmplY3QuanMJKHJl
dmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Jhc2VPYmplY3QuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxODYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAxMyBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJhc2VPYmplY3QgPSBmdW5jdGlvbigpCi17Ci19Owot
Ci1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zID0gZnVuY3Rpb24oc3ViY2xhc3ND
b25zdHJ1Y3RvcikKLXsKLSAgICAvLyBDb3BpZXMgdGhlIHJlbGV2YW50IGZ1bmN0aW9ucyB0aGUg
c3ViY2xhc3MgY29uc3RydWN0b3IuCi0gICAgZm9yICh2YXIgcHJvcGVydHkgaW4gQmFzZU9iamVj
dCkgewotICAgICAgICB2YXIgdmFsdWUgPSBCYXNlT2JqZWN0W3Byb3BlcnR5XTsKLSAgICAgICAg
aWYgKHR5cGVvZiB2YWx1ZSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICBpZiAodmFsdWUgPT09IGFyZ3VtZW50cy5jYWxsZWUpCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgc3ViY2xhc3NDb25zdHJ1Y3Rvcltwcm9wZXJ0eV0gPSB2YWx1ZTsKLSAg
ICB9Ci19OwotCi1CYXNlT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5
cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KQotewotICAgIHRoaXNPYmplY3QgPSB0aGlzT2JqZWN0
IHx8IG51bGw7Ci0KLSAgICBjb25zb2xlLmFzc2VydChldmVudFR5cGUpOwotICAgIGlmICghZXZl
bnRUeXBlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBjb25zb2xlLmFzc2VydChsaXN0ZW5lcik7
Ci0gICAgaWYgKCFsaXN0ZW5lcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCF0aGlzLl9s
aXN0ZW5lcnMpCi0gICAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwotCi0gICAgdmFyIGxpc3Rl
bmVycyA9IHRoaXMuX2xpc3RlbmVyc1tldmVudFR5cGVdOwotICAgIGlmICghbGlzdGVuZXJzKQot
ICAgICAgICBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXSA9IFtdOwotCi0g
ICAgLy8gUHJldmVudCByZWdpc3RlcmluZyBtdWx0aXBsZSB0aW1lcy4KLSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7ICsraSkgewotICAgICAgICBpZiAobGlzdGVuZXJz
W2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0udGhpc09iamVjdCA9PT0g
dGhpc09iamVjdCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsaXN0ZW5lcnMu
cHVzaCh7dGhpc09iamVjdDogdGhpc09iamVjdCwgbGlzdGVuZXI6IGxpc3RlbmVyfSk7Ci19Owot
Ci1CYXNlT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbihldmVudFR5cGUsIGxp
c3RlbmVyLCB0aGlzT2JqZWN0KQotewotICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZSB8fCBudWxs
OwotICAgIGxpc3RlbmVyID0gbGlzdGVuZXIgfHwgbnVsbDsKLSAgICB0aGlzT2JqZWN0ID0gdGhp
c09iamVjdCB8fCBudWxsOwotCi0gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGlmICghZXZlbnRUeXBlKSB7Ci0gICAgICAgIGZvciAoZXZlbnRUeXBlIGlu
IHRoaXMuX2xpc3RlbmVycykKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLCB0aGlzT2JqZWN0KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLSAgICBp
ZiAoIWxpc3RlbmVycykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZm9yICh2YXIgaSA9IGxpc3Rl
bmVycy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICBpZiAobGlzdGVuZXIgJiYg
bGlzdGVuZXJzW2ldLmxpc3RlbmVyID09PSBsaXN0ZW5lciAmJiBsaXN0ZW5lcnNbaV0udGhpc09i
amVjdCA9PT0gdGhpc09iamVjdCkKLSAgICAgICAgICAgIGxpc3RlbmVycy5zcGxpY2UoaSwgMSk7
Ci0gICAgICAgIGVsc2UgaWYgKCFsaXN0ZW5lciAmJiB0aGlzT2JqZWN0ICYmIGxpc3RlbmVyc1tp
XS50aGlzT2JqZWN0ID09PSB0aGlzT2JqZWN0KQotICAgICAgICAgICAgbGlzdGVuZXJzLnNwbGlj
ZShpLCAxKTsKLSAgICB9Ci0KLSAgICBpZiAoIWxpc3RlbmVycy5sZW5ndGgpCi0gICAgICAgIGRl
bGV0ZSB0aGlzLl9saXN0ZW5lcnNbZXZlbnRUeXBlXTsKLQotICAgIGlmICghT2JqZWN0LmtleXMo
dGhpcy5fbGlzdGVuZXJzKS5sZW5ndGgpCi0gICAgICAgIGRlbGV0ZSB0aGlzLl9saXN0ZW5lcnM7
Ci19OwotCi1CYXNlT2JqZWN0LnJlbW92ZUFsbExpc3RlbmVycyA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzOwotfTsKLQotQmFzZU9iamVjdC5oYXNFdmVudExpc3Rl
bmVycyA9IGZ1bmN0aW9uKGV2ZW50VHlwZSkKLXsKLSAgICBpZiAoIXRoaXMuX2xpc3RlbmVycyB8
fCAhdGhpcy5fbGlzdGVuZXJzW2V2ZW50VHlwZV0pCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX07Ci0KLUJhc2VPYmplY3QucHJvdG90eXBlID0gewotICAgIGNvbnN0
cnVjdG9yOiBCYXNlT2JqZWN0LAotCi0gICAgYWRkRXZlbnRMaXN0ZW5lcjogQmFzZU9iamVjdC5h
ZGRFdmVudExpc3RlbmVyLAotICAgIHJlbW92ZUV2ZW50TGlzdGVuZXI6IEJhc2VPYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lciwKLSAgICByZW1vdmVBbGxMaXN0ZW5lcnM6IEJhc2VPYmplY3QucmVt
b3ZlQWxsTGlzdGVuZXJzLAotICAgIGhhc0V2ZW50TGlzdGVuZXJzOiBCYXNlT2JqZWN0Lmhhc0V2
ZW50TGlzdGVuZXJzLAotCi0gICAgZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzOiBmdW5jdGlvbihl
dmVudFR5cGUsIGV2ZW50RGF0YSkKLSAgICB7Ci0gICAgICAgIHZhciBldmVudCA9IG5ldyBCYXNl
T2JqZWN0RXZlbnQodGhpcywgZXZlbnRUeXBlLCBldmVudERhdGEpOwotCi0gICAgICAgIGZ1bmN0
aW9uIGRpc3BhdGNoKG9iamVjdCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFvYmplY3Qg
fHwgIW9iamVjdC5fbGlzdGVuZXJzIHx8ICFvYmplY3QuX2xpc3RlbmVyc1tldmVudFR5cGVdIHx8
IGV2ZW50Ll9zdG9wcGVkUHJvcGFnYXRpb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICAvLyBNYWtlIGEgY29weSB3aXRoIHNsaWNlIHNvIG11dGF0aW9ucyBkdXJpbmcg
dGhlIGxvb3AgZG9lc24ndCBhZmZlY3QgdXMuCi0gICAgICAgICAgICB2YXIgbGlzdGVuZXJzRm9y
VGhpc0V2ZW50ID0gb2JqZWN0Ll9saXN0ZW5lcnNbZXZlbnRUeXBlXS5zbGljZSgwKTsKLQotICAg
ICAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSBsaXN0ZW5lcnMgYW5kIGNhbGwgdGhlbS4gU3Rv
cCBpZiBzdG9wUHJvcGFnYXRpb24gaXMgY2FsbGVkLgotICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsaXN0ZW5lcnNGb3JUaGlzRXZlbnQubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
ICAgICBsaXN0ZW5lcnNGb3JUaGlzRXZlbnRbaV0ubGlzdGVuZXIuY2FsbChsaXN0ZW5lcnNGb3JU
aGlzRXZlbnRbaV0udGhpc09iamVjdCwgZXZlbnQpOwotICAgICAgICAgICAgICAgIGlmIChldmVu
dC5fc3RvcHBlZFByb3BhZ2F0aW9uKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIERpc3BhdGNoIHRvIGxpc3RlbmVycyBv
ZiB0aGlzIHNwZWNpZmljIG9iamVjdC4KLSAgICAgICAgZGlzcGF0Y2godGhpcyk7Ci0KLSAgICAg
ICAgLy8gQWxsb3cgcHJvcGFnYXRpb24gYWdhaW4gc28gbGlzdGVuZXJzIG9uIHRoZSBjb25zdHJ1
Y3RvciBhbHdheXMgaGF2ZSBhIGNyYWNrIGF0IHRoZSBldmVudC4KLSAgICAgICAgZXZlbnQuX3N0
b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotCi0gICAgICAgIC8vIERpc3BhdGNoIHRvIGxpc3Rl
bmVycyBvbiBhbGwgY29uc3RydWN0b3JzIHVwIHRoZSBwcm90b3R5cGUgY2hhaW4sIGluY2x1ZGlu
ZyB0aGUgaW1tZWRpYXRlIGNvbnN0cnVjdG9yLgotICAgICAgICB2YXIgY29uc3RydWN0b3IgPSB0
aGlzLmNvbnN0cnVjdG9yOwotICAgICAgICB3aGlsZSAoY29uc3RydWN0b3IpIHsKLSAgICAgICAg
ICAgIGRpc3BhdGNoKGNvbnN0cnVjdG9yKTsKLQotICAgICAgICAgICAgaWYgKCFjb25zdHJ1Y3Rv
ci5wcm90b3R5cGUuX19wcm90b19fKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
ICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3Byb3RvX18uY29uc3Ry
dWN0b3I7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gZXZlbnQuZGVmYXVsdFByZXZlbnRl
ZDsKLSAgICB9Ci19OwotCi1CYXNlT2JqZWN0RXZlbnQgPSBmdW5jdGlvbih0YXJnZXQsIHR5cGUs
IGRhdGEpCi17Ci0gICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7Ci0gICAgdGhpcy50eXBlID0gdHlw
ZTsKLSAgICB0aGlzLmRhdGEgPSBkYXRhOwotICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IGZh
bHNlOwotICAgIHRoaXMuX3N0b3BwZWRQcm9wYWdhdGlvbiA9IGZhbHNlOwotfTsKLQotQmFzZU9i
amVjdEV2ZW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQmFzZU9iamVjdEV2ZW50
LAotCi0gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlz
Ll9zdG9wcGVkUHJvcGFnYXRpb24gPSB0cnVlOwotICAgIH0sCi0KLSAgICBwcmV2ZW50RGVmYXVs
dDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5kZWZhdWx0UHJldmVudGVkID0gdHJ1
ZTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWUuanMJKHJldmlz
aW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIw
MTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWJibGVRdWV1
ZSA9IGZ1bmN0aW9uKHF1ZXVlU2VydmVyLCBpZCwgaW5mbykKLXsKLSAgICBCYXNlT2JqZWN0LmNh
bGwodGhpcyk7Ci0KLSAgICBjb25zb2xlLmFzc2VydChxdWV1ZVNlcnZlcik7Ci0gICAgY29uc29s
ZS5hc3NlcnQoaWQpOwotCi0gICAgdGhpcy5xdWV1ZVNlcnZlciA9IHF1ZXVlU2VydmVyOwotICAg
IHRoaXMuaWQgPSBpZDsKLSAgICB0aGlzLnNob3J0TmFtZSA9IGluZm8uc2hvcnROYW1lIHx8IGlk
OwotICAgIHRoaXMudGl0bGUgPSBpbmZvLnRpdGxlIHx8ICJceGEwIjsKLQotICAgIHRoaXMucGxh
dGZvcm0gPSBpbmZvLnBsYXRmb3JtID8gaW5mby5wbGF0Zm9ybS5uYW1lIDogInVua25vd24iOwot
fTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWJibGVRdWV1ZSk7Ci0K
LUJ1YmJsZVF1ZXVlLkV2ZW50ID0gewotICAgIFVwZGF0ZWQ6ICJ1cGRhdGVkIgotfTsKLQotQnVi
YmxlUXVldWUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWJibGVRdWV1ZSwKLSAg
ICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IHN0YXR1c1BhZ2VV
UkwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucXVldWVTZXJ2ZXIucXVldWVTdGF0dXNV
UkwodGhpcy5pZCk7Ci0gICAgfSwKLQotICAgIGdldCBjaGFydHNQYWdlVVJMKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9jaGFydHNQYWdlVVJMOwotICAgIH0sCi0KLSAgICBnZXQgcGF0
Y2hDb3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcGF0Y2hDb3VudDsKLSAgICB9
LAotCi0gICAgZ2V0IGxvYWRlZERldGFpbGVkU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9sb2FkZWREZXRhaWxlZFN0YXR1czsKLSAgICB9LAotCi0gICAgZ2V0IHBhdGNoZXMo
KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0
dXMpOwotICAgICAgICByZXR1cm4gdGhpcy5fcXVldWU7Ci0gICAgfSwKLQotICAgIGdldCBib3Rz
KCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xvYWRlZERldGFpbGVkU3Rh
dHVzKTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2JvdHM7Ci0gICAgfSwKLQotICAgIHVwZGF0ZTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0dXMgPSBm
YWxzZTsKLQotICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1ZVNlcnZlci5qc29uUXVldWVMZW5n
dGhVUkwodGhpcy5pZCksIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIHZhciBuZXdQYXRj
aENvdW50ID0gZGF0YS5xdWV1ZV9sZW5ndGg7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcGF0Y2hD
b3VudCA9PSBuZXdQYXRjaENvdW50KQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIHRoaXMuX3BhdGNoQ291bnQgPSBuZXdQYXRjaENvdW50OwotICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnViYmxlUXVldWUuRXZlbnQuVXBkYXRlZCwgbnVsbCk7
Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIGxvYWREZXRhaWxlZFN0YXR1
czogZnVuY3Rpb24oY2FsbGJhY2spCi0gICAgewotICAgICAgICBKU09OLmxvYWQodGhpcy5xdWV1
ZVNlcnZlci5qc29uUXVldWVTdGF0dXNVUkwodGhpcy5pZCksIGZ1bmN0aW9uKGRhdGEpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3F1ZXVlID0gW107Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMCwg
ZW5kID0gZGF0YS5xdWV1ZS5sZW5ndGg7IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgICAg
IHZhciBwYXRjaCA9IGRhdGEucXVldWVbaV07Ci0gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZVNp
bmNlVGltZSA9IHBhdGNoLmFjdGl2ZV9zaW5jZSA/IERhdGUucGFyc2UocGF0Y2guYWN0aXZlX3Np
bmNlKSA6IDA7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcXVldWUucHVzaCh7Ci0gICAgICAgICAg
ICAgICAgICAgIGF0dGFjaG1lbnRJRDogcGF0Y2guYXR0YWNobWVudF9pZCwKLSAgICAgICAgICAg
ICAgICAgICAgc3RhdHVzUGFnZVVSTDogcGF0Y2guc3RhdHVzX3BhZ2UsCi0gICAgICAgICAgICAg
ICAgICAgIGxhdGVzdE1lc3NhZ2U6IHBhdGNoLmxhdGVzdF9tZXNzYWdlLAotICAgICAgICAgICAg
ICAgICAgICBsYXRlc3RNZXNzYWdlVGltZTogcGF0Y2gubGF0ZXN0X21lc3NhZ2VfdGltZSA/IG5l
dyBEYXRlKHBhdGNoLmxhdGVzdF9tZXNzYWdlX3RpbWUpIDogbnVsbCwKLSAgICAgICAgICAgICAg
ICAgICAgZGV0YWlsZWRSZXN1bHRzVVJMRm9yTGF0ZXN0TWVzc2FnZTogcGF0Y2gubGF0ZXN0X3Jl
c3VsdHMsCi0gICAgICAgICAgICAgICAgICAgIHJldHJ5Q291bnQ6IHBhdGNoLnJldHJ5X2NvdW50
LAotICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IHBhdGNoLmFjdGl2ZSwKLSAgICAgICAgICAg
ICAgICAgICAgYWN0aXZlU2luY2U6IG5ldyBEYXRlKGFjdGl2ZVNpbmNlVGltZSksCi0gICAgICAg
ICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2JvdHMgPSBb
XTsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBkYXRhLmJvdHMubGVuZ3RoOyBp
IDwgZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgYm90ID0gZGF0YS5ib3RzW2ldOwot
ICAgICAgICAgICAgICAgIHZhciBsYXRlc3RNZXNzYWdlVGltZSA9IGJvdC5sYXRlc3RfbWVzc2Fn
ZV90aW1lID8gRGF0ZS5wYXJzZShib3QubGF0ZXN0X21lc3NhZ2VfdGltZSkgOiAwOwotCi0gICAg
ICAgICAgICAgICAgdmFyIG9uZURheUluTWlsbGlzZWNvbmRzID0gMjQgKiA2MCAqIDYwICogMTAw
MDsKLSAgICAgICAgICAgICAgICB2YXIgYm90SXNDdXJyZW50bHlBY3RpdmUgPSBEYXRlLm5vdygp
IDwgbGF0ZXN0TWVzc2FnZVRpbWUgKyBvbmVEYXlJbk1pbGxpc2Vjb25kczsKLSAgICAgICAgICAg
ICAgICBpZiAoIWJvdElzQ3VycmVudGx5QWN0aXZlKQotICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICAgICAgICAgIC8vIFNvbWV0aW1lcyAocmFyZWx5KSwgdGhlcmUgYXJl
IHN0YXR1cyBtZXNzYWdlcyB3aXRoIGFuIGVtcHR5IGJvdCBuYW1lIGFkZGVkIHRvIHRoZSBkYXRh
YmFzZS4KLSAgICAgICAgICAgICAgICBpZiAoIWJvdC5ib3RfaWQubGVuZ3RoKQotICAgICAgICAg
ICAgICAgICAgICBib3QuYm90X2lkID0gIjxlbXB0eSBuYW1lPiI7Ci0KLSAgICAgICAgICAgICAg
ICB0aGlzLl9ib3RzLnB1c2goewotICAgICAgICAgICAgICAgICAgICBpZDogYm90LmJvdF9pZCwK
LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzUGFnZVVSTDogYm90LnN0YXR1c19wYWdlLAotICAg
ICAgICAgICAgICAgICAgICBsYXRlc3RNZXNzYWdlVGltZTogbmV3IERhdGUobGF0ZXN0TWVzc2Fn
ZVRpbWUpLAotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLnN0YXR1c1BhZ2VVUkwucmVwbGFjZSgvaHR0cHM/OlwvXC8v
ZywgIiIpID09PSBkYXRhLnN0YXR1c19wYWdlLnJlcGxhY2UoL2h0dHBzPzpcL1wvL2csICIiKSk7
Ci0gICAgICAgICAgICB0aGlzLl9jaGFydHNQYWdlVVJMID0gZGF0YS5jaGFydHNfcGFnZTsKLQot
ICAgICAgICAgICAgdGhpcy5fbG9hZGVkRGV0YWlsZWRTdGF0dXMgPSB0cnVlOwotICAgICAgICAg
ICAgY2FsbGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotfTsKClByb3Bl
cnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlLmpzCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIuanMJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlU2VydmVyLmpzCShub25leGlz
dGVudCkKQEAgLTEsOTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
LSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgot
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1YmJsZVF1ZXVlU2Vy
dmVyID0gZnVuY3Rpb24oKQotewotICAgIGNvbnN0IHF1ZXVlSW5mbyA9IHt9OwotCi0gICAgQmFz
ZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5iYXNlVVJMID0gImh0dHBzOi8vd2Via2l0
LXF1ZXVlcy53ZWJraXQub3JnLyI7Ci0gICAgdGhpcy5xdWV1ZXMgPSB7fTsKLQotICAgIGZvciAo
dmFyIGlkIGluIHF1ZXVlSW5mbykKLSAgICAgICAgdGhpcy5xdWV1ZXNbaWRdID0gbmV3IEJ1YmJs
ZVF1ZXVlKHRoaXMsIGlkLCBxdWV1ZUluZm9baWRdKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29u
c3RydWN0b3JGdW5jdGlvbnMoQnViYmxlUXVldWVTZXJ2ZXIpOwotCi1CdWJibGVRdWV1ZVNlcnZl
ci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1YmJsZVF1ZXVlU2VydmVyLAotICAg
IF9fcHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5cGUsCi0KLSAgICBqc29uUXVldWVMZW5ndGhV
Ukw6IGZ1bmN0aW9uKHF1ZXVlSUQpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5iYXNlVVJM
ICsgInF1ZXVlLWxlbmd0aC1qc29uLyIgKyBlbmNvZGVVUklDb21wb25lbnQocXVldWVJRCk7Ci0g
ICAgfSwKLQotICAgIGpzb25RdWV1ZVN0YXR1c1VSTDogZnVuY3Rpb24ocXVldWVJRCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAicXVldWUtc3RhdHVzLWpzb24vIiArIGVu
Y29kZVVSSUNvbXBvbmVudChxdWV1ZUlEKTsKLSAgICB9LAotCi0gICAganNvblByb2Nlc3NpbmdU
aW1lc1VSTDogZnVuY3Rpb24oZnJvbVRpbWUsIHRvVGltZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLmJhc2VVUkwgKyAicHJvY2Vzc2luZy10aW1lcy1qc29uLyIgKyBbZnJvbVRpbWUuZ2V0
VVRDRnVsbFllYXIoKSwgZnJvbVRpbWUuZ2V0VVRDTW9udGgoKSArIDEsIGZyb21UaW1lLmdldFVU
Q0RhdGUoKSwgZnJvbVRpbWUuZ2V0VVRDSG91cnMoKSwgZnJvbVRpbWUuZ2V0VVRDTWludXRlcygp
LCBmcm9tVGltZS5nZXRVVENTZWNvbmRzKCldLmpvaW4oIi0iKQotICAgICAgICAgICAgKyAiLSIg
KyBbdG9UaW1lLmdldFVUQ0Z1bGxZZWFyKCksIHRvVGltZS5nZXRVVENNb250aCgpICsgMSwgdG9U
aW1lLmdldFVUQ0RhdGUoKSwgdG9UaW1lLmdldFVUQ0hvdXJzKCksIHRvVGltZS5nZXRVVENNaW51
dGVzKCksIHRvVGltZS5nZXRVVENTZWNvbmRzKCldLmpvaW4oIi0iKTsKLSAgICB9LAotCi0gICAg
cXVldWVTdGF0dXNVUkw6IGZ1bmN0aW9uKHF1ZXVlSUQpCi0gICAgewotICAgICAgICByZXR1cm4g
dGhpcy5iYXNlVVJMICsgInF1ZXVlLXN0YXR1cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXVl
SUQpOwotICAgIH0sCi0KLSAgICAvLyBSZXRyaWV2ZXMgaW5mb3JtYXRpb24gYWJvdXQgYWxsIHBh
dGNoZXMgdGhhdCB3ZXJlIHN1Ym1pdHRlZCBpbiB0aGUgdGltZSByYW5nZToKLSAgICAvLyB7Ci0g
ICAgLy8gICAgIHBhdGNoX2lkXzE6IHsKLSAgICAvLyAgICAgICAgIHF1ZXVlX25hbWVfMTogewot
ICAgIC8vICAgICAgICAgICAgIGRhdGU6IDxkYXRlL3RpbWUgd2hlbiB0aGUgcGF0Y2ggd2FzIHN1
Ym1pdHRlZCB0byB0aGUgcXVldWU+LAotICAgIC8vICAgICAgICAgICAgIHJldHJ5X2NvdW50OiA8
bnVtYmVyIG9mIHRpbWVzIGEgYm90IGhhZCB0byBiYWlsIG91dCBhbmQgZHJvcCB0aGUgbG9jaywg
Zm9yIGFub3RoZXIgYm90IHRvIHN0YXJ0IGZyb20gc2NyYXRjaD4sCi0gICAgLy8gICAgICAgICAg
ICAgd2FpdF9kdXJhdGlvbjogPGhvdyBsb25nIGl0IHRvb2sgYmVmb3JlIGEgYm90IGZpcnN0IGxv
Y2tlZCB0aGUgcGF0Y2ggZm9yIHByb2Nlc3Npbmc+LAotICAgIC8vICAgICAgICAgICAgIHByb2Nl
c3NfZHVyYXRpb246IDxob3cgbG9uZyBpdCB0b29rIGZyb20gZW5kIG9mIHdhaXQgdG8gZmluaXNo
LCBvbmx5IHZhbGlkIGZvciBmaW5pc2hlZCBwYXRjaGVzLiBJbmNsdWRlcyB3YWl0IHRpbWUgYmV0
d2VlbiByZXRyaWVzPgotICAgIC8vICAgICAgICAgICAgIGZpbmFsX21lc3NhZ2U6IDwocGFzc3xm
YWlsfG5vdCBwcm9jZXNzZWR8Y291bGQgbm90IGFwcGx5fGludGVybmFsIGVycm9yfGluIHByb2dy
ZXNzKT4KLSAgICAvLyAgICAgICAgIH0sCi0gICAgLy8gICAgICAgICAuLi4KLSAgICAvLyAgICAg
fSwKLSAgICAvLyAgICAgLi4uCi0gICAgLy8gfQotICAgIGxvYWRQcm9jZXNzaW5nVGltZXM6IGZ1
bmN0aW9uKGZyb21UaW1lLCB0b1RpbWUsIGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgSlNPTi5s
b2FkKHRoaXMuanNvblByb2Nlc3NpbmdUaW1lc1VSTChmcm9tVGltZSwgdG9UaW1lKSwgZnVuY3Rp
b24oZGF0YSkgewotICAgICAgICAgICAgZm9yIChwYXRjaCBpbiBkYXRhKSB7Ci0gICAgICAgICAg
ICAgICAgZm9yIChxdWV1ZSBpbiBwYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgcXVldWUuZGF0
ZSA9IG5ldyBEYXRlKHF1ZXVlLmRhdGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2Fs
bGJhY2soZGF0YSwgZnJvbVRpbWUsIHRvVGltZSk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0g
ICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJi
bGVRdWV1ZVNlcnZlci5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEg
KzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDog
c3ZuOm1pbWUtdHlwZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVlVmll
dy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJibGVRdWV1ZVZpZXcu
anMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1YmJsZVF1ZXVl
Vmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDE5MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotQnViYmxlUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIFF1ZXVlVmlldy5j
YWxsKHRoaXMpOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlz
LnF1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRm
b3JtICYmIHRoaXMucGxhdGZvcm0gIT0gcXVldWUucGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJv
dyAiQSBidWJibGUgcXVldWUgdmlldyBtYXkgbm90IGNvbnRhaW4gcXVldWVzIGZvciBtdWx0aXBs
ZSBwbGF0Zm9ybXMuIgotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLnBsYXRmb3JtID0g
cXVldWUucGxhdGZvcm07Ci0gICAgICAgIHF1ZXVlLmFkZEV2ZW50TGlzdGVuZXIoQnViYmxlUXVl
dWUuRXZlbnQuVXBkYXRlZCwgdGhpcy5fcXVldWVVcGRhdGVkLCB0aGlzKTsKLSAgICB9LmJpbmQo
dGhpcykpOwotCi0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3Ry
dWN0b3JGdW5jdGlvbnMoQnViYmxlUXVldWVWaWV3KTsKLQotQnViYmxlUXVldWVWaWV3LnByb3Rv
dHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnViYmxlUXVldWVWaWV3LAotICAgIF9fcHJvdG9f
XzogUXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKLQotICAgICAg
ICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhcHBl
bmRRdWV1ZShxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIHF1ZXVlTGFiZWwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgICAgICBxdWV1ZUxhYmVsLmNsYXNz
TGlzdC5hZGQoInF1ZXVlTGFiZWwiKTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwudGV4dENvbnRl
bnQgPSBxdWV1ZS50aXRsZTsKLSAgICAgICAgICAgIHF1ZXVlTGFiZWwuaHJlZiA9IHF1ZXVlLnN0
YXR1c1BhZ2VVUkw7Ci0gICAgICAgICAgICBxdWV1ZUxhYmVsLnRhcmdldCA9ICJfYmxhbmsiOwot
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHF1ZXVlTGFiZWwpOwotCi0gICAg
ICAgICAgICB2YXIgcGF0Y2hDb3VudCA9IHF1ZXVlLnBhdGNoQ291bnQ7Ci0KLSAgICAgICAgICAg
IHZhciBtZXNzYWdlID0gcGF0Y2hDb3VudCA9PT0gMSA/ICJwYXRjaCBpbiBxdWV1ZSIgOiAicGF0
Y2hlcyBpbiBxdWV1ZSI7Ci0gICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVW
aWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBudWxsLCBwYXRjaENv
dW50IHx8ICIwIik7Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVz
LmVsZW1lbnQpOwotCi0gICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1
c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yQnViYmxlUXVldWUuYmluZCh0
aGlzKSwgcXVldWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChm
dW5jdGlvbihxdWV1ZSkgewotICAgICAgICAgICAgYXBwZW5kUXVldWUuY2FsbCh0aGlzLCBxdWV1
ZSk7Ci0gICAgICAgIH0sIHRoaXMpOwotICAgIH0sCi0KLSAgICBfYWRkUXVldWVIZWFkaW5nVG9Q
b3BvdmVyOiBmdW5jdGlvbihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRs
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05h
bWUgPSAicG9wb3Zlci1xdWV1ZS1oZWFkaW5nIjsKLQotICAgICAgICB0aGlzLmFkZFRleHRUb1Jv
dyh0aXRsZSwgInF1ZXVlLW5hbWUiLCBxdWV1ZS5pZCk7Ci0gICAgICAgIHRoaXMuYWRkTGlua1Rv
Um93KHRpdGxlLCAicXVldWUtc3RhdHVzLWxpbmsiLCAic3RhdHVzIHBhZ2UiLCBxdWV1ZS5zdGF0
dXNQYWdlVVJMKTsKLSAgICAgICAgdGhpcy5hZGRMaW5rVG9Sb3codGl0bGUsICJxdWV1ZS1jaGFy
dHMtbGluayIsICJjaGFydHMiLCBxdWV1ZS5jaGFydHNQYWdlVVJMKTsKLQotICAgICAgICBjb250
ZW50LmFwcGVuZENoaWxkKHRpdGxlKTsKLSAgICB9LAotCi0gICAgX2FkZEJvdHNIZWFkaW5nVG9Q
b3BvdmVyOiBmdW5jdGlvbihxdWV1ZSwgY29udGVudCkKLSAgICB7Ci0gICAgICAgIHZhciB0aXRs
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05h
bWUgPSAicG9wb3Zlci1ib3RzLWhlYWRpbmciOwotICAgICAgICB0aXRsZS50ZXh0Q29udGVudCA9
ICJsYXRlc3QgYm90IGV2ZW50IjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRsZSk7
Ci0gICAgfSwKLQotICAgIF90aW1lSW50ZXJ2YWxTdHJpbmc6IGZ1bmN0aW9uKHRpbWUpCi0gICAg
ewotICAgICAgICB2YXIgdGltZURpZmZlcmVuY2UgPSAoRGF0ZS5ub3coKSAtIHRpbWUuZ2V0VGlt
ZSgpKSAvIDEwMDA7Ci0gICAgICAgIHJldHVybiB0aGlzLl9yZWFkYWJsZVRpbWVTdHJpbmcodGlt
ZURpZmZlcmVuY2UpCi0gICAgfSwKLQotICAgIF9wb3BvdmVyQ29udGVudEZvckJ1YmJsZVF1ZXVl
OiBmdW5jdGlvbihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJs
ZS1zZXJ2ZXItcG9wb3ZlciI7Ci0KLSAgICAgICAgdGhpcy5fYWRkUXVldWVIZWFkaW5nVG9Qb3Bv
dmVyKHF1ZXVlLCBjb250ZW50KTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihj
b250ZW50KTsKLQotICAgICAgICB2YXIgcGF0Y2hlcyA9IHF1ZXVlLnBhdGNoZXM7Ci0gICAgICAg
IGZvciAodmFyIGkgPSAwLCBlbmQgPSBwYXRjaGVzLmxlbmd0aDsgaSA8IGVuZDsgKytpKSB7Ci0g
ICAgICAgICAgICB2YXIgcGF0Y2ggPSBwYXRjaGVzW2ldOwotCi0gICAgICAgICAgICB2YXIgcm93
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAgICAgICB0
aGlzLmFkZExpbmtUb1Jvdyhyb3dFbGVtZW50LCAicGF0Y2gtZGV0YWlscy1saW5rIiwgcGF0Y2gu
YXR0YWNobWVudElELCBwYXRjaC5zdGF0dXNQYWdlVVJMKTsKLQotICAgICAgICAgICAgaWYgKHBh
dGNoLnJldHJ5Q291bnQpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93RWxl
bWVudCwgImZhaWx1cmUtY291bnQiLCBwYXRjaC5yZXRyeUNvdW50ICsgIlx4YTAiICsgKHBhdGNo
LnJldHJ5Q291bnQgPT09IDEgPyAiYXR0ZW1wdCIgOiAiYXR0ZW1wdHMiKSk7Ci0KLSAgICAgICAg
ICAgIGlmIChwYXRjaC5kZXRhaWxlZFJlc3VsdHNVUkxGb3JMYXRlc3RNZXNzYWdlKQotICAgICAg
ICAgICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJsYXRlc3Qtc3RhdHVzLXdp
dGgtbGluayIsIHBhdGNoLmxhdGVzdE1lc3NhZ2UsIHBhdGNoLmRldGFpbGVkUmVzdWx0c1VSTEZv
ckxhdGVzdE1lc3NhZ2UpOwotICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2gubGF0ZXN0TWVzc2Fn
ZSAmJiBwYXRjaC5sYXRlc3RNZXNzYWdlLmxlbmd0aCkKLSAgICAgICAgICAgICAgICB0aGlzLmFk
ZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1uby1saW5rIiwgcGF0Y2gubGF0
ZXN0TWVzc2FnZSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChwYXRjaC5hY3RpdmUpIHsKLSAgICAg
ICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1cy1u
by1saW5rIiwgIlN0YXJ0ZWQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhy
b3dFbGVtZW50LCAidGltZS1zaW5jZS1tZXNzYWdlIiwgdGhpcy5fdGltZUludGVydmFsU3RyaW5n
KHBhdGNoLmFjdGl2ZVNpbmNlKSArICJceGEwYWdvIik7Ci0gICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICB0aGlzLmFkZFRleHRUb1Jvdyhyb3dFbGVtZW50LCAibGF0ZXN0LXN0YXR1
cy1uby1saW5rIiwgIk5vdCBzdGFydGVkIHlldCIpOwotCi0gICAgICAgICAgICBpZiAocGF0Y2gu
bGF0ZXN0TWVzc2FnZVRpbWUpCi0gICAgICAgICAgICAgICAgdGhpcy5hZGRUZXh0VG9Sb3cocm93
RWxlbWVudCwgInRpbWUtc2luY2UtbWVzc2FnZSIsIHRoaXMuX3RpbWVJbnRlcnZhbFN0cmluZyhw
YXRjaC5sYXRlc3RNZXNzYWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0gICAgICAgICAgICB0aGlz
LmFkZExpbmtUb1Jvdyhyb3dFbGVtZW50LCAiYnVnemlsbGEtbGluayIsICJidWd6aWxsYSIsIGJ1
Z3ppbGxhLmRldGFpbHNVUkxGb3JBdHRhY2htZW50KHBhdGNoLmF0dGFjaG1lbnRJRCkpOwotCi0g
ICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLSAgICAgICAgdGhp
cy5fYWRkQm90c0hlYWRpbmdUb1BvcG92ZXIocXVldWUsIGNvbnRlbnQpOwotICAgICAgICB0aGlz
Ll9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIHZhciBib3RzID0gcXVl
dWUuYm90cy5zbGljZSgwKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIChhLmlkIDwgYi5p
ZCkgPyAtMSA6IDE7IH0pOwotICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYm90cy5sZW5n
dGg7IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIGJvdCA9IGJvdHNbaV07Ci0KLSAg
ICAgICAgICAgIHZhciByb3dFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7
Ci0KLSAgICAgICAgICAgIHRoaXMuYWRkTGlua1RvUm93KHJvd0VsZW1lbnQsICJib3Qtc3RhdHVz
LWxpbmsiLCBib3QuaWQsIGJvdC5zdGF0dXNQYWdlVVJMKTsKLSAgICAgICAgICAgIHRoaXMuYWRk
VGV4dFRvUm93KHJvd0VsZW1lbnQsICJib3Qtc3RhdHVzLWRlc2NyaXB0aW9uIiwgdGhpcy5fdGlt
ZUludGVydmFsU3RyaW5nKGJvdC5sYXRlc3RNZXNzYWdlVGltZSkgKyAiXHhhMGFnbyIpOwotCi0g
ICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQpOwotICAgICAgICB9Ci0K
LSAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZv
ckJ1YmJsZVF1ZXVlOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKLSAgICB7Ci0g
ICAgICAgIGlmIChxdWV1ZS5sb2FkZWREZXRhaWxlZFN0YXR1cykKLSAgICAgICAgICAgIHZhciBj
b250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JCdWJibGVRdWV1ZShxdWV1ZSk7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gImJ1YmJsZS1zZXJ2
ZXItcG9wb3ZlciI7Ci0KLSAgICAgICAgICAgIHZhciBsb2FkaW5nSW5kaWNhdG9yID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLmNs
YXNzTmFtZSA9ICJsb2FkaW5nLWluZGljYXRvciI7Ci0gICAgICAgICAgICBsb2FkaW5nSW5kaWNh
dG9yLnRleHRDb250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICAgICAgY29udGVudC5h
cHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKLQotICAgICAgICAgICAgcXVldWUubG9hZERl
dGFpbGVkU3RhdHVzKGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHBvcG92ZXIuY29udGVu
dCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yQnViYmxlUXVldWUocXVldWUpOwotICAgICAgICAg
ICAgfS5iaW5kKHRoaXMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciByZWN0ID0gRGFzaGJv
YXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBjb250ZW50OwotICAgICAgICBwb3BvdmVy
LnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RF
ZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5N
SU5fWF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVl
czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlv
bihxdWV1ZSkgeyBxdWV1ZS51cGRhdGUoKTsgfSk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVVwZGF0
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy51cGRhdGVTb29uKCk7Ci0g
ICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWJi
bGVRdWV1ZVZpZXcuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6IHN2
bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVnemlsbGEuanMJKG5vbmV4aXN0ZW50KQpA
QCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVnemlsbGEgPSBmdW5jdGlvbigpCi17Ci0g
ICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5iYXNlVVJMID0gImh0dHBzOi8v
YnVncy53ZWJraXQub3JnLyI7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rp
b25zKEJ1Z3ppbGxhKTsKLQotQnVnemlsbGEucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBCdWd6aWxsYSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAg
ZGV0YWlsc1VSTEZvckF0dGFjaG1lbnQ6IGZ1bmN0aW9uKGF0dGFjaG1lbnRJRCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYXR0YWNobWVudC5jZ2k/aWQ9IiArIGVuY29k
ZVVSSUNvbXBvbmVudChhdHRhY2htZW50SUQpICsgIiZhY3Rpb249ZWRpdCI7Ci0gICAgfSwKLX07
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWd6aWxsYS5qcwpf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAt
MSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rh
c2hib2FyZC9TY3JpcHRzL0J1aWxkYm90LmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdC5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI1MSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdCA9IGZ1bmN0aW9uKGJhc2VVUkwsIHF1ZXVlc0lu
Zm8sIG9wdGlvbnMpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29s
ZS5hc3NlcnQoYmFzZVVSTCk7Ci0gICAgY29uc29sZS5hc3NlcnQocXVldWVzSW5mbyk7Ci0KLSAg
ICB0aGlzLmJhc2VVUkwgPSBiYXNlVVJMOwotICAgIHRoaXMucXVldWVzSW5mbyA9IHF1ZXVlc0lu
Zm87Ci0gICAgdGhpcy5xdWV1ZXMgPSB7fTsKLQotICAgIHRoaXMuX25vcm1hbGl6ZVF1ZXVlc0lu
Zm8oKTsKLQotICAgIC8vIFdlIHJlZ2FyZCBfbmVlZHNBdXRoZW50aWNhdGlvbiBhcyBhIGhpbnQg
d2hldGhlciB0aGlzIEJ1aWxkYm90IHJlcXVpcmVzIGF1dGhlbnRpY2F0aW9uIHNvIHRoYXQgd2Ug
Y2FuIHNob3cKLSAgICAvLyBhbiBhcHByb3ByaWF0ZSBpbml0aWFsIHN0YXR1cyBtZXNzYWdlIChz
YXksIGFuICJ1bmF1dGhvcml6ZWQiIHN0YXR1cyBpZiB0aGUgQnVpbGRib3QgcmVxdWlyZXMgYXV0
aGVudGljYXRpb24pCi0gICAgLy8gZm9yIGl0cyBhc3NvY2lhdGVkIHF1ZXVlcyBiZWZvcmUgd2Ug
bWFrZSB0aGUgYWN0dWFsIEhUVFAgcmVxdWVzdCBmb3IgdGhlIHN0YXR1cyBvZiBlYWNoIHF1ZXVl
LgotICAgIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gIm9i
amVjdCIgJiYgb3B0aW9ucy5uZWVkc0F1dGhlbnRpY2F0aW9uID09PSB0cnVlOwotICAgIHRoaXMu
X2F1dGhlbnRpY2F0aW9uU3RhdHVzID0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuVW5h
dXRoZW50aWNhdGVkOwotCi0gICAgdGhpcy5WRVJTSU9OX0xFU1NfVEhBTl8wOSA9IG9wdGlvbnMg
JiYgb3B0aW9ucy5VU0VfQlVJTERCT1RfVkVSU0lPTl9MRVNTX1RIQU5fMDk7Ci0KLSAgICBpZiAo
IXRoaXMuVkVSU0lPTl9MRVNTX1RIQU5fMDkpIHsKLSAgICAgICAgdGhpcy5fYnVpbGRlck5hbWVU
b0lETWFwID0ge307Ci0gICAgICAgIHRoaXMuX2NvbXB1dGVCdWlsZGVyTmFtZVRvSURNYXAoKTsK
LSAgICB9Ci0KLSAgICBmb3IgKHZhciBpZCBpbiBxdWV1ZXNJbmZvKSB7Ci0gICAgICAgIGlmIChx
dWV1ZXNJbmZvW2lkXS5jb21iaW5lZFF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgY29t
YmluZWRRdWV1ZUlEIGluIHF1ZXVlc0luZm9baWRdLmNvbWJpbmVkUXVldWVzKQotICAgICAgICAg
ICAgICAgIHRoaXMucXVldWVzW2NvbWJpbmVkUXVldWVJRF0gPSBuZXcgQnVpbGRib3RRdWV1ZSh0
aGlzLCBjb21iaW5lZFF1ZXVlSUQsIHF1ZXVlc0luZm9baWRdLmNvbWJpbmVkUXVldWVzW2NvbWJp
bmVkUXVldWVJRF0pOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMucXVldWVzW2lk
XSA9IG5ldyBCdWlsZGJvdFF1ZXVlKHRoaXMsIGlkLCBxdWV1ZXNJbmZvW2lkXSk7Ci0gICAgfQot
fTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdCk7Ci0KLUJ1
aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzID0gewotICAgIFVuYXV0aGVudGljYXRlZDogInVu
YXV0aGVudGljYXRlZCIsCi0gICAgQXV0aGVudGljYXRlZDogImF1dGhlbnRpY2F0ZWQiLAotICAg
IEludmFsaWRDcmVkZW50aWFsczogImludmFsaWQtY3JlZGVudGlhbHMiCi19OwotCi1CdWlsZGJv
dC5VcGRhdGVSZWFzb24gPSB7Ci0gICAgUmVhdXRoZW50aWNhdGU6ICJyZWF1dGhlbnRpY2F0ZSIK
LX07Ci0KLS8vIE9yZGVyZWQgaW1wb3J0YW5jZS4KLUJ1aWxkYm90LlRlc3RDYXRlZ29yeSA9IHsK
LSAgICBXZWJLaXQyOiAid2Via2l0LTIiLAotICAgIFdlYktpdDE6ICJ3ZWJraXQtMSIKLX07Ci0K
LS8vIE9yZGVyZWQgaW1wb3J0YW5jZS4KLUJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlID0gewot
ICAgIFVuaXZlcnNhbDogInVuaXZlcnNhbCIsCi0gICAgU2l4dHlGb3VyQml0OiAic2l4dHktZm91
ci1iaXQiLAotICAgIFRoaXJ0eVR3b0JpdDogInRoaXJ0eS10d28tYml0IgotfTsKLQotQnVpbGRi
b3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdCwKLSAgICBfX3Byb3Rv
X186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IG5lZWRzQXV0aGVudGljYXRpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb247Ci0gICAg
fSwKLQotICAgIGdldCBhdXRoZW50aWNhdGlvblN0YXR1cygpCi0gICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXM7Ci0gICAgfSwKLQotICAgIGdldCBpc0F1dGhl
bnRpY2F0ZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uU3Rh
dHVzID09PSBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5BdXRoZW50aWNhdGVkOwotICAg
IH0sCi0KLSAgICBzZXQgaXNBdXRoZW50aWNhdGVkKHZhbHVlKQotICAgIHsKLSAgICAgICAgdGhp
cy5fYXV0aGVudGljYXRpb25TdGF0dXMgPSB2YWx1ZSA/IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9u
U3RhdHVzLkF1dGhlbnRpY2F0ZWQgOiBCdWlsZGJvdC5BdXRoZW50aWNhdGlvblN0YXR1cy5JbnZh
bGlkQ3JlZGVudGlhbHM7Ci0gICAgfSwKLQotICAgIF9ub3JtYWxpemVRdWV1ZUluZm86IGZ1bmN0
aW9uKHF1ZXVlSW5mbykKLSAgICB7Ci0gICAgICAgIGlmICghcXVldWVJbmZvLmNvbWJpbmVkUXVl
dWVzKQotICAgICAgICAgICAgcXVldWVJbmZvLmJyYW5jaGVzID0gcXVldWVJbmZvLmJyYW5jaGVz
IHx8IHRoaXMuZGVmYXVsdEJyYW5jaGVzOwotICAgICAgICBxdWV1ZUluZm8uZGVidWcgPSBxdWV1
ZUluZm8uZGVidWcgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby5idWlsZGVyID0gcXVldWVJ
bmZvLmJ1aWxkZXIgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby50ZXN0ZXIgPSBxdWV1ZUlu
Zm8udGVzdGVyIHx8IGZhbHNlOwotICAgICAgICBxdWV1ZUluZm8ucGVyZm9ybWFuY2UgPSBxdWV1
ZUluZm8ucGVyZm9ybWFuY2UgfHwgZmFsc2U7Ci0gICAgICAgIHF1ZXVlSW5mby5zdGF0aWNBbmFs
eXplciA9IHF1ZXVlSW5mby5zdGF0aWNBbmFseXplciB8fCBmYWxzZTsKLSAgICAgICAgcXVldWVJ
bmZvLmxlYWtzID0gcXVldWVJbmZvLmxlYWtzIHx8IGZhbHNlOwotICAgICAgICBxdWV1ZUluZm8u
YXJjaGl0ZWN0dXJlID0gcXVldWVJbmZvLmFyY2hpdGVjdHVyZSB8fCBudWxsOwotICAgICAgICBx
dWV1ZUluZm8udGVzdENhdGVnb3J5ID0gcXVldWVJbmZvLnRlc3RDYXRlZ29yeSB8fCBudWxsOwot
ICAgICAgICBxdWV1ZUluZm8uaGVhZGluZyA9IHF1ZXVlSW5mby5oZWFkaW5nIHx8IG51bGw7Ci0g
ICAgICAgIHF1ZXVlSW5mby5jcmFzaGVzT25seSA9IHF1ZXVlSW5mby5jcmFzaGVzT25seSB8fCBm
YWxzZTsKLSAgICB9LAotCi0gICAgX25vcm1hbGl6ZVF1ZXVlc0luZm86IGZ1bmN0aW9uKCkKLSAg
ICB7Ci0gICAgICAgIGZvciAocXVldWVOYW1lIGluIHRoaXMucXVldWVzSW5mbykgewotICAgICAg
ICAgICAgdmFyIHF1ZXVlSW5mbyA9IHRoaXMucXVldWVzSW5mb1txdWV1ZU5hbWVdOwotICAgICAg
ICAgICAgdGhpcy5fbm9ybWFsaXplUXVldWVJbmZvKHF1ZXVlSW5mbyk7Ci0gICAgICAgICAgICBp
ZiAocXVldWVJbmZvLmNvbWJpbmVkUXVldWVzKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChjb21i
aW5lZFF1ZXVlTmFtZSBpbiBxdWV1ZUluZm8uY29tYmluZWRRdWV1ZXMpIHsKLSAgICAgICAgICAg
ICAgICAgICAgcXVldWVJbmZvLmNvbWJpbmVkUXVldWVzW2NvbWJpbmVkUXVldWVOYW1lXS5wbGF0
Zm9ybSA9IHF1ZXVlSW5mby5wbGF0Zm9ybTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9y
bWFsaXplUXVldWVJbmZvKHF1ZXVlSW5mby5jb21iaW5lZFF1ZXVlc1tjb21iaW5lZFF1ZXVlTmFt
ZV0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0s
Ci0KLSAgICB1cGRhdGVRdWV1ZXM6IGZ1bmN0aW9uKHVwZGF0ZVJlYXNvbikKLSAgICB7Ci0gICAg
ICAgIHZhciBzaG91bGRSZWF1dGhlbnRpY2F0ZSA9IHVwZGF0ZVJlYXNvbiA9PT0gQnVpbGRib3Qu
VXBkYXRlUmVhc29uLlJlYXV0aGVudGljYXRlOwotICAgICAgICBpZiAoc2hvdWxkUmVhdXRoZW50
aWNhdGUpIHsKLSAgICAgICAgICAgIHZhciBzYXZlZEF1dGhlbnRpY2F0aW9uU3RhdHVzID0gdGhp
cy5fYXV0aGVudGljYXRpb25TdGF0dXM7Ci0gICAgICAgICAgICB0aGlzLl9hdXRoZW50aWNhdGlv
blN0YXR1cyA9IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLlVuYXV0aGVudGljYXRlZDsK
LSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBpZCBpbiB0aGlzLnF1ZXVlcykKLSAgICAgICAg
ICAgIHRoaXMucXVldWVzW2lkXS51cGRhdGUoKTsKLSAgICAgICAgaWYgKHNob3VsZFJlYXV0aGVu
dGljYXRlKSB7Ci0gICAgICAgICAgICAvLyBBc3NlcnQgc3RhdHVzIHdhc24ndCBjaGFuZ2VkIHN5
bmNocm9ub3VzbHkuIE90aGVyd2lzZSwgd2Ugd2lsbCBvdmVycmlkZSBpdCAoYmVsb3cpLgotICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1
aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLlVuYXV0aGVudGljYXRlZCk7Ci0gICAgICAgICAg
ICB0aGlzLl9hdXRoZW50aWNhdGlvblN0YXR1cyA9IHNhdmVkQXV0aGVudGljYXRpb25TdGF0dXM7
Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGxvZ2ljIGFm
dGVyIDxodHRwczovL2dpdGh1Yi5jb20vYnVpbGRib3QvYnVpbGRib3QvaXNzdWVzLzM0NjU+IGlz
IGZpeGVkLgotICAgIF9jb21wdXRlQnVpbGRlck5hbWVUb0lETWFwOiBmdW5jdGlvbigpCi0gICAg
ewotICAgICAgICBKU09OLmxvYWQodGhpcy5iYXNlVVJMICsgImFwaS92Mi9idWlsZGVycyIsIGZ1
bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIGlmICghZGF0YSB8fCAhKGRhdGEuYnVpbGRlcnMg
aW5zdGFuY2VvZiBBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAg
ICBmb3IgKHZhciBidWlsZGVyIG9mIGRhdGEuYnVpbGRlcnMpCi0gICAgICAgICAgICAgICAgdGhp
cy5fYnVpbGRlck5hbWVUb0lETWFwW2J1aWxkZXIubmFtZV0gPSBidWlsZGVyLmJ1aWxkZXJpZDsK
LSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgYnVpbGRQYWdlVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAgICBpZiAodGhpcy5WRVJT
SU9OX0xFU1NfVEhBTl8wOSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiYnVp
bGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudChpdGVyYXRpb24ucXVldWUuaWQpICsgIi9idWls
ZHMvIiArIGl0ZXJhdGlvbi5pZDsKLQotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMuX2J1
aWxkZXJOYW1lVG9JRE1hcCBsb29rdXAgYWZ0ZXIgPGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJv
dC9idWlsZGJvdC9pc3N1ZXMvMzQ2NT4gaXMgZml4ZWQuCi0gICAgICAgIHJldHVybiB0aGlzLmJh
c2VVUkwgKyAiIy9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX2J1aWxkZXJO
YW1lVG9JRE1hcFtpdGVyYXRpb24ucXVldWUuaWRdKSArICIvYnVpbGRzLyIgKyBpdGVyYXRpb24u
aWQ7Ci0gICAgfSwKLQotICAgIGphdmFTY3JpcHRDb3JlVGVzdEZhaWx1cmVzVVJMRm9ySXRlcmF0
aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSArICIvc3RlcHMvIiArIG5hbWUg
KyAiL2xvZ3MvanNvbi90ZXh0IjsKLSAgICB9LAotCi0gICAgamF2YVNjcmlwdENvcmVUZXN0U3Rk
aW9VcmxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgbmFtZSkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiB0aGlzLmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9z
dGVwcy8iICsgbmFtZSArICIvbG9ncy9zdGRpbyI7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RS
ZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAg
ewotICAgICAgICB2YXIgdW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyA9ICJyIjsKLSAgICAg
ICAgc29ydERpY3Rpb25hcmllc0J5T3JkZXIoRGFzaGJvYXJkLlJlcG9zaXRvcnkpLmZvckVhY2go
ZnVuY3Rpb24ocmVwb3NpdG9yeSkgewotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5yZXZpc2lv
bltyZXBvc2l0b3J5Lm5hbWVdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHVuZGVyc2NvcmVTZXBh
cmF0ZWRSZXZpc2lvbnMubGVuZ3RoID4gMSkKLSAgICAgICAgICAgICAgICAgICAgdW5kZXJzY29y
ZVNlcGFyYXRlZFJldmlzaW9ucyArPSAiXyI7Ci0gICAgICAgICAgICAgICAgdW5kZXJzY29yZVNl
cGFyYXRlZFJldmlzaW9ucyArPSBpdGVyYXRpb24ucmV2aXNpb25bcmVwb3NpdG9yeS5uYW1lXTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwg
KyAicmVzdWx0cy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5pZCkgKyAi
LyIgKyBlbmNvZGVVUklDb21wb25lbnQodW5kZXJzY29yZVNlcGFyYXRlZFJldmlzaW9ucyArICIg
KCIgKyBpdGVyYXRpb24uaWQgKyAiKSIpOwotICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0UmVzdWx0
c1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uKSArICIvcmVzdWx0cy5odG1sIjsKLSAgICB9LAotCi0gICAgZGFzaGJvYXJkVGVzdFJlc3Vs
dHNVUkxGb3JJdGVyYXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJh
dGlvbikgKyAiL2Rhc2hib2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzL2luZGV4LXByZXR0eS1kaWZm
Lmh0bWwiOwotICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0RnVsbFJlc3VsdHNVUkxGb3JJdGVyYXRp
b246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91
dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiL2Z1bGxf
cmVzdWx0cy5qc29uIjsKLSAgICB9LAotCi0gICAgbGF5b3V0VGVzdENyYXNoTG9nVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgdmFy
IHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86LiopJC8sICIkMS1jcmFzaC1sb2cu
dHh0Iik7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRlc3RSZXN1bHRzRGlyZWN0b3J5VVJM
Rm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiLyIgKyBwYXRoOwotICAgIH0sCi0KLSAgICBsYXlv
dXRUZXN0U3RkZXJyVVJMRm9ySXRlcmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRo
KQotICAgIHsKLSAgICAgICAgdmFyIHBhdGggPSB0ZXN0UGF0aC5yZXBsYWNlKC9eKC4qKVwuKD86
LiopJC8sICIkMS1zdGRlcnIudHh0Iik7Ci0gICAgICAgIHJldHVybiB0aGlzLmxheW91dFRlc3RS
ZXN1bHRzRGlyZWN0b3J5VVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikgKyAiLyIgKyBwYXRoOwot
ICAgIH0sCi0KLSAgICBsYXlvdXRUZXN0RGlmZlVSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRl
cmF0aW9uLCB0ZXN0UGF0aCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBhdGgucmVw
bGFjZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtZGlmZi50eHQiKTsKLSAgICAgICAgcmV0dXJuIHRo
aXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSAr
ICIvIiArIHBhdGg7Ci0gICAgfSwKLQotICAgIGxheW91dFRlc3RQcmV0dHlEaWZmVVJMRm9ySXRl
cmF0aW9uOiBmdW5jdGlvbihpdGVyYXRpb24sIHRlc3RQYXRoKQotICAgIHsKLSAgICAgICAgLy8g
cHJldHR5LXBhdGNoIG1heSBub3QgYmUgYXZhaWxhYmxlLCBjYWxsZXIgc2hvdWxkIGNoZWNrIEpT
T04gcmVzdWx0cyBmb3IgaGFzX3ByZXR0eV9wYXRjaCBhdHRyaWJ1dGUuCi0gICAgICAgIHZhciBw
YXRoID0gdGVzdFBhdGgucmVwbGFjZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtcHJldHR5LWRpZmYu
aHRtbCIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0UmVzdWx0c0RpcmVjdG9yeVVS
TEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsKLSAgICB9LAotCi0gICAgbGF5
b3V0VGVzdEltYWdlc1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCB0ZXN0UGF0
aCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBhdGgucmVwbGFjZSgvXiguKilcLig/
Oi4qKSQvLCAiJDEtZGlmZnMuaHRtbCIpOwotICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXRUZXN0
UmVzdWx0c0RpcmVjdG9yeVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi8iICsgcGF0aDsK
LSAgICB9LAotCi0gICAgbGF5b3V0VGVzdEltYWdlRGlmZlVSTEZvckl0ZXJhdGlvbjogZnVuY3Rp
b24oaXRlcmF0aW9uLCB0ZXN0UGF0aCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXRoID0gdGVzdFBh
dGgucmVwbGFjZSgvXiguKilcLig/Oi4qKSQvLCAiJDEtZGlmZi5wbmciKTsKLSAgICAgICAgcmV0
dXJuIHRoaXMubGF5b3V0VGVzdFJlc3VsdHNEaXJlY3RvcnlVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uKSArICIvIiArIHBhdGg7Ci0gICAgfSwKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdEJ1aWxkZXJRdWV1ZVZpZXcuanMJKG5vbmV4
aXN0ZW50KQpAQCAtMSwxNTUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxkYm90QnVpbGRlclF1
ZXVlVmlldyA9IGZ1bmN0aW9uKHF1ZXVlcykKLXsKLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxs
KHRoaXMsIHF1ZXVlcyk7Ci0KLSAgICBmdW5jdGlvbiBmaWx0ZXJRdWV1ZXMoYXJjaGl0ZWN0dXJl
LCBkZWJ1ZywgcXVldWUpCi0gICAgewotICAgICAgICByZXR1cm4gcXVldWUuYXJjaGl0ZWN0dXJl
ID09PSBhcmNoaXRlY3R1cmUgJiYgcXVldWUuZGVidWcgPT09IGRlYnVnOwotICAgIH0KLQotICAg
IHRoaXMudW5pdmVyc2FsUmVsZWFzZVF1ZXVlcyA9IHRoaXMucXVldWVzLmZpbHRlcihmaWx0ZXJR
dWV1ZXMuYmluZCh0aGlzLCBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwsIGZh
bHNlKSk7Ci0gICAgdGhpcy5zaXh0eUZvdXJCaXRSZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1ZXMu
ZmlsdGVyKGZpbHRlclF1ZXVlcy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJl
LlNpeHR5Rm91ckJpdCwgZmFsc2UpKTsKLSAgICB0aGlzLnRoaXJ0eVR3b0JpdFJlbGVhc2VRdWV1
ZXMgPSB0aGlzLnF1ZXVlcy5maWx0ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3Qu
QnVpbGRBcmNoaXRlY3R1cmUuVGhpcnR5VHdvQml0LCBmYWxzZSkpOwotCi0gICAgdGhpcy51bml2
ZXJzYWxEZWJ1Z1F1ZXVlcyA9IHRoaXMucXVldWVzLmZpbHRlcihmaWx0ZXJRdWV1ZXMuYmluZCh0
aGlzLCBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwsIHRydWUpKTsKLSAgICB0
aGlzLnNpeHR5Rm91ckJpdERlYnVnUXVldWVzID0gdGhpcy5xdWV1ZXMuZmlsdGVyKGZpbHRlclF1
ZXVlcy5iaW5kKHRoaXMsIEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdCwg
dHJ1ZSkpOwotICAgIHRoaXMudGhpcnR5VHdvQml0RGVidWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5m
aWx0ZXIoZmlsdGVyUXVldWVzLmJpbmQodGhpcywgQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUu
VGhpcnR5VHdvQml0LCB0cnVlKSk7Ci0KLSAgICB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxk
cyA9IHRoaXMudW5pdmVyc2FsUmVsZWFzZVF1ZXVlcy5sZW5ndGggKyB0aGlzLnNpeHR5Rm91ckJp
dFJlbGVhc2VRdWV1ZXMubGVuZ3RoICsgdGhpcy50aGlydHlUd29CaXRSZWxlYXNlUXVldWVzLmxl
bmd0aCA+IDE7Ci0gICAgdGhpcy5oYXNNdWx0aXBsZURlYnVnQnVpbGRzID0gdGhpcy51bml2ZXJz
YWxEZWJ1Z1F1ZXVlcy5sZW5ndGggKyB0aGlzLnNpeHR5Rm91ckJpdERlYnVnUXVldWVzLmxlbmd0
aCArIHRoaXMudGhpcnR5VHdvQml0RGVidWdRdWV1ZXMubGVuZ3RoID4gMTsKLQotICAgIHRoaXMu
dXBkYXRlKCk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxk
Ym90QnVpbGRlclF1ZXVlVmlldyk7Ci0KLUJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldy5wcm90b3R5
cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldywKLSAgICBf
X3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0
ZS5jYWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwot
Ci0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24g
JiYgIXF1ZXVlLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRo
aXMuX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdS
ZXZpc2lvbkNvdW50KHF1ZXVlLCB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQo
dGhpcywgcXVldWUpKTsKLQotICAgICAgICAgICAgdmFyIGZpcnN0UmVjZW50VW5zdWNjZXNzZnVs
SXRlcmF0aW9uID0gcXVldWUuZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb247Ci0gICAg
ICAgICAgICB2YXIgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uID0gcXVldWUubW9zdFJlY2Vu
dEZpbmlzaGVkSXRlcmF0aW9uOwotICAgICAgICAgICAgdmFyIG1vc3RSZWNlbnRTdWNjZXNzZnVs
SXRlcmF0aW9uID0gcXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb247Ci0KLSAgICAg
ICAgICAgIGlmIChmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2Vu
dFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbi5sb2FkZWQKLSAgICAgICAgICAgICAgICAmJiBtb3N0UmVj
ZW50RmluaXNoZWRJdGVyYXRpb24gJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmxvYWRl
ZCkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFtb3N0UmVjZW50RmluaXNoZWRJ
dGVyYXRpb24uc3VjY2Vzc2Z1bCk7Ci0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlz
LnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbihtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24s
IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5wcm9kdWN0aXZlID8gbW9zdFJlY2VudFN1Y2Nl
c3NmdWxJdGVyYXRpb24gOiBudWxsKTsKLSAgICAgICAgICAgICAgICBpZiAobW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uLmZhaWxlZCAmJiBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJv
ZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBBc3N1bWUgaXQgd2FzIGEgYnVpbGQg
c3RlcCB0aGF0IGZhaWxlZCwgYW5kIGxpbmsgZGlyZWN0bHkgdG8gb3V0cHV0LgotICAgICAgICAg
ICAgICAgICAgICB2YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVM
b2dVUkwoImJ1aWxkIGxvZyIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIXVybCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHVybCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5mYWls
dXJlTG9nVVJMKCJzdGRpbyIpOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLkJhZDsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXR1cyA9IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXI7Ci0K
LSAgICAgICAgICAgICAgICAvLyBTaG93IGEgcG9wb3ZlciB3aGVuIHRoZSBVUkwgaXMgbm90IGEg
bWFpbiBidWlsZCBwYWdlIG9uZSwgYmVjYXVzZSB0aGVyZSBhcmUgdXN1YWxseSBtdWx0aXBsZSBs
b2dzLCBhbmQgaXQncyBnb29kIHRvIHByb3ZpZGUgYSBjaG9pY2UuCi0gICAgICAgICAgICAgICAg
dmFyIG5lZWRzUG9wb3ZlciA9ICEhdXJsOwotCi0gICAgICAgICAgICAgICAgLy8gU29tZSBvdGhl
ciBzdGVwIGZhaWxlZCwgbGluayB0byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBpdGVyYXRp
b24uCi0gICAgICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAgICAgICAgICAgIHVybCA9
IHF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihtb3N0UmVjZW50RmluaXNo
ZWRJdGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGlu
ZVZpZXcobWVzc2FnZSwgc3RhdHVzLCBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24udGV4dCwg
bnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Rh
dHVzLmVsZW1lbnQpOwotCi0gICAgICAgICAgICAgICAgaWYgKG5lZWRzUG9wb3ZlcikKLSAgICAg
ICAgICAgICAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVt
ZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZhaWx1cmVMb2dzLmJpbmQodGhpcyksIG1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICht
b3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJh
dGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNp
b25Db250ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAg
ICAgICAgICAgICAgICB2YXIgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRl
cmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICB2
YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5Hb29kLCBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2Nl
c3NmdWwgYnVpbGQiIDogImxhdGVzdCBidWlsZCIsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dygidW5rbm93biIsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsLCBmaXJzdFJlY2VudFVu
c3VjY2Vzc2Z1bEl0ZXJhdGlvbiA/ICJsYXN0IHN1Y2Nlc3NmdWwgYnVpbGQiIDogImxhdGVzdCBi
dWlsZCIpOwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMu
ZWxlbWVudCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJ
dGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhIGZhaWxlZCBpdGVy
YXRpb24gYnV0IG5vIHN1Y2Nlc3NmdWwuIEl0IG1pZ2h0IGJlIGZ1cnRoZXIgYmFjayBpbiB0aW1l
LgotICAgICAgICAgICAgICAgICAgICBxdWV1ZS5sb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRpb25z
KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAg
ICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy51bml2ZXJzYWxSZWxlYXNl
UXVldWVzLCB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlIChVbml2ZXJz
YWwpIiA6ICJSZWxlYXNlIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhp
cy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5zaXh0eUZvdXJCaXRSZWxlYXNlUXVl
dWVzLCB0aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlICg2NC1iaXQpIiA6
ICJSZWxlYXNlIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5hcHBl
bmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy50aGlydHlUd29CaXRSZWxlYXNlUXVldWVzLCB0
aGlzLmhhc011bHRpcGxlUmVsZWFzZUJ1aWxkcyA/ICJSZWxlYXNlICgzMi1iaXQpIiA6ICJSZWxl
YXNlIiwgYXBwZW5kQnVpbGRlclF1ZXVlU3RhdHVzKTsKLQotICAgICAgICB0aGlzLmFwcGVuZEJ1
aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlzLnVuaXZlcnNhbERlYnVnUXVldWVzLCB0aGlzLmhhc011
bHRpcGxlRGVidWdCdWlsZHMgPyAiRGVidWcgKFVuaXZlcnNhbCkiIDogIkRlYnVnIiwgYXBwZW5k
QnVpbGRlclF1ZXVlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwo
dGhpcywgdGhpcy5zaXh0eUZvdXJCaXREZWJ1Z1F1ZXVlcywgdGhpcy5oYXNNdWx0aXBsZURlYnVn
QnVpbGRzID8gIkRlYnVnICg2NC1iaXQpIiA6ICJEZWJ1ZyIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0
YXR1cyk7Ci0gICAgICAgIHRoaXMuYXBwZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMudGhp
cnR5VHdvQml0RGVidWdRdWV1ZXMsIHRoaXMuaGFzTXVsdGlwbGVEZWJ1Z0J1aWxkcyA/ICJEZWJ1
ZyAoMzItYml0KSIgOiAiRGVidWciLCBhcHBlbmRCdWlsZGVyUXVldWVTdGF0dXMpOwotICAgIH0s
Ci0KLSAgICBfcHJlc2VudFBvcG92ZXJGYWlsdXJlTG9nczogZnVuY3Rpb24oZWxlbWVudCwgcG9w
b3ZlciwgaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiYnVpbGQt
bG9ncy1wb3BvdmVyIjsKLQotICAgICAgICBmdW5jdGlvbiBhZGRMb2cobmFtZSwgdXJsKSB7Ci0g
ICAgICAgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAg
ICAgICAgIGxpbmUuY2xhc3NOYW1lID0gImJ1aWxkLWxvZy1saW5rIjsKLSAgICAgICAgICAgIGxp
bmUuaHJlZiA9IHVybDsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBuYW1lOwotICAg
ICAgICAgICAgbGluZS50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kQ2hpbGQobGluZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25I
ZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlvbiwgY29udGVudCk7Ci0gICAgICAgIHRoaXMuX2FkZERp
dmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgbG9nc0hlYWRp
bmdMaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGxvZ3NIZWFk
aW5nTGluZS5jbGFzc05hbWUgPSAiYnVpbGQtbG9ncy1oZWFkaW5nIjsKLSAgICAgICAgbG9nc0hl
YWRpbmdMaW5lLnRleHRDb250ZW50ID0gaXRlcmF0aW9uLmZpcnN0RmFpbGVkU3RlcE5hbWUgKyAi
IGZhaWxlZCI7Ci0gICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobG9nc0hlYWRpbmdMaW5lKTsK
LQotICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gaXRlcmF0aW9uLmZhaWx1cmVMb2dzLmxl
bmd0aDsgaSA8IGVuZDsgKytpKQotICAgICAgICAgICAgYWRkTG9nKGl0ZXJhdGlvbi5mYWlsdXJl
TG9nc1tpXVswXSwgaXRlcmF0aW9uLmZhaWx1cmVMb2dzW2ldWzFdKTsKLQotICAgICAgICB2YXIg
cmVjdCA9IERhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpKTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAg
ICAgICAgcG9wb3Zlci5wcmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERh
c2hib2FyZC5SZWN0RWRnZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9h
cmQuUmVjdEVkZ2UuTUlOX1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotfTsKSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmll
dy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RD
b21iaW5lZFF1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI0MCArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3ID0gZnVuY3Rpb24o
cXVldWUpCi17Ci0gICAgY29uc29sZS5hc3NlcnQocXVldWUuYnJhbmNoZXMgPT09IHVuZGVmaW5l
ZCk7Ci0gICAgdmFyIGluZGljZXNPZkZpcnN0UXVldWVXaXRoUmVwb3NpdG9yeSA9IHt9OwotICAg
IHZhciBjb21iaW5lZFF1ZXVlcyA9IHF1ZXVlLmNvbWJpbmVkUXVldWVzOwotICAgIHZhciBidWls
ZGJvdCA9IGNvbWJpbmVkUXVldWVzWzBdLmJ1aWxkYm90OwotICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgY29tYmluZWRRdWV1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHN1YlF1ZXVlID0g
Y29tYmluZWRRdWV1ZXNbaV07Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkYm90ID09PSBz
dWJRdWV1ZS5idWlsZGJvdCk7Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHN1YlF1ZXVlLmJyYW5j
aGVzOwotICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJyYW5jaGVzLmxlbmd0aDsgKytqKSB7
Ci0gICAgICAgICAgICB2YXIgYnJhbmNoID0gYnJhbmNoZXNbal07Ci0gICAgICAgICAgICB2YXIg
cmVwb3NpdG9yeU5hbWUgPSBicmFuY2gucmVwb3NpdG9yeS5uYW1lOwotICAgICAgICAgICAgdmFy
IGV4cGVjdGVkID0gaW5kaWNlc09mRmlyc3RRdWV1ZVdpdGhSZXBvc2l0b3J5W3JlcG9zaXRvcnlO
YW1lXTsKLSAgICAgICAgICAgIGlmIChleHBlY3RlZCA9PT0gdW5kZWZpbmVkKSB7Ci0gICAgICAg
ICAgICAgICAgaW5kaWNlc09mRmlyc3RRdWV1ZVdpdGhSZXBvc2l0b3J5W3JlcG9zaXRvcnlOYW1l
XSA9IHsgcXVldWVJbmRleDogaSwgYnJhbmNoSW5kZXg6IGogfTsKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHZhciBleHBlY3RlZEJyYW5jaCA9
IGNvbWJpbmVkUXVldWVzW2V4cGVjdGVkLnF1ZXVlSW5kZXhdLmJyYW5jaGVzW2V4cGVjdGVkLmJy
YW5jaEluZGV4XTsKLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcXVldWUuaWQgKyAiOiAiICsg
YnJhbmNoLm5hbWUgKyAiID09PSBjb21iaW5lZFF1ZXVlc1siICsgaSArICJdLmJyYW5jaFsiICsg
aiArICJdICI7Ci0gICAgICAgICAgICBtZXNzYWdlICs9ICI9PT0gY29tYmluZWRRdWV1ZXNbIiAr
IGV4cGVjdGVkLnF1ZXVlSW5kZXggKyAiXS5icmFuY2hbIiArIGV4cGVjdGVkLmJyYW5jaEluZGV4
ICsgIl0gPT09ICIgKyBleHBlY3RlZEJyYW5jaC5uYW1lOwotICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJhbmNoLm5hbWUgPT09IGV4cGVjdGVkQnJhbmNoLm5hbWUsIG1lc3NhZ2UpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgQnVpbGRib3RRdWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZS5j
b21iaW5lZFF1ZXVlcyk7Ci0KLSAgICB0aGlzLl9hbHdheXNFeHBhbmQgPSBmYWxzZTsKLSAgICB0
aGlzLmNvbWJpbmVkUXVldWUgPSBxdWV1ZTsKLSAgICB0aGlzLnVwZGF0ZSgpOwotfTsKLQotQmFz
ZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3
KTsKLQotQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3Ry
dWN0b3I6IEJ1aWxkYm90Q29tYmluZWRRdWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBCdWlsZGJv
dFF1ZXVlVmlldy5wcm90b3R5cGUsCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2FsbCh0aGlzKTsKLQot
ICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBpZiAoIXRo
aXMuX2Fsd2F5c0V4cGFuZCAmJiB0aGlzLl9xdWV1ZXNTaG91bGREaXNwbGF5Q29tYmluZWQoKSkg
ewotICAgICAgICAgICAgdmFyIHJlbGVhc2VMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImEiKTsKLSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC5jbGFzc0xpc3QuYWRkKCJxdWV1ZUxhYmVs
Iik7Ci0gICAgICAgICAgICByZWxlYXNlTGFiZWwuaHJlZiA9ICIjIjsKLSAgICAgICAgICAgIHJl
bGVhc2VMYWJlbC50ZXh0Q29udGVudCA9IHRoaXMuY29tYmluZWRRdWV1ZS5oZWFkaW5nOwotICAg
ICAgICAgICAgcmVsZWFzZUxhYmVsLm9uY2xpY2sgPSBmdW5jdGlvbigpIHsgdGhpcy5fYWx3YXlz
RXhwYW5kID0gdHJ1ZTsgdGhpcy51cGRhdGUoKTsgcmV0dXJuIGZhbHNlOyB9LmJpbmQodGhpcyk7
Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVsZWFzZUxhYmVsKTsKLQot
ICAgICAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5xdWV1ZXNbMF07IC8vIEFsbCBxdWV1ZXMgaW4g
dGhlIGNvbWJpbmVkIHF1ZXVlIGFyZSBmcm9tIHRoZSBzYW1lIGJ1aWxkYm90LgotICAgICAgICAg
ICAgaWYgKHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxk
Ym90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0
aG9yaXplZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFNob3cgdGhlIHJldmlzaW9uIGZvciB0aGUgc2xvd2Vz
dCBxdWV1ZSwgYmVjYXVzZSB3ZSBkb24ndCBrbm93IGlmIGFueSBuZXdlciByZXZpc2lvbnMgYXJl
IGdyZWVuIG9uIGFsbCBxdWV1ZXMuCi0gICAgICAgICAgICAvLyBUaGlzIGNhbiBiZSBzbGlnaHRs
eSBtaXNsZWFkaW5nIGFmdGVyIGZpeGluZyBhIHByb2JsZW0sIGJlY2F1c2Ugd2UgY2FuIHNob3cg
YSBrbm93biBicm9rZW4gcmV2aXNpb24gYXMgZ3JlZW4uCi0gICAgICAgICAgICB2YXIgc2xvd2Vz
dFF1ZXVlID0gdGhpcy5xdWV1ZXMuc2xpY2UoKS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJu
IEJ1aWxkYm90UXVldWUucHJvdG90eXBlLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoYS5t
b3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbiwgYi5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJh
dGlvbik7IH0pLnBvcCgpOwotICAgICAgICAgICAgdGhpcy5fYXBwZW5kUGVuZGluZ1JldmlzaW9u
Q291bnQoc2xvd2VzdFF1ZXVlLCB0aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQo
dGhpcywgc2xvd2VzdFF1ZXVlKSk7Ci0KLSAgICAgICAgICAgIHZhciBtZXNzYWdlID0gdGhpcy5y
ZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oc2xvd2VzdFF1ZXVlLm1vc3RSZWNlbnRTdWNjZXNz
ZnVsSXRlcmF0aW9uKTsKLSAgICAgICAgICAgIHZhciBzdGF0dXNNZXNzYWdlUGFzc2VkID0gImFs
bCAiICsgKHF1ZXVlLmJ1aWxkZXIgPyAiYnVpbGRzIHN1Y2NlZWRlZCIgOiAidGVzdHMgcGFzc2Vk
Iik7Ci0gICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNz
YWdlLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuR29vZCwgc3RhdHVzTWVzc2FnZVBhc3NlZCwgbnVs
bCwgbnVsbCk7Ci0gICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzVmlldy5zdGF0
dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvckNvbWJpbmVkR3JlZW5CdWJi
bGUuYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3Rh
dHVzVmlldy5lbGVtZW50KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuYXBw
ZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMucXVldWVzLCBudWxsLCBmdW5jdGlvbihxdWV1
ZSkgewotICAgICAgICAgICAgICAgIGlmIChxdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0
aW9uICYmICFxdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5fYXBwZW5kVW5hdXRob3JpemVkTGluZVZpZXcocXVldWUpOwotICAgICAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAg
dGhpcy5fYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291bnQocXVldWUsIHRoaXMuX2xhdGVzdFByb2R1
Y3RpdmVJdGVyYXRpb24uYmluZCh0aGlzLCBxdWV1ZSkpOwotCi0gICAgICAgICAgICAgICAgdmFy
IGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID0gcXVldWUuZmlyc3RSZWNlbnRVbnN1
Y2Nlc3NmdWxJdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgdmFyIG1vc3RSZWNlbnRGaW5pc2hl
ZEl0ZXJhdGlvbiA9IHF1ZXVlLm1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbjsKLSAgICAgICAg
ICAgICAgICB2YXIgbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gPSBxdWV1ZS5tb3N0UmVj
ZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbjsKLQotICAgICAgICAgICAgICAgIGlmIChmaXJzdFJlY2Vu
dFVuc3VjY2Vzc2Z1bEl0ZXJhdGlvbiAmJiBmaXJzdFJlY2VudFVuc3VjY2Vzc2Z1bEl0ZXJhdGlv
bi5sb2FkZWQgJiYgbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRGaW5p
c2hlZEl0ZXJhdGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIW1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFyIG1lc3NhZ2UgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlvbiht
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5w
cm9kdWN0aXZlID8gbW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24gOiBudWxsKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24ucHJvZHVjdGl2
ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IFN0YXR1c0xpbmVWaWV3
LlN0YXR1cy5EYW5nZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9zdFJlY2Vu
dEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRlc3RTdGVwcy5sZW5ndGggPT09IDEgJiYgLyg/PS4q
dGVzdCkoPz0uKmpzYykvLnRlc3QobW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWxlZFRl
c3RTdGVwc1swXS5uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWxlZFN0
ZXAgPSBtb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzWzBdOwotICAg
ICAgICAgICAgICAgICAgICAgICAgdmFyIFVSTCA9IG1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlv
bi5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RTdGRpb1VybEZvckl0ZXJhdGlvbiht
b3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24sIGZhaWxlZFN0ZXAubmFtZSk7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzVmlldyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdl
LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuQmFkLCB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlw
dGlvbihmYWlsZWRTdGVwKSwgZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQsIFVSTCk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVt
ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXNW
aWV3LnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlw
dENvcmVUZXN0UmVncmVzc2lvbnMuYmluZCh0aGlzLCBmYWlsZWRTdGVwLm5hbWUpLCBtb3N0UmVj
ZW50RmluaXNoZWRJdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8g
RGlyZWN0IGxpbmtzIHRvIHNvbWUgY29tbW9uIGxvZ3MuCi0gICAgICAgICAgICAgICAgICAgICAg
ICB2YXIgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1cmVMb2dVUkwoImJ1
aWxkIGxvZyIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1cmwpCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdXJsID0gbW9zdFJlY2VudEZpbmlzaGVkSXRlcmF0aW9uLmZhaWx1
cmVMb2dVUkwoInN0ZGlvIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0g
U3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICAgICAgICAgIC8vIFNob3cgYSBwb3BvdmVyIHdoZW4gdGhlIFVSTCBpcyBub3QgYSBt
YWluIGJ1aWxkIHBhZ2Ugb25lLCBiZWNhdXNlIHRoZXJlIGFyZSB1c3VhbGx5IG11bHRpcGxlIGxv
Z3MsIGFuZCBpdCdzIGdvb2QgdG8gcHJvdmlkZSBhIGNob2ljZS4KLSAgICAgICAgICAgICAgICAg
ICAgdmFyIG5lZWRzUG9wb3ZlciA9ICF1cmw7Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gU29t
ZSBvdGhlciBzdGVwIGZhaWxlZCwgbGluayB0byBtYWluIGJ1aWxkYm90IHBhZ2UgZm9yIHRoZSBp
dGVyYXRpb24uCi0gICAgICAgICAgICAgICAgICAgIGlmICghdXJsKQotICAgICAgICAgICAgICAg
ICAgICAgICAgdXJsID0gcXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKG1v
c3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0
dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIHN0YXR1cywgbW9zdFJlY2VudEZp
bmlzaGVkSXRlcmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgICAgIHRo
aXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXNWaWV3LmVsZW1lbnQpOwotCi0gICAgICAgICAg
ICAgICAgICAgIGlmIChuZWVkc1BvcG92ZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXcg
UG9wb3ZlclRyYWNrZXIoc3RhdHVzVmlldy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9wcmVz
ZW50SW5kaXZpZHVhbFF1ZXVlUG9wb3Zlci5iaW5kKHRoaXMpLCBtb3N0UmVjZW50RmluaXNoZWRJ
dGVyYXRpb24pOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHZhciBzdGF0
dXNNZXNzYWdlUGFzc2VkID0gImFsbCAiICsgKHF1ZXVlLmJ1aWxkZXIgPyAiYnVpbGRzIHN1Y2Nl
ZWRlZCIgOiAidGVzdHMgcGFzc2VkIik7Ci0gICAgICAgICAgICAgICAgaWYgKG1vc3RSZWNlbnRT
dWNjZXNzZnVsSXRlcmF0aW9uICYmIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uLmxvYWRl
ZCkgewotICAgICAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucmV2aXNpb25Db250
ZW50Rm9ySXRlcmF0aW9uKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHVybCA9IHF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJh
dGlvbihtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAg
IHZhciBsYWJlbCA9IGZpcnN0UmVjZW50VW5zdWNjZXNzZnVsSXRlcmF0aW9uID8gImxhc3Qgc3Vj
Y2VlZGVkIiA6IHN0YXR1c01lc3NhZ2VQYXNzZWQ7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBz
dGF0dXNWaWV3ID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3NhZ2UsIFN0YXR1c0xpbmVWaWV3LlN0
YXR1cy5Hb29kLCBsYWJlbCwgbnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5l
bGVtZW50LmFwcGVuZENoaWxkKHN0YXR1c1ZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gZmlyc3RSZWNlbnRVbnN1
Y2Nlc3NmdWxJdGVyYXRpb24gPyAibGFzdCBzdWNjZWVkZWQiIDogc3RhdHVzTWVzc2FnZVBhc3Nl
ZDsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1c1ZpZXcgPSBuZXcgU3RhdHVzTGluZVZp
ZXcoInVua25vd24iLCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuTmV1dHJhbCwgbGFiZWwpOwotICAg
ICAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzVmlldy5lbGVt
ZW50KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJ
dGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSBmYWlsZWQg
aXRlcmF0aW9uIGJ1dCBubyBzdWNjZXNzZnVsLiBJdCBtaWdodCBiZSBmdXJ0aGVyIGJhY2sgaW4g
dGltZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXVlLmxvYWRNb3JlSGlzdG9yaWNhbEl0
ZXJhdGlvbnMoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIEFsbCBxdWV1ZXMgYXJl
IGdyZWVuLCBvciBhbGwgYXJlIHVuYXV0aG9yaXplZCAodGhlIGxhdHRlciBjYXNlIGFsd2F5cyBh
cHBsaWVzIHRvIGFsbCBxdWV1ZXMsIGJlY2F1c2UgdGhleSBhcmUgYWxsIGZyb20gdGhlIHNhbWUg
YnVpbGRib3QpLgotICAgIF9xdWV1ZXNTaG91bGREaXNwbGF5Q29tYmluZWQ6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB0aGlzLnF1ZXVlcy5sZW5ndGg7
IGkgPCBlbmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIHF1ZXVlID0gdGhpcy5xdWV1ZXNbaV07
Ci0gICAgICAgICAgICBpZiAocXVldWUuYnVpbGRib3QubmVlZHNBdXRoZW50aWNhdGlvbiAmJiAh
cXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkKQotICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwotICAgICAgICAgICAgaWYgKCFxdWV1ZS5tb3N0UmVjZW50RmluaXNoZWRJdGVyYXRpb24g
fHwgIXF1ZXVlLm1vc3RSZWNlbnRGaW5pc2hlZEl0ZXJhdGlvbi5zdWNjZXNzZnVsKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9LAotCi0gICAgX3ByZXNlbnRQb3BvdmVyRm9yQ29tYmluZWRHcmVlbkJ1YmJsZTogZnVu
Y3Rpb24oZWxlbWVudCwgcG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0g
ImNvbWJpbmVkLXF1ZXVlLXBvcG92ZXIiOwotCi0gICAgICAgIHZhciB0aXRsZSA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB0aXRsZS5jbGFzc05hbWUgPSAicG9wb3Zl
ci1pdGVyYXRpb24taGVhZGluZyI7Ci0gICAgICAgIHRpdGxlLnRleHRDb250ZW50ID0gImxhdGVz
dCB0ZXN0ZWQgcmV2aXNpb25zIjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRsZSk7
Ci0KLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsKLQotICAgICAg
ICBmdW5jdGlvbiBhZGRRdWV1ZShxdWV1ZSwgdmlldykgewotICAgICAgICAgICAgdmFyIGxpbmUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHZhciBsaW5rID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGluay5jbGFzc05hbWUg
PSAicXVldWUtbGluayI7Ci0gICAgICAgICAgICBsaW5rLmhyZWYgPSBxdWV1ZS5vdmVydmlld1VS
TDsKLSAgICAgICAgICAgIGxpbmsudGV4dENvbnRlbnQgPSBxdWV1ZS5oZWFkaW5nOwotICAgICAg
ICAgICAgbGluay50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGxpbmUuYXBwZW5kQ2hp
bGQobGluayk7Ci0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJzcGFuIik7Ci0gICAgICAgICAgICByZXZpc2lvbi5jbGFzc05hbWUgPSAicmV2aXNpb24i
OwotICAgICAgICAgICAgcmV2aXNpb24uYXBwZW5kQ2hpbGQodmlldy5yZXZpc2lvbkNvbnRlbnRG
b3JJdGVyYXRpb24ocXVldWUubW9zdFJlY2VudFN1Y2Nlc3NmdWxJdGVyYXRpb24pKTsKLSAgICAg
ICAgICAgIGxpbmUuYXBwZW5kQ2hpbGQocmV2aXNpb24pOwotICAgICAgICAgICAgY29udGVudC5h
cHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBl
bmQgPSB0aGlzLnF1ZXVlcy5sZW5ndGg7IGkgPCBlbmQ7ICsraSkKLSAgICAgICAgICAgIGFkZFF1
ZXVlKHRoaXMucXVldWVzW2ldLCB0aGlzKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2Fy
ZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
KTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5w
cmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRn
ZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50SW5kaXZp
ZHVhbFF1ZXVlUG9wb3ZlcjogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0aW9uKQot
ICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICAgICAgY29udGVudC5jbGFzc05hbWUgPSAiYnVpbGQtbG9ncy1wb3BvdmVyIjsKLQot
ICAgICAgICBmdW5jdGlvbiBhZGRMb2cobmFtZSwgdXJsKSB7Ci0gICAgICAgICAgICB2YXIgbGlu
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgICAgIGxpbmUuY2xhc3NO
YW1lID0gImJ1aWxkLWxvZy1saW5rIjsKLSAgICAgICAgICAgIGxpbmUuaHJlZiA9IHVybDsKLSAg
ICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBuYW1lOwotICAgICAgICAgICAgbGluZS50YXJn
ZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobGluZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0
ZXJhdGlvbiwgY29udGVudCk7Ci0gICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29u
dGVudCk7Ci0gICAgICAgIAotICAgICAgICB2YXIgbG9nc0hlYWRpbmdMaW5lID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIGxvZ3NIZWFkaW5nTGluZS5jbGFzc05hbWUg
PSAiYnVpbGQtbG9ncy1oZWFkaW5nIjsKLSAgICAgICAgbG9nc0hlYWRpbmdMaW5lLnRleHRDb250
ZW50ID0gaXRlcmF0aW9uLmZpcnN0RmFpbGVkU3RlcE5hbWUgKyAiIGZhaWxlZCI7Ci0gICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQobG9nc0hlYWRpbmdMaW5lKTsKLQotICAgICAgICBmb3IgKHZh
ciBpID0gMCwgZW5kID0gaXRlcmF0aW9uLmZhaWx1cmVMb2dzLmxlbmd0aDsgaSA8IGVuZDsgKytp
KQotICAgICAgICAgICAgYWRkTG9nKGl0ZXJhdGlvbi5mYWlsdXJlTG9nc1tpXVswXSwgaXRlcmF0
aW9uLmZhaWx1cmVMb2dzW2ldWzFdKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2FyZC5S
ZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsK
LSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5wcmVz
ZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRnZS5N
QVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1hd
KTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3LmpzCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICsw
LDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzCShub25leGlz
dGVudCkKQEAgLTEsNTE4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQs
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJv
dEl0ZXJhdGlvbiA9IGZ1bmN0aW9uKHF1ZXVlLCBkYXRhT3JJRCwgZmluaXNoZWQpCi17Ci0gICAg
QmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQocXVldWUpOwotCi0g
ICAgdGhpcy5xdWV1ZSA9IHF1ZXVlOwotCi0gICAgaWYgKHR5cGVvZiBkYXRhT3JJRCA9PT0gIm9i
amVjdCIpIHsKLSAgICAgICAgdGhpcy5fcGFyc2VEYXRhKGRhdGFPcklEKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBkYXRhT3JJRCA9PT0gIm51
bWJlciIpOwotICAgIHRoaXMuaWQgPSBkYXRhT3JJRDsKLQotICAgIHRoaXMubG9hZGVkID0gZmFs
c2U7Ci0gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTsKLSAgICB0aGlzLl9wcm9kdWN0aXZlID0g
ZmFsc2U7Ci0KLSAgICB0aGlzLnJldmlzaW9uID0ge307Ci0KLSAgICB0aGlzLmxheW91dFRlc3RS
ZXN1bHRzID0gbnVsbDsgLy8gTGF5b3V0IHRlc3QgcmVzdWx0cyBjYW4gYmUgbmVlZGVkIGV2ZW4g
aWYgYWxsIHRlc3RzIHBhc3NlZCwgZS5nLiBmb3IgdGhlIGxlYWtzIGJvdC4KLSAgICB0aGlzLmph
dmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSBudWxsOwotCi0gICAgdGhpcy5mYWlsZWRUZXN0U3Rl
cHMgPSBbXTsKLQotICAgIHRoaXMuX2ZpbmlzaGVkID0gZmluaXNoZWQ7Ci19OwotCi1CYXNlT2Jq
ZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90SXRlcmF0aW9uKTsKLQotLy8gSlNP
TiByZXN1bHQgdmFsdWVzIGZvciBib3RoIGluZGl2aWR1YWwgc3RlcHMgYW5kIHRoZSB3aG9sZSBp
dGVyYXRpb24uCi1CdWlsZGJvdEl0ZXJhdGlvbi5TVUNDRVNTID0gMDsKLUJ1aWxkYm90SXRlcmF0
aW9uLldBUk5JTkdTID0gMTsKLUJ1aWxkYm90SXRlcmF0aW9uLkZBSUxVUkUgPSAyOwotQnVpbGRi
b3RJdGVyYXRpb24uU0tJUFBFRCA9IDM7Ci1CdWlsZGJvdEl0ZXJhdGlvbi5FWENFUFRJT04gPSA0
OwotQnVpbGRib3RJdGVyYXRpb24uUkVUUlkgPSA1OwotCi0vLyBJZiBub25lIG9mIHRoZXNlIHN0
ZXBzIHJhbiwgdGhlbiB3ZSBkaWRuJ3QgZ2V0IGFueSByZWFsIHJlc3VsdHMsIGFuZCB0aGUgaXRl
cmF0aW9uIHdhcyBub3QgcHJvZHVjdGl2ZS4KLS8vIEFsbCB0ZXN0IHN0ZXBzIGFyZSBjb25zaWRl
cmVkIHByb2R1Y3RpdmUgdG9vLgotQnVpbGRib3RJdGVyYXRpb24uUHJvZHVjdGl2ZVN0ZXBzID0g
ewotICAgICJCdWlsZCIgOiAxLAotICAgICJidWlsZCBBU2FuIGFyY2hpdmUiOiAxLAotICAgICJj
b21waWxlLXdlYmtpdCI6IDEsCi0gICAgInNjYW4gYnVpbGQiOiAxLAotfTsKLQotLy8gVGhlc2Ug
aGF2ZSBhIHNwZWNpYWwgbWVhbmluZyBmb3IgdGVzdCBxdWV1ZSB2aWV3cy4KLUJ1aWxkYm90SXRl
cmF0aW9uLlRlc3RTdGVwcyA9IHsKLSAgICAiQVBJLXRlc3RzIjogInBsYXRmb3JtIGFwaSB0ZXN0
IiwKLSAgICAiYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cyI6ICJiaW5kaW5ncyB0ZXN0cyIsCi0g
ICAgImJ1aWx0aW5zLWdlbmVyYXRvci10ZXN0cyI6ICJidWlsdGlucyBnZW5lcmF0b3IgdGVzdHMi
LAotICAgICJqc2NvcmUtdGVzdCI6ICJqYXZhc2NyaXB0IHRlc3QiLAotICAgICJsYXlvdXQtdGVz
dCI6ICJsYXlvdXQgdGVzdCIsCi0gICAgInBlcmYtdGVzdCI6ICJwZXJmb3JtYW5jZSB0ZXN0IiwK
LSAgICAicnVuLWFwaS10ZXN0cyI6ICJhcGkgdGVzdCIsCi0gICAgImRhc2hib2FyZC10ZXN0cyI6
ICJkYXNoYm9hcmQgdGVzdCIsCi0gICAgIndlYmtpdC0zMmJpdC1qc2MtdGVzdCI6ICJqYXZhc2Ny
aXB0IHRlc3QiLAotICAgICJ3ZWJraXQtanNjLWNsb29wLXRlc3QiOiAiamF2YXNjcmlwdCBjbG9v
cCB0ZXN0IiwKLSAgICAibGxkYi13ZWJraXQtdGVzdCI6ICJsbGRiIHdlYmtpdCB0ZXN0IiwgCi0g
ICAgIndlYmtpdHBlcmwtdGVzdCI6ICJ3ZWJraXRwZXJsIHRlc3QiLAotICAgICJ3ZWJraXRweS10
ZXN0IjogIndlYmtpdHB5IHRlc3QiLAotICAgICJ0ZXN0MjYyLXRlc3QiOiAidGVzdDI2MiB0ZXN0
IiwKLX07Ci0KLUJ1aWxkYm90SXRlcmF0aW9uLkV2ZW50ID0gewotICAgIFVwZGF0ZWQ6ICJ1cGRh
dGVkIiwKLSAgICBVbmF1dGhvcml6ZWRBY2Nlc3M6ICJ1bmF1dGhvcml6ZWQtYWNjZXNzIgotfTsK
LQotLy8gU2VlIDxodHRwOi8vZG9jcy5idWlsZGJvdC5uZXQvMC44LjgvbWFudWFsL2NmZy1wcm9w
ZXJ0aWVzLmh0bWw+LgotZnVuY3Rpb24gaXNNdWx0aUNvZGViYXNlR290UmV2aXNpb25Qcm9wZXJ0
eShwcm9wZXJ0eSkKLXsKLSAgICByZXR1cm4gdHlwZW9mIHByb3BlcnR5WzBdID09PSAib2JqZWN0
IjsKLX0KLQotZnVuY3Rpb24gcGFyc2VSZXZpc2lvblByb3BlcnR5KHByb3BlcnR5LCBrZXksIGZh
bGxiYWNrS2V5KQotewotICAgIGlmICghcHJvcGVydHkpCi0gICAgICAgIHJldHVybiBudWxsOwot
ICAgIHZhciB2YWx1ZSA9IHByb3BlcnR5WzBdOwotCi0gICAgLy8gVGhlIHByb3BlcnR5IGdvdF9y
ZXZpc2lvbiBtYXkgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1zIGluIEJ1aWxkYm90IHYwLjg6Ci0g
ICAgLy8gWyJnb3RfcmV2aXNpb24iLHsiSW50ZXJuYWwiOiIxMzU3IiwiV2ViS2l0T3BlblNvdXJj
ZSI6IjI0NjgifSwiU291cmNlIl0KLSAgICAvLyBPUgotICAgIC8vIFsiZ290X3JldmlzaW9uIiwi
MjQ2OCIsIlNvdXJjZSJdCi0gICAgLy8KLSAgICAvLyBJdCBtYXkgaGF2ZSB0aGUgZm9sbG93aW5n
IGZvcm1zIGluIEJ1aWxkYm90IHYwLjk6Ci0gICAgLy8gW3siSW50ZXJuYWwiOiIxMzU3IiwiV2Vi
S2l0T3BlblNvdXJjZSI6IjI0NjgifSwgIlNvdXJjZSJdCi0gICAgLy8gT1IKLSAgICAvLyBbIjI0
NjgiLCAiU291cmNlIl0KLSAgICBpZiAoaXNNdWx0aUNvZGViYXNlR290UmV2aXNpb25Qcm9wZXJ0
eShwcm9wZXJ0eSkpCi0gICAgICAgIHZhbHVlID0gKGtleSBpbiB2YWx1ZSkgPyB2YWx1ZVtrZXld
IDogdmFsdWVbZmFsbGJhY2tLZXldOwotICAgIHJldHVybiB2YWx1ZTsKLX0KLQotQnVpbGRib3RJ
dGVyYXRpb24ucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdEl0ZXJhdGlv
biwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IGZpbmlz
aGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9maW5pc2hlZDsKLSAgICB9LAotCi0g
ICAgc2V0IGZpbmlzaGVkKHgpCi0gICAgewotICAgICAgICB0aGlzLl9maW5pc2hlZCA9IHg7Ci0g
ICAgfSwKLQotICAgIGdldCBzdWNjZXNzZnVsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlz
Ll9yZXN1bHQgPT09IEJ1aWxkYm90SXRlcmF0aW9uLlNVQ0NFU1M7Ci0gICAgfSwKLQotICAgIGdl
dCBwcm9kdWN0aXZlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9kdWN0aXZlOwot
ICAgIH0sCi0KLSAgICAvLyBJdCBpcyBub3QgYSByZWFsIGZhaWx1cmUgaWYgQnVpbGRib3QgaXRz
ZWxmIGZhaWxlZCB3aXRoIGNvZGVzIGxpa2UgRVhDRVBUSU9OIG9yIFJFVFJZLgotICAgIGdldCBm
YWlsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3VsdCA9PT0gQnVpbGRib3RJ
dGVyYXRpb24uRkFJTFVSRTsKLSAgICB9LAotCi0gICAgZ2V0IGZpcnN0RmFpbGVkU3RlcE5hbWUo
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9maXJzdEZhaWxlZFN0ZXApCi0gICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5fZmlyc3RGYWlsZWRTdGVw
Lm5hbWU7Ci0gICAgfSwKLQotICAgIGZhaWx1cmVMb2dVUkw6IGZ1bmN0aW9uKGtpbmQpCi0gICAg
ewotICAgICAgICBpZiAoIXRoaXMuZmFpbGVkKQotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKLQotICAgICAgICBpZiAoIXRoaXMucXVldWUuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RIQU5f
MDkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxG
b3JJdGVyYXRpb24odGhpcyk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmlyc3RG
YWlsZWRTdGVwKTsKLQotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2ZpcnN0RmFp
bGVkU3RlcC5sb2dzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZmlyc3RG
YWlsZWRTdGVwLmxvZ3NbaV1bMF0gPT0ga2luZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhp
cy5fZmlyc3RGYWlsZWRTdGVwLmxvZ3NbaV1bMV07Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1
cm4gdW5kZWZpbmVkOwotICAgIH0sCi0KLSAgICBnZXQgZmFpbHVyZUxvZ3MoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLmZhaWxlZCkKLSAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7Ci0K
LSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZmlyc3RGYWlsZWRTdGVwKTsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2ZpcnN0RmFpbGVkU3RlcC5sb2dzOwotICAgIH0sCi0KLSAgICBnZXQgcHJl
dmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uKCkKLSAgICB7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdGhpcy5xdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAtIDE7ICsraSkgewotICAgICAgICAg
ICAgaWYgKHRoaXMucXVldWUuaXRlcmF0aW9uc1tpXSA9PT0gdGhpcykgewotICAgICAgICAgICAg
ICAgIHdoaWxlICgrK2kgPCB0aGlzLnF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLnF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24ucHJvZHVjdGl2ZSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBpdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVy
biBudWxsOwotICAgIH0sCi0KLSAgICBfcGFyc2VEYXRhOiBmdW5jdGlvbihkYXRhKQotICAgIHsK
LSAgICAgICAgZGF0YSA9IHRoaXMuX2FkanVzdEJ1aWxkRGF0YUZvckJ1aWxkYm90MDkoZGF0YSkK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuaWQgfHwgdGhpcy5pZCA9PT0gZGF0YS5udW1i
ZXIpOwotICAgICAgICB0aGlzLmlkID0gZGF0YS5udW1iZXI7Ci0KLSAgICAgICAgdGhpcy5yZXZp
c2lvbiA9IHt9OwotICAgICAgICB2YXIgcmV2aXNpb25Qcm9wZXJ0eSA9IGRhdGEucHJvcGVydGll
cy5nb3RfcmV2aXNpb247Ci0gICAgICAgIHZhciBicmFuY2hlcyA9IHRoaXMucXVldWUuYnJhbmNo
ZXM7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmFuY2hlcy5sZW5ndGg7ICsraSkg
ewotICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFuY2hlc1tpXS5yZXBvc2l0b3J5Owot
ICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gcmVwb3NpdG9yeS5uYW1lOwotICAgICAg
ICAgICAgdmFyIGtleTsKLSAgICAgICAgICAgIHZhciBmYWxsYmFja0tleTsKLQotICAgICAgICAg
ICAgaWYgKHJlcG9zaXRvcnkgPT09IERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UpIHsK
LSAgICAgICAgICAgICAgICBrZXkgPSAiV2ViS2l0IjsKLSAgICAgICAgICAgICAgICBmYWxsYmFj
a0tleSA9ICJvcGVuc291cmNlIjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAga2V5ID0gcmVwb3NpdG9yeU5hbWU7Ci0gICAgICAgICAgICAgICAgZmFsbGJhY2tLZXkgPSBu
dWxsOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2YXIgcmV2aXNpb24gPSBwYXJzZVJl
dmlzaW9uUHJvcGVydHkocmV2aXNpb25Qcm9wZXJ0eSwga2V5LCBmYWxsYmFja0tleSk7Ci0gICAg
ICAgICAgICB0aGlzLnJldmlzaW9uW3JlcG9zaXRvcnlOYW1lXSA9IHJldmlzaW9uOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gc291cmNlU3RhbXBDaGFuZ2VzKHNvdXJjZVN0YW1wKSB7
Ci0gICAgICAgICAgICB2YXIgcmVzdWx0ID0gW107Ci0gICAgICAgICAgICB2YXIgY2hhbmdlcyA9
IHNvdXJjZVN0YW1wLmNoYW5nZXM7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNo
YW5nZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgY2hhbmdlID0geyByZXZp
c2lvbk51bWJlcjogY2hhbmdlc1tpXS5yZXZpc2lvbiB9Ci0gICAgICAgICAgICAgICAgaWYgKGNo
YW5nZXNbaV0ucmVwb3NpdG9yeSkKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlLnJlcG9zaXRv
cnkgPSBjaGFuZ2VzW2ldLnJlcG9zaXRvcnk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoYW5nZXNb
aV0uYnJhbmNoKQotICAgICAgICAgICAgICAgICAgICBjaGFuZ2UuYnJhbmNoID0gY2hhbmdlc1tp
XS5icmFuY2g7Ci0gICAgICAgICAgICAgICAgLy8gVGhlcmUgaXMgYWxzbyBhIHRpbWVzdGFtcCwg
YnV0IGl0J3Mgbm90IGFjY3VyYXRlLgotICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYW5n
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9
Ci0KLSAgICAgICAgLy8gVGhlIGNoYW5nZXMgYXJyYXkgaXMgZ2VuZXJhbGx5IG1lYW5pbmdmdWwg
Zm9yIHN2biB0cmlnZ2VyZWQgcXVldWVzIChzdWNoIGFzIGJ1aWxkZXJzKSwKLSAgICAgICAgLy8g
YnV0IG5vdCBmb3IgaW50ZXJuYWxseSB0cmlnZ2VyZWQgb25lcyAoc3VjaCBhcyB0ZXN0ZXJzKSwg
ZHVlIHRvIGNvYWxlc2NpbmcuCi0gICAgICAgIHRoaXMuY2hhbmdlcyA9IFtdOwotICAgICAgICBp
ZiAodGhpcy5xdWV1ZS5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkKLSAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGRhdGEuc291cmNlU3RhbXAgfHwgZGF0YS5zb3VyY2VTdGFtcHMpCi0g
ICAgICAgIGlmIChkYXRhLnNvdXJjZVN0YW1wKQotICAgICAgICAgICAgdGhpcy5jaGFuZ2VzID0g
c291cmNlU3RhbXBDaGFuZ2VzKGRhdGEuc291cmNlU3RhbXApOwotICAgICAgICBlbHNlIGlmIChk
YXRhLnNvdXJjZVN0YW1wcykKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5z
b3VyY2VTdGFtcHMubGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VzID0g
dGhpcy5jaGFuZ2VzLmNvbmNhdChzb3VyY2VTdGFtcENoYW5nZXMoZGF0YS5zb3VyY2VTdGFtcHNb
aV0pKTsKLQotICAgICAgICB0aGlzLnN0YXJ0VGltZSA9IG5ldyBEYXRlKGRhdGEuc3RhcnRlZF9h
dCAqIDEwMDApOwotICAgICAgICB0aGlzLmVuZFRpbWUgPSBuZXcgRGF0ZShkYXRhLmNvbXBsZXRl
X2F0ICogMTAwMCk7Ci0KLSAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMgPSBbXTsKLSAgICAg
ICAgZGF0YS5zdGVwcy5mb3JFYWNoKGZ1bmN0aW9uKHN0ZXApIHsKLSAgICAgICAgICAgIGlmICgh
c3RlcC5jb21wbGV0ZSB8fCBzdGVwLmhpZGRlbiB8fCAhKHN0ZXAubmFtZSBpbiBCdWlsZGJvdEl0
ZXJhdGlvbi5UZXN0U3RlcHMpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IHZhciByZXN1bHRzID0gbmV3IEJ1aWxkYm90VGVzdFJlc3VsdHMoc3RlcCwgdGhpcy5fc3RkaW9V
UkxGb3JTdGVwKHN0ZXApKTsKLSAgICAgICAgICAgIGlmIChzdGVwLm5hbWUgPT09ICJsYXlvdXQt
dGVzdCIpCi0gICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRUZXN0UmVzdWx0cyA9IHJlc3VsdHM7
Ci0gICAgICAgICAgICBlbHNlIGlmICgvKD89Lip0ZXN0KSg/PS4qanNjKS8udGVzdChzdGVwLm5h
bWUpKQotICAgICAgICAgICAgICAgIHRoaXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyA9IHJl
c3VsdHM7Ci0gICAgICAgICAgICBpZiAocmVzdWx0cy5hbGxQYXNzZWQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICAgICAgdGhpcy5mYWlsZWRUZXN0U3RlcHMucHVzaChyZXN1bHRz
KTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAgdmFyIG1hc3RlclNoZWxsQ29tbWFuZFN0
ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdChmdW5jdGlvbihzdGVwKSB7IHJldHVybiBzdGVwLm5h
bWUgPT09ICJNYXN0ZXJTaGVsbENvbW1hbmQiOyB9KTsKLSAgICAgICAgaWYgKG1hc3RlclNoZWxs
Q29tbWFuZFN0ZXAgJiYgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzKSB7Ci0gICAgICAgICAg
ICAvLyBTYW1wbGUgbWFzdGVyU2hlbGxDb21tYW5kU3RlcC51cmxzIGRhdGE6Ci0gICAgICAgICAg
ICAvLyAidXJscyI6IFsKLSAgICAgICAgICAgIC8vICAgICB7Ci0gICAgICAgICAgICAvLyAgICAg
ICAgICJuYW1lIjogInZpZXcgcmVzdWx0cyIsCi0gICAgICAgICAgICAvLyAgICAgICAgICJ1cmwi
OiAiL3Jlc3VsdHMvQXBwbGUgU2llcnJhIFJlbGVhc2UgV0syIChUZXN0cykvcjIyMDAxMyAoMzI0
NSkvcmVzdWx0cy5odG1sIgotICAgICAgICAgICAgLy8gICAgIH0KLSAgICAgICAgICAgIC8vIF0K
LSAgICAgICAgICAgIHRoaXMucmVzdWx0VVJMcyA9IG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAudXJs
c1swXTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBsaW5rTmFtZSBpbiB0aGlzLnJlc3Vs
dFVSTHMpIHsKLSAgICAgICAgICAgIHZhciB1cmwgPSB0aGlzLnJlc3VsdFVSTHNbbGlua05hbWVd
OwotICAgICAgICAgICAgaWYgKCF1cmwuc3RhcnRzV2l0aCgiaHR0cCIpKQotICAgICAgICAgICAg
ICAgIHRoaXMucmVzdWx0VVJMc1tsaW5rTmFtZV0gPSB0aGlzLnF1ZXVlLmJ1aWxkYm90LmJhc2VV
UkwgKyB1cmw7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmxvYWRlZCA9IHRydWU7Ci0KLSAg
ICAgICAgdGhpcy5fZmlyc3RGYWlsZWRTdGVwID0gZGF0YS5zdGVwcy5maW5kRmlyc3QoZnVuY3Rp
b24oc3RlcCkgeyByZXR1cm4gIXN0ZXAuaGlkZGVuICYmIHN0ZXAucmVzdWx0cyA9PT0gQnVpbGRi
b3RJdGVyYXRpb24uRkFJTFVSRTsgfSk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5y
ZXN1bHRzID09PSBudWxsIHx8IHR5cGVvZiBkYXRhLnJlc3VsdHMgPT09ICJudW1iZXIiKTsKLSAg
ICAgICAgdGhpcy5fcmVzdWx0ID0gZGF0YS5yZXN1bHRzOwotCi0gICAgICAgIHRoaXMudGV4dCA9
IGRhdGEuc3RhdGVfc3RyaW5nOwotICAgICAgICB0aGlzLmZpbmlzaGVkID0gZGF0YS5jb21wbGV0
ZTsKLQotICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gdGhpcy5fZmluaXNoZWQgJiYgdGhpcy5f
cmVzdWx0ICE9PSBCdWlsZGJvdEl0ZXJhdGlvbi5FWENFUFRJT04gJiYgdGhpcy5fcmVzdWx0ICE9
PSBCdWlsZGJvdEl0ZXJhdGlvbi5SRVRSWTsKLSAgICAgICAgaWYgKHRoaXMuX3Byb2R1Y3RpdmUp
IHsKLSAgICAgICAgICAgIHZhciBmaW5pc2hlZEFueVByb2R1Y3RpdmVTdGVwID0gZmFsc2U7Ci0g
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IGRhdGEuc3RlcHNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKCFzdGVwLmNvbXBsZXRlKQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgICAgICBpZiAoc3RlcC5uYW1lIGluIEJ1aWxkYm90SXRlcmF0aW9uLlByb2R1Y3RpdmVT
dGVwcyB8fCBzdGVwLm5hbWUgaW4gQnVpbGRib3RJdGVyYXRpb24uVGVzdFN0ZXBzKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGZpbmlzaGVkQW55UHJvZHVjdGl2ZVN0ZXAgPSB0cnVlOwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0aGlzLl9wcm9kdWN0aXZlID0gZmluaXNoZWRBbnlQcm9kdWN0aXZlU3RlcDsK
LSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfc3RkaW9VUkxGb3JTdGVwOiBmdW5jdGlvbihzdGVw
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMucXVldWUuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RI
QU5fMDkpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAu
bG9nc1swXVsxXTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IFVw
ZGF0ZSB0aGlzIGxvZ2ljIGFmdGVyIDxodHRwczovL2dpdGh1Yi5jb20vYnVpbGRib3QvYnVpbGRi
b3QvaXNzdWVzLzM0NjU+IGlzIGZpeGVkLiBCdWlsZGJvdCAwLjkgZG9lcwotICAgICAgICAvLyBu
b3QgcHJvdmlkZSBhIFVSTCB0byBzdGRpbyBmb3IgYSBidWlsZCBzdGVwIGluIHRoZSBSRVNUIEFQ
SSwgc28gd2UgYXJlIG1hbnVhbGx5IGNvbnN0cnVjdGluZyB0aGUgdXJsIGhlcmUuCi0gICAgICAg
IHJldHVybiB0aGlzLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJhdGlvbih0aGlz
KSArICIvc3RlcHMvIiArIHN0ZXAubnVtYmVyICsgIi9sb2dzL3N0ZGlvIjsKLSAgICB9LAotCi0g
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBhZnRlciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MDU2IGlzIGZpeGVkLgotICAgIF9hZGp1c3RCdWlsZERh
dGFGb3JCdWlsZGJvdDA5OiBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlz
LnF1ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJu
IGRhdGE7Ci0KLSAgICAgICAgZGF0YS5zdGFydGVkX2F0ID0gZGF0YS50aW1lc1swXTsKLSAgICAg
ICAgZGF0YS5jb21wbGV0ZV9hdCA9IGRhdGEudGltZXNbMV07Ci0gICAgICAgIGRlbGV0ZSBkYXRh
WyJ0aW1lcyJdOwotCi0gICAgICAgIGxldCByZXZpc2lvblByb3BlcnR5ID0gZGF0YS5wcm9wZXJ0
aWVzLmZpbmRGaXJzdCgocHJvcGVydHkpID0+IHByb3BlcnR5WzBdID09PSAiZ290X3JldmlzaW9u
Iik7Ci0KLSAgICAgICAgaWYgKHJldmlzaW9uUHJvcGVydHkpIHsKLSAgICAgICAgICAgIC8vIFJl
bW92aW5nIGZpcnN0IGVsZW1lbnQgZnJvbSByZXZpc2lvbiBwcm9wZXJ0eSB0byBtYXRjaCB3aXRo
IG5ldyBkYXRhIGZvcm1hdC4KLSAgICAgICAgICAgIC8vIE9sZCBmb3JtYXQ6IFsiZ290X3Jldmlz
aW9uIix7IkludGVybmFsIjoiMTM1NyIsIldlYktpdE9wZW5Tb3VyY2UiOiIyNDY4In0sIlNvdXJj
ZSJdCi0gICAgICAgICAgICAvLyBOZXcgZm9ybWF0OiBbeyJJbnRlcm5hbCI6IjEzNTciLCJXZWJL
aXRPcGVuU291cmNlIjoiMjQ2OCJ9LCJTb3VyY2UiXQotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQocmV2aXNpb25Qcm9wZXJ0eVswXSA9PT0gImdvdF9yZXZpc2lvbiIpCi0gICAgICAgICAgICBy
ZXZpc2lvblByb3BlcnR5LnNwbGljZSgwLCAxKTsKLSAgICAgICAgfQotICAgICAgICBkYXRhLnBy
b3BlcnRpZXMuZ290X3JldmlzaW9uID0gcmV2aXNpb25Qcm9wZXJ0eTsKLQotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRhdGEuc3RlcHMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIGRh
dGEuc3RlcHNbaV0uY29tcGxldGUgPSBkYXRhLnN0ZXBzW2ldLmlzRmluaXNoZWQ7Ci0gICAgICAg
ICAgICBkZWxldGUgZGF0YS5zdGVwc1tpXVsiaXNGaW5pc2hlZCJdOwotICAgICAgICAgICAgLy8g
U2FtcGxlIHN0YXRlX3N0cmluZzogIkV4aXRpbmcgZWFybHkgYWZ0ZXIgMjAgY3Jhc2hlcyBhbmQg
MzAgdGltZW91dHMuIDMxNjAzIHRlc3RzIHJ1bi4gMTQ3IGZhaWx1cmVzIDY5IG5ldyBwYXNzZXMi
LgotICAgICAgICAgICAgZGF0YS5zdGVwc1tpXS5zdGF0ZV9zdHJpbmcgPSBkYXRhLnN0ZXBzW2ld
LnJlc3VsdHNbMV0uam9pbignICcpOwotICAgICAgICAgICAgZGF0YS5zdGVwc1tpXS5yZXN1bHRz
ID0gZGF0YS5zdGVwc1tpXS5yZXN1bHRzWzBdOyAvLyBTZWUgVVJMIGh0dHA6Ly9kb2NzLmJ1aWxk
Ym90Lm5ldC9sYXRlc3QvZGV2ZWxvcGVyL3Jlc3VsdHMuaHRtbAotICAgICAgICB9Ci0KLSAgICAg
ICAgbGV0IG1hc3RlclNoZWxsQ29tbWFuZFN0ZXAgPSBkYXRhLnN0ZXBzLmZpbmRGaXJzdCgoc3Rl
cCkgPT4gc3RlcC5uYW1lID09PSAiTWFzdGVyU2hlbGxDb21tYW5kIik7Ci0gICAgICAgIGlmICht
YXN0ZXJTaGVsbENvbW1hbmRTdGVwKQotICAgICAgICAgICAgbWFzdGVyU2hlbGxDb21tYW5kU3Rl
cC51cmxzID0gW21hc3RlclNoZWxsQ29tbWFuZFN0ZXAudXJsc107Ci0KLSAgICAgICAgZGF0YS5z
dGF0ZV9zdHJpbmcgPSBkYXRhLnRleHQuam9pbigiICIpOwotICAgICAgICBkZWxldGUgZGF0YVsi
dGV4dCJdOwotCi0gICAgICAgIGRhdGEuY29tcGxldGUgPSAhZGF0YS5jdXJyZW50U3RlcDsKLSAg
ICAgICAgZGVsZXRlIGRhdGFbImN1cnJlbnRTdGVwIl07Ci0KLSAgICAgICAgcmV0dXJuIGRhdGE7
Ci0gICAgfSwKLQotICAgIF91cGRhdGVJZkRhdGFBdmFpbGFibGU6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIGlmICghdGhpcy5fc3RlcHMgfHwgIXRoaXMuX2J1aWxkRGF0YSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlOwotICAgICAgICB0
aGlzLl9idWlsZERhdGEuc3RlcHMgPSB0aGlzLl9zdGVwczsKLQotICAgICAgICB0aGlzLl9kZXBy
ZWNhdGVkVXBkYXRlV2l0aERhdGEodGhpcy5fYnVpbGREYXRhKTsKLSAgICB9LAotCi0gICAgX2Rl
cHJlY2F0ZWRVcGRhdGVXaXRoRGF0YTogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLmxvYWRlZCAmJiB0aGlzLl9maW5pc2hlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB0aGlzLl9wYXJzZURhdGEoZGF0YSk7Ci0KLSAgICAgICAgLy8gVXBkYXRlIHRoZSBz
b3J0aW5nIHNpbmNlIGl0IGlzIGJhc2VkIG9uIHRoZSByZXZpc2lvbiBudW1iZXJzIHRoYXQganVz
dCBiZWNhbWUga25vd24uCi0gICAgICAgIHRoaXMucXVldWUudXBkYXRlSXRlcmF0aW9uUG9zaXRp
b24odGhpcyk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRi
b3RJdGVyYXRpb24uRXZlbnQuVXBkYXRlZCk7Ci0gICAgfSwKLQotCi0gICAgZ2V0IGJ1aWxkVVJM
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLnF1ZXVlLmJhc2VVUkwgKyAiL2J1aWxkcy8i
ICsgdGhpcy5pZCArICI/cHJvcGVydHk9Z290X3JldmlzaW9uIjsKLSAgICB9LAotCi0gICAgZ2V0
IGJ1aWxkU3RlcHNVUkwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMucXVldWUuYmFzZVVS
TCArICIvYnVpbGRzLyIgKyB0aGlzLmlkICsgIi9zdGVwcyI7Ci0gICAgfSwKLQotICAgIHVybEZh
aWxlZFRvTG9hZDogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIHRoaXMuaXNMb2FkaW5n
ID0gZmFsc2U7Ci0gICAgICAgIGlmIChkYXRhLmVycm9yVHlwZSA9PT0gSlNPTi5Mb2FkRXJyb3Ig
JiYgZGF0YS5lcnJvckhUVFBDb2RlID09PSA0MDEpIHsKLSAgICAgICAgICAgIHRoaXMucXVldWUu
YnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhCdWlsZGJvdEl0ZXJhdGlvbi5FdmVudC5VbmF1dGhvcml6ZWRB
Y2Nlc3MpOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgaWYgKHRoaXMubG9hZGVkICYmIHRoaXMuX2ZpbmlzaGVkKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVu
dGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0g
QnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGlmICh0aGlzLmlzTG9hZGluZykKLSAgICAgICAgICAg
IHJldHVybjsKLQotICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7Ci0gICAgICAgIGlmICh0
aGlzLnF1ZXVlLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgdGhp
cy5kZXByZWNhdGVkVXBkYXRlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMuYWN0
dWFsVXBkYXRlKCk7Ci0gICAgfSwKLQotICAgIGFjdHVhbFVwZGF0ZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgSlNPTi5sb2FkKHRoaXMuYnVpbGRTdGVwc1VSTCwgZnVuY3Rpb24oZGF0YSkg
ewotICAgICAgICAgICAgaWYgKCEoZGF0YS5zdGVwcyBpbnN0YW5jZW9mIEFycmF5KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuX3N0ZXBzID0gZGF0YS5zdGVw
czsKLSAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUlmRGF0YUF2YWlsYWJsZSgpOwotICAgICAgICB9
LmJpbmQodGhpcyksIHRoaXMudXJsRmFpbGVkVG9Mb2FkLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlz
LnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLQotICAgICAgICBKU09OLmxv
YWQodGhpcy5idWlsZFVSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhpcy5xdWV1
ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaWYgKCEoZGF0
YS5idWlsZHMgaW5zdGFuY2VvZiBBcnJheSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICAvLyBTYW1wbGUgZGF0YSBmb3IgYSBzaW5nbGUgYnVpbGQ6Ci0gICAgICAgICAg
ICAvLyAiYnVpbGRzIjogWwotICAgICAgICAgICAgLy8gICAgIHsKLSAgICAgICAgICAgIC8vICAg
ICAgICAgImJ1aWxkZXJpZCI6IDI4MiwKLSAgICAgICAgICAgIC8vICAgICAgICAgImJ1aWxkaWQi
OiA1NjA5LAotICAgICAgICAgICAgLy8gICAgICAgICAiY29tcGxldGUiOiB0cnVlLAotICAgICAg
ICAgICAgLy8gICAgICAgICAuLi4KLSAgICAgICAgICAgIC8vICAgICAgICAgIndvcmtlcmlkIjog
MTg4Ci0gICAgICAgICAgICAvLyAgICAgfQotICAgICAgICAgICAgLy8gXQotICAgICAgICAgICAg
dGhpcy5fYnVpbGREYXRhID0gZGF0YS5idWlsZHNbMF07Ci0gICAgICAgICAgICB0aGlzLl91cGRh
dGVJZkRhdGFBdmFpbGFibGUoKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLnVybEZhaWxl
ZFRvTG9hZCwge3dpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhl
bnRpY2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGRlcHJlY2F0ZWRVcGRhdGU6IGZ1bmN0aW9uKCkK
LSAgICB7Ci0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJhc2VVUkwgKyAiL2J1aWxkcy8i
ICsgdGhpcy5pZCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdGhpcy5pc0xvYWRpbmcg
PSBmYWxzZTsKLSAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVk
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmICghZGF0YSB8fCAhZGF0YS5wcm9wZXJ0aWVzKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgdGhpcy5fZGVwcmVjYXRlZFVwZGF0
ZVdpdGhEYXRhKGRhdGEpOwotICAgICAgICB9LmJpbmQodGhpcyksIHRoaXMudXJsRmFpbGVkVG9M
b2FkLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGlj
YXRpb259KTsKLSAgICB9LAotCi0gICAgbG9hZExheW91dFRlc3RSZXN1bHRzOiBmdW5jdGlvbihj
YWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLnF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0
aGVudGljYXRpb24gJiYgdGhpcy5xdWV1ZS5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9
PT0gQnVpbGRib3QuQXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIEpTT04ubG9hZCh0aGlzLnF1ZXVlLmJ1aWxkYm90
LmxheW91dFRlc3RGdWxsUmVzdWx0c1VSTEZvckl0ZXJhdGlvbih0aGlzKSwgZnVuY3Rpb24oZGF0
YSkgewotICAgICAgICAgICAgdGhpcy5xdWV1ZS5idWlsZGJvdC5pc0F1dGhlbnRpY2F0ZWQgPSB0
cnVlOwotCi0gICAgICAgICAgICB0aGlzLmxheW91dFRlc3RSZXN1bHRzLmFkZEZ1bGxMYXlvdXRU
ZXN0UmVzdWx0cyhkYXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0uYmlu
ZCh0aGlzKSwKLSAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEu
ZXJyb3JUeXBlID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09IDQw
MSkgewotICAgICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVk
ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
QnVpbGRib3RJdGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAgICAgICAgICAgY2Fs
bGJhY2soKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB7anNvbnBDYWxsYmFja05hbWU6ICJBRERf
UkVTVUxUUyIsIHdpdGhDcmVkZW50aWFsczogdGhpcy5xdWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhl
bnRpY2F0aW9ufSk7Ci0gICAgfSwKLQotICAgIGxvYWRKYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRz
OiBmdW5jdGlvbih0ZXN0TmFtZSwgY2FsbGJhY2spCi0gICAgewotICAgICAgICBpZiAodGhpcy5x
dWV1ZS5idWlsZGJvdC5uZWVkc0F1dGhlbnRpY2F0aW9uICYmIHRoaXMucXVldWUuYnVpbGRib3Qu
YXV0aGVudGljYXRpb25TdGF0dXMgPT09IEJ1aWxkYm90LkF1dGhlbnRpY2F0aW9uU3RhdHVzLklu
dmFsaWRDcmVkZW50aWFscykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBKU09OLmxv
YWQodGhpcy5xdWV1ZS5idWlsZGJvdC5qYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0
ZXJhdGlvbih0aGlzLCB0ZXN0TmFtZSksIGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIHRo
aXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRo
aXMuamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cy5hZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJl
cyhkYXRhKTsKLSAgICAgICAgICAgIGNhbGxiYWNrKCk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSwK
LSAgICAgICAgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuZXJyb3JUeXBl
ID09PSBKU09OLkxvYWRFcnJvciAmJiBkYXRhLmVycm9ySFRUUENvZGUgPT09IDQwMSkgewotICAg
ICAgICAgICAgICAgIHRoaXMucXVldWUuYnVpbGRib3QuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7
Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQnVpbGRib3RJ
dGVyYXRpb24uRXZlbnQuVW5hdXRob3JpemVkQWNjZXNzKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIGNvbnNvbGUubG9nKGRhdGEuZXJyb3IpOwotICAgICAgICAgICAgY2FsbGJhY2soKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpLCB7d2l0aENyZWRlbnRpYWxzOiB0aGlzLnF1ZXVlLmJ1aWxk
Ym90Lm5lZWRzQXV0aGVudGljYXRpb259KTsKLSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL0J1aWxkYm90TGVha3NRdWV1ZVZpZXcuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RMZWFrc1F1ZXVlVmlldy5qcwkocmV2aXNpb24gMjY5MDQy
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RMZWFrc1F1ZXVlVmlldy5qcwkobm9u
ZXhpc3RlbnQpCkBAIC0xLDEzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RMZWFrc1F1
ZXVlVmlldyA9IGZ1bmN0aW9uKHF1ZXVlcykKLXsKLSAgICBCdWlsZGJvdFF1ZXVlVmlldy5jYWxs
KHRoaXMsIHF1ZXVlcyk7Ci0gICAgdGhpcy51cGRhdGUoKTsKLX07Ci0KLUJhc2VPYmplY3QuYWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RMZWFrc1F1ZXVlVmlldyk7Ci0KLUJ1aWxkYm90
TGVha3NRdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBCdWlsZGJvdExl
YWtzUXVldWVWaWV3LAotICAgIF9fcHJvdG9fXzogQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBl
LAotCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBRdWV1ZVZpZXcucHJv
dG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVD
aGlsZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFwcGVuZExlYWtzUXVldWVTdGF0dXMocXVl
dWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBhcHBlbmRlZFN0YXR1cyA9IGZhbHNlOwot
Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9u
c1tpXTsKLSAgICAgICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlv
bi5maW5pc2hlZCkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAg
ICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0ZXJhdGlv
bihpdGVyYXRpb24sIG51bGwpOwotCi0gICAgICAgICAgICAgICAgdmFyIGJ1aWxkUGFnZVVSTCA9
IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0
aW9uKTsKLQotICAgICAgICAgICAgICAgIGlmIChpdGVyYXRpb24uc3VjY2Vzc2Z1bCkKLSAgICAg
ICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxl
bWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsICJubyBsZWFrcyIsIG51bGwsIGJ1aWxk
UGFnZVVSTCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIWl0ZXJhdGlvbi5wcm9kdWN0aXZl
KQotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1l
c3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4
dCwgbnVsbCwgYnVpbGRQYWdlVVJMKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVyYXRp
b24uZmFpbGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVl
dWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAg
ICAgICAgICAgICAgIHZhciBsZWFrQ291bnQgPSBpdGVyYXRpb24ubGF5b3V0VGVzdFJlc3VsdHMu
dW5pcXVlTGVha0NvdW50OwotICAgICAgICAgICAgICAgICAgICBpZiAobGVha0NvdW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGVha3NWaWV3ZXJVUkwgPSBpdGVyYXRpb24ucmVz
dWx0VVJMc1sidmlldyBsZWFrcyJdOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1
cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLk5ldXRyYWwsIGxlYWtDb3VudCA9PT0gMSA/ICJ1bmlxdWUgbGVhayIgOiAidW5pcXVlIGxl
YWtzIiwgbGVha0NvdW50LCBsZWFrc1ZpZXdlclVSTCk7Ci0gICAgICAgICAgICAgICAgICAgIH0g
ZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5l
VmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0
aW9uLnRleHQsIG51bGwsIGJ1aWxkUGFnZVVSTCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5i
dWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGlu
ZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIG51bGwsIGJ1aWxkUGFnZVVSTCk7
Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVu
ZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0g
bmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRy
YWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQu
YXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3By
ZXNlbnRQb3BvdmVyRm9yTGVha3NRdWV1ZS5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5xdWV1
ZXMsICJMZWFrcyIsIGFwcGVuZExlYWtzUXVldWVTdGF0dXMpOwotICAgIH0sCi0KLSAgICBhZGRM
aW5rVG9Sb3c6IGZ1bmN0aW9uKHJvd0VsZW1lbnQsIGNsYXNzTmFtZSwgdGV4dCwgdXJsKQotICAg
IHsKLSAgICAgICAgdmFyIGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIp
OwotICAgICAgICBsaW5rRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7Ci0gICAgICAgIGxp
bmtFbGVtZW50LnRleHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9
IHVybDsKLSAgICAgICAgbGlua0VsZW1lbnQudGFyZ2V0ID0gIl9ibGFuayI7Ci0gICAgICAgIHJv
d0VsZW1lbnQuYXBwZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotICAgIH0sCi0KLSAgICBfcG9wb3Zl
ckNvbnRlbnRGb3JMZWFrc1F1ZXVlOiBmdW5jdGlvbihpdGVyYXRpb24pCi0gICAgewotICAgICAg
ICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotCi0gICAgICAg
IGNvbnRlbnQuY2xhc3NOYW1lID0gImxlYWtzLXBvcG92ZXIiOwotCi0gICAgICAgIHRoaXMuX2Fk
ZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92ZXIoaXRlcmF0aW9uLCBjb250ZW50LCAiIik7Ci0gICAg
ICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAgdmFyIHJv
dyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICByb3cudGV4dENvbnRl
bnQgPSBpdGVyYXRpb24udGV4dDsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChyb3cpOwot
Ci0gICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7Ci0KLSAgICAgICAg
Zm9yICh2YXIgbGlua05hbWUgaW4gaXRlcmF0aW9uLnJlc3VsdFVSTHMpIHsKLSAgICAgICAgICAg
IHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHRo
aXMuYWRkTGlua1RvUm93KHJvdywgInJlc3VsdC1saW5rIiwgbGlua05hbWUsIGl0ZXJhdGlvbi5y
ZXN1bHRVUkxzW2xpbmtOYW1lXSk7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJv
dyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAg
X3ByZXNlbnRQb3BvdmVyRm9yTGVha3NRdWV1ZTogZnVuY3Rpb24oZWxlbWVudCwgcG9wb3Zlciwg
aXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29u
dGVudEZvckxlYWtzUXVldWUoaXRlcmF0aW9uKTsKLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hi
b2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVj
dCgpKTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zl
ci5wcmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0
RWRnZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2Uu
TUlOX1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi19OwpJbmRleDogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVlVmlldy5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3Lmpz
CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFBlcmZv
cm1hbmNlUXVldWVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsMTIwICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi1CdWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3ID0gZnVuY3Rpb24ocXVl
dWVzKQotewotICAgIEJ1aWxkYm90UXVldWVWaWV3LmNhbGwodGhpcywgcXVldWVzKTsKLSAgICB0
aGlzLnVwZGF0ZSgpOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhC
dWlsZGJvdFBlcmZvcm1hbmNlUXVldWVWaWV3KTsKLQotQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVl
Vmlldy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IEJ1aWxkYm90UGVyZm9ybWFuY2VR
dWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1ZXVlVmlldy5wcm90b3R5cGUsCi0K
LSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIFF1ZXVlVmlldy5wcm90b3R5
cGUudXBkYXRlLmNhbGwodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxk
cmVuKCk7Ci0KLSAgICAgICAgZnVuY3Rpb24gYXBwZW5kUGVyZm9ybWFuY2VRdWV1ZVN0YXR1cyhx
dWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7
Ci0KLSAgICAgICAgICAgIHZhciBsaW1pdCA9IDI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7Ci0gICAg
ICAgICAgICAgICAgdmFyIGl0ZXJhdGlvbiA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAg
ICAgICAgICAgaWYgKCFpdGVyYXRpb24ubG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCi0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgLS1saW1pdDsK
LQotICAgICAgICAgICAgICAgIHZhciB3aWxsSGF2ZUFub3RoZXJTdGF0dXNMaW5lID0gaSArIDEg
PCBxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCAmJiBsaW1pdCA+IDAgJiYgIWl0ZXJhdGlvbi5zdWNj
ZXNzZnVsOyAvLyBUaGlzIGlzIG5vdCAxMDAlIGNvcnJlY3QsIGFzIHRoZSByZW1haW5pbmcgaXRl
cmF0aW9ucyBtYXkgbm90IGJlIGZpbmlzaGVkIG9yIGxvYWRlZCB5ZXQsIGJ1dCBjbG9zZSBlbm91
Z2guCi0gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VFbGVtZW50ID0gdGhpcy5yZXZpc2lvbkNv
bnRlbnRGb3JJdGVyYXRpb24oaXRlcmF0aW9uLCAoaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgd2ls
bEhhdmVBbm90aGVyU3RhdHVzTGluZSkgPyBpdGVyYXRpb24ucHJldmlvdXNQcm9kdWN0aXZlSXRl
cmF0aW9uIDogbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3Nm
dWwpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmll
dyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2QsICJhbGwgdGVzdHMg
cGFzc2VkIik7Ci0gICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gMDsKLSAgICAgICAgICAgICAg
ICB9IGVsc2UgaWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFnZVVSTEZvckl0ZXJh
dGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0
YXR1c0xpbmVWaWV3KG1lc3NhZ2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2Vy
LCBpdGVyYXRpb24udGV4dCwgbnVsbCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KGl0ZXJhdGlvbi5mYWlsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJh
dGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsK
LSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNz
YWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgaXRlcmF0aW9uLnRleHQsIG51
bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRp
b24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0
dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwg
aXRlcmF0aW9uLnRleHQsIG51bGwsIHVybCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAg
ICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVz
ID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5l
dXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1l
bnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAg
ICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMu
X3ByZXNlbnRQb3BvdmVyRm9yUGVyZm9ybWFuY2VRdWV1ZS5iaW5kKHRoaXMpLCBxdWV1ZSk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB0aGlzLmFwcGVuZEJ1aWxkU3R5bGUuY2FsbCh0aGlzLCB0aGlz
LnF1ZXVlcywgJ1JlbGVhc2UnLCBhcHBlbmRQZXJmb3JtYW5jZVF1ZXVlU3RhdHVzKTsKLSAgICB9
LAotCi0gICAgYWRkTGlua1RvUm93OiBmdW5jdGlvbihyb3dFbGVtZW50LCBjbGFzc05hbWUsIHRl
eHQsIHVybCkKLSAgICB7Ci0gICAgICAgIHZhciBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgbGlua0VsZW1lbnQuY2xhc3NOYW1lID0gY2xhc3NOYW1l
OwotICAgICAgICBsaW5rRWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgIGxpbmtF
bGVtZW50LmhyZWYgPSB1cmw7Ci0gICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsi
OwotICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKGxpbmtFbGVtZW50KTsKLSAgICB9LAot
Ci0gICAgX3BvcG92ZXJDb250ZW50Rm9yUGVyZm9ybWFuY2VRdWV1ZTogZnVuY3Rpb24ocXVldWUp
Ci0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJwZXJmb3JtYW5jZS1wb3BvdmVyIjsK
LQotICAgICAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
ICAgIHRoaXMuYWRkTGlua1RvUm93KHJvdywgImRhc2hib2FyZC1saW5rIiwgIlBlcmZvcm1hbmNl
IERhc2hib2FyZCIsIHF1ZXVlLmJ1aWxkYm90LnBlcmZvcm1hbmNlRGFzaGJvYXJkVVJMKTsKLQot
ICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvdyk7Ci0KLSAgICAgICAgcmV0dXJuIGNvbnRl
bnQ7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3ZlckZvclBlcmZvcm1hbmNlUXVldWU6IGZ1
bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIHF1ZXVlKQotICAgIHsKLSAgICAgICAgdmFyIGNvbnRl
bnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEZvclBlcmZvcm1hbmNlUXVldWUocXVldWUpOwotCi0g
ICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVsZW1l
bnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQgPSBj
b250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0RWRn
ZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFY
X1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzCShub25l
eGlzdGVudCkKQEAgLTEsMzc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFF1ZXVlID0g
ZnVuY3Rpb24oYnVpbGRib3QsIGlkLCBpbmZvKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlz
KTsKLQotICAgIGNvbnNvbGUuYXNzZXJ0KGJ1aWxkYm90KTsKLSAgICBjb25zb2xlLmFzc2VydChp
ZCk7Ci0KLSAgICB0aGlzLmJ1aWxkYm90ID0gYnVpbGRib3Q7Ci0gICAgdGhpcy5pZCA9IGlkOwot
Ci0gICAgLy8gRklYTUU6IFNvbWUgb2YgdGhlc2UgYXJlIHByZXNlbnRhdGlvbiBvbmx5LCBhbmQg
c2hvdWxkIGJlIGhhbmRsZWQgYWJvdmUgQnVpbGRib3RRdWV1ZSBsZXZlbC4KLSAgICB0aGlzLmJy
YW5jaGVzID0gaW5mby5icmFuY2hlczsKLSAgICB0aGlzLnBsYXRmb3JtID0gaW5mby5wbGF0Zm9y
bS5uYW1lOwotICAgIHRoaXMuZGVidWcgPSBpbmZvLmRlYnVnOwotICAgIHRoaXMuYnVpbGRlciA9
IGluZm8uYnVpbGRlcjsKLSAgICB0aGlzLnRlc3RlciA9IGluZm8udGVzdGVyOwotICAgIHRoaXMu
cGVyZm9ybWFuY2UgPSBpbmZvLnBlcmZvcm1hbmNlOwotICAgIHRoaXMuc3RhdGljQW5hbHl6ZXIg
PSBpbmZvLnN0YXRpY0FuYWx5emVyOwotICAgIHRoaXMubGVha3MgPSBpbmZvLmxlYWtzOwotICAg
IHRoaXMuYXJjaGl0ZWN0dXJlID0gaW5mby5hcmNoaXRlY3R1cmU7Ci0gICAgdGhpcy50ZXN0Q2F0
ZWdvcnkgPSBpbmZvLnRlc3RDYXRlZ29yeTsKLSAgICB0aGlzLmhlYWRpbmcgPSBpbmZvLmhlYWRp
bmc7Ci0gICAgdGhpcy5jcmFzaGVzT25seSA9IGluZm8uY3Jhc2hlc09ubHk7Ci0KLSAgICB0aGlz
Lml0ZXJhdGlvbnMgPSBbXTsKLSAgICB0aGlzLl9rbm93bkl0ZXJhdGlvbnMgPSB7fTsKLQotICAg
IC8vIFNvbWUgcXVldWVzIHByb2Nlc3MgY2hhbmdlcyBvdXQgb2Ygb3JkZXIsIGJ1dCB3ZSBuZWVk
IHRvIGRpc3BsYXkgcmVzdWx0cyBmb3IgdGhlIGxhdGVzdCBjb21taXQsCi0gICAgLy8gbm90IHRo
ZSBsYXRlc3QgYnVpbGQuIEJ1aWxkYm90UXVldWUgZW5zdXJlcyB0aGF0IGF0IGxlYXN0IG9uZSBw
cm9kdWN0aXZlIGl0ZXJhdGlvbgotICAgIC8vIHRoYXQgd2FzIHJ1biBpbiBvcmRlciBnZXRzIGxv
YWRlZCAoaWYgdGhlIHF1ZXVlIGhhZCBhbnkgcHJvZHVjdGl2ZSBpdGVyYXRpb25zLCBvZiBjb3Vy
c2UpLgotICAgIHRoaXMuX2hhc0xvYWRlZEl0ZXJhdGlvbkZvckluT3JkZXJSZXN1bHQgPSBmYWxz
ZTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoQnVpbGRib3RRdWV1
ZSk7Ci0KLUJ1aWxkYm90UXVldWUuUmVjZW50SXRlcmF0aW9uc1RvTG9hZCA9IDEwOwotCi1CdWls
ZGJvdFF1ZXVlLkV2ZW50ID0gewotICAgIEl0ZXJhdGlvbnNBZGRlZDogIml0ZXJhdGlvbnMtYWRk
ZWQiLAotICAgIFVuYXV0aG9yaXplZEFjY2VzczogInVuYXV0aG9yaXplZC1hY2Nlc3MiCi19Owot
Ci1CdWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RR
dWV1ZSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgZ2V0IGJh
c2VVUkwoKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuYnVpbGRib3QuVkVSU0lPTl9MRVNTX1RI
QU5fMDkpCi0gICAgICAgICAgICByZXR1cm4gdGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImpzb24v
YnVpbGRlcnMvIiArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmlkKTsKLQotICAgICAgICByZXR1
cm4gdGhpcy5idWlsZGJvdC5iYXNlVVJMICsgImFwaS92Mi9idWlsZGVycy8iICsgZW5jb2RlVVJJ
Q29tcG9uZW50KHRoaXMuaWQpOwotICAgIH0sCi0KLSAgICBnZXQgYWxsSXRlcmF0aW9uc1VSTCgp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8wOSkK
LSAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcy9fYWxsLz9tYXg9MTAw
MDAiOwotCi0gICAgICAgIHJldHVybiB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVt
YmVyIjsKLSAgICB9LAotCi0gICAgZ2V0IGJ1aWxkc1VSTCgpCi0gICAgewotICAgICAgICAvLyBX
ZSBuZWVkIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgYnVpbGRzIGZvciB3aGljaCB3ZSBmZXRjaCB0
aGUgaW5mbywgYXMgaXQgd291bGQKLSAgICAgICAgLy8gaW1wYWN0IHBlcmZvcm1hbmNlLiBGb3Ig
ZWFjaCBidWlsZCwgd2Ugd2lsbCBiZSBzdWJzZXF1ZW50bHkgbWFraW5nIFJFU1QgQVBJIGNhbGxz
Ci0gICAgICAgIC8vIHRvIGZldGNoIGRldGFpbGVkIGJ1aWxkIGluZm8uCi0gICAgICAgIHJldHVy
biB0aGlzLmJhc2VVUkwgKyAiL2J1aWxkcz9vcmRlcj0tbnVtYmVyJmxpbWl0PTIwIjsKLSAgICB9
LAotCi0gICAgZ2V0IG92ZXJ2aWV3VVJMKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxk
Ym90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGRi
b3QuYmFzZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsg
Ij9udW1idWlsZHM9NTAiOwotCi0gICAgICAgIHJldHVybiB0aGlzLmJ1aWxkYm90LmJhc2VVUkwg
KyAiIy9idWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuaWQpICsgIj9udW1idWls
ZHM9NTAiOwotICAgIH0sCi0KLSAgICBnZXQgcmVjZW50RmFpbGVkSXRlcmF0aW9uQ291bnQoKQot
ICAgIHsKLSAgICAgICAgdmFyIGZpcnN0RmluaXNoZWRJdGVyYXRpb24gPSB0aGlzLm1vc3RSZWNl
bnRGaW5pc2hlZEl0ZXJhdGlvbjsKLSAgICAgICAgdmFyIG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRl
cmF0aW9uID0gdGhpcy5tb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbjsKLSAgICAgICAgcmV0
dXJuIHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKG1vc3RSZWNlbnRTdWNjZXNzZnVsSXRlcmF0aW9u
KSAtIHRoaXMuaXRlcmF0aW9ucy5pbmRleE9mKGZpcnN0RmluaXNoZWRJdGVyYXRpb24pOwotICAg
IH0sCi0KLSAgICBnZXQgZmlyc3RSZWNlbnRVbnN1Y2Nlc3NmdWxJdGVyYXRpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJu
IG51bGw7Ci0KLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLml0ZXJhdGlvbnMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5pdGVyYXRpb25zW2ldLmZpbmlzaGVk
IHx8ICF0aGlzLml0ZXJhdGlvbnNbaV0uc3VjY2Vzc2Z1bCkKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmICh0aGlzLml0ZXJhdGlvbnNbaSAtIDFdICYmIHRoaXMuaXRl
cmF0aW9uc1tpIC0gMV0uZmluaXNoZWQgJiYgIXRoaXMuaXRlcmF0aW9uc1tpIC0gMV0uc3VjY2Vz
c2Z1bCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW2kgLSAxXTsKLSAg
ICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0aGlzLml0
ZXJhdGlvbnNbdGhpcy5pdGVyYXRpb25zLmxlbmd0aCAtIDFdLnN1Y2Nlc3NmdWwpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5pdGVyYXRpb25zW3RoaXMuaXRlcmF0aW9ucy5sZW5ndGggLSAxXTsK
LQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9LAotCi0gICAgZ2V0IG1vc3RSZWNlbnRGaW5p
c2hlZEl0ZXJhdGlvbigpCi0gICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
aXRlcmF0aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlv
bnNbaV0uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBy
ZXR1cm4gdGhpcy5pdGVyYXRpb25zW2ldOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51
bGw7Ci0gICAgfSwKLQotICAgIGdldCBtb3N0UmVjZW50U3VjY2Vzc2Z1bEl0ZXJhdGlvbigpCi0g
ICAgewotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0aW9ucy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgaWYgKCF0aGlzLml0ZXJhdGlvbnNbaV0uZmluaXNoZWQgfHwg
IXRoaXMuaXRlcmF0aW9uc1tpXS5zdWNjZXNzZnVsKQotICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0KLSAgICBfbG9hZDogZnVuY3Rpb24odXJsLCBj
YWxsYmFjaykKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGlj
YXRpb24gJiYgdGhpcy5idWlsZGJvdC5hdXRoZW50aWNhdGlvblN0YXR1cyA9PT0gQnVpbGRib3Qu
QXV0aGVudGljYXRpb25TdGF0dXMuSW52YWxpZENyZWRlbnRpYWxzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIEpTT04ubG9hZCgKLSAgICAgICAgICAgIHVybCwKLSAgICAgICAgICAg
IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVu
dGljYXRlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2soZGF0YSk7Ci0gICAgICAg
ICAgICB9LmJpbmQodGhpcyksCi0gICAgICAgICAgICBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGRhdGEuZXJyb3JUeXBlICE9PSBKU09OLkxvYWRFcnJvciB8fCBkYXRhLmVy
cm9ySFRUUENvZGUgIT09IDQwMSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCkgewotICAgICAgICAg
ICAgICAgICAgICAvLyBGSVhNRSAoMTI4MDA2KTogU2FmYXJpL1dlYktpdCBzaG91bGQgY29hbGVz
Y2UgYXV0aGVudGljYXRpb24gcmVxdWVzdHMgd2l0aCB0aGUgc2FtZSBvcmlnaW4gYW5kIGF1dGhl
bnRpY2F0aW9uIHJlYWxtLgotICAgICAgICAgICAgICAgICAgICAvLyBJbiBhYnNlbmNlIG9mIHRo
ZSBmaXgsIFNhZmFyaSBwcmVzZW50cyBhZGRpdGlvbmFsIGF1dGhlbnRpY2F0aW9uIGRpYWxvZ3Mg
cmVnYXJkbGVzcyBvZiB3aGV0aGVyIGFuIGVhcmxpZXIgYXV0aGVudGljYXRpb24KLSAgICAgICAg
ICAgICAgICAgICAgLy8gZGlhbG9nIHdhcyBkaXNtaXNzZWQuIEFzIGEgd2F5IHRvIGFtZWxpb3Jh
dGUgdGhlIHVzZXIgZXhwZXJpZW5jZSB3aGVyZSBhIHBlcnNvbiBhdXRoZW50aWNhdGVkIHN1Y2Nl
c3NmdWxseSB1c2luZyBhbgotICAgICAgICAgICAgICAgICAgICAvLyBlYXJsaWVyIGF1dGhlbnRp
Y2F0aW9uIGRpYWxvZyBhbmQgY2FuY2VsbGVkIHRoZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgYXNz
b2NpYXRlZCB3aXRoIHRoZSBsb2FkIGZvciB0aGlzIHF1ZXVlLCB3ZSBjYWxsCi0gICAgICAgICAg
ICAgICAgICAgIC8vIG91cnNlbGYgc28gdGhhdCB3ZSBjYW4gc2NoZWR1bGUgYW5vdGhlciBsb2Fk
LCB3aGljaCBzaG91bGQgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IG5vdyB0aGF0IHdlIGhhdmUgY3Jl
ZGVudGlhbHMuCi0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2xvYWQodXJsLCBjYWxsYmFjayk7
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgICAgICB0aGlzLmJ1aWxkYm90LmlzQXV0aGVudGljYXRlZCA9IGZhbHNlOwotICAgICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKEJ1aWxkYm90UXVldWUuRXZl
bnQuVW5hdXRob3JpemVkQWNjZXNzLCB7IH0pOwotICAgICAgICAgICAgfS5iaW5kKHRoaXMpLAot
ICAgICAgICAgICAge3dpdGhDcmVkZW50aWFsczogdGhpcy5idWlsZGJvdC5uZWVkc0F1dGhlbnRp
Y2F0aW9ufQotICAgICAgICApOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxJdGVy
YXRpb25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIgaW5kZXhPZkZpcnN0TmV3bHlM
b2FkaW5nSXRlcmF0aW9uOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuaXRlcmF0
aW9ucy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKGluZGV4T2ZGaXJzdE5ld2x5TG9h
ZGluZ0l0ZXJhdGlvbiAhPT0gdW5kZWZpbmVkICYmIGkgPj0gaW5kZXhPZkZpcnN0TmV3bHlMb2Fk
aW5nSXRlcmF0aW9uICsgQnVpbGRib3RRdWV1ZS5SZWNlbnRJdGVyYXRpb25zVG9Mb2FkKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB0aGlzLml0
ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICBpZiAoIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChpdGVyYXRpb24uaXNMb2FkaW5n
KSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGxhY2tzIHZpc2liaWxpdHkgaW50byBsb2Fk
aW5nLCBzbyBpdCBpcyBsaWtlbHkgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHRvbyBvZnRlbi4KLSAg
ICAgICAgICAgICAgICAvLyBHaXZlIGl0IGEgY2hhbmNlIHRvIGFuYWx5emUgZXZlcnl0aGluZyB0
aGF0J3MgYmVlbiBhbHJlYWR5IHJlcXVlc3RlZCBmaXJzdCwgYW5kIHRoZW4gaXQgY2FuIGRlY2lk
ZSB3aGV0aGVyIGl0IG5lZWRzIG1vcmUuCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5sb2FkZWQgJiYgaW5kZXhPZkZpcnN0
TmV3bHlMb2FkaW5nSXRlcmF0aW9uICE9PSB1bmRlZmluZWQpIHsKLSAgICAgICAgICAgICAgICAv
LyBUaGVyZSB3YXMgYSBnYXAgYmV0d2VlbiBsb2FkZWQgaXRlcmF0aW9ucywgd2hpY2ggd2UndmUg
Y2xvc2VkIG5vdy4KLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICBpZiAoIWl0ZXJhdGlvbi5sb2FkZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5k
ZXhPZkZpcnN0TmV3bHlMb2FkaW5nSXRlcmF0aW9uID09PSB1bmRlZmluZWQpCi0gICAgICAgICAg
ICAgICAgICAgIGluZGV4T2ZGaXJzdE5ld2x5TG9hZGluZ0l0ZXJhdGlvbiA9IGk7Ci0gICAgICAg
ICAgICAgICAgaWYgKCF0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0KQot
ICAgICAgICAgICAgICAgICAgICBpdGVyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0
ZXJhdGlvbi5FdmVudC5VcGRhdGVkLCB0aGlzLl9jaGVja0ZvckluT3JkZXJSZXN1bHQuYmluZCh0
aGlzKSk7Ci0gICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAgICAg
fQotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGdldCBidWlsZHNJbmZvVVJMKCkKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuYmFzZVVSTDsKLQotICAgICAgICByZXR1cm4gdGhpcy5idWlsZHNVUkw7
Ci0gICAgfSwKLQotICAgIGdldEJ1aWxkczogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLmJ1aWxkYm90LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0
dXJuIGRhdGEuY2FjaGVkQnVpbGRzLnJldmVyc2UoKTsKLQotICAgICAgICByZXR1cm4gZGF0YS5i
dWlsZHM7Ci0gICAgfSwKLQotICAgIGlzQnVpbGRDb21wbGV0ZTogZnVuY3Rpb24oZGF0YSwgaW5k
ZXgpCi0gICAgewotICAgICAgICBpZiAodGhpcy5idWlsZGJvdC5WRVJTSU9OX0xFU1NfVEhBTl8w
OSkgewotICAgICAgICAgICAgdmFyIGN1cnJlbnRCdWlsZHMgPSB7fTsKLSAgICAgICAgICAgIGlm
IChkYXRhLmN1cnJlbnRCdWlsZHMgaW5zdGFuY2VvZiBBcnJheSkKLSAgICAgICAgICAgICAgICBk
YXRhLmN1cnJlbnRCdWlsZHMuZm9yRWFjaChmdW5jdGlvbihpZCkgeyBjdXJyZW50QnVpbGRzW2lk
XSA9IHRydWU7IH0pOwotCi0gICAgICAgICAgICByZXR1cm4gKCEoZGF0YS5jYWNoZWRCdWlsZHNb
aW5kZXhdIGluIGN1cnJlbnRCdWlsZHMpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBk
YXRhLmJ1aWxkc1tpbmRleF0uY29tcGxldGU7Ci0gICAgfSwKLQotICAgIGdldEl0ZXJhdGlvbklE
OiBmdW5jdGlvbihkYXRhLCBpbmRleCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmJ1aWxkYm90
LlZFUlNJT05fTEVTU19USEFOXzA5KQotICAgICAgICAgICAgcmV0dXJuIGRhdGEuY2FjaGVkQnVp
bGRzW2luZGV4XTsKLQotICAgICAgICByZXR1cm4gZGF0YS5idWlsZHNbaW5kZXhdLm51bWJlcjsK
LSAgICB9LAotCi0gICAgdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLl9s
b2FkKHRoaXMuYnVpbGRzSW5mb1VSTCwgZnVuY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgdmFy
IGJ1aWxkcyA9IHRoaXMuZ2V0QnVpbGRzKGRhdGEpOwotICAgICAgICAgICAgaWYgKCEoYnVpbGRz
IGluc3RhbmNlb2YgQXJyYXkpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAg
ICAgdmFyIG5ld0l0ZXJhdGlvbnMgPSBbXTsKLQotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBidWlsZHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9u
SUQgPSB0aGlzLmdldEl0ZXJhdGlvbklEKGRhdGEsIGkpOwotICAgICAgICAgICAgICAgIHZhciBp
dGVyYXRpb24gPSB0aGlzLl9rbm93bkl0ZXJhdGlvbnNbaXRlcmF0aW9uSURdOwotICAgICAgICAg
ICAgICAgIGlmICghaXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbiA9
IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLCBpdGVyYXRpb25JRCwgdGhpcy5pc0J1aWxkQ29t
cGxldGUoZGF0YSwgaSkpOwotICAgICAgICAgICAgICAgICAgICBuZXdJdGVyYXRpb25zLnB1c2go
aXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVyYXRpb25zLnB1c2goaXRl
cmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fa25vd25JdGVyYXRpb25zW2l0ZXJh
dGlvbi5pZF0gPSBpdGVyYXRpb247Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgaWYgKGkgPCBCdWlsZGJvdFF1ZXVlLlJlY2VudEl0ZXJhdGlvbnNUb0xvYWQgJiYgKCFpdGVy
YXRpb24uZmluaXNoZWQgfHwgIWl0ZXJhdGlvbi5sb2FkZWQpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGlmICghdGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGl0ZXJhdGlvbi5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90SXRl
cmF0aW9uLkV2ZW50LlVwZGF0ZWQsIHRoaXMuX2NoZWNrRm9ySW5PcmRlclJlc3VsdC5iaW5kKHRo
aXMpKTsKLSAgICAgICAgICAgICAgICAgICAgaXRlcmF0aW9uLnVwZGF0ZSgpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFuZXdJdGVyYXRpb25z
Lmxlbmd0aCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHRoaXMuc29y
dEl0ZXJhdGlvbnMoKTsKLQotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoQnVpbGRib3RRdWV1ZS5FdmVudC5JdGVyYXRpb25zQWRkZWQsIHthZGRlZEl0ZXJhdGlvbnM6
IG5ld0l0ZXJhdGlvbnN9KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAg
X2NoZWNrRm9ySW5PcmRlclJlc3VsdDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICBp
ZiAodGhpcy5faGFzTG9hZGVkSXRlcmF0aW9uRm9ySW5PcmRlclJlc3VsdCkKLSAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgdmFyIGl0ZXJhdGlvbnNJbk9yaWdpbmFsT3JkZXIgPSB0aGlzLml0
ZXJhdGlvbnMuY29uY2F0KCkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiLmlkIC0gYS5p
ZDsgfSk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uc0luT3JpZ2luYWxP
cmRlci5sZW5ndGggLSAxOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBpMSA9IGl0ZXJhdGlvbnNJ
bk9yaWdpbmFsT3JkZXJbaV07Ci0gICAgICAgICAgICB2YXIgaTIgPSBpdGVyYXRpb25zSW5Pcmln
aW5hbE9yZGVyW2kgKyAxXTsKLSAgICAgICAgICAgIGlmIChpMS5wcm9kdWN0aXZlICYmIGkyLmxv
YWRlZCAmJiB0aGlzLmNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoaTEsIGkyKSA8IDApIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl9oYXNMb2FkZWRJdGVyYXRpb25Gb3JJbk9yZGVyUmVzdWx0
ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgdGhpcy5sb2FkTW9yZUhpc3RvcmljYWxJdGVyYXRpb25zKCk7Ci0gICAgfSwK
LQotICAgIGxvYWRBbGw6IGZ1bmN0aW9uKGNhbGxiYWNrKQotICAgIHsKLSAgICAgICAgLy8gRklY
TUU6IERvbid0IGxvYWQgZXZlcnl0aGluZyBhdCBvbmNlLCBkbyBpdCBpbmNyZW1lbnRhbGx5IGFz
IHJlcXVlc3RlZC4KLSAgICAgICAgdGhpcy5fbG9hZCh0aGlzLmFsbEl0ZXJhdGlvbnNVUkwsIGZ1
bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgIGZvciAodmFyIGlkU3RyaW5nIGluIGRhdGEpIHsK
LSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgaWRTdHJpbmcgPT09ICJzdHJp
bmciKTsKLSAgICAgICAgICAgICAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0
aW9uKHRoaXMsIGRhdGFbaWRTdHJpbmddKTsKLSAgICAgICAgICAgICAgICB0aGlzLml0ZXJhdGlv
bnMucHVzaChpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgIHRoaXMuX2tub3duSXRlcmF0aW9u
c1tpdGVyYXRpb24uaWRdID0gaXRlcmF0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICB0aGlzLnNvcnRJdGVyYXRpb25zKCk7Ci0KLSAgICAgICAgICAgIHRoaXMuX2hhc0xvYWRlZEl0
ZXJhdGlvbkZvckluT3JkZXJSZXN1bHQgPSB0cnVlOwotCi0gICAgICAgICAgICBjYWxsYmFjayh0
aGlzKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJh
dGlvbnM6IGZ1bmN0aW9uKGEsIGIpCi0gICAgewotICAgICAgICByZXN1bHQgPSB0aGlzLmNvbXBh
cmVJdGVyYXRpb25zQnlSZXZpc2lvbnMoYSwgYik7Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAgICAgIC8vIEEgbG9hZGVkIGl0ZXJhdGlvbiBt
YXkgbm90IGhhdmUgcmV2aXNpb24gbnVtYmVycyBpZiBpdCBmYWlsZWQgZWFybHksIGJlZm9yZSBz
dm4gc3RlcHMgZmluaXNoZWQuCi0gICAgICAgIHJlc3VsdCA9IGIubG9hZGVkIC0gYS5sb2FkZWQ7
Ci0gICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotCi0gICAg
ICAgIHJldHVybiBiLmlkIC0gYS5pZDsKLSAgICB9LAotCi0gICAgY29tcGFyZUl0ZXJhdGlvbnNC
eVJldmlzaW9uczogZnVuY3Rpb24oYSwgYikKLSAgICB7Ci0gICAgICAgIHZhciBzb3J0ZWRSZXBv
c2l0b3JpZXMgPSBEYXNoYm9hcmQuc29ydGVkUmVwb3NpdG9yaWVzOwotICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIHJlcG9zaXRvcnlOYW1lID0gc29ydGVkUmVwb3NpdG9yaWVzW2ldLm5hbWU7Ci0gICAg
ICAgICAgICB2YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tpXS50cmFjOwotICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHJhYyk7Ci0gICAgICAgICAgICB2YXIgaW5kZXhBID0gdHJhYy5p
bmRleE9mUmV2aXNpb24oYS5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV0pOwotICAgICAgICAgICAg
dmFyIGluZGV4QiA9IHRyYWMuaW5kZXhPZlJldmlzaW9uKGIucmV2aXNpb25bcmVwb3NpdG9yeU5h
bWVdKTsKLSAgICAgICAgICAgIGlmIChpbmRleEEgIT09IC0xICYmIGluZGV4QiAhPT0gLTEpIHsK
LSAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gaW5kZXhCIC0gaW5kZXhBOwotICAgICAgICAg
ICAgICAgIGlmIChyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gMDsKLSAgICB9LAotCi0g
ICAgLy8gUmUtaW5zZXJ0IHRoZSBpdGVyYXRpb24gaWYgaXRzIHNvcnQgb3JkZXIgY2hhbmdlZCAo
d2hpY2ggaGFwcGVucyBvbmNlIGRldGFpbHMgYWJvdXQgaXQgZ2V0IGxvYWRlZCkuCi0gICAgdXBk
YXRlSXRlcmF0aW9uUG9zaXRpb246IGZ1bmN0aW9uKGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAg
IHZhciBvbGRJbmRleDsKLSAgICAgICAgdmFyIGluc2VydGVkID0gZmFsc2U7Ci0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGhpcy5pdGVyYXRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAg
ICAgICBpZiAoIWluc2VydGVkICYmIHRoaXMuY29tcGFyZUl0ZXJhdGlvbnModGhpcy5pdGVyYXRp
b25zW2ldLCBpdGVyYXRpb24pID4gMCkgewotICAgICAgICAgICAgICAgIHRoaXMuaXRlcmF0aW9u
cy5zcGxpY2UoaSwgMCwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAob2xkSW5kZXgg
IT09IHVuZGVmaW5lZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgaW5zZXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgaWYgKHRoaXMuaXRlcmF0aW9uc1tpXSA9PT0gaXRlcmF0aW9uKSB7
Ci0gICAgICAgICAgICAgICAgb2xkSW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGlmIChpbnNl
cnRlZCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgdGhpcy5pdGVyYXRpb25zLnNwbGljZShvbGRJbmRleCwgMSk7Ci0gICAgfSwK
LQotICAgIHNvcnRJdGVyYXRpb25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLml0
ZXJhdGlvbnMuc29ydCh0aGlzLmNvbXBhcmVJdGVyYXRpb25zLmJpbmQodGhpcykpOwotICAgIH0K
LX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RRdWV1ZVZpZXcu
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1
aWxkYm90UXVldWVWaWV3ID0gZnVuY3Rpb24ocXVldWVzKQotewotICAgIFF1ZXVlVmlldy5jYWxs
KHRoaXMpOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICB0aGlzLnF1
ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgIGlmICh0aGlzLnBsYXRmb3Jt
ICYmIHRoaXMucGxhdGZvcm0gIT0gcXVldWUucGxhdGZvcm0pCi0gICAgICAgICAgICB0aHJvdyAi
QSBidWlsZGJvdCB2aWV3IG1heSBub3QgY29udGFpbiBxdWV1ZXMgZm9yIG11bHRpcGxlIHBsYXRm
b3Jtcy4iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMucGxhdGZvcm0gPSBxdWV1ZS5w
bGF0Zm9ybTsKLSAgICAgICAgcXVldWUuYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdFF1ZXVlLkV2
ZW50Lkl0ZXJhdGlvbnNBZGRlZCwgdGhpcy5fcXVldWVJdGVyYXRpb25zQWRkZWQsIHRoaXMpOwot
ICAgICAgICBxdWV1ZS5hZGRFdmVudExpc3RlbmVyKEJ1aWxkYm90UXVldWUuRXZlbnQuVW5hdXRo
b3JpemVkQWNjZXNzLCB0aGlzLl91bmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMpOwotICAgIH0uYmlu
ZCh0aGlzKSk7Ci0KLSAgICB2YXIgc29ydGVkUmVwb3NpdG9yaWVzID0gRGFzaGJvYXJkLnNvcnRl
ZFJlcG9zaXRvcmllczsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNvcnRlZFJlcG9zaXRvcmll
cy5sZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgdHJhYyA9IHNvcnRlZFJlcG9zaXRvcmllc1tp
XS50cmFjOwotICAgICAgICBpZiAodHJhYykKLSAgICAgICAgICAgIHRyYWMuYWRkRXZlbnRMaXN0
ZW5lcihUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCB0aGlzLl9uZXdDb21taXRzUmVjb3JkZWQs
IHRoaXMpOwotICAgIH0KLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMo
QnVpbGRib3RRdWV1ZVZpZXcpOwotCi1CdWlsZGJvdFF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCA9
IDQ1MDAwOyAvLyA0NSBzZWNvbmRzCi1CdWlsZGJvdFF1ZXVlVmlldy5VcGRhdGVTb29uVGltZW91
dCA9IDEwMDA7IC8vIDEgc2Vjb25kCi0KLUJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSA9IHsK
LSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RRdWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBRdWV1
ZVZpZXcucHJvdG90eXBlLAotCi0gICAgX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb246IGZ1bmN0
aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYgKCFxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCkK
LSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICBpZiAocXVldWUuaXRlcmF0aW9uc1sw
XS5wcm9kdWN0aXZlKQotICAgICAgICAgICAgcmV0dXJuIHF1ZXVlLml0ZXJhdGlvbnNbMF07Ci0g
ICAgICAgIHJldHVybiBxdWV1ZS5pdGVyYXRpb25zWzBdLnByZXZpb3VzUHJvZHVjdGl2ZUl0ZXJh
dGlvbjsKLSAgICB9LAotCi0gICAgX2FwcGVuZFVuYXV0aG9yaXplZExpbmVWaWV3OiBmdW5jdGlv
bihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHF1ZXVlLmJ1aWxkYm90Lm5l
ZWRzQXV0aGVudGljYXRpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydCghcXVldWUuYnVpbGRi
b3QuaXNBdXRoZW50aWNhdGVkKTsKLSAgICAgICAgdmFyIGphdmFzY3JpcHRVUkwgPSAiamF2YXNj
cmlwdDpidWlsZGJvdHNbIiArIGJ1aWxkYm90cy5pbmRleE9mKHF1ZXVlLmJ1aWxkYm90KSArICJd
LnVwZGF0ZVF1ZXVlcyhCdWlsZGJvdC5VcGRhdGVSZWFzb24uUmVhdXRoZW50aWNhdGUpIjsKLSAg
ICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldygidW5hdXRob3JpemVkIiwgU3Rh
dHVzTGluZVZpZXcuU3RhdHVzLlVuYXV0aG9yaXplZCwgIiIsIG51bGwsIGphdmFzY3JpcHRVUkwp
OwotICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAg
IH0sCi0KLSAgICBfY3JlYXRlTG9hZGluZ0luZGljYXRvcjogZnVuY3Rpb24oaXRlcmF0aW9uLCBo
ZWFkaW5nKSB7Ci0gICAgICAgIHZhciBjb250ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIGNvbnRlbnQuY2xhc3NOYW1lID0gInRlc3QtcmVzdWx0cy1wb3BvdmVy
IjsKLQotICAgICAgICB0aGlzLl9hZGRJdGVyYXRpb25IZWFkaW5nVG9Qb3BvdmVyKGl0ZXJhdGlv
biwgY29udGVudCwgaGVhZGluZyk7Ci0gICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIo
Y29udGVudCk7Ci0KLSAgICAgICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgbG9hZGluZ0luZGljYXRvci5jbGFzc05hbWUgPSAi
bG9hZGluZy1pbmRpY2F0b3IiOwotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50
ID0gIkxvYWRpbmdcdTIwMjYiOwotICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxvYWRpbmdJ
bmRpY2F0b3IpOwotCi0gICAgICAgIHJldHVybiBjb250ZW50OwotICAgIH0sCi0KLSAgICAvLyBX
b3JrIGFyb3VuZCBidWcgODAxNTk6IC13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZSBub3QgcmVzcGVj
dGVkIHdoZW4gY29weWluZyBjb250ZW50LgotICAgIC8vIFdlIHNldCBjbGlwYm9hcmQgZGF0YSBt
YW51YWxseSwgdGVtcG9yYXJpbHkgbWFraW5nIG5vbi1zZWxlY3RhYmxlIGNvbnRlbnQgaGlkZGVu
Ci0gICAgLy8gdG8gZWFzaWx5IGdldCBhY2N1cmF0ZSBzZWxlY3Rpb24gdGV4dC4KLSAgICBfb25Q
b3BvdmVyQ29weTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgICAgdmFyIGl0ZXJhdG9yID0gZG9j
dW1lbnQuY3JlYXRlTm9kZUl0ZXJhdG9yKAotICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdl
dCwKLSAgICAgICAgICAgIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULAotICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgIGFjY2VwdE5vZGU6IGZ1bmN0aW9uKGVsZW1lbnQpIHsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLndlYmtpdFVz
ZXJTZWxlY3QgIT09ICJub25lIikKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2Rl
RmlsdGVyLkZJTFRFUl9BQ0NFUFQ7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOb2RlRmls
dGVyLkZJTFRFUl9TS0lQOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAg
ICAgKTsKLQotICAgICAgICB3aGlsZSAoKG5vZGUgPSBpdGVyYXRvci5uZXh0Tm9kZSgpKSkKLSAg
ICAgICAgICAgIG5vZGUuc3R5bGUudmlzaWJpbGl0eSA9ICJ2aXNpYmxlIjsKLQotICAgICAgICBl
dmVudC5jdXJyZW50VGFyZ2V0LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKLSAgICAgICAg
ZXZlbnQuY2xpcGJvYXJkRGF0YS5zZXREYXRhKCd0ZXh0Jywgd2luZG93LmdldFNlbGVjdGlvbigp
KTsKLSAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zdHlsZS52aXNpYmlsaXR5ID0gIiI7Ci0g
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9LAotCi0gICAgX3BvcG92ZXJDb250ZW50Rm9ySmF2
YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgdGVzdE5hbWUp
Ci0gICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7
Ci0KLSAgICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24s
IGNvbnRlbnQsICJqYXZhc2NyaXB0Y29yZSB0ZXN0IGZhaWx1cmVzIiwgaXRlcmF0aW9uLnF1ZXVl
LmJ1aWxkYm90LmphdmFTY3JpcHRDb3JlVGVzdFN0ZGlvVXJsRm9ySXRlcmF0aW9uKGl0ZXJhdGlv
biwgdGVzdE5hbWUpKTsKLSAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50
KTsKLQotICAgICAgICBpZiAoIWl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJl
Z3Jlc3Npb25zKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbWVzc2FnZS5jbGFzc05hbWUgPSAibG9hZGluZy1m
YWlsdXJlIjsKLSAgICAgICAgICAgIG1lc3NhZ2UudGV4dENvbnRlbnQgPSAiVGVzdCByZXN1bHRz
IGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hp
bGQobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICAgICAgfQotCi0g
ICAgICAgIHZhciByZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1
bHRzLnJlZ3Jlc3Npb25zOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSByZWdyZXNz
aW9ucy5sZW5ndGg7IGkgIT0gZW5kOyArK2kpIHsKLSAgICAgICAgICAgIHZhciB0ZXN0ID0gcmVn
cmVzc2lvbnNbaV07Ci0gICAgICAgICAgICB2YXIgcm93RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgdmFyIHRlc3RQYXRoRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC5j
bGFzc05hbWUgPSAidGVzdC1wYXRoIjsKLSAgICAgICAgICAgIHRlc3RQYXRoRWxlbWVudC50ZXh0
Q29udGVudCA9IHRlc3Q7Ci0gICAgICAgICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHRlc3RQ
YXRoRWxlbWVudCk7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKHJvd0VsZW1lbnQp
OwotICAgICAgICB9Ci0KLSAgICAgICAgY29udGVudC5vbmNvcHkgPSB0aGlzLl9vblBvcG92ZXJD
b3B5OwotICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX3ByZXNlbnRQb3Bv
dmVyRm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnM6IGZ1bmN0aW9uKHRlc3ROYW1lLCBl
bGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0gICAgewotICAgICAgICBpZiAoaXRlcmF0aW9u
LmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCi0gICAgICAgICAgICB2YXIg
Y29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9ySmF2YVNjcmlwdENvcmVUZXN0UmVncmVz
c2lvbnMoaXRlcmF0aW9uLCB0ZXN0TmFtZSk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAg
dmFyIGNvbnRlbnQgPSB0aGlzLl9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImph
dmFzY3JpcHRjb3JlIHRlc3QgZmFpbHVyZXMiKTsKLSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2Fk
SmF2YVNjcmlwdENvcmVUZXN0UmVzdWx0cyh0ZXN0TmFtZSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRGb3JKYXZhU2Ny
aXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24sIHRlc3ROYW1lKTsKLSAgICAgICAgICAg
IH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcmVjdCA9IERhc2hib2Fy
ZC5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
KTsKLSAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gY29udGVudDsKLSAgICAgICAgcG9wb3Zlci5w
cmVzZW50KHJlY3QsIFtEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ksIERhc2hib2FyZC5SZWN0RWRn
ZS5NQVhfWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1hdKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfSwKLQotICAgIF9wcmVzZW50UG9wb3Zl
ckZvclJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRleHQpCi0g
ICAgewotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OwotICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsK
LQotICAgICAgICAvLyBGSVhNRTogTm90aGluZyBndWFyYW50ZWVzIHRoYXQgVHJhYyBoYXMgaGlz
dG9yaWNhbCBkYXRhIGZvciB0aGVzZSByZXZpc2lvbnMuCi0gICAgICAgIHZhciBsaW5lc0ZvckNv
bW1pdHMgPSB0aGlzLl9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZShjb250ZXh0LnRyYWMsIGNv
bnRleHQuYnJhbmNoLCBjb250ZXh0LmZpcnN0UmV2aXNpb24sIGNvbnRleHQubGFzdFJldmlzaW9u
KTsKLQotICAgICAgICB2YXIgbGluZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBsaW5lLmNsYXNzTmFtZSA9ICJ0aXRsZSI7Ci0KLSAgICAgICAgaWYgKGxpbmVzRm9y
Q29tbWl0cy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSAiY29tbWl0
cyBzaW5jZSBwcmV2aW91cyByZXN1bHQiOwotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGls
ZChsaW5lKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZERpdmlkZXJUb1BvcG92ZXIoY29udGVudCk7
Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsaW5lLnRleHRDb250ZW50ID0gIm5vIGNv
bW1pdHMgdG8gIiArIGNvbnRleHQuYnJhbmNoLm5hbWUgKyAiIHNpbmNlIHByZXZpb3VzIHJlc3Vs
dCI7Ci0gICAgICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxpbmUpOwotICAgICAgICB9Ci0K
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgIT0gbGluZXNGb3JDb21taXRzLmxlbmd0aDsgKytp
KQotICAgICAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lc0ZvckNvbW1pdHNbaV0pOwot
Ci0gICAgICAgIHZhciByZWN0ID0gRGFzaGJvYXJkLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGVs
ZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICBwb3BvdmVyLmNvbnRlbnQg
PSBjb250ZW50OwotICAgICAgICBwb3BvdmVyLnByZXNlbnQocmVjdCwgW0Rhc2hib2FyZC5SZWN0
RWRnZS5NSU5fWSwgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2Uu
TUFYX1gsIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWF0pOwotCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0sCi0KLSAgICBfcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb246
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNJdGVyYXRpb24sIGJyYW5jaCkKLSAgICB7Ci0g
ICAgICAgIHZhciByZXBvc2l0b3J5ID0gYnJhbmNoLnJlcG9zaXRvcnk7Ci0gICAgICAgIHZhciBy
ZXBvc2l0b3J5TmFtZSA9IHJlcG9zaXRvcnkubmFtZTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
aXRlcmF0aW9uLnJldmlzaW9uW3JlcG9zaXRvcnlOYW1lXSk7Ci0gICAgICAgIHZhciB0cmFjID0g
cmVwb3NpdG9yeS50cmFjOwotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNwYW4iKTsKLSAgICAgICAgY29udGVudC50ZXh0Q29udGVudCA9IHRoaXMuX2Zvcm1h
dFJldmlzaW9uRm9yRGlzcGxheShpdGVyYXRpb24ucmV2aXNpb25bcmVwb3NpdG9yeU5hbWVdLCBy
ZXBvc2l0b3J5KTsKLSAgICAgICAgY29udGVudC5jbGFzc0xpc3QuYWRkKCJyZXZpc2lvbi1udW1i
ZXIiKTsKLQotICAgICAgICBpZiAoIXByZXZpb3VzSXRlcmF0aW9uKQotICAgICAgICAgICAgcmV0
dXJuIGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFyIHByZXZpb3VzSXRlcmF0aW9uUmV2aXNpb24gPSBw
cmV2aW91c0l0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5TmFtZV07Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHByZXZpb3VzSXRlcmF0aW9uUmV2aXNpb24pOwotICAgICAgICB2YXIgcHJldmlv
dXNJdGVyYXRpb25SZXZpc2lvbkluZGV4ID0gdHJhYy5pbmRleE9mUmV2aXNpb24ocHJldmlvdXNJ
dGVyYXRpb25SZXZpc2lvbik7Ci0gICAgICAgIGlmIChwcmV2aW91c0l0ZXJhdGlvblJldmlzaW9u
SW5kZXggPT09IC0xKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0KLSAgICAgICAgdmFy
IGZpcnN0UmV2aXNpb24gPSB0cmFjLm5leHRSZXZpc2lvbihicmFuY2gubmFtZSwgcHJldmlvdXNJ
dGVyYXRpb25SZXZpc2lvbik7Ci0gICAgICAgIGlmIChmaXJzdFJldmlzaW9uID09PSBUcmFjLk5P
X01PUkVfUkVWSVNJT05TKQotICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnQ7Ci0gICAgICAgIHZh
ciBmaXJzdFJldmlzaW9uSW5kZXggPSB0cmFjLmluZGV4T2ZSZXZpc2lvbihmaXJzdFJldmlzaW9u
KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZmlyc3RSZXZpc2lvbkluZGV4ICE9PSAtMSk7Ci0K
LSAgICAgICAgdmFyIGxhc3RSZXZpc2lvbiA9IGl0ZXJhdGlvbi5yZXZpc2lvbltyZXBvc2l0b3J5
TmFtZV07Ci0gICAgICAgIHZhciBsYXN0UmV2aXNpb25JbmRleCA9IHRyYWMuaW5kZXhPZlJldmlz
aW9uKGxhc3RSZXZpc2lvbik7Ci0gICAgICAgIGlmIChsYXN0UmV2aXNpb25JbmRleCA9PT0gLTEp
Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLQotICAgICAgICBpZiAoZmlyc3RSZXZpc2lv
bkluZGV4ID4gbGFzdFJldmlzaW9uSW5kZXgpCi0gICAgICAgICAgICByZXR1cm4gY29udGVudDsK
LQotICAgICAgICB2YXIgY29udGV4dCA9IHsKLSAgICAgICAgICAgIHRyYWM6IHRyYWMsCi0gICAg
ICAgICAgICBicmFuY2g6IGJyYW5jaCwKLSAgICAgICAgICAgIGZpcnN0UmV2aXNpb246IGZpcnN0
UmV2aXNpb24sCi0gICAgICAgICAgICBsYXN0UmV2aXNpb246IGxhc3RSZXZpc2lvbiwKLSAgICAg
ICAgfTsKLSAgICAgICAgbmV3IFBvcG92ZXJUcmFja2VyKGNvbnRlbnQsIHRoaXMuX3ByZXNlbnRQ
b3BvdmVyRm9yUmV2aXNpb25SYW5nZS5iaW5kKHRoaXMpLCBjb250ZXh0KTsKLQotICAgICAgICBy
ZXR1cm4gY29udGVudDsKLSAgICB9LAotCi0gICAgX2FkZEl0ZXJhdGlvbkhlYWRpbmdUb1BvcG92
ZXI6IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgY29udGVudCwgYWRkaXRpb25hbFRleHQsIGFkZGl0aW9u
YWxUZXh0VGFyZ2V0KQotICAgIHsKLSAgICAgICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRpdGxlLmNsYXNzTmFtZSA9ICJwb3BvdmVyLWl0ZXJh
dGlvbi1oZWFkaW5nIjsKLQotICAgICAgICB2YXIgcXVldWVOYW1lID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOwotICAgICAgICBxdWV1ZU5hbWUuY2xhc3NOYW1lID0gInF1ZXVlLW5h
bWUiOwotICAgICAgICBxdWV1ZU5hbWUudGV4dENvbnRlbnQgPSBpdGVyYXRpb24ucXVldWUuaWQ7
Ci0gICAgICAgIHRpdGxlLmFwcGVuZENoaWxkKHF1ZXVlTmFtZSk7Ci0KLSAgICAgICAgdmFyIGJ1
aWxkYm90TGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgYnVpbGRi
b3RMaW5rLmNsYXNzTmFtZSA9ICJidWlsZGJvdC1saW5rIjsKLSAgICAgICAgYnVpbGRib3RMaW5r
LnRleHRDb250ZW50ID0gImJ1aWxkICMiICsgaXRlcmF0aW9uLmlkOwotICAgICAgICBidWlsZGJv
dExpbmsuaHJlZiA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVy
YXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgYnVpbGRib3RMaW5rLnRhcmdldCA9ICJfYmxhbmsi
OwotICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChidWlsZGJvdExpbmspOwotCi0gICAgICAgIGlm
IChhZGRpdGlvbmFsVGV4dCkgewotICAgICAgICAgICAgdmFyIGVsZW1lbnRUeXBlID0gYWRkaXRp
b25hbFRleHRUYXJnZXQgPyAiYSIgOiAic3BhbiI7Ci0gICAgICAgICAgICB2YXIgYWRkaXRpb25h
bFRleHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50VHlwZSk7Ci0gICAg
ICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQuY2xhc3NOYW1lID0gImFkZGl0aW9uYWwtdGV4
dCI7Ci0gICAgICAgICAgICBhZGRpdGlvbmFsVGV4dEVsZW1lbnQudGV4dENvbnRlbnQgPSBhZGRp
dGlvbmFsVGV4dDsKLSAgICAgICAgICAgIGlmIChhZGRpdGlvbmFsVGV4dFRhcmdldCkgewotICAg
ICAgICAgICAgICAgIGFkZGl0aW9uYWxUZXh0RWxlbWVudC5ocmVmID0gYWRkaXRpb25hbFRleHRU
YXJnZXQ7Ci0gICAgICAgICAgICAgICAgYWRkaXRpb25hbFRleHRFbGVtZW50LnRhcmdldCA9ICJf
YmxhbmsiOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGl0bGUuYXBwZW5kQ2hpbGQoYWRk
aXRpb25hbFRleHRFbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQodGl0bGUpOwotICAgIH0sCi0KLSAgICByZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb246
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNEaXNwbGF5ZWRJdGVyYXRpb24pCi0gICAgewot
ICAgICAgICB2YXIgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7
Ci0gICAgICAgIHZhciBzaG91bGRBZGRQbHVzU2lnbiA9IGZhbHNlOwotICAgICAgICB2YXIgYnJh
bmNoZXMgPSBpdGVyYXRpb24ucXVldWUuYnJhbmNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYnJhbmNoZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmFuY2ggPSBi
cmFuY2hlc1tpXTsKLSAgICAgICAgICAgIGlmICghaXRlcmF0aW9uLnJldmlzaW9uW2JyYW5jaC5y
ZXBvc2l0b3J5Lm5hbWVdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
dmFyIGNvbnRlbnQgPSB0aGlzLl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlv
bihpdGVyYXRpb24sIHByZXZpb3VzRGlzcGxheWVkSXRlcmF0aW9uLCBicmFuY2gpOwotICAgICAg
ICAgICAgaWYgKHNob3VsZEFkZFBsdXNTaWduKQotICAgICAgICAgICAgICAgIGZyYWdtZW50LmFw
cGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgXHVmZjBiICIpKTsKLSAgICAgICAg
ICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOwotICAgICAgICAgICAgc2hvdWxkQWRk
UGx1c1NpZ24gPSB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAg
ICB9LAotCi0gICAgX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uOiBmdW5jdGlvbihmYWlsZWRT
dGVwKQotICAgIHsKLSAgICAgICAgaWYgKCFmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCkKLSAgICAg
ICAgICAgIHJldHVybiBCdWlsZGJvdEl0ZXJhdGlvbi5UZXN0U3RlcHNbZmFpbGVkU3RlcC5uYW1l
XSArICIgZmFpbGVkIjsKLSAgICAgICAgaWYgKGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50ID09PSAx
KQotICAgICAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9uLlRlc3RTdGVwc1tmYWlsZWRT
dGVwLm5hbWVdICsgIiBmYWlsdXJlIjsKLSAgICAgICAgcmV0dXJuIEJ1aWxkYm90SXRlcmF0aW9u
LlRlc3RTdGVwc1tmYWlsZWRTdGVwLm5hbWVdICsgIiBmYWlsdXJlcyI7Ci0gICAgfSwKLQotICAg
IF90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhDb3VudDogZnVuY3Rpb24oZmFpbGVkU3Rl
cCkKLSAgICB7Ci0gICAgICAgIGlmICghZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQpCi0gICAgICAg
ICAgICByZXR1cm4gdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7
Ci0gICAgICAgIGlmIChmYWlsZWRTdGVwLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAg
Ly8gRS5nLiAiNTArIGxheW91dCB0ZXN0IGZhaWx1cmVzIiwgcHJldmVudGluZyBsaW5lIGJyZWFr
cyBhcm91bmQgdGhlICIrIi4KLSAgICAgICAgICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVD
b3VudCArICJcdWZlZmZcdWZmMGJcdTAwYTAiICsgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3Jp
cHRpb24oZmFpbGVkU3RlcCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRS5nLiAiMSBsYXlvdXQg
dGVzdCBmYWlsdXJlIiwgcHJldmVudGluZyBsaW5lIGJyZWFrIGFmdGVyIHRoZSBudW1iZXIuCi0g
ICAgICAgIHJldHVybiBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCArICJcdTAwYTAiICsgdGhpcy5f
dGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCk7Ci0gICAgfSwKLQotICAgIGFw
cGVuZEJ1aWxkU3R5bGU6IGZ1bmN0aW9uKHF1ZXVlcywgZGVmYXVsdExhYmVsLCBhcHBlbmRGdW5j
dGlvbikKLSAgICB7Ci0gICAgICAgIHF1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0g
ICAgICAgICAgICB2YXIgcmVsZWFzZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIp
OwotICAgICAgICAgICAgcmVsZWFzZUxhYmVsLmNsYXNzTGlzdC5hZGQoInF1ZXVlTGFiZWwiKTsK
LSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50ZXh0Q29udGVudCA9IHF1ZXVlLmhlYWRpbmcgPyBx
dWV1ZS5oZWFkaW5nIDogZGVmYXVsdExhYmVsOwotICAgICAgICAgICAgcmVsZWFzZUxhYmVsLmhy
ZWYgPSBxdWV1ZS5vdmVydmlld1VSTDsKLSAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50YXJnZXQg
PSAiX2JsYW5rIjsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChyZWxlYXNl
TGFiZWwpOwotCi0gICAgICAgICAgICBhcHBlbmRGdW5jdGlvbi5jYWxsKHRoaXMsIHF1ZXVlKTsK
LSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVF1ZXVlczogZnVu
Y3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5xdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1
ZSkgeyBxdWV1ZS51cGRhdGUoKTsgfSk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZUl0ZXJhdGlvbnNB
ZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsK
LQotICAgICAgICBldmVudC5kYXRhLmFkZGVkSXRlcmF0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGl0
ZXJhdGlvbikgewotICAgICAgICAgICAgaXRlcmF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoQnVpbGRi
b3RJdGVyYXRpb24uRXZlbnQuVXBkYXRlZCwgdGhpcy5faXRlcmF0aW9uVXBkYXRlZCwgdGhpcyk7
Ci0gICAgICAgICAgICBpdGVyYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihCdWlsZGJvdEl0ZXJhdGlv
bi5FdmVudC5VbmF1dGhvcml6ZWRBY2Nlc3MsIHRoaXMuX3VuYXV0aG9yaXplZEFjY2VzcywgdGhp
cyk7Ci0gICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgfSwKLQotICAgIF9pdGVyYXRpb25VcGRh
dGVkOiBmdW5jdGlvbihldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMudXBkYXRlU29vbigpOwot
ICAgIH0sCi0gICAgCi0gICAgX25ld0NvbW1pdHNSZWNvcmRlZDogZnVuY3Rpb24oZXZlbnQpCi0g
ICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNvb24oKTsKLSAgICB9LAotCi0gICAgX3VuYXV0aG9y
aXplZEFjY2VzczogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLnVwZGF0ZVNv
b24oKTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvQnVpbGRib3RTdGF0
aWNBbmFseXplclF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3Lmpz
CShub25leGlzdGVudCkKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLUJ1aWxkYm90U3Rh
dGljQW5hbHl6ZXJRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgQnVpbGRib3RR
dWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1ZXMpOwotICAgIHRoaXMudXBkYXRlKCk7Ci19OwotCi1C
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90U3RhdGljQW5hbHl6ZXJR
dWV1ZVZpZXcpOwotCi1CdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3LnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogQnVpbGRib3RTdGF0aWNBbmFseXplclF1ZXVlVmlldywKLSAg
ICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTog
ZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgUXVldWVWaWV3LnByb3RvdHlwZS51cGRhdGUuY2Fs
bCh0aGlzKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAg
ICAgICBmdW5jdGlvbiBhcHBlbmRTdGF0aWNBbmFseXplclF1ZXVlU3RhdHVzKHF1ZXVlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICB2YXIgYXBwZW5kZWRTdGF0dXMgPSBmYWxzZTsKLQotICAgICAg
ICAgICAgdmFyIGxpbWl0ID0gMjsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcXVl
dWUuaXRlcmF0aW9ucy5sZW5ndGggJiYgbGltaXQgPiAwOyArK2kpIHsKLSAgICAgICAgICAgICAg
ICB2YXIgaXRlcmF0aW9uID0gcXVldWUuaXRlcmF0aW9uc1tpXTsKLSAgICAgICAgICAgICAgICBp
ZiAoIWl0ZXJhdGlvbi5sb2FkZWQgfHwgIWl0ZXJhdGlvbi5maW5pc2hlZCkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICAtLWxpbWl0OwotCi0gICAgICAg
ICAgICAgICAgdmFyIHdpbGxIYXZlQW5vdGhlclN0YXR1c0xpbmUgPSBpICsgMSA8IHF1ZXVlLml0
ZXJhdGlvbnMubGVuZ3RoICYmIGxpbWl0ID4gMCAmJiAhaXRlcmF0aW9uLnN1Y2Nlc3NmdWw7IC8v
IFRoaXMgaXMgbm90IDEwMCUgY29ycmVjdCwgYXMgdGhlIHJlbWFpbmluZyBpdGVyYXRpb25zIG1h
eSBub3QgYmUgZmluaXNoZWQgb3IgbG9hZGVkIHlldCwgYnV0IGNsb3NlIGVub3VnaC4KLSAgICAg
ICAgICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSB0aGlzLnJldmlzaW9uQ29udGVudEZvckl0
ZXJhdGlvbihpdGVyYXRpb24sIChpdGVyYXRpb24ucHJvZHVjdGl2ZSAmJiB3aWxsSGF2ZUFub3Ro
ZXJTdGF0dXNMaW5lKSA/IGl0ZXJhdGlvbi5wcmV2aW91c1Byb2R1Y3RpdmVJdGVyYXRpb24gOiBu
dWxsKTsKLQotICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRi
b3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAg
ICAgICAgICB2YXIgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5O
ZXV0cmFsOwotICAgICAgICAgICAgICAgIHZhciB0ZXh0OwotCi0gICAgICAgICAgICAgICAgdmFy
IGZhaWxlZFN0ZXAgPSBuZXcgQnVpbGRib3RUZXN0UmVzdWx0cyhpdGVyYXRpb24uX2ZpcnN0RmFp
bGVkU3RlcCk7Ci0gICAgICAgICAgICAgICAgdmFyIGlzc3VlQ291bnQgPSBmYWlsZWRTdGVwLmlz
c3VlQ291bnQ7Ci0KLSAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsK
LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdDb2xvciA9IFN0YXR1c0xpbmVWaWV3
LlN0YXR1cy5Hb29kOwotICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IDA7Ci0gICAgICAgICAg
ICAgICAgICAgIHRleHQgPSAibm8gaXNzdWVzIGZvdW5kIjsKLSAgICAgICAgICAgICAgICB9IGVs
c2UgaWYgKCFpdGVyYXRpb24ucHJvZHVjdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0
dXNMaW5lVmlld0NvbG9yID0gU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlcjsKLSAgICAgICAg
ICAgICAgICAgICAgdGV4dCA9IGl0ZXJhdGlvbi5fZmlyc3RGYWlsZWRTdGVwLm5hbWUgKyAiIGZh
aWxlZCI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVyYXRpb24uZmFpbGVkICYmIC9m
YWlsZWQgdG8gYnVpbGQvLnRlc3QoaXRlcmF0aW9uLnRleHQpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRp
b24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzTGluZVZpZXdDb2xvciA9
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5CYWQ7Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgPSAi
YnVpbGQgZmFpbGVkIjsKLSAgICAgICAgICAgICAgICAgICAgaXNzdWVDb3VudCA9IG51bGw7Ci0g
ICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0
dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgc3RhdHVzTGluZVZpZXdDb2xvciwgKHRleHQpID8g
dGV4dCA6ICJmb3VuZCAiICsgZmFpbGVkU3RlcC5pc3N1ZUNvdW50ICsgIiBpc3N1ZXMiLCBpc3N1
ZUNvdW50LCB1cmwpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxk
KHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7
Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAg
ICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwg
U3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWwsICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAg
ICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxl
LmNhbGwodGhpcywgdGhpcy5xdWV1ZXMsICdTdGF0aWMgQW5hbHl6ZXInLCBhcHBlbmRTdGF0aWNB
bmFseXplclF1ZXVlU3RhdHVzKTsKLSAgICB9Ci19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvQnVpbGRib3RUZXN0UmVzdWx0cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShub25leGlzdGVudCkKQEAgLTEs
MTg5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1CdWlsZGJvdFRlc3RSZXN1bHRzID0gZnVu
Y3Rpb24odGVzdFN0ZXAsIHVybCkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0gICAg
dGhpcy5VUkwgPSB1cmw7Ci0KLSAgICB0aGlzLl9wYXJzZVJlc3VsdHModGVzdFN0ZXApOwotfTsK
LQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhCdWlsZGJvdFRlc3RSZXN1bHRz
KTsKLQotQnVpbGRib3RUZXN0UmVzdWx0cy5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6
IEJ1aWxkYm90VGVzdFJlc3VsdHMsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlw
ZSwKLQotICAgIF9wYXJzZVJlc3VsdHM6IGZ1bmN0aW9uKHRlc3RTdGVwKQotICAgIHsKLSAgICAg
ICAgdGhpcy5uYW1lID0gdGVzdFN0ZXAubmFtZTsKLSAgICAgICAgdGhpcy5hbGxQYXNzZWQgPSBm
YWxzZTsKLSAgICAgICAgdGhpcy5lcnJvck9jY3VycmVkID0gZmFsc2U7Ci0gICAgICAgIHRoaXMu
dG9vTWFueUZhaWx1cmVzID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5mYWlsdXJlQ291bnQgPSAw
OwotICAgICAgICB0aGlzLmZsYWtleUNvdW50ID0gMDsKLSAgICAgICAgdGhpcy50b3RhbExlYWtD
b3VudCA9IDA7Ci0gICAgICAgIHRoaXMudW5pcXVlTGVha0NvdW50ID0gMDsKLSAgICAgICAgdGhp
cy5uZXdQYXNzZXNDb3VudCA9IDA7Ci0gICAgICAgIHRoaXMubWlzc2luZ0NvdW50ID0gMDsKLSAg
ICAgICAgdGhpcy5jcmFzaENvdW50ID0gMDsKLQotICAgICAgICBpZiAoIXRlc3RTdGVwLmNvbXBs
ZXRlKSB7Ci0gICAgICAgICAgICAvLyBUaGUgc3RlcCBuZXZlciBldmVuIHJhbiwgb3IgaGFzbid0
IGZpbmlzaGVkIHJ1bm5pbmcuCi0gICAgICAgICAgICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7Ci0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLmZpbmlzaGVkID0g
dHJ1ZTsKLQotICAgICAgICBpZiAoIXRlc3RTdGVwLnJlc3VsdHMgfHwgdGVzdFN0ZXAucmVzdWx0
cyA9PT0gQnVpbGRib3RJdGVyYXRpb24uU1VDQ0VTUyB8fCB0ZXN0U3RlcC5yZXN1bHRzID09PSBC
dWlsZGJvdEl0ZXJhdGlvbi5XQVJOSU5HUykgewotICAgICAgICAgICAgLy8gQWxsIHRlc3RzIHBh
c3NlZC4KLSAgICAgICAgICAgIHRoaXMuYWxsUGFzc2VkID0gdHJ1ZTsKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgvRXhpdGluZyBlYXJseS8udGVzdCh0ZXN0
U3RlcC5zdGF0ZV9zdHJpbmcpKQotICAgICAgICAgICAgdGhpcy50b29NYW55RmFpbHVyZXMgPSB0
cnVlOwotCi0gICAgICAgIGZ1bmN0aW9uIHJlc3VsdFN1bW1hcml6ZXIobWF0Y2hTdHJpbmcsIHN1
bSwgb3V0cHV0TGluZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy8gU2FtcGxlIG91dHB1dExp
bmU6ICI1MyBmYWlsdXJlcyAzNyBuZXcgcGFzc2VzIDEgY3Jhc2hlcyIKLSAgICAgICAgICAgIHZh
ciByZWdleCA9IG5ldyBSZWdFeHAoIihcXGQrKVxccyIgKyBtYXRjaFN0cmluZyk7Ci0gICAgICAg
ICAgICBtYXRjaCA9IHJlZ2V4LmV4ZWMob3V0cHV0TGluZSk7Ci0gICAgICAgICAgICBpZiAoIW1h
dGNoKSB7Ci0gICAgICAgICAgICAgICAgbWF0Y2ggPSAvXihcZCspXHMvLmV4ZWMob3V0cHV0TGlu
ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIW1hdGNoKQotICAgICAgICAgICAg
ICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICBpZiAoIW91dHB1dExpbmUuY29udGFpbnMobWF0
Y2hTdHJpbmcpKQotICAgICAgICAgICAgICAgIHJldHVybiBzdW07Ci0gICAgICAgICAgICBpZiAo
IXN1bSB8fCBzdW0gPT09IC0xKQotICAgICAgICAgICAgICAgIHN1bSA9IDA7Ci0gICAgICAgICAg
ICByZXR1cm4gc3VtICsgcGFyc2VJbnQobWF0Y2hbMV0sIDEwKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRoaXMuZmFpbHVyZUNvdW50ID0gcmVzdWx0U3VtbWFyaXplcignZmFpbCcsIG51bGwsIHRl
c3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMuZmxha2V5Q291bnQgPSByZXN1bHRT
dW1tYXJpemVyKCJmbGFrZSIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAg
IHRoaXMudG90YWxMZWFrQ291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJ0b3RhbCBsZWFrIiwgbnVs
bCwgdGVzdFN0ZXAuc3RhdGVfc3RyaW5nKTsKLSAgICAgICAgdGhpcy51bmlxdWVMZWFrQ291bnQg
PSByZXN1bHRTdW1tYXJpemVyKCJ1bmlxdWUgbGVhayIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0
cmluZyk7Ci0gICAgICAgIHRoaXMubmV3UGFzc2VzQ291bnQgPSByZXN1bHRTdW1tYXJpemVyKCJu
ZXcgcGFzcyIsIG51bGwsIHRlc3RTdGVwLnN0YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMubWlz
c2luZ0NvdW50ID0gcmVzdWx0U3VtbWFyaXplcigibWlzc2luZyIsIG51bGwsIHRlc3RTdGVwLnN0
YXRlX3N0cmluZyk7Ci0gICAgICAgIHRoaXMuY3Jhc2hDb3VudCA9IHJlc3VsdFN1bW1hcml6ZXIo
ImNyYXNoIiwgbnVsbCwgdGVzdFN0ZXAuc3RhdGVfc3RyaW5nKTsKLSAgICAgICAgdGhpcy5pc3N1
ZUNvdW50ID0gcmVzdWx0U3VtbWFyaXplcigiaXNzdWUiLCBudWxsLCB0ZXN0U3RlcC5zdGF0ZV9z
dHJpbmcpOwotCi0gICAgICAgIGlmICghdGhpcy5mYWlsdXJlQ291bnQgJiYgIXRoaXMuZmxha3lD
b3VudCAmJiAhdGhpcy50b3RhbExlYWtDb3VudCAmJiAhdGhpcy51bmlxdWVMZWFrQ291bnQgJiYg
IXRoaXMubmV3UGFzc2VzQ291bnQgJiYgIXRoaXMubWlzc2luZ0NvdW50KSB7Ci0gICAgICAgICAg
ICAvLyBUaGlzIHN0ZXAgZXhpdGVkIHdpdGggYSBub24temVybyBleGl0IHN0YXR1cywgYnV0IHdl
IGRpZG4ndCBmaW5kIGFueSBvdXRwdXQgYWJvdXQgdGhlIG51bWJlciBvZiBmYWlsZWQgdGVzdHMu
Ci0gICAgICAgICAgICAvLyBTb21ldGhpbmcgbXVzdCBoYXZlIGdvbmUgd3JvbmcgKGUuZy4sIHRp
bWVkIG91dCBhbmQgd2FzIGtpbGxlZCBieSBidWlsZGJvdCkuCi0gICAgICAgICAgICB0aGlzLmVy
cm9yT2NjdXJyZWQgPSB0cnVlOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIGFkZEZ1bGxMYXlv
dXRUZXN0UmVzdWx0czogZnVuY3Rpb24oZGF0YSkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMubmFtZSA9PT0gImxheW91dC10ZXN0Iik7Ci0KLSAgICAgICAgZnVuY3Rpb24gY29s
bGVjdFJlc3VsdHMoc3VidHJlZSwgcHJlZGljYXRlKQotICAgICAgICB7Ci0gICAgICAgICAgICAv
LyBSZXN1bHRzIG9iamVjdCBpcyBhIHRyaWU6Ci0gICAgICAgICAgICAvLyBkaXJlY3RvcnkKLSAg
ICAgICAgICAgIC8vICAgc3ViZGlyZWN0b3J5Ci0gICAgICAgICAgICAvLyAgICAgdGVzdDEuaHRt
bAotICAgICAgICAgICAgLy8gICAgICAgZXhwZWN0ZWQ6IlBBU1MiCi0gICAgICAgICAgICAvLyAg
ICAgICBhY3R1YWw6ICJJTUFHRSIKLSAgICAgICAgICAgIC8vICAgICAgIHJlcG9ydDogIlJFR1JF
U1NJT04iCi0gICAgICAgICAgICAvLyAgICAgdGVzdDIuaHRtbAotICAgICAgICAgICAgLy8gICAg
ICAgZXhwZWN0ZWQ6IkZBSUwiCi0gICAgICAgICAgICAvLyAgICAgICBhY3R1YWw6IlRFWFQiCi0K
LSAgICAgICAgICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICAgICAgICAgIGZvciAodmFyIGtleSBp
biBzdWJ0cmVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gc3VidHJlZVtrZXldOwot
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIp
OwotICAgICAgICAgICAgICAgIHZhciBpc0luZGl2aWR1YWxUZXN0ID0gdmFsdWUuaGFzT3duUHJv
cGVydHkoImFjdHVhbCIpICYmIHZhbHVlLmhhc093blByb3BlcnR5KCJleHBlY3RlZCIpOwotICAg
ICAgICAgICAgICAgIGlmIChpc0luZGl2aWR1YWxUZXN0KSB7Ci0gICAgICAgICAgICAgICAgICAg
IC8vIFBvc3NpYmxlIHZhbHVlcyBmb3IgYWN0dWFsIGFuZCBleHBlY3RlZCBrZXlzOiBQQVNTLCBG
QUlMLCBBVURJTywgSU1BR0UsIFRFWFQsIElNQUdFK1RFWFQsIFRJTUVPVVQsIENSQVNILCBNSVNT
SU5HLgotICAgICAgICAgICAgICAgICAgICAvLyBCb3RoIGFjdHVhbCBhbmQgZXhwZWN0ZWQgY2Fu
IGJlIHNwYWNlIHNlcGFyYXRlZCBsaXN0cy4gQWN0dWFsIGNvbnRhaW5zIHR3byB2YWx1ZXMgd2hl
biByZXRyeWluZyBhIGZhaWxlZCB0ZXN0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGdpdmVzIGEg
ZGlmZmVyZW50IHJlc3VsdCAocmV0cnlpbmcgbWF5IGJlIGRpc2FibGVkIGluIHRlc3RlciBjb25m
aWd1cmF0aW9uKS4KLSAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzIGZvciBy
ZXBvcnQga2V5ICh3aGVuIHByZXNlbnQpOiBSRUdSRVNTSU9OLCBNSVNTSU5HLCBGTEFLWS4KLQot
ICAgICAgICAgICAgICAgICAgICBpZiAocHJlZGljYXRlKHZhbHVlKSkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgdmFyIGl0ZW0gPSB7cGF0aDoga2V5fTsKLQotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcxODYpOiBDcmFzaCBsb2cgVVJMIHdpbGwgYmUgaW5jb3Jy
ZWN0IGlmIGNyYXNoIG9ubHkgaGFwcGVuZWQgb24gcmV0cnkgKGUuZy4gIlRFWFQgQ1JBU0giKS4K
LSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IHNob3VsZCBwb2ludCB0byByZXRyaWVzIHN1
YmRpcmVjdG9yeSwgYnV0IHRoZSBpbmZvcm1hdGlvbiBhYm91dCB3aGljaCBhdHRlbXB0IGZhaWxl
ZCBnZXRzIGxvc3QgaGVyZS4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3R1
YWwuY29udGFpbnMoIkNSQVNIIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5j
cmFzaCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuYWN0dWFsLmNv
bnRhaW5zKCJUSU1FT1VUIikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS50aW1l
b3V0ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgKGJ1ZyAxMjcx
ODYpOiBTaW1pbGFybHksIHdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBwcmVzZW50IHJlc3Vs
dHMgZm9yIHNvbWV0aGluZyBsaWtlICJUSU1FT1VUIFRFWFQiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gbm90IGV2ZW4gVUkgd2lzZS4gRm9yIG5vdywgb25seSBzaG93IGEgZGlmZiBsaW5r
IGlmIHRoZSBmaXJzdCBhdHRlbXB0IGhhcyB0aGUgZGlmZi4KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZS5hY3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiVEVYVCIpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaGFzX2RpZmYgPSB0cnVlOwotCi0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRSAoYnVnIDEyNzE4Nik6IEl0IGlzIHBhcnRpY3VsYXJs
eSB1bmZvcnR1bmF0ZSBmb3IgaW1hZ2UgZGlmZnMsIGJlY2F1c2Ugd2UgY3VycmVudGx5IG9ubHkg
Y2hlY2sgaW1hZ2UgcmVzdWx0cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb24gcmV0cnkg
KGV4Y2VwdCBmb3IgcmVmdGVzdHMpLCBzbyBtYW55IHRpbWVzLCB5b3Ugd2lsbCBzZWUgaW1hZ2Vz
IG9uIGJ1aWxkYm90IHBhZ2UsIGJ1dCBub3Qgb24gdGhlIGRhc2hib2FyZC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgd2F5IHRvIGRpc3BsYXkgZXhwZWN0ZWQgbWlz
bWF0Y2ggcmVmdGVzdCBmYWlsdXJlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1
ZS5hY3R1YWwuc3BsaXQoIiAiKVswXS5jb250YWlucygiSU1BR0UiKSAmJiB2YWx1ZS5yZWZ0ZXN0
X3R5cGUgIT0gIiE9IikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmhhc19pbWFn
ZV9kaWZmID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmhhc19z
dGRlcnIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5oYXNfc3RkZXJyID0gdHJ1
ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goaXRlbSk7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgICAgIHZhciBuZXN0ZWRUZXN0cyA9IGNvbGxlY3RSZXN1bHRzKHZhbHVlLCBwcmVkaWNhdGUp
OwotICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gbmVzdGVkVGVzdHMu
bGVuZ3RoOyBpIDwgZW5kOyArK2kpCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRUZXN0
c1tpXS5wYXRoID0ga2V5ICsgIi8iICsgbmVzdGVkVGVzdHNbaV0ucGF0aDsKLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChuZXN0ZWRUZXN0cyk7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAg
ICAgICB9Ci0KLSAgICAgICAgdGhpcy5oYXNQcmV0dHlQYXRjaCA9IGRhdGEuaGFzX3ByZXR0eV9w
YXRjaDsKLQotICAgICAgICB0aGlzLnJlZ3Jlc3Npb25zID0gY29sbGVjdFJlc3VsdHMoZGF0YS50
ZXN0cywgZnVuY3Rpb24oaW5mbykgeyByZXR1cm4gaW5mb1sicmVwb3J0Il0gPT09ICJSRUdSRVNT
SU9OIiB9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1fcmVncmVzc2lvbnMgPT09
IHRoaXMucmVncmVzc2lvbnMubGVuZ3RoKTsKLQotICAgICAgICB0aGlzLmZsYWt5VGVzdHMgPSBj
b2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihpbmZvKSB7IHJldHVybiBpbmZvWyJy
ZXBvcnQiXSA9PT0gIkZMQUtZIiB9KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YS5udW1f
Zmxha3kgPT09IHRoaXMuZmxha3lUZXN0cy5sZW5ndGgpOwotCi0gICAgICAgIHRoaXMudGVzdHNX
aXRoTWlzc2luZ1Jlc3VsdHMgPSBjb2xsZWN0UmVzdWx0cyhkYXRhLnRlc3RzLCBmdW5jdGlvbihp
bmZvKSB7IHJldHVybiBpbmZvWyJyZXBvcnQiXSA9PT0gIk1JU1NJTkciIH0pOwotICAgICAgICAv
LyBkYXRhLm51bV9taXNzaW5nIGlzIG5vdCBhbHdheXMgZXF1YWwgdG8gdGhlIHNpemUgb2YgdGVz
dHNXaXRoTWlzc2luZ1Jlc3VsdHMgYXJyYXksCi0gICAgICAgIC8vIGJlY2F1c2UgYnVpbGRib3Qg
Y291bnRzIHJlZ3Jlc3Npb25zIHRoYXQgaGFkIG1pc3NpbmcgcGl4ZWwgcmVzdWx0cyBvbiByZXRy
eSAoZS5nLiAiVEVYVCBNSVNTSU5HIikuCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRhdGEubnVt
X21pc3NpbmcgPj0gdGhpcy50ZXN0c1dpdGhNaXNzaW5nUmVzdWx0cy5sZW5ndGgpOwotICAgIH0s
Ci0KLSAgICBhZGRKYXZhU2NyaXB0Q29yZVRlc3RGYWlsdXJlczogZnVuY3Rpb24oZGF0YSkKLSAg
ICB7Ci0gICAgICAgIHRoaXMucmVncmVzc2lvbnMgPSBkYXRhLnN0cmVzc1Rlc3RGYWlsdXJlczsK
LSAgICB9LAotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVzdGVyUXVl
dWVWaWV3LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0J1aWxkYm90VGVz
dGVyUXVldWVWaWV3LmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDI2OSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0LCAyMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcgPSBm
dW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgQnVpbGRib3RRdWV1ZVZpZXcuY2FsbCh0aGlzLCBxdWV1
ZXMpOwotCi0gICAgdGhpcy5yZWxlYXNlUXVldWVzID0gdGhpcy5xdWV1ZXMuZmlsdGVyKGZ1bmN0
aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5kZWJ1ZyA9PT0gZmFsc2U7IH0pOwotICAgIHRoaXMu
ZGVidWdRdWV1ZXMgPSB0aGlzLnF1ZXVlcy5maWx0ZXIoZnVuY3Rpb24ocXVldWUpIHsgcmV0dXJu
IHF1ZXVlLmRlYnVnID09PSB0cnVlOyB9KTsKLQotICAgIHRoaXMudXBkYXRlKCk7Ci19OwotCi1C
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKEJ1aWxkYm90VGVzdGVyUXVldWVWaWV3
KTsKLQotQnVpbGRib3RUZXN0ZXJRdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVj
dG9yOiBCdWlsZGJvdFRlc3RlclF1ZXVlVmlldywKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90UXVl
dWVWaWV3LnByb3RvdHlwZSwKLQotICAgIHVwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgQnVpbGRib3RRdWV1ZVZpZXcucHJvdG90eXBlLnVwZGF0ZS5jYWxsKHRoaXMpOwotCi0gICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFw
cGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyhxdWV1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYg
KHF1ZXVlLmJ1aWxkYm90Lm5lZWRzQXV0aGVudGljYXRpb24gJiYgIXF1ZXVlLmJ1aWxkYm90Lmlz
QXV0aGVudGljYXRlZCkgewotICAgICAgICAgICAgICAgIHRoaXMuX2FwcGVuZFVuYXV0aG9yaXpl
ZExpbmVWaWV3KHF1ZXVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHRoaXMuX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50KHF1ZXVlLCB0
aGlzLl9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLmJpbmQodGhpcywgcXVldWUpKTsKLQotICAg
ICAgICAgICAgdmFyIGFwcGVuZGVkU3RhdHVzID0gZmFsc2U7Ci0KLSAgICAgICAgICAgIHZhciBs
aW1pdCA9IDI7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHF1ZXVlLml0ZXJhdGlv
bnMubGVuZ3RoICYmIGxpbWl0ID4gMDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGl0ZXJh
dGlvbiA9IHF1ZXVlLml0ZXJhdGlvbnNbaV07Ci0gICAgICAgICAgICAgICAgaWYgKCFpdGVyYXRp
b24ubG9hZGVkIHx8ICFpdGVyYXRpb24uZmluaXNoZWQpCi0gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwotCi0gICAgICAgICAgICAgICAgLS1saW1pdDsKLQotICAgICAgICAgICAgICAgIHZh
ciB3aWxsSGF2ZUFub3RoZXJTdGF0dXNMaW5lID0gaSArIDEgPCBxdWV1ZS5pdGVyYXRpb25zLmxl
bmd0aCAmJiBsaW1pdCA+IDAgJiYgIWl0ZXJhdGlvbi5zdWNjZXNzZnVsOyAvLyBUaGlzIGlzIG5v
dCAxMDAlIGNvcnJlY3QsIGFzIHRoZSByZW1haW5pbmcgaXRlcmF0aW9ucyBtYXkgbm90IGJlIGZp
bmlzaGVkIG9yIGxvYWRlZCB5ZXQsIGJ1dCBjbG9zZSBlbm91Z2guCi0gICAgICAgICAgICAgICAg
dmFyIG1lc3NhZ2VFbGVtZW50ID0gdGhpcy5yZXZpc2lvbkNvbnRlbnRGb3JJdGVyYXRpb24oaXRl
cmF0aW9uLCAoaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgd2lsbEhhdmVBbm90aGVyU3RhdHVzTGlu
ZSkgPyBpdGVyYXRpb24ucHJldmlvdXNQcm9kdWN0aXZlSXRlcmF0aW9uIDogbnVsbCk7Ci0KLSAg
ICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnN1Y2Nlc3NmdWwpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJ
dGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5l
dyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdv
b2QsICJhbGwgdGVzdHMgcGFzc2VkIiwgdW5kZWZpbmVkLCB1cmwpOwotICAgICAgICAgICAgICAg
ICAgICBsaW1pdCA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghaXRlcmF0aW9uLnBy
b2R1Y3RpdmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1
ZS5idWlsZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVu
dCwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5l
ZCwgdXJsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRUZXN0
U3RlcHMubGVuZ3RoID09PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNvbWV0aGluZyB3
cm9uZyBoYXBwZW5lZCwgYnV0IGl0IHdhcyBub3QgYSB0ZXN0IGZhaWx1cmUuCi0gICAgICAgICAg
ICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24ucXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJM
Rm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMg
PSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1
cy5EYW5nZXIsIGl0ZXJhdGlvbi50ZXh0LCB1bmRlZmluZWQsIHVybCk7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChxdWV1ZS5jcmFzaGVzT25seSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBBIGNyYXNoZXMtb25seSBxdWV1ZSBpcyBhIHF1ZXVlIHdoZXJlIHdlIGFyZSBvbmx5IGludGVy
ZXN0ZWQgaW4gY3Jhc2hlcywgZS5nLiBhIEd1YXJkTWFsbG9jIG9yIGFuIEFTYW4gb25lLgotICAg
ICAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHksIG9ubHkgbGF5b3V0IHRlc3RzIGFyZSBzdXBw
b3J0ZWQgaW4gc3VjaC4KLSAgICAgICAgICAgICAgICAgICAgdmFyIGxheW91dFRlc3RSZXN1bHRz
ID0gaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzOwotICAgICAgICAgICAgICAgICAgICBpZiAo
IWxheW91dFRlc3RSZXN1bHRzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXN0cyBk
aWQgbm90IHJ1bi4KLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBpdGVyYXRpb24u
cXVldWUuYnVpbGRib3QuYnVpbGRQYWdlVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbik7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3IFN0YXR1c0xpbmVWaWV3KG1lc3Nh
Z2VFbGVtZW50LCBTdGF0dXNMaW5lVmlldy5TdGF0dXMuRGFuZ2VyLCBpdGVyYXRpb24udGV4dCwg
dW5kZWZpbmVkLCB1cmwpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxheW91dFRl
c3RSZXN1bHRzLnRvb01hbnlGYWlsdXJlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLkJhZCwgImZhaWx1cmUgbGltaXQgZXhjZWVkZWQiLCB1bmRlZmluZWQsIGl0ZXJh
dGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVy
YXRpb24pKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0
dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0
UmVncmVzc2lvbnMuYmluZCh0aGlzKSwgaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChsYXlvdXRUZXN0UmVzdWx0cy5lcnJvck9jY3VycmVkKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICB2YXIgdXJsID0gaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmJ1aWxkUGFn
ZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgdmFy
IHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZp
ZXcuU3RhdHVzLkRhbmdlciwgaXRlcmF0aW9uLnRleHQsIHVuZGVmaW5lZCwgdXJsKTsKLSAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICghbGF5b3V0VGVzdFJlc3VsdHMuY3Jhc2hDb3VudCkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWls
ZGJvdC5idWlsZFBhZ2VVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQs
IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Hb29kLCAibm8gY3Jhc2hlcyBmb3VuZCIsIHVuZGVmaW5l
ZCwgdXJsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0ID0gMDsKLSAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzdGF0dXMgPSBu
ZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5C
YWQsIGxheW91dFRlc3RSZXN1bHRzLmNyYXNoQ291bnQgPT09IDEgPyAiY3Jhc2ggZm91bmQiIDog
ImNyYXNoZXMgZm91bmQiLCBsYXlvdXRUZXN0UmVzdWx0cy5jcmFzaENvdW50LCBpdGVyYXRpb24u
cXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0
YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jl
c3Npb25zLmJpbmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMubGVuZ3Ro
ID09PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBmYWlsZWRTdGVwID0gaXRlcmF0aW9u
LmZhaWxlZFRlc3RTdGVwc1swXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZhaWxlZFN0ZXAu
bmFtZSA9PT0gImxheW91dC10ZXN0IikgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0
YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcu
U3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVkU3RlcCks
IGZhaWxlZFN0ZXAudG9vTWFueUZhaWx1cmVzID8gZmFpbGVkU3RlcC5mYWlsdXJlQ291bnQgKyAi
XHVmZjBiIiA6IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUuYnVpbGRi
b3QubGF5b3V0VGVzdFJlc3VsdHNVUkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKSk7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBuZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVs
ZW1lbnQsIHRoaXMuX3ByZXNlbnRQb3BvdmVyRm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zLmJpbmQo
dGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoLyg/PS4q
dGVzdCkoPz0uKmpzYykvLnRlc3QoZmFpbGVkU3RlcC5uYW1lKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwg
U3RhdHVzTGluZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRp
b24oZmFpbGVkU3RlcCksIGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50LCBpdGVyYXRpb24ucXVldWUu
YnVpbGRib3QuamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb24oaXRlcmF0aW9u
LCBmYWlsZWRTdGVwLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVy
VHJhY2tlcihzdGF0dXMuc3RhdHVzQnViYmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJG
b3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucy5iaW5kKHRoaXMsIGZhaWxlZFN0ZXAubmFt
ZSksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmFpbGVkU3Rl
cC5uYW1lID09PSAiZGFzaGJvYXJkLXRlc3RzIikgewotICAgICAgICAgICAgICAgICAgICAgICAg
dmFyIHN0YXR1cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGlu
ZVZpZXcuU3RhdHVzLkJhZCwgdGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb24oZmFpbGVk
U3RlcCksIHVuZGVmaW5lZCwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmRhc2hib2FyZFRlc3RS
ZXN1bHRzVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3IFBvcG92ZXJUcmFja2VyKHN0YXR1cy5zdGF0dXNCdWJibGVFbGVtZW50LCB0aGlzLl9w
cmVzZW50UG9wb3ZlckZvckdlbmVyaWNUZXN0RmFpbHVyZXMuYmluZCh0aGlzKSwgaXRlcmF0aW9u
KTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXcobWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xp
bmVWaWV3LlN0YXR1cy5CYWQsIHRoaXMuX3Rlc3RTdGVwRmFpbHVyZURlc2NyaXB0aW9uKGZhaWxl
ZFN0ZXApLCBmYWlsZWRTdGVwLmZhaWx1cmVDb3VudCA/IGZhaWxlZFN0ZXAuZmFpbHVyZUNvdW50
IDogdW5kZWZpbmVkLCBmYWlsZWRTdGVwLlVSTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBu
ZXcgUG9wb3ZlclRyYWNrZXIoc3RhdHVzLnN0YXR1c0J1YmJsZUVsZW1lbnQsIHRoaXMuX3ByZXNl
bnRQb3BvdmVyRm9yR2VuZXJpY1Rlc3RGYWlsdXJlcy5iaW5kKHRoaXMpLCBpdGVyYXRpb24pOwot
ICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgdmFyIHVybCA9IGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5idWlsZFBhZ2VV
UkxGb3JJdGVyYXRpb24oaXRlcmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGZhaWx1
cmVEZXNjcmlwdGlvbnMgPSBpdGVyYXRpb24uZmFpbGVkVGVzdFN0ZXBzLm1hcChmdW5jdGlvbihm
YWlsZWRTdGVwKSB7IHJldHVybiB0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbldpdGhD
b3VudChmYWlsZWRTdGVwKSB9LCB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXR1
cyA9IG5ldyBTdGF0dXNMaW5lVmlldyhtZXNzYWdlRWxlbWVudCwgU3RhdHVzTGluZVZpZXcuU3Rh
dHVzLkJhZCwgZmFpbHVyZURlc2NyaXB0aW9ucy5qb2luKCIsICIpLCB1bmRlZmluZWQsIHVybCk7
Ci0gICAgICAgICAgICAgICAgICAgIG5ldyBQb3BvdmVyVHJhY2tlcihzdGF0dXMuc3RhdHVzQnVi
YmxlRWxlbWVudCwgdGhpcy5fcHJlc2VudFBvcG92ZXJGb3JHZW5lcmljVGVzdEZhaWx1cmVzLmJp
bmQodGhpcyksIGl0ZXJhdGlvbik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHN0YXR1cy5lbGVtZW50KTsKLSAgICAgICAgICAg
ICAgICBhcHBlbmRlZFN0YXR1cyA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg
IGlmICghYXBwZW5kZWRTdGF0dXMpIHsKLSAgICAgICAgICAgICAgICB2YXIgc3RhdHVzID0gbmV3
IFN0YXR1c0xpbmVWaWV3KCJ1bmtub3duIiwgU3RhdHVzTGluZVZpZXcuU3RhdHVzLk5ldXRyYWws
ICJsYXN0IHBhc3NpbmcgYnVpbGQiKTsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBw
ZW5kQ2hpbGQoc3RhdHVzLmVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgdGhpcy5hcHBlbmRCdWlsZFN0eWxlLmNhbGwodGhpcywgdGhpcy5yZWxlYXNlUXVldWVz
LCAiUmVsZWFzZSIsIGFwcGVuZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuYXBw
ZW5kQnVpbGRTdHlsZS5jYWxsKHRoaXMsIHRoaXMuZGVidWdRdWV1ZXMsICJEZWJ1ZyIsIGFwcGVu
ZEJ1aWxkZXJRdWV1ZVN0YXR1cyk7Ci0gICAgfSwKLQotICAgIF9wb3BvdmVyQ29udGVudEZvckxh
eW91dFRlc3RSZWdyZXNzaW9uczogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAg
dmFyIGhhc1Rlc3RIaXN0b3J5ID0gdHlwZW9mIHRlc3RIaXN0b3J5ICE9PSAidW5kZWZpbmVkIjsK
LQotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAg
ICAgICAgdGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRl
bnQsICJsYXlvdXQgdGVzdCBmYWlsdXJlcyIpOwotICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Q
b3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGlmICghaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1
bHRzLnJlZ3Jlc3Npb25zKSB7Ci0gICAgICAgICAgICB2YXIgbWVzc2FnZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgbWVzc2FnZS5jbGFzc05hbWUgPSAibG9h
ZGluZy1mYWlsdXJlIjsKLSAgICAgICAgICAgIG1lc3NhZ2UudGV4dENvbnRlbnQgPSAiVGVzdCBy
ZXN1bHRzIGNvdWxkblx1MjAxOXQgYmUgbG9hZGVkIjsKLSAgICAgICAgICAgIGNvbnRlbnQuYXBw
ZW5kQ2hpbGQobWVzc2FnZSk7Ci0gICAgICAgICAgICByZXR1cm4gY29udGVudDsKLSAgICAgICAg
fQotCi0gICAgICAgIGZ1bmN0aW9uIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCBjbGFz
c05hbWUsIHRleHQsIHVybCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGxpbmtFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpOwotICAgICAgICAgICAgbGlua0VsZW1lbnQu
Y2xhc3NOYW1lID0gY2xhc3NOYW1lOwotICAgICAgICAgICAgbGlua0VsZW1lbnQudGV4dENvbnRl
bnQgPSB0ZXh0OwotICAgICAgICAgICAgbGlua0VsZW1lbnQuaHJlZiA9IHVybDsKLSAgICAgICAg
ICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAgICAgICAgcm93RWxlbWVu
dC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlv
biBhZGRGYWlsdXJlSW5mb1RleHQocm93RWxlbWVudCwgY2xhc3NOYW1lLCB0ZXh0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7Ci0gICAgICAgICAgICBzcGFuRWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc05hbWU7
Ci0gICAgICAgICAgICBzcGFuRWxlbWVudC50ZXh0Q29udGVudCA9IHRleHQ7Ci0gICAgICAgICAg
ICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHZhciBzb3J0ZWRSZWdyZXNzaW9ucyA9IGl0ZXJhdGlvbi5sYXlvdXRUZXN0UmVzdWx0cy5y
ZWdyZXNzaW9ucy5zbGljZSgpLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gKGEucGF0aCA9
PT0gYi5wYXRoKSA/IDAgOiAoYS5wYXRoID4gYi5wYXRoKSA/IDEgOiAtMTsgfSk7Ci0KLSAgICAg
ICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IHNvcnRlZFJlZ3Jlc3Npb25zLmxlbmd0aDsgaSAhPSBl
bmQ7ICsraSkgewotICAgICAgICAgICAgdmFyIHRlc3QgPSBzb3J0ZWRSZWdyZXNzaW9uc1tpXTsK
LQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbi5xdWV1ZS5jcmFzaGVzT25seSAmJiAhdGVzdC5j
cmFzaCAmJiAhaXRlcmF0aW9uLmxheW91dFRlc3RSZXN1bHRzLnRvb01hbnlGYWlsdXJlcykKLSAg
ICAgICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICAgICAgdmFyIHJvd0VsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLQotICAgICAgICAgICAgdmFyIHRlc3RQYXRo
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRl
c3RQYXRoRWxlbWVudC5jbGFzc05hbWUgPSAidGVzdC1wYXRoIjsKLSAgICAgICAgICAgIHRlc3RQ
YXRoRWxlbWVudC50ZXh0Q29udGVudCA9IHRlc3QucGF0aDsKLSAgICAgICAgICAgIHJvd0VsZW1l
bnQuYXBwZW5kQ2hpbGQodGVzdFBhdGhFbGVtZW50KTsKLQotICAgICAgICAgICAgaWYgKHRlc3Qu
Y3Jhc2gpCi0gICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJm
YWlsdXJlLWtpbmQtaW5kaWNhdG9yIiwgImNyYXNoIiwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90
LmxheW91dFRlc3RDcmFzaExvZ1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0aCkp
OwotCi0gICAgICAgICAgICBpZiAodGVzdC50aW1lb3V0KQotICAgICAgICAgICAgICAgIGFkZEZh
aWx1cmVJbmZvVGV4dChyb3dFbGVtZW50LCAiZmFpbHVyZS1raW5kLWluZGljYXRvciIsICJ0aW1l
b3V0Iik7Ci0KLSAgICAgICAgICAgIGlmICh0ZXN0Lmhhc19kaWZmKSB7Ci0gICAgICAgICAgICAg
ICAgYWRkRmFpbHVyZUluZm9MaW5rKHJvd0VsZW1lbnQsICJhZGRpdGlvbmFsLWxpbmsiLCAiZGlm
ZiIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0RGlmZlVSTEZvckl0ZXJhdGlv
bihpdGVyYXRpb24sIHRlc3QucGF0aCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKGl0ZXJhdGlv
bi5oYXNQcmV0dHlQYXRjaCkKLSAgICAgICAgICAgICAgICAgICAgYWRkRmFpbHVyZUluZm9MaW5r
KHJvd0VsZW1lbnQsICJhZGRpdGlvbmFsLWxpbmsiLCAicHJldHR5XHhhMGRpZmYiLCBpdGVyYXRp
b24ucXVldWUuYnVpbGRib3QubGF5b3V0VGVzdFByZXR0eURpZmZVUkxGb3JJdGVyYXRpb24oaXRl
cmF0aW9uLCB0ZXN0LnBhdGgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHRl
c3QuaGFzX2ltYWdlX2RpZmYpIHsKLSAgICAgICAgICAgICAgICBhZGRGYWlsdXJlSW5mb0xpbmso
cm93RWxlbWVudCwgImFkZGl0aW9uYWwtbGluayIsICJpbWFnZXMiLCBpdGVyYXRpb24ucXVldWUu
YnVpbGRib3QubGF5b3V0VGVzdEltYWdlc1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3Qu
cGF0aCkpOwotICAgICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCAi
YWRkaXRpb25hbC1saW5rIiwgImltYWdlXHhhMGRpZmYiLCBpdGVyYXRpb24ucXVldWUuYnVpbGRi
b3QubGF5b3V0VGVzdEltYWdlRGlmZlVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24sIHRlc3QucGF0
aCkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAodGVzdC5oYXNfc3RkZXJyKQot
ICAgICAgICAgICAgICAgIGFkZEZhaWx1cmVJbmZvTGluayhyb3dFbGVtZW50LCAiYWRkaXRpb25h
bC1saW5rIiwgInN0ZGVyciIsIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0U3Rk
ZXJyVVJMRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgdGVzdC5wYXRoKSk7Ci0KLSAgICAgICAgICAg
IGlmIChoYXNUZXN0SGlzdG9yeSkKLSAgICAgICAgICAgICAgICBhZGRGYWlsdXJlSW5mb0xpbmso
cm93RWxlbWVudCwgInRlc3QtaGlzdG9yeS1saW5rIiwgImhpc3RvcnkiLCB0ZXN0SGlzdG9yeS5o
aXN0b3J5UGFnZVVSTEZvclRlc3QodGVzdC5wYXRoKSk7Ci0KLSAgICAgICAgICAgIGNvbnRlbnQu
YXBwZW5kQ2hpbGQocm93RWxlbWVudCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb250ZW50Lm9u
Y29weSA9IHRoaXMuX29uUG9wb3ZlckNvcHk7Ci0gICAgICAgIHJldHVybiBjb250ZW50OwotICAg
IH0sCi0KLSAgICBfcHJlc2VudFBvcG92ZXJGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnM6IGZ1bmN0
aW9uKGVsZW1lbnQsIHBvcG92ZXIsIGl0ZXJhdGlvbikKLSAgICB7Ci0gICAgICAgIGlmIChpdGVy
YXRpb24ubGF5b3V0VGVzdFJlc3VsdHMucmVncmVzc2lvbnMpCi0gICAgICAgICAgICB2YXIgY29u
dGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50Rm9yTGF5b3V0VGVzdFJlZ3Jlc3Npb25zKGl0ZXJh
dGlvbik7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgdmFyIGNvbnRlbnQgPSB0aGlzLl9j
cmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgImxheW91dCB0ZXN0IGZhaWx1cmVzIik7
Ci0KLSAgICAgICAgICAgIGl0ZXJhdGlvbi5sb2FkTGF5b3V0VGVzdFJlc3VsdHMoZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRl
bnRGb3JMYXlvdXRUZXN0UmVncmVzc2lvbnMoaXRlcmF0aW9uKTsKLSAgICAgICAgICAgIH0uYmlu
ZCh0aGlzKSk7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5y
ZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAg
ICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChy
ZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ks
IERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0sCi0KLSAgICBfcHJlc2VudFBvcG92ZXJGb3JHZW5l
cmljVGVzdEZhaWx1cmVzOiBmdW5jdGlvbihlbGVtZW50LCBwb3BvdmVyLCBpdGVyYXRpb24pCi0g
ICAgewotICAgICAgICBmdW5jdGlvbiBhZGRSZXN1bHRLaW5kKG1lc3NhZ2UsIHVybCkgewotICAg
ICAgICAgICAgdmFyIGxpbmUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAg
ICAgICBsaW5lLmNsYXNzTmFtZSA9ICJmYWlsaW5nLXRlc3Qta2luZC1zdW1tYXJ5IjsKLSAgICAg
ICAgICAgIGxpbmUuaHJlZiA9IHVybDsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRlbnQgPSBt
ZXNzYWdlOwotICAgICAgICAgICAgbGluZS50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICAgICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQobGluZSk7ICAgICAgICAgICAgCi0gICAgICAgIH0KLQotICAg
ICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAg
ICBjb250ZW50LmNsYXNzTmFtZSA9ICJ0ZXN0LXJlc3VsdHMtcG9wb3ZlciI7Ci0KLSAgICAgICAg
dGhpcy5fYWRkSXRlcmF0aW9uSGVhZGluZ1RvUG9wb3ZlcihpdGVyYXRpb24sIGNvbnRlbnQpOwot
ICAgICAgICB0aGlzLl9hZGREaXZpZGVyVG9Qb3BvdmVyKGNvbnRlbnQpOwotCi0gICAgICAgIGl0
ZXJhdGlvbi5mYWlsZWRUZXN0U3RlcHMuZm9yRWFjaChmdW5jdGlvbihmYWlsZWRTdGVwKSB7Ci0g
ICAgICAgICAgICBpZiAoZmFpbGVkU3RlcC5uYW1lID09PSAibGF5b3V0LXRlc3QiKQotICAgICAg
ICAgICAgICAgIGFkZFJlc3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25X
aXRoQ291bnQoZmFpbGVkU3RlcCksIGl0ZXJhdGlvbi5xdWV1ZS5idWlsZGJvdC5sYXlvdXRUZXN0
UmVzdWx0c1VSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGZhaWxlZFN0ZXAubmFtZSA9PT0gImRhc2hib2FyZC10ZXN0cyIpCi0gICAgICAgICAgICAgICAg
YWRkUmVzdWx0S2luZCh0aGlzLl90ZXN0U3RlcEZhaWx1cmVEZXNjcmlwdGlvbihmYWlsZWRTdGVw
KSwgaXRlcmF0aW9uLnF1ZXVlLmJ1aWxkYm90LmRhc2hib2FyZFRlc3RSZXN1bHRzVVJMRm9ySXRl
cmF0aW9uKGl0ZXJhdGlvbikpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFk
ZFJlc3VsdEtpbmQodGhpcy5fdGVzdFN0ZXBGYWlsdXJlRGVzY3JpcHRpb25XaXRoQ291bnQoZmFp
bGVkU3RlcCksIGZhaWxlZFN0ZXAuVVJMKTsKLSAgICAgICAgfSwgdGhpcyk7Ci0KLSAgICAgICAg
dmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudCA9IGNvbnRlbnQ7
Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9Z
LCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWCwgRGFz
aGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX07
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvZGFzaGJvYXJkL1NjcmlwdHMvRGFzaGJvYXJkLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9EYXNoYm9hcmQuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw2MCAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotRGFzaGJvYXJkID0gewotICAgIFBsYXRmb3JtOiB7Ci0gICAg
ICAgIG1hY09TQmlnU3VyOiB7IG5hbWU6ICJtYWNvcy1iaWdzdXIiLCByZWFkYWJsZU5hbWU6ICJt
YWNPUyBCaWcgU3VyIiwgb3JkZXI6IDEgfSwKLSAgICAgICAgbWFjT1NDYXRhbGluYTogeyBuYW1l
OiAibWFjb3MtY2F0YWxpbmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBDYXRhbGluYSIsIG9yZGVy
OiAyIH0sCi0gICAgICAgIG1hY09TTW9qYXZlOiB7IG5hbWU6ICJtYWNvcy1tb2phdmUiLCByZWFk
YWJsZU5hbWU6ICJtYWNPUyBNb2phdmUiLCBvcmRlcjogMyB9LAotICAgICAgICBtYWNPU0hpZ2hT
aWVycmE6IHsgbmFtZTogIm1hY29zLWhpZ2hzaWVycmEiLCByZWFkYWJsZU5hbWU6ICJtYWNPUyBI
aWdoIFNpZXJyYSIsIG9yZGVyOiA0IH0sCi0gICAgICAgIGlPUzE0U2ltdWxhdG9yOiB7IG5hbWU6
ICJpb3Mtc2ltdWxhdG9yLTE0IiwgcmVhZGFibGVOYW1lOiAiaU9TIDE0IFNpbXVsYXRvciIsIG9y
ZGVyOiAyMCB9LAotICAgICAgICBpT1MxNERldmljZTogeyBuYW1lOiAiaW9zLTE0IiwgcmVhZGFi
bGVOYW1lOiAiaU9TIDE0Iiwgb3JkZXI6IDI1IH0sCi0gICAgICAgIHR2T1MxNFNpbXVsYXRvcjog
eyBuYW1lOiAidHZvcy1zaW11bGF0b3ItMTQiLCByZWFkYWJsZU5hbWU6ICJUdk9TIFNpbXVsYXRv
ciAxNCIsIG9yZGVyOiAyNiB9LAotICAgICAgICB0dk9TMTREZXZpY2U6IHsgbmFtZTogInR2b3Mt
MTQiLCByZWFkYWJsZU5hbWU6ICJUdk9TIDE0Iiwgb3JkZXI6IDI3IH0sCi0gICAgICAgIHdhdGNo
T1M3U2ltdWxhdG9yOiB7IG5hbWU6ICJ3YXRjaG9zLXNpbXVsYXRvci03IiwgcmVhZGFibGVOYW1l
OiAiV2F0Y2hPUyBTaW11bGF0b3IgNyIsIG9yZGVyOiAyOCB9LAotICAgICAgICB3YXRjaE9TN0Rl
dmljZTogeyBuYW1lOiAid2F0Y2hvcy03IiwgcmVhZGFibGVOYW1lOiAiV2F0Y2hPUyA3Iiwgb3Jk
ZXI6IDI5IH0sCi0gICAgICAgIFdpbmRvd3MxMDogeyBuYW1lOiAid2luZG93cy0xMCIsIHJlYWRh
YmxlTmFtZTogIldpbmRvd3MgMTAiLCBvcmRlcjogMzAgfSwKLSAgICAgICAgV2luQ2Fpcm86IHsg
bmFtZTogIndpbmNhaXJvLXdpbmRvd3MtMTAiLCByZWFkYWJsZU5hbWU6ICJXaW5DYWlybyIsIG9y
ZGVyOiA1MCB9LAotICAgICAgICBMaW51eFdQRTogeyBuYW1lIDogImxpbnV4LXdwZSIsIHJlYWRh
YmxlTmFtZTogIkxpbnV4IFdQRSIsIG9yZGVyOiA5MCB9LAotICAgICAgICBMaW51eEdUSzogeyBu
YW1lIDogImxpbnV4LWd0ayIsIHJlYWRhYmxlTmFtZTogIkxpbnV4IEdUSyIsIG9yZGVyOiA5MSB9
LAotICAgICAgICBMaW51eEpTQ09ubHk6IHsgbmFtZSA6ICJsaW51eC1qc2Nvbmx5IiwgcmVhZGFi
bGVOYW1lOiAiTGludXggSlNDT25seSIsIG9yZGVyOiA5MiB9LAotICAgIH0sCi0gICAgQnJhbmNo
OiB7fSwKLSAgICBSZXBvc2l0b3J5OiB7Ci0gICAgICAgIE9wZW5Tb3VyY2U6IHsgbmFtZTogIm9w
ZW5Tb3VyY2UiLCBpc1NWTjogdHJ1ZSwgb3JkZXI6IDAgfSwKLSAgICB9LAotICAgIGdldCBzb3J0
ZWRQbGF0Zm9ybXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMp
Ci0gICAgICAgICAgICB0aGlzLl9zb3J0ZWRQbGF0Zm9ybXMgPSBzb3J0RGljdGlvbmFyaWVzQnlP
cmRlcihEYXNoYm9hcmQuUGxhdGZvcm0pOwotICAgICAgICByZXR1cm4gdGhpcy5fc29ydGVkUGxh
dGZvcm1zOwotICAgIH0sCi0gICAgZ2V0IHNvcnRlZFJlcG9zaXRvcmllcygpCi0gICAgewotICAg
ICAgICBpZiAoIXRoaXMuX3NvcnRlZFJlcG9zaXRvcmllcykKLSAgICAgICAgICAgIHRoaXMuX3Nv
cnRlZFJlcG9zaXRvcmllcyA9IHNvcnREaWN0aW9uYXJpZXNCeU9yZGVyKERhc2hib2FyZC5SZXBv
c2l0b3J5KTsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvcnRlZFJlcG9zaXRvcmllczsKLSAgICB9
LAotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0Rhc2hib2Fy
ZC5qcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0
aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlw
ZQojIyAtMSArMCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVy
dHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5LmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0dlb21ldHJ5LmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9HZW9tZXRyeS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDIyMyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotRGFzaGJvYXJkLlBvaW50ID0gZnVuY3Rpb24oeCwgeSkKLXsK
LSAgICB0aGlzLnggPSB4IHx8IDA7Ci0gICAgdGhpcy55ID0geSB8fCAwOwotfTsKLQotRGFzaGJv
YXJkLlBvaW50LnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogRGFzaGJvYXJkLlBvaW50
LAotCi0gICAgdG9TdHJpbmcgOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIkRh
c2hib2FyZC5Qb2ludFsiICsgdGhpcy54ICsgIiwiICsgdGhpcy55ICsgIl0iOwotICAgIH0sCi0K
LSAgICBjb3B5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2Fy
ZC5Qb2ludCh0aGlzLngsIHRoaXMueSk7Ci0gICAgfSwKLQotICAgIGVxdWFsczogZnVuY3Rpb24o
YW5vdGhlclBvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLnggPT09IGFub3RoZXJQ
b2ludC54ICYmIHRoaXMueSA9PT0gYW5vdGhlclBvaW50LnkpOwotICAgIH0KLX07Ci0KLURhc2hi
b2FyZC5TaXplID0gZnVuY3Rpb24od2lkdGgsIGhlaWdodCkKLXsKLSAgICB0aGlzLndpZHRoID0g
d2lkdGggfHwgMDsKLSAgICB0aGlzLmhlaWdodCA9IGhlaWdodCB8fCAwOwotfTsKLQotRGFzaGJv
YXJkLlNpemUucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9hcmQuU2l6ZSwK
LQotICAgIHRvU3RyaW5nOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIkRhc2hi
b2FyZC5TaXplWyIgKyB0aGlzLndpZHRoICsgIiwiICsgdGhpcy5oZWlnaHQgKyAiXSI7Ci0gICAg
fSwKLQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRGFz
aGJvYXJkLlNpemUodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOwotICAgIH0sCi0KLSAgICBlcXVh
bHM6IGZ1bmN0aW9uKGFub3RoZXJTaXplKQotICAgIHsKLSAgICAgICAgcmV0dXJuICh0aGlzLndp
ZHRoID09PSBhbm90aGVyU2l6ZS53aWR0aCAmJiB0aGlzLmhlaWdodCA9PT0gYW5vdGhlclNpemUu
aGVpZ2h0KTsKLSAgICB9Ci19OwotCi1EYXNoYm9hcmQuU2l6ZS5aRVJPX1NJWkUgPSBuZXcgRGFz
aGJvYXJkLlNpemUoMCwgMCk7Ci0KLQotRGFzaGJvYXJkLlJlY3QgPSBmdW5jdGlvbih4LCB5LCB3
aWR0aCwgaGVpZ2h0KQotewotICAgIHRoaXMub3JpZ2luID0gbmV3IERhc2hib2FyZC5Qb2ludCh4
IHx8IDAsIHkgfHwgMCk7Ci0gICAgdGhpcy5zaXplID0gbmV3IERhc2hib2FyZC5TaXplKHdpZHRo
IHx8IDAsIGhlaWdodCB8fCAwKTsKLX07Ci0KLURhc2hib2FyZC5SZWN0LnJlY3RGcm9tQ2xpZW50
UmVjdCA9IGZ1bmN0aW9uKGNsaWVudFJlY3QpCi17Ci0gICAgcmV0dXJuIG5ldyBEYXNoYm9hcmQu
UmVjdChjbGllbnRSZWN0LmxlZnQsIGNsaWVudFJlY3QudG9wLCBjbGllbnRSZWN0LndpZHRoLCBj
bGllbnRSZWN0LmhlaWdodCk7Ci19OwotCi1EYXNoYm9hcmQuUmVjdC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IERhc2hib2FyZC5SZWN0LAotCi0gICAgdG9TdHJpbmc6IGZ1bmN0aW9u
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAiRGFzaGJvYXJkLlJlY3RbIiArIFt0aGlzLm9yaWdp
bi54LCB0aGlzLm9yaWdpbi55LCB0aGlzLnNpemUud2lkdGgsIHRoaXMuc2l6ZS5oZWlnaHRdLmpv
aW4oIiwgIikgKyAiXSI7Ci0gICAgfSwKLQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgRGFzaGJvYXJkLlJlY3QodGhpcy5vcmlnaW4ueCwgdGhpcy5vcmln
aW4ueSwgdGhpcy5zaXplLndpZHRoLCB0aGlzLnNpemUuaGVpZ2h0KTsKLSAgICB9LAotCi0gICAg
ZXF1YWxzOiBmdW5jdGlvbihhbm90aGVyUmVjdCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAodGhp
cy5vcmlnaW4uZXF1YWxzKGFub3RoZXJSZWN0Lm9yaWdpbikgJiYgdGhpcy5zaXplLmVxdWFscyhh
bm90aGVyUmVjdC5zaXplKSk7Ci0gICAgfSwKLQotICAgIGluc2V0OiBmdW5jdGlvbihpbnNldHMp
Ci0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5SZWN0KAotICAgICAgICAgICAg
dGhpcy5vcmlnaW4ueCArIGluc2V0cy5sZWZ0LAotICAgICAgICAgICAgdGhpcy5vcmlnaW4ueSAr
IGluc2V0cy50b3AsCi0gICAgICAgICAgICB0aGlzLnNpemUud2lkdGggLSBpbnNldHMubGVmdCAt
IGluc2V0cy5yaWdodCwKLSAgICAgICAgICAgIHRoaXMuc2l6ZS5oZWlnaHQgLSBpbnNldHMudG9w
IC0gaW5zZXRzLmJvdHRvbQotICAgICAgICApOwotICAgIH0sCi0KLSAgICBwYWQ6IGZ1bmN0aW9u
KHBhZGRpbmcpCi0gICAgewotICAgICAgICByZXR1cm4gbmV3IERhc2hib2FyZC5SZWN0KAotICAg
ICAgICAgICAgdGhpcy5vcmlnaW4ueCAtIHBhZGRpbmcsCi0gICAgICAgICAgICB0aGlzLm9yaWdp
bi55IC0gcGFkZGluZywKLSAgICAgICAgICAgIHRoaXMuc2l6ZS53aWR0aCArIHBhZGRpbmcgKiAy
LAotICAgICAgICAgICAgdGhpcy5zaXplLmhlaWdodCArIHBhZGRpbmcgKiAyCi0gICAgICAgICk7
Ci0gICAgfSwKLQotICAgIG1pblg6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0
aGlzLm9yaWdpbi54OwotICAgIH0sCi0KLSAgICBtaW5ZOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5vcmlnaW4ueTsKLSAgICB9LAotCi0gICAgbWlkWDogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luLnggKyAodGhpcy5zaXplLndpZHRo
IC8gMik7Ci0gICAgfSwKLQotICAgIG1pZFk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLm9yaWdpbi55ICsgKHRoaXMuc2l6ZS5oZWlnaHQgLyAyKTsKLSAgICB9LAotCi0g
ICAgbWF4WDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMub3JpZ2luLngg
KyB0aGlzLnNpemUud2lkdGg7Ci0gICAgfSwKLQotICAgIG1heFk6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLm9yaWdpbi55ICsgdGhpcy5zaXplLmhlaWdodDsKLSAgICB9
LAotCi0gICAgaW50ZXJzZWN0aW9uV2l0aFJlY3Q6IGZ1bmN0aW9uKHJlY3QpCi0gICAgewotICAg
ICAgICB2YXIgeDEgPSBNYXRoLm1heCh0aGlzLm1pblgoKSwgcmVjdC5taW5YKCkpOwotICAgICAg
ICB2YXIgeDIgPSBNYXRoLm1pbih0aGlzLm1heFgoKSwgcmVjdC5tYXhYKCkpOwotICAgICAgICBp
ZiAoeDEgPiB4MikKLSAgICAgICAgICAgIHJldHVybiBEYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1Q7
Ci0gICAgICAgIHZhciBpbnRlcnNlY3Rpb24gPSBuZXcgRGFzaGJvYXJkLlJlY3Q7Ci0gICAgICAg
IGludGVyc2VjdGlvbi5vcmlnaW4ueCA9IHgxOwotICAgICAgICBpbnRlcnNlY3Rpb24uc2l6ZS53
aWR0aCA9IHgyIC0geDE7Ci0gICAgICAgIHZhciB5MSA9IE1hdGgubWF4KHRoaXMubWluWSgpLCBy
ZWN0Lm1pblkoKSk7Ci0gICAgICAgIHZhciB5MiA9IE1hdGgubWluKHRoaXMubWF4WSgpLCByZWN0
Lm1heFkoKSk7Ci0gICAgICAgIGlmICh5MSA+IHkyKQotICAgICAgICAgICAgcmV0dXJuIERhc2hi
b2FyZC5SZWN0LlpFUk9fUkVDVDsKLSAgICAgICAgaW50ZXJzZWN0aW9uLm9yaWdpbi55ID0geTE7
Ci0gICAgICAgIGludGVyc2VjdGlvbi5zaXplLmhlaWdodCA9IHkyIC0geTE7Ci0gICAgICAgIHJl
dHVybiBpbnRlcnNlY3Rpb247Ci0gICAgfSwKLQotICAgIGNvbnRhaW5zUG9pbnQ6IGZ1bmN0aW9u
KHBvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHBvaW50LnggPj0gdGhpcy5taW5YKCkgJiYg
cG9pbnQueCA8PSB0aGlzLm1heFgoKQotICAgICAgICAgICAgJiYgcG9pbnQueSA+PSB0aGlzLm1p
blkoKSAmJiBwb2ludC55IDw9IHRoaXMubWF4WSgpOwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5S
ZWN0LlpFUk9fUkVDVCA9IG5ldyBEYXNoYm9hcmQuUmVjdCgwLCAwLCAwLCAwKTsKLQotCi1EYXNo
Ym9hcmQuRWRnZUluc2V0cyA9IGZ1bmN0aW9uKHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCkKLXsK
LSAgICBjb25zb2xlLmFzc2VydChhcmd1bWVudHMubGVuZ3RoID09PSAxIHx8IGFyZ3VtZW50cy5s
ZW5ndGggPT09IDQpOwotCi0gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEpIHsKLSAgICAg
ICAgdGhpcy50b3AgPSB0b3A7Ci0gICAgICAgIHRoaXMucmlnaHQgPSB0b3A7Ci0gICAgICAgIHRo
aXMuYm90dG9tID0gdG9wOwotICAgICAgICB0aGlzLmxlZnQgPSB0b3A7Ci0gICAgfSBlbHNlIGlm
IChhcmd1bWVudHMubGVuZ3RoID09PSA0KSB7Ci0gICAgICAgIHRoaXMudG9wID0gdG9wOwotICAg
ICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7Ci0gICAgICAgIHRoaXMuYm90dG9tID0gYm90dG9tOwot
ICAgICAgICB0aGlzLmxlZnQgPSBsZWZ0OwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5FZGdlSW5z
ZXRzLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogRGFzaGJvYXJkLkVkZ2VJbnNldHMs
Ci0KLSAgICBlcXVhbHM6IGZ1bmN0aW9uKGFub3RoZXJJbnNldCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAodGhpcy50b3AgPT09IGFub3RoZXJJbnNldC50b3AgJiYgdGhpcy5yaWdodCA9PT0gYW5v
dGhlckluc2V0LnJpZ2h0ICYmCi0gICAgICAgICAgICAgICAgdGhpcy5ib3R0b20gPT09IGFub3Ro
ZXJJbnNldC5ib3R0b20gJiYgdGhpcy5sZWZ0ID09PSBhbm90aGVySW5zZXQubGVmdCk7Ci0gICAg
fSwKLQotICAgIGNvcHk6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgRGFz
aGJvYXJkLkVkZ2VJbnNldHModGhpcy50b3AsIHRoaXMucmlnaHQsIHRoaXMuYm90dG9tLCB0aGlz
LmxlZnQpOwotICAgIH0KLX07Ci0KLURhc2hib2FyZC5SZWN0RWRnZSA9IHsKLSAgICBNSU5fWCA6
IDAsCi0gICAgTUlOX1kgOiAxLAotICAgIE1BWF9YIDogMiwKLSAgICBNQVhfWSA6IDMKLX07CgpQ
cm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9HZW9tZXRyeS5qcwpfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKRGVsZXRlZDogc3ZuOm1pbWUtdHlwZQojIyAtMSAr
MCwwICMjCi10ZXh0L3BsYWluClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL0luaXRpYWxpemF0aW9uLmpzCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcwkobm9uZXhpc3RlbnQpCkBA
IC0xLDM0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi12YXIgc2V0dGluZ3MgPSBuZXcgU2V0dGluZ3M7
Ci12YXIgYnVpbGRib3RzID0gWyBuZXcgV2ViS2l0QnVpbGRib3QgXTsKLURhc2hib2FyZC5SZXBv
c2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBUcmFjKCJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy8iKTsKLWlmICh0eXBlb2YgQnVnemlsbGEgIT09ICJ1bmRlZmluZWQiKQotICAgIHZhciBidWd6
aWxsYSA9IG5ldyBCdWd6aWxsYTsKLWlmICh0eXBlb2YgQnViYmxlUXVldWVTZXJ2ZXIgIT09ICJ1
bmRlZmluZWQiKQotICAgIHZhciBidWJibGVRdWV1ZVNlcnZlciA9IG5ldyBCdWJibGVRdWV1ZVNl
cnZlcjsKLWlmICh0eXBlb2YgVGVzdEhpc3RvcnkgIT09ICJ1bmRlZmluZWQiKQotICAgIHZhciB0
ZXN0SGlzdG9yeSA9IG5ldyBUZXN0SGlzdG9yeTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L01haW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWFpbi5qcwkobm9uZXhpc3Rl
bnQpCkBAIC0xLDMzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotdmFyIGhhc0J1YmJsZXMg
PSB0eXBlb2YgYnViYmxlUXVldWVTZXJ2ZXIgIT0gInVuZGVmaW5lZCI7Ci12YXIgQnViYmxlc0Nh
dGVnb3J5ID0gImJ1YmJsZXMiOwotCi1pZiAoIWNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFu
ZEJ1aWxkVHlwZSkKLSAgICB2YXIgY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRU
eXBlID0ge307Ci12YXIgcGxhdGZvcm1zQnlGYW1pbHkgPSB7fTsKLQotZm9yICh2YXIgaSA9IDA7
IGkgPCBidWlsZGJvdHMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgYnVpbGRib3QgPSBidWlsZGJv
dHNbaV07Ci0gICAgZm9yICh2YXIgaWQgaW4gYnVpbGRib3QucXVldWVzSW5mbykgewotICAgICAg
ICBpZiAoYnVpbGRib3QucXVldWVzSW5mb1tpZF0uY29tYmluZWRRdWV1ZXMpIHsKLSAgICAgICAg
ICAgIHZhciBpbmZvID0gYnVpbGRib3QucXVldWVzSW5mb1tpZF07Ci0gICAgICAgICAgICB2YXIg
cXVldWUgPSB7Ci0gICAgICAgICAgICAgICAgaWQ6IGlkLAotICAgICAgICAgICAgICAgIGJyYW5j
aGVzOiBpbmZvLmJyYW5jaGVzLAotICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBpbmZvLnBsYXRm
b3JtLm5hbWUsCi0gICAgICAgICAgICAgICAgaGVhZGluZzogaW5mby5oZWFkaW5nLAotICAgICAg
ICAgICAgICAgIGJ1aWxkZXI6IGluZm8uYnVpbGRlciwKLSAgICAgICAgICAgICAgICBjb21iaW5l
ZFF1ZXVlczogT2JqZWN0LmtleXMoaW5mby5jb21iaW5lZFF1ZXVlcykubWFwKGZ1bmN0aW9uKGNv
bWJpbmVkUXVldWVJRCkgeyByZXR1cm4gYnVpbGRib3QucXVldWVzW2NvbWJpbmVkUXVldWVJRF07
IH0pLAotICAgICAgICAgICAgfTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB2YXIgcXVl
dWUgPSBidWlsZGJvdC5xdWV1ZXNbaWRdOwotCi0gICAgICAgIHZhciBwbGF0Zm9ybU5hbWUgPSBx
dWV1ZS5wbGF0Zm9ybTsKLSAgICAgICAgdmFyIHBsYXRmb3JtID0gY2F0ZWdvcml6ZWRRdWV1ZXNC
eVBsYXRmb3JtQW5kQnVpbGRUeXBlW3BsYXRmb3JtTmFtZV07Ci0gICAgICAgIGlmICghcGxhdGZv
cm0pCi0gICAgICAgICAgICBwbGF0Zm9ybSA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFu
ZEJ1aWxkVHlwZVtwbGF0Zm9ybU5hbWVdID0ge307Ci0gICAgICAgIGlmICghcGxhdGZvcm0uYnVp
bGRlcnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IFtdOwotCi0gICAgICAgIHZh
ciBjYXRlZ29yeU5hbWU7Ci0gICAgICAgIGlmICgiY29tYmluZWRRdWV1ZXMiIGluIHF1ZXVlKQot
ICAgICAgICAgICAgaWYgKHF1ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICAgICAgY2F0ZWdvcnlO
YW1lID0gImJ1aWxkZXJDb21iaW5lZFF1ZXVlcyI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgY2F0ZWdvcnlOYW1lID0gIm90aGVyQ29tYmluZWRRdWV1ZXMiCi0gICAgICAgIGVs
c2UgaWYgKHF1ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAiYnVpbGRl
cnMiOwotICAgICAgICBlbHNlIGlmIChxdWV1ZS50ZXN0ZXIpCi0gICAgICAgICAgICBjYXRlZ29y
eU5hbWUgPSBxdWV1ZS50ZXN0Q2F0ZWdvcnk7Ci0gICAgICAgIGVsc2UgaWYgKHF1ZXVlLnBlcmZv
cm1hbmNlKQotICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gInBlcmZvcm1hbmNlIjsKLSAgICAg
ICAgZWxzZSBpZiAocXVldWUubGVha3MpCi0gICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAibGVh
a3MiOwotICAgICAgICBlbHNlIGlmIChxdWV1ZS5zdGF0aWNBbmFseXplcikKLSAgICAgICAgICAg
IGNhdGVnb3J5TmFtZSA9ICJzdGF0aWNBbmFseXplciI7Ci0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQoIlVua25vd24gcXVldWUgdHlwZS4iKTsKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgY2F0ZWdvcnkgPSBwbGF0Zm9ybVtjYXRl
Z29yeU5hbWVdOwotICAgICAgICBpZiAoIWNhdGVnb3J5KQotICAgICAgICAgICAgY2F0ZWdvcnkg
PSBwbGF0Zm9ybVtjYXRlZ29yeU5hbWVdID0gW107Ci0KLSAgICAgICAgY2F0ZWdvcnkucHVzaChx
dWV1ZSk7Ci0gICAgfQotfQotCi1pZiAoaGFzQnViYmxlcykgewotICAgIGZvciAodmFyIGlkIGlu
IGJ1YmJsZVF1ZXVlU2VydmVyLnF1ZXVlcykgewotICAgICAgICB2YXIgcXVldWUgPSBidWJibGVR
dWV1ZVNlcnZlci5xdWV1ZXNbaWRdOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBjYXRlZ29yaXpl
ZFF1ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dOwotICAgICAgICBp
ZiAoIXBsYXRmb3JtKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVlc0J5
UGxhdGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dID0ge307Ci0gICAgICAgIGlmICgh
cGxhdGZvcm0uYnVpbGRlcnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IFtdOwot
Ci0gICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBCdWJibGVzQ2F0ZWdvcnk7Ci0KLSAgICAgICAg
cGxhdGZvcm1RdWV1ZXMgPSBwbGF0Zm9ybVtjYXRlZ29yeU5hbWVdOwotICAgICAgICBpZiAoIXBs
YXRmb3JtUXVldWVzKQotICAgICAgICAgICAgcGxhdGZvcm1RdWV1ZXMgPSBwbGF0Zm9ybVtjYXRl
Z29yeU5hbWVdID0gW107Ci0KLSAgICAgICAgcGxhdGZvcm1RdWV1ZXMucHVzaChxdWV1ZSk7Ci0g
ICAgfQotfQotCi12YXIgdGVzdE5hbWVzID0ge307Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENh
dGVnb3J5LldlYktpdDJdID0gIldLMiBUZXN0cyI7Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENh
dGVnb3J5LldlYktpdDFdID0gIldLMSBUZXN0cyI7Ci0KLWZ1bmN0aW9uIGluaXRQbGF0Zm9ybXNC
eUZhbWlseSgpCi17Ci0gICAgdmFyIHBsYXRmb3JtcyA9IERhc2hib2FyZC5zb3J0ZWRQbGF0Zm9y
bXM7Ci0gICAgZm9yICh2YXIgaSBpbiBwbGF0Zm9ybXMpIHsKLSAgICAgICAgLy8gTWFrZSBzdXJl
IHRoZSBwbGF0Zm9ybSB3aWxsIGJlIGRpc3BsYXllZCBvbiB0aGUgcGFnZSBiZWZvcmUgY29uc2lk
ZXJpbmcgaXRzIHBsYXRmb3JtIGZhbWlseS4KLSAgICAgICAgaWYgKCFjYXRlZ29yaXplZFF1ZXVl
c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm1zW2ldLm5hbWVdKQotICAgICAgICAgICAg
Y29udGludWU7Ci0KLSAgICAgICAgdmFyIHBsYXRmb3JtRmFtaWx5ID0gc2V0dGluZ3MucGFyc2VQ
bGF0Zm9ybUZhbWlseShwbGF0Zm9ybXNbaV0ubmFtZSk7Ci0gICAgICAgIGlmIChwbGF0Zm9ybXNC
eUZhbWlseVtwbGF0Zm9ybUZhbWlseV0pCi0gICAgICAgICAgICBwbGF0Zm9ybXNCeUZhbWlseVtw
bGF0Zm9ybUZhbWlseV0ucHVzaChwbGF0Zm9ybXNbaV0ubmFtZSkKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldID0gW3BsYXRmb3Jtc1tp
XS5uYW1lXQotICAgIH0KLX0KLQotZnVuY3Rpb24gdXBkYXRlSGlkZGVuUGxhdGZvcm1zKCkKLXsK
LSAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9iamVjdCgiaGlk
ZGVuUGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwotICAgIHZhciBwbGF0Zm9ybVJvd3MgPSBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5wbGF0Zm9ybSIpOwotICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGxhdGZvcm1Sb3dzLmxlbmd0aDsgKytpKQotICAgICAgICBwbGF0Zm9ybVJvd3NbaV0u
Y2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGhp
ZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFyIHBsYXRmb3Jt
RmFtaWx5ID0gaGlkZGVuUGxhdGZvcm1GYW1pbGllc1tpXTsKLSAgICAgICAgaWYgKCEocGxhdGZv
cm1GYW1pbHkgaW4gcGxhdGZvcm1zQnlGYW1pbHkpKQotICAgICAgICAgICAgY29udGludWU7Ci0g
ICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1p
bHldLmxlbmd0aDsgKytqKSB7Ci0gICAgICAgICAgICB2YXIgbmFtZSA9IHBsYXRmb3Jtc0J5RmFt
aWx5W3BsYXRmb3JtRmFtaWx5XVtqXTsKLSAgICAgICAgICAgIHZhciBwbGF0Zm9ybVJvdyA9IGRv
Y3VtZW50LnF1ZXJ5U2VsZWN0b3IoInRyLnBsYXRmb3JtLiIgKyBuYW1lKTsKLSAgICAgICAgICAg
IGlmIChwbGF0Zm9ybVJvdykKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybVJvdy5jbGFzc0xpc3Qu
YWRkKCJoaWRkZW4iKTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzZXR0aW5ncy51cGRhdGVUb2dn
bGVCdXR0b25zKCk7Ci19Ci0KLWZ1bmN0aW9uIGFwcGx5QWNjZXNzaWJpbGl0eUNvbG9yU2V0dGlu
ZygpCi17Ci0gICAgdmFyIHVzZUFjY2Vzc2libGVDb2xvcnMgPSBzZXR0aW5ncy5nZXRPYmplY3Qo
ImFjY2Vzc2liaWxpdHlDb2xvcnNFbmFibGVkIik7Ci0gICAgdmFyIHRvZ2dsZUFjY2Vzc2liaWxp
dHlDb2xvckJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhY2Nlc3NpYmlsaXR5QnV0
dG9uIik7Ci0gICAgaWYgKHVzZUFjY2Vzc2libGVDb2xvcnMpIHsKLSAgICAgICAgdG9nZ2xlQWNj
ZXNzaWJpbGl0eUNvbG9yQnV0dG9uLnRleHRDb250ZW50ID0gImRpc2FibGUgYWNjZXNzaWJpbGl0
eSBjb2xvcnMiOwotICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoImFjY2Vz
c2liaWxpdHktY29sb3JzIik7Ci0gICAgfSBlbHNlCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxp
dHlDb2xvckJ1dHRvbi50ZXh0Q29udGVudCA9ICJlbmFibGUgYWNjZXNzaWJpbGl0eSBjb2xvcnMi
OwotfQotCi1mdW5jdGlvbiB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JzKCkKLXsKLSAgICB2YXIg
aXNDdXJyZW50bHlBY3RpdmF0ZWQgPSBzZXR0aW5ncy5nZXRPYmplY3QoImFjY2Vzc2liaWxpdHlD
b2xvcnNFbmFibGVkIik7Ci0gICAgaWYgKGlzQ3VycmVudGx5QWN0aXZhdGVkID09PSB1bmRlZmlu
ZWQpCi0gICAgICAgIGlzQ3VycmVudGx5QWN0aXZhdGVkID0gZmFsc2U7Ci0gICAgCi0gICAgc2V0
dGluZ3Muc2V0T2JqZWN0KCJhY2Nlc3NpYmlsaXR5Q29sb3JzRW5hYmxlZCIsICFpc0N1cnJlbnRs
eUFjdGl2YXRlZCk7Ci0gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCJhY2Nlc3Np
YmlsaXR5LWNvbG9ycyIpOwotICAgIHZhciB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24g
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNjZXNzaWJpbGl0eUJ1dHRvbiIpOwotICAgIGlm
ICghaXNDdXJyZW50bHlBY3RpdmF0ZWQpCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xv
ckJ1dHRvbi50ZXh0Q29udGVudCA9ICJkaXNhYmxlIGFjY2Vzc2liaWxpdHkgY29sb3JzIjsKLSAg
ICBlbHNlCi0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1dHRvbi50ZXh0Q29udGVu
dCA9ICJlbmFibGUgYWNjZXNzaWJpbGl0eSBjb2xvcnMiOwotfQotCi1mdW5jdGlvbiBkb2N1bWVu
dFJlYWR5KCkKLXsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJs
ZSIpOwotICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQoInF1ZXVlLWdyaWQiKTsKLQotICAgIHZhciBy
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHJvdy5jbGFzc0xpc3QuYWRk
KCJoZWFkZXJzIik7Ci0KLSAgICB2YXIgaGVhZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
dGgiKTsgCi0gICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWls
ZGVycyI7Ci0gICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBmb3IgKHZhciB0ZXN0
ZXJLZXkgaW4gQnVpbGRib3QuVGVzdENhdGVnb3J5KSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIpOwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQg
PSB0ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5W3Rlc3RlcktleV1dOwotICAgICAgICBy
b3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLSAgICB9Ci0KLSAgICB2YXIgaGVhZGVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGgiKTsKLSAgICBoZWFkZXIudGV4dENvbnRlbnQgPSAiT3RoZXIi
OwotICAgIHJvdy5hcHBlbmRDaGlsZChoZWFkZXIpOwotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQo
cm93KTsKLQotICAgIHZhciBwbGF0Zm9ybXMgPSBEYXNoYm9hcmQuc29ydGVkUGxhdGZvcm1zOwot
Ci0gICAgZm9yICh2YXIgaSBpbiBwbGF0Zm9ybXMpIHsKLSAgICAgICAgdmFyIHBsYXRmb3JtID0g
cGxhdGZvcm1zW2ldOwotICAgICAgICB2YXIgcGxhdGZvcm1RdWV1ZXMgPSBjYXRlZ29yaXplZFF1
ZXVlc0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcGxhdGZvcm0ubmFtZV07Ci0gICAgICAgIGlmICgh
cGxhdGZvcm1RdWV1ZXMpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICB2YXIgcm93
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLSAgICAgICAgcm93LmNsYXNzTGlzdC5h
ZGQoInBsYXRmb3JtIik7Ci0gICAgICAgIHJvdy5jbGFzc0xpc3QuYWRkKHBsYXRmb3JtLm5hbWUp
OwotCi0gICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKTsKLSAg
ICAgICAgY2VsbC5jbGFzc0xpc3QuYWRkKCJsb2dvIik7Ci0KLSAgICAgICAgdmFyIGxvZ29JbWFn
ZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpOwotICAgICAgICBsb2dvSW1hZ2UuY2xh
c3NMaXN0LmFkZCgibG9nbyIpOwotICAgICAgICBjZWxsLmFwcGVuZENoaWxkKGxvZ29JbWFnZSk7
Ci0KLSAgICAgICAgdmFyIHJpbmdJbWFnZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIp
OwotICAgICAgICByaW5nSW1hZ2UuY2xhc3NMaXN0LmFkZCgicmluZyIpOwotICAgICAgICByaW5n
SW1hZ2UudGl0bGUgPSBwbGF0Zm9ybS5yZWFkYWJsZU5hbWU7Ci0gICAgICAgIGNlbGwuYXBwZW5k
Q2hpbGQocmluZ0ltYWdlKTsKLQotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAg
ICAgICAgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHZhciB2
aWV3ID0gbmV3IEJ1aWxkYm90QnVpbGRlclF1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVlcy5idWlsZGVy
cyk7Ci0gICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgcm93
LmFwcGVuZENoaWxkKGNlbGwpOwotCi0gICAgICAgIGlmICgiYnVpbGRlckNvbWJpbmVkUXVldWVz
IiBpbiBwbGF0Zm9ybVF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
bGF0Zm9ybVF1ZXVlcy5idWlsZGVyQ29tYmluZWRRdWV1ZXMubGVuZ3RoOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdENvbWJpbmVkUXVldWVWaWV3KHBsYXRm
b3JtUXVldWVzLmJ1aWxkZXJDb21iaW5lZFF1ZXVlc1tpXSk7Ci0gICAgICAgICAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0K
LSAgICAgICAgZm9yICh2YXIgdGVzdGVyS2V5IGluIEJ1aWxkYm90LlRlc3RDYXRlZ29yeSkgewot
ICAgICAgICAgICAgdmFyIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0g
ICAgICAgICAgICB2YXIgdGVzdGVyUHJvcGVydHkgPSBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnlbdGVz
dGVyS2V5XTsKLSAgICAgICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0p
IHsKLSAgICAgICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFRlc3RlclF1ZXVlVmll
dyhwbGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0pOwotICAgICAgICAgICAgICAgIGNlbGwu
YXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
cm93LmFwcGVuZENoaWxkKGNlbGwpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGNlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXMu
cGVyZm9ybWFuY2UpIHsKLSAgICAgICAgICAgIHZhciB2aWV3ID0gbmV3IEJ1aWxkYm90UGVyZm9y
bWFuY2VRdWV1ZVZpZXcocGxhdGZvcm1RdWV1ZXMucGVyZm9ybWFuY2UpOwotICAgICAgICAgICAg
Y2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KHBsYXRmb3JtUXVldWVzLnN0YXRpY0FuYWx5emVyKSB7Ci0gICAgICAgICAgICB2YXIgdmlldyA9
IG5ldyBCdWlsZGJvdFN0YXRpY0FuYWx5emVyUXVldWVWaWV3KHBsYXRmb3JtUXVldWVzLnN0YXRp
Y0FuYWx5emVyKTsKLSAgICAgICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsK
LSAgICAgICAgfQotCi0gICAgICAgIGlmIChwbGF0Zm9ybVF1ZXVlcy5sZWFrcykgewotICAgICAg
ICAgICAgdmFyIHZpZXcgPSBuZXcgQnVpbGRib3RMZWFrc1F1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVl
cy5sZWFrcyk7Ci0gICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXMuY3VzdG9tVmlldykKLSAgICAg
ICAgICAgIGNlbGwuYXBwZW5kQ2hpbGQocGxhdGZvcm1RdWV1ZXMuY3VzdG9tVmlldy5lbGVtZW50
KTsKLQotICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXNbQnViYmxlc0NhdGVnb3J5XSkgewotICAg
ICAgICAgICAgdmFyIHZpZXcgPSBuZXcgQnViYmxlUXVldWVWaWV3KHBsYXRmb3JtUXVldWVzW0J1
YmJsZXNDYXRlZ29yeV0pOwotICAgICAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1l
bnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCJvdGhlckNvbWJpbmVkUXVldWVzIiBpbiBw
bGF0Zm9ybVF1ZXVlcykgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbGF0Zm9y
bVF1ZXVlcy5vdGhlckNvbWJpbmVkUXVldWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgdmFyIHZpZXcgPSBuZXcgQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldyhwbGF0Zm9ybVF1ZXVl
cy5vdGhlckNvbWJpbmVkUXVldWVzW2ldKTsKLSAgICAgICAgICAgICAgICBjZWxsLmFwcGVuZENo
aWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
b3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0KLSAgICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsK
LSAgICB9Ci0KLSAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhYmxlKTsKLQotICAgIGlm
IChzZXR0aW5ncy5hdmFpbGFibGUoKSkgewotICAgICAgICB2YXIgc2V0dGluZ3NCdXR0b24gPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgc2V0dGluZ3NCdXR0b24uYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNldHRpbmdzLnRvZ2dsZVNldHRp
bmdzRGlzcGxheSgpOyB9KTsKLSAgICAgICAgc2V0dGluZ3NCdXR0b24uY2xhc3NMaXN0LmFkZCgi
c2V0dGluZ3MiKTsKLSAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZXR0aW5nc0J1
dHRvbik7Ci0KLSAgICAgICAgdmFyIHNldHRpbmdzV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOwotICAgICAgICBzZXR0aW5nc1dyYXBwZXIuY2xhc3NMaXN0LmFkZCgidW5o
aWRlIiwgImhpZGRlbiIsICJzZXR0aW5nc1dyYXBwZXIiKQotCi0gICAgICAgIHZhciBwbGF0Zm9y
bUZhbWlseVRvZ2dsZVdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGVXcmFwcGVyLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIs
ICJoaWRkZW4iLCAiZmFtaWx5VG9nZ2xlV3JhcHBlciIpOwotCi0gICAgICAgIHZhciB1bmhpZGVB
bGxCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdW5oaWRl
QWxsQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgeyBzZXR0aW5n
cy5jbGVhckhpZGRlblBsYXRmb3JtRmFtaWxpZXMoKTsgfSk7Ci0gICAgICAgIHVuaGlkZUFsbEJ1
dHRvbi5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlkZGVuIiwgInBsYXRmb3JtRmFtaWx5VG9n
Z2xlQnV0dG9uIik7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRvbi5zZXRBdHRyaWJ1dGUoImlkIiwg
ImFsbC1wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbiIpOwotICAgICAgICB1bmhpZGVBbGxCdXR0
b24udGV4dENvbnRlbnQgPSAiYWxsIjsKLSAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGVXcmFw
cGVyLmFwcGVuZENoaWxkKHVuaGlkZUFsbEJ1dHRvbik7Ci0KLSAgICAgICAgaW5pdFBsYXRmb3Jt
c0J5RmFtaWx5KCk7Ci0gICAgICAgIGZvciAodmFyIHBsYXRmb3JtRmFtaWx5IGluIHBsYXRmb3Jt
c0J5RmFtaWx5KSB7Ci0gICAgICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHlUb2dnbGUgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9n
Z2xlLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKCkgewotICAgICAgICAgICAg
ICAgIHNldHRpbmdzLnRvZ2dsZUhpZGRlblBsYXRmb3JtRmFtaWx5KHRoaXMudG9TdHJpbmcoKSk7
Ci0gICAgICAgICAgICB9LmJpbmQocGxhdGZvcm1GYW1pbHkpKTsKLSAgICAgICAgICAgIHBsYXRm
b3JtRmFtaWx5VG9nZ2xlLmNsYXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAicGxhdGZv
cm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xl
LnNldEF0dHJpYnV0ZSgiaWQiLCBwbGF0Zm9ybUZhbWlseSArICItcGxhdGZvcm1GYW1pbHlUb2dn
bGVCdXR0b24iKTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlLnRleHRDb250ZW50
ID0gcGxhdGZvcm1GYW1pbHk7Ci0gICAgICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBw
ZXIuYXBwZW5kQ2hpbGQocGxhdGZvcm1GYW1pbHlUb2dnbGUpOwotICAgICAgICB9Ci0gICAgICAg
IHNldHRpbmdzV3JhcHBlci5hcHBlbmRDaGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIp
OwotCi0gICAgICAgIHZhciB0b2dnbGVBY2Nlc3NpYmlsaXR5Q29sb3JCdXR0b24gPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9y
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKSB7IHRvZ2dsZUFjY2Vz
c2liaWxpdHlDb2xvcnMoKTsgfSk7Ci0gICAgICAgIHRvZ2dsZUFjY2Vzc2liaWxpdHlDb2xvckJ1
dHRvbi5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAiaGlkZGVuIiwgImFjY2Vzc2liaWxpdHlCdXR0
b24iKTsKLSAgICAgICAgdG9nZ2xlQWNjZXNzaWJpbGl0eUNvbG9yQnV0dG9uLnNldEF0dHJpYnV0
ZSgiaWQiLCAiYWNjZXNzaWJpbGl0eUJ1dHRvbiIpOwotICAgICAgICB0b2dnbGVBY2Nlc3NpYmls
aXR5Q29sb3JCdXR0b24udGV4dENvbnRlbnQgPSAiZW5hYmxlIGFjY2Vzc2liaWxpdHkgY29sb3Jz
IjsKLSAgICAgICAgc2V0dGluZ3NXcmFwcGVyLmFwcGVuZENoaWxkKHRvZ2dsZUFjY2Vzc2liaWxp
dHlDb2xvckJ1dHRvbik7Ci0gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2V0dGlu
Z3NXcmFwcGVyKTsKLSAgICAgICAgYXBwbHlBY2Nlc3NpYmlsaXR5Q29sb3JTZXR0aW5nKCk7Ci0K
LSAgICAgICAgdXBkYXRlSGlkZGVuUGxhdGZvcm1zKCk7Ci0gICAgICAgIHNldHRpbmdzLmFkZFNl
dHRpbmdMaXN0ZW5lcigiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIsIHVwZGF0ZUhpZGRlblBsYXRm
b3Jtcyk7Ci0gICAgfQotfQotCi12YXIgc29ydGVkUmVwb3NpdG9yaWVzID0gRGFzaGJvYXJkLnNv
cnRlZFJlcG9zaXRvcmllczsKLWZvciAodmFyIGkgPSAwOyBpIDwgc29ydGVkUmVwb3NpdG9yaWVz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIHRyYWMgPSBzb3J0ZWRSZXBvc2l0b3JpZXNbaV0udHJh
YzsKLSAgICBpZiAodHlwZW9mIHRyYWMgIT09ICJ1bmRlZmluZWQiKQotICAgICAgICB0cmFjLnN0
YXJ0UGVyaW9kaWNVcGRhdGVzKCk7Ci19Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLCBkb2N1bWVudFJlYWR5KTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3Jp
cHRzL01ldHJpY3NBbmFseXplci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9NZXRyaWNzQW5hbHl6ZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9T
Y3JpcHRzL01ldHJpY3NBbmFseXplci5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDUwMyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotQW5hbHl6ZXIgPSBmdW5jdGlvbigpCi17Ci0gICAgQmFzZU9iamVjdC5j
YWxsKHRoaXMpOwotCi0gICAgLy8gT25seSBsb2FkIG9uZSBxdWV1ZSBhdCBhIHRpbWUgdG8gbm90
IG92ZXJsb2FkIHRoZSBzZXJ2ZXIuCi0gICAgdGhpcy5fcXVldWVCZWluZ0xvYWRlZCA9IG51bGw7
Ci0KLSAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMuYWRkRXZlbnRMaXN0
ZW5lcihUcmFjLkV2ZW50LkxvYWRlZCwgdGhpcy5fbG9hZGVkRnJvbVRyYWMsIHRoaXMpOwotfTsK
LQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhBbmFseXplcik7Ci0KLUFuYWx5
emVyLkV2ZW50ID0gewotICAgIFN0YXJ0aW5nOiAic3RhcnRpbmciLAotICAgIFF1ZXVlUmVzdWx0
czogInF1ZXVlLXJlc3VsdHMiLAotICAgIEZpbmlzaGVkOiAiZmluaXNoZWQiLAotfTsKLQotQW5h
bHl6ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBBbmFseXplciwKLSAgICBfX3By
b3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAgYW5hbHl6ZTogZnVuY3Rpb24ocXVl
dWVzLCBmcm9tRGF0ZSwgdG9EYXRlKQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcsIG51bGwpOwotCi0gICAgICAgIHRo
aXMuX3JhbmdlU3RhcnRUaW1lID0gbmV3IERhdGUoZnJvbURhdGUpOwotICAgICAgICB0aGlzLl9y
YW5nZUVuZFRpbWUgPSBuZXcgRGF0ZSh0b0RhdGUpOwotCi0gICAgICAgIHRoaXMuX2hhc1RyYWNE
YXRhID0gZmFsc2U7Ci0KLSAgICAgICAgLy8gQSBjb21taXQgY2FuIHN0YXJ0IGEgYnVpbGQtdGVz
dCBzZXF1ZW5jZSwgb3IgaXQgY2FuIGJlIGlnbm9yZWQgZm9sbG93aW5nIGJ1aWxkZXIgcXVldWUg
cnVsZXMuCi0gICAgICAgIC8vIE9ubHkgdGhlIGJ1aWxkZXIgcXVldWUga25vd3Mgd2hpY2ggY29t
bWl0cyB0cmlnZ2VyZWQgYnVpbGRzLCBhbmQgd2hpY2ggd2VyZSBpZ25vcmVkLgotICAgICAgICAv
LyBXZSBuZWVkIHRvIGtub3cgd2hpY2ggY29tbWl0cyB3ZXJlIGlnbm9yZWQgd2hlbiBtZWFzdXJp
bmcgdGVzdGVyIHF1ZXVlIHBlcmZvcm1hbmNlLAotICAgICAgICAvLyBzbyB3ZSBsb2FkIGFuZCBh
bmFseXplIGJ1aWxkZXIgcXVldWVzIGZpcnN0LgotICAgICAgICB0aGlzLl9xdWV1ZXMgPSBxdWV1
ZXMuc2xpY2UoMCk7Ci0gICAgICAgIHRoaXMuX3F1ZXVlcy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsg
cmV0dXJuIGIuYnVpbGRlciAtIGEuYnVpbGRlcjsgfSk7Ci0KLSAgICAgICAgdGhpcy5fcmVtYWlu
aW5nUXVldWVzID0ge307Ci0gICAgICAgIHRoaXMuX3F1ZXVlc1JlYWR5VG9BbmFseXplID0gW107
Ci0KLSAgICAgICAgdGhpcy5fdHJpZ2dlcmluZ0NvbW1pdHNCeVRyaWdnZXJpbmdRdWV1ZSA9IHt9
OwotCi0gICAgICAgIHRoaXMuX3F1ZXVlcy5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAg
ICAgICAgICBpZiAoIXF1ZXVlLml0ZXJhdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5fcmVtYWluaW5nUXVldWVzW3F1ZXVlLmlkXSA9IHF1ZXVlOwotICAgICAgICAgICAgICAg
IGlmICghdGhpcy5fcXVldWVCZWluZ0xvYWRlZCkgewotICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9xdWV1ZUJlaW5nTG9hZGVkID0gcXVldWUuaWQ7Ci0gICAgICAgICAgICAgICAgICAgIHF1ZXVl
LmxvYWRBbGwodGhpcy5fbG9hZGVkRnJvbUJ1aWxkYm90LmJpbmQodGhpcykpOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuX3F1ZXVl
c1JlYWR5VG9BbmFseXplLnB1c2gocXVldWUpOwotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAg
ICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMubG9hZCh0aGlzLl9yYW5nZVN0
YXJ0VGltZSwgdGhpcy5fcmFuZ2VFbmRUaW1lKTsKLQotICAgICAgICBidWJibGVRdWV1ZVNlcnZl
ci5sb2FkUHJvY2Vzc2luZ1RpbWVzKHRoaXMuX3JhbmdlU3RhcnRUaW1lLCB0aGlzLl9yYW5nZUVu
ZFRpbWUsIHRoaXMuX2xvYWRlZEJ1YmJsZXNUaW1pbmcuYmluZCh0aGlzKSk7Ci0gICAgfSwKLQot
ICAgIF90cmlnZ2VyaW5nUXVldWU6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYg
KHF1ZXVlLmJ1aWxkZXIpCi0gICAgICAgICAgICByZXR1cm4gcXVldWU7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGhpcy5fcXVldWVzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBp
ZiAodGhpcy5fcXVldWVzW2ldLnRlc3RlcikKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgICAgIGlmICh0aGlzLl9xdWV1ZXNbaV0ucGxhdGZvcm0gPT09IHF1ZXVlLnBsYXRmb3Jt
ICYmIHRoaXMuX3F1ZXVlc1tpXS5hcmNoaXRlY3R1cmUgPT09IHF1ZXVlLmFyY2hpdGVjdHVyZSAm
JiB0aGlzLl9xdWV1ZXNbaV0uZGVidWcgPT09IHF1ZXVlLmRlYnVnKQotICAgICAgICAgICAgICAg
IHJldHVybiB0aGlzLl9xdWV1ZXNbaV07Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHF1ZXVl
OwotICAgIH0sCi0KLSAgICBfcmVjb3JkVHJpZ2dlcmluZ0NvbW1pdHNGb3JUcmlnZ2VyaW5nUXVl
dWU6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIShxdWV1
ZS5pZCBpbiB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJpZ2dlcmluZ1F1ZXVlKSk7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHF1ZXVlLmlkID09PSB0aGlzLl90cmlnZ2VyaW5nUXVldWUocXVl
dWUpLmlkKTsKLQotICAgICAgICB2YXIgY29tbWl0cyA9IHt9OwotICAgICAgICBxdWV1ZS5pdGVy
YXRpb25zLmZvckVhY2goZnVuY3Rpb24oaXRlcmF0aW9uKSB7Ci0gICAgICAgICAgICBpdGVyYXRp
b24uY2hhbmdlcy5mb3JFYWNoKGZ1bmN0aW9uKGNoYW5nZSkgewotICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBTdXBwb3J0IG11bHRpcGxlIHNvdXJjZSB0cmVlcy4KLSAgICAgICAgICAgICAgICBj
b21taXRzW2NoYW5nZS5yZXZpc2lvbk51bWJlcl0gPSAxOwotICAgICAgICAgICAgfSk7Ci0gICAg
ICAgIH0pOwotCi0gICAgICAgIHRoaXMuX3RyaWdnZXJpbmdDb21taXRzQnlUcmlnZ2VyaW5nUXVl
dWVbcXVldWUuaWRdID0gY29tbWl0czsKLSAgICB9LAotCi0gICAgLy8gSXRlcmF0aW9ucyBpcyBh
biBhcnJheSBvZiBmaW5pc2hlZCBpdGVyYXRpb25zIG9yZGVyZWQgYnkgdGltZSwgaXRlcmF0aW9u
c1swXSBiZWluZyB0aGUgbmV3ZXN0LgotICAgIC8vIFJldHVybnMgYW4gaW5kZXggb2YgYW4gaXRl
cmF0aW9uIHRoYXQgZGVmaW5lZCB0aGUgcXVldWUgY29sb3IgYXQgdGhlIHN0YXJ0LCBvciAtMQot
ICAgIC8vIGlmIHRoZXJlIHdhcyBub25lLgotICAgIF9maW5kSW5kZXhPZkxhcmdlc3RJdGVyYXRp
b25BdE9yQmVmb3JlU3RhcnQ6IGZ1bmN0aW9uKGl0ZXJhdGlvbnMpCi0gICAgewotICAgICAgICB2
YXIgcmVzdWx0ID0gLTE7Ci0gICAgICAgIHZhciBpID0gMDsKLSAgICAgICAgd2hpbGUgKGkgPCBp
dGVyYXRpb25zLmxlbmd0aCAmJiBpdGVyYXRpb25zW2ldLmVuZFRpbWUgPiB0aGlzLl9yYW5nZVN0
YXJ0VGltZSkKLSAgICAgICAgICAgICsraTsKLSAgICAgICAgaWYgKGkgPCBpdGVyYXRpb25zLmxl
bmd0aCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGkrKzsKLSAgICAgICAgd2hpbGUgKGkgPCBpdGVy
YXRpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0ucmV2aXNpb25b
RGFzaGJvYXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSA+IGl0ZXJhdGlvbnNbcmVzdWx0
XS5yZXZpc2lvbltEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLm5hbWVdKQotICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IGk7Ci0gICAgICAgICAgICArK2k7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9LAotCi0gICAgX2Rhc2hib2FyZElzQWxsR3JlZW46IGZ1
bmN0aW9uKHRvcEl0ZXJhdGlvbkJ5UXVldWUpCi0gICAgewotICAgICAgICB2YXIgY291bnRPZlF1
ZXVlc1dpdGhLbm93bkNvbG9yID0gT2JqZWN0LmtleXModG9wSXRlcmF0aW9uQnlRdWV1ZSkubGVu
Z3RoOwotICAgICAgICBpZiAoY291bnRPZlF1ZXVlc1dpdGhLbm93bkNvbG9yID09PSAwKQotICAg
ICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLQotICAgICAgICBmb3IgKHZhciBxdWV1ZUlEIGlu
IHRvcEl0ZXJhdGlvbkJ5UXVldWUpIHsKLSAgICAgICAgICAgIGlmICghdG9wSXRlcmF0aW9uQnlR
dWV1ZVtxdWV1ZUlEXS5zdWNjZXNzZnVsKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9LAotCi0gICAgX3VwZGF0ZVN0
cmV0Y2hPZlJlZENvdW50ZXJzOiBmdW5jdGlvbih0b3BJdGVyYXRpb25CeVF1ZXVlLCBjdXJyZW50
VGltZSwgc3RyZXRjaE9mUmVkQ291bnRlcnMpCi0gICAgewotICAgICAgICB2YXIgZGFzaGJvYXJk
SXNBbGxHcmVlbiA9IHRoaXMuX2Rhc2hib2FyZElzQWxsR3JlZW4odG9wSXRlcmF0aW9uQnlRdWV1
ZSk7Ci0KLSAgICAgICAgaWYgKGRhc2hib2FyZElzQWxsR3JlZW4gPT09IHVuZGVmaW5lZCkgewot
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0
cmV0Y2hPZlJlZFN0YXJ0ID09PSB1bmRlZmluZWQpOwotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoc3RyZXRjaE9mUmVkQ291bnRlcnMubG9uZ2VzdFN0cmV0Y2hPZlJlZCA9PT0gMCk7Ci0gICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZGFzaGJvYXJkSXNBbGxH
cmVlbikgewotICAgICAgICAgICAgaWYgKHN0cmV0Y2hPZlJlZENvdW50ZXJzLmN1cnJlbnRTdHJl
dGNoT2ZSZWRTdGFydCAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgc3RyZXRjaE9m
UmVkQ291bnRlcnMubG9uZ2VzdFN0cmV0Y2hPZlJlZCA9IE1hdGgubWF4KHN0cmV0Y2hPZlJlZENv
dW50ZXJzLmxvbmdlc3RTdHJldGNoT2ZSZWQsIGN1cnJlbnRUaW1lIC0gc3RyZXRjaE9mUmVkQ291
bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0KTsKLSAgICAgICAgICAgICAgICBzdHJldGNo
T2ZSZWRDb3VudGVycy5jdXJyZW50U3RyZXRjaE9mUmVkU3RhcnQgPSB1bmRlZmluZWQ7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc3RyZXRjaE9mUmVk
Q291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0ID09PSB1bmRlZmluZWQpCi0gICAgICAg
ICAgICAgICAgc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0YXJ0ID0g
Y3VycmVudFRpbWU7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2NvdW50UGVyY2VudGFnZU9m
R3JlZW46IGZ1bmN0aW9uKHF1ZXVlcywgcmVzdWx0KQotICAgIHsKLSAgICAgICAgdmFyIHRvcEl0
ZXJhdGlvbkJ5UXVldWUgPSB7fTsKLSAgICAgICAgdmFyIGl0ZXJhdGlvbnMgPSBbXTsKLQotICAg
ICAgICAvLyBGaW5kIHdoYXQgdGhlIHRvcCBpdGVyYXRpb24gZm9yIGVhY2ggcXVldWUgd2FzIGF0
IHRoZSBzdGFydCBvZiB0aGUgdGltZSByYW5nZSAoYW5kIHRodXMgd2hhdCBjb2xvcnMgdGhlIGRh
c2hib2FyZCB3YXMgc2hvd2luZykuCi0gICAgICAgIC8vIE1lcmdlIGFsbCBxdWV1ZXMnIGl0ZXJh
dGlvbnMgaW50byBvbmUgYXJyYXksIGZpbHRlcmluZyBvdXQgb25lcyB0aGF0IGNhbid0IHBvc3Np
Ymx5IGFmZmVjdCB0aGUgZW5kIHJlc3VsdC4KLSAgICAgICAgcXVldWVzLmZvckVhY2goZnVuY3Rp
b24ocXVldWUpIHsKLSAgICAgICAgICAgIHZhciBxdWV1ZUl0ZXJhdGlvbnMgPSBxdWV1ZS5pdGVy
YXRpb25zLmZpbHRlcihmdW5jdGlvbihpdGVyYXRpb24pIHsgcmV0dXJuIGl0ZXJhdGlvbi5maW5p
c2hlZDsgfSk7Ci0gICAgICAgICAgICBxdWV1ZUl0ZXJhdGlvbnMuc29ydChmdW5jdGlvbihhLCBi
KSB7IHJldHVybiBiLmVuZFRpbWUgLSBhLmVuZFRpbWU7IH0pOwotCi0gICAgICAgICAgICB2YXIg
aW5kZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQgPSB0aGlzLl9maW5kSW5kZXhP
Zkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQocXVldWVJdGVyYXRpb25zKTsKLSAgICAg
ICAgICAgIGlmIChpbmRleE9mTGFyZ2VzdEl0ZXJhdGlvbkF0T3JCZWZvcmVTdGFydCA+PSAwKSB7
Ci0gICAgICAgICAgICAgICAgdG9wSXRlcmF0aW9uQnlRdWV1ZVtxdWV1ZS5pZF0gPSBxdWV1ZUl0
ZXJhdGlvbnNbaW5kZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnRdOwotICAgICAg
ICAgICAgICAgIHZhciBpID0gaW5kZXhPZkxhcmdlc3RJdGVyYXRpb25BdE9yQmVmb3JlU3RhcnQ7
Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICB2YXIgaSA9IHF1ZXVlSXRlcmF0
aW9ucy5sZW5ndGggLSAxOwotICAgICAgICAgICAgd2hpbGUgKGkgPj0gMCAmJiBxdWV1ZUl0ZXJh
dGlvbnNbaV0uZW5kVGltZSA8PSB0aGlzLl9yYW5nZUVuZFRpbWUpCi0gICAgICAgICAgICAgICAg
aXRlcmF0aW9ucy5wdXNoKHF1ZXVlSXRlcmF0aW9uc1tpLS1dKTsKLSAgICAgICAgfSwgdGhpcyk7
Ci0KLSAgICAgICAgaXRlcmF0aW9ucy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGIuZW5k
VGltZSAtIGEuZW5kVGltZTsgfSk7Ci0KLSAgICAgICAgLy8gR28gZm9yd2FyZCBpbiB0aW1lLCBp
Z25vcmluZyBvdXQgb2Ygb3JkZXIgaXRlcmF0aW9ucyB0aGF0IGRpZG4ndCBhZmZlY3QgcXVldWUg
Y29sb3IuCi0gICAgICAgIHZhciBjdXJyZW50VGltZSA9IHRoaXMuX3JhbmdlU3RhcnRUaW1lOwot
ICAgICAgICB2YXIgZ3JlZW5UaW1lID0gMDsKLSAgICAgICAgdmFyIHN0cmV0Y2hPZlJlZENvdW50
ZXJzID0gewotICAgICAgICAgICAgbG9uZ2VzdFN0cmV0Y2hPZlJlZDogMCwKLSAgICAgICAgICAg
IGN1cnJlbnRTdHJldGNoT2ZSZWRTdGFydDogdW5kZWZpbmVkCi0gICAgICAgIH07Ci0gICAgICAg
IHZhciBlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yOwotICAgICAgICBpZiAodGhpcy5fZGFz
aGJvYXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25CeVF1ZXVlKSAhPT0gdW5kZWZpbmVkKQotICAg
ICAgICAgICAgZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciA9IHRoaXMuX3JhbmdlU3RhcnRU
aW1lOwotICAgICAgICB0aGlzLl91cGRhdGVTdHJldGNoT2ZSZWRDb3VudGVycyh0b3BJdGVyYXRp
b25CeVF1ZXVlLCB0aGlzLl9yYW5nZVN0YXJ0VGltZSwgc3RyZXRjaE9mUmVkQ291bnRlcnMpOwot
ICAgICAgICBmb3IgKHZhciBpID0gaXRlcmF0aW9ucy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkg
ewotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0uZW5kVGltZSA8PSB0aGlzLl9yYW5nZVN0
YXJ0VGltZSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGl0ZXJhdGlvbnNbaV0u
cXVldWUuaWQgaW4gdG9wSXRlcmF0aW9uQnlRdWV1ZSk7Ci0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIShpdGVyYXRpb25zW2ldLnF1ZXVl
LmlkIGluIHRvcEl0ZXJhdGlvbkJ5UXVldWUpKSB7Ci0gICAgICAgICAgICAgICAgdG9wSXRlcmF0
aW9uQnlRdWV1ZVtpdGVyYXRpb25zW2ldLnF1ZXVlLmlkXSA9IGl0ZXJhdGlvbnNbaV07Ci0gICAg
ICAgICAgICAgICAgaWYgKGVhcmxpZXN0VGltZUluUmFuZ2VXaXRoQ29sb3IgPT09IHVuZGVmaW5l
ZCkgewotICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGltZSA9IGl0ZXJhdGlvbnNbaV0uZW5k
VGltZTsKLSAgICAgICAgICAgICAgICAgICAgZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciA9
IGN1cnJlbnRUaW1lOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0aGlzLl91
cGRhdGVTdHJldGNoT2ZSZWRDb3VudGVycyh0b3BJdGVyYXRpb25CeVF1ZXVlLCBjdXJyZW50VGlt
ZSwgc3RyZXRjaE9mUmVkQ291bnRlcnMpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGl0ZXJhdGlvbnNbaV0ucmV2aXNpb25bRGFzaGJv
YXJkLlJlcG9zaXRvcnkuT3BlblNvdXJjZS5uYW1lXSA8PSB0b3BJdGVyYXRpb25CeVF1ZXVlW2l0
ZXJhdGlvbnNbaV0ucXVldWUuaWRdLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5T
b3VyY2UubmFtZV0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgIHZh
ciBkYXNoYm9hcmRXYXNBbGxHcmVlbiA9IHRoaXMuX2Rhc2hib2FyZElzQWxsR3JlZW4odG9wSXRl
cmF0aW9uQnlRdWV1ZSk7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChkYXNoYm9hcmRXYXNB
bGxHcmVlbiAhPT0gdW5kZWZpbmVkKTsKLSAgICAgICAgICAgIHRvcEl0ZXJhdGlvbkJ5UXVldWVb
aXRlcmF0aW9uc1tpXS5xdWV1ZS5pZF0gPSBpdGVyYXRpb25zW2ldOwotCi0gICAgICAgICAgICBp
ZiAoZGFzaGJvYXJkV2FzQWxsR3JlZW4gPT09IHRydWUpCi0gICAgICAgICAgICAgICAgZ3JlZW5U
aW1lICs9IGl0ZXJhdGlvbnNbaV0uZW5kVGltZSAtIGN1cnJlbnRUaW1lOwotCi0gICAgICAgICAg
ICBjdXJyZW50VGltZSA9IGl0ZXJhdGlvbnNbaV0uZW5kVGltZTsKLSAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZVN0cmV0Y2hPZlJlZENvdW50ZXJzKHRvcEl0ZXJhdGlvbkJ5UXVldWUsIGN1cnJlbnRU
aW1lLCBzdHJldGNoT2ZSZWRDb3VudGVycyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodGhp
cy5fZGFzaGJvYXJkSXNBbGxHcmVlbih0b3BJdGVyYXRpb25CeVF1ZXVlKSA9PT0gdHJ1ZSkKLSAg
ICAgICAgICAgIGdyZWVuVGltZSArPSB0aGlzLl9yYW5nZUVuZFRpbWUgLSBjdXJyZW50VGltZTsK
LQotICAgICAgICBpZiAoc3RyZXRjaE9mUmVkQ291bnRlcnMuY3VycmVudFN0cmV0Y2hPZlJlZFN0
YXJ0ICE9PSB1bmRlZmluZWQpCi0gICAgICAgICAgICBzdHJldGNoT2ZSZWRDb3VudGVycy5sb25n
ZXN0U3RyZXRjaE9mUmVkID0gTWF0aC5tYXgoc3RyZXRjaE9mUmVkQ291bnRlcnMubG9uZ2VzdFN0
cmV0Y2hPZlJlZCwgdGhpcy5fcmFuZ2VFbmRUaW1lIC0gc3RyZXRjaE9mUmVkQ291bnRlcnMuY3Vy
cmVudFN0cmV0Y2hPZlJlZFN0YXJ0KTsKLQotICAgICAgICByZXN1bHQubG9uZ2VzdFN0cmV0Y2hP
ZlJlZCA9IHN0cmV0Y2hPZlJlZENvdW50ZXJzLmxvbmdlc3RTdHJldGNoT2ZSZWQgLyAxMDAwOwot
Ci0gICAgICAgIGlmIChlYXJsaWVzdFRpbWVJblJhbmdlV2l0aENvbG9yID09PSB0aGlzLl9yYW5n
ZVN0YXJ0VGltZSkKLSAgICAgICAgICAgIHJlc3VsdC5wZXJjZW50YWdlT2ZHcmVlbiA9IGdyZWVu
VGltZSAvICh0aGlzLl9yYW5nZUVuZFRpbWUgLSB0aGlzLl9yYW5nZVN0YXJ0VGltZSkgKiAxMDA7
Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvciA9
IHRydWU7Ci0gICAgICAgICAgICBpZiAoZWFybGllc3RUaW1lSW5SYW5nZVdpdGhDb2xvciAhPT0g
dW5kZWZpbmVkKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvclRl
eHQgPSAiUXVldWUgb25seSBoYXMgcmVzdWx0cyBzdGFydGluZyAiICsgZWFybGllc3RUaW1lSW5S
YW5nZVdpdGhDb2xvcjsKLSAgICAgICAgICAgICAgICByZXN1bHQucGVyY2VudGFnZU9mR3JlZW4g
PSBncmVlblRpbWUgLyAodGhpcy5fcmFuZ2VFbmRUaW1lIC0gZWFybGllc3RUaW1lSW5SYW5nZVdp
dGhDb2xvcikgKiAxMDA7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXN1
bHQuYnVpbGRib3RSYW5nZUVycm9yVGV4dCA9ICJRdWV1ZSBoYXMgbm8gcmVzdWx0cyBpbiB0aGlz
IHJhbmdlIjsKLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBfY291bnRUaW1lczogZnVuY3Rpb24o
cXVldWVzLCByZXN1bHQpCi0gICAgewotICAgICAgICB2YXIgcmVsZXZhbnRJdGVyYXRpb25zQnlR
dWV1ZSA9IHt9OwotICAgICAgICBxdWV1ZXMuZm9yRWFjaChmdW5jdGlvbihxdWV1ZSkgewotICAg
ICAgICAgICAgcmVsZXZhbnRJdGVyYXRpb25zQnlRdWV1ZVtxdWV1ZS5pZF0gPSBxdWV1ZS5pdGVy
YXRpb25zLmZpbHRlcihmdW5jdGlvbihpdGVyYXRpb24pIHsKLSAgICAgICAgICAgICAgICByZXR1
cm4gaXRlcmF0aW9uLnByb2R1Y3RpdmUgJiYgaXRlcmF0aW9uLnN0YXJ0VGltZSA+IHRoaXMuX3Jh
bmdlU3RhcnRUaW1lICYmIGl0ZXJhdGlvbi5lbmRUaW1lIDwgdGhpcy5fcmFuZ2VFbmRUaW1lOwot
ICAgICAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgICAgICByZWxldmFudEl0ZXJhdGlvbnNCeVF1
ZXVlW3F1ZXVlLmlkXS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGEuZW5kVGltZSAtIGIu
ZW5kVGltZTsgfSk7Ci0gICAgICAgIH0sIHRoaXMpOwotCi0gICAgICAgIHZhciB0aW1lcyA9IFtd
OwotICAgICAgICB2YXIgb3duVGltZXMgPSBbXTsKLSAgICAgICAgdmFyIHdvcnN0VGltZSA9IDA7
Ci0gICAgICAgIHZhciB3b3JzdE93blRpbWUgPSAwCi0gICAgICAgIHZhciB3b3JzdFRpbWVSZXZp
c2lvbjsKLSAgICAgICAgdmFyIHdvcnN0T3duVGltZVJldmlzaW9uOwotCi0gICAgICAgIERhc2hi
b2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENvbW1pdHMuZm9yRWFjaChm
dW5jdGlvbihyZXZpc2lvbikgewotICAgICAgICAgICAgaWYgKHJldmlzaW9uLmRhdGUgPCB0aGlz
Ll9yYW5nZVN0YXJ0VGltZSB8fCByZXZpc2lvbi5kYXRlID49IHRoaXMuX3JhbmdlRW5kVGltZSkK
LSAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgIHZhciBlbmRUaW1lID0gLTE7
Ci0gICAgICAgICAgICB2YXIgb3duVGltZSA9IC0xOwotICAgICAgICAgICAgcXVldWVzLmZvckVh
Y2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAgICAgICBpZiAoIShyZXZpc2lvbi5yZXZp
c2lvbk51bWJlciBpbiB0aGlzLl90cmlnZ2VyaW5nQ29tbWl0c0J5VHJpZ2dlcmluZ1F1ZXVlW3Ro
aXMuX3RyaWdnZXJpbmdRdWV1ZShxdWV1ZSkuaWRdKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuOwotICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVsZXZhbnRJdGVyYXRp
b25zQnlRdWV1ZVtxdWV1ZS5pZF0ubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAg
dmFyIGl0ZXJhdGlvbiA9IHJlbGV2YW50SXRlcmF0aW9uc0J5UXVldWVbcXVldWUuaWRdW2ldOwot
ICAgICAgICAgICAgICAgICAgICBpZiAoaXRlcmF0aW9uLnJldmlzaW9uW0Rhc2hib2FyZC5SZXBv
c2l0b3J5Lk9wZW5Tb3VyY2UubmFtZV0gPj0gcmV2aXNpb24ucmV2aXNpb25OdW1iZXIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZFRpbWUgPSBNYXRoLm1heChlbmRUaW1lLCBpdGVyYXRp
b24uZW5kVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvd25UaW1lID0gTWF0aC5tYXgo
b3duVGltZSwgaXRlcmF0aW9uLmVuZFRpbWUgLSBpdGVyYXRpb24uc3RhcnRUaW1lKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSwgdGhpcyk7Ci0gICAgICAgICAgICBpZiAoZW5kVGlt
ZSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQob3duVGltZSA+PSAwKTsK
LSAgICAgICAgICAgICAgICB2YXIgdGltZSA9IGVuZFRpbWUgLSByZXZpc2lvbi5kYXRlOwotICAg
ICAgICAgICAgICAgIHRpbWVzLnB1c2godGltZSk7Ci0gICAgICAgICAgICAgICAgb3duVGltZXMu
cHVzaChvd25UaW1lKTsKLSAgICAgICAgICAgICAgICBpZiAodGltZSA+IHdvcnN0VGltZSkgewot
ICAgICAgICAgICAgICAgICAgICB3b3JzdFRpbWUgPSB0aW1lOwotICAgICAgICAgICAgICAgICAg
ICB3b3JzdFRpbWVDb21taXQgPSByZXZpc2lvbi5yZXZpc2lvbk51bWJlcjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG93blRpbWUgPiB3b3JzdE93blRpbWUpIHsKLSAg
ICAgICAgICAgICAgICAgICAgd29yc3RPd25UaW1lID0gb3duVGltZTsKLSAgICAgICAgICAgICAg
ICAgICAgd29yc3RPd25UaW1lQ29tbWl0ID0gcmV2aXNpb24ucmV2aXNpb25OdW1iZXI7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9LCB0aGlzKTsKLQotICAgICAg
ICByZXN1bHQuYXZlcmFnZVNlY29uZHNGcm9tQ29tbWl0ID0gdGltZXMuYXZlcmFnZSgpIC8gMTAw
MDsKLSAgICAgICAgcmVzdWx0Lm1lZGlhblNlY29uZHNGcm9tQ29tbWl0ID0gdGltZXMubWVkaWFu
KCkgLyAxMDAwOwotICAgICAgICBjb25zb2xlLmFzc2VydCh3b3JzdFRpbWUgPT09IE1hdGgubWF4
LmFwcGx5KE1hdGgsIHRpbWVzKSk7Ci0gICAgICAgIHJlc3VsdC53b3JzdFNlY29uZHNGcm9tQ29t
bWl0ID0gd29yc3RUaW1lIC8gMTAwMDsKLSAgICAgICAgcmVzdWx0LnJldmlzaW9uV2l0aFdvcnN0
VGltZUZyb21Db21taXQgPSB3b3JzdFRpbWVDb21taXQ7Ci0KLSAgICAgICAgcmVzdWx0LmF2ZXJh
Z2VTZWNvbmRzT3duVGltZSA9IG93blRpbWVzLmF2ZXJhZ2UoKSAvIDEwMDA7Ci0gICAgICAgIHJl
c3VsdC5tZWRpYW5TZWNvbmRzT3duVGltZSA9IG93blRpbWVzLm1lZGlhbigpIC8gMTAwMDsKLSAg
ICAgICAgcmVzdWx0LndvcnN0U2Vjb25kc093blRpbWUgPSB3b3JzdE93blRpbWUgLyAxMDAwOwot
ICAgICAgICBjb25zb2xlLmFzc2VydCh3b3JzdE93blRpbWUgPT09IE1hdGgubWF4LmFwcGx5KE1h
dGgsIG93blRpbWVzKSk7Ci0gICAgICAgIHJlc3VsdC5yZXZpc2lvbldpdGhXb3JzdE93blRpbWUg
PSB3b3JzdE93blRpbWVDb21taXQ7Ci0gICAgfSwKLQotICAgIF9hbmFseXplUXVldWU6IGZ1bmN0
aW9uKHF1ZXVlKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3RyaWdnZXJpbmdRdWV1ZShxdWV1
ZSkuaWQgPT09IHF1ZXVlLmlkICYmICEocXVldWUuaWQgaW4gdGhpcy5fdHJpZ2dlcmluZ0NvbW1p
dHNCeVRyaWdnZXJpbmdRdWV1ZSkpCi0gICAgICAgICAgICB0aGlzLl9yZWNvcmRUcmlnZ2VyaW5n
Q29tbWl0c0ZvclRyaWdnZXJpbmdRdWV1ZShxdWV1ZSk7Ci0KLSAgICAgICAgdmFyIHJlc3VsdCA9
IHsgcXVldWVJRDogcXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdlT2ZH
cmVlbihbcXVldWVdLCByZXN1bHQpOwotICAgICAgICB0aGlzLl9jb3VudFRpbWVzKFtxdWV1ZV0s
IHJlc3VsdCk7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQW5hbHl6
ZXIuRXZlbnQuUXVldWVSZXN1bHRzLCByZXN1bHQpOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUFn
Z3JlZ2F0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGJ1aWxkZXJRdWV1ZXMgPSB0
aGlzLl9xdWV1ZXMuZmlsdGVyKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5idWlsZGVy
OyB9KTsKLQotICAgICAgICB2YXIgYnVpbGRlcnNSZXN1bHQgPSB7IHF1ZXVlSUQ6IGFsbEJ1aWxk
ZXJSZXN1bHRzUHNldWRvUXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdl
T2ZHcmVlbihidWlsZGVyUXVldWVzLCBidWlsZGVyc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuX2Nv
dW50VGltZXMoYnVpbGRlclF1ZXVlcywgYnVpbGRlcnNSZXN1bHQpOwotICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIGJ1aWxk
ZXJzUmVzdWx0KTsKLQotICAgICAgICB2YXIgYWxsUXVldWVzUmVzdWx0ID0geyBxdWV1ZUlEOiBh
bGxSZXN1bHRzUHNldWRvUXVldWUuaWQgfTsKLSAgICAgICAgdGhpcy5fY291bnRQZXJjZW50YWdl
T2ZHcmVlbih0aGlzLl9xdWV1ZXMsIGFsbFF1ZXVlc1Jlc3VsdCk7Ci0gICAgICAgIHRoaXMuX2Nv
dW50VGltZXModGhpcy5fcXVldWVzLCBhbGxRdWV1ZXNSZXN1bHQpOwotICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhBbmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIGFsbFF1
ZXVlc1Jlc3VsdCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplOiBmdW5jdGlvbihxdWV1ZSkKLSAg
ICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2hhc1RyYWNEYXRhKTsKLQotICAgICAg
ICB0aGlzLl9xdWV1ZXNSZWFkeVRvQW5hbHl6ZS5mb3JFYWNoKGZ1bmN0aW9uKHF1ZXVlKSB7Ci0g
ICAgICAgICAgICB0aGlzLl9hbmFseXplUXVldWUocXVldWUpOwotICAgICAgICB9LCB0aGlzKTsK
LQotICAgICAgICB0aGlzLl9xdWV1ZXNSZWFkeVRvQW5hbHl6ZSA9IFtdOwotCi0gICAgICAgIGlm
ICghT2JqZWN0LmtleXModGhpcy5fcmVtYWluaW5nUXVldWVzKS5sZW5ndGgpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2FuYWx5emVBZ2dyZWdhdGUoKTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKEFuYWx5emVyLkV2ZW50LkZpbmlzaGVkLCBudWxsKTsKLSAgICAgICAg
fQotICAgIH0sCi0KLSAgICBfbG9hZGVkRnJvbVRyYWM6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsK
LSAgICAgICAgdGhpcy5faGFzVHJhY0RhdGEgPSBldmVudC5kYXRhWzBdIDw9IHRoaXMuX3Jhbmdl
U3RhcnRUaW1lICYmIGV2ZW50LmRhdGFbMV0gPj0gdGhpcy5fcmFuZ2VFbmRUaW1lOwotICAgICAg
ICBpZiAodGhpcy5faGFzVHJhY0RhdGEpCi0gICAgICAgICAgICB0aGlzLl9hbmFseXplKCk7Ci0g
ICAgfSwKLQotICAgIF9sb2FkZWRGcm9tQnVpbGRib3Q6IGZ1bmN0aW9uKHF1ZXVlKQotICAgIHsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fcXVldWVCZWluZ0xvYWRlZCA9PT0gcXVldWUu
aWQpOwotICAgICAgICB0aGlzLl9xdWV1ZUJlaW5nTG9hZGVkID0gbnVsbDsKLQotICAgICAgICBp
ZiAocXVldWUuaWQgaW4gdGhpcy5fcmVtYWluaW5nUXVldWVzKSB7Ci0gICAgICAgICAgICBkZWxl
dGUgdGhpcy5fcmVtYWluaW5nUXVldWVzW3F1ZXVlLmlkXTsKLSAgICAgICAgICAgIHRoaXMuX3F1
ZXVlc1JlYWR5VG9BbmFseXplLnB1c2gocXVldWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgZm9y
ICh2YXIgcXVldWVJRCBpbiB0aGlzLl9yZW1haW5pbmdRdWV1ZXMpIHsKLSAgICAgICAgICAgIHZh
ciBxdWV1ZSA9IHRoaXMuX3JlbWFpbmluZ1F1ZXVlc1txdWV1ZUlEXTsKLSAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHF1ZXVlLmlkID09PSBxdWV1ZUlEKTsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFxdWV1ZS5pdGVyYXRpb25zLmxlbmd0aCk7Ci0gICAgICAgICAgICB0aGlzLl9xdWV1
ZUJlaW5nTG9hZGVkID0gcXVldWVJRDsKLSAgICAgICAgICAgIHF1ZXVlLmxvYWRBbGwodGhpcy5f
bG9hZGVkRnJvbUJ1aWxkYm90LmJpbmQodGhpcykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAodGhpcy5faGFzVHJhY0RhdGEpCi0gICAgICAgICAgICB0aGlz
Ll9hbmFseXplKCk7Ci0gICAgfSwKLQotICAgIF9hbmFseXplQnViYmxlUGVyZm9ybWFuY2U6IGZ1
bmN0aW9uKHF1ZXVlSUQsIHBhdGNoZXMpCi0gICAgewotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRD
YXVzZWRJbnRlcm5hbEVycm9yID0gW107Ci0gICAgICAgIGZvciAocGF0Y2hJRCBpbiBwYXRjaGVz
KSB7Ci0gICAgICAgICAgICBpZiAocGF0Y2hlc1twYXRjaElEXS5yZXNvbHV0aW9uID09PSAiaW50
ZXJuYWwgZXJyb3IiKQotICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0Q2F1c2VkSW50ZXJuYWxF
cnJvci5wdXNoKHBhdGNoSUQpOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHdhaXRUaW1lcyA9
IFtdOwotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRXYWl0ZWRNb3JlVGhhbjNNaW51dGVzID0gW107
Ci0gICAgICAgIHZhciB0b3RhbFRpbWVzID0gW107Ci0gICAgICAgIHZhciB0b3RhbFRpbWVzRm9y
UGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZCA9IFtdOwotICAgICAgICB2YXIgdG90YWxUaW1lc0Zv
clBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkID0gW107Ci0gICAgICAgIHZhciBw
YXRjaGVzVGhhdERpZE5vdENvbXBsZXRlID0gW107Ci0gICAgICAgIHZhciByZXRyeUNvdW50cyA9
IFtdOwotICAgICAgICB2YXIgcGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGUgPSBb
XTsKLSAgICAgICAgdmFyIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHkgPSBbXTsK
LSAgICAgICAgdmFyIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkID0gW107Ci0g
ICAgICAgIHZhciBwYXRjaGVzRGlkTm90QXBwbHkgPSBbXTsKLSAgICAgICAgZm9yIChwYXRjaElE
IGluIHBhdGNoZXMpIHsKLSAgICAgICAgICAgIHZhciBwYXRjaCA9IHBhdGNoZXNbcGF0Y2hJRF07
Ci0KLSAgICAgICAgICAgIC8vIFdhaXQgdGltZSBpcyBlcXVhbGx5IGludGVyZXN0aW5nIGZvciBh
bGwgcGF0Y2hlcy4KLSAgICAgICAgICAgIHdhaXRUaW1lcy5wdXNoKHBhdGNoLndhaXRfZHVyYXRp
b24pOwotCi0gICAgICAgICAgICBpZiAocGF0Y2gud2FpdF9kdXJhdGlvbiA+IDMgKiA2MCkKLSAg
ICAgICAgICAgICAgICBwYXRjaGVzVGhhdFdhaXRlZE1vcmVUaGFuM01pbnV0ZXMucHVzaChwYXRj
aElEKTsKLQotICAgICAgICAgICAgaWYgKHBhdGNoLnJlc29sdXRpb24gPT09ICJub3QgcHJvY2Vz
c2VkIikKLSAgICAgICAgICAgICAgICBwYXRjaGVzVGhhdERpZE5vdENvbXBsZXRlLnB1c2gocGF0
Y2hJRCk7Ci0KLSAgICAgICAgICAgIGlmIChwYXRjaC5yZXRyeV9jb3VudCA9PT0gMCkKLSAgICAg
ICAgICAgICAgICB0b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZC5wdXNoKHBh
dGNoLndhaXRfZHVyYXRpb24gKyBwYXRjaC5wcm9jZXNzX2R1cmF0aW9uKTsKLSAgICAgICAgICAg
IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHJ5Q291bnRzLnB1c2gocGF0Y2gucmV0cnlfY291
bnQpOwotICAgICAgICAgICAgICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAibm90IHByb2Nl
c3NlZCIpCi0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5vdENv
bXBsZXRlLnB1c2gocGF0Y2hJRCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocGF0Y2gucmVz
b2x1dGlvbiA9PT0gImNvdWxkIG5vdCBhcHBseSIpCi0gICAgICAgICAgICAgICAgICAgIHBhdGNo
ZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHkucHVzaChwYXRjaElEKTsKLSAgICAgICAgICAg
ICAgICBlbHNlIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAicGFzcyIgfHwgcGF0Y2gucmVzb2x1
dGlvbiA9PT0gImZhaWwiKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5l
ZEFuZFBhc3NlZE9yRmFpbGVkLnB1c2gocGF0Y2hJRCk7Ci0gICAgICAgICAgICAgICAgICAgIHRv
dGFsVGltZXNGb3JQYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZC5wdXNoKHBhdGNo
LndhaXRfZHVyYXRpb24gKyBwYXRjaC5wcm9jZXNzX2R1cmF0aW9uKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFuYWx5emUgcHJvY2Vzc2luZyBw
ZXJmb3JtYW5jZSBmb3IgcGF0Y2hlcyB0aGF0IHdlcmUgZGVmaW5pdGVseSBwcm9jZXNzZWQuCi0g
ICAgICAgICAgICAvLyBXZSBjYW4ndCB0YXJnZXQgaW1wcm92aW5nIHBlcmZvcm1hbmNlIG9mIG90
aGVycyAoc3VjaCBhcyBwYXRjaGVzIHRoYXQgd2VyZSBvYnNvbGV0ZWQgd2hpbGUgaW4gdGhlIHF1
ZXVlKS4KLSAgICAgICAgICAgIC8vIFBhdGNoZXMgdGhhdCBkb24ndCBhcHBseSB0byB0cnVuayBo
YXZlIHRvIGJlIGV4Y2x1ZGVkLCBiZWNhdXNlIG90aGVyd2lzZSB3ZQotICAgICAgICAgICAgLy8g
Z2V0IHRpbWVzIGZvciBwYXRjaGVzIHRoYXQgc3Bpbm5lZCB1bnRpbCB0aGV5IGNlYXNlZCB0byBh
cHBseS4KLSAgICAgICAgICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAicGFzcyIgfHwgcGF0
Y2gucmVzb2x1dGlvbiA9PT0gImZhaWwiKQotICAgICAgICAgICAgICAgIHRvdGFsVGltZXMucHVz
aChwYXRjaC53YWl0X2R1cmF0aW9uICsgcGF0Y2gucHJvY2Vzc19kdXJhdGlvbik7Ci0KLSAgICAg
ICAgICAgIGlmIChwYXRjaC5yZXNvbHV0aW9uID09PSAiY291bGQgbm90IGFwcGx5IikKLSAgICAg
ICAgICAgICAgICBwYXRjaGVzRGlkTm90QXBwbHkucHVzaChwYXRjaElEKTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAgICBxdWV1ZUlEOiBxdWV1ZUlELAot
ICAgICAgICAgICAgdG90YWxQYXRjaGVzOiBPYmplY3Qua2V5cyhwYXRjaGVzKS5sZW5ndGgsCi0g
ICAgICAgICAgICBwYXRjaGVzVGhhdERpZE5vdENvbXBsZXRlQ291bnQ6IHBhdGNoZXNUaGF0RGlk
Tm90Q29tcGxldGUubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQ6
IHJldHJ5Q291bnRzLmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0RGlkTm90QXBwbHlD
b3VudDogcGF0Y2hlc0RpZE5vdEFwcGx5Lmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0
U3Bpbm5lZEFuZERpZE5vdENvbXBsZXRlQ291bnQ6IHBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5v
dENvbXBsZXRlLmxlbmd0aCwKLSAgICAgICAgICAgIHBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNl
ZFRvQXBwbHlDb3VudDogcGF0Y2hlc1RoYXRTcGlubmVkQW5kQ2Vhc2VkVG9BcHBseS5sZW5ndGgs
Ci0gICAgICAgICAgICBwYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50OiBw
YXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZC5sZW5ndGgsCi0gICAgICAgICAgICBt
ZWRpYW5Ub3RhbFRpbWVGb3JQYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZEluU2Vj
b25kczogdG90YWxUaW1lc0ZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkLm1l
ZGlhbigpLAotICAgICAgICAgICAgYXZlcmFnZVRvdGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5l
ZEFuZFBhc3NlZE9yRmFpbGVkSW5TZWNvbmRzOiB0b3RhbFRpbWVzRm9yUGF0Y2hlc1RoYXRTcGlu
bmVkQW5kUGFzc2VkT3JGYWlsZWQuYXZlcmFnZSgpLAotICAgICAgICAgICAgbWVkaWFuV2FpdFRp
bWVJblNlY29uZHM6IHdhaXRUaW1lcy5tZWRpYW4oKSwKLSAgICAgICAgICAgIGF2ZXJhZ2VXYWl0
VGltZUluU2Vjb25kczogd2FpdFRpbWVzLmF2ZXJhZ2UoKSwKLSAgICAgICAgICAgIG1heGltdW1X
YWl0VGltZUluU2Vjb25kczogTWF0aC5tYXguYXBwbHkoTWF0aCwgd2FpdFRpbWVzKSwKLSAgICAg
ICAgICAgIHBhdGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlc0NvdW50OiBwYXRjaGVzVGhh
dFdhaXRlZE1vcmVUaGFuM01pbnV0ZXMubGVuZ3RoLAotICAgICAgICAgICAgcGF0Y2hlc1RoYXRD
YXVzZWRJbnRlcm5hbEVycm9yOiBwYXRjaGVzVGhhdENhdXNlZEludGVybmFsRXJyb3IsCi0gICAg
ICAgIH07Ci0KLSAgICAgICAgaWYgKHRvdGFsVGltZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICBy
ZXN1bHQubWVkaWFuVG90YWxUaW1lSW5TZWNvbmRzID0gdG90YWxUaW1lcy5tZWRpYW4oKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5hdmVyYWdlVG90YWxUaW1lSW5TZWNvbmRzID0gdG90YWxUaW1lcy5h
dmVyYWdlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAodG90YWxUaW1lc0ZvclBhdGNoZXNU
aGF0V2VyZU5vdFJldHJpZWQubGVuZ3RoKSB7Ci0gICAgICAgICAgICByZXN1bHQubWVkaWFuVG90
YWxUaW1lRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZEluU2Vjb25kcyA9IHRvdGFsVGltZXNG
b3JQYXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkLm1lZGlhbigpOwotICAgICAgICAgICAgcmVzdWx0
LmF2ZXJhZ2VUb3RhbFRpbWVGb3JQYXRjaGVzVGhhdFdlcmVOb3RSZXRyaWVkSW5TZWNvbmRzID0g
dG90YWxUaW1lc0ZvclBhdGNoZXNUaGF0V2VyZU5vdFJldHJpZWQuYXZlcmFnZSgpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoQW5hbHl6ZXIuRXZl
bnQuUXVldWVSZXN1bHRzLCByZXN1bHQpOwotICAgIH0sCi0KLSAgICBfYW5hbHl6ZUFsbEJ1YmJs
ZXNQZXJmb3JtYW5jZTogZnVuY3Rpb24oZGF0YUJ5UGF0Y2gpCi0gICAgewotICAgICAgICB2YXIg
ZGF0YSA9IHt9OwotICAgICAgICBmb3IgKHF1ZXVlSUQgaW4gYnViYmxlUXVldWVTZXJ2ZXIucXVl
dWVzKQotICAgICAgICAgICAgZGF0YVtxdWV1ZUlEXSA9IHt9OwotCi0gICAgICAgIGZvciAocGF0
Y2hJRCBpbiBkYXRhQnlQYXRjaCkgewotICAgICAgICAgICAgZm9yIChxdWV1ZUlEIGluIGRhdGFC
eVBhdGNoW3BhdGNoSURdKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCEocXVldWVJRCBpbiBkYXRh
KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgdmFyIHBh
dGNoRGF0YSA9IGRhdGFCeVBhdGNoW3BhdGNoSURdW3F1ZXVlSURdOwotICAgICAgICAgICAgICAg
IGlmIChwYXRjaERhdGEuZGF0ZSA8IHRoaXMuZnJvbURhdGUgfHwgcGF0Y2hEYXRhLmRhdGUgPiB0
aGlzLnRvRGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAg
ICAgaWYgKHBhdGNoRGF0YS5yZXNvbHV0aW9uID09PSAiaW4gcHJvZ3Jlc3MiKQotICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBkYXRhW3F1ZXVlSURdW3BhdGNo
SURdID0gcGF0Y2hEYXRhOwotICAgICAgICAgICAgfTsKLSAgICAgICAgfTsKLSAgICAgICAgZm9y
IChxdWV1ZUlEIGluIGRhdGEpCi0gICAgICAgICAgICB0aGlzLl9hbmFseXplQnViYmxlUGVyZm9y
bWFuY2UocXVldWVJRCwgZGF0YVtxdWV1ZUlEXSk7Ci0gICAgfSwKLQotICAgIF9sb2FkZWRCdWJi
bGVzVGltaW5nOiBmdW5jdGlvbihkYXRhLCBmcm9tVGltZSwgdG9UaW1lKQotICAgIHsKLSAgICAg
ICAgLy8gT25seSBhbmFseXplIGlmIHRoZSBkYXRhIGNvdmVycyB0aGUgbGF0ZXN0IHJhbmdlIHJl
cXVlc3RlZCBieSB0aGUgdXNlci4KLSAgICAgICAgLy8gSXQgbWF5IGJlIGRpZmZlcmVudCBmcm9t
IHRoZSBsb2FkZWQgb25lIGlmIHRoZSB1c2VyIHF1aWNrbHkgcmVxdWVzdGVkIG11bHRpcGxlIHJh
bmdlcy4KLSAgICAgICAgaWYgKGZyb21UaW1lID4gdGhpcy5fcmFuZ2VTdGFydFRpbWUgfHwgdG9U
aW1lIDwgdGhpcy5fcmFuZ2VFbmRUaW1lKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0
aGlzLl9hbmFseXplQWxsQnViYmxlc1BlcmZvcm1hbmNlKGRhdGEpOwotICAgIH0sCi19OwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0FuYWx5emVyLmpz
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMj
IC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0J1YmJsZVZpZXcuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc0J1YmJsZVZpZXcuanMJKHJldmlzaW9u
IDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NCdWJibGVWaWV3LmpzCShu
b25leGlzdGVudCkKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1NZXRyaWNzQnViYmxl
VmlldyA9IGZ1bmN0aW9uKGFuYWx5emVyLCBxdWV1ZSkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwo
dGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicXVldWUtdmlldyIpOwotCi0gICAg
dGhpcy5fcmVzdWx0cyA9IG51bGw7Ci0KLSAgICB0aGlzLl9xdWV1ZSA9IHF1ZXVlOwotCi0gICAg
YW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5FdmVudC5TdGFydGluZywgdGhpcy5f
Y2xlYXJSZXN1bHRzLCB0aGlzKTsKLSAgICBhbmFseXplci5hZGRFdmVudExpc3RlbmVyKEFuYWx5
emVyLkV2ZW50LlF1ZXVlUmVzdWx0cywgdGhpcy5fcXVldWVSZXN1bHRzQWRkZWQsIHRoaXMpOwot
ICAgIAotICAgIHRoaXMuX3VwZGF0ZVNvb24oKTsKLX07Ci0KLU1ldHJpY3NCdWJibGVWaWV3LlVw
ZGF0ZVNvb25UaW1lb3V0ID0gMTAwOyAvLyAxMDAgbXMKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1
Y3RvckZ1bmN0aW9ucyhNZXRyaWNzQnViYmxlVmlldyk7Ci0KLU1ldHJpY3NCdWJibGVWaWV3LnBy
b3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogTWV0cmljc0J1YmJsZVZpZXcsCi0gICAgX19w
cm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIF9jbGVhclJlc3VsdHM6IGZ1bmN0
aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Jlc3VsdHMgPSBudWxsOwotICAgICAgICB0aGlz
Ll91cGRhdGVTb29uKCk7Ci0gICAgfSwKLQotICAgIF9xdWV1ZVJlc3VsdHNBZGRlZDogZnVuY3Rp
b24oZXZlbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fcXVldWUuaWQgIT09IGV2ZW50LmRh
dGEucXVldWVJRCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9yZXN1bHRz
ID0gZXZlbnQuZGF0YTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU29vbigpOwotICAgIH0sCi0KLSAg
ICBfdXBkYXRlOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB0aGlzLmVsZW1lbnQucmVtb3Zl
Q2hpbGRyZW4oKTsKLQotICAgICAgICBmdW5jdGlvbiBhZGRMaW5lKGVsZW1lbnQsIHRleHQpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBsaW5lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgICAgICBsaW5lLnRleHRDb250ZW50ID0gdGV4dDsKLSAgICAgICAgICAg
IGxpbmUuY2xhc3NMaXN0LmFkZCgicmVzdWx0LWxpbmUiKTsKLSAgICAgICAgICAgIGVsZW1lbnQu
YXBwZW5kQ2hpbGQobGluZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhZGRFcnJv
cihlbGVtZW50LCB0ZXh0KQotICAgICAgICB7Ci0gICAgICAgICAgICBhZGRMaW5lKGVsZW1lbnQs
IHRleHQpOwotICAgICAgICAgICAgZWxlbWVudC5sYXN0Q2hpbGQuY2xhc3NMaXN0LmFkZCgiZXJy
b3ItbGluZSIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gYWRkRGl2aWRlcihlbGVt
ZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgZGl2aWRlci5jbGFzc0xpc3QuYWRkKCJkaXZp
ZGVyIik7Ci0gICAgICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKGRpdmlkZXIpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gcGx1cmFsaXplTWludXRlcyhpbnRlcnZhbEluU2Vjb25k
cykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGludGVydmFsSW5TZWNvbmRzIDwgNjApCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICJsZXNzIHRoYW4gYSBtaW51dGUiOwotICAgICAgICAgICAg
ZWxzZSBpZiAoaW50ZXJ2YWxJblNlY29uZHMgPCAxMjApCi0gICAgICAgICAgICAgICAgcmV0dXJu
ICIxXHhhMG1pbnV0ZSI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE1hdGgucm91bmQoaW50ZXJ2YWxJblNlY29uZHMgLyA2MCkgKyAiXHhhMG1pbnV0ZXMiOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gZm9ybWF0UGVyY2VudGFnZShmcmFjdGlvbikKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uID4gMCAmJiBmcmFjdGlvbiA8IDAuMDEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICI8IDElIjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZChmcmFjdGlvbiAqIDEwMCkgKyAiJSI7Ci0gICAg
ICAgIH0KLQotICAgICAgICBpZiAoIXRoaXMuX3Jlc3VsdHMpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgaWYgKHRoaXMuX3F1ZXVlLmlkID09PSAic3R5bGUtcXVldWUiKSB7Ci0gICAg
ICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7Ci0gICAgICAgICAgICBhZGRMaW5lKHRo
aXMuZWxlbWVudCwgIlRpbWUgdG8gcmVzdWx0OiIpOwotICAgICAgICAgICAgYWRkTGluZSh0aGlz
LmVsZW1lbnQsICItIG1lZGlhbjogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5t
ZWRpYW5Ub3RhbFRpbWVJblNlY29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgIGFkZExpbmUodGhp
cy5lbGVtZW50LCAiLSBhdmVyYWdlOiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlzLl9yZXN1bHRz
LmF2ZXJhZ2VUb3RhbFRpbWVJblNlY29uZHMpICsgIi4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcyAhPT0gdGhpcy5fcmVzdWx0
cy5wYXRjaGVzV2l0aFJldHJpZXNDb3VudCkgewotICAgICAgICAgICAgICAgIGFkZERpdmlkZXIo
dGhpcy5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB2YXIgbnVtYmVyT2ZQYXRjaGVzVGhhdEhh
ZEZpbmFsUmVzdWx0c0F0Rmlyc3RUcnkgPSB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcyAtIHRo
aXMuX3Jlc3VsdHMucGF0Y2hlc1dpdGhSZXRyaWVzQ291bnQgLSB0aGlzLl9yZXN1bHRzLnBhdGNo
ZXNUaGF0RGlkTm90Q29tcGxldGVDb3VudCArIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlu
bmVkQW5kRGlkTm90Q29tcGxldGVDb3VudDsKLSAgICAgICAgICAgICAgICB2YXIgdGV4dCA9IGZv
cm1hdFBlcmNlbnRhZ2UobnVtYmVyT2ZQYXRjaGVzVGhhdEhhZEZpbmFsUmVzdWx0c0F0Rmlyc3RU
cnkgLyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIG9mIHBhdGNoZXMgIjsKLSAgICAg
ICAgICAgICAgICB0ZXh0ICs9ICh0aGlzLl9xdWV1ZS5pZCA9PT0gImNvbW1pdC1xdWV1ZSIpID8g
IndlcmUgbGFuZGVkIG9yIHJlamVjdGVkIiA6ICJoYWQgZmluYWwgcmVzdWx0cyI7Ci0gICAgICAg
ICAgICAgICAgdGV4dCArPSAiIGF0IGZpcnN0IHRyeS4gVGltZSB0byByZXN1bHQ6IgotICAgICAg
ICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAgICAgICBh
ZGRMaW5lKHRoaXMuZWxlbWVudCwgIi0gbWVkaWFuOiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlz
Ll9yZXN1bHRzLm1lZGlhblRvdGFsVGltZUZvclBhdGNoZXNUaGF0V2VyZU5vdFJldHJpZWRJblNl
Y29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIi0g
YXZlcmFnZTogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5fcmVzdWx0cy5hdmVyYWdlVG90YWxU
aW1lRm9yUGF0Y2hlc1RoYXRXZXJlTm90UmV0cmllZEluU2Vjb25kcykgKyAiLiIpOwotICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0RGlkTm90QXBwbHlDb3VudCAh
PT0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQp
IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWRO
b3RBcHBseUNvdW50IC0gdGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRU
b0FwcGx5Q291bnQgPT09IG51bWJlck9mUGF0Y2hlc1RoYXRIYWRGaW5hbFJlc3VsdHNBdEZpcnN0
VHJ5KQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJOb25l
IG9mIHRoZXNlIHBhdGNoZXMgYXBwbGllZCB0byB0cnVuay4iKTsKLSAgICAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJU
aGlzIGluY2x1ZGVzICIgKyBmb3JtYXRQZXJjZW50YWdlKCh0aGlzLl9yZXN1bHRzLnBhdGNoZXNU
aGF0RGlkTm90QXBwbHlDb3VudCAtIHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5k
Q2Vhc2VkVG9BcHBseUNvdW50KSAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgdGhh
dCBkaWQgbm90IGFwcGx5IHRvIHRydW5rLiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RD
b21wbGV0ZUNvdW50ICE9PSB0aGlzLl9yZXN1bHRzLnBhdGNoZXNUaGF0U3Bpbm5lZEFuZERpZE5v
dENvbXBsZXRlQ291bnQpIHsKLSAgICAgICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVu
dCk7Ci0gICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsIGZvcm1hdFBlcmNlbnRh
Z2UoKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXREaWROb3RDb21wbGV0ZUNvdW50IC0gdGhpcy5f
cmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21wbGV0ZUNvdW50KSAvIHRoaXMu
X3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgb2YgcGF0Y2hlcyBjZWFzZWQgdG8gYmUgZWxpZ2li
bGUgZm9yIHByb2Nlc3NpbmcgYmVmb3JlIHRoZSBmaXJzdCB0cnkgZmluaXNoZWQuIik7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmICh0aGlzLl9yZXN1bHRzLnBhdGNoZXNXaXRoUmV0
cmllc0NvdW50KSB7Ci0gICAgICAgICAgICAgICAgYWRkRGl2aWRlcih0aGlzLmVsZW1lbnQpOwot
ICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gZm9ybWF0UGVyY2VudGFnZSh0aGlzLl9yZXN1bHRz
LnBhdGNoZXNXaXRoUmV0cmllc0NvdW50IC8gdGhpcy5fcmVzdWx0cy50b3RhbFBhdGNoZXMpICsg
IiBvZiBwYXRjaGVzIGhhZCB0byBiZSByZXRyaWVkIjsKLSAgICAgICAgICAgICAgICBpZiAodGhp
cy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmREaWROb3RDb21wbGV0ZUNvdW50KSB7Ci0g
ICAgICAgICAgICAgICAgICAgIHRleHQgKz0gIiwgaW5jbHVkaW5nICIgKyBmb3JtYXRQZXJjZW50
YWdlKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kRGlkTm90Q29tcGxldGVDb3Vu
dCAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRjaGVzKSArICIgdGhhdCBrZXB0IGJlaW5nIHJldHJp
ZWQgdW50aWwgdGhlIHBhdGNoIGJlY2FtZSBpbmVsaWdpYmxlIGZvciBwcm9jZXNzaW5nIjsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5k
Q2Vhc2VkVG9BcHBseUNvdW50KQotICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAiLCBh
bmQgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRB
bmRDZWFzZWRUb0FwcGx5Q291bnQgLyB0aGlzLl9yZXN1bHRzLnRvdGFsUGF0Y2hlcykgKyAiIHRo
YXQga2VwdCBiZWluZyByZXRyaWVkIHVudGlsIHRoZSBwYXRjaCBjZWFzZWQgdG8gYXBwbHkgdG8g
dHJ1bmsuIjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAg
ICAgdGV4dCArPSAiLiI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9yZXN1bHRz
LnBhdGNoZXNUaGF0U3Bpbm5lZEFuZENlYXNlZFRvQXBwbHlDb3VudCkKLSAgICAgICAgICAgICAg
ICAgICAgdGV4dCArPSAiLCBpbmNsdWRpbmcgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVz
dWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRDZWFzZWRUb0FwcGx5Q291bnQgLyB0aGlzLl9yZXN1
bHRzLnRvdGFsUGF0Y2hlcykgKyAiIHRoYXQgd2VyZSBzcGlubmluZyB1bnRpbCB0aGUgcGF0Y2gg
Y2Vhc2VkIHRvIGFwcGx5IHRvIHRydW5rLiI7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgICAgICB0ZXh0ICs9ICIuIjsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy5fcmVz
dWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50KSB7Ci0gICAgICAg
ICAgICAgICAgICAgIHRleHQgKz0gKHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1dpdGhSZXRyaWVzQ291
bnQgPT09IHRoaXMuX3Jlc3VsdHMucGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWRD
b3VudCkgPyAiIEFsbCBvZiB0aGVtIiA6ICIgIiArIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVz
dWx0cy5wYXRjaGVzVGhhdFNwaW5uZWRBbmRQYXNzZWRPckZhaWxlZENvdW50IC8gdGhpcy5fcmVz
dWx0cy50b3RhbFBhdGNoZXMpOwotICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICIgZmluYWxs
eSBwcm9kdWNlZCBhIHJlc3VsdCwgd2hpY2ggdG9vazoiOwotICAgICAgICAgICAgICAgICAgICBh
ZGRMaW5lKHRoaXMuZWxlbWVudCwgdGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIGFkZExpbmUo
dGhpcy5lbGVtZW50LCAiLSBtZWRpYW46ICIgKyBwbHVyYWxpemVNaW51dGVzKHRoaXMuX3Jlc3Vs
dHMubWVkaWFuVG90YWxUaW1lRm9yUGF0Y2hlc1RoYXRTcGlubmVkQW5kUGFzc2VkT3JGYWlsZWRJ
blNlY29uZHMpICsgIjsiKTsKLSAgICAgICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1l
bnQsICItIGF2ZXJhZ2U6ICIgKyBwbHVyYWxpemVNaW51dGVzKHRoaXMuX3Jlc3VsdHMuYXZlcmFn
ZVRvdGFsVGltZUZvclBhdGNoZXNUaGF0U3Bpbm5lZEFuZFBhc3NlZE9yRmFpbGVkSW5TZWNvbmRz
KSArICIuIik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGFk
ZExpbmUodGhpcy5lbGVtZW50LCB0ZXh0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0g
ICAgICAgIGFkZERpdmlkZXIodGhpcy5lbGVtZW50KTsKLSAgICAgICAgYWRkTGluZSh0aGlzLmVs
ZW1lbnQsICJXYWl0IHRpbWUgYmVmb3JlIHByb2Nlc3Npbmcgc3RhcnRlZDoiKTsKLSAgICAgICAg
YWRkTGluZSh0aGlzLmVsZW1lbnQsICItIG1lZGlhbjogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhp
cy5fcmVzdWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcykgKyAiOyIpOwotICAgICAgICBhZGRM
aW5lKHRoaXMuZWxlbWVudCwgIi0gYXZlcmFnZTogIiArIHBsdXJhbGl6ZU1pbnV0ZXModGhpcy5f
cmVzdWx0cy5hdmVyYWdlV2FpdFRpbWVJblNlY29uZHMpICsgIi4iKTsKLSAgICAgICAgYWRkTGlu
ZSh0aGlzLmVsZW1lbnQsICItIHdvcnN0OiAiICsgcGx1cmFsaXplTWludXRlcyh0aGlzLl9yZXN1
bHRzLm1heGltdW1XYWl0VGltZUluU2Vjb25kcykgKyAiLiIpOwotICAgICAgICBpZiAodGhpcy5f
cmVzdWx0cy5tZWRpYW5XYWl0VGltZUluU2Vjb25kcyA8IDMgKiA2MCAmJiB0aGlzLl9yZXN1bHRz
LnBhdGNoZXNUaGF0V2FpdGVkTW9yZVRoYW4zTWludXRlc0NvdW50KQotICAgICAgICAgICAgYWRk
TGluZSh0aGlzLmVsZW1lbnQsIGZvcm1hdFBlcmNlbnRhZ2UodGhpcy5fcmVzdWx0cy5wYXRjaGVz
VGhhdFdhaXRlZE1vcmVUaGFuM01pbnV0ZXNDb3VudCAvIHRoaXMuX3Jlc3VsdHMudG90YWxQYXRj
aGVzKSArICIgb2YgcGF0Y2hlcyBoYWQgYSB3YWl0IHRpbWUgb2YgbW9yZSB0aGFuIDMgbWludXRl
cy4iKTsKLQotICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdENhdXNlZEludGVy
bmFsRXJyb3IubGVuZ3RoKSB7Ci0gICAgICAgICAgICBhZGREaXZpZGVyKHRoaXMuZWxlbWVudCk7
Ci0gICAgICAgICAgICBpZiAodGhpcy5fcmVzdWx0cy5wYXRjaGVzVGhhdENhdXNlZEludGVybmFs
RXJyb3IubGVuZ3RoID09PSAxKQotICAgICAgICAgICAgICAgIGFkZEVycm9yKHRoaXMuZWxlbWVu
dCwgIk9uZSBwYXRjaCBjYXVzZWQgaW50ZXJuYWwgZXJyb3IiKTsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBhZGRFcnJvcih0aGlzLmVsZW1lbnQsIHRoaXMuX3Jlc3VsdHMucGF0
Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yLmxlbmd0aCArICJceGEwcGF0Y2hlcyBjYXVzZWQg
aW50ZXJuYWwgZXJyb3IsIHBsZWFzZSBzZWUgcGF0Y2ggbnVtYmVycyBpbiBjb25zb2xlIGxvZy4i
KTsKLSAgICAgICAgICAgIGNvbnNvbGUubG9nKCJQYXRjaGVzIHRoYXQgY2F1c2VkIGludGVybmFs
IGVycm9yIGZvciAiICsgdGhpcy5fcmVzdWx0cy5xdWV1ZUlEICsgIjogIiArIHRoaXMuX3Jlc3Vs
dHMucGF0Y2hlc1RoYXRDYXVzZWRJbnRlcm5hbEVycm9yKTsKLSAgICAgICAgfQotICAgIH0sCi0K
LSAgICBfdXBkYXRlU29vbjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgc2V0VGltZW91dCh0
aGlzLl91cGRhdGUuYmluZCh0aGlzKSwgTWV0cmljc0J1YmJsZVZpZXcuVXBkYXRlU29vblRpbWVv
dXQpOwotICAgIH0sCi19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvTWV0cmljc0J1YmJsZVZpZXcuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxl
CiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRl
bGV0ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNz
TWFpbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9NZXRyaWNzTWFpbi5q
cwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc01haW4u
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSwzODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXZh
ciBoYXNCdWJibGVzID0gdHlwZW9mIGJ1YmJsZVF1ZXVlU2VydmVyICE9ICJ1bmRlZmluZWQiOwot
Ci12YXIgYW5hbHl6ZXIgPSBuZXcgQW5hbHl6ZXI7Ci0KLXZhciBhbGxCdWlsZGVyUmVzdWx0c1Bz
ZXVkb1F1ZXVlID0geyBpZDogImFsbEJ1aWxkZXJSZXN1bHRzUHNldWRvUXVldWUiIH07Ci12YXIg
YWxsUmVzdWx0c1BzZXVkb1F1ZXVlID0geyBpZDogImFsbFJlc3VsdHNQc2V1ZG9RdWV1ZSIgfTsK
LQotdmFyIGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlwZSA9IHt9OwotdmFy
IHBsYXRmb3Jtc0J5RmFtaWx5ID0ge307Ci0KLWZvciAodmFyIGkgPSAwOyBpIDwgYnVpbGRib3Rz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIGJ1aWxkYm90ID0gYnVpbGRib3RzW2ldOwotICAgIGZv
ciAodmFyIGlkIGluIGJ1aWxkYm90LnF1ZXVlcykgewotICAgICAgICB2YXIgcXVldWUgPSBidWls
ZGJvdC5xdWV1ZXNbaWRdOwotICAgICAgICB2YXIgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVl
c0J5UGxhdGZvcm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dOwotICAgICAgICBpZiAoIXBs
YXRmb3JtKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBjYXRlZ29yaXplZFF1ZXVlc0J5UGxhdGZv
cm1BbmRCdWlsZFR5cGVbcXVldWUucGxhdGZvcm1dID0ge307Ci0gICAgICAgIGlmICghcGxhdGZv
cm0uYnVpbGRlcnMpCi0gICAgICAgICAgICBwbGF0Zm9ybS5idWlsZGVycyA9IHt9OwotCi0gICAg
ICAgIHZhciBjYXRlZ29yeU5hbWU7Ci0gICAgICAgIGlmIChxdWV1ZS5idWlsZGVyKQotICAgICAg
ICAgICAgY2F0ZWdvcnlOYW1lID0gImJ1aWxkZXJzIjsKLSAgICAgICAgZWxzZSBpZiAocXVldWUu
dGVzdGVyKQotICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gcXVldWUudGVzdENhdGVnb3J5Owot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmtub3duIHF1ZXVl
IHR5cGUuIik7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGNh
dGVnb3J5ID0gcGxhdGZvcm1bY2F0ZWdvcnlOYW1lXTsKLSAgICAgICAgaWYgKCFjYXRlZ29yeSkK
LSAgICAgICAgICAgIGNhdGVnb3J5ID0gcGxhdGZvcm1bY2F0ZWdvcnlOYW1lXSA9IHt9OwotCi0g
ICAgICAgIHZhciBidWlsZFR5cGUgPSBxdWV1ZS5kZWJ1ZyA/ICJkZWJ1ZyIgOiAicmVsZWFzZSI7
Ci0KLSAgICAgICAgYnVpbGRRdWV1ZXMgPSBjYXRlZ29yeVtidWlsZFR5cGVdOwotICAgICAgICBp
ZiAoIWJ1aWxkUXVldWVzKQotICAgICAgICAgICAgYnVpbGRRdWV1ZXMgPSBjYXRlZ29yeVtidWls
ZFR5cGVdID0gW107Ci0KLSAgICAgICAgYnVpbGRRdWV1ZXMucHVzaChxdWV1ZSk7Ci0gICAgfQot
fQotCi12YXIgdGVzdE5hbWVzID0ge307Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5
LldlYktpdDJdID0gIldLMiBUZXN0cyI7Ci10ZXN0TmFtZXNbQnVpbGRib3QuVGVzdENhdGVnb3J5
LldlYktpdDFdID0gIldLMSBUZXN0cyI7Ci0KLQotZnVuY3Rpb24gdXBkYXRlSGlkZGVuUGxhdGZv
cm1zKCkKLXsKLSAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9i
amVjdCgiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwotICAgIHZhciBwbGF0Zm9ybVJv
d3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJ0ci5wbGF0Zm9ybSIpOwotICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgcGxhdGZvcm1Sb3dzLmxlbmd0aDsgKytpKQotICAgICAgICBwbGF0Zm9y
bVJvd3NbaV0uY2xhc3NMaXN0LnJlbW92ZSgiaGlkZGVuIik7Ci0KLSAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgdmFy
IHBsYXRmb3JtRmFtaWx5ID0gaGlkZGVuUGxhdGZvcm1GYW1pbGllc1tpXTsKLSAgICAgICAgZm9y
ICh2YXIgaiA9IDA7IGogPCBwbGF0Zm9ybXNCeUZhbWlseVtwbGF0Zm9ybUZhbWlseV0ubGVuZ3Ro
OyArK2opIHsKLSAgICAgICAgICAgIHZhciBuYW1lID0gcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZv
cm1GYW1pbHldW2pdOwotICAgICAgICAgICAgdmFyIHBsYXRmb3JtUm93ID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcigidHIucGxhdGZvcm0uIiArIG5hbWUpOwotICAgICAgICAgICAgaWYgKHBsYXRm
b3JtUm93KQotICAgICAgICAgICAgICAgIHBsYXRmb3JtUm93LmNsYXNzTGlzdC5hZGQoImhpZGRl
biIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHNldHRpbmdzLnVwZGF0ZVRvZ2dsZUJ1dHRvbnMo
KTsKLX0KLQotCi1mdW5jdGlvbiBpbml0UGxhdGZvcm1zQnlGYW1pbHkoKQotewotICAgIHZhciBw
bGF0Zm9ybXMgPSBEYXNoYm9hcmQuc29ydGVkUGxhdGZvcm1zOwotICAgIGZvciAodmFyIGkgaW4g
cGxhdGZvcm1zKSB7Ci0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGxhdGZvcm0gd2lsbCBiZSBk
aXNwbGF5ZWQgb24gdGhlIHBhZ2UgYmVmb3JlIGNvbnNpZGVyaW5nIGl0cyBwbGF0Zm9ybSBmYW1p
bHkuCi0gICAgICAgIGlmICghY2F0ZWdvcml6ZWRRdWV1ZXNCeVBsYXRmb3JtQW5kQnVpbGRUeXBl
W3BsYXRmb3Jtc1tpXS5uYW1lXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHZh
ciBwbGF0Zm9ybUZhbWlseSA9IHNldHRpbmdzLnBhcnNlUGxhdGZvcm1GYW1pbHkocGxhdGZvcm1z
W2ldLm5hbWUpOwotICAgICAgICBpZiAocGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHld
KQotICAgICAgICAgICAgcGxhdGZvcm1zQnlGYW1pbHlbcGxhdGZvcm1GYW1pbHldLnB1c2gocGxh
dGZvcm1zW2ldLm5hbWUpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBsYXRmb3Jtc0J5RmFt
aWx5W3BsYXRmb3JtRmFtaWx5XSA9IFtwbGF0Zm9ybXNbaV0ubmFtZV0KLSAgICB9Ci19Ci0KLWZ1
bmN0aW9uIHVuaGlkZGVuUXVldWVzKCkKLXsKLSAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGll
cyA9IHNldHRpbmdzLmdldE9iamVjdCgiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpIHx8IFtdOwot
ICAgIHZhciByZXN1bHQgPSBbXTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1aWxkYm90cy5s
ZW5ndGg7ICsraSkgewotICAgICAgICB2YXIgYnVpbGRib3QgPSBidWlsZGJvdHNbaV07Ci0gICAg
ICAgIGZvciAodmFyIGlkIGluIGJ1aWxkYm90LnF1ZXVlcykgewotICAgICAgICAgICAgdmFyIHF1
ZXVlID0gYnVpbGRib3QucXVldWVzW2lkXTsKLSAgICAgICAgICAgIGlmICgtMSA9PT0gaGlkZGVu
UGxhdGZvcm1GYW1pbGllcy5pbmRleE9mKHNldHRpbmdzLnBhcnNlUGxhdGZvcm1GYW1pbHkocXVl
dWUucGxhdGZvcm0pKSkKLSAgICAgICAgICAgICAgICByZXN1bHQucHVzaChxdWV1ZSk7Ci0gICAg
ICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1mdW5jdGlvbiBhbGxRdWV1
ZXMoY2F0ZWdvcnkpCi17Ci0gICAgdmFyIHJlc3VsdCA9IFtdOwotICAgIGlmIChjYXRlZ29yeVsi
ZGVidWciXSkKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChjYXRlZ29yeVsiZGVidWci
XSk7Ci0gICAgaWYgKGNhdGVnb3J5WyJyZWxlYXNlIl0pCi0gICAgICAgIHJlc3VsdCA9IHJlc3Vs
dC5jb25jYXQoY2F0ZWdvcnlbInJlbGVhc2UiXSk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
ZnVuY3Rpb24gYnVpbGRBZ2dyZWdhdGVUYWJsZSgpCi17Ci0gICAgdmFyIHRhYmxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKLSAgICB0YWJsZS5jbGFzc0xpc3QuYWRkKCJxdWV1
ZS1ncmlkIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgiYWdncmVnYXRlLWdyaWQiKTsKLQot
ICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpOwotICAgIHJvdy5jbGFz
c0xpc3QuYWRkKCJoZWFkZXJzIik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWlsZGVycyI7Ci0gICAgcm93
LmFwcGVuZENoaWxkKGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJBbGwgcXVldWVzIjsKLSAgICBy
b3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsKLQotICAgIHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0K
LSAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidHIiKTsKLQotICAgIGNlbGwg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFyIHZpZXcgPSBuZXcgTWV0
cmljc1ZpZXcoYW5hbHl6ZXIsIFthbGxCdWlsZGVyUmVzdWx0c1BzZXVkb1F1ZXVlXSk7Ci0gICAg
Y2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAgIHJvdy5hcHBlbmRDaGlsZChjZWxs
KTsKLQotICAgIGNlbGwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotCi0gICAgdmFy
IHZpZXcgPSBuZXcgTWV0cmljc1ZpZXcoYW5hbHl6ZXIsIFthbGxSZXN1bHRzUHNldWRvUXVldWVd
KTsKLSAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgcm93LmFwcGVuZENo
aWxkKGNlbGwpOwotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLQotICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQodGFibGUpOwotfQotCi1mdW5jdGlvbiBidWlsZFF1ZXVlc1RhYmxl
KCkKLXsKLSAgICB2YXIgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwot
ICAgIHRhYmxlLmNsYXNzTGlzdC5hZGQoInF1ZXVlLWdyaWQiKTsKLSAgICB0YWJsZS5pZCA9ICJt
ZXRyaWNzLXF1ZXVlcy10YWJsZSI7Ci0KLSAgICB2YXIgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgidHIiKTsKLSAgICByb3cuY2xhc3NMaXN0LmFkZCgiaGVhZGVycyIpOwotCi0gICAgdmFy
IGhlYWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRoIik7Ci0gICAgcm93LmFwcGVuZENo
aWxkKGhlYWRlcik7Ci0KLSAgICBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0aCIp
OwotICAgIGhlYWRlci50ZXh0Q29udGVudCA9ICJCdWlsZGVycyI7Ci0gICAgcm93LmFwcGVuZENo
aWxkKGhlYWRlcik7Ci0KLSAgICBmb3IgKHZhciB0ZXN0ZXJLZXkgaW4gQnVpbGRib3QuVGVzdENh
dGVnb3J5KSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0
aCIpOwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQgPSB0ZXN0TmFtZXNbQnVpbGRib3QuVGVz
dENhdGVnb3J5W3Rlc3RlcktleV1dOwotICAgICAgICByb3cuYXBwZW5kQ2hpbGQoaGVhZGVyKTsK
LSAgICB9Ci0KLSAgICB0YWJsZS5hcHBlbmRDaGlsZChyb3cpOwotCi0gICAgdmFyIHBsYXRmb3Jt
cyA9IERhc2hib2FyZC5zb3J0ZWRQbGF0Zm9ybXM7Ci0KLSAgICBmb3IgKHZhciBpIGluIHBsYXRm
b3JtcykgewotICAgICAgICB2YXIgcGxhdGZvcm0gPSBwbGF0Zm9ybXNbaV07Ci0gICAgICAgIHZh
ciBwbGF0Zm9ybVF1ZXVlcyA9IGNhdGVnb3JpemVkUXVldWVzQnlQbGF0Zm9ybUFuZEJ1aWxkVHlw
ZVtwbGF0Zm9ybS5uYW1lXTsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybVF1ZXVlcykKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwotCi0gICAgICAgIHZhciByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0ciIpOwotICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgicGxhdGZvcm0iKTsKLSAgICAgICAg
cm93LmNsYXNzTGlzdC5hZGQocGxhdGZvcm0ubmFtZSk7Ci0KLSAgICAgICAgdmFyIGNlbGwgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpOwotICAgICAgICBjZWxsLmNsYXNzTGlzdC5hZGQo
ImxvZ28iKTsKLQotICAgICAgICB2YXIgcmluZ0ltYWdlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW1nIik7Ci0gICAgICAgIHJpbmdJbWFnZS5jbGFzc0xpc3QuYWRkKCJyaW5nIik7Ci0gICAg
ICAgIHJpbmdJbWFnZS50aXRsZSA9IHBsYXRmb3JtLnJlYWRhYmxlTmFtZTsKLSAgICAgICAgY2Vs
bC5hcHBlbmRDaGlsZChyaW5nSW1hZ2UpOwotCi0gICAgICAgIHZhciBsb2dvSW1hZ2UgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbWciKTsKLSAgICAgICAgbG9nb0ltYWdlLmNsYXNzTGlzdC5h
ZGQoImxvZ28iKTsKLSAgICAgICAgY2VsbC5hcHBlbmRDaGlsZChsb2dvSW1hZ2UpOwotCi0gICAg
ICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLQotICAgICAgICBjZWxsID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgidGQiKTsKLQotICAgICAgICB2YXIgdmlldyA9IG5ldyBNZXRyaWNzVmlldyhh
bmFseXplciwgYWxsUXVldWVzKHBsYXRmb3JtUXVldWVzLmJ1aWxkZXJzKSk7Ci0gICAgICAgIGNl
bGwuYXBwZW5kQ2hpbGQodmlldy5lbGVtZW50KTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKGNl
bGwpOwotCi0gICAgICAgIGZvciAodmFyIHRlc3RlcktleSBpbiBCdWlsZGJvdC5UZXN0Q2F0ZWdv
cnkpIHsKLSAgICAgICAgICAgIHZhciBjZWxsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQi
KTsKLQotICAgICAgICAgICAgdmFyIHRlc3RlclByb3BlcnR5ID0gQnVpbGRib3QuVGVzdENhdGVn
b3J5W3Rlc3RlcktleV07Ci0gICAgICAgICAgICBpZiAocGxhdGZvcm1RdWV1ZXNbdGVzdGVyUHJv
cGVydHldKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBuZXcgTWV0cmljc1ZpZXcoYW5h
bHl6ZXIsIGFsbFF1ZXVlcyhwbGF0Zm9ybVF1ZXVlc1t0ZXN0ZXJQcm9wZXJ0eV0pKTsKLSAgICAg
ICAgICAgICAgICBjZWxsLmFwcGVuZENoaWxkKHZpZXcuZWxlbWVudCk7Ci0gICAgICAgICAgICB9
Ci0KLSAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChjZWxsKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIHRhYmxlLmFwcGVuZENoaWxkKHJvdyk7Ci0gICAgfQotCi0gICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZCh0YWJsZSk7Ci0KLSAgICByZXR1cm4gdGFibGU7Ci19Ci0KLWZ1bmN0aW9uIGJ1
aWxkQnViYmxlUXVldWVzVGFibGUoKQotewotICAgIHZhciB0YWJsZSA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInRhYmxlIik7Ci0gICAgdGFibGUuY2xhc3NMaXN0LmFkZCgicXVldWUtZ3JpZCIp
OwotCi0gICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgcm93
LmNsYXNzTGlzdC5hZGQoImhlYWRlcnMiKTsKLQotICAgIGZvciAoaWQgaW4gYnViYmxlUXVldWVT
ZXJ2ZXIucXVldWVzKSB7Ci0gICAgICAgIHZhciBoZWFkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJ0aCIpOwotICAgICAgICBoZWFkZXIudGV4dENvbnRlbnQgPSBidWJibGVRdWV1ZVNlcnZl
ci5xdWV1ZXNbaWRdLnNob3J0TmFtZTsKLSAgICAgICAgcm93LmFwcGVuZENoaWxkKGhlYWRlcik7
Ci0gICAgfQotCi0gICAgdGFibGUuYXBwZW5kQ2hpbGQocm93KTsKLQotICAgIHJvdyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInRyIik7Ci0gICAgcm93LmNsYXNzTGlzdC5hZGQoInBsYXRmb3Jt
Iik7Ci0KLSAgICBmb3IgKGlkIGluIGJ1YmJsZVF1ZXVlU2VydmVyLnF1ZXVlcykgewotICAgICAg
ICB2YXIgY2VsbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIik7Ci0gICAgICAgIHZhciB2
aWV3ID0gbmV3IE1ldHJpY3NCdWJibGVWaWV3KGFuYWx5emVyLCBidWJibGVRdWV1ZVNlcnZlci5x
dWV1ZXNbaWRdKTsKLSAgICAgICAgY2VsbC5hcHBlbmRDaGlsZCh2aWV3LmVsZW1lbnQpOwotICAg
ICAgICByb3cuYXBwZW5kQ2hpbGQoY2VsbCk7Ci0gICAgfQotCi0gICAgdGFibGUuYXBwZW5kQ2hp
bGQocm93KTsKLQotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFibGUpOwotCi0gICAg
cmV0dXJuIHRhYmxlOwotfQotCi1mdW5jdGlvbiBkb2N1bWVudFJlYWR5KCkKLXsKLSAgICB2YXIg
cmFuZ2VQaWNrZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgcmFuZ2VQ
aWNrZXIuaWQgPSAicmFuZ2UtcGlja2VyIjsKLSAgICByYW5nZVBpY2tlci5zaXplID0gNDA7Ci0g
ICAgcmFuZ2VQaWNrZXIudGV4dENvbnRlbnQgPSAiUGxlYXNlIHNlbGVjdCBhIGRhdGUgcmFuZ2Ui
OwotICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocmFuZ2VQaWNrZXIpOwotICAgICQoIiNy
YW5nZS1waWNrZXIiKS5kYXRlUmFuZ2VQaWNrZXIoewotICAgICAgICBzdGFydE9mV2VlazogbmF2
aWdhdG9yLmxhbmd1YWdlID09PSAiZW4tdXMiID8gInN1bmRheSIgOiAibW9uZGF5IiwKLSAgICAg
ICAgZW5kRGF0ZTogbmV3IERhdGUoKSwKLSAgICAgICAgc2hvd1Nob3J0Y3V0czogZmFsc2UsCi0g
ICAgICAgIGdldFZhbHVlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMudGV4dENvbnRlbnQ7IH0s
Ci0gICAgICAgIHNldFZhbHVlOiBmdW5jdGlvbihzKSB7IHRoaXMudGV4dENvbnRlbnQgPSBzOyB9
Ci0gICAgfSkKLSAgICAuYmluZCgnZGF0ZXBpY2tlci1hcHBseScsZnVuY3Rpb24oZXZlbnQsb2Jq
KQotICAgIHsKLSAgICAgICAgLy8gVGhpcyBtZXNzYWdlIGlzIGRpc3BhdGNoZWQgZXZlbiB3aGVu
IHJhbmdlIGhhc24ndCBiZWVuIHNlbGVjdGVkIChvciBvbmx5IG9uZSBlbmRwb2ludCB3YXMpLAot
ICAgICAgICAvLyBpbiB3aGljaCBjYXNlIHRoZSBhY3R1YWwgcmFuZ2UgaGFzbid0IGNoYW5nZWQs
IGFuZCB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLgotICAgICAgICBpZiAoaXNOYU4ob2JqLmRhdGUx
KSB8fCBpc05hTihvYmouZGF0ZTIpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZh
ciBlbmREYXRlID0gbmV3IERhdGUobmV3IERhdGUob2JqLmRhdGUyKS5zZXREYXRlKG9iai5kYXRl
Mi5nZXREYXRlKCkgKyAxKSk7Ci0KLSAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgcGVyZm9ybWFu
Y2UgYm90cy4KLSAgICAgICAgdmFyIHF1ZXVlcyA9IHVuaGlkZGVuUXVldWVzKCkuZmlsdGVyKGZ1
bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5idWlsZGVyIHx8IHF1ZXVlLnRlc3RlcjsgfSk7
Ci0gICAgICAgIGFuYWx5emVyLmFuYWx5emUocXVldWVzLCBvYmouZGF0ZTEsIGVuZERhdGUpOwot
ICAgIH0pOwotCi0gICAgdmFyIGxvYWRpbmdJbmRpY2F0b3IgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICBsb2FkaW5nSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoIm1ldHJpY3Mt
bG9hZGluZy1pbmRpY2F0b3IiKTsKLSAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRDb250ZW50ID0g
IkxvYWRpbmcgKGZpcnN0IGxvYWQgdGFrZXMgc2V2ZXJhbCBtaW51dGVzKVx1MjAyNiI7Ci0gICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsb2FkaW5nSW5kaWNhdG9yKTsKLQotICAgIGFuYWx5
emVyLmFkZEV2ZW50TGlzdGVuZXIoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcsIGZ1bmN0aW9uKCkg
ewotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnN0eWxlLnZpc2liaWxpdHkgPSAidmlzaWJsZSI7
Ci0gICAgfSwgdGhpcyk7Ci0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5lcihBbmFseXplci5F
dmVudC5GaW5pc2hlZCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxvYWRpbmdJbmRpY2F0b3Iuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwotICAgICAgICBsb2FkaW5nSW5kaWNhdG9yLnRleHRD
b250ZW50ID0gIkxvYWRpbmdcdTIwMjYiOyAvLyBSZW1vdmUgdGhlIGZpcnN0IHRpbWUgd2Fybmlu
ZyBub3cuCi0gICAgfSwgdGhpcyk7Ci0KLSAgICBidWlsZEFnZ3JlZ2F0ZVRhYmxlKCk7Ci0gICAg
aWYgKGhhc0J1YmJsZXMpIHsKLSAgICAgICAgdmFyIHRhYmxlc0RpdmlkZXIgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGFibGVzRGl2aWRlci5jbGFzc0xpc3QuYWRk
KCJ0YWJsZXMtZGl2aWRlciIpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRh
Ymxlc0RpdmlkZXIpOwotICAgICAgICBidWlsZEJ1YmJsZVF1ZXVlc1RhYmxlKCk7Ci0gICAgfQot
Ci0gICAgdmFyIHRhYmxlc0RpdmlkZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0YWJsZXNEaXZpZGVyLmNsYXNzTGlzdC5hZGQoInRhYmxlcy1kaXZpZGVyIik7Ci0gICAg
ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YWJsZXNEaXZpZGVyKTsKLQotICAgIHZhciBxdWV1
ZXNUYWJsZSA9IGJ1aWxkUXVldWVzVGFibGUoKTsKLSAgICB0YWJsZXNEaXZpZGVyLnN0eWxlLmhl
aWdodCA9IE1hdGgubWF4KHRhYmxlc0RpdmlkZXIub2Zmc2V0SGVpZ2h0LCB3aW5kb3cuaW5uZXJI
ZWlnaHQgLSB0YWJsZXNEaXZpZGVyLm9mZnNldFRvcCkgKyAicHgiOwotCi0gICAgaWYgKHNldHRp
bmdzLmF2YWlsYWJsZSgpKSB7Ci0gICAgICAgIHZhciBzZXR0aW5nc0J1dHRvbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBzZXR0aW5nc0J1dHRvbi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uICgpIHsgc2V0dGluZ3MudG9nZ2xlU2V0dGluZ3NEaXNw
bGF5KCk7IH0pOwotICAgICAgICBzZXR0aW5nc0J1dHRvbi5jbGFzc0xpc3QuYWRkKCJzZXR0aW5n
cyIpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNldHRpbmdzQnV0dG9uKTsK
LQotICAgICAgICB2YXIgc2V0dGluZ3NXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7Ci0gICAgICAgIHNldHRpbmdzV3JhcHBlci5jbGFzc0xpc3QuYWRkKCJ1bmhpZGUiLCAi
aGlkZGVuIiwgInNldHRpbmdzV3JhcHBlciIpCi0KLSAgICAgICAgdmFyIHBsYXRmb3JtRmFtaWx5
VG9nZ2xlV3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBw
bGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwgImhpZGRl
biIsICJmYW1pbHlUb2dnbGVXcmFwcGVyIik7Ci0KLSAgICAgICAgdmFyIHVuaGlkZUFsbEJ1dHRv
biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICB1bmhpZGVBbGxCdXR0
b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7IHNldHRpbmdzLmNsZWFy
SGlkZGVuUGxhdGZvcm1GYW1pbGllcygpOyB9KTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLmNs
YXNzTGlzdC5hZGQoInVuaGlkZSIsICJoaWRkZW4iLCAicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0
b24iKTsKLSAgICAgICAgdW5oaWRlQWxsQnV0dG9uLnNldEF0dHJpYnV0ZSgiaWQiLCAiYWxsLXBs
YXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIik7Ci0gICAgICAgIHVuaGlkZUFsbEJ1dHRvbi50ZXh0
Q29udGVudCA9ICJhbGwiOwotICAgICAgICBwbGF0Zm9ybUZhbWlseVRvZ2dsZVdyYXBwZXIuYXBw
ZW5kQ2hpbGQodW5oaWRlQWxsQnV0dG9uKTsKLQotICAgICAgICBpbml0UGxhdGZvcm1zQnlGYW1p
bHkoKTsKLSAgICAgICAgZm9yICh2YXIgcGxhdGZvcm1GYW1pbHkgaW4gcGxhdGZvcm1zQnlGYW1p
bHkpIHsKLSAgICAgICAgICAgIHZhciBwbGF0Zm9ybUZhbWlseVRvZ2dsZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgICAgICAgc2V0
dGluZ3MudG9nZ2xlSGlkZGVuUGxhdGZvcm1GYW1pbHkodGhpcy50b1N0cmluZygpKTsKLSAgICAg
ICAgICAgIH0uYmluZChwbGF0Zm9ybUZhbWlseSkpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1p
bHlUb2dnbGUuY2xhc3NMaXN0LmFkZCgidW5oaWRlIiwgImhpZGRlbiIsICJwbGF0Zm9ybUZhbWls
eVRvZ2dsZUJ1dHRvbiIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUuc2V0QXR0
cmlidXRlKCJpZCIsIHBsYXRmb3JtRmFtaWx5ICsgIi1wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRv
biIpOwotICAgICAgICAgICAgcGxhdGZvcm1GYW1pbHlUb2dnbGUudGV4dENvbnRlbnQgPSBwbGF0
Zm9ybUZhbWlseTsKLSAgICAgICAgICAgIHBsYXRmb3JtRmFtaWx5VG9nZ2xlV3JhcHBlci5hcHBl
bmRDaGlsZChwbGF0Zm9ybUZhbWlseVRvZ2dsZSk7Ci0gICAgICAgIH0KLSAgICAgICAgc2V0dGlu
Z3NXcmFwcGVyLmFwcGVuZENoaWxkKHBsYXRmb3JtRmFtaWx5VG9nZ2xlV3JhcHBlcik7Ci0gICAg
ICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2V0dGluZ3NXcmFwcGVyKTsKLQotICAgICAg
ICB1cGRhdGVIaWRkZW5QbGF0Zm9ybXMoKTsKLSAgICAgICAgc2V0dGluZ3MuYWRkU2V0dGluZ0xp
c3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIiwgdXBkYXRlSGlkZGVuUGxhdGZvcm1zKTsK
LSAgICAgICAgc2V0dGluZ3MuYWRkU2V0dGluZ0xpc3RlbmVyKCJlbnRlcmVkU2V0dGluZ3MiLCBm
dW5jdGlvbigpIHsgCi0gICAgICAgICAgICAkKCdodG1sLCBib2R5Jykuc3RvcCgpLmFuaW1hdGUo
ewotICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgiI21ldHJpY3MtcXVldWVzLXRhYmxlIiku
b2Zmc2V0KCkudG9wCi0gICAgICAgICAgICB9LCAyMDApOwotICAgICAgICB9KTsKLSAgICB9Ci19
Ci0KLWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLCBkb2N1bWVu
dFJlYWR5KTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJp
Y3NNYWluLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc1ZpZXcuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvTWV0cmljc1ZpZXcuanMJKHJldmlzaW9uIDI2
OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmln
L3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJpY3NWaWV3LmpzCShub25leGlzdGVu
dCkKQEAgLTEsMTcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
Ci0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0g
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1NZXRyaWNzVmlldyA9IGZ1
bmN0aW9uKGFuYWx5emVyLCBxdWV1ZXMpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwot
Ci0gICAgdGhpcy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAg
dGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInF1ZXVlLXZpZXciKTsKLQotICAgIHRoaXMuX3Jl
c3VsdHMgPSB7IH07Ci0KLSAgICB0aGlzLl9kZWJ1Z1F1ZXVlcyA9IHF1ZXVlcy5maWx0ZXIoZnVu
Y3Rpb24ocXVldWUpIHsgcmV0dXJuIHF1ZXVlLnBsYXRmb3JtICYmIHF1ZXVlLmRlYnVnOyB9KTsK
LSAgICB0aGlzLl9yZWxlYXNlUXVldWVzID0gcXVldWVzLmZpbHRlcihmdW5jdGlvbihxdWV1ZSkg
eyByZXR1cm4gcXVldWUucGxhdGZvcm0gJiYgIXF1ZXVlLmRlYnVnOyB9KTsKLSAgICB0aGlzLl9h
Z2dyZWdhdGVQc2V1ZG9RdWV1ZXMgPSBxdWV1ZXMuZmlsdGVyKGZ1bmN0aW9uKHF1ZXVlKSB7IHJl
dHVybiBxdWV1ZS5wbGF0Zm9ybSA9PT0gdW5kZWZpbmVkOyB9KTsKLQotICAgIGlmICh0aGlzLl9h
Z2dyZWdhdGVQc2V1ZG9RdWV1ZXMubGVuZ3RoKQotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgiYWdncmVnYXRlLXF1ZXVlLXZpZXciKTsKLQotICAgIHRoaXMuX2hhc011bHRpcGxl
RGVidWdRdWV1ZXMgPSB0aGlzLl9kZWJ1Z1F1ZXVlcy5sZW5ndGggPiAxOwotICAgIHRoaXMuX2hh
c011bHRpcGxlUmVsZWFzZVF1ZXVlcyA9IHRoaXMuX3JlbGVhc2VRdWV1ZXMubGVuZ3RoID4gMTsK
LQotICAgIGFuYWx5emVyLmFkZEV2ZW50TGlzdGVuZXIoQW5hbHl6ZXIuRXZlbnQuU3RhcnRpbmcs
IHRoaXMuX2NsZWFyUmVzdWx0cywgdGhpcyk7Ci0gICAgYW5hbHl6ZXIuYWRkRXZlbnRMaXN0ZW5l
cihBbmFseXplci5FdmVudC5RdWV1ZVJlc3VsdHMsIHRoaXMuX3F1ZXVlUmVzdWx0c0FkZGVkLCB0
aGlzKTsKLSAgICAKLSAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci19OwotCi1NZXRyaWNzVmlldy5V
cGRhdGVTb29uVGltZW91dCA9IDEwMDsgLy8gMTAwIG1zCi0KLUJhc2VPYmplY3QuYWRkQ29uc3Ry
dWN0b3JGdW5jdGlvbnMoTWV0cmljc1ZpZXcpOwotCi1NZXRyaWNzVmlldy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IE1ldHJpY3NWaWV3LAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVj
dC5wcm90b3R5cGUsCi0KLSAgICBfY2xlYXJSZXN1bHRzOiBmdW5jdGlvbigpCi0gICAgewotICAg
ICAgICB0aGlzLl9yZXN1bHRzID0geyB9OwotICAgICAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci0g
ICAgfSwKLQotICAgIF9xdWV1ZVJlc3VsdHNBZGRlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewot
ICAgICAgICBpZiAodGhpcy5fZGVidWdRdWV1ZXMuc29tZShmdW5jdGlvbihxdWV1ZSkgeyByZXR1
cm4gcXVldWUuaWQgPT09IGV2ZW50LmRhdGEucXVldWVJRDsgfSkKLSAgICAgICAgfHwgdGhpcy5f
cmVsZWFzZVF1ZXVlcy5zb21lKGZ1bmN0aW9uKHF1ZXVlKSB7IHJldHVybiBxdWV1ZS5pZCA9PT0g
ZXZlbnQuZGF0YS5xdWV1ZUlEOyB9KQotICAgICAgICB8fCB0aGlzLl9hZ2dyZWdhdGVQc2V1ZG9R
dWV1ZXMuc29tZShmdW5jdGlvbihxdWV1ZSkgeyByZXR1cm4gcXVldWUuaWQgPT09IGV2ZW50LmRh
dGEucXVldWVJRDsgfSkpIHsKLSAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHNbZXZlbnQuZGF0YS5x
dWV1ZUlEXSA9IGV2ZW50LmRhdGE7Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVTb29uKCk7Ci0g
ICAgICAgIH07Ci0gICAgfSwKLQotICAgIF91cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZ1bmN0aW9uIGFk
ZExpbmUoZWxlbWVudCwgdGV4dCkKLSAgICAgICAgewotICAgICAgICAgICAgdmFyIGxpbmUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgICAgIGxpbmUudGV4dENvbnRl
bnQgPSB0ZXh0OwotICAgICAgICAgICAgbGluZS5jbGFzc0xpc3QuYWRkKCJyZXN1bHQtbGluZSIp
OwotICAgICAgICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZChsaW5lKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIGZ1bmN0aW9uIGFkZEVycm9yKGVsZW1lbnQsIHRleHQpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIGFkZExpbmUoZWxlbWVudCwgdGV4dCk7Ci0gICAgICAgICAgICBlbGVtZW50Lmxhc3RD
aGlsZC5jbGFzc0xpc3QuYWRkKCJlcnJvci1saW5lIik7Ci0gICAgICAgIH0KLQotICAgICAgICBm
dW5jdGlvbiBhZGREaXZpZGVyKGVsZW1lbnQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHZhciBk
aXZpZGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgICAgICBkaXZp
ZGVyLmNsYXNzTGlzdC5hZGQoImRpdmlkZXIiKTsKLSAgICAgICAgICAgIGVsZW1lbnQuYXBwZW5k
Q2hpbGQoZGl2aWRlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRRdWV1
ZVJlc3VsdHMocXVldWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghKHF1ZXVlLmlkIGlu
IHRoaXMuX3Jlc3VsdHMpKQotICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IHRoaXMuX3Jlc3VsdHNbcXVldWUuaWRdOwotCi0gICAgICAgICAgICB2YXIg
aXNBZ2dyZWdhdGVRdWV1ZSA9IC0xICE9PSB0aGlzLl9hZ2dyZWdhdGVQc2V1ZG9RdWV1ZXMuaW5k
ZXhPZihxdWV1ZSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXN1bHQuYnVpbGRib3RSYW5nZUVycm9y
ICYmICFpc0FnZ3JlZ2F0ZVF1ZXVlKQotICAgICAgICAgICAgICAgIGFkZEVycm9yKHRoaXMuZWxl
bWVudCwgcmVzdWx0LmJ1aWxkYm90UmFuZ2VFcnJvclRleHQpOwotCi0gICAgICAgICAgICBpZiAo
InBlcmNlbnRhZ2VPZkdyZWVuIiBpbiByZXN1bHQpCi0gICAgICAgICAgICAgICAgYWRkTGluZSh0
aGlzLmVsZW1lbnQsICJHcmVlbiAiICsgTWF0aC5yb3VuZChyZXN1bHQucGVyY2VudGFnZU9mR3Jl
ZW4gKiAxMDApIC8gMTAwICsgIiUgb2YgdGltZSIpOwotCi0gICAgICAgICAgICBpZiAoaXNBZ2dy
ZWdhdGVRdWV1ZSAmJiByZXN1bHQubG9uZ2VzdFN0cmV0Y2hPZlJlZCkgewotICAgICAgICAgICAg
ICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiTG9uZ2VzdCByZWQ6ICIgKyBNYXRoLnJvdW5kKHJl
c3VsdC5sb25nZXN0U3RyZXRjaE9mUmVkIC8gNjApICsgIiBtaW51dGVzIik7Ci0gICAgICAgICAg
ICAgICAgYWRkRGl2aWRlcih0aGlzLmVsZW1lbnQpOwotICAgICAgICAgICAgfSBlbHNlIGlmICgi
cGVyY2VudGFnZU9mR3JlZW4iIGluIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBhZGREaXZpZGVy
KHRoaXMuZWxlbWVudCk7Ci0KLSAgICAgICAgICAgIGlmIChxdWV1ZS5idWlsZGVyIHx8IGlzQWdn
cmVnYXRlUXVldWUpIHsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIlRp
bWUgZnJvbSBjb21taXQ6ICIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50
LCAiQXZlcmFnZTogIiArIE1hdGgucm91bmQocmVzdWx0LmF2ZXJhZ2VTZWNvbmRzRnJvbUNvbW1p
dCAvIDYwKSArICIgbWludXRlcyIpOwotICAgICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVt
ZW50LCAiTWVkaWFuOiAiICsgTWF0aC5yb3VuZChyZXN1bHQubWVkaWFuU2Vjb25kc0Zyb21Db21t
aXQgLyA2MCkgKyAiIG1pbnV0ZXMiKTsKLSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxl
bWVudCwgIldvcnN0OiAiICsgTWF0aC5yb3VuZChyZXN1bHQud29yc3RTZWNvbmRzRnJvbUNvbW1p
dCAvIDYwKSArICIgbWludXRlcyAociIgKyByZXN1bHQucmV2aXNpb25XaXRoV29yc3RUaW1lRnJv
bUNvbW1pdCArICIpIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8v
IFRpbWUgZnJvbSBjb21taXQgaXMgcHJldHR5IHVzZWxlc3MgZm9yIHRlc3RlciBib3RzLgotICAg
ICAgICAgICAgICAgIGFkZExpbmUodGhpcy5lbGVtZW50LCAiVGltZSBvbiB0aGUgYm90OiAiKTsK
LSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIkF2ZXJhZ2U6ICIgKyBNYXRo
LnJvdW5kKHJlc3VsdC5hdmVyYWdlU2Vjb25kc093blRpbWUgLyA2MCkgKyAiIG1pbnV0ZXMiKTsK
LSAgICAgICAgICAgICAgICBhZGRMaW5lKHRoaXMuZWxlbWVudCwgIk1lZGlhbjogIiArIE1hdGgu
cm91bmQocmVzdWx0Lm1lZGlhblNlY29uZHNPd25UaW1lIC8gNjApICsgIiBtaW51dGVzIik7Ci0g
ICAgICAgICAgICAgICAgYWRkTGluZSh0aGlzLmVsZW1lbnQsICJXb3JzdDogIiArIE1hdGgucm91
bmQocmVzdWx0LndvcnN0U2Vjb25kc093blRpbWUgLyA2MCkgKyAiIG1pbnV0ZXMgKHIiICsgcmVz
dWx0LnJldmlzaW9uV2l0aFdvcnN0T3duVGltZSArICIpIik7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBhcHBlbmRCdWlsZEFyY2hpdGVjdHVyZShxdWV1ZXMs
IHNob3dBcmNoaXRlY3R1cmUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHF1ZXVlcy5mb3JFYWNo
KGZ1bmN0aW9uKHF1ZXVlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIGxhYmVsVGV4dCA9IHF1ZXVl
LmRlYnVnID8gIkRlYnVnIiA6ICJSZWxlYXNlIjsKLSAgICAgICAgICAgICAgICBpZiAoc2hvd0Fy
Y2hpdGVjdHVyZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocXVldWUuYXJjaGl0ZWN0dXJl
ID09PSBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5Vbml2ZXJzYWwpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsYWJlbFRleHQgKz0gIiAoVW5pdmVyc2FsKSI7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKHF1ZXVlLmFyY2hpdGVjdHVyZSA9PT0gQnVpbGRib3QuQnVpbGRBcmNoaXRl
Y3R1cmUuU2l4dHlGb3VyQml0KQotICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxUZXh0ICs9
ICIgKDY0LWJpdCkiOwotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChxdWV1ZS5hcmNoaXRl
Y3R1cmUgPT09IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxhYmVsVGV4dCArPSAiICgzMi1iaXQpIjsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgdmFyIHJlbGVhc2VMYWJlbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImEiKTsKLSAgICAgICAgICAgICAgICByZWxlYXNlTGFiZWwuY2xhc3NMaXN0LmFk
ZCgicXVldWVMYWJlbCIpOwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50ZXh0Q29udGVu
dCA9IGxhYmVsVGV4dDsKLSAgICAgICAgICAgICAgICByZWxlYXNlTGFiZWwuaHJlZiA9IHF1ZXVl
Lm92ZXJ2aWV3VVJMOwotICAgICAgICAgICAgICAgIHJlbGVhc2VMYWJlbC50YXJnZXQgPSAiX2Js
YW5rIjsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQocmVsZWFzZUxh
YmVsKTsKLQotICAgICAgICAgICAgICAgIGFwcGVuZFF1ZXVlUmVzdWx0cy5jYWxsKHRoaXMsIHF1
ZXVlKTsKLSAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBh
cHBlbmRCdWlsZEFyY2hpdGVjdHVyZS5jYWxsKHRoaXMsIHRoaXMuX3JlbGVhc2VRdWV1ZXMsIHRo
aXMuX2hhc011bHRpcGxlUmVsZWFzZVF1ZXVlcyk7Ci0gICAgICAgIGFwcGVuZEJ1aWxkQXJjaGl0
ZWN0dXJlLmNhbGwodGhpcywgdGhpcy5fZGVidWdRdWV1ZXMsIHRoaXMuX2hhc011bHRpcGxlRGVi
dWdRdWV1ZXMpOwotICAgICAgICAKLSAgICAgICAgdGhpcy5fYWdncmVnYXRlUHNldWRvUXVldWVz
LmZvckVhY2goZnVuY3Rpb24ocXVldWUpIHsKLSAgICAgICAgICAgIGFwcGVuZFF1ZXVlUmVzdWx0
cy5jYWxsKHRoaXMsIHF1ZXVlKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpKTsKLSAgICB9LAotCi0g
ICAgX3VwZGF0ZVNvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHNldFRpbWVvdXQodGhp
cy5fdXBkYXRlLmJpbmQodGhpcyksIE1ldHJpY3NWaWV3LlVwZGF0ZVNvb25UaW1lb3V0KTsKLSAg
ICB9LAotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL01ldHJp
Y3NWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9wb3Zlci5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCShyZXZpc2lvbiAyNjkwNDIpCisr
KyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCShub25leGlzdGVudCkKQEAgLTEsNTQ0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1EYXNoYm9hcmQuUG9wb3ZlciA9IGZ1bmN0aW9u
KGRlbGVnYXRlKQotewotICAgIEJhc2VPYmplY3QuY2FsbCh0aGlzKTsKLQotICAgIHRoaXMuZGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKLSAgICB0aGlzLl9lZGdlID0gbnVsbDsKLSAgICB0aGlzLl9mcmFt
ZSA9IG5ldyBEYXNoYm9hcmQuUmVjdDsKLSAgICB0aGlzLl9jb250ZW50ID0gbnVsbDsKLSAgICB0
aGlzLl90YXJnZXRGcmFtZSA9IG5ldyBEYXNoYm9hcmQuUmVjdDsKLSAgICB0aGlzLl9wcmVmZXJy
ZWRFZGdlcyA9IG51bGw7Ci0KLSAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSBmYWxzZTsK
LQotICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB0aGlzLl9lbGVtZW50LmNsYXNzTmFtZSA9IERhc2hib2FyZC5Qb3BvdmVyLlN0eWxlQ2xhc3NO
YW1lOwotICAgIHRoaXMuX2NhbnZhc0lkID0gInBvcG92ZXItIiArIChEYXNoYm9hcmQuUG9wb3Zl
ci5jYW52YXNJZCsrKTsKLSAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmJhY2tncm91bmRJbWFnZSA9
ICItd2Via2l0LWNhbnZhcygiICsgdGhpcy5fY2FudmFzSWQgKyAiKSI7Ci0gICAgdGhpcy5fZWxl
bWVudC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIiwgdGhpcywgdHJ1ZSk7Ci0gICAg
Ci0gICAgdGhpcy5fY29udGFpbmVyID0gdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Ci0gICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTmFtZSA9
ICJjb250YWluZXIiOwotfTsKLQotRGFzaGJvYXJkLlBvcG92ZXIuU3R5bGVDbGFzc05hbWUgPSAi
cG9wb3ZlciI7Ci1EYXNoYm9hcmQuUG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lID0gInZpc2libGUi
OwotRGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lID0gInN0ZXAtaW4iOwotRGFzaGJv
YXJkLlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSA9ICJmYWRlLW91dCI7Ci1EYXNoYm9hcmQuUG9w
b3Zlci5QcmV2ZW50RG9jdW1lbnRTY3JvbGxpbmdDbGFzc05hbWUgPSAicG9wb3Zlci1wcmV2ZW50
LWRvY3VtZW50LXNjcm9sbGluZyI7Ci1EYXNoYm9hcmQuUG9wb3Zlci5jYW52YXNJZCA9IDA7Ci1E
YXNoYm9hcmQuUG9wb3Zlci5Db3JuZXJSYWRpdXMgPSA1OwotRGFzaGJvYXJkLlBvcG92ZXIuTWlu
V2lkdGggPSA0MDsKLURhc2hib2FyZC5Qb3BvdmVyLk1pbkhlaWdodCA9IDQwOwotRGFzaGJvYXJk
LlBvcG92ZXIuU2hhZG93UGFkZGluZyA9IDU7Ci1EYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFk
ZGluZyA9IDU7Ci1EYXNoYm9hcmQuUG9wb3Zlci5BbmNob3JTaXplID0gbmV3IERhc2hib2FyZC5T
aXplKDIyLCAxMSk7Ci1EYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dFZGdlSW5zZXRzID0gbmV3IERh
c2hib2FyZC5FZGdlSW5zZXRzKERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmcpOwotCi1C
YXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKERhc2hib2FyZC5Qb3BvdmVyKTsKLQot
RGFzaGJvYXJkLlBvcG92ZXIucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBEYXNoYm9h
cmQuUG9wb3ZlciwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0gICAg
Ly8gUHVibGljCi0KLSAgICBnZXQgZWxlbWVudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhp
cy5fZWxlbWVudDsKLSAgICB9LAotCi0gICAgZ2V0IGZyYW1lKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9mcmFtZTsKLSAgICB9LAotCi0gICAgc2V0IGZyYW1lKGZyYW1lKQotICAgIHsK
LSAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5sZWZ0ID0gd2luZG93LnNjcm9sbFggKyBmcmFt
ZS5vcmlnaW4ueCArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUudG9wID0gd2lu
ZG93LnNjcm9sbFkgKyBmcmFtZS5vcmlnaW4ueSArICJweCI7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuc3R5bGUud2lkdGggPSBmcmFtZS5zaXplLndpZHRoICsgInB4IjsKLSAgICAgICAgdGhpcy5f
ZWxlbWVudC5zdHlsZS5oZWlnaHQgPSBmcmFtZS5zaXplLmhlaWdodCArICJweCI7Ci0gICAgICAg
IHRoaXMuX2VsZW1lbnQuc3R5bGUuYmFja2dyb3VuZFNpemUgPSBmcmFtZS5zaXplLndpZHRoICsg
InB4ICIgKyBmcmFtZS5zaXplLmhlaWdodCArICJweCI7Ci0gICAgICAgIHRoaXMuX2ZyYW1lID0g
ZnJhbWU7Ci0gICAgfSwKLQotICAgIGdldCB2aXNpYmxlKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3VtZW50LmJvZHkKLSAgICAgICAgICAg
ICYmICF0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5T
dGVwSW5DbGFzc05hbWUpOwotICAgIH0sCi0KLSAgICBnZXQgcG90ZW50aWFsbHlWaXNpYmxlKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUgPT09IGRvY3Vt
ZW50LmJvZHk7Ci0gICAgfSwKLQotICAgIHNldCBjb250ZW50KGNvbnRlbnQpCi0gICAgewotICAg
ICAgICBpZiAoY29udGVudCA9PT0gdGhpcy5fY29udGVudCkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50KTsKLQotICAgICAgICB0aGlzLl9jb250
ZW50ID0gY29udGVudDsKLQotICAgICAgICB0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUgPSB0cnVl
OwotCi0gICAgICAgIGlmICh0aGlzLnBvdGVudGlhbGx5VmlzaWJsZSkKLSAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZSgpOwotICAgIH0sCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0g
ICAgICAgIGlmICghdGhpcy5wb3RlbnRpYWxseVZpc2libGUpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgdmFyIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA9IGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQ7Ci0KLSAgICAgICAgdGhpcy5fY29udGVudE5lZWRzVXBkYXRlID0gdHJ1ZTsKLSAg
ICAgICAgdGhpcy5fdXBkYXRlKCk7Ci0KLSAgICAgICAgaWYgKHByZXZpb3VzbHlGb2N1c2VkRWxl
bWVudCkKLSAgICAgICAgICAgIHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudC5mb2N1cygpOwotICAg
IH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0Rhc2hib2FyZC5SZWN0fSB0YXJnZXRGcmFt
ZQotICAgICAqIEBwYXJhbSB7RWxlbWVudH0gY29udGVudAotICAgICAqIEBwYXJhbSB7RGFzaGJv
YXJkLlJlY3RFZGdlfVtdIHByZWZlcnJlZEVkZ2VzCi0gICAgICovCi0gICAgcHJlc2VudDogZnVu
Y3Rpb24odGFyZ2V0RnJhbWUsIHByZWZlcnJlZEVkZ2VzKQotICAgIHsKLSAgICAgICAgdGhpcy5f
dGFyZ2V0RnJhbWUgPSB0YXJnZXRGcmFtZTsKLSAgICAgICAgdGhpcy5fcHJlZmVycmVkRWRnZXMg
PSBwcmVmZXJyZWRFZGdlczsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50
KTsKLQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywg
dHJ1ZSk7Ci0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0
cnVlKTsKLQotICAgICAgICB0aGlzLl91cGRhdGUoKTsKLQotICAgICAgICB0aGlzLl9lbGVtZW50
LmNsYXNzTGlzdC5hZGQoRGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLQotICAg
ICAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNld2hlZWwiLCB0aGlzLCB0
cnVlKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZl
IiwgdGhpcywgdHJ1ZSk7Ci0gICAgfSwKLQotICAgIG1ha2VWaXNpYmxlSW1tZWRpYXRlbHk6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnQpOwot
Ci0gICAgICAgIHRoaXMuX2ZpbmFsaXplUHJlc2VudGF0aW9uKCk7Ci0gICAgfSwKLSAgICAKLSAg
ICBkaXNtaXNzOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5w
YXJlbnROb2RlICE9PSBkb2N1bWVudC5ib2R5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0
Q2xhc3NOYW1lKTsKLSAgICB9LAotCi0gICAgZGlzbWlzc0ltbWVkaWF0ZWx5OiBmdW5jdGlvbigp
Ci0gICAgewotICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5wYXJlbnROb2RlICE9PSBkb2N1bWVu
dC5ib2R5KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2ZpbmFsaXplRGlz
bWlzc2FsKCk7Ci0gICAgfSwKLQotICAgIGhhbmRsZUV2ZW50OiBmdW5jdGlvbihldmVudCkKLSAg
ICB7Ci0gICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewotICAgICAgICBjYXNlICJtb3VzZWRv
d24iOgotICAgICAgICBjYXNlICJzY3JvbGwiOgotICAgICAgICAgICAgaWYgKCF0aGlzLl9lbGVt
ZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpCi0gICAgICAgICAgICAgICAgdGhpcy5kaXNtaXNz
SW1tZWRpYXRlbHkoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJ0cmFuc2l0
aW9uZW5kIjoKLSAgICAgICAgICAgIGlmICh0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlu
cyhEYXNoYm9hcmQuUG9wb3Zlci5TdGVwSW5DbGFzc05hbWUpKQotICAgICAgICAgICAgICAgIHRo
aXMuX2ZpbmFsaXplUHJlc2VudGF0aW9uKCk7Ci0gICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9l
bGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhEYXNoYm9hcmQuUG9wb3Zlci5GYWRlT3V0Q2xhc3NO
YW1lKSkKLSAgICAgICAgICAgICAgICB0aGlzLl9maW5hbGl6ZURpc21pc3NhbCgpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgIm1vdXNld2hlZWwiOgotICAgICAgICAgICAgLy8g
U2Nyb2xsaW5nIGluc2lkZSBhIHBvcG92ZXIgc2hvdWxkIG5vdCBjYXNjYWRlIHRvIGRvY3VtZW50
IHdoZW4gcmVhY2hpbmcgYSBib3VuZCwgYmVjYXVzZSB0aGF0IHdvdWxkIG1ha2UgaXQgZGlzYXBw
ZWFyIHVuZXhwZWN0ZWRseS4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIG1v
dXNlZW50ZXIgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBvbmNlIGl0IHdvcmtzIHJlbGlhYmx5LCBz
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjA3ODY+LgotICAg
ICAgICAgICAgaWYgKHRoaXMuX2NvbnRhaW5lci5vZmZzZXRIZWlnaHQgPCB0aGlzLl9jb250YWlu
ZXIuc2Nyb2xsSGVpZ2h0KQotICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0
LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5QcmV2ZW50RG9jdW1lbnRTY3JvbGxpbmdDbGFzc05hbWUp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgIm1vdXNlbGVhdmUiOgotICAgICAg
ICAgICAgaWYgKCF0aGlzLl9lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudG9FbGVtZW50
KSkKLSAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoRGFzaGJv
YXJkLlBvcG92ZXIuUHJldmVudERvY3VtZW50U2Nyb2xsaW5nQ2xhc3NOYW1lKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8vIFByaXZhdGUKLQotICAgIF91
cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciB0YXJnZXRGcmFtZSA9IHRoaXMu
X3RhcmdldEZyYW1lOwotICAgICAgICB2YXIgcHJlZmVycmVkRWRnZXMgPSB0aGlzLl9wcmVmZXJy
ZWRFZGdlczsKLQotICAgICAgICAvLyBFbnN1cmUgb3VyIGVsZW1lbnQgaXMgb24gZGlzcGxheSBz
byB0aGF0IGl0cyBtZXRyaWNzIGNhbiBiZSByZXNvbHZlZC4KLSAgICAgICAgaWYgKHRoaXMuX2Vs
ZW1lbnQucGFyZW50Tm9kZSAhPT0gZG9jdW1lbnQuYm9keSkKLSAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5fZWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2Nv
bnRlbnROZWVkc1VwZGF0ZSkgewotICAgICAgICAgICAgLy8gUmVzZXQgQ1NTIHByb3BlcnRpZXMg
b24gZWxlbWVudCBzbyB0aGF0IHRoZSBlbGVtZW50IG1heSBiZSBzaXplZCB0byBmaXQgaXRzIGNv
bnRlbnQuCi0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJs
ZWZ0Iik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJ0
b3AiKTsKLSAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUucmVtb3ZlUHJvcGVydHkoIndp
ZHRoIik7Ci0gICAgICAgICAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KCJo
ZWlnaHQiKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9lZGdlICE9PSBudWxsKQotICAgICAgICAg
ICAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSh0aGlzLl9jc3NDbGFzc05hbWVG
b3JFZGdlKCkpOwotCi0gICAgICAgICAgICAvLyBBZGQgdGhlIGNvbnRlbnQgaW4gcGxhY2Ugb2Yg
dGhlIHdyYXBwZXIgdG8gZ2V0IHRoZSByYXcgbWV0cmljcy4KLSAgICAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQucmVwbGFjZUNoaWxkKHRoaXMuX2NvbnRlbnQsIHRoaXMuX2NvbnRhaW5lcik7Ci0KLSAg
ICAgICAgICAgIC8vIEdldCB0aGUgaWRlYWwgc2l6ZSBmb3IgdGhlIHBvcG92ZXIgdG8gZml0IGl0
cyBjb250ZW50LgotICAgICAgICAgICAgdmFyIHBvcG92ZXJCb3VuZHMgPSB0aGlzLl9lbGVtZW50
LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwotICAgICAgICAgICAgdGhpcy5fcHJlZmVycmVkU2l6
ZSA9IG5ldyBEYXNoYm9hcmQuU2l6ZShNYXRoLmNlaWwocG9wb3ZlckJvdW5kcy53aWR0aCksIE1h
dGguY2VpbChwb3BvdmVyQm91bmRzLmhlaWdodCkpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8g
VGhlIGZyYW1lIG9mIHRoZSB3aW5kb3cgd2l0aCBhIGxpdHRsZSBpbnNldCB0byBtYWtlIHN1cmUg
d2UgaGF2ZSByb29tIGZvciBzaGFkb3dzLgotICAgICAgICB2YXIgY29udGFpbmVyRnJhbWUgPSBu
ZXcgRGFzaGJvYXJkLlJlY3QoMCwgMCwgd2luZG93LmlubmVyV2lkdGgsIHdpbmRvdy5pbm5lckhl
aWdodCk7Ci0gICAgICAgIGNvbnRhaW5lckZyYW1lID0gY29udGFpbmVyRnJhbWUuaW5zZXQoRGFz
aGJvYXJkLlBvcG92ZXIuU2hhZG93RWRnZUluc2V0cyk7Ci0KLSAgICAgICAgLy8gV29yayBvdXQg
dGhlIG1ldHJpY3MgZm9yIGFsbCBlZGdlcy4KLSAgICAgICAgdmFyIG1ldHJpY3MgPSBuZXcgQXJy
YXkocHJlZmVycmVkRWRnZXMubGVuZ3RoKTsKLSAgICAgICAgZm9yICh2YXIgZWRnZU5hbWUgaW4g
RGFzaGJvYXJkLlJlY3RFZGdlKSB7Ci0gICAgICAgICAgICB2YXIgZWRnZSA9IERhc2hib2FyZC5S
ZWN0RWRnZVtlZGdlTmFtZV07Ci0gICAgICAgICAgICB2YXIgaXRlbSA9IHsKLSAgICAgICAgICAg
ICAgICBlZGdlOiBlZGdlLAotICAgICAgICAgICAgICAgIG1ldHJpY3M6IHRoaXMuX2Jlc3RNZXRy
aWNzRm9yRWRnZSh0aGlzLl9wcmVmZXJyZWRTaXplLCB0YXJnZXRGcmFtZSwgY29udGFpbmVyRnJh
bWUsIGVkZ2UpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgdmFyIHByZWZlcnJlZEluZGV4
ID0gcHJlZmVycmVkRWRnZXMuaW5kZXhPZihlZGdlKTsKLSAgICAgICAgICAgIGlmIChwcmVmZXJy
ZWRJbmRleCAhPT0gLTEpCi0gICAgICAgICAgICAgICAgbWV0cmljc1twcmVmZXJyZWRJbmRleF0g
PSBpdGVtOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIG1ldHJpY3MucHVzaChp
dGVtKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIGFyZWEoc2l6ZSkKLSAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIHNpemUud2lkdGggKiBzaXplLmhlaWdodDsKLSAgICAgICAg
fQotCi0gICAgICAgIC8vIEZpbmQgaWYgYW55IG9mIHRob3NlIGZpdCBiZXR0ZXIgdGhhbiB0aGUg
ZnJhbWUgZm9yIHRoZSBwcmVmZXJyZWQgZWRnZS4KLSAgICAgICAgdmFyIGJlc3RFZGdlID0gbWV0
cmljc1swXS5lZGdlOwotICAgICAgICB2YXIgYmVzdE1ldHJpY3MgPSBtZXRyaWNzWzBdLm1ldHJp
Y3M7Ci0gICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbWV0cmljcy5sZW5ndGg7IGkrKykgewot
ICAgICAgICAgICAgdmFyIGl0ZW1NZXRyaWNzID0gbWV0cmljc1tpXS5tZXRyaWNzOwotICAgICAg
ICAgICAgaWYgKGFyZWEoaXRlbU1ldHJpY3MuY29udGVudFNpemUpID4gYXJlYShiZXN0TWV0cmlj
cy5jb250ZW50U2l6ZSkpIHsKLSAgICAgICAgICAgICAgICBiZXN0RWRnZSA9IG1ldHJpY3NbaV0u
ZWRnZTsKLSAgICAgICAgICAgICAgICBiZXN0TWV0cmljcyA9IGl0ZW1NZXRyaWNzOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIGFuY2hvclBvaW50OwotICAgICAgICB2
YXIgYmVzdEZyYW1lID0gYmVzdE1ldHJpY3MuZnJhbWU7Ci0KLSAgICAgICAgdGhpcy5mcmFtZSA9
IGJlc3RGcmFtZTsKLSAgICAgICAgdGhpcy5fZWRnZSA9IGJlc3RFZGdlOwotCi0gICAgICAgIGlm
ICh0aGlzLmZyYW1lID09PSBEYXNoYm9hcmQuUmVjdC5aRVJPX1JFQ1QpIHsKLSAgICAgICAgICAg
IC8vIFRoZSB0YXJnZXQgZm9yIHRoZSBwb3BvdmVyIGlzIG9mZnNjcmVlbi4KLSAgICAgICAgICAg
IHRoaXMuZGlzbWlzcygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3dpdGNoIChi
ZXN0RWRnZSkgewotICAgICAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8v
IERpc3BsYXllZCBvbiB0aGUgbGVmdCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQu
Ci0gICAgICAgICAgICAgICAgYW5jaG9yUG9pbnQgPSBuZXcgRGFzaGJvYXJkLlBvaW50KGJlc3RG
cmFtZS5zaXplLndpZHRoIC0gRGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZywgdGFyZ2V0
RnJhbWUubWlkWSgpIC0gYmVzdEZyYW1lLm1pblkoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVk
IG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAg
ICAgICAgICBhbmNob3JQb2ludCA9IG5ldyBEYXNoYm9hcmQuUG9pbnQoRGFzaGJvYXJkLlBvcG92
ZXIuU2hhZG93UGFkZGluZywgdGFyZ2V0RnJhbWUubWlkWSgpIC0gYmVzdEZyYW1lLm1pblkoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0
RWRnZS5NSU5fWTogLy8gRGlzcGxheWVkIGFib3ZlIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBk
b3duLgotICAgICAgICAgICAgICAgIGFuY2hvclBvaW50ID0gbmV3IERhc2hib2FyZC5Qb2ludCh0
YXJnZXRGcmFtZS5taWRYKCkgLSBiZXN0RnJhbWUubWluWCgpLCBiZXN0RnJhbWUuc2l6ZS5oZWln
aHQgLSBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNw
bGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgICAg
IGFuY2hvclBvaW50ID0gbmV3IERhc2hib2FyZC5Qb2ludCh0YXJnZXRGcmFtZS5taWRYKCkgLSBi
ZXN0RnJhbWUubWluWCgpLCBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nKTsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5jbGFzc0xpc3QuYWRkKHRoaXMuX2Nzc0NsYXNzTmFtZUZvckVkZ2UoKSk7Ci0KLSAgICAg
ICAgICAgIHRoaXMuX2RyYXdCYWNrZ3JvdW5kKGJlc3RFZGdlLCBhbmNob3JQb2ludCk7Ci0KLSAg
ICAgICAgICAgIC8vIE1ha2Ugc3VyZSBjb250ZW50IGlzIGNlbnRlcmVkIGluIGNhc2UgZWl0aGVy
IG9mIHRoZSBkaW1lbnNpb24gaXMgc21hbGxlciB0aGFuIHRoZSBtaW5pbWFsIGJvdW5kcy4KLSAg
ICAgICAgICAgIGlmICh0aGlzLl9wcmVmZXJyZWRTaXplLndpZHRoIDwgRGFzaGJvYXJkLlBvcG92
ZXIuTWluV2lkdGggfHwgdGhpcy5fcHJlZmVycmVkU2l6ZS5oZWlnaHQgPCBEYXNoYm9hcmQuUG9w
b3Zlci5NaW5IZWlnaHQpCi0gICAgICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNsYXNzTGlz
dC5hZGQoImNlbnRlciIpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMu
X2NvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCJjZW50ZXIiKTsKLSAgICAgICAgfQotCi0gICAg
ICAgIC8vIFdyYXAgdGhlIGNvbnRlbnQgaW4gdGhlIGNvbnRhaW5lciBzbyB0aGF0IGl0J3MgbG9j
YXRlZCBjb3JyZWN0bHkuCi0gICAgICAgIGlmICh0aGlzLl9jb250ZW50TmVlZHNVcGRhdGUpIHsK
LSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAg
ICAgdGhpcy5fZWxlbWVudC5yZXBsYWNlQ2hpbGQodGhpcy5fY29udGFpbmVyLCB0aGlzLl9jb250
ZW50KTsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5hcHBlbmRDaGlsZCh0aGlzLl9jb250
ZW50KTsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvbnRlbnROZWVkc1VwZGF0ZSA9IGZh
bHNlOwotICAgIH0sCi0KLSAgICBfY3NzQ2xhc3NOYW1lRm9yRWRnZTogZnVuY3Rpb24oKQotICAg
IHsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9lZGdlKSB7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJk
LlJlY3RFZGdlLk1JTl9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwg
YXJyb3cgcG9pbnRzIHJpZ2h0LgotICAgICAgICAgICAgcmV0dXJuICJhcnJvdy1yaWdodCI7Ci0g
ICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9YOiAvLyBEaXNwbGF5ZWQgb24gdGhl
IHJpZ2h0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBsZWZ0LgotICAgICAgICAgICAgcmV0
dXJuICJhcnJvdy1sZWZ0IjsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1k6
IC8vIERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAgICAg
ICAgICAgIHJldHVybiAiYXJyb3ctZG93biI7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RF
ZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVw
LgotICAgICAgICAgICAgcmV0dXJuICJhcnJvdy11cCI7Ci0gICAgICAgIH0KLSAgICAgICAgY29u
c29sZS5lcnJvcigiVW5rbm93biBlZGdlLiIpOwotICAgICAgICByZXR1cm4gImFycm93LXVwIjsK
LSAgICB9LAotCi0gICAgX2RyYXdCYWNrZ3JvdW5kOiBmdW5jdGlvbihlZGdlLCBhbmNob3JQb2lu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBzY2FsZUZhY3RvciA9IHdpbmRvdy5kZXZpY2VQaXhlbFJh
dGlvOwotCi0gICAgICAgIHZhciB3aWR0aCA9IHRoaXMuX2ZyYW1lLnNpemUud2lkdGg7Ci0gICAg
ICAgIHZhciBoZWlnaHQgPSB0aGlzLl9mcmFtZS5zaXplLmhlaWdodDsKLSAgICAgICAgdmFyIHNj
YWxlZFdpZHRoID0gd2lkdGggKiBzY2FsZUZhY3RvcjsKLSAgICAgICAgdmFyIHNjYWxlZEhlaWdo
dCA9IGhlaWdodCAqIHNjYWxlRmFjdG9yOwotCi0gICAgICAgIC8vIENyZWF0ZSBhIHNjcmF0Y2gg
Y2FudmFzIHNvIHdlIGNhbiBkcmF3IHRoZSBwb3BvdmVyIHRoYXQgd2lsbCBsYXRlciBiZSBkcmF3
biBpbnRvCi0gICAgICAgIC8vIHRoZSBmaW5hbCBjb250ZXh0IHdpdGggYSBzaGFkb3cuCi0gICAg
ICAgIHZhciBzY3JhdGNoQ2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiY2FudmFzIik7
Ci0gICAgICAgIHNjcmF0Y2hDYW52YXMud2lkdGggPSBzY2FsZWRXaWR0aDsKLSAgICAgICAgc2Ny
YXRjaENhbnZhcy5oZWlnaHQgPSBzY2FsZWRIZWlnaHQ7Ci0KLSAgICAgICAgdmFyIGN0eCA9IHNj
cmF0Y2hDYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICAgICAgY3R4LnNjYWxlKHNjYWxlRmFj
dG9yLCBzY2FsZUZhY3Rvcik7Ci0KLSAgICAgICAgLy8gQm91bmRzIG9mIHRoZSBwYXRoIGRvbid0
IHRha2UgaW50byBhY2NvdW50IHRoZSBhcnJvdywgYnV0IHJlYWxseSBvbmx5IHRoZSB0aWdodCBi
b3VuZGluZyBib3gKLSAgICAgICAgLy8gb2YgdGhlIGNvbnRlbnQgY29udGFpbmVkIHdpdGhpbiB0
aGUgZnJhbWUuCi0gICAgICAgIHZhciBib3VuZHM7Ci0gICAgICAgIHZhciBhcnJvd0hlaWdodCA9
IERhc2hib2FyZC5Qb3BvdmVyLkFuY2hvclNpemUuaGVpZ2h0OwotICAgICAgICBzd2l0Y2ggKGVk
Z2UpIHsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1g6IC8vIERpc3BsYXll
ZCBvbiB0aGUgbGVmdCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgcmlnaHQuCi0gICAgICAg
ICAgICBib3VuZHMgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgMCwgd2lkdGggLSBhcnJvd0hlaWdo
dCwgaGVpZ2h0KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhc2hib2FyZC5S
ZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxheWVkIG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBh
cnJvdyBwb2ludHMgbGVmdC4KLSAgICAgICAgICAgIGJvdW5kcyA9IG5ldyBEYXNoYm9hcmQuUmVj
dChhcnJvd0hlaWdodCwgMCwgd2lkdGggLSBhcnJvd0hlaWdodCwgaGVpZ2h0KTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWTogLy8gRGlz
cGxheWVkIGFib3ZlIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyBkb3duLgotICAgICAgICAgICAg
Ym91bmRzID0gbmV3IERhc2hib2FyZC5SZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQgLSBhcnJvd0hl
aWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVk
Z2UuTUFYX1k6IC8vIERpc3BsYXllZCBiZWxvdyB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgdXAu
Ci0gICAgICAgICAgICBib3VuZHMgPSBuZXcgRGFzaGJvYXJkLlJlY3QoMCwgYXJyb3dIZWlnaHQs
IHdpZHRoLCBoZWlnaHQgLSBhcnJvd0hlaWdodCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotCi0gICAgICAgIGJvdW5kcyA9IGJvdW5kcy5pbnNldChEYXNoYm9hcmQuUG9wb3Zlci5T
aGFkb3dFZGdlSW5zZXRzKTsKLQotICAgICAgICAvLyBDbGlwIHRoZSBmcmFtZS4KLSAgICAgICAg
Y3R4LmZpbGxTdHlsZSA9ICJibGFjayI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJv
dW5kcywgZWRnZSwgYW5jaG9yUG9pbnQpOwotICAgICAgICBjdHguY2xpcCgpOwotCi0gICAgICAg
IC8vIEdyYWRpZW50IGZpbGwsIHRvcC10by1ib3R0b20uCi0gICAgICAgIHZhciBmaWxsR3JhZGll
bnQgPSBjdHguY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgMCwgMCwgaGVpZ2h0KTsKLSAgICAgICAg
ZmlsbEdyYWRpZW50LmFkZENvbG9yU3RvcCgwLCAicmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk1KSIp
OwotICAgICAgICBmaWxsR3JhZGllbnQuYWRkQ29sb3JTdG9wKDEsICJyZ2JhKDIzNSwgMjM1LCAy
MzUsIDAuOTUpIik7Ci0gICAgICAgIGN0eC5maWxsU3R5bGUgPSBmaWxsR3JhZGllbnQ7Ci0gICAg
ICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgICAgICAvLyBTdHJv
a2UuCi0gICAgICAgIGN0eC5zdHJva2VTdHlsZSA9ICJyZ2JhKDAsIDAsIDAsIDAuMjUpIjsKLSAg
ICAgICAgY3R4LmxpbmVXaWR0aCA9IDI7Ci0gICAgICAgIHRoaXMuX2RyYXdGcmFtZShjdHgsIGJv
dW5kcywgZWRnZSwgYW5jaG9yUG9pbnQpOwotICAgICAgICBjdHguc3Ryb2tlKCk7Ci0KLSAgICAg
ICAgLy8gRHJhdyB0aGUgcG9wb3ZlciBpbnRvIHRoZSBmaW5hbCBjb250ZXh0IHdpdGggYSBkcm9w
IHNoYWRvdy4KLSAgICAgICAgdmFyIGZpbmFsQ29udGV4dCA9IGRvY3VtZW50LmdldENTU0NhbnZh
c0NvbnRleHQoIjJkIiwgdGhpcy5fY2FudmFzSWQsIHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQp
OwotCi0gICAgICAgIGZpbmFsQ29udGV4dC5jbGVhclJlY3QoMCwgMCwgc2NhbGVkV2lkdGgsIHNj
YWxlZEhlaWdodCk7Ci0KLSAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd09mZnNldFggPSAxOwot
ICAgICAgICBmaW5hbENvbnRleHQuc2hhZG93T2Zmc2V0WSA9IDE7Ci0gICAgICAgIGZpbmFsQ29u
dGV4dC5zaGFkb3dCbHVyID0gNTsKLSAgICAgICAgZmluYWxDb250ZXh0LnNoYWRvd0NvbG9yID0g
InJnYmEoMCwgMCwgMCwgMC41KSI7Ci0KLSAgICAgICAgZmluYWxDb250ZXh0LmRyYXdJbWFnZShz
Y3JhdGNoQ2FudmFzLCAwLCAwLCBzY2FsZWRXaWR0aCwgc2NhbGVkSGVpZ2h0KTsKLSAgICB9LAot
ICAgIAotICAgIF9iZXN0TWV0cmljc0ZvckVkZ2U6IGZ1bmN0aW9uKHByZWZlcnJlZFNpemUsIHRh
cmdldEZyYW1lLCBjb250YWluZXJGcmFtZSwgZWRnZSkKLSAgICB7Ci0gICAgICAgIHZhciB4LCB5
OwotICAgICAgICB2YXIgd2lkdGggPSBwcmVmZXJyZWRTaXplLndpZHRoICsgKERhc2hib2FyZC5Q
b3BvdmVyLlNoYWRvd1BhZGRpbmcgKiAyKSArIChEYXNoYm9hcmQuUG9wb3Zlci5Db250ZW50UGFk
ZGluZyAqIDIpOwotICAgICAgICB2YXIgaGVpZ2h0ID0gcHJlZmVycmVkU2l6ZS5oZWlnaHQgKyAo
RGFzaGJvYXJkLlBvcG92ZXIuU2hhZG93UGFkZGluZyAqIDIpICsgKERhc2hib2FyZC5Qb3BvdmVy
LkNvbnRlbnRQYWRkaW5nICogMik7Ci0gICAgICAgIHZhciBhcnJvd0xlbmd0aCA9IERhc2hib2Fy
ZC5Qb3BvdmVyLkFuY2hvclNpemUuaGVpZ2h0OwotCi0gICAgICAgIHN3aXRjaCAoZWRnZSkgewot
ICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRo
ZSBsZWZ0IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIHdp
ZHRoICs9IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgeCA9IHRhcmdldEZyYW1lLm9yaWdpbi54
IC0gd2lkdGggKyBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nOwotICAgICAgICAgICAg
eSA9IHRhcmdldEZyYW1lLm9yaWdpbi55IC0gKGhlaWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVp
Z2h0KSAvIDI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVj
dEVkZ2UuTUFYX1g6IC8vIERpc3BsYXllZCBvbiB0aGUgcmlnaHQgb2YgdGhlIHRhcmdldCwgYXJy
b3cgcG9pbnRzIGxlZnQuCi0gICAgICAgICAgICB3aWR0aCArPSBhcnJvd0xlbmd0aDsKLSAgICAg
ICAgICAgIHggPSB0YXJnZXRGcmFtZS5vcmlnaW4ueCArIHRhcmdldEZyYW1lLnNpemUud2lkdGgg
LSBEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nOwotICAgICAgICAgICAgeSA9IHRhcmdl
dEZyYW1lLm9yaWdpbi55IC0gKGhlaWdodCAtIHRhcmdldEZyYW1lLnNpemUuaGVpZ2h0KSAvIDI7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2UuTUlO
X1k6IC8vIERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4KLSAg
ICAgICAgICAgIGhlaWdodCArPSBhcnJvd0xlbmd0aDsKLSAgICAgICAgICAgIHggPSB0YXJnZXRG
cmFtZS5vcmlnaW4ueCAtICh3aWR0aCAtIHRhcmdldEZyYW1lLnNpemUud2lkdGgpIC8gMjsKLSAg
ICAgICAgICAgIHkgPSB0YXJnZXRGcmFtZS5vcmlnaW4ueSAtIGhlaWdodCArIERhc2hib2FyZC5Q
b3BvdmVyLlNoYWRvd1BhZGRpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBE
YXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1k6IC8vIERpc3BsYXllZCBiZWxvdyB0aGUgdGFyZ2V0LCBh
cnJvdyBwb2ludHMgdXAuCi0gICAgICAgICAgICBoZWlnaHQgKz0gYXJyb3dMZW5ndGg7Ci0gICAg
ICAgICAgICB4ID0gdGFyZ2V0RnJhbWUub3JpZ2luLnggLSAod2lkdGggLSB0YXJnZXRGcmFtZS5z
aXplLndpZHRoKSAvIDI7Ci0gICAgICAgICAgICB5ID0gdGFyZ2V0RnJhbWUub3JpZ2luLnkgKyB0
YXJnZXRGcmFtZS5zaXplLmhlaWdodCAtIERhc2hib2FyZC5Qb3BvdmVyLlNoYWRvd1BhZGRpbmc7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlZGdlID09PSBE
YXNoYm9hcmQuUmVjdEVkZ2UuTUlOX1ggfHwgZWRnZSA9PT0gRGFzaGJvYXJkLlJlY3RFZGdlLk1B
WF9YKSB7Ci0gICAgICAgICAgICBpZiAoeSA8IGNvbnRhaW5lckZyYW1lLm1pblkoKSkKLSAgICAg
ICAgICAgICAgICB5ID0gY29udGFpbmVyRnJhbWUubWluWSgpOwotICAgICAgICAgICAgaWYgKHkg
KyBoZWlnaHQgPiBjb250YWluZXJGcmFtZS5tYXhZKCkpCi0gICAgICAgICAgICAgICAgeSA9IGNv
bnRhaW5lckZyYW1lLm1heFkoKSAtIGhlaWdodDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIGlmICh4IDwgY29udGFpbmVyRnJhbWUubWluWCgpKQotICAgICAgICAgICAgICAgIHggPSBj
b250YWluZXJGcmFtZS5taW5YKCk7IAotICAgICAgICAgICAgaWYgKHggKyB3aWR0aCA+IGNvbnRh
aW5lckZyYW1lLm1heFgoKSkKLSAgICAgICAgICAgICAgICB4ID0gY29udGFpbmVyRnJhbWUubWF4
WCgpIC0gd2lkdGg7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgcHJlZmVycmVkRnJhbWUgPSBu
ZXcgRGFzaGJvYXJkLlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIHZhciBiZXN0
RnJhbWUgPSBwcmVmZXJyZWRGcmFtZS5pbnRlcnNlY3Rpb25XaXRoUmVjdChjb250YWluZXJGcmFt
ZSk7Ci0KLSAgICAgICAgd2lkdGggPSBiZXN0RnJhbWUuc2l6ZS53aWR0aCAtIChEYXNoYm9hcmQu
UG9wb3Zlci5TaGFkb3dQYWRkaW5nICogMik7Ci0gICAgICAgIGhlaWdodCA9IGJlc3RGcmFtZS5z
aXplLmhlaWdodCAtIChEYXNoYm9hcmQuUG9wb3Zlci5TaGFkb3dQYWRkaW5nICogMik7Ci0KLSAg
ICAgICAgc3dpdGNoIChlZGdlKSB7Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1J
Tl9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIGxlZnQgb2YgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRz
IHJpZ2h0LgotICAgICAgICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NQVhfWDogLy8gRGlzcGxh
eWVkIG9uIHRoZSByaWdodCBvZiB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgbGVmdC4KLSAgICAg
ICAgICAgIHdpZHRoIC09IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9ZOiAvLyBEaXNwbGF5ZWQgYWJvdmUgdGhlIHRh
cmdldCwgYXJyb3cgcG9pbnRzIGRvd24uCi0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdl
Lk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVsb3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgot
ICAgICAgICAgICAgaGVpZ2h0IC09IGFycm93TGVuZ3RoOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgZnJhbWU6IGJlc3RGcmFt
ZSwKLSAgICAgICAgICAgIGNvbnRlbnRTaXplOiBuZXcgRGFzaGJvYXJkLlNpemUod2lkdGgsIGhl
aWdodCkKLSAgICAgICAgfTsKLSAgICB9LAotCi0gICAgX2RyYXdGcmFtZTogZnVuY3Rpb24oY3R4
LCBib3VuZHMsIGFuY2hvckVkZ2UsIGFuY2hvclBvaW50KQotICAgIHsKLSAgICAgICAgdmFyIHIg
PSBEYXNoYm9hcmQuUG9wb3Zlci5Db3JuZXJSYWRpdXM7Ci0gICAgICAgIHZhciBhcnJvd0hhbGZM
ZW5ndGggPSBEYXNoYm9hcmQuUG9wb3Zlci5BbmNob3JTaXplLndpZHRoIC8gMjsKLQotICAgICAg
ICBjdHguYmVnaW5QYXRoKCk7Ci0gICAgICAgIHN3aXRjaCAoYW5jaG9yRWRnZSkgewotICAgICAg
ICBjYXNlIERhc2hib2FyZC5SZWN0RWRnZS5NSU5fWDogLy8gRGlzcGxheWVkIG9uIHRoZSBsZWZ0
IG9mIHRoZSB0YXJnZXQsIGFycm93IHBvaW50cyByaWdodC4KLSAgICAgICAgICAgIGN0eC5tb3Zl
VG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblkoKSArIHIpOwotICAgICAgICAgICAgY3R4Lmxp
bmVUbyhib3VuZHMubWF4WCgpLCBhbmNob3JQb2ludC55IC0gYXJyb3dIYWxmTGVuZ3RoKTsKLSAg
ICAgICAgICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCwgYW5jaG9yUG9pbnQueSk7Ci0gICAg
ICAgICAgICBjdHgubGluZVRvKGJvdW5kcy5tYXhYKCksIGFuY2hvclBvaW50LnkgKyBhcnJvd0hh
bGZMZW5ndGgpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5t
YXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgY3R4
LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5k
cy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5k
cy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAg
Y3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJv
dW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRGFzaGJv
YXJkLlJlY3RFZGdlLk1BWF9YOiAvLyBEaXNwbGF5ZWQgb24gdGhlIHJpZ2h0IG9mIHRoZSB0YXJn
ZXQsIGFycm93IHBvaW50cyBsZWZ0LgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhib3VuZHMubWlu
WCgpLCBib3VuZHMubWF4WSgpIC0gcik7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGJvdW5kcy5t
aW5YKCksIGFuY2hvclBvaW50LnkgKyBhcnJvd0hhbGZMZW5ndGgpOwotICAgICAgICAgICAgY3R4
LmxpbmVUbyhhbmNob3JQb2ludC54LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAgICAgIGN0eC5s
aW5lVG8oYm91bmRzLm1pblgoKSwgYW5jaG9yUG9pbnQueSAtIGFycm93SGFsZkxlbmd0aCk7Ci0g
ICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRz
Lm1heFgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRz
Lm1heFgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgcik7
Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgYm91
bmRzLm1pblgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91
bmRzLm1pblgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwg
cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBEYXNoYm9hcmQuUmVjdEVkZ2Uu
TUlOX1k6IC8vIERpc3BsYXllZCBhYm92ZSB0aGUgdGFyZ2V0LCBhcnJvdyBwb2ludHMgZG93bi4K
LSAgICAgICAgICAgIGN0eC5tb3ZlVG8oYm91bmRzLm1heFgoKSAtIHIsIGJvdW5kcy5tYXhZKCkp
OwotICAgICAgICAgICAgY3R4LmxpbmVUbyhhbmNob3JQb2ludC54ICsgYXJyb3dIYWxmTGVuZ3Ro
LCBib3VuZHMubWF4WSgpKTsKLSAgICAgICAgICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCwg
YW5jaG9yUG9pbnQueSk7Ci0gICAgICAgICAgICBjdHgubGluZVRvKGFuY2hvclBvaW50LnggLSBh
cnJvd0hhbGZMZW5ndGgsIGJvdW5kcy5tYXhZKCkpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJv
dW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCks
IHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5taW5YKCksIGJvdW5kcy5taW5ZKCks
IGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1Rv
KGJvdW5kcy5tYXhYKCksIGJvdW5kcy5taW5ZKCksIGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZ
KCksIHIpOwotICAgICAgICAgICAgY3R4LmFyY1RvKGJvdW5kcy5tYXhYKCksIGJvdW5kcy5tYXhZ
KCksIGJvdW5kcy5taW5YKCksIGJvdW5kcy5tYXhZKCksIHIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgRGFzaGJvYXJkLlJlY3RFZGdlLk1BWF9ZOiAvLyBEaXNwbGF5ZWQgYmVs
b3cgdGhlIHRhcmdldCwgYXJyb3cgcG9pbnRzIHVwLgotICAgICAgICAgICAgY3R4Lm1vdmVUbyhi
b3VuZHMubWluWCgpICsgciwgYm91bmRzLm1pblkoKSk7Ci0gICAgICAgICAgICBjdHgubGluZVRv
KGFuY2hvclBvaW50LnggLSBhcnJvd0hhbGZMZW5ndGgsIGJvdW5kcy5taW5ZKCkpOwotICAgICAg
ICAgICAgY3R4LmxpbmVUbyhhbmNob3JQb2ludC54LCBhbmNob3JQb2ludC55KTsKLSAgICAgICAg
ICAgIGN0eC5saW5lVG8oYW5jaG9yUG9pbnQueCArIGFycm93SGFsZkxlbmd0aCwgYm91bmRzLm1p
blkoKSk7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1pblko
KSwgYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJj
VG8oYm91bmRzLm1heFgoKSwgYm91bmRzLm1heFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1h
eFkoKSwgcik7Ci0gICAgICAgICAgICBjdHguYXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1h
eFkoKSwgYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgcik7Ci0gICAgICAgICAgICBjdHgu
YXJjVG8oYm91bmRzLm1pblgoKSwgYm91bmRzLm1pblkoKSwgYm91bmRzLm1heFgoKSwgYm91bmRz
Lm1pblkoKSwgcik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjdHgu
Y2xvc2VQYXRoKCk7Ci0gICAgfSwKLQotICAgIF9maW5hbGl6ZVByZXNlbnRhdGlvbjogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdmFyIHdhc1Zpc2libGUgPSB0aGlzLnZpc2libGU7Ci0gICAg
ICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShEYXNoYm9hcmQuUG9wb3Zlci5TdGVw
SW5DbGFzc05hbWUpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoRGFz
aGJvYXJkLlBvcG92ZXIuRmFkZU91dENsYXNzTmFtZSk7Ci0gICAgICAgIHRoaXMuX2VsZW1lbnQu
Y2xhc3NMaXN0LmFkZChEYXNoYm9hcmQuUG9wb3Zlci5WaXNpYmxlQ2xhc3NOYW1lKTsKLQotICAg
ICAgICAvLyBNYWtlIHNjcm9sbCBiYXIgZmxhc2ggaWYgcHJlc2VudCwgc28gdGhhdCB0aGUgdXNl
ciBzZWVzIHRoYXQgc2Nyb2xsaW5nIGlzIHBvc3NpYmxlLgotICAgICAgICAvLyBGSVhNRTogSXMg
dGhlcmUgYSBiZXR0ZXIgd2F5PwotICAgICAgICBpZiAoIXdhc1Zpc2libGUpIHsKLSAgICAgICAg
ICAgIHRoaXMuX2NvbnRhaW5lci5zY3JvbGxUb3AgPSAxOwotICAgICAgICAgICAgdGhpcy5fY29u
dGFpbmVyLnNjcm9sbFRvcCA9IDA7Ci0gICAgICAgIH0KLSAgICB9LAotCi0gICAgX2ZpbmFsaXpl
RGlzbWlzc2FsOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRM
aXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcywgdHJ1ZSk7Ci0gICAgICAgIHdpbmRvdy5yZW1vdmVF
dmVudExpc3RlbmVyKCJzY3JvbGwiLCB0aGlzLCB0cnVlKTsKLQotICAgICAgICBkb2N1bWVudC5i
b2R5LnJlbW92ZUNoaWxkKHRoaXMuX2VsZW1lbnQpOwotICAgICAgICBkb2N1bWVudC5ib2R5LmNs
YXNzTGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuUHJldmVudERvY3VtZW50U2Nyb2xsaW5n
Q2xhc3NOYW1lKTsKLSAgICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERhc2hi
b2FyZC5Qb3BvdmVyLlZpc2libGVDbGFzc05hbWUpOwotICAgICAgICB0aGlzLl9lbGVtZW50LmNs
YXNzTGlzdC5yZW1vdmUoRGFzaGJvYXJkLlBvcG92ZXIuU3RlcEluQ2xhc3NOYW1lKTsKLSAgICAg
ICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERhc2hib2FyZC5Qb3BvdmVyLkZhZGVP
dXRDbGFzc05hbWUpOwotICAgICAgICB0aGlzLl9jb250YWluZXIudGV4dENvbnRlbnQgPSAiIjsK
LSAgICAgICAgaWYgKHRoaXMuZGVsZWdhdGUgJiYgdHlwZW9mIHRoaXMuZGVsZWdhdGUuZGlkRGlz
bWlzc1BvcG92ZXIgPT09ICJmdW5jdGlvbiIpCi0gICAgICAgICAgICB0aGlzLmRlbGVnYXRlLmRp
ZERpc21pc3NQb3BvdmVyKHRoaXMpOwotICAgIH0KLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy9Qb3BvdmVyLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVv
bC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9w
ZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
UG9wb3ZlclRyYWNrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUG9w
b3ZlclRyYWNrZXIuanMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRz
L1BvcG92ZXJUcmFja2VyLmpzCShub25leGlzdGVudCkKQEAgLTEsMTc0ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1Qb3BvdmVyVHJhY2tlciA9IGZ1bmN0aW9uKGVsZW1lbnQsIHByZXNlbnRQb3BvdmVy
Q2FsbGJhY2ssIGNvbnRleHQpCi17Ci0gICAgQmFzZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAg
Y29uc29sZS5hc3NlcnQoZWxlbWVudCk7Ci0gICAgY29uc29sZS5hc3NlcnQocHJlc2VudFBvcG92
ZXJDYWxsYmFjayAmJiB0eXBlb2YgcHJlc2VudFBvcG92ZXJDYWxsYmFjayA9PT0gImZ1bmN0aW9u
Iik7Ci0KLSAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDsKLSAgICB0aGlzLl9wcmVzZW50UG9w
b3ZlciA9IHByZXNlbnRQb3BvdmVyQ2FsbGJhY2s7Ci0gICAgdGhpcy5fY29udGV4dCA9IGNvbnRl
eHQ7Ci0gICAgdGhpcy5fYWN0aXZlID0gZmFsc2U7Ci0KLSAgICBlbGVtZW50LmNsYXNzTGlzdC5h
ZGQoInBvcG92ZXItdHJhY2tpbmciKTsKLSAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1v
dXNlZW50ZXIiLCB0aGlzLl9tb3VzZUVudGVyZWRQb3BvdmVyT3JFbGVtZW50LmJpbmQodGhpcyks
IHRydWUpOwotICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMu
X21vdXNlRXhpdGVkUG9wb3Zlck9yRWxlbWVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICBlbGVt
ZW50LnBvcG92ZXJUcmFja2VyID0gdGhpczsKLX07Ci0KLS8vIE9ubHkgb25lIHBvcG92ZXIgbWF5
IGJlIGFjdGl2ZSBhdCBhbnkgdGltZS4gQW4gYWN0aXZlIHBvcG92ZXIgaXMgbm90IG5lY2Vzc2Fy
aWx5IHZpc2libGUgYWxyZWFkeS4KLVBvcG92ZXJUcmFja2VyLl9wb3BvdmVyID0gbnVsbDsKLQot
Ly8gQSBjYW5kaWRhdGUgdGltZXIgbWF5IGJlIGFjdGl2ZSB3aGV0aGVyIHdlIGhhdmUgYW4gYWN0
aXZlIHBvcG92ZXIgb3Igbm90LgotUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIgPSBu
dWxsOwotUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyID0gbnVsbDsKLVBvcG92ZXJUcmFj
a2VyLkNhbmRpZGF0ZVN3aXRjaERlbGF5ID0gMjAwOwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKFBvcG92ZXJUcmFja2VyKTsKLQotUG9wb3ZlclRyYWNrZXIuX3NldENhbmRp
ZGF0ZVBvcG92ZXJUcmFja2VyID0gZnVuY3Rpb24ocG9wb3ZlclRyYWNrZXIpCi17Ci0gICAgY29u
c29sZS5hc3NlcnQoIXBvcG92ZXJUcmFja2VyIHx8ICFwb3BvdmVyVHJhY2tlci5fYWN0aXZlKTsK
LQotICAgIGlmIChQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRlVHJhY2tlcikgewotICAgICAgICBj
bGVhclRpbWVvdXQoUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLSAgICAgICAgUG9w
b3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyID0gbnVsbDsKLSAgICB9Ci0KLSAgICBjb25zb2xl
LmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLSAgICAKLSAgICBQb3Bv
dmVyVHJhY2tlci5fY2FuZGlkYXRlVHJhY2tlciA9IHBvcG92ZXJUcmFja2VyOwotCi0gICAgaWYg
KHBvcG92ZXJUcmFja2VyKQotICAgICAgICBQb3BvdmVyVHJhY2tlci5fY2FuZGlkYXRlVGltZXIg
PSBzZXRUaW1lb3V0KFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVQb3BvdmVyVHJhY2tlclRpbWVy
RmlyZWQsIFBvcG92ZXJUcmFja2VyLkNhbmRpZGF0ZVN3aXRjaERlbGF5KTsKLX0KLQotUG9wb3Zl
clRyYWNrZXIuX2NhbmRpZGF0ZVBvcG92ZXJUcmFja2VyVGltZXJGaXJlZCA9IGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgaGFkUG9wb3ZlciA9ICEhUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXI7Ci0gICAg
aWYgKGhhZFBvcG92ZXIpIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoUG9wb3ZlclRyYWNrZXIu
X3BvcG92ZXIudmlzaWJsZSk7Ci0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyLmRpc21p
c3NJbW1lZGlhdGVseSgpOwotICAgIH0KLSAgICBjb25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNr
ZXIuX3BvcG92ZXIpOwotCi0gICAgdmFyIHRyYWNrZXIgPSBQb3BvdmVyVHJhY2tlci5fY2FuZGlk
YXRlVHJhY2tlcjsKLQotICAgIFBvcG92ZXJUcmFja2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJh
Y2tlcihudWxsKTsKLSAgICB0cmFja2VyLl9zaG93UG9wb3ZlcigpOwotCi0gICAgaWYgKFBvcG92
ZXJUcmFja2VyLl9wb3BvdmVyICYmIGhhZFBvcG92ZXIpCi0gICAgICAgIFBvcG92ZXJUcmFja2Vy
Ll9wb3BvdmVyLm1ha2VWaXNpYmxlSW1tZWRpYXRlbHkoKTsKLX0KLQotUG9wb3ZlclRyYWNrZXIu
X29uYmx1ciA9IGZ1bmN0aW9uKCkKLXsKLSAgICBpZiAoUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXIp
Ci0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyLmRpc21pc3NJbW1lZGlhdGVseSgpOwot
Ci0gICAgUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92ZXJUcmFja2VyKG51bGwpOwot
fQotCi13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigiYmx1ciIsIFBvcG92ZXJUcmFja2VyLl9vbmJs
dXIsIHRydWUpOwotCi1Qb3BvdmVyVHJhY2tlci5wcm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0
b3I6IFBvcG92ZXJUcmFja2VyLAotICAgIF9fcHJvdG9fXzogQmFzZU9iamVjdC5wcm90b3R5cGUs
Ci0KLSAgICBfc2hvd1BvcG92ZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwb3Bv
dmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKHRoaXMpOwotICAgICAgICBpZiAoIXRoaXMuX3By
ZXNlbnRQb3BvdmVyKHRoaXMuX2VsZW1lbnQsIHBvcG92ZXIsIHRoaXMuX2NvbnRleHQpKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2FjdGl2ZSA9IHRydWU7Ci0gICAgICAg
IFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyID0gcG9wb3ZlcjsKLSAgICAgICAgcG9wb3Zlci5lbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLCB0aGlzLl9tb3VzZUVudGVyZWRQb3Bv
dmVyT3JFbGVtZW50LmJpbmQodGhpcyksIHRydWUpOwotICAgICAgICBwb3BvdmVyLmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsIHRoaXMuX21vdXNlRXhpdGVkUG9wb3Zlck9y
RWxlbWVudC5iaW5kKHRoaXMpLCB0cnVlKTsKLSAgICB9LAotCi0gICAgX21vdXNlRW50ZXJlZFBv
cG92ZXJPckVsZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIHBvcG92
ZXIgPSBQb3BvdmVyVHJhY2tlci5fcG9wb3ZlcjsKLQotICAgICAgICBpZiAocG9wb3Zlcikgewot
ICAgICAgICAgICAgLy8gQWJvcnQgZmFkZS1vdXQgd2hlbiByZS1lbnRlcmluZyB0aGUgc2FtZSBl
bGVtZW50IG9yIGFuIGV4aXN0aW5nIHBvcG92ZXIuCi0gICAgICAgICAgICBpZiAoKHRoaXMuX2Fj
dGl2ZSAmJiB0aGlzLl9lbGVtZW50LmlzU2VsZk9yQW5jZXN0b3IoZXZlbnQudG9FbGVtZW50KSkK
LSAgICAgICAgICAgICAgICB8fCBwb3BvdmVyLmVsZW1lbnQuaXNTZWxmT3JBbmNlc3RvcihldmVu
dC50b0VsZW1lbnQpKSB7Ci0gICAgICAgICAgICAgICAgcG9wb3Zlci5tYWtlVmlzaWJsZUltbWVk
aWF0ZWx5KCk7Ci0gICAgICAgICAgICAgICAgUG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBv
cG92ZXJUcmFja2VyKG51bGwpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgLy8gV2UgZW50ZXJlZCBhIGRpZmZlcmVudCBlbGVtZW50LgotICAg
ICAgICAgICAgaWYgKHBvcG92ZXIudmlzaWJsZSkgewotICAgICAgICAgICAgICAgIFBvcG92ZXJU
cmFja2VyLl9zZXRDYW5kaWRhdGVQb3BvdmVyVHJhY2tlcih0aGlzKTsKLSAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwb3BvdmVyIHdh
c24ndCB2aXNpYmxlIHlldCwgc28gaXQgd2FzIGVmZmVjdGl2ZWx5IG5vbi1leGlzdGVudC4KLSAg
ICAgICAgICAgIHBvcG92ZXIuZGlzbWlzc0ltbWVkaWF0ZWx5KCk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBjb25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX3BvcG92ZXIpOwotICAgICAgICBj
b25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRyYWNrZXIpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydCghUG9wb3ZlclRyYWNrZXIuX2NhbmRpZGF0ZVRpbWVyKTsKLQotICAg
ICAgICBQb3BvdmVyVHJhY2tlci5fc2V0Q2FuZGlkYXRlUG9wb3ZlclRyYWNrZXIodGhpcyk7Ci0g
ICAgfSwKLQotICAgIF9tb3VzZUV4aXRlZFBvcG92ZXJPckVsZW1lbnQ6IGZ1bmN0aW9uKGV2ZW50
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMgPT09IFBvcG92ZXJUcmFja2VyLl9jYW5kaWRhdGVU
cmFja2VyKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fZWxlbWVudC5pc1NlbGZPckFuY2VzdG9y
KGV2ZW50LnRvRWxlbWVudCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAg
UG9wb3ZlclRyYWNrZXIuX3NldENhbmRpZGF0ZVBvcG92ZXJUcmFja2VyKG51bGwpOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHBvcG92ZXIgPSBQb3BvdmVy
VHJhY2tlci5fcG9wb3ZlcjsKLQotICAgICAgICBpZiAoIXBvcG92ZXIpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQuaXNTZWxmT3JBbmNlc3RvcihldmVu
dC50b0VsZW1lbnQpIHx8IHBvcG92ZXIuZWxlbWVudC5pc1NlbGZPckFuY2VzdG9yKGV2ZW50LnRv
RWxlbWVudCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKHBvcG92ZXIudmlz
aWJsZSkKLSAgICAgICAgICAgIHBvcG92ZXIuZGlzbWlzcygpOwotICAgICAgICBlbHNlCi0gICAg
ICAgICAgICBwb3BvdmVyLmRpc21pc3NJbW1lZGlhdGVseSgpOwotICAgIH0sCi0KLSAgICBkaWRE
aXNtaXNzUG9wb3ZlcjogZnVuY3Rpb24ocG9wb3ZlcikKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHBvcG92ZXIgPT09IFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyKTsKLSAgICAgICAgdGhp
cy5fYWN0aXZlID0gZmFsc2U7Ci0gICAgICAgIFBvcG92ZXJUcmFja2VyLl9wb3BvdmVyID0gbnVs
bDsKLSAgICB9Ci19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
UG9wb3ZlclRyYWNrZXIuanMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkRlbGV0ZWQ6
IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9wbGFpbgpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9RdWV1ZVZpZXcuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvUXVldWVWaWV3LmpzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9RdWV1ZVZpZXcuanMJKG5vbmV4aXN0
ZW50KQpAQCAtMSwyNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwot
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVF1ZXVlVmlldyA9IGZ1bmN0aW9u
KCkKLXsKLSAgICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0
LmFkZCgicXVldWUtdmlldyIpOwotICAgIHRoaXMuZWxlbWVudC5fX3F1ZXVlVmlldyA9IHRoaXM7
Ci0KLSAgICB0aGlzLnVwZGF0ZVRpbWVyID0gbnVsbDsKLSAgICBzZXRUaW1lb3V0KHRoaXMuX3Vw
ZGF0ZUhpZGRlblN0YXRlLmJpbmQodGhpcyksIDApOyAvLyBMZXRzIHN1YmNsYXNzIGNvbnN0cnVj
dG9yIGZpbmlzaCBiZWZvcmUgY2FsbGluZyBfdXBkYXRlSGlkZGVuU3RhdGUuCi0gICAgc2V0dGlu
Z3MuYWRkU2V0dGluZ0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIiwgdGhpcy5fdXBk
YXRlSGlkZGVuU3RhdGUuYmluZCh0aGlzKSk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVj
dG9yRnVuY3Rpb25zKFF1ZXVlVmlldyk7Ci0KLVF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCA9IDQ1
MDAwOyAvLyA0NSBzZWNvbmRzCi1RdWV1ZVZpZXcuVXBkYXRlU29vblRpbWVvdXQgPSAxMDAwOyAv
LyAxIHNlY29uZAotCi1RdWV1ZVZpZXcucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBR
dWV1ZVZpZXcsCi0gICAgX19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIHVw
ZGF0ZVNvb246IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl91cGRhdGVUaW1l
b3V0KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl91cGRhdGVUaW1lb3V0ID0g
c2V0VGltZW91dCh0aGlzLnVwZGF0ZS5iaW5kKHRoaXMpLCBRdWV1ZVZpZXcuVXBkYXRlU29vblRp
bWVvdXQpOwotICAgIH0sCi0KLSAgICB1cGRhdGU6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAg
IGlmICh0aGlzLl91cGRhdGVUaW1lb3V0KSB7Ci0gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhp
cy5fdXBkYXRlVGltZW91dCk7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fdXBkYXRlVGltZW91
dDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCi0g
ICAgfSwKLQotICAgIF91cGRhdGVIaWRkZW5TdGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAg
ICAgaWYgKCFzZXR0aW5ncy5hdmFpbGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAg
ICAgICB2YXIgaGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHNldHRpbmdzLmdldE9iamVjdCgiaGlk
ZGVuUGxhdGZvcm1GYW1pbGllcyIpOwotICAgICAgICB2YXIgd2FzSGlkZGVuID0gIXRoaXMudXBk
YXRlVGltZXI7Ci0gICAgICAgIHZhciBpc0hpZGRlbiA9IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMg
JiYgaGlkZGVuUGxhdGZvcm1GYW1pbGllcy5jb250YWlucyhzZXR0aW5ncy5wYXJzZVBsYXRmb3Jt
RmFtaWx5KHRoaXMucGxhdGZvcm0pKTsKLQotICAgICAgICBpZiAod2FzSGlkZGVuICYmICFpc0hp
ZGRlbikgewotICAgICAgICAgICAgdGhpcy5fdXBkYXRlUXVldWVzKCk7Ci0gICAgICAgICAgICB0
aGlzLnVwZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlUXVldWVzLmJpbmQodGhp
cyksIFF1ZXVlVmlldy5VcGRhdGVJbnRlcnZhbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIXdhc0hp
ZGRlbiAmJiBpc0hpZGRlbikgewotICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLnVwZGF0
ZVRpbWVyKTsKLSAgICAgICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSBudWxsOwotICAgICAgICB9
Ci0gICAgfSwKLQotICAgIGFkZExpbmtUb1JvdzogZnVuY3Rpb24ocm93RWxlbWVudCwgY2xhc3NO
YW1lLCB0ZXh0LCB1cmwpCi0gICAgeyAgIAotICAgICAgICB2YXIgbGlua0VsZW1lbnQgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAgICAgIGxpbmtFbGVtZW50LmNsYXNzTmFtZSA9
IGNsYXNzTmFtZTsKLSAgICAgICAgbGlua0VsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwotICAg
ICAgICBsaW5rRWxlbWVudC5ocmVmID0gdXJsOwotICAgICAgICBsaW5rRWxlbWVudC50YXJnZXQg
PSAiX2JsYW5rIjsKLSAgICAgICAgcm93RWxlbWVudC5hcHBlbmRDaGlsZChsaW5rRWxlbWVudCk7
Ci0gICAgfSwgIAotCi0gICAgYWRkVGV4dFRvUm93OiBmdW5jdGlvbihyb3dFbGVtZW50LCBjbGFz
c05hbWUsIHRleHQpCi0gICAgeyAgIAotICAgICAgICB2YXIgc3BhbkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7Ci0gICAgICAgIHNwYW5FbGVtZW50LmNsYXNzTmFtZSA9
IGNsYXNzTmFtZTsKLSAgICAgICAgc3BhbkVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwotICAg
ICAgICByb3dFbGVtZW50LmFwcGVuZENoaWxkKHNwYW5FbGVtZW50KTsKLSAgICB9LAotCi0gICAg
X2FkZERpdmlkZXJUb1BvcG92ZXI6IGZ1bmN0aW9uKGNvbnRlbnQpCi0gICAgewotICAgICAgICB2
YXIgZGl2aWRlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotICAgICAgICBkaXZp
ZGVyLmNsYXNzTmFtZSA9ICJkaXZpZGVyIjsKLSAgICAgICAgY29udGVudC5hcHBlbmRDaGlsZChk
aXZpZGVyKTsKLSAgICB9LAotCi0gICAgX2FwcGVuZFBlbmRpbmdSZXZpc2lvbkNvdW50OiBmdW5j
dGlvbihxdWV1ZSwgbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKQotICAgIHsKLSAgICAgICAgdmFyIGxh
dGVzdFByb2R1Y3RpdmVJdGVyYXRpb24gPSBsYXRlc3RJdGVyYXRpb25HZXR0ZXIoKTsKLSAgICAg
ICAgaWYgKCFsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uKQotICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIHZhciB0b3RhbFJldmlzaW9uc0JlaGluZCA9IDA7Ci0KLSAgICAgICAgLy8gRklY
TUU6IFRvIGJlIDEwMCUgY29ycmVjdCwgd2Ugc2hvdWxkIGFsc28gZmlsdGVyIG91dCBjaGFuZ2Vz
IHRoYXQgYXJlIGlnbm9yZWQgYnkKLSAgICAgICAgLy8gdGhlIHF1ZXVlLCBzZWUgX3Nob3VsZF9m
aWxlX3RyaWdnZXJfYnVpbGQgaW4gd2tidWlsZC5weS4KLSAgICAgICAgdmFyIGJyYW5jaGVzID0g
cXVldWUuYnJhbmNoZXM7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnJhbmNoZXMubGVu
Z3RoOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBicmFuY2ggPSBicmFuY2hlc1tpXTsKLSAgICAg
ICAgICAgIHZhciByZXBvc2l0b3J5ID0gYnJhbmNoLnJlcG9zaXRvcnk7Ci0gICAgICAgICAgICB2
YXIgcmVwb3NpdG9yeU5hbWUgPSByZXBvc2l0b3J5Lm5hbWU7Ci0gICAgICAgICAgICB2YXIgdHJh
YyA9IHJlcG9zaXRvcnkudHJhYzsKLSAgICAgICAgICAgIHZhciBsYXRlc3RQcm9kdWN0aXZlUmV2
aXNpb25OdW1iZXIgPSBsYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLnJldmlzaW9uW3JlcG9zaXRv
cnlOYW1lXTsKLSAgICAgICAgICAgIGlmICghbGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVy
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0cmFjKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKCF0cmFjLmxhdGVzdFJlY29y
ZGVkUmV2aXNpb25OdW1iZXIgfHwgdHJhYy5pbmRleE9mUmV2aXNpb24odHJhYy5vbGRlc3RSZWNv
cmRlZFJldmlzaW9uTnVtYmVyKSA+IHRyYWMuaW5kZXhPZlJldmlzaW9uKGxhdGVzdFByb2R1Y3Rp
dmVSZXZpc2lvbk51bWJlcikpIHsKLSAgICAgICAgICAgICAgICB0cmFjLmxvYWRNb3JlSGlzdG9y
aWNhbERhdGEoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIHRvdGFsUmV2aXNpb25zQmVoaW5kICs9IHRyYWMuY29tbWl0c09uQnJhbmNoTGF0
ZXJUaGFuUmV2aXNpb24oYnJhbmNoLm5hbWUsIGxhdGVzdFByb2R1Y3RpdmVSZXZpc2lvbk51bWJl
cikubGVuZ3RoOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCF0b3RhbFJldmlzaW9uc0JlaGlu
ZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgbWVzc2FnZUVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7IC8vIFdlIGNhbid0IGp1c3QgcGFzcyB0ZXh0
IHRvIFN0YXR1c0xpbmVWaWV3IGhlcmUsIGJlY2F1c2Ugd2UgbmVlZCBhbiBlbGVtZW50IHRoYXQg
cGVyZmVjdGx5IGZpdHMgdGhlIHRleHQgZm9yIHBvcG92ZXIgcG9zaXRpb25pbmcuCi0gICAgICAg
IG1lc3NhZ2VFbGVtZW50LnRleHRDb250ZW50ID0gdG90YWxSZXZpc2lvbnNCZWhpbmQgKyAiICIg
KyAodG90YWxSZXZpc2lvbnNCZWhpbmQgPT09IDEgPyAicmV2aXNpb24gYmVoaW5kIiA6ICJyZXZp
c2lvbnMgYmVoaW5kIik7Ci0gICAgICAgIHZhciBzdGF0dXMgPSBuZXcgU3RhdHVzTGluZVZpZXco
bWVzc2FnZUVsZW1lbnQsIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5Ob0J1YmJsZSk7Ci0gICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChzdGF0dXMuZWxlbWVudCk7Ci0KLSAgICAgICAgbmV3
IFBvcG92ZXJUcmFja2VyKG1lc3NhZ2VFbGVtZW50LCB0aGlzLl9wcmVzZW50UG9wb3ZlckZvclBl
bmRpbmdDb21taXRzLmJpbmQodGhpcywgbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKSwgcXVldWUpOwot
ICAgIH0sCi0KLSAgICBfcG9wb3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2U6IGZ1bmN0aW9uKHRyYWMs
IGJyYW5jaCwgZmlyc3RSZXZpc2lvbk51bWJlciwgbGFzdFJldmlzaW9uTnVtYmVyKQotICAgIHsK
LSAgICAgICAgZnVuY3Rpb24gbGluZUZvckNvbW1pdCh0cmFjLCBjb21taXQpCi0gICAgICAgIHsK
LSAgICAgICAgICAgIHZhciByZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICAgICAgICAgIHJlc3VsdC5jbGFzc05hbWUgPSAicGVuZGluZy1jb21taXQiOwotCi0gICAg
ICAgICAgICB2YXIgbGlua0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0g
ICAgICAgICAgICBsaW5rRWxlbWVudC5jbGFzc05hbWUgPSAicmV2aXNpb24iOwotICAgICAgICAg
ICAgbGlua0VsZW1lbnQuaHJlZiA9IHRyYWMucmV2aXNpb25VUkwoY29tbWl0LnJldmlzaW9uTnVt
YmVyKTsKLSAgICAgICAgICAgIGxpbmtFbGVtZW50LnRhcmdldCA9ICJfYmxhbmsiOwotICAgICAg
ICAgICAgbGlua0VsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9mb3JtYXRSZXZpc2lvbkZvckRp
c3BsYXkoY29tbWl0LnJldmlzaW9uTnVtYmVyLCBicmFuY2gucmVwb3NpdG9yeSk7Ci0gICAgICAg
ICAgICByZXN1bHQuYXBwZW5kQ2hpbGQobGlua0VsZW1lbnQpOwotCi0gICAgICAgICAgICB2YXIg
YXV0aG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAg
ICAgIGF1dGhvckVsZW1lbnQuY2xhc3NOYW1lID0gImF1dGhvciI7Ci0gICAgICAgICAgICBhdXRo
b3JFbGVtZW50LnRleHRDb250ZW50ID0gY29tbWl0LmF1dGhvcjsKLSAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmRDaGlsZChhdXRob3JFbGVtZW50KTsKLQotICAgICAgICAgICAgdmFyIHRpdGxlRWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKLSAgICAgICAgICAgIHRpdGxl
RWxlbWVudC5jbGFzc05hbWUgPSAidGl0bGUiOwotICAgICAgICAgICAgdGl0bGVFbGVtZW50Lmlu
bmVySFRNTCA9IGNvbW1pdC50aXRsZS5pbm5lckhUTUw7Ci0gICAgICAgICAgICByZXN1bHQuYXBw
ZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKLQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgfQotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRyYWMuaW5kZXhPZlJldmlzaW9uKHRy
YWMub2xkZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcikgPD0gdHJhYy5pbmRleE9mUmV2aXNpb24o
Zmlyc3RSZXZpc2lvbk51bWJlcikpOwotCi0gICAgICAgIC8vIEZJWE1FOiBUbyBiZSAxMDAlIGNv
cnJlY3QsIHdlIHNob3VsZCBhbHNvIGZpbHRlciBvdXQgY2hhbmdlcyB0aGF0IGFyZSBpZ25vcmVk
IGJ5Ci0gICAgICAgIC8vIHRoZSBxdWV1ZSwgc2VlIF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxk
IGluIHdrYnVpbGQucHkuCi0gICAgICAgIHZhciBjb21taXRzID0gdHJhYy5jb21taXRzT25CcmFu
Y2hJblJldmlzaW9uUmFuZ2UoYnJhbmNoLm5hbWUsIGZpcnN0UmV2aXNpb25OdW1iZXIsIGxhc3RS
ZXZpc2lvbk51bWJlcik7Ci0gICAgICAgIHJldHVybiBjb21taXRzLm1hcChmdW5jdGlvbihjb21t
aXQpIHsKLSAgICAgICAgICAgIHJldHVybiBsaW5lRm9yQ29tbWl0LmNhbGwodGhpcywgdHJhYywg
Y29tbWl0KTsKLSAgICAgICAgfSwgdGhpcykucmV2ZXJzZSgpOwotICAgIH0sCi0KLSAgICBfcHJl
c2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0czogZnVuY3Rpb24obGF0ZXN0SXRlcmF0aW9uR2V0
dGVyLCBlbGVtZW50LCBwb3BvdmVyLCBxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHZhciBsYXRlc3RQ
cm9kdWN0aXZlSXRlcmF0aW9uID0gbGF0ZXN0SXRlcmF0aW9uR2V0dGVyKCk7Ci0gICAgICAgIGlm
ICghbGF0ZXN0UHJvZHVjdGl2ZUl0ZXJhdGlvbikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICB2YXIgY29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwot
ICAgICAgICBjb250ZW50LmNsYXNzTmFtZSA9ICJjb21taXQtaGlzdG9yeS1wb3BvdmVyIjsKLQot
ICAgICAgICB2YXIgc2hvdWxkQWRkRGl2aWRlciA9IGZhbHNlOwotICAgICAgICB2YXIgYnJhbmNo
ZXMgPSBxdWV1ZS5icmFuY2hlczsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBicmFuY2hl
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdmFyIGJyYW5jaCA9IGJyYW5jaGVzW2ldOwot
ICAgICAgICAgICAgdmFyIHJlcG9zaXRvcnkgPSBicmFuY2gucmVwb3NpdG9yeTsKLSAgICAgICAg
ICAgIHZhciByZXBvc2l0b3J5TmFtZSA9IHJlcG9zaXRvcnkubmFtZTsKLSAgICAgICAgICAgIHZh
ciB0cmFjID0gcmVwb3NpdG9yeS50cmFjOwotICAgICAgICAgICAgdmFyIGxhdGVzdFByb2R1Y3Rp
dmVSZXZpc2lvbk51bWJlciA9IGxhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24ucmV2aXNpb25bcmVw
b3NpdG9yeU5hbWVdOwotICAgICAgICAgICAgaWYgKCFsYXRlc3RQcm9kdWN0aXZlUmV2aXNpb25O
dW1iZXIgfHwgIXRyYWMubGF0ZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcikKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHZhciBuZXh0UmV2aXNpb24gPSB0cmFjLm5leHRS
ZXZpc2lvbihicmFuY2gubmFtZSwgbGF0ZXN0UHJvZHVjdGl2ZVJldmlzaW9uTnVtYmVyKTsKLSAg
ICAgICAgICAgIGlmIChuZXh0UmV2aXNpb24gPT09IFRyYWMuTk9fTU9SRV9SRVZJU0lPTlMpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB2YXIgbGluZXMgPSB0aGlzLl9w
b3BvdmVyTGluZXNGb3JDb21taXRSYW5nZSh0cmFjLCBicmFuY2gsIG5leHRSZXZpc2lvbiwgdHJh
Yy5sYXRlc3RSZWNvcmRlZFJldmlzaW9uTnVtYmVyKTsKLSAgICAgICAgICAgIHZhciBsZW5ndGgg
PSBsaW5lcy5sZW5ndGg7Ci0gICAgICAgICAgICBpZiAobGVuZ3RoICYmIHNob3VsZEFkZERpdmlk
ZXIpCi0gICAgICAgICAgICAgICAgdGhpcy5fYWRkRGl2aWRlclRvUG9wb3Zlcihjb250ZW50KTsK
LSAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbGVuZ3RoOyArK2opCi0gICAgICAgICAg
ICAgICAgY29udGVudC5hcHBlbmRDaGlsZChsaW5lc1tqXSk7Ci0gICAgICAgICAgICBzaG91bGRB
ZGREaXZpZGVyID0gc2hvdWxkQWRkRGl2aWRlciB8fCBsZW5ndGggPiAwOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmFyIHJlY3QgPSBEYXNoYm9hcmQuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3QoZWxl
bWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgIHBvcG92ZXIuY29udGVudCA9
IGNvbnRlbnQ7Ci0gICAgICAgIHBvcG92ZXIucHJlc2VudChyZWN0LCBbRGFzaGJvYXJkLlJlY3RF
ZGdlLk1JTl9ZLCBEYXNoYm9hcmQuUmVjdEVkZ2UuTUFYX1ksIERhc2hib2FyZC5SZWN0RWRnZS5N
QVhfWCwgRGFzaGJvYXJkLlJlY3RFZGdlLk1JTl9YXSk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgfSwKLQotICAgIF9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXk6IGZ1bmN0aW9uKHJldmlz
aW9uLCByZXBvc2l0b3J5KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQocmVwb3NpdG9y
eS5pc1NWTiB8fCByZXBvc2l0b3J5LmlzR2l0LCAiU2hvdWxkIG5vdCBnZXQgaGVyZTsgIiArIHJl
cG9zaXRvcnkubmFtZSArICIgZGlkIG5vdCBzcGVjaWZ5IGEga25vd24gVkNTIHR5cGUuIik7Ci0g
ICAgICAgIGlmIChyZXBvc2l0b3J5LmlzU1ZOKQotICAgICAgICAgICAgcmV0dXJuICJyIiArIHJl
dmlzaW9uOwotICAgICAgICAvLyBUcnVuY2F0aW5nIGZvciBkaXNwbGF5LiBHaXQgdHJhZGl0aW9u
YWxseSB1c2VzIHNldmVuIGNoYXJhY3RlcnMgZm9yIGEgc2hvcnQgaGFzaC4KLSAgICAgICAgcmV0
dXJuIHJldmlzaW9uLnN1YnN0cigwLCA3KTsKLSAgICB9LAotCi0gICAgX3JlYWRhYmxlVGltZVN0
cmluZzogZnVuY3Rpb24oc2Vjb25kcykKLSAgICB7Ci0gICAgICAgIHZhciBzZWNvbmRzSW5Ib3Vy
ID0gNjAgKiA2MDsKLSAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gc2Vj
b25kc0luSG91cik7Ci0gICAgICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcigoc2Vjb25kcyAt
IGhvdXJzICogc2Vjb25kc0luSG91cikgLyA2MCk7Ci0gICAgICAgIHZhciBob3Vyc1BhcnQgPSAi
IjsKLSAgICAgICAgaWYgKGhvdXJzID09PSAxKQotICAgICAgICAgICAgaG91cnNQYXJ0ID0gIjFc
eGEwaG91ciBhbmQgIjsKLSAgICAgICAgZWxzZSBpZiAoaG91cnMgPiAwKQotICAgICAgICAgICAg
aG91cnNQYXJ0ID0gaG91cnMgKyAiXHhhMGhvdXJzIGFuZCAiOwotICAgICAgICBpZiAoIW1pbnV0
ZXMpCi0gICAgICAgICAgICByZXR1cm4gImxlc3MgdGhhbiBhIG1pbnV0ZSI7Ci0gICAgICAgIGlm
IChtaW51dGVzID09PSAxKQotICAgICAgICAgICAgcmV0dXJuIGhvdXJzUGFydCArICIxXHhhMG1p
bnV0ZSI7Ci0gICAgICAgIHJldHVybiBob3Vyc1BhcnQgKyBtaW51dGVzICsgIlx4YTBtaW51dGVz
IjsKLSAgICB9Ci19OwoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
UXVldWVWaWV3LmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCww
ICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU2V0dGluZ3MuanMKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU2V0dGluZ3MuanMJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1NldHRpbmdzLmpzCShub25leGlzdGVudCkKQEAg
LTEsMTMyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1TZXR0aW5ncyA9IGZ1bmN0aW9uKCkKLXsKLSAg
ICBCYXNlT2JqZWN0LmNhbGwodGhpcyk7Ci0KLSAgICB0aGlzLmNoYW5nZUNhbGxiYWNrcyA9IHt9
OwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhTZXR0aW5ncyk7Ci0K
LVNldHRpbmdzLnByb3RvdHlwZSA9IHsKLSAgICBjb25zdHJ1Y3RvcjogU2V0dGluZ3MsCi0gICAg
X19wcm90b19fOiBCYXNlT2JqZWN0LnByb3RvdHlwZSwKLQotICAgIHNldE9iamVjdDogZnVuY3Rp
b24oa2V5LCB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwg
SlNPTi5zdHJpbmdpZnkodmFsdWUpKTsKLSAgICB9LAotCi0gICAgZ2V0T2JqZWN0OiBmdW5jdGlv
bihrZXkpCi0gICAgewotICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0
SXRlbShrZXkpKTsKLSAgICB9LAotCi0gICAgYXZhaWxhYmxlOiBmdW5jdGlvbigpCi0gICAgewot
ICAgICAgICB0cnkgewotICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oInRlc3RMb2Nh
bFN0b3JhZ2UiLCAidGVzdCIpOwotICAgICAgICAgICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVt
KCJ0ZXN0TG9jYWxTdG9yYWdlIikgIT0gInRlc3QiKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCJ0ZXN0TG9jYWxTdG9y
YWdlIik7Ci0gICAgICAgIH0gY2F0Y2goZSkgewotICAgICAgICAgICAgY29uc29sZS5sb2coIkNv
dWxkbid0IHVzZSBsb2NhbFN0b3JhZ2UsIHNldHRpbmdzIHdvbid0IHdvcms6ICIgKyBlKTsKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiB0cnVl
OwotICAgIH0sCi0KLSAgICBhZGRTZXR0aW5nTGlzdGVuZXI6IGZ1bmN0aW9uKGtleSwgY2FsbGJh
Y2spCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuY2hhbmdlQ2FsbGJhY2tzW2tleV0pCi0gICAg
ICAgICAgICB0aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldID0gW107Ci0gICAgICAgIHRoaXMuY2hh
bmdlQ2FsbGJhY2tzW2tleV0ucHVzaChjYWxsYmFjayk7Ci0gICAgfSwKLQotICAgIGZpcmVTZXR0
aW5nTGlzdGVuZXI6IGZ1bmN0aW9uKGtleSkKLSAgICB7Ci0gICAgICAgIHZhciBjYWxsYmFja3Mg
PSB0aGlzLmNoYW5nZUNhbGxiYWNrc1trZXldOwotICAgICAgICBpZiAoIWNhbGxiYWNrcykKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3Mu
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICBjYWxsYmFja3NbaV0oKTsKLSAgICB9LAotCi0gICAg
dG9nZ2xlU2V0dGluZ3NEaXNwbGF5OiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICBpZiAoIWRv
Y3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCJzZXR0aW5ncy12aXNpYmxlIikpCi0gICAg
ICAgICAgICB0aGlzLmZpcmVTZXR0aW5nTGlzdGVuZXIoImVudGVyZWRTZXR0aW5ncyIpOwotICAg
ICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoInNldHRpbmdzLXZpc2libGUiKTsK
LSAgICB9LAotCi0gICAgcGFyc2VQbGF0Zm9ybUZhbWlseTogZnVuY3Rpb24ocGxhdGZvcm1OYW1l
KQotICAgIHsKLSAgICAgICAgaWYgKCFwbGF0Zm9ybU5hbWUpCi0gICAgICAgICAgICByZXR1cm4g
Jyc7Ci0gICAgICAgIHZhciByZXN1bHQgPSBwbGF0Zm9ybU5hbWUuc3Vic3RyKDAsIHBsYXRmb3Jt
TmFtZS5pbmRleE9mKCItIikpOwotICAgICAgICBpZiAocmVzdWx0ID09PSAibWFjb3MiKQotICAg
ICAgICAgICAgcmVzdWx0ID0gIm1hYyI7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwK
LQotICAgIHRvZ2dsZUhpZGRlblBsYXRmb3JtRmFtaWx5OiBmdW5jdGlvbihwbGF0Zm9ybUZhbWls
eSkKLSAgICB7Ci0gICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzID0gdGhpcy5nZXRP
YmplY3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiKSB8fCBbXTsKLSAgICAgICAgdmFyIGhpZGRl
blBsYXRmb3JtSW5kZXggPSBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmluZGV4T2YocGxhdGZvcm1G
YW1pbHkpOwotICAgICAgICBpZiAoaGlkZGVuUGxhdGZvcm1JbmRleCA+IC0xKQotICAgICAgICAg
ICAgaGlkZGVuUGxhdGZvcm1GYW1pbGllcy5zcGxpY2UoaGlkZGVuUGxhdGZvcm1JbmRleCwgMSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGhpZGRlblBsYXRmb3JtRmFtaWxpZXMucHVzaChw
bGF0Zm9ybUZhbWlseSk7Ci0KLSAgICAgICAgdGhpcy5zZXRPYmplY3QoImhpZGRlblBsYXRmb3Jt
RmFtaWxpZXMiLCBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzKTsKLSAgICAgICAgdGhpcy5maXJlU2V0
dGluZ0xpc3RlbmVyKCJoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzIik7Ci0gICAgfSwKLQotICAgIGNs
ZWFySGlkZGVuUGxhdGZvcm1GYW1pbGllczogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhp
cy5zZXRPYmplY3QoImhpZGRlblBsYXRmb3JtRmFtaWxpZXMiLCBbXSk7Ci0gICAgICAgIHRoaXMu
ZmlyZVNldHRpbmdMaXN0ZW5lcigiaGlkZGVuUGxhdGZvcm1GYW1pbGllcyIpOwotICAgIH0sCi0K
LSAgICB1cGRhdGVUb2dnbGVCdXR0b25zOiBmdW5jdGlvbigpCi0gICAgewotICAgICAgICB2YXIg
aGlkZGVuUGxhdGZvcm1GYW1pbGllcyA9IHRoaXMuZ2V0T2JqZWN0KCJoaWRkZW5QbGF0Zm9ybUZh
bWlsaWVzIikgfHwgW107Ci0gICAgICAgIHZhciBoaWRkZW5GYW1pbHlCdXR0b25zID0geyJhbGwi
OiBoaWRkZW5QbGF0Zm9ybUZhbWlsaWVzLmxlbmd0aCA+IDB9OwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGhpZGRlblBsYXRmb3JtRmFtaWxpZXMubGVuZ3RoOyArK2kpCi0gICAgICAgICAg
ICBoaWRkZW5GYW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWxpZXNbaV1dID0gdHJ1ZTsK
LQotICAgICAgICB2YXIgcGxhdGZvcm1GYW1pbHlCdXR0b25zID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgicGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24iKTsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBwbGF0Zm9ybUZhbWlseUJ1dHRvbnMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIHZhciBoaWRkZW5QbGF0Zm9ybUZhbWlseSA9IHRoaXMucGFyc2VQbGF0Zm9ybUZh
bWlseShwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uaWQpOwotICAgICAgICAgICAgaWYgKCFoaWRk
ZW5GYW1pbHlCdXR0b25zW2hpZGRlblBsYXRmb3JtRmFtaWx5XSkKLSAgICAgICAgICAgICAgICBw
bGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0uY2xhc3NMaXN0LmFkZCgiZmFtaWx5U2hvd24iKTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybUZhbWlseUJ1dHRvbnNbaV0u
Y2xhc3NMaXN0LnJlbW92ZSgiZmFtaWx5U2hvd24iKTsKLSAgICAgICAgfQotICAgIH0sCi19OwpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvU3RhdHVzTGluZVZpZXcuanMJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1N0YXR1c0xpbmVWaWV3LmpzCShub25leGlzdGVu
dCkKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1TdGF0dXNMaW5lVmlldyA9IGZ1bmN0
aW9uKG1lc3NhZ2UsIHN0YXR1cywgbGFiZWwsIHJlcGVhdENvdW50LCB1cmwpCi17Ci0gICAgQmFz
ZU9iamVjdC5jYWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQobWVzc2FnZSk7Ci0KLSAg
ICB0aGlzLmVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB0aGlz
LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic3RhdHVzLWxpbmUiKTsKLSAgICB0aGlzLmVsZW1lbnQu
X19zdGF0dXNMaW5lVmlldyA9IHRoaXM7Ci0KLSAgICBpZiAodXJsKSB7Ci0gICAgICAgIHRoaXMu
X3N0YXR1c0J1YmJsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIik7Ci0gICAg
ICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuaHJlZiA9IHVybDsKLSAgICAgICAgdGhpcy5f
c3RhdHVzQnViYmxlRWxlbWVudC50YXJnZXQgPSAiX2JsYW5rIjsKLSAgICB9IGVsc2UKLSAgICAg
ICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiYnViYmxl
Iik7Ci0gICAgaWYgKHN0YXR1cyAhPSBTdGF0dXNMaW5lVmlldy5TdGF0dXMuTm9CdWJibGUpCi0g
ICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9zdGF0dXNCdWJibGVFbGVtZW50
KTsKLQotICAgIHRoaXMuX2xhYmVsRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgIHRoaXMuX2xhYmVsRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJsYWJlbCIpOwotCi0g
ICAgdGhpcy5fbWVzc2FnZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsK
LSAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJtZXNzYWdlIik7Ci0gICAg
dGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX21lc3NhZ2VFbGVtZW50KTsKLQotICAgIHRo
aXMuc3RhdHVzID0gc3RhdHVzIHx8IFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5OZXV0cmFsOwotICAg
IHRoaXMubWVzc2FnZSA9IG1lc3NhZ2UgfHwgIiI7Ci0gICAgdGhpcy5sYWJlbCA9IGxhYmVsIHx8
ICIiOwotICAgIHRoaXMucmVwZWF0Q291bnQgPSByZXBlYXRDb3VudCB8fCAwOwotICAgIHRoaXMu
dXJsID0gdXJsIHx8IG51bGw7Ci19OwotCi1TdGF0dXNMaW5lVmlldy5TdGF0dXMgPSB7Ci0gICAg
Tm9CdWJibGU6ICJuby1idWJibGUiLAotICAgIE5ldXRyYWw6ICJuZXV0cmFsIiwKLSAgICBHb29k
OiAiZ29vZCIsCi0gICAgRGFuZ2VyOiAiZGFuZ2VyIiwKLSAgICBCYWQ6ICJiYWQiLAotICAgIFVu
YXV0aG9yaXplZDogInVuYXV0aG9yaXplZCIKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0
b3JGdW5jdGlvbnMoU3RhdHVzTGluZVZpZXcpOwotCi1TdGF0dXNMaW5lVmlldy5wcm90b3R5cGUg
PSB7Ci0gICAgY29uc3RydWN0b3I6IFN0YXR1c0xpbmVWaWV3LAotICAgIF9fcHJvdG9fXzogQmFz
ZU9iamVjdC5wcm90b3R5cGUsCi0KLSAgICBnZXQgc3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9zdGF0dXM7Ci0gICAgfSwKLQotICAgIHNldCBzdGF0dXMoeCkKLSAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHgpOwotICAgICAgICBpZiAoIXgpCi0gICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUodGhpcy5fc3Rh
dHVzKTsKLQotICAgICAgICB0aGlzLl9zdGF0dXMgPSB4OwotCi0gICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKHRoaXMuX3N0YXR1cyk7Ci0gICAgfSwKLQotICAgIGdldCByZXBlYXRD
b3VudCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVwZWF0Q291bnQ7Ci0gICAgfSwK
LQotICAgIHNldCByZXBlYXRDb3VudCh4KQotICAgIHsKLSAgICAgICAgdGhpcy5fcmVwZWF0Q291
bnQgPSB4OwotCi0gICAgICAgIGlmICh0aGlzLl9yZXBlYXRDb3VudCkgewotICAgICAgICAgICAg
dGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9IHRoaXMuX3JlcGVhdENvdW50
OwotICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC5jbGFzc0xpc3QucmVtb3Zl
KCJwaWN0b2dyYW0iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX3N0YXR1
c0J1YmJsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicGljdG9ncmFtIik7Ci0KLSAgICAgICAgICAg
IHN3aXRjaCAodGhpcy5fc3RhdHVzKSB7Ci0gICAgICAgICAgICBjYXNlIFN0YXR1c0xpbmVWaWV3
LlN0YXR1cy5OZXV0cmFsOgotICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1l
bnQudGV4dENvbnRlbnQgPSAiPyI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
ICAgIGNhc2UgU3RhdHVzTGluZVZpZXcuU3RhdHVzLkdvb2Q6Ci0gICAgICAgICAgICAgICAgdGhp
cy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9ICIiOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFN0YXR1c0xpbmVWaWV3LlN0YXR1cy5EYW5nZXI6
Ci0gICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzQnViYmxlRWxlbWVudC50ZXh0Q29udGVudCA9
ICIhIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgY2FzZSBTdGF0dXNM
aW5lVmlldy5TdGF0dXMuQmFkOgotICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c0J1YmJsZUVs
ZW1lbnQudGV4dENvbnRlbnQgPSAiXHUyNzE1IjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0sCi0KLSAgICBnZXQgbGFiZWwoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2xhYmVsRWxlbWVudC50ZXh0Q29udGVudDsKLSAgICB9LAot
Ci0gICAgc2V0IGxhYmVsKHgpCi0gICAgewotICAgICAgICBpZiAoeCkgewotICAgICAgICAgICAg
dGhpcy5fbGFiZWxFbGVtZW50LnRleHRDb250ZW50ID0geDsKLSAgICAgICAgICAgIHRoaXMuZWxl
bWVudC5pbnNlcnRCZWZvcmUodGhpcy5fbGFiZWxFbGVtZW50LCB0aGlzLl9tZXNzYWdlRWxlbWVu
dCk7Ci0gICAgICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgibm8tbGFiZWwi
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHRoaXMuX2xhYmVsRWxlbWVudC5yZW1v
dmVDaGlsZHJlbigpOwotICAgICAgICAgICAgdGhpcy5fbGFiZWxFbGVtZW50LnJlbW92ZSgpOwot
ICAgICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoIm5vLWxhYmVsIik7Ci0gICAg
ICAgIH0KLSAgICB9LAotCi0gICAgZ2V0IG1lc3NhZ2UoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX21lc3NhZ2VFbGVtZW50LnRleHRDb250ZW50OwotICAgIH0sCi0KLSAgICBzZXQgbWVz
c2FnZSh4KQotICAgIHsKLSAgICAgICAgaWYgKHggaW5zdGFuY2VvZiBOb2RlKSB7Ci0gICAgICAg
ICAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAgICAg
dGhpcy5fbWVzc2FnZUVsZW1lbnQuYXBwZW5kQ2hpbGQoeCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICB0aGlzLl9tZXNzYWdlRWxlbWVudC50ZXh0Q29udGVudCA9IHg7Ci0gICAgICAg
IH0KLSAgICB9LAotCi0gICAgZ2V0IHN0YXR1c0J1YmJsZUVsZW1lbnQoKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3N0YXR1c0J1YmJsZUVsZW1lbnQ7Ci0gICAgfQotfTsKSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL1RyYWMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Nj
cmlwdHMvVHJhYy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMv
VHJhYy5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMzMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotVHJhYyA9IGZ1bmN0aW9uKGJhc2VVUkwsIG9wdGlvbnMpCi17Ci0gICAgQmFzZU9iamVjdC5j
YWxsKHRoaXMpOwotCi0gICAgY29uc29sZS5hc3NlcnQoYmFzZVVSTCk7Ci0KLSAgICB0aGlzLmJh
c2VVUkwgPSBiYXNlVVJMOwotICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gIm9iamVjdCIpIHsK
LSAgICAgICAgdGhpcy5fbmVlZHNBdXRoZW50aWNhdGlvbiA9IG9wdGlvbnNbVHJhYy5OZWVkc0F1
dGhlbnRpY2F0aW9uXSA9PT0gdHJ1ZTsKLSAgICAgICAgLy8gV2UgZXhwZWN0IHRoZSBwcm9qZWN0
SWRlbnRpZmllciBvcHRpb24gaWZmIHRoZSB0YXJnZXQgVHJhYyBpbnN0YW5jZSBpcyBob3N0aW5n
IG11bHRpcGxlIHJlcG9zaXRvcmllcyAmJiBUcmFjIHZlcnNpb24gPiAxLjAKLSAgICAgICAgdGhp
cy5fcHJvamVjdE5hbWUgPSBvcHRpb25zW1RyYWMuUHJvamVjdElkZW50aWZpZXJdOwotICAgIH0K
LQotICAgIHRoaXMucmVjb3JkZWRDb21taXRzID0gW107IC8vIFdpbGwgYmUgc29ydGVkIGluIGFz
Y2VuZGluZyBvcmRlci4KLSAgICB0aGlzLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25O
dW1iZXIgPSB7fTsKLX07Ci0KLUJhc2VPYmplY3QuYWRkQ29uc3RydWN0b3JGdW5jdGlvbnMoVHJh
Yyk7Ci0KLVRyYWMuTk9fTU9SRV9SRVZJU0lPTlMgPSBudWxsOwotCi1UcmFjLk5lZWRzQXV0aGVu
dGljYXRpb24gPSAibmVlZHNBdXRoZW50aWNhdGlvbiI7Ci1UcmFjLlByb2plY3RJZGVudGlmaWVy
ID0gInByb2plY3RJZGVudGlmaWVyIjsKLVRyYWMuVXBkYXRlSW50ZXJ2YWwgPSA0NTAwMDsgLy8g
NDUgc2Vjb25kcwotCi1UcmFjLkV2ZW50ID0gewotICAgIENvbW1pdHNVcGRhdGVkOiAiY29tbWl0
cy11cGRhdGVkIiwKLSAgICBMb2FkZWQ6ICJsb2FkZWQiCi19OwotCi1UcmFjLnByb3RvdHlwZSA9
IHsKLSAgICBjb25zdHJ1Y3RvcjogVHJhYywKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJv
dG90eXBlLAotCi0gICAgZ2V0IG9sZGVzdFJlY29yZGVkUmV2aXNpb25OdW1iZXIoKQotICAgIHsK
LSAgICAgICAgaWYgKCF0aGlzLnJlY29yZGVkQ29tbWl0cy5sZW5ndGgpCi0gICAgICAgICAgICBy
ZXR1cm4gdW5kZWZpbmVkOwotICAgICAgICByZXR1cm4gdGhpcy5yZWNvcmRlZENvbW1pdHNbMF0u
cmV2aXNpb25OdW1iZXI7Ci0gICAgfSwKLQotICAgIGdldCBsYXRlc3RSZWNvcmRlZFJldmlzaW9u
TnVtYmVyKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5yZWNvcmRlZENvbW1pdHMubGVuZ3Ro
KQotICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDsKLSAgICAgICAgcmV0dXJuIHRoaXMucmVj
b3JkZWRDb21taXRzW3RoaXMucmVjb3JkZWRDb21taXRzLmxlbmd0aCAtIDFdLnJldmlzaW9uTnVt
YmVyOwotICAgIH0sCi0KLSAgICBfY29tbWl0c09uQnJhbmNoOiBmdW5jdGlvbihicmFuY2hOYW1l
LCBiZWdpblBvc2l0aW9uLCBlbmRQb3NpdGlvbikKLSAgICB7Ci0gICAgICAgIGJlZ2luUG9zaXRp
b24gPSBiZWdpblBvc2l0aW9uIHx8IDA7Ci0gICAgICAgIGlmIChlbmRQb3NpdGlvbiA9PT0gdW5k
ZWZpbmVkKQotICAgICAgICAgICAgZW5kUG9zaXRpb24gPSB0aGlzLnJlY29yZGVkQ29tbWl0cy5s
ZW5ndGggLSAxOwotICAgICAgICB2YXIgY29tbWl0cyA9IFtdOwotICAgICAgICBmb3IgKHZhciBp
ID0gYmVnaW5Qb3NpdGlvbjsgaSA8PSBlbmRQb3NpdGlvbjsgKytpKSB7Ci0gICAgICAgICAgICB2
YXIgY29tbWl0ID0gdGhpcy5yZWNvcmRlZENvbW1pdHNbaV07Ci0gICAgICAgICAgICBpZiAoIWNv
bW1pdC5jb250YWluc0JyYW5jaExvY2F0aW9uIHx8IGNvbW1pdC5icmFuY2hlcy5pbmNsdWRlcyhi
cmFuY2hOYW1lKSkKLSAgICAgICAgICAgICAgICBjb21taXRzLnB1c2goY29tbWl0KTsKLSAgICAg
ICAgfQotICAgICAgICByZXR1cm4gY29tbWl0czsKLSAgICB9LAotCi0gICAgY29tbWl0c09uQnJh
bmNoTGF0ZXJUaGFuUmV2aXNpb246IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIHJldmlzaW9uKQotICAg
IHsKLSAgICAgICAgdmFyIGluZGV4VG9CZUxhdGVyVGhhbiA9IHRoaXMuaW5kZXhPZlJldmlzaW9u
KHJldmlzaW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhUb0JlTGF0ZXJUaGFuICE9
PSAtMSwgcmV2aXNpb24gKyAiIGlzIG5vdCBpbiB0aGUgbGlzdCBvZiByZWNvcmRlZCBjb21taXRz
Iik7Ci0gICAgICAgIGlmIChpbmRleFRvQmVMYXRlclRoYW4gPT09IC0xKQotICAgICAgICAgICAg
cmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJyYW5jaE5h
bWUsIGluZGV4VG9CZUxhdGVyVGhhbiArIDEpOwotICAgIH0sCi0KLSAgICBjb21taXRzT25CcmFu
Y2hJblJldmlzaW9uUmFuZ2U6IGZ1bmN0aW9uKGJyYW5jaE5hbWUsIGZpcnN0UmV2aXNpb24sIGxh
c3RSZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBpbmRleE9mRmlyc3RSZXZpc2lvbiA9IHRo
aXMuaW5kZXhPZlJldmlzaW9uKGZpcnN0UmV2aXNpb24pOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dChpbmRleE9mRmlyc3RSZXZpc2lvbiAhPT0gLTEsIGZpcnN0UmV2aXNpb24gKyAiIGlzIG5vdCBp
biB0aGUgbGlzdCBvZiByZWNvcmRlZCBjb21taXRzIik7Ci0gICAgICAgIGlmIChpbmRleE9mRmly
c3RSZXZpc2lvbiA9PT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgIHZhciBp
bmRleE9mTGFzdFJldmlzaW9uID0gdGhpcy5pbmRleE9mUmV2aXNpb24obGFzdFJldmlzaW9uKTsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXhPZkxhc3RSZXZpc2lvbiAhPT0gLTEsIGxhc3RS
ZXZpc2lvbiArICIgaXMgbm90IGluIHRoZSBsaXN0IG9mIHJlY29yZGVkIGNvbW1pdHMiKTsKLSAg
ICAgICAgaWYgKGluZGV4T2ZMYXN0UmV2aXNpb24gPT09IC0xKQotICAgICAgICAgICAgcmV0dXJu
IFtdOwotICAgICAgICByZXR1cm4gdGhpcy5fY29tbWl0c09uQnJhbmNoKGJyYW5jaE5hbWUsIGlu
ZGV4T2ZGaXJzdFJldmlzaW9uLCBpbmRleE9mTGFzdFJldmlzaW9uKTsKLSAgICB9LAotCi0gICAg
cmV2aXNpb25VUkw6IGZ1bmN0aW9uKHJldmlzaW9uKQotICAgIHsKLSAgICAgICAgdmFyIHVybCA9
IHRoaXMuYmFzZVVSTCArICJjaGFuZ2VzZXQvIiArIGVuY29kZVVSSUNvbXBvbmVudChyZXZpc2lv
bik7Ci0gICAgICAgIGlmICh0aGlzLl9wcm9qZWN0TmFtZSkKLSAgICAgICAgICAgIHVybCArPSAn
LycgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy5fcHJvamVjdE5hbWUpOwotICAgICAgICByZXR1
cm4gdXJsOwotICAgIH0sCi0KLSAgICBfeG1sVGltZWxpbmVVUkw6IGZ1bmN0aW9uKGZyb21EYXRl
LCB0b0RhdGUpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChmcm9tRGF0ZSA8PSB0b0Rh
dGUpOwotCi0gICAgICAgIHZhciBmcm9tRGF5ID0gbmV3IERhdGUoZnJvbURhdGUuZ2V0RnVsbFll
YXIoKSwgZnJvbURhdGUuZ2V0TW9udGgoKSwgZnJvbURhdGUuZ2V0RGF0ZSgpKTsKLSAgICAgICAg
dmFyIHRvRGF5ID0gbmV3IERhdGUodG9EYXRlLmdldEZ1bGxZZWFyKCksIHRvRGF0ZS5nZXRNb250
aCgpLCB0b0RhdGUuZ2V0RGF0ZSgpKTsKLSAgICAgICAgdmFyIGNoYW5nZXNldFBhcmFtZXRlciA9
IHRoaXMuX3Byb2plY3ROYW1lID8gInJlcG8tIiArIHRoaXMuX3Byb2plY3ROYW1lIDogImNoYW5n
ZXNldCI7Ci0KLSAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVSTCArICJ0aW1lbGluZT8iICsKLSAg
ICAgICAgICAgIGNoYW5nZXNldFBhcmFtZXRlciArICI9b24iICsKLSAgICAgICAgICAgICImZm9y
bWF0PXJzcyIgKwotICAgICAgICAgICAgIiZtYXg9MCIgKwotICAgICAgICAgICAgIiZmcm9tPSIg
KyBlbmNvZGVVUklDb21wb25lbnQodG9EYXkudG9JU09TdHJpbmcoKS5zbGljZSgwLCAxMCkpICsK
LSAgICAgICAgICAgICImZGF5c2JhY2s9IiArIGVuY29kZVVSSUNvbXBvbmVudCgodG9EYXkgLSBm
cm9tRGF5KSAvIDEwMDAgLyA2MCAvIDYwIC8gMjQpOwotICAgIH0sCi0KLSAgICBfcGFyc2VSZXZp
c2lvbkZyb21VUkw6IGZ1bmN0aW9uKHVybCkKLSAgICB7Ci0gICAgICAgIC8vIFRoZXJlIGFyZSBt
dWx0aXBsZSBsaW5rIGZvcm1hdHMgZm9yIFRyYWMgdGhhdCB3ZSBzdXBwb3J0OgotICAgICAgICAv
LyBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTkwNDk3Ci0gICAgICAgIC8vIGh0
dHA6Ly90cmFjLmZvb2Jhci5jb20vcmVwb3NpdG9yeS9jaGFuZ2VzZXQvNzUzODgvcHJvamVjdAot
ICAgICAgICAvLyBodHRwczovL2dpdC5mb29iYXIuY29tL3RyYWMvV2hhdGV2ZXIuZ2l0L2NoYW5n
ZXNldC8wZTQ5OGRiNWQ4ZTViNWEzNDI2MzEKLSAgICAgICAgcmV0dXJuIC9jaGFuZ2VzZXRcLyhb
YS1mMC05XSspLiokLy5leGVjKHVybClbMV07Ci0gICAgfSwKLQotICAgIF9jb252ZXJ0Q29tbWl0
SW5mb0VsZW1lbnRUb09iamVjdDogZnVuY3Rpb24oZG9jLCBjb21taXRFbGVtZW50KQotICAgIHsK
LSAgICAgICAgdmFyIGxpbmsgPSBkb2MuZXZhbHVhdGUoIi4vbGluayIsIGNvbW1pdEVsZW1lbnQs
IG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJpbmdWYWx1ZTsKLSAgICAgICAgdmFy
IHJldmlzaW9uTnVtYmVyID0gdGhpcy5fcGFyc2VSZXZpc2lvbkZyb21VUkwobGluayk7Ci0KLSAg
ICAgICAgZnVuY3Rpb24gdHJhY05TUmVzb2x2ZXIocHJlZml4KQotICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAocHJlZml4ID09ICJkYyIpCi0gICAgICAgICAgICAgICAgcmV0dXJuICJodHRwOi8v
cHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAg
ICAgICAgfQotCi0gICAgICAgIHZhciBhdXRob3IgPSBkb2MuZXZhbHVhdGUoIi4vYXV0aG9yfGRj
OmNyZWF0b3IiLCBjb21taXRFbGVtZW50LCB0cmFjTlNSZXNvbHZlciwgWFBhdGhSZXN1bHQuU1RS
SU5HX1RZUEUpLnN0cmluZ1ZhbHVlOwotICAgICAgICB2YXIgZGF0ZSA9IGRvYy5ldmFsdWF0ZSgi
Li9wdWJEYXRlIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUp
LnN0cmluZ1ZhbHVlOwotICAgICAgICBkYXRlID0gbmV3IERhdGUoRGF0ZS5wYXJzZShkYXRlKSk7
Ci0gICAgICAgIHZhciBkZXNjcmlwdGlvbiA9IGRvYy5ldmFsdWF0ZSgiLi9kZXNjcmlwdGlvbiIs
IGNvbW1pdEVsZW1lbnQsIG51bGwsIFhQYXRoUmVzdWx0LlNUUklOR19UWVBFKS5zdHJpbmdWYWx1
ZTsKLQotICAgICAgICB2YXIgcGFyc2VkRGVzY3JpcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKTsKLSAgICAgICAgcGFyc2VkRGVzY3JpcHRpb24uaW5uZXJIVE1MID0gZGVzY3Jp
cHRpb247Ci0KLSAgICAgICAgdmFyIGxvY2F0aW9uID0gIiI7Ci0gICAgICAgIGlmIChwYXJzZWRE
ZXNjcmlwdGlvbi5maXJzdENoaWxkICYmIHBhcnNlZERlc2NyaXB0aW9uLmZpcnN0Q2hpbGQuY2xh
c3NOYW1lID09PSAiY2hhbmdlcyIpIHsKLSAgICAgICAgICAgIC8vIFdlIGNhbiBleHRyYWN0IGJy
YW5jaCBpbmZvcm1hdGlvbiB3aGVuIHRyYWMuaW5pIGNvbnRhaW5zICJjaGFuZ2VzZXRfc2hvd19m
aWxlcz1sb2NhdGlvbiIuCi0gICAgICAgICAgICBsb2NhdGlvbiA9IGRvYy5ldmFsdWF0ZSgiLy9z
dHJvbmciLCBwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkLCBudWxsLCBYUGF0aFJlc3VsdC5T
VFJJTkdfVFlQRSkuc3RyaW5nVmFsdWU7Ci0gICAgICAgICAgICBwYXJzZWREZXNjcmlwdGlvbi5y
ZW1vdmVDaGlsZChwYXJzZWREZXNjcmlwdGlvbi5maXJzdENoaWxkKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIC8vIFRoZSBmZWVkIGNvbnRhaW5zIGEgPHRpdGxlPiwgYnV0IGl0J3Mgbm90IHBhcnNl
ZCBhcyB3ZWxsIGFzIHdoYXQgd2UgYXJlIGdldHRpbmcgZnJvbSBkZXNjcmlwdGlvbi4KLSAgICAg
ICAgdmFyIHRpdGxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHZh
ciBub2RlID0gcGFyc2VkRGVzY3JpcHRpb24uZmlyc3RDaGlsZCA/IHBhcnNlZERlc2NyaXB0aW9u
LmZpcnN0Q2hpbGQuZmlyc3RDaGlsZCA6IG51bGw7Ci0gICAgICAgIHdoaWxlIChub2RlICYmIG5v
ZGUudGFnTmFtZSAhPSAiQlIiKSB7Ci0gICAgICAgICAgICB0aXRsZS5hcHBlbmRDaGlsZChub2Rl
LmNsb25lTm9kZSh0cnVlKSk7Ci0gICAgICAgICAgICBub2RlID0gbm9kZS5uZXh0U2libGluZzsK
LSAgICAgICAgfQotCi0gICAgICAgIC8vIEZvciBzb21lIHJlYXNvbiwgdHJhYyB0aXRsZXMgc3Rh
cnQgd2l0aCBhIG5ld2xpbmUuIERlbGV0ZSBpdC4KLSAgICAgICAgaWYgKHRpdGxlLmZpcnN0Q2hp
bGQgJiYgdGl0bGUuZmlyc3RDaGlsZC5ub2RlVHlwZSA9PSBOb2RlLlRFWFRfTk9ERSAmJiB0aXRs
ZS5maXJzdENoaWxkLnRleHRDb250ZW50Lmxlbmd0aCA+IDAgJiYgdGl0bGUuZmlyc3RDaGlsZC50
ZXh0Q29udGVudFswXSA9PSAiXG4iKQotICAgICAgICAgICAgdGl0bGUuZmlyc3RDaGlsZC50ZXh0
Q29udGVudCA9IHRpdGxlLmZpcnN0Q2hpbGQudGV4dENvbnRlbnQuc3Vic3RyaW5nKDEpOwotCi0g
ICAgICAgIC8vIFdlIGhhdmUgYW4gb3ZlcmlkZGVuIHRpbWVsaW5lLnJzcyB0aGF0IGFkZHMgZ2l0
IGJyYW5jaGVzIHRvIHRoZSBUcmFjIHRpbWVsaW5lIFJTUyBvdXRwdXQgKHJkYXI6Ly9wcm9ibGVt
LzIzODUzNjIzKS4KLSAgICAgICAgdmFyIGdpdEJyYW5jaGVzID0gZG9jLmV2YWx1YXRlKCIuL2Jy
YW5jaGVzIiwgY29tbWl0RWxlbWVudCwgbnVsbCwgWFBhdGhSZXN1bHQuU1RSSU5HX1RZUEUpLnN0
cmluZ1ZhbHVlOwotCi0gICAgICAgIHZhciByZXN1bHQgPSB7Ci0gICAgICAgICAgICByZXZpc2lv
bk51bWJlcjogcmV2aXNpb25OdW1iZXIsCi0gICAgICAgICAgICBsaW5rOiBsaW5rLAotICAgICAg
ICAgICAgdGl0bGU6IHRpdGxlLAotICAgICAgICAgICAgYXV0aG9yOiBhdXRob3IsCi0gICAgICAg
ICAgICBkYXRlOiBkYXRlLAotICAgICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0
aW9uLmlubmVySFRNTCwKLSAgICAgICAgICAgIGNvbnRhaW5zQnJhbmNoTG9jYXRpb246IGxvY2F0
aW9uICE9PSAiIiwKLSAgICAgICAgICAgIGJyYW5jaGVzOiBbXQotICAgICAgICB9OwotCi0gICAg
ICAgIGlmIChyZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiAmJiAhZ2l0QnJhbmNoZXMpIHsK
LSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGxvY2F0aW9uW2xvY2F0aW9uLmxlbmd0aCAtIDFd
ICE9PSAiLyIpOwotICAgICAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiArPSAiLyI7Ci0gICAg
ICAgICAgICBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgidGFncy8iKSkKLSAgICAgICAgICAgICAg
ICByZXN1bHQudGFnID0gbG9jYXRpb24uc3Vic3RyKDUsIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA1
KSAtIDUpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgiYnJhbmNo
ZXMvIikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2gobG9jYXRpb24uc3Vi
c3RyKDksIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA5KSAtIDkpKTsKLSAgICAgICAgICAgIGVsc2Ug
aWYgKGxvY2F0aW9uLnN0YXJ0c1dpdGgoInJlbGVhc2VzLyIpKQotICAgICAgICAgICAgICAgIHJl
c3VsdC5yZWxlYXNlID0gbG9jYXRpb24uc3Vic3RyKDksIGxvY2F0aW9uLmluZGV4T2YoIi8iLCA5
KSAtIDkpOwotICAgICAgICAgICAgZWxzZSBpZiAobG9jYXRpb24uc3RhcnRzV2l0aCgidHJ1bmsv
IikpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmJyYW5jaGVzLnB1c2goInRydW5rIik7Ci0gICAg
ICAgICAgICBlbHNlIGlmIChsb2NhdGlvbi5zdGFydHNXaXRoKCJzdWJtaXNzaW9ucy8iKSkKLSAg
ICAgICAgICAgICAgICA7IC8vIFRoZXNlIGNoYW5nZXMgYXJlIG5ldmVyIHJlbGV2YW50IHRvIHRo
ZSBkYXNoYm9hcmQuCi0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyByZXN1
bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiByZW1haW5zIHRydWUsIGJlY2F1c2UgdGhpcyBjb21t
aXQgZG9lcwotICAgICAgICAgICAgICAgIC8vIG5vdCBtYXRjaCBhbnkgZXhwbGljaXRseSBzcGVj
aWZpZWQgYnJhbmNoZXMuCi0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UpOwot
ICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGdpdEJyYW5jaGVzKSB7Ci0g
ICAgICAgICAgICByZXN1bHQuY29udGFpbnNCcmFuY2hMb2NhdGlvbiA9IHRydWU7Ci0gICAgICAg
ICAgICByZXN1bHQuYnJhbmNoZXMgPSByZXN1bHQuYnJhbmNoZXMuY29uY2F0KGdpdEJyYW5jaGVz
LnNwbGl0KCIsICIpKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fSwKLQotICAgIF9sb2FkZWQ6IGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkKLSAgICB7Ci0gICAgICAg
IGlmICghZGF0YURvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBr
bm93bkNvbW1pdHNXZXJlVXBkYXRlZCA9IGZhbHNlOwotICAgICAgICB2YXIgbmV3Q29tbWl0cyA9
IFtdOwotCi0gICAgICAgIHZhciBjb21taXRJbmZvRWxlbWVudHMgPSBkYXRhRG9jdW1lbnQuZXZh
bHVhdGUoIi9yc3MvY2hhbm5lbC9pdGVtIiwgZGF0YURvY3VtZW50LCBudWxsLCBYUGF0aFJlc3Vs
dC5PUkRFUkVEX05PREVfSVRFUkFUT1JfVFlQRSk7Ci0gICAgICAgIHZhciBjb21taXRJbmZvRWxl
bWVudDsKLSAgICAgICAgd2hpbGUgKGNvbW1pdEluZm9FbGVtZW50ID0gY29tbWl0SW5mb0VsZW1l
bnRzLml0ZXJhdGVOZXh0KCkpIHsKLSAgICAgICAgICAgIHZhciBjb21taXQgPSB0aGlzLl9jb252
ZXJ0Q29tbWl0SW5mb0VsZW1lbnRUb09iamVjdChkYXRhRG9jdW1lbnQsIGNvbW1pdEluZm9FbGVt
ZW50KTsKLSAgICAgICAgICAgIHZhciBrbm93bkNvbW1pdEluZGV4ID0gdGhpcy5yZWNvcmRlZENv
bW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyW2NvbW1pdC5yZXZpc2lvbk51bWJlcl07Ci0gICAg
ICAgICAgICBpZiAoa25vd25Db21taXRJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8g
QXV0aG9yIGNvdWxkIGhhdmUgY2hhbmdlZCwgYXMgY29tbWl0IHF1ZXVlIHJlcGxhY2VzIGl0IGFm
dGVyIHRoZSBmYWN0LgotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVjb3Jk
ZWRDb21taXRzW2tub3duQ29tbWl0SW5kZXhdLnJldmlzaW9uTnVtYmVyID09PSBjb21taXQucmV2
aXNpb25OdW1iZXIpOwotICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlY29yZGVkQ29tbWl0c1tr
bm93bkNvbW1pdEluZGV4XS5hdXRob3IgIT0gY29tbWl0LmF1dGhvcikgewotICAgICAgICAgICAg
ICAgICAgICB0aGlzLnJlY29yZGVkQ29tbWl0c1trbm93bkNvbW1pdEluZGV4XS5hdXRob3IgPSBj
b21taXQuYXV0aG9yOwotICAgICAgICAgICAgICAgICAgICBrbm93bkNvbW1pdFdhc1VwZGF0ZWQg
PSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgICAgIG5ld0NvbW1pdHMucHVzaChjb21taXQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYg
KG5ld0NvbW1pdHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICB0aGlzLnJlY29yZGVkQ29tbWl0cyA9
IG5ld0NvbW1pdHMuY29uY2F0KHRoaXMucmVjb3JkZWRDb21taXRzKS5zb3J0KGZ1bmN0aW9uKGEs
IGIpIHsgcmV0dXJuIGEuZGF0ZSAtIGIuZGF0ZTsgfSk7Ci0gICAgICAgICAgICB0aGlzLnJlY29y
ZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXIgPSB7fTsKLSAgICAgICAgICAgIHRoaXMu
cmVjb3JkZWRDb21taXRzLmZvckVhY2goZnVuY3Rpb24oY3VyZW50VmFsdWUsIGluZGV4KSB7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVy
W2N1cmVudFZhbHVlLnJldmlzaW9uTnVtYmVyXSA9IGluZGV4OwotICAgICAgICAgICAgfSwgdGhp
cyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmV3Q29tbWl0cy5sZW5ndGggfHwga25vd25D
b21taXRzV2VyZVVwZGF0ZWQpCi0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhUcmFjLkV2ZW50LkNvbW1pdHNVcGRhdGVkLCBudWxsKTsKLSAgICB9LAotCi0gICAgbG9h
ZDogZnVuY3Rpb24oZnJvbURhdGUsIHRvRGF0ZSkKLSAgICB7Ci0gICAgICAgIGxvYWRYTUwodGhp
cy5feG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVu
dCkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGVkKGRhdGFEb2N1bWVudCk7Ci0gICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhUcmFjLkV2ZW50LkxvYWRlZCwgW2Zyb21E
YXRlLCB0b0RhdGVdKTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRp
Y2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLSAgICB9LAotCi0gICAg
X3VwZGF0ZTogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGZyb21EYXRlID0gbmV3IERh
dGUodGhpcy5fbGF0ZXN0TG9hZGVkRGF0ZSk7Ci0gICAgICAgIHZhciB0b0RhdGUgPSBuZXcgRGF0
ZSgpOwotCi0gICAgICAgIHRoaXMuX2xhdGVzdExvYWRlZERhdGUgPSB0b0RhdGU7Ci0KLSAgICAg
ICAgbG9hZFhNTCh0aGlzLl94bWxUaW1lbGluZVVSTChmcm9tRGF0ZSwgdG9EYXRlKSwgdGhpcy5f
bG9hZGVkLmJpbmQodGhpcyksIHRoaXMuX25lZWRzQXV0aGVudGljYXRpb24gPyB7IHdpdGhDcmVk
ZW50aWFsczogdHJ1ZSB9IDoge30pOwotICAgIH0sCi0KLSAgICBzdGFydFBlcmlvZGljVXBkYXRl
czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX29sZGVz
dEhpc3RvcmljYWxEYXRlKTsKLQotICAgICAgICB2YXIgdG9kYXkgPSBuZXcgRGF0ZSgpOwotCi0g
ICAgICAgIHRoaXMuX29sZGVzdEhpc3RvcmljYWxEYXRlID0gdG9kYXk7Ci0gICAgICAgIHRoaXMu
X2xhdGVzdExvYWRlZERhdGUgPSB0b2RheTsKLQotICAgICAgICB0aGlzLl9sb2FkaW5nSGlzdG9y
aWNhbERhdGEgPSB0cnVlOwotICAgICAgICBsb2FkWE1MKHRoaXMuX3htbFRpbWVsaW5lVVJMKHRv
ZGF5LCB0b2RheSksIGZ1bmN0aW9uKGRhdGFEb2N1bWVudCkgewotICAgICAgICAgICAgdGhpcy5f
bG9hZGluZ0hpc3RvcmljYWxEYXRhID0gZmFsc2U7Ci0gICAgICAgICAgICB0aGlzLl9sb2FkZWQo
ZGF0YURvY3VtZW50KTsKLSAgICAgICAgfS5iaW5kKHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRp
Y2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSA6IHt9KTsKLQotICAgICAgICB0aGlz
LnVwZGF0ZVRpbWVyID0gc2V0SW50ZXJ2YWwodGhpcy5fdXBkYXRlLmJpbmQodGhpcyksIFRyYWMu
VXBkYXRlSW50ZXJ2YWwpOwotICAgIH0sCi0KLSAgICBsb2FkTW9yZUhpc3RvcmljYWxEYXRhOiBm
dW5jdGlvbigpCi0gICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9vbGRlc3RIaXN0
b3JpY2FsRGF0ZSk7Ci0KLSAgICAgICAgaWYgKHRoaXMuX2xvYWRpbmdIaXN0b3JpY2FsRGF0YSkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBMb2FkIG9uZSBtb3JlIGRheSBvZiBo
aXN0b3JpY2FsIGRhdGEuCi0gICAgICAgIHZhciBmcm9tRGF0ZSA9IG5ldyBEYXRlKHRoaXMuX29s
ZGVzdEhpc3RvcmljYWxEYXRlKTsKLSAgICAgICAgZnJvbURhdGUuc2V0RGF0ZShmcm9tRGF0ZS5n
ZXREYXRlKCkgLSAxKTsKLSAgICAgICAgdmFyIHRvRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlKTsK
LQotICAgICAgICB0aGlzLl9vbGRlc3RIaXN0b3JpY2FsRGF0ZSA9IGZyb21EYXRlOwotCi0gICAg
ICAgIHRoaXMuX2xvYWRpbmdIaXN0b3JpY2FsRGF0YSA9IHRydWU7Ci0gICAgICAgIGxvYWRYTUwo
dGhpcy5feG1sVGltZWxpbmVVUkwoZnJvbURhdGUsIHRvRGF0ZSksIGZ1bmN0aW9uKGRhdGFEb2N1
bWVudCkgewotICAgICAgICAgICAgdGhpcy5fbG9hZGluZ0hpc3RvcmljYWxEYXRhID0gZmFsc2U7
Ci0gICAgICAgICAgICB0aGlzLl9sb2FkZWQoZGF0YURvY3VtZW50KTsKLSAgICAgICAgfS5iaW5k
KHRoaXMpLCB0aGlzLl9uZWVkc0F1dGhlbnRpY2F0aW9uID8geyB3aXRoQ3JlZGVudGlhbHM6IHRy
dWUgfSA6IHt9KTsKLSAgICB9LAotCi0gICAgbmV4dFJldmlzaW9uOiBmdW5jdGlvbihicmFuY2hO
YW1lLCByZXZpc2lvbikKLSAgICB7Ci0gICAgICAgIHZhciBjb21taXRzID0gdGhpcy5jb21taXRz
T25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbihicmFuY2hOYW1lLCByZXZpc2lvbik7Ci0gICAgICAg
IGlmIChjb21taXRzLmxlbmd0aCA+IDApCi0gICAgICAgICAgICByZXR1cm4gY29tbWl0c1swXS5y
ZXZpc2lvbk51bWJlcjsKLSAgICAgICAgcmV0dXJuIFRyYWMuTk9fTU9SRV9SRVZJU0lPTlM7Ci0g
ICAgfSwKLQotICAgIGluZGV4T2ZSZXZpc2lvbjogZnVuY3Rpb24ocmV2aXNpb25OdW1iZXIpCi0g
ICAgewotICAgICAgICB2YXIgcmVzdWx0ID0gdGhpcy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJl
dmlzaW9uTnVtYmVyW3JldmlzaW9uTnVtYmVyXTsKLSAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSBj
YWxsZXJzIHRvIGhhbmRsZSB1bmRlZmluZWQgcmVzdWx0LgotICAgICAgICBpZiAocmVzdWx0ID09
PSB1bmRlZmluZWQpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHJldHVybiByZXN1
bHQ7Ci0gICAgfSwKLX07CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0
cy9UcmFjLmpzCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMj
Ci1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWlt
ZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvcGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBw
cm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0aWVzLmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL1V0aWxpdGllcy5qcwkocmV2aXNpb24gMjY5MDQy
KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvVXRpbGl0aWVzLmpzCShub25leGlzdGVudCkKQEAg
LTEsMjEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1KU09OLkxvYWRFcnJvciA9ICJKU09O
TG9hZEVycm9yIjsKLUpTT04uUGFyc2VFcnJvciA9ICJKU09OUGFyc2VFcnJvciI7Ci0KLS8vIEpT
T04ubG9hZCgpIG1heSBiZSBjYWxsZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBmb3JtczoKLS8vCi0v
LyBKU09OLmxvYWQoImh0dHA6Ly93d3cuYXBwbGUuY29tIiwgZnVuY3Rpb24oKSB7Lyogc3VjY2Vz
cyAqL30pCi0vLyBPUgotLy8gSlNPTi5sb2FkKCJodHRwOi8vd3d3LmFwcGxlLmNvbSIsIGZ1bmN0
aW9uKCkgey8qIHN1Y2Nlc3MgKi99LCB7d2l0aENyZWRlbnRpYWxzOiB0cnVlLCAuLi59KQotLy8g
T1IKLS8vIEpTT04ubG9hZCgiaHR0cDovL3d3dy5hcHBsZS5jb20iLCBmdW5jdGlvbigpIHsvKiBz
dWNjZXNzICovfSwgZnVuY3Rpb24oKSB7LyogZmFpbHVyZSAqL30pCi0vLyBPUgotLy8gSlNPTi5s
b2FkKCJodHRwOi8vd3d3LmFwcGxlLmNvbSIsIGZ1bmN0aW9uKCkgey8qIHN1Y2Nlc3MgKi99LCBm
dW5jdGlvbigpIHsvKiBmYWlsdXJlICovfSwge3dpdGhDcmVkZW50aWFsczogdHJ1ZSwgLi4ufSkK
LUpTT04ubG9hZCA9IGZ1bmN0aW9uKHVybCwgc3VjY2Vzc0NhbGxiYWNrLCBmYWlsdXJlQ2FsbGJh
Y2ssIG9wdGlvbnMpCi17Ci0gICAgY29uc29sZS5hc3NlcnQodXJsKTsKLQotICAgIGlmICghKHN1
Y2Nlc3NDYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKGZhaWx1cmVDYWxsYmFjayAmJiB0eXBlb2YgZmFpbHVyZUNhbGxiYWNrID09PSAib2Jq
ZWN0IikKLSAgICAgICAgb3B0aW9ucyA9IGZhaWx1cmVDYWxsYmFjazsKLQotICAgIGlmICghKGZh
aWx1cmVDYWxsYmFjayBpbnN0YW5jZW9mIEZ1bmN0aW9uKSkKLSAgICAgICAgZmFpbHVyZUNhbGxi
YWNrID0gZnVuY3Rpb24oKSB7IH07Ci0KLSAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICJvYmpl
Y3QiKQotICAgICAgICBvcHRpb25zID0ge307Ci0KLSAgICB2YXIgcmVxdWVzdCA9IG5ldyBYTUxI
dHRwUmVxdWVzdDsKLSAgICByZXF1ZXN0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkg
ewotICAgICAgICBpZiAodGhpcy5yZWFkeVN0YXRlICE9PSA0KQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIC8vIERvbid0IGNvbnNpZGVyIGEgc3RhdHVzIG9mIDAgdG8gYmUgYSBsb2Fk
IGVycm9yIGZvciBlYXNpZXIgdGVzdGluZyB3aXRoIGxvY2FsIGZpbGVzLgotICAgICAgICB2YXIg
bG9hZEVycm9yT2NjdXJyZWQgPSB0aGlzLnN0YXR1cyAhPT0gMCAmJiB0aGlzLnN0YXR1cyAhPT0g
MjAwOwotICAgICAgICBpZiAobG9hZEVycm9yT2NjdXJyZWQpIHsKLSAgICAgICAgICAgIGZhaWx1
cmVDYWxsYmFjayh7ZXJyb3JUeXBlOiBKU09OLkxvYWRFcnJvciwgZXJyb3I6IHRoaXMuc3RhdHVz
VGV4dCwgZXJyb3JIVFRQQ29kZTogdGhpcy5zdGF0dXN9KTsKLSAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICB2YXIgcmVzcG9uc2VUZXh0
ID0gcmVxdWVzdC5yZXNwb25zZVRleHQ7Ci0gICAgICAgICAgICBpZiAob3B0aW9ucy5oYXNPd25Q
cm9wZXJ0eSgianNvbnBDYWxsYmFja05hbWUiKSkKLSAgICAgICAgICAgICAgICByZXNwb25zZVRl
eHQgPSByZXNwb25zZVRleHQucmVwbGFjZShuZXcgUmVnRXhwKCJeIiArIG9wdGlvbnMuanNvbnBD
YWxsYmFja05hbWUgKyAiXFwoKC4qKVxcKTs/JCIpLCAiJDEiKTsKLSAgICAgICAgICAgIHZhciBk
YXRhID0gSlNPTi5wYXJzZShyZXNwb25zZVRleHQpOwotICAgICAgICB9IGNhdGNoIChlKSB7Ci0g
ICAgICAgICAgICB2YXIgZGF0YSA9IHtlcnJvclR5cGU6IEpTT04uUGFyc2VFcnJvciwgZXJyb3I6
IGUubWVzc2FnZX07Ci0gICAgICAgICAgICBmYWlsdXJlQ2FsbGJhY2soZGF0YSk7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzdWNjZXNzQ2FsbGJhY2soZGF0YSk7
Ci0gICAgfTsKLQotICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsKTsKLSAgICBpZiAob3B0aW9u
cy5oYXNPd25Qcm9wZXJ0eSgid2l0aENyZWRlbnRpYWxzIikpCi0gICAgICAgIHJlcXVlc3Qud2l0
aENyZWRlbnRpYWxzID0gb3B0aW9ucy53aXRoQ3JlZGVudGlhbHM7Ci0gICAgcmVxdWVzdC5zZW5k
KCk7Ci19OwotCi1mdW5jdGlvbiBsb2FkWE1MKHVybCwgY2FsbGJhY2ssIG9wdGlvbnMpIHsKLSAg
ICBjb25zb2xlLmFzc2VydCh1cmwpOwotCi0gICAgaWYgKCEoY2FsbGJhY2sgaW5zdGFuY2VvZiBG
dW5jdGlvbikpCi0gICAgICAgIHJldHVybjsKLQotICAgIHZhciByZXF1ZXN0ID0gbmV3IFhNTEh0
dHBSZXF1ZXN0OwotICAgIHJlcXVlc3Qub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7
Ci0gICAgICAgIGlmICh0aGlzLnJlYWR5U3RhdGUgIT09IDQpCi0gICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgLy8gQWxsb3cgYSBzdGF0dXMgb2YgMCBmb3IgZWFzaWVyIHRlc3Rpbmcgd2l0
aCBsb2NhbCBmaWxlcy4KLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cyB8fCB0aGlzLnN0YXR1cyA9
PT0gMjAwKQotICAgICAgICAgICAgY2FsbGJhY2socmVxdWVzdC5yZXNwb25zZVhNTCk7Ci0gICAg
fTsKLQotICAgIHJlcXVlc3Qub3BlbigiR0VUIiwgdXJsKTsKLSAgICBpZiAoKHR5cGVvZiBvcHRp
b25zID09PSAib2JqZWN0IikgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eSgid2l0aENyZWRlbnRp
YWxzIikpCi0gICAgICAgIHJlcXVlc3Qud2l0aENyZWRlbnRpYWxzID0gb3B0aW9ucy53aXRoQ3Jl
ZGVudGlhbHM7Ci0gICAgcmVxdWVzdC5zZW5kKCk7Ci19OwotCi1Ob2RlLnByb3RvdHlwZS5pc0Fu
Y2VzdG9yID0gZnVuY3Rpb24obm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIHZhciBjdXJyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKLSAgICB3
aGlsZSAoY3VycmVudE5vZGUpIHsKLSAgICAgICAgaWYgKHRoaXMgPT09IGN1cnJlbnROb2RlKQot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5v
ZGUucGFyZW50Tm9kZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLU5vZGUucHJv
dG90eXBlLmlzRGVzY2VuZGFudCA9IGZ1bmN0aW9uKGRlc2NlbmRhbnQpCi17Ci0gICAgcmV0dXJu
ICEhZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50LmlzQW5jZXN0b3IodGhpcyk7Ci19Ci0KLU5vZGUu
cHJvdG90eXBlLmlzU2VsZk9yQW5jZXN0b3IgPSBmdW5jdGlvbihub2RlKQotewotICAgIHJldHVy
biAhIW5vZGUgJiYgKG5vZGUgPT09IHRoaXMgfHwgdGhpcy5pc0FuY2VzdG9yKG5vZGUpKTsKLX0K
LQotTm9kZS5wcm90b3R5cGUuaXNTZWxmT3JEZXNjZW5kYW50ID0gZnVuY3Rpb24obm9kZSkKLXsK
LSAgICByZXR1cm4gISFub2RlICYmIChub2RlID09PSB0aGlzIHx8IHRoaXMuaXNEZXNjZW5kYW50
KG5vZGUpKTsKLX0KLQotRWxlbWVudC5wcm90b3R5cGUucmVtb3ZlQ2hpbGRyZW4gPSBmdW5jdGlv
bigpCi17Ci0gICAgLy8gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgdG8gYmUgdGhlIGZhc3Rlc3QgcmVt
b3ZhbCBtZXRob2QuCi0gICAgaWYgKHRoaXMuZmlyc3RDaGlsZCkKLSAgICAgICAgdGhpcy50ZXh0
Q29udGVudCA9ICIiOwotfTsKLQotRE9NVG9rZW5MaXN0LnByb3RvdHlwZS5jb250YWlucyA9IGZ1
bmN0aW9uKHN0cmluZykKLXsKLSAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gdGhpcy5sZW5ndGg7
IGkgPCBlbmQ7ICsraSkgewotICAgICAgICBpZiAodGhpcy5pdGVtKGkpID09PSBzdHJpbmcpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1B
cnJheS5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5jdGlvbih2YWx1ZSkKLXsKLSAgICByZXR1cm4g
dGhpcy5pbmRleE9mKHZhbHVlKSA+PSAwOwotfTsKLQotQXJyYXkucHJvdG90eXBlLmZpbmRGaXJz
dCA9IGZ1bmN0aW9uKHByZWRpY2F0ZSkKLXsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMu
bGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHByZWRpY2F0ZSh0aGlzW2ldKSkKLSAgICAgICAg
ICAgIHJldHVybiB0aGlzW2ldOwotICAgIH0KLQotICAgIHJldHVybiBudWxsOwotfTsKLQotQXJy
YXkucHJvdG90eXBlLmF2ZXJhZ2UgPSBmdW5jdGlvbigpCi17Ci0gICAgdmFyIHN1bSA9IDA7Ci0g
ICAgdmFyIGNvdW50ID0gdGhpcy5sZW5ndGg7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKQotICAgICAgICBzdW0gKz0gdGhpc1tpXTsKLSAgICByZXR1cm4gc3VtIC8gY291bnQ7
Ci19OwotCi1BcnJheS5wcm90b3R5cGUubWVkaWFuID0gZnVuY3Rpb24oKQotewotICAgIHZhciBh
cnJheSA9IHRoaXMuc2xpY2UoKTsgLy8gTWFrZSBhIGNvcHkgdG8gYXZvaWQgbW9kaWZ5aW5nIHRo
ZSBvYmplY3QuCi0gICAgYXJyYXkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsg
fSk7Ci0KLSAgICB2YXIgaGFsZiA9IE1hdGguZmxvb3IoYXJyYXkubGVuZ3RoIC8gMik7Ci0KLSAg
ICBpZiAoYXJyYXkubGVuZ3RoICUgMikKLSAgICAgICAgcmV0dXJuIGFycmF5W2hhbGZdOwotICAg
IGVsc2UKLSAgICAgICAgcmV0dXJuIChhcnJheVtoYWxmIC0gMV0gKyBhcnJheVtoYWxmXSkgLyAy
OwotfTsKLQotU3RyaW5nLnByb3RvdHlwZS5jb250YWlucyA9IGZ1bmN0aW9uKHN1YnN0cmluZykK
LXsKLSAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN1YnN0cmluZykgPj0gMDsKLX07Ci0KLVN0cmlu
Zy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKHN1YnN0cmluZykKLXsKLSAgICByZXR1
cm4gdGhpcy5sYXN0SW5kZXhPZihzdWJzdHJpbmcsIDApID09PSAwOwotfTsKLQotZnVuY3Rpb24g
c29ydERpY3Rpb25hcmllc0J5T3JkZXIodW5zb3J0ZWQpCi17Ci0gICAgdmFyIHNvcnRlZCA9IFtd
OwotCi0gICAgZm9yICh2YXIga2V5IGluIHVuc29ydGVkKQotICAgICAgICBzb3J0ZWQucHVzaCh1
bnNvcnRlZFtrZXldKTsKLQotICAgIHNvcnRlZC5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsKLSAgICAg
ICAgcmV0dXJuIGEub3JkZXIgLSBiLm9yZGVyOwotICAgIH0pOwotCi0gICAgcmV0dXJuIHNvcnRl
ZDsKLX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcwkocmV2aXNp
b24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0QnVpbGRib3QuanMJKG5v
bmV4aXN0ZW50KQpAQCAtMSwxMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0g
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLVdlYktpdEJ1
aWxkYm90ID0gZnVuY3Rpb24oKQotewotICAgIGNvbnN0IHF1ZXVlSW5mbyA9IHsKLSAgICAgICAg
IkFwcGxlLUJpZ1N1ci1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZv
cm0ubWFjT1NCaWdTdXIsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJl
OiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBw
bGUtQ2F0YWxpbmEtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5t
YWNPU0NhdGFsaW5hLCBkZWJ1ZzogdHJ1ZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBC
dWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUt
Q2F0YWxpbmEtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1h
Y09TQ2F0YWxpbmEsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBC
dWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUt
Q2F0YWxpbmEtRGVidWctV0sxLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0u
bWFjT1NDYXRhbGluYSwgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBC
dWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJBcHBsZS1DYXRhbGluYS1E
ZWJ1Zy1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU0NhdGFs
aW5hLCBkZWJ1ZzogdHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRl
c3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtV0sx
LVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NDYXRhbGluYSwgZGVi
dWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVn
b3J5LldlYktpdDF9LAotICAgICAgICAiQXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItUGVyZiI6
IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TQ2F0YWxpbmEsIGRlYnVnOiBmYWxz
ZSwgcGVyZm9ybWFuY2U6IHRydWUsIGhlYWRpbmc6ICJQZXJmb3JtYW5jZSJ9LAotICAgICAgICAi
QXBwbGUtQ2F0YWxpbmEtUmVsZWFzZS1XSzItVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5Q
bGF0Zm9ybS5tYWNPU0NhdGFsaW5hLCBkZWJ1ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENh
dGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJBcHBsZS1D
YXRhbGluYSBKU0MiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU0NhdGFsaW5h
LCBoZWFkaW5nOiAiSmF2YVNjcmlwdCIsIGNvbWJpbmVkUXVldWVzOiB7Ci0gICAgICAgICAgICAi
QXBwbGUtQ2F0YWxpbmEtTExJTlQtQ0xvb3AtQnVpbGRBbmRUZXN0Ijoge2hlYWRpbmc6ICJMTElO
VCBDTG9vcCAoQnVpbGRBbmRUZXN0KSJ9LAotICAgICAgICAgICAgIkFwcGxlLUNhdGFsaW5hLURl
YnVnLUpTQy1UZXN0cyI6IHtoZWFkaW5nOiAiRGVidWcgSlNDIChUZXN0cykifSwKLSAgICAgICAg
ICAgICJBcHBsZS1DYXRhbGluYS1SZWxlYXNlLUpTQy1UZXN0cyI6IHtoZWFkaW5nOiAiUmVsZWFz
ZSBKU0MgKFRlc3RzKSJ9LAotICAgICAgICAgICAgIkFwcGxlLUNhdGFsaW5hLURlYnVnLVRlc3Qy
NjItVGVzdHMiOiB7aGVhZGluZzogIkRlYnVnIFRlc3QyNjIgKFRlc3RzKSJ9LAotICAgICAgICAg
ICAgIkFwcGxlLUNhdGFsaW5hLVJlbGVhc2UtVGVzdDI2Mi1UZXN0cyI6IHtoZWFkaW5nOiAiUmVs
ZWFzZSBUZXN0MjYyIChUZXN0cykifSwKLSAgICAgICAgfX0sCi0gICAgICAgICJBcHBsZS1Nb2ph
dmUtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2
ZSwgZGVidWc6IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVp
bGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLU1vamF2ZS1SZWxl
YXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0ubWFjT1NNb2phdmUsIGRl
YnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFy
Y2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtTW9qYXZlLURlYnVnLVdL
MS1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLm1hY09TTW9qYXZlLCBkZWJ1
ZzogdHJ1ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29y
eS5XZWJLaXQxfSwKLSAgICAgICAgIkFwcGxlLU1vamF2ZS1EZWJ1Zy1XSzItVGVzdHMiOiB7cGxh
dGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2ZSwgZGVidWc6IHRydWUsIHRlc3Rl
cjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0g
ICAgICAgICJBcHBsZS1Nb2phdmUtUmVsZWFzZS1XSzEtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hi
b2FyZC5QbGF0Zm9ybS5tYWNPU01vamF2ZSwgZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRl
c3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDF9LAotICAgICAgICAiQXBw
bGUtTW9qYXZlLVJlbGVhc2UtV0syLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZv
cm0ubWFjT1NNb2phdmUsIGRlYnVnOiBmYWxzZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6
IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1S
ZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTREZXZpY2Us
IGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWls
ZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtaU9TLTE0LVNpbXVs
YXRvci1SZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRT
aW11bGF0b3IsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWls
ZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUtaU9T
LTE0LVNpbXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBs
YXRmb3JtLmlPUzE0U2ltdWxhdG9yLCBoZWFkaW5nOiJpT1MgUmVsZWFzZSIsIGRlYnVnOiBmYWxz
ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJL
aXQyfSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctQnVpbGQiOiB7cGxh
dGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5pT1MxNFNpbXVsYXRvciwgZGVidWc6IHRydWUsIGJ1
aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4
dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLWlPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRl
c3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11bGF0b3IsIGRlYnVn
OiB0cnVlLCBoZWFkaW5nOiJpT1MgRGVidWciLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTog
QnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiQXBwbGUtaVBhZE9TLTE0
LVNpbXVsYXRvci1SZWxlYXNlLVdLMi1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRm
b3JtLmlPUzE0U2ltdWxhdG9yLCBoZWFkaW5nOiJpUGFkT1MgUmVsZWFzZSIsIGRlYnVnOiBmYWxz
ZSwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJL
aXQyfSwKLSAgICAgICAgIkFwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3Rz
Ijoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uaU9TMTRTaW11bGF0b3IsIGhlYWRpbmc6
ImlQYWRPUyBEZWJ1ZyIsIGRlYnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTog
QnVpbGRib3QuVGVzdENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiQXBwbGUtdHZPUy0xNC1S
ZWxlYXNlLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0udHZPUzE0RGV2aWNl
LCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVp
bGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAgICAgIkFwcGxlLXR2T1MtU2ltdWxh
dG9yLTE0LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS50dk9T
MTRTaW11bGF0b3IsIGRlYnVnOiBmYWxzZSwgYnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBC
dWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5TaXh0eUZvdXJCaXR9LAotICAgICAgICAiQXBwbGUt
d2F0Y2hPUy03LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS53
YXRjaE9TN0RldmljZSwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6
IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdH0sCi0gICAgICAgICJBcHBs
ZS13YXRjaE9TLVNpbXVsYXRvci03LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS53YXRjaE9TN1NpbXVsYXRvciwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVl
LCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0s
Ci0gICAgICAgICJBcHBsZS1XaW4tMTAtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS5XaW5kb3dzMTAsIGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRl
Y3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0ZWN0dXJlLlRoaXJ0eVR3b0JpdCB9LAotICAgICAg
ICAiQXBwbGUtV2luLTEwLVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0
Zm9ybS5XaW5kb3dzMTAsIGJ1aWxkZXI6IHRydWUsIGFyY2hpdGVjdHVyZTogQnVpbGRib3QuQnVp
bGRBcmNoaXRlY3R1cmUuVGhpcnR5VHdvQml0fSwKLSAgICAgICAgIkFwcGxlLVdpbi0xMC1EZWJ1
Zy1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLldpbmRvd3MxMCwgZGVidWc6
IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVnb3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnku
V2ViS2l0MX0sCi0gICAgICAgICJBcHBsZS1XaW4tMTAtUmVsZWFzZS1UZXN0cyI6IHtwbGF0Zm9y
bTogRGFzaGJvYXJkLlBsYXRmb3JtLldpbmRvd3MxMCwgdGVzdGVyOiB0cnVlLCB0ZXN0Q2F0ZWdv
cnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAgICAgICAgIldpbkNhaXJvLTY0
LWJpdC1XS0wtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLldp
bkNhaXJvLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1aWxkQXJjaGl0
ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJXaW5DYWlyby02NC1iaXQtV0tMLVJlbGVh
c2UtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5XaW5DYWlybywgdGVzdGVy
OiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQxfSwKLSAg
ICAgICAgIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctQnVpbGQiOiB7cGxhdGZvcm06IERhc2hi
b2FyZC5QbGF0Zm9ybS5XaW5DYWlybywgZGVidWc6IHRydWUsIGJ1aWxkZXI6IHRydWUsIGFyY2hp
dGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAg
ICAgIldpbkNhaXJvLTY0LWJpdC1XS0wtRGVidWctVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2Fy
ZC5QbGF0Zm9ybS5XaW5DYWlybywgZGVidWc6IHRydWUsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVn
b3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0MX0sCi0gICAgICAgICJXUEUtTGludXgt
NjQtYml0LVJlbGVhc2UtQnVpbGQiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51
eFdQRSwgZGVidWc6IGZhbHNlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90
LkJ1aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJXUEUtTGludXgtNjQt
Yml0LVJlbGVhc2UtVGVzdHMiOiB7cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eFdQ
RSwgZGVidWc6IGZhbHNlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVz
dENhdGVnb3J5LldlYktpdDJ9LAotICAgICAgICAiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWls
ZCI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4V1BFLCBkZWJ1ZzogdHJ1ZSwg
YnVpbGRlcjogdHJ1ZSwgYXJjaGl0ZWN0dXJlOiBCdWlsZGJvdC5CdWlsZEFyY2hpdGVjdHVyZS5T
aXh0eUZvdXJCaXR9LAotICAgICAgICAiV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0cyI6IHtw
bGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4V1BFLCBkZWJ1ZzogdHJ1ZSwgdGVzdGVy
OiB0cnVlLCB0ZXN0Q2F0ZWdvcnk6IEJ1aWxkYm90LlRlc3RDYXRlZ29yeS5XZWJLaXQyfSwKLSAg
ICAgICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1CdWlsZCI6IHtwbGF0Zm9ybTogRGFzaGJv
YXJkLlBsYXRmb3JtLkxpbnV4R1RLLCBkZWJ1ZzogZmFsc2UsIGJ1aWxkZXI6IHRydWUsIGFyY2hp
dGVjdHVyZTogQnVpbGRib3QuQnVpbGRBcmNoaXRlY3R1cmUuU2l4dHlGb3VyQml0fSwKLSAgICAg
ICAgIkdUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1UZXN0cyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJk
LlBsYXRmb3JtLkxpbnV4R1RLLCBkZWJ1ZzogZmFsc2UsIHRlc3RlcjogdHJ1ZSwgdGVzdENhdGVn
b3J5OiBCdWlsZGJvdC5UZXN0Q2F0ZWdvcnkuV2ViS2l0Mn0sCi0gICAgICAgICJHVEstTGludXgt
NjQtYml0LURlYnVnLUJ1aWxkIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhH
VEssIGRlYnVnOiB0cnVlLCBidWlsZGVyOiB0cnVlLCBhcmNoaXRlY3R1cmU6IEJ1aWxkYm90LkJ1
aWxkQXJjaGl0ZWN0dXJlLlNpeHR5Rm91ckJpdH0sCi0gICAgICAgICJHVEstTGludXgtNjQtYml0
LURlYnVnLVRlc3RzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEssIGRl
YnVnOiB0cnVlLCB0ZXN0ZXI6IHRydWUsIHRlc3RDYXRlZ29yeTogQnVpbGRib3QuVGVzdENhdGVn
b3J5LldlYktpdDJ9LAotICAgICAgICAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVBlcmYiOiB7
cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEdUSywgZGVidWc6IGZhbHNlLCBwZXJm
b3JtYW5jZTogdHJ1ZSwgaGVhZGluZzogIlBlcmZvcm1hbmNlIn0sCi0gICAgICAgICJHVEsgTFRT
IEJ1aWxkZXJzIjoge3BsYXRmb3JtOiBEYXNoYm9hcmQuUGxhdGZvcm0uTGludXhHVEssIGhlYWRp
bmc6ICJMVFMgQnVpbGRlcnMiLCBjb21iaW5lZFF1ZXVlczogewotICAgICAgICAgICAgIkdUSy1M
aW51eC02NC1iaXQtUmVsZWFzZS1EZWJpYW4tU3RhYmxlLUJ1aWxkIjoge2hlYWRpbmc6ICJEZWJp
YW4gU3RhYmxlIChCdWlsZCkifSwKLSAgICAgICAgICAgICJHVEstTGludXgtNjQtYml0LVJlbGVh
c2UtVWJ1bnR1LUxUUy1CdWlsZCI6IHtoZWFkaW5nOiAiVWJ1bnR1IExUUyAoQnVpbGQpIn0sCi0g
ICAgICAgIH19LAotICAgICAgICAiR1RLIFdheWxhbmQgVGVzdGVycyI6IHtwbGF0Zm9ybTogRGFz
aGJvYXJkLlBsYXRmb3JtLkxpbnV4R1RLLCBoZWFkaW5nOiAiV2F5bGFuZCIsIGNvbWJpbmVkUXVl
dWVzOiB7Ci0gICAgICAgICAgICAiR1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLVdheWxhbmQtVGVz
dHMiOiB7aGVhZGluZzogIldheWxhbmQifSwKLSAgICAgICAgfX0sCi0gICAgICAgICJKU0NPbmx5
IEFBcmNoNjQgVGVzdGVycyI6IHtwbGF0Zm9ybTogRGFzaGJvYXJkLlBsYXRmb3JtLkxpbnV4SlND
T25seSwgaGVhZGluZzogIkFBcmNoNjQiLCBjb21iaW5lZFF1ZXVlczogewotICAgICAgICAgICAg
IkpTQ09ubHktTGludXgtQUFyY2g2NC1SZWxlYXNlIjoge2hlYWRpbmc6ICJBQXJjaDY0In0sCi0g
ICAgICAgIH19LAotICAgICAgICAiSlNDT25seSBBUk12NyBUZXN0ZXJzIjoge3BsYXRmb3JtOiBE
YXNoYm9hcmQuUGxhdGZvcm0uTGludXhKU0NPbmx5LCBoZWFkaW5nOiAiQVJNdjciLCBjb21iaW5l
ZFF1ZXVlczogewotICAgICAgICAgICAgIkpTQ09ubHktTGludXgtQVJNdjctVGh1bWIyLVJlbGVh
c2UiOiB7aGVhZGluZzogIkFSTXY3IFRodW1iMiJ9LAotICAgICAgICAgICAgIkpTQ09ubHktTGlu
dXgtQVJNdjctVGh1bWIyLVNvZnRGUC1SZWxlYXNlIjoge2hlYWRpbmc6ICJBUk12NyBUaHVtYjIg
U29mdEZQIn0sCi0gICAgICAgIH19LAotICAgICAgICAiSlNDT25seSBNSVBTIFRlc3RlcnMiOiB7
cGxhdGZvcm06IERhc2hib2FyZC5QbGF0Zm9ybS5MaW51eEpTQ09ubHksIGhlYWRpbmc6ICJNSVBT
IiwgY29tYmluZWRRdWV1ZXM6IHsKLSAgICAgICAgICAgICJKU0NPbmx5LUxpbnV4LU1JUFMzMmVs
LVJlbGVhc2UiOiB7aGVhZGluZzogIk1JUFMzMmVsIn0sCi0gICAgICAgIH19LAotICAgIH07Ci0K
LSAgICBCdWlsZGJvdC5jYWxsKHRoaXMsICJodHRwczovL2J1aWxkLndlYmtpdC5vcmcvIiwgcXVl
dWVJbmZvLCB7IlVTRV9CVUlMREJPVF9WRVJTSU9OX0xFU1NfVEhBTl8wOSIgOiB0cnVlfSk7Ci19
OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFdlYktpdEJ1aWxkYm90KTsK
LQotV2ViS2l0QnVpbGRib3QucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9yOiBXZWJLaXRC
dWlsZGJvdCwKLSAgICBfX3Byb3RvX186IEJ1aWxkYm90LnByb3RvdHlwZSwKLSAgICBwZXJmb3Jt
YW5jZURhc2hib2FyZFVSTDogICJodHRwczovL3BlcmYud2Via2l0Lm9yZyIsCi0KLSAgICBnZXQg
ZGVmYXVsdEJyYW5jaGVzKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBbeyByZXBvc2l0b3J5OiBE
YXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLCBuYW1lOiAidHJ1bmsiIH1dOwotICAgIH0K
LX07CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy9XZWJLaXRUZXN0SGlzdG9yeS5qcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvV2ViS2l0VGVzdEhpc3Rvcnku
anMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotVGVzdEhpc3Rv
cnkgPSBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy5fYmFzZVVSTCA9ICJodHRwczovL3Jlc3VsdHMu
d2Via2l0Lm9yZyI7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVuY3Rpb25zKFRl
c3RIaXN0b3J5KTsKLQotVGVzdEhpc3RvcnkucHJvdG90eXBlID0gewotICAgIGNvbnN0cnVjdG9y
OiBUZXN0SGlzdG9yeSwKLSAgICBfX3Byb3RvX186IEJhc2VPYmplY3QucHJvdG90eXBlLAotCi0g
ICAgaGlzdG9yeVBhZ2VVUkxGb3JUZXN0OiBmdW5jdGlvbihwYXRoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2Jhc2VVUkwgKyAiP3N1aXRlPWxheW91dC10ZXN0cyZ0ZXN0PSIgKyBlbmNv
ZGVVUklDb21wb25lbnQocGF0aCk7Ci0gICAgfQotfTsKClByb3BlcnR5IGNoYW5nZXMgb246IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2Rhc2hib2FyZC9TY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBwcm9wZXJ0eQpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQv
cGxhaW4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1NjcmlwdHMvdGVzdHMvaW5kZXgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hi
b2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjY5MDQyKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvaW5kZXgtZXhwZWN0ZWQudHh0CShub25leGlz
dGVudCkKQEAgLTEsNDggKzAsMCBAQAotV2ViS2l0IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkIFFV
bml0IFRlc3QgUnVubmVyIG5vZ2xvYmFsc25vdHJ5Y2F0Y2gKLUhpZGUgcGFzc2VkIHRlc3RzCi1U
cmFjOiBfbG9hZGVkICgwLCA4LCA4KVJlcnVuCi1UcmFjOiBwYXJzZSBnaXRCcmFuY2hlcyAoMCwg
NywgNylSZXJ1bgotVHJhYzogX3BhcnNlUmV2aXNpb25Gcm9tVVJMICgwLCAzLCAzKVJlcnVuCi1U
cmFjOiBuZXh0UmV2aXNpb24gKDAsIDIsIDIpUmVydW4KLVRyYWM6IGluZGV4T2ZSZXZpc2lvbiAo
MCwgMSwgMSlSZXJ1bgotVHJhYzogY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNpb24gKDAs
IDEsIDEpUmVydW4KLVRyYWM6IGNvbW1pdHNPbkJyYW5jaExhdGVyVGhhblJldmlzaW9uIG5vIGNv
bW1pdHMgKDAsIDEsIDEpUmVydW4KLVRyYWM6IGNvbW1pdHNPbkJyYW5jaEluUmV2aXNpb25SYW5n
ZSAoMCwgMSwgMSlSZXJ1bgotVHJhYzogcmV2aXNpb25VUkwgKDAsIDIsIDIpUmVydW4KLVRyYWM6
IHJldmlzaW9uVVJMIHdpdGggVHJhYyBJZGVudGlmaWVyICgwLCAyLCAyKVJlcnVuCi1UcmFjOiBf
eG1sVGltZWxpbmVVUkwgKDAsIDIsIDIpUmVydW4KLVRyYWM6IF94bWxUaW1lbGluZVVSTCB3aXRo
IFRyYWMgSWRlbnRpZmllciAoMCwgMiwgMilSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9hcHBl
bmRQZW5kaW5nUmV2aXNpb25Db3VudCAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6
IF9wb3BvdmVyTGluZXNGb3JDb21taXRSYW5nZSAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1
ZVZpZXc6IF9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRzICgwLCAxLCAxKVJlcnVuCi1C
dWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHMgbm8gcGVu
ZGluZyBjb21taXRzICgwLCAxLCAxKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQ
b3BvdmVyRm9yUmV2aXNpb25SYW5nZSAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6
IF9wcmVzZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2Ugbm8gY29tbWl0cyAoMCwgMSwgMSlSZXJ1
bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJh
dGlvbiAoMCwgMywgMylSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9yZXZpc2lvbkNvbnRlbnRX
aXRoUG9wb3ZlckZvckl0ZXJhdGlvbiBoYXMgcHJldmlvdXNJdGVyYXRpb24gKDAsIDQsIDQpUmVy
dW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IFN1YnZlcnNp
b24gKDAsIDEsIDEpUmVydW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfZm9ybWF0UmV2aXNpb25Gb3JE
aXNwbGF5IEdpdCAoMCwgMSwgMSlSZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9wb3BvdmVyQ29u
dGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGxvYWQgZmFpbHVyZSBVSSB0ZXN0
ICgwLCAzLCAzKVJlcnVuCi1CdWlsZEJvdFF1ZXVlVmlldzogX3ByZXNlbnRQb3BvdmVyRm9ySmF2
YVNjcmlwdENvcmVUZXN0UmVncmVzc2lvbnMgaW5jbHVkaW5nIGxvYWRpbmcgKDAsIDAsIDApUmVy
dW4KLUJ1aWxkQm90UXVldWVWaWV3OiBfY3JlYXRlTG9hZGluZ0luZGljYXRvciAoMCwgMywgMylS
ZXJ1bgotQnVpbGRCb3RRdWV1ZVZpZXc6IF9wcmVzZW50UG9wb3ZlckZvckphdmFTY3JpcHRDb3Jl
VGVzdFJlZ3Jlc3Npb25zIGFscmVhZHkgbG9hZGVkICgwLCA0LCA0KVJlcnVuCi1CdWlsZEJvdFF1
ZXVlOiBjb21wYXJlSXRlcmF0aW9ucyBieSByZXZpc2lvbnMgKDAsIDMsIDMpUmVydW4KLUJ1aWxk
Qm90UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zIGJ5IGxvYWRlZCAob25lIHJldmlzaW9uIG1pc3Np
bmcpICgwLCAyLCAyKVJlcnVuCi1CdWlsZEJvdFF1ZXVlOiBjb21wYXJlSXRlcmF0aW9ucyBieSBs
b2FkZWQgKHNhbWUgcmV2aXNpb24pICgwLCAyLCAyKVJlcnVuCi1CdWlsZEJvdFF1ZXVlOiBjb21w
YXJlSXRlcmF0aW9ucyBieSBpZCAocmV2aXNpb25zIG5vdCBzcGVjaWZpZWQpICgwLCAzLCAzKVJl
cnVuCi1CdWlsZEJvdFF1ZXVlOiBjb21wYXJlSXRlcmF0aW9ucyBieSBpZCAoc2FtZSByZXZpc2lv
bikgKDAsIDMsIDMpUmVydW4KLUJ1aWxkQm90UXVldWU6IGNvbXBhcmVJdGVyYXRpb25zQnlSZXZp
c2lvbnMgKDAsIDMsIDMpUmVydW4KLXIzMzAyMmJvYkB3ZWJraXQub3JnY29tbWl0IG1lc3NhZ2UK
LWNvbW1pdHMgc2luY2UgcHJldmlvdXMgcmVzdWx0Ci1yMzMwMjBnZW9yZ2VAd2Via2l0Lm9yZ2Nv
bW1pdCBtZXNzYWdlCi1yMzMwMThqb2huQHdlYmtpdC5vcmdjb21taXQgbWVzc2FnZQotbm8gY29t
bWl0cyB0byB0cnVuayBzaW5jZSBwcmV2aW91cyByZXN1bHQKLWNvbW1pdHMgc2luY2UgcHJldmlv
dXMgcmVzdWx0Ci1yMzMwMjJib2JAd2Via2l0Lm9yZ2NvbW1pdCBtZXNzYWdlCi1yMzMwMjBnZW9y
Z2VAd2Via2l0Lm9yZ2NvbW1pdCBtZXNzYWdlCi1pZGJ1aWxkICMxamF2YXNjcmlwdGNvcmUgdGVz
dCBmYWlsdXJlcwotTG9hZGluZ+KApgotaWRidWlsZCAjMWphdmFzY3JpcHRjb3JlIHRlc3QgZmFp
bHVyZXMKLXVubwotZG9zCi10cmVzCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9p
bmRleC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2luZGV4
Lmh0bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL2lu
ZGV4Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw4MCArMCwwIEBACi08IWRvY3R5cGUgaHRtbD4K
LTwhLS0KLUNvcHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0y
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci0gICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPgotCi0g
ICAgPHRpdGxlPldlYktpdCBCb3QgV2F0Y2hlcidzIERhc2hib2FyZCBRVW5pdCBUZXN0IFJ1bm5l
cjwvdGl0bGU+Ci0KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uLy4u
Ly4uLy4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0L3F1bml0LmNzcyI+Ci0gICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi9TdHlsZXMvTWFpbi5jc3MiPjwvbGlu
az4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL1N0eWxlcy9Qb3BvdmVy
LmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vU3R5
bGVzL1F1ZXVlVmlldy5jc3MiPjwvbGluaz4KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhy
ZWY9Ii4uLy4uL1N0eWxlcy9TdGF0dXNMaW5lVmlldy5jc3MiPjwvbGluaz4KLQotICAgIDxzY3Jp
cHQgc3JjPSIuLi9VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9C
YXNlT2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vRGFzaGJvYXJkLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3QuanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSIuLi9CdWd6aWxsYS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uL0J1YmJsZVF1ZXVlU2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Li4vV2ViS2l0QnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWls
ZGJvdFF1ZXVlLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnViYmxlUXVldWUu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdEl0ZXJhdGlvbi5qcyI+
PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9HZW9tZXRyeS5qcyI+PC9zY3JpcHQ+Ci0gICAg
PHNjcmlwdCBzcmM9Ii4uL1BvcG92ZXIuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIu
Li9Qb3BvdmVyVHJhY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1F1ZXVl
Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxkYm90UXVldWVWaWV3
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RCdWlsZGVyUXVldWVW
aWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RUZXN0ZXJRdWV1
ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWlsZGJvdENvbWJpbmVk
UXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vQnVpbGRib3RQZXJm
b3JtYW5jZVF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL0J1aWxk
Ym90TGVha3NRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9CdWJi
bGVRdWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSIuLi9TdGF0dXNMaW5l
Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uL1NldHRpbmdzLmpzIj48L3Nj
cmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iLi4vVHJhYy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL1NvdXJjZS9UaGlyZFBhcnR5L3F1bml0L3F1bml0
L3F1bml0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tUcmFj
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL01vY2tCdWlsZGJvdC5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1
ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9Nb2NrQnVpbGRib3RR
dWV1ZVZpZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvTW9ja0J1
aWxkYm90VGVzdFJlc3VsdHMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvdGVzdHMuanMiPjwvc2NyaXB0PgotCi08L2hlYWQ+Ci08Ym9keT4KLSAgICA8aDEgaWQ9InF1
bml0LWhlYWRlciI+V2ViS2l0IEJvdCBXYXRjaGVyJ3MgRGFzaGJvYXJkIFFVbml0IFRlc3QgUnVu
bmVyPC9oMT4KLSAgICA8aDIgaWQ9InF1bml0LWJhbm5lciI+PC9oMj4KLSAgICA8ZGl2IGlkPSJx
dW5pdC10ZXN0cnVubmVyLXRvb2xiYXIiPjwvZGl2PgotICAgIDxoMiBpZD0icXVuaXQtdXNlckFn
ZW50Ij48L2gyPgotICAgIDxvbCBpZD0icXVuaXQtdGVzdHMiPjwvb2w+Ci08L2JvZHk+Ci08L2h0
bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvcmVzb3VyY2VzL01vY2tCdWlsZGJvdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90LmpzCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxk
Ym90LmpzCShub25leGlzdGVudCkKQEAgLTEsNDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLU1vY2tC
dWlsZGJvdCA9IGZ1bmN0aW9uKCkge307Ci0KLU1vY2tCdWlsZGJvdC5wcm90b3R5cGUgPSB7Ci0g
ICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdCwKLQotICAgIGJ1aWxkUGFnZVVSTEZvckl0ZXJh
dGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuYmFz
ZVVSTCArICJidWlsZGVycy8iICsgZW5jb2RlVVJJQ29tcG9uZW50KGl0ZXJhdGlvbi5xdWV1ZS5p
ZCkgKyAiL2J1aWxkcy8iICsgaXRlcmF0aW9uLmlkOwotICAgIH0sCi0KLSAgICBqYXZhU2NyaXB0
Q29yZVRlc3RGYWlsdXJlc1VSTEZvckl0ZXJhdGlvbjogZnVuY3Rpb24oaXRlcmF0aW9uLCBuYW1l
KQotICAgIHsKLSAgICAgICAgcmV0dXJuICJyZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29u
IjsKLSAgICB9LAotCi0gICAgamF2YVNjcmlwdENvcmVUZXN0U3RkaW9VcmxGb3JJdGVyYXRpb246
IGZ1bmN0aW9uKGl0ZXJhdGlvbiwgbmFtZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLmJ1
aWxkUGFnZVVSTEZvckl0ZXJhdGlvbihpdGVyYXRpb24pICsgIi9zdGVwcy8iICsgbmFtZSArICIv
bG9ncy9zdGRpbyI7Ci0gICAgfSwKLX0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3Rz
L3Jlc291cmNlcy9Nb2NrQnVpbGRib3RRdWV1ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9h
cmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWUuanMJKHJldmlzaW9u
IDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNlcy9Nb2NrQnVp
bGRib3RRdWV1ZS5qcwkobm9uZXhpc3RlbnQpCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotTW9ja0J1aWxkYm90UXVldWUgPSBmdW5jdGlvbigpCi17Ci0gICAgaW5mbyA9IHsKLSAgICAg
ICAgYnJhbmNoZXM6ICIiLAotICAgICAgICBwbGF0Zm9ybTogIiIsCi0gICAgICAgIGRlYnVnOiAi
IiwKLSAgICAgICAgYnVpbGRlcjogIiIsCi0gICAgICAgIHRlc3RlcjogIiIsCi0gICAgICAgIHBl
cmZvcm1hbmNlOiAiIiwKLSAgICAgICAgc3RhdGljQW5hbHl6ZXI6ICIiLAotICAgICAgICBsZWFr
czogIiIsCi0gICAgICAgIGFyY2hpdGVjdHVyZTogIiIsCi0gICAgICAgIHRlc3RDYXRlZ29yeTog
IiIsCi0gICAgICAgIGhlYWRpbmc6ICIiLAotICAgICAgICBjcmFzaGVzT25seTogIiIKLSAgICB9
OwotICAgIEJ1aWxkYm90UXVldWUuY2FsbCh0aGlzLCBuZXcgTW9ja0J1aWxkYm90KCksICJpZCIs
IGluZm8pOwotfTsKLQotQmFzZU9iamVjdC5hZGRDb25zdHJ1Y3RvckZ1bmN0aW9ucyhNb2NrQnVp
bGRib3RRdWV1ZSk7Ci0KLU1vY2tCdWlsZGJvdFF1ZXVlLnByb3RvdHlwZSA9IHsKLSAgICBjb25z
dHJ1Y3RvcjogTW9ja0J1aWxkYm90UXVldWUsCi0gICAgX19wcm90b19fOiBCdWlsZGJvdFF1ZXVl
LnByb3RvdHlwZQotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2Vz
L01vY2tCdWlsZGJvdFF1ZXVlVmlldy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2Ny
aXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90UXVldWVWaWV3LmpzCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxk
Ym90UXVldWVWaWV3LmpzCShub25leGlzdGVudCkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi1Nb2NrQnVpbGRib3RRdWV1ZVZpZXcgPSBmdW5jdGlvbihxdWV1ZXMpCi17Ci0gICAgdGhp
cy5lbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdGhpcy5lbGVt
ZW50LmNsYXNzTGlzdC5hZGQoInF1ZXVlLXZpZXciKTsKLSAgICB0aGlzLmVsZW1lbnQuX19xdWV1
ZVZpZXcgPSB0aGlzOwotCi0gICAgdGhpcy5xdWV1ZXMgPSBxdWV1ZXMgfHwgW107Ci0KLSAgICBC
YXNlT2JqZWN0LmNhbGwodGhpcyk7Ci19OwotCi1CYXNlT2JqZWN0LmFkZENvbnN0cnVjdG9yRnVu
Y3Rpb25zKE1vY2tCdWlsZGJvdFF1ZXVlVmlldyk7Ci0KLU1vY2tCdWlsZGJvdFF1ZXVlVmlldy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFF1ZXVlVmlldywKLSAg
ICBfX3Byb3RvX186IEJ1aWxkYm90UXVldWVWaWV3LnByb3RvdHlwZSwKLQotICAgIF9sYXRlc3RQ
cm9kdWN0aXZlSXRlcmF0aW9uOiBmdW5jdGlvbihxdWV1ZSkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICByZXZpc2lvbjogewotICAgICAgICAgICAgICAgICJvcGVuU291cmNl
IjogIjMzMDIwIgotICAgICAgICAgICAgfQotICAgICAgICB9OwotICAgIH0KLX07CkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3Vs
dHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2Vz
L01vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLmpzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvTW9ja0J1aWxkYm90VGVzdFJlc3VsdHMuanMJ
KG5vbmV4aXN0ZW50KQpAQCAtMSwzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotTW9ja0J1aWxkYm90
VGVzdFJlc3VsdHMgPSBmdW5jdGlvbigpIHt9OwotCi1Nb2NrQnVpbGRib3RUZXN0UmVzdWx0cy5w
cm90b3R5cGUgPSB7Ci0gICAgY29uc3RydWN0b3I6IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzLAot
Ci0gICAgYWRkSmF2YVNjcmlwdENvcmVUZXN0RmFpbHVyZXM6IGZ1bmN0aW9uKGRhdGEpCi0gICAg
ewotICAgICAgICAgdGhpcy5yZWdyZXNzaW9ucyA9IGRhdGEuc3RyZXNzVGVzdEZhaWx1cmVzOwot
ICAgIH0sCi19OwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL01v
Y2tUcmFjLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291
cmNlcy9Nb2NrVHJhYy5qcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1Njcmlw
dHMvdGVzdHMvcmVzb3VyY2VzL01vY2tUcmFjLmpzCShub25leGlzdGVudCkKQEAgLTEsMTIwICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotTW9ja1RyYWMgPSBmdW5jdGlvbihwcm9qZWN0SWRlbnRpZmll
cikKLXsKLSAgICBpZiAocHJvamVjdElkZW50aWZpZXIpIHsKLSAgICAgICAgdmFyIG9wdGlvbnMg
PSB7IH07Ci0gICAgICAgIG9wdGlvbnNbVHJhYy5Qcm9qZWN0SWRlbnRpZmllcl0gPSBwcm9qZWN0
SWRlbnRpZmllcjsKLSAgICAgICAgVHJhYy5jYWxsKHRoaXMsICJodHRwczovL3RyYWMud2Via2l0
Lm9yZy8iLCBvcHRpb25zKTsKLSAgICB9IGVsc2UgewotICAgICAgICBUcmFjLmNhbGwodGhpcywg
Imh0dHBzOi8vdHJhYy53ZWJraXQub3JnLyIpOwotICAgIH0KLX07Ci0KLUJhc2VPYmplY3QuYWRk
Q29uc3RydWN0b3JGdW5jdGlvbnMoTW9ja1RyYWMpOwotCi1Nb2NrVHJhYy5wcm90b3R5cGUgPSB7
Ci0gICAgY29uc3RydWN0b3I6IE1vY2tUcmFjLAotICAgIF9fcHJvdG9fXzogVHJhYy5wcm90b3R5
cGUsCi0KLSAgICBnZXQgb2xkZXN0UmVjb3JkZWRSZXZpc2lvbk51bWJlcigpCi0gICAgewotICAg
ICAgICByZXR1cm4gIjMzMDE4IjsKLSAgICB9LAotCi0gICAgZ2V0IGxhdGVzdFJlY29yZGVkUmV2
aXNpb25OdW1iZXIoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICIzMzAyMiI7Ci0gICAgfSwKLQot
ICAgIGxvYWRNb3JlSGlzdG9yaWNhbERhdGE6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgfSwKLX07
Ci0KLU1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRTID0gWwotICAgIHsKLSAgICAgICAgInJl
dmlzaW9uTnVtYmVyIjogIjMzMDE4IiwKLSAgICAgICAgImxpbmsiOiAiaHR0cHM6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzMzMDE4IiwKLSAgICAgICAgInRpdGxlIjogeyBpbm5lckhUTUw6
ICJjb21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAgImF1dGhvciI6ICJqb2huQHdlYmtpdC5vcmci
LAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTExLTE1VDE3OjA1OjQ0LjAwMFoiKSwK
LSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNvbnRhaW5z
QnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInRydW5rIl0KLSAg
ICB9LAotICAgIHsKLSAgICAgICAgInJldmlzaW9uTnVtYmVyIjogIjMzMDE5IiwKLSAgICAgICAg
ImxpbmsiOiAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDE5IiwKLSAgICAg
ICAgInRpdGxlIjogeyBpbm5lckhUTUw6ICJjb21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAgImF1
dGhvciI6ICJwYXVsQHdlYmtpdC5vcmciLAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1
LTExLTE2VDAxOjE4OjIzLjAwMFoiKSwKLSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0
aW9uIiwKLSAgICAgICAgImNvbnRhaW5zQnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAi
YnJhbmNoZXMiOiBbInNvbWVPdGhlckJyYW5jaCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAgICJy
ZXZpc2lvbk51bWJlciI6ICIzMzAyMCIsCi0gICAgICAgICJsaW5rIjogImh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMCIsCi0gICAgICAgICJ0aXRsZSI6IHsgaW5uZXJIVE1M
OiAiY29tbWl0IG1lc3NhZ2UiIH0sCi0gICAgICAgICJhdXRob3IiOiAiZ2VvcmdlQHdlYmtpdC5v
cmciLAotICAgICAgICAiZGF0ZSI6IG5ldyBEYXRlKCIyMDE1LTExLTE2VDAxOjE5OjI3LjAwMFoi
KSwKLSAgICAgICAgImRlc2NyaXB0aW9uIjogImRlc2NyaXB0aW9uIiwKLSAgICAgICAgImNvbnRh
aW5zQnJhbmNoTG9jYXRpb24iOiB0cnVlLAotICAgICAgICAiYnJhbmNoZXMiOiBbInRydW5rIl0K
LSAgICB9LAotICAgIHsKLSAgICAgICAgInJldmlzaW9uTnVtYmVyIjogIjMzMDIxIiwKLSAgICAg
ICAgImxpbmsiOiAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDIxIiwKLSAg
ICAgICAgInRpdGxlIjogeyBpbm5lckhUTUw6ICJjb21taXQgbWVzc2FnZSIgfSwKLSAgICAgICAg
ImF1dGhvciI6ICJyaW5nb0B3ZWJraXQub3JnIiwKLSAgICAgICAgImRhdGUiOiBuZXcgRGF0ZSgi
MjAxNS0xMS0xNlQwMToyMDo1OC4wMDBaIiksCi0gICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXNj
cmlwdGlvbiIsCi0gICAgICAgICJjb250YWluc0JyYW5jaExvY2F0aW9uIjogdHJ1ZSwKLSAgICAg
ICAgImJyYW5jaGVzIjogWyJzb21lT3RoZXJCcmFuY2giXQotICAgIH0sCi0gICAgewotICAgICAg
ICAicmV2aXNpb25OdW1iZXIiOiAiMzMwMjIiLAotICAgICAgICAibGluayI6ICJodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjIiLAotICAgICAgICAidGl0bGUiOiB7IGlubmVy
SFRNTDogImNvbW1pdCBtZXNzYWdlIiB9LAotICAgICAgICAiYXV0aG9yIjogImJvYkB3ZWJraXQu
b3JnIiwKLSAgICAgICAgImRhdGUiOiBuZXcgRGF0ZSgiMjAxNS0xMS0xNlQwMToyMjowMS4wMDBa
IiksCi0gICAgICAgICJkZXNjcmlwdGlvbiI6ICJkZXNjcmlwdGlvbiIsCi0gICAgICAgICJjb250
YWluc0JyYW5jaExvY2F0aW9uIjogdHJ1ZSwKLSAgICAgICAgImJyYW5jaGVzIjogWyJ0cnVuayJd
Ci0gICAgfQotXTsKLQotTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51
bWJlciA9IHsKLSAgICAzMzAxODogMCwKLSAgICAzMzAxOTogMSwKLSAgICAzMzAyMDogMiwKLSAg
ICAzMzAyMTogMywKLSAgICAzMzAyMjogNCwKLSAgICAzMzAyMzogNSwKLSAgICAzMzAyNDogNiwK
LSAgICAzMzAyNTogNwotfTsKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291
cmNlcy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMtcnNzLnhtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNo
Ym9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1maXh0dXJlLWdpdC10cmFjLXJzcy54
bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291
cmNlcy90ZXN0LWZpeHR1cmUtZ2l0LXRyYWMtcnNzLnhtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDc1
ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCI/PgotPCEtLQotQ29weXJpZ2h0IChDKSAyMDE2
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci1hcmUgbWV0OgotMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi1BTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLVRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLVBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLVNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLUNPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi1BUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci1USEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPHJzcyB4bWxuczpkYz0i
aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHZlcnNpb249IjIuMCI+Ci0gIDxjaGFu
bmVsPgotICAgIDx0aXRsZT5XZWJLaXQ8L3RpdGxlPgotICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53
ZWJraXQub3JnL3RpbWVsaW5lPC9saW5rPgotICAgIDxkZXNjcmlwdGlvbj5UcmFjIFRpbWVsaW5l
PC9kZXNjcmlwdGlvbj4KLSAgICA8bGFuZ3VhZ2U+ZW4tVVM8L2xhbmd1YWdlPgotICAgIDxnZW5l
cmF0b3I+VHJhYyAwLjEyLjM8L2dlbmVyYXRvcj4KLSAgICA8aW1hZ2U+Ci0gICAgICA8dGl0bGU+
V2ViS2l0PC90aXRsZT4KLSAgICAgIDx1cmw+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hyb21l
L3NpdGUvZmF2aWNvbi5wbmc8L3VybD4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL3RpbWVsaW5lPC9saW5rPgotICAgIDwvaW1hZ2U+Ci0gICAgPGl0ZW0+Ci0gICAgICA8dGl0
bGU+Q2hhbmdlc2V0IFszMzAyNV06IEl0YSBwcm9yc3VzIGlucXVhbSBBZCBjb3JwdXMgZGljZXJl
cyBwZXJ0aW5lcmUsIHNlZCBlYSwgcXVhZSBkaXhpPC90aXRsZT4KLSAgICAgIDxicmFuY2hlcz5t
YXN0ZXIsIHNvbWVPdGhlckJyYW5jaDwvYnJhbmNoZXM+Ci0KLSAgICAgICAgPGF1dGhvcj5nZW9y
Z2VAd2Via2l0Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2
IDIyOjQ4OjE1IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8zMzAyNTwvbGluaz4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxz
ZSI+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI1LzE0NTM4NDg0OTUzMzI1
Njk8L2d1aWQ+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgot
ICAgICAgPGNhdGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgIDxp
dGVtPgotICAgICAgPHRpdGxlPkNoYW5nZXNldCBbMzMwMjRdOiBBbiBldW0gZGlzY2VyZSBlYSBt
YXZpcywgcXVhZSBjdW0gcGxhbmUgcGVyZGlkaWNlcml0aSBuaWhpbCBzY2lhdDwvdGl0bGU+Ci0g
ICAgICA8YnJhbmNoZXM+bWFzdGVyPC9icmFuY2hlcz4KLQotICAgICAgICA8YXV0aG9yPnBhdWxA
d2Via2l0Lm9yZzwvYXV0aG9yPgotCi0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIy
OjIyOjI1IEdNVDwvcHViRGF0ZT4KLSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8zMzAyNDwvbGluaz4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+
aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI0LzE0NTM4NDY5NDUyNDQwMDc8
L2d1aWQ+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAg
ICAgPGNhdGVnb3J5PmNoYW5nZXNldDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgIDxpdGVt
PgotICAgICAgPHRpdGxlPkNoYW5nZXNldCBbMzMwMjNdOiBMb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LjwvdGl0bGU+Ci0KLSAgICAgICAgPGF1
dGhvcj5qb2huQHdlYmtpdC5vcmc8L2F1dGhvcj4KLQotICAgICAgPHB1YkRhdGU+VHVlLCAyNiBK
YW4gMjAxNiAyMjoyMjoxNCBHTVQ8L3B1YkRhdGU+Ci0gICAgICA8bGluaz5odHRwczovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjM8L2xpbms+Ci0gICAgICA8Z3VpZCBpc1Blcm1hTGlu
az0iZmFsc2UiPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMy8xNDUzODQ2
OTM0MDM0NTUwPC9ndWlkPgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlw
dGlvbj4KLSAgICAgIDxjYXRlZ29yeT5jaGFuZ2VzZXQ8L2NhdGVnb3J5PgotICAgIDwvaXRlbT4K
LSAgIDwvY2hhbm5lbD4KLTwvcnNzPgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMv
cmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFz
aGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54bWwJ
KHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TY3JpcHRzL3Rlc3RzL3Jlc291cmNl
cy90ZXN0LWZpeHR1cmUtdHJhYy1yc3MueG1sCShub25leGlzdGVudCkKQEAgLTEsNzEgKzAsMCBA
QAotPD94bWwgdmVyc2lvbj0iMS4wIj8+Ci08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUs
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBt
ZXQ6Ci0xLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLUFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi1CRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi1DT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCi1JTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLUFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLVRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLS0tPgotCi08cnNzIHhtbG5zOmRjPSJodHRwOi8v
cHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgdmVyc2lvbj0iMi4wIj4KLSAgPGNoYW5uZWw+Ci0g
ICAgPHRpdGxlPldlYktpdDwvdGl0bGU+Ci0gICAgPGxpbms+aHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvdGltZWxpbmU8L2xpbms+Ci0gICAgPGRlc2NyaXB0aW9uPlRyYWMgVGltZWxpbmU8L2Rlc2Ny
aXB0aW9uPgotICAgIDxsYW5ndWFnZT5lbi1VUzwvbGFuZ3VhZ2U+Ci0gICAgPGdlbmVyYXRvcj5U
cmFjIDAuMTIuMzwvZ2VuZXJhdG9yPgotICAgIDxpbWFnZT4KLSAgICAgIDx0aXRsZT5XZWJLaXQ8
L3RpdGxlPgotICAgICAgPHVybD5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaHJvbWUvc2l0ZS9m
YXZpY29uLnBuZzwvdXJsPgotICAgICAgPGxpbms+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvdGlt
ZWxpbmU8L2xpbms+Ci0gICAgPC9pbWFnZT4KLSAgICA8aXRlbT4KLSAgICAgIDx0aXRsZT5DaGFu
Z2VzZXQgWzMzMDI1XTogSXRhIHByb3JzdXMgaW5xdWFtIEFkIGNvcnB1cyBkaWNlcmVzIHBlcnRp
bmVyZSwgc2VkIGVhLCBxdWFlIGRpeGk8L3RpdGxlPgotICAgICAgCi0gICAgICAgIDxhdXRob3I+
Z2VvcmdlQHdlYmtpdC5vcmc8L2F1dGhvcj4KLQotICAgICAgPHB1YkRhdGU+VHVlLCAyNiBKYW4g
MjAxNiAyMjo0ODoxNSBHTVQ8L3B1YkRhdGU+Ci0gICAgICA8bGluaz5odHRwczovL3RyYWMud2Vi
a2l0Lm9yZy9jaGFuZ2VzZXQvMzMwMjU8L2xpbms+Ci0gICAgICA8Z3VpZCBpc1Blcm1hTGluaz0i
ZmFsc2UiPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyNS8xNDUzODQ4NDk1
MzMyNTY5PC9ndWlkPgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaXB0aW9uPC9kZXNjcmlwdGlv
bj4KLSAgICAgIDxjYXRlZ29yeT5jaGFuZ2VzZXQ8L2NhdGVnb3J5PgotICAgIDwvaXRlbT48aXRl
bT4KLSAgICAgIDx0aXRsZT5DaGFuZ2VzZXQgWzMzMDI0XTogQW4gZXVtIGRpc2NlcmUgZWEgbWF2
aXMsIHF1YWUgY3VtIHBsYW5lIHBlcmRpZGljZXJpdGkgbmloaWwgc2NpYXQ8L3RpdGxlPgotICAg
ICAgCi0gICAgICAgIDxhdXRob3I+cGF1bEB3ZWJraXQub3JnPC9hdXRob3I+Ci0KLSAgICAgIDxw
dWJEYXRlPlR1ZSwgMjYgSmFuIDIwMTYgMjI6MjI6MjUgR01UPC9wdWJEYXRlPgotICAgICAgPGxp
bms+aHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMzMDI0PC9saW5rPgotICAgICAg
PGd1aWQgaXNQZXJtYUxpbms9ImZhbHNlIj5odHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMzMwMjQvMTQ1Mzg0Njk0NTI0NDAwNzwvZ3VpZD4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNj
cmlwdGlvbjwvZGVzY3JpcHRpb24+Ci0gICAgICA8Y2F0ZWdvcnk+Y2hhbmdlc2V0PC9jYXRlZ29y
eT4KLSAgICA8L2l0ZW0+PGl0ZW0+Ci0gICAgICA8dGl0bGU+Q2hhbmdlc2V0IFszMzAyM106IExv
cmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQuPC90
aXRsZT4KLSAgICAgIAotICAgICAgICA8YXV0aG9yPmpvaG5Ad2Via2l0Lm9yZzwvYXV0aG9yPgot
Ci0gICAgICA8cHViRGF0ZT5UdWUsIDI2IEphbiAyMDE2IDIyOjIyOjE0IEdNVDwvcHViRGF0ZT4K
LSAgICAgIDxsaW5rPmh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8zMzAyMzwvbGlu
az4KLSAgICAgIDxndWlkIGlzUGVybWFMaW5rPSJmYWxzZSI+aHR0cHM6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzMzMDIzLzE0NTM4NDY5MzQwMzQ1NTA8L2d1aWQ+Ci0gICAgICA8ZGVzY3Jp
cHRpb24+RGVzY3JpcHRpb248L2Rlc2NyaXB0aW9uPgotICAgICAgPGNhdGVnb3J5PmNoYW5nZXNl
dDwvY2F0ZWdvcnk+Ci0gICAgPC9pdGVtPgotICAgPC9jaGFubmVsPgotPC9yc3M+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVz
b3VyY2VzL3Rlc3QtanNjLXJlc3VsdHMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQv
U2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2MtcmVzdWx0cy5qc29uCShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdC1qc2Mt
cmVzdWx0cy5qc29uCShub25leGlzdGVudCkKQEAgLTEgKzAsMCBAQAoteyJzdHJlc3NUZXN0RmFp
bHVyZXMiOlsibG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQiLCAiY29uc2VjdGV0dXIgYWRpcGlz
Y2luZyBlbGl0IiwgInNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBl
dCBkb2xvcmUgbWFnbmEgYWxpcXVhIl0sICJhbGxBcGlUZXN0c1Bhc3NlZCI6IHRydWV9CkluZGV4
OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVzdHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMvcmVzb3VyY2VzL3Rlc3RzLmpzCShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cy9yZXNvdXJjZXMvdGVz
dHMuanMJKG5vbmV4aXN0ZW50KQpAQCAtMSw0ODAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1pZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKLSAgICB3aW5kb3cudGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
Ci0gICAgd2luZG93LnRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOwotfQotCi1RVW5pdC5kb25l
ID0gZnVuY3Rpb24oZGV0YWlscykgewotICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewotICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdW5pdC10ZXN0cmVz
dWx0Iik7Ci0gICAgICAgIGVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlbGVtZW50KTsK
LSAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdW5pdC11c2VyQWdl
bnQiKTsKLSAgICAgICAgZWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVsZW1lbnQpOwot
ICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Ci0gICAgfQotfTsKLQotbW9k
dWxlKCJUcmFjIiwgewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50cmFj
ID0gbmV3IE1vY2tUcmFjKCk7Ci0gICAgICAgIHRoaXMudHJhY1dpdGhJZGVudGlmaWVyID0gbmV3
IE1vY2tUcmFjKCJ3ZWJraXQiKTsKLSAgICB9Ci19KTsKLQotdGVzdCgiX2xvYWRlZCIsIGZ1bmN0
aW9uKCkKLXsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRzID0gTW9ja1RyYWMuRVhBTVBM
RV9UUkFDX0NPTU1JVFM7Ci0gICAgdmFyIGNsaWVudCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwot
ICAgIGNsaWVudC5vcGVuKCJHRVQiLCAicmVzb3VyY2VzL3Rlc3QtZml4dHVyZS10cmFjLXJzcy54
bWwiLCBmYWxzZSk7Ci0gICAgY2xpZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKLSAgICAgICAg
dGhpcy50cmFjLl9sb2FkZWQoY2xpZW50LnJlc3BvbnNlWE1MKTsKLSAgICB9LmJpbmQodGhpcyk7
Ci0gICAgY2xpZW50LnNlbmQoKTsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJhYy5yZWNvcmRl
ZENvbW1pdHM7Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0cy5sZW5ndGgsIDgsICJzaG91bGQgaGF2
ZSA4IGNvbW1pdHMiKTsKLSAgICBmb3IgKHZhciBpID0gMTsgaSA8IGNvbW1pdHMubGVuZ3RoOyBp
KyspIHsKLSAgICAgICAgdmFyIGZpcnN0UmV2aXNpb24gPSBjb21taXRzW2kgLSAxXS5yZXZpc2lv
bk51bWJlcjsKLSAgICAgICAgdmFyIHNlY29uZFJldmlzaW9uID0gY29tbWl0c1tpXS5yZXZpc2lv
bk51bWJlcjsKLSAgICAgICAgc3RyaWN0RXF1YWwoc2Vjb25kUmV2aXNpb24gLSBmaXJzdFJldmlz
aW9uLCAxLCAiY29tbWl0cyBzaG91bGQgYmUgaW4gb3JkZXIgIiArIGZpcnN0UmV2aXNpb24gKyAi
LCAiICsgc2Vjb25kUmV2aXNpb24pOwotICAgIH0KLX0pOwotCi10ZXN0KCJwYXJzZSBnaXRCcmFu
Y2hlcyIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgY2xpZW50ID0gbmV3IFhNTEh0dHBSZXF1ZXN0
KCk7Ci0gICAgY2xpZW50Lm9wZW4oIkdFVCIsICJyZXNvdXJjZXMvdGVzdC1maXh0dXJlLWdpdC10
cmFjLXJzcy54bWwiLCBmYWxzZSk7Ci0gICAgY2xpZW50Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsK
LSAgICAgICAgdGhpcy50cmFjLl9sb2FkZWQoY2xpZW50LnJlc3BvbnNlWE1MKTsKLSAgICB9LmJp
bmQodGhpcyk7Ci0gICAgY2xpZW50LnNlbmQoKTsKLSAgICB2YXIgY29tbWl0cyA9IHRoaXMudHJh
Yy5yZWNvcmRlZENvbW1pdHM7Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0cy5sZW5ndGgsIDMsICJz
aG91bGQgaGF2ZSAzIGNvbW1pdHMiKTsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzWzBdLmJyYW5j
aGVzLmxlbmd0aCwgMCwgInNob3VsZCBoYXZlIG5vIGJyYW5jaGVzIik7Ci0gICAgc3RyaWN0RXF1
YWwoY29tbWl0c1sxXS5icmFuY2hlcy5sZW5ndGgsIDEsICJzaG91bGQgaGF2ZSBvbmUgYnJhbmNo
Iik7Ci0gICAgc3RyaWN0RXF1YWwoY29tbWl0c1sxXS5icmFuY2hlcy5pbmNsdWRlcygibWFzdGVy
IiksIHRydWUsICJzaG91bGQgY29udGFpbiBicmFuY2ggbWFzdGVyIik7Ci0gICAgc3RyaWN0RXF1
YWwoY29tbWl0c1syXS5icmFuY2hlcy5sZW5ndGgsIDIsICJzaG91bGQgaGF2ZSB0d28gYnJhbmNo
ZXMiKTsKLSAgICBzdHJpY3RFcXVhbChjb21taXRzWzJdLmJyYW5jaGVzLmluY2x1ZGVzKCJtYXN0
ZXIiKSwgdHJ1ZSwgInNob3VsZCBjb250YWluIGJyYW5jaCBtYXN0ZXIiKTsKLSAgICBzdHJpY3RF
cXVhbChjb21taXRzWzJdLmJyYW5jaGVzLmluY2x1ZGVzKCJzb21lT3RoZXJCcmFuY2giKSwgdHJ1
ZSwgInNob3VsZCBjb250YWluIGJyYW5jaCBzb21lT3RoZXJCcmFuY2giKTsKLX0pOwotCi10ZXN0
KCJfcGFyc2VSZXZpc2lvbkZyb21VUkwiLCBmdW5jdGlvbigpCi17Ci0gICAgc3RyaWN0RXF1YWwo
dGhpcy50cmFjLl9wYXJzZVJldmlzaW9uRnJvbVVSTCgiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcv
Y2hhbmdlc2V0LzE5MDQ5NyIpLCAiMTkwNDk3IiwgIlN1YnZlcnNpb24iKTsKLSAgICBzdHJpY3RF
cXVhbCh0aGlzLnRyYWMuX3BhcnNlUmV2aXNpb25Gcm9tVVJMKCJodHRwOi8vdHJhYy5mb29iYXIu
Y29tL3JlcG9zaXRvcnkvY2hhbmdlc2V0Lzc1Mzg4L3Byb2plY3QiKSwgIjc1Mzg4IiwgIlN1YnZl
cnNpb24gd2l0aCBzdWZmaXgiKTsKLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMuX3BhcnNlUmV2
aXNpb25Gcm9tVVJMKCJodHRwczovL2dpdC5mb29iYXIuY29tL3RyYWMvV2hhdGV2ZXIuZ2l0L2No
YW5nZXNldC8wZTQ5OGRiNWQ4ZTViNWEzNDI2MzEiKSwgIjBlNDk4ZGI1ZDhlNWI1YTM0MjYzMSIs
ICJHaXQiKTsKLX0pOwotCi10ZXN0KCJuZXh0UmV2aXNpb24iLCBmdW5jdGlvbigpCi17Ci0gICAg
dGhpcy50cmFjLnJlY29yZGVkQ29tbWl0cyA9IE1vY2tUcmFjLkVYQU1QTEVfVFJBQ19DT01NSVRT
OwotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNCeVJldmlzaW9uTnVtYmVyID0g
TW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlcjsKLSAgICBzdHJp
Y3RFcXVhbCh0aGlzLnRyYWMubmV4dFJldmlzaW9uKCJ0cnVuayIsICIzMzAyMCIpLCAiMzMwMjIi
LCAibmV4dFJldmlzaW9uIHNhbWUgYnJhbmNoIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFj
Lm5leHRSZXZpc2lvbigidHJ1bmsiLCAiMzMwMTkiKSwgIjMzMDIwIiwgIm5leHRSZXZpc2lvbiBk
aWZmZXJlbnQgYnJhbmNoIik7Ci19KTsKLQotdGVzdCgiaW5kZXhPZlJldmlzaW9uIiwgZnVuY3Rp
b24oKQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExF
X1RSQUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZp
c2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1i
ZXI7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFjLmluZGV4T2ZSZXZpc2lvbigiMzMwMjAiKSwg
MiwgImluZGV4T2ZSZXZpc2lvbiIpOwotfSk7Ci0KLXRlc3QoImNvbW1pdHNPbkJyYW5jaExhdGVy
VGhhblJldmlzaW9uIiwgZnVuY3Rpb24oKQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1p
dHMgPSBNb2NrVHJhYy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3Jk
ZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0
SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7Ci0gICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRyYWMuY29t
bWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2aXNpb24oInRydW5rIiwgIjMzMDIwIik7Ci0gICAgZXF1
YWwoY29tbWl0cy5sZW5ndGgsIDEsICJncmVhdGVyIHRoYW4gMzMwMjAiKTsKLX0pOwotCi10ZXN0
KCJjb21taXRzT25CcmFuY2hMYXRlclRoYW5SZXZpc2lvbiBubyBjb21taXRzIiwgZnVuY3Rpb24o
KQotewotICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RS
QUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lv
bk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVkQ29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7
Ci0gICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRyYWMuY29tbWl0c09uQnJhbmNoTGF0ZXJUaGFuUmV2
aXNpb24oInNvbWVPdGhlckJyYW5jaCIsICIzMzAyMSIpOwotICAgIGVxdWFsKGNvbW1pdHMubGVu
Z3RoLCAwLCAiZ3JlYXRlciB0aGFuIDMzMDIxIik7Ci19KTsKLQotdGVzdCgiY29tbWl0c09uQnJh
bmNoSW5SZXZpc2lvblJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHRoaXMudHJhYy5yZWNvcmRl
ZENvbW1pdHMgPSBNb2NrVHJhYy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICB0aGlzLnRyYWMu
cmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lvbk51bWJlciA9IE1vY2tUcmFjLnJlY29yZGVk
Q29tbWl0SW5kaWNlc0J5UmV2aXNpb25OdW1iZXI7Ci0gICAgdmFyIGNvbW1pdHMgPSB0aGlzLnRy
YWMuY29tbWl0c09uQnJhbmNoSW5SZXZpc2lvblJhbmdlKCJ0cnVuayIsICIzMzAyMCIsICIzMzAy
MiIpOwotICAgIGVxdWFsKGNvbW1pdHMubGVuZ3RoLCAyLCAiaW4gcmFuZ2UgMzMwMjAsIDMzMDIy
Iik7Ci19KTsKLQotdGVzdCgicmV2aXNpb25VUkwiLCBmdW5jdGlvbigpCi17Ci0gICAgc3RyaWN0
RXF1YWwodGhpcy50cmFjLnJldmlzaW9uVVJMKCIzMzAyMCIpLCAiaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvY2hhbmdlc2V0LzMzMDIwIiwgImNoYW5nZXNldCBVUkwgbWF0Y2hlcyBmb3IgMzMwMjAi
KTsKLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWMucmV2aXNpb25VUkwoIjBlNDk4ZGI1ZDhlNWI1
YTM0MjYzMSIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzBlNDk4ZGI1ZDhl
NWI1YTM0MjYzMSIsICJjaGFuZ2VzZXQgVVJMIG1hdGNoZXMgZm9yIDBlNDk4ZGI1ZDhlNWI1YTM0
MjYzMSIpOwotfSk7Ci0KLXRlc3QoInJldmlzaW9uVVJMIHdpdGggVHJhYyBJZGVudGlmaWVyIiwg
ZnVuY3Rpb24oKQotewotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhY1dpdGhJZGVudGlmaWVyLnJl
dmlzaW9uVVJMKCIzMzAyMCIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzMz
MDIwL3dlYmtpdCIsICJjaGFuZ2VzZXQgVVJMIG1hdGNoZXMgZm9yIDMzMDIwIik7Ci0gICAgc3Ry
aWN0RXF1YWwodGhpcy50cmFjV2l0aElkZW50aWZpZXIucmV2aXNpb25VUkwoIjBlNDk4ZGI1ZDhl
NWI1YTM0MjYzMSIpLCAiaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzBlNDk4ZGI1
ZDhlNWI1YTM0MjYzMS93ZWJraXQiLCAiY2hhbmdlc2V0IFVSTCBtYXRjaGVzIGZvciAwZTQ5OGRi
NWQ4ZTViNWEzNDI2MzEiKTsKLX0pOwotCi10ZXN0KCJfeG1sVGltZWxpbmVVUkwiLCBmdW5jdGlv
bigpCi17Ci0gICAgdmFyIGJlZm9yZSA9IG5ldyBEYXRlKCIxLzEvMjAxNyIpOwotICAgIHZhciBh
ZnRlciA9IG5ldyBEYXRlKCIxLzIvMjAxNyIpOwotCi0gICAgc3RyaWN0RXF1YWwodGhpcy50cmFj
Ll94bWxUaW1lbGluZVVSTChiZWZvcmUsIGJlZm9yZSksICJodHRwczovL3RyYWMud2Via2l0Lm9y
Zy90aW1lbGluZT9jaGFuZ2VzZXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9tPTIwMTctMDEtMDEm
ZGF5c2JhY2s9MCIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhYy5feG1sVGltZWxpbmVVUkwo
YmVmb3JlLCBhZnRlciksICJodHRwczovL3RyYWMud2Via2l0Lm9yZy90aW1lbGluZT9jaGFuZ2Vz
ZXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZmcm9tPTIwMTctMDEtMDImZGF5c2JhY2s9MSIpOwotfSk7
Ci0KLXRlc3QoIl94bWxUaW1lbGluZVVSTCB3aXRoIFRyYWMgSWRlbnRpZmllciIsIGZ1bmN0aW9u
KCkKLXsKLSAgICB2YXIgYmVmb3JlID0gbmV3IERhdGUoIjEvMS8yMDE3Iik7Ci0gICAgdmFyIGFm
dGVyID0gbmV3IERhdGUoIjEvMi8yMDE3Iik7Ci0KLSAgICBzdHJpY3RFcXVhbCh0aGlzLnRyYWNX
aXRoSWRlbnRpZmllci5feG1sVGltZWxpbmVVUkwoYmVmb3JlLCBiZWZvcmUpLCAiaHR0cHM6Ly90
cmFjLndlYmtpdC5vcmcvdGltZWxpbmU/cmVwby13ZWJraXQ9b24mZm9ybWF0PXJzcyZtYXg9MCZm
cm9tPTIwMTctMDEtMDEmZGF5c2JhY2s9MCIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMudHJhY1dp
dGhJZGVudGlmaWVyLl94bWxUaW1lbGluZVVSTChiZWZvcmUsIGFmdGVyKSwgImh0dHBzOi8vdHJh
Yy53ZWJraXQub3JnL3RpbWVsaW5lP3JlcG8td2Via2l0PW9uJmZvcm1hdD1yc3MmbWF4PTAmZnJv
bT0yMDE3LTAxLTAyJmRheXNiYWNrPTEiKTsKLX0pOwotCi1tb2R1bGUoIkJ1aWxkQm90UXVldWVW
aWV3IiwgewotICAgIHNldHVwOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy50cmFjID0gbmV3
IE1vY2tUcmFjKCk7Ci0gICAgICAgIHRoaXMudHJhYy5yZWNvcmRlZENvbW1pdHMgPSBNb2NrVHJh
Yy5FWEFNUExFX1RSQUNfQ09NTUlUUzsKLSAgICAgICAgdGhpcy50cmFjLnJlY29yZGVkQ29tbWl0
SW5kaWNlc0J5UmV2aXNpb25OdW1iZXIgPSBNb2NrVHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNC
eVJldmlzaW9uTnVtYmVyOwotICAgICAgICB0aGlzLnF1ZXVlID0gbmV3IE1vY2tCdWlsZGJvdFF1
ZXVlKCk7Ci0gICAgICAgIHRoaXMudHJ1bmtCcmFuY2ggPSB7Ci0gICAgICAgICAgICBuYW1lOiAi
dHJ1bmsiLAotICAgICAgICAgICAgcmVwb3NpdG9yeTogewotICAgICAgICAgICAgICAgIG5hbWU6
ICJvcGVuU291cmNlIiwKLSAgICAgICAgICAgICAgICB0cmFjOiB0aGlzLnRyYWMsCi0gICAgICAg
ICAgICAgICAgaXNTVk46IHRydWUsCi0gICAgICAgICAgICB9Ci0gICAgICAgIH07Ci0gICAgICAg
IHRoaXMucXVldWUuYnJhbmNoZXMgPSBbdGhpcy50cnVua0JyYW5jaF07Ci0gICAgICAgIHRoaXMu
dmlldyA9IG5ldyBNb2NrQnVpbGRib3RRdWV1ZVZpZXcoW3RoaXMucXVldWVdKTsKLSAgICAgICAg
dGhpcy52aWV3Ll9sYXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uID0gZnVuY3Rpb24ocXVldWUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHZhciBpdGVyYXRpb24gPSB7Ci0gICAgICAgICAgICAgICAg
cmV2aXNpb246IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMjEiIH0sCi0gICAgICAgICAgICB9OwotICAg
ICAgICAgICAgcmV0dXJuIGl0ZXJhdGlvbjsKLSAgICAgICAgfQotICAgIH0KLX0pOwotCi12YXIg
c2V0dGluZ3MgPSBuZXcgU2V0dGluZ3M7Ci10ZXN0KCJfYXBwZW5kUGVuZGluZ1JldmlzaW9uQ291
bnQiLCBmdW5jdGlvbigpCi17Ci0gICAgdGhpcy52aWV3Ll9hcHBlbmRQZW5kaW5nUmV2aXNpb25D
b3VudCh0aGlzLnF1ZXVlLCB0aGlzLnZpZXcuX2xhdGVzdFByb2R1Y3RpdmVJdGVyYXRpb24pOwot
ICAgIHZhciByZXZpc2lvbnNCZWhpbmQgPSB0aGlzLnZpZXcuZWxlbWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJtZXNzYWdlIilbMF0uaW5uZXJIVE1MLm1hdGNoKC8uKihcZCspIHJldmlzaW9u
KHxzKSBiZWhpbmQvKVsxXTsKLSAgICBzdHJpY3RFcXVhbChyZXZpc2lvbnNCZWhpbmQsICIxIiwg
ImFzc2VydCByZXZpc2lvbnMgYmVoaW5kIik7Ci19KTsKLQotdGVzdCgiX3BvcG92ZXJMaW5lc0Zv
ckNvbW1pdFJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBsaW5lcyA9IHRoaXMudmlldy5f
cG9wb3ZlckxpbmVzRm9yQ29tbWl0UmFuZ2UodGhpcy50cmFjLCB0aGlzLnRydW5rQnJhbmNoLCAi
MzMwMTgiLCAiMzMwMjAiKTsKLSAgICBzdHJpY3RFcXVhbChsaW5lcy5sZW5ndGgsIDIsICJoYXMg
MiBsaW5lcyIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvclBlbmRpbmdDb21taXRz
IiwgZnVuY3Rpb24oKQotewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92ZXIoKTsKLSAg
ICB0aGlzLnZpZXcuX3ByZXNlbnRQb3BvdmVyRm9yUGVuZGluZ0NvbW1pdHModGhpcy52aWV3Ll9s
YXRlc3RQcm9kdWN0aXZlSXRlcmF0aW9uLCBlbGVtZW50LCBwb3BvdmVyLCB0aGlzLnF1ZXVlKTsK
LSAgICB2YXIgbm9kZUxpc3QgPSBwb3BvdmVyLl9lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoInBlbmRpbmctY29tbWl0Iik7Ci0gICAgc3RyaWN0RXF1YWwobm9kZUxpc3QubGVuZ3RoLCAx
LCAiaGFzIDEgcGVuZGluZyBjb21taXQiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJG
b3JQZW5kaW5nQ29tbWl0cyBubyBwZW5kaW5nIGNvbW1pdHMiLCBmdW5jdGlvbigpCi17Ci0gICAg
dGhpcy5zb21lT3RoZXJCcmFuY2ggPSB7Ci0gICAgICAgIG5hbWU6ICJzb21lT3RoZXJCcmFuY2gi
LAotICAgICAgICByZXBvc2l0b3J5OiB7Ci0gICAgICAgICAgICBuYW1lOiAib3BlblNvdXJjZSIs
Ci0gICAgICAgICAgICB0cmFjOiB0aGlzLnRyYWMsCi0gICAgICAgICAgICBpc1NWTjogdHJ1ZSwK
LSAgICAgICAgfQotICAgIH07Ci0gICAgdGhpcy5xdWV1ZS5icmFuY2hlcyA9IFt0aGlzLnNvbWVP
dGhlckJyYW5jaF07Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJk
aXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHRo
aXMudmlldy5fcHJlc2VudFBvcG92ZXJGb3JQZW5kaW5nQ29tbWl0cyh0aGlzLnZpZXcuX2xhdGVz
dFByb2R1Y3RpdmVJdGVyYXRpb24sIGVsZW1lbnQsIHBvcG92ZXIsIHRoaXMucXVldWUpOwotICAg
IHZhciBub2RlTGlzdCA9IHBvcG92ZXIuX2VsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
cGVuZGluZy1jb21taXQiKTsKLSAgICBzdHJpY3RFcXVhbChub2RlTGlzdC5sZW5ndGgsIDAsICJo
YXMgMCBwZW5kaW5nIGNvbW1pdHMiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JS
ZXZpc2lvblJhbmdlIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBv
cG92ZXIoKTsKLSAgICB2YXIgY29udGV4dCA9IHsKLSAgICAgICAgdHJhYzogdGhpcy50cmFjLAot
ICAgICAgICBicmFuY2g6IHRoaXMudHJ1bmtCcmFuY2gsCi0gICAgICAgIGZpcnN0UmV2aXNpb246
ICIzMzAxOCIsCi0gICAgICAgIGxhc3RSZXZpc2lvbjogIjMzMDIwIgotICAgIH07Ci0gICAgdGhp
cy52aWV3Ll9wcmVzZW50UG9wb3ZlckZvclJldmlzaW9uUmFuZ2UoZWxlbWVudCwgcG9wb3Zlciwg
Y29udGV4dCk7Ci0gICAgdmFyIG5vZGVMaXN0ID0gcG9wb3Zlci5fZWxlbWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJwZW5kaW5nLWNvbW1pdCIpOwotICAgIHN0cmljdEVxdWFsKG5vZGVMaXN0
Lmxlbmd0aCwgMiwgImhhcyAyIGNvbW1pdHMiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92
ZXJGb3JSZXZpc2lvblJhbmdlIG5vIGNvbW1pdHMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICB2YXIgcG9wb3ZlciA9
IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHZhciBjb250ZXh0ID0gewotICAgICAgICB0
cmFjOiB0aGlzLnRyYWMsCi0gICAgICAgIGJyYW5jaDogdGhpcy50cnVua0JyYW5jaCwKLSAgICAg
ICAgZmlyc3RSZXZpc2lvbjogIjMzMDIwIiwKLSAgICAgICAgbGFzdFJldmlzaW9uOiAiMzMwMTgi
Ci0gICAgfTsKLSAgICB0aGlzLnZpZXcuX3ByZXNlbnRQb3BvdmVyRm9yUmV2aXNpb25SYW5nZShl
bGVtZW50LCBwb3BvdmVyLCBjb250ZXh0KTsKLSAgICB2YXIgbm9kZUxpc3QgPSBwb3BvdmVyLl9l
bGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInBlbmRpbmctY29tbWl0Iik7Ci0gICAgc3Ry
aWN0RXF1YWwobm9kZUxpc3QubGVuZ3RoLCAwLCAiaGFzIDAgY29tbWl0cyIpOwotfSk7Ci0KLXRl
c3QoIl9yZXZpc2lvbkNvbnRlbnRXaXRoUG9wb3ZlckZvckl0ZXJhdGlvbiIsIGZ1bmN0aW9uKCkK
LXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1
aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24u
cmV2aXNpb24gPSB7ICJvcGVuU291cmNlIjogIjMzMDE4IiB9OwotICAgIHZhciBwcmV2aW91c0l0
ZXJhdGlvbiA9IG51bGw7Ci0gICAgdmFyIGNvbnRlbnQgPSB0aGlzLnZpZXcuX3JldmlzaW9uQ29u
dGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJldmlvdXNJdGVyYXRpb24s
IHRoaXMudHJ1bmtCcmFuY2gpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuaW5uZXJIVE1MLCAi
cjMzMDE4IiwgInNob3VsZCBoYXZlIGNvcnJlY3QgcmV2aXNpb24gbnVtYmVyLiIpOwotICAgIHN0
cmljdEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZXZpc2lvbi1udW1iZXIiKSwg
dHJ1ZSwgInNob3VsZCBoYXZlIGNsYXNzICdyZXZpc2lvbi1udW1iZXInLiIpOwotICAgIHN0cmlj
dEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwb3BvdmVyLXRyYWNraW5nIiksIGZh
bHNlLCAic2hvdWxkIG5vdCBoYXZlIGNsYXNzICdwb3BvdmVyLXRyYWNraW5nJy4iKTsKLX0pOwot
Ci10ZXN0KCJfcmV2aXNpb25Db250ZW50V2l0aFBvcG92ZXJGb3JJdGVyYXRpb24gaGFzIHByZXZp
b3VzSXRlcmF0aW9uIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwot
ICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMiwg
ZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbi5yZXZpc2lvbiA9IHsgIm9wZW5Tb3VyY2UiOiAiMzMw
MjIiIH07Ci0gICAgdmFyIHByZXZpb3VzSXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9u
KHRoaXMucXVldWUsIDEsIGZpbmlzaGVkKTsKLSAgICBwcmV2aW91c0l0ZXJhdGlvbi5yZXZpc2lv
biA9IHsgIm9wZW5Tb3VyY2UiOiAiMzMwMTgiIH07Ci0gICAgdmFyIGNvbnRlbnQgPSB0aGlzLnZp
ZXcuX3JldmlzaW9uQ29udGVudFdpdGhQb3BvdmVyRm9ySXRlcmF0aW9uKGl0ZXJhdGlvbiwgcHJl
dmlvdXNJdGVyYXRpb24sIHRoaXMudHJ1bmtCcmFuY2gpOwotICAgIHN0cmljdEVxdWFsKGNvbnRl
bnQuaW5uZXJIVE1MLCAicjMzMDIyIiwgInNob3VsZCBoYXZlIGNvcnJlY3QgcmV2aXNpb24gbnVt
YmVyLiIpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZXZp
c2lvbi1udW1iZXIiKSwgdHJ1ZSwgInNob3VsZCBoYXZlIGNsYXNzICdyZXZpc2lvbi1udW1iZXIn
LiIpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCJwb3BvdmVy
LXRyYWNraW5nIiksIHRydWUsICJzaG91bGQgaGF2ZSBjbGFzcyAncG9wb3Zlci10cmFja2luZycu
Iik7Ci0gICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAg
ICB2YXIgcG9wb3ZlciA9IG5ldyBEYXNoYm9hcmQuUG9wb3ZlcigpOwotICAgIHRoaXMudmlldy5f
cHJlc2VudFBvcG92ZXJGb3JSZXZpc2lvblJhbmdlKGVsZW1lbnQsIHBvcG92ZXIsIGNvbnRlbnQu
cG9wb3ZlclRyYWNrZXIuX2NvbnRleHQpOwotICAgIHZhciBub2RlTGlzdCA9IHBvcG92ZXIuX2Vs
ZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgicGVuZGluZy1jb21taXQiKTsKLSAgICBzdHJp
Y3RFcXVhbChub2RlTGlzdC5sZW5ndGgsIDIsICJoYXMgMiBjb21taXRzIik7Ci19KTsKLQotdGVz
dCgiX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSBTdWJ2ZXJzaW9uIiwgZnVuY3Rpb24oKQotewot
ICAgIHZhciByZXBvc2l0b3J5ID0gdGhpcy50cnVua0JyYW5jaC5yZXBvc2l0b3J5OwotICAgIHJl
cG9zaXRvcnkuaXNTVk4gPSB0cnVlOwotICAgIHJlcG9zaXRvcnkuaXNHaXQgPSBmYWxzZTsKLSAg
ICBzdHJpY3RFcXVhbCh0aGlzLnZpZXcuX2Zvcm1hdFJldmlzaW9uRm9yRGlzcGxheSgiMzMwMTgi
LCByZXBvc2l0b3J5KSwgInIzMzAxOCIsICJTaG91bGQgYmUgcjMzMDE4IikKLX0pOwotCi10ZXN0
KCJfZm9ybWF0UmV2aXNpb25Gb3JEaXNwbGF5IEdpdCIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIg
cmVwb3NpdG9yeSA9IHRoaXMudHJ1bmtCcmFuY2gucmVwb3NpdG9yeTsKLSAgICByZXBvc2l0b3J5
LmlzU1ZOID0gZmFsc2U7Ci0gICAgcmVwb3NpdG9yeS5pc0dpdCA9IHRydWU7Ci0gICAgc3RyaWN0
RXF1YWwodGhpcy52aWV3Ll9mb3JtYXRSZXZpc2lvbkZvckRpc3BsYXkoIjBlNDk4ZGI1ZDhlNWI1
YTM0MjYzMSIsIHJlcG9zaXRvcnkpLCAiMGU0OThkYiIsICJTaG91bGQgYmUgMGU0OThkYiIpOwot
fSk7Ci0KLXRlc3QoIl9wb3BvdmVyQ29udGVudEZvckphdmFTY3JpcHRDb3JlVGVzdFJlZ3Jlc3Np
b25zIGxvYWQgZmFpbHVyZSBVSSB0ZXN0IiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hl
ZCA9IGZhbHNlOwotICAgIHZhciBpdGVyYXRpb24gPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhp
cy5xdWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RS
ZXN1bHRzID0gbmV3IE1vY2tCdWlsZGJvdFRlc3RSZXN1bHRzKCk7Ci0KLSAgICB2YXIgdmlldyA9
IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOwotICAgIHZhciBjb250ZW50ID0gdmlldy5fcG9wb3Zl
ckNvbnRlbnRGb3JKYXZhU2NyaXB0Q29yZVRlc3RSZWdyZXNzaW9ucyhpdGVyYXRpb24pOwotCi0g
ICAgdmFyIG51bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50ID0gMjsKLSAgICBzdHJpY3RF
cXVhbChjb250ZW50LmNoaWxkTm9kZXMubGVuZ3RoLCAxICsgbnVtQ2hpbGRyZW5JbkVtcHR5UG9w
b3ZlckNvbnRlbnQpOwotICAgIHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlc1tudW1DaGls
ZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudF0uY2xhc3NOYW1lLCAibG9hZGluZy1mYWlsdXJlIiwg
IlBvcG92ZXIgZm9yIGxvYWRpbmcgZmFpbHVyZSBtdXN0IGhhdmUgdGhlIGFwcHJvcHJpYXRlIGNs
YXNzIik7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251bUNoaWxkcmVuSW5F
bXB0eVBvcG92ZXJDb250ZW50XS50ZXh0Q29udGVudCwgIlRlc3QgcmVzdWx0cyBjb3VsZG5cdTIw
MTl0IGJlIGxvYWRlZCIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGZhaWx1cmUgbXVzdCB1c2UgdGhl
IGNvcnJlY3QgdGV4dCIpOwotfSk7Ci0KLXRlc3QoIl9wcmVzZW50UG9wb3ZlckZvckphdmFTY3Jp
cHRDb3JlVGVzdFJlZ3Jlc3Npb25zIGluY2x1ZGluZyBsb2FkaW5nIiwgZnVuY3Rpb24oKQotewot
ICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwotICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgdmFyIHBvcG92ZXIgPSBuZXcgRGFzaGJvYXJkLlBvcG92
ZXIoKTsKLSAgICB2YXIgaXRlcmF0aW9uID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVl
dWUsIDEsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24uamF2YVNjcmlwdENvcmVUZXN0UmVzdWx0
cyA9IG5ldyBNb2NrQnVpbGRib3RUZXN0UmVzdWx0cygpOwotCi0gICAgdmFyIHZpZXcgPSBuZXcg
QnVpbGRib3RRdWV1ZVZpZXcoKTsKLSAgICB2aWV3Ll9wcmVzZW50UG9wb3ZlckZvckphdmFTY3Jp
cHRDb3JlVGVzdFJlZ3Jlc3Npb25zKCJqc2NvcmUtdGVzdCIsIGVsZW1lbnQsIHBvcG92ZXIsIGl0
ZXJhdGlvbik7Ci0KLSAgICBKU09OLmxvYWQoInJlc291cmNlcy90ZXN0LWpzYy1yZXN1bHRzLmpz
b24iLCBmdW5jdGlvbihkYXRhKQotICAgIHsKLSAgICAgICAgdmFyIHRlc3RSZWdyZXNzaW9ucyA9
IGRhdGEuc3RyZXNzVGVzdEZhaWx1cmVzOwotICAgICAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5
UG9wb3ZlckNvbnRlbnQgPSAyOwotICAgICAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9jb250ZW50
LmNoaWxkTm9kZXMubGVuZ3RoIC0gbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQsCi0g
ICAgICAgICAgICB0ZXN0UmVncmVzc2lvbnMubGVuZ3RoLAotICAgICAgICAgICAgIk51bWJlciBv
ZiBmYWlsdXJlcyBpbiBwb3BvdmVyIG11c3QgYmUgZXF1YWwgdG8gbnVtYmVyIG9mIGZhaWxlZCB0
ZXN0cyIpOwotCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGVzdFJlZ3Jlc3Npb25zLmxl
bmd0aDsgaSsrKQotICAgICAgICB7Ci0gICAgICAgICAgICBzdHJpY3RFcXVhbChwb3BvdmVyLl9j
b250ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudF0uY2hp
bGROb2Rlc1swXS50ZXh0Q29udGVudCwKLSAgICAgICAgICAgICAgICB0ZXN0UmVncmVzc2lvbnNb
aV0sCi0gICAgICAgICAgICAgICAgIk5hbWVzIG9mIGZhaWx1cmVzIG11c3QgbWF0Y2giCi0gICAg
ICAgICAgICApOwotICAgICAgICB9Ci0gICAgfSk7Ci19KTsKLQotdGVzdCgiX2NyZWF0ZUxvYWRp
bmdJbmRpY2F0b3IiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0g
ICAgdmFyIGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBm
aW5pc2hlZCk7Ci0KLSAgICB2YXIgdmlldyA9IG5ldyBCdWlsZGJvdFF1ZXVlVmlldygpOwotICAg
IHZhciBoZWFkaW5nID0gIkZhaXIgaXMgZm91bCwgYW5kIGZvdWwgaXMgZmFpciI7Ci0gICAgdmFy
IGNvbnRlbnQgPSB2aWV3Ll9jcmVhdGVMb2FkaW5nSW5kaWNhdG9yKGl0ZXJhdGlvbiwgaGVhZGlu
Zyk7Ci0KLSAgICB2YXIgbnVtQ2hpbGRyZW5JbkVtcHR5UG9wb3ZlckNvbnRlbnQgPSAyOwotICAg
IHN0cmljdEVxdWFsKGNvbnRlbnQuY2hpbGROb2Rlcy5sZW5ndGgsIDEgKyBudW1DaGlsZHJlbklu
RW1wdHlQb3BvdmVyQ29udGVudCk7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVz
W251bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS5jbGFzc05hbWUsICJsb2FkaW5nLWlu
ZGljYXRvciIsICJQb3BvdmVyIGZvciBsb2FkaW5nIGluZGljYXRvciBtdXN0IGhhdmUgdGhlIGFw
cHJvcHJpYXRlIGNsYXNzIik7Ci0gICAgc3RyaWN0RXF1YWwoY29udGVudC5jaGlsZE5vZGVzW251
bUNoaWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50XS50ZXh0Q29udGVudCwgIkxvYWRpbmdcdTIw
MjYiLCAiUG9wb3ZlciBmb3IgbG9hZGluZyBmYWlsdXJlIG11c3QgdXNlIHRoZSBjb3JyZWN0IHRl
eHQiKTsKLX0pOwotCi10ZXN0KCJfcHJlc2VudFBvcG92ZXJGb3JKYXZhU2NyaXB0Q29yZVRlc3RS
ZWdyZXNzaW9ucyBhbHJlYWR5IGxvYWRlZCIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNo
ZWQgPSBmYWxzZTsKLSAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOwotICAgIHZhciBwb3BvdmVyID0gbmV3IERhc2hib2FyZC5Qb3BvdmVyKCk7Ci0gICAgdmFy
IGl0ZXJhdGlvbiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hl
ZCk7Ci0gICAgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3JlVGVzdFJlc3VsdHMgPSB7InJlZ3Jlc3Np
b25zIjogWyJ1bm8iLCAiZG9zIiwgInRyZXMiXX07Ci0KLSAgICB2YXIgdmlldyA9IG5ldyBCdWls
ZGJvdFF1ZXVlVmlldygpOwotICAgIHZpZXcuX3ByZXNlbnRQb3BvdmVyRm9ySmF2YVNjcmlwdENv
cmVUZXN0UmVncmVzc2lvbnMoImpzY29yZS10ZXN0IiwgZWxlbWVudCwgcG9wb3ZlciwgaXRlcmF0
aW9uKTsKLQotICAgIHZhciBudW1DaGlsZHJlbkluRW1wdHlQb3BvdmVyQ29udGVudCA9IDI7Ci0g
ICAgc3RyaWN0RXF1YWwocG9wb3Zlci5fY29udGVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIG51bUNo
aWxkcmVuSW5FbXB0eVBvcG92ZXJDb250ZW50LAotICAgICAgICBpdGVyYXRpb24uamF2YVNjcmlw
dENvcmVUZXN0UmVzdWx0cy5yZWdyZXNzaW9ucy5sZW5ndGgsCi0gICAgICAgICJOdW1iZXIgb2Yg
ZmFpbHVyZXMgaW4gcG9wb3ZlciBtdXN0IGJlIGVxdWFsIHRvIG51bWJlciBvZiBmYWlsZWQgdGVz
dHMiKTsKLQotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaXRlcmF0aW9uLmphdmFTY3JpcHRDb3Jl
VGVzdFJlc3VsdHMucmVncmVzc2lvbnMubGVuZ3RoOyBpKyspCi0gICAgewotICAgICAgICBzdHJp
Y3RFcXVhbChwb3BvdmVyLl9jb250ZW50LmNoaWxkTm9kZXNbaStudW1DaGlsZHJlbkluRW1wdHlQ
b3BvdmVyQ29udGVudF0uY2hpbGROb2Rlc1swXS50ZXh0Q29udGVudCwKLSAgICAgICAgICAgIGl0
ZXJhdGlvbi5qYXZhU2NyaXB0Q29yZVRlc3RSZXN1bHRzLnJlZ3Jlc3Npb25zW2ldLAotICAgICAg
ICAgICAgIk5hbWVzIG9mIGZhaWx1cmVzIG11c3QgbWF0Y2giCi0gICAgICAgICk7Ci0gICAgfQot
fSk7Ci0KLW1vZHVsZSgiQnVpbGRCb3RRdWV1ZSIsIHsKLSAgICBzZXR1cDogZnVuY3Rpb24oKSB7
Ci0gICAgICAgIERhc2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYyA9IG5ldyBNb2Nr
VHJhYygpOwotICAgICAgICBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuU291cmNlLnRyYWMucmVj
b3JkZWRDb21taXRzID0gTW9ja1RyYWMuRVhBTVBMRV9UUkFDX0NPTU1JVFM7Ci0gICAgICAgIERh
c2hib2FyZC5SZXBvc2l0b3J5Lk9wZW5Tb3VyY2UudHJhYy5yZWNvcmRlZENvbW1pdEluZGljZXNC
eVJldmlzaW9uTnVtYmVyID0gTW9ja1RyYWMucmVjb3JkZWRDb21taXRJbmRpY2VzQnlSZXZpc2lv
bk51bWJlcjsKLSAgICAgICAgdGhpcy5xdWV1ZSA9IG5ldyBNb2NrQnVpbGRib3RRdWV1ZSgpOwot
ICAgICAgICB0aGlzLnF1ZXVlLmJyYW5jaGVzID0gW3sKLSAgICAgICAgICAgIG5hbWU6ICJ0cnVu
ayIsCi0gICAgICAgICAgICByZXBvc2l0b3J5OiBEYXNoYm9hcmQuUmVwb3NpdG9yeS5PcGVuc291
cmNlCi0gICAgICAgIH1dOwotICAgIH0KLX0pOwotCi10ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBi
eSByZXZpc2lvbnMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0g
ICAgdmFyIGl0ZXJhdGlvbjEgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwg
ZmluaXNoZWQpOwotICAgIHZhciBpdGVyYXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRo
aXMucXVldWUsIDIsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3Bl
blNvdXJjZSI6ICIzMzAxOCIgfTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNv
dXJjZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IHRydWU7Ci0gICAgaXRl
cmF0aW9uMi5sb2FkZWQgPSB0cnVlOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlv
bnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGxlc3Mg
dGhhbiIpOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMSwg
aXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGdyZWF0ZXIgdGhhbiIpOwotICAg
IHN0cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9uMiwgaXRl
cmF0aW9uMiksIDAsICJjb21wYXJlSXRlcmF0aW9uczogZXF1YWwiKTsKLX0pOwotCi10ZXN0KCJj
b21wYXJlSXRlcmF0aW9ucyBieSBsb2FkZWQgKG9uZSByZXZpc2lvbiBtaXNzaW5nKSIsIGZ1bmN0
aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIgaXRlcmF0aW9uMSA9
IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hlZCk7Ci0gICAgdmFy
IGl0ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMiwgZmluaXNo
ZWQpOwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7fTsKLSAgICBpdGVyYXRpb24yLnJldmlz
aW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9
IGZhbHNlOwotICAgIGl0ZXJhdGlvbjIubG9hZGVkID0gdHJ1ZTsKLSAgICBvayh0aGlzLnF1ZXVl
LmNvbXBhcmVJdGVyYXRpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJ
dGVyYXRpb25zOiBncmVhdGVyIHRoYW4iKTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVy
YXRpb25zKGl0ZXJhdGlvbjIsIGl0ZXJhdGlvbjEpIDwgMCwgImNvbXBhcmVJdGVyYXRpb25zOiBs
ZXNzIHRoYW4iKTsKLX0pOwotCi10ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBieSBsb2FkZWQgKHNh
bWUgcmV2aXNpb24pIiwgZnVuY3Rpb24oKQotewotICAgIHZhciBmaW5pc2hlZCA9IGZhbHNlOwot
ICAgIHZhciBpdGVyYXRpb24xID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDEs
IGZpbmlzaGVkKTsKLSAgICB2YXIgaXRlcmF0aW9uMiA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0
aGlzLnF1ZXVlLCAyLCBmaW5pc2hlZCk7Ci0gICAgaXRlcmF0aW9uMS5yZXZpc2lvbiA9IHsgIm9w
ZW5Tb3VyY2UiOiAiMzMwMTkiIH07Ci0gICAgaXRlcmF0aW9uMi5yZXZpc2lvbiA9IHsgIm9wZW5T
b3VyY2UiOiAiMzMwMTkiIH07Ci0gICAgaXRlcmF0aW9uMS5sb2FkZWQgPSBmYWxzZTsKLSAgICBp
dGVyYXRpb24yLmxvYWRlZCA9IHRydWU7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0
aW9ucyhpdGVyYXRpb24xLCBpdGVyYXRpb24yKSA+IDAsICJjb21wYXJlSXRlcmF0aW9uczogZ3Jl
YXRlciB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRp
b24yLCBpdGVyYXRpb24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVzcyB0aGFuIik7Ci19
KTsKLQotdGVzdCgiY29tcGFyZUl0ZXJhdGlvbnMgYnkgaWQgKHJldmlzaW9ucyBub3Qgc3BlY2lm
aWVkKSIsIGZ1bmN0aW9uKCkKLXsKLSAgICB2YXIgZmluaXNoZWQgPSBmYWxzZTsKLSAgICB2YXIg
aXRlcmF0aW9uMSA9IG5ldyBCdWlsZGJvdEl0ZXJhdGlvbih0aGlzLnF1ZXVlLCAxLCBmaW5pc2hl
ZCk7Ci0gICAgdmFyIGl0ZXJhdGlvbjIgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1
ZSwgMiwgZmluaXNoZWQpOwotICAgIGl0ZXJhdGlvbjEucmV2aXNpb24gPSB7fTsKLSAgICBpdGVy
YXRpb24yLnJldmlzaW9uID0ge307Ci0gICAgaXRlcmF0aW9uMS5sb2FkZWQgPSBmYWxzZTsKLSAg
ICBpdGVyYXRpb24yLmxvYWRlZCA9IGZhbHNlOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0
ZXJhdGlvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6
IGxlc3MgdGhhbiIpOwotICAgIG9rKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0
aW9uMSwgaXRlcmF0aW9uMikgPiAwLCAiY29tcGFyZUl0ZXJhdGlvbnM6IGdyZWF0ZXIgdGhhbiIp
OwotICAgIHN0cmljdEVxdWFsKHRoaXMucXVldWUuY29tcGFyZUl0ZXJhdGlvbnMoaXRlcmF0aW9u
MiwgaXRlcmF0aW9uMiksIDAsICJjb21wYXJlSXRlcmF0aW9uczogZXF1YWwiKTsKLX0pOwotCi10
ZXN0KCJjb21wYXJlSXRlcmF0aW9ucyBieSBpZCAoc2FtZSByZXZpc2lvbikiLCBmdW5jdGlvbigp
Ci17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgdmFyIGl0ZXJhdGlvbjEgPSBuZXcg
QnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNoZWQpOwotICAgIHZhciBpdGVy
YXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVldWUsIDIsIGZpbmlzaGVkKTsK
LSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAg
ICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6ICIzMzAxOSIgfTsKLSAgICBp
dGVyYXRpb24xLmxvYWRlZCA9IGZhbHNlOwotICAgIGl0ZXJhdGlvbjIubG9hZGVkID0gZmFsc2U7
Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRp
b24xKSA8IDAsICJjb21wYXJlSXRlcmF0aW9uczogbGVzcyB0aGFuIik7Ci0gICAgb2sodGhpcy5x
dWV1ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24xLCBpdGVyYXRpb24yKSA+IDAsICJjb21w
YXJlSXRlcmF0aW9uczogZ3JlYXRlciB0aGFuIik7Ci0gICAgc3RyaWN0RXF1YWwodGhpcy5xdWV1
ZS5jb21wYXJlSXRlcmF0aW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24yKSwgMCwgImNvbXBhcmVJ
dGVyYXRpb25zOiBlcXVhbCIpOwotfSk7Ci0KLXRlc3QoImNvbXBhcmVJdGVyYXRpb25zQnlSZXZp
c2lvbnMiLCBmdW5jdGlvbigpCi17Ci0gICAgdmFyIGZpbmlzaGVkID0gZmFsc2U7Ci0gICAgdmFy
IGl0ZXJhdGlvbjEgPSBuZXcgQnVpbGRib3RJdGVyYXRpb24odGhpcy5xdWV1ZSwgMSwgZmluaXNo
ZWQpOwotICAgIHZhciBpdGVyYXRpb24yID0gbmV3IEJ1aWxkYm90SXRlcmF0aW9uKHRoaXMucXVl
dWUsIDIsIGZpbmlzaGVkKTsKLSAgICBpdGVyYXRpb24xLnJldmlzaW9uID0geyAib3BlblNvdXJj
ZSI6ICIzMzAxOCIgfTsKLSAgICBpdGVyYXRpb24yLnJldmlzaW9uID0geyAib3BlblNvdXJjZSI6
ICIzMzAxOSIgfTsKLSAgICBpdGVyYXRpb24xLmxvYWRlZCA9IHRydWU7Ci0gICAgaXRlcmF0aW9u
Mi5sb2FkZWQgPSBmYWxzZTsKLSAgICBvayh0aGlzLnF1ZXVlLmNvbXBhcmVJdGVyYXRpb25zQnlS
ZXZpc2lvbnMoaXRlcmF0aW9uMiwgaXRlcmF0aW9uMSkgPCAwLCAiY29tcGFyZUl0ZXJhdGlvbnNC
eVJldmlzaW9uczogbGVzcyB0aGFuIik7Ci0gICAgb2sodGhpcy5xdWV1ZS5jb21wYXJlSXRlcmF0
aW9uc0J5UmV2aXNpb25zKGl0ZXJhdGlvbjEsIGl0ZXJhdGlvbjIpID4gMCwgImNvbXBhcmVJdGVy
YXRpb25zQnlSZXZpc2lvbnM6IGdyZWF0ZXIgdGhhbiIpOwotICAgIHN0cmljdEVxdWFsKHRoaXMu
cXVldWUuY29tcGFyZUl0ZXJhdGlvbnNCeVJldmlzaW9ucyhpdGVyYXRpb24yLCBpdGVyYXRpb24y
KSwgMCwgImNvbXBhcmVJdGVyYXRpb25zQnlSZXZpc2lvbnM6IGVxdWFsIik7Ci19KTsKSW5kZXg6
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TdHlsZXMvTWFpbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L1N0eWxlcy9NYWluLmNzcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxl
cy9NYWluLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDMwNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
Ci0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQot
KiB7Ci0gICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0
OiBub25lOwotICAgIC13ZWJraXQtdXNlci1kcmFnOiBub25lOwotICAgIGN1cnNvcjogZGVmYXVs
dDsKLX0KLQotKjpsaW5rIHsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLWEgewotICAgIHRl
eHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotYTpob3ZlciB7Ci0gICAgdGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7Ci19Ci0KLWRpdi5jZWxsQnV0dG9uLCBkaXYuYWNjZXNzaWJpbGl0eUJ1dHRv
biwgZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIHsKLSAgICBmb250LWZhbWlseTogIkhl
bHZldGljYU5ldWUtTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAg
ICBjb2xvcjogcmdiKDE4NSwgMTc1LCAxMjUpOwotICAgIGN1cnNvcjogcG9pbnRlcjsKLX0KLQot
ZGl2LmNlbGxCdXR0b24uaGlkZSwgZGl2LmFjY2Vzc2liaWxpdHlCdXR0b24uaGlkZSB7Ci0gICAg
ZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiAycHg7
Ci0gICAgcmlnaHQ6IDRweDsKLX0KLQotZGl2LmNlbGxCdXR0b24udW5oaWRlLCBkaXYuYWNjZXNz
aWJpbGl0eUJ1dHRvbi51bmhpZGUsIGRpdi5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbi51bmhp
ZGUgewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5zZXR0aW5ncy12aXNpYmxlIGRpdi5jZWxs
QnV0dG9uLmhpZGUsIC5zZXR0aW5ncy12aXNpYmxlIGRpdi5jZWxsQnV0dG9uLnVuaGlkZSwKLS5z
ZXR0aW5ncy12aXNpYmxlIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLmhpZGUsIC5zZXR0aW5ncy12
aXNpYmxlIGRpdi5hY2Nlc3NpYmlsaXR5QnV0dG9uLnVuaGlkZSwKLS5zZXR0aW5ncy12aXNpYmxl
IGRpdi5wbGF0Zm9ybUZhbWlseVRvZ2dsZUJ1dHRvbi5oaWRlLCAuc2V0dGluZ3MtdmlzaWJsZSBk
aXYucGxhdGZvcm1GYW1pbHlUb2dnbGVCdXR0b24udW5oaWRlLAotLnNldHRpbmdzLXZpc2libGUg
ZGl2LnNldHRpbmdzV3JhcHBlci5oaWRlLCAuc2V0dGluZ3MtdmlzaWJsZSBkaXYuc2V0dGluZ3NX
cmFwcGVyIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLQotLmhpZGRlbiB7Ci0gICAgZGlzcGxh
eTogbm9uZTsKLX0KLQotLnNldHRpbmdzIHsKLSAgICBwb3NpdGlvbjogZml4ZWQ7Ci0gICAgdG9w
OiA1cHg7Ci0gICAgbGVmdDogNXB4OwotICAgIHdpZHRoOiAzNXB4OwotICAgIGhlaWdodDogMzVw
eDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTY2LCAxNTgsIDEzMCk7Ci0gICAgLXdlYmtp
dC1tYXNrLWltYWdlOiB1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDI1MCAyNTAiPjxwYXRoIGQ9Ik0yMTMs
MTQ0di0zOWgtMjEuMDU1Yy0xLjQ3Ni01LTMuNTEtMTAuMDg1LTYuMDUxLTE0LjY2OGwxNC42NzMt
MTQuNjk3bC0yNy41NzgtMjcuNTg5bC0xNC41MjEsMTQuNjY1IEMxNTMuODg1LDYwLjE3LDE0OSw1
OC4xMywxNDQsNTYuNjU0VjM2aC0zOXYyMC42NTRjLTUsMS40NzYtMTAuMTg2LDMuNTEtMTQuNzY5
LDYuMDUxTDc1LjQ4NCw0OC4wMzNMNDcuODY5LDc1LjYwOWwxNC42NTIsMTQuNzIzIEM1OS45ODEs
OTQuOTE1LDU3LjkyOSwxMDAsNTYuNDUzLDEwNUgzNnYzOWgyMC40NTNjMS40NzYsNSwzLjUxMSw5
Ljk4NSw2LjA1MSwxNC41NjlsLTE0LjY3MiwxNC42NDZsMjcuNTc3LDI3LjU2NWwxNC44MjItMTQu
Njc5IGM0LjU4MywyLjU0MSw5Ljc2OSw0LjU2OSwxNC43NjksNi4wNDVWMjEzaDM5di0yMC44NTRj
NS0xLjQ3Niw5Ljg4NS0zLjUxLDE0LjQ2OC02LjA1MWwxNC41OTcsMTQuNjcybDI3LjU0MS0yNy41
NzZsLTE0LjY5MS0xNC42MjMgYzIuNTQtNC41ODMsNC41NTYtOS41NjgsNi4wMzEtMTQuNTY4SDIx
M3ogTTEyNC4xOTksMTY0LjljLTIyLjM2NywwLTQwLjUtMTguMTMzLTQwLjUtNDAuNXMxOC4xMzMt
NDAuNSw0MC41LTQwLjUgczQwLjUsMTguMTMzLDQwLjUsNDAuNVMxNDYuNTY2LDE2NC45LDEyNC4x
OTksMTY0Ljl6Ii8+PC9zdmc+Jyk7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotfQotCi0uc2V0dGlu
Z3M6aG92ZXIgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxODUsIDE3NSwgMTI1KTsKLX0K
LQotLnNldHRpbmdzLXZpc2libGUgLnNldHRpbmdzIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBy
Z2IoNzYsIDE1MSwgNjEpOwotfQotCi1ib2R5IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
MjMzLCAyMzEsIDIyMyk7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIG1hcmdpbjogNTBw
eCAyNXB4IDUwcHggMjVweDsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB7Ci0gICAgYm9yZGVyLXNw
YWNpbmc6IDA7Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLSAgICBkaXNwbGF5OiBp
bmxpbmUtdGFibGU7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIuaGVhZGVycyB0aCB7Ci0gICAg
Zm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLVVsdHJhTGlnaHQiLCBzYW5zLXNlcmlmOwotICAg
IGZvbnQtc2l6ZTogMzBweDsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHRleHQtdHJh
bnNmb3JtOiBsb3dlcmNhc2U7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotfQotCi10
YWJsZS5xdWV1ZS1ncmlkIHRyOm50aC1jaGlsZChvZGQpOm5vdCguaGVhZGVycykgdGQgewotICAg
IGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2IoMjExLCAyMDcsIDE5MSk7Ci0gICAgYm9yZGVyLWJv
dHRvbTogMXB4IHNvbGlkIHJnYigyMTEsIDIwNywgMTkxKTsKLX0KLQotdGFibGUucXVldWUtZ3Jp
ZCB0ciB0aDpub3QoOmxhc3QtY2hpbGQpLAotdGFibGUucXVldWUtZ3JpZCB0ciB0ZDpub3QoOmxh
c3QtY2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2IoMjExLCAyMDcsIDE5
MSk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxkKG9kZCk6bm90KC5oZWFkZXJz
KSB0ZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIyOSwgMjI2LCAyMTcpOwotfQotCi10
YWJsZS5xdWV1ZS1ncmlkIHRyOm50aC1jaGlsZChvZGQpOm5vdCguaGVhZGVycykgdGQ6Zmlyc3Qt
Y2hpbGQgewotICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OwotICAgIGJhY2tncm91
bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KGxlZnQsIHJnYmEoMjI5LCAyMjYsIDIxNywgMCks
IHJnYigyMjksIDIyNiwgMjE3KSk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHI6bnRoLWNoaWxk
KG9kZCk6bm90KC5oZWFkZXJzKSB0ZDpsYXN0LWNoaWxkIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB0cmFuc3BhcmVudDsKLSAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChy
aWdodCwgcmdiYSgyMjksIDIyNiwgMjE3LCAwKSwgcmdiKDIyOSwgMjI2LCAyMTcpKTsKLX0KLQot
dGFibGUucXVldWUtZ3JpZCB0ZCB7Ci0gICAgaGVpZ2h0OiAyMDBweDsKLSAgICB3aWR0aDogMjAw
cHg7Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ZC5s
b2dvIHsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdGQu
bG9nbzo6YmVmb3JlIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBjb250ZW50OiAiIjsKLSAg
ICB3aWR0aDogMjAwcHg7Ci0gICAgaGVpZ2h0OiAwOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRy
LnBsYXRmb3JtIHRkLmxvZ286OmJlZm9yZSB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FO
ZXVlLVVsdHJhTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBm
b250LXdlaWdodDogbm9ybWFsOwotICAgIGxldHRlci1zcGFjaW5nOiAycHg7Ci0gICAgdGV4dC1z
aGFkb3c6IDRweCA0cHggNnB4IHJnYmEoMTUwLCAxNTAsIDE1MCwgMSk7Ci0gICAgY29sb3I6IHJn
YigxNDUsIDEzNSwgOTUpOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBib3R0b206IDI0
cHg7Ci0gICAgbGVmdDogMHB4OwotICAgIHotaW5kZXg6IDI7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdy
aWQgdGQubG9nbyBpbWcucmluZyB7Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJs
KC4uL0ltYWdlcy9QbGF0Zm9ybVJpbmdAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9QbGF0Zm9y
bVJpbmcucG5nKSAxeCk7Ci0gICAgd2lkdGg6IDE2MHB4OwotICAgIGhlaWdodDogMTYzcHg7Ci0g
ICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMjBweDsKLSAgICBsZWZ0OiAxOHB4Owot
fQotCi10YWJsZS5xdWV1ZS1ncmlkIHRkLmxvZ28gaW1nLmxvZ28gewotICAgIHdpZHRoOiAxNDRw
eDsKLSAgICBoZWlnaHQ6IDE0NHB4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICB0b3A6
IDI5cHg7Ci0gICAgbGVmdDogMjZweDsKLSAgICAtd2Via2l0LWNsaXAtcGF0aDogY2lyY2xlKDcy
cHggYXQgY2VudGVyKTsKLSAgICBjbGlwLXBhdGg6IGNpcmNsZSg3MnB4IGF0IGNlbnRlcik7Ci19
Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ud2luZG93cy0xMCB0ZC5sb2dvOjpiZWZv
cmUgewotICAgIGNvbnRlbnQ6ICJXaW5kb3dzIDEwIjsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0
ci5wbGF0Zm9ybS53aW5jYWlyby13aW5kb3dzLTEwIHRkLmxvZ286OmJlZm9yZSB7Ci0gICAgY29u
dGVudDogIldpbkNhaXJvIjsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS5pb3Mt
c2ltdWxhdG9yLTE0IGltZy5sb2dvIHsKLSAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQo
MTU1ZGVnLCAjYjFhOGVkIDE2JSwjYWEzZGFhIDUwJSk7Ci0gICAgY29udGVudDogLXdlYmtpdC1p
bWFnZS1zZXQodXJsKC4uL0ltYWdlcy9JT1MxNFNpbXVsYXRvckAyeC5wbmcpIDJ4LCB1cmwoLi4v
SW1hZ2VzL0lPUzE0U2ltdWxhdG9yLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRy
LnBsYXRmb3JtLmlvcy0xNCBpbWcubG9nbyB7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRp
ZW50KDE1NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwotICAgIGNvbnRlbnQ6IC13ZWJr
aXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvSU9TMTRAMngucG5nKSAyeCwgdXJsKC4uL0ltYWdl
cy9JT1MxNC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS50dm9z
LXNpbXVsYXRvci0xNCBpbWcubG9nbyB7Ci0gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDE1NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwotICAgIGNvbnRlbnQ6IC13ZWJraXQt
aW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvVHZPUzE0U2ltdWxhdG9yQDJ4LnBuZykgMngsIHVybCgu
Li9JbWFnZXMvVHZPUzE0U2ltdWxhdG9yLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlk
IHRyLnBsYXRmb3JtLnR2b3MtMTQgaW1nLmxvZ28gewotICAgIGJhY2tncm91bmQ6IGxpbmVhci1n
cmFkaWVudCgxNTVkZWcsICNiMWE4ZWQgMTYlLCNhYTNkYWEgNTAlKTsKLSAgICBjb250ZW50OiAt
d2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1R2T1MxNEAyeC5wbmcpIDJ4LCB1cmwoLi4v
SW1hZ2VzL1R2T1MxNC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9y
bS53YXRjaG9zLXNpbXVsYXRvci03IGltZy5sb2dvIHsKLSAgICBiYWNrZ3JvdW5kOiBsaW5lYXIt
Z3JhZGllbnQoMTU1ZGVnLCAjYjFhOGVkIDE2JSwjYWEzZGFhIDUwJSk7Ci0gICAgY29udGVudDog
LXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9XYXRjaE9TU2ltdWxhdG9yN0AyeC5wbmcp
IDJ4LCB1cmwoLi4vSW1hZ2VzL1dhdGNoT1NTaW11bGF0b3I3LnBuZykgMXgpOwotfQotCi10YWJs
ZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLndhdGNob3MtNyBpbWcubG9nbyB7Ci0gICAgYmFja2dy
b3VuZDogbGluZWFyLWdyYWRpZW50KDE1NWRlZywgI2IxYThlZCAxNiUsI2FhM2RhYSA1MCUpOwot
ICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvV2F0Y2hPUzdAMngu
cG5nKSAyeCwgdXJsKC4uL0ltYWdlcy9XYXRjaE9TNy5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVl
dWUtZ3JpZCB0ci5wbGF0Zm9ybS5tYWNvcy1tb2phdmUgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6
IC13ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvTW9qYXZlQDJ4LnBuZykgMngsIHVybCgu
Li9JbWFnZXMvTW9qYXZlLnBuZykgMXgpOwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRm
b3JtLm1hY29zLWNhdGFsaW5hIGltZy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdl
LXNldCh1cmwoLi4vSW1hZ2VzL0NhdGFsaW5hQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvQ2F0
YWxpbmEucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQgdHIucGxhdGZvcm0ubWFjb3Mt
Ymlnc3VyIGltZy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4v
SW1hZ2VzL0JpZ1N1ckAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL0JpZ1N1ci5wbmcpIDF4KTsK
LX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS53aW5jYWlyby13aW5kb3dzLTEwIGlt
Zy5sb2dvIHsKLSAgICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1dp
bmRvd3MxMEAyeC5wbmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMC5wbmcpIDF4KTsKLX0K
LQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0Zm9ybS53aW5kb3dzLTEwIGltZy5sb2dvIHsKLSAg
ICBjb250ZW50OiAtd2Via2l0LWltYWdlLXNldCh1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMEAyeC5w
bmcpIDJ4LCB1cmwoLi4vSW1hZ2VzL1dpbmRvd3MxMC5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVl
dWUtZ3JpZCB0ci5wbGF0Zm9ybS53aW5kb3dzLTcgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13
ZWJraXQtaW1hZ2Utc2V0KHVybCguLi9JbWFnZXMvV2luZG93czdAMngucG5nKSAyeCwgdXJsKC4u
L0ltYWdlcy9XaW5kb3dzNy5wbmcpIDF4KTsKLX0KLQotdGFibGUucXVldWUtZ3JpZCB0ci5wbGF0
Zm9ybS5saW51eC1ndGsgaW1nLmxvZ28gewotICAgIGNvbnRlbnQ6IC13ZWJraXQtaW1hZ2Utc2V0
KHVybCguLi9JbWFnZXMvR1RLQDJ4LnBuZykgMngsIHVybCguLi9JbWFnZXMvR1RLLnBuZykgMXgp
OwotfQotCi10YWJsZS5xdWV1ZS1ncmlkIHRyLnBsYXRmb3JtLmxpbnV4LXdwZSBpbWcubG9nbyB7
Ci0gICAgY29udGVudDogLXdlYmtpdC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9XUEVAMngucG5n
KSAyeCwgdXJsKC4uL0ltYWdlcy9XUEUucG5nKSAxeCk7Ci19Ci0KLXRhYmxlLnF1ZXVlLWdyaWQg
dHIucGxhdGZvcm0ubGludXgtanNjb25seSBpbWcubG9nbyB7Ci0gICAgY29udGVudDogLXdlYmtp
dC1pbWFnZS1zZXQodXJsKC4uL0ltYWdlcy9TcXVpcnJlbEZpc2hAMngucG5nKSAyeCwgdXJsKC4u
L0ltYWdlcy9TcXVpcnJlbEZpc2gucG5nKSAxeCk7Ci19Ci0KLS5wb3BvdmVyLXRyYWNraW5nOmhv
dmVyIHsKLSAgICB0ZXh0LXNoYWRvdzogMHB4IDBweCAzcHggcmdiYSgwLCAwLCAwLCAwLjIpCi19
Ci0KLWRpdi5zZXR0aW5nc1dyYXBwZXIuaGlkZSB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQot
ZGl2LnNldHRpbmdzV3JhcHBlciB7Ci0gICAgcG9zaXRpb246IGZpeGVkOwotICAgIHdpZHRoOiAx
MDAlOwotICAgIGhlaWdodDogNDVweDsKLSAgICB0b3A6IDBweDsKLSAgICBsZWZ0OiA1MHB4Owot
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyMzMsIDIzMSwgMjIzKTsKLSAgICB6LWluZGV4OiAy
OwotfQotCi1kaXYuZmFtaWx5VG9nZ2xlV3JhcHBlciB7Ci0gICAgcG9zaXRpb246IGluaGVyaXQ7
Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgbGVmdDogNTBweDsKLSAgICB0b3A6IDEzLjVweDsK
LX0KLQotZGl2LnBsYXRmb3JtRmFtaWx5VG9nZ2xlQnV0dG9uIHsKLSAgICBmbG9hdDogbGVmdDsK
LSAgICBwYWRkaW5nLWxlZnQ6IDVweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiA1cHg7Ci0gICAgdGV4
dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2g7Ci19Ci0KLWRpdi5wbGF0Zm9ybUZhbWlseVRvZ2ds
ZUJ1dHRvbjpub3QoOmxhc3QtY2hpbGQpIHsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCBy
Z2IoMjExLCAyMDcsIDE5MSk7Ci19Ci0KLWRpdi5mYW1pbHlTaG93biB7Ci0gICAgdGV4dC1kZWNv
cmF0aW9uOiBub25lOwotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi1kaXYuYWNjZXNzaWJp
bGl0eUJ1dHRvbiB7Ci0gICAgcG9zaXRpb246IGluaGVyaXQ7Ci0gICAgdG9wOiAxMy41cHg7Ci0g
ICAgcmlnaHQ6IDguNXB4OwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9NZXRyaWNzLmNz
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL01ldHJpY3MuY3NzCShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL01ldHJpY3MuY3NzCShub25leGlzdGVu
dCkKQEAgLTEsODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWJvZHkgewotICAgIG1hcmdpbi10b3A6
IDE1cHg7Ci19Ci0KLSNyYW5nZS1waWNrZXIgewotICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNh
TmV1ZS1MaWdodCIsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXplOiAxNHB4OwotICAgIGNvbG9y
OiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0KLS5xdWV1ZS12
aWV3IC5yZXN1bHQtbGluZSB7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLSAgICBwYWRkaW5nOiAy
cHggMDsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAg
ICBmb250LXNpemU6IDEycHg7Ci0gICAgY29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIC13
ZWJraXQtdXNlci1zZWxlY3Q6IGF1dG87Ci0gICAgY3Vyc29yOiB0ZXh0OwotfQotCi10YWJsZS5h
Z2dyZWdhdGUtZ3JpZCB0ci5oZWFkZXJzIHRoIHsKLSAgICBmb250LXNpemU6IDM2cHg7Ci19Ci0K
LS5hZ2dyZWdhdGUtcXVldWUtdmlldyAucmVzdWx0LWxpbmUgewotICAgIGZvbnQtc2l6ZTogMTRw
eDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgdGV4dC10cmFuc2Zvcm06IGxvd2VyY2Fz
ZTsKLX0KLQotLnF1ZXVlLXZpZXcgLnF1ZXVlTGFiZWwgKyAucmVzdWx0LWxpbmUsCi0ucXVldWUt
dmlldyAuZXJyb3ItbGluZSArIC5yZXN1bHQtbGluZSwKLS5yZXN1bHQtbGluZTpmaXJzdC1jaGls
ZAotewotICAgIHBhZGRpbmc6IDEwcHggMCAycHggMDsKLSAgICBmb250LXdlaWdodDogYm9sZDsK
LX0KLQotLnF1ZXVlLXZpZXcgLmVycm9yLWxpbmUgewotICAgIGNvbG9yOiByZ2IoMTkxLCA2Nywg
NDEpOwotfQotCi0ucXVldWUtdmlldyAuZGl2aWRlciB7Ci0gICAgaGVpZ2h0OiA2cHg7Ci19Ci0K
LXRhYmxlLmFnZ3JlZ2F0ZS1ncmlkIC5xdWV1ZS12aWV3IC5kaXZpZGVyIHsKLSAgICBoZWlnaHQ6
IDEwcHg7Ci19Ci0KLS5tZXRyaWNzLWxvYWRpbmctaW5kaWNhdG9yIHsKLSAgICBmb250LWZhbWls
eTogIkhlbHZldGljYU5ldWUtTGlnaHQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTRw
eDsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgaGVpZ2h0OiAxMDBweDsKLSAg
ICBsaW5lLWhlaWdodDogMTAwcHg7Ci0gICAgdmlzaWJpbGl0eTogaGlkZGVuOwotfQotCi0udGFi
bGVzLWRpdmlkZXIgewotICAgIGhlaWdodDogNjBweDsKLX0KClByb3BlcnR5IGNoYW5nZXMgb246
IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL2Rhc2hib2FyZC9TdHlsZXMvTWV0cmljcy5jc3MKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46
bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
cHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUG9wb3Zlci5jc3MKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9Qb3BvdmVyLmNzcwkocmV2aXNpb24gMjY5MDQyKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9Qb3BvdmVyLmNzcwkobm9uZXhpc3RlbnQpCkBAIC0xLDEw
NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnBvcG92ZXIgewotICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKLSAgICBtaW4td2lkdGg6IDIwcHg7Ci0gICAgbWluLWhlaWdodDogMjBweDsKLSAgICBib3gt
c2l6aW5nOiBib3JkZXItYm94OwotICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwotICAgIHotaW5k
ZXg6IDEwMDA7Ci0gICAgb3BhY2l0eTogMDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctdXAgewotICAg
IHBhZGRpbmc6IDE2cHggNXB4IDVweCA1cHg7Ci19Ci0KLS5wb3BvdmVyLmFycm93LXJpZ2h0IHsK
LSAgICBwYWRkaW5nOiA1cHggMTZweCA1cHggNXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1kb3du
IHsKLSAgICBwYWRkaW5nOiA1cHggNXB4IDE2cHggNXB4OwotfQotCi0ucG9wb3Zlci5hcnJvdy1s
ZWZ0IHsKLSAgICBwYWRkaW5nOiA1cHggNXB4IDVweCAxNnB4OwotfQotCi0ucG9wb3Zlci52aXNp
YmxlIHsKLSAgICBvcGFjaXR5OiAxOwotfQotCi0ucG9wb3Zlci5zdGVwLWluIHsKLSAgICAvKiBU
aGUgZGVsYXkgaXMgYWZ0ZXIgcG9wb3ZlciBjcmVhdGlvbi4gUG9wb3ZlciB0cmFja2luZyBjb2Rl
IG1heSBhZGQgYSBkZWxheSBvZiBpdHMgb3duIGJlZm9yZSBpdCBkZWNpZGVzIHRvIGNyZWF0ZSB0
aGUgcG9wb3Zlci4gKi8KLSAgICAvKiBJdCBpcyB1c2VmdWwgdG8gc2VwYXJhdGUgdGhlIGRlbGF5
cyBiZWNhdXNlIHBvcG92ZXIgY3JlYXRpb24gY2FuIGJlIGNvc3RseSwgZS5nLiBpdCBjYW4gbGF6
aWx5IGxvYWQgZGF0YSBmcm9tIG5ldHdvcmsgZHVyaW5nIHRoZSB0cmFuc2l0aW9uLiAqLwotICAg
IHRyYW5zaXRpb246IG9wYWNpdHkgMG1zIDgwMG1zOwotICAgIG9wYWNpdHk6IDE7Ci19Ci0KLS5w
b3BvdmVyLmZhZGUtb3V0IHsKLSAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDUwMG1zIDIwMG1zOwot
ICAgIG9wYWNpdHk6IDA7Ci19Ci0KLS5wb3BvdmVyID4gLmNvbnRhaW5lciB7Ci0gICAgcG9zaXRp
b246IGFic29sdXRlOwotICAgIGxlZnQ6IDVweDsKLSAgICB0b3A6IDVweDsKLSAgICByaWdodDog
NXB4OwotICAgIGJvdHRvbTogNXB4OwotCi0gICAgcGFkZGluZzogNXB4OwotCi0gICAgb3ZlcmZs
b3cteTogYXV0bzsKLSAgICBvdmVyZmxvdy14OiBoaWRkZW47Ci0KLSAgICBwb2ludGVyLWV2ZW50
czogYXV0bzsKLX0KLQotLnBvcG92ZXIgPiAuY29udGFpbmVyLmNlbnRlciB7Ci0gICAgZGlzcGxh
eTogLXdlYmtpdC1mbGV4OwotICAgIC13ZWJraXQtanVzdGlmeS1jb250ZW50OiBjZW50ZXI7Ci0g
ICAgLXdlYmtpdC1hbGlnbi1pdGVtczogY2VudGVyOwotfQotCi0ucG9wb3Zlci5hcnJvdy11cCA+
IC5jb250YWluZXIgewotICAgIHRvcDogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctcmlnaHQg
PiAuY29udGFpbmVyIHsKLSAgICByaWdodDogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ctZG93
biA+IC5jb250YWluZXIgewotICAgIGJvdHRvbTogMTZweDsKLX0KLQotLnBvcG92ZXIuYXJyb3ct
bGVmdCA+IC5jb250YWluZXIgewotICAgIGxlZnQ6IDE2cHg7Ci19Ci0KLWJvZHkucG9wb3Zlci1w
cmV2ZW50LWRvY3VtZW50LXNjcm9sbGluZyB7Ci0gICAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KClBy
b3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUG9wb3Zlci5jc3MKX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpEZWxldGVkOiBzdm46bWltZS10eXBlCiMjIC0xICswLDAgIyMKLXRleHQvY3NzClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUXVl
dWVWaWV3LmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU3R5bGVzL1F1ZXVlVmlldy5j
c3MJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMvUXVldWVWaWV3LmNz
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDE1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLnF1
ZXVlLXZpZXcgewotICAgIHdpZHRoOiAyMDBweDsKLSAgICBwYWRkaW5nOiAxMHB4IDIwcHg7Ci19
Ci0KLS5xdWV1ZS12aWV3IC5xdWV1ZUxhYmVsIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBm
b250LWZhbWlseTogIkhlbHZldGljYU5ldWUtTGlnaHQiLCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5z
LXNlcmlmOwotICAgIGNvbG9yOiByZ2IoMTQ1LCAxMzUsIDk1KTsKLSAgICB0ZXh0LWFsaWduOiBs
ZWZ0OwotfQotCi0ucXVldWUtdmlldyAucXVldWVMYWJlbDpub3QoOmZpcnN0LWNoaWxkKSB7Ci0g
ICAgbWFyZ2luLXRvcDogMTBweDsKLX0KLQotLnBvcG92ZXIgLmRpdmlkZXIgewotICAgIGhlaWdo
dDogN3B4OwotfQotCi0ucG9wb3ZlciAucG9wb3Zlci1pdGVyYXRpb24taGVhZGluZyAuYnVpbGRi
b3QtbGluaywKLS5wb3BvdmVyIC5wb3BvdmVyLWl0ZXJhdGlvbi1oZWFkaW5nIC5hZGRpdGlvbmFs
LXRleHQgewotICAgIHBhZGRpbmctbGVmdDogNXB4OwotfQotCi0uY29tbWl0LWhpc3RvcnktcG9w
b3ZlciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVlLUxpZ2h0IiwgIkhlbHZldGlj
YSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAg
Zm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0gICAgcGFkZGluZzogMXB4
IDZweCAxcHggNnB4OwotICAgIHVzZXItc2VsZWN0OiBhdXRvOwotfQotCi0uY29tbWl0LWhpc3Rv
cnktcG9wb3ZlciA+IC5wZW5kaW5nLWNvbW1pdCA+IC5hdXRob3IgewotICAgIHBhZGRpbmctbGVm
dDogNXB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDVweDsKLX0KLQotLmNvbW1pdC1oaXN0b3J5LXBv
cG92ZXIgPiAucGVuZGluZy1jb21taXQgPiAudGl0bGUgewotICAgIGNvbG9yOiBibGFjazsKLX0K
LQotLmJ1aWxkLWxvZ3MtcG9wb3ZlciB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2FOZXVl
LUxpZ2h0IiwgIkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBjb2xvcjogcmdiKDE0
NSwgMTM1LCA5NSk7Ci0gICAgZm9udC1zaXplOiAxMnB4OwotICAgIHRleHQtYWxpZ246IGxlZnQ7
Ci0gICAgcGFkZGluZzogMXB4IDZweCAxcHggNnB4OwotfQotCi0uYnVpbGQtbG9ncy1wb3BvdmVy
IC5idWlsZC1sb2dzLWhlYWRpbmcgewotICAgIGRpc3BsYXk6IGlubGluZTsKLX0KLQotLmJ1aWxk
LWxvZ3MtcG9wb3ZlciAuYnVpbGQtcGFnZS1saW5rIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0K
LQotLmJ1aWxkLWxvZ3MtcG9wb3ZlciAuYnVpbGQtbG9nLWxpbmsgewotICAgIHBhZGRpbmctbGVm
dDogNXB4OwotfQotCi0udGVzdC1yZXN1bHRzLXBvcG92ZXIgewotICAgIGZvbnQtZmFtaWx5OiAi
SGVsdmV0aWNhTmV1ZS1MaWdodCIsICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAg
Y29sb3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIGZvbnQtc2l6ZTogMTJweDsKLSAgICB0ZXh0
LWFsaWduOiBsZWZ0OwotICAgIHBhZGRpbmc6IDFweCA2cHggMXB4IDZweDsKLX0KLQotLnRlc3Qt
cmVzdWx0cy1wb3BvdmVyIC5mYWlsaW5nLXRlc3Qta2luZC1zdW1tYXJ5IHsKLSAgICBkaXNwbGF5
OiBibG9jazsKLX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC50ZXN0LXBhdGggewotICAgIGNv
bG9yOiBibGFjazsKLSAgICAtd2Via2l0LXVzZXItc2VsZWN0OiBhdXRvOwotICAgIGN1cnNvcjog
dGV4dDsKLX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC5mYWlsdXJlLWtpbmQtaW5kaWNhdG9y
IHsKLSAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLSAgICBwYWRkaW5nLWxlZnQ6IDdweDsK
LX0KLQotLnRlc3QtcmVzdWx0cy1wb3BvdmVyIC50ZXN0LWhpc3RvcnktbGluayB7Ci0gICAgY29s
b3I6IHJnYigxNDUsIDEzNSwgOTUpOwotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0udGVz
dC1yZXN1bHRzLXBvcG92ZXIgLmFkZGl0aW9uYWwtbGluayB7Ci0gICAgY29sb3I6IHJnYigxNDUs
IDEzNSwgOTUpOwotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQotCi0uYnViYmxlLXNlcnZlci1w
b3BvdmVyLAotLnBlcmZvcm1hbmNlLXBvcG92ZXIsCi0ubGVha3MtcG9wb3ZlciwKLS5jb21iaW5l
ZC1xdWV1ZS1wb3BvdmVyIHsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUtTGlnaHQi
LCAiSGVsdmV0aWNhIE5ldWUiLCBzYW5zLXNlcmlmOwotICAgIGNvbG9yOiByZ2IoMTQ1LCAxMzUs
IDk1KTsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLSAgICBw
YWRkaW5nOiAxcHggNnB4IDFweCA2cHg7Ci19Ci0KLS5idWJibGUtc2VydmVyLXBvcG92ZXIgLnBv
cG92ZXItcXVldWUtaGVhZGluZyAucXVldWUtc3RhdHVzLWxpbmssCi0uYnViYmxlLXNlcnZlci1w
b3BvdmVyIC5wb3BvdmVyLXF1ZXVlLWhlYWRpbmcgLnF1ZXVlLWNoYXJ0cy1saW5rIHsKLSAgICBj
b2xvcjogcmdiKDE0NSwgMTM1LCA5NSk7Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19Ci0KLS5i
dWJibGUtc2VydmVyLXBvcG92ZXIgLmxhdGVzdC1zdGF0dXMtd2l0aC1saW5rLAotLmJ1YmJsZS1z
ZXJ2ZXItcG9wb3ZlciAubGF0ZXN0LXN0YXR1cy1uby1saW5rIHsKLSAgICBjb2xvcjogYmxhY2s7
Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7Ci19Ci0KLS5idWJibGUtc2VydmVyLXBvcG92ZXIgLmZh
aWx1cmUtY291bnQsCi0uYnViYmxlLXNlcnZlci1wb3BvdmVyIC50aW1lLXNpbmNlLW1lc3NhZ2Us
Ci0uYnViYmxlLXNlcnZlci1wb3BvdmVyIC5idWd6aWxsYS1saW5rLAotLmJ1YmJsZS1zZXJ2ZXIt
cG9wb3ZlciAuYm90LXN0YXR1cy1kZXNjcmlwdGlvbiB7Ci0gICAgcGFkZGluZy1sZWZ0OiA3cHg7
Ci19Ci0KLS8qIFN0eWxpbmcgdGhlIHBlcmZvcm1hbmNlIGRhc2hib2FyZCBsaW5rIGFzIHZpc2l0
ZWQgZG9lc24ndCBtYWtlIG11Y2ggc2Vuc2UgaW4gdGhlIGNvbnRleHQgb2YgYm90IHdhdGNoZXIn
cyBkYXNoYm9hcmQuICovCi0ucGVyZm9ybWFuY2UtcG9wb3ZlciAuZGFzaGJvYXJkLWxpbmsgewot
ICAgIGNvbG9yOiBibHVlOwotfQotCi0uY29tYmluZWQtcXVldWUtcG9wb3ZlciAucmV2aXNpb24g
ewotICAgIHBhZGRpbmctbGVmdDogN3B4OwotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9T
dGF0dXNMaW5lVmlldy5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL1N0eWxlcy9TdGF0
dXNMaW5lVmlldy5jc3MJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9TdHlsZXMv
U3RhdHVzTGluZVZpZXcuY3NzCShub25leGlzdGVudCkKQEAgLTEsMTcyICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0uc3RhdHVzLWxpbmUgewotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci0gICAgbWluLWhl
aWdodDogMzJweDsKLSAgICBwYWRkaW5nOiAycHggMDsKLX0KLQotLnN0YXR1cy1saW5lIC5idWJi
bGUgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1pbi13aWR0aDogMjRweDsKLSAgICBoZWlnaHQ6
IDI0cHg7Ci0gICAgY29sb3I6IHdoaXRlOwotICAgIGxpbmUtaGVpZ2h0OiAyNHB4OwotICAgIGZv
bnQtc2l6ZTogMTZweDsKLSAgICBmb250LWZhbWlseTogIkhlbHZldGljYU5ldWUtTWVkaXVtIiwg
IkhlbHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci0g
ICAgYm9yZGVyLXJhZGl1czogMTJweDsKLSAgICBwYWRkaW5nOiAwIDZweDsKLSAgICBvdmVyZmxv
dzogaGlkZGVuOwotICAgIG1hcmdpbi10b3A6IDJweDsKLSAgICBtYXJnaW4tcmlnaHQ6IDZweDsK
LSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLS5zdGF0dXMtbGluZS5uZXV0cmFsIC5i
dWJibGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxODEsIDE3NCwgMTQ4KTsKLX0KLQot
LnN0YXR1cy1saW5lLnVuYXV0aG9yaXplZCAuYnViYmxlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMTcxLCA2MSwgMTcxKTsKLX0KLQotLnN0YXR1cy1saW5lIC5idWJibGUucGljdG9ncmFt
IHsKLSAgICBwYWRkaW5nOiAwOwotICAgIG1heC13aWR0aDogMjRweDsKLX0KLQotLnN0YXR1cy1s
aW5lLmdvb2QgLmJ1YmJsZS5waWN0b2dyYW0gewotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgn
ZGF0YTppbWFnZS9zdmcreG1sLDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3Zn
IiB2aWV3Qm94PSIwIDAgMTAwIDEwMCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjAgMzApIHJv
dGF0ZSgtNDUgMzAgMTcpIiBzaGFwZS1yZW5kZXJpbmc9ImNyaXNwRWRnZXMiIGZpbGw9IndoaXRl
Ij48cmVjdCB5PSI1IiB3aWR0aD0iMTAiIGhlaWdodD0iMjUiLz48cmVjdCB5PSIyMCIgd2lkdGg9
IjYwIiBoZWlnaHQ9IjEwIi8+PC9nPjwvc3ZnPicpOwotfQotCi0uc3RhdHVzLWxpbmUudW5hdXRo
b3JpemVkIC5idWJibGUucGljdG9ncmFtIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJ2Rh
dGE6aW1hZ2Uvc3ZnK3htbCw8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg
dmlld0JveD0iMCAwIDEwMCAxMDAiPjxjbGlwUGF0aCBpZD0idG9wLXNlbWljaXJjbGUiPjxyZWN0
IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAiIGhlaWdodD0iMzciLz48L2NsaXBQYXRoPjxjaXJjbGUg
Y3g9IjUwIiBjeT0iMzMiIHI9IjEzIiBjbGlwLXBhdGg9InVybCgjdG9wLXNlbWljaXJjbGUpIiBz
dHJva2U9IndoaXRlIiBzdHJva2Utd2lkdGg9IjEwIiBmaWxsPSJub25lIiAvPjxyZWN0IHg9IjI0
IiB5PSIzOCIgd2lkdGg9IjUyIiBoZWlnaHQ9IjM5IiBmaWxsPSJ3aGl0ZSIvPjwvc3ZnPicpOwot
fQotCi0uc3RhdHVzLWxpbmUuZGFuZ2VyIC5idWJibGUgewotICAgIGJhY2tncm91bmQtY29sb3I6
IHJnYigyMzAsIDE3NSwgNDQpOwotfQotCi0uc3RhdHVzLWxpbmUubmV1dHJhbCAuYnViYmxlLnBp
Y3RvZ3JhbSwKLS5zdGF0dXMtbGluZS5kYW5nZXIgLmJ1YmJsZS5waWN0b2dyYW0gewotICAgIGZv
bnQtd2VpZ2h0OiBib2xkOwotfQotCi0uc3RhdHVzLWxpbmUuYmFkIC5idWJibGUucGljdG9ncmFt
IHsKLSAgICBmb250LWZhbWlseTogIk1lbmxvLUJvbGQiLCBzYW5zLXNlcmlmOwotICAgIGZvbnQt
c2l6ZTogMjNweDsKLSAgICBsaW5lLWhlaWdodDogMjJweDsKLX0KLQotLnN0YXR1cy1saW5lIC5s
YWJlbCB7Ci0gICAgZm9udC1mYW1pbHk6ICJIZWx2ZXRpY2EgTmV1ZSIsIHNhbnMtc2VyaWY7Ci0g
ICAgZm9udC1zaXplOiAxMHB4OwotICAgIHRleHQtdHJhbnNmb3JtOiBsb3dlcmNhc2U7Ci0gICAg
bGluZS1oZWlnaHQ6IDExcHg7Ci0gICAgcGFkZGluZy10b3A6IDFweDsKLSAgICBkaXNwbGF5OiBi
bG9jazsKLX0KLQotLnN0YXR1cy1saW5lIC5tZXNzYWdlIHsKLSAgICBmb250LWZhbWlseTogIkhl
bHZldGljYSBOZXVlIiwgc2Fucy1zZXJpZjsKLSAgICBmb250LXNpemU6IDEycHg7Ci0gICAgdGV4
dC10cmFuc2Zvcm06IGxvd2VyY2FzZTsKLX0KLQotLnN0YXR1cy1saW5lIC5tZXNzYWdlICogewot
ICAgIGNvbG9yOiBpbmhlcml0OwotfQotCi0uc3RhdHVzLWxpbmUgLm1lc3NhZ2UgLnJldmlzaW9u
LW51bWJlciB7Ci0gICAgLXdlYmtpdC11c2VyLXNlbGVjdDogYXV0bzsKLSAgICBjdXJzb3I6IHRl
eHQ7Ci19Ci0KLS5zdGF0dXMtbGluZS5uby1sYWJlbCAubWVzc2FnZSB7Ci0gICAgbGluZS1oZWln
aHQ6IDI4cHg7Ci19Ci0KLS5zdGF0dXMtbGluZTpub3QoLm5vLWxhYmVsKSAubWVzc2FnZSB7Ci0g
ICAgbGluZS1oZWlnaHQ6IDEzcHg7Ci19Ci0KLS5zdGF0dXMtbGluZS5uZXV0cmFsIC5sYWJlbCwK
LS5zdGF0dXMtbGluZS5uZXV0cmFsIC5tZXNzYWdlLAotLnN0YXR1cy1saW5lLm5vLWJ1YmJsZSAu
bGFiZWwsCi0uc3RhdHVzLWxpbmUubm8tYnViYmxlIC5tZXNzYWdlIHsKLSAgICBjb2xvcjogcmdi
KDE0NSwgMTM1LCA5NSk7Ci19Ci0KLS5zdGF0dXMtbGluZS5iYWQgLmJ1YmJsZSB7Ci0gICAgYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLX0KLQotLnN0YXR1cy1saW5lLmdvb2Qg
LmJ1YmJsZSB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDc2LCAxNTEsIDYxKTsKLX0KLQot
LnN0YXR1cy1saW5lLmdvb2QgLmxhYmVsLAotLnN0YXR1cy1saW5lLmdvb2QgLm1lc3NhZ2Ugewot
ICAgIGNvbG9yOiByZ2IoNzYsIDE1MSwgNjEpOwotfQotCi0uc3RhdHVzLWxpbmUuYmFkIC5sYWJl
bCwKLS5zdGF0dXMtbGluZS5iYWQgLm1lc3NhZ2UgewotICAgIGNvbG9yOiByZ2IoMTkxLCA2Nywg
NDEpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5zdGF0dXMtbGluZS5nb29kIC5i
dWJibGUgewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYig1MCwgMjE5LCA3Mik7Ci19Ci0KLWJv
ZHkuYWNjZXNzaWJpbGl0eS1jb2xvcnMgLnN0YXR1cy1saW5lLmJhZCAuYnViYmxlIHsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTk2LCA0OSwgNDkpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxp
dHktY29sb3JzIC5zdGF0dXMtbGluZS5nb29kIC5sYWJlbCwKLWJvZHkuYWNjZXNzaWJpbGl0eS1j
b2xvcnMgLnN0YXR1cy1saW5lLmdvb2QgLm1lc3NhZ2UgewotICAgIGNvbG9yOiByZ2IoNDAsIDE3
NywgNTgpOwotfQotCi1ib2R5LmFjY2Vzc2liaWxpdHktY29sb3JzIC5zdGF0dXMtbGluZS5iYWQg
LmxhYmVsLAotYm9keS5hY2Nlc3NpYmlsaXR5LWNvbG9ycyAuc3RhdHVzLWxpbmUuYmFkIC5tZXNz
YWdlIHsKLSAgICBjb2xvcjogcmdiKDE5MSwgNjcsIDQxKTsKLX0KLQotLnN0YXR1cy1saW5lLmRh
bmdlciAubGFiZWwsCi0uc3RhdHVzLWxpbmUuZGFuZ2VyIC5tZXNzYWdlIHsKLSAgICBjb2xvcjog
cmdiKDIzMCwgMTc1LCA0NCk7Ci19Ci0KLS5zdGF0dXMtbGluZS51bmF1dGhvcml6ZWQgLmxhYmVs
LAotLnN0YXR1cy1saW5lLnVuYXV0aG9yaXplZCAubWVzc2FnZSB7Ci0gICAgY29sb3I6IHJnYigx
NzEsIDYxLCAxNzEpOwotfQotCi0uc3RhdHVzLWxpbmUgLmJ1YmJsZS5wb3BvdmVyLXRyYWNraW5n
OmhvdmVyIHsKLSAgICB0ZXh0LXNoYWRvdzogMHB4IDBweCA1cHggcmdiYSgyNTUsIDI1NSwgMjU1
LCAwLjcpCi19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvaW5kZXguaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRt
bC9kYXNoYm9hcmQvaW5kZXguaHRtbAkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJk
L2luZGV4Lmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi08IS0tCi1Db3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0yLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLUNPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1DT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci08IURPQ1RZ
UEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHRpdGxlPldlYktpdCBCb3QgV2F0Y2hlcidz
IERhc2hib2FyZDwvdGl0bGU+Ci0KLSAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlN0
eWxlcy9NYWluLmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0i
U3R5bGVzL1BvcG92ZXIuY3NzIj48L2xpbms+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSJTdHlsZXMvUXVldWVWaWV3LmNzcyI+PC9saW5rPgotICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iU3R5bGVzL1N0YXR1c0xpbmVWaWV3LmNzcyI+PC9saW5rPgotCi0gICAgPHNj
cmlwdCBzcmM9IlNjcmlwdHMvVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iU2NyaXB0cy9CYXNlT2JqZWN0LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2Ny
aXB0cy9EYXNoYm9hcmQuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1
aWxkYm90LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWd6aWxsYS5q
cyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnViYmxlUXVldWVTZXJ2ZXIu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1dlYktpdEJ1aWxkYm90Lmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWlsZGJvdFF1ZXVlLmpzIj48
L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9CdWJibGVRdWV1ZS5qcyI+PC9zY3Jp
cHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RJdGVyYXRpb24uanMiPjwvc2Ny
aXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0J1aWxkYm90VGVzdFJlc3VsdHMuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0dlb21ldHJ5LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9Qb3BvdmVyLmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iU2NyaXB0cy9Qb3BvdmVyVHJhY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlNjcmlwdHMvUXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
U2NyaXB0cy9CdWlsZGJvdFF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9
IlNjcmlwdHMvQnVpbGRib3RCdWlsZGVyUXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2Ny
aXB0IHNyYz0iU2NyaXB0cy9CdWlsZGJvdFRlc3RlclF1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0g
ICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RDb21iaW5lZFF1ZXVlVmlldy5qcyI+PC9z
Y3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RQZXJmb3JtYW5jZVF1ZXVl
Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RMZWFr
c1F1ZXVlVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnViYmxl
UXVldWVWaWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9TdGF0dXNM
aW5lVmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvU2V0dGluZ3Mu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1RyYWMuanMiPjwvc2NyaXB0
PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL1dlYktpdFRlc3RIaXN0b3J5LmpzIj48L3Njcmlw
dD4KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9Jbml0aWFsaXphdGlvbi5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWFpbi5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08
Ym9keT48L2JvZHk+Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvbWV0cmljcy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3B1YmxpY19odG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwJKHJldmlzaW9uIDI2OTA0MikK
KysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL2Rhc2hib2FyZC9tZXRyaWNzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NyArMCww
IEBACi08IS0tCi1Db3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotYXJlIG1ldDoKLTEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0yLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLQotVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJwotQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi1USEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi1QVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLUJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKLUNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCi1TVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLUlOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi1D
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgotLS0+Ci08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHRpdGxlPldl
YktpdCBCb3QgV2F0Y2hlcidzIERhc2hib2FyZCBNZXRyaWNzPC90aXRsZT4KLQotICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL01haW4uY3NzIj48L2xpbms+Ci0gICAgPGxp
bmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJTdHlsZXMvUXVldWVWaWV3LmNzcyI+PC9saW5rPgot
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iU3R5bGVzL01ldHJpY3MuY3NzIj48L2xp
bms+Ci0gICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJFeHRlcm5hbC9kYXRlcmFuZ2Vw
aWNrZXIuY3NzIj48L2xpbms+Ci0KLSAgICA8c2NyaXB0IHNyYz0iU2NyaXB0cy9VdGlsaXRpZXMu
anMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0Jhc2VPYmplY3QuanMiPjwv
c2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL0Rhc2hib2FyZC5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3QuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJTY3JpcHRzL0J1YmJsZVF1ZXVlU2VydmVyLmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iU2NyaXB0cy9XZWJLaXRCdWlsZGJvdC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9IlNjcmlwdHMvQnVpbGRib3RRdWV1ZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9IlNjcmlwdHMvQnViYmxlUXVldWUuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3Jj
PSJTY3JpcHRzL0J1aWxkYm90SXRlcmF0aW9uLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNy
Yz0iU2NyaXB0cy9CdWlsZGJvdFRlc3RSZXN1bHRzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0
IHNyYz0iU2NyaXB0cy9TZXR0aW5ncy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNj
cmlwdHMvVHJhYy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvSW5pdGlh
bGl6YXRpb24uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NB
bmFseXplci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWV0cmljc1Zp
ZXcuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJTY3JpcHRzL01ldHJpY3NCdWJibGVW
aWV3LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvanF1ZXJ5LTEuMTEu
MS5taW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJFeHRlcm5hbC9tb21lbnQubWlu
LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvanF1ZXJ5LmRhdGVyYW5n
ZXBpY2tlci5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9IlNjcmlwdHMvTWV0cmljc01h
aW4uanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHk+PC9ib2R5PgotPC9odG1sPgoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvZGFzaGJvYXJkL21ldHJpY3MuaHRtbApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTEgKzAsMCAjIwotdGV4dC9odG1sClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2RlZmF1bHQuY3NzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1s
L2RlZmF1bHQuY3NzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kZWZhdWx0LmNzcwkobm9uZXhp
c3RlbnQpCkBAIC0xLDU2MyArMCwwIEBACi1ib2R5LmludGVyZmFjZSB7Ci0gICAgcG9zaXRpb246
IHJlbGF0aXZlOwotICAgIG1hcmdpbi10b3A6IDhweDsKLSAgICBiYWNrZ3JvdW5kOiB1cmwoJ2Jn
X2dyYWRpZW50LmpwZycpIHJlcGVhdC14OwotICAgIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2FOZXVl
LCBzYW5zLXNlcmlmOwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjZmZmOwotICAgIGNvbG9yOiAjMzMzOwotfQotCi1ib2R5ID4gaHIgewotICAgIGRpc3BsYXk6
IG5vbmU7Ci19Ci0KLWRpdi5jb250ZW50IGgxIHsKLSAgICBkaXNwbGF5OiBub25lICFpbXBvcnRh
bnQ7Ci19Ci0KLXNtYWxsIHsKLSAgZm9udC1zaXplOiA5cHg7Ci19Ci0KLS5hdXRoIHsKLSAgICBw
b3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgYm90dG9tOiA1cHg7Ci0gICAgcmlnaHQ6IDEwcHg7Ci19
Ci0KLWE6bGluayxhOnZpc2l0ZWQsYTphY3RpdmUgewotICAgIGNvbG9yOiAjMzMzOwotfQotCi1h
OnZpc2l0ZWQgewotICAgIGNvbG9yOiAjNTU3OwotfQotCi10YWJsZSB7Ci0gICAgYm9yZGVyLXNw
YWNpbmc6IDFweCAxcHg7Ci19Ci0KLXRhYmxlIHRkIHsKLSAgICBwYWRkaW5nOiAzcHggMnB4IDNw
eCAycHg7Ci19Ci0KLS5Qcm9qZWN0IHsKLSAgICBtaW4td2lkdGg6IDZlbTsKLX0KLQotLkxhc3RC
dWlsZCwuQWN0aXZpdHkgewotICAgIHBhZGRpbmc6IDAgMCAwIDRweDsKLX0KLQotdGQuTGFzdEJ1
aWxkIHsKLSAgICBtaW4td2lkdGg6IDllbTsKLX0KLQotdGQuTGFzdEJ1aWxkIGEgewotICAgIGZv
bnQtd2VpZ2h0OiBib2xkOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotLyogQ2hy
b21pdW0gU3BlY2lmaWMgc3R5bGVzICovCi1kaXYuQnVpbGRSZXN1bHRJbmZvIHsKLSAgICBjb2xv
cjogIzQ0NDsKLX0KLQotZGl2LkFubm91bmNlbWVudCB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMWVt
OwotfQotCi1kaXYuQW5ub3VuY2VtZW50PmE6aG92ZXIgewotICAgIGNvbG9yOiBibGFjazsKLX0K
LQotZGl2LkFubm91bmNlbWVudD5kaXYuTm90aWNlIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
YWZkYWZmOwotICAgIHBhZGRpbmc6IDAuNWVtOwotICAgIGZvbnQtc2l6ZTogMTZweDsKLSAgICB0
ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLWRpdi5Bbm5vdW5jZW1lbnQ+ZGl2Lk9wZW4gewotICAg
IGJvcmRlcjogM3B4IHNvbGlkICM4ZmRmNWY7Ci0gICAgcGFkZGluZzogMC41ZW07Ci0gICAgZm9u
dC1zaXplOiAxNnB4OwotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotZGl2LkFubm91bmNl
bWVudD5kaXYuQ2xvc2VkIHsKLSAgICBib3JkZXI6IDVweCBzb2xpZCAjZTk4MDgwOwotICAgIHBh
ZGRpbmc6IDAuNWVtOwotICAgIGZvbnQtc2l6ZTogMjRweDsKLSAgICBmb250LXdlaWdodDogYm9s
ZDsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRkLlRpbWUgewotICAgIGNvbG9yOiAj
MDAwOwotICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYWFhOwotICAgIGJhY2tncm91bmQt
Y29sb3I6ICNlZWU7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLXRkLkFjdGl2aXR5LHRk
LkNoYW5nZSx0ZC5CdWlsZGVyIHsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5k
LWNvbG9yOiAjQ0NDQ0NDOwotfQotCi10ZC5MYXN0QnVpbGQsdGQuQWN0aXZpdHkgYSx0ZC5DaGFu
Z2UgYSx0ZC5CdWlsZGVyIGEgewotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotdGQu
QnVpbGRlciB7Ci0gICAgdmVydGljYWwtYWxpZ246IHRvcDsKLSAgICBsaW5lLWhlaWdodDogMTIw
JTsKLX0KLQotdGQuQ2hhbmdlIHsKLSAgICBib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtp
dC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Ci19Ci0K
LXRkLkV2ZW50IHsKLSAgICBjb2xvcjogIzc3NzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZGRk
OwotICAgIGJvcmRlci1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDVw
eDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKLX0KLQotdGQuQWN0aXZpdHkgewotICAg
IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDEwcHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxl
ZnQtcmFkaXVzOiAxMHB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiAxMHB4Owot
ICAgIG1pbi1oZWlnaHQ6IDIwcHg7Ci0gICAgcGFkZGluZzogMnB4IDAgMnB4IDA7Ci0gICAgZm9u
dC1zaXplOiA5cHg7Ci19Ci0KLXRkLmlkbGUsdGQud2FpdGluZyx0ZC5vZmZsaW5lLHRkLmJ1aWxk
aW5nIHsKLSAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwcHg7Ci0gICAgLXdlYmtpdC1ib3Jk
ZXItdG9wLWxlZnQtcmFkaXVzOiAwcHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6
IDBweDsKLX0KLQotLkxhc3RCdWlsZCB7Ci0gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4
OwotICAgIC13ZWJraXQtYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNXB4OwotICAgIC1tb3otYm9y
ZGVyLXJhZGl1cy10b3BsZWZ0OiA1cHg7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVw
eDsKLSAgICAtd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1i
b3JkZXItcmFkaXVzLXRvcHJpZ2h0OiA1cHg7Ci19Ci0KLS8qIENvbnNvbGUgdmlldyBzdHlsZXMg
Ki8KLXRkLkRldlJldiB7Ci0gICAgcGFkZGluZzogNHB4IDhweCA0cHggOHB4OwotICAgIGNvbG9y
OiAjMzMzMzMzOwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0
LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDVweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9w
bGVmdDogNXB4OwotICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci0gICAgd2lkdGg6IDElOwot
fQotCi10ZC5EZXZSZXZDb2xsYXBzZSB7Ci0gICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czog
NXB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNXB4OwotICAgIC1t
b3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA1cHg7Ci19Ci0KLXRkLkRldk5hbWUgewotICAg
IHBhZGRpbmc6IDRweCA4cHggNHB4IDhweDsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZWVlOwotICAgIHdpZHRoOiAxJTsKLSAgICB0ZXh0LWFsaWduOiBsZWZ0
OwotfQotCi10ZC5EZXZTdGF0dXMgewotICAgIHBhZGRpbmc6IDRweCA0cHggNHB4IDRweDsKLSAg
ICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwotfQotCi10ZC5E
ZXZTbGF2ZSB7Ci0gICAgcGFkZGluZzogNHB4IDRweCA0cHggNHB4OwotICAgIGNvbG9yOiAjMzMz
MzMzOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWU7Ci19Ci0KLXRkLmZpcnN0IHsKLSAgICBi
b3JkZXItdG9wLWxlZnQtcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQt
cmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDVweDsKLX0KLQot
dGQubGFzdCB7Ci0gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDVweDsKLSAgICAtd2Via2l0
LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLXRv
cHJpZ2h0OiA1cHg7Ci19Ci0KLXRkLkRldlN0YXR1c0NhdGVnb3J5IHsKLSAgICBib3JkZXItcmFk
aXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3Jk
ZXItcmFkaXVzOiA1cHg7Ci0gICAgYm9yZGVyLXdpZHRoOiAxcHg7Ci0gICAgYm9yZGVyLXN0eWxl
OiBzb2xpZDsKLX0KLQotdGQuRGV2U3RhdHVzQ29sbGFwc2UgewotICAgIGJvcmRlci1ib3R0b20t
cmlnaHQtcmFkaXVzOiA1cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1
czogNXB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwotfQotCi10
ZC5EZXZEZXRhaWxzIHsKLSAgICBmb250LXdlaWdodDogbm9ybWFsOwotICAgIHBhZGRpbmc6IDhw
eCA4cHggOHB4IDhweDsKLSAgICBjb2xvcjogIzMzMzMzMzsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiAjZWVlOwotICAgIHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLXRkLkRldkNvbW1lbnQgewotICAg
IGZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0gICAgcGFkZGluZzogOHB4IDhweCA4cHggOHB4OwotICAg
IGNvbG9yOiAjMzMzMzMzOwotICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA1cHg7Ci0g
ICAgLXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4OwotICAgIC1tb3otYm9y
ZGVyLXJhZGl1cy1ib3R0b21yaWdodDogNXB4OwotICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRp
dXM6IDVweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDVweDsKLSAg
ICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogNXB4OwotICAgIGJhY2tncm91bmQtY29s
b3I6ICNlZWU7Ci0gICAgdGV4dC1hbGlnbjogbGVmdDsKLX0KLQotdGQuQWx0IHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZGRkOwotfQotCi0ubGVnZW5kIHsKLSAgICBib3JkZXItcmFkaXVzOiA1
cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLW1vei1ib3JkZXItcmFk
aXVzOiA1cHg7Ci0gICAgd2lkdGg6IDEwMHB4OwotICAgIG1heC13aWR0aDogMTAwcHg7Ci0gICAg
dGV4dC1hbGlnbjogY2VudGVyOwotICAgIHBhZGRpbmc6IDJweCAycHggMnB4IDJweDsKLSAgICBo
ZWlnaHQ6IDE0cHg7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotLkRldlN0YXR1c0Jv
eCB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGhlaWdodDogMjBweDsKLSAgICBwYWRk
aW5nOiAwIDJweDsKLSAgICBsaW5lLWhlaWdodDogMDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFw
OwotfQotCi0uRGV2U3RhdHVzQm94IGEgewotICAgIG9wYWNpdHk6IDAuODU7Ci0gICAgYm9yZGVy
LXdpZHRoOiAxcHg7Ci0gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3JkZXItcmFkaXVz
OiA0cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXIt
cmFkaXVzOiA0cHg7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDkwJTsKLSAgICBo
ZWlnaHQ6IDIwcHg7Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luLWxlZnQ6IGF1
dG87Ci0gICAgbWFyZ2luLXJpZ2h0OiBhdXRvOwotfQotCi0uRGV2U2xhdmVCb3ggewotICAgIHRl
eHQtYWxpZ246IGNlbnRlcjsKLSAgICBoZWlnaHQ6IDEwcHg7Ci0gICAgcGFkZGluZzogMCAycHg7
Ci0gICAgbGluZS1oZWlnaHQ6IDA7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotLkRl
dlNsYXZlQm94IGEgewotICAgIG9wYWNpdHk6IDAuODU7Ci0gICAgYm9yZGVyLXdpZHRoOiAxcHg7
Ci0gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKLSAgICBib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAg
LXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7
Ci0gICAgZGlzcGxheTogYmxvY2s7Ci0gICAgd2lkdGg6IDkwJTsKLSAgICBoZWlnaHQ6IDEwcHg7
Ci0gICAgbGluZS1oZWlnaHQ6IDIwcHg7Ci0gICAgbWFyZ2luLWxlZnQ6IGF1dG87Ci0gICAgbWFy
Z2luLXJpZ2h0OiBhdXRvOwotfQotCi1hLm5vcm91bmQgewotICAgIGJvcmRlci1yYWRpdXM6IDBw
eDsKLSAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDBweDsKLSAgICAtbW96LWJvcmRlci1yYWRp
dXM6IDBweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgbWFyZ2luLXRvcDogLThweDsK
LSAgICBtYXJnaW4tYm90dG9tOiAtOHB4OwotICAgIGhlaWdodDogMzZweDsKLSAgICBib3JkZXIt
dG9wLXdpZHRoOiAwOwotICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7Ci19Ci0KLWEuYmVnaW4g
ewotICAgIGJvcmRlci10b3Atd2lkdGg6IDFweDsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0g
ICAgbWFyZ2luLXRvcDogMHB4OwotICAgIG1hcmdpbi1ib3R0b206IC03cHg7Ci0gICAgaGVpZ2h0
OiAyN3B4OwotICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJv
cmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLSAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVm
dDogNHB4OwotICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgLXdlYmtpdC1i
b3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3By
aWdodDogNHB4OwotfQotCi1hLmVuZCB7Ci0gICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4Owot
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICBtYXJnaW4tdG9wOiAtN3B4OwotICAgIG1hcmdp
bi1ib3R0b206IDBweDsKLSAgICBoZWlnaHQ6IDI3cHg7Ci0gICAgYm9yZGVyLWJvdHRvbS1sZWZ0
LXJhZGl1czogNHB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4
OwotICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OiA0cHg7Ci0gICAgYm9yZGVyLWJv
dHRvbS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQt
cmFkaXVzOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiA0cHg7Ci19
Ci0KLS5jZW50ZXJfYWxpZ24gewotICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLnJpZ2h0
X2FsaWduIHsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLX0KLQotLmxlZnRfYWxpZ24gewotICAg
IHRleHQtYWxpZ246IGxlZnQ7Ci19Ci0KLWRpdi5CdWlsZFdhdGVyZmFsbCB7Ci0gICAgYm9yZGVy
LXJhZGl1czogN3B4OwotICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogN3B4OwotICAgIC1tb3ot
Ym9yZGVyLXJhZGl1czogN3B4OwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBsZWZ0OiAw
cHg7Ci0gICAgdG9wOiAwcHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsKLSAgICBw
YWRkaW5nOiA0cHggNHB4IDRweCA0cHg7Ci0gICAgZmxvYXQ6IGxlZnQ7Ci0gICAgZGlzcGxheTog
bm9uZTsKLSAgICBib3JkZXItd2lkdGg6IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwot
fQotCi0vKiBMYXN0QnVpbGQsIEJ1aWxkU3RlcCBzdGF0ZXMgKi8KLS5zdWNjZXNzIHsKLSAgICBj
b2xvcjogI0ZGRkZGRjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZERjVGOwotICAgIGJvcmRl
ci1jb2xvcjogIzRGODUzMDsKLX0KLQotLmZhaWx1cmUgewotICAgIGNvbG9yOiAjRkZGRkZGOwot
ICAgIGJhY2tncm91bmQtY29sb3I6ICNFOTgwODA7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQTc3Mjcy
OwotfQotCi0ud2FybmluZ3MgewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQt
Y29sb3I6ICNGRkMzNDM7Ci0gICAgYm9yZGVyLWNvbG9yOiAjQzI5RDQ2OwotfQotCi0uZXhjZXB0
aW9uIHsKLSAgICBjb2xvcjogI0ZGRkZGRjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTBCMEZG
OwotICAgIGJvcmRlci1jb2xvcjogI0FDQTBCMzsKLX0KLQotLnN0YXJ0LC5ydW5uaW5nLHRkLmJ1
aWxkaW5nIHsKLSAgICBjb2xvcjogIzY2NjY2NjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZG
QzZDOwotICAgIGJvcmRlci1jb2xvcjogI0M1QzU2RDsKLX0KLQotLm9mZmxpbmUsdGQub2ZmbGlu
ZSwucmV0cnkgewotICAgIGNvbG9yOiAjRkZGRkZGOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNF
MEIwRkY7Ci0gICAgYm9yZGVyLWNvbG9yOiAjZGRkZGRkOwotfQotCi0KLS5zdGFydCB7Ci0gICAg
Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDsKLSAgICAtd2Via2l0LWJvcmRlci1ib3R0
b20tbGVmdC1yYWRpdXM6IDEwcHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6
IDEwcHg7Ci0gICAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDEwcHg7Ci0gICAgLXdlYmtp
dC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMTBweDsKLSAgICAtbW96LWJvcmRlci1yYWRp
dXMtYm90dG9tcmlnaHQ6IDEwcHg7Ci19Ci0KLS5ub3RzdGFydGVkIHsKLSAgICBib3JkZXItd2lk
dGg6IDFweDsKLSAgICBib3JkZXItc3R5bGU6IHNvbGlkOwotICAgIGJvcmRlci1jb2xvcjogI2Fh
YTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwotfQotCi0uY2xvc2VkIHsKLSAgICBiYWNr
Z3JvdW5kLWNvbG9yOiAjZmYwMDAwOwotfQotCi0uY2xvc2VkIC5sYXJnZSB7Ci0gICAgZm9udC1z
aXplOiAxLjVlbTsKLSAgICBmb250LXdlaWdodDogYm9sZGVyOwotfQotCi10ZC5Qcm9qZWN0IGE6
aG92ZXIsdGQuc3RhcnQgYTpob3ZlciB7Ci0gICAgY29sb3I6ICMwMDA7Ci19Ci0KLS5taW5pLWJv
eCB7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotICAgIGhlaWdodDogMjBweDsKLSAgICBwYWRk
aW5nOiAwIDJweDsKLSAgICBsaW5lLWhlaWdodDogMDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFw
OwotfQotCi0ubWluaS1ib3ggYSB7Ci0gICAgYm9yZGVyLXJhZGl1czogMDsKLSAgICAtd2Via2l0
LWJvcmRlci1yYWRpdXM6IDA7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiAwOwotICAgIGRpc3Bs
YXk6IGJsb2NrOwotICAgIHdpZHRoOiAxMDAlOwotICAgIGhlaWdodDogMjBweDsKLSAgICBsaW5l
LWhlaWdodDogMjBweDsKLSAgICBtYXJnaW4tdG9wOiAtMzBweDsKLX0KLQotLm1pbmktY2xvc2Vk
IHsKLSAgICAtYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgICAtd2Via2l0LWJveC1zaXppbmc6
IGJvcmRlci1ib3g7Ci0gICAgYm9yZGVyOiA0cHggc29saWQgcmVkOwotfQotCi0vKiBncmlkIHN0
eWxlcyAqLwotdGFibGUuR3JpZCB7Ci0gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTsKLX0K
LQotdGFibGUuR3JpZCB0ciB0ZCB7Ci0gICAgcGFkZGluZzogMC4yZW07Ci0gICAgbWFyZ2luOiAw
cHg7Ci0gICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi10YWJsZS5HcmlkIHRyIHRkLnRpdGxl
IHsKLSAgICBmb250LXNpemU6IDkwJTsKLSAgICBib3JkZXItcmlnaHQ6IDFweCBncmF5IHNvbGlk
OwotICAgIGJvcmRlci1ib3R0b206IDFweCBncmF5IHNvbGlkOwotfQotCi10YWJsZS5HcmlkIHRy
IHRkLnNvdXJjZXN0YW1wIHsKLSAgICBmb250LXNpemU6IDkwJTsKLX0KLQotdGFibGUuR3JpZCB0
ciB0ZC5idWlsZGVyIHsKLSAgICB0ZXh0LWFsaWduOiByaWdodDsKLSAgICBmb250LXNpemU6IDkw
JTsKLX0KLQotdGFibGUuR3JpZCB0ciB0ZC5idWlsZCB7Ci0gICAgYm9yZGVyOiAxcHggZ3JheSBz
b2xpZDsKLX0KLQotLyogY29sdW1uIGNvbnRhaW5lciAqLwotZGl2LmNvbHVtbiB7Ci0gICAgbWFy
Z2luOiAwIDJlbSAyZW0gMDsKLSAgICBmbG9hdDogbGVmdDsKLX0KLQotLyogaW5mbyB0YWJsZXMg
Ki8KLXRhYmxlLmluZm8gewotICAgIGJvcmRlci1zcGFjaW5nOiAxcHg7Ci19Ci0KLXRhYmxlLmlu
Zm8gdGQgewotICAgIHBhZGRpbmc6IDAuMWVtIDFlbSAwLjFlbSAxZW07Ci0gICAgdGV4dC1hbGln
bjogY2VudGVyOwotfQotCi10YWJsZS5pbmZvIHRoIHsKLSAgICBwYWRkaW5nOiAwLjJlbSAxLjVl
bSAwLjJlbSAxLjVlbTsKLSAgICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLXRhYmxlLmluZm8g
dGQubGVmdCB7Ci0gICAgdGV4dC1hbGlnbjogbGVmdAotfQotCi0uYWx0IHsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZDZkNmQ2OwotfQotCi1saSB7Ci0gICAgcGFkZGluZzogMC4xZW0gMWVtIDAu
MWVtIDFlbTsKLX0KLQotLnJlc3VsdCB7Ci0gICAgcGFkZGluZzogMC4zZW0gMWVtIDAuM2VtIDFl
bTsKLX0KLQotLyogbG9nIHZpZXcgKi8KLS5sb2cgKiB7Ci0gICAgdmxpbms6ICM4MDAwODA7Ci0g
ICAgZm9udC1mYW1pbHk6ICJDb3VyaWVyIE5ldyIsIGNvdXJpZXIsIG1vbm90eXBlOwotfQotCi1z
cGFuLnN0ZG91dCB7Ci0gICAgY29sb3I6IGJsYWNrOwotfQotCi1zcGFuLnN0ZGVyciB7Ci0gICAg
Y29sb3I6IHJlZDsKLX0KLQotc3Bhbi5oZWFkZXIgewotICAgIGNvbG9yOiBibHVlOwotfQotCi0v
KiByZXZpc2lvbiAmIGVtYWlsICovCi0ucmV2aXNpb24gLmZ1bGwgewotICAgIGRpc3BsYXk6IG5v
bmU7Ci19Ci0KLS51c2VyIC5lbWFpbCB7Ci0gICAgZGlzcGxheTogbm9uZTsKLX0KLQotLyogY2hh
bmdlIGNvbW1lbnRzICh1c2UgcmVndWxhciBjb2xvcnMgaGVyZSkgKi8KLXByZS5jb21tZW50cz5h
OmxpbmsscHJlLmNvbW1lbnRzPmE6dmlzaXRlZCB7Ci0gICAgY29sb3I6IGJsdWU7Ci19Ci0KLXBy
ZS5jb21tZW50cz5hOmFjdGl2ZSB7Ci0gICAgY29sb3I6IHB1cnBsZTsKLX0KSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL3Jv
Ym90cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvcm9ib3RzLnR4dAkocmV2aXNpb24gMjY5MDQyKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvcm9ib3RzLnR4dAkobm9uZXhpc3RlbnQpCkBAIC0xLDE2ICswLDAgQEAKLVVzZXItYWdl
bnQ6ICoKLURpc2FsbG93OiAvd2F0ZXJmYWxsCi1EaXNhbGxvdzogL2J1aWxkZXJzCi1EaXNhbGxv
dzogL2NoYW5nZXMKLURpc2FsbG93OiAvYnVpbGRzbGF2ZXMKLURpc2FsbG93OiAvc2NoZWR1bGVy
cwotRGlzYWxsb3c6IC9vbmVfbGluZV9wZXJfYnVpbGQKLURpc2FsbG93OiAvb25lX2JveF9wZXJf
YnVpbGRlcgotRGlzYWxsb3c6IC94bWxycGMKLURpc2FsbG93OiAvZ3JpZAotRGlzYWxsb3c6IC90
Z3JpZAotRGlzYWxsb3c6IC9jb25zb2xlCi1EaXNhbGxvdzogL3Jlc3VsdHMKLURpc2FsbG93OiAv
ZGFzaGJvYXJkCi1EaXNhbGxvdzogL0xlYWtzVmlld2VyCi1EaXNhbGxvdzogL1Rlc3RGYWlsdXJl
cwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cnVuLWJ1aWxkYm90LXRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcnVuLWJ1aWxkYm90LXRlc3QucHkJKHJldmlzaW9u
IDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnL3J1bi1idWlsZGJvdC10ZXN0LnB5CShub25leGlzdGVudCkKQEAgLTEsMzQ3ICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMu
TC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0j
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotIwotaW1wb3J0IHN5cwotaW1wb3J0IHNpZ25hbAotaW1wb3J0IG9zCi1pbXBvcnQgYXJncGFy
c2UKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKLWlt
cG9ydCBzb2NrZXQKLWltcG9ydCBqc29uCi1pbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgbXVsdGlw
cm9jZXNzaW5nCi1mcm9tIHRpbWUgaW1wb3J0IHNsZWVwCi0KLXRlc3RfYnVpbGRib3RfbWFzdGVy
X3RhYyA9ICIiIgotaW1wb3J0IG9zCi1mcm9tIHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0IHNl
cnZpY2UKLXRyeToKLSAgICBmcm9tIGJ1aWxkYm90Lm1hc3Rlci5ib3QgaW1wb3J0IEJ1aWxkTWFz
dGVyCi1leGNlcHQ6Ci0gICAgZnJvbSBidWlsZGJvdC5tYXN0ZXIgaW1wb3J0IEJ1aWxkTWFzdGVy
Ci0KLWJhc2VkaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykp
Ci1jb25maWdmaWxlID0gcidtYXN0ZXIuY2ZnJwotCi1hcHBsaWNhdGlvbiA9IHNlcnZpY2UuQXBw
bGljYXRpb24oJ2J1aWxkbWFzdGVyJykKLUJ1aWxkTWFzdGVyKGJhc2VkaXIsIGNvbmZpZ2ZpbGUp
LnNldFNlcnZpY2VQYXJlbnQoYXBwbGljYXRpb24pCi0iIiIKLQotd29ya2VyX2J1aWxkYm90X21h
c3Rlcl90YWMgPSAiIiIKLWltcG9ydCBvcwotZnJvbSB0d2lzdGVkLmFwcGxpY2F0aW9uIGltcG9y
dCBzZXJ2aWNlCi1mcm9tIGJ1aWxkc2xhdmUuYm90IGltcG9ydCBCdWlsZFNsYXZlCi0KLWJhc2Vk
aXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCi1idWlsZG1h
c3Rlcl9ob3N0ID0gJ2xvY2FsaG9zdCcKLXBvcnQgPSAxNzAwMAotc2xhdmVuYW1lID0gJ3t9Jwot
cGFzc3dkID0gJzEyMzQnCi1rZWVwYWxpdmUgPSA2MDAKLXVzZXB0eSA9IDEKLQotYXBwbGljYXRp
b24gPSBzZXJ2aWNlLkFwcGxpY2F0aW9uKCdidWlsZHNsYXZlJykKLUJ1aWxkU2xhdmUoYnVpbGRt
YXN0ZXJfaG9zdCwgcG9ydCwgc2xhdmVuYW1lLCBwYXNzd2QsIGJhc2VkaXIsIGtlZXBhbGl2ZSwg
dXNlcHR5KS5zZXRTZXJ2aWNlUGFyZW50KGFwcGxpY2F0aW9uKQotIiIiCi0KLQotZGVmIGNoZWNr
X3RjcF9wb3J0X29wZW4oYWRkcmVzcywgcG9ydCk6Ci0gICAgcyA9IHNvY2tldC5zb2NrZXQoKQot
ICAgIHRyeToKLSAgICAgICAgcy5jb25uZWN0KChhZGRyZXNzLCBwb3J0KSkKLSAgICAgICAgcmV0
dXJuIFRydWUKLSAgICBleGNlcHQ6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiB1cGdy
YWRlX2RiX25lZWRlZChsb2cpOgotICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKGxvZykgYXMg
ZjoKLSAgICAgICAgICAgIGZvciBsIGluIGY6Ci0gICAgICAgICAgICAgICAgaWYgJ3VwZ3JhZGUg
dGhlIGRhdGFiYXNlJyBpbiBsOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAg
IGV4Y2VwdDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIEZhbHNlCi0KLQotZGVm
IGNyZWF0ZV90ZW1wZGlyKHRtcGRpcj1Ob25lKToKLSAgICBpZiB0bXBkaXIgaXMgbm90IE5vbmU6
Ci0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZGlyKHRtcGRpcik6Ci0gICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKCd7fSBpcyBub3QgYSBkaXJlY3RvcnknLmZvcm1hdCh0bXBkaXIpKQotICAg
ICAgICByZXR1cm4gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9b3MucGF0aC5qb2luKG9zLnBhdGgu
YWJzcGF0aCh0bXBkaXIpLCAndG1wJykpCi0gICAgcmV0dXJuIHRlbXBmaWxlLm1rZHRlbXAoKQot
Ci0KLWRlZiBwcmludF9pZl9lcnJvcl9zdGRvdXRfc3RkZXJyKGNtZCwgcmV0Y29kZSwgc3Rkb3V0
PU5vbmUsIHN0ZGVycj1Ob25lLCBleHRyYW1zZz1Ob25lKToKLSAgICBpZiByZXRjb2RlICE9IDA6
Ci0gICAgICAgIGlmIHR5cGUoY21kKSA9PSB0eXBlKFtdKToKLSAgICAgICAgICAgIGNtZCA9ICcg
Jy5qb2luKGNtZCkKLSAgICAgICAgcHJpbnQoJ1dBUk5JTkc6ICJ7Y21kfSIgcmV0dXJuZWQge3Jl
dGNvZGV9IHN0YXR1cyBjb2RlJy5mb3JtYXQoY21kPWNtZCwgcmV0Y29kZT1yZXRjb2RlKSkKLSAg
ICAgICAgaWYgc3Rkb3V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoc3Rkb3V0KQot
ICAgICAgICBpZiBzdGRlcnIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwcmludChzdGRlcnIp
Ci0gICAgICAgIGlmIGV4dHJhbXNnIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcHJpbnQoZXh0
cmFtc2cpCi0KLQotZGVmIHNldHVwX21hc3Rlcl93b3JrZGlyKGNvbmZpZ2RpciwgYmFzZV93b3Jr
ZGlyKToKLSAgICBtYXN0ZXJfd29ya2RpciA9IG9zLnBhdGguam9pbihiYXNlX3dvcmtkaXIsICdt
YXN0ZXInKQotICAgIHByaW50KCdDb3B5aW5nIGZpbGVzIGZyb20ge30gdG8ge30gLi4uJy5mb3Jt
YXQoY29uZmlnZGlyLCBtYXN0ZXJfd29ya2RpcikpCi0gICAgc2h1dGlsLmNvcHl0cmVlKGNvbmZp
Z2RpciwgbWFzdGVyX3dvcmtkaXIpCi0gICAgcHJpbnQoJ0dlbmVyYXRpbmcgYnVpbGRib3QgZmls
ZXMgYXQge30gLi4uJy5mb3JtYXQobWFzdGVyX3dvcmtkaXIpKQotICAgIHdpdGggb3Blbihvcy5w
YXRoLmpvaW4obWFzdGVyX3dvcmtkaXIsICdidWlsZGJvdC50YWMnKSwgJ3cnKSBhcyBmOgotICAg
ICAgICBmLndyaXRlKHRlc3RfYnVpbGRib3RfbWFzdGVyX3RhYykKLSAgICBta3B3ZF9jbWQgPSBb
Jy4vbWFrZV9wYXNzd29yZHNfanNvbi5weSddCi0gICAgbWtwd2RfcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4obWtwd2RfY21kLCBjd2Q9bWFzdGVyX3dvcmtkaXIsCi0gICAgICAgICAgICAgICAg
c3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHN0
ZG91dCwgc3RkZXJyID0gbWtwd2RfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgcHJpbnRfaWZf
ZXJyb3Jfc3Rkb3V0X3N0ZGVycihta3B3ZF9jbWQsIG1rcHdkX3Byb2Nlc3MucmV0dXJuY29kZSwg
c3Rkb3V0LCBzdGRlcnIpCi0gICAgcmV0dXJuIG1hc3Rlcl93b3JrZGlyCi0KLQotZGVmIHdhaXRf
Zm9yX21hc3Rlcl9yZWFkeShtYXN0ZXJfd29ya2Rpcik6Ci0gICAgbWFzdGVyX3JlYWR5X2NoZWNr
X2NvdW50ZXIgPSAwCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUo
b3MucGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAnLm1hc3Rlci1pcy1yZWFkeScpKToKLSAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBpZiBtYXN0ZXJfcmVhZHlfY2hlY2tfY291bnRlciA+IDYw
OgotICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdFUlJPUjogQWJvcnRpbmcgYWZ0ZXIg
d2FpdGluZyA2MCBzZWNvbmRzIGZvciB0aGUgbWFzdGVyIHRvIHN0YXJ0LicpCi0gICAgICAgIHNs
ZWVwKDEpCi0gICAgICAgIG1hc3Rlcl9yZWFkeV9jaGVja19jb3VudGVyICs9IDEKLQotCi1kZWYg
c3RhcnRfbWFzdGVyKG1hc3Rlcl93b3JrZGlyKToKLSAgICAjIFRoaXMgaXMgc3RhcnRlZCB2aWEg
bXVsdGlwcm9jZXNzaW5nLiBXZSBzZXQgYSBuZXcgcHJvY2VzcyBncm91cCBoZXJlCi0gICAgIyB0
byBiZSBhYmxlIHRvIHJlbGlhYmx5IGtpbGwgdGhpcyBzdWJwcm9jZXNzIGFuZCBhbGwgb2YgaXRz
IGNoaWxkIG9uIGNsZWFuLgotICAgIG9zLnNldHNpZCgpCi0gICAgYnVpbGRtYXN0ZXJsb2cgPSBv
cy5wYXRoLmpvaW4obWFzdGVyX3dvcmtkaXIsICdidWlsZG1hc3Rlci5sb2cnKQotICAgIGRidXBn
cmFkZWQgPSBGYWxzZQotICAgIHJldHJ5ID0gVHJ1ZQotICAgIGlmIGNoZWNrX3RjcF9wb3J0X29w
ZW4oJ2xvY2FsaG9zdCcsIDg3MTApOgotICAgICAgICBwcmludCgnRVJST1I6IFRoZXJlIGlzIHNv
bWUgcHJvY2VzcyBhbHJlYWR5IGxpc3RlbmluZyBpbiBwb3J0IDgxNzAnKQotICAgICAgICByZXR1
cm4gMQotICAgIHdoaWxlIHJldHJ5OgotICAgICAgICByZXRyeSA9IEZhbHNlCi0gICAgICAgIHBy
aW50KCdTdGFydGluZyB0aGUgdHdpc3RkIHByb2Nlc3MgLi4uJykKLSAgICAgICAgdHdpc3RkX2Nt
ZCA9IFsndHdpc3RkJywgJy1sJywgYnVpbGRtYXN0ZXJsb2csICctbm95JywgJ2J1aWxkYm90LnRh
YyddCi0gICAgICAgIHR3aXN0ZF9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih0d2lzdGRfY21k
LCBjd2Q9bWFzdGVyX3dvcmtkaXIsCi0gICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9j
ZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgd2hpbGUgdHdpc3Rk
X3Byb2Nlc3MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBjaGVja190Y3BfcG9ydF9v
cGVuKCdsb2NhbGhvc3QnLCA4NzEwKToKLSAgICAgICAgICAgICAgICBwcmludCgnVGVzdCBidWls
ZG1hc3RlciByZWFkeSEuXG5cbicKLSAgICAgICAgICAgICAgICAgICAgICArICcgLSBTZWUgYnVp
bGRtYXN0ZXIgbG9nOlxuJwotICAgICAgICAgICAgICAgICAgICAgICsgJyAgICAgdGFpbCAtZiB7
fVxuJy5mb3JtYXQoYnVpbGRtYXN0ZXJsb2cpCi0gICAgICAgICAgICAgICAgICAgICAgKyAnIC0g
T3BlbiBhIGJyb3dzZXIgdG86XG4nCi0gICAgICAgICAgICAgICAgICAgICAgKyAnICAgICBodHRw
Oi8vbG9jYWxob3N0Ojg3MTBcbicKLSAgICAgICAgICAgICAgICAgICAgICArICcgLSBDcmVkZW50
aWFscyBmb3IgdHJpZ2dlcmluZyBtYW51YWwgYnVpbGRzOlxuJwotICAgICAgICAgICAgICAgICAg
ICAgICsgJyAgICAgbG9naW46ICAgICBjb21taXR0ZXJAd2Via2l0Lm9yZ1xuJwotICAgICAgICAg
ICAgICAgICAgICAgICsgJyAgICAgcGFzc3dvcmQ6ICBjb21taXR0ZXJwYXNzd29yZFxuJykKLSAg
ICAgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKG1hc3Rlcl93b3JrZGlyLCAnLm1h
c3Rlci1pcy1yZWFkeScpLCAndycpIGFzIGY6Ci0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUo
J3JlYWR5JykKLSAgICAgICAgICAgICAgICB0d2lzdGRfcHJvY2Vzcy53YWl0KCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gMAotICAgICAgICAgICAgc2xlZXAoMSkKLSAgICAgICAgc3Rkb3V0LCBz
dGRlcnIgPSB0d2lzdGRfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIGlmIHR3aXN0ZF9w
cm9jZXNzLnJldHVybmNvZGUgPT0gMCBhbmQgdXBncmFkZV9kYl9uZWVkZWQoYnVpbGRtYXN0ZXJs
b2cpIGFuZCBub3QgZGJ1cGdyYWRlZDoKLSAgICAgICAgICAgIHJldHJ5ID0gVHJ1ZQotICAgICAg
ICAgICAgZGJ1cGdyYWRlZCA9IFRydWUKLSAgICAgICAgICAgIHByaW50KCdVcGdyYWRpbmcgdGhl
IGRhdGFiYXNlIC4uLicpCi0gICAgICAgICAgICB1cGdyYWRlX2NtZCA9IFsnYnVpbGRib3QnLCAn
dXBncmFkZS1tYXN0ZXInLCBtYXN0ZXJfd29ya2Rpcl0KLSAgICAgICAgICAgIHVwZ3JhZGVfcHJv
Y2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4odXBncmFkZV9jbWQsIGN3ZD1tYXN0ZXJfd29ya2RpciwK
LSAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnBy
b2Nlc3MuU1RET1VUKQotICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSB1cGdyYWRlX3Byb2Nl
c3MuY29tbXVuaWNhdGUoKQotICAgICAgICAgICAgcHJpbnRfaWZfZXJyb3Jfc3Rkb3V0X3N0ZGVy
cih1cGdyYWRlX2NtZCwgdXBncmFkZV9wcm9jZXNzLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJy
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnRfaWZfZXJyb3Jfc3Rkb3V0X3N0ZGVy
cih0d2lzdGRfY21kLCB0d2lzdGRfcHJvY2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVyciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NoZWNrIHRoZSBsb2cg
YXQge30nLmZvcm1hdChidWlsZG1hc3RlcmxvZykpCi0gICAgcmV0dXJuIDAKLQotCi1kZWYgZ2V0
X2xpc3Rfd29ya2VycyhtYXN0ZXJfd29ya2Rpcik6Ci0gICAgcGFzc3dvcmRfbGlzdCA9IG9zLnBh
dGguam9pbihtYXN0ZXJfd29ya2RpciwgJ3Bhc3N3b3Jkcy5qc29uJykKLSAgICB3aXRoIG9wZW4o
cGFzc3dvcmRfbGlzdCkgYXMgZjoKLSAgICAgICAgcGFzc3dvcmRzID0ganNvbi5sb2FkKGYpCi0g
ICAgbGlzdF93b3JrZXJzID0gW10KLSAgICBmb3Igd29ya2VyIGluIHBhc3N3b3JkczoKLSAgICAg
ICAgbGlzdF93b3JrZXJzLmFwcGVuZChzdHIod29ya2VyKSkKLSAgICByZXR1cm4gbGlzdF93b3Jr
ZXJzCi0KLQotZGVmIHN0YXJ0X3dvcmtlcihiYXNlX3dvcmtkaXIsIHdvcmtlcik6Ci0gICAgIyBU
aGlzIGlzIHN0YXJ0ZWQgdmlhIG11bHRpcHJvY2Vzc2luZy4gV2Ugc2V0IGEgbmV3IHByb2Nlc3Mg
Z3JvdXAgaGVyZQotICAgICMgdG8gYmUgYWJsZSB0byByZWxpYWJseSBraWxsIHRoaXMgc3VicHJv
Y2VzcyBhbmQgYWxsIG9mIGl0cyBjaGlsZCBvbiBjbGVhbi4KLSAgICBvcy5zZXRzaWQoKQotICAg
IHdvcmtlcl93b3JrZGlyID0gb3MucGF0aC5qb2luKGJhc2Vfd29ya2Rpciwgd29ya2VyKQotICAg
IG9zLm1rZGlyKHdvcmtlcl93b3JrZGlyKQotICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4od29y
a2VyX3dvcmtkaXIsICdidWlsZGJvdC50YWMnKSwgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRl
KHdvcmtlcl9idWlsZGJvdF9tYXN0ZXJfdGFjLmZvcm1hdCh3b3JrZXIpKQotICAgIHR3aXN0ZF9j
bWQgPSBbJ3R3aXN0ZCcsICctbCcsICd3b3JrZXIubG9nJywgJy1ub3knLCAnYnVpbGRib3QudGFj
J10KLSAgICB0d2lzdGRfd29ya2VyX3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKHR3aXN0ZF9j
bWQsIGN3ZD13b3JrZXJfd29ya2RpciwKLSAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwg
c3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIHRyeToKLSAgICAgICAgc3Rkb3V0LCBzdGRl
cnIgPSB0d2lzdGRfd29ya2VyX3Byb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGV4Y2VwdDoKLSAg
ICAgICAgdHdpc3RkX3dvcmtlcl9wcm9jZXNzLmtpbGwoKQotICAgICAgICByZXR1cm4KLSAgICBw
cmludF9pZl9lcnJvcl9zdGRvdXRfc3RkZXJyKHR3aXN0ZF9jbWQsIHR3aXN0ZF93b3JrZXJfcHJv
Y2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdDaGVjayB0aGUgbG9nIGF0IHt9Jy5mb3JtYXQob3MucGF0aC5qb2luKHdvcmtl
cl93b3JrZGlyLCAnd29ya2VyLmxvZycpKSkKLQotCi1kZWYgY2xlYW4odGVtcF9kaXIpOgotICAg
IGlmIG9zLnBhdGguaXNkaXIodGVtcF9kaXIpOgotICAgICAgICBwcmludCgnXG5cbkNsZWFuaW5n
IHt9IC4uLiBcbicuZm9ybWF0KHRlbXBfZGlyKSkKLSAgICAgICAgIyBzaHV0aWwucm10cmVlIGNh
biBmYWlsIGlmIHdlIGhvbGQgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3Igb24gdGVtcF9kaXIKLSAg
ICAgICAgIyAod2hpY2ggaXMgdmVyeSBsaWtlbHkgd2hlbiBjbGVhbmluZykgb3IgaWYgdGVtcF9k
aXIgaXMgYSBORlMgbW91bnQuCi0gICAgICAgICMgVXNlIHJtIGluc3RlYWQgdGhhdCBhbHdheXMg
d29ya3MuCi0gICAgICAgIHJtID0gc3VicHJvY2Vzcy5Qb3BlbihbJ3JtJywgJy1mcicsIHRlbXBf
ZGlyXSkKLSAgICAgICAgcm0ud2FpdCgpCi0KLQotZGVmIGNtZF9leGlzdHMoY21kKToKLSAgICBy
ZXR1cm4gYW55KG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4ocGF0aCwgY21kKSwgb3MuWF9PSykKLSAg
ICAgICAgICAgICAgIGZvciBwYXRoIGluIG9zLmVudmlyb25bJ1BBVEgnXS5zcGxpdChvcy5wYXRo
c2VwKSkKLQotCi1kZWYgY2hlY2tfYnVpbGRib3RfaW5zdGFsbGVkKCk6Ci0gICAgaWYgY21kX2V4
aXN0cygndHdpc3RkJykgYW5kIGNtZF9leGlzdHMoJ2J1aWxkYm90Jyk6Ci0gICAgICAgIHJldHVy
bgotICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQnVpbGRib3QgaXMgbm90IGluc3RhbGxlZC4nKQot
Ci0KLWRlZiBzZXR1cF92aXJ0dWFsZW52KGJhc2Vfd29ya2Rpcl90ZW1wKToKLSAgICBpZiBjbWRf
ZXhpc3RzKCd2aXJ0dWFsZW52Jyk6Ci0gICAgICAgIHByaW50KCdTZXR0aW5nIHVwIHZpcnR1YWxl
bnYgYXQge30gLi4uICcuZm9ybWF0KGJhc2Vfd29ya2Rpcl90ZW1wKSkKLSAgICAgICAgdmlydHVh
bGVudl9jbWQgPSBbJ3ZpcnR1YWxlbnYnLCAnLXAnLCAncHl0aG9uMicsICd2ZW52J10KLSAgICAg
ICAgdmlydHVhbGVudl9wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbih2aXJ0dWFsZW52X2NtZCwg
Y3dkPWJhc2Vfd29ya2Rpcl90ZW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3Mu
U1RET1VUKQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHZpcnR1YWxlbnZfcHJvY2Vzcy5jb21t
dW5pY2F0ZSgpCi0gICAgICAgIHByaW50X2lmX2Vycm9yX3N0ZG91dF9zdGRlcnIodmlydHVhbGVu
dl9jbWQsIHZpcnR1YWxlbnZfcHJvY2Vzcy5yZXR1cm5jb2RlLCBzdGRvdXQsIHN0ZGVycikKLSAg
ICAgICAgdmlydHVhbGVudl9iaW5kaXIgPSBvcy5wYXRoLmpvaW4oYmFzZV93b3JrZGlyX3RlbXAs
ICd2ZW52JywgJ2JpbicpCi0gICAgICAgIHZpcnR1YWxlbnZfcGlwID0gb3MucGF0aC5qb2luKHZp
cnR1YWxlbnZfYmluZGlyLCAncGlwJykKLSAgICAgICAgaWYgbm90IG9zLmFjY2Vzcyh2aXJ0dWFs
ZW52X3BpcCwgb3MuWF9PSyk6Ci0gICAgICAgICAgICBwcmludCgnU29tZXRoaW5nIHdlbnQgd3Jv
bmcgc2V0dGluZyB1cCB2aXJ0dWFsZW52JwotICAgICAgICAgICAgICAgICAgJ1RyeWluZyB0byBj
b250aW51ZSB1c2luZyB0aGUgc3lzdGVtIHZlcnNpb24gb2YgYnVpbGRib3QnKQotICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgIHByaW50KCdTZXR0aW5nIHVwIGJ1aWxkYm90IGRlcGVuZGVuY2ll
cyBvbiB0aGUgdmlydHVhbGVudiAuLi4gJykKLSAgICAgICAgIyBUaGUgaWRlYSBpcyB0byBpbnN0
YWxsIHRoZSB2ZXJ5IHNhbWUgdmVyc2lvbiBvZiBidWlsZGJvdCBhbmQgaXRzCi0gICAgICAgICMg
ZGVwZW5kZW5jaWVzIHRoYW4gdGhlIG9uZXMgdXNlZCBmb3IgcnVubmluZyBodHRwczovL2J1aWxk
LndlYmtpdC5vcmcvYWJvdXQKLSAgICAgICAgcGlwX2NtZCA9IFt2aXJ0dWFsZW52X3BpcCwgJ2lu
c3RhbGwnLAotICAgICAgICAgICAgICAgICAgICAnYnVpbGRib3Q9PTAuOC42cDEnLAotICAgICAg
ICAgICAgICAgICAgICAnYnVpbGRib3Qtc2xhdmU9PTAuOC42cDEnLAotICAgICAgICAgICAgICAg
ICAgICAndHdpc3RlZD09MTIuMS4wJywKLSAgICAgICAgICAgICAgICAgICAgJ2ppbmphMj09Mi42
JywKLSAgICAgICAgICAgICAgICAgICAgJ3NxbGFsY2hlbXk9PTAuNy44JywKLSAgICAgICAgICAg
ICAgICAgICAgJ3NxbGFsY2hlbXktbWlncmF0ZT09MC4xMi4wJ10KLSAgICAgICAgcGlwX3Byb2Nl
c3MgPSBzdWJwcm9jZXNzLlBvcGVuKHBpcF9jbWQsIGN3ZD1iYXNlX3dvcmtkaXJfdGVtcCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBw
aXBfcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCi0gICAgICAgIHByaW50X2lmX2Vycm9yX3N0ZG91dF9z
dGRlcnIocGlwX2NtZCwgcGlwX3Byb2Nlc3MucmV0dXJuY29kZSwgc3Rkb3V0LCBzdGRlcnIpCi0g
ICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IHZpcnR1YWxlbnZfYmluZGlyICsgJzonICsgb3Mu
ZW52aXJvblsnUEFUSCddCi0gICAgICAgIHJldHVybgotICAgIHByaW50KCdXQVJOSU5HOiB2aXJ0
dWFsZW52IG5vdCBpbnN0YWxsZWQuICcKLSAgICAgICAgICAnVHJ5aW5nIHRvIGNvbnRpbnVlIHVz
aW5nIHRoZSBzeXN0ZW0gdmVyc2lvbiBvZiBidWlsZGJvdCcpCi0KLQotZGVmIGNvbmZpZ2Rpcl9p
c192YWxpZChjb25maWdkaXIpOgotICAgIHJldHVybihvcy5wYXRoLmlzZGlyKGNvbmZpZ2Rpcikg
YW5kCi0gICAgICAgICAgIG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihjb25maWdkaXIsICdj
b25maWcuanNvbicpKSBhbmQKLSAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2lu
KGNvbmZpZ2RpciwgJ21hc3Rlci5jZmcnKSkgYW5kCi0gICAgICAgICAgIG9zLmFjY2Vzcyhvcy5w
YXRoLmpvaW4oY29uZmlnZGlyLCAnbWFrZV9wYXNzd29yZHNfanNvbi5weScpLCBvcy5YX09LKSkK
LQotCi1kZWYgbWFpbihjb25maWdkaXIsIGJhc2V0ZW1wZGlyPU5vbmUsIG5vX2NsZWFuPUZhbHNl
LCBub193b3JrZXJzPUZhbHNlLCB1c2Vfc3lzdGVtX3ZlcnNpb249RmFsc2UpOgotICAgIGNvbmZp
Z2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLnJlYWxwYXRoKGNvbmZpZ2RpcikpCi0gICAg
aWYgbm90IGNvbmZpZ2Rpcl9pc192YWxpZChjb25maWdkaXIpOgotICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCdUaGUgY29uZmlnZGlyIHt9IGRvbnQgY29udGFpbnMgdGhlIGJ1aWxkbWFzdGVyIGZp
bGVzIGV4cGVjdGVkIGJ5IHRoaXMgc2NyaXB0Jy5mb3JtYXQoY29uZmlnZGlyKSkKLSAgICBiYXNl
X3dvcmtkaXJfdGVtcCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLnJlYWxwYXRoKGNyZWF0ZV90
ZW1wZGlyKGJhc2V0ZW1wZGlyKSkpCi0gICAgaWYgYmFzZV93b3JrZGlyX3RlbXAuc3RhcnRzd2l0
aChjb25maWdkaXIpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdUaGUgdGVtcG9yYWwgd29y
a2luZyBkaXJlY3Rvcnkge30gY2FudCBiZSBsb2NhdGVkIGluc2lkZSBjb25maWdkaXIge30nLmZv
cm1hdChiYXNlX3dvcmtkaXJfdGVtcCwgY29uZmlnZGlyKSkKLSAgICB0cnk6Ci0gICAgICAgIGlm
IG5vdCB1c2Vfc3lzdGVtX3ZlcnNpb246Ci0gICAgICAgICAgICBzZXR1cF92aXJ0dWFsZW52KGJh
c2Vfd29ya2Rpcl90ZW1wKQotICAgICAgICBjaGVja19idWlsZGJvdF9pbnN0YWxsZWQoKQotICAg
ICAgICBtYXN0ZXJfd29ya2RpciA9IHNldHVwX21hc3Rlcl93b3JrZGlyKGNvbmZpZ2RpciwgYmFz
ZV93b3JrZGlyX3RlbXApCi0gICAgICAgIG1hc3Rlcl9ydW5uZXIgPSBtdWx0aXByb2Nlc3Npbmcu
UHJvY2Vzcyh0YXJnZXQ9c3RhcnRfbWFzdGVyLCBhcmdzPShtYXN0ZXJfd29ya2RpciwpKQotICAg
ICAgICBtYXN0ZXJfcnVubmVyLnN0YXJ0KCkKLSAgICAgICAgd2FpdF9mb3JfbWFzdGVyX3JlYWR5
KG1hc3Rlcl93b3JrZGlyKQotICAgICAgICBpZiBub193b3JrZXJzOgotICAgICAgICAgICAgcHJp
bnQoJyAtIFRvIG1hbnVhbGx5IGF0dGFjaCBhIGJ1aWxkIHdvcmtlciB1c2UgdGhpcyBpbmZvOlxu
JwotICAgICAgICAgICAgICAgICAgKyAnICAgICBUQ1AgcG9ydCBmb3IgdGhlIHdvcmtlci10by1t
YXN0ZXIgY29ubmVjdGlvbjogMTcwMDBcbicKLSAgICAgICAgICAgICAgICAgICsgJyAgICAgd29y
a2VyLWlkOiB0aGUgb25lIGRlZmluZWQgYXQge31cbicuZm9ybWF0KG9zLnBhdGguam9pbihtYXN0
ZXJfd29ya2RpciwgJ3Bhc3N3b3Jkcy5qc29uJykpCi0gICAgICAgICAgICAgICAgICArICcgICAg
IHBhc3N3b3JkOiAgMTIzNFxuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHdvcmtlcl9y
dW5uZXJzID0gW10KLSAgICAgICAgICAgIGZvciB3b3JrZXIgaW4gZ2V0X2xpc3Rfd29ya2Vycyht
YXN0ZXJfd29ya2Rpcik6Ci0gICAgICAgICAgICAgICAgd29ya2VyX3J1bm5lciA9IG11bHRpcHJv
Y2Vzc2luZy5Qcm9jZXNzKHRhcmdldD1zdGFydF93b3JrZXIsIGFyZ3M9KGJhc2Vfd29ya2Rpcl90
ZW1wLCB3b3JrZXIsKSkKLSAgICAgICAgICAgICAgICB3b3JrZXJfcnVubmVyLnN0YXJ0KCkKLSAg
ICAgICAgICAgICAgICB3b3JrZXJfcnVubmVycy5hcHBlbmQod29ya2VyX3J1bm5lcikKLSAgICAg
ICAgICAgIHByaW50KCcgLSBXb3JrZXJzIHN0YXJ0ZWQhLlxuJwotICAgICAgICAgICAgICAgICAg
KyAnICAgICBDaGVjayB0aGUgbG9nIGZvciBlYWNoIG9uZSBhdCB7fS8ke3dvcmtlci1uYW1lLWlk
fS93b3JrZXIubG9nXG4nLmZvcm1hdChiYXNlX3dvcmtkaXJfdGVtcCkKLSAgICAgICAgICAgICAg
ICAgICsgJyAgICAgdGFpbCAtZiB7fS8qL3dvcmtlci5sb2dcbicuZm9ybWF0KGJhc2Vfd29ya2Rp
cl90ZW1wKSkKLSAgICAgICAgICAgIGZvciB3b3JrZXJfcnVubmVyIGluIHdvcmtlcl9ydW5uZXJz
OgotICAgICAgICAgICAgICAgIHdvcmtlcl9ydW5uZXIuam9pbigpCi0gICAgICAgIG1hc3Rlcl9y
dW5uZXIuam9pbigpCi0gICAgZXhjZXB0OgotICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjKCkK
LSAgICBmaW5hbGx5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIFRoZSBjaGlsZHJlbiBt
YXkgZXhpdCBiZXR3ZWVuIHRoZSBjaGVjayBhbmQgdGhlIGtpbGwgY2FsbC4KLSAgICAgICAgICAg
ICMgSWdub3JlIGFueSBleGNlcHRpb24gcmFpc2VkIGhlcmUuCi0gICAgICAgICAgICBmb3IgYyBp
biBtdWx0aXByb2Nlc3NpbmcuYWN0aXZlX2NoaWxkcmVuKCk6Ci0gICAgICAgICAgICAgICAgIyBT
ZW5kIHRoZSBzaWduYWwgdG8gdGhlIHdob2xlIHByb2Nlc3MgZ3JvdXAuCi0gICAgICAgICAgICAg
ICAgIyBPdGhlcndpc2Ugc29tZSB0d2lzdGQgc3ViLWNoaWxkcyBjYW4gcmVtYWluIGFsaXZlLgot
ICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKGMucGlkKSwgc2lnbmFsLlNJR0tJ
TEwpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgbm90IG5v
X2NsZWFuOgotICAgICAgICAgICAgY2xlYW4oYmFzZV93b3JrZGlyX3RlbXApCi0gICAgICAgIHN5
cy5leGl0KDApCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBwYXJzZXIgPSBh
cmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1jb25m
aWctZGlyJywgaGVscD0nUGF0aCB0byB0aGUgZGlyZWN0b3J5IG9mIHRoZSBidWlsZCBtYXN0ZXIg
Y29uZmlnIGZpbGVzLiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnRGVmYXVscyB0byB0aGUg
ZGlyZWN0b3J5IHdoZXJlIHRoaXMgc2NyaXB0IGlzIGxvY2F0ZWQuJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J2NvbmZpZ2RpcicsIHR5cGU9c3RyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdD1vcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotICAgIHBhcnNlci5hZGRf
YXJndW1lbnQoJy0tYmFzZS10ZW1wLWRpcicsIGhlbHA9J1BhdGggd2hlcmUgdGhlIHRlbXBvcmFs
IHdvcmtpbmcgZGlyZWN0b3J5IHdpbGwgYmUgY3JlYXRlZC4gJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJ05vdGU6IFRvIHRyaWdnZXIgdGVzdCBidWlsZHMgd2l0aCB0aGUgdGVzdCB3b3JrZXJz
IHlvdSBuZWVkIGVub3VnaCBmcmVlIHNwYWNlIG9uIHRoYXQgcGF0aC4nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nYmFzZXRlbXBkaXInLCBkZWZhdWx0PU5vbmUsIHR5cGU9c3RyKQot
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tbm8tY2xlYW4nLCBoZWxwPSdEbyBub3QgY2xlYW4g
dGhlIHRlbXBvcmFsIHdvcmtpbmcgZGlyIG9uIGV4aXQuJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J25vX2NsZWFuJywgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCctLW5vLXdvcmtlcnMnLCBoZWxwPSdEbyBub3Qgc3RhcnQgdGhlIHRlc3Qgd29y
a2Vycy4nLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nbm9fd29ya2VycycsIGFjdGlv
bj0nc3RvcmVfdHJ1ZScpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS11c2Utc3lzdGVtLXZl
cnNpb24nLCBoZWxwPSdJbnN0ZWFkIG9mIHNldHRpbmcgdXAgYSB2aXJ0dWFsZW52IHdpdGggdGhl
IGJ1aWxkYm90IHZlcnNpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgJ3VzZWQgYnkgYnVp
bGQud2Via2l0Lm9yZywgdXNlIHRoZSBidWlsZGJvdCB2ZXJzaW9uIGluc3RhbGxlZCBvbiB0aGlz
IHN5c3RlbS4nLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3N5c3RlbV92ZXJz
aW9uJywgYWN0aW9uPSdzdG9yZV90cnVlJykKLSAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3Mo
KQotICAgIG1haW4oYXJncy5jb25maWdkaXIsIGFyZ3MuYmFzZXRlbXBkaXIsIGFyZ3Mubm9fY2xl
YW4sIGFyZ3Mubm9fd29ya2VycywgYXJncy51c2Vfc3lzdGVtX3ZlcnNpb24pCgpQcm9wZXJ0eSBj
aGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9ydW4tYnVpbGRib3QtdGVzdC5weQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxl
CiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHMucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvc3RlcHMucHkJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzLnB5CShub25leGlzdGVudCkKQEAgLTEs
MTA3NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotZnJvbSBidWlsZGJvdC5wcm9jZXNzIGltcG9ydCBidWlsZHN0ZXAsIGZhY3RvcnksIHByb3Bl
cnRpZXMKLWZyb20gYnVpbGRib3Quc3RlcHMgaW1wb3J0IG1hc3Rlciwgc2hlbGwsIHNvdXJjZSwg
dHJhbnNmZXIsIHRyaWdnZXIKLWZyb20gYnVpbGRib3Quc3RhdHVzLmJ1aWxkZXIgaW1wb3J0IFNV
Q0NFU1MsIEZBSUxVUkUsIFdBUk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04KLQotZnJvbSB0d2lz
dGVkLmludGVybmV0IGltcG9ydCBkZWZlcgotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0
IHNvY2tldAotaW1wb3J0IGpzb24KLWltcG9ydCBjU3RyaW5nSU8KLWltcG9ydCB1cmxsaWIKLQot
QVBQTEVfV0VCS0lUX0FXU19QUk9YWSA9ICJodHRwOi8vcHJveHkwMS53ZWJraXQub3JnOjMxMjgi
Ci1TM1VSTCA9ICJodHRwczovL3MzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tLyIKLVdpdGhQcm9w
ZXJ0aWVzID0gcHJvcGVydGllcy5XaXRoUHJvcGVydGllcwotUkVTVUxUU19XRUJLSVRfVVJMID0g
J2h0dHBzOi8vcmVzdWx0cy53ZWJraXQub3JnJwotUkVTVUxUU19TRVJWRVJfQVBJX0tFWSA9ICdS
RVNVTFRTX1NFUlZFUl9BUElfS0VZJwotQlVJTERfV0VCS0lUX1VSTCA9IHNvY2tldC5nZXRob3N0
bmFtZSgpLnN0cmlwKCkKLQotCi1jbGFzcyBUZXN0V2l0aEZhaWx1cmVDb3VudChzaGVsbC5UZXN0
KToKLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCB0ZXN0JXMgZmFpbGVkIgotCi0g
ICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIDAKLQotICAg
IGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToKLSAgICAgICAgc2hlbGwuVGVzdC5jb21t
YW5kQ29tcGxldGUoc2VsZiwgY21kKQotICAgICAgICBzZWxmLmZhaWxlZFRlc3RDb3VudCA9IHNl
bGYuY291bnRGYWlsdXJlcyhjbWQpCi0gICAgICAgIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZp
eCA9ICIiIGlmIHNlbGYuZmFpbGVkVGVzdENvdW50ID09IDEgZWxzZSAicyIKLQotICAgIGRlZiBl
dmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgaWYgc2VsZi5mYWlsZWRUZXN0Q291
bnQ6Ci0gICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotCi0gICAgICAgIGlmIGNtZC5yYyAhPSAw
OgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gU1VDQ0VTUwot
Ci0gICAgZGVmIGdldFRleHQoc2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNl
bGYuZ2V0VGV4dDIoY21kLCByZXN1bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwg
cmVzdWx0cyk6Ci0gICAgICAgIGlmIHJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgc2VsZi5mYWlsZWRU
ZXN0Q291bnQ6Ci0gICAgICAgICAgICByZXR1cm4gW3NlbGYuZmFpbGVkVGVzdHNGb3JtYXRTdHJp
bmcgJSAoc2VsZi5mYWlsZWRUZXN0Q291bnQsIHNlbGYuZmFpbGVkVGVzdFBsdXJhbFN1ZmZpeCld
Ci0KLSAgICAgICAgcmV0dXJuIFtzZWxmLm5hbWVdCi0KLQotY2xhc3MgQ29uZmlndXJlQnVpbGQo
YnVpbGRzdGVwLkJ1aWxkU3RlcCk6Ci0gICAgbmFtZSA9ICJjb25maWd1cmUtYnVpbGQiCi0gICAg
ZGVzY3JpcHRpb24gPSBbImNvbmZpZ3VyaW5nIGJ1aWxkIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbImNvbmZpZ3VyZWQgYnVpbGQiXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3Jt
LCBjb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmUsIGJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3Vt
ZW50cywgZGV2aWNlX21vZGVsLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICBidWlsZHN0ZXAu
QnVpbGRTdGVwLl9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLSAgICAgICAgc2VsZi5w
bGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIGlmIHBsYXRmb3JtICE9ICdqc2Mtb25seSc6Ci0g
ICAgICAgICAgICBzZWxmLnBsYXRmb3JtID0gcGxhdGZvcm0uc3BsaXQoJy0nLCAxKVswXQotICAg
ICAgICBzZWxmLmZ1bGxQbGF0Zm9ybSA9IHBsYXRmb3JtCi0gICAgICAgIHNlbGYuY29uZmlndXJh
dGlvbiA9IGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBhcmNoaXRl
Y3R1cmUKLSAgICAgICAgc2VsZi5idWlsZE9ubHkgPSBidWlsZE9ubHkKLSAgICAgICAgc2VsZi5h
ZGRpdGlvbmFsQXJndW1lbnRzID0gYWRkaXRpb25hbEFyZ3VtZW50cwotICAgICAgICBzZWxmLmRl
dmljZV9tb2RlbCA9IGRldmljZV9tb2RlbAotICAgICAgICBzZWxmLmFkZEZhY3RvcnlBcmd1bWVu
dHMocGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0
ZWN0dXJlPWFyY2hpdGVjdHVyZSwgYnVpbGRPbmx5PWJ1aWxkT25seSwgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1hZGRpdGlvbmFsQXJndW1lbnRzLCBkZXZpY2VfbW9kZWw9ZGV2aWNlX21vZGVsKQotCi0g
ICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJwbGF0Zm9ybSIs
IHNlbGYucGxhdGZvcm0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImZ1bGxQbGF0Zm9ybSIs
IHNlbGYuZnVsbFBsYXRmb3JtKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJjb25maWd1cmF0
aW9uIiwgc2VsZi5jb25maWd1cmF0aW9uKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCJhcmNo
aXRlY3R1cmUiLCBzZWxmLmFyY2hpdGVjdHVyZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgi
YnVpbGRPbmx5Iiwgc2VsZi5idWlsZE9ubHkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoImFk
ZGl0aW9uYWxBcmd1bWVudHMiLCBzZWxmLmFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoImRldmljZV9tb2RlbCIsIHNlbGYuZGV2aWNlX21vZGVsKQotICAgICAg
ICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoInNsYXZlbmFtZSIpCi0gICAgICAgIGlm
IHdvcmtlcl9uYW1lOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgid29ya2VybmFtZSIs
IHdvcmtlcl9uYW1lKSAgIyBUZW1wb3Jhcnkgd29ya2Fyb3VuZCBmb3Igc3VwcG9ydGluZyBib3Ro
IG9sZGVyIGFuZCBuZXdlciBidWlsZGJvdCB2ZXJzaW9ucy4KLSAgICAgICAgc2VsZi5maW5pc2hl
ZChTVUNDRVNTKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0KLWNsYXNz
IENoZWNrT3V0U291cmNlKHNvdXJjZS5TVk4pOgotICAgIG1vZGUgPSAidXBkYXRlIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydiYXNlVVJMJ10g
PSAiaHR0cHM6Ly9zdm4ud2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC8iCi0gICAgICAgIGt3
YXJnc1snZGVmYXVsdEJyYW5jaCddID0gInRydW5rIgotICAgICAgICBrd2FyZ3NbJ21vZGUnXSA9
IHNlbGYubW9kZQotICAgICAgICBzb3VyY2UuU1ZOLl9faW5pdF9fKHNlbGYsICoqa3dhcmdzKQot
Ci0KLWNsYXNzIEluc3RhbGxXaW4zMkRlcGVuZGVuY2llcyhzaGVsbC5Db21waWxlKToKLSAgICBk
ZXNjcmlwdGlvbiA9IFsiaW5zdGFsbGluZyBkZXBlbmRlbmNpZXMiXQotICAgIGRlc2NyaXB0aW9u
RG9uZSA9IFsiaW5zdGFsbGVkIGRlcGVuZGVuY2llcyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIs
ICIuL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1hdXhpbGlhcnktbGlicyJdCi0KLQotY2xh
c3MgS2lsbE9sZFByb2Nlc3NlcyhzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gImtpbGwtb2xk
LXByb2Nlc3NlcyIKLSAgICBkZXNjcmlwdGlvbiA9IFsia2lsbGluZyBvbGQgcHJvY2Vzc2VzIl0K
LSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImtpbGxlZCBvbGQgcHJvY2Vzc2VzIl0KLSAgICBjb21t
YW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9raWxsLW9sZC1wcm9j
ZXNzZXMiLCAiYnVpbGRib3QiXQotCi0KLWNsYXNzIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24o
c2hlbGwuQ29tcGlsZSk6Ci0gICAgbmFtZSA9ICJ0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9u
IgotICAgIGRlc2NyaXB0aW9uID0gWyJ0cmlnZ2VyaW5nIGNyYXNoIGxvZyBzdWJtaXNzaW9uIl0K
LSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInRyaWdnZXJlZCBjcmFzaCBsb2cgc3VibWlzc2lvbiJd
Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdHJp
Z2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbiJdCi0KLQotY2xhc3MgV2FpdEZvckNyYXNoQ29sbGVj
dGlvbihzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gIndhaXQtZm9yLWNyYXNoLWNvbGxlY3Rp
b24iCi0gICAgZGVzY3JpcHRpb24gPSBbIndhaXRpbmcgZm9yIGNyYXNoIGNvbGxlY3Rpb24gdG8g
cXVpZXNjZSJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJjcmFzaCBjb2xsZWN0aW9uIGhhcyBx
dWllc2NlZCJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbiIsICItLXRpbWVvdXQiLCBzdHIoNSAqIDYw
KV0KLQotCi1jbGFzcyBDbGVhbkJ1aWxkSWZTY2hlZHVsZWQoc2hlbGwuQ29tcGlsZSk6Ci0gICAg
bmFtZSA9ICJkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5IgotICAgIGRlc2NyaXB0aW9uID0g
WyJkZWxldGluZyBXZWJLaXRCdWlsZCBkaXJlY3RvcnkiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9
IFsiZGVsZXRlZCBXZWJLaXRCdWlsZCBkaXJlY3RvcnkiXQotICAgIGNvbW1hbmQgPSBbInB5dGhv
biIsICIuL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2NsZWFuLWJ1aWxkIiwgV2l0aFByb3BlcnRp
ZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNv
bmZpZ3VyYXRpb24pcyIpXQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBpZiBub3Qg
c2VsZi5nZXRQcm9wZXJ0eSgnaXNfY2xlYW4nKToKLSAgICAgICAgICAgIHNlbGYuaGlkZVN0ZXBJ
ZiA9IFRydWUKLSAgICAgICAgICAgIHJldHVybiBTS0lQUEVECi0gICAgICAgIHJldHVybiBzaGVs
bC5Db21waWxlLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgRGVsZXRlU3RhbGVCdWlsZEZpbGVzKHNo
ZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAiZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzIgotICAg
IGRlc2NyaXB0aW9uID0gWyJkZWxldGluZyBzdGFsZSBidWlsZCBmaWxlcyJdCi0gICAgZGVzY3Jp
cHRpb25Eb25lID0gWyJkZWxldGVkIHN0YWxlIGJ1aWxkIGZpbGVzIl0KLSAgICBjb21tYW5kID0g
WyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9kZWxldGUtc3RhbGUtYnVpbGQt
ZmlsZXMiLCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdp
dGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLSAgICBkZWYgc3RhcnQoc2Vs
Zik6Ci0gICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2lzX2NsZWFuJyk6ICAjIE5vdGhpbmcg
dG8gYmUgZG9uZSBpZiBXZWJLaXRCdWlsZCBoYWQgYmVlbiByZW1vdmVkLgotICAgICAgICAgICAg
c2VsZi5oaWRlU3RlcElmID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIFNLSVBQRUQKLSAgICAg
ICAgcmV0dXJuIHNoZWxsLkNvbXBpbGUuc3RhcnQoc2VsZikKLQotCi1jbGFzcyBJbnN0YWxsV2lu
Q2Fpcm9EZXBlbmRlbmNpZXMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3dpbmNh
aXJvLXJlcXVpcmVtZW50cycKLSAgICBkZXNjcmlwdGlvbiA9IFsndXBkYXRpbmcgd2luY2Fpcm8g
ZGVwZW5kZW5jaWVzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ3VwZGF0ZWQgd2luY2Fpcm8g
ZGVwZW5kZW5jaWVzJ10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnLi9Ub29scy9TY3JpcHRz
L3VwZGF0ZS13ZWJraXQtd2luY2Fpcm8tbGlicy5weSddCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRy
dWUKLQotCi1jbGFzcyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNoZWxsLlNoZWxsQ29tbWFuZCk6
Ci0gICAgbmFtZSA9ICJqaGJ1aWxkIgotICAgIGRlc2NyaXB0aW9uID0gWyJ1cGRhdGluZyBndGsg
ZGVwZW5kZW5jaWVzIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInVwZGF0ZWQgZ3RrIGRlcGVu
ZGVuY2llcyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1NjcmlwdHMvdXBkYXRl
LXdlYmtpdGd0ay1saWJzIiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0K
LSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0KLWNsYXNzIEluc3RhbGxXcGVEZXBlbmRlbmNp
ZXMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gImpoYnVpbGQiCi0gICAgZGVzY3Jp
cHRpb24gPSBbInVwZGF0aW5nIHdwZSBkZXBlbmRlbmNpZXMiXQotICAgIGRlc2NyaXB0aW9uRG9u
ZSA9IFsidXBkYXRlZCB3cGUgZGVwZW5kZW5jaWVzIl0KLSAgICBjb21tYW5kID0gWyJwZXJsIiwg
Ii4vVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0d3BlLWxpYnMiLCBXaXRoUHJvcGVydGllcygi
LS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLQotZGVm
IGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Moc3RlcCwgcGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSk6Ci0g
ICAgaWYgcGxhdGZvcm0gbm90IGluICgnZ3RrJywgJ3dpbmNhaXJvJywgJ2lvcycsICdqc2Mtb25s
eScsICd3cGUnLCAncGxheXN0YXRpb24nLCAndHZvcycsICd3YXRjaG9zJywpOgotICAgICAgICBy
ZXR1cm4KLSAgICBpZiAnc2ltdWxhdG9yJyBpbiBmdWxsUGxhdGZvcm06Ci0gICAgICAgIHBsYXRm
b3JtID0gcGxhdGZvcm0gKyAnLXNpbXVsYXRvcicKLSAgICBlbGlmIHBsYXRmb3JtIGluIFsnaW9z
JywgJ3R2b3MnLCAnd2F0Y2hvcyddOgotICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtICsgJy1k
ZXZpY2UnCi0gICAgc3RlcC5zZXRDb21tYW5kKHN0ZXAuY29tbWFuZCArIFsnLS0nICsgcGxhdGZv
cm1dKQotCi0KLWRlZiBhcHBlbmRDdXN0b21UZXN0aW5nRmxhZ3Moc3RlcCwgcGxhdGZvcm0sIGRl
dmljZV9tb2RlbCk6Ci0gICAgaWYgcGxhdGZvcm0gbm90IGluICgnZ3RrJywgJ3dpbmNhaXJvJywg
J2lvcycsICdqc2Mtb25seScsICd3cGUnKToKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgZGV2aWNl
X21vZGVsID09ICdpcGhvbmUnOgotICAgICAgICBkZXZpY2VfbW9kZWwgPSAnaXBob25lLXNpbXVs
YXRvcicKLSAgICBlbGlmIGRldmljZV9tb2RlbCA9PSAnaXBhZCc6Ci0gICAgICAgIGRldmljZV9t
b2RlbCA9ICdpcGFkLXNpbXVsYXRvcicKLSAgICBlbHNlOgotICAgICAgICBkZXZpY2VfbW9kZWwg
PSBwbGF0Zm9ybQotICAgIHN0ZXAuc2V0Q29tbWFuZChzdGVwLmNvbW1hbmQgKyBbJy0tJyArIGRl
dmljZV9tb2RlbF0pCi0KLQotY2xhc3MgQ29tcGlsZVdlYktpdChzaGVsbC5Db21waWxlKToKLSAg
ICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQiLCBXaXRo
UHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotICAgIGVudiA9IHsnTUZMQUdTJzog
Jyd9Ci0gICAgbmFtZSA9ICJjb21waWxlLXdlYmtpdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsiY29t
cGlsaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImNvbXBpbGVkIl0KLSAgICB3YXJuaW5n
UGF0dGVybiA9ICIuKmFybmluZzogLioiCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
IHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICBidWlsZE9u
bHkgPSBzZWxmLmdldFByb3BlcnR5KCdidWlsZE9ubHknKQotICAgICAgICBhcmNoaXRlY3R1cmUg
PSBzZWxmLmdldFByb3BlcnR5KCdhcmNoaXRlY3R1cmUnKQotICAgICAgICBhZGRpdGlvbmFsQXJn
dW1lbnRzID0gc2VsZi5nZXRQcm9wZXJ0eSgnYWRkaXRpb25hbEFyZ3VtZW50cycpCi0KLSAgICAg
ICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChz
ZWxmLmNvbW1hbmQgKyBhZGRpdGlvbmFsQXJndW1lbnRzKQotICAgICAgICBpZiBwbGF0Zm9ybSBp
biAoJ21hYycsICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykgYW5kIGFyY2hpdGVjdHVyZToKLSAg
ICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJ0FSQ0hTPScgKyBhcmNo
aXRlY3R1cmVdKQotICAgICAgICAgICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZvcycsICd3
YXRjaG9zJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCAr
IFsnT05MWV9BQ1RJVkVfQVJDSD1OTyddKQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiAoJ21hYycs
ICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykgYW5kIGJ1aWxkT25seToKLSAgICAgICAgICAgICMg
Rm9yIGJ1aWxkLW9ubHkgYm90cywgdGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGVzdHMgd2lsbCBi
ZSBydW4gb24gc2VwYXJhdGUgbWFjaGluZXMsCi0gICAgICAgICAgICAjIHNvIHdlIG5lZWQgdG8g
cGFja2FnZSBkZWJ1ZyBpbmZvIGFzIGRTWU1zLiBPbmx5IGdlbmVyYXRpbmcgbGluZSB0YWJsZXMg
bWFrZXMKLSAgICAgICAgICAgICMgdGhpcyBtdWNoIGZhc3RlciB0aGFuIGZ1bGwgZGVidWcgaW5m
bywgYW5kIGNyYXNoIGxvZ3Mgc3RpbGwgaGF2ZSBsaW5lIG51bWJlcnMuCi0gICAgICAgICAgICBz
ZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydERUJVR19JTkZPUk1BVElPTl9GT1JNQVQ9
ZHdhcmYtd2l0aC1kc3ltJ10pCi0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21t
YW5kICsgWydDTEFOR19ERUJVR19JTkZPUk1BVElPTl9MRVZFTD1saW5lLXRhYmxlcy1vbmx5J10p
Ci0KLSAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBwbGF0Zm9ybSwgc2VsZi5n
ZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJykpCi0KLSAgICAgICAgcmV0dXJuIHNoZWxsLkNvbXBp
bGUuc3RhcnQoc2VsZikKLQotICAgIGRlZiBjcmVhdGVTdW1tYXJ5KHNlbGYsIGxvZyk6Ci0gICAg
ICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICBpZiBw
bGF0Zm9ybS5zdGFydHN3aXRoKCdtYWMnKToKLSAgICAgICAgICAgIHdhcm5pbmdzID0gW10KLSAg
ICAgICAgICAgIGVycm9ycyA9IFtdCi0gICAgICAgICAgICBzaW8gPSBjU3RyaW5nSU8uU3RyaW5n
SU8obG9nLmdldFRleHQoKSkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNpby5yZWFkbGluZXMo
KToKLSAgICAgICAgICAgICAgICBpZiAiYXJuaW5nOiIgaW4gbGluZToKLSAgICAgICAgICAgICAg
ICAgICAgd2FybmluZ3MuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICAgICAgaWYgInJyb3I6IiBp
biBsaW5lOgotICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKGxpbmUpCi0gICAgICAg
ICAgICBpZiB3YXJuaW5nczoKLSAgICAgICAgICAgICAgICBzZWxmLmFkZENvbXBsZXRlTG9nKCd3
YXJuaW5ncycsICIiLmpvaW4od2FybmluZ3MpKQotICAgICAgICAgICAgaWYgZXJyb3JzOgotICAg
ICAgICAgICAgICAgIHNlbGYuYWRkQ29tcGxldGVMb2coJ2Vycm9ycycsICIiLmpvaW4oZXJyb3Jz
KSkKLQotCi1jbGFzcyBDb21waWxlTExJTlRDTG9vcChDb21waWxlV2ViS2l0KToKLSAgICBjb21t
YW5kID0gWyJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MiLCAiLS1jbG9vcCIsIFdp
dGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLQotY2xhc3MgQ29tcGlsZTMy
Yml0SlNDKENvbXBpbGVXZWJLaXQpOgotICAgIGNvbW1hbmQgPSBbInBlcmwiLCAiLi9Ub29scy9T
Y3JpcHRzL2J1aWxkLWpzYyIsICItLTMyLWJpdCIsIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmln
dXJhdGlvbilzIildCi0KLQotY2xhc3MgQ29tcGlsZUpTQ09ubHkoQ29tcGlsZVdlYktpdCk6Ci0g
ICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjIiwgV2l0aFBy
b3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotCi1jbGFzcyBBcmNoaXZlQnVpbHRQ
cm9kdWN0KHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4v
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlIiwKLSAgICAgICAg
ICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0
aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFyY2hpdmUiXQotICAgIG5hbWUg
PSAiYXJjaGl2ZS1idWlsdC1wcm9kdWN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJhcmNoaXZpbmcg
YnVpbHQgcHJvZHVjdCJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJhcmNoaXZlZCBidWlsdCBw
cm9kdWN0Il0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0KLWNsYXNzIEFyY2hpdmVNaW5p
ZmllZEJ1aWx0UHJvZHVjdChBcmNoaXZlQnVpbHRQcm9kdWN0KToKLSAgICBjb21tYW5kID0gWyJw
eXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUi
LAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZv
cm0pcyIpLCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiYXJjaGl2ZSIs
ICItLW1pbmlmeSJdCi0KLQotY2xhc3MgR2VuZXJhdGVKU0NCdW5kbGUoc2hlbGwuU2hlbGxDb21t
YW5kKToKLSAgICBjb21tYW5kID0gWyIuL1Rvb2xzL1NjcmlwdHMvZ2VuZXJhdGUtYnVuZGxlIiwg
Ii0tYnVpbGRlci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUpcyIpLAotICAg
ICAgICAgICAgICAgIi0tYnVuZGxlPWpzYyIsICItLXN5c2xpYnM9YnVuZGxlLWFsbCIsIFdpdGhQ
cm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwKLSAgICAgICAgICAgICAg
IFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksIFdpdGhQcm9wZXJ0aWVzKCIt
LXJldmlzaW9uPSUoZ290X3JldmlzaW9uKXMiKSwKLSAgICAgICAgICAgICAgICItLXJlbW90ZS1j
b25maWctZmlsZSIsICIuLi8uLi9yZW1vdGUtanNjLWJ1bmRsZS11cGxvYWQtY29uZmlnLmpzb24i
XQotICAgIG5hbWUgPSAiZ2VuZXJhdGUtanNjLWJ1bmRsZSIKLSAgICBkZXNjcmlwdGlvbiA9IFsi
Z2VuZXJhdGluZyBqc2MgYnVuZGxlIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImdlbmVyYXRl
ZCBqc2MgYnVuZGxlIl0KLSAgICBoYWx0T25GYWlsdXJlID0gRmFsc2UKLQotCi1jbGFzcyBHZW5l
cmF0ZU1pbmlCcm93c2VyQnVuZGxlKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9
IFsiLi9Ub29scy9TY3JpcHRzL2dlbmVyYXRlLWJ1bmRsZSIsICItLWJ1aWxkZXItbmFtZSIsIFdp
dGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgICItLWJ1bmRs
ZT1NaW5pQnJvd3NlciIsIFdpdGhQcm9wZXJ0aWVzKCItLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3Jt
KXMiKSwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilz
IiksIFdpdGhQcm9wZXJ0aWVzKCItLXJldmlzaW9uPSUoZ290X3JldmlzaW9uKXMiKSwKLSAgICAg
ICAgICAgICAgICItLXJlbW90ZS1jb25maWctZmlsZSIsICIuLi8uLi9yZW1vdGUtbWluaWJyb3dz
ZXItYnVuZGxlLXVwbG9hZC1jb25maWcuanNvbiJdCi0gICAgbmFtZSA9ICJnZW5lcmF0ZS1taW5p
YnJvd3Nlci1idW5kbGUiCi0gICAgZGVzY3JpcHRpb24gPSBbImdlbmVyYXRpbmcgbWluaWJyb3dz
ZXIgYnVuZGxlIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImdlbmVyYXRlZCBtaW5pYnJvd3Nl
ciBidW5kbGUiXQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotCi0KLWNsYXNzIEV4dHJhY3RC
dWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24i
LCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAotICAg
ICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIp
LCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiZXh0cmFjdCJdCi0gICAg
bmFtZSA9ICJleHRyYWN0LWJ1aWx0LXByb2R1Y3QiCi0gICAgZGVzY3JpcHRpb24gPSBbImV4dHJh
Y3RpbmcgYnVpbHQgcHJvZHVjdCJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJleHRyYWN0ZWQg
YnVpbHQgcHJvZHVjdCJdCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotCi1jbGFzcyBVcGxv
YWRCdWlsdFByb2R1Y3QodHJhbnNmZXIuRmlsZVVwbG9hZCk6Ci0gICAgd29ya2Vyc3JjID0gV2l0
aFByb3BlcnRpZXMoIldlYktpdEJ1aWxkLyUoY29uZmlndXJhdGlvbilzLnppcCIpCi0gICAgbWFz
dGVyZGVzdCA9IFdpdGhQcm9wZXJ0aWVzKCJhcmNoaXZlcy8lKGZ1bGxQbGF0Zm9ybSlzLSUoYXJj
aGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShnb3RfcmV2aXNpb24pcy56aXAiKQotICAg
IGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
OgotICAgICAgICBrd2FyZ3NbJ3NsYXZlc3JjJ10gPSBzZWxmLndvcmtlcnNyYwotICAgICAgICBr
d2FyZ3NbJ21hc3RlcmRlc3QnXSA9IHNlbGYubWFzdGVyZGVzdAotICAgICAgICBrd2FyZ3NbJ21v
ZGUnXSA9IDBvNjQ0Ci0gICAgICAgIGt3YXJnc1snYmxvY2tzaXplJ10gPSAxMDI0ICogMjU2Ci0g
ICAgICAgIHRyYW5zZmVyLkZpbGVVcGxvYWQuX19pbml0X18oc2VsZiwgKiprd2FyZ3MpCi0KLQot
Y2xhc3MgVXBsb2FkTWluaWZpZWRCdWlsdFByb2R1Y3QoVXBsb2FkQnVpbHRQcm9kdWN0KToKLSAg
ICB3b3JrZXJzcmMgPSBXaXRoUHJvcGVydGllcygiV2ViS2l0QnVpbGQvbWluaWZpZWQtJShjb25m
aWd1cmF0aW9uKXMuemlwIikKLSAgICBtYXN0ZXJkZXN0ID0gV2l0aFByb3BlcnRpZXMoImFyY2hp
dmVzLyUoZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy9t
aW5pZmllZC0lKGdvdF9yZXZpc2lvbilzLnppcCIpCi0KLQotY2xhc3MgRG93bmxvYWRCdWlsdFBy
b2R1Y3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0IiwKLSAgICAgICAg
V2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShwbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVz
KCItLSUoY29uZmlndXJhdGlvbilzIiksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKFMzVVJMICsg
ImFyY2hpdmVzLndlYmtpdC5vcmcvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUo
Y29uZmlndXJhdGlvbilzLyUoZ290X3JldmlzaW9uKXMuemlwIildCi0gICAgbmFtZSA9ICJkb3du
bG9hZC1idWlsdC1wcm9kdWN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJkb3dubG9hZGluZyBidWls
dCBwcm9kdWN0Il0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRvd25sb2FkZWQgYnVpbHQgcHJv
ZHVjdCJdCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLSAgICBmbHVua09uRmFpbHVyZSA9IFRy
dWUKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgaWYgJ2FwcGxlJyBpbiBzZWxmLmdl
dFByb3BlcnR5KCdidWlsZGVybmFtZScpLmxvd2VyKCk6Ci0gICAgICAgICAgICBzZWxmLnNsYXZl
RW52aXJvbm1lbnRbJ0hUVFBTX1BST1hZJ10gPSBBUFBMRV9XRUJLSVRfQVdTX1BST1hZICAjIGN1
cmwgZW52IHZhciB0byB1c2UgYSBwcm94eQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21t
YW5kLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhUZXN0V2l0
aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9ICJqc2NvcmUtdGVzdCIKLSAgICBkZXNjcmlwdGlv
biA9IFsianNjb3JlLXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsianNj
b3JlLXRlc3RzIl0KLSAgICBqc29uRmlsZU5hbWUgPSAianNjX3Jlc3VsdHMuanNvbiIKLSAgICBj
b21tYW5kID0gWwotICAgICAgICAicGVybCIsICIuL1Rvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3Jp
cHRjb3JlLXRlc3RzIiwKLSAgICAgICAgIi0tbm8tYnVpbGQiLCAiLS1uby1mYWlsLWZhc3QiLAot
ICAgICAgICAiLS1qc29uLW91dHB1dD17MH0iLmZvcm1hdChqc29uRmlsZU5hbWUpLAotICAgICAg
ICBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLAotICAgICAgICAiLS1idWls
ZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICIt
LWJ1aWxkLW51bWJlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAg
ICAgIi0tYnVpbGRib3Qtd29ya2VyIiwgV2l0aFByb3BlcnRpZXMoIiUod29ya2VybmFtZSlzIiks
Ci0gICAgICAgICItLWJ1aWxkYm90LW1hc3RlciIsIEJVSUxEX1dFQktJVF9VUkwsCi0gICAgICAg
ICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VSTCwKLSAgICBdCi0gICAgZmFpbGVkVGVzdHNG
b3JtYXRTdHJpbmcgPSAiJWQgSlNDIHRlc3QlcyBmYWlsZWQiCi0gICAgbG9nZmlsZXMgPSB7Impz
b24iOiBqc29uRmlsZU5hbWV9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAga3dhcmdzWydsb2dFbnZpcm9uJ10gPSBGYWxzZQotICAgICAgICBUZXN0
V2l0aEZhaWx1cmVDb3VudC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0KLSAgICBk
ZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2xhdmVFbnZpcm9ubWVudFtSRVNVTFRTX1NF
UlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNVTFRTX1NFUlZFUl9BUElfS0VZKQotICAgICAg
ICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAgICAgICAgYXJjaGl0
ZWN0dXJlID0gc2VsZi5nZXRQcm9wZXJ0eSgiYXJjaGl0ZWN0dXJlIikKLSAgICAgICAgIyBDdXJy
ZW50bHkgcnVuLWphdmFzY3JpcHRjb3JlLXRlc3QgZG9lc24ndCBzdXBwb3J0IHJ1biBqYXZhc2Ny
aXB0IGNvcmUgdGVzdCBiaW5hcmllcyBsaXN0IGJlbG93IHJlbW90ZWx5Ci0gICAgICAgIGlmIGFy
Y2hpdGVjdHVyZSBpbiBbJ21pcHMnLCAnYXJtdjcnLCAnYWFyY2g2NCddOgotICAgICAgICAgICAg
c2VsZi5jb21tYW5kICs9IFsnLS1uby10ZXN0bWFzbScsICctLW5vLXRlc3RhaXInLCAnLS1uby10
ZXN0YjMnLCAnLS1uby10ZXN0ZGZnJywgJy0tbm8tdGVzdGFwaSddCi0gICAgICAgICMgTGludXgg
Ym90cyBoYXZlIGN1cnJlbnRseSBwcm9ibGVtcyB3aXRoIEpTQyB0ZXN0cyB0aGF0IHRyeSB0byB1
c2UgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCi0gICAgICAgICMgQ2hlY2s6IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUxNDAKLSAgICAgICAgaWYgcGxhdGZvcm0g
aW4gKCdndGsnLCAnd3BlJywgJ2pzYy1vbmx5Jyk6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1h
bmQoc2VsZi5jb21tYW5kICsgWyctLW1lbW9yeS1saW1pdGVkJywgJy0tdmVyYm9zZSddKQotICAg
ICAgICAjIFdpbkNhaXJvIHVzZXMgdGhlIFdpbmRvd3MgY29tbWFuZCBwcm9tcHQsIG5vdCBDeWd3
aW4uCi0gICAgICAgIGVsaWYgcGxhdGZvcm0gPT0gJ3dpbmNhaXJvJzoKLSAgICAgICAgICAgIHNl
bGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tdGVzdC13cml0ZXI9cnVieSddKQotCi0g
ICAgICAgIGFwcGVuZEN1c3RvbUJ1aWxkRmxhZ3Moc2VsZiwgcGxhdGZvcm0sIHNlbGYuZ2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScpKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChz
ZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4
dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICBjb3VudCA9IDAKLQotICAg
ICAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ15SZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOlxy
P1xuXHMrKFxkKykgZmFpbHVyZScsIGxvZ1RleHQsIHJlLk1VTFRJTElORSkKLSAgICAgICAgaWYg
bWF0Y2g6Ci0gICAgICAgICAgICBjb3VudCArPSBpbnQobWF0Y2guZ3JvdXAoMSkpCi0KLSAgICAg
ICAgbWF0Y2ggPSByZS5zZWFyY2gocidSZXN1bHRzIGZvciBKU0MgdGVzdCBiaW5hcmllczpccj9c
blxzKyhcZCspIGZhaWx1cmUnLCBsb2dUZXh0LCByZS5NVUxUSUxJTkUpCi0gICAgICAgIGlmIG1h
dGNoOgotICAgICAgICAgICAgY291bnQgKz0gaW50KG1hdGNoLmdyb3VwKDEpKQotCi0gICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKHInXlJlc3VsdHMgZm9yIE1vemlsbGEgdGVzdHM6XHI/XG5ccyso
XGQrKSByZWdyZXNzaW9uJywgbG9nVGV4dCwgcmUuTVVMVElMSU5FKQotICAgICAgICBpZiBtYXRj
aDoKLSAgICAgICAgICAgIGNvdW50ICs9IGludChtYXRjaC5ncm91cCgxKSkKLQotICAgICAgICBy
ZXR1cm4gY291bnQKLQotCi1jbGFzcyBSdW5SZW1vdGVKYXZhU2NyaXB0Q29yZVRlc3RzKFJ1bkph
dmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5z
ZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1yZW1vdGUtY29uZmlnLWZpbGUiLCAiLi4vLi4v
cmVtb3RlLWpzYy10ZXN0cy1jb25maWcuanNvbiJdKQotICAgICAgICByZXR1cm4gUnVuSmF2YVNj
cmlwdENvcmVUZXN0cy5zdGFydChzZWxmKQotCi0KLWNsYXNzIFJ1blRlc3QyNjJUZXN0cyhUZXN0
V2l0aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9ICJ0ZXN0MjYyLXRlc3QiCi0gICAgZGVzY3Jp
cHRpb24gPSBbInRlc3QyNjItdGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0g
WyJ0ZXN0MjYyLXRlc3RzIl0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCBUZXN0
MjYyIHRlc3QlcyBmYWlsZWQiCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1Njcmlw
dHMvdGVzdDI2Mi1ydW5uZXIiLCAiLS12ZXJib3NlIiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25m
aWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgYXBwZW5kQ3Vz
dG9tQnVpbGRGbGFncyhzZWxmLCBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpLCBzZWxmLmdl
dFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nKSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3Rh
cnQoc2VsZikKLQotICAgIGRlZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxv
Z1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkKLSAgICAgICAgbWF0Y2hlcyA9IHJl
LmZpbmRhbGwocideXCEgTkVXIEZBSUwnLCBsb2dUZXh0LCBmbGFncz1yZS5NVUxUSUxJTkUpCi0g
ICAgICAgIGlmIG1hdGNoZXM6Ci0gICAgICAgICAgICByZXR1cm4gbGVuKG1hdGNoZXMpCi0gICAg
ICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVuV2ViS2l0VGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAg
bmFtZSA9ICJsYXlvdXQtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsibGF5b3V0LXRlc3RzIHJ1
bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsibGF5b3V0LXRlc3RzIl0KLSAgICByZXN1
bHREaXJlY3RvcnkgPSAibGF5b3V0LXRlc3QtcmVzdWx0cyIKLSAgICBjb21tYW5kID0gWyJweXRo
b24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMiLAotICAgICAgICAgICAgICAg
Ii0tbm8tYnVpbGQiLAotICAgICAgICAgICAgICAgIi0tbm8tc2hvdy1yZXN1bHRzIiwKLSAgICAg
ICAgICAgICAgICItLW5vLW5ldy10ZXN0LXJlc3VsdHMiLAotICAgICAgICAgICAgICAgIi0tY2xv
YmJlci1vbGQtcmVzdWx0cyIsCi0gICAgICAgICAgICAgICAiLS1idWlsZGVyLW5hbWUiLCBXaXRo
UHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICAgICAgICAiLS1idWlsZC1u
dW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWlsZG51bWJlcilzIiksCi0gICAgICAgICAgICAg
ICAiLS1idWlsZGJvdC13b3JrZXIiLCBXaXRoUHJvcGVydGllcygiJSh3b3JrZXJuYW1lKXMiKSwK
LSAgICAgICAgICAgICAgICItLW1hc3Rlci1uYW1lIiwgIndlYmtpdC5vcmciLAotICAgICAgICAg
ICAgICAgIi0tYnVpbGRib3QtbWFzdGVyIiwgQlVJTERfV0VCS0lUX1VSTCwKLSAgICAgICAgICAg
ICAgICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VSTCwKLSAgICAgICAgICAgICAgICItLWV4
aXQtYWZ0ZXItbi1jcmFzaGVzLW9yLXRpbWVvdXRzIiwgIjUwIiwKLSAgICAgICAgICAgICAgICIt
LWV4aXQtYWZ0ZXItbi1mYWlsdXJlcyIsICI1MDAiLAotICAgICAgICAgICAgICAgV2l0aFByb3Bl
cnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKV0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ2xvZ0Vudmlyb24nXSA9IEZhbHNlCi0g
ICAgICAgIHNoZWxsLlRlc3QuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAg
ZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNsYXZlRW52aXJvbm1lbnRbUkVTVUxUU19T
RVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVTVUxUU19TRVJWRVJfQVBJX0tFWSkKLQotICAg
ICAgICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAgICAgICAgYXBw
ZW5kQ3VzdG9tVGVzdGluZ0ZsYWdzKHNlbGYsIHBsYXRmb3JtLCBzZWxmLmdldFByb3BlcnR5KCdk
ZXZpY2VfbW9kZWwnKSkKLSAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA9IHNlbGYuZ2V0UHJv
cGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnKQotCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChz
ZWxmLmNvbW1hbmQgKyBbIi0tcmVzdWx0cy1kaXJlY3RvcnkiLCBzZWxmLnJlc3VsdERpcmVjdG9y
eV0pCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tZGVidWctcnd0
LWxvZ2dpbmcnXSkKLQotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAid2luIjoKLSAgICAgICAgICAg
IHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJy0tYmF0Y2gtc2l6ZScsICcxMDAnLCAn
LS1yb290PScgKyBvcy5wYXRoLmpvaW4oIldlYktpdEJ1aWxkIiwgc2VsZi5nZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicpLCAiYmluNjQiKV0pCi0KLSAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3Vt
ZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBhZGRpdGlv
bmFsQXJndW1lbnRzKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0g
ICAgIyBGSVhNRTogVGhpcyB3aWxsIGJyZWFrIGlmIHJ1bi13ZWJraXQtdGVzdHMgY2hhbmdlcyBp
dHMgZGVmYXVsdCBsb2cgZm9ybWF0dGVyLgotICAgIG5yd3RfbG9nX21lc3NhZ2VfcmVnZXhwID0g
cmUuY29tcGlsZShyJ1xkezJ9OlxkezJ9OlxkezJ9KFwuXGQrKT9ccytcZCtccysoP1A8bWVzc2Fn
ZT4uKiknKQotCi0gICAgZGVmIF9zdHJpcF9weXRob25fbG9nZ2luZ19wcmVmaXgoc2VsZiwgbGlu
ZSk6Ci0gICAgICAgIG1hdGNoX29iamVjdCA9IHNlbGYubnJ3dF9sb2dfbWVzc2FnZV9yZWdleHAu
bWF0Y2gobGluZSkKLSAgICAgICAgaWYgbWF0Y2hfb2JqZWN0OgotICAgICAgICAgICAgcmV0dXJu
IG1hdGNoX29iamVjdC5ncm91cCgnbWVzc2FnZScpCi0gICAgICAgIHJldHVybiBsaW5lCi0KLSAg
ICBkZWYgX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQoc2VsZiwgbG9nVGV4dCk6Ci0gICAgICAg
IGluY29ycmVjdExheW91dExpbmVzID0gW10KLSAgICAgICAgZXhwcmVzc2lvbnMgPSBbCi0gICAg
ICAgICAgICAoJ2ZsYWtlcycsIHJlLmNvbXBpbGUocidVbmV4cGVjdGVkIGZsYWtpbmVzcy4rXCgo
XGQrKVwpJykpLAotICAgICAgICAgICAgKCduZXcgcGFzc2VzJywgcmUuY29tcGlsZShyJ0V4cGVj
dGVkIHRvIC4rLCBidXQgcGFzc2VkOlxzK1woKFxkKylcKScpKSwKLSAgICAgICAgICAgICgnbWlz
c2luZyByZXN1bHRzJywgcmUuY29tcGlsZShyJ1JlZ3Jlc3Npb25zOiBVbmV4cGVjdGVkIG1pc3Np
bmcgcmVzdWx0c1xzK1woKFxkKylcKScpKSwKLSAgICAgICAgICAgICgnZmFpbHVyZXMnLCByZS5j
b21waWxlKHInUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQuK1woKFxkKylcKScpKSwKLSAgICAgICAg
XQotICAgICAgICB0ZXN0RmFpbHVyZXMgPSB7fQotCi0gICAgICAgIGZvciBsaW5lIGluIGxvZ1Rl
eHQuc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgaWYgbGluZS5maW5kKCdFeGl0aW5nIGVhcmx5
JykgPj0gMCBvciBsaW5lLmZpbmQoJ2xlYWtzIGZvdW5kJykgPj0gMDoKLSAgICAgICAgICAgICAg
ICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc2VsZi5fc3RyaXBfcHl0aG9uX2xvZ2dpbmdf
cHJlZml4KGxpbmUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3Ig
bmFtZSwgZXhwcmVzc2lvbiBpbiBleHByZXNzaW9uczoKLSAgICAgICAgICAgICAgICBtYXRjaCA9
IGV4cHJlc3Npb24uc2VhcmNoKGxpbmUpCi0KLSAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWx1cmVzW25hbWVdID0gdGVzdEZhaWx1cmVzLmdldChu
YW1lLCAwKSArIGludChtYXRjaC5ncm91cCgxKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LQotICAgICAgICAgICAgICAgICMgRklYTUU6IFBhcnNlIGZpbGUgbmFtZXMgYW5kIHB1dCB0aGVt
IGluIHJlc3VsdHMKLQotICAgICAgICBmb3IgbmFtZSBpbiB0ZXN0RmFpbHVyZXM6Ci0gICAgICAg
ICAgICBpbmNvcnJlY3RMYXlvdXRMaW5lcy5hcHBlbmQoc3RyKHRlc3RGYWlsdXJlc1tuYW1lXSkg
KyAnICcgKyBuYW1lKQotCi0gICAgICAgIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXMgPSBpbmNv
cnJlY3RMYXlvdXRMaW5lcwotCi0gICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgot
ICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCi0KLSAgICAgICAg
bG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdldFRleHQoKQotICAgICAgICBzZWxmLl9wYXJz
ZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5k
KHNlbGYsIGNtZCk6Ci0gICAgICAgIHJlc3VsdCA9IFNVQ0NFU1MKLQotICAgICAgICBpZiBzZWxm
LmluY29ycmVjdExheW91dExpbmVzOgotICAgICAgICAgICAgaWYgbGVuKHNlbGYuaW5jb3JyZWN0
TGF5b3V0TGluZXMpID09IDE6Ci0gICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuaW5jb3JyZWN0
TGF5b3V0TGluZXNbMF0KLSAgICAgICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ3dlcmUgbmV3Jykg
Pj0gMCBvciBsaW5lLmZpbmQoJ3dhcyBuZXcnKSA+PSAwIG9yIGxpbmUuZmluZCgnIGxlYWsnKSA+
PSAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gV0FSTklOR1MKLQotICAgICAgICAgICAg
Zm9yIGxpbmUgaW4gc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lczoKLSAgICAgICAgICAgICAgICBp
ZiBsaW5lLmZpbmQoJ2ZsYWtlcycpID49IDAgb3IgbGluZS5maW5kKCduZXcgcGFzc2VzJykgPj0g
MCBvciBsaW5lLmZpbmQoJ21pc3NpbmcgcmVzdWx0cycpID49IDA6Ci0gICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IFdBUk5JTkdTCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICAjIFJldHVybiBjb2RlIGZyb20gVG9v
bHMvU2NyaXB0cy9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weS4KLSAgICAgICAgIyBU
aGlzIG1lYW5zIHRoYXQgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQgd2hlbiBydW5uaW5nIHJ1bi13
ZWJraXQtdGVzdHMgYW5kCi0gICAgICAgICMgd2FzIG5ldmVyIGhhbmRsZWQuCi0gICAgICAgIGlm
IGNtZC5yYyA9PSAyNTQ6Ci0gICAgICAgICAgICByZXR1cm4gRVhDRVBUSU9OCi0gICAgICAgIGlm
IGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICByZXR1
cm4gcmVzdWx0Ci0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAg
ICByZXR1cm4gc2VsZi5nZXRUZXh0MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIo
c2VsZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTIGFuZCBz
ZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuaW5jb3Jy
ZWN0TGF5b3V0TGluZXMKLQotICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KLQotCi1jbGFzcyBS
dW5EYXNoYm9hcmRUZXN0cyhSdW5XZWJLaXRUZXN0cyk6Ci0gICAgbmFtZSA9ICJkYXNoYm9hcmQt
dGVzdHMiCi0gICAgZGVzY3JpcHRpb24gPSBbImRhc2hib2FyZC10ZXN0cyBydW5uaW5nIl0KLSAg
ICBkZXNjcmlwdGlvbkRvbmUgPSBbImRhc2hib2FyZC10ZXN0cyJdCi0gICAgcmVzdWx0RGlyZWN0
b3J5ID0gb3MucGF0aC5qb2luKFJ1bldlYktpdFRlc3RzLnJlc3VsdERpcmVjdG9yeSwgImRhc2hi
b2FyZC1sYXlvdXQtdGVzdC1yZXN1bHRzIikKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1sYXlvdXQtdGVzdHMtZGlyZWN0
b3J5IiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvZGFzaGJvYXJkL1NjcmlwdHMvdGVzdHMiXSkKLSAgICAgICAgcmV0dXJuIFJ1
bldlYktpdFRlc3RzLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3MgUnVuQVBJVGVzdHMoVGVzdFdpdGhG
YWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAicnVuLWFwaS10ZXN0cyIKLSAgICBkZXNjcmlwdGlv
biA9IFsiYXBpIHRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiYXBpLXRl
c3RzIl0KLSAgICBqc29uRmlsZU5hbWUgPSAiYXBpX3Rlc3RfcmVzdWx0cy5qc29uIgotICAgIGxv
Z2ZpbGVzID0geyJqc29uIjoganNvbkZpbGVOYW1lfQotICAgIGNvbW1hbmQgPSBbCi0gICAgICAg
ICJweXRob24iLAotICAgICAgICAiLi9Ub29scy9TY3JpcHRzL3J1bi1hcGktdGVzdHMiLAotICAg
ICAgICAiLS1uby1idWlsZCIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXswfSIuZm9ybWF0KGpz
b25GaWxlTmFtZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilz
IiksCi0gICAgICAgICItLXZlcmJvc2UiLAotICAgICAgICAiLS1idWlsZGJvdC1tYXN0ZXIiLCBC
VUlMRF9XRUJLSVRfVVJMLAotICAgICAgICAiLS1idWlsZGVyLW5hbWUiLCBXaXRoUHJvcGVydGll
cygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICItLWJ1aWxkLW51bWJlciIsIFdpdGhQcm9w
ZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAgICAgIi0tYnVpbGRib3Qtd29ya2VyIiwg
V2l0aFByb3BlcnRpZXMoIiUod29ya2VybmFtZSlzIiksCi0gICAgICAgICItLXJlcG9ydCIsIFJF
U1VMVFNfV0VCS0lUX1VSTCwKLSAgICBdCi0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcgPSAi
JWQgYXBpIHRlc3QlcyBmYWlsZWQgb3IgdGltZWQgb3V0IgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snbG9nRW52aXJvbiddID0gRmFs
c2UKLSAgICAgICAgVGVzdFdpdGhGYWlsdXJlQ291bnQuX19pbml0X18oc2VsZiwgKmFyZ3MsICoq
a3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLnNsYXZlRW52aXJv
bm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRlbnYoUkVTVUxUU19TRVJWRVJf
QVBJX0tFWSkKLSAgICAgICAgYXBwZW5kQ3VzdG9tVGVzdGluZ0ZsYWdzKHNlbGYsIHNlbGYuZ2V0
UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0UHJvcGVydHkoJ2RldmljZV9tb2RlbCcpKQot
ICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFp
bHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nX3RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5n
ZXRUZXh0KCkKLQotICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaChyJ1JhbiAoP1A8cmFuPlxkKykg
dGVzdHMgb2YgKD9QPHRvdGFsPlxkKykgd2l0aCAoP1A8cGFzc2VkPlxkKykgc3VjY2Vzc2Z1bCcs
IGxvZ190ZXh0KQotICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gLTEK
LSAgICAgICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgncmFuJykpIC0gaW50KG1hdGNoLmdyb3Vw
KCdwYXNzZWQnKSkKLQotCi1jbGFzcyBSdW5QeXRob25UZXN0cyhUZXN0V2l0aEZhaWx1cmVDb3Vu
dCk6Ci0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQ
cm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICAjIFB5dGhvbiB0ZXN0cyBhcmUgZmxha3kgb24g
dGhlIEdUSyBidWlsZGVycywgcnVubmluZyB0aGVtIHNlcmlhbGx5Ci0gICAgICAgICMgaGVscHMg
YW5kIGRvZXMgbm90IHNpZ25pZmljYW50bHkgcHJvbG9uZyB0aGUgY3ljbGUgdGltZS4KLSAgICAg
ICAgaWYgcGxhdGZvcm0gPT0gJ2d0ayc6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2Vs
Zi5jb21tYW5kICsgWyctLWNoaWxkLXByb2Nlc3NlcycsICcxJ10pCi0gICAgICAgICMgUHl0aG9u
IHRlc3RzIGZhaWwgb24gd2luZG93cyBib3RzIHdoZW4gcnVubmluZyBtb3JlIHRoYW4gb25lIGNo
aWxkIHByb2Nlc3MKLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTc0NjUKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbic6Ci0gICAgICAgICAgICBz
ZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWyctLWNoaWxkLXByb2Nlc3NlcycsICcxJ10p
Ci0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgY291bnRG
YWlsdXJlcyhzZWxmLCBjbWQpOgotICAgICAgICBsb2dUZXh0ID0gY21kLmxvZ3NbJ3N0ZGlvJ10u
Z2V0VGV4dCgpCi0gICAgICAgICMgV2UncmUgbG9va2luZyBmb3IgdGhlIGxpbmUgdGhhdCBsb29r
cyBsaWtlIHRoaXM6IEZBSUxFRCAoZmFpbHVyZXM9MiwgZXJyb3JzPTEpCi0gICAgICAgIHJlZ2V4
ID0gcmUuY29tcGlsZShyJ15GQUlMRUQgXCgoP1A8Y291bnRzPlteKV0rKVwpJykKLSAgICAgICAg
Zm9yIGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBtYXRjaCA9IHJl
Z2V4Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgICAgICAg
ICAgY29udGludWUKLSAgICAgICAgICAgIHJldHVybiBzdW0oaW50KGNvbXBvbmVudC5zcGxpdCgn
PScpWzFdKSBmb3IgY29tcG9uZW50IGluIG1hdGNoLmdyb3VwKCdjb3VudHMnKS5zcGxpdCgnLCAn
KSkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBSdW5XZWJLaXRQeVRlc3RzKFJ1blB5dGhv
blRlc3RzKToKLSAgICBuYW1lID0gIndlYmtpdHB5LXRlc3QiCi0gICAgZGVzY3JpcHRpb24gPSBb
InB5dGhvbi10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInB5dGhvbi10
ZXN0cyJdCi0gICAgY29tbWFuZCA9IFsKLSAgICAgICAgInB5dGhvbiIsCi0gICAgICAgICIuL1Rv
b2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweSIsCi0gICAgICAgICItLXZlcmJvc2UiLAotICAgICAg
ICAiLS1idWlsZGJvdC1tYXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJMLAotICAgICAgICAiLS1idWls
ZGVyLW5hbWUiLCBXaXRoUHJvcGVydGllcygiJShidWlsZGVybmFtZSlzIiksCi0gICAgICAgICIt
LWJ1aWxkLW51bWJlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAg
ICAgIi0tYnVpbGRib3Qtd29ya2VyIiwgV2l0aFByb3BlcnRpZXMoIiUod29ya2VybmFtZSlzIiks
Ci0gICAgICAgICItLXJlcG9ydCIsIFJFU1VMVFNfV0VCS0lUX1VSTCwKLSAgICBdCi0gICAgZmFp
bGVkVGVzdHNGb3JtYXRTdHJpbmcgPSAiJWQgcHl0aG9uIHRlc3QlcyBmYWlsZWQiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydsb2dF
bnZpcm9uJ10gPSBGYWxzZQotICAgICAgICBSdW5QeXRob25UZXN0cy5fX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2xh
dmVFbnZpcm9ubWVudFtSRVNVTFRTX1NFUlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNVTFRT
X1NFUlZFUl9BUElfS0VZKQotICAgICAgICByZXR1cm4gUnVuUHl0aG9uVGVzdHMuc3RhcnQoc2Vs
ZikKLQotCi1jbGFzcyBSdW5MTERCV2ViS2l0VGVzdHMoUnVuUHl0aG9uVGVzdHMpOgotICAgIG5h
bWUgPSAibGxkYi13ZWJraXQtdGVzdCIKLSAgICBkZXNjcmlwdGlvbiA9IFsibGxkYi13ZWJraXQt
dGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJsbGRiLXdlYmtpdC10ZXN0
cyJdCi0gICAgY29tbWFuZCA9IFsKLSAgICAgICAgInB5dGhvbiIsCi0gICAgICAgICIuL1Rvb2xz
L1NjcmlwdHMvdGVzdC1sbGRiLXdlYmtpdCIsCi0gICAgICAgICItLXZlcmJvc2UiLAotICAgICAg
ICAiLS1uby1idWlsZCIsCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlv
bilzIiksCi0gICAgXQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gIiVkIGxsZGIgdGVz
dCVzIGZhaWxlZCIKLQotCi1jbGFzcyBSdW5QZXJsVGVzdHMoVGVzdFdpdGhGYWlsdXJlQ291bnQp
OgotICAgIG5hbWUgPSAid2Via2l0cGVybC10ZXN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJwZXJs
LXRlc3RzIHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsicGVybC10ZXN0cyJdCi0g
ICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRwZXJsIl0K
LSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCBwZXJsIHRlc3QlcyBmYWlsZWQiCi0K
LSAgICBkZWYgY291bnRGYWlsdXJlcyhzZWxmLCBjbWQpOgotICAgICAgICBsb2dUZXh0ID0gY21k
LmxvZ3NbJ3N0ZGlvJ10uZ2V0VGV4dCgpCi0gICAgICAgICMgV2UncmUgbG9va2luZyBmb3IgdGhl
IGxpbmUgdGhhdCBsb29rcyBsaWtlIHRoaXM6IEZhaWxlZCAyLzE5IHRlc3QgcHJvZ3JhbXMuIDUv
MzYzIHN1YnRlc3RzIGZhaWxlZC4KLSAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXkZhaWxl
ZCBcZCsvXGQrIHRlc3QgcHJvZ3JhbXNcLiAoP1A8Y291bnQ+XGQrKS9cZCsgc3VidGVzdHMgZmFp
bGVkXC4nKQotICAgICAgICBmb3IgbGluZSBpbiBsb2dUZXh0LnNwbGl0bGluZXMoKToKLSAgICAg
ICAgICAgIG1hdGNoID0gcmVnZXgubWF0Y2gobGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtYXRj
aDoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmV0dXJuIGludChtYXRj
aC5ncm91cCgnY291bnQnKSkKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBSdW5MTElOVENM
b29wVGVzdHMoVGVzdFdpdGhGYWlsdXJlQ291bnQpOgotICAgIG5hbWUgPSAid2Via2l0LWpzYy1j
bG9vcC10ZXN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJjbG9vcC10ZXN0cyBydW5uaW5nIl0KLSAg
ICBkZXNjcmlwdGlvbkRvbmUgPSBbImNsb29wLXRlc3RzIl0KLSAgICBqc29uRmlsZU5hbWUgPSAi
anNjX2Nsb29wLmpzb24iCi0gICAgY29tbWFuZCA9IFsKLSAgICAgICAgInBlcmwiLCAiLi9Ub29s
cy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIsCi0gICAgICAgICItLWNsb29wIiwg
Ii0tbm8tYnVpbGQiLAotICAgICAgICAiLS1uby1qc2Mtc3RyZXNzIiwgIi0tbm8tZmFpbC1mYXN0
IiwKLSAgICAgICAgIi0tanNvbi1vdXRwdXQ9ezB9Ii5mb3JtYXQoanNvbkZpbGVOYW1lKSwKLSAg
ICAgICAgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwKLSAgICAgICAgIi0t
YnVpbGRlci1uYW1lIiwgV2l0aFByb3BlcnRpZXMoIiUoYnVpbGRlcm5hbWUpcyIpLAotICAgICAg
ICAiLS1idWlsZC1udW1iZXIiLCBXaXRoUHJvcGVydGllcygiJShidWlsZG51bWJlcilzIiksCi0g
ICAgICAgICItLWJ1aWxkYm90LXdvcmtlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKHdvcmtlcm5hbWUp
cyIpLAotICAgICAgICAiLS1idWlsZGJvdC1tYXN0ZXIiLCBCVUlMRF9XRUJLSVRfVVJMLAotICAg
ICAgICAiLS1yZXBvcnQiLCBSRVNVTFRTX1dFQktJVF9VUkwsCi0gICAgXQotICAgIGZhaWxlZFRl
c3RzRm9ybWF0U3RyaW5nID0gIiVkIHJlZ3Jlc3Npb24lcyBmb3VuZC4iCi0gICAgbG9nZmlsZXMg
PSB7Impzb24iOiBqc29uRmlsZU5hbWV9Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydsb2dFbnZpcm9uJ10gPSBGYWxzZQotICAgICAg
ICBUZXN0V2l0aEZhaWx1cmVDb3VudC5fX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpCi0K
LSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2xhdmVFbnZpcm9ubWVudFtSRVNV
TFRTX1NFUlZFUl9BUElfS0VZXSA9IG9zLmdldGVudihSRVNVTFRTX1NFUlZFUl9BUElfS0VZKQot
ICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFp
bHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nVGV4dCA9IGNtZC5sb2dzWydzdGRpbyddLmdl
dFRleHQoKQotICAgICAgICAjIFdlJ3JlIGxvb2tpbmcgZm9yIHRoZSBsaW5lIHRoYXQgbG9va3Mg
bGlrZSB0aGlzOiAwIHJlZ3Jlc3Npb25zIGZvdW5kLgotICAgICAgICByZWdleCA9IHJlLmNvbXBp
bGUocidccyooP1A8Y291bnQ+XGQrKSByZWdyZXNzaW9ucz8gZm91bmQuJykKLSAgICAgICAgZm9y
IGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBtYXRjaCA9IHJlZ2V4
Lm1hdGNoKGxpbmUpCi0gICAgICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAgICAgICAgICAgICAg
Y29udGludWUKLSAgICAgICAgICAgIHJldHVybiBpbnQobWF0Y2guZ3JvdXAoJ2NvdW50JykpCi0g
ICAgICAgIHJldHVybiAwCi0KLQotY2xhc3MgUnVuMzJiaXRKU0NUZXN0cyhUZXN0V2l0aEZhaWx1
cmVDb3VudCk6Ci0gICAgbmFtZSA9ICJ3ZWJraXQtMzJiaXQtanNjLXRlc3QiCi0gICAgZGVzY3Jp
cHRpb24gPSBbIjMyYml0LWpzYy10ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbIjMyYml0LWpzYy10ZXN0cyJdCi0gICAganNvbkZpbGVOYW1lID0gImpzY18zMmJpdC5qc29u
IgotICAgIGNvbW1hbmQgPSBbCi0gICAgICAgICJwZXJsIiwgIi4vVG9vbHMvU2NyaXB0cy9ydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMiLAotICAgICAgICAiLS0zMi1iaXQiLCAiLS1uby1idWlsZCIs
Ci0gICAgICAgICItLW5vLWZhaWwtZmFzdCIsICItLW5vLWppdCIsICItLW5vLXRlc3RhaXIiLCAi
LS1uby10ZXN0YjMiLCAiLS1uby10ZXN0bWFzbSIsCi0gICAgICAgICItLWpzb24tb3V0cHV0PXsw
fSIuZm9ybWF0KGpzb25GaWxlTmFtZSksCi0gICAgICAgIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29u
ZmlndXJhdGlvbilzIiksCi0gICAgICAgICItLWJ1aWxkZXItbmFtZSIsIFdpdGhQcm9wZXJ0aWVz
KCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgIi0tYnVpbGQtbnVtYmVyIiwgV2l0aFByb3Bl
cnRpZXMoIiUoYnVpbGRudW1iZXIpcyIpLAotICAgICAgICAiLS1idWlsZGJvdC13b3JrZXIiLCBX
aXRoUHJvcGVydGllcygiJSh3b3JrZXJuYW1lKXMiKSwKLSAgICAgICAgIi0tYnVpbGRib3QtbWFz
dGVyIiwgQlVJTERfV0VCS0lUX1VSTCwKLSAgICAgICAgIi0tcmVwb3J0IiwgUkVTVUxUU19XRUJL
SVRfVVJMLAotICAgIF0KLSAgICBmYWlsZWRUZXN0c0Zvcm1hdFN0cmluZyA9ICIlZCByZWdyZXNz
aW9uJXMgZm91bmQuIgotICAgIGxvZ2ZpbGVzID0geyJqc29uIjoganNvbkZpbGVOYW1lfQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1sn
bG9nRW52aXJvbiddID0gRmFsc2UKLSAgICAgICAgVGVzdFdpdGhGYWlsdXJlQ291bnQuX19pbml0
X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAg
ICBzZWxmLnNsYXZlRW52aXJvbm1lbnRbUkVTVUxUU19TRVJWRVJfQVBJX0tFWV0gPSBvcy5nZXRl
bnYoUkVTVUxUU19TRVJWRVJfQVBJX0tFWSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3Rh
cnQoc2VsZikKLQotICAgIGRlZiBjb3VudEZhaWx1cmVzKHNlbGYsIGNtZCk6Ci0gICAgICAgIGxv
Z1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkKLSAgICAgICAgIyBXZSdyZSBsb29r
aW5nIGZvciB0aGUgbGluZSB0aGF0IGxvb2tzIGxpa2UgdGhpczogMCBmYWlsdXJlcyBmb3VuZC4K
LSAgICAgICAgcmVnZXggPSByZS5jb21waWxlKHInXHMqKD9QPGNvdW50PlxkKykgZmFpbHVyZXM/
IGZvdW5kLicpCi0gICAgICAgIGZvciBsaW5lIGluIGxvZ1RleHQuc3BsaXRsaW5lcygpOgotICAg
ICAgICAgICAgbWF0Y2ggPSByZWdleC5tYXRjaChsaW5lKQotICAgICAgICAgICAgaWYgbm90IG1h
dGNoOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXR1cm4gaW50KG1h
dGNoLmdyb3VwKCdjb3VudCcpKQotICAgICAgICByZXR1cm4gMAotCi0KLWNsYXNzIFJ1bkJpbmRp
bmdzVGVzdHMoc2hlbGwuVGVzdCk6Ci0gICAgbmFtZSA9ICJiaW5kaW5ncy1nZW5lcmF0aW9uLXRl
c3RzIgotICAgIGRlc2NyaXB0aW9uID0gWyJiaW5kaW5ncy10ZXN0cyBydW5uaW5nIl0KLSAgICBk
ZXNjcmlwdGlvbkRvbmUgPSBbImJpbmRpbmdzLXRlc3RzIl0KLSAgICBjb21tYW5kID0gWyJweXRo
b24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0cyJdCi0KLQotY2xhc3MgUnVu
QnVpbHRpbnNUZXN0cyhzaGVsbC5UZXN0KToKLSAgICBuYW1lID0gImJ1aWx0aW5zLWdlbmVyYXRv
ci10ZXN0cyIKLSAgICBkZXNjcmlwdGlvbiA9IFsiYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzIHJ1
bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3Rz
Il0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi1idWlsdGlu
cy1nZW5lcmF0b3ItdGVzdHMiXQotCi0KLWNsYXNzIFJ1bkdMaWJBUElUZXN0cyhzaGVsbC5UZXN0
KToKLSAgICBuYW1lID0gIkFQSS10ZXN0cyIKLSAgICBkZXNjcmlwdGlvbiA9IFsiQVBJIHRlc3Rz
IHJ1bm5pbmciXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiQVBJIHRlc3RzIl0KLQotICAgIGRl
ZiBzdGFydChzZWxmKToKLSAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA9IHNlbGYuZ2V0UHJv
cGVydHkoImFkZGl0aW9uYWxBcmd1bWVudHMiKQotICAgICAgICBpZiBhZGRpdGlvbmFsQXJndW1l
bnRzOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kICs9IGFkZGl0aW9uYWxBcmd1bWVudHMKLSAg
ICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCkKLSAgICAgICAgcmV0dXJuIHNoZWxs
LlRlc3Quc3RhcnQoc2VsZikKLQotICAgIGRlZiBjb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKToK
LSAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2VsZiwgY21kKQotCi0gICAgICAg
IGxvZ1RleHQgPSBjbWQubG9nc1snc3RkaW8nXS5nZXRUZXh0KCkKLQotICAgICAgICBmYWlsZWRU
ZXN0cyA9IDAKLSAgICAgICAgY3Jhc2hlZFRlc3RzID0gMAotICAgICAgICB0aW1lZE91dFRlc3Rz
ID0gMAotICAgICAgICBtZXNzYWdlcyA9IFtdCi0gICAgICAgIHNlbGYuc3RhdHVzTGluZSA9IFtd
Ci0KLSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIlVuZXhwZWN0ZWQgZmFpbHVyZXMg
XCgoXGQrKVwpIiwgbG9nVGV4dCkKLSAgICAgICAgaWYgZm91bmRJdGVtczoKLSAgICAgICAgICAg
IGZhaWxlZFRlc3RzID0gaW50KGZvdW5kSXRlbXNbMF0pCi0gICAgICAgICAgICBtZXNzYWdlcy5h
cHBlbmQoIiVkIGZhaWx1cmVzIiAlIGZhaWxlZFRlc3RzKQotCi0gICAgICAgIGZvdW5kSXRlbXMg
PSByZS5maW5kYWxsKCJVbmV4cGVjdGVkIGNyYXNoZXMgXCgoXGQrKVwpIiwgbG9nVGV4dCkKLSAg
ICAgICAgaWYgZm91bmRJdGVtczoKLSAgICAgICAgICAgIGNyYXNoZWRUZXN0cyA9IGludChmb3Vu
ZEl0ZW1zWzBdKQotICAgICAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCIlZCBjcmFzaGVzIiAlIGNy
YXNoZWRUZXN0cykKLQotICAgICAgICBmb3VuZEl0ZW1zID0gcmUuZmluZGFsbCgiVW5leHBlY3Rl
ZCB0aW1lb3V0cyBcKChcZCspXCkiLCBsb2dUZXh0KQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgot
ICAgICAgICAgICAgdGltZWRPdXRUZXN0cyA9IGludChmb3VuZEl0ZW1zWzBdKQotICAgICAgICAg
ICAgbWVzc2FnZXMuYXBwZW5kKCIlZCB0aW1lb3V0cyIgJSB0aW1lZE91dFRlc3RzKQotCi0gICAg
ICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxsKCJVbmV4cGVjdGVkIHBhc3NlcyBcKChcZCspXCki
LCBsb2dUZXh0KQotICAgICAgICBpZiBmb3VuZEl0ZW1zOgotICAgICAgICAgICAgbmV3UGFzc1Rl
c3RzID0gaW50KGZvdW5kSXRlbXNbMF0pCi0gICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIiVk
IG5ldyBwYXNzZXMiICUgbmV3UGFzc1Rlc3RzKQotCi0gICAgICAgIHNlbGYudG90YWxGYWlsZWRU
ZXN0cyA9IGZhaWxlZFRlc3RzICsgY3Jhc2hlZFRlc3RzICsgdGltZWRPdXRUZXN0cwotICAgICAg
ICBpZiBtZXNzYWdlczoKLSAgICAgICAgICAgIHNlbGYuc3RhdHVzTGluZSA9IFsiQVBJIHRlc3Rz
OiAlcyIgJSAiLCAiLmpvaW4obWVzc2FnZXMpXQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChz
ZWxmLCBjbWQpOgotICAgICAgICBpZiBzZWxmLnRvdGFsRmFpbGVkVGVzdHMgPiAwOgotICAgICAg
ICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICBpZiBjbWQucmMgIT0gMDoKLSAgICAgICAg
ICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQotICAgIGRlZiBn
ZXRUZXh0KHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmdldFRleHQy
KGNtZCwgcmVzdWx0cykKLQotICAgIGRlZiBnZXRUZXh0MihzZWxmLCBjbWQsIHJlc3VsdHMpOgot
ICAgICAgICBpZiByZXN1bHRzICE9IFNVQ0NFU1MgYW5kIHNlbGYudG90YWxGYWlsZWRUZXN0cyA+
IDA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zdGF0dXNMaW5lCi0KLSAgICAgICAgcmV0dXJu
IFtzZWxmLm5hbWVdCi0KLQotY2xhc3MgUnVuR3RrQVBJVGVzdHMoUnVuR0xpYkFQSVRlc3RzKToK
LSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMi
LCBXaXRoUHJvcGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpXQotCi0KLWNsYXNzIFJ1bldQ
RUFQSVRlc3RzKFJ1bkdMaWJBUElUZXN0cyk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4v
VG9vbHMvU2NyaXB0cy9ydW4td3BlLXRlc3RzIiwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1
cmF0aW9uKXMiKV0KLQotCi1jbGFzcyBSdW5XZWJEcml2ZXJUZXN0cyhzaGVsbC5UZXN0KToKLSAg
ICBuYW1lID0gIndlYmRyaXZlci10ZXN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJ3ZWJkcml2ZXIt
dGVzdHMgcnVubmluZyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJ3ZWJkcml2ZXItdGVzdHMi
XQotICAgIGpzb25GaWxlTmFtZSA9ICJ3ZWJkcml2ZXJfdGVzdHMuanNvbiIKLSAgICBjb21tYW5k
ID0gWyJweXRob24iLCAiLi9Ub29scy9TY3JpcHRzL3J1bi13ZWJkcml2ZXItdGVzdHMiLCAiLS1q
c29uLW91dHB1dD17MH0iLmZvcm1hdChqc29uRmlsZU5hbWUpLCBXaXRoUHJvcGVydGllcygiLS0l
KGNvbmZpZ3VyYXRpb24pcyIpXQotICAgIGxvZ2ZpbGVzID0geyJqc29uIjoganNvbkZpbGVOYW1l
fQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBhZGRpdGlvbmFsQXJndW1lbnRzID0g
c2VsZi5nZXRQcm9wZXJ0eSgnYWRkaXRpb25hbEFyZ3VtZW50cycpCi0gICAgICAgIGlmIGFkZGl0
aW9uYWxBcmd1bWVudHM6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5k
ICsgYWRkaXRpb25hbEFyZ3VtZW50cykKLQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdz
KHNlbGYsIHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0UHJvcGVydHkoJ2Z1
bGxQbGF0Zm9ybScpKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0g
ICAgZGVmIGNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNv
bW1hbmRDb21wbGV0ZShzZWxmLCBjbWQpCi0gICAgICAgIGxvZ1RleHQgPSBjbWQubG9nc1snc3Rk
aW8nXS5nZXRUZXh0KCkKLQotICAgICAgICBzZWxmLmZhaWx1cmVzQ291bnQgPSAwCi0gICAgICAg
IHNlbGYubmV3UGFzc2VzQ291bnQgPSAwCi0gICAgICAgIGZvdW5kSXRlbXMgPSByZS5maW5kYWxs
KCJeVW5leHBlY3RlZCAuKyBcKChcZCspXCkiLCBsb2dUZXh0LCByZS5NVUxUSUxJTkUpCi0gICAg
ICAgIGlmIGZvdW5kSXRlbXM6Ci0gICAgICAgICAgICBzZWxmLmZhaWx1cmVzQ291bnQgPSBpbnQo
Zm91bmRJdGVtc1swXSkKLSAgICAgICAgZm91bmRJdGVtcyA9IHJlLmZpbmRhbGwoIl5FeHBlY3Rl
ZCB0byAuKywgYnV0IHBhc3NlZCBcKChcZCspXCkiLCBsb2dUZXh0LCByZS5NVUxUSUxJTkUpCi0g
ICAgICAgIGlmIGZvdW5kSXRlbXM6Ci0gICAgICAgICAgICBzZWxmLm5ld1Bhc3Nlc0NvdW50ID0g
aW50KGZvdW5kSXRlbXNbMF0pCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6
Ci0gICAgICAgIGlmIHNlbGYuZmFpbHVyZXNDb3VudDoKLSAgICAgICAgICAgIHJldHVybiBGQUlM
VVJFCi0KLSAgICAgICAgaWYgc2VsZi5uZXdQYXNzZXNDb3VudDoKLSAgICAgICAgICAgIHJldHVy
biBXQVJOSU5HUwotCi0gICAgICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0dXJu
IEZBSUxVUkUKLQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgZGVmIGdldFRleHQoc2Vs
ZiwgY21kLCByZXN1bHRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0VGV4dDIoY21kLCByZXN1
bHRzKQotCi0gICAgZGVmIGdldFRleHQyKHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAgICAgIGlm
IHJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgKHNlbGYuZmFpbHVyZXNDb3VudCBvciBzZWxmLm5ld1Bh
c3Nlc0NvdW50KToKLSAgICAgICAgICAgIGxpbmVzID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYu
ZmFpbHVyZXNDb3VudDoKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVkIGZhaWx1cmVz
IiAlIHNlbGYuZmFpbHVyZXNDb3VudCkKLSAgICAgICAgICAgIGlmIHNlbGYubmV3UGFzc2VzQ291
bnQ6Ci0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCIlZCBuZXcgcGFzc2VzIiAlIHNlbGYu
bmV3UGFzc2VzQ291bnQpCi0gICAgICAgICAgICByZXR1cm4gWyIlcyAlcyIgJSAoc2VsZi5uYW1l
LCAiLCAiLmpvaW4obGluZXMpKV0KLQotICAgICAgICByZXR1cm4gW3NlbGYubmFtZV0KLQotCi1j
bGFzcyBSdW5XZWJLaXQxVGVzdHMoUnVuV2ViS2l0VGVzdHMpOgotICAgIGRlZiBzdGFydChzZWxm
KToKLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsiLS1kdW1wLXJlbmRl
ci10cmVlIl0pCi0KLSAgICAgICAgcmV0dXJuIFJ1bldlYktpdFRlc3RzLnN0YXJ0KHNlbGYpCi0K
LQotY2xhc3MgUnVuV2ViS2l0MUxlYWtUZXN0cyhSdW5XZWJLaXQxVGVzdHMpOgotICAgIHdhbnRf
c3Rkb3V0ID0gRmFsc2UKLSAgICB3YW50X3N0ZGVyciA9IEZhbHNlCi0gICAgd2Fybk9uV2Fybmlu
Z3MgPSBUcnVlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0Q29tbWFu
ZChzZWxmLmNvbW1hbmQgKyBbIi0tbGVha3MiLCAiLS1yZXN1bHQtcmVwb3J0LWZsYXZvciIsICJM
ZWFrcyJdKQotICAgICAgICByZXR1cm4gUnVuV2ViS2l0MVRlc3RzLnN0YXJ0KHNlbGYpCi0KLQot
Y2xhc3MgUnVuQW5kVXBsb2FkUGVyZlRlc3RzKHNoZWxsLlRlc3QpOgotICAgIG5hbWUgPSAicGVy
Zi10ZXN0IgotICAgIGRlc2NyaXB0aW9uID0gWyJwZXJmLXRlc3RzIHJ1bm5pbmciXQotICAgIGRl
c2NyaXB0aW9uRG9uZSA9IFsicGVyZi10ZXN0cyJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwg
Ii4vVG9vbHMvU2NyaXB0cy9ydW4tcGVyZi10ZXN0cyIsCi0gICAgICAgICAgICAgICAiLS1vdXRw
dXQtanNvbi1wYXRoIiwgInBlcmYtdGVzdC1yZXN1bHRzLmpzb24iLAotICAgICAgICAgICAgICAg
Ii0td29ya2VyLWNvbmZpZy1qc29uLXBhdGgiLCAiLi4vLi4vcGVyZi10ZXN0LWNvbmZpZy5qc29u
IiwKLSAgICAgICAgICAgICAgICItLW5vLXNob3ctcmVzdWx0cyIsCi0gICAgICAgICAgICAgICAi
LS1yZXNldC1yZXN1bHRzIiwKLSAgICAgICAgICAgICAgICItLXRlc3QtcmVzdWx0cy1zZXJ2ZXIi
LCAicGVyZi53ZWJraXQub3JnIiwKLSAgICAgICAgICAgICAgICItLWJ1aWxkZXItbmFtZSIsIFdp
dGhQcm9wZXJ0aWVzKCIlKGJ1aWxkZXJuYW1lKXMiKSwKLSAgICAgICAgICAgICAgICItLWJ1aWxk
LW51bWJlciIsIFdpdGhQcm9wZXJ0aWVzKCIlKGJ1aWxkbnVtYmVyKXMiKSwKLSAgICAgICAgICAg
ICAgICItLXBsYXRmb3JtIiwgV2l0aFByb3BlcnRpZXMoIiUoZnVsbFBsYXRmb3JtKXMiKSwKLSAg
ICAgICAgICAgICAgICItLW5vLWJ1aWxkIiwKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVz
KCItLSUoY29uZmlndXJhdGlvbilzIildCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAg
IGFkZGl0aW9uYWxBcmd1bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCJhZGRpdGlvbmFsQXJndW1l
bnRzIikKLSAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYu
Y29tbWFuZCArPSBhZGRpdGlvbmFsQXJndW1lbnRzCi0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChz
ZWxmLmNvbW1hbmQpCi0gICAgICAgIHJldHVybiBzaGVsbC5UZXN0LnN0YXJ0KHNlbGYpCi0KLSAg
ICBkZWYgZ2V0VGV4dChzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAgICAgICByZXR1cm4gc2VsZi5n
ZXRUZXh0MihjbWQsIHJlc3VsdHMpCi0KLSAgICBkZWYgZ2V0VGV4dDIoc2VsZiwgY21kLCByZXN1
bHRzKToKLSAgICAgICAgaWYgcmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgaWYgY21k
LnJjID09IC0xICYgMHhmZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gWyJidWlsZCBub3QgdXAg
dG8gZGF0ZSJdCi0gICAgICAgICAgICBlbGlmIGNtZC5yYyA9PSAtMiAmIDB4ZmY6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFsid29ya2VyIGNvbmZpZyBKU09OIGVycm9yIl0KLSAgICAgICAgICAg
IGVsaWYgY21kLnJjID09IC0zICYgMHhmZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gWyJvdXRw
dXQgSlNPTiBtZXJnZSBlcnJvciJdCi0gICAgICAgICAgICBlbGlmIGNtZC5yYyA9PSAtNCAmIDB4
ZmY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFsidXBsb2FkIGVycm9yIl0KLSAgICAgICAgICAg
IGVsaWYgY21kLnJjID09IC01ICYgMHhmZjoKLSAgICAgICAgICAgICAgICByZXR1cm4gWyJzeXN0
ZW0gZGVwZW5kZW5jeSBlcnJvciJdCi0gICAgICAgICAgICBlbGlmIGNtZC5yYyA9PSAtMToKLSAg
ICAgICAgICAgICAgICByZXR1cm4gWyJ0aW1lb3V0Il0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIFsiJWQgcGVyZiB0ZXN0cyBmYWlsZWQiICUgY21kLnJjXQotCi0g
ICAgICAgIHJldHVybiBbc2VsZi5uYW1lXQotCi0KLWNsYXNzIFJ1bkJlbmNobWFya1Rlc3RzKHNo
ZWxsLlRlc3QpOgotICAgIG5hbWUgPSAiYmVuY2htYXJrLXRlc3QiCi0gICAgZGVzY3JpcHRpb24g
PSBbImJlbmNobWFyayB0ZXN0cyBydW5uaW5nIl0KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImJl
bmNobWFyayB0ZXN0cyJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvU2NyaXB0
cy9icm93c2VycGVyZmRhc2gtYmVuY2htYXJrIiwgIi0tYWxscGxhbnMiLAotICAgICAgICAgICAg
ICAgIi0tY29uZmlnLWZpbGUiLCAiLi4vLi4vYnJvd3NlcnBlcmZkYXNoLWJlbmNobWFyay1jb25m
aWcudHh0IiwKLSAgICAgICAgICAgICAgICItLWJyb3dzZXItdmVyc2lvbiIsIFdpdGhQcm9wZXJ0
aWVzKCJyJShnb3RfcmV2aXNpb24pcyIpXQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAg
ICBwbGF0Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoInBsYXRmb3JtIikKLSAgICAgICAgaWYgcGxh
dGZvcm0gPT0gImd0ayI6Ci0gICAgICAgICAgICBzZWxmLmNvbW1hbmQgKz0gWyItLWJyb3dzZXIi
LCAibWluaWJyb3dzZXItZ3RrIl0KLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFu
ZCkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKLQotICAgIGRlZiBnZXRU
ZXh0KHNlbGYsIGNtZCwgcmVzdWx0cyk6Ci0gICAgICAgIHJldHVybiBzZWxmLmdldFRleHQyKGNt
ZCwgcmVzdWx0cykKLQotICAgIGRlZiBnZXRUZXh0MihzZWxmLCBjbWQsIHJlc3VsdHMpOgotICAg
ICAgICBpZiByZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4gWyIlZCBiZW5j
aG1hcmsgdGVzdHMgZmFpbGVkIiAlIGNtZC5yY10KLSAgICAgICAgcmV0dXJuIFtzZWxmLm5hbWVd
Ci0KLQotY2xhc3MgQXJjaGl2ZVRlc3RSZXN1bHRzKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAg
Y29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1
bHQtYXJjaGl2ZSIsCi0gICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0l
KHBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFy
Y2hpdmUiXQotICAgIG5hbWUgPSAiYXJjaGl2ZS10ZXN0LXJlc3VsdHMiCi0gICAgZGVzY3JpcHRp
b24gPSBbImFyY2hpdmluZyB0ZXN0IHJlc3VsdHMiXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsi
YXJjaGl2ZWQgdGVzdCByZXN1bHRzIl0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0KLWNs
YXNzIFVwbG9hZFRlc3RSZXN1bHRzKHRyYW5zZmVyLkZpbGVVcGxvYWQpOgotICAgIHdvcmtlcnNy
YyA9ICJsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCIKLSAgICBtYXN0ZXJkZXN0ID0gV2l0aFByb3Bl
cnRpZXMoInB1YmxpY19odG1sL3Jlc3VsdHMvJShidWlsZGVybmFtZSlzL3IlKGdvdF9yZXZpc2lv
bilzICglKGJ1aWxkbnVtYmVyKXMpLnppcCIpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKipr
d2FyZ3MpOgotICAgICAgICBrd2FyZ3NbJ3NsYXZlc3JjJ10gPSBzZWxmLndvcmtlcnNyYwotICAg
ICAgICBrd2FyZ3NbJ21hc3RlcmRlc3QnXSA9IHNlbGYubWFzdGVyZGVzdAotICAgICAgICBrd2Fy
Z3NbJ21vZGUnXSA9IDBvNjQ0Ci0gICAgICAgIGt3YXJnc1snYmxvY2tzaXplJ10gPSAxMDI0ICog
MjU2Ci0gICAgICAgIHRyYW5zZmVyLkZpbGVVcGxvYWQuX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
Ci0KLQotY2xhc3MgVHJhbnNmZXJUb1MzKG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQpOgotICAg
IG5hbWUgPSAidHJhbnNmZXItdG8tczMiCi0gICAgZGVzY3JpcHRpb24gPSBbInRyYW5zZmVycmlu
ZyB0byBzMyJdCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyJ0cmFuc2ZlcnJlZCB0byBzMyJdCi0g
ICAgYXJjaGl2ZSA9IFdpdGhQcm9wZXJ0aWVzKCJhcmNoaXZlcy8lKGZ1bGxQbGF0Zm9ybSlzLSUo
YXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShnb3RfcmV2aXNpb24pcy56aXAiKQot
ICAgIG1pbmlmaWVkQXJjaGl2ZSA9IFdpdGhQcm9wZXJ0aWVzKCJhcmNoaXZlcy8lKGZ1bGxQbGF0
Zm9ybSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvbWluaWZpZWQtJShnb3Rf
cmV2aXNpb24pcy56aXAiKQotICAgIGlkZW50aWZpZXIgPSBXaXRoUHJvcGVydGllcygiJShmdWxs
UGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmlndXJhdGlvbilzIikKLSAgICByZXZp
c2lvbiA9IFdpdGhQcm9wZXJ0aWVzKCIlKGdvdF9yZXZpc2lvbilzIikKLSAgICBjb21tYW5kID0g
WyJweXRob24iLCAiLi4vU2hhcmVkL3RyYW5zZmVyLWFyY2hpdmUtdG8tczMiLCAiLS1yZXZpc2lv
biIsIHJldmlzaW9uLCAiLS1pZGVudGlmaWVyIiwgaWRlbnRpZmllciwgIi0tYXJjaGl2ZSIsIGFy
Y2hpdmVdCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCAqKmt3YXJncyk6Ci0gICAgICAgIGt3YXJnc1snY29tbWFuZCddID0gc2VsZi5jb21tYW5kCi0g
ICAgICAgIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuX19pbml0X18oc2VsZiwgKiprd2FyZ3Mp
Ci0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXN0ZXIuTWFzdGVyU2hl
bGxDb21tYW5kLnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgZmluaXNoZWQoc2VsZiwgcmVzdWx0KToK
LSAgICAgICAgcmV0dXJuIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuZmluaXNoZWQoc2VsZiwg
cmVzdWx0KQotCi0KLWNsYXNzIEV4dHJhY3RUZXN0UmVzdWx0cyhtYXN0ZXIuTWFzdGVyU2hlbGxD
b21tYW5kKToKLSAgICB6aXBGaWxlID0gV2l0aFByb3BlcnRpZXMoInB1YmxpY19odG1sL3Jlc3Vs
dHMvJShidWlsZGVybmFtZSlzL3IlKGdvdF9yZXZpc2lvbilzICglKGJ1aWxkbnVtYmVyKXMpLnpp
cCIpCi0gICAgcmVzdWx0RGlyZWN0b3J5ID0gV2l0aFByb3BlcnRpZXMoInB1YmxpY19odG1sL3Jl
c3VsdHMvJShidWlsZGVybmFtZSlzL3IlKGdvdF9yZXZpc2lvbilzICglKGJ1aWxkbnVtYmVyKXMp
IikKLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInVwbG9hZGVkIHJlc3VsdHMiXQotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAga3dhcmdzWydjb21tYW5kJ10gPSAi
IgotICAgICAgICBtYXN0ZXIuTWFzdGVyU2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYsICoqa3dh
cmdzKQotCi0gICAgZGVmIHJlc3VsdERpcmVjdG9yeVVSTChzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuYnVpbGQuZ2V0UHJvcGVydGllcygpLnJlbmRlcihzZWxmLnJlc3VsdERpcmVjdG9yeSku
cmVwbGFjZSgicHVibGljX2h0bWwvIiwgIi8iKSArICIvIgotCi0gICAgZGVmIHN0YXJ0KHNlbGYp
OgotICAgICAgICBzZWxmLmNvbW1hbmQgPSBbInVuemlwIiwgc2VsZi5idWlsZC5nZXRQcm9wZXJ0
aWVzKCkucmVuZGVyKHNlbGYuemlwRmlsZSksICItZCIsIHNlbGYuYnVpbGQuZ2V0UHJvcGVydGll
cygpLnJlbmRlcihzZWxmLnJlc3VsdERpcmVjdG9yeSldCi0gICAgICAgIHJldHVybiBtYXN0ZXIu
TWFzdGVyU2hlbGxDb21tYW5kLnN0YXJ0KHNlbGYpCi0KLSAgICBkZWYgYWRkQ3VzdG9tVVJMcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5hZGRVUkwoInZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cyIsIHNl
bGYucmVzdWx0RGlyZWN0b3J5VVJMKCkgKyAicmVzdWx0cy5odG1sIikKLSAgICAgICAgc2VsZi5h
ZGRVUkwoInZpZXcgZGFzaGJvYXJkIHRlc3QgcmVzdWx0cyIsIHNlbGYucmVzdWx0RGlyZWN0b3J5
VVJMKCkgKyAiZGFzaGJvYXJkLWxheW91dC10ZXN0LXJlc3VsdHMvcmVzdWx0cy5odG1sIikKLQot
ICAgIGRlZiBmaW5pc2hlZChzZWxmLCByZXN1bHQpOgotICAgICAgICBzZWxmLmFkZEN1c3RvbVVS
THMoKQotICAgICAgICByZXR1cm4gbWFzdGVyLk1hc3RlclNoZWxsQ29tbWFuZC5maW5pc2hlZChz
ZWxmLCByZXN1bHQpCi0KLQotY2xhc3MgRXh0cmFjdFRlc3RSZXN1bHRzQW5kTGVha3MoRXh0cmFj
dFRlc3RSZXN1bHRzKToKLSAgICBkZWYgYWRkQ3VzdG9tVVJMcyhzZWxmKToKLSAgICAgICAgRXh0
cmFjdFRlc3RSZXN1bHRzLmFkZEN1c3RvbVVSTHMoc2VsZikKLSAgICAgICAgdXJsID0gIi9MZWFr
c1ZpZXdlci8/dXJsPSIgKyB1cmxsaWIucXVvdGUoc2VsZi5yZXN1bHREaXJlY3RvcnlVUkwoKSwg
c2FmZT0iIikKLSAgICAgICAgc2VsZi5hZGRVUkwoInZpZXcgbGVha3MiLCB1cmwpCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwc191bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9zdGVwc191bml0dGVzdC5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvc3RlcHNfdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw2OTQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1w
b3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBqc29uCi0KLSMgU2hv
dyBEZXByaWNhdGlvbldhcm5pbmdzIGNvbWUgZnJvbSBidWlsZGJvdCAtIGl0IGlzbid0IGRlZmF1
bHQgd2l0aCBQeXRob24gMi43IG9yIG5ld2VyLgotIyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTkwMTYxIGZvciBkZXRhaWxzLgotaW1wb3J0IHdhcm5pbmdzCi13
YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2RlZmF1bHQnKQotCi0KLWNsYXNzIEJ1aWxkQm90Q29uZmln
TG9hZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9hZGRfd2Via2l0cHlfdG9fc3lzX3BhdGgoc2VsZik6
Ci0gICAgICAgICMgV2hlbiBmaWxlcyBhcmUgcGFzc2VkIHRvIHRoZSBweXRob24gaW50ZXJwcmV0
ZXIgb24gdGhlIGNvbW1hbmQgbGluZSAoZS5nLiBweXRob24gdGVzdC5weSkgX19maWxlX18gaXMg
YSByZWxhdGl2ZSBwYXRoLgotICAgICAgICBhYnNvbHV0ZV9maWxlX3BhdGggPSBvcy5wYXRoLmFi
c3BhdGgoX19maWxlX18pCi0gICAgICAgIHdlYmtpdF9vcmdfY29uZmlnX2RpciA9IG9zLnBhdGgu
ZGlybmFtZShhYnNvbHV0ZV9maWxlX3BhdGgpCi0gICAgICAgIHdvcmtlcl9zdXBwb3J0X2RpciA9
IG9zLnBhdGguZGlybmFtZSh3ZWJraXRfb3JnX2NvbmZpZ19kaXIpCi0gICAgICAgIHdlYmtpdF90
b29sc19kaXIgPSBvcy5wYXRoLmRpcm5hbWUod29ya2VyX3N1cHBvcnRfZGlyKQotICAgICAgICBz
Y3JpcHRzX2RpciA9IG9zLnBhdGguam9pbih3ZWJraXRfdG9vbHNfZGlyLCAnU2NyaXB0cycpCi0g
ICAgICAgIHN5cy5wYXRoLmFwcGVuZChzY3JpcHRzX2RpcikKLQotICAgIGRlZiBfYWRkX2RlcGVu
ZGVudF9tb2R1bGVzX3RvX3N5c19tb2R1bGVzKHNlbGYpOgotICAgICAgICBzZWxmLl9hZGRfd2Vi
a2l0cHlfdG9fc3lzX3BhdGgoKQotICAgICAgICBmcm9tIHdlYmtpdHB5LmF1dG9pbnN0YWxsZWQg
aW1wb3J0IGJ1aWxkYm90Ci0gICAgICAgIHN5cy5tb2R1bGVzWydidWlsZGJvdCddID0gYnVpbGRi
b3QKLQotCi1jbGFzcyBSdW5XZWJLaXRUZXN0c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
IGRlZiB0ZXN0X25yd3RfbGVha3NfcGFyc2luZyhzZWxmKToKLSAgICAgICAgcnVuX3dlYmtpdF90
ZXN0cyA9IFJ1bldlYktpdFRlc3RzKCkgICMgcHlsaW50IGlzIGNvbmZ1c2VkIGJ5IHRoZSB3YXkg
d2UgaW1wb3J0IHRoZSBtb2R1bGUgLi4uIHB5bGludDogZGlzYWJsZS1tc2c9RTA2MDIKLSAgICAg
ICAgbG9nX3RleHQgPSAiIiIKLTEyOjQ0OjI0LjI5NSA3NzcwNiAxMzk4MSB0b3RhbCBsZWFrcyBm
b3VuZCBmb3IgYSB0b3RhbCBvZiAxOTcsOTM2IGJ5dGVzLgotMTI6NDQ6MjQuMjk1IDc3NzA2IDEg
dW5pcXVlIGxlYWtzIGZvdW5kLgotIiIiCi0gICAgICAgIGV4cGVjdGVkX2luY29ycmVjdF9saW5l
cyA9IFsKLSAgICAgICAgICAgICcxMzk4MSB0b3RhbCBsZWFrcyBmb3VuZCBmb3IgYSB0b3RhbCBv
ZiAxOTcsOTM2IGJ5dGVzLicsCi0gICAgICAgICAgICAnMSB1bmlxdWUgbGVha3MgZm91bmQuJywK
LSAgICAgICAgXQotICAgICAgICBydW5fd2Via2l0X3Rlc3RzLl9wYXJzZVJ1bldlYktpdFRlc3Rz
T3V0cHV0KGxvZ190ZXh0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ1bl93ZWJraXRfdGVz
dHMuaW5jb3JyZWN0TGF5b3V0TGluZXMsIGV4cGVjdGVkX2luY29ycmVjdF9saW5lcykKLQotICAg
IGRlZiB0ZXN0X25yd3RfbWlzc2luZ19yZXN1bHRzKHNlbGYpOgotICAgICAgICBydW5fd2Via2l0
X3Rlc3RzID0gUnVuV2ViS2l0VGVzdHMoKSAgIyBweWxpbnQgaXMgY29uZnVzZWQgYnkgdGhlIHdh
eSB3ZSBpbXBvcnQgdGhlIG1vZHVsZSAuLi4gcHlsaW50OiBkaXNhYmxlLW1zZz1FMDYwMgotICAg
ICAgICBsb2dfdGV4dCA9ICIiIgotRXhwZWN0ZWQgdG8gZmFpbCwgYnV0IHBhc3NlZDogKDIpCi0g
IGFuaW1hdGlvbnMvYWRkaXRpdmUtdHJhbnNmb3JtLWFuaW1hdGlvbnMuaHRtbAotICBhbmltYXRp
b25zL2Nyb3NzLWZhZGUtd2Via2l0LW1hc2stYm94LWltYWdlLmh0bWwKLQotVW5leHBlY3RlZCBm
bGFraW5lc3M6IHRleHQtb25seSBmYWlsdXJlcyAoMikKLSAgZmFzdC9ldmVudHMvdG91Y2gvdG91
Y2gtaW5zaWRlLWlmcmFtZS5odG1sIFsgRmFpbHVyZSBQYXNzIF0KLSAgaHR0cC90ZXN0cy9pbnNw
ZWN0b3ItZW5hYmxlZC9jb25zb2xlLWNsZWFyLWFyZ3VtZW50cy1vbi1mcmFtZS1uYXZpZ2F0aW9u
Lmh0bWwgWyBGYWlsdXJlIFBhc3MgXQotCi1VbmV4cGVjdGVkIGZsYWtpbmVzczogdGltZW91dHMg
KDEpCi0gIHN2Zy90ZXh0L2ZvcmVpZ25PYmplY3QtcmVwYWludC54bWwgWyBUaW1lb3V0IFBhc3Mg
XQotCi1SZWdyZXNzaW9uczogVW5leHBlY3RlZCBtaXNzaW5nIHJlc3VsdHMgKDEpCi0gIHN2Zy9j
dXN0b20vemVyby1wYXRoLXNxdWFyZS1jYXAtcmVuZGVyaW5nMi5zdmcgWyBNaXNzaW5nIF0KLQot
UmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgdGV4dC1vbmx5IGZhaWx1cmVzICgxKQotICBzdmcvY3Vz
dG9tL3plcm8tcGF0aC1zcXVhcmUtY2FwLXJlbmRlcmluZzIuc3ZnIFsgRmFpbHVyZSBdCi0iIiIK
LSAgICAgICAgcnVuX3dlYmtpdF90ZXN0cy5fcGFyc2VSdW5XZWJLaXRUZXN0c091dHB1dChsb2df
dGV4dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocnVuX3dlYmtpdF90ZXN0cy5pbmNv
cnJlY3RMYXlvdXRMaW5lcyksCi0gICAgICAgICAgICBzZXQoWycyIG5ldyBwYXNzZXMnLCAnMyBm
bGFrZXMnLCAnMSBtaXNzaW5nIHJlc3VsdHMnLCAnMSBmYWlsdXJlcyddKSkKLQotCi1jbGFzcyBT
dHViU3RkaW8ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RkaW8pOgotICAgICAg
ICBzZWxmLl9zdGRpbyA9IHN0ZGlvCi0KLSAgICBkZWYgZ2V0VGV4dChzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3N0ZGlvCi0KLQotY2xhc3MgU3R1YlJlbW90ZUNvbW1hbmQob2JqZWN0KToK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmMsIHN0ZGlvKToKLSAgICAgICAgc2VsZi5yYyA9IHJj
Ci0gICAgICAgIHNlbGYubG9ncyA9IHsnc3RkaW8nOiBTdHViU3RkaW8oc3RkaW8pfQotCi0KLWNs
YXNzIFJ1bkphdmFTY3JpcHRDb3JlVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCBleHBlY3RlZF9yZXN1bHQsIGV4cGVjdGVkX3RleHQsIHJj
LCBzdGRpbyk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5kKHJjLCBzdGRpbykKLSAg
ICAgICAgc3RlcCA9IFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoKQotICAgICAgICBzdGVwLmNvbW1h
bmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0ZUNv
bW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAuZ2V0VGV4dDIoY21kLCBhY3R1
YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jlc3VsdCwg
YWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3RleHQsIGV4
cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9ub19yZWdyZXNzaW9uc19vbGRfb3V0cHV0KHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoU1VDQ0VTUywgWyJqc2NvcmUtdGVzdCJd
LCAwLCAiIiJSZXN1bHRzIGZvciBNb3ppbGxhIHRlc3RzOgotICAgIDAgcmVncmVzc2lvbnMgZm91
bmQuCi0gICAgMCB0ZXN0cyBmaXhlZC4KLSAgICBPSy4iIiIpCi0KLSAgICBkZWYgdGVzdF9ub19m
YWlsdXJlX25ld19vdXRwdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUND
RVNTLCBbImpzY29yZS10ZXN0Il0sIDAsICIiIlJlc3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVzdHM6
Ci0gICAgMCBmYWlsdXJlcyBmb3VuZC4KLSAgICBPSy4iIiIpCi0KLSAgICBkZWYgdGVzdF9tb3pp
bGxhX2ZhaWx1cmVfb2xkX291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRz
KEZBSUxVUkUsIFsiMSBKU0MgdGVzdCBmYWlsZWQiXSwgMSwgIiIiUmVzdWx0cyBmb3IgTW96aWxs
YSB0ZXN0czoKLSAgICAxIHJlZ3Jlc3Npb24gZm91bmQuCi0gICAgMCB0ZXN0cyBmaXhlZC4iIiIp
Ci0KLSAgICBkZWYgdGVzdF9tb3ppbGxhX2ZhaWx1cmVzX29sZF9vdXRwdXQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbIjIgSlNDIHRlc3RzIGZhaWxlZCJdLCAx
LCAiIiJSZXN1bHRzIGZvciBNb3ppbGxhIHRlc3RzOgotICAgIDIgcmVncmVzc2lvbnMgZm91bmQu
Ci0gICAgMCB0ZXN0cyBmaXhlZC4iIiIpCi0KLSAgICBkZWYgdGVzdF9qc2Nfc3RyZXNzX2ZhaWx1
cmVfbmV3X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUs
IFsiMSBKU0MgdGVzdCBmYWlsZWQiXSwgMSwgICIiIlJlc3VsdHMgZm9yIEpTQyBzdHJlc3MgdGVz
dHM6Ci0gICAgMSBmYWlsdXJlIGZvdW5kLiIiIikKLQotICAgIGRlZiB0ZXN0X2pzY19zdHJlc3Nf
ZmFpbHVyZXNfbmV3X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZB
SUxVUkUsIFsiNSBKU0MgdGVzdHMgZmFpbGVkIl0sIDEsICAiIiJSZXN1bHRzIGZvciBKU0Mgc3Ry
ZXNzIHRlc3RzOgotICAgIDUgZmFpbHVyZXMgZm91bmQuIiIiKQotCi0gICAgZGVmIHRlc3RfanNj
X3N0cmVzc19mYWlsdXJlc193aXRoX2JpbmFyeV9yZXN1bHRzX291dHB1dChzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiOCBKU0MgdGVzdHMgZmFpbGVkIl0sIDEs
ICAiIiJSZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOgotICAgIDUgZmFpbHVyZXMgZm91bmQu
Ci1SZXN1bHRzIGZvciBKU0MgdGVzdCBiaW5hcmllczoKLSAgICAzIGZhaWx1cmVzIGZvdW5kLiIi
IikKLQotICAgIGRlZiB0ZXN0X2pzY19zdHJlc3NfZmFpbHVyZXNfd2l0aF9iaW5hcnlfcmVzdWx0
X291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsiNiBK
U0MgdGVzdHMgZmFpbGVkIl0sIDEsICAiIiJSZXN1bHRzIGZvciBKU0Mgc3RyZXNzIHRlc3RzOgot
ICAgIDUgZmFpbHVyZXMgZm91bmQuCi1SZXN1bHRzIGZvciBKU0MgdGVzdCBiaW5hcmllczoKLSAg
ICAxIGZhaWx1cmUgZm91bmQuIiIiKQotCi0KLWNsYXNzIFJ1blRlc3QyNjJUZXN0c1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNlbGYsIGV4cGVjdGVkX3Jl
c3VsdCwgZXhwZWN0ZWRfdGV4dCwgcmMsIHN0ZGlvKToKLSAgICAgICAgY21kID0gU3R1YlJlbW90
ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0gUnVuVGVzdDI2MlRlc3RzKCkKLSAg
ICAgICAgc3RlcC5jb21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBhY3R1YWxfcmVzdWx0cyA9
IHN0ZXAuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFsX3RleHQgPSBzdGVwLmdl
dFRleHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9yZXN1bHQsIGFjdHVhbF9yZXN1bHRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQotCi0gICAgZGVmIHRlc3Rfbm9fcmVncmVzc2lv
bnNfb3V0cHV0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoU1VDQ0VTUywgWyJ0
ZXN0MjYyLXRlc3QiXSwgMCwgIiIiCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2V0dGluZ3Mt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3QyNjIgRGlyOiBKU1Rlc3RzL3Rlc3QyNjIKLUpT
QzogV2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKLURZTERfRlJBTUVXT1JLX1BBVEg6IFdlYktpdEJ1
aWxkL1JlbGVhc2UKLUNoaWxkIFByb2Nlc3NlczogMzIKLUNvbmZpZyBmaWxlOiBUb29scy9TY3Jp
cHRzL3Rlc3QyNjIvY29uZmlnLnlhbWwKLUV4cGVjdGF0aW9ucyBmaWxlOiBUb29scy9TY3JpcHRz
L3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5FVyBQQVNTOiB0ZXN0L2FubmV4Qi9idWls
dC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKGRlZmF1bHQpCi1ORVcgUEFT
UyB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2NsYXNzL2ZpZWxkcy1hZnRlci1zYW1lLWxpbmUt
c3RhdGljLW1ldGhvZC1jb21wdXRlZC1zeW1ib2wtbmFtZXMuanMgKGRlZmF1bHQpCi0KLVJ1biB3
aXRoIC0tc2F2ZSB0byBzYXZlIGEgbmV3IGV4cGVjdGF0aW9ucyBmaWxlCi1TYXZlZCBhbGwgdGhl
IHJlc3VsdHMgaW4gVG9vbHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMueWFtbAotU3VtbWFyaXpp
bmcgcmVzdWx0cy4uLgotU2VlIHN1bW1hcml6ZWQgcmVzdWx0cyBpbiBUb29scy9TY3JpcHRzL3Rl
c3QyNjIvcmVzdWx0cy1zdW1tYXJ5LnR4dAotCi01NjA3MSB0ZXN0cyByYW4KLTAgZXhwZWN0ZWQg
dGVzdHMgZmFpbGVkCi0wIHRlc3RzIG5ld2x5IGZhaWwKLTI1NDYgdGVzdHMgbmV3bHkgcGFzcwot
MTI0MSB0ZXN0IGZpbGVzIHNraXBwZWQKLURvbmUgaW4gMjQ3IHNlY29uZHMhCi0iIiIpCi0KLSAg
ICBkZWYgdGVzdF9mYWlsdXJlX291dHB1dChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1
bHRzKEZBSUxVUkUsIFsiMSBUZXN0MjYyIHRlc3QgZmFpbGVkIl0sIDAsICIiIgotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLVNldHRpbmdzLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UZXN0MjYy
IERpcjogSlNUZXN0cy90ZXN0MjYyCi1KU0M6IFdlYktpdEJ1aWxkL1JlbGVhc2UvanNjCi1EWUxE
X0ZSQU1FV09SS19QQVRIOiBXZWJLaXRCdWlsZC9SZWxlYXNlCi1DaGlsZCBQcm9jZXNzZXM6IDMy
Ci1Db25maWcgZmlsZTogVG9vbHMvU2NyaXB0cy90ZXN0MjYyL2NvbmZpZy55YW1sCi1FeHBlY3Rh
dGlvbnMgZmlsZTogVG9vbHMvU2NyaXB0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0h
IE5FVyBGQUlMOiB0ZXN0L2FubmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9s
ZW5ndGguanMgKGRlZmF1bHQpCi1ORVcgUEFTUyB0ZXN0L2xhbmd1YWdlL2V4cHJlc3Npb25zL2Ns
YXNzL2ZpZWxkcy1hZnRlci1zYW1lLWxpbmUtc3RhdGljLW1ldGhvZC1jb21wdXRlZC1zeW1ib2wt
bmFtZXMuanMgKGRlZmF1bHQpCi0KLVJ1biB3aXRoIC0tc2F2ZSB0byBzYXZlIGEgbmV3IGV4cGVj
dGF0aW9ucyBmaWxlCi1TYXZlZCBhbGwgdGhlIHJlc3VsdHMgaW4gVG9vbHMvU2NyaXB0cy90ZXN0
MjYyL3Jlc3VsdHMueWFtbAotU3VtbWFyaXppbmcgcmVzdWx0cy4uLgotU2VlIHN1bW1hcml6ZWQg
cmVzdWx0cyBpbiBUb29scy9TY3JpcHRzL3Rlc3QyNjIvcmVzdWx0cy1zdW1tYXJ5LnR4dAotCi01
NjA3MSB0ZXN0cyByYW4KLTAgZXhwZWN0ZWQgdGVzdHMgZmFpbGVkCi0wIHRlc3RzIG5ld2x5IGZh
aWwKLTI1NDYgdGVzdHMgbmV3bHkgcGFzcwotMTI0MSB0ZXN0IGZpbGVzIHNraXBwZWQKLURvbmUg
aW4gMjQ3IHNlY29uZHMhCi0iIiIpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlc19vdXRwdXQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbIjIgVGVzdDI2MiB0ZXN0
cyBmYWlsZWQiXSwgMCwgIiIiCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tU2V0dGluZ3MtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3QyNjIgRGlyOiBKU1Rlc3RzL3Rlc3QyNjIKLUpTQzog
V2ViS2l0QnVpbGQvUmVsZWFzZS9qc2MKLURZTERfRlJBTUVXT1JLX1BBVEg6IFdlYktpdEJ1aWxk
L1JlbGVhc2UKLUNoaWxkIFByb2Nlc3NlczogMzIKLUNvbmZpZyBmaWxlOiBUb29scy9TY3JpcHRz
L3Rlc3QyNjIvY29uZmlnLnlhbWwKLUV4cGVjdGF0aW9ucyBmaWxlOiBUb29scy9TY3JpcHRzL3Rl
c3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5FVyBQQVNTIHRlc3QvbGFuZ3VhZ2Uvc3RhdGVt
ZW50cy9jbGFzcy9maWVsZHMtYWZ0ZXItc2FtZS1saW5lLXN0YXRpYy1hc3luYy1nZW4tY29tcHV0
ZWQtbmFtZXMuanMgKGRlZmF1bHQpCi0hIE5FVyBGQUlMOiB0ZXN0L2FubmV4Qi9idWlsdC1pbnMv
RGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKGRlZmF1bHQpCi0hIE5FVyBGQUlMOiB0
ZXN0L2FubmV4Qi9idWlsdC1pbnMvRGF0ZS9wcm90b3R5cGUvZ2V0WWVhci9sZW5ndGguanMgKHN0
cmljdCBtb2RlKQotTkVXIFBBU1MgdGVzdC9sYW5ndWFnZS9leHByZXNzaW9ucy9jbGFzcy9maWVs
ZHMtYWZ0ZXItc2FtZS1saW5lLXN0YXRpYy1tZXRob2QtY29tcHV0ZWQtc3ltYm9sLW5hbWVzLmpz
IChkZWZhdWx0KQotCi1SdW4gd2l0aCAtLXNhdmUgdG8gc2F2ZSBhIG5ldyBleHBlY3RhdGlvbnMg
ZmlsZQotU2F2ZWQgYWxsIHRoZSByZXN1bHRzIGluIFRvb2xzL1NjcmlwdHMvdGVzdDI2Mi9yZXN1
bHRzLnlhbWwKLVN1bW1hcml6aW5nIHJlc3VsdHMuLi4KLVNlZSBzdW1tYXJpemVkIHJlc3VsdHMg
aW4gVG9vbHMvU2NyaXB0cy90ZXN0MjYyL3Jlc3VsdHMtc3VtbWFyeS50eHQKLQotNTYwNzEgdGVz
dHMgcmFuCi0wIGV4cGVjdGVkIHRlc3RzIGZhaWxlZAotMCB0ZXN0cyBuZXdseSBmYWlsCi0yNTQ2
IHRlc3RzIG5ld2x5IHBhc3MKLTEyNDEgdGVzdCBmaWxlcyBza2lwcGVkCi1Eb25lIGluIDI0NyBz
ZWNvbmRzIQotIiIiKQotCi0KLWNsYXNzIFJ1bkxMSU5UQ0xvb3BUZXN0c1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiBhc3NlcnRSZXN1bHRzKHNlbGYsIGV4cGVjdGVkX3Jlc3VsdCwg
ZXhwZWN0ZWRfdGV4dCwgcmMsIHN0ZGlvKToKLSAgICAgICAgY21kID0gU3R1YlJlbW90ZUNvbW1h
bmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0gUnVuTExJTlRDTG9vcFRlc3RzKCkKLSAgICAg
ICAgc3RlcC5jb21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBhY3R1YWxfcmVzdWx0cyA9IHN0
ZXAuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFsX3RleHQgPSBzdGVwLmdldFRl
eHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZF9yZXN1bHQsIGFjdHVhbF9yZXN1bHRzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFj
dHVhbF90ZXh0LCBleHBlY3RlZF90ZXh0KQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbJzUgcmVncmVzc2lvbnMgZm91
bmQuJ10sIDEsICAnICAgIDUgcmVncmVzc2lvbnMgZm91bmQuJykKLQotICAgIGRlZiB0ZXN0X2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhGQUlMVVJFLCBbJzEgcmVn
cmVzc2lvbiBmb3VuZC4nXSwgMSwgICcgICAgMSByZWdyZXNzaW9uIGZvdW5kLicpCi0KLSAgICBk
ZWYgdGVzdF9ub19mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJlc3VsdHMoU1VD
Q0VTUywgWyd3ZWJraXQtanNjLWNsb29wLXRlc3QnXSwgMCwgICcgICAgMCByZWdyZXNzaW9ucyBm
b3VuZC4nKQotCi0KLWNsYXNzIFJ1bjMyYml0SlNDVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCBleHBlY3RlZF9yZXN1bHQsIGV4cGVjdGVk
X3RleHQsIHJjLCBzdGRpbyk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5kKHJjLCBz
dGRpbykKLSAgICAgICAgc3RlcCA9IFJ1bjMyYml0SlNDVGVzdHMoKQotICAgICAgICBzdGVwLmNv
bW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5ldmFsdWF0
ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0ZXAuZ2V0VGV4dDIoY21kLCBh
Y3R1YWxfcmVzdWx0cykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jlc3Vs
dCwgYWN0dWFsX3Jlc3VsdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3RleHQs
IGV4cGVjdGVkX3RleHQpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnNSByZWdyZXNzaW9ucyBmb3VuZC4nXSwgMSwg
ICcgICAgNSBmYWlsdXJlcyBmb3VuZC4nKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKEZBSUxVUkUsIFsnMSByZWdyZXNzaW9uIGZvdW5k
LiddLCAxLCAgJyAgICAxIGZhaWx1cmUgZm91bmQuJykKLQotICAgIGRlZiB0ZXN0X25vX2ZhaWx1
cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyhTVUNDRVNTLCBbJ3dlYmtpdC0z
MmJpdC1qc2MtdGVzdCddLCAwLCAgJyAgICAwIGZhaWx1cmVzIGZvdW5kLicpCi0KLQotY2xhc3Mg
UnVuQVBJVGVzdHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0RmFpbHVy
ZXMoc2VsZiwgZXhwZWN0ZWRfZmFpbHVyZV9jb3VudCwgc3RkaW8pOgotICAgICAgICBpZiBleHBl
Y3RlZF9mYWlsdXJlX2NvdW50OgotICAgICAgICAgICAgcmMgPSAxCi0gICAgICAgICAgICBleHBl
Y3RlZF9yZXN1bHRzID0gRkFJTFVSRQotICAgICAgICAgICAgcGx1cmFsX3N1ZmZpeCA9ICIiIGlm
IGV4cGVjdGVkX2ZhaWx1cmVfY291bnQgPT0gMSBlbHNlICJzIgotICAgICAgICAgICAgZXhwZWN0
ZWRfdGV4dCA9ICclZCBhcGkgdGVzdCVzIGZhaWxlZCBvciB0aW1lZCBvdXQnICUgKGV4cGVjdGVk
X2ZhaWx1cmVfY291bnQsIHBsdXJhbF9zdWZmaXgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByYyA9IDAKLSAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3VsdHMgPSBTVUNDRVNTCi0gICAgICAg
ICAgICBleHBlY3RlZF90ZXh0ID0gJ3J1bi1hcGktdGVzdHMnCi0KLSAgICAgICAgY21kID0gU3R1
YlJlbW90ZUNvbW1hbmQocmMsIHN0ZGlvKQotICAgICAgICBzdGVwID0gUnVuQVBJVGVzdHMoKQot
ICAgICAgICBzdGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRz
ID0gc3RlcC5ldmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfZmFpbHVyZV9jb3Vu
dCA9IHN0ZXAuZmFpbGVkVGVzdENvdW50Ci0gICAgICAgIGFjdHVhbF90ZXh0ID0gc3RlcC5nZXRU
ZXh0KGNtZCwgYWN0dWFsX3Jlc3VsdHMpWzBdCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9yZXN1bHRzLCBhY3R1YWxfcmVzdWx0cykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChleHBlY3RlZF9mYWlsdXJlX2NvdW50LCBhY3R1YWxfZmFpbHVyZV9jb3VudCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90ZXh0LCBhY3R1YWxfdGV4dCkKLQotICAgIGRlZiB0
ZXN0X25vX2ZhaWx1cmVzX29yX3RpbWVvdXRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEZh
aWx1cmVzKDAsICIiIi4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRvckFt
cGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zh
cmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldU
Rl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGluZwot
UmFuIDE4ODggdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODggc3VjY2Vzc2Z1bAotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1BbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5IHBhc3NlZCEKLSIiIikK
LQotICAgIGRlZiB0ZXN0X25vX2ZhaWx1cmVzX29yX3RpbWVvdXRzX3dpdGhfZGlzYWJsZWQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMCwgIiIiLi4uCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdU
Ri5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJl
ZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3Nl
ZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQ
YXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24g
UGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4MSB0ZXN0cyBvZiAxODg4IHdpdGggMTg4
MSBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFsbCB0ZXN0cyBz
dWNjZXNzZnVsbHkgcGFzc2VkIQotIiIiKQotCi0gICAgZGVmIHRlc3Rfb25lX2ZhaWx1cmUoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZXMoMSwgIiIiLi4uCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdU
Ri5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJl
ZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3Nl
ZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQ
YXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24g
UGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4
NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUg
ZmFpbGVkCi0KLUNyYXNoZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vu
c2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAot
Ci0gICAgICAgIEM6XFxjeWd3aW5cXGhvbWVcXGJ1aWxkYm90XFx3b3JrZXJcXHdpbi1yZWxlYXNl
XFxidWlsZFxcVG9vbHNcXFRlc3RXZWJLaXRBUElcXFRlc3RzXFxXVEZcXFN0cmluZ0NvbmNhdGVu
YXRlLmNwcDo4NAotICAgICAgICBWYWx1ZSBvZjogbWFrZVN0cmluZygiaGVsbG8gIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQgc2hvcnQ+KDQyKSAsICIgd29ybGQiKQotICAgICAgICAgIEFjdHVhbDog
aGVsbG8gNDIgd29ybGQKLSAgICAgICAgRXhwZWN0ZWQ6ICJoZWxsbyAqIHdvcmxkIgotICAgICAg
ICBXaGljaCBpczogNzRCMDBDOUMKLQotVGVzdGluZyBjb21wbGV0ZWQsIEV4aXQgc3RhdHVzOiAz
Ci0iIiIpCi0KLSAgICBkZWYgdGVzdF9tdWx0aXBsZV9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRGYWlsdXJlcygyLCAiIiIuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zhcmlh
bnQuT3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
LlJlZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBU
ZXN0V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2Vy
LzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtl
ci8wIGV4aXRpbmcKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODggd2l0aCAxODg2IHN1Y2Nlc3NmdWwK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGVzdCBzdWl0ZSBmYWlsZWQKLQotQ3Jh
c2hlZAotCi0gICAgVGVzdFdURi5XVEYuU3RyaW5nQ29uY2F0ZW5hdGVfVW5zaWduZWQKLSAgICAg
ICAgKipGQUlMKiogV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0KLSAgICAgICAgQzpc
XGN5Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdvcmtlclxcd2luLXJlbGVhc2VcXGJ1aWxkXFxUb29s
c1xcVGVzdFdlYktpdEFQSVxcVGVzdHNcXFdURlxcU3RyaW5nQ29uY2F0ZW5hdGUuY3BwOjg0Ci0g
ICAgICAgIFZhbHVlIG9mOiBtYWtlU3RyaW5nKCJoZWxsbyAiLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBzaG9ydD4oNDIpICwgIiB3b3JsZCIpCi0gICAgICAgICAgQWN0dWFsOiBoZWxsbyA0MiB3b3Js
ZAotICAgICAgICBFeHBlY3RlZDogImhlbGxvICogd29ybGQiCi0gICAgICAgIFdoaWNoIGlzOiA3
NEIwMEM5QwotCi0gICAgVGVzdFdURi5XVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotICAgICAgICAq
KkZBSUwqKiBXVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotCi0gICAgICAgIEM6XFxjeWd3aW5cXGhv
bWVcXGJ1aWxkYm90XFx3b3JrZXJcXHdpbi1yZWxlYXNlXFxidWlsZFxcVG9vbHNcXFRlc3RXZWJL
aXRBUElcXFRlc3RzXFxXVEZcXEV4cGVjdGVkLmNwcDo5NgotICAgICAgICBWYWx1ZSBvZjogczEK
LSAgICAgICAgICBBY3R1YWw6IG9vcHMKLSAgICAgICAgRXhwZWN0ZWQ6IHMwCi0gICAgICAgIFdo
aWNoIGlzOiBvb3BzCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotIiIiKQot
Ci0gICAgZGVmIHRlc3Rfb25lX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFp
bHVyZXMoMSwgIiIiLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1w
ZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13
b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RX
VEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFy
aWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RG
X1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1S
YW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLVRpbWVvdXQKLQotICAgICBU
ZXN0V1RGLldURl9Qb2lzb25lZFVuaXF1ZVB0ckZvclRyaXZpYWxseURlc3RydWN0aWJsZUFycmF5
cy5Bc3NpZ25tZW50Ci0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotIiIiKQot
Ci0gICAgZGVmIHRlc3RfbXVsdGlwbGVfdGltZW91dHMoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RmFpbHVyZXMoMiwgIiIiLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJh
dG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFz
c2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8w
IFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5X
VEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RX
VEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0
aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NiBzdWNjZXNzZnVsCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLVRpbWVvdXQKLQot
ICAgIFRlc3RXVEYuV1RGX1BvaXNvbmVkVW5pcXVlUHRyRm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxl
QXJyYXlzLkFzc2lnbm1lbnQKLSAgICBUZXN0V1RGLldURl9Mb2NrLkNvbnRlbmRlZFNob3J0U2Vj
dGlvbgotCi1UZXN0aW5nIGNvbXBsZXRlZCwgRXhpdCBzdGF0dXM6IDMKLSIiIikKLQotICAgIGRl
ZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzX2FuZF90aW1lb3V0cyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWlsdXJlcyg0LCAiIiIuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQu
T3BlcmF0b3JBbXBlcnNhbmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJl
ZiBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAotd29y
a2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2VyLzAg
VGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLXdvcmtlci8w
IGV4aXRpbmcKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODggd2l0aCAxODg0IHN1Y2Nlc3NmdWwKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotVGVzdCBzdWl0ZSBmYWlsZWQKLQotQ3Jhc2hl
ZAotCi0gICAgVGVzdFdURi5XVEYuU3RyaW5nQ29uY2F0ZW5hdGVfVW5zaWduZWQKLSAgICAgICAg
KipGQUlMKiogV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0KLSAgICAgICAgQzpcXGN5
Z3dpblxcaG9tZVxcYnVpbGRib3RcXHdvcmtlclxcd2luLXJlbGVhc2VcXGJ1aWxkXFxUb29sc1xc
VGVzdFdlYktpdEFQSVxcVGVzdHNcXFdURlxcU3RyaW5nQ29uY2F0ZW5hdGUuY3BwOjg0Ci0gICAg
ICAgIFZhbHVlIG9mOiBtYWtlU3RyaW5nKCJoZWxsbyAiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydD4oNDIpICwgIiB3b3JsZCIpCi0gICAgICAgICAgQWN0dWFsOiBoZWxsbyA0MiB3b3JsZAot
ICAgICAgICBFeHBlY3RlZDogImhlbGxvICogd29ybGQiCi0gICAgICAgIFdoaWNoIGlzOiA3NEIw
MEM5QwotCi0gICAgVGVzdFdURi5XVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotICAgICAgICAqKkZB
SUwqKiBXVEZfRXhwZWN0ZWQuVW5leHBlY3RlZAotCi0gICAgICAgIEM6XFxjeWd3aW5cXGhvbWVc
XGJ1aWxkYm90XFx3b3JrZXJcXHdpbi1yZWxlYXNlXFxidWlsZFxcVG9vbHNcXFRlc3RXZWJLaXRB
UElcXFRlc3RzXFxXVEZcXEV4cGVjdGVkLmNwcDo5NgotICAgICAgICBWYWx1ZSBvZjogczEKLSAg
ICAgICAgICBBY3R1YWw6IG9vcHMKLSAgICAgICAgRXhwZWN0ZWQ6IHMwCi0gICAgICAgIFdoaWNo
IGlzOiBvb3BzCi0KLVRpbWVvdXQKLQotICAgIFRlc3RXVEYuV1RGX1BvaXNvbmVkVW5pcXVlUHRy
Rm9yVHJpdmlhbGx5RGVzdHJ1Y3RpYmxlQXJyYXlzLkFzc2lnbm1lbnQKLSAgICBUZXN0V1RGLldU
Rl9Mb2NrLkNvbnRlbmRlZFNob3J0U2VjdGlvbgotCi1UZXN0aW5nIGNvbXBsZXRlZCwgRXhpdCBz
dGF0dXM6IDMKLSIiIikKLQotCi1jbGFzcyBCdWlsZFN0ZXBzQ29uc3RydWN0b3JUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICAjICJQYXNzaW5nIGEgQnVpbGRTdGVwIHN1YmNsYXNzIHRvIGZh
Y3RvcnkuYWRkU3RlcCBpcyBkZXByZWNhdGVkLiBQbGVhc2UgcGFzcyBhIEJ1aWxkU3RlcCBpbnN0
YW5jZSBpbnN0ZWFkLiAgU3VwcG9ydCB3aWxsIGJlIGRyb3BwZWQgaW4gdjAuOC43LiIKLSAgICAj
IEl0IGNoZWNrcyBpZiBhbGwgYnVpbGRlcidzIGFsbCBidWlsZHN0ZXBzIGNhbiBiZSBpbnNhbnRp
YXRlZCBhZnRlciBtaWdyYXRpb24uCi0gICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODkwMDEKLSAgICAjIGh0dHA6Ly9idWlsZGJvdC5uZXQvYnVpbGRib3QvZG9j
cy8wLjguNnAxL21hbnVhbC9jdXN0b21pemF0aW9uLmh0bWwjd3JpdGluZy1idWlsZHN0ZXAtY29u
c3RydWN0b3JzCi0KLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIGdlbmVyYXRlVGVzdHMoKToK
LSAgICAgICAgZm9yIGJ1aWxkZXJOdW1iZXIsIGJ1aWxkZXIgaW4gZW51bWVyYXRlKGNbJ2J1aWxk
ZXJzJ10pOgotICAgICAgICAgICAgZm9yIHN0ZXBOdW1iZXIsIHN0ZXAgaW4gZW51bWVyYXRlKGJ1
aWxkZXJbJ2ZhY3RvcnknXS5zdGVwcyk6Ci0gICAgICAgICAgICAgICAgYnVpbGRlck5hbWUgPSBi
dWlsZGVyWyduYW1lJ10uZW5jb2RlKCdhc2NpaScsICdpZ25vcmUnKQotICAgICAgICAgICAgICAg
IHNldGF0dHIoQnVpbGRTdGVwc0NvbnN0cnVjdG9yVGVzdCwgJ3Rlc3RfYnVpbGRlciUwMmRfc3Rl
cCUwMmQnICUgKGJ1aWxkZXJOdW1iZXIsIHN0ZXBOdW1iZXIpLCBCdWlsZFN0ZXBzQ29uc3RydWN0
b3JUZXN0LmNyZWF0ZVRlc3QoYnVpbGRlck5hbWUsIHN0ZXApKQotCi0gICAgQHN0YXRpY21ldGhv
ZAotICAgIGRlZiBjcmVhdGVUZXN0KGJ1aWxkZXJOYW1lLCBzdGVwKToKLSAgICAgICAgZGVmIGRv
VGVzdChzZWxmKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBidWlsZFN0ZXBG
YWN0b3J5LCBrd2FyZ3MgPSBzdGVwCi0gICAgICAgICAgICAgICAgYnVpbGRTdGVwRmFjdG9yeSgq
Kmt3YXJncykKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKLSAgICAgICAgICAg
ICAgICBidWlsZFN0ZXBOYW1lID0gc3RyKGJ1aWxkU3RlcEZhY3RvcnkpLnNwbGl0KCcuJylbLTFd
Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJFcnJvciBkdXJpbmcgaW5zdGFudGlhdGlvbiAl
cyBidWlsZHN0ZXAgZm9yICVzIGJ1aWxkZXI6ICVzXG4iICUgKGJ1aWxkU3RlcE5hbWUsIGJ1aWxk
ZXJOYW1lLCBlKSkKLSAgICAgICAgcmV0dXJuIGRvVGVzdAotCi0KLWV4cGVjdGVkX2J1aWxkX3N0
ZXBzID0gewotICAgICdBcHBsZS1XaW4tMTAtRGVidWctVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWls
ZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJl
Y3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUnLCAnZG93bmxvYWQt
YnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnanNjb3JlLXRlc3QnLCAn
bGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBl
cmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRv
ci10ZXN0cycsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxD
b21tYW5kJ10sCi0gICAgJ0FwcGxlLVdpbi0xMC1SZWxlYXNlLVRlc3RzJzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQt
ZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlJywgJ2Rvd25s
b2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0
JywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJr
aXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5l
cmF0b3ItdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNo
ZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1XaW4tMTAtRGVidWctQnVpbGQnOiBbJ2NvbmZpZ3Vy
ZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWls
ZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUnLCAnY29t
cGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zl
ci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLVdpbi0xMC1SZWxlYXNlLUJ1aWxkJzog
Wydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUt
V2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21w
aWxlJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQn
LCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotCi0gICAgJ0FwcGxlLUJpZ1N1ci1SZWxl
YXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3Nl
cycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1m
aWxlcycsICdjb21waWxlLXdlYmtpdCddLAotCi0gICAgJ0FwcGxlLUNhdGFsaW5hLURlYnVnLUJ1
aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdk
ZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycs
ICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ2Fy
Y2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAndHJpZ2dl
ciddLAotICAgICdBcHBsZS1DYXRhbGluYS1EZWJ1Zy1KU0MtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1i
dWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1k
aXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0J10sCi0gICAgJ0Fw
cGxlLUNhdGFsaW5hLURlYnVnLVRlc3QyNjItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdz
dm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rvcnkn
LCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAn
ZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3Rlc3QyNjItdGVzdCddLAotICAgICdBcHBsZS1DYXRh
bGluYS1EZWJ1Zy1XSzEtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1v
bGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0
YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWls
dC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5b3V0LXRlc3QnLCAn
cnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtpdHB5LXRlc3QnLCAnd2Vi
a2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAnYnVpbHRpbnMtZ2Vu
ZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJt
aXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENv
bW1hbmQnXSwKLSAgICAnQXBwbGUtQ2F0YWxpbmEtRGVidWctV0syLVRlc3RzJzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWls
dC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xs
ZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVz
dCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0
aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMn
LCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycs
ICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLURl
YnVnLVdLMi1HUFVQcm9jZXNzLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tp
bGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0
ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3Qt
YnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0
JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxkYi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0Jywg
J3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5z
LWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ct
c3VibWlzc2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hl
bGxDb21tYW5kJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLUxMSU5ULUNMb29wLUJ1aWxkQW5kVGVz
dCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
Y29tcGlsZS13ZWJraXQnLCAnd2Via2l0LWpzYy1jbG9vcC10ZXN0J10sCi0gICAgJ0FwcGxlLUNh
dGFsaW5hLVJlbGVhc2UtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1v
bGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0
YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVj
dCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zl
ci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLUNhdGFsaW5hLVJlbGVhc2UtSlNDLVRl
c3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdk
ZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycs
ICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2Nv
cmUtdGVzdCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVRlc3QyNjItVGVzdHMnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25s
b2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3Rlc3QyNjItdGVz
dCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMS1UZXN0cyc6IFsnY29uZmlndXJl
LWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxk
LWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQt
cHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVj
dGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3Qn
LCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlv
bi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywg
J3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAn
dXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxl
YXNlLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9j
ZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVp
bGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1
Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBp
LXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJs
LXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24n
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCdd
LAotICAgICdBcHBsZS1DYXRhbGluYS1SZWxlYXNlLVdLMi1QZXJmJzogWydjb25maWd1cmUtYnVp
bGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGly
ZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9k
dWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdwZXJmLXRlc3QnXSwKLSAgICAnQXBwbGUt
Q2F0YWxpbmEtUmVsZWFzZS1XSzItV2ViR0wtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdz
dm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rvcnkn
LCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAn
ZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5
b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtpdHB5
LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAn
YnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNy
YXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdN
YXN0ZXJTaGVsbENvbW1hbmQnXSwKLQotICAgICdBcHBsZS1Nb2phdmUtRGVidWctQnVpbGQnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1X
ZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBp
bGUtd2Via2l0JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1i
dWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0g
ICAgJ0FwcGxlLU1vamF2ZS1EZWJ1Zy1XSzEtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdz
dm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rvcnkn
LCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAn
ZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nLCAnbGF5
b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICdsbGRiLXdlYmtpdC10ZXN0JywgJ3dlYmtpdHB5
LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24tdGVzdHMnLCAn
YnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2Rhc2hib2FyZC10ZXN0cycsICd0cmlnZ2VyLWNy
YXNoLWxvZy1zdWJtaXNzaW9uJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdN
YXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnQXBwbGUtTW9qYXZlLURlYnVnLVdLMi1UZXN0cyc6
IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRl
LVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93
bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3It
Y3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3RzJywgJ2xsZGIt
d2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGlu
Z3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJv
YXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1N
b2phdmUtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0
JywgJ3VwbG9hZCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVy
LXRvLXMzJywgJ3RyaWdnZXInXSwKLSAgICAnQXBwbGUtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3Rz
JzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxl
dGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdk
b3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZv
ci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnbGxk
Yi13ZWJraXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5k
aW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNo
Ym9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbicsICdhcmNoaXZlLXRl
c3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0gICAgJ0FwcGxl
LU1vamF2ZS1SZWxlYXNlLVdLMi1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0
LWJ1aWx0LXByb2R1Y3QnLCAnd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICdsYXlvdXQtdGVz
dCcsICdydW4tYXBpLXRlc3RzJywgJ2xsZGItd2Via2l0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcs
ICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlu
cy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9n
LXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNo
ZWxsQ29tbWFuZCddLAotICAgICdBcHBsZS1Nb2phdmUtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmln
dXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1
aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJr
aXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICdhcmNoaXZlLWJ1aWx0LXBy
b2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdnZXInXSwKLQotICAgICdB
cHBsZS1pT1MtMTQtUmVsZWFzZS1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdr
aWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxl
dGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnXSwKLSAgICAnQXBwbGUtaU9T
LTE0LVNpbXVsYXRvci1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywg
J2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2Rl
bGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0
LXByb2R1Y3QnLCAndXBsb2FkJywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAn
dHJhbnNmZXItdG8tczMnLCAndHJpZ2dlciddLAotICAgICdBcHBsZS1pT1MtMTQtU2ltdWxhdG9y
LVJlbGVhc2UtV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQt
cHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1
bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGlu
Z3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJv
YXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotCi0gICAgJ0FwcGxl
LWlPUy0xNC1TaW11bGF0b3ItRGVidWctQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4n
LCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAn
ZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2FyY2hpdmUtYnVp
bHQtcHJvZHVjdCcsICd1cGxvYWQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcs
ICd0cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0FwcGxlLWlPUy0xNC1TaW11bGF0
b3ItRGVidWctV0syLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQt
cHJvZHVjdCcsICd3YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1
bi1hcGktdGVzdHMnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGlu
Z3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJv
YXJkLXRlc3RzJywgJ3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0
LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCddLAotCi0gICAgJ0FwcGxl
LWlQYWRPUy0xNC1TaW11bGF0b3ItUmVsZWFzZS1XSzItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWls
ZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJl
Y3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1
Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24n
LCAnbGF5b3V0LXRlc3QnLCAncnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtp
dHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVy
YXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMnLCAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlz
c2lvbicsICdhcmNoaXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21t
YW5kJ10sCi0gICAgJ0FwcGxlLWlQYWRPUy0xNC1TaW11bGF0b3ItRGVidWctV0syLVRlc3RzJzog
Wydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUt
V2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3du
bG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICd3YWl0LWZvci1j
cmFzaC1jb2xsZWN0aW9uJywgJ2xheW91dC10ZXN0JywgJ3J1bi1hcGktdGVzdHMnLCAnd2Via2l0
cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycs
ICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ3RyaWdnZXIt
Y3Jhc2gtbG9nLXN1Ym1pc3Npb24nLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywg
J01hc3RlclNoZWxsQ29tbWFuZCddLAotCi0gICAgJ0FwcGxlLXR2T1MtMTQtUmVsZWFzZS1CdWls
ZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
Y29tcGlsZS13ZWJraXQnXSwKLSAgICAnQXBwbGUtdHZPUy1TaW11bGF0b3ItMTQtUmVsZWFzZS1C
dWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAn
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMn
LCAnY29tcGlsZS13ZWJraXQnXSwKLQotICAgICdBcHBsZS13YXRjaE9TLTctUmVsZWFzZS1CdWls
ZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
Y29tcGlsZS13ZWJraXQnXSwKLSAgICAnQXBwbGUtd2F0Y2hPUy1TaW11bGF0b3ItNy1SZWxlYXNl
LUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3Nlcycs
ICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxl
cycsICdjb21waWxlLXdlYmtpdCddLAotCi0gICAgJ0pTQ09ubHktTGludXgtQVJNdjctVGh1bWIy
LVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVsZXRlLVdlYktpdEJ1aWxk
LWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQn
LCAnanNjb3JlLXRlc3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1BUk12Ny1UaHVtYjItU29mdEZQ
LVJlbGVhc2UnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVsZXRlLVdlYktpdEJ1aWxk
LWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQn
LCAnanNjb3JlLXRlc3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1BQXJjaDY0LVJlbGVhc2UnOiBb
J2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScs
ICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnY29tcGlsZS13ZWJraXQnLCAnanNjb3JlLXRl
c3QnXSwKLSAgICAnSlNDT25seS1MaW51eC1NSVBTMzJlbC1SZWxlYXNlJzogWydjb25maWd1cmUt
YnVpbGQnLCAnc3ZuJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0
YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0JywgJ2pzY29yZS10ZXN0J10sCi0KLSAg
ICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2
bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScs
ICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdjb21waWxlLXdlYmtpdCcs
ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3Ry
aWdnZXInXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0cyc6IFsnY29uZmlndXJl
LWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxk
LWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3du
bG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdsYXlvdXQtdGVz
dCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0
aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMn
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCcs
ICdBUEktdGVzdHMnXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1XZWJEcml2ZXItVGVz
dHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2Rl
bGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywg
J2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1
Y3QnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnR1RLLUxpbnV4LTY0LWJpdC1EZWJ1Zy1KUy1U
ZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAn
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMn
LCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJv
ZHVjdCcsICdqc2NvcmUtdGVzdCcsICd0ZXN0MjYyLXRlc3QnXSwKLSAgICAnR1RLLUxpbnV4LTY0
LWJpdC1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0JywgJ2dlbmVyYXRlLWpz
Yy1idW5kbGUnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0cmFuc2Zlci10
by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ0dUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1QZXJmJzog
Wydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUt
V2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1
aWxkJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0Jywg
J3BlcmYtdGVzdCcsICdiZW5jaG1hcmstdGVzdCddLAotICAgICdHVEstTGludXgtNjQtYml0LVJl
bGVhc2UtVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vz
c2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxk
LWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1
aWx0LXByb2R1Y3QnLCAnbGF5b3V0LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJs
LXRlc3QnLCAnYmluZGluZ3MtZ2VuZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3It
dGVzdHMnLCAnZGFzaGJvYXJkLXRlc3RzJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9h
ZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnLCAnQVBJLXRlc3RzJ10sCi0gICAgJ0dUSy1MaW51eC02
NC1iaXQtUmVsZWFzZS1XZWJEcml2ZXItVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4n
LCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAn
ZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAnZG93bmxvYWQtYnVpbHQtcHJv
ZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAn
R1RLLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUpTLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2Rvd25sb2FkLWJ1aWx0
LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0JywgJ3Rlc3Qy
NjItdGVzdCddLAotICAgICdHVEstTGludXgtNjQtYml0LVJlbGVhc2UtV2F5bGFuZC1UZXN0cyc6
IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRl
LVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhi
dWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcs
ICdsYXlvdXQtdGVzdCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5k
aW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNo
Ym9hcmQtdGVzdHMnLCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNo
ZWxsQ29tbWFuZCcsICdBUEktdGVzdHMnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnR1RLLUxp
bnV4LTY0LWJpdC1SZWxlYXNlLVVidW50dS1MVFMtQnVpbGQnOiBbJ2NvbmZpZ3VyZS1idWlsZCcs
ICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3Rv
cnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2NvbXBpbGUtd2Via2l0J10sCi0gICAg
J0dUSy1MaW51eC02NC1iaXQtUmVsZWFzZS1EZWJpYW4tU3RhYmxlLUJ1aWxkJzogWydjb25maWd1
cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVp
bGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtp
dCddLAotCi0gICAgJ1BsYXlTdGF0aW9uLURlYnVnLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQn
LCAnc3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0
b3J5JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotICAg
ICdQbGF5U3RhdGlvbi1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywg
J2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2Rl
bGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCddLAotCi0gICAgJ1dpbkNh
aXJvLTY0LWJpdC1KU0MtRGVidWctVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAn
a2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVs
ZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFj
dC1idWlsdC1wcm9kdWN0JywgJ2pzY29yZS10ZXN0J10sCi0gICAgJ1dpbkNhaXJvLTY0LWJpdC1K
U0MtUmVsZWFzZS1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1w
cm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUt
YnVpbGQtZmlsZXMnLCAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXBy
b2R1Y3QnLCAnanNjb3JlLXRlc3QnXSwKLSAgICAnV2luQ2Fpcm8tNjQtYml0LVdLTC1EZWJ1Zy1C
dWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAn
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMn
LCAnY29tcGlsZS13ZWJraXQnLCAnYXJjaGl2ZS1idWlsdC1wcm9kdWN0JywgJ3VwbG9hZCcsICd0
cmFuc2Zlci10by1zMycsICd0cmlnZ2VyJ10sCi0gICAgJ1dpbkNhaXJvLTY0LWJpdC1XS0wtRGVi
dWctVGVzdHMnOiBbJ2NvbmZpZ3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2Vz
JywgJ2RlbGV0ZS1XZWJLaXRCdWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZp
bGVzJywgJ2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnZXh0cmFjdC1idWlsdC1wcm9kdWN0Jywg
J3dpbmNhaXJvLXJlcXVpcmVtZW50cycsICdsYXlvdXQtdGVzdCcsICdydW4tYXBpLXRlc3RzJywg
J3dlYmtpdHB5LXRlc3QnLCAnd2Via2l0cGVybC10ZXN0JywgJ2JpbmRpbmdzLWdlbmVyYXRpb24t
dGVzdHMnLCAnYnVpbHRpbnMtZ2VuZXJhdG9yLXRlc3RzJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRz
JywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1hbmQnXSwKLSAgICAnV2luQ2Fpcm8tNjQtYml0
LVdLTC1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tpbGwtb2xk
LXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0ZS1zdGFs
ZS1idWlsZC1maWxlcycsICdjb21waWxlLXdlYmtpdCcsICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3Qn
LCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3RyaWdnZXInXSwKLSAgICAnV2luQ2Fpcm8t
NjQtYml0LVdLTC1SZWxlYXNlLVRlc3RzJzogWydjb25maWd1cmUtYnVpbGQnLCAnc3ZuJywgJ2tp
bGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JywgJ2RlbGV0
ZS1zdGFsZS1idWlsZC1maWxlcycsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3Qt
YnVpbHQtcHJvZHVjdCcsICd3aW5jYWlyby1yZXF1aXJlbWVudHMnLCAnbGF5b3V0LXRlc3QnLCAn
cnVuLWFwaS10ZXN0cycsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5k
aW5ncy1nZW5lcmF0aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdhcmNo
aXZlLXRlc3QtcmVzdWx0cycsICd1cGxvYWQnLCAnTWFzdGVyU2hlbGxDb21tYW5kJ10sCi0KLSAg
ICAnV1BFLUxpbnV4LTY0LWJpdC1SZWxlYXNlLUJ1aWxkJzogWydjb25maWd1cmUtYnVpbGQnLCAn
c3ZuJywgJ2tpbGwtb2xkLXByb2Nlc3NlcycsICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5
JywgJ2RlbGV0ZS1zdGFsZS1idWlsZC1maWxlcycsICdqaGJ1aWxkJywgJ2NvbXBpbGUtd2Via2l0
JywgJ2FyY2hpdmUtYnVpbHQtcHJvZHVjdCcsICd1cGxvYWQnLCAndHJhbnNmZXItdG8tczMnLCAn
dHJpZ2dlciddLAotICAgICdXUEUtTGludXgtNjQtYml0LVJlbGVhc2UtVGVzdHMnOiBbJ2NvbmZp
Z3VyZS1idWlsZCcsICdzdm4nLCAna2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2RlbGV0ZS1XZWJLaXRC
dWlsZC1kaXJlY3RvcnknLCAnZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzJywgJ2poYnVpbGQnLCAn
ZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICdleHRyYWN0LWJ1aWx0LXByb2R1Y3QnLCAnbGF5b3V0
LXRlc3QnLCAnd2Via2l0cHktdGVzdCcsICd3ZWJraXRwZXJsLXRlc3QnLCAnYmluZGluZ3MtZ2Vu
ZXJhdGlvbi10ZXN0cycsICdidWlsdGlucy1nZW5lcmF0b3ItdGVzdHMnLCAnZGFzaGJvYXJkLXRl
c3RzJywgJ2FyY2hpdmUtdGVzdC1yZXN1bHRzJywgJ3VwbG9hZCcsICdNYXN0ZXJTaGVsbENvbW1h
bmQnLCAnQVBJLXRlc3RzJywgJ3dlYmRyaXZlci10ZXN0J10sCi0gICAgJ1dQRS1MaW51eC02NC1i
aXQtUmVsZWFzZS1KUy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9s
ZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3Rh
bGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4
dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICd0ZXN0MjYyLXRlc3QnXSwKLSAg
ICAnV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1CdWlsZCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2
bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScs
ICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdjb21waWxlLXdlYmtpdCcs
ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnLCAndXBsb2FkJywgJ3RyYW5zZmVyLXRvLXMzJywgJ3Ry
aWdnZXInXSwKLSAgICAnV1BFLUxpbnV4LTY0LWJpdC1EZWJ1Zy1UZXN0cyc6IFsnY29uZmlndXJl
LWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxk
LWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3du
bG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3QtYnVpbHQtcHJvZHVjdCcsICdsYXlvdXQtdGVz
dCcsICd3ZWJraXRweS10ZXN0JywgJ3dlYmtpdHBlcmwtdGVzdCcsICdiaW5kaW5ncy1nZW5lcmF0
aW9uLXRlc3RzJywgJ2J1aWx0aW5zLWdlbmVyYXRvci10ZXN0cycsICdkYXNoYm9hcmQtdGVzdHMn
LCAnYXJjaGl2ZS10ZXN0LXJlc3VsdHMnLCAndXBsb2FkJywgJ01hc3RlclNoZWxsQ29tbWFuZCcs
ICdBUEktdGVzdHMnLCAnd2ViZHJpdmVyLXRlc3QnXSwKLSAgICAnV1BFLUxpbnV4LTY0LWJpdC1E
ZWJ1Zy1KUy1UZXN0cyc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9j
ZXNzZXMnLCAnZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVp
bGQtZmlsZXMnLCAnamhidWlsZCcsICdkb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJ2V4dHJhY3Qt
YnVpbHQtcHJvZHVjdCcsICdqc2NvcmUtdGVzdCcsICd0ZXN0MjYyLXRlc3QnXSwKLSAgICAnR1RL
LUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MTgwNCc6IFsnY29u
ZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdlYktp
dEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWlsZCcs
ICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5pYnJvd3Nlci1idW5kbGUnXSwKLSAgICAn
R1RLLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MjAwNCc6IFsn
Y29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRlLVdl
YktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhidWls
ZCcsICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5pYnJvd3Nlci1idW5kbGUnXSwKLSAg
ICAnV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MTgwNCc6
IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVsZXRl
LVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAnamhi
dWlsZCcsICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5pYnJvd3Nlci1idW5kbGUnXSwK
LSAgICAnV1BFLUxpbnV4LTY0Yml0LVJlbGVhc2UtUGFja2FnaW5nLU5pZ2h0bHktVWJ1bnR1MjAw
NCc6IFsnY29uZmlndXJlLWJ1aWxkJywgJ3N2bicsICdraWxsLW9sZC1wcm9jZXNzZXMnLCAnZGVs
ZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeScsICdkZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMnLCAn
amhidWlsZCcsICdjb21waWxlLXdlYmtpdCcsICdnZW5lcmF0ZS1taW5pYnJvd3Nlci1idW5kbGUn
XSwKLX0KLQotCi1jbGFzcyBCdWlsZFN0ZXBzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
QHN0YXRpY21ldGhvZAotICAgIGRlZiBnZW5lcmF0ZVRlc3RzKCk6Ci0gICAgICAgIGZvciBidWls
ZGVyIGluIGNbJ2J1aWxkZXJzJ106Ci0gICAgICAgICAgICBidWlsZGVyTmFtZSA9IGJ1aWxkZXJb
J25hbWUnXS5lbmNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpCi0gICAgICAgICAgICBzZXRhdHRyKEJ1
aWxkU3RlcHNUZXN0LCAndGVzdF9idWlsZGVyICVzJyAlIGJ1aWxkZXJOYW1lLCBCdWlsZFN0ZXBz
VGVzdC5jcmVhdGVUZXN0KGJ1aWxkZXIpKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRlZiBj
cmVhdGVUZXN0KGJ1aWxkZXIpOgotICAgICAgICBkZWYgZG9UZXN0KHNlbGYpOgotICAgICAgICAg
ICAgYnVpbGRTdGVwcyA9IFtdCi0gICAgICAgICAgICBmb3Igc3RlcCBpbiBidWlsZGVyWydmYWN0
b3J5J10uc3RlcHM6Ci0gICAgICAgICAgICAgICAgYnVpbGRTdGVwcy5hcHBlbmQoc3RlcFswXS5u
YW1lKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJbJ25hbWUnXSBpbiBleHBl
Y3RlZF9idWlsZF9zdGVwcywgIk1pc3NpbmcgZXhwZWN0ZWQgcmVzdWx0IGZvciBidWlsZGVyOiAl
c1xuIEFjdHVhbCByZXN1bHQgaXMgJXMiICUgKGJ1aWxkZXJbJ25hbWUnXSwgYnVpbGRTdGVwcykp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydExpc3RFcXVhbChleHBlY3RlZF9idWlsZF9zdGVwc1ti
dWlsZGVyWyduYW1lJ11dLCBidWlsZFN0ZXBzKQotCi0gICAgICAgIHJldHVybiBkb1Rlc3QKLQot
ICAgIGRlZiB0ZXN0X3VubmVjZXNzYXJ5X2V4cGVjdGVkX3Jlc3VsdHMoc2VsZik6Ci0gICAgICAg
IGJ1aWxkZXJzID0gc2V0KCkKLSAgICAgICAgZm9yIGJ1aWxkZXIgaW4gY1snYnVpbGRlcnMnXToK
LSAgICAgICAgICAgIGJ1aWxkZXJzLmFkZChidWlsZGVyWyduYW1lJ10uZW5jb2RlKCdhc2NpaScs
ICdpZ25vcmUnKSkKLQotICAgICAgICBmb3IgYnVpbGRlciBpbiBleHBlY3RlZF9idWlsZF9zdGVw
czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShidWlsZGVyIGluIGJ1aWxkZXJzLCAiQnVp
bGRlciAlcyBkb2Vzbid0IGV4aXN0LCBidXQgaGFzIHVubmVjZXNzYXJ5IGV4cGVjdGVkIHJlc3Vs
dHMiICUgYnVpbGRlcikKLQotCi1jbGFzcyBSdW5BbmRVcGxvYWRQZXJmVGVzdHNUZXN0KHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCByYywgZXhwZWN0ZWRf
dGV4dCk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5kKHJjLCBleHBlY3RlZF90ZXh0
KQotICAgICAgICBzdGVwID0gUnVuQW5kVXBsb2FkUGVyZlRlc3RzKCkKLSAgICAgICAgc3RlcC5j
b21tYW5kQ29tcGxldGUoY21kKQotICAgICAgICBhY3R1YWxfcmVzdWx0cyA9IHN0ZXAuZXZhbHVh
dGVDb21tYW5kKGNtZCkKLSAgICAgICAgYWN0dWFsX3RleHQgPSBzdHIoc3RlcC5nZXRUZXh0Mihj
bWQsIGFjdHVhbF9yZXN1bHRzKVswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF90ZXh0LCBhY3R1YWxfdGV4dCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0UmVzdWx0cygwLCAicGVyZi10ZXN0IikKLQotICAgIGRlZiB0ZXN0X3Rl
c3RzX2ZhaWxlZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDUsICI1IHBlcmYg
dGVzdHMgZmFpbGVkIikKLQotICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9idWlsZChzZWxmKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDI1NSwgImJ1aWxkIG5vdCB1cCB0byBkYXRlIikKLQot
ICAgIGRlZiB0ZXN0X2J1aWxkX2JhZF9zb3VyY2VfanNvbihzZWxmKToKLSAgICAgICAgc2VsZi5h
c3NlcnRSZXN1bHRzKDI1NCwgIndvcmtlciBjb25maWcgSlNPTiBlcnJvciIpCi0KLSAgICBkZWYg
dGVzdF9idWlsZF9iYWRfbWFyZ2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cygy
NTMsICJvdXRwdXQgSlNPTiBtZXJnZSBlcnJvciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9iYWRf
ZmFpbGVkX3VwbG9hZGluZyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDI1Miwg
InVwbG9hZCBlcnJvciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZF9iYWRfcHJlcGFyYXRpb24oc2Vs
Zik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cygyNTEsICJzeXN0ZW0gZGVwZW5kZW5jeSBl
cnJvciIpCi0KLSAgICBkZWYgdGVzdF9idWlsZGJvdF90aW1lb3V0KHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydFJlc3VsdHMoLTEsICJ0aW1lb3V0IikKLQotCi1jbGFzcyBSdW5CZW5jaG1hcmtU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0UmVzdWx0cyhzZWxmLCByYywg
ZXhwZWN0ZWRfdGV4dCk6Ci0gICAgICAgIGNtZCA9IFN0dWJSZW1vdGVDb21tYW5kKHJjLCBleHBl
Y3RlZF90ZXh0KQotICAgICAgICBzdGVwID0gUnVuQmVuY2htYXJrVGVzdHMoKQotICAgICAgICBz
dGVwLmNvbW1hbmRDb21wbGV0ZShjbWQpCi0gICAgICAgIGFjdHVhbF9yZXN1bHRzID0gc3RlcC5l
dmFsdWF0ZUNvbW1hbmQoY21kKQotICAgICAgICBhY3R1YWxfdGV4dCA9IHN0cihzdGVwLmdldFRl
eHQyKGNtZCwgYWN0dWFsX3Jlc3VsdHMpWzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkX3RleHQsIGFjdHVhbF90ZXh0KQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToK
LSAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRzKDAsICJiZW5jaG1hcmstdGVzdCIpCi0KLSAgICBk
ZWYgdGVzdF90ZXN0c19mYWlsZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0cyg3
LCAiNyBiZW5jaG1hcmsgdGVzdHMgZmFpbGVkIikKLQotCi0jIEZJWE1FOiBXZSBzaG91bGQgcnVu
IHRoaXMgZmlsZSBhcyBwYXJ0IG9mIHRlc3Qtd2Via2l0cHkuCi0jIFVuZm9ydHVuYXRlbHkgdGVz
dC13ZWJraXRweSBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKLSMgYmUgbG9jYXRl
ZCBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUuCi0jICdidWlsZC53ZWJr
aXQub3JnLWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0byAnLicgYW5k
ICctJykKLSMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBoYXJuZXNzLgot
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBCdWlsZEJvdENvbmZpZ0xvYWRlcigpLl9h
ZGRfZGVwZW5kZW50X21vZHVsZXNfdG9fc3lzX21vZHVsZXMoKQotICAgIGZyb20gbG9hZENvbmZp
ZyBpbXBvcnQgKgotICAgIGMgPSB7fQotICAgIGxvYWRCdWlsZGVyQ29uZmlnKGMsIGlzX3Rlc3Rf
bW9kZV9lbmFibGVkPVRydWUpCi0gICAgQnVpbGRTdGVwc0NvbnN0cnVjdG9yVGVzdC5nZW5lcmF0
ZVRlc3RzKCkKLSAgICBCdWlsZFN0ZXBzVGVzdC5nZW5lcmF0ZVRlc3RzKCkKLSAgICB1bml0dGVz
dC5tYWluKCkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3N0ZXBzX3VuaXR0ZXN0LnB5Cl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRl
ZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy90ZW1wbGF0ZXMvYnVpbGRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9idWlsZGVyLmh0
bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9idWlsZGVyLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAt
MSwxMTggKzAsMCBAQAoteyUgZnJvbSAnYnVpbGRfbGluZS5odG1sJyBpbXBvcnQgYnVpbGRfdGFi
bGUgJX0KLXslIGltcG9ydCAnZm9ybXMuaHRtbCcgYXMgZm9ybXMgJX0KLQoteyUgZXh0ZW5kcyAi
bGF5b3V0Lmh0bWwiICV9Ci17JSBibG9jayBjb250ZW50ICV9Ci0KLTxoMT5CdWlsZGVyIHt7IG5h
bWUgfX08L2gxPgotCi08cD4oPGEgaHJlZj0ie3sgcGF0aF90b19yb290IH19d2F0ZXJmYWxsP3No
b3c9e3sgbmFtZSB9fSI+dmlldyBpbiB3YXRlcmZhbGw8L2E+KTwvcD4KLQotPGRpdiBjbGFzcz0i
Y29sdW1uIj4KLQoteyUgaWYgY3VycmVudCAlfQotICA8aDI+Q3VycmVudCBCdWlsZHM6PC9oMj4K
LSAgPHVsPgotICB7JSBmb3IgYiBpbiBjdXJyZW50ICV9Ci0gICAgPGxpPjxhIGhyZWY9Int7IGIu
bGluayB9fSI+e3sgYi5udW0gfX08L2E+Ci0gICAgeyUgaWYgYi53aGVuICV9Ci0gICAgICBFVEE6
IHt7IGIud2hlbl90aW1lIH19IFt7eyBiLndoZW4gfX1dCi0gICAgeyUgZW5kaWYgJX0KLQotICAg
IHt7IGIuY3VycmVudF9zdGVwIH19Ci0KLSAgICB7JSBpZiBhdXRoei5hZHZlcnRpc2VBY3Rpb24o
J3N0b3BCdWlsZCcsIHJlcXVlc3QpICV9Ci0gICAgICB7eyBmb3Jtcy5zdG9wX2J1aWxkKGIuc3Rv
cF91cmwsIGF1dGh6LCBvbl9hbGw9RmFsc2UsIHNob3J0PVRydWUsIGxhYmVsPSdCdWlsZCcpIH19
Ci0gICAgeyUgZW5kaWYgJX0KLSAgICA8L2xpPgotICB7JSBlbmRmb3IgJX0KLSAgPC91bD4KLXsl
IGVsc2UgJX0KLSAgPGgyPk5vIGN1cnJlbnQgYnVpbGRzPC9oMj4KLXslIGVuZGlmICV9Ci0KLXsl
IGlmIHBlbmRpbmcgJX0KLSAgPGgyPlBlbmRpbmcgQnVpbGQgUmVxdWVzdHM6PC9oMj4KLSAgPHVs
PgotICB7JSBmb3IgYiBpbiBwZW5kaW5nICV9Ci0gICAgPGxpPjxzbWFsbD4oe3sgYi53aGVuIH19
LCB3YWl0aW5nIHt7IGIuZGVsYXkgfX0pPC9zbWFsbD4KLQotICAgIHslIGlmIGF1dGh6LmFkdmVy
dGlzZUFjdGlvbignY2FuY2VsUGVuZGluZ0J1aWxkJywgcmVxdWVzdCkgJX0KLSAgICAgIHt7IGZv
cm1zLmNhbmNlbF9wZW5kaW5nX2J1aWxkKGJ1aWxkZXJfdXJsKyIvY2FuY2VsYnVpbGQiLCBhdXRo
eiwgc2hvcnQ9VHJ1ZSwgaWQ9Yi5pZCkgfX0KLSAgICB7JSBlbmRpZiAlfQotCi0gICAgeyUgaWYg
Yi5udW1fY2hhbmdlcyA8IDQgJX0KLSAgICAgICAgeyUgZm9yIGMgaW4gYi5jaGFuZ2VzICV9e3sg
Yy5yZXZpc2lvbnxzaG9ydHJldihjLnJlcG8pIH19Ci0gICAgICAgICg8YSBocmVmPSJ7eyBjLnVy
bCB9fSI+e3sgYy53aG8gfX08L2E+KXslIGlmIG5vdCBsb29wLmxhc3QgJX0seyUgZW5kaWYgJX0K
LSAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgeyUgZWxzZSAlfQotICAgICAgICAoe3sgYi5udW1f
Y2hhbmdlcyB9fSBjaGFuZ2VzKQotICAgIHslIGVuZGlmICV9Ci0KLSAgICAgIHslIGlmICdvd25l
cicgaW4gYi5wcm9wZXJ0aWVzICV9Ci0gICAgICAgIDxiPkZvcmNlZCBidWlsZDwvYj4KLSAgICAg
ICAgYnkge3tiLnByb3BlcnRpZXNbJ293bmVyJ11bMF19fQotICAgICAgICA8c21hbGw+e3tiLnBy
b3BlcnRpZXNbJ3JlYXNvbiddWzBdfX08L3NtYWxsPgotICAgICAgeyUgZW5kaWYgJX0KLSAgICA8
L2xpPgotICB7JSBlbmRmb3IgJX0KLSAgPC91bD4KLQotICB7JSBpZiBhdXRoei5hZHZlcnRpc2VB
Y3Rpb24oJ2NhbmNlbFBlbmRpbmdCdWlsZCcsIHJlcXVlc3QpICV9Ci0gICAge3sgZm9ybXMuY2Fu
Y2VsX3BlbmRpbmdfYnVpbGQoYnVpbGRlcl91cmwrIi9jYW5jZWxidWlsZCIsIGF1dGh6LCBzaG9y
dD1GYWxzZSwgaWQ9J2FsbCcpIH19Ci0gIHslIGVuZGlmICV9Ci0KLXslIGVsc2UgJX0KLSAgPGgy
Pk5vIFBlbmRpbmcgQnVpbGQgUmVxdWVzdHM8L2gyPgoteyUgZW5kaWYgJX0KLQotPGgyPlJlY2Vu
dCBCdWlsZHM6PC9oMj4KLQote3sgYnVpbGRfdGFibGUocmVjZW50KSB9fQotKCBTaG93OiA8YSBo
cmVmPSJ7eyBidWlsZGVyX3VybCB9fSI+ZGVmYXVsdDwvYT4KLXslIGZvciBjb3VudCBpbiBbMjUs
IDUwLCAxMDAsIDIwMF0gJX0KLTxhIGhyZWY9Int7IGJ1aWxkZXJfdXJsIH19P251bWJ1aWxkcz17
eyBjb3VudCB9fSI+e3sgY291bnQgfX08L2E+Ci17JSBlbmRmb3IgJX0pCi0KLTwvZGl2PgotPGRp
diBjbGFzcz0iY29sdW1uIj4KLQotPGgyPkJ1aWxkc2xhdmVzOjwvaDI+Ci08dGFibGUgY2xhc3M9
ImluZm8iPgoteyUgaWYgc2xhdmVzICV9Ci08dHI+Ci0gIDx0aD5OYW1lPC90aD4KLSAgPHRoPlN0
YXR1czwvdGg+Ci0gIDx0aD5BZG1pbjwvdGg+Ci08L3RyPgoteyUgZW5kaWYgJX0KLXslIGZvciBz
IGluIHNsYXZlcyAlfQotICA8dHIgY2xhc3M9Int7IGxvb3AuY3ljbGUoJ2FsdCcsICcnKSB9fSI+
Ci0gIDx0ZD48Yj48YSBocmVmPSJ7eyBzLmxpbmt8ZSB9fSI+e3sgcy5uYW1lfGUgfX08L2E+PC9i
PjwvdGQ+Ci0gIHslIGlmIHMuY29ubmVjdGVkICV9Ci0gICAgPHRkIGNsYXNzPSJpZGxlIj5jb25u
ZWN0ZWQ8L3RkPgotICAgIDx0ZD57eyBzLmFkbWlufGVtYWlsIGlmIHMuYWRtaW4gZWxzZSAiIn19
PC90ZD4KLSAgeyUgZWxzZSAlfQotICAgIDx0ZCBjbGFzcz0ib2ZmbGluZSI+b2ZmbGluZTwvdGQ+
Ci0gICAgPHRkLz4KLSAgeyUgZW5kaWYgJX0KLSAgPC90cj4KLXslIGVsc2UgJX0KLSAgPHRkPm5v
IHNsYXZlcyBhdHRhY2hlZDwvdGQ+Ci17JSBlbmRmb3IgJX0KLTwvdGFibGU+Ci0KLXslIGlmIGF1
dGh6LmFkdmVydGlzZUFjdGlvbigncGluZ0J1aWxkZXInLCByZXF1ZXN0KSAlfQotICA8aDI+UGlu
ZyBzbGF2ZXM8L2gyPgotICB7eyBmb3Jtcy5waW5nX2J1aWxkZXIoYnVpbGRlcl91cmwrIi9waW5n
IiwgYXV0aHopIH19Ci17JSBlbmRpZiAlfQotCi17JSBpZiBhdXRoei5hZHZlcnRpc2VBY3Rpb24o
J2ZvcmNlQnVpbGQnLCByZXF1ZXN0KSBhbmQgZm9yY2Vfc2NoZWR1bGVycyAhPSB7fSAlfQotICA8
aDI+Rm9yY2UgYnVpbGQ8L2gyPgotICB7eyBmb3Jtcy5mb3JjZV9idWlsZChidWlsZGVyX3VybCsi
L2ZvcmNlIiwgYXV0aHosIHJlcXVlc3QsIEZhbHNlLCBmb3JjZV9zY2hlZHVsZXJzPWZvcmNlX3Nj
aGVkdWxlcnMsZGVmYXVsdF9wcm9wcz1kZWZhdWx0X3Byb3BzKSB9fQoteyUgZW5kaWYgJX0KLQot
PC9kaXY+Ci0KLXslIGVuZGJsb2NrICV9Ci0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3RlbXBsYXRlcy9yb290Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvdGVtcGxh
dGVzL3Jvb3QuaHRtbAkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvdGVtcGxhdGVzL3Jvb3QuaHRtbAkobm9uZXhpc3Rl
bnQpCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08aGVhZD4KLTxt
ZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0
PXV0Zi04Ij4KLTx0aXRsZT5XZWJLaXQgQnVpbGQgQ2VudHJhbDwvdGl0bGU+Ci08c3R5bGU+Ci0g
ICAgYm9keSB7Ci0gICAgICAgIGZvbnQtZmFtaWx5OiAiSGVsdmV0aWNhTmV1ZS1MaWdodCIsIHNh
bnMtc2VyaWY7Ci0gICAgfQotCi0gICAgaDEsIGgyLCBoMyB7Ci0gICAgICAgIGZvbnQtZmFtaWx5
OiAiSGVsdmV0aWNhTmV1ZSIsIHNhbnMtc2VyaWY7Ci0gICAgfQotPC9zdHlsZT4KLTwvaGVhZD4K
LQotPGJvZHk+Ci08aDI+RGFzaGJvYXJkPC9oMj4KLTx1bD4KLSAgPGxpPjxhIGhyZWY9ImRhc2hi
b2FyZCI+Qm90IHdhdGNoZXIncyBkYXNoYm9hcmQ8L2E+PC9saT4KLTwvdWw+Ci0KLTxoMj5CdWls
ZGJvdCBQYWdlczwvaDI+Ci08dWw+Ci0gIDxsaT48YSBocmVmPSJjb25zb2xlIj5Db25zb2xlPC9h
PiAtIDxhIGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1hYzwvYT4sIDxh
IGhyZWY9ImNvbnNvbGU/Y2F0ZWdvcnk9QXBwbGVXaW4iPkFwcGxlIFdpbmRvd3M8L2E+LCA8YSBo
cmVmPSJjb25zb2xlP2NhdGVnb3J5PWlPUyI+aU9TPC9hPiwKLSAgPGEgaHJlZj0iY29uc29sZT9j
YXRlZ29yeT1HVEsiPkdUSys8L2E+LCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PVdQRSI+V1BF
PC9hPiwgPGEgaHJlZj0iY29uc29sZT9jYXRlZ29yeT1XaW5DYWlybyI+V2luQ2Fpcm88L2E+Ci0g
IGFuZCA8YSBocmVmPSJjb25zb2xlP2NhdGVnb3J5PW1pc2MiPm1pc2NlbGxhbmVvdXM8L2E+PC9s
aT4KLSAgPGxpPjxhIGhyZWY9IndhdGVyZmFsbCI+V2F0ZXJmYWxsIERpc3BsYXk8L2E+LCBhIHRp
bWUtb3JpZW50ZWQgc3VtbWFyeSBvZiByZWNlbnQgYnVpbGRib3QgYWN0aXZpdHkKLSAgLSA8YSBo
cmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9QXBwbGVNYWMiPkFwcGxlIE1hYzwvYT4sIDxhIGhyZWY9
IndhdGVyZmFsbD9jYXRlZ29yeT1BcHBsZVdpbiI+QXBwbGUgV2luZG93czwvYT4sIDxhIGhyZWY9
IndhdGVyZmFsbD9jYXRlZ29yeT1pT1MiPmlPUzwvYT4sCi0gIDxhIGhyZWY9IndhdGVyZmFsbD9j
YXRlZ29yeT1HVEsiPkdUSys8L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9V1BFIj5X
UEU8L2E+LCA8YSBocmVmPSJ3YXRlcmZhbGw/Y2F0ZWdvcnk9V2luQ2Fpcm8iPldpbkNhaXJvPC9h
PgotICBhbmQgPGEgaHJlZj0id2F0ZXJmYWxsP2NhdGVnb3J5PW1pc2MiPm1pc2NlbGxhbmVvdXM8
L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9Im9uZV9ib3hfcGVyX2J1aWxkZXIiPkxhdGVzdCBCdWls
ZDwvYT4gZm9yIGVhY2ggYnVpbGRlciBpcyBoZXJlLjwvbGk+Ci0gIDxsaT48YSBocmVmPSJvbmVf
bGluZV9wZXJfYnVpbGQiPlJlY2VudCBCdWlsZHM8L2E+IGFyZSBzdW1tYXJpemVkIGhlcmUsIG9u
ZSBwZXIgbGluZS48L2xpPgotICA8bGk+PGEgaHJlZj0icmVzdWx0cyI+VGVzdCBSZXN1bHRzPC9h
PjwvbGk+Ci0gIDxsaT48YSBocmVmPSJidWlsZHNsYXZlcyI+QnVpbGRzbGF2ZTwvYT4gaW5mb3Jt
YXRpb248L2xpPgotPC91bD4KLQotPGgyPlRlc3RzIGFuZCBQZXJmb3JtYW5jZTwvaDI+Ci08dWw+
Ci0gIDxsaT48YSBocmVmPSJodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZyI+Rmxha2luZXNzIGRh
c2hib2FyZDwvYT4gKEV4dGVybmFsIHNpdGUpPC9saT4KLSAgPGxpPjxhIGhyZWY9IkxlYWtzVmll
d2VyIj5MZWFrcyBWaWV3ZXI8L2E+PC9saT4KLSAgPGxpPjxhIGhyZWY9IlRlc3RGYWlsdXJlcyI+
VGVzdCBGYWlsdXJlczwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9wZXJmLndlYmtp
dC5vcmcvIj5XZWJLaXQgUGVyZiBNb25pdG9yPC9hPiByZXN1bHRzIHN1Ym1pdHRlZCBieSA8YSBo
cmVmPSJodHRwczovL2J1aWxkLndlYmtpdC5vcmcvd2F0ZXJmYWxsP3Nob3c9QXBwbGUlMjBZb3Nl
bWl0ZSUyMFJlbGVhc2UlMjBXSzIlMjAlMjhQZXJmJTI5JnNob3c9R1RLJTIwTGludXglMjA2NC1i
aXQlMjBSZWxlYXNlJTIwJTI4UGVyZiUyOSI+cGVyZm9ybWFuY2UgYm90czwvYT48L2xpPgotPC91
bD4KLQotPGgyPlN0YXR1czwvaDI+Ci08dWw+Ci0gICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZXdz
LWJ1aWxkLndlYmtpdC5vcmcvIy9idWlsZGVycyI+RWFybHkgV2FybmluZyBTeXN0ZW0gYW5kIENv
bW1pdCBRdWV1ZSBTdGF0dXM8L2E+PC9saT4KLTwvdWw+Ci0KLTwvYm9keT4KLTwvaHRtbD4KSW5k
ZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVp
bGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcvd2tidWlsZC5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZC5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDE0OCArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1l
dDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0j
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIkZ1bmN0aW9ucyByZWxhdGluZyB0byBidWlsZGluZyBXZWJLaXQiIiIKLQotaW1w
b3J0IHJlCi0KLQotZGVmIF9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkKHRhcmdldF9wbGF0Zm9y
bSwgZmlsZSk6Ci0gICAgIyBUaGUgZGlyZWN0b3JpZXMgYW5kIHBhdHRlcm5zIGxpc3RzIGJlbG93
IG1hcCBkaXJlY3RvcnkgbmFtZXMgb3IKLSAgICAjIHJlZ2V4cCBwYXR0ZXJucyB0byB0aGUgYm90
IHBsYXRmb3JtcyBmb3Igd2hpY2ggdGhleSBzaG91bGQgdHJpZ2dlciBhCi0gICAgIyBidWlsZC4g
TWFwcGluZyB0byB0aGUgZW1wdHkgbGlzdCBtZWFucyB0aGF0IG5vIGJ1aWxkcyBzaG91bGQgYmUK
LSAgICAjIHRyaWdnZXJlZCBvbiBhbnkgcGxhdGZvcm1zLiBFYXJsaWVyIGRpcmVjdG9yaWVzL3Bh
dHRlcm5zIHRha2UKLSAgICAjIHByZWNlbmRlbmNlIG92ZXIgbGF0ZXIgb25lcy4KLQotICAgICMg
RklYTUU6IFRoZSBwYXR0ZXJucyBiZWxvdyBoYXZlIG9ubHkgYmVlbiB2ZXJpZmllZCB0byBiZSBj
b3JyZWN0IG9uCi0gICAgIyB0aGUgcGxhdGZvcm1zIGxpc3RlZCBiZWxvdy4gV2Ugc2hvdWxkIGlt
cGxlbWVudCB0aGlzIGZvciBvdGhlciBwbGF0Zm9ybXMKLSAgICAjIGFuZCBzdGFydCB1c2luZyBp
dCBmb3IgdGhlaXIgYm90cy4gU29tZW9uZSBmYW1pbGlhciB3aXRoIGVhY2ggcGxhdGZvcm0KLSAg
ICAjIHdpbGwgaGF2ZSB0byBmaWd1cmUgb3V0IHdoYXQgdGhlIHJpZ2h0IHNldCBvZiBkaXJlY3Rv
cmllcy9wYXR0ZXJucyBpcyBmb3IKLSAgICAjIHRoYXQgcGxhdGZvcm0uCi0gICAgYXNzZXJ0KHRh
cmdldF9wbGF0Zm9ybSBpbiAoCi0gICAgICAgICJtYWMteW9zZW1pdGUiLAotICAgICAgICAibWFj
LWVsY2FwaXRhbiIsCi0gICAgICAgICJtYWMtc2llcnJhIiwKLSAgICAgICAgIm1hYy1oaWdoc2ll
cnJhIiwKLSAgICAgICAgIm1hYy1tb2phdmUiLAotICAgICAgICAibWFjLWNhdGFsaW5hIiwKLSAg
ICAgICAgIm1hYy1iaWdzdXIiLAotICAgICAgICAid2luIiwKLSAgICAgICAgImlvcy0xNCIsCi0g
ICAgICAgICJpb3Mtc2ltdWxhdG9yLTE0IiwKLSAgICAgICAgInR2b3MtMTQiLAotICAgICAgICAi
dHZvcy1zaW11bGF0b3ItMTQiLAotICAgICAgICAid2F0Y2hvcy03IiwKLSAgICAgICAgIndhdGNo
b3Mtc2ltdWxhdG9yLTciLAotICAgICkpCi0KLSAgICBkaXJlY3RvcmllcyA9IFsKLSAgICAgICAg
IyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZG4ndCB0cmlnZ2VyIGJ1aWxkcyBvbiBhbnkgYm90cy4K
LSAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKLSAgICAgICAgKCJQZXJmb3JtYW5jZVRlc3RzIiwg
W10pLAotICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAotICAgICAgICAoIlRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sIiwgW10pLAot
ICAgICAgICAoIldlYnNpdGVzIiwgW10pLAotICAgICAgICAoIm9wZW5nbCIsIFtdKSwKLSAgICAg
ICAgKCJvcGVudHlwZSIsIFtdKSwKLSAgICAgICAgKCJvcGVudmciLCBbXSksCi0gICAgICAgICgi
d3giLCBbXSksCi0KLSAgICAgICAgIyBEaXJlY3RvcmllcyB0aGF0IHNob3VsZCB0cmlnZ2VyIGJ1
aWxkcyBvbiBvbmx5IHNvbWUgYm90cy4KLSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3Mtc2ltdWxhdG9yIiwgWyJpb3MiXSksCi0gICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zLXNpbXVsYXRvci13azEiLCBbImlvcyJdKSwKLSAgICAgICAgKCJMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3Mtc2ltdWxhdG9yLXdrMiIsIFsiaW9zIl0pLAotICAgICAgICAoIkxheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy15b3NlbWl0ZSIsIFsibWFjLXlvc2VtaXRlIl0pLAotICAgICAgICAoIkxh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1lbGNhcGl0YW4iLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMt
ZWxjYXBpdGFuIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1zaWVycmEi
LCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiXSksCi0gICAg
ICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLWhpZ2hzaWVycmEiLCBbIm1hYy15b3NlbWl0
ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiXSksCi0g
ICAgICAgICgiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZSIsIFsibWFjLXlvc2VtaXRl
IiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMt
bW9qYXZlIl0pLAotICAgICAgICAoIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1jYXRhbGluYSIs
IFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGln
aHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgIm1hYy1iaWdzdXIiXSksCi0gICAgICAgICgiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLWJpZ3N1ciIsIFsibWFjLWJpZ3N1ciJdKSwKLSAgICAgICAgKCJM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syIiwgWyJtYWMiXSksCi0gICAgICAgICgiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLXdrMSIsIFsibWFjIl0pLAotICAgICAgICAoIkxheW91dFRlc3Rz
L3BsYXRmb3JtL21hYyIsIFsibWFjIiwgIndpbiJdKSwKLSAgICAgICAgKCJMYXlvdXRUZXN0cy9w
bGF0Zm9ybS93azIiLCBbIm1hYyIsICJpb3MiXSksCi0gICAgICAgICgiY2Fpcm8iLCBbImd0ayIs
ICJ3aW5jYWlybyJdKSwKLSAgICAgICAgKCJjZiIsIFsibWFjIiwgIndpbiIsICJpb3MiLCAidHZv
cyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAoImNvY29hIiwgWyJtYWMiLCAiaW9zIiwgInR2b3Mi
LCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJjdXJsIiwgWyJndGsiLCAid2luY2Fpcm8iXSksCi0g
ICAgICAgICgiZ29iamVjdCIsIFsiZ3RrIl0pLAotICAgICAgICAoImdzdHJlYW1lciIsIFsiZ3Rr
Il0pLAotICAgICAgICAoImd0ayIsIFsiZ3RrIl0pLAotICAgICAgICAoImlvcyIsIFsiaW9zIiwg
InR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJtYWMiLCBbIm1hYyJdKSwKLSAgICAgICAg
KCJvYmpjIiwgWyJtYWMiLCAiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKCJz
b3VwIiwgWyJndGsiXSksCi0gICAgICAgICgid2luIiwgWyJ3aW4iXSksCi0gICAgXQotICAgIHBh
dHRlcm5zID0gWwotICAgICAgICAjIFBhdHRlcm5zIHRoYXQgc2hvdWxkbid0IHRyaWdnZXIgYnVp
bGRzIG9uIGFueSBib3RzLgotICAgICAgICAociIoPzpefC8pQ2hhbmdlTG9nLiokIiwgW10pLAot
ICAgICAgICAociIoPzpefC8pTWFrZWZpbGUkIiwgW10pLAotICAgICAgICAociIvQVJNIiwgW10p
LAotICAgICAgICAociIvQ01ha2UuKiIsIFtdKSwKLSAgICAgICAgKHIiL0xJQ0VOU0VbXi9dKyQi
LCBbXSksCi0gICAgICAgIChyIkFSTSg/OnY3KT9cLig/OmNwcHxoKSQiLCBbXSksCi0gICAgICAg
IChyIk1JUFNcLig/OmNwcHxoKSQiLCBbXSksCi0gICAgICAgIChyIlwuKD86YmtsfG1rKSQiLCBb
XSksCi0KLSAgICAgICAgIyBQYXR0ZXJucyB0aGF0IHNob3VsZCB0cmlnZ2VyIGJ1aWxkcyBvbiBv
bmx5IHNvbWUgYm90cy4KLSAgICAgICAgKHIiKD86XnwvKVBsYXRmb3JtR1RLXC5jbWFrZSQiLCBb
Imd0ayJdKSwKLSAgICAgICAgKHIiTWFjXC4oPzpjcHB8aHxtbSkkIiwgWyJtYWMiXSksCi0gICAg
ICAgIChyIklPU1wuKD86Y3BwfGh8bW0pJCIsIFsiaW9zIiwgInR2b3MiLCAid2F0Y2hvcyJdKSwK
LSAgICAgICAgKHIiXC4oPzp2Y3Byb2p8dnNwcm9wc3xzbG58dmN4cHJvanxwcm9wc3xmaWx0ZXJz
KSQiLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC5leHAoPzpcLmluKT8kIiwgWyJtYWMiLCAiaW9z
IiwgInR2b3MiLCAid2F0Y2hvcyJdKSwKLSAgICAgICAgKHIiXC5vcmRlciQiLCBbIm1hYyIsICJp
b3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAociJcLig/OnZjcHJvanx2Y3hwcm9q
KS8iLCBbIndpbiJdKSwKLSAgICAgICAgKHIiXC54Y2NvbmZpZyQiLCBbIm1hYyIsICJpb3MiLCAi
dHZvcyIsICJ3YXRjaG9zIl0pLAotICAgICAgICAociJcLnhjb2RlcHJvai8iLCBbIm1hYyIsICJp
b3MiLCAidHZvcyIsICJ3YXRjaG9zIl0pLAotICAgIF0KLQotICAgIGJhc2VfcGxhdGZvcm0gPSB0
YXJnZXRfcGxhdGZvcm0uc3BsaXQoIi0iKVswXQotCi0gICAgIyBTZWUgaWYgdGhlIGZpbGUgaXMg
aW4gb25lIG9mIHRoZSBrbm93biBkaXJlY3Rvcmllcy4KLSAgICBmb3IgZGlyZWN0b3J5LCBwbGF0
Zm9ybXMgaW4gZGlyZWN0b3JpZXM6Ci0gICAgICAgIGlmIHJlLnNlYXJjaChyIig/Ol58Lyklcy8i
ICUgZGlyZWN0b3J5LCBmaWxlKToKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXRfcGxhdGZvcm0g
aW4gcGxhdGZvcm1zIG9yIGJhc2VfcGxhdGZvcm0gaW4gcGxhdGZvcm1zCi0KLSAgICAjIFNlZSBp
ZiB0aGUgZmlsZSBtYXRjaGVzIGEga25vd24gcGF0dGVybi4KLSAgICBmb3IgcGF0dGVybiwgcGxh
dGZvcm1zIGluIHBhdHRlcm5zOgotICAgICAgICBpZiByZS5zZWFyY2gocGF0dGVybiwgZmlsZSk6
Ci0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0X3BsYXRmb3JtIGluIHBsYXRmb3JtcyBvciBiYXNl
X3BsYXRmb3JtIGluIHBsYXRmb3JtcwotCi0gICAgIyBTZWUgaWYgdGhlIGZpbGUgaXMgYSBwbGF0
Zm9ybS1zcGVjaWZpYyB0ZXN0IHJlc3VsdC4KLSAgICBtYXRjaCA9IHJlLm1hdGNoKCJMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS8oP1A8cGxhdGZvcm0+W14vXSspLyIsIGZpbGUpCi0gICAgaWYgbWF0Y2g6
Ci0gICAgICAgICMgU2VlIGlmIHRoZSBmaWxlIGlzIGEgdGVzdCByZXN1bHQgZm9yIHRoaXMgcGxh
dGZvcm0sIG91ciBiYXNlCi0gICAgICAgICMgcGxhdGZvcm0sIG9yIG9uZSBvZiBvdXIgc3ViLXBs
YXRmb3Jtcy4KLSAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKCJwbGF0Zm9ybSIpIGluICh0YXJn
ZXRfcGxhdGZvcm0sIGJhc2VfcGxhdGZvcm0pIG9yIG1hdGNoLmdyb3VwKCJwbGF0Zm9ybSIpLnN0
YXJ0c3dpdGgoIiVzLSIgJSB0YXJnZXRfcGxhdGZvcm0pCi0KLSAgICAjIFRoZSBmaWxlIGlzbid0
IG9uZSB3ZSBrbm93IGFib3V0IHNwZWNpZmljYWxseSwgc28gd2Ugc2hvdWxkIGFzc3VtZSB3ZQot
ICAgICMgaGF2ZSB0byBidWlsZC4KLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBzaG91bGRfYnVp
bGQodGFyZ2V0X3BsYXRmb3JtLCBjaGFuZ2VkX2ZpbGVzKToKLSAgICAiIiJSZXR1cm5zIHRydWUg
aWYgdGhlIGNoYW5nZWQgZmlsZXMgYWZmZWN0IHRoZSBnaXZlbiBwbGF0Zm9ybSwgYW5kCi0gICAg
dGh1cyBhIGJ1aWxkIHNob3VsZCBiZSBwZXJmb3JtZWQuIHRhcmdldF9wbGF0Zm9ybSBzaG91bGQg
YmUgb25lIG9mIHRoZQotICAgIHBsYXRmb3JtcyB1c2VkIGluIHRoZSBidWlsZC53ZWJraXQub3Jn
IG1hc3RlcidzIGNvbmZpZy5qc29uIGZpbGUuIiIiCi0gICAgcmV0dXJuIGFueShfc2hvdWxkX2Zp
bGVfdHJpZ2dlcl9idWlsZCh0YXJnZXRfcGxhdGZvcm0sIGZpbGUpIGZvciBmaWxlIGluIGNoYW5n
ZWRfZmlsZXMpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy93a2J1aWxkX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKHJl
dmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw4NSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
Ci0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9y
dCB1bml0dGVzdAotaW1wb3J0IHdrYnVpbGQKLQotCi1jbGFzcyBTaG91bGRCdWlsZFRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgotICAgIF9zaG91bGRfYnVpbGRfdGVzdHMgPSBbCi0gICAgICAgIChb
IkNoYW5nZUxvZyIsICJTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2ciLCAiU291cmNlL1dlYktpdC9D
aGFuZ2VMb2ctMjAxMS0wMi0xMSJdLCBbXSksCi0gICAgICAgIChbIldlYnNpdGVzL2J1Z3Mud2Vi
a2l0Lm9yZy9mb28iLCAiU291cmNlL1dlYkNvcmUvYmFyIl0sIFsiKiJdKSwKLSAgICAgICAgKFsi
V2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2ZvbyJdLCBbXSksCi0gICAgICAgIChbIlNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovZm9vIl0sIFsibWFjLXlvc2Vt
aXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJt
YWMtbW9qYXZlIiwgImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0IiwgInR2b3MtMTQiLCAidHZv
cy1zaW11bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndhdGNob3Mtc2ltdWxhdG9yLTciXSksCi0g
ICAgICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29u
ZmlnIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJt
YWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0
IiwgInR2b3MtMTQiLCAidHZvcy1zaW11bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndhdGNob3Mt
c2ltdWxhdG9yLTciXSksCi0gICAgICAgIChbIlNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovZm9vIiwgIlNvdXJjZS9XZWJLaXQvd2luL1dlYktpdDIudmNwcm9qIiwg
IlNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYktpdC5zbG4iLCAiVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9Db25maWd1cmF0aW9ucy9XZWJLaXRUZXN0UnVubmVyQ29tbW9uLnZzcHJvcHMiXSwgWyJ3
aW4iXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mb28iLCAiU291cmNl
L1dlYkNvcmUvYmFyIl0sIFsiKiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvZm9vIl0sIFsi
KiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvY2FudmFzL3BoaWxpcC90ZXN0cy9zaXplLmF0
dHJpYnV0ZXMucGFyc2UuZXhwLWV4cGVjdGVkLnR4dCIsICJMYXlvdXRUZXN0cy9jYW52YXMvcGhp
bGlwL3Rlc3RzL3NpemUuYXR0cmlidXRlcy5wYXJzZS5leHAuaHRtbCJdLCBbIioiXSksCi0gICAg
ICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy15b3NlbWl0ZS9mb28iXSwgWyJtYWMteW9z
ZW1pdGUiXSksCi0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1lbGNhcGl0YW4v
Zm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iXSksCi0gICAgICAgIChbIkxh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy1zaWVycmEvZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1h
Yy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLWhpZ2hzaWVycmEvZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0
YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSJdKSwKLSAgICAgICAgKFsiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjLW1vamF2ZS9mb28iXSwgWyJtYWMteW9zZW1pdGUiLCAibWFjLWVs
Y2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwgIm1hYy1tb2phdmUiXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy1jYXRhbGluYS9mb28iXSwgWyJt
YWMtbW9qYXZlIiwgIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEi
LCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVz
dHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci9mb28iXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRv
ci0xNCJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zLXNpbXVsYXRvci13
azEvZm9vIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiXSksCi0gICAgICAgIChbIkxh
eW91dFRlc3RzL3BsYXRmb3JtL2lvcy1zaW11bGF0b3Itd2syL2ZvbyJdLCBbImlvcy0xNCIsICJp
b3Mtc2ltdWxhdG9yLTE0Il0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9ybS93azIv
U2tpcHBlZCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEi
LCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRv
ci0xNCJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVk
Il0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMt
aGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2sxL2NvbXBvc2l0aW5nL3RpbGluZy90cmFuc2Zvcm0tb3JpZ2luLXRpbGVkLWV4
cGVjdGVkLnR4dCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVy
cmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAgICAgICAgKFsiTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFu
IiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJ3aW4iXSks
Ci0gICAgICAgIChbIkxheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvc3BlbGxpbmcvYXV0b2NvcnJlY3Rpb24tY29udHJhY3Rpb24tZXhwZWN0ZWQudHh0Il0s
IFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGln
aHNpZXJyYSIsICJtYWMtbW9qYXZlIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4teHAvZm9vIl0sIFsid2luIl0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4td2sxL2ZvbyJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL2ZvbyJdLCBbIndpbiJdKSwKLSAgICAgICAgKFsiTGF5b3V0VGVzdHMvcGxhdGZvcm0v
c3BpL2NvY29hL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1z
aWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNp
bXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIs
ICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9zcGkvY2YvZm9vIl0sIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNp
ZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgIndpbiIsICJpb3MtMTQiLCAi
aW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNo
b3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJLaXQubWFjLmV4cCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBp
dGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwKLSAg
ICAgICAgKFsiU291cmNlL1dlYktpdExlZ2FjeS9pb3MvV2ViS2l0LmlPUy5leHAiXSwgWyJpb3Mt
MTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0Iiwg
IndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3VyY2Uv
RHVtbXkvZm9vLmV4cCJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1z
aWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNp
bXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIs
ICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9pb3Mv
Zm9vIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZvcy0xNCIsICJ0dm9zLXNp
bXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0b3ItNyJdKSwKLSAgICAg
ICAgKFsiU291cmNlL1dlYkNvcmUvbWFjL2ZvbyJdLCBbIm1hYy15b3NlbWl0ZSIsICJtYWMtZWxj
YXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAibWFjLW1vamF2ZSJdKSwK
LSAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvd2luL2ZvbyJdLCBbIndpbiJdKSwKLSAgICAgICAg
KFsiU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19jbGFzcy5tbSJdLCBbIm1hYy15b3Nl
bWl0ZSIsICJtYWMtZWxjYXBpdGFuIiwgIm1hYy1zaWVycmEiLCAibWFjLWhpZ2hzaWVycmEiLCAi
bWFjLW1vamF2ZSIsICJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2
b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAot
ICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93eC93eGNvZGUvd2luL2ZvbyJdLCBb
XSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0
Q2FjaGVJT1MubW0iXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0Iiwg
InR2b3Mtc2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0p
LAotICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVNYWMubW0i
LCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFjLmgiXSwgWyJtYWMteW9z
ZW1pdGUiLCAibWFjLWVsY2FwaXRhbiIsICJtYWMtc2llcnJhIiwgIm1hYy1oaWdoc2llcnJhIiwg
Im1hYy1tb2phdmUiXSksCi0gICAgICAgIChbIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUaGVtZUlPUy5tbSIsICJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVJT1Mu
aCJdLCBbImlvcy0xNCIsICJpb3Mtc2ltdWxhdG9yLTE0IiwgInR2b3MtMTQiLCAidHZvcy1zaW11
bGF0b3ItMTQiLCAid2F0Y2hvcy03IiwgIndhdGNob3Mtc2ltdWxhdG9yLTciXSksCi0gICAgICAg
IChbIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1Ymxp
Y19odG1sL0xlYWtzVmlld2VyL0xlYWtzVmlld2VyLmpzIl0sIFtdKSwKLSAgICBdCi0KLSAgICBk
ZWYgdGVzdF9zaG91bGRfYnVpbGQoc2VsZik6Ci0gICAgICAgIGZvciBmaWxlcywgcGxhdGZvcm1z
IGluIHNlbGYuX3Nob3VsZF9idWlsZF90ZXN0czoKLSAgICAgICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCB0ZXN0IG1vcmUgcGxhdGZvcm1zIGhlcmUgb25jZQotICAgICAgICAgICAgIyB3a2J1aWxk
Ll9zaG91bGRfZmlsZV90cmlnZ2VyX2J1aWxkIGlzIGltcGxlbWVudGVkIGZvciB0aGVtLgotICAg
ICAgICAgICAgZm9yIHBsYXRmb3JtIGluIFsibWFjLXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4i
LCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJyYSIsICJtYWMtbW9qYXZlIiwgIndpbiIsICJp
b3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mtc2ltdWxhdG9yLTE0
IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il06Ci0gICAgICAgICAgICAgICAg
c2hvdWxkX2J1aWxkID0gcGxhdGZvcm0gaW4gcGxhdGZvcm1zIG9yICIqIiBpbiBwbGF0Zm9ybXMK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdrYnVpbGQuc2hvdWxkX2J1aWxkKHBs
YXRmb3JtLCBmaWxlcyksIHNob3VsZF9idWlsZCwgIiVzIHNob3VsZCVzIGhhdmUgYnVpbHQgYnV0
IGRpZCVzIChmaWxlczogJXMpIiAlIChwbGF0Zm9ybSwgIiIgaWYgc2hvdWxkX2J1aWxkIGVsc2Ug
Im4ndCIsICJuJ3QiIGlmIHNob3VsZF9idWlsZCBlbHNlICIiLCBzdHIoZmlsZXMpKSkKLQotIyBG
SVhNRTogV2Ugc2hvdWxkIHJ1biB0aGlzIGZpbGUgYXMgcGFydCBvZiB0ZXN0LXJtIC4KLSMgVW5m
b3J0dW5hdGVseSB0ZXN0LXJtICBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB1bml0dGVzdHMKLSMg
YmUgbG9jYXRlZCBpbiBhIGRpcmVjdG9yeSB3aXRoIGEgdmFsaWQgbW9kdWxlIG5hbWUuCi0jICdi
dWlsZC53ZWJraXQub3JnLWNvbmZpZycgaXMgbm90IGEgdmFsaWQgbW9kdWxlIG5hbWUgKGR1ZSB0
byAnLicgYW5kICctJykKLSMgc28gZm9yIG5vdyB0aGlzIGlzIGEgc3RhbmQtYWxvbmUgdGVzdCBo
YXJuZXNzLgotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkK
SW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29u
ZmlnCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZwkobm9uZXhpc3RlbnQpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZwpfX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRl
bGV0ZWQ6IHN2bjppZ25vcmUKIyMgLTEgKzAsMCAjIwotcGFzc3dvcmRzLmpzb24KSW5kZXg6IFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUJKHJldmlzaW9u
IDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2
ZQkobm9uZXhpc3RlbnQpCkBAIC0xLDI4OSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LQotIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBlcnJubwotaW1w
b3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzaHV0aWwKLWltcG9ydCBzdWJwcm9jZXNz
Ci1pbXBvcnQgc3lzCi1pbXBvcnQgemlwZmlsZQotCi1fY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0
b3J5ID0gTm9uZQotX3RvcExldmVsQnVpbGREaXJlY3RvcnkgPSBOb25lCi1faG9zdEJ1aWxkRGly
ZWN0b3J5ID0gTm9uZQotCi1QQVRIX1RPX0xBVU5DSEVSID0gJy4vVG9vbHMvV2ViS2l0QXJjaGl2
ZVN1cHBvcnQvcnVuLXdlYmtpdC1hcmNoaXZlJwotUEFUSF9UT19SRUFETUUgPSAnLi9Ub29scy9X
ZWJLaXRBcmNoaXZlU3VwcG9ydC9SRUFETUUnCi0KLWRlZiBtYWluKCk6Ci0gICAgcGFyc2VyID0g
b3B0cGFyc2UuT3B0aW9uUGFyc2VyKCJ1c2FnZTogJXByb2cgW29wdGlvbnNdIFthY3Rpb25dIikK
LSAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1wbGF0Zm9ybSIsIGRlc3Q9InBsYXRmb3JtIikKLSAg
ICBwYXJzZXIuYWRkX29wdGlvbigiLS1kZWJ1ZyIsIGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25z
dD0iZGVidWciLCBkZXN0PSJjb25maWd1cmF0aW9uIikKLSAgICBwYXJzZXIuYWRkX29wdGlvbigi
LS1yZWxlYXNlIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJyZWxlYXNlIiwgZGVzdD0i
Y29uZmlndXJhdGlvbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tbWluaWZ5IiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVzdD0ibWluaWZ5IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJDcmVhdGUgYSBtaW5pZmllZCBhcmNoaXZlIGJ5IHJlbW92aW5nIGZp
bGVzIHRoYXQgYXJlIG5vdCBuZWNlc3NhcnkgZm9yIHJ1bm5pbmcgYXBwbGljYXRpb25zIGFnYWlu
c3QgdGhlIGJ1aWx0IHByb2R1Y3QsIGF0IHRoZSBjb3N0IG9mIGNvbXBsaWNhdGluZyBkZWJ1Z2dp
bmcuIikKLSAgICAgICAgICAgICAgICAgICAgICAKLSAgICBvcHRpb25zLCAoYWN0aW9uLCApID0g
cGFyc2VyLnBhcnNlX2FyZ3MoKQotICAgIGlmIG5vdCBvcHRpb25zLnBsYXRmb3JtOgotICAgICAg
ICBwYXJzZXIuZXJyb3IoIlBsYXRmb3JtIGlzIHJlcXVpcmVkIikKLSAgICAgICAgcmV0dXJuIDEK
LSAgICBpZiBub3Qgb3B0aW9ucy5jb25maWd1cmF0aW9uOgotICAgICAgICBwYXJzZXIuZXJyb3Io
IkNvbmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4gMQotICAgIGlmIGFj
dGlvbiBub3QgaW4gKCdhcmNoaXZlJywgJ2V4dHJhY3QnKToKLSAgICAgICAgcGFyc2VyLmVycm9y
KCJBY3Rpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4gMQotCi0gICAgZ2VuZXJpY1Bs
YXRmb3JtID0gb3B0aW9ucy5wbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBdCi0gICAgZGV0ZXJtaW5l
V2ViS2l0QnVpbGREaXJlY3RvcmllcyhnZW5lcmljUGxhdGZvcm0sIG9wdGlvbnMucGxhdGZvcm0s
IG9wdGlvbnMuY29uZmlndXJhdGlvbikKLSAgICBpZiBub3QgX3RvcExldmVsQnVpbGREaXJlY3Rv
cnk6Ci0gICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICdDb3VsZCBub3QgZGV0ZXJtaW5lIHRv
cC1sZXZlbCBidWlsZCBkaXJlY3RvcnknCi0gICAgICAgIHJldHVybiAxCi0gICAgaWYgbm90IF9j
b25maWd1cmF0aW9uQnVpbGREaXJlY3Rvcnk6Ci0gICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIs
ICdDb3VsZCBub3QgZGV0ZXJtaW5lIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWMgYnVpbGQgZGlyZWN0
b3J5JwotICAgICAgICByZXR1cm4gMQotCi0gICAgaWYgYWN0aW9uID09ICdhcmNoaXZlJzoKLSAg
ICAgICAgcmV0dXJuIGFyY2hpdmVCdWlsdFByb2R1Y3Qob3B0aW9ucy5jb25maWd1cmF0aW9uLCBn
ZW5lcmljUGxhdGZvcm0sIG9wdGlvbnMucGxhdGZvcm0sIG9wdGlvbnMubWluaWZ5KQotICAgIGVs
c2U6Ci0gICAgICAgIHJldHVybiBleHRyYWN0QnVpbHRQcm9kdWN0KG9wdGlvbnMuY29uZmlndXJh
dGlvbiwgZ2VuZXJpY1BsYXRmb3JtKQotCi0KLWRlZiB3ZWJraXRCdWlsZERpcmVjdG9yeUZvckNv
bmZpZ3VyYXRpb25BbmRQbGF0Zm9ybShjb25maWd1cmF0aW9uLCBwbGF0Zm9ybSwgZnVsbFBsYXRm
b3JtPScnLCByZXR1cm5Ub3BMZXZlbERpcmVjdG9yeT1GYWxzZSk6Ci0gICAgaWYgJ3NpbXVsYXRv
cicgaW4gZnVsbFBsYXRmb3JtOgotICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtICsgJy1zaW11
bGF0b3InCi0gICAgZWxpZiBwbGF0Zm9ybSBpbiBbJ2lvcycsICd0dm9zJywgJ3dhdGNob3MnXToK
LSAgICAgICAgcGxhdGZvcm0gPSBwbGF0Zm9ybSArICctZGV2aWNlJwotICAgIGNvbW1hbmQgPSBb
J3BlcmwnLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJy4uJywgJ1Nj
cmlwdHMnLCAnd2Via2l0LWJ1aWxkLWRpcmVjdG9yeScpLCAnLS0nICsgcGxhdGZvcm0sICctLScg
KyBjb25maWd1cmF0aW9uXQotICAgIGlmIHJldHVyblRvcExldmVsRGlyZWN0b3J5OgotICAgICAg
ICBjb21tYW5kICs9IFsnLS10b3AtbGV2ZWwnXQotICAgIGVsc2U6Ci0gICAgICAgIGNvbW1hbmQg
Kz0gWyctLWNvbmZpZ3VyYXRpb24nXQotICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKGNvbW1h
bmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotCi0K
LWRlZiBkZXRlcm1pbmVXZWJLaXRCdWlsZERpcmVjdG9yaWVzKHBsYXRmb3JtLCBmdWxsUGxhdGZv
cm0sIGNvbmZpZ3VyYXRpb24pOgotICAgIGdsb2JhbCBfY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0
b3J5Ci0gICAgZ2xvYmFsIF90b3BMZXZlbEJ1aWxkRGlyZWN0b3J5Ci0gICAgZ2xvYmFsIF9ob3N0
QnVpbGREaXJlY3RvcnkKLSAgICBfY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5ID0gd2Via2l0
QnVpbGREaXJlY3RvcnlGb3JDb25maWd1cmF0aW9uQW5kUGxhdGZvcm0oY29uZmlndXJhdGlvbiwg
cGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSkKLSAgICBfdG9wTGV2ZWxCdWlsZERpcmVjdG9yeSA9IHdl
YmtpdEJ1aWxkRGlyZWN0b3J5Rm9yQ29uZmlndXJhdGlvbkFuZFBsYXRmb3JtKGNvbmZpZ3VyYXRp
b24sIHBsYXRmb3JtLCBmdWxsUGxhdGZvcm0sIHJldHVyblRvcExldmVsRGlyZWN0b3J5PVRydWUp
Ci0gICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZvcycsICd3YXRjaG9zJ106Ci0gICAgICAg
IF9ob3N0QnVpbGREaXJlY3RvcnkgPSB3ZWJraXRCdWlsZERpcmVjdG9yeUZvckNvbmZpZ3VyYXRp
b25BbmRQbGF0Zm9ybShjb25maWd1cmF0aW9uLCAnbWFjJykKLSAgICBlbHNlOgotICAgICAgICBf
aG9zdEJ1aWxkRGlyZWN0b3J5ID0gX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeQotICAgIAot
ICAgIHJldHVybiBfdG9wTGV2ZWxCdWlsZERpcmVjdG9yeQotCi0KLWRlZiByZW1vdmVEaXJlY3Rv
cnlJZkV4aXN0cyh0aGluRGlyZWN0b3J5KToKLSAgICBpZiBvcy5wYXRoLmlzZGlyKHRoaW5EaXJl
Y3RvcnkpOgotICAgICAgICBzaHV0aWwucm10cmVlKHRoaW5EaXJlY3RvcnkpCi0KLQotZGVmIGNv
cHlCdWlsZEZpbGVzKHNvdXJjZSwgZGVzdGluYXRpb24sIHBhdHRlcm5zKToKLSAgICBzaHV0aWwu
Y29weXRyZWUoc291cmNlLCBkZXN0aW5hdGlvbiwgaWdub3JlPXNodXRpbC5pZ25vcmVfcGF0dGVy
bnMoKnBhdHRlcm5zKSkKLQotCi1kZWYgY3JlYXRlWmlwRnJvbUxpc3QobGlzdFRvWmlwLCBjb25m
aWd1cmF0aW9uLCBleGNsdWRlUGF0dGVybj1Ob25lKToKLSAgICBhcmNoaXZlRGlyID0gb3MucGF0
aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAn
Li4nLCAnV2ViS2l0QnVpbGQnKSkKLSAgICBhcmNoaXZlRmlsZSA9IG9zLnBhdGguam9pbihhcmNo
aXZlRGlyLCBjb25maWd1cmF0aW9uICsgJy56aXAnKQotCi0gICAgdHJ5OgotICAgICAgICBvcy51
bmxpbmsoYXJjaGl2ZUZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0gICAgICAgIGlmIGUu
ZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UKLQotICAgIGlmIHN5cy5w
bGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpOgotICAgICAgICB6aXBDb21tYW5kID0gWyd6aXAn
LCAnLXknLCAnLXInLCBhcmNoaXZlRmlsZV0gKyBsaXN0VG9aaXAKLSAgICAgICAgaWYgZXhjbHVk
ZVBhdHRlcm46Ci0gICAgICAgICAgICB6aXBDb21tYW5kICs9IFsnLXgnLCBleGNsdWRlUGF0dGVy
bl0KLSAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbCh6aXBDb21tYW5kLCBjd2Q9X2NvbmZp
Z3VyYXRpb25CdWlsZERpcmVjdG9yeSkKLQotICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Io
J1Vuc3VwcG9ydGVkIHBsYXRmb3JtOiB7cGxhdGZvcm19Jy5mb3JtYXQocGxhdGZvcm09c3lzLnBs
YXRmb3JtKSkKLQotCi1kZWYgY3JlYXRlWmlwTWFudWFsbHkoZGlyZWN0b3J5VG9aaXAsIGFyY2hp
dmVGaWxlKToKLSAgICBhcmNoaXZlWmlwID0gemlwZmlsZS5aaXBGaWxlKGFyY2hpdmVGaWxlLCAi
dyIsIHppcGZpbGUuWklQX0RFRkxBVEVEKQotCi0gICAgZm9yIHBhdGgsIGRpck5hbWVzLCBmaWxl
TmFtZXMgaW4gb3Mud2FsayhkaXJlY3RvcnlUb1ppcCk6Ci0gICAgICAgIHJlbGF0aXZlUGF0aCA9
IG9zLnBhdGgucmVscGF0aChwYXRoLCBkaXJlY3RvcnlUb1ppcCkKLSAgICAgICAgZm9yIGZpbGVO
YW1lIGluIGZpbGVOYW1lczoKLSAgICAgICAgICAgIGFyY2hpdmVaaXAud3JpdGUob3MucGF0aC5q
b2luKHBhdGgsIGZpbGVOYW1lKSwgb3MucGF0aC5qb2luKHJlbGF0aXZlUGF0aCwgZmlsZU5hbWUp
KQotCi0gICAgYXJjaGl2ZVppcC5jbG9zZSgpCi0KLWRlZiBhZGRGaWxlc1RvQXJjaGl2ZShhcmNo
aXZlRmlsZSwgcGF0aFRvTGF1bmNoZXIsIHBhdGhUb1JlYWRtZSk6Ci0gICAgY29tbWFuZCA9IFsn
L3Vzci9iaW4vemlwJywgJy1qJywgYXJjaGl2ZUZpbGUsIHBhdGhUb0xhdW5jaGVyLCBwYXRoVG9S
ZWFkbWVdCi0gICAgcmV0dXJuIHN1YnByb2Nlc3MuY2FsbChjb21tYW5kKQotCi1kZWYgY3JlYXRl
WmlwKGRpcmVjdG9yeVRvWmlwLCBjb25maWd1cmF0aW9uLCBlbWJlZFBhcmVudERpcmVjdG9yeU5h
bWVPbkRhcndpbj1GYWxzZSwgbWluaWZ5PUZhbHNlKToKLSAgICBhcmNoaXZlRGlyID0gb3MucGF0
aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAi
Li4iLCAiV2ViS2l0QnVpbGQiKSkKLSAgICBpZiBtaW5pZnk6Ci0gICAgICAgIGNvbmZpZ3VyYXRp
b24gPSAnbWluaWZpZWQtJyArIGNvbmZpZ3VyYXRpb24KLSAgICBhcmNoaXZlRmlsZSA9IG9zLnBh
dGguam9pbihhcmNoaXZlRGlyLCBjb25maWd1cmF0aW9uICsgIi56aXAiKQotCi0gICAgdHJ5Ogot
ICAgICAgICBvcy51bmxpbmsoYXJjaGl2ZUZpbGUpCi0gICAgZXhjZXB0IE9TRXJyb3IsIGU6Ci0g
ICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UKLQot
ICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgY29tbWFuZCA9IFsnZGl0
dG8nLCAnLWMnLCAnLWsnLCAnLS1zZXF1ZXN0ZXJSc3JjJ10KLSAgICAgICAgaWYgZW1iZWRQYXJl
bnREaXJlY3RvcnlOYW1lT25EYXJ3aW46Ci0gICAgICAgICAgICBjb21tYW5kICs9IFsnLS1rZWVw
UGFyZW50J10KLSAgICAgICAgY29tbWFuZCArPSBbZGlyZWN0b3J5VG9aaXAsIGFyY2hpdmVGaWxl
XQotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKGNvbW1hbmQpIG9yIGFkZEZpbGVzVG9B
cmNoaXZlKGFyY2hpdmVGaWxlLCBQQVRIX1RPX0xBVU5DSEVSLCBQQVRIX1RPX1JFQURNRSkgCi0g
ICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2N5Z3dpbic6Ci0gICAgICAgIHJldHVybiBzdWJwcm9j
ZXNzLmNhbGwoWyJ6aXAiLCAiLXIiLCBhcmNoaXZlRmlsZSwgImJpbjY0Il0sIGN3ZD1kaXJlY3Rv
cnlUb1ppcCkKLSAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICBjcmVh
dGVaaXBNYW51YWxseShkaXJlY3RvcnlUb1ppcCwgYXJjaGl2ZUZpbGUpCi0gICAgICAgIHJldHVy
biAwCi0gICAgZWxpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnbGludXgnKToKLSAgICAgICAg
cmV0dXJuIHN1YnByb2Nlc3MuY2FsbChbInppcCIsICIteSIsICItciIsIGFyY2hpdmVGaWxlLCAi
LiJdLCBjd2Q9ZGlyZWN0b3J5VG9aaXApCi0KLQotZGVmIGRpckNvbnRhaW5zZHdvKGRpcmVjdG9y
eSk6Ci0gICAgc291cmNlZGlyID0gb3MucGF0aC5qb2luKF9jb25maWd1cmF0aW9uQnVpbGREaXJl
Y3RvcnksIGRpcmVjdG9yeSkKLSAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2Fsayhz
b3VyY2VkaXIsIHRvcGRvd249RmFsc2UpOgotICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAg
ICAgICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5kd28iKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gVHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBtaW5pZnlEaXJlY3RvcnkocGxhdGZv
cm0sIGRpcmVjdG9yeSk6Ci0gICAgaWYgcGxhdGZvcm0gaW4gWydtYWMnLCAnaW9zJywgJ3R2b3Mn
LCAnd2F0Y2hvcyddOgotICAgICAgICBkaXJfcGF0dGVybnMgPSAoJy5kU1lNJywgJ0Rlcml2ZWRT
b3VyY2VzJykKLSAgICAgICAgZmlsZV9wYXR0ZXJucyA9ICgnLmEnLCkKLSAgICAgICAgZm9yIHJv
b3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToKLSAgICAgICAgICAgIGlmIGFu
eShyb290LmVuZHN3aXRoKHBhdHRlcm4pIGZvciBwYXR0ZXJuIGluIGRpcl9wYXR0ZXJucyk6Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgJ1JlbW92aW5nOiB7fScuZm9ybWF0KHJvb3QpCi0gICAgICAg
ICAgICAgICAgc2h1dGlsLnJtdHJlZShyb290KQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmls
ZXM6Ci0gICAgICAgICAgICAgICAgaWYgYW55KG5hbWUuZW5kc3dpdGgocGF0dGVybikgZm9yIHBh
dHRlcm4gaW4gZmlsZV9wYXR0ZXJucyk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdSZW1v
dmluZzoge30nLmZvcm1hdChvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCi0gICAgICAgICAgICAg
ICAgICAgIG9zLnJlbW92ZShvcy5wYXRoLmpvaW4ocm9vdCwgbmFtZSkpCi0KLQotZGVmIGFyY2hp
dmVCdWlsdFByb2R1Y3QoY29uZmlndXJhdGlvbiwgcGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSwgbWlu
aWZ5PUZhbHNlKToKLSAgICBhc3NlcnQgcGxhdGZvcm0gaW4gKCdndGsnLCAnaW9zJywgJ2pzYycs
ICdtYWMnLCAndHZvcycsICd3YXRjaG9zJywgJ3dpbicsICd3aW5jYWlybycsICd3cGUnKQotCi0g
ICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZvcycsICd3YXRjaG9zJ106Ci0gICAgICAgIGNv
bWJpbmVkRGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKF90b3BMZXZlbEJ1aWxkRGlyZWN0b3J5LCAn
Y29tYmluZWQtbWFjLWFuZC17fScuZm9ybWF0KHBsYXRmb3JtKSkKLSAgICAgICAgcmVtb3ZlRGly
ZWN0b3J5SWZFeGlzdHMoY29tYmluZWREaXJlY3RvcnkpCi0gICAgICAgIG9zLm1ha2VkaXJzKGNv
bWJpbmVkRGlyZWN0b3J5KQotICAgICAgICBpZiBtaW5pZnk6Ci0gICAgICAgICAgICBtaW5pZnlE
aXJlY3RvcnkocGxhdGZvcm0sIF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpCi0gICAgICAg
ICAgICBtaW5pZnlEaXJlY3RvcnkocGxhdGZvcm0sIF9ob3N0QnVpbGREaXJlY3RvcnkpCi0gICAg
ICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbJy9iaW4vY3AnLCAnLXBSJywgX2NvbmZpZ3VyYXRpb25C
dWlsZERpcmVjdG9yeSwgY29tYmluZWREaXJlY3RvcnldKToKLSAgICAgICAgICAgIHJldHVybiAx
Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbJy9iaW4vY3AnLCAnLXBSJywgX2hvc3RCdWls
ZERpcmVjdG9yeSwgY29tYmluZWREaXJlY3RvcnldKToKLSAgICAgICAgICAgIHJldHVybiAxCi0K
LSAgICAgICAgcmV0dXJuIGNyZWF0ZVppcChjb21iaW5lZERpcmVjdG9yeSwgY29uZmlndXJhdGlv
biwgbWluaWZ5PW1pbmlmeSkKLSAgICBlbGlmIHBsYXRmb3JtID09ICdtYWMnOgotICAgICAgICBp
ZiBtaW5pZnk6Ci0gICAgICAgICAgICBtaW5pZnlEaXJlY3RvcnkocGxhdGZvcm0sIF9jb25maWd1
cmF0aW9uQnVpbGREaXJlY3RvcnkpCi0gICAgICAgIHJldHVybiBjcmVhdGVaaXAoX2NvbmZpZ3Vy
YXRpb25CdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbiwgZW1iZWRQYXJlbnREaXJlY3RvcnlO
YW1lT25EYXJ3aW49VHJ1ZSwgbWluaWZ5PW1pbmlmeSkKLSAgICBlbGlmIHBsYXRmb3JtIGluICgn
d2luJywgJ3dpbmNhaXJvJyk6Ci0gICAgICAgIGJpblR5cGUgPSAnYmluNjQnIGlmIG9zLnBhdGgu
ZXhpc3RzKG9zLnBhdGguam9pbihfY29uZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCAnYmluNjQn
KSkgZWxzZSAnYmluMzInCi0gICAgICAgIGJpbkRpcmVjdG9yeSA9IG9zLnBhdGguam9pbihfY29u
ZmlndXJhdGlvbkJ1aWxkRGlyZWN0b3J5LCBiaW5UeXBlKQotICAgICAgICB0aGluRGlyZWN0b3J5
ID0gb3MucGF0aC5qb2luKF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnksICd0aGluJykKLSAg
ICAgICAgdGhpbkJpbkRpcmVjdG9yeSA9IG9zLnBhdGguam9pbih0aGluRGlyZWN0b3J5LCBiaW5U
eXBlKQotCi0gICAgICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3RzKHRoaW5EaXJlY3RvcnkpCi0g
ICAgICAgIGNvcHlCdWlsZEZpbGVzKGJpbkRpcmVjdG9yeSwgdGhpbkJpbkRpcmVjdG9yeSwgWycq
LmlsayddKQotCi0gICAgICAgICMgU2F2ZSBXaW5DYWlyb1JlcXVpcmVtZW50cyB2ZXJzaW9uIGZv
ciB0ZXN0IGJvdCB1c2UKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dpbmNhaXJvJzoKLSAgICAg
ICAgICAgIHNodXRpbC5jb3B5KAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihvcy5nZXRl
bnYoJ1dFQktJVF9MSUJSQVJJRVMnKSwgJ1dlYktpdFJlcXVpcmVtZW50c1dpbjY0LnppcC52ZXJz
aW9uJyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRoaW5EaXJlY3RvcnksICdXZWJL
aXRSZXF1aXJlbWVudHNXaW42NC56aXAuY29uZmlnJykpCi0KLSAgICAgICAgaWYgY3JlYXRlWmlw
KHRoaW5EaXJlY3RvcnksIGNvbmZpZ3VyYXRpb24pOgotICAgICAgICAgICAgcmV0dXJuIDEKLQot
ICAgICAgICBzaHV0aWwucm10cmVlKHRoaW5EaXJlY3RvcnkpCi0KLSAgICBlbGlmIHBsYXRmb3Jt
IGluICgnZ3RrJywgJ2pzYycsICd3cGUnKToKLSAgICAgICAgIyBPbiBHVEsrL1dQRS9KU0Mgd2Ug
ZG9uJ3QgbmVlZCB0aGUgaW50ZXJtZWRpYXRlIHN0ZXAgb2YgY3JlYXRpbmcgYSB0aGluRGlyZWN0
b3J5Ci0gICAgICAgICMgdG8gYmUgY29tcHJlc3NlZCBpbiBhIFpJUCBmaWxlLCBiZWNhdXNlIHdl
IGNhbiBjcmVhdGUgdGhlIFpJUCBkaXJlY3RseS4KLSAgICAgICAgIyBUaGlzIGlzIGZhc3RlciBh
bmQgcmVxdWlyZXMgbGVzcyBkaXNrIHJlc291cmNlcy4KLSAgICAgICAgbmVlZGVkRGlyZWN0b3Jp
ZXMgPSBbJ2JpbicsICdsaWInXQotICAgICAgICAjIFdoZW4gZGVidWcgZmlzc2lvbiBpcyBlbmFi
bGVkIHRoZSBkaXJlY3RvcmllcyBiZWxvdyBjb250YWluIGR3byBmaWxlcwotICAgICAgICAjIHdp
dGggdGhlIGRlYnVnIGluZm9ybWF0aW9uIG5lZWRlZCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzIHdp
dGggR0RCLgotICAgICAgICBmb3Igb2JqZWN0RGlyIGluIFsnVG9vbHMnLCAnU291cmNlJ106Ci0g
ICAgICAgICAgICBpZiBkaXJDb250YWluc2R3byhvYmplY3REaXIpOgotICAgICAgICAgICAgICAg
IG5lZWRlZERpcmVjdG9yaWVzLmFwcGVuZChvYmplY3REaXIpCi0KLSAgICAgICAgaWYgY3JlYXRl
WmlwRnJvbUxpc3QobmVlZGVkRGlyZWN0b3JpZXMsIGNvbmZpZ3VyYXRpb24sIGV4Y2x1ZGVQYXR0
ZXJuPScqLm8nKToKLSAgICAgICAgICAgIHJldHVybiAxCi0KLWRlZiB1bnppcEFyY2hpdmUoZGly
ZWN0b3J5VG9FeHRyYWN0VG8sIGNvbmZpZ3VyYXRpb24pOgotICAgIGFyY2hpdmVEaXIgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIs
ICIuLiIsICJXZWJLaXRCdWlsZCIpKQotICAgIGFzc2VydCBvcy5wYXRoLmlzZGlyKGFyY2hpdmVE
aXIpCi0gICAgYXJjaGl2ZUZpbGUgPSBvcy5wYXRoLmpvaW4oYXJjaGl2ZURpciwgY29uZmlndXJh
dGlvbiArICIuemlwIikKLQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAg
ICAgaWYgc3VicHJvY2Vzcy5jYWxsKFsiZGl0dG8iLCAiLXgiLCAiLWsiLCBhcmNoaXZlRmlsZSwg
ZGlyZWN0b3J5VG9FeHRyYWN0VG9dKToKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgZWxpZiBz
eXMucGxhdGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2xpbnV4
Jyk6Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbInVuemlwIiwgIi1vIiwgYXJjaGl2ZUZp
bGVdLCBjd2Q9ZGlyZWN0b3J5VG9FeHRyYWN0VG8pOgotICAgICAgICAgICAgcmV0dXJuIDEKLSAg
ICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgICAgICBhcmNoaXZlID0gemlwZmls
ZS5aaXBGaWxlKGFyY2hpdmVGaWxlLCAiciIpCi0gICAgICAgIGFyY2hpdmUuZXh0cmFjdGFsbChk
aXJlY3RvcnlUb0V4dHJhY3RUbykKLSAgICAgICAgYXJjaGl2ZS5jbG9zZSgpCi0KLSAgICBvcy51
bmxpbmsoYXJjaGl2ZUZpbGUpCi0KLQotZGVmIGV4dHJhY3RCdWlsdFByb2R1Y3QoY29uZmlndXJh
dGlvbiwgcGxhdGZvcm0pOgotICAgIGFzc2VydCBwbGF0Zm9ybSBpbiAoJ2d0aycsICdpb3MnLCAn
anNjJywgJ21hYycsICd0dm9zJywgJ3dhdGNob3MnLCAnd2luJywgJ3dpbmNhaXJvJywgJ3dwZScp
Ci0KLSAgICBhcmNoaXZlRmlsZSA9IG9zLnBhdGguam9pbihfdG9wTGV2ZWxCdWlsZERpcmVjdG9y
eSwgY29uZmlndXJhdGlvbiArICcuemlwJykKLQotICAgIHJlbW92ZURpcmVjdG9yeUlmRXhpc3Rz
KF9jb25maWd1cmF0aW9uQnVpbGREaXJlY3RvcnkpCi0gICAgb3MubWFrZWRpcnMoX2NvbmZpZ3Vy
YXRpb25CdWlsZERpcmVjdG9yeSkKLQotICAgIGlmIHBsYXRmb3JtIGluICgnbWFjJywgJ2lvcycs
ICd0dm9zJywgJ3dhdGNob3MnKToKLSAgICAgICAgcmV0dXJuIHVuemlwQXJjaGl2ZShfdG9wTGV2
ZWxCdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbikKLSAgICBlbGlmIHBsYXRmb3JtIGluICgn
Z3RrJywgJ2pzYycsICd3aW4nLCAnd2luY2Fpcm8nLCAnd3BlJyk6Ci0gICAgICAgIHByaW50ICdF
eHRyYWN0aW5nJywgX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeQotICAgICAgICBpZiB1bnpp
cEFyY2hpdmUoX2NvbmZpZ3VyYXRpb25CdWlsZERpcmVjdG9yeSwgY29uZmlndXJhdGlvbik6Ci0g
ICAgICAgICAgICByZXR1cm4gMQotCi0gICAgICAgICMgUmVzdG9yZSBXaW5DYWlyb1JlcXVpcmVt
ZW50cyB2ZXJzaW9uIGZvciB0ZXN0IGJvdCB1c2UKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dp
bmNhaXJvJzoKLSAgICAgICAgICAgIHNodXRpbC5jb3B5KG9zLnBhdGguam9pbihfY29uZmlndXJh
dGlvbkJ1aWxkRGlyZWN0b3J5LCAnV2ViS2l0UmVxdWlyZW1lbnRzV2luNjQuemlwLmNvbmZpZycp
LCBvcy5nZXRlbnYoJ1dFQktJVF9MSUJSQVJJRVMnKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2NsZWFuLWJ1aWxkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Ns
ZWFuLWJ1aWxkCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9j
bGVhbi1idWlsZAkobm9uZXhpc3RlbnQpCkBAIC0xLDY0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52
IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWltcG9ydCBvcHRw
YXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0
IHN5cwotCi1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigi
dXNhZ2U6ICVwcm9nIFtvcHRpb25zXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tcGxhdGZv
cm0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV9jb25z
dCIsIGNvbnN0PSJkZWJ1ZyIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iKQotICAgIHBhcnNlci5hZGRf
b3B0aW9uKCItLXJlbGVhc2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9InJlbGVhc2Ui
LCBkZXN0PSJjb25maWd1cmF0aW9uIikKLQotICAgIG9wdGlvbnMsIHBhcmFtZXRlcnMgPSBwYXJz
ZXIucGFyc2VfYXJncygpCi0gICAgaWYgbm90IG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIHBh
cnNlci5lcnJvcigiUGxhdGZvcm0gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4gLTEKLSAg
ICBpZiBub3Qgb3B0aW9ucy5jb25maWd1cmF0aW9uOgotICAgICAgICBwYXJzZXIuZXJyb3IoIkNv
bmZpZ3VyYXRpb24gaXMgcmVxdWlyZWQiKQotICAgICAgICByZXR1cm4gLTIKLQotICAgIGlmIG9w
dGlvbnMucGxhdGZvcm0uc3RhcnRzd2l0aCgnaW9zLXNpbXVsYXRvcicpOgotICAgICAgICBwbGF0
Zm9ybSA9ICdpb3Mtc2ltdWxhdG9yJwotICAgIGVsaWYgb3B0aW9ucy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCdpb3MnKToKLSAgICAgICAgcGxhdGZvcm0gPSAnZGV2aWNlJwotICAgIGVsaWYgb3B0aW9u
cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqc2Mtb25seScpOgotICAgICAgICBwbGF0Zm9ybSA9ICdq
c2Mtb25seScKLSAgICBlbHNlOgotICAgICAgICBwbGF0Zm9ybSA9IG9wdGlvbnMucGxhdGZvcm0u
c3BsaXQoJy0nLCAxKVswXQotCi0gICAgd2Via2l0X2J1aWxkX2RpcmVjdG9yeSA9IHN1YnByb2Nl
c3MuUG9wZW4oWydwZXJsJywgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyks
ICIuLiIsICJTY3JpcHRzIiwgIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKSwKLSAgICAgICAgIi0t
IiArIHBsYXRmb3JtLCAiLS0iICsgb3B0aW9ucy5jb25maWd1cmF0aW9uLCAnLS10b3AtbGV2ZWwn
XSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkuY29tbXVuaWNhdGUoKVswXS5zdHJpcCgpCi0KLSAg
ICBpZiAob3MucGF0aC5pc2Rpcih3ZWJraXRfYnVpbGRfZGlyZWN0b3J5KSk6Ci0gICAgICAgIHNo
dXRpbC5ybXRyZWUod2Via2l0X2J1aWxkX2RpcmVjdG9yeSkKLQotICAgIHN1YnByb2Nlc3MuUG9w
ZW4oWydweXRob24nLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4u
IiwgIlNjcmlwdHMiLCAiY2xlYW4td2Via2l0IildKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2NsZWFuLWJ1aWxkCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmV4ZWN1
dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRlLXN0YWxlLWJ1aWxkLWZp
bGVzCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kZWxldGUt
c3RhbGUtYnVpbGQtZmlsZXMJKG5vbmV4aXN0ZW50KQpAQCAtMSw5MSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE1IEFwcGxlIEluYy4gIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6
Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0j
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBv
cnQgb3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLQot
Ci1kZWYgbWFpbigpOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigidXNhZ2U6
ICVwcm9nIFtvcHRpb25zXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tcGxhdGZvcm0iKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLWJ1aWxkLWRpcmVjdG9yeSIpCi0gICAgcGFyc2VyLmFk
ZF9vcHRpb24oIi0tZGVidWciLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9ImRlYnVnIiwg
ZGVzdD0iY29uZmlndXJhdGlvbiIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tcmVsZWFzZSIs
IGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0icmVsZWFzZSIsIGRlc3Q9ImNvbmZpZ3VyYXRp
b24iKQotCi0gICAgb3B0aW9ucywgcGFyYW1ldGVycyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAg
ICBpZiBub3Qgb3B0aW9ucy5wbGF0Zm9ybToKLSAgICAgICAgcGFyc2VyLmVycm9yKCJQbGF0Zm9y
bSBpcyByZXF1aXJlZCIpCi0gICAgICAgIHJldHVybiAtMQotICAgIGlmIG5vdCBvcHRpb25zLmNv
bmZpZ3VyYXRpb246Ci0gICAgICAgIHBhcnNlci5lcnJvcigiQ29uZmlndXJhdGlvbiBpcyByZXF1
aXJlZCIpCi0gICAgICAgIHJldHVybiAtMgotCi0gICAgZ2VuZXJpY1BsYXRmb3JtID0gb3B0aW9u
cy5wbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBdCi0gICAgaWYgZ2VuZXJpY1BsYXRmb3JtIG5vdCBp
biAoJ21hYycsICdpb3MnKToKLSAgICAgICAgcHJpbnQgJ0V4aXRlZCB3aXRob3V0IHJlbW92aW5n
IGFueSBmaWxlcy4nCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBpZiBvcHRpb25zLmJ1aWxkX2Rp
cmVjdG9yeToKLSAgICAgICAgYnVpbGREaXJlY3RvcnkgPSBvcHRpb25zLmJ1aWxkX2RpcmVjdG9y
eQotICAgIGVsc2U6Ci0gICAgICAgIGJ1aWxkRGlyZWN0b3J5ID0gd2Via2l0QnVpbGREaXJlY3Rv
cnkoZ2VuZXJpY1BsYXRmb3JtLCBvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zLmNvbmZpZ3VyYXRp
b24pCi0KLSAgICBleGl0X2NvZGUgPSAwCi0KLSAgICBmb3Igcm9vdCwgXywgZmlsZXMgaW4gb3Mu
d2FsayhidWlsZERpcmVjdG9yeSk6Ci0gICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAg
ICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCi0gICAgICAgICAgICBl
eHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZ1bGxfcGF0aClbMV0KLQotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIGlmIGV4dCBub3QgaW4gKCcubycsICcuZCcpIG9yIG9zLnBhdGguZ2V0
c2l6ZShmdWxsX3BhdGgpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAg
ICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHByaW50IGV4
Y2VwdGlvbgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBvcy5yZW1vdmUoZnVsbF9wYXRoKQotICAgICAgICAgICAgICAgIHByaW50
ICdSZW1vdmVkJywgZnVsbF9wYXRoCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGNl
cHRpb246Ci0gICAgICAgICAgICAgICAgcHJpbnQgZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAg
ZXhpdF9jb2RlICs9IDEKLQotICAgIHJldHVybiBleGl0X2NvZGUKLQotCi1kZWYgd2Via2l0QnVp
bGREaXJlY3RvcnkocGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSwgY29uZmlndXJhdGlvbik6Ci0gICAg
aWYgZnVsbFBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2lvcy1zaW11bGF0b3InKToKLSAgICAgICAgcGxh
dGZvcm0gPSAnaW9zLXNpbXVsYXRvcicKLSAgICBlbGlmIHBsYXRmb3JtID09ICdpb3MnOgotICAg
ICAgICBwbGF0Zm9ybSA9ICdkZXZpY2UnCi0gICAgcmV0dXJuIHN1YnByb2Nlc3MuUG9wZW4oWydw
ZXJsJywgb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICJTY3Jp
cHRzIiwgIndlYmtpdC1idWlsZC1kaXJlY3RvcnkiKSwKLSAgICAgICAgIi0tIiArIHBsYXRmb3Jt
LCAiLS0iICsgY29uZmlndXJhdGlvbiwgJy0tdG9wLWxldmVsJ10sIHN0ZG91dD1zdWJwcm9jZXNz
LlBJUEUpLmNvbW11bmljYXRlKClbMF0uc3RyaXAoKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbigpKQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVs
ZXRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTEgKzAsMCAjIwotKgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWls
dC1wcm9kdWN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NiArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLQotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBv
cnQgc3lzCi1pbXBvcnQgdXJsbGliCi0KLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBvcHRw
YXJzZS5PcHRpb25QYXJzZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10gW3VybF0iKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCItLXBsYXRmb3JtIiwgZGVzdD0icGxhdGZvcm0iKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJkZWJ1
ZyIsIGRlc3Q9ImNvbmZpZ3VyYXRpb24iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXJlbGVh
c2UiLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29uc3Q9InJlbGVhc2UiLCBkZXN0PSJjb25maWd1
cmF0aW9uIikKLQotICAgIG9wdGlvbnMsICh1cmwsICkgPSBwYXJzZXIucGFyc2VfYXJncygpCi0K
LSAgICBhcmNoaXZlRGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihvcy5wYXRoLmRp
cm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iLCAiV2ViS2l0QnVpbGQiKSkKLSAgICBpZiBub3Qg
b3MucGF0aC5pc2RpcihhcmNoaXZlRGlyKToKLSAgICAgICAgb3MubWFrZWRpcnMoYXJjaGl2ZURp
cikKLSAgICBhcmNoaXZlUGF0aCA9IG9zLnBhdGguam9pbihhcmNoaXZlRGlyLCAiJXMuemlwIiAl
IG9wdGlvbnMuY29uZmlndXJhdGlvbikKLQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzIn
OiAgIyBjdXJsIGlzIG5vdCBhdmFpbGJsZSBvbiBXaW5kb3dzIChvdXRzaWRlIG9mIGN5Z3dpbikK
LSAgICAgICAgdXJsbGliLnVybHJldHJpZXZlKHVybCwgYXJjaGl2ZVBhdGgpCi0gICAgICAgIHJl
dHVybiAwCi0KLSAgICByZXR1cm4gc3VicHJvY2Vzcy5jYWxsKFsiY3VybCIsICItLWZhaWwiLCAi
LS1vdXRwdXQiLCBhcmNoaXZlUGF0aCwgdXJsXSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1hcHAvZXdzL19faW5pdF9fLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9fX2luaXRfXy5weQkobm9uZXhpc3RlbnQp
CkBAIC0xLDUgKzAsMCBAQAotaW1wb3J0IGxvZ2dpbmcKLQotbG9nZ2luZy5iYXNpY0NvbmZpZyhm
aWxlbmFtZT0nZXdzLmxvZycsIGxldmVsPWxvZ2dpbmcuSU5GTywgZm9ybWF0PSclKGFzY3RpbWUp
cyAtICUobWVzc2FnZSlzJykKLQotZGVmYXVsdF9hcHBfY29uZmlnID0gJ2V3cy5hcHBzLkV3c0Nv
bmZpZycKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2FkbWluLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2FkbWlu
LnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBw
L2V3cy9hZG1pbi5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDI3ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmlj
b2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0IGFkbWluCi0KLSMgUmVn
aXN0ZXIgeW91ciBtb2RlbHMgaGVyZS4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzL2FwcHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvYXBwcy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWFwcC9ld3MvYXBwcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDM0ICswLDAg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdvLmFwcHMgaW1wb3J0IEFw
cENvbmZpZwotCi0KLWNsYXNzIEV3c0NvbmZpZyhBcHBDb25maWcpOgotICAgIG5hbWUgPSAnZXdz
JwotCi0gICAgZGVmIHJlYWR5KHNlbGYpOgotICAgICAgICAjIEZJWE1FOiBFbnN1cmUgdGhhdCB0
aGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBvbmNlLgotICAgICAgICBmcm9tIGV3cy5mZXRjaGVy
IGltcG9ydCBGZXRjaExvb3AKLSAgICAgICAgRmV0Y2hMb29wKCkKSW5kZXg6IFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2NvbW1vbi9fX2luaXRfXy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cklu
ZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vYnVnemlsbGEu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29t
bW9uL2J1Z3ppbGxhLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy9jb21tb24vYnVnemlsbGEucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwy
OTYgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMg
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
IyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LWltcG9ydCBiYXNlNjQKLWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1p
bXBvcnQgcmUKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IHNvY2tldAotaW1wb3J0IHRpbWUKLQot
ZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQotCi1mcm9tIGV3cy5tb2Rl
bHMucGF0Y2ggaW1wb3J0IFBhdGNoCi1mcm9tIGV3cy50aGlyZHBhcnR5LkJlYXV0aWZ1bFNvdXAg
aW1wb3J0IEJlYXV0aWZ1bFNvdXAsIFNvdXBTdHJhaW5lcgotaW1wb3J0IGV3cy5jb21tb24udXRp
bCBhcyB1dGlsCi1pbXBvcnQgZXdzLmNvbmZpZyBhcyBjb25maWcKLWltcG9ydCBkYXRldXRpbC5w
YXJzZXIKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIEJ1
Z3ppbGxhKCk6Ci0gICAgYnVnX29wZW5fc3RhdHVzZXMgPSBbJ1VOQ09ORklSTUVEJywgJ05FVycs
ICdBU1NJR05FRCcsICdSRU9QRU5FRCddCi0gICAgYnVnX2Nsb3NlZF9zdGF0dXNlcyA9IFsnUkVT
T0xWRUQnLCAnVkVSSUZJRUQnLCAnQ0xPU0VEJ10KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiByZXRyaWV2ZV9hdHRhY2htZW50KGNscywgYXR0YWNobWVudF9pZCk6Ci0gICAgICAgIGF0dGFj
aG1lbnRfanNvbiA9IEJ1Z3ppbGxhLl9mZXRjaF9hdHRhY2htZW50X2pzb24oYXR0YWNobWVudF9p
ZCkKLSAgICAgICAgaWYgbm90IGF0dGFjaG1lbnRfanNvbiBvciBub3QgYXR0YWNobWVudF9qc29u
LmdldCgnZGF0YScpOgotICAgICAgICAgICAgX2xvZy53YXJuKCdVbmFibGUgdG8gZmV0Y2ggYXR0
YWNobWVudCAie30iLicuZm9ybWF0KGF0dGFjaG1lbnRfaWQpKQotICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLQotICAgICAgICBhdHRhY2htZW50X2RhdGEgPSBiYXNlNjQuYjY0ZGVjb2RlKGF0dGFj
aG1lbnRfanNvbi5nZXQoJ2RhdGEnKSkKLSAgICAgICAgQnVnemlsbGEuc2F2ZV9hdHRhY2htZW50
KGF0dGFjaG1lbnRfaWQsIGF0dGFjaG1lbnRfZGF0YSkKLSAgICAgICAgYXR0YWNobWVudF9qc29u
WydwYXRoJ10gPSBCdWd6aWxsYS5maWxlX3BhdGhfZm9yX3BhdGNoKGF0dGFjaG1lbnRfaWQpCi0g
ICAgICAgIHJldHVybiBhdHRhY2htZW50X2pzb24KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBnZXRfY3FfcGx1c190aW1lc3RhbXAoY2xzLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgYXR0
YWNobWVudF9qc29uID0gQnVnemlsbGEuX2ZldGNoX2F0dGFjaG1lbnRfanNvbihhdHRhY2htZW50
X2lkKQotICAgICAgICBpZiBub3QgYXR0YWNobWVudF9qc29uOgotICAgICAgICAgICAgX2xvZy53
YXJuKCdVbmFibGUgdG8gZmV0Y2ggYXR0YWNobWVudCB7fS4nLmZvcm1hdChhdHRhY2htZW50X2lk
KSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgZm9yIGZsYWcgaW4gYXR0YWNo
bWVudF9qc29uLmdldCgnZmxhZ3MnKToKLSAgICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykg
PT0gJ2NvbW1pdC1xdWV1ZScgYW5kIGZsYWcuZ2V0KCdzdGF0dXMnKSA9PSAnKyc6Ci0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZXV0aWwucGFyc2Vy
LnBhcnNlKGZsYWcuZ2V0KCdtb2RpZmljYXRpb25fZGF0ZScpKQotICAgICAgICAgICAgICAgIGV4
Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgX2xvZy5lcnJvcignVW5hYmxlIHRvIHBhcnNlIHRp
bWVzdGFtcDoge30nLmZvcm1hdChmbGFnLmdldCgnbW9kaWZpY2F0aW9uX2RhdGUnKSkpCi0gICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2F2ZV9hdHRhY2ht
ZW50KGNscywgYXR0YWNobWVudF9pZCwgYXR0YWNobWVudF9kYXRhKToKLSAgICAgICAgd2l0aCBv
cGVuKEJ1Z3ppbGxhLmZpbGVfcGF0aF9mb3JfcGF0Y2goYXR0YWNobWVudF9pZCksICd3JykgYXMg
YXR0YWNobWVudF9maWxlOgotICAgICAgICAgICAgYXR0YWNobWVudF9maWxlLndyaXRlKGF0dGFj
aG1lbnRfZGF0YSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfYnVnemlsbGFfYXBp
X2tleShjbHMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBwYXNzd29yZHMgPSBqc29uLmxv
YWQob3BlbigncGFzc3dvcmRzLmpzb24nKSkKLSAgICAgICAgICAgIHJldHVybiBwYXNzd29yZHMu
Z2V0KCdCVUdaSUxMQV9BUElfS0VZJywgJycpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0Vycm9yIGluIHJlYWRpbmcgQnVnemlsbGEgYXBp
IGtleScpCi0gICAgICAgICAgICByZXR1cm4gJycKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRl
ZiBmZXRjaF9kYXRhX2Zyb21fYnVnemlsbGFfd2l0aF9hdXRoZW50aWNhdGlvbihjbHMsIHVybCk6
Ci0gICAgICAgIF9sb2cuaW5mbygnRmV0Y2hpbmcgZnJvbSBidWd6aWxsYToge30nLmZvcm1hdCh1
cmwpKQotICAgICAgICByZXNwb25zZSA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
cmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCB0aW1lb3V0PTEwLCBwYXJhbXM9eydCdWd6aWxs
YV9hcGlfa2V5JzogY2xzLmdldF9idWd6aWxsYV9hcGlfa2V5KCl9KQotICAgICAgICAgICAgaWYg
cmVzcG9uc2Uuc3RhdHVzX2NvZGUgIT0gMjAwOgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3Io
J0FjY2Vzc2VkIHt1cmx9IHdpdGggdW5leHBlY3RlZCBzdGF0dXMgY29kZSB7c3RhdHVzX2NvZGV9
LicuZm9ybWF0KHVybD11cmwsIHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6
Ci0gICAgICAgICAgICAjIENhdGNoaW5nIGFsbCBleGNlcHRpb25zIGhlcmUgdG8gc2FmZWd1YXJk
IGFwaSBrZXkuCi0gICAgICAgICAgICBfbG9nLmVycm9yKCdGYWlsZWQgdG8gYWNjZXNzIHt9Jy5m
b3JtYXQodXJsKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiByZXNw
b25zZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9mZXRjaF9hdHRhY2htZW50X2pzb24o
Y2xzLCBhdHRhY2htZW50X2lkKToKLSAgICAgICAgaWYgbm90IFBhdGNoLmlzX3ZhbGlkX3BhdGNo
X2lkKGF0dGFjaG1lbnRfaWQpOgotICAgICAgICAgICAgX2xvZy53YXJuKCdJbnZhbGlkIGF0dGFj
aG1lbnQgaWQ6ICJ7fSIsIHNraXBwaW5nIGRvd25sb2FkLicuZm9ybWF0KGF0dGFjaG1lbnRfaWQp
KQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBhdHRhY2htZW50X3VybCA9ICd7
fXJlc3QvYnVnL2F0dGFjaG1lbnQve30nLmZvcm1hdChjb25maWcuQlVHX1NFUlZFUl9VUkwsIGF0
dGFjaG1lbnRfaWQpCi0gICAgICAgIGF0dGFjaG1lbnQgPSBjbHMuZmV0Y2hfZGF0YV9mcm9tX2J1
Z3ppbGxhX3dpdGhfYXV0aGVudGljYXRpb24oYXR0YWNobWVudF91cmwpCi0gICAgICAgIGlmIG5v
dCBhdHRhY2htZW50OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgYXR0YWNobWVu
dF9qc29uID0gYXR0YWNobWVudC5qc29uKCkuZ2V0KCdhdHRhY2htZW50cycpCi0gICAgICAgIGlm
IG5vdCBhdHRhY2htZW50X2pzb24gb3IgbGVuKGF0dGFjaG1lbnRfanNvbikgPT0gMDoKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBhdHRhY2htZW50X2pzb24uZ2V0KHN0
cihhdHRhY2htZW50X2lkKSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfZ2V0X2J1Z19q
c29uKGNscywgYnVnX2lkKToKLSAgICAgICAgaWYgbm90IHV0aWwuaXNfdmFsaWRfaWQoYnVnX2lk
KToKLSAgICAgICAgICAgIF9sb2cud2FybignSW52YWxpZCBidWcgaWQ6IHt9Jy5mb3JtYXQoYnVn
X2lkKSkKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIGJ1Z191cmwgPSAne31yZXN0
L2J1Zy97fScuZm9ybWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgYnVnX2lkKQotICAgICAgICBi
dWcgPSBjbHMuZmV0Y2hfZGF0YV9mcm9tX2J1Z3ppbGxhX3dpdGhfYXV0aGVudGljYXRpb24oYnVn
X3VybCkKLSAgICAgICAgaWYgbm90IGJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAg
ICAgIGJ1Z3NfanNvbiA9IGJ1Zy5qc29uKCkuZ2V0KCdidWdzJykKLSAgICAgICAgaWYgbm90IGJ1
Z3NfanNvbiBvciBsZW4oYnVnc19qc29uKSA9PSAwOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUK
LSAgICAgICAgcmV0dXJuIGJ1Z3NfanNvblswXQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVm
IF9nZXRfY29tbWl0X3F1ZXVlX3BhdGNoZXNfZnJvbV9idWcoY2xzLCBidWdfaWQpOgotICAgICAg
ICBpZiBub3QgdXRpbC5pc192YWxpZF9pZChidWdfaWQpOgotICAgICAgICAgICAgX2xvZy53YXJu
KCdJbnZhbGlkIGJ1ZyBpZDogInt9IicuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1
cm4gW10KLQotICAgICAgICBidWdfdXJsID0gJ3t9cmVzdC9idWcve30vYXR0YWNobWVudCcuZm9y
bWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgYnVnX2lkKQotICAgICAgICBidWcgPSBjbHMuZmV0
Y2hfZGF0YV9mcm9tX2J1Z3ppbGxhX3dpdGhfYXV0aGVudGljYXRpb24oYnVnX3VybCkKLSAgICAg
ICAgaWYgbm90IGJ1ZzoKLSAgICAgICAgICAgIHJldHVybiBbXQotICAgICAgICBidWdfanNvbiA9
IGJ1Zy5qc29uKCkuZ2V0KCdidWdzJykKLSAgICAgICAgaWYgbm90IGJ1Z19qc29uIG9yIGxlbihi
dWdfanNvbikgPT0gMDoKLSAgICAgICAgICAgIHJldHVybiBbXQotCi0gICAgICAgIGNvbW1pdF9x
dWV1ZV9wYXRjaGVzID0gW10KLSAgICAgICAgZm9yIHBhdGNoX2pzb24gaW4gYnVnX2pzb24uZ2V0
KHN0cihidWdfaWQpKToKLSAgICAgICAgICAgIGlmIGNscy5faXNfcGF0Y2hfY3FfcGx1cyhwYXRj
aF9qc29uKSA9PSAxOgotICAgICAgICAgICAgICAgIGNvbW1pdF9xdWV1ZV9wYXRjaGVzLmFwcGVu
ZChwYXRjaF9qc29uLmdldCgnaWQnKSkKLQotICAgICAgICByZXR1cm4gY29tbWl0X3F1ZXVlX3Bh
dGNoZXMKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfaXNfcGF0Y2hfY3FfcGx1cyhjbHMs
IHBhdGNoX2pzb24pOgotICAgICAgICBpZiBub3QgcGF0Y2hfanNvbjoKLSAgICAgICAgICAgIHJl
dHVybiAtMQotCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24uZ2V0KCdmbGFncycsIFtd
KToKLSAgICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ2NvbW1pdC1xdWV1ZScgYW5k
IGZsYWcuZ2V0KCdzdGF0dXMnKSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAg
ICAgICAgcmV0dXJuIDAKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmaWxlX3BhdGhfZm9y
X3BhdGNoKGNscywgcGF0Y2hfaWQpOgotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoY29u
ZmlnLlBBVENIX0ZPTERFUik6Ci0gICAgICAgICAgICBvcy5ta2Rpcihjb25maWcuUEFUQ0hfRk9M
REVSKQotICAgICAgICByZXR1cm4gY29uZmlnLlBBVENIX0ZPTERFUiArICd7fS5wYXRjaCcuZm9y
bWF0KHBhdGNoX2lkKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9saXN0X29mX3Bh
dGNoZXNfbmVlZGluZ19yZXZpZXdzKGNscyk6Ci0gICAgICAgIGN1cnJlbnRfdGltZSA9IGRhdGV0
aW1lLnRvZGF5KCkKLSAgICAgICAgaWRzX25lZWRpbmdfcmV2aWV3ID0gc2V0KEJ1Z3ppbGxhQmVh
dXRpZnVsU291cCgpLmZldGNoX2F0dGFjaG1lbnRfaWRzX2Zyb21fcmV2aWV3X3F1ZXVlKGN1cnJl
bnRfdGltZSAtIHRpbWVkZWx0YSg3KSkpCi0gICAgICAgICNUT0RPOiBhZGQgc2VjdXJpdHkgYnVn
cyBzdXBwb3J0IGhlcmUuCi0gICAgICAgIHJldHVybiBpZHNfbmVlZGluZ19yZXZpZXcKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfbGlzdF9vZl9wYXRjaGVzX2Zvcl9jb21taXRfcXVl
dWUoY2xzKToKLSAgICAgICAgYnVnX2lkc19mb3JfY29tbWl0X3F1ZXVlID0gc2V0KEJ1Z3ppbGxh
QmVhdXRpZnVsU291cCgpLmZldGNoX2J1Z19pZHNfZm9yX2NvbW1pdF9xdWV1ZSgpKQotICAgICAg
ICBpZHNfZm9yX2NvbW1pdF9xdWV1ZSA9IFtdCi0gICAgICAgIGZvciBidWdfaWQgaW4gYnVnX2lk
c19mb3JfY29tbWl0X3F1ZXVlOgotICAgICAgICAgICAgaWRzX2Zvcl9jb21taXRfcXVldWUuZXh0
ZW5kKGNscy5fZ2V0X2NvbW1pdF9xdWV1ZV9wYXRjaGVzX2Zyb21fYnVnKGJ1Z19pZCkpCi0gICAg
ICAgIHJldHVybiBpZHNfZm9yX2NvbW1pdF9xdWV1ZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg
ZGVmIGlzX2J1Z19jbG9zZWQoY2xzLCBidWdfaWQpOgotICAgICAgICBidWdfanNvbiA9IGNscy5f
Z2V0X2J1Z19qc29uKGJ1Z19pZCkKLSAgICAgICAgaWYgbm90IGJ1Z19qc29uIG9yIG5vdCBidWdf
anNvbi5nZXQoJ3N0YXR1cycpOgotICAgICAgICAgICAgX2xvZy53YXJuKCdVbmFibGUgdG8gZmV0
Y2ggYnVnIHt9LicuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAg
ICAgICBpZiBidWdfanNvbi5nZXQoJ3N0YXR1cycpIGluIGNscy5idWdfY2xvc2VkX3N0YXR1c2Vz
OgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgcmV0dXJuIDAKLQotCi1jbGFzcyBCdWd6
aWxsYUJlYXV0aWZ1bFNvdXAoKToKLSAgICAjIEZJWE1FOiBEZXByZWNhdGUgdGhpcyBjbGFzcyB3
aGVuIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDg1MzEg
aXMgZml4ZWQuCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9icm93c2Vy
ID0gTm9uZQotCi0gICAgZGVmIF9nZXRfYnJvd3NlcihzZWxmKToKLSAgICAgICAgaWYgbm90IHNl
bGYuX2Jyb3dzZXI6Ci0gICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoNjAwKQot
ICAgICAgICAgICAgZnJvbSBtZWNoYW5pemUgaW1wb3J0IEJyb3dzZXIKLSAgICAgICAgICAgIHNl
bGYuX2Jyb3dzZXIgPSBCcm93c2VyKCkKLSAgICAgICAgICAgIHNlbGYuX2Jyb3dzZXIuc2V0X2hh
bmRsZV9yb2JvdHMoRmFsc2UpCi0gICAgICAgIHJldHVybiBzZWxmLl9icm93c2VyCi0KLSAgICBk
ZWYgX3NldF9icm93c2VyKHNlbGYsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fYnJvd3NlciA9IHZh
bHVlCi0KLSAgICBicm93c2VyID0gcHJvcGVydHkoX2dldF9icm93c2VyLCBfc2V0X2Jyb3dzZXIp
Ci0KLSAgICBkZWYgYXV0aGVudGljYXRlKHNlbGYpOgotICAgICAgICB1c2VybmFtZSA9IG9zLmdl
dGVudignQlVHWklMTEFfVVNFUk5BTUUnLCBOb25lKQotICAgICAgICBwYXNzd29yZCA9IG9zLmdl
dGVudignQlVHWklMTEFfUEFTU1dPUkQnLCBOb25lKQotICAgICAgICBpZiBub3QgdXNlcm5hbWUg
b3Igbm90IHBhc3N3b3JkOgotICAgICAgICAgICAgX2xvZy53YXJuKCdCdWd6aWxsYSB1c2VybmFt
ZS9wYXNzd29yZCBub3QgY29uZmlndXJlZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFNraXBw
aW5nIGF1dGhlbnRpY2F0aW9uLicpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBhdXRo
ZW50aWNhdGVkID0gRmFsc2UKLSAgICAgICAgYXR0ZW1wdHMgPSAwCi0gICAgICAgIHdoaWxlIG5v
dCBhdXRoZW50aWNhdGVkOgotICAgICAgICAgICAgYXR0ZW1wdHMgKz0gMQotICAgICAgICAgICAg
X2xvZy5kZWJ1ZygnTG9nZ2luZyBpbiBhcyB7fS4uLicuZm9ybWF0KHVzZXJuYW1lKSkKLSAgICAg
ICAgICAgIHNlbGYuYnJvd3Nlci5vcGVuKGNvbmZpZy5CVUdfU0VSVkVSX1VSTCArICdpbmRleC5j
Z2k/R29BaGVhZEFuZExvZ0luPTEnKQotICAgICAgICAgICAgc2VsZi5icm93c2VyLnNlbGVjdF9m
b3JtKG5hbWU9ImxvZ2luIikKLSAgICAgICAgICAgIHNlbGYuYnJvd3NlclsnQnVnemlsbGFfbG9n
aW4nXSA9IHVzZXJuYW1lCi0gICAgICAgICAgICBzZWxmLmJyb3dzZXJbJ0J1Z3ppbGxhX3Bhc3N3
b3JkJ10gPSBwYXNzd29yZAotICAgICAgICAgICAgc2VsZi5icm93c2VyLmZpbmRfY29udHJvbCgi
QnVnemlsbGFfcmVzdHJpY3Rsb2dpbiIpLml0ZW1zWzBdLnNlbGVjdGVkID0gRmFsc2UKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYuYnJvd3Nlci5zdWJt
aXQoKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1Vu
ZXhwZWN0ZWQgZXJyb3Igd2hpbGUgYXV0aGVudGljYXRpbmcgdG8gYnVnemlsbGEuJykKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgiPHRp
dGxlPiguKz8pPC90aXRsZT4iLCByZXNwb25zZS5yZWFkKCkpCi0gICAgICAgICAgICAjIElmIHRo
ZSByZXN1bHRpbmcgcGFnZSBoYXMgYSB0aXRsZSwgYW5kIGl0IGNvbnRhaW5zIHRoZSB3b3JkCi0g
ICAgICAgICAgICAjICJpbnZhbGlkIiBhc3N1bWUgaXQncyB0aGUgbG9naW4gZmFpbHVyZSBwYWdl
LgotICAgICAgICAgICAgaWYgbWF0Y2ggYW5kIHJlLnNlYXJjaCgiSW52YWxpZCIsIG1hdGNoLmdy
b3VwKDEpLCByZS5JR05PUkVDQVNFKToKLSAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2UgPSAn
QnVnemlsbGEgbG9naW4gZmFpbGVkOiB7fScuZm9ybWF0KG1hdGNoLmdyb3VwKDEpKQotICAgICAg
ICAgICAgICAgIGlmIGF0dGVtcHRzID49IDM6Ci0gICAgICAgICAgICAgICAgICAgICMgcmFpc2Ug
YW4gZXhjZXB0aW9uIG9ubHkgaWYgdGhpcyB3YXMgdGhlIGxhc3QgYXR0ZW1wdAotICAgICAgICAg
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgICAg
IF9sb2cuZXJyb3IoZXJyb3JNZXNzYWdlKQotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMykK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYXV0aGVudGljYXRlZCA9IFRydWUK
LQotICAgIGRlZiBmZXRjaF9hdHRhY2htZW50X2lkc19mcm9tX3Jldmlld19xdWV1ZShzZWxmLCBz
aW5jZT1Ob25lLCBvbmx5X3NlY3VyaXR5X2J1Z3M9RmFsc2UpOgotICAgICAgICByZXZpZXdfcXVl
dWVfdXJsID0gJ3JlcXVlc3QuY2dpP2FjdGlvbj1xdWV1ZSZ0eXBlPXJldmlldyZncm91cD10eXBl
JwotICAgICAgICBpZiBvbmx5X3NlY3VyaXR5X2J1Z3M6Ci0gICAgICAgICAgICByZXZpZXdfcXVl
dWVfdXJsICs9ICcmcHJvZHVjdD1TZWN1cml0eScKLSAgICAgICAgcmV0dXJuIHNlbGYuX3BhcnNl
X2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZi5fbG9hZF9xdWVyeShyZXZpZXdfcXVl
dWVfdXJsKSwgc2luY2UpCi0KLSAgICBkZWYgZmV0Y2hfYnVnX2lkc19mb3JfY29tbWl0X3F1ZXVl
KHNlbGYpOgotICAgICAgICBjb21taXRfcXVldWVfdXJsID0gImJ1Z2xpc3QuY2dpP3F1ZXJ5X2Zv
cm1hdD1hZHZhbmNlZCZidWdfc3RhdHVzPVVOQ09ORklSTUVEJmJ1Z19zdGF0dXM9TkVXJmJ1Z19z
dGF0dXM9QVNTSUdORUQmYnVnX3N0YXR1cz1SRU9QRU5FRCZmaWVsZDAtMC0wPWZsYWd0eXBlcy5u
YW1lJnR5cGUwLTAtMD1lcXVhbHMmdmFsdWUwLTAtMD1jb21taXQtcXVldWUlMkImb3JkZXI9TGFz
dCtDaGFuZ2VkIgotICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChzZWxmLl9sb2FkX3F1ZXJ5
KGNvbW1pdF9xdWV1ZV91cmwpKQotICAgICAgICAjIFRoZSBjb250ZW50cyBvZiB0aGUgPGE+IGlu
c2lkZSB0aGUgY2VsbHMgaW4gdGhlIGZpcnN0IGNvbHVtbiBoYXBwZW4KLSAgICAgICAgIyB0byBi
ZSB0aGUgYnVnIGlkLgotICAgICAgICByZXR1cm4gW2ludChidWdfbGlua19jZWxsLmZpbmQoImEi
KS5zdHJpbmcpCi0gICAgICAgICAgICAgICAgZm9yIGJ1Z19saW5rX2NlbGwgaW4gc291cCgndGQn
LCAiZmlyc3QtY2hpbGQiKV0KLQotICAgIGRlZiBfbG9hZF9xdWVyeShzZWxmLCBxdWVyeSk6Ci0g
ICAgICAgIHNlbGYuYXV0aGVudGljYXRlKCkKLSAgICAgICAgZnVsbF91cmwgPSAne317fScuZm9y
bWF0KGNvbmZpZy5CVUdfU0VSVkVSX1VSTCwgcXVlcnkpCi0gICAgICAgIF9sb2cuZGVidWcoJ0dl
dHRpbmcgbGlzdCBvZiBwYXRjaGVzIG5lZWRpbmcgcmV2aWV3LCBVUkw6IHt9Jy5mb3JtYXQoZnVs
bF91cmwpKQotICAgICAgICByZXR1cm4gc2VsZi5icm93c2VyLm9wZW4oZnVsbF91cmwpCi0KLSAg
ICBkZWYgX3BhcnNlX2F0dGFjaG1lbnRfaWRzX3JlcXVlc3RfcXVlcnkoc2VsZiwgcGFnZSwgc2lu
Y2U9Tm9uZSk6Ci0gICAgICAgICMgRm9ybWF0cwotICAgICAgICBkaWdpdHMgPSByZS5jb21waWxl
KCJcZCsiKQotICAgICAgICBhdHRhY2htZW50X2hyZWYgPSByZS5jb21waWxlKCJhdHRhY2htZW50
LmNnaVw/aWQ9XGQrJmFjdGlvbj1yZXZpZXciKQotICAgICAgICAjIGlmIG5vIGRhdGUgaXMgZ2l2
ZW4sIHJldHVybiBhbGwgaWRzCi0gICAgICAgIGlmIG5vdCBzaW5jZToKLSAgICAgICAgICAgIGF0
dGFjaG1lbnRfbGlua3MgPSBTb3VwU3RyYWluZXIoImEiLCBocmVmPWF0dGFjaG1lbnRfaHJlZikK
LSAgICAgICAgICAgIHJldHVybiBbaW50KGRpZ2l0cy5zZWFyY2godGFnWyJocmVmIl0pLmdyb3Vw
KDApKQotICAgICAgICAgICAgICAgIGZvciB0YWcgaW4gQmVhdXRpZnVsU291cChwYWdlLCBwYXJz
ZU9ubHlUaGVzZT1hdHRhY2htZW50X2xpbmtzKV0KLQotICAgICAgICAjIFBhcnNlIHRoZSBtYWlu
IHRhYmxlIG9ubHkKLSAgICAgICAgZGF0ZV9mb3JtYXQgPSByZS5jb21waWxlKCJcZHs0fS1cZHsy
fS1cZHsyfSBcZHsyfTpcZHsyfSIpCi0gICAgICAgIG10YWIgPSBTb3VwU3RyYWluZXIoInRhYmxl
IiwgeyJjbGFzcyI6ICJyZXF1ZXN0cyJ9KQotICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChw
YWdlLCBwYXJzZU9ubHlUaGVzZT1tdGFiKQotICAgICAgICBwYXRjaF9pZHMgPSBbXQotCi0gICAg
ICAgIGZvciByb3cgaW4gc291cC5maW5kQWxsKCJ0ciIpOgotICAgICAgICAgICAgcGF0Y2hfdGFn
ID0gcm93LmZpbmQoImEiLCB7ImhyZWYiOiBhdHRhY2htZW50X2hyZWZ9KQotICAgICAgICAgICAg
aWYgbm90IHBhdGNoX3RhZzoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
cGF0Y2hfaWQgPSBpbnQoZGlnaXRzLnNlYXJjaChwYXRjaF90YWdbImhyZWYiXSkuZ3JvdXAoMCkp
Ci0gICAgICAgICAgICBkYXRlX3RhZyA9IHJvdy5maW5kKCJ0ZCIsIHRleHQ9ZGF0ZV9mb3JtYXQp
Ci0gICAgICAgICAgICBpZiBkYXRlX3RhZyBhbmQgZGF0ZXRpbWUuc3RycHRpbWUoZGF0ZV9mb3Jt
YXQuc2VhcmNoKGRhdGVfdGFnKS5ncm91cCgwKSwgIiVZLSVtLSVkICVIOiVNIikgPCBzaW5jZToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcGF0Y2hfaWRzLmFwcGVuZChw
YXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2lkcwpJbmRleDogVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29tbW9uL2J1aWxkYm90LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL2NvbW1vbi9idWlsZGJvdC5weQkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29t
bW9uL2J1aWxkYm90LnB5CShub25leGlzdGVudCkKQEAgLTEsMTcxICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGZ1dHVyZS51dGlscyBp
bXBvcnQgbHJhbmdlCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1w
b3J0IHJlcXVlc3RzCi1pbXBvcnQgc3VicHJvY2VzcwotCi1pbXBvcnQgZXdzLmNvbW1vbi51dGls
IGFzIHV0aWwKLWltcG9ydCBld3MuY29uZmlnIGFzIGNvbmZpZwotCi1fbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgQnVpbGRib3QoKToKLSAgICAjIEJ1aWxkYm90
IHN0YXR1cyBjb2RlcyByZWZlcmVuY2VkIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL2J1aWxkYm90
L2J1aWxkYm90L2Jsb2IvbWFzdGVyL21hc3Rlci9idWlsZGJvdC9wcm9jZXNzL3Jlc3VsdHMucHkK
LSAgICBBTExfUkVTVUxUUyA9IGxyYW5nZSg3KQotICAgIFNVQ0NFU1MsIFdBUk5JTkdTLCBGQUlM
VVJFLCBTS0lQUEVELCBFWENFUFRJT04sIFJFVFJZLCBDQU5DRUxMRUQgPSBBTExfUkVTVUxUUwot
ICAgIGljb25zX2Zvcl9xdWV1ZXNfbWFwcGluZyA9IHt9Ci0gICAgcXVldWVfbmFtZV9ieV9zaG9y
dG5hbWVfbWFwcGluZyA9IHt9Ci0gICAgYnVpbGRlcl9uYW1lX3RvX2lkX21hcHBpbmcgPSB7fQot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNlbmRfcGF0Y2hfdG9fYnVpbGRib3QoY2xzLCBw
YXRjaF9wYXRoLCBzZW5kX3RvX2NvbW1pdF9xdWV1ZT1GYWxzZSwgcHJvcGVydGllcz1Ob25lKToK
LSAgICAgICAgcHJvcGVydGllcyA9IHByb3BlcnRpZXMgb3IgW10KLSAgICAgICAgYnVpbGRib3Rf
cG9ydCA9IGNvbmZpZy5DT01NSVRfUVVFVUVfUE9SVCBpZiBzZW5kX3RvX2NvbW1pdF9xdWV1ZSBl
bHNlIGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfUE9SVAotICAgICAgICBjb21tYW5kID0gWydidWls
ZGJvdCcsICd0cnknLAotICAgICAgICAgICAgICAgICAgICctLWNvbm5lY3Q9cGInLAotICAgICAg
ICAgICAgICAgICAgICctLW1hc3Rlcj17fTp7fScuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJW
RVJfSE9TVCwgYnVpbGRib3RfcG9ydCksCi0gICAgICAgICAgICAgICAgICAgJy0tdXNlcm5hbWU9
e30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfVFJZX1VTRVJOQU1FKSwKLSAgICAgICAgICAgICAg
ICAgICAnLS1wYXNzd2Q9e30nLmZvcm1hdChjb25maWcuQlVJTERCT1RfVFJZX1BBU1NXT1JEKSwK
LSAgICAgICAgICAgICAgICAgICAnLS1kaWZmPXt9Jy5mb3JtYXQocGF0Y2hfcGF0aCksCi0gICAg
ICAgICAgICAgICAgICAgJy0tcmVwb3NpdG9yeT0nXQotCi0gICAgICAgIGZvciBwcm9wZXJ0eSBp
biBwcm9wZXJ0aWVzOgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQoJy0tcHJvcGVydHk9e30n
LmZvcm1hdChwcm9wZXJ0eSkpCi0KLSAgICAgICAgcmV0dXJuX2NvZGUgPSBzdWJwcm9jZXNzLmNh
bGwoY29tbWFuZCkKLSAgICAgICAgaWYgcmV0dXJuX2NvZGU6Ci0gICAgICAgICAgICBfbG9nLndh
cm4oJ0Vycm9yIGV4ZWN1dGluZyBidWlsZGJvdCB0cnkgY29tbWFuZCBmb3Ige30sIHJldHVybiBj
b2RlPXt9Jy5mb3JtYXQocGF0Y2hfcGF0aCwgcmV0dXJuX2NvZGUpKQotCi0gICAgICAgIHJldHVy
biByZXR1cm5fY29kZQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9idWlsZGVyX2lk
X3RvX25hbWVfbWFwcGluZyhjbHMpOgotICAgICAgICBidWlsZGVyX2lkX3RvX25hbWVfbWFwcGlu
ZyA9IHt9Ci0gICAgICAgIGJ1aWxkZXJfdXJsID0gJ2h0dHA6Ly97fS9hcGkvdjIvYnVpbGRlcnMn
LmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QpCi0gICAgICAgIGJ1aWxkZXJzX2Rh
dGEgPSB1dGlsLmZldGNoX2RhdGFfZnJvbV91cmwoYnVpbGRlcl91cmwpCi0gICAgICAgIGlmIG5v
dCBidWlsZGVyc19kYXRhOgotICAgICAgICAgICAgcmV0dXJuIHt9Ci0gICAgICAgIGZvciBidWls
ZGVyIGluIGJ1aWxkZXJzX2RhdGEuanNvbigpLmdldCgnYnVpbGRlcnMnLCBbXSk6Ci0gICAgICAg
ICAgICBidWlsZGVyX2lkID0gYnVpbGRlclsnYnVpbGRlcmlkJ10KLSAgICAgICAgICAgIGJ1aWxk
ZXJfbmFtZSA9IGJ1aWxkZXIuZ2V0KCduYW1lJykKLSAgICAgICAgICAgIGRpc3BsYXlfbmFtZSA9
IGJ1aWxkZXIuZ2V0KCdkZXNjcmlwdGlvbicpCi0gICAgICAgICAgICBpZiBub3QgZGlzcGxheV9u
YW1lOgotICAgICAgICAgICAgICAgIGRpc3BsYXlfbmFtZSA9IEJ1aWxkYm90Ll9nZXRfZGlzcGxh
eV9uYW1lX2Zyb21fYnVpbGRlcl9uYW1lKGJ1aWxkZXJfbmFtZSkKLSAgICAgICAgICAgIGJ1aWxk
ZXJfaWRfdG9fbmFtZV9tYXBwaW5nW2J1aWxkZXJfaWRdID0geydidWlsZGVyX25hbWUnOiBidWls
ZGVyX25hbWUsICdkaXNwbGF5X25hbWUnOiBkaXNwbGF5X25hbWV9Ci0gICAgICAgIHJldHVybiBi
dWlsZGVyX2lkX3RvX25hbWVfbWFwcGluZwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9n
ZXRfZGlzcGxheV9uYW1lX2Zyb21fYnVpbGRlcl9uYW1lKGNscywgYnVpbGRlcl9uYW1lKToKLSAg
ICAgICAgd29yZHMgPSByZS5zcGxpdCgnWywgXC1fOigpXSsnLCBidWlsZGVyX25hbWUpCi0gICAg
ICAgIGlmIG5vdCB3b3JkczoKLSAgICAgICAgICAgIHJldHVybiBidWlsZGVyX25hbWUKLSAgICAg
ICAgcmV0dXJuIHdvcmRzWzBdLmxvd2VyKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBm
ZXRjaF9jb25maWcoY2xzKToKLSAgICAgICAgY29uZmlnX3VybCA9ICdodHRwczovL3t9L2NvbmZp
Zy5qc29uJy5mb3JtYXQoY29uZmlnLkJVSUxEQk9UX1NFUlZFUl9IT1NUKQotICAgICAgICBjb25m
aWdfZGF0YSA9IHV0aWwuZmV0Y2hfZGF0YV9mcm9tX3VybChjb25maWdfdXJsKQotICAgICAgICBp
ZiBub3QgY29uZmlnX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgcmV0dXJuIGNvbmZpZ19kYXRhLmpzb24oKQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBfbG9nLmVycm9yKCdFcnJvciBpbiBmZXRjaGluZyB7
fS4gRXJyb3I6IHt9Jy5mb3JtYXQoY29uZmlnX3VybCwgZSkpCi0gICAgICAgICAgICByZXR1cm4g
e30KLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfaWNvbnNfZm9yX3F1ZXVlc19t
YXBwaW5nKGNscyk6Ci0gICAgICAgIGNvbmZpZyA9IGNscy5mZXRjaF9jb25maWcoKQotICAgICAg
ICBpZiBub3QgY29uZmlnOgotICAgICAgICAgICAgX2xvZy5lcnJvcignVW5hYmxlIHRvIGZldGNo
IGJ1aWxkYm90IGNvbmZpZy5qc29uJykKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3Ig
YnVpbGRlciBpbiBjb25maWcuZ2V0KCdidWlsZGVycycsIFtdKToKLSAgICAgICAgICAgIHNob3J0
bmFtZSA9IGJ1aWxkZXIuZ2V0KCdzaG9ydG5hbWUnKQotICAgICAgICAgICAgQnVpbGRib3QuaWNv
bnNfZm9yX3F1ZXVlc19tYXBwaW5nW3Nob3J0bmFtZV0gPSBidWlsZGVyLmdldCgnaWNvbicpCi0g
ICAgICAgICAgICBCdWlsZGJvdC5xdWV1ZV9uYW1lX2J5X3Nob3J0bmFtZV9tYXBwaW5nW3Nob3J0
bmFtZV0gPSBidWlsZGVyLmdldCgnbmFtZScpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
dXBkYXRlX2J1aWxkZXJfbmFtZV90b19pZF9tYXBwaW5nKGNscyk6Ci0gICAgICAgIHVybCA9ICdo
dHRwczovL3t9L2FwaS92Mi9idWlsZGVycycuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJf
SE9TVCkKLSAgICAgICAgYnVpbGRlcnNfZGF0YSA9IHV0aWwuZmV0Y2hfZGF0YV9mcm9tX3VybCh1
cmwpCi0gICAgICAgIGlmIG5vdCBidWlsZGVyc19kYXRhOgotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJzX2RhdGEuanNvbigpLmdldCgnYnVpbGRlcnMn
LCBbXSk6Ci0gICAgICAgICAgICBuYW1lID0gYnVpbGRlci5nZXQoJ25hbWUnKQotICAgICAgICAg
ICAgQnVpbGRib3QuYnVpbGRlcl9uYW1lX3RvX2lkX21hcHBpbmdbbmFtZV0gPSBidWlsZGVyLmdl
dCgnYnVpbGRlcmlkJykKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmZXRjaF9wZW5kaW5n
X2FuZF9pbnByb2dyZXNzX2J1aWxkcyhjbHMsIGJ1aWxkZXJfZnVsbF9uYW1lKToKLSAgICAgICAg
YnVpbGRlcmlkID0gQnVpbGRib3QuYnVpbGRlcl9uYW1lX3RvX2lkX21hcHBpbmcuZ2V0KGJ1aWxk
ZXJfZnVsbF9uYW1lKQotICAgICAgICBpZiBub3QgQnVpbGRib3QuYnVpbGRlcl9uYW1lX3RvX2lk
X21hcHBpbmc6Ci0gICAgICAgICAgICBfbG9nLndhcm4oJ01pc3NpbmcgYnVpbGRlcl9uYW1lX3Rv
X2lkX21hcHBpbmcsIHJlZmV0Y2hpbmcgaXQgZnJvbSB7fScuZm9ybWF0KGNvbmZpZy5CVUlMREJP
VF9TRVJWRVJfSE9TVCkpCi0gICAgICAgICAgICBjbHMudXBkYXRlX2J1aWxkZXJfbmFtZV90b19p
ZF9tYXBwaW5nKCkKLQotICAgICAgICBpZiBub3QgYnVpbGRlcmlkOgotICAgICAgICAgICAgX2xv
Zy5lcnJvcignSW52YWxpZCBidWlsZGVyOiB7fS4gTnVtYmVyIG9mIGJ1aWxkZXJzOiB7fScuZm9y
bWF0KGJ1aWxkZXJfZnVsbF9uYW1lLCBsZW4oY2xzLmJ1aWxkZXJfbmFtZV90b19pZF9tYXBwaW5n
KSkpCi0gICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgdXJsID0gJ2h0dHBzOi8ve30vYXBp
L3YyL2J1aWxkZXJzL3t9L2J1aWxkcmVxdWVzdHM/Y29tcGxldGU9ZmFsc2UmcHJvcGVydHk9Kicu
Zm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgYnVpbGRlcmlkKQotICAgICAgICBi
dWlsZGVyc19kYXRhID0gdXRpbC5mZXRjaF9kYXRhX2Zyb21fdXJsKHVybCkKLSAgICAgICAgaWYg
bm90IGJ1aWxkZXJzX2RhdGE6Ci0gICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgcmV0dXJu
IGJ1aWxkZXJzX2RhdGEuanNvbigpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X3Bh
dGNoZXNfaW5fcXVldWUoY2xzLCBidWlsZGVyX2Z1bGxfbmFtZSk6Ci0gICAgICAgIHBhdGNoX2lk
cyA9IFtdCi0gICAgICAgIGJ1aWxkcyA9IGNscy5mZXRjaF9wZW5kaW5nX2FuZF9pbnByb2dyZXNz
X2J1aWxkcyhidWlsZGVyX2Z1bGxfbmFtZSkKLSAgICAgICAgZm9yIGJ1aWxkcmVxdWVzdCBpbiBi
dWlsZHMuZ2V0KCdidWlsZHJlcXVlc3RzJywgW10pOgotICAgICAgICAgICAgcHJvcGVydGllcyA9
IGJ1aWxkcmVxdWVzdC5nZXQoJ3Byb3BlcnRpZXMnKQotICAgICAgICAgICAgaWYgcHJvcGVydGll
czoKLSAgICAgICAgICAgICAgICBwYXRjaF9pZHMuYXBwZW5kKHByb3BlcnRpZXMuZ2V0KCdwYXRj
aF9pZCcpWzBdKQotICAgICAgICBfbG9nLmRlYnVnKCdQYXRjaGVzIGluIHF1ZXVlIGZvciB7fTog
e30nLmZvcm1hdChidWlsZGVyX2Z1bGxfbmFtZSwgcGF0Y2hfaWRzKSkKLSAgICAgICAgcmV0dXJu
IHBhdGNoX2lkcwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHJldHJ5X2J1aWxkKGNscywg
YnVpbGRlcl9pZCwgYnVpbGRfbnVtYmVyKToKLSAgICAgICAgaWYgbm90ICh1dGlsLmlzX3ZhbGlk
X2lkKGJ1aWxkZXJfaWQpIGFuZCB1dGlsLmlzX3ZhbGlkX2lkKGJ1aWxkX251bWJlcikpOgotICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgYnVpbGRfdXJsID0gJ2h0dHBzOi8ve30v
YXBpL3YyL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJW
RVJfSE9TVCwgYnVpbGRlcl9pZCwgYnVpbGRfbnVtYmVyKQotICAgICAgICB1c2VybmFtZSA9IG9z
LmdldGVudignRVdTX0FETUlOX1VTRVJOQU1FJykKLSAgICAgICAgcGFzc3dvcmQgPSBvcy5nZXRl
bnYoJ0VXU19BRE1JTl9QQVNTV09SRCcpCi0gICAgICAgIHNlc3Npb24gPSByZXF1ZXN0cy5TZXNz
aW9uKCkKLSAgICAgICAgcmVzcG9uc2UgPSBzZXNzaW9uLmhlYWQoJ2h0dHBzOi8ve30vYXV0aC9s
b2dpbicuZm9ybWF0KGNvbmZpZy5CVUlMREJPVF9TRVJWRVJfSE9TVCksIGF1dGg9KHVzZXJuYW1l
LCBwYXNzd29yZCkpCi0gICAgICAgIGlmIChub3QgcmVzcG9uc2UpIG9yIHJlc3BvbnNlLnN0YXR1
c19jb2RlIG5vdCBpbiAoMjAwLCAzMDIpOgotICAgICAgICAgICAgX2xvZy5lcnJvcignQXV0aGVu
dGljYXRpb24gdG8ge30gZmFpbGVkLiBQbGVhc2UgY2hlY2sgdXNlcm5hbWUvcGFzc3dvcmQuJy5m
b3JtYXQoY29uZmlnLkJVSUxEQk9UX1NFUlZFUl9IT1NUKSkKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotCi0gICAgICAgIGpzb25fZGF0YSA9IHsnbWV0aG9kJzogJ3JlYnVpbGQnLCAnaWQnOiAx
LCAnanNvbnJwYyc6ICcyLjAnLCAncGFyYW1zJzogeydyZWFzb24nOiAncmV0cmllZC1ieS11c2Vy
J319Ci0gICAgICAgIHJlc3BvbnNlID0gc2Vzc2lvbi5wb3N0KGJ1aWxkX3VybCwganNvbj1qc29u
X2RhdGEpCi0KLSAgICAgICAgaWYgcmVzcG9uc2UgYW5kIHJlc3BvbnNlLnN0YXR1c19jb2RlID09
IDIwMDoKLSAgICAgICAgICAgIF9sb2cuaW5mbygnU3VjY2Vzc2Z1bHkgc3VibWl0dGVkIHJldHJ5
IHJlcXVlc3QgZm9yIGJ1aWxkOiB7fScuZm9ybWF0KGJ1aWxkX3VybCkpCi0gICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotCi0gICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byByZXRyeSBidWlsZDog
e30sIGh0dHAgcmVzcG9uc2UgY29kZToge30nLmZvcm1hdChidWlsZF91cmwsIHJlc3BvbnNlLnN0
YXR1c19jb2RlKSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vdXRpbC5weQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb21tb24vdXRpbC5weQkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29tbW9uL3V0aWwu
cHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1NiArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0y
MDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCByZXF1ZXN0cwot
Ci1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIGZldGNoX2RhdGFf
ZnJvbV91cmwodXJsKToKLSAgICBfbG9nLmluZm8oJ0ZldGNoaW5nOiB7fScuZm9ybWF0KHVybCkp
Ci0gICAgcmVzcG9uc2UgPSBOb25lCi0gICAgdHJ5OgotICAgICAgICByZXNwb25zZSA9IHJlcXVl
c3RzLmdldCh1cmwsIHRpbWVvdXQ9MTApCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICBpZiByZXNwb25zZToKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBhY2Nl
c3Mge3VybH0gd2l0aCBzdGF0dXMgY29kZSB7c3RhdHVzX2NvZGV9LicuZm9ybWF0KHVybD11cmws
IHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH0gd2l0aCBleGNlcHRpb246
IHtleGNlcHRpb259Jy5mb3JtYXQodXJsPXVybCwgZXhjZXB0aW9uPWUpKQotICAgICAgICByZXR1
cm4gTm9uZQotICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgX2xv
Zy5lcnJvcignQWNjZXNzZWQge3VybH0gd2l0aCB1bmV4cGVjdGVkIHN0YXR1cyBjb2RlIHtzdGF0
dXNfY29kZX0uJy5mb3JtYXQodXJsPXVybCwgc3RhdHVzX2NvZGU9cmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUpKQotICAgICAgICByZXR1cm4gTm9uZQotICAgIHJldHVybiByZXNwb25zZQotCi0KLWRlZiBp
c192YWxpZF9pZChpZCwgZXhwZWN0ZWRfZGF0YV90eXBlPWludCk6Ci0gICAgaWYgbm90IGlkOgot
ICAgICAgICBfbG9nLndhcm4oJ0ludmFsaWQgaWQ6IHt9Jy5mb3JtYXQoaWQpKQotICAgICAgICBy
ZXR1cm4gRmFsc2UKLSAgICBpZiB0eXBlKGlkKSAhPSBleHBlY3RlZF9kYXRhX3R5cGU6Ci0gICAg
ICAgIF9sb2cud2FybignSW52YWxpZCB0eXBlIHt9IGZvciBpZDoge30sIGV4cGVjdGVkOiB7fScu
Zm9ybWF0KHR5cGUoaWQpLCBpZCwgZXhwZWN0ZWRfZGF0YV90eXBlKSkKLSAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgaWYgZXhwZWN0ZWRfZGF0YV90eXBlID09IGludCBhbmQgaWQgPCAwOgotICAg
ICAgICBfbG9nLndhcm4oJ0ludmFsaWQgaWQ6IHt9LCBpZCBzaG91bGQgYmUgcG9zaXRpdmUgaW50
ZWdlci4nLmZvcm1hdChpZCkpCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHJldHVybiBUcnVl
CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9jb25maWcucHkKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvY29uZmlnLnB5
CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3
cy9jb25maWcucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NyArMCwwIEBACi0jIENvcHlyaWdodCAo
QykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IG9zCi0KLWlzX3Rlc3RfbW9k
ZV9lbmFibGVkID0gb3MuZ2V0ZW52KCdFV1NfUFJPRFVDVElPTicpIGlzIE5vbmUKLQotQlVHX1NF
UlZFUl9IT1NUID0gJ2J1Z3Mud2Via2l0Lm9yZycKLUJVR19TRVJWRVJfVVJMID0gJ2h0dHBzOi8v
e30vJy5mb3JtYXQoQlVHX1NFUlZFUl9IT1NUKQotUEFUQ0hfRk9MREVSID0gJy90bXAvJwotCi1p
ZiBpc190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICBCVUlMREJPVF9TRVJWRVJfSE9TVCA9ICdsb2Nh
bGhvc3QnCi1lbHNlOgotICAgIEJVSUxEQk9UX1NFUlZFUl9IT1NUID0gJ2V3cy1idWlsZC53ZWJr
aXQub3JnJwotQlVJTERCT1RfU0VSVkVSX1BPUlQgPSAnNTU1NScKLUNPTU1JVF9RVUVVRV9QT1JU
ID0gJzU1NTcnCi1CVUlMREJPVF9UUllfVVNFUk5BTUUgPSBvcy5nZXRlbnYoJ0JVSUxEQk9UX1RS
WV9VU0VSTkFNRScsICdzYW1wbGV1c2VyJykKLUJVSUxEQk9UX1RSWV9QQVNTV09SRCA9IG9zLmdl
dGVudignQlVJTERCT1RfVFJZX1BBU1NXT1JEJywgJ3NhbXBsZXBhc3MnKQotCi1TVUNDRVNTID0g
MAotRVJSX1VORVhQRUNURUQgPSAtMQotRVJSX0VYSVNUSU5HX1BBVENIID0gLTIKLUVSUl9OT05f
RVhJU1RJTkdfUEFUQ0ggPSAtMwotRVJSX0lOVkFMSURfUEFUQ0hfSUQgPSAtNAotRVJSX09CU09M
RVRFX1BBVENIID0gLTUKLUVSUl9VTkFCTEVfVE9fRkVUQ0hfUEFUQ0ggPSAtNgotRVJSX0JVR19D
TE9TRUQgPSAtNwpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvZmV0
Y2hlci5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3
cy9mZXRjaGVyLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYXBwL2V3cy9mZXRjaGVyLnB5CShub25leGlzdGVudCkKQEAgLTEsMTQzICswLDAgQEAK
LSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgZGF0
ZXRpbWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcHl0egotaW1wb3J0IHRocmVhZGluZwotaW1w
b3J0IHRpbWUKLQotZnJvbSBld3MuY29tbW9uLmJ1Z3ppbGxhIGltcG9ydCBCdWd6aWxsYQotZnJv
bSBld3MuY29tbW9uLmJ1aWxkYm90IGltcG9ydCBCdWlsZGJvdAotZnJvbSBld3MuY29uZmlnIGlt
cG9ydCBFUlJfQlVHX0NMT1NFRCwgRVJSX09CU09MRVRFX1BBVENILCBFUlJfVU5BQkxFX1RPX0ZF
VENIX1BBVENICi1mcm9tIGV3cy5tb2RlbHMucGF0Y2ggaW1wb3J0IFBhdGNoCi1mcm9tIGV3cy52
aWV3cy5zdGF0dXNidWJibGUgaW1wb3J0IFN0YXR1c0J1YmJsZQotCi1fbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgRmV0Y2hMb29wKCk6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIGludGVydmFsPTMwKToKLSAgICAgICAgc2VsZi5pbnRlcnZhbCA9IGludGVydmFs
Ci0gICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYucnVuLCBhcmdz
PSgpKQotICAgICAgICB0aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAgICB0aHJlYWQuc3RhcnQo
KQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgQnVpbGRib3QudXBkYXRlX2J1aWxkZXJf
bmFtZV90b19pZF9tYXBwaW5nKCkKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIEJ1
aWxkYm90LnVwZGF0ZV9pY29uc19mb3JfcXVldWVzX21hcHBpbmcoKQotICAgICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgICAgIEJ1Z3ppbGxhUGF0Y2hGZXRjaGVyKCkuZmV0Y2goKQotICAgICAg
ICAgICAgICAgIEJ1Z3ppbGxhUGF0Y2hGZXRjaGVyKCkuZmV0Y2hfY29tbWl0X3F1ZXVlX3BhdGNo
ZXMoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAg
IF9sb2cuZXJyb3IoJ0V4Y2VwdGlvbiBpbiBCdWd6aWxsYVBhdGNoRmV0Y2hlcjoge30nLmZvcm1h
dChlKSkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5pbnRlcnZhbCkKLQotCi1jbGFzcyBC
dWd6aWxsYVBhdGNoRmV0Y2hlcigpOgotICAgIGRlZiBmZXRjaChzZWxmLCBwYXRjaF9pZHM9Tm9u
ZSk6Ci0gICAgICAgIGlmIHBhdGNoX2lkcyBhbmQgdHlwZShwYXRjaF9pZHMpICE9IGxpc3Q6Ci0g
ICAgICAgICAgICBfbG9nLmVycm9yKCdFcnJvcjogcGF0Y2hfaWRzIHNob3VsZCBiZSBhIGxpc3Qs
IGZvdW5kOiB7fScuZm9ybWF0KHR5cGUocGF0Y2hfaWRzKSkpCi0gICAgICAgICAgICByZXR1cm4g
LTEKLQotICAgICAgICBpZiBub3QgcGF0Y2hfaWRzOgotICAgICAgICAgICAgcGF0Y2hfaWRzID0g
QnVnemlsbGEuZ2V0X2xpc3Rfb2ZfcGF0Y2hlc19uZWVkaW5nX3Jldmlld3MoKQotICAgICAgICBw
YXRjaF9pZHMgPSBCdWd6aWxsYVBhdGNoRmV0Y2hlci5maWx0ZXJfdmFsaWRfcGF0Y2hlcyhwYXRj
aF9pZHMpCi0gICAgICAgIF9sb2cuZGVidWcoJ3I/IHBhdGNoZXM6IHt9Jy5mb3JtYXQocGF0Y2hf
aWRzKSkKLSAgICAgICAgUGF0Y2guc2F2ZV9wYXRjaGVzKHBhdGNoX2lkcykKLSAgICAgICAgcGF0
Y2hlc190b19zZW5kID0gc2VsZi5wYXRjaGVzX3RvX3NlbmRfdG9fYnVpbGRib3QocGF0Y2hfaWRz
KQotICAgICAgICBfbG9nLmluZm8oJ3t9IHI/IHBhdGNoZXMsIHt9IHBhdGNoZXMgbmVlZCB0byBi
ZSBzZW50IHRvIEJ1aWxkYm90OiB7fScuZm9ybWF0KGxlbihwYXRjaF9pZHMpLCBsZW4ocGF0Y2hl
c190b19zZW5kKSwgcGF0Y2hlc190b19zZW5kKSkKLSAgICAgICAgcmV0dXJuIHNlbGYuc2VuZF9w
YXRjaGVzX3RvX2J1aWxkYm90KHBhdGNoZXNfdG9fc2VuZCkKLQotICAgIGRlZiBmZXRjaF9jb21t
aXRfcXVldWVfcGF0Y2hlcyhzZWxmKToKLSAgICAgICAgcGF0Y2hfaWRzX2NvbW1pdF9xdWV1ZSA9
IEJ1Z3ppbGxhLmdldF9saXN0X29mX3BhdGNoZXNfZm9yX2NvbW1pdF9xdWV1ZSgpCi0gICAgICAg
IHBhdGNoX2lkc19jb21taXRfcXVldWUgPSBCdWd6aWxsYVBhdGNoRmV0Y2hlci5maWx0ZXJfdmFs
aWRfcGF0Y2hlcyhwYXRjaF9pZHNfY29tbWl0X3F1ZXVlKQotICAgICAgICBfbG9nLmRlYnVnKCdj
cSsgcGF0Y2hlczoge30nLmZvcm1hdChwYXRjaF9pZHNfY29tbWl0X3F1ZXVlKSkKLSAgICAgICAg
UGF0Y2guc2F2ZV9wYXRjaGVzKHBhdGNoX2lkc19jb21taXRfcXVldWUpCi0gICAgICAgIHBhdGNo
ZXNfdG9fc2VuZCA9IHNlbGYucGF0Y2hlc190b19zZW5kX3RvX2NvbW1pdF9xdWV1ZShwYXRjaF9p
ZHNfY29tbWl0X3F1ZXVlKQotICAgICAgICBfbG9nLmluZm8oJ3t9IGNxKyBwYXRjaGVzLCB7fSBw
YXRjaGVzIG5lZWQgdG8gYmUgc2VudCB0byBjb21taXQgcXVldWU6IHt9Jy5mb3JtYXQobGVuKHBh
dGNoX2lkc19jb21taXRfcXVldWUpLCBsZW4ocGF0Y2hlc190b19zZW5kKSwgcGF0Y2hlc190b19z
ZW5kKSkKLSAgICAgICAgc2VsZi5zZW5kX3BhdGNoZXNfdG9fYnVpbGRib3QocGF0Y2hlc190b19z
ZW5kLCBzZW5kX3RvX2NvbW1pdF9xdWV1ZT1UcnVlKQotCi0gICAgZGVmIHNlbmRfcGF0Y2hlc190
b19idWlsZGJvdChzZWxmLCBwYXRjaGVzX3RvX3NlbmQsIHNlbmRfdG9fY29tbWl0X3F1ZXVlPUZh
bHNlKToKLSAgICAgICAgaWYgbm90IHBhdGNoZXNfdG9fc2VuZDoKLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBmb3IgcGF0Y2hfaWQgaW4gcGF0Y2hlc190b19zZW5kOgotICAgICAgICAgICAg
YnpfcGF0Y2ggPSBCdWd6aWxsYS5yZXRyaWV2ZV9hdHRhY2htZW50KHBhdGNoX2lkKQotICAgICAg
ICAgICAgaWYgbm90IGJ6X3BhdGNoIG9yIGJ6X3BhdGNoWydpZCddICE9IHBhdGNoX2lkOgotICAg
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1VuYWJsZSB0byByZXRyaXZlIHBhdGNoICJ7fSInLmZv
cm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKHBhdGNoZXNfdG9fc2VuZCkg
PT0gMToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUl9VTkFCTEVfVE9fRkVUQ0hfUEFU
Q0gKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgYnpfcGF0Y2guZ2V0
KCdpc19vYnNvbGV0ZScpOgotICAgICAgICAgICAgICAgIF9sb2cud2FybignUGF0Y2gge30gaXMg
b2Jzb2xldGUsIHNraXBwaW5nJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgICAgIFBh
dGNoLnNldF9vYnNvbGV0ZShwYXRjaF9pZCkKLSAgICAgICAgICAgICAgICBpZiBsZW4ocGF0Y2hl
c190b19zZW5kKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX09CU09MRVRF
X1BBVENICi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIEJ1Z3ppbGxh
LmlzX2J1Z19jbG9zZWQoYnpfcGF0Y2hbJ2J1Z19pZCddKSA9PSAxOgotICAgICAgICAgICAgICAg
IF9sb2cud2FybignQnVnIHt9IGZvciBwYXRjaCB7fSBpcyBhbHJlYWR5IGNsb3NlZCwgc2tpcHBp
bmcnLmZvcm1hdChiel9wYXRjaFsnYnVnX2lkJ10sIHBhdGNoX2lkKSkKLSAgICAgICAgICAgICAg
ICBpZiBsZW4ocGF0Y2hlc190b19zZW5kKSA9PSAxOgotICAgICAgICAgICAgICAgICAgICByZXR1
cm4gRVJSX0JVR19DTE9TRUQKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
aWYgbm90IHNlbmRfdG9fY29tbWl0X3F1ZXVlIGFuZCBQYXRjaC5pc19wYXRjaF9zZW50X3RvX2J1
aWxkYm90KHBhdGNoX2lkKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCdQYXRjaCB7fSBp
cyBhbHJlYWR5IHNlbnQgdG8gYnVpbGRib3QuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBQYXRjaC5zZXRfc2VudF90b19idWlsZGJvdChw
YXRjaF9pZCwgVHJ1ZSwgY29tbWl0X3F1ZXVlPXNlbmRfdG9fY29tbWl0X3F1ZXVlKQotICAgICAg
ICAgICAgcmMgPSBCdWlsZGJvdC5zZW5kX3BhdGNoX3RvX2J1aWxkYm90KGJ6X3BhdGNoWydwYXRo
J10sCi0gICAgICAgICAgICAgICAgICAgICBzZW5kX3RvX2NvbW1pdF9xdWV1ZT1zZW5kX3RvX2Nv
bW1pdF9xdWV1ZSwKLSAgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXM9WydwYXRjaF9pZD17
fScuZm9ybWF0KHBhdGNoX2lkKSwgJ2J1Z19pZD17fScuZm9ybWF0KGJ6X3BhdGNoWydidWdfaWQn
XSksICdvd25lcj17fScuZm9ybWF0KGJ6X3BhdGNoLmdldCgnY3JlYXRvcicsICcnKSldKQotICAg
ICAgICAgICAgaWYgcmMgPT0gMDoKLSAgICAgICAgICAgICAgICBQYXRjaC5zZXRfYnVnX2lkKHBh
dGNoX2lkLCBiel9wYXRjaFsnYnVnX2lkJ10pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJ0ZhaWxlZCB0byBzZW5kIHBhdGNoIHRvIGJ1aWxkYm90LicpCi0g
ICAgICAgICAgICAgICAgUGF0Y2guc2V0X3NlbnRfdG9fYnVpbGRib3QocGF0Y2hfaWQsIEZhbHNl
LCBjb21taXRfcXVldWU9c2VuZF90b19jb21taXRfcXVldWUpCi0gICAgICAgICAgICAgICAgI0ZJ
WE1FOiBzZW5kIGFuIGVtYWlsIGZvciB0aGlzIGZhaWx1cmUKLQotICAgIGRlZiBwYXRjaGVzX3Rv
X3NlbmRfdG9fYnVpbGRib3Qoc2VsZiwgcGF0Y2hfaWRzKToKLSAgICAgICAgcmV0dXJuIFtwYXRj
aF9pZCBmb3IgcGF0Y2hfaWQgaW4gcGF0Y2hfaWRzIGlmIG5vdCBQYXRjaC5pc19wYXRjaF9zZW50
X3RvX2J1aWxkYm90KHBhdGNoX2lkKV0KLQotICAgIGRlZiBwYXRjaGVzX3RvX3NlbmRfdG9fY29t
bWl0X3F1ZXVlKHNlbGYsIHBhdGNoX2lkcyk6Ci0gICAgICAgIGlmIG5vdCBwYXRjaF9pZHM6Ci0g
ICAgICAgICAgICByZXR1cm4gcGF0Y2hfaWRzCi0gICAgICAgIHBhdGNoZXNfaW5fcXVldWUgPSBz
ZXQoQnVpbGRib3QuZ2V0X3BhdGNoZXNfaW5fcXVldWUoJ0NvbW1pdC1RdWV1ZScpKQotICAgICAg
ICBwYXRjaF9pZHMgPSBbcGF0Y2hfaWQgZm9yIHBhdGNoX2lkIGluIHNldChwYXRjaF9pZHMpIGlm
IHN0cihwYXRjaF9pZCkgbm90IGluIHBhdGNoZXNfaW5fcXVldWVdCi0KLSAgICAgICAgcGF0Y2hf
aWRzX3RvX3NlbmQgPSBbXQotICAgICAgICBmb3IgcGF0Y2hfaWQgaW4gcGF0Y2hfaWRzOgotICAg
ICAgICAgICAgcGF0Y2ggPSBQYXRjaC5nZXRfcGF0Y2gocGF0Y2hfaWQpCi0gICAgICAgICAgICBy
ZWNlbnRfYnVpbGQsIF8gPSBTdGF0dXNCdWJibGUoKS5nZXRfbGF0ZXN0X2J1aWxkX2Zvcl9xdWV1
ZShwYXRjaCwgJ2NvbW1pdCcpCi0gICAgICAgICAgICBpZiBub3QgcmVjZW50X2J1aWxkOgotICAg
ICAgICAgICAgICAgIHBhdGNoX2lkc190b19zZW5kLmFwcGVuZChwYXRjaF9pZCkKLSAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgcmVjZW50X2J1aWxkX3RpbWVzdGFtcCA9IGRh
dGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAocmVjZW50X2J1aWxkLmNvbXBsZXRlX2F0LCB0
ej1weXR6LlVUQykKLSAgICAgICAgICAgIGNxX3RpbWVzdGFtcCA9IEJ1Z3ppbGxhLmdldF9jcV9w
bHVzX3RpbWVzdGFtcChwYXRjaF9pZCkKLSAgICAgICAgICAgIGlmIG5vdCBjcV90aW1lc3RhbXA6
Ci0gICAgICAgICAgICAgICAgcGF0Y2hfaWRzX3RvX3NlbmQuYXBwZW5kKHBhdGNoX2lkKQotICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBpZiBjcV90aW1lc3RhbXAgPiByZWNl
bnRfYnVpbGRfdGltZXN0YW1wOgotICAgICAgICAgICAgICAgIHBhdGNoX2lkc190b19zZW5kLmFw
cGVuZChwYXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIHBhdGNoX2lkc190b19zZW5kCi0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgZmlsdGVyX3ZhbGlkX3BhdGNoZXMoY2xzLCBwYXRjaF9pZHMp
OgotICAgICAgICByZXR1cm4gbGlzdChmaWx0ZXIobGFtYmRhIHA6IFBhdGNoLmlzX3ZhbGlkX3Bh
dGNoX2lkKHApLCBwYXRjaF9pZHMpKQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdz
LWFwcC9ld3MvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkJ
KHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdz
L21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CShub25leGlzdGVudCkKQEAgLTEsNzIgKzAsMCBA
QAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgR2VuZXJhdGVkIGJ5IERqYW5nbyAxLjExLjIw
IG9uIDIwMTktMDMtMjYgMjA6MzAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRl
cmFscwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCi1pbXBvcnQg
ZGphbmdvLmRiLm1vZGVscy5kZWxldGlvbgotCi0KLWNsYXNzIE1pZ3JhdGlvbihtaWdyYXRpb25z
Lk1pZ3JhdGlvbik6Ci0KLSAgICBpbml0aWFsID0gVHJ1ZQotCi0gICAgZGVwZW5kZW5jaWVzID0g
WwotICAgIF0KLQotICAgIG9wZXJhdGlvbnMgPSBbCi0gICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRl
TW9kZWwoCi0gICAgICAgICAgICBuYW1lPSdCdWlsZCcsCi0gICAgICAgICAgICBmaWVsZHM9Wwot
ICAgICAgICAgICAgICAgICgndWlkJywgbW9kZWxzLlRleHRGaWVsZChwcmltYXJ5X2tleT1UcnVl
LCBzZXJpYWxpemU9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkZXJfaWQnLCBtb2Rl
bHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgnYnVpbGRlcl9uYW1lJywgbW9k
ZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkZXJfZGlzcGxheV9uYW1l
JywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ251bWJlcicsIG1vZGVs
cy5JbnRlZ2VyRmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdyZXN1bHQnLCBtb2RlbHMuSW50
ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnc3Rh
dGVfc3RyaW5nJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3N0YXJ0
ZWRfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAg
ICAgICAgICAgICAgICgnY29tcGxldGVfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRy
dWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY3JlYXRlZCcsIG1vZGVscy5EYXRl
VGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdtb2RpZmll
ZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpKSwKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCi0gICAgICAgICAg
ICBuYW1lPSdCdWlsZGJvdEluc3RhbmNlJywKLSAgICAgICAgICAgIGZpZWxkcz1bCi0gICAgICAg
ICAgICAgICAgKCdpbnN0YW5jZV9pZCcsIG1vZGVscy5BdXRvRmllbGQocHJpbWFyeV9rZXk9VHJ1
ZSwgc2VyaWFsaXplPUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdob3N0bmFtZScsIG1vZGVs
cy5UZXh0RmllbGQoKSksCi0gICAgICAgICAgICAgICAgKCdhY3RpdmUnLCBtb2RlbHMuQm9vbGVh
bkZpZWxkKGRlZmF1bHQ9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY3JlYXRlZCcsIG1vZGVs
cy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdt
b2RpZmllZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpKSwKLSAgICAgICAg
ICAgIF0sCi0gICAgICAgICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCi0gICAg
ICAgICAgICBuYW1lPSdQYXRjaCcsCi0gICAgICAgICAgICBmaWVsZHM9WwotICAgICAgICAgICAg
ICAgICgncGF0Y2hfaWQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKHByaW1hcnlfa2V5PVRydWUsIHNl
cmlhbGl6ZT1GYWxzZSkpLAotICAgICAgICAgICAgICAgICgnYnVnX2lkJywgbW9kZWxzLkludGVn
ZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ29ic29sZXRlJywgbW9kZWxzLkJvb2xlYW5G
aWVsZChkZWZhdWx0PUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdzZW50X3RvX2J1aWxkYm90
JywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSksCi0gICAgICAgICAgICAgICAg
KCdjcmVhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpKSwKLSAg
ICAgICAgICAgICAgICAoJ21vZGlmaWVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9
VHJ1ZSkpLAotICAgICAgICAgICAgXSwKLSAgICAgICAgKSwKLSAgICAgICAgbWlncmF0aW9ucy5D
cmVhdGVNb2RlbCgKLSAgICAgICAgICAgIG5hbWU9J1N0ZXAnLAotICAgICAgICAgICAgZmllbGRz
PVsKLSAgICAgICAgICAgICAgICAoJ3VpZCcsIG1vZGVscy5UZXh0RmllbGQocHJpbWFyeV9rZXk9
VHJ1ZSwgc2VyaWFsaXplPUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdyZXN1bHQnLCBtb2Rl
bHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAg
ICgnc3RhdGVfc3RyaW5nJywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAo
J3N0YXJ0ZWRfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkp
LAotICAgICAgICAgICAgICAgICgnY29tcGxldGVfYXQnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGJs
YW5rPVRydWUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnY3JlYXRlZCcsIG1vZGVs
cy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdt
b2RpZmllZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpKSwKLSAgICAgICAg
ICAgICAgICAoJ2J1aWxkX3VpZCcsIG1vZGVscy5Gb3JlaWduS2V5KGRiX2NvbHVtbj0nYnVpbGRf
dWlkJywgZGJfY29uc3RyYWludD1GYWxzZSwgb25fZGVsZXRlPWRqYW5nby5kYi5tb2RlbHMuZGVs
ZXRpb24uQ0FTQ0FERSwgdG89J2V3cy5CdWlsZCcpKSwKLSAgICAgICAgICAgIF0sCi0gICAgICAg
ICksCi0gICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCi0gICAgICAgICAgICBtb2RlbF9uYW1l
PSdidWlsZCcsCi0gICAgICAgICAgICBuYW1lPSdwYXRjaCcsCi0gICAgICAgICAgICBmaWVsZD1t
b2RlbHMuRm9yZWlnbktleShkYl9jb25zdHJhaW50PUZhbHNlLCBvbl9kZWxldGU9ZGphbmdvLmRi
Lm1vZGVscy5kZWxldGlvbi5DQVNDQURFLCB0bz0nZXdzLlBhdGNoJyksCi0gICAgICAgICksCi0g
ICAgXQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9u
cy8wMDAyX2J1aWxkX3JldHJpZWQucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8wMDAyX2J1aWxkX3JldHJpZWQucHkJKHJldmlz
aW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21pZ3Jh
dGlvbnMvMDAwMl9idWlsZF9yZXRyaWVkLnB5CShub25leGlzdGVudCkKQEAgLTEsMjAgKzAsMCBA
QAotIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgR2VuZXJhdGVkIGJ5IERqYW5nbyAxLjExLjE2
IG9uIDIwMTktMTAtMTggMTg6NDYKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRl
cmFscwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbWlncmF0aW9ucywgbW9kZWxzCi0KLQotY2xh
c3MgTWlncmF0aW9uKG1pZ3JhdGlvbnMuTWlncmF0aW9uKToKLQotICAgIGRlcGVuZGVuY2llcyA9
IFsKLSAgICAgICAgKCdld3MnLCAnMDAwMV9pbml0aWFsJyksCi0gICAgXQotCi0gICAgb3BlcmF0
aW9ucyA9IFsKLSAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKLSAgICAgICAgICAgIG1vZGVs
X25hbWU9J2J1aWxkJywKLSAgICAgICAgICAgIG5hbWU9J3JldHJpZWQnLAotICAgICAgICAgICAg
ZmllbGQ9bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSwKLSAgICAgICAgKSwKLSAg
ICBdCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9taWdyYXRpb25z
LzAwMDNfcGF0Y2hfc2VudF90b19jb21taXRfcXVldWUucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbWlncmF0aW9ucy8wMDAzX3BhdGNoX3NlbnRf
dG9fY29tbWl0X3F1ZXVlLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYXBwL2V3cy9taWdyYXRpb25zLzAwMDNfcGF0Y2hfc2VudF90b19jb21taXRf
cXVldWUucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMCArMCwwIEBACi0jIC0qLSBjb2Rpbmc6IHV0
Zi04IC0qLQotIyBHZW5lcmF0ZWQgYnkgRGphbmdvIDEuMTEuMTYgb24gMjAyMC0wMS0yOCAwMjo1
NgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdv
LmRiIGltcG9ydCBtaWdyYXRpb25zLCBtb2RlbHMKLQotCi1jbGFzcyBNaWdyYXRpb24obWlncmF0
aW9ucy5NaWdyYXRpb24pOgotCi0gICAgZGVwZW5kZW5jaWVzID0gWwotICAgICAgICAoJ2V3cycs
ICcwMDAyX2J1aWxkX3JldHJpZWQnKSwKLSAgICBdCi0KLSAgICBvcGVyYXRpb25zID0gWwotICAg
ICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAotICAgICAgICAgICAgbW9kZWxfbmFtZT0ncGF0Y2gn
LAotICAgICAgICAgICAgbmFtZT0nc2VudF90b19jb21taXRfcXVldWUnLAotICAgICAgICAgICAg
ZmllbGQ9bW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSwKLSAgICAgICAgKSwKLSAg
ICBdCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9taWdyYXRpb25z
L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzL21vZGVscy9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvX19pbml0X18ucHkJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL21vZGVscy9fX2luaXRf
Xy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDMgKzAsMCBAQAotZnJvbSBidWlsZCBpbXBvcnQgKgot
ZnJvbSBwYXRjaCBpbXBvcnQgKgotZnJvbSBzdGVwIGltcG9ydCAqCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGQucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkLnB5CShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2Rl
bHMvYnVpbGQucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxMTYgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
dW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5nby5kYiBpbXBv
cnQgbW9kZWxzCi1mcm9tIGV3cy5jb25maWcgaW1wb3J0IEVSUl9VTkVYUEVDVEVELCBTVUNDRVNT
Ci1mcm9tIGV3cy5tb2RlbHMuYnVpbGRib3RpbnN0YW5jZSBpbXBvcnQgQnVpbGRib3RJbnN0YW5j
ZQotZnJvbSBld3MubW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAotaW1wb3J0IGV3cy5jb21tb24u
dXRpbCBhcyB1dGlsCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1j
bGFzcyBCdWlsZChtb2RlbHMuTW9kZWwpOgotICAgIHBhdGNoID0gbW9kZWxzLkZvcmVpZ25LZXko
UGF0Y2gsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgZGJfY29uc3RyYWludD1GYWxzZSkKLSAg
ICB1aWQgPSBtb2RlbHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUpCi0gICAgYnVpbGRlcl9p
ZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQotICAgIGJ1aWxkZXJfbmFtZSA9IG1vZGVscy5UZXh0
RmllbGQoKQotICAgIGJ1aWxkZXJfZGlzcGxheV9uYW1lID0gbW9kZWxzLlRleHRGaWVsZCgpCi0g
ICAgbnVtYmVyID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCi0gICAgcmVzdWx0ID0gbW9kZWxzLklu
dGVnZXJGaWVsZChudWxsPVRydWUsIGJsYW5rPVRydWUpCi0gICAgc3RhdGVfc3RyaW5nID0gbW9k
ZWxzLlRleHRGaWVsZCgpCi0gICAgc3RhcnRlZF9hdCA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVs
bD1UcnVlLCBibGFuaz1UcnVlKQotICAgIGNvbXBsZXRlX2F0ID0gbW9kZWxzLkludGVnZXJGaWVs
ZChudWxsPVRydWUsIGJsYW5rPVRydWUpCi0gICAgcmV0cmllZCA9IG1vZGVscy5Cb29sZWFuRmll
bGQoZGVmYXVsdD1GYWxzZSkKLSAgICBjcmVhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0
b19ub3dfYWRkPVRydWUpCi0gICAgbW9kaWZpZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRv
X25vdz1UcnVlKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzdHIo
c2VsZi51aWQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2F2ZV9idWlsZChjbHMsIHBh
dGNoX2lkLCBob3N0bmFtZSwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwgYnVp
bGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRf
YXQsIGNvbXBsZXRlX2F0PU5vbmUpOgotICAgICAgICBpZiBub3QgQnVpbGQuaXNfdmFsaWRfcmVz
dWx0KHBhdGNoX2lkLCBidWlsZF9pZCwgYnVpbGRlcl9pZCwgbnVtYmVyLCByZXN1bHQsIHN0YXRl
X3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpOgotICAgICAgICAgICAgcmV0dXJuIEVS
Ul9VTkVYUEVDVEVECi0KLSAgICAgICAgaWYgc3RhdGVfc3RyaW5nIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBzdGF0ZV9zdHJpbmcgPSAnJwotCi0gICAgICAgIHVpZCA9IEJ1aWxkYm90SW5zdGFuY2Uu
Z2V0X3VpZChob3N0bmFtZSwgYnVpbGRfaWQpCi0gICAgICAgIGJ1aWxkID0gQnVpbGQuZ2V0X2V4
aXN0aW5nX2J1aWxkKHVpZCkKLSAgICAgICAgaWYgYnVpbGQ6Ci0gICAgICAgICAgICAjIElmIHRo
ZSBidWlsZCBkYXRhIGlzIGFscmVhZHkgcHJlc2VudCBpbiBkYXRhYmFzZSwgdXBkYXRlIGl0LCBl
LmcuOiBidWlsZCBjb21wbGV0ZSBldmVudC4KLSAgICAgICAgICAgIHJldHVybiBCdWlsZC51cGRh
dGVfYnVpbGQoYnVpbGQsIHBhdGNoX2lkLCB1aWQsIGJ1aWxkZXJfaWQsIGJ1aWxkZXJfbmFtZSwg
YnVpbGRlcl9kaXNwbGF5X25hbWUsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0
ZWRfYXQsIGNvbXBsZXRlX2F0KQotCi0gICAgICAgICMgU2F2ZSB0aGUgbmV3IGJ1aWxkIGRhdGEs
IGUuZy46IGJ1aWxkIHN0YXJ0IGV2ZW50LgotICAgICAgICBCdWlsZChwYXRjaF9pZCwgdWlkLCBi
dWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1iZXIsIHJl
c3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCkuc2F2ZSgpCi0gICAg
ICAgIF9sb2cuaW5mbygnU2F2ZWQgYnVpbGQge30gaW4gZGF0YWJhc2UgZm9yIHBhdGNoX2lkOiB7
fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIHVwZGF0ZV9idWlsZChjbHMsIGJ1aWxkLCBwYXRjaF9pZCwg
dWlkLCBidWlsZGVyX2lkLCBidWlsZGVyX25hbWUsIGJ1aWxkZXJfZGlzcGxheV9uYW1lLCBudW1i
ZXIsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9hdCk6Ci0gICAg
ICAgIGlmIGJ1aWxkLnBhdGNoX2lkICE9IHBhdGNoX2lkOgotICAgICAgICAgICAgX2xvZy5lcnJv
cigncGF0Y2hfaWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBwYXRjaF9pZCB7fS4gSWdub3Jpbmcg
bmV3IGRhdGEuJy5mb3JtYXQoYnVpbGQucGF0Y2hfaWQsIHBhdGNoX2lkKSkKLSAgICAgICAgICAg
IHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBpZiBidWlsZC51aWQgIT0gdWlkOgotICAg
ICAgICAgICAgX2xvZy5lcnJvcigndWlkIHt9IGRvZXMgbm90IG1hdGNoIHdpdGggdWlkIHt9LiBJ
Z25vcmluZyBuZXcgZGF0YS4nLmZvcm1hdChidWlsZC51aWQsIHVpZCkpCi0gICAgICAgICAgICBy
ZXR1cm4gRVJSX1VORVhQRUNURUQKLSAgICAgICAgaWYgYnVpbGQuYnVpbGRlcl9pZCAhPSBidWls
ZGVyX2lkOgotICAgICAgICAgICAgX2xvZy5lcnJvcignYnVpbGRlcl9pZCB7fSBkb2VzIG5vdCBt
YXRjaCB3aXRoIGJ1aWxkZXJfaWQge30uIElnbm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxk
LmJ1aWxkZXJfaWQsIGJ1aWxkZXJfaWQpKQotICAgICAgICAgICAgcmV0dXJuIEVSUl9VTkVYUEVD
VEVECi0gICAgICAgIGlmIGJ1aWxkLm51bWJlciAhPSBudW1iZXI6Ci0gICAgICAgICAgICBfbG9n
LmVycm9yKCdidWlsZCBudW1iZXIge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBudW1iZXIge30uIEln
bm9yaW5nIG5ldyBkYXRhLicuZm9ybWF0KGJ1aWxkLm51bWJlciwgbnVtYmVyKSkKLSAgICAgICAg
ICAgIHJldHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBidWlsZC5yZXN1bHQgPSByZXN1bHQK
LSAgICAgICAgYnVpbGQuc3RhdGVfc3RyaW5nID0gc3RhdGVfc3RyaW5nCi0gICAgICAgIGJ1aWxk
LnN0YXJ0ZWRfYXQgPSBzdGFydGVkX2F0Ci0gICAgICAgIGJ1aWxkLmNvbXBsZXRlX2F0ID0gY29t
cGxldGVfYXQKLSAgICAgICAgYnVpbGQuc2F2ZSh1cGRhdGVfZmllbGRzPVsncmVzdWx0JywgJ3N0
YXRlX3N0cmluZycsICdzdGFydGVkX2F0JywgJ2NvbXBsZXRlX2F0JywgJ21vZGlmaWVkJ10pCi0g
ICAgICAgIF9sb2cuZGVidWcoJ1VwZGF0ZWQgYnVpbGQge30gaW4gZGF0YWJhc2UgZm9yIHBhdGNo
X2lkOiB7fScuZm9ybWF0KHVpZCwgcGF0Y2hfaWQpKQotICAgICAgICByZXR1cm4gU1VDQ0VTUwot
Ci0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNldF9yZXRyaWVkKGNscywgdWlkLCByZXRyaWVk
PVRydWUpOgotICAgICAgICBidWlsZCA9IEJ1aWxkLmdldF9leGlzdGluZ19idWlsZCh1aWQpCi0g
ICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBidWlsZC5y
ZXRyaWVkID0gcmV0cmllZAotICAgICAgICBidWlsZC5zYXZlKHVwZGF0ZV9maWVsZHM9WydyZXRy
aWVkJywgJ21vZGlmaWVkJ10pCi0gICAgICAgIF9sb2cuaW5mbygnVXBkYXRlZCBidWlsZCB7fSBp
biBkYXRhYmFzZSB3aXRoIHJldHJpZWQ9e30nLmZvcm1hdCh1aWQsIHJldHJpZWQpKQotCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19idWlsZChjbHMsIHVpZCk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBCdWlsZC5vYmplY3RzLmdldCh1aWQ9dWlkKQot
ICAgICAgICBleGNlcHQgQnVpbGQuRG9lc05vdEV4aXN0OgotICAgICAgICAgICAgcmV0dXJuIE5v
bmUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc192YWxpZF9yZXN1bHQoY2xzLCBwYXRj
aF9pZCwgYnVpbGRfaWQsIGJ1aWxkZXJfaWQsIG51bWJlciwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcs
IHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0PU5vbmUpOgotICAgICAgICBpZiBub3QgKHV0aWwuaXNf
dmFsaWRfaWQocGF0Y2hfaWQpIGFuZCB1dGlsLmlzX3ZhbGlkX2lkKGJ1aWxkX2lkKSBhbmQgdXRp
bC5pc192YWxpZF9pZChidWlsZGVyX2lkKSBhbmQgdXRpbC5pc192YWxpZF9pZChudW1iZXIpKToK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCkluZGV4OiBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvYnVpbGRib3RpbnN0YW5j
ZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9t
b2RlbHMvYnVpbGRib3RpbnN0YW5jZS5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL2J1aWxkYm90aW5zdGFuY2UucHkJKG5v
bmV4aXN0ZW50KQpAQCAtMSw1NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMg
YXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1p
bXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgbW9kZWxzCi0KLV9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1jbGFzcyBCdWlsZGJvdEluc3RhbmNlKG1v
ZGVscy5Nb2RlbCk6Ci0gICAgaW5zdGFuY2VfaWQgPSBtb2RlbHMuQXV0b0ZpZWxkKHByaW1hcnlf
a2V5PVRydWUpCi0gICAgaG9zdG5hbWUgPSBtb2RlbHMuVGV4dEZpZWxkKCkKLSAgICBhY3RpdmUg
PSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9VHJ1ZSkKLSAgICBjcmVhdGVkID0gbW9kZWxz
LkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkPVRydWUpCi0gICAgbW9kaWZpZWQgPSBtb2RlbHMu
RGF0ZVRpbWVGaWVsZChhdXRvX25vdz1UcnVlKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0g
ICAgICAgIHJldHVybiAne31fe30nLmZvcm1hdChzZWxmLmluc3RhbmNlX2lkLCBzZWxmLmhvc3Ru
YW1lKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGdldF9pbnN0YW5jZV9pZChjbHMsIGhv
c3RuYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIEJ1aWxkYm90SW5zdGFu
Y2Uub2JqZWN0cy5nZXQoaG9zdG5hbWU9aG9zdG5hbWUsIGFjdGl2ZT1UcnVlKS5pbnN0YW5jZV9p
ZAotICAgICAgICBleGNlcHQgQnVpbGRib3RJbnN0YW5jZS5Eb2VzTm90RXhpc3Q6Ci0gICAgICAg
ICAgICBpbnN0YW5jZSA9IEJ1aWxkYm90SW5zdGFuY2UoaG9zdG5hbWU9aG9zdG5hbWUpCi0gICAg
ICAgICAgICBpbnN0YW5jZS5zYXZlKCkKLSAgICAgICAgICAgIF9sb2cuaW5mbygnQ3JlYXRlZCBu
ZXcgYnVpbGRib3QgaW5zdGFuY2UgaWQge30gZm9yIGhvc3RuYW1lOiB7fScuZm9ybWF0KGluc3Rh
bmNlLmluc3RhbmNlX2lkLCBob3N0bmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gaW5zdGFuY2Uu
aW5zdGFuY2VfaWQKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBnZXRfdWlkKGNscywgaG9z
dG5hbWUsIGJ1aWxkX29yX3N0ZXBfaWQpOgotICAgICAgICBpbnN0YW5jZV9pZCA9IEJ1aWxkYm90
SW5zdGFuY2UuZ2V0X2luc3RhbmNlX2lkKGhvc3RuYW1lKQotICAgICAgICByZXR1cm4gJ3t9X3t9
Jy5mb3JtYXQoaW5zdGFuY2VfaWQsIGJ1aWxkX29yX3N0ZXBfaWQpCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvcGF0Y2gucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvbW9kZWxzL3BhdGNoLnB5CShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2Rl
bHMvcGF0Y2gucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNjYgKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0jIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0jIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
dW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5nby5kYiBpbXBv
cnQgbW9kZWxzCi0KLWZyb20gZXdzLmNvbmZpZyBpbXBvcnQgRVJSX0VYSVNUSU5HX1BBVENILCBF
UlJfSU5WQUxJRF9QQVRDSF9JRCwgRVJSX05PTl9FWElTVElOR19QQVRDSCwgU1VDQ0VTUwotCi1f
bG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgUGF0Y2gobW9kZWxz
Lk1vZGVsKToKLSAgICBwYXRjaF9pZCA9IG1vZGVscy5JbnRlZ2VyRmllbGQocHJpbWFyeV9rZXk9
VHJ1ZSkKLSAgICBidWdfaWQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKLSAgICBvYnNvbGV0ZSA9
IG1vZGVscy5Cb29sZWFuRmllbGQoZGVmYXVsdD1GYWxzZSkKLSAgICBzZW50X3RvX2J1aWxkYm90
ID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQotICAgIHNlbnRfdG9fY29tbWl0
X3F1ZXVlID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQotICAgIGNyZWF0ZWQg
PSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQ9VHJ1ZSkKLSAgICBtb2RpZmllZCA9
IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93PVRydWUpCi0KLSAgICBkZWYgX19zdHJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHN0cihzZWxmLnBhdGNoX2lkKQotCi0gICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIHNhdmVfcGF0Y2goY2xzLCBwYXRjaF9pZCwgYnVnX2lkPS0xLCBvYnNvbGV0
ZT1GYWxzZSwgc2VudF90b19idWlsZGJvdD1GYWxzZSwgc2VudF90b19jb21taXRfcXVldWU9RmFs
c2UpOgotICAgICAgICBpZiBub3QgUGF0Y2guaXNfdmFsaWRfcGF0Y2hfaWQocGF0Y2hfaWQpOgot
ICAgICAgICAgICAgX2xvZy53YXJuKCdQYXRjaCBpZCB7fSBpbiBpbnZhbGlkLiBTa2lwcGVkIHNh
dmluZy4nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gRVJSX0lOVkFMSURf
UEFUQ0hfSUQKLQotICAgICAgICBpZiBQYXRjaC5pc19leGlzdGluZ19wYXRjaF9pZChwYXRjaF9p
ZCk6Ci0gICAgICAgICAgICBfbG9nLmRlYnVnKCdQYXRjaCBpZCB7fSBhbHJlYWR5IGV4aXN0cyBp
biBkYXRhYmFzZS4gU2tpcHBlZCBzYXZpbmcuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAg
ICAgcmV0dXJuIEVSUl9FWElTVElOR19QQVRDSAotICAgICAgICBQYXRjaChwYXRjaF9pZCwgYnVn
X2lkLCBvYnNvbGV0ZSwgc2VudF90b19idWlsZGJvdCwgc2VudF90b19jb21taXRfcXVldWUpLnNh
dmUoKQotICAgICAgICBfbG9nLmluZm8oJ1NhdmVkIHBhdGNoIGluIGRhdGFiYXNlLCBpZDoge30n
LmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgc2F2ZV9wYXRjaGVzKGNscywgcGF0Y2hfaWRfbGlzdCk6Ci0gICAgICAg
IGZvciBwYXRjaF9pZCBpbiBwYXRjaF9pZF9saXN0OgotICAgICAgICAgICAgUGF0Y2guc2F2ZV9w
YXRjaChwYXRjaF9pZCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc192YWxpZF9wYXRj
aF9pZChjbHMsIHBhdGNoX2lkKToKLSAgICAgICAgaWYgbm90IHBhdGNoX2lkIG9yIHBhdGNoX2lk
IDwgMToKLSAgICAgICAgICAgIF9sb2cud2FybignSW52YWxpZCBwYXRjaCBpZDoge30nLmZvcm1h
dChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgdHlwZShw
YXRjaF9pZCkgIT0gaW50OgotICAgICAgICAgICAgX2xvZy53YXJuKCdEYXRhIHR5cGUgbWlzbWF0
Y2ggZm9yIHBhdGNoX2lkLCBleHBlY3RlZDogaW50LCBmb3VuZDoge30sIGlkOiB7fScuZm9ybWF0
KHR5cGUocGF0Y2hfaWQpLCBwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAg
ICAgICAgcmV0dXJuIFRydWUKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc19leGlzdGlu
Z19wYXRjaF9pZChjbHMsIHBhdGNoX2lkKToKLSAgICAgICAgcmV0dXJuIGJvb2woUGF0Y2gub2Jq
ZWN0cy5maWx0ZXIocGF0Y2hfaWQ9cGF0Y2hfaWQpKQotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAg
ZGVmIGlzX3BhdGNoX3NlbnRfdG9fYnVpbGRib3QoY2xzLCBwYXRjaF9pZCwgY29tbWl0X3F1ZXVl
PUZhbHNlKToKLSAgICAgICAgaWYgY29tbWl0X3F1ZXVlOgotICAgICAgICAgICAgcmV0dXJuIFBh
dGNoLl9pc19wYXRjaF9zZW50X3RvX2NvbW1pdF9xdWV1ZShwYXRjaF9pZCkKLSAgICAgICAgcmV0
dXJuIFBhdGNoLl9pc19wYXRjaF9zZW50X3RvX2J1aWxkYm90KHBhdGNoX2lkKQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIF9pc19wYXRjaF9zZW50X3RvX2J1aWxkYm90KGNscywgcGF0Y2hf
aWQpOgotICAgICAgICByZXR1cm4gUGF0Y2guaXNfZXhpc3RpbmdfcGF0Y2hfaWQocGF0Y2hfaWQp
IGFuZCBQYXRjaC5vYmplY3RzLmdldChwaz1wYXRjaF9pZCkuc2VudF90b19idWlsZGJvdAotCi0g
ICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9pc19wYXRjaF9zZW50X3RvX2NvbW1pdF9xdWV1ZShj
bHMsIHBhdGNoX2lkKToKLSAgICAgICAgcmV0dXJuIFBhdGNoLmlzX2V4aXN0aW5nX3BhdGNoX2lk
KHBhdGNoX2lkKSBhbmQgUGF0Y2gub2JqZWN0cy5nZXQocGs9cGF0Y2hfaWQpLnNlbnRfdG9fY29t
bWl0X3F1ZXVlCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZ2V0X3BhdGNoKGNscywgcGF0
Y2hfaWQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gUGF0Y2gub2JqZWN0cy5n
ZXQocGF0Y2hfaWQ9cGF0Y2hfaWQpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0X3NlbnRfdG9fYnVpbGRib3Qo
Y2xzLCBwYXRjaF9pZCwgdmFsdWUsIGNvbW1pdF9xdWV1ZT1GYWxzZSk6Ci0gICAgICAgIGlmIGNv
bW1pdF9xdWV1ZToKLSAgICAgICAgICAgIHJldHVybiBQYXRjaC5fc2V0X3NlbnRfdG9fY29tbWl0
X3F1ZXVlKHBhdGNoX2lkLCBzZW50X3RvX2NvbW1pdF9xdWV1ZT12YWx1ZSkKLSAgICAgICAgcmV0
dXJuIFBhdGNoLl9zZXRfc2VudF90b19idWlsZGJvdChwYXRjaF9pZCwgc2VudF90b19idWlsZGJv
dD12YWx1ZSkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBfc2V0X3NlbnRfdG9fYnVpbGRi
b3QoY2xzLCBwYXRjaF9pZCwgc2VudF90b19idWlsZGJvdD1UcnVlKToKLSAgICAgICAgaWYgbm90
IFBhdGNoLmlzX2V4aXN0aW5nX3BhdGNoX2lkKHBhdGNoX2lkKToKLSAgICAgICAgICAgIFBhdGNo
LnNhdmVfcGF0Y2gocGF0Y2hfaWQ9cGF0Y2hfaWQsIHNlbnRfdG9fYnVpbGRib3Q9c2VudF90b19i
dWlsZGJvdCkKLSAgICAgICAgICAgIF9sb2cuaW5mbygnUGF0Y2gge30gc2F2ZWQgdG8gZGF0YWJh
c2Ugd2l0aCBzZW50X3RvX2J1aWxkYm90PXt9Jy5mb3JtYXQocGF0Y2hfaWQsIHNlbnRfdG9fYnVp
bGRib3QpKQotICAgICAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQotICAgICAgICBwYXRjaCA9IFBh
dGNoLm9iamVjdHMuZ2V0KHBrPXBhdGNoX2lkKQotICAgICAgICBpZiBwYXRjaC5zZW50X3RvX2J1
aWxkYm90ID09IHNlbnRfdG9fYnVpbGRib3Q6Ci0gICAgICAgICAgICBfbG9nLndhcm4oJ1BhdGNo
IHt9IGFscmVhZHkgaGFzIHNlbnRfdG9fYnVpbGRib3Q9e30nLmZvcm1hdChwYXRjaF9pZCwgc2Vu
dF90b19idWlsZGJvdCkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgICAgIHBh
dGNoLnNlbnRfdG9fYnVpbGRib3QgPSBzZW50X3RvX2J1aWxkYm90Ci0gICAgICAgIHBhdGNoLnNh
dmUoKQotICAgICAgICBfbG9nLmluZm8oJ1VwZGF0ZWQgcGF0Y2gge30gd2l0aCBzZW50X3RvX2J1
aWxkYm90PXt9Jy5mb3JtYXQocGF0Y2hfaWQsIHNlbnRfdG9fYnVpbGRib3QpKQotICAgICAgICBy
ZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIF9zZXRfc2VudF90b19j
b21taXRfcXVldWUoY2xzLCBwYXRjaF9pZCwgc2VudF90b19jb21taXRfcXVldWU9VHJ1ZSk6Ci0g
ICAgICAgIGlmIG5vdCBQYXRjaC5pc19leGlzdGluZ19wYXRjaF9pZChwYXRjaF9pZCk6Ci0gICAg
ICAgICAgICBQYXRjaC5zYXZlX3BhdGNoKHBhdGNoX2lkPXBhdGNoX2lkLCBzZW50X3RvX2NvbW1p
dF9xdWV1ZT1zZW50X3RvX2NvbW1pdF9xdWV1ZSkKLSAgICAgICAgICAgIF9sb2cuaW5mbygnUGF0
Y2gge30gc2F2ZWQgdG8gZGF0YWJhc2Ugd2l0aCBzZW50X3RvX2NvbW1pdF9xdWV1ZT17fScuZm9y
bWF0KHBhdGNoX2lkLCBzZW50X3RvX2NvbW1pdF9xdWV1ZSkpCi0gICAgICAgICAgICByZXR1cm4g
U1VDQ0VTUwotCi0gICAgICAgIHBhdGNoID0gUGF0Y2gub2JqZWN0cy5nZXQocGs9cGF0Y2hfaWQp
Ci0gICAgICAgIGlmIHBhdGNoLnNlbnRfdG9fY29tbWl0X3F1ZXVlID09IHNlbnRfdG9fY29tbWl0
X3F1ZXVlOgotICAgICAgICAgICAgX2xvZy53YXJuKCdQYXRjaCB7fSBhbHJlYWR5IGhhcyBzZW50
X3RvX2NvbW1pdF9xdWV1ZT17fScuZm9ybWF0KHBhdGNoX2lkLCBzZW50X3RvX2NvbW1pdF9xdWV1
ZSkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgICAgIHBhdGNoLnNlbnRfdG9f
Y29tbWl0X3F1ZXVlID0gc2VudF90b19jb21taXRfcXVldWUKLSAgICAgICAgcGF0Y2guc2F2ZSgp
Ci0gICAgICAgIF9sb2cuaW5mbygnVXBkYXRlZCBwYXRjaCB7fSB3aXRoIHNlbnRfdG9fY29tbWl0
X3F1ZXVlPXt9Jy5mb3JtYXQocGF0Y2hfaWQsIHNlbnRfdG9fY29tbWl0X3F1ZXVlKSkKLSAgICAg
ICAgcmV0dXJuIFNVQ0NFU1MKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRfYnVnX2lk
KGNscywgcGF0Y2hfaWQsIGJ1Z19pZCk6Ci0gICAgICAgIGlmIG5vdCBQYXRjaC5pc19leGlzdGlu
Z19wYXRjaF9pZChwYXRjaF9pZCk6Ci0gICAgICAgICAgICByZXR1cm4gRVJSX05PTl9FWElTVElO
R19QQVRDSAotCi0gICAgICAgIHBhdGNoID0gUGF0Y2gub2JqZWN0cy5nZXQocGs9cGF0Y2hfaWQp
Ci0gICAgICAgIGlmIHBhdGNoLmJ1Z19pZCA9PSBidWdfaWQ6Ci0gICAgICAgICAgICBfbG9nLndh
cm4oJ1BhdGNoIHt9IGFscmVhZHkgaGFzIGJ1ZyBpZCB7fSBzZXQuJy5mb3JtYXQocGF0Y2hfaWQs
IGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgICAgIHBhdGNoLmJ1
Z19pZCA9IGJ1Z19pZAotICAgICAgICBwYXRjaC5zYXZlKCkKLSAgICAgICAgX2xvZy5kZWJ1Zygn
VXBkYXRlZCBwYXRjaCB7fSB3aXRoIGJ1ZyBpZCB7fScuZm9ybWF0KHBhdGNoX2lkLCBidWdfaWQp
KQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHNl
dF9vYnNvbGV0ZShjbHMsIHBhdGNoX2lkLCBvYnNvbGV0ZT1UcnVlKToKLSAgICAgICAgaWYgbm90
IFBhdGNoLmlzX2V4aXN0aW5nX3BhdGNoX2lkKHBhdGNoX2lkKToKLSAgICAgICAgICAgIHJldHVy
biBFUlJfTk9OX0VYSVNUSU5HX1BBVENICi0KLSAgICAgICAgcGF0Y2ggPSBQYXRjaC5vYmplY3Rz
LmdldChwaz1wYXRjaF9pZCkKLSAgICAgICAgaWYgcGF0Y2gub2Jzb2xldGUgPT0gb2Jzb2xldGU6
Ci0gICAgICAgICAgICBfbG9nLndhcm4oJ1BhdGNoIHt9IGlzIGFscmVhZHkgbWFya2VkIHdpdGgg
b2Jzb2xldGU9e30uJy5mb3JtYXQocGF0Y2hfaWQsIG9ic29sZXRlKSkKLSAgICAgICAgICAgIHJl
dHVybiBTVUNDRVNTCi0gICAgICAgIHBhdGNoLm9ic29sZXRlID0gb2Jzb2xldGUKLSAgICAgICAg
cGF0Y2guc2F2ZSgpCi0gICAgICAgIF9sb2cuZGVidWcoJ01hcmtlZCBwYXRjaCB7fSBhcyBvYnNv
bGV0ZT17fScuZm9ybWF0KHBhdGNoX2lkLCBvYnNvbGV0ZSkpCi0gICAgICAgIHJldHVybiBTVUND
RVNTCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9tb2RlbHMvc3Rl
cC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy9t
b2RlbHMvc3RlcC5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWFwcC9ld3MvbW9kZWxzL3N0ZXAucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw5NSArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWltcG9ydCBsb2dnaW5nCi0KLWZy
b20gZGphbmdvLmRiIGltcG9ydCBtb2RlbHMKLWZyb20gZXdzLmNvbmZpZyBpbXBvcnQgRVJSX1VO
RVhQRUNURUQsIFNVQ0NFU1MKLWZyb20gZXdzLm1vZGVscy5idWlsZCBpbXBvcnQgQnVpbGQKLWZy
b20gZXdzLm1vZGVscy5idWlsZGJvdGluc3RhbmNlIGltcG9ydCBCdWlsZGJvdEluc3RhbmNlCi1p
bXBvcnQgZXdzLmNvbW1vbi51dGlsIGFzIHV0aWwKLQotX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQotCi0KLWNsYXNzIFN0ZXAobW9kZWxzLk1vZGVsKToKLSAgICB1aWQgPSBtb2Rl
bHMuVGV4dEZpZWxkKHByaW1hcnlfa2V5PVRydWUpCi0gICAgYnVpbGRfdWlkID0gbW9kZWxzLkZv
cmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgZGJfY29sdW1uPSdidWls
ZF91aWQnLCBkYl9jb25zdHJhaW50PUZhbHNlKQotICAgIHJlc3VsdCA9IG1vZGVscy5JbnRlZ2Vy
RmllbGQobnVsbD1UcnVlLCBibGFuaz1UcnVlKQotICAgIHN0YXRlX3N0cmluZyA9IG1vZGVscy5U
ZXh0RmllbGQoKQotICAgIHN0YXJ0ZWRfYXQgPSBtb2RlbHMuSW50ZWdlckZpZWxkKG51bGw9VHJ1
ZSwgYmxhbms9VHJ1ZSkKLSAgICBjb21wbGV0ZV9hdCA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVs
bD1UcnVlLCBibGFuaz1UcnVlKQotICAgIGNyZWF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChh
dXRvX25vd19hZGQ9VHJ1ZSkKLSAgICBtb2RpZmllZCA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1
dG9fbm93PVRydWUpCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHN0
cihzZWxmLnVpZCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzYXZlX3N0ZXAoY2xzLCBo
b3N0bmFtZSwgc3RlcF9pZCwgYnVpbGRfaWQsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVk
X2F0LCBjb21wbGV0ZV9hdD1Ob25lKToKLSAgICAgICAgaWYgbm90IFN0ZXAuaXNfdmFsaWRfcmVz
dWx0KHN0ZXBfaWQsIGJ1aWxkX2lkLCByZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwg
Y29tcGxldGVfYXQpOgotICAgICAgICAgICAgcmV0dXJuIEVSUl9VTkVYUEVDVEVECi0KLSAgICAg
ICAgaWYgc3RhdGVfc3RyaW5nIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZV9zdHJpbmcgPSAn
JwotCi0gICAgICAgIHN0ZXBfdWlkID0gQnVpbGRib3RJbnN0YW5jZS5nZXRfdWlkKGhvc3RuYW1l
LCBzdGVwX2lkKQotICAgICAgICBidWlsZF91aWQgPSBCdWlsZGJvdEluc3RhbmNlLmdldF91aWQo
aG9zdG5hbWUsIGJ1aWxkX2lkKQotCi0gICAgICAgIHN0ZXAgPSBTdGVwLmdldF9leGlzdGluZ19z
dGVwKHN0ZXBfdWlkKQotICAgICAgICBpZiBzdGVwOgotICAgICAgICAgICAgIyBJZiB0aGUgc3Rl
cCBkYXRhIGlzIGFscmVhZHkgcHJlc2VudCBpbiBkYXRhYmFzZSwgdXBkYXRlIGl0LCBlLmcuOiBz
dGVwIGNvbXBsZXRlIGV2ZW50LgotICAgICAgICAgICAgcmV0dXJuIFN0ZXAudXBkYXRlX3N0ZXAo
c3RlcCwgc3RlcF91aWQsIGJ1aWxkX3VpZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRf
YXQsIGNvbXBsZXRlX2F0KQotCi0gICAgICAgICMgU2F2ZSB0aGUgbmV3IHN0ZXAgZGF0YSwgZS5n
Ljogc3RlcCBzdGFydCBldmVudC4KLSAgICAgICAgU3RlcChzdGVwX3VpZCwgYnVpbGRfdWlkLCBy
ZXN1bHQsIHN0YXRlX3N0cmluZywgc3RhcnRlZF9hdCwgY29tcGxldGVfYXQpLnNhdmUoKQotICAg
ICAgICBfbG9nLmRlYnVnKCdTYXZlZCBzdGVwIHt9IGluIGRhdGFiYXNlIGZvciBidWlsZDoge30n
LmZvcm1hdChzdGVwX3VpZCwgYnVpbGRfdWlkKSkKLSAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQot
ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiB1cGRhdGVfc3RlcChjbHMsIHN0ZXAsIHN0ZXBfdWlk
LCBidWlsZF91aWQsIHJlc3VsdCwgc3RhdGVfc3RyaW5nLCBzdGFydGVkX2F0LCBjb21wbGV0ZV9h
dCk6Ci0gICAgICAgIGlmIHN0ZXAudWlkICE9IHN0ZXBfdWlkOgotICAgICAgICAgICAgX2xvZy5l
cnJvcignc3RlcF91aWQge30gZG9lcyBub3QgbWF0Y2ggd2l0aCBzdGVwX3VpZCB7fS4gSWdub3Jp
bmcgbmV3IGRhdGEuJy5mb3JtYXQoc3RlcC51aWQsIHN0ZXBfdWlkKSkKLSAgICAgICAgICAgIHJl
dHVybiBFUlJfVU5FWFBFQ1RFRAotICAgICAgICBzdGVwLnJlc3VsdCA9IHJlc3VsdAotICAgICAg
ICBzdGVwLnN0YXRlX3N0cmluZyA9IHN0YXRlX3N0cmluZwotICAgICAgICBzdGVwLnN0YXJ0ZWRf
YXQgPSBzdGFydGVkX2F0Ci0gICAgICAgIHN0ZXAuY29tcGxldGVfYXQgPSBjb21wbGV0ZV9hdAot
ICAgICAgICBzdGVwLnNhdmUodXBkYXRlX2ZpZWxkcz1bJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcn
LCAnc3RhcnRlZF9hdCcsICdjb21wbGV0ZV9hdCcsICdtb2RpZmllZCddKQotICAgICAgICBfbG9n
LmRlYnVnKCdVcGRhdGVkIHN0ZXAge30gaW4gZGF0YWJhc2UgZm9yIGJ1aWxkOiB7fScuZm9ybWF0
KHN0ZXBfdWlkLCBidWlsZF91aWQpKQotICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIGdldF9leGlzdGluZ19zdGVwKGNscywgdWlkKToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0ZXAub2JqZWN0cy5nZXQodWlkPXVpZCkKLSAgICAg
ICAgZXhjZXB0IFN0ZXAuRG9lc05vdEV4aXN0OgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQot
ICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBpc192YWxpZF9yZXN1bHQoY2xzLCBzdGVwX2lkLCBi
dWlsZF9pZCwgcmVzdWx0LCBzdGF0ZV9zdHJpbmcsIHN0YXJ0ZWRfYXQsIGNvbXBsZXRlX2F0KToK
LSAgICAgICAgaWYgbm90ICh1dGlsLmlzX3ZhbGlkX2lkKHN0ZXBfaWQpIGFuZCB1dGlsLmlzX3Zh
bGlkX2lkKGJ1aWxkX2lkKSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICBy
ZXR1cm4gVHJ1ZQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGVt
cGxhdGVzL3JldHJ5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWFwcC9ld3MvdGVtcGxhdGVzL3JldHJ5Lmh0bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3RlbXBsYXRlcy9yZXRyeS5odG1sCShu
b25leGlzdGVudCkKQEAgLTEsMyArMCwwIEBACi08Zm9ybSBuYW1lPSJyZXRyeSIgbWV0aG9kPSJQ
T1NUIj57JSBjc3JmX3Rva2VuICV9Ci1BdHRhY2htZW50IGlkIG9mIHBhdGNoIHRvIHJldHJ5OiA8
aW5wdXQgbmFtZT0icGF0Y2hfaWQiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSZXRyeSBm
YWlsZWQgYnVpbGRzIj4KLTwvZm9ybT4KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzL3RlbXBsYXRlcy9zdGF0dXNidWJibGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy90ZW1wbGF0ZXMvc3RhdHVzYnViYmxlLmh0
bWwJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAv
ZXdzL3RlbXBsYXRlcy9zdGF0dXNidWJibGUuaHRtbAkobm9uZXhpc3RlbnQpCkBAIC0xLDEyNiAr
MCwwIEBACi08IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhlYWQ+Ci08c3R5bGU+Ci1ib2R5IHsK
LSAgICBmb250LWZhbWlseTogVmVyZGFuYSwgc2Fucy1zZXJpZjsKLSAgICBtYXJnaW46IDBweDsK
LSAgICBwYWRkaW5nOiAwcHg7Ci19Ci0jYnViYmxlQ29udGFpbmVyIHsKLSAgICBkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7Ci0gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLS5zdGF0dXMgewotICAg
IGRpc3BsYXk6IGJsb2NrOwotICAgIGZsb2F0OiBsZWZ0OwotICAgIG1hcmdpbjogMXB4OwotICAg
IHBhZGRpbmc6IDFweCAycHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgLXdl
YmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7Ci0gICAgYm9yZGVyLXJhZGl1czogNXB4OwotICAgIGJv
cmRlcjogMXB4IHNvbGlkIHJnYmEoMSwgMSwgMSwgMC4zKTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiB3aGl0ZTsKLSAgICBmb250LXNpemU6IDExcHg7Ci0gICAgY3Vyc29yOiBwb2ludGVyOwotICAg
IHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjb2xvcjogYmxhY2s7Ci19Ci0uc3RhdHVzOmhv
dmVyIHsKLSAgICBib3JkZXItY29sb3I6IHJnYmEoMSwgMSwgMSwgMC43KTsKLX0KLS5wYXNzIHsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOEZERjVGOwotfQotLmZhaWwgewotICAgIGJhY2tncm91
bmQtY29sb3I6ICNFOTgwODA7Ci19Ci0uc3RhcnRlZCB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjog
I0UxRjVGRjsKLX0KLS5wcm92aXNpb25hbC1mYWlsIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAj
RkZBRjA1OwotfQotLmVycm9yIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogI0UwQjBGRjsKLX0KLS5x
dWV1ZV9wb3NpdGlvbiB7Ci0gICAgZm9udC1zaXplOiA5cHg7Ci19Ci1mb3JtIHsKLSAgICBmbG9h
dDogbGVmdDsKLSAgICBkaXNwbGF5OiBibG9jazsKLX0KLTwvc3R5bGU+Ci08c2NyaXB0Pgotd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihlKSB7Ci0gIGlmIChlLmRh
dGEgPT09ICdjb250YWluZXJNZXRyaWNzJykgewotICAgIHZhciBwYXJlbnRDb250YWluZXIgPSBi
dWJibGVDb250YWluZXIucGFyZW50RWxlbWVudDsKLSAgICB2YXIgb3JpZ2luYWxXaWR0aCA9IHBh
cmVudENvbnRhaW5lci5zdHlsZS53aWR0aDsKLSAgICBwYXJlbnRDb250YWluZXIuc3R5bGUud2lk
dGggPSAiMTAwMHB4IjsKLSAgICB2YXIgY2xpZW50UmVjdCA9IGJ1YmJsZUNvbnRhaW5lci5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKLSAgICBwYXJlbnRDb250YWluZXIuc3R5bGUud2lkdGggPSBv
cmlnaW5hbFdpZHRoOwotICAgIGUuc291cmNlLnBvc3RNZXNzYWdlKHsnd2lkdGgnOiBNYXRoLmNl
aWwoY2xpZW50UmVjdC53aWR0aCksICdoZWlnaHQnOiBNYXRoLmNlaWwoY2xpZW50UmVjdC5oZWln
aHQpfSwgZS5vcmlnaW4pOwotICB9IGVsc2UKLSAgICBjb25zb2xlLmxvZygiVW5rbm93biBwb3N0
TWVzc2FnZTogIiArIGUuZGF0YSk7Ci19LCBmYWxzZSk7Ci08L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotPGRpdiBpZD0iYnViYmxlQ29udGFpbmVyIj4KLSAgeyUgaWYgc2hvd19mYWlsdXJlX3Rv
X2FwcGx5ICV9Ci0gIDxhIGNsYXNzPSJzdGF0dXMgZmFpbCIgdGFyZ2V0PSJfYmxhbmsiCi0gICAg
ICBocmVmPSIvcGF0Y2gve3sgcGF0Y2hfaWQgfX0iCi0gICAgICB0aXRsZT0iTm9uZSBvZiB0aGUg
cXVldWVzIGNvdWxkIGFwcGx5IHRoZSBwYXRjaCIKLSAgPgotICAgIHBhdGNoIGRvZXMgbm90IGFw
cGx5IHRvIHRydW5rIG9mIHJlcG9zaXRvcnkKLSAgPC9hPgotICB7JSBlbHNlICV9Ci0gIHslIGZv
ciBidWJibGUgaW4gYnViYmxlcyAlfQotICA8YSBjbGFzcz0ic3RhdHVzIHt7IGJ1YmJsZS5zdGF0
ZSB9fSIgdGFyZ2V0PSJfYmxhbmsiCi0gIHslIGlmIGJ1YmJsZS51cmwgJX0KLSAgICAgIGhyZWY9
Int7IGJ1YmJsZS51cmwgfX0iCi0gIHslIGVuZGlmICV9Ci0gIHslIGlmIGJ1YmJsZS5kZXRhaWxz
X21lc3NhZ2UgJX0KLSAgICAgIHRpdGxlPSJ7eyBidWJibGUuZGV0YWlsc19tZXNzYWdlIH19Igot
ICB7JSBlbmRpZiAlfQotICA+Ci0gICAge3sgYnViYmxlLm5hbWUgfX0KLSAgICB7JSBpZiBidWJi
bGUucXVldWVfcG9zaXRpb24gJX0KLSAgICA8c3BhbiBjbGFzcz0icXVldWVfcG9zaXRpb24iPiN7
eyBidWJibGUucXVldWVfcG9zaXRpb24gfX08L3NwYW4+Ci0gICAgeyUgZW5kaWYgJX0KLSAgPC9h
PgotICB7JSBlbmRmb3IgJX0KLSAgeyUgZW5kaWYgJX0KLQoteyUgaWYgc2hvd19zdWJtaXRfdG9f
ZXdzICV9Ci0gIDxmb3JtIG5hbWU9InN1Ym1pdF90b19ld3MiIG1ldGhvZD0iUE9TVCIgYWN0aW9u
PSIvc3VibWl0LXRvLWV3cy8iPnslIGNzcmZfdG9rZW4gJX0KLSAgICA8aW5wdXQgdHlwZT0iaGlk
ZGVuIiBuYW1lPSJwYXRjaF9pZCIgdmFsdWU9Int7IHBhdGNoX2lkIH19Ij4KLSAgICA8aW5wdXQg
dHlwZT0iaGlkZGVuIiBuYW1lPSJuZXh0X2FjdGlvbiIgdmFsdWU9InJldHVybl90b19idWJibGVz
Ij4KLSAgICA8aW5wdXQgY2xhc3M9InN0YXR1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0
IGZvciBFV1MgYW5hbHlzaXMiPgotICA8L2Zvcm0+Ci17JSBlbmRpZiAlfQotCi17JSBpZiBzaG93
X3JldHJ5X2J1dHRvbiAlfQotICA8Zm9ybSBuYW1lPSJyZXRyeSIgbWV0aG9kPSJQT1NUIiBhY3Rp
b249Ii9yZXRyeS8iPnslIGNzcmZfdG9rZW4gJX0KLSAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJwYXRjaF9pZCIgdmFsdWU9Int7IHBhdGNoX2lkIH19Ij4KLSAgICA8aW5wdXQgY2xhc3M9
InN0YXR1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iJiM4NjM1OyBSZXRyeSBmYWlsZWQgYnVpbGRz
Ij4KLSAgPC9mb3JtPgoteyUgZW5kaWYgJX0KLQotPHNjcmlwdD4KLS8vIENvbnZlcnQgZnJvbSBV
VEMgZGF0ZXMgdG8gbG9jYWwuCi12YXIgYnViYmxlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoInN0YXR1cyIpCi1mb3IgKHZhciBpID0gMDsgaSA8IGJ1YmJsZXMubGVuZ3RoOyAr
K2kpIHsKLSAgICB2YXIgYnViYmxlID0gYnViYmxlc1tpXTsKLSAgICBpZiAoYnViYmxlLmhhc0F0
dHJpYnV0ZSgidGl0bGUiKSkgewotICAgICAgICB2YXIgbmV3VGl0bGUgPSBidWJibGUuZ2V0QXR0
cmlidXRlKCJ0aXRsZSIpLnJlcGxhY2UoL1xbXFsoLispXF1cXS8sIGZ1bmN0aW9uKG1hdGNoLCBp
c29EYXRlU3RyaW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoaXNvRGF0ZVN0cmlu
ZykudG9TdHJpbmcoKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJ1YmJsZS5zZXRBdHRyaWJ1dGUo
InRpdGxlIiwgbmV3VGl0bGUpOwotICAgIH0KLX0KLTwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+
Ci08L2h0bWw+CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy90ZW1w
bGF0ZXMvc3VibWl0dG9ld3MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy90ZW1wbGF0ZXMvc3VibWl0dG9ld3MuaHRtbAkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGVtcGxhdGVzL3N1
Ym1pdHRvZXdzLmh0bWwJKG5vbmV4aXN0ZW50KQpAQCAtMSwzICswLDAgQEAKLTxmb3JtIG5hbWU9
InN1Ym1pdF90b19ld3MiIG1ldGhvZD0iUE9TVCI+eyUgY3NyZl90b2tlbiAlfQotQXR0YWNobWVu
dCBpZCBvZiBwYXRjaCB0byBzdWJtaXQ6IDxpbnB1dCBuYW1lPSJwYXRjaF9pZCI+PGlucHV0IHR5
cGU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1pdCBmb3IgRVdTIFByb2Nlc3NpbmciPgotPC9mb3JtPgpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGVzdHMucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGVzdHMucHkJKHJl
dmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3Rl
c3RzLnB5CShub25leGlzdGVudCkKQEAgLTEsMjcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0
ZXJhbHMKLQotZnJvbSBkamFuZ28udGVzdCBpbXBvcnQgVGVzdENhc2UKLQotIyBDcmVhdGUgeW91
ciB0ZXN0cyBoZXJlLgpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mv
dGhpcmRwYXJ0eS9CZWF1dGlmdWxTb3VwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2V3cy1hcHAvZXdzL3RoaXJkcGFydHkvQmVhdXRpZnVsU291cC5weQkocmV2aXNp
b24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdGhpcmRw
YXJ0eS9CZWF1dGlmdWxTb3VwLnB5CShub25leGlzdGVudCkKQEAgLTEsMjAxNCArMCwwIEBACi0i
IiJCZWF1dGlmdWwgU291cAotRWxpeGlyIGFuZCBUb25pYwotIlRoZSBTY3JlZW4tU2NyYXBlcidz
IEZyaWVuZCIKLWh0dHA6Ly93d3cuY3J1bW15LmNvbS9zb2Z0d2FyZS9CZWF1dGlmdWxTb3VwLwot
Ci1CZWF1dGlmdWwgU291cCBwYXJzZXMgYSAocG9zc2libHkgaW52YWxpZCkgWE1MIG9yIEhUTUwg
ZG9jdW1lbnQgaW50byBhCi10cmVlIHJlcHJlc2VudGF0aW9uLiBJdCBwcm92aWRlcyBtZXRob2Rz
IGFuZCBQeXRob25pYyBpZGlvbXMgdGhhdCBtYWtlCi1pdCBlYXN5IHRvIG5hdmlnYXRlLCBzZWFy
Y2gsIGFuZCBtb2RpZnkgdGhlIHRyZWUuCi0KLUEgd2VsbC1mb3JtZWQgWE1ML0hUTUwgZG9jdW1l
bnQgeWllbGRzIGEgd2VsbC1mb3JtZWQgZGF0YQotc3RydWN0dXJlLiBBbiBpbGwtZm9ybWVkIFhN
TC9IVE1MIGRvY3VtZW50IHlpZWxkcyBhIGNvcnJlc3BvbmRpbmdseQotaWxsLWZvcm1lZCBkYXRh
IHN0cnVjdHVyZS4gSWYgeW91ciBkb2N1bWVudCBpcyBvbmx5IGxvY2FsbHkKLXdlbGwtZm9ybWVk
LCB5b3UgY2FuIHVzZSB0aGlzIGxpYnJhcnkgdG8gZmluZCBhbmQgcHJvY2VzcyB0aGUKLXdlbGwt
Zm9ybWVkIHBhcnQgb2YgaXQuCi0KLUJlYXV0aWZ1bCBTb3VwIHdvcmtzIHdpdGggUHl0aG9uIDIu
MiBhbmQgdXAuIEl0IGhhcyBubyBleHRlcm5hbAotZGVwZW5kZW5jaWVzLCBidXQgeW91J2xsIGhh
dmUgbW9yZSBzdWNjZXNzIGF0IGNvbnZlcnRpbmcgZGF0YSB0byBVVEYtOAotaWYgeW91IGFsc28g
aW5zdGFsbCB0aGVzZSB0aHJlZSBwYWNrYWdlczoKLQotKiBjaGFyZGV0LCBmb3IgYXV0by1kZXRl
Y3RpbmcgY2hhcmFjdGVyIGVuY29kaW5ncwotICBodHRwOi8vY2hhcmRldC5mZWVkcGFyc2VyLm9y
Zy8KLSogY2prY29kZWNzIGFuZCBpY29udl9jb2RlYywgd2hpY2ggYWRkIG1vcmUgZW5jb2Rpbmdz
IHRvIHRoZSBvbmVzIHN1cHBvcnRlZAotICBieSBzdG9jayBQeXRob24uCi0gIGh0dHA6Ly9jamtw
eXRob24uaTE4bi5vcmcvCi0KLUJlYXV0aWZ1bCBTb3VwIGRlZmluZXMgY2xhc3NlcyBmb3IgdHdv
IG1haW4gcGFyc2luZyBzdHJhdGVnaWVzOgotCi0gKiBCZWF1dGlmdWxTdG9uZVNvdXAsIGZvciBw
YXJzaW5nIFhNTCwgU0dNTCwgb3IgeW91ciBkb21haW4tc3BlY2lmaWMKLSAgIGxhbmd1YWdlIHRo
YXQga2luZCBvZiBsb29rcyBsaWtlIFhNTC4KLQotICogQmVhdXRpZnVsU291cCwgZm9yIHBhcnNp
bmcgcnVuLW9mLXRoZS1taWxsIEhUTUwgY29kZSwgYmUgaXQgdmFsaWQKLSAgIG9yIGludmFsaWQu
IFRoaXMgY2xhc3MgaGFzIHdlYiBicm93c2VyLWxpa2UgaGV1cmlzdGljcyBmb3IKLSAgIG9idGFp
bmluZyBhIHNlbnNpYmxlIHBhcnNlIHRyZWUgaW4gdGhlIGZhY2Ugb2YgY29tbW9uIEhUTUwgZXJy
b3JzLgotCi1CZWF1dGlmdWwgU291cCBhbHNvIGRlZmluZXMgYSBjbGFzcyAoVW5pY29kZURhbW1p
dCkgZm9yIGF1dG9kZXRlY3RpbmcKLXRoZSBlbmNvZGluZyBvZiBhbiBIVE1MIG9yIFhNTCBkb2N1
bWVudCwgYW5kIGNvbnZlcnRpbmcgaXQgdG8KLVVuaWNvZGUuIE11Y2ggb2YgdGhpcyBjb2RlIGlz
IHRha2VuIGZyb20gTWFyayBQaWxncmltJ3MgVW5pdmVyc2FsIEZlZWQgUGFyc2VyLgotCi1Gb3Ig
bW9yZSB0aGFuIHlvdSBldmVyIHdhbnRlZCB0byBrbm93IGFib3V0IEJlYXV0aWZ1bCBTb3VwLCBz
ZWUgdGhlCi1kb2N1bWVudGF0aW9uOgotaHR0cDovL3d3dy5jcnVtbXkuY29tL3NvZnR3YXJlL0Jl
YXV0aWZ1bFNvdXAvZG9jdW1lbnRhdGlvbi5odG1sCi0KLUhlcmUsIGhhdmUgc29tZSBsZWdhbGVz
ZToKLQotQ29weXJpZ2h0IChjKSAyMDA0LTIwMTAsIExlb25hcmQgUmljaGFyZHNvbgotCi1BbGwg
cmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotCi0gICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCi0gICAgZGlzY2xhaW1lciBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkCi0gICAgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotCi0gICogTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgdGhlIEJlYXV0aWZ1
bCBTb3VwIENvbnNvcnRpdW0gYW5kIEFsbAotICAgIE5pZ2h0IEtvc2hlciBCYWtlcnkgbm9yIHRo
ZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZQotICAgIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCi0gICAgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SCi1DT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLUVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLVBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRgotTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKLU5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UsIERBTU1JVC4KLQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGdlbmVyYXRvcnMK
LQotX19hdXRob3JfXyA9ICJMZW9uYXJkIFJpY2hhcmRzb24gKGxlb25hcmRyQHNlZ2ZhdWx0Lm9y
ZykiCi1fX3ZlcnNpb25fXyA9ICIzLjIuMCIKLV9fY29weXJpZ2h0X18gPSAiQ29weXJpZ2h0IChj
KSAyMDA0LTIwMTAgTGVvbmFyZCBSaWNoYXJkc29uIgotX19saWNlbnNlX18gPSAiTmV3LXN0eWxl
IEJTRCIKLQotZnJvbSBzZ21sbGliIGltcG9ydCBTR01MUGFyc2VyLCBTR01MUGFyc2VFcnJvcgot
aW1wb3J0IGNvZGVjcwotaW1wb3J0IG1hcmt1cGJhc2UKLWltcG9ydCB0eXBlcwotaW1wb3J0IHJl
Ci1pbXBvcnQgc2dtbGxpYgotdHJ5OgotICBmcm9tIGh0bWxlbnRpdHlkZWZzIGltcG9ydCBuYW1l
MmNvZGVwb2ludAotZXhjZXB0IEltcG9ydEVycm9yOgotICBuYW1lMmNvZGVwb2ludCA9IHt9Ci10
cnk6Ci0gICAgc2V0Ci1leGNlcHQgTmFtZUVycm9yOgotICAgIGZyb20gc2V0cyBpbXBvcnQgU2V0
IGFzIHNldAotCi0jVGhlc2UgaGFja3MgbWFrZSBCZWF1dGlmdWwgU291cCBhYmxlIHRvIHBhcnNl
IFhNTCB3aXRoIG5hbWVzcGFjZXMKLXNnbWxsaWIudGFnZmluZCA9IHJlLmNvbXBpbGUoJ1thLXpB
LVpdWy1fLjphLXpBLVowLTldKicpCi1tYXJrdXBiYXNlLl9kZWNsbmFtZV9tYXRjaCA9IHJlLmNv
bXBpbGUocidbYS16QS1aXVstXy46YS16QS1aMC05XSpccyonKS5tYXRjaAotCi1ERUZBVUxUX09V
VFBVVF9FTkNPRElORyA9ICJ1dGYtOCIKLQotZGVmIF9tYXRjaF9jc3NfY2xhc3Moc3RyKToKLSAg
ICAiIiJCdWlsZCBhIFJFIHRvIG1hdGNoIHRoZSBnaXZlbiBDU1MgY2xhc3MuIiIiCi0gICAgcmV0
dXJuIHJlLmNvbXBpbGUociIoXnwuKlxzKSVzKCR8XHMpIiAlIHN0cikKLQotIyBGaXJzdCwgdGhl
IGNsYXNzZXMgdGhhdCByZXByZXNlbnQgbWFya3VwIGVsZW1lbnRzLgotCi1jbGFzcyBQYWdlRWxl
bWVudChvYmplY3QpOgotICAgICIiIkNvbnRhaW5zIHRoZSBuYXZpZ2F0aW9uYWwgaW5mb3JtYXRp
b24gZm9yIHNvbWUgcGFydCBvZiB0aGUgcGFnZQotICAgIChlaXRoZXIgYSB0YWcgb3IgYSBwaWVj
ZSBvZiB0ZXh0KSIiIgotCi0gICAgZGVmIHNldHVwKHNlbGYsIHBhcmVudD1Ob25lLCBwcmV2aW91
cz1Ob25lKToKLSAgICAgICAgIiIiU2V0cyB1cCB0aGUgaW5pdGlhbCByZWxhdGlvbnMgYmV0d2Vl
biB0aGlzIGVsZW1lbnQgYW5kCi0gICAgICAgIG90aGVyIGVsZW1lbnRzLiIiIgotICAgICAgICBz
ZWxmLnBhcmVudCA9IHBhcmVudAotICAgICAgICBzZWxmLnByZXZpb3VzID0gcHJldmlvdXMKLSAg
ICAgICAgc2VsZi5uZXh0ID0gTm9uZQotICAgICAgICBzZWxmLnByZXZpb3VzU2libGluZyA9IE5v
bmUKLSAgICAgICAgc2VsZi5uZXh0U2libGluZyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5wYXJl
bnQgYW5kIHNlbGYucGFyZW50LmNvbnRlbnRzOgotICAgICAgICAgICAgc2VsZi5wcmV2aW91c1Np
YmxpbmcgPSBzZWxmLnBhcmVudC5jb250ZW50c1stMV0KLSAgICAgICAgICAgIHNlbGYucHJldmlv
dXNTaWJsaW5nLm5leHRTaWJsaW5nID0gc2VsZgotCi0gICAgZGVmIHJlcGxhY2VXaXRoKHNlbGYs
IHJlcGxhY2VXaXRoKToKLSAgICAgICAgb2xkUGFyZW50ID0gc2VsZi5wYXJlbnQKLSAgICAgICAg
bXlJbmRleCA9IHNlbGYucGFyZW50LmluZGV4KHNlbGYpCi0gICAgICAgIGlmIGhhc2F0dHIocmVw
bGFjZVdpdGgsICJwYXJlbnQiKVwKLSAgICAgICAgICAgICAgICAgIGFuZCByZXBsYWNlV2l0aC5w
YXJlbnQgaXMgc2VsZi5wYXJlbnQ6Ci0gICAgICAgICAgICAjIFdlJ3JlIHJlcGxhY2luZyB0aGlz
IGVsZW1lbnQgd2l0aCBvbmUgb2YgaXRzIHNpYmxpbmdzLgotICAgICAgICAgICAgaW5kZXggPSBy
ZXBsYWNlV2l0aC5wYXJlbnQuaW5kZXgocmVwbGFjZVdpdGgpCi0gICAgICAgICAgICBpZiBpbmRl
eCBhbmQgaW5kZXggPCBteUluZGV4OgotICAgICAgICAgICAgICAgICMgRnVydGhlcm1vcmUsIGl0
IGNvbWVzIGJlZm9yZSB0aGlzIGVsZW1lbnQuIFRoYXQKLSAgICAgICAgICAgICAgICAjIG1lYW5z
IHRoYXQgd2hlbiB3ZSBleHRyYWN0IGl0LCB0aGUgaW5kZXggb2YgdGhpcwotICAgICAgICAgICAg
ICAgICMgZWxlbWVudCB3aWxsIGNoYW5nZS4KLSAgICAgICAgICAgICAgICBteUluZGV4ID0gbXlJ
bmRleCAtIDEKLSAgICAgICAgc2VsZi5leHRyYWN0KCkKLSAgICAgICAgb2xkUGFyZW50Lmluc2Vy
dChteUluZGV4LCByZXBsYWNlV2l0aCkKLQotICAgIGRlZiByZXBsYWNlV2l0aENoaWxkcmVuKHNl
bGYpOgotICAgICAgICBteVBhcmVudCA9IHNlbGYucGFyZW50Ci0gICAgICAgIG15SW5kZXggPSBz
ZWxmLnBhcmVudC5pbmRleChzZWxmKQotICAgICAgICBzZWxmLmV4dHJhY3QoKQotICAgICAgICBy
ZXZlcnNlZENoaWxkcmVuID0gbGlzdChzZWxmLmNvbnRlbnRzKQotICAgICAgICByZXZlcnNlZENo
aWxkcmVuLnJldmVyc2UoKQotICAgICAgICBmb3IgY2hpbGQgaW4gcmV2ZXJzZWRDaGlsZHJlbjoK
LSAgICAgICAgICAgIG15UGFyZW50Lmluc2VydChteUluZGV4LCBjaGlsZCkKLQotICAgIGRlZiBl
eHRyYWN0KHNlbGYpOgotICAgICAgICAiIiJEZXN0cnVjdGl2ZWx5IHJpcHMgdGhpcyBlbGVtZW50
IG91dCBvZiB0aGUgdHJlZS4iIiIKLSAgICAgICAgaWYgc2VsZi5wYXJlbnQ6Ci0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYucGFyZW50LmNvbnRlbnRzW3NlbGYucGFy
ZW50LmluZGV4KHNlbGYpXQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAg
ICAgICAgICAgcGFzcwotCi0gICAgICAgICNGaW5kIHRoZSB0d28gZWxlbWVudHMgdGhhdCB3b3Vs
ZCBiZSBuZXh0IHRvIGVhY2ggb3RoZXIgaWYKLSAgICAgICAgI3RoaXMgZWxlbWVudCAoYW5kIGFu
eSBjaGlsZHJlbikgaGFkbid0IGJlZW4gcGFyc2VkLiBDb25uZWN0Ci0gICAgICAgICN0aGUgdHdv
LgotICAgICAgICBsYXN0Q2hpbGQgPSBzZWxmLl9sYXN0UmVjdXJzaXZlQ2hpbGQoKQotICAgICAg
ICBuZXh0RWxlbWVudCA9IGxhc3RDaGlsZC5uZXh0Ci0KLSAgICAgICAgaWYgc2VsZi5wcmV2aW91
czoKLSAgICAgICAgICAgIHNlbGYucHJldmlvdXMubmV4dCA9IG5leHRFbGVtZW50Ci0gICAgICAg
IGlmIG5leHRFbGVtZW50OgotICAgICAgICAgICAgbmV4dEVsZW1lbnQucHJldmlvdXMgPSBzZWxm
LnByZXZpb3VzCi0gICAgICAgIHNlbGYucHJldmlvdXMgPSBOb25lCi0gICAgICAgIGxhc3RDaGls
ZC5uZXh0ID0gTm9uZQotCi0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQotICAgICAgICBpZiBz
ZWxmLnByZXZpb3VzU2libGluZzoKLSAgICAgICAgICAgIHNlbGYucHJldmlvdXNTaWJsaW5nLm5l
eHRTaWJsaW5nID0gc2VsZi5uZXh0U2libGluZwotICAgICAgICBpZiBzZWxmLm5leHRTaWJsaW5n
OgotICAgICAgICAgICAgc2VsZi5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBzZWxmLnBy
ZXZpb3VzU2libGluZwotICAgICAgICBzZWxmLnByZXZpb3VzU2libGluZyA9IHNlbGYubmV4dFNp
YmxpbmcgPSBOb25lCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX2xhc3RSZWN1cnNp
dmVDaGlsZChzZWxmKToKLSAgICAgICAgIkZpbmRzIHRoZSBsYXN0IGVsZW1lbnQgYmVuZWF0aCB0
aGlzIG9iamVjdCB0byBiZSBwYXJzZWQuIgotICAgICAgICBsYXN0Q2hpbGQgPSBzZWxmCi0gICAg
ICAgIHdoaWxlIGhhc2F0dHIobGFzdENoaWxkLCAnY29udGVudHMnKSBhbmQgbGFzdENoaWxkLmNv
bnRlbnRzOgotICAgICAgICAgICAgbGFzdENoaWxkID0gbGFzdENoaWxkLmNvbnRlbnRzWy0xXQot
ICAgICAgICByZXR1cm4gbGFzdENoaWxkCi0KLSAgICBkZWYgaW5zZXJ0KHNlbGYsIHBvc2l0aW9u
LCBuZXdDaGlsZCk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobmV3Q2hpbGQsIGJhc2VzdHJpbmcp
IFwKLSAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShuZXdDaGlsZCwgTmF2aWdhYmxlU3Ry
aW5nKToKLSAgICAgICAgICAgIG5ld0NoaWxkID0gTmF2aWdhYmxlU3RyaW5nKG5ld0NoaWxkKQot
Ci0gICAgICAgIHBvc2l0aW9uID0gIG1pbihwb3NpdGlvbiwgbGVuKHNlbGYuY29udGVudHMpKQot
ICAgICAgICBpZiBoYXNhdHRyKG5ld0NoaWxkLCAncGFyZW50JykgYW5kIG5ld0NoaWxkLnBhcmVu
dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMgV2UncmUgJ2luc2VydGluZycgYW4gZWxlbWVu
dCB0aGF0J3MgYWxyZWFkeSBvbmUKLSAgICAgICAgICAgICMgb2YgdGhpcyBvYmplY3QncyBjaGls
ZHJlbi4KLSAgICAgICAgICAgIGlmIG5ld0NoaWxkLnBhcmVudCBpcyBzZWxmOgotICAgICAgICAg
ICAgICAgIGluZGV4ID0gc2VsZi5pbmRleChuZXdDaGlsZCkKLSAgICAgICAgICAgICAgICBpZiBp
bmRleCA+IHBvc2l0aW9uOgotICAgICAgICAgICAgICAgICAgICAjIEZ1cnRoZXJtb3JlIHdlJ3Jl
IG1vdmluZyBpdCBmdXJ0aGVyIGRvd24gdGhlCi0gICAgICAgICAgICAgICAgICAgICMgbGlzdCBv
ZiB0aGlzIG9iamVjdCdzIGNoaWxkcmVuLiBUaGF0IG1lYW5zIHRoYXQKLSAgICAgICAgICAgICAg
ICAgICAgIyB3aGVuIHdlIGV4dHJhY3QgdGhpcyBlbGVtZW50LCBvdXIgdGFyZ2V0IGluZGV4Ci0g
ICAgICAgICAgICAgICAgICAgICMgd2lsbCBqdW1wIGRvd24gb25lLgotICAgICAgICAgICAgICAg
ICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uIC0gMQotICAgICAgICAgICAgbmV3Q2hpbGQuZXh0cmFj
dCgpCi0KLSAgICAgICAgbmV3Q2hpbGQucGFyZW50ID0gc2VsZgotICAgICAgICBwcmV2aW91c0No
aWxkID0gTm9uZQotICAgICAgICBpZiBwb3NpdGlvbiA9PSAwOgotICAgICAgICAgICAgbmV3Q2hp
bGQucHJldmlvdXNTaWJsaW5nID0gTm9uZQotICAgICAgICAgICAgbmV3Q2hpbGQucHJldmlvdXMg
PSBzZWxmCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmV2aW91c0NoaWxkID0gc2VsZi5j
b250ZW50c1twb3NpdGlvbi0xXQotICAgICAgICAgICAgbmV3Q2hpbGQucHJldmlvdXNTaWJsaW5n
ID0gcHJldmlvdXNDaGlsZAotICAgICAgICAgICAgbmV3Q2hpbGQucHJldmlvdXNTaWJsaW5nLm5l
eHRTaWJsaW5nID0gbmV3Q2hpbGQKLSAgICAgICAgICAgIG5ld0NoaWxkLnByZXZpb3VzID0gcHJl
dmlvdXNDaGlsZC5fbGFzdFJlY3Vyc2l2ZUNoaWxkKCkKLSAgICAgICAgaWYgbmV3Q2hpbGQucHJl
dmlvdXM6Ci0gICAgICAgICAgICBuZXdDaGlsZC5wcmV2aW91cy5uZXh0ID0gbmV3Q2hpbGQKLQot
ICAgICAgICBuZXdDaGlsZHNMYXN0RWxlbWVudCA9IG5ld0NoaWxkLl9sYXN0UmVjdXJzaXZlQ2hp
bGQoKQotCi0gICAgICAgIGlmIHBvc2l0aW9uID49IGxlbihzZWxmLmNvbnRlbnRzKToKLSAgICAg
ICAgICAgIG5ld0NoaWxkLm5leHRTaWJsaW5nID0gTm9uZQotCi0gICAgICAgICAgICBwYXJlbnQg
PSBzZWxmCi0gICAgICAgICAgICBwYXJlbnRzTmV4dFNpYmxpbmcgPSBOb25lCi0gICAgICAgICAg
ICB3aGlsZSBub3QgcGFyZW50c05leHRTaWJsaW5nOgotICAgICAgICAgICAgICAgIHBhcmVudHNO
ZXh0U2libGluZyA9IHBhcmVudC5uZXh0U2libGluZwotICAgICAgICAgICAgICAgIHBhcmVudCA9
IHBhcmVudC5wYXJlbnQKLSAgICAgICAgICAgICAgICBpZiBub3QgcGFyZW50OiAjIFRoaXMgaXMg
dGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQuCi0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICBpZiBwYXJlbnRzTmV4dFNpYmxpbmc6Ci0gICAgICAgICAgICAgICAg
bmV3Q2hpbGRzTGFzdEVsZW1lbnQubmV4dCA9IHBhcmVudHNOZXh0U2libGluZwotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdDaGlsZHNMYXN0RWxlbWVudC5uZXh0ID0gTm9u
ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV4dENoaWxkID0gc2VsZi5jb250ZW50c1tw
b3NpdGlvbl0KLSAgICAgICAgICAgIG5ld0NoaWxkLm5leHRTaWJsaW5nID0gbmV4dENoaWxkCi0g
ICAgICAgICAgICBpZiBuZXdDaGlsZC5uZXh0U2libGluZzoKLSAgICAgICAgICAgICAgICBuZXdD
aGlsZC5uZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgPSBuZXdDaGlsZAotICAgICAgICAgICAg
bmV3Q2hpbGRzTGFzdEVsZW1lbnQubmV4dCA9IG5leHRDaGlsZAotCi0gICAgICAgIGlmIG5ld0No
aWxkc0xhc3RFbGVtZW50Lm5leHQ6Ci0gICAgICAgICAgICBuZXdDaGlsZHNMYXN0RWxlbWVudC5u
ZXh0LnByZXZpb3VzID0gbmV3Q2hpbGRzTGFzdEVsZW1lbnQKLSAgICAgICAgc2VsZi5jb250ZW50
cy5pbnNlcnQocG9zaXRpb24sIG5ld0NoaWxkKQotCi0gICAgZGVmIGFwcGVuZChzZWxmLCB0YWcp
OgotICAgICAgICAiIiJBcHBlbmRzIHRoZSBnaXZlbiB0YWcgdG8gdGhlIGNvbnRlbnRzIG9mIHRo
aXMgdGFnLiIiIgotICAgICAgICBzZWxmLmluc2VydChsZW4oc2VsZi5jb250ZW50cyksIHRhZykK
LQotICAgIGRlZiBmaW5kTmV4dChzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5vbmUs
ICoqa3dhcmdzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgZmlyc3QgaXRlbSB0aGF0IG1hdGNo
ZXMgdGhlIGdpdmVuIGNyaXRlcmlhIGFuZAotICAgICAgICBhcHBlYXJzIGFmdGVyIHRoaXMgVGFn
IGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRPbmUoc2VsZi5m
aW5kQWxsTmV4dCwgbmFtZSwgYXR0cnMsIHRleHQsICoqa3dhcmdzKQotCi0gICAgZGVmIGZpbmRB
bGxOZXh0KHNlbGYsIG5hbWU9Tm9uZSwgYXR0cnM9e30sIHRleHQ9Tm9uZSwgbGltaXQ9Tm9uZSwK
LSAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIGFsbCBp
dGVtcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjcml0ZXJpYSBhbmQgYXBwZWFyCi0gICAgICAgIGFm
dGVyIHRoaXMgVGFnIGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Zp
bmRBbGwobmFtZSwgYXR0cnMsIHRleHQsIGxpbWl0LCBzZWxmLm5leHRHZW5lcmF0b3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQotCi0gICAgZGVmIGZpbmROZXh0U2li
bGluZyhzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5vbmUsICoqa3dhcmdzKToKLSAg
ICAgICAgIiIiUmV0dXJucyB0aGUgY2xvc2VzdCBzaWJsaW5nIHRvIHRoaXMgVGFnIHRoYXQgbWF0
Y2hlcyB0aGUKLSAgICAgICAgZ2l2ZW4gY3JpdGVyaWEgYW5kIGFwcGVhcnMgYWZ0ZXIgdGhpcyBU
YWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZmluZE9uZShzZWxm
LmZpbmROZXh0U2libGluZ3MsIG5hbWUsIGF0dHJzLCB0ZXh0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncykKLQotICAgIGRlZiBmaW5kTmV4dFNpYmxpbmdzKHNlbGYsIG5h
bWU9Tm9uZSwgYXR0cnM9e30sIHRleHQ9Tm9uZSwgbGltaXQ9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIHNpYmxpbmdzIG9m
IHRoaXMgVGFnIHRoYXQgbWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhIGFuZCBhcHBl
YXIgYWZ0ZXIgdGhpcyBUYWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5fZmluZEFsbChuYW1lLCBhdHRycywgdGV4dCwgbGltaXQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYubmV4dFNpYmxpbmdHZW5lcmF0b3IsICoqa3dhcmdzKQotICAgIGZldGNo
TmV4dFNpYmxpbmdzID0gZmluZE5leHRTaWJsaW5ncyAjIENvbXBhdGliaWxpdHkgd2l0aCBwcmUt
My54Ci0KLSAgICBkZWYgZmluZFByZXZpb3VzKHNlbGYsIG5hbWU9Tm9uZSwgYXR0cnM9e30sIHRl
eHQ9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBmaXJzdCBpdGVtIHRo
YXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gY3JpdGVyaWEgYW5kCi0gICAgICAgIGFwcGVhcnMgYmVmb3Jl
IHRoaXMgVGFnIGluIHRoZSBkb2N1bWVudC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRP
bmUoc2VsZi5maW5kQWxsUHJldmlvdXMsIG5hbWUsIGF0dHJzLCB0ZXh0LCAqKmt3YXJncykKLQot
ICAgIGRlZiBmaW5kQWxsUHJldmlvdXMoc2VsZiwgbmFtZT1Ob25lLCBhdHRycz17fSwgdGV4dD1O
b25lLCBsaW1pdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAg
ICAgICAiIiJSZXR1cm5zIGFsbCBpdGVtcyB0aGF0IG1hdGNoIHRoZSBnaXZlbiBjcml0ZXJpYSBh
bmQgYXBwZWFyCi0gICAgICAgIGJlZm9yZSB0aGlzIFRhZyBpbiB0aGUgZG9jdW1lbnQuIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9maW5kQWxsKG5hbWUsIGF0dHJzLCB0ZXh0LCBsaW1pdCwgc2Vs
Zi5wcmV2aW91c0dlbmVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdz
KQotICAgIGZldGNoUHJldmlvdXMgPSBmaW5kQWxsUHJldmlvdXMgIyBDb21wYXRpYmlsaXR5IHdp
dGggcHJlLTMueAotCi0gICAgZGVmIGZpbmRQcmV2aW91c1NpYmxpbmcoc2VsZiwgbmFtZT1Ob25l
LCBhdHRycz17fSwgdGV4dD1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJldHVybnMgdGhl
IGNsb3Nlc3Qgc2libGluZyB0byB0aGlzIFRhZyB0aGF0IG1hdGNoZXMgdGhlCi0gICAgICAgIGdp
dmVuIGNyaXRlcmlhIGFuZCBhcHBlYXJzIGJlZm9yZSB0aGlzIFRhZyBpbiB0aGUgZG9jdW1lbnQu
IiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9maW5kT25lKHNlbGYuZmluZFByZXZpb3VzU2libGlu
Z3MsIG5hbWUsIGF0dHJzLCB0ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3
YXJncykKLQotICAgIGRlZiBmaW5kUHJldmlvdXNTaWJsaW5ncyhzZWxmLCBuYW1lPU5vbmUsIGF0
dHJzPXt9LCB0ZXh0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PU5v
bmUsICoqa3dhcmdzKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgc2libGluZ3Mgb2YgdGhpcyBU
YWcgdGhhdCBtYXRjaCB0aGUgZ2l2ZW4KLSAgICAgICAgY3JpdGVyaWEgYW5kIGFwcGVhciBiZWZv
cmUgdGhpcyBUYWcgaW4gdGhlIGRvY3VtZW50LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZmlu
ZEFsbChuYW1lLCBhdHRycywgdGV4dCwgbGltaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYucHJldmlvdXNTaWJsaW5nR2VuZXJhdG9yLCAqKmt3YXJncykKLSAgICBmZXRjaFBy
ZXZpb3VzU2libGluZ3MgPSBmaW5kUHJldmlvdXNTaWJsaW5ncyAjIENvbXBhdGliaWxpdHkgd2l0
aCBwcmUtMy54Ci0KLSAgICBkZWYgZmluZFBhcmVudChzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9
LCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIGNsb3Nlc3QgcGFyZW50IG9mIHRo
aXMgVGFnIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4KLSAgICAgICAgY3JpdGVyaWEuIiIiCi0gICAg
ICAgICMgTk9URTogV2UgY2FuJ3QgdXNlIF9maW5kT25lIGJlY2F1c2UgZmluZFBhcmVudHMgdGFr
ZXMgYSBkaWZmZXJlbnQKLSAgICAgICAgIyBzZXQgb2YgYXJndW1lbnRzLgotICAgICAgICByID0g
Tm9uZQotICAgICAgICBsID0gc2VsZi5maW5kUGFyZW50cyhuYW1lLCBhdHRycywgMSkKLSAgICAg
ICAgaWYgbDoKLSAgICAgICAgICAgIHIgPSBsWzBdCi0gICAgICAgIHJldHVybiByCi0KLSAgICBk
ZWYgZmluZFBhcmVudHMoc2VsZiwgbmFtZT1Ob25lLCBhdHRycz17fSwgbGltaXQ9Tm9uZSwgKipr
d2FyZ3MpOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBwYXJlbnRzIG9mIHRoaXMgVGFnIHRoYXQg
bWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhLiIiIgotCi0gICAgICAgIHJldHVybiBz
ZWxmLl9maW5kQWxsKG5hbWUsIGF0dHJzLCBOb25lLCBsaW1pdCwgc2VsZi5wYXJlbnRHZW5lcmF0
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQotICAgIGZldGNoUGFy
ZW50cyA9IGZpbmRQYXJlbnRzICMgQ29tcGF0aWJpbGl0eSB3aXRoIHByZS0zLngKLQotICAgICNU
aGVzZSBtZXRob2RzIGRvIHRoZSByZWFsIGhlYXZ5IGxpZnRpbmcuCi0KLSAgICBkZWYgX2ZpbmRP
bmUoc2VsZiwgbWV0aG9kLCBuYW1lLCBhdHRycywgdGV4dCwgKiprd2FyZ3MpOgotICAgICAgICBy
ID0gTm9uZQotICAgICAgICBsID0gbWV0aG9kKG5hbWUsIGF0dHJzLCB0ZXh0LCAxLCAqKmt3YXJn
cykKLSAgICAgICAgaWYgbDoKLSAgICAgICAgICAgIHIgPSBsWzBdCi0gICAgICAgIHJldHVybiBy
Ci0KLSAgICBkZWYgX2ZpbmRBbGwoc2VsZiwgbmFtZSwgYXR0cnMsIHRleHQsIGxpbWl0LCBnZW5l
cmF0b3IsICoqa3dhcmdzKToKLSAgICAgICAgIkl0ZXJhdGVzIG92ZXIgYSBnZW5lcmF0b3IgbG9v
a2luZyBmb3IgdGhpbmdzIHRoYXQgbWF0Y2guIgotCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobmFt
ZSwgU291cFN0cmFpbmVyKToKLSAgICAgICAgICAgIHN0cmFpbmVyID0gbmFtZQotICAgICAgICAj
IChQb3NzaWJseSkgc3BlY2lhbCBjYXNlIHNvbWUgZmluZEFsbCooLi4uKSBzZWFyY2hlcwotICAg
ICAgICBlbGlmIHRleHQgaXMgTm9uZSBhbmQgbm90IGxpbWl0IGFuZCBub3QgYXR0cnMgYW5kIG5v
dCBrd2FyZ3M6Ci0gICAgICAgICAgICAjIGZpbmRBbGwqKFRydWUpCi0gICAgICAgICAgICBpZiBu
YW1lIGlzIFRydWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFtlbGVtZW50IGZvciBlbGVtZW50
IGluIGdlbmVyYXRvcigpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVs
ZW1lbnQsIFRhZyldCi0gICAgICAgICAgICAjIGZpbmRBbGwqKCd0YWctbmFtZScpCi0gICAgICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UobmFtZSwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIFtlbGVtZW50IGZvciBlbGVtZW50IGluIGdlbmVyYXRvcigpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiBpc2luc3RhbmNlKGVsZW1lbnQsIFRhZykgYW5kCi0gICAgICAgICAgICAg
ICAgICAgICAgICBlbGVtZW50Lm5hbWUgPT0gbmFtZV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgc3RyYWluZXIgPSBTb3VwU3RyYWluZXIobmFtZSwgYXR0cnMsIHRleHQsICoq
a3dhcmdzKQotICAgICAgICAjIEJ1aWxkIGEgU291cFN0cmFpbmVyCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBzdHJhaW5lciA9IFNvdXBTdHJhaW5lcihuYW1lLCBhdHRycywgdGV4dCwgKipr
d2FyZ3MpCi0gICAgICAgIHJlc3VsdHMgPSBSZXN1bHRTZXQoc3RyYWluZXIpCi0gICAgICAgIGcg
PSBnZW5lcmF0b3IoKQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIGkgPSBnLm5leHQoKQotICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRp
b246Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIGk6Ci0gICAgICAgICAg
ICAgICAgZm91bmQgPSBzdHJhaW5lci5zZWFyY2goaSkKLSAgICAgICAgICAgICAgICBpZiBmb3Vu
ZDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoZm91bmQpCi0gICAgICAgICAg
ICAgICAgICAgIGlmIGxpbWl0IGFuZCBsZW4ocmVzdWx0cykgPj0gbGltaXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhawotICAgICAgICByZXR1cm4gcmVzdWx0cwotCi0gICAgI1RoZXNl
IEdlbmVyYXRvcnMgY2FuIGJlIHVzZWQgdG8gbmF2aWdhdGUgc3RhcnRpbmcgZnJvbSBib3RoCi0g
ICAgI05hdmlnYWJsZVN0cmluZ3MgYW5kIFRhZ3MuCi0gICAgZGVmIG5leHRHZW5lcmF0b3Ioc2Vs
Zik6Ci0gICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBpID0gaS5uZXh0Ci0gICAgICAgICAgICB5aWVsZCBpCi0KLSAgICBkZWYgbmV4dFNp
YmxpbmdHZW5lcmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGkg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpID0gaS5uZXh0U2libGluZwotICAgICAgICAgICAg
eWllbGQgaQotCi0gICAgZGVmIHByZXZpb3VzR2VuZXJhdG9yKHNlbGYpOgotICAgICAgICBpID0g
c2VsZgotICAgICAgICB3aGlsZSBpIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaSA9IGkucHJl
dmlvdXMKLSAgICAgICAgICAgIHlpZWxkIGkKLQotICAgIGRlZiBwcmV2aW91c1NpYmxpbmdHZW5l
cmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0gICAgICAgIHdoaWxlIGkgaXMgbm90IE5v
bmU6Ci0gICAgICAgICAgICBpID0gaS5wcmV2aW91c1NpYmxpbmcKLSAgICAgICAgICAgIHlpZWxk
IGkKLQotICAgIGRlZiBwYXJlbnRHZW5lcmF0b3Ioc2VsZik6Ci0gICAgICAgIGkgPSBzZWxmCi0g
ICAgICAgIHdoaWxlIGkgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpID0gaS5wYXJlbnQKLSAg
ICAgICAgICAgIHlpZWxkIGkKLQotICAgICMgVXRpbGl0eSBtZXRob2RzCi0gICAgZGVmIHN1YnN0
aXR1dGVFbmNvZGluZyhzZWxmLCBzdHIsIGVuY29kaW5nPU5vbmUpOgotICAgICAgICBlbmNvZGlu
ZyA9IGVuY29kaW5nIG9yICJ1dGYtOCIKLSAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKCIlU09V
UC1FTkNPRElORyUiLCBlbmNvZGluZykKLQotICAgIGRlZiB0b0VuY29kaW5nKHNlbGYsIHMsIGVu
Y29kaW5nPU5vbmUpOgotICAgICAgICAiIiJFbmNvZGVzIGFuIG9iamVjdCB0byBhIHN0cmluZyBp
biBzb21lIGVuY29kaW5nLCBvciB0byBVbmljb2RlLgotICAgICAgICAuIiIiCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UocywgdW5pY29kZSk6Ci0gICAgICAgICAgICBpZiBlbmNvZGluZzoKLSAgICAg
ICAgICAgICAgICBzID0gcy5lbmNvZGUoZW5jb2RpbmcpCi0gICAgICAgIGVsaWYgaXNpbnN0YW5j
ZShzLCBzdHIpOgotICAgICAgICAgICAgaWYgZW5jb2Rpbmc6Ci0gICAgICAgICAgICAgICAgcyA9
IHMuZW5jb2RlKGVuY29kaW5nKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBz
ID0gdW5pY29kZShzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgZW5jb2Rpbmc6Ci0g
ICAgICAgICAgICAgICAgcyAgPSBzZWxmLnRvRW5jb2Rpbmcoc3RyKHMpLCBlbmNvZGluZykKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHVuaWNvZGUocykKLSAgICAgICAg
cmV0dXJuIHMKLQotY2xhc3MgTmF2aWdhYmxlU3RyaW5nKHVuaWNvZGUsIFBhZ2VFbGVtZW50KToK
LQotICAgIGRlZiBfX25ld19fKGNscywgdmFsdWUpOgotICAgICAgICAiIiJDcmVhdGUgYSBuZXcg
TmF2aWdhYmxlU3RyaW5nLgotCi0gICAgICAgIFdoZW4gdW5waWNrbGluZyBhIE5hdmlnYWJsZVN0
cmluZywgdGhpcyBtZXRob2QgaXMgY2FsbGVkIHdpdGgKLSAgICAgICAgdGhlIHN0cmluZyBpbiBE
RUZBVUxUX09VVFBVVF9FTkNPRElORy4gVGhhdCBlbmNvZGluZyBuZWVkcyB0byBiZQotICAgICAg
ICBwYXNzZWQgaW4gdG8gdGhlIHN1cGVyY2xhc3MncyBfX25ld19fIG9yIHRoZSBzdXBlcmNsYXNz
IHdvbid0IGtub3cKLSAgICAgICAgaG93IHRvIGhhbmRsZSBub24tQVNDSUkgY2hhcmFjdGVycy4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHVuaWNvZGUpOgotICAg
ICAgICAgICAgcmV0dXJuIHVuaWNvZGUuX19uZXdfXyhjbHMsIHZhbHVlKQotICAgICAgICByZXR1
cm4gdW5pY29kZS5fX25ld19fKGNscywgdmFsdWUsIERFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKQot
Ci0gICAgZGVmIF9fZ2V0bmV3YXJnc19fKHNlbGYpOgotICAgICAgICByZXR1cm4gKE5hdmlnYWJs
ZVN0cmluZy5fX3N0cl9fKHNlbGYpLCkKLQotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRy
KToKLSAgICAgICAgIiIidGV4dC5zdHJpbmcgZ2l2ZXMgeW91IHRleHQuIFRoaXMgaXMgZm9yIGJh
Y2t3YXJkcwotICAgICAgICBjb21wYXRpYmlsaXR5IGZvciBOYXZpZ2FibGUqU3RyaW5nLCBidXQg
Zm9yIENEYXRhKiBpdCBsZXRzIHlvdQotICAgICAgICBnZXQgdGhlIHN0cmluZyB3aXRob3V0IHRo
ZSBDRGF0YSB3cmFwcGVyLiIiIgotICAgICAgICBpZiBhdHRyID09ICdzdHJpbmcnOgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIEF0dHJp
YnV0ZUVycm9yLCAiJyVzJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnJXMnIiAlIChzZWxmLl9f
Y2xhc3NfXy5fX25hbWVfXywgYXR0cikKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHN0cihzZWxmKS5kZWNvZGUoREVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpCi0K
LSAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElORyk6
Ci0gICAgICAgIGlmIGVuY29kaW5nOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZW5jb2RlKGVu
Y29kaW5nKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotY2xhc3Mg
Q0RhdGEoTmF2aWdhYmxlU3RyaW5nKToKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYsIGVuY29kaW5n
PURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HKToKLSAgICAgICAgcmV0dXJuICI8IVtDREFUQVslc11d
PiIgJSBOYXZpZ2FibGVTdHJpbmcuX19zdHJfXyhzZWxmLCBlbmNvZGluZykKLQotY2xhc3MgUHJv
Y2Vzc2luZ0luc3RydWN0aW9uKE5hdmlnYWJsZVN0cmluZyk6Ci0gICAgZGVmIF9fc3RyX18oc2Vs
ZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgotICAgICAgICBvdXRwdXQgPSBz
ZWxmCi0gICAgICAgIGlmICIlU09VUC1FTkNPRElORyUiIGluIG91dHB1dDoKLSAgICAgICAgICAg
IG91dHB1dCA9IHNlbGYuc3Vic3RpdHV0ZUVuY29kaW5nKG91dHB1dCwgZW5jb2RpbmcpCi0gICAg
ICAgIHJldHVybiAiPD8lcz8+IiAlIHNlbGYudG9FbmNvZGluZyhvdXRwdXQsIGVuY29kaW5nKQot
Ci1jbGFzcyBDb21tZW50KE5hdmlnYWJsZVN0cmluZyk6Ci0gICAgZGVmIF9fc3RyX18oc2VsZiwg
ZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5DT0RJTkcpOgotICAgICAgICByZXR1cm4gIjwhLS0l
cy0tPiIgJSBOYXZpZ2FibGVTdHJpbmcuX19zdHJfXyhzZWxmLCBlbmNvZGluZykKLQotY2xhc3Mg
RGVjbGFyYXRpb24oTmF2aWdhYmxlU3RyaW5nKToKLSAgICBkZWYgX19zdHJfXyhzZWxmLCBlbmNv
ZGluZz1ERUZBVUxUX09VVFBVVF9FTkNPRElORyk6Ci0gICAgICAgIHJldHVybiAiPCElcz4iICUg
TmF2aWdhYmxlU3RyaW5nLl9fc3RyX18oc2VsZiwgZW5jb2RpbmcpCi0KLWNsYXNzIFRhZyhQYWdl
RWxlbWVudCk6Ci0KLSAgICAiIiJSZXByZXNlbnRzIGEgZm91bmQgSFRNTCB0YWcgd2l0aCBpdHMg
YXR0cmlidXRlcyBhbmQgY29udGVudHMuIiIiCi0KLSAgICBkZWYgX2ludmVydChoKToKLSAgICAg
ICAgIkNoZWFwIGZ1bmN0aW9uIHRvIGludmVydCBhIGhhc2guIgotICAgICAgICBpID0ge30KLSAg
ICAgICAgZm9yIGssdiBpbiBoLml0ZW1zKCk6Ci0gICAgICAgICAgICBpW3ZdID0gawotICAgICAg
ICByZXR1cm4gaQotCi0gICAgWE1MX0VOVElUSUVTX1RPX1NQRUNJQUxfQ0hBUlMgPSB7ICJhcG9z
IiA6ICInIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInF1b3QiIDog
JyInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYW1wIiA6ICImIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImx0IiA6ICI8IiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImd0IiA6ICI+IiB9Ci0KLSAgICBYTUxf
U1BFQ0lBTF9DSEFSU19UT19FTlRJVElFUyA9IF9pbnZlcnQoWE1MX0VOVElUSUVTX1RPX1NQRUNJ
QUxfQ0hBUlMpCi0KLSAgICBkZWYgX2NvbnZlcnRFbnRpdGllcyhzZWxmLCBtYXRjaCk6Ci0gICAg
ICAgICIiIlVzZWQgaW4gYSBjYWxsIHRvIHJlLnN1YiB0byByZXBsYWNlIEhUTUwsIFhNTCwgYW5k
IG51bWVyaWMKLSAgICAgICAgZW50aXRpZXMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgVW5pY29kZSBj
aGFyYWN0ZXJzLiBJZiBIVE1MCi0gICAgICAgIGVudGl0aWVzIGFyZSBiZWluZyBjb252ZXJ0ZWQs
IGFueSB1bnJlY29nbml6ZWQgZW50aXRpZXMgYXJlCi0gICAgICAgIGVzY2FwZWQuIiIiCi0gICAg
ICAgIHggPSBtYXRjaC5ncm91cCgxKQotICAgICAgICBpZiBzZWxmLmNvbnZlcnRIVE1MRW50aXRp
ZXMgYW5kIHggaW4gbmFtZTJjb2RlcG9pbnQ6Ci0gICAgICAgICAgICByZXR1cm4gdW5pY2hyKG5h
bWUyY29kZXBvaW50W3hdKQotICAgICAgICBlbGlmIHggaW4gc2VsZi5YTUxfRU5USVRJRVNfVE9f
U1BFQ0lBTF9DSEFSUzoKLSAgICAgICAgICAgIGlmIHNlbGYuY29udmVydFhNTEVudGl0aWVzOgot
ICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLlhNTF9FTlRJVElFU19UT19TUEVDSUFMX0NIQVJT
W3hdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiB1JyYlczsnICUg
eAotICAgICAgICBlbGlmIGxlbih4KSA+IDAgYW5kIHhbMF0gPT0gJyMnOgotICAgICAgICAgICAg
IyBIYW5kbGUgbnVtZXJpYyBlbnRpdGllcwotICAgICAgICAgICAgaWYgbGVuKHgpID4gMSBhbmQg
eFsxXSA9PSAneCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNocihpbnQoeFsyOl0sIDE2
KSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHVuaWNocihpbnQo
eFsxOl0pKQotCi0gICAgICAgIGVsaWYgc2VsZi5lc2NhcGVVbnJlY29nbml6ZWRFbnRpdGllczoK
LSAgICAgICAgICAgIHJldHVybiB1JyZhbXA7JXM7JyAlIHgKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiB1JyYlczsnICUgeAotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcnNl
ciwgbmFtZSwgYXR0cnM9Tm9uZSwgcGFyZW50PU5vbmUsCi0gICAgICAgICAgICAgICAgIHByZXZp
b3VzPU5vbmUpOgotICAgICAgICAiQmFzaWMgY29uc3RydWN0b3IuIgotCi0gICAgICAgICMgV2Ug
ZG9uJ3QgYWN0dWFsbHkgc3RvcmUgdGhlIHBhcnNlciBvYmplY3Q6IHRoYXQgbGV0cyBleHRyYWN0
ZWQKLSAgICAgICAgIyBjaHVua3MgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQKLSAgICAgICAgc2VsZi5w
YXJzZXJDbGFzcyA9IHBhcnNlci5fX2NsYXNzX18KLSAgICAgICAgc2VsZi5pc1NlbGZDbG9zaW5n
ID0gcGFyc2VyLmlzU2VsZkNsb3NpbmdUYWcobmFtZSkKLSAgICAgICAgc2VsZi5uYW1lID0gbmFt
ZQotICAgICAgICBpZiBhdHRycyBpcyBOb25lOgotICAgICAgICAgICAgYXR0cnMgPSBbXQotICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoYXR0cnMsIGRpY3QpOgotICAgICAgICAgICAgYXR0cnMgPSBh
dHRycy5pdGVtcygpCi0gICAgICAgIHNlbGYuYXR0cnMgPSBhdHRycwotICAgICAgICBzZWxmLmNv
bnRlbnRzID0gW10KLSAgICAgICAgc2VsZi5zZXR1cChwYXJlbnQsIHByZXZpb3VzKQotICAgICAg
ICBzZWxmLmhpZGRlbiA9IEZhbHNlCi0gICAgICAgIHNlbGYuY29udGFpbnNTdWJzdGl0dXRpb25z
ID0gRmFsc2UKLSAgICAgICAgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVzID0gcGFyc2VyLmNvbnZl
cnRIVE1MRW50aXRpZXMKLSAgICAgICAgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXMgPSBwYXJzZXIu
Y29udmVydFhNTEVudGl0aWVzCi0gICAgICAgIHNlbGYuZXNjYXBlVW5yZWNvZ25pemVkRW50aXRp
ZXMgPSBwYXJzZXIuZXNjYXBlVW5yZWNvZ25pemVkRW50aXRpZXMKLQotICAgICAgICAjIENvbnZl
cnQgYW55IEhUTUwsIFhNTCwgb3IgbnVtZXJpYyBlbnRpdGllcyBpbiB0aGUgYXR0cmlidXRlIHZh
bHVlcy4KLSAgICAgICAgY29udmVydCA9IGxhbWJkYShrLCB2YWwpOiAoaywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmUuc3ViKCImKCNcZCt8I3hbMC05YS1mQS1GXSt8XHcr
KTsiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29u
dmVydEVudGl0aWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dmFsKSkKLSAgICAgICAgc2VsZi5hdHRycyA9IG1hcChjb252ZXJ0LCBzZWxmLmF0dHJzKQotCi0g
ICAgZGVmIGdldFN0cmluZyhzZWxmKToKLSAgICAgICAgaWYgKGxlbihzZWxmLmNvbnRlbnRzKSA9
PSAxCi0gICAgICAgICAgICBhbmQgaXNpbnN0YW5jZShzZWxmLmNvbnRlbnRzWzBdLCBOYXZpZ2Fi
bGVTdHJpbmcpKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbnRlbnRzWzBdCi0KLSAgICBk
ZWYgc2V0U3RyaW5nKHNlbGYsIHN0cmluZyk6Ci0gICAgICAgICIiIlJlcGxhY2UgdGhlIGNvbnRl
bnRzIG9mIHRoZSB0YWcgd2l0aCBhIHN0cmluZyIiIgotICAgICAgICBzZWxmLmNsZWFyKCkKLSAg
ICAgICAgc2VsZi5hcHBlbmQoc3RyaW5nKQotCi0gICAgc3RyaW5nID0gcHJvcGVydHkoZ2V0U3Ry
aW5nLCBzZXRTdHJpbmcpCi0KLSAgICBkZWYgZ2V0VGV4dChzZWxmLCBzZXBhcmF0b3I9dSIiKToK
LSAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbnRlbnRzKToKLSAgICAgICAgICAgIHJldHVybiB1
IiIKLSAgICAgICAgc3RvcE5vZGUgPSBzZWxmLl9sYXN0UmVjdXJzaXZlQ2hpbGQoKS5uZXh0Ci0g
ICAgICAgIHN0cmluZ3MgPSBbXQotICAgICAgICBjdXJyZW50ID0gc2VsZi5jb250ZW50c1swXQot
ICAgICAgICB3aGlsZSBjdXJyZW50IGlzIG5vdCBzdG9wTm9kZToKLSAgICAgICAgICAgIGlmIGlz
aW5zdGFuY2UoY3VycmVudCwgTmF2aWdhYmxlU3RyaW5nKToKLSAgICAgICAgICAgICAgICBzdHJp
bmdzLmFwcGVuZChjdXJyZW50LnN0cmlwKCkpCi0gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVu
dC5uZXh0Ci0gICAgICAgIHJldHVybiBzZXBhcmF0b3Iuam9pbihzdHJpbmdzKQotCi0gICAgdGV4
dCA9IHByb3BlcnR5KGdldFRleHQpCi0KLSAgICBkZWYgZ2V0KHNlbGYsIGtleSwgZGVmYXVsdD1O
b25lKToKLSAgICAgICAgIiIiUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICdrZXknIGF0dHJpYnV0
ZSBmb3IgdGhlIHRhZywgb3IKLSAgICAgICAgdGhlIHZhbHVlIGdpdmVuIGZvciAnZGVmYXVsdCcg
aWYgaXQgZG9lc24ndCBoYXZlIHRoYXQKLSAgICAgICAgYXR0cmlidXRlLiIiIgotICAgICAgICBy
ZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgpLmdldChrZXksIGRlZmF1bHQpCi0KLSAgICBkZWYgY2xl
YXIoc2VsZik6Ci0gICAgICAgICIiIkV4dHJhY3QgYWxsIGNoaWxkcmVuLiIiIgotICAgICAgICBm
b3IgY2hpbGQgaW4gc2VsZi5jb250ZW50c1s6XToKLSAgICAgICAgICAgIGNoaWxkLmV4dHJhY3Qo
KQotCi0gICAgZGVmIGluZGV4KHNlbGYsIGVsZW1lbnQpOgotICAgICAgICBmb3IgaSwgY2hpbGQg
aW4gZW51bWVyYXRlKHNlbGYuY29udGVudHMpOgotICAgICAgICAgICAgaWYgY2hpbGQgaXMgZWxl
bWVudDoKLSAgICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJUYWcuaW5kZXg6IGVsZW1lbnQgbm90IGluIHRhZyIpCi0KLSAgICBkZWYgaGFzX2tleShzZWxm
LCBrZXkpOgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgpLmhhc19rZXkoa2V5KQot
Ci0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgICIiInRhZ1trZXldIHJl
dHVybnMgdGhlIHZhbHVlIG9mIHRoZSAna2V5JyBhdHRyaWJ1dGUgZm9yIHRoZSB0YWcsCi0gICAg
ICAgIGFuZCB0aHJvd3MgYW4gZXhjZXB0aW9uIGlmIGl0J3Mgbm90IHRoZXJlLiIiIgotICAgICAg
ICByZXR1cm4gc2VsZi5fZ2V0QXR0ck1hcCgpW2tleV0KLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxm
KToKLSAgICAgICAgIkl0ZXJhdGluZyBvdmVyIGEgdGFnIGl0ZXJhdGVzIG92ZXIgaXRzIGNvbnRl
bnRzLiIKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKLQotICAgIGRlZiBfX2xl
bl9fKHNlbGYpOgotICAgICAgICAiVGhlIGxlbmd0aCBvZiBhIHRhZyBpcyB0aGUgbGVuZ3RoIG9m
IGl0cyBsaXN0IG9mIGNvbnRlbnRzLiIKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmNvbnRlbnRz
KQotCi0gICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB4KToKLSAgICAgICAgcmV0dXJuIHggaW4g
c2VsZi5jb250ZW50cwotCi0gICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgotICAgICAgICAiQSB0
YWcgaXMgbm9uLU5vbmUgZXZlbiBpZiBpdCBoYXMgbm8gY29udGVudHMuIgotICAgICAgICByZXR1
cm4gVHJ1ZQotCi0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpOgotICAgICAg
ICAiIiJTZXR0aW5nIHRhZ1trZXldIHNldHMgdGhlIHZhbHVlIG9mIHRoZSAna2V5JyBhdHRyaWJ1
dGUgZm9yIHRoZQotICAgICAgICB0YWcuIiIiCi0gICAgICAgIHNlbGYuX2dldEF0dHJNYXAoKQot
ICAgICAgICBzZWxmLmF0dHJNYXBba2V5XSA9IHZhbHVlCi0gICAgICAgIGZvdW5kID0gRmFsc2UK
LSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKHNlbGYuYXR0cnMpKToKLSAgICAgICAgICAg
IGlmIHNlbGYuYXR0cnNbaV1bMF0gPT0ga2V5OgotICAgICAgICAgICAgICAgIHNlbGYuYXR0cnNb
aV0gPSAoa2V5LCB2YWx1ZSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKLSAgICAgICAg
aWYgbm90IGZvdW5kOgotICAgICAgICAgICAgc2VsZi5hdHRycy5hcHBlbmQoKGtleSwgdmFsdWUp
KQotICAgICAgICBzZWxmLl9nZXRBdHRyTWFwKClba2V5XSA9IHZhbHVlCi0KLSAgICBkZWYgX19k
ZWxpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgIkRlbGV0aW5nIHRhZ1trZXldIGRlbGV0ZXMg
YWxsICdrZXknIGF0dHJpYnV0ZXMgZm9yIHRoZSB0YWcuIgotICAgICAgICBmb3IgaXRlbSBpbiBz
ZWxmLmF0dHJzOgotICAgICAgICAgICAgaWYgaXRlbVswXSA9PSBrZXk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5hdHRycy5yZW1vdmUoaXRlbSkKLSAgICAgICAgICAgICAgICAjV2UgZG9uJ3QgYnJl
YWsgYmVjYXVzZSBiYWQgSFRNTCBjYW4gZGVmaW5lIHRoZSBzYW1lCi0gICAgICAgICAgICAgICAg
I2F0dHJpYnV0ZSBtdWx0aXBsZSB0aW1lcy4KLSAgICAgICAgICAgIHNlbGYuX2dldEF0dHJNYXAo
KQotICAgICAgICAgICAgaWYgc2VsZi5hdHRyTWFwLmhhc19rZXkoa2V5KToKLSAgICAgICAgICAg
ICAgICBkZWwgc2VsZi5hdHRyTWFwW2tleV0KLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCAqYXJn
cywgKiprd2FyZ3MpOgotICAgICAgICAiIiJDYWxsaW5nIGEgdGFnIGxpa2UgYSBmdW5jdGlvbiBp
cyB0aGUgc2FtZSBhcyBjYWxsaW5nIGl0cwotICAgICAgICBmaW5kQWxsKCkgbWV0aG9kLiBFZy4g
dGFnKCdhJykgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZSBBIHRhZ3MKLSAgICAgICAgZm91bmQg
d2l0aGluIHRoaXMgdGFnLiIiIgotICAgICAgICByZXR1cm4gYXBwbHkoc2VsZi5maW5kQWxsLCBh
cmdzLCBrd2FyZ3MpCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgdGFnKToKLSAgICAgICAg
I3ByaW50ICJHZXRhdHRyICVzLiVzIiAlIChzZWxmLl9fY2xhc3NfXywgdGFnKQotICAgICAgICBp
ZiBsZW4odGFnKSA+IDMgYW5kIHRhZy5yZmluZCgnVGFnJykgPT0gbGVuKHRhZyktMzoKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLmZpbmQodGFnWzotM10pCi0gICAgICAgIGVsaWYgdGFnLmZpbmQo
J19fJykgIT0gMDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmZpbmQodGFnKQotICAgICAgICBy
YWlzZSBBdHRyaWJ1dGVFcnJvciwgIiclcycgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJyVzJyIg
JSAoc2VsZi5fX2NsYXNzX18sIHRhZykKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgot
ICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWZmIHRoaXMgdGFnIGhhcyB0aGUgc2FtZSBuYW1lLCB0
aGUgc2FtZSBhdHRyaWJ1dGVzLAotICAgICAgICBhbmQgdGhlIHNhbWUgY29udGVudHMgKHJlY3Vy
c2l2ZWx5KSBhcyB0aGUgZ2l2ZW4gdGFnLgotCi0gICAgICAgIE5PVEU6IHJpZ2h0IG5vdyB0aGlz
IHdpbGwgcmV0dXJuIGZhbHNlIGlmIHR3byB0YWdzIGhhdmUgdGhlCi0gICAgICAgIHNhbWUgYXR0
cmlidXRlcyBpbiBhIGRpZmZlcmVudCBvcmRlci4gU2hvdWxkIHRoaXMgYmUgZml4ZWQ/IiIiCi0g
ICAgICAgIGlmIG90aGVyIGlzIHNlbGY6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAg
ICBpZiBub3QgaGFzYXR0cihvdGhlciwgJ25hbWUnKSBvciBub3QgaGFzYXR0cihvdGhlciwgJ2F0
dHJzJykgb3Igbm90IGhhc2F0dHIob3RoZXIsICdjb250ZW50cycpIG9yIHNlbGYubmFtZSAhPSBv
dGhlci5uYW1lIG9yIHNlbGYuYXR0cnMgIT0gb3RoZXIuYXR0cnMgb3IgbGVuKHNlbGYpICE9IGxl
bihvdGhlcik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZm9yIGkgaW4gcmFu
Z2UoMCwgbGVuKHNlbGYuY29udGVudHMpKToKLSAgICAgICAgICAgIGlmIHNlbGYuY29udGVudHNb
aV0gIT0gb3RoZXIuY29udGVudHNbaV06Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0g
ICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKLSAgICAg
ICAgIiIiUmV0dXJucyB0cnVlIGlmZiB0aGlzIHRhZyBpcyBub3QgaWRlbnRpY2FsIHRvIHRoZSBv
dGhlciB0YWcsCi0gICAgICAgIGFzIGRlZmluZWQgaW4gX19lcV9fLiIiIgotICAgICAgICByZXR1
cm4gbm90IHNlbGYgPT0gb3RoZXIKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmLCBlbmNvZGluZz1E
RUZBVUxUX09VVFBVVF9FTkNPRElORyk6Ci0gICAgICAgICIiIlJlbmRlcnMgdGhpcyB0YWcgYXMg
YSBzdHJpbmcuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oZW5jb2RpbmcpCi0KLSAg
ICBkZWYgX191bmljb2RlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oTm9u
ZSkKLQotICAgIEJBUkVfQU1QRVJTQU5EX09SX0JSQUNLRVQgPSByZS5jb21waWxlKCIoWzw+XXwi
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJig/ISNcZCs7
fCN4WzAtOWEtZkEtRl0rO3xcdys7KSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICArICIpIikKLQotICAgIGRlZiBfc3ViX2VudGl0eShzZWxmLCB4KToKLSAgICAg
ICAgIiIiVXNlZCB3aXRoIGEgcmVndWxhciBleHByZXNzaW9uIHRvIHN1YnN0aXR1dGUgdGhlCi0g
ICAgICAgIGFwcHJvcHJpYXRlIFhNTCBlbnRpdHkgZm9yIGFuIFhNTCBzcGVjaWFsIGNoYXJhY3Rl
ci4iIiIKLSAgICAgICAgcmV0dXJuICImIiArIHNlbGYuWE1MX1NQRUNJQUxfQ0hBUlNfVE9fRU5U
SVRJRVNbeC5ncm91cCgwKVswXV0gKyAiOyIKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYsIGVuY29k
aW5nPURFRkFVTFRfT1VUUFVUX0VOQ09ESU5HLAotICAgICAgICAgICAgICAgIHByZXR0eVByaW50
PUZhbHNlLCBpbmRlbnRMZXZlbD0wKToKLSAgICAgICAgIiIiUmV0dXJucyBhIHN0cmluZyBvciBV
bmljb2RlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgdGFnIGFuZAotICAgICAgICBpdHMgY29udGVu
dHMuIFRvIGdldCBVbmljb2RlLCBwYXNzIE5vbmUgZm9yIGVuY29kaW5nLgotCi0gICAgICAgIE5P
VEU6IHNpbmNlIFB5dGhvbidzIEhUTUwgcGFyc2VyIGNvbnN1bWVzIHdoaXRlc3BhY2UsIHRoaXMK
LSAgICAgICAgbWV0aG9kIGlzIG5vdCBjZXJ0YWluIHRvIHJlcHJvZHVjZSB0aGUgd2hpdGVzcGFj
ZSBwcmVzZW50IGluCi0gICAgICAgIHRoZSBvcmlnaW5hbCBzdHJpbmcuIiIiCi0KLSAgICAgICAg
ZW5jb2RlZE5hbWUgPSBzZWxmLnRvRW5jb2Rpbmcoc2VsZi5uYW1lLCBlbmNvZGluZykKLQotICAg
ICAgICBhdHRycyA9IFtdCi0gICAgICAgIGlmIHNlbGYuYXR0cnM6Ci0gICAgICAgICAgICBmb3Ig
a2V5LCB2YWwgaW4gc2VsZi5hdHRyczoKLSAgICAgICAgICAgICAgICBmbXQgPSAnJXM9IiVzIicK
LSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgYmFzZXN0cmluZyk6Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIHNlbGYuY29udGFpbnNTdWJzdGl0dXRpb25zIGFuZCAnJVNPVVAtRU5D
T0RJTkclJyBpbiB2YWw6Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzZWxmLnN1YnN0
aXR1dGVFbmNvZGluZyh2YWwsIGVuY29kaW5nKQotCi0gICAgICAgICAgICAgICAgICAgICMgVGhl
IGF0dHJpYnV0ZSB2YWx1ZSBlaXRoZXI6Ci0gICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAg
ICAgICAgICAgICAgIyAqIENvbnRhaW5zIG5vIGVtYmVkZGVkIGRvdWJsZSBxdW90ZXMgb3Igc2lu
Z2xlIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICAgICAgIyAgIE5vIHByb2JsZW06IHdlIGVuY2xv
c2UgaXQgaW4gZG91YmxlIHF1b3Rlcy4KLSAgICAgICAgICAgICAgICAgICAgIyAqIENvbnRhaW5z
IGVtYmVkZGVkIHNpbmdsZSBxdW90ZXMuIE5vIHByb2JsZW06Ci0gICAgICAgICAgICAgICAgICAg
ICMgICBkb3VibGUgcXVvdGVzIHdvcmsgaGVyZSB0b28uCi0gICAgICAgICAgICAgICAgICAgICMg
KiBDb250YWlucyBlbWJlZGRlZCBkb3VibGUgcXVvdGVzLiBObyBwcm9ibGVtOgotICAgICAgICAg
ICAgICAgICAgICAjICAgd2UgZW5jbG9zZSBpdCBpbiBzaW5nbGUgcXVvdGVzLgotICAgICAgICAg
ICAgICAgICAgICAjICogRW1iZWRzIGJvdGggc2luZ2xlIF9hbmRfIGRvdWJsZSBxdW90ZXMuIFRo
aXMKLSAgICAgICAgICAgICAgICAgICAgIyAgIGNhbid0IGhhcHBlbiBuYXR1cmFsbHksIGJ1dCBp
dCBjYW4gaGFwcGVuIGlmCi0gICAgICAgICAgICAgICAgICAgICMgICB5b3UgbW9kaWZ5IGFuIGF0
dHJpYnV0ZSB2YWx1ZSBhZnRlciBwYXJzaW5nCi0gICAgICAgICAgICAgICAgICAgICMgICB0aGUg
ZG9jdW1lbnQuIE5vdyB3ZSBoYXZlIGEgYml0IG9mIGEKLSAgICAgICAgICAgICAgICAgICAgIyAg
IHByb2JsZW0uIFdlIHNvbHZlIGl0IGJ5IGVuY2xvc2luZyB0aGUKLSAgICAgICAgICAgICAgICAg
ICAgIyAgIGF0dHJpYnV0ZSBpbiBzaW5nbGUgcXVvdGVzLCBhbmQgZXNjYXBpbmcgYW55Ci0gICAg
ICAgICAgICAgICAgICAgICMgICBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzIHRvIFhNTCBlbnRpdGll
cy4KLSAgICAgICAgICAgICAgICAgICAgaWYgJyInIGluIHZhbDoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZtdCA9ICIlcz0nJXMnIgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgIiciIGlu
IHZhbDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE86IHJlcGxhY2Ugd2l0aCBh
cG9zIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFwcHJvcHJpYXRlLgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKCInIiwgIiZzcXVvdDsi
KQotCi0gICAgICAgICAgICAgICAgICAgICMgTm93IHdlJ3JlIG9rYXkgdy9yL3QgcXVvdGVzLiBC
dXQgdGhlIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAgICAjIHZhbHVlIG1pZ2h0IGFsc28g
Y29udGFpbiBhbmdsZSBicmFja2V0cywgb3IKLSAgICAgICAgICAgICAgICAgICAgIyBhbXBlcnNh
bmRzIHRoYXQgYXJlbid0IHBhcnQgb2YgZW50aXRpZXMuIFdlIG5lZWQKLSAgICAgICAgICAgICAg
ICAgICAgIyB0byBlc2NhcGUgdGhvc2UgdG8gWE1MIGVudGl0aWVzIHRvby4KLSAgICAgICAgICAg
ICAgICAgICAgdmFsID0gc2VsZi5CQVJFX0FNUEVSU0FORF9PUl9CUkFDS0VULnN1YihzZWxmLl9z
dWJfZW50aXR5LCB2YWwpCi0KLSAgICAgICAgICAgICAgICBhdHRycy5hcHBlbmQoZm10ICUgKHNl
bGYudG9FbmNvZGluZyhrZXksIGVuY29kaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYudG9FbmNvZGluZyh2YWwsIGVuY29kaW5nKSkpCi0gICAgICAgIGNsb3Nl
ID0gJycKLSAgICAgICAgY2xvc2VUYWcgPSAnJwotICAgICAgICBpZiBzZWxmLmlzU2VsZkNsb3Np
bmc6Ci0gICAgICAgICAgICBjbG9zZSA9ICcgLycKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGNsb3NlVGFnID0gJzwvJXM+JyAlIGVuY29kZWROYW1lCi0KLSAgICAgICAgaW5kZW50VGFnLCBp
bmRlbnRDb250ZW50cyA9IDAsIDAKLSAgICAgICAgaWYgcHJldHR5UHJpbnQ6Ci0gICAgICAgICAg
ICBpbmRlbnRUYWcgPSBpbmRlbnRMZXZlbAotICAgICAgICAgICAgc3BhY2UgPSAoJyAnICogKGlu
ZGVudFRhZy0xKSkKLSAgICAgICAgICAgIGluZGVudENvbnRlbnRzID0gaW5kZW50VGFnICsgMQot
ICAgICAgICBjb250ZW50cyA9IHNlbGYucmVuZGVyQ29udGVudHMoZW5jb2RpbmcsIHByZXR0eVBy
aW50LCBpbmRlbnRDb250ZW50cykKLSAgICAgICAgaWYgc2VsZi5oaWRkZW46Ci0gICAgICAgICAg
ICBzID0gY29udGVudHMKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHMgPSBbXQotICAgICAg
ICAgICAgYXR0cmlidXRlU3RyaW5nID0gJycKLSAgICAgICAgICAgIGlmIGF0dHJzOgotICAgICAg
ICAgICAgICAgIGF0dHJpYnV0ZVN0cmluZyA9ICcgJyArICcgJy5qb2luKGF0dHJzKQotICAgICAg
ICAgICAgaWYgcHJldHR5UHJpbnQ6Ci0gICAgICAgICAgICAgICAgcy5hcHBlbmQoc3BhY2UpCi0g
ICAgICAgICAgICBzLmFwcGVuZCgnPCVzJXMlcz4nICUgKGVuY29kZWROYW1lLCBhdHRyaWJ1dGVT
dHJpbmcsIGNsb3NlKSkKLSAgICAgICAgICAgIGlmIHByZXR0eVByaW50OgotICAgICAgICAgICAg
ICAgIHMuYXBwZW5kKCJcbiIpCi0gICAgICAgICAgICBzLmFwcGVuZChjb250ZW50cykKLSAgICAg
ICAgICAgIGlmIHByZXR0eVByaW50IGFuZCBjb250ZW50cyBhbmQgY29udGVudHNbLTFdICE9ICJc
biI6Ci0gICAgICAgICAgICAgICAgcy5hcHBlbmQoIlxuIikKLSAgICAgICAgICAgIGlmIHByZXR0
eVByaW50IGFuZCBjbG9zZVRhZzoKLSAgICAgICAgICAgICAgICBzLmFwcGVuZChzcGFjZSkKLSAg
ICAgICAgICAgIHMuYXBwZW5kKGNsb3NlVGFnKQotICAgICAgICAgICAgaWYgcHJldHR5UHJpbnQg
YW5kIGNsb3NlVGFnIGFuZCBzZWxmLm5leHRTaWJsaW5nOgotICAgICAgICAgICAgICAgIHMuYXBw
ZW5kKCJcbiIpCi0gICAgICAgICAgICBzID0gJycuam9pbihzKQotICAgICAgICByZXR1cm4gcwot
Ci0gICAgZGVmIGRlY29tcG9zZShzZWxmKToKLSAgICAgICAgIiIiUmVjdXJzaXZlbHkgZGVzdHJv
eXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgdHJlZS4iIiIKLSAgICAgICAgc2VsZi5leHRyYWN0KCkK
LSAgICAgICAgaWYgbGVuKHNlbGYuY29udGVudHMpID09IDA6Ci0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgY3VycmVudCA9IHNlbGYuY29udGVudHNbMF0KLSAgICAgICAgd2hpbGUgY3VycmVu
dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG5leHQgPSBjdXJyZW50Lm5leHQKLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoY3VycmVudCwgVGFnKToKLSAgICAgICAgICAgICAgICBkZWwgY3Vy
cmVudC5jb250ZW50c1s6XQotICAgICAgICAgICAgY3VycmVudC5wYXJlbnQgPSBOb25lCi0gICAg
ICAgICAgICBjdXJyZW50LnByZXZpb3VzID0gTm9uZQotICAgICAgICAgICAgY3VycmVudC5wcmV2
aW91c1NpYmxpbmcgPSBOb25lCi0gICAgICAgICAgICBjdXJyZW50Lm5leHQgPSBOb25lCi0gICAg
ICAgICAgICBjdXJyZW50Lm5leHRTaWJsaW5nID0gTm9uZQotICAgICAgICAgICAgY3VycmVudCA9
IG5leHQKLQotICAgIGRlZiBwcmV0dGlmeShzZWxmLCBlbmNvZGluZz1ERUZBVUxUX09VVFBVVF9F
TkNPRElORyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fc3RyX18oZW5jb2RpbmcsIFRydWUpCi0K
LSAgICBkZWYgcmVuZGVyQ29udGVudHMoc2VsZiwgZW5jb2Rpbmc9REVGQVVMVF9PVVRQVVRfRU5D
T0RJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgIHByZXR0eVByaW50PUZhbHNlLCBpbmRlbnRM
ZXZlbD0wKToKLSAgICAgICAgIiIiUmVuZGVycyB0aGUgY29udGVudHMgb2YgdGhpcyB0YWcgYXMg
YSBzdHJpbmcgaW4gdGhlIGdpdmVuCi0gICAgICAgIGVuY29kaW5nLiBJZiBlbmNvZGluZyBpcyBO
b25lLCByZXR1cm5zIGEgVW5pY29kZSBzdHJpbmcuLiIiIgotICAgICAgICBzPVtdCi0gICAgICAg
IGZvciBjIGluIHNlbGY6Ci0gICAgICAgICAgICB0ZXh0ID0gTm9uZQotICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShjLCBOYXZpZ2FibGVTdHJpbmcpOgotICAgICAgICAgICAgICAgIHRleHQgPSBj
Ll9fc3RyX18oZW5jb2RpbmcpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYywgVGFnKToK
LSAgICAgICAgICAgICAgICBzLmFwcGVuZChjLl9fc3RyX18oZW5jb2RpbmcsIHByZXR0eVByaW50
LCBpbmRlbnRMZXZlbCkpCi0gICAgICAgICAgICBpZiB0ZXh0IGFuZCBwcmV0dHlQcmludDoKLSAg
ICAgICAgICAgICAgICB0ZXh0ID0gdGV4dC5zdHJpcCgpCi0gICAgICAgICAgICBpZiB0ZXh0Ogot
ICAgICAgICAgICAgICAgIGlmIHByZXR0eVByaW50OgotICAgICAgICAgICAgICAgICAgICBzLmFw
cGVuZCgiICIgKiAoaW5kZW50TGV2ZWwtMSkpCi0gICAgICAgICAgICAgICAgcy5hcHBlbmQodGV4
dCkKLSAgICAgICAgICAgICAgICBpZiBwcmV0dHlQcmludDoKLSAgICAgICAgICAgICAgICAgICAg
cy5hcHBlbmQoIlxuIikKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocykKLQotICAgICNTb3VwIG1l
dGhvZHMKLQotICAgIGRlZiBmaW5kKHNlbGYsIG5hbWU9Tm9uZSwgYXR0cnM9e30sIHJlY3Vyc2l2
ZT1UcnVlLCB0ZXh0PU5vbmUsCi0gICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICAiIiJS
ZXR1cm4gb25seSB0aGUgZmlyc3QgY2hpbGQgb2YgdGhpcyBUYWcgbWF0Y2hpbmcgdGhlIGdpdmVu
Ci0gICAgICAgIGNyaXRlcmlhLiIiIgotICAgICAgICByID0gTm9uZQotICAgICAgICBsID0gc2Vs
Zi5maW5kQWxsKG5hbWUsIGF0dHJzLCByZWN1cnNpdmUsIHRleHQsIDEsICoqa3dhcmdzKQotICAg
ICAgICBpZiBsOgotICAgICAgICAgICAgciA9IGxbMF0KLSAgICAgICAgcmV0dXJuIHIKLSAgICBm
aW5kQ2hpbGQgPSBmaW5kCi0KLSAgICBkZWYgZmluZEFsbChzZWxmLCBuYW1lPU5vbmUsIGF0dHJz
PXt9LCByZWN1cnNpdmU9VHJ1ZSwgdGV4dD1Ob25lLAotICAgICAgICAgICAgICAgIGxpbWl0PU5v
bmUsICoqa3dhcmdzKToKLSAgICAgICAgIiIiRXh0cmFjdHMgYSBsaXN0IG9mIFRhZyBvYmplY3Rz
IHRoYXQgbWF0Y2ggdGhlIGdpdmVuCi0gICAgICAgIGNyaXRlcmlhLiAgWW91IGNhbiBzcGVjaWZ5
IHRoZSBuYW1lIG9mIHRoZSBUYWcgYW5kIGFueQotICAgICAgICBhdHRyaWJ1dGVzIHlvdSB3YW50
IHRoZSBUYWcgdG8gaGF2ZS4KLQotICAgICAgICBUaGUgdmFsdWUgb2YgYSBrZXktdmFsdWUgcGFp
ciBpbiB0aGUgJ2F0dHJzJyBtYXAgY2FuIGJlIGEKLSAgICAgICAgc3RyaW5nLCBhIGxpc3Qgb2Yg
c3RyaW5ncywgYSByZWd1bGFyIGV4cHJlc3Npb24gb2JqZWN0LCBvciBhCi0gICAgICAgIGNhbGxh
YmxlIHRoYXQgdGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgd2hldGhlciBvciBub3QgdGhlCi0g
ICAgICAgIHN0cmluZyBtYXRjaGVzIGZvciBzb21lIGN1c3RvbSBkZWZpbml0aW9uIG9mICdtYXRj
aGVzJy4gVGhlCi0gICAgICAgIHNhbWUgaXMgdHJ1ZSBvZiB0aGUgdGFnIG5hbWUuIiIiCi0gICAg
ICAgIGdlbmVyYXRvciA9IHNlbGYucmVjdXJzaXZlQ2hpbGRHZW5lcmF0b3IKLSAgICAgICAgaWYg
bm90IHJlY3Vyc2l2ZToKLSAgICAgICAgICAgIGdlbmVyYXRvciA9IHNlbGYuY2hpbGRHZW5lcmF0
b3IKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRBbGwobmFtZSwgYXR0cnMsIHRleHQsIGxpbWl0
LCBnZW5lcmF0b3IsICoqa3dhcmdzKQotICAgIGZpbmRDaGlsZHJlbiA9IGZpbmRBbGwKLQotICAg
ICMgUHJlLTMueCBjb21wYXRpYmlsaXR5IG1ldGhvZHMKLSAgICBmaXJzdCA9IGZpbmQKLSAgICBm
ZXRjaCA9IGZpbmRBbGwKLQotICAgIGRlZiBmZXRjaFRleHQoc2VsZiwgdGV4dD1Ob25lLCByZWN1
cnNpdmU9VHJ1ZSwgbGltaXQ9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLmZpbmRBbGwodGV4
dD10ZXh0LCByZWN1cnNpdmU9cmVjdXJzaXZlLCBsaW1pdD1saW1pdCkKLQotICAgIGRlZiBmaXJz
dFRleHQoc2VsZiwgdGV4dD1Ob25lLCByZWN1cnNpdmU9VHJ1ZSk6Ci0gICAgICAgIHJldHVybiBz
ZWxmLmZpbmQodGV4dD10ZXh0LCByZWN1cnNpdmU9cmVjdXJzaXZlKQotCi0gICAgI1ByaXZhdGUg
bWV0aG9kcwotCi0gICAgZGVmIF9nZXRBdHRyTWFwKHNlbGYpOgotICAgICAgICAiIiJJbml0aWFs
aXplcyBhIG1hcCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHRhZydzIGF0dHJpYnV0ZXMsCi0gICAg
ICAgIGlmIG5vdCBhbHJlYWR5IGluaXRpYWxpemVkLiIiIgotICAgICAgICBpZiBub3QgZ2V0YXR0
cihzZWxmLCAnYXR0ck1hcCcpOgotICAgICAgICAgICAgc2VsZi5hdHRyTWFwID0ge30KLSAgICAg
ICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4gc2VsZi5hdHRyczoKLSAgICAgICAgICAgICAgICBz
ZWxmLmF0dHJNYXBba2V5XSA9IHZhbHVlCi0gICAgICAgIHJldHVybiBzZWxmLmF0dHJNYXAKLQot
ICAgICNHZW5lcmF0b3IgbWV0aG9kcwotICAgIGRlZiBjaGlsZEdlbmVyYXRvcihzZWxmKToKLSAg
ICAgICAgIyBKdXN0IHVzZSB0aGUgaXRlcmF0b3IgZnJvbSB0aGUgY29udGVudHMKLSAgICAgICAg
cmV0dXJuIGl0ZXIoc2VsZi5jb250ZW50cykKLQotICAgIGRlZiByZWN1cnNpdmVDaGlsZEdlbmVy
YXRvcihzZWxmKToKLSAgICAgICAgaWYgbm90IGxlbihzZWxmLmNvbnRlbnRzKToKLSAgICAgICAg
ICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KLSAgICAgICAgc3RvcE5vZGUgPSBzZWxmLl9sYXN0UmVj
dXJzaXZlQ2hpbGQoKS5uZXh0Ci0gICAgICAgIGN1cnJlbnQgPSBzZWxmLmNvbnRlbnRzWzBdCi0g
ICAgICAgIHdoaWxlIGN1cnJlbnQgaXMgbm90IHN0b3BOb2RlOgotICAgICAgICAgICAgeWllbGQg
Y3VycmVudAotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dAotCi0KLSMgTmV4dCwg
YSBjb3VwbGUgY2xhc3NlcyB0byByZXByZXNlbnQgcXVlcmllcyBhbmQgdGhlaXIgcmVzdWx0cy4K
LWNsYXNzIFNvdXBTdHJhaW5lcjoKLSAgICAiIiJFbmNhcHN1bGF0ZXMgYSBudW1iZXIgb2Ygd2F5
cyBvZiBtYXRjaGluZyBhIG1hcmt1cCBlbGVtZW50ICh0YWcgb3IKLSAgICB0ZXh0KS4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lPU5vbmUsIGF0dHJzPXt9LCB0ZXh0PU5vbmUsICoq
a3dhcmdzKToKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotICAgICAgICBpZiBpc2luc3RhbmNl
KGF0dHJzLCBiYXNlc3RyaW5nKToKLSAgICAgICAgICAgIGt3YXJnc1snY2xhc3MnXSA9IF9tYXRj
aF9jc3NfY2xhc3MoYXR0cnMpCi0gICAgICAgICAgICBhdHRycyA9IE5vbmUKLSAgICAgICAgaWYg
a3dhcmdzOgotICAgICAgICAgICAgaWYgYXR0cnM6Ci0gICAgICAgICAgICAgICAgYXR0cnMgPSBh
dHRycy5jb3B5KCkKLSAgICAgICAgICAgICAgICBhdHRycy51cGRhdGUoa3dhcmdzKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhdHRycyA9IGt3YXJncwotICAgICAgICBzZWxm
LmF0dHJzID0gYXR0cnMKLSAgICAgICAgc2VsZi50ZXh0ID0gdGV4dAotCi0gICAgZGVmIF9fc3Ry
X18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYudGV4dDoKLSAgICAgICAgICAgIHJldHVybiBzZWxm
LnRleHQKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiJXN8JXMiICUgKHNlbGYu
bmFtZSwgc2VsZi5hdHRycykKLQotICAgIGRlZiBzZWFyY2hUYWcoc2VsZiwgbWFya3VwTmFtZT1O
b25lLCBtYXJrdXBBdHRycz17fSk6Ci0gICAgICAgIGZvdW5kID0gTm9uZQotICAgICAgICBtYXJr
dXAgPSBOb25lCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobWFya3VwTmFtZSwgVGFnKToKLSAgICAg
ICAgICAgIG1hcmt1cCA9IG1hcmt1cE5hbWUKLSAgICAgICAgICAgIG1hcmt1cEF0dHJzID0gbWFy
a3VwCi0gICAgICAgIGNhbGxGdW5jdGlvbldpdGhUYWdEYXRhID0gY2FsbGFibGUoc2VsZi5uYW1l
KSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZSht
YXJrdXBOYW1lLCBUYWcpCi0KLSAgICAgICAgaWYgKG5vdCBzZWxmLm5hbWUpIFwKLSAgICAgICAg
ICAgICAgIG9yIGNhbGxGdW5jdGlvbldpdGhUYWdEYXRhIFwKLSAgICAgICAgICAgICAgIG9yICht
YXJrdXAgYW5kIHNlbGYuX21hdGNoZXMobWFya3VwLCBzZWxmLm5hbWUpKSBcCi0gICAgICAgICAg
ICAgICBvciAobm90IG1hcmt1cCBhbmQgc2VsZi5fbWF0Y2hlcyhtYXJrdXBOYW1lLCBzZWxmLm5h
bWUpKToKLSAgICAgICAgICAgIGlmIGNhbGxGdW5jdGlvbldpdGhUYWdEYXRhOgotICAgICAgICAg
ICAgICAgIG1hdGNoID0gc2VsZi5uYW1lKG1hcmt1cE5hbWUsIG1hcmt1cEF0dHJzKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtYXRjaCA9IFRydWUKLSAgICAgICAgICAgICAg
ICBtYXJrdXBBdHRyTWFwID0gTm9uZQotICAgICAgICAgICAgICAgIGZvciBhdHRyLCBtYXRjaEFn
YWluc3QgaW4gc2VsZi5hdHRycy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qg
bWFya3VwQXR0ck1hcDoKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKG1hcmt1
cEF0dHJzLCAnZ2V0Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFya3VwQXR0ck1h
cCA9IG1hcmt1cEF0dHJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXJrdXBBdHRyTWFwID0ge30KLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3Igayx2IGluIG1hcmt1cEF0dHJzOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtYXJrdXBBdHRyTWFwW2tdID0gdgotICAgICAgICAgICAgICAgICAgICBhdHRy
VmFsdWUgPSBtYXJrdXBBdHRyTWFwLmdldChhdHRyKQotICAgICAgICAgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fbWF0Y2hlcyhhdHRyVmFsdWUsIG1hdGNoQWdhaW5zdCk6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBtYXRjaCA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAgaWYgbWFya3VwOgotICAgICAg
ICAgICAgICAgICAgICBmb3VuZCA9IG1hcmt1cAotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIGZvdW5kID0gbWFya3VwTmFtZQotICAgICAgICByZXR1cm4gZm91bmQK
LQotICAgIGRlZiBzZWFyY2goc2VsZiwgbWFya3VwKToKLSAgICAgICAgI3ByaW50ICdsb29raW5n
IGZvciAlcyBpbiAlcycgJSAoc2VsZiwgbWFya3VwKQotICAgICAgICBmb3VuZCA9IE5vbmUKLSAg
ICAgICAgIyBJZiBnaXZlbiBhIGxpc3Qgb2YgaXRlbXMsIHNjYW4gaXQgZm9yIGEgdGV4dCBlbGVt
ZW50IHRoYXQKLSAgICAgICAgIyBtYXRjaGVzLgotICAgICAgICBpZiBoYXNhdHRyKG1hcmt1cCwg
Il9faXRlcl9fIikgXAotICAgICAgICAgICAgICAgIGFuZCBub3QgaXNpbnN0YW5jZShtYXJrdXAs
IFRhZyk6Ci0gICAgICAgICAgICBmb3IgZWxlbWVudCBpbiBtYXJrdXA6Ci0gICAgICAgICAgICAg
ICAgaWYgaXNpbnN0YW5jZShlbGVtZW50LCBOYXZpZ2FibGVTdHJpbmcpIFwKLSAgICAgICAgICAg
ICAgICAgICAgICAgYW5kIHNlbGYuc2VhcmNoKGVsZW1lbnQpOgotICAgICAgICAgICAgICAgICAg
ICBmb3VuZCA9IGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBJ
ZiBpdCdzIGEgVGFnLCBtYWtlIHN1cmUgaXRzIG5hbWUgb3IgYXR0cmlidXRlcyBtYXRjaC4KLSAg
ICAgICAgIyBEb24ndCBib3RoZXIgd2l0aCBUYWdzIGlmIHdlJ3JlIHNlYXJjaGluZyBmb3IgdGV4
dC4KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1hcmt1cCwgVGFnKToKLSAgICAgICAgICAgIGlm
IG5vdCBzZWxmLnRleHQ6Ci0gICAgICAgICAgICAgICAgZm91bmQgPSBzZWxmLnNlYXJjaFRhZyht
YXJrdXApCi0gICAgICAgICMgSWYgaXQncyB0ZXh0LCBtYWtlIHN1cmUgdGhlIHRleHQgbWF0Y2hl
cy4KLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKG1hcmt1cCwgTmF2aWdhYmxlU3RyaW5nKSBvciBc
Ci0gICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UobWFya3VwLCBiYXNlc3RyaW5nKToKLSAgICAg
ICAgICAgIGlmIHNlbGYuX21hdGNoZXMobWFya3VwLCBzZWxmLnRleHQpOgotICAgICAgICAgICAg
ICAgIGZvdW5kID0gbWFya3VwCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24sICJJIGRvbid0IGtub3cgaG93IHRvIG1hdGNoIGFnYWluc3QgYSAlcyIgXAotICAgICAg
ICAgICAgICAgICAgJSBtYXJrdXAuX19jbGFzc19fCi0gICAgICAgIHJldHVybiBmb3VuZAotCi0g
ICAgZGVmIF9tYXRjaGVzKHNlbGYsIG1hcmt1cCwgbWF0Y2hBZ2FpbnN0KToKLSAgICAgICAgI3By
aW50ICJNYXRjaGluZyAlcyBhZ2FpbnN0ICVzIiAlIChtYXJrdXAsIG1hdGNoQWdhaW5zdCkKLSAg
ICAgICAgcmVzdWx0ID0gRmFsc2UKLSAgICAgICAgaWYgbWF0Y2hBZ2FpbnN0IGlzIFRydWU6Ci0g
ICAgICAgICAgICByZXN1bHQgPSBtYXJrdXAgaXMgbm90IE5vbmUKLSAgICAgICAgZWxpZiBjYWxs
YWJsZShtYXRjaEFnYWluc3QpOgotICAgICAgICAgICAgcmVzdWx0ID0gbWF0Y2hBZ2FpbnN0KG1h
cmt1cCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICNDdXN0b20gbWF0Y2ggbWV0aG9kcyB0
YWtlIHRoZSB0YWcgYXMgYW4gYXJndW1lbnQsIGJ1dCBhbGwKLSAgICAgICAgICAgICNvdGhlciB3
YXlzIG9mIG1hdGNoaW5nIG1hdGNoIHRoZSB0YWcgbmFtZSBhcyBhIHN0cmluZy4KLSAgICAgICAg
ICAgIGlmIGlzaW5zdGFuY2UobWFya3VwLCBUYWcpOgotICAgICAgICAgICAgICAgIG1hcmt1cCA9
IG1hcmt1cC5uYW1lCi0gICAgICAgICAgICBpZiBtYXJrdXAgYW5kIG5vdCBpc2luc3RhbmNlKG1h
cmt1cCwgYmFzZXN0cmluZyk6Ci0gICAgICAgICAgICAgICAgbWFya3VwID0gdW5pY29kZShtYXJr
dXApCi0gICAgICAgICAgICAjTm93IHdlIGtub3cgdGhhdCBjaHVuayBpcyBlaXRoZXIgYSBzdHJp
bmcsIG9yIE5vbmUuCi0gICAgICAgICAgICBpZiBoYXNhdHRyKG1hdGNoQWdhaW5zdCwgJ21hdGNo
Jyk6Ci0gICAgICAgICAgICAgICAgIyBJdCdzIGEgcmVnZXhwIG9iamVjdC4KLSAgICAgICAgICAg
ICAgICByZXN1bHQgPSBtYXJrdXAgYW5kIG1hdGNoQWdhaW5zdC5zZWFyY2gobWFya3VwKQotICAg
ICAgICAgICAgZWxpZiBoYXNhdHRyKG1hdGNoQWdhaW5zdCwgJ19faXRlcl9fJyk6ICMgbGlzdC1s
aWtlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gbWFya3VwIGluIG1hdGNoQWdhaW5zdAotICAg
ICAgICAgICAgZWxpZiBoYXNhdHRyKG1hdGNoQWdhaW5zdCwgJ2l0ZW1zJyk6Ci0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gbWFya3VwLmhhc19rZXkobWF0Y2hBZ2FpbnN0KQotICAgICAgICAgICAg
ZWxpZiBtYXRjaEFnYWluc3QgYW5kIGlzaW5zdGFuY2UobWFya3VwLCBiYXNlc3RyaW5nKToKLSAg
ICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmt1cCwgdW5pY29kZSk6Ci0gICAgICAgICAg
ICAgICAgICAgIG1hdGNoQWdhaW5zdCA9IHVuaWNvZGUobWF0Y2hBZ2FpbnN0KQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1hdGNoQWdhaW5zdCA9IHN0cihtYXRj
aEFnYWluc3QpCi0KLSAgICAgICAgICAgIGlmIG5vdCByZXN1bHQ6Ci0gICAgICAgICAgICAgICAg
cmVzdWx0ID0gbWF0Y2hBZ2FpbnN0ID09IG1hcmt1cAotICAgICAgICByZXR1cm4gcmVzdWx0Ci0K
LWNsYXNzIFJlc3VsdFNldChsaXN0KToKLSAgICAiIiJBIFJlc3VsdFNldCBpcyBqdXN0IGEgbGlz
dCB0aGF0IGtlZXBzIHRyYWNrIG9mIHRoZSBTb3VwU3RyYWluZXIKLSAgICB0aGF0IGNyZWF0ZWQg
aXQuIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgIGxpc3QuX19p
bml0X18oW10pCi0gICAgICAgIHNlbGYuc291cmNlID0gc291cmNlCi0KLSMgTm93LCBzb21lIGhl
bHBlciBmdW5jdGlvbnMuCi0KLWRlZiBidWlsZFRhZ01hcChkZWZhdWx0LCAqYXJncyk6Ci0gICAg
IiIiVHVybnMgYSBsaXN0IG9mIG1hcHMsIGxpc3RzLCBvciBzY2FsYXJzIGludG8gYSBzaW5nbGUg
bWFwLgotICAgIFVzZWQgdG8gYnVpbGQgdGhlIFNFTEZfQ0xPU0lOR19UQUdTLCBORVNUQUJMRV9U
QUdTLCBhbmQKLSAgICBORVNUSU5HX1JFU0VUX1RBR1MgbWFwcyBvdXQgb2YgbGlzdHMgYW5kIHBh
cnRpYWwgbWFwcy4iIiIKLSAgICBidWlsdCA9IHt9Ci0gICAgZm9yIHBvcnRpb24gaW4gYXJnczoK
LSAgICAgICAgaWYgaGFzYXR0cihwb3J0aW9uLCAnaXRlbXMnKToKLSAgICAgICAgICAgICNJdCdz
IGEgbWFwLiBNZXJnZSBpdC4KLSAgICAgICAgICAgIGZvciBrLHYgaW4gcG9ydGlvbi5pdGVtcygp
OgotICAgICAgICAgICAgICAgIGJ1aWx0W2tdID0gdgotICAgICAgICBlbGlmIGhhc2F0dHIocG9y
dGlvbiwgJ19faXRlcl9fJyk6ICMgaXMgYSBsaXN0Ci0gICAgICAgICAgICAjSXQncyBhIGxpc3Qu
IE1hcCBlYWNoIGl0ZW0gdG8gdGhlIGRlZmF1bHQuCi0gICAgICAgICAgICBmb3IgayBpbiBwb3J0
aW9uOgotICAgICAgICAgICAgICAgIGJ1aWx0W2tdID0gZGVmYXVsdAotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgI0l0J3MgYSBzY2FsYXIuIE1hcCBpdCB0byB0aGUgZGVmYXVsdC4KLSAgICAg
ICAgICAgIGJ1aWx0W3BvcnRpb25dID0gZGVmYXVsdAotICAgIHJldHVybiBidWlsdAotCi0jIE5v
dywgdGhlIHBhcnNlciBjbGFzc2VzLgotCi1jbGFzcyBCZWF1dGlmdWxTdG9uZVNvdXAoVGFnLCBT
R01MUGFyc2VyKToKLQotICAgICIiIlRoaXMgY2xhc3MgY29udGFpbnMgdGhlIGJhc2ljIHBhcnNl
ciBhbmQgc2VhcmNoIGNvZGUuIEl0IGRlZmluZXMKLSAgICBhIHBhcnNlciB0aGF0IGtub3dzIG5v
dGhpbmcgYWJvdXQgdGFnIGJlaGF2aW9yIGV4Y2VwdCBmb3IgdGhlCi0gICAgZm9sbG93aW5nOgot
Ci0gICAgICBZb3UgY2FuJ3QgY2xvc2UgYSB0YWcgd2l0aG91dCBjbG9zaW5nIGFsbCB0aGUgdGFn
cyBpdCBlbmNsb3Nlcy4KLSAgICAgIFRoYXQgaXMsICI8Zm9vPjxiYXI+PC9mb28+IiBhY3R1YWxs
eSBtZWFucwotICAgICAgIjxmb28+PGJhcj48L2Jhcj48L2Zvbz4iLgotCi0gICAgW0Fub3RoZXIg
cG9zc2libGUgZXhwbGFuYXRpb24gaXMgIjxmb28+PGJhciAvPjwvZm9vPiIsIGJ1dCBzaW5jZQot
ICAgIHRoaXMgY2xhc3MgZGVmaW5lcyBubyBTRUxGX0NMT1NJTkdfVEFHUywgaXQgd2lsbCBuZXZl
ciB1c2UgdGhhdAotICAgIGV4cGxhbmF0aW9uLl0KLQotICAgIFRoaXMgY2xhc3MgaXMgdXNlZnVs
IGZvciBwYXJzaW5nIFhNTCBvciBtYWRlLXVwIG1hcmt1cCBsYW5ndWFnZXMsCi0gICAgb3Igd2hl
biBCZWF1dGlmdWxTb3VwIG1ha2VzIGFuIGFzc3VtcHRpb24gY291bnRlciB0byB3aGF0IHlvdSB3
ZXJlCi0gICAgZXhwZWN0aW5nLiIiIgotCi0gICAgU0VMRl9DTE9TSU5HX1RBR1MgPSB7fQotICAg
IE5FU1RBQkxFX1RBR1MgPSB7fQotICAgIFJFU0VUX05FU1RJTkdfVEFHUyA9IHt9Ci0gICAgUVVP
VEVfVEFHUyA9IHt9Ci0gICAgUFJFU0VSVkVfV0hJVEVTUEFDRV9UQUdTID0gW10KLQotICAgIE1B
UktVUF9NQVNTQUdFID0gWyhyZS5jb21waWxlKCcoPFtePD5dKikvPicpLAotICAgICAgICAgICAg
ICAgICAgICAgICBsYW1iZGEgeDogeC5ncm91cCgxKSArICcgLz4nKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAocmUuY29tcGlsZSgnPCFccysoW148Pl0qKT4nKSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgbGFtYmRhIHg6ICc8IScgKyB4Lmdyb3VwKDEpICsgJz4nKQotICAgICAgICAgICAgICAg
ICAgICAgIF0KLQotICAgIFJPT1RfVEFHX05BTUUgPSB1J1tkb2N1bWVudF0nCi0KLSAgICBIVE1M
X0VOVElUSUVTID0gImh0bWwiCi0gICAgWE1MX0VOVElUSUVTID0gInhtbCIKLSAgICBYSFRNTF9F
TlRJVElFUyA9ICJ4aHRtbCIKLSAgICAjIFRPRE86IFRoaXMgb25seSBleGlzdHMgZm9yIGJhY2t3
YXJkcy1jb21wYXRpYmlsaXR5Ci0gICAgQUxMX0VOVElUSUVTID0gWEhUTUxfRU5USVRJRVMKLQot
ICAgICMgVXNlZCB3aGVuIGRldGVybWluaW5nIHdoZXRoZXIgYSB0ZXh0IG5vZGUgaXMgYWxsIHdo
aXRlc3BhY2UgYW5kCi0gICAgIyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIHNpbmdsZSBzcGFjZS4g
QSB0ZXh0IG5vZGUgdGhhdCBjb250YWlucwotICAgICMgZmFuY3kgVW5pY29kZSBzcGFjZXMgKHVz
dWFsbHkgbm9uLWJyZWFraW5nKSBzaG91bGQgYmUgbGVmdAotICAgICMgYWxvbmUuCi0gICAgU1RS
SVBfQVNDSUlfU1BBQ0VTID0geyA5OiBOb25lLCAxMDogTm9uZSwgMTI6IE5vbmUsIDEzOiBOb25l
LCAzMjogTm9uZSwgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hcmt1cD0iIiwgcGFyc2VP
bmx5VGhlc2U9Tm9uZSwgZnJvbUVuY29kaW5nPU5vbmUsCi0gICAgICAgICAgICAgICAgIG1hcmt1
cE1hc3NhZ2U9VHJ1ZSwgc21hcnRRdW90ZXNUbz1YTUxfRU5USVRJRVMsCi0gICAgICAgICAgICAg
ICAgIGNvbnZlcnRFbnRpdGllcz1Ob25lLCBzZWxmQ2xvc2luZ1RhZ3M9Tm9uZSwgaXNIVE1MPUZh
bHNlKToKLSAgICAgICAgIiIiVGhlIFNvdXAgb2JqZWN0IGlzIGluaXRpYWxpemVkIGFzIHRoZSAn
cm9vdCB0YWcnLCBhbmQgdGhlCi0gICAgICAgIHByb3ZpZGVkIG1hcmt1cCAod2hpY2ggY2FuIGJl
IGEgc3RyaW5nIG9yIGEgZmlsZS1saWtlIG9iamVjdCkKLSAgICAgICAgaXMgZmVkIGludG8gdGhl
IHVuZGVybHlpbmcgcGFyc2VyLgotCi0gICAgICAgIHNnbWxsaWIgd2lsbCBwcm9jZXNzIG1vc3Qg
YmFkIEhUTUwsIGFuZCB0aGUgQmVhdXRpZnVsU291cAotICAgICAgICBjbGFzcyBoYXMgc29tZSB0
cmlja3MgZm9yIGRlYWxpbmcgd2l0aCBzb21lIEhUTUwgdGhhdCBraWxscwotICAgICAgICBzZ21s
bGliLCBidXQgQmVhdXRpZnVsIFNvdXAgY2FuIG5vbmV0aGVsZXNzIGNob2tlIG9yIGxvc2UgZGF0
YQotICAgICAgICBpZiB5b3VyIGRhdGEgdXNlcyBzZWxmLWNsb3NpbmcgdGFncyBvciBkZWNsYXJh
dGlvbnMKLSAgICAgICAgaW5jb3JyZWN0bHkuCi0KLSAgICAgICAgQnkgZGVmYXVsdCwgQmVhdXRp
ZnVsIFNvdXAgdXNlcyByZWdleGVzIHRvIHNhbml0aXplIGlucHV0LAotICAgICAgICBhdm9pZGlu
ZyB0aGUgdmFzdCBtYWpvcml0eSBvZiB0aGVzZSBwcm9ibGVtcy4gSWYgdGhlIHByb2JsZW1zCi0g
ICAgICAgIGRvbid0IGFwcGx5IHRvIHlvdSwgcGFzcyBpbiBGYWxzZSBmb3IgbWFya3VwTWFzc2Fn
ZSwgYW5kCi0gICAgICAgIHlvdSdsbCBnZXQgYmV0dGVyIHBlcmZvcm1hbmNlLgotCi0gICAgICAg
IFRoZSBkZWZhdWx0IHBhcnNlciBtYXNzYWdlIHRlY2huaXF1ZXMgZml4IHRoZSB0d28gbW9zdCBj
b21tb24KLSAgICAgICAgaW5zdGFuY2VzIG9mIGludmFsaWQgSFRNTCB0aGF0IGNob2tlIHNnbWxs
aWI6Ci0KLSAgICAgICAgIDxici8+IChObyBzcGFjZSBiZXR3ZWVuIG5hbWUgb2YgY2xvc2luZyB0
YWcgYW5kIHRhZyBjbG9zZSkKLSAgICAgICAgIDwhIC0tQ29tbWVudC0tPiAoRXh0cmFuZW91cyB3
aGl0ZXNwYWNlIGluIGRlY2xhcmF0aW9uKQotCi0gICAgICAgIFlvdSBjYW4gcGFzcyBpbiBhIGN1
c3RvbSBsaXN0IG9mIChSRSBvYmplY3QsIHJlcGxhY2UgbWV0aG9kKQotICAgICAgICB0dXBsZXMg
dG8gZ2V0IEJlYXV0aWZ1bCBTb3VwIHRvIHNjcnViIHlvdXIgaW5wdXQgdGhlIHdheSB5b3UKLSAg
ICAgICAgd2FudC4iIiIKLQotICAgICAgICBzZWxmLnBhcnNlT25seVRoZXNlID0gcGFyc2VPbmx5
VGhlc2UKLSAgICAgICAgc2VsZi5mcm9tRW5jb2RpbmcgPSBmcm9tRW5jb2RpbmcKLSAgICAgICAg
c2VsZi5zbWFydFF1b3Rlc1RvID0gc21hcnRRdW90ZXNUbwotICAgICAgICBzZWxmLmNvbnZlcnRF
bnRpdGllcyA9IGNvbnZlcnRFbnRpdGllcwotICAgICAgICAjIFNldCB0aGUgcnVsZXMgZm9yIGhv
dyB3ZSdsbCBkZWFsIHdpdGggdGhlIGVudGl0aWVzIHdlCi0gICAgICAgICMgZW5jb3VudGVyCi0g
ICAgICAgIGlmIHNlbGYuY29udmVydEVudGl0aWVzOgotICAgICAgICAgICAgIyBJdCBkb2Vzbid0
IG1ha2Ugc2Vuc2UgdG8gY29udmVydCBlbmNvZGVkIGNoYXJhY3RlcnMgdG8KLSAgICAgICAgICAg
ICMgZW50aXRpZXMgZXZlbiB3aGlsZSB5b3UncmUgY29udmVydGluZyBlbnRpdGllcyB0byBVbmlj
b2RlLgotICAgICAgICAgICAgIyBKdXN0IGNvbnZlcnQgaXQgYWxsIHRvIFVuaWNvZGUuCi0gICAg
ICAgICAgICBzZWxmLnNtYXJ0UXVvdGVzVG8gPSBOb25lCi0gICAgICAgICAgICBpZiBjb252ZXJ0
RW50aXRpZXMgPT0gc2VsZi5IVE1MX0VOVElUSUVTOgotICAgICAgICAgICAgICAgIHNlbGYuY29u
dmVydFhNTEVudGl0aWVzID0gRmFsc2UKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnZlcnRIVE1M
RW50aXRpZXMgPSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5lc2NhcGVVbnJlY29nbml6ZWRF
bnRpdGllcyA9IFRydWUKLSAgICAgICAgICAgIGVsaWYgY29udmVydEVudGl0aWVzID09IHNlbGYu
WEhUTUxfRU5USVRJRVM6Ci0gICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXMg
PSBUcnVlCi0gICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVzID0gVHJ1ZQot
ICAgICAgICAgICAgICAgIHNlbGYuZXNjYXBlVW5yZWNvZ25pemVkRW50aXRpZXMgPSBGYWxzZQot
ICAgICAgICAgICAgZWxpZiBjb252ZXJ0RW50aXRpZXMgPT0gc2VsZi5YTUxfRU5USVRJRVM6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXMgPSBUcnVlCi0gICAgICAgICAg
ICAgICAgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVzID0gRmFsc2UKLSAgICAgICAgICAgICAgICBz
ZWxmLmVzY2FwZVVucmVjb2duaXplZEVudGl0aWVzID0gRmFsc2UKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlbGYuY29udmVydFhNTEVudGl0aWVzID0gRmFsc2UKLSAgICAgICAgICAgIHNl
bGYuY29udmVydEhUTUxFbnRpdGllcyA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLmVzY2FwZVVu
cmVjb2duaXplZEVudGl0aWVzID0gRmFsc2UKLQotICAgICAgICBzZWxmLmluc3RhbmNlU2VsZkNs
b3NpbmdUYWdzID0gYnVpbGRUYWdNYXAoTm9uZSwgc2VsZkNsb3NpbmdUYWdzKQotICAgICAgICBT
R01MUGFyc2VyLl9faW5pdF9fKHNlbGYpCi0KLSAgICAgICAgaWYgaGFzYXR0cihtYXJrdXAsICdy
ZWFkJyk6ICAgICAgICAjIEl0J3MgYSBmaWxlLXR5cGUgb2JqZWN0LgotICAgICAgICAgICAgbWFy
a3VwID0gbWFya3VwLnJlYWQoKQotICAgICAgICBzZWxmLm1hcmt1cCA9IG1hcmt1cAotICAgICAg
ICBzZWxmLm1hcmt1cE1hc3NhZ2UgPSBtYXJrdXBNYXNzYWdlCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYuX2ZlZWQoaXNIVE1MPWlzSFRNTCkKLSAgICAgICAgZXhjZXB0IFN0b3BQYXJz
aW5nOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLm1hcmt1cCA9IE5vbmUgICAgICAg
ICAgICAgICAgICMgVGhlIG1hcmt1cCBjYW4gbm93IGJlIEdDZWQKLQotICAgIGRlZiBjb252ZXJ0
X2NoYXJyZWYoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlRoaXMgbWV0aG9kIGZpeGVzIGEgYnVn
IGluIFB5dGhvbidzIFNHTUxQYXJzZXIuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG4g
PSBpbnQobmFtZSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICByZXR1
cm4KLSAgICAgICAgaWYgbm90IDAgPD0gbiA8PSAxMjcgOiAjIEFTQ0lJIGVuZHMgYXQgMTI3LCBu
b3QgMjU1Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF9j
b2RlcG9pbnQobikKLQotICAgIGRlZiBfZmVlZChzZWxmLCBpbkRvY3VtZW50RW5jb2Rpbmc9Tm9u
ZSwgaXNIVE1MPUZhbHNlKToKLSAgICAgICAgIyBDb252ZXJ0IHRoZSBkb2N1bWVudCB0byBVbmlj
b2RlLgotICAgICAgICBtYXJrdXAgPSBzZWxmLm1hcmt1cAotICAgICAgICBpZiBpc2luc3RhbmNl
KG1hcmt1cCwgdW5pY29kZSk6Ci0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnb3Jp
Z2luYWxFbmNvZGluZycpOgotICAgICAgICAgICAgICAgIHNlbGYub3JpZ2luYWxFbmNvZGluZyA9
IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRhbW1pdCA9IFVuaWNvZGVEYW1taXRc
Ci0gICAgICAgICAgICAgICAgICAgICAobWFya3VwLCBbc2VsZi5mcm9tRW5jb2RpbmcsIGluRG9j
dW1lbnRFbmNvZGluZ10sCi0gICAgICAgICAgICAgICAgICAgICAgc21hcnRRdW90ZXNUbz1zZWxm
LnNtYXJ0UXVvdGVzVG8sIGlzSFRNTD1pc0hUTUwpCi0gICAgICAgICAgICBtYXJrdXAgPSBkYW1t
aXQudW5pY29kZQotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29kaW5nID0gZGFtbWl0Lm9y
aWdpbmFsRW5jb2RpbmcKLSAgICAgICAgICAgIHNlbGYuZGVjbGFyZWRIVE1MRW5jb2RpbmcgPSBk
YW1taXQuZGVjbGFyZWRIVE1MRW5jb2RpbmcKLSAgICAgICAgaWYgbWFya3VwOgotICAgICAgICAg
ICAgaWYgc2VsZi5tYXJrdXBNYXNzYWdlOgotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRy
KHNlbGYubWFya3VwTWFzc2FnZSwgIl9faXRlcl9fIik6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYubWFya3VwTWFzc2FnZSA9IHNlbGYuTUFSS1VQX01BU1NBR0UKLSAgICAgICAgICAgICAgICBm
b3IgZml4LCBtIGluIHNlbGYubWFya3VwTWFzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgbWFy
a3VwID0gZml4LnN1YihtLCBtYXJrdXApCi0gICAgICAgICAgICAgICAgIyBUT0RPOiBXZSBnZXQg
cmlkIG9mIG1hcmt1cE1hc3NhZ2Ugc28gdGhhdCB0aGUKLSAgICAgICAgICAgICAgICAjIHNvdXAg
b2JqZWN0IGNhbiBiZSBkZWVwY29waWVkIGxhdGVyIG9uLiBTb21lCi0gICAgICAgICAgICAgICAg
IyBQeXRob24gaW5zdGFsbGF0aW9ucyBjYW4ndCBjb3B5IHJlZ2V4ZXMuIElmIGFueW9uZQotICAg
ICAgICAgICAgICAgICMgd2FzIHJlbHlpbmcgb24gdGhlIGV4aXN0ZW5jZSBvZiBtYXJrdXBNYXNz
YWdlLCB0aGlzCi0gICAgICAgICAgICAgICAgIyBtaWdodCBjYXVzZSBwcm9ibGVtcy4KLSAgICAg
ICAgICAgICAgICBkZWwoc2VsZi5tYXJrdXBNYXNzYWdlKQotICAgICAgICBzZWxmLnJlc2V0KCkK
LQotICAgICAgICBTR01MUGFyc2VyLmZlZWQoc2VsZiwgbWFya3VwKQotICAgICAgICAjIENsb3Nl
IG91dCBhbnkgdW5maW5pc2hlZCBzdHJpbmdzIGFuZCBjbG9zZSBhbGwgdGhlIG9wZW4gdGFncy4K
LSAgICAgICAgc2VsZi5lbmREYXRhKCkKLSAgICAgICAgd2hpbGUgc2VsZi5jdXJyZW50VGFnLm5h
bWUgIT0gc2VsZi5ST09UX1RBR19OQU1FOgotICAgICAgICAgICAgc2VsZi5wb3BUYWcoKQotCi0g
ICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG1ldGhvZE5hbWUpOgotICAgICAgICAiIiJUaGlzIG1l
dGhvZCByb3V0ZXMgbWV0aG9kIGNhbGwgcmVxdWVzdHMgdG8gZWl0aGVyIHRoZSBTR01MUGFyc2Vy
Ci0gICAgICAgIHN1cGVyY2xhc3Mgb3IgdGhlIFRhZyBzdXBlcmNsYXNzLCBkZXBlbmRpbmcgb24g
dGhlIG1ldGhvZCBuYW1lLiIiIgotICAgICAgICAjcHJpbnQgIl9fZ2V0YXR0cl9fIGNhbGxlZCBv
biAlcy4lcyIgJSAoc2VsZi5fX2NsYXNzX18sIG1ldGhvZE5hbWUpCi0KLSAgICAgICAgaWYgbWV0
aG9kTmFtZS5zdGFydHN3aXRoKCdzdGFydF8nKSBvciBtZXRob2ROYW1lLnN0YXJ0c3dpdGgoJ2Vu
ZF8nKSBcCi0gICAgICAgICAgICAgICBvciBtZXRob2ROYW1lLnN0YXJ0c3dpdGgoJ2RvXycpOgot
ICAgICAgICAgICAgcmV0dXJuIFNHTUxQYXJzZXIuX19nZXRhdHRyX18oc2VsZiwgbWV0aG9kTmFt
ZSkKLSAgICAgICAgZWxpZiBub3QgbWV0aG9kTmFtZS5zdGFydHN3aXRoKCdfXycpOgotICAgICAg
ICAgICAgcmV0dXJuIFRhZy5fX2dldGF0dHJfXyhzZWxmLCBtZXRob2ROYW1lKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IKLQotICAgIGRlZiBpc1NlbGZD
bG9zaW5nVGFnKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJSZXR1cm5zIHRydWUgaWZmIHRoZSBn
aXZlbiBzdHJpbmcgaXMgdGhlIG5hbWUgb2YgYQotICAgICAgICBzZWxmLWNsb3NpbmcgdGFnIGFj
Y29yZGluZyB0byB0aGlzIHBhcnNlci4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuU0VMRl9DTE9T
SU5HX1RBR1MuaGFzX2tleShuYW1lKSBcCi0gICAgICAgICAgICAgICBvciBzZWxmLmluc3RhbmNl
U2VsZkNsb3NpbmdUYWdzLmhhc19rZXkobmFtZSkKLQotICAgIGRlZiByZXNldChzZWxmKToKLSAg
ICAgICAgVGFnLl9faW5pdF9fKHNlbGYsIHNlbGYsIHNlbGYuUk9PVF9UQUdfTkFNRSkKLSAgICAg
ICAgc2VsZi5oaWRkZW4gPSAxCi0gICAgICAgIFNHTUxQYXJzZXIucmVzZXQoc2VsZikKLSAgICAg
ICAgc2VsZi5jdXJyZW50RGF0YSA9IFtdCi0gICAgICAgIHNlbGYuY3VycmVudFRhZyA9IE5vbmUK
LSAgICAgICAgc2VsZi50YWdTdGFjayA9IFtdCi0gICAgICAgIHNlbGYucXVvdGVTdGFjayA9IFtd
Ci0gICAgICAgIHNlbGYucHVzaFRhZyhzZWxmKQotCi0gICAgZGVmIHBvcFRhZyhzZWxmKToKLSAg
ICAgICAgdGFnID0gc2VsZi50YWdTdGFjay5wb3AoKQotCi0gICAgICAgICNwcmludCAiUG9wIiwg
dGFnLm5hbWUKLSAgICAgICAgaWYgc2VsZi50YWdTdGFjazoKLSAgICAgICAgICAgIHNlbGYuY3Vy
cmVudFRhZyA9IHNlbGYudGFnU3RhY2tbLTFdCi0gICAgICAgIHJldHVybiBzZWxmLmN1cnJlbnRU
YWcKLQotICAgIGRlZiBwdXNoVGFnKHNlbGYsIHRhZyk6Ci0gICAgICAgICNwcmludCAiUHVzaCIs
IHRhZy5uYW1lCi0gICAgICAgIGlmIHNlbGYuY3VycmVudFRhZzoKLSAgICAgICAgICAgIHNlbGYu
Y3VycmVudFRhZy5jb250ZW50cy5hcHBlbmQodGFnKQotICAgICAgICBzZWxmLnRhZ1N0YWNrLmFw
cGVuZCh0YWcpCi0gICAgICAgIHNlbGYuY3VycmVudFRhZyA9IHNlbGYudGFnU3RhY2tbLTFdCi0K
LSAgICBkZWYgZW5kRGF0YShzZWxmLCBjb250YWluZXJDbGFzcz1OYXZpZ2FibGVTdHJpbmcpOgot
ICAgICAgICBpZiBzZWxmLmN1cnJlbnREYXRhOgotICAgICAgICAgICAgY3VycmVudERhdGEgPSB1
Jycuam9pbihzZWxmLmN1cnJlbnREYXRhKQotICAgICAgICAgICAgaWYgKGN1cnJlbnREYXRhLnRy
YW5zbGF0ZShzZWxmLlNUUklQX0FTQ0lJX1NQQUNFUykgPT0gJycgYW5kCi0gICAgICAgICAgICAg
ICAgbm90IHNldChbdGFnLm5hbWUgZm9yIHRhZyBpbiBzZWxmLnRhZ1N0YWNrXSkuaW50ZXJzZWN0
aW9uKAotICAgICAgICAgICAgICAgICAgICBzZWxmLlBSRVNFUlZFX1dISVRFU1BBQ0VfVEFHUykp
OgotICAgICAgICAgICAgICAgIGlmICdcbicgaW4gY3VycmVudERhdGE6Ci0gICAgICAgICAgICAg
ICAgICAgIGN1cnJlbnREYXRhID0gJ1xuJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnREYXRhID0gJyAnCi0gICAgICAgICAgICBzZWxmLmN1cnJlbnRE
YXRhID0gW10KLSAgICAgICAgICAgIGlmIHNlbGYucGFyc2VPbmx5VGhlc2UgYW5kIGxlbihzZWxm
LnRhZ1N0YWNrKSA8PSAxIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgKG5vdCBzZWxmLnBhcnNl
T25seVRoZXNlLnRleHQgb3IgXAotICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi5wYXJzZU9u
bHlUaGVzZS5zZWFyY2goY3VycmVudERhdGEpKToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAg
ICAgICAgICAgIG8gPSBjb250YWluZXJDbGFzcyhjdXJyZW50RGF0YSkKLSAgICAgICAgICAgIG8u
c2V0dXAoc2VsZi5jdXJyZW50VGFnLCBzZWxmLnByZXZpb3VzKQotICAgICAgICAgICAgaWYgc2Vs
Zi5wcmV2aW91czoKLSAgICAgICAgICAgICAgICBzZWxmLnByZXZpb3VzLm5leHQgPSBvCi0gICAg
ICAgICAgICBzZWxmLnByZXZpb3VzID0gbwotICAgICAgICAgICAgc2VsZi5jdXJyZW50VGFnLmNv
bnRlbnRzLmFwcGVuZChvKQotCi0KLSAgICBkZWYgX3BvcFRvVGFnKHNlbGYsIG5hbWUsIGluY2x1
c2l2ZVBvcD1UcnVlKToKLSAgICAgICAgIiIiUG9wcyB0aGUgdGFnIHN0YWNrIHVwIHRvIGFuZCBp
bmNsdWRpbmcgdGhlIG1vc3QgcmVjZW50Ci0gICAgICAgIGluc3RhbmNlIG9mIHRoZSBnaXZlbiB0
YWcuIElmIGluY2x1c2l2ZVBvcCBpcyBmYWxzZSwgcG9wcyB0aGUgdGFnCi0gICAgICAgIHN0YWNr
IHVwIHRvIGJ1dCAqbm90KiBpbmNsdWRpbmcgdGhlIG1vc3QgcmVjZW50IGluc3RxYW5jZSBvZgot
ICAgICAgICB0aGUgZ2l2ZW4gdGFnLiIiIgotICAgICAgICAjcHJpbnQgIlBvcHBpbmcgdG8gJXMi
ICUgbmFtZQotICAgICAgICBpZiBuYW1lID09IHNlbGYuUk9PVF9UQUdfTkFNRToKLSAgICAgICAg
ICAgIHJldHVybgotCi0gICAgICAgIG51bVBvcHMgPSAwCi0gICAgICAgIG1vc3RSZWNlbnRUYWcg
PSBOb25lCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihzZWxmLnRhZ1N0YWNrKS0xLCAwLCAt
MSk6Ci0gICAgICAgICAgICBpZiBuYW1lID09IHNlbGYudGFnU3RhY2tbaV0ubmFtZToKLSAgICAg
ICAgICAgICAgICBudW1Qb3BzID0gbGVuKHNlbGYudGFnU3RhY2spLWkKLSAgICAgICAgICAgICAg
ICBicmVhawotICAgICAgICBpZiBub3QgaW5jbHVzaXZlUG9wOgotICAgICAgICAgICAgbnVtUG9w
cyA9IG51bVBvcHMgLSAxCi0KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbnVtUG9wcyk6Ci0g
ICAgICAgICAgICBtb3N0UmVjZW50VGFnID0gc2VsZi5wb3BUYWcoKQotICAgICAgICByZXR1cm4g
bW9zdFJlY2VudFRhZwotCi0gICAgZGVmIF9zbWFydFBvcChzZWxmLCBuYW1lKToKLQotICAgICAg
ICAiIiJXZSBuZWVkIHRvIHBvcCB1cCB0byB0aGUgcHJldmlvdXMgdGFnIG9mIHRoaXMgdHlwZSwg
dW5sZXNzCi0gICAgICAgIG9uZSBvZiB0aGlzIHRhZydzIG5lc3RpbmcgcmVzZXQgdHJpZ2dlcnMg
Y29tZXMgYmV0d2VlbiB0aGlzCi0gICAgICAgIHRhZyBhbmQgdGhlIHByZXZpb3VzIHRhZyBvZiB0
aGlzIHR5cGUsIE9SIHVubGVzcyB0aGlzIHRhZyBpcyBhCi0gICAgICAgIGdlbmVyaWMgbmVzdGlu
ZyB0cmlnZ2VyIGFuZCBhbm90aGVyIGdlbmVyaWMgbmVzdGluZyB0cmlnZ2VyCi0gICAgICAgIGNv
bWVzIGJldHdlZW4gdGhpcyB0YWcgYW5kIHRoZSBwcmV2aW91cyB0YWcgb2YgdGhpcyB0eXBlLgot
Ci0gICAgICAgIEV4YW1wbGVzOgotICAgICAgICAgPHA+Rm9vPGI+QmFyICo8cD4qIHNob3VsZCBw
b3AgdG8gJ3AnLCBub3QgJ2InLgotICAgICAgICAgPHA+Rm9vPHRhYmxlPkJhciAqPHA+KiBzaG91
bGQgcG9wIHRvICd0YWJsZScsIG5vdCAncCcuCi0gICAgICAgICA8cD5Gb288dGFibGU+PHRyPkJh
ciAqPHA+KiBzaG91bGQgcG9wIHRvICd0cicsIG5vdCAncCcuCi0KLSAgICAgICAgIDxsaT48dWw+
PGxpPiAqPGxpPiogc2hvdWxkIHBvcCB0byAndWwnLCBub3QgdGhlIGZpcnN0ICdsaScuCi0gICAg
ICAgICA8dHI+PHRhYmxlPjx0cj4gKjx0cj4qIHNob3VsZCBwb3AgdG8gJ3RhYmxlJywgbm90IHRo
ZSBmaXJzdCAndHInCi0gICAgICAgICA8dGQ+PHRyPjx0ZD4gKjx0ZD4qIHNob3VsZCBwb3AgdG8g
J3RyJywgbm90IHRoZSBmaXJzdCAndGQnCi0gICAgICAgICIiIgotCi0gICAgICAgIG5lc3RpbmdS
ZXNldFRyaWdnZXJzID0gc2VsZi5ORVNUQUJMRV9UQUdTLmdldChuYW1lKQotICAgICAgICBpc05l
c3RhYmxlID0gbmVzdGluZ1Jlc2V0VHJpZ2dlcnMgIT0gTm9uZQotICAgICAgICBpc1Jlc2V0TmVz
dGluZyA9IHNlbGYuUkVTRVRfTkVTVElOR19UQUdTLmhhc19rZXkobmFtZSkKLSAgICAgICAgcG9w
VG8gPSBOb25lCi0gICAgICAgIGluY2x1c2l2ZSA9IFRydWUKLSAgICAgICAgZm9yIGkgaW4gcmFu
Z2UobGVuKHNlbGYudGFnU3RhY2spLTEsIDAsIC0xKToKLSAgICAgICAgICAgIHAgPSBzZWxmLnRh
Z1N0YWNrW2ldCi0gICAgICAgICAgICBpZiAobm90IHAgb3IgcC5uYW1lID09IG5hbWUpIGFuZCBu
b3QgaXNOZXN0YWJsZToKLSAgICAgICAgICAgICAgICAjTm9uLW5lc3RhYmxlIHRhZ3MgZ2V0IHBv
cHBlZCB0byB0aGUgdG9wIG9yIHRvIHRoZWlyCi0gICAgICAgICAgICAgICAgI2xhc3Qgb2NjdXJh
bmNlLgotICAgICAgICAgICAgICAgIHBvcFRvID0gbmFtZQotICAgICAgICAgICAgICAgIGJyZWFr
Ci0gICAgICAgICAgICBpZiAobmVzdGluZ1Jlc2V0VHJpZ2dlcnMgaXMgbm90IE5vbmUKLSAgICAg
ICAgICAgICAgICBhbmQgcC5uYW1lIGluIG5lc3RpbmdSZXNldFRyaWdnZXJzKSBcCi0gICAgICAg
ICAgICAgICAgb3IgKG5lc3RpbmdSZXNldFRyaWdnZXJzIGlzIE5vbmUgYW5kIGlzUmVzZXROZXN0
aW5nCi0gICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLlJFU0VUX05FU1RJTkdfVEFHUy5oYXNf
a2V5KHAubmFtZSkpOgotCi0gICAgICAgICAgICAgICAgI0lmIHdlIGVuY291bnRlciBvbmUgb2Yg
dGhlIG5lc3RpbmcgcmVzZXQgdHJpZ2dlcnMKLSAgICAgICAgICAgICAgICAjcGVjdWxpYXIgdG8g
dGhpcyB0YWcsIG9yIHdlIGVuY291bnRlciBhbm90aGVyIHRhZwotICAgICAgICAgICAgICAgICN0
aGF0IGNhdXNlcyBuZXN0aW5nIHRvIHJlc2V0LCBwb3AgdXAgdG8gYnV0IG5vdAotICAgICAgICAg
ICAgICAgICNpbmNsdWRpbmcgdGhhdCB0YWcuCi0gICAgICAgICAgICAgICAgcG9wVG8gPSBwLm5h
bWUKLSAgICAgICAgICAgICAgICBpbmNsdXNpdmUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGJy
ZWFrCi0gICAgICAgICAgICBwID0gcC5wYXJlbnQKLSAgICAgICAgaWYgcG9wVG86Ci0gICAgICAg
ICAgICBzZWxmLl9wb3BUb1RhZyhwb3BUbywgaW5jbHVzaXZlKQotCi0gICAgZGVmIHVua25vd25f
c3RhcnR0YWcoc2VsZiwgbmFtZSwgYXR0cnMsIHNlbGZDbG9zaW5nPTApOgotICAgICAgICAjcHJp
bnQgIlN0YXJ0IHRhZyAlczogJXMiICUgKG5hbWUsIGF0dHJzKQotICAgICAgICBpZiBzZWxmLnF1
b3RlU3RhY2s6Ci0gICAgICAgICAgICAjVGhpcyBpcyBub3QgYSByZWFsIHRhZy4KLSAgICAgICAg
ICAgICNwcmludCAiPCVzPiBpcyBub3QgcmVhbCEiICUgbmFtZQotICAgICAgICAgICAgYXR0cnMg
PSAnJy5qb2luKFsnICVzPSIlcyInICUgKHgsIHkpIGZvciB4LCB5IGluIGF0dHJzXSkKLSAgICAg
ICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoJzwlcyVzPicgJSAobmFtZSwgYXR0cnMpKQotICAgICAg
ICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYuZW5kRGF0YSgpCi0KLSAgICAgICAgaWYgbm90IHNl
bGYuaXNTZWxmQ2xvc2luZ1RhZyhuYW1lKSBhbmQgbm90IHNlbGZDbG9zaW5nOgotICAgICAgICAg
ICAgc2VsZi5fc21hcnRQb3AobmFtZSkKLQotICAgICAgICBpZiBzZWxmLnBhcnNlT25seVRoZXNl
IGFuZCBsZW4oc2VsZi50YWdTdGFjaykgPD0gMSBcCi0gICAgICAgICAgICAgICBhbmQgKHNlbGYu
cGFyc2VPbmx5VGhlc2UudGV4dCBvciBub3Qgc2VsZi5wYXJzZU9ubHlUaGVzZS5zZWFyY2hUYWco
bmFtZSwgYXR0cnMpKToKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHRhZyA9IFRhZyhz
ZWxmLCBuYW1lLCBhdHRycywgc2VsZi5jdXJyZW50VGFnLCBzZWxmLnByZXZpb3VzKQotICAgICAg
ICBpZiBzZWxmLnByZXZpb3VzOgotICAgICAgICAgICAgc2VsZi5wcmV2aW91cy5uZXh0ID0gdGFn
Ci0gICAgICAgIHNlbGYucHJldmlvdXMgPSB0YWcKLSAgICAgICAgc2VsZi5wdXNoVGFnKHRhZykK
LSAgICAgICAgaWYgc2VsZkNsb3Npbmcgb3Igc2VsZi5pc1NlbGZDbG9zaW5nVGFnKG5hbWUpOgot
ICAgICAgICAgICAgc2VsZi5wb3BUYWcoKQotICAgICAgICBpZiBuYW1lIGluIHNlbGYuUVVPVEVf
VEFHUzoKLSAgICAgICAgICAgICNwcmludCAiQmVnaW5uaW5nIHF1b3RlICglcykiICUgbmFtZQot
ICAgICAgICAgICAgc2VsZi5xdW90ZVN0YWNrLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2Vs
Zi5saXRlcmFsID0gMQotICAgICAgICByZXR1cm4gdGFnCi0KLSAgICBkZWYgdW5rbm93bl9lbmR0
YWcoc2VsZiwgbmFtZSk6Ci0gICAgICAgICNwcmludCAiRW5kIHRhZyAlcyIgJSBuYW1lCi0gICAg
ICAgIGlmIHNlbGYucXVvdGVTdGFjayBhbmQgc2VsZi5xdW90ZVN0YWNrWy0xXSAhPSBuYW1lOgot
ICAgICAgICAgICAgI1RoaXMgaXMgbm90IGEgcmVhbCBlbmQgdGFnLgotICAgICAgICAgICAgI3By
aW50ICI8LyVzPiBpcyBub3QgcmVhbCEiICUgbmFtZQotICAgICAgICAgICAgc2VsZi5oYW5kbGVf
ZGF0YSgnPC8lcz4nICUgbmFtZSkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmVu
ZERhdGEoKQotICAgICAgICBzZWxmLl9wb3BUb1RhZyhuYW1lKQotICAgICAgICBpZiBzZWxmLnF1
b3RlU3RhY2sgYW5kIHNlbGYucXVvdGVTdGFja1stMV0gPT0gbmFtZToKLSAgICAgICAgICAgIHNl
bGYucXVvdGVTdGFjay5wb3AoKQotICAgICAgICAgICAgc2VsZi5saXRlcmFsID0gKGxlbihzZWxm
LnF1b3RlU3RhY2spID4gMCkKLQotICAgIGRlZiBoYW5kbGVfZGF0YShzZWxmLCBkYXRhKToKLSAg
ICAgICAgc2VsZi5jdXJyZW50RGF0YS5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiBfdG9TdHJpbmdT
dWJjbGFzcyhzZWxmLCB0ZXh0LCBzdWJjbGFzcyk6Ci0gICAgICAgICIiIkFkZHMgYSBjZXJ0YWlu
IHBpZWNlIG9mIHRleHQgdG8gdGhlIHRyZWUgYXMgYSBOYXZpZ2FibGVTdHJpbmcKLSAgICAgICAg
c3ViY2xhc3MuIiIiCi0gICAgICAgIHNlbGYuZW5kRGF0YSgpCi0gICAgICAgIHNlbGYuaGFuZGxl
X2RhdGEodGV4dCkKLSAgICAgICAgc2VsZi5lbmREYXRhKHN1YmNsYXNzKQotCi0gICAgZGVmIGhh
bmRsZV9waShzZWxmLCB0ZXh0KToKLSAgICAgICAgIiIiSGFuZGxlIGEgcHJvY2Vzc2luZyBpbnN0
cnVjdGlvbiBhcyBhIFByb2Nlc3NpbmdJbnN0cnVjdGlvbgotICAgICAgICBvYmplY3QsIHBvc3Np
Ymx5IG9uZSB3aXRoIGEgJVNPVVAtRU5DT0RJTkclIHNsb3QgaW50byB3aGljaCBhbgotICAgICAg
ICBlbmNvZGluZyB3aWxsIGJlIHBsdWdnZWQgbGF0ZXIuIiIiCi0gICAgICAgIGlmIHRleHRbOjNd
ID09ICJ4bWwiOgotICAgICAgICAgICAgdGV4dCA9IHUieG1sIHZlcnNpb249JzEuMCcgZW5jb2Rp
bmc9JyVTT1VQLUVOQ09ESU5HJSciCi0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3ModGV4
dCwgUHJvY2Vzc2luZ0luc3RydWN0aW9uKQotCi0gICAgZGVmIGhhbmRsZV9jb21tZW50KHNlbGYs
IHRleHQpOgotICAgICAgICAiSGFuZGxlIGNvbW1lbnRzIGFzIENvbW1lbnQgb2JqZWN0cy4iCi0g
ICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3ModGV4dCwgQ29tbWVudCkKLQotICAgIGRlZiBo
YW5kbGVfY2hhcnJlZihzZWxmLCByZWYpOgotICAgICAgICAiSGFuZGxlIGNoYXJhY3RlciByZWZl
cmVuY2VzIGFzIGRhdGEuIgotICAgICAgICBpZiBzZWxmLmNvbnZlcnRFbnRpdGllczoKLSAgICAg
ICAgICAgIGRhdGEgPSB1bmljaHIoaW50KHJlZikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBkYXRhID0gJyYjJXM7JyAlIHJlZgotICAgICAgICBzZWxmLmhhbmRsZV9kYXRhKGRhdGEpCi0K
LSAgICBkZWYgaGFuZGxlX2VudGl0eXJlZihzZWxmLCByZWYpOgotICAgICAgICAiIiJIYW5kbGUg
ZW50aXR5IHJlZmVyZW5jZXMgYXMgZGF0YSwgcG9zc2libHkgY29udmVydGluZyBrbm93bgotICAg
ICAgICBIVE1MIGFuZC9vciBYTUwgZW50aXR5IHJlZmVyZW5jZXMgdG8gdGhlIGNvcnJlc3BvbmRp
bmcgVW5pY29kZQotICAgICAgICBjaGFyYWN0ZXJzLiIiIgotICAgICAgICBkYXRhID0gTm9uZQot
ICAgICAgICBpZiBzZWxmLmNvbnZlcnRIVE1MRW50aXRpZXM6Ci0gICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgZGF0YSA9IHVuaWNocihuYW1lMmNvZGVwb2ludFtyZWZdKQotICAgICAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLQotICAgICAgICBp
ZiBub3QgZGF0YSBhbmQgc2VsZi5jb252ZXJ0WE1MRW50aXRpZXM6Ci0gICAgICAgICAgICAgICAg
ZGF0YSA9IHNlbGYuWE1MX0VOVElUSUVTX1RPX1NQRUNJQUxfQ0hBUlMuZ2V0KHJlZikKLQotICAg
ICAgICBpZiBub3QgZGF0YSBhbmQgc2VsZi5jb252ZXJ0SFRNTEVudGl0aWVzIGFuZCBcCi0gICAg
ICAgICAgICBub3Qgc2VsZi5YTUxfRU5USVRJRVNfVE9fU1BFQ0lBTF9DSEFSUy5nZXQocmVmKToK
LSAgICAgICAgICAgICAgICAjIFRPRE86IFdlJ3ZlIGdvdCBhIHByb2JsZW0gaGVyZS4gV2UncmUg
dG9sZCB0aGlzIGlzCi0gICAgICAgICAgICAgICAgIyBhbiBlbnRpdHkgcmVmZXJlbmNlLCBidXQg
aXQncyBub3QgYW4gWE1MIGVudGl0eQotICAgICAgICAgICAgICAgICMgcmVmZXJlbmNlIG9yIGFu
IEhUTUwgZW50aXR5IHJlZmVyZW5jZS4gTm9uZXRoZWxlc3MsCi0gICAgICAgICAgICAgICAgIyB0
aGUgbG9naWNhbCB0aGluZyB0byBkbyBpcyB0byBwYXNzIGl0IHRocm91Z2ggYXMgYW4KLSAgICAg
ICAgICAgICAgICAjIHVucmVjb2duaXplZCBlbnRpdHkgcmVmZXJlbmNlLgotICAgICAgICAgICAg
ICAgICMKLSAgICAgICAgICAgICAgICAjIEV4Y2VwdDogd2hlbiB0aGUgaW5wdXQgaXMgIiZjYXJv
bDsiIHRoaXMgZnVuY3Rpb24KLSAgICAgICAgICAgICAgICAjIHdpbGwgYmUgY2FsbGVkIHdpdGgg
aW5wdXQgImNhcm9sIi4gV2hlbiB0aGUgaW5wdXQgaXMKLSAgICAgICAgICAgICAgICAjICJBVCZU
IiwgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIGlucHV0Ci0gICAgICAgICAgICAg
ICAgIyAiVCIuIFdlIGhhdmUgbm8gd2F5IG9mIGtub3dpbmcgd2hldGhlciBhIHNlbWljb2xvbgot
ICAgICAgICAgICAgICAgICMgd2FzIHByZXNlbnQgb3JpZ2luYWxseSwgc28gd2UgZG9uJ3Qga25v
dyB3aGV0aGVyCi0gICAgICAgICAgICAgICAgIyB0aGlzIGlzIGFuIHVua25vd24gZW50aXR5IG9y
IGp1c3QgYSBtaXNwbGFjZWQKLSAgICAgICAgICAgICAgICAjIGFtcGVyc2FuZC4KLSAgICAgICAg
ICAgICAgICAjCi0gICAgICAgICAgICAgICAgIyBUaGUgbW9yZSBjb21tb24gY2FzZSBpcyBhIG1p
c3BsYWNlZCBhbXBlcnNhbmQsIHNvIEkKLSAgICAgICAgICAgICAgICAjIGVzY2FwZSB0aGUgYW1w
ZXJzYW5kIGFuZCBvbWl0IHRoZSB0cmFpbGluZyBzZW1pY29sb24uCi0gICAgICAgICAgICAgICAg
ZGF0YSA9ICImYW1wOyVzIiAlIHJlZgotICAgICAgICBpZiBub3QgZGF0YToKLSAgICAgICAgICAg
ICMgVGhpcyBjYXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBvbmUgYWJvdmUsIGJlY2F1c2Ugd2UK
LSAgICAgICAgICAgICMgaGF2ZW4ndCBhbHJlYWR5IGdvbmUgdGhyb3VnaCBhIHN1cHBvc2VkbHkg
Y29tcHJlaGVuc2l2ZQotICAgICAgICAgICAgIyBtYXBwaW5nIG9mIGVudGl0aWVzIHRvIFVuaWNv
ZGUgY2hhcmFjdGVycy4gV2UgbWlnaHQgbm90Ci0gICAgICAgICAgICAjIGhhdmUgZ29uZSB0aHJv
dWdoIGFueSBtYXBwaW5nIGF0IGFsbC4gU28gdGhlIGNoYW5jZXMgYXJlCi0gICAgICAgICAgICAj
IHZlcnkgaGlnaCB0aGF0IHRoaXMgaXMgYSByZWFsIGVudGl0eSwgYW5kIG5vdCBhCi0gICAgICAg
ICAgICAjIG1pc3BsYWNlZCBhbXBlcnNhbmQuCi0gICAgICAgICAgICBkYXRhID0gIiYlczsiICUg
cmVmCi0gICAgICAgIHNlbGYuaGFuZGxlX2RhdGEoZGF0YSkKLQotICAgIGRlZiBoYW5kbGVfZGVj
bChzZWxmLCBkYXRhKToKLSAgICAgICAgIkhhbmRsZSBET0NUWVBFcyBhbmQgdGhlIGxpa2UgYXMg
RGVjbGFyYXRpb24gb2JqZWN0cy4iCi0gICAgICAgIHNlbGYuX3RvU3RyaW5nU3ViY2xhc3MoZGF0
YSwgRGVjbGFyYXRpb24pCi0KLSAgICBkZWYgcGFyc2VfZGVjbGFyYXRpb24oc2VsZiwgaSk6Ci0g
ICAgICAgICIiIlRyZWF0IGEgYm9ndXMgU0dNTCBkZWNsYXJhdGlvbiBhcyByYXcgZGF0YS4gVHJl
YXQgYSBDREFUQQotICAgICAgICBkZWNsYXJhdGlvbiBhcyBhIENEYXRhIG9iamVjdC4iIiIKLSAg
ICAgICAgaiA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5yYXdkYXRhW2k6aSs5XSA9PSAnPCFbQ0RB
VEFbJzoKLSAgICAgICAgICAgICBrID0gc2VsZi5yYXdkYXRhLmZpbmQoJ11dPicsIGkpCi0gICAg
ICAgICAgICAgaWYgayA9PSAtMToKLSAgICAgICAgICAgICAgICAgayA9IGxlbihzZWxmLnJhd2Rh
dGEpCi0gICAgICAgICAgICAgZGF0YSA9IHNlbGYucmF3ZGF0YVtpKzk6a10KLSAgICAgICAgICAg
ICBqID0gayszCi0gICAgICAgICAgICAgc2VsZi5fdG9TdHJpbmdTdWJjbGFzcyhkYXRhLCBDRGF0
YSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBqID0g
U0dNTFBhcnNlci5wYXJzZV9kZWNsYXJhdGlvbihzZWxmLCBpKQotICAgICAgICAgICAgZXhjZXB0
IFNHTUxQYXJzZUVycm9yOgotICAgICAgICAgICAgICAgIHRvSGFuZGxlID0gc2VsZi5yYXdkYXRh
W2k6XQotICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2RhdGEodG9IYW5kbGUpCi0gICAgICAg
ICAgICAgICAgaiA9IGkgKyBsZW4odG9IYW5kbGUpCi0gICAgICAgIHJldHVybiBqCi0KLWNsYXNz
IEJlYXV0aWZ1bFNvdXAoQmVhdXRpZnVsU3RvbmVTb3VwKToKLQotICAgICIiIlRoaXMgcGFyc2Vy
IGtub3dzIHRoZSBmb2xsb3dpbmcgZmFjdHMgYWJvdXQgSFRNTDoKLQotICAgICogU29tZSB0YWdz
IGhhdmUgbm8gY2xvc2luZyB0YWcgYW5kIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBiZWluZwot
ICAgICAgY2xvc2VkIGFzIHNvb24gYXMgdGhleSBhcmUgZW5jb3VudGVyZWQuCi0KLSAgICAqIFRo
ZSB0ZXh0IGluc2lkZSBzb21lIHRhZ3MgKGllLiAnc2NyaXB0JykgbWF5IGNvbnRhaW4gdGFncyB3
aGljaAotICAgICAgYXJlIG5vdCByZWFsbHkgcGFydCBvZiB0aGUgZG9jdW1lbnQgYW5kIHdoaWNo
IHNob3VsZCBiZSBwYXJzZWQKLSAgICAgIGFzIHRleHQsIG5vdCB0YWdzLiBJZiB5b3Ugd2FudCB0
byBwYXJzZSB0aGUgdGV4dCBhcyB0YWdzLCB5b3UgY2FuCi0gICAgICBhbHdheXMgZmV0Y2ggaXQg
YW5kIHBhcnNlIGl0IGV4cGxpY2l0bHkuCi0KLSAgICAqIFRhZyBuZXN0aW5nIHJ1bGVzOgotCi0g
ICAgICBNb3N0IHRhZ3MgY2FuJ3QgYmUgbmVzdGVkIGF0IGFsbC4gRm9yIGluc3RhbmNlLCB0aGUg
b2NjdXJhbmNlIG9mCi0gICAgICBhIDxwPiB0YWcgc2hvdWxkIGltcGxpY2l0bHkgY2xvc2UgdGhl
IHByZXZpb3VzIDxwPiB0YWcuCi0KLSAgICAgICA8cD5QYXJhMTxwPlBhcmEyCi0gICAgICAgIHNo
b3VsZCBiZSB0cmFuc2Zvcm1lZCBpbnRvOgotICAgICAgIDxwPlBhcmExPC9wPjxwPlBhcmEyCi0K
LSAgICAgIFNvbWUgdGFncyBjYW4gYmUgbmVzdGVkIGFyYml0cmFyaWx5LiBGb3IgaW5zdGFuY2Us
IHRoZSBvY2N1cmFuY2UKLSAgICAgIG9mIGEgPGJsb2NrcXVvdGU+IHRhZyBzaG91bGQgX25vdF8g
aW1wbGljaXRseSBjbG9zZSB0aGUgcHJldmlvdXMKLSAgICAgIDxibG9ja3F1b3RlPiB0YWcuCi0K
LSAgICAgICBBbGljZSBzYWlkOiA8YmxvY2txdW90ZT5Cb2Igc2FpZDogPGJsb2NrcXVvdGU+Qmxh
aAotICAgICAgICBzaG91bGQgTk9UIGJlIHRyYW5zZm9ybWVkIGludG86Ci0gICAgICAgQWxpY2Ug
c2FpZDogPGJsb2NrcXVvdGU+Qm9iIHNhaWQ6IDwvYmxvY2txdW90ZT48YmxvY2txdW90ZT5CbGFo
Ci0KLSAgICAgIFNvbWUgdGFncyBjYW4gYmUgbmVzdGVkLCBidXQgdGhlIG5lc3RpbmcgaXMgcmVz
ZXQgYnkgdGhlCi0gICAgICBpbnRlcnBvc2l0aW9uIG9mIG90aGVyIHRhZ3MuIEZvciBpbnN0YW5j
ZSwgYSA8dHI+IHRhZyBzaG91bGQKLSAgICAgIGltcGxpY2l0bHkgY2xvc2UgdGhlIHByZXZpb3Vz
IDx0cj4gdGFnIHdpdGhpbiB0aGUgc2FtZSA8dGFibGU+LAotICAgICAgYnV0IG5vdCBjbG9zZSBh
IDx0cj4gdGFnIGluIGFub3RoZXIgdGFibGUuCi0KLSAgICAgICA8dGFibGU+PHRyPkJsYWg8dHI+
QmxhaAotICAgICAgICBzaG91bGQgYmUgdHJhbnNmb3JtZWQgaW50bzoKLSAgICAgICA8dGFibGU+
PHRyPkJsYWg8L3RyPjx0cj5CbGFoCi0gICAgICAgIGJ1dCwKLSAgICAgICA8dHI+QmxhaDx0YWJs
ZT48dHI+QmxhaAotICAgICAgICBzaG91bGQgTk9UIGJlIHRyYW5zZm9ybWVkIGludG8KLSAgICAg
ICA8dHI+QmxhaDx0YWJsZT48L3RyPjx0cj5CbGFoCi0KLSAgICBEaWZmZXJpbmcgYXNzdW1wdGlv
bnMgYWJvdXQgdGFnIG5lc3RpbmcgcnVsZXMgYXJlIGEgbWFqb3Igc291cmNlCi0gICAgb2YgcHJv
YmxlbXMgd2l0aCB0aGUgQmVhdXRpZnVsU291cCBjbGFzcy4gSWYgQmVhdXRpZnVsU291cCBpcyBu
b3QKLSAgICB0cmVhdGluZyBhcyBuZXN0YWJsZSBhIHRhZyB5b3VyIHBhZ2UgYXV0aG9yIHRyZWF0
cyBhcyBuZXN0YWJsZSwKLSAgICB0cnkgSUNhbnRCZWxpZXZlSXRzQmVhdXRpZnVsU291cCwgTWlu
aW1hbFNvdXAsIG9yCi0gICAgQmVhdXRpZnVsU3RvbmVTb3VwIGJlZm9yZSB3cml0aW5nIHlvdXIg
b3duIHN1YmNsYXNzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgICAgIGlmIG5vdCBrd2FyZ3MuaGFzX2tleSgnc21hcnRRdW90ZXNUbycpOgotICAg
ICAgICAgICAga3dhcmdzWydzbWFydFF1b3Rlc1RvJ10gPSBzZWxmLkhUTUxfRU5USVRJRVMKLSAg
ICAgICAga3dhcmdzWydpc0hUTUwnXSA9IFRydWUKLSAgICAgICAgQmVhdXRpZnVsU3RvbmVTb3Vw
Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQotICAgIFNFTEZfQ0xPU0lOR19UQUdT
ID0gYnVpbGRUYWdNYXAoTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgnYnInICwgJ2hyJywgJ2lucHV0JywgJ2ltZycsICdtZXRhJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICdzcGFjZXInLCAnbGluaycsICdmcmFtZScsICdiYXNlJywgJ2Nv
bCcpKQotCi0gICAgUFJFU0VSVkVfV0hJVEVTUEFDRV9UQUdTID0gc2V0KFsncHJlJywgJ3RleHRh
cmVhJ10pCi0KLSAgICBRVU9URV9UQUdTID0geydzY3JpcHQnIDogTm9uZSwgJ3RleHRhcmVhJyA6
IE5vbmV9Ci0KLSAgICAjQWNjb3JkaW5nIHRvIHRoZSBIVE1MIHN0YW5kYXJkLCBlYWNoIG9mIHRo
ZXNlIGlubGluZSB0YWdzIGNhbgotICAgICNjb250YWluIGFub3RoZXIgdGFnIG9mIHRoZSBzYW1l
IHR5cGUuIEZ1cnRoZXJtb3JlLCBpdCdzIGNvbW1vbgotICAgICN0byBhY3R1YWxseSB1c2UgdGhl
c2UgdGFncyB0aGlzIHdheS4KLSAgICBORVNUQUJMRV9JTkxJTkVfVEFHUyA9ICgnc3BhbicsICdm
b250JywgJ3EnLCAnb2JqZWN0JywgJ2JkbycsICdzdWInLCAnc3VwJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnY2VudGVyJykKLQotICAgICNBY2NvcmRpbmcgdG8gdGhlIEhUTUwgc3Rh
bmRhcmQsIHRoZXNlIGJsb2NrIHRhZ3MgY2FuIGNvbnRhaW4KLSAgICAjYW5vdGhlciB0YWcgb2Yg
dGhlIHNhbWUgdHlwZS4gRnVydGhlcm1vcmUsIGl0J3MgY29tbW9uCi0gICAgI3RvIGFjdHVhbGx5
IHVzZSB0aGVzZSB0YWdzIHRoaXMgd2F5LgotICAgIE5FU1RBQkxFX0JMT0NLX1RBR1MgPSAoJ2Js
b2NrcXVvdGUnLCAnZGl2JywgJ2ZpZWxkc2V0JywgJ2lucycsICdkZWwnKQotCi0gICAgI0xpc3Rz
IGNhbiBjb250YWluIG90aGVyIGxpc3RzLCBidXQgdGhlcmUgYXJlIHJlc3RyaWN0aW9ucy4KLSAg
ICBORVNUQUJMRV9MSVNUX1RBR1MgPSB7ICdvbCcgOiBbXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd1bCcgOiBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaScgOiBbJ3Vs
JywgJ29sJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAnZGwnIDogW10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAnZGQnIDogWydkbCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2R0JyA6IFsnZGwnXSB9Ci0KLSAgICAjVGFibGVzIGNhbiBjb250YWluIG90aGVyIHRh
YmxlcywgYnV0IHRoZXJlIGFyZSByZXN0cmljdGlvbnMuCi0gICAgTkVTVEFCTEVfVEFCTEVfVEFH
UyA9IHsndGFibGUnIDogW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAndHInIDogWyd0
YWJsZScsICd0Ym9keScsICd0Zm9vdCcsICd0aGVhZCddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3RkJyA6IFsndHInXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aCcgOiBb
J3RyJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlYWQnIDogWyd0YWJsZSddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rib2R5JyA6IFsndGFibGUnXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0Zm9vdCcgOiBbJ3RhYmxlJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0KLSAgICBOT05fTkVTVEFCTEVfQkxPQ0tfVEFHUyA9ICgnYWRkcmVzcycs
ICdmb3JtJywgJ3AnLCAncHJlJykKLQotICAgICNJZiBvbmUgb2YgdGhlc2UgdGFncyBpcyBlbmNv
dW50ZXJlZCwgYWxsIHRhZ3MgdXAgdG8gdGhlIG5leHQgdGFnIG9mCi0gICAgI3RoaXMgdHlwZSBh
cmUgcG9wcGVkLgotICAgIFJFU0VUX05FU1RJTkdfVEFHUyA9IGJ1aWxkVGFnTWFwKE5vbmUsIE5F
U1RBQkxFX0JMT0NLX1RBR1MsICdub3NjcmlwdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTk9OX05FU1RBQkxFX0JMT0NLX1RBR1MsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgTkVTVEFCTEVfTElTVF9UQUdTLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE5FU1RBQkxFX1RBQkxFX1RBR1MpCi0KLSAgICBORVNUQUJMRV9U
QUdTID0gYnVpbGRUYWdNYXAoW10sIE5FU1RBQkxFX0lOTElORV9UQUdTLCBORVNUQUJMRV9CTE9D
S19UQUdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVNUQUJMRV9MSVNUX1RB
R1MsIE5FU1RBQkxFX1RBQkxFX1RBR1MpCi0KLSAgICAjIFVzZWQgdG8gZGV0ZWN0IHRoZSBjaGFy
c2V0IGluIGEgTUVUQSB0YWc7IHNlZSBzdGFydF9tZXRhCi0gICAgQ0hBUlNFVF9SRSA9IHJlLmNv
bXBpbGUoIigoXnw7KVxzKmNoYXJzZXQ9KShbXjtdKikiLCByZS5NKQotCi0gICAgZGVmIHN0YXJ0
X21ldGEoc2VsZiwgYXR0cnMpOgotICAgICAgICAiIiJCZWF1dGlmdWwgU291cCBjYW4gZGV0ZWN0
IGEgY2hhcnNldCBpbmNsdWRlZCBpbiBhIE1FVEEgdGFnLAotICAgICAgICB0cnkgdG8gY29udmVy
dCB0aGUgZG9jdW1lbnQgdG8gdGhhdCBjaGFyc2V0LCBhbmQgcmUtcGFyc2UgdGhlCi0gICAgICAg
IGRvY3VtZW50IGZyb20gdGhlIGJlZ2lubmluZy4iIiIKLSAgICAgICAgaHR0cEVxdWl2ID0gTm9u
ZQotICAgICAgICBjb250ZW50VHlwZSA9IE5vbmUKLSAgICAgICAgY29udGVudFR5cGVJbmRleCA9
IE5vbmUKLSAgICAgICAgdGFnTmVlZHNFbmNvZGluZ1N1YnN0aXR1dGlvbiA9IEZhbHNlCi0KLSAg
ICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGF0dHJzKSk6Ci0gICAgICAgICAgICBrZXksIHZh
bHVlID0gYXR0cnNbaV0KLSAgICAgICAgICAgIGtleSA9IGtleS5sb3dlcigpCi0gICAgICAgICAg
ICBpZiBrZXkgPT0gJ2h0dHAtZXF1aXYnOgotICAgICAgICAgICAgICAgIGh0dHBFcXVpdiA9IHZh
bHVlCi0gICAgICAgICAgICBlbGlmIGtleSA9PSAnY29udGVudCc6Ci0gICAgICAgICAgICAgICAg
Y29udGVudFR5cGUgPSB2YWx1ZQotICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlSW5kZXggPSBp
Ci0KLSAgICAgICAgaWYgaHR0cEVxdWl2IGFuZCBjb250ZW50VHlwZTogIyBJdCdzIGFuIGludGVy
ZXN0aW5nIG1ldGEgdGFnLgotICAgICAgICAgICAgbWF0Y2ggPSBzZWxmLkNIQVJTRVRfUkUuc2Vh
cmNoKGNvbnRlbnRUeXBlKQotICAgICAgICAgICAgaWYgbWF0Y2g6Ci0gICAgICAgICAgICAgICAg
aWYgKHNlbGYuZGVjbGFyZWRIVE1MRW5jb2RpbmcgaXMgbm90IE5vbmUgb3IKLSAgICAgICAgICAg
ICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29kaW5nID09IHNlbGYuZnJvbUVuY29kaW5nKToKLSAg
ICAgICAgICAgICAgICAgICAgIyBBbiBIVE1MIGVuY29kaW5nIHdhcyBzbmlmZmVkIHdoaWxlIGNv
bnZlcnRpbmcKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgZG9jdW1lbnQgdG8gVW5pY29kZSwg
b3IgYW4gSFRNTCBlbmNvZGluZyB3YXMKLSAgICAgICAgICAgICAgICAgICAgIyBzbmlmZmVkIGR1
cmluZyBhIHByZXZpb3VzIHBhc3MgdGhyb3VnaCB0aGUKLSAgICAgICAgICAgICAgICAgICAgIyBk
b2N1bWVudCwgb3IgYW4gZW5jb2Rpbmcgd2FzIHNwZWNpZmllZAotICAgICAgICAgICAgICAgICAg
ICAjIGV4cGxpY2l0bHkgYW5kIGl0IHdvcmtlZC4gUmV3cml0ZSB0aGUgbWV0YSB0YWcuCi0gICAg
ICAgICAgICAgICAgICAgIGRlZiByZXdyaXRlKG1hdGNoKToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBtYXRjaC5ncm91cCgxKSArICIlU09VUC1FTkNPRElORyUiCi0gICAgICAgICAg
ICAgICAgICAgIG5ld0F0dHIgPSBzZWxmLkNIQVJTRVRfUkUuc3ViKHJld3JpdGUsIGNvbnRlbnRU
eXBlKQotICAgICAgICAgICAgICAgICAgICBhdHRyc1tjb250ZW50VHlwZUluZGV4XSA9IChhdHRy
c1tjb250ZW50VHlwZUluZGV4XVswXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3QXR0cikKLSAgICAgICAgICAgICAgICAgICAgdGFnTmVlZHNFbmNv
ZGluZ1N1YnN0aXR1dGlvbiA9IFRydWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICAjIFRoaXMgaXMgb3VyIGZpcnN0IHBhc3MgdGhyb3VnaCB0aGUgZG9jdW1lbnQu
Ci0gICAgICAgICAgICAgICAgICAgICMgR28gdGhyb3VnaCBpdCBhZ2FpbiB3aXRoIHRoZSBlbmNv
ZGluZyBpbmZvcm1hdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgbmV3Q2hhcnNldCA9IG1hdGNo
Lmdyb3VwKDMpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5ld0NoYXJzZXQgYW5kIG5ld0NoYXJz
ZXQgIT0gc2VsZi5vcmlnaW5hbEVuY29kaW5nOgotICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IG5ld0NoYXJzZXQKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2ZlZWQoc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJhaXNlIFN0b3BQYXJzaW5nCi0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAg
ICAgICAgdGFnID0gc2VsZi51bmtub3duX3N0YXJ0dGFnKCJtZXRhIiwgYXR0cnMpCi0gICAgICAg
IGlmIHRhZyBhbmQgdGFnTmVlZHNFbmNvZGluZ1N1YnN0aXR1dGlvbjoKLSAgICAgICAgICAgIHRh
Zy5jb250YWluc1N1YnN0aXR1dGlvbnMgPSBUcnVlCi0KLWNsYXNzIFN0b3BQYXJzaW5nKEV4Y2Vw
dGlvbik6Ci0gICAgcGFzcwotCi1jbGFzcyBJQ2FudEJlbGlldmVJdHNCZWF1dGlmdWxTb3VwKEJl
YXV0aWZ1bFNvdXApOgotCi0gICAgIiIiVGhlIEJlYXV0aWZ1bFNvdXAgY2xhc3MgaXMgb3JpZW50
ZWQgdG93YXJkcyBza2lwcGluZyBvdmVyCi0gICAgY29tbW9uIEhUTUwgZXJyb3JzIGxpa2UgdW5j
bG9zZWQgdGFncy4gSG93ZXZlciwgc29tZXRpbWVzIGl0IG1ha2VzCi0gICAgZXJyb3JzIG9mIGl0
cyBvd24uIEZvciBpbnN0YW5jZSwgY29uc2lkZXIgdGhpcyBmcmFnbWVudDoKLQotICAgICA8Yj5G
b288Yj5CYXI8L2I+PC9iPgotCi0gICAgVGhpcyBpcyBwZXJmZWN0bHkgdmFsaWQgKGlmIGJpemFy
cmUpIEhUTUwuIEhvd2V2ZXIsIHRoZQotICAgIEJlYXV0aWZ1bFNvdXAgY2xhc3Mgd2lsbCBpbXBs
aWNpdGx5IGNsb3NlIHRoZSBmaXJzdCBiIHRhZyB3aGVuIGl0Ci0gICAgZW5jb3VudGVycyB0aGUg
c2Vjb25kICdiJy4gSXQgd2lsbCB0aGluayB0aGUgYXV0aG9yIHdyb3RlCi0gICAgIjxiPkZvbzxi
PkJhciIsIGFuZCBkaWRuJ3QgY2xvc2UgdGhlIGZpcnN0ICdiJyB0YWcsIGJlY2F1c2UKLSAgICB0
aGVyZSdzIG5vIHJlYWwtd29ybGQgcmVhc29uIHRvIGJvbGQgc29tZXRoaW5nIHRoYXQncyBhbHJl
YWR5Ci0gICAgYm9sZC4gV2hlbiBpdCBlbmNvdW50ZXJzICc8L2I+PC9iPicgaXQgd2lsbCBjbG9z
ZSB0d28gbW9yZSAnYicKLSAgICB0YWdzLCBmb3IgYSBncmFuZCB0b3RhbCBvZiB0aHJlZSB0YWdz
IGNsb3NlZCBpbnN0ZWFkIG9mIHR3by4gVGhpcwotICAgIGNhbiB0aHJvdyBvZmYgdGhlIHJlc3Qg
b2YgeW91ciBkb2N1bWVudCBzdHJ1Y3R1cmUuIFRoZSBzYW1lIGlzCi0gICAgdHJ1ZSBvZiBhIG51
bWJlciBvZiBvdGhlciB0YWdzLCBsaXN0ZWQgYmVsb3cuCi0KLSAgICBJdCdzIG11Y2ggbW9yZSBj
b21tb24gZm9yIHNvbWVvbmUgdG8gZm9yZ2V0IHRvIGNsb3NlIGEgJ2InIHRhZwotICAgIHRoYW4g
dG8gYWN0dWFsbHkgdXNlIG5lc3RlZCAnYicgdGFncywgYW5kIHRoZSBCZWF1dGlmdWxTb3VwIGNs
YXNzCi0gICAgaGFuZGxlcyB0aGUgY29tbW9uIGNhc2UuIFRoaXMgY2xhc3MgaGFuZGxlcyB0aGUg
bm90LWNvLWNvbW1vbgotICAgIGNhc2U6IHdoZXJlIHlvdSBjYW4ndCBiZWxpZXZlIHNvbWVvbmUg
d3JvdGUgd2hhdCB0aGV5IGRpZCwgYnV0Ci0gICAgaXQncyB2YWxpZCBIVE1MIGFuZCBCZWF1dGlm
dWxTb3VwIHNjcmV3ZWQgdXAgYnkgYXNzdW1pbmcgaXQKLSAgICB3b3VsZG4ndCBiZS4iIiIKLQot
ICAgIElfQ0FOVF9CRUxJRVZFX1RIRVlSRV9ORVNUQUJMRV9JTkxJTkVfVEFHUyA9IFwKLSAgICAg
KCdlbScsICdiaWcnLCAnaScsICdzbWFsbCcsICd0dCcsICdhYmJyJywgJ2Fjcm9ueW0nLCAnc3Ry
b25nJywKLSAgICAgICdjaXRlJywgJ2NvZGUnLCAnZGZuJywgJ2tiZCcsICdzYW1wJywgJ3N0cm9u
ZycsICd2YXInLCAnYicsCi0gICAgICAnYmlnJykKLQotICAgIElfQ0FOVF9CRUxJRVZFX1RIRVlS
RV9ORVNUQUJMRV9CTE9DS19UQUdTID0gKCdub3NjcmlwdCcsKQotCi0gICAgTkVTVEFCTEVfVEFH
UyA9IGJ1aWxkVGFnTWFwKFtdLCBCZWF1dGlmdWxTb3VwLk5FU1RBQkxFX1RBR1MsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIElfQ0FOVF9CRUxJRVZFX1RIRVlSRV9ORVNUQUJMRV9C
TE9DS19UQUdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJX0NBTlRfQkVMSUVW
RV9USEVZUkVfTkVTVEFCTEVfSU5MSU5FX1RBR1MpCi0KLWNsYXNzIE1pbmltYWxTb3VwKEJlYXV0
aWZ1bFNvdXApOgotICAgICIiIlRoZSBNaW5pbWFsU291cCBjbGFzcyBpcyBmb3IgcGFyc2luZyBI
VE1MIHRoYXQgY29udGFpbnMKLSAgICBwYXRob2xvZ2ljYWxseSBiYWQgbWFya3VwLiBJdCBtYWtl
cyBubyBhc3N1bXB0aW9ucyBhYm91dCB0YWcKLSAgICBuZXN0aW5nLCBidXQgaXQgZG9lcyBrbm93
IHdoaWNoIHRhZ3MgYXJlIHNlbGYtY2xvc2luZywgdGhhdAotICAgIDxzY3JpcHQ+IHRhZ3MgY29u
dGFpbiBKYXZhc2NyaXB0IGFuZCBzaG91bGQgbm90IGJlIHBhcnNlZCwgdGhhdAotICAgIE1FVEEg
dGFncyBtYXkgY29udGFpbiBlbmNvZGluZyBpbmZvcm1hdGlvbiwgYW5kIHNvIG9uLgotCi0gICAg
VGhpcyBhbHNvIG1ha2VzIGl0IGJldHRlciBmb3Igc3ViY2xhc3NpbmcgdGhhbiBCZWF1dGlmdWxT
dG9uZVNvdXAKLSAgICBvciBCZWF1dGlmdWxTb3VwLiIiIgotCi0gICAgUkVTRVRfTkVTVElOR19U
QUdTID0gYnVpbGRUYWdNYXAoJ25vc2NyaXB0JykKLSAgICBORVNUQUJMRV9UQUdTID0ge30KLQot
Y2xhc3MgQmVhdXRpZnVsU09BUChCZWF1dGlmdWxTdG9uZVNvdXApOgotICAgICIiIlRoaXMgY2xh
c3Mgd2lsbCBwdXNoIGEgdGFnIHdpdGggb25seSBhIHNpbmdsZSBzdHJpbmcgY2hpbGQgaW50bwot
ICAgIHRoZSB0YWcncyBwYXJlbnQgYXMgYW4gYXR0cmlidXRlLiBUaGUgYXR0cmlidXRlJ3MgbmFt
ZSBpcyB0aGUgdGFnCi0gICAgbmFtZSwgYW5kIHRoZSB2YWx1ZSBpcyB0aGUgc3RyaW5nIGNoaWxk
LiBBbiBleGFtcGxlIHNob3VsZCBnaXZlCi0gICAgdGhlIGZsYXZvciBvZiB0aGUgY2hhbmdlOgot
Ci0gICAgPGZvbz48YmFyPmJhejwvYmFyPjwvZm9vPgotICAgICA9PgotICAgIDxmb28gYmFyPSJi
YXoiPjxiYXI+YmF6PC9iYXI+PC9mb28+Ci0KLSAgICBZb3UgY2FuIHRoZW4gYWNjZXNzIGZvb1Rh
Z1snYmFyJ10gaW5zdGVhZCBvZiBmb29UYWcuYmFyVGFnLnN0cmluZy4KLQotICAgIFRoaXMgaXMs
IG9mIGNvdXJzZSwgdXNlZnVsIGZvciBzY3JhcGluZyBzdHJ1Y3R1cmVzIHRoYXQgdGVuZCB0bwot
ICAgIHVzZSBzdWJlbGVtZW50cyBpbnN0ZWFkIG9mIGF0dHJpYnV0ZXMsIHN1Y2ggYXMgU09BUCBt
ZXNzYWdlcy4gTm90ZQotICAgIHRoYXQgaXQgbW9kaWZpZXMgaXRzIGlucHV0LCBzbyBkb24ndCBw
cmludCB0aGUgbW9kaWZpZWQgdmVyc2lvbgotICAgIG91dC4KLQotICAgIEknbSBub3Qgc3VyZSBo
b3cgbWFueSBwZW9wbGUgcmVhbGx5IHdhbnQgdG8gdXNlIHRoaXMgY2xhc3M7IGxldCBtZQotICAg
IGtub3cgaWYgeW91IGRvLiBNYWlubHkgSSBsaWtlIHRoZSBuYW1lLiIiIgotCi0gICAgZGVmIHBv
cFRhZyhzZWxmKToKLSAgICAgICAgaWYgbGVuKHNlbGYudGFnU3RhY2spID4gMToKLSAgICAgICAg
ICAgIHRhZyA9IHNlbGYudGFnU3RhY2tbLTFdCi0gICAgICAgICAgICBwYXJlbnQgPSBzZWxmLnRh
Z1N0YWNrWy0yXQotICAgICAgICAgICAgcGFyZW50Ll9nZXRBdHRyTWFwKCkKLSAgICAgICAgICAg
IGlmIChpc2luc3RhbmNlKHRhZywgVGFnKSBhbmQgbGVuKHRhZy5jb250ZW50cykgPT0gMSBhbmQK
LSAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHRhZy5jb250ZW50c1swXSwgTmF2aWdhYmxlU3Ry
aW5nKSBhbmQKLSAgICAgICAgICAgICAgICBub3QgcGFyZW50LmF0dHJNYXAuaGFzX2tleSh0YWcu
bmFtZSkpOgotICAgICAgICAgICAgICAgIHBhcmVudFt0YWcubmFtZV0gPSB0YWcuY29udGVudHNb
MF0KLSAgICAgICAgQmVhdXRpZnVsU3RvbmVTb3VwLnBvcFRhZyhzZWxmKQotCi0jRW50ZXJwcmlz
ZSBjbGFzcyBuYW1lcyEgSXQgaGFzIGNvbWUgdG8gb3VyIGF0dGVudGlvbiB0aGF0IHNvbWUgcGVv
cGxlCi0jdGhpbmsgdGhlIG5hbWVzIG9mIHRoZSBCZWF1dGlmdWwgU291cCBwYXJzZXIgY2xhc3Nl
cyBhcmUgdG9vIHNpbGx5Ci0jYW5kICJ1bnByb2Zlc3Npb25hbCIgZm9yIHVzZSBpbiBlbnRlcnBy
aXNlIHNjcmVlbi1zY3JhcGluZy4gV2UgZmVlbAotI3lvdXIgcGFpbiEgRm9yIHN1Y2gtbWluZGVk
IGZvbGssIHRoZSBCZWF1dGlmdWwgU291cCBDb25zb3J0aXVtIEFuZAotI0FsbC1OaWdodCBLb3No
ZXIgQmFrZXJ5IHJlY29tbWVuZHMgcmVuYW1pbmcgdGhpcyBmaWxlIHRvCi0jIlJvYnVzdFBhcnNl
ci5weSIgKG9yLCBpbiBjYXNlcyBvZiBleHRyZW1lIGVudGVycHJpc2luZXNzLAotIyJSb2J1c3RQ
YXJzZXJCZWFuSW50ZXJmYWNlLmNsYXNzIikgYW5kIHVzaW5nIHRoZSBmb2xsb3dpbmcKLSNlbnRl
cnByaXNlLWZyaWVuZGx5IGNsYXNzIGFsaWFzZXM6Ci1jbGFzcyBSb2J1c3RYTUxQYXJzZXIoQmVh
dXRpZnVsU3RvbmVTb3VwKToKLSAgICBwYXNzCi1jbGFzcyBSb2J1c3RIVE1MUGFyc2VyKEJlYXV0
aWZ1bFNvdXApOgotICAgIHBhc3MKLWNsYXNzIFJvYnVzdFdhY2tBc3NIVE1MUGFyc2VyKElDYW50
QmVsaWV2ZUl0c0JlYXV0aWZ1bFNvdXApOgotICAgIHBhc3MKLWNsYXNzIFJvYnVzdEluc2FuZWx5
V2Fja0Fzc0hUTUxQYXJzZXIoTWluaW1hbFNvdXApOgotICAgIHBhc3MKLWNsYXNzIFNpbXBsaWZ5
aW5nU09BUFBhcnNlcihCZWF1dGlmdWxTT0FQKToKLSAgICBwYXNzCi0KLSMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBCb251cyBsaWJy
YXJ5OiBVbmljb2RlLCBEYW1taXQKLSMKLSMgVGhpcyBjbGFzcyBmb3JjZXMgWE1MIGRhdGEgaW50
byBhIHN0YW5kYXJkIGZvcm1hdCAodXN1YWxseSB0byBVVEYtOAotIyBvciBVbmljb2RlKS4gIEl0
IGlzIGhlYXZpbHkgYmFzZWQgb24gY29kZSBmcm9tIE1hcmsgUGlsZ3JpbSdzCi0jIFVuaXZlcnNh
bCBGZWVkIFBhcnNlci4gSXQgZG9lcyBub3QgcmV3cml0ZSB0aGUgWE1MIG9yIEhUTUwgdG8KLSMg
cmVmbGVjdCBhIG5ldyBlbmNvZGluZzogdGhhdCBoYXBwZW5zIGluIEJlYXV0aWZ1bFN0b25lU291
cC5oYW5kbGVfcGkKLSMgKFhNTCkgYW5kIEJlYXV0aWZ1bFNvdXAuc3RhcnRfbWV0YSAoSFRNTCku
Ci0KLSMgQXV0b2RldGVjdHMgY2hhcmFjdGVyIGVuY29kaW5ncy4KLSMgRG93bmxvYWQgZnJvbSBo
dHRwOi8vY2hhcmRldC5mZWVkcGFyc2VyLm9yZy8KLXRyeToKLSAgICBpbXBvcnQgY2hhcmRldAot
IyAgICBpbXBvcnQgY2hhcmRldC5jb25zdGFudHMKLSMgICAgY2hhcmRldC5jb25zdGFudHMuX2Rl
YnVnID0gMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIGNoYXJkZXQgPSBOb25lCi0KLSMgY2pr
Y29kZWNzIGFuZCBpY29udl9jb2RlYyBtYWtlIFB5dGhvbiBrbm93IGFib3V0IG1vcmUgY2hhcmFj
dGVyIGVuY29kaW5ncy4KLSMgQm90aCBhcmUgYXZhaWxhYmxlIGZyb20gaHR0cDovL2Nqa3B5dGhv
bi5pMThuLm9yZy8KLSMgVGhleSdyZSBidWlsdCBpbiBpZiB5b3UgdXNlIFB5dGhvbiAyLjQuCi10
cnk6Ci0gICAgaW1wb3J0IGNqa2NvZGVjcy5hbGlhc2VzCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0g
ICAgcGFzcwotdHJ5OgotICAgIGltcG9ydCBpY29udl9jb2RlYwotZXhjZXB0IEltcG9ydEVycm9y
OgotICAgIHBhc3MKLQotY2xhc3MgVW5pY29kZURhbW1pdDoKLSAgICAiIiJBIGNsYXNzIGZvciBk
ZXRlY3RpbmcgdGhlIGVuY29kaW5nIG9mIGEgKk1MIGRvY3VtZW50IGFuZAotICAgIGNvbnZlcnRp
bmcgaXQgdG8gYSBVbmljb2RlIHN0cmluZy4gSWYgdGhlIHNvdXJjZSBlbmNvZGluZyBpcwotICAg
IHdpbmRvd3MtMTI1MiwgY2FuIHJlcGxhY2UgTVMgc21hcnQgcXVvdGVzIHdpdGggdGhlaXIgSFRN
TCBvciBYTUwKLSAgICBlcXVpdmFsZW50cy4iIiIKLQotICAgICMgVGhpcyBkaWN0aW9uYXJ5IG1h
cHMgY29tbW9ubHkgc2VlbiB2YWx1ZXMgZm9yICJjaGFyc2V0IiBpbiBIVE1MCi0gICAgIyBtZXRh
IHRhZ3MgdG8gdGhlIGNvcnJlc3BvbmRpbmcgUHl0aG9uIGNvZGVjIG5hbWVzLiBJdCBvbmx5IGNv
dmVycwotICAgICMgdmFsdWVzIHRoYXQgYXJlbid0IGluIFB5dGhvbidzIGFsaWFzZXMgYW5kIGNh
bid0IGJlIGRldGVybWluZWQKLSAgICAjIGJ5IHRoZSBoZXVyaXN0aWNzIGluIGZpbmRfY29kZWMu
Ci0gICAgQ0hBUlNFVF9BTElBU0VTID0geyAibWFjaW50b3NoIiA6ICJtYWMtcm9tYW4iLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIngtc2ppcyIgOiAic2hpZnQtamlzIiB9Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbWFya3VwLCBvdmVycmlkZUVuY29kaW5ncz1bXSwKLSAgICAgICAgICAg
ICAgICAgc21hcnRRdW90ZXNUbz0neG1sJywgaXNIVE1MPUZhbHNlKToKLSAgICAgICAgc2VsZi5k
ZWNsYXJlZEhUTUxFbmNvZGluZyA9IE5vbmUKLSAgICAgICAgc2VsZi5tYXJrdXAsIGRvY3VtZW50
RW5jb2RpbmcsIHNuaWZmZWRFbmNvZGluZyA9IFwKLSAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2RldGVjdEVuY29kaW5nKG1hcmt1cCwgaXNIVE1MKQotICAgICAgICBzZWxmLnNtYXJ0UXVvdGVz
VG8gPSBzbWFydFF1b3Rlc1RvCi0gICAgICAgIHNlbGYudHJpZWRFbmNvZGluZ3MgPSBbXQotICAg
ICAgICBpZiBtYXJrdXAgPT0gJycgb3IgaXNpbnN0YW5jZShtYXJrdXAsIHVuaWNvZGUpOgotICAg
ICAgICAgICAgc2VsZi5vcmlnaW5hbEVuY29kaW5nID0gTm9uZQotICAgICAgICAgICAgc2VsZi51
bmljb2RlID0gdW5pY29kZShtYXJrdXApCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICB1
ID0gTm9uZQotICAgICAgICBmb3IgcHJvcG9zZWRFbmNvZGluZyBpbiBvdmVycmlkZUVuY29kaW5n
czoKLSAgICAgICAgICAgIHUgPSBzZWxmLl9jb252ZXJ0RnJvbShwcm9wb3NlZEVuY29kaW5nKQot
ICAgICAgICAgICAgaWYgdTogYnJlYWsKLSAgICAgICAgaWYgbm90IHU6Ci0gICAgICAgICAgICBm
b3IgcHJvcG9zZWRFbmNvZGluZyBpbiAoZG9jdW1lbnRFbmNvZGluZywgc25pZmZlZEVuY29kaW5n
KToKLSAgICAgICAgICAgICAgICB1ID0gc2VsZi5fY29udmVydEZyb20ocHJvcG9zZWRFbmNvZGlu
ZykKLSAgICAgICAgICAgICAgICBpZiB1OiBicmVhawotCi0gICAgICAgICMgSWYgbm8gbHVjayBh
bmQgd2UgaGF2ZSBhdXRvLWRldGVjdGlvbiBsaWJyYXJ5LCB0cnkgdGhhdDoKLSAgICAgICAgaWYg
bm90IHUgYW5kIGNoYXJkZXQgYW5kIG5vdCBpc2luc3RhbmNlKHNlbGYubWFya3VwLCB1bmljb2Rl
KToKLSAgICAgICAgICAgIHUgPSBzZWxmLl9jb252ZXJ0RnJvbShjaGFyZGV0LmRldGVjdChzZWxm
Lm1hcmt1cClbJ2VuY29kaW5nJ10pCi0KLSAgICAgICAgIyBBcyBhIGxhc3QgcmVzb3J0LCB0cnkg
dXRmLTggYW5kIHdpbmRvd3MtMTI1MjoKLSAgICAgICAgaWYgbm90IHU6Ci0gICAgICAgICAgICBm
b3IgcHJvcG9zZWRfZW5jb2RpbmcgaW4gKCJ1dGYtOCIsICJ3aW5kb3dzLTEyNTIiKToKLSAgICAg
ICAgICAgICAgICB1ID0gc2VsZi5fY29udmVydEZyb20ocHJvcG9zZWRfZW5jb2RpbmcpCi0gICAg
ICAgICAgICAgICAgaWYgdTogYnJlYWsKLQotICAgICAgICBzZWxmLnVuaWNvZGUgPSB1Ci0gICAg
ICAgIGlmIG5vdCB1OiBzZWxmLm9yaWdpbmFsRW5jb2RpbmcgPSBOb25lCi0KLSAgICBkZWYgX3N1
Yk1TQ2hhcihzZWxmLCBvcmlnKToKLSAgICAgICAgIiIiQ2hhbmdlcyBhIE1TIHNtYXJ0IHF1b3Rl
IGNoYXJhY3RlciB0byBhbiBYTUwgb3IgSFRNTAotICAgICAgICBlbnRpdHkuIiIiCi0gICAgICAg
IHN1YiA9IHNlbGYuTVNfQ0hBUlMuZ2V0KG9yaWcpCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc3Vi
LCB0dXBsZSk6Ci0gICAgICAgICAgICBpZiBzZWxmLnNtYXJ0UXVvdGVzVG8gPT0gJ3htbCc6Ci0g
ICAgICAgICAgICAgICAgc3ViID0gJyYjeCVzOycgJSBzdWJbMV0KLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgc3ViID0gJyYlczsnICUgc3ViWzBdCi0gICAgICAgIHJldHVybiBz
dWIKLQotICAgIGRlZiBfY29udmVydEZyb20oc2VsZiwgcHJvcG9zZWQpOgotICAgICAgICBwcm9w
b3NlZCA9IHNlbGYuZmluZF9jb2RlYyhwcm9wb3NlZCkKLSAgICAgICAgaWYgbm90IHByb3Bvc2Vk
IG9yIHByb3Bvc2VkIGluIHNlbGYudHJpZWRFbmNvZGluZ3M6Ci0gICAgICAgICAgICByZXR1cm4g
Tm9uZQotICAgICAgICBzZWxmLnRyaWVkRW5jb2RpbmdzLmFwcGVuZChwcm9wb3NlZCkKLSAgICAg
ICAgbWFya3VwID0gc2VsZi5tYXJrdXAKLQotICAgICAgICAjIENvbnZlcnQgc21hcnQgcXVvdGVz
IHRvIEhUTUwgaWYgY29taW5nIGZyb20gYW4gZW5jb2RpbmcKLSAgICAgICAgIyB0aGF0IG1pZ2h0
IGhhdmUgdGhlbS4KLSAgICAgICAgaWYgc2VsZi5zbWFydFF1b3Rlc1RvIGFuZCBwcm9wb3NlZC5s
b3dlcigpIGluKCJ3aW5kb3dzLTEyNTIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImlzby04ODU5LTEiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzby04ODU5LTIiKToKLSAgICAg
ICAgICAgIG1hcmt1cCA9IHJlLmNvbXBpbGUoIihbXHg4MC1ceDlmXSkiKS5zdWIgXAotICAgICAg
ICAgICAgICAgICAgICAgKGxhbWJkYSh4KTogc2VsZi5fc3ViTVNDaGFyKHguZ3JvdXAoMSkpLAot
ICAgICAgICAgICAgICAgICAgICAgIG1hcmt1cCkKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAjIHByaW50ICJUcnlpbmcgdG8gY29udmVydCBkb2N1bWVudCB0byAlcyIgJSBwcm9wb3NlZAot
ICAgICAgICAgICAgdSA9IHNlbGYuX3RvVW5pY29kZShtYXJrdXAsIHByb3Bvc2VkKQotICAgICAg
ICAgICAgc2VsZi5tYXJrdXAgPSB1Ci0gICAgICAgICAgICBzZWxmLm9yaWdpbmFsRW5jb2Rpbmcg
PSBwcm9wb3NlZAotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBw
cmludCAiVGhhdCBkaWRuJ3Qgd29yayEiCi0gICAgICAgICAgICAjIHByaW50IGUKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0gICAgICAgICNwcmludCAiQ29ycmVjdCBlbmNvZGluZzogJXMiICUg
cHJvcG9zZWQKLSAgICAgICAgcmV0dXJuIHNlbGYubWFya3VwCi0KLSAgICBkZWYgX3RvVW5pY29k
ZShzZWxmLCBkYXRhLCBlbmNvZGluZyk6Ci0gICAgICAgICcnJ0dpdmVuIGEgc3RyaW5nIGFuZCBp
dHMgZW5jb2RpbmcsIGRlY29kZXMgdGhlIHN0cmluZyBpbnRvIFVuaWNvZGUuCi0gICAgICAgICVl
bmNvZGluZyBpcyBhIHN0cmluZyByZWNvZ25pemVkIGJ5IGVuY29kaW5ncy5hbGlhc2VzJycnCi0K
LSAgICAgICAgIyBzdHJpcCBCeXRlIE9yZGVyIE1hcmsgKGlmIHByZXNlbnQpCi0gICAgICAgIGlm
IChsZW4oZGF0YSkgPj0gNCkgYW5kIChkYXRhWzoyXSA9PSAnXHhmZVx4ZmYnKSBcCi0gICAgICAg
ICAgICAgICBhbmQgKGRhdGFbMjo0XSAhPSAnXHgwMFx4MDAnKToKLSAgICAgICAgICAgIGVuY29k
aW5nID0gJ3V0Zi0xNmJlJwotICAgICAgICAgICAgZGF0YSA9IGRhdGFbMjpdCi0gICAgICAgIGVs
aWYgKGxlbihkYXRhKSA+PSA0KSBhbmQgKGRhdGFbOjJdID09ICdceGZmXHhmZScpIFwKLSAgICAg
ICAgICAgICAgICAgYW5kIChkYXRhWzI6NF0gIT0gJ1x4MDBceDAwJyk6Ci0gICAgICAgICAgICBl
bmNvZGluZyA9ICd1dGYtMTZsZScKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzI6XQotICAgICAg
ICBlbGlmIGRhdGFbOjNdID09ICdceGVmXHhiYlx4YmYnOgotICAgICAgICAgICAgZW5jb2Rpbmcg
PSAndXRmLTgnCi0gICAgICAgICAgICBkYXRhID0gZGF0YVszOl0KLSAgICAgICAgZWxpZiBkYXRh
Wzo0XSA9PSAnXHgwMFx4MDBceGZlXHhmZic6Ci0gICAgICAgICAgICBlbmNvZGluZyA9ICd1dGYt
MzJiZScKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzQ6XQotICAgICAgICBlbGlmIGRhdGFbOjRd
ID09ICdceGZmXHhmZVx4MDBceDAwJzoKLSAgICAgICAgICAgIGVuY29kaW5nID0gJ3V0Zi0zMmxl
JwotICAgICAgICAgICAgZGF0YSA9IGRhdGFbNDpdCi0gICAgICAgIG5ld2RhdGEgPSB1bmljb2Rl
KGRhdGEsIGVuY29kaW5nKQotICAgICAgICByZXR1cm4gbmV3ZGF0YQotCi0gICAgZGVmIF9kZXRl
Y3RFbmNvZGluZyhzZWxmLCB4bWxfZGF0YSwgaXNIVE1MPUZhbHNlKToKLSAgICAgICAgIiIiR2l2
ZW4gYSBkb2N1bWVudCwgdHJpZXMgdG8gZGV0ZWN0IGl0cyBYTUwgZW5jb2RpbmcuIiIiCi0gICAg
ICAgIHhtbF9lbmNvZGluZyA9IHNuaWZmZWRfeG1sX2VuY29kaW5nID0gTm9uZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBpZiB4bWxfZGF0YVs6NF0gPT0gJ1x4NGNceDZmXHhhN1x4OTQnOgot
ICAgICAgICAgICAgICAgICMgRUJDRElDCi0gICAgICAgICAgICAgICAgeG1sX2RhdGEgPSBzZWxm
Ll9lYmNkaWNfdG9fYXNjaWkoeG1sX2RhdGEpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0
XSA9PSAnXHgwMFx4M2NceDAwXHgzZic6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMTZCRQotICAg
ICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0xNmJlJwotICAgICAgICAg
ICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0xNmJlJykuZW5jb2RlKCd1
dGYtOCcpCi0gICAgICAgICAgICBlbGlmIChsZW4oeG1sX2RhdGEpID49IDQpIGFuZCAoeG1sX2Rh
dGFbOjJdID09ICdceGZlXHhmZicpIFwKLSAgICAgICAgICAgICAgICAgICAgIGFuZCAoeG1sX2Rh
dGFbMjo0XSAhPSAnXHgwMFx4MDAnKToKLSAgICAgICAgICAgICAgICAjIFVURi0xNkJFIHdpdGgg
Qk9NCi0gICAgICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2RpbmcgPSAndXRmLTE2YmUnCi0g
ICAgICAgICAgICAgICAgeG1sX2RhdGEgPSB1bmljb2RlKHhtbF9kYXRhWzI6XSwgJ3V0Zi0xNmJl
JykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0XSA9PSAnXHgz
Y1x4MDBceDNmXHgwMCc6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMTZMRQotICAgICAgICAgICAg
ICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0xNmxlJwotICAgICAgICAgICAgICAgIHht
bF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0xNmxlJykuZW5jb2RlKCd1dGYtOCcpCi0g
ICAgICAgICAgICBlbGlmIChsZW4oeG1sX2RhdGEpID49IDQpIGFuZCAoeG1sX2RhdGFbOjJdID09
ICdceGZmXHhmZScpIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICAoeG1sX2RhdGFbMjo0XSAh
PSAnXHgwMFx4MDAnKToKLSAgICAgICAgICAgICAgICAjIFVURi0xNkxFIHdpdGggQk9NCi0gICAg
ICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2RpbmcgPSAndXRmLTE2bGUnCi0gICAgICAgICAg
ICAgICAgeG1sX2RhdGEgPSB1bmljb2RlKHhtbF9kYXRhWzI6XSwgJ3V0Zi0xNmxlJykuZW5jb2Rl
KCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0XSA9PSAnXHgwMFx4MDBceDAw
XHgzYyc6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMzJCRQotICAgICAgICAgICAgICAgIHNuaWZm
ZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0zMmJlJwotICAgICAgICAgICAgICAgIHhtbF9kYXRhID0g
dW5pY29kZSh4bWxfZGF0YSwgJ3V0Zi0zMmJlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAg
ICBlbGlmIHhtbF9kYXRhWzo0XSA9PSAnXHgzY1x4MDBceDAwXHgwMCc6Ci0gICAgICAgICAgICAg
ICAgIyBVVEYtMzJMRQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0
Zi0zMmxlJwotICAgICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YSwgJ3V0
Zi0zMmxlJykuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbGlmIHhtbF9kYXRhWzo0XSA9
PSAnXHgwMFx4MDBceGZlXHhmZic6Ci0gICAgICAgICAgICAgICAgIyBVVEYtMzJCRSB3aXRoIEJP
TQotICAgICAgICAgICAgICAgIHNuaWZmZWRfeG1sX2VuY29kaW5nID0gJ3V0Zi0zMmJlJwotICAg
ICAgICAgICAgICAgIHhtbF9kYXRhID0gdW5pY29kZSh4bWxfZGF0YVs0Ol0sICd1dGYtMzJiZScp
LmVuY29kZSgndXRmLTgnKQotICAgICAgICAgICAgZWxpZiB4bWxfZGF0YVs6NF0gPT0gJ1x4ZmZc
eGZlXHgwMFx4MDAnOgotICAgICAgICAgICAgICAgICMgVVRGLTMyTEUgd2l0aCBCT00KLSAgICAg
ICAgICAgICAgICBzbmlmZmVkX3htbF9lbmNvZGluZyA9ICd1dGYtMzJsZScKLSAgICAgICAgICAg
ICAgICB4bWxfZGF0YSA9IHVuaWNvZGUoeG1sX2RhdGFbNDpdLCAndXRmLTMybGUnKS5lbmNvZGUo
J3V0Zi04JykKLSAgICAgICAgICAgIGVsaWYgeG1sX2RhdGFbOjNdID09ICdceGVmXHhiYlx4YmYn
OgotICAgICAgICAgICAgICAgICMgVVRGLTggd2l0aCBCT00KLSAgICAgICAgICAgICAgICBzbmlm
ZmVkX3htbF9lbmNvZGluZyA9ICd1dGYtOCcKLSAgICAgICAgICAgICAgICB4bWxfZGF0YSA9IHVu
aWNvZGUoeG1sX2RhdGFbMzpdLCAndXRmLTgnKS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgc25pZmZlZF94bWxfZW5jb2RpbmcgPSAnYXNjaWknCi0g
ICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICB4bWxfZW5j
b2RpbmdfbWF0Y2ggPSBOb25lCi0gICAgICAgIHhtbF9lbmNvZGluZ19tYXRjaCA9IHJlLmNvbXBp
bGUoCi0gICAgICAgICAgICAnXjxcPy4qZW5jb2Rpbmc9W1wnIl0oLio/KVtcJyJdLipcPz4nKS5t
YXRjaCh4bWxfZGF0YSkKLSAgICAgICAgaWYgbm90IHhtbF9lbmNvZGluZ19tYXRjaCBhbmQgaXNI
VE1MOgotICAgICAgICAgICAgcmVnZXhwID0gcmUuY29tcGlsZSgnPFxzKm1ldGFbXj5dK2NoYXJz
ZXQ9KFtePl0qPylbO1wnIj5dJywgcmUuSSkKLSAgICAgICAgICAgIHhtbF9lbmNvZGluZ19tYXRj
aCA9IHJlZ2V4cC5zZWFyY2goeG1sX2RhdGEpCi0gICAgICAgIGlmIHhtbF9lbmNvZGluZ19tYXRj
aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHhtbF9lbmNvZGluZyA9IHhtbF9lbmNvZGluZ19t
YXRjaC5ncm91cHMoKVswXS5sb3dlcigpCi0gICAgICAgICAgICBpZiBpc0hUTUw6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5kZWNsYXJlZEhUTUxFbmNvZGluZyA9IHhtbF9lbmNvZGluZwotICAgICAg
ICAgICAgaWYgc25pZmZlZF94bWxfZW5jb2RpbmcgYW5kIFwKLSAgICAgICAgICAgICAgICh4bWxf
ZW5jb2RpbmcgaW4gKCdpc28tMTA2NDYtdWNzLTInLCAndWNzLTInLCAnY3N1bmljb2RlJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpc28tMTA2NDYtdWNzLTQnLCAndWNzLTQn
LCAnY3N1Y3M0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1dGYtMTYnLCAn
dXRmLTMyJywgJ3V0Zl8xNicsICd1dGZfMzInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3V0ZjE2JywgJ3UxNicpKToKLSAgICAgICAgICAgICAgICB4bWxfZW5jb2RpbmcgPSBz
bmlmZmVkX3htbF9lbmNvZGluZwotICAgICAgICByZXR1cm4geG1sX2RhdGEsIHhtbF9lbmNvZGlu
Zywgc25pZmZlZF94bWxfZW5jb2RpbmcKLQotCi0gICAgZGVmIGZpbmRfY29kZWMoc2VsZiwgY2hh
cnNldCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jb2RlYyhzZWxmLkNIQVJTRVRfQUxJQVNFUy5n
ZXQoY2hhcnNldCwgY2hhcnNldCkpIFwKLSAgICAgICAgICAgICAgIG9yIChjaGFyc2V0IGFuZCBz
ZWxmLl9jb2RlYyhjaGFyc2V0LnJlcGxhY2UoIi0iLCAiIikpKSBcCi0gICAgICAgICAgICAgICBv
ciAoY2hhcnNldCBhbmQgc2VsZi5fY29kZWMoY2hhcnNldC5yZXBsYWNlKCItIiwgIl8iKSkpIFwK
LSAgICAgICAgICAgICAgIG9yIGNoYXJzZXQKLQotICAgIGRlZiBfY29kZWMoc2VsZiwgY2hhcnNl
dCk6Ci0gICAgICAgIGlmIG5vdCBjaGFyc2V0OiByZXR1cm4gY2hhcnNldAotICAgICAgICBjb2Rl
YyA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29kZWNzLmxvb2t1cChjaGFyc2V0
KQotICAgICAgICAgICAgY29kZWMgPSBjaGFyc2V0Ci0gICAgICAgIGV4Y2VwdCAoTG9va3VwRXJy
b3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICByZXR1cm4gY29kZWMK
LQotICAgIEVCQ0RJQ19UT19BU0NJSV9NQVAgPSBOb25lCi0gICAgZGVmIF9lYmNkaWNfdG9fYXNj
aWkoc2VsZiwgcyk6Ci0gICAgICAgIGMgPSBzZWxmLl9fY2xhc3NfXwotICAgICAgICBpZiBub3Qg
Yy5FQkNESUNfVE9fQVNDSUlfTUFQOgotICAgICAgICAgICAgZW1hcCA9ICgwLDEsMiwzLDE1Niw5
LDEzNCwxMjcsMTUxLDE0MSwxNDIsMTEsMTIsMTMsMTQsMTUsCi0gICAgICAgICAgICAgICAgICAg
IDE2LDE3LDE4LDE5LDE1NywxMzMsOCwxMzUsMjQsMjUsMTQ2LDE0MywyOCwyOSwzMCwzMSwKLSAg
ICAgICAgICAgICAgICAgICAgMTI4LDEyOSwxMzAsMTMxLDEzMiwxMCwyMywyNywxMzYsMTM3LDEz
OCwxMzksMTQwLDUsNiw3LAotICAgICAgICAgICAgICAgICAgICAxNDQsMTQ1LDIyLDE0NywxNDgs
MTQ5LDE1MCw0LDE1MiwxNTMsMTU0LDE1NSwyMCwyMSwxNTgsMjYsCi0gICAgICAgICAgICAgICAg
ICAgIDMyLDE2MCwxNjEsMTYyLDE2MywxNjQsMTY1LDE2NiwxNjcsMTY4LDkxLDQ2LDYwLDQwLDQz
LDMzLAotICAgICAgICAgICAgICAgICAgICAzOCwxNjksMTcwLDE3MSwxNzIsMTczLDE3NCwxNzUs
MTc2LDE3Nyw5MywzNiw0Miw0MSw1OSw5NCwKLSAgICAgICAgICAgICAgICAgICAgNDUsNDcsMTc4
LDE3OSwxODAsMTgxLDE4MiwxODMsMTg0LDE4NSwxMjQsNDQsMzcsOTUsNjIsNjMsCi0gICAgICAg
ICAgICAgICAgICAgIDE4NiwxODcsMTg4LDE4OSwxOTAsMTkxLDE5MiwxOTMsMTk0LDk2LDU4LDM1
LDY0LDM5LDYxLDM0LAotICAgICAgICAgICAgICAgICAgICAxOTUsOTcsOTgsOTksMTAwLDEwMSwx
MDIsMTAzLDEwNCwxMDUsMTk2LDE5NywxOTgsMTk5LDIwMCwKLSAgICAgICAgICAgICAgICAgICAg
MjAxLDIwMiwxMDYsMTA3LDEwOCwxMDksMTEwLDExMSwxMTIsMTEzLDExNCwyMDMsMjA0LDIwNSwK
LSAgICAgICAgICAgICAgICAgICAgMjA2LDIwNywyMDgsMjA5LDEyNiwxMTUsMTE2LDExNywxMTgs
MTE5LDEyMCwxMjEsMTIyLDIxMCwKLSAgICAgICAgICAgICAgICAgICAgMjExLDIxMiwyMTMsMjE0
LDIxNSwyMTYsMjE3LDIxOCwyMTksMjIwLDIyMSwyMjIsMjIzLDIyNCwKLSAgICAgICAgICAgICAg
ICAgICAgMjI1LDIyNiwyMjcsMjI4LDIyOSwyMzAsMjMxLDEyMyw2NSw2Niw2Nyw2OCw2OSw3MCw3
MSw3MiwKLSAgICAgICAgICAgICAgICAgICAgNzMsMjMyLDIzMywyMzQsMjM1LDIzNiwyMzcsMTI1
LDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLAotICAgICAgICAgICAgICAgICAgICA4MiwyMzgsMjM5
LDI0MCwyNDEsMjQyLDI0Myw5MiwxNTksODMsODQsODUsODYsODcsODgsODksCi0gICAgICAgICAg
ICAgICAgICAgIDkwLDI0NCwyNDUsMjQ2LDI0NywyNDgsMjQ5LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0
LDU1LDU2LDU3LAotICAgICAgICAgICAgICAgICAgICAyNTAsMjUxLDI1MiwyNTMsMjU0LDI1NSkK
LSAgICAgICAgICAgIGltcG9ydCBzdHJpbmcKLSAgICAgICAgICAgIGMuRUJDRElDX1RPX0FTQ0lJ
X01BUCA9IHN0cmluZy5tYWtldHJhbnMoIFwKLSAgICAgICAgICAgICcnLmpvaW4obWFwKGNociwg
cmFuZ2UoMjU2KSkpLCAnJy5qb2luKG1hcChjaHIsIGVtYXApKSkKLSAgICAgICAgcmV0dXJuIHMu
dHJhbnNsYXRlKGMuRUJDRElDX1RPX0FTQ0lJX01BUCkKLQotICAgIE1TX0NIQVJTID0geyAnXHg4
MCcgOiAoJ2V1cm8nLCAnMjBBQycpLAotICAgICAgICAgICAgICAgICAnXHg4MScgOiAnICcsCi0g
ICAgICAgICAgICAgICAgICdceDgyJyA6ICgnc2JxdW8nLCAnMjAxQScpLAotICAgICAgICAgICAg
ICAgICAnXHg4MycgOiAoJ2Zub2YnLCAnMTkyJyksCi0gICAgICAgICAgICAgICAgICdceDg0JyA6
ICgnYmRxdW8nLCAnMjAxRScpLAotICAgICAgICAgICAgICAgICAnXHg4NScgOiAoJ2hlbGxpcCcs
ICcyMDI2JyksCi0gICAgICAgICAgICAgICAgICdceDg2JyA6ICgnZGFnZ2VyJywgJzIwMjAnKSwK
LSAgICAgICAgICAgICAgICAgJ1x4ODcnIDogKCdEYWdnZXInLCAnMjAyMScpLAotICAgICAgICAg
ICAgICAgICAnXHg4OCcgOiAoJ2NpcmMnLCAnMkM2JyksCi0gICAgICAgICAgICAgICAgICdceDg5
JyA6ICgncGVybWlsJywgJzIwMzAnKSwKLSAgICAgICAgICAgICAgICAgJ1x4OEEnIDogKCdTY2Fy
b24nLCAnMTYwJyksCi0gICAgICAgICAgICAgICAgICdceDhCJyA6ICgnbHNhcXVvJywgJzIwMzkn
KSwKLSAgICAgICAgICAgICAgICAgJ1x4OEMnIDogKCdPRWxpZycsICcxNTInKSwKLSAgICAgICAg
ICAgICAgICAgJ1x4OEQnIDogJz8nLAotICAgICAgICAgICAgICAgICAnXHg4RScgOiAoJyN4MTdE
JywgJzE3RCcpLAotICAgICAgICAgICAgICAgICAnXHg4RicgOiAnPycsCi0gICAgICAgICAgICAg
ICAgICdceDkwJyA6ICc/JywKLSAgICAgICAgICAgICAgICAgJ1x4OTEnIDogKCdsc3F1bycsICcy
MDE4JyksCi0gICAgICAgICAgICAgICAgICdceDkyJyA6ICgncnNxdW8nLCAnMjAxOScpLAotICAg
ICAgICAgICAgICAgICAnXHg5MycgOiAoJ2xkcXVvJywgJzIwMUMnKSwKLSAgICAgICAgICAgICAg
ICAgJ1x4OTQnIDogKCdyZHF1bycsICcyMDFEJyksCi0gICAgICAgICAgICAgICAgICdceDk1JyA6
ICgnYnVsbCcsICcyMDIyJyksCi0gICAgICAgICAgICAgICAgICdceDk2JyA6ICgnbmRhc2gnLCAn
MjAxMycpLAotICAgICAgICAgICAgICAgICAnXHg5NycgOiAoJ21kYXNoJywgJzIwMTQnKSwKLSAg
ICAgICAgICAgICAgICAgJ1x4OTgnIDogKCd0aWxkZScsICcyREMnKSwKLSAgICAgICAgICAgICAg
ICAgJ1x4OTknIDogKCd0cmFkZScsICcyMTIyJyksCi0gICAgICAgICAgICAgICAgICdceDlhJyA6
ICgnc2Nhcm9uJywgJzE2MScpLAotICAgICAgICAgICAgICAgICAnXHg5YicgOiAoJ3JzYXF1bycs
ICcyMDNBJyksCi0gICAgICAgICAgICAgICAgICdceDljJyA6ICgnb2VsaWcnLCAnMTUzJyksCi0g
ICAgICAgICAgICAgICAgICdceDlkJyA6ICc/JywKLSAgICAgICAgICAgICAgICAgJ1x4OWUnIDog
KCcjeDE3RScsICcxN0UnKSwKLSAgICAgICAgICAgICAgICAgJ1x4OWYnIDogKCdZdW1sJywgJycp
LH0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi0jQnkgZGVmYXVsdCwgYWN0IGFzIGFuIEhUTUwgcHJl
dHR5LXByaW50ZXIuCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIGltcG9ydCBzeXMK
LSAgICBzb3VwID0gQmVhdXRpZnVsU291cChzeXMuc3RkaW4pCi0gICAgcHJpbnQgc291cC5wcmV0
dGlmeSgpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy90aGlyZHBh
cnR5L19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2V3cy1hcHAvZXdzL3VybHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvZXdzLWFwcC9ld3MvdXJscy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MvdXJscy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ2ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9t
IGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAotCi1mcm9tIGV3cy52aWV3cy5pbmRleCBpbXBv
cnQgSW5kZXgKLWZyb20gZXdzLnZpZXdzLnJlc3VsdHMgaW1wb3J0IFJlc3VsdHMKLWZyb20gZXdz
LnZpZXdzLnN0YXR1cyBpbXBvcnQgU3RhdHVzCi1mcm9tIGV3cy52aWV3cy5zdGF0dXNidWJibGUg
aW1wb3J0IFN0YXR1c0J1YmJsZQotZnJvbSBld3Mudmlld3MucmV0cnlwYXRjaCBpbXBvcnQgUmV0
cnlQYXRjaAotZnJvbSBld3Mudmlld3Muc3VibWl0dG9ld3MgaW1wb3J0IFN1Ym1pdFRvRVdTCi0K
LWFwcF9uYW1lID0gJ2V3cycKLXVybHBhdHRlcm5zID0gWwotICAgICMgZXg6IC8KLSAgICB1cmwo
cideJCcsIEluZGV4LmFzX3ZpZXcoKSwgbmFtZT0naW5kZXgnKSwKLSAgICAjIGV4OiAvcmVzdWx0
cy8KLSAgICB1cmwocidecmVzdWx0cy8kJywgUmVzdWx0cy5hc192aWV3KCksIG5hbWU9J3Jlc3Vs
dHMnKSwKLSAgICAjIGV4OiAvcmV0cnkvCi0gICAgdXJsKHInXnJldHJ5LyQnLCBSZXRyeVBhdGNo
LmFzX3ZpZXcoKSwgbmFtZT0ncmV0cnlwYXRjaCcpLAotICAgICMgZXg6IC9zdGF0dXMvNQotICAg
IHVybChyJ15zdGF0dXMvKD9QPHBhdGNoX2lkPlswLTldKykvJCcsIFN0YXR1cy5hc192aWV3KCks
IG5hbWU9J3N0YXR1cycpLAotICAgICMgZXg6IC9zdGF0dXMtYnViYmxlLzUKLSAgICB1cmwocide
c3RhdHVzLWJ1YmJsZS8oP1A8cGF0Y2hfaWQ+WzAtOV0rKS8kJywgU3RhdHVzQnViYmxlLmFzX3Zp
ZXcoKSwgbmFtZT0nc3RhdHVzYnViYmxlJyksCi0gICAgIyBleDogL3N1Ym1pdC10by1ld3MvCi0g
ICAgdXJsKHInXnN1Ym1pdC10by1ld3MvJCcsIFN1Ym1pdFRvRVdTLmFzX3ZpZXcoKSwgbmFtZT0n
c3VibWl0dG9ld3MnKSwKLV0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAv
ZXdzL3ZpZXdzL19faW5pdF9fLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL2luZGV4LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL2luZGV4LnB5CShyZXZpc2lvbiAyNjkw
NDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9pbmRleC5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxz
Ci0KLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZQotZnJvbSBkamFuZ28udmll
d3MgaW1wb3J0IFZpZXcKLQotCi1jbGFzcyBJbmRleChWaWV3KToKLSAgICBkZWYgZ2V0KHNlbGYs
IHJlcXVlc3QpOgotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJFV1MgZm9yIFdlYktpdC4i
KQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmVzdWx0
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92
aWV3cy9yZXN1bHRzLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXN1bHRzLnB5CShub25leGlzdGVudCkKQEAgLTEsOTMg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQganNvbgotaW1w
b3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVz
cG9uc2UKLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQgcmVuZGVyCi1mcm9tIGRqYW5nby52
aWV3cyBpbXBvcnQgVmlldwotZnJvbSBkamFuZ28udmlld3MuZGVjb3JhdG9ycy5jc3JmIGltcG9y
dCBjc3JmX2V4ZW1wdAotZnJvbSBkamFuZ28udXRpbHMuZGVjb3JhdG9ycyBpbXBvcnQgbWV0aG9k
X2RlY29yYXRvcgotCi1mcm9tIGV3cy5tb2RlbHMuYnVpbGQgaW1wb3J0IEJ1aWxkCi1mcm9tIGV3
cy5tb2RlbHMuc3RlcCBpbXBvcnQgU3RlcAotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCi0KLQotQG1ldGhvZF9kZWNvcmF0b3IoY3NyZl9leGVtcHQsIG5hbWU9J2Rpc3BhdGNo
JykKLWNsYXNzIFJlc3VsdHMoVmlldyk6Ci0gICAgZGVmIHBvc3Qoc2VsZiwgcmVxdWVzdCk6Ci0g
ICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKHJlcXVlc3QuYm9keSkKLQotICAgICAgICBpZiBkYXRh
LmdldCgnRVdTX0FQSV9LRVknKSAhPSBvcy5nZXRlbnYoJ0VXU19BUElfS0VZJywgTm9uZSk6Ci0g
ICAgICAgICAgICBfbG9nLmVycm9yKCdJbmNvcnJlY3QgQVBJIEtleSB7fS4gSG9zdDoge30uIEln
bm9yaW5nIGRhdGEuJy5mb3JtYXQoZGF0YS5nZXQoJ0VXU19BUElfS0VZJyksIGRhdGEuZ2V0KCdo
b3N0bmFtZScpKSkKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoJ0luY29ycmVjdCBB
UEkgS2V5IHJlY2VpdmVkJykKLQotICAgICAgICBpZiBkYXRhLmdldCgndHlwZScpID09IHUnZXdz
LWJ1aWxkJzoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLmJ1aWxkX2V2ZW50KGRhdGEpCi0KLSAg
ICAgICAgaWYgZGF0YS5nZXQoJ3R5cGUnKSA9PSB1J2V3cy1zdGVwJzoKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLnN0ZXBfZXZlbnQoZGF0YSkKLQotICAgICAgICBfbG9nLmVycm9yKCdVbmV4cGVj
dGVkIGRhdGEgdHlwZSByZWNlaXZlZDoge30nLmZvcm1hdChkYXRhLmdldCgndHlwZScpKSkKLSAg
ICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgnVW5leHBlY3RlZCBkYXRhIHR5cGUgcmVjZWl2ZWQ6
IHt9Jy5mb3JtYXQoZGF0YS5nZXQoJ3R5cGUnKSkpCi0KLSAgICBkZWYgYnVpbGRfZXZlbnQoc2Vs
ZiwgZGF0YSk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmlzX3ZhbGlkX3Jlc3VsdChkYXRhKToKLSAg
ICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoIkluY29tcGxldGUgZGF0YS4iKQotCi0gICAg
ICAgIHBhdGNoX2lkID0gZGF0YVsncGF0Y2hfaWQnXQotICAgICAgICBpZiBub3QgcGF0Y2hfaWQg
b3IgcGF0Y2hfaWQgPCAxOgotICAgICAgICAgICAgcmV0dXJuIEh0dHBSZXNwb25zZSgiSW52YWxp
ZCBwYXRjaCBpZDoge30uIi5mb3JtYXQocGF0Y2hfaWQpKQotCi0gICAgICAgIEJ1aWxkLnNhdmVf
YnVpbGQocGF0Y2hfaWQ9aW50KHBhdGNoX2lkKSwgaG9zdG5hbWU9ZGF0YVsnaG9zdG5hbWUnXSwg
YnVpbGRfaWQ9ZGF0YVsnYnVpbGRfaWQnXSwgYnVpbGRlcl9pZD1kYXRhWydidWlsZGVyX2lkJ10s
IGJ1aWxkZXJfbmFtZT1kYXRhWydidWlsZGVyX25hbWUnXSwKLSAgICAgICAgICAgICAgICAgICBi
dWlsZGVyX2Rpc3BsYXlfbmFtZT1kYXRhWydidWlsZGVyX2Rpc3BsYXlfbmFtZSddLCBudW1iZXI9
ZGF0YVsnbnVtYmVyJ10sIHJlc3VsdD1kYXRhWydyZXN1bHQnXSwKLSAgICAgICAgICAgICAgICAg
ICBzdGF0ZV9zdHJpbmc9ZGF0YVsnc3RhdGVfc3RyaW5nJ10sIHN0YXJ0ZWRfYXQ9ZGF0YVsnc3Rh
cnRlZF9hdCddLCBjb21wbGV0ZV9hdD1kYXRhWydjb21wbGV0ZV9hdCddKQotICAgICAgICByZXR1
cm4gSHR0cFJlc3BvbnNlKCJTYXZlZCBkYXRhIGZvciBwYXRjaDoge30uXG4iLmZvcm1hdChwYXRj
aF9pZCkpCi0KLSAgICBkZWYgc3RlcF9ldmVudChzZWxmLCBkYXRhKToKLSAgICAgICAgaWYgbm90
IHNlbGYuaXNfdmFsaWRfcmVzdWx0KGRhdGEpOgotICAgICAgICAgICAgcmV0dXJuIEh0dHBSZXNw
b25zZSgiSW5jb21wbGV0ZSBkYXRhLiIpCi0KLSAgICAgICAgU3RlcC5zYXZlX3N0ZXAoaG9zdG5h
bWU9ZGF0YVsnaG9zdG5hbWUnXSwgc3RlcF9pZD1kYXRhWydzdGVwX2lkJ10sIGJ1aWxkX2lkPWRh
dGFbJ2J1aWxkX2lkJ10sIHJlc3VsdD1kYXRhWydyZXN1bHQnXSwKLSAgICAgICAgICAgICAgICAg
ICBzdGF0ZV9zdHJpbmc9ZGF0YVsnc3RhdGVfc3RyaW5nJ10sIHN0YXJ0ZWRfYXQ9ZGF0YVsnc3Rh
cnRlZF9hdCddLCBjb21wbGV0ZV9hdD1kYXRhWydjb21wbGV0ZV9hdCddKQotICAgICAgICByZXR1
cm4gSHR0cFJlc3BvbnNlKCJTYXZlZCBkYXRhIGZvciBzdGVwOiB7fS5cbiIuZm9ybWF0KGRhdGFb
J3N0ZXBfaWQnXSkpCi0KLSAgICBkZWYgaXNfdmFsaWRfcmVzdWx0KHNlbGYsIGRhdGEpOgotICAg
ICAgICBpZiBkYXRhWyd0eXBlJ10gbm90IGluIFt1J2V3cy1idWlsZCcsIHUnZXdzLXN0ZXAnXToK
LSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkludmFsaWQgZGF0YSB0eXBlOiB7fSIuZm9ybWF0KGRh
dGFbJ3R5cGUnXSkpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgICAgICByZXF1aXJl
ZF9rZXlzID0ge3UnZXdzLWJ1aWxkJzogWydob3N0bmFtZScsICdwYXRjaF9pZCcsICdidWlsZF9p
ZCcsICdidWlsZGVyX2lkJywgJ2J1aWxkZXJfbmFtZScsICdidWlsZGVyX2Rpc3BsYXlfbmFtZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ251bWJlcicsICdy
ZXN1bHQnLCAnc3RhdGVfc3RyaW5nJywgJ3N0YXJ0ZWRfYXQnLCAnY29tcGxldGVfYXQnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICB1J2V3cy1zdGVwJzogWydob3N0bmFtZScsICdzdGVwX2lk
JywgJ2J1aWxkX2lkJywgJ3Jlc3VsdCcsICdzdGF0ZV9zdHJpbmcnLCAnc3RhcnRlZF9hdCcsICdj
b21wbGV0ZV9hdCddfQotCi0gICAgICAgIGZvciBrZXkgaW4gcmVxdWlyZWRfa2V5cy5nZXQoZGF0
YS5nZXQoJ3R5cGUnKSk6Ci0gICAgICAgICAgICBpZiBrZXkgbm90IGluIGRhdGE6Ci0gICAgICAg
ICAgICAgICAgX2xvZy53YXJuKCdEYXRhIGlzIG1pc3Npbmcge30nLmZvcm1hdChrZXkpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQpJbmRleDogVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3MvcmV0cnlwYXRjaC5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9yZXRy
eXBhdGNoLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy92aWV3cy9yZXRyeXBhdGNoLnB5CShub25leGlzdGVudCkKQEAgLTEsNzIgKzAs
MCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKLQotaW1wb3J0IGxvZ2dpbmcKLQotZnJvbSBk
amFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1w
b3J0IHJlZGlyZWN0LCByZW5kZXIKLWZyb20gZGphbmdvLnZpZXdzIGltcG9ydCBWaWV3Ci1mcm9t
IGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNsaWNramFja2luZyBpbXBvcnQgeGZyYW1lX29wdGlv
bnNfZXhlbXB0Ci0KLWZyb20gZXdzLmNvbW1vbi5idWlsZGJvdCBpbXBvcnQgQnVpbGRib3QKLWZy
b20gZXdzLm1vZGVscy5idWlsZCBpbXBvcnQgQnVpbGQKLWZyb20gZXdzLm1vZGVscy5wYXRjaCBp
bXBvcnQgUGF0Y2gKLWZyb20gZXdzLnZpZXdzLnN0YXR1c2J1YmJsZSBpbXBvcnQgU3RhdHVzQnVi
YmxlCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1jbGFzcyBSZXRy
eVBhdGNoKFZpZXcpOgotICAgIGRlZiBnZXQoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHJldHVy
biByZW5kZXIocmVxdWVzdCwgJ3JldHJ5Lmh0bWwnLCB7fSkKLQotICAgIEB4ZnJhbWVfb3B0aW9u
c19leGVtcHQKLSAgICBkZWYgcG9zdChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcGF0Y2hfaWQgPSByZXF1ZXN0LlBPU1QuZ2V0KCdwYXRjaF9pZCcpCi0gICAgICAg
ICAgICBwYXRjaF9pZCA9IGludChwYXRjaF9pZCkKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9y
LCBUeXBlRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCdJbnZh
bGlkIHBhdGNoIGlkOiB7fScuZm9ybWF0KHJlcXVlc3QuUE9TVC5nZXQoJ3BhdGNoX2lkJykpKQot
Ci0gICAgICAgIGJ1aWxkc190b19yZXRyeSA9IFN0YXR1c0J1YmJsZSgpLmZpbmRfZmFpbGVkX2J1
aWxkc19mb3JfcGF0Y2gocGF0Y2hfaWQpCi0gICAgICAgIF9sb2cuaW5mbygnUmV0cnlpbmcgcGF0
Y2g6IHt9LiBGYWlsZWQgYnVpbGRzOiB7fScuZm9ybWF0KHBhdGNoX2lkLCBidWlsZHNfdG9fcmV0
cnkpKQotICAgICAgICBpZiBub3QgYnVpbGRzX3RvX3JldHJ5OgotICAgICAgICAgICAgcmV0dXJu
IEh0dHBSZXNwb25zZSgnTm8gcmVjZW50IGZhaWxlZCBidWlsZChzKSBmb3VuZCBmb3IgcGF0Y2gg
e30uJy5mb3JtYXQocGF0Y2hfaWQpKQotCi0gICAgICAgIGZhaWxlZF90b19yZXRyeV9idWlsZHMg
PSBbXQotICAgICAgICBmb3IgYnVpbGQgaW4gYnVpbGRzX3RvX3JldHJ5OgotICAgICAgICAgICAg
aWYgYnVpbGQucmV0cmllZDoKLSAgICAgICAgICAgICAgICBfbG9nLndhcm4oJ0J1aWxkIHt9IGZv
ciBwYXRjaCB7fSBpcyBhbHJlYWR5IHJldHJpZWQuJy5mb3JtYXQoYnVpbGQudWlkLCBwYXRjaF9p
ZCkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIEJ1aWxkLnNldF9yZXRy
aWVkKGJ1aWxkLnVpZCwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBCdWlsZGJvdC5yZXRyeV9i
dWlsZChidWlsZC5idWlsZGVyX2lkLCBidWlsZC5udW1iZXIpOgotICAgICAgICAgICAgICAgIGZh
aWxlZF90b19yZXRyeV9idWlsZHMuYXBwZW5kKGJ1aWxkKQotICAgICAgICAgICAgICAgIEJ1aWxk
LnNldF9yZXRyaWVkKGJ1aWxkLnVpZCwgRmFsc2UpCi0KLSAgICAgICAgaWYgbGVuKGZhaWxlZF90
b19yZXRyeV9idWlsZHMpID4gMDoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnRmFpbGVkIHRvIHJl
dHJ5IHt9IGJ1aWxkKHMpIGZvciBwYXRjaCB7fS4nLmZvcm1hdChsZW4oZmFpbGVkX3RvX3JldHJ5
X2J1aWxkcyksIHBhdGNoX2lkKQotICAgICAgICAgICAgbWVzc2FnZSArPSAnIFBsZWFzZSBjb250
YWN0IGFkbWluQHdlYmtpdC5vcmcgaWYgdGhlIHByb2JsZW0gcGVyc2lzdC4nCi0gICAgICAgICAg
ICBfbG9nLndhcm4obWVzc2FnZSkKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UobWVz
c2FnZSkKLSAgICAgICAgcmV0dXJuIHJlZGlyZWN0KCcvc3RhdHVzLWJ1YmJsZS97fScuZm9ybWF0
KHBhdGNoX2lkKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3Zp
ZXdzL3N0YXR1cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YXBwL2V3cy92aWV3cy9zdGF0dXMucHkJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdzL3N0YXR1cy5weQkobm9uZXhpc3RlbnQpCkBA
IC0xLDY3ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0j
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0KLWZyb20gZGphbmdvLmh0
dHAgaW1wb3J0IEpzb25SZXNwb25zZQotZnJvbSBkamFuZ28udmlld3MgaW1wb3J0IFZpZXcKLWZy
b20gZXdzLmNvbW1vbi5idWlsZGJvdCBpbXBvcnQgQnVpbGRib3QKLWZyb20gZXdzLm1vZGVscy5w
YXRjaCBpbXBvcnQgUGF0Y2gKLWZyb20gZXdzLnZpZXdzLnN0YXR1c2J1YmJsZSBpbXBvcnQgU3Rh
dHVzQnViYmxlCi1pbXBvcnQgZXdzLmNvbmZpZyBhcyBjb25maWcKLQotCi1jbGFzcyBTdGF0dXMo
Vmlldyk6Ci0gICAgZGVmIF9idWlsZF9zdGF0dXMoc2VsZiwgcGF0Y2gsIHF1ZXVlKToKLSAgICAg
ICAgYnVpbGQsIF8gPSBTdGF0dXNCdWJibGUoKS5nZXRfbGF0ZXN0X2J1aWxkX2Zvcl9xdWV1ZShw
YXRjaCwgcXVldWUpCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIHJldHVybiB7
fQotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAnc3RhdGUnOiBidWlsZC5yZXN1bHQs
Ci0gICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8ve30vIy9idWlsZGVycy97fS9idWlsZHMve30n
LmZvcm1hdChjb25maWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIGJ1aWxkLmJ1aWxkZXJfaWQsIGJ1
aWxkLm51bWJlciksCi0gICAgICAgICAgICAndGltZXN0YW1wJzogYnVpbGQuY29tcGxldGVfYXQs
Ci0gICAgICAgIH0KLQotICAgIGRlZiBfYnVpbGRfc3RhdHVzZXNfZm9yX3BhdGNoKHNlbGYsIHBh
dGNoKToKLSAgICAgICAgaWYgbm90IHBhdGNoOgotICAgICAgICAgICAgcmV0dXJuIFtdCi0KLSAg
ICAgICAgc3RhdHVzZXMgPSB7fQotICAgICAgICBpZiBwYXRjaC5zZW50X3RvX2J1aWxkYm90Ogot
ICAgICAgICAgICAgZm9yIHF1ZXVlIGluIFN0YXR1c0J1YmJsZS5BTExfUVVFVUVTOgotICAgICAg
ICAgICAgICAgIHN0YXR1cyA9IHNlbGYuX2J1aWxkX3N0YXR1cyhwYXRjaCwgcXVldWUpCi0gICAg
ICAgICAgICAgICAgaWYgc3RhdHVzOgotICAgICAgICAgICAgICAgICAgICBzdGF0dXNlc1txdWV1
ZV0gPSBzdGF0dXMKLQotICAgICAgICBpZiBwYXRjaC5zZW50X3RvX2NvbW1pdF9xdWV1ZToKLSAg
ICAgICAgICAgIGNxX3N0YXR1cyA9IHNlbGYuX2J1aWxkX3N0YXR1cyhwYXRjaCwgJ2NvbW1pdCcp
Ci0gICAgICAgICAgICBpZiBjcV9zdGF0dXM6Ci0gICAgICAgICAgICAgICAgc3RhdHVzZXNbJ2Nv
bW1pdCddID0gY3Ffc3RhdHVzCi0KLSAgICAgICAgcmV0dXJuIHN0YXR1c2VzCi0KLSAgICBkZWYg
Z2V0KHNlbGYsIHJlcXVlc3QsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0Y2hfaWQgPSBpbnQocGF0
Y2hfaWQpCi0gICAgICAgIHBhdGNoID0gUGF0Y2guZ2V0X3BhdGNoKHBhdGNoX2lkKQotICAgICAg
ICByZXNwb25zZV9kYXRhID0gc2VsZi5fYnVpbGRfc3RhdHVzZXNfZm9yX3BhdGNoKHBhdGNoKQot
ICAgICAgICByZXR1cm4gSnNvblJlc3BvbnNlKHJlc3BvbnNlX2RhdGEpCkluZGV4OiBUb29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9zdGF0dXNidWJibGUucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mvc3RhdHVz
YnViYmxlLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYXBwL2V3cy92aWV3cy9zdGF0dXNidWJibGUucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNjAg
KzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKLSMgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotIyBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMCi0jIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi0jIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0jIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksCi0jIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgZGF0ZXRpbWUK
LWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLQotZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0
cFJlc3BvbnNlCi1mcm9tIGRqYW5nby5zaG9ydGN1dHMgaW1wb3J0IHJlbmRlcgotZnJvbSBkamFu
Z28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1mcm9tIGRqYW5nby52aWV3cyBpbXBvcnQgVmlldwot
ZnJvbSBkamFuZ28udmlld3MuZGVjb3JhdG9ycy5jbGlja2phY2tpbmcgaW1wb3J0IHhmcmFtZV9v
cHRpb25zX2V4ZW1wdAotZnJvbSBld3MuY29tbW9uLmJ1aWxkYm90IGltcG9ydCBCdWlsZGJvdAot
ZnJvbSBld3MubW9kZWxzLmJ1aWxkIGltcG9ydCBCdWlsZAotZnJvbSBld3MubW9kZWxzLnBhdGNo
IGltcG9ydCBQYXRjaAotaW1wb3J0IGV3cy5jb25maWcgYXMgY29uZmlnCi0KLV9sb2cgPSBsb2dn
aW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1jbGFzcyBTdGF0dXNCdWJibGUoVmlldyk6Ci0g
ICAgIyBUaGVzZSBxdWV1ZSBuYW1lcyBhcmUgZnJvbSBzaG9ydG5hbWUgaW4gaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvYnJvd3Nlci93ZWJraXQvdHJ1bmsvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
ZXdzLWJ1aWxkL2NvbmZpZy5qc29uCi0gICAgIyBGSVhNRTogQXV0by1nZW5lcmF0ZSB0aGlzIGxp
c3QgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTY0MAotICAgICMg
Tm90ZTogVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiB0aGUgb3JkZXIgb2Ygd2hpY2ggYnViYmxlcyBh
cHBlYXIgaW4gYnVnemlsbGEuCi0gICAgQUxMX1FVRVVFUyA9IFsnc3R5bGUnLCAnaW9zJywgJ2lv
cy1zaW0nLCAnbWFjJywgJ21hYy1kZWJ1ZycsICdtYWMtQVMnLCAndHYnLCAndHYtc2ltJywgJ3dh
dGNoJywgJ3dhdGNoLXNpbScsICdndGsnLCAnd3BlJywgJ3dpbmNhaXJvJywgJ3dpbicsCi0gICAg
ICAgICAgICAgICAgICAnaW9zLXdrMicsICdtYWMtd2sxJywgJ21hYy13azInLCAnbWFjLWRlYnVn
LXdrMScsICdhcGktaW9zJywgJ2FwaS1tYWMnLCAnYXBpLWd0aycsCi0gICAgICAgICAgICAgICAg
ICAnYmluZGluZ3MnLCAnanNjJywgJ2pzYy1hcm12NycsICdqc2MtYXJtdjctdGVzdHMnLCAnanNj
LW1pcHMnLCAnanNjLW1pcHMtdGVzdHMnLCAnanNjLWkzODYnLCAnd2Via2l0cGVybCcsICd3ZWJr
aXRweScsICdzZXJ2aWNlcyddCi0gICAgIyBGSVhNRTogQXV0by1nZW5lcmF0ZSB0aGUgcXVldWUn
cyB0cmlnZ2VyIHJlbGF0aW9uc2hpcAotICAgIFFVRVVFX1RSSUdHRVJTID0gewotICAgICAgICAn
YXBpLWlvcyc6ICdpb3Mtc2ltJywKLSAgICAgICAgJ2lvcy13azInOiAnaW9zLXNpbScsCi0gICAg
ICAgICdhcGktbWFjJzogJ21hYycsCi0gICAgICAgICdtYWMtd2sxJzogJ21hYycsCi0gICAgICAg
ICdtYWMtd2syJzogJ21hYycsCi0gICAgICAgICdtYWMtZGVidWctd2sxJzogJ21hYy1kZWJ1Zycs
Ci0gICAgICAgICdhcGktZ3RrJzogJ2d0aycsCi0gICAgICAgICdqc2MtbWlwcy10ZXN0cyc6ICdq
c2MtbWlwcycsCi0gICAgICAgICdqc2MtYXJtdjctdGVzdHMnOiAnanNjLWFybXY3JywKLSAgICB9
Ci0KLSAgICBTVEVQU19UT19ISURFID0gWydeQXJjaGl2ZWQgYnVpbHQgcHJvZHVjdCQnLCAnXlVw
bG9hZGVkIGJ1aWx0IHByb2R1Y3QkJywgJ15UcmFuc2ZlcnJlZCBhcmNoaXZlIHRvIFMzJCcsCi0g
ICAgICAgICAgICAgICAgICAgICAnXkFyY2hpdmVkIHRlc3QgcmVzdWx0cyQnLCAnXlVwbG9hZGVk
IHRlc3QgcmVzdWx0cyQnLCAnXkV4dHJhY3RlZCB0ZXN0IHJlc3VsdHMkJywKLSAgICAgICAgICAg
ICAgICAgICAgICdeRG93bmxvYWRlZCBidWlsdCBwcm9kdWN0JCcsICdeRXh0cmFjdGVkIGJ1aWx0
IHByb2R1Y3QkJywKLSAgICAgICAgICAgICAgICAgICAgICdeQ3Jhc2ggY29sbGVjdGlvbiBoYXMg
cXVpZXNjZWQkJywgJ15UcmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24kJywKLSAgICAgICAg
ICAgICAgICAgICAgICdeQ2xlYW5lZCBhbmQgdXBkYXRlZCB3b3JraW5nIGRpcmVjdG9yeSQnLCAn
XkNoZWNrZWQgb3V0IHJlcXVpcmVkIHJldmlzaW9uJCcsICdeVXBkYXRlZCB3b3JraW5nIGRpcmVj
dG9yeSQnLAotICAgICAgICAgICAgICAgICAgICAgJ15WYWxpZGF0ZWQgcGF0Y2gkJywgJ15LaWxs
ZWQgb2xkIHByb2Nlc3NlcyQnLCAnXkNvbmZpZ3VyZWQgYnVpbGQkJywgJ15PUzouKlhjb2RlOics
ICcoc2tpcHBlZCknLAotICAgICAgICAgICAgICAgICAgICAgJ15QcmludGVkIGNvbmZpZ3VyYXRp
b24kJywgJ15QYXRjaCBjb250YWlucyByZWxldmFudCBjaGFuZ2VzJCcsICdeRGVsZXRlZCAuZ2l0
L2luZGV4LmxvY2skJywKLSAgICAgICAgICAgICAgICAgICAgICdedHJpZ2dlcmVkLiokJywgJ15G
b3VuZCBtb2RpZmllZCBDaGFuZ2VMb2dzJCcsICdeQ3JlYXRlZCBsb2NhbCBnaXQgY29tbWl0JCcs
ICdeU2V0IGJ1aWxkIHN1bW1hcnkkJywKLSAgICAgICAgICAgICAgICAgICAgICdeVmFsaWRhdGVk
IGNvbW1pdGVyJCcsICdeVmFsaWRhdGVkIGNvbW1pdGVyIGFuZCByZXZpZXdlciQnLCAnXlZhbGlk
YXRlZCBDaGFuZ2VMb2cgYW5kIFJldmlld2VyJCcsCi0gICAgICAgICAgICAgICAgICAgICAnXlJl
bW92ZWQgZmxhZ3Mgb24gYnVnemlsbGEgcGF0Y2gkJywgJ15DaGVja2VkIHBhdGNoIHN0YXR1cyBv
biBvdGhlciBxdWV1ZXMkJ10KLSAgICBEQVlTX1RPX0NIRUNLID0gMwotICAgIEJVSUxERVJfSUNP
TiA9IHUnXFUwMDAxZjZlMCcKLSAgICBURVNURVJfSUNPTiA9IHUnXFUwMDAxZjUyYycKLSAgICBC
VUlMRF9SRVRSWV9NU0cgPSAncmV0cnlpbmcgYnVpbGQnCi0KLSAgICBkZWYgX2J1aWxkX2J1YmJs
ZShzZWxmLCBwYXRjaCwgcXVldWUsIGhpZGVfaWNvbnM9RmFsc2UpOgotICAgICAgICBidWJibGUg
PSB7Ci0gICAgICAgICAgICAnbmFtZSc6IHF1ZXVlLAotICAgICAgICB9Ci0gICAgICAgIGlzX3Rl
c3Rlcl9xdWV1ZSA9IHNlbGYuX2lzX3Rlc3Rlcl9xdWV1ZShxdWV1ZSkKLSAgICAgICAgaXNfYnVp
bGRlcl9xdWV1ZSA9IHNlbGYuX2lzX2J1aWxkZXJfcXVldWUocXVldWUpCi0gICAgICAgIGlmIGhp
ZGVfaWNvbnMgPT0gRmFsc2U6Ci0gICAgICAgICAgICBpZiBpc190ZXN0ZXJfcXVldWU6Ci0gICAg
ICAgICAgICAgICAgYnViYmxlWyduYW1lJ10gPSBTdGF0dXNCdWJibGUuVEVTVEVSX0lDT04gKyAn
ICAnICsgYnViYmxlWyduYW1lJ10KLSAgICAgICAgICAgIGlmIGlzX2J1aWxkZXJfcXVldWU6Ci0g
ICAgICAgICAgICAgICAgYnViYmxlWyduYW1lJ10gPSBTdGF0dXNCdWJibGUuQlVJTERFUl9JQ09O
ICsgJyAgJyArIGJ1YmJsZVsnbmFtZSddCi0KLSAgICAgICAgYnVpbGRzLCBpc19wYXJlbnRfYnVp
bGQgPSBzZWxmLmdldF9hbGxfYnVpbGRzX2Zvcl9xdWV1ZShwYXRjaCwgcXVldWUsIHNlbGYuX2dl
dF9wYXJlbnRfcXVldWUocXVldWUpKQotICAgICAgICBidWlsZCA9IE5vbmUKLSAgICAgICAgaWYg
YnVpbGRzOgotICAgICAgICAgICAgYnVpbGQgPSBidWlsZHNbMF0KLSAgICAgICAgICAgIGJ1aWxk
cyA9IGJ1aWxkc1s6MTBdICAjIExpbWl0IG51bWJlciBvZiBidWlsZHMgdG8gZGlzcGxheSBpbiBz
dGF0dXMtYnViYmxlIGhvdmVyIG92ZXIgbWVzc2FnZQotICAgICAgICBpZiBub3Qgc2VsZi5fc2hv
dWxkX3Nob3dfYnViYmxlX2Zvcl9idWlsZChidWlsZCk6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotCi0gICAgICAgIGlmIG5vdCBidWlsZDoKLSAgICAgICAgICAgIGJ1YmJsZVsnc3RhdGUnXSA9
ICdub25lJwotICAgICAgICAgICAgcXVldWVfcG9zaXRpb24gPSBzZWxmLl9xdWV1ZV9wb3NpdGlv
bihwYXRjaCwgcXVldWUsIHNlbGYuX2dldF9wYXJlbnRfcXVldWUocXVldWUpKQotICAgICAgICAg
ICAgYnViYmxlWydxdWV1ZV9wb3NpdGlvbiddID0gcXVldWVfcG9zaXRpb24KLSAgICAgICAgICAg
IGlmIG5vdCBxdWV1ZV9wb3NpdGlvbjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAg
ICAgICAgICAgaWYgc2VsZi5fZ2V0X3BhcmVudF9xdWV1ZShxdWV1ZSk6Ci0gICAgICAgICAgICAg
ICAgcXVldWUgPSBzZWxmLl9nZXRfcGFyZW50X3F1ZXVlKHF1ZXVlKQotICAgICAgICAgICAgcXVl
dWVfZnVsbF9uYW1lID0gQnVpbGRib3QucXVldWVfbmFtZV9ieV9zaG9ydG5hbWVfbWFwcGluZy5n
ZXQocXVldWUpCi0gICAgICAgICAgICBpZiBxdWV1ZV9mdWxsX25hbWU6Ci0gICAgICAgICAgICAg
ICAgYnViYmxlWyd1cmwnXSA9ICdodHRwczovL3t9LyMvYnVpbGRlcnMve30nLmZvcm1hdChjb25m
aWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIHF1ZXVlX2Z1bGxfbmFtZSkKLSAgICAgICAgICAgIGJ1
YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSAnV2FpdGluZyBpbiBxdWV1ZSwgcHJvY2Vzc2luZyBo
YXMgbm90IHN0YXJ0ZWQgeWV0LlxuXG5Qb3NpdGlvbiBpbiBxdWV1ZToge30nLmZvcm1hdChxdWV1
ZV9wb3NpdGlvbikKLSAgICAgICAgICAgIHJldHVybiBidWJibGUKLQotICAgICAgICBidWJibGVb
J3VybCddID0gJ2h0dHBzOi8ve30vIy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChjb25m
aWcuQlVJTERCT1RfU0VSVkVSX0hPU1QsIGJ1aWxkLmJ1aWxkZXJfaWQsIGJ1aWxkLm51bWJlcikK
LSAgICAgICAgYnVpbGRlcl9mdWxsX25hbWUgPSBidWlsZC5idWlsZGVyX25hbWUucmVwbGFjZSgn
LScsICcgJykKLQotICAgICAgICBpZiBidWlsZC5yZXN1bHQgaXMgTm9uZTogICMgSW4tcHJvZ3Jl
c3MgYnVpbGQKLSAgICAgICAgICAgIGlmIHNlbGYuX2RvZXNfYnVpbGRfY29udGFpbnNfYW55X2Zh
aWxlZF9zdGVwKGJ1aWxkKToKLSAgICAgICAgICAgICAgICBidWJibGVbJ3N0YXRlJ10gPSAncHJv
dmlzaW9uYWwtZmFpbCcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnViYmxl
WydzdGF0ZSddID0gJ3N0YXJ0ZWQnCi0gICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVzc2Fn
ZSddID0gJ0J1aWxkIGlzIGluLXByb2dyZXNzLiBSZWNlbnQgbWVzc2FnZXM6JyArIHNlbGYuX3N0
ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykKLSAgICAgICAgZWxpZiBi
dWlsZC5yZXRyaWVkOgotICAgICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ3N0YXJ0ZWQnCi0g
ICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVzc2FnZSddID0gJ1dhaXRpbmcgZm9yIGF2YWls
YWJsZSBib3QgdG8gcmV0cnkgdGhlIGJ1aWxkLlxuXG5SZWNlbnQgbWVzc2FnZXM6JyArIHNlbGYu
X3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykKLSAgICAgICAgZWxp
ZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuU1VDQ0VTUzoKLSAgICAgICAgICAgIGlmIGlzX3Bh
cmVudF9idWlsZDoKLSAgICAgICAgICAgICAgICBpZiBwYXRjaC5jcmVhdGVkIDwgKHRpbWV6b25l
Lm5vdygpIC0gZGF0ZXRpbWUudGltZWRlbHRhKGRheXM9U3RhdHVzQnViYmxlLkRBWVNfVE9fQ0hF
Q0spKToKLSAgICAgICAgICAgICAgICAgICAgIyBEbyBub3QgZGlzcGxheSBidWJibGUgZm9yIG9s
ZCBwYXRjaCBmb3Igd2hpY2ggbm8gYnVpbGQgaGFzIGJlZW4gcmVwb3J0ZWQgb24gZ2l2ZW4gcXVl
dWUuCi0gICAgICAgICAgICAgICAgICAgICMgTW9zdCBsaWtlbHkgdGhlIHBhdGNoIHdvdWxkIG5l
dmVyIGJlIHByb2Nlc3NlZCBvbiB0aGlzIHF1ZXVlLCBzaW5jZSBlaXRoZXIgdGhlIHF1ZXVlIHdh
cwotICAgICAgICAgICAgICAgICAgICAjIGFkZGVkIGFmdGVyIHRoZSBwYXRjaCB3YXMgc3VibWl0
dGVkLCBvciBidWlsZCByZXF1ZXN0IGZvciB0aGF0IHBhdGNoIHdhcyBjYW5jZWxsZWQuCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICAgICAgYnViYmxlWydzdGF0
ZSddID0gJ3N0YXJ0ZWQnCi0gICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2Un
XSA9ICdXYWl0aW5nIHRvIHJ1biB0ZXN0cy4nCi0gICAgICAgICAgICAgICAgcXVldWVfZnVsbF9u
YW1lID0gQnVpbGRib3QucXVldWVfbmFtZV9ieV9zaG9ydG5hbWVfbWFwcGluZy5nZXQocXVldWUp
Ci0gICAgICAgICAgICAgICAgaWYgcXVldWVfZnVsbF9uYW1lOgotICAgICAgICAgICAgICAgICAg
ICBidWJibGVbJ3VybCddID0gJ2h0dHBzOi8ve30vIy9idWlsZGVycy97fScuZm9ybWF0KGNvbmZp
Zy5CVUlMREJPVF9TRVJWRVJfSE9TVCwgcXVldWVfZnVsbF9uYW1lKQotICAgICAgICAgICAgICAg
ICAgICBidWlsZGVyX2Z1bGxfbmFtZSA9IHF1ZXVlX2Z1bGxfbmFtZS5yZXBsYWNlKCctJywgJyAn
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBidWJibGVbJ3N0YXRlJ10gPSAn
cGFzcycKLSAgICAgICAgICAgICAgICBpZiBpc19idWlsZGVyX3F1ZXVlIGFuZCBpc190ZXN0ZXJf
cXVldWU6Ci0gICAgICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSAn
QnVpbHQgc3VjY2Vzc2Z1bGx5IGFuZCBwYXNzZWQgdGVzdHMnCi0gICAgICAgICAgICAgICAgZWxp
ZiBpc19idWlsZGVyX3F1ZXVlOgotICAgICAgICAgICAgICAgICAgICBidWJibGVbJ2RldGFpbHNf
bWVzc2FnZSddID0gJ0J1aWx0IHN1Y2Nlc3NmdWxseScKLSAgICAgICAgICAgICAgICBlbGlmIGlz
X3Rlc3Rlcl9xdWV1ZToKLSAgICAgICAgICAgICAgICAgICAgaWYgcXVldWUgPT0gJ3N0eWxlJzoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSAnUGFz
c2VkIHN0eWxlIGNoZWNrJwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdQYXNzZWQgdGVzdHMnCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxz
X21lc3NhZ2UnXSA9ICdQYXNzJwotICAgICAgICBlbGlmIGJ1aWxkLnJlc3VsdCA9PSBCdWlsZGJv
dC5XQVJOSU5HUzoKLSAgICAgICAgICAgIGJ1YmJsZVsnc3RhdGUnXSA9ICdwYXNzJwotICAgICAg
ICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdXYXJuaW5nJyArIHNlbGYuX3N0ZXBz
X21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykKLSAgICAgICAgZWxpZiBidWls
ZC5yZXN1bHQgPT0gQnVpbGRib3QuRkFJTFVSRToKLSAgICAgICAgICAgIGJ1YmJsZVsnc3RhdGUn
XSA9ICdmYWlsJwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9IHNlbGYu
X21vc3RfcmVjZW50X2ZhaWx1cmVfbWVzc2FnZShidWlsZCkKLSAgICAgICAgICAgIGlmIFN0YXR1
c0J1YmJsZS5CVUlMRF9SRVRSWV9NU0cgaW4gYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXToKLSAg
ICAgICAgICAgICAgICBidWJibGVbJ3N0YXRlJ10gPSAncHJvdmlzaW9uYWwtZmFpbCcKLSAgICAg
ICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuU0tJUFBFRDoKLSAgICAgICAgICAgIGJ1
YmJsZVsnc3RhdGUnXSA9ICdub25lJwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3Nh
Z2UnXSA9ICdUaGUgcGF0Y2ggaXMgbm8gbG9uZ2VyIGVsaWdpYmxlIGZvciBwcm9jZXNzaW5nLicK
LSAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyJ0J1ZyAuKiBpcyBhbHJlYWR5IGNsb3NlZCcsIGJ1
aWxkLnN0YXRlX3N0cmluZyk6Ci0gICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3Nh
Z2UnXSArPSAnIEJ1ZyB3YXMgYWxyZWFkeSBjbG9zZWQgd2hlbiBFV1MgYXR0ZW1wdGVkIHRvIHBy
b2Nlc3MgaXQuJwotICAgICAgICAgICAgZWxpZiByZS5zZWFyY2gocidQYXRjaCAuKiBpcyBtYXJr
ZWQgci0nLCBidWlsZC5zdGF0ZV9zdHJpbmcpOgotICAgICAgICAgICAgICAgIGJ1YmJsZVsnZGV0
YWlsc19tZXNzYWdlJ10gKz0gJyBQYXRjaCB3YXMgYWxyZWFkeSBtYXJrZWQgci0gd2hlbiBFV1Mg
YXR0ZW1wdGVkIHRvIHByb2Nlc3MgaXQuJwotICAgICAgICAgICAgZWxpZiByZS5zZWFyY2gocidQ
YXRjaCAuKiBpcyBvYnNvbGV0ZScsIGJ1aWxkLnN0YXRlX3N0cmluZyk6Ci0gICAgICAgICAgICAg
ICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSArPSAnIFBhdGNoIHdhcyBvYnNvbGV0ZSB3aGVu
IEVXUyBhdHRlbXB0ZWQgdG8gcHJvY2VzcyBpdC4nCi0KLSAgICAgICAgICAgIGlmIGxlbihidWls
ZHMpID4gMToKLSAgICAgICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVzc2FnZSddICs9ICdc
blNvbWUgbWVzc2FnZXMgd2VyZSBsb2dnZWQgd2hpbGUgdGhlIHBhdGNoIHdhcyBzdGlsbCBlbGln
aWJsZTonCi0gICAgICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSArPSBzZWxm
Ll9zdGVwc19tZXNzYWdlc19mcm9tX211bHRpcGxlX2J1aWxkcyhidWlsZHMpCi0KLSAgICAgICAg
ZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuRVhDRVBUSU9OOgotICAgICAgICAgICAgYnVi
YmxlWydzdGF0ZSddID0gJ2Vycm9yJwotICAgICAgICAgICAgYnViYmxlWydkZXRhaWxzX21lc3Nh
Z2UnXSA9ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQuIFJlY2VudCBtZXNzYWdlczonICsg
c2VsZi5fc3RlcHNfbWVzc2FnZXNfZnJvbV9tdWx0aXBsZV9idWlsZHMoYnVpbGRzKQotICAgICAg
ICBlbGlmIGJ1aWxkLnJlc3VsdCA9PSBCdWlsZGJvdC5SRVRSWToKLSAgICAgICAgICAgIGJ1YmJs
ZVsnc3RhdGUnXSA9ICdwcm92aXNpb25hbC1mYWlsJwotICAgICAgICAgICAgYnViYmxlWydkZXRh
aWxzX21lc3NhZ2UnXSA9ICdCdWlsZCBpcyBiZWluZyByZXRyaWVkLiBSZWNlbnQgbWVzc2FnZXM6
JyArIHNlbGYuX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKGJ1aWxkcykKLSAg
ICAgICAgZWxpZiBidWlsZC5yZXN1bHQgPT0gQnVpbGRib3QuQ0FOQ0VMTEVEOgotICAgICAgICAg
ICAgYnViYmxlWydzdGF0ZSddID0gJ25vbmUnCi0gICAgICAgICAgICBidWJibGVbJ2RldGFpbHNf
bWVzc2FnZSddID0gJ0J1aWxkIHdhcyBjYW5jZWxsZWQuIFJlY2VudCBtZXNzYWdlczonICsgc2Vs
Zi5fc3RlcHNfbWVzc2FnZXNfZnJvbV9tdWx0aXBsZV9idWlsZHMoYnVpbGRzKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgYnViYmxlWydzdGF0ZSddID0gJ2Vycm9yJwotICAgICAgICAgICAg
YnViYmxlWydkZXRhaWxzX21lc3NhZ2UnXSA9ICdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VyZWQu
IFJlY2VudCBtZXNzYWdlczonICsgc2VsZi5fc3RlcHNfbWVzc2FnZXNfZnJvbV9tdWx0aXBsZV9i
dWlsZHMoYnVpbGRzKQotCi0gICAgICAgIGlmICdkZXRhaWxzX21lc3NhZ2UnIGluIGJ1YmJsZToK
LSAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gPSBidWlsZGVyX2Z1bGxfbmFt
ZSArICdcblxuJyArIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10KLSAgICAgICAgICAgIG9zX2Rl
dGFpbHMgPSBzZWxmLmdldF9vc19kZXRhaWxzKGJ1aWxkKQotICAgICAgICAgICAgdGltZXN0YW1w
ID0gc2VsZi5nZXRfYnVpbGRfdGltZXN0YW1wKGJ1aWxkKQotICAgICAgICAgICAgaWYgb3NfZGV0
YWlsczoKLSAgICAgICAgICAgICAgICBidWJibGVbJ2RldGFpbHNfbWVzc2FnZSddICs9ICdcblxu
JyArIG9zX2RldGFpbHMgKyAnXG4nICsgdGltZXN0YW1wCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIGJ1YmJsZVsnZGV0YWlsc19tZXNzYWdlJ10gKz0gJ1xuXG4nICsgdGltZXN0
YW1wCi0KLSAgICAgICAgcmV0dXJuIGJ1YmJsZQotCi0gICAgZGVmIF9pc190ZXN0ZXJfcXVldWUo
c2VsZiwgcXVldWUpOgotICAgICAgICBpY29uID0gQnVpbGRib3QuaWNvbnNfZm9yX3F1ZXVlc19t
YXBwaW5nLmdldChxdWV1ZSkKLSAgICAgICAgcmV0dXJuIGljb24gaW4gWyd0ZXN0T25seScsICdi
dWlsZEFuZFRlc3QnXQotCi0gICAgZGVmIF9pc19idWlsZGVyX3F1ZXVlKHNlbGYsIHF1ZXVlKToK
LSAgICAgICAgaWNvbiA9IEJ1aWxkYm90Lmljb25zX2Zvcl9xdWV1ZXNfbWFwcGluZy5nZXQocXVl
dWUpCi0gICAgICAgIHJldHVybiBpY29uIGluIFsnYnVpbGRPbmx5JywgJ2J1aWxkQW5kVGVzdCdd
Ci0KLSAgICBkZWYgX2dldF9wYXJlbnRfcXVldWUoc2VsZiwgcXVldWUpOgotICAgICAgICByZXR1
cm4gU3RhdHVzQnViYmxlLlFVRVVFX1RSSUdHRVJTLmdldChxdWV1ZSkKLQotICAgIGRlZiBnZXRf
b3NfZGV0YWlscyhzZWxmLCBidWlsZCk6Ci0gICAgICAgIGZvciBzdGVwIGluIGJ1aWxkLnN0ZXBf
c2V0LmFsbCgpOgotICAgICAgICAgICAgaWYgc3RlcC5zdGF0ZV9zdHJpbmcuc3RhcnRzd2l0aCgn
T1M6Jyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAuc3RhdGVfc3RyaW5nCi0gICAgICAg
IHJldHVybiAnJwotCi0gICAgZGVmIGdldF9idWlsZF90aW1lc3RhbXAoc2VsZiwgYnVpbGQpOgot
ICAgICAgICBpZiBidWlsZC5jb21wbGV0ZV9hdDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9p
c29fdGltZShidWlsZC5jb21wbGV0ZV9hdCkKLQotICAgICAgICByZWNlbnRfYnVpbGRfc3RlcCA9
IGJ1aWxkLnN0ZXBfc2V0Lmxhc3QoKQotICAgICAgICBpZiByZWNlbnRfYnVpbGRfc3RlcDoKLSAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9pc29fdGltZShyZWNlbnRfYnVpbGRfc3RlcC5zdGFydGVk
X2F0KQotCi0gICAgICAgIHJldHVybiBzZWxmLl9pc29fdGltZShidWlsZC5zdGFydGVkX2F0KQot
Ci0gICAgZGVmIF9pc29fdGltZShzZWxmLCB0aW1lKToKLSAgICAgICAgcmV0dXJuICdbWycgKyBk
YXRldGltZS5kYXRldGltZS5mcm9tdGltZXN0YW1wKHRpbWUpLmlzb2Zvcm1hdCgpICsgJ1pdXScK
LQotICAgIGRlZiBfc3RlcHNfbWVzc2FnZXMoc2VsZiwgYnVpbGQpOgotICAgICAgICByZXR1cm4g
J1xuJy5qb2luKFtzdGVwLnN0YXRlX3N0cmluZyBmb3Igc3RlcCBpbiBidWlsZC5zdGVwX3NldC5h
bGwoKS5vcmRlcl9ieSgndWlkJykgaWYgc2VsZi5fc2hvdWxkX2Rpc3BsYXlfc3RlcChzdGVwKV0p
Ci0KLSAgICBkZWYgX3N0ZXBzX21lc3NhZ2VzX2Zyb21fbXVsdGlwbGVfYnVpbGRzKHNlbGYsIGJ1
aWxkcyk6Ci0gICAgICAgIG1lc3NhZ2UgPSAnJwotICAgICAgICBmb3IgYnVpbGQgaW4gcmV2ZXJz
ZWQoYnVpbGRzKToKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJ1xuXG4nICsgc2VsZi5fc3RlcHNf
bWVzc2FnZXMoYnVpbGQpCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Nob3Vs
ZF9kaXNwbGF5X3N0ZXAoc2VsZiwgc3RlcCk6Ci0gICAgICAgIHJldHVybiBub3QgZmlsdGVyKGxh
bWJkYSBzdGVwX3RvX2hpZGU6IHJlLnNlYXJjaChzdGVwX3RvX2hpZGUsIHN0ZXAuc3RhdGVfc3Ry
aW5nKSwgU3RhdHVzQnViYmxlLlNURVBTX1RPX0hJREUpCi0KLSAgICBkZWYgX2RvZXNfYnVpbGRf
Y29udGFpbnNfYW55X2ZhaWxlZF9zdGVwKHNlbGYsIGJ1aWxkKToKLSAgICAgICAgZm9yIHN0ZXAg
aW4gYnVpbGQuc3RlcF9zZXQuYWxsKCk6Ci0gICAgICAgICAgICBpZiBzdGVwLnJlc3VsdCBhbmQg
c3RlcC5yZXN1bHQgIT0gQnVpbGRib3QuU1VDQ0VTUyBhbmQgc3RlcC5yZXN1bHQgIT0gQnVpbGRi
b3QuV0FSTklOR1MgYW5kIHN0ZXAucmVzdWx0ICE9IEJ1aWxkYm90LlNLSVBQRUQ6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgX21v
c3RfcmVjZW50X2ZhaWx1cmVfbWVzc2FnZShzZWxmLCBidWlsZCk6Ci0gICAgICAgIGZvciBzdGVw
IGluIGJ1aWxkLnN0ZXBfc2V0LmFsbCgpLm9yZGVyX2J5KCctdWlkJyk6Ci0gICAgICAgICAgICBp
ZiBzdGVwLnJlc3VsdCA9PSBCdWlsZGJvdC5TVUNDRVNTIGFuZCBTdGF0dXNCdWJibGUuQlVJTERf
UkVUUllfTVNHIGluIHN0ZXAuc3RhdGVfc3RyaW5nOgotICAgICAgICAgICAgICAgIHJldHVybiBz
dGVwLnN0YXRlX3N0cmluZwotICAgICAgICAgICAgaWYgc3RlcC5yZXN1bHQgPT0gQnVpbGRib3Qu
RkFJTFVSRToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RlcC5zdGF0ZV9zdHJpbmcKLSAgICAg
ICAgcmV0dXJuICcnCi0KLSAgICBkZWYgZ2V0X2xhdGVzdF9idWlsZF9mb3JfcXVldWUoc2VsZiwg
cGF0Y2gsIHF1ZXVlLCBwYXJlbnRfcXVldWU9Tm9uZSk6Ci0gICAgICAgIGJ1aWxkcywgaXNfcGFy
ZW50X2J1aWxkID0gc2VsZi5nZXRfYWxsX2J1aWxkc19mb3JfcXVldWUocGF0Y2gsIHF1ZXVlLCBw
YXJlbnRfcXVldWUpCi0gICAgICAgIGlmIG5vdCBidWlsZHM6Ci0gICAgICAgICAgICByZXR1cm4g
KE5vbmUsIE5vbmUpCi0gICAgICAgIHJldHVybiAoYnVpbGRzWzBdLCBpc19wYXJlbnRfYnVpbGQp
Ci0KLSAgICBkZWYgZ2V0X2FsbF9idWlsZHNfZm9yX3F1ZXVlKHNlbGYsIHBhdGNoLCBxdWV1ZSwg
cGFyZW50X3F1ZXVlPU5vbmUpOgotICAgICAgICBidWlsZHMgPSBzZWxmLmdldF9idWlsZHNfZm9y
X3F1ZXVlKHBhdGNoLCBxdWV1ZSkKLSAgICAgICAgaXNfcGFyZW50X2J1aWxkID0gRmFsc2UKLSAg
ICAgICAgaWYgbm90IGJ1aWxkcyBhbmQgcGFyZW50X3F1ZXVlOgotICAgICAgICAgICAgYnVpbGRz
ID0gc2VsZi5nZXRfYnVpbGRzX2Zvcl9xdWV1ZShwYXRjaCwgcGFyZW50X3F1ZXVlKQotICAgICAg
ICAgICAgaXNfcGFyZW50X2J1aWxkID0gVHJ1ZQotICAgICAgICBpZiBub3QgYnVpbGRzOgotICAg
ICAgICAgICAgcmV0dXJuIChOb25lLCBOb25lKQotICAgICAgICBidWlsZHMuc29ydChrZXk9bGFt
YmRhIGJ1aWxkOiBidWlsZC5udW1iZXIsIHJldmVyc2U9VHJ1ZSkKLSAgICAgICAgcmV0dXJuIChi
dWlsZHMsIGlzX3BhcmVudF9idWlsZCkKLQotICAgIGRlZiBnZXRfYnVpbGRzX2Zvcl9xdWV1ZShz
ZWxmLCBwYXRjaCwgcXVldWUpOgotICAgICAgICByZXR1cm4gW2J1aWxkIGZvciBidWlsZCBpbiBw
YXRjaC5idWlsZF9zZXQuYWxsKCkgaWYgYnVpbGQuYnVpbGRlcl9kaXNwbGF5X25hbWUgPT0gcXVl
dWVdCi0KLSAgICBkZWYgZmluZF9mYWlsZWRfYnVpbGRzX2Zvcl9wYXRjaChzZWxmLCBwYXRjaF9p
ZCk6Ci0gICAgICAgIHBhdGNoID0gUGF0Y2guZ2V0X3BhdGNoKHBhdGNoX2lkKQotICAgICAgICBp
ZiBub3QgcGF0Y2g6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAgICAgICAgZmFpbGVkX2J1aWxk
cyA9IFtdCi0gICAgICAgIGZvciBxdWV1ZSBpbiBTdGF0dXNCdWJibGUuQUxMX1FVRVVFUzoKLSAg
ICAgICAgICAgIGJ1aWxkLCBfID0gc2VsZi5nZXRfbGF0ZXN0X2J1aWxkX2Zvcl9xdWV1ZShwYXRj
aCwgcXVldWUpCi0gICAgICAgICAgICBpZiBub3QgYnVpbGQ6Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIGlmIGJ1aWxkLnJlc3VsdCBpbiAoQnVpbGRib3QuRkFJTFVSRSwg
QnVpbGRib3QuRVhDRVBUSU9OLCBCdWlsZGJvdC5DQU5DRUxMRUQpOgotICAgICAgICAgICAgICAg
IGZhaWxlZF9idWlsZHMuYXBwZW5kKGJ1aWxkKQotICAgICAgICByZXR1cm4gZmFpbGVkX2J1aWxk
cwotCi0gICAgZGVmIF9zaG91bGRfc2hvd19idWJibGVfZm9yX2J1aWxkKHNlbGYsIGJ1aWxkKToK
LSAgICAgICAgaWYgYnVpbGQgYW5kIGJ1aWxkLnJlc3VsdCA9PSBCdWlsZGJvdC5TS0lQUEVEIGFu
ZCByZS5zZWFyY2gocidQYXRjaCAuKiBkb2VzblwndCBoYXZlIHJlbGV2YW50IGNoYW5nZXMnLCBi
dWlsZC5zdGF0ZV9zdHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJl
dHVybiBUcnVlCi0KLSAgICBkZWYgX3F1ZXVlX3Bvc2l0aW9uKHNlbGYsIHBhdGNoLCBxdWV1ZSwg
cGFyZW50X3F1ZXVlPU5vbmUpOgotICAgICAgICAjIEZJWE1FOiBIYW5kbGUgcmV0cmllZCBidWls
ZHMgYW5kIGNhbmNlbGxlZCBidWlsZC1yZXF1ZXN0cyBhcyB3ZWxsLgotICAgICAgICBmcm9tX3Rp
bWVzdGFtcCA9IHRpbWV6b25lLm5vdygpIC0gZGF0ZXRpbWUudGltZWRlbHRhKGRheXM9U3RhdHVz
QnViYmxlLkRBWVNfVE9fQ0hFQ0spCi0KLSAgICAgICAgaWYgcGF0Y2guY3JlYXRlZCA8IGZyb21f
dGltZXN0YW1wOgotICAgICAgICAgICAgIyBEbyBub3QgZGlzcGxheSBidWJibGUgZm9yIG9sZCBw
YXRjaCBmb3Igd2hpY2ggbm8gYnVpbGQgaGFzIGJlZW4gcmVwb3J0ZWQgb24gZ2l2ZW4gcXVldWUu
Ci0gICAgICAgICAgICAjIE1vc3QgbGlrZWx5IHRoZSBwYXRjaCB3b3VsZCBuZXZlciBiZSBwcm9j
ZXNzZWQgb24gdGhpcyBxdWV1ZSwgc2luY2UgZWl0aGVyIHRoZSBxdWV1ZSB3YXMKLSAgICAgICAg
ICAgICMgYWRkZWQgYWZ0ZXIgdGhlIHBhdGNoIHdhcyBzdWJtaXR0ZWQsIG9yIGJ1aWxkIHJlcXVl
c3QgZm9yIHRoYXQgcGF0Y2ggd2FzIGNhbmNlbGxlZC4KLSAgICAgICAgICAgIHJldHVybiBOb25l
Ci0KLSAgICAgICAgc2VudCA9ICdzZW50X3RvX2NvbW1pdF9xdWV1ZScgaWYgcXVldWUgPT0gJ2Nv
bW1pdCcgZWxzZSAnc2VudF90b19idWlsZGJvdCcKLSAgICAgICAgcHJldmlvdXNseV9zZW50X3Bh
dGNoZXMgPSBzZXQoUGF0Y2gub2JqZWN0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLmZpbHRlcihjcmVhdGVkX19ndGU9ZnJvbV90aW1lc3RhbXApCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVyKCoqe3NlbnQ6IFRydWV9
KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihvYnNv
bGV0ZT1GYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5m
aWx0ZXIoY3JlYXRlZF9fbHQ9cGF0Y2guY3JlYXRlZCkpCi0gICAgICAgIGlmIHBhcmVudF9xdWV1
ZToKLSAgICAgICAgICAgIHJlY2VudF9idWlsZHNfcGFyZW50X3F1ZXVlID0gQnVpbGQub2JqZWN0
cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlsdGVy
KGNyZWF0ZWRfX2d0ZT1mcm9tX3RpbWVzdGFtcCkgXAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihidWlsZGVyX2Rpc3BsYXlfbmFtZT1wYXJlbnRf
cXVldWUpCi0gICAgICAgICAgICBwcm9jZXNzZWRfcGF0Y2hlc19wYXJlbnRfcXVldWUgPSBzZXQo
W2J1aWxkLnBhdGNoIGZvciBidWlsZCBpbiByZWNlbnRfYnVpbGRzX3BhcmVudF9xdWV1ZV0pCi0g
ICAgICAgICAgICByZXR1cm4gbGVuKHByZXZpb3VzbHlfc2VudF9wYXRjaGVzIC0gcHJvY2Vzc2Vk
X3BhdGNoZXNfcGFyZW50X3F1ZXVlKSArIDEKLQotICAgICAgICByZWNlbnRfYnVpbGRzID0gQnVp
bGQub2JqZWN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmZpbHRlcihjcmVhdGVk
X19ndGU9ZnJvbV90aW1lc3RhbXApIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmls
dGVyKGJ1aWxkZXJfZGlzcGxheV9uYW1lPXF1ZXVlKQotICAgICAgICBwcm9jZXNzZWRfcGF0Y2hl
cyA9IHNldChbYnVpbGQucGF0Y2ggZm9yIGJ1aWxkIGluIHJlY2VudF9idWlsZHNdKQotICAgICAg
ICBfbG9nLmRlYnVnKCdQYXRjaDoge30sIHF1ZXVlOiB7fSwgcHJldmlvdXMgcGF0Y2hlczoge30n
LmZvcm1hdChwYXRjaC5wYXRjaF9pZCwgcXVldWUsIHByZXZpb3VzbHlfc2VudF9wYXRjaGVzIC0g
cHJvY2Vzc2VkX3BhdGNoZXMpKQotICAgICAgICByZXR1cm4gbGVuKHByZXZpb3VzbHlfc2VudF9w
YXRjaGVzIC0gcHJvY2Vzc2VkX3BhdGNoZXMpICsgMQotCi0gICAgZGVmIF9idWlsZF9idWJibGVz
X2Zvcl9wYXRjaChzZWxmLCBwYXRjaCwgaGlkZV9pY29ucz1GYWxzZSk6Ci0gICAgICAgIHNob3df
c3VibWl0X3RvX2V3cyA9IFRydWUKLSAgICAgICAgZmFpbGVkX3RvX2FwcGx5ID0gRmFsc2UgICMg
VE9ETzogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDU5OAotICAg
ICAgICBzaG93X3JldHJ5ID0gRmFsc2UKLSAgICAgICAgYnViYmxlcyA9IFtdCi0KLSAgICAgICAg
aWYgbm90IHBhdGNoOgotICAgICAgICAgICAgcmV0dXJuIChOb25lLCBzaG93X3N1Ym1pdF90b19l
d3MsIGZhaWxlZF90b19hcHBseSwgc2hvd19yZXRyeSkKLQotICAgICAgICBpZiBwYXRjaC5zZW50
X3RvX2J1aWxkYm90OgotICAgICAgICAgICAgZm9yIHF1ZXVlIGluIFN0YXR1c0J1YmJsZS5BTExf
UVVFVUVTOgotICAgICAgICAgICAgICAgIGJ1YmJsZSA9IHNlbGYuX2J1aWxkX2J1YmJsZShwYXRj
aCwgcXVldWUsIGhpZGVfaWNvbnMpCi0gICAgICAgICAgICAgICAgaWYgYnViYmxlOgotICAgICAg
ICAgICAgICAgICAgICBzaG93X3N1Ym1pdF90b19ld3MgPSBGYWxzZQotICAgICAgICAgICAgICAg
ICAgICBidWJibGVzLmFwcGVuZChidWJibGUpCi0gICAgICAgICAgICAgICAgICAgIGlmIGJ1YmJs
ZVsnc3RhdGUnXSBpbiAoJ2ZhaWwnLCAnZXJyb3InKToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNob3dfcmV0cnkgPSBUcnVlCi0KLSAgICAgICAgaWYgcGF0Y2guc2VudF90b19jb21taXRfcXVl
dWU6Ci0gICAgICAgICAgICBpZiBub3QgcGF0Y2guc2VudF90b19idWlsZGJvdDoKLSAgICAgICAg
ICAgICAgICBoaWRlX2ljb25zID0gVHJ1ZQotICAgICAgICAgICAgY3FfYnViYmxlID0gc2VsZi5f
YnVpbGRfYnViYmxlKHBhdGNoLCAnY29tbWl0JywgaGlkZV9pY29ucykKLSAgICAgICAgICAgIGlm
IGNxX2J1YmJsZToKLSAgICAgICAgICAgICAgICBidWJibGVzLmluc2VydCgwLCBjcV9idWJibGUp
Ci0KLSAgICAgICAgcmV0dXJuIChidWJibGVzLCBzaG93X3N1Ym1pdF90b19ld3MsIGZhaWxlZF90
b19hcHBseSwgc2hvd19yZXRyeSkKLQotICAgIEB4ZnJhbWVfb3B0aW9uc19leGVtcHQKLSAgICBk
ZWYgZ2V0KHNlbGYsIHJlcXVlc3QsIHBhdGNoX2lkKToKLSAgICAgICAgaGlkZV9pY29ucyA9IHJl
cXVlc3QuR0VULmdldCgnaGlkZV9pY29ucycsIEZhbHNlKQotICAgICAgICBwYXRjaF9pZCA9IGlu
dChwYXRjaF9pZCkKLSAgICAgICAgcGF0Y2ggPSBQYXRjaC5nZXRfcGF0Y2gocGF0Y2hfaWQpCi0g
ICAgICAgIGJ1YmJsZXMsIHNob3dfc3VibWl0X3RvX2V3cywgc2hvd19mYWlsdXJlX3RvX2FwcGx5
LCBzaG93X3JldHJ5ID0gc2VsZi5fYnVpbGRfYnViYmxlc19mb3JfcGF0Y2gocGF0Y2gsIGhpZGVf
aWNvbnMpCi0KLSAgICAgICAgdGVtcGxhdGVfdmFsdWVzID0gewotICAgICAgICAgICAgJ2J1YmJs
ZXMnOiBidWJibGVzLAotICAgICAgICAgICAgJ3BhdGNoX2lkJzogcGF0Y2hfaWQsCi0gICAgICAg
ICAgICAnc2hvd19zdWJtaXRfdG9fZXdzJzogc2hvd19zdWJtaXRfdG9fZXdzLAotICAgICAgICAg
ICAgJ3Nob3dfZmFpbHVyZV90b19hcHBseSc6IHNob3dfZmFpbHVyZV90b19hcHBseSwKLSAgICAg
ICAgICAgICdzaG93X3JldHJ5X2J1dHRvbic6IHNob3dfcmV0cnksCi0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHJlbmRlcihyZXF1ZXN0LCAnc3RhdHVzYnViYmxlLmh0bWwnLCB0ZW1wbGF0ZV92
YWx1ZXMpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy92aWV3cy9z
dWJtaXR0b2V3cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YXBwL2V3cy92aWV3cy9zdWJtaXR0b2V3cy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mvc3VibWl0dG9ld3MucHkJKG5vbmV4
aXN0ZW50KQpAQCAtMSw2OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwot
IyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAot
IyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCi0K
LWltcG9ydCBqc29uCi1pbXBvcnQgbG9nZ2luZwotCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBI
dHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnNob3J0Y3V0cyBpbXBvcnQgcmVkaXJlY3QsIHJlbmRl
cgotZnJvbSBkamFuZ28udmlld3MgaW1wb3J0IFZpZXcKLWZyb20gZGphbmdvLnZpZXdzLmRlY29y
YXRvcnMuY2xpY2tqYWNraW5nIGltcG9ydCB4ZnJhbWVfb3B0aW9uc19leGVtcHQKLQotZnJvbSBl
d3MuY29uZmlnIGltcG9ydCBFUlJfQlVHX0NMT1NFRCwgRVJSX09CU09MRVRFX1BBVENILCBFUlJf
VU5BQkxFX1RPX0ZFVENIX1BBVENICi1mcm9tIGV3cy5mZXRjaGVyIGltcG9ydCBCdWd6aWxsYVBh
dGNoRmV0Y2hlcgotZnJvbSBld3MubW9kZWxzLnBhdGNoIGltcG9ydCBQYXRjaAotCi1fbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotY2xhc3MgU3VibWl0VG9FV1MoVmlldyk6
Ci0gICAgZGVmIGdldChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgcmV0dXJuIHJlbmRlcihyZXF1
ZXN0LCAnc3VibWl0dG9ld3MuaHRtbCcsIHt9KQotCi0gICAgQHhmcmFtZV9vcHRpb25zX2V4ZW1w
dAotICAgIGRlZiBwb3N0KHNlbGYsIHJlcXVlc3QpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBwYXRjaF9pZCA9IHJlcXVlc3QuUE9TVC5nZXQoJ3BhdGNoX2lkJykKLSAgICAgICAgICAgIHBh
dGNoX2lkID0gaW50KHBhdGNoX2lkKQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByZXR1
cm4gSHR0cFJlc3BvbnNlKCJJbnZhbGlkIHBhdGNoIGlkIHt9Ii5mb3JtYXQocmVxdWVzdC5QT1NU
LmdldCgncGF0Y2hfaWQnKSkpCi0KLSAgICAgICAgX2xvZy5pbmZvKCdTdWJtaXRUb0VXUzo6cGF0
Y2g6IHt9Jy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICBpZiBQYXRjaC5pc19wYXRjaF9zZW50
X3RvX2J1aWxkYm90KHBhdGNoX2lkKToKLSAgICAgICAgICAgIF9sb2cuaW5mbygnU3VibWl0VG9F
V1M6OnBhdGNoIHt9IGFscmVhZHkgc3VibWl0dGVkJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAg
ICAgICAgaWYgcmVxdWVzdC5QT1NULmdldCgnbmV4dF9hY3Rpb24nKSA9PSAncmV0dXJuX3RvX2J1
YmJsZXMnOgotICAgICAgICAgICAgICAgIHJldHVybiByZWRpcmVjdCgnL3N0YXR1cy1idWJibGUv
e30nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJQ
YXRjaCB7fSBhbHJlYWR5IHN1Ym1pdHRlZC4gUGxlYXNlIHdhaXQgZm9yIHN0YXR1cy1idWJibGVz
LiIuZm9ybWF0KHBhdGNoX2lkKSkKLQotICAgICAgICByYyA9IEJ1Z3ppbGxhUGF0Y2hGZXRjaGVy
KCkuZmV0Y2goW3BhdGNoX2lkXSkKLSAgICAgICAgaWYgcmMgPT0gRVJSX1VOQUJMRV9UT19GRVRD
SF9QQVRDSDoKLSAgICAgICAgICAgIHJldHVybiBIdHRwUmVzcG9uc2UoJ0VXUyBpcyB1bmFibGUg
dG8gYWNjZXNzIHBhdGNoIHt9LiBQbGVhc2UgZW5zdXJlIHRoYXQgdGhpcyBwYXRjaCBpcyBwdWJs
aWNseSBhY2Nlc3NpYmxlIG9yIGhhcyByPyBzZXQuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAg
ICBpZiByYyA9PSBFUlJfT0JTT0xFVEVfUEFUQ0g6Ci0gICAgICAgICAgICByZXR1cm4gSHR0cFJl
c3BvbnNlKCdQYXRjaCB7fSBpcyBvYnNvbGV0ZSwgbm90IHN1Ym1pdHRpbmcgdG8gRVdTLicuZm9y
bWF0KHBhdGNoX2lkKSkKLSAgICAgICAgaWYgcmMgPT0gRVJSX0JVR19DTE9TRUQ6Ci0gICAgICAg
ICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCdCdWcgZm9yIHBhdGNoIHt9IGlzIGNsb3NlZCwgbm90
IHN1Ym1pdHRpbmcgdG8gRVdTLicuZm9ybWF0KHBhdGNoX2lkKSkKLQotICAgICAgICBpZiByZXF1
ZXN0LlBPU1QuZ2V0KCduZXh0X2FjdGlvbicpID09ICdyZXR1cm5fdG9fYnViYmxlcyc6Ci0gICAg
ICAgICAgICByZXR1cm4gcmVkaXJlY3QoJy9zdGF0dXMtYnViYmxlL3t9Jy5mb3JtYXQocGF0Y2hf
aWQpKQotICAgICAgICByZXR1cm4gSHR0cFJlc3BvbnNlKCJTdWJtaXR0ZWQgcGF0Y2gge30gdG8g
RVdTLiIuZm9ybWF0KHBhdGNoX2lkKSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1hcHAvZXdzLWFwcC9fX2luaXRfXy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkluZGV4OiBUb29scy9CdWlsZFNs
YXZlU3VwcG9ydC9ld3MtYXBwL2V3cy1hcHAvc2V0dGluZ3MucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9ld3MtYXBwL3NldHRpbmdzLnB5CShyZXZpc2lv
biAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy1hcHAvc2V0
dGluZ3MucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotIiIiCi1EamFuZ28gc2V0dGluZ3MuCi0KLUdlbmVyYXRl
ZCBieSAnZGphbmdvLWFkbWluIHN0YXJ0cHJvamVjdCcgdXNpbmcgRGphbmdvIDEuMTEuMTYuCi0K
LUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZmlsZSwgc2VlCi1odHRwczovL2RvY3MuZGph
bmdvcHJvamVjdC5jb20vZW4vMS4xMS90b3BpY3Mvc2V0dGluZ3MvCi0KLUZvciB0aGUgZnVsbCBs
aXN0IG9mIHNldHRpbmdzIGFuZCB0aGVpciB2YWx1ZXMsIHNlZQotaHR0cHM6Ly9kb2NzLmRqYW5n
b3Byb2plY3QuY29tL2VuLzEuMTEvcmVmL3NldHRpbmdzLwotIiIiCi0KLWltcG9ydCBvcwotCi1p
c190ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVudignRVdTX1BST0RVQ1RJT04nKSBpcyBOb25l
Ci0KLSMgQnVpbGQgcGF0aHMgaW5zaWRlIHRoZSBwcm9qZWN0IGxpa2UgdGhpczogb3MucGF0aC5q
b2luKEJBU0VfRElSLCAuLi4pCi1CQVNFX0RJUiA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRp
cm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpCi0KLQotIyBRdWljay1zdGFydCBkZXZl
bG9wbWVudCBzZXR0aW5ncyAtIHVuc3VpdGFibGUgZm9yIHByb2R1Y3Rpb24KLSMgU2VlIGh0dHBz
Oi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL2hvd3RvL2RlcGxveW1lbnQvY2hlY2ts
aXN0LwotCi0jIFNFQ1VSSVRZIFdBUk5JTkc6IGtlZXAgdGhlIHNlY3JldCBrZXkgdXNlZCBpbiBw
cm9kdWN0aW9uIHNlY3JldCEKLVNFQ1JFVF9LRVkgPSBvcy5lbnZpcm9uLmdldCgnRVdTX1NFQ1JF
VF9LRVknLCAnc2VjcmV0JykKLQotREVCVUcgPSBGYWxzZQotaWYgaXNfdGVzdF9tb2RlX2VuYWJs
ZWQ6Ci0gICAgIyBTRUNVUklUWSBXQVJOSU5HOiBkb24ndCBydW4gd2l0aCBkZWJ1ZyB0dXJuZWQg
b24gaW4gcHJvZHVjdGlvbiEKLSAgICBERUJVRyA9IFRydWUKLQotQUxMT1dFRF9IT1NUUyA9IFsn
KiddCi0KLQotIyBBcHBsaWNhdGlvbiBkZWZpbml0aW9uCi0KLUlOU1RBTExFRF9BUFBTID0gWwot
ICAgICdkamFuZ28uY29udHJpYi5hZG1pbicsCi0gICAgJ2RqYW5nby5jb250cmliLmF1dGgnLAot
ICAgICdkamFuZ28uY29udHJpYi5jb250ZW50dHlwZXMnLAotICAgICdkamFuZ28uY29udHJpYi5z
ZXNzaW9ucycsCi0gICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzJywKLSAgICAnZGphbmdvLmNv
bnRyaWIuc3RhdGljZmlsZXMnLAotICAgICdld3MnLAotXQotCi1NSURETEVXQVJFID0gWwotICAg
ICdkamFuZ28ubWlkZGxld2FyZS5zZWN1cml0eS5TZWN1cml0eU1pZGRsZXdhcmUnLAotICAgICdk
amFuZ28uY29udHJpYi5zZXNzaW9ucy5taWRkbGV3YXJlLlNlc3Npb25NaWRkbGV3YXJlJywKLSAg
ICAnZGphbmdvLm1pZGRsZXdhcmUuY29tbW9uLkNvbW1vbk1pZGRsZXdhcmUnLAotICAgICdkamFu
Z28ubWlkZGxld2FyZS5jc3JmLkNzcmZWaWV3TWlkZGxld2FyZScsCi0gICAgJ2RqYW5nby5jb250
cmliLmF1dGgubWlkZGxld2FyZS5BdXRoZW50aWNhdGlvbk1pZGRsZXdhcmUnLAotICAgICdkamFu
Z28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJlLk1lc3NhZ2VNaWRkbGV3YXJlJywKLSAgICAn
ZGphbmdvLm1pZGRsZXdhcmUuY2xpY2tqYWNraW5nLlhGcmFtZU9wdGlvbnNNaWRkbGV3YXJlJywK
LV0KLQotUk9PVF9VUkxDT05GID0gJ2V3cy1hcHAudXJscycKLQotVEVNUExBVEVTID0gWwotICAg
IHsKLSAgICAgICAgJ0JBQ0tFTkQnOiAnZGphbmdvLnRlbXBsYXRlLmJhY2tlbmRzLmRqYW5nby5E
amFuZ29UZW1wbGF0ZXMnLAotICAgICAgICAnRElSUyc6IFtdLAotICAgICAgICAnQVBQX0RJUlMn
OiBUcnVlLAotICAgICAgICAnT1BUSU9OUyc6IHsKLSAgICAgICAgICAgICdjb250ZXh0X3Byb2Nl
c3NvcnMnOiBbCi0gICAgICAgICAgICAgICAgJ2RqYW5nby50ZW1wbGF0ZS5jb250ZXh0X3Byb2Nl
c3NvcnMuZGVidWcnLAotICAgICAgICAgICAgICAgICdkamFuZ28udGVtcGxhdGUuY29udGV4dF9w
cm9jZXNzb3JzLnJlcXVlc3QnLAotICAgICAgICAgICAgICAgICdkamFuZ28uY29udHJpYi5hdXRo
LmNvbnRleHRfcHJvY2Vzc29ycy5hdXRoJywKLSAgICAgICAgICAgICAgICAnZGphbmdvLmNvbnRy
aWIubWVzc2FnZXMuY29udGV4dF9wcm9jZXNzb3JzLm1lc3NhZ2VzJywKLSAgICAgICAgICAgIF0s
Ci0gICAgICAgIH0sCi0gICAgfSwKLV0KLQotV1NHSV9BUFBMSUNBVElPTiA9ICdld3MtYXBwLndz
Z2kuYXBwbGljYXRpb24nCi0KLQotIyBEYXRhYmFzZQotIyBodHRwczovL2RvY3MuZGphbmdvcHJv
amVjdC5jb20vZW4vMS4xMS9yZWYvc2V0dGluZ3MvI2RhdGFiYXNlcwotCi1pZiBpc190ZXN0X21v
ZGVfZW5hYmxlZDoKLSAgICBEQVRBQkFTRVMgPSB7Ci0gICAgICAgICdkZWZhdWx0JzogewotICAg
ICAgICAgICAgJ0VOR0lORSc6ICdkamFuZ28uZGIuYmFja2VuZHMuc3FsaXRlMycsCi0gICAgICAg
ICAgICAnTkFNRSc6IG9zLnBhdGguam9pbihCQVNFX0RJUiwgJ2RiLnNxbGl0ZTMnKSwKLSAgICAg
ICAgfQotICAgIH0KLWVsc2U6Ci0gICAgREFUQUJBU0VTID0gewotICAgICAgICAnZGVmYXVsdCc6
IHsKLSAgICAgICAgICAgICdFTkdJTkUnOiAnZGphbmdvLmRiLmJhY2tlbmRzLnBvc3RncmVzcWxf
cHN5Y29wZzInLAotICAgICAgICAgICAgJ05BTUUnOiBvcy5lbnZpcm9uLmdldCgnREJfTkFNRScs
IE5vbmUpLAotICAgICAgICAgICAgJ1VTRVInOiBvcy5lbnZpcm9uLmdldCgnREJfVVNFUk5BTUUn
LCBOb25lKSwKLSAgICAgICAgICAgICdQQVNTV09SRCc6IG9zLmVudmlyb24uZ2V0KCdEQl9QQVNT
V09SRCcsIE5vbmUpLAotICAgICAgICAgICAgJ0hPU1QnOiBvcy5lbnZpcm9uLmdldCgnREJfVVJM
JywgTm9uZSksCi0gICAgICAgIH0KLSAgICB9Ci0KLQotIyBQYXNzd29yZCB2YWxpZGF0aW9uCi0j
IGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL3JlZi9zZXR0aW5ncy8jYXV0
aC1wYXNzd29yZC12YWxpZGF0b3JzCi0KLUFVVEhfUEFTU1dPUkRfVkFMSURBVE9SUyA9IFsKLSAg
ICB7Ci0gICAgICAgICdOQU1FJzogJ2RqYW5nby5jb250cmliLmF1dGgucGFzc3dvcmRfdmFsaWRh
dGlvbi5Vc2VyQXR0cmlidXRlU2ltaWxhcml0eVZhbGlkYXRvcicsCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAgICdOQU1FJzogJ2RqYW5nby5jb250cmliLmF1dGgucGFzc3dvcmRfdmFsaWRhdGlvbi5N
aW5pbXVtTGVuZ3RoVmFsaWRhdG9yJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ05BTUUnOiAn
ZGphbmdvLmNvbnRyaWIuYXV0aC5wYXNzd29yZF92YWxpZGF0aW9uLkNvbW1vblBhc3N3b3JkVmFs
aWRhdG9yJywKLSAgICB9LAotICAgIHsKLSAgICAgICAgJ05BTUUnOiAnZGphbmdvLmNvbnRyaWIu
YXV0aC5wYXNzd29yZF92YWxpZGF0aW9uLk51bWVyaWNQYXNzd29yZFZhbGlkYXRvcicsCi0gICAg
fSwKLV0KLQotCi0jIEludGVybmF0aW9uYWxpemF0aW9uCi0jIGh0dHBzOi8vZG9jcy5kamFuZ29w
cm9qZWN0LmNvbS9lbi8xLjExL3RvcGljcy9pMThuLwotCi1MQU5HVUFHRV9DT0RFID0gJ2VuLXVz
JwotCi1USU1FX1pPTkUgPSAnVVRDJwotCi1VU0VfSTE4TiA9IFRydWUKLQotVVNFX0wxME4gPSBU
cnVlCi0KLVVTRV9UWiA9IFRydWUKLQotCi0jIFN0YXRpYyBmaWxlcyAoQ1NTLCBKYXZhU2NyaXB0
LCBJbWFnZXMpCi0jIGh0dHBzOi8vZG9jcy5kamFuZ29wcm9qZWN0LmNvbS9lbi8xLjExL2hvd3Rv
L3N0YXRpYy1maWxlcy8KLQotU1RBVElDX1VSTCA9ICcvc3RhdGljLycKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC91cmxzLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC91cmxzLnB5CShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy1hcHAvdXJscy5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotIiIiVVJMIENvbmZpZ3VyYXRpb24KLQotVGhlIGB1cmxwYXR0ZXJu
c2AgbGlzdCByb3V0ZXMgVVJMcyB0byB2aWV3cy4gRm9yIG1vcmUgaW5mb3JtYXRpb24gcGxlYXNl
IHNlZToKLSAgICBodHRwczovL2RvY3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS90b3BpY3Mv
aHR0cC91cmxzLwotRXhhbXBsZXM6Ci1GdW5jdGlvbiB2aWV3cwotICAgIDEuIEFkZCBhbiBpbXBv
cnQ6ICBmcm9tIG15X2FwcCBpbXBvcnQgdmlld3MKLSAgICAyLiBBZGQgYSBVUkwgdG8gdXJscGF0
dGVybnM6ICB1cmwocideJCcsIHZpZXdzLmhvbWUsIG5hbWU9J2hvbWUnKQotQ2xhc3MtYmFzZWQg
dmlld3MKLSAgICAxLiBBZGQgYW4gaW1wb3J0OiAgZnJvbSBvdGhlcl9hcHAudmlld3MgaW1wb3J0
IEhvbWUKLSAgICAyLiBBZGQgYSBVUkwgdG8gdXJscGF0dGVybnM6ICB1cmwocideJCcsIEhvbWUu
YXNfdmlldygpLCBuYW1lPSdob21lJykKLUluY2x1ZGluZyBhbm90aGVyIFVSTGNvbmYKLSAgICAx
LiBJbXBvcnQgdGhlIGluY2x1ZGUoKSBmdW5jdGlvbjogZnJvbSBkamFuZ28uY29uZi51cmxzIGlt
cG9ydCB1cmwsIGluY2x1ZGUKLSAgICAyLiBBZGQgYSBVUkwgdG8gdXJscGF0dGVybnM6ICB1cmwo
cideYmxvZy8nLCBpbmNsdWRlKCdibG9nLnVybHMnKSkKLSIiIgotZnJvbSBkamFuZ28uY29uZi51
cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKLWZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0IGFkbWlu
Ci0KLXVybHBhdHRlcm5zID0gWwotICAgIHVybChyJ15hZG1pbi8nLCBhZG1pbi5zaXRlLnVybHMp
LAotICAgIHVybChyJ14nLCBpbmNsdWRlKCdld3MudXJscycpKSwKLV0KSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC93c2dpLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvZXdzLWFwcC93c2dpLnB5CShyZXZpc2lvbiAy
NjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL2V3cy1hcHAvd3NnaS5w
eQkobm9uZXhpc3RlbnQpCkBAIC0xLDM4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotIiIiCi1XU0dJIGNvbmZpZy4KLQotSXQgZXhwb3NlcyB0aGUgV1NH
SSBjYWxsYWJsZSBhcyBhIG1vZHVsZS1sZXZlbCB2YXJpYWJsZSBuYW1lZCBgYGFwcGxpY2F0aW9u
YGAuCi0KLUZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgZmlsZSwgc2VlCi1odHRwczovL2Rv
Y3MuZGphbmdvcHJvamVjdC5jb20vZW4vMS4xMS9ob3d0by9kZXBsb3ltZW50L3dzZ2kvCi0iIiIK
LQotaW1wb3J0IG9zCi0KLWZyb20gZGphbmdvLmNvcmUud3NnaSBpbXBvcnQgZ2V0X3dzZ2lfYXBw
bGljYXRpb24KLQotb3MuZW52aXJvbi5zZXRkZWZhdWx0KCJESkFOR09fU0VUVElOR1NfTU9EVUxF
IiwgImV3cy1hcHAuc2V0dGluZ3MiKQotCi1hcHBsaWNhdGlvbiA9IGdldF93c2dpX2FwcGxpY2F0
aW9uKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvbWFuYWdlLnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1hcHAvbWFuYWdlLnB5CShy
ZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYXBwL21hbmFn
ZS5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDQ0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhv
bgotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0j
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgb3MK
LWltcG9ydCBzeXMKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBvcy5lbnZpcm9u
LnNldGRlZmF1bHQoIkRKQU5HT19TRVRUSU5HU19NT0RVTEUiLCAiZXdzLWFwcC5zZXR0aW5ncyIp
Ci0gICAgdHJ5OgotICAgICAgICBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQgaW1wb3J0IGV4
ZWN1dGVfZnJvbV9jb21tYW5kX2xpbmUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAg
ICMgVGhlIGFib3ZlIGltcG9ydCBtYXkgZmFpbCBmb3Igc29tZSBvdGhlciByZWFzb24uIEVuc3Vy
ZSB0aGF0IHRoZQotICAgICAgICAjIGlzc3VlIGlzIHJlYWxseSB0aGF0IERqYW5nbyBpcyBtaXNz
aW5nIHRvIGF2b2lkIG1hc2tpbmcgb3RoZXIKLSAgICAgICAgIyBleGNlcHRpb25zIG9uIFB5dGhv
biAyLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgZGphbmdvCi0gICAgICAgIGV4
Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yKAotICAgICAg
ICAgICAgICAgICJDb3VsZG4ndCBpbXBvcnQgRGphbmdvLiBBcmUgeW91IHN1cmUgaXQncyBpbnN0
YWxsZWQgYW5kICIKLSAgICAgICAgICAgICAgICAiYXZhaWxhYmxlIG9uIHlvdXIgUFlUSE9OUEFU
SCBlbnZpcm9ubWVudCB2YXJpYWJsZT8gRGlkIHlvdSAiCi0gICAgICAgICAgICAgICAgImZvcmdl
dCB0byBhY3RpdmF0ZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQ/IikKLSAgICAgICAgcmFpc2UKLSAg
ICBleGVjdXRlX2Zyb21fY29tbWFuZF9saW5lKHN5cy5hcmd2KQoKUHJvcGVydHkgY2hhbmdlcyBv
bjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWFwcC9tYW5hZ2UucHkKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpE
ZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9i
dWlsZGJvdC50YWMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1
aWxkL2J1aWxkYm90LnRhYwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZXdzLWJ1aWxkL2J1aWxkYm90LnRhYwkobm9uZXhpc3RlbnQpCkBAIC0xLDMxICswLDAg
QEAKLWltcG9ydCBvcwotCi1mcm9tIHR3aXN0ZWQuYXBwbGljYXRpb24gaW1wb3J0IHNlcnZpY2UK
LWZyb20gYnVpbGRib3QubWFzdGVyIGltcG9ydCBCdWlsZE1hc3RlcgotCi1iYXNlZGlyID0gJy4n
Ci0KLXJvdGF0ZUxlbmd0aCA9IDUwMDAwMDAwCi1tYXhSb3RhdGVkRmlsZXMgPSAxNQotY29uZmln
ZmlsZSA9ICdtYXN0ZXIuY2ZnJwotCi0jIERlZmF1bHQgdW1hc2sgZm9yIHNlcnZlcgotdW1hc2sg
PSAwbzAyMgotCi0jIGlmIHRoaXMgaXMgYSByZWxvY2F0YWJsZSB0YWMgZmlsZSwgZ2V0IHRoZSBk
aXJlY3RvcnkgY29udGFpbmluZyB0aGUgVEFDCi1pZiBiYXNlZGlyID09ICcuJzoKLSAgICBiYXNl
ZGlyID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCi0KLSMgbm90
ZTogdGhpcyBsaW5lIGlzIG1hdGNoZWQgYWdhaW5zdCB0byBjaGVjayB0aGF0IHRoaXMgaXMgYSBi
dWlsZG1hc3RlcgotIyBkaXJlY3Rvcnk7IGRvIG5vdCBlZGl0IGl0LgotYXBwbGljYXRpb24gPSBz
ZXJ2aWNlLkFwcGxpY2F0aW9uKCdidWlsZG1hc3RlcicpCi1mcm9tIHR3aXN0ZWQucHl0aG9uLmxv
Z2ZpbGUgaW1wb3J0IExvZ0ZpbGUKLWZyb20gdHdpc3RlZC5weXRob24ubG9nIGltcG9ydCBJTG9n
T2JzZXJ2ZXIsIEZpbGVMb2dPYnNlcnZlcgotbG9nZmlsZSA9IExvZ0ZpbGUuZnJvbUZ1bGxQYXRo
KG9zLnBhdGguam9pbihiYXNlZGlyLCAidHdpc3RkLmxvZyIpLCByb3RhdGVMZW5ndGg9cm90YXRl
TGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhSb3RhdGVkRmlsZXM9
bWF4Um90YXRlZEZpbGVzKQotYXBwbGljYXRpb24uc2V0Q29tcG9uZW50KElMb2dPYnNlcnZlciwg
RmlsZUxvZ09ic2VydmVyKGxvZ2ZpbGUpLmVtaXQpCi0KLW0gPSBCdWlsZE1hc3RlcihiYXNlZGly
LCBjb25maWdmaWxlLCB1bWFzaykKLW0uc2V0U2VydmljZVBhcmVudChhcHBsaWNhdGlvbikKLW0u
bG9nX3JvdGF0aW9uLnJvdGF0ZUxlbmd0aCA9IHJvdGF0ZUxlbmd0aAotbS5sb2dfcm90YXRpb24u
bWF4Um90YXRlZEZpbGVzID0gbWF4Um90YXRlZEZpbGVzCkluZGV4OiBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpzb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZpZy5qc29uCShyZXZpc2lvbiAyNjkwNDIpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvY29uZmlnLmpzb24JKG5vbmV4aXN0ZW50
KQpAQCAtMSw3ODYgKzAsMCBAQAotewotICAid29ya2VycyI6IFsKLSAgICB7Ci0gICAgICAibmFt
ZSI6ICJ3ZWJraXQtbWlzYyIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0gICAgICAibWF4X2J1
aWxkcyI6IDMKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1hcm12
Ny1ld3MiLAotICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IgotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiaWdhbGlhLWpzYzMyLWFybXY3LWV3cy0wMiIsCi0gICAgICAicGxhdGZvcm0i
OiAianNjLW9ubHkiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWEtanNjMzIt
YXJtdjctZXdzLTAzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1taXBzZWwtZXdzIiwKLSAgICAgICJwbGF0
Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1q
c2MzMi1taXBzZWwtZXdzLTAyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9
LAotICAgIHsKLSAgICAgICJuYW1lIjogImlnYWxpYS1qc2MzMi1taXBzZWwtZXdzLTAzIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjog
ImlnYWxpYS1qc2MzMi1pMzg2LWV3cyIsCi0gICAgICAicGxhdGZvcm0iOiAianNjLW9ubHkiCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWExLWd0ay13azItZXdzIiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWEy
LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0g
ICAgICAibmFtZSI6ICJpZ2FsaWEzLWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJn
dGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE0LWd0ay13azItZXdzIiwK
LSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJp
Z2FsaWE1LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE2LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9y
bSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE3LWd0ay13azIt
ZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFt
ZSI6ICJpZ2FsaWE4LWd0ay13azItZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJndGsiCi0gICAg
fSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJpZ2FsaWE5LWd0ay13azItZXdzIiwKLSAgICAgICJw
bGF0Zm9ybSI6ICJndGsiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJhcGVyZXotZ3Rr
LWV3cyIsCi0gICAgICAicGxhdGZvcm0iOiAiZ3RrIgotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiaWdhbGlhLXdwZS1ld3MiLAotICAgICAgInBsYXRmb3JtIjogIndwZSIKLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogImFwZXJlei13cGUtZXdzIiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJ3cGUiCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJ3aW5jYWlyby1ld3MtMDAxIiwK
LSAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1l
IjogIndpbmNhaXJvLWV3cy0wMDIiLAotICAgICAgInBsYXRmb3JtIjogIndpbmNhaXJvIgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAid2luY2Fpcm8tZXdzLTAwMyIsCi0gICAgICAicGxh
dGZvcm0iOiAid2luY2Fpcm8iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJ3aW5jYWly
by1ld3MtMDA0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIKLSAgICB9LAotICAgIHsK
LSAgICAgICJuYW1lIjogImV3czEwMCIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIK
LSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwMSIsCi0gICAgICAicGxhdGZvcm0i
OiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwMiIsCi0g
ICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1l
IjogImV3czEwMyIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAg
IHsKLSAgICAgICJuYW1lIjogImV3czEwNCIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2
ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwNSIsCi0gICAgICAicGxhdGZv
cm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwNiIs
Ci0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogImV3czEwNyIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIKLSAgICB9LAot
ICAgIHsKLSAgICAgICJuYW1lIjogImV3czEwOCIsCi0gICAgICAicGxhdGZvcm0iOiAiaW9zLTE0
IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTA5IiwKLSAgICAgICJwbGF0Zm9y
bSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTEyIiwKLSAgICAgICJw
bGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdz
MTEzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiZXdzMTE0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE1IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJt
YWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE2IiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAi
ZXdzMTE3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMTE4IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTE5IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTIwIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTIxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTIyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mt
c2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTIzIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAiZXdzMTI0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0Igot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI1IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI2
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMTI3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI4IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTI5IiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtYmlnc3VyIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTUwIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAiZXdzMTUxIiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwKLSAgICAgICJtYXhfYnVp
bGRzIjogMwotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTUyIiwKLSAgICAgICJw
bGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTUzIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU0
IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAi
ZXdzMTU1IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5h
bWUiOiAiZXdzMTU2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiZXdzMTU3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAiZXdzMTU4IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTU5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgot
ICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYwIiwKLSAgICAgICJwbGF0Zm9ybSI6
ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYxIiwKLSAgICAgICJwbGF0
Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYyIiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTYzIiwK
LSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdz
MTY0IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAiZXdzMTY1IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAiZXdzMTY2IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMTY3IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0g
ICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY4IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIgotICAg
IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTY5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJt
YWMtYmlnc3VyIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMTcwIiwKLSAgICAg
ICJwbGF0Zm9ybSI6ICIqIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiZXdzMjEwIiwK
LSAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJl
d3MyMTEiLAotICAgICAgInBsYXRmb3JtIjogIndpbiIKLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogImV3czIxMiIsCi0gICAgICAicGxhdGZvcm0iOiAid2luIgotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiZXdzMjEzIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW4iCi0gICAgfSwK
LSAgICB7Ci0gICAgICAibmFtZSI6ICJld3MyMTQiLAotICAgICAgInBsYXRmb3JtIjogIndpbiIK
LSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImV3czIxNSIsCi0gICAgICAicGxhdGZvcm0i
OiAid2luIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAid2Via2l0LWNxLTAxIiwKLSAg
ICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUi
OiAid2Via2l0LWNxLTAyIiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIgotICAgIH0s
Ci0gICAgewotICAgICAgIm5hbWUiOiAid2Via2l0LWNxLTAzIiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIgotICAgIH0KLSAgXSwKLSAgImJ1aWxkZXJzIjogWwotICAgIHsKLSAgICAg
ICJuYW1lIjogIlN0eWxlLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogInN0eWxlIiwKLSAgICAg
ICJpY29uIjogInRlc3RPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogIlN0eWxlRmFjdG9yeSIsCi0g
ICAgICAicGxhdGZvcm0iOiAiKiIsCi0gICAgICAid29ya2VybmFtZXMiOiBbImV3czE1MSIsICJ3
ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJBcHBseS1XYXRjaExp
c3QtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAid2F0Y2hsaXN0IiwKLSAgICAgICJmYWN0b3J5
IjogIldhdGNoTGlzdEZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogIioiLAotICAgICAgIndv
cmtlcm5hbWVzIjogWyJ3ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6
ICJHVEstQnVpbGQtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAiZ3RrIiwKLSAgICAgICJpY29u
IjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJHVEtCdWlsZEZhY3RvcnkiLAotICAg
ICAgInBsYXRmb3JtIjogImd0ayIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwK
LSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ0cmlnZ2VycyI6IFsi
YXBpLXRlc3RzLWd0ay1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhMS1ndGst
d2syLWV3cyIsICJpZ2FsaWEyLWd0ay13azItZXdzIiwgImFwZXJlei1ndGstZXdzIl0KLSAgICB9
LAotICAgIHsKLSAgICAgICJuYW1lIjogIkdUSy1XSzItVGVzdHMtRVdTIiwKLSAgICAgICJzaG9y
dG5hbWUiOiAiZ3RrLXdrMiIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFj
dG9yeSI6ICJHVEtUZXN0c0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImd0ayIsCi0gICAg
ICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4
ODZfNjQiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhNS1ndGstd2syLWV3cyIsICJp
Z2FsaWE2LWd0ay13azItZXdzIiwgImlnYWxpYTctZ3RrLXdrMi1ld3MiLCAiaWdhbGlhOC1ndGst
d2syLWV3cyIsICJpZ2FsaWE5LWd0ay13azItZXdzIl0KLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogImlPUy0xNC1CdWlsZC1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJpb3MiLAotICAg
ICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogImlPU0VtYmVkZGVkQnVp
bGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJpb3MtMTQiLAotICAgICAgImNvbmZpZ3Vy
YXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsiYXJtNjQiXSwKLSAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTUyIiwgImV3czE1NCIsICJld3MxMDgiLCAiZXdzMTA5
Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogImlPUy0xNC1TaW11bGF0b3ItQnVpbGQt
RVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAiaW9zLXNpbSIsCi0gICAgICAiaWNvbiI6ICJidWls
ZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiaU9TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0
Zm9ybSI6ICJpb3Mtc2ltdWxhdG9yLTE0IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgInRyaWdnZXJz
IjogWyJhcGktdGVzdHMtaW9zLXNpbS1ld3MiLCAiaW9zLTE0LXNpbS13azItdGVzdHMtZXdzIl0s
Ci0gICAgICAid29ya2VybmFtZXMiOiBbImV3czE1MiIsICJld3MxNTQiLCAiZXdzMTU2IiwgImV3
czE1NyIsICJld3MxMDkiXQotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiaU9TLTE0LVNp
bXVsYXRvci1XSzItVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAiaW9zLXdrMiIsCi0g
ICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJpT1NUZXN0c0ZhY3Rv
cnkiLAotICAgICAgInBsYXRmb3JtIjogImlvcy1zaW11bGF0b3ItMTQiLAotICAgICAgImNvbmZp
Z3VyYXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0s
Ci0gICAgICAidHJpZ2dlcmVkX2J5IjogWyJpb3MtMTQtc2ltLWJ1aWxkLWV3cyJdLAotICAgICAg
Indvcmtlcm5hbWVzIjogWyJld3MxMjEiLCAiZXdzMTIyIiwgImV3czEyMyIsICJld3MxMjQiLCAi
ZXdzMTI1IiwgImV3czEyNiJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJtYWNPUy1B
cHBsZS1TaWxpY29uLUJpZy1TdXItUmVsZWFzZS1CdWlsZC1FV1MiLAotICAgICAgInNob3J0bmFt
ZSI6ICJtYWMtQVMiLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0b3J5
IjogIm1hY09TQnVpbGRPbmx5RmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLWJpZ3N1
ciIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1
cmVzIjogWyJhcm02NCJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJld3MxMjkiLCAiZXdzMTY5
Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIm1hY09TLU1vamF2ZS1SZWxlYXNlLUJ1
aWxkLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIm1hYyIsCi0gICAgICAiaWNvbiI6ICJidWls
ZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAibWFjT1NCdWlsZEZhY3RvcnkiLAotICAgICAgInBs
YXRmb3JtIjogIm1hYy1tb2phdmUiLAotICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIs
Ci0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAidHJpZ2dlcnMiOiBb
ImFwaS10ZXN0cy1tYWMtZXdzIiwgIm1hY29zLW1vamF2ZS1yZWxlYXNlLXdrMS10ZXN0cy1ld3Mi
LCAibWFjb3MtbW9qYXZlLXJlbGVhc2Utd2syLXRlc3RzLWV3cyJdLAotICAgICAgIndvcmtlcm5h
bWVzIjogWyJld3MxMTgiLCAiZXdzMTE5IiwgImV3czEyMCIsICJld3MxNTAiXQotICAgIH0sCi0g
ICAgewotICAgICAgIm5hbWUiOiAibWFjT1MtTW9qYXZlLVJlbGVhc2UtV0sxLVRlc3RzLUVXUyIs
Ci0gICAgICAic2hvcnRuYW1lIjogIm1hYy13azEiLAotICAgICAgImljb24iOiAidGVzdE9ubHki
LAotICAgICAgImZhY3RvcnkiOiAibWFjT1NXSzFGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6
ICJtYWMtbW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAg
ImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgInRyaWdnZXJlZF9ieSI6IFsibWFj
b3MtbW9qYXZlLXJlbGVhc2UtYnVpbGQtZXdzIl0sCi0gICAgICAid29ya2VybmFtZXMiOiBbImV3
czEwMCIsICJld3MxMDEiLCAiZXdzMTAyIiwgImV3czEwMyJdCi0gICAgfSwKLSAgICB7Ci0gICAg
ICAibmFtZSI6ICJtYWNPUy1Nb2phdmUtUmVsZWFzZS1XSzItVGVzdHMtRVdTIiwKLSAgICAgICJz
aG9ydG5hbWUiOiAibWFjLXdrMiIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAi
ZmFjdG9yeSI6ICJtYWNPU1dLMkZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogIm1hYy1tb2ph
dmUiLAotICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVsZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0
dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAidHJpZ2dlcmVkX2J5IjogWyJtYWNvcy1tb2phdmUt
cmVsZWFzZS1idWlsZC1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTA0IiwgImV3
czEwNSIsICJld3MxMDYiLCAiZXdzMTA3Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjog
Im1hY09TLU1vamF2ZS1EZWJ1Zy1CdWlsZC1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJtYWMt
ZGVidWciLAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogIm1h
Y09TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiwKLSAgICAg
ICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZf
NjQiXSwKLSAgICAgICJ0cmlnZ2VycyI6IFsibWFjb3MtbW9qYXZlLWRlYnVnLXdrMS10ZXN0cy1l
d3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTEyIiwgImV3czExMyIsICJld3MxMTUi
LCAiZXdzMTE3IiwgImV3czE1MyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJtYWNP
Uy1Nb2phdmUtRGVidWctV0sxLVRlc3RzLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIm1hYy1k
ZWJ1Zy13azEiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAi
bWFjT1NXSzFGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJtYWMtbW9qYXZlIiwKLSAgICAg
ICJjb25maWd1cmF0aW9uIjogImRlYnVnIiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJ4ODZf
NjQiXSwKLSAgICAgICJ0cmlnZ2VyZWRfYnkiOiBbIm1hY29zLW1vamF2ZS1kZWJ1Zy1idWlsZC1l
d3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTEyIiwgImV3czExMyIsICJld3MxMTUi
LCAiZXdzMTE3Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIndhdGNoT1MtNy1CdWls
ZC1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJ3YXRjaCIsCi0gICAgICAiaWNvbiI6ICJidWls
ZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAid2F0Y2hPU0J1aWxkRmFjdG9yeSIsCi0gICAgICAi
cGxhdGZvcm0iOiAid2F0Y2hvcy03IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2Ui
LAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0XzMyIiwgImFybXY3ayJdLAotICAgICAg
Indvcmtlcm5hbWVzIjogWyJld3MxNjMiLCAiZXdzMTY0IiwgImV3czE2NSJdCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJ3YXRjaE9TLTctU2ltdWxhdG9yLUJ1aWxkLUVXUyIsCi0gICAg
ICAic2hvcnRuYW1lIjogIndhdGNoLXNpbSIsCi0gICAgICAiaWNvbiI6ICJidWlsZE9ubHkiLAot
ICAgICAgImZhY3RvcnkiOiAid2F0Y2hPU0J1aWxkRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0i
OiAid2F0Y2hvcy1zaW11bGF0b3ItNyIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNl
IiwKLSAgICAgICJhcmNoaXRlY3R1cmVzIjogWyJpMzg2Il0sCi0gICAgICAid29ya2VybmFtZXMi
OiBbImV3czE2NCIsICJld3MxNjUiLCAiZXdzMTY2Il0KLSAgICB9LAotICAgICB7Ci0gICAgICAi
bmFtZSI6ICJ0dk9TLTE0LUJ1aWxkLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogInR2IiwKLSAg
ICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJ0dk9TQnVpbGRGYWN0
b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ0dm9zLTE0IiwKLSAgICAgICJjb25maWd1cmF0aW9u
IjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFybTY0Il0sCi0gICAgICAi
d29ya2VybmFtZXMiOiBbImV3czE2NyIsICJld3MxNjgiXQotICAgIH0sCi0gICAgewotICAgICAg
Im5hbWUiOiAidHZPUy0xNC1TaW11bGF0b3ItQnVpbGQtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUi
OiAidHYtc2ltIiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6
ICJ0dk9TQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJ0dm9zLXNpbXVsYXRvci0x
NCIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1
cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTY4IiwgImV3czE3
MCJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFtZSI6ICJXaW5kb3dzLUVXUyIsCi0gICAgICAi
c2hvcnRuYW1lIjogIndpbiIsCi0gICAgICAiaWNvbiI6ICJidWlsZEFuZFRlc3QiLAotICAgICAg
ImZhY3RvcnkiOiAiV2luZG93c0ZhY3RvcnkiLAotICAgICAgImNvbmZpZ3VyYXRpb24iOiAicmVs
ZWFzZSIsCi0gICAgICAiYXJjaGl0ZWN0dXJlcyI6IFsieDg2XzY0Il0sCi0gICAgICAicGxhdGZv
cm0iOiAid2luIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMjEwIiwgImV3czIxMSIsICJl
d3MyMTIiLCAiZXdzMjEzIiwgImV3czIxNCIsICJld3MyMTUiXQotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiV2luQ2Fpcm8tRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAid2luY2Fpcm8i
LAotICAgICAgImljb24iOiAiYnVpbGRPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogIldpbkNhaXJv
RmFjdG9yeSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNo
aXRlY3R1cmVzIjogWyJ4ODZfNjQiXSwKLSAgICAgICJwbGF0Zm9ybSI6ICJ3aW5jYWlybyIsCi0g
ICAgICAid29ya2VybmFtZXMiOiBbIndpbmNhaXJvLWV3cy0wMDEiLCAid2luY2Fpcm8tZXdzLTAw
MiIsICJ3aW5jYWlyby1ld3MtMDAzIiwgIndpbmNhaXJvLWV3cy0wMDQiXQotICAgIH0sCi0gICAg
ewotICAgICAgIm5hbWUiOiAiV1BFLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogIndwZSIsCi0g
ICAgICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiV1BFRmFjdG9yeSIs
Ci0gICAgICAicGxhdGZvcm0iOiAid3BlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgIndvcmtlcm5h
bWVzIjogWyJpZ2FsaWEtd3BlLWV3cyIsICJhcGVyZXotd3BlLWV3cyJdCi0gICAgfSwKLSAgICB7
Ci0gICAgICAibmFtZSI6ICJKU0MtVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAianNj
IiwKLSAgICAgICJpY29uIjogImJ1aWxkQW5kVGVzdCIsCi0gICAgICAiZmFjdG9yeSI6ICJKU0NC
dWlsZEFuZFRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAibWFjLW1vamF2ZSIsCi0g
ICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJydW5UZXN0cyI6ICJ0cnVl
IiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTI3IiwgImV3czEyOCJdCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJKU0MtTUlQU0VMLTMyYml0cy1CdWlsZC1FV1MiLAotICAgICAg
InNob3J0bmFtZSI6ICJqc2MtbWlwcyIsCi0gICAgICAiaWNvbiI6ICJidWlsZE9ubHkiLAotICAg
ICAgImZhY3RvcnkiOiAiSlNDQnVpbGRGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mt
b25seSIsCi0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRl
Y3R1cmVzIjogWyJtaXBzZWwiXSwKLSAgICAgICJ0cmlnZ2VycyI6IFsianNjLXRlc3RzLW1pcHNl
bC10ZXN0cy1ld3MiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpzYzMyLW1pcHNl
bC1ld3MiLCAiaWdhbGlhLWpzYzMyLW1pcHNlbC1ld3MtMDMiXQotICAgIH0sCi0JewotICAgICAg
Im5hbWUiOiAiSlNDLU1JUFNFTC0zMmJpdHMtVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUi
OiAianNjLW1pcHMtdGVzdHMiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAgImZh
Y3RvcnkiOiAiSlNDVGVzdHNGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJqc2Mtb25seSIs
Ci0gICAgICAiY29uZmlndXJhdGlvbiI6ICJyZWxlYXNlIiwKLSAgICAgICJhcmNoaXRlY3R1cmVz
IjogWyJtaXBzZWwiXSwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpzYzMyLW1pcHNl
bC1ld3MiLCAiaWdhbGlhLWpzYzMyLW1pcHNlbC1ld3MtMDIiXSwKLSAgICAgICJyZW1vdGVzIjog
Ii4uLy4uL0VXUy10ZXN0LWRldmljZXMuanNvbiIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1l
IjogIkpTQy1BUk12Ny0zMmJpdHMtQnVpbGQtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAianNj
LWFybXY3IiwKLSAgICAgICJpY29uIjogImJ1aWxkT25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJK
U0NCdWlsZEZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwKLSAgICAgICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbImFybXY3
Il0sCi0gICAgICAidHJpZ2dlcnMiOiBbImpzYy10ZXN0cy1hcm12Ny10ZXN0cy1ld3MiXSwKLSAg
ICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpzYzMyLWFybXY3LWV3cyJdCi0gICAgfSwKLSAg
ICB7Ci0gICAgICAibmFtZSI6ICJKU0MtQVJNdjctMzJiaXRzLVRlc3RzLUVXUyIsCi0gICAgICAi
c2hvcnRuYW1lIjogImpzYy1hcm12Ny10ZXN0cyIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIs
Ci0gICAgICAiZmFjdG9yeSI6ICJKU0NUZXN0c0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjog
ImpzYy1vbmx5IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFy
Y2hpdGVjdHVyZXMiOiBbImFybXY3Il0sCi0gICAgICAid29ya2VybmFtZXMiOiBbImlnYWxpYS1q
c2MzMi1hcm12Ny1ld3MiXSwKLSAgICAgICJyZW1vdGVzIjogIi4uLy4uL0VXUy10ZXN0LWRldmlj
ZXMuanNvbiIKLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIkpTQy1pMzg2LTMyYml0cy1F
V1MiLAotICAgICAgInNob3J0bmFtZSI6ICJqc2MtaTM4NiIsCi0gICAgICAiaWNvbiI6ICJidWls
ZE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiSlNDQnVpbGRBbmRUZXN0c0ZhY3RvcnkiLAotICAg
ICAgInBsYXRmb3JtIjogImpzYy1vbmx5IiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVh
c2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4NiJdLAotICAgICAgInJ1blRlc3RzIjog
ImZhbHNlIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiaWdhbGlhLWpzYzMyLWkzODYtZXdzIl0s
Ci0gICAgICAicmVtb3RlcyI6ICIuLi8uLi9FV1MtdGVzdC1kZXZpY2VzLmpzb24iCi0gICAgfSwK
LSAgICB7Ci0gICAgICAibmFtZSI6ICJCaW5kaW5ncy1UZXN0cy1FV1MiLAotICAgICAgInNob3J0
bmFtZSI6ICJiaW5kaW5ncyIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFj
dG9yeSI6ICJCaW5kaW5nc0ZhY3RvcnkiLAotICAgICAgInBsYXRmb3JtIjogIioiLAotICAgICAg
Indvcmtlcm5hbWVzIjogWyJld3MxNTEiLCAid2Via2l0LW1pc2MiXQotICAgIH0sCi0gICAgewot
ICAgICAgIm5hbWUiOiAiV2ViS2l0UHktVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAi
d2Via2l0cHkiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAi
V2ViS2l0UHlGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwKLSAgICAgICJ3b3JrZXJu
YW1lcyI6IFsiZXdzMTUxIiwgIndlYmtpdC1taXNjIl0KLSAgICB9LAotICAgIHsKLSAgICAgICJu
YW1lIjogIldlYktpdFBlcmwtVGVzdHMtRVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAid2Via2l0
cGVybCIsCi0gICAgICAiaWNvbiI6ICJ0ZXN0T25seSIsCi0gICAgICAiZmFjdG9yeSI6ICJXZWJL
aXRQZXJsRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0gICAgICAid29ya2VybmFt
ZXMiOiBbImV3czE1MSIsICJ3ZWJraXQtbWlzYyJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAibmFt
ZSI6ICJBUEktVGVzdHMtaU9TLVNpbXVsYXRvci1FV1MiLAotICAgICAgInNob3J0bmFtZSI6ICJh
cGktaW9zIiwKLSAgICAgICJpY29uIjogInRlc3RPbmx5IiwKLSAgICAgICJmYWN0b3J5IjogIkFQ
SVRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiKiIsCi0gICAgICAidHJpZ2dlcmVk
X2J5IjogWyJpb3MtMTQtc2ltLWJ1aWxkLWV3cyJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJl
d3MxNTYiLCAiZXdzMTU3IiwgImV3czE1OCIsICJld3MxNTkiXQotICAgIH0sCi0gICAgewotICAg
ICAgIm5hbWUiOiAiQVBJLVRlc3RzLW1hY09TLUVXUyIsCi0gICAgICAic2hvcnRuYW1lIjogImFw
aS1tYWMiLAotICAgICAgImljb24iOiAidGVzdE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiQVBJ
VGVzdHNGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICIqIiwKLSAgICAgICJ0cmlnZ2VyZWRf
YnkiOiBbIm1hY29zLW1vamF2ZS1yZWxlYXNlLWJ1aWxkLWV3cyJdLAotICAgICAgIndvcmtlcm5h
bWVzIjogWyJld3MxMTkiLCAiZXdzMTUwIiwgImV3czE1MyIsICJld3MxNTUiXQotICAgIH0sCi0g
ICAgewotICAgICAgIm5hbWUiOiAiQVBJLVRlc3RzLUdUSy1FV1MiLAotICAgICAgInNob3J0bmFt
ZSI6ICJhcGktZ3RrIiwKLSAgICAgICJpY29uIjogInRlc3RPbmx5IiwKLSAgICAgICJmYWN0b3J5
IjogIkFQSVRlc3RzRmFjdG9yeSIsCi0gICAgICAicGxhdGZvcm0iOiAiZ3RrIiwKLSAgICAgICJj
b25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFyY2hpdGVjdHVyZXMiOiBbIng4Nl82
NCJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJpZ2FsaWEzLWd0ay13azItZXdzIiwgImlnYWxp
YTQtZ3RrLXdrMi1ld3MiXQotICAgIH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiU2VydmljZXMt
RVdTIiwKLSAgICAgICJzaG9ydG5hbWUiOiAic2VydmljZXMiLAotICAgICAgImljb24iOiAidGVz
dE9ubHkiLAotICAgICAgImZhY3RvcnkiOiAiU2VydmljZXNGYWN0b3J5IiwKLSAgICAgICJwbGF0
Zm9ybSI6ICIqIiwKLSAgICAgICJ3b3JrZXJuYW1lcyI6IFsiZXdzMTUxIiwgIndlYmtpdC1taXNj
Il0KLSAgICB9LAotICAgIHsKLSAgICAgICJuYW1lIjogIkNvbW1pdC1RdWV1ZSIsCi0gICAgICAi
c2hvcnRuYW1lIjogImNvbW1pdCIsCi0gICAgICAiaWNvbiI6ICJidWlsZEFuZFRlc3QiLAotICAg
ICAgImZhY3RvcnkiOiAiQ29tbWl0UXVldWVGYWN0b3J5IiwKLSAgICAgICJwbGF0Zm9ybSI6ICJt
YWMtbW9qYXZlIiwKLSAgICAgICJjb25maWd1cmF0aW9uIjogInJlbGVhc2UiLAotICAgICAgImFy
Y2hpdGVjdHVyZXMiOiBbIng4Nl82NCJdLAotICAgICAgIndvcmtlcm5hbWVzIjogWyJ3ZWJraXQt
Y3EtMDEiLCAid2Via2l0LWNxLTAyIiwgIndlYmtpdC1jcS0wMyJdCi0gICAgfQotICBdLAotICAi
c2NoZWR1bGVycyI6IFsKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlfVXNlcnBhc3MiLAotICAg
ICAgIm5hbWUiOiAidHJ5IiwKLSAgICAgICJwb3J0IjogNTU1NSwKLSAgICAgICJidWlsZGVyTmFt
ZXMiOiBbIkFwcGx5LVdhdGNoTGlzdC1FV1MiLCAiQmluZGluZ3MtVGVzdHMtRVdTIiwgIkdUSy1C
dWlsZC1FV1MiLCAiaU9TLTE0LUJ1aWxkLUVXUyIsICJpT1MtMTQtU2ltdWxhdG9yLUJ1aWxkLUVX
UyIsCi0gICAgICAgICAgICAgICAgICAgICAgICJKU0MtQVJNdjctMzJiaXRzLUJ1aWxkLUVXUyIs
ICJKU0MtaTM4Ni0zMmJpdHMtRVdTIiwgIkpTQy1NSVBTRUwtMzJiaXRzLUJ1aWxkLUVXUyIsICJK
U0MtVGVzdHMtRVdTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIm1hY09TLUFwcGxlLVNpbGlj
b24tQmlnLVN1ci1SZWxlYXNlLUJ1aWxkLUVXUyIsICJtYWNPUy1Nb2phdmUtRGVidWctQnVpbGQt
RVdTIiwgIm1hY09TLU1vamF2ZS1SZWxlYXNlLUJ1aWxkLUVXUyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICJTZXJ2aWNlcy1FV1MiLCAiU3R5bGUtRVdTIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgInR2T1MtMTQtQnVpbGQtRVdTIiwgInR2T1MtMTQtU2ltdWxhdG9yLUJ1aWxkLUVXUyIsICJ3
YXRjaE9TLTctQnVpbGQtRVdTIiwgIndhdGNoT1MtNy1TaW11bGF0b3ItQnVpbGQtRVdTIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIldQRS1FV1MiLCAiV2ViS2l0UGVybC1UZXN0cy1FV1MiLCAi
V2ViS2l0UHktVGVzdHMtRVdTIiwgIldpbkNhaXJvLUVXUyIsICJXaW5kb3dzLUVXUyJdCi0gICAg
fSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcnlfVXNlcnBhc3MiLAotICAgICAgIm5hbWUiOiAi
dHJ5X2NvbW1pdHF1ZXVlIiwKLSAgICAgICJwb3J0IjogNTU1NywKLSAgICAgICJidWlsZGVyTmFt
ZXMiOiBbIkNvbW1pdC1RdWV1ZSJdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmln
Z2VyYWJsZSIsCi0gICAgICAibmFtZSI6ICJtYWNvcy1tb2phdmUtZGVidWctYnVpbGQtZXdzIiwK
LSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNPUy1Nb2phdmUtRGVidWctQnVp
bGQtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAiVHJpZ2dlcmFi
bGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZlLWRlYnVnLXdrMS10ZXN0cy1ld3MiLAot
ICAgICAgImJ1aWxkZXJOYW1lcyI6IFsKLSAgICAgICAgIm1hY09TLU1vamF2ZS1EZWJ1Zy1XSzEt
VGVzdHMtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAiVHJpZ2dl
cmFibGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZlLXJlbGVhc2UtYnVpbGQtZXdzIiwK
LSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNPUy1Nb2phdmUtUmVsZWFzZS1C
dWlsZC1FV1MiCi0gICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmlnZ2Vy
YWJsZSIsCi0gICAgICAibmFtZSI6ICJtYWNvcy1tb2phdmUtcmVsZWFzZS13azEtdGVzdHMtZXdz
IiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJtYWNPUy1Nb2phdmUtUmVsZWFz
ZS1XSzEtVGVzdHMtRVdTIgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAi
VHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUiOiAibWFjb3MtbW9qYXZlLXJlbGVhc2Utd2syLXRl
c3RzLWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAibWFjT1MtTW9qYXZl
LVJlbGVhc2UtV0syLVRlc3RzLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0
eXBlIjogIlRyaWdnZXJhYmxlIiwKLSAgICAgICJuYW1lIjogImlvcy0xNC1zaW0tYnVpbGQtZXdz
IiwKLSAgICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJpT1MtMTQtU2ltdWxhdG9yLUJ1
aWxkLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0eXBlIjogIlRyaWdnZXJh
YmxlIiwKLSAgICAgICJuYW1lIjogImlvcy0xNC1zaW0td2syLXRlc3RzLWV3cyIsCi0gICAgICAi
YnVpbGRlck5hbWVzIjogWwotICAgICAgICAiaU9TLTE0LVNpbXVsYXRvci1XSzItVGVzdHMtRVdT
IgotICAgICAgXQotICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLAot
ICAgICAgIm5hbWUiOiAiYXBpLXRlc3RzLWlvcy1zaW0tZXdzIiwKLSAgICAgICJidWlsZGVyTmFt
ZXMiOiBbCi0gICAgICAgICJBUEktVGVzdHMtaU9TLVNpbXVsYXRvci1FV1MiCi0gICAgICBdCi0g
ICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsCi0gICAgICAibmFtZSI6
ICJhcGktdGVzdHMtbWFjLWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAi
QVBJLVRlc3RzLW1hY09TLUVXUyIKLSAgICAgIF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0eXBl
IjogIlRyaWdnZXJhYmxlIiwKLSAgICAgICJuYW1lIjogImFwaS10ZXN0cy1ndGstZXdzIiwKLSAg
ICAgICJidWlsZGVyTmFtZXMiOiBbCi0gICAgICAgICJBUEktVGVzdHMtR1RLLUVXUyIKLSAgICAg
IF0KLSAgICB9LAotICAgIHsKLSAgICAgICJ0eXBlIjogIlRyeV9Vc2VycGFzcyIsCi0gICAgICAi
bmFtZSI6ICJndGstd2syLXRlc3RzLWV3cy1kaXNhYmxlZCIsCi0gICAgICAicG9ydCI6IDU1NTgs
Ci0gICAgICAiYnVpbGRlck5hbWVzIjogWwotICAgICAgICAiR1RLLVdLMi1UZXN0cy1FV1MiCi0g
ICAgICBdCi0gICAgfSwKLSAgICB7Ci0gICAgICAidHlwZSI6ICJUcmlnZ2VyYWJsZSIsCi0gICAg
ICAibmFtZSI6ICJqc2MtdGVzdHMtbWlwc2VsLXRlc3RzLWV3cyIsCi0gICAgICAiYnVpbGRlck5h
bWVzIjogWwotICAgICAgICAiSlNDLU1JUFNFTC0zMmJpdHMtVGVzdHMtRVdTIgotICAgICAgXQot
ICAgIH0sCi0gICAgewotICAgICAgInR5cGUiOiAiVHJpZ2dlcmFibGUiLAotICAgICAgIm5hbWUi
OiAianNjLXRlc3RzLWFybXY3LXRlc3RzLWV3cyIsCi0gICAgICAiYnVpbGRlck5hbWVzIjogWwot
ICAgICAgICAiSlNDLUFSTXY3LTMyYml0cy1UZXN0cy1FV1MiCi0gICAgICBdCi0gICAgfQotICBd
Ci19CkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZW1haWxfdW5pdHRl
c3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2Vt
YWlsX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYnVpbGQvZW1haWxfdW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw0NSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRl
c3QKLQotCi1jbGFzcyBFbWFpbHNEb3RKU09OVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
ZGVmIHRlc3RfdmFsaWRfZW1haWxzX2pzb24oc2VsZik6Ci0gICAgICAgIGN3ZCA9IG9zLnBhdGgu
ZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICBqc29uLmxvYWQob3Bl
bihvcy5wYXRoLmpvaW4oY3dkLCAnZW1haWxzLmpzb24nKSkpCi0KLSAgICBkZWYgdGVzdF9lbWFp
bHNfanNvbl9yZXF1aXJlZF9jYXRlZ29yaWVzX3ByZXNlbnQoc2VsZik6Ci0gICAgICAgIGN3ZCA9
IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICBlbWFp
bHMgPSBqc29uLmxvYWQob3Blbihvcy5wYXRoLmpvaW4oY3dkLCAnZW1haWxzLmpzb24nKSkpCi0g
ICAgICAgIHZhbGlkX2VtYWlsX2NhdGVnb3JpZXMgPSBbJ0FETUlOX0VNQUlMUycsICdBUFBMRV9C
T1RfV0FUQ0hFUlNfRU1BSUxTJywgJ0VNQUlMX0lEU19UT19VTlNVQlNDUklCRScsICdJR0FMSUFf
SlNDX1RFQU1fRU1BSUxTJywgJ0lHQUxJQV9HVEtfV1BFX0VNQUlMUyddCi0gICAgICAgIGZvciBj
YXRlZ29yeSBpbiB2YWxpZF9lbWFpbF9jYXRlZ29yaWVzOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGNhdGVnb3J5IGluIGVtYWlscy5rZXlzKCkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19f
bWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9lbWFpbHMuanNvbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZl
U3VwcG9ydC9ld3MtYnVpbGQvZW1haWxzLmpzb24JKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9lbWFpbHMuanNvbgkobm9uZXhpc3RlbnQpCkBA
IC0xLDE2ICswLDAgQEAKLXsKLSAgIkFETUlOX0VNQUlMUyI6IFsKLSAgICAgICJhYWthc2hfamFp
bkBhcHBsZS5jb20iLCAKLSAgICAgICJ3ZWJraXQtZXdzLWJvdC13YXRjaGVyc0Bncm91cC5hcHBs
ZS5jb20iCi0gIF0sCi0gICJBUFBMRV9CT1RfV0FUQ0hFUlNfRU1BSUxTIjogWwotICAgICAgIndl
YmtpdC1ld3MtYm90LXdhdGNoZXJzQGdyb3VwLmFwcGxlLmNvbSIKLSAgXSwKLSAgIklHQUxJQV9K
U0NfVEVBTV9FTUFJTFMiOiBbCi0gICAgICAianNjMzJAaWdhbGlhLmNvbSIKLSAgXSwKLSAgIklH
QUxJQV9HVEtfV1BFX0VNQUlMUyI6IFsKLSAgICAgICJ3ZWJraXQtYm90LWFkbWluQGlnYWxpYS5j
b20iCi0gIF0sCi0gICJFTUFJTF9JRFNfVE9fVU5TVUJTQ1JJQkUiOiBbInBub3JtYW5kQGlnYWxp
YS5jb20iXQotfQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2V2ZW50
cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvZXZl
bnRzLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YnVpbGQvZXZlbnRzLnB5CShub25leGlzdGVudCkKQEAgLTEsMjE2ICswLDAgQEAKLSMgQ29weXJp
Z2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGNhbGVuZGFyCi1pbXBvcnQg
ZGF0ZXRpbWUKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCB0aW1lCi0KLWZyb20gYnVp
bGRib3QudXRpbCBpbXBvcnQgc2VydmljZQotZnJvbSB0d2lzdGVkLmludGVybmV0IGltcG9ydCBk
ZWZlcgotZnJvbSB0d2lzdGVkLmludGVybmV0IGltcG9ydCByZWFjdG9yCi1mcm9tIHR3aXN0ZWQu
aW50ZXJuZXQuZGVmZXIgaW1wb3J0IHN1Y2NlZWQKLWZyb20gdHdpc3RlZC5weXRob24gaW1wb3J0
IGxvZwotZnJvbSB0d2lzdGVkLndlYi5jbGllbnQgaW1wb3J0IEFnZW50Ci1mcm9tIHR3aXN0ZWQu
d2ViLmh0dHBfaGVhZGVycyBpbXBvcnQgSGVhZGVycwotZnJvbSB0d2lzdGVkLndlYi5pd2ViIGlt
cG9ydCBJQm9keVByb2R1Y2VyCi1mcm9tIHpvcGUuaW50ZXJmYWNlIGltcG9ydCBpbXBsZW1lbnRz
Ci0KLQotY2xhc3MgSlNPTlByb2R1Y2VyKG9iamVjdCk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBK
U09OIGFzeW5jaHJvbm91c2x5IGFzIHRvIG5vdCBsb2NrIHRoZSBidWlsZGJvdCBtYWluIGV2ZW50
IGxvb3AKLSAgICAiIiIKLSAgICBpbXBsZW1lbnRzKElCb2R5UHJvZHVjZXIpCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYm9k
eSA9IGpzb24uZHVtcHMoZGF0YSwgZGVmYXVsdD1zZWxmLmpzb25fc2VyaWFsaXplX2RhdGV0aW1l
KQotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgc2VsZi5ib2R5ID0gJycK
LSAgICAgICAgc2VsZi5sZW5ndGggPSBsZW4oc2VsZi5ib2R5KQotCi0gICAgZGVmIHN0YXJ0UHJv
ZHVjaW5nKHNlbGYsIGNvbnN1bWVyKToKLSAgICAgICAgaWYgc2VsZi5ib2R5OgotICAgICAgICAg
ICAgY29uc3VtZXIud3JpdGUoc2VsZi5ib2R5KQotICAgICAgICByZXR1cm4gc3VjY2VlZChOb25l
KQotCi0gICAgZGVmIHBhdXNlUHJvZHVjaW5nKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBk
ZWYgc3RvcFByb2R1Y2luZyhzZWxmKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGpzb25fc2Vy
aWFsaXplX2RhdGV0aW1lKHNlbGYsIG9iaik6Ci0gICAgICAgICIiIgotICAgICAgICBTZXJpYWxp
emluZyBidWlsZGJvdCBkYXRlcyBpbnRvIFVOSVggZXBvY2ggdGltZXN0YW1wcy4KLSAgICAgICAg
IiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBkYXRldGltZS5kYXRldGltZSk6Ci0gICAg
ICAgICAgICByZXR1cm4gaW50KGNhbGVuZGFyLnRpbWVnbShvYmoudGltZXR1cGxlKCkpKQotCi0g
ICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVHlwZSAlcyBub3Qgc2VyaWFsaXphYmxlIiAlIHR5cGUo
b2JqKSkKLQotCi1jbGFzcyBFdmVudHMoc2VydmljZS5CdWlsZGJvdFNlcnZpY2UpOgotCi0gICAg
RVZFTlRfU0VSVkVSX0VORFBPSU5UID0gJ2h0dHBzOi8vZXdzLndlYmtpdC5vcmcvcmVzdWx0cy8n
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWFzdGVyX2hvc3RuYW1lLCB0eXBlX3ByZWZpeD0n
JywgbmFtZT0nRXZlbnRzJyk6Ci0gICAgICAgICIiIgotICAgICAgICBJbml0aWFsaXplIHRoZSBF
dmVudHMgUGx1Z2luLiBTZW5kcyBkYXRhIHRvIGV2ZW50IHNlcnZlciBvbiBzcGVjaWZpYyBidWls
ZGJvdCBldmVudHMuCi0gICAgICAgIDpwYXJhbSB0eXBlX3ByZWZpeDogW29wdGlvbmFsXSBwcmVm
aXggd2Ugd2FudCB0byBhZGQgdG8gdGhlICd0eXBlJyBmaWVsZCBvbiB0aGUganNvbiB3ZSBzZW5k
Ci0gICAgICAgICB0byBldmVudCBzZXJ2ZXIuIChpLmUuIGV3cy1idWlsZCwgd2hlcmUgJ2V3cy0n
IGlzIHRoZSBwcmVmaXguCi0gICAgICAgIDpyZXR1cm46IEV2ZW50cyBPYmplY3QKLSAgICAgICAg
IiIiCi0gICAgICAgIHNlcnZpY2UuQnVpbGRib3RTZXJ2aWNlLl9faW5pdF9fKHNlbGYsIG5hbWU9
bmFtZSkKLQotICAgICAgICBpZiB0eXBlX3ByZWZpeCBhbmQgbm90IHR5cGVfcHJlZml4LmVuZHN3
aXRoKCItIik6Ci0gICAgICAgICAgICB0eXBlX3ByZWZpeCArPSAiLSIKLSAgICAgICAgc2VsZi50
eXBlX3ByZWZpeCA9IHR5cGVfcHJlZml4Ci0gICAgICAgIHNlbGYubWFzdGVyX2hvc3RuYW1lID0g
bWFzdGVyX2hvc3RuYW1lCi0KLSAgICBkZWYgc2VuZERhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAg
IGlmIG9zLmdldGVudignRVdTX0FQSV9LRVknLCBOb25lKToKLSAgICAgICAgICAgIGRhdGFbJ0VX
U19BUElfS0VZJ10gPSBvcy5nZXRlbnYoJ0VXU19BUElfS0VZJykKLSAgICAgICAgYWdlbnQgPSBB
Z2VudChyZWFjdG9yKQotICAgICAgICBib2R5ID0gSlNPTlByb2R1Y2VyKGRhdGEpCi0KLSAgICAg
ICAgYWdlbnQucmVxdWVzdCgnUE9TVCcsIHNlbGYuRVZFTlRfU0VSVkVSX0VORFBPSU5ULCBIZWFk
ZXJzKHsnQ29udGVudC1UeXBlJzogWydhcHBsaWNhdGlvbi9qc29uJ119KSwgYm9keSkKLQotICAg
IGRlZiBnZXRCdWlsZGVyTmFtZShzZWxmLCBidWlsZCk6Ci0gICAgICAgIGlmIG5vdCAoYnVpbGQg
YW5kICdwcm9wZXJ0aWVzJyBpbiBidWlsZCk6Ci0gICAgICAgICAgICByZXR1cm4gJycKLQotICAg
ICAgICByZXR1cm4gYnVpbGQuZ2V0KCdwcm9wZXJ0aWVzJykuZ2V0KCdidWlsZGVybmFtZScpWzBd
Ci0KLSAgICBkZWYgZ2V0UGF0Y2hJRChzZWxmLCBidWlsZCk6Ci0gICAgICAgIGlmIG5vdCAoYnVp
bGQgYW5kICdwcm9wZXJ0aWVzJyBpbiBidWlsZCBhbmQgJ3BhdGNoX2lkJyBpbiBidWlsZFsncHJv
cGVydGllcyddKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmV0dXJuIGJ1
aWxkLmdldCgncHJvcGVydGllcycpLmdldCgncGF0Y2hfaWQnKVswXQotCi0gICAgQGRlZmVyLmlu
bGluZUNhbGxiYWNrcwotICAgIGRlZiBidWlsZFN0YXJ0ZWQoc2VsZiwga2V5LCBidWlsZCk6Ci0g
ICAgICAgIGlmIG5vdCBidWlsZC5nZXQoJ3Byb3BlcnRpZXMnKToKLSAgICAgICAgICAgIGJ1aWxk
Wydwcm9wZXJ0aWVzJ10gPSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5idWlsZHMuZ2V0QnVpbGRQcm9w
ZXJ0aWVzKGJ1aWxkLmdldCgnYnVpbGRpZCcpKQotCi0gICAgICAgIGJ1aWxkZXIgPSB5aWVsZCBz
ZWxmLm1hc3Rlci5kYi5idWlsZGVycy5nZXRCdWlsZGVyKGJ1aWxkLmdldCgnYnVpbGRlcmlkJykp
Ci0gICAgICAgIGJ1aWxkZXJfZGlzcGxheV9uYW1lID0gYnVpbGRlci5nZXQoJ2Rlc2NyaXB0aW9u
JykKLQotICAgICAgICBkYXRhID0gewotICAgICAgICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJl
Zml4ICsgImJ1aWxkIiwKLSAgICAgICAgICAgICJzdGF0dXMiOiAic3RhcnRlZCIsCi0gICAgICAg
ICAgICAiaG9zdG5hbWUiOiBzZWxmLm1hc3Rlcl9ob3N0bmFtZSwKLSAgICAgICAgICAgICJwYXRj
aF9pZCI6IHNlbGYuZ2V0UGF0Y2hJRChidWlsZCksCi0gICAgICAgICAgICAiYnVpbGRfaWQiOiBi
dWlsZC5nZXQoJ2J1aWxkaWQnKSwKLSAgICAgICAgICAgICJidWlsZGVyX2lkIjogYnVpbGQuZ2V0
KCdidWlsZGVyaWQnKSwKLSAgICAgICAgICAgICJudW1iZXIiOiBidWlsZC5nZXQoJ251bWJlcicp
LAotICAgICAgICAgICAgInJlc3VsdCI6IGJ1aWxkLmdldCgncmVzdWx0cycpLAotICAgICAgICAg
ICAgInN0YXJ0ZWRfYXQiOiBidWlsZC5nZXQoJ3N0YXJ0ZWRfYXQnKSwKLSAgICAgICAgICAgICJj
b21wbGV0ZV9hdCI6IGJ1aWxkLmdldCgnY29tcGxldGVfYXQnKSwKLSAgICAgICAgICAgICJzdGF0
ZV9zdHJpbmciOiBidWlsZC5nZXQoJ3N0YXRlX3N0cmluZycpLAotICAgICAgICAgICAgImJ1aWxk
ZXJfbmFtZSI6IHNlbGYuZ2V0QnVpbGRlck5hbWUoYnVpbGQpLAotICAgICAgICAgICAgImJ1aWxk
ZXJfZGlzcGxheV9uYW1lIjogYnVpbGRlcl9kaXNwbGF5X25hbWUsCi0gICAgICAgIH0KLQotICAg
ICAgICBzZWxmLnNlbmREYXRhKGRhdGEpCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0g
ICAgZGVmIGJ1aWxkRmluaXNoZWQoc2VsZiwga2V5LCBidWlsZCk6Ci0gICAgICAgIGlmIG5vdCBi
dWlsZC5nZXQoJ3Byb3BlcnRpZXMnKToKLSAgICAgICAgICAgIGJ1aWxkWydwcm9wZXJ0aWVzJ10g
PSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5idWlsZHMuZ2V0QnVpbGRQcm9wZXJ0aWVzKGJ1aWxkLmdl
dCgnYnVpbGRpZCcpKQotICAgICAgICBpZiBub3QgYnVpbGQuZ2V0KCdzdGVwcycpOgotICAgICAg
ICAgICAgYnVpbGRbJ3N0ZXBzJ10gPSB5aWVsZCBzZWxmLm1hc3Rlci5kYi5zdGVwcy5nZXRTdGVw
cyhidWlsZC5nZXQoJ2J1aWxkaWQnKSkKLQotICAgICAgICBidWlsZGVyID0geWllbGQgc2VsZi5t
YXN0ZXIuZGIuYnVpbGRlcnMuZ2V0QnVpbGRlcihidWlsZC5nZXQoJ2J1aWxkZXJpZCcpKQotICAg
ICAgICBidWlsZGVyX2Rpc3BsYXlfbmFtZSA9IGJ1aWxkZXIuZ2V0KCdkZXNjcmlwdGlvbicpCi0K
LSAgICAgICAgZGF0YSA9IHsKLSAgICAgICAgICAgICJ0eXBlIjogc2VsZi50eXBlX3ByZWZpeCAr
ICJidWlsZCIsCi0gICAgICAgICAgICAic3RhdHVzIjogImZpbmlzaGVkIiwKLSAgICAgICAgICAg
ICJob3N0bmFtZSI6IHNlbGYubWFzdGVyX2hvc3RuYW1lLAotICAgICAgICAgICAgInBhdGNoX2lk
Ijogc2VsZi5nZXRQYXRjaElEKGJ1aWxkKSwKLSAgICAgICAgICAgICJidWlsZF9pZCI6IGJ1aWxk
LmdldCgnYnVpbGRpZCcpLAotICAgICAgICAgICAgImJ1aWxkZXJfaWQiOiBidWlsZC5nZXQoJ2J1
aWxkZXJpZCcpLAotICAgICAgICAgICAgIm51bWJlciI6IGJ1aWxkLmdldCgnbnVtYmVyJyksCi0g
ICAgICAgICAgICAicmVzdWx0IjogYnVpbGQuZ2V0KCdyZXN1bHRzJyksCi0gICAgICAgICAgICAi
c3RhcnRlZF9hdCI6IGJ1aWxkLmdldCgnc3RhcnRlZF9hdCcpLAotICAgICAgICAgICAgImNvbXBs
ZXRlX2F0IjogYnVpbGQuZ2V0KCdjb21wbGV0ZV9hdCcpLAotICAgICAgICAgICAgInN0YXRlX3N0
cmluZyI6IGJ1aWxkLmdldCgnc3RhdGVfc3RyaW5nJyksCi0gICAgICAgICAgICAiYnVpbGRlcl9u
YW1lIjogc2VsZi5nZXRCdWlsZGVyTmFtZShidWlsZCksCi0gICAgICAgICAgICAiYnVpbGRlcl9k
aXNwbGF5X25hbWUiOiBidWlsZGVyX2Rpc3BsYXlfbmFtZSwKLSAgICAgICAgICAgICJzdGVwcyI6
IGJ1aWxkLmdldCgnc3RlcHMnKSwKLSAgICAgICAgfQotCi0gICAgICAgIHNlbGYuc2VuZERhdGEo
ZGF0YSkKLQotICAgIGRlZiBzdGVwU3RhcnRlZChzZWxmLCBrZXksIHN0ZXApOgotICAgICAgICBz
dGF0ZV9zdHJpbmcgPSBzdGVwLmdldCgnc3RhdGVfc3RyaW5nJykKLSAgICAgICAgaWYgc3RhdGVf
c3RyaW5nID09ICdwZW5kaW5nJzoKLSAgICAgICAgICAgIHN0YXRlX3N0cmluZyA9ICdSdW5uaW5n
IHt9Jy5mb3JtYXQoc3RlcC5nZXQoJ25hbWUnKSkKLQotICAgICAgICBkYXRhID0gewotICAgICAg
ICAgICAgInR5cGUiOiBzZWxmLnR5cGVfcHJlZml4ICsgInN0ZXAiLAotICAgICAgICAgICAgInN0
YXR1cyI6ICJzdGFydGVkIiwKLSAgICAgICAgICAgICJob3N0bmFtZSI6IHNlbGYubWFzdGVyX2hv
c3RuYW1lLAotICAgICAgICAgICAgInN0ZXBfaWQiOiBzdGVwLmdldCgnc3RlcGlkJyksCi0gICAg
ICAgICAgICAiYnVpbGRfaWQiOiBzdGVwLmdldCgnYnVpbGRpZCcpLAotICAgICAgICAgICAgInJl
c3VsdCI6IHN0ZXAuZ2V0KCdyZXN1bHRzJyksCi0gICAgICAgICAgICAic3RhdGVfc3RyaW5nIjog
c3RhdGVfc3RyaW5nLAotICAgICAgICAgICAgInN0YXJ0ZWRfYXQiOiBzdGVwLmdldCgnc3RhcnRl
ZF9hdCcpLAotICAgICAgICAgICAgImNvbXBsZXRlX2F0Ijogc3RlcC5nZXQoJ2NvbXBsZXRlX2F0
JyksCi0gICAgICAgIH0KLQotICAgICAgICBzZWxmLnNlbmREYXRhKGRhdGEpCi0KLSAgICBkZWYg
c3RlcEZpbmlzaGVkKHNlbGYsIGtleSwgc3RlcCk6Ci0gICAgICAgIGRhdGEgPSB7Ci0gICAgICAg
ICAgICAidHlwZSI6IHNlbGYudHlwZV9wcmVmaXggKyAic3RlcCIsCi0gICAgICAgICAgICAic3Rh
dHVzIjogImZpbmlzaGVkIiwKLSAgICAgICAgICAgICJob3N0bmFtZSI6IHNlbGYubWFzdGVyX2hv
c3RuYW1lLAotICAgICAgICAgICAgInN0ZXBfaWQiOiBzdGVwLmdldCgnc3RlcGlkJyksCi0gICAg
ICAgICAgICAiYnVpbGRfaWQiOiBzdGVwLmdldCgnYnVpbGRpZCcpLAotICAgICAgICAgICAgInJl
c3VsdCI6IHN0ZXAuZ2V0KCdyZXN1bHRzJyksCi0gICAgICAgICAgICAic3RhdGVfc3RyaW5nIjog
c3RlcC5nZXQoJ3N0YXRlX3N0cmluZycpLAotICAgICAgICAgICAgInN0YXJ0ZWRfYXQiOiBzdGVw
LmdldCgnc3RhcnRlZF9hdCcpLAotICAgICAgICAgICAgImNvbXBsZXRlX2F0Ijogc3RlcC5nZXQo
J2NvbXBsZXRlX2F0JyksCi0gICAgICAgIH0KLQotICAgICAgICBzZWxmLnNlbmREYXRhKGRhdGEp
Ci0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIHN0YXJ0U2VydmljZShzZWxm
KToKLSAgICAgICAgeWllbGQgc2VydmljZS5CdWlsZGJvdFNlcnZpY2Uuc3RhcnRTZXJ2aWNlKHNl
bGYpCi0KLSAgICAgICAgc3RhcnRDb25zdW1pbmcgPSBzZWxmLm1hc3Rlci5tcS5zdGFydENvbnN1
bWluZwotCi0gICAgICAgIHNlbGYuX2J1aWxkU3RhcnRlZENvbnN1bWVyID0geWllbGQgc3RhcnRD
b25zdW1pbmcoc2VsZi5idWlsZFN0YXJ0ZWQsICgnYnVpbGRzJywgTm9uZSwgJ25ldycpKQotICAg
ICAgICBzZWxmLl9idWlsZENvbXBsZXRlQ29uc3VtZXIgPSB5aWVsZCBzdGFydENvbnN1bWluZyhz
ZWxmLmJ1aWxkRmluaXNoZWQsICgnYnVpbGRzJywgTm9uZSwgJ2ZpbmlzaGVkJykpCi0gICAgICAg
IHNlbGYuX3N0ZXBTdGFydGVkQ29uc3VtZXIgPSB5aWVsZCBzdGFydENvbnN1bWluZyhzZWxmLnN0
ZXBTdGFydGVkLCAoJ3N0ZXBzJywgTm9uZSwgJ3N0YXJ0ZWQnKSkKLSAgICAgICAgc2VsZi5fc3Rl
cEZpbmlzaGVkQ29uc3VtZXIgPSB5aWVsZCBzdGFydENvbnN1bWluZyhzZWxmLnN0ZXBGaW5pc2hl
ZCwgKCdzdGVwcycsIE5vbmUsICdmaW5pc2hlZCcpKQotCi0gICAgZGVmIHN0b3BTZXJ2aWNlKHNl
bGYpOgotICAgICAgICBzZWxmLl9idWlsZFN0YXJ0ZWRDb25zdW1lci5zdG9wQ29uc3VtaW5nKCkK
LSAgICAgICAgc2VsZi5fYnVpbGRDb21wbGV0ZUNvbnN1bWVyLnN0b3BDb25zdW1pbmcoKQotICAg
ICAgICBzZWxmLl9zdGVwU3RhcnRlZENvbnN1bWVyLnN0b3BDb25zdW1pbmcoKQotICAgICAgICBz
ZWxmLl9zdGVwRmluaXNoZWRDb25zdW1lci5zdG9wQ29uc3VtaW5nKCkKSW5kZXg6IFRvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQkocmV2aXNpb24gMjY5
MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2ZhY3Rvcmllcy5weQko
bm9uZXhpc3RlbnQpCkBAIC0xLDI3NSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLQotCi1mcm9tIGJ1aWxkYm90LnByb2Nlc3MgaW1wb3J0IGZhY3Rv
cnkKLWZyb20gYnVpbGRib3Quc3RlcHMgaW1wb3J0IHRyaWdnZXIKLQotZnJvbSBzdGVwcyBpbXBv
cnQgKEFwcGx5UGF0Y2gsIEFwcGx5V2F0Y2hMaXN0LCBDaGVja091dFNvdXJjZSwgQ2hlY2tPdXRT
cGVjaWZpY1JldmlzaW9uLCBDaGVja1BhdGNoUmVsZXZhbmNlLAotICAgICAgICAgICAgICAgICAg
IENoZWNrUGF0Y2hTdGF0dXNPbkVXU1F1ZXVlcywgQ2hlY2tTdHlsZSwgQ29tcGlsZUpTQywgQ29t
cGlsZVdlYktpdCwgQ29uZmlndXJlQnVpbGQsIENyZWF0ZUxvY2FsR0lUQ29tbWl0LAotICAgICAg
ICAgICAgICAgICAgIERvd25sb2FkQnVpbHRQcm9kdWN0LCBFeHRyYWN0QnVpbHRQcm9kdWN0LCBG
aW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzLAotICAgICAgICAg
ICAgICAgICAgIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMsIEtpbGxPbGRQcm9jZXNzZXMsIFByaW50
Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywKLSAgICAgICAgICAgICAgICAg
ICBSdW5BUElUZXN0cywgUnVuQmluZGluZ3NUZXN0cywgUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVz
dHMsIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcsIFJ1bkVXU1VuaXRUZXN0cywKLSAgICAgICAg
ICAgICAgICAgICBSdW5SZXN1bHRzZGJweVRlc3RzLCBSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBS
dW5XZWJLaXQxVGVzdHMsIFJ1bldlYktpdFBlcmxUZXN0cywgUnVuV2ViS2l0UHlQeXRob24yVGVz
dHMsCi0gICAgICAgICAgICAgICAgICAgUnVuV2ViS2l0UHlQeXRob24zVGVzdHMsIFJ1bldlYktp
dFRlc3RzLCBTZXRCdWlsZFN1bW1hcnksIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24sIFVwZGF0
ZVdvcmtpbmdEaXJlY3RvcnksCi0gICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCwgVmFs
aWRhdGVDaGFuZ2VMb2dBbmRSZXZpZXdlciwgVmFsaWRhdGVDb21taXRlckFuZFJldmlld2VyLCBX
YWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKQotCi0KLWNsYXNzIEZhY3RvcnkoZmFjdG9yeS5CdWlsZEZh
Y3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1O
b25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIGJ1aWxkT25seT1UcnVlLCB0cmlnZ2Vycz1Ob25lLCB0
cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUs
IGNoZWNrUmVsZXZhbmNlPUZhbHNlLCAqKmt3YXJncyk6Ci0gICAgICAgIGZhY3RvcnkuQnVpbGRG
YWN0b3J5Ll9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDb25maWd1cmVCdWls
ZChwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXRl
Y3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1idWlsZE9ubHksIHRyaWdnZXJzPXRyaWdn
ZXJzLCB0cmlnZ2VyZWRfYnk9dHJpZ2dlcmVkX2J5LCByZW1vdGVzPXJlbW90ZXMsIGFkZGl0aW9u
YWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAgICAgIGlmIGNoZWNrUmVsZXZh
bmNlOgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKENoZWNrUGF0Y2hSZWxldmFuY2UoKSkKLSAg
ICAgICAgc2VsZi5hZGRTdGVwKFZhbGlkYXRlUGF0Y2goKSkKLSAgICAgICAgc2VsZi5hZGRTdGVw
KFByaW50Q29uZmlndXJhdGlvbigpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRTb3Vy
Y2UoKSkKLSAgICAgICAgIyBDaGVja091dFNvdXJjZSBzdGVwIHB1bGxzIHRoZSBsYXRlc3QgcmV2
aXNpb24sIHNpbmNlIHdlIHVzZSBhbHdheXNVc2VMYXRlc3Q9VHJ1ZS4gV2l0aG91dCBhbHdheXNV
c2VMYXRlc3QgQnVpbGRib3Qgd2lsbAotICAgICAgICAjIGF1dG9tYXRpY2FsbHkgYXBwbHkgdGhl
IHBhdGNoIHRvIHRoZSByZXBvLCBhbmQgdGhhdCBkb2Vzbid0IGhhbmRsZSBDaGFuZ2VMb2dzIHdl
bGwuIFNlZSBodHRwczovL3dlYmtpdC5vcmcvYi8xOTMxMzgKLSAgICAgICAgIyBUaGVyZWZvcmUg
d2UgYWRkIENoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiBzdGVwIHRvIGNoZWNrb3V0IHJlcXVpcmVk
IHJldmlzaW9uLgotICAgICAgICBzZWxmLmFkZFN0ZXAoQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9u
KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChBcHBseVBhdGNoKCkpCi0KLQotY2xhc3MgU3R5bGVG
YWN0b3J5KGZhY3RvcnkuQnVpbGRGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxh
dGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCB0cmlnZ2Vycz1O
b25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgot
ICAgICAgICBmYWN0b3J5LkJ1aWxkRmFjdG9yeS5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoQ29uZmlndXJlQnVpbGQocGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249
Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcz1hcmNoaXRlY3R1cmVzLCBidWlsZE9ubHk9RmFs
c2UsIHRyaWdnZXJzPXRyaWdnZXJzLCByZW1vdGVzPXJlbW90ZXMsIGFkZGl0aW9uYWxBcmd1bWVu
dHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAgICAgIHNlbGYuYWRkU3RlcChWYWxpZGF0ZVBh
dGNoKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChQcmludENvbmZpZ3VyYXRpb24oKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKENoZWNrT3V0U291cmNlKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChV
cGRhdGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChBcHBseVBhdGNo
KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja1N0eWxlKCkpCi0KLQotY2xhc3MgV2F0Y2hM
aXN0RmFjdG9yeShmYWN0b3J5LkJ1aWxkRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgdHJpZ2dl
cnM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdz
KToKLSAgICAgICAgZmFjdG9yeS5CdWlsZEZhY3RvcnkuX19pbml0X18oc2VsZikKLSAgICAgICAg
c2VsZi5hZGRTdGVwKENvbmZpZ3VyZUJ1aWxkKHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0
aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5
PUZhbHNlLCB0cmlnZ2Vycz10cmlnZ2VycywgcmVtb3Rlcz1yZW1vdGVzLCBhZGRpdGlvbmFsQXJn
dW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoVmFsaWRh
dGVQYXRjaCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUHJpbnRDb25maWd1cmF0aW9uKCkpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChDaGVja091dFNvdXJjZSgpKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoVXBkYXRlV29ya2luZ0RpcmVjdG9yeSgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQXBwbHlQ
YXRjaCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQXBwbHlXYXRjaExpc3QoKSkKLQotCi1jbGFz
cyBCaW5kaW5nc0ZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRm
b3JtLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgYWRkaXRpb25hbEFy
Z3VtZW50cz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwg
cGxhdGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0
dXJlcz1hcmNoaXRlY3R1cmVzLCBidWlsZE9ubHk9RmFsc2UsIGFkZGl0aW9uYWxBcmd1bWVudHM9
YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKFJ1bkJpbmRpbmdzVGVzdHMoKSkKLQotCi1jbGFzcyBXZWJLaXRQZXJsRmFjdG9yeShG
YWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249
Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dh
cmdzKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhzZWxmLCBwbGF0Zm9ybT1wbGF0Zm9ybSwg
Y29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNoaXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMs
IGJ1aWxkT25seT1GYWxzZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRpdGlvbmFsQXJndW1lbnRz
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuV2ViS2l0UGVybFRlc3RzKCkpCi0KLQotY2xhc3Mg
V2ViS2l0UHlGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9y
bSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1
bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBs
YXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVy
ZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCBhZGRpdGlvbmFsQXJndW1lbnQ9YWRk
aXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkKLSAgICAgICAgc2VsZi5hZGRT
dGVwKFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5X
ZWJLaXRQeVB5dGhvbjNUZXN0cygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoU2V0QnVpbGRTdW1t
YXJ5KCkpCi0KLQotY2xhc3MgQnVpbGRGYWN0b3J5KEZhY3RvcnkpOgotICAgIHNraXBVcGxvYWQg
PSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBsYXRmb3JtLCBjb25maWd1cmF0aW9u
PU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgdHJpZ2dlcnM9Tm9uZSwgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1Ob25lLCBjaGVja1JlbGV2YW5jZT1GYWxzZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0
b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZp
Z3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCB0
cmlnZ2Vycz10cmlnZ2VycywgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRpdGlvbmFsQXJndW1lbnRz
LCBjaGVja1JlbGV2YW5jZT1jaGVja1JlbGV2YW5jZSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtp
bGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2d0ayc6Ci0gICAgICAg
ICAgICBzZWxmLmFkZFN0ZXAoSW5zdGFsbEd0a0RlcGVuZGVuY2llcygpKQotICAgICAgICBzZWxm
LmFkZFN0ZXAoQ29tcGlsZVdlYktpdChza2lwVXBsb2FkPXNlbGYuc2tpcFVwbG9hZCkpCi0KLQot
Y2xhc3MgVGVzdEZhY3RvcnkoRmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gTm9uZQot
ICAgIEFQSVRlc3RDbGFzcyA9IE5vbmUKLSAgICB3aWxsVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lv
biA9IEZhbHNlCi0KLSAgICBkZWYgZ2V0UHJvZHVjdChzZWxmKToKLSAgICAgICAgc2VsZi5hZGRT
dGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChFeHRyYWN0
QnVpbHRQcm9kdWN0KCkpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZp
Z3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgYWRk
aXRpb25hbEFyZ3VtZW50cz1Ob25lLCBjaGVja1JlbGV2YW5jZT1GYWxzZSwgKiprd2FyZ3MpOgot
ICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1
cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRP
bmx5PUZhbHNlLCB0cmlnZ2VyZWRfYnk9dHJpZ2dlcmVkX2J5LCBhZGRpdGlvbmFsQXJndW1lbnRz
PWFkZGl0aW9uYWxBcmd1bWVudHMsIGNoZWNrUmVsZXZhbmNlPWNoZWNrUmVsZXZhbmNlKQotICAg
ICAgICBpZiBwbGF0Zm9ybSA9PSAnZ3RrJzoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChJbnN0
YWxsR3RrRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuZ2V0UHJvZHVjdCgpCi0gICAgICAg
IGlmIHNlbGYud2lsbFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb246Ci0gICAgICAgICAgICBzZWxm
LmFkZFN0ZXAoV2FpdEZvckNyYXNoQ29sbGVjdGlvbigpKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
S2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICBpZiBzZWxmLkxheW91dFRlc3RDbGFzczoKLSAg
ICAgICAgICAgIHNlbGYuYWRkU3RlcChzZWxmLkxheW91dFRlc3RDbGFzcygpKQotICAgICAgICBp
ZiBzZWxmLkFQSVRlc3RDbGFzczoKLSAgICAgICAgICAgIHNlbGYuYWRkU3RlcChzZWxmLkFQSVRl
c3RDbGFzcygpKQotICAgICAgICBpZiBzZWxmLndpbGxUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9u
OgotICAgICAgICAgICAgc2VsZi5hZGRTdGVwKFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24oKSkK
LSAgICAgICAgaWYgc2VsZi5MYXlvdXRUZXN0Q2xhc3M6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0
ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCi0KLQotY2xhc3MgSlNDQnVpbGRGYWN0b3J5KEZhY3Rvcnkp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj0ncmVsZWFz
ZScsIGFyY2hpdGVjdHVyZXM9Tm9uZSwgdHJpZ2dlcnM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRf
XyhzZWxmLCBwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBh
cmNoaXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9dHJp
Z2dlcnMsIHJlbW90ZXM9cmVtb3RlcywgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRpdGlvbmFsQXJn
dW1lbnRzLCBjaGVja1JlbGV2YW5jZT1UcnVlKQotICAgICAgICBzZWxmLmFkZFN0ZXAoS2lsbE9s
ZFByb2Nlc3NlcygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZUpTQygpKQotCi0KLWNs
YXNzIEpTQ0J1aWxkQW5kVGVzdHNGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Tm9u
ZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIHJ1blRlc3RzPSd0cnVl
JywgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBs
YXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0
ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNlLCByZW1vdGVzPXJlbW90ZXMsIGFkZGl0aW9uYWxBcmd1
bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9VHJ1ZSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKENv
bXBpbGVKU0Moc2tpcFVwbG9hZD1UcnVlKSkKLSAgICAgICAgaWYgcnVuVGVzdHMubG93ZXIoKSA9
PSAndHJ1ZSc6Ci0gICAgICAgICAgICBzZWxmLmFkZFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0
cygpKQotCi0KLWNsYXNzIEpTQ1Rlc3RzRmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVz
PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lLCAqKmt3YXJncyk6
Ci0gICAgICAgIEZhY3RvcnkuX19pbml0X18oc2VsZiwgcGxhdGZvcm09cGxhdGZvcm0sIGNvbmZp
Z3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJlcz1hcmNoaXRlY3R1cmVzLCBidWls
ZE9ubHk9RmFsc2UsIHJlbW90ZXM9cmVtb3RlcywgYWRkaXRpb25hbEFyZ3VtZW50cz1hZGRpdGlv
bmFsQXJndW1lbnRzLCBjaGVja1JlbGV2YW5jZT1UcnVlKQotICAgICAgICBzZWxmLmFkZFN0ZXAo
RG93bmxvYWRCdWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEV4dHJhY3RCdWls
dFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAg
ICAgICAgc2VsZi5hZGRTdGVwKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMoKSkKLQotCi1jbGFzcyBB
UElUZXN0c0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgotICAgIEFQSVRlc3RDbGFzcyA9IFJ1bkFQSVRl
c3RzCi0KLQotY2xhc3MgaU9TQnVpbGRGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgcGFzcwot
Ci0KLWNsYXNzIGlPU0VtYmVkZGVkQnVpbGRGYWN0b3J5KEJ1aWxkRmFjdG9yeSk6Ci0gICAgc2tp
cFVwbG9hZCA9IFRydWUKLQotCi1jbGFzcyBpT1NUZXN0c0ZhY3RvcnkoVGVzdEZhY3RvcnkpOgot
ICAgIExheW91dFRlc3RDbGFzcyA9IFJ1bldlYktpdFRlc3RzCi0gICAgd2lsbFRyaWdnZXJDcmFz
aExvZ1N1Ym1pc3Npb24gPSBUcnVlCi0KLQotY2xhc3MgbWFjT1NCdWlsZEZhY3RvcnkoQnVpbGRG
YWN0b3J5KToKLSAgICBwYXNzCi0KLQotY2xhc3MgbWFjT1NCdWlsZE9ubHlGYWN0b3J5KEJ1aWxk
RmFjdG9yeSk6Ci0gICAgc2tpcFVwbG9hZCA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIHRyaWdn
ZXJzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgY2hlY2tSZWxldmFuY2U9VHJ1ZSwg
Kiprd2FyZ3MpOgotICAgICAgICBzdXBlcihtYWNPU0J1aWxkT25seUZhY3RvcnksIHNlbGYpLl9f
aW5pdF9fKHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFy
Y2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgdHJpZ2dlcnM9dHJpZ2dlcnMsIGFkZGl0aW9uYWxB
cmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFuY2U9Y2hlY2tSZWxldmFu
Y2UsICoqa3dhcmdzKQotCi0KLWNsYXNzIHdhdGNoT1NCdWlsZEZhY3RvcnkoQnVpbGRGYWN0b3J5
KToKLSAgICBza2lwVXBsb2FkID0gVHJ1ZQotCi0KLWNsYXNzIHR2T1NCdWlsZEZhY3RvcnkoQnVp
bGRGYWN0b3J5KToKLSAgICBza2lwVXBsb2FkID0gVHJ1ZQotCi0KLWNsYXNzIG1hY09TV0sxRmFj
dG9yeShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0MVRlc3Rz
Ci0gICAgd2lsbFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24gPSBUcnVlCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1O
b25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUsIGNoZWNrUmVsZXZhbmNlPUZhbHNlLCAqKmt3
YXJncyk6Ci0gICAgICAgIHN1cGVyKG1hY09TV0sxRmFjdG9yeSwgc2VsZikuX19pbml0X18ocGxh
dGZvcm09cGxhdGZvcm0sIGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwgYXJjaGl0ZWN0dXJl
cz1hcmNoaXRlY3R1cmVzLCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMs
IGNoZWNrUmVsZXZhbmNlPVRydWUsICoqa3dhcmdzKQotCi0KLWNsYXNzIG1hY09TV0syRmFjdG9y
eShUZXN0RmFjdG9yeSk6Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHMKLSAg
ICB3aWxsVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiA9IFRydWUKLQotCi1jbGFzcyBXaW5kb3dz
RmFjdG9yeShGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNvbmZp
Z3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCB0cmlnZ2Vycz1Ob25lLCBhZGRpdGlv
bmFsQXJndW1lbnRzPU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgRmFjdG9yeS5fX2luaXRfXyhz
ZWxmLCBwbGF0Zm9ybT1wbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1jb25maWd1cmF0aW9uLCBhcmNo
aXRlY3R1cmVzPWFyY2hpdGVjdHVyZXMsIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9dHJpZ2dl
cnMsIGFkZGl0aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cywgY2hlY2tSZWxldmFu
Y2U9VHJ1ZSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKENvbXBpbGVXZWJLaXQoc2tpcFVwbG9hZD1UcnVlKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVnQ2xvc2VkPUZhbHNlLCBhZGRVUkxz
PUZhbHNlKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bldlYktpdDFUZXN0cygpKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCi0KLQotY2xhc3MgV2luQ2Fpcm9GYWN0
b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJh
dGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxB
cmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PVRydWUsIHRyaWdnZXJzPXRyaWdnZXJzLCBh
ZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDb21waWxlV2Vi
S2l0KHNraXBVcGxvYWQ9VHJ1ZSkpCi0KLQotY2xhc3MgR1RLQnVpbGRGYWN0b3J5KEJ1aWxkRmFj
dG9yeSk6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEdUS1Rlc3RzRmFjdG9yeShUZXN0RmFjdG9yeSk6
Ci0gICAgTGF5b3V0VGVzdENsYXNzID0gUnVuV2ViS2l0VGVzdHMKLQotCi1jbGFzcyBXUEVGYWN0
b3J5KEZhY3RvcnkpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJh
dGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUsIHRyaWdnZXJzPU5vbmUsIGFkZGl0aW9uYWxB
cmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBGYWN0b3J5Ll9faW5pdF9fKHNlbGYs
IHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVj
dHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PVRydWUsIHRyaWdnZXJzPXRyaWdnZXJzLCBh
ZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMpCi0gICAgICAgIHNlbGYuYWRk
U3RlcChLaWxsT2xkUHJvY2Vzc2VzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChJbnN0YWxsV3Bl
RGVwZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDb21waWxlV2ViS2l0KHNraXBV
cGxvYWQ9VHJ1ZSkpCi0KLQotY2xhc3MgU2VydmljZXNGYWN0b3J5KEZhY3RvcnkpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1
cmVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBG
YWN0b3J5Ll9faW5pdF9fKHNlbGYsIHBsYXRmb3JtPXBsYXRmb3JtLCBjb25maWd1cmF0aW9uPWNv
bmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5PUZhbHNl
LCBhZGRpdGlvbmFsQXJndW1lbnRzPWFkZGl0aW9uYWxBcmd1bWVudHMsIGNoZWNrUmVsZXZhbmNl
PVRydWUpCi0gICAgICAgIHNlbGYuYWRkU3RlcChSdW5FV1NVbml0VGVzdHMoKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcoKSkKLSAgICAgICAgc2VsZi5h
ZGRTdGVwKFJ1blJlc3VsdHNkYnB5VGVzdHMoKSkKLSAgICAgICAgc2VsZi5hZGRTdGVwKFJ1bkJ1
aWxkV2ViS2l0T3JnVW5pdFRlc3RzKCkpCi0KLQotY2xhc3MgQ29tbWl0UXVldWVGYWN0b3J5KGZh
Y3RvcnkuQnVpbGRGYWN0b3J5KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGxhdGZvcm0sIGNv
bmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRz
PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgZmFjdG9yeS5CdWlsZEZhY3RvcnkuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5hZGRTdGVwKENvbmZpZ3VyZUJ1aWxkKHBsYXRmb3JtPXBsYXRm
b3JtLCBjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sIGFyY2hpdGVjdHVyZXM9YXJjaGl0ZWN0
dXJlcywgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0
aW9uYWxBcmd1bWVudHM9YWRkaXRpb25hbEFyZ3VtZW50cykpCi0gICAgICAgIHNlbGYuYWRkU3Rl
cChWYWxpZGF0ZVBhdGNoKHZlcmlmeWNxcGx1cz1UcnVlKSkKLSAgICAgICAgc2VsZi5hZGRTdGVw
KFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoUHJp
bnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChDaGVja091dFNvdXJjZSgp
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoVXBkYXRlV29ya2luZ0RpcmVjdG9yeSgpKQotICAgICAg
ICBzZWxmLmFkZFN0ZXAoQXBwbHlQYXRjaCgpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoVmFsaWRh
dGVDaGFuZ2VMb2dBbmRSZXZpZXdlcigpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoRmluZE1vZGlm
aWVkQ2hhbmdlTG9ncygpKQotICAgICAgICBzZWxmLmFkZFN0ZXAoS2lsbE9sZFByb2Nlc3Nlcygp
KQotICAgICAgICBzZWxmLmFkZFN0ZXAoQ29tcGlsZVdlYktpdChza2lwVXBsb2FkPVRydWUpKQot
ICAgICAgICBzZWxmLmFkZFN0ZXAoS2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICBzZWxmLmFk
ZFN0ZXAoVmFsaWRhdGVQYXRjaChhZGRVUkxzPUZhbHNlLCB2ZXJpZnljcXBsdXM9VHJ1ZSkpCi0g
ICAgICAgIHNlbGYuYWRkU3RlcChDaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMoKSkKLSAgICAg
ICAgc2VsZi5hZGRTdGVwKFJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChW
YWxpZGF0ZVBhdGNoKGFkZFVSTHM9RmFsc2UsIHZlcmlmeWNxcGx1cz1UcnVlKSkKLSAgICAgICAg
c2VsZi5hZGRTdGVwKENoZWNrT3V0U291cmNlKCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChVcGRh
dGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuYWRkU3RlcChBcHBseVBhdGNoKCkp
Ci0gICAgICAgIHNlbGYuYWRkU3RlcChDcmVhdGVMb2NhbEdJVENvbW1pdCgpKQotICAgICAgICBz
ZWxmLmFkZFN0ZXAoUHVzaENvbW1pdFRvV2ViS2l0UmVwbygpKQotICAgICAgICBzZWxmLmFkZFN0
ZXAoU2V0QnVpbGRTdW1tYXJ5KCkpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YnVpbGQvZmFjdG9yaWVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9mYWN0b3JpZXNfdW5pdHRl
c3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSw1ODcgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSMgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotIyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QKLQotZnJvbSBidWlsZGJvdC5w
cm9jZXNzLmJ1aWxkc3RlcCBpbXBvcnQgX0J1aWxkU3RlcEZhY3RvcnkKLWZyb20gYnVpbGRib3Qu
c3RlcHMubWFzdGVyIGltcG9ydCBTZXRQcm9wZXJ0eQotCi1pbXBvcnQgZmFjdG9yaWVzCi1pbXBv
cnQgc3RlcHMKLQotCi1jbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IGFzc2VydEJ1aWxkU3RlcHMoc2VsZiwgYWN0dWFsX3N0ZXBzLCBleHBlY3RlZF9zdGVwcyk6Ci0g
ICAgICAgIGFzc2VydCBhbGwobWFwKGxhbWJkYSBzdGVwOiBpc2luc3RhbmNlKHN0ZXAsIF9CdWls
ZFN0ZXBGYWN0b3J5KSwgYWN0dWFsX3N0ZXBzKSkKLSAgICAgICAgYXNzZXJ0IGFsbChtYXAobGFt
YmRhIHN0ZXA6IGlzaW5zdGFuY2Uoc3RlcCwgX0J1aWxkU3RlcEZhY3RvcnkpLCBleHBlY3RlZF9z
dGVwcykpCi0KLSAgICAgICAgIyBDb252ZXJ0IHRvIGRpY3Rpb25hcmllcyBiZWNhdXNlIGFzc2Vy
dEVxdWFsKCkgb25seSBrbm93cyBob3cgdG8gZGlmZiBQeXRob24gYnVpbHQtaW4gdHlwZXMuCi0g
ICAgICAgIGRlZiBzdGVwX3RvX2RpY3Qoc3RlcCk6Ci0gICAgICAgICAgICByZXR1cm4ge2tleTog
Z2V0YXR0cihzdGVwLCBrZXkpIGZvciBrZXkgaW4gc3RlcC5jb21wYXJlX2F0dHJzfQotCi0gICAg
ICAgIGFjdHVhbF9zdGVwcyA9IG1hcChzdGVwX3RvX2RpY3QsIGFjdHVhbF9zdGVwcykKLSAgICAg
ICAgZXhwZWN0ZWRfc3RlcHMgPSBtYXAoc3RlcF90b19kaWN0LCBleHBlY3RlZF9zdGVwcykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfc3RlcHMsIGV4cGVjdGVkX3N0ZXBzKQotCi0K
LWNsYXNzIFRlc3RHZW5lcmljRmFjdG9yeShUZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYp
OgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotCi0gICAgZGVmIHRlc3RfZ2VuZXJp
Y19mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkZhY3RvcnkocGxh
dGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0
ZWN0dXJlcz0nYXJtNjQnKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5z
dGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVp
bGQsIHBsYXRmb3JtPSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScs
IGFyY2hpdGVjdHVyZXM9J2FybTY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1
aWxkT25seT1UcnVlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1O
b25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfZ2Vu
ZXJpY19mYWN0b3J5X3dpdGhfY2hlY2tfcmVsZXZhbmNlKHNlbGYpOgotICAgICAgICBmYWN0b3J5
ID0gZmFjdG9yaWVzLkZhY3RvcnkocGxhdGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1
cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz0nYXJtNjQnLCBjaGVja1JlbGV2YW5jZT1U
cnVlKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3Jt
PSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVy
ZXM9J2FybTY0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1UcnVl
LCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlv
bmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlBy
aW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
aGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVj
a091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQXBwbHlQYXRjaCksCi0gICAgICAgIF0pCi0KLQotY2xhc3MgVGVzdFRlc3RzRmFjdG9yeShU
ZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdl
ID0gVHJ1ZQotCi0gICAgZGVmIHRlc3Rfc3R5bGVfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFj
dG9yeSA9IGZhY3Rvcmllcy5TdHlsZUZhY3RvcnkocGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9u
PU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBz
KGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNv
bmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nKicsIGNvbmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0
dXJlcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNl
LCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAg
ICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5VcGRhdGVXb3JraW5nRGlyZWN0b3J5KSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tTdHlsZSksCi0gICAgICAgIF0pCi0K
LSAgICBkZWYgdGVzdF93YXRjaGxpc3RfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9
IGZhY3Rvcmllcy5XYXRjaExpc3RGYWN0b3J5KHBsYXRmb3JtPScqJywgY29uZmlndXJhdGlvbj1O
b25lLCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhm
YWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25m
aWd1cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVy
ZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwg
dHJpZ2dlcnM9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVXBkYXRlV29ya2luZ0RpcmVjdG9yeSksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5V2F0Y2hMaXN0KSwKLSAgICAgICAgXSkK
LQotICAgIGRlZiB0ZXN0X2JpbmRpbmdzX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3Rvcnkg
PSBmYWN0b3JpZXMuQmluZGluZ3NGYWN0b3J5KHBsYXRmb3JtPScqJywgY29uZmlndXJhdGlvbj1O
b25lLCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhm
YWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25m
aWd1cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVy
ZXM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwg
dHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25h
bEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNo
ZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
VmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Qcmlu
dENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hl
Y2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tP
dXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuQmlu
ZGluZ3NUZXN0cyksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF93ZWJraXRwZXJsX2ZhY3Rv
cnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuV2ViS2l0UGVybEZhY3Rvcnko
cGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nKicsIGNv
bmZpZ3VyYXRpb249Tm9uZSwgYXJjaGl0ZWN0dXJlcz1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9
Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0UGVybFRlc3RzKSwKLSAgICAgICAgXSkKLQot
ICAgIGRlZiB0ZXN0X3dlYmtpdHB5X2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBm
YWN0b3JpZXMuV2ViS2l0UHlGYWN0b3J5KHBsYXRmb3JtPScqJywgY29uZmlndXJhdGlvbj1Ob25l
LCBhcmNoaXRlY3R1cmVzPU5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0
b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1
cmVCdWlsZCwgcGxhdGZvcm09JyonLCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJp
Z2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFy
Z3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNr
UGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFs
aWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENv
bmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tP
dXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRT
cGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFw
cGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0
UHlQeXRob24yVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVu
V2ViS2l0UHlQeXRob24zVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X3NlcnZpY2Vz
X2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuU2VydmljZXNGYWN0
b3J5KHBsYXRmb3JtPScqJywgY29uZmlndXJhdGlvbj1Ob25lLCBhcmNoaXRlY3R1cmVzPU5vbmUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09Jyon
LCBjb25maWd1cmF0aW9uPU5vbmUsIGFyY2hpdGVjdHVyZXM9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVk
X2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAg
ICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuRVdTVW5pdFRlc3RzKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuUmVzdWx0c2RicHlUZXN0cyksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5SdW5CdWlsZFdlYktpdE9yZ1VuaXRU
ZXN0cyksCi0gICAgICAgIF0pCi0KLQotY2xhc3MgVGVzdEJ1aWxkRmFjdG9yeShUZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3RfZ2VuZXJpY19idWlsZF9mYWN0b3J5KHNlbGYpOgotICAgICAgICBmYWN0
b3J5ID0gZmFjdG9yaWVzLkJ1aWxkRmFjdG9yeShwbGF0Zm9ybT0nbWFjLW1vamF2ZScsIGNvbmZp
Z3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J21hYy1tb2phdmUnLCBj
b25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0
cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9u
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBsb2Fk
PUZhbHNlKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X21hY29zX2J1aWxkX2ZhY3Rvcnko
c2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMubWFjT1NCdWlsZEZhY3RvcnkocGxh
dGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJl
cz1bIng4Nl82NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVw
cywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQs
IHBsYXRmb3JtPSdtYWMtbW9qYXZlJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVj
dHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25s
eT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwg
YWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0
ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q29tcGlsZVdlYktpdCwgc2tpcFVwbG9hZD1GYWxzZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYg
dGVzdF9tYWNvc19idWlsZF9vbmx5X2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBm
YWN0b3JpZXMubWFjT1NCdWlsZE9ubHlGYWN0b3J5KHBsYXRmb3JtPSdtYWMtYmlnc3VyJywgY29u
ZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm02NCJdKQotICAgICAgICBz
ZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdtYWMtYmlnc3VyJywg
Y29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm02NCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0
cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5j
ZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNp
b24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAg
ICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVXZWJLaXQsIHNraXBVcGxv
YWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF9pb3NfYnVpbGRfZmFjdG9yeShz
ZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5pT1NCdWlsZEZhY3RvcnkocGxhdGZv
cm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0
dXJlcz1bIng4Nl82NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5z
dGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVp
bGQsIHBsYXRmb3JtPSdpb3Mtc2ltdWxhdG9yLTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScs
IGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90
ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQ29tcGlsZVdlYktpdCwgc2tpcFVwbG9hZD1GYWxzZSksCi0gICAgICAgIF0pCi0K
LSAgICBkZWYgdGVzdF9pb3NfZW1iZWRkZWRfYnVpbGRfZmFjdG9yeShzZWxmKToKLSAgICAgICAg
ZmFjdG9yeSA9IGZhY3Rvcmllcy5pT1NFbWJlZGRlZEJ1aWxkRmFjdG9yeShwbGF0Zm9ybT0naW9z
LTEzJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm02NCJdKQot
ICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdpb3Mt
MTMnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bImFybTY0Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5v
bmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9
Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNo
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlv
biksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2
aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVXZWJLaXQsIHNraXBV
cGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF93YXRjaG9zX2J1aWxkX2Zh
Y3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMud2F0Y2hPU0J1aWxkRmFj
dG9yeShwbGF0Zm9ybT0nd2F0Y2hvcy02JywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hp
dGVjdHVyZXM9WyJhcm02NF8zMiJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFj
dG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmln
dXJlQnVpbGQsIHBsYXRmb3JtPSd3YXRjaG9zLTYnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywg
YXJjaGl0ZWN0dXJlcz1bImFybTY0XzMyIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1v
dGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLkNvbXBpbGVXZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0K
LSAgICBkZWYgdGVzdF90dm9zX2J1aWxkX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3Rvcnkg
PSBmYWN0b3JpZXMudHZPU0J1aWxkRmFjdG9yeShwbGF0Zm9ybT0ndHZvcy0xMycsIGNvbmZpZ3Vy
YXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtNjQiXSkKLSAgICAgICAgc2VsZi5h
c3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0ndHZvcy0xMycsIGNvbmZpZ3Vy
YXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtNjQiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVk
X2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29tcGlsZVdlYktpdCwgc2tpcFVwbG9hZD1UcnVlKSwK
LSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X2d0a19idWlsZF9mYWN0b3J5KHNlbGYpOgotICAg
ICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkdUS0J1aWxkRmFjdG9yeShwbGF0Zm9ybT0nZ3RrJywg
Y29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Wyd4ODZfNjQnXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nZ3RrJywgY29u
ZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Wyd4ODZfNjQnXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJp
Z2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAg
ICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuSW5zdGFsbEd0a0RlcGVuZGVuY2llcyksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBs
b2FkPUZhbHNlKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X3dwZV9mYWN0b3J5KHNlbGYp
OgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLldQRUZhY3RvcnkocGxhdGZvcm09J3dwZScs
IGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsneDg2XzY0J10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J3dwZScsIGNv
bmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsneDg2XzY0J10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9VHJ1ZSwgdHJpZ2dlcnM9Tm9uZSwgdHJp
Z2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAg
ICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAg
ICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuSW5zdGFsbFdwZURlcGVuZGVuY2llcyksCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBs
b2FkPVRydWUpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3Rfd2luY2Fpcm9fZmFjdG9yeShz
ZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5XaW5DYWlyb0ZhY3RvcnkocGxhdGZv
cm09J3dpbmNhaXJvJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9Wyd4
ODZfNjQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0
Zm9ybT0nd2luY2Fpcm8nLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1b
J3g4Nl82NCddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PVRydWUs
IHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9u
YWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5W
YWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlByaW50
Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVj
a091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja091
dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
QXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5LaWxsT2xk
UHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNvbXBpbGVX
ZWJLaXQsIHNraXBVcGxvYWQ9VHJ1ZSksCi0gICAgICAgIF0pCi0KLSAgICBkZWYgdGVzdF9qc2Nf
bWlwc2VsX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlNDQnVp
bGRGYWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0
ZWN0dXJlcz1bIm1pcHNlbCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9y
eS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJl
QnVpbGQsIHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0
dXJlcz1bIm1pcHNlbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5
PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBh
ZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0
ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rv
cnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LkNvbXBpbGVKU0MpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfanNjX2FybXY3X2ZhY3Rv
cnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlNDQnVpbGRGYWN0b3J5KHBs
YXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bImFy
bXY3Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZv
cm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtdjci
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dl
cnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3Vt
ZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0
Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRh
dGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZp
Z3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRT
b3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVj
aWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5
UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nl
c3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlSlNDKSwK
LSAgICAgICAgXSkKLQotCi1jbGFzcyBUZXN0QnVpbGRBbmRUZXN0c0ZhY3RvcnkoVGVzdENhc2Up
OgotICAgIGRlZiB0ZXN0X3dpbmRvd3NfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9
IGZhY3Rvcmllcy5XaW5kb3dzRmFjdG9yeShwbGF0Zm9ybT0nd2luJywgY29uZmlndXJhdGlvbj0n
cmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRC
dWlsZFN0ZXBzKGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkNvbmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nd2luJywgY29uZmlndXJhdGlvbj0ncmVs
ZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUs
IHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBsb2FkPVRydWUpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCwgdmVyaWZ5QnVnQ2xv
c2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLlJ1bldlYktpdDFUZXN0cyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQotCi0KLWNsYXNzIFRlc3RDb21taXRR
dWV1ZUZhY3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2NvbW1pdF9xdWV1ZV9mYWN0b3J5
KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkNvbW1pdFF1ZXVlRmFjdG9yeShw
bGF0Zm9ybT0nbWFjLW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1
cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0
ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWls
ZCwgcGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0
ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRP
bmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVu
dHM9Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBh
dGNoLCB2ZXJpZnljcXBsdXM9VHJ1ZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5WYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0
ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBG
YWN0b3J5KHN0ZXBzLlVwZGF0ZVdvcmtpbmdEaXJlY3RvcnkpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5WYWxpZGF0ZUNoYW5nZUxvZ0FuZFJldmlld2VyKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkZpbmRNb2RpZmllZENoYW5nZUxvZ3MpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlV2ViS2l0LCBza2lwVXBsb2FkPVRydWUp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3Nlcyks
Ci0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoLCBhZGRV
UkxzPUZhbHNlLCB2ZXJpZnljcXBsdXM9VHJ1ZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCwgYWRkVVJMcz1GYWxzZSwgdmVyaWZ5Y3Fw
bHVzPVRydWUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRT
b3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVXBkYXRlV29ya2lu
Z0RpcmVjdG9yeSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBh
dGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNyZWF0ZUxvY2FsR0lU
Q29tbWl0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlB1c2hDb21taXRU
b1dlYktpdFJlcG8pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVp
bGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotCi1jbGFzcyBUZXN0TGF5b3V0VGVzdHNGYWN0b3J5
KFRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9tYWNvc193azFfcmVsZWFzZV9mYWN0b3J5KHNlbGYp
OgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLm1hY09TV0sxRmFjdG9yeShwbGF0Zm9ybT0n
bWFjLW1vamF2ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2
XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0g
ICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZv
cm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1b
Ing4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNl
LCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlv
bmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMu
Q2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlBy
aW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
aGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVj
a091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Eb3du
bG9hZEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5F
eHRyYWN0QnVpbHRQcm9kdWN0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LldhaXRGb3JDcmFzaENvbGxlY3Rpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuS2lsbE9sZFByb2Nlc3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5SdW5XZWJLaXQxVGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3Rf
bWFjb3Nfd2sxX2RlYnVnX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3Jp
ZXMubWFjT1NXSzFGYWN0b3J5KHBsYXRmb3JtPSdtYWMtbW9qYXZlJywgY29uZmlndXJhdGlvbj0n
ZGVidWcnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVp
bGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J21hYy1tb2phdmUnLCBjb25maWd1cmF0aW9u
PSdkZWJ1ZycsIGFyY2hpdGVjdHVyZXM9WyJ4ODZfNjQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9Tm9uZSwgdHJpZ2dlcmVkX2J5PU5v
bmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50cz1Ob25lKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hSZWxldmFuY2UpLAotICAgICAgICAg
ICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRG93bmxvYWRCdWlsdFByb2R1Y3QpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRXh0cmFjdEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5XYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKSwKLSAgICAg
ICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0MVRlc3RzKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24pLAot
ICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAg
ICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X21hY29zX3drMl9mYWN0b3J5KHNlbGYpOgotICAgICAg
ICBmYWN0b3J5ID0gZmFjdG9yaWVzLm1hY09TV0syRmFjdG9yeShwbGF0Zm9ybT0nbWFjLW1vamF2
ZScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsieDg2XzY0Il0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J21hYy1t
b2phdmUnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vy
cz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1l
bnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQ
YXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3Vy
YXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3Vy
Y2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZp
Y1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0
Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRG93bmxvYWRCdWlsdFBy
b2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuRXh0cmFjdEJ1aWx0
UHJvZHVjdCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5XYWl0Rm9yQ3Jh
c2hDb2xsZWN0aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxP
bGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2Vi
S2l0VGVzdHMpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVHJpZ2dlckNy
YXNoTG9nU3VibWlzc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5T
ZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfaW9zX3drMl9mYWN0
b3J5KHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLmlPU1Rlc3RzRmFjdG9yeShw
bGF0Zm9ybT0naW9zLXNpbXVsYXRvci0xMycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNo
aXRlY3R1cmVzPVsieDg2XzY0Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0
b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1
cmVCdWlsZCwgcGxhdGZvcm09J2lvcy1zaW11bGF0b3ItMTMnLCBjb25maWd1cmF0aW9uPSdyZWxl
YXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwg
cmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuRG93bmxvYWRCdWlsdFByb2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuRXh0cmFjdEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5XYWl0Rm9yQ3Jhc2hDb2xsZWN0aW9uKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVHJpZ2dlckNyYXNoTG9nU3VibWlzc2lvbiksCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5TZXRCdWlsZFN1bW1hcnkpLAotICAgICAgICBd
KQotCi0gICAgZGVmIHRlc3RfZ3RrX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBm
YWN0b3JpZXMuR1RLVGVzdHNGYWN0b3J5KHBsYXRmb3JtPSdndGsnLCBjb25maWd1cmF0aW9uPSdy
ZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1
aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdndGsnLCBjb25maWd1cmF0aW9uPSdyZWxl
YXNlJywgYXJjaGl0ZWN0dXJlcz1bIng4Nl82NCJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnVpbGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwg
cmVtb3Rlcz1Ob25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRT
dGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3VyYXRpb24pLAotICAgICAgICAgICAgX0J1aWxk
U3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3VyY2UpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuSW5zdGFsbEd0a0RlcGVuZGVuY2llcyksCi0gICAgICAgICAgICBfQnVp
bGRTdGVwRmFjdG9yeShzdGVwcy5Eb3dubG9hZEJ1aWx0UHJvZHVjdCksCi0gICAgICAgICAgICBf
QnVpbGRTdGVwRmFjdG9yeShzdGVwcy5FeHRyYWN0QnVpbHRQcm9kdWN0KSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUnVuV2ViS2l0VGVzdHMpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuU2V0QnVpbGRTdW1tYXJ5KSwKLSAgICAgICAgXSkKLQotCi1j
bGFzcyBUZXN0SlNDQnVpbGRGYWN0b3J5KFRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9qc2NfbWlw
c2VsX2ZhY3Rvcnkoc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlNDQnVpbGRG
YWN0b3J5KHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0
dXJlcz1bIm1pcHNlbCJdKQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5z
dGVwcywgWwotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVp
bGQsIHBsYXRmb3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJl
cz1bIm1pcHNlbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRPbmx5PUZh
bHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1Ob25lLCBhZGRp
dGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3Rl
cHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShz
dGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBz
LlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVw
cy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5D
aGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnko
c3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5L
aWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNv
bXBpbGVKU0MpLAotICAgICAgICBdKQotCi0gICAgZGVmIHRlc3RfanNjX2FybXY3X2ZhY3Rvcnko
c2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBmYWN0b3JpZXMuSlNDQnVpbGRGYWN0b3J5KHBsYXRm
b3JtPSdqc2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bImFybXY3
Il0pCi0gICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAg
ICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09
J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsiYXJtdjciXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkT25seT1GYWxzZSwgdHJpZ2dlcnM9
Tm9uZSwgdHJpZ2dlcmVkX2J5PU5vbmUsIHJlbW90ZXM9Tm9uZSwgYWRkaXRpb25hbEFyZ3VtZW50
cz1Ob25lKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrUGF0Y2hS
ZWxldmFuY2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuVmFsaWRhdGVQ
YXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5QcmludENvbmZpZ3Vy
YXRpb24pLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTb3Vy
Y2UpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ2hlY2tPdXRTcGVjaWZp
Y1JldmlzaW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkFwcGx5UGF0
Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3Nl
cyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db21waWxlSlNDKSwKLSAg
ICAgICAgXSkKLQotCi1jbGFzcyBUZXN0SlNDQnVpbGRBbmRUZXN0c0ZhY3RvcnkoVGVzdENhc2Up
OgotICAgIGRlZiB0ZXN0X2pzY19taXBzZWxfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9y
eSA9IGZhY3Rvcmllcy5KU0NCdWlsZEZhY3RvcnkocGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRp
b249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249
J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5vbmUsIHRyaWdnZXJlZF9ieT1O
b25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9uZSksCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja1BhdGNoUmVsZXZhbmNlKSwKLSAgICAgICAg
ICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gpLAotICAgICAgICAgICAg
X0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9uKSwKLSAgICAgICAgICAg
IF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbiksCi0gICAgICAg
ICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwKLSAgICAgICAgICAgIF9C
dWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLktpbGxPbGRQcm9jZXNzZXMpLAotICAgICAgICAgICAgX0J1
aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29tcGlsZUpTQyksCi0gICAgICAgIF0pCi0KLSAgICBkZWYg
dGVzdF9qc2NfYXJtdjdfZmFjdG9yeShzZWxmKToKLSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmll
cy5KU0NCdWlsZEZhY3RvcnkocGxhdGZvcm09J2pzYycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2Un
LCBhcmNoaXRlY3R1cmVzPVsiYXJtdjciXSkKLSAgICAgICAgc2VsZi5hc3NlcnRCdWlsZFN0ZXBz
KGZhY3Rvcnkuc3RlcHMsIFsKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNv
bmZpZ3VyZUJ1aWxkLCBwbGF0Zm9ybT0nanNjJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFy
Y2hpdGVjdHVyZXM9WyJhcm12NyJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVp
bGRPbmx5PUZhbHNlLCB0cmlnZ2Vycz1Ob25lLCB0cmlnZ2VyZWRfYnk9Tm9uZSwgcmVtb3Rlcz1O
b25lLCBhZGRpdGlvbmFsQXJndW1lbnRzPU5vbmUpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZh
Y3Rvcnkoc3RlcHMuQ2hlY2tQYXRjaFJlbGV2YW5jZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVw
RmFjdG9yeShzdGVwcy5WYWxpZGF0ZVBhdGNoKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0
b3J5KHN0ZXBzLlByaW50Q29uZmlndXJhdGlvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFj
dG9yeShzdGVwcy5DaGVja091dFNvdXJjZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5DaGVja091dFNwZWNpZmljUmV2aXNpb24pLAotICAgICAgICAgICAgX0J1aWxkU3Rl
cEZhY3Rvcnkoc3RlcHMuQXBwbHlQYXRjaCksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9y
eShzdGVwcy5LaWxsT2xkUHJvY2Vzc2VzKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5
KHN0ZXBzLkNvbXBpbGVKU0MpLAotICAgICAgICBdKQotCi0KLWNsYXNzIFRlc3RKU0NUZXN0c0Zh
Y3RvcnkoVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2pzY19taXBzZWxfZmFjdG9yeShzZWxmKToK
LSAgICAgICAgZmFjdG9yeSA9IGZhY3Rvcmllcy5KU0NUZXN0c0ZhY3RvcnkocGxhdGZvcm09J2pz
YycsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0QnVpbGRTdGVwcyhmYWN0b3J5LnN0ZXBzLCBbCi0gICAgICAgICAg
ICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5Db25maWd1cmVCdWlsZCwgcGxhdGZvcm09J2pzYycs
IGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnLCBhcmNoaXRlY3R1cmVzPVsibWlwc2VsIl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5vbmUs
IHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9Tm9u
ZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja1BhdGNoUmVsZXZh
bmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0Y2gp
LAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0aW9u
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNlKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNSZXZp
c2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNoKSwK
LSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkRvd25sb2FkQnVpbHRQcm9kdWN0
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkV4dHJhY3RCdWlsdFByb2R1
Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nlc3Nl
cyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5SdW5KYXZhU2NyaXB0Q29y
ZVRlc3RzKSwKLSAgICAgICAgXSkKLQotICAgIGRlZiB0ZXN0X2pzY19hcm12N19mYWN0b3J5KHNl
bGYpOgotICAgICAgICBmYWN0b3J5ID0gZmFjdG9yaWVzLkpTQ1Rlc3RzRmFjdG9yeShwbGF0Zm9y
bT0nanNjJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScsIGFyY2hpdGVjdHVyZXM9WyJhcm12NyJd
KQotICAgICAgICBzZWxmLmFzc2VydEJ1aWxkU3RlcHMoZmFjdG9yeS5zdGVwcywgWwotICAgICAg
ICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuQ29uZmlndXJlQnVpbGQsIHBsYXRmb3JtPSdq
c2MnLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJywgYXJjaGl0ZWN0dXJlcz1bImFybXY3Il0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZE9ubHk9RmFsc2UsIHRyaWdnZXJzPU5v
bmUsIHRyaWdnZXJlZF9ieT1Ob25lLCByZW1vdGVzPU5vbmUsIGFkZGl0aW9uYWxBcmd1bWVudHM9
Tm9uZSksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5DaGVja1BhdGNoUmVs
ZXZhbmNlKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLlZhbGlkYXRlUGF0
Y2gpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuUHJpbnRDb25maWd1cmF0
aW9uKSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U291cmNl
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkNoZWNrT3V0U3BlY2lmaWNS
ZXZpc2lvbiksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5BcHBseVBhdGNo
KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkRvd25sb2FkQnVpbHRQcm9k
dWN0KSwKLSAgICAgICAgICAgIF9CdWlsZFN0ZXBGYWN0b3J5KHN0ZXBzLkV4dHJhY3RCdWlsdFBy
b2R1Y3QpLAotICAgICAgICAgICAgX0J1aWxkU3RlcEZhY3Rvcnkoc3RlcHMuS2lsbE9sZFByb2Nl
c3NlcyksCi0gICAgICAgICAgICBfQnVpbGRTdGVwRmFjdG9yeShzdGVwcy5SdW5KYXZhU2NyaXB0
Q29yZVRlc3RzKSwKLSAgICAgICAgXSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3
cy1idWlsZC9sYXlvdXRfdGVzdF9mYWlsdXJlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbGF5b3V0X3Rlc3RfZmFpbHVyZXMucHkJKHJldmlzaW9u
IDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9sYXlvdXRfdGVz
dF9mYWlsdXJlcy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDc0ICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IK
LSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGpzb24KLQotCi1jbGFzcyBMYXlv
dXRUZXN0RmFpbHVyZXMob2JqZWN0KToKLSAgICBfSlNPTl9QUkVGSVggPSAiQUREX1JFU1VMVFMo
IgotICAgIF9KU09OX1NVRkZJWCA9ICIpOyIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmYWls
aW5nX3Rlc3RzLCBkaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCk6Ci0gICAgICAgIHNlbGYu
ZmFpbGluZ190ZXN0cyA9IGZhaWxpbmdfdGVzdHMKLSAgICAgICAgc2VsZi5kaWRfZXhjZWVkX3Rl
c3RfZmFpbHVyZV9saW1pdCA9IGRpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0Ci0KLSAgICBA
Y2xhc3NtZXRob2QKLSAgICBkZWYgaGFzX2pzb25fd3JhcHBlcihjbHMsIHN0cmluZyk6Ci0gICAg
ICAgIHJldHVybiBzdHJpbmcuc3RhcnRzd2l0aChjbHMuX0pTT05fUFJFRklYKSBhbmQgc3RyaW5n
LmVuZHN3aXRoKGNscy5fSlNPTl9TVUZGSVgpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYg
c3RyaXBfanNvbl93cmFwcGVyKGNscywganNvbl9jb250ZW50KToKLSAgICAgICAgaWYgY2xzLmhh
c19qc29uX3dyYXBwZXIoanNvbl9jb250ZW50KToKLSAgICAgICAgICAgIHJldHVybiBqc29uX2Nv
bnRlbnRbbGVuKGNscy5fSlNPTl9QUkVGSVgpOmxlbihqc29uX2NvbnRlbnQpIC0gbGVuKGNscy5f
SlNPTl9TVUZGSVgpXQotICAgICAgICByZXR1cm4ganNvbl9jb250ZW50Ci0KLSAgICBAY2xhc3Nt
ZXRob2QKLSAgICBkZWYgcmVzdWx0c19mcm9tX3N0cmluZyhjbHMsIHN0cmluZyk6Ci0gICAgICAg
IGlmIG5vdCBzdHJpbmc6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHN0cmlu
ZyA9IHN0cmluZy5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBjbHMuaGFzX2pzb25fd3JhcHBlcihz
dHJpbmcpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBjb250ZW50X3N0cmlu
ZyA9IGNscy5zdHJpcF9qc29uX3dyYXBwZXIoc3RyaW5nKQotICAgICAgICAjIFdvcmthcm91bmQg
Zm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9idWlsZGJvdC9pc3N1ZXMvNDkwNgotICAg
ICAgICBjb250ZW50X3N0cmluZyA9ICcnLmpvaW4oY29udGVudF9zdHJpbmcuc3BsaXRsaW5lcygp
KQotICAgICAgICBqc29uX2RpY3QgPSBqc29uLmxvYWRzKGNvbnRlbnRfc3RyaW5nKQotCi0gICAg
ICAgIGZhaWxpbmdfdGVzdHMgPSBbXQotCi0gICAgICAgIGRlZiBnZXRfZmFpbGluZ190ZXN0cyh0
ZXN0LCByZXN1bHQpOgotICAgICAgICAgICAgaWYgcmVzdWx0LmdldCgncmVwb3J0JykgaW4gWydS
RUdSRVNTSU9OJywgJ01JU1NJTkcnXToKLSAgICAgICAgICAgICAgICBmYWlsaW5nX3Rlc3RzLmFw
cGVuZCh0ZXN0KQotCi0gICAgICAgIGNscy5wYXJzZV9mdWxsX3Jlc3VsdHNfanNvbihqc29uX2Rp
Y3RbJ3Rlc3RzJ10sIGdldF9mYWlsaW5nX3Rlc3RzKQotICAgICAgICByZXR1cm4gY2xzKGZhaWxp
bmdfdGVzdHMsIGpzb25fZGljdC5nZXQoJ2ludGVycnVwdGVkJywgRmFsc2UpKQotCi0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHBhcnNlX2Z1bGxfcmVzdWx0c19qc29uKGNscywgdHJlZSwgaGFu
ZGxlciwgcHJlZml4PScnKToKLSAgICAgICAgZm9yIGtleSBpbiB0cmVlOgotICAgICAgICAgICAg
bmV3X3ByZWZpeCA9IChwcmVmaXggKyAnLycgKyBrZXkpIGlmIHByZWZpeCBlbHNlIGtleQotICAg
ICAgICAgICAgaWYgJ2FjdHVhbCcgbm90IGluIHRyZWVba2V5XToKLSAgICAgICAgICAgICAgICBj
bHMucGFyc2VfZnVsbF9yZXN1bHRzX2pzb24odHJlZVtrZXldLCBoYW5kbGVyLCBuZXdfcHJlZml4
KQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBoYW5kbGVyKG5ld19wcmVmaXgs
IHRyZWVba2V5XSkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9sb2Fk
Q29uZmlnLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWls
ZC9sb2FkQ29uZmlnLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9ld3MtYnVpbGQvbG9hZENvbmZpZy5weQkobm9uZXhpc3RlbnQpCkBAIC0xLDIwMyArMCww
IEBACi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIyAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
LSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1pbXBv
cnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotZnJvbSBidWlsZGJvdC5zY2hlZHVsZXIg
aW1wb3J0IEFueUJyYW5jaFNjaGVkdWxlciwgUGVyaW9kaWMsIERlcGVuZGVudCwgVHJpZ2dlcmFi
bGUsIE5pZ2h0bHkKLWZyb20gYnVpbGRib3Quc2NoZWR1bGVycy50cnlzY2hlZCBpbXBvcnQgVHJ5
X1VzZXJwYXNzCi1mcm9tIGJ1aWxkYm90LndvcmtlciBpbXBvcnQgV29ya2VyCi1mcm9tIGJ1aWxk
Ym90LnV0aWwgaW1wb3J0IGlkZW50aWZpZXJzIGFzIGJ1aWxkYm90X2lkZW50aWZpZXJzCi0KLWZy
b20gZmFjdG9yaWVzIGltcG9ydCAoQVBJVGVzdHNGYWN0b3J5LCBCaW5kaW5nc0ZhY3RvcnksIEJ1
aWxkRmFjdG9yeSwgQ29tbWl0UXVldWVGYWN0b3J5LCBGYWN0b3J5LCBHVEtCdWlsZEZhY3Rvcnks
Ci0gICAgICAgICAgICAgICAgICAgICAgIEdUS1Rlc3RzRmFjdG9yeSwgSlNDQnVpbGRGYWN0b3J5
LCBKU0NCdWlsZEFuZFRlc3RzRmFjdG9yeSwgSlNDVGVzdHNGYWN0b3J5LCBTdHlsZUZhY3Rvcnks
IFRlc3RGYWN0b3J5LCB0dk9TQnVpbGRGYWN0b3J5LAotICAgICAgICAgICAgICAgICAgICAgICBX
UEVGYWN0b3J5LCBXZWJLaXRQZXJsRmFjdG9yeSwgV2ViS2l0UHlGYWN0b3J5LCBXaW5DYWlyb0Zh
Y3RvcnksIFdpbmRvd3NGYWN0b3J5LCBpT1NCdWlsZEZhY3RvcnksIGlPU0VtYmVkZGVkQnVpbGRG
YWN0b3J5LCBpT1NUZXN0c0ZhY3RvcnksCi0gICAgICAgICAgICAgICAgICAgICAgIG1hY09TQnVp
bGRGYWN0b3J5LCBtYWNPU0J1aWxkT25seUZhY3RvcnksIG1hY09TV0sxRmFjdG9yeSwgbWFjT1NX
SzJGYWN0b3J5LCBTZXJ2aWNlc0ZhY3RvcnksIFdhdGNoTGlzdEZhY3RvcnksIHdhdGNoT1NCdWls
ZEZhY3RvcnkpCi0KLUJVSUxERVJfTkFNRV9MRU5HVEhfTElNSVQgPSA3MAotU1RFUF9OQU1FX0xF
TkdUSF9MSU1JVCA9IDUwCi0KLQotZGVmIGxvYWRCdWlsZGVyQ29uZmlnKGMsIGlzX3Rlc3RfbW9k
ZV9lbmFibGVkPUZhbHNlLCBtYXN0ZXJfcHJlZml4X3BhdGg9Jy4vJyk6Ci0gICAgY29uZmlnID0g
anNvbi5sb2FkKG9wZW4ob3MucGF0aC5qb2luKG1hc3Rlcl9wcmVmaXhfcGF0aCwgJ2NvbmZpZy5q
c29uJykpKQotICAgIHVzZV9sb2NhbGhvc3Rfd29ya2VyID0gaXNfdGVzdF9tb2RlX2VuYWJsZWQK
LSAgICBpZiBpc190ZXN0X21vZGVfZW5hYmxlZDoKLSAgICAgICAgcGFzc3dvcmRzID0ge30KLSAg
ICBlbHNlOgotICAgICAgICBwYXNzd29yZHMgPSBqc29uLmxvYWQob3Blbihvcy5wYXRoLmpvaW4o
bWFzdGVyX3ByZWZpeF9wYXRoLCAncGFzc3dvcmRzLmpzb24nKSkpCi0KLSAgICBjaGVja1dvcmtl
cnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KGNvbmZpZywgY29uZmlnWyd3b3JrZXJzJ10sIGNv
bmZpZ1snYnVpbGRlcnMnXSkKLSAgICBjaGVja1ZhbGlkU2NoZWR1bGVycyhjb25maWcsIGNvbmZp
Z1snc2NoZWR1bGVycyddKQotCi0gICAgY1snd29ya2VycyddID0gW1dvcmtlcih3b3JrZXJbJ25h
bWUnXSwgcGFzc3dvcmRzLmdldCh3b3JrZXJbJ25hbWUnXSwgJ3Bhc3N3b3JkJyksIG1heF9idWls
ZHM9d29ya2VyLmdldCgnbWF4X2J1aWxkcycsIDEpKSBmb3Igd29ya2VyIGluIGNvbmZpZ1snd29y
a2VycyddXQotICAgIGlmIHVzZV9sb2NhbGhvc3Rfd29ya2VyOgotICAgICAgICBjWyd3b3JrZXJz
J10uYXBwZW5kKFdvcmtlcignbG9jYWwtd29ya2VyJywgJ3Bhc3N3b3JkJywgbWF4X2J1aWxkcz0x
KSkKLQotICAgIGNbJ2J1aWxkZXJzJ10gPSBbXQotICAgIGZvciBidWlsZGVyIGluIGNvbmZpZ1sn
YnVpbGRlcnMnXToKLSAgICAgICAgYnVpbGRlclsndGFncyddID0gZ2V0VGFnc0ZvckJ1aWxkZXIo
YnVpbGRlcikKLSAgICAgICAgZmFjdG9yeSA9IGdsb2JhbHMoKVtidWlsZGVyWydmYWN0b3J5J11d
Ci0gICAgICAgIGJ1aWxkZXJbJ2Rlc2NyaXB0aW9uJ10gPSBidWlsZGVyLnBvcCgnc2hvcnRuYW1l
JykKLSAgICAgICAgaWYgJ2ljb24nIGluIGJ1aWxkZXI6Ci0gICAgICAgICAgICBkZWwgYnVpbGRl
clsnaWNvbiddCi0gICAgICAgIGZhY3Rvcnlrd2FyZ3MgPSB7fQotICAgICAgICBmb3Iga2V5IGlu
IFsncGxhdGZvcm0nLCAnY29uZmlndXJhdGlvbicsICdhcmNoaXRlY3R1cmVzJywgJ3RyaWdnZXJz
JywgJ3JlbW90ZXMnLCAnYWRkaXRpb25hbEFyZ3VtZW50cycsICdydW5UZXN0cycsICd0cmlnZ2Vy
ZWRfYnknXToKLSAgICAgICAgICAgIHZhbHVlID0gYnVpbGRlci5wb3Aoa2V5LCBOb25lKQotICAg
ICAgICAgICAgaWYgdmFsdWU6Ci0gICAgICAgICAgICAgICAgZmFjdG9yeWt3YXJnc1trZXldID0g
dmFsdWUKLQotICAgICAgICBidWlsZGVyWydmYWN0b3J5J10gPSBmYWN0b3J5KCoqZmFjdG9yeWt3
YXJncykKLQotICAgICAgICBpZiB1c2VfbG9jYWxob3N0X3dvcmtlcjoKLSAgICAgICAgICAgIGJ1
aWxkZXJbJ3dvcmtlcm5hbWVzJ10uYXBwZW5kKCdsb2NhbC13b3JrZXInKQotCi0gICAgICAgIGNb
J2J1aWxkZXJzJ10uYXBwZW5kKGJ1aWxkZXIpCi0KLSAgICBjWydwcmlvcml0aXplQnVpbGRlcnMn
XSA9IHByaW9yaXRpemVCdWlsZGVycwotICAgIGNbJ3NjaGVkdWxlcnMnXSA9IFtdCi0gICAgZm9y
IHNjaGVkdWxlciBpbiBjb25maWdbJ3NjaGVkdWxlcnMnXToKLSAgICAgICAgc2NoZWR1bGVyQ2xh
c3NOYW1lID0gc2NoZWR1bGVyLnBvcCgndHlwZScpCi0gICAgICAgIHNjaGVkdWxlckNsYXNzID0g
Z2xvYmFscygpW3NjaGVkdWxlckNsYXNzTmFtZV0KLSAgICAgICAgIyBQeXRob24gMi42IGNhbid0
IGhhbmRsZSB1bmljb2RlIGtleXMgYXMga2V5d29yZCBhcmd1bWVudHM6Ci0gICAgICAgICMgaHR0
cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2NDYuICBNb2Rlcm4gdmVyc2lvbnMgb2YganNvbiBy
ZXR1cm4KLSAgICAgICAgIyB1bmljb2RlIHN0cmluZ3MgZnJvbSBqc29uLmxvYWQsIHNvIHdlIG1h
cCBhbGwga2V5cyB0byBzdHIgb2JqZWN0cy4KLSAgICAgICAgc2NoZWR1bGVyID0gZGljdChtYXAo
bGFtYmRhIGtleV92YWx1ZV9wYWlyOiAoc3RyKGtleV92YWx1ZV9wYWlyWzBdKSwga2V5X3ZhbHVl
X3BhaXJbMV0pLCBzY2hlZHVsZXIuaXRlbXMoKSkpCi0gICAgICAgIGlmIChzY2hlZHVsZXJDbGFz
c05hbWUgPT0gJ1RyeV9Vc2VycGFzcycpOgotICAgICAgICAgICAgIyBGSVhNRTogUmVhZCB0aGUg
Y3JlZGVudGlhbHMgZnJvbSBsb2NhbCBmaWxlIG9uIGRpc2suCi0gICAgICAgICAgICBzY2hlZHVs
ZXJbJ3VzZXJwYXNzJ10gPSBbKG9zLmdldGVudignQlVJTERCT1RfVFJZX1VTRVJOQU1FJywgJ3Nh
bXBsZXVzZXInKSwgb3MuZ2V0ZW52KCdCVUlMREJPVF9UUllfUEFTU1dPUkQnLCAnc2FtcGxlcGFz
cycpKV0KLSAgICAgICAgY1snc2NoZWR1bGVycyddLmFwcGVuZChzY2hlZHVsZXJDbGFzcygqKnNj
aGVkdWxlcikpCi0KLQotZGVmIHByaW9yaXRpemVCdWlsZGVycyhidWlsZG1hc3RlciwgYnVpbGRl
cnMpOgotICAgICMgUHJpb3JpdGl6ZSBidWlsZGVyIHF1ZXVlcyBvdmVyIHRlc3RlciBxdWV1ZXMK
LSAgICBidWlsZGVycy5zb3J0KGtleT1sYW1iZGEgYjogJ2J1aWxkJyBpbiBiLm5hbWUubG93ZXIo
KSwgcmV2ZXJzZT1UcnVlKQotICAgIHJldHVybiBidWlsZGVycwotCi0KLWRlZiBjaGVja1ZhbGlk
V29ya2VyKHdvcmtlcik6Ci0gICAgaWYgbm90IHdvcmtlcjoKLSAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdXb3JrZXIgaXMgTm9uZSBvciBFbXB0eS4nKQotCi0gICAgaWYgbm90IHdvcmtlci5nZXQo
J25hbWUnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdXb3JrZXIgInt9IiBkb2VzIG5vdCBo
YXZlIG5hbWUgZGVmaW5lZC4nLmZvcm1hdCh3b3JrZXIpKQotCi0gICAgaWYgbm90IHdvcmtlci5n
ZXQoJ3BsYXRmb3JtJyk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV29ya2VyIHt9IGRvZXMg
bm90IGhhdmUgcGxhdGZvcm0gZGVmaW5lZC4nLmZvcm1hdCh3b3JrZXJbJ25hbWUnXSkpCi0KLQot
ZGVmIGNoZWNrVmFsaWRCdWlsZGVyKGNvbmZpZywgYnVpbGRlcik6Ci0gICAgaWYgbm90IGJ1aWxk
ZXI6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciBpcyBOb25lIG9yIEVtcHR5Licp
Ci0KLSAgICBpZiBub3QgYnVpbGRlci5nZXQoJ25hbWUnKToKLSAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdCdWlsZGVyICJ7fSIgZG9lcyBub3QgaGF2ZSBuYW1lIGRlZmluZWQuJy5mb3JtYXQoYnVp
bGRlcikpCi0KLSAgICBpZiBub3QgYnVpbGRlci5nZXQoJ3Nob3J0bmFtZScpOgotICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ0J1aWxkZXIgInt9IiBkb2VzIG5vdCBoYXZlIHNob3J0IG5hbWUgZGVm
aW5lZC4gVGhpcyBuYW1lIGlzIG5lZWRlZCBmb3IgRVdTIHN0YXR1cyBidWJibGVzLicuZm9ybWF0
KGJ1aWxkZXIuZ2V0KCduYW1lJykpKQotCi0gICAgaWYgbm90IGJ1aWxkYm90X2lkZW50aWZpZXJz
LmlkZW50X3JlLm1hdGNoKGJ1aWxkZXJbJ25hbWUnXSk6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlv
bignQnVpbGRlciBuYW1lIHt9IGlzIG5vdCBhIHZhbGlkIGJ1aWxkYm90IGlkZW50aWZpZXIuJy5m
b3JtYXQoYnVpbGRlclsnbmFtZSddKSkKLQotICAgIGlmIGxlbihidWlsZGVyWyduYW1lJ10pID4g
QlVJTERFUl9OQU1FX0xFTkdUSF9MSU1JVDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdCdWls
ZGVyIG5hbWUge30gaXMgbG9uZ2VyIHRoYW4gbWF4aW11bSBhbGxvd2VkIGJ5IEJ1aWxkYm90ICh7
fSBjaGFyYWN0ZXJzKS4nLmZvcm1hdChidWlsZGVyWyduYW1lJ10sIEJVSUxERVJfTkFNRV9MRU5H
VEhfTElNSVQpKQotCi0gICAgaWYgJ2NvbmZpZ3VyYXRpb24nIGluIGJ1aWxkZXIgYW5kIGJ1aWxk
ZXJbJ2NvbmZpZ3VyYXRpb24nXSBub3QgaW4gWydkZWJ1ZycsICdwcm9kdWN0aW9uJywgJ3JlbGVh
c2UnXToKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNvbmZpZ3VyYXRpb246IHt9
IGZvciBidWlsZGVyOiB7fScuZm9ybWF0KGJ1aWxkZXIuZ2V0KCdjb25maWd1cmF0aW9uJyksIGJ1
aWxkZXIuZ2V0KCduYW1lJykpKQotCi0gICAgaWYgbm90IGJ1aWxkZXIuZ2V0KCdmYWN0b3J5Jyk6
Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQnVpbGRlciB7fSBkb2VzIG5vdCBoYXZlIGZhY3Rv
cnkgZGVmaW5lZC4nLmZvcm1hdChidWlsZGVyWyduYW1lJ10pKQotCi0gICAgaWYgbm90IGJ1aWxk
ZXIuZ2V0KCdwbGF0Zm9ybScpOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0J1aWxkZXIge30g
ZG9lcyBub3QgaGF2ZSBwbGF0Zm9ybSBkZWZpbmVkLicuZm9ybWF0KGJ1aWxkZXJbJ25hbWUnXSkp
Ci0KLSAgICBmb3IgdHJpZ2dlciBpbiBidWlsZGVyLmdldCgndHJpZ2dlcnMnKSBvciBbXToKLSAg
ICAgICAgaWYgbm90IGRvZXNUcmlnZ2VyRXhpc3QoY29uZmlnLCB0cmlnZ2VyKToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignVHJpZ2dlcjoge30gaW4gYnVpbGRlciB7fSBkb2VzIG5vdCBl
eGlzdCBpbiBsaXN0IG9mIFRyaWdlcnJhYmxlIHNjaGVkdWxlcnMuJy5mb3JtYXQodHJpZ2dlciwg
YnVpbGRlclsnbmFtZSddKSkKLQotCi1kZWYgY2hlY2tWYWxpZFNjaGVkdWxlcnMoY29uZmlnLCBz
Y2hlZHVsZXJzKToKLSAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZy5nZXQoJ3NjaGVkdWxlcnMn
KSBvciBbXToKLSAgICAgICAgaWYgc2NoZWR1bGVyLmdldCgndHlwZScpID09ICdUcmlnZ2VyYWJs
ZSc6Ci0gICAgICAgICAgICBpZiBub3QgaXNUcmlnZ2VyVXNlZEJ5QW55QnVpbGRlcihjb25maWcs
IHNjaGVkdWxlclsnbmFtZSddKSBhbmQgJ2J1aWxkJyBub3QgaW4gc2NoZWR1bGVyWyduYW1lJ10u
bG93ZXIoKToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RyaWdnZXI6IHt9IGlz
IG5vdCB1c2VkIGJ5IGFueSBidWlsZGVyIGluIGNvbmZpZy5qc29uJy5mb3JtYXQoc2NoZWR1bGVy
WyduYW1lJ10pKQotCi0KLWRlZiBkb2VzVHJpZ2dlckV4aXN0KGNvbmZpZywgdHJpZ2dlcik6Ci0g
ICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcuZ2V0KCdzY2hlZHVsZXJzJykgb3IgW106Ci0gICAg
ICAgIGlmIHNjaGVkdWxlclsnbmFtZSddID09IHRyaWdnZXI6Ci0gICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBpc1RyaWdnZXJVc2VkQnlBbnlCdWlsZGVy
KGNvbmZpZywgdHJpZ2dlcik6Ci0gICAgZm9yIGJ1aWxkZXIgaW4gY29uZmlnLmdldCgnYnVpbGRl
cnMnKToKLSAgICAgICAgaWYgdHJpZ2dlciBpbiAoYnVpbGRlci5nZXQoJ3RyaWdnZXJzJykgb3Ig
W10pOgotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYg
Y2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0ZW5jeShjb25maWcsIHdvcmtlcnMsIGJ1
aWxkZXJzKToKLSAgICBkZWYgX2ZpbmRfd29ya2VyX3dpdGhfbmFtZSh3b3JrZXJzLCB3b3JrZXJf
bmFtZSk6Ci0gICAgICAgIHJlc3VsdCA9IE5vbmUKLSAgICAgICAgZm9yIHdvcmtlciBpbiB3b3Jr
ZXJzOgotICAgICAgICAgICAgaWYgd29ya2VyWyduYW1lJ10gPT0gd29ya2VyX25hbWU6Ci0gICAg
ICAgICAgICAgICAgaWYgbm90IHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
d29ya2VyCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdEdXBsaWNhdGUgd29ya2VyIGVudHJ5IGZvdW5kIGZvciB7fS4nLmZvcm1hdCh3
b3JrZXJbJ25hbWUnXSkpCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGZvciB3b3JrZXIg
aW4gd29ya2VyczoKLSAgICAgICAgY2hlY2tWYWxpZFdvcmtlcih3b3JrZXIpCi0KLSAgICBmb3Ig
YnVpbGRlciBpbiBidWlsZGVyczoKLSAgICAgICAgY2hlY2tWYWxpZEJ1aWxkZXIoY29uZmlnLCBi
dWlsZGVyKQotICAgICAgICBmb3Igd29ya2VyX25hbWUgaW4gYnVpbGRlclsnd29ya2VybmFtZXMn
XToKLSAgICAgICAgICAgIHdvcmtlciA9IF9maW5kX3dvcmtlcl93aXRoX25hbWUod29ya2Vycywg
d29ya2VyX25hbWUpCi0gICAgICAgICAgICBpZiB3b3JrZXIgaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0J1aWxkZXIge30gaGFzIHdvcmtlciB7fSwgd2hpY2ggaXMg
bm90IGRlZmluZWQgaW4gd29ya2VycyBsaXN0IScuZm9ybWF0KGJ1aWxkZXJbJ25hbWUnXSwgd29y
a2VyX25hbWUpKQotCi0gICAgICAgICAgICBpZiB3b3JrZXJbJ3BsYXRmb3JtJ10gIT0gYnVpbGRl
clsncGxhdGZvcm0nXSBhbmQgd29ya2VyWydwbGF0Zm9ybSddICE9ICcqJyBhbmQgYnVpbGRlclsn
cGxhdGZvcm0nXSAhPSAnKic6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdCdWls
ZGVyIHswfSBpcyBmb3IgcGxhdGZvcm0gezF9LCBidXQgaGFzIHdvcmtlciB7Mn0gZm9yIHBsYXRm
b3JtIHszfSEnLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRlclsnbmFtZSddLCBi
dWlsZGVyWydwbGF0Zm9ybSddLCB3b3JrZXJbJ25hbWUnXSwgd29ya2VyWydwbGF0Zm9ybSddKSkK
LQotCi1kZWYgZ2V0SW52YWxpZFRhZ3MoKToKLSAgICAiIiIKLSAgICBXZSBtYWludGFpbiBhIGxp
c3Qgb2Ygd29yZHMgd2hpY2ggd2UgZG8gbm90IHdhbnQgdG8gZGlzcGxheSBhcyB0YWcgaW4gYnVp
bGRib3QuCi0gICAgV2UgZ2VuZXJhdGUgYSBsaXN0IG9mIHRhZ3MgYnkgc3BsaXR0aW5nIHRoZSBi
dWlsZGVyIG5hbWUuIFdlIGRvIG5vdCB3YW50IGNlcnRhaW4gd29yZHMgYXMgdGFnLgotICAgIEZv
ciBlLmcuIHdlIGRvbid0IHdhbnQgJzExJ2FzIHRhZyBmb3IgYnVpbGRlciBpT1MtMTEtU2ltdWxh
dG9yLUVXUwotICAgICIiIgotICAgIGludmFsaWRfdGFncyA9IFtzdHIoaSkgZm9yIGkgaW4geHJh
bmdlKDAsIDIwKV0KLSAgICBpbnZhbGlkX3RhZ3MuZXh0ZW5kKFsnRVdTJywgJ1RyeUJvdCddKQot
ICAgIHJldHVybiBpbnZhbGlkX3RhZ3MKLQotCi1kZWYgZ2V0VmFsaWRUYWdzKHRhZ3MpOgotICAg
IHJldHVybiBsaXN0KHNldCh0YWdzKSAtIHNldChnZXRJbnZhbGlkVGFncygpKSkKLQotCi1kZWYg
Z2V0VGFnc0ZvckJ1aWxkZXIoYnVpbGRlcik6Ci0gICAga2V5d29yZHMgPSBmaWx0ZXIoTm9uZSwg
cmUuc3BsaXQoJ1ssIFwtXzooKV0rJywgc3RyKGJ1aWxkZXJbJ25hbWUnXSkpKQotICAgIHJldHVy
biBnZXRWYWxpZFRhZ3Moa2V5d29yZHMpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYnVpbGQvbG9hZENvbmZpZ191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvbG9hZENvbmZpZ191bml0dGVzdC5weQkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2xvYWRDb25maWdf
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwyMzkgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAoQykgMjAxOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0Ogot
IyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi1pbXBvcnQganNvbgotaW1wb3J0IG9zCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IGxv
YWRDb25maWcKLQotCi1jbGFzcyBDb25maWdEb3RKU09OVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIGdldF9jb25maWcoc2VsZik6Ci0gICAgICAgIGN3ZCA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICByZXR1cm4ganNvbi5sb2FkKG9w
ZW4ob3MucGF0aC5qb2luKGN3ZCwgJ2NvbmZpZy5qc29uJykpKQotCi0gICAgZGVmIGdldF9idWls
ZGVyX2Zyb21fY29uZmlnKHNlbGYsIGNvbmZpZywgYnVpbGRlcl9uYW1lKToKLSAgICAgICAgZm9y
IGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAgICAgICAgaWYgYnVpbGRlcl9u
YW1lID09IGJ1aWxkZXIuZ2V0KCduYW1lJyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJ1aWxk
ZXIKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb24oc2VsZik6Ci0gICAgICAgIGN3ZCA9IG9z
LnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQotICAgICAgICBsb2FkQ29u
ZmlnLmxvYWRCdWlsZGVyQ29uZmlnKHt9LCBpc190ZXN0X21vZGVfZW5hYmxlZD1UcnVlLCBtYXN0
ZXJfcHJlZml4X3BhdGg9Y3dkKQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl9rZXlzKHNlbGYpOgot
ICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICB2YWxpZF9idWlsZGVy
X2tleXMgPSBbJ2FkZGl0aW9uYWxBcmd1bWVudHMnLCAnYXJjaGl0ZWN0dXJlcycsICdidWlsZGRp
cicsICdjb25maWd1cmF0aW9uJywgJ2Rlc2NyaXB0aW9uJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdkZWZhdWx0UHJvcGVydGllcycsICdlbnYnLCAnZmFjdG9yeScsICdpY29uJywg
J2xvY2tzJywgJ25hbWUnLCAncGxhdGZvcm0nLCAncHJvcGVydGllcycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAncmVtb3RlcycsICdydW5UZXN0cycsICdzaG9ydG5hbWUnLCAndGFn
cycsICd0cmlnZ2VycycsICd0cmlnZ2VyZWRfYnknLCAnd29ya2VybmFtZXMnLCAnd29ya2VyYnVp
bGRkaXInXQotICAgICAgICBmb3IgYnVpbGRlciBpbiBjb25maWcuZ2V0KCdidWlsZGVycycsIFtd
KToKLSAgICAgICAgICAgIGZvciBrZXkgaW4gYnVpbGRlcjoKLSAgICAgICAgICAgICAgICBzZWxm
LmFzc2VydFRydWUoa2V5IGluIHZhbGlkX2J1aWxkZXJfa2V5cywgJ1VuZXhwZWN0ZWQga2V5ICJ7
fSIgZm9yIGJ1aWxkZXIge30nLmZvcm1hdChrZXksIGJ1aWxkZXIuZ2V0KCduYW1lJykpKQotCi0g
ICAgZGVmIHRlc3RfbXVsdGlwbGVfc2NoZWR1ZXJzX2Zvcl9idWlsZGVyKHNlbGYpOgotICAgICAg
ICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoKQotICAgICAgICBidWlsZGVyX3RvX3NjaGR1bGVy
X21hcCA9IHt9Ci0gICAgICAgIHRyaWdnZXJlZF9ieV9zY2hlZHVsZXJzID0gW10KLSAgICAgICAg
Zm9yIGJ1aWxkZXIgaW4gY29uZmlnWydidWlsZGVycyddOgotICAgICAgICAgICAgdHJpZ2dlcmVk
X2J5ID0gYnVpbGRlci5nZXQoJ3RyaWdnZXJlZF9ieScpCi0gICAgICAgICAgICBpZiB0cmlnZ2Vy
ZWRfYnk6Ci0gICAgICAgICAgICAgICAgdHJpZ2dlcmVkX2J5X3NjaGVkdWxlcnMuZXh0ZW5kKHRy
aWdnZXJlZF9ieSkKLQotICAgICAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZy5nZXQoJ3NjaGVk
dWxlcnMnKToKLSAgICAgICAgICAgIGlmIHNjaGVkdWxlclsnbmFtZSddIGluIHRyaWdnZXJlZF9i
eV9zY2hlZHVsZXJzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBmb3Ig
YnVpbGRlcm5hbWUgaW4gc2NoZWR1bGVyLmdldCgnYnVpbGRlck5hbWVzJyk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJuYW1lIG5vdCBpbiBidWlsZGVyX3RvX3NjaGR1
bGVyX21hcCwgJ2J1aWxkZXIge30gYXBwZWFycyBtdWx0aXBsZSB0aW1lcyBpbiBzY2hlZHVsZXJz
LicuZm9ybWF0KGJ1aWxkZXJuYW1lKSkKLSAgICAgICAgICAgICAgICBidWlsZGVyX3RvX3NjaGR1
bGVyX21hcFtidWlsZGVybmFtZV0gPSBzY2hlZHVsZXIuZ2V0KCduYW1lJykKLQotICAgIGRlZiB0
ZXN0X3NjaGR1bGVyX2NvbnRhaW5zX3ZhbGlkX2J1aWxkZXJfbmFtZShzZWxmKToKLSAgICAgICAg
Y29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKLSAgICAgICAgYnVpbGRlcl9uYW1lX2xpc3QgPSBb
YnVpbGRlclsnbmFtZSddIGZvciBidWlsZGVyIGluIGNvbmZpZ1snYnVpbGRlcnMnXV0KLSAgICAg
ICAgZm9yIHNjaGVkdWxlciBpbiBjb25maWcuZ2V0KCdzY2hlZHVsZXJzJyk6Ci0gICAgICAgICAg
ICBmb3IgYnVpbGRlcm5hbWUgaW4gc2NoZWR1bGVyLmdldCgnYnVpbGRlck5hbWVzJyk6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ1aWxkZXJuYW1lIGluIGJ1aWxkZXJfbmFtZV9s
aXN0LCAnYnVpbGRlciAie30iIGluIHNjaGVkdWxlciAie30iIGlzIGludmFsaWQuJy5mb3JtYXQo
YnVpbGRlcm5hbWUsIHNjaGVkdWxlclsnbmFtZSddKSkKLQotICAgIGRlZiB0ZXN0X3NpbmdsZV9i
dWlsZGVyX2Zvcl90cmlnZ2VyYWJsZV9zY2hlZHVsZXIoc2VsZik6Ci0gICAgICAgIGNvbmZpZyA9
IHNlbGYuZ2V0X2NvbmZpZygpCi0gICAgICAgIGZvciBzY2hlZHVsZXIgaW4gY29uZmlnWydzY2hl
ZHVsZXJzJ106Ci0gICAgICAgICAgICBpZiBzY2hlZHVsZXIuZ2V0KCd0eXBlJykgPT0gJ1RyaWdn
ZXJhYmxlJzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNjaGVkdWxlci5n
ZXQoJ2J1aWxkZXJOYW1lcycpKSA9PSAxLCAnc2NoZWR1bGVyICJ7fSIgdHJpZ2dlcnMgbXVsdGlw
bGUgYnVpbGRlcnMuJy5mb3JtYXQoc2NoZWR1bGVyWyduYW1lJ10pKQotCi0gICAgZGVmIHRlc3Rf
aW5jb3JyZWN0X3RyaWdnZXJlZF9ieShzZWxmKToKLSAgICAgICAgY29uZmlnID0gc2VsZi5nZXRf
Y29uZmlnKCkKLSAgICAgICAgc2NoZWR1bGVyc190b19idWlsZGVybmFtZV9tYXAgPSB7fQotICAg
ICAgICBmb3Igc2NoZWR1bGVyIGluIGNvbmZpZ1snc2NoZWR1bGVycyddOgotICAgICAgICAgICAg
c2NoZWR1bGVyc190b19idWlsZGVybmFtZV9tYXBbc2NoZWR1bGVyWyduYW1lJ11dID0gc2NoZWR1
bGVyWydidWlsZGVyTmFtZXMnXQotCi0gICAgICAgIGZvciBidWlsZGVyIGluIGNvbmZpZ1snYnVp
bGRlcnMnXToKLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGJ1aWxkZXIuaXRlcml0ZW1z
KCk6Ci0gICAgICAgICAgICAgICAgaWYga2V5ID09ICd0cmlnZ2VyZWRfYnknOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHZhbHVlKSA9PSAxLCAndHJpZ2dlcmVkX2J5
ICJ7fSIgaXMgaW52YWxpZCwgaXQgc2hvdWxkIGNvbnRhaW4gYSBzaW5nbGUgdHJpZ2dlci4nLmZv
cm1hdCh2YWx1ZSkpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2YWx1ZVsw
XSBpbiBzY2hlZHVsZXJzX3RvX2J1aWxkZXJuYW1lX21hcC5rZXlzKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndHJpZ2dlcmVkX2J5ICJ7fSIgZm9yIGJ1aWxkZXIgInt9
IiBpcyBub3QgbGlzdGVkIGluIHNjaGVkdWxlcnMgc2VjdGlvbi4nLmZvcm1hdCh2YWx1ZVswXSwg
YnVpbGRlclsnbmFtZSddKSkKLQotICAgICAgICAgICAgICAgICAgICAjIEVuc3VyZSB0aGF0IHRo
ZSB0cmlnZ2VyZWRfYnkgaXMgY29ycmVjdCwgdmVyaWZ5IGJ5IG1hdGNoaW5nIHRoYXQgdGhlIGJ1
aWxkZXIgZm9yIHRoZSB0cmlnZ2VyZWRfYnkgc2NoZWR1bGVyIGFjdHVhbGx5IHRyaWdnZXJzIGN1
cnJlbnQgYnVpbGRlcgotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyZWRfYnkgPSB2YWx1ZVsw
XQotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyaW5nX2J1aWxkZXJfbmFtZSA9IHNjaGVkdWxl
cnNfdG9fYnVpbGRlcm5hbWVfbWFwLmdldCh0cmlnZ2VyZWRfYnkpWzBdCi0gICAgICAgICAgICAg
ICAgICAgIHRyaWdnZXJpbmdfYnVpbGRlciA9IHNlbGYuZ2V0X2J1aWxkZXJfZnJvbV9jb25maWco
Y29uZmlnLCB0cmlnZ2VyaW5nX2J1aWxkZXJfbmFtZSkKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHRyaWdnZXJpbmdfYnVpbGRlciwgJ2J1aWxkZXIgInt9IiBpbiBzY2hlZHVs
ZXIgInt9IiBpcyBpbnZhbGlkLicuZm9ybWF0KHRyaWdnZXJpbmdfYnVpbGRlcl9uYW1lLCB0cmln
Z2VyZWRfYnkpKQotICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyaW5nX2J1aWxkZXJfdHJpZ2dl
cnMgPSB0cmlnZ2VyaW5nX2J1aWxkZXIuZ2V0KCd0cmlnZ2VycycpCi0gICAgICAgICAgICAgICAg
ICAgIHRyaWdnZXJpbmdfYnVpbGRlcl90cmlnZ2Vyc19idWlsZGVybmFtZXMgPSBbc2NoZWR1bGVy
c190b19idWlsZGVybmFtZV9tYXBbc2NoZWR1bGVyXVswXSBmb3Igc2NoZWR1bGVyIGluIHRyaWdn
ZXJpbmdfYnVpbGRlcl90cmlnZ2Vyc10KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGJ1aWxkZXJbJ25hbWUnXSBpbiB0cmlnZ2VyaW5nX2J1aWxkZXJfdHJpZ2dlcnNfYnVpbGRl
cm5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luY29ycmVjdCB0
cmlnZ2VyZWRfYnkgInt9IiBpbiBidWlsZGVyICJ7fSIsIHRoaXMgYnVpbGRlciBpcyBub3QgaW4g
Y29ycmVzcG9uZGluZyBidWlsZGVyIHRyaWdnZXJzICJ7fSIuJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgLmZvcm1hdCh0cmlnZ2VyZWRfYnksIGJ1aWxkZXJbJ25hbWUnXSwg
dHJpZ2dlcmluZ19idWlsZGVyX3RyaWdnZXJzX2J1aWxkZXJuYW1lcykpCi0KLQotY2xhc3MgVGFn
c0ZvckJ1aWxkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdmVyaWZ5VGFncyhz
ZWxmLCBidWlsZGVyTmFtZSwgZXhwZWN0ZWRUYWdzKToKLSAgICAgICAgdGFncyA9IGxvYWRDb25m
aWcuZ2V0VGFnc0ZvckJ1aWxkZXIoeyduYW1lJzogYnVpbGRlck5hbWV9KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNvcnRlZCh0YWdzKSwgc29ydGVkKGV4cGVjdGVkVGFncykpCi0KLSAgICBk
ZWYgdGVzdF9nZXRUYWdzRm9yQnVpbGRlcihzZWxmKToKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdz
KCdFV1MnLCBbXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdUcnlCb3QtMTAtRVdTJywgW10p
Ci0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnMTEtRVdTJywgW10pCi0gICAgICAgIHNlbGYudmVy
aWZ5VGFncygnMzItRVdTJywgWyczMiddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ2lPUy0x
MS1FV1MnLCBbJ2lPUyddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ2lPUygxMSksKHRlc3Qp
LUVXUycsIFsnaU9TJywgJ3Rlc3QnXSkKLSAgICAgICAgc2VsZi52ZXJpZnlUYWdzKCdXaW5kb3dz
LUVXUycsIFsnV2luZG93cyddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ1dpbmRvd3NfV2lu
ZG93cycsIFsnV2luZG93cyddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ0dUSy1CdWlsZC1F
V1MnLCBbJ0dUSycsICdCdWlsZCddKQotICAgICAgICBzZWxmLnZlcmlmeVRhZ3MoJ0dUSy1XSzIt
VGVzdHMtRVdTJywgWydHVEsnLCAnV0syJywgJ1Rlc3RzJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5
VGFncygnbWFjT1MtU2llcnJhLVJlbGVhc2UtV0sxLUVXUycsIFsnU2llcnJhJywgJ1JlbGVhc2Un
LCAnbWFjT1MnLCAnV0sxJ10pCi0gICAgICAgIHNlbGYudmVyaWZ5VGFncygnbWFjT1MtSGlnaC1T
aWVycmEtUmVsZWFzZS0zMmJpdC1XSzItRVdTJywgWydtYWNPUycsICdIaWdoJywgJ1NpZXJyYScs
ICdSZWxlYXNlJywgJ1dLMicsICczMmJpdCddKQotCi0gICAgZGVmIHRlc3RfdGFnc190eXBlKHNl
bGYpOgotICAgICAgICB0YWdzID0gbG9hZENvbmZpZy5nZXRUYWdzRm9yQnVpbGRlcih7J25hbWUn
OiB1J2lPUy0xMS1FV1MnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWdzLCBbJ2lPUydd
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUodGFnc1swXSksIHN0cikKLQotICAgIGRl
ZiB0ZXN0X2dldEludmFsaWRUYWdzKHNlbGYpOgotICAgICAgICBpbnZhbGlkVGFncyA9IGxvYWRD
b25maWcuZ2V0SW52YWxpZFRhZ3MoKQotICAgICAgICBleHBlY3RlZFRhZ3MgPSBbJzAnLCAnMScs
ICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsICc4JywgJzknLCAnMTAnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgJzExJywgJzEyJywgJzEzJywgJzE0JywgJzE1JywgJzE2JywgJzE3Jywg
JzE4JywgJzE5JywgJ0VXUycsICdUcnlCb3QnXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlu
dmFsaWRUYWdzLCBleHBlY3RlZFRhZ3MpCi0KLQotY2xhc3MgVGVzdGNoZWNrVmFsaWRXb3JrZXIo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2ludmFsaWRfd29ya2VyKHNlbGYpOgot
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKLSAg
ICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tWYWxpZFdvcmtlcih7fSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAoJ1dvcmtlciBpcyBOb25lIG9yIEVt
cHR5LicsKSkKLQotICAgIGRlZiB0ZXN0X3dvcmtlcl93aXRoX21pc3NpbmdfbmFtZShzZWxmKToK
LSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0g
ICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRXb3JrZXIoeydwbGF0Zm9ybSc6ICdtYWMt
c2llcnJhJ30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5leGNlcHRpb24uYXJn
cywgKCdXb3JrZXIgIntcJ3BsYXRmb3JtXCc6IFwnbWFjLXNpZXJyYVwnfSIgZG9lcyBub3QgaGF2
ZSBuYW1lIGRlZmluZWQuJywpKQotCi0gICAgZGVmIHRlc3Rfd29ya2VyX3dpdGhfbWlzc2luZ19w
bGF0TmFtZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24p
IGFzIGNvbnRleHQ6Ci0gICAgICAgICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRXb3JrZXIoeydu
YW1lJzogJ2V3czEwMSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuZXhjZXB0
aW9uLmFyZ3MsICgnV29ya2VyIGV3czEwMSBkb2VzIG5vdCBoYXZlIHBsYXRmb3JtIGRlZmluZWQu
JywpKQotCi0gICAgZGVmIHRlc3RfdmFsaWRfd29ya2VyKHNlbGYpOgotICAgICAgICBsb2FkQ29u
ZmlnLmNoZWNrVmFsaWRXb3JrZXIoeyduYW1lJzogJ2V3czEwMScsICdwbGF0Zm9ybSc6ICdtYWMt
c2llcnJhJ30pCi0KLQotY2xhc3MgVGVzdGNoZWNrVmFsaWRCdWlsZGVyKHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICBkZWYgdGVzdF9pbnZhbGlkX2J1aWxkZXIoc2VsZik6Ci0gICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAgbG9h
ZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwge30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29udGV4dC5leGNlcHRpb24uYXJncywgKCdCdWlsZGVyIGlzIE5vbmUgb3IgRW1wdHkuJywp
KQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX21pc3NpbmdfbmFtZShzZWxmKToKLSAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0gICAgICAg
ICAgICBsb2FkQ29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J3BsYXRmb3JtJzogJ21hYy1z
aWVycmEnfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdz
LCAoJ0J1aWxkZXIgIntcJ3BsYXRmb3JtXCc6IFwnbWFjLXNpZXJyYVwnfSIgZG9lcyBub3QgaGF2
ZSBuYW1lIGRlZmluZWQuJywpKQotCi0gICAgZGVmIHRlc3RfYnVpbGRlcl93aXRoX21pc3Npbmdf
c2hvcnRuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlv
bikgYXMgY29udGV4dDoKLSAgICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tWYWxpZEJ1aWxkZXIo
e30sIHsncGxhdGZvcm0nOiAnbWFjLXNpZXJyYScsICduYW1lJzogJ21hYy13azIodGVzdCknfSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAoJ0J1aWxk
ZXIgIm1hYy13azIodGVzdCkiIGRvZXMgbm90IGhhdmUgc2hvcnQgbmFtZSBkZWZpbmVkLiBUaGlz
IG5hbWUgaXMgbmVlZGVkIGZvciBFV1Mgc3RhdHVzIGJ1YmJsZXMuJywpKQotCi0gICAgZGVmIHRl
c3RfYnVpbGRlcl93aXRoX2ludmFsaWRfaWRlbnRpZmllcihzZWxmKToKLSAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0gICAgICAgICAgICBsb2Fk
Q29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFjLXdrMih0ZXN0KScsICdz
aG9ydG5hbWUnOiAnbWFjLXdrMid9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQu
ZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBuYW1lIG1hYy13azIodGVzdCkgaXMgbm90IGEgdmFs
aWQgYnVpbGRib3QgaWRlbnRpZmllci4nLCkpCi0KLSAgICBkZWYgdGVzdF9idWlsZGVyX3dpdGhf
ZXh0cmFfbG9uZ19uYW1lKHNlbGYpOgotICAgICAgICBsb25nTmFtZSA9ICdhJyAqIDcxCi0gICAg
ICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAg
ICAgICAgbG9hZENvbmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwgeyduYW1lJzogbG9uZ05hbWUs
ICdzaG9ydG5hbWUnOiAnYSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuZXhj
ZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBuYW1lIHt9IGlzIGxvbmdlciB0aGFuIG1heGltdW0gYWxs
b3dlZCBieSBCdWlsZGJvdCAoNzAgY2hhcmFjdGVycykuJy5mb3JtYXQobG9uZ05hbWUpLCkpCi0K
LSAgICBkZWYgdGVzdF9idWlsZGVyX3dpdGhfaW52YWxpZF9jb25maWd1cmF0aW9uKHNlbGYpOgot
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKLSAg
ICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tWYWxpZEJ1aWxkZXIoe30sIHsnbmFtZSc6ICdtYWMt
d2syJywgJ3Nob3J0bmFtZSc6ICdtYWMtd2syJywgJ2NvbmZpZ3VyYXRpb24nOiAnYXNhbid9KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnSW52YWxp
ZCBjb25maWd1cmF0aW9uOiBhc2FuIGZvciBidWlsZGVyOiBtYWMtd2syJywpKQotCi0gICAgZGVm
IHRlc3RfYnVpbGRlcl93aXRoX21pc3NpbmdfZmFjdG9yeShzZWxmKToKLSAgICAgICAgd2l0aCBz
ZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24pIGFzIGNvbnRleHQ6Ci0gICAgICAgICAgICBsb2Fk
Q29uZmlnLmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFjLXdrMicsICdzaG9ydG5h
bWUnOiAnbWFjLXdrMicsICdjb25maWd1cmF0aW9uJzogJ3JlbGVhc2UnfSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAoJ0J1aWxkZXIgbWFjLXdrMiBk
b2VzIG5vdCBoYXZlIGZhY3RvcnkgZGVmaW5lZC4nLCkpCi0KLSAgICBkZWYgdGVzdF9idWlsZGVy
X3dpdGhfbWlzc2luZ19zY2hlZHVsZXIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRS
YWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAgbG9hZENvbmZpZy5jaGVj
a1ZhbGlkQnVpbGRlcih7fSwgeyduYW1lJzogJ21hYy13azInLCAnc2hvcnRuYW1lJzogJ21hYy13
azInLCAnY29uZmlndXJhdGlvbic6ICdyZWxlYXNlJywgJ2ZhY3RvcnknOiAnV0syRmFjdG9yeScs
ICdwbGF0Zm9ybSc6ICdtYWMtc2llcnJhJywgJ3RyaWdnZXJzJzogWydhcGktdGVzdHMtbWFjLWV3
cyddfSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LmV4Y2VwdGlvbi5hcmdzLCAo
J1RyaWdnZXI6IGFwaS10ZXN0cy1tYWMtZXdzIGluIGJ1aWxkZXIgbWFjLXdrMiBkb2VzIG5vdCBl
eGlzdCBpbiBsaXN0IG9mIFRyaWdlcnJhYmxlIHNjaGVkdWxlcnMuJywpKQotCi0gICAgZGVmIHRl
c3RfYnVpbGRlcl93aXRoX21pc3NpbmdfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAgIHdpdGggc2Vs
Zi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAgbG9hZENv
bmZpZy5jaGVja1ZhbGlkQnVpbGRlcih7fSwgeyduYW1lJzogJ21hYy13azInLCAnc2hvcnRuYW1l
JzogJ21hYy13azInLCAnY29uZmlndXJhdGlvbic6ICdyZWxlYXNlJywgJ2ZhY3RvcnknOiAnV0sy
RmFjdG9yeSd9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQuZXhjZXB0aW9uLmFy
Z3MsICgnQnVpbGRlciBtYWMtd2syIGRvZXMgbm90IGhhdmUgcGxhdGZvcm0gZGVmaW5lZC4nLCkp
Ci0KLSAgICBkZWYgdGVzdF92YWxpZF9idWlsZGVyKHNlbGYpOgotICAgICAgICBsb2FkQ29uZmln
LmNoZWNrVmFsaWRCdWlsZGVyKHt9LCB7J25hbWUnOiAnbWFjT1MtSGlnaC1TaWVycmEtV0syLUVX
UycsICdzaG9ydG5hbWUnOiAnbWFjLXdrMicsICdjb25maWd1cmF0aW9uJzogJ3JlbGVhc2UnLCAn
ZmFjdG9yeSc6ICdXSzJGYWN0b3J5JywgJ3BsYXRmb3JtJzogJ21hYy1zaWVycmEnfSkKLQotCi1j
bGFzcyBUZXN0Y2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0ZW5jeSh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHNlbGYuV0syQnVpbGRlciA9IHsnbmFtZSc6ICdtYWNPUy1IaWdoLVNpZXJyYS1XSzItRVdT
JywgJ3Nob3J0bmFtZSc6ICdtYWMtd2syJywgJ2ZhY3RvcnknOiAnV0syRmFjdG9yeScsICdwbGF0
Zm9ybSc6ICdtYWMtc2llcnJhJywgJ3dvcmtlcm5hbWVzJzogWydld3MxMDEnLCAnZXdzMTAyJ119
Ci0gICAgICAgIHNlbGYuZXdzMTAxID0geyduYW1lJzogJ2V3czEwMScsICdwbGF0Zm9ybSc6ICdt
YWMtc2llcnJhJ30KLSAgICAgICAgc2VsZi5ld3MxMDIgPSB7J25hbWUnOiAnZXdzMTAyJywgJ3Bs
YXRmb3JtJzogJ2lvcy0xMSd9Ci0gICAgICAgIHN1cGVyKFRlc3RjaGVja1dvcmtlcnNBbmRCdWls
ZGVyc0ZvckNvbnNpc3RlbmN5LCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCi0KLSAg
ICBkZWYgdGVzdF9jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KHNlbGYpOgot
ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbikgYXMgY29udGV4dDoKLSAg
ICAgICAgICAgIGxvYWRDb25maWcuY2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0ZW5j
eSh7fSwgW10sIFtzZWxmLldLMkJ1aWxkZXJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bnRleHQuZXhjZXB0aW9uLmFyZ3MsICgnQnVpbGRlciBtYWNPUy1IaWdoLVNpZXJyYS1XSzItRVdT
IGhhcyB3b3JrZXIgZXdzMTAxLCB3aGljaCBpcyBub3QgZGVmaW5lZCBpbiB3b3JrZXJzIGxpc3Qh
JywpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tXb3JrZXJzQW5kQnVpbGRlcnNGb3JDb25zaXN0ZW5j
eTEoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBj
b250ZXh0OgotICAgICAgICAgICAgbG9hZENvbmZpZy5jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0Zv
ckNvbnNpc3RlbmN5KHt9LCBbc2VsZi5ld3MxMDEsIHNlbGYuZXdzMTAyXSwgW3NlbGYuV0syQnVp
bGRlcl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udGV4dC5leGNlcHRpb24uYXJncywg
KCdCdWlsZGVyIG1hY09TLUhpZ2gtU2llcnJhLVdLMi1FV1MgaXMgZm9yIHBsYXRmb3JtIG1hYy1z
aWVycmEsIGJ1dCBoYXMgd29ya2VyIGV3czEwMiBmb3IgcGxhdGZvcm0gaW9zLTExIScsKSkKLQot
ICAgIGRlZiB0ZXN0X2R1cGxpY2F0ZV93b3JrZXIoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMoRXhjZXB0aW9uKSBhcyBjb250ZXh0OgotICAgICAgICAgICAgbG9hZENvbmZp
Zy5jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KHt9LCBbc2VsZi5ld3MxMDEs
IHNlbGYuZXdzMTAxXSwgW3NlbGYuV0syQnVpbGRlcl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY29udGV4dC5leGNlcHRpb24uYXJncywgKCdEdXBsaWNhdGUgd29ya2VyIGVudHJ5IGZvdW5k
IGZvciBld3MxMDEuJywpKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
bG9hZENvbmZpZy5jaGVja1dvcmtlcnNBbmRCdWlsZGVyc0ZvckNvbnNpc3RlbmN5KHt9LCBbc2Vs
Zi5ld3MxMDEsIHsnbmFtZSc6ICdld3MxMDInLCAncGxhdGZvcm0nOiAnbWFjLXNpZXJyYSd9XSwg
W3NlbGYuV0syQnVpbGRlcl0pCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1
bml0dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9t
YXN0ZXIuY2ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWls
ZC9tYXN0ZXIuY2ZnCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYnVpbGQvbWFzdGVyLmNmZwkobm9uZXhpc3RlbnQpCkBAIC0xLDc3ICswLDAgQEAKLWlt
cG9ydCBvcwotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwotCi1mcm9tIGJ1aWxkYm90LnBsdWdp
bnMgaW1wb3J0IHJlcG9ydGVycywgdXRpbAotCi1pbXBvcnQgbG9hZENvbmZpZwotZnJvbSBldmVu
dHMgaW1wb3J0IEV2ZW50cwotCi0jIFRoaXMgaXMgd29yay1hcm91bmQgZm9yIFR3aXN0ZWQgaGF2
aW5nIGEgc21hbGwgc2l6ZSBsaW1pdCBmb3IgcGF0Y2hlcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg4NTEjYzUKLWZyb20gdHdpc3RlZC5zcHJlYWQgaW1w
b3J0IGJhbmFuYQotYmFuYW5hLlNJWkVfTElNSVQgPSAxMDAgKiAxMDI0ICogMTAyNAotCi1pc190
ZXN0X21vZGVfZW5hYmxlZCA9IG9zLmdldGVudignQlVJTERCT1RfUFJPRFVDVElPTicpIGlzIE5v
bmUKLQotYyA9IEJ1aWxkbWFzdGVyQ29uZmlnID0ge30KLQotY1snd3d3J10gPSBkaWN0KHBvcnQ9
ODAxMCwgYWxsb3dlZF9vcmlnaW5zPVsiKiJdKQotY1snd3d3J11bJ2N1c3RvbV90ZW1wbGF0ZXNf
ZGlyJ10gPSAndGVtcGxhdGVzJwotCi1jWyd3d3cnXVsndWlfZGVmYXVsdF9jb25maWcnXSA9IHsg
Ci0gICAgJ0J1aWxkZXJzLnNob3dfd29ya2Vyc19uYW1lJzogVHJ1ZSwKLSAgICAnQnVpbGRlcnMu
YnVpbGRGZXRjaExpbWl0JzogMTAwMCwKLSAgICAnV29ya2Vycy5zaG93V29ya2VyQnVpbGRlcnMn
OiBUcnVlLAotfQotCi1pZiBub3QgaXNfdGVzdF9tb2RlX2VuYWJsZWQ6Ci0gICAgYWRtaW5fdXNl
cm5hbWUgPSBvcy5nZXRlbnYoJ0VXU19BRE1JTl9VU0VSTkFNRScpCi0gICAgYWRtaW5fcGFzc3dv
cmQgPSBvcy5nZXRlbnYoJ0VXU19BRE1JTl9QQVNTV09SRCcpCi0gICAgaWYgbm90IGFkbWluX3Vz
ZXJuYW1lIG9yIG5vdCBhZG1pbl9wYXNzd29yZDoKLSAgICAgICAgcHJpbnQoJ0Vudmlyb25tZW50
IHZhcmlhYmxlcyBmb3IgYWRtaW4gdXNlcm5hbWUvcGFzc3dvcmQgbm90IGZvdW5kLiBQbGVhc2Ug
ZW5zdXJlIHRoZXNlIHZhcmlhYmxlcyBhcmUgc2V0LicpCi0gICAgICAgIHN5cy5leGl0KDEpCi0g
ICAgIyBTZWUgaHR0cHM6Ly9kb2NzLmJ1aWxkYm90Lm5ldC9jdXJyZW50L21hbnVhbC9jb25maWd1
cmF0aW9uL3d3dy5odG1sI2V4YW1wbGUtY29uZmlncwotICAgIGF1dGh6ID0gdXRpbC5BdXRoeigK
LSAgICAgICAgYWxsb3dSdWxlcz1bdXRpbC5BbnlDb250cm9sRW5kcG9pbnRNYXRjaGVyKHJvbGU9
ImFkbWluIildLAotICAgICAgICByb2xlTWF0Y2hlcnM9W3V0aWwuUm9sZXNGcm9tRW1haWxzKGFk
bWluPVthZG1pbl91c2VybmFtZV0pXQotICAgICkKLSAgICBhdXRoID0gdXRpbC5Vc2VyUGFzc3dv
cmRBdXRoKHthZG1pbl91c2VybmFtZTogYWRtaW5fcGFzc3dvcmR9KQotICAgIGNbJ3d3dyddWydh
dXRoJ10gPSBhdXRoCi0gICAgY1snd3d3J11bJ2F1dGh6J10gPSBhdXRoegotCi1jWydwcm90b2Nv
bHMnXSA9IHsncGInOiB7J3BvcnQnOiAxNzAwMH19Ci0KLWNbJ3Byb2plY3ROYW1lJ10gPSAnV2Vi
S2l0IEVXUycKLWNbJ3Byb2plY3RVUkwnXSA9ICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3Jn
LycKLQotaWYgaXNfdGVzdF9tb2RlX2VuYWJsZWQ6Ci0gICAgY1snYnVpbGRib3RVUkwnXSA9ICdo
dHRwOi8vbG9jYWxob3N0OjgwMTAvJwotICAgIGNbJ2RiX3VybCddID0gJ3NxbGl0ZTovLy9zdGF0
ZS5zcWxpdGU/c2VyaWFsaXplX2FjY2Vzcz0xJwotZWxzZToKLSAgICBjWydidWlsZGJvdFVSTCdd
ID0gJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvJwotICAgIGRiX3VybCA9IG9zLmdldGVu
dignREJfVVJMJywgTm9uZSkKLSAgICBkYl9uYW1lID0gb3MuZ2V0ZW52KCdEQl9OQU1FJywgTm9u
ZSkKLSAgICBkYl91c2VybmFtZSA9IG9zLmdldGVudignREJfVVNFUk5BTUUnLCBOb25lKQotICAg
IGRiX3Bhc3N3b3JkID0gb3MuZ2V0ZW52KCdEQl9QQVNTV09SRCcsIE5vbmUpCi0gICAgaWYgTm9u
ZSBpbiBbZGJfdXJsLCBkYl9uYW1lLCBkYl91c2VybmFtZSwgZGJfcGFzc3dvcmRdOgotICAgICAg
ICBwcmludCgnRW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBEQiBub3QgZm91bmQuIFBsZWFzZSBl
bnN1cmUgdGhlc2UgdmFyaWFibGVzIGFyZSBzZXQuJykKLSAgICAgICAgc3lzLmV4aXQoMSkKLSAg
ICAjIFNlZSBodHRwczovL2RvY3MuYnVpbGRib3QubmV0LzEuNy4wL21hbnVhbC9jb25maWd1cmF0
aW9uL2dsb2JhbC5odG1sI2RhdGFiYXNlLXNwZWNpZmljYXRpb24KLSAgICBjWydkYl91cmwnXSA9
ICdwb3N0Z3Jlc3FsOi8ve306e31Ae30ve30nLmZvcm1hdChkYl91c2VybmFtZSwgZGJfcGFzc3dv
cmQsIGRiX3VybCwgZGJfbmFtZSkKLQotY1snbG9nQ29tcHJlc3Npb25NZXRob2QnXSA9ICdsejQn
Ci1jWydidWlsZGJvdE5ldFVzYWdlRGF0YSddID0gTm9uZQotCi1sb2FkQ29uZmlnLmxvYWRCdWls
ZGVyQ29uZmlnKGMsIGlzX3Rlc3RfbW9kZV9lbmFibGVkPWlzX3Rlc3RfbW9kZV9lbmFibGVkKQot
Ci1tYWlsX25vdGlmaWVyID0gcmVwb3J0ZXJzLk1haWxOb3RpZmllcigKLSAgICBmcm9tYWRkcj0n
ZXdzLWJ1aWxkQHdlYmtpdC5vcmcnLAotICAgIHNlbmRUb0ludGVyZXN0ZWRVc2Vycz1GYWxzZSwK
LSAgICBleHRyYVJlY2lwaWVudHM9WydhYWthc2hfamFpbkB3ZWJraXQub3JnJ10sCi0gICAgbW9k
ZT0oJ2V4Y2VwdGlvbicpLAotICAgIGFkZFBhdGNoPUZhbHNlKQotCi1pZiBub3QgaXNfdGVzdF9t
b2RlX2VuYWJsZWQ6Ci0gICAgaG9zdG5hbWUgPSAgc29ja2V0LmdldGhvc3RuYW1lKCkuc3RyaXAo
KQotICAgIGV2ZW50X3JlcG9ydGVyID0gRXZlbnRzKG1hc3Rlcl9ob3N0bmFtZT1ob3N0bmFtZSwg
dHlwZV9wcmVmaXg9J2V3cycpCi0gICAgY1snc2VydmljZXMnXSA9IFtldmVudF9yZXBvcnRlciwg
bWFpbF9ub3RpZmllcl0KSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC9y
dW5Vbml0dGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdz
LWJ1aWxkL3J1blVuaXR0ZXN0cy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weQkobm9uZXhpc3RlbnQpCkBAIC0x
LDMwICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwot
aW1wb3J0IHVuaXR0ZXN0Ci0KLSIiIgotVGhpcyBpcyB0aGUgZXF1aXZhbGVudCBvZiBydW5uaW5n
OgotICAgIHB5dGhvbiAtbSB1bml0dGVzdCBkaXNjb3ZlciAtLXN0YXJ0LWRpcmVjdG9yeSB7dGVz
dF9kaXNjb3ZlcnlfcGF0aH0gLS1wYXR0ZXJuIHtVTklUX1RFU1RfUEFUVEVSTn0KLSIiIgotCi1V
TklUX1RFU1RfUEFUVEVSTiA9ICcqX3VuaXR0ZXN0LnB5JwotCi0KLWRlZiBydW5fdW5pdHRlc3Rz
KHRlc3RfZGlzY292ZXJ5X3BhdGgpOgotICAgIHRlc3Rfc3VpdGUgPSB1bml0dGVzdC5kZWZhdWx0
VGVzdExvYWRlci5kaXNjb3Zlcih0ZXN0X2Rpc2NvdmVyeV9wYXRoLCBwYXR0ZXJuPVVOSVRfVEVT
VF9QQVRURVJOKQotICAgIHJlc3VsdHMgPSB1bml0dGVzdC5UZXh0VGVzdFJ1bm5lcihidWZmZXI9
VHJ1ZSkucnVuKHRlc3Rfc3VpdGUpCi0gICAgaWYgcmVzdWx0cy5mYWlsdXJlcyBvciByZXN1bHRz
LmVycm9yczoKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdUZXN0IGZhaWx1cmVzIG9yIGVy
cm9ycyB3ZXJlIGdlbmVyYXRlZCBkdXJpbmcgdGhpcyB0ZXN0IHJ1bi4nKQotCi0KLWlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6Ci0gICAgdHJ5OgotICAgICAgICByZWxhdGl2ZV9wYXRoID0gc3lz
LmFyZ3ZbMV0KLSAgICBleGNlcHQgSW5kZXhFcnJvcjoKLSAgICAgICAgcmVsYXRpdmVfcGF0aCA9
IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKLQotICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgo
cmVsYXRpdmVfcGF0aCkKLSAgICBhc3NlcnQgb3MucGF0aC5pc2RpcihwYXRoKSwgJ3t9IGlzIG5v
dCBhIGRpcmVjdG9yeS4gUGxlYXNlIHNwZWNpZnkgYSB2YWxpZCBkaXJlY3RvcnknLmZvcm1hdChw
YXRoKQotICAgIHJ1bl91bml0dGVzdHMocGF0aCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2V3cy1idWlsZC9zZW5kX2VtYWlsLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xh
dmVTdXBwb3J0L2V3cy1idWlsZC9zZW5kX2VtYWlsLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc2VuZF9lbWFpbC5weQkobm9uZXhpc3Rl
bnQpCkBAIC0xLDg4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0
OgotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAotIyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCi0jIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKLSMgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSMgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKLSMg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwKLSMgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotaW1wb3J0IGpzb24KLWltcG9ydCBvcwotaW1wb3J0IHNtdHBsaWIKLQotZnJvbSBlbWFp
bC5taW1lLnRleHQgaW1wb3J0IE1JTUVUZXh0Ci0KLWlzX3Rlc3RfbW9kZV9lbmFibGVkID0gb3Mu
Z2V0ZW52KCdCVUlMREJPVF9QUk9EVUNUSU9OJykgaXMgTm9uZQotCi1GUk9NX0VNQUlMID0gJ2V3
c0B3ZWJraXQub3JnJwotSUdBTElBX0pTQ19RVUVVRVNfUEFUVEVSTlMgPSBbJ2FybXY3JywgJ21p
cHMnLCAnaTM4NiddCi1JR0FMSUFfR1RLX1dQRV9RVUVVRVNfUEFUVEVSTlMgPSBbJ2d0aycsICd3
cGUnXQotU0VSVkVSID0gJ2xvY2FsaG9zdCcKLQotCi1kZWYgZ2V0X2VtYWlsX2lkcyhjYXRlZ29y
eSk6Ci0gICAgIyBWYWxpZCBjYXRlZ29yaWVzOiAnQURNSU5fRU1BSUxTJywgJ0FQUExFX0JPVF9X
QVRDSEVSU19FTUFJTFMnLCAnRU1BSUxfSURTX1RPX1VOU1VCU0NSSUJFJyBldGMuCi0gICAgdHJ5
OgotICAgICAgICBlbWFpbHMgPSBqc29uLmxvYWQob3BlbignZW1haWxzLmpzb24nKSkKLSAgICAg
ICAgcmV0dXJuIGVtYWlscy5nZXQoY2F0ZWdvcnksIFtdKQotICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHJlYWRpbmcgZW1haWxzLmpzb246IHt9Jy5m
b3JtYXQoZSkpCi0gICAgICAgIHJldHVybiBbXQotCi0KLWRlZiBzZW5kX2VtYWlsKHRvX2VtYWls
cywgc3ViamVjdCwgdGV4dCwgcmVmZXJlbmNlPScnKToKLSAgICBpZiBpc190ZXN0X21vZGVfZW5h
YmxlZDoKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgbm90IHRvX2VtYWlsczoKLSAgICAgICAgcHJp
bnQoJ0Vycm9yOiBza2lwcGluZyBlbWFpbCBzaW5jZSBubyByZWNpcGllbnQgaXMgc3BlY2lmaWVk
JykKLSAgICAgICAgcmV0dXJuCi0gICAgaWYgbm90IHN1YmplY3Qgb3Igbm90IHRleHQ6Ci0gICAg
ICAgIHByaW50KCdFcnJvcjogc2tpcHBpbmcgZW1haWwgc2luY2Ugbm8gc3ViamVjdCBvciB0ZXh0
IGlzIHNwZWNpZmllZCcpCi0gICAgICAgIHJldHVybgotCi0gICAgdGV4dCA9IHRleHQuZW5jb2Rl
KCd1dGYtOCcpCi0gICAgdGV4dCA9IHRleHQucmVwbGFjZSgnXG4nLCAnPGJyPicpCi0KLSAgICBt
c2cgPSBNSU1FVGV4dCh0ZXh0LCAnaHRtbCcpCi0gICAgbXNnWydGcm9tJ10gPSBGUk9NX0VNQUlM
Ci0gICAgbXNnWydUbyddID0gJywgJy5qb2luKHRvX2VtYWlscykKLSAgICBtc2dbJ1N1YmplY3Qn
XSA9IHN1YmplY3QKLSAgICBtc2cuYWRkX2hlYWRlcigncmVwbHktdG8nLCAnYWFrYXNoX2phaW5A
YXBwbGUuY29tJykKLSAgICBpZiByZWZlcmVuY2U6Ci0gICAgICAgIG1zZy5hZGRfaGVhZGVyKCdy
ZWZlcmVuY2VzJywgJ3t9QHdlYmtpdC5vcmcnLmZvcm1hdChyZWZlcmVuY2UpKQotCi0gICAgc2Vy
dmVyID0gc210cGxpYi5TTVRQKFNFUlZFUikKLSAgICBzZXJ2ZXIuc2VuZG1haWwoRlJPTV9FTUFJ
TCwgdG9fZW1haWxzLCBtc2cuYXNfc3RyaW5nKCkpCi0gICAgc2VydmVyLnF1aXQoKQotCi0KLWRl
ZiBzZW5kX2VtYWlsX3RvX3BhdGNoX2F1dGhvcihhdXRob3JfZW1haWwsIHN1YmplY3QsIHRleHQs
IHJlZmVyZW5jZT0nJyk6Ci0gICAgaWYgbm90IGF1dGhvcl9lbWFpbDoKLSAgICAgICAgcmV0dXJu
Ci0gICAgc2VuZF9lbWFpbChbJ2Fha2FzaF9qYWluQGFwcGxlLmNvbSddLCBzdWJqZWN0LCB0ZXh0
LCByZWZlcmVuY2UpCi0gICAgaWYgYXV0aG9yX2VtYWlsIGluIGdldF9lbWFpbF9pZHMoJ0VNQUlM
X0lEU19UT19VTlNVQlNDUklCRScpOgotICAgICAgICBwcmludCgnZW1haWwge30gaXMgaW4gdW5z
dWJzY3JpYmUgbGlzdCwgc2tpcHBpbmcgZW1haWwnLmZvcm1hdChhdXRob3JfZW1haWwpKQotICAg
ICAgICByZXR1cm4KLSAgICBzZW5kX2VtYWlsKFthdXRob3JfZW1haWxdLCBzdWJqZWN0LCB0ZXh0
LCByZWZlcmVuY2UpCi0KLQotZGVmIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKHN1YmplY3Qs
IHRleHQsIGJ1aWxkZXJfbmFtZSwgcmVmZXJlbmNlPScnKToKLSAgICBzZW5kX2VtYWlsKGdldF9l
bWFpbF9pZHMoJ0FQUExFX0JPVF9XQVRDSEVSU19FTUFJTFMnKSwgc3ViamVjdCwgdGV4dCwgcmVm
ZXJlbmNlKQotICAgIGlmIGFueShwYXR0ZXJuIGluIGJ1aWxkZXJfbmFtZS5sb3dlcigpIGZvciBw
YXR0ZXJuIGluIElHQUxJQV9KU0NfUVVFVUVTX1BBVFRFUk5TKToKLSAgICAgICAgc2VuZF9lbWFp
bChnZXRfZW1haWxfaWRzKCdJR0FMSUFfSlNDX1RFQU1fRU1BSUxTJyksIHN1YmplY3QsIHRleHQs
IHJlZmVyZW5jZSkKLSAgICBpZiBhbnkocGF0dGVybiBpbiBidWlsZGVyX25hbWUubG93ZXIoKSBm
b3IgcGF0dGVybiBpbiBJR0FMSUFfR1RLX1dQRV9RVUVVRVNfUEFUVEVSTlMpOgotICAgICAgICBz
ZW5kX2VtYWlsKGdldF9lbWFpbF9pZHMoJ0lHQUxJQV9HVEtfV1BFX0VNQUlMUycpLCBzdWJqZWN0
LCB0ZXh0LCByZWZlcmVuY2UpCkluZGV4OiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVp
bGQvc3RlcHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1
aWxkL3N0ZXBzLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9ld3MtYnVpbGQvc3RlcHMucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzMDY3ICswLDAgQEAKLSMg
Q29weXJpZ2h0IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LAotIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1mcm9tIGJ1aWxkYm90
LnBsdWdpbnMgaW1wb3J0IHN0ZXBzLCB1dGlsCi1mcm9tIGJ1aWxkYm90LnByb2Nlc3MgaW1wb3J0
IGJ1aWxkc3RlcCwgbG9nb2JzZXJ2ZXIsIHByb3BlcnRpZXMKLWZyb20gYnVpbGRib3QucHJvY2Vz
cy5yZXN1bHRzIGltcG9ydCBSZXN1bHRzLCBTVUNDRVNTLCBGQUlMVVJFLCBDQU5DRUxMRUQsIFdB
Uk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04sIFJFVFJZCi1mcm9tIGJ1aWxkYm90LnN0ZXBzIGlt
cG9ydCBtYXN0ZXIsIHNoZWxsLCB0cmFuc2ZlciwgdHJpZ2dlcgotZnJvbSBidWlsZGJvdC5zdGVw
cy5zb3VyY2UgaW1wb3J0IGdpdAotZnJvbSBidWlsZGJvdC5zdGVwcy53b3JrZXIgaW1wb3J0IENv
bXBvc2l0ZVN0ZXBNaXhpbgotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQotZnJvbSB0d2lzdGVk
LmludGVybmV0IGltcG9ydCBkZWZlcgotCi1mcm9tIGxheW91dF90ZXN0X2ZhaWx1cmVzIGltcG9y
dCBMYXlvdXRUZXN0RmFpbHVyZXMKLWZyb20gc2VuZF9lbWFpbCBpbXBvcnQgc2VuZF9lbWFpbF90
b19wYXRjaF9hdXRob3IsIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzCi0KLWltcG9ydCBqc29u
Ci1pbXBvcnQgcmUKLWltcG9ydCByZXF1ZXN0cwotaW1wb3J0IG9zCi0KLUJVR19TRVJWRVJfVVJM
ID0gJ2h0dHBzOi8vYnVncy53ZWJraXQub3JnLycKLVMzVVJMID0gJ2h0dHBzOi8vczMtdXMtd2Vz
dC0yLmFtYXpvbmF3cy5jb20vJwotUzNfUkVTVUxUU19VUkwgPSAnaHR0cHM6Ly9ld3MtYnVpbGQu
czMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vJwotRVdTX0JVSUxEX1VSTCA9ICdodHRwczovL2V3
cy1idWlsZC53ZWJraXQub3JnLycKLUVXU19VUkwgPSAnaHR0cHM6Ly9ld3Mud2Via2l0Lm9yZy8n
Ci1SRVNVTFRTX0RCX1VSTCA9ICdodHRwczovL3Jlc3VsdHMud2Via2l0Lm9yZy8nCi1XaXRoUHJv
cGVydGllcyA9IHByb3BlcnRpZXMuV2l0aFByb3BlcnRpZXMKLUludGVycG9sYXRlID0gcHJvcGVy
dGllcy5JbnRlcnBvbGF0ZQotCi0KLWNsYXNzIENvbmZpZ3VyZUJ1aWxkKGJ1aWxkc3RlcC5CdWls
ZFN0ZXApOgotICAgIG5hbWUgPSAnY29uZmlndXJlLWJ1aWxkJwotICAgIGRlc2NyaXB0aW9uID0g
Wydjb25maWd1cmluZyBidWlsZCddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydDb25maWd1cmVk
IGJ1aWxkJ10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwbGF0Zm9ybSwgY29uZmlndXJhdGlv
biwgYXJjaGl0ZWN0dXJlcywgYnVpbGRPbmx5LCB0cmlnZ2VycywgcmVtb3RlcywgYWRkaXRpb25h
bEFyZ3VtZW50cywgdHJpZ2dlcmVkX2J5PU5vbmUpOgotICAgICAgICBzdXBlcihDb25maWd1cmVC
dWlsZCwgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLnBsYXRmb3JtID0gcGxhdGZvcm0K
LSAgICAgICAgaWYgcGxhdGZvcm0gIT0gJ2pzYy1vbmx5JzoKLSAgICAgICAgICAgIHNlbGYucGxh
dGZvcm0gPSBwbGF0Zm9ybS5zcGxpdCgnLScsIDEpWzBdCi0gICAgICAgIHNlbGYuZnVsbFBsYXRm
b3JtID0gcGxhdGZvcm0KLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlv
bgotICAgICAgICBzZWxmLmFyY2hpdGVjdHVyZSA9ICcgJy5qb2luKGFyY2hpdGVjdHVyZXMpIGlm
IGFyY2hpdGVjdHVyZXMgZWxzZSBOb25lCi0gICAgICAgIHNlbGYuYnVpbGRPbmx5ID0gYnVpbGRP
bmx5Ci0gICAgICAgIHNlbGYudHJpZ2dlcnMgPSB0cmlnZ2VycwotICAgICAgICBzZWxmLnRyaWdn
ZXJlZF9ieSA9IHRyaWdnZXJlZF9ieQotICAgICAgICBzZWxmLnJlbW90ZXMgPSByZW1vdGVzCi0g
ICAgICAgIHNlbGYuYWRkaXRpb25hbEFyZ3VtZW50cyA9IGFkZGl0aW9uYWxBcmd1bWVudHMKLQot
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5wbGF0Zm9ybSBhbmQgc2VsZi5w
bGF0Zm9ybSAhPSAnKic6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScs
IHNlbGYucGxhdGZvcm0sICdjb25maWcuanNvbicpCi0gICAgICAgIGlmIHNlbGYuZnVsbFBsYXRm
b3JtIGFuZCBzZWxmLmZ1bGxQbGF0Zm9ybSAhPSAnKic6Ci0gICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmdWxsUGxhdGZvcm0nLCBzZWxmLmZ1bGxQbGF0Zm9ybSwgJ0NvbmZpZ3VyZUJ1aWxk
JykKLSAgICAgICAgaWYgc2VsZi5jb25maWd1cmF0aW9uOgotICAgICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIHNlbGYuY29uZmlndXJhdGlvbiwgJ2NvbmZpZy5qc29u
JykKLSAgICAgICAgaWYgc2VsZi5hcmNoaXRlY3R1cmU6Ci0gICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdhcmNoaXRlY3R1cmUnLCBzZWxmLmFyY2hpdGVjdHVyZSwgJ2NvbmZpZy5qc29uJykK
LSAgICAgICAgaWYgc2VsZi5idWlsZE9ubHk6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZE9ubHknLCBzZWxmLmJ1aWxkT25seSwgJ2NvbmZpZy5qc29uJykKLSAgICAgICAgaWYg
c2VsZi50cmlnZ2VycyBhbmQgbm90IHNlbGYuZ2V0UHJvcGVydHkoJ3RyaWdnZXJzJyk6Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd0cmlnZ2VycycsIHNlbGYudHJpZ2dlcnMsICdjb25m
aWcuanNvbicpCi0gICAgICAgIGlmIHNlbGYudHJpZ2dlcmVkX2J5OgotICAgICAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgndHJpZ2dlcmVkX2J5Jywgc2VsZi50cmlnZ2VyZWRfYnksICdjb25maWcu
anNvbicpCi0gICAgICAgIGlmIHNlbGYucmVtb3RlczoKLSAgICAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3JlbW90ZXMnLCBzZWxmLnJlbW90ZXMsICdjb25maWcuanNvbicpCi0gICAgICAgIGlm
IHNlbGYuYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2FkZGl0aW9uYWxBcmd1bWVudHMnLCBzZWxmLmFkZGl0aW9uYWxBcmd1bWVudHMsICdjb25maWcu
anNvbicpCi0KLSAgICAgICAgc2VsZi5hZGRfcGF0Y2hfaWRfdXJsKCkKLSAgICAgICAgc2VsZi5m
aW5pc2hlZChTVUNDRVNTKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0g
ICAgZGVmIGFkZF9wYXRjaF9pZF91cmwoc2VsZik6Ci0gICAgICAgIHBhdGNoX2lkID0gc2VsZi5n
ZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykKLSAgICAgICAgaWYgcGF0Y2hfaWQ6Ci0gICAgICAg
ICAgICBzZWxmLmFkZFVSTCgnUGF0Y2gge30nLmZvcm1hdChwYXRjaF9pZCksIEJ1Z3ppbGxhLnBh
dGNoX3VybChwYXRjaF9pZCkpCi0KLQotY2xhc3MgQ2hlY2tPdXRTb3VyY2UoZ2l0LkdpdCk6Ci0g
ICAgbmFtZSA9ICdjbGVhbi1hbmQtdXBkYXRlLXdvcmtpbmctZGlyZWN0b3J5JwotICAgIENIRUNL
T1VUX0RFTEFZX0FORF9NQVhfUkVUUklFU19QQUlSID0gKDAsIDIpCi0gICAgaGFsdE9uRmFpbHVy
ZSA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBz
ZWxmLnJlcG91cmwgPSAnaHR0cHM6Ly9naXQud2Via2l0Lm9yZy9naXQvV2ViS2l0LmdpdCcKLSAg
ICAgICAgc3VwZXIoQ2hlY2tPdXRTb3VyY2UsIHNlbGYpLl9faW5pdF9fKHJlcG91cmw9c2VsZi5y
ZXBvdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0cnk9c2VsZi5DSEVDS09VVF9ERUxBWV9BTkRfTUFYX1JFVFJJRVNfUEFJUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MiAqIDYwICog
NjAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHdh
eXNVc2VMYXRlc3Q9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXRob2Q9J2NsZWFuJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyZXNzPVRydWUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKLQotICAgIGRlZiBn
ZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gRkFJTFVS
RToKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtDbGVh
blVwR2l0SW5kZXhMb2NrKCldKQotCi0gICAgICAgIGlmIHNlbGYucmVzdWx0cyAhPSBTVUNDRVNT
OgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCB0byB1cGRhdGVkIHdvcmtp
bmcgZGlyZWN0b3J5J30KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVw
JzogdSdDbGVhbmVkIGFuZCB1cGRhdGVkIHdvcmtpbmcgZGlyZWN0b3J5J30KLQotCi1jbGFzcyBD
bGVhblVwR2l0SW5kZXhMb2NrKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICdjbGVh
bi1naXQtaW5kZXgtbG9jaycKLSAgICBjb21tYW5kID0gWydybScsICctZicsICcuZ2l0L2luZGV4
LmxvY2snXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnRGVsZXRlZCAuZ2l0L2luZGV4LmxvY2sn
XQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoQ2xl
YW5VcEdpdEluZGV4TG9jaywgc2VsZikuX19pbml0X18odGltZW91dD0yICogNjAsIGxvZ0Vudmly
b249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBwbGF0
Zm9ybSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJyonKQotICAgICAgICBpZiBwbGF0
Zm9ybSA9PSAnd2luY2Fpcm8nOgotICAgICAgICAgICAgc2VsZi5jb21tYW5kID0gWydkZWwnLCAn
LmdpdFxpbmRleC5sb2NrJ10KLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5zdGFy
dChzZWxmKQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICBz
ZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoWydHaXQgaXNzdWUsIHJldHJ5aW5nIGJ1aWxkJ10sIFJF
VFJZKQotICAgICAgICByZXR1cm4gc3VwZXIoQ2xlYW5VcEdpdEluZGV4TG9jaywgc2VsZikuZXZh
bHVhdGVDb21tYW5kKGNtZCkKLQotCi1jbGFzcyBDaGVja091dFNwZWNpZmljUmV2aXNpb24oc2hl
bGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2NoZWNrb3V0LXNwZWNpZmljLXJldmlzaW9u
JwotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQ2hlY2tlZCBvdXQgcmVxdWlyZWQgcmV2aXNpb24n
XQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLSAgICBoYWx0T25GYWlsdXJlID0gRmFsc2UK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKENoZWNr
T3V0U3BlY2lmaWNSZXZpc2lvbiwgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxzZSwgKipr
d2FyZ3MpCi0KLSAgICBkZWYgZG9TdGVwSWYoc2VsZiwgc3RlcCk6Ci0gICAgICAgIHJldHVybiBz
ZWxmLmdldFByb3BlcnR5KCdld3NfcmV2aXNpb24nLCBGYWxzZSkKLQotICAgIGRlZiBoaWRlU3Rl
cElmKHNlbGYsIHJlc3VsdHMsIHN0ZXApOgotICAgICAgICByZXR1cm4gbm90IHNlbGYuZG9TdGVw
SWYoc3RlcCkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRDb21tYW5k
KFsnZ2l0JywgJ2NoZWNrb3V0Jywgc2VsZi5nZXRQcm9wZXJ0eSgnZXdzX3JldmlzaW9uJyldKQot
ICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLnN0YXJ0KHNlbGYpCi0KLQotY2xhc3Mg
Q2xlYW5Xb3JraW5nRGlyZWN0b3J5KHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICdj
bGVhbi13b3JraW5nLWRpcmVjdG9yeScKLSAgICBkZXNjcmlwdGlvbiA9IFsnY2xlYW4td29ya2lu
Zy1kaXJlY3RvcnkgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydDbGVhbmVkIHdv
cmtpbmcgZGlyZWN0b3J5J10KLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLSAgICBoYWx0T25G
YWlsdXJlID0gVHJ1ZQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL2Ns
ZWFuLXdlYmtpdCddCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAg
ICBzdXBlcihDbGVhbldvcmtpbmdEaXJlY3RvcnksIHNlbGYpLl9faW5pdF9fKGxvZ0Vudmlyb249
RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBwbGF0Zm9y
bSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BsYXRmb3JtJykKLSAgICAgICAgaWYgcGxhdGZvcm0gaW4g
KCdndGsnLCAnd3BlJyk6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5k
ICsgWyctLWtlZXAtamhidWlsZC1kaXJlY3RvcnknXSkKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNo
ZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0KLWNsYXNzIFVwZGF0ZVdvcmtpbmdEaXJlY3Rvcnko
c2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3VwZGF0ZS13b3JraW5nLWRpcmVjdG9y
eScKLSAgICBkZXNjcmlwdGlvbiA9IFsndXBkYXRlLXdvcmtyaW5nLWRpcmVjdG9yeSBydW5uaW5n
J10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnknXQot
ICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVlCi0gICAg
Y29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQnXQotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoVXBkYXRlV29ya2lu
Z0RpcmVjdG9yeSwgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0K
LQotY2xhc3MgQXBwbHlQYXRjaChzaGVsbC5TaGVsbENvbW1hbmQsIENvbXBvc2l0ZVN0ZXBNaXhp
bik6Ci0gICAgbmFtZSA9ICdhcHBseS1wYXRjaCcKLSAgICBkZXNjcmlwdGlvbiA9IFsnYXBwbHlp
bmctcGF0Y2gnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnQXBwbGllZCBwYXRjaCddCi0gICAg
aGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3Jp
cHRzL3N2bi1hcHBseScsICctLWZvcmNlJywgJy5idWlsZGJvdC1kaWZmJ10KLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKEFwcGx5UGF0Y2gsIHNlbGYp
Ll9faW5pdF9fKHRpbWVvdXQ9MTAgKiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0K
LSAgICBkZWYgX2dldF9wYXRjaChzZWxmKToKLSAgICAgICAgc291cmNlc3RhbXAgPSBzZWxmLmJ1
aWxkLmdldFNvdXJjZVN0YW1wKHNlbGYuZ2V0UHJvcGVydHkoJ2NvZGViYXNlJywgJycpKQotICAg
ICAgICBpZiBub3Qgc291cmNlc3RhbXAgb3Igbm90IHNvdXJjZXN0YW1wLnBhdGNoOgotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHNvdXJjZXN0YW1wLnBhdGNoWzFdCi0K
LSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHBhdGNoID0gc2VsZi5fZ2V0X3BhdGNoKCkK
LSAgICAgICAgaWYgbm90IHBhdGNoOgotICAgICAgICAgICAgc2VsZi5maW5pc2hlZChGQUlMVVJF
KQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBwYXRjaF9yZXZpZXdlcl9uYW1l
ID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfcmV2aWV3ZXJfZnVsbF9uYW1lJywgJycpCi0gICAg
ICAgIGlmIHBhdGNoX3Jldmlld2VyX25hbWU6Ci0gICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXh0
ZW5kKFsnLS1yZXZpZXdlcicsIHBhdGNoX3Jldmlld2VyX25hbWVdKQotICAgICAgICBkID0gc2Vs
Zi5kb3dubG9hZEZpbGVDb250ZW50VG9Xb3JrZXIoJy5idWlsZGJvdC1kaWZmJywgcGF0Y2gpCi0g
ICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczogc2hlbGwuU2hlbGxDb21tYW5kLnN0YXJ0
KHNlbGYpKQotCi0gICAgZGVmIGhpZGVTdGVwSWYoc2VsZiwgcmVzdWx0cywgc3RlcCk6Ci0gICAg
ICAgIHJldHVybiByZXN1bHRzID09IFNVQ0NFU1MgYW5kIHNlbGYuZ2V0UHJvcGVydHkoJ3NlbnNp
dGl2ZScsIEZhbHNlKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAg
IGlmIHNlbGYucmVzdWx0cyAhPSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAn
OiB1J3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkgcGF0Y2ggdG8gdHJ1bmsnfQotICAgICAgICBy
ZXR1cm4gc3VwZXIoQXBwbHlQYXRjaCwgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0KLSAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuU2hlbGxD
b21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAgIHBhdGNoX2lkID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykKLSAgICAgICAgaWYgcmMgPT0gRkFJTFVSRToK
LSAgICAgICAgICAgIG1lc3NhZ2UgPSAnVG9vbHMvU2NyaXB0cy9zdm4tYXBwbHkgZmFpbGVkIHRv
IGFwcGx5IHBhdGNoIHt9IHRvIHRydW5rJy5mb3JtYXQocGF0Y2hfaWQpCi0gICAgICAgICAgICBp
ZiBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKS5sb3dlcigpID09ICdjb21taXQt
cXVldWUnOgotICAgICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9ICd7fS5cblBsZWFzZSByZXNv
bHZlIHRoZSBjb25mbGljdHMgYW5kIHVwbG9hZCBhIG5ldyBwYXRjaC4nLmZvcm1hdChtZXNzYWdl
LnJlcGxhY2UoJ3BhdGNoJywgJ2F0dGFjaG1lbnQnKSkKLSAgICAgICAgICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBjb21tZW50X3RleHQpCi0gICAgICAg
ICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknLCBtZXNzYWdl
KQotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtD
b21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNoKCldKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21l
c3NhZ2VdLCBGQUlMVVJFKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBDaGVja1BhdGNo
UmVsZXZhbmNlKGJ1aWxkc3RlcC5CdWlsZFN0ZXApOgotICAgIG5hbWUgPSAnY2hlY2stcGF0Y2gt
cmVsZXZhbmNlJwotICAgIGRlc2NyaXB0aW9uID0gWydjaGVjay1wYXRjaC1yZWxldmFuY2UgcnVu
bmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydQYXRjaCBjb250YWlucyByZWxldmFudCBj
aGFuZ2VzJ10KLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLSAgICBoYWx0T25GYWlsdXJlID0g
VHJ1ZQotCi0gICAgYmluZGluZ3NfcGF0aHMgPSBbCi0gICAgICAgICdTb3VyY2UvV2ViQ29yZScs
Ci0gICAgICAgICdUb29scycsCi0gICAgXQotCi0gICAgc2VydmljZXNfcGF0aHMgPSBbCi0gICAg
ICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZycsCi0g
ICAgICAgICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQnLAotICAgICAgICAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvU2hhcmVkJywKLSAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvbGli
cmFyaWVzL3Jlc3VsdHNkYnB5JywKLSAgICBdCi0KLSAgICBqc2NfcGF0aHMgPSBbCi0gICAgICAg
ICdKU1Rlc3RzLycsCi0gICAgICAgICdTb3VyY2UvSmF2YVNjcmlwdENvcmUvJywKLSAgICAgICAg
J1NvdXJjZS9XVEYvJywKLSAgICAgICAgJ1NvdXJjZS9ibWFsbG9jLycsCi0gICAgICAgICdNYWtl
ZmlsZScsCi0gICAgICAgICdNYWtlZmlsZS5zaGFyZWQnLAotICAgICAgICAnU291cmNlL01ha2Vm
aWxlJywKLSAgICAgICAgJ1NvdXJjZS9NYWtlZmlsZS5zaGFyZWQnLAotICAgICAgICAnVG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9idWlsZC1qc2Mn
LAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy8nLAotICAg
ICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tanNjJywKLSAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWpzYy1iZW5jaG1hcmtzJywKLSAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3Mt
dGVzdHMnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMn
LAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4tbGF5b3V0LWpzYycsCi0gICAgICAgICdUb29s
cy9TY3JpcHRzL3VwZGF0ZS1qYXZhc2NyaXB0Y29yZS10ZXN0LXJlc3VsdHMnLAotICAgICAgICAn
VG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtJywKLSAgICBdCi0KLSAgICB3azFfcGF0aHMgPSBb
Ci0gICAgICAgICdTb3VyY2UvV2ViS2l0TGVnYWN5JywKLSAgICAgICAgJ1NvdXJjZS9XZWJDb3Jl
JywKLSAgICAgICAgJ1NvdXJjZS9XZWJJbnNwZWN0b3JVSScsCi0gICAgICAgICdTb3VyY2UvV2Vi
RHJpdmVyJywKLSAgICAgICAgJ1NvdXJjZS9XVEYnLAotICAgICAgICAnU291cmNlL2JtYWxsb2Mn
LAotICAgICAgICAnU291cmNlL0phdmFTY3JpcHRDb3JlJywKLSAgICAgICAgJ1NvdXJjZS9UaGly
ZFBhcnR5JywKLSAgICAgICAgJ0xheW91dFRlc3RzJywKLSAgICAgICAgJ1Rvb2xzJywKLSAgICBd
Ci0KLSAgICBiaWdfc3VyX2J1aWxkZXJfcGF0aHMgPSBbCi0gICAgICAgICdTb3VyY2UvJywKLSAg
ICAgICAgJ1Rvb2xzLycsCi0gICAgXQotICAgIHdlYmtpdHB5X3BhdGhzID0gWwotICAgICAgICAn
VG9vbHMvU2NyaXB0cy93ZWJraXRweScsCi0gICAgICAgICdUb29scy9TY3JpcHRzL2xpYnJhcmll
cycsCi0gICAgXQotCi0gICAgZ3JvdXBfdG9fcGF0aHNfbWFwcGluZyA9IHsKLSAgICAgICAgJ2Jp
bmRpbmdzJzogYmluZGluZ3NfcGF0aHMsCi0gICAgICAgICdiaWdzdXItcmVsZWFzZS1idWlsZCc6
IGJpZ19zdXJfYnVpbGRlcl9wYXRocywKLSAgICAgICAgJ3NlcnZpY2VzLWV3cyc6IHNlcnZpY2Vz
X3BhdGhzLAotICAgICAgICAnanNjJzoganNjX3BhdGhzLAotICAgICAgICAnd2Via2l0cHknOiB3
ZWJraXRweV9wYXRocywKLSAgICAgICAgJ3drMS10ZXN0cyc6IHdrMV9wYXRocywKLSAgICAgICAg
J3dpbmRvd3MnOiB3azFfcGF0aHMsCi0gICAgfQotCi0gICAgZGVmIF9wYXRjaF9pc19yZWxldmFu
dChzZWxmLCBwYXRjaCwgYnVpbGRlck5hbWUpOgotICAgICAgICBncm91cCA9IFtncm91cCBmb3Ig
Z3JvdXAgaW4gc2VsZi5ncm91cF90b19wYXRoc19tYXBwaW5nLmtleXMoKSBpZiBncm91cC5sb3dl
cigpIGluIGJ1aWxkZXJOYW1lLmxvd2VyKCldCi0gICAgICAgIGlmIG5vdCBncm91cDoKLSAgICAg
ICAgICAgICMgVGhpcyBidWlsZGVyIGRvZXNuJ3QgaGF2ZSBwYXRocyBkZWZpbmVkLCBhbGwgcGF0
Y2hlcyBhcmUgcmVsZXZhbnQuCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHJl
bGV2YW50X3BhdGhzID0gc2VsZi5ncm91cF90b19wYXRoc19tYXBwaW5nW2dyb3VwWzBdXQotCi0g
ICAgICAgIGZvciBjaGFuZ2UgaW4gcGF0Y2guc3BsaXRsaW5lcygpOgotICAgICAgICAgICAgZm9y
IHBhdGggaW4gcmVsZXZhbnRfcGF0aHM6Ci0gICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHBh
dGgsIGNoYW5nZSwgcmUuSUdOT1JFQ0FTRSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBU
cnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIF9nZXRfcGF0Y2goc2VsZik6Ci0g
ICAgICAgIHNvdXJjZXN0YW1wID0gc2VsZi5idWlsZC5nZXRTb3VyY2VTdGFtcChzZWxmLmdldFBy
b3BlcnR5KCdjb2RlYmFzZScsICcnKSkKLSAgICAgICAgaWYgbm90IHNvdXJjZXN0YW1wIG9yIG5v
dCBzb3VyY2VzdGFtcC5wYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJl
dHVybiBzb3VyY2VzdGFtcC5wYXRjaFsxXQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwot
ICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBL
ZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0g
ICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgcGF0Y2ggPSBzZWxmLl9nZXRfcGF0Y2goKQotICAgICAgICBpZiBub3QgcGF0Y2g6Ci0g
ICAgICAgICAgICAjIFRoaXMgYnVpbGQgZG9lc24ndCBoYXZlIGEgcGF0Y2gsIGl0IG1pZ2h0IGJl
IGEgZm9yY2UgYnVpbGQuCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlmIHNlbGYuX3BhdGNoX2lzX3JlbGV2YW50
KHBhdGNoLCBzZWxmLmdldFByb3BlcnR5KCdidWlsZGVybmFtZScsICcnKSk6Ci0gICAgICAgICAg
ICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVGhpcyBwYXRjaCBjb250YWlucyByZWxldmFudCBj
aGFuZ2VzLicpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdUaGlzIHBh
dGNoIGRvZXMgbm90IGhhdmUgcmVsZXZhbnQgY2hhbmdlcy4nKQotICAgICAgICBzZWxmLmZpbmlz
aGVkKEZBSUxVUkUpCi0gICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNLSVBQRUQKLSAgICAg
ICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFsnUGF0Y2gge30gZG9lc25cJ3QgaGF2ZSByZWxl
dmFudCBjaGFuZ2VzJy5mb3JtYXQoc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykpXSwg
U0tJUFBFRCkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gRkFJTFVSRToKLSAgICAgICAgICAg
IHJldHVybiB7dSdzdGVwJzogdSdQYXRjaCBkb2VzblwndCBoYXZlIHJlbGV2YW50IGNoYW5nZXMn
fQotICAgICAgICByZXR1cm4gc3VwZXIoQ2hlY2tQYXRjaFJlbGV2YW5jZSwgc2VsZikuZ2V0UmVz
dWx0U3VtbWFyeSgpCi0KLQotY2xhc3MgQnVnemlsbGEob2JqZWN0KToKLSAgICBAY2xhc3NtZXRo
b2QKLSAgICBkZWYgYnVnX3VybChjbHMsIGJ1Z19pZCk6Ci0gICAgICAgIGlmIG5vdCBidWdfaWQ6
Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJuICd7fXNob3dfYnVnLmNnaT9p
ZD17fScuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBidWdfaWQpCi0KLSAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgcGF0Y2hfdXJsKGNscywgcGF0Y2hfaWQpOgotICAgICAgICBpZiBub3QgcGF0Y2hf
aWQ6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgcmV0dXJuICd7fWF0dGFjaG1lbnQu
Y2dpP2lkPXt9JmFjdGlvbj1wcmV0dHlwYXRjaCcuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBwYXRj
aF9pZCkKLQotCi1jbGFzcyBCdWd6aWxsYU1peGluKG9iamVjdCk6Ci0gICAgYWRkVVJMcyA9IEZh
bHNlCi0gICAgYnVnX29wZW5fc3RhdHVzZXMgPSBbJ1VOQ09ORklSTUVEJywgJ05FVycsICdBU1NJ
R05FRCcsICdSRU9QRU5FRCddCi0gICAgYnVnX2Nsb3NlZF9zdGF0dXNlcyA9IFsnUkVTT0xWRUQn
LCAnVkVSSUZJRUQnLCAnQ0xPU0VEJ10KLSAgICByZXZlcnRfcHJlYW1ibGUgPSAnUkVWRVJUIG9m
IHInCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIF9hZGRUb0xvZyhzZWxm
LCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9nID0gc2Vs
Zi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAg
bG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAgbG9nLmFkZFN0ZG91dCht
ZXNzYWdlKQotCi0gICAgZGVmIGZldGNoX2RhdGFfZnJvbV91cmxfd2l0aF9hdXRoZW50aWNhdGlv
bihzZWxmLCB1cmwpOgotICAgICAgICByZXNwb25zZSA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5nZXQodXJsLCBwYXJhbXM9eydCdWd6aWxsYV9h
cGlfa2V5Jzogc2VsZi5nZXRfYnVnemlsbGFfYXBpX2tleSgpfSkKLSAgICAgICAgICAgIGlmIHJl
c3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xv
Zygnc3RkaW8nLCAnQWNjZXNzZWQge3VybH0gd2l0aCB1bmV4cGVjdGVkIHN0YXR1cyBjb2RlIHtz
dGF0dXNfY29kZX0uXG4nLmZvcm1hdCh1cmw9dXJsLCBzdGF0dXNfY29kZT1yZXNwb25zZS5zdGF0
dXNfY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgIyBDYXRjaGluZyBhbGwgZXhjZXB0aW9ucyBoZXJl
IHRvIHNhZmVndWFyZCBhcGkga2V5LgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlv
JywgJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH0uXG4nLmZvcm1hdCh1cmw9dXJsKSkKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIGZldGNo
X2RhdGFfZnJvbV91cmwoc2VsZiwgdXJsKToKLSAgICAgICAgcmVzcG9uc2UgPSBOb25lCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMuZ2V0KHVybCkKLSAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgcmVzcG9uc2U6Ci0gICAg
ICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge3Vy
bH0gd2l0aCBzdGF0dXMgY29kZSB7c3RhdHVzX2NvZGV9LlxuJy5mb3JtYXQodXJsPXVybCwgc3Rh
dHVzX2NvZGU9cmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnRmFpbGVkIHRvIGFjY2VzcyB7dXJs
fSB3aXRoIGV4Y2VwdGlvbjoge2V4Y2VwdGlvbn1cbicuZm9ybWF0KHVybD11cmwsIGV4Y2VwdGlv
bj1lKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1
c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdBY2Nl
c3NlZCB7dXJsfSB3aXRoIHVuZXhwZWN0ZWQgc3RhdHVzIGNvZGUge3N0YXR1c19jb2RlfS5cbicu
Zm9ybWF0KHVybD11cmwsIHN0YXR1c19jb2RlPXJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIGdl
dF9wYXRjaF9qc29uKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0Y2hfdXJsID0gJ3t9cmVz
dC9idWcvYXR0YWNobWVudC97fScuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBwYXRjaF9pZCkKLSAg
ICAgICAgcGF0Y2ggPSBzZWxmLmZldGNoX2RhdGFfZnJvbV91cmxfd2l0aF9hdXRoZW50aWNhdGlv
bihwYXRjaF91cmwpCi0gICAgICAgIGlmIG5vdCBwYXRjaDoKLSAgICAgICAgICAgIHJldHVybiBO
b25lCi0gICAgICAgIHBhdGNoX2pzb24gPSBwYXRjaC5qc29uKCkuZ2V0KCdhdHRhY2htZW50cycp
Ci0gICAgICAgIGlmIG5vdCBwYXRjaF9qc29uIG9yIGxlbihwYXRjaF9qc29uKSA9PSAwOgotICAg
ICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIHBhdGNoX2pzb24uZ2V0KHN0cihw
YXRjaF9pZCkpCi0KLSAgICBkZWYgZ2V0X2J1Z19qc29uKHNlbGYsIGJ1Z19pZCk6Ci0gICAgICAg
IGJ1Z191cmwgPSAne31yZXN0L2J1Zy97fScuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBidWdfaWQp
Ci0gICAgICAgIGJ1ZyA9IHNlbGYuZmV0Y2hfZGF0YV9mcm9tX3VybF93aXRoX2F1dGhlbnRpY2F0
aW9uKGJ1Z191cmwpCi0gICAgICAgIGlmIG5vdCBidWc6Ci0gICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICBidWdzX2pzb24gPSBidWcuanNvbigpLmdldCgnYnVncycpCi0gICAgICAgIGlm
IG5vdCBidWdzX2pzb24gb3IgbGVuKGJ1Z3NfanNvbikgPT0gMDoKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgIHJldHVybiBidWdzX2pzb25bMF0KLQotICAgIGRlZiBnZXRfYnVnX2lk
X2Zyb21fcGF0Y2goc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF9qc29uID0gc2VsZi5n
ZXRfcGF0Y2hfanNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYgbm90IHBhdGNoX2pzb246Ci0gICAg
ICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRvIGZldGNoIHBhdGNoIHt9
LlxuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0gICAgICAgIHJl
dHVybiBwYXRjaF9qc29uLmdldCgnYnVnX2lkJykKLQotICAgIGRlZiBfaXNfcGF0Y2hfb2Jzb2xl
dGUoc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF9qc29uID0gc2VsZi5nZXRfcGF0Y2hf
anNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYgbm90IHBhdGNoX2pzb246Ci0gICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRvIGZldGNoIHBhdGNoIHt9LlxuJy5mb3Jt
YXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgaWYgc3RyKHBh
dGNoX2pzb24uZ2V0KCdpZCcpKSAhPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKToK
LSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdGZXRjaGVkIHBhdGNoIGlkIHt9
IGRvZXMgbm90IG1hdGNoIHdpdGggcmVxdWVzdGVkIHBhdGNoIGlkIHt9LiBVbmFibGUgdG8gdmFs
aWRhdGUuXG4nLmZvcm1hdChwYXRjaF9qc29uLmdldCgnaWQnKSwgc2VsZi5nZXRQcm9wZXJ0eSgn
cGF0Y2hfaWQnLCAnJykpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAgcGF0Y2hf
YXV0aG9yID0gcGF0Y2hfanNvbi5nZXQoJ2NyZWF0b3InKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdwYXRjaF9hdXRob3InLCBwYXRjaF9hdXRob3IpCi0gICAgICAgIHBhdGNoX3RpdGxlID0g
cGF0Y2hfanNvbi5nZXQoJ3N1bW1hcnknKQotICAgICAgICBpZiBwYXRjaF90aXRsZS5zdGFydHN3
aXRoKHNlbGYucmV2ZXJ0X3ByZWFtYmxlKToKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3JldmVydCcsIFRydWUpCi0gICAgICAgIGlmIHNlbGYuYWRkVVJMczoKLSAgICAgICAgICAgIHNl
bGYuYWRkVVJMKCdQYXRjaCBieToge30nLmZvcm1hdChwYXRjaF9hdXRob3IpLCAnJykKLSAgICAg
ICAgcmV0dXJuIHBhdGNoX2pzb24uZ2V0KCdpc19vYnNvbGV0ZScpCi0KLSAgICBkZWYgX2lzX3Bh
dGNoX3Jldmlld19kZW5pZWQoc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF9qc29uID0g
c2VsZi5nZXRfcGF0Y2hfanNvbihwYXRjaF9pZCkKLSAgICAgICAgaWYgbm90IHBhdGNoX2pzb246
Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRvIGZldGNoIHBh
dGNoIHt9LlxuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAg
ICAgICAgZm9yIGZsYWcgaW4gcGF0Y2hfanNvbi5nZXQoJ2ZsYWdzJywgW10pOgotICAgICAgICAg
ICAgaWYgZmxhZy5nZXQoJ25hbWUnKSA9PSAncmV2aWV3JyBhbmQgZmxhZy5nZXQoJ3N0YXR1cycp
ID09ICctJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICByZXR1cm4gMAotCi0g
ICAgZGVmIF9pc19wYXRjaF9jcV9wbHVzKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0Y2hf
anNvbiA9IHNlbGYuZ2V0X3BhdGNoX2pzb24ocGF0Y2hfaWQpCi0gICAgICAgIGlmIG5vdCBwYXRj
aF9qc29uOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1VuYWJsZSB0byBm
ZXRjaCBwYXRjaCB7fS5cbicuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJldHVybiAt
MQotCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24uZ2V0KCdmbGFncycsIFtdKToKLSAg
ICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ2NvbW1pdC1xdWV1ZScgYW5kIGZsYWcu
Z2V0KCdzdGF0dXMnKSA9PSAnKyc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
cGF0Y2hfY29tbWl0dGVyJywgZmxhZy5nZXQoJ3NldHRlcicsICcnKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gMQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVmIF9kb2VzX3BhdGNoX2hhdmVf
YWNjZXB0YWJsZV9yZXZpZXdfZmxhZyhzZWxmLCBwYXRjaF9pZCk6Ci0gICAgICAgIHBhdGNoX2pz
b24gPSBzZWxmLmdldF9wYXRjaF9qc29uKHBhdGNoX2lkKQotICAgICAgICBpZiBub3QgcGF0Y2hf
anNvbjoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdVbmFibGUgdG8gZmV0
Y2ggcGF0Y2gge30uXG4nLmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gLTEK
LQotICAgICAgICBmb3IgZmxhZyBpbiBwYXRjaF9qc29uLmdldCgnZmxhZ3MnLCBbXSk6Ci0gICAg
ICAgICAgICBpZiBmbGFnLmdldCgnbmFtZScpID09ICdyZXZpZXcnOgotICAgICAgICAgICAgICAg
IHJldmlld19zdGF0dXMgPSBmbGFnLmdldCgnc3RhdHVzJykKLSAgICAgICAgICAgICAgICBpZiBy
ZXZpZXdfc3RhdHVzID09ICcrJzoKLSAgICAgICAgICAgICAgICAgICAgcGF0Y2hfcmV2aWV3ZXIg
PSBmbGFnLmdldCgnc2V0dGVyJywgJycpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3BhdGNoX3Jldmlld2VyJywgcGF0Y2hfcmV2aWV3ZXIpCi0gICAgICAgICAgICAgICAg
ICAgIGlmIHNlbGYuYWRkVVJMczoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRkVVJM
KCdSZXZpZXdlZCBieToge30nLmZvcm1hdChwYXRjaF9yZXZpZXdlciksICcnKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgICAgIGlmIHJldmlld19zdGF0dXMgaW4g
WyctJywgJz8nXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywg
J1BhdGNoIHt9IGlzIG1hcmtlZCBye30uXG4nLmZvcm1hdChwYXRjaF9pZCwgcmV2aWV3X3N0YXR1
cykpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIHJldHVybiAxICAjIFBh
dGNoIHdpdGhvdXQgcmV2aWV3IGZsYWcgaXMgYWNjZXB0YWJsZSwgc2luY2UgdGhlIENoYW5nZUxv
ZyBtaWdodCBoYXZlICdSZXZpZXdlZCBieScgaW4gaXQuCi0KLSAgICBkZWYgX2lzX2J1Z19jbG9z
ZWQoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgaWYgbm90IGJ1Z19pZDoKLSAgICAgICAgICAgIHNl
bGYuX2FkZFRvTG9nKCdzdGRpbycsICdTa2lwcGluZyBidWcgc3RhdHVzIHZhbGlkYXRpb24gc2lu
Y2UgYnVnIGlkIGlzIE5vbmUuXG4nKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAg
YnVnX2pzb24gPSBzZWxmLmdldF9idWdfanNvbihidWdfaWQpCi0gICAgICAgIGlmIG5vdCBidWdf
anNvbiBvciBub3QgYnVnX2pzb24uZ2V0KCdzdGF0dXMnKToKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZFRvTG9nKCdzdGRpbycsICdVbmFibGUgdG8gZmV0Y2ggYnVnIHt9LlxuJy5mb3JtYXQoYnVnX2lk
KSkKLSAgICAgICAgICAgIHJldHVybiAtMQotCi0gICAgICAgIGJ1Z190aXRsZSA9IGJ1Z19qc29u
LmdldCgnc3VtbWFyeScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1Z190aXRsZScsIGJ1
Z190aXRsZSkKLSAgICAgICAgc2Vuc2l0aXZlID0gYnVnX2pzb24uZ2V0KCdwcm9kdWN0JykgPT0g
J1NlY3VyaXR5JwotICAgICAgICBpZiBzZW5zaXRpdmU6Ci0gICAgICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdzZW5zaXRpdmUnLCBUcnVlKQotICAgICAgICAgICAgYnVnX3RpdGxlID0gJycKLSAg
ICAgICAgaWYgc2VsZi5hZGRVUkxzOgotICAgICAgICAgICAgc2VsZi5hZGRVUkwodSdCdWcge30g
e30nLmZvcm1hdChidWdfaWQsIGJ1Z190aXRsZSksIEJ1Z3ppbGxhLmJ1Z191cmwoYnVnX2lkKSkK
LSAgICAgICAgaWYgYnVnX2pzb24uZ2V0KCdzdGF0dXMnKSBpbiBzZWxmLmJ1Z19jbG9zZWRfc3Rh
dHVzZXM6Ci0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICByZXR1cm4gMAotCi0gICAgZGVm
IHNob3VsZF9zZW5kX2VtYWlsKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0Y2hfanNvbiA9
IHNlbGYuZ2V0X3BhdGNoX2pzb24ocGF0Y2hfaWQpCi0gICAgICAgIGlmIG5vdCBwYXRjaF9qc29u
OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1VuYWJsZSB0byBmZXRjaCBw
YXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAg
ICAgICAgb2Jzb2xldGUgPSBwYXRjaF9qc29uLmdldCgnaXNfb2Jzb2xldGUnKQotICAgICAgICBp
ZiBvYnNvbGV0ZSA9PSAxOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1Nr
aXBwaW5nIGVtYWlsIHNpbmNlIHBhdGNoIHt9IGlzIG9ic29sZXRlJy5mb3JtYXQocGF0Y2hfaWQp
KQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV2aWV3X2RlbmllZCA9IEZh
bHNlCi0gICAgICAgIGZvciBmbGFnIGluIHBhdGNoX2pzb24uZ2V0KCdmbGFncycsIFtdKToKLSAg
ICAgICAgICAgIGlmIGZsYWcuZ2V0KCduYW1lJykgPT0gJ3JldmlldycgYW5kIGZsYWcuZ2V0KCdz
dGF0dXMnKSA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgcmV2aWV3X2RlbmllZCA9IFRydWUKLQot
ICAgICAgICBpZiByZXZpZXdfZGVuaWVkOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0
ZGlvJywgJ1NraXBwaW5nIGVtYWlsIHNpbmNlIHBhdGNoIHt9IGlzIG1hcmtlZCByLScuZm9ybWF0
KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1
ZQotCi0gICAgZGVmIGdldF9idWd6aWxsYV9hcGlfa2V5KHNlbGYpOgotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBwYXNzd29yZHMgPSBqc29uLmxvYWQob3BlbigncGFzc3dvcmRzLmpzb24nKSkK
LSAgICAgICAgICAgIHJldHVybiBwYXNzd29yZHMuZ2V0KCdCVUdaSUxMQV9BUElfS0VZJywgJycp
Ci0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHByaW50KCdFcnJvciBpbiByZWFkaW5nIEJ1
Z3ppbGxhIGFwaSBrZXknKQotICAgICAgICAgICAgcmV0dXJuICcnCi0KLSAgICBkZWYgcmVtb3Zl
X2ZsYWdzX29uX3BhdGNoKHNlbGYsIHBhdGNoX2lkKToKLSAgICAgICAgcGF0Y2hfdXJsID0gJ3t9
cmVzdC9idWcvYXR0YWNobWVudC97fScuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBwYXRjaF9pZCkK
LSAgICAgICAgZmxhZ3MgPSBbeyduYW1lJzogJ3JldmlldycsICdzdGF0dXMnOiAnWCd9LCB7J25h
bWUnOiAnY29tbWl0LXF1ZXVlJywgJ3N0YXR1cyc6ICdYJ31dCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucHV0KHBhdGNoX3VybCwganNvbj17J2ZsYWdzJzog
ZmxhZ3MsICdCdWd6aWxsYV9hcGlfa2V5Jzogc2VsZi5nZXRfYnVnemlsbGFfYXBpX2tleSgpfSkK
LSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIG5vdCBpbiBbMjAwLCAyMDFdOgot
ICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdVbmFibGUgdG8gcmVtb3Zl
IGZsYWdzIG9uIHBhdGNoIHt9LiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgZnJvbSBidWd6aWxs
YToge30nLmZvcm1hdChwYXRjaF9pZCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICAg
ICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAg
ICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdFcnJvciBpbiByZW1vdmluZyBmbGFn
cyBvbiBQYXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKSkKLSAgICAgICAgICAgIHJldHVybiBGQUlM
VVJFCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBkZWYgc2V0X2NxX21pbnVzX2ZsYWdf
b25fcGF0Y2goc2VsZiwgcGF0Y2hfaWQpOgotICAgICAgICBwYXRjaF91cmwgPSAne31yZXN0L2J1
Zy9hdHRhY2htZW50L3t9Jy5mb3JtYXQoQlVHX1NFUlZFUl9VUkwsIHBhdGNoX2lkKQotICAgICAg
ICBmbGFncyA9IFt7J25hbWUnOiAnY29tbWl0LXF1ZXVlJywgJ3N0YXR1cyc6ICctJ31dCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdHMucHV0KHBhdGNoX3VybCwg
anNvbj17J2ZsYWdzJzogZmxhZ3MsICdCdWd6aWxsYV9hcGlfa2V5Jzogc2VsZi5nZXRfYnVnemls
bGFfYXBpX2tleSgpfSkKLSAgICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlIG5vdCBp
biBbMjAwLCAyMDFdOgotICAgICAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdV
bmFibGUgdG8gc2V0IGNxLSBmbGFnIG9uIHBhdGNoIHt9LiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNv
ZGUgZnJvbSBidWd6aWxsYToge30nLmZvcm1hdChwYXRjaF9pZCwgcmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdFcnJvciBp
biBzZXR0aW5nIGNxLSBmbGFnIG9uIHBhdGNoIHt9Jy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAg
ICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAgICAgcmV0dXJuIFNVQ0NFU1MKLQotICAgIGRlZiBj
bG9zZV9idWcoc2VsZiwgYnVnX2lkKToKLSAgICAgICAgYnVnX3VybCA9ICd7fXJlc3QvYnVnL3t9
Jy5mb3JtYXQoQlVHX1NFUlZFUl9VUkwsIGJ1Z19pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcmVzcG9uc2UgPSByZXF1ZXN0cy5wdXQoYnVnX3VybCwganNvbj17J3N0YXR1cyc6ICdSRVNP
TFZFRCcsICdyZXNvbHV0aW9uJzogJ0ZJWEVEJywgJ0J1Z3ppbGxhX2FwaV9rZXknOiBzZWxmLmdl
dF9idWd6aWxsYV9hcGlfa2V5KCl9KQotICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzX2Nv
ZGUgbm90IGluIFsyMDAsIDIwMV06Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0
ZGlvJywgJ1VuYWJsZSB0byBjbG9zZSBidWcge30uIFVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSBm
cm9tIGJ1Z3ppbGxhOiB7fScuZm9ybWF0KGJ1Z19pZCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24g
YXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdFcnJvciBpbiBjbG9z
aW5nIGJ1ZyB7fScuZm9ybWF0KGJ1Z19pZCkpCi0gICAgICAgICAgICByZXR1cm4gRkFJTFVSRQot
ICAgICAgICByZXR1cm4gU1VDQ0VTUwotCi0gICAgZGVmIGNvbW1lbnRfb25fYnVnKHNlbGYsIGJ1
Z19pZCwgY29tbWVudF90ZXh0KToKLSAgICAgICAgYnVnX2NvbW1lbnRfdXJsID0gJ3t9cmVzdC9i
dWcve30vY29tbWVudCcuZm9ybWF0KEJVR19TRVJWRVJfVVJMLCBidWdfaWQpCi0gICAgICAgIGlm
IG5vdCBjb21tZW50X3RleHQ6Ci0gICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoYnVnX2NvbW1lbnRfdXJs
LCBkYXRhPXsnY29tbWVudCc6IGNvbW1lbnRfdGV4dCwgJ0J1Z3ppbGxhX2FwaV9rZXknOiBzZWxm
LmdldF9idWd6aWxsYV9hcGlfa2V5KCl9KQotICAgICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVz
X2NvZGUgbm90IGluIFsyMDAsIDIwMV06Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2co
J3N0ZGlvJywgJ1VuYWJsZSB0byBjb21tZW50IG9uIGJ1ZyB7fS4gVW5leHBlY3RlZCByZXNwb25z
ZSBjb2RlIGZyb20gYnVnemlsbGE6IHt9Jy5mb3JtYXQoYnVnX2lkLCByZXNwb25zZS5zdGF0dXNf
Y29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0Vycm9y
IGluIGNvbW1lbnRpbmcgb24gYnVnIHt9Jy5mb3JtYXQoYnVnX2lkKSkKLSAgICAgICAgICAgIHJl
dHVybiBGQUlMVVJFCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBkZWYgY3JlYXRlX2J1
ZyhzZWxmLCBidWdfdGl0bGUsIGJ1Z19kZXNjcmlwdGlvbiwgY29tcG9uZW50PSdUb29scyAvIFRl
c3RzJywgY2NfbGlzdD1Ob25lKToKLSAgICAgICAgYnVnX3VybCA9ICd7fXJlc3QvYnVnJy5mb3Jt
YXQoQlVHX1NFUlZFUl9VUkwpCi0gICAgICAgIGlmIG5vdCAoYnVnX3RpdGxlIGFuZCBidWdfZGVz
Y3JpcHRpb24pOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLnBvc3QoYnVnX3VybCwgZGF0YT17J3Byb2R1
Y3QnOiAnV2ViS2l0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY29tcG9uZW50JzogY29tcG9uZW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJ1dlYktpdCBOaWdodGx5
IEJ1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnc3VtbWFyeSc6IGJ1Z190aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24nOiBidWdfZGVzY3JpcHRpb24sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NjJzog
Y2NfbGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnQnVnemlsbGFfYXBpX2tleSc6IHNlbGYuZ2V0X2J1Z3ppbGxhX2FwaV9rZXkoKX0pCi0g
ICAgICAgICAgICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSBub3QgaW4gWzIwMCwgMjAxXToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnVW5hYmxlIHRvIGZpbGUgYnVn
LiBVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgZnJvbSBidWd6aWxsYToge30nLmZvcm1hdChyZXNw
b25zZS5zdGF0dXNfY29kZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0
ZGlvJywgJ0Vycm9yIGluIGNyZWF0aW5nIGJ1Zzoge30nLmZvcm1hdChidWdfdGl0bGUpKQotICAg
ICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywg
J0ZpbGVkIGJ1Zzoge30nLmZvcm1hdChidWdfdGl0bGUpKQotICAgICAgICByZXR1cm4gU1VDQ0VT
UwotCi0KLWNsYXNzIFZhbGlkYXRlUGF0Y2goYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFN
aXhpbik6Ci0gICAgbmFtZSA9ICd2YWxpZGF0ZS1wYXRjaCcKLSAgICBkZXNjcmlwdGlvbiA9IFsn
dmFsaWRhdGUtcGF0Y2ggcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydWYWxpZGF0
ZWQgcGF0Y2gnXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGhhbHRPbkZhaWx1cmUg
PSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyaWZ5T2Jzb2xldGU9VHJ1ZSwgdmVy
aWZ5QnVnQ2xvc2VkPVRydWUsIHZlcmlmeVJldmlld0RlbmllZD1UcnVlLCBhZGRVUkxzPVRydWUs
IHZlcmlmeWNxcGx1cz1GYWxzZSk6Ci0gICAgICAgIHNlbGYudmVyaWZ5T2Jzb2xldGUgPSB2ZXJp
ZnlPYnNvbGV0ZQotICAgICAgICBzZWxmLnZlcmlmeUJ1Z0Nsb3NlZCA9IHZlcmlmeUJ1Z0Nsb3Nl
ZAotICAgICAgICBzZWxmLnZlcmlmeVJldmlld0RlbmllZCA9IHZlcmlmeVJldmlld0RlbmllZAot
ICAgICAgICBzZWxmLnZlcmlmeWNxcGx1cyA9IHZlcmlmeWNxcGx1cwotICAgICAgICBzZWxmLmFk
ZFVSTHMgPSBhZGRVUkxzCi0gICAgICAgIGJ1aWxkc3RlcC5CdWlsZFN0ZXAuX19pbml0X18oc2Vs
ZikKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJl
c3VsdHMgPT0gRkFJTFVSRToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdW5pY29kZShz
ZWxmLmRlc2NyaXB0aW9uRG9uZSl9Ci0gICAgICAgIHJldHVybiBzdXBlcihWYWxpZGF0ZVBhdGNo
LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotICAgIGRlZiBza2lwX2J1aWxkKHNlbGYsIHJl
YXNvbik6Ci0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsIHJlYXNvbikKLSAgICAgICAg
c2VsZi5maW5pc2hlZChGQUlMVVJFKQotICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBTS0lQ
UEVECi0gICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gcmVhc29uCi0gICAgICAgIHNlbGYu
YnVpbGQuYnVpbGRGaW5pc2hlZChbcmVhc29uXSwgU0tJUFBFRCkKLQotICAgIGRlZiBzdGFydChz
ZWxmKToKLSAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcn
KQotICAgICAgICBpZiBub3QgcGF0Y2hfaWQ6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygn
c3RkaW8nLCAnTm8gcGF0Y2hfaWQgZm91bmQuIFVuYWJsZSB0byBwcm9jZWVkIHdpdGhvdXQgcGF0
Y2hfaWQuXG4nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnTm8gcGF0Y2gg
aWQgZm91bmQnCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgICAgIGJ1Z19pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z19p
ZCcsICcnKSBvciBzZWxmLmdldF9idWdfaWRfZnJvbV9wYXRjaChwYXRjaF9pZCkKLQotICAgICAg
ICBidWdfY2xvc2VkID0gc2VsZi5faXNfYnVnX2Nsb3NlZChidWdfaWQpIGlmIHNlbGYudmVyaWZ5
QnVnQ2xvc2VkIGVsc2UgMAotICAgICAgICBpZiBidWdfY2xvc2VkID09IDE6Ci0gICAgICAgICAg
ICBzZWxmLnNraXBfYnVpbGQoJ0J1ZyB7fSBpcyBhbHJlYWR5IGNsb3NlZCcuZm9ybWF0KGJ1Z19p
ZCkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIG9ic29sZXRlID0gc2VsZi5f
aXNfcGF0Y2hfb2Jzb2xldGUocGF0Y2hfaWQpIGlmIHNlbGYudmVyaWZ5T2Jzb2xldGUgZWxzZSAw
Ci0gICAgICAgIGlmIG9ic29sZXRlID09IDE6Ci0gICAgICAgICAgICBzZWxmLnNraXBfYnVpbGQo
J1BhdGNoIHt9IGlzIG9ic29sZXRlJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgICAgICByZXZpZXdfZGVuaWVkID0gc2VsZi5faXNfcGF0Y2hfcmV2aWV3
X2RlbmllZChwYXRjaF9pZCkgaWYgc2VsZi52ZXJpZnlSZXZpZXdEZW5pZWQgZWxzZSAwCi0gICAg
ICAgIGlmIHJldmlld19kZW5pZWQgPT0gMToKLSAgICAgICAgICAgIHNlbGYuc2tpcF9idWlsZCgn
UGF0Y2gge30gaXMgbWFya2VkIHItJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLQotICAgICAgICBjcV9wbHVzID0gc2VsZi5faXNfcGF0Y2hfY3FfcGx1cyhwYXRj
aF9pZCkgaWYgc2VsZi52ZXJpZnljcXBsdXMgZWxzZSAxCi0gICAgICAgIGlmIGNxX3BsdXMgIT0g
MToKLSAgICAgICAgICAgIHNlbGYuc2tpcF9idWlsZCgnUGF0Y2gge30gaXMgbm90IG1hcmtlZCBj
cSsuJy5mb3JtYXQocGF0Y2hfaWQpKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAg
ICBhY2NlcHRhYmxlX3Jldmlld19mbGFnID0gc2VsZi5fZG9lc19wYXRjaF9oYXZlX2FjY2VwdGFi
bGVfcmV2aWV3X2ZsYWcocGF0Y2hfaWQpIGlmIHNlbGYudmVyaWZ5Y3FwbHVzIGVsc2UgMQotICAg
ICAgICBpZiBhY2NlcHRhYmxlX3Jldmlld19mbGFnICE9IDE6Ci0gICAgICAgICAgICBzZWxmLnNr
aXBfYnVpbGQoJ1BhdGNoIHt9IGRvZXMgbm90IGhhdmUgYWNjZXB0YWJsZSByZXZpZXcgZmxhZy4n
LmZvcm1hdChwYXRjaF9pZCkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIGlm
IG9ic29sZXRlID09IC0xIG9yIHJldmlld19kZW5pZWQgPT0gLTEgb3IgYnVnX2Nsb3NlZCA9PSAt
MToKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoV0FSTklOR1MpCi0gICAgICAgICAgICByZXR1
cm4gTm9uZQotCi0gICAgICAgIGlmIHNlbGYudmVyaWZ5QnVnQ2xvc2VkOgotICAgICAgICAgICAg
c2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ0J1ZyBpcyBvcGVuLlxuJykKLSAgICAgICAgaWYgc2Vs
Zi52ZXJpZnlPYnNvbGV0ZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdQ
YXRjaCBpcyBub3Qgb2Jzb2xldGUuXG4nKQotICAgICAgICBpZiBzZWxmLnZlcmlmeVJldmlld0Rl
bmllZDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdQYXRjaCBpcyBub3Qg
bWFya2VkIHItLlxuJykKLSAgICAgICAgaWYgc2VsZi52ZXJpZnljcXBsdXM6Ci0gICAgICAgICAg
ICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnUGF0Y2ggaXMgbWFya2VkIGNxKy5cbicpCi0gICAg
ICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnUGF0Y2ggaGF2ZSBhY2NlcHRhYmxlIHJl
dmlldyBmbGFnLlxuJykKLSAgICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAgICAgICBy
ZXR1cm4gTm9uZQotCi0KLWNsYXNzIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcihidWlsZHN0
ZXAuQnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ3ZhbGlkYXRlLWNvbW1pdGVyLWFuZC1yZXZpZXdl
cicKLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1ZhbGlkYXRlZCBjb21taXRlciBhbmQgcmV2aWV3
ZXInXQotICAgIHVybCA9ICdodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0
L3RydW5rL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb250cmlidXRvcnMu
anNvbicKLSAgICBjb250cmlidXRvcnMgPSB7fQotCi0gICAgZGVmIGxvYWRfY29udHJpYnV0b3Jz
X2Zyb21fZGlzayhzZWxmKToKLSAgICAgICAgY3dkID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXykpCi0gICAgICAgIHRvb2xzX2Rpcl9wYXRoID0gb3MucGF0aC5kaXJu
YW1lKG9zLnBhdGguZGlybmFtZShjd2QpKQotICAgICAgICBjb250cmlidXRvcnNfcGF0aCA9IG9z
LnBhdGguam9pbih0b29sc19kaXJfcGF0aCwgJ1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZp
Zy9jb250cmlidXRvcnMuanNvbicpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBq
c29uLmxvYWQob3Blbihjb250cmlidXRvcnNfcGF0aCkpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRp
b24gYXMgZToKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdGYWlsZWQgdG8g
bG9hZCB7fVxuJy5mb3JtYXQoY29udHJpYnV0b3JzX3BhdGgpKQotICAgICAgICAgICAgcmV0dXJu
IHt9Ci0KLSAgICBkZWYgbG9hZF9jb250cmlidXRvcnNfZnJvbV90cmFjKHNlbGYpOgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldChzZWxmLnVybCkKLSAg
ICAgICAgICAgIGlmIHJlc3BvbnNlLnN0YXR1c19jb2RlICE9IDIwMDoKLSAgICAgICAgICAgICAg
ICBzZWxmLl9hZGRUb0xvZygnc3RkaW8nLCAnRmFpbGVkIHRvIGFjY2VzcyB7fSB3aXRoIHN0YXR1
cyBjb2RlOiB7fVxuJy5mb3JtYXQoc2VsZi51cmwsIHJlc3BvbnNlLnN0YXR1c19jb2RlKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4ge30KLSAgICAgICAgICAgIHJldHVybiByZXNwb25zZS5qc29u
KCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgc2VsZi5fYWRk
VG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge3VybH1cbicuZm9ybWF0KHVybD1zZWxm
LnVybCkpCi0gICAgICAgICAgICByZXR1cm4ge30KLQotICAgIGRlZiBsb2FkX2NvbnRyaWJ1dG9y
cyhzZWxmKToKLSAgICAgICAgY29udHJpYnV0b3JzX2pzb24gPSBzZWxmLmxvYWRfY29udHJpYnV0
b3JzX2Zyb21fdHJhYygpCi0gICAgICAgIGlmIG5vdCBjb250cmlidXRvcnNfanNvbjoKLSAgICAg
ICAgICAgIGNvbnRyaWJ1dG9yc19qc29uID0gc2VsZi5sb2FkX2NvbnRyaWJ1dG9yc19mcm9tX2Rp
c2soKQotCi0gICAgICAgIGNvbnRyaWJ1dG9ycyA9IHt9Ci0gICAgICAgIGZvciBrZXksIHZhbHVl
IGluIGNvbnRyaWJ1dG9yc19qc29uLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgZW1haWxzID0g
dmFsdWUuZ2V0KCdlbWFpbHMnKQotICAgICAgICAgICAgZm9yIGVtYWlsIGluIGVtYWlsczoKLSAg
ICAgICAgICAgICAgICBjb250cmlidXRvcnNbZW1haWwubG93ZXIoKV0gPSB7J25hbWUnOiBrZXks
ICdzdGF0dXMnOiB2YWx1ZS5nZXQoJ3N0YXR1cycpfQotICAgICAgICByZXR1cm4gY29udHJpYnV0
b3JzCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIF9hZGRUb0xvZyhzZWxm
LCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9nID0gc2Vs
Zi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAg
bG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAgbG9nLmFkZFN0ZG91dCht
ZXNzYWdlKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNl
bGYucmVzdWx0cyA9PSBGQUlMVVJFOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1bmlj
b2RlKHNlbGYuZGVzY3JpcHRpb25Eb25lKX0KLSAgICAgICAgcmV0dXJuIGJ1aWxkc3RlcC5CdWls
ZFN0ZXAuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQotCi0gICAgZGVmIGZhaWxfYnVpbGQoc2VsZiwg
ZW1haWwsIHN0YXR1cyk6Ci0gICAgICAgIHJlYXNvbiA9ICd7fSBkb2VzIG5vdCBoYXZlIHt9IHBl
cm1pc3Npb25zJy5mb3JtYXQoZW1haWwsIHN0YXR1cykKLSAgICAgICAgY29tbWVudCA9ICd7fSBk
b2VzIG5vdCBoYXZlIHt9IHBlcm1pc3Npb25zIGFjY29yZGluZyB0byB7fS4nLmZvcm1hdChlbWFp
bCwgc3RhdHVzLCBzZWxmLnVybCkKLSAgICAgICAgY29tbWVudCArPSAnXG5cblJlamVjdGluZyBh
dHRhY2htZW50IHt9IGZyb20gY29tbWl0IHF1ZXVlLicuZm9ybWF0KHNlbGYuZ2V0UHJvcGVydHko
J3BhdGNoX2lkJywgJycpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21t
ZW50X3RleHQnLCBjb21tZW50KQotCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsIHJl
YXNvbikKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknLCBy
ZWFzb24pCi0gICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtDb21t
ZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNoKCldKQotICAgICAgICBz
ZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gcmVh
c29uCi0KLSAgICBkZWYgaXNfcmV2aWV3ZXIoc2VsZiwgZW1haWwpOgotICAgICAgICBjb250cmli
dXRvciA9IHNlbGYuY29udHJpYnV0b3JzLmdldChlbWFpbCkKLSAgICAgICAgcmV0dXJuIGNvbnRy
aWJ1dG9yIGFuZCBjb250cmlidXRvclsnc3RhdHVzJ10gPT0gJ3Jldmlld2VyJwotCi0gICAgZGVm
IGlzX2NvbW1pdHRlcihzZWxmLCBlbWFpbCk6Ci0gICAgICAgIGNvbnRyaWJ1dG9yID0gc2VsZi5j
b250cmlidXRvcnMuZ2V0KGVtYWlsKQotICAgICAgICByZXR1cm4gY29udHJpYnV0b3IgYW5kIGNv
bnRyaWJ1dG9yWydzdGF0dXMnXSBpbiBbJ3Jldmlld2VyJywgJ2NvbW1pdHRlciddCi0KLSAgICBk
ZWYgZnVsbF9uYW1lX2Zyb21fZW1haWwoc2VsZiwgZW1haWwpOgotICAgICAgICBjb250cmlidXRv
ciA9IHNlbGYuY29udHJpYnV0b3JzLmdldChlbWFpbCkKLSAgICAgICAgaWYgbm90IGNvbnRyaWJ1
dG9yOgotICAgICAgICAgICAgcmV0dXJuICcnCi0gICAgICAgIHJldHVybiBjb250cmlidXRvci5n
ZXQoJ25hbWUnKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmNvbnRyaWJ1
dG9ycyA9IHNlbGYubG9hZF9jb250cmlidXRvcnMoKQotICAgICAgICBpZiBub3Qgc2VsZi5jb250
cmlidXRvcnM6Ci0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgICAg
ICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9ICdGYWlsZWQgdG8gZ2V0IGNvbnRyaWJ1dG9ycyBpbmZv
cm1hdGlvbicKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbJ0ZhaWxlZCB0
byBnZXQgY29udHJpYnV0b3JzIGluZm9ybWF0aW9uJ10sIEZBSUxVUkUpCi0gICAgICAgICAgICBy
ZXR1cm4gTm9uZQotICAgICAgICBwYXRjaF9jb21taXR0ZXIgPSBzZWxmLmdldFByb3BlcnR5KCdw
YXRjaF9jb21taXR0ZXInLCAnJykubG93ZXIoKQotICAgICAgICBpZiBub3Qgc2VsZi5pc19jb21t
aXR0ZXIocGF0Y2hfY29tbWl0dGVyKToKLSAgICAgICAgICAgIHNlbGYuZmFpbF9idWlsZChwYXRj
aF9jb21taXR0ZXIsICdjb21taXR0ZXInKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ3t9IGlzIGEgdmFsaWQgY29tbWl0ZXIuXG4nLmZv
cm1hdChwYXRjaF9jb21taXR0ZXIpKQotCi0gICAgICAgIHBhdGNoX3Jldmlld2VyID0gc2VsZi5n
ZXRQcm9wZXJ0eSgncGF0Y2hfcmV2aWV3ZXInLCAnJykubG93ZXIoKQotICAgICAgICBpZiBub3Qg
cGF0Y2hfcmV2aWV3ZXI6Ci0gICAgICAgICAgICAjIFBhdGNoIGRvZXMgbm90IGhhdmUgcisgZmxh
Zy4gVGhpcyBpcyBhY2NlcHRhYmxlLCBzaW5jZSB0aGUgQ2hhbmdlTG9nIG1pZ2h0IGhhdmUgJ1Jl
dmlld2VkIGJ5JyBpbiBpdC4KLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gJ1Zh
bGlkYXRlZCBjb21taXR0ZXInCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNo
X3Jldmlld2VyX2Z1bGxfbmFtZScsIHNlbGYuZnVsbF9uYW1lX2Zyb21fZW1haWwocGF0Y2hfcmV2
aWV3ZXIpKQotICAgICAgICBpZiBub3Qgc2VsZi5pc19yZXZpZXdlcihwYXRjaF9yZXZpZXdlcik6
Ci0gICAgICAgICAgICBzZWxmLmZhaWxfYnVpbGQocGF0Y2hfcmV2aWV3ZXIsICdyZXZpZXdlcicp
Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkaW8n
LCAne30gaXMgYSB2YWxpZCByZXZpZXdlci5cbicuZm9ybWF0KHBhdGNoX3Jldmlld2VyKSkKLSAg
ICAgICAgc2VsZi5maW5pc2hlZChTVUNDRVNTKQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLWNs
YXNzIFZhbGlkYXRlQ2hhbmdlTG9nQW5kUmV2aWV3ZXIoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAg
ICBuYW1lID0gJ3ZhbGlkYXRlLWNoYW5nZWxvZy1hbmQtcmV2aWV3ZXInCi0gICAgZGVzY3JpcHRp
b25Eb25lID0gWydWYWxpZGF0ZWQgQ2hhbmdlTG9nIGFuZCBSZXZpZXdlciddCi0gICAgY29tbWFu
ZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoJywgJ3ZhbGlkYXRlLWNo
YW5nZWxvZycsICctLWNoZWNrLW9vcHMnLCAnLS1ub24taW50ZXJhY3RpdmUnXQotICAgIGhhbHRP
bkZhaWx1cmUgPSBGYWxzZQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hlbGwuU2hlbGxDb21tYW5kLl9faW5p
dF9fKHNlbGYsIHRpbWVvdXQ9MyAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQot
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2JzZXJ2ZXIgPSBsb2dvYnNl
cnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUpCi0gICAgICAgIHNlbGYuYWRk
TG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHJldHVybiBz
aGVsbC5TaGVsbENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0gU1VDQ0VTUzoKLSAgICAgICAgICAg
IHJldHVybiB7dSdzdGVwJzogdSdDaGFuZ2VMb2cgdmFsaWRhdGlvbiBmYWlsZWQnfQotICAgICAg
ICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotICAg
IGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgcmMgPSBzaGVsbC5TaGVs
bENvbW1hbmQuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgaWYgcmMgPT0gRkFJ
TFVSRToKLSAgICAgICAgICAgIGxvZ190ZXh0ID0gc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3Rkb3V0
KCkgKyBzZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRlcnIoKQotICAgICAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JywgbG9nX3RleHQpCi0gICAgICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsICdDaGFuZ2VMb2cgdmFsaWRh
dGlvbiBmYWlsZWQnKQotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVu
dFN0ZXAoW0NvbW1lbnRPbkJ1ZygpLCBTZXRDb21taXRRdWV1ZU1pbnVzRmxhZ09uUGF0Y2goKV0p
Ci0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFNldENvbW1pdFF1ZXVlTWludXNGbGFnT25Q
YXRjaChidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKLSAgICBuYW1lID0gJ3Nl
dC1jcS1taW51cy1mbGFnLW9uLXBhdGNoJwotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAg
ICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycpCi0gICAgICAgIGJ1
aWxkX2ZpbmlzaF9zdW1tYXJ5ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1h
cnknLCBOb25lKQotCi0gICAgICAgIHJjID0gc2VsZi5zZXRfY3FfbWludXNfZmxhZ19vbl9wYXRj
aChwYXRjaF9pZCkKLSAgICAgICAgc2VsZi5maW5pc2hlZChyYykKLSAgICAgICAgaWYgYnVpbGRf
ZmluaXNoX3N1bW1hcnk6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW2J1
aWxkX2ZpbmlzaF9zdW1tYXJ5XSwgRkFJTFVSRSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAg
IGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0g
U1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdTZXQgY3EtIGZsYWcgb24g
cGF0Y2gnfQotICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIHNldCBjcS0gZmxh
ZyBvbiBwYXRjaCd9Ci0KLQotY2xhc3MgUmVtb3ZlRmxhZ3NPblBhdGNoKGJ1aWxkc3RlcC5CdWls
ZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgotICAgIG5hbWUgPSAncmVtb3ZlLWZsYWdzLWZyb20tcGF0
Y2gnCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBGYWxzZQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxz
ZQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJv
cGVydHkoJ3BhdGNoX2lkJywgJycpCi0gICAgICAgIGlmIG5vdCBwYXRjaF9pZDoKLSAgICAgICAg
ICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdwYXRjaF9pZCBidWlsZCBwcm9wZXJ0eSBub3Qg
Zm91bmQuXG4nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnTm8gcGF0Y2gg
aWQgZm91bmQnCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJjID0gc2VsZi5yZW1vdmVfZmxhZ3Nfb25fcGF0Y2go
cGF0Y2hfaWQpCi0gICAgICAgIHNlbGYuZmluaXNoZWQocmMpCi0gICAgICAgIHJldHVybiBOb25l
Ci0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1
bHRzID09IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnUmVtb3ZlZCBm
bGFncyBvbiBidWd6aWxsYSBwYXRjaCd9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWls
ZWQgdG8gcmVtb3ZlIGZsYWdzIG9uIGJ1Z3ppbGxhIHBhdGNoJ30KLQotCi1jbGFzcyBDbG9zZUJ1
ZyhidWlsZHN0ZXAuQnVpbGRTdGVwLCBCdWd6aWxsYU1peGluKToKLSAgICBuYW1lID0gJ2Nsb3Nl
LWJ1Z3ppbGxhLWJ1ZycKLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0gICAgaGFsdE9uRmFp
bHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuYnVnX2lk
ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX2lkJywgJycpCi0gICAgICAgIGlmIG5vdCBzZWxmLmJ1
Z19pZDoKLSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRpbycsICdidWdfaWQgYnVpbGQg
cHJvcGVydHkgbm90IGZvdW5kLlxuJykKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25l
ID0gJ05vIGJ1ZyBpZCBmb3VuZCcKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoRkFJTFVSRSkK
LSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgcmMgPSBzZWxmLmNsb3NlX2J1Zyhz
ZWxmLmJ1Z19pZCkKLSAgICAgICAgc2VsZi5maW5pc2hlZChyYykKLSAgICAgICAgcmV0dXJuIE5v
bmUKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJl
c3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdDbG9zZWQg
YnVnIHt9Jy5mb3JtYXQoc2VsZi5idWdfaWQpfQotICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUn
RmFpbGVkIHRvIGNsb3NlIGJ1ZyB7fScuZm9ybWF0KHNlbGYuYnVnX2lkKX0KLQotCi1jbGFzcyBD
b21tZW50T25CdWcoYnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6Ci0gICAgbmFt
ZSA9ICdjb21tZW50LW9uLWJ1Z3ppbGxhLWJ1ZycKLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNl
Ci0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuYnVnX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX2lkJywgJycpCi0gICAgICAg
IHNlbGYuY29tbWVudF90ZXh0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90
ZXh0JywgJycpCi0KLSAgICAgICAgaWYgbm90IHNlbGYuY29tbWVudF90ZXh0OgotICAgICAgICAg
ICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCBidWlsZCBw
cm9wZXJ0eSBub3QgZm91bmQuXG4nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUg
PSAnTm8gYnVnemlsbGEgY29tbWVudCBmb3VuZCcKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQo
V0FSTklOR1MpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJjID0gc2VsZi5j
b21tZW50X29uX2J1ZyhzZWxmLmJ1Z19pZCwgc2VsZi5jb21tZW50X3RleHQpCi0gICAgICAgIHNl
bGYuZmluaXNoZWQocmMpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBkZWYgZ2V0UmVzdWx0
U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzID09IFNVQ0NFU1M6Ci0gICAg
ICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnQWRkZWQgY29tbWVudCBvbiBidWcge30nLmZvcm1h
dChzZWxmLmJ1Z19pZCl9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQgdG8gYWRk
IGNvbW1lbnQgb24gYnVnIHt9Jy5mb3JtYXQoc2VsZi5idWdfaWQpfQotCi0KLWNsYXNzIFVuQXBw
bHlQYXRjaElmUmVxdWlyZWQoQ2xlYW5Xb3JraW5nRGlyZWN0b3J5KToKLSAgICBuYW1lID0gJ3Vu
YXBwbHktcGF0Y2gnCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydVbmFwcGxpZWQgcGF0Y2gnXQot
Ci0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRQ
cm9wZXJ0eSgncGF0Y2hGYWlsZWRUb0J1aWxkJykgb3Igc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hG
YWlsZWRUZXN0cycpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxmLCByZXN1bHRzLCBzdGVwKToK
LSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmRvU3RlcElmKHN0ZXApCi0KLQotY2xhc3MgVHJpZ2dl
cih0cmlnZ2VyLlRyaWdnZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY2hlZHVsZXJOYW1l
cywgaW5jbHVkZV9yZXZpc2lvbj1UcnVlLCB0cmlnZ2Vycz1Ob25lLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHNlbGYuaW5jbHVkZV9yZXZpc2lvbiA9IGluY2x1ZGVfcmV2aXNpb24KLSAgICAgICAgc2Vs
Zi50cmlnZ2VycyA9IHRyaWdnZXJzCi0gICAgICAgIHNldF9wcm9wZXJ0aWVzID0gc2VsZi5wcm9w
ZXJ0aWVzVG9QYXNzVG9UcmlnZ2VycygpIG9yIHt9Ci0gICAgICAgIHN1cGVyKFRyaWdnZXIsIHNl
bGYpLl9faW5pdF9fKHNjaGVkdWxlck5hbWVzPXNjaGVkdWxlck5hbWVzLCBzZXRfcHJvcGVydGll
cz1zZXRfcHJvcGVydGllcywgKiprd2FyZ3MpCi0KLSAgICBkZWYgcHJvcGVydGllc1RvUGFzc1Rv
VHJpZ2dlcnMoc2VsZik6Ci0gICAgICAgIHByb3BlcnRpZXNfdG9fcGFzcyA9IHsKLSAgICAgICAg
ICAgICdwYXRjaF9pZCc6IHByb3BlcnRpZXMuUHJvcGVydHkoJ3BhdGNoX2lkJyksCi0gICAgICAg
ICAgICAnYnVnX2lkJzogcHJvcGVydGllcy5Qcm9wZXJ0eSgnYnVnX2lkJyksCi0gICAgICAgICAg
ICAnY29uZmlndXJhdGlvbic6IHByb3BlcnRpZXMuUHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nKSwK
LSAgICAgICAgICAgICdwbGF0Zm9ybSc6IHByb3BlcnRpZXMuUHJvcGVydHkoJ3BsYXRmb3JtJyks
Ci0gICAgICAgICAgICAnZnVsbFBsYXRmb3JtJzogcHJvcGVydGllcy5Qcm9wZXJ0eSgnZnVsbFBs
YXRmb3JtJyksCi0gICAgICAgICAgICAnYXJjaGl0ZWN0dXJlJzogcHJvcGVydGllcy5Qcm9wZXJ0
eSgnYXJjaGl0ZWN0dXJlJyksCi0gICAgICAgICAgICAnb3duZXInOiBwcm9wZXJ0aWVzLlByb3Bl
cnR5KCdvd25lcicpLAotICAgICAgICB9Ci0gICAgICAgIGlmIHNlbGYuaW5jbHVkZV9yZXZpc2lv
bjoKLSAgICAgICAgICAgIHByb3BlcnRpZXNfdG9fcGFzc1snZXdzX3JldmlzaW9uJ10gPSBwcm9w
ZXJ0aWVzLlByb3BlcnR5KCdnb3RfcmV2aXNpb24nKQotICAgICAgICBpZiBzZWxmLnRyaWdnZXJz
OgotICAgICAgICAgICAgcHJvcGVydGllc190b19wYXNzWyd0cmlnZ2VycyddID0gc2VsZi50cmln
Z2VycwotICAgICAgICByZXR1cm4gcHJvcGVydGllc190b19wYXNzCi0KLQotY2xhc3MgVGVzdFdp
dGhGYWlsdXJlQ291bnQoc2hlbGwuVGVzdCk6Ci0gICAgZmFpbGVkVGVzdHNGb3JtYXRTdHJpbmcg
PSAnJWQgdGVzdCVzIGZhaWxlZCcKLSAgICBmYWlsZWRUZXN0Q291bnQgPSAwCi0KLSAgICBkZWYg
c3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nX29ic2VydmVyID0gbG9nb2JzZXJ2ZXIuQnVm
ZmVyTG9nT2JzZXJ2ZXIod2FudFN0ZGVycj1UcnVlKQotICAgICAgICBzZWxmLmFkZExvZ09ic2Vy
dmVyKCdzdGRpbycsIHNlbGYubG9nX29ic2VydmVyKQotICAgICAgICByZXR1cm4gc2hlbGwuVGVz
dC5zdGFydChzZWxmKQotCi0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAg
ICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgotCi0gICAgZGVmIGNvbW1hbmRDb21wbGV0ZShz
ZWxmLCBjbWQpOgotICAgICAgICBzaGVsbC5UZXN0LmNvbW1hbmRDb21wbGV0ZShzZWxmLCBjbWQp
Ci0gICAgICAgIHNlbGYuZmFpbGVkVGVzdENvdW50ID0gc2VsZi5jb3VudEZhaWx1cmVzKGNtZCkK
LSAgICAgICAgc2VsZi5mYWlsZWRUZXN0UGx1cmFsU3VmZml4ID0gJycgaWYgc2VsZi5mYWlsZWRU
ZXN0Q291bnQgPT0gMSBlbHNlICdzJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBj
bWQpOgotICAgICAgICBpZiBzZWxmLmZhaWxlZFRlc3RDb3VudDoKLSAgICAgICAgICAgIHJldHVy
biBGQUlMVVJFCi0KLSAgICAgICAgaWYgY21kLnJjICE9IDA6Ci0gICAgICAgICAgICByZXR1cm4g
RkFJTFVSRQotCi0gICAgICAgIHJldHVybiBTVUNDRVNTCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3Vt
bWFyeShzZWxmKToKLSAgICAgICAgc3RhdHVzID0gc2VsZi5uYW1lCi0KLSAgICAgICAgaWYgc2Vs
Zi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICBpZiBzZWxmLmZhaWxlZFRlc3RDb3Vu
dDoKLSAgICAgICAgICAgICAgICBzdGF0dXMgPSBzZWxmLmZhaWxlZFRlc3RzRm9ybWF0U3RyaW5n
ICUgKHNlbGYuZmFpbGVkVGVzdENvdW50LCBzZWxmLmZhaWxlZFRlc3RQbHVyYWxTdWZmaXgpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHN0YXR1cyArPSB1JyAoe30pJy5mb3Jt
YXQoUmVzdWx0c1tzZWxmLnJlc3VsdHNdKQotCi0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdW5p
Y29kZShzdGF0dXMpfQotCi0KLWNsYXNzIENoZWNrU3R5bGUoVGVzdFdpdGhGYWlsdXJlQ291bnQp
OgotICAgIG5hbWUgPSAnY2hlY2std2Via2l0LXN0eWxlJwotICAgIGRlc2NyaXB0aW9uID0gWydj
aGVjay13ZWJraXQtc3R5bGUgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydjaGVj
ay13ZWJraXQtc3R5bGUnXQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGZhaWxlZFRl
c3RzRm9ybWF0U3RyaW5nID0gJyVkIHN0eWxlIGVycm9yJXMnCi0gICAgY29tbWFuZCA9IFsncHl0
aG9uJywgJ1Rvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlJ10KLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKENoZWNrU3R5bGUsIHNlbGYpLl9f
aW5pdF9fKGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGNvdW50RmFpbHVy
ZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nX3RleHQgPSBzZWxmLmxvZ19vYnNlcnZlci5nZXRT
dGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVycigpCi0KLSAgICAgICAgbWF0Y2gg
PSByZS5zZWFyY2gocidUb3RhbCBlcnJvcnMgZm91bmQ6ICg/UDxlcnJvcnM+XGQrKSBpbiAoP1A8
ZmlsZXM+XGQrKSBmaWxlcycsIGxvZ190ZXh0KQotICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAg
ICAgICAgICByZXR1cm4gMAotICAgICAgICByZXR1cm4gaW50KG1hdGNoLmdyb3VwKCdlcnJvcnMn
KSkKLQotCi1jbGFzcyBSdW5CaW5kaW5nc1Rlc3RzKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAg
bmFtZSA9ICdiaW5kaW5ncy10ZXN0cycKLSAgICBkZXNjcmlwdGlvbiA9IFsnYmluZGluZ3MtdGVz
dHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydiaW5kaW5ncy10ZXN0cyddCi0g
ICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0gICAganNvbkZpbGVOYW1lID0gJ2JpbmRpbmdzX3Rl
c3RfcmVzdWx0cy5qc29uJwotICAgIGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZpbGVOYW1lfQot
ICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi1iaW5kaW5ncy10ZXN0
cycsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KGpzb25GaWxlTmFtZSldCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihSdW5CaW5kaW5nc1Rlc3Rz
LCBzZWxmKS5fX2luaXRfXyh0aW1lb3V0PTUgKiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2Fy
Z3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nX29ic2VydmVyID0g
bG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIoKQotICAgICAgICBzZWxmLmFkZExvZ09ic2Vy
dmVyKCdqc29uJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHJldHVybiBzaGVsbC5TaGVs
bENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgot
ICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIG1lc3NhZ2Ug
PSAnUGFzc2VkIGJpbmRpbmdzIHRlc3RzJwotICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZp
bmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzog
dW5pY29kZShtZXNzYWdlKX0KLQotICAgICAgICBsb2dMaW5lcyA9IHNlbGYubG9nX29ic2VydmVy
LmdldFN0ZG91dCgpCi0gICAgICAgIGpzb25fdGV4dCA9ICcnLmpvaW4oW2xpbmUgZm9yIGxpbmUg
aW4gbG9nTGluZXMuc3BsaXRsaW5lcygpXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2Vi
a2l0cHlfcmVzdWx0cyA9IGpzb24ubG9hZHMoanNvbl90ZXh0KQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uIGFzIGV4OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdFUlJP
UjogdW5hYmxlIHRvIHBhcnNlIGRhdGEsIGV4Y2VwdGlvbjoge30nLmZvcm1hdChleCkpCi0gICAg
ICAgICAgICByZXR1cm4gc3VwZXIoUnVuQmluZGluZ3NUZXN0cywgc2VsZikuZ2V0UmVzdWx0U3Vt
bWFyeSgpCi0KLSAgICAgICAgZmFpbHVyZXMgPSB3ZWJraXRweV9yZXN1bHRzLmdldCgnZmFpbHVy
ZXMnKQotICAgICAgICBpZiBub3QgZmFpbHVyZXM6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIo
UnVuQmluZGluZ3NUZXN0cywgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0gICAgICAgIHBsdXJh
bFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgIGZhaWx1
cmVzX3N0cmluZyA9ICcsICcuam9pbihbZmFpbHVyZS5yZXBsYWNlKCcoSlMpICcsICcnKSBmb3Ig
ZmFpbHVyZSBpbiBmYWlsdXJlc10pCi0gICAgICAgIG1lc3NhZ2UgPSAnRm91bmQge30gQmluZGlu
ZyB0ZXN0IGZhaWx1cmV7fToge30nLmZvcm1hdChsZW4oZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgs
IGZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkKFttZXNz
YWdlXSwgRkFJTFVSRSkKLSAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1bmljb2RlKG1lc3NhZ2Up
fQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwg
bG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNlbGYu
Z2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxv
ZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQobWVz
c2FnZSkKLQotCi1jbGFzcyBSdW5XZWJLaXRQZXJsVGVzdHMoc2hlbGwuU2hlbGxDb21tYW5kKToK
LSAgICBuYW1lID0gJ3dlYmtpdHBlcmwtdGVzdHMnCi0gICAgZGVzY3JpcHRpb24gPSBbJ3dlYmtp
dHBlcmwtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyd3ZWJraXRwZXJs
LXRlc3RzJ10KLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0gICAgaGFsdE9uRmFpbHVyZSA9
IEZhbHNlCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0
cGVybCddCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBl
cihSdW5XZWJLaXRQZXJsVGVzdHMsIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9MiAqIDYwLCBsb2dF
bnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
OgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSAnUGFzc2VkIHdlYmtpdHBlcmwgdGVzdHMnCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1
aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBTVUNDRVNTKQotICAgICAgICAgICAgcmV0dXJuIHt1J3N0
ZXAnOiB1bmljb2RlKG1lc3NhZ2UpfQotICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVk
IHdlYmtpdHBlcmwgdGVzdHMnfQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQp
OgotICAgICAgICByYyA9IHNoZWxsLlNoZWxsQ29tbWFuZC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwg
Y21kKQotICAgICAgICBpZiByYyA9PSBGQUlMVVJFOgotICAgICAgICAgICAgc2VsZi5idWlsZC5h
ZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0tpbGxPbGRQcm9jZXNzZXMoKSwgUmVSdW5XZWJLaXRQ
ZXJsVGVzdHMoKV0pCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFJlUnVuV2ViS2l0UGVy
bFRlc3RzKFJ1bldlYktpdFBlcmxUZXN0cyk6Ci0gICAgbmFtZSA9ICdyZS1ydW4td2Via2l0cGVy
bC10ZXN0cycKLSAgICBmbHVua09uRmFpbHVyZSA9IFRydWUKLSAgICBoYWx0T25GYWlsdXJlID0g
VHJ1ZQotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByZXR1
cm4gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xh
c3MgUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBu
YW1lID0gJ2J1aWxkLXdlYmtpdC1vcmctdW5pdC10ZXN0cycKLSAgICBkZXNjcmlwdGlvbiA9IFsn
YnVpbGQtd2Via2l0LXVuaXQtdGVzdHMgcnVubmluZyddCi0gICAgY29tbWFuZCA9IFsncHl0aG9u
JywgJ3N0ZXBzX3VuaXR0ZXN0LnB5J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHNoZWxsLlNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCB3b3JrZGlyPSdi
dWlsZC9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZycsIHRp
bWVvdXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBnZXRS
ZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0gU1VDQ0VTUzoK
LSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdQYXNzZWQgYnVpbGQud2Via2l0Lm9yZyB1
bml0IHRlc3RzJ30KLSAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCBidWlsZC53ZWJr
aXQub3JnIHVuaXQgdGVzdHMnfQotCi0KLWNsYXNzIFJ1bkVXU1VuaXRUZXN0cyhzaGVsbC5TaGVs
bENvbW1hbmQpOgotICAgIG5hbWUgPSAnZXdzLXVuaXQtdGVzdHMnCi0gICAgZGVzY3JpcHRpb24g
PSBbJ2V3cy11bml0LXRlc3RzIHJ1bm5pbmcnXQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRlc3RzLnB5J10KLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFJ1bkVXU1VuaXRU
ZXN0cywgc2VsZikuX19pbml0X18odGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoq
a3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNl
bGYucmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J1Bh
c3NlZCBFV1MgdW5pdCB0ZXN0cyd9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQg
RVdTIHVuaXQgdGVzdHMnfQotCi0KLWNsYXNzIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcoc2hl
bGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2J1aWxkYm90LWNoZWNrLWNvbmZpZycKLSAg
ICBkZXNjcmlwdGlvbiA9IFsnYnVpbGRib3QtY2hlY2tjb25maWcgcnVubmluZyddCi0gICAgY29t
bWFuZCA9IFsnYnVpbGRib3QnLCAnY2hlY2tjb25maWcnXQotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoUnVuRVdTQnVpbGRib3RDaGVja0NvbmZpZywg
c2VsZikuX19pbml0X18od29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdz
LWJ1aWxkJywgdGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0g
ICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9
PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J1Bhc3NlZCBidWlsZGJv
dCBjaGVja2NvbmZpZyd9Ci0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQgYnVpbGRi
b3QgY2hlY2tjb25maWcnfQotCi0KLWNsYXNzIFJ1blJlc3VsdHNkYnB5VGVzdHMoc2hlbGwuU2hl
bGxDb21tYW5kKToKLSAgICBuYW1lID0gJ3Jlc3VsdHNkYnB5LXVuaXQtdGVzdHMnCi0gICAgZGVz
Y3JpcHRpb24gPSBbJ3Jlc3VsdHNkYnB5LXVuaXQtdGVzdHMgcnVubmluZyddCi0gICAgY29tbWFu
ZCA9IFsKLSAgICAgICAgJ3B5dGhvbjMnLAotICAgICAgICAnVG9vbHMvU2NyaXB0cy9saWJyYXJp
ZXMvcmVzdWx0c2RicHkvcmVzdWx0c2RicHkvcnVuLXRlc3RzJywKLSAgICAgICAgJy0tdmVyYm9z
ZScsCi0gICAgICAgICctLW5vLXNlbGVuaXVtJywKLSAgICAgICAgJy0tZmFzdC10ZXN0cycsCi0g
ICAgXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIo
UnVuUmVzdWx0c2RicHlUZXN0cywgc2VsZikuX19pbml0X18odGltZW91dD0yICogNjAsIGxvZ0Vu
dmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6
Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJu
IHt1J3N0ZXAnOiB1J1Bhc3NlZCByZXN1bHRzZGJweSB1bml0IHRlc3RzJ30KLSAgICAgICAgcmV0
dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCByZXN1bHRzZGJweSB1bml0IHRlc3RzJ30KLQotCi1jbGFz
cyBXZWJLaXRQeVRlc3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBsYW5ndWFnZSA9ICdweXRo
b24nCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWyd3ZWJraXRweS10ZXN0cyddCi0gICAgZmx1bmtP
bkZhaWx1cmUgPSBUcnVlCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoV2ViS2l0UHlUZXN0
LCBzZWxmKS5fX2luaXRfXyh0aW1lb3V0PTIgKiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2Fy
Z3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYubG9nX29ic2VydmVyID0g
bG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIoKQotICAgICAgICBzZWxmLmFkZExvZ09ic2Vy
dmVyKCdqc29uJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHJldHVybiBzaGVsbC5TaGVs
bENvbW1hbmQuc3RhcnQoc2VsZikKLQotICAgIGRlZiBzZXRCdWlsZFN1bW1hcnkoc2VsZiwgYnVp
bGRfc3VtbWFyeSk6Ci0gICAgICAgIHByZXZpb3VzX2J1aWxkX3N1bW1hcnkgPSBzZWxmLmdldFBy
b3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgJycpCi0gICAgICAgIGlmIG5vdCBwcmV2aW91c19idWls
ZF9zdW1tYXJ5OgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScs
IGJ1aWxkX3N1bW1hcnkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBidWlsZF9z
dW1tYXJ5IGluIHByZXZpb3VzX2J1aWxkX3N1bW1hcnk6Ci0gICAgICAgICAgICAjIEVuc3VyZSB0
aGF0IHdlIGRvIG5vdCBhcHBlbmQgc2FtZSBidWlsZCBzdW1tYXJ5IG11bHRpcGxlIHRpbWVzIGlu
IGNhc2UKLSAgICAgICAgICAgICMgdGhpcyBtZXRob2QgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVz
LgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbmV3X2J1aWxkX3N1bW1hcnkgPSBwcmV2
aW91c19idWlsZF9zdW1tYXJ5ICsgJywgJyArIGJ1aWxkX3N1bW1hcnkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsIG5ld19idWlsZF9zdW1tYXJ5KQotCi0gICAgZGVm
IGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUND
RVNTOgotICAgICAgICAgICAgbWVzc2FnZSA9ICdQYXNzZWQgd2Via2l0cHkge30gdGVzdHMnLmZv
cm1hdChzZWxmLmxhbmd1YWdlKQotICAgICAgICAgICAgc2VsZi5zZXRCdWlsZFN1bW1hcnkobWVz
c2FnZSkKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdW5pY29kZShtZXNzYWdlKX0KLQot
ICAgICAgICBsb2dMaW5lcyA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpCi0gICAgICAg
IGpzb25fdGV4dCA9ICcnLmpvaW4oW2xpbmUgZm9yIGxpbmUgaW4gbG9nTGluZXMuc3BsaXRsaW5l
cygpXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2Via2l0cHlfcmVzdWx0cyA9IGpzb24u
bG9hZHMoanNvbl90ZXh0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgotICAgICAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdFUlJPUjogdW5hYmxlIHRvIHBhcnNlIGRh
dGEsIGV4Y2VwdGlvbjoge30nLmZvcm1hdChleCkpCi0gICAgICAgICAgICByZXR1cm4gc3VwZXIo
V2ViS2l0UHlUZXN0LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotICAgICAgICBmYWlsdXJl
cyA9IHdlYmtpdHB5X3Jlc3VsdHMuZ2V0KCdmYWlsdXJlcycsIFtdKSArIHdlYmtpdHB5X3Jlc3Vs
dHMuZ2V0KCdlcnJvcnMnLCBbXSkKLSAgICAgICAgaWYgbm90IGZhaWx1cmVzOgotICAgICAgICAg
ICAgcmV0dXJuIHN1cGVyKFdlYktpdFB5VGVzdCwgc2VsZikuZ2V0UmVzdWx0U3VtbWFyeSgpCi0g
ICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oZmFpbHVyZXMpID4gMSBlbHNlICcnCi0g
ICAgICAgIGZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihbZmFpbHVyZS5nZXQoJ25hbWUnKSBm
b3IgZmFpbHVyZSBpbiBmYWlsdXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV1dKQot
ICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHt9IHdlYmtpdHB5IHt9IHRlc3QgZmFpbHVyZXt9OiB7
fScuZm9ybWF0KGxlbihmYWlsdXJlcyksIHNlbGYubGFuZ3VhZ2UsIHBsdXJhbFN1ZmZpeCwgZmFp
bHVyZXNfc3RyaW5nKQotICAgICAgICBpZiBsZW4oZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVS
RVNfVE9fRElTUExBWToKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgIHNl
bGYuc2V0QnVpbGRTdW1tYXJ5KG1lc3NhZ2UpCi0gICAgICAgIHJldHVybiB7dSdzdGVwJzogdW5p
Y29kZShtZXNzYWdlKX0KLQotICAgIEBkZWZlci5pbmxpbmVDYWxsYmFja3MKLSAgICBkZWYgX2Fk
ZFRvTG9nKHNlbGYsIGxvZ05hbWUsIG1lc3NhZ2UpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBsb2cgPSBzZWxmLmdldExvZyhsb2dOYW1lKQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0g
ICAgICAgICAgICBsb2cgPSB5aWVsZCBzZWxmLmFkZExvZyhsb2dOYW1lKQotICAgICAgICBsb2cu
YWRkU3Rkb3V0KG1lc3NhZ2UpCi0KLQotY2xhc3MgUnVuV2ViS2l0UHlQeXRob24yVGVzdHMoV2Vi
S2l0UHlUZXN0KToKLSAgICBsYW5ndWFnZSA9ICdweXRob24yJwotICAgIG5hbWUgPSAnd2Via2l0
cHktdGVzdHMte30nLmZvcm1hdChsYW5ndWFnZSkKLSAgICBkZXNjcmlwdGlvbiA9IFsnd2Via2l0
cHktdGVzdHMgcnVubmluZyAoe30pJy5mb3JtYXQobGFuZ3VhZ2UpXQotICAgIGpzb25GaWxlTmFt
ZSA9ICd3ZWJraXRweV90ZXN0X3t9X3Jlc3VsdHMuanNvbicuZm9ybWF0KGxhbmd1YWdlKQotICAg
IGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZpbGVOYW1lfQotICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAnLS12ZXJib3NlJywgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVOYW1lKV0KLQotCi1jbGFzcyBSdW5XZWJLaXRQeVB5
dGhvbjNUZXN0cyhXZWJLaXRQeVRlc3QpOgotICAgIGxhbmd1YWdlID0gJ3B5dGhvbjMnCi0gICAg
bmFtZSA9ICd3ZWJraXRweS10ZXN0cy17fScuZm9ybWF0KGxhbmd1YWdlKQotICAgIGRlc2NyaXB0
aW9uID0gWyd3ZWJraXRweS10ZXN0cyBydW5uaW5nICh7fSknLmZvcm1hdChsYW5ndWFnZSldCi0g
ICAganNvbkZpbGVOYW1lID0gJ3dlYmtpdHB5X3Rlc3Rfe31fcmVzdWx0cy5qc29uJy5mb3JtYXQo
bGFuZ3VhZ2UpCi0gICAgbG9nZmlsZXMgPSB7J2pzb24nOiBqc29uRmlsZU5hbWV9Ci0gICAgY29t
bWFuZCA9IFsncHl0aG9uMycsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAnLS12ZXJi
b3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoanNvbkZpbGVOYW1lKV0KLQotCi1jbGFz
cyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9
ICdqaGJ1aWxkJwotICAgIGRlc2NyaXB0aW9uID0gWyd1cGRhdGluZyBndGsgZGVwZW5kZW5jaWVz
J10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwZGF0ZWQgZ3RrIGRlcGVuZGVuY2llcyddCi0g
ICAgY29tbWFuZCA9IFsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGli
cycsIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyldCi0gICAgaGFsdE9uRmFp
bHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAg
IHN1cGVyKEluc3RhbGxHdGtEZXBlbmRlbmNpZXMsIHNlbGYpLl9faW5pdF9fKGxvZ0Vudmlyb249
RmFsc2UsICoqa3dhcmdzKQotCi0KLWNsYXNzIEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoc2hlbGwu
U2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2poYnVpbGQnCi0gICAgZGVzY3JpcHRpb24gPSBb
J3VwZGF0aW5nIHdwZSBkZXBlbmRlbmNpZXMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnVXBk
YXRlZCB3cGUgZGVwZW5kZW5jaWVzJ10KLSAgICBjb21tYW5kID0gWydwZXJsJywgJ1Rvb2xzL1Nj
cmlwdHMvdXBkYXRlLXdlYmtpdHdwZS1saWJzJywgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1
cmF0aW9uKXMnKV0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoSW5zdGFsbFdwZURlcGVuZGVuY2llcywg
c2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0KLQotZGVmIGFwcGVu
ZEN1c3RvbUJ1aWxkRmxhZ3Moc3RlcCwgcGxhdGZvcm0sIGZ1bGxQbGF0Zm9ybSk6Ci0gICAgIyBG
SVhNRTogTWFrZSBhIGNvbW1vbiAnc3VwcG9ydGVkIHBsYXRmb3JtcycgbGlzdC4KLSAgICBpZiBw
bGF0Zm9ybSBub3QgaW4gKCdndGsnLCAnd2luY2Fpcm8nLCAnaW9zJywgJ2pzYy1vbmx5JywgJ3dw
ZScsICdwbGF5c3RhdGlvbicsICd0dm9zJywgJ3dhdGNob3MnKToKLSAgICAgICAgcmV0dXJuCi0g
ICAgaWYgJ3NpbXVsYXRvcicgaW4gZnVsbFBsYXRmb3JtOgotICAgICAgICBwbGF0Zm9ybSA9IHBs
YXRmb3JtICsgJy1zaW11bGF0b3InCi0gICAgZWxpZiBwbGF0Zm9ybSBpbiBbJ2lvcycsICd0dm9z
JywgJ3dhdGNob3MnXToKLSAgICAgICAgcGxhdGZvcm0gPSBwbGF0Zm9ybSArICctZGV2aWNlJwot
ICAgIHN0ZXAuc2V0Q29tbWFuZChzdGVwLmNvbW1hbmQgKyBbJy0tJyArIHBsYXRmb3JtXSkKLQot
Ci1jbGFzcyBCdWlsZExvZ0xpbmVPYnNlcnZlcihsb2dvYnNlcnZlci5Mb2dMaW5lT2JzZXJ2ZXIs
IG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGVycm9yUmVjZWl2ZWQsIHNlYXJjaFN0
cmluZz0ncnJvcjonLCBpbmNsdWRlUmVsYXRlZExpbmVzPVRydWUpOgotICAgICAgICBzZWxmLmVy
cm9yUmVjZWl2ZWQgPSBlcnJvclJlY2VpdmVkCi0gICAgICAgIHNlbGYuc2VhcmNoU3RyaW5nID0g
c2VhcmNoU3RyaW5nCi0gICAgICAgIHNlbGYuaW5jbHVkZVJlbGF0ZWRMaW5lcyA9IGluY2x1ZGVS
ZWxhdGVkTGluZXMKLSAgICAgICAgc2VsZi5lcnJvcl9jb250ZXh0X2J1ZmZlciA9IFtdCi0gICAg
ICAgIHNlbGYud2hpdGVzcGFjZV9yZSA9IHJlLmNvbXBpbGUoJ15bXHNdKiQnKQotICAgICAgICBz
dXBlcihCdWlsZExvZ0xpbmVPYnNlcnZlciwgc2VsZikuX19pbml0X18oKQotCi0gICAgZGVmIG91
dExpbmVSZWNlaXZlZChzZWxmLCBsaW5lKToKLSAgICAgICAgaWYgbm90IHNlbGYuZXJyb3JSZWNl
aXZlZDoKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIG5vdCBzZWxmLmluY2x1ZGVS
ZWxhdGVkTGluZXM6Ci0gICAgICAgICAgICBpZiBzZWxmLnNlYXJjaFN0cmluZyBpbiBsaW5lOgot
ICAgICAgICAgICAgICAgIHNlbGYuZXJyb3JSZWNlaXZlZChsaW5lKQotICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICAgICAgaXNfd2hpdGVzcGFjZSA9IHNlbGYud2hpdGVzcGFjZV9yZS5zZWFyY2go
bGluZSkgaXMgbm90IE5vbmUKLSAgICAgICAgaWYgaXNfd2hpdGVzcGFjZToKLSAgICAgICAgICAg
IHNlbGYuZXJyb3JfY29udGV4dF9idWZmZXIgPSBbXQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgc2VsZi5lcnJvcl9jb250ZXh0X2J1ZmZlci5hcHBlbmQobGluZSkKLQotICAgICAgICBpZiBz
ZWxmLnNlYXJjaFN0cmluZyBpbiBsaW5lOgotICAgICAgICAgICAgbWFwKHNlbGYuZXJyb3JSZWNl
aXZlZCwgc2VsZi5lcnJvcl9jb250ZXh0X2J1ZmZlcikKLSAgICAgICAgICAgIHNlbGYuZXJyb3Jf
Y29udGV4dF9idWZmZXIgPSBbXQotCi0KLWNsYXNzIENvbXBpbGVXZWJLaXQoc2hlbGwuQ29tcGls
ZSk6Ci0gICAgbmFtZSA9ICdjb21waWxlLXdlYmtpdCcKLSAgICBkZXNjcmlwdGlvbiA9IFsnY29t
cGlsaW5nJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0NvbXBpbGVkIFdlYktpdCddCi0gICAg
ZW52ID0geydNRkxBR1MnOiAnJ30KLSAgICB3YXJuaW5nUGF0dGVybiA9ICcuKmFybmluZzogLion
Ci0gICAgaGFsdE9uRmFpbHVyZSA9IEZhbHNlCi0gICAgY29tbWFuZCA9IFsncGVybCcsICdUb29s
cy9TY3JpcHRzL2J1aWxkLXdlYmtpdCcsIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlv
bilzJyldCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc2tpcFVwbG9hZD1GYWxzZSwgKiprd2Fy
Z3MpOgotICAgICAgICBzZWxmLnNraXBVcGxvYWQgPSBza2lwVXBsb2FkCi0gICAgICAgIHN1cGVy
KENvbXBpbGVXZWJLaXQsIHNlbGYpLl9faW5pdF9fKGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdz
KQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICByZXR1cm4gbm90IChz
ZWxmLmdldFByb3BlcnR5KCdyZXZlcnQnKSBhbmQgc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5h
bWUnLCAnJykubG93ZXIoKSA9PSAnY29tbWl0LXF1ZXVlJykKLQotICAgIGRlZiBzdGFydChzZWxm
KToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAg
ICAgIGJ1aWxkT25seSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkT25seScpCi0gICAgICAgIGFy
Y2hpdGVjdHVyZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScpCi0gICAgICAgIGFk
ZGl0aW9uYWxBcmd1bWVudHMgPSBzZWxmLmdldFByb3BlcnR5KCdhZGRpdGlvbmFsQXJndW1lbnRz
JykKLQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiBbJ3dpbicsICd3aW5jYWlybyddOgotICAgICAg
ICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignc3RkaW8nLCBCdWlsZExvZ0xpbmVPYnNlcnZlcihz
ZWxmLmVycm9yUmVjZWl2ZWQsIHNlYXJjaFN0cmluZz0nZXJyb3IgJywgaW5jbHVkZVJlbGF0ZWRM
aW5lcz1GYWxzZSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmFkZExvZ09ic2Vy
dmVyKCdzdGRpbycsIEJ1aWxkTG9nTGluZU9ic2VydmVyKHNlbGYuZXJyb3JSZWNlaXZlZCkpCi0K
LSAgICAgICAgaWYgYWRkaXRpb25hbEFyZ3VtZW50czoKLSAgICAgICAgICAgIHNlbGYuc2V0Q29t
bWFuZChzZWxmLmNvbW1hbmQgKyBhZGRpdGlvbmFsQXJndW1lbnRzKQotICAgICAgICBpZiBwbGF0
Zm9ybSBpbiAoJ21hYycsICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykgYW5kIGFyY2hpdGVjdHVy
ZToKLSAgICAgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQgKyBbJ0FSQ0hTPScg
KyBhcmNoaXRlY3R1cmVdKQotICAgICAgICAgICAgaWYgcGxhdGZvcm0gaW4gWydpb3MnLCAndHZv
cycsICd3YXRjaG9zJ106Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29t
bWFuZCArIFsnT05MWV9BQ1RJVkVfQVJDSD1OTyddKQotICAgICAgICBpZiBwbGF0Zm9ybSBpbiAo
J21hYycsICdpb3MnLCAndHZvcycsICd3YXRjaG9zJykgYW5kIGJ1aWxkT25seToKLSAgICAgICAg
ICAgICMgRm9yIGJ1aWxkLW9ubHkgYm90cywgdGhlIGV4cGVjdGF0aW9uIGlzIHRoYXQgdGVzdHMg
d2lsbCBiZSBydW4gb24gc2VwYXJhdGUgbWFjaGluZXMsCi0gICAgICAgICAgICAjIHNvIHdlIG5l
ZWQgdG8gcGFja2FnZSBkZWJ1ZyBpbmZvIGFzIGRTWU1zLiBPbmx5IGdlbmVyYXRpbmcgbGluZSB0
YWJsZXMgbWFrZXMKLSAgICAgICAgICAgICMgdGhpcyBtdWNoIGZhc3RlciB0aGFuIGZ1bGwgZGVi
dWcgaW5mbywgYW5kIGNyYXNoIGxvZ3Mgc3RpbGwgaGF2ZSBsaW5lIG51bWJlcnMuCi0gICAgICAg
ICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydERUJVR19JTkZPUk1BVElPTl9G
T1JNQVQ9ZHdhcmYtd2l0aC1kc3ltJ10pCi0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2Vs
Zi5jb21tYW5kICsgWydDTEFOR19ERUJVR19JTkZPUk1BVElPTl9MRVZFTD1saW5lLXRhYmxlcy1v
bmx5J10pCi0KLSAgICAgICAgYXBwZW5kQ3VzdG9tQnVpbGRGbGFncyhzZWxmLCBwbGF0Zm9ybSwg
c2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJykpCi0KLSAgICAgICAgcmV0dXJuIHNoZWxs
LkNvbXBpbGUuc3RhcnQoc2VsZikKLQotICAgIEBkZWZlci5pbmxpbmVDYWxsYmFja3MKLSAgICBk
ZWYgX2FkZFRvTG9nKHNlbGYsIGxvZ05hbWUsIG1lc3NhZ2UpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBsb2cgPSBzZWxmLmdldExvZyhsb2dOYW1lKQotICAgICAgICBleGNlcHQgS2V5RXJy
b3I6Ci0gICAgICAgICAgICBsb2cgPSB5aWVsZCBzZWxmLmFkZExvZyhsb2dOYW1lKQotICAgICAg
ICBsb2cuYWRkU3Rkb3V0KG1lc3NhZ2UpCi0KLSAgICBkZWYgZXJyb3JSZWNlaXZlZChzZWxmLCBl
cnJvcik6Ci0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdlcnJvcnMnLCBlcnJvciArICdcbicpCi0K
LSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIGlmIGNtZC5kaWRG
YWlsKCk6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRvQnVpbGQn
LCBUcnVlKQotICAgICAgICAgICAgc3RlcHNfdG9fYWRkID0gW1VuQXBwbHlQYXRjaElmUmVxdWly
ZWQoKSwgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9RmFsc2Up
XQotICAgICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0g
ICAgICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd3BlJzoKLSAgICAgICAgICAgICAgICBzdGVwc190
b19hZGQuYXBwZW5kKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLSAgICAgICAgICAgIGVsaWYg
cGxhdGZvcm0gPT0gJ2d0ayc6Ci0gICAgICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVuZChJ
bnN0YWxsR3RrRGVwZW5kZW5jaWVzKCkpCi0gICAgICAgICAgICBpZiBzZWxmLmdldFByb3BlcnR5
KCdncm91cCcpID09ICdqc2MnOgotICAgICAgICAgICAgICAgIHN0ZXBzX3RvX2FkZC5hcHBlbmQo
Q29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBzdGVwc190b19hZGQuYXBwZW5kKENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAg
ICAgICAgICAgIHN0ZXBzX3RvX2FkZC5hcHBlbmQoQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRz
KCkpCi0gICAgICAgICAgICAjIFVzaW5nIGEgc2luZ2xlIGFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3Rl
cCBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9idWlsZGJvdC9idWlsZGJvdC9pc3N1ZXMv
NDg3NAotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoc3Rl
cHNfdG9fYWRkKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdHJpZ2dlcnMgPSBzZWxmLmdl
dFByb3BlcnR5KCd0cmlnZ2VycycsIE5vbmUpCi0gICAgICAgICAgICBpZiB0cmlnZ2VycyBvciBu
b3Qgc2VsZi5za2lwVXBsb2FkOgotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNB
ZnRlckN1cnJlbnRTdGVwKFtBcmNoaXZlQnVpbHRQcm9kdWN0KCksIFVwbG9hZEJ1aWx0UHJvZHVj
dCgpLCBUcmFuc2ZlclRvUzMoKV0pCi0KLSAgICAgICAgcmV0dXJuIHN1cGVyKENvbXBpbGVXZWJL
aXQsIHNlbGYpLmV2YWx1YXRlQ29tbWFuZChjbWQpCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFy
eShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzID09IEZBSUxVUkU6Ci0gICAgICAgICAg
ICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGNvbXBpbGUgV2ViS2l0J30KLSAgICAgICAg
cmV0dXJuIHNoZWxsLkNvbXBpbGUuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQotCi0KLWNsYXNzIENv
bXBpbGVXZWJLaXRXaXRob3V0UGF0Y2goQ29tcGlsZVdlYktpdCk6Ci0gICAgbmFtZSA9ICdjb21w
aWxlLXdlYmtpdC13aXRob3V0LXBhdGNoJwotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxzZQotCi0g
ICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICByZXR1cm4gc2VsZi5nZXRQcm9w
ZXJ0eSgncGF0Y2hGYWlsZWRUb0J1aWxkJykgb3Igc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hGYWls
ZWRUZXN0cycpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxmLCByZXN1bHRzLCBzdGVwKToKLSAg
ICAgICAgcmV0dXJuIG5vdCBzZWxmLmRvU3RlcElmKHN0ZXApCi0KLSAgICBkZWYgZXZhbHVhdGVD
b21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJldHVybiBzaGVsbC5Db21waWxlLmV2YWx1YXRl
Q29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRz
KGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4aW4pOgotICAgIG5hbWUgPSAnYW5hbHl6
ZS1jb21waWxlLXdlYmtpdC1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0gWydhbmFseXplLWNv
bXBpbGUtd2Via2l0LXJlc3VsdHMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnYW5hbHl6ZS1j
b21waWxlLXdlYmtpdC1yZXN1bHRzJ10KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAg
c2VsZi5lcnJvcl9sb2dzID0ge30KLSAgICAgICAgc2VsZi5jb21waWxlX3dlYmtpdF9zdGVwID0g
Q29tcGlsZVdlYktpdC5uYW1lCi0gICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2dyb3VwJykg
PT0gJ2pzYyc6Ci0gICAgICAgICAgICBzZWxmLmNvbXBpbGVfd2Via2l0X3N0ZXAgPSBDb21waWxl
SlNDLm5hbWUKLSAgICAgICAgZCA9IHNlbGYuZ2V0UmVzdWx0cyhzZWxmLmNvbXBpbGVfd2Via2l0
X3N0ZXApCi0gICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczogc2VsZi5hbmFseXplUmVz
dWx0cygpKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0gICAgZGVmIGFu
YWx5emVSZXN1bHRzKHNlbGYpOgotICAgICAgICBjb21waWxlX3dpdGhvdXRfcGF0Y2hfc3RlcCA9
IENvbXBpbGVXZWJLaXRXaXRob3V0UGF0Y2gubmFtZQotICAgICAgICBpZiBzZWxmLmdldFByb3Bl
cnR5KCdncm91cCcpID09ICdqc2MnOgotICAgICAgICAgICAgY29tcGlsZV93aXRob3V0X3BhdGNo
X3N0ZXAgPSBDb21waWxlSlNDV2l0aG91dFBhdGNoLm5hbWUKLSAgICAgICAgY29tcGlsZV93aXRo
b3V0X3BhdGNoX3Jlc3VsdCA9IHNlbGYuZ2V0U3RlcFJlc3VsdChjb21waWxlX3dpdGhvdXRfcGF0
Y2hfc3RlcCkKLQotICAgICAgICBpZiBjb21waWxlX3dpdGhvdXRfcGF0Y2hfcmVzdWx0ID09IEZB
SUxVUkU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1VuYWJsZSB0byBidWlsZCBXZWJLaXQgd2l0
aG91dCBwYXRjaCwgcmV0cnlpbmcgYnVpbGQnCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9u
RG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuc2VuZF9lbWFpbF9mb3JfcHJlZXhpc3Rp
bmdfYnVpbGRfZmFpbHVyZSgpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0g
ICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBSRVRSWSkKLSAg
ICAgICAgICAgIHJldHVybiBkZWZlci5zdWNjZWVkKE5vbmUpCi0KLSAgICAgICAgc2VsZi5idWls
ZC5yZXN1bHRzID0gRkFJTFVSRQotICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHko
J3BhdGNoX2lkJywgJycpCi0gICAgICAgIG1lc3NhZ2UgPSAnUGF0Y2gge30gZG9lcyBub3QgYnVp
bGQnLmZvcm1hdChwYXRjaF9pZCkKLSAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9uZXdfYnVp
bGRfZmFpbHVyZSgpCi0KLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCi0g
ICAgICAgIHNlbGYuZmluaXNoZWQoRkFJTFVSRSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
YnVpbGRfZmluaXNoX3N1bW1hcnknLCBtZXNzYWdlKQotICAgICAgICBpZiBzZWxmLmdldFByb3Bl
cnR5KCdidWlsZGVybmFtZScsICcnKS5sb3dlcigpID09ICdjb21taXQtcXVldWUnOgotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JywgbWVzc2FnZSkK
LSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtDb21tZW50
T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNoKCldKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1NldENv
bW1pdFF1ZXVlTWludXNGbGFnT25QYXRjaCgpXSkKLQotICAgIEBkZWZlci5pbmxpbmVDYWxsYmFj
a3MKLSAgICBkZWYgZ2V0UmVzdWx0cyhzZWxmLCBuYW1lKToKLSAgICAgICAgc3RlcCA9IHNlbGYu
Z2V0QnVpbGRTdGVwQnlOYW1lKG5hbWUpCi0gICAgICAgIGlmIG5vdCBzdGVwOgotICAgICAgICAg
ICAgZGVmZXIucmV0dXJuVmFsdWUoTm9uZSkKLQotICAgICAgICBsb2dzID0geWllbGQgc2VsZi5t
YXN0ZXIuZGIubG9ncy5nZXRMb2dzKHN0ZXAuc3RlcGlkKQotICAgICAgICBsb2cgPSBuZXh0KChs
b2cgZm9yIGxvZyBpbiBsb2dzIGlmIGxvZ1snbmFtZSddID09IHUnZXJyb3JzJyksIE5vbmUpCi0g
ICAgICAgIGlmIG5vdCBsb2c6Ci0gICAgICAgICAgICBkZWZlci5yZXR1cm5WYWx1ZShOb25lKQot
Ci0gICAgICAgIGxhc3RsaW5lID0gaW50KG1heCgwLCBsb2dbJ251bV9saW5lcyddIC0gMSkpCi0g
ICAgICAgIGxvZ0xpbmVzID0geWllbGQgc2VsZi5tYXN0ZXIuZGIubG9ncy5nZXRMb2dMaW5lcyhs
b2dbJ2lkJ10sIDAsIGxhc3RsaW5lKQotICAgICAgICBpZiBsb2dbJ3R5cGUnXSA9PSAncyc6Ci0g
ICAgICAgICAgICBsb2dMaW5lcyA9ICdcbicuam9pbihbbGluZVsxOl0gZm9yIGxpbmUgaW4gbG9n
TGluZXMuc3BsaXRsaW5lcygpXSkKLQotICAgICAgICBzZWxmLmVycm9yX2xvZ3NbbmFtZV0gPSBs
b2dMaW5lcwotCi0gICAgZGVmIGdldFN0ZXBSZXN1bHQoc2VsZiwgc3RlcF9uYW1lKToKLSAgICAg
ICAgZm9yIHN0ZXAgaW4gc2VsZi5idWlsZC5leGVjdXRlZFN0ZXBzOgotICAgICAgICAgICAgaWYg
c3RlcC5uYW1lID09IHN0ZXBfbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RlcC5yZXN1
bHRzCi0KLSAgICBkZWYgZ2V0QnVpbGRTdGVwQnlOYW1lKHNlbGYsIHN0ZXBfbmFtZSk6Ci0gICAg
ICAgIGZvciBzdGVwIGluIHNlbGYuYnVpbGQuZXhlY3V0ZWRTdGVwczoKLSAgICAgICAgICAgIGlm
IHN0ZXAubmFtZSA9PSBzdGVwX25hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAKLSAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRlZiBmaWx0ZXJfbG9nc19jb250YWluaW5nX2Vycm9y
KHNlbGYsIGxvZ3MsIHNlYXJjaFN0cmluZz0ncnJvcjonLCBtYXhfbnVtX2xpbmVzPTEwKToKLSAg
ICAgICAgaWYgbm90IGxvZ3M6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBmaWx0
ZXJlZF9sb2dzID0gW10KLSAgICAgICAgZm9yIGxpbmUgaW4gbG9ncy5zcGxpdGxpbmVzKCk6Ci0g
ICAgICAgICAgICBpZiBzZWFyY2hTdHJpbmcgaW4gbGluZToKLSAgICAgICAgICAgICAgICBmaWx0
ZXJlZF9sb2dzLmFwcGVuZChsaW5lKQotICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGZpbHRlcmVk
X2xvZ3NbLW1heF9udW1fbGluZXM6XSkKLQotICAgIGRlZiBzZW5kX2VtYWlsX2Zvcl9uZXdfYnVp
bGRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGF0Y2hfaWQgPSBz
ZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAgICAgICAgaWYgbm90IHNlbGYu
c2hvdWxkX3NlbmRfZW1haWwocGF0Y2hfaWQpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAn
JykKLSAgICAgICAgICAgIGJ1Z19pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z19pZCcsICcnKQot
ICAgICAgICAgICAgYnVnX3RpdGxlID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVnX3RpdGxlJywgJycp
Ci0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUn
LCAnJykKLSAgICAgICAgICAgIHBhdGNoX2F1dGhvciA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNo
X2F1dGhvcicsICcnKQotICAgICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdw
bGF0Zm9ybScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9i
dWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVp
bGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBsb2dzID0gc2Vs
Zi5lcnJvcl9sb2dzLmdldChzZWxmLmNvbXBpbGVfd2Via2l0X3N0ZXApCi0gICAgICAgICAgICBp
ZiBwbGF0Zm9ybSBpbiBbJ3dpbicsICd3aW5jYWlybyddOgotICAgICAgICAgICAgICAgIGxvZ3Mg
PSBzZWxmLmZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3IobG9ncywgc2VhcmNoU3RyaW5nPSdl
cnJvciAnKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dzID0gc2VsZi5m
aWx0ZXJfbG9nc19jb250YWluaW5nX2Vycm9yKGxvZ3MpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1
YmplY3QgPSB1J0J1aWxkIGZhaWx1cmUgZm9yIFBhdGNoIHt9OiB7fScuZm9ybWF0KHBhdGNoX2lk
LCBidWdfdGl0bGUpCi0gICAgICAgICAgICBlbWFpbF90ZXh0ID0gJ0VXUyBoYXMgZGV0ZWN0ZWQg
YnVpbGQgZmFpbHVyZSBvbiB7fScuZm9ybWF0KGJ1aWxkZXJfbmFtZSkKLSAgICAgICAgICAgIGVt
YWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9Ij5QYXRjaCB7fTwvYT4nLmZv
cm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRjaF9pZCkKLSAgICAgICAgICAg
IGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7fTwvYT4uJy5mb3JtYXQoQnVn
emlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCi0gICAgICAgICAgICBlbWFpbF90ZXh0ICs9
ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9XG5cblBhdGNoIGF1dGhvcjog
e30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKLSAgICAgICAgICAgIGlmIGxvZ3M6
Ci0gICAgICAgICAgICAgICAgbG9ncyA9IGxvZ3MucmVwbGFjZSgnJicsICcmYW1wOycpLnJlcGxh
Y2UoJzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpCi0gICAgICAgICAgICAgICAgZW1h
aWxfdGV4dCArPSB1J1xuXG5FcnJvciBsaW5lczpcblxuPGNvZGU+e308L2NvZGU+Jy5mb3JtYXQo
bG9ncykKLSAgICAgICAgICAgIGVtYWlsX3RleHQgKz0gJ1xuXG5UbyB1bnN1YnNjcmlibGUgZnJv
bSB0aGVzZSBub3RpZmljYXRpb25zIG9yIHRvIHByb3ZpZGUgYW55IGZlZWRiYWNrIHBsZWFzZSBl
bWFpbCBhYWthc2hfamFpbkBhcHBsZS5jb20nCi0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygn
c3RkaW8nLCAnU2VuZGluZyBlbWFpbCBub3RpZmljYXRpb24gdG8ge30nLmZvcm1hdChwYXRjaF9h
dXRob3IpKQotICAgICAgICAgICAgc2VuZF9lbWFpbF90b19wYXRjaF9hdXRob3IocGF0Y2hfYXV0
aG9yLCBlbWFpbF9zdWJqZWN0LCBlbWFpbF90ZXh0LCBwYXRjaF9pZCkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1h
aWwgZm9yIG5ldyBidWlsZCBmYWlsdXJlOiB7fScuZm9ybWF0KGUpKQotCi0gICAgZGVmIHNlbmRf
ZW1haWxfZm9yX3ByZWV4aXN0aW5nX2J1aWxkX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1l
JywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3dvcmtl
cm5hbWUnLCAnJykKLSAgICAgICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxh
dGZvcm0nLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7fSMvYnVpbGRlcnMve30vYnVp
bGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxkYm90VVJMLCBzZWxmLmJ1aWxk
Ll9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQotICAgICAgICAgICAgbG9ncyA9IHNlbGYu
ZXJyb3JfbG9ncy5nZXQoc2VsZi5jb21waWxlX3dlYmtpdF9zdGVwKQotICAgICAgICAgICAgaWYg
cGxhdGZvcm0gaW4gWyd3aW4nLCAnd2luY2Fpcm8nXToKLSAgICAgICAgICAgICAgICBsb2dzID0g
c2VsZi5maWx0ZXJfbG9nc19jb250YWluaW5nX2Vycm9yKGxvZ3MsIHNlYXJjaFN0cmluZz0nZXJy
b3IgJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbG9ncyA9IHNlbGYuZmls
dGVyX2xvZ3NfY29udGFpbmluZ19lcnJvcihsb2dzKQotCi0gICAgICAgICAgICBlbWFpbF9zdWJq
ZWN0ID0gdSdCdWlsZCBmYWlsdXJlIG9uIHRydW5rIG9uIHt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1l
KQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdGYWlsZWQgdG8gYnVpbGQgV2ViS2l0IHdpdGhv
dXQgcGF0Y2ggaW4ge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fScuZm9ybWF0KGJ1aWxk
X3VybCwgYnVpbGRlcl9uYW1lLCB3b3JrZXJfbmFtZSkKLSAgICAgICAgICAgIGlmIGxvZ3M6Ci0g
ICAgICAgICAgICAgICAgbG9ncyA9IGxvZ3MucmVwbGFjZSgnJicsICcmYW1wOycpLnJlcGxhY2Uo
JzwnLCAnJmx0OycpLnJlcGxhY2UoJz4nLCAnJmd0OycpCi0gICAgICAgICAgICAgICAgZW1haWxf
dGV4dCArPSB1J1xuXG5FcnJvciBsaW5lczpcblxuPGNvZGU+e308L2NvZGU+Jy5mb3JtYXQobG9n
cykKLSAgICAgICAgICAgIHJlZmVyZW5jZSA9ICdwcmVleGlzdGluZy1idWlsZC1mYWlsdXJlLXt9
LXt9Jy5mb3JtYXQoYnVpbGRlcl9uYW1lLCBkYXRlLnRvZGF5KCkuc3RyZnRpbWUoIiVZLSVkLSVt
IikpCi0gICAgICAgICAgICBzZW5kX2VtYWlsX3RvX2JvdF93YXRjaGVycyhlbWFpbF9zdWJqZWN0
LCBlbWFpbF90ZXh0LCBidWlsZGVyX25hbWUsIHJlZmVyZW5jZSkKLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwg
Zm9yIGJ1aWxkIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLQotY2xhc3MgQ29tcGlsZUpTQyhD
b21waWxlV2ViS2l0KToKLSAgICBuYW1lID0gJ2NvbXBpbGUtanNjJwotICAgIGRlc2NyaXB0aW9u
RG9uZSA9IFsnQ29tcGlsZWQgSlNDJ10KLSAgICBjb21tYW5kID0gWydwZXJsJywgJ1Rvb2xzL1Nj
cmlwdHMvYnVpbGQtanNjJywgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0K
LQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZ3JvdXAn
LCAnanNjJykKLSAgICAgICAgcmV0dXJuIENvbXBpbGVXZWJLaXQuc3RhcnQoc2VsZikKLQotICAg
IGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgPT0g
RkFJTFVSRToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQgdG8gY29tcGls
ZSBKU0MnfQotICAgICAgICByZXR1cm4gc2hlbGwuQ29tcGlsZS5nZXRSZXN1bHRTdW1tYXJ5KHNl
bGYpCi0KLQotY2xhc3MgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaChDb21waWxlSlNDKToKLSAgICBu
YW1lID0gJ2NvbXBpbGUtanNjLXdpdGhvdXQtcGF0Y2gnCi0KLSAgICBkZWYgZXZhbHVhdGVDb21t
YW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJldHVybiBzaGVsbC5Db21waWxlLmV2YWx1YXRlQ29t
bWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhzaGVsbC5U
ZXN0KToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0JwotICAgIGRlc2NyaXB0aW9uID0gWydqc2Nv
cmUtdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydqc2NvcmUtdGVzdHMn
XQotICAgIGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotICAgIGpzb25GaWxlTmFtZSA9ICdqc2NfcmVz
dWx0cy5qc29uJwotICAgIGxvZ2ZpbGVzID0geydqc29uJzoganNvbkZpbGVOYW1lfQotICAgIGNv
bW1hbmQgPSBbJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMn
LCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9y
bWF0KGpzb25GaWxlTmFtZSksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyld
Ci0gICAgcHJlZml4ID0gJ2pzY18nCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVlfSU5fU1RB
VFVTID0gNQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hl
bGwuVGVzdC5fX2luaXRfXyhzZWxmLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLSAgICAg
ICAgc2VsZi5iaW5hcnlGYWlsdXJlcyA9IFtdCi0gICAgICAgIHNlbGYuc3RyZXNzVGVzdEZhaWx1
cmVzID0gW10KLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2JzZXJ2
ZXJfanNvbiA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKCkKLSAgICAgICAgc2VsZi5h
ZGRMb2dPYnNlcnZlcignanNvbicsIHNlbGYubG9nX29ic2VydmVyX2pzb24pCi0KLSAgICAgICAg
IyBhZGQgcmVtb3RlcyBjb25maWd1cmF0aW9uIGZpbGUgcGF0aCB0byB0aGUgY29tbWFuZCBsaW5l
IGlmIG5lZWRlZAotICAgICAgICByZW1vdGVzZmlsZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3JlbW90
ZXMnLCBGYWxzZSkKLSAgICAgICAgaWYgcmVtb3Rlc2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLmNv
bW1hbmQuYXBwZW5kKCctLXJlbW90ZS1jb25maWctZmlsZT17MH0nLmZvcm1hdChyZW1vdGVzZmls
ZSkpCi0KLSAgICAgICAgcGxhdGZvcm0gPSBzZWxmLmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0g
ICAgICAgIGlmIHBsYXRmb3JtID09ICdqc2Mtb25seScgYW5kIHJlbW90ZXNmaWxlOgotICAgICAg
ICAgICAgc2VsZi5jb21tYW5kLmV4dGVuZChbJy0tbm8tdGVzdG1hc20nLCAnLS1uby10ZXN0YWly
JywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICctLW5vLXRlc3RhcGknLCAnLS1tZW1v
cnktbGltaXRlZCddKQotICAgICAgICBhcHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHNlbGYu
Z2V0UHJvcGVydHkoJ3BsYXRmb3JtJyksIHNlbGYuZ2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScp
KQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5zdGFydChzZWxmKQotCi0gICAgZGVmIGV2YWx1
YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IHNoZWxsLlRlc3QuZXZhbHVhdGVD
b21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgaWYgcmMgPT0gU1VDQ0VTUyBvciByYyA9PSBXQVJO
SU5HUzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnUGFzc2VkIEpTQyB0ZXN0cycKLSAgICAgICAg
ICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQotICAgICAgICAgICAgc2VsZi5idWls
ZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVk
KFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYnVp
bGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3Nl
ZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwgUmVSdW5KYXZhU2Ny
aXB0Q29yZVRlc3RzKCldKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiBjb21tYW5kQ29t
cGxldGUoc2VsZiwgY21kKToKLSAgICAgICAgc2hlbGwuVGVzdC5jb21tYW5kQ29tcGxldGUoc2Vs
ZiwgY21kKQotICAgICAgICBsb2dMaW5lcyA9IHNlbGYubG9nX29ic2VydmVyX2pzb24uZ2V0U3Rk
b3V0KCkKLSAgICAgICAganNvbl90ZXh0ID0gJycuam9pbihbbGluZSBmb3IgbGluZSBpbiBsb2dM
aW5lcy5zcGxpdGxpbmVzKCldKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBqc2NfcmVzdWx0
cyA9IGpzb24ubG9hZHMoanNvbl90ZXh0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4
OgotICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdFUlJPUjogdW5hYmxlIHRv
IHBhcnNlIGRhdGEsIGV4Y2VwdGlvbjoge30nLmZvcm1hdChleCkpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbE1hc21UZXN0c1Bhc3NlZCcpID09
IEZhbHNlOgotICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RtYXNt
JykKLSAgICAgICAgaWYganNjX3Jlc3VsdHMuZ2V0KCdhbGxBaXJUZXN0c1Bhc3NlZCcpID09IEZh
bHNlOgotICAgICAgICAgICAgc2VsZi5iaW5hcnlGYWlsdXJlcy5hcHBlbmQoJ3Rlc3RhaXInKQot
ICAgICAgICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbEIzVGVzdHNQYXNzZWQnKSA9PSBGYWxzZToK
LSAgICAgICAgICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0YjMnKQotICAgICAg
ICBpZiBqc2NfcmVzdWx0cy5nZXQoJ2FsbERGR1Rlc3RzUGFzc2VkJykgPT0gRmFsc2U6Ci0gICAg
ICAgICAgICBzZWxmLmJpbmFyeUZhaWx1cmVzLmFwcGVuZCgndGVzdGRmZycpCi0gICAgICAgIGlm
IGpzY19yZXN1bHRzLmdldCgnYWxsQXBpVGVzdHNQYXNzZWQnKSA9PSBGYWxzZToKLSAgICAgICAg
ICAgIHNlbGYuYmluYXJ5RmFpbHVyZXMuYXBwZW5kKCd0ZXN0YXBpJykKLQotICAgICAgICBzZWxm
LnN0cmVzc1Rlc3RGYWlsdXJlcyA9IGpzY19yZXN1bHRzLmdldCgnc3RyZXNzVGVzdEZhaWx1cmVz
JykKLSAgICAgICAgaWYgc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXM6Ci0gICAgICAgICAgICBzZWxm
LnNldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgc2VsZi5z
dHJlc3NUZXN0RmFpbHVyZXMpCi0gICAgICAgIGlmIHNlbGYuYmluYXJ5RmFpbHVyZXM6Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KHNlbGYucHJlZml4ICsgJ2JpbmFyeV9mYWlsdXJlcycs
IHNlbGYuYmluYXJ5RmFpbHVyZXMpCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToK
LSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1MgYW5kIChzZWxmLnN0cmVzc1Rlc3RG
YWlsdXJlcyBvciBzZWxmLmJpbmFyeUZhaWx1cmVzKToKLSAgICAgICAgICAgIHN0YXR1cyA9ICcn
Ci0gICAgICAgICAgICBpZiBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJlczoKLSAgICAgICAgICAgICAg
ICBudW1fZmFpbHVyZXMgPSBsZW4oc2VsZi5zdHJlc3NUZXN0RmFpbHVyZXMpCi0gICAgICAgICAg
ICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIG51bV9mYWlsdXJlcyA+IDEgZWxzZSAnJwotICAg
ICAgICAgICAgICAgIGZhaWx1cmVzX3RvX2Rpc3BsYXkgPSBzZWxmLnN0cmVzc1Rlc3RGYWlsdXJl
c1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV9JTl9TVEFUVVNdCi0gICAgICAgICAgICAg
ICAgc3RhdHVzID0gJ0ZvdW5kIHt9IGpzYyBzdHJlc3MgdGVzdCBmYWlsdXJle306ICcuZm9ybWF0
KG51bV9mYWlsdXJlcywgcGx1cmFsU3VmZml4KSArICcsICcuam9pbihmYWlsdXJlc190b19kaXNw
bGF5KQotICAgICAgICAgICAgICAgIGlmIG51bV9mYWlsdXJlcyA+IHNlbGYuTlVNX0ZBSUxVUkVT
X1RPX0RJU1BMQVlfSU5fU1RBVFVTOgotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgKz0gJyAu
Li4nCi0gICAgICAgICAgICBpZiBzZWxmLmJpbmFyeUZhaWx1cmVzOgotICAgICAgICAgICAgICAg
IGlmIHN0YXR1czoKLSAgICAgICAgICAgICAgICAgICAgc3RhdHVzICs9ICcsICcKLSAgICAgICAg
ICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKHNlbGYuYmluYXJ5RmFpbHVyZXMpID4g
MSBlbHNlICcnCi0gICAgICAgICAgICAgICAgc3RhdHVzICs9ICdKU0MgdGVzdCBiaW5hcnkgZmFp
bHVyZXt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgJywgJy5qb2luKHNlbGYuYmluYXJ5RmFp
bHVyZXMpKQotCi0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHVuaWNvZGUoc3RhdHVzKX0K
LQotICAgICAgICByZXR1cm4gc2hlbGwuVGVzdC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYpCi0KLSAg
ICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIF9hZGRUb0xvZyhzZWxmLCBsb2dOYW1l
LCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9nID0gc2VsZi5nZXRMb2co
bG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgbG9nID0geWll
bGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAgbG9nLmFkZFN0ZG91dChtZXNzYWdlKQot
Ci0KLWNsYXNzIFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0cyhSdW5KYXZhU2NyaXB0Q29yZVRlc3Rz
KToKLSAgICBuYW1lID0gJ2pzY29yZS10ZXN0LXJlcnVuJwotICAgIHByZWZpeCA9ICdqc2NfcmVy
dW5fJwotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9
IHNoZWxsLlRlc3QuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLSAgICAgICAgZmlyc3RfcnVu
X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWlsdXJl
cycsIFtdKSArIHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0g
ICAgICAgIHNlY29uZF9ydW5fZmFpbHVyZXMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgW10pICsgc2VsZi5nZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmxha3lfZmFpbHVyZXMgPSBmaXJz
dF9ydW5fZmFpbHVyZXMudW5pb24oc2Vjb25kX3J1bl9mYWlsdXJlcykgLSBmaXJzdF9ydW5fZmFp
bHVyZXMuaW50ZXJzZWN0aW9uKHNlY29uZF9ydW5fZmFpbHVyZXMpCi0gICAgICAgIGZsYWt5X2Zh
aWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWlsdXJlcykKLQotICAgICAgICBpZiBy
YyA9PSBTVUNDRVNTIG9yIHJjID09IFdBUk5JTkdTOgotICAgICAgICAgICAgcGx1cmFsU3VmZml4
ID0gJ3MnIGlmIGxlbihmbGFreV9mYWlsdXJlcykgPiAxIGVsc2UgJycKLSAgICAgICAgICAgIG1l
c3NhZ2UgPSAnRm91bmQgZmxha3kgdGVzdHt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgZmxh
a3lfZmFpbHVyZXNfc3RyaW5nKQotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBt
ZXNzYWdlCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBTVUNDRVNTCi0gICAgICAg
ICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBTVUNDRVNTKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycs
IFRydWUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChb
VW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFk
ZFVSTHM9RmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQ29tcGlsZUpTQ1dpdGhvdXRQYXRjaCgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFs
c2UsIGFkZFVSTHM9RmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgS2lsbE9sZFByb2Nlc3NlcygpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUnVuSlNDVGVzdHNXaXRob3V0UGF0Y2goKSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuYWx5emVKU0NUZXN0
c1Jlc3VsdHMoKV0pCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFJ1bkpTQ1Rlc3RzV2l0
aG91dFBhdGNoKFJ1bkphdmFTY3JpcHRDb3JlVGVzdHMpOgotICAgIG5hbWUgPSAnanNjb3JlLXRl
c3Qtd2l0aG91dC1wYXRjaCcKLSAgICBwcmVmaXggPSAnanNjX2NsZWFuX3RyZWVfJwotCi0gICAg
ZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByZXR1cm4gc2hlbGwuVGVz
dC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotCi0KLWNsYXNzIEFuYWx5emVKU0NUZXN0c1Jl
c3VsdHMoYnVpbGRzdGVwLkJ1aWxkU3RlcCk6Ci0gICAgbmFtZSA9ICdhbmFseXplLWpzYy10ZXN0
cy1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0gWydhbmFseXplLWpzYy10ZXN0LXJlc3VsdHMn
XQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnYW5hbHl6ZS1qc2MtdGVzdHMtcmVzdWx0cyddCi0g
ICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgot
ICAgICAgICBmaXJzdF9ydW5fc3RyZXNzX2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHko
J2pzY19zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgZmlyc3RfcnVuX2JpbmFy
eV9mYWlsdXJlcyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywg
W10pKQotICAgICAgICBzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcyA9IHNldChzZWxmLmdldFBy
b3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHNl
Y29uZF9ydW5fYmluYXJ5X2ZhaWx1cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19yZXJ1
bl9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1
cmVzID0gc2V0KHNlbGYuZ2V0UHJvcGVydHkoJ2pzY19jbGVhbl90cmVlX3N0cmVzc190ZXN0X2Zh
aWx1cmVzJywgW10pKQotICAgICAgICBjbGVhbl90cmVlX2JpbmFyeV9mYWlsdXJlcyA9IHNldChz
ZWxmLmdldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbXSkpCi0g
ICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXMgPSBsaXN0KGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1
cmVzKSArIGxpc3QoY2xlYW5fdHJlZV9zdHJlc3NfZmFpbHVyZXMpCi0gICAgICAgIGNsZWFuX3Ry
ZWVfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGNsZWFuX3RyZWVfZmFpbHVyZXNbOnNlbGYu
TlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotCi0gICAgICAgIHN0cmVzc19mYWlsdXJlc193aXRo
X3BhdGNoID0gZmlyc3RfcnVuX3N0cmVzc19mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1
bl9zdHJlc3NfZmFpbHVyZXMpCi0gICAgICAgIGJpbmFyeV9mYWlsdXJlc193aXRoX3BhdGNoID0g
Zmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9iaW5hcnlf
ZmFpbHVyZXMpCi0KLSAgICAgICAgZmxha3lfc3RyZXNzX2ZhaWx1cmVzID0gZmlyc3RfcnVuX3N0
cmVzc19mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJlcykgLSBmaXJzdF9y
dW5fc3RyZXNzX2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX3N0cmVzc19mYWlsdXJl
cykKLSAgICAgICAgZmxha3lfYmluYXJ5X2ZhaWx1cmVzID0gZmlyc3RfcnVuX2JpbmFyeV9mYWls
dXJlcy51bmlvbihzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykgLSBmaXJzdF9ydW5fYmluYXJ5
X2ZhaWx1cmVzLmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykKLSAgICAg
ICAgZmxha3lfZmFpbHVyZXMgPSAobGlzdChmbGFreV9iaW5hcnlfZmFpbHVyZXMpICsgbGlzdChm
bGFreV9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0KLSAg
ICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGZsYWt5X2ZhaWx1cmVzKQot
Ci0gICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXMgPSBzdHJlc3NfZmFpbHVyZXNfd2l0aF9wYXRj
aCAtIGNsZWFuX3RyZWVfc3RyZXNzX2ZhaWx1cmVzCi0gICAgICAgIG5ld19iaW5hcnlfZmFpbHVy
ZXMgPSBiaW5hcnlfZmFpbHVyZXNfd2l0aF9wYXRjaCAtIGNsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1
cmVzCi0gICAgICAgIG5ld19zdHJlc3NfZmFpbHVyZXNfdG9fZGlzcGxheSA9ICcsICcuam9pbihs
aXN0KG5ld19zdHJlc3NfZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkK
LSAgICAgICAgbmV3X2JpbmFyeV9mYWlsdXJlc190b19kaXNwbGF5ID0gJywgJy5qb2luKGxpc3Qo
bmV3X2JpbmFyeV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldKQotCi0g
ICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GYWlsdXJlcyBpbiBmaXJzdCBydW46
IHt9Jy5mb3JtYXQoKGxpc3QoZmlyc3RfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KGZpcnN0
X3J1bl9zdHJlc3NfZmFpbHVyZXMpKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQot
ICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gc2Vjb25kIHJ1
bjoge30nLmZvcm1hdCgobGlzdChzZWNvbmRfcnVuX2JpbmFyeV9mYWlsdXJlcykgKyBsaXN0KHNl
Y29uZF9ydW5fc3RyZXNzX2ZhaWx1cmVzKSlbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVld
KSkKLSAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbkZsYWt5IFRlc3RzOiB7fScu
Zm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0cmluZykpCi0gICAgICAgIHNlbGYuX2FkZFRvTG9nKCdz
dGRlcnInLCAnXG5GYWlsdXJlcyBvbiBjbGVhbiB0cmVlOiB7fScuZm9ybWF0KGNsZWFuX3RyZWVf
ZmFpbHVyZXNfc3RyaW5nKSkKLQotICAgICAgICBpZiBuZXdfc3RyZXNzX2ZhaWx1cmVzIG9yIG5l
d19iaW5hcnlfZmFpbHVyZXM6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywg
J1xuTmV3IGJpbmFyeSBmYWlsdXJlczoge30uXG5OZXcgc3RyZXNzIHRlc3QgZmFpbHVyZXM6IHt9
XG4nLmZvcm1hdChuZXdfYmluYXJ5X2ZhaWx1cmVzX3RvX2Rpc3BsYXksIG5ld19zdHJlc3NfZmFp
bHVyZXNfdG9fZGlzcGxheSkpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKEZBSUxVUkUpCi0g
ICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBGQUlMVVJFCi0gICAgICAgICAgICBtZXNz
YWdlID0gJycKLSAgICAgICAgICAgIGlmIG5ld19iaW5hcnlfZmFpbHVyZXM6Ci0gICAgICAgICAg
ICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfYmluYXJ5X2ZhaWx1cmVzKSA+IDEg
ZWxzZSAnJwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnRm91bmQge30gbmV3IEpTQyBiaW5h
cnkgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxlbihuZXdfYmluYXJ5X2ZhaWx1cmVzKSwgcGx1cmFs
U3VmZml4LCBuZXdfYmluYXJ5X2ZhaWx1cmVzX3RvX2Rpc3BsYXkpCi0gICAgICAgICAgICBpZiBu
ZXdfc3RyZXNzX2ZhaWx1cmVzOgotICAgICAgICAgICAgICAgIGlmIG1lc3NhZ2U6Ci0gICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJywgJwotICAgICAgICAgICAgICAgIHBsdXJhbFN1ZmZp
eCA9ICdzJyBpZiBsZW4obmV3X3N0cmVzc19mYWlsdXJlcykgPiAxIGVsc2UgJycKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlICs9ICdGb3VuZCB7fSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmV7
fToge30nLmZvcm1hdChsZW4obmV3X3N0cmVzc19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3
X3N0cmVzc19mYWlsdXJlc190b19kaXNwbGF5KQotICAgICAgICAgICAgICAgIGlmIGxlbihuZXdf
c3RyZXNzX2ZhaWx1cmVzKSA+IHNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVk6Ci0gICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0
aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChb
bWVzc2FnZV0sIEZBSUxVUkUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9hZGRU
b0xvZygnc3RkZXJyJywgJ1xuTm8gbmV3IGZhaWx1cmVzXG4nKQotICAgICAgICAgICAgc2VsZi5m
aW5pc2hlZChTVUNDRVNTKQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VT
UwotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAnUGFzc2VkIEpTQyB0ZXN0cycK
LSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4oY2xlYW5fdHJlZV9mYWlsdXJl
cykgPiAxIGVsc2UgJycKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnJwotICAgICAgICAgICAgaWYg
Y2xlYW5fdHJlZV9mYWlsdXJlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHt9
IHByZS1leGlzdGluZyBKU0MgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKGNsZWFuX3Ry
ZWVfZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgsIGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5nKQot
ICAgICAgICAgICAgICAgIGZvciBjbGVhbl90cmVlX2ZhaWx1cmUgaW4gY2xlYW5fdHJlZV9mYWls
dXJlc1s6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV06Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUoY2xlYW5fdHJlZV9mYWls
dXJlKQotICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gc2VsZi5OVU1f
RkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwot
ICAgICAgICAgICAgaWYgZmxha3lfZmFpbHVyZXM6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSAr
PSAnIEZvdW5kIGZsYWt5IHRlc3RzOiB7fScuZm9ybWF0KGZsYWt5X2ZhaWx1cmVzX3N0cmluZykK
LSAgICAgICAgICAgICAgICBmb3IgZmxha3lfZmFpbHVyZSBpbiBmbGFreV9mYWlsdXJlczoKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKGZsYWt5
X2ZhaWx1cmUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2Vd
LCBTVUNDRVNTKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0gICAgQGRl
ZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVz
c2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05h
bWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNl
bGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQotICAg
IGRlZiBzZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1
aWxkZXJuYW1lJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVy
dHkoJ3dvcmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7fSMvYnVpbGRl
cnMve30vYnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxkYm90VVJMLCBz
ZWxmLmJ1aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQotICAgICAgICAgICAgaGlz
dG9yeV91cmwgPSAne30/c3VpdGU9amF2YXNjcmlwdGNvcmUtdGVzdHMmdGVzdD17fScuZm9ybWF0
KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1YmplY3Qg
PSB1J0ZsYWt5IHRlc3Q6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxf
dGV4dCA9ICdGbGFreSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29y
a2VyOiB7fVxuXG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWls
ZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1h
aWxfdG9fYm90X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFt
ZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZs
YWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJl
X2V4aXN0aW5nX2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykK
LSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScs
ICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMve30n
LmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxk
ZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7fT9z
dWl0ZT1qYXZhc2NyaXB0Y29yZS10ZXN0cyZ0ZXN0PXt9Jy5mb3JtYXQoUkVTVUxUU19EQl9VUkws
IHRlc3RfbmFtZSkKLQotICAgICAgICAgICAgZW1haWxfc3ViamVjdCA9IHUnUHJlLWV4aXN0aW5n
IHRlc3QgZmFpbHVyZToge30nLmZvcm1hdCh0ZXN0X25hbWUpCi0gICAgICAgICAgICBlbWFpbF90
ZXh0ID0gJ1Rlc3Qge30gZmFpbGVkIG9uIGNsZWFuIHRyZWUgcnVuIGluIHt9LlxuXG5CdWlsZGVy
OiB7fVxuXG5Xb3JrZXI6IHt9XG5cbkhpc3Rvcnk6IHt9Jy5mb3JtYXQodGVzdF9uYW1lLCBidWls
ZF91cmwsIGJ1aWxkZXJfbmFtZSwgd29ya2VyX25hbWUsIGhpc3RvcnlfdXJsKQotICAgICAgICAg
ICAgc2VuZF9lbWFpbF90b19ib3Rfd2F0Y2hlcnMoZW1haWxfc3ViamVjdCwgZW1haWxfdGV4dCwg
YnVpbGRlcl9uYW1lLCAncHJlZXhpc3Rpbmcte30nLmZvcm1hdCh0ZXN0X25hbWUpKQotICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBwcmludCgnRXJyb3IgaW4gc2Vu
ZGluZyBlbWFpbCBmb3IgcHJlLWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCi0KLQot
Ci1jbGFzcyBDbGVhbkJ1aWxkKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAnZGVsZXRlLVdl
YktpdEJ1aWxkLWRpcmVjdG9yeScKLSAgICBkZXNjcmlwdGlvbiA9IFsnZGVsZXRpbmcgV2ViS2l0
QnVpbGQgZGlyZWN0b3J5J10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0RlbGV0ZWQgV2ViS2l0
QnVpbGQgZGlyZWN0b3J5J10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCBXaXRoUHJvcGVydGllcygnLS1wbGF0Zm9ybT0lKGZ1
bGxQbGF0Zm9ybSlzJyksIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlvbilzJyldCi0K
LQotY2xhc3MgS2lsbE9sZFByb2Nlc3NlcyhzaGVsbC5Db21waWxlKToKLSAgICBuYW1lID0gJ2tp
bGwtb2xkLXByb2Nlc3NlcycKLSAgICBkZXNjcmlwdGlvbiA9IFsna2lsbGluZyBvbGQgcHJvY2Vz
c2VzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0tpbGxlZCBvbGQgcHJvY2Vzc2VzJ10KLSAg
ICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQt
cHJvY2Vzc2VzJywgJ2J1aWxkYm90J10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJn
cyk6Ci0gICAgICAgIHN1cGVyKEtpbGxPbGRQcm9jZXNzZXMsIHNlbGYpLl9faW5pdF9fKHRpbWVv
dXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVmIGV2YWx1YXRlQ29t
bWFuZChzZWxmLCBjbWQpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgaW4gW0ZBSUxVUkUsIEVY
Q0VQVElPTl06Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoWydGYWlsZWQg
dG8ga2lsbCBvbGQgcHJvY2Vzc2VzLCByZXRyeWluZyBidWlsZCddLCBSRVRSWSkKLSAgICAgICAg
cmV0dXJuIHNoZWxsLkNvbXBpbGUuZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCkKLQotICAgIGRl
ZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgaW4gW0ZB
SUxVUkUsIEVYQ0VQVElPTl06Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVk
IHRvIGtpbGwgb2xkIHByb2Nlc3Nlcyd9Ci0gICAgICAgIHJldHVybiBzaGVsbC5Db21waWxlLmdl
dFJlc3VsdFN1bW1hcnkoc2VsZikKLQotCi1jbGFzcyBUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9u
KHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAndHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lv
bicKLSAgICBkZXNjcmlwdGlvbiA9IFsndHJpZ2dlcmluZyBjcmFzaCBsb2cgc3VibWlzc2lvbidd
Ci0gICAgZGVzY3JpcHRpb25Eb25lID0gWydUcmlnZ2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24n
XQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90cmln
Z2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJ10KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3
YXJncyk6Ci0gICAgICAgIHN1cGVyKFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24sIHNlbGYpLl9f
aW5pdF9fKHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0gICAgZGVm
IGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyBpbiBbRkFJ
TFVSRSwgRVhDRVBUSU9OXToKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQg
dG8gdHJpZ2dlciBjcmFzaCBsb2cgc3VibWlzc2lvbid9Ci0gICAgICAgIHJldHVybiBzaGVsbC5D
b21waWxlLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotCi1jbGFzcyBXYWl0Rm9yQ3Jhc2hDb2xs
ZWN0aW9uKHNoZWxsLkNvbXBpbGUpOgotICAgIG5hbWUgPSAnd2FpdC1mb3ItY3Jhc2gtY29sbGVj
dGlvbicKLSAgICBkZXNjcmlwdGlvbiA9IFsnd2FpdGluZy1mb3ItY3Jhc2gtY29sbGVjdGlvbi10
by1xdWllc2NlJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ0NyYXNoIGNvbGxlY3Rpb24gaGFz
IHF1aWVzY2VkJ10KLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbicsICctLXRpbWVvdXQnLCBzdHIoNSAqIDYw
KV0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1cGVyKFdh
aXRGb3JDcmFzaENvbGxlY3Rpb24sIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9NiAqIDYwLCBsb2dF
bnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYp
OgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgaW4gW0ZBSUxVUkUsIEVYQ0VQVElPTl06Ci0gICAg
ICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnQ3Jhc2ggbG9nIGNvbGxlY3Rpb24gcHJvY2VzcyBz
dGlsbCBydW5uaW5nJ30KLSAgICAgICAgcmV0dXJuIHNoZWxsLkNvbXBpbGUuZ2V0UmVzdWx0U3Vt
bWFyeShzZWxmKQotCi0KLWNsYXNzIFJ1bldlYktpdFRlc3RzKHNoZWxsLlRlc3QpOgotICAgIG5h
bWUgPSAnbGF5b3V0LXRlc3RzJwotICAgIGRlc2NyaXB0aW9uID0gWydsYXlvdXQtdGVzdHMgcnVu
bmluZyddCi0gICAgZGVzY3JpcHRpb25Eb25lID0gWydsYXlvdXQtdGVzdHMnXQotICAgIHJlc3Vs
dERpcmVjdG9yeSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzJwotICAgIGpzb25GaWxlTmFtZSA9ICds
YXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJwotICAgIGxvZ2ZpbGVzID0geydq
c29uJzoganNvbkZpbGVOYW1lfQotICAgIHRlc3RfZmFpbHVyZXNfbG9nX25hbWUgPSAndGVzdC1m
YWlsdXJlcycKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4td2Vi
a2l0LXRlc3RzJywKLSAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywKLSAgICAgICAgICAgICAg
ICctLW5vLXNob3ctcmVzdWx0cycsCi0gICAgICAgICAgICAgICAnLS1uby1uZXctdGVzdC1yZXN1
bHRzJywKLSAgICAgICAgICAgICAgICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLAotICAgICAgICAg
ICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKV0KLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNoZWxsLlRlc3QuX19pbml0X18oc2Vs
ZiwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuaW5jb3JyZWN0TGF5
b3V0TGluZXMgPSBbXQotCi0gICAgZGVmIGRvU3RlcElmKHNlbGYsIHN0ZXApOgotICAgICAgICBy
ZXR1cm4gbm90ICgoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykubG93ZXIoKSA9
PSAnY29tbWl0LXF1ZXVlJykgYW5kCi0gICAgICAgICAgICAgICAgICAgIChzZWxmLmdldFByb3Bl
cnR5KCdyZXZlcnQnKSBvciBzZWxmLmdldFByb3BlcnR5KCdwYXNzZWRfbWFjX3drMicpKSkKLQot
ICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2JzZXJ2ZXIgPSBsb2dvYnNl
cnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUpCi0gICAgICAgIHNlbGYuYWRk
TG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAgICAgIHNlbGYubG9n
X29ic2VydmVyX2pzb24gPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcigpCi0gICAgICAg
IHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ2pzb24nLCBzZWxmLmxvZ19vYnNlcnZlcl9qc29uKQotCi0g
ICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICBh
cHBlbmRDdXN0b21CdWlsZEZsYWdzKHNlbGYsIHBsYXRmb3JtLCBzZWxmLmdldFByb3BlcnR5KCdm
dWxsUGxhdGZvcm0nKSkKLSAgICAgICAgYWRkaXRpb25hbEFyZ3VtZW50cyA9IHNlbGYuZ2V0UHJv
cGVydHkoJ2FkZGl0aW9uYWxBcmd1bWVudHMnKQotCi0gICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVy
dHkoJ3VzZS1kdW1wLXJlbmRlci10cmVlJywgRmFsc2UpOgotICAgICAgICAgICAgc2VsZi5zZXRD
b21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1kdW1wLXJlbmRlci10cmVlJ10pCi0KLSAgICAgICAg
c2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFuZCArIFsnLS1yZXN1bHRzLWRpcmVjdG9yeScsIHNl
bGYucmVzdWx0RGlyZWN0b3J5XSkKLSAgICAgICAgc2VsZi5zZXRDb21tYW5kKHNlbGYuY29tbWFu
ZCArIFsnLS1kZWJ1Zy1yd3QtbG9nZ2luZyddKQotCi0gICAgICAgIHBhdGNoX2F1dGhvciA9IHNl
bGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2F1dGhvcicpCi0gICAgICAgIGlmIHBhdGNoX2F1dGhvciBp
biBbJ3dlYmtpdC13cHQtaW1wb3J0LWJvdEBpZ2FsaWEuY29tJ106Ci0gICAgICAgICAgICBzZWxm
LnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgWydpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzJ10pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNldENvbW1hbmQoc2VsZi5j
b21tYW5kICsgWyctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGlu
Zy10ZXN0cyddKQotCi0gICAgICAgIGlmIGFkZGl0aW9uYWxBcmd1bWVudHM6Ci0gICAgICAgICAg
ICBzZWxmLnNldENvbW1hbmQoc2VsZi5jb21tYW5kICsgYWRkaXRpb25hbEFyZ3VtZW50cykKLSAg
ICAgICAgcmV0dXJuIHNoZWxsLlRlc3Quc3RhcnQoc2VsZikKLQotICAgICMgRklYTUU6IFRoaXMg
d2lsbCBicmVhayBpZiBydW4td2Via2l0LXRlc3RzIGNoYW5nZXMgaXRzIGRlZmF1bHQgbG9nIGZv
cm1hdHRlci4KLSAgICBucnd0X2xvZ19tZXNzYWdlX3JlZ2V4cCA9IHJlLmNvbXBpbGUocidcZHsy
fTpcZHsyfTpcZHsyfShcLlxkKyk/XHMrXGQrXHMrKD9QPG1lc3NhZ2U+LiopJykKLQotICAgIGRl
ZiBfc3RyaXBfcHl0aG9uX2xvZ2dpbmdfcHJlZml4KHNlbGYsIGxpbmUpOgotICAgICAgICBtYXRj
aF9vYmplY3QgPSBzZWxmLm5yd3RfbG9nX21lc3NhZ2VfcmVnZXhwLm1hdGNoKGxpbmUpCi0gICAg
ICAgIGlmIG1hdGNoX29iamVjdDoKLSAgICAgICAgICAgIHJldHVybiBtYXRjaF9vYmplY3QuZ3Jv
dXAoJ21lc3NhZ2UnKQotICAgICAgICByZXR1cm4gbGluZQotCi0gICAgQGRlZmVyLmlubGluZUNh
bGxiYWNrcwotICAgIGRlZiBfYWRkVG9Mb2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIGxvZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAg
IGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxv
Z05hbWUpCi0gICAgICAgIGxvZy5hZGRTdGRvdXQobWVzc2FnZSkKLQotICAgIGRlZiBfcGFyc2VS
dW5XZWJLaXRUZXN0c091dHB1dChzZWxmLCBsb2dUZXh0KToKLSAgICAgICAgaW5jb3JyZWN0TGF5
b3V0TGluZXMgPSBbXQotICAgICAgICBleHByZXNzaW9ucyA9IFsKLSAgICAgICAgICAgICgnZmxh
a2VzJywgcmUuY29tcGlsZShyJ1VuZXhwZWN0ZWQgZmxha2luZXNzLitcKChcZCspXCknKSksCi0g
ICAgICAgICAgICAoJ25ldyBwYXNzZXMnLCByZS5jb21waWxlKHInRXhwZWN0ZWQgdG8gLissIGJ1
dCBwYXNzZWQ6XHMrXCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCdtaXNzaW5nIHJlc3VsdHMn
LCByZS5jb21waWxlKHInUmVncmVzc2lvbnM6IFVuZXhwZWN0ZWQgbWlzc2luZyByZXN1bHRzXHMr
XCgoXGQrKVwpJykpLAotICAgICAgICAgICAgKCdmYWlsdXJlcycsIHJlLmNvbXBpbGUocidSZWdy
ZXNzaW9uczogVW5leHBlY3RlZC4rXCgoXGQrKVwpJykpLAotICAgICAgICBdCi0gICAgICAgIHRl
c3RGYWlsdXJlcyA9IHt9Ci0KLSAgICAgICAgZm9yIGxpbmUgaW4gbG9nVGV4dC5zcGxpdGxpbmVz
KCk6Ci0gICAgICAgICAgICBpZiBsaW5lLmZpbmQoJ0V4aXRpbmcgZWFybHknKSA+PSAwIG9yIGxp
bmUuZmluZCgnbGVha3MgZm91bmQnKSA+PSAwOgotICAgICAgICAgICAgICAgIGluY29ycmVjdExh
eW91dExpbmVzLmFwcGVuZChzZWxmLl9zdHJpcF9weXRob25fbG9nZ2luZ19wcmVmaXgobGluZSkp
Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZvciBuYW1lLCBleHByZXNz
aW9uIGluIGV4cHJlc3Npb25zOgotICAgICAgICAgICAgICAgIG1hdGNoID0gZXhwcmVzc2lvbi5z
ZWFyY2gobGluZSkKLQotICAgICAgICAgICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbHVyZXNbbmFtZV0gPSB0ZXN0RmFpbHVyZXMuZ2V0KG5hbWUsIDApICsgaW50
KG1hdGNoLmdyb3VwKDEpKQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgICAg
ICAgICAgIyBGSVhNRTogUGFyc2UgZmlsZSBuYW1lcyBhbmQgcHV0IHRoZW0gaW4gcmVzdWx0cwot
Ci0gICAgICAgIGZvciBuYW1lIGluIHRlc3RGYWlsdXJlczoKLSAgICAgICAgICAgIGluY29ycmVj
dExheW91dExpbmVzLmFwcGVuZChzdHIodGVzdEZhaWx1cmVzW25hbWVdKSArICcgJyArIG5hbWUp
Ci0KLSAgICAgICAgc2VsZi5pbmNvcnJlY3RMYXlvdXRMaW5lcyA9IGluY29ycmVjdExheW91dExp
bmVzCi0KLSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAgICAgIHNoZWxs
LlRlc3QuY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4dCA9IHNlbGYu
bG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJyKCkK
LSAgICAgICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdldFN0ZG91dCgp
Ci0KLSAgICAgICAgZmlyc3RfcmVzdWx0cyA9IExheW91dFRlc3RGYWlsdXJlcy5yZXN1bHRzX2Zy
b21fc3RyaW5nKGxvZ1RleHRKc29uKQotCi0gICAgICAgIGlmIGZpcnN0X3Jlc3VsdHM6Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xp
bWl0JywgZmlyc3RfcmVzdWx0cy5kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1pdCkKLSAgICAg
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIGZpcnN0X3Jlc3Vs
dHMuZmFpbGluZ190ZXN0cykKLSAgICAgICAgICAgIGlmIGZpcnN0X3Jlc3VsdHMuZmFpbGluZ190
ZXN0czoKLSAgICAgICAgICAgICAgICBzZWxmLl9hZGRUb0xvZyhzZWxmLnRlc3RfZmFpbHVyZXNf
bG9nX25hbWUsICdcbicuam9pbihmaXJzdF9yZXN1bHRzLmZhaWxpbmdfdGVzdHMpKQotICAgICAg
ICBzZWxmLl9wYXJzZVJ1bldlYktpdFRlc3RzT3V0cHV0KGxvZ1RleHQpCi0KLSAgICBkZWYgZXZh
bHVhdGVSZXN1bHQoc2VsZiwgY21kKToKLSAgICAgICAgcmVzdWx0ID0gU1VDQ0VTUwotCi0gICAg
ICAgIGlmIHNlbGYuaW5jb3JyZWN0TGF5b3V0TGluZXM6Ci0gICAgICAgICAgICBpZiBsZW4oc2Vs
Zi5pbmNvcnJlY3RMYXlvdXRMaW5lcykgPT0gMToKLSAgICAgICAgICAgICAgICBsaW5lID0gc2Vs
Zi5pbmNvcnJlY3RMYXlvdXRMaW5lc1swXQotICAgICAgICAgICAgICAgIGlmIGxpbmUuZmluZCgn
d2VyZSBuZXcnKSA+PSAwIG9yIGxpbmUuZmluZCgnd2FzIG5ldycpID49IDAgb3IgbGluZS5maW5k
KCcgbGVhaycpID49IDA6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBXQVJOSU5HUwotCi0g
ICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmluY29ycmVjdExheW91dExpbmVzOgotICAgICAg
ICAgICAgICAgIGlmIGxpbmUuZmluZCgnZmxha2VzJykgPj0gMCBvciBsaW5lLmZpbmQoJ25ldyBw
YXNzZXMnKSA+PSAwOgotICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBXQVJOSU5HUwotICAg
ICAgICAgICAgICAgIGVsaWYgbGluZS5maW5kKCdtaXNzaW5nIHJlc3VsdHMnKSA+PSAwOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gRkFJTFVSRQotICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUlMVVJFCi0KLSAgICAgICAgIyBSZXR1cm4gY29k
ZSBmcm9tIFRvb2xzL1NjcmlwdHMvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkuCi0g
ICAgICAgICMgVGhpcyBtZWFucyB0aGF0IGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdoZW4gcnVu
bmluZyBydW4td2Via2l0LXRlc3RzIGFuZAotICAgICAgICAjIHdhcyBuZXZlciBoYW5kbGVkLgot
ICAgICAgICBpZiBjbWQucmMgPT0gMjU0OgotICAgICAgICAgICAgcmV0dXJuIFJFVFJZCi0gICAg
ICAgIGlmIGNtZC5yYyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIEZBSUxVUkUKLQotICAgICAg
ICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0g
ICAgICAgIHJjID0gc2VsZi5ldmFsdWF0ZVJlc3VsdChjbWQpCi0gICAgICAgIGlmIHJjID09IFNV
Q0NFU1Mgb3IgcmMgPT0gV0FSTklOR1M6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1Bhc3NlZCBs
YXlvdXQgdGVzdHMnCi0gICAgICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UK
LSAgICAgICAgICAgIHNlbGYuYnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknLCBtZXNzYWdlKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoWwotICAgICAg
ICAgICAgICAgIEFyY2hpdmVUZXN0UmVzdWx0cygpLAotICAgICAgICAgICAgICAgIFVwbG9hZFRl
c3RSZXN1bHRzKCksCi0gICAgICAgICAgICAgICAgRXh0cmFjdFRlc3RSZXN1bHRzKCksCi0gICAg
ICAgICAgICAgICAgVmFsaWRhdGVQYXRjaCh2ZXJpZnlCdWdDbG9zZWQ9RmFsc2UsIGFkZFVSTHM9
RmFsc2UpLAotICAgICAgICAgICAgICAgIEtpbGxPbGRQcm9jZXNzZXMoKSwKLSAgICAgICAgICAg
ICAgICBSZVJ1bldlYktpdFRlc3RzKCksCi0gICAgICAgICAgICBdKQotICAgICAgICByZXR1cm4g
cmMKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBzdGF0dXMgPSBz
ZWxmLm5hbWUKLQotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0gU1VDQ0VTUyBhbmQgc2VsZi5p
bmNvcnJlY3RMYXlvdXRMaW5lczoKLSAgICAgICAgICAgIHN0YXR1cyA9IHUnICcuam9pbihzZWxm
LmluY29ycmVjdExheW91dExpbmVzKQotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiBzdGF0
dXN9Ci0KLSAgICAgICAgcmV0dXJuIHN1cGVyKFJ1bldlYktpdFRlc3RzLCBzZWxmKS5nZXRSZXN1
bHRTdW1tYXJ5KCkKLQotCi1jbGFzcyBSZVJ1bldlYktpdFRlc3RzKFJ1bldlYktpdFRlc3RzKToK
LSAgICBuYW1lID0gJ3JlLXJ1bi1sYXlvdXQtdGVzdHMnCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJ
U1BMQVkgPSAxMAotCi0gICAgZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAg
ICByYyA9IHNlbGYuZXZhbHVhdGVSZXN1bHQoY21kKQotICAgICAgICBmaXJzdF9yZXN1bHRzX2Rp
ZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnZmlyc3RfcmVz
dWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcpCi0gICAgICAgIGZpcnN0X3Jlc3VsdHNfZmFpbGlu
Z190ZXN0cyA9IHNldChzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbXSkp
Ci0gICAgICAgIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0ID0g
c2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnKQot
ICAgICAgICBzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0KHNlbGYuZ2V0UHJvcGVy
dHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkpCi0gICAgICAgIHRlc3RzX3RoYXRfY29uc2lz
dGVudGx5X2ZhaWxlZCA9IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cy5pbnRlcnNlY3Rpb24o
c2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cykKLSAgICAgICAgZmxha3lfZmFpbHVyZXMgPSBm
aXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMudW5pb24oc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190
ZXN0cykgLSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9y
ZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gbGlzdChmbGFr
eV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCi0gICAgICAgIGZsYWt5
X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihmbGFreV9mYWlsdXJlcykKLQotICAgICAgICBp
ZiByYyA9PSBTVUNDRVNTIG9yIHJjID09IFdBUk5JTkdTOgotICAgICAgICAgICAgbWVzc2FnZSA9
ICdQYXNzZWQgbGF5b3V0IHRlc3RzJwotICAgICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUg
PSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLnJlc3VsdHMgPSBTVUNDRVNTCi0gICAg
ICAgICAgICBpZiBub3QgZmlyc3RfcmVzdWx0c19kaWRfZXhjZWVkX3Rlc3RfZmFpbHVyZV9saW1p
dDoKLSAgICAgICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKGZsYWt5X2ZhaWx1
cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnRm91bmQgZmxha3kg
dGVzdHt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgZmxha3lfZmFpbHVyZXNfc3RyaW5nKQot
ICAgICAgICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGZsYWt5X2ZhaWx1cmVzOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxha3lf
ZmFpbHVyZSkKLSAgICAgICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknLCBt
ZXNzYWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0
Y2hGYWlsZWRUZXN0cycsIFRydWUpCi0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0
ZXJDdXJyZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1bHRzKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGxvYWRUZXN0UmVzdWx0cyhpZGVudGlmaWVy
PSdyZXJ1bicpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRXh0cmFjdFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J3JlcnVuJyksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbkFwcGx5UGF0Y2hJZlJlcXVpcmVk
KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWxp
ZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb21waWxlV2ViS2l0V2l0
aG91dFBhdGNoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBWYWxpZGF0ZVBhdGNoKHZlcmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLaWxsT2xk
UHJvY2Vzc2VzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaCgpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0K
LSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAgICAgIHNoZWxsLlRlc3Qu
Y29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4dCA9IHNlbGYubG9nX29i
c2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJyKCkKLSAgICAg
ICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdldFN0ZG91dCgpCi0KLSAg
ICAgICAgc2Vjb25kX3Jlc3VsdHMgPSBMYXlvdXRUZXN0RmFpbHVyZXMucmVzdWx0c19mcm9tX3N0
cmluZyhsb2dUZXh0SnNvbikKLQotICAgICAgICBpZiBzZWNvbmRfcmVzdWx0czoKLSAgICAgICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0
Jywgc2Vjb25kX3Jlc3VsdHMuZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQpCi0gICAgICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgc2Vjb25kX3Jlc3Vs
dHMuZmFpbGluZ190ZXN0cykKLSAgICAgICAgICAgIGlmIHNlY29uZF9yZXN1bHRzLmZhaWxpbmdf
dGVzdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coc2VsZi50ZXN0X2ZhaWx1cmVz
X2xvZ19uYW1lLCAnXG4nLmpvaW4oc2Vjb25kX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykpCi0gICAg
ICAgIHNlbGYuX3BhcnNlUnVuV2ViS2l0VGVzdHNPdXRwdXQobG9nVGV4dCkKLQotICAgIGRlZiBz
ZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlKHNlbGYsIHRlc3RfbmFtZSk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGJ1aWxkZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJu
YW1lJywgJycpCi0gICAgICAgICAgICB3b3JrZXJfbmFtZSA9IHNlbGYuZ2V0UHJvcGVydHkoJ3dv
cmtlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIGJ1aWxkX3VybCA9ICd7fSMvYnVpbGRlcnMve30v
YnVpbGRzL3t9Jy5mb3JtYXQoc2VsZi5tYXN0ZXIuY29uZmlnLmJ1aWxkYm90VVJMLCBzZWxmLmJ1
aWxkLl9idWlsZGVyaWQsIHNlbGYuYnVpbGQubnVtYmVyKQotICAgICAgICAgICAgaGlzdG9yeV91
cmwgPSAne30/c3VpdGU9bGF5b3V0LXRlc3RzJnRlc3Q9e30nLmZvcm1hdChSRVNVTFRTX0RCX1VS
TCwgdGVzdF9uYW1lKQotCi0gICAgICAgICAgICBlbWFpbF9zdWJqZWN0ID0gdSdGbGFreSB0ZXN0
OiB7fScuZm9ybWF0KHRlc3RfbmFtZSkKLSAgICAgICAgICAgIGVtYWlsX3RleHQgPSAnVGVzdCB7
fSBmbGFrZWQgaW4ge31cblxuQnVpbGRlcjoge30nLmZvcm1hdCh0ZXN0X25hbWUsIGJ1aWxkX3Vy
bCwgYnVpbGRlcl9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdGbGFreSB0ZXN0OiB7
fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7
fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUsIHdvcmtlcl9uYW1l
LCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVt
YWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQo
dGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
IyBDYXRjaGluZyBhbGwgZXhjZXB0aW9ucyBoZXJlIHRvIGVuc3VyZSB0aGF0IGZhaWx1cmUgdG8g
c2VuZCBlbWFpbCBkb2Vzbid0IGltcGFjdCB0aGUgYnVpbGQKLSAgICAgICAgICAgIHByaW50KCdF
cnJvciBpbiBzZW5kaW5nIGVtYWlsIGZvciBmbGFreSBmYWlsdXJlczoge30nLmZvcm1hdChlKSkK
LQotCi1jbGFzcyBSdW5XZWJLaXRUZXN0c1dpdGhvdXRQYXRjaChSdW5XZWJLaXRUZXN0cyk6Ci0g
ICAgbmFtZSA9ICdydW4tbGF5b3V0LXRlc3RzLXdpdGhvdXQtcGF0Y2gnCi0KLSAgICBkZWYgZXZh
bHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuVGVzdC5ldmFsdWF0
ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJy
ZW50U3RlcChbQXJjaGl2ZVRlc3RSZXN1bHRzKCksIFVwbG9hZFRlc3RSZXN1bHRzKGlkZW50aWZp
ZXI9J2NsZWFuLXRyZWUnKSwgRXh0cmFjdFRlc3RSZXN1bHRzKGlkZW50aWZpZXI9J2NsZWFuLXRy
ZWUnKSwgQW5hbHl6ZUxheW91dFRlc3RzUmVzdWx0cygpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0K
LSAgICBkZWYgY29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCk6Ci0gICAgICAgIHNoZWxsLlRlc3Qu
Y29tbWFuZENvbXBsZXRlKHNlbGYsIGNtZCkKLSAgICAgICAgbG9nVGV4dCA9IHNlbGYubG9nX29i
c2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJyKCkKLSAgICAg
ICAgbG9nVGV4dEpzb24gPSBzZWxmLmxvZ19vYnNlcnZlcl9qc29uLmdldFN0ZG91dCgpCi0KLSAg
ICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzID0gTGF5b3V0VGVzdEZhaWx1cmVzLnJlc3VsdHNfZnJv
bV9zdHJpbmcobG9nVGV4dEpzb24pCi0KLSAgICAgICAgaWYgY2xlYW5fdHJlZV9yZXN1bHRzOgot
ICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9m
YWlsdXJlX2xpbWl0JywgY2xlYW5fdHJlZV9yZXN1bHRzLmRpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0KQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFp
bHVyZXMnLCBjbGVhbl90cmVlX3Jlc3VsdHMuZmFpbGluZ190ZXN0cykKLSAgICAgICAgICAgIGlm
IGNsZWFuX3RyZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzOgotICAgICAgICAgICAgICAgIHNlbGYu
X2FkZFRvTG9nKHNlbGYudGVzdF9mYWlsdXJlc19sb2dfbmFtZSwgJ1xuJy5qb2luKGNsZWFuX3Ry
ZWVfcmVzdWx0cy5mYWlsaW5nX3Rlc3RzKSkKLSAgICAgICAgc2VsZi5fcGFyc2VSdW5XZWJLaXRU
ZXN0c091dHB1dChsb2dUZXh0KQotCi0KLWNsYXNzIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMo
YnVpbGRzdGVwLkJ1aWxkU3RlcCwgQnVnemlsbGFNaXhpbik6Ci0gICAgbmFtZSA9ICdhbmFseXpl
LWxheW91dC10ZXN0cy1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uID0gWydhbmFseXplLWxheW91
dC10ZXN0LXJlc3VsdHMnXQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnYW5hbHl6ZS1sYXlvdXQt
dGVzdHMtcmVzdWx0cyddCi0gICAgTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVkgPSAxMAotCi0gICAg
ZGVmIHJlcG9ydF9mYWlsdXJlKHNlbGYsIG5ld19mYWlsdXJlcyk6Ci0gICAgICAgIHNlbGYuZmlu
aXNoZWQoRkFJTFVSRSkKLSAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gRkFJTFVSRQotICAg
ICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKG5ld19mYWlsdXJlcykgPiAxIGVsc2UgJycK
LSAgICAgICAgbmV3X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQobmV3X2ZhaWx1
cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pCi0gICAgICAgIG1lc3NhZ2UgPSAn
Rm91bmQge30gbmV3IHRlc3QgZmFpbHVyZXt9OiB7fScuZm9ybWF0KGxlbihuZXdfZmFpbHVyZXMp
LCBwbHVyYWxTdWZmaXgsIG5ld19mYWlsdXJlc19zdHJpbmcpCi0gICAgICAgIGlmIGxlbihuZXdf
ZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgIG1l
c3NhZ2UgKz0gJyAuLi4nCi0gICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQot
ICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX25ld190ZXN0X2ZhaWx1cmVzKG5ld19mYWlsdXJl
cykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknLCBtZXNz
YWdlKQotCi0gICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpLmxv
d2VyKCkgPT0gJ2NvbW1pdC1xdWV1ZSc6Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWd6aWxsYV9jb21tZW50X3RleHQnLCBtZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5idWlsZC5h
ZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0NvbW1lbnRPbkJ1ZygpLCBTZXRDb21taXRRdWV1ZU1p
bnVzRmxhZ09uUGF0Y2goKV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxk
LmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNo
KCldKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0gICAgZGVmIHJlcG9y
dF9wcmVfZXhpc3RpbmdfZmFpbHVyZXMoc2VsZiwgY2xlYW5fdHJlZV9mYWlsdXJlcywgZmxha3lf
ZmFpbHVyZXMpOgotICAgICAgICBzZWxmLmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHNlbGYu
YnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSAn
UGFzc2VkIGxheW91dCB0ZXN0cycKLSAgICAgICAgbWVzc2FnZSA9ICcnCi0gICAgICAgIGlmIGNs
ZWFuX3RyZWVfZmFpbHVyZXM6Ci0gICAgICAgICAgICBjbGVhbl90cmVlX2ZhaWx1cmVzX3N0cmlu
ZyA9ICcsICcuam9pbihzb3J0ZWQoY2xlYW5fdHJlZV9mYWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxV
UkVTX1RPX0RJU1BMQVldKQotICAgICAgICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihj
bGVhbl90cmVlX2ZhaWx1cmVzKSA+IDEgZWxzZSAnJwotICAgICAgICAgICAgbWVzc2FnZSA9ICdG
b3VuZCB7fSBwcmUtZXhpc3RpbmcgdGVzdCBmYWlsdXJle306IHt9Jy5mb3JtYXQobGVuKGNsZWFu
X3RyZWVfZmFpbHVyZXMpLCBwbHVyYWxTdWZmaXgsIGNsZWFuX3RyZWVfZmFpbHVyZXNfc3RyaW5n
KQotICAgICAgICAgICAgaWYgbGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJ
TFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAg
ICAgICAgICAgZm9yIGNsZWFuX3RyZWVfZmFpbHVyZSBpbiBsaXN0KGNsZWFuX3RyZWVfZmFpbHVy
ZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXToKLSAgICAgICAgICAgICAgICBzZWxm
LnNlbmRfZW1haWxfZm9yX3ByZV9leGlzdGluZ19mYWlsdXJlKGNsZWFuX3RyZWVfZmFpbHVyZSkK
LQotICAgICAgICBpZiBmbGFreV9mYWlsdXJlczoKLSAgICAgICAgICAgIGZsYWt5X2ZhaWx1cmVz
X3N0cmluZyA9ICcsICcuam9pbihzb3J0ZWQoZmxha3lfZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlM
VVJFU19UT19ESVNQTEFZXSkKLSAgICAgICAgICAgIHBsdXJhbFN1ZmZpeCA9ICdzJyBpZiBsZW4o
Zmxha3lfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdlICs9ICcgRm91
bmQgZmxha3kgdGVzdHt9OiB7fScuZm9ybWF0KHBsdXJhbFN1ZmZpeCwgZmxha3lfZmFpbHVyZXNf
c3RyaW5nKQotICAgICAgICAgICAgaWYgbGVuKGZsYWt5X2ZhaWx1cmVzKSA+IHNlbGYuTlVNX0ZB
SUxVUkVTX1RPX0RJU1BMQVk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSArPSAnIC4uLicKLSAg
ICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGxpc3QoZmxha3lfZmFpbHVyZXMpWzpzZWxm
Lk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXToKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1h
aWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxha3lfZmFpbHVyZSkKLQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgbWVzc2FnZSkKLSAgICAgICAgcmV0dXJuIGRlZmVyLnN1
Y2NlZWQoTm9uZSkKLQotICAgIGRlZiByZXRyeV9idWlsZChzZWxmLCBtZXNzYWdlPScnKToKLSAg
ICAgICAgaWYgbm90IG1lc3NhZ2U6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1VuYWJsZSB0byBj
b25maXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5n
IGJ1aWxkJwotICAgICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLQotICAgICAg
ICB0cmlnZ2VyZWRfYnkgPSBzZWxmLmdldFByb3BlcnR5KCd0cmlnZ2VyZWRfYnknLCBOb25lKQot
ICAgICAgICBpZiB0cmlnZ2VyZWRfYnk6Ci0gICAgICAgICAgICAjIFRyaWdnZXIgcGFyZW50IGJ1
aWxkIHNvIHRoYXQgaXQgY2FuIHJlLWJ1aWxkIFRvVAotICAgICAgICAgICAgc2NoZHVsZXJfZm9y
X2N1cnJlbnRfcXVldWUgPSBzZWxmLmdldFByb3BlcnR5KCdzY2hlZHVsZXInKQotICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW1RyaWdnZXIoc2NoZWR1bGVy
TmFtZXM9dHJpZ2dlcmVkX2J5LCBpbmNsdWRlX3JldmlzaW9uPUZhbHNlLCB0cmlnZ2Vycz1bc2No
ZHVsZXJfZm9yX2N1cnJlbnRfcXVldWVdKV0pCi0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZF9zdW1tYXJ5JywgbWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoU1VD
Q0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoUkVUUlkpCi0g
ICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBSRVRSWSkKLSAg
ICAgICAgcmV0dXJuIGRlZmVyLnN1Y2NlZWQoTm9uZSkKLQotICAgIGRlZiBfcmVzdWx0c19mYWls
ZWRfZGlmZmVyZW50X3Rlc3RzKHNlbGYsIGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cywgc2Vj
b25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cyk6Ci0gICAgICAgIHJldHVybiBmaXJzdF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMgIT0gc2Vjb25kX3Jlc3VsdHNfZmFpbGluZ190ZXN0cwotCi0gICAgZGVm
IHNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRl
cm5hbWUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgn
d29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97
fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYu
YnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5
X3VybCA9ICd7fT9zdWl0ZT1sYXlvdXQtdGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJf
VVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J0ZsYWt5IHRl
c3Q6IHt9Jy5mb3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdGbGFr
eSB0ZXN0OiB7fVxuXG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxuXG5I
aXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUsIHdv
cmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dh
dGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9
Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAg
ICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6
IHt9Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2Zh
aWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnVpbGRl
cl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAg
IHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAg
ICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxm
Lm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5i
dWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7fT9zdWl0ZT1sYXlvdXQt
dGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAg
ICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J1ByZS1leGlzdGluZyB0ZXN0IGZhaWx1cmU6IHt9Jy5m
b3JtYXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdUZXN0IHt9IGZhaWxl
ZCBvbiBjbGVhbiB0cmVlIHJ1biBpbiB7fS5cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxu
XG5IaXN0b3J5OiB7fScuZm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUs
IHdvcmtlcl9uYW1lLCBoaXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90
X3dhdGNoZXJzKGVtYWlsX3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4
aXN0aW5nLXt9Jy5mb3JtYXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBh
cyBlOgotICAgICAgICAgICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIHByZS1l
eGlzdGluZyBmYWlsdXJlOiB7fScuZm9ybWF0KGUpKQotCi0gICAgZGVmIHNlbmRfZW1haWxfZm9y
X25ld190ZXN0X2ZhaWx1cmVzKHNlbGYsIHRlc3RfbmFtZXMpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycpCi0gICAg
ICAgICAgICBpZiBub3Qgc2VsZi5zaG91bGRfc2VuZF9lbWFpbChwYXRjaF9pZCk6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBidWlsZGVyX25hbWUgPSBzZWxmLmdldFByb3Bl
cnR5KCdidWlsZGVybmFtZScsICcnKQotICAgICAgICAgICAgYnVnX2lkID0gc2VsZi5nZXRQcm9w
ZXJ0eSgnYnVnX2lkJywgJycpCi0gICAgICAgICAgICBidWdfdGl0bGUgPSBzZWxmLmdldFByb3Bl
cnR5KCdidWdfdGl0bGUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQ
cm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgcGF0Y2hfYXV0aG9yID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgncGF0Y2hfYXV0aG9yJywgJycpCi0gICAgICAgICAgICBidWlsZF91cmwg
PSAne30jL2J1aWxkZXJzL3t9L2J1aWxkcy97fScuZm9ybWF0KHNlbGYubWFzdGVyLmNvbmZpZy5i
dWlsZGJvdFVSTCwgc2VsZi5idWlsZC5fYnVpbGRlcmlkLCBzZWxmLmJ1aWxkLm51bWJlcikKLSAg
ICAgICAgICAgIHRlc3RfbmFtZXNfc3RyaW5nID0gJycKLSAgICAgICAgICAgIGZvciB0ZXN0X25h
bWUgaW4gc29ydGVkKHRlc3RfbmFtZXMpOgotICAgICAgICAgICAgICAgIGhpc3RvcnlfdXJsID0g
J3t9P3N1aXRlPWxheW91dC10ZXN0cyZ0ZXN0PXt9Jy5mb3JtYXQoUkVTVUxUU19EQl9VUkwsIHRl
c3RfbmFtZSkKLSAgICAgICAgICAgICAgICB0ZXN0X25hbWVzX3N0cmluZyArPSAnXG4tIHt9ICg8
YSBocmVmPSJ7fSI+dGVzdCBoaXN0b3J5PC9hPiknLmZvcm1hdCh0ZXN0X25hbWUsIGhpc3Rvcnlf
dXJsKQotCi0gICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYgbGVuKHRlc3RfbmFtZXMp
ID4gMSBlbHNlICcnCi0gICAgICAgICAgICBlbWFpbF9zdWJqZWN0ID0gdSdMYXlvdXQgdGVzdCBm
YWlsdXJlIGZvciBQYXRjaCB7fToge30gJy5mb3JtYXQocGF0Y2hfaWQsIGJ1Z190aXRsZSkKLSAg
ICAgICAgICAgIGVtYWlsX3RleHQgPSAnRVdTIGhhcyBkZXRlY3RlZCBsYXlvdXQgdGVzdCBmYWls
dXJle30gb24ge30nLmZvcm1hdChwbHVyYWxTdWZmaXgsIGJ1aWxkZXJfbmFtZSkKLSAgICAgICAg
ICAgIGVtYWlsX3RleHQgKz0gJyB3aGlsZSB0ZXN0aW5nIDxhIGhyZWY9Int9Ij5QYXRjaCB7fTwv
YT4nLmZvcm1hdChCdWd6aWxsYS5wYXRjaF91cmwocGF0Y2hfaWQpLCBwYXRjaF9pZCkKLSAgICAg
ICAgICAgIGVtYWlsX3RleHQgKz0gJyBmb3IgPGEgaHJlZj0ie30iPkJ1ZyB7fTwvYT4uJy5mb3Jt
YXQoQnVnemlsbGEuYnVnX3VybChidWdfaWQpLCBidWdfaWQpCi0gICAgICAgICAgICBlbWFpbF90
ZXh0ICs9ICdcblxuRnVsbCBkZXRhaWxzIGFyZSBhdmFpbGFibGUgYXQ6IHt9XG5cblBhdGNoIGF1
dGhvcjoge30nLmZvcm1hdChidWlsZF91cmwsIHBhdGNoX2F1dGhvcikKLSAgICAgICAgICAgIGVt
YWlsX3RleHQgKz0gJ1xuXG5MYXlvdXQgdGVzdCBmYWlsdXJle306XG57fScuZm9ybWF0KHBsdXJh
bFN1ZmZpeCwgdGVzdF9uYW1lc19zdHJpbmcpCi0gICAgICAgICAgICBlbWFpbF90ZXh0ICs9ICdc
blxuVG8gdW5zdWJzY3JpYmxlIGZyb20gdGhlc2Ugbm90aWZpY2F0aW9ucyBvciB0byBwcm92aWRl
IGFueSBmZWVkYmFjayBwbGVhc2UgZW1haWwgYWFrYXNoX2phaW5AYXBwbGUuY29tJwotICAgICAg
ICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGlvJywgJ1NlbmRpbmcgZW1haWwgbm90aWZpY2F0aW9u
IHRvIHt9Jy5mb3JtYXQocGF0Y2hfYXV0aG9yKSkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9f
cGF0Y2hfYXV0aG9yKHBhdGNoX2F1dGhvciwgZW1haWxfc3ViamVjdCwgZW1haWxfdGV4dCwgcGF0
Y2hfaWQpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgIHByaW50
KCdFcnJvciBpbiBzZW5kaW5nIGVtYWlsIGZvciBuZXcgbGF5b3V0IHRlc3QgZmFpbHVyZXM6IHt9
Jy5mb3JtYXQoZSkpCi0KLSAgICBkZWYgX3JlcG9ydF9mbGFreV90ZXN0cyhzZWxmLCBmbGFreV90
ZXN0cyk6Ci0gICAgICAgICNUT0RPOiBpbXBsZW1lbnQgdGhpcwotICAgICAgICBwYXNzCi0KLSAg
ICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0
X2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9m
YWlsdXJlX2xpbWl0JykKLSAgICAgICAgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzID0gc2V0
KHNlbGYuZ2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgc2Vj
b25kX3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGltaXQgPSBzZWxmLmdldFByb3Bl
cnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcpCi0gICAgICAgIHNlY29u
ZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnc2Vjb25kX3J1
bl9mYWlsdXJlcycsIFtdKSkKLSAgICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9leGNlZWRf
dGVzdF9mYWlsdXJlX2xpbWl0ID0gc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRz
X2V4Y2VlZF9mYWlsdXJlX2xpbWl0JykKLSAgICAgICAgY2xlYW5fdHJlZV9yZXN1bHRzX2ZhaWxp
bmdfdGVzdHMgPSBzZXQoc2VsZi5nZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFpbHVyZXMn
LCBbXSkpCi0gICAgICAgIGZsYWt5X2ZhaWx1cmVzID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rl
c3RzLnVuaW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpIC0gZmlyc3RfcmVzdWx0c19m
YWlsaW5nX3Rlc3RzLmludGVyc2VjdGlvbihzZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQot
Ci0gICAgICAgIGlmIChub3QgZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKSBhbmQgKG5vdCBz
ZWNvbmRfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKToKLSAgICAgICAgICAgICMgSWYgd2UndmUgbWFk
ZSBpdCBoZXJlLCB0aGVuIGxheW91dC10ZXN0cyBhbmQgcmUtcnVuLWxheW91dC10ZXN0cyBmYWls
ZWQsIHdoaWNoIG1lYW5zCi0gICAgICAgICAgICAjIHRoZXJlIHNob3VsZCBoYXZlIGJlZW4gc29t
ZSB0ZXN0IGZhaWx1cmVzLiBPdGhlcndpc2UgdGhlcmUgaXMgc29tZSB1bmV4cGVjdGVkIGlzc3Vl
LgotICAgICAgICAgICAgIyBUT0RPOiBlbWFpbCBFV1MgYWRtaW5zCi0gICAgICAgICAgICByZXR1
cm4gc2VsZi5yZXRyeV9idWlsZCgnVW5leHBlY3RlZCBpbmZyYXN0cnVjdHVyZSBpc3N1ZSwgcmV0
cnlpbmcgYnVpbGQnKQotCi0gICAgICAgIGlmIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0
X2ZhaWx1cmVfbGltaXQgYW5kIHNlY29uZF9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJl
X2xpbWl0OgotICAgICAgICAgICAgaWYgKGxlbihmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMp
IC0gbGVuKGNsZWFuX3RyZWVfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKSkgPD0gNToKLSAgICAgICAg
ICAgICAgICAjIElmIHdlJ3ZlIG1hZGUgaXQgaGVyZSwgdGhlbiBtYW55IHRlc3RzIGFyZSBmYWls
aW5nIHdpdGggdGhlIHBhdGNoIGFwcGxpZWQsIGJ1dAotICAgICAgICAgICAgICAgICMgaWYgdGhl
IGNsZWFuIHRyZWUgaXMgYWxzbyBmYWlsaW5nIG1hbnkgdGVzdHMsIGV2ZW4gaWYgaXQncyBub3Qg
cXVpdGUgYXMgbWFueSwKLSAgICAgICAgICAgICAgICAjIHRoZW4gd2UgY2FuJ3QgYmUgY2VydGFp
biB0aGF0IHRoZSBkaXNjcmVwYW5jeSBpc24ndCBkdWUgdG8gZmxha2luZXNzLCBhbmQgaGVuY2Ug
d2UgbXVzdCBkZWZlciBqdWRnZW1lbnQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0
cnlfYnVpbGQoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3Rf
cmVzdWx0c19mYWlsaW5nX3Rlc3RzKQotCi0gICAgICAgIGlmIHNlY29uZF9yZXN1bHRzX2RpZF9l
eGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9yZXN1
bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAgICAgICAgICAgIHJldHVy
biBzZWxmLnJldHJ5X2J1aWxkKCkKLSAgICAgICAgICAgIGZhaWx1cmVzX2ludHJvZHVjZWRfYnlf
cGF0Y2ggPSBmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMgLSBjbGVhbl90cmVlX3Jlc3VsdHNf
ZmFpbGluZ190ZXN0cwotICAgICAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRj
aDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmYWlsdXJlc19p
bnRyb2R1Y2VkX2J5X3BhdGNoKQotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQo
KQotCi0gICAgICAgIGlmIGZpcnN0X3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2ZhaWx1cmVfbGlt
aXQ6Ci0gICAgICAgICAgICBpZiBjbGVhbl90cmVlX3Jlc3VsdHNfZGlkX2V4Y2VlZF90ZXN0X2Zh
aWx1cmVfbGltaXQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQot
ICAgICAgICAgICAgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCA9IHNlY29uZF9yZXN1bHRz
X2ZhaWxpbmdfdGVzdHMgLSBjbGVhbl90cmVlX3Jlc3VsdHNfZmFpbGluZ190ZXN0cwotICAgICAg
ICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaDoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmYWlsdXJlc19pbnRyb2R1Y2VkX2J5X3BhdGNoKQot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQotCi0gICAgICAgIGlmIHNlbGYu
X3Jlc3VsdHNfZmFpbGVkX2RpZmZlcmVudF90ZXN0cyhmaXJzdF9yZXN1bHRzX2ZhaWxpbmdfdGVz
dHMsIHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpOgotICAgICAgICAgICAgdGVzdHNfdGhh
dF9vbmx5X2ZhaWxlZF9maXJzdCA9IGZpcnN0X3Jlc3VsdHNfZmFpbGluZ190ZXN0cy5kaWZmZXJl
bmNlKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdfdGVzdHMpCi0gICAgICAgICAgICBzZWxmLl9yZXBv
cnRfZmxha3lfdGVzdHModGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9maXJzdCkKLQotICAgICAgICAg
ICAgdGVzdHNfdGhhdF9vbmx5X2ZhaWxlZF9zZWNvbmQgPSBzZWNvbmRfcmVzdWx0c19mYWlsaW5n
X3Rlc3RzLmRpZmZlcmVuY2UoZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzKQotICAgICAgICAg
ICAgc2VsZi5fcmVwb3J0X2ZsYWt5X3Rlc3RzKHRlc3RzX3RoYXRfb25seV9mYWlsZWRfc2Vjb25k
KQotCi0gICAgICAgICAgICB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQgPSBmaXJzdF9y
ZXN1bHRzX2ZhaWxpbmdfdGVzdHMuaW50ZXJzZWN0aW9uKHNlY29uZF9yZXN1bHRzX2ZhaWxpbmdf
dGVzdHMpCi0gICAgICAgICAgICBpZiB0ZXN0c190aGF0X2NvbnNpc3RlbnRseV9mYWlsZWQ6Ci0g
ICAgICAgICAgICAgICAgaWYgY2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWls
dXJlX2xpbWl0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9idWlsZCgp
Ci0gICAgICAgICAgICAgICAgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaCA9IHRlc3RzX3Ro
YXRfY29uc2lzdGVudGx5X2ZhaWxlZCAtIGNsZWFuX3RyZWVfcmVzdWx0c19mYWlsaW5nX3Rlc3Rz
Ci0gICAgICAgICAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9wYXRjaDoKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmFpbHVyZXNfaW50cm9k
dWNlZF9ieV9wYXRjaCkKLQotICAgICAgICAgICAgIyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhh
dCBhdCBsZWFzdCBvbmUgdGVzdCBmbGFrZWQsIGJ1dCBubyBjb25zaXN0ZW50IGZhaWx1cmVzCi0g
ICAgICAgICAgICAjIHdlcmUgaW50cm9kdWNlZC4gVGhpcyBpcyBhIGJpdCBvZiBhIGdyZXktem9u
ZS4gSXQncyBwb3NzaWJsZSB0aGF0IHRoZSBwYXRjaCBpbnRyb2R1Y2VkIHNvbWUgZmxha2luZXNz
LgotICAgICAgICAgICAgIyBXZSBzdGlsbCBtYXJrIHRoZSBidWlsZCBhcyBTVUNDRVNTLgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X3ByZV9leGlzdGluZ19mYWlsdXJlcyhjbGVhbl90
cmVlX3Jlc3VsdHNfZmFpbGluZ190ZXN0cywgZmxha3lfZmFpbHVyZXMpCi0KLSAgICAgICAgaWYg
Y2xlYW5fdHJlZV9yZXN1bHRzX2RpZF9leGNlZWRfdGVzdF9mYWlsdXJlX2xpbWl0OgotICAgICAg
ICAgICAgcmV0dXJuIHNlbGYucmV0cnlfYnVpbGQoKQotICAgICAgICBmYWlsdXJlc19pbnRyb2R1
Y2VkX2J5X3BhdGNoID0gZmlyc3RfcmVzdWx0c19mYWlsaW5nX3Rlc3RzIC0gY2xlYW5fdHJlZV9y
ZXN1bHRzX2ZhaWxpbmdfdGVzdHMKLSAgICAgICAgaWYgZmFpbHVyZXNfaW50cm9kdWNlZF9ieV9w
YXRjaDoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJlcG9ydF9mYWlsdXJlKGZhaWx1cmVzX2lu
dHJvZHVjZWRfYnlfcGF0Y2gpCi0KLSAgICAgICAgIyBBdCB0aGlzIHBvaW50LCB3ZSBrbm93IHRo
YXQgdGhlIGZpcnN0IGFuZCBzZWNvbmQgcnVucyBoYWQgdGhlIGV4YWN0IHNhbWUgZmFpbHVyZXMs
Ci0gICAgICAgICMgYW5kIHRoYXQgdGhvc2UgZmFpbHVyZXMgYXJlIGFsbCBwcmVzZW50IG9uIHRo
ZSBjbGVhbiB0cmVlLCBzbyB3ZSBjYW4gc2F5IHdpdGggY2VydGFpbnR5Ci0gICAgICAgICMgdGhh
dCB0aGUgcGF0Y2ggaXMgZ29vZC4KLSAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X3ByZV9leGlz
dGluZ19mYWlsdXJlcyhjbGVhbl90cmVlX3Jlc3VsdHNfZmFpbGluZ190ZXN0cywgZmxha3lfZmFp
bHVyZXMpCi0KLQotY2xhc3MgUnVuV2ViS2l0MVRlc3RzKFJ1bldlYktpdFRlc3RzKToKLSAgICBk
ZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3VzZS1kdW1wLXJlbmRl
ci10cmVlJywgVHJ1ZSkKLSAgICAgICAgcmV0dXJuIFJ1bldlYktpdFRlc3RzLnN0YXJ0KHNlbGYp
Ci0KLQotY2xhc3MgQXJjaGl2ZUJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAg
IGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1wcm9k
dWN0LWFyY2hpdmUnLAotICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tcGxhdGZvcm09
JShmdWxsUGxhdGZvcm0pcycpLCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycp
LCAnYXJjaGl2ZSddCi0gICAgbmFtZSA9ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnCi0gICAgZGVz
Y3JpcHRpb24gPSBbJ2FyY2hpdmluZyBidWlsdCBwcm9kdWN0J10KLSAgICBkZXNjcmlwdGlvbkRv
bmUgPSBbJ0FyY2hpdmVkIGJ1aWx0IHByb2R1Y3QnXQotICAgIGhhbHRPbkZhaWx1cmUgPSBUcnVl
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihBcmNo
aXZlQnVpbHRQcm9kdWN0LCBzZWxmKS5fX2luaXRfXyhsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJn
cykKLQotCi1jbGFzcyBVcGxvYWRCdWlsdFByb2R1Y3QodHJhbnNmZXIuRmlsZVVwbG9hZCk6Ci0g
ICAgbmFtZSA9ICd1cGxvYWQtYnVpbHQtcHJvZHVjdCcKLSAgICB3b3JrZXJzcmMgPSBXaXRoUHJv
cGVydGllcygnV2ViS2l0QnVpbGQvJShjb25maWd1cmF0aW9uKXMuemlwJykKLSAgICBtYXN0ZXJk
ZXN0ID0gV2l0aFByb3BlcnRpZXMoJ3B1YmxpY19odG1sL2FyY2hpdmVzLyUoZnVsbFBsYXRmb3Jt
KXMtJShhcmNoaXRlY3R1cmUpcy0lKGNvbmZpZ3VyYXRpb24pcy8lKHBhdGNoX2lkKXMuemlwJykK
LSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1VwbG9hZGVkIGJ1aWx0IHByb2R1Y3QnXQotICAgIGhh
bHRPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgot
ICAgICAgICBrd2FyZ3NbJ3dvcmtlcnNyYyddID0gc2VsZi53b3JrZXJzcmMKLSAgICAgICAga3dh
cmdzWydtYXN0ZXJkZXN0J10gPSBzZWxmLm1hc3RlcmRlc3QKLSAgICAgICAga3dhcmdzWydtb2Rl
J10gPSAwbzA2NDQKLSAgICAgICAga3dhcmdzWydibG9ja3NpemUnXSA9IDEwMjQgKiAyNTYKLSAg
ICAgICAgdHJhbnNmZXIuRmlsZVVwbG9hZC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykKLQotICAg
IGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBzZWxmLnJlc3VsdHMgIT0g
U1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdGYWlsZWQgdG8gdXBsb2Fk
IGJ1aWx0IHByb2R1Y3QnfQotICAgICAgICByZXR1cm4gc3VwZXIoVXBsb2FkQnVpbHRQcm9kdWN0
LCBzZWxmKS5nZXRSZXN1bHRTdW1tYXJ5KCkKLQotCi1jbGFzcyBUcmFuc2ZlclRvUzMobWFzdGVy
Lk1hc3RlclNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9ICd0cmFuc2Zlci10by1zMycKLSAgICBk
ZXNjcmlwdGlvbiA9IFsndHJhbnNmZXJyaW5nIHRvIHMzJ10KLSAgICBkZXNjcmlwdGlvbkRvbmUg
PSBbJ1RyYW5zZmVycmVkIGFyY2hpdmUgdG8gUzMnXQotICAgIGFyY2hpdmUgPSBXaXRoUHJvcGVy
dGllcygncHVibGljX2h0bWwvYXJjaGl2ZXMvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVy
ZSlzLSUoY29uZmlndXJhdGlvbilzLyUocGF0Y2hfaWQpcy56aXAnKQotICAgIGlkZW50aWZpZXIg
PSBXaXRoUHJvcGVydGllcygnJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29u
ZmlndXJhdGlvbilzJykKLSAgICBwYXRjaF9pZCA9IFdpdGhQcm9wZXJ0aWVzKCclKHBhdGNoX2lk
KXMnKQotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICcuLi9TaGFyZWQvdHJhbnNmZXItYXJjaGl2
ZS10by1zMycsICctLXBhdGNoX2lkJywgcGF0Y2hfaWQsICctLWlkZW50aWZpZXInLCBpZGVudGlm
aWVyLCAnLS1hcmNoaXZlJywgYXJjaGl2ZV0KLSAgICBoYWx0T25GYWlsdXJlID0gVHJ1ZQotICAg
IGZsdW5rT25GYWlsdXJlID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdz
KToKLSAgICAgICAga3dhcmdzWydjb21tYW5kJ10gPSBzZWxmLmNvbW1hbmQKLSAgICAgICAgbWFz
dGVyLk1hc3RlclNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBsb2dFbnZpcm9uPUZhbHNlLCAq
Kmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5sb2dfb2JzZXJ2
ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUpCi0gICAg
ICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIpCi0gICAg
ICAgIHJldHVybiBzdXBlcihUcmFuc2ZlclRvUzMsIHNlbGYpLnN0YXJ0KCkKLQotICAgIGRlZiBm
aW5pc2hlZChzZWxmLCByZXN1bHRzKToKLSAgICAgICAgbG9nX3RleHQgPSBzZWxmLmxvZ19vYnNl
cnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVycigpCi0gICAgICAg
IG1hdGNoID0gcmUuc2VhcmNoKHInUzMgVVJMOiAoP1A8dXJsPlteXHNdKyknLCBsb2dfdGV4dCkK
LSAgICAgICAgIyBTYW1wbGUgbG9nOiBTMyBVUkw6IGh0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpv
bmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVsYXRvci0xMi14ODZfNjQt
cmVsZWFzZS8xMjM0NTYuemlwCi0gICAgICAgIGlmIG1hdGNoOgotICAgICAgICAgICAgc2VsZi5h
ZGRVUkwoJ3VwbG9hZGVkIGFyY2hpdmUnLCBtYXRjaC5ncm91cCgndXJsJykpCi0KLSAgICAgICAg
aWYgcmVzdWx0cyA9PSBTVUNDRVNTOgotICAgICAgICAgICAgdHJpZ2dlcnMgPSBzZWxmLmdldFBy
b3BlcnR5KCd0cmlnZ2VycycsIE5vbmUpCi0gICAgICAgICAgICBpZiB0cmlnZ2VyczoKLSAgICAg
ICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbVHJpZ2dlcihz
Y2hlZHVsZXJOYW1lcz10cmlnZ2VycyldKQotCi0gICAgICAgIHJldHVybiBzdXBlcihUcmFuc2Zl
clRvUzMsIHNlbGYpLmZpbmlzaGVkKHJlc3VsdHMpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxm
LCByZXN1bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIHJlc3VsdHMgPT0gU1VDQ0VTUyBhbmQg
c2VsZi5nZXRQcm9wZXJ0eSgnc2Vuc2l0aXZlJywgRmFsc2UpCi0KLSAgICBkZWYgZ2V0UmVzdWx0
U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAg
ICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIHRyYW5zZmVyIGFyY2hpdmUgdG8g
UzMnfQotICAgICAgICByZXR1cm4gc3VwZXIoVHJhbnNmZXJUb1MzLCBzZWxmKS5nZXRSZXN1bHRT
dW1tYXJ5KCkKLQotCi1jbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1h
bmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9k
b3dubG9hZC1idWlsdC1wcm9kdWN0JywKLSAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tJShjb25m
aWd1cmF0aW9uKXMnKSwKLSAgICAgICAgV2l0aFByb3BlcnRpZXMoUzNVUkwgKyAnZXdzLWFyY2hp
dmVzLndlYmtpdC5vcmcvJShmdWxsUGxhdGZvcm0pcy0lKGFyY2hpdGVjdHVyZSlzLSUoY29uZmln
dXJhdGlvbilzLyUocGF0Y2hfaWQpcy56aXAnKV0KLSAgICBuYW1lID0gJ2Rvd25sb2FkLWJ1aWx0
LXByb2R1Y3QnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2Rvd25sb2FkaW5nIGJ1aWx0IHByb2R1Y3Qn
XQotICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsnRG93bmxvYWRlZCBidWlsdCBwcm9kdWN0J10KLSAg
ICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxm
KToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1
cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0IHByb2R1Y3QgZnJvbSBTMyd9
Ci0gICAgICAgIHJldHVybiBzdXBlcihEb3dubG9hZEJ1aWx0UHJvZHVjdCwgc2VsZikuZ2V0UmVz
dWx0U3VtbWFyeSgpCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAg
ICBzdXBlcihEb3dubG9hZEJ1aWx0UHJvZHVjdCwgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1G
YWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0g
ICAgICAgIHJjID0gc2hlbGwuU2hlbGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQp
Ci0gICAgICAgIGlmIHJjID09IEZBSUxVUkU6Ci0gICAgICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0
ZXBzQWZ0ZXJDdXJyZW50U3RlcChbRG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyKCldKQot
ICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0
ZXIoRG93bmxvYWRCdWlsdFByb2R1Y3QpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29s
cy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywKLSAgICAgICAgV2l0
aFByb3BlcnRpZXMoJy0tJShjb25maWd1cmF0aW9uKXMnKSwKLSAgICAgICAgV2l0aFByb3BlcnRp
ZXMoRVdTX0JVSUxEX1VSTCArICdhcmNoaXZlcy8lKGZ1bGxQbGF0Zm9ybSlzLSUoYXJjaGl0ZWN0
dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShwYXRjaF9pZClzLnppcCcpXQotICAgIGhhbHRPbkZh
aWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgZ2V0UmVz
dWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0g
ICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0IHBy
b2R1Y3QgZnJvbSBidWlsZCBtYXN0ZXInfQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21t
YW5kLmdldFJlc3VsdFN1bW1hcnkoc2VsZikKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2Vs
ZiwgY21kKToKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5ldmFsdWF0ZUNvbW1h
bmQoc2VsZiwgY21kKQotCi0KLWNsYXNzIEV4dHJhY3RCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxD
b21tYW5kKToKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlJywKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVz
KCctLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMnKSwgV2l0aFByb3BlcnRpZXMoJy0tJShjb25m
aWd1cmF0aW9uKXMnKSwgJ2V4dHJhY3QnXQotICAgIG5hbWUgPSAnZXh0cmFjdC1idWlsdC1wcm9k
dWN0JwotICAgIGRlc2NyaXB0aW9uID0gWydleHRyYWN0aW5nIGJ1aWx0IHByb2R1Y3QnXQotICAg
IGRlc2NyaXB0aW9uRG9uZSA9IFsnRXh0cmFjdGVkIGJ1aWx0IHByb2R1Y3QnXQotICAgIGhhbHRP
bkZhaWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihFeHRyYWN0QnVpbHRQcm9kdWN0
LCBzZWxmKS5fX2luaXRfXyhsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotCi1jbGFzcyBS
dW5BUElUZXN0cyhUZXN0V2l0aEZhaWx1cmVDb3VudCk6Ci0gICAgbmFtZSA9ICdydW4tYXBpLXRl
c3RzJwotICAgIGRlc2NyaXB0aW9uID0gWydhcGkgdGVzdHMgcnVubmluZyddCi0gICAgZGVzY3Jp
cHRpb25Eb25lID0gWydhcGktdGVzdHMnXQotICAgIGpzb25GaWxlTmFtZSA9ICdhcGlfdGVzdF9y
ZXN1bHRzLmpzb24nCi0gICAgbG9nZmlsZXMgPSB7J2pzb24nOiBqc29uRmlsZU5hbWV9Ci0gICAg
Y29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cycsICctLW5v
LWJ1aWxkJywKLSAgICAgICAgICAgICAgIFdpdGhQcm9wZXJ0aWVzKCctLSUoY29uZmlndXJhdGlv
bilzJyksICctLXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChqc29uRmlsZU5h
bWUpXQotICAgIGZhaWxlZFRlc3RzRm9ybWF0U3RyaW5nID0gJyVkIGFwaSB0ZXN0JXMgZmFpbGVk
IG9yIHRpbWVkIG91dCcKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAg
ICAgIHN1cGVyKFJ1bkFQSVRlc3RzLCBzZWxmKS5fX2luaXRfXyhsb2dFbnZpcm9uPUZhbHNlLCAq
Kmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcGxhdGZvcm0gPSBzZWxm
LmdldFByb3BlcnR5KCdwbGF0Zm9ybScpCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICdndGsnOgot
ICAgICAgICAgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWd0ay10
ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICctLXswfScuZm9ybWF0KHNlbGYuZ2V0UHJv
cGVydHkoJ2NvbmZpZ3VyYXRpb24nKSksCi0gICAgICAgICAgICAgICAgICAgICAgICctLWpzb24t
b3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0KLSAgICAgICAgICAgIHNlbGYu
c2V0Q29tbWFuZChjb21tYW5kKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXBwZW5kQ3Vz
dG9tQnVpbGRGbGFncyhzZWxmLCBwbGF0Zm9ybSwgc2VsZi5nZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJykpCi0gICAgICAgIHJldHVybiBUZXN0V2l0aEZhaWx1cmVDb3VudC5zdGFydChzZWxmKQot
Ci0gICAgZGVmIGNvdW50RmFpbHVyZXMoc2VsZiwgY21kKToKLSAgICAgICAgbG9nX3RleHQgPSBz
ZWxmLmxvZ19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVy
cigpCi0KLSAgICAgICAgbWF0Y2ggPSByZS5zZWFyY2gocidSYW4gKD9QPHJhbj5cZCspIHRlc3Rz
IG9mICg/UDx0b3RhbD5cZCspIHdpdGggKD9QPHBhc3NlZD5cZCspIHN1Y2Nlc3NmdWwnLCBsb2df
dGV4dCkKLSAgICAgICAgaWYgbm90IG1hdGNoOgotICAgICAgICAgICAgcmV0dXJuIDAKLSAgICAg
ICAgcmV0dXJuIGludChtYXRjaC5ncm91cCgncmFuJykpIC0gaW50KG1hdGNoLmdyb3VwKCdwYXNz
ZWQnKSkKLQotICAgIGRlZiBldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgcmMg
PSBzdXBlcihSdW5BUElUZXN0cywgc2VsZikuZXZhbHVhdGVDb21tYW5kKGNtZCkKLSAgICAgICAg
aWYgcmMgPT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIG1lc3NhZ2UgPSAnUGFzc2VkIEFQSSB0ZXN0
cycKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25lID0gbWVzc2FnZQotICAgICAgICAg
ICAgc2VsZi5idWlsZC5yZXN1bHRzID0gU1VDQ0VTUwotICAgICAgICAgICAgc2VsZi5idWlsZC5i
dWlsZEZpbmlzaGVkKFttZXNzYWdlXSwgU1VDQ0VTUykKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVwKFtWYWxpZGF0ZVBhdGNoKHZl
cmlmeUJ1Z0Nsb3NlZD1GYWxzZSwgYWRkVVJMcz1GYWxzZSksIEtpbGxPbGRQcm9jZXNzZXMoKSwg
UmVSdW5BUElUZXN0cygpXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQotY2xhc3MgUmVSdW5BUElU
ZXN0cyhSdW5BUElUZXN0cyk6Ci0gICAgbmFtZSA9ICdyZS1ydW4tYXBpLXRlc3RzJwotCi0gICAg
ZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IFRlc3RXaXRoRmFp
bHVyZUNvdW50LmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAgIGlmIHJjID09IFNV
Q0NFU1M6Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ1Bhc3NlZCBBUEkgdGVzdHMnCi0gICAgICAg
ICAgICBzZWxmLmRlc2NyaXB0aW9uRG9uZSA9IG1lc3NhZ2UKLSAgICAgICAgICAgIHNlbGYuYnVp
bGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hl
ZChbbWVzc2FnZV0sIFNVQ0NFU1MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAgICAgICAgIHN0ZXBzX3Rv
X2FkZCA9IFtVbkFwcGx5UGF0Y2hJZlJlcXVpcmVkKCksIFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVn
Q2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKV0KLSAgICAgICAgICAgIHBsYXRmb3JtID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgncGxhdGZvcm0nKQotICAgICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ3dw
ZSc6Ci0gICAgICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVuZChJbnN0YWxsV3BlRGVwZW5k
ZW5jaWVzKCkpCi0gICAgICAgICAgICBlbGlmIHBsYXRmb3JtID09ICdndGsnOgotICAgICAgICAg
ICAgICAgIHN0ZXBzX3RvX2FkZC5hcHBlbmQoSW5zdGFsbEd0a0RlcGVuZGVuY2llcygpKQotICAg
ICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVuZChDb21waWxlV2ViS2l0V2l0aG91dFBhdGNoKCkp
Ci0gICAgICAgICAgICBzdGVwc190b19hZGQuYXBwZW5kKFZhbGlkYXRlUGF0Y2godmVyaWZ5QnVn
Q2xvc2VkPUZhbHNlLCBhZGRVUkxzPUZhbHNlKSkKLSAgICAgICAgICAgIHN0ZXBzX3RvX2FkZC5h
cHBlbmQoS2lsbE9sZFByb2Nlc3NlcygpKQotICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFwcGVu
ZChSdW5BUElUZXN0c1dpdGhvdXRQYXRjaCgpKQotICAgICAgICAgICAgc3RlcHNfdG9fYWRkLmFw
cGVuZChBbmFseXplQVBJVGVzdHNSZXN1bHRzKCkpCi0gICAgICAgICAgICAjIFVzaW5nIGEgc2lu
Z2xlIGFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcCBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNv
bS9idWlsZGJvdC9idWlsZGJvdC9pc3N1ZXMvNDg3NAotICAgICAgICAgICAgc2VsZi5idWlsZC5h
ZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoc3RlcHNfdG9fYWRkKQotCi0gICAgICAgIHJldHVybiBy
YwotCi0KLWNsYXNzIFJ1bkFQSVRlc3RzV2l0aG91dFBhdGNoKFJ1bkFQSVRlc3RzKToKLSAgICBu
YW1lID0gJ3J1bi1hcGktdGVzdHMtd2l0aG91dC1wYXRjaCcKLQotICAgIGRlZiBldmFsdWF0ZUNv
bW1hbmQoc2VsZiwgY21kKToKLSAgICAgICAgcmV0dXJuIFRlc3RXaXRoRmFpbHVyZUNvdW50LmV2
YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0KLQotY2xhc3MgQW5hbHl6ZUFQSVRlc3RzUmVzdWx0
cyhidWlsZHN0ZXAuQnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ2FuYWx5emUtYXBpLXRlc3RzLXJl
c3VsdHMnCi0gICAgZGVzY3JpcHRpb24gPSBbJ2FuYWx5emUtYXBpLXRlc3QtcmVzdWx0cyddCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWydhbmFseXplLWFwaS10ZXN0cy1yZXN1bHRzJ10KLSAgICBO
VU1fRkFJTFVSRVNfVE9fRElTUExBWSA9IDEwCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIHNlbGYucmVzdWx0cyA9IHt9Ci0gICAgICAgIGQgPSBzZWxmLmdldFRlc3RzUmVzdWx0cyhS
dW5BUElUZXN0cy5uYW1lKQotICAgICAgICBkLmFkZENhbGxiYWNrKGxhbWJkYSByZXM6IHNlbGYu
Z2V0VGVzdHNSZXN1bHRzKFJlUnVuQVBJVGVzdHMubmFtZSkpCi0gICAgICAgIGQuYWRkQ2FsbGJh
Y2sobGFtYmRhIHJlczogc2VsZi5nZXRUZXN0c1Jlc3VsdHMoUnVuQVBJVGVzdHNXaXRob3V0UGF0
Y2gubmFtZSkpCi0gICAgICAgIGQuYWRkQ2FsbGJhY2sobGFtYmRhIHJlczogc2VsZi5hbmFseXpl
UmVzdWx0cygpKQotICAgICAgICByZXR1cm4gZGVmZXIuc3VjY2VlZChOb25lKQotCi0gICAgZGVm
IGFuYWx5emVSZXN1bHRzKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5yZXN1bHRzIG9yIGxl
bihzZWxmLnJlc3VsdHMpID09IDA6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJy
JywgJ1VuYWJsZSB0byBwYXJzZSBBUEkgdGVzdCByZXN1bHRzOiB7fScuZm9ybWF0KHNlbGYucmVz
dWx0cykpCi0gICAgICAgICAgICBzZWxmLmZpbmlzaGVkKFJFVFJZKQotICAgICAgICAgICAgc2Vs
Zi5idWlsZC5idWlsZEZpbmlzaGVkKFsnVW5hYmxlIHRvIHBhcnNlIEFQSSB0ZXN0IHJlc3VsdHMn
XSwgUkVUUlkpCi0gICAgICAgICAgICByZXR1cm4gLTEKLQotICAgICAgICBmaXJzdF9ydW5fcmVz
dWx0cyA9IHNlbGYucmVzdWx0cy5nZXQoUnVuQVBJVGVzdHMubmFtZSkKLSAgICAgICAgc2Vjb25k
X3J1bl9yZXN1bHRzID0gc2VsZi5yZXN1bHRzLmdldChSZVJ1bkFQSVRlc3RzLm5hbWUpCi0gICAg
ICAgIGNsZWFuX3RyZWVfcmVzdWx0cyA9IHNlbGYucmVzdWx0cy5nZXQoUnVuQVBJVGVzdHNXaXRo
b3V0UGF0Y2gubmFtZSkKLQotICAgICAgICBpZiBub3QgKGZpcnN0X3J1bl9yZXN1bHRzIGFuZCBz
ZWNvbmRfcnVuX3Jlc3VsdHMpOgotICAgICAgICAgICAgc2VsZi5maW5pc2hlZChSRVRSWSkKLSAg
ICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbJ1VuYWJsZSB0byBwYXJzZSBBUEkg
dGVzdCByZXN1bHRzJ10sIFJFVFJZKQotICAgICAgICAgICAgcmV0dXJuIC0xCi0KLSAgICAgICAg
ZGVmIGdldEFQSVRlc3RGYWlsdXJlcyhyZXN1bHQpOgotICAgICAgICAgICAgaWYgbm90IHJlc3Vs
dDoKLSAgICAgICAgICAgICAgICByZXR1cm4gc2V0KFtdKQotICAgICAgICAgICAgIyBUT0RPOiBB
bmFseXplIFRpbWUtb3V0LCBDcmFzaCBhbmQgRmFpbHVyZSBpbmRlcGVuZGVudGx5Ci0gICAgICAg
ICAgICByZXR1cm4gc2V0KFtmYWlsdXJlLmdldCgnbmFtZScpIGZvciBmYWlsdXJlIGluIHJlc3Vs
dC5nZXQoJ1RpbWVkb3V0JywgW10pXSArCi0gICAgICAgICAgICAgICAgW2ZhaWx1cmUuZ2V0KCdu
YW1lJykgZm9yIGZhaWx1cmUgaW4gcmVzdWx0LmdldCgnQ3Jhc2hlZCcsIFtdKV0gKwotICAgICAg
ICAgICAgICAgIFtmYWlsdXJlLmdldCgnbmFtZScpIGZvciBmYWlsdXJlIGluIHJlc3VsdC5nZXQo
J0ZhaWxlZCcsIFtdKV0pCi0KLSAgICAgICAgZmlyc3RfcnVuX2ZhaWx1cmVzID0gZ2V0QVBJVGVz
dEZhaWx1cmVzKGZpcnN0X3J1bl9yZXN1bHRzKQotICAgICAgICBzZWNvbmRfcnVuX2ZhaWx1cmVz
ID0gZ2V0QVBJVGVzdEZhaWx1cmVzKHNlY29uZF9ydW5fcmVzdWx0cykKLSAgICAgICAgY2xlYW5f
dHJlZV9mYWlsdXJlcyA9IGdldEFQSVRlc3RGYWlsdXJlcyhjbGVhbl90cmVlX3Jlc3VsdHMpCi0g
ICAgICAgIGNsZWFuX3RyZWVfZmFpbHVyZXNfdG9fZGlzcGxheSA9IGxpc3QoY2xlYW5fdHJlZV9m
YWlsdXJlcylbOnNlbGYuTlVNX0ZBSUxVUkVTX1RPX0RJU1BMQVldCi0gICAgICAgIGNsZWFuX3Ry
ZWVfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGNsZWFuX3RyZWVfZmFpbHVyZXNfdG9fZGlz
cGxheSkKLQotICAgICAgICBmYWlsdXJlc193aXRoX3BhdGNoID0gZmlyc3RfcnVuX2ZhaWx1cmVz
LmludGVyc2VjdGlvbihzZWNvbmRfcnVuX2ZhaWx1cmVzKQotICAgICAgICBmbGFreV9mYWlsdXJl
cyA9IGZpcnN0X3J1bl9mYWlsdXJlcy51bmlvbihzZWNvbmRfcnVuX2ZhaWx1cmVzKSAtIGZpcnN0
X3J1bl9mYWlsdXJlcy5pbnRlcnNlY3Rpb24oc2Vjb25kX3J1bl9mYWlsdXJlcykKLSAgICAgICAg
Zmxha3lfZmFpbHVyZXMgPSBsaXN0KGZsYWt5X2ZhaWx1cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNf
VE9fRElTUExBWV0KLSAgICAgICAgZmxha3lfZmFpbHVyZXNfc3RyaW5nID0gJywgJy5qb2luKGZs
YWt5X2ZhaWx1cmVzKQotICAgICAgICBuZXdfZmFpbHVyZXMgPSBmYWlsdXJlc193aXRoX3BhdGNo
IC0gY2xlYW5fdHJlZV9mYWlsdXJlcwotICAgICAgICBuZXdfZmFpbHVyZXNfdG9fZGlzcGxheSA9
IGxpc3QobmV3X2ZhaWx1cmVzKVs6c2VsZi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0KLSAgICAg
ICAgbmV3X2ZhaWx1cmVzX3N0cmluZyA9ICcsICcuam9pbihuZXdfZmFpbHVyZXNfdG9fZGlzcGxh
eSkKLQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ1xuRmFpbHVyZXMgaW4gQVBJ
IFRlc3QgZmlyc3QgcnVuOiB7fScuZm9ybWF0KGxpc3QoZmlyc3RfcnVuX2ZhaWx1cmVzKVs6c2Vs
Zi5OVU1fRkFJTFVSRVNfVE9fRElTUExBWV0pKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3Rk
ZXJyJywgJ1xuRmFpbHVyZXMgaW4gQVBJIFRlc3Qgc2Vjb25kIHJ1bjoge30nLmZvcm1hdChsaXN0
KHNlY29uZF9ydW5fZmFpbHVyZXMpWzpzZWxmLk5VTV9GQUlMVVJFU19UT19ESVNQTEFZXSkpCi0g
ICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnXG5GbGFreSBUZXN0czoge30nLmZvcm1h
dChmbGFreV9mYWlsdXJlc19zdHJpbmcpKQotICAgICAgICBzZWxmLl9hZGRUb0xvZygnc3RkZXJy
JywgJ1xuRmFpbHVyZXMgaW4gQVBJIFRlc3Qgb24gY2xlYW4gdHJlZToge30nLmZvcm1hdChjbGVh
bl90cmVlX2ZhaWx1cmVzX3N0cmluZykpCi0KLSAgICAgICAgaWYgbmV3X2ZhaWx1cmVzOgotICAg
ICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbk5ldyBmYWlsdXJlczoge31cbicu
Zm9ybWF0KG5ld19mYWlsdXJlc19zdHJpbmcpKQotICAgICAgICAgICAgc2VsZi5maW5pc2hlZChG
QUlMVVJFKQotICAgICAgICAgICAgc2VsZi5idWlsZC5yZXN1bHRzID0gRkFJTFVSRQotICAgICAg
ICAgICAgcGx1cmFsU3VmZml4ID0gJ3MnIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gMSBlbHNlICcn
Ci0gICAgICAgICAgICBtZXNzYWdlID0gJ0ZvdW5kIHt9IG5ldyBBUEkgdGVzdCBmYWlsdXJle306
IHt9Jy5mb3JtYXQobGVuKG5ld19mYWlsdXJlcyksIHBsdXJhbFN1ZmZpeCwgbmV3X2ZhaWx1cmVz
X3N0cmluZykKLSAgICAgICAgICAgIGlmIGxlbihuZXdfZmFpbHVyZXMpID4gc2VsZi5OVU1fRkFJ
TFVSRVNfVE9fRElTUExBWToKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICcgLi4uJwotICAg
ICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBtZXNzYWdlCi0gICAgICAgICAgICBzZWxm
LmJ1aWxkLmJ1aWxkRmluaXNoZWQoW21lc3NhZ2VdLCBGQUlMVVJFKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgc2VsZi5fYWRkVG9Mb2coJ3N0ZGVycicsICdcbk5vIG5ldyBmYWlsdXJlc1xu
JykKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoU1VDQ0VTUykKLSAgICAgICAgICAgIHNlbGYu
YnVpbGQucmVzdWx0cyA9IFNVQ0NFU1MKLSAgICAgICAgICAgIHNlbGYuZGVzY3JpcHRpb25Eb25l
ID0gJ1Bhc3NlZCBBUEkgdGVzdHMnCi0gICAgICAgICAgICBwbHVyYWxTdWZmaXggPSAncycgaWYg
bGVuKGNsZWFuX3RyZWVfZmFpbHVyZXMpID4gMSBlbHNlICcnCi0gICAgICAgICAgICBtZXNzYWdl
ID0gJycKLSAgICAgICAgICAgIGlmIGNsZWFuX3RyZWVfZmFpbHVyZXM6Ci0gICAgICAgICAgICAg
ICAgbWVzc2FnZSA9ICdGb3VuZCB7fSBwcmUtZXhpc3RpbmcgQVBJIHRlc3QgZmFpbHVyZXt9OiB7
fScuZm9ybWF0KGxlbihjbGVhbl90cmVlX2ZhaWx1cmVzKSwgcGx1cmFsU3VmZml4LCBjbGVhbl90
cmVlX2ZhaWx1cmVzX3N0cmluZykKLSAgICAgICAgICAgICAgICBmb3IgY2xlYW5fdHJlZV9mYWls
dXJlIGluIGNsZWFuX3RyZWVfZmFpbHVyZXNfdG9fZGlzcGxheToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5zZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZShjbGVhbl90cmVlX2Zh
aWx1cmUpCi0gICAgICAgICAgICBpZiBsZW4oY2xlYW5fdHJlZV9mYWlsdXJlcykgPiBzZWxmLk5V
TV9GQUlMVVJFU19UT19ESVNQTEFZOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJyAuLi4n
Ci0gICAgICAgICAgICBpZiBmbGFreV9mYWlsdXJlczoKLSAgICAgICAgICAgICAgICBtZXNzYWdl
ICs9ICcgRm91bmQgZmxha3kgdGVzdHM6IHt9Jy5mb3JtYXQoZmxha3lfZmFpbHVyZXNfc3RyaW5n
KQotICAgICAgICAgICAgICAgIGZvciBmbGFreV9mYWlsdXJlIGluIGZsYWt5X2ZhaWx1cmVzOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZW1haWxfZm9yX2ZsYWt5X2ZhaWx1cmUoZmxh
a3lfZmFpbHVyZSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2Fn
ZV0sIFNVQ0NFU1MpCi0KLSAgICBAZGVmZXIuaW5saW5lQ2FsbGJhY2tzCi0gICAgZGVmIF9hZGRU
b0xvZyhzZWxmLCBsb2dOYW1lLCBtZXNzYWdlKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
bG9nID0gc2VsZi5nZXRMb2cobG9nTmFtZSkKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgbG9nID0geWllbGQgc2VsZi5hZGRMb2cobG9nTmFtZSkKLSAgICAgICAgbG9nLmFk
ZFN0ZG91dChtZXNzYWdlKQotCi0gICAgZGVmIGdldEJ1aWxkU3RlcEJ5TmFtZShzZWxmLCBuYW1l
KToKLSAgICAgICAgZm9yIHN0ZXAgaW4gc2VsZi5idWlsZC5leGVjdXRlZFN0ZXBzOgotICAgICAg
ICAgICAgaWYgc3RlcC5uYW1lID09IG5hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXAK
LSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIEBkZWZlci5pbmxpbmVDYWxsYmFja3MKLSAgICBk
ZWYgZ2V0VGVzdHNSZXN1bHRzKHNlbGYsIG5hbWUpOgotICAgICAgICBzdGVwID0gc2VsZi5nZXRC
dWlsZFN0ZXBCeU5hbWUobmFtZSkKLSAgICAgICAgaWYgbm90IHN0ZXA6Ci0gICAgICAgICAgICBz
ZWxmLl9hZGRUb0xvZygnc3RkZXJyJywgJ0VSUk9SOiBzdGVwIG5vdCBmb3VuZDoge30nLmZvcm1h
dChzdGVwKSkKLSAgICAgICAgICAgIGRlZmVyLnJldHVyblZhbHVlKE5vbmUpCi0KLSAgICAgICAg
bG9ncyA9IHlpZWxkIHNlbGYubWFzdGVyLmRiLmxvZ3MuZ2V0TG9ncyhzdGVwLnN0ZXBpZCkKLSAg
ICAgICAgbG9nID0gbmV4dCgobG9nIGZvciBsb2cgaW4gbG9ncyBpZiBsb2dbJ25hbWUnXSA9PSB1
J2pzb24nKSwgTm9uZSkKLSAgICAgICAgaWYgbm90IGxvZzoKLSAgICAgICAgICAgIHNlbGYuX2Fk
ZFRvTG9nKCdzdGRlcnInLCAnRVJST1I6IGxvZyBmb3Igc3RlcCBub3QgZm91bmQ6IHt9Jy5mb3Jt
YXQoc3RlcCkpCi0gICAgICAgICAgICBkZWZlci5yZXR1cm5WYWx1ZShOb25lKQotCi0gICAgICAg
IGxhc3RsaW5lID0gaW50KG1heCgwLCBsb2dbJ251bV9saW5lcyddIC0gMSkpCi0gICAgICAgIGxv
Z0xpbmVzID0geWllbGQgc2VsZi5tYXN0ZXIuZGIubG9ncy5nZXRMb2dMaW5lcyhsb2dbJ2lkJ10s
IDAsIGxhc3RsaW5lKQotICAgICAgICBpZiBsb2dbJ3R5cGUnXSA9PSAncyc6Ci0gICAgICAgICAg
ICBsb2dMaW5lcyA9ICcnLmpvaW4oW2xpbmVbMTpdIGZvciBsaW5lIGluIGxvZ0xpbmVzLnNwbGl0
bGluZXMoKV0pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5yZXN1bHRzW25hbWVd
ID0ganNvbi5sb2Fkcyhsb2dMaW5lcykKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoK
LSAgICAgICAgICAgIHNlbGYuX2FkZFRvTG9nKCdzdGRlcnInLCAnRVJST1I6IHVuYWJsZSB0byBw
YXJzZSBkYXRhLCBleGNlcHRpb246IHt9Jy5mb3JtYXQoZXgpKQotCi0gICAgZGVmIHNlbmRfZW1h
aWxfZm9yX2ZsYWt5X2ZhaWx1cmUoc2VsZiwgdGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAn
JykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1lID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFt
ZScsICcnKQotICAgICAgICAgICAgYnVpbGRfdXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMv
e30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25maWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1
aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIpCi0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7
fT9zdWl0ZT1hcGktdGVzdHMmdGVzdD17fScuZm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25h
bWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1YmplY3QgPSB1J0ZsYWt5IHRlc3Q6IHt9Jy5mb3Jt
YXQodGVzdF9uYW1lKQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdGbGFreSB0ZXN0OiB7fVxu
XG5CdWlsZDoge31cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7fScu
Zm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBo
aXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWls
X3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ2ZsYWt5LXt9Jy5mb3JtYXQodGVz
dF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgcHJp
bnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIGZsYWt5IGZhaWx1cmU6IHt9Jy5mb3JtYXQo
ZSkpCi0KLSAgICBkZWYgc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUoc2VsZiwg
dGVzdF9uYW1lKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnVpbGRlcl9uYW1lID0gc2Vs
Zi5nZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnJykKLSAgICAgICAgICAgIHdvcmtlcl9uYW1l
ID0gc2VsZi5nZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICcnKQotICAgICAgICAgICAgYnVpbGRf
dXJsID0gJ3t9Iy9idWlsZGVycy97fS9idWlsZHMve30nLmZvcm1hdChzZWxmLm1hc3Rlci5jb25m
aWcuYnVpbGRib3RVUkwsIHNlbGYuYnVpbGQuX2J1aWxkZXJpZCwgc2VsZi5idWlsZC5udW1iZXIp
Ci0gICAgICAgICAgICBoaXN0b3J5X3VybCA9ICd7fT9zdWl0ZT1hcGktdGVzdHMmdGVzdD17fScu
Zm9ybWF0KFJFU1VMVFNfREJfVVJMLCB0ZXN0X25hbWUpCi0KLSAgICAgICAgICAgIGVtYWlsX3N1
YmplY3QgPSB1J1ByZS1leGlzdGluZyB0ZXN0IGZhaWx1cmU6IHt9Jy5mb3JtYXQodGVzdF9uYW1l
KQotICAgICAgICAgICAgZW1haWxfdGV4dCA9ICdUZXN0IHt9IGZhaWxlZCBvbiBjbGVhbiB0cmVl
IHJ1biBpbiB7fS5cblxuQnVpbGRlcjoge31cblxuV29ya2VyOiB7fVxuXG5IaXN0b3J5OiB7fScu
Zm9ybWF0KHRlc3RfbmFtZSwgYnVpbGRfdXJsLCBidWlsZGVyX25hbWUsIHdvcmtlcl9uYW1lLCBo
aXN0b3J5X3VybCkKLSAgICAgICAgICAgIHNlbmRfZW1haWxfdG9fYm90X3dhdGNoZXJzKGVtYWls
X3N1YmplY3QsIGVtYWlsX3RleHQsIGJ1aWxkZXJfbmFtZSwgJ3ByZWV4aXN0aW5nLXt9Jy5mb3Jt
YXQodGVzdF9uYW1lKSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAg
ICAgcHJpbnQoJ0Vycm9yIGluIHNlbmRpbmcgZW1haWwgZm9yIHByZS1leGlzdGluZyBmYWlsdXJl
OiB7fScuZm9ybWF0KGUpKQotCi1jbGFzcyBBcmNoaXZlVGVzdFJlc3VsdHMoc2hlbGwuU2hlbGxD
b21tYW5kKToKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvdGVzdC1yZXN1bHQtYXJjaGl2ZScsCi0gICAgICAgICAgICAgICBJbnRlcnBvbGF0ZSgnLS1w
bGF0Zm9ybT0lKHByb3A6cGxhdGZvcm0pcycpLCBJbnRlcnBvbGF0ZSgnLS0lKHByb3A6Y29uZmln
dXJhdGlvbilzJyksICdhcmNoaXZlJ10KLSAgICBuYW1lID0gJ2FyY2hpdmUtdGVzdC1yZXN1bHRz
JwotICAgIGRlc2NyaXB0aW9uID0gWydhcmNoaXZpbmcgdGVzdCByZXN1bHRzJ10KLSAgICBkZXNj
cmlwdGlvbkRvbmUgPSBbJ0FyY2hpdmVkIHRlc3QgcmVzdWx0cyddCi0gICAgaGFsdE9uRmFpbHVy
ZSA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHN1
cGVyKEFyY2hpdmVUZXN0UmVzdWx0cywgc2VsZikuX19pbml0X18obG9nRW52aXJvbj1GYWxzZSwg
Kiprd2FyZ3MpCi0KLQotY2xhc3MgVXBsb2FkVGVzdFJlc3VsdHModHJhbnNmZXIuRmlsZVVwbG9h
ZCk6Ci0gICAgbmFtZSA9ICd1cGxvYWQtdGVzdC1yZXN1bHRzJwotICAgIGRlc2NyaXB0aW9uRG9u
ZSA9IFsnVXBsb2FkZWQgdGVzdCByZXN1bHRzJ10KLSAgICB3b3JrZXJzcmMgPSAnbGF5b3V0LXRl
c3QtcmVzdWx0cy56aXAnCi0gICAgaGFsdE9uRmFpbHVyZSA9IFRydWUKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBpZGVudGlmaWVyPScnLCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIGlkZW50aWZp
ZXIgYW5kIG5vdCBpZGVudGlmaWVyLnN0YXJ0c3dpdGgoJy0nKToKLSAgICAgICAgICAgIGlkZW50
aWZpZXIgPSAnLXt9Jy5mb3JtYXQoaWRlbnRpZmllcikKLSAgICAgICAga3dhcmdzWyd3b3JrZXJz
cmMnXSA9IHNlbGYud29ya2Vyc3JjCi0gICAgICAgIGt3YXJnc1snbWFzdGVyZGVzdCddID0gSW50
ZXJwb2xhdGUoJ3B1YmxpY19odG1sL3Jlc3VsdHMvJShwcm9wOmJ1aWxkZXJuYW1lKXMvciUocHJv
cDpwYXRjaF9pZClzLSUocHJvcDpidWlsZG51bWJlcilze30uemlwJy5mb3JtYXQoaWRlbnRpZmll
cikpCi0gICAgICAgIGt3YXJnc1snbW9kZSddID0gMG8wNjQ0Ci0gICAgICAgIGt3YXJnc1snYmxv
Y2tzaXplJ10gPSAxMDI0ICogMjU2Ci0gICAgICAgIHRyYW5zZmVyLkZpbGVVcGxvYWQuX19pbml0
X18oc2VsZiwgKiprd2FyZ3MpCi0KLQotY2xhc3MgRXh0cmFjdFRlc3RSZXN1bHRzKG1hc3Rlci5N
YXN0ZXJTaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnZXh0cmFjdC10ZXN0LXJlc3VsdHMnCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWydFeHRyYWN0ZWQgdGVzdCByZXN1bHRzJ10KLSAgICByZW5k
ZXJhYmxlcyA9IFsncmVzdWx0RGlyZWN0b3J5JywgJ3ppcEZpbGUnXQotICAgIGhhbHRPbkZhaWx1
cmUgPSBGYWxzZQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBpZGVudGlmaWVyPScnKToKLSAgICAgICAgaWYgaWRlbnRpZmllciBhbmQgbm90IGlk
ZW50aWZpZXIuc3RhcnRzd2l0aCgnLScpOgotICAgICAgICAgICAgaWRlbnRpZmllciA9ICcte30n
LmZvcm1hdChpZGVudGlmaWVyKQotCi0gICAgICAgIHNlbGYuemlwRmlsZSA9IEludGVycG9sYXRl
KCdwdWJsaWNfaHRtbC9yZXN1bHRzLyUocHJvcDpidWlsZGVybmFtZSlzL3IlKHByb3A6cGF0Y2hf
aWQpcy0lKHByb3A6YnVpbGRudW1iZXIpc3t9LnppcCcuZm9ybWF0KGlkZW50aWZpZXIpKQotICAg
ICAgICBzZWxmLnJlc3VsdERpcmVjdG9yeSA9IEludGVycG9sYXRlKCdwdWJsaWNfaHRtbC9yZXN1
bHRzLyUocHJvcDpidWlsZGVybmFtZSlzL3IlKHByb3A6cGF0Y2hfaWQpcy0lKHByb3A6YnVpbGRu
dW1iZXIpc3t9Jy5mb3JtYXQoaWRlbnRpZmllcikpCi0gICAgICAgIHNlbGYuY29tbWFuZCA9IFsn
dW56aXAnLCAnLXEnLCAnLW8nLCBzZWxmLnppcEZpbGUsICctZCcsIHNlbGYucmVzdWx0RGlyZWN0
b3J5XQotCi0gICAgICAgIG1hc3Rlci5NYXN0ZXJTaGVsbENvbW1hbmQuX19pbml0X18oc2VsZiwg
Y29tbWFuZD1zZWxmLmNvbW1hbmQsIGxvZ0Vudmlyb249RmFsc2UpCi0KLSAgICBkZWYgcmVzdWx0
RGlyZWN0b3J5VVJMKHNlbGYpOgotICAgICAgICBwYXRoID0gc2VsZi5yZXN1bHREaXJlY3Rvcnku
cmVwbGFjZSgncHVibGljX2h0bWwvcmVzdWx0cy8nLCAnJykgKyAnLycKLSAgICAgICAgcmV0dXJu
ICd7fXt9Jy5mb3JtYXQoUzNfUkVTVUxUU19VUkwsIHBhdGgpCi0KLSAgICBkZWYgcmVzdWx0c0Rv
d25sb2FkVVJMKHNlbGYpOgotICAgICAgICBwYXRoID0gc2VsZi56aXBGaWxlLnJlcGxhY2UoJ3B1
YmxpY19odG1sL3Jlc3VsdHMvJywgJycpCi0gICAgICAgIHJldHVybiAne317fScuZm9ybWF0KFMz
X1JFU1VMVFNfVVJMLCBwYXRoKQotCi0gICAgZGVmIGdldExhc3RCdWlsZFN0ZXBCeU5hbWUoc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIGZvciBzdGVwIGluIHJldmVyc2VkKHNlbGYuYnVpbGQuZXhlY3V0
ZWRTdGVwcyk6Ci0gICAgICAgICAgICBpZiBuYW1lIGluIHN0ZXAubmFtZToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RlcAotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGFkZEN1c3Rv
bVVSTHMoc2VsZik6Ci0gICAgICAgIHN0ZXAgPSBzZWxmLmdldExhc3RCdWlsZFN0ZXBCeU5hbWUo
UnVuV2ViS2l0VGVzdHMubmFtZSkKLSAgICAgICAgaWYgbm90IHN0ZXA6Ci0gICAgICAgICAgICBz
dGVwID0gc2VsZgotICAgICAgICBzdGVwLmFkZFVSTCgndmlldyBsYXlvdXQgdGVzdCByZXN1bHRz
Jywgc2VsZi5yZXN1bHREaXJlY3RvcnlVUkwoKSArICdyZXN1bHRzLmh0bWwnKQotICAgICAgICBz
dGVwLmFkZFVSTCgnZG93bmxvYWQgbGF5b3V0IHRlc3QgcmVzdWx0cycsIHNlbGYucmVzdWx0c0Rv
d25sb2FkVVJMKCkpCi0KLSAgICBkZWYgZmluaXNoZWQoc2VsZiwgcmVzdWx0KToKLSAgICAgICAg
c2VsZi5hZGRDdXN0b21VUkxzKCkKLSAgICAgICAgcmV0dXJuIG1hc3Rlci5NYXN0ZXJTaGVsbENv
bW1hbmQuZmluaXNoZWQoc2VsZiwgcmVzdWx0KQotCi0KLWNsYXNzIFByaW50Q29uZmlndXJhdGlv
bihzdGVwcy5TaGVsbFNlcXVlbmNlKToKLSAgICBuYW1lID0gJ2NvbmZpZ3VyYXRpb24nCi0gICAg
ZGVzY3JpcHRpb24gPSBbJ2NvbmZpZ3VyYXRpb24nXQotICAgIGhhbHRPbkZhaWx1cmUgPSBGYWxz
ZQotICAgIGZsdW5rT25GYWlsdXJlID0gRmFsc2UKLSAgICB3YXJuT25GYWlsdXJlID0gRmFsc2UK
LSAgICBsb2dFbnZpcm9uID0gRmFsc2UKLSAgICBjb21tYW5kX2xpc3RfZ2VuZXJpYyA9IFtbJ2hv
c3RuYW1lJ11dCi0gICAgY29tbWFuZF9saXN0X2FwcGxlID0gW1snZGYnLCAnLWhsJ10sIFsnZGF0
ZSddLCBbJ3N3X3ZlcnMnXSwgWyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNpb24nXSwgWyd1
cHRpbWUnXV0KLSAgICBjb21tYW5kX2xpc3RfbGludXggPSBbWydkZicsICctaGwnXSwgWydkYXRl
J10sIFsndW5hbWUnLCAnLWEnXSwgWyd1cHRpbWUnXV0KLSAgICBjb21tYW5kX2xpc3Rfd2luID0g
W1snZGYnLCAnLWhsJ11dCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAg
ICAgICBzdXBlcihQcmludENvbmZpZ3VyYXRpb24sIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9NjAs
ICoqa3dhcmdzKQotICAgICAgICBzZWxmLmNvbW1hbmRzID0gW10KLSAgICAgICAgc2VsZi5sb2df
b2JzZXJ2ZXIgPSBsb2dvYnNlcnZlci5CdWZmZXJMb2dPYnNlcnZlcih3YW50U3RkZXJyPVRydWUp
Ci0gICAgICAgIHNlbGYuYWRkTG9nT2JzZXJ2ZXIoJ3N0ZGlvJywgc2VsZi5sb2dfb2JzZXJ2ZXIp
Ci0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBjb21tYW5kX2xpc3QgPSBsaXN0KHNlbGYu
Y29tbWFuZF9saXN0X2dlbmVyaWMpCi0gICAgICAgIHBsYXRmb3JtID0gc2VsZi5nZXRQcm9wZXJ0
eSgncGxhdGZvcm0nLCAnKicpCi0gICAgICAgIGlmIHBsYXRmb3JtICE9ICdqc2Mtb25seSc6Ci0g
ICAgICAgICAgICBwbGF0Zm9ybSA9IHBsYXRmb3JtLnNwbGl0KCctJylbMF0KLSAgICAgICAgaWYg
cGxhdGZvcm0gaW4gKCdtYWMnLCAnaW9zJywgJ3R2b3MnLCAnd2F0Y2hvcycsICcqJyk6Ci0gICAg
ICAgICAgICBjb21tYW5kX2xpc3QuZXh0ZW5kKHNlbGYuY29tbWFuZF9saXN0X2FwcGxlKQotICAg
ICAgICBlbGlmIHBsYXRmb3JtIGluICgnZ3RrJywgJ3dwZScsICdqc2Mtb25seScpOgotICAgICAg
ICAgICAgY29tbWFuZF9saXN0LmV4dGVuZChzZWxmLmNvbW1hbmRfbGlzdF9saW51eCkKLSAgICAg
ICAgZWxpZiBwbGF0Zm9ybSBpbiAoJ3dpbicpOgotICAgICAgICAgICAgY29tbWFuZF9saXN0LmV4
dGVuZChzZWxmLmNvbW1hbmRfbGlzdF93aW4pCi0KLSAgICAgICAgZm9yIGNvbW1hbmQgaW4gY29t
bWFuZF9saXN0OgotICAgICAgICAgICAgc2VsZi5jb21tYW5kcy5hcHBlbmQodXRpbC5TaGVsbEFy
Zyhjb21tYW5kPWNvbW1hbmQsIGxvZ2ZpbGU9J3N0ZGlvJykpCi0gICAgICAgIHJldHVybiBzdXBl
cihQcmludENvbmZpZ3VyYXRpb24sIHNlbGYpLnJ1bigpCi0KLSAgICBkZWYgY29udmVydF9idWls
ZF90b19vc19uYW1lKHNlbGYsIGJ1aWxkKToKLSAgICAgICAgaWYgbm90IGJ1aWxkOgotICAgICAg
ICAgICAgcmV0dXJuICdVbmtub3duJwotCi0gICAgICAgIGJ1aWxkX3RvX25hbWVfbWFwcGluZyA9
IHsKLSAgICAgICAgICAgICcxMS4wJzogJ0JpZyBTdXInLAotICAgICAgICAgICAgJzEwLjE1Jzog
J0NhdGFsaW5hJywKLSAgICAgICAgICAgICcxMC4xNCc6ICdNb2phdmUnLAotICAgICAgICAgICAg
JzEwLjEzJzogJ0hpZ2ggU2llcnJhJywKLSAgICAgICAgICAgICcxMC4xMic6ICdTaWVycmEnLAot
ICAgICAgICAgICAgJzEwLjExJzogJ0VsIENhcGl0YW4nLAotICAgICAgICAgICAgJzEwLjEwJzog
J1lvc2VtaXRlJywKLSAgICAgICAgICAgICcxMC45JzogJ01hdmVyaWNrJywKLSAgICAgICAgICAg
ICcxMC44JzogJ01vdW50YWluIExpb24nLAotICAgICAgICAgICAgJzEwLjcnOiAnTGlvbicsCi0g
ICAgICAgICAgICAnMTAuNic6ICdTbm93IExlb3BhcmQnLAotICAgICAgICAgICAgJzEwLjUnOiAn
TGVvcGFyZCcsCi0gICAgICAgIH0KLQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBidWlsZF90
b19uYW1lX21hcHBpbmcuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiBidWlsZC5zdGFydHN3
aXRoKGtleSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgIHJldHVybiAn
VW5rbm93bicKLQotICAgIGRlZiBnZXRSZXN1bHRTdW1tYXJ5KHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLnJlc3VsdHMgIT0gU1VDQ0VTUzoKLSAgICAgICAgICAgIHJldHVybiB7dSdzdGVwJzogdSdG
YWlsZWQgdG8gcHJpbnQgY29uZmlndXJhdGlvbid9Ci0gICAgICAgIGxvZ1RleHQgPSBzZWxmLmxv
Z19vYnNlcnZlci5nZXRTdGRvdXQoKSArIHNlbGYubG9nX29ic2VydmVyLmdldFN0ZGVycigpCi0g
ICAgICAgIGNvbmZpZ3VyYXRpb24gPSB1J1ByaW50ZWQgY29uZmlndXJhdGlvbicKLSAgICAgICAg
bWF0Y2ggPSByZS5zZWFyY2goJ1Byb2R1Y3RWZXJzaW9uOlsgXHRdKiguKz8pXG4nLCBsb2dUZXh0
KQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIG9zX3ZlcnNpb24gPSBtYXRjaC5ncm91
cCgxKS5zdHJpcCgpCi0gICAgICAgICAgICBvc19uYW1lID0gc2VsZi5jb252ZXJ0X2J1aWxkX3Rv
X29zX25hbWUob3NfdmVyc2lvbikKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSB1J09TOiB7
fSAoe30pJy5mb3JtYXQob3NfbmFtZSwgb3NfdmVyc2lvbikKLQotICAgICAgICB4Y29kZV9yZSA9
IHNka19yZSA9ICdYY29kZVsgXHRdKz8oWzAtOS5dKz8pXG4nCi0gICAgICAgIG1hdGNoID0gcmUu
c2VhcmNoKHhjb2RlX3JlLCBsb2dUZXh0KQotICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAg
IHhjb2RlX3ZlcnNpb24gPSBtYXRjaC5ncm91cCgxKS5zdHJpcCgpCi0gICAgICAgICAgICBjb25m
aWd1cmF0aW9uICs9IHUnLCBYY29kZToge30nLmZvcm1hdCh4Y29kZV92ZXJzaW9uKQotICAgICAg
ICByZXR1cm4ge3Unc3RlcCc6IGNvbmZpZ3VyYXRpb259Ci0KLQotY2xhc3MgQXBwbHlXYXRjaExp
c3Qoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBuYW1lID0gJ2FwcGx5LXdhdGNoLWxpc3QnCi0g
ICAgZGVzY3JpcHRpb24gPSBbJ2FwcGx5aW5nIHdhdGNoaWxpc3QnXQotICAgIGRlc2NyaXB0aW9u
RG9uZSA9IFsnQXBwbGllZCBXYXRjaExpc3QnXQotICAgIGJ1Z19pZCA9IFdpdGhQcm9wZXJ0aWVz
KCclKGJ1Z19pZClzJykKLSAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvU2NyaXB0cy93
ZWJraXQtcGF0Y2gnLCAnYXBwbHktd2F0Y2hsaXN0LWxvY2FsJywgYnVnX2lkXQotICAgIGhhbHRP
bkZhaWx1cmUgPSBUcnVlCi0gICAgZmx1bmtPbkZhaWx1cmUgPSBUcnVlCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzaGVsbC5TaGVsbENvbW1hbmQuX19pbml0
X18oc2VsZiwgdGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQotCi0g
ICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyAh
PSBTVUNDRVNTOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCB0byBhcHBs
eSB3YXRjaGxpc3QnfQotICAgICAgICByZXR1cm4gc3VwZXIoQXBwbHlXYXRjaExpc3QsIHNlbGYp
LmdldFJlc3VsdFN1bW1hcnkoKQotCi0KLWNsYXNzIFNldEJ1aWxkU3VtbWFyeShidWlsZHN0ZXAu
QnVpbGRTdGVwKToKLSAgICBuYW1lID0gJ3NldC1idWlsZC1zdW1tYXJ5JwotICAgIGRlc2NyaXB0
aW9uRG9uZSA9IFsnU2V0IGJ1aWxkIHN1bW1hcnknXQotICAgIGFsd2F5c1J1biA9IFRydWUKLSAg
ICBoYWx0T25GYWlsdXJlID0gRmFsc2UKLSAgICBmbHVua09uRmFpbHVyZSA9IEZhbHNlCi0KLSAg
ICBkZWYgZG9TdGVwSWYoc2VsZiwgc3RlcCk6Ci0gICAgICAgIHJldHVybiBzZWxmLmdldFByb3Bl
cnR5KCdidWlsZF9zdW1tYXJ5JywgRmFsc2UpCi0KLSAgICBkZWYgaGlkZVN0ZXBJZihzZWxmLCBy
ZXN1bHRzLCBzdGVwKToKLSAgICAgICAgcmV0dXJuIG5vdCBzZWxmLmRvU3RlcElmKHN0ZXApCi0K
LSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIGJ1aWxkX3N1bW1hcnkgPSBzZWxmLmdldFBy
b3BlcnR5KCdidWlsZF9zdW1tYXJ5JywgJ2J1aWxkIHN1Y2Nlc3NmdWwnKQotICAgICAgICBzZWxm
LmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbYnVp
bGRfc3VtbWFyeV0sIHNlbGYuYnVpbGQucmVzdWx0cykKLSAgICAgICAgcmV0dXJuIGRlZmVyLnN1
Y2NlZWQoTm9uZSkKLQotCi1jbGFzcyBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzKHNoZWxsLlNoZWxs
Q29tbWFuZCk6Ci0gICAgbmFtZSA9ICdmaW5kLW1vZGlmaWVkLWNoYW5nZWxvZ3MnCi0gICAgZGVz
Y3JpcHRpb25Eb25lID0gWydGb3VuZCBtb2RpZmllZCBDaGFuZ2VMb2dzJ10KLSAgICBjb21tYW5k
ID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy0tbm8tcmVuYW1lcycs
ICctLW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRleCddCi0gICAgaGFsdE9uRmFpbHVyZSA9IEZh
bHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzaGVsbC5T
aGVsbENvbW1hbmQuX19pbml0X18oc2VsZiwgdGltZW91dD0zICogNjAsIGxvZ0Vudmlyb249RmFs
c2UsICoqa3dhcmdzKQotCi0gICAgZGVmIHN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLmxvZ19v
YnNlcnZlciA9IGxvZ29ic2VydmVyLkJ1ZmZlckxvZ09ic2VydmVyKHdhbnRTdGRlcnI9VHJ1ZSkK
LSAgICAgICAgc2VsZi5hZGRMb2dPYnNlcnZlcignc3RkaW8nLCBzZWxmLmxvZ19vYnNlcnZlcikK
LSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5zdGFydChzZWxmKQotCi0gICAgZGVm
IGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYucmVzdWx0cyAhPSBTVUND
RVNTOgotICAgICAgICAgICAgcGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcs
ICcnKQotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiB1J0ZhaWxlZCB0byBmaW5kIGFueSBt
b2RpZmllZCBDaGFuZ2VMb2cgaW4gUGF0Y2gge30nLmZvcm1hdChwYXRjaF9pZCl9Ci0gICAgICAg
IHJldHVybiBzaGVsbC5TaGVsbENvbW1hbmQuZ2V0UmVzdWx0U3VtbWFyeShzZWxmKQotCi0gICAg
ZGVmIGV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpOgotICAgICAgICByYyA9IHNoZWxsLlNoZWxs
Q29tbWFuZC5ldmFsdWF0ZUNvbW1hbmQoc2VsZiwgY21kKQotICAgICAgICBsb2dfdGV4dCA9IHNl
bGYubG9nX29ic2VydmVyLmdldFN0ZG91dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJy
KCkKLSAgICAgICAgbW9kaWZpZWRfY2hhbmdlbG9ncyA9IHNlbGYuZXh0cmFjdF9jaGFuZ2Vsb2dz
KGxvZ190ZXh0LCBzZWxmLl9zdGF0dXNfcmVnZXhwKCdNQScpKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vsb2dzJywgbW9kaWZpZWRfY2hhbmdlbG9ncykKLSAgICAg
ICAgaWYgcmMgPT0gRkFJTFVSRSBvciBub3QgbW9kaWZpZWRfY2hhbmdlbG9nczoKLSAgICAgICAg
ICAgIHBhdGNoX2lkID0gc2VsZi5nZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnJykKLSAgICAgICAg
ICAgIG1lc3NhZ2UgPSAnVW5hYmxlIHRvIGZpbmQgYW55IG1vZGlmaWVkIENoYW5nZUxvZyBpbiBQ
YXRjaCB7fScuZm9ybWF0KHBhdGNoX2lkKQotICAgICAgICAgICAgaWYgc2VsZi5nZXRQcm9wZXJ0
eSgnYnVpbGRlcm5hbWUnLCAnJykubG93ZXIoKSA9PSAnY29tbWl0LXF1ZXVlJzoKLSAgICAgICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBtZXNzYWdl
LnJlcGxhY2UoJ1BhdGNoJywgJ0F0dGFjaG1lbnQnKSkKLSAgICAgICAgICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScsIG1lc3NhZ2UpCi0gICAgICAgICAgICAg
ICAgc2VsZi5idWlsZC5hZGRTdGVwc0FmdGVyQ3VycmVudFN0ZXAoW0NvbW1lbnRPbkJ1ZygpLCBT
ZXRDb21taXRRdWV1ZU1pbnVzRmxhZ09uUGF0Y2goKV0pCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHNlbGYuYnVpbGQuYnVpbGRGaW5pc2hlZChbbWVzc2FnZV0sIEZBSUxVUkUp
Ci0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIGlzX3BhdGhfdG9fY2hhbmdlbG9nKHNlbGYs
IHBhdGgpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5iYXNlbmFtZShwYXRoKSA9PSAnQ2hhbmdl
TG9nJwotCi0gICAgZGVmIF9zdGF0dXNfcmVnZXhwKHNlbGYsIGV4cGVjdGVkX3R5cGVzKToKLSAg
ICAgICAgcmV0dXJuICdeKD9QPHN0YXR1cz5be31dKVx0KD9QPGZpbGVuYW1lPi4rKSQnLmZvcm1h
dChleHBlY3RlZF90eXBlcykKLQotICAgIGRlZiBleHRyYWN0X2NoYW5nZWxvZ3Moc2VsZiwgb3V0
cHV0LCBzdGF0dXNfcmVnZXhwKToKLSAgICAgICAgZmlsZW5hbWVzID0gW10KLSAgICAgICAgZm9y
IGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgIG1hdGNoID0gcmUuc2Vh
cmNoKHN0YXR1c19yZWdleHAsIGxpbmUpCi0gICAgICAgICAgICBpZiBub3QgbWF0Y2g6Ci0gICAg
ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGZpbGVuYW1lID0gbWF0Y2guZ3JvdXAo
J2ZpbGVuYW1lJykKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfcGF0aF90b19jaGFuZ2Vsb2coZmls
ZW5hbWUpOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lcy5hcHBlbmQoZmlsZW5hbWUpCi0gICAg
ICAgIHJldHVybiBmaWxlbmFtZXMKLQotCi1jbGFzcyBDcmVhdGVMb2NhbEdJVENvbW1pdChzaGVs
bC5TaGVsbENvbW1hbmQpOgotICAgIG5hbWUgPSAnY3JlYXRlLWxvY2FsLWdpdC1jb21taXQnCi0g
ICAgZGVzY3JpcHRpb25Eb25lID0gWydDcmVhdGVkIGxvY2FsIGdpdCBjb21taXQnXQotICAgIGhh
bHRPbkZhaWx1cmUgPSBGYWxzZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToK
LSAgICAgICAgc2hlbGwuU2hlbGxDb21tYW5kLl9faW5pdF9fKHNlbGYsIHRpbWVvdXQ9NSAqIDYw
LCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAg
ICAgICAgc2VsZi5mYWlsdXJlX21lc3NhZ2UgPSBOb25lCi0gICAgICAgIG1vZGlmaWVkX2NoYW5n
ZWxvZ3MgPSBzZWxmLmdldFByb3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vsb2dzJykKLSAgICAgICAg
cGF0Y2hfaWQgPSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAgICBpZiBu
b3QgbW9kaWZpZWRfY2hhbmdlbG9nczoKLSAgICAgICAgICAgIHNlbGYuZmFpbHVyZV9tZXNzYWdl
ID0gdSdObyBtb2RpZmllZCBDaGFuZ2VMb2cgZmlsZSBmb3VuZCBmb3IgUGF0Y2gge30nLmZvcm1h
dChwYXRjaF9pZCkKLSAgICAgICAgICAgIHNlbGYuZmluaXNoZWQoRkFJTFVSRSkKLSAgICAgICAg
ICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgbW9kaWZpZWRfY2hhbmdlbG9ncyA9ICcgJy5qb2lu
KG1vZGlmaWVkX2NoYW5nZWxvZ3MpCi0gICAgICAgIHNlbGYuY29tbWFuZCA9ICdwZXJsIFRvb2xz
L1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IgLS1wcmludC1sb2cge30nLmZvcm1hdChtb2RpZmll
ZF9jaGFuZ2Vsb2dzKQotICAgICAgICBzZWxmLmNvbW1hbmQgKz0gJyB8IGdpdCBjb21taXQgLS1h
bGwgLUYgLScKLSAgICAgICAgcmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5zdGFydChzZWxmKQot
Ci0gICAgZGVmIGdldFJlc3VsdFN1bW1hcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZmFpbHVy
ZV9tZXNzYWdlOgotICAgICAgICAgICAgcmV0dXJuIHt1J3N0ZXAnOiBzZWxmLmZhaWx1cmVfbWVz
c2FnZX0KLSAgICAgICAgaWYgc2VsZi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICBy
ZXR1cm4ge3Unc3RlcCc6IHUnRmFpbGVkIHRvIGNyZWF0ZSBnaXQgY29tbWl0J30KLSAgICAgICAg
cmV0dXJuIHNoZWxsLlNoZWxsQ29tbWFuZC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYpCi0KLSAgICBk
ZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuU2hlbGxD
b21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAgIGlmIHJjID09IEZBSUxV
UkU6Ci0gICAgICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywg
JycpCi0gICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5mYWlsdXJlX21lc3NhZ2Ugb3IgJ0ZhaWxl
ZCB0byBjcmVhdGUgZ2l0IGNvbW1pdCBmb3IgUGF0Y2gge30nLmZvcm1hdChwYXRjaF9pZCkKLSAg
ICAgICAgICAgIGlmIHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJycpLmxvd2VyKCkg
PT0gJ2NvbW1pdC1xdWV1ZSc6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVn
emlsbGFfY29tbWVudF90ZXh0JywgbWVzc2FnZS5yZXBsYWNlKCdQYXRjaCcsICdBdHRhY2htZW50
JykpCi0gICAgICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1h
cnknLCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1
cnJlbnRTdGVwKFtDb21tZW50T25CdWcoKSwgU2V0Q29tbWl0UXVldWVNaW51c0ZsYWdPblBhdGNo
KCldKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmJ1aWxkLmJ1aWxk
RmluaXNoZWQoW21lc3NhZ2VdLCBGQUlMVVJFKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFz
cyBQdXNoQ29tbWl0VG9XZWJLaXRSZXBvKHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgbmFtZSA9
ICdwdXNoLWNvbW1pdC10by13ZWJraXQtcmVwbycKLSAgICBkZXNjcmlwdGlvbkRvbmUgPSBbJ1B1
c2hlZCBjb21taXQgdG8gV2ViS2l0IHJlcG9zaXRvcnknXQotICAgIGNvbW1hbmQgPSBbJ2dpdCcs
ICdzdm4nLCAnZGNvbW1pdCcsICctLXJtZGlyJ10KLSAgICBjb21taXRfc3VjY2Vzc19yZWdleHAg
PSAnXkNvbW1pdHRlZCByKD9QPHN2bl9yZXZpc2lvbj5cZCspJCcKLSAgICBoYWx0T25GYWlsdXJl
ID0gRmFsc2UKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgIHNo
ZWxsLlNoZWxsQ29tbWFuZC5fX2luaXRfXyhzZWxmLCB0aW1lb3V0PTUgKiA2MCwgbG9nRW52aXJv
bj1GYWxzZSwgKiprd2FyZ3MpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYu
bG9nX29ic2VydmVyID0gbG9nb2JzZXJ2ZXIuQnVmZmVyTG9nT2JzZXJ2ZXIod2FudFN0ZGVycj1U
cnVlKQotICAgICAgICBzZWxmLmFkZExvZ09ic2VydmVyKCdzdGRpbycsIHNlbGYubG9nX29ic2Vy
dmVyKQotICAgICAgICByZXR1cm4gc2hlbGwuU2hlbGxDb21tYW5kLnN0YXJ0KHNlbGYpCi0KLSAg
ICBkZWYgZXZhbHVhdGVDb21tYW5kKHNlbGYsIGNtZCk6Ci0gICAgICAgIHJjID0gc2hlbGwuU2hl
bGxDb21tYW5kLmV2YWx1YXRlQ29tbWFuZChzZWxmLCBjbWQpCi0gICAgICAgIGlmIHJjID09IFNV
Q0NFU1M6Ci0gICAgICAgICAgICBsb2dfdGV4dCA9IHNlbGYubG9nX29ic2VydmVyLmdldFN0ZG91
dCgpICsgc2VsZi5sb2dfb2JzZXJ2ZXIuZ2V0U3RkZXJyKCkKLSAgICAgICAgICAgIHN2bl9yZXZp
c2lvbiA9IHNlbGYuc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQobG9nX3RleHQpCi0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWd6aWxsYV9jb21tZW50X3RleHQnLCBzZWxmLmNv
bW1lbnRfdGV4dF9mb3JfYnVnKHN2bl9yZXZpc2lvbikpCi0gICAgICAgICAgICBjb21taXRfc3Vt
bWFyeSA9ICdDb21taXR0ZWQgcnt9Jy5mb3JtYXQoc3ZuX3JldmlzaW9uKQotICAgICAgICAgICAg
c2VsZi5kZXNjcmlwdGlvbkRvbmUgPSBjb21taXRfc3VtbWFyeQotICAgICAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScsICdDb21taXR0ZWQgcnt9Jy5mb3JtYXQoc3ZuX3Jl
dmlzaW9uKSkKLSAgICAgICAgICAgIHNlbGYuYnVpbGQuYWRkU3RlcHNBZnRlckN1cnJlbnRTdGVw
KFtDb21tZW50T25CdWcoKSwgUmVtb3ZlRmxhZ3NPblBhdGNoKCksIENsb3NlQnVnKCldKQotICAg
ICAgICAgICAgc2VsZi5hZGRVUkwoJ3J7fScuZm9ybWF0KHN2bl9yZXZpc2lvbiksIHNlbGYudXJs
X2Zvcl9yZXZpc2lvbihzdm5fcmV2aXNpb24pKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0Jywgc2VsZi5jb21tZW50X3Rl
eHRfZm9yX2J1ZygpKQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNo
X3N1bW1hcnknLCAnRmFpbGVkIHRvIGNvbW1pdCB0byBXZWJLaXQgcmVwb3NpdG9yeScpCi0gICAg
ICAgICAgICBzZWxmLmJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcChbQ29tbWVudE9uQnVn
KCksIFNldENvbW1pdFF1ZXVlTWludXNGbGFnT25QYXRjaCgpXSkKLSAgICAgICAgcmV0dXJuIHJj
Ci0KLSAgICBkZWYgdXJsX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6Ci0gICAgICAgIHJl
dHVybiAnaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0L3t9Jy5mb3JtYXQocmV2aXNp
b24pCi0KLSAgICBkZWYgY29tbWVudF90ZXh0X2Zvcl9idWcoc2VsZiwgc3ZuX3JldmlzaW9uPU5v
bmUpOgotICAgICAgICBwYXRjaF9pZCA9IHNlbGYuZ2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJycp
Ci0gICAgICAgIGlmIG5vdCBzdm5fcmV2aXNpb246Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbW1p
dC1xdWV1ZSBmYWlsZWQgdG8gY29tbWl0IGF0dGFjaG1lbnQge30gdG8gV2ViS2l0IHJlcG9zaXRv
cnkuJy5mb3JtYXQocGF0Y2hfaWQpCi0gICAgICAgIGNvbW1lbnQgPSAnQ29tbWl0dGVkIHJ7fTog
PHt9PicuZm9ybWF0KHN2bl9yZXZpc2lvbiwgc2VsZi51cmxfZm9yX3JldmlzaW9uKHN2bl9yZXZp
c2lvbikpCi0gICAgICAgIGNvbW1lbnQgKz0gJ1xuXG5BbGwgcmV2aWV3ZWQgcGF0Y2hlcyBoYXZl
IGJlZW4gbGFuZGVkLiBDbG9zaW5nIGJ1ZyBhbmQgY2xlYXJpbmcgZmxhZ3Mgb24gYXR0YWNobWVu
dCB7fS4nLmZvcm1hdChwYXRjaF9pZCkKLSAgICAgICAgcmV0dXJuIGNvbW1lbnQKLQotICAgIGRl
ZiBzdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChzZWxmLCBjb21taXRfdGV4dCk6Ci0gICAg
ICAgIG1hdGNoID0gcmUuc2VhcmNoKHNlbGYuY29tbWl0X3N1Y2Nlc3NfcmVnZXhwLCBjb21taXRf
dGV4dCwgcmUuTVVMVElMSU5FKQotICAgICAgICByZXR1cm4gbWF0Y2guZ3JvdXAoJ3N2bl9yZXZp
c2lvbicpCi0KLSAgICBkZWYgZ2V0UmVzdWx0U3VtbWFyeShzZWxmKToKLSAgICAgICAgaWYgc2Vs
Zi5yZXN1bHRzICE9IFNVQ0NFU1M6Ci0gICAgICAgICAgICByZXR1cm4ge3Unc3RlcCc6IHUnRmFp
bGVkIHRvIHB1c2ggY29tbWl0IHRvIFdlYmtpdCByZXBvc2l0b3J5J30KLSAgICAgICAgcmV0dXJu
IHNoZWxsLlNoZWxsQ29tbWFuZC5nZXRSZXN1bHRTdW1tYXJ5KHNlbGYpCi0KLQotY2xhc3MgQ2hl
Y2tQYXRjaFN0YXR1c09uRVdTUXVldWVzKGJ1aWxkc3RlcC5CdWlsZFN0ZXAsIEJ1Z3ppbGxhTWl4
aW4pOgotICAgIG5hbWUgPSAnY2hlY2stc3RhdHVzLW9uLW90aGVyLWV3c2VzJwotICAgIGRlc2Ny
aXB0aW9uRG9uZSA9IFsnQ2hlY2tlZCBwYXRjaCBzdGF0dXMgb24gb3RoZXIgcXVldWVzJ10KLQot
ICAgIGRlZiBnZXRfcGF0Y2hfc3RhdHVzKHNlbGYsIHBhdGNoX2lkLCBxdWV1ZSk6Ci0gICAgICAg
IHVybCA9ICd7fXN0YXR1cy97fScuZm9ybWF0KEVXU19VUkwsIHBhdGNoX2lkKQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXNwb25zZSA9IHJlcXVlc3RzLmdldCh1cmwpCi0gICAgICAgICAg
ICBpZiByZXNwb25zZS5zdGF0dXNfY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
YWRkVG9Mb2coJ3N0ZGlvJywgJ0ZhaWxlZCB0byBhY2Nlc3Mge30gd2l0aCBzdGF0dXMgY29kZTog
e31cbicuZm9ybWF0KHVybCwgcmVzcG9uc2Uuc3RhdHVzX2NvZGUpKQotICAgICAgICAgICAgICAg
IHJldHVybiAtMQotICAgICAgICAgICAgcXVldWVfZGF0YSA9IHJlc3BvbnNlLmpzb24oKS5nZXQo
cXVldWUpCi0gICAgICAgICAgICBpZiBub3QgcXVldWVfZGF0YToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gLTEKLSAgICAgICAgICAgIHJldHVybiBxdWV1ZV9kYXRhLmdldCgnc3RhdGUnKQotICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBzZWxmLl9hZGRUb0xvZygn
c3RkaW8nLCAnRmFpbGVkIHRvIGFjY2VzcyB7fVxuJy5mb3JtYXQodXJsKSkKLSAgICAgICAgICAg
IHJldHVybiAtMQotCi0gICAgQGRlZmVyLmlubGluZUNhbGxiYWNrcwotICAgIGRlZiBfYWRkVG9M
b2coc2VsZiwgbG9nTmFtZSwgbWVzc2FnZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxv
ZyA9IHNlbGYuZ2V0TG9nKGxvZ05hbWUpCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAg
ICAgICAgIGxvZyA9IHlpZWxkIHNlbGYuYWRkTG9nKGxvZ05hbWUpCi0gICAgICAgIGxvZy5hZGRT
dGRvdXQobWVzc2FnZSkKLQotICAgIGRlZiBzdGFydChzZWxmKToKLSAgICAgICAgcGF0Y2hfaWQg
PSBzZWxmLmdldFByb3BlcnR5KCdwYXRjaF9pZCcsICcnKQotICAgICAgICBwYXRjaF9zdGF0dXNf
b25fbWFjX3drMiA9IHNlbGYuZ2V0X3BhdGNoX3N0YXR1cyhwYXRjaF9pZCwgJ21hYy13azInKQot
ICAgICAgICBpZiBwYXRjaF9zdGF0dXNfb25fbWFjX3drMiA9PSBTVUNDRVNTOgotICAgICAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgncGFzc2VkX21hY193azInLCBUcnVlKQotICAgICAgICBzZWxm
LmZpbmlzaGVkKFNVQ0NFU1MpCi0gICAgICAgIHJldHVybiBOb25lCkluZGV4OiBUb29scy9CdWls
ZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBzX3VuaXR0ZXN0LnB5CShyZXZp
c2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvc3RlcHNf
dW5pdHRlc3QucHkJKG5vbmV4aXN0ZW50KQpAQCAtMSwzNjkwICswLDAgQEAKLSMgQ29weXJpZ2h0
IChDKSAyMDE4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0j
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECi0jIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKLSMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAotIyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgotIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgotIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAotIyBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0
IGpzb24KLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCi1pbXBvcnQg
c3lzCi1pbXBvcnQgdGVtcGZpbGUKLQotZnJvbSBidWlsZGJvdC5wcm9jZXNzIGltcG9ydCByZW1v
dGV0cmFuc2ZlcgotZnJvbSBidWlsZGJvdC5wcm9jZXNzLnJlc3VsdHMgaW1wb3J0IFJlc3VsdHMs
IFNVQ0NFU1MsIEZBSUxVUkUsIFdBUk5JTkdTLCBTS0lQUEVELCBFWENFUFRJT04sIFJFVFJZCi1m
cm9tIGJ1aWxkYm90LnRlc3QuZmFrZS5yZW1vdGVjb21tYW5kIGltcG9ydCBFeHBlY3QsIEV4cGVj
dFJlbW90ZVJlZiwgRXhwZWN0U2hlbGwKLWZyb20gYnVpbGRib3QudGVzdC51dGlsLnN0ZXBzIGlt
cG9ydCBCdWlsZFN0ZXBNaXhpbgotZnJvbSBidWlsZGJvdC51dGlsIGltcG9ydCBpZGVudGlmaWVy
cyBhcyBidWlsZGJvdF9pZGVudGlmaWVycwotZnJvbSBtb2NrIGltcG9ydCBjYWxsCi1mcm9tIHR3
aXN0ZWQuaW50ZXJuZXQgaW1wb3J0IGVycm9yLCByZWFjdG9yCi1mcm9tIHR3aXN0ZWQucHl0aG9u
IGltcG9ydCBmYWlsdXJlLCBsb2cKLWZyb20gdHdpc3RlZC50cmlhbCBpbXBvcnQgdW5pdHRlc3QK
LQotZnJvbSBzdGVwcyBpbXBvcnQgKEFuYWx5emVBUElUZXN0c1Jlc3VsdHMsIEFuYWx5emVDb21w
aWxlV2ViS2l0UmVzdWx0cywgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cywKLSAgICAgICAgICAgICAg
ICAgICBBbmFseXplTGF5b3V0VGVzdHNSZXN1bHRzLCBBcHBseVBhdGNoLCBBcHBseVdhdGNoTGlz
dCwgQXJjaGl2ZUJ1aWx0UHJvZHVjdCwgQXJjaGl2ZVRlc3RSZXN1bHRzLAotICAgICAgICAgICAg
ICAgICAgIENoZWNrT3V0U291cmNlLCBDaGVja091dFNwZWNpZmljUmV2aXNpb24sIENoZWNrUGF0
Y2hSZWxldmFuY2UsIENoZWNrUGF0Y2hTdGF0dXNPbkVXU1F1ZXVlcywgQ2hlY2tTdHlsZSwKLSAg
ICAgICAgICAgICAgICAgICBDbGVhbkJ1aWxkLCBDbGVhblVwR2l0SW5kZXhMb2NrLCBDbGVhbldv
cmtpbmdEaXJlY3RvcnksIENvbXBpbGVKU0MsIENvbXBpbGVKU0NXaXRob3V0UGF0Y2gsIENvbXBp
bGVXZWJLaXQsCi0gICAgICAgICAgICAgICAgICAgQ29tcGlsZVdlYktpdFdpdGhvdXRQYXRjaCwg
Q29uZmlndXJlQnVpbGQsIENyZWF0ZUxvY2FsR0lUQ29tbWl0LAotICAgICAgICAgICAgICAgICAg
IERvd25sb2FkQnVpbHRQcm9kdWN0LCBEb3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIsIEV4
dHJhY3RCdWlsdFByb2R1Y3QsIEV4dHJhY3RUZXN0UmVzdWx0cywKLSAgICAgICAgICAgICAgICAg
ICBGaW5kTW9kaWZpZWRDaGFuZ2VMb2dzLCBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzLCBJbnN0YWxs
V3BlRGVwZW5kZW5jaWVzLCBLaWxsT2xkUHJvY2Vzc2VzLAotICAgICAgICAgICAgICAgICAgIFBy
aW50Q29uZmlndXJhdGlvbiwgUHVzaENvbW1pdFRvV2ViS2l0UmVwbywgUmVSdW5BUElUZXN0cywg
UmVSdW5KYXZhU2NyaXB0Q29yZVRlc3RzLCBSZVJ1bldlYktpdFBlcmxUZXN0cywKLSAgICAgICAg
ICAgICAgICAgICBSZVJ1bldlYktpdFRlc3RzLCBSdW5BUElUZXN0cywgUnVuQVBJVGVzdHNXaXRo
b3V0UGF0Y2gsIFJ1bkJpbmRpbmdzVGVzdHMsIFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzLAot
ICAgICAgICAgICAgICAgICAgIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcsIFJ1bkVXU1VuaXRU
ZXN0cywgUnVuUmVzdWx0c2RicHlUZXN0cywgUnVuSmF2YVNjcmlwdENvcmVUZXN0cywKLSAgICAg
ICAgICAgICAgICAgICBSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCwgUnVuV2ViS2l0MVRlc3RzLCBS
dW5XZWJLaXRQZXJsVGVzdHMsIFJ1bldlYktpdFB5UHl0aG9uMlRlc3RzLAotICAgICAgICAgICAg
ICAgICAgIFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzLCBSdW5XZWJLaXRUZXN0cywgUnVuV2ViS2l0
VGVzdHNXaXRob3V0UGF0Y2gsIFRlc3RXaXRoRmFpbHVyZUNvdW50LAotICAgICAgICAgICAgICAg
ICAgIFRyaWdnZXIsIFRyYW5zZmVyVG9TMywgVW5BcHBseVBhdGNoSWZSZXF1aXJlZCwgVXBkYXRl
V29ya2luZ0RpcmVjdG9yeSwgVXBsb2FkQnVpbHRQcm9kdWN0LAotICAgICAgICAgICAgICAgICAg
IFVwbG9hZFRlc3RSZXN1bHRzLCBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIsIFZhbGlkYXRl
UGF0Y2gpCi0KLSMgV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9naXRodWIuY29tL2J1aWxkYm90L2J1
aWxkYm90L2lzc3Vlcy80NjY5Ci1mcm9tIGJ1aWxkYm90LnRlc3QuZmFrZS5mYWtlYnVpbGQgaW1w
b3J0IEZha2VCdWlsZAotRmFrZUJ1aWxkLmFkZFN0ZXBzQWZ0ZXJDdXJyZW50U3RlcCA9IGxhbWJk
YSBGYWtlQnVpbGQsIHN0ZXBfZmFjdG9yaWVzOiBOb25lCi0KLQotZGVmIG1vY2tfc3RlcChzdGVw
LCBsb2dzPScnLCByZXN1bHRzPVNVQ0NFU1MsIHN0b3BwZWQ9RmFsc2UsIHByb3BlcnRpZXM9Tm9u
ZSk6Ci0gICAgc3RlcC5sb2dzID0gbG9ncwotICAgIHN0ZXAucmVzdWx0cyA9IHJlc3VsdHMKLSAg
ICBzdGVwLnN0b3BwZWQgPSBzdG9wcGVkCi0gICAgcmV0dXJuIHN0ZXAKLQotCi1jbGFzcyBFeHBl
Y3RNYXN0ZXJTaGVsbENvbW1hbmQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29t
bWFuZCwgd29ya2Rpcj1Ob25lLCBlbnY9Tm9uZSwgdXNlUFRZPTApOgotICAgICAgICBzZWxmLmFy
Z3MgPSBjb21tYW5kCi0gICAgICAgIHNlbGYudXNlUFRZID0gdXNlUFRZCi0gICAgICAgIHNlbGYu
cmMgPSBOb25lCi0gICAgICAgIHNlbGYucGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5sb2dzID0g
W10KLQotICAgICAgICBpZiBlbnYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmVudiA9
IGVudgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5lbnYgPSBvcy5lbnZpcm9uCi0g
ICAgICAgIGlmIHdvcmtkaXI6Ci0gICAgICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRoLmpvaW4o
b3MuZ2V0Y3dkKCksIHdvcmtkaXIpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgbG9nKHNl
bGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgcmV0dXJuICgnbG9nJywgbmFtZSwgdmFsdWUpCi0K
LSAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uob3Ro
ZXIsIGludCk6Ci0gICAgICAgICAgICBzZWxmLnJjID0gb3RoZXIKLSAgICAgICAgZWxpZiBpc2lu
c3RhbmNlKG90aGVyLCB0dXBsZSkgYW5kIG90aGVyWzBdID09ICdsb2cnOgotICAgICAgICAgICAg
c2VsZi5sb2dzLmFwcGVuZCgob3RoZXJbMV0sIG90aGVyWzJdKSkKLSAgICAgICAgcmV0dXJuIHNl
bGYKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICdFeHBlY3RNYXN0
ZXJTaGVsbENvbW1hbmQoezB9KScuZm9ybWF0KHJlcHIoc2VsZi5hcmdzKSkKLQotCi1jbGFzcyBC
dWlsZFN0ZXBNaXhpbkFkZGl0aW9ucyhCdWlsZFN0ZXBNaXhpbik6Ci0gICAgZGVmIHNldFVwQnVp
bGRTdGVwKHNlbGYpOgotICAgICAgICBzZWxmLnBhdGNoKHJlYWN0b3IsICdzcGF3blByb2Nlc3Mn
LCBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBzZWxmLl9jaGVja1NwYXduUHJvY2VzcygqYXJncywg
Kiprd2FyZ3MpKQotICAgICAgICBzZWxmLl9leHBlY3RlZF9sb2NhbF9jb21tYW5kcyA9IFtdCi0K
LSAgICAgICAgc2VsZi5fdGVtcF9kaXJlY3RvcnkgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICAg
ICAgb3MuY2hkaXIoc2VsZi5fdGVtcF9kaXJlY3RvcnkpCi0gICAgICAgIHNlbGYuX2V4cGVjdGVk
X3VwbG9hZGVkX2ZpbGVzID0gW10KLQotICAgICAgICBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0
aW9ucywgc2VsZikuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duQnVpbGRTdGVw
KHNlbGYpOgotICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuX3RlbXBfZGlyZWN0b3J5KQotICAg
ICAgICBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikudGVhckRvd25CdWlsZFN0
ZXAoKQotCi0gICAgZGVmIGZha2VCdWlsZEZpbmlzaGVkKHNlbGYsIHRleHQsIHJlc3VsdHMpOgot
ICAgICAgICBzZWxmLmJ1aWxkLnRleHQgPSB0ZXh0Ci0gICAgICAgIHNlbGYuYnVpbGQucmVzdWx0
cyA9IHJlc3VsdHMKLQotICAgIGRlZiBzZXR1cFN0ZXAoc2VsZiwgc3RlcCwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgc2VsZi5wcmV2aW91c19zdGVwcyA9IGt3YXJncy5nZXQoJ3ByZXZpb3Vz
X3N0ZXBzJykgb3IgW10KLSAgICAgICAgaWYgc2VsZi5wcmV2aW91c19zdGVwczoKLSAgICAgICAg
ICAgIGRlbCBrd2FyZ3NbJ3ByZXZpb3VzX3N0ZXBzJ10KLQotICAgICAgICBzdXBlcihCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikuc2V0dXBTdGVwKHN0ZXAsICphcmdzLCAqKmt3YXJncykK
LSAgICAgICAgc2VsZi5idWlsZC50ZXJtaW5hdGUgPSBGYWxzZQotICAgICAgICBzZWxmLmJ1aWxk
LnN0b3BwZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmJ1aWxkLmV4ZWN1dGVkU3RlcHMgPSBzZWxm
LmV4ZWN1dGVkU3RlcHMKLSAgICAgICAgc2VsZi5idWlsZC5idWlsZEZpbmlzaGVkID0gc2VsZi5m
YWtlQnVpbGRGaW5pc2hlZAotICAgICAgICBzZWxmLl9leHBlY3RlZF9hZGRlZF91cmxzID0gW10K
LSAgICAgICAgc2VsZi5fZXhwZWN0ZWRfc291cmNlcyA9IE5vbmUKLQotICAgIEBwcm9wZXJ0eQot
ICAgIGRlZiBleGVjdXRlZFN0ZXBzKHNlbGYpOgotICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJk
YSBzdGVwOiBub3Qgc3RlcC5zdG9wcGVkLCBzZWxmLnByZXZpb3VzX3N0ZXBzKQotCi0gICAgZGVm
IHNldFByb3BlcnR5KHNlbGYsIG5hbWUsIHZhbHVlLCBzb3VyY2U9J1Vua25vd24nKToKLSAgICAg
ICAgc2VsZi5wcm9wZXJ0aWVzLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlLCBzb3VyY2UpCi0KLSAg
ICBkZWYgZ2V0UHJvcGVydHkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLnByb3Bl
cnRpZXMuZ2V0UHJvcGVydHkobmFtZSkKLQotICAgIGRlZiBleHBlY3RBZGRlZFVSTHMoc2VsZiwg
YWRkZWRfdXJscyk6Ci0gICAgICAgIHNlbGYuX2V4cGVjdGVkX2FkZGVkX3VybHMgPSBhZGRlZF91
cmxzCi0KLSAgICBkZWYgZXhwZWN0VXBsb2FkZWRGaWxlKHNlbGYsIHBhdGgpOgotICAgICAgICBz
ZWxmLl9leHBlY3RlZF91cGxvYWRlZF9maWxlcy5hcHBlbmQocGF0aCkKLQotICAgIGRlZiBleHBl
Y3RMb2NhbENvbW1hbmRzKHNlbGYsICpleHBlY3RlZF9jb21tYW5kcyk6Ci0gICAgICAgIHNlbGYu
X2V4cGVjdGVkX2xvY2FsX2NvbW1hbmRzLmV4dGVuZChleHBlY3RlZF9jb21tYW5kcykKLQotICAg
IGRlZiBleHBlY3RSZW1vdGVDb21tYW5kcyhzZWxmLCAqZXhwZWN0ZWRfY29tbWFuZHMpOgotICAg
ICAgICBzZWxmLmV4cGVjdENvbW1hbmRzKCpleHBlY3RlZF9jb21tYW5kcykKLQotICAgIGRlZiBl
eHBlY3RTb3VyY2VzKHNlbGYsIGV4cGVjdGVkX3NvdXJjZXMpOgotICAgICAgICBzZWxmLl9leHBl
Y3RlZF9zb3VyY2VzID0gZXhwZWN0ZWRfc291cmNlcwotCi0gICAgZGVmIF9jaGVja1NwYXduUHJv
Y2VzcyhzZWxmLCBwcm9jZXNzUHJvdG9jb2wsIGV4ZWN1dGFibGUsIGFyZ3MsIGVudiwgcGF0aCwg
dXNlUFRZLCAqKmt3YXJncyk6Ci0gICAgICAgIGdvdCA9IChleGVjdXRhYmxlLCBhcmdzLCBlbnYs
IHBhdGgsIHVzZVBUWSkKLSAgICAgICAgaWYgbm90IHNlbGYuX2V4cGVjdGVkX2xvY2FsX2NvbW1h
bmRzOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdnb3QgbG9jYWwgY29tbWFuZCB7MH0gd2hlbiBu
byBmdXJ0aGVyIGNvbW1hbmRzIHdlcmUgZXhwZWN0ZWQnLmZvcm1hdChnb3QpKQotICAgICAgICBs
b2NhbF9jb21tYW5kID0gc2VsZi5fZXhwZWN0ZWRfbG9jYWxfY29tbWFuZHMucG9wKDApCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LCAobG9jYWxfY29tbWFu
ZC5hcmdzWzBdLCBsb2NhbF9jb21tYW5kLmFyZ3MsIGxvY2FsX2NvbW1hbmQuZW52LCBsb2NhbF9j
b21tYW5kLnBhdGgsIGxvY2FsX2NvbW1hbmQudXNlUFRZKSkKLSAgICAgICAgZXhjZXB0IEFzc2Vy
dGlvbkVycm9yOgotICAgICAgICAgICAgbG9nLmVycigpCi0gICAgICAgICAgICByYWlzZQotICAg
ICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbG9jYWxfY29tbWFuZC5sb2dzOgotICAgICAgICAgICAg
aWYgbmFtZSA9PSAnc3Rkb3V0JzoKLSAgICAgICAgICAgICAgICBwcm9jZXNzUHJvdG9jb2wub3V0
UmVjZWl2ZWQodmFsdWUpCi0gICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3N0ZGVycic6Ci0gICAg
ICAgICAgICAgICAgcHJvY2Vzc1Byb3RvY29sLmVyclJlY2VpdmVkKHZhbHVlKQotICAgICAgICBp
ZiBsb2NhbF9jb21tYW5kLnJjICE9IDA6Ci0gICAgICAgICAgICB2YWx1ZSA9IGVycm9yLlByb2Nl
c3NUZXJtaW5hdGVkKGV4aXRDb2RlPWxvY2FsX2NvbW1hbmQucmMpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICB2YWx1ZSA9IGVycm9yLlByb2Nlc3NEb25lKE5vbmUpCi0gICAgICAgIHByb2Nl
c3NQcm90b2NvbC5wcm9jZXNzRW5kZWQoZmFpbHVyZS5GYWlsdXJlKHZhbHVlKSkKLQotICAgIGRl
ZiBfYWRkZWRfZmlsZXMoc2VsZik6Ci0gICAgICAgIHJlc3VsdHMgPSBbXQotICAgICAgICBmb3Ig
ZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53YWxrKHNlbGYuX3RlbXBfZGlyZWN0
b3J5KToKLSAgICAgICAgICAgIHJlbGF0aXZlX3Jvb3RfcGF0aCA9IG9zLnBhdGgucmVscGF0aChk
aXJwYXRoLCBzdGFydD1zZWxmLl90ZW1wX2RpcmVjdG9yeSkKLSAgICAgICAgICAgIGlmIHJlbGF0
aXZlX3Jvb3RfcGF0aCA9PSAnLic6Ci0gICAgICAgICAgICAgICAgcmVsYXRpdmVfcm9vdF9wYXRo
ID0gJycKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVuYW1lczoKLSAgICAgICAgICAgICAg
ICByZXN1bHRzLmFwcGVuZChvcy5wYXRoLmpvaW4ocmVsYXRpdmVfcm9vdF9wYXRoLCBuYW1lKSkK
LSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiBydW5TdGVwKHNlbGYpOgotICAgICAg
ICBkZWYgY2hlY2socmVzdWx0KToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5f
ZXhwZWN0ZWRfbG9jYWxfY29tbWFuZHMsIFtdLCAnYXNzZXJ0IGFsbCBleHBlY3RlZCBsb2NhbCBj
b21tYW5kcyB3ZXJlIHJ1bicpCi0gICAgICAgICAgICBzZWxmLmV4cGVjdEFkZGVkVVJMcyhzZWxm
Ll9leHBlY3RlZF9hZGRlZF91cmxzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
Ll9hZGRlZF9maWxlcygpLCBzZWxmLl9leHBlY3RlZF91cGxvYWRlZF9maWxlcykKLSAgICAgICAg
ICAgIGlmIHNlbGYuX2V4cGVjdGVkX3NvdXJjZXMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgIyBDb252ZXJ0IHRvIGRpY3Rpb25hcmllcyBiZWNhdXNlIGFzc2VydEVxdWFsKCkgb25seSBr
bm93cyBob3cgdG8gZGlmZiBQeXRob24gYnVpbHQtaW4gdHlwZXMuCi0gICAgICAgICAgICAgICAg
YWN0dWFsX3NvdXJjZXMgPSBzb3J0ZWQoW3NvdXJjZS5hc0RpY3QoKSBmb3Igc291cmNlIGluIHNl
bGYuYnVpbGQuc291cmNlc10sIGtleT1vcGVyYXRvci5pdGVtZ2V0dGVyKCdjb2RlYmFzZScpKQot
ICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NvdXJjZXMgPSBzb3J0ZWQoW3NvdXJjZS5hc0RpY3Qo
KSBmb3Igc291cmNlIGluIHNlbGYuX2V4cGVjdGVkX3NvdXJjZXNdLCBrZXk9b3BlcmF0b3IuaXRl
bWdldHRlcignY29kZWJhc2UnKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFj
dHVhbF9zb3VyY2VzLCBleHBlY3RlZF9zb3VyY2VzKQotICAgICAgICBkZWZlcnJlZF9yZXN1bHQg
PSBzdXBlcihCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgc2VsZikucnVuU3RlcCgpCi0gICAgICAg
IGRlZmVycmVkX3Jlc3VsdC5hZGRDYWxsYmFjayhjaGVjaykKLSAgICAgICAgcmV0dXJuIGRlZmVy
cmVkX3Jlc3VsdAotCi0KLWRlZiB1cGxvYWRGaWxlV2l0aENvbnRlbnRzT2ZTdHJpbmcoc3RyaW5n
LCB0aW1lc3RhbXA9Tm9uZSk6Ci0gICAgZGVmIGJlaGF2aW9yKGNvbW1hbmQpOgotICAgICAgICB3
cml0ZXIgPSBjb21tYW5kLmFyZ3NbJ3dyaXRlciddCi0gICAgICAgIHdyaXRlci5yZW1vdGVfd3Jp
dGUoc3RyaW5nICsgJ1xuJykKLSAgICAgICAgd3JpdGVyLnJlbW90ZV9jbG9zZSgpCi0gICAgICAg
IGlmIHRpbWVzdGFtcDoKLSAgICAgICAgICAgIHdyaXRlci5yZW1vdGVfdXRpbWUodGltZXN0YW1w
KQotICAgIHJldHVybiBiZWhhdmlvcgotCi0KLWNsYXNzIFRlc3RTdGVwTmFtZVNob3VsZEJlVmFs
aWRJZGVudGlmaWVyKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3Rfc3RlcF9uYW1lc19hcmVfdmFsaWQoc2VsZik6Ci0gICAgICAgIGltcG9y
dCBzdGVwcwotICAgICAgICBidWlsZF9zdGVwX2NsYXNzZXMgPSBpbnNwZWN0LmdldG1lbWJlcnMo
c3RlcHMsIGluc3BlY3QuaXNjbGFzcykKLSAgICAgICAgZm9yIGJ1aWxkX3N0ZXAgaW4gYnVpbGRf
c3RlcF9jbGFzc2VzOgotICAgICAgICAgICAgaWYgJ25hbWUnIGluIHZhcnMoYnVpbGRfc3RlcFsx
XSk6Ci0gICAgICAgICAgICAgICAgbmFtZSA9IGJ1aWxkX3N0ZXBbMV0ubmFtZQotICAgICAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoJyAnIGluIG5hbWUsICdzdGVwIG5hbWUgInt9IiBjb250
YWluIHNwYWNlLicuZm9ybWF0KG5hbWUpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShidWlsZGJvdF9pZGVudGlmaWVycy5pZGVudF9yZS5tYXRjaChuYW1lKSwgJ3N0ZXAgbmFtZSAi
e30iIGlzIG5vdCBhIHZhbGlkIGJ1aWxkYm90IGlkZW50aWZpZXIuJy5mb3JtYXQobmFtZSkpCi0K
LQotY2xhc3MgVGVzdENoZWNrU3R5bGUoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3Nh
Z2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRl
ZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzc19pbnRlcm5hbChzZWxmKToKLSAgICAgICAgc2VsZi5z
ZXR1cFN0ZXAoQ2hlY2tTdHlsZSgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd0cnktY29k
ZWJhc2UnLCAnaW50ZXJuYWwnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScs
ICdtYWMnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVn
JykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAn
VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nY2hlY2std2Via2l0LXN0eWxlJykK
LSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX3Vu
a25vd25fdHJ5X2NvZGViYXNlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja1N0
eWxlKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3RyeS1jb2RlYmFzZScsICdmb28nKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAgICBzZWxmLmV4
cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tk
aXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9jaGVjay13
ZWJraXQtc3R5bGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsg
MiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUs
IHN0YXRlX3N0cmluZz0nY2hlY2std2Via2l0LXN0eWxlIChmYWlsdXJlKScpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZXNfd2l0aF9zdHlsZV9p
c3N1ZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENoZWNrU3R5bGUoKSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgndHJ5LWNvZGViYXNlJywgJ2ludGVybmFsJykKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0
eWxlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNo
ZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnRVJST1I6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9G
bG9hdGluZ0NvbnRleHQuY3BwOjM2OiAgQ29kZSBpbnNpZGUgYSBuYW1lc3BhY2Ugc2hvdWxkIG5v
dCBiZSBpbmRlbnRlZC4gIFt3aGl0ZXNwYWNlL2luZGVudF0gWzRdCi1FUlJPUjogU291cmNlL1dl
YkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0Lmg6OTQ6ICBXZWlyZCBudW1iZXIgb2Ygc3Bh
Y2VzIGF0IGxpbmUtc3RhcnQuICBBcmUgeW91IHVzaW5nIGEgNC1zcGFjZSBpbmRlbnQ/ICBbd2hp
dGVzcGFjZS9pbmRlbnRdIFszXQotRVJST1I6IFNvdXJjZS9XZWJDb3JlL2xheW91dC9MYXlvdXRD
b250ZXh0LmNwcDo1MjogIFBsYWNlIGJyYWNlIG9uIGl0cyBvd24gbGluZSBmb3IgZnVuY3Rpb24g
ZGVmaW5pdGlvbnMuICBbd2hpdGVzcGFjZS9icmFjZXNdIFs0XQotRVJST1I6IFNvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcDo1NTogIEV4dHJhIHNwYWNlIGJlZm9yZSBsYXN0
IHNlbWljb2xvbi4gSWYgdGhpcyBzaG91bGQgYmUgYW4gZW1wdHkgc3RhdGVtZW50LCB1c2UgeyB9
IGluc3RlYWQuICBbd2hpdGVzcGFjZS9zZW1pY29sb25dIFs1XQotRVJST1I6IFNvdXJjZS9XZWJD
b3JlL2xheW91dC9MYXlvdXRDb250ZXh0LmNwcDo2MDogIFRhYiBmb3VuZDsgYmV0dGVyIHRvIHVz
ZSBzcGFjZXMgIFt3aGl0ZXNwYWNlL3RhYl0gWzFdCi1FUlJPUjogU291cmNlL1dlYkNvcmUvbGF5
b3V0L1ZlcmlmaWNhdGlvbi5jcHA6ODg6ICBNaXNzaW5nIHNwYWNlIGJlZm9yZSAoIGluIHdoaWxl
KCAgW3doaXRlc3BhY2UvcGFyZW5zXSBbNV0KLVRvdGFsIGVycm9ycyBmb3VuZDogOCBpbiA0OCBm
aWxlcycnJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nOCBzdHlsZSBlcnJvcnMnKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmVzX25v
X3N0eWxlX2lzc3VlcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tTdHlsZSgp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd0cnktY29kZWJhc2UnLCAnaW50ZXJuYWwnKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAgICBzZWxmLmV4
cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tk
aXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9jaGVjay13
ZWJraXQtc3R5bGUnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVG90YWwgZXJyb3JzIGZvdW5kOiAwIGlu
IDYgZmlsZXMnKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdjaGVjay13ZWJraXQtc3R5
bGUnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1
cmVzX25vX2NoYW5nZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENoZWNrU3R5bGUo
KSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgndHJ5LWNvZGViYXNlJywgJ2ludGVybmFsJykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAgc2VsZi5l
eHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3dr
ZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvY2hlY2st
d2Via2l0LXN0eWxlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1RvdGFsIGVycm9ycyBmb3VuZDogMCBp
biAwIGZpbGVzJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nY2hlY2std2Via2l0LXN0
eWxlIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNz
IFRlc3RBcHBseVdhdGNoTGlzdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVz
dENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9
IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRl
YXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChBcHBs
eVdhdGNoTGlzdCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWdfaWQnLCAnMTIzNCcp
Ci0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RT
aGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEy
MCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvd2Via2l0LXBh
dGNoJywgJ2FwcGx5LXdhdGNobGlzdC1sb2NhbCcsICcxMjM0J10pCi0gICAgICAgICAgICArIEV4
cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1Jlc3VsdCBvZiB3YXRjaGxpc3Q6IGNjICIi
IG1lc3NhZ2VzICIiJykKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQXBwbGllZCBXYXRj
aExpc3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFwcGx5V2F0Y2hMaXN0KCkpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1Z19pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5l
eHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3dr
ZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy93ZWJraXQtcGF0Y2gnLCAnYXBwbHktd2F0
Y2hsaXN0LWxvY2FsJywgJzEyMzQnXSkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdz
dGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlJykKLSAgICAgICAgICAgICsgMiwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRmFpbGVkIHRvIGFwcGx5IHdhdGNobGlzdCcpCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5CaW5kaW5nc1Rlc3RzKEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9
ICdiaW5kaW5nc190ZXN0X3Jlc3VsdHMuanNvbicKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBC
dWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAg
ICAgICBzZWxmLnNldHVwU3RlcChSdW5CaW5kaW5nc1Rlc3RzKCkpCi0gICAgICAgIHNlbGYuZXhw
ZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rp
cicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWJpbmRpbmdzLXRlc3RzJywgJy0tanNv
bi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIGJp
bmRpbmdzIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5CaW5kaW5nc1Rl
c3RzKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1l
b3V0PTMwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWJpbmRpbmdzLXRlc3RzJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmls
ZU5hbWUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYu
anNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nRkFJTDogKEpTKSBKU1Rlc3RJbnRlcmZh
Y2UuY3BwJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nYmluZGluZ3MtdGVzdHMgKGZh
aWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1
bldlYktpdFBlcmxUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRy
dWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJE
b3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAg
ICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuV2Vi
S2l0UGVybFRlc3RzKCkpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRwZXJsJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIHdlYmtpdHBlcmwgdGVzdHMnKQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6
Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHBlcmwnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScn
J0ZhaWxlZCB0ZXN0czogIDEtMywgNS03LCA5LCAxMS0xMwotRmlsZXM9NDAsIFRlc3RzPTYzMCwg
IDQgd2FsbGNsb2NrIHNlY3MgKCAwLjE2IHVzciAgMC4wOSBzeXMgKyAgMi43OCBjdXNyICAwLjY0
IGNzeXMgPSAgMy42NyBDUFUpCi1SZXN1bHQ6IEZBSUwKLUZhaWxlZCAxLzQwIHRlc3QgcHJvZ3Jh
bXMuIDEwLzYzMCBzdWJ0ZXN0cyBmYWlsZWQuJycnKQotICAgICAgICAgICAgKyAyLAotICAgICAg
ICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3Ry
aW5nPSdGYWlsZWQgd2Via2l0cGVybCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0KLWNsYXNzIFRlc3RXZWJLaXRQeVB5dGhvbjJUZXN0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAn
d2Via2l0cHlfdGVzdF9weXRob24yX3Jlc3VsdHMuanNvbicKLSAgICAgICAgc2VsZi5qc29uX3dp
dGhfZmFpbHVyZSA9ICcnJ3siZmFpbHVyZXMiOiBbeyJuYW1lIjogIndlYmtpdHB5LnBvcnQud3Bl
X3VuaXR0ZXN0LldQRVBvcnRUZXN0LnRlc3RfZGlmZl9pbWFnZSJ9XX1cbicnJwotICAgICAgICBz
ZWxmLmpzb25fd2l0aF9lcnJyb3MgPSAnJyd7ImZhaWx1cmVzIjogW10sCi0iZXJyb3JzIjogW3si
bmFtZSI6ICJ3ZWJraXRweS5zdHlsZS5jaGVja2Vycy5jcHBfdW5pdHRlc3QuV2ViS2l0U3R5bGVU
ZXN0LnRlc3Rfb3NfdmVyc2lvbl9jaGVja3MifSwgeyJuYW1lIjogIndlYmtpdHB5LnBvcnQud2lu
X3VuaXR0ZXN0LldpblBvcnRUZXN0LnRlc3RfZGlmZl9pbWFnZV9fbWlzc2luZ19hY3R1YWwifV19
XG4nJycKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRl
YXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5X
ZWJLaXRQeVB5dGhvbjJUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9z
ZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIHdlYmtpdHB5IHB5
dGhvbjIgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVu
V2ViS2l0UHlQeXRob24yVGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweScsICctLXZlcmJv
c2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9
LAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9
JycnUmFuIDE3NDQgdGVzdHMgaW4gNS45MTNzCi1GQUlMRUQgKGZhaWx1cmVzPTEsIGVycm9ycz0w
KScnJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nd2Via2l0cHktdGVzdHMgKGZhaWx1
cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWls
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRQeVB5dGhvbjJUZXN0
cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52
aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAn
VG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0cHV0
PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAg
ICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAg
ICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNvbl93aXRoX2ZhaWx1
cmUpICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgd2Via2l0cHkgcHl0aG9u
MiB0ZXN0IGZhaWx1cmU6IHdlYmtpdHB5LnBvcnQud3BlX3VuaXR0ZXN0LldQRVBvcnRUZXN0LnRl
c3RfZGlmZl9pbWFnZScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVm
IHRlc3RfZXJyb3JzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRQeVB5
dGhvbjJUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAg
ICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9Wydw
eXRob24nLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9zZScsICctLWpz
b24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkg
KwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYuanNvbl93
aXRoX2VycnJvcykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMiB3ZWJraXRw
eSBweXRob24yIHRlc3QgZmFpbHVyZXM6IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNwcF91bml0
dGVzdC5XZWJLaXRTdHlsZVRlc3QudGVzdF9vc192ZXJzaW9uX2NoZWNrcywgd2Via2l0cHkucG9y
dC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdlX19taXNzaW5nX2FjdHVh
bCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfbG90X29m
X2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXRQeVB5dGhv
bjJUZXN0cygpKQotICAgICAgICBqc29uX3dpdGhfZmFpbHVyZXMgPSBqc29uLmR1bXBzKHsiZmFp
bHVyZXMiOiBbeyJuYW1lIjogJ3Rlc3R7fScuZm9ybWF0KGkpfSBmb3IgaSBpbiByYW5nZSgxLCAz
MSldfSkKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24n
LCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9zZScsICctLWpzb24tb3V0
cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PWpzb25fd2l0aF9mYWlsdXJl
cykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMzAgd2Via2l0cHkgcHl0aG9u
MiB0ZXN0IGZhaWx1cmVzOiB0ZXN0MSwgdGVzdDIsIHRlc3QzLCB0ZXN0NCwgdGVzdDUsIHRlc3Q2
LCB0ZXN0NywgdGVzdDgsIHRlc3Q5LCB0ZXN0MTAgLi4uJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFdlYktpdFB5UHl0aG9uM1Rlc3RzKEJ1aWxkU3RlcE1p
eGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgot
ICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBzZWxmLmpzb25GaWxlTmFt
ZSA9ICd3ZWJraXRweV90ZXN0X3B5dGhvbjNfcmVzdWx0cy5qc29uJwotICAgICAgICBzZWxmLmpz
b25fd2l0aF9mYWlsdXJlID0gJycneyJmYWlsdXJlcyI6IFt7Im5hbWUiOiAid2Via2l0cHkucG9y
dC53cGVfdW5pdHRlc3QuV1BFUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdlIn1dfVxuJycnCi0gICAg
ICAgIHNlbGYuanNvbl93aXRoX2VycnJvcyA9ICcnJ3siZmFpbHVyZXMiOiBbXSwKLSJlcnJvcnMi
OiBbeyJuYW1lIjogIndlYmtpdHB5LnN0eWxlLmNoZWNrZXJzLmNwcF91bml0dGVzdC5XZWJLaXRT
dHlsZVRlc3QudGVzdF9vc192ZXJzaW9uX2NoZWNrcyJ9LCB7Im5hbWUiOiAid2Via2l0cHkucG9y
dC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdlX19taXNzaW5nX2FjdHVh
bCJ9XX1cbicnJwotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBk
ZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVw
KCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVw
KFJ1bldlYktpdFB5UHl0aG9uM1Rlc3RzKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29t
bWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3B5dGhvbjMnLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0t
dmVyYm9zZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIHdlYmtp
dHB5IHB5dGhvbjMgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoUnVuV2ViS2l0UHlQeXRob24zVGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncHl0aG9uMycsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAn
LS12ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUp
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZp
bGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PScnJ1JhbiAxNzQ0IHRlc3RzIGluIDUuOTEzcwotRkFJTEVEIChmYWlsdXJlcz0xLCBl
cnJvcnM9MCknJycpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J3dlYmtpdHB5LXRlc3Rz
IChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRl
c3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuV2ViS2l0UHlQeXRo
b24zVGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0
aG9uMycsICdUb29scy9TY3JpcHRzL3Rlc3Qtd2Via2l0cHknLCAnLS12ZXJib3NlJywgJy0tanNv
bi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgKSAr
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc29uX3dp
dGhfZmFpbHVyZSkgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSB3ZWJraXRw
eSBweXRob24zIHRlc3QgZmFpbHVyZTogd2Via2l0cHkucG9ydC53cGVfdW5pdHRlc3QuV1BFUG9y
dFRlc3QudGVzdF9kaWZmX2ltYWdlJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldl
YktpdFB5UHl0aG9uM1Rlc3RzKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMo
Ci0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3B5dGhvbjMnLCAnVG9vbHMvU2NyaXB0cy90ZXN0LXdlYmtpdHB5JywgJy0tdmVyYm9z
ZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNl
bGYuanNvbl93aXRoX2VycnJvcykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQg
MiB3ZWJraXRweSBweXRob24zIHRlc3QgZmFpbHVyZXM6IHdlYmtpdHB5LnN0eWxlLmNoZWNrZXJz
LmNwcF91bml0dGVzdC5XZWJLaXRTdHlsZVRlc3QudGVzdF9vc192ZXJzaW9uX2NoZWNrcywgd2Vi
a2l0cHkucG9ydC53aW5fdW5pdHRlc3QuV2luUG9ydFRlc3QudGVzdF9kaWZmX2ltYWdlX19taXNz
aW5nX2FjdHVhbCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRl
c3RfbG90X29mX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJL
aXRQeVB5dGhvbjNUZXN0cygpKQotICAgICAgICBqc29uX3dpdGhfZmFpbHVyZXMgPSBqc29uLmR1
bXBzKHsiZmFpbHVyZXMiOiBbeyJuYW1lIjogJ3Rlc3R7fScuZm9ybWF0KGkpfSBmb3IgaSBpbiBy
YW5nZSgxLCAzMSldfSkKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9
WydweXRob24zJywgJ1Rvb2xzL1NjcmlwdHMvdGVzdC13ZWJraXRweScsICctLXZlcmJvc2UnLCAn
LS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAgICAgICAgICAgICAgICAg
ICApICsKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1qc29uX3dp
dGhfZmFpbHVyZXMpICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDMwIHdlYmtp
dHB5IHB5dGhvbjMgdGVzdCBmYWlsdXJlczogdGVzdDEsIHRlc3QyLCB0ZXN0MywgdGVzdDQsIHRl
c3Q1LCB0ZXN0NiwgdGVzdDcsIHRlc3Q4LCB0ZXN0OSwgdGVzdDEwIC4uLicpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5FV1NCdWlsZGJvdENoZWNrQ29u
ZmlnKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBy
ZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1
Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkVXU0J1aWxkYm90Q2hlY2tD
b25maWcoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1i
dWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsnYnVpbGRib3QnLCAnY2hlY2tjb25maWcnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIGJ1aWxkYm90IGNoZWNr
Y29uZmlnJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9m
YWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5FV1NCdWlsZGJvdENoZWNr
Q29uZmlnKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3Mt
YnVpbGQnLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ2J1aWxkYm90JywgJ2NoZWNrY29uZmlnJ10sCi0gICAgICAgICAgICAgICAgICAg
ICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J0Nv
bmZpZ3VyYXRpb24gRXJyb3JzOiAgYnVpbGRlcihzKSBpT1MtMTItRGVidWctQnVpbGQtRVdTIGhh
dmUgbm8gc2NoZWR1bGVycyB0byBkcml2ZSB0aGVtJykKLSAgICAgICAgICAgICsgMiwKLSAgICAg
ICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0
cmluZz0nRmFpbGVkIGJ1aWxkYm90IGNoZWNrY29uZmlnJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bkVXU1VuaXRUZXN0cyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWls
ZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50
ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAg
ICBzZWxmLnNldHVwU3RlcChSdW5FV1NVbml0VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9
WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0
cy5weSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVf
c3RyaW5nPSdQYXNzZWQgRVdTIHVuaXQgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKFJ1bkVXU1VuaXRUZXN0cygpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZW91dD0xMjAsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRlc3RzLnB5J10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3Rk
aW8nLCBzdGRvdXQ9J1VuaGFuZGxlZCBFcnJvci4gVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs
IGxhc3QpOiBLZXlzIGluIGNtZCBtaXNzaW5nIGZyb20gZXhwZWN0YXRpb246IFtsb2dmaWxlcy5q
c29uXScpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZhaWxlZCBFV1MgdW5pdCB0ZXN0
cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5SZXN1
bHRzZGJweVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQot
ICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24o
c2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1blJlc3VsdHNk
YnB5VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24zJywgJ1Rvb2xzL1Njcmlw
dHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10ZXN0cycsICctLXZlcmJv
c2UnLCAnLS1uby1zZWxlbml1bScsICctLWZhc3QtdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIHJlc3VsdHNkYnB5
IHVuaXQgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1blJlc3VsdHNkYnB5
VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24zJywgJ1Rvb2xzL1NjcmlwdHMv
bGlicmFyaWVzL3Jlc3VsdHNkYnB5L3Jlc3VsdHNkYnB5L3J1bi10ZXN0cycsICctLXZlcmJvc2Un
LCAnLS1uby1zZWxlbml1bScsICctLWZhc3QtdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nRkFJ
TEVEIChlcnJvcnM9NSwgc2tpcHBlZD0yMjQpJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmlu
Zz0nRmFpbGVkIHJlc3VsdHNkYnB5IHVuaXQgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0UnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoQnVpbGRT
dGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2Vs
Zik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxm
LnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0
dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxm
KToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoKSkK
LSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNo
ZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNfdW5pdHRlc3QucHknXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIGJ1aWxk
LndlYmtpdC5vcmcgdW5pdCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQot
Ci0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVu
QnVpbGRXZWJLaXRPcmdVbml0VGVzdHMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNf
dW5pdHRlc3QucHknXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsg
RXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5oYW5kbGVkIEVycm9yLiBUcmFjZWJh
Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6IEtleXMgaW4gY21kIG1pc3NpbmcgZnJvbSBleHBl
Y3RhdGlvbjogW2xvZ2ZpbGVzLmpzb25dJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
RmFpbGVkIGJ1aWxkLndlYmtpdC5vcmcgdW5pdCB0ZXN0cycpCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RLaWxsT2xkUHJvY2Vzc2VzKEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VsZi5leHBl
Y3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGly
JywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxkYm90J10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD02MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsg
MCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1Ms
IHN0YXRlX3N0cmluZz0nS2lsbGVkIG9sZCBwcm9jZXNzZXMnKQotICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxkYm90J10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91
dD02MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hl
bGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBlcnJvci4nKQotICAgICAgICAgICAg
KyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVS
RSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8ga2lsbCBvbGQgcHJvY2Vzc2VzJykKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENsZWFuQnVpbGQoQnVpbGRTdGVw
TWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6
Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNl
dFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5CdWlsZCgpKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLTExJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvY2xlYW4tYnVpbGQnLCAnLS1wbGF0Zm9ybT1pb3MtMTEnLCAnLS1yZWxlYXNlJ10sCi0g
ICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0Rl
bGV0ZWQgV2ViS2l0QnVpbGQgZGlyZWN0b3J5JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChDbGVhbkJ1aWxkKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScs
ICdpb3Mtc2ltdWxhdG9yLTExJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJh
dGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2NsZWFuLWJ1
aWxkJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvci0xMScsICctLWRlYnVnJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8n
LCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmlu
Zz0nRGVsZXRlZCBXZWJLaXRCdWlsZCBkaXJlY3RvcnkgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENsZWFuVXBHaXRJbmRleExvY2soQnVp
bGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAo
c2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBz
ZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2Vzcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5VcEdpdEluZGV4TG9jaygpKQotICAg
ICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwo
d29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3JtJywgJy1mJywgJy5naXQvaW5kZXgubG9jayddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdEZWxldGVk
IC5naXQvaW5kZXgubG9jaycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAg
ZGVmIHRlc3Rfc3VjY2Vzc193aW5kb3dzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChD
bGVhblVwR2l0SW5kZXhMb2NrKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3Jt
JywgJ3dpbicpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0PTEyMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncm0nLCAnLWYnLCAnLmdpdC9pbmRleC5s
b2NrJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J0RlbGV0ZWQgLmdpdC9pbmRleC5sb2NrJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVu
U3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dpbmNhaXJvKHNlbGYpOgotICAgICAgICBz
ZWxmLnNldHVwU3RlcChDbGVhblVwR2l0SW5kZXhMb2NrKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3BsYXRmb3JtJywgJ3dpbmNhaXJvJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydkZWwn
LCAnLmdpdFxpbmRleC5sb2NrJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0RlbGV0ZWQgLmdpdC9pbmRleC5sb2NrJykKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAg
ICAgICBzZWxmLnNldHVwU3RlcChDbGVhblVwR2l0SW5kZXhMb2NrKCkpCi0gICAgICAgIHNlbGYu
ZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3
a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTEyMCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncm0nLCAnLWYnLCAnLmdpdC9pbmRleC5sb2NrJ10sCi0gICAgICAgICAgICAgICAg
ICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9
J1VuZXhwZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAgICsgMSwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRGVsZXRl
ZCAuZ2l0L2luZGV4LmxvY2sgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3Rl
cCgpCi0KLQotY2xhc3MgVGVzdEluc3RhbGxHdGtEZXBlbmRlbmNpZXMoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVp
bGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
dGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoSW5zdGFsbEd0a0RlcGVuZGVuY2llcygpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKEluc3RhbGxHdGtEZXBlbmRlbmNpZXMuaGFsdE9uRmFpbHVyZSwgVHJ1ZSkKLSAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3Jp
cHRzL3VwZGF0ZS13ZWJraXRndGstbGlicycsICctLXJlbGVhc2UnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nVXBkYXRlZCBndGsgZGVw
ZW5kZW5jaWVzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChJbnN0YWxsR3RrRGVwZW5k
ZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW5zdGFsbEd0a0RlcGVuZGVuY2llcy5o
YWx0T25GYWlsdXJlLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzJywgJy0tcmVs
ZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGVycm9yLicpCi0gICAgICAgICAg
ICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlM
VVJFLCBzdGF0ZV9zdHJpbmc9J1VwZGF0ZWQgZ3RrIGRlcGVuZGVuY2llcyAoZmFpbHVyZSknKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0SW5zdGFsbFdwZURl
cGVuZGVuY2llcyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAg
ICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChJbnN0YWxsV3BlRGVw
ZW5kZW5jaWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAn
cmVsZWFzZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW5zdGFsbFdwZURlcGVuZGVuY2ll
cy5oYWx0T25GYWlsdXJlLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdHdwZS1saWJzJywgJy0t
cmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdVcGRhdGVkIHdwZSBkZXBlbmRlbmNpZXMnKQotICAgICAgICByZXR1cm4gc2Vs
Zi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKEluc3RhbGxXcGVEZXBlbmRlbmNpZXMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChJbnN0YWxsV3BlRGVwZW5kZW5jaWVzLmhhbHRPbkZhaWx1cmUsIFRydWUpCi0gICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy91cGRh
dGUtd2Via2l0d3BlLWxpYnMnLCAnLS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhw
ZWN0ZWQgZXJyb3IuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nVXBkYXRlZCB3cGUg
ZGVwZW5kZW5jaWVzIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQot
Ci0KLWNsYXNzIFRlc3RDb21waWxlV2ViS2l0KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdN
ZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAg
ICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0JywgJy0tcmVsZWFzZSdd
LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICAp
Ci0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5n
PSdDb21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X3N1Y2Nlc3NfZ3RrKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21w
aWxlV2ViS2l0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ2d0aycp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdndGsnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBz
ZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rp
cj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0JywgJy0tcmVsZWFzZScsICctLWd0ayddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdDb21waWxlZCBXZWJLaXQnKQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfd3BlKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21waWxlV2ViS2l0KCkpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ3dwZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2Z1bGxQbGF0Zm9ybScsICd3cGUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0JywgJy0tcmVsZWFzZScs
ICctLXdwZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdDb21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVw
KENvbXBpbGVXZWJLaXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9u
JywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVy
bCcsICdUb29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCcsICctLWRlYnVnJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBz
dGRvdXQ9JzEgZXJyb3IgZ2VuZXJhdGVkLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J0ZhaWxlZCB0byBjb21waWxlIFdlYktpdCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0gICAgZGVmIHRlc3Rfc2tpcF9mb3JfcmV2ZXJ0X3BhdGNoZXNfb25fY29tbWl0X3F1ZXVl
KHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDb21waWxlV2ViS2l0KCkpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ0NvbW1pdC1RdWV1ZScpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdyZXZlcnQnLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVNLSVBQRUQsIHN0YXRlX3N0cmluZz0nQ29tcGlsZWQgV2ViS2l0IChza2lwcGVkKScp
Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RDb21waWxlV2Vi
S2l0V2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1
ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRv
d24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVX
ZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaEZh
aWxlZFRvQnVpbGQnLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0JywgJy0tcmVsZWFzZSddLAot
ICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdD
b21waWxlZCBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVXZWJL
aXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9u
JywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUZXN0cycs
IFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQnLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0
PScxIGVycm9yIGdlbmVyYXRlZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWls
ZWQgdG8gY29tcGlsZSBXZWJLaXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X3NraXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVX
ZWJLaXRXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRm
b3JtJywgJ2lvcy1zaW11bGF0b3ItMTEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVjdEhpZGRlbihUcnVlKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNLSVBQRUQsIHN0YXRlX3N0cmluZz0n
Q29tcGlsZWQgV2ViS2l0IChza2lwcGVkKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAo
KQotCi0KLWNsYXNzIFRlc3RBbmFseXplQ29tcGlsZVdlYktpdFJlc3VsdHMoQnVpbGRTdGVwTWl4
aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0g
ICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIEFuYWx5emVDb21waWxlV2Vi
S2l0UmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9idWlsZF9mYWlsdXJlID0gbGFtYmRhIHNlbGY6IE5v
bmUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJE
b3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAg
ICBkZWYgdGVzdF9wYXRjaF93aXRoX2J1aWxkX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHByZXZp
b3VzX3N0ZXBzID0gWwotICAgICAgICAgICAgbW9ja19zdGVwKENvbXBpbGVXZWJLaXQoKSwgcmVz
dWx0cz1GQUlMVVJFKSwKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21waWxlV2ViS2l0V2l0aG91
dFBhdGNoKCksIHJlc3VsdHM9U1VDQ0VTUyksCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5zZXR1
cFN0ZXAoQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzKCksIHByZXZpb3VzX3N0ZXBzPXByZXZp
b3VzX3N0ZXBzKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J1BhdGNoIDEyMzQgZG9lcyBub3QgYnVpbGQgKGZhaWx1cmUpJykKLSAgICAgICAgcmMgPSBzZWxm
LnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1
Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksICdQYXRjaCAxMjM0IGRvZXMg
bm90IGJ1aWxkJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXRjaF93aXRo
X2J1aWxkX2ZhaWx1cmVfb25fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAgICAgICBwcmV2aW91c19z
dGVwcyA9IFsKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21waWxlV2ViS2l0KCksIHJlc3VsdHM9
RkFJTFVSRSksCi0gICAgICAgICAgICBtb2NrX3N0ZXAoQ29tcGlsZVdlYktpdFdpdGhvdXRQYXRj
aCgpLCByZXN1bHRzPVNVQ0NFU1MpLAotICAgICAgICBdCi0gICAgICAgIHNlbGYuc2V0dXBTdGVw
KEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cygpLCBwcmV2aW91c19zdGVwcz1wcmV2aW91c19z
dGVwcykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ2NvbW1pdC1xdWV1ZScpCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdQYXRj
aCAxMjM0IGRvZXMgbm90IGJ1aWxkIChmYWlsdXJlKScpCi0gICAgICAgIHJjID0gc2VsZi5ydW5T
dGVwKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdidWd6aWxs
YV9jb21tZW50X3RleHQnKSwgJ1BhdGNoIDEyMzQgZG9lcyBub3QgYnVpbGQnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5Jyks
ICdQYXRjaCAxMjM0IGRvZXMgbm90IGJ1aWxkJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBk
ZWYgdGVzdF9wYXRjaF93aXRoX3RydW5rX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHByZXZpb3Vz
X3N0ZXBzID0gWwotICAgICAgICAgICAgbW9ja19zdGVwKENvbXBpbGVXZWJLaXQoKSwgcmVzdWx0
cz1GQUlMVVJFKSwKLSAgICAgICAgICAgIG1vY2tfc3RlcChDb21waWxlV2ViS2l0V2l0aG91dFBh
dGNoKCksIHJlc3VsdHM9RkFJTFVSRSksCi0gICAgICAgIF0KLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzKCksIHByZXZpb3VzX3N0ZXBzPXByZXZpb3Vz
X3N0ZXBzKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nVW5hYmxlIHRvIGJ1aWxkIFdlYktpdCB3aXRob3V0IHBhdGNoLCByZXRyeWluZyBi
dWlsZCAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X2ZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3Ioc2VsZik6Ci0gICAgICAgIGxvZ3Mg
PSAnSW4gZmlsZSBpbmNsdWRlZCBmcm9tIFdlYkNvcmUvdW5pZmllZC1zb3VyY2VzL1VuaWZpZWRT
b3VyY2UyNjMuY3BwOjQ6XG5JbWFnZUJ1ZmZlcklPU3VyZmFjZUJhY2tlbmQuY3BwOjEwODozMDog
ZXJyb3I6IGRlZmluaXRpb24gb2YgaW1wbGljaXRseSBkZWNsYXJlZCBkZXN0cnVjdG9yJwotICAg
ICAgICBleHBlY3RlZF9vdXRwdXQgPSAnSW1hZ2VCdWZmZXJJT1N1cmZhY2VCYWNrZW5kLmNwcDox
MDg6MzA6IGVycm9yOiBkZWZpbml0aW9uIG9mIGltcGxpY2l0bHkgZGVjbGFyZWQgZGVzdHJ1Y3Rv
cicKLSAgICAgICAgb3V0cHV0ID0gQW5hbHl6ZUNvbXBpbGVXZWJLaXRSZXN1bHRzKCkuZmlsdGVy
X2xvZ3NfY29udGFpbmluZ19lcnJvcihsb2dzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkX291dHB1dCwgb3V0cHV0KQotCi0gICAgZGVmIHRlc3RfZmlsdGVyX2xvZ3NfY29udGFp
bmluZ19lcnJvcl93aXRoX3Rvb19tYW55X2Vycm9ycyhzZWxmKToKLSAgICAgICAgbG9ncyA9ICdF
cnJvcjoxXG5FcnJvcjoyXG5lcnJvcjozXG5lcnJvcjo0XG5lcnJvcjo1XG5yYW5kb20tc3RyaW5n
XG5lcnJvcjo2XG5lcnJvcjo3XG5lcnJvcjhcbmVycm9yOjlcbmVycm9yOjEwXG5lcnJvcjoxMVxu
ZXJyb3I6MTJcbmVycm9yOjEzJwotICAgICAgICBleHBlY3RlZF9vdXRwdXQgPSAnZXJyb3I6M1xu
ZXJyb3I6NFxuZXJyb3I6NVxuZXJyb3I6NlxuZXJyb3I6N1xuZXJyb3I6OVxuZXJyb3I6MTBcbmVy
cm9yOjExXG5lcnJvcjoxMlxuZXJyb3I6MTMnCi0gICAgICAgIG91dHB1dCA9IEFuYWx5emVDb21w
aWxlV2ViS2l0UmVzdWx0cygpLmZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3IobG9ncykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9vdXRwdXQsIG91dHB1dCkKLQotICAgIGRl
ZiB0ZXN0X2ZpbHRlcl9sb2dzX2NvbnRhaW5pbmdfZXJyb3Jfd2l0aF9ub19lcnJvcihzZWxmKToK
LSAgICAgICAgbG9ncyA9ICdDb21waWxlQyAvVm9sdW1lcy9EYXRhL3dvcmtlci9tYWNPUy1Nb2ph
dmUtUmVsZWFzZS1CdWlsZC1FV1MnCi0gICAgICAgIGV4cGVjdGVkX291dHB1dCA9ICcnCi0gICAg
ICAgIG91dHB1dCA9IEFuYWx5emVDb21waWxlV2ViS2l0UmVzdWx0cygpLmZpbHRlcl9sb2dzX2Nv
bnRhaW5pbmdfZXJyb3IobG9ncykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9v
dXRwdXQsIG91dHB1dCkKLQotCi1jbGFzcyBUZXN0Q29tcGlsZUpTQyhCdWlsZFN0ZXBNaXhpbkFk
ZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAg
ICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWls
ZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50
ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAg
ICBzZWxmLnNldHVwU3RlcChDb21waWxlSlNDKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2Z1bGxQbGF0Zm9ybScsICdqc2Mtb25seScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Nv
bmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFu
ZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAg
Y29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9idWlsZC1qc2MnLCAnLS1yZWxlYXNlJ10s
Ci0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkK
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9
J0NvbXBpbGVkIEpTQycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVm
IHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ29tcGlsZUpTQygp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnanNjLW9ubHknKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAg
ICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdv
cmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRz
L2J1aWxkLWpzYycsICctLWRlYnVnJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JzEgZXJyb3IgZ2VuZXJh
dGVkLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZhaWxlZCB0byBjb21waWxlIEpT
QycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RDb21waWxl
SlNDV2l0aG91dFBhdGNoKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1
ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRv
d24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVK
U0NXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ2pzYy1vbmx5JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbics
ICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hGYWlsZWRUb0J1aWxk
JywgJ1RydWUnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJs
JywgJ1Rvb2xzL1NjcmlwdHMvYnVpbGQtanNjJywgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdDb21waWxlZCBKU0Mn
KQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUo
c2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENvbXBpbGVKU0NXaXRob3V0UGF0Y2goKSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2pzYy1vbmx5JykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9i
dWlsZC1qc2MnLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScxIGVycm9yIGdlbmVyYXRl
ZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gY29tcGlsZSBKU0Mn
KQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0UnVuSmF2YVNj
cmlwdENvcmVUZXN0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2Up
OgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUK
LSAgICAgICAgc2VsZi5qc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKLSAgICAgICAg
c2VsZi5qc2NfbWFzbV9mYWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxs
TWFzbVRlc3RzUGFzc2VkIjpmYWxzZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVz
dHNQYXNzZWQiOnRydWUsInN0cmVzc1Rlc3RGYWlsdXJlcyI6W10sImFsbEFwaVRlc3RzUGFzc2Vk
Ijp0cnVlfVxuJycnCi0gICAgICAgIHNlbGYuanNjX2IzX2FuZF9zdHJlc3NfdGVzdF9mYWlsdXJl
ID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVl
LCJhbGxCM1Rlc3RzUGFzc2VkIjpmYWxzZSwiYWxsQWlyVGVzdHNQYXNzZWQiOnRydWUsImFsbEFw
aVRlc3RzUGFzc2VkIjp0cnVlLCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsic3RyZXNzL3dlYWtzZXQt
Z2MuanMiXX1cbicnJwotICAgICAgICBzZWxmLmpzY19kZmdfYWlyX2FuZF9zdHJlc3NfdGVzdF9m
YWlsdXJlID0gJycneyJhbGxERkdUZXN0c1Bhc3NlZCI6ZmFsc2UsImFsbE1hc21UZXN0c1Bhc3Nl
ZCI6dHJ1ZSwiYWxsQjNUZXN0c1Bhc3NlZCI6dHJ1ZSwiYWxsQWlyVGVzdHNQYXNzZWQiOmZhbHNl
LCJhbGxBcGlUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVzcy93
ZWFrc2V0LWdjLmpzIl19XG4nJycKLSAgICAgICAgc2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0
X2ZhaWx1cmUgPSAnJyd7ImFsbERGR1Rlc3RzUGFzc2VkIjp0cnVlLCJhbGxNYXNtVGVzdHNQYXNz
ZWQiOnRydWUsImFsbEIzVGVzdHNQYXNzZWQiOnRydWUsImFsbEFpclRlc3RzUGFzc2VkIjp0cnVl
LCJzdHJlc3NUZXN0RmFpbHVyZXMiOlsic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUu
anMuZGZnLWVhZ2VyIl0sImFsbEFwaVRlc3RzUGFzc2VkIjp0cnVlfVxuJycnCi0gICAgICAgIHNl
bGYuanNjX211bHRpcGxlX3N0cmVzc190ZXN0X2ZhaWx1cmVzID0gJycneyJhbGxERkdUZXN0c1Bh
c3NlZCI6dHJ1ZSwiYWxsTWFzbVRlc3RzUGFzc2VkIjp0cnVlLCJhbGxCM1Rlc3RzUGFzc2VkIjp0
cnVlLCJhbGxBaXJUZXN0c1Bhc3NlZCI6dHJ1ZSwic3RyZXNzVGVzdEZhaWx1cmVzIjpbInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciIsInN0cmVzcy9zd2l0Y2gt
b24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlci1uby1jaml0LXZhbGlkYXRlIiwic3RyZXNz
L3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFnZXItamV0dGlzb24tbm8tY2ppdCIsInN0
cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlciIsInN0cmVzcy9zd2l0
Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlci1uby1jaml0Iiwic3RyZXNzL3N3aXRj
aC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVhZ2VyLW5vLWNqaXQtYjNvMSIsInN0cmVzcy9z
d2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LWIzbzAiLCJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1pbmxpbmUtdmFsaWRhdGUi
LCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtbm8tY2ppdC1uby1wdXQt
c3RhY2stdmFsaWRhdGUiLCJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwt
bm8tY2ppdC1zbWFsbC1wb29sIiwic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMu
ZnRsLW5vLWNqaXQtdmFsaWRhdGUtc2FtcGxpbmctcHJvZmlsZXIiLCJzdHJlc3Mvc3dpdGNoLW9u
LWNoYXItbGxpbnQtcm9wZS5qcy5uby1jaml0LWNvbGxlY3QtY29udGludW91c2x5Iiwic3RyZXNz
L3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC12YWxpZGF0ZS1waGFzZXMiLCJz
dHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5uby1mdGwiXSwiYWxsQXBpVGVzdHNQ
YXNzZWQiOnRydWV9XG4nJycKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmLCBwbGF0Zm9ybT1Ob25lLCBm
dWxsUGxhdGZvcm09Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lKToKLSAgICAgICAgc2VsZi5zZXR1
cFN0ZXAoUnVuSmF2YVNjcmlwdENvcmVUZXN0cygpKQotICAgICAgICBzZWxmLnByZWZpeCA9IFJ1
bkphdmFTY3JpcHRDb3JlVGVzdHMucHJlZml4Ci0gICAgICAgIGlmIHBsYXRmb3JtOgotICAgICAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCBwbGF0Zm9ybSkKLSAgICAgICAgaWYg
ZnVsbFBsYXRmb3JtOgotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgZnVsbFBsYXRmb3JtKQotICAgICAgICBpZiBjb25maWd1cmF0aW9uOgotICAgICAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsIGNvbmZpZ3VyYXRpb24pCi0KLSAgICBk
ZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZv
cm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBjb25maWd1cmF0aW9uPSdy
ZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcs
ICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywg
Jy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmls
ZU5hbWUpLCAnLS1yZWxlYXNlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17
J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbW90ZV9zdWNjZXNzKHNlbGYp
OgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxhdGZvcm09J2pzYy1vbmx5JywgZnVsbFBs
YXRmb3JtPSdqc2Mtb25seScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdyZW1vdGVzJywgJ3JlbW90ZS1tYWNoaW5lcy5qc29uJykKLSAgICAgICAg
c2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtk
aXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0Jywg
Jy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNl
JywgJy0tcmVtb3RlLWNvbmZpZy1maWxlPXJlbW90ZS1tYWNoaW5lcy5qc29uJywgJy0tbm8tdGVz
dG1hc20nLCAnLS1uby10ZXN0YWlyJywgJy0tbm8tdGVzdGIzJywgJy0tbm8tdGVzdGRmZycsICct
LW5vLXRlc3RhcGknLCAnLS1tZW1vcnktbGltaXRlZCcsICctLWpzYy1vbmx5J10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bh
c3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9y
bT0nbWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J2Rl
YnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdU
b29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0t
bm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5h
bWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSc5IGZhaWx1cmVzIGZvdW5k
LicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2pzY29yZS10ZXN0cyAoZmFpbHVyZSkn
KQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3NpbmdsZV9z
dHJlc3NfdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAocGxh
dGZvcm09J21hYycsIGZ1bGxQbGF0Zm9ybT0nbWFjLWhpZ2hzaWVycmEnLCBjb25maWd1cmF0aW9u
PSdkZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29u
Jzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3BlcmwnLCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYu
anNvbkZpbGVOYW1lKSwgJy0tZGVidWcnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAg
ICAgICAgICAgICsgMgotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ2pzb24nLCBzdGRv
dXQ9c2VsZi5qc2Nfc2luZ2xlX3N0cmVzc190ZXN0X2ZhaWx1cmUpLAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3Vu
ZCAxIGpzYyBzdHJlc3MgdGVzdCBmYWlsdXJlOiBzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQt
cm9wZS5qcy5kZmctZWFnZXInKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3Nf
dGVzdF9mYWlsdXJlcycpLCBbJ3N0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRm
Zy1lYWdlciddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2Vs
Zi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIE5vbmUpCi0gICAgICAgIHJldHVybiByYwot
Ci0gICAgZGVmIHRlc3RfbG90X29mX3N0cmVzc190ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAg
IHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGln
aHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAg
ICAgICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2Ny
aXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVj
dFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19tdWx0aXBsZV9zdHJlc3NfdGVzdF9m
YWlsdXJlcyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1G
QUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDE0IGpzYyBzdHJlc3MgdGVzdCBmYWlsdXJlczog
c3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZGZnLWVhZ2VyLCBzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2ppdC12YWxpZGF0ZSwgc3Ry
ZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZWFnZXItamV0dGlzb24tbm8tY2ppdCwg
c3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLWVhZ2VyLCBzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2ppdCAuLi4nKQotICAgICAg
ICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQ
cm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycpLCBbInN0cmVzcy9z
d2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmRmZy1lYWdlciIsICJzdHJlc3Mvc3dpdGNoLW9u
LWNoYXItbGxpbnQtcm9wZS5qcy5kZmctZWFnZXItbm8tY2ppdC12YWxpZGF0ZSIsICJzdHJlc3Mv
c3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5lYWdlci1qZXR0aXNvbi1uby1jaml0IiwgInN0
cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1lYWdlciIsICJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2ppdCIsICJzdHJlc3Mvc3dp
dGNoLW9uLWNoYXItbGxpbnQtcm9wZS5qcy5mdGwtZWFnZXItbm8tY2ppdC1iM28xIiwgInN0cmVz
cy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LWIzbzAiLCAic3RyZXNz
L3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMuZnRsLW5vLWNqaXQtbm8taW5saW5lLXZhbGlk
YXRlIiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLmZ0bC1uby1jaml0LW5v
LXB1dC1zdGFjay12YWxpZGF0ZSIsICJzdHJlc3Mvc3dpdGNoLW9uLWNoYXItbGxpbnQtcm9wZS5q
cy5mdGwtbm8tY2ppdC1zbWFsbC1wb29sIiwgInN0cmVzcy9zd2l0Y2gtb24tY2hhci1sbGludC1y
b3BlLmpzLmZ0bC1uby1jaml0LXZhbGlkYXRlLXNhbXBsaW5nLXByb2ZpbGVyIiwgInN0cmVzcy9z
d2l0Y2gtb24tY2hhci1sbGludC1yb3BlLmpzLm5vLWNqaXQtY29sbGVjdC1jb250aW51b3VzbHki
LCAic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tY2ppdC12YWxpZGF0ZS1w
aGFzZXMiLCAic3RyZXNzL3N3aXRjaC1vbi1jaGFyLWxsaW50LXJvcGUuanMubm8tZnRsIl0pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdi
aW5hcnlfZmFpbHVyZXMnKSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVz
dF9tYXNtX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9y
bT0nbWFjJywgZnVsbFBsYXRmb3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J2Rl
YnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBz
ZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncGVy
bCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1aWxk
JywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29u
RmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1z
ZWxmLmpzY19tYXNtX2ZhaWx1cmUpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdKU0MgdGVzdCBiaW5hcnkgZmFpbHVy
ZTogdGVzdG1hc20nKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9m
YWlsdXJlcycpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVy
dHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIFsndGVzdG1hc20nXSkKLSAgICAg
ICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9iM19hbmRfc3RyZXNzX3Rlc3RfZmFpbHVyZShz
ZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3JtPSdtYWMnLCBmdWxsUGxh
dGZvcm09J21hYy1oaWdoc2llcnJhJywgY29uZmlndXJhdGlvbj0ncmVsZWFzZScpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5h
bWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2Ny
aXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLWZhaWwt
ZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKSwgJy0t
cmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAyCi0g
ICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLmpzY19iM19h
bmRfc3RyZXNzX3Rlc3RfZmFpbHVyZSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEganNjIHN0cmVzcyB0
ZXN0IGZhaWx1cmU6IHN0cmVzcy93ZWFrc2V0LWdjLmpzLCBKU0MgdGVzdCBiaW5hcnkgZmFpbHVy
ZTogdGVzdGIzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnc3RyZXNzX3Rlc3RfZmFp
bHVyZXMnKSwgWydzdHJlc3Mvd2Vha3NldC1nYy5qcyddKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcmVmaXggKyAnYmluYXJ5X2ZhaWx1cmVzJyksIFsn
dGVzdGIzJ10pCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZGZnX2Fpcl9hbmRf
c3RyZXNzX3Rlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBs
YXRmb3JtPSdqc2Mtb25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHknLCBjb25maWd1cmF0aW9u
PSdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pz
b24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2Vs
Zi5qc29uRmlsZU5hbWUpLCAnLS1yZWxlYXNlJywgJy0tanNjLW9ubHknXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMgotICAgICAgICAgICAgKyBFeHBlY3RTaGVs
bC5sb2coJ2pzb24nLCBzdGRvdXQ9c2VsZi5qc2NfZGZnX2Fpcl9hbmRfc3RyZXNzX3Rlc3RfZmFp
bHVyZSksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlM
VVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEganNjIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHN0cmVz
cy93ZWFrc2V0LWdjLmpzLCBKU0MgdGVzdCBiaW5hcnkgZmFpbHVyZXM6IHRlc3RhaXIsIHRlc3Rk
ZmcnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdzdHJlc3NfdGVzdF9mYWlsdXJlcycp
LCBbJ3N0cmVzcy93ZWFrc2V0LWdjLmpzJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5nZXRQcm9wZXJ0eShzZWxmLnByZWZpeCArICdiaW5hcnlfZmFpbHVyZXMnKSwgWyd0ZXN0YWly
JywgJ3Rlc3RkZmcnXSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLQotY2xhc3MgVGVzdFJlUnVuSmF2
YVNjcmlwdENvcmVUZXN0cyhUZXN0UnVuSmF2YVNjcmlwdENvcmVUZXN0cyk6Ci0gICAgZGVmIGNv
bmZpZ3VyZVN0ZXAoc2VsZiwgcGxhdGZvcm09Tm9uZSwgZnVsbFBsYXRmb3JtPU5vbmUsIGNvbmZp
Z3VyYXRpb249Tm9uZSk6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJlUnVuSmF2YVNjcmlwdENv
cmVUZXN0cygpKQotICAgICAgICBzZWxmLnByZWZpeCA9IFJlUnVuSmF2YVNjcmlwdENvcmVUZXN0
cy5wcmVmaXgKLSAgICAgICAgaWYgcGxhdGZvcm06Ci0gICAgICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdwbGF0Zm9ybScsIHBsYXRmb3JtKQotICAgICAgICBpZiBmdWxsUGxhdGZvcm06Ci0gICAg
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCBmdWxsUGxhdGZvcm0pCi0g
ICAgICAgIGlmIGNvbmZpZ3VyYXRpb246Ci0gICAgICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdj
b25maWd1cmF0aW9uJywgY29uZmlndXJhdGlvbikKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcChwbGF0Zm9ybT0nbWFjJywgZnVsbFBsYXRm
b3JtPSdtYWMtaGlnaHNpZXJyYScsIGNvbmZpZ3VyYXRpb249J3JlbGVhc2UnKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rl
c3QyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAn
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcsICct
LW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVO
YW1lKSwgJy0tcmVsZWFzZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydq
c29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSArCi0g
ICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0czogdGVzdDEsIHRlc3Qy
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9yZW1vdGVf
c3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKHBsYXRmb3JtPSdqc2Mt
b25seScsIGZ1bGxQbGF0Zm9ybT0nanNjLW9ubHknLCBjb25maWd1cmF0aW9uPSdyZWxlYXNlJykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncmVtb3RlcycsICdyZW1vdGUtbWFjaGluZXMuanNv
bicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rl
c3RtYXNtJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3Blcmwn
LCAnVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMnLCAnLS1uby1idWlsZCcs
ICctLW5vLWZhaWwtZmFzdCcsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZp
bGVOYW1lKSwgJy0tcmVsZWFzZScsICctLXJlbW90ZS1jb25maWctZmlsZT1yZW1vdGUtbWFjaGlu
ZXMuanNvbicsICctLW5vLXRlc3RtYXNtJywgJy0tbm8tdGVzdGFpcicsICctLW5vLXRlc3RiMycs
ICctLW5vLXRlc3RkZmcnLCAnLS1uby10ZXN0YXBpJywgJy0tbWVtb3J5LWxpbWl0ZWQnLCAnLS1q
c2Mtb25seSddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2Vs
Zi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgKSArCi0gICAgICAgICAg
ICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VT
Uywgc3RhdGVfc3RyaW5nPSdGb3VuZCBmbGFreSB0ZXN0OiB0ZXN0bWFzbScpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5KU0NUZXN0c1dpdGhvdXRQYXRj
aChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2Vs
Zi5qc29uRmlsZU5hbWUgPSAnanNjX3Jlc3VsdHMuanNvbicKLSAgICAgICAgcmV0dXJuIHNlbGYu
c2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1
cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYp
OgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5KU0NUZXN0c1dpdGhvdXRQYXRjaCgpKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnanNjLW9ubHknKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBz
ZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rp
cj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWphdmFzY3JpcHRjb3JlLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1mYWlsLWZhc3QnLCAn
LS1qc29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSksICctLXJlbGVhc2Un
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZp
bGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAg
ICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRl
X3N0cmluZz0nanNjb3JlLXRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5K
U0NUZXN0c1dpdGhvdXRQYXRjaCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxh
dGZvcm0nLCAnanNjLW9ubHknKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0
aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAg
ICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cGVybCcsICdUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cycsICctLW5vLWJ1
aWxkJywgJy0tbm8tZmFpbC1mYXN0JywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5q
c29uRmlsZU5hbWUpLCAnLS1kZWJ1ZyddLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSc5IGZhaWx1
cmVzIGZvdW5kLicpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2pzY29yZS10ZXN0cyAo
ZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0
QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3Qu
VGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2Fn
ZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVm
IHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgp
Ci0KLSAgICBkZWYgY29uZmlndXJlU3RlcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAo
QW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nf
c3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNj
X2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVy
dW5fc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
anNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbXSkKLSAgICAg
ICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJlID0g
bGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLSAgICAgICAgQW5hbHl6ZUpTQ1Rlc3RzUmVzdWx0cy5z
ZW5kX2VtYWlsX2Zvcl9wcmVfZXhpc3RpbmdfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBO
b25lCi0KLSAgICBkZWYgdGVzdF9zaW5nbGVfbmV3X3N0cmVzc19mYWlsdXJlKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nf
c3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5ieXRlY29kZS1j
YWNoZSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfcmVydW5fc3RyZXNzX3Rlc3Rf
ZmFpbHVyZXMnLCBbJ3N0cmVzcy9mb3JjZS1lcnJvci5qcy5ieXRlY29kZS1jYWNoZSddKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91
bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHN0cmVzcy9mb3JjZS1lcnJvci5qcy5i
eXRlY29kZS1jYWNoZSAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotICAgIGRlZiB0ZXN0X3NpbmdsZV9uZXdfYmluYXJ5X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAg
IHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19iaW5h
cnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19yZXJ1bl9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGb3VuZCAxIG5ldyBKU0Mg
YmluYXJ5IGZhaWx1cmU6IHRlc3RtYXNtIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfbXVsdGlwbGVfbmV3X3N0cmVzc19mYWlsdXJlKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZvciBp
IGluIHJhbmdlKDAsIDMwKV0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2Uo
MCwgMzApXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0
ZV9zdHJpbmc9J0ZvdW5kIDMwIG5ldyBKU0Mgc3RyZXNzIHRlc3QgZmFpbHVyZXM6IHRlc3QxLCB0
ZXN0MCwgdGVzdDMsIHRlc3QyLCB0ZXN0NSwgdGVzdDQsIHRlc3Q3LCB0ZXN0NiwgdGVzdDksIHRl
c3Q4IC4uLiAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X211bHRpcGxlX25ld19iaW5hcnlfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2JpbmFyeV9m
YWlsdXJlcycsIFsndGVzdG1hc20nLCAndGVzdGFpcicsICd0ZXN0YjMnLCAndGVzdGRmZycsICd0
ZXN0YXBpJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19yZXJ1bl9iaW5hcnlfZmFp
bHVyZXMnLCBbJ3Rlc3RtYXNtJywgJ3Rlc3RhaXInLCAndGVzdGIzJywgJ3Rlc3RkZmcnLCAndGVz
dGFwaSddKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRl
X3N0cmluZz0nRm91bmQgNSBuZXcgSlNDIGJpbmFyeSBmYWlsdXJlczogdGVzdGIzLCB0ZXN0bWFz
bSwgdGVzdGFwaSwgdGVzdGRmZywgdGVzdGFpciAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X25ld19zdHJlc3NfYW5kX2JpbmFyeV9mYWls
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdqc2Nfc3RyZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ2VzNi55YW1sL2VzNi9TZXRf
aXRlcmF0b3JfY2xvc2luZy5qcy5kZWZhdWx0J10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2pzY19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RtYXNtJ10pCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1Nl
dF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdG1hc20nXSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3
IEpTQyBiaW5hcnkgZmFpbHVyZTogdGVzdG1hc20sIEZvdW5kIDEgbmV3IEpTQyBzdHJlc3MgdGVz
dCBmYWlsdXJlOiBlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9yX2Nsb3NpbmcuanMuZGVmYXVsdCAo
ZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0
X3N0cmVzc19mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmln
dXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19zdHJlc3NfdGVzdF9mYWls
dXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9y
Y2UtZXJyb3IuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfY2xl
YW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnc3RyZXNzL2ZvcmNlLWVycm9yLmpzLmRl
ZmF1bHQnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0
ZV9zdHJpbmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X2JpbmFyeV9mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RkZmcnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3JlcnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGRmZyddKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdqc2NfY2xlYW5fdHJlZV9iaW5hcnlfZmFpbHVyZXMnLCBbJ3Rlc3RkZmcn
XSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJp
bmc9J1Bhc3NlZCBKU0MgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQot
ICAgIGRlZiB0ZXN0X3N0cmVzc19hbmRfYmluYXJ5X2ZhaWx1cmVfb25fY2xlYW5fdHJlZShzZWxm
KToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnanNjX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWydlczYueWFtbC9lczYvU2V0X2l0ZXJhdG9y
X2Nsb3NpbmcuanMuZGVmYXVsdCddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmlu
YXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pz
Y19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2L1NldF9pdGVyYXRv
cl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3Jl
cnVuX2JpbmFyeV9mYWlsdXJlcycsIFsndGVzdGFpciddKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdqc2NfY2xlYW5fdHJlZV9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsnZXM2LnlhbWwvZXM2
L1NldF9pdGVyYXRvcl9jbG9zaW5nLmpzLmRlZmF1bHQnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnanNjX2NsZWFuX3RyZWVfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YWlyJ10pCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNz
ZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9mbGFreV9zdHJlc3NfYW5kX2JpbmFyeV9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX3N0cmVzc190
ZXN0X2ZhaWx1cmVzJywgWydzdHJlc3MvZm9yY2UtZXJyb3IuanMuZGVmYXVsdCddKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdqc2NfYmluYXJ5X2ZhaWx1cmVzJywgWyd0ZXN0YXBpJ10pCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBk
ZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9zdHJlc3NfZmFpbHVyZXMoc2VsZik6Ci0gICAg
ICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2pzY19z
dHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnanNjX3JlcnVuX3N0cmVzc190ZXN0X2ZhaWx1cmVzJywgWyd0ZXN0MiddKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
Rm91bmQgMSBuZXcgSlNDIHN0cmVzcyB0ZXN0IGZhaWx1cmU6IHRlc3QyIChmYWlsdXJlKScpCi0g
ICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmxha3lfYW5kX2Nv
bnNpc3RlbnRfZmFpbHVyZXNfd2l0aF9jbGVhbl90cmVlX2ZhaWx1cmVzKHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdqc2Nfc3Ry
ZXNzX3Rlc3RfZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2pzY19yZXJ1bl9zdHJlc3NfdGVzdF9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnanNjX2NsZWFuX3RyZWVfc3RyZXNzX3Rlc3RfZmFpbHVy
ZXMnLCBbJ3Rlc3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgSlNDIHRlc3RzJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bldlYktpdFRlc3RzKEJ1aWxkU3Rl
cE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYp
OgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBzZWxmLmpzb25GaWxl
TmFtZSA9ICdsYXlvdXQtdGVzdC1yZXN1bHRzL2Z1bGxfcmVzdWx0cy5qc29uJwotICAgICAgICBz
ZWxmLnJlc3VsdHNfanNvbl9yZWdyZXNzaW9ucyA9ICcnJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsi
aW1wb3J0ZWQiOnsidzNjIjp7IndlYi1wbGF0Zm9ybS10ZXN0cyI6eyJJbmRleGVkREIiOnsiaW50
ZXJsZWF2ZWQtY3Vyc29ycy1sYXJnZS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBl
Y3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19LCJ3YXNtIjp7ImpzYXBpIjp7ImludGVyZmFj
ZS5hbnkuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0
dWFsIjoiVEVYVCJ9LCJpbnN0YW5jZSI6eyJjb25zdHJ1Y3Rvci1iYWQtaW1wb3J0cy5hbnkuaHRt
bCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVY
VCJ9fSwiZ2xvYmFsIjp7ImNvbnN0cnVjdG9yLmFueS5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJ
T04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn0sImNvbnN0cnVjdG9yLmFueS53
b3JrZXIuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0
dWFsIjoiVEVYVCJ9LCJ0b1N0cmluZy5hbnkuaHRtbCI6eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwi
ZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fSwiY29uc3RydWN0b3IiOnsiaW5zdGFu
dGlhdGUtYmFkLWltcG9ydHMuYW55Lmh0bWwiOnsicmVwb3J0IjoiUkVHUkVTU0lPTiIsImV4cGVj
dGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQifSwiaW5zdGFudGlhdGUtYmFkLWltcG9ydHMuYW55
Lndvcmtlci5odG1sIjp7InJlcG9ydCI6IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJh
Y3R1YWwiOiJURVhUIn19LCJpbnRlcmZhY2UuYW55Lndvcmtlci5odG1sIjp7InJlcG9ydCI6IlJF
R1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJibGluayI6
eyJzdG9yYWdlIjp7ImluZGV4ZWRkYiI6eyJibG9iLXZhbGlkLWJlZm9yZS1jb21taXQuaHRtbCI6
eyJyZXBvcnQiOiJSRUdSRVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVElNRU9V
VCIsImhhc19zdGRlcnIiOnRydWV9fX19fX0sInNraXBwZWQiOjIzMjU2LCJudW1fcmVncmVzc2lv
bnMiOjEwLCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0ZWQiOnRydWUsIm51bV9taXNzaW5n
IjowLCJsYXlvdXRfdGVzdHNfZGlyIjoiL1ZvbHVtZXMvRGF0YS93b3JrZXIvaU9TLTEyLVNpbXVs
YXRvci1XSzItVGVzdHMtRVdTL2J1aWxkL0xheW91dFRlc3RzIiwidmVyc2lvbiI6NCwibnVtX3Bh
c3NlcyI6MzIwNTYsInBpeGVsX3Rlc3RzX2VuYWJsZWQiOmZhbHNlLCJkYXRlIjoiMDY6MjFBTSBv
biBKdWx5IDE1LCAyMDE5IiwiaGFzX3ByZXR0eV9wYXRjaCI6dHJ1ZSwiZml4YWJsZSI6MjMyNjcs
Im51bV9mbGFreSI6MCwidXNlc19leHBlY3RhdGlvbnNfZmlsZSI6dHJ1ZX0pOwotICAgICAgICAn
JycKLSAgICAgICAgc2VsZi5yZXN1bHRzX2pzb25fZmxha2VzID0gJycnQUREX1JFU1VMVFMoeyJ0
ZXN0cyI6eyJodHRwIjp7InRlc3RzIjp7IndvcmtlcnMiOnsic2VydmljZSI6eyJzZXJ2aWNlLXdv
cmtlci1yZXNvdXJjZS10aW1pbmcuaHR0cHMuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVj
dGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyIsImhhc19zdGRlcnIiOnRydWV9fX0s
InhtbGh0dHByZXF1ZXN0Ijp7InBvc3QtY29udGVudC10eXBlLWRvY3VtZW50Lmh0bWwiOnsicmVw
b3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIFBBU1MifX19
fSwiaW1wb3J0ZWQiOnsiYmxpbmsiOnsic3RvcmFnZSI6eyJpbmRleGVkZGIiOnsiYmxvYi12YWxp
ZC1iZWZvcmUtY29tbWl0Lmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1Mi
LCJhY3R1YWwiOiJUSU1FT1VUIFBBU1MiLCJoYXNfc3RkZXJyIjp0cnVlfX19LCJmYXN0Ijp7InRl
eHQiOnsiaW50ZXJuYXRpb25hbCI6eyJyZXBhaW50LWdseXBoLWJvdW5kcy5odG1sIjp7InJlcG9y
dCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiSU1BR0UgUEFTUyIsInJlZnRl
c3RfdHlwZSI6WyI9PSJdLCJpbWFnZV9kaWZmX3BlcmNlbnQiOjAuMDh9fX19fX19LCJza2lwcGVk
IjoxMzE3NiwibnVtX3JlZ3Jlc3Npb25zIjowLCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJydXB0
ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVzL0Rh
dGEvd29ya2VyL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9idWlsZC9MYXlvdXRUZXN0
cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTg1LCJwaXhlbF90ZXN0c19lbmFibGVkIjpm
YWxzZSwiZGF0ZSI6IjA2OjU0QU0gb24gSnVseSAxNywgMjAxOSIsImhhc19wcmV0dHlfcGF0Y2gi
OnRydWUsImZpeGFibGUiOjU1MzU2LCJudW1fZmxha3kiOjQsInVzZXNfZXhwZWN0YXRpb25zX2Zp
bGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0gICAgICAgIHNlbGYucmVzdWx0c19qc29uX21peF9m
bGFrZXNfYW5kX3JlZ3Jlc3Npb24gPSAnJydBRERfUkVTVUxUUyh7InRlc3RzIjp7Imh0dHAiOnsi
dGVzdHMiOnsiSW5kZXhlZERCIjp7ImNvbGxlY3QtSURCLW9iamVjdHMuaHR0cHMuaHRtbCI6eyJy
ZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRFWFQgUEFTUyJ9fSwi
eG1saHR0cHJlcXVlc3QiOnsib24tbmV0d29yay10aW1lb3V0LWVycm9yLWR1cmluZy1wcmVmbGln
aHQuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJ
TUVPVVQgUEFTUyJ9fX19LCJ0cmFuc2l0aW9ucyI6eyJsZW5ndGhzaXplLXRyYW5zaXRpb24tdG8t
ZnJvbS1hdXRvLmh0bWwiOnsicmVwb3J0IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1
YWwiOiJUSU1FT1VUIFBBU1MifX0sImltcG9ydGVkIjp7ImJsaW5rIjp7InN0b3JhZ2UiOnsiaW5k
ZXhlZGRiIjp7ImJsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC5odG1sIjp7InJlcG9ydCI6IkZMQUtZ
IiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVElNRU9VVCBQQVNTIiwiaGFzX3N0ZGVyciI6
dHJ1ZX19fX19LCJmYXN0Ijp7InRleHQiOnsiZm9udC13ZWlnaHQtZmFsbGJhY2suaHRtbCI6eyJy
ZXBvcnQiOiJGTEFLWSIsImV4cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyIs
Imhhc19zdGRlcnIiOnRydWUsInJlZnRlc3RfdHlwZSI6WyI9PSJdfX0sInNjcm9sbGluZyI6eyJp
b3MiOnsicmVjb25jaWxlLWxheWVyLXBvc2l0aW9uLXJlY3Vyc2l2ZS5odG1sIjp7InJlcG9ydCI6
IlJFR1JFU1NJT04iLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJURVhUIn19fX19LCJza2lw
cGVkIjoxMzE3NCwibnVtX3JlZ3Jlc3Npb25zIjoxLCJvdGhlcl9jcmFzaGVzIjp7fSwiaW50ZXJy
dXB0ZWQiOmZhbHNlLCJudW1fbWlzc2luZyI6MCwibGF5b3V0X3Rlc3RzX2RpciI6Ii9Wb2x1bWVz
L0RhdGEvd29ya2VyL2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9idWlsZC9MYXlvdXRU
ZXN0cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTU4LCJwaXhlbF90ZXN0c19lbmFibGVk
IjpmYWxzZSwiZGF0ZSI6IjExOjI4QU0gb24gSnVseSAxNiwgMjAxOSIsImhhc19wcmV0dHlfcGF0
Y2giOnRydWUsImZpeGFibGUiOjU1MzI5LCJudW1fZmxha3kiOjUsInVzZXNfZXhwZWN0YXRpb25z
X2ZpbGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0KLSAgICAgICAgc2VsZi5yZXN1bHRzX2pzb25f
d2l0aF9uZXdsaW5lcyA9ICcnJ0FERF9SRVNVTFRTKHsidGVzdHMiOnsiaHR0cCI6eyJ0ZXN0cyI6
eyJJbmRleGVkREIiOnsiY29sbGVjdC1JREItb2JqZWN0cy5odHRwcy5odG1sIjp7InJlcG9ydCI6
IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCBQQVNTIn19LCJ4bWxodHRw
cmVxdWVzdCI6eyJvbi1uZXR3b3JrLXRpbWVvdXQtZXJyb3ItZHVyaW5nLXByZWZsaWdodC5odG1s
Ijp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVElNRU9VVCBQ
QVNTIn19fX0sInRyYW5zaXRpb25zIjp7Imxlbmd0aHNpemUtdHJhbnMKLWl0aW9uLXRvLWZyb20t
YXV0by5odG1sIjp7InJlcG9ydCI6IkZMQUtZIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoi
VElNRU9VVCBQQVNTIn19LCJpbXBvcnRlZCI6eyJibGluayI6eyJzdG9yYWdlIjp7ImluZGV4ZWRk
YiI6eyJibG9iLXZhbGlkLWJlZm9yZS1jb21taXQuaHRtbCI6eyJyZXBvcnQiOiJGTEFLWSIsImV4
cGVjdGVkIjoiUEFTUyIsImFjdHVhbCI6IlRJTUVPVVQgUEFTUyIsImhhc19zdGRlcnIiOnRydWV9
fX19fSwiZmFzdCI6eyJ0ZXh0Ijp7ImZvbnQtd2VpZ2h0LWZhbGxiYWNrLmh0bWwiOnsicmVwb3J0
IjoiRkxBS1kiLCJleHBlY3RlZCI6IlBBU1MiLCJhY3R1YWwiOiJUSU1FT1VUIFBBU1MiLCJoYXNf
c3RkZXJyIjp0cnVlLCJyZWZ0ZXN0X3R5cGUiOlsiPT0iXX19LCJzY3JvbGxpbmciOnsiaW9zIjp7
InJlY29uY2lsZS1sYXllci1wb3NpdGlvbi1yZWN1cnNpdmUuaHRtbCI6eyJyZXBvcnQiOiJSRUdS
RVNTSU9OIiwiZXhwZWN0ZWQiOiJQQVNTIiwiYWN0dWFsIjoiVEVYVCJ9fX19fSwic2tpcHBlZCI6
MTMxNzQsIm51bV9yZWdyZXNzaW9ucyI6MSwib3RoZXJfY3Jhc2hlcyI6e30sImludGVycnVwdGVk
IjpmYWxzZSwibnVtX21pc3NpbmciOjAsImxheW91dF90ZXN0c19kaXIiOiIvVm9sdW1lcy9EYXRh
L3dvcmtlci9pT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MvYnVpbGQvTGF5b3V0VGVzCi10
cyIsInZlcnNpb24iOjQsIm51bV9wYXNzZXMiOjQyMTU4LCJwaXhlbF90ZXN0c19lbmFibGVkIjpm
YWxzZSwiZGF0ZSI6IjExOjI4QU0gb24gSnVseSAxNiwgMjAxOSIsImhhc19wcmV0dHlfcGF0Y2gi
OnRydWUsImZpeGFibGUiOjU1MzI5LCJudW1fZmxha3kiOjUsInVzZXNfZXhwZWN0YXRpb25zX2Zp
bGUiOnRydWV9KTsKLSAgICAgICAgJycnCi0KLSAgICAgICAgc2VsZi5yZXN1bHRzX3dpdGhfbWlz
c2luZ19yZXN1bHRzID0gJycnQUREX1JFU1VMVFMoeyJ0ZXN0cyI6eyJodHRwIjp7IndwdCI6eyJj
c3MiOnsiY3NzLWhpZ2hsaWdodC1hcGkiOnsiaGlnaGxpZ2h0LWltYWdlLWV4cGVjdGVkLW1pc21h
dGNoZWQuaHRtbCI6eyJyZXBvcnQiOiJNSVNTSU5HIiwiZXhwZWN0ZWQiOiJQQVNTIiwiaXNfbWlz
c2luZ190ZXh0Ijp0cnVlLCJhY3R1YWwiOiJNSVNTSU5HIn0sImhpZ2hsaWdodC1pbWFnZS5odG1s
Ijp7InJlcG9ydCI6Ik1JU1NJTkciLCJleHBlY3RlZCI6IlBBU1MiLCJpc19taXNzaW5nX3RleHQi
OnRydWUsImFjdHVhbCI6Ik1JU1NJTkcifX19fX19LCAiaW50ZXJydXB0ZWQiOmZhbHNlfSk7Ci0g
ICAgICAgICcnJwotCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0
ZXAoKQotCi0gICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKFJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAgIHNlbGYucHJvcGVydHlfZXhjZWVkX2ZhaWx1
cmVfbGltaXQgPSAnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcKLSAgICAgICAg
c2VsZi5wcm9wZXJ0eV9mYWlsdXJlcyA9ICdmaXJzdF9ydW5fZmFpbHVyZXMnCi0KLSAgICBkZWYg
dGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBz
ZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0
cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0t
cmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAn
LS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICct
LXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAg
ICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF93YXJuaW5ncyhzZWxmKToKLSAgICAg
ICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBs
YXRmb3JtJywgJ2lvcy1zaW11bGF0b3InKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywg
Jy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRz
JywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsICctLXJlbGVhc2UnLCAnLS1yZXN1bHRzLWRpcmVj
dG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxvZ2dpbmcnLCAnLS1l
eGl0LWFmdGVyLW4tZmFpbHVyZXMnLCAnMzAnLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMAotICAgICAgICAgICAgKyBF
eHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1VuZXhwZWN0ZWQgZmxha2luZXNzOiB0
aW1lb3V0cyAoMikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydGVkL2JsaW5r
L3N0b3JhZ2UvaW5kZXhlZGRiL2Jsb2ItdmFsaWQtYmVmb3JlLWNvbW1pdC5odG1sIFsgVGltZW91
dCBQYXNzIF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UvaW5kZXhlZGRi
L21vZGVybi9kZWxldGVpbmRleC0yLmh0bWwgWyBUaW1lb3V0IFBhc3MgXScnJyksCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1XQVJOSU5HUywgc3RhdGVfc3Ry
aW5nPScyIGZsYWtlcycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVm
IHRlc3Rfc2tpcF9mb3JfcmV2ZXJ0X3BhdGNoZXNfb25fY29tbWl0X3F1ZXVlKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWls
ZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxs
UGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlv
bicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3JldmVydCcsIFRydWUpCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U0tJUFBFRCwgc3RhdGVfc3RyaW5nPSds
YXlvdXQtdGVzdHMgKHNraXBwZWQpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9za2lwX2Zvcl9tYWNfd2syX3Bhc3NlZF9wYXRjaF9vbl9jb21taXRfcXVl
dWUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdm
dWxsUGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJh
dGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Bhc3NlZF9tYWNfd2sy
JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TS0lQUEVELCBzdGF0
ZV9zdHJpbmc9J2xheW91dC10ZXN0cyAoc2tpcHBlZCknKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3Jlc3VsdHNfanNvbl9yZWdyZXNzaW9uKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVt
b3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFt
ZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJr
aXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10
ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJl
c3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9n
Z2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10
ZXN0cyddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyAyCi0gICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNvbicsIHN0ZG91dD1zZWxmLnJlc3VsdHNfanNv
bl9yZWdyZXNzaW9ucyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cyAoZmFpbHVyZSknKQotICAg
ICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5n
ZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWlsdXJlX2xpbWl0KSwgVHJ1ZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJvcGVydHlfZmFp
bHVyZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy9JbmRleGVkREIvaW50ZXJsZWF2ZWQtY3Vyc29ycy1sYXJnZS5odG1sIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvd2FzbS9qc2FwaS9pbnRlcmZhY2UuYW55Lmh0bWwiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2lu
c3RhbmNlL2NvbnN0cnVjdG9yLWJhZC1pbXBvcnRzLmFueS5odG1sIiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2FzbS9qc2Fw
aS9nbG9iYWwvY29uc3RydWN0b3IuYW55Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC9j
b25zdHJ1Y3Rvci5hbnkud29ya2VyLmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2dsb2JhbC90b1N0
cmluZy5hbnkuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dhc20vanNhcGkvaW50ZXJmYWNlLmFueS53b3JrZXIuaHRt
bCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3dhc20vanNhcGkvY29uc3RydWN0b3IvaW5zdGFudGlhdGUtYmFkLWltcG9ydHMu
YW55Lmh0bWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93YXNtL2pzYXBpL2NvbnN0cnVjdG9yL2luc3RhbnRpYXRlLWJhZC1p
bXBvcnRzLmFueS53b3JrZXIuaHRtbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJp
bXBvcnRlZC9ibGluay9zdG9yYWdlL2luZGV4ZWRkYi9ibG9iLXZhbGlkLWJlZm9yZS1jb21taXQu
aHRtbCJdKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3Jlc3VsdHNf
anNvbl9mbGFrZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAg
c2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtk
aXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNl
bGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1Nj
cmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tc2hvdy1yZXN1bHRz
JywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLCAnLS1y
ZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICct
LWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzJywgJzMwJywgJy0t
c2tpcC1mYWlsaW5nLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg
ICAgICArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNl
bGYucmVzdWx0c19qc29uX2ZsYWtlcyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RP
dXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMn
KQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWlsdXJlX2xpbWl0KSwgRmFs
c2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3Bl
cnR5X2ZhaWx1cmVzKSwgW10pCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfcGFy
c2VfcmVzdWx0c19qc29uX2ZsYWtlc19hbmRfcmVncmVzc2lvbnMoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9y
bScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJh
dGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tbm8tc2hvdy1yZXN1bHRzJywgJy0tbm8tbmV3LXRlc3QtcmVzdWx0cycsICct
LWNsb2JiZXItb2xkLXJlc3VsdHMnLCAnLS1yZWxlYXNlJywgJy0tcmVzdWx0cy1kaXJlY3Rvcnkn
LCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywgJy0tZXhpdC1h
ZnRlci1uLWZhaWx1cmVzJywgJzMwJywgJy0tc2tpcC1mYWlsaW5nLXRlc3RzJ10sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDIKLSAgICAgICAgICAgICsgRXhwZWN0
U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYucmVzdWx0c19qc29uX21peF9mbGFrZXNfYW5k
X3JlZ3Jlc3Npb24pLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZhaWx1cmUpJykKLSAgICAg
ICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0
UHJvcGVydHkoc2VsZi5wcm9wZXJ0eV9leGNlZWRfZmFpbHVyZV9saW1pdCksIEZhbHNlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoc2VsZi5wcm9wZXJ0eV9mYWls
dXJlcyksIFsnZmFzdC9zY3JvbGxpbmcvaW9zL3JlY29uY2lsZS1sYXllci1wb3NpdGlvbi1yZWN1
cnNpdmUuaHRtbCddKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3Jl
c3VsdHNfanNvbl93aXRoX25ld2xpbmVzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0
ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVs
YXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFz
ZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhv
bicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5v
LXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1y
ZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0
LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJl
cycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKyAyCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnanNv
bicsIHN0ZG91dD1zZWxmLnJlc3VsdHNfanNvbl93aXRoX25ld2xpbmVzKSwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
bGF5b3V0LXRlc3RzIChmYWlsdXJlKScpCi0gICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KHNlbGYucHJvcGVydHlfZXhj
ZWVkX2ZhaWx1cmVfbGltaXQpLCBGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxm
LmdldFByb3BlcnR5KHNlbGYucHJvcGVydHlfZmFpbHVyZXMpLCBbJ2Zhc3Qvc2Nyb2xsaW5nL2lv
cy9yZWNvbmNpbGUtbGF5ZXItcG9zaXRpb24tcmVjdXJzaXZlLmh0bWwnXSkKLSAgICAgICAgcmV0
dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZXN1bHRzX2pzb25fd2l0aF9taXNzaW5nX3Jl
c3VsdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5l
eHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3dr
ZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNv
bkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cycsICctLW5vLWJ1aWxkJywgJy0tbm8tc2hvdy1yZXN1bHRzJywgJy0t
bm8tbmV3LXRlc3QtcmVzdWx0cycsICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLCAnLS1yZWxlYXNl
JywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRlc3QtcmVzdWx0cycsICctLWRlYnVn
LXJ3dC1sb2dnaW5nJywgJy0tZXhpdC1hZnRlci1uLWZhaWx1cmVzJywgJzMwJywgJy0tc2tpcC1m
YWlsaW5nLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAr
IDIKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdqc29uJywgc3Rkb3V0PXNlbGYucmVz
dWx0c193aXRoX21pc3NpbmdfcmVzdWx0cyksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2xheW91dC10ZXN0cyAoZmFp
bHVyZSknKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxmLnByb3BlcnR5X2V4Y2VlZF9mYWlsdXJlX2xpbWl0
KSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eShzZWxm
LnByb3BlcnR5X2ZhaWx1cmVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2h0dHAvd3B0
L2Nzcy9jc3MtaGlnaGxpZ2h0LWFwaS9oaWdobGlnaHQtaW1hZ2UtZXhwZWN0ZWQtbWlzbWF0Y2hl
ZC5odG1sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0dHAvd3B0L2Nzcy9jc3MtaGln
aGxpZ2h0LWFwaS9oaWdobGlnaHQtaW1hZ2UuaHRtbCddKQotICAgICAgICByZXR1cm4gcmMKLQot
ICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmln
dXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMt
aGlnaHNpZXJyYScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAn
ZGVidWcnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9n
ZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAg
ICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9Wydw
eXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAn
LS1uby1zaG93LXJlc3VsdHMnLCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1v
bGQtcmVzdWx0cycsICctLWRlYnVnJywgJy0tcmVzdWx0cy1kaXJlY3RvcnknLCAnbGF5b3V0LXRl
c3QtcmVzdWx0cycsICctLWRlYnVnLXJ3dC1sb2dnaW5nJywgICctLWV4aXQtYWZ0ZXItbi1mYWls
dXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdV
bmV4cGVjdGVkIGVycm9yLicpCi0gICAgICAgICAgICArIDI1NCwKLSAgICAgICAgKQotICAgICAg
ICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J2xheW91dC10
ZXN0cyAocmV0cnkpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAg
IHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3Jr
ZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBz
ZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZh
bHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9T
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0
cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0t
cmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0LXJlc3VsdHMnLCAn
LS1kZWJ1Zy1yd3QtbG9nZ2luZycsICAnLS1leGl0LWFmdGVyLW4tZmFpbHVyZXMnLCAnMzAnLCAn
LS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAg
ICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3Vu
ZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZhaWx1cmUp
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNz
X3dwdF9pbXBvcnRfYm90KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2F1dGhvcicsICd3ZWJraXQtd3B0LWltcG9ydC1i
b3RAaWdhbGlhLmNvbScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1i
dWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1j
bG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5Jywg
J2xheW91dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICdpbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0UmVSdW5XZWJLaXRUZXN0cyhUZXN0
UnVuV2ViS2l0VGVzdHMpOgotICAgIGRlZiBjb25maWd1cmVTdGVwKHNlbGYpOgotICAgICAgICBz
ZWxmLnNldHVwU3RlcChSZVJ1bldlYktpdFRlc3RzKCkpCi0gICAgICAgIHNlbGYucHJvcGVydHlf
ZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGlt
aXQnCi0gICAgICAgIHNlbGYucHJvcGVydHlfZmFpbHVyZXMgPSAnc2Vjb25kX3J1bl9mYWlsdXJl
cycKLSAgICAgICAgUmVSdW5XZWJLaXRUZXN0cy5zZW5kX2VtYWlsX2Zvcl9mbGFreV9mYWlsdXJl
ID0gbGFtYmRhIHNlbGYsIHRlc3Q6IE5vbmUKLQotICAgIGRlZiB0ZXN0X2ZsYWt5X2ZhaWx1cmVz
X2luX2ZpcnN0X3J1bihzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3InKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVhc2UnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbJ3Rlc3QxJywgJ3Rlc3Qy
J10pCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxl
cz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhv
bicsICdUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5v
LXNob3ctcmVzdWx0cycsICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1y
ZXN1bHRzJywgJy0tcmVsZWFzZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91dC10ZXN0
LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJl
cycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAgICAgICAg
ICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRlc3RzJykK
LSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuZ2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknKSwgJ0ZvdW5kIGZsYWt5IHRlc3RzOiB0ZXN0
MSwgdGVzdDInKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBUZXN0UnVuV2ViS2l0VGVz
dHNXaXRob3V0UGF0Y2goQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVl
Ci0gICAgICAgIHNlbGYuanNvbkZpbGVOYW1lID0gJ2xheW91dC10ZXN0LXJlc3VsdHMvZnVsbF9y
ZXN1bHRzLmpzb24nCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0
ZXAoKQotCi0gICAgZGVmIGNvbmZpZ3VyZVN0ZXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKFJ1bldlYktpdFRlc3RzV2l0aG91dFBhdGNoKCkpCi0gICAgICAgIHNlbGYucHJvcGVydHlf
ZXhjZWVkX2ZhaWx1cmVfbGltaXQgPSAnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJl
X2xpbWl0JwotICAgICAgICBzZWxmLnByb3BlcnR5X2ZhaWx1cmVzID0gJ2NsZWFuX3RyZWVfcnVu
X2ZhaWx1cmVzJwotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdpT1Mt
MTMtU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWlsZG51bWJlcicsICcxMjMnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCd3b3JrZXJuYW1l
JywgJ2V3czEyNicpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxm
LmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0n
LCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRp
b24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29t
bWFuZD1bJ3B5dGhvbicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICctLW5vLWJ1aWxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLW5v
LXNob3ctcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uby1u
ZXctdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWNs
b2JiZXItb2xkLXJlc3VsdHMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0t
cmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1yZXN1bHRzLWRp
cmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLWRlYnVnLXJ3dC1sb2dnaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycsICczMCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nbGF5b3V0LXRlc3Rz
JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJl
KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxl
TmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnVG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXRlc3RzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICctLW5vLWJ1aWxkJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLW5vLXNob3ctcmVzdWx0cycsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICctLWNsb2JiZXItb2xkLXJlc3VsdHMnLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJy0tcmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlvdXQtdGVzdC1yZXN1bHRzJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRlYnVnLXJ3dC1sb2dnaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWV4aXQtYWZ0ZXItbi1mYWlsdXJlcycs
ICczMCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1za2lwLWZhaWxpbmct
dGVzdHMnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0
U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQotICAgICAgICAg
ICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFJ1bldlYktpdDFUZXN0cyhCdWlsZFN0
ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxm
KToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2VsZi5qc29uRmls
ZU5hbWUgPSAnbGF5b3V0LXRlc3QtcmVzdWx0cy9mdWxsX3Jlc3VsdHMuanNvbicKLSAgICAgICAg
cmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgot
ICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9z
dWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXQxVGVzdHMoKSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy0xMScpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBz
ZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rp
cj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2Vs
Zi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2Ny
aXB0cy9ydW4td2Via2l0LXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1uby1zaG93LXJlc3VsdHMn
LCAnLS1uby1uZXctdGVzdC1yZXN1bHRzJywgJy0tY2xvYmJlci1vbGQtcmVzdWx0cycsICctLWRl
YnVnJywgJy0tZHVtcC1yZW5kZXItdHJlZScsICctLXJlc3VsdHMtZGlyZWN0b3J5JywgJ2xheW91
dC10ZXN0LXJlc3VsdHMnLCAnLS1kZWJ1Zy1yd3QtbG9nZ2luZycsICctLWV4aXQtYWZ0ZXItbi1m
YWlsdXJlcycsICczMCcsICctLXNraXAtZmFpbGluZy10ZXN0cyddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRl
c3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWls
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5XZWJLaXQxVGVzdHMoKSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ2lvcy0xMScpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxm
Lmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3Jp
cHRzL3J1bi13ZWJraXQtdGVzdHMnLCAnLS1uby1idWlsZCcsICctLW5vLXNob3ctcmVzdWx0cycs
ICctLW5vLW5ldy10ZXN0LXJlc3VsdHMnLCAnLS1jbG9iYmVyLW9sZC1yZXN1bHRzJywgJy0tcmVs
ZWFzZScsICctLWR1bXAtcmVuZGVyLXRyZWUnLCAnLS1yZXN1bHRzLWRpcmVjdG9yeScsICdsYXlv
dXQtdGVzdC1yZXN1bHRzJywgJy0tZGVidWctcnd0LWxvZ2dpbmcnLCAnLS1leGl0LWFmdGVyLW4t
ZmFpbHVyZXMnLCAnMzAnLCAnLS1za2lwLWZhaWxpbmctdGVzdHMnXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91
dD0nOSBmYWlsdXJlcyBmb3VuZC4nKQotICAgICAgICAgICAgKyAyLAotICAgICAgICApCi0gICAg
ICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdsYXlv
dXQtdGVzdHMgKGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAg
ICBkZWYgdGVzdF9za2lwX2Zvcl9yZXZlcnRfcGF0Y2hlc19vbl9jb21taXRfcXVldWUoc2VsZik6
Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bldlYktpdDFUZXN0cygpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3JldmVydCcsIFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U0tJUFBF
RCwgc3RhdGVfc3RyaW5nPSdsYXlvdXQtdGVzdHMgKHNraXBwZWQpJykKLSAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMo
QnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVy
biBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIGNvbmZpZ3VyZVN0
ZXAoc2VsZik6Ci0gICAgICAgIEFuYWx5emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9m
b3JfZmxha3lfZmFpbHVyZSA9IGxhbWJkYSBzZWxmLCB0ZXN0OiBOb25lCi0gICAgICAgIEFuYWx5
emVMYXlvdXRUZXN0c1Jlc3VsdHMuc2VuZF9lbWFpbF9mb3JfcHJlX2V4aXN0aW5nX2ZhaWx1cmUg
PSBsYW1iZGEgc2VsZiwgdGVzdDogTm9uZQotICAgICAgICBzZWxmLnNldHVwU3RlcChBbmFseXpl
TGF5b3V0VGVzdHNSZXN1bHRzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3Jl
c3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBGYWxzZSkKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2ZhaWx1cmVfbGltaXQnLCBGYWxzZSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xp
bWl0JywgRmFsc2UpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2Zh
aWx1cmVzJywgW10pCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX2ludHJvZHVjZWRfYnlfcGF0Y2go
c2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsianF1ZXJ5L29mZnNldC5odG1sIl0pCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbImpxdWVyeS9vZmZz
ZXQuaHRtbCJdKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0
YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgdGVzdCBmYWlsdXJlOiBqcXVlcnkvb2Zmc2V0Lmh0bWwg
KGZhaWx1cmUpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9mYWlsdXJlX29uX2NsZWFuX3RyZWUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3Rl
cCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsianF1
ZXJ5L29mZnNldC5odG1sIl0pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5f
ZmFpbHVyZXMnLCBbImpxdWVyeS9vZmZzZXQuaHRtbCJdKQotICAgICAgICBzZWxmLnNldFByb3Bl
cnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsianF1ZXJ5L29mZnNldC5odG1sIl0pCi0g
ICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQ
YXNzZWQgbGF5b3V0IHRlc3RzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknKSwgJ0Zv
dW5kIDEgcHJlLWV4aXN0aW5nIHRlc3QgZmFpbHVyZToganF1ZXJ5L29mZnNldC5odG1sJykKLSAg
ICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mbGFreV9hbmRfY29uc2lzdGVudF9mYWls
dXJlc193aXRob3V0X2NsZWFuX3RyZWVfZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29u
ZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ2lP
Uy0xMy1TaW11bGF0b3ItV0syLVRlc3RzLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInXSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZvdW5kIDEgbmV3
IHRlc3QgZmFpbHVyZTogdGVzdDEgKGZhaWx1cmUpJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0
ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z3ppbGxh
X2NvbW1lbnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0
UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksICdGb3VuZCAxIG5ldyB0ZXN0IGZhaWx1
cmU6IHRlc3QxJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9jb25zaXN0ZW50
X2ZhaWx1cmVfd2l0aG91dF9jbGVhbl90cmVlX2ZhaWx1cmVzX2NvbW1pdF9xdWV1ZShzZWxmKToK
LSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
YnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Zmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MSddKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMSBuZXcgdGVzdCBmYWls
dXJlOiB0ZXN0MSAoZmFpbHVyZSknKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90
ZXh0JyksICdGb3VuZCAxIG5ldyB0ZXN0IGZhaWx1cmU6IHRlc3QxJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScpLCAnRm91
bmQgMSBuZXcgdGVzdCBmYWlsdXJlOiB0ZXN0MScpCi0gICAgICAgIHJldHVybiByYwotCi0gICAg
ZGVmIHRlc3RfZmxha3lfYW5kX2luY29uc2lzdGVudF9mYWlsdXJlc193aXRob3V0X2NsZWFuX3Ry
ZWVfZmFpbHVyZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDIn
XSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVz
dDMnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotICAgIGRlZiB0ZXN0X2ZsYWt5X2ZhaWx1cmVzX2luX2ZpcnN0X3J1bihzZWxmKToKLSAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmly
c3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQYXNzZWQgbGF5b3V0IHRlc3RzJykK
LSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuZ2V0UHJvcGVydHkoJ2J1aWxkX3N1bW1hcnknKSwgJyBGb3VuZCBmbGFreSB0ZXN0czogdGVz
dDEsIHRlc3QyJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mbGFreV9hbmRf
aW5jb25zaXN0ZW50X2ZhaWx1cmVzX3dpdGhfY2xlYW5fdHJlZV9mYWlsdXJlcyhzZWxmKToKLSAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmly
c3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MyddKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsndGVzdDEnLCAndGVzdDInLCAn
dGVzdDMnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0
ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAgICByYyA9IHNlbGYucnVuU3Rl
cCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfc3Vt
bWFyeScpLCAnRm91bmQgMyBwcmUtZXhpc3RpbmcgdGVzdCBmYWlsdXJlczogdGVzdDEsIHRlc3Qy
LCB0ZXN0MyBGb3VuZCBmbGFreSB0ZXN0czogdGVzdDEsIHRlc3QyLCB0ZXN0MycpCi0gICAgICAg
IHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmxha3lfYW5kX2NvbnNpc3RlbnRfZmFpbHVyZXNf
d2l0aF9jbGVhbl90cmVlX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0
ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9ydW5fZmFpbHVyZXMnLCBbJ3Rl
c3QxJywgJ3Rlc3QyJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFp
bHVyZXMnLCBbJ3Rlc3QxJ10pCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVf
cnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MiddKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGFzc2VkIGxheW91dCB0ZXN0cycp
Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfbWlsZGx5X2Zs
YWt5X3BhdGNoX3dpdGhfc29tZV90cmVlX3JlZG5lc3NfYW5kX2ZsYWtpbmVzcyhzZWxmKToKLSAg
ICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmly
c3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0MicsICd0ZXN0MyddKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0MScsICd0ZXN0Midd
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsn
dGVzdDEnLCAndGVzdDInLCAndGVzdDQnXSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBsYXlvdXQgdGVzdHMnKQotICAgICAg
ICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQ
cm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScpLCAnRm91bmQgMyBwcmUtZXhpc3RpbmcgdGVzdCBmYWls
dXJlczogdGVzdDEsIHRlc3QyLCB0ZXN0NCBGb3VuZCBmbGFreSB0ZXN0OiB0ZXN0MycpCi0gICAg
ICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmlyc3RfcnVuX2V4Y2VlZF9mYWlsdXJlX2xp
bWl0KHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyZVN0ZXAoKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgIFsndGVzdHt9Jy5m
b3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzApXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFtdKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFp
bHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1aWxkIChyZXRyeSknKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3NlY29uZF9ydW5f
ZXhjZWVkX2ZhaWx1cmVfbGltaXQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29uZmlndXJlU3RlcCgp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFtdKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1p
dCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMn
LCAgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuYWJsZSB0byBj
b25maXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5n
IGJ1aWxkIChyZXRyeSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X2NsZWFuX3RyZWVfZXhjZWVkX2ZhaWx1cmVfbGltaXQoc2VsZik6Ci0gICAgICAgIHNl
bGYuY29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9m
YWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1
bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5f
dHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFpbHVyZXMnLCAgWyd0ZXN0e30nLmZvcm1hdChp
KSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PVJFVFJZLCBzdGF0ZV9zdHJpbmc9J1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFpbHVy
ZXMgYXJlIGludHJvZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1aWxkIChyZXRyeSknKQotICAg
ICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2NsZWFuX3RyZWVfZXhj
ZWVkX2ZhaWx1cmVfbGltaXRfd2l0aF90cmlnZ2VyZWRfYnkoc2VsZik6Ci0gICAgICAgIHNlbGYu
Y29uZmlndXJlU3RlcCgpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywg
J2lPUy0xMy1TaW11bGF0b3ItV0syLVRlc3RzLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3RyaWdnZXJlZF9ieScsICdpb3MtMTMtc2ltLWJ1aWxkLWV3cycpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVzdDEnXSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0
JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY2xlYW5fdHJlZV9ydW5fZmFpbHVy
ZXMnLCAgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQotICAgICAg
ICBtZXNzYWdlID0gJ1VuYWJsZSB0byBjb25maXJtIGlmIHRlc3QgZmFpbHVyZXMgYXJlIGludHJv
ZHVjZWQgYnkgcGF0Y2gsIHJldHJ5aW5nIGJ1aWxkJwotICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz1tZXNzYWdlKQotICAgICAgICByYyA9IHNl
bGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgn
YnVpbGRfc3VtbWFyeScpLCBtZXNzYWdlKQotICAgICAgICByZXR1cm4gcmMKLQotICAgIGRlZiB0
ZXN0X2NsZWFuX3RyZWVfaGFzX2xvdF9vZl9mYWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5j
b25maWd1cmVTdGVwKCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVzdWx0c19l
eGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Zp
cnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwg
MzApXSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3Jlc3VsdHNfZXhjZWVkX2Zh
aWx1cmVfbGltaXQnLCBUcnVlKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVu
X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJlcycsIFsndGVz
dHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMjcpXSkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdVbmFibGUgdG8gY29uZmlybSBp
ZiB0ZXN0IGZhaWx1cmVzIGFyZSBpbnRyb2R1Y2VkIGJ5IHBhdGNoLCByZXRyeWluZyBidWlsZCAo
cmV0cnkpJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9j
bGVhbl90cmVlX2hhc19zb21lX2ZhaWx1cmVzKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3Vy
ZVN0ZXAoKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmaXJzdF9yZXN1bHRzX2V4Y2VlZF9m
YWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVu
X2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZvcm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAzMCldKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9s
aW1pdCcsIFRydWUpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVy
ZXMnLCBbJ3Rlc3R7fScuZm9ybWF0KGkpIGZvciBpIGluIHJhbmdlKDAsIDMwKV0pCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NsZWFuX3RyZWVfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0e30nLmZv
cm1hdChpKSBmb3IgaSBpbiByYW5nZSgwLCAxMCldKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRm91bmQgMzAgbmV3IHRlc3QgZmFpbHVy
ZXM6IHRlc3QwLCB0ZXN0MSwgdGVzdDEwLCB0ZXN0MTEsIHRlc3QxMiwgdGVzdDEzLCB0ZXN0MTQs
IHRlc3QxNSwgdGVzdDE2LCB0ZXN0MTcgLi4uIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfY2xlYW5fdHJlZV9oYXNfbG90X29mX2ZhaWx1
cmVzX2FuZF9ub19uZXdfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVw
KCkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgWyd0ZXN0
MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdzZWNvbmRfcnVuX2ZhaWx1cmVzJywgWyd0
ZXN0MSddKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjbGVhbl90cmVlX3J1bl9mYWlsdXJl
cycsIFsndGVzdHt9Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMjApXSkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1Bhc3NlZCBs
YXlvdXQgdGVzdHMnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfc3VtbWFyeScpLCAnRm91bmQgMjAg
cHJlLWV4aXN0aW5nIHRlc3QgZmFpbHVyZXM6IHRlc3QwLCB0ZXN0MSwgdGVzdDEwLCB0ZXN0MTEs
IHRlc3QxMiwgdGVzdDEzLCB0ZXN0MTQsIHRlc3QxNSwgdGVzdDE2LCB0ZXN0MTcgLi4uJykKLSAg
ICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9wYXRjaF9pbnRyb2R1Y2VzX2xvdF9vZl9m
YWlsdXJlcyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVlJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnZmlyc3RfcmVzdWx0c19leGNlZWRfZmFpbHVyZV9saW1pdCcsIFRydWUp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2ZpcnN0X3J1bl9mYWlsdXJlcycsIFsndGVzdHt9
Jy5mb3JtYXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzAwKV0pCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ3NlY29uZF9yZXN1bHRzX2V4Y2VlZF9mYWlsdXJlX2xpbWl0JywgVHJ1ZSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnc2Vjb25kX3J1bl9mYWlsdXJlcycsIFsndGVzdHt9Jy5mb3Jt
YXQoaSkgZm9yIGkgaW4gcmFuZ2UoMCwgMzAwKV0pCi0gICAgICAgIGZhaWx1cmVfbWVzc2FnZSA9
ICdGb3VuZCAzMDAgbmV3IHRlc3QgZmFpbHVyZXM6IHRlc3QwLCB0ZXN0MSwgdGVzdDEwLCB0ZXN0
MTAwLCB0ZXN0MTAxLCB0ZXN0MTAyLCB0ZXN0MTAzLCB0ZXN0MTA0LCB0ZXN0MTA1LCB0ZXN0MTA2
IC4uLicKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9z
dHJpbmc9ZmFpbHVyZV9tZXNzYWdlICsgJyAoZmFpbHVyZSknKQotICAgICAgICByYyA9IHNlbGYu
cnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVn
emlsbGFfY29tbWVudF90ZXh0JyksIGZhaWx1cmVfbWVzc2FnZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdidWlsZF9maW5pc2hfc3VtbWFyeScpLCBmYWlsdXJl
X21lc3NhZ2UpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfdW5leHBlY3RlZF9p
bmZyYV9pc3N1ZShzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmVTdGVwKCkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgnZmlyc3RfcnVuX2ZhaWx1cmVzJywgW10pCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ3NlY29uZF9ydW5fZmFpbHVyZXMnLCBbXSkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1SRVRSWSwgc3RhdGVfc3RyaW5nPSdVbmV4cGVjdGVkIGluZnJhc3Ry
dWN0dXJlIGlzc3VlLCByZXRyeWluZyBidWlsZCAocmV0cnkpJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdENoZWNrT3V0U3BlY2lmaWNSZXZpc2lvbihCdWls
ZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChz
ZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNl
bGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja091dFNwZWNpZmljUmV2aXNpb24oKSkK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZXdzX3JldmlzaW9uJywgJzFhMzQyNWNiOTJkYmNi
Y2ExMmExMGFhOTUxNGYxYjc3Yzc2ZGMyNicpCi0gICAgICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZh
bHNlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhw
ZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91
dD0xMjAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnY2hlY2tvdXQnLCAnMWEzNDI1Y2I5
MmRiY2JjYTEyYTEwYWE5NTE0ZjFiNzdjNzZkYzI2J10sCi0gICAgICAgICAgICAgICAgICAgICAg
ICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0NoZWNrZWQgb3V0IHJlcXVpcmVkIHJl
dmlzaW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9m
YWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja091dFNwZWNpZmljUmV2
aXNpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZXdzX3JldmlzaW9uJywgJzFhMzQy
NWNiOTJkYmNiY2ExMmExMGFhOTUxNGYxYjc3Yzc2ZGMyNicpCi0gICAgICAgIHNlbGYuZXhwZWN0
SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAg
ICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgdGltZW91dD0xMjAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnY2hlY2tvdXQnLCAn
MWEzNDI1Y2I5MmRiY2JjYTEyYTEwYWE5NTE0ZjFiNzdjNzZkYzI2J10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRv
dXQ9J1VuZXhwZWN0ZWQgZmFpbHVyZScpCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0No
ZWNrZWQgb3V0IHJlcXVpcmVkIHJldmlzaW9uIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc2tpcChzZWxmKToKLSAgICAgICAgc2VsZi5z
ZXR1cFN0ZXAoQ2hlY2tPdXRTcGVjaWZpY1JldmlzaW9uKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0
SGlkZGVuKFRydWUpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U0tJUFBFRCwg
c3RhdGVfc3RyaW5nPSdDaGVja2VkIG91dCByZXF1aXJlZCByZXZpc2lvbiAoc2tpcHBlZCknKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0Q2xlYW5Xb3JraW5n
RGlyZWN0b3J5KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAg
ICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKENsZWFuV29ya2luZ0Rp
cmVjdG9yeSgpKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvU2NyaXB0cy9jbGVhbi13ZWJraXQnXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQ2xlYW5lZCB3b3JraW5nIGRpcmVj
dG9yeScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFp
bHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2xlYW5Xb3JraW5nRGlyZWN0b3J5
KCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdU
b29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQot
ICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVk
IGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nQ2xlYW5lZCB3b3JraW5n
IGRpcmVjdG9yeSAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQot
Ci1jbGFzcyBUZXN0VXBkYXRlV29ya2luZ0RpcmVjdG9yeShCdWlsZFN0ZXBNaXhpbkFkZGl0aW9u
cywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2Vs
Zi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93
bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChVcGRhdGVXb3JraW5nRGlyZWN0b3J5KCkpCi0gICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3BlcmwnLCAnVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0
J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAg
ICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJp
bmc9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnknKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKFVwZGF0ZVdvcmtpbmdEaXJlY3RvcnkoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdz
dGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicpCi0gICAgICAgICAgICArIDIsCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0
ZV9zdHJpbmc9J1VwZGF0ZWQgd29ya2luZyBkaXJlY3RvcnkgKGZhaWx1cmUpJykKLSAgICAgICAg
cmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdEFwcGx5UGF0Y2goQnVpbGRTdGVw
TWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6
Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgZGVmIG1vY2tfc3Rh
cnQoY2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgZnJvbSBidWlsZGJvdC5zdGVw
cyBpbXBvcnQgc2hlbGwKLSAgICAgICAgICAgIHJldHVybiBzaGVsbC5TaGVsbENvbW1hbmQuc3Rh
cnQoY2xzKQotICAgICAgICBBcHBseVBhdGNoLnN0YXJ0ID0gbW9ja19zdGFydAotICAgICAgICBy
ZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1
Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFwcGx5UGF0Y2goKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChBcHBseVBhdGNoLmZsdW5rT25GYWlsdXJlLCBUcnVlKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKEFwcGx5UGF0Y2guaGFsdE9uRmFpbHVyZSwgRmFsc2UpCi0g
ICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTYwMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncGVybCcsICdUb29scy9TY3JpcHRzL3N2bi1hcHBseScsICct
LWZvcmNlJywgJy5idWlsZGJvdC1kaWZmJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICApICsK
LSAgICAgICAgICAgIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0FwcGxpZWQgcGF0Y2gnKQotICAgICAgICByZXR1
cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAg
IHNlbGYuc2V0dXBTdGVwKEFwcGx5UGF0Y2goKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NjAwLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydwZXJs
JywgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5JywgJy0tZm9yY2UnLCAnLmJ1aWxkYm90LWRpZmYn
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwu
bG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicpICsKLSAgICAgICAgICAg
IDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJF
LCBzdGF0ZV9zdHJpbmc9J3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkgcGF0Y2ggdG8gdHJ1bmsn
KQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksIE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnkn
KSwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX29uX2Nv
bW1pdF9xdWV1ZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQXBwbHlQYXRjaCgpKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NjAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGNvbW1hbmQ9WydwZXJsJywgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5JywgJy0tZm9yY2UnLCAn
LmJ1aWxkYm90LWRpZmYnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkgKwotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicp
ICsKLSAgICAgICAgICAgIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21l
KHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkg
cGF0Y2ggdG8gdHJ1bmsnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0Jyks
ICdUb29scy9TY3JpcHRzL3N2bi1hcHBseSBmYWlsZWQgdG8gYXBwbHkgYXR0YWNobWVudCAxMjM0
IHRvIHRydW5rLlxuUGxlYXNlIHJlc29sdmUgdGhlIGNvbmZsaWN0cyBhbmQgdXBsb2FkIGEgbmV3
IHBhdGNoLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVp
bGRfZmluaXNoX3N1bW1hcnknKSwgJ1Rvb2xzL1NjcmlwdHMvc3ZuLWFwcGx5IGZhaWxlZCB0byBh
cHBseSBwYXRjaCAxMjM0IHRvIHRydW5rJykKLSAgICAgICAgcmV0dXJuIHJjCi0KLQotY2xhc3Mg
VGVzdFVuQXBwbHlQYXRjaElmUmVxdWlyZWQoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01l
c3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAg
IGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0
ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdw
YXRjaEZhaWxlZFRvQnVpbGQnLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdEhpZGRlbihGYWxz
ZSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVj
dFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmly
b249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rv
b2xzL1NjcmlwdHMvY2xlYW4td2Via2l0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0g
ICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1VuYXBwbGllZCBwYXRjaCcpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAg
ICAgc2VsZi5zZXR1cFN0ZXAoVW5BcHBseVBhdGNoSWZSZXF1aXJlZCgpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdwYXRjaEZhaWxlZFRlc3RzJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5leHBl
Y3RIaWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3B5dGhvbicsICdUb29scy9TY3JpcHRzL2NsZWFuLXdlYmtpdCddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0
PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nVW5h
cHBsaWVkIHBhdGNoIChmYWlsdXJlKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQot
Ci0gICAgZGVmIHRlc3Rfc2tpcChzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVW5BcHBs
eVBhdGNoSWZSZXF1aXJlZCgpKQotICAgICAgICBzZWxmLmV4cGVjdEhpZGRlbihUcnVlKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNLSVBQRUQsIHN0YXRlX3N0cmluZz0nVW5h
cHBsaWVkIHBhdGNoIChza2lwcGVkKScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQot
Ci0KLWNsYXNzIFRlc3RDaGVja1BhdGNoUmVsZXZhbmNlKEJ1aWxkU3RlcE1peGluQWRkaXRpb25z
LCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxm
LmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgp
Ci0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3du
QnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbGV2YW50X2pzY19wYXRjaChzZWxmKToKLSAg
ICAgICAgQ2hlY2tQYXRjaFJlbGV2YW5jZS5fZ2V0X3BhdGNoID0gbGFtYmRhIHg6ICdTYW1wbGUg
cGF0Y2g7IGZpbGU6IEpTVGVzdHMvJwotICAgICAgICBzZWxmLnNldHVwU3RlcChDaGVja1BhdGNo
UmVsZXZhbmNlKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ0pT
Qy1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENoZWNrUGF0Y2hSZWxldmFu
Y2UuaGFsdE9uRmFpbHVyZSwgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDaGVja1Bh
dGNoUmVsZXZhbmNlLmZsdW5rT25GYWlsdXJlLCBUcnVlKQotICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZh
bnQgY2hhbmdlcycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRl
c3RfcmVsZXZhbnRfd2sxX3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNl
Ll9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTogU291cmNlL1dlYktp
dExlZ2FjeScKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFJlbGV2YW5jZSgpKQot
ICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1Nb2phdmUtUmVs
ZWFzZS1XSzEtVGVzdHMtRVdTJykKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1T
VUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1BhdGNoIGNvbnRhaW5zIHJlbGV2YW50IGNoYW5nZXMnKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3JlbGV2YW50X2Jp
Z3N1cl9idWlsZGVyX3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9n
ZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTogU291cmNlL3h5eicKLSAg
ICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFJlbGV2YW5jZSgpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1CaWdTdXItUmVsZWFzZS1CdWlsZC1F
V1MnKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0
cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZhbnQgY2hhbmdlcycpCi0gICAgICAgIHJldHVybiBz
ZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfcmVsZXZhbnRfd2luZG93c193azFfcGF0Y2go
c2VsZik6Ci0gICAgICAgIENoZWNrUGF0Y2hSZWxldmFuY2UuX2dldF9wYXRjaCA9IGxhbWJkYSB4
OiAnU2FtcGxlIHBhdGNoOyBmaWxlOiBTb3VyY2UvV2ViS2l0TGVnYWN5JwotICAgICAgICBzZWxm
LnNldHVwU3RlcChDaGVja1BhdGNoUmVsZXZhbmNlKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2J1aWxkZXJuYW1lJywgJ1dpbmRvd3MtRVdTJykKLSAgICAgICAgc2VsZi5leHBlY3RPdXRj
b21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1BhdGNoIGNvbnRhaW5zIHJlbGV2YW50
IGNoYW5nZXMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0
X3JlbGV2YW50X3dlYmtpdHB5X3BhdGNoKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZh
bmNlLl9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweScKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFJlbGV2YW5j
ZSgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdXZWJLaXRQeS1U
ZXN0cy1FV1MnKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0
YXRlX3N0cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZhbnQgY2hhbmdlcycpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfcmVsZXZhbnRfbGlicmFyaWVzX3Bh
dGNoKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1i
ZGEgeDogJ1NhbXBsZSBwYXRjaDsgZmlsZTogVG9vbHMvU2NyaXB0cy9saWJyYXJpZXMnCi0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKENoZWNrUGF0Y2hSZWxldmFuY2UoKSkKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCAnV2ViS2l0UHktVGVzdHMtRVdTJykKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1BhdGNoIGNv
bnRhaW5zIHJlbGV2YW50IGNoYW5nZXMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotICAgIGRlZiB0ZXN0X3F1ZXVlc193aXRob3V0X3JlbGV2YW5jZV9pbmZvKHNlbGYpOgotICAg
ICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1iZGEgeDogJ1NhbXBsZSBw
YXRjaCcKLSAgICAgICAgcXVldWVzID0gWydDb21taXQtUXVldWUnLCAnU3R5bGUtRVdTJywgJ0Fw
cGx5LVdhdGNoTGlzdC1FV1MnLCAnR1RLLUJ1aWxkLUVXUycsICdHVEstV0syLVRlc3RzLUVXUycs
Ci0gICAgICAgICAgICAgICAgICAnaU9TLTEzLUJ1aWxkLUVXUycsICdpT1MtMTMtU2ltdWxhdG9y
LUJ1aWxkLUVXUycsICdpT1MtMTMtU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnLAotICAgICAgICAg
ICAgICAgICAgJ21hY09TLU1vamF2ZS1SZWxlYXNlLUJ1aWxkLUVXUycsICdtYWNPUy1Nb2phdmUt
UmVsZWFzZS1XSzItVGVzdHMtRVdTJywgJ21hY09TLU1vamF2ZS1EZWJ1Zy1CdWlsZC1FV1MnLAot
ICAgICAgICAgICAgICAgICAgJ1dpbkNhaXJvLUVXUycsICdXUEUtRVdTJywgJ1dlYktpdFBlcmwt
VGVzdHMtRVdTJ10KLSAgICAgICAgZm9yIHF1ZXVlIGluIHF1ZXVlczoKLSAgICAgICAgICAgIHNl
bGYuc2V0dXBTdGVwKENoZWNrUGF0Y2hSZWxldmFuY2UoKSkKLSAgICAgICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgcXVldWUpCi0gICAgICAgICAgICBzZWxmLmV4cGVjdE91
dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nUGF0Y2ggY29udGFpbnMgcmVsZXZh
bnQgY2hhbmdlcycpCi0gICAgICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHJl
dHVybiByYwotCi0gICAgZGVmIHRlc3Rfbm9uX3JlbGV2YW50X3BhdGNoX29uX3ZhcmlvdXNfcXVl
dWVzKHNlbGYpOgotICAgICAgICBDaGVja1BhdGNoUmVsZXZhbmNlLl9nZXRfcGF0Y2ggPSBsYW1i
ZGEgeDogJ1NhbXBsZSBwYXRjaCcKLSAgICAgICAgcXVldWVzID0gWydCaW5kaW5ncy1UZXN0cy1F
V1MnLCAnSlNDLVRlc3RzLUVXUycsICdtYWNPUy1CaWdTdXItUmVsZWFzZS1CdWlsZC1FV1MnLAot
ICAgICAgICAgICAgICAgICAgJ21hY09TLU1vamF2ZS1EZWJ1Zy1XSzEtVGVzdHMtRVdTJywgJ1Nl
cnZpY2VzLUVXUycsICdXZWJLaXRQeS1UZXN0cy1FV1MnXQotICAgICAgICBmb3IgcXVldWUgaW4g
cXVldWVzOgotICAgICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFJlbGV2YW5jZSgp
KQotICAgICAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYnVpbGRlcm5hbWUnLCBxdWV1ZSkKLSAg
ICAgICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5n
PSdQYXRjaCBkb2VzblwndCBoYXZlIHJlbGV2YW50IGNoYW5nZXMnKQotICAgICAgICAgICAgcmMg
PSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICByZXR1cm4gcmMKLQotCi1jbGFzcyBUZXN0QXJjaGl2
ZUJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2Up
OgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUK
LSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3du
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBk
ZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChBcmNoaXZlQnVp
bHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdp
b3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbics
ICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0
aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICct
LXBsYXRmb3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdhcmNoaXZlJ10sCi0gICAg
ICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAg
ICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0FyY2hp
dmVkIGJ1aWx0IHByb2R1Y3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAg
IGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEFyY2hpdmVC
dWlsdFByb2R1Y3QoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywg
J21hYy1zaWVycmEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywg
J2RlYnVnJykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxv
Z0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9u
JywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBs
YXRmb3JtPW1hYy1zaWVycmEnLCAgJy0tZGVidWcnLCAnYXJjaGl2ZSddLAotICAgICAgICAgICAg
ICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rk
b3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0n
QXJjaGl2ZWQgYnVpbHQgcHJvZHVjdCAoZmFpbHVyZSknKQotICAgICAgICByZXR1cm4gc2VsZi5y
dW5TdGVwKCkKLQotCi1jbGFzcyBUZXN0VXBsb2FkQnVpbHRQcm9kdWN0KEJ1aWxkU3RlcE1peGlu
QWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAg
ICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1cm4gc2VsZi5zZXRVcEJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Moc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjLXNpZXJyYScpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0g
ICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3QoJ3Vw
bG9hZEZpbGUnLCBkaWN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHdvcmtlcnNyYz0nV2ViS2l0QnVpbGQvcmVsZWFzZS56aXAnLCB3b3JrZGlyPSd3a2RpcicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2tzaXplPTEwMjQgKiAy
NTYsIG1heHNpemU9Tm9uZSwga2VlcHN0YW1wPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdyaXRlcj1FeHBlY3RSZW1vdGVSZWYocmVtb3RldHJhbnNmZXIu
RmlsZVdyaXRlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSkKLSAg
ICAgICAgICAgICsgRXhwZWN0LmJlaGF2aW9yKHVwbG9hZEZpbGVXaXRoQ29udGVudHNPZlN0cmlu
ZygnRHVtbXkgemlwIGZpbGUgY29udGVudC4nKSkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAg
KQotICAgICAgICBzZWxmLmV4cGVjdFVwbG9hZGVkRmlsZSgncHVibGljX2h0bWwvYXJjaGl2ZXMv
bWFjLXNpZXJyYS14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCcpCi0KLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1VwbG9hZGVkIGJ1aWx0IHBy
b2R1Y3QnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFVwbG9hZEJ1aWx0UHJvZHVjdCgp
KQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjLXNpZXJyYScp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBl
Y3RIaWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAg
ICAgICAgICBFeHBlY3QoJ3VwbG9hZEZpbGUnLCBkaWN0KAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdvcmtlcnNyYz0nV2ViS2l0QnVpbGQvcmVsZWFzZS56aXAnLCB3
b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YmxvY2tzaXplPTEwMjQgKiAyNTYsIG1heHNpemU9Tm9uZSwga2VlcHN0YW1wPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlcj1FeHBlY3RSZW1vdGVS
ZWYocmVtb3RldHJhbnNmZXIuRmlsZVdyaXRlciksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKSkKLSAgICAgICAgICAgICsgRXhwZWN0LmJlaGF2aW9yKHVwbG9hZEZpbGVX
aXRoQ29udGVudHNPZlN0cmluZygnRHVtbXkgemlwIGZpbGUgY29udGVudC4nKSkKLSAgICAgICAg
ICAgICsgMSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdFVwbG9hZGVkRmlsZSgncHVi
bGljX2h0bWwvYXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCcpCi0K
LSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9
J0ZhaWxlZCB0byB1cGxvYWQgYnVpbHQgcHJvZHVjdCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1
blN0ZXAoKQotCi0KLWNsYXNzIFRlc3REb3dubG9hZEJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNaXhp
bkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAg
ICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBC
dWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAg
ICAgICBzZWxmLnNldHVwU3RlcChEb3dubG9hZEJ1aWx0UHJvZHVjdCgpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvci0xMicpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVD
b21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QnLCAnLS1yZWxlYXNlJywgJ2h0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpv
bmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVsYXRvci0xMi14ODZfNjQt
cmVsZWFzZS8xMjM0LnppcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VD
Q0VTUywgc3RhdGVfc3RyaW5nPSdEb3dubG9hZGVkIGJ1aWx0IHByb2R1Y3QnKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKERvd25sb2FkQnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYu
c2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtc2llcnJhJykKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdwYXRjaF9pZCcsICcxMjM0NTYnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQt
cHJvZHVjdCcsICctLWRlYnVnJywgJ2h0dHBzOi8vczMtdXMtd2VzdC0yLmFtYXpvbmF3cy5jb20v
ZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvbWFjLXNpZXJyYS14ODZfNjQtZGVidWcvMTIzNDU2Lnpp
cCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVs
bC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAgICAgICAgICAg
ICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxV
UkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0IHByb2R1Y3QgZnJvbSBT
MycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3REb3dubG9h
ZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3Nh
Z2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRl
ZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAo
RG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFzdGVyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yLTEyJykKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnYXJjaGl0ZWN0dXJlJywgJ3g4Nl82NCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAg
ICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1h
bmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJv
ZHVjdCcsICctLXJlbGVhc2UnLCAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9hcmNoaXZl
cy9pb3Mtc2ltdWxhdG9yLTEyLXg4Nl82NC1yZWxlYXNlLzEyMzQuemlwJ10sCi0gICAgICAgICAg
ICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2Vs
Zi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0Rvd25sb2FkZWQg
YnVpbHQgcHJvZHVjdCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVm
IHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoRG93bmxvYWRCdWls
dFByb2R1Y3RGcm9tTWFzdGVyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0
Zm9ybScsICdtYWMtc2llcnJhJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJh
dGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScs
ICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0NTYn
KQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0
U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICctLWRlYnVnJywg
J2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5vcmcvYXJjaGl2ZXMvbWFjLXNpZXJyYS14ODZfNjQt
ZGVidWcvMTIzNDU2LnppcCddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAg
ICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUu
JykKLSAgICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNv
bWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRmFpbGVkIHRvIGRvd25sb2FkIGJ1aWx0
IHByb2R1Y3QgZnJvbSBidWlsZCBtYXN0ZXInKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVw
KCkKLQotCi1jbGFzcyBUZXN0RXh0cmFjdEJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNaXhpbkFkZGl0
aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0
ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFy
RG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBz
ZWxmLnNldHVwU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLSAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1
aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVs
ZWFzZScsICdleHRyYWN0J10sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAg
ICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUND
RVNTLCBzdGF0ZV9zdHJpbmc9J0V4dHJhY3RlZCBidWlsdCBwcm9kdWN0JykKLSAgICAgICAgcmV0
dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAg
ICBzZWxmLnNldHVwU3RlcChFeHRyYWN0QnVpbHRQcm9kdWN0KCkpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtc2llcnJhJykKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVt
b3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWls
dC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMtc2llcnJhJywgICctLWRlYnVnJywg
J2V4dHJhY3QnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhw
ZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicpCi0gICAg
ICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3Vs
dD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0V4dHJhY3RlZCBidWlsdCBwcm9kdWN0IChmYWlsdXJl
KScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RUcmFuc2Zl
clRvUzMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAg
IHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rf
c3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVHJhbnNmZXJUb1MzKCkpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtaGlnaHNpZXJyYScp
Ci0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2FyY2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5leHBl
Y3RMb2NhbENvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0TWFzdGVyU2hlbGxDb21tYW5kKGNv
bW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICcuLi9TaGFyZWQvdHJhbnNmZXItYXJjaGl2ZS10by1zMycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tcGF0Y2hfaWQnLCAnMTIzNCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0taWRlbnRpZmll
cicsICdtYWMtaGlnaHNpZXJyYS14ODZfNjQtcmVsZWFzZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tYXJjaGl2ZScsICdwdWJsaWNfaHRtbC9hcmNo
aXZlcy9tYWMtaGlnaHNpZXJyYS14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgKyAwLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdUcmFuc2ZlcnJlZCBhcmNoaXZlIHRvIFMzJykKLSAgICAgICAgcmV0dXJuIHNl
bGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxm
LnNldHVwU3RlcChUcmFuc2ZlclRvUzMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVs
bFBsYXRmb3JtJywgJ2lvcy1zaW11bGF0b3ItMTInKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnYXJj
aGl0ZWN0dXJlJywgJ3g4Nl82NCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lk
JywgJzEyMzQnKQotICAgICAgICBzZWxmLmV4cGVjdExvY2FsQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RNYXN0ZXJTaGVsbENvbW1hbmQoY29tbWFuZD1bJ3B5dGhvbicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uL1NoYXJlZC90cmFuc2Zlci1h
cmNoaXZlLXRvLXMzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnLS1wYXRjaF9pZCcsICcxMjM0JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLS1pZGVudGlmaWVyJywgJ2lvcy1zaW11bGF0b3ItMTIteDg2XzY0
LWRlYnVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
LS1hcmNoaXZlJywgJ3B1YmxpY19odG1sL2FyY2hpdmVzL2lvcy1zaW11bGF0b3ItMTIteDg2XzY0
LWRlYnVnLzEyMzQuemlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0pCi0gICAgICAgICAgICArIDIsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBl
Y3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J0ZhaWxlZCB0byB0cmFuc2Zl
ciBhcmNoaXZlIHRvIFMzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLQotY2xh
c3MgVGVzdFJ1bkFQSVRlc3RzKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0g
VHJ1ZQotICAgICAgICBzZWxmLmpzb25GaWxlTmFtZSA9ICdhcGlfdGVzdF9yZXN1bHRzLmpzb24n
Ci0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93
bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAg
ZGVmIHRlc3Rfc3VjY2Vzc19tYWMoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQ
SVRlc3RzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMt
bW9qYXZlJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAg
ICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdyZWxlYXNlJykKLQotICAg
ICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwo
d29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2Ny
aXB0cy9ydW4tYXBpLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1yZWxlYXNlJywgJy0tdmVyYm9z
ZScsICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0s
Ci0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9JycnLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9w
ZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYg
UGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtl
ci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdU
Ri5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRl
c3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi1SYW4gMTg4OCB0
ZXN0cyBvZiAxODg4IHdpdGggMTg4OCBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQotJycnKQotICAgICAgICAg
ICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VD
Q0VTUywgc3RhdGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2lvc19zaW11bGF0b3Ioc2VsZik6Ci0g
ICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQSVRlc3RzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mtc2ltdWxhdG9yLTExJykKLSAgICAgICAgc2VsZi5z
ZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
Y29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21t
YW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cycsICctLW5v
LWJ1aWxkJywgJy0tZGVidWcnLCAnLS12ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9ezB9Jy5mb3Jt
YXQoc2VsZi5qc29uRmlsZU5hbWUpLCAnLS1pb3Mtc2ltdWxhdG9yJ10sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8n
LCBzdGRvdXQ9JycnLi4uCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1w
ZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13
b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RX
VEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFy
aWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RG
X1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi1SYW4gMTg4OCB0ZXN0cyBvZiAx
ODg4IHdpdGggMTg4OCBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUFsbCB0ZXN0cyBzdWNjZXNzZnVsbHkgcGFzc2VkIQotJycnKQotICAgICAgICAgICAgKyAwLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgp
Ci0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2d0ayhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoUnVuQVBJVGVzdHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3Jt
JywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ2d0aycpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0KLSAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFs
c2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1Nj
cmlwdHMvcnVuLWd0ay10ZXN0cycsICctLXJlbGVhc2UnLCAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJy4uLgot
KipQQVNTKiogVHJhbnNmb3JtYXRpb25NYXRyaXguQmxlbmQKLSoqUEFTUyoqIFRyYW5zZm9ybWF0
aW9uTWF0cml4LkJsZW5kMgotKipQQVNTKiogVHJhbnNmb3JtYXRpb25NYXRyaXguQmxlbmQ0Ci0q
KlBBU1MqKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeC5FcXVhbGl0eQotKipQQVNTKiogVHJhbnNmb3Jt
YXRpb25NYXRyaXguQ2FzdGluZwotKipQQVNTKiogVHJhbnNmb3JtYXRpb25NYXRyaXguTWFrZU1h
cEJldHdlZW5SZWN0cwotKipQQVNTKiogVVJMUGFyc2VyVGV4dEVuY29kaW5nVGVzdC5RdWVyeUVu
Y29kaW5nCi0qKlBBU1MqKiBHU3RyZWFtZXJUZXN0Lm1hcHBlZEJ1ZmZlckJhc2ljcwotKipQQVNT
KiogR1N0cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJSZWFkU2FuaXR5Ci0qKlBBU1MqKiBHU3RyZWFt
ZXJUZXN0Lm1hcHBlZEJ1ZmZlcldyaXRlU2FuaXR5Ci0qKlBBU1MqKiBHU3RyZWFtZXJUZXN0Lm1h
cHBlZEJ1ZmZlckNhY2hlc1NoYXJlZEJ1ZmZlcnMKLSoqUEFTUyoqIEdTdHJlYW1lclRlc3QubWFw
cGVkQnVmZmVyRG9lc05vdEFkZEV4dHJhUmVmcwotCi1SYW4gMTMxNiB0ZXN0cyBvZiAxMzE4IHdp
dGggMTMxNiBzdWNjZXNzZnVsCi0nJycpCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAg
ICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J3J1
bi1hcGktdGVzdHMnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X29uZV9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5BUElUZXN0
cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjLW1vamF2
ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ21hYycpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcnKQotCi0gICAgICAgIHNl
bGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGly
PSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9TY3JpcHRzL3J1
bi1hcGktdGVzdHMnLCAnLS1uby1idWlsZCcsICctLWRlYnVnJywgJy0tdmVyYm9zZScsICctLWpz
b24tb3V0cHV0PXswfScuZm9ybWF0KHNlbGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAg
ICAgICAgICAgICBsb2dmaWxlcz17J2pzb24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8n
LCBzdGRvdXQ9JycnCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJz
YW5kIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3Jr
ZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYu
V1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFu
dC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRvciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zh
cmlhbnQuVmlzaXRvclVzaW5nU3dpdGNoT24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4g
MTg4OCB0ZXN0cyBvZiAxODg4IHdpdGggMTg4NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3VpdGUgZmFpbGVkCi0KLUNyYXNoZWQKLQotICAgIFRlc3RX
VEYuV1RGLlN0cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5T
dHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIFRvb2xzXFxUZXN0V2ViS2l0QVBJ
XFxUZXN0c1xcV1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUgb2Y6
IG1ha2VTdHJpbmcoJ2hlbGxvICcsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0MikgLCAn
IHdvcmxkJykKLSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4cGVj
dGVkOiAnaGVsbG8gKiB3b3JsZCcKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLVRlc3Rp
bmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotJycnKQotICAgICAgICAgICAgKyAxLAotICAg
ICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVf
c3RyaW5nPScxIGFwaSB0ZXN0IGZhaWxlZCBvciB0aW1lZCBvdXQnKQotICAgICAgICByZXR1cm4g
c2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzX2FuZF90aW1l
b3V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQVBJVGVzdHMoKSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1tb2phdmUnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9ydW4tYXBpLXRlc3Rz
JywgJy0tbm8tYnVpbGQnLCAnLS1kZWJ1ZycsICctLXZlcmJvc2UnLCAnLS1qc29uLW91dHB1dD17
MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAg
ICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScn
Jy4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRvckFtcGVyc2FuZCBQYXNz
ZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3NlZAotd29ya2VyLzAgVGVz
dFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJp
YW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRv
clVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlZp
c2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGluZwotUmFuIDE4ODggdGVz
dHMgb2YgMTg4OCB3aXRoIDE4ODQgc3VjY2Vzc2Z1bAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1UZXN0IHN1aXRlIGZhaWxlZAotCi1GYWlsZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0
cmluZ0NvbmNhdGVuYXRlX1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5TdHJpbmdDb25j
YXRlbmF0ZV9VbnNpZ25lZAotCi0gICAgICAgIFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xc
V1RGXFxTdHJpbmdDb25jYXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUgb2Y6IG1ha2VTdHJp
bmcoJ2hlbGxvICcsIHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0MikgLCAnIHdvcmxkJykK
LSAgICAgICAgICBBY3R1YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4cGVjdGVkOiAnaGVs
bG8gKiB3b3JsZCcKLSAgICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLSAgICBUZXN0V1RGLldU
Rl9FeHBlY3RlZC5VbmV4cGVjdGVkCi0gICAgICAgICoqRkFJTCoqIFdURl9FeHBlY3RlZC5VbmV4
cGVjdGVkCi0KLSAgICAgICAgVG9vbHNcVGVzdFdlYktpdEFQSVxUZXN0c1xXVEZcRXhwZWN0ZWQu
Y3BwOjk2Ci0gICAgICAgIFZhbHVlIG9mOiBzMQotICAgICAgICAgIEFjdHVhbDogb29wcwotICAg
ICAgICBFeHBlY3RlZDogczAKLSAgICAgICAgV2hpY2ggaXM6IG9vcHMKLQotVGltZW91dAotCi0g
ICAgVGVzdFdURi5XVEZfUG9pc29uZWRVbmlxdWVQdHJGb3JUcml2aWFsbHlEZXN0cnVjdGlibGVB
cnJheXMuQXNzaWdubWVudAotICAgIFRlc3RXVEYuV1RGX0xvY2suQ29udGVuZGVkU2hvcnRTZWN0
aW9uCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1czogMwotJycnKQotICAgICAgICAg
ICAgKyA0LAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSc0IGFwaSB0ZXN0cyBmYWlsZWQgb3IgdGltZWQgb3V0JykKLSAg
ICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2Zh
aWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkFQSVRlc3RzKCkpCi0gICAg
ICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtbW9qYXZlJykKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnbWFjJykKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgnY29uZmlndXJhdGlvbicsICdkZWJ1ZycpCi0KLSAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0
cycsICctLW5vLWJ1aWxkJywgJy0tZGVidWcnLCAnLS12ZXJib3NlJywgJy0tanNvbi1vdXRwdXQ9
ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
IGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0n
VW5leHBlY3RlZCBmYWlsdXJlLiBGYWlsZWQgdG8gcnVuIGFwaSB0ZXN0cy4nKQotICAgICAgICAg
ICAgKyAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJ
TFVSRSwgc3RhdGVfc3RyaW5nPSdydW4tYXBpLXRlc3RzIChmYWlsdXJlKScpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfbm9fZmFpbHVyZXNfb3JfdGltZW91
dHNfd2l0aF9kaXNhYmxlZChzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuQVBJVGVz
dHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1tb2ph
dmUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLQotICAgICAgICBz
ZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rp
cj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvU2NyaXB0cy9y
dW4tYXBpLXRlc3RzJywgJy0tbm8tYnVpbGQnLCAnLS1kZWJ1ZycsICctLXZlcmJvc2UnLCAnLS1q
c29uLW91dHB1dD17MH0nLmZvcm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nZmlsZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlv
Jywgc3Rkb3V0PScnJy4uLgotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5PcGVyYXRvckFt
cGVyc2FuZCBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmIFBhc3NlZAot
d29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5SZWZQdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0
V1RGLldURl9WYXJpYW50LlJldGFpblB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1Zh
cmlhbnQuVmlzaXRvclVzaW5nTWFrZVZpc2l0b3IgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldU
Rl9WYXJpYW50LlZpc2l0b3JVc2luZ1N3aXRjaE9uIFBhc3NlZAotd29ya2VyLzAgZXhpdGluZwot
UmFuIDE4ODEgdGVzdHMgb2YgMTg4OCB3aXRoIDE4ODEgc3VjY2Vzc2Z1bAotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1BbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5IHBhc3NlZCEKLScnJykK
LSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0ncnVuLWFwaS10ZXN0cycpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RSdW5BUElUZXN0c1dpdGhvdXRQYXRj
aChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBz
ZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgc2Vs
Zi5qc29uRmlsZU5hbWUgPSAnYXBpX3Rlc3RfcmVzdWx0cy5qc29uJwotICAgICAgICByZXR1cm4g
c2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nf
bWFjKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChSdW5BUElUZXN0c1dpdGhvdXRQYXRj
aCgpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdmdWxsUGxhdGZvcm0nLCAnbWFjLW1vamF2
ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ21hYycpCi0gICAgICAg
IHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ0FQSS1UZXN0cy1tYWNPUy1FV1MnKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMTUyNScpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3dvcmtlcm5hbWUnLCAnZXdzMTU1JykKLQotICAgICAgICBzZWxmLmV4
cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tk
aXInLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVuLWFwaS10ZXN0cycsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnLS1uby1idWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnLS1yZWxlYXNlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICctLXZlcmJvc2UnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tanNvbi1v
dXRwdXQ9ezB9Jy5mb3JtYXQoc2VsZi5qc29uRmlsZU5hbWUpXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ2ZpbGVzPXsnanNvbic6IHNlbGYuanNvbkZpbGVOYW1lfSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0
ZG91dD0nJycuLi4KLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuT3BlcmF0b3JBbXBlcnNh
bmQgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50LlJlZiBQYXNzZWQKLXdvcmtl
ci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmVmUHRyIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5X
VEZfVmFyaWFudC5SZXRhaW5QdHIgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
LlZpc2l0b3JVc2luZ01ha2VWaXNpdG9yIFBhc3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFy
aWFudC5WaXNpdG9yVXNpbmdTd2l0Y2hPbiBQYXNzZWQKLVJhbiAxODg4IHRlc3RzIG9mIDE4ODgg
d2l0aCAxODg4IHN1Y2Nlc3NmdWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWxs
IHRlc3RzIHN1Y2Nlc3NmdWxseSBwYXNzZWQhCi0nJycpCi0gICAgICAgICAgICArIDAsCi0gICAg
ICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J3J1bi1hcGktdGVzdHMtd2l0aG91dC1wYXRjaCcpCi0gICAgICAgIHJldHVybiBzZWxm
LnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfb25lX2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNl
bGYuc2V0dXBTdGVwKFJ1bkFQSVRlc3RzV2l0aG91dFBhdGNoKCkpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdtYWMtbW9qYXZlJykKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVidWcnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZGVybmFtZScsICdBUEktVGVzdHMtaU9TLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2J1aWxkbnVtYmVyJywgJzEyMycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3dv
cmtlcm5hbWUnLCAnZXdzMTU2JykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRz
KAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNv
bW1hbmQ9WydweXRob24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xz
L1NjcmlwdHMvcnVuLWFwaS10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLS1uby1idWlsZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kZWJ1
ZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS12ZXJib3NlJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWpzb24tb3V0cHV0PXswfScuZm9ybWF0KHNl
bGYuanNvbkZpbGVOYW1lKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dmaWxlcz17J2pz
b24nOiBzZWxmLmpzb25GaWxlTmFtZX0sCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnCi13b3JrZXIvMCBU
ZXN0V1RGLldURl9WYXJpYW50Lk9wZXJhdG9yQW1wZXJzYW5kIFBhc3NlZAotd29ya2VyLzAgVGVz
dFdURi5XVEZfVmFyaWFudC5SZWYgUGFzc2VkCi13b3JrZXIvMCBUZXN0V1RGLldURl9WYXJpYW50
LlJlZlB0ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuUmV0YWluUHRyIFBh
c3NlZAotd29ya2VyLzAgVGVzdFdURi5XVEZfVmFyaWFudC5WaXNpdG9yVXNpbmdNYWtlVmlzaXRv
ciBQYXNzZWQKLXdvcmtlci8wIFRlc3RXVEYuV1RGX1ZhcmlhbnQuVmlzaXRvclVzaW5nU3dpdGNo
T24gUGFzc2VkCi13b3JrZXIvMCBleGl0aW5nCi1SYW4gMTg4OCB0ZXN0cyBvZiAxODg4IHdpdGgg
MTg4NyBzdWNjZXNzZnVsCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVRlc3Qgc3Vp
dGUgZmFpbGVkCi0KLUNyYXNoZWQKLQotICAgIFRlc3RXVEYuV1RGLlN0cmluZ0NvbmNhdGVuYXRl
X1Vuc2lnbmVkCi0gICAgICAgICoqRkFJTCoqIFdURi5TdHJpbmdDb25jYXRlbmF0ZV9VbnNpZ25l
ZAotCi0gICAgICAgIFRvb2xzXFxUZXN0V2ViS2l0QVBJXFxUZXN0c1xcV1RGXFxTdHJpbmdDb25j
YXRlbmF0ZS5jcHA6ODQKLSAgICAgICAgVmFsdWUgb2Y6IG1ha2VTdHJpbmcoJ2hlbGxvICcsIHN0
YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Pig0MikgLCAnIHdvcmxkJykKLSAgICAgICAgICBBY3R1
YWw6IGhlbGxvIDQyIHdvcmxkCi0gICAgICAgIEV4cGVjdGVkOiAnaGVsbG8gKiB3b3JsZCcKLSAg
ICAgICAgV2hpY2ggaXM6IDc0QjAwQzlDCi0KLVRlc3RpbmcgY29tcGxldGVkLCBFeGl0IHN0YXR1
czogMwotJycnKQotICAgICAgICAgICAgKyAxLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhw
ZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPScxIGFwaSB0ZXN0IGZhaWxl
ZCBvciB0aW1lZCBvdXQnKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRl
ZiB0ZXN0X211bHRpcGxlX2ZhaWx1cmVzX2d0ayhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoUnVuQVBJVGVzdHNXaXRob3V0UGF0Y2goKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
ZnVsbFBsYXRmb3JtJywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3Jt
JywgJ2d0aycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAnZGVi
dWcnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdBUEktVGVzdHMt
R1RLLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkbnVtYmVyJywgJzEzNTI5
JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnd29ya2VybmFtZScsICdpZ2FsaWE0LWd0ay13
azItZXdzJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
bG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1kZWJ1Zycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1qc29uLW91dHB1dD17MH0nLmZv
cm1hdChzZWxmLmpzb25GaWxlTmFtZSldLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nZmls
ZXM9eydqc29uJzogc2VsZi5qc29uRmlsZU5hbWV9LAotICAgICAgICAgICAgICAgICAgICAgICAg
KQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScnJwotKipQ
QVNTKiogR1N0cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJCYXNpY3MKLSoqUEFTUyoqIEdTdHJlYW1l
clRlc3QubWFwcGVkQnVmZmVyUmVhZFNhbml0eQotKipQQVNTKiogR1N0cmVhbWVyVGVzdC5tYXBw
ZWRCdWZmZXJXcml0ZVNhbml0eQotKipQQVNTKiogR1N0cmVhbWVyVGVzdC5tYXBwZWRCdWZmZXJD
YWNoZXNTaGFyZWRCdWZmZXJzCi0qKlBBU1MqKiBHU3RyZWFtZXJUZXN0Lm1hcHBlZEJ1ZmZlckRv
ZXNOb3RBZGRFeHRyYVJlZnMKLQotVW5leHBlY3RlZCBmYWlsdXJlcyAoMykKLSAgICAvVGVzdFdU
RgotICAgICAgICBXVEZfRGF0ZU1hdGguY2FsY3VsYXRlTG9jYWxUaW1lT2Zmc2V0Ci0gICAgL1dl
YktpdDJHdGsvVGVzdFByaW50aW5nCi0gICAgICAgIC93ZWJraXQvV2ViS2l0UHJpbnRPcGVyYXRp
b24vY2xvc2UtYWZ0ZXItcHJpbnQKLSAgICAvV2ViS2l0Mkd0ay9UZXN0V2Vic2l0ZURhdGEKLSAg
ICAgICAgL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9kYXRhYmFzZXMKLQotVW5leHBlY3RlZCBw
YXNzZXMgKDEpCi0gICAgL1dlYktpdDJHdGsvVGVzdFVJQ2xpZW50Ci0gICAgICAgIC93ZWJraXQv
V2ViS2l0V2ViVmlldy91c2VybWVkaWEtZW51bWVyYXRlZGV2aWNlcy1wZXJtaXNzaW9uLWNoZWNr
Ci0KLVJhbiAxMjk2IHRlc3RzIG9mIDEyOTggd2l0aCAxMjkzIHN1Y2Nlc3NmdWwKLScnJykKLSAg
ICAgICAgICAgICsgMywKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nMyBhcGkgdGVzdHMgZmFpbGVkIG9yIHRpbWVkIG91
dCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RBcmNoaXZl
VGVzdFJlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0g
ICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVm
IHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQXJjaGl2ZVRlc3RS
ZXN1bHRzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Z1bGxQbGF0Zm9ybScsICdpb3Mt
c2ltdWxhdG9yJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zLXNp
bXVsYXRvcicpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVs
ZWFzZScpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dF
bnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbics
ICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlJywgJy0tcGxhdGZv
cm09aW9zLXNpbXVsYXRvcicsICAnLS1yZWxlYXNlJywgJ2FyY2hpdmUnXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICkKLSAgICAgICAgICAgICsgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxm
LmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQXJjaGl2ZWQgdGVz
dCByZXN1bHRzJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChBcmNoaXZlVGVzdFJlc3Vs
dHMoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgnZnVsbFBsYXRmb3JtJywgJ21hYy1tb2ph
dmUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwbGF0Zm9ybScsICdtYWMnKQotICAgICAg
ICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L3Rlc3QtcmVzdWx0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMnLCAgJy0tZGVidWcn
LCAnYXJjaGl2ZSddLAotICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKyBF
eHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUuJykKLSAg
ICAgICAgICAgICsgMiwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVz
dWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nQXJjaGl2ZWQgdGVzdCByZXN1bHRzIChmYWlsdXJl
KScpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RVcGxvYWRU
ZXN0UmVzdWx0cyhCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgot
ICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAg
ICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYg
dGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChVcGxvYWRUZXN0UmVz
dWx0cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ3JlbGVh
c2UnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdhcmNoaXRlY3R1cmUnLCAneDg2XzY0JykK
LSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ21hY09TLVNpZXJyYS1SZWxlYXNlLVdLMi1U
ZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZG51bWJlcicsICcxMicp
Ci0gICAgICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdFJl
bW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0KCd1cGxvYWRGaWxlJywgZGljdCgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrZXJzcmM9J2xheW91dC10
ZXN0LXJlc3VsdHMuemlwJywgd29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJsb2Nrc2l6ZT0xMDI0ICogMjU2LCBtYXhzaXplPU5vbmUsIGtl
ZXBzdGFtcD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3
cml0ZXI9RXhwZWN0UmVtb3RlUmVmKHJlbW90ZXRyYW5zZmVyLkZpbGVXcml0ZXIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpCi0gICAgICAgICAgICArIEV4cGVjdC5i
ZWhhdmlvcih1cGxvYWRGaWxlV2l0aENvbnRlbnRzT2ZTdHJpbmcoJ0R1bW15IHppcCBmaWxlIGNv
bnRlbnQuJykpCi0gICAgICAgICAgICArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBl
Y3RVcGxvYWRlZEZpbGUoJ3B1YmxpY19odG1sL3Jlc3VsdHMvbWFjT1MtU2llcnJhLVJlbGVhc2Ut
V0syLVRlc3RzLUVXUy9yMTIzNC0xMi56aXAnKQotCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29t
ZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdVcGxvYWRlZCB0ZXN0IHJlc3VsdHMnKQot
ICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfd2l0
aF9pZGVudGlmaWVyKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChVcGxvYWRUZXN0UmVz
dWx0cyhpZGVudGlmaWVyPSdjbGVhbi10cmVlJykpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHko
J2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2Fy
Y2hpdGVjdHVyZScsICd4ODZfNjQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9p
ZCcsICcyNzEyMTEnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdp
T1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZG51bWJlcicsICcxMjAnKQotICAgICAgICBzZWxmLmV4cGVjdEhpZGRlbihGYWxzZSkK
LSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdCgn
dXBsb2FkRmlsZScsIGRpY3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd29ya2Vyc3JjPSdsYXlvdXQtdGVzdC1yZXN1bHRzLnppcCcsIHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja3NpemU9MTAyNCAq
IDI1NiwgbWF4c2l6ZT1Ob25lLCBrZWVwc3RhbXA9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgd3JpdGVyPUV4cGVjdFJlbW90ZVJlZihyZW1vdGV0cmFuc2Zl
ci5GaWxlV3JpdGVyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKQot
ICAgICAgICAgICAgKyBFeHBlY3QuYmVoYXZpb3IodXBsb2FkRmlsZVdpdGhDb250ZW50c09mU3Ry
aW5nKCdEdW1teSB6aXAgZmlsZSBjb250ZW50LicpKQotICAgICAgICAgICAgKyAwLAotICAgICAg
ICApCi0gICAgICAgIHNlbGYuZXhwZWN0VXBsb2FkZWRGaWxlKCdwdWJsaWNfaHRtbC9yZXN1bHRz
L2lPUy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9yMjcxMjExLTEyMC1jbGVhbi10cmVlLnpp
cCcpCi0KLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9z
dHJpbmc9J1VwbG9hZGVkIHRlc3QgcmVzdWx0cycpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0KLWNsYXNzIFRlc3RFeHRyYWN0VGVzdFJlc3VsdHMoQnVpbGRTdGVwTWl4aW5BZGRp
dGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAg
IHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRT
dGVwKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVh
ckRvd25CdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAg
c2VsZi5zZXR1cFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJv
cGVydHkoJ2NvbmZpZ3VyYXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVy
bmFtZScsICdtYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTJykKLSAgICAgICAgc2Vs
Zi5zZXRQcm9wZXJ0eSgnYnVpbGRudW1iZXInLCAnMTInKQotICAgICAgICBzZWxmLmV4cGVjdExv
Y2FsQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RNYXN0ZXJTaGVsbENvbW1hbmQoY29tbWFu
ZD1bJ3VuemlwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLXEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
bycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxp
Y19odG1sL3Jlc3VsdHMvbWFjT1MtU2llcnJhLVJlbGVhc2UtV0syLVRlc3RzLUVXUy9yMTIzNC0x
Mi56aXAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICct
ZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B1Ymxp
Y19odG1sL3Jlc3VsdHMvbWFjT1MtU2llcnJhLVJlbGVhc2UtV0syLVRlc3RzLUVXUy9yMTIzNC0x
MicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAg
ICAgICAgICAgKyAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1
bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdFeHRyYWN0ZWQgdGVzdCByZXN1bHRzJykKLSAgICAg
ICAgc2VsZi5leHBlY3RBZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cycs
ICdodHRwczovL2V3cy1idWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9tYWNPUy1TaWVy
cmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IyNDY4LTEyL3Jlc3VsdHMuaHRtbCcpXSkKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dpdGhfaWRl
bnRpZmllcihzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoRXh0cmFjdFRlc3RSZXN1bHRz
KGlkZW50aWZpZXI9J3JlcnVuJykpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2NvbmZpZ3Vy
YXRpb24nLCAncmVsZWFzZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywg
JzEyMzQnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFtZScsICdpT1MtMTIt
U2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWls
ZG51bWJlcicsICcxMicpCi0gICAgICAgIHNlbGYuZXhwZWN0TG9jYWxDb21tYW5kcygKLSAgICAg
ICAgICAgIEV4cGVjdE1hc3RlclNoZWxsQ29tbWFuZChjb21tYW5kPVsndW56aXAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctcScsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljX2h0bWwvcmVzdWx0cy9pT1Mt
MTItU2ltdWxhdG9yLVdLMi1UZXN0cy1FV1MvcjEyMzQtMTItcmVydW4uemlwJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLWQnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwdWJsaWNfaHRtbC9yZXN1bHRzL2lP
Uy0xMi1TaW11bGF0b3ItV0syLVRlc3RzLUVXUy9yMTIzNC0xMi1yZXJ1bicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotICAgICAgICAgICAgKyAwLAot
ICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3Rh
dGVfc3RyaW5nPSdFeHRyYWN0ZWQgdGVzdCByZXN1bHRzJykKLSAgICAgICAgc2VsZi5leHBlY3RB
ZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cycsICdodHRwczovL2V3cy1i
dWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9pT1MtMTItU2ltdWxhdG9yLVdLMi1UZXN0
cy1FV1MvcjEyMzQtMTIvcmVzdWx0cy5odG1sJyldKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5T
dGVwKCkKLQotICAgIGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBT
dGVwKEV4dHJhY3RUZXN0UmVzdWx0cygpKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25m
aWd1cmF0aW9uJywgJ2RlYnVnJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQn
LCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ21hY09T
LVNpZXJyYS1SZWxlYXNlLVdLMi1UZXN0cy1FV1MnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5
KCdidWlsZG51bWJlcicsICcxMicpCi0gICAgICAgIHNlbGYuZXhwZWN0TG9jYWxDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdE1hc3RlclNoZWxsQ29tbWFuZChjb21tYW5kPVsndW56aXAnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctcScsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1vJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljX2h0bWwvcmVzdWx0
cy9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IxMjM0LTEyLnppcCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1kJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljX2h0bWwvcmVzdWx0
cy9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMtRVdTL3IxMjM0LTEyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgICAgICAgICArIDIs
Ci0gICAgICAgICkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1GQUlMVVJFLCBz
dGF0ZV9zdHJpbmc9J2ZhaWxlZCAoMikgKGZhaWx1cmUpJykKLSAgICAgICAgc2VsZi5leHBlY3RB
ZGRlZFVSTHMoW2NhbGwoJ3ZpZXcgbGF5b3V0IHRlc3QgcmVzdWx0cycsICdodHRwczovL2V3cy1i
dWlsZC5zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9tYWNPUy1TaWVycmEtUmVsZWFzZS1XSzIt
VGVzdHMtRVdTL3IxMjM0LTEyL3Jlc3VsdHMuaHRtbCcpXSkKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLQotY2xhc3MgVGVzdFByaW50Q29uZmlndXJhdGlvbihCdWlsZFN0ZXBNaXhp
bkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAg
ICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBC
dWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2Vs
Zi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX21hYyhzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUHJpbnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywgJ21hY09TLUhpZ2gtU2llcnJhLVJlbGVhc2Ut
V0syLVRlc3RzLUVXUycpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ21h
Yy1oaWdoc2llcnJhJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2hvc3RuYW1lJ10sIHdvcmtkaXI9J3drZGly
JywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVj
dFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J2V3czE1MC5hcHBsZS5jb20nKSwKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29ya2Rpcj0nd2tkaXInLCB0
aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hl
bGwubG9nKCdzdGRpbycsIHN0ZG91dD0nJydGaWxlc3lzdGVtICAgICBTaXplICAgVXNlZCAgQXZh
aWwgQ2FwYWNpdHkgaXVzZWQgIGlmcmVlICVpdXNlZCAgTW91bnRlZCBvbgotL2Rldi9kaXNrMXMx
ICAxMTlHaSAgIDk1R2kgICAyM0dpICAgIDgxJSAgOTM3OTU5IDkyMjMzNzIwMzY4NTM4Mzc4NDgg
ICAgMCUgICAvCi0vZGV2L2Rpc2sxczQgIDExOUdpICAgMjBLaSAgIDIzR2kgICAgIDElICAgICAg
IDAgOTIyMzM3MjAzNjg1NDc3NTgwNyAgICAwJSAgIC9wcml2YXRlL3Zhci92bQotL2Rldi9kaXNr
MHMzICAxMTlHaSAgIDIyR2kgICA5N0dpICAgIDE5JSAgMzM3NTk1ICAgICAgICAgIDQyOTQ2Mjk2
ODQgICAgMCUgICAvVm9sdW1lcy9EYXRhJycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNv
bW1hbmQ9WydkYXRlJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1G
YWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9
J1R1ZSBBcHIgIDkgMTU6MzA6NTIgUERUIDIwMTknKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KGNvbW1hbmQ9Wydzd192ZXJzJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52
aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBz
dGRvdXQ9JycnUHJvZHVjdE5hbWU6CU1hYyBPUyBYCi1Qcm9kdWN0VmVyc2lvbjoJMTAuMTMuNAot
QnVpbGRWZXJzaW9uOgkxN0UxOTknJycpLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFu
ZD1bJ3hjb2RlYnVpbGQnLCAnLXNkaycsICctdmVyc2lvbiddLCB3b3JrZGlyPSd3a2RpcicsIHRp
bWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9JycnTWFjT1NYMTAuMTMuc2RrIC0gbWFjT1MgMTAuMTMgKG1hY29z
eDEwLjEzKQotU0RLVmVyc2lvbjogMTAuMTMKLVBhdGg6IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9T
REtzL01hY09TWDEwLjEzLnNkawotUGxhdGZvcm1WZXJzaW9uOiAxLjEKLVBsYXRmb3JtUGF0aDog
L0FwcGxpY2F0aW9ucy9YY29kZS5hcHAvQ29udGVudHMvRGV2ZWxvcGVyL1BsYXRmb3Jtcy9NYWNP
U1gucGxhdGZvcm0KLVByb2R1Y3RCdWlsZFZlcnNpb246IDE3RTE4OQotUHJvZHVjdENvcHlyaWdo
dDogMTk4My0yMDE4IEFwcGxlIEluYy4KLVByb2R1Y3ROYW1lOiBNYWMgT1MgWAotUHJvZHVjdFVz
ZXJWaXNpYmxlVmVyc2lvbjogMTAuMTMuNAotUHJvZHVjdFZlcnNpb246IDEwLjEzLjQKLQotWGNv
ZGUgOS40LjEKLUJ1aWxkIHZlcnNpb24gOUYyMDAwJycnKQotICAgICAgICAgICAgKyAwLAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VwdGltZSddLCB3b3JrZGlyPSd3a2Rpcics
IHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RT
aGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScgNjozMSAgdXAgMSBkYXksIDE5OjA1LCAyNCB1c2Vy
cywgbG9hZCBhdmVyYWdlczogNC4xNyA3LjIzIDUuNDUnKSwKLSAgICAgICAgKQotICAgICAgICBz
ZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nT1M6IEhpZ2gg
U2llcnJhICgxMC4xMy40KSwgWGNvZGU6IDkuNC4xJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVu
U3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX2lvc19zaW11bGF0b3Ioc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2V0dXBTdGVwKFByaW50Q29uZmlndXJhdGlvbigpKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdidWlsZGVybmFtZScsICdtYWNPUy1TaWVycmEtUmVsZWFzZS1XSzItVGVzdHMt
RVdTJykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnaW9zLXNpbXVsYXRv
ci0xMicpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0bmFtZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVv
dXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ3N0ZGlvJywgc3Rkb3V0PSdld3MxNTIuYXBwbGUuY29tJyksCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbChjb21tYW5kPVsnZGYnLCAnLWhsJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02
MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygn
c3RkaW8nLCBzdGRvdXQ9JycnRmlsZXN5c3RlbSAgICAgU2l6ZSAgIFVzZWQgIEF2YWlsIENhcGFj
aXR5IGl1c2VkICBpZnJlZSAlaXVzZWQgIE1vdW50ZWQgb24KLS9kZXYvZGlzazFzMSAgMTE5R2kg
ICA5NUdpICAgMjNHaSAgICA4MSUgIDkzNzk1OSA5MjIzMzcyMDM2ODUzODM3ODQ4ICAgIDAlICAg
LwotL2Rldi9kaXNrMXM0ICAxMTlHaSAgIDIwS2kgICAyM0dpICAgICAxJSAgICAgICAwIDkyMjMz
NzIwMzY4NTQ3NzU4MDcgICAgMCUgICAvcHJpdmF0ZS92YXIvdm0KLS9kZXYvZGlzazBzMyAgMTE5
R2kgICAyMkdpICAgOTdHaSAgICAxOSUgIDMzNzU5NSAgICAgICAgICA0Mjk0NjI5Njg0ICAgIDAl
ICAgL1ZvbHVtZXMvRGF0YScnJyksCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsn
ZGF0ZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsg
MAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdUdWUgQXBy
ICA5IDE1OjMwOjUyIFBEVCAyMDE5JyksCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5k
PVsnc3dfdmVycyddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFs
c2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PScn
J1Byb2R1Y3ROYW1lOglNYWMgT1MgWAotUHJvZHVjdFZlcnNpb246CTEwLjE0LjUKLUJ1aWxkVmVy
c2lvbjoJMThGMTMyJycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wyd4Y29k
ZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNpb24nXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYw
LCBsb2dFbnZpcm9uPUZhbHNlKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlv
Jywgc3Rkb3V0PScnJ2lQaG9uZVNpbXVsYXRvcjEyLjIuc2RrIC0gU2ltdWxhdG9yIC0gaU9TIDEy
LjIgKGlwaG9uZXNpbXVsYXRvcjEyLjIpCi1TREtWZXJzaW9uOiAxMi4yCi1QYXRoOiAvQXBwbGlj
YXRpb25zL1hjb2RlLmFwcC9Db250ZW50cy9EZXZlbG9wZXIvUGxhdGZvcm1zL2lQaG9uZVNpbXVs
YXRvci5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9pUGhvbmVTaW11bGF0b3IxMi4yLnNkawotUGxh
dGZvcm1WZXJzaW9uOiAxMi4yCi1QbGF0Zm9ybVBhdGg6IC9BcHBsaWNhdGlvbnMvWGNvZGUuYXBw
L0NvbnRlbnRzL0RldmVsb3Blci9QbGF0Zm9ybXMvaVBob25lU2ltdWxhdG9yLnBsYXRmb3JtCi1C
dWlsZElEOiAxNUM0QkFGOC00NjMyLTExRTktODZFQi1CQTQ3RjFGRkFDM0MKLVByb2R1Y3RCdWls
ZFZlcnNpb246IDE2RTIyNgotUHJvZHVjdENvcHlyaWdodDogMTk4My0yMDE5IEFwcGxlIEluYy4K
LVByb2R1Y3ROYW1lOiBpUGhvbmUgT1MKLVByb2R1Y3RWZXJzaW9uOiAxMi4yCi0KLVhjb2RlIDEw
LjIKLUJ1aWxkIHZlcnNpb24gMTBFMTI1JycnKQotICAgICAgICAgICAgKyAwLAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VwdGltZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVv
dXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ3N0ZGlvJywgc3Rkb3V0PScgNjozMSAgdXAgMSBkYXksIDE5OjA1LCAyNCB1c2VycywgbG9h
ZCBhdmVyYWdlczogNC4xNyA3LjIzIDUuNDUnKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4
cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nT1M6IE1vamF2ZSAoMTAu
MTQuNSksIFhjb2RlOiAxMC4yJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAg
ICBkZWYgdGVzdF9zdWNjZXNzX3dlYmtpdHB5KHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3Rl
cChQcmludENvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZv
cm0nLCAnKicpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0bmFtZSddLCB3b3JrZGlyPSd3a2RpcicsIHRp
bWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxs
KGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dF
bnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsnZGF0
ZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydzd192ZXJzJ10sIHdvcmtkaXI9J3dr
ZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4
cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnUHJvZHVjdE5hbWU6CU1hYyBPUyBYCi1Q
cm9kdWN0VmVyc2lvbjoJMTAuMTMuNgotQnVpbGRWZXJzaW9uOgkxN0c3MDI0JycnKSwKLSAgICAg
ICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNp
b24nXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAK
LSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nJydYY29kZSAx
MC4yXG5CdWlsZCB2ZXJzaW9uIDEwRTEyNScnJyksCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChj
b21tYW5kPVsndXB0aW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJv
bj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRv
dXQ9JyA2OjMxICB1cCAyMiBzZWNvbmRzLCAxMjowNSwgMiB1c2VycywgbG9hZCBhdmVyYWdlczog
My4xNyA3LjIzIDUuNDUnKSwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUo
cmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nT1M6IEhpZ2ggU2llcnJhICgxMC4xMy42KSwg
WGNvZGU6IDEwLjInKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0
ZXN0X3N1Y2Nlc3NfbGludXhfd3BlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChQcmlu
dENvbmZpZ3VyYXRpb24oKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAn
d3BlJykKLQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAg
RXhwZWN0U2hlbGwoY29tbWFuZD1bJ2hvc3RuYW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91
dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxv
Zygnc3RkaW8nLCBzdGRvdXQ9J2V3czE5MCcpLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29t
bWFuZD1bJ2RmJywgJy1obCddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmly
b249RmFsc2UpICsgMAotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rk
b3V0PScnJ0ZpbGVzeXN0ZW0gICAgIFNpemUgICBVc2VkICBBdmFpbCBDYXBhY2l0eSBpdXNlZCAg
aWZyZWUgJWl1c2VkICBNb3VudGVkIG9uCi0vZGV2L2Rpc2swczMgIDExOUdpICAgMjJHaSAgIDk3
R2kgICAgMTklICAzMzc1OTUgICAgICAgICAgNDI5NDYyOTY4NCAgICAwJSAgIC8nJycpLAotICAg
ICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RhdGUnXSwgd29ya2Rpcj0nd2tkaXInLCB0
aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hl
bGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVHVlIEFwciAgOSAxNTozMDo1MiBQRFQgMjAxOScpLAot
ICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VuYW1lJywgJy1hJ10sIHdvcmtkaXI9
J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwCi0gICAgICAgICAgICAr
IEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9JycnTGludXgga29kYW1hLWV3cyA1LjAu
NC1hcmNoMS0xLUFSQ0ggIzEgU01QIFBSRUVNUFQgU2F0IE1hciAyMyAyMTowMDozMyBVVEMgMjAx
OSB4ODZfNjQgR05VL0xpbnV4JycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9
Wyd1cHRpbWUnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNl
KSArIDAKLSAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nIDY6
MzEgIHVwIDIyIHNlY29uZHMsIDEyOjA1LCAyIHVzZXJzLCBsb2FkIGF2ZXJhZ2VzOiAzLjE3IDcu
MjMgNS40NScpLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9
U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdQcmludGVkIGNvbmZpZ3VyYXRpb24nKQotICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5TdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3NfbGludXhfZ3RrKHNl
bGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChQcmludENvbmZpZ3VyYXRpb24oKSkKLSAgICAg
ICAgc2VsZi5zZXRQcm9wZXJ0eSgncGxhdGZvcm0nLCAnZ3RrJykKLQotICAgICAgICBzZWxmLmV4
cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2hv
c3RuYW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkg
KyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RmJywgJy1obCddLCB3b3Jr
ZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkYXRlJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91
dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29t
bWFuZD1bJ3VuYW1lJywgJy1hJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52
aXJvbj1GYWxzZSkgKyAwLAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ3VwdGlt
ZSddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwK
LSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0
YXRlX3N0cmluZz0nUHJpbnRlZCBjb25maWd1cmF0aW9uJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzX3dpbihzZWxmKToKLSAgICAgICAgc2Vs
Zi5zZXR1cFN0ZXAoUHJpbnRDb25maWd1cmF0aW9uKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVy
dHkoJ3BsYXRmb3JtJywgJ3dpbicpCi0KLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5k
cygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1hbmQ9Wydob3N0bmFtZSddLCB3b3JrZGly
PSd3a2RpcicsIHRpbWVvdXQ9NjAsIGxvZ0Vudmlyb249RmFsc2UpICsgMCwKLSAgICAgICAgICAg
IEV4cGVjdFNoZWxsKGNvbW1hbmQ9WydkZicsICctaGwnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1l
b3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5l
eHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1ByaW50ZWQgY29uZmln
dXJhdGlvbicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3Rf
ZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUHJpbnRDb25maWd1cmF0aW9u
KCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BsYXRmb3JtJywgJ2lvcy0xMicpCi0gICAg
ICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChj
b21tYW5kPVsnaG9zdG5hbWUnXSwgd29ya2Rpcj0nd2tkaXInLCB0aW1lb3V0PTYwLCBsb2dFbnZp
cm9uPUZhbHNlKSArIDAsCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsnZGYnLCAn
LWhsJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAw
LAotICAgICAgICAgICAgRXhwZWN0U2hlbGwoY29tbWFuZD1bJ2RhdGUnXSwgd29ya2Rpcj0nd2tk
aXInLCB0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKSArIDAsCi0gICAgICAgICAgICBFeHBl
Y3RTaGVsbChjb21tYW5kPVsnc3dfdmVycyddLCB3b3JrZGlyPSd3a2RpcicsIHRpbWVvdXQ9NjAs
IGxvZ0Vudmlyb249RmFsc2UpICsgMQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0
ZGlvJywgc3Rkb3V0PScnJ1Vwb24gZXhlY3ZwZSBzd192ZXJzIFsnc3dfdmVycyddIGluIGVudmly
b25tZW50IGlkIDc2OTY1NDU2NTA0MDAKLTpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz
dCk6Ci0gIEZpbGUgIi91c3IvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50
ZXJuZXQvcHJvY2Vzcy5weSIsIGxpbmUgNDQ1LCBpbiBfZm9yawotICAgIGVudmlyb25tZW50KQot
ICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0
L3Byb2Nlc3MucHkiLCBsaW5lIDUyMywgaW4gX2V4ZWNDaGlsZAotICAgIG9zLmV4ZWN2cGUoZXhl
Y3V0YWJsZSwgYXJncywgZW52aXJvbm1lbnQpCi0gIEZpbGUgIi91c3IvbGliL3B5dGhvbjIuNy9v
cy5weSIsIGxpbmUgMzU1LCBpbiBleGVjdnBlCi0gICAgX2V4ZWN2cGUoZmlsZSwgYXJncywgZW52
KQotICBGaWxlICIvdXNyL2xpYi9weXRob24yLjcvb3MucHkiLCBsaW5lIDM4MiwgaW4gX2V4ZWN2
cGUKLSAgICBmdW5jKGZ1bGxuYW1lLCAqYXJncmVzdCkKLU9TRXJyb3I6IFtFcnJubyAyXSBObyBz
dWNoIGZpbGUgb3IgZGlyZWN0b3J5JycnKSwKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKGNvbW1h
bmQ9Wyd4Y29kZWJ1aWxkJywgJy1zZGsnLCAnLXZlcnNpb24nXSwgd29ya2Rpcj0nd2tkaXInLCB0
aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlKQotICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5s
b2coJ3N0ZGlvJywgc3Rkb3V0PScnJ1Vwb24gZXhlY3ZwZSB4Y29kZWJ1aWxkIFsneGNvZGVidWls
ZCcsICctc2RrJywgJy12ZXJzaW9uJ10gaW4gZW52aXJvbm1lbnQgaWQgNzY5NjU0NTYxMjQxNgot
OlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgRmlsZSAiL3Vzci9saWIvcHl0
aG9uMi43L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm9jZXNzLnB5IiwgbGluZSA0
NDUsIGluIF9mb3JrCi0gICAgZW52aXJvbm1lbnQpCi0gIEZpbGUgIi91c3IvbGliL3B5dGhvbjIu
Ny9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvcHJvY2Vzcy5weSIsIGxpbmUgNTIzLCBp
biBfZXhlY0NoaWxkCi0gICAgb3MuZXhlY3ZwZShleGVjdXRhYmxlLCBhcmdzLCBlbnZpcm9ubWVu
dCkKLSAgRmlsZSAiL3Vzci9saWIvcHl0aG9uMi43L29zLnB5IiwgbGluZSAzNTUsIGluIGV4ZWN2
cGUKLSAgICBfZXhlY3ZwZShmaWxlLCBhcmdzLCBlbnYpCi0gIEZpbGUgIi91c3IvbGliL3B5dGhv
bjIuNy9vcy5weSIsIGxpbmUgMzgyLCBpbiBfZXhlY3ZwZQotICAgIGZ1bmMoZnVsbG5hbWUsICph
cmdyZXN0KQotT1NFcnJvcjogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnknJycp
Ci0gICAgICAgICAgICArIDEsCi0gICAgICAgICAgICBFeHBlY3RTaGVsbChjb21tYW5kPVsndXB0
aW1lJ10sIHdvcmtkaXI9J3drZGlyJywgdGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSkgKyAw
LAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwg
c3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gcHJpbnQgY29uZmlndXJhdGlvbicpCi0gICAgICAgIHJl
dHVybiBzZWxmLnJ1blN0ZXAoKQotCi0KLWNsYXNzIFRlc3RGaW5kTW9kaWZpZWRDaGFuZ2VMb2dz
KEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNl
dFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICByZXR1
cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X21vZGlm
aWVkX2NoYW5nZWxvZ3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEZpbmRNb2RpZmll
ZENoYW5nZUxvZ3MoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGaW5kTW9kaWZpZWRDaGFu
Z2VMb2dzLmhhbHRPbkZhaWx1cmUsIEZhbHNlKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdi
dWlsZGVybmFtZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNv
bW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgdGltZW91dD0xODAsCi0gICAgICAgICAgICAgICAgICAgICAgICBs
b2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ2dpdCcs
ICdkaWZmJywgJy1yJywgJy0tbmFtZS1zdGF0dXMnLCAnLS1uby1yZW5hbWVzJywgJy0tbm8tZXh0
LWRpZmYnLCAnLS1mdWxsLWluZGV4J10pICsKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsLmxvZygn
c3RkaW8nLCBzdGRvdXQ9JycnTQlTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKLU0JU291cmNlL1dl
YkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKLU0J
U291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja01hcmdpbkNvbGxhcHNl
LmNwcAotTQlUb29scy9DaGFuZ2VMb2cKLU0JVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3Rz
LnR4dCcnJykgKwotICAgICAgICAgICAgMCwKLSAgICAgICAgKQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nRm91bmQgbW9kaWZpZWQgQ2hh
bmdlTG9ncycpCi0gICAgICAgIHJjID0gc2VsZi5ydW5TdGVwKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzZWxmLmdldFByb3BlcnR5KCdtb2RpZmllZF9jaGFuZ2Vsb2dzJyksIFsnU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nJywgJ1Rvb2xzL0NoYW5nZUxvZyddKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25l
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2Zpbmlz
aF9zdW1tYXJ5JyksIE5vbmUpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3Rfc3Vj
Y2Vzc19hZGRlZF9jaGFuZ2Vsb2coc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKEZpbmRN
b2RpZmllZENoYW5nZUxvZ3MoKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRpbWVvdXQ9MTgwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnZGlmZics
ICctcicsICctLW5hbWUtc3RhdHVzJywgJy0tbm8tcmVuYW1lcycsICctLW5vLWV4dC1kaWZmJywg
Jy0tZnVsbC1pbmRleCddKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywg
c3Rkb3V0PScnJ0EJVG9vbHMvU2NyaXB0cy9DaGFuZ2VMb2cKLU0JVG9vbHMvU2NyaXB0cy9ydW4t
YXBpLXRlc3RzJycnKSArCi0gICAgICAgICAgICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYu
ZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VTUywgc3RhdGVfc3RyaW5nPSdGb3VuZCBtb2RpZmll
ZCBDaGFuZ2VMb2dzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ21vZGlmaWVkX2NoYW5nZWxvZ3MnKSwgWydU
b29scy9TY3JpcHRzL0NoYW5nZUxvZyddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYu
Z2V0UHJvcGVydHkoJ2J1Z3ppbGxhX2NvbW1lbnRfdGV4dCcpLCBOb25lKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ2J1aWxkX2ZpbmlzaF9zdW1tYXJ5JyksIE5v
bmUpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAg
ICAgICAgc2VsZi5zZXR1cFN0ZXAoRmluZE1vZGlmaWVkQ2hhbmdlTG9ncygpKQotICAgICAgICBz
ZWxmLnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5zZXRQcm9w
ZXJ0eSgnYnVpbGRlcm5hbWUnLCAnQ29tbWl0LVF1ZXVlJykKLSAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTgwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9
WydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy0tbm8tcmVuYW1lcycsICct
LW5vLWV4dC1kaWZmJywgJy0tZnVsbC1pbmRleCddKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVs
bC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUnKSArCi0gICAgICAgICAg
ICAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVS
RSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gZmluZCBhbnkgbW9kaWZpZWQgQ2hhbmdlTG9nIGlu
IFBhdGNoIDEyMzQnKQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksICdV
bmFibGUgdG8gZmluZCBhbnkgbW9kaWZpZWQgQ2hhbmdlTG9nIGluIEF0dGFjaG1lbnQgMTIzNCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNo
X3N1bW1hcnknKSwgJ1VuYWJsZSB0byBmaW5kIGFueSBtb2RpZmllZCBDaGFuZ2VMb2cgaW4gUGF0
Y2ggMTIzNCcpCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFRlc3RDcmVhdGVMb2NhbEdJ
VENvbW1pdChCdWlsZFN0ZXBNaXhpbkFkZGl0aW9ucywgdW5pdHRlc3QuVGVzdENhc2UpOgotICAg
IGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5sb25nTWVzc2FnZSA9IFRydWUKLSAgICAg
ICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYp
OgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChDcmVhdGVMb2NhbEdJVENv
bW1pdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENyZWF0ZUxvY2FsR0lUQ29tbWl0Lmhh
bHRPbkZhaWx1cmUsIEZhbHNlKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdidWlsZGVybmFt
ZScsICdDb21taXQtUXVldWUnKQotICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdtb2RpZmllZF9j
aGFuZ2Vsb2dzJywgWydUb29scy9TY3JpcHRzL0NoYW5nZUxvZycsICdTb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cnXSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAg
ICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
IHRpbWVvdXQ9MzAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9J3BlcmwgVG9vbHMvU2NyaXB0cy9jb21t
aXQtbG9nLWVkaXRvciAtLXByaW50LWxvZyBUb29scy9TY3JpcHRzL0NoYW5nZUxvZyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgfCBnaXQgY29tbWl0IC0tYWxsIC1GIC0nKSArCi0gICAgICAgICAg
ICAwLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9U1VDQ0VT
Uywgc3RhdGVfc3RyaW5nPSdDcmVhdGVkIGxvY2FsIGdpdCBjb21taXQnKQotICAgICAgICByYyA9
IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRQcm9wZXJ0
eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknKSwgTm9uZSkKLSAgICAg
ICAgcmV0dXJuIHJjCi0KLSAgICBkZWYgdGVzdF9mYWlsdXJlX25vX2NoYW5nZWxvZyhzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ3JlYXRlTG9jYWxHSVRDb21taXQoKSkKLSAgICAgICAg
c2VsZi5zZXRQcm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuZXhwZWN0
T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdObyBtb2RpZmllZCBDaGFuZ2VM
b2cgZmlsZSBmb3VuZCBmb3IgUGF0Y2ggMTIzNCcpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1blN0
ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0
ZXAoQ3JlYXRlTG9jYWxHSVRDb21taXQoKSkKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgncGF0
Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ2J1aWxkZXJuYW1lJywg
J0NvbW1pdC1RdWV1ZScpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ21vZGlmaWVkX2NoYW5n
ZWxvZ3MnLCBbJ1Rvb2xzL1NjcmlwdHMvQ2hhbmdlTG9nJ10pCi0gICAgICAgIHNlbGYuZXhwZWN0
UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2Rpcics
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PTMwMCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PSdwZXJsIFRvb2xzL1NjcmlwdHMvY29tbWl0LWxvZy1lZGl0b3IgLS1wcmludC1sb2cgVG9vbHMv
U2NyaXB0cy9DaGFuZ2VMb2cgfCBnaXQgY29tbWl0IC0tYWxsIC1GIC0nKSArCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVkIGZhaWx1cmUnKSAr
Ci0gICAgICAgICAgICAyLAotICAgICAgICApCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0Y29tZShy
ZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQgdG8gY3JlYXRlIGdpdCBjb21taXQn
KQotICAgICAgICByYyA9IHNlbGYucnVuU3RlcCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2VsZi5nZXRQcm9wZXJ0eSgnYnVnemlsbGFfY29tbWVudF90ZXh0JyksICdGYWlsZWQgdG8gY3Jl
YXRlIGdpdCBjb21taXQgZm9yIEF0dGFjaG1lbnQgMTIzNCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5nZXRQcm9wZXJ0eSgnYnVpbGRfZmluaXNoX3N1bW1hcnknKSwgJ0ZhaWxlZCB0
byBjcmVhdGUgZ2l0IGNvbW1pdCBmb3IgUGF0Y2ggMTIzNCcpCi0gICAgICAgIHJldHVybiByYwot
Ci0KLWNsYXNzIFRlc3RWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIoQnVpbGRTdGVwTWl4aW5B
ZGRpdGlvbnMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAg
ICAgIHNlbGYubG9uZ01lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgZGVmIG1vY2tfbG9hZF9jb250
cmlidXRvcnMoY2xzLCAqYXJncywgKiprd2FyZ3MpOgotICAgICAgICAgICAgcmV0dXJuIHsnYWFr
YXNoX2phaW5AYXBwbGUuY29tJzogeyduYW1lJzogJ0Fha2FzaCBKYWluJywgJ3N0YXR1cyc6ICdy
ZXZpZXdlcid9LAotICAgICAgICAgICAgICAgICAgICAnY29tbWl0dGVyQHdlYmtpdC5vcmcnOiB7
J25hbWUnOiAnV2ViS2l0IENvbW1pdHRlcicsICdzdGF0dXMnOiAnY29tbWl0dGVyJ319Ci0gICAg
ICAgIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5sb2FkX2NvbnRyaWJ1dG9ycyA9IG1vY2tf
bG9hZF9jb250cmlidXRvcnMKLSAgICAgICAgcmV0dXJuIHNlbGYuc2V0VXBCdWlsZFN0ZXAoKQot
Ci0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50ZWFyRG93bkJ1
aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9zdWNjZXNzKHNlbGYpOgotICAgICAgICBzZWxmLnNl
dHVwU3RlcChWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIoKSkKLSAgICAgICAgc2VsZi5zZXRQ
cm9wZXJ0eSgncGF0Y2hfaWQnLCAnMTIzNCcpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3Bh
dGNoX2NvbW1pdHRlcicsICdjb21taXR0ZXJAd2Via2l0Lm9yZycpCi0gICAgICAgIHNlbGYuc2V0
UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyJywgJ2Fha2FzaF9qYWluQGFwcGxlLmNvbScpCi0gICAg
ICAgIHNlbGYuZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFZh
bGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5oYWx0T25GYWlsdXJlLCBGYWxzZSkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J1ZhbGlkYXRl
ZCBjb21taXRlciBhbmQgcmV2aWV3ZXInKQotICAgICAgICByZXR1cm4gc2VsZi5ydW5TdGVwKCkK
LQotICAgIGRlZiB0ZXN0X3N1Y2Nlc3Nfbm9fcmV2aWV3ZXIoc2VsZik6Ci0gICAgICAgIHNlbGYu
c2V0dXBTdGVwKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigpKQotICAgICAgICBzZWxmLnNl
dFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0eSgn
cGF0Y2hfY29tbWl0dGVyJywgJ2Fha2FzaF9qYWluQGFwcGxlLmNvbScpCi0gICAgICAgIHNlbGYu
ZXhwZWN0SGlkZGVuKEZhbHNlKQotICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNV
Q0NFU1MsIHN0YXRlX3N0cmluZz0nVmFsaWRhdGVkIGNvbW1pdHRlcicpCi0gICAgICAgIHJldHVy
biBzZWxmLnJ1blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9sb2FkX2NvbnRyaWJ1dG9y
cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVmFsaWRhdGVDb21taXRlckFuZFJldmll
d2VyKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAg
ICAgICBzZWxmLnNldFByb3BlcnR5KCdwYXRjaF9jb21taXR0ZXInLCAnYWJjQHdlYmtpdC5vcmcn
KQotICAgICAgICBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIubG9hZF9jb250cmlidXRvcnMg
PSBsYW1iZGEgeDoge30KLSAgICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0gICAgICAg
IHNlbGYuZXhwZWN0T3V0Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdGYWlsZWQg
dG8gZ2V0IGNvbnRyaWJ1dG9ycyBpbmZvcm1hdGlvbicpCi0gICAgICAgIHJldHVybiBzZWxmLnJ1
blN0ZXAoKQotCi0gICAgZGVmIHRlc3RfZmFpbHVyZV9pbnZhbGlkX2NvbW1pdHRlcihzZWxmKToK
LSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoVmFsaWRhdGVDb21taXRlckFuZFJldmlld2VyKCkpCi0g
ICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdwYXRjaF9jb21taXR0ZXInLCAnYWJjQHdlYmtpdC5vcmcnKQotICAgICAg
ICBzZWxmLmV4cGVjdEhpZGRlbihGYWxzZSkKLSAgICAgICAgc2VsZi5leHBlY3RPdXRjb21lKHJl
c3VsdD1GQUlMVVJFLCBzdGF0ZV9zdHJpbmc9J2FiY0B3ZWJraXQub3JnIGRvZXMgbm90IGhhdmUg
Y29tbWl0dGVyIHBlcm1pc3Npb25zJykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0K
LSAgICBkZWYgdGVzdF9mYWlsdXJlX2ludmFsaWRfcmV2aWV3ZXIoc2VsZik6Ci0gICAgICAgIHNl
bGYuc2V0dXBTdGVwKFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlcigpKQotICAgICAgICBzZWxm
LnNldFByb3BlcnR5KCdwYXRjaF9pZCcsICcxMjM0JykKLSAgICAgICAgc2VsZi5zZXRQcm9wZXJ0
eSgncGF0Y2hfY29tbWl0dGVyJywgJ2Fha2FzaF9qYWluQGFwcGxlLmNvbScpCi0gICAgICAgIHNl
bGYuc2V0UHJvcGVydHkoJ3BhdGNoX3Jldmlld2VyJywgJ2NvbW1pdHRlckB3ZWJraXQub3JnJykK
LSAgICAgICAgc2VsZi5leHBlY3RIaWRkZW4oRmFsc2UpCi0gICAgICAgIHNlbGYuZXhwZWN0T3V0
Y29tZShyZXN1bHQ9RkFJTFVSRSwgc3RhdGVfc3RyaW5nPSdjb21taXR0ZXJAd2Via2l0Lm9yZyBk
b2VzIG5vdCBoYXZlIHJldmlld2VyIHBlcm1pc3Npb25zJykKLSAgICAgICAgcmV0dXJuIHNlbGYu
cnVuU3RlcCgpCi0KLSAgICBkZWYgdGVzdF9sb2FkX2NvbnRyaWJ1dG9yc19mcm9tX2Rpc2soc2Vs
Zik6Ci0gICAgICAgIFZhbGlkYXRlQ29tbWl0ZXJBbmRSZXZpZXdlci5fYWRkVG9Mb2cgPSBsYW1i
ZGEgY2xzLCBsb2d0eXBlLCBsb2c6IHN5cy5zdGRvdXQud3JpdGUobG9nKQotICAgICAgICBjb250
cmlidXRvcnMgPSBWYWxpZGF0ZUNvbW1pdGVyQW5kUmV2aWV3ZXIoKS5sb2FkX2NvbnRyaWJ1dG9y
c19mcm9tX2Rpc2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRyaWJ1dG9yc1snQWFr
YXNoIEphaW4nXVsnbmlja3MnXSwgWydhYWthc2hfamFpbiddKQotCi0KLWNsYXNzIFRlc3RDaGVj
a1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMoQnVpbGRTdGVwTWl4aW5BZGRpdGlvbnMsIHVuaXR0ZXN0
LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYubG9uZ01lc3Nh
Z2UgPSBUcnVlCi0gICAgICAgIHJldHVybiBzZWxmLnNldFVwQnVpbGRTdGVwKCkKLQotICAgIGRl
ZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGVhckRvd25CdWlsZFN0ZXAo
KQotCi0gICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKLSAgICAgICAgQ2hlY2tQYXRjaFN0YXR1
c09uRVdTUXVldWVzLmdldF9wYXRjaF9zdGF0dXMgPSBsYW1iZGEgY2xzLCBwYXRjaF9pZCwgcXVl
dWU6IFNVQ0NFU1MKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFN0YXR1c09uRVdT
UXVldWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQnKQot
ICAgICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0n
Q2hlY2tlZCBwYXRjaCBzdGF0dXMgb24gb3RoZXIgcXVldWVzJykKLSAgICAgICAgcmMgPSBzZWxm
LnJ1blN0ZXAoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ3Bh
c3NlZF9tYWNfd2syJyksIFRydWUpCi0gICAgICAgIHJldHVybiByYwotCi0gICAgZGVmIHRlc3Rf
ZmFpbHVyZShzZWxmKToKLSAgICAgICAgc2VsZi5zZXR1cFN0ZXAoQ2hlY2tQYXRjaFN0YXR1c09u
RVdTUXVldWVzKCkpCi0gICAgICAgIHNlbGYuc2V0UHJvcGVydHkoJ3BhdGNoX2lkJywgJzEyMzQn
KQotICAgICAgICBDaGVja1BhdGNoU3RhdHVzT25FV1NRdWV1ZXMuZ2V0X3BhdGNoX3N0YXR1cyA9
IGxhbWJkYSBjbHMsIHBhdGNoX2lkLCBxdWV1ZTogRkFJTFVSRQotICAgICAgICBzZWxmLmV4cGVj
dE91dGNvbWUocmVzdWx0PVNVQ0NFU1MsIHN0YXRlX3N0cmluZz0nQ2hlY2tlZCBwYXRjaCBzdGF0
dXMgb24gb3RoZXIgcXVldWVzJykKLSAgICAgICAgcmMgPSBzZWxmLnJ1blN0ZXAoKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0UHJvcGVydHkoJ3Bhc3NlZF9tYWNfd2syJyksIE5v
bmUpCi0gICAgICAgIHJldHVybiByYwotCi0KLWNsYXNzIFRlc3RQdXNoQ29tbWl0VG9XZWJLaXRS
ZXBvKEJ1aWxkU3RlcE1peGluQWRkaXRpb25zLCB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvbmdNZXNzYWdlID0gVHJ1ZQotICAgICAgICBy
ZXR1cm4gc2VsZi5zZXRVcEJ1aWxkU3RlcCgpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLnRlYXJEb3duQnVpbGRTdGVwKCkKLQotICAgIGRlZiB0ZXN0X3N1
Y2Nlc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0dXBTdGVwKFB1c2hDb21taXRUb1dlYktpdFJl
cG8oKSkKLSAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKLSAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVv
dXQ9MzAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydnaXQnLCAnc3ZuJywgJ2Rjb21taXQnLCAnLS1y
bWRpciddKSArCi0gICAgICAgICAgICBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdD
b21taXR0ZWQgcjI1NjcyOScpICsKLSAgICAgICAgICAgIDAsCi0gICAgICAgICkKLSAgICAgICAg
c2VsZi5leHBlY3RPdXRjb21lKHJlc3VsdD1TVUNDRVNTLCBzdGF0ZV9zdHJpbmc9J0NvbW1pdHRl
ZCByMjU2NzI5JykKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuU3RlcCgpCi0KLSAgICBkZWYgdGVz
dF9mYWlsdXJlKHNlbGYpOgotICAgICAgICBzZWxmLnNldHVwU3RlcChQdXNoQ29tbWl0VG9XZWJL
aXRSZXBvKCkpCi0gICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAg
ICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0PTMwMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsnZ2l0JywgJ3N2bicsICdkY29tbWl0Jywg
Jy0tcm1kaXInXSkgKwotICAgICAgICAgICAgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91
dD0nVW5leHBlY3RlZCBmYWlsdXJlJykgKwotICAgICAgICAgICAgMiwKLSAgICAgICAgKQotICAg
ICAgICBzZWxmLmV4cGVjdE91dGNvbWUocmVzdWx0PUZBSUxVUkUsIHN0YXRlX3N0cmluZz0nRmFp
bGVkIHRvIHB1c2ggY29tbWl0IHRvIFdlYmtpdCByZXBvc2l0b3J5JykKLSAgICAgICAgcmV0dXJu
IHNlbGYucnVuU3RlcCgpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0
dGVzdC5tYWluKCkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC90ZW1w
bGF0ZXMvYnVpbGQuamFkZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYnVpbGQvdGVtcGxhdGVzL2J1aWxkLmphZGUJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZC90ZW1wbGF0ZXMvYnVpbGQuamFkZQkobm9uZXhp
c3RlbnQpCkBAIC0xLDM5ICswLDAgQEAKLS5jb250YWluZXIKLSAgLmFsZXJ0LmFsZXJ0LWRhbmdl
cihuZy1zaG93PSJlcnJvciIpIHt7ZXJyb3J9fQotICBuYXYKLSAgICB1bC5wYWdlcgotICAgICAg
bGkucHJldmlvdXMobmctY2xhc3M9InsnZGlzYWJsZWQnOiBidWlsZC5udW1iZXIgPT0gMX0iKQot
ICAgICAgICBhKG5nLWlmPSJidWlsZC5udW1iZXIgPiAxICIsIHVpLXNyZWY9ImJ1aWxkKHtidWls
ZDpwcmV2YnVpbGQubnVtYmVyfSkiKQotICAgICAgICAgICAgc3Bhbi5iYWRnZS1zdGF0dXMobmct
Y2xhc3M9InJlc3VsdHMyY2xhc3MocHJldmJ1aWxkLCAncHVsc2UnKSIpICZsYXJyOwotICAgICAg
ICAgICAgc3Bhbi5ub21vYmlsZSAmbmJzcDtQcmV2aW91cwotICAgICAgICBzcGFuKG5nLWlmPSJi
dWlsZC5udW1iZXIgPT0gMSIpICZsYXJyOwotICAgICAgICAgICAgc3Bhbi5ub21vYmlsZSAmbmJz
cDtQcmV2aW91cwotICAgICAgbGkobmctaWY9ImJ1aWxkLmNvbXBsZXRlIiB0aXRsZT0ie3sgYnVp
bGQuY29tcGxldGVfYXQgfCBkYXRlZm9ybWF0OidMTEwnIH19IikgRmluaXNoZWQge3sgYnVpbGQu
Y29tcGxldGVfYXQgfCB0aW1lYWdvIH19Ci0gICAgICBsaS5uZXh0KG5nLWNsYXNzPSJ7J2Rpc2Fi
bGVkJzogbGFzdF9idWlsZH0iKQotICAgICAgICBhKG5nLWlmPSIhbGFzdF9idWlsZCIsIHVpLXNy
ZWY9ImJ1aWxkKHtidWlsZDpuZXh0YnVpbGQubnVtYmVyfSkiKQotICAgICAgICAgICAgc3Bhbi5u
b21vYmlsZSBOZXh0Jm5ic3A7Ci0gICAgICAgICAgICBzcGFuLmJhZGdlLXN0YXR1cyhuZy1jbGFz
cz0icmVzdWx0czJjbGFzcyhuZXh0YnVpbGQsICdwdWxzZScpIikgJnJhcnI7Ci0gICAgICAgIHNw
YW4obmctaWY9Imxhc3RfYnVpbGQiKQotICAgICAgICAgICAgc3Bhbi5ub21vYmlsZSBOZXh0Jm5i
c3A7Ci0gICAgICAgICAgICBzcGFuICZyYXJyOwotICAucm93Ci0gICAgICB1aWItdGFic2V0Ci0g
ICAgICAgICAgdWliLXRhYihoZWFkaW5nPSJCdWlsZCBzdGVwcyIpCi0gICAgICAgICAgICAgIGJ1
aWxkc3VtbWFyeShuZy1pZj0iYnVpbGQiLCBidWlsZD0iYnVpbGQiLCBwYXJlbnRidWlsZD0icGFy
ZW50X2J1aWxkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudHJlbGF0aW9uc2hp
cD0iYnVpbGRzZXQucGFyZW50X3JlbGF0aW9uc2hpcCIpCi0gICAgICAgICAgdWliLXRhYihoZWFk
aW5nPSJCdWlsZCBQcm9wZXJ0aWVzIikKLSAgICAgICAgICAgICAgcHJvcGVydGllcyhwcm9wZXJ0
aWVzPSJwcm9wZXJ0aWVzIikKLSAgICAgICAgICB1aWItdGFiKGhlYWRpbmc9Ildvcmtlcjoge3t3
b3JrZXIubmFtZX19IikKLSAgICAgICAgICAgIHRhYmxlLnRhYmxlLnRhYmxlLWhvdmVyLnRhYmxl
LXN0cmlwZWQudGFibGUtY29uZGVuc2VkCi0gICAgICAgICAgICAgIHRib2R5Ci0gICAgICAgICAg
ICAgICAgdHIKLSAgICAgICAgICAgICAgICAgIHRkLnRleHQtbGVmdCBuYW1lCi0gICAgICAgICAg
ICAgICAgICB0ZC50ZXh0LWNlbnRlciB7e3dvcmtlci5uYW1lfX0KLSAgICAgICAgICAgICAgICB0
cihuZy1yZXBlYXQ9IihuYW1lLCB2YWx1ZSkgaW4gd29ya2VyLndvcmtlcmluZm8iKQotICAgICAg
ICAgICAgICAgICAgdGQudGV4dC1sZWZ0IHt7IG5hbWUgfX0KLSAgICAgICAgICAgICAgICAgIHRk
LnRleHQtcmlnaHQge3sgdmFsdWUgfX0KLSAgICAgICAgICB1aWItdGFiKGhlYWRpbmc9IkRlYnVn
IikKLSAgICAgICAgICAgICAgaDQKLSAgICAgICAgICAgICAgICAgIGEodWktc3JlZj0iYnVpbGRy
ZXF1ZXN0KHtidWlsZHJlcXVlc3Q6YnVpbGRyZXF1ZXN0LmJ1aWxkcmVxdWVzdGlkfSkiKQotICAg
ICAgICAgICAgICAgICAgICAgfCBCdWlsZHJlcXVlc3Q6Ci0gICAgICAgICAgICAgIHJhd2RhdGEo
ZGF0YT0iYnVpbGRyZXF1ZXN0IikKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1i
dWlsZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQJKHJl
dmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2V3cy1idWlsZAkobm9u
ZXhpc3RlbnQpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYnVpbGQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46aWdub3JlCiMjIC0xLDYgKzAsMCAjIwot
dHdpc3RkLmxvZyoKLWh0dHAubG9nKgotcGFzc3dvcmRzLmpzb24KLXR3aXN0ZC5waWQKLW1hc3Rl
ci5jZmcuc2FtcGxlCi1wdWJsaWNfaHRtbApJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
a2lsbC1vbGQtcHJvY2Vzc2VzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2tpbGwtb2xkLXByb2Nlc3NlcwkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzCShub25leGlzdGVudCkKQEAgLTEsMTkyICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0jIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0jIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgb3MsIHN5cwot
aW1wb3J0IGdldHBhc3MKLWltcG9ydCByZQotaW1wb3J0IHN1YnByb2Nlc3MKLQotZGVmIGxpc3RB
bGxXZWJLaXRQcm9ncmFtcyhidWlsZGRpcl9iaW4pOgotICAgIGZvdW5kV2ViS2l0UHJvZ3JhbXMg
PSBbXQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGJ1aWxkZGlyX2Jpbik6
Ci0gICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgaWYgb3MuYWNjZXNzKG9z
LnBhdGguam9pbihyb290LCBmaWxlKSwgb3MuWF9PSyk6Ci0gICAgICAgICAgICAgICAgZm91bmRX
ZWJLaXRQcm9ncmFtcy5hcHBlbmQoZmlsZSkKLSAgICByZXR1cm4gZm91bmRXZWJLaXRQcm9ncmFt
cwotCi1kZWYgcmVtb3ZlT3JwaGFuU2htU2VnbWVudHMoKToKLSAgICAjIFdoZW4gQXBhY2hlMiBp
cyBub3QgZ3JhY2VmdWxseSBzaHV0IGRvd24sIGl0IG1heSBsZWF2ZSBvcnBoYW5lZCBzaGFyZWQg
bWVtb3J5IHNlZ21lbnRzCi0gICAgIyB0aGF0IGNvdWxkIGNhdXNlIGZvbGxvd2luZyBzZXJ2ZXIg
aW5zdGFuY2VzIHRvIGFib3J0IG9uIHN0YXJ0dXAuCi0gICAgdHJ5OgotICAgICAgICB1c2VybmFt
ZSA9IGdldHBhc3MuZ2V0dXNlcigpCi0gICAgICAgIHNlZ21lbnRzID0gb3JwaGFuZWRTaG1TZWdt
ZW50c0J5VXNlcih1c2VybmFtZSkKLSAgICAgICAgZm9yIHMgaW4gc2VnbWVudHM6Ci0gICAgICAg
ICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyJpcGNybSIsICItbSIsIHNdKQotICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgcHJpbnQoIkVycm9yIHJlbW92aW5nIG9ycGhhbmVk
IHNoYXJlZCBtZW1vcnkgc2VnbWVudHM6IHt9Ii5mb3JtYXQoZSksIGZpbGU9c3lzLnN0ZGVycikK
LQotZGVmIG9ycGhhbmVkU2htU2VnbWVudHNCeVVzZXIodXNlcm5hbWUpOgotICAgIHJldCA9IFtd
Ci0gICAgb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJpcGNzIiwgIi1tIl0pCi0g
ICAgbGluZXMgPSBvdXRwdXQuc3BsaXQoJ1xuJykKLSAgICBpZiBsZW4obGluZXMpIDwgMzoKLSAg
ICAgICAgcmV0dXJuIFtdCi0KLSAgICBoZWFkZXJzID0gW2hlYWRlci5zdHJpcCgpIGZvciBoZWFk
ZXIgaW4gbGluZXNbMl0uc3BsaXQoKV0KLSAgICB3YW50ZWRfaGVhZGVycyA9IFsnbmF0dGNoJywg
J293bmVyJywgJ3NobWlkJ10KLQotICAgIGlmIGFueShoIG5vdCBpbiBoZWFkZXJzIGZvciBoIGlu
IHdhbnRlZF9oZWFkZXJzKToKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCJGYWlsZWQgdG8g
ZmluZCByZXF1aXJlZCBuYXR0Y2gsIG93bmVyIGFuZCBzaG1pZCBjb2xzIGluIGlwY3Mgb3V0cHV0
IikKLSAgICBuYXR0Y2hfaWR4ID0gaGVhZGVycy5pbmRleCgnbmF0dGNoJykKLSAgICBvd25lcl9p
ZHggPSBoZWFkZXJzLmluZGV4KCdvd25lcicpCi0gICAgc2htaWRfaWR4ID0gaGVhZGVycy5pbmRl
eCgnc2htaWQnKQotCi0gICAgZm9yIGxpbmUgaW4gbGluZXNbMzpdOgotICAgICAgICBsaW5lID0g
bGluZS5zdHJpcCgpCi0gICAgICAgIHRva2VucyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gbGluZS5z
cGxpdCgpXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiB0b2tlbnNbbmF0dGNoX2lkeF0g
PT0gJzAnIGFuZCB0b2tlbnNbb3duZXJfaWR4XSA9PSB1c2VybmFtZToKLSAgICAgICAgICAgICAg
ICByZXQuYXBwZW5kKHRva2Vuc1tzaG1pZF9pZHhdKQotICAgICAgICBleGNlcHQgSW5kZXhFcnJv
cjoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgcmV0dXJuIHJldAotCi1kZWYgbWFpbih1c2Vy
PU5vbmUpOgotICAgIHRhc2tzVG9LaWxsV2luID0gWwotICAgICAgICAiY2wuZXhlIiwKLSAgICAg
ICAgImRldmVudi5jb20iLAotICAgICAgICAiZGV2ZW52LmV4ZSIsCi0gICAgICAgICJEdW1wUmVu
ZGVyVHJlZS5leGUiLAotICAgICAgICAiRHVtcFJlbmRlclRyZWVfZGVidWcuZXhlIiwKLSAgICAg
ICAgImh0dHBkLmV4ZSIsCi0gICAgICAgICJpbWFnZWRpZmYuZXhlIiwKLSAgICAgICAgImltYWdl
ZGlmZl9kZWJ1Zy5leGUiLAotICAgICAgICAianNjLmV4ZSIsCi0gICAgICAgICJqc2NfZGVidWcu
ZXhlIiwKLSAgICAgICAgIkxpZ2h0VFBELmV4ZSIsCi0gICAgICAgICJsaW5rLmV4ZSIsCi0gICAg
ICAgICJtaWRsLmV4ZSIsCi0gICAgICAgICJwZXJsLmV4ZSIsCi0gICAgICAgICJTYWZhcmkuZXhl
IiwKLSAgICAgICAgInN2bi5leGUiLAotICAgICAgICAidGVzdGFwaS5leGUiLAotICAgICAgICAi
dGVzdGFwaV9kZWJ1Zy5leGUiLAotICAgICAgICAiVmNCdWlsZEhlbHBlci5leGUiLAotICAgICAg
ICAid2RpZmYuZXhlIiwKLSAgICAgICAgIldlYktpdE5ldHdvcmtQcm9jZXNzLmV4ZSIsCi0gICAg
ICAgICJXZWJLaXROZXR3b3JrUHJvY2Vzc19kZWJ1Zy5leGUiLAotICAgICAgICAiV2ViS2l0V2Vi
UHJvY2Vzcy5leGUiLAotICAgICAgICAiV2ViS2l0V2ViUHJvY2Vzc19kZWJ1Zy5leGUiLAotICAg
ICAgICAiV2ViS2l0VGVzdFJ1bm5lci5leGUiLAotICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lcl9k
ZWJ1Zy5leGUiLAotICAgIF0KLQotICAgIHRhc2tzVG9LaWxsTWFjID0gWwotICAgICAgICAiYXBh
Y2hlMiIsCi0gICAgICAgICJjYzFwbHVzIiwKLSAgICAgICAgImNjMW9ianBsdXMiLAotICAgICAg
ICAiY2xhbmciLAotICAgICAgICByImNsYW5nXFwrXFwrIiwKLSAgICAgICAgImdjYy00LjIiLAot
ICAgICAgICAiaHR0cGQiLAotICAgICAgICAiaTY4Ni1hcHBsZS1kYXJ3aW4xMC1nY2MtNC4yLjEi
LAotICAgICAgICAiSW1hZ2VEaWZmIiwKLSAgICAgICAgImpzYyIsCi0gICAgICAgICJMYXlvdXRU
ZXN0SGVscGVyIiwKLSAgICAgICAgIm1ha2UiLAotICAgICAgICAicGVybDUuMTIiLAotICAgICAg
ICAicGVybDUuMTYiLAotICAgICAgICAicGVybDUuMTgiLCAgICAgICAgCi0gICAgICAgICJwZXJs
IiwKLSAgICAgICAgIlByb2JsZW0gUmVwb3J0ZXIiLAotICAgICAgICAicnVieSIsCi0gICAgICAg
ICJTYWZhcmkgV2ViIENvbnRlbnQiLAotICAgICAgICAiU2FmYXJpIiwKLSAgICAgICAgInN2biIs
Ci0gICAgICAgICJEdW1wUmVuZGVyVHJlZSIsCi0gICAgICAgICJUZXN0V2ViS2l0QVBJIFdlYiBD
b250ZW50IiwKLSAgICAgICAgIlRlc3RXZWJLaXRBUEkiLAotICAgICAgICAiUGx1Z2luUHJvY2Vz
cyIsCi0gICAgICAgICJjb20uYXBwbGUuV2ViS2l0LlBsdWdpbi42NCIsCi0gICAgICAgICJjb20u
YXBwbGUuV2ViS2l0LlBsdWdpbi4zMiIsCi0gICAgICAgICJjb20uYXBwbGUuV2ViS2l0LlBsdWdp
blByb2Nlc3MiLAotICAgICAgICAiY29tLmFwcGxlLldlYktpdC5QbHVnaW5Qcm9jZXNzLkRldmVs
b3BtZW50IgotICAgICAgICAiV2ViS2l0VGVzdFJ1bm5lciBXZWIgQ29udGVudCIsCi0gICAgICAg
ICJXZWJLaXRUZXN0UnVubmVyIiwKLSAgICAgICAgIldlYlByb2Nlc3MiLAotICAgICAgICAieGNv
ZGVidWlsZCIsCi0gICAgICAgICMgRklYTUU6IENvbnNpZGVyIG1vdmluZyBpT1Mtc3BlY2lmaWMg
dGFza3MgdG8gdGhlaXIgb3duIGxpc3QuCi0gICAgICAgICJTaW11bGF0b3IuYXBwIiwKLSAgICBd
Ci0KLSAgICB0YXNrVG9LaWxsVW5peCA9IFsKLSAgICAgICAgIyBTeXN0ZW0gcHJvY2VzcyB0aGF0
IGFyZSBleGVjdXRlZCBhcyBwYXJ0IG9mIHRoZSBidWlsZCBwcm9jZXNzCi0gICAgICAgICJjYzFw
bHVzIiwKLSAgICAgICAgImxkLmdvbGQiLAotICAgICAgICAibGQiLAotICAgICAgICAibWFrZSIs
Ci0gICAgICAgICJjbWFrZSIsCi0gICAgICAgICJzdm4iLAotICAgICAgICAjIFN5c3RlbSBwcm9j
ZXNzIHRoYXQgYXJlIGV4ZWN1dGVkIGFzIHBhcnQgb2YgdGhlIHRlc3Qgc3RlcHMKLSAgICAgICAg
Ilh2ZmIiLAotICAgICAgICAiZ2RiIiwKLSAgICAgICAgInJ1YnkiLAotICAgICAgICAiYXBhY2hl
MiIsCi0gICAgICAgICJodHRwZCIsCi0gICAgICAgICMgV2ViS2l0IHJlbGF0ZWQgcHJvY2VzcyBu
YW1lcyBhcmUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZm9yIEdUSysvV1BFL0pTQ09ubHkKLSAg
ICBdCi0KLSAgICAjIFRoaXMgYWxsb3dzIHRvIHNwZWNpZnkgb24gdGhlIGVudmlyb25tZW50IG9m
IHRoZSBib3QgYSBsaXN0IG9mIHByb2Nlc3MgdGhhdCBzaG91bGQgYmUga2lsbGVkLgotICAgIHRh
c2tzVG9LaWxsID0gb3MuZ2V0ZW52KCJXRUJLSVRCT1RfVEFTS1NUT0tJTEwiLCAiIikuc3BsaXQo
KQotICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKLSAgICAgICAgb3Muc3lzdGVtKCJw
cyBhdXgiKQotICAgICAgICBmb3IgdGFzayBpbiB0YXNrc1RvS2lsbCArIHRhc2tzVG9LaWxsTWFj
OgotICAgICAgICAgICAgb3Muc3lzdGVtKCJraWxsYWxsIC05IC12IC1tICIgKyB0YXNrKQotICAg
ICAgICAjIFNodXRkb3duIGFueSBzaW11bGF0b3JzCi0gICAgICAgIGlmIG9zLmdldGV1aWQoKSA9
PSAwIGFuZCB1c2VyOgotICAgICAgICAgICAgb3Muc3lzdGVtKCJzdWRvIC11IHt9IHhjcnVuIHNp
bWN0bCBzaHV0ZG93biBib290ZWQiLmZvcm1hdCh1c2VyKSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIG9zLnN5c3RlbSgieGNydW4gc2ltY3RsIHNodXRkb3duIGJvb3RlZCIpCi0gICAgICAg
ICMgS2lsbCBhbGwgaW5zdGFuY2VzIG9mIHB5dGhvbiBleGVjdXRpbmcgcnVuLXdlYmtpdC10ZXN0
cwotICAgICAgICBvcy5zeXN0ZW0oInBzIGF1eCB8IGdyZXAgLUUgJy4rL1B5dGhvbiAuKyhydW5f
d2Via2l0X3Rlc3RzfHJ1bi13ZWJraXQtdGVzdHN8bW9kX3B5d2Vic29ja2V0KScgfCBncmVwIC12
IGdyZXAgfCBhd2sgJ3twcmludCAkMn0nIHwgeGFyZ3Mga2lsbCIpCi0gICAgZWxpZiBzeXMucGxh
dGZvcm0gPT0gJ2N5Z3dpbicgb3Igc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGZv
ciB0YXNrIGluIHRhc2tzVG9LaWxsICsgdGFza3NUb0tpbGxXaW46Ci0gICAgICAgICAgICBvcy5z
eXN0ZW0oInRhc2traWxsIC90IC9mIC9pbSAiICsgdGFzaykKLSAgICBlbGlmIHN5cy5wbGF0Zm9y
bS5zdGFydHN3aXRoKCdsaW51eCcpOgotICAgICAgICBvcy5zeXN0ZW0oInBzIGF1eCIpCi0gICAg
ICAgIGJ1aWxkZGlyX2JpbiA9ICJXZWJLaXRCdWlsZC9SZWxlYXNlL2JpbiIgaWYgb3MucGF0aC5p
c2RpcigiV2ViS2l0QnVpbGQvUmVsZWFzZS9iaW4iKSBlbHNlICJXZWJLaXRCdWlsZC9EZWJ1Zy9i
aW4iCi0gICAgICAgIGZvciB0YXNrIGluIHRhc2tzVG9LaWxsICsgdGFza1RvS2lsbFVuaXggKyBs
aXN0QWxsV2ViS2l0UHJvZ3JhbXMoYnVpbGRkaXJfYmluKToKLSAgICAgICAgICAgIG9zLnN5c3Rl
bSgia2lsbGFsbCAtOSAtdiAiICsgdGFzaykKLSAgICAgICAgb3Muc3lzdGVtKCJwcyBhdXggfCBn
cmVwIC1QICcuKy9weXRob24gLisocnVuX3dlYmtpdF90ZXN0c3xydW4td2Via2l0LXRlc3RzfG1v
ZF9weXdlYnNvY2tldCknIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDJ9JyB8IHhhcmdz
IC1yIGtpbGwiKQotICAgICAgICByZW1vdmVPcnBoYW5TaG1TZWdtZW50cygpCi0gICAgZWxzZToK
LSAgICAgICAgc3lzLmV4aXQoKQotICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgcmV0dXJuIGFu
IGV4aXQgY29kZSBiYXNlZCBvbiBob3cgdGhlIGtpbGxzIHdlbnQ/Ci0KLQotaWYgX19uYW1lX18g
PT0gJ19fbWFpbl9fJzoKLSAgICB1c2VyID0gc3lzLmFyZ3ZbMV0gaWYgbGVuKHN5cy5hcmd2KSA+
IDEgZWxzZSBOb25lCi0gICAgc3lzLmV4aXQobWFpbih1c2VyKSkKClByb3BlcnR5IGNoYW5nZXMg
b246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXByb2Nlc3NlcwpfX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
CkRlbGV0ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1
bHQtYXJjaGl2ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJl
c3VsdC1hcmNoaXZlCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC90ZXN0LXJlc3VsdC1hcmNoaXZlCShub25leGlzdGVudCkKQEAgLTEsMTEwICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotCi0jIENvcHlyaWdodCAoQykgMjAwOSwgMjAxNSBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
LSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLWltcG9ydCBnemlwLCBvcHRwYXJzZSwgb3MsIHNodXRpbCwgc3VicHJvY2Vzcywgc3lz
LCB6aXBmaWxlCi0KLXNvdXJjZVJvb3REaXJlY3RvcnkgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0
aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQotYXJjaGl2ZUZp
bGUgPSBvcy5wYXRoLmpvaW4oc291cmNlUm9vdERpcmVjdG9yeSwgImxheW91dC10ZXN0LXJlc3Vs
dHMuemlwIikKLQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIoInVzYWdlOiAlcHJvZyBbb3B0aW9uc10gW2FjdGlvbl0iKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCItLXBsYXRmb3JtIiwgZGVzdD0icGxhdGZvcm0iKQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCItLWRlYnVnIiwgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSJkZWJ1ZyIsIGRlc3Q9ImNv
bmZpZ3VyYXRpb24iKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLXJlbGVhc2UiLCBhY3Rpb249
InN0b3JlX2NvbnN0IiwgY29uc3Q9InJlbGVhc2UiLCBkZXN0PSJjb25maWd1cmF0aW9uIikKLQot
ICAgIG9wdGlvbnMsIChhY3Rpb24sICkgPSBwYXJzZXIucGFyc2VfYXJncygpCi0gICAgaWYgbm90
IG9wdGlvbnMucGxhdGZvcm06Ci0gICAgICAgIHBhcnNlci5lcnJvcigiUGxhdGZvcm0gaXMgcmVx
dWlyZWQiKQotICAgIGlmIG5vdCBvcHRpb25zLmNvbmZpZ3VyYXRpb246Ci0gICAgICAgIHBhcnNl
ci5lcnJvcigiQ29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCIpCi0gICAgaWYgYWN0aW9uIG5vdCBp
biAoJ2FyY2hpdmUnKToKLSAgICAgICAgcGFyc2VyLmVycm9yKCJBY3Rpb24gaXMgcmVxdWlyZWQi
KQotCi0gICAgbGF5b3V0VGVzdFJlc3VsdHNEaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5q
b2luKHNvdXJjZVJvb3REaXJlY3RvcnksICJsYXlvdXQtdGVzdC1yZXN1bHRzIikpCi0gICAgcmV0
dXJuIGFyY2hpdmVfdGVzdF9yZXN1bHRzKG9wdGlvbnMuY29uZmlndXJhdGlvbiwgb3B0aW9ucy5w
bGF0Zm9ybSwgbGF5b3V0VGVzdFJlc3VsdHNEaXIpCi0KLWRlZiBnemlwX2ZpbGUocm9vdCwgbmFt
ZSk6Ci0gICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihyb290LCBuYW1lKSwgJ3JiJykgYXMgZl9p
biwgZ3ppcC5vcGVuKG9zLnBhdGguam9pbihyb290LCBuYW1lICsgJy5neicpLCAnd2InKSBhcyBm
X291dDoKLSAgICAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKGZfaW4sIGZfb3V0KQotICAgICAgICBv
cy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotCi1kZWYgY29tcHJlc3Nfc3BpbmR1
bXBzKGxheW91dFRlc3RSZXN1bHRzRGlyKToKLSAgICBmaWxlX3BhdHRlcm5zID0gKCctc3BpbmR1
bXAudHh0JywnLXNhbXBsZS50eHQnKQotICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53
YWxrKGxheW91dFRlc3RSZXN1bHRzRGlyKToKLSAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6Ci0g
ICAgICAgICAgICBmb3IgcGF0dGVybiBpbiBmaWxlX3BhdHRlcm5zOiAgICAgICAgCi0gICAgICAg
ICAgICAgICAgaWYgcGF0dGVybiBpbiBuYW1lOgotICAgICAgICAgICAgICAgICAgICBnemlwX2Zp
bGUocm9vdCwgbmFtZSkKLQotZGVmIGFyY2hpdmVfdGVzdF9yZXN1bHRzKGNvbmZpZ3VyYXRpb24s
IHBsYXRmb3JtLCBsYXlvdXRUZXN0UmVzdWx0c0Rpcik6Ci0gICAgYXNzZXJ0IHBsYXRmb3JtIGlu
ICgnbWFjJywgJ3dpbicsICdndGsnLCAnd2luY2Fpcm8nLCAnaW9zJywgJ3dwZScpCi0KLSAgICB0
cnk6Ci0gICAgICAgIG9zLnVubGluayhhcmNoaXZlRmlsZSkKLSAgICBleGNlcHQgT1NFcnJvciwg
ZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSAyOgotICAgICAgICAgICAgcmFpc2UKLQotICAgIHRy
eToKLSAgICAgICAgIyBFbnN1cmUgdGhhdCBsYXlvdXRUZXN0UmVzdWx0c0RpciBleGlzdHMgc2lu
Y2Ugd2UgY2Fubm90IGFyY2hpdmUgYSBkaXJlY3RvcnkgdGhhdCBkb2VzIG5vdCBleGlzdAotICAg
ICAgICBvcy5tYWtlZGlycyhsYXlvdXRUZXN0UmVzdWx0c0RpcikKLSAgICBleGNlcHQgT1NFcnJv
ciwgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSAxNzoKLSAgICAgICAgICAgIHJhaXNlCi0KLSAg
ICBvcGVuKG9zLnBhdGguam9pbihsYXlvdXRUZXN0UmVzdWx0c0RpciwgJy5wbGFjZWhvbGRlcicp
LCAndycpLmNsb3NlKCkKLQotICAgIGlmIHBsYXRmb3JtIGluICgnbWFjJywgJ2lvcycpOgotICAg
ICAgICBjb21wcmVzc19zcGluZHVtcHMobGF5b3V0VGVzdFJlc3VsdHNEaXIpCi0gICAgICAgIGlm
IHN1YnByb2Nlc3MuY2FsbChbImRpdHRvIiwgIi1jIiwgIi1rIiwgIi0tc2VxdWVzdGVyUnNyYyIs
ICItLXpsaWJDb21wcmVzc2lvbkxldmVsIiwgIjIiLCBsYXlvdXRUZXN0UmVzdWx0c0RpciwgYXJj
aGl2ZUZpbGVdKToKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgZWxpZiBwbGF0Zm9ybSBpbiAo
J3dpbicsICdndGsnLCAnd3BlJyk6Ci0gICAgICAgIGlmIHN1YnByb2Nlc3MuY2FsbChbInppcCIs
ICItciIsICItMiIsIGFyY2hpdmVGaWxlLCAiLiJdLCBjd2Q9bGF5b3V0VGVzdFJlc3VsdHNEaXIp
OgotICAgICAgICAgICAgcmV0dXJuIDEKLSAgICBlbGlmIHBsYXRmb3JtID09ICd3aW5jYWlybyc6
Ci0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGFyY2hpdmVGaWxlLCAndycsIHppcGZpbGUu
WklQX0RFRkxBVEVEKSBhcyBhcmNoaXZlWmlwOgotICAgICAgICAgICAgZm9yIHBhdGgsIGRpck5h
bWVzLCBmaWxlTmFtZXMgaW4gb3Mud2FsayhsYXlvdXRUZXN0UmVzdWx0c0Rpcik6Ci0gICAgICAg
ICAgICAgICAgcmVsYXRpdmVQYXRoID0gb3MucGF0aC5yZWxwYXRoKHBhdGgsIGxheW91dFRlc3RS
ZXN1bHRzRGlyKQotICAgICAgICAgICAgICAgIGZvciBmaWxlTmFtZSBpbiBmaWxlTmFtZXM6Ci0g
ICAgICAgICAgICAgICAgICAgIGFyY2hpdmVaaXAud3JpdGUob3MucGF0aC5qb2luKHBhdGgsIGZp
bGVOYW1lKSwgb3MucGF0aC5qb2luKHJlbGF0aXZlUGF0aCwgZmlsZU5hbWUpKQotCi0gICAgdHJ5
OgotICAgICAgICBzaHV0aWwucm10cmVlKGxheW91dFRlc3RSZXN1bHRzRGlyKQotICAgIGV4Y2Vw
dCBPU0Vycm9yLCBlOgotCi0gICAgICAgICMgUHl0aG9uIGluIEN5Z3dpbiB0aHJvd3MgYSBteXN0
ZXJpb3VzIGV4Y2VwdGlvbiB3aXRoIGVycm5vIG9mIDkwCi0gICAgICAgICMgd2hlbiByZW1vdmlu
ZyB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRpcmVjdG9yeSBhZnRlciBzdWNjZXNzZnVsbHkKLSAg
ICAgICAgIyBkZWxldGluZyBpdHMgY29udGVudHMsIGNsYWltaW5nICJEaXJlY3Rvcnkgbm90IGVt
cHR5Ii4KLSAgICAgICAgIyBXZSBjYW4gc2FmZWx5IGlnbm9yZSB0aGlzIHNpbmNlIGl0IHdhcyB0
aGUgZGlyZWN0b3J5IGNvbnRlbnRzIHRoYXQKLSAgICAgICAgIyB3ZSBhcmUgbW9zdCBpbnRlcmVz
dGVkIGluIGRlbGV0aW5nLgotICAgICAgICAjIFB5dGhvbiBpbiBDeWd3aW4gd2lsbCBhbHNvIHNv
bWV0aW1lcyB0aHJvdyBlcnJubyAyIG9yIDE2IGlmIGEgcHJvY2VzcwotICAgICAgICAjIGlzIGhv
bGRpbmcgYSBmaWxlIG9wZW4uIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gZmFpbGluZyB0byBjcmVhdGUg
dGhlCi0gICAgICAgICMgYXJjaGl2ZSBqdXN0IGJlY2F1c2Ugc29tZSBvdGhlciBwcm9jZXNzIGlz
IGJlaGF2aW5nIGJhZGx5LiBTZWUKLSAgICAgICAgIyA8aHR0cDovL3dlYmtpdC5vcmcvYi81NTU4
MT4gYW5kIDxodHRwOi8vd2Via2l0Lm9yZy9iLzE2NjcyMD4uCi0gICAgICAgIGlmIGUuZXJybm8g
IT0gOTAgYW5kIGUuZXJybm8gIT0gMiBhbmQgZS5lcnJubyAhPSAxNjoKLSAgICAgICAgICAgIHJh
aXNlCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgc3lzLmV4aXQobWFpbigpKQpJ
bmRleDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdHJpZ2dlci1jcmFzaC1sb2ctc3VibWlzc2lv
bgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9CdWlsZFNsYXZlU3VwcG9ydC90cmlnZ2VyLWNyYXNoLWxv
Zy1zdWJtaXNzaW9uCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC90cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uCShub25leGlzdGVudCkKQEAgLTEsNTMgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0j
IGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0j
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0j
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotIyBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotV0FJVF9T
RUNPTkRTID0gMwotCi0KLWRlZiBtYWluKCk6Ci0gICAgaWYgc3lzLnBsYXRmb3JtICE9ICdkYXJ3
aW4nOgotICAgICAgICBwcmludCgiTm8gY3Jhc2ggbG9nIHN1Ym1pc3Npb24gYXZhaWxhYmxlIGZv
ciBwbGF0Zm9ybSAne30nIi5mb3JtYXQoc3lzLnBsYXRmb3JtKSkKLSAgICAgICAgcmV0dXJuIDAK
LQotICAgICMgV29ya2Fyb3VuZCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzYwNTA3ODc3Pi4KLSAgICBp
ZiBzdWJwcm9jZXNzLmNhbGwoWycvdXNyL2Jpbi9raWxsYWxsJywgJy05JywgJ2RpYWdub3N0aWNz
X2FnZW50J10pOgotICAgICAgICBwcmludCgnRmFpbGVkIHRvIGtpbGwgZGlhZ25vc3RpY3NfYWdl
bnQnKQotICAgICAgICByZXR1cm4gMQotICAgIHByaW50KCdLaWxsZWQgZGlhZ25vc3RpY3NfYWdl
bnQnKQotCi0gICAgdGltZS5zbGVlcChXQUlUX1NFQ09ORFMpCi0gICAgaWYgc3VicHJvY2Vzcy5j
YWxsKFsnL3Vzci9iaW4vbm90aWZ5dXRpbCcsICctcCcsICdjb20uYXBwbGUuY3Jhc2hyZXBvcnRl
ci5kZWJ1Zy5zdWJtaXQubm93J10pOgotICAgICAgICBwcmludCgnRmFpbGVkIHRvIHRyaWdnZXIg
Y3Jhc2ggbG9nIHN1Ym1pc3Npb24nKQotICAgICAgICByZXR1cm4gMQotICAgIHByaW50KCdUcmln
Z2VyZWQgY3Jhc2ggbG9nIHN1Ym1pc3Npb24nKQotCi0gICAgcmV0dXJuIDAKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4oKSkKClByb3BlcnR5IGNoYW5n
ZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Np
b24KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMSArMCwwICMjCi0qClwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbgkocmV2aXNpb24gMjY5MDQyKQor
KysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2FpdC1mb3ItY3Jhc2gtY29sbGVjdGlvbgkobm9u
ZXhpc3RlbnQpCkBAIC0xLDg5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5
cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IGFyZ3BhcnNlCi1pbXBvcnQgc3VicHJv
Y2VzcwotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotCi1TVUJNSVRfRElBR19JTkZPID0gJy9T
eXN0ZW0vTGlicmFyeS9Db3JlU2VydmljZXMvU3VibWl0RGlhZ0luZm8nCi1XQUlUX1NFQ09ORFMg
PSAzCi0KLQotZGVmIHBpZF9mb3JfbmFtZShwcm9jZXNzX25hbWUpOgotICAgIHByb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKFsnL2Jpbi9wcycsICctZW8nLCAncGlkLGNvbW0nXSwgc3Rkb3V0PXN1
YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLQotICAgIHN0ZG91dCwgXyA9
IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGZvciBsaW5lIGluIHN0ZG91dC5zcGxpdGxpbmVz
KCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHBpZCwgY2FuZGlkYXRlID0gbGluZS5zdHJp
cCgpLnNwbGl0KGInICcsIDEpCi0gICAgICAgICAgICBpZiBjYW5kaWRhdGUgPT0gcHJvY2Vzc19u
YW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBpbnQocGlkKQotICAgICAgICBleGNlcHQgVmFs
dWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBjcHVf
cGVyY2VudGFnZShwaWQpOgotICAgIHRvcF9vdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChbJy91c3IvYmluL3RvcCcsICctcGlkJywgc3RyKHBpZCksICctc3RhdHMnLCAnY3B1JywgJy1s
JywgJzInXSkKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBmbG9hdCh0b3Bfb3V0cHV0LnNwbGl0
bGluZXMoKVstMV0pCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHJldHVybiAwCi0K
LQotZGVmIG1haW4oKToKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNj
cmlwdGlvbj0nV2FpdCBmb3IgY3Jhc2ggbG9nIHJlcG9ydGluZyB0byBxdWllc2NlJykKLSAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAnLXQnLCAnLS10aW1lb3V0JywKLSAgICAgICAg
aGVscD0nU2Vjb25kcyB0byB3YWl0IGZvciBwcm9jZXNzIHRvIHF1aWVzY2UuJywKLSAgICAgICAg
dHlwZT1pbnQsIGRlZmF1bHQ9MCwKLSAgICApCi0gICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdz
KCkKLSAgICBkZWFkbGluZSA9ICh0aW1lLnRpbWUoKSArIGFyZ3MudGltZW91dCkgaWYgYXJncy50
aW1lb3V0IGVsc2UgTm9uZQotCi0gICAgaWYgc3lzLnBsYXRmb3JtICE9ICdkYXJ3aW4nOgotICAg
ICAgICBwcmludCgiTm8gY3Jhc2ggcmVwb3J0aW5nIGF2YWlsYWJsZSBmb3IgcGxhdGZvcm0gJ3t9
JyIuZm9ybWF0KHN5cy5wbGF0Zm9ybSkpCi0gICAgICAgIHJldHVybiAwCi0KLSAgICBwaWQgPSBw
aWRfZm9yX25hbWUoU1VCTUlUX0RJQUdfSU5GTykKLSAgICBpZiBub3QgcGlkOgotICAgICAgICBw
cmludCgnRmFpbGVkIHRvIGZpbmQgYW55IHJ1bm5pbmcgcHJvY2VzcyBmb3Ige30nLmZvcm1hdChT
VUJNSVRfRElBR19JTkZPKSkKLSAgICAgICAgcmV0dXJuIDAKLSAgICBwcmludCgnRm91bmQge30g
cnVubmluZyB3aXRoIFBJRCB7fScuZm9ybWF0KFNVQk1JVF9ESUFHX0lORk8sIHBpZCkpCi0KLSAg
ICBwcmludCgnV2FpdGluZyBmb3IgcHJvY2VzcyB7fSB0byBxdWllc2NlJy5mb3JtYXQocGlkKSkK
LSAgICB3aGlsZSBub3QgZGVhZGxpbmUgb3IgZGVhZGxpbmUgPiB0aW1lLnRpbWUoKToKLSAgICAg
ICAgaWYgY3B1X3BlcmNlbnRhZ2UocGlkKSA8PSA1OgotICAgICAgICAgICAgcHJpbnQoJ1Byb2Nl
c3Mge30gaGFzIHF1aWVzY2VkJy5mb3JtYXQocGlkKSkKLSAgICAgICAgICAgIHJldHVybiAwCi0g
ICAgICAgIHRpbWUuc2xlZXAoV0FJVF9TRUNPTkRTKQotCi0gICAgcHJpbnQoJ1RpbWVkIG91dCB3
YWl0aW5nIGZvciB7fSB0byBxdWllc2NlLCBjb250aW51ZScuZm9ybWF0KHBpZCkpCi0gICAgcmV0
dXJuIDAKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHN5cy5leGl0KG1haW4o
KSkKClByb3BlcnR5IGNoYW5nZXMgb246IFRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3dhaXQtZm9y
LWNyYXNoLWNvbGxlY3Rpb24KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MSArMCwwICMjCi0qClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L3dpbi9raWxsLW9sZC1wcm9jZXNzZXMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tpbGwtb2xkLXByb2Nlc3NlcwkocmV2aXNpb24g
MjY5MDQyKQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvd2luL2tpbGwtb2xkLXByb2Nlc3Nl
cwkobm9uZXhpc3RlbnQpCkBAIC0xLDU4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbg0K
LQ0KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
DQotIw0KLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0DQotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMNCi0jIGFyZSBtZXQ6DQotIw0KLSMgMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0DQotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLiANCi0jIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodA0KLSMgICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUN
Ci0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiANCi0jDQotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQ0KLSMgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRA0KLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQ0KLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQ0KLSMgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMNCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsNCi0jIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RA0KLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQNCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRg0KLSMgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4N
Ci0NCi1pbXBvcnQgb3MsIHN5cw0KLQ0KLWRlZiBtYWluKCk6DQotICAgIHRhc2tzVG9LaWxsID0g
WyAiY2wuZXhlIiwgDQotCQkJCQkiZGV2ZW52LmNvbSIsIA0KLQkJCQkJImRldmVudi5leGUiLCAN
Ci0JCQkJCSJEdW1wUmVuZGVyVHJlZS5leGUiLCANCi0JCQkJCSJEdW1wUmVuZGVyVHJlZV9kZWJ1
Zy5leGUiLA0KLQkJCQkJImh0dHBkLmV4ZSIsIA0KLQkJCQkJImltYWdlZGlmZi5leGUiLCANCi0J
CQkJCSJpbWFnZWRpZmZfZGVidWcuZXhlIiwgDQotCQkJCQkianNjLmV4ZSIsIA0KLQkJCQkJImpz
Y19kZWJ1Zy5leGUiLA0KLQkJCQkJIkxpZ2h0VFBELmV4ZSIsIA0KLQkJCQkJImxpbmsuZXhlIiwg
DQotCQkJCQkibWlkbC5leGUiLCANCi0JCQkJCSJwZXJsLmV4ZSIsIA0KLQkJCQkJIlNhZmFyaS5l
eGUiLCANCi0JCQkJCSJzdm4uZXhlIiwgDQotCQkJCQkidGVzdGFwaS5leGUiLCANCi0JCQkJCSJ0
ZXN0YXBpX2RlYnVnLmV4ZSIsIA0KLQkJCQkJIlZjQnVpbGRIZWxwZXIuZXhlIiwgDQotCQkJCQki
d2RpZmYuZXhlIiwgDQotCQkJCQkiV2ViS2l0MldlYlByb2Nlc3MuZXhlIiwgDQotCQkJCQkiV2Vi
S2l0MldlYlByb2Nlc3NfZGVidWcuZXhlIiwgDQotCQkJCQkiV2ViS2l0VGVzdFJ1bm5lci5leGUi
LCANCi0JCQkJCSJXZWJLaXRUZXN0UnVubmVyX2RlYnVnLmV4ZSJdDQotCQkJCQkNCi0gICAgZm9y
IHRhc2sgaW4gdGFza3NUb0tpbGw6DQotICAgICAgICBvcy5zeXN0ZW0oInRhc2traWxsIC90IC9m
IC9pbSAiICsgdGFzaykNCi0NCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOg0KLSAgICBzeXMu
ZXhpdChtYWluKCkpDQoKUHJvcGVydHkgY2hhbmdlcyBvbjogVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvd2luL2tpbGwtb2xkLXByb2Nlc3NlcwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjpleGVjdXRh
YmxlCiMjIC0xICswLDAgIyMKLSoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSBAQAorbGluayBDSVN1cHBvcnQKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBUb29scy9CdWlsZFNsYXZlU3VwcG9ydApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCkFkZGVkOiBzdm46c3BlY2lhbAojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9zdGVwcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvc3RlcHMucHkJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9zdGVwcy5weQkod29ya2luZyBjb3B5KQpA
QCAtMTI0LDI4ICsxMjQsMjggQEAgY2xhc3MgS2lsbE9sZFByb2Nlc3NlcyhzaGVsbC5Db21waWxl
KToKICAgICBuYW1lID0gImtpbGwtb2xkLXByb2Nlc3NlcyIKICAgICBkZXNjcmlwdGlvbiA9IFsi
a2lsbGluZyBvbGQgcHJvY2Vzc2VzIl0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImtpbGxlZCBv
bGQgcHJvY2Vzc2VzIl0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMiLCAiYnVpbGRib3QiXQorICAgIGNvbW1hbmQg
PSBbInB5dGhvbiIsICIuL1Rvb2xzL0NJU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMiLCAiYnVp
bGRib3QiXQogCiAKIGNsYXNzIFRyaWdnZXJDcmFzaExvZ1N1Ym1pc3Npb24oc2hlbGwuQ29tcGls
ZSk6CiAgICAgbmFtZSA9ICJ0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uIgogICAgIGRlc2Ny
aXB0aW9uID0gWyJ0cmlnZ2VyaW5nIGNyYXNoIGxvZyBzdWJtaXNzaW9uIl0KICAgICBkZXNjcmlw
dGlvbkRvbmUgPSBbInRyaWdnZXJlZCBjcmFzaCBsb2cgc3VibWlzc2lvbiJdCi0gICAgY29tbWFu
ZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvdHJpZ2dlci1jcmFzaC1s
b2ctc3VibWlzc2lvbiJdCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQ0lTdXBw
b3J0L3RyaWdnZXItY3Jhc2gtbG9nLXN1Ym1pc3Npb24iXQogCiAKIGNsYXNzIFdhaXRGb3JDcmFz
aENvbGxlY3Rpb24oc2hlbGwuQ29tcGlsZSk6CiAgICAgbmFtZSA9ICJ3YWl0LWZvci1jcmFzaC1j
b2xsZWN0aW9uIgogICAgIGRlc2NyaXB0aW9uID0gWyJ3YWl0aW5nIGZvciBjcmFzaCBjb2xsZWN0
aW9uIHRvIHF1aWVzY2UiXQogICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsiY3Jhc2ggY29sbGVjdGlv
biBoYXMgcXVpZXNjZWQiXQotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24iLCAiLS10aW1lb3V0Iiwgc3Ry
KDUgKiA2MCldCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQ0lTdXBwb3J0L3dh
aXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24iLCAiLS10aW1lb3V0Iiwgc3RyKDUgKiA2MCldCiAKIAog
Y2xhc3MgQ2xlYW5CdWlsZElmU2NoZWR1bGVkKHNoZWxsLkNvbXBpbGUpOgogICAgIG5hbWUgPSAi
ZGVsZXRlLVdlYktpdEJ1aWxkLWRpcmVjdG9yeSIKICAgICBkZXNjcmlwdGlvbiA9IFsiZGVsZXRp
bmcgV2ViS2l0QnVpbGQgZGlyZWN0b3J5Il0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbImRlbGV0
ZWQgV2ViS2l0QnVpbGQgZGlyZWN0b3J5Il0KLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9U
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9jbGVhbi1idWlsZCIsIFdpdGhQcm9wZXJ0aWVzKCItLXBs
YXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0
aW9uKXMiKV0KKyAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9DSVN1cHBvcnQvY2xl
YW4tYnVpbGQiLCBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiks
IFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIildCiAKICAgICBkZWYgc3RhcnQo
c2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLmdldFByb3BlcnR5KCdpc19jbGVhbicpOgpAQCAt
MTU4LDcgKzE1OCw3IEBAIGNsYXNzIERlbGV0ZVN0YWxlQnVpbGRGaWxlcyhzaGVsbC5Db21waWwK
ICAgICBuYW1lID0gImRlbGV0ZS1zdGFsZS1idWlsZC1maWxlcyIKICAgICBkZXNjcmlwdGlvbiA9
IFsiZGVsZXRpbmcgc3RhbGUgYnVpbGQgZmlsZXMiXQogICAgIGRlc2NyaXB0aW9uRG9uZSA9IFsi
ZGVsZXRlZCBzdGFsZSBidWlsZCBmaWxlcyJdCi0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4v
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZGVsZXRlLXN0YWxlLWJ1aWxkLWZpbGVzIiwgV2l0aFBy
b3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVydGllcygi
LS0lKGNvbmZpZ3VyYXRpb24pcyIpXQorICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xz
L0NJU3VwcG9ydC9kZWxldGUtc3RhbGUtYnVpbGQtZmlsZXMiLCBXaXRoUHJvcGVydGllcygiLS1w
bGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiksIFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJh
dGlvbilzIildCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuZ2V0UHJv
cGVydHkoJ2lzX2NsZWFuJyk6ICAjIE5vdGhpbmcgdG8gYmUgZG9uZSBpZiBXZWJLaXRCdWlsZCBo
YWQgYmVlbiByZW1vdmVkLgpAQCAtMjc0LDcgKzI3NCw3IEBAIGNsYXNzIENvbXBpbGVKU0NPbmx5
KENvbXBpbGVXZWJLaXQpOgogCiAKIGNsYXNzIEFyY2hpdmVCdWlsdFByb2R1Y3Qoc2hlbGwuU2hl
bGxDb21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAorICAgIGNvbW1hbmQgPSBbInB5dGhvbiIs
ICIuL1Rvb2xzL0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAogICAgICAgICAgICAg
ICAgV2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJv
cGVydGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiYXJjaGl2ZSJdCiAgICAgbmFtZSA9ICJh
cmNoaXZlLWJ1aWx0LXByb2R1Y3QiCiAgICAgZGVzY3JpcHRpb24gPSBbImFyY2hpdmluZyBidWls
dCBwcm9kdWN0Il0KQEAgLTI4Myw3ICsyODMsNyBAQCBjbGFzcyBBcmNoaXZlQnVpbHRQcm9kdWN0
KHNoZWxsLlNoZWxsQ29tCiAKIAogY2xhc3MgQXJjaGl2ZU1pbmlmaWVkQnVpbHRQcm9kdWN0KEFy
Y2hpdmVCdWlsdFByb2R1Y3QpOgotICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIuL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZSIsCisgICAgY29tbWFuZCA9IFsi
cHl0aG9uIiwgIi4vVG9vbHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZSIsCiAgICAg
ICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKGZ1bGxQbGF0Zm9ybSlzIiks
IFdpdGhQcm9wZXJ0aWVzKCItLSUoY29uZmlndXJhdGlvbilzIiksICJhcmNoaXZlIiwgIi0tbWlu
aWZ5Il0KIAogCkBAIC0zMTAsNyArMzEwLDcgQEAgY2xhc3MgR2VuZXJhdGVNaW5pQnJvd3NlckJ1
bmRsZShzaGVsbC5TaAogCiAKIGNsYXNzIEV4dHJhY3RCdWlsdFByb2R1Y3Qoc2hlbGwuU2hlbGxD
b21tYW5kKToKLSAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAorICAgIGNvbW1hbmQgPSBbInB5dGhvbiIsICIu
L1Rvb2xzL0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUiLAogICAgICAgICAgICAgICAg
V2l0aFByb3BlcnRpZXMoIi0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcyIpLCBXaXRoUHJvcGVy
dGllcygiLS0lKGNvbmZpZ3VyYXRpb24pcyIpLCAiZXh0cmFjdCJdCiAgICAgbmFtZSA9ICJleHRy
YWN0LWJ1aWx0LXByb2R1Y3QiCiAgICAgZGVzY3JpcHRpb24gPSBbImV4dHJhY3RpbmcgYnVpbHQg
cHJvZHVjdCJdCkBAIC0zMzcsNyArMzM3LDcgQEAgY2xhc3MgVXBsb2FkTWluaWZpZWRCdWlsdFBy
b2R1Y3QoVXBsb2FkQgogCiAKIGNsYXNzIERvd25sb2FkQnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxs
Q29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsicHl0aG9uIiwgIi4vVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCIsCisgICAgY29tbWFuZCA9IFsicHl0aG9uIiwg
Ii4vVG9vbHMvQ0lTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QiLAogICAgICAgICBXaXRo
UHJvcGVydGllcygiLS1wbGF0Zm9ybT0lKHBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0t
JShjb25maWd1cmF0aW9uKXMiKSwKICAgICAgICAgV2l0aFByb3BlcnRpZXMoUzNVUkwgKyAiYXJj
aGl2ZXMud2Via2l0Lm9yZy8lKGZ1bGxQbGF0Zm9ybSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25m
aWd1cmF0aW9uKXMvJShnb3RfcmV2aXNpb24pcy56aXAiKV0KICAgICBuYW1lID0gImRvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QiCkBAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgUnVuRGFzaGJvYXJkVGVz
dHMoUnVuV2ViS2l0VGVzdHMpOgogICAgIHJlc3VsdERpcmVjdG9yeSA9IG9zLnBhdGguam9pbihS
dW5XZWJLaXRUZXN0cy5yZXN1bHREaXJlY3RvcnksICJkYXNoYm9hcmQtbGF5b3V0LXRlc3QtcmVz
dWx0cyIpCiAKICAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgIHNlbGYuc2V0Q29tbWFuZChz
ZWxmLmNvbW1hbmQgKyBbIi0tbGF5b3V0LXRlc3RzLWRpcmVjdG9yeSIsICIuL1Rvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL2Rhc2hib2Fy
ZC9TY3JpcHRzL3Rlc3RzIl0pCisgICAgICAgIHNlbGYuc2V0Q29tbWFuZChzZWxmLmNvbW1hbmQg
KyBbIi0tbGF5b3V0LXRlc3RzLWRpcmVjdG9yeSIsICIuL1Rvb2xzL0NJU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cyJdKQog
ICAgICAgICByZXR1cm4gUnVuV2ViS2l0VGVzdHMuc3RhcnQoc2VsZikKIAogCkBAIC0xMDAyLDcg
KzEwMDIsNyBAQCBjbGFzcyBSdW5CZW5jaG1hcmtUZXN0cyhzaGVsbC5UZXN0KToKIAogCiBjbGFz
cyBBcmNoaXZlVGVzdFJlc3VsdHMoc2hlbGwuU2hlbGxDb21tYW5kKToKLSAgICBjb21tYW5kID0g
WyJweXRob24iLCAiLi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZl
IiwKKyAgICBjb21tYW5kID0gWyJweXRob24iLCAiLi9Ub29scy9DSVN1cHBvcnQvdGVzdC1yZXN1
bHQtYXJjaGl2ZSIsCiAgICAgICAgICAgICAgICBXaXRoUHJvcGVydGllcygiLS1wbGF0Zm9ybT0l
KHBsYXRmb3JtKXMiKSwgV2l0aFByb3BlcnRpZXMoIi0tJShjb25maWd1cmF0aW9uKXMiKSwgImFy
Y2hpdmUiXQogICAgIG5hbWUgPSAiYXJjaGl2ZS10ZXN0LXJlc3VsdHMiCiAgICAgZGVzY3JpcHRp
b24gPSBbImFyY2hpdmluZyB0ZXN0IHJlc3VsdHMiXQpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1
aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGQucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ0lT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGQucHkJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy93a2J1aWxkLnB5
CSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw3IEBAIGRlZiBfc2hvdWxkX2ZpbGVfdHJpZ2dl
cl9idWlsZCh0YXJnZXRfcGwKICAgICAgICAgKCJFeGFtcGxlcyIsIFtdKSwKICAgICAgICAgKCJQ
ZXJmb3JtYW5jZVRlc3RzIiwgW10pLAogICAgICAgICAoIk1hbnVhbFRlc3RzIiwgW10pLAotICAg
ICAgICAoIlRvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sIiwgW10pLAorICAgICAgICAoIlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbCIsIFtdKSwKICAgICAgICAgKCJXZWJzaXRlcyIsIFtdKSwK
ICAgICAgICAgKCJvcGVuZ2wiLCBbXSksCiAgICAgICAgICgib3BlbnR5cGUiLCBbXSksCkluZGV4
OiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvd2tidWlsZF91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvd2tidWlsZF91bml0dGVzdC5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3drYnVpbGRfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgU2hvdWxkQnVpbGRUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKQogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9BWE9i
amVjdENhY2hlSU9TLm1tIl0sIFsiaW9zLTE0IiwgImlvcy1zaW11bGF0b3ItMTQiLCAidHZvcy0x
NCIsICJ0dm9zLXNpbXVsYXRvci0xNCIsICJ3YXRjaG9zLTciLCAid2F0Y2hvcy1zaW11bGF0b3It
NyJdKSwKICAgICAgICAgKFsiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lTWFj
Lm1tIiwgIlNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZU1hYy5oIl0sIFsibWFj
LXlvc2VtaXRlIiwgIm1hYy1lbGNhcGl0YW4iLCAibWFjLXNpZXJyYSIsICJtYWMtaGlnaHNpZXJy
YSIsICJtYWMtbW9qYXZlIl0pLAogICAgICAgICAoWyJTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGhlbWVJT1MubW0iLCAiU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1l
SU9TLmgiXSwgWyJpb3MtMTQiLCAiaW9zLXNpbXVsYXRvci0xNCIsICJ0dm9zLTE0IiwgInR2b3Mt
c2ltdWxhdG9yLTE0IiwgIndhdGNob3MtNyIsICJ3YXRjaG9zLXNpbXVsYXRvci03Il0pLAotICAg
ICAgICAoWyJUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9MZWFrc1ZpZXdlci9MZWFrc1ZpZXdlci5qcyJdLCBbXSksCisgICAgICAgIChb
IlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9MZWFr
c1ZpZXdlci9MZWFrc1ZpZXdlci5qcyJdLCBbXSksCiAgICAgXQogCiAgICAgZGVmIHRlc3Rfc2hv
dWxkX2J1aWxkKHNlbGYpOgpJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmct
Y29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9zY3JpcHRzL2J1aWxkZXJzX3VuaXR0ZXN0
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRlcnNfdW5pdHRlc3RzLmpz
CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1j
b25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL3NjcmlwdHMvYnVpbGRlcnNfdW5pdHRlc3Rz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC05MCw3ICs5MCw3IEBAIHZhciBrRXhhbXBsZVdlYktpdERv
dE9yZ0J1aWxkZXJTdGF0dXNKU08KIHZhciBrRXhhbXBsZUJ1aWxkSW5mb0pTT04gPSB7CiAgICAg
ImJsYW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAogICAgICJidWlsZGVyTmFtZSI6ICJXZWJL
aXQgTGludXgiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qc1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hh
bmdlZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMuICBTYWRseSwg
bWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhv
dyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6
UHJvcGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5nZUxvZ1xuIExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94
LXNoYWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFj
L2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0
aXBsZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGlj
YWwtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
cmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5BdDogVGh1IDA0
IEF1ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29tbWVu
dHM6IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdl
c2V0LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2lu
c2V0LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBs
YXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1o
b3Jpem9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxh
dGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwt
ZXhwZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAorICAgICJjaGFuZ2VzIjogWyJGaWxl
czpcbiBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL21haW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIw
MTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4
IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRv
IHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
bWFpbi5qczpQcm9wZXJ0aWVzOiBcblxuXG4iLCAiRmlsZXM6XG4gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9p
bnNldC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVk
LnBuZ1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hh
ZG93LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmlj
dC12ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbkF0
OiBUaHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3Jn
XG5Db21tZW50czogVXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvOTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1z
aGFkb3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBu
ZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUt
c3RyaWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5n
OlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12
ZXJ0aWNhbC1leHBlY3RlZC5wbmc6UHJvcGVydGllczogXG5cblxuIl0sCiAgICAgImN1cnJlbnRT
dGVwIjogbnVsbCwKICAgICAiZXRhIjogbnVsbCwKICAgICAibG9ncyI6IFsKQEAgLTEyNyw4ICsx
MjcsOCBAQCB2YXIga0V4YW1wbGVCdWlsZEluZm9KU09OID0gewogICAgICAgICAgICAgImNoYW5n
ZXMiOiBbewogICAgICAgICAgICAgICAgICJicmFuY2giOiAidHJ1bmsiLAogICAgICAgICAgICAg
ICAgICJjYXRlZ29yeSI6IG51bGwsCi0gICAgICAgICAgICAgICAgImNvbW1lbnRzIjogIkZpeCB0
eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAgKEkgbmVlZCB0byB0
aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2RlLilcblxuKiBCdWls
ZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFp
bHVyZXMvbWFpbi5qczoiLAotICAgICAgICAgICAgICAgICJmaWxlcyI6IFsiVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCisgICAgICAgICAgICAgICAgImNvbW1l
bnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNvdmVyYWdlLiAg
KEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9mIHRoZSBjb2Rl
LilcblxuKiBDSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL21haW4uanM6IiwKKyAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0NJ
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
bWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKICAgICAgICAgICAgICAgICAibnVtYmVyIjog
NDM3MDcsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbXSwKICAgICAgICAgICAgICAg
ICAicmVwb3NpdG9yeSI6ICIiLApAQCAtMTYxLDggKzE2MSw4IEBAIHZhciBrRXhhbXBsZUJ1aWxk
SW5mb0pTT04gPSB7CiAgICAgICAgICJjaGFuZ2VzIjogW3sKICAgICAgICAgICAgICJicmFuY2gi
OiAidHJ1bmsiLAogICAgICAgICAgICAgImNhdGVnb3J5IjogbnVsbCwKLSAgICAgICAgICAgICJj
b21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFn
ZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUg
Y29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICJmaWxlcyI6IFsi
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCisgICAgICAgICAg
ICAiY29tbWVudHMiOiAiRml4IHR5cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292
ZXJhZ2UuICAoSSBuZWVkIHRvIHRoaW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2Yg
dGhlIGNvZGUuKVxuXG4qIENJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAorICAgICAgICAgICAgImZpbGVzIjogWyJUb29s
cy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1
cmVzL21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCiAgICAgICAgICAgICAibnVtYmVyIjog
NDM3MDcsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFtdLAogICAgICAgICAgICAgInJlcG9z
aXRvcnkiOiAiIiwKQEAgLTcxNSw3ICs3MTUsNyBAQCB2YXIga0V4YW1wbGVQZXJmQnVpbGRlclN0
YXR1c0pTT04gPSAgewogdmFyIGtFeGFtcGxlUGVyZkJ1aWxkSW5mb0pTT04gPSB7CiAgICAgImJs
YW1lIjogWyJhYmFydGhAd2Via2l0Lm9yZyJdLAogICAgICJidWlsZGVyTmFtZSI6ICJNYWMxMC42
IFBlcmYiLAotICAgICJjaGFuZ2VzIjogWyJGaWxlczpcbiBUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5q
c1xuIFRvb2xzL0NoYW5nZUxvZ1xuQXQ6IFRodSAwNCBBdWcgMjAxMSAwMDo1MDozOFxuQ2hhbmdl
ZCBCeTogYWJhcnRoQHdlYmtpdC5vcmdcbkNvbW1lbnRzOiBGaXggdHlwZXMuICBTYWRseSwgbWFp
bi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0
byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL21haW4uanM6UHJv
cGVydGllczogXG5cblxuIiwgIkZpbGVzOlxuIExheW91dFRlc3RzL0NoYW5nZUxvZ1xuIExheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFkb3cvaW5zZXQtYm94LXNo
YWRvd3MtZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zh
c3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBs
ZS1zdHJpY3QtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwt
ZXhwZWN0ZWQucG5nXG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVw
YWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhwZWN0ZWQucG5nXG5BdDogVGh1IDA0IEF1
ZyAyMDExIDAwOjUwOjM4XG5DaGFuZ2VkIEJ5OiBhYmFydGhAd2Via2l0Lm9yZ1xuQ29tbWVudHM6
IFVwZGF0ZSBiYXNlbGluZXMgYWZ0ZXIgPGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0
LzkyMzQwPi5cblxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9ib3gtc2hhZG93L2luc2V0
LWJveC1zaGFkb3dzLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3Qv
cmVwYWludC9zaGFkb3ctbXVsdGlwbGUtaG9yaXpvbnRhbC1leHBlY3RlZC5wbmc6XG4qIHBsYXRm
b3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC1ob3Jp
em9udGFsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWlu
dC9zaGFkb3ctbXVsdGlwbGUtc3RyaWN0LXZlcnRpY2FsLWV4cGVjdGVkLnBuZzpcbiogcGxhdGZv
cm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtdmVydGljYWwtZXhw
ZWN0ZWQucG5nOlByb3BlcnRpZXM6IFxuXG5cbiJdLAorICAgICJjaGFuZ2VzIjogWyJGaWxlczpc
biBUb29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL21haW4uanNcbiBUb29scy9DaGFuZ2VMb2dcbkF0OiBUaHUgMDQgQXVnIDIwMTEg
MDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5Db21tZW50czogRml4IHR5
cGVzLiAgU2FkbHksIG1haW4uanMgaGFzIG5vIHRlc3QgY292ZXJhZ2UuICAoSSBuZWVkIHRvIHRo
aW5rXG5hYm91dCBob3cgdG8gdGVzdCB0aGlzIHBhcnQgb2YgdGhlIGNvZGUuKVxuXG4qIENJU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFp
bi5qczpQcm9wZXJ0aWVzOiBcblxuXG4iLCAiRmlsZXM6XG4gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
XG4gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvYm94LXNoYWRvdy9pbnNl
dC1ib3gtc2hhZG93cy1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBu
Z1xuIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93
LW11bHRpcGxlLXN0cmljdC1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZ1xuIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L3JlcGFpbnQvc2hhZG93LW11bHRpcGxlLXN0cmljdC12
ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
ZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0aWNhbC1leHBlY3RlZC5wbmdcbkF0OiBU
aHUgMDQgQXVnIDIwMTEgMDA6NTA6MzhcbkNoYW5nZWQgQnk6IGFiYXJ0aEB3ZWJraXQub3JnXG5D
b21tZW50czogVXBkYXRlIGJhc2VsaW5lcyBhZnRlciA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvOTIzNDA+LlxuXG4qIHBsYXRmb3JtL2Nocm9taXVtLW1hYy9mYXN0L2JveC1zaGFk
b3cvaW5zZXQtYm94LXNoYWRvd3MtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1t
YWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1ob3Jpem9udGFsLWV4cGVjdGVkLnBuZzpc
biogcGxhdGZvcm0vY2hyb21pdW0tbWFjL2Zhc3QvcmVwYWludC9zaGFkb3ctbXVsdGlwbGUtc3Ry
aWN0LWhvcml6b250YWwtZXhwZWN0ZWQucG5nOlxuKiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFz
dC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS1zdHJpY3QtdmVydGljYWwtZXhwZWN0ZWQucG5nOlxu
KiBwbGF0Zm9ybS9jaHJvbWl1bS1tYWMvZmFzdC9yZXBhaW50L3NoYWRvdy1tdWx0aXBsZS12ZXJ0
aWNhbC1leHBlY3RlZC5wbmc6UHJvcGVydGllczogXG5cblxuIl0sCiAgICAgImN1cnJlbnRTdGVw
IjogbnVsbCwKICAgICAiZXRhIjogbnVsbCwKICAgICAibG9ncyI6IFsKQEAgLTc1Miw4ICs3NTIs
OCBAQCB2YXIga0V4YW1wbGVQZXJmQnVpbGRJbmZvSlNPTiA9IHsKICAgICAgICAgICAgICJjaGFu
Z2VzIjogW3sKICAgICAgICAgICAgICAgICAiYnJhbmNoIjogInRydW5rIiwKICAgICAgICAgICAg
ICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAgICAgICAgICJjb21tZW50cyI6ICJGaXgg
dHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8g
dGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29kZS4pXG5cbiogQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL21haW4uanM6IiwKLSAgICAgICAgICAgICAgICAiZmlsZXMiOiBbIlRvb2xzL0J1aWxk
U2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWls
dXJlcy9tYWluLmpzIiwgIlRvb2xzL0NoYW5nZUxvZyJdLAorICAgICAgICAgICAgICAgICJjb21t
ZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVzdCBjb3ZlcmFnZS4g
IChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFydCBvZiB0aGUgY29k
ZS4pXG5cbiogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rl
c3RGYWlsdXJlcy9tYWluLmpzOiIsCisgICAgICAgICAgICAgICAgImZpbGVzIjogWyJUb29scy9D
SVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L21haW4uanMiLCAiVG9vbHMvQ2hhbmdlTG9nIl0sCiAgICAgICAgICAgICAgICAgIm51bWJlciI6
IDQzNzA3LAogICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCiAgICAgICAgICAgICAg
ICAgInJlcG9zaXRvcnkiOiAiIiwKQEAgLTc4Niw4ICs3ODYsOCBAQCB2YXIga0V4YW1wbGVQZXJm
QnVpbGRJbmZvSlNPTiA9IHsKICAgICAgICAgImNoYW5nZXMiOiBbewogICAgICAgICAgICAgImJy
YW5jaCI6ICJ0cnVuayIsCiAgICAgICAgICAgICAiY2F0ZWdvcnkiOiBudWxsLAotICAgICAgICAg
ICAgImNvbW1lbnRzIjogIkZpeCB0eXBlcy4gIFNhZGx5LCBtYWluLmpzIGhhcyBubyB0ZXN0IGNv
dmVyYWdlLiAgKEkgbmVlZCB0byB0aGlua1xuYWJvdXQgaG93IHRvIHRlc3QgdGhpcyBwYXJ0IG9m
IHRoZSBjb2RlLilcblxuKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZp
Zy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qczoiLAotICAgICAgICAgICAgImZpbGVz
IjogWyJUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKKyAgICAg
ICAgICAgICJjb21tZW50cyI6ICJGaXggdHlwZXMuICBTYWRseSwgbWFpbi5qcyBoYXMgbm8gdGVz
dCBjb3ZlcmFnZS4gIChJIG5lZWQgdG8gdGhpbmtcbmFib3V0IGhvdyB0byB0ZXN0IHRoaXMgcGFy
dCBvZiB0aGUgY29kZS4pXG5cbiogQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1
YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9tYWluLmpzOiIsCisgICAgICAgICAgICAiZmlsZXMiOiBb
IlRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0
RmFpbHVyZXMvbWFpbi5qcyIsICJUb29scy9DaGFuZ2VMb2ciXSwKICAgICAgICAgICAgICJudW1i
ZXIiOiA0MzcwNywKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogW10sCiAgICAgICAgICAgICAi
cmVwb3NpdG9yeSI6ICIiLApJbmRleDogVG9vbHMvQ0lTdXBwb3J0L2V3cy1hcHAvZXdzL3ZpZXdz
L3N0YXR1c2J1YmJsZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvZXdzLWFwcC9l
d3Mvdmlld3Mvc3RhdHVzYnViYmxlLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9DSVN1
cHBvcnQvZXdzLWFwcC9ld3Mvdmlld3Mvc3RhdHVzYnViYmxlLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC00MCw3ICs0MCw3IEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCiBj
bGFzcyBTdGF0dXNCdWJibGUoVmlldyk6Ci0gICAgIyBUaGVzZSBxdWV1ZSBuYW1lcyBhcmUgZnJv
bSBzaG9ydG5hbWUgaW4gaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci93ZWJraXQvdHJ1
bmsvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL2NvbmZpZy5qc29uCisgICAgIyBU
aGVzZSBxdWV1ZSBuYW1lcyBhcmUgZnJvbSBzaG9ydG5hbWUgaW4gaHR0cHM6Ly90cmFjLndlYmtp
dC5vcmcvYnJvd3Nlci93ZWJraXQvdHJ1bmsvVG9vbHMvQ0lTdXBwb3J0L2V3cy1idWlsZC9jb25m
aWcuanNvbgogICAgICMgRklYTUU6IEF1dG8tZ2VuZXJhdGUgdGhpcyBsaXN0IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTU2NDAKICAgICAjIE5vdGU6IFRoaXMgbGlz
dCBpcyBzb3J0ZWQgaW4gdGhlIG9yZGVyIG9mIHdoaWNoIGJ1YmJsZXMgYXBwZWFyIGluIGJ1Z3pp
bGxhLgogICAgIEFMTF9RVUVVRVMgPSBbJ3N0eWxlJywgJ2lvcycsICdpb3Mtc2ltJywgJ21hYycs
ICdtYWMtZGVidWcnLCAnbWFjLUFTJywgJ3R2JywgJ3R2LXNpbScsICd3YXRjaCcsICd3YXRjaC1z
aW0nLCAnZ3RrJywgJ3dwZScsICd3aW5jYWlybycsICd3aW4nLApJbmRleDogVG9vbHMvQ0lTdXBw
b3J0L2V3cy1idWlsZC9zdGVwcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DSVN1cHBvcnQvZXdz
LWJ1aWxkL3N0ZXBzLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9DSVN1cHBvcnQvZXdz
LWJ1aWxkL3N0ZXBzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yNTUsOSArMjU1LDkgQEAgY2xhc3Mg
Q2hlY2tQYXRjaFJlbGV2YW5jZShidWlsZHN0ZXAuQnVpbAogICAgIF0KIAogICAgIHNlcnZpY2Vz
X3BhdGhzID0gWwotICAgICAgICAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0
Lm9yZy1jb25maWcnLAotICAgICAgICAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxk
JywKLSAgICAgICAgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L1NoYXJlZCcsCisgICAgICAgICdU
b29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcnLAorICAgICAgICAnVG9vbHMv
Q0lTdXBwb3J0L2V3cy1idWlsZCcsCisgICAgICAgICdUb29scy9DSVN1cHBvcnQvU2hhcmVkJywK
ICAgICAgICAgJ1Rvb2xzL1NjcmlwdHMvbGlicmFyaWVzL3Jlc3VsdHNkYnB5JywKICAgICBdCiAK
QEAgLTExMjUsNyArMTEyNSw3IEBAIGNsYXNzIFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzKHNo
ZWxsLlMKICAgICBjb21tYW5kID0gWydweXRob24nLCAnc3RlcHNfdW5pdHRlc3QucHknXQogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgc2hlbGwuU2hlbGxDb21t
YW5kLl9faW5pdF9fKHNlbGYsIHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywgdGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFs
c2UsICoqa3dhcmdzKQorICAgICAgICBzaGVsbC5TaGVsbENvbW1hbmQuX19pbml0X18oc2VsZiwg
d29ya2Rpcj0nYnVpbGQvVG9vbHMvQ0lTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywg
dGltZW91dD0yICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQogCiAgICAgZGVmIGdl
dFJlc3VsdFN1bW1hcnkoc2VsZik6CiAgICAgICAgIGlmIHNlbGYucmVzdWx0cyA9PSBTVUNDRVNT
OgpAQCAtMTEzNiw3ICsxMTM2LDcgQEAgY2xhc3MgUnVuQnVpbGRXZWJLaXRPcmdVbml0VGVzdHMo
c2hlbGwuUwogY2xhc3MgUnVuRVdTVW5pdFRlc3RzKHNoZWxsLlNoZWxsQ29tbWFuZCk6CiAgICAg
bmFtZSA9ICdld3MtdW5pdC10ZXN0cycKICAgICBkZXNjcmlwdGlvbiA9IFsnZXdzLXVuaXQtdGVz
dHMgcnVubmluZyddCi0gICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1idWlsZC9ydW5Vbml0dGVzdHMucHknXQorICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICdUb29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weSddCiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgogICAgICAgICBzdXBlcihSdW5FV1NVbml0VGVz
dHMsIHNlbGYpLl9faW5pdF9fKHRpbWVvdXQ9MiAqIDYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3
YXJncykKQEAgLTExNTMsNyArMTE1Myw3IEBAIGNsYXNzIFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25m
aWcoc2hlbGwuU2gKICAgICBjb21tYW5kID0gWydidWlsZGJvdCcsICdjaGVja2NvbmZpZyddCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzdXBlcihSdW5FV1NC
dWlsZGJvdENoZWNrQ29uZmlnLCBzZWxmKS5fX2luaXRfXyh3b3JrZGlyPSdidWlsZC9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9ld3MtYnVpbGQnLCB0aW1lb3V0PTIgKiA2MCwgbG9nRW52aXJvbj1G
YWxzZSwgKiprd2FyZ3MpCisgICAgICAgIHN1cGVyKFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcs
IHNlbGYpLl9faW5pdF9fKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQn
LCB0aW1lb3V0PTIgKiA2MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCiAKICAgICBkZWYg
Z2V0UmVzdWx0U3VtbWFyeShzZWxmKToKICAgICAgICAgaWYgc2VsZi5yZXN1bHRzID09IFNVQ0NF
U1M6CkBAIC0xODI0LDE0ICsxODI0LDE0IEBAIGNsYXNzIENsZWFuQnVpbGQoc2hlbGwuQ29tcGls
ZSk6CiAgICAgbmFtZSA9ICdkZWxldGUtV2ViS2l0QnVpbGQtZGlyZWN0b3J5JwogICAgIGRlc2Ny
aXB0aW9uID0gWydkZWxldGluZyBXZWJLaXRCdWlsZCBkaXJlY3RvcnknXQogICAgIGRlc2NyaXB0
aW9uRG9uZSA9IFsnRGVsZXRlZCBXZWJLaXRCdWlsZCBkaXJlY3RvcnknXQotICAgIGNvbW1hbmQg
PSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9jbGVhbi1idWlsZCcsIFdpdGhQ
cm9wZXJ0aWVzKCctLXBsYXRmb3JtPSUoZnVsbFBsYXRmb3JtKXMnKSwgV2l0aFByb3BlcnRpZXMo
Jy0tJShjb25maWd1cmF0aW9uKXMnKV0KKyAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMv
Q0lTdXBwb3J0L2NsZWFuLWJ1aWxkJywgV2l0aFByb3BlcnRpZXMoJy0tcGxhdGZvcm09JShmdWxs
UGxhdGZvcm0pcycpLCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpXQogCiAK
IGNsYXNzIEtpbGxPbGRQcm9jZXNzZXMoc2hlbGwuQ29tcGlsZSk6CiAgICAgbmFtZSA9ICdraWxs
LW9sZC1wcm9jZXNzZXMnCiAgICAgZGVzY3JpcHRpb24gPSBbJ2tpbGxpbmcgb2xkIHByb2Nlc3Nl
cyddCiAgICAgZGVzY3JpcHRpb25Eb25lID0gWydLaWxsZWQgb2xkIHByb2Nlc3NlcyddCi0gICAg
Y29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXBy
b2Nlc3NlcycsICdidWlsZGJvdCddCisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0NJ
U3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMnLCAnYnVpbGRib3QnXQogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsICoqa3dhcmdzKToKICAgICAgICAgc3VwZXIoS2lsbE9sZFByb2Nlc3Nlcywgc2Vs
ZikuX19pbml0X18odGltZW91dD02MCwgbG9nRW52aXJvbj1GYWxzZSwgKiprd2FyZ3MpCkBAIC0x
ODUxLDcgKzE4NTEsNyBAQCBjbGFzcyBUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uKHNoZWxsLkNv
CiAgICAgbmFtZSA9ICd0cmlnZ2VyLWNyYXNoLWxvZy1zdWJtaXNzaW9uJwogICAgIGRlc2NyaXB0
aW9uID0gWyd0cmlnZ2VyaW5nIGNyYXNoIGxvZyBzdWJtaXNzaW9uJ10KICAgICBkZXNjcmlwdGlv
bkRvbmUgPSBbJ1RyaWdnZXJlZCBjcmFzaCBsb2cgc3VibWlzc2lvbiddCi0gICAgY29tbWFuZCA9
IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3RyaWdnZXItY3Jhc2gtbG9nLXN1
Ym1pc3Npb24nXQorICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9DSVN1cHBvcnQvdHJp
Z2dlci1jcmFzaC1sb2ctc3VibWlzc2lvbiddCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgKipr
d2FyZ3MpOgogICAgICAgICBzdXBlcihUcmlnZ2VyQ3Jhc2hMb2dTdWJtaXNzaW9uLCBzZWxmKS5f
X2luaXRfXyh0aW1lb3V0PTYwLCBsb2dFbnZpcm9uPUZhbHNlLCAqKmt3YXJncykKQEAgLTE4NjYs
NyArMTg2Niw3IEBAIGNsYXNzIFdhaXRGb3JDcmFzaENvbGxlY3Rpb24oc2hlbGwuQ29tcGkKICAg
ICBuYW1lID0gJ3dhaXQtZm9yLWNyYXNoLWNvbGxlY3Rpb24nCiAgICAgZGVzY3JpcHRpb24gPSBb
J3dhaXRpbmctZm9yLWNyYXNoLWNvbGxlY3Rpb24tdG8tcXVpZXNjZSddCiAgICAgZGVzY3JpcHRp
b25Eb25lID0gWydDcmFzaCBjb2xsZWN0aW9uIGhhcyBxdWllc2NlZCddCi0gICAgY29tbWFuZCA9
IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L3dhaXQtZm9yLWNyYXNoLWNvbGxl
Y3Rpb24nLCAnLS10aW1lb3V0Jywgc3RyKDUgKiA2MCldCisgICAgY29tbWFuZCA9IFsncHl0aG9u
JywgJ1Rvb2xzL0NJU3VwcG9ydC93YWl0LWZvci1jcmFzaC1jb2xsZWN0aW9uJywgJy0tdGltZW91
dCcsIHN0cig1ICogNjApXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3dhcmdzKToKICAg
ICAgICAgc3VwZXIoV2FpdEZvckNyYXNoQ29sbGVjdGlvbiwgc2VsZikuX19pbml0X18odGltZW91
dD02ICogNjAsIGxvZ0Vudmlyb249RmFsc2UsICoqa3dhcmdzKQpAQCAtMjMzOSw3ICsyMzM5LDcg
QEAgY2xhc3MgUnVuV2ViS2l0MVRlc3RzKFJ1bldlYktpdFRlc3RzKToKIAogCiBjbGFzcyBBcmNo
aXZlQnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxsQ29tbWFuZCk6Ci0gICAgY29tbWFuZCA9IFsncHl0
aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsCisg
ICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFy
Y2hpdmUnLAogICAgICAgICAgICAgICAgV2l0aFByb3BlcnRpZXMoJy0tcGxhdGZvcm09JShmdWxs
UGxhdGZvcm0pcycpLCBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpLCAnYXJj
aGl2ZSddCiAgICAgbmFtZSA9ICdhcmNoaXZlLWJ1aWx0LXByb2R1Y3QnCiAgICAgZGVzY3JpcHRp
b24gPSBbJ2FyY2hpdmluZyBidWlsdCBwcm9kdWN0J10KQEAgLTI0MTQsNyArMjQxNCw3IEBAIGNs
YXNzIFRyYW5zZmVyVG9TMyhtYXN0ZXIuTWFzdGVyU2hlbGxDb20KIAogCiBjbGFzcyBEb3dubG9h
ZEJ1aWx0UHJvZHVjdChzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhv
bicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywKKyAg
ICBjb21tYW5kID0gWydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXBy
b2R1Y3QnLAogICAgICAgICBXaXRoUHJvcGVydGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpLAog
ICAgICAgICBXaXRoUHJvcGVydGllcyhTM1VSTCArICdld3MtYXJjaGl2ZXMud2Via2l0Lm9yZy8l
KGZ1bGxQbGF0Zm9ybSlzLSUoYXJjaGl0ZWN0dXJlKXMtJShjb25maWd1cmF0aW9uKXMvJShwYXRj
aF9pZClzLnppcCcpXQogICAgIG5hbWUgPSAnZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcKQEAgLTI0
MzgsNyArMjQzOCw3IEBAIGNsYXNzIERvd25sb2FkQnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxsQ28K
IAogCiBjbGFzcyBEb3dubG9hZEJ1aWx0UHJvZHVjdEZyb21NYXN0ZXIoRG93bmxvYWRCdWlsdFBy
b2R1Y3QpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9y
dC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywKKyAgICBjb21tYW5kID0gWydweXRob24nLCAnVG9v
bHMvQ0lTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLAogICAgICAgICBXaXRoUHJvcGVy
dGllcygnLS0lKGNvbmZpZ3VyYXRpb24pcycpLAogICAgICAgICBXaXRoUHJvcGVydGllcyhFV1Nf
QlVJTERfVVJMICsgJ2FyY2hpdmVzLyUoZnVsbFBsYXRmb3JtKXMtJShhcmNoaXRlY3R1cmUpcy0l
KGNvbmZpZ3VyYXRpb24pcy8lKHBhdGNoX2lkKXMuemlwJyldCiAgICAgaGFsdE9uRmFpbHVyZSA9
IFRydWUKQEAgLTI0NTQsNyArMjQ1NCw3IEBAIGNsYXNzIERvd25sb2FkQnVpbHRQcm9kdWN0RnJv
bU1hc3RlcihEb3cKIAogCiBjbGFzcyBFeHRyYWN0QnVpbHRQcm9kdWN0KHNoZWxsLlNoZWxsQ29t
bWFuZCk6Ci0gICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsCisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJ1Rvb2xz
L0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLAogICAgICAgICAgICAgICAgV2l0aFBy
b3BlcnRpZXMoJy0tcGxhdGZvcm09JShmdWxsUGxhdGZvcm0pcycpLCBXaXRoUHJvcGVydGllcygn
LS0lKGNvbmZpZ3VyYXRpb24pcycpLCAnZXh0cmFjdCddCiAgICAgbmFtZSA9ICdleHRyYWN0LWJ1
aWx0LXByb2R1Y3QnCiAgICAgZGVzY3JpcHRpb24gPSBbJ2V4dHJhY3RpbmcgYnVpbHQgcHJvZHVj
dCddCkBAIC0yNjk2LDcgKzI2OTYsNyBAQCBjbGFzcyBBbmFseXplQVBJVGVzdHNSZXN1bHRzKGJ1
aWxkc3RlcC5CCiAgICAgICAgICAgICBwcmludCgnRXJyb3IgaW4gc2VuZGluZyBlbWFpbCBmb3Ig
cHJlLWV4aXN0aW5nIGZhaWx1cmU6IHt9Jy5mb3JtYXQoZSkpCiAKIGNsYXNzIEFyY2hpdmVUZXN0
UmVzdWx0cyhzaGVsbC5TaGVsbENvbW1hbmQpOgotICAgIGNvbW1hbmQgPSBbJ3B5dGhvbicsICdU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlJywKKyAgICBjb21tYW5k
ID0gWydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L3Rlc3QtcmVzdWx0LWFyY2hpdmUnLAogICAg
ICAgICAgICAgICAgSW50ZXJwb2xhdGUoJy0tcGxhdGZvcm09JShwcm9wOnBsYXRmb3JtKXMnKSwg
SW50ZXJwb2xhdGUoJy0tJShwcm9wOmNvbmZpZ3VyYXRpb24pcycpLCAnYXJjaGl2ZSddCiAgICAg
bmFtZSA9ICdhcmNoaXZlLXRlc3QtcmVzdWx0cycKICAgICBkZXNjcmlwdGlvbiA9IFsnYXJjaGl2
aW5nIHRlc3QgcmVzdWx0cyddCkluZGV4OiBUb29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkL3N0ZXBz
X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvc3Rl
cHNfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL0NJU3VwcG9ydC9ld3Mt
YnVpbGQvc3RlcHNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTYyNiw3ICs2MjYsNyBA
QCBjbGFzcyBUZXN0UnVuRVdTQnVpbGRib3RDaGVja0NvbmZpZyhCdWlsCiAgICAgZGVmIHRlc3Rf
c3VjY2VzcyhzZWxmKToKICAgICAgICAgc2VsZi5zZXR1cFN0ZXAoUnVuRVdTQnVpbGRib3RDaGVj
a0NvbmZpZygpKQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAg
ICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdz
LWJ1aWxkJywKKyAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0NJ
U3VwcG9ydC9ld3MtYnVpbGQnLAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAs
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAogICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ2J1aWxkYm90JywgJ2NoZWNrY29uZmlnJ10sCkBAIC02Mzks
NyArNjM5LDcgQEAgY2xhc3MgVGVzdFJ1bkVXU0J1aWxkYm90Q2hlY2tDb25maWcoQnVpbAogICAg
IGRlZiB0ZXN0X2ZhaWx1cmUoc2VsZik6CiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkVXU0J1
aWxkYm90Q2hlY2tDb25maWcoKSkKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygK
LSAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J2J1aWxkL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2V3cy1idWlsZCcsCisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWls
ZC9Ub29scy9DSVN1cHBvcnQvZXdzLWJ1aWxkJywKICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9MTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydidWlsZGJvdCcsICdjaGVja2NvbmZpZydd
LApAQCAtNjY1LDcgKzY2NSw3IEBAIGNsYXNzIFRlc3RSdW5FV1NVbml0VGVzdHMoQnVpbGRTdGVw
TWl4aW4KICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAg
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9n
RW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24n
LCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weSddLAor
ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9DSVN1cHBv
cnQvZXdzLWJ1aWxkL3J1blVuaXR0ZXN0cy5weSddLAogICAgICAgICAgICAgICAgICAgICAgICAg
KQogICAgICAgICAgICAgKyAwLAogICAgICAgICApCkBAIC02NzgsNyArNjc4LDcgQEAgY2xhc3Mg
VGVzdFJ1bkVXU1VuaXRUZXN0cyhCdWlsZFN0ZXBNaXhpbgogICAgICAgICAgICAgRXhwZWN0U2hl
bGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD0xMjAs
CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9l
d3MtYnVpbGQvcnVuVW5pdHRlc3RzLnB5J10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPVsncHl0aG9uJywgJ1Rvb2xzL0NJU3VwcG9ydC9ld3MtYnVpbGQvcnVuVW5pdHRlc3RzLnB5
J10sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxs
LmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuaGFuZGxlZCBFcnJvci4gVHJhY2ViYWNrIChtb3N0IHJl
Y2VudCBjYWxsIGxhc3QpOiBLZXlzIGluIGNtZCBtaXNzaW5nIGZyb20gZXhwZWN0YXRpb246IFts
b2dmaWxlcy5qc29uXScpCiAgICAgICAgICAgICArIDIsCkBAIC03MzQsNyArNzM0LDcgQEAgY2xh
c3MgVGVzdFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRlc3RzKEJ1aQogICAgIGRlZiB0ZXN0X3N1Y2Nl
c3Moc2VsZik6CiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKFJ1bkJ1aWxkV2ViS2l0T3JnVW5pdFRl
c3RzKCkpCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCi0gICAgICAgICAgICBF
eHBlY3RTaGVsbCh3b3JrZGlyPSdidWlsZC9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZycsCisgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSdidWls
ZC9Ub29scy9DSVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgdGltZW91dD0xMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdz
dGVwc191bml0dGVzdC5weSddLApAQCAtNzQ3LDcgKzc0Nyw3IEBAIGNsYXNzIFRlc3RSdW5CdWls
ZFdlYktpdE9yZ1VuaXRUZXN0cyhCdWkKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAg
ICAgICBzZWxmLnNldHVwU3RlcChSdW5CdWlsZFdlYktpdE9yZ1VuaXRUZXN0cygpKQogICAgICAg
ICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAotICAgICAgICAgICAgRXhwZWN0U2hlbGwod29y
a2Rpcj0nYnVpbGQvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcnLAorICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nYnVpbGQvVG9vbHMvQ0lTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnJywKICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9MTIwLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnc3RlcHNfdW5pdHRlc3Qu
cHknXSwKQEAgLTc3MSw3ICs3NzEsNyBAQCBjbGFzcyBUZXN0S2lsbE9sZFByb2Nlc3NlcyhCdWls
ZFN0ZXBNaXhpCiAgICAgICAgIHNlbGYuc2V0dXBTdGVwKEtpbGxPbGRQcm9jZXNzZXMoKSkKICAg
ICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxs
KHdvcmtkaXI9J3drZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRo
b24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQva2lsbC1vbGQtcHJvY2Vzc2VzJywgJ2J1aWxk
Ym90J10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xz
L0NJU3VwcG9ydC9raWxsLW9sZC1wcm9jZXNzZXMnLCAnYnVpbGRib3QnXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICB0
aW1lb3V0PTYwLAogICAgICAgICAgICAgICAgICAgICAgICAgKQpAQCAtNzg0LDcgKzc4NCw3IEBA
IGNsYXNzIFRlc3RLaWxsT2xkUHJvY2Vzc2VzKEJ1aWxkU3RlcE1peGkKICAgICAgICAgc2VsZi5z
ZXR1cFN0ZXAoS2lsbE9sZFByb2Nlc3NlcygpKQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNv
bW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAg
ICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9raWxsLW9sZC1wcm9jZXNzZXMnLCAnYnVpbGRib3QnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L2tpbGwtb2xkLXByb2Nl
c3NlcycsICdidWlsZGJvdCddLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1G
YWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9NjAsCiAgICAgICAgICAgICAg
ICAgICAgICAgICApCkBAIC04MDksNyArODA5LDcgQEAgY2xhc3MgVGVzdENsZWFuQnVpbGQoQnVp
bGRTdGVwTWl4aW5BZGRpdAogICAgICAgICBzZWxmLnNldFByb3BlcnR5KCdjb25maWd1cmF0aW9u
JywgJ3JlbGVhc2UnKQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAg
ICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAotICAgICAgICAgICAgICAgICAgICAg
ICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9jbGVhbi1idWls
ZCcsICctLXBsYXRmb3JtPWlvcy0xMScsICctLXJlbGVhc2UnXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L2NsZWFuLWJ1aWxkJywg
Jy0tcGxhdGZvcm09aW9zLTExJywgJy0tcmVsZWFzZSddLAogICAgICAgICAgICAgICAgICAgICAg
ICAgKQogICAgICAgICAgICAgKyAwLAogICAgICAgICApCkBAIC04MjIsNyArODIyLDcgQEAgY2xh
c3MgVGVzdENsZWFuQnVpbGQoQnVpbGRTdGVwTWl4aW5BZGRpdAogICAgICAgICBzZWxmLnNldFBy
b3BlcnR5KCdjb25maWd1cmF0aW9uJywgJ2RlYnVnJykKICAgICAgICAgc2VsZi5leHBlY3RSZW1v
dGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvY2xlYW4tYnVpbGQnLCAnLS1wbGF0Zm9ybT1pb3Mtc2ltdWxhdG9yLTExJywgJy0t
ZGVidWcnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQ0lTdXBwb3J0L2NsZWFuLWJ1aWxkJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvci0xMScs
ICctLWRlYnVnJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4
cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZXJyb3IuJykKICAgICAg
ICAgICAgICsgMiwKQEAgLTI0NjMsNyArMjQ2Myw3IEBAIGNsYXNzIFRlc3RBcmNoaXZlQnVpbHRQ
cm9kdWN0KEJ1aWxkU3RlcE0KICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAg
ICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAg
ICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5k
PVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2
ZScsICctLXBsYXRmb3JtPWlvcy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdhcmNoaXZlJ10s
CisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0NJU3Vw
cG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1pb3Mtc2ltdWxhdG9yJywg
ICctLXJlbGVhc2UnLCAnYXJjaGl2ZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAg
ICAgICAgICAgKyAwLAogICAgICAgICApCkBAIC0yNDc3LDcgKzI0NzcsNyBAQCBjbGFzcyBUZXN0
QXJjaGl2ZUJ1aWx0UHJvZHVjdChCdWlsZFN0ZXBNCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3Rl
Q29tbWFuZHMoCiAgICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsdC1w
cm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0Zm9ybT1tYWMtc2llcnJhJywgICctLWRlYnVnJywgJ2Fy
Y2hpdmUnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPW1hYy1zaWVy
cmEnLCAgJy0tZGVidWcnLCAnYXJjaGl2ZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgKQog
ICAgICAgICAgICAgKyBFeHBlY3RTaGVsbC5sb2coJ3N0ZGlvJywgc3Rkb3V0PSdVbmV4cGVjdGVk
IGZhaWx1cmUuJykKICAgICAgICAgICAgICsgMiwKQEAgLTI1NTQsNyArMjU1NCw3IEBAIGNsYXNz
IFRlc3REb3dubG9hZEJ1aWx0UHJvZHVjdChCdWlsZFN0ZXAKICAgICAgICAgc2VsZi5leHBlY3RS
ZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Rv
d25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnLS1yZWxlYXNlJywgJ2h0dHBzOi8vczMtdXMtd2VzdC0y
LmFtYXpvbmF3cy5jb20vZXdzLWFyY2hpdmVzLndlYmtpdC5vcmcvaW9zLXNpbXVsYXRvci0xMi14
ODZfNjQtcmVsZWFzZS8xMjM0LnppcCddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3B5dGhvbicsICdUb29scy9DSVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVjdCcsICct
LXJlbGVhc2UnLCAnaHR0cHM6Ly9zMy11cy13ZXN0LTIuYW1hem9uYXdzLmNvbS9ld3MtYXJjaGl2
ZXMud2Via2l0Lm9yZy9pb3Mtc2ltdWxhdG9yLTEyLXg4Nl82NC1yZWxlYXNlLzEyMzQuemlwJ10s
CiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICArIDAsCiAgICAgICAgICkK
QEAgLTI1NzAsNyArMjU3MCw3IEBAIGNsYXNzIFRlc3REb3dubG9hZEJ1aWx0UHJvZHVjdChCdWls
ZFN0ZXAKICAgICAgICAgc2VsZi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4
cGVjdFNoZWxsKHdvcmtkaXI9J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vu
dmlyb249RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywg
J1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2Rvd25sb2FkLWJ1aWx0LXByb2R1Y3QnLCAnLS1kZWJ1
ZycsICdodHRwczovL3MzLXVzLXdlc3QtMi5hbWF6b25hd3MuY29tL2V3cy1hcmNoaXZlcy53ZWJr
aXQub3JnL21hYy1zaWVycmEteDg2XzY0LWRlYnVnLzEyMzQ1Ni56aXAnXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L2Rvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QnLCAnLS1kZWJ1ZycsICdodHRwczovL3MzLXVzLXdlc3QtMi5hbWF6b25h
d3MuY29tL2V3cy1hcmNoaXZlcy53ZWJraXQub3JnL21hYy1zaWVycmEteDg2XzY0LWRlYnVnLzEy
MzQ1Ni56aXAnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgRXhw
ZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0nVW5leHBlY3RlZCBmYWlsdXJlLicpCiAgICAg
ICAgICAgICArIDIsCkBAIC0yNTk2LDcgKzI1OTYsNyBAQCBjbGFzcyBUZXN0RG93bmxvYWRCdWls
dFByb2R1Y3RGcm9tTWFzdGVyCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAg
ICAgICAgICAgICBFeHBlY3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBsb2dFbnZpcm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD1bJ3B5dGhvbicsICdUb29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9k
dWN0JywgJy0tcmVsZWFzZScsICdodHRwczovL2V3cy1idWlsZC53ZWJraXQub3JnL2FyY2hpdmVz
L2lvcy1zaW11bGF0b3ItMTIteDg2XzY0LXJlbGVhc2UvMTIzNC56aXAnXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQ0lTdXBwb3J0L2Rvd25sb2Fk
LWJ1aWx0LXByb2R1Y3QnLCAnLS1yZWxlYXNlJywgJ2h0dHBzOi8vZXdzLWJ1aWxkLndlYmtpdC5v
cmcvYXJjaGl2ZXMvaW9zLXNpbXVsYXRvci0xMi14ODZfNjQtcmVsZWFzZS8xMjM0LnppcCddLAog
ICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgKyAwLAogICAgICAgICApCkBA
IC0yNjEyLDcgKzI2MTIsNyBAQCBjbGFzcyBUZXN0RG93bmxvYWRCdWlsdFByb2R1Y3RGcm9tTWFz
dGVyCiAgICAgICAgIHNlbGYuZXhwZWN0UmVtb3RlQ29tbWFuZHMoCiAgICAgICAgICAgICBFeHBl
Y3RTaGVsbCh3b3JrZGlyPSd3a2RpcicsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dFbnZp
cm9uPUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1bJ3B5dGhvbicsICdU
b29scy9CdWlsZFNsYXZlU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0tZGVidWcn
LCAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9hcmNoaXZlcy9tYWMtc2llcnJhLXg4Nl82
NC1kZWJ1Zy8xMjM0NTYuemlwJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsn
cHl0aG9uJywgJ1Rvb2xzL0NJU3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0tZGVi
dWcnLCAnaHR0cHM6Ly9ld3MtYnVpbGQud2Via2l0Lm9yZy9hcmNoaXZlcy9tYWMtc2llcnJhLXg4
Nl82NC1kZWJ1Zy8xMjM0NTYuemlwJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAg
ICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRvdXQ9J1VuZXhwZWN0ZWQgZmFp
bHVyZS4nKQogICAgICAgICAgICAgKyAyLApAQCAtMjYzNiw3ICsyNjM2LDcgQEAgY2xhc3MgVGVz
dEV4dHJhY3RCdWlsdFByb2R1Y3QoQnVpbGRTdGVwTQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90
ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbHQt
cHJvZHVjdC1hcmNoaXZlJywgJy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvcicsICAnLS1yZWxlYXNl
JywgJ2V4dHJhY3QnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24n
LCAnVG9vbHMvQ0lTdXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPWlv
cy1zaW11bGF0b3InLCAgJy0tcmVsZWFzZScsICdleHRyYWN0J10sCiAgICAgICAgICAgICAgICAg
ICAgICAgICApCiAgICAgICAgICAgICArIDAsCiAgICAgICAgICkKQEAgLTI2NTAsNyArMjY1MCw3
IEBAIGNsYXNzIFRlc3RFeHRyYWN0QnVpbHRQcm9kdWN0KEJ1aWxkU3RlcE0KICAgICAgICAgc2Vs
Zi5leHBlY3RSZW1vdGVDb21tYW5kcygKICAgICAgICAgICAgIEV4cGVjdFNoZWxsKHdvcmtkaXI9
J3drZGlyJywKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ0Vudmlyb249RmFsc2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtPW1hYy1zaWVycmEnLCAg
Jy0tZGVidWcnLCAnZXh0cmFjdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1b
J3B5dGhvbicsICdUb29scy9DSVN1cHBvcnQvYnVpbHQtcHJvZHVjdC1hcmNoaXZlJywgJy0tcGxh
dGZvcm09bWFjLXNpZXJyYScsICAnLS1kZWJ1ZycsICdleHRyYWN0J10sCiAgICAgICAgICAgICAg
ICAgICAgICAgICApCiAgICAgICAgICAgICArIEV4cGVjdFNoZWxsLmxvZygnc3RkaW8nLCBzdGRv
dXQ9J1VuZXhwZWN0ZWQgZmFpbHVyZS4nKQogICAgICAgICAgICAgKyAyLApAQCAtMzEwNCw3ICsz
MTA0LDcgQEAgY2xhc3MgVGVzdEFyY2hpdmVUZXN0UmVzdWx0cyhCdWlsZFN0ZXBNaQogICAgICAg
ICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0U2hlbGwod29y
a2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJvbj1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9vbHMvQnVpbGRT
bGF2ZVN1cHBvcnQvdGVzdC1yZXN1bHQtYXJjaGl2ZScsICctLXBsYXRmb3JtPWlvcy1zaW11bGF0
b3InLCAgJy0tcmVsZWFzZScsICdhcmNoaXZlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBj
b21tYW5kPVsncHl0aG9uJywgJ1Rvb2xzL0NJU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlJywg
Jy0tcGxhdGZvcm09aW9zLXNpbXVsYXRvcicsICAnLS1yZWxlYXNlJywgJ2FyY2hpdmUnXSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICsgMCwKICAgICAgICAgKQpAQCAt
MzExOSw3ICszMTE5LDcgQEAgY2xhc3MgVGVzdEFyY2hpdmVUZXN0UmVzdWx0cyhCdWlsZFN0ZXBN
aQogICAgICAgICBzZWxmLmV4cGVjdFJlbW90ZUNvbW1hbmRzKAogICAgICAgICAgICAgRXhwZWN0
U2hlbGwod29ya2Rpcj0nd2tkaXInLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9nRW52aXJv
bj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9WydweXRob24nLCAnVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvdGVzdC1yZXN1bHQtYXJjaGl2ZScsICctLXBsYXRmb3JtPW1h
YycsICAnLS1kZWJ1ZycsICdhcmNoaXZlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICBjb21t
YW5kPVsncHl0aG9uJywgJ1Rvb2xzL0NJU3VwcG9ydC90ZXN0LXJlc3VsdC1hcmNoaXZlJywgJy0t
cGxhdGZvcm09bWFjJywgICctLWRlYnVnJywgJ2FyY2hpdmUnXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICkKICAgICAgICAgICAgICsgRXhwZWN0U2hlbGwubG9nKCdzdGRpbycsIHN0ZG91dD0n
VW5leHBlY3RlZCBmYWlsdXJlLicpCiAgICAgICAgICAgICArIDIsCkluZGV4OiBUb29scy9FV1NU
b29scy9TdGFydC1RdWV1ZS5wczEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRVdTVG9vbHMvU3RhcnQt
UXVldWUucHMxCShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9FV1NUb29scy9TdGFydC1RdWV1
ZS5wczEJKHdvcmtpbmcgY29weSkKQEAgLTk5LDUgKzk5LDUgQEAgd2hpbGUgKCR0cnVlKSB7CiAK
ICAgICBwZXJsIC4vVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0OwogICAgIHB5dGhvbiAuL1Rv
b2xzL1NjcmlwdHMvd2Via2l0LXBhdGNoICRxdWV1ZSAtLWJvdC1pZD0kbmFtZSAtLW5vLWNvbmZp
cm0gLS1leGl0LWFmdGVyLWl0ZXJhdGlvbiAkaXRlcmF0aW9uczsKLSAgICBweXRob24gL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2tpbGwtb2xkLXByb2Nlc3NlcworICAgIHB5dGhvbiAvVG9vbHMv
Q0lTdXBwb3J0L2tpbGwtb2xkLXByb2Nlc3NlcwogfQpJbmRleDogVG9vbHMvU2NyaXB0cy9iaXNl
Y3QtYnVpbGRzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYmlzZWN0LWJ1aWxkcwkocmV2
aXNpb24gMjY5MDQyKQorKysgVG9vbHMvU2NyaXB0cy9iaXNlY3QtYnVpbGRzCSh3b3JraW5nIGNv
cHkpCkBAIC02OCwxMyArNjgsMTMgQEAgZGVmIGRvd25sb2FkX2FyY2hpdmUob3B0aW9ucywgcmV2
aXNpb24pOgogICAgIGFwaV91cmwgPSBnZXRfYXBpX2FyY2hpdmVfdXJsKG9wdGlvbnMpCiAgICAg
czNfdXJsID0gZ2V0X3MzX2xvY2F0aW9uX2Zvcl9yZXZpc2lvbihhcGlfdXJsLCByZXZpc2lvbikK
ICAgICBwcmludCgnQXJjaGl2ZSBVUkw6IHt9Jy5mb3JtYXQoczNfdXJsKSkKLSAgICBjb21tYW5k
ID0gWydweXRob24nLCAnLi4vQnVpbGRTbGF2ZVN1cHBvcnQvZG93bmxvYWQtYnVpbHQtcHJvZHVj
dCcsICctLXt9Jy5mb3JtYXQob3B0aW9ucy5jb25maWd1cmF0aW9uKSwgJy0tcGxhdGZvcm0nLCBv
cHRpb25zLnBsYXRmb3JtLCBzM191cmxdCisgICAgY29tbWFuZCA9IFsncHl0aG9uJywgJy4uL0NJ
U3VwcG9ydC9kb3dubG9hZC1idWlsdC1wcm9kdWN0JywgJy0te30nLmZvcm1hdChvcHRpb25zLmNv
bmZpZ3VyYXRpb24pLCAnLS1wbGF0Zm9ybScsIG9wdGlvbnMucGxhdGZvcm0sIHMzX3VybF0KICAg
ICBwcmludCgnRG93bmxvYWRpbmcgcmV2aXNpb246IHt9Jy5mb3JtYXQocmV2aXNpb24pKQogICAg
IHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjb21tYW5kKQogCiAKIGRlZiBleHRyYWN0X2FyY2hpdmUo
b3B0aW9ucyk6Ci0gICAgY29tbWFuZCA9IFsncHl0aG9uJywgJy4uL0J1aWxkU2xhdmVTdXBwb3J0
L2J1aWx0LXByb2R1Y3QtYXJjaGl2ZScsICctLXBsYXRmb3JtJywgb3B0aW9ucy5wbGF0Zm9ybSwg
Jy0tJXMnICUgb3B0aW9ucy5jb25maWd1cmF0aW9uLCAnZXh0cmFjdCddCisgICAgY29tbWFuZCA9
IFsncHl0aG9uJywgJy4uL0NJU3VwcG9ydC9idWlsdC1wcm9kdWN0LWFyY2hpdmUnLCAnLS1wbGF0
Zm9ybScsIG9wdGlvbnMucGxhdGZvcm0sICctLSVzJyAlIG9wdGlvbnMuY29uZmlndXJhdGlvbiwg
J2V4dHJhY3QnXQogICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjb21tYW5kKQogCiAKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvcnVuLWRhc2hib2FyZC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL3J1bi1kYXNoYm9hcmQtdGVzdHMJKHJldmlzaW9uIDI2OTA0MikKKysrIFRvb2xzL1Nj
cmlwdHMvcnVuLWRhc2hib2FyZC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNiBA
QAogCiBUT09MU19ESVJFQ1RPUlk9IiQoZGlybmFtZSAkMCkiCiBSVU5fV0VCS0lUX1RFU1RTPSIk
VE9PTFNfRElSRUNUT1JZL3J1bi13ZWJraXQtdGVzdHMiCi1URVNUX0RJUkVDVE9SWT0iJFRPT0xT
X0RJUkVDVE9SWS8uLi9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9w
dWJsaWNfaHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cyIKK1RFU1RfRElSRUNUT1JZPSIkVE9P
TFNfRElSRUNUT1JZLy4uL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9kYXNoYm9hcmQvU2NyaXB0cy90ZXN0cyIKIAogJFJVTl9XRUJLSVRfVEVTVFMgLS1sYXlv
dXQtdGVzdHMtZGlyZWN0b3J5PSRURVNUX0RJUkVDVE9SWSAiJEAiCkluZGV4OiBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvd2F0Y2hsaXN0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHJldmlzaW9uIDI2OTA0
MikKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICAgICAgICAgIldlYklETCI6IHsKICAgICAg
ICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYkNvcmUvKD8haW5zcGVjdG9yKSg/IXRlc3Rp
bmcpLipcLmlkbCIKICAgICAgICAgfSwKLSAgICAgICAgIkJ1aWxkU2xhdmVTdXBwb3J0Ijogewot
ICAgICAgICAgICAgImZpbGVuYW1lIjogciJUb29scy9CdWlsZFNsYXZlU3VwcG9ydC8iLAorICAg
ICAgICAiQ0lTdXBwb3J0IjogeworICAgICAgICAgICAgImZpbGVuYW1lIjogciJUb29scy9DSVN1
cHBvcnQvIiwKICAgICAgICAgfSwKICAgICAgICAgIndlYmtpdHB5IjogewogICAgICAgICAgICAg
ImZpbGVuYW1lIjogciJUb29scy9TY3JpcHRzL3dlYmtpdHB5LyIsCkBAIC00MTIsNyArNDEyLDcg
QEAKICAgICAgICAgIkFuaW1hdGlvbiIgOiBbICJzaW1vbi5mcmFzZXJAYXBwbGUuY29tIiwgImRp
bm9AYXBwbGUuY29tIiwgImRzdG9ja3dlbGxAY2hyb21pdW0ub3JnIiBdLAogICAgICAgICAiTW90
aW9uTWFyayIgOiBbICJzYWJvdWhhbGxhd2FAYXBwbGUuY29tIiBdLAogICAgICAgICAiQmluZGlu
Z3NTY3JpcHRzIjogWyAiY2R1bWV6QGFwcGxlLmNvbSIgXSwKLSAgICAgICAgIkJ1aWxkU2xhdmVT
dXBwb3J0IjogWyAiYWFrYXNoX2phaW5AYXBwbGUuY29tIiBdLAorICAgICAgICAiQ0lTdXBwb3J0
IjogWyAiYWFrYXNoX2phaW5AYXBwbGUuY29tIiBdLAogICAgICAgICAiQ01ha2UiOiBbICJneXV5
b3VuZy5raW1Ad2Via2l0Lm9yZyIsICJyeXVhbi5jaG9pQG5hdmVyY29ycC5jb20iLCAic2VyZ2lv
QGNvcnJlaWEuY2MiLCAiYW5udWxlbkB5YW5kZXgucnUiIF0sCiAgICAgICAgICJDb29yZGluYXRl
ZEdyYXBoaWNzIiA6IFsgIm5vYW1Ad2Via2l0Lm9yZyIsICJ6ZW5vQHdlYmtpdC5vcmciLCAiY21h
cmNlbG9Ad2Via2l0Lm9yZyIsICJsdWl6QHdlYmtpdC5vcmciLCAicnl1YW4uY2hvaUBuYXZlcmNv
cnAuY29tIiwgInNlcmdpb0Bjb3JyZWlhLmNjIiwgImd5dXlvdW5nLmtpbUB3ZWJraXQub3JnIiBd
LAogICAgICAgICAiQ29uc29sZVVzYWdlIiA6IFsgIm1rd3N0QGNocm9taXVtLm9yZyIgXSwKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL2J1aWxkYm90X3Jl
c3VsdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvYnVpbGRib3RfcmVzdWx0cy5weQkocmV2aXNpb24gMjY5MDQyKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvYnVpbGRib3RfcmVzdWx0cy5weQko
d29ya2luZyBjb3B5KQpAQCAtMzksNyArMzksNyBAQCBUZXN0RXhwZWN0YXRpb25QYXJzZXIgPSB0
ZXN0X2V4cGVjdGF0aW9uCiAKIGNsYXNzIEJ1aWxkQm90UHJpbnRlcihvYmplY3QpOgogICAgICMg
VGhpcyBvdXRwdXQgaXMgcGFyc2VkIGJ5IGJ1aWxkYm90cyBhbmQgbXVzdCBvbmx5IGJlIGNoYW5n
ZWQgaW4gY29vcmRpbmF0aW9uIHdpdGggYnVpbGRib3Qgc2NyaXB0cyAoc2VlIHdlYmtpdC5vcmcn
cwotICAgICMgVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
bWFzdGVyLmNmZzogUnVuV2ViS2l0VGVzdHMuX3BhcnNlTmV3UnVuV2ViS2l0VGVzdHNPdXRwdXQK
KyAgICAjIFRvb2xzL0NJU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2Zn
OiBSdW5XZWJLaXRUZXN0cy5fcGFyc2VOZXdSdW5XZWJLaXRUZXN0c091dHB1dAogICAgICMgYW5k
IGNocm9taXVtLm9yZydzIGJ1aWxkYm90L21hc3Rlci5jaHJvbWl1bS9zY3JpcHRzL21hc3Rlci9s
b2dfcGFyc2VyL3dlYmtpdF90ZXN0X2NvbW1hbmQucHkpLgogCiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHN0cmVhbSwgZGVidWdfbG9nZ2luZyk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTUwMSw3ICs1MDEsNyBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlckRpc3BhdGNo
VGVzdCh1bml0CiAgICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBzaG91bGQgYmUgY2hlY2tlZCBh
cyBKU09OLiIiIgogICAgICAgICBwYXRocyA9IFsKICAgICAgICAgICAgb3MucGF0aC5qb2luKCdT
b3VyY2UnLCAnV2ViQ29yZScsICdpbnNwZWN0b3InLCAnSW5zcGVjdG9yLmpzb24nKSwKLSAgICAg
ICAgICAgb3MucGF0aC5qb2luKCdUb29scycsICdCdWlsZFNsYXZlU3VwcG9ydCcsICdidWlsZC53
ZWJraXQub3JnLWNvbmZpZycsICdjb25maWcuanNvbicpLAorICAgICAgICAgICBvcy5wYXRoLmpv
aW4oJ1Rvb2xzJywgJ0NJU3VwcG9ydCcsICdidWlsZC53ZWJraXQub3JnLWNvbmZpZycsICdjb25m
aWcuanNvbicpLAogICAgICAgICBdCiAKICAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6CkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3NlcnZlcnMvZ2FyZGVu
aW5nc2VydmVyLnB5CShyZXZpc2lvbiAyNjkwNDIpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc2VydmVycy9nYXJkZW5pbmdzZXJ2ZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAgY2xhc3MgR2FyZGVuaW5nSFRUUFJlcXVlc3RIYW5kbGVyKFJlZmxlYwogICAgICAg
ICAnLi4nLAogICAgICAgICAnLi4nLAogICAgICAgICAnLi4nLAotICAgICAgICAnQnVpbGRTbGF2
ZVN1cHBvcnQnLAorICAgICAgICAnQ0lTdXBwb3J0JywKICAgICAgICAgJ2J1aWxkLndlYmtpdC5v
cmctY29uZmlnJywKICAgICAgICAgJ3B1YmxpY19odG1sJywKICAgICAgICAgJ1Rlc3RGYWlsdXJl
cycpCg==
</data>
<flag name="review"
          id="428881"
          type_id="1"
          status="+"
          setter="jbedard"
    />
          </attachment>
      

    </bug>

</bugzilla>