<?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>38034</bug_id>
          
          <creation_ts>2010-04-22 23:15:24 -0700</creation_ts>
          <short_desc>WebSocket: pywebsocket 0.5</short_desc>
          <delta_ts>2010-05-17 15:22:14 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>38717</dependson>
          <blocked>35572</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fumitoshi Ukai">ukai</reporter>
          <assigned_to name="Fumitoshi Ukai">ukai</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216286</commentid>
    <comment_count>0</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-22 23:15:24 -0700</bug_when>
    <thetext>pywebsocket 0.5 adds implementation of new WebSocket protocol http://www.whatwg.org/specs/web-socket-protocol/ draft-hixie-thewebsocketprotocol-76.

It is required to implement new protocol in WebCore/websockets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216289</commentid>
    <comment_count>1</comment_count>
      <attachid>54134</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-22 23:26:53 -0700</bug_when>
    <thetext>Created attachment 54134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217336</commentid>
    <comment_count>2</comment_count>
      <attachid>54134</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-26 15:53:48 -0700</bug_when>
    <thetext>Comment on attachment 54134
Patch

Should we just autoinstall this code instead of keeping a local copy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217389</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-26 17:45:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 54134 [details])
&gt; Should we just autoinstall this code instead of keeping a local copy?

Ah, we should.
I&apos;ll update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217579</commentid>
    <comment_count>4</comment_count>
      <attachid>54396</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-04-27 01:33:57 -0700</bug_when>
    <thetext>Created attachment 54396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>218629</commentid>
    <comment_count>5</comment_count>
      <attachid>54396</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-04-28 14:16:29 -0700</bug_when>
    <thetext>Comment on attachment 54396
Patch

Looking good. Just a few things to address.

&gt; diff --git a/WebKitTools/ChangeLog b/WebKitTools/ChangeLog
&gt; index 167c788bb4972264e4e014b5f76110728c73765b..5fc56a4717d538c358d0bac2768b4c6655bdb91a 100644
&gt; --- a/WebKitTools/ChangeLog
&gt; +++ b/WebKitTools/ChangeLog
&gt; @@ -1,3 +1,25 @@
&gt; +2010-04-27  Fumitoshi Ukai  &lt;ukai@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        WebSocket: pywebsocket 0.5
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=38034
&gt; +
&gt; +        Remove pywebsocket from webkitpy/thirdparty.
&gt; +        Make pywebsocket autoinstalled.
&gt; +
&gt; +        * Scripts/new-run-webkit-websocketserver:
&gt; +          Add --output-dir option.
&gt; +        * Scripts/old-run-webkit-tests:
&gt; +          Use new-run-webkit-websocketserver, rather than directly run pywebsocket&apos;s standalone.py.
&gt; +        * Scripts/run-webkit-websocketserver:
&gt; +          Use new-run-webkit-websocketserver, rather than directly run pywebsocket&apos;s standalone.py.

&quot;Ditto.&quot; works instead of repeating the exact same comment.


btw, can we just get rid of &quot;run-webkit-websocketserver&quot; and rename &quot;new-run-webkit-websocketserver&quot; to &quot;run-webkit-websocketserver&quot;? *Not in this patch* but a follow up patch.


&gt; diff --git a/WebKitTools/Scripts/old-run-webkit-tests b/WebKitTools/Scripts/old-run-webkit-tests

The following lines are repeated in &quot;closeWebSocketServer&quot; It feels like it should be a common function that both of these places call.

&gt;      my $webSocketServerPath = &quot;/usr/bin/python&quot;;
&gt; +    my $pid = open3(\*WEBSOCKETSERVER_IN, \*WEBSOCKETSERVER_OUT, \*WEBSOCKETSERVER_ERR, $webSocketServerPath, @args);
&gt; +    waitpid $pid, 0;
&gt; +    close WEBSOCKETSERVER_IN;
&gt; +    close WEBSOCKETSERVER_OUT;
&gt; +    close WEBSOCKETSERVER_ERR;


&gt; diff --git a/WebKitTools/Scripts/run-webkit-websocketserver b/WebKitTools/Scripts/run-webkit-websocketserver

This has the same problem of repeating a bunch of lines related to running webSocketServer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221519</commentid>
    <comment_count>6</comment_count>
      <attachid>55206</attachid>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-05 23:11:22 -0700</bug_when>
    <thetext>Created attachment 55206
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>221525</commentid>
    <comment_count>7</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-05 23:26:50 -0700</bug_when>
    <thetext>Thanks for review!

(In reply to comment #5)

&gt; &quot;Ditto.&quot; works instead of repeating the exact same comment.

Ok. Fixed.
  
&gt; btw, can we just get rid of &quot;run-webkit-websocketserver&quot; and rename
&gt; &quot;new-run-webkit-websocketserver&quot; to &quot;run-webkit-websocketserver&quot;? *Not in this
&gt; patch* but a follow up patch.

Hmm, usage is a bit different (run-webkit-websocketserver runs until ENTER is hit, new-run-webkit-websocketserver controls websocket server by --server=start and --server=stop), but I think we could get rid of &quot;run-webkit-websocketsever&quot; and make &quot;new-run-webkit-websocketserver&quot; to be &quot;run-webkit-websocketserver&quot;.

 
&gt; 
&gt; &gt; diff --git a/WebKitTools/Scripts/old-run-webkit-tests b/WebKitTools/Scripts/old-run-webkit-tests
&gt; 
&gt; The following lines are repeated in &quot;closeWebSocketServer&quot; It feels like it
&gt; should be a common function that both of these places call.

I think we can simply use system here, instead of open3.

&gt; &gt; diff --git a/WebKitTools/Scripts/run-webkit-websocketserver b/WebKitTools/Scripts/run-webkit-websocketserver
&gt; 
&gt; This has the same problem of repeating a bunch of lines related to running
&gt; webSocketServer

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222141</commentid>
    <comment_count>8</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-06 20:56:24 -0700</bug_when>
    <thetext>Committed r58933: &lt;http://trac.webkit.org/changeset/58933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222144</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-06 21:23:03 -0700</bug_when>
    <thetext>This broke all websocket tests on Tiger.  You can&apos;t tell because Tiger was already broken earlier this evening.  Please roll this back unless you know the fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222158</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-06 21:54:05 -0700</bug_when>
    <thetext>We can land this again once the Tiger bot is updated to python 2.5+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222981</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-08 23:18:30 -0700</bug_when>
    <thetext>Attachment 55206 was posted by a committer and has review+, assigning to Fumitoshi Ukai for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223482</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-10 13:12:09 -0700</bug_when>
    <thetext>What exactly is the Python 2.5 dependency here? Can this script be made to work on Tiger without toolchain changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223484</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-10 13:16:25 -0700</bug_when>
    <thetext>This change made the websocket code depend on webkitpy which is 2.5+.

There are numerous (very bad) threading and subprocess bugs in python 2.4 which were fixed in 2.5.  (There are a bunch more in 2.5 as well, but not much we can do about that ATM since we don&apos;t want to make Leopard users install anything.)

It&apos;s easiest to maintain the code if it&apos;s all the same version python.  There is nothing in the websockets code which can&apos;t be made to run in 2.3 (to my knowledge).  However that is not true of webkitpy in general and supporting multi-versioned python is not a road we&apos;ve historically been very interested in walking down. :)  (And I would still strongly recommend against.)  We&apos;d have to segregate our python code into versioned directories and be careful not to include between them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223486</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-10 13:19:19 -0700</bug_when>
    <thetext>Python versioning is not the best I&apos;ve ever seen.  If you don&apos;t just pick a minimum version for all your code, you end up with a never ending trail of tears.  After discussion on webkit-dev a few months back, we picked 2.5 (because that matched Leopard and was new enough to not have all the 2.4 subprocess bugs).

We didn&apos;t have nearly as much trouble with perl versioning in webkit probably because perl has been around (and stable) for forever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223490</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-10 13:32:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; We didn&apos;t have nearly as much trouble with perl versioning in webkit probably because perl has been around (and stable) for forever.

FYI, I have run into some Perl versioning issues in the past, e.g.:

https://bugs.webkit.org/show_bug.cgi?id=33415#c6
https://bugs.webkit.org/show_bug.cgi?id=33415#c9

If we were trying to use Perl for everything that we&apos;re currently doing in Python, I&apos;m guessing we would probably run into these types of issues more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225185</commentid>
    <comment_count>16</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-13 00:29:00 -0700</bug_when>
    <thetext>Committed r59350: &lt;http://trac.webkit.org/changeset/59350&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225198</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-13 01:11:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/59350 might have broken Tiger Intel Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225202</commentid>
    <comment_count>18</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-13 01:23:15 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; http://trac.webkit.org/changeset/59350 might have broken Tiger Intel Release

Seems tiger still use old python?
http://build.webkit.org/builders/Tiger%20Intel%20Release/builds/11971/steps/layout-test/logs/stdio

websocket/tests .Traceback (most recent call last):
  File &quot;WebKitTools/Scripts/new-run-webkit-websocketserver&quot;, line 38, in ?
    import webkitpy.layout_tests.port.websocket_server as websocket_server
  File &quot;/Volumes/Data/WebKit-BuildSlave/tiger-intel-release/build/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py&quot;, line 241
    with codecs.open(self._pidfile, &quot;w&quot;, &quot;ascii&quot;) as file:
              ^
SyntaxError: invalid syntax

it looks strange, websocket_server.py has &quot;from __future__ import with_statement&quot;...
Anyway, I&apos;ll try to fix this by removing with statement from websocket_server.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225304</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-13 07:56:37 -0700</bug_when>
    <thetext>This broke Apple&apos;s Windows port. See &lt;http://build.webkit.org/builders/Windows%20Debug%20%28Tests%29/builds/13532/steps/layout-test/logs/stdio&gt;.

I guess we were never calling new-run-webkit-websocketserver on Windows before. That script doesn&apos;t seem able to handle Apple&apos;s Windows port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225310</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-13 08:09:12 -0700</bug_when>
    <thetext>As pointed out by Eric, websocket_server.py assumes that all Windows platforms are Chromium:

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py#L193</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225631</commentid>
    <comment_count>21</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-13 19:47:24 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; As pointed out by Eric, websocket_server.py assumes that all Windows platforms are Chromium:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py#L193

I think https://bugs.webkit.org/show_bug.cgi?id=37664 will fix this issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225770</commentid>
    <comment_count>22</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-05-14 05:41:08 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; (In reply to comment #20)
&gt; &gt; As pointed out by Eric, websocket_server.py assumes that all Windows platforms are Chromium:
&gt; &gt; 
&gt; &gt; http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/layout_tests/port/websocket_server.py#L193
&gt; 
&gt; I think bug 37664 will fix this issue.

Is there some more expedient approach we can take? Bug 37664 has been around for over a month now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225996</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-14 14:13:29 -0700</bug_when>
    <thetext>I don&apos; think this patch shoudl have landed if it was known to break windows.  I think it should be rolled out until the Win issues can be fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226930</commentid>
    <comment_count>24</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 15:17:09 -0700</bug_when>
    <thetext>Bug 37664 is fixed now.  Is Windows fixed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>226933</commentid>
    <comment_count>25</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-17 15:22:14 -0700</bug_when>
    <thetext>Looks like it.  However the bots are in a bad state. :(  Will see if I can fix some of the other test failures on the win bots.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54134</attachid>
            <date>2010-04-22 23:26:53 -0700</date>
            <delta_ts>2010-04-27 01:33:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38034-20100423152651.patch</filename>
            <type>text/plain</type>
            <size>117485</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkMjk3YjgzLi44NWUyYjJjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzYgQEAKIDIwMTAtMDQt
MjIgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiBweXdlYnNvY2tldCAw
LjUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MDM0
CisKKyAgICAgICAgSW1wb3J0IHB5d2Vic29ja2V0IDAuNSBmcm9tIGNvZGUuZ29vZ2xlLmNvbS9w
L3B5d2Vic29ja2V0CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvUkVBRE1FLndlYmtpdDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVudC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX3dzaC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19iYXNlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRz
aGFrZS9kcmFmdDc1LnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oYW5kc2hha2UucHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0
aWwucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC9jb25maWcucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvbW9jay5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdl
YnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2RyYWZ0NzUucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXNndXRpbC5weToKKworMjAxMC0w
NC0yMiAgRnVtaXRvc2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJl
dmlld2VkIGZpeC4KIAogICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvd2Vic29ja2V0X3NlcnZlci5weTogZml4IE5hbWVFcnJvcjogZ2xvYmFsIG5hbWUgJ2YnIGlz
IG5vdCBkZWZpbmVkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRS53ZWJraXQgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVBRE1FLndlYmtpdAppbmRleCA4M2Uz
Y2VlLi5mZDI0N2IzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVBRE1FLndlYmtpdAorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVBRE1FLndlYmtpdApAQCAtNCwx
MCArNCwxMCBAQCBmcm9tIHRoZSBmb2xsb3dpbmcgbG9jYXRpb246CiBodHRwOi8vY29kZS5nb29n
bGUuY29tL3AvcHl3ZWJzb2NrZXQvCiAKIFRoaXMgZGlyZWN0b3J5IGN1cnJlbnRseSBjb250YWlu
cyB0aGUgZm9sbG93aW5nIHZlcnNpb246Ci0wLjQuOS4yCiswLjUKIAogVGhlIGZvbGxvd2luZyBt
b2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoaXMgbG9jYWwgdmVyc2lvbjoKLW1pbm9y
IHVwZGF0ZXMgaW4gV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIuaXNfY2dpCitOb25lCiAKIE1vcmUg
aW5mb3JtYXRpb24gb24gdGhlc2UgbG9jYWwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZm91bmQgaGVy
ZToKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDJiOTc2ZTEuLjJjNDIwMGIKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4
YW1wbGUvZWNob19jbGllbnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKQEAgLTM3LDI4ICsz
Nyw0MyBAQCBUaGlzIG1heSBiZSB1c2VmdWwgZm9yIGNoZWNraW5nIG1vZF9weXdlYnNvY2tldCBp
bnN0YWxsYXRpb24uCiAKIE5vdGU6CiBUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcu
LCB3ZSBjdXQgY29ybmVycyBpbiBoYW5kc2hha2UuCisKK0V4YW1wbGUgVXNhZ2U6CisKKyMgc2Vy
dmVyIHNldHVwCisgJSBjZCAkcHl3ZWJzb2NrZXQKKyAlIFBZVEhPTlBBVEg9JGN3ZC9zcmMgcHl0
aG9uIC4vbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLXAgODg4MCBcCisgICAgLWQgJGN3
ZC9zcmMvZXhhbXBsZQorCisjIHJ1biBjbGllbnQKKyAlIHB5dGhvbiAuL3NyYy9leGFtcGxlL2Vj
aG9fY2xpZW50LnB5IC1wIDg4ODAgLXMgbG9jYWxob3N0IFwKKyAgICAgLW8gaHR0cDovL2xvY2Fs
aG9zdCAtciAvZWNobyAtbSB0ZXN0CisKK29yCisjIHNlcnZlciBzZXR1cCB0byB0ZXN0IG9sZCBw
cm90b2NvbAorIHJ1biB3aXRoIC0tYWxsb3ctZHJhZnQ3NQorCisjIHJ1biBjbGllbnQKKyBydW4g
d2l0aCAtLWRyYWZ0NzUKICIiIgogCiAKIGltcG9ydCBjb2RlY3MKK2ltcG9ydCBsb2dnaW5nCitm
cm9tIG1kNSBpbXBvcnQgbWQ1CiBmcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKK2lt
cG9ydCByYW5kb20KK2ltcG9ydCByZQogaW1wb3J0IHNvY2tldAoraW1wb3J0IHN0cnVjdAogaW1w
b3J0IHN5cwogCiAKIF9USU1FT1VUX1NFQyA9IDEwCi0KIF9ERUZBVUxUX1BPUlQgPSA4MAogX0RF
RkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKIF9VTkRFRklORURfUE9SVCA9IC0xCiAKLV9VUEdSQURF
X0hFQURFUiA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0g
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotX0VYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICAg
ICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicgKwotICAg
ICAgICBfVVBHUkFERV9IRUFERVIgKwotICAgICAgICBfQ09OTkVDVElPTl9IRUFERVIpCi0KIF9H
T09EQllFX01FU1NBR0UgPSAnR29vZGJ5ZScKIAogCkBAIC02Nyw3ICs4MiwxMiBAQCBkZWYgX21l
dGhvZF9saW5lKHJlc291cmNlKToKIAogCiBkZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAg
ICByZXR1cm4gJ09yaWdpbjogJXNcclxuJyAlIG9yaWdpbgorICAgICMgNC4xIDEzLiBjb25jYXRl
bmF0aW9uIG9mIHRoZSBzdHJpbmcgIk9yaWdpbjoiLCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIs
CisgICAgIyBhbmQgdGhlIC9vcmlnaW4vIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJj
YXNlLCB0byAvZmllbGRzLy4KKyAgICByZXR1cm4gJ09yaWdpbjogJXNcclxuJyAlIG9yaWdpbi5s
b3dlcigpCisKK2RlZiBfaGV4aWZ5KHMpOgorICAgIHJldHVybiByZS5zdWIoIi4iLCBsYW1iZGEg
eDogIiUwMnggIiAlIG9yZCh4Lmdyb3VwKDApKSwgcykKIAogCiBjbGFzcyBfVExTU29ja2V0KG9i
amVjdCk6CkBAIC04Nyw2ICsxMDcsMzE4IEBAIGNsYXNzIF9UTFNTb2NrZXQob2JqZWN0KToKICAg
ICAgICAgcGFzcwogCiAKK2NsYXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3QpOgorICAgICIi
IldlYiBTb2NrZXQgaGFuZHNoYWtlIChkcmFmdCA3NiBvciBsYXRlcikuIiIiCisKKyAgICBfVVBH
UkFERV9IRUFERVIgPSAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKKyAgICBfQ09OTkVDVElPTl9I
RUFERVIgPSAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisKKyAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc29ja2V0LCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0CisgICAg
ICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisKKyAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgor
ICAgICAgICAiIiJIYW5kc2hha2UgV2ViIFNvY2tldC4KKworICAgICAgICBSYWlzZXM6CisgICAg
ICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgorICAgICAgICAiIiIKKyAgICAgICAg
IyA0LjEgNS4gc2VuZCByZXF1ZXN0IGxpbmUuCisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKF9t
ZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKSkKKyAgICAgICAgIyA0LjEgNi4gTGV0
IC9maWVsZHMvIGJlIGFuIGVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4KKyAgICAgICAgZmllbGRzID0g
W10KKyAgICAgICAgIyA0LjEgNy4gQWRkIHRoZSBzdHJpbmcgIlVwZ3JhZGU6IFdlYlNvY2tldCIg
dG8gL2ZpZWxkcy8uCisgICAgICAgIGZpZWxkcy5hcHBlbmQoV2ViU29ja2V0SGFuZHNoYWtlLl9V
UEdSQURFX0hFQURFUikKKyAgICAgICAgIyA0LjEgOC4gQWRkIHRoZSBzdHJpbmcgIkNvbm5lY3Rp
b246IFVwZ3JhZGUiIHRvIC9maWVsZHMvLgorICAgICAgICBmaWVsZHMuYXBwZW5kKFdlYlNvY2tl
dEhhbmRzaGFrZS5fQ09OTkVDVElPTl9IRUFERVIpCisgICAgICAgICMgNC4xIDktMTIuIEFkZCBI
b3N0OiBmaWVsZCB0byAvZmllbGRzLy4KKyAgICAgICAgZmllbGRzLmFwcGVuZChzZWxmLl9mb3Jt
YXRfaG9zdF9oZWFkZXIoKSkKKyAgICAgICAgIyA0LjEgMTMuIEFkZCBPcmlnaW46IGZpZWxkIHRv
IC9maWVsZHMvLgorICAgICAgICBmaWVsZHMuYXBwZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29w
dGlvbnMub3JpZ2luKSkKKyAgICAgICAgIyBUT0RPOiA0LjEgMTQgQWRkIFNlYy1XZWJTb2NrZXQt
UHJvdG9jb2w6IGZpZWxkIHRvIC9maWVsZHMvLgorICAgICAgICAjIFRPRE86IDQuMSAxNSBBZGQg
Y29va2llIGhlYWRlcnMgdG8gL2ZpZWxkcy8uCisKKyAgICAgICAgIyA0LjEgMTYtMjMuIEFkZCBT
ZWMtV2ViU29ja2V0LUtleTxuPiB0byAvZmllbGRzLy4KKyAgICAgICAgc2VsZi5fbnVtYmVyMSwg
a2V5MSA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkKKyAgICAgICAgZmllbGRz
LmFwcGVuZCgnU2VjLVdlYlNvY2tldC1LZXkxOiAnICsga2V5MSArICdcclxuJykKKyAgICAgICAg
c2VsZi5fbnVtYmVyMiwga2V5MiA9IHNlbGYuX2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KCkK
KyAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1LZXkyOiAnICsga2V5MiArICdc
clxuJykKKworICAgICAgICAjIDQuMSAyNC4gRm9yIGVhY2ggc3RyaW5nIGluIC9maWVsZHMvLCBp
biBhIHJhbmRvbSBvcmRlcjogc2VuZCB0aGUKKyAgICAgICAgIyBzdHJpbmcsIGVuY29kZWQgYXMg
VVRGLTgsIGZvbGxvd2VkIGJ5IGEgVVRGLTggZW5jb2RlZCBVKzAwMEQgQ0FSUklBR0UKKyAgICAg
ICAgIyBSRVRVUk4gVSswMDBBIExJTkUgRkVFRCBjaGFyYWN0ZXIgcGFpciAoQ1JMRikuCisgICAg
ICAgIHJhbmRvbS5zaHVmZmxlKGZpZWxkcykKKyAgICAgICAgZm9yIGZpZWxkIGluIGZpZWxkczoK
KyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKGZpZWxkKQorICAgICAgICAjIDQuMSAyNS4g
c2VuZCBhIFVURi04LWVuY29kZWQgVSswMDBEIENBUlJJQUdFIFJFVFVSTiBVKzAwMEEgTElORSBG
RUVECisgICAgICAgICMgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgorICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZCgnXHJcbicpCisgICAgICAgICMgNC4xIDI2LiBsZXQgL2tleTMvIGJlIGEgc3RyaW5n
IGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgorICAgICAgICAjIGVxdWl2YWxl
bnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBpbiBhIGJpZy1lbmRpYW4gb3Jk
ZXIpLgorICAgICAgICBzZWxmLl9rZXkzID0gc2VsZi5fZ2VuZXJhdGVfa2V5MygpCisgICAgICAg
ICMgNC4xIDI3LiBzZW5kIC9rZXkzLyB0byB0aGUgc2VydmVyLgorICAgICAgICBzZWxmLl9zb2Nr
ZXQuc2VuZChzZWxmLl9rZXkzKQorICAgICAgICBsb2dnaW5nLmluZm8oIiVzIiAlIF9oZXhpZnko
c2VsZi5fa2V5MykpCisKKyAgICAgICAgIyA0LjEgMjguIFJlYWQgYnl0ZXMgZnJvbSB0aGUgc2Vy
dmVyIHVudGlsIGVpdGhlciB0aGUgY29ubmVjdGlvbiBjbG9zZXMsCisgICAgICAgICMgb3IgYSAw
eDBBIGJ5dGUgaXMgcmVhZC4gbGV0IC9maWVsZC8gYmUgdGhlc2UgYnl0ZXMsIGluY2x1ZGluZyB0
aGUgMHgwQQorICAgICAgICAjIGJ5dGVzLgorICAgICAgICBmaWVsZCA9ICIiCisgICAgICAgIHdo
aWxlIFRydWU6CisgICAgICAgICAgICBjaCA9IHNlbGYuX3NvY2tldC5yZWN2KDEpCisgICAgICAg
ICAgICBmaWVsZCArPSBjaAorICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAjIGlmIC9maWVsZC8gaXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5
dGVzIGxvbmcsIG9yIGlmIHRoZSBsYXN0CisgICAgICAgICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBE
IGFuZCAweDBBIHJlc3BlY3RpdmVseSwgb3IgaWYgaXQgZG9lcyBub3QKKyAgICAgICAgIyBjb250
YWluIGF0IGxlYXN0IHR3byAweDIwIGJ5dGVzLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25u
ZWN0aW9uCisgICAgICAgICMgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoJ1xyXG4nKToKKyAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignd3Jvbmcgc3RhdHVzIGxpbmU6ICVzJyAlIGZpZWxkKQorICAgICAgICBt
ID0gcmUubWF0Y2goIlteIF0qIChbXiBdKikgLioiLCBmaWVsZCkKKyAgICAgICAgaWYgbSBpcyBO
b25lOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdubyBjb2RlIGZvdW5kIGluOiAlcycg
JSBmaWVsZCkKKyAgICAgICAgIyA0LjEgMjkuIGxldCAvY29kZS8gYmUgdGhlIHN1YnN0cmluZyBv
ZiAvZmllbGQvIHRoYXQgc3RhcnRzIGZyb20gdGhlCisgICAgICAgICMgYnl0ZSBhZnRlciB0aGUg
Zmlyc3QgMHgyMCBieXRlLCBhbmQgZW5kcyB3aXRoIHRoZSBieXRlIGJlZm9yZSB0aGUKKyAgICAg
ICAgIyBzZWNvbmQgMHgyMCBieXRlLgorICAgICAgICBjb2RlID0gbS5ncm91cCgxKQorICAgICAg
ICAjIDQuMSAzMC4gaWYgL2NvZGUvIGlzIG5vdCB0aHJlZSBieXRlcyBsb25nLCBvciBpZiBhbnkg
b2YgdGhlIGJ5dGVzIGluCisgICAgICAgICMgL2NvZGUvIGFyZSBub3QgaW4gdGhlIHJhbmdlIDB4
MzAgdG8gMHg5MCwgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQKKyAgICAgICAgIyBjb25uZWN0aW9u
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgaWYgbm90IHJlLm1hdGNoKCJbMC05XVsw
LTldWzAtOV0iLCBjb2RlKToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignd3JvbmcgY29k
ZSAlcyBpbjogJXMnICUgKGNvZGUsIGZpZWxkKSkKKyAgICAgICAgIyA0LjEgMzEuIGlmIC9jb2Rl
LCBpbnRlcnByZXRlZCBhcyBVVEYtOCwgaXMgIjEwMSIsIHRoZW4gbW92ZSB0byB0aGUKKyAgICAg
ICAgIyBuZXh0IHN0ZXAuCisgICAgICAgIGlmIGNvZGUgIT0gIjEwMSI6CisgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oJ3VuZXhwZWN0ZWQgY29kZSBpbjogJXMnICUgZmllbGQpCisgICAgICAg
ICMgNC4xIDMyLTM5LiByZWFkIGZpZWxkcyBpbnRvIC9maWVsZHMvCisgICAgICAgIGZpZWxkcyA9
IHNlbGYuX3JlYWRfZmllbGRzKCkKKyAgICAgICAgIyA0LjEgNDAuIF9GaWVsZHMgcHJvY2Vzc2lu
Z18KKyAgICAgICAgIyByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlcgorICAgICAgICBjaCA9IHNlbGYu
X3NvY2tldC5yZWN2KDEpWzBdCisgICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKKyAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignZXhwZWN0ZWQgTEYgYWZ0ZXIgbGluZTogJXM6ICVzJyAl
IChuYW1lLCB2YWx1ZSkpCisgICAgICAgICMgNC4xIDQxLiBjaGVjayAvZmllbGRzLworICAgICAg
ICBpZiBsZW4oZmllbGRzWyd1cGdyYWRlJ10pICE9IDE6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ25vdCBvbmUgdWdwcmFkZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ10pCisgICAgICAg
IGlmIGxlbihmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignbm90IG9uZSBjb25uZWN0aW9uOiAlcycgJSBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkK
KyAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNvY2tldC1vcmlnaW4nXSkgIT0gMToKKyAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignbm90IG9uZSBzZWMtd2Vic29ja2V0LW9yaWdpbjog
JXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbJ3NlYy1zZWJzb2NrZXQt
b3JpZ2luJ10pCisgICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtbG9jYXRpb24n
XSkgIT0gMToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignbm90IG9uZSBzZWMtd2Vic29j
a2V0LWxvY2F0aW9uOiAlcycgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1sn
c2VjLXNlYnNvY2tldC1sb2NhdGlvbiddKQorICAgICAgICAjIFRPRE8odWthaSk6IHByb3RvY29s
CisgICAgICAgICMgaWYgdGhlIGVudHJ5J3MgbmFtZSBpcyAidXBncmFkZSIKKyAgICAgICAgIyAg
aWYgdGhlIHZhbHVlIGlzIG5vdCBleGFjdGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcgIldlYlNvY2tl
dCIsCisgICAgICAgICMgIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnV2Vi
U29ja2V0JzoKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigndW5leHBlY3RlZCB1cGdyYWRl
OiAlcycgJSBmaWVsZHNbJ3VwZ3JhZGUnXVswXSkKKyAgICAgICAgIyBpZiB0aGUgZW50cnkncyBu
YW1lIGlzICJjb25uZWN0aW9uIgorICAgICAgICAjICBpZiB0aGUgdmFsdWUsIGNvbnZlcnRlZCB0
byBBU0NJSSBsb3dlcmNhc2UsIGlzIG5vdCBleGFjdGx5IGVxdWFsCisgICAgICAgICMgIHRvIHRo
ZSBzdHJpbmcgInVwZ3JhZGUiLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGFu
ZAorICAgICAgICAjICBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICAgICAgaWYgZmllbGRzWydjb25u
ZWN0aW9uJ11bMF0ubG93ZXIoKSAhPSAndXBncmFkZSc6CisgICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ3VuZXhwZWN0ZWQgY29ubmVjdGlvbjogJXMnICUKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWVsZHNbJ2Nvbm5lY3Rpb24nXVswXSkKKyAgICAgICAgIyBUT0RPKHVrYWkpOiBj
aGVjayBvcmlnaW4sIGxvY2F0aW9uLCBjb29raWUsIC4uCisKKyAgICAgICAgIyA0LjEgNDIuIGxl
dCAvY2hhbGxlbmdlLyBiZSB0aGUgY29uY2F0ZW5hdGlvbiBvZiAvbnVtYmVyXzEvLAorICAgICAg
ICAjIGV4cHJlc3NlZCBhcyBhIGJpZyBlbmRpYW4gMzIgYml0IGludGVnZXIsIC9udW1iZXJfMi8s
IGV4cHJlc3NlZAorICAgICAgICAjIGFzIGJpZyBlbmRpYW4gMzIgYml0IGludGVnZXIsIGFuZCB0
aGUgZWlnaHQgYnl0ZXMgb2YgL2tleV8zLyBpbiB0aGUKKyAgICAgICAgIyBvcmRlciB0aGV5IHdl
cmUgc2VudCBvbiB0aGUgd2lyZS4KKyAgICAgICAgY2hhbGxlbmdlID0gc3RydWN0LnBhY2soIiFJ
Iiwgc2VsZi5fbnVtYmVyMSkKKyAgICAgICAgY2hhbGxlbmdlICs9IHN0cnVjdC5wYWNrKCIhSSIs
IHNlbGYuX251bWJlcjIpCisgICAgICAgIGNoYWxsZW5nZSArPSBzZWxmLl9rZXkzCisKKyAgICAg
ICAgbG9nZ2luZy5pbmZvKCJudW0gJWQsICVkLCAlcyIgJSAoCisgICAgICAgICAgICBzZWxmLl9u
dW1iZXIxLCBzZWxmLl9udW1iZXIyLAorICAgICAgICAgICAgX2hleGlmeShzZWxmLl9rZXkzKSkp
CisgICAgICAgIGxvZ2dpbmcuaW5mbygiY2hhbGxlbmdlOiAlcyIgJSBfaGV4aWZ5KGNoYWxsZW5n
ZSkpCisKKyAgICAgICAgIyA0LjEgNDMuIGxldCAvZXhwZWN0ZWQvIGJlIHRoZSBNRDUgZmluZ2Vy
cHJpbnQgb2YgL2NoYWxsZW5nZS8gYXMgYQorICAgICAgICAjIGJpZy1lbmRpYW4gMTI4IGJpdCBz
dHJpbmcuCisgICAgICAgIGV4cGVjdGVkID0gbWQ1KGNoYWxsZW5nZSkuZGlnZXN0KCkKKyAgICAg
ICAgbG9nZ2luZy5pbmZvKCJleHBlY3RlZCA6ICVzIiAlIF9oZXhpZnkoZXhwZWN0ZWQpKQorCisg
ICAgICAgICMgNC4xIDQ0LiByZWFkIHNpeHRlZW4gYnl0ZXMgZnJvbSB0aGUgc2VydmVyLgorICAg
ICAgICAjIGxldCAvcmVwbHkvIGJlIHRob3NlIGJ5dGVzLgorICAgICAgICByZXBseSA9IHNlbGYu
X3NvY2tldC5yZWN2KDE2KQorICAgICAgICBsb2dnaW5nLmluZm8oInJlcGx5ICAgIDogJXMiICUg
X2hleGlmeShyZXBseSkpCisKKyAgICAgICAgIyA0LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBub3Qg
ZXhhY3RseSBlcXVhbCAvZXhwZWN0ZWQvLCB0aGVuIGZhaWwKKyAgICAgICAgIyB0aGUgV2ViU29j
a2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiBleHBlY3Rl
ZCAhPSByZXBseToKKyAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignY2hhbGxlbmdlL3Jlc3Bv
bnNlIGZhaWxlZDogJXMgIT0gJXMnICUgKAorICAgICAgICAgICAgICAgIGV4cGVjdGVkLCByZXBs
eSkpCisgICAgICAgICMgNC4xIDQ2LiBUaGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFi
bGlzaGVkKi4KKworICAgIGRlZiBfZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6Cisg
ICAgICAgICMgNC4xIDE2LiBsZXQgL3NwYWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20g
MSB0byAxMiBpbmNsdXNpdmUuCisgICAgICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEsIDEy
KQorICAgICAgICAjIDQuMSAxNy4gbGV0IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdlciBu
b3QgZ3JlYXRlciB0aGFuCisgICAgICAgICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAvc3Bh
Y2VzX24vLgorICAgICAgICBtYXhudW0gPSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCisgICAgICAgICMg
NC4xIDE4LiBsZXQgL251bWJlcl9uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAvbWF4
X24vCisgICAgICAgICMgaW5jbHVzaXZlLgorICAgICAgICBudW1iZXIgPSByYW5kb20ucmFuZGlu
dCgwLCBtYXhudW0pCisgICAgICAgICMgNC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhlIHJl
c3VsdCBvZiBtdWx0aXBseWluZyAvbnVtYmVyX24vIGFuZAorICAgICAgICAjIC9zcGFjZXNfbi8g
dG9nZXRoZXIuCisgICAgICAgIHByb2R1Y3QgPSBudW1iZXIgKiBzcGFjZXMKKyAgICAgICAgIyA0
LjEgMjAuIGxldCAva2V5X24vIGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rfbi8s
IGV4cHJlc3NlZAorICAgICAgICAjIGluIGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBpbiB0
aGUgcmFuZ2UgVSswMDMwIERJR0lUIFpFUk8gKDApIHRvCisgICAgICAgICMgVSswMDM5IERJR0lU
IE5JTkUgKDkpLgorICAgICAgICBrZXkgPSBzdHIocHJvZHVjdCkKKyAgICAgICAgIyA0LjEgMjEu
IGluc2VydCBiZXR3ZWVuIG9uZSBhbmQgdHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhl
CisgICAgICAgICMgcmFuZ2UgVSswMDIxIHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3RSBp
bnRvIC9rZXlfbi8gYXQgcmFuZG9tCisgICAgICAgICMgcG9zaXRpb25zLgorICAgICAgICBhdmFp
bGFibGVfY2hhcnMgPSByYW5nZSgweDIxLCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdlICsg
MSkKKyAgICAgICAgbiA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQorICAgICAgICBmb3IgXyBpbiBy
YW5nZShuKToKKyAgICAgICAgICAgIGNoID0gcmFuZG9tLmNob2ljZShhdmFpbGFibGVfY2hhcnMp
CisgICAgICAgICAgICBwb3MgPSByYW5kb20ucmFuZGludCgwLCBsZW4oa2V5KSkKKyAgICAgICAg
ICAgIGtleSA9IGtleVswOnBvc10gKyBjaHIoY2gpICsga2V5W3BvczpdCisgICAgICAgICMgNC4x
IDIyLiBpbnNlcnQgL3NwYWNlc19uLyBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycyBpbnRvIC9rZXlf
bi8gYXQKKyAgICAgICAgIyByYW5kb20gcG9zaXRpb25zIG90aGVyIHRoYW4gc3RhcnQgb3IgZW5k
IG9mIHRoZSBzdHJpbmcuCisgICAgICAgIGZvciBfIGluIHJhbmdlKHNwYWNlcyk6CisgICAgICAg
ICAgICBwb3MgPSByYW5kb20ucmFuZGludCgxLCBsZW4oa2V5KSAtIDEpCisgICAgICAgICAgICBr
ZXkgPSBrZXlbMDpwb3NdICsgJyAnICsga2V5W3BvczpdCisgICAgICAgIHJldHVybiBudW1iZXIs
IGtleQorCisgICAgZGVmIF9nZW5lcmF0ZV9rZXkzKHNlbGYpOgorICAgICAgICAjIDQuMSAyNi4g
bGV0IC9rZXkzLyBiZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAo
b3IKKyAgICAgICAgIyBlcXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29k
ZWQgaW4gYSBiaWctZW5kaWFuIG9yZGVyKS4KKyAgICAgICAgcmV0dXJuICcnLmpvaW4oW2Nocihy
YW5kb20ucmFuZGludCgwLCAyNTUpKSBmb3IgXyBpbiB4cmFuZ2UoOCldKQorCisgICAgZGVmIF9y
ZWFkX2ZpZWxkcyhzZWxmKToKKyAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxp
c3Qgb2YgbmFtZS12YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgorICAgICAgICBmaWVsZHMg
PSB7fQorICAgICAgICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCisgICAgICAgICAgICAjIDQuMSAz
My4gbGV0IC9uYW1lLyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAgICAg
ICAgbmFtZSA9ICcnCisgICAgICAgICAgICB2YWx1ZSA9ICcnCisgICAgICAgICAgICAjIDQuMSAz
NC4gcmVhZCAvbmFtZS8KKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25hbWUoKQorICAg
ICAgICAgICAgaWYgbmFtZSBpcyBOb25lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAjIDQuMSAzNS4gcmVhZCBzcGFjZXMKKyAgICAgICAgICAgIGNoID0gc2VsZi5fc2tpcF9z
cGFjZXMoKQorICAgICAgICAgICAgIyA0LjEgMzYuIHJlYWQgL3ZhbHVlLworICAgICAgICAgICAg
dmFsdWUgPSBzZWxmLl9yZWFkX3ZhbHVlKGNoKQorICAgICAgICAgICAgIyA0LjEgMzcuIHJlYWQg
YSBieXRlIGZybyBtdGhlIHNlcnZlcgorICAgICAgICAgICAgY2ggPSBzZWxmLl9zb2NrZXQucmVj
digxKVswXQorICAgICAgICAgICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQorICAgICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignZXhwZWN0ZWQgTEYgYWZ0ZXIgbGluZTogJXM6ICVzJyAlICgK
KyAgICAgICAgICAgICAgICAgICAgbmFtZSwgdmFsdWUpKQorICAgICAgICAgICAgIyA0LjEgMzgu
IGFwcGVuZCBhbiBlbnRyeSB0byB0aGUgL2ZpZWxkcy8gbGlzdCB0aGF0IGhhcyB0aGUgbmFtZQor
ICAgICAgICAgICAgIyBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5IGludGVycHJldGlu
ZyB0aGUgL25hbWUvIGJ5dGUgYXJyYXkKKyAgICAgICAgICAgICMgYXMgYSBVVEYtOCBzdHJlYW0g
YW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nIG9idGFpbmVkIGJ5CisgICAgICAgICAg
ICAjIGludGVycHJldGluZyB0aGUgL3ZhbHVlLyBieXRlIGFycmF5IGFzIGEgVVRGLTggYnl0ZSBz
dHJlYW0uCisgICAgICAgICAgICBmaWVsZHMuc2V0ZGVmYXVsdChuYW1lLCBbXSkuYXBwZW5kKHZh
bHVlKQorICAgICAgICAgICAgIyA0LjEgMzkuIHJldHVybiB0byB0aGUgIkZpZWxkIiBzdGVwIGFi
b3ZlCisgICAgICAgIHJldHVybiBmaWVsZHMKKworICAgIGRlZiBfcmVhZF9uYW1lKHNlbGYpOgor
ICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFycmF5cworICAgICAg
ICBuYW1lID0gIiIKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICMgNC4xIDM0LiBy
ZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgIGNoID0gc2VsZi5fc29ja2V0
LnJlY3YoMSlbMF0KKyAgICAgICAgICAgIGlmIGNoID09ICdccic6ICAjIDB4MEQKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBB
CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCd1bmV4cGVjdGVkIExGIGluIG5hbWUg
cmVhZGluZycpCisgICAgICAgICAgICBlbGlmIGNoID09ICc6JzogICMgMHgzQQorICAgICAgICAg
ICAgICAgIHJldHVybiBuYW1lCisgICAgICAgICAgICBlbGlmIGNoID49ICdBJyBhbmQgY2ggPD0g
J1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEKKyAgICAgICAgICAgICAgICBjaCA9IGNocihvcmQo
Y2gpICsgMHgyMCkKKyAgICAgICAgICAgICAgICBuYW1lICs9IGNoCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKKworICAgIGRlZiBfc2tpcF9zcGFjZXMoc2Vs
Zik6CisgICAgICAgICMgNC4xIDM1LiByZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKKyAgICAg
ICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNoID0gc2VsZi5fc29ja2V0LnJlY3YoMSlbMF0K
KyAgICAgICAgICAgIGlmIGNoID09ICcgJzogICMgMHgyMAorICAgICAgICAgICAgICAgIGNvbnRp
bnVlCisgICAgICAgICAgICByZXR1cm4gY2gKKworICAgIGRlZiBfcmVhZF92YWx1ZShzZWxmLCBj
aCk6CisgICAgICAgICMgNC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCisg
ICAgICAgIHZhbHVlID0gJycKKyAgICAgICAgIyA0LjEgMzUuIHRyZWF0IHRoZSBieXRlIGFzIGRl
c2NyaWJlZCBieSB0aGUgbGlzdCBpbiB0aGUgbmV4dCBzdGVwCisgICAgICAgIHZhbHVlICs9IGNo
CisgICAgICAgICMgNC4xIDM2LiByZWFkIGEgYnl0ZSBmcm9tIHNlcnZlci4KKyAgICAgICAgd2hp
bGUgVHJ1ZToKKyAgICAgICAgICAgIGNoID0gc2VsZi5fc29ja2V0LnJlY3YoMSlbMF0KKyAgICAg
ICAgICAgIGlmIGNoID09ICdccic6ICAjIDB4MEQKKyAgICAgICAgICAgICAgICByZXR1cm4gdmFs
dWUKKyAgICAgICAgICAgIGVsaWYgY2ggPT0gJ1xuJzogICMgMHgwQQorICAgICAgICAgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbigndW5leHBlY3RlZCBMRiBpbiB2YWx1ZSByZWFkaW5nJykKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsdWUgKz0gY2gKKworICAgIGRlZiBfc2tp
cF9oZWFkZXJzKHNlbGYpOgorICAgICAgICB0ZXJtaW5hdG9yID0gJ1xyXG5cclxuJworICAgICAg
ICBwb3MgPSAwCisgICAgICAgIHdoaWxlIHBvcyA8IGxlbih0ZXJtaW5hdG9yKToKKyAgICAgICAg
ICAgIHJlY2VpdmVkID0gc2VsZi5fc29ja2V0LnJlY3YoMSlbMF0KKyAgICAgICAgICAgIGlmIHJl
Y2VpdmVkID09IHRlcm1pbmF0b3JbcG9zXToKKyAgICAgICAgICAgICAgICBwb3MgKz0gMQorICAg
ICAgICAgICAgZWxpZiByZWNlaXZlZCA9PSB0ZXJtaW5hdG9yWzBdOgorICAgICAgICAgICAgICAg
IHBvcyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcG9zID0gMAorCisg
ICAgZGVmIF9mb3JtYXRfaG9zdF9oZWFkZXIoc2VsZik6CisgICAgICAgICMgNC4xIDkuIExldCAv
aG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgICAgaG9zdHBvcnQgPSAnJworICAg
ICAgICAjIDQuMSAxMC4gQXBwZW5kIHRoZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJ
SSBsb3dlcmNhc2UsIHRvCisgICAgICAgICMgL2hvc3Rwb3J0LworICAgICAgICBob3N0cG9ydCA9
IHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3QubG93ZXIoKQorICAgICAgICAjIDQuMSAxMS4gSWYg
L3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLwor
ICAgICAgICAjIGlzIHRydWUsIGFuZCAvcG9ydC8gaXMgbm90IDQ0MywgdGhlbiBhcHBlbmQgYSBV
KzAwM0EgQ09MT04gY2hhcmFjdGVyCisgICAgICAgICMgKDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1
ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2UtdGVuIGludGVnZXIsCisgICAgICAgICMg
dG8gL2hvc3Rwb3J0LworICAgICAgICBpZiAoKG5vdCBzZWxmLl9vcHRpb25zLnVzZV90bHMgYW5k
CisgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCAhPSBfREVGQVVMVF9QT1JU
KSBvcgorICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMudXNlX3RscyBhbmQKKyAgICAgICAgICAg
ICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0ICE9IF9ERUZBVUxUX1NFQ1VSRV9QT1JUKSk6Cisg
ICAgICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCkKKyAgICAgICAgIyA0LjEgMTIuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAiSG9zdDoi
LCBhIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXIsCisgICAgICAgICMgYW5kIC9ob3N0cG9ydC8sIHRv
IC9maWVsZHMvLgorICAgICAgICBob3N0ID0gJ0hvc3Q6ICcgKyBob3N0cG9ydCArICdcclxuJwor
ICAgICAgICByZXR1cm4gaG9zdAorCisKK2NsYXNzIFdlYlNvY2tldERyYWZ0NzVIYW5kc2hha2Uo
V2ViU29ja2V0SGFuZHNoYWtlKToKKyAgICAiIiJXZWIgU29ja2V0IGRyYWZ0IDc1IGhhbmRzaGFr
ZS4iIiIKKworICAgIF9FWFBFQ1RFRF9SRVNQT05TRSA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDEw
MSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nICsKKyAgICAgICAgV2ViU29ja2V0
SGFuZHNoYWtlLl9VUEdSQURFX0hFQURFUiArCisgICAgICAgIFdlYlNvY2tldEhhbmRzaGFrZS5f
Q09OTkVDVElPTl9IRUFERVIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29ja2V0LCBvcHRp
b25zKToKKyAgICAgICAgV2ViU29ja2V0SGFuZHNoYWtlLl9faW5pdF9fKHNlbGYsIHNvY2tldCwg
b3B0aW9ucykKKworICAgIGRlZiBoYW5kc2hha2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tl
dC5zZW5kKF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKSkKKyAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmQoV2ViU29ja2V0SGFuZHNoYWtlLl9VUEdSQURFX0hFQURFUikKKyAgICAg
ICAgc2VsZi5fc29ja2V0LnNlbmQoV2ViU29ja2V0SGFuZHNoYWtlLl9DT05ORUNUSU9OX0hFQURF
UikKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoc2VsZi5fZm9ybWF0X2hvc3RfaGVhZGVyKCkp
CisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMu
b3JpZ2luKSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoJ1xyXG4nKQorCisgICAgICAgIGZv
ciBleHBlY3RlZF9jaGFyIGluIFdlYlNvY2tldERyYWZ0NzVIYW5kc2hha2UuX0VYUEVDVEVEX1JF
U1BPTlNFOgorICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zb2NrZXQucmVjdigxKVswXQor
ICAgICAgICAgICAgaWYgZXhwZWN0ZWRfY2hhciAhPSByZWNlaXZlZDoKKyAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0hhbmRzaGFrZSBmYWlsdXJlJykKKyAgICAgICAgIyBXZSBjdXQg
Y29ybmVycyBhbmQgc2tpcCBvdGhlciBoZWFkZXJzLgorICAgICAgICBzZWxmLl9za2lwX2hlYWRl
cnMoKQorCiBjbGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6CiAgICAgIiIiV2ViIFNvY2tldCBlY2hv
IGNsaWVudC4iIiIKIApAQCAtMTA2LDggKzQzOCwxNiBAQCBjbGFzcyBFY2hvQ2xpZW50KG9iamVj
dCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2
ZXJfcG9ydCkpCiAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVzZV90bHM6CiAgICAgICAg
ICAgICAgICAgc2VsZi5fc29ja2V0ID0gX1RMU1NvY2tldChzZWxmLl9zb2NrZXQpCi0gICAgICAg
ICAgICBzZWxmLl9oYW5kc2hha2UoKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fb3B0
aW9ucy5tZXNzYWdlLnNwbGl0KCcsJykgKyBbX0dPT0RCWUVfTUVTU0FHRV06CisKKyAgICAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMuZHJhZnQ3NToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5k
c2hha2UgPSBXZWJTb2NrZXREcmFmdDc1SGFuZHNoYWtlKAorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9zb2NrZXQsIHNlbGYuX29wdGlvbnMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IFdlYlNvY2tldEhhbmRzaGFrZSgKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5fc29ja2V0LCBzZWxmLl9vcHRpb25zKQorICAgICAgICAgICAgc2VsZi5f
aGFuZHNoYWtlLmhhbmRzaGFrZSgpCisKKyAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29w
dGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpOgogICAgICAgICAgICAgICAgIGZyYW1lID0gJ1x4MDAn
ICsgbGluZS5lbmNvZGUoJ3V0Zi04JykgKyAnXHhmZicKICAgICAgICAgICAgICAgICBzZWxmLl9z
b2NrZXQuc2VuZChmcmFtZSkKICAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJv
c2U6CkBAIC0xMTgsNDUgKzQ1OCw1MSBAQCBjbGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgogICAgICAgICAgICAgICAgICAg
ICBwcmludCAnUmVjdjogJXMnICUgcmVjZWl2ZWRbMTotMV0uZGVjb2RlKCd1dGYtOCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3JlcGxhY2UnKQorICAgICAgICAgICAgaWYgbm90IHNlbGYuX29wdGlvbnMuZHJhZnQ3NToKKyAg
ICAgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5nX2hhbmRzaGFrZSgpCiAgICAgICAgIGZpbmFs
bHk6CiAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQogCi0gICAgZGVmIF9oYW5kc2hh
a2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKF9tZXRob2RfbGluZShzZWxmLl9v
cHRpb25zLnJlc291cmNlKSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoX1VQR1JBREVfSEVB
REVSKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChfQ09OTkVDVElPTl9IRUFERVIpCi0gICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kKHNlbGYuX2Zvcm1hdF9ob3N0X2hlYWRlcigpKQotICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZChfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikp
Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKCdcclxuJykKLQotICAgICAgICBmb3IgZXhwZWN0
ZWRfY2hhciBpbiBfRVhQRUNURURfUkVTUE9OU0U6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHNl
bGYuX3NvY2tldC5yZWN2KDEpWzBdCi0gICAgICAgICAgICBpZiBleHBlY3RlZF9jaGFyICE9IHJl
Y2VpdmVkOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSGFuZHNoYWtlIGZhaWx1
cmUnKQotICAgICAgICAjIFdlIGN1dCBjb3JuZXJzIGFuZCBza2lwIG90aGVyIGhlYWRlcnMuCi0g
ICAgICAgIHNlbGYuX3NraXBfaGVhZGVycygpCi0KLSAgICBkZWYgX3NraXBfaGVhZGVycyhzZWxm
KToKLSAgICAgICAgdGVybWluYXRvciA9ICdcclxuXHJcbicKLSAgICAgICAgcG9zID0gMAotICAg
ICAgICB3aGlsZSBwb3MgPCBsZW4odGVybWluYXRvcik6Ci0gICAgICAgICAgICByZWNlaXZlZCA9
IHNlbGYuX3NvY2tldC5yZWN2KDEpWzBdCi0gICAgICAgICAgICBpZiByZWNlaXZlZCA9PSB0ZXJt
aW5hdG9yW3Bvc106Ci0gICAgICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgICAgIGVsaWYg
cmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKLSAgICAgICAgICAgICAgICBwb3MgPSAxCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBvcyA9IDAKLQotICAgIGRlZiBfZm9ybWF0
X2hvc3RfaGVhZGVyKHNlbGYpOgotICAgICAgICBob3N0ID0gJ0hvc3Q6ICcgKyBzZWxmLl9vcHRp
b25zLnNlcnZlcl9ob3N0Ci0gICAgICAgIGlmICgobm90IHNlbGYuX29wdGlvbnMudXNlX3RscyBh
bmQKLSAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0ICE9IF9ERUZBVUxUX1BP
UlQpIG9yCi0gICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy51c2VfdGxzIGFuZAotICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgIT0gX0RFRkFVTFRfU0VDVVJFX1BPUlQpKToK
LSAgICAgICAgICAgIGhvc3QgKz0gJzonICsgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQp
Ci0gICAgICAgIGhvc3QgKz0gJ1xyXG4nCi0gICAgICAgIHJldHVybiBob3N0CisgICAgZGVmIF9k
b19jbG9zaW5nX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgIiIiUGVyZm9ybSBjbG9zaW5nIGhh
bmRzaGFrZS4iIiIKKyAgICAgICAgY2xvc2luZyA9ICcnCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQo
JywnKVstMV0gPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAgICAgICAgICAgICAgIyByZXF1
ZXN0ZWQgc2VydmVyIGluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZSwgc28KKyAgICAgICAgICAg
ICAgICAgICAgIyBleHBlY3RpbmcgY2xvc2luZyBoYW5kc2hha2UgbWVzc2FnZSBmcm9tIHNlcnZl
ci4KKyAgICAgICAgICAgICAgICAgICAgY2xvc2luZyA9IHNlbGYuX3NvY2tldC5yZWN2KDIpCisg
ICAgICAgICAgICAgICAgICAgIGlmIGNsb3NpbmcgPT0gJ1x4ZmZceDAwJzoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgNC4yIDMgOCBJZiB0aGUgL2ZyYW1lIHR5cGUvIGlzIDB4RkYgYW5kIHRo
ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyAvbGVuZ3RoLyB3YXMgMCwgdGhlbiBydW4gdGhl
IGZvbGxvd2luZyBzdWJzdGVwcy4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETyh1a2Fp
KTogaGFuZGxlIFx4ZmZceDgwLi5ceDAwIGNhc2UuCisgICAgICAgICAgICAgICAgICAgICAgICAj
IDEuIElmIHRoZSBXZWJTb2NrZXQgY2xvc2luZyBoYW5kc2hha2UgaGFzIG5vdAorICAgICAgICAg
ICAgICAgICAgICAgICAgIyB5ZXQgc3RhcnRlZCwgdGhlbiBzdGFydCB0aGUgV2ViU29ja2V0IGNs
b3NpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICMgaGFuZHNoYWtlLgorICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoJ1x4ZmZceDAwJykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICMgMi4gV2FpdCB1bnRpbCBlaXRoZXIgdGhlIFdlYlNvY2tldCBjbG9zaW5nCisg
ICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBoYXMgc3RhcnRlZCBvciB0aGUgV2Vi
U29ja2V0IGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgY2xvc2VkLgor
ICAgICAgICAgICAgICAgICAgICAgICAgIyAzLiBJZiB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24g
aXMgbm90IGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2xvc2VkLCB0aGVuIGNs
b3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICMg
Y2xvc2UoKSBpbiBmaW5hbGx5LgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZXg6Cisg
ICAgICAgICAgICAgICAgcHJpbnQgJ0V4Y2VwdGlvbjogJXMnICUgZXgKKyAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgICMgaWYgc2VydmVyIGRpZG4ndCBpbml0aWF0ZSBjbG9zaW5nIGhhbmRz
aGFrZSwgc3RhcnQKKyAgICAgICAgICAgICMgY2xvc2luZyBoYW5kc2hha2UgZnJvbSBjbGllbnQu
CisgICAgICAgICAgICBpZiBjbG9zaW5nICE9ICdceGZmXHgwMCc6CisgICAgICAgICAgICAgICAg
cHJpbnQgJ0Nsb3NpbmcgaGFuZHNoYWtlJworICAgICAgICAgICAgICAgICMgMiwgMyBTZW5kIGEg
MHhGRiBieXRlIGFuZCAweDAwIGJ5dGUgdG8gdGhlIHNlcnZlci4KKyAgICAgICAgICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZCgnXHhmZlx4MDAnKQorICAgICAgICAgICAgICAgICMgNCBUaGUgV2Vi
U29ja2V0IGNsb3NpbmcgaGFuZHNoYWtlIGhhcyBzdGFydGVkLgorICAgICAgICAgICAgICAgICMg
NSBXYWl0IGEgdXNlci1hZ2VudC1kZXRlcm1pbmVkIGxlbmd0aCBvZiB0aW1lLCBvcgorICAgICAg
ICAgICAgICAgICMgdW50aWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGNsb3NlZC4KKyAg
ICAgICAgICAgICAgICAjIE5PVEU6IHRoZSBjbG9zaW5nIGhhbmRzaGFrZSBmaW5pc2hlcyBvbmNl
IHRoZSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAjIHJldHVybnMgdGhlIDB4RkYgcGFja2FnZSwg
YXMgZGVzY3JpYmVkIGFib3ZlLgorICAgICAgICAgICAgICAgIGNsb3NpbmcgPSBzZWxmLl9zb2Nr
ZXQucmVjdigyKQorICAgICAgICAgICAgICAgIGlmIGNsb3NpbmcgIT0gJ1x4RkZceDAwJzoKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnQgJ05vIDB4RkYgcGFja2FnZSBmcm9tIHNlcnZlcicKIAog
CiBkZWYgbWFpbigpOgpAQCAtMTc0LDggKzUyMCw4IEBAIGRlZiBtYWluKCk6CiAgICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy1yJywgJy0tcmVzb3VyY2UnLCBkZXN0PSdyZXNvdXJjZScsIHR5cGU9J3N0
cmluZycsCiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nL2VjaG8nLCBoZWxwPSdyZXNv
dXJjZSBwYXRoJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS1tZXNzYWdlJywgZGVz
dD0nbWVzc2FnZScsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0o
J2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0byBzZW5kIGV4Y2x1ZGluZyAiJXMiICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGhhdCBpcyBhbHdheXMgc2VudCBhdCB0aGUgZW5kJyAl
CisgICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ2NvbW1hLXNlcGFyYXRlZCBtZXNzYWdlcyB0
byBzZW5kLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXMgd2lsbCBmb3JjZSBjbG9z
ZSB0aGUgY29ubmVjdGlvbiBmcm9tIHNlcnZlci4nICUKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfR09PREJZRV9NRVNTQUdFKSkKICAgICBwYXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1x
dWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKICAgICAgICAgICAg
ICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhlbHA9J3N1cHByZXNzIG1lc3NhZ2VzJykKQEAgLTE4
NCw2ICs1MzAsOSBAQCBkZWYgbWFpbigpOgogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsICct
LXNvY2tldC10aW1lb3V0JywgJy0tc29ja2V0X3RpbWVvdXQnLAogICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J3NvY2tldF90aW1lb3V0JywgdHlwZT0naW50JywgZGVmYXVsdD1fVElNRU9VVF9T
RUMsCiAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVGltZW91dChzZWMpIGZvciBzb2NrZXRz
JykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kcmFmdDc1JywgZGVzdD0nZHJhZnQ3NScsCisg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSd1c2UgZHJhZnQtNzUgaGFuZHNoYWtlIHByb3Rv
Y29sJykKIAogICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygp
CiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9w
eXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob193c2gucHkKb2xkIG1vZGUg
MTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKaW5kZXggMDVlODBlOC4uZDk0NzEyOCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
CkBAIC01MywxMiArNTMsMTggQEAgSW5zdGFsbGF0aW9uOgogCiAgICBUbyBsaW1pdCB0aGUgc2Vh
cmNoIGZvciBXZWIgU29ja2V0IGhhbmRsZXJzIHRvIGEgZGlyZWN0b3J5IDxzY2FuX2Rpcj4KICAg
IHVuZGVyIDx3ZWJzb2NrX2hhbmRsZXJzPiwgY29uZmlndXJlIGFzIGZvbGxvd3M6Ci0gICAKKwog
ICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9zY2FuIDxzY2FuX2Rp
cj4KLSAgICAgICAKKwogICAgPHNjYW5fZGlyPiBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGlt
ZSB3aGVuIDx3ZWJzb2NrX2hhbmRsZXJzPgogICAgY29udGFpbnMgbWFueSBub24tV2ViIFNvY2tl
dCBoYW5kbGVyIGZpbGVzLgogCisgICBJZiB5b3Ugd2FudCB0byBzdXBwb3J0IG9sZCBoYW5kc2hh
a2UgYmFzZWQgb24KKyAgIGRyYWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc1OgorCisg
ICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5hbGxvd19kcmFmdDc1IE9uCisKKwog
ICAgRXhhbXBsZSBzbmlwcGV0IG9mIGh0dHBkLmNvbmY6CiAgICAobW9kX3B5d2Vic29ja2V0IGlz
IGluIC93ZWJzb2NrX2xpYiwgV2ViIFNvY2tldCBoYW5kbGVycyBhcmUgaW4KICAgIC93ZWJzb2Nr
X2hhbmRsZXJzLCBwb3J0IGlzIDgwIGZvciB3cywgNDQzIGZvciB3c3MuKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9kaXNwYXRjaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKaW5kZXggYzUy
ZTllYi4uOThkMWEyZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L2Rpc3BhdGNoLnB5CkBAIC0zNSw3ICszNSw4IEBACiBpbXBvcnQgb3MKIGltcG9y
dCByZQogCi1pbXBvcnQgdXRpbAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwK
K2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCiAKIAogX1NPVVJDRV9QQVRIX1BBVFRF
Uk4gPSByZS5jb21waWxlKHInKD9pKV93c2hcLnB5JCcpCkBAIC0xOTcsMTMgKzE5OCwyNiBAQCBj
bGFzcyBEaXNwYXRjaGVyKG9iamVjdCk6CiAKICAgICAgICAgdW51c2VkX2RvX2V4dHJhX2hhbmRz
aGFrZSwgdHJhbnNmZXJfZGF0YV8gPSBzZWxmLl9oYW5kbGVyKHJlcXVlc3QpCiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfKHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRp
b24oCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVxdWVzdC5jbGllbnRfdGVy
bWluYXRlZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRl
ZCA9IEZhbHNlCisgICAgICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkKKyAgICAg
ICAgICAgIGV4Y2VwdCBtc2d1dGlsLkNvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uLCBlOgor
ICAgICAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgJ2NsaWVudCBpbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UgZm9yICVz
OiAnICUgKAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKKyAgICAg
ICAgICAgICAgICAgICAgZSkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhj
ZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgICAgICBwcmludCAnZXhjZXB0aW9uOiAlcycg
JSB0eXBlKGUpCisgICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0
aW9uKAogICAgICAgICAgICAgICAgICAgICAnJXMgcmFpc2VkIGV4Y2VwdGlvbiBmb3IgJXM6ICcg
JSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9O
QU1FLCByZXF1ZXN0LndzX3Jlc291cmNlKSwKKyAgICAgICAgICAgICAgICAgICAgX1RSQU5TRkVS
X0RBVEFfSEFORExFUl9OQU1FLCByZXF1ZXN0LndzX3Jlc291cmNlKSwKICAgICAgICAgICAgICAg
ICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgIG1zZ3V0aWwuY2xvc2VfY29ubmVjdGlvbihyZXF1ZXN0
KQorCiAKICAgICBkZWYgX2hhbmRsZXIoc2VsZiwgcmVxdWVzdCk6CiAgICAgICAgIHRyeToKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NjI3OGUuLjAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV2ViIFNvY2tldCBoYW5kc2hha2luZy4KLQotTm90ZTog
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2
ZW4gdGhvdWdoCi1tb2RfcHl0aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1
c2VkIG9ubHkgaW4gY29ubmVjdGlvbiBoYW5kbGVycy4KLVVuZm9ydHVuYXRlbHksIHdlIGhhdmUg
bm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUKLW5v
dCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRlcyB3cml0
aW5nL3JlYWRpbmcuCi0iIiIKLQotCi1pbXBvcnQgcmUKLQotaW1wb3J0IHV0aWwKLQotCi1fREVG
QVVMVF9XRUJfU09DS0VUX1BPUlQgPSA4MAotX0RFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9S
VCA9IDQ0MwotX1dFQl9TT0NLRVRfU0NIRU1FID0gJ3dzJwotX1dFQl9TT0NLRVRfU0VDVVJFX1ND
SEVNRSA9ICd3c3MnCi0KLV9NQU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0
ZWQgdmFsdWUgb3IgTm9uZQotICAgIFsnVXBncmFkZScsICdXZWJTb2NrZXQnXSwKLSAgICBbJ0Nv
bm5lY3Rpb24nLCAnVXBncmFkZSddLAotICAgIFsnSG9zdCcsIE5vbmVdLAotICAgIFsnT3JpZ2lu
JywgTm9uZV0sCi1dCi0KLV9GSVJTVF9GSVZFX0xJTkVTID0gbWFwKHJlLmNvbXBpbGUsIFsKLSAg
ICByJ15HRVQgL1tcU10qIEhUVFAvMS4xXHJcbiQnLAotICAgIHInXlVwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4kJywKLSAgICByJ15Db25uZWN0aW9uOiBVcGdyYWRlXHJcbiQnLAotICAgIHInXkhvc3Q6
IFtcU10rXHJcbiQnLAotICAgIHInXk9yaWdpbjogW1xTXStcclxuJCcsCi1dKQotCi1fU0lYVEhf
QU5EX0xBVEVSID0gcmUuY29tcGlsZSgKLSAgICByJ14nCi0gICAgcicoV2ViU29ja2V0LVByb3Rv
Y29sOiBbXHgyMC1ceDdlXStcclxuKT8nCi0gICAgcicoQ29va2llOiBbXlxyXSpcclxuKSonCi0g
ICAgcicoQ29va2llMjogW15ccl0qXHJcbik/JwotICAgIHInKENvb2tpZTogW15ccl0qXHJcbikq
JwotICAgIHInXHJcbicpCi0KLQotZGVmIF9kZWZhdWx0X3BvcnQoaXNfc2VjdXJlKToKLSAgICBp
ZiBpc19zZWN1cmU6Ci0gICAgICAgIHJldHVybiBfREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9Q
T1JUCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIF9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVAot
Ci0KLWNsYXNzIEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIGlu
IFdlYiBTb2NrZXQgSGFuZHNoYWtlLiIiIgotCi0gICAgcGFzcwotCi0KLWRlZiBfdmFsaWRhdGVf
cHJvdG9jb2wocHJvdG9jb2wpOgotICAgICIiIlZhbGlkYXRlIFdlYlNvY2tldC1Qcm90b2NvbCBz
dHJpbmcuIiIiCi0KLSAgICBpZiBub3QgcHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUVycm9yKCdJbnZhbGlkIFdlYlNvY2tldC1Qcm90b2NvbDogZW1wdHknKQotICAgIGZvciBjIGlu
IHByb3RvY29sOgotICAgICAgICBpZiBub3QgMHgyMCA8PSBvcmQoYykgPD0gMHg3ZToKLSAgICAg
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJbGxlZ2FsIGNoYXJhY3RlciBpbiBwcm90b2Nv
bDogJXInICUgYykKLQotCi1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiVGhpcyBj
bGFzcyBwZXJmb3JtcyBXZWIgU29ja2V0IGhhbmRzaGFrZS4iIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzdHJpY3Q9RmFsc2UpOgotICAgICAgICAiIiJD
b25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVl
c3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNo
ZXIgKGRpc3BhdGNoLkRpc3BhdGNoZXIpLgotICAgICAgICAgICAgc3RyaWN0OiBTdHJpY3RseSBj
aGVjayBoYW5kc2hha2UgcmVxdWVzdC4gRGVmYXVsdDogRmFsc2UuCi0gICAgICAgICAgICAgICAg
SWYgVHJ1ZSwgcmVxdWVzdC5jb25uZWN0aW9uIG11c3QgcHJvdmlkZSBnZXRfbWVtb3JpemVkX2xp
bmVzCi0gICAgICAgICAgICAgICAgbWV0aG9kLgotCi0gICAgICAgIEhhbmRzaGFrZXIgd2lsbCBh
ZGQgYXR0cmlidXRlcyBzdWNoIGFzIHdzX3Jlc291cmNlIGluIHBlcmZvcm1pbmcKLSAgICAgICAg
aGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVz
dAotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLl9z
dHJpY3QgPSBzdHJpY3QKLQotICAgIGRlZiBkb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIi
IlBlcmZvcm0gV2ViIFNvY2tldCBIYW5kc2hha2UuIiIiCi0KLSAgICAgICAgc2VsZi5fY2hlY2tf
aGVhZGVyX2xpbmVzKCkKLSAgICAgICAgc2VsZi5fc2V0X3Jlc291cmNlKCkKLSAgICAgICAgc2Vs
Zi5fc2V0X29yaWdpbigpCi0gICAgICAgIHNlbGYuX3NldF9sb2NhdGlvbigpCi0gICAgICAgIHNl
bGYuX3NldF9wcm90b2NvbCgpCi0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFu
ZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKCkKLQot
ICAgIGRlZiBfc2V0X3Jlc291cmNlKHNlbGYpOgotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jl
c291cmNlID0gc2VsZi5fcmVxdWVzdC51cmkKLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToK
LSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19vcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNf
aW5bJ09yaWdpbiddCi0KLSAgICBkZWYgX3NldF9sb2NhdGlvbihzZWxmKToKLSAgICAgICAgbG9j
YXRpb25fcGFydHMgPSBbXQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LmlzX2h0dHBzKCk6Ci0g
ICAgICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoX1dFQl9TT0NLRVRfU0VDVVJFX1NDSEVN
RSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChfV0VC
X1NPQ0tFVF9TQ0hFTUUpCi0gICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAg
ICAgICAgaG9zdCwgcG9ydCA9IHNlbGYuX3BhcnNlX2hvc3RfaGVhZGVyKCkKLSAgICAgICAgY29u
bmVjdGlvbl9wb3J0ID0gc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHJbMV0KLSAg
ICAgICAgaWYgcG9ydCAhPSBjb25uZWN0aW9uX3BvcnQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFcnJvcignSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaDogJWQvJWQnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwb3J0LCBjb25uZWN0aW9uX3BvcnQpKQot
ICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoaG9zdCkKLSAgICAgICAgaWYgKHBvcnQgIT0g
X2RlZmF1bHRfcG9ydChzZWxmLl9yZXF1ZXN0LmlzX2h0dHBzKCkpKToKLSAgICAgICAgICAgIGxv
Y2F0aW9uX3BhcnRzLmFwcGVuZCgnOicpCi0gICAgICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBl
bmQoc3RyKHBvcnQpKQotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoc2VsZi5fcmVxdWVz
dC51cmkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24gPSAnJy5qb2luKGxvY2F0
aW9uX3BhcnRzKQotCi0gICAgZGVmIF9wYXJzZV9ob3N0X2hlYWRlcihzZWxmKToKLSAgICAgICAg
ZmllbGRzID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luWydIb3N0J10uc3BsaXQoJzonLCAxKQot
ICAgICAgICBpZiBsZW4oZmllbGRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkc1sw
XSwgX2RlZmF1bHRfcG9ydChzZWxmLl9yZXF1ZXN0LmlzX2h0dHBzKCkpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVsZHNbMV0pCi0gICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0lu
dmFsaWQgcG9ydCBudW1iZXIgZm9ybWF0OiAlcicgJSBlKQotCi0gICAgZGVmIF9zZXRfcHJvdG9j
b2woc2VsZik6Ci0gICAgICAgIHByb3RvY29sID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dCgnV2ViU29ja2V0LVByb3RvY29sJykKLSAgICAgICAgaWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBfdmFsaWRhdGVfcHJvdG9jb2wocHJvdG9jb2wpCi0gICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFr
ZShzZWxmKToKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAotICAgICAg
ICAgICAgICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vcclxu
JykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdVcGdyYWRlOiBXZWJT
b2NrZXRcclxuJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53
cml0ZSgnV2ViU29ja2V0LU9yaWdpbjogJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoJ1xyXG4nKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoJ1dlYlNvY2tldC1Mb2NhdGlvbjogJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24pCi0gICAgICAgIHNlbGYu
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnXHJcbicpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVl
c3Qud3NfcHJvdG9jb2w6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGUoJ1dlYlNvY2tldC1Qcm90b2NvbDogJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi53cml0ZShzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICAgICAgc2Vs
Zi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdcclxuJykKLSAgICAgICAgc2VsZi5fcmVxdWVz
dC5jb25uZWN0aW9uLndyaXRlKCdcclxuJykKLQotICAgIGRlZiBfY2hlY2tfaGVhZGVyX2xpbmVz
KHNlbGYpOgotICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBfTUFOREFUT1JZX0hF
QURFUlM6Ci0gICAgICAgICAgICBhY3R1YWxfdmFsdWUgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNf
aW4uZ2V0KGtleSkKLSAgICAgICAgICAgIGlmIG5vdCBhY3R1YWxfdmFsdWU6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBr
ZXkpCi0gICAgICAgICAgICBpZiBleHBlY3RlZF92YWx1ZToKLSAgICAgICAgICAgICAgICBpZiBh
Y3R1YWxfdmFsdWUgIT0gZXhwZWN0ZWRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEhhbmRzaGFrZUVycm9yKCdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVzJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXksIGFjdHVhbF92YWx1ZSkp
Ci0gICAgICAgIGlmIHNlbGYuX3N0cmljdDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBsaW5lcyA9IHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5nZXRfbWVtb3JpemVkX2xpbmVz
KCkKLSAgICAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciwgZToKLSAgICAgICAgICAgICAg
ICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAg
ICdTdHJpY3QgaGFuZHNoYWtlIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvbm5lY3Rpb24gJwotICAg
ICAgICAgICAgICAgICAgICAnZG9lc25cJ3QgcHJvdmlkZSBnZXRfbWVtb3JpemVkX2xpbmVzKCkn
LCBlKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBzZWxmLl9jaGVja19maXJz
dF9saW5lcyhsaW5lcykKLQotICAgIGRlZiBfY2hlY2tfZmlyc3RfbGluZXMoc2VsZiwgbGluZXMp
OgotICAgICAgICBpZiBsZW4obGluZXMpIDwgbGVuKF9GSVJTVF9GSVZFX0xJTkVTKToKLSAgICAg
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdUb28gZmV3IGhlYWRlciBsaW5lczogJWQnICUg
bGVuKGxpbmVzKSkKLSAgICAgICAgZm9yIGxpbmUsIHJlZ2V4cCBpbiB6aXAobGluZXMsIF9GSVJT
VF9GSVZFX0xJTkVTKToKLSAgICAgICAgICAgIGlmIG5vdCByZWdleHAuc2VhcmNoKGxpbmUpOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdVbmV4cGVjdGVkIGhlYWRlcjog
JXIgZG9lc25cJ3QgbWF0Y2ggJXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSAobGluZSwgcmVnZXhwLnBhdHRlcm4pKQotICAgICAgICBzaXh0aF9hbmRfbGF0ZXIgPSAn
Jy5qb2luKGxpbmVzWzU6XSkKLSAgICAgICAgaWYgbm90IF9TSVhUSF9BTkRfTEFURVIuc2VhcmNo
KHNpeHRoX2FuZF9sYXRlcik6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignVW5l
eHBlY3RlZCBoZWFkZXI6ICVyIGRvZXNuXCd0IG1hdGNoICVyJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJSAoc2l4dGhfYW5kX2xhdGVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgX1NJWFRIX0FORF9MQVRFUi5wYXR0ZXJuKSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5k
ZXggMDAwMDAwMC4uM2U5NWE1NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlL19faW5pdF9fLnB5CkBAIC0wLDAgKzEsOTUgQEAKKyMgQ29weXJpZ2h0IDIwMTAsIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyIi
IldlYiBTb2NrZXQgaGFuZHNoYWtpbmcuCisKK05vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0
ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorbW9kX3B5dGhvbiBk
b2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24g
aGFuZGxlcnMuCitVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBl
eGFtcGxlLCByZXF1ZXN0LndyaXRlL3JlYWQgYXJlCitub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5
IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgorIiIiCisKKwor
aW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQorCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UgaW1wb3J0IGRyYWZ0NzUKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQg
aGFuZHNoYWtlCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IERF
RkFVTFRfV0VCX1NPQ0tFVF9QT1JUCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jh
c2UgaW1wb3J0IERFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAorZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBXRUJfU09DS0VUX1NDSEVNRQorZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBXRUJfU09DS0VUX1NFQ1VSRV9TQ0hF
TUUKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtl
RXJyb3IKK2Zyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRh
dGVfcHJvdG9jb2wKKworCitjbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6CisgICAgIiIiVGhpcyBj
bGFzcyBwZXJmb3JtcyBXZWIgU29ja2V0IGhhbmRzaGFrZS4iIiIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9VHJ1ZSwgc3RyaWN0PUZh
bHNlKToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6
CisgICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBk
aXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KKyAgICAgICAgICAg
IGFsbG93RHJhZnQ3NTogYWxsb3cgZHJhZnQgNzUgaGFuZHNoYWtlIHByb3RvY29sLgorICAgICAg
ICAgICAgc3RyaWN0OiBTdHJpY3RseSBjaGVjayBoYW5kc2hha2UgcmVxdWVzdCBpbiBkcmFmdCA3
NS4KKyAgICAgICAgICAgICAgICBEZWZhdWx0OiBGYWxzZS4gSWYgVHJ1ZSwgcmVxdWVzdC5jb25u
ZWN0aW9uIG11c3QgcHJvdmlkZQorICAgICAgICAgICAgICAgIGdldF9tZW1vcml6ZWRfbGluZXMg
bWV0aG9kLgorCisgICAgICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNoIGFz
IHdzX3Jlc291cmNlIGluIHBlcmZvcm1pbmcKKyAgICAgICAgaGFuZHNoYWtlLgorICAgICAgICAi
IiIKKworICAgICAgICBzZWxmLl9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigibW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZSIpCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAg
ICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyCisgICAgICAgIHNlbGYuX3N0cmljdCA9
IHN0cmljdAorICAgICAgICBzZWxmLl9oYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKKyAgICAgICAgc2VsZi5fZmFsbGJhY2tIYW5kc2hha2VyID0g
Tm9uZQorICAgICAgICBpZiBhbGxvd0RyYWZ0NzU6CisgICAgICAgICAgICBzZWxmLl9mYWxsYmFj
a0hhbmRzaGFrZXIgPSBkcmFmdDc1LkhhbmRzaGFrZXIoCisgICAgICAgICAgICAgICAgcmVxdWVz
dCwgZGlzcGF0Y2hlciwgc3RyaWN0KQorCisgICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKKyAg
ICAgICAgIiIiUGVyZm9ybSBXZWIgU29ja2V0IEhhbmRzaGFrZS4iIiIKKworICAgICAgICB0cnk6
CisgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIGV4
Y2VwdCBIYW5kc2hha2VFcnJvciwgZToKKyAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5lcnJvcign
SGFuZHNoYWtlIGVycm9yOiAlcycgJSBlKQorICAgICAgICAgICAgaWYgc2VsZi5fZmFsbGJhY2tI
YW5kc2hha2VyOgorICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKCdmYWxsYmFj
ayB0byBvbGQgcHJvdG9jb2wnKQorICAgICAgICAgICAgICAgIHNlbGYuX2ZhbGxiYWNrSGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAg
cmFpc2UgZQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvX2Jhc2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MjMyNDcxCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKQEAgLTAsMCArMSwxMDEgQEAKKyMgQ29weXJp
Z2h0IDIwMTAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyIiIldlYiBTb2NrZXQgaGFuZHNoYWtpbmcuCisKK05vdGU6IHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3Vn
aAorbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5
IGluIGNvbm5lY3Rpb24gaGFuZGxlcnMuCitVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVy
IG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0LndyaXRlL3JlYWQgYXJlCitub3Qgc3VpdGFi
bGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy9yZWFk
aW5nLgorIiIiCisKKworREVGQVVMVF9XRUJfU09DS0VUX1BPUlQgPSA4MAorREVGQVVMVF9XRUJf
U09DS0VUX1NFQ1VSRV9QT1JUID0gNDQzCitXRUJfU09DS0VUX1NDSEVNRSA9ICd3cycKK1dFQl9T
T0NLRVRfU0VDVVJFX1NDSEVNRSA9ICd3c3MnCisKKworY2xhc3MgSGFuZHNoYWtlRXJyb3IoRXhj
ZXB0aW9uKToKKyAgICAiIiJFeGNlcHRpb24gaW4gV2ViIFNvY2tldCBIYW5kc2hha2UuIiIiCisK
KyAgICBwYXNzCisKKworZGVmIGRlZmF1bHRfcG9ydChpc19zZWN1cmUpOgorICAgIGlmIGlzX3Nl
Y3VyZToKKyAgICAgICAgcmV0dXJuIERFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAorICAg
IGVsc2U6CisgICAgICAgIHJldHVybiBERUZBVUxUX1dFQl9TT0NLRVRfUE9SVAorCisKK2RlZiB2
YWxpZGF0ZV9wcm90b2NvbChwcm90b2NvbCk6CisgICAgIiIiVmFsaWRhdGUgV2ViU29ja2V0LVBy
b3RvY29sIHN0cmluZy4iIiIKKworICAgIGlmIG5vdCBwcm90b2NvbDoKKyAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXJyb3IoJ0ludmFsaWQgV2ViU29ja2V0LVByb3RvY29sOiBlbXB0eScpCisgICAg
Zm9yIGMgaW4gcHJvdG9jb2w6CisgICAgICAgIGlmIG5vdCAweDIwIDw9IG9yZChjKSA8PSAweDdl
OgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0lsbGVnYWwgY2hhcmFjdGVyIGlu
IHByb3RvY29sOiAlcicgJSBjKQorCisKK2RlZiBwYXJzZV9ob3N0X2hlYWRlcihyZXF1ZXN0KToK
KyAgICBmaWVsZHMgPSByZXF1ZXN0LmhlYWRlcnNfaW5bJ0hvc3QnXS5zcGxpdCgnOicsIDEpCisg
ICAgaWYgbGVuKGZpZWxkcykgPT0gMToKKyAgICAgICAgcmV0dXJuIGZpZWxkc1swXSwgZGVmYXVs
dF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBmaWVs
ZHNbMF0sIGludChmaWVsZHNbMV0pCisgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CisgICAgICAg
IHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUg
ZSkKKworCitkZWYgYnVpbGRfbG9jYXRpb24ocmVxdWVzdCk6CisgICAgIiIiQnVpbGQgV2ViU29j
a2V0IGxvY2F0aW9uIGZvciByZXF1ZXN0LiIiIgorICAgIGxvY2F0aW9uX3BhcnRzID0gW10KKyAg
ICBpZiByZXF1ZXN0LmlzX2h0dHBzKCk6CisgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChX
RUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUpCisgICAgZWxzZToKKyAgICAgICAgbG9jYXRpb25fcGFy
dHMuYXBwZW5kKFdFQl9TT0NLRVRfU0NIRU1FKQorICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgn
Oi8vJykKKyAgICBob3N0LCBwb3J0ID0gcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCkKKyAgICBj
b25uZWN0aW9uX3BvcnQgPSByZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkclsxXQorICAgIGlm
IHBvcnQgIT0gY29ubmVjdGlvbl9wb3J0OgorICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcign
SGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaDogJWQvJWQnICUKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHBvcnQsIGNvbm5lY3Rpb25fcG9ydCkpCisgICAgbG9jYXRpb25fcGFy
dHMuYXBwZW5kKGhvc3QpCisgICAgaWYgKHBvcnQgIT0gZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNf
aHR0cHMoKSkpOgorICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQorICAgICAgICBs
b2NhdGlvbl9wYXJ0cy5hcHBlbmQoc3RyKHBvcnQpKQorICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVu
ZChyZXF1ZXN0LnVyaSkKKyAgICByZXR1cm4gJycuam9pbihsb2NhdGlvbl9wYXJ0cykKKworCisK
KyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvZHJh
ZnQ3NS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL2RyYWZ0NzUucHkKbmV3IGZpbGUgbW9kZSAx
MDA3NTUKaW5kZXggMDAwMDAwMC4uYjEzMmRiYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvaGFuZHNoYWtlL2RyYWZ0NzUucHkKQEAgLTAsMCArMSwxNjggQEAKKyMgQ29weXJpZ2h0IDIw
MTAsIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRo
ZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMg
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisj
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKyIiIldlYiBTb2NrZXQgaGFuZHNoYWtpbmcgZGVmaW5lZCBpbiBkcmFmdC1oaXhpZS10
aGV3ZWJzb2NrZXRwcm90b2NvbC03NS4KKworTm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
L3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCittb2RfcHl0aG9uIGRv
Y3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbiBo
YW5kbGVycy4KK1VuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4
YW1wbGUsIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUKK25vdCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkg
ZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRlcyB3cml0aW5nL3JlYWRpbmcuCisiIiIKKworCitp
bXBvcnQgcmUKKworZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBI
YW5kc2hha2VFcnJvcgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBidWlsZF9sb2NhdGlvbgorZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGlt
cG9ydCB2YWxpZGF0ZV9wcm90b2NvbAorCisKK19NQU5EQVRPUllfSEVBREVSUyA9IFsKKyAgICAj
IGtleSwgZXhwZWN0ZWQgdmFsdWUgb3IgTm9uZQorICAgIFsnVXBncmFkZScsICdXZWJTb2NrZXQn
XSwKKyAgICBbJ0Nvbm5lY3Rpb24nLCAnVXBncmFkZSddLAorICAgIFsnSG9zdCcsIE5vbmVdLAor
ICAgIFsnT3JpZ2luJywgTm9uZV0sCitdCisKK19GSVJTVF9GSVZFX0xJTkVTID0gbWFwKHJlLmNv
bXBpbGUsIFsKKyAgICByJ15HRVQgL1tcU10qIEhUVFAvMS4xXHJcbiQnLAorICAgIHInXlVwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4kJywKKyAgICByJ15Db25uZWN0aW9uOiBVcGdyYWRlXHJcbiQnLAor
ICAgIHInXkhvc3Q6IFtcU10rXHJcbiQnLAorICAgIHInXk9yaWdpbjogW1xTXStcclxuJCcsCitd
KQorCitfU0lYVEhfQU5EX0xBVEVSID0gcmUuY29tcGlsZSgKKyAgICByJ14nCisgICAgcicoV2Vi
U29ja2V0LVByb3RvY29sOiBbXHgyMC1ceDdlXStcclxuKT8nCisgICAgcicoQ29va2llOiBbXlxy
XSpcclxuKSonCisgICAgcicoQ29va2llMjogW15ccl0qXHJcbik/JworICAgIHInKENvb2tpZTog
W15ccl0qXHJcbikqJworICAgIHInXHJcbicpCisKKworY2xhc3MgSGFuZHNoYWtlcihvYmplY3Qp
OgorICAgICIiIlRoaXMgY2xhc3MgcGVyZm9ybXMgV2ViIFNvY2tldCBoYW5kc2hha2UuIiIiCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hlciwgc3RyaWN0PUZhbHNl
KToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBkaXNw
YXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KKyAgICAgICAgICAgIHN0
cmljdDogU3RyaWN0bHkgY2hlY2sgaGFuZHNoYWtlIHJlcXVlc3QuIERlZmF1bHQ6IEZhbHNlLgor
ICAgICAgICAgICAgICAgIElmIFRydWUsIHJlcXVlc3QuY29ubmVjdGlvbiBtdXN0IHByb3ZpZGUg
Z2V0X21lbW9yaXplZF9saW5lcworICAgICAgICAgICAgICAgIG1ldGhvZC4KKworICAgICAgICBI
YW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJm
b3JtaW5nCisgICAgICAgIGhhbmRzaGFrZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5f
cmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIK
KyAgICAgICAgc2VsZi5fc3RyaWN0ID0gc3RyaWN0CisKKyAgICBkZWYgZG9faGFuZHNoYWtlKHNl
bGYpOgorICAgICAgICAiIiJQZXJmb3JtIFdlYiBTb2NrZXQgSGFuZHNoYWtlLiIiIgorCisgICAg
ICAgIHNlbGYuX2NoZWNrX2hlYWRlcl9saW5lcygpCisgICAgICAgIHNlbGYuX3NldF9yZXNvdXJj
ZSgpCisgICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQorICAgICAgICBzZWxmLl9zZXRfbG9jYXRp
b24oKQorICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2woKQorICAgICAgICBzZWxmLl9kaXNwYXRj
aGVyLmRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICBzZWxmLl9zZW5k
X2hhbmRzaGFrZSgpCisKKyAgICBkZWYgX3NldF9yZXNvdXJjZShzZWxmKToKKyAgICAgICAgc2Vs
Zi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVlc3QudXJpCisKKyAgICBkZWYgX3Nl
dF9vcmlnaW4oc2VsZik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gc2VsZi5f
cmVxdWVzdC5oZWFkZXJzX2luWydPcmlnaW4nXQorCisgICAgZGVmIF9zZXRfbG9jYXRpb24oc2Vs
Zik6CisgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24gPSBidWlsZF9sb2NhdGlvbihz
ZWxmLl9yZXF1ZXN0KQorCisgICAgZGVmIF9zZXRfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHBy
b3RvY29sID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgnV2ViU29ja2V0LVByb3RvY29s
JykKKyAgICAgICAgaWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2YWxpZGF0
ZV9wcm90b2NvbChwcm90b2NvbCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9
IHByb3RvY29sCisKKyAgICBkZWYgX3NlbmRfaGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBzZWxm
Ll9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoCisgICAgICAgICAgICAgICAgJ0hUVFAvMS4xIDEw
MSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nKQorICAgICAgICBzZWxmLl9yZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nKQorICAgICAgICBz
ZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJykK
KyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdXZWJTb2NrZXQtT3JpZ2lu
OiAnKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc2VsZi5fcmVxdWVz
dC53c19vcmlnaW4pCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnXHJc
bicpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnV2ViU29ja2V0LUxv
Y2F0aW9uOiAnKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc2VsZi5f
cmVxdWVzdC53c19sb2NhdGlvbikKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKCdcclxuJykKKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbDoKKyAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnV2ViU29ja2V0LVByb3RvY29s
OiAnKQorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHNlbGYuX3Jl
cXVlc3Qud3NfcHJvdG9jb2wpCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdGUoJ1xyXG4nKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1xy
XG4nKQorCisgICAgZGVmIF9jaGVja19oZWFkZXJfbGluZXMoc2VsZik6CisgICAgICAgIGZvciBr
ZXksIGV4cGVjdGVkX3ZhbHVlIGluIF9NQU5EQVRPUllfSEVBREVSUzoKKyAgICAgICAgICAgIGFj
dHVhbF92YWx1ZSA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoa2V5KQorICAgICAgICAg
ICAgaWYgbm90IGFjdHVhbF92YWx1ZToKKyAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VF
cnJvcignSGVhZGVyICVzIGlzIG5vdCBkZWZpbmVkJyAlIGtleSkKKyAgICAgICAgICAgIGlmIGV4
cGVjdGVkX3ZhbHVlOgorICAgICAgICAgICAgICAgIGlmIGFjdHVhbF92YWx1ZSAhPSBleHBlY3Rl
ZF92YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0lsbGVn
YWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXMnICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKGtleSwgYWN0dWFsX3ZhbHVlKSkKKyAgICAgICAgaWYgc2VsZi5fc3Ry
aWN0OgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGxpbmVzID0gc2VsZi5fcmVx
dWVzdC5jb25uZWN0aW9uLmdldF9tZW1vcml6ZWRfbGluZXMoKQorICAgICAgICAgICAgZXhjZXB0
IEF0dHJpYnV0ZUVycm9yLCBlOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9y
KAorICAgICAgICAgICAgICAgICAgICAnU3RyaWN0IGhhbmRzaGFrZSBpcyBzcGVjaWZpZWQgYnV0
IHRoZSBjb25uZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgJ2RvZXNuXCd0IHByb3ZpZGUg
Z2V0X21lbW9yaXplZF9saW5lcygpJykKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2ZpcnN0X2xp
bmVzKGxpbmVzKQorCisgICAgZGVmIF9jaGVja19maXJzdF9saW5lcyhzZWxmLCBsaW5lcyk6Cisg
ICAgICAgIGlmIGxlbihsaW5lcykgPCBsZW4oX0ZJUlNUX0ZJVkVfTElORVMpOgorICAgICAgICAg
ICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ1RvbyBmZXcgaGVhZGVyIGxpbmVzOiAlZCcgJSBsZW4o
bGluZXMpKQorICAgICAgICBmb3IgbGluZSwgcmVnZXhwIGluIHppcChsaW5lcywgX0ZJUlNUX0ZJ
VkVfTElORVMpOgorICAgICAgICAgICAgaWYgbm90IHJlZ2V4cC5zZWFyY2gobGluZSk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ1VuZXhwZWN0ZWQgaGVhZGVyOiAlciBk
b2VzblwndCBtYXRjaCAlcicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAl
IChsaW5lLCByZWdleHAucGF0dGVybikpCisgICAgICAgIHNpeHRoX2FuZF9sYXRlciA9ICcnLmpv
aW4obGluZXNbNTpdKQorICAgICAgICBpZiBub3QgX1NJWFRIX0FORF9MQVRFUi5zZWFyY2goc2l4
dGhfYW5kX2xhdGVyKToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdVbmV4cGVj
dGVkIGhlYWRlcjogJXIgZG9lc25cJ3QgbWF0Y2ggJXInCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAlIChzaXh0aF9hbmRfbGF0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfU0lYVEhfQU5EX0xBVEVSLnBhdHRlcm4pKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaGFuZHNoYWtlLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvaGFuZHNoYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4
IDAwMDAwMDAuLmU0MTZiYTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFr
ZS9oYW5kc2hha2UucHkKQEAgLTAsMCArMSwyMDggQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyIi
IldlYiBTb2NrZXQgaGFuZHNoYWtpbmcuCisKK05vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0
ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAorbW9kX3B5dGhvbiBk
b2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24g
aGFuZGxlcnMuCitVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBl
eGFtcGxlLCByZXF1ZXN0LndyaXRlL3JlYWQgYXJlCitub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5
IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgorIiIiCisKKwor
aW1wb3J0IGxvZ2dpbmcKK2Zyb20gbWQ1IGltcG9ydCBtZDUKK2ltcG9ydCByZQoraW1wb3J0IHN0
cnVjdAorCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRz
aGFrZUVycm9yCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IGJ1
aWxkX2xvY2F0aW9uCitmcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0
IHZhbGlkYXRlX3Byb3RvY29sCisKKworX01BTkRBVE9SWV9IRUFERVJTID0gWworICAgICMga2V5
LCBleHBlY3RlZCB2YWx1ZSBvciBOb25lCisgICAgWydVcGdyYWRlJywgJ1dlYlNvY2tldCddLAor
ICAgIFsnQ29ubmVjdGlvbicsICdVcGdyYWRlJ10sCitdCisKK2RlZiBfaGV4aWZ5KHMpOgorICAg
IHJldHVybiByZS5zdWIoJy4nLCBsYW1iZGEgeDogJyUwMnggJyAlIG9yZCh4Lmdyb3VwKDApKSwg
cykKKworY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgorICAgICIiIlRoaXMgY2xhc3MgcGVyZm9y
bXMgV2ViIFNvY2tldCBoYW5kc2hha2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVx
dWVzdCwgZGlzcGF0Y2hlcik6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKwor
ICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0Lgor
ICAgICAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlzcGF0Y2guRGlzcGF0Y2hlciku
CisKKyAgICAgICAgSGFuZHNoYWtlciB3aWxsIGFkZCBhdHRyaWJ1dGVzIHN1Y2ggYXMgd3NfcmVz
b3VyY2UgaW4gcGVyZm9ybWluZworICAgICAgICBoYW5kc2hha2UuCisgICAgICAgICIiIgorCisg
ICAgICAgIHNlbGYuX2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJtb2RfcHl3ZWJzb2NrZXQu
aGFuZHNoYWtlIikKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2Vs
Zi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKKworICAgIGRlZiBkb19oYW5kc2hha2Uoc2VsZik6
CisgICAgICAgICIiIlBlcmZvcm0gV2ViIFNvY2tldCBIYW5kc2hha2UuIiIiCisKKyAgICAgICAg
IyA1LjEgUmVhZGluZyB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hha2UuCisgICAgICAgICMg
ZGlzcGF0Y2hlciBzZXRzIGl0IGluIHNlbGYuX3JlcXVlc3QuCisgICAgICAgIHNlbGYuX2NoZWNr
X2hlYWRlcl9saW5lcygpCisgICAgICAgIHNlbGYuX3NldF9yZXNvdXJjZSgpCisgICAgICAgIHNl
bGYuX3NldF9wcm90b2NvbCgpCisgICAgICAgIHNlbGYuX3NldF9sb2NhdGlvbigpCisgICAgICAg
IHNlbGYuX3NldF9vcmlnaW4oKQorICAgICAgICBzZWxmLl9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNl
KCkKKyAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2Uoc2VsZi5fcmVx
dWVzdCkKKyAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQorCisgICAgZGVmIF9jaGVja19o
ZWFkZXJfbGluZXMoc2VsZik6CisgICAgICAgICMgNS4xIDEuIFRoZSB0aHJlZSBjaGFyYWN0ZXIg
VVRGLTggc3RyaW5nICJHRVQiLgorICAgICAgICAjIDUuMSAyLiBBIFVURi04LWVuY29kZWQgVSsw
MDIwIFNQQUNFIGNoYXJhY3RlciAoMHgyMCBieXRlKS4KKyAgICAgICAgaWYgc2VsZi5fcmVxdWVz
dC5tZXRob2QgIT0gJ0dFVCc6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignTWV0
aG9kIGlzIG5vdCBHRVQnKQorICAgICAgICAjIFRoZSBleHBlY3RlZCBmaWVsZCBuYW1lcywgYW5k
IHRoZSBtZWFuaW5nIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgIyB2YWx1ZXMsIGFy
ZSBhcyBmb2xsb3dzLgorICAgICAgICAjICB8VXBncmFkZXwgYW5kIHxDb25uZWN0aW9ufAorICAg
ICAgICBmb3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBfTUFOREFUT1JZX0hFQURFUlM6CisgICAg
ICAgICAgICBhY3R1YWxfdmFsdWUgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkK
KyAgICAgICAgICAgIGlmIG5vdCBhY3R1YWxfdmFsdWU6CisgICAgICAgICAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXJyb3IoJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBrZXkpCisgICAgICAg
ICAgICBpZiBleHBlY3RlZF92YWx1ZToKKyAgICAgICAgICAgICAgICBpZiBhY3R1YWxfdmFsdWUg
IT0gZXhwZWN0ZWRfdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVy
cm9yKCdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVzJyAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChrZXksIGFjdHVhbF92YWx1ZSkpCisKKyAgICBkZWYg
X3NldF9yZXNvdXJjZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9
IHNlbGYuX3JlcXVlc3QudXJpCisKKyAgICBkZWYgX3NldF9wcm90b2NvbChzZWxmKToKKyAgICAg
ICAgIyB8U2VjLVdlYlNvY2tldC1Qcm90b2NvbHwKKyAgICAgICAgcHJvdG9jb2wgPSBzZWxmLl9y
ZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KCdTZWMtV2ViU29ja2V0LVByb3RvY29sJykKKyAgICAgICAg
aWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2YWxpZGF0ZV9wcm90b2NvbChw
cm90b2NvbCkKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCA9IHByb3RvY29sCisK
KyAgICBkZWYgX3NldF9sb2NhdGlvbihzZWxmKToKKyAgICAgICAgIyB8SG9zdHwKKyAgICAgICAg
aG9zdCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoJ0hvc3QnKQorICAgICAgICBpZiBo
b3N0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19sb2NhdGlvbiA9
IGJ1aWxkX2xvY2F0aW9uKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICMgVE9ETyh1a2FpKTogY2hl
Y2sgaG9zdCBpcyB0aGlzIGhvc3QuCisKKyAgICBkZWYgX3NldF9vcmlnaW4oc2VsZik6CisgICAg
ICAgICMgfE9yaWdpbnwKKyAgICAgICAgb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2lu
WydPcmlnaW4nXQorICAgICAgICBpZiBvcmlnaW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9IG9yaWdpbgorCisgICAgZGVmIF9zZXRfY2hhbGxlbmdl
X3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICAjIDUuMiA0LTguCisgICAgICAgIHNlbGYuX3JlcXVl
c3Qud3NfY2hhbGxlbmdlID0gc2VsZi5fZ2V0X2NoYWxsZW5nZSgpCisgICAgICAgICMgNS4yIDku
IGxldCAvcmVzcG9uc2UvIGJlIHRoZSBNRDUgZmludGVycHJpbnQgb2YgL2NoYWxsZW5nZS8KKyAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2VfbWQ1ID0gbWQ1KAorICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2UpLmRpZ2VzdCgpCisgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygiY2hhbGxlbmdlOiAlcyIgJSBfaGV4aWZ5KAorICAgICAgICAgICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfY2hhbGxlbmdlKSkKKyAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCJyZXNw
b25zZTogICVzIiAlIF9oZXhpZnkoCisgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19j
aGFsbGVuZ2VfbWQ1KSkKKworICAgIGRlZiBfZ2V0X2tleV92YWx1ZShzZWxmLCBrZXlfZmllbGQp
OgorICAgICAgICBrZXlfdmFsdWUgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleV9m
aWVsZCkKKyAgICAgICAgaWYga2V5X3ZhbHVlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoIm5vICVzIiAlIGtleV92YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBOb25l
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgNS4yIDQuIGxldCAva2V5LW51bWJlcl9uLyBi
ZSB0aGUgZGlnaXRzIChjaGFyYWN0ZXJzIGluIHRoZSByYW5nZQorICAgICAgICAgICAgIyBVKzAw
MzAgRElHSVQgWkVSTyAoMCkgdG8gVSswMDM5IERJR0lUIE5JTkUgKDkpKSBpbiAva2V5X24vLAor
ICAgICAgICAgICAgIyBpbnRlcnByZXRlZCBhcyBhIGJhc2UgdGVuIGludGVnZXIsIGlnbm9yaW5n
IGFsbCBvdGhlciBjaGFyYWN0ZXJzCisgICAgICAgICAgICAjIGluIC9rZXlfbi8KKyAgICAgICAg
ICAgIGtleV9udW1iZXIgPSBpbnQocmUuc3ViKCJcXEQiLCAiIiwga2V5X3ZhbHVlKSkKKyAgICAg
ICAgICAgICMgNS4yIDUuIGxldCAvc3BhY2VzX24vIGJlIHRoZSBudW1iZXIgb2YgVSswMDIwIFNQ
QUNFIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICMgaW4gL2tleV9uLy4KKyAgICAgICAgICAgIHNw
YWNlcyA9IHJlLnN1Ym4oIiAiLCAiIiwga2V5X3ZhbHVlKVsxXQorICAgICAgICAgICAgIyA1LjIg
Ni4gaWYgL2tleS1udW1iZXJfbi8gaXMgbm90IGFuIGludGVncmFsIG11bHRpcGxlIG9mIC9zcGFj
ZXNfbi8KKyAgICAgICAgICAgICMgdGhlbiBhYm9ydCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24u
CisgICAgICAgICAgICBpZiBrZXlfbnVtYmVyICUgc3BhY2VzICE9IDA6CisgICAgICAgICAgICAg
ICAgcmFpc2UgaGFuZHNoYWtlRXJyb3IoJ2tleV9udW1iZXIgJWQgaXMgbm90IGFuIGludGVncmFs
ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXVsdGlwbGUgb2Ygc3Bh
Y2VzICVkJyAlIChrZXlfbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcykpCisgICAgICAgICAgICAjIDUu
MiA3LiBsZXQgL3BhcnRfbi8gYmUgL2tleV9udW1iZXJfbi8gZGl2aWRlZCBieSAvc3BhY2VzX24v
LgorICAgICAgICAgICAgcGFydCA9IGtleV9udW1iZXIgLyBzcGFjZXMKKyAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5kZWJ1ZygiJXM6ICVzID0+ICVkIC8gJWQgPT4gJWQiICUgKAorICAgICAgICAg
ICAgICAgIGtleV9maWVsZCwga2V5X3ZhbHVlLCBrZXlfbnVtYmVyLCBzcGFjZXMsIHBhcnQpKQor
ICAgICAgICAgICAgcmV0dXJuIHBhcnQKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKworICAgIGRlZiBfZ2V0X2NoYWxsZW5nZShzZWxmKToKKyAgICAgICAgIyA1LjIg
NC03LgorICAgICAgICBrZXkxID0gc2VsZi5fZ2V0X2tleV92YWx1ZSgnU2VjLVdlYnNvY2tldC1L
ZXkxJykKKyAgICAgICAgaWYgbm90IGtleTE6CisgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VF
cnJvcignU2VjLVdlYlNvY2tldC1LZXkxIG5vdCBmb3VuZCcpCisgICAgICAgIGtleTIgPSBzZWxm
Ll9nZXRfa2V5X3ZhbHVlKCdTZWMtV2Vic29ja2V0LUtleTInKQorICAgICAgICBpZiBub3Qga2V5
MjoKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdTZWMtV2ViU29ja2V0LUtleTIg
bm90IGZvdW5kJykKKyAgICAgICAgIyA1LjIgOC4gbGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25j
YXRlbmF0aW9uIG9mIC9wYXJ0XzEvLAorICAgICAgICBjaGFsbGVuZ2UgPSAiIgorICAgICAgICBj
aGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soIiFJIiwga2V5MSkgICMgbmV0d29yayBieXRlb3JkZXIg
aW50CisgICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygiIUkiLCBrZXkyKSAgIyBuZXR3
b3JrIGJ5dGVvcmRlciBpbnQKKyAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi5yZWFkKDgpCisgICAgICAgIHJldHVybiBjaGFsbGVuZ2UKKworICAgIGRlZiBfc2Vu
ZF9oYW5kc2hha2Uoc2VsZik6CisgICAgICAgICMgNS4yIDEwLiBzZW5kIHRoZSBmb2xsb3dpbmcg
bGluZS4KKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAorICAgICAgICAg
ICAgICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nKQor
ICAgICAgICAjIDUuMiAxMS4gc2VuZCB0aGUgZm9sbG93aW5nIGZpZWxkcyB0byB0aGUgY2xpZW50
LgorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1VwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4nKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKCdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiAnKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUoc2VsZi5fcmVxdWVzdC53c19sb2NhdGlvbikKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdcclxuJykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKCdTZWMtV2ViU29ja2V0LU9yaWdpbjogJykKKyAgICAgICAgc2VsZi5f
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1xyXG4nKQorICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LndzX3Byb3RvY29sOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKCdTZWMtV2ViU29ja2V0LVByb3RvY29sOiAnKQorICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCisgICAg
ICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1xyXG4nKQorICAgICAgICAj
IDUuMiAxMi4gc2VuZCB0d28gYnl0ZXMgMHgwRCAweDBBLgorICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoJ1xyXG4nKQorICAgICAgICAjIDUuMiAxMy4gc2VuZCAvcmVzcG9u
c2UvCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzZWxmLl9yZXF1ZXN0
LndzX2NoYWxsZW5nZV9tZDUpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNl
cmhhbmRsZXIucHkKaW5kZXggMTI0YjlmMS4uNzVkZjRiMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFu
ZGxlci5weQpAQCAtMzQsMTIgKzM0LDEzIEBAIEFwYWNoZSBIVFRQIFNlcnZlciBhbmQgbW9kX3B5
dGhvbiBtdXN0IGJlIGNvbmZpZ3VyZWQgc3VjaCB0aGF0IHRoaXMKIGZ1bmN0aW9uIGlzIGNhbGxl
ZCB0byBoYW5kbGUgV2ViIFNvY2tldCByZXF1ZXN0LgogIiIiCiAKK2ltcG9ydCBsb2dnaW5nCiAK
IGZyb20gbW9kX3B5dGhvbiBpbXBvcnQgYXBhY2hlCiAKLWltcG9ydCBkaXNwYXRjaAotaW1wb3J0
IGhhbmRzaGFrZQotaW1wb3J0IHV0aWwKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNw
YXRjaAorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQorZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IHV0aWwKIAogCiAjIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRoZSBo
YW5kbGVyIHJvb3QgZGlyZWN0b3J5LgpAQCAtNTAsNiArNTEsMzUgQEAgX1BZT1BUX0hBTkRMRVJf
Uk9PVCA9ICdtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290JwogIyBUaGUgZGVmYXVsdCBpcyB0
aGUgcm9vdCBkaXJlY3RvcnkuCiBfUFlPUFRfSEFORExFUl9TQ0FOID0gJ21vZF9weXdlYnNvY2tl
dC5oYW5kbGVyX3NjYW4nCiAKKyMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkgdG8gYWxsb3cgZHJh
ZnQ3NSBoYW5kc2hha2UuCisjIFRoZSBkZWZhdWx0IGlzIFRydWUgKE9uKQorX1BZT1BUX0FMTE9X
X0RSQUZUNzUgPSAnbW9kX3B5d2Vic29ja2V0LmFsbG93X2RyYWZ0NzUnCisKKworY2xhc3MgQXBh
Y2hlTG9nSGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgorICAgICIiIldyYXBwZXIgbG9nZ2luZy5I
YW5kbGVyIHRvIGVtaXQgbG9nIG1lc3NhZ2UgdG8gYXBhY2hlJ3MgZXJyb3IubG9nIiIiCisgICAg
X0xFVkVMUyA9IHsKKyAgICAgICAgbG9nZ2luZy5ERUJVRzogYXBhY2hlLkFQTE9HX0RFQlVHLAor
ICAgICAgICBsb2dnaW5nLklORk86IGFwYWNoZS5BUExPR19JTkZPLAorICAgICAgICBsb2dnaW5n
LldBUk5JTkc6IGFwYWNoZS5BUExPR19XQVJOSU5HLAorICAgICAgICBsb2dnaW5nLkVSUk9SOiBh
cGFjaGUuQVBMT0dfRVJSLAorICAgICAgICBsb2dnaW5nLkNSSVRJQ0FMOiBhcGFjaGUuQVBMT0df
Q1JJVCwKKyAgICAgICAgfQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0PU5vbmUpOgor
ICAgICAgICBsb2dnaW5nLkhhbmRsZXIuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5sb2df
ZXJyb3IgPSBhcGFjaGUubG9nX2Vycm9yCisgICAgICAgIGlmIHJlcXVlc3QgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgc2VsZi5sb2dfZXJyb3IgPSByZXF1ZXN0LmxvZ19lcnJvcgorCisgICAg
ZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgYXBhY2hlX2xldmVsID0gYXBhY2hlLkFQ
TE9HX0RFQlVHCisgICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIGluIEFwYWNoZUxvZ0hhbmRsZXIu
X0xFVkVMUzoKKyAgICAgICAgICAgIGFwYWNoZV9sZXZlbCA9IEFwYWNoZUxvZ0hhbmRsZXIuX0xF
VkVMU1tyZWNvcmQubGV2ZWxub10KKyAgICAgICAgc2VsZi5sb2dfZXJyb3IocmVjb3JkLmdldE1l
c3NhZ2UoKSwgYXBhY2hlX2xldmVsKQorCisKK2xvZ2dpbmcuZ2V0TG9nZ2VyKCJtb2RfcHl3ZWJz
b2NrZXQiKS5hZGRIYW5kbGVyKEFwYWNoZUxvZ0hhbmRsZXIoKSkKKwogCiBkZWYgX2NyZWF0ZV9k
aXNwYXRjaGVyKCk6CiAgICAgX0hBTkRMRVJfUk9PVCA9IGFwYWNoZS5tYWluX3NlcnZlci5nZXRf
b3B0aW9ucygpLmdldCgKQEAgLTgwLDExICsxMTAsMjAgQEAgZGVmIGhlYWRlcnBhcnNlcmhhbmRs
ZXIocmVxdWVzdCk6CiAgICAgIiIiCiAKICAgICB0cnk6Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBo
YW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LCBfZGlzcGF0Y2hlcikKKyAgICAgICAgYWxsb3dE
cmFmdDc1ID0gYXBhY2hlLm1haW5fc2VydmVyLmdldF9vcHRpb25zKCkuZ2V0KAorICAgICAgICAg
ICAgICAgIF9QWU9QVF9BTExPV19EUkFGVDc1LCAiT24iKQorICAgICAgICBoYW5kc2hha2VyID0g
aGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwgX2Rpc3BhdGNoZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0RyYWZ0NzU9YWxsb3dEcmFmdDc1KQog
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCiAgICAgICAgIHJlcXVlc3QubG9nX2Vy
cm9yKCdtb2RfcHl3ZWJzb2NrZXQ6IHJlc291cmNlOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNl
LAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfREVCVUcpCi0gICAgICAg
IF9kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBleGNlcHQg
RXhjZXB0aW9uLCBlOgorICAgICAgICAgICAgIyBDYXRjaCBleGNlcHRpb24gaW4gdHJhbnNmZXJf
ZGF0YS4KKyAgICAgICAgICAgICMgSW4gdGhpcyBjYXNlLCBoYW5kc2hha2UgaGFzIGJlZW4gc3Vj
Y2Vzc2Z1bCwgc28ganVzdCBsb2cgdGhlCisgICAgICAgICAgICAjIGV4Y2VwdGlvbiBhbmQgcmV0
dXJuIGFwYWNoZS5ET05FCisgICAgICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vi
c29ja2V0OiAlcycgJSBlLCBhcGFjaGUuQVBMT0dfV0FSTklORykKICAgICBleGNlcHQgaGFuZHNo
YWtlLkhhbmRzaGFrZUVycm9yLCBlOgogICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mvd3NzIGZh
aWxlZC4KICAgICAgICAgIyBCdXQgdGhlIHJlcXVlc3QgY2FuIGJlIHZhbGlkIGh0dHAvaHR0cHMg
cmVxdWVzdC4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
bXNndXRpbC5weQppbmRleCA5MGFlNzE1Li5lN2EyMWZlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0
L21zZ3V0aWwucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CkBAIC0zOSwxMyArMzksMTgg
QEAgbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVz
IHdyaXRpbmcvcmVhZGluZy4KIAogaW1wb3J0IFF1ZXVlCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBv
cnQgdXRpbAorCitmcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAogCiAKIGNsYXNzIE1z
Z1V0aWxFeGNlcHRpb24oRXhjZXB0aW9uKToKICAgICBwYXNzCiAKIAorY2xhc3MgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24oTXNnVXRpbEV4Y2VwdGlvbik6CisgICAgcGFzcworCisKIGRl
ZiBfcmVhZChyZXF1ZXN0LCBsZW5ndGgpOgogICAgIGJ5dGVzID0gcmVxdWVzdC5jb25uZWN0aW9u
LnJlYWQobGVuZ3RoKQogICAgIGlmIG5vdCBieXRlczoKQEAgLTY2LDE0ICs3MSwzNyBAQCBkZWYg
X3dyaXRlKHJlcXVlc3QsIGJ5dGVzKToKICAgICAgICAgcmFpc2UKIAogCitkZWYgY2xvc2VfY29u
bmVjdGlvbihyZXF1ZXN0KToKKyAgICAiIiJDbG9zZSBjb25uZWN0aW9uLgorCisgICAgQXJnczoK
KyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICIiIgorICAgIGlmIHJl
cXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6CisgICAgICAgIHJldHVybgorICAgICMgNS4zIHRoZSBz
ZXJ2ZXIgbWF5IGRlY2lkZSB0byB0ZXJtaW5hdGUgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGJ5
CisgICAgIyBydW5uaW5nIHRocm91Z2ggdGhlIGZvbGxvd2luZyBzdGVwczoKKyAgICAjIDEuIHNl
bmQgYSAweEZGIGJ5dGUgYW5kIGEgMHgwMCBieXRlIHRvIHRoZSBjbGllbnQgdG8gaW5kaWNhdGUg
dGhlIHN0YXJ0CisgICAgIyBvZiB0aGUgY2xvc2luZyBoYW5kc2hha2UuCisgICAgX3dyaXRlKHJl
cXVlc3QsICdceGZmXHgwMCcpCisgICAgcmVxdWVzdC5zZXJ2ZXJfdGVybWluYXRlZCA9IFRydWUK
KyAgICAjIFRPRE8odWthaSk6IDIuIHdhaXQgdW50aWwgdGhlIC9jbGllbnQgdGVybWluYXRlZC8g
ZmxhZyBoYXMgYmVlbiBzZXQsIG9yCisgICAgIyB1bnRpbCBhIHNlcnZlci1kZWZpbmVkIHRpbWVv
dXQgZXhwaXJlcy4KKyAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlv
bi4KKyAgICAjIG5vdGU6IG1vZF9weXRob24gQ29ubmVjdGlvbiAobXBfY29ubikgZG9lc24ndCBo
YXZlIGNsb3NlIG1ldGhvZC4KKworCiBkZWYgc2VuZF9tZXNzYWdlKHJlcXVlc3QsIG1lc3NhZ2Up
OgogICAgICIiIlNlbmQgbWVzc2FnZS4KIAogICAgIEFyZ3M6CiAgICAgICAgIHJlcXVlc3Q6IG1v
ZF9weXRob24gcmVxdWVzdC4KICAgICAgICAgbWVzc2FnZTogdW5pY29kZSBzdHJpbmcgdG8gc2Vu
ZC4KKyAgICBSYWlzZXM6CisgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3
aGVuIHNlcnZlciBhbHJlYWR5IHRlcm1pbmF0ZWQuCiAgICAgIiIiCi0KKyAgICBpZiByZXF1ZXN0
LnNlcnZlcl90ZXJtaW5hdGVkOgorICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbgogICAgIF93cml0ZShyZXF1ZXN0LCAnXHgwMCcgKyBtZXNzYWdlLmVuY29kZSgndXRm
LTgnKSArICdceGZmJykKIAogCkBAIC04Miw4ICsxMTAsMTIgQEAgZGVmIHJlY2VpdmVfbWVzc2Fn
ZShyZXF1ZXN0KToKIAogICAgIEFyZ3M6CiAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdC4KKyAgICBSYWlzZXM6CisgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIGNsaWVudCBhbHJlYWR5IHRlcm1pbmF0ZWQuCiAgICAgIiIiCiAKKyAgICBpZiByZXF1
ZXN0LmNsaWVudF90ZXJtaW5hdGVkOgorICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRl
ZEV4Y2VwdGlvbgogICAgIHdoaWxlIFRydWU6CiAgICAgICAgICMgUmVhZCAxIGJ5dGUuCiAgICAg
ICAgICMgbXBfY29ubi5yZWFkIHdpbGwgYmxvY2sgaWYgbm8gYnl0ZXMgYXJlIGF2YWlsYWJsZS4K
QEAgLTk1LDYgKzEyNywxMSBAQCBkZWYgcmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpOgogICAgICAg
ICAgICAgIyBSZWFkIGFuZCBkaXNjYXJkLgogICAgICAgICAgICAgbGVuZ3RoID0gX3BheWxvYWRf
bGVuZ3RoKHJlcXVlc3QpCiAgICAgICAgICAgICBfcmVjZWl2ZV9ieXRlcyhyZXF1ZXN0LCBsZW5n
dGgpCisgICAgICAgICAgICAjIDUuMyAzLiAxMi4gaWYgL3R5cGUvIGlzIDB4RkYgYW5kIC9sZW5n
dGgvIGlzIDAsIHRoZW4gc2V0IHRoZQorICAgICAgICAgICAgIyAvY2xpZW50IHRlcm1pbmF0ZWQv
IGZsYWcgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9
PSAweEZGIGFuZCBsZW5ndGggPT0gMDoKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmNsaWVudF90
ZXJtaW5hdGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJtaW5h
dGVkRXhjZXB0aW9uCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlz
IGRlbGltaXRlZCB3aXRoIFx4ZmYuCiAgICAgICAgICAgICBieXRlcyA9IF9yZWFkX3VudGlsKHJl
cXVlc3QsICdceGZmJykKQEAgLTE2NiwxMiArMjAzLDE1IEBAIGNsYXNzIE1lc3NhZ2VSZWNlaXZl
cih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgc2VsZi5zdGFydCgpCiAKICAgICBkZWYgcnVu
KHNlbGYpOgotICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAg
ICAgICBtZXNzYWdlID0gcmVjZWl2ZV9tZXNzYWdlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAg
ICBpZiBzZWxmLl9vbm1lc3NhZ2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1l
c3NhZ2UpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1
dChtZXNzYWdlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSBub3Qgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQ6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVfbWVzc2FnZShz
ZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX29ubWVzc2FnZToKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KG1lc3NhZ2UpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjbG9zZV9jb25uZWN0aW9uKHNlbGYuX3JlcXVlc3Qp
CiAKICAgICBkZWYgcmVjZWl2ZShzZWxmKToKICAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdl
IGZyb20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFu
ZGFsb25lLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcg
bW9kZSAxMDA3NTUKaW5kZXggZjQxMTkxMC4uYWMyNDE5OAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5k
YWxvbmUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CkBAIC03NiwxMCArNzYsMTAg
QEAgdHJ5OgogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHBhc3MKIAotaW1wb3J0IGRpc3BhdGNo
Ci1pbXBvcnQgaGFuZHNoYWtlCi1pbXBvcnQgbWVtb3JpemluZ2ZpbGUKLWltcG9ydCB1dGlsCitm
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKK2Zyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBoYW5kc2hha2UKK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtZW1vcml6aW5n
ZmlsZQorZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKIAogCiBfTE9HX0xFVkVMUyA9
IHsKQEAgLTE2MCw2ICsxNjAsMTEgQEAgY2xhc3MgX1N0YW5kYWxvbmVSZXF1ZXN0KG9iamVjdCk6
CiAgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAogICAgIHVyaSA9IHBy
b3BlcnR5KGdldF91cmkpCiAKKyAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKKyAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIHJlcXVlc3QubWV0aG9kLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5f
cmVxdWVzdF9oYW5kbGVyLmNvbW1hbmQKKyAgICBtZXRob2QgPSBwcm9wZXJ0eShnZXRfbWV0aG9k
KQorCiAgICAgZGVmIGdldF9oZWFkZXJzX2luKHNlbGYpOgogICAgICAgICAiIiJHZXR0ZXIgdG8g
bWltaWMgcmVxdWVzdC5oZWFkZXJzX2luLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVz
dF9oYW5kbGVyLmhlYWRlcnMKQEAgLTIyMiw3ICsyMjcsOCBAQCBjbGFzcyBXZWJTb2NrZXRSZXF1
ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6CiAgICAgICAg
IHNlbGYuX3ByaW50X3dhcm5pbmdzX2lmX2FueSgpCiAgICAgICAgIHNlbGYuX2hhbmRzaGFrZXIg
PSBoYW5kc2hha2UuSGFuZHNoYWtlcigKICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBz
ZWxmLl9kaXNwYXRjaGVyLAotICAgICAgICAgICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVy
Lm9wdGlvbnMuc3RyaWN0KQorICAgICAgICAgICAgICAgIGFsbG93RHJhZnQ3NT1XZWJTb2NrZXRS
ZXF1ZXN0SGFuZGxlci5vcHRpb25zLmFsbG93X2RyYWZ0NzUsCisgICAgICAgICAgICAgICAgc3Ry
aWN0PVdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLm9wdGlvbnMuc3RyaWN0KQogICAgICAgICBDR0lI
VFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5fX2luaXRfXygKICAgICAgICAgICAgICAg
ICBzZWxmLCAqYXJncywgKiprZXl3b3JkcykKIApAQCAtMjQxLDcgKzI0NywxMyBAQCBjbGFzcyBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxl
cik6CiAgICAgICAgIGlmIHJlc3VsdDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAg
ICBzZWxmLl9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5f
ZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNlbGYuX3JlcXVlc3QpCisgICAgICAgICAgICAgICAg
dHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEo
c2VsZi5fcmVxdWVzdCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgorICAg
ICAgICAgICAgICAgICAgICAjIENhdGNoIGV4Y2VwdGlvbiBpbiB0cmFuc2Zlcl9kYXRhLgorICAg
ICAgICAgICAgICAgICAgICAjIEluIHRoaXMgY2FzZSwgaGFuZHNoYWtlIGhhcyBiZWVuIHN1Y2Nl
c3NmdWwsIHNvIGp1c3QgbG9nCisgICAgICAgICAgICAgICAgICAgICMgdGhlIGV4Y2VwdGlvbiBh
bmQgcmV0dXJuIEZhbHNlLgorICAgICAgICAgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ21vZF9w
eXdlYnNvY2tldDogJXMnICUgZSkKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAg
ICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsIGU6CiAgICAgICAgICAgICAg
ICAgIyBIYW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4gQXNzdW1lIGh0dHAocykuCkBAIC0zMzgs
NyArMzUwLDcgQEAgZGVmIF9tYWluKCk6CiAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0n
JywKICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5hbWUgdG8gbGlzdGVu
IHRvJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0JywgZGVzdD0ncG9ydCcs
IHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1oYW5kc2hha2UuX0RF
RkFVTFRfV0VCX1NPQ0tFVF9QT1JULAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9aGFu
ZHNoYWtlLkRFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAogICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKICAgICBwYXJzZXIuYWRkX29wdGlvbignLXcnLCAnLS13
ZWJzb2NrLWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCiAgICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nd2Vic29ja19oYW5kbGVycycsCkBAIC0zODMsNiArMzk1LDkgQEAgZGVmIF9t
YWluKCk6CiAgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywgJy0tbG9nX2NvdW50
JywgZGVzdD0nbG9nX2NvdW50JywKICAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBk
ZWZhdWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCiAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0nTG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tYWxsb3ct
ZHJhZnQ3NScsIGRlc3Q9J2FsbG93X2RyYWZ0NzUnLAorICAgICAgICAgICAgICAgICAgICAgIGFj
dGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdBbGxvdyBkcmFmdCA3NSBoYW5kc2hha2UnKQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
LXN0cmljdCcsIGRlc3Q9J3N0cmljdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0nU3RyaWN0bHkgY2hlY2sgaGFuZHNoYWtl
IHJlcXVlc3QnKQogICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1ZXVlJywgZGVzdD0n
cmVxdWVzdF9xdWV1ZV9zaXplJywgdHlwZT0naW50JywKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weQpv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGEzNGE4M2IuLjcwNTRiMjIKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Nl
dHVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdl
YnNvY2tldC9zZXR1cC5weQpAQCAtNDQsOCArNDQsOCBAQCBpZiBzeXMudmVyc2lvbiA8ICcyLjMn
OgogICAgIHByaW50ID4+c3lzLnN0ZGVyciwgJyVzIHJlcXVpcmVzIFB5dGhvbiAyLjMgb3IgbGF0
ZXIuJyAlIF9QQUNLQUdFX05BTUUKICAgICBzeXMuZXhpdCgxKQogCi1zZXR1cChhdXRob3I9J1l1
em8gRnVqaXNoaW1hJywKLSAgICAgIGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcnLAor
c2V0dXAoYXV0aG9yPSdZdXpvIEZ1amlzaGltYSwgRnVtaXRvc2hpIFVrYWknLAorICAgICAgYXV0
aG9yX2VtYWlsPSd5dXpvQGNocm9taXVtLm9yZywgdWthaUBjaHJvbWl1bS5vcmcnLAogICAgICAg
ZGVzY3JpcHRpb249J1dlYiBTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRUUCBTZXJ2ZXIu
JywKICAgICAgIGxvbmdfZGVzY3JpcHRpb249KAogICAgICAgICAgICAgICAnbW9kX3B5d2Vic29j
a2V0IGlzIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBleHRlbnNpb24gZm9yICcKQEAgLTU0LDkgKzU0
LDkgQEAgc2V0dXAoYXV0aG9yPSdZdXpvIEZ1amlzaGltYScsCiAgICAgICAgICAgICAgICdTZWUg
bW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4nKSwKICAgICAgIGxp
Y2Vuc2U9J1NlZSBDT1BZSU5HJywKICAgICAgIG5hbWU9X1BBQ0tBR0VfTkFNRSwKLSAgICAgIHBh
Y2thZ2VzPVtfUEFDS0FHRV9OQU1FXSwKKyAgICAgIHBhY2thZ2VzPVtfUEFDS0FHRV9OQU1FLCBf
UEFDS0FHRV9OQU1FICsgJy5oYW5kc2hha2UnXSwKICAgICAgIHVybD0naHR0cDovL2NvZGUuZ29v
Z2xlLmNvbS9wL3B5d2Vic29ja2V0LycsCi0gICAgICB2ZXJzaW9uPScwLjQuOS4yJywKKyAgICAg
IHZlcnNpb249JzAuNScsCiAgICAgICApCiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvY29uZmlnLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvY29u
ZmlnLnB5CmluZGV4IDVhYWFiOGMuLmUzYzZkYjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L2NvbmZpZy5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVz
dC9jb25maWcucHkKQEAgLTM5LDcgKzM5LDcgQEAgaW1wb3J0IHN5cwogCiAKICMgQWRkIHRoZSBw
YXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5wYXRoIHRvIGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vi
c29ja2V0Lgotc3lzLnBhdGggKz0gW29zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9f
KVswXSwgJy4uJyldCitzeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKG9zLnBhdGguc3Bs
aXQoX19maWxlX18pWzBdLCAnLi4nKSkKIAogCiAjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90
ZXN0L21vY2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC9tb2NrLnB5CmluZGV4IDNiODVkNjQuLmYxOWU5NmIgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0
L21vY2sucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L3Rlc3QvbW9jay5weQpAQCAtMTY4LDcgKzE2OCw3IEBAIGNsYXNzIE1vY2tSZXF1
ZXN0KG9iamVjdCk6CiAgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0LgogICAgICIi
IgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaT1Ob25lLCBoZWFkZXJzX2luPXt9LCBjb25u
ZWN0aW9uPU5vbmUsCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaT1Ob25lLCBoZWFkZXJzX2lu
PXt9LCBjb25uZWN0aW9uPU5vbmUsIG1ldGhvZD0nR0VUJywKICAgICAgICAgICAgICAgICAgaXNf
aHR0cHM9RmFsc2UpOgogICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCiAKQEAgLTE3
NiwxMiArMTc2LDE0IEBAIGNsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6CiAgICAgICAgICAgICB1
cmk6IFVSSSBvZiB0aGUgcmVxdWVzdC4KICAgICAgICAgICAgIGhlYWRlcnNfaW46IFJlcXVlc3Qg
aGVhZGVycy4KICAgICAgICAgICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gdXNlZCBmb3IgdGhl
IHJlcXVlc3QuCisgICAgICAgICAgICBtZXRob2Q6IHJlcXVlc3QgbWV0aG9kLgogICAgICAgICAg
ICAgaXNfaHR0cHM6IFdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLgogCiAgICAgICAg
IFNlZSB0aGUgZG9jdW1lbnQgb2YgbW9kX3B5dGhvbiBSZXF1ZXN0IGZvciBkZXRhaWxzLgogICAg
ICAgICAiIiIKICAgICAgICAgc2VsZi51cmkgPSB1cmkKICAgICAgICAgc2VsZi5jb25uZWN0aW9u
ID0gY29ubmVjdGlvbgorICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAogICAgICAgICBzZWxm
LmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKICAgICAgICAgIyBzZWxmLmlzX2h0
dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBUbyBhdm9pZCBuYW1lCiAg
ICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0IGlzIG5hbWVkIGFzIHN1
Y2guCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weQppbmRl
eCA1NDAzMjI4Li5mYmQ3OGRjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rl
c3RfZGlzcGF0Y2gucHkKQEAgLTE0NSwyOCArMTQ1LDMyIEBAIGNsYXNzIERpc3BhdGNoZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMScK
IAogICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5f
Y2hlY2ssIHAxJywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb3JpZ2luX2NoZWNrX3dzaC5w
eSBpcyBjYWxsZWQgZm9yIC9vcmlnaW5fY2hlY2ssIHAxJworICAgICAgICAgICAgICAgICAgICAg
ICAgICdceGZmXHgwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQogCiAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0
KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCiAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UgPSAnL3N1Yi9wbGFpbicKICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKICAg
ICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluLCBOb25l
JywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQg
Zm9yIC9zdWIvcGxhaW4sIE5vbmUnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1x4ZmZceDAw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCiAKICAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1t
b2NrLk1vY2tDb25uKCcnKSkKICAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3Bs
YWluPycKICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1
Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluPywgTm9uZScsCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3Bs
YWluPywgTm9uZScKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKIAog
ICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nv
bm4oJycpKQogICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4/cT12Jwog
ICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQogICAgICAgICBkaXNwYXRjaGVyLnRy
YW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc3ViL3BsYWlu
X3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/cT12LCBOb25lJywKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/
cT12LCBOb25lJworICAgICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQogCiAg
ICAgZGVmIHRlc3RfdHJhbnNmZXJfZGF0YV9ub19oYW5kbGVyKHNlbGYpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9lbmR0b2VuZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uZjQ2NzU2MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQu
cHkKQEAgLTAsMCArMSwxNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmln
aHQgMjAxMCwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlRlc3QgZm9yIGVuZC10by1lbmQuIiIiCisKK2ltcG9ydCBjb25maWcgICMg
dG8gZml4IHN5cy5wYXRoLgoraW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQgc29ja2V0
CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CisKKworY2xh
c3MgRW5kVG9FbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgZGVmIHNldFVwKHNlbGYpOgor
ICAgIHNlbGYudG9wX2RpciA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVsw
XSwgJy4uJykKKyAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRoLnBhdGhzZXAuam9p
bihzeXMucGF0aCkpCisgICAgc2VsZi5zdGFuZGFsb25lX2NvbW1hbmQgPSBvcy5wYXRoLmpvaW4o
c2VsZi50b3BfZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdtb2RfcHl3ZWJzb2NrZXQnLCAnc3RhbmRhbG9uZS5weScpCisgICAgc2VsZi5lY2hvX2NsaWVu
dF9jb21tYW5kID0gb3MucGF0aC5qb2luKHNlbGYudG9wX2RpciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUnLCAnZWNob19jbGllbnQucHknKQor
ICAgIHNlbGYuZG9jdW1lbnRfcm9vdCA9IG9zLnBhdGguam9pbihzZWxmLnRvcF9kaXIsICdleGFt
cGxlJykKKyAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgcy5iaW5kKCgnMTI3LjAuMC4xJywg
MCkpCisgICAgKF8sIHNlbGYudGVzdF9wb3J0KSA9IHMuZ2V0c29ja25hbWUoKQorICAgIHMuY2xv
c2UoKQorCisgIGRlZiBfcnVuX3NlcnZlcihzZWxmLCBjb21tYW5kbGluZSk6CisgICAgcmV0dXJu
IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlXSArIGNvbW1hbmRsaW5lLCBjbG9zZV9m
ZHM9VHJ1ZSkKKworICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgorICAgIGlmIHN5cy5w
bGF0Zm9ybSBpbiAoJ3dpbjMyJywgJ2N5Z3dpbicpOgorICAgICAgc3VicHJvY2Vzcy5jYWxsKCgn
dGFza2tpbGwuZXhlJywgJy9mJywgJy9waWQnLCBzdHIocGlkKSksIGNsb3NlX2Zkcz1UcnVlKQor
ICAgIGVsc2U6CisgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCisKKyAgZGVmIF9y
dW5fY2xpZW50KHNlbGYsIGNvbW1hbmRsaW5lKToKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3Bl
bihbc3lzLmV4ZWN1dGFibGVdICsgY29tbWFuZGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rk
ZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZV9m
ZHM9VHJ1ZSkKKworICBkZWYgX2dldF9jbGllbnRfb3V0cHV0KHNlbGYsIGNsaWVudCk6CisgICAg
b3V0ID0gJycKKyAgICB3aGlsZSBjbGllbnQucmV0dXJuY29kZSBpcyBOb25lOgorICAgICAgb3V0
ICs9IGNsaWVudC5zdGRvdXQucmVhZCgpCisgICAgICBjbGllbnQucG9sbCgpCisgICAgcmV0dXJu
IG91dAorCisgIGRlZiB0ZXN0X2VjaG8oc2VsZik6CisgICAgdHJ5OgorICAgICAgc2VydmVyID0g
c2VsZi5fcnVuX3NlcnZlcigKKyAgICAgICAgICBbc2VsZi5zdGFuZGFsb25lX2NvbW1hbmQsICct
cCcsIHN0cihzZWxmLnRlc3RfcG9ydCksCisgICAgICAgICAgICctZCcsIHNlbGYuZG9jdW1lbnRf
cm9vdF0pCisgICAgICBjbGllbnQgPSBzZWxmLl9ydW5fY2xpZW50KAorICAgICAgICAgIFtzZWxm
LmVjaG9fY2xpZW50X2NvbW1hbmQsICctcCcsIHN0cihzZWxmLnRlc3RfcG9ydCksCisgICAgICAg
ICAgICctcycsICdsb2NhbGhvc3QnLCAnLW8nLCAnaHR0cDovL2xvY2FsaG9zdCcsCisgICAgICAg
ICAgICctcicsICcvZWNobycsICctbScsICd0ZXN0J10pCisgICAgICBhY3R1YWwgPSBzZWxmLl9n
ZXRfY2xpZW50X291dHB1dChjbGllbnQpCisgICAgICBzZWxmLmFzc2VydEVxdWFsKCdTZW5kOiB0
ZXN0XG5SZWN2OiB0ZXN0XG5DbG9zaW5nIGhhbmRzaGFrZVxuJywgYWN0dWFsKQorICAgICAgY2xp
ZW50LndhaXQoKQorICAgIGZpbmFsbHk6CisgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVy
LnBpZCkKKworICBkZWYgdGVzdF9lY2hvX3NlcnZlcl9jbG9zZShzZWxmKToKKyAgICB0cnk6Cisg
ICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKAorICAgICAgICAgIFtzZWxmLnN0YW5kYWxv
bmVfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYudGVzdF9wb3J0KSwKKyAgICAgICAgICAgJy1kJywg
c2VsZi5kb2N1bWVudF9yb290XSkKKyAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9jbGllbnQoCisg
ICAgICAgICAgW3NlbGYuZWNob19jbGllbnRfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYudGVzdF9w
b3J0KSwKKyAgICAgICAgICAgJy1zJywgJ2xvY2FsaG9zdCcsICctbycsICdodHRwOi8vbG9jYWxo
b3N0JywKKyAgICAgICAgICAgJy1yJywgJy9lY2hvJywgJy1tJywgJ3Rlc3QsR29vZGJ5ZSddKQor
ICAgICAgYWN0dWFsID0gc2VsZi5fZ2V0X2NsaWVudF9vdXRwdXQoY2xpZW50KQorICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnU2VuZDogdGVzdFxuUmVjdjogdGVzdFxuJworICAgICAgICAgICAgICAg
ICAgICAgICAnU2VuZDogR29vZGJ5ZVxuUmVjdjogR29vZGJ5ZVxuJywgYWN0dWFsKQorICAgICAg
Y2xpZW50LndhaXQoKQorICAgIGZpbmFsbHk6CisgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2Vy
dmVyLnBpZCkKKworICBkZWYgdGVzdF9lY2hvX2RyYWZ0NzUoc2VsZik6CisgICAgdHJ5OgorICAg
ICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigKKyAgICAgICAgICBbc2VsZi5zdGFuZGFsb25l
X2NvbW1hbmQsICctcCcsIHN0cihzZWxmLnRlc3RfcG9ydCksCisgICAgICAgICAgICctZCcsIHNl
bGYuZG9jdW1lbnRfcm9vdCwKKyAgICAgICAgICAgJy0tYWxsb3ctZHJhZnQ3NSddKQorICAgICAg
Y2xpZW50ID0gc2VsZi5fcnVuX2NsaWVudCgKKyAgICAgICAgICBbc2VsZi5lY2hvX2NsaWVudF9j
b21tYW5kLCAnLXAnLCBzdHIoc2VsZi50ZXN0X3BvcnQpLAorICAgICAgICAgICAnLXMnLCAnbG9j
YWxob3N0JywgJy1vJywgJ2h0dHA6Ly9sb2NhbGhvc3QnLAorICAgICAgICAgICAnLXInLCAnL2Vj
aG8nLCAnLW0nLCAndGVzdCcsCisgICAgICAgICAgICctLWRyYWZ0NzUnXSkKKyAgICAgIGFjdHVh
bCA9IHNlbGYuX2dldF9jbGllbnRfb3V0cHV0KGNsaWVudCkKKyAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ1NlbmQ6IHRlc3RcblJlY3Y6IHRlc3RcbicsIGFjdHVhbCkKKyAgICAgIGNsaWVudC53YWl0
KCkKKyAgICBmaW5hbGx5OgorICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCisK
KyAgZGVmIHRlc3RfZWNob19zZXJ2ZXJfY2xvc2VfZHJhZnQ3NShzZWxmKToKKyAgICB0cnk6Cisg
ICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2VydmVyKAorICAgICAgICAgIFtzZWxmLnN0YW5kYWxv
bmVfY29tbWFuZCwgJy1wJywgc3RyKHNlbGYudGVzdF9wb3J0KSwKKyAgICAgICAgICAgJy1kJywg
c2VsZi5kb2N1bWVudF9yb290LAorICAgICAgICAgICAnLS1hbGxvdy1kcmFmdDc1J10pCisgICAg
ICBjbGllbnQgPSBzZWxmLl9ydW5fY2xpZW50KAorICAgICAgICAgIFtzZWxmLmVjaG9fY2xpZW50
X2NvbW1hbmQsICctcCcsIHN0cihzZWxmLnRlc3RfcG9ydCksCisgICAgICAgICAgICctcycsICds
b2NhbGhvc3QnLCAnLW8nLCAnaHR0cDovL2xvY2FsaG9zdCcsCisgICAgICAgICAgICctcicsICcv
ZWNobycsICctbScsICd0ZXN0LEdvb2RieWUnLAorICAgICAgICAgICAnLS1kcmFmdDc1J10pCisg
ICAgICBhY3R1YWwgPSBzZWxmLl9nZXRfY2xpZW50X291dHB1dChjbGllbnQpCisgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdTZW5kOiB0ZXN0XG5SZWN2OiB0ZXN0XG4nCisgICAgICAgICAgICAgICAg
ICAgICAgICdTZW5kOiBHb29kYnllXG5SZWN2OiBHb29kYnllXG4nLCBhY3R1YWwpCisgICAgICBj
bGllbnQud2FpdCgpCisgICAgZmluYWxseToKKyAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2
ZXIucGlkKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hha2UucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5w
eQppbmRleCA4YmYwN2JlLi43MjM3ODY3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X2hhbmRzaGFrZS5weQpAQCAtNDMsMTAwICs0MywxMjIgQEAgaW1wb3J0IG1vY2sK
IAogX0dPT0RfUkVRVUVTVCA9ICgKICAgICA4MCwKKyAgICAnR0VUJywKICAgICAnL2RlbW8nLAog
ICAgIHsKLSAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlv
bic6J1VwZ3JhZGUnLAogICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAgICAgICAgJ0Nv
bm5lY3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6JzEyOTk4
IDUgWTMgMSAgLlAwMCcsCisgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxl
JywKKyAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAnU2VjLVdlYlNvY2tl
dC1LZXkxJzonNCBAMSAgNDY1NDZ4VyUwbCAxIDUnLAogICAgICAgICAnT3JpZ2luJzonaHR0cDov
L2V4YW1wbGUuY29tJywKLSAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0g
ICAgfQorICAgIH0sCisgICAgJ15uOmRzWzRVJwogKQogCiBfR09PRF9SRVNQT05TRV9ERUZBVUxU
X1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFr
ZVxyXG4nCisgICAgJ0hUVFAvMS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJc
bicKICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKICAgICAnQ29ubmVjdGlvbjogVXBncmFk
ZVxyXG4nCi0gICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0g
ICAgJ1dlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAn
V2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJykKKyAgICAnU2VjLVdl
YlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKKyAgICAnU2VjLVdl
YlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCisgICAgJ1NlYy1XZWJTb2Nr
ZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCisgICAgJ1xyXG4nCisgICAgJzhqS1NcJ3k6RypDbyxX
eGEtJykKIAogX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2Vi
IFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJworICAgICdIVFRQLzEuMSAxMDEgV2ViU29j
a2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCiAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4n
CiAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdXZWJTb2NrZXQtT3JpZ2luOiBo
dHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdzczovL2V4
YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4n
Ci0gICAgJ1xyXG4nKQorICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxl
LmNvbS9kZW1vXHJcbicKKyAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nCisgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCisgICAg
J1xyXG4nCisgICAgJzhqS1NcJ3k6RypDbyxXeGEtJykKIAogX0dPT0RfUkVRVUVTVF9OT05ERUZB
VUxUX1BPUlQgPSAoCiAgICAgODA4MSwKKyAgICAnR0VUJywKICAgICAnL2RlbW8nLAogICAgIHsK
LSAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlvbic6J1Vw
Z3JhZGUnLAogICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tOjgwODEnLAorICAgICAgICAnQ29u
bmVjdGlvbic6J1VwZ3JhZGUnLAorICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzonMTI5OTgg
NSBZMyAxICAuUDAwJywKKyAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUn
LAorICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCisgICAgICAgICdTZWMtV2ViU29ja2V0
LUtleTEnOic0IEAxICA0NjU0NnhXJTBsIDEgNScsCiAgICAgICAgICdPcmlnaW4nOidodHRwOi8v
ZXhhbXBsZS5jb20nLAotICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKLSAg
ICB9CisgICAgfSwKKyAgICAnXm46ZHNbNFUnCiApCiAKIF9HT09EX1JFU1BPTlNFX05PTkRFRkFV
TFRfUE9SVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNo
YWtlXHJcbicKKyAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vc
clxuJwogICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwogICAgICdDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbicKLSAgICAnV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicK
LSAgICAnV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4n
Ci0gICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAnXHJcbicpCisgICAg
J1NlYy1XZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicK
KyAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCisgICAg
J1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCisgICAgJ1xyXG4nCisgICAgJzhq
S1NcJ3k6RypDbyxXeGEtJykKIAogX0dPT0RfUkVTUE9OU0VfU0VDVVJFX05PTkRFRiA9ICgKLSAg
ICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKKyAgICAn
SFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwogICAgICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJwogICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAn
V2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnV2ViU29ja2V0
LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbTo4MDgxL2RlbW9cclxuJwotICAgICdXZWJTb2Nr
ZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nKQorICAgICdTZWMtV2ViU29ja2V0
LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbTo4MDgxL2RlbW9cclxuJworICAgICdTZWMtV2Vi
U29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKKyAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicKKyAgICAnOGpLU1wneTpHKkNvLFd4
YS0nKQogCiBfR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0gKAogICAgIDgwLAorICAgICdHRVQn
LAogICAgICcvZGVtbycsCiAgICAgewotICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCi0g
ICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCiAgICAgICAgICdIb3N0JzonZXhhbXBsZS5j
b20nLAorICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAorICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXkyJzonMTI5OTggNSBZMyAxICAuUDAwJywKKyAgICAgICAgJ1VwZ3JhZGUnOidXZWJT
b2NrZXQnLAorICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzonNCBAMSAgNDY1NDZ4VyUwbCAx
IDUnLAogICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9CisgICAg
fSwKKyAgICAnXm46ZHNbNFUnCiApCiAKIF9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MID0gKAot
ICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJworICAg
ICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCiAgICAgJ1Vw
Z3JhZGU6IFdlYlNvY2tldFxyXG4nCiAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAg
ICdXZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdXZWJTb2Nr
ZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCi0gICAgJ1xyXG4nKQorICAg
ICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxuJworICAg
ICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKKyAgICAnXHJc
bicKKyAgICAnOGpLU1wneTpHKkNvLFd4YS0nKQogCiBfR09PRF9SRVFVRVNUX1dJVEhfT1BUSU9O
QUxfSEVBREVSUyA9ICgKICAgICA4MCwKKyAgICAnR0VUJywKICAgICAnL2RlbW8nLAogICAgIHsK
LSAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlvbic6J1Vw
Z3JhZGUnLAogICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKLSAgICAgICAgJ09yaWdpbic6
J2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1w
bGUnLAotICAgICAgICAnQUtleSc6J0FWYWx1ZScsCisgICAgICAgICdDb25uZWN0aW9uJzonVXBn
cmFkZScsCisgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOicxMjk5OCA1IFkzIDEgIC5QMDAn
LAogICAgICAgICAnRW1wdHlWYWx1ZSc6JycsCi0gICAgfQorICAgICAgICAnU2VjLVdlYlNvY2tl
dC1Qcm90b2NvbCc6J3NhbXBsZScsCisgICAgICAgICdBS2V5JzonQVZhbHVlJywKKyAgICAgICAg
J1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzonNCBA
MSAgNDY1NDZ4VyUwbCAxIDUnLAorICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29t
JywKKyAgICB9LAorICAgICdebjpkc1s0VScKICkKIAogX0JBRF9SRVFVRVNUUyA9ICgKICAgICAo
ICAjIEhUVFAgcmVxdWVzdAogICAgICAgICA4MCwKKyAgICAgICAgJ0dFVCcsCiAgICAgICAgICcv
ZGVtbycsCiAgICAgICAgIHsKICAgICAgICAgICAgICdIb3N0Jzond3d3Lmdvb2dsZS5jb20nLApA
QCAtMTUyLDIzOCArMTc0LDEyNCBAQCBfQkFEX1JFUVVFU1RTID0gKAogICAgICAgICAgICAgJ0Nv
bm5lY3Rpb24nOidrZWVwLWFsaXZlJywKICAgICAgICAgfQogICAgICksCi0gICAgKCAgIyBNaXNz
aW5nIFVwZ3JhZGUKKyAgICAoICAjIFdyb25nIG1ldGhvZAogICAgICAgICA4MCwKKyAgICAgICAg
J1BPU1QnLAogICAgICAgICAnL2RlbW8nLAogICAgICAgICB7CisgICAgICAgICAgICAnSG9zdCc6
J2V4YW1wbGUuY29tJywKICAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzonMTI5OTggNSBZMyAxICAuUDAwJywKKyAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAgICAgICdV
cGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOic0
IEAxICA0NjU0NnhXJTBsIDEgNScsCisgICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1w
bGUuY29tJywKKyAgICAgICAgfSwKKyAgICAgICAgJ15uOmRzWzRVJworICAgICksCisgICAgKCAg
IyBNaXNzaW5nIFVwZ3JhZGUKKyAgICAgICAgODAsCisgICAgICAgICdHRVQnLAorICAgICAgICAn
L2RlbW8nLAorICAgICAgICB7CiAgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAg
ICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1LZXkyJzonMTI5OTggNSBZMyAxICAuUDAwJywKKyAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEn
Oic0IEAxICA0NjU0NnhXJTBsIDEgNScsCiAgICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4
YW1wbGUuY29tJywKLSAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAot
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICdebjpkc1s0VScKICAgICApLAogICAgICgg
ICMgV3JvbmcgVXBncmFkZQogICAgICAgICA4MCwKKyAgICAgICAgJ0dFVCcsCiAgICAgICAgICcv
ZGVtbycsCiAgICAgICAgIHsKLSAgICAgICAgICAgICdVcGdyYWRlJzonTm9uV2ViU29ja2V0JywK
LSAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCiAgICAgICAgICAgICAnSG9zdCc6
J2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAg
ICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzonMTI5OTggNSBZMyAxICAuUDAwJywKKyAgICAg
ICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAgICAgICdV
cGdyYWRlJzonTm9uV2ViU29ja2V0JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEn
Oic0IEAxICA0NjU0NnhXJTBsIDEgNScsCiAgICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4
YW1wbGUuY29tJywKLSAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAot
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICdebjpkc1s0VScKICAgICApLAogICAgICgg
ICMgRW1wdHkgV2ViU29ja2V0LVByb3RvY29sCiAgICAgICAgIDgwLAorICAgICAgICAnR0VUJywK
ICAgICAgICAgJy9kZW1vJywKICAgICAgICAgewotICAgICAgICAgICAgJ1VwZ3JhZGUnOidXZWJT
b2NrZXQnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKICAgICAgICAgICAg
ICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRl
JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOicxMjk5OCA1IFkzIDEgIC5QMDAn
LAorICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOicnLAorICAgICAgICAgICAg
J1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6
JzQgQDEgIDQ2NTQ2eFclMGwgMSA1JywKICAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhh
bXBsZS5jb20nLAotICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6JycsCi0gICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgJ15uOmRzWzRVJwogICAgICksCiAgICAgKCAgIyBXcm9u
ZyBwb3J0IG51bWJlciBmb3JtYXQKICAgICAgICAgODAsCisgICAgICAgICdHRVQnLAogICAgICAg
ICAnL2RlbW8nLAogICAgICAgICB7Ci0gICAgICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcs
Ci0gICAgICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAogICAgICAgICAgICAgJ0hvc3Qn
OidleGFtcGxlLmNvbToweDUwJywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScs
CisgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzonMTI5OTggNSBZMyAxICAuUDAwJywK
KyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAg
ICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtl
eTEnOic0IEAxICA0NjU0NnhXJTBsIDEgNScsCiAgICAgICAgICAgICAnT3JpZ2luJzonaHR0cDov
L2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUn
LAotICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICdebjpkc1s0VScKICAgICApLAogICAg
ICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaAogICAgICAgICA4MDgwLAorICAg
ICAgICAnR0VUJywKICAgICAgICAgJy9kZW1vJywKICAgICAgICAgewotICAgICAgICAgICAgJ1Vw
Z3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywK
ICAgICAgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ0Nvbm5lY3Rp
b24nOidVcGdyYWRlJywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOicxMjk5OCA1
IFkzIDEgIC5QMDAnLAorICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1w
bGUnLAorICAgICAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAgICAgJ1Nl
Yy1XZWJTb2NrZXQtS2V5MSc6JzQgQDEgIDQ2NTQ2eFclMGwgMSA1JywKICAgICAgICAgICAgICdP
cmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90
b2NvbCc6J3NhbXBsZScsCi0gICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgJ15uOmRzWzRV
JwogICAgICksCiAgICAgKCAgIyBJbGxlZ2FsIFdlYlNvY2tldC1Qcm90b2NvbAogICAgICAgICA4
MCwKKyAgICAgICAgJ0dFVCcsCiAgICAgICAgICcvZGVtbycsCiAgICAgICAgIHsKLSAgICAgICAg
ICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBn
cmFkZScsCiAgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdD
b25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzon
MTI5OTggNSBZMyAxICAuUDAwJywKKyAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29s
JzonaWxsZWdhbFx4MDlwcm90b2NvbCcsCisgICAgICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tl
dCcsCisgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzonNCBAMSAgNDY1NDZ4VyUwbCAx
IDUnLAogICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAg
ICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAg
IH0KLSAgICApLAotKQotCi1fU1RSSUNUTFlfR09PRF9SRVFVRVNUUyA9ICgKLSAgICAoCi0gICAg
ICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9z
dDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29t
XHJcbicsCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgV2ViU29ja2V0LVByb3Rv
Y29sCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6
IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAg
ICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4
YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4n
LAotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAjIFdlYlNvY2tldC1Qcm90b2NvbCBh
bmQgQ29va2llCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1Vw
Z3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
LAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0
cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBs
ZVxyXG4nLAotICAgICAgICAnQ29va2llOiB4eXpcclxuJwotICAgICAgICAnXHJcbicsCi0gICAg
KSwKLSAgICAoICAjIENvb2tpZQotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0g
ICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdP
cmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29va2llOiBhYmMveHl6
XHJcbicKLSAgICAgICAgJ0Nvb2tpZTI6ICRWZXJzaW9uPTFcclxuJwotICAgICAgICAnQ29va2ll
OiBhYmNcclxuJwotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoCi0gICAgICAgICdHRVQg
LyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAg
ICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNv
bVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAg
ICAgJ1xyXG4nLAotICAgICksCi0pCi0KLV9OT1RfU1RSSUNUTFlfR09PRF9SRVFVRVNUUyA9ICgK
LSAgICAoICAjIEV4dHJhIHNwYWNlIGFmdGVyIEdFVAotICAgICAgICAnR0VUICAvZGVtbyBIVFRQ
LzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4n
LAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xy
XG4nLAotICAgICksCi0gICAgKCAgIyBSZXNvdXJjZSBuYW1lIGRvZXNuJ3Qgc3RhdCB3aXRoICcv
JwotICAgICAgICAnR0VUIGRlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdl
YlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAg
ICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1w
bGUuY29tXHJcbicsCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgTm8gc3BhY2Ug
YWZ0ZXIgOgotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdy
YWRlOldlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAot
ICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDov
L2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgTG93
ZXIgY2FzZSBVcGdyYWRlIGhlYWRlcgotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbics
Ci0gICAgICAgICd1cGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAg
ICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAg
KSwKLSAgICAoICAjIENvbm5lY3Rpb24gY29tZXMgYmVmb3JlIFVwZ3JhZGUKLSAgICAgICAgJ0dF
VCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
LAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdIb3N0OiBleGFt
cGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywK
LSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBPcmlnaW4gY29tZXMgYmVmb3JlIEhv
c3QKLSAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAg
ICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnSG9zdDogZXhh
bXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBIb3N0IGNv
bnRpbnVlZCB0byB0aGUgbmV4dCBsaW5lCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxu
JywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlv
bjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZVxyXG4nLAotICAgICAgICAn
IC5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0g
ICAgICAgICdcclxuJywKLSAgICApLAotICAgICggIyBDb29raWUgY29tZXMgYmVmb3JlIFdlYlNv
Y2tldC1Qcm90b2NvbAotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAg
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46
IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29va2llOiB4eXpcclxuJwotICAg
ICAgICAnV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJywKLSAgICAgICAgJ1xyXG4nLAot
ICAgICksCi0gICAgKCAgIyBVbmtub3duIGhlYWRlcgotICAgICAgICAnR0VUIC9kZW1vIEhUVFAv
MS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nv
bm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbics
Ci0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29u
dGVudC1UeXBlOiB0ZXh0L2h0bWxcclxuJwotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAo
ICAjIENvb2tpZSB3aXRoIGNvbnRpbnVhdGlvbiBsaW5lcwotICAgICAgICAnR0VUIC9kZW1vIEhU
VFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAg
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJc
bicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAn
Q29va2llOiB4eXpcclxuJywKLSAgICAgICAgJyBhYmNcclxuJywKLSAgICAgICAgJyBkZWZnXHJc
bicsCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgV3JvbmctY2FzZSBjb29raWUK
LSAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2Vi
U29ja2V0XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAg
ICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBs
ZS5jb21cclxuJywKLSAgICAgICAgJ2Nvb2tpZTogYWJjL3h5elxyXG4nCi0gICAgICAgICdcclxu
JywKLSAgICApLAotICAgICggICMgQ29va2llLCBubyBzcGFjZSBhZnRlciBjb2xvbgotICAgICAg
ICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRc
clxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6
IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxy
XG4nLAotICAgICAgICAnQ29va2llOmFiYy94eXpcclxuJwotICAgICAgICAnXHJcbicsCisgICAg
ICAgIH0sCisgICAgICAgICdebjpkc1s0VScKICAgICApLAogKQogCiAKIGRlZiBfY3JlYXRlX3Jl
cXVlc3QocmVxdWVzdF9kZWYpOgotICAgIGNvbm4gPSBtb2NrLk1vY2tDb25uKCcnKQorICAgIGRh
dGEgPSAnJworICAgIGlmIGxlbihyZXF1ZXN0X2RlZikgPiA0OgorICAgICAgICBkYXRhID0gcmVx
dWVzdF9kZWZbNF0KKyAgICBjb25uID0gbW9jay5Nb2NrQ29ubihkYXRhKQogICAgIGNvbm4ubG9j
YWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVlc3RfZGVmWzBdKQogICAgIHJldHVybiBtb2NrLk1v
Y2tSZXF1ZXN0KAotICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmWzFdLAotICAgICAgICAgICAg
aGVhZGVyc19pbj1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgICAgIGNvbm5lY3Rpb249Y29ubikK
KyAgICAgICAgbWV0aG9kPXJlcXVlc3RfZGVmWzFdLAorICAgICAgICB1cmk9cmVxdWVzdF9kZWZb
Ml0sCisgICAgICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWZbM10sCisgICAgICAgIGNvbm5lY3Rp
b249Y29ubikKIAogCiBkZWYgX2NyZWF0ZV9nZXRfbWVtb3JpemVkX2xpbmVzKGxpbmVzKToKQEAg
LTQwNCwyMSArMzEyLDIxIEBAIGRlZiBfY3JlYXRlX3JlcXVlc3RzX3dpdGhfbGluZXMocmVxdWVz
dF9saW5lc19zZXQpOgogCiBjbGFzcyBIYW5kc2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgZGVmIHRlc3RfdmFsaWRhdGVfcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIGhhbmRzaGFr
ZS5fdmFsaWRhdGVfcHJvdG9jb2woJ3NhbXBsZScpICAjIHNob3VsZCBzdWNjZWVkLgotICAgICAg
ICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sKCdTYW1wbGUnKSAgIyBzaG91bGQgc3VjY2Vl
ZC4KLSAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCgnc2FtcGxlXHgyMHByb3Rv
Y29sJykgICMgc2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJv
dG9jb2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpICAjIHNob3VsZCBzdWNjZWVkLgorICAgICAgICBo
YW5kc2hha2UudmFsaWRhdGVfcHJvdG9jb2woJ3NhbXBsZScpICAjIHNob3VsZCBzdWNjZWVkLgor
ICAgICAgICBoYW5kc2hha2UudmFsaWRhdGVfcHJvdG9jb2woJ1NhbXBsZScpICAjIHNob3VsZCBz
dWNjZWVkLgorICAgICAgICBoYW5kc2hha2UudmFsaWRhdGVfcHJvdG9jb2woJ3NhbXBsZVx4MjBw
cm90b2NvbCcpICAjIHNob3VsZCBzdWNjZWVkLgorICAgICAgICBoYW5kc2hha2UudmFsaWRhdGVf
cHJvdG9jb2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpICAjIHNob3VsZCBzdWNjZWVkLgogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2wsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRzaGFrZS52YWxpZGF0ZV9wcm90b2NvbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5I
YW5kc2hha2VFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlLl92YWxp
ZGF0ZV9wcm90b2NvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlLnZhbGlk
YXRlX3Byb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxlXHgxOXByb3Rv
Y29sJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29s
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2UudmFsaWRhdGVfcHJvdG9jb2ws
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2wsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhhbmRzaGFrZS52YWxpZGF0ZV9wcm90b2NvbCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHUnXHU2NWU1XHU2NzJjJykKIApAQCAtNDg5LDIyICszOTcsNiBAQCBjbGFzcyBIYW5k
c2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQogICAgICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLCBoYW5kc2hha2VyLmRv
X2hhbmRzaGFrZSkKIAotICAgIGRlZiB0ZXN0X3N0cmljdGx5X2dvb2RfcmVxdWVzdHMoc2VsZik6
Ci0gICAgICAgIGZvciByZXF1ZXN0IGluIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhfU1RS
SUNUTFlfR09PRF9SRVFVRVNUUyk6Ci0gICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtlciA9IGhh
bmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKLSAgICAg
ICAgICAgIHN0cmljdF9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0KLSAgICBkZWYgdGVzdF9u
b3Rfc3RyaWN0bHlfZ29vZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4g
X2NyZWF0ZV9yZXF1ZXN0c193aXRoX2xpbmVzKF9OT1RfU1RSSUNUTFlfR09PRF9SRVFVRVNUUyk6
Ci0gICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJl
cXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmljdF9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotCiAKIGlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRz
aGFrZV9kcmFmdDc1LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hha2VfZHJhZnQ3NS5weQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjhjZDNhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9o
YW5kc2hha2VfZHJhZnQ3NS5weQpAQCAtMCwwICsxLDQ5NCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCisjCisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJp
YnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVs
ZS4iIiIKKworCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IGNvbmZpZyAgIyBUaGlzIG11c3Qg
YmUgaW1wb3J0ZWQgYmVmb3JlIG1vZF9weXdlYnNvY2tldC4KK2Zyb20gbW9kX3B5d2Vic29ja2V0
LmhhbmRzaGFrZSBpbXBvcnQgZHJhZnQ3NSBhcyBoYW5kc2hha2UKKworaW1wb3J0IG1vY2sKKwor
CitfR09PRF9SRVFVRVNUID0gKAorICAgIDgwLAorICAgICcvZGVtbycsCisgICAgeworICAgICAg
ICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCisgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScs
CisgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAnT3JpZ2luJzonaHR0cDov
L2V4YW1wbGUuY29tJywKKyAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCisg
ICAgfQorKQorCitfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQgPSAoCisgICAgJ0hUVFAvMS4x
IDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCisgICAgJ1VwZ3JhZGU6IFdl
YlNvY2tldFxyXG4nCisgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgICdXZWJTb2Nr
ZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJworICAgICdXZWJTb2NrZXQtTG9jYXRp
b246IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCisgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDog
c2FtcGxlXHJcbicKKyAgICAnXHJcbicpCisKK19HT09EX1JFU1BPTlNFX1NFQ1VSRSA9ICgKKyAg
ICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKKyAgICAn
VXBncmFkZTogV2ViU29ja2V0XHJcbicKKyAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCisg
ICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCisgICAgJ1dlYlNv
Y2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCisgICAgJ1dlYlNvY2tl
dC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicpCisKK19HT09EX1JFUVVFU1RfTk9O
REVGQVVMVF9QT1JUID0gKAorICAgIDgwODEsCisgICAgJy9kZW1vJywKKyAgICB7CisgICAgICAg
ICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywK
KyAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbTo4MDgxJywKKyAgICAgICAgJ09yaWdpbic6J2h0
dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUn
LAorICAgIH0KKykKKworX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JUID0gKAorICAgICdI
VFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJworICAgICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJworICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKKyAgICAn
V2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKKyAgICAnV2ViU29ja2V0
LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCisgICAgJ1dlYlNvY2tl
dC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicpCisKK19HT09EX1JFU1BPTlNFX1NF
Q1VSRV9OT05ERUYgPSAoCisgICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhh
bmRzaGFrZVxyXG4nCisgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCisgICAgJ0Nvbm5lY3Rp
b246IFVwZ3JhZGVcclxuJworICAgICdXZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5j
b21cclxuJworICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tOjgwODEv
ZGVtb1xyXG4nCisgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJc
bicpCisKK19HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wgPSAoCisgICAgODAsCisgICAgJy9kZW1v
JywKKyAgICB7CisgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgJ0Nvbm5l
Y3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbScsCisgICAgICAg
ICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAorICAgIH0KKykKKworX0dPT0RfUkVTUE9O
U0VfTk9fUFJPVE9DT0wgPSAoCisgICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29s
IEhhbmRzaGFrZVxyXG4nCisgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCisgICAgJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJworICAgICdXZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBs
ZS5jb21cclxuJworICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVt
b1xyXG4nCisgICAgJ1xyXG4nKQorCitfR09PRF9SRVFVRVNUX1dJVEhfT1BUSU9OQUxfSEVBREVS
UyA9ICgKKyAgICA4MCwKKyAgICAnL2RlbW8nLAorICAgIHsKKyAgICAgICAgJ1VwZ3JhZGUnOidX
ZWJTb2NrZXQnLAorICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAorICAgICAgICAnSG9z
dCc6J2V4YW1wbGUuY29tJywKKyAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScs
CisgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAorICAgICAgICAnQUtleSc6
J0FWYWx1ZScsCisgICAgICAgICdFbXB0eVZhbHVlJzonJywKKyAgICB9CispCisKK19CQURfUkVR
VUVTVFMgPSAoCisgICAgKCAgIyBIVFRQIHJlcXVlc3QKKyAgICAgICAgODAsCisgICAgICAgICcv
ZGVtbycsCisgICAgICAgIHsKKyAgICAgICAgICAgICdIb3N0Jzond3d3Lmdvb2dsZS5jb20nLAor
ICAgICAgICAgICAgJ1VzZXItQWdlbnQnOidNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRl
bCBNYWMgT1MgWCAxMC41OycKKyAgICAgICAgICAgICAgICAgICAgICAgICAnIGVuLVVTOyBydjox
LjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4zJworICAgICAgICAgICAgICAgICAg
ICAgICAgICcgR1RCNiBHVEJBJywKKyAgICAgICAgICAgICdBY2NlcHQnOid0ZXh0L2h0bWwsYXBw
bGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtxPTAuOSwnCisgICAgICAgICAgICAg
ICAgICAgICAnKi8qO3E9MC44JywKKyAgICAgICAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOidlbi11
cyxlbjtxPTAuNScsCisgICAgICAgICAgICAnQWNjZXB0LUVuY29kaW5nJzonZ3ppcCxkZWZsYXRl
JywKKyAgICAgICAgICAgICdBY2NlcHQtQ2hhcnNldCc6J0lTTy04ODU5LTEsdXRmLTg7cT0wLjcs
KjtxPTAuNycsCisgICAgICAgICAgICAnS2VlcC1BbGl2ZSc6JzMwMCcsCisgICAgICAgICAgICAn
Q29ubmVjdGlvbic6J2tlZXAtYWxpdmUnLAorICAgICAgICB9CisgICAgKSwKKyAgICAoICAjIE1p
c3NpbmcgVXBncmFkZQorICAgICAgICA4MCwKKyAgICAgICAgJy9kZW1vJywKKyAgICAgICAgewor
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgICAgICdIb3N0Jzon
ZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScs
CisgICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAgfQor
ICAgICksCisgICAgKCAgIyBXcm9uZyBVcGdyYWRlCisgICAgICAgIDgwLAorICAgICAgICAnL2Rl
bW8nLAorICAgICAgICB7CisgICAgICAgICAgICAnVXBncmFkZSc6J05vbldlYlNvY2tldCcsCisg
ICAgICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAorICAgICAgICAgICAgJ0hvc3QnOidl
eGFtcGxlLmNvbScsCisgICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywK
KyAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAorICAgICAgICB9Cisg
ICAgKSwKKyAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90b2NvbAorICAgICAgICA4MCwKKyAg
ICAgICAgJy9kZW1vJywKKyAgICAgICAgeworICAgICAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2Nr
ZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgICAgICdI
b3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxl
LmNvbScsCisgICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonJywKKyAgICAgICAgfQor
ICAgICksCisgICAgKCAgIyBXcm9uZyBwb3J0IG51bWJlciBmb3JtYXQKKyAgICAgICAgODAsCisg
ICAgICAgICcvZGVtbycsCisgICAgICAgIHsKKyAgICAgICAgICAgICdVcGdyYWRlJzonV2ViU29j
a2V0JywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAn
SG9zdCc6J2V4YW1wbGUuY29tOjB4NTAnLAorICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9l
eGFtcGxlLmNvbScsCisgICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywK
KyAgICAgICAgfQorICAgICksCisgICAgKCAgIyBIZWFkZXIvY29ubmVjdGlvbiBwb3J0IG1pc21h
dGNoCisgICAgICAgIDgwODAsCisgICAgICAgICcvZGVtbycsCisgICAgICAgIHsKKyAgICAgICAg
ICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBn
cmFkZScsCisgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdP
cmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90
b2NvbCc6J3NhbXBsZScsCisgICAgICAgIH0KKyAgICApLAorICAgICggICMgSWxsZWdhbCBXZWJT
b2NrZXQtUHJvdG9jb2wKKyAgICAgICAgODAsCisgICAgICAgICcvZGVtbycsCisgICAgICAgIHsK
KyAgICAgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgICAgICdDb25uZWN0
aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAgICAg
ICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ1dlYlNv
Y2tldC1Qcm90b2NvbCc6J2lsbGVnYWxceDA5cHJvdG9jb2wnLAorICAgICAgICB9CisgICAgKSwK
KykKKworX1NUUklDVExZX0dPT0RfUkVRVUVTVFMgPSAoCisgICAgKAorICAgICAgICAnR0VUIC9k
ZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAg
ICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUu
Y29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAg
ICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIFdlYlNvY2tldC1Qcm90b2NvbAorICAgICAg
ICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRc
clxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6
IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxy
XG4nLAorICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJywKKyAgICAgICAg
J1xyXG4nLAorICAgICksCisgICAgKCAgIyBXZWJTb2NrZXQtUHJvdG9jb2wgYW5kIENvb2tpZQor
ICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRlOiBXZWJT
b2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAg
J0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nLAorICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJywKKyAg
ICAgICAgJ0Nvb2tpZTogeHl6XHJcbicKKyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKCAg
IyBDb29raWUKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBn
cmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbics
CisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRw
Oi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tpZTogYWJjL3h5elxyXG4nCisgICAg
ICAgICdDb29raWUyOiAkVmVyc2lvbj0xXHJcbicKKyAgICAgICAgJ0Nvb2tpZTogYWJjXHJcbicK
KyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKAorICAgICAgICAnR0VUIC8gSFRUUC8xLjFc
clxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAnQ29ubmVj
dGlvbjogVXBncmFkZVxyXG4nLAorICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKKyAg
ICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdcclxuJywK
KyAgICApLAorKQorCitfTk9UX1NUUklDVExZX0dPT0RfUkVRVUVTVFMgPSAoCisgICAgKCAgIyBF
eHRyYSBzcGFjZSBhZnRlciBHRVQKKyAgICAgICAgJ0dFVCAgL2RlbW8gSFRUUC8xLjFcclxuJywK
KyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAnQ29ubmVjdGlvbjog
VXBncmFkZVxyXG4nLAorICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAg
J09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdcclxuJywKKyAgICAp
LAorICAgICggICMgUmVzb3VyY2UgbmFtZSBkb2Vzbid0IHN0YXQgd2l0aCAnLycKKyAgICAgICAg
J0dFVCBkZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxu
JywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4
YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4n
LAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIE5vIHNwYWNlIGFmdGVyIDoKKyAg
ICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTpXZWJTb2Nr
ZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAgJ0hv
c3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNv
bVxyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIExvd2VyIGNhc2UgVXBn
cmFkZSBoZWFkZXIKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAn
dXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJc
bicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBo
dHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKCAg
IyBDb25uZWN0aW9uIGNvbWVzIGJlZm9yZSBVcGdyYWRlCisgICAgICAgICdHRVQgL2RlbW8gSFRU
UC8xLjFcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAg
J1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxu
JywKKyAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdc
clxuJywKKyAgICApLAorICAgICggICMgT3JpZ2luIGNvbWVzIGJlZm9yZSBIb3N0CisgICAgICAg
ICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxy
XG4nLAorICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAorICAgICAgICAnT3JpZ2lu
OiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJc
bicsCisgICAgICAgICdcclxuJywKKyAgICApLAorICAgICggICMgSG9zdCBjb250aW51ZWQgdG8g
dGhlIG5leHQgbGluZQorICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAg
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGVcclxuJywKKyAgICAgICAgJyAuY29tXHJcbics
CisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnXHJc
bicsCisgICAgKSwKKyAgICAoICMgQ29va2llIGNvbWVzIGJlZm9yZSBXZWJTb2NrZXQtUHJvdG9j
b2wKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAg
ICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhh
bXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tpZTogeHl6XHJcbicKKyAgICAgICAgJ1dlYlNv
Y2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicsCisgICAgICAgICdcclxuJywKKyAgICApLAorICAg
ICggICMgVW5rbm93biBoZWFkZXIKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAor
ICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAn
T3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0NvbnRlbnQtVHlwZTog
dGV4dC9odG1sXHJcbicKKyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKCAgIyBDb29raWUg
d2l0aCBjb250aW51YXRpb24gbGluZXMKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4n
LAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAg
ICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tpZTogeHl6
XHJcbicsCisgICAgICAgICcgYWJjXHJcbicsCisgICAgICAgICcgZGVmZ1xyXG4nLAorICAgICAg
ICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIFdyb25nLWNhc2UgY29va2llCisgICAgICAgICdH
RVQgL2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4n
LAorICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAorICAgICAgICAnSG9zdDogZXhh
bXBsZS5jb21cclxuJywKKyAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbics
CisgICAgICAgICdjb29raWU6IGFiYy94eXpcclxuJworICAgICAgICAnXHJcbicsCisgICAgKSwK
KyAgICAoICAjIENvb2tpZSwgbm8gc3BhY2UgYWZ0ZXIgY29sb24KKyAgICAgICAgJ0dFVCAvZGVt
byBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAg
ICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNv
bVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAg
ICAgJ0Nvb2tpZTphYmMveHl6XHJcbicKKyAgICAgICAgJ1xyXG4nLAorICAgICksCispCisKKwor
ZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6CisgICAgY29ubiA9IG1vY2suTW9ja0Nv
bm4oJycpCisgICAgY29ubi5sb2NhbF9hZGRyID0gKCcwLjAuMC4wJywgcmVxdWVzdF9kZWZbMF0p
CisgICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCisgICAgICAgICAgICB1cmk9cmVxdWVzdF9k
ZWZbMV0sCisgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVlc3RfZGVmWzJdLAorICAgICAgICAg
ICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3JlYXRlX2dldF9tZW1vcml6ZWRfbGluZXMo
bGluZXMpOgorICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKCk6CisgICAgICAgIHJldHVybiBs
aW5lcworICAgIHJldHVybiBnZXRfbWVtb3JpemVkX2xpbmVzCisKKworZGVmIF9jcmVhdGVfcmVx
dWVzdHNfd2l0aF9saW5lcyhyZXF1ZXN0X2xpbmVzX3NldCk6CisgICAgcmVxdWVzdHMgPSBbXQor
ICAgIGZvciBsaW5lcyBpbiByZXF1ZXN0X2xpbmVzX3NldDoKKyAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQorICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
Z2V0X21lbW9yaXplZF9saW5lcyA9IF9jcmVhdGVfZ2V0X21lbW9yaXplZF9saW5lcygKKyAgICAg
ICAgICAgICAgICBsaW5lcykKKyAgICAgICAgcmVxdWVzdHMuYXBwZW5kKHJlcXVlc3QpCisgICAg
cmV0dXJuIHJlcXVlc3RzCisKKworY2xhc3MgSGFuZHNoYWtlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgorICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9kZWZhdWx0X3BvcnQoc2VsZik6CisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVCkKKyAgICAgICAgaGFu
ZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCisgICAgICAg
IGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09P
RF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
ZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2luKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCd3czovL2V4YW1wbGUuY29tL2RlbW8nLCByZXF1ZXN0LndzX2xvY2F0aW9uKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisg
ICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9kZWZhdWx0X3BvcnQoc2VsZik6CisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVCkKKyAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHIgPSAoJzAuMC4wLjAnLCA0NDMpCisgICAgICAgIHJl
cXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQorICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhh
bmRzaGFrZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NFQ1VSRSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wp
CisKKyAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVmYXVsdF9wb3J0KHNlbGYpOgorICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9Q
T1JUKQorICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3Bh
dGNoZXIoKSkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX05PTkRFRkFVTFRfUE9SVCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICBk
ZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX25vbl9kZWZhdWx0X3BvcnQoc2VsZik6CisgICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9OT05ERUZBVUxUX1BP
UlQpCisgICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQorICAgICAgICBoYW5kc2hha2Vy
ID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BP
TlNFX1NFQ1VSRV9OT05ERUYsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUn
LCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2RlZmF1
bHRfbm9fcHJvdG9jb2woc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
X0dPT0RfUkVRVUVTVF9OT19QUk9UT0NPTCkKKyAgICAgICAgaGFuZHNoYWtlciA9IGhhbmRzaGFr
ZS5IYW5kc2hha2VyKHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCisgICAgICAgIGhhbmRzaGFrZXIuZG9faGFu
ZHNoYWtlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9OT19QUk9U
T0NPTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19wcm90
b2NvbCkKKworICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9vcHRpb25hbF9oZWFkZXJzKHNlbGYp
OgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfV0lUSF9P
UFRJT05BTF9IRUFERVJTKQorICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFr
ZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBVmFsdWUnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuaGVhZGVyc19pblsnQUtleSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCcnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlW
YWx1ZSddKQorCisgICAgZGVmIHRlc3RfYmFkX3JlcXVlc3RzKHNlbGYpOgorICAgICAgICBmb3Ig
cmVxdWVzdCBpbiBtYXAoX2NyZWF0ZV9yZXF1ZXN0LCBfQkFEX1JFUVVFU1RTKToKKyAgICAgICAg
ICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIo
KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJv
ciwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKyAgICBkZWYgdGVzdF9zdHJpY3RseV9nb29k
X3JlcXVlc3RzKHNlbGYpOgorICAgICAgICBmb3IgcmVxdWVzdCBpbiBfY3JlYXRlX3JlcXVlc3Rz
X3dpdGhfbGluZXMoX1NUUklDVExZX0dPT0RfUkVRVUVTVFMpOgorICAgICAgICAgICAgc3RyaWN0
X2hhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRj
aGVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRydWUpCisgICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQor
CisgICAgZGVmIHRlc3Rfbm90X3N0cmljdGx5X2dvb2RfcmVxdWVzdHMoc2VsZik6CisgICAgICAg
IGZvciByZXF1ZXN0IGluIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhfTk9UX1NUUklDVExZ
X0dPT0RfUkVRVUVTVFMpOgorICAgICAgICAgICAgc3RyaWN0X2hhbmRzaGFrZXIgPSBoYW5kc2hh
a2UuSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCisgICAgICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCisKKwor
CitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisKKyMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1
dGlsLnB5CmluZGV4IDE2Yjg4ZTAuLjc4ODZmNDQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXNndXRpbC5w
eQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkKQEAgLTQzLDEwICs0MywxNiBAQCBpbXBvcnQgbW9jawog
CiAKIGRlZiBfY3JlYXRlX3JlcXVlc3QocmVhZF9kYXRhKToKLSAgICByZXR1cm4gbW9jay5Nb2Nr
UmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKKyAgICByZXEgPSBt
b2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihyZWFkX2RhdGEpKQorICAg
IHJlcS5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCisgICAgcmVxLnNlcnZlcl90ZXJtaW5hdGVk
ID0gRmFsc2UKKyAgICByZXR1cm4gcmVxCiAKIGRlZiBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3Qo
KToKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Jsb2Nr
aW5nQ29ubigpKQorICAgIHJlcSA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1v
Y2tCbG9ja2luZ0Nvbm4oKSkKKyAgICByZXEuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQorICAg
IHJlcS5zZXJ2ZXJfdGVybWluYXRlZCA9IEZhbHNlCisgICAgcmV0dXJuIHJlcQogCiBjbGFzcyBN
ZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
KHNlbGYpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54396</attachid>
            <date>2010-04-27 01:33:57 -0700</date>
            <delta_ts>2010-05-05 23:11:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38034-20100427173355.patch</filename>
            <type>text/plain</type>
            <size>170026</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxNjdjNzg4YmI0OTcyMjY0ZTRlMDE0YjVmNzYxMTA3MjhjNzM3NjViLi41ZmM1NmE0
NzE3ZDUzOGMzNThkMGJhYzI3NjhiNGM2NjU1YmRiOTFhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDQtMjcgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiBweXdl
YnNvY2tldCAwLjUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4MDM0CisKKyAgICAgICAgUmVtb3ZlIHB5d2Vic29ja2V0IGZyb20gd2Via2l0cHkvdGhp
cmRwYXJ0eS4KKyAgICAgICAgTWFrZSBweXdlYnNvY2tldCBhdXRvaW5zdGFsbGVkLgorCisgICAg
ICAgICogU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXI6CisgICAgICAgICAg
QWRkIC0tb3V0cHV0LWRpciBvcHRpb24uCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdlYmtp
dC10ZXN0czoKKyAgICAgICAgICBVc2UgbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyLCBy
YXRoZXIgdGhhbiBkaXJlY3RseSBydW4gcHl3ZWJzb2NrZXQncyBzdGFuZGFsb25lLnB5LgorICAg
ICAgICAqIFNjcmlwdHMvcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXI6CisgICAgICAgICAgVXNl
IG5ldy1ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlciwgcmF0aGVyIHRoYW4gZGlyZWN0bHkgcnVu
IHB5d2Vic29ja2V0J3Mgc3RhbmRhbG9uZS5weS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisgICAgICAgICAgVXNlIGF1
dG9pbnN0YWxsZWQgcHl3ZWJzb2NrZXQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAgIEF1dG9pbnN0YWxsIHB5d2Vic29ja2V0Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0OiBSZW1vdmVk
LgorCiAyMDEwLTA0LTI2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIgYi9XZWJLaXRUb29scy9TY3JpcHRzL25l
dy1ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcgppbmRleCA4ZTRhZWFhYzgyY2E5NmFjNDU5YzY5
YjVkOTMxYjczMDlkODJkMmYzLi5lNDNhYmFiOTQ4YTEyMmVkYjE1NjliYzNhODQyNWJjYmFkNmU4
YTVlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNv
Y2tldHNlcnZlcgorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNv
Y2tldHNlcnZlcgpAQCAtNTksNiArNTksOCBAQCBkZWYgbWFpbigpOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkZXN0PSJyZWdpc3Rlcl9jeWd3aW4iLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdSZWdpc3RlciBDeWd3aW4gcGF0aHMgKG9uIFdpbiB0cnkgYm90cykn
KQogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLS1waWRmaWxlJywgaGVscD0ncGF0aCB0
byBwaWQgZmlsZS4nKQorICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLS1vdXRwdXQtZGly
JywgZGVzdD0nb3V0cHV0X2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9Tm9uZSwgaGVscD0nb3V0cHV0IGRpcmVjdG9yeS4nKQogICAgIG9wdGlvbl9wYXJzZXIuYWRk
X29wdGlvbignLXYnLCAnLS12ZXJib3NlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0naW5jbHVkZSBkZWJ1Zy1s
ZXZlbCBsb2dnaW5nJykKICAgICBvcHRpb25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9h
cmdzKCkKQEAgLTcxLDYgKzczLDkgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICMgRklYTUU6
IFdlIHNob3VsZG4ndCBncmFiIGF0IHRoaXMgcHJpdmF0ZSB2YXJpYWJsZS4KICAgICAgICAgICAg
IG9wdGlvbnMucG9ydCA9IHdlYnNvY2tldF9zZXJ2ZXIuX0RFRkFVTFRfV1NfUE9SVAogCisgICAg
aWYgbm90IG9wdGlvbnMub3V0cHV0X2RpcjoKKyAgICAgICAgb3B0aW9ucy5vdXRwdXRfZGlyID0g
dGVtcGZpbGUuZ2V0dGVtcGRpcigpCisKICAgICBrd2RzID0geydwb3J0Jzogb3B0aW9ucy5wb3J0
LCAndXNlX3Rscyc6IG9wdGlvbnMudXNlX3Rsc30KICAgICBpZiBvcHRpb25zLnJvb3Q6CiAgICAg
ICAgIGt3ZHNbJ3Jvb3QnXSA9IG9wdGlvbnMucm9vdApAQCAtODMsNyArODgsNyBAQCBkZWYgbWFp
bigpOgogICAgICAgICBrd2RzWydwaWRmaWxlJ10gPSBvcHRpb25zLnBpZGZpbGUKIAogICAgIHBv
cnRfb2JqID0gZmFjdG9yeS5nZXQoKQotICAgIHB5d2Vic29ja2V0ID0gd2Vic29ja2V0X3NlcnZl
ci5QeVdlYlNvY2tldChwb3J0X29iaiwgdGVtcGZpbGUuZ2V0dGVtcGRpcigpLCAqKmt3ZHMpCisg
ICAgcHl3ZWJzb2NrZXQgPSB3ZWJzb2NrZXRfc2VydmVyLlB5V2ViU29ja2V0KHBvcnRfb2JqLCBv
cHRpb25zLm91dHB1dF9kaXIsICoqa3dkcykKIAogICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuV0FS
TgogICAgIGlmIG9wdGlvbnMudmVyYm9zZToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL29sZC1ydW4td2Vi
a2l0LXRlc3RzCmluZGV4IGQ1ZDczNDljNzM0ZTUzMmJhZTBiZDA1YWNiM2Y1MTVmMGU3ZjliMDgu
LjJkYjRmNTE3N2U1ZWRjNjliYmVhNmRjMTk4Y2I4YTU1MjMyNDBkNzIgMTAwNzU1Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwpAQCAtNTUzLDcgKzU1Myw3IEBAIG15ICRsYXN0
RGlyZWN0b3J5ID0gIiI7CiAKIG15ICRpc0h0dHBkT3BlbiA9IDA7CiBteSAkaXNXZWJTb2NrZXRT
ZXJ2ZXJPcGVuID0gMDsKLW15ICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSAwOworbXkgJHdlYlNvY2tl
dFNlcnZlclBpZEZpbGUgPSAwOwogbXkgJGZhaWxlZFRvU3RhcnRXZWJTb2NrZXRTZXJ2ZXIgPSAw
OwogIyB3c3MgaXMgZGlzYWJsZWQgdW50aWwgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHB5T3BlblNT
TC4KICMgbXkgJHdlYlNvY2tldFNlY3VyZVNlcnZlclBJRCA9IDA7CkBAIC0xNDIyLDUzICsxNDIy
LDI0IEBAIHN1YiBvcGVuV2ViU29ja2V0U2VydmVySWZOZWVkZWQoKQogICAgIHJldHVybiAwIGlm
ICRmYWlsZWRUb1N0YXJ0V2ViU29ja2V0U2VydmVyOwogCiAgICAgbXkgJHdlYlNvY2tldFNlcnZl
clBhdGggPSAiL3Vzci9iaW4vcHl0aG9uIjsKLSAgICBteSAkd2ViU29ja2V0UHl0aG9uUGF0aCA9
ICJXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQiOwog
ICAgIG15ICR3ZWJTb2NrZXRIYW5kbGVyRGlyID0gIiR0ZXN0RGlyZWN0b3J5IjsKLSAgICBteSAk
d2ViU29ja2V0SGFuZGxlclNjYW5EaXIgPSAiJHRlc3REaXJlY3Rvcnkvd2Vic29ja2V0L3Rlc3Rz
IjsKLSAgICBteSAkd2ViU29ja2V0SGFuZGxlck1hcEZpbGUgPSAiJHdlYlNvY2tldEhhbmRsZXJT
Y2FuRGlyL2hhbmRsZXJfbWFwLnR4dCI7Ci0gICAgbXkgJHNzbENlcnRpZmljYXRlID0gIiR0ZXN0
RGlyZWN0b3J5L2h0dHAvY29uZi93ZWJraXQtaHR0cGQucGVtIjsKICAgICBteSAkYWJzVGVzdFJl
c3VsdHNEaXJlY3RvcnkgPSByZXNvbHZlQW5kTWFrZVRlc3RSZXN1bHRzRGlyZWN0b3J5KCk7Ci0g
ICAgbXkgJGxvZ0ZpbGUgPSAiJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5L3B5d2Vic29ja2V0X2xv
Zy50eHQiOworICAgICR3ZWJTb2NrZXRTZXJ2ZXJQaWRGaWxlID0gIiRhYnNUZXN0UmVzdWx0c0Rp
cmVjdG9yeS93ZWJzb2NrZXQucGlkIjsKIAogICAgIG15IEBhcmdzID0gKAotICAgICAgICAiV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9zdGFuZGFsb25lLnB5IiwKLSAgICAgICAgIi0tc2VydmVyLWhvc3QiLCAiMTI3LjAu
MC4xIiwKKyAgICAgICAgIldlYktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29j
a2V0c2VydmVyIiwKKyAgICAgICAgIi0tc2VydmVyIiwgInN0YXJ0IiwKICAgICAgICAgIi0tcG9y
dCIsICIkd2ViU29ja2V0UG9ydCIsCi0gICAgICAgICItLWRvY3VtZW50LXJvb3QiLCAiJHdlYlNv
Y2tldEhhbmRsZXJEaXIiLAotICAgICAgICAiLS1zY2FuLWRpciIsICIkd2ViU29ja2V0SGFuZGxl
clNjYW5EaXIiLAotICAgICAgICAiLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1maWxlIiwgIiR3ZWJT
b2NrZXRIYW5kbGVyTWFwRmlsZSIsCi0gICAgICAgICItLWNnaS1wYXRocyIsICIvd2Vic29ja2V0
L3Rlc3RzIiwKLSAgICAgICAgIi0tbG9nLWZpbGUiLCAiJGxvZ0ZpbGUiLAotICAgICAgICAiLS1z
dHJpY3QiLAorICAgICAgICAiLS1yb290IiwgIiR3ZWJTb2NrZXRIYW5kbGVyRGlyIiwKKyAgICAg
ICAgIi0tb3V0cHV0LWRpciIsICIkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkiLAorICAgICAgICAi
LS1waWRmaWxlIiwgIiR3ZWJTb2NrZXRTZXJ2ZXJQaWRGaWxlIgogICAgICk7Ci0gICAgIyB3c3Mg
aXMgZGlzYWJsZWQgdW50aWwgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHB5T3BlblNTTC4KLSAgICAj
IG15IEBhcmdzU2VjdXJlID0gKAotICAgICMgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHki
LAotICAgICMgICAgICItcCIsICIkd2ViU29ja2V0U2VjdXJlUG9ydCIsCi0gICAgIyAgICAgIi1k
IiwgIiR3ZWJTb2NrZXRIYW5kbGVyRGlyIiwKLSAgICAjICAgICAiLXQiLAotICAgICMgICAgICIt
ayIsICIkc3NsQ2VydGlmaWNhdGUiLAotICAgICMgICAgICItYyIsICIkc3NsQ2VydGlmaWNhdGUi
LAotICAgICMgKTsKLQotICAgICRFTlZ7IlBZVEhPTlBBVEgifSA9ICR3ZWJTb2NrZXRQeXRob25Q
YXRoOwotICAgICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSBvcGVuMyhcKldFQlNPQ0tFVFNFUlZFUl9J
TiwgXCpXRUJTT0NLRVRTRVJWRVJfT1VULCBcKldFQlNPQ0tFVFNFUlZFUl9FUlIsICR3ZWJTb2Nr
ZXRTZXJ2ZXJQYXRoLCBAYXJncyk7Ci0gICAgIyB3c3MgaXMgZGlzYWJsZWQgdW50aWwgYWxsIHBs
YXRmb3JtcyBzdXBwb3J0IHB5T3BlblNTTC4KLSAgICAjICR3ZWJTb2NrZXRTZWN1cmVTZXJ2ZXJQ
SUQgPSBvcGVuMyhcKldFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9JTiwgXCpXRUJTT0NLRVRTRUNVUkVT
RVJWRVJfT1VULCBcKldFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9FUlIsICR3ZWJTb2NrZXRTZXJ2ZXJQ
YXRoLCBAYXJnc1NlY3VyZSk7Ci0gICAgIyBteSBAbGlzdGVuID0gKCJodHRwOi8vMTI3LjAuMC4x
OiR3ZWJTb2NrZXRQb3J0IiwgImh0dHBzOi8vMTI3LjAuMC4xOiR3ZWJTb2NrZXRTZWN1cmVQb3J0
Iik7Ci0gICAgbXkgQGxpc3RlbiA9ICgiaHR0cDovLzEyNy4wLjAuMTokd2ViU29ja2V0UG9ydCIp
OwotICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaXN0ZW47ICRpKyspIHsKLSAgICAgICAgbXkg
JHJldHJ5Q291bnQgPSAxMDsKLSAgICAgICAgd2hpbGUgKHN5c3RlbSgiL3Vzci9iaW4vY3VybCAt
ayAtcSAtLXNpbGVudCAtLXN0ZGVyciAtIC0tb3V0cHV0IC9kZXYvbnVsbCAkbGlzdGVuWyRpXSIp
ICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgICAgICBzbGVlcCAxOwotICAgICAgICAgICAgLS0k
cmV0cnlDb3VudDsKLSAgICAgICAgfQotICAgICAgICB1bmxlc3MgKCRyZXRyeUNvdW50KSB7Ci0g
ICAgICAgICAgICBwcmludCBTVERFUlIgIlRpbWVkIG91dCB3YWl0aW5nIGZvciBXZWJTb2NrZXRT
ZXJ2ZXIgdG8gc3RhcnQuXG4iOwotICAgICAgICAgICAgJGZhaWxlZFRvU3RhcnRXZWJTb2NrZXRT
ZXJ2ZXIgPSAxOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICB9CisKKyAg
ICBteSAkcGlkID0gb3BlbjMoXCpXRUJTT0NLRVRTRVJWRVJfSU4sIFwqV0VCU09DS0VUU0VSVkVS
X09VVCwgXCpXRUJTT0NLRVRTRVJWRVJfRVJSLCAkd2ViU29ja2V0U2VydmVyUGF0aCwgQGFyZ3Mp
OworICAgIHdhaXRwaWQgJHBpZCwgMDsKKyAgICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJfSU47Cisg
ICAgY2xvc2UgV0VCU09DS0VUU0VSVkVSX09VVDsKKyAgICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJf
RVJSOwogCiAgICAgJGlzV2ViU29ja2V0U2VydmVyT3BlbiA9IDE7CiAgICAgcmV0dXJuIDE7CkBA
IC0xNDc4LDE3ICsxNDQ5LDE5IEBAIHN1YiBjbG9zZVdlYlNvY2tldFNlcnZlcigpCiB7CiAgICAg
cmV0dXJuIGlmICEkaXNXZWJTb2NrZXRTZXJ2ZXJPcGVuOwogCisgICAgbXkgJHdlYlNvY2tldFNl
cnZlclBhdGggPSAiL3Vzci9iaW4vcHl0aG9uIjsKKyAgICBteSBAYXJncyA9ICgKKyAgICAgICAg
IldlYktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIiwKKyAg
ICAgICAgIi0tc2VydmVyIiwgInN0b3AiLAorICAgICAgICAiLS1waWRmaWxlIiwgIiR3ZWJTb2Nr
ZXRTZXJ2ZXJQaWRGaWxlIgorICAgICk7CisgICAgbXkgJHBpZCA9IG9wZW4zKFwqV0VCU09DS0VU
U0VSVkVSX0lOLCBcKldFQlNPQ0tFVFNFUlZFUl9PVVQsIFwqV0VCU09DS0VUU0VSVkVSX0VSUiwg
JHdlYlNvY2tldFNlcnZlclBhdGgsIEBhcmdzKTsKKyAgICB3YWl0cGlkICRwaWQsIDA7CiAgICAg
Y2xvc2UgV0VCU09DS0VUU0VSVkVSX0lOOwogICAgIGNsb3NlIFdFQlNPQ0tFVFNFUlZFUl9PVVQ7
CiAgICAgY2xvc2UgV0VCU09DS0VUU0VSVkVSX0VSUjsKLSAgICBraWxsIDE1LCAkd2ViU29ja2V0
U2VydmVyUElEOwogCiAgICAgIyB3c3MgaXMgZGlzYWJsZWQgdW50aWwgYWxsIHBsYXRmb3JtcyBz
dXBwb3J0IHB5T3BlblNTTC4KLSAgICAjIGNsb3NlIFdFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9JTjsK
LSAgICAjIGNsb3NlIFdFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9PVVQ7Ci0gICAgIyBjbG9zZSBXRUJT
T0NLRVRTRUNVUkVTRVJWRVJfRVJSOwotICAgICMga2lsbCAxNSwgJHdlYlNvY2tldFNlY3VyZVNl
cnZlclBJRDsKLQogICAgICRpc1dlYlNvY2tldFNlcnZlck9wZW4gPSAwOwogfQogCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcgppbmRleCAwNmY5MDc5
NzhiNmRlNGI1MDJkZTA2MWExNWY3MTY5NjQzYmNiZDE5Li4xNGFkNjc4ZWI5MjYyMGI4ZTZlMzM0
ZDU1MDA1Njc0NmQ1OTVhNmJkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13
ZWJraXQtd2Vic29ja2V0c2VydmVyCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtp
dC13ZWJzb2NrZXRzZXJ2ZXIKQEAgLTQ3LDcgKzQ3LDcgQEAgbXkgJHdlYlNvY2tldFBvcnQgPSA4
ODgwOwogbXkgJHNyY0RpciA9IHNvdXJjZURpcigpOwogbXkgJGxheW91dFRlc3RzTmFtZSA9ICIk
c3JjRGlyL0xheW91dFRlc3RzIjsKIG15ICR0ZXN0RGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVs
MmFicygkbGF5b3V0VGVzdHNOYW1lKTsKLW15ICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSAwOworbXkg
JHdlYlNvY2tldFNlcnZlclBpZEZpbGUgPSAiJHRlc3REaXJlY3Rvcnkvd2Vic29ja2V0LnBpZCI7
CiAKIAogcHJpbnQgIlN0YXJ0aW5nIFdlYiBTb2NrZXQgc2VydmVyLi4uXG4iOwpAQCAtNjQsMzcg
KzY0LDM2IEBAIGV4aXQgMDsKIHN1YiBvcGVuV2ViU29ja2V0U2VydmVyKCkKIHsKICAgICBteSAk
d2ViU29ja2V0U2VydmVyUGF0aCA9ICIvdXNyL2Jpbi9weXRob24iOwotICAgIG15ICR3ZWJTb2Nr
ZXRQeXRob25QYXRoID0gIiRzcmNEaXIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L3B5d2Vic29ja2V0IjsKICAgICBteSAkd2ViU29ja2V0SGFuZGxlckRpciA9ICIkdGVz
dERpcmVjdG9yeSI7Ci0gICAgbXkgJHdlYlNvY2tldEhhbmRsZXJTY2FuRGlyID0gIiR0ZXN0RGly
ZWN0b3J5L3dlYnNvY2tldC90ZXN0cyI7Ci0gICAgbXkgJHdlYlNvY2tldEhhbmRsZXJNYXBGaWxl
ID0gIiR3ZWJTb2NrZXRIYW5kbGVyU2NhbkRpci9oYW5kbGVyX21hcC50eHQiOwogCiAgICAgbXkg
QGFyZ3MgPSAoCi0gICAgICAgICIkc3JjRGlyL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSIsCi0g
ICAgICAgICItLXNlcnZlci1ob3N0IiwgIjEyNy4wLjAuMSIsCisgICAgICAgICIkc3JjRGlyL1dl
YktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIiwKKyAgICAg
ICAgIi0tc2VydmVyIiwgInN0YXJ0IiwKICAgICAgICAgIi0tcG9ydCIsICIkd2ViU29ja2V0UG9y
dCIsCi0gICAgICAgICItLWRvY3VtZW50LXJvb3QiLCAiJHdlYlNvY2tldEhhbmRsZXJEaXIiLAot
ICAgICAgICAiLS1zY2FuLWRpciIsICIkd2ViU29ja2V0SGFuZGxlclNjYW5EaXIiLAotICAgICAg
ICAiLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1maWxlIiwgIiR3ZWJTb2NrZXRIYW5kbGVyTWFwRmls
ZSIsCi0gICAgICAgICItLWNnaS1wYXRocyIsICIvd2Vic29ja2V0L3Rlc3RzIiwKKyAgICAgICAg
Ii0tcm9vdCIsICIkd2ViU29ja2V0SGFuZGxlckRpciIsCisgICAgICAgICItLXBpZGZpbGUiLCAi
JHdlYlNvY2tldFNlcnZlclBpZEZpbGUiCiAgICAgKTsKLQotICAgICRFTlZ7IlBZVEhPTlBBVEgi
fSA9ICR3ZWJTb2NrZXRQeXRob25QYXRoOwotICAgICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSBvcGVu
MihcKldFQlNPQ0tFVFNFUlZFUl9JTiwgXCpXRUJTT0NLRVRTRVJWRVJfT1VULCAkd2ViU29ja2V0
U2VydmVyUGF0aCwgQGFyZ3MpOwotCi0gICAgbXkgJGxpc3RlbiA9ICJodHRwOi8vMTI3LjAuMC4x
OiR3ZWJTb2NrZXRQb3J0IjsKLSAgICBteSAkcmV0cnlDb3VudCA9IDEwOwotICAgIHdoaWxlIChz
eXN0ZW0oIi91c3IvYmluL2N1cmwgLWsgLXEgLS1zaWxlbnQgLS1zdGRlcnIgLSAtLW91dHB1dCAv
ZGV2L251bGwgJGxpc3RlbiIpICYmICRyZXRyeUNvdW50KSB7Ci0gICAgICAgIHNsZWVwIDE7Ci0g
ICAgICAgIC0tJHJldHJ5Q291bnQ7Ci0gICAgfQotICAgIGRpZSAiVGltZWQgb3V0IHdhaXRpbmcg
Zm9yIFdlYlNvY2tldFNlcnZlciB0byBzdGFydCIgdW5sZXNzICRyZXRyeUNvdW50OworICAgIG15
ICRwaWQgPSBvcGVuMihcKldFQlNPQ0tFVFNFUlZFUl9JTiwgXCpXRUJTT0NLRVRTRVJWRVJfT1VU
LCAkd2ViU29ja2V0U2VydmVyUGF0aCwgQGFyZ3MpOworICAgIHdhaXRwaWQgJHBpZCwgMDsKKyAg
ICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJfSU47CisgICAgY2xvc2UgV0VCU09DS0VUU0VSVkVSX09V
VDsKIH0KIAogc3ViIGNsb3NlV2ViU29ja2V0U2VydmVyKCkKIHsKKyAgICBteSAkd2ViU29ja2V0
U2VydmVyUGF0aCA9ICIvdXNyL2Jpbi9weXRob24iOworICAgIG15IEBhcmdzID0gKAorICAgICAg
ICAiJHNyY0Rpci9XZWJLaXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tldHNl
cnZlciIsCisgICAgICAgICItLXNlcnZlciIsICJzdG9wIiwKKyAgICAgICAgIi0tcGlkZmlsZSIs
ICIkd2ViU29ja2V0U2VydmVyUGlkRmlsZSIKKyAgICApOworICAgIG15ICRwaWQgPSBvcGVuMihc
KldFQlNPQ0tFVFNFUlZFUl9JTiwgXCpXRUJTT0NLRVRTRVJWRVJfT1VULCAkd2ViU29ja2V0U2Vy
dmVyUGF0aCwgQGFyZ3MpOworICAgIHdhaXRwaWQgJHBpZCwgMDsKKwogICAgIGNsb3NlIFdFQlNP
Q0tFVFNFUlZFUl9JTjsKICAgICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJfT1VUOwotICAgIGtpbGwg
MTUsICR3ZWJTb2NrZXRTZXJ2ZXJQSUQ7CisKKyAgICB1bmxpbmsgIiR3ZWJTb2NrZXRTZXJ2ZXJQ
aWRGaWxlIjsKIH0KIAorCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKaW5kZXgg
ZWQ2ZDg3MWY4NTQ2ODNmZmFiMDQ0YWMxMjc1NDY1YTQwMmY4Y2JjMy4uZTY1YmIwNjhkN2VjMjZi
OTkwOTBiNGUxODdmNTkwMTdlOTljMTI5ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3Nl
cnZlci5weQpAQCAtNDYsNiArNDYsOCBAQCBpbXBvcnQgZmFjdG9yeQogaW1wb3J0IGh0dHBfc2Vy
dmVyCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1
dGl2ZQorZnJvbSB3ZWJraXRweS50aGlyZHBhcnR5LmF1dG9pbnN0YWxsZWQucHl3ZWJzb2NrZXQg
aW1wb3J0IG1vZF9weXdlYnNvY2tldAorCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcigid2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Vic29ja2V0X3NlcnZlciIpCiAKQEAgLTE1OSw3ICsx
NjEsOCBAQCBjbGFzcyBQeVdlYlNvY2tldChodHRwX3NlcnZlci5MaWdodHRwZCk6CiAgICAgICAg
IHB5dGhvbl9pbnRlcnAgPSBzeXMuZXhlY3V0YWJsZQogICAgICAgICBweXdlYnNvY2tldF9iYXNl
ID0gb3MucGF0aC5qb2luKAogICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGly
bmFtZShvcy5wYXRoLmRpcm5hbWUoCi0gICAgICAgICAgICBvcy5wYXRoLmFic3BhdGgoX19maWxl
X18pKSkpLCAndGhpcmRwYXJ0eScsICdweXdlYnNvY2tldCcpCisgICAgICAgICAgICBvcy5wYXRo
LmFic3BhdGgoX19maWxlX18pKSkpLCAndGhpcmRwYXJ0eScsCisgICAgICAgICAgICAnYXV0b2lu
c3RhbGxlZCcsICdweXdlYnNvY2tldCcpCiAgICAgICAgIHB5d2Vic29ja2V0X3NjcmlwdCA9IG9z
LnBhdGguam9pbihweXdlYnNvY2tldF9iYXNlLCAnbW9kX3B5d2Vic29ja2V0JywKICAgICAgICAg
ICAgICdzdGFuZGFsb25lLnB5JykKICAgICAgICAgc3RhcnRfY21kID0gWwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CmluZGV4IGMw
NTJmMDA4NmNhYjA2OTMxNzIwYzBkOGY2NjQ4NzdhNzhjZjg2ZTUuLjM2NDIyODZkMTkxMzBlZDUx
YjcxYTA5YjcyYjZiZWFkZjJkYTY2Y2UgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKQEAgLTg5LDYgKzg5LDExIEBAIGluc3Rh
bGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2l3ZWIuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3Qv
cHl0aG9uLWlyY2xpYi9weXRoCiBpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9pd2ViLmRs
LnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1pcmNsaWIvcHl0aG9uLWlyY2xpYi8wLjQu
OC9weXRob24taXJjbGliLTAuNC44LnppcCIsCiAgICAgICAgICAgICAgICAgICB1cmxfc3VicGF0
aD0iaXJjYm90LnB5IikKIAorcHl3ZWJzb2NrZXRfZGlyID0gb3MucGF0aC5qb2luKGF1dG9pbnN0
YWxsZWRfZGlyLCAicHl3ZWJzb2NrZXQiKQoraW5zdGFsbGVyID0gQXV0b0luc3RhbGxlcih0YXJn
ZXRfZGlyPXB5d2Vic29ja2V0X2RpcikKK2luc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL3B5
d2Vic29ja2V0Lmdvb2dsZWNvZGUuY29tL2ZpbGVzL21vZF9weXdlYnNvY2tldC0wLjUudGFyLmd6
IiwKKyAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJweXdlYnNvY2tldC0wLjUvc3JjL21v
ZF9weXdlYnNvY2tldCIpCisKIHJlYWRtZV9wYXRoID0gb3MucGF0aC5qb2luKGF1dG9pbnN0YWxs
ZWRfZGlyLCAiUkVBRE1FIikKIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhyZWFkbWVfcGF0aCk6CiAg
ICAgd2l0aCBjb2RlY3Mub3BlbihyZWFkbWVfcGF0aCwgInciLCAiYXNjaWkiKSBhcyBmaWxlOgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L0NPUFlJTkcgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvQ09QWUlORwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI5ZDUy
ZGRmOTMwNzIwODZjYmJhMjEyY2RiYmVkN2IzOGZhYTUzYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvcHl3ZWJzb2NrZXQvQ09QWUlORworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAg
QEAKLUNvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQot
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci1jb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi1pbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQot
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9NQU5JRkVTVC5pbiBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9NQU5JRkVTVC5pbgpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5
NzllNjNlNGEwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFO
SUZFU1QuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluY2x1ZGUgQ09QWUlORwot
aW5jbHVkZSBNQU5JRkVTVC5pbgotaW5jbHVkZSBSRUFETUUKLXJlY3Vyc2l2ZS1pbmNsdWRlIGV4
YW1wbGUgKi5weQotcmVjdXJzaXZlLWluY2x1ZGUgbW9kX3B5d2Vic29ja2V0ICoucHkKLXJlY3Vy
c2l2ZS1pbmNsdWRlIHRlc3QgKi5weQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDFmOWYwNWZjZGI2NjYzZmRiNjNkNDVhYTFmODE1ZGJhZTkwMjhjMmIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRQorKysgL2Rl
di9udWxsCkBAIC0xLDYgKzAsMCBAQAotSW5zdGFsbCB0aGlzIHBhY2thZ2UgYnk6Ci0kIHB5dGhv
biBzZXR1cC5weSBidWlsZAotJCBzdWRvIHB5dGhvbiBzZXR1cC5weSBpbnN0YWxsCi0KLVRoZW4g
cmVhZCBkb2N1bWVudCBieToKLSQgcHlkb2MgbW9kX3B5d2Vic29ja2V0CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVBRE1F
LndlYmtpdCBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC9SRUFETUUud2Via2l0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2UzY2Vl
MzMwYWMyZTZiYmU0OWRhY2M0NjJiNGExMTE3ZWE3NjBiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUud2Via2l0CisrKyAvZGV2L251bGwKQEAgLTEsMTQg
KzAsMCBAQAotVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBjb3B5IG9mIHRoZSBweXdlYnNvY2tl
dCBQeXRob24gbW9kdWxlIG9idGFpbmVkCi1mcm9tIHRoZSBmb2xsb3dpbmcgbG9jYXRpb246Ci0K
LWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9weXdlYnNvY2tldC8KLQotVGhpcyBkaXJlY3Rvcnkg
Y3VycmVudGx5IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgdmVyc2lvbjoKLTAuNC45LjIKLQotVGhl
IGZvbGxvd2luZyBtb2RpZmljYXRpb25zIGhhdmUgYmVlbiBtYWRlIHRvIHRoaXMgbG9jYWwgdmVy
c2lvbjoKLW1pbm9yIHVwZGF0ZXMgaW4gV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIuaXNfY2dpCi0K
LU1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgbG9jYWwgbW9kaWZpY2F0aW9ucyBjYW4gYmUgZm91
bmQgaGVyZToKLQotaHR0cDovL3RyYWMud2Via2l0Lm9yZy9icm93c2VyL3RydW5rL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1w
bGUvZWNob19jbGllbnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVudC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMmI5NzZlMTE5ZWUyODgwZWFlNjBjZjgyYmVhNzQxZjU2YzM0Y2ZjNC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVu
dC5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwOSArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYiBTb2NrZXQgRWNobyBjbGllbnQuCi0K
LVRoaXMgaXMgYW4gZXhhbXBsZSBXZWIgU29ja2V0IGNsaWVudCB0aGF0IHRhbGtzIHdpdGggZWNo
b193c2gucHkuCi1UaGlzIG1heSBiZSB1c2VmdWwgZm9yIGNoZWNraW5nIG1vZF9weXdlYnNvY2tl
dCBpbnN0YWxsYXRpb24uCi0KLU5vdGU6Ci1UaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBl
LmcuLCB3ZSBjdXQgY29ybmVycyBpbiBoYW5kc2hha2UuCi0iIiIKLQotCi1pbXBvcnQgY29kZWNz
Ci1mcm9tIG9wdHBhcnNlIGltcG9ydCBPcHRpb25QYXJzZXIKLWltcG9ydCBzb2NrZXQKLWltcG9y
dCBzeXMKLQotCi1fVElNRU9VVF9TRUMgPSAxMAotCi1fREVGQVVMVF9QT1JUID0gODAKLV9ERUZB
VUxUX1NFQ1VSRV9QT1JUID0gNDQzCi1fVU5ERUZJTkVEX1BPUlQgPSAtMQotCi1fVVBHUkFERV9I
RUFERVIgPSAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLV9DT05ORUNUSU9OX0hFQURFUiA9ICdD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLV9FWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAg
J0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nICsKLSAgICAg
ICAgX1VQR1JBREVfSEVBREVSICsKLSAgICAgICAgX0NPTk5FQ1RJT05fSEVBREVSKQotCi1fR09P
REJZRV9NRVNTQUdFID0gJ0dvb2RieWUnCi0KLQotZGVmIF9tZXRob2RfbGluZShyZXNvdXJjZSk6
Ci0gICAgcmV0dXJuICdHRVQgJXMgSFRUUC8xLjFcclxuJyAlIHJlc291cmNlCi0KLQotZGVmIF9v
cmlnaW5faGVhZGVyKG9yaWdpbik6Ci0gICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBvcmln
aW4KLQotCi1jbGFzcyBfVExTU29ja2V0KG9iamVjdCk6Ci0gICAgIiIiV3JhcHBlciBmb3IgYSBU
TFMgY29ubmVjdGlvbi4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByYXdfc29ja2V0KToK
LSAgICAgICAgc2VsZi5fc3NsID0gc29ja2V0LnNzbChyYXdfc29ja2V0KQotCi0gICAgZGVmIHNl
bmQoc2VsZiwgYnl0ZXMpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLndyaXRlKGJ5dGVzKQot
Ci0gICAgZGVmIHJlY3Yoc2VsZiwgc2l6ZT0tMSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zc2wu
cmVhZChzaXplKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICAjIE5vdGhpbmcgdG8g
ZG8uCi0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6Ci0gICAgIiIi
V2ViIFNvY2tldCBlY2hvIGNsaWVudC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRp
b25zKToKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gTm9uZQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgIiIiUnVuIHRoZSBjbGll
bnQuCi0KLSAgICAgICAgU2hha2UgaGFuZHMgYW5kIHRoZW4gcmVwZWF0IHNlbmRpbmcgbWVzc2Fn
ZSBhbmQgcmVjZWl2aW5nIGl0cyBlY2hvLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fc29j
a2V0ID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0KHNl
bGYuX29wdGlvbnMuc29ja2V0X3RpbWVvdXQpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNl
bGYuX3NvY2tldC5jb25uZWN0KChzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpKQotICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgICAgIHNlbGYu
X3NvY2tldCA9IF9UTFNTb2NrZXQoc2VsZi5fc29ja2V0KQotICAgICAgICAgICAgc2VsZi5faGFu
ZHNoYWtlKCkKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX29wdGlvbnMubWVzc2FnZS5z
cGxpdCgnLCcpICsgW19HT09EQllFX01FU1NBR0VdOgotICAgICAgICAgICAgICAgIGZyYW1lID0g
J1x4MDAnICsgbGluZS5lbmNvZGUoJ3V0Zi04JykgKyAnXHhmZicKLSAgICAgICAgICAgICAgICBz
ZWxmLl9zb2NrZXQuc2VuZChmcmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25z
LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50ICdTZW5kOiAlcycgJSBsaW5lCi0g
ICAgICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zb2NrZXQucmVjdihsZW4oZnJhbWUpKQot
ICAgICAgICAgICAgICAgIGlmIHJlY2VpdmVkICE9IGZyYW1lOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0luY29ycmVjdCBlY2hvOiAlcicgJSByZWNlaXZlZCkKLSAgICAg
ICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAg
IHByaW50ICdSZWN2OiAlcycgJSByZWNlaXZlZFsxOi0xXS5kZWNvZGUoJ3V0Zi04JywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
cmVwbGFjZScpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xv
c2UoKQotCi0gICAgZGVmIF9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kKF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKSkKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChf
Q09OTkVDVElPTl9IRUFERVIpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKHNlbGYuX2Zvcm1h
dF9ob3N0X2hlYWRlcigpKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChfb3JpZ2luX2hlYWRl
cihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKCdcclxu
JykKLQotICAgICAgICBmb3IgZXhwZWN0ZWRfY2hhciBpbiBfRVhQRUNURURfUkVTUE9OU0U6Ci0g
ICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX3NvY2tldC5yZWN2KDEpWzBdCi0gICAgICAgICAg
ICBpZiBleHBlY3RlZF9jaGFyICE9IHJlY2VpdmVkOgotICAgICAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignSGFuZHNoYWtlIGZhaWx1cmUnKQotICAgICAgICAjIFdlIGN1dCBjb3JuZXJzIGFu
ZCBza2lwIG90aGVyIGhlYWRlcnMuCi0gICAgICAgIHNlbGYuX3NraXBfaGVhZGVycygpCi0KLSAg
ICBkZWYgX3NraXBfaGVhZGVycyhzZWxmKToKLSAgICAgICAgdGVybWluYXRvciA9ICdcclxuXHJc
bicKLSAgICAgICAgcG9zID0gMAotICAgICAgICB3aGlsZSBwb3MgPCBsZW4odGVybWluYXRvcik6
Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHNlbGYuX3NvY2tldC5yZWN2KDEpWzBdCi0gICAgICAg
ICAgICBpZiByZWNlaXZlZCA9PSB0ZXJtaW5hdG9yW3Bvc106Ci0gICAgICAgICAgICAgICAgcG9z
ICs9IDEKLSAgICAgICAgICAgIGVsaWYgcmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKLSAgICAg
ICAgICAgICAgICBwb3MgPSAxCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBv
cyA9IDAKLQotICAgIGRlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKHNlbGYpOgotICAgICAgICBob3N0
ID0gJ0hvc3Q6ICcgKyBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0Ci0gICAgICAgIGlmICgobm90
IHNlbGYuX29wdGlvbnMudXNlX3RscyBhbmQKLSAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNl
cnZlcl9wb3J0ICE9IF9ERUZBVUxUX1BPUlQpIG9yCi0gICAgICAgICAgICAoc2VsZi5fb3B0aW9u
cy51c2VfdGxzIGFuZAotICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgIT0g
X0RFRkFVTFRfU0VDVVJFX1BPUlQpKToKLSAgICAgICAgICAgIGhvc3QgKz0gJzonICsgc3RyKHNl
bGYuX29wdGlvbnMuc2VydmVyX3BvcnQpCi0gICAgICAgIGhvc3QgKz0gJ1xyXG4nCi0gICAgICAg
IHJldHVybiBob3N0Ci0KLQotZGVmIG1haW4oKToKLSAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdl
dHdyaXRlcigndXRmLTgnKShzeXMuc3Rkb3V0KQotCi0gICAgcGFyc2VyID0gT3B0aW9uUGFyc2Vy
KCkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZl
cl9ob3N0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsIHR5cGU9
J3N0cmluZycsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nbG9jYWxob3N0JywgaGVs
cD0nc2VydmVyIGhvc3QnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcCcsICctLXNlcnZlci1w
b3J0JywgJy0tc2VydmVyX3BvcnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZl
cl9wb3J0JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9VTkRF
RklORURfUE9SVCwgaGVscD0nc2VydmVyIHBvcnQnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
bycsICctLW9yaWdpbicsIGRlc3Q9J29yaWdpbicsIHR5cGU9J3N0cmluZycsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD0naHR0cDovL2xvY2FsaG9zdC8nLCBoZWxwPSdvcmlnaW4nKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcicsICctLXJlc291cmNlJywgZGVzdD0ncmVzb3VyY2Un
LCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy9lY2hvJywg
aGVscD0ncmVzb3VyY2UgcGF0aCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywgJy0tbWVz
c2FnZScsIGRlc3Q9J21lc3NhZ2UnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9KCdjb21tYS1zZXBhcmF0ZWQgbWVzc2FnZXMgdG8gc2VuZCBleGNsdWRpbmcgIiVz
IiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgaXMgYWx3YXlzIHNlbnQgYXQg
dGhlIGVuZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9HT09EQllFX01FU1NBR0Up
KQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1aWV0JywgZGVzdD0ndmVyYm9zZScs
IGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1
ZSwgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcs
ICctLXRscycsIGRlc3Q9J3VzZV90bHMnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3VzZSBUTFMgKHdzczovLyknKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctaycsICctLXNvY2tldC10aW1lb3V0JywgJy0tc29ja2V0X3Rp
bWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NvY2tldF90aW1lb3V0JywgdHlw
ZT0naW50JywgZGVmYXVsdD1fVElNRU9VVF9TRUMsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nVGltZW91dChzZWMpIGZvciBzb2NrZXRzJykKLQotICAgIChvcHRpb25zLCB1bnVzZWRfYXJn
cykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICAjIERlZmF1bHQgcG9ydCBudW1iZXIgZGVw
ZW5kcyBvbiB3aGV0aGVyIFRMUyBpcyB1c2VkLgotICAgIGlmIG9wdGlvbnMuc2VydmVyX3BvcnQg
PT0gX1VOREVGSU5FRF9QT1JUOgotICAgICAgICBpZiBvcHRpb25zLnVzZV90bHM6Ci0gICAgICAg
ICAgICBvcHRpb25zLnNlcnZlcl9wb3J0ID0gX0RFRkFVTFRfU0VDVVJFX1BPUlQKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBfREVGQVVMVF9QT1JUCi0K
LSAgICAjIG9wdHBhcnNlIGRvZXNuJ3Qgc2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQg
dmFsdWVzLgotICAgICMgU2V0IGRlZmF1bHQgbWVzc2FnZSBoZXJlLgotICAgIGlmIG5vdCBvcHRp
b25zLm1lc3NhZ2U6Ci0gICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2
NzJjJyAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotCi0gICAgRWNob0NsaWVudChvcHRpb25zKS5y
dW4oKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgbWFpbigpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX3dzaC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3No
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MGNhZDMxODRkNDVjNTMxN2VmZDVl
YjExNWY0M2FhNDkwNTEyZjA0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC9leGFtcGxlL2VjaG9fd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwK
LQotCi1fR09PREJZRV9NRVNTQUdFID0gJ0dvb2RieWUnCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MgICMgQWx3YXlzIGFjY2VwdC4KLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgIGxpbmUgPSBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KQotICAgICAg
ICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBsaW5lKQotICAgICAgICBpZiBsaW5lID09
IF9HT09EQllFX01FU1NBR0U6Ci0gICAgICAgICAgICByZXR1cm4KLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dCBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4
dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjNGMwOWFhMDA5MWQ4YmFmMjkwODk1
OTkwNTg2Nzg0MmFlYjg2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBA
Ci0jIHdlYnNvY2tldCBoYW5kbGVyIG1hcCBmaWxlLCB1c2VkIGJ5IHN0YW5kYWxvbmUucHkgLW0g
b3B0aW9uLgotIyBBIGxpbmUgc3RhcnRpbmcgd2l0aCAnIycgaXMgYSBjb21tZW50IGxpbmUuCi0j
IEVhY2ggbGluZSBjb25zaXN0cyBvZiAnYWxpYXNfcmVzb3VyY2VfcGF0aCcgYW5kICdleGlzdGlu
Z19yZXNvdXJjZV9wYXRoJwotIyBzZXBhcmF0ZWQgYnkgc3BhY2VzLgotIyBBbGlhc2luZyBpcyBw
cm9jZXNzZWQgZnJvbSB0aGUgdG9wIHRvIHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGFuZAotIyAn
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcgbXVzdCBleGlzdCBiZWZvcmUgaXQgaXMgYWxpYXNlZC4K
LSMgRm9yIGV4YW1wbGUsCi0jICAvIC9lY2hvCi0jIG1lYW5zIHRoYXQgYSByZXF1ZXN0IHRvICcv
JyB3aWxsIGJlIGhhbmRsZWQgYnkgaGFuZGxlcnMgZm9yICcvZWNobycuCi0vIC9lY2hvCi0KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWU4MGU4YjM3ZjgzZDc2OTdhY2UzMDk3
NmUzZWFkMDEzNmRkOTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDUgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV2ViIFNvY2tldCBleHRlbnNpb24gZm9yIEFw
YWNoZSBIVFRQIFNlcnZlci4KLQotbW9kX3B5d2Vic29ja2V0IGlzIGEgV2ViIFNvY2tldCBleHRl
bnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlcgotaW50ZW5kZWQgZm9yIHRlc3Rpbmcgb3IgZXhw
ZXJpbWVudGFsIHB1cnBvc2VzLiBtb2RfcHl0aG9uIGlzIHJlcXVpcmVkLgotCi1JbnN0YWxsYXRp
b246Ci0KLTAuIFByZXBhcmUgYW4gQXBhY2hlIEhUVFAgU2VydmVyIGZvciB3aGljaCBtb2RfcHl0
aG9uIGlzIGVuYWJsZWQuCi0KLTEuIFNwZWNpZnkgdGhlIGZvbGxvd2luZyBBcGFjaGUgSFRUUCBT
ZXJ2ZXIgZGlyZWN0aXZlcyB0byBzdWl0IHlvdXIKLSAgIGNvbmZpZ3VyYXRpb24uCi0KLSAgIElm
IG1vZF9weXdlYnNvY2tldCBpcyBub3QgaW4gdGhlIFB5dGhvbiBwYXRoLCBzcGVjaWZ5IHRoZSBm
b2xsb3dpbmcuCi0gICA8d2Vic29ja19saWI+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgbW9kX3B5
d2Vic29ja2V0IGlzIGluc3RhbGxlZC4KLQotICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1sn
PHdlYnNvY2tfbGliPiddIgotCi0gICBBbHdheXMgc3BlY2lmeSB0aGUgZm9sbG93aW5nLiA8d2Vi
c29ja19oYW5kbGVycz4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZQotICAgdXNlci13cml0dGVuIFdl
YiBTb2NrZXQgaGFuZGxlcnMgYXJlIHBsYWNlZC4KLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2Rf
cHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290IDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgICAgIFB5dGhv
bkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIK
LQotICAgVG8gbGltaXQgdGhlIHNlYXJjaCBmb3IgV2ViIFNvY2tldCBoYW5kbGVycyB0byBhIGRp
cmVjdG9yeSA8c2Nhbl9kaXI+Ci0gICB1bmRlciA8d2Vic29ja19oYW5kbGVycz4sIGNvbmZpZ3Vy
ZSBhcyBmb2xsb3dzOgotICAgCi0gICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5o
YW5kbGVyX3NjYW4gPHNjYW5fZGlyPgotICAgICAgIAotICAgPHNjYW5fZGlyPiBpcyB1c2VmdWwg
aW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgY29udGFpbnMg
bWFueSBub24tV2ViIFNvY2tldCBoYW5kbGVyIGZpbGVzLgotCi0gICBFeGFtcGxlIHNuaXBwZXQg
b2YgaHR0cGQuY29uZjoKLSAgIChtb2RfcHl3ZWJzb2NrZXQgaXMgaW4gL3dlYnNvY2tfbGliLCBX
ZWIgU29ja2V0IGhhbmRsZXJzIGFyZSBpbgotICAgL3dlYnNvY2tfaGFuZGxlcnMsIHBvcnQgaXMg
ODAgZm9yIHdzLCA0NDMgZm9yIHdzcy4pCi0KLSAgICAgICA8SWZNb2R1bGUgcHl0aG9uX21vZHVs
ZT4KLSAgICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1snL3dlYnNvY2tfbGliJ10iCi0gICAg
ICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfcm9vdCAvd2Vic29ja19o
YW5kbGVycwotICAgICAgICAgUHl0aG9uSGVhZGVyUGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2Nr
ZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICAgICAgIDwvSWZNb2R1bGU+Ci0KLVdyaXRpbmcgV2Vi
IFNvY2tldCBoYW5kbGVyczoKLQotV2hlbiBhIFdlYiBTb2NrZXQgcmVxdWVzdCBjb21lcyBpbiwg
dGhlIHJlc291cmNlIG5hbWUKLXNwZWNpZmllZCBpbiB0aGUgaGFuZHNoYWtlIGlzIGNvbnNpZGVy
ZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGggdW5kZXIKLTx3ZWJzb2NrX2hhbmRsZXJzPiBhbmQg
dGhlIGhhbmRsZXIgZGVmaW5lZCBpbgotPHdlYnNvY2tfaGFuZGxlcnM+LzxyZXNvdXJjZV9uYW1l
Pl93c2gucHkgaXMgaW52b2tlZC4KLQotRm9yIGV4YW1wbGUsIGlmIHRoZSByZXNvdXJjZSBuYW1l
IGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5kbGVyIGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRs
ZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlzIGludm9rZWQuCi0KLUEgV2ViIFNvY2tldCBoYW5k
bGVyIGlzIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9uczoKLQotICAgIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpCi0KLXdoZXJlOgotICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdC4KLQotd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkIGR1cmluZyB0
aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQotaGVhZGVycyBhcmUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBh
bmQgV2ViIFNvY2tldCBwcm9wZXJ0aWVzICh3c19sb2NhdGlvbiwKLXdzX29yaWdpbiwgd3NfcHJv
dG9jb2wsIGFuZCB3c19yZXNvdXJjZSkgYXJlIGFkZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgot
Y2FuIHJlamVjdCB0aGUgcmVxdWVzdCBieSByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLQotd2ViX3Nv
Y2tldF90cmFuc2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0aGUgaGFuZHNoYWtlIGNvbXBsZXRl
ZAotc3VjY2Vzc2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2VpdmUvc2VuZCBtZXNzYWdlcyBmcm9t
L3RvIHRoZSBjbGllbnQKLXVzaW5nIHJlcXVlc3QuIG1vZF9weXdlYnNvY2tldC5tc2d1dGlsIG1v
ZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMKLWZvciBkYXRhIHRyYW5zZmVyLgotCi1BIFdlYiBTb2Nr
ZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlIGlmIHRoZSBzZXJ2ZXIgKEFwYWNoZSBvcgot
c3RhbmRhbG9uZS5weSkgaXMgY29uZmlndXJlZCB0byB1c2UgdGhyZWFkcy4KLSIiIgotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGM1MmU5ZWI0MmI3NWQwNTUxNzYyOGZkOGZkMGFmYmVmNDFkZjQxMmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDIzMSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJE
aXNwYXRjaCBXZWIgU29ja2V0IHJlcXVlc3QuCi0iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBy
ZQotCi1pbXBvcnQgdXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29tcGlsZShy
Jyg/aSlfd3NoXC5weSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19FWFRSQV9I
QU5EU0hBS0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlJwot
X1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YScK
LQotCi1jbGFzcyBEaXNwYXRjaEVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIGlu
IGRpc3BhdGNoaW5nIFdlYiBTb2NrZXQgcmVxdWVzdC4iIiIKLQotICAgIHBhc3MKLQotCi1kZWYg
X25vcm1hbGl6ZV9wYXRoKHBhdGgpOgotICAgICIiIk5vcm1hbGl6ZSBwYXRoLgotCi0gICAgQXJn
czoKLSAgICAgICAgcGF0aDogdGhlIHBhdGggdG8gbm9ybWFsaXplLgotCi0gICAgUGF0aCBpcyBj
b252ZXJ0ZWQgdG8gdGhlIGFic29sdXRlIHBhdGguCi0gICAgVGhlIGlucHV0IHBhdGggY2FuIHVz
ZSBlaXRoZXIgJ1xcJyBvciAnLycgYXMgdGhlIHNlcGFyYXRvci4KLSAgICBUaGUgbm9ybWFsaXpl
ZCBwYXRoIGFsd2F5cyB1c2VzICcvJyByZWdhcmRsZXNzIG9mIHRoZSBwbGF0Zm9ybS4KLSAgICAi
IiIKLQotICAgIHBhdGggPSBwYXRoLnJlcGxhY2UoJ1xcJywgb3MucGF0aC5zZXApCi0gICAgcGF0
aCA9IG9zLnBhdGgucmVhbHBhdGgocGF0aCkKLSAgICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcs
ICcvJykKLSAgICByZXR1cm4gcGF0aAotCi0KLWRlZiBfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0
ZXIoYmFzZV9kaXIpOgotICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJhc2VfZGlyKQot
ICAgIGJhc2VfbGVuID0gbGVuKGJhc2VfZGlyKQotICAgIHN1ZmZpeF9sZW4gPSBsZW4oX1NPVVJD
RV9TVUZGSVgpCi0gICAgZGVmIGNvbnZlcnRlcihwYXRoKToKLSAgICAgICAgaWYgbm90IHBhdGgu
ZW5kc3dpdGgoX1NPVVJDRV9TVUZGSVgpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAg
ICAgcGF0aCA9IF9ub3JtYWxpemVfcGF0aChwYXRoKQotICAgICAgICBpZiBub3QgcGF0aC5zdGFy
dHN3aXRoKGJhc2VfZGlyKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVy
biBwYXRoW2Jhc2VfbGVuOi1zdWZmaXhfbGVuXQotICAgIHJldHVybiBjb252ZXJ0ZXIKLQotCi1k
ZWYgX3NvdXJjZV9maWxlX3BhdGhzKGRpcmVjdG9yeSk6Ci0gICAgIiIiWWllbGQgV2ViIFNvY2tl
dCBIYW5kbGVyIHNvdXJjZSBmaWxlIG5hbWVzIGluIHRoZSBnaXZlbiBkaXJlY3RvcnkuIiIiCi0K
LSAgICBmb3Igcm9vdCwgdW51c2VkX2RpcnMsIGZpbGVzIGluIG9zLndhbGsoZGlyZWN0b3J5KToK
LSAgICAgICAgZm9yIGJhc2UgaW4gZmlsZXM6Ci0gICAgICAgICAgICBwYXRoID0gb3MucGF0aC5q
b2luKHJvb3QsIGJhc2UpCi0gICAgICAgICAgICBpZiBfU09VUkNFX1BBVEhfUEFUVEVSTi5zZWFy
Y2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgeWllbGQgcGF0aAotCi0KLWRlZiBfc291cmNlKHNv
dXJjZV9zdHIpOgotICAgICIiIlNvdXJjZSBhIGhhbmRsZXIgZGVmaW5pdGlvbiBzdHJpbmcuIiIi
Ci0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0gICAgICAgIGV4ZWMgc291cmNlX3N0
ciBpbiBnbG9iYWxfZGljCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgcmFpc2UgRGlz
cGF0Y2hFcnJvcignRXJyb3IgaW4gc291cmNpbmcgaGFuZGxlcjonICsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgIHJldHVybiAoX2V4dHJh
Y3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSks
Ci0gICAgICAgICAgICBfZXh0cmFjdF9oYW5kbGVyKGdsb2JhbF9kaWMsIF9UUkFOU0ZFUl9EQVRB
X0hBTkRMRVJfTkFNRSkpCi0KLQotZGVmIF9leHRyYWN0X2hhbmRsZXIoZGljLCBuYW1lKToKLSAg
ICBpZiBuYW1lIG5vdCBpbiBkaWM6Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXJyb3IoJyVzIGlz
IG5vdCBkZWZpbmVkLicgJSBuYW1lKQotICAgIGhhbmRsZXIgPSBkaWNbbmFtZV0KLSAgICBpZiBu
b3QgY2FsbGFibGUoaGFuZGxlcik6Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXJyb3IoJyVzIGlz
IG5vdCBjYWxsYWJsZS4nICUgbmFtZSkKLSAgICByZXR1cm4gaGFuZGxlcgotCi0KLWNsYXNzIERp
c3BhdGNoZXIob2JqZWN0KToKLSAgICAiIiJEaXNwYXRjaGVzIFdlYiBTb2NrZXQgcmVxdWVzdHMu
Ci0KLSAgICBUaGlzIGNsYXNzIG1haW50YWlucyBhIG1hcCBmcm9tIHJlc291cmNlIG5hbWUgdG8g
aGFuZGxlcnMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdF9kaXIsIHNj
YW5fZGlyPU5vbmUpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIHJvb3RfZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRs
ZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICBwbGFjZWQuCi0g
ICAgICAgICAgICBzY2FuX2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBoYW5kbGVyIGRlZmluaXRp
b24gZmlsZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgc2VhcmNoZWQuIHNjYW5fZGlyIG11
c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgcm9vdF9kaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
aW5jbHVkaW5nIHJvb3RfZGlyIGl0c2VsZi4gIElmIHNjYW5fZGlyIGlzIE5vbmUsIHJvb3RfZGly
Ci0gICAgICAgICAgICAgICAgICAgICAgaXMgdXNlZCBhcyBzY2FuX2Rpci4gc2Nhbl9kaXIgY2Fu
IGJlIHVzZWZ1bCBpbiBzYXZpbmcKLSAgICAgICAgICAgICAgICAgICAgICBzY2FuIHRpbWUgd2hl
biByb290X2RpciBjb250YWlucyBtYW55IHN1YmRpcmVjdG9yaWVzLgotICAgICAgICAiIiIKLQot
ICAgICAgICBzZWxmLl9oYW5kbGVycyA9IHt9Ci0gICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5n
cyA9IFtdCi0gICAgICAgIGlmIHNjYW5fZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBzY2FuX2Rp
ciA9IHJvb3RfZGlyCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLnJlYWxwYXRoKHNjYW5fZGlyKS5z
dGFydHN3aXRoKAotICAgICAgICAgICAgICAgIG9zLnBhdGgucmVhbHBhdGgocm9vdF9kaXIpKToK
LSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXJyb3IoJ3NjYW5fZGlyOiVzIG11c3QgYmUgYSBk
aXJlY3RvcnkgdW5kZXIgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9k
aXI6JXMuJyAlIChzY2FuX2Rpciwgcm9vdF9kaXIpKQotICAgICAgICBzZWxmLl9zb3VyY2VfZmls
ZXNfaW5fZGlyKHJvb3RfZGlyLCBzY2FuX2RpcikKLQotICAgIGRlZiBhZGRfcmVzb3VyY2VfcGF0
aF9hbGlhcyhzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc19yZXNv
dXJjZV9wYXRoLCBleGlzdGluZ19yZXNvdXJjZV9wYXRoKToKLSAgICAgICAgIiIiQWRkIHJlc291
cmNlIHBhdGggYWxpYXMuCi0KLSAgICAgICAgT25jZSBhZGRlZCwgcmVxdWVzdCB0byBhbGlhc19y
ZXNvdXJjZV9wYXRoIHdvdWxkIGJlIGhhbmRsZWQgYnkKLSAgICAgICAgaGFuZGxlciByZWdpc3Rl
cmVkIGZvciBleGlzdGluZ19yZXNvdXJjZV9wYXRoLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBhbGlhc19yZXNvdXJjZV9wYXRoOiBhbGlhcyByZXNvdXJjZSBwYXRoCi0gICAgICAgICAg
ICBleGlzdGluZ19yZXNvdXJjZV9wYXRoOiBleGlzdGluZyByZXNvdXJjZSBwYXRoCi0gICAgICAg
ICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5faGFuZGxlcnNb
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aF0KLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJzW2FsaWFz
X3Jlc291cmNlX3BhdGhdID0gaGFuZGxlcgotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAg
ICAgICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCdObyBoYW5kbGVyIGZvcjogJXInICUgZXhpc3Rp
bmdfcmVzb3VyY2VfcGF0aCkKLQotICAgIGRlZiBzb3VyY2Vfd2FybmluZ3Moc2VsZik6Ci0gICAg
ICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2luZyBoYW5kbGVycy4iIiIKLQotICAgICAg
ICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNo
YWtlKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJEbyBleHRyYSBjaGVja2luZyBpbiBXZWIg
U29ja2V0IGhhbmRzaGFrZS4KLQotICAgICAgICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJl
cXVlc3QudXJpIGFuZCBjYWxsIGl0cwotICAgICAgICB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZSBmdW5jdGlvbi4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9k
X3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBkb19leHRyYV9oYW5kc2hh
a2VfLCB1bnVzZWRfdHJhbnNmZXJfZGF0YSA9IHNlbGYuX2hhbmRsZXIocmVxdWVzdCkKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXyhyZXF1ZXN0KQotICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2Vf
dG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnJXMgcmFpc2VkIGV4Y2VwdGlvbiBm
b3IgJXM6ICcgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX0RPX0VYVFJBX0hBTkRT
SEFLRV9IQU5ETEVSX05BTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC53
c19yZXNvdXJjZSksCi0gICAgICAgICAgICAgICAgICAgIGUpCi0gICAgICAgICAgICByYWlzZQot
Ci0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkxldCBh
IGhhbmRsZXIgdHJhbnNmZXJfZGF0YSB3aXRoIGEgV2ViIFNvY2tldCBjbGllbnQuCi0KLSAgICAg
ICAgU2VsZWN0IGEgaGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxs
IGl0cwotICAgICAgICB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAg
ICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgdW51c2VkX2RvX2V4dHJhX2hhbmRzaGFrZSwgdHJhbnNmZXJfZGF0
YV8gPSBzZWxmLl9oYW5kbGVyKHJlcXVlc3QpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRy
YW5zZmVyX2RhdGFfKHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAg
ICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVz
b3VyY2UpLAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAg
IGRlZiBfaGFuZGxlcihzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
d3NfcmVzb3VyY2VfcGF0aCA9IHJlcXVlc3Qud3NfcmVzb3VyY2Uuc3BsaXQoJz8nLCAxKVswXQot
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2hhbmRsZXJzW3dzX3Jlc291cmNlX3BhdGhdCi0gICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXJyb3IoJ05v
IGhhbmRsZXIgZm9yOiAlcicgJSByZXF1ZXN0LndzX3Jlc291cmNlKQotCi0gICAgZGVmIF9zb3Vy
Y2VfZmlsZXNfaW5fZGlyKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2Rpcik6Ci0gICAgICAgICIiIlNv
dXJjZSBhbGwgdGhlIGhhbmRsZXIgc291cmNlIGZpbGVzIGluIHRoZSBzY2FuX2RpciBkaXJlY3Rv
cnkuCi0KLSAgICAgICAgVGhlIHJlc291cmNlIHBhdGggaXMgZGV0ZXJtaW5lZCByZWxhdGl2ZSB0
byByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgdG9fcmVzb3VyY2UgPSBfcGF0aF90
b19yZXNvdXJjZV9jb252ZXJ0ZXIocm9vdF9kaXIpCi0gICAgICAgIGZvciBwYXRoIGluIF9zb3Vy
Y2VfZmlsZV9wYXRocyhzY2FuX2Rpcik6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAg
ICAgaGFuZGxlcnMgPSBfc291cmNlKG9wZW4ocGF0aCkucmVhZCgpKQotICAgICAgICAgICAgZXhj
ZXB0IERpc3BhdGNoRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc291cmNlX3dhcm5p
bmdzLmFwcGVuZCgnJXM6ICVzJyAlIChwYXRoLCBlKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgc2VsZi5faGFuZGxlcnNbdG9fcmVzb3VyY2UocGF0aCldID0gaGFuZGxl
cnMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNo
YWtlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGI4NjI3OGU2ODNjMmY3MTQwYWU1YTZjMjViYWQxYzNlNDNlM2U2MTIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwg
R29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LQotIiIiV2ViIFNvY2tldCBoYW5kc2hha2luZy4KLQotTm90ZTogcmVxdWVzdC5jb25uZWN0aW9u
LndyaXRlL3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCi1tb2RfcHl0
aG9uIGRvY3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVj
dGlvbiBoYW5kbGVycy4KLVVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4g
Rm9yIGV4YW1wbGUsIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUKLW5vdCBzdWl0YWJsZSBiZWNhdXNl
IHRoZXkgZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdyBieXRlcyB3cml0aW5nL3JlYWRpbmcuCi0iIiIK
LQotCi1pbXBvcnQgcmUKLQotaW1wb3J0IHV0aWwKLQotCi1fREVGQVVMVF9XRUJfU09DS0VUX1BP
UlQgPSA4MAotX0RFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCA9IDQ0MwotX1dFQl9TT0NL
RVRfU0NIRU1FID0gJ3dzJwotX1dFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSA9ICd3c3MnCi0KLV9N
QU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0ZWQgdmFsdWUgb3IgTm9uZQot
ICAgIFsnVXBncmFkZScsICdXZWJTb2NrZXQnXSwKLSAgICBbJ0Nvbm5lY3Rpb24nLCAnVXBncmFk
ZSddLAotICAgIFsnSG9zdCcsIE5vbmVdLAotICAgIFsnT3JpZ2luJywgTm9uZV0sCi1dCi0KLV9G
SVJTVF9GSVZFX0xJTkVTID0gbWFwKHJlLmNvbXBpbGUsIFsKLSAgICByJ15HRVQgL1tcU10qIEhU
VFAvMS4xXHJcbiQnLAotICAgIHInXlVwZ3JhZGU6IFdlYlNvY2tldFxyXG4kJywKLSAgICByJ15D
b25uZWN0aW9uOiBVcGdyYWRlXHJcbiQnLAotICAgIHInXkhvc3Q6IFtcU10rXHJcbiQnLAotICAg
IHInXk9yaWdpbjogW1xTXStcclxuJCcsCi1dKQotCi1fU0lYVEhfQU5EX0xBVEVSID0gcmUuY29t
cGlsZSgKLSAgICByJ14nCi0gICAgcicoV2ViU29ja2V0LVByb3RvY29sOiBbXHgyMC1ceDdlXStc
clxuKT8nCi0gICAgcicoQ29va2llOiBbXlxyXSpcclxuKSonCi0gICAgcicoQ29va2llMjogW15c
cl0qXHJcbik/JwotICAgIHInKENvb2tpZTogW15ccl0qXHJcbikqJwotICAgIHInXHJcbicpCi0K
LQotZGVmIF9kZWZhdWx0X3BvcnQoaXNfc2VjdXJlKToKLSAgICBpZiBpc19zZWN1cmU6Ci0gICAg
ICAgIHJldHVybiBfREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUCi0gICAgZWxzZToKLSAg
ICAgICAgcmV0dXJuIF9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVAotCi0KLWNsYXNzIEhhbmRzaGFr
ZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiRXhjZXB0aW9uIGluIFdlYiBTb2NrZXQgSGFuZHNo
YWtlLiIiIgotCi0gICAgcGFzcwotCi0KLWRlZiBfdmFsaWRhdGVfcHJvdG9jb2wocHJvdG9jb2wp
OgotICAgICIiIlZhbGlkYXRlIFdlYlNvY2tldC1Qcm90b2NvbCBzdHJpbmcuIiIiCi0KLSAgICBp
ZiBub3QgcHJvdG9jb2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJbnZhbGlkIFdl
YlNvY2tldC1Qcm90b2NvbDogZW1wdHknKQotICAgIGZvciBjIGluIHByb3RvY29sOgotICAgICAg
ICBpZiBub3QgMHgyMCA8PSBvcmQoYykgPD0gMHg3ZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRz
aGFrZUVycm9yKCdJbGxlZ2FsIGNoYXJhY3RlciBpbiBwcm90b2NvbDogJXInICUgYykKLQotCi1j
bGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBwZXJmb3JtcyBXZWIg
U29ja2V0IGhhbmRzaGFrZS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBk
aXNwYXRjaGVyLCBzdHJpY3Q9RmFsc2UpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFu
Y2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVx
dWVzdC4KLSAgICAgICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgKGRpc3BhdGNoLkRpc3Bh
dGNoZXIpLgotICAgICAgICAgICAgc3RyaWN0OiBTdHJpY3RseSBjaGVjayBoYW5kc2hha2UgcmVx
dWVzdC4gRGVmYXVsdDogRmFsc2UuCi0gICAgICAgICAgICAgICAgSWYgVHJ1ZSwgcmVxdWVzdC5j
b25uZWN0aW9uIG11c3QgcHJvdmlkZSBnZXRfbWVtb3JpemVkX2xpbmVzCi0gICAgICAgICAgICAg
ICAgbWV0aG9kLgotCi0gICAgICAgIEhhbmRzaGFrZXIgd2lsbCBhZGQgYXR0cmlidXRlcyBzdWNo
IGFzIHdzX3Jlc291cmNlIGluIHBlcmZvcm1pbmcKLSAgICAgICAgaGFuZHNoYWtlLgotICAgICAg
ICAiIiIKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9k
aXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLl9zdHJpY3QgPSBzdHJpY3QKLQot
ICAgIGRlZiBkb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm0gV2ViIFNvY2tl
dCBIYW5kc2hha2UuIiIiCi0KLSAgICAgICAgc2VsZi5fY2hlY2tfaGVhZGVyX2xpbmVzKCkKLSAg
ICAgICAgc2VsZi5fc2V0X3Jlc291cmNlKCkKLSAgICAgICAgc2VsZi5fc2V0X29yaWdpbigpCi0g
ICAgICAgIHNlbGYuX3NldF9sb2NhdGlvbigpCi0gICAgICAgIHNlbGYuX3NldF9wcm90b2NvbCgp
Ci0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVl
c3QpCi0gICAgICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKCkKLQotICAgIGRlZiBfc2V0X3Jlc291
cmNlKHNlbGYpOgotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Jlc291cmNlID0gc2VsZi5fcmVx
dWVzdC51cmkKLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToKLSAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19vcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW5bJ09yaWdpbiddCi0KLSAg
ICBkZWYgX3NldF9sb2NhdGlvbihzZWxmKToKLSAgICAgICAgbG9jYXRpb25fcGFydHMgPSBbXQot
ICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LmlzX2h0dHBzKCk6Ci0gICAgICAgICAgICBsb2NhdGlv
bl9wYXJ0cy5hcHBlbmQoX1dFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChfV0VCX1NPQ0tFVF9TQ0hFTUUpCi0g
ICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICAgICAgaG9zdCwgcG9ydCA9
IHNlbGYuX3BhcnNlX2hvc3RfaGVhZGVyKCkKLSAgICAgICAgY29ubmVjdGlvbl9wb3J0ID0gc2Vs
Zi5fcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHJbMV0KLSAgICAgICAgaWYgcG9ydCAhPSBj
b25uZWN0aW9uX3BvcnQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignSGVhZGVy
L2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaDogJWQvJWQnICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChwb3J0LCBjb25uZWN0aW9uX3BvcnQpKQotICAgICAgICBsb2NhdGlvbl9w
YXJ0cy5hcHBlbmQoaG9zdCkKLSAgICAgICAgaWYgKHBvcnQgIT0gX2RlZmF1bHRfcG9ydChzZWxm
Ll9yZXF1ZXN0LmlzX2h0dHBzKCkpKToKLSAgICAgICAgICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVu
ZCgnOicpCi0gICAgICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoc3RyKHBvcnQpKQotICAg
ICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoc2VsZi5fcmVxdWVzdC51cmkpCi0gICAgICAgIHNl
bGYuX3JlcXVlc3Qud3NfbG9jYXRpb24gPSAnJy5qb2luKGxvY2F0aW9uX3BhcnRzKQotCi0gICAg
ZGVmIF9wYXJzZV9ob3N0X2hlYWRlcihzZWxmKToKLSAgICAgICAgZmllbGRzID0gc2VsZi5fcmVx
dWVzdC5oZWFkZXJzX2luWydIb3N0J10uc3BsaXQoJzonLCAxKQotICAgICAgICBpZiBsZW4oZmll
bGRzKSA9PSAxOgotICAgICAgICAgICAgcmV0dXJuIGZpZWxkc1swXSwgX2RlZmF1bHRfcG9ydChz
ZWxmLl9yZXF1ZXN0LmlzX2h0dHBzKCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVy
biBmaWVsZHNbMF0sIGludChmaWVsZHNbMV0pCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBl
OgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0ludmFsaWQgcG9ydCBudW1iZXIg
Zm9ybWF0OiAlcicgJSBlKQotCi0gICAgZGVmIF9zZXRfcHJvdG9jb2woc2VsZik6Ci0gICAgICAg
IHByb3RvY29sID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgnV2ViU29ja2V0LVByb3Rv
Y29sJykKLSAgICAgICAgaWYgcHJvdG9jb2wgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBfdmFs
aWRhdGVfcHJvdG9jb2wocHJvdG9jb2wpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9j
b2wgPSBwcm90b2NvbAotCi0gICAgZGVmIF9zZW5kX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAg
c2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAotICAgICAgICAgICAgICAgICdIVFRQLzEu
MSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJykKLSAgICAgICAgc2VsZi5f
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJykKLSAgICAg
ICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdDb25uZWN0aW9uOiBVcGdyYWRlXHJc
bicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnV2ViU29ja2V0LU9y
aWdpbjogJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHNlbGYuX3Jl
cXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUo
J1xyXG4nKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1dlYlNvY2tl
dC1Mb2NhdGlvbjogJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKHNl
bGYuX3JlcXVlc3Qud3NfbG9jYXRpb24pCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlv
bi53cml0ZSgnXHJcbicpCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2w6Ci0g
ICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1dlYlNvY2tldC1Qcm90
b2NvbDogJykKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzZWxm
Ll9yZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlKCdcclxuJykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
KCdcclxuJykKLQotICAgIGRlZiBfY2hlY2tfaGVhZGVyX2xpbmVzKHNlbGYpOgotICAgICAgICBm
b3Iga2V5LCBleHBlY3RlZF92YWx1ZSBpbiBfTUFOREFUT1JZX0hFQURFUlM6Ci0gICAgICAgICAg
ICBhY3R1YWxfdmFsdWUgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGtleSkKLSAgICAg
ICAgICAgIGlmIG5vdCBhY3R1YWxfdmFsdWU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXJyb3IoJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBrZXkpCi0gICAgICAgICAgICBp
ZiBleHBlY3RlZF92YWx1ZToKLSAgICAgICAgICAgICAgICBpZiBhY3R1YWxfdmFsdWUgIT0gZXhw
ZWN0ZWRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJ
bGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChrZXksIGFjdHVhbF92YWx1ZSkpCi0gICAgICAgIGlmIHNlbGYu
X3N0cmljdDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsaW5lcyA9IHNlbGYu
X3JlcXVlc3QuY29ubmVjdGlvbi5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLSAgICAgICAgICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvciwgZToKLSAgICAgICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVz
c2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdTdHJpY3QgaGFuZHNoYWtl
IGlzIHNwZWNpZmllZCBidXQgdGhlIGNvbm5lY3Rpb24gJwotICAgICAgICAgICAgICAgICAgICAn
ZG9lc25cJ3QgcHJvdmlkZSBnZXRfbWVtb3JpemVkX2xpbmVzKCknLCBlKQotICAgICAgICAgICAg
ICAgIHJhaXNlCi0gICAgICAgICAgICBzZWxmLl9jaGVja19maXJzdF9saW5lcyhsaW5lcykKLQot
ICAgIGRlZiBfY2hlY2tfZmlyc3RfbGluZXMoc2VsZiwgbGluZXMpOgotICAgICAgICBpZiBsZW4o
bGluZXMpIDwgbGVuKF9GSVJTVF9GSVZFX0xJTkVTKToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRz
aGFrZUVycm9yKCdUb28gZmV3IGhlYWRlciBsaW5lczogJWQnICUgbGVuKGxpbmVzKSkKLSAgICAg
ICAgZm9yIGxpbmUsIHJlZ2V4cCBpbiB6aXAobGluZXMsIF9GSVJTVF9GSVZFX0xJTkVTKToKLSAg
ICAgICAgICAgIGlmIG5vdCByZWdleHAuc2VhcmNoKGxpbmUpOgotICAgICAgICAgICAgICAgIHJh
aXNlIEhhbmRzaGFrZUVycm9yKCdVbmV4cGVjdGVkIGhlYWRlcjogJXIgZG9lc25cJ3QgbWF0Y2gg
JXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobGluZSwgcmVnZXhw
LnBhdHRlcm4pKQotICAgICAgICBzaXh0aF9hbmRfbGF0ZXIgPSAnJy5qb2luKGxpbmVzWzU6XSkK
LSAgICAgICAgaWYgbm90IF9TSVhUSF9BTkRfTEFURVIuc2VhcmNoKHNpeHRoX2FuZF9sYXRlcik6
Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignVW5leHBlY3RlZCBoZWFkZXI6ICVy
IGRvZXNuXCd0IG1hdGNoICVyJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAo
c2l4dGhfYW5kX2xhdGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NJ
WFRIX0FORF9MQVRFUi5wYXR0ZXJuKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVy
cGFyc2VyaGFuZGxlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTI0YjlmMWEy
NDFjNGIzOTEwYzMwMDNhYzg4NjliMzc5MzQ4NGY4Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJQ
eXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIGZvciBtb2RfcHl3ZWJzb2NrZXQuCi0KLUFwYWNoZSBI
VFRQIFNlcnZlciBhbmQgbW9kX3B5dGhvbiBtdXN0IGJlIGNvbmZpZ3VyZWQgc3VjaCB0aGF0IHRo
aXMKLWZ1bmN0aW9uIGlzIGNhbGxlZCB0byBoYW5kbGUgV2ViIFNvY2tldCByZXF1ZXN0LgotIiIi
Ci0KLQotZnJvbSBtb2RfcHl0aG9uIGltcG9ydCBhcGFjaGUKLQotaW1wb3J0IGRpc3BhdGNoCi1p
bXBvcnQgaGFuZHNoYWtlCi1pbXBvcnQgdXRpbAotCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNp
ZnkgdGhlIGhhbmRsZXIgcm9vdCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFORExFUl9ST09UID0gJ21v
ZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QnCi0KLSMgUHl0aG9uT3B0aW9uIHRvIHNwZWNpZnkg
dGhlIGhhbmRsZXIgc2NhbiBkaXJlY3RvcnkuCi0jIFRoaXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1
bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuCi0jIFRoZSBkZWZhdWx0IGlzIHRoZSByb290IGRpcmVj
dG9yeS4KLV9QWU9QVF9IQU5ETEVSX1NDQU4gPSAnbW9kX3B5d2Vic29ja2V0LmhhbmRsZXJfc2Nh
bicKLQotCi1kZWYgX2NyZWF0ZV9kaXNwYXRjaGVyKCk6Ci0gICAgX0hBTkRMRVJfUk9PVCA9IGFw
YWNoZS5tYWluX3NlcnZlci5nZXRfb3B0aW9ucygpLmdldCgKLSAgICAgICAgICAgIF9QWU9QVF9I
QU5ETEVSX1JPT1QsIE5vbmUpCi0gICAgaWYgbm90IF9IQU5ETEVSX1JPT1Q6Ci0gICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAlIF9QWU9QVF9I
QU5ETEVSX1JPT1QsCi0gICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQot
ICAgIF9IQU5ETEVSX1NDQU4gPSBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29wdGlvbnMoKS5nZXQo
Ci0gICAgICAgICAgICBfUFlPUFRfSEFORExFUl9TQ0FOLCBfSEFORExFUl9ST09UKQotICAgIGRp
c3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9IQU5ETEVSX1JPT1QsIF9IQU5ETEVSX1ND
QU4pCi0gICAgZm9yIHdhcm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKToKLSAg
ICAgICAgYXBhY2hlLmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nLCBh
cGFjaGUuQVBMT0dfV0FSTklORykKLSAgICByZXR1cm4gZGlzcGF0Y2hlcgotCi0KLSMgSW5pdGlh
bGl6ZQotX2Rpc3BhdGNoZXIgPSBfY3JlYXRlX2Rpc3BhdGNoZXIoKQotCi0KLWRlZiBoZWFkZXJw
YXJzZXJoYW5kbGVyKHJlcXVlc3QpOgotICAgICIiIkhhbmRsZSByZXF1ZXN0LgotCi0gICAgQXJn
czoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi0gICAgVGhpcyBmdW5j
dGlvbiBpcyBuYW1lZCBoZWFkZXJwYXJzZXJoYW5kbGVyIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1
bHQgbmFtZQotICAgIGZvciBhIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIuCi0gICAgIiIiCi0K
LSAgICB0cnk6Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1
ZXN0LCBfZGlzcGF0Y2hlcikKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAg
ICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiByZXNvdXJjZTogJXInICUg
cmVxdWVzdC53c19yZXNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQ
TE9HX0RFQlVHKQotICAgICAgICBfZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0g
ICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwgZToKLSAgICAgICAgIyBIYW5kc2hh
a2UgZm9yIHdzL3dzcyBmYWlsZWQuCi0gICAgICAgICMgQnV0IHRoZSByZXF1ZXN0IGNhbiBiZSB2
YWxpZCBodHRwL2h0dHBzIHJlcXVlc3QuCi0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2Rf
cHl3ZWJzb2NrZXQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQotICAgICAgICByZXR1cm4g
YXBhY2hlLkRFQ0xJTkVECi0gICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGU6Ci0g
ICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUsIGFwYWNo
ZS5BUExPR19XQVJOSU5HKQotICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0gICAgcmV0
dXJuIGFwYWNoZS5ET05FICAjIFJldHVybiBET05FIHN1Y2ggdGhhdCBubyBvdGhlciBoYW5kbGVy
cyBhcmUgaW52b2tlZC4KLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjhhNTRlNDU2ZDYwZTgxYTNhMjRkNjQzZjYx
ZmM0NjQxYzk4YzliLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MSAr
MCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
Ik1lbW9yaXppbmcgZmlsZS4KLQotQSBtZW1vcml6aW5nIGZpbGUgd3JhcHMgYSBmaWxlIGFuZCBt
ZW1vcml6ZXMgbGluZXMgcmVhZCBieSByZWFkbGluZS4KLSIiIgotCi0KLWltcG9ydCBzeXMKLQot
Ci1jbGFzcyBNZW1vcml6aW5nRmlsZShvYmplY3QpOgotICAgICIiIk1lbW9yaXppbmdGaWxlIHdy
YXBzIGEgZmlsZSBhbmQgbWVtb3JpemVzIGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCi0KLSAgICBO
b3RlIHRoYXQgZGF0YSByZWFkIGJ5IG90aGVyIG1ldGhvZHMgYXJlIG5vdCBtZW1vcml6ZWQuIFRo
aXMgYmVoYXZpb3IKLSAgICBpcyBnb29kIGVub3VnaCBmb3IgbWVtb3JpemluZyBsaW5lcyBTaW1w
bGVIVFRQU2VydmVyIHJlYWRzIGJlZm9yZQotICAgIHRoZSBjb250cm9sIHJlYWNoZXMgV2ViU29j
a2V0UmVxdWVzdEhhbmRsZXIuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVf
LCBtYXhfbWVtb3JpemVkX2xpbmVzPXN5cy5tYXhpbnQpOgotICAgICAgICAiIiJDb25zdHJ1Y3Qg
YW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZpbGVfOiB0aGUgZmls
ZSBvYmplY3QgdG8gd3JhcC4KLSAgICAgICAgICAgIG1heF9tZW1vcml6ZWRfbGluZXM6IHRoZSBt
YXhpbXVtIG51bWJlciBvZiBsaW5lcyB0byBtZW1vcml6ZS4KLSAgICAgICAgICAgICAgICBPbmx5
IHRoZSBmaXJzdCBtYXhfbWVtb3JpemVkX2xpbmVzIGFyZSBtZW1vcml6ZWQuCi0gICAgICAgICAg
ICAgICAgRGVmYXVsdDogc3lzLm1heGludC4gCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9m
aWxlID0gZmlsZV8KLSAgICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzID0gW10KLSAgICAgICAg
c2VsZi5fbWF4X21lbW9yaXplZF9saW5lcyA9IG1heF9tZW1vcml6ZWRfbGluZXMKLQotICAgIGRl
ZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluICgnX2Zp
bGUnLCAnX21lbW9yaXplZF9saW5lcycsICdfbWF4X21lbW9yaXplZF9saW5lcycsCi0gICAgICAg
ICAgICAgICAgICAgICdyZWFkbGluZScsICdnZXRfbWVtb3JpemVkX2xpbmVzJyk6Ci0gICAgICAg
ICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbGUuX19nZXRhdHRyaWJ1dGVfXyhuYW1lKQotCi0gICAgZGVmIHJlYWRs
aW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBmaWxlLnJlYWRsaW5lIGFuZCBtZW1vcml6
ZSB0aGUgbGluZSByZWFkLiIiIgotCi0gICAgICAgIGxpbmUgPSBzZWxmLl9maWxlLnJlYWRsaW5l
KCkKLSAgICAgICAgaWYgbGluZSBhbmQgbGVuKHNlbGYuX21lbW9yaXplZF9saW5lcykgPCBzZWxm
Ll9tYXhfbWVtb3JpemVkX2xpbmVzOgotICAgICAgICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVz
LmFwcGVuZChsaW5lKQotICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVmIGdldF9tZW1vcml6
ZWRfbGluZXMoc2VsZik6Ci0gICAgICAgICIiIkdldCBsaW5lcyBtZW1vcml6ZWQgc28gZmFyLiIi
IgotICAgICAgICByZXR1cm4gc2VsZi5fbWVtb3JpemVkX2xpbmVzCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21z
Z3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwYWU3MTU5MTNhMTU1MGZj
MThhZDViNzJjNzE3NDczYTExMzUzOTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
MjUwICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIk1lc3NhZ2UgcmVsYXRlZCB1dGls
aXRpZXMuCi0KLU5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGlu
IHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAotbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQg
dGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24gaGFuZGxlcnMuCi1VbmZvcnR1
bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0Lndy
aXRlL3JlYWQgYXJlCi1ub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVj
dCByYXcgYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgotIiIiCi0KLQotaW1wb3J0IFF1ZXVlCi1pbXBv
cnQgdGhyZWFkaW5nCi1pbXBvcnQgdXRpbAotCi0KLWNsYXNzIE1zZ1V0aWxFeGNlcHRpb24oRXhj
ZXB0aW9uKToKLSAgICBwYXNzCi0KLQotZGVmIF9yZWFkKHJlcXVlc3QsIGxlbmd0aCk6Ci0gICAg
Ynl0ZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24ucmVhZChsZW5ndGgpCi0gICAgaWYgbm90IGJ5dGVz
OgotICAgICAgICByYWlzZSBNc2dVdGlsRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWls
ZWQgdG8gcmVjZWl2ZSBtZXNzYWdlIGZyb20gJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAg
IChyZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSkKLSAgICByZXR1cm4gYnl0ZXMKLQot
Ci1kZWYgX3dyaXRlKHJlcXVlc3QsIGJ5dGVzKToKLSAgICB0cnk6Ci0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZShieXRlcykKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAg
ICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0Zh
aWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQotICAgICAgICAgICAgICAgICAgICAgICAg
KHJlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVfYWRkciwpLAotICAgICAgICAgICAgICAgIGUpCi0g
ICAgICAgIHJhaXNlCi0KLQotZGVmIHNlbmRfbWVzc2FnZShyZXF1ZXN0LCBtZXNzYWdlKToKLSAg
ICAiIiJTZW5kIG1lc3NhZ2UuCi0KLSAgICBBcmdzOgotICAgICAgICByZXF1ZXN0OiBtb2RfcHl0
aG9uIHJlcXVlc3QuCi0gICAgICAgIG1lc3NhZ2U6IHVuaWNvZGUgc3RyaW5nIHRvIHNlbmQuCi0g
ICAgIiIiCi0KLSAgICBfd3JpdGUocmVxdWVzdCwgJ1x4MDAnICsgbWVzc2FnZS5lbmNvZGUoJ3V0
Zi04JykgKyAnXHhmZicpCi0KLQotZGVmIHJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KToKLSAgICAi
IiJSZWNlaXZlIGEgV2ViIFNvY2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFzIHVu
aWNvZGUgc3RyaW5nLgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiBy
ZXF1ZXN0LgotICAgICIiIgotCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgIyBSZWFkIDEgYnl0
ZS4KLSAgICAgICAgIyBtcF9jb25uLnJlYWQgd2lsbCBibG9jayBpZiBubyBieXRlcyBhcmUgYXZh
aWxhYmxlLgotICAgICAgICAjIFRpbWVvdXQgaXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRpcmVj
dGl2ZSBvZiBBcGFjaGUuCi0gICAgICAgIGZyYW1lX3R5cGVfc3RyID0gX3JlYWQocmVxdWVzdCwg
MSkKLSAgICAgICAgZnJhbWVfdHlwZSA9IG9yZChmcmFtZV90eXBlX3N0clswXSkKLSAgICAgICAg
aWYgKGZyYW1lX3R5cGUgJiAweDgwKSA9PSAweDgwOgotICAgICAgICAgICAgIyBUaGUgcGF5bG9h
ZCBsZW5ndGggaXMgc3BlY2lmaWVkIGluIHRoZSBmcmFtZS4KLSAgICAgICAgICAgICMgUmVhZCBh
bmQgZGlzY2FyZC4KLSAgICAgICAgICAgIGxlbmd0aCA9IF9wYXlsb2FkX2xlbmd0aChyZXF1ZXN0
KQotICAgICAgICAgICAgX3JlY2VpdmVfYnl0ZXMocmVxdWVzdCwgbGVuZ3RoKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgIyBUaGUgcGF5bG9hZCBpcyBkZWxpbWl0ZWQgd2l0aCBceGZmLgot
ICAgICAgICAgICAgYnl0ZXMgPSBfcmVhZF91bnRpbChyZXF1ZXN0LCAnXHhmZicpCi0gICAgICAg
ICAgICAjIFRoZSBXZWIgU29ja2V0IHByb3RvY29sIHNlY3Rpb24gNC40IHNwZWNpZmllcyB0aGF0
IGludmFsaWQKLSAgICAgICAgICAgICMgY2hhcmFjdGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGgg
VStmZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUi4KLSAgICAgICAgICAgIG1lc3NhZ2UgPSBieXRl
cy5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQotICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9
PSAweDAwOgotICAgICAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0gICAgICAgICAgICAjIERp
c2NhcmQgZGF0YSBvZiBvdGhlciB0eXBlcy4KLQotCi1kZWYgX3BheWxvYWRfbGVuZ3RoKHJlcXVl
c3QpOgotICAgIGxlbmd0aCA9IDAKLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBiX3N0ciA9IF9y
ZWFkKHJlcXVlc3QsIDEpCi0gICAgICAgIGIgPSBvcmQoYl9zdHJbMF0pCi0gICAgICAgIGxlbmd0
aCA9IGxlbmd0aCAqIDEyOCArIChiICYgMHg3ZikKLSAgICAgICAgaWYgKGIgJiAweDgwKSA9PSAw
OgotICAgICAgICAgICAgYnJlYWsKLSAgICByZXR1cm4gbGVuZ3RoCi0KLQotZGVmIF9yZWNlaXZl
X2J5dGVzKHJlcXVlc3QsIGxlbmd0aCk6Ci0gICAgYnl0ZXMgPSBbXQotICAgIHdoaWxlIGxlbmd0
aCA+IDA6Ci0gICAgICAgIG5ld19ieXRlcyA9IF9yZWFkKHJlcXVlc3QsIGxlbmd0aCkKLSAgICAg
ICAgYnl0ZXMuYXBwZW5kKG5ld19ieXRlcykKLSAgICAgICAgbGVuZ3RoIC09IGxlbihuZXdfYnl0
ZXMpCi0gICAgcmV0dXJuICcnLmpvaW4oYnl0ZXMpCi0KLQotZGVmIF9yZWFkX3VudGlsKHJlcXVl
c3QsIGRlbGltX2NoYXIpOgotICAgIGJ5dGVzID0gW10KLSAgICB3aGlsZSBUcnVlOgotICAgICAg
ICBjaCA9IF9yZWFkKHJlcXVlc3QsIDEpCi0gICAgICAgIGlmIGNoID09IGRlbGltX2NoYXI6Ci0g
ICAgICAgICAgICBicmVhawotICAgICAgICBieXRlcy5hcHBlbmQoY2gpCi0gICAgcmV0dXJuICcn
LmpvaW4oYnl0ZXMpCi0KLQotY2xhc3MgTWVzc2FnZVJlY2VpdmVyKHRocmVhZGluZy5UaHJlYWQp
OgotICAgICIiIlRoaXMgY2xhc3MgcmVjZWl2ZXMgbWVzc2FnZXMgZnJvbSB0aGUgY2xpZW50Lgot
Ci0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyB0aHJlZSB3YXlzIHRvIHJlY2VpdmUgbWVzc2FnZXM6
IGJsb2NraW5nLCBub24tYmxvY2tpbmcsCi0gICAgYW5kIHZpYSBjYWxsYmFjay4gQ2FsbGJhY2sg
aGFzIHRoZSBoaWdoZXN0IHByZWNlZGVuY2UuCi0KLSAgICBOb3RlOiBUaGlzIGNsYXNzIHNob3Vs
ZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCi0gICAgYmVj
YXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9yIGlm
IHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCi0gICAg
IiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9ubWVzc2FnZT1Ob25lKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBvbm1lc3NhZ2U6
IGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYSBtZXNzYWdlIGlzIHJlY2VpdmVkLgotICAg
ICAgICAgICAgICAgICAgICAgICBNYXkgYmUgTm9uZS4gSWYgbm90IE5vbmUsIHRoZSBmdW5jdGlv
biBpcyBjYWxsZWQgb24KLSAgICAgICAgICAgICAgICAgICAgICAgYW5vdGhlciB0aHJlYWQuIElu
IHRoYXQgY2FzZSwgTWVzc2FnZVJlY2VpdmVyLnJlY2VpdmUKLSAgICAgICAgICAgICAgICAgICAg
ICAgYW5kIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlX25vd2FpdCBhcmUgdXNlbGVzcyBiZWNhdXNl
Ci0gICAgICAgICAgICAgICAgICAgICAgIHRoZXkgd2lsbCBuZXZlciByZXR1cm4gYW55IG1lc3Nh
Z2VzLgotICAgICAgICAiIiIKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxm
KQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9
IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5fb25tZXNzYWdlID0gb25tZXNzYWdlCi0gICAg
ICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zZXREYWVtb24o
VHJ1ZSkKLSAgICAgICAgc2VsZi5zdGFydCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAg
ICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICBtZXNzYWdlID0g
cmVjZWl2ZV9tZXNzYWdlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBpZiBzZWxmLl9vbm1l
c3NhZ2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChtZXNzYWdlKQotCi0g
ICAgZGVmIHJlY2VpdmUoc2VsZik6Ci0gICAgICAgICIiIiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9t
IHRoZSBjaGFubmVsLCBibG9ja2luZy4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAgICAgICAg
bWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nLgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3F1ZXVlLmdldCgpCi0KLSAgICBkZWYgcmVjZWl2ZV9ub3dhaXQoc2VsZik6Ci0gICAg
ICAgICIiIiBSZWNlaXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBjaGFubmVsLCBub24tYmxvY2tpbmcu
Ci0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2UgYXMgYSB1bmljb2RlIHN0
cmluZyBpZiBhdmFpbGFibGUuIE5vbmUgb3RoZXJ3aXNlLgotICAgICAgICAiIiIKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3F1ZXVlLmdldF9ub3dhaXQoKQotICAg
ICAgICBleGNlcHQgUXVldWUuRW1wdHk6Ci0gICAgICAgICAgICBtZXNzYWdlID0gTm9uZQotICAg
ICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIHN0b3Aoc2VsZik6Ci0gICAgICAgICIiIlJl
cXVlc3QgdG8gc3RvcCB0aGlzIGluc3RhbmNlLgotCi0gICAgICAgIFRoZSBpbnN0YW5jZSB3aWxs
IGJlIHN0b3BwZWQgYWZ0ZXIgcmVjZWl2aW5nIHRoZSBuZXh0IG1lc3NhZ2UuCi0gICAgICAgIFRo
aXMgbWV0aG9kIG1heSBub3QgYmUgdmVyeSB1c2VmdWwsIGJ1dCB0aGVyZSBpcyBubyBjbGVhbiB3
YXkKLSAgICAgICAgaW4gUHl0aG9uIHRvIGZvcmNlZnVsbHkgc3RvcCBhIHJ1bm5pbmcgdGhyZWFk
LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQgPSBUcnVlCi0KLQot
Y2xhc3MgTWVzc2FnZVNlbmRlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJUaGlzIGNsYXNz
IHNlbmRzIG1lc3NhZ2VzIHRvIHRoZSBjbGllbnQuCi0KLSAgICBUaGlzIGNsYXNzIHByb3ZpZGVz
IGJvdGggc3luY2hyb25vdXMgYW5kIGFzeW5jaHJvbm91cyB3YXlzIHRvIHNlbmQKLSAgICBtZXNz
YWdlcy4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGggdGhl
IHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBiZWNhdXNlIHB5T3BlblNTTCB1c2VkIGJ5
IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tldAotICAgIGlzIGFj
Y2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAg
ICAgICAiIiIKLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAg
ICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1
ZXVlKCkKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5zdGFydCgp
Ci0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAg
bWVzc2FnZSwgY29uZGl0aW9uID0gc2VsZi5fcXVldWUuZ2V0KCkKLSAgICAgICAgICAgIGNvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHNlbmRfbWVzc2FnZShzZWxmLl9yZXF1ZXN0LCBt
ZXNzYWdlKQotICAgICAgICAgICAgY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAgICBjb25k
aXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgc2VuZChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAg
IiIiU2VuZCBhIG1lc3NhZ2UsIGJsb2NraW5nLiIiIgotCi0gICAgICAgIGNvbmRpdGlvbiA9IHRo
cmVhZGluZy5Db25kaXRpb24oKQotICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAg
IHNlbGYuX3F1ZXVlLnB1dCgobWVzc2FnZSwgY29uZGl0aW9uKSkKLSAgICAgICAgY29uZGl0aW9u
LndhaXQoKQotCi0gICAgZGVmIHNlbmRfbm93YWl0KHNlbGYsIG1lc3NhZ2UpOgotICAgICAgICAi
IiJTZW5kIGEgbWVzc2FnZSwgbm9uLWJsb2NraW5nLiIiIgotCi0gICAgICAgIHNlbGYuX3F1ZXVl
LnB1dCgobWVzc2FnZSwgdGhyZWFkaW5nLkNvbmRpdGlvbigpKSkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
c3RhbmRhbG9uZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQxMTkxMDU2ODY3
MzMyZWVlM2VlMGMyMjRlZGNiODNjMWFiZmE1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw0NTMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdo
dCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLQotCi0iIiJTdGFuZGFsb25lIFdlYiBTb2NrZXQgc2VydmVyLgotCi1Vc2UgdGhpcyBz
ZXJ2ZXIgdG8gcnVuIG1vZF9weXdlYnNvY2tldCB3aXRob3V0IEFwYWNoZSBIVFRQIFNlcnZlci4K
LQotVXNhZ2U6Ci0gICAgcHl0aG9uIHN0YW5kYWxvbmUucHkgWy1wIDx3c19wb3J0Pl0gWy13IDx3
ZWJzb2NrX2hhbmRsZXJzPl0KLSAgICAgICAgICAgICAgICAgICAgICAgICBbLXMgPHNjYW5fZGly
Pl0KLSAgICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotICAgICAg
ICAgICAgICAgICAgICAgICAgIFstbSA8d2Vic29ja19oYW5kbGVyc19tYXBfZmlsZT5dCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgLi4uIGZvciBvdGhlciBvcHRpb25zLCBzZWUgX21haW4gYmVs
b3cgLi4uCi0KLTx3c19wb3J0PiBpcyB0aGUgcG9ydCBudW1iZXIgdG8gdXNlIGZvciB3czovLyBj
b25uZWN0aW9uLgotCi08ZG9jdW1lbnRfcm9vdD4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIEhUTUwgZmlsZXMuCi0KLTx3ZWJzb2NrX2hhbmRsZXJzPiBpcyB0aGUgcGF0aCB0
byB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgV2ViIFNvY2tldCBoYW5kbGVycy4KLVNlZSBfX2luaXRf
Xy5weSBmb3IgZGV0YWlscyBvZiA8d2Vic29ja19oYW5kbGVycz4gYW5kIGhvdyB0byB3cml0ZSBX
ZWIgU29ja2V0Ci1oYW5kbGVycy4gSWYgdGhpcyBwYXRoIGlzIHJlbGF0aXZlLCA8ZG9jdW1lbnRf
cm9vdD4gaXMgdXNlZCBhcyB0aGUgYmFzZS4KLQotPHNjYW5fZGlyPiBpcyBhIHBhdGggdW5kZXIg
dGhlIHJvb3QgZGlyZWN0b3J5LiBJZiBzcGVjaWZpZWQsIG9ubHkgdGhlIGhhbmRsZXJzCi11bmRl
ciBzY2FuX2RpciBhcmUgc2Nhbm5lZC4gVGhpcyBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGlt
ZS4KLQotTm90ZToKLVRoaXMgc2VydmVyIGlzIGRlcml2ZWQgZnJvbSBTb2NrZXRTZXJ2ZXIuVGhy
ZWFkaW5nTWl4SW4uIEhlbmNlIGEgdGhyZWFkIGlzCi11c2VkIGZvciBlYWNoIHJlcXVlc3QuCi0i
IiIKLQotaW1wb3J0IEJhc2VIVFRQU2VydmVyCi1pbXBvcnQgQ0dJSFRUUFNlcnZlcgotaW1wb3J0
IFNpbXBsZUhUVFBTZXJ2ZXIKLWltcG9ydCBTb2NrZXRTZXJ2ZXIKLWltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgbG9nZ2luZy5oYW5kbGVycwotaW1wb3J0IG9wdHBhcnNlCi1pbXBvcnQgb3MKLWltcG9y
dCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwotCi1fSEFTX09QRU5fU1NMID0gRmFsc2UK
LXRyeToKLSAgICBpbXBvcnQgT3BlblNTTC5TU0wKLSAgICBfSEFTX09QRU5fU1NMID0gVHJ1ZQot
ZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLQotaW1wb3J0IGRpc3BhdGNoCi1pbXBvcnQg
aGFuZHNoYWtlCi1pbXBvcnQgbWVtb3JpemluZ2ZpbGUKLWltcG9ydCB1dGlsCi0KLQotX0xPR19M
RVZFTFMgPSB7Ci0gICAgJ2RlYnVnJzogbG9nZ2luZy5ERUJVRywKLSAgICAnaW5mbyc6IGxvZ2dp
bmcuSU5GTywKLSAgICAnd2Fybic6IGxvZ2dpbmcuV0FSTiwKLSAgICAnZXJyb3InOiBsb2dnaW5n
LkVSUk9SLAotICAgICdjcml0aWNhbCc6IGxvZ2dpbmcuQ1JJVElDQUx9OwotCi1fREVGQVVMVF9M
T0dfTUFYX0JZVEVTID0gMTAyNCAqIDI1NgotX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUK
LQotX0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpFID0gMTI4Ci0KLSMgMTAyNCBpcyBwcmFjdGlj
YWxseSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgot
X01BWF9NRU1PUklaRURfTElORVMgPSAxMDI0Ci0KLWRlZiBfcHJpbnRfd2FybmluZ3NfaWZfYW55
KGRpc3BhdGNoZXIpOgotICAgIHdhcm5pbmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3Mo
KQotICAgIGlmIHdhcm5pbmdzOgotICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKLSAg
ICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5n
KQotCi0KLWNsYXNzIF9TdGFuZGFsb25lQ29ubmVjdGlvbihvYmplY3QpOgotICAgICIiIk1pbWlj
IG1vZF9weXRob24gbXBfY29ubi4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0
X2hhbmRsZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFu
ZGxlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxl
ciA9IHJlcXVlc3RfaGFuZGxlcgotCi0gICAgZGVmIGdldF9sb2NhbF9hZGRyKHNlbGYpOgotICAg
ICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5sb2NhbF9hZGRyLiIiIgotICAgICAgICBy
ZXR1cm4gKHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCi0gICAgICAg
ICAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKLSAgICBs
b2NhbF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCi0KLSAgICBkZWYgZ2V0X3JlbW90
ZV9hZGRyKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVf
YWRkci4KLQotICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3
b3JrIGJlY2F1c2UgdGhlIHJlcXVlc3QKLSAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6
ZWQgeWV0IHRoZXJlLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNs
aWVudF9hZGRyZXNzCi0gICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIp
Ci0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIk1pbWljIG1wX2Nvbm4u
d3JpdGUoKS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53
cml0ZShkYXRhKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiTWlt
aWMgbXBfY29ubi5yZWFkKCkuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRs
ZXIucmZpbGUucmVhZChsZW5ndGgpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxm
KToKLSAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3JlcXVlc3RfaGFuZGxlci5yZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKLQotCi1jbGFz
cyBfU3RhbmRhbG9uZVJlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJNaW1pYyBtb2RfcHl0aG9uIHJl
cXVlc3QuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCB1c2Vf
dGxzKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICByZXF1ZXN0X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIg
aW5zdGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSBy
ZXF1ZXN0X2hhbmRsZXIKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gX1N0YW5kYWxvbmVDb25u
ZWN0aW9uKHJlcXVlc3RfaGFuZGxlcikKLSAgICAgICAgc2VsZi5fdXNlX3RscyA9IHVzZV90bHMK
LQotICAgIGRlZiBnZXRfdXJpKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVx
dWVzdC51cmkuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAot
ICAgIHVyaSA9IHByb3BlcnR5KGdldF91cmkpCi0KLSAgICBkZWYgZ2V0X2hlYWRlcnNfaW4oc2Vs
Zik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LmhlYWRlcnNfaW4uIiIiCi0g
ICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuaGVhZGVycwotICAgIGhlYWRlcnNf
aW4gPSBwcm9wZXJ0eShnZXRfaGVhZGVyc19pbikKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToK
LSAgICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgotICAgICAgICByZXR1cm4g
c2VsZi5fdXNlX3RscwotCi0KLWNsYXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhy
ZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgotICAgICIiIkhUVFBTZXJ2
ZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYiBTb2NrZXQuIiIiCi0KLSAgICBTb2NrZXRTZXJ2ZXIuVGhy
ZWFkaW5nTWl4SW4uZGFlbW9uX3RocmVhZHMgPSBUcnVlCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc2VydmVyX2FkZHJlc3MsIFJlcXVlc3RIYW5kbGVyQ2xhc3MpOgotICAgICAgICAiIiJPdmVy
cmlkZSBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXy4iIiIKLQotICAgICAgICBTb2Nr
ZXRTZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXygKLSAgICAgICAgICAgICAgICBzZWxmLCBzZXJ2
ZXJfYWRkcmVzcywgUmVxdWVzdEhhbmRsZXJDbGFzcykKLSAgICAgICAgc2VsZi5zb2NrZXQgPSBz
ZWxmLl9jcmVhdGVfc29ja2V0KCkKLSAgICAgICAgc2VsZi5zZXJ2ZXJfYmluZCgpCi0gICAgICAg
IHNlbGYuc2VydmVyX2FjdGl2YXRlKCkKLQotICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmKToK
LSAgICAgICAgc29ja2V0XyA9IHNvY2tldC5zb2NrZXQoc2VsZi5hZGRyZXNzX2ZhbWlseSwgc2Vs
Zi5zb2NrZXRfdHlwZSkKLSAgICAgICAgaWYgV2ViU29ja2V0U2VydmVyLm9wdGlvbnMudXNlX3Rs
czoKLSAgICAgICAgICAgIGN0eCA9IE9wZW5TU0wuU1NMLkNvbnRleHQoT3BlblNTTC5TU0wuU1NM
djIzX01FVEhPRCkKLSAgICAgICAgICAgIGN0eC51c2VfcHJpdmF0ZWtleV9maWxlKFdlYlNvY2tl
dFNlcnZlci5vcHRpb25zLnByaXZhdGVfa2V5KQotICAgICAgICAgICAgY3R4LnVzZV9jZXJ0aWZp
Y2F0ZV9maWxlKFdlYlNvY2tldFNlcnZlci5vcHRpb25zLmNlcnRpZmljYXRlKQotICAgICAgICAg
ICAgc29ja2V0XyA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24oY3R4LCBzb2NrZXRfKQotICAgICAg
ICByZXR1cm4gc29ja2V0XwotCi0gICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCBycXVlc3QsIGNs
aWVudF9hZGRyZXNzKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLmhhbmRsZV9l
cnJvci4iIiIKLQotICAgICAgICBsb2dnaW5nLmVycm9yKAotICAgICAgICAgICAgKCdFeGNlcHRp
b24gaW4gcHJvY2Vzc2luZyByZXF1ZXN0IGZyb206ICVyJyAlIChjbGllbnRfYWRkcmVzcywpKSAr
Ci0gICAgICAgICAgICAnXG4nICsgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgIyBO
b3RlOiBjbGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLiBUbyBtYXRjaCBpdCBhZ2FpbnN0ICVyLCB3
ZSBuZWVkIHRoZQotICAgICAgICAjIHRyYWlsaW5nIGNvbW1hLgotCi0KLWNsYXNzIFdlYlNvY2tl
dFJlcXVlc3RIYW5kbGVyKENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyKToKLSAg
ICAiIiJDR0lIVFRQUmVxdWVzdEhhbmRsZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYiBTb2NrZXQuIiIi
Ci0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZl
ci5TdHJlYW1SZXF1ZXN0SGFuZGxlci5zZXR1cC4iIiIKLQotICAgICAgICBzZWxmLmNvbm5lY3Rp
b24gPSBzZWxmLnJlcXVlc3QKLSAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1l
bW9yaXppbmdGaWxlKAotICAgICAgICAgICAgICAgIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLnJl
cXVlc3QsICdyYicsIHNlbGYucmJ1ZnNpemUpLAotICAgICAgICAgICAgICAgIG1heF9tZW1vcml6
ZWRfbGluZXM9X01BWF9NRU1PUklaRURfTElORVMpCi0gICAgICAgIHNlbGYud2ZpbGUgPSBzb2Nr
ZXQuX2ZpbGVvYmplY3Qoc2VsZi5yZXF1ZXN0LCAnd2InLCBzZWxmLndidWZzaXplKQotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmtleXdvcmRzKToKLSAgICAgICAgc2VsZi5fcmVx
dWVzdCA9IF9TdGFuZGFsb25lUmVxdWVzdCgKLSAgICAgICAgICAgICAgICBzZWxmLCBXZWJTb2Nr
ZXRSZXF1ZXN0SGFuZGxlci5vcHRpb25zLnVzZV90bHMpCi0gICAgICAgIHNlbGYuX2Rpc3BhdGNo
ZXIgPSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5vcHRpb25zLmRpc3BhdGNoZXIKLSAgICAgICAg
c2VsZi5fcHJpbnRfd2FybmluZ3NfaWZfYW55KCkKLSAgICAgICAgc2VsZi5faGFuZHNoYWtlciA9
IGhhbmRzaGFrZS5IYW5kc2hha2VyKAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIHNl
bGYuX2Rpc3BhdGNoZXIsCi0gICAgICAgICAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIu
b3B0aW9ucy5zdHJpY3QpCi0gICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5k
bGVyLl9faW5pdF9fKAotICAgICAgICAgICAgICAgIHNlbGYsICphcmdzLCAqKmtleXdvcmRzKQot
Ci0gICAgZGVmIF9wcmludF93YXJuaW5nc19pZl9hbnkoc2VsZik6Ci0gICAgICAgIHdhcm5pbmdz
ID0gc2VsZi5fZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICBpZiB3YXJuaW5n
czoKLSAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgotICAgICAgICAgICAgICAg
IGxvZ2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nKQotCi0gICAg
ZGVmIHBhcnNlX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2Vy
dmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLQotICAgICAgICBSZXR1
cm4gVHJ1ZSB0byBjb250aW51ZSBwcm9jZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhlcndp
c2UuCi0gICAgICAgICIiIgotICAgICAgICByZXN1bHQgPSBDR0lIVFRQU2VydmVyLkNHSUhUVFBS
ZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpCi0gICAgICAgIGlmIHJlc3VsdDoKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VyLmRvX2hhbmRz
aGFrZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNl
bGYuX3JlcXVlc3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBl
eGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLCBlOgotICAgICAgICAgICAgICAgICMgSGFu
ZHNoYWtlIGZvciB3cyhzKSBmYWlsZWQuIEFzc3VtZSBodHRwKHMpLgotICAgICAgICAgICAgICAg
IGxvZ2dpbmcuaW5mbygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSBlKQotICAgICAgICAgICAgICAg
IHJldHVybiBUcnVlCi0gICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFcnJvciwg
ZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ21vZF9weXdlYnNvY2tldDogJXMn
ICUgZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdtb2RfcHl3ZWJz
b2NrZXQ6ICVzJyAlIGUpCi0gICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdtb2RfcHl3ZWJz
b2NrZXQ6ICVzJyAlIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiBsb2dfcmVxdWVzdChz
ZWxmLCBjb2RlPSctJywgc2l6ZT0nLScpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNl
cnZlci5sb2dfcmVxdWVzdC4iIiIKLQotICAgICAgICBsb2dnaW5nLmluZm8oJyIlcyIgJXMgJXMn
LAotICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIo
c2l6ZSkpCi0KLSAgICBkZWYgbG9nX2Vycm9yKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiT3Zl
cnJpZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX2Vycm9yLiIiIgotCi0gICAgICAgICMgRGVzcGl0ZSB0
aGUgbmFtZSwgdGhpcyBtZXRob2QgaXMgZm9yIHdhcm5pbmdzIHRoYW4gZm9yIGVycm9ycy4KLSAg
ICAgICAgIyBGb3IgZXhhbXBsZSwgSFRUUCBzdGF0dXMgY29kZSBpcyBsb2dnZWQgYnkgdGhpcyBt
ZXRob2QuCi0gICAgICAgIGxvZ2dpbmcud2FybignJXMgLSAlcycgJSAoc2VsZi5hZGRyZXNzX3N0
cmluZygpLCAoYXJnc1swXSAlIGFyZ3NbMTpdKSkpCi0KLSAgICBkZWYgaXNfY2dpKHNlbGYpOgot
ICAgICAgICAiIiJUZXN0IHdoZXRoZXIgc2VsZi5wYXRoIGNvcnJlc3BvbmRzIHRvIGEgQ0dJIHNj
cmlwdC4KLQotICAgICAgICBBZGQgZXh0cmEgY2hlY2sgdGhhdCBzZWxmLnBhdGggZG9lc24ndCBj
b250YWlucyAuLgotICAgICAgICBBbHNvIGNoZWNrIGlmIHRoZSBmaWxlIGlzIGEgZXhlY3V0YWJs
ZSBmaWxlIG9yIG5vdC4KLSAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90IGV4ZWN1dGFibGUsIGl0
IGlzIGhhbmRsZWQgYXMgc3RhdGljIGZpbGUgb3IgZGlyCi0gICAgICAgIHJhdGhlciB0aGFuIGEg
Q0dJIHNjcmlwdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRU
UFJlcXVlc3RIYW5kbGVyLmlzX2NnaShzZWxmKToKLSAgICAgICAgICAgIGlmICcuLicgaW4gc2Vs
Zi5wYXRoOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgIyBzdHJp
cCBxdWVyeSBwYXJhbWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKLSAgICAgICAgICAgIHJlc291cmNl
X25hbWUgPSBzZWxmLnBhdGguc3BsaXQoJz8nLCAyKVswXQotICAgICAgICAgICAgIyBjb252ZXJ0
IHJlc291cmNlX25hbWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgotICAgICAg
ICAgICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKLSAg
ICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUo
c2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBy
ZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgX2NvbmZpZ3VyZV9sb2dn
aW5nKG9wdGlvbnMpOgotICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICBsb2dn
ZXIuc2V0TGV2ZWwoX0xPR19MRVZFTFNbb3B0aW9ucy5sb2dfbGV2ZWxdKQotICAgIGlmIG9wdGlv
bnMubG9nX2ZpbGU6Ci0gICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5n
RmlsZUhhbmRsZXIoCi0gICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dfZmlsZSwgJ2EnLCBvcHRp
b25zLmxvZ19tYXgsIG9wdGlvbnMubG9nX2NvdW50KQotICAgIGVsc2U6Ci0gICAgICAgIGhhbmRs
ZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQotICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9y
bWF0dGVyKAotICAgICAgICAgICAgIlslKGFzY3RpbWUpc10gWyUobGV2ZWxuYW1lKXNdICUobmFt
ZSlzOiAlKG1lc3NhZ2UpcyIpCi0gICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQot
ICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCi0KLWRlZiBfYWxpYXNfaGFuZGxlcnMoZGlz
cGF0Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6Ci0gICAgIiIiU2V0IGFsaWFzZXMg
c3BlY2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBpbiBkaXNwYXRjaGVyLgotCi0g
ICAgQXJnczoKLSAgICAgICAgZGlzcGF0Y2hlcjogZGlzcGF0Y2guRGlzcGF0Y2hlciBpbnN0YW5j
ZQotICAgICAgICB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGU6IGFsaWFzIG1hcCBmaWxlCi0gICAg
IiIiCi0gICAgZnAgPSBvcGVuKHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAgdHJ5Ogot
ICAgICAgICBmb3IgbGluZSBpbiBmcDoKLSAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gJyMnIG9y
IGxpbmUuaXNzcGFjZSgpOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBt
ID0gcmUubWF0Y2goJyhcUyspXHMrKFxTKyknLCBsaW5lKQotICAgICAgICAgICAgaWYgbm90IG06
Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdXcm9uZyBmb3JtYXQgaW4gbWFwIGZp
bGU6JyArIGxpbmUpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKAotICAg
ICAgICAgICAgICAgICAgICBtLmdyb3VwKDEpLCBtLmdyb3VwKDIpKQotICAgICAgICAgICAgZXhj
ZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgbG9nZ2luZy5l
cnJvcihzdHIoZSkpCi0gICAgZmluYWxseToKLSAgICAgICAgZnAuY2xvc2UoKQotCi0KLQotZGVm
IF9tYWluKCk6Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJz
ZXIuYWRkX29wdGlvbignLUgnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZGVmYXVsdD0nJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9z
dG5hbWUgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0
JywgZGVzdD0ncG9ydCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD1oYW5kc2hha2UuX0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXcn
LCAnLS13ZWJzb2NrLWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nd2Vic29ja19oYW5kbGVycycsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nLicsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2ViIFNvY2tldCBo
YW5kbGVycyByb290IGRpcmVjdG9yeS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsICct
LXdlYnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAotICAgICAgICAgICAgICAgICAgICAgICctLXdl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dl
YnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2ViIFNvY2tldCBoYW5kbGVycyBt
YXAgZmlsZS4gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFYWNoIGxpbmUgY29uc2lz
dHMgb2YgYWxpYXNfcmVzb3VyY2VfcGF0aCBhbmQgJwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdleGlzdGluZ19yZXNvdXJjZV9wYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLicpKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctcycsICctLXNjYW4tZGlyJywgJy0tc2Nhbl9kaXInLCBkZXN0
PSdzY2FuX2RpcicsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9KCdXZWIgU29ja2V0IGhhbmRsZXJzIHNjYW4gZGlyZWN0b3J5
LiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011c3QgYmUgYSBkaXJlY3RvcnkgdW5k
ZXIgd2Vic29ja19oYW5kbGVycy4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1k
b2N1bWVudC1yb290JywgJy0tZG9jdW1lbnRfcm9vdCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nZG9jdW1lbnRfcm9vdCcsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J0RvY3VtZW50IHJvb3QgZGlyZWN0b3J5LicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy14JywgJy0tY2dpLXBhdGhzJywgJy0tY2dpX3BhdGhzJywgZGVzdD0nY2dpX3BhdGhzJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
aGVscD0oJ0NHSSBwYXRocyByZWxhdGl2ZSB0byBkb2N1bWVudF9yb290LicKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQ29tbWEtc2VwYXJhdGVkLiAoZS5nIC14IC9jZ2ksL2h0YmluKSAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIHVuZGVyIGRvY3VtZW50X3Jvb3Qv
Y2dpX3BhdGggYXJlIGhhbmRsZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyBD
R0kgcHJvZ3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLXQnLCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8p
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLCAnLS1wcml2YXRlLWtleScsICctLXByaXZh
dGVfa2V5JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcml2YXRlX2tleScsCi0gICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUu
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLCAnLS1jZXJ0aWZpY2F0ZScsIGRlc3Q9J2Nl
cnRpZmljYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMg
Y2VydGlmaWNhdGUgZmlsZS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1m
aWxlJywgJy0tbG9nX2ZpbGUnLCBkZXN0PSdsb2dfZmlsZScsCi0gICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nJywgaGVscD0nTG9nIGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbign
LS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAg
ICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnY3Jp
dGljYWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS1sb2ctbWF4JywgJy0tbG9nX21heCcsIGRlc3Q9J2xvZ19tYXgn
LCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9H
X01BWF9CWVRFUywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRl
cycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywgJy0tbG9nX2NvdW50Jywg
ZGVzdD0nbG9nX2NvdW50JywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBkZWZh
dWx0PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nTG9nIGJhY2t1cCBjb3VudCcpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc3RyaWN0Jywg
ZGVzdD0nc3RyaWN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PUZhbHNlLCBoZWxwPSdTdHJpY3RseSBjaGVjayBoYW5kc2hha2UgcmVxdWVzdCcp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVldWUnLCBkZXN0PSdyZXF1ZXN0X3F1
ZXVlX3NpemUnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RF
RkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpFLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Jl
cXVlc3QgcXVldWUgc2l6ZScpCi0gICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKClbMF0K
LQotICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKLQotICAgIF9jb25maWd1cmVf
bG9nZ2luZyhvcHRpb25zKQotCi0gICAgU29ja2V0U2VydmVyLlRDUFNlcnZlci5yZXF1ZXN0X3F1
ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQotICAgIENHSUhUVFBTZXJ2ZXIu
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLmNnaV9kaXJlY3RvcmllcyA9IFtdCi0KLSAgICBpZiBvcHRp
b25zLmNnaV9wYXRoczoKLSAgICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRs
ZXIuY2dpX2RpcmVjdG9yaWVzID0gXAotICAgICAgICAgICAgb3B0aW9ucy5jZ2lfcGF0aHMuc3Bs
aXQoJywnKQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdjeWd3aW4nLCAnd2luMzInKToK
LSAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gTm9uZQotICAgICAgICAgICAgIyBGb3IgV2luMzIg
UHl0aG9uLCBpdCBpcyBleHBlY3RlZCB0aGF0IENZR1dJTl9QQVRICi0gICAgICAgICAgICAjIGlz
IHNldCB0byBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCi0gICAgICAgICAgICAjIEZv
ciBleGFtcGxlLCB3ZWJzb2NrZXRfc2VydmVyLnB5IGluIENocm9taXVtIHNldHMgQ1lHV0lOX1BB
VEggdG8KLSAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRoaXJkX3BhcnR5L2N5Z3dpbi9iaW4u
Ci0gICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAg
ICAgICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdXSU5fUEFUSCddCi0gICAgICAgICAg
ICB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpCi0gICAgICAgICAgICBkZWYg
X19jaGVja19zY3JpcHQoc2NyaXB0cGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwu
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCi0gICAgICAgICAgICBD
R0lIVFRQU2VydmVyLmV4ZWN1dGFibGUgPSBfX2NoZWNrX3NjcmlwdAotCi0gICAgaWYgb3B0aW9u
cy51c2VfdGxzOgotICAgICAgICBpZiBub3QgX0hBU19PUEVOX1NTTDoKLSAgICAgICAgICAgIGxv
Z2dpbmcuY3JpdGljYWwoJ1RvIHVzZSBUTFMsIGluc3RhbGwgcHlPcGVuU1NMLicpCi0gICAgICAg
ICAgICBzeXMuZXhpdCgxKQotICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBu
b3Qgb3B0aW9ucy5jZXJ0aWZpY2F0ZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0g
ICAgICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVfa2V5IGFuZCBj
ZXJ0aWZpY2F0ZS4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgIGlmIG5vdCBvcHRp
b25zLnNjYW5fZGlyOgotICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzCi0KLSAgICB0cnk6Ci0gICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25n
IHJlcXVlc3QgaGFuZGxlcnMgdG8gc2F2ZSB0aW1lIGZvcgotICAgICAgICAjIGluc3RhbnRpYXRp
b24uICBEaXNwYXRjaGVyIGNhbiBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4K
LSAgICAgICAgb3B0aW9ucy5kaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihvcHRpb25z
LndlYnNvY2tfaGFuZGxlcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3B0aW9ucy5zY2FuX2RpcikKLSAgICAgICAgaWYgb3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzX21hcF9maWxlOgotICAgICAgICAgICAgX2FsaWFzX2hhbmRsZXJzKG9wdGlvbnMu
ZGlzcGF0Y2hlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tf
aGFuZGxlcnNfbWFwX2ZpbGUpCi0gICAgICAgIF9wcmludF93YXJuaW5nc19pZl9hbnkob3B0aW9u
cy5kaXNwYXRjaGVyKQotCi0gICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLm9wdGlvbnMg
PSBvcHRpb25zCi0gICAgICAgIFdlYlNvY2tldFNlcnZlci5vcHRpb25zID0gb3B0aW9ucwotCi0g
ICAgICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcigob3B0aW9ucy5zZXJ2ZXJfaG9zdCwgb3B0
aW9ucy5wb3J0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNvY2tldFJl
cXVlc3RIYW5kbGVyKQotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0
IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgbG9nZ2luZy5jcml0aWNhbChzdHIoZSkpCi0gICAgICAg
IHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfbWFpbigp
Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlYzlk
Y2EwYWI0NTlhNDQwYjBlYzJhOTgwNTBlZDQ5NzMwNDNjNTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMTIxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYiBTb2NrZXRz
IHV0aWxpdGllcy4KLSIiIgotCi0KLWltcG9ydCBTdHJpbmdJTwotaW1wb3J0IG9zCi1pbXBvcnQg
cmUKLWltcG9ydCB0cmFjZWJhY2sKLQotCi1kZWYgZ2V0X3N0YWNrX3RyYWNlKCk6Ci0gICAgIiIi
R2V0IHRoZSBjdXJyZW50IHN0YWNrIHRyYWNlIGFzIHN0cmluZy4KLQotICAgIFRoaXMgaXMgbmVl
ZGVkIHRvIHN1cHBvcnQgUHl0aG9uIDIuMy4KLSAgICBUT0RPOiBSZW1vdmUgdGhpcyB3aGVuIHdl
IG9ubHkgc3VwcG9ydCBQeXRob24gMi40IGFuZCBhYm92ZS4KLSAgICAgICAgICBVc2UgdHJhY2Vi
YWNrLmZvcm1hdF9leGMgaW5zdGVhZC4KLSAgICAiIiIKLQotICAgIG91dCA9IFN0cmluZ0lPLlN0
cmluZ0lPKCkKLSAgICB0cmFjZWJhY2sucHJpbnRfZXhjKGZpbGU9b3V0KQotICAgIHJldHVybiBv
dXQuZ2V0dmFsdWUoKQotCi0KLWRlZiBwcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKG1lc3Nh
Z2UsIGV4Yyk6Ci0gICAgIiIiUHJlcGVuZCBtZXNzYWdlIHRvIHRoZSBleGNlcHRpb24uIiIiCi0K
LSAgICBleGMuYXJncyA9IChtZXNzYWdlICsgc3RyKGV4YyksKQotICAgIHJldHVybgotCi0KLWRl
ZiBfX3RyYW5zbGF0ZV9pbnRlcnAoaW50ZXJwLCBjeWd3aW5fcGF0aCk6Ci0gICAgIiIiVHJhbnNs
YXRlIGludGVycCBwcm9ncmFtIHBhdGggZm9yIFdpbjMyIHB5dGhvbiB0byBydW4gY3lnd2luIHBy
b2dyYW0KLSAgICAoZS5nLiBwZXJsKS4gIE5vdGUgdGhhdCBpdCBkb2Vzbid0IHN1cHBvcnQgcGF0
aCB0aGF0IGNvbnRhaW5zIHNwYWNlLAotICAgIHdoaWNoIGlzIHR5cGljYWxseSB0cnVlIGZvciBV
bml4LCB3aGVyZSAjIS1zY3JpcHQgaXMgd3JpdHRlbi4KLSAgICBGb3IgV2luMzIgcHl0aG9uLCBj
eWd3aW5fcGF0aCBpcyBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCi0KLSAgICBBcmdz
OgotICAgICAgaW50ZXJwOiBpbnRlcnAgY29tbWFuZCBsaW5lCi0gICAgICBjeWd3aW5fcGF0aDog
ZGlyZWN0b3J5IG5hbWUgb2YgY3lnd2luIGJpbmFyeSwgb3IgTm9uZQotICAgIFJldHVybnM6Ci0g
ICAgICB0cmFuc2xhdGVkIGludGVycCBjb21tYW5kIGxpbmUuCi0gICAgIiIiCi0gICAgaWYgbm90
IGN5Z3dpbl9wYXRoOgotICAgICAgICByZXR1cm4gaW50ZXJwCi0gICAgbSA9IHJlLm1hdGNoKCJe
W14gXSovKFteIF0rKSggLiopPyIsIGludGVycCkKLSAgICBpZiBtOgotICAgICAgICBjbWQgPSBv
cy5wYXRoLmpvaW4oY3lnd2luX3BhdGgsIG0uZ3JvdXAoMSkpCi0gICAgICAgIHJldHVybiBjbWQg
KyBtLmdyb3VwKDIpCi0gICAgcmV0dXJuIGludGVycAotCi0KLWRlZiBnZXRfc2NyaXB0X2ludGVy
cChzY3JpcHRfcGF0aCwgY3lnd2luX3BhdGg9Tm9uZSk6Ci0gICAgIiIiR2V0cyAjIS1pbnRlcnBy
ZXRlciBjb21tYW5kIGxpbmUgZnJvbSB0aGUgc2NyaXB0LgotCi0gICAgSXQgYWxzbyBmaXhlcyBj
b21tYW5kIHBhdGguICBXaGVuIEN5Z3dpbiBQeXRob24gaXMgdXNlZCwgZS5nLiBpbiBXZWJLaXQs
Ci0gICAgaXQgY291bGQgcnVuICIvdXNyL2Jpbi9wZXJsIC13VCBoZWxsby5wbCIuCi0gICAgV2hl
biBXaW4zMiBQeXRob24gaXMgdXNlZCwgZS5nLiBpbiBDaHJvbWl1bSwgaXQgY291bGRuJ3QuICBT
bywgZml4Ci0gICAgIi91c3IvYmluL3BlcmwiIHRvICI8Y3lnd2luX3BhdGg+XHBlcmwuZXhlIi4K
LQotICAgIEFyZ3M6Ci0gICAgICBzY3JpcHRfcGF0aDogcGF0aG5hbWUgb2YgdGhlIHNjcmlwdAot
ICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5v
bmUKLSAgICBSZXR1cm5zOgotICAgICAgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lLCBvciBO
b25lIGlmIGl0IGlzIG5vdCAjIS1zY3JpcHQuCi0gICAgIiIiCi0gICAgZnAgPSBvcGVuKHNjcmlw
dF9wYXRoKQotICAgIGxpbmUgPSBmcC5yZWFkbGluZSgpCi0gICAgZnAuY2xvc2UoKQotICAgIG0g
PSByZS5tYXRjaCgiXiMhKC4qKSIsIGxpbmUpCi0gICAgaWYgbToKLSAgICAgICAgcmV0dXJuIF9f
dHJhbnNsYXRlX2ludGVycChtLmdyb3VwKDEpLCBjeWd3aW5fcGF0aCkKLSAgICByZXR1cm4gTm9u
ZQotCi1kZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0aCk6Ci0gICAgIiIiV3JhcCBw
b3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4KLQotICAgIEFyZ3M6Ci0gICAg
ICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkgaWYgY29tbWFuZCBwYXRoIGlz
IG5lZWRlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkLiAgTm9uZSBpZiBu
byB0cmFuc2xhdGlvbiByZXF1aXJlZC4KLSAgICAiIiIKLSAgICBfX29yaWdfcG9wZW4zID0gb3Mu
cG9wZW4zCi0gICAgZGVmIF9fd3JhcF9wb3BlbjMoY21kLCBtb2RlPSd0JywgYnVmc2l6ZT0tMSk6
Ci0gICAgICAgIGNtZGxpbmUgPSBjbWQuc3BsaXQoJyAnKQotICAgICAgICBpbnRlcnAgPSBnZXRf
c2NyaXB0X2ludGVycChjbWRsaW5lWzBdLCBjeWd3aW5fcGF0aCkKLSAgICAgICAgaWYgaW50ZXJw
OgotICAgICAgICAgICAgY21kID0gaW50ZXJwICsgIiAiICsgY21kCi0gICAgICAgIHJldHVybiBf
X29yaWdfcG9wZW4zKGNtZCwgbW9kZSwgYnVmc2l6ZSkKLSAgICBvcy5wb3BlbjMgPSBfX3dyYXBf
cG9wZW4zCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvc2V0dXAucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvc2V0dXAucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzNGE4M2IyNzJlNjg0YjRmNjA2NDBiZjNkZmM0
OTRmMjc1N2U0ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Nl
dHVwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJTZXQgdXAgc2NyaXB0IGZvciBtb2RfcHl3
ZWJzb2NrZXQuCi0iIiIKLQotCi1mcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAotaW1w
b3J0IHN5cwotCi0KLV9QQUNLQUdFX05BTUUgPSAnbW9kX3B5d2Vic29ja2V0JwotCi1pZiBzeXMu
dmVyc2lvbiA8ICcyLjMnOgotICAgIHByaW50ID4+c3lzLnN0ZGVyciwgJyVzIHJlcXVpcmVzIFB5
dGhvbiAyLjMgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUKLSAgICBzeXMuZXhpdCgxKQotCi1z
ZXR1cChhdXRob3I9J1l1em8gRnVqaXNoaW1hJywKLSAgICAgIGF1dGhvcl9lbWFpbD0neXV6b0Bj
aHJvbWl1bS5vcmcnLAotICAgICAgZGVzY3JpcHRpb249J1dlYiBTb2NrZXQgZXh0ZW5zaW9uIGZv
ciBBcGFjaGUgSFRUUCBTZXJ2ZXIuJywKLSAgICAgIGxvbmdfZGVzY3JpcHRpb249KAotICAgICAg
ICAgICAgICAnbW9kX3B5d2Vic29ja2V0IGlzIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBleHRlbnNp
b24gZm9yICcKLSAgICAgICAgICAgICAgJ1dlYiBTb2NrZXQgKGh0dHA6Ly90b29scy5pZXRmLm9y
Zy9odG1sLycKLSAgICAgICAgICAgICAgJ2RyYWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29s
KS4gJwotICAgICAgICAgICAgICAnU2VlIG1vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weSBmb3Ig
bW9yZSBkZXRhaWwuJyksCi0gICAgICBsaWNlbnNlPSdTZWUgQ09QWUlORycsCi0gICAgICBuYW1l
PV9QQUNLQUdFX05BTUUsCi0gICAgICBwYWNrYWdlcz1bX1BBQ0tBR0VfTkFNRV0sCi0gICAgICB1
cmw9J2h0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9weXdlYnNvY2tldC8nLAotICAgICAgdmVyc2lv
bj0nMC40LjkuMicsCi0gICAgICApCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVz
dC9jb25maWcucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC9jb25maWcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVh
YWFiOGMwNGNlZGU1NjhmYzZkZTVkYmFiYWIzYWEzNTJkNmM5ZmYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvY29uZmlnLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsNDUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiQ29uZmlndXJhdGlvbiBmb3Ig
dGVzdGluZy4KLQotVGVzdCBmaWxlcyBzaG91bGQgaW1wb3J0IHRoaXMgbW9kdWxlIGJlZm9yZSBt
b2RfcHl3ZWJzb2NrZXQuCi0iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQotCi0jIEFk
ZCB0aGUgcGFyZW50IGRpcmVjdG9yeSB0byBzeXMucGF0aCB0byBlbmFibGUgaW1wb3J0aW5nIG1v
ZF9weXdlYnNvY2tldC4KLXN5cy5wYXRoICs9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChf
X2ZpbGVfXylbMF0sICcuLicpXQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
bW9jay5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC90ZXN0L21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiODVkNjQ0
Mzk4M2U2YjI3N2FiOTE0MGNlZGI1NjIwNmZkOTU3YTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDIwNSAr
MCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJNb2NrcyBmb3IgdGVzdGluZy4KLSIiIgot
Ci0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHRocmVhZGluZwotCi0KLWNsYXNzIF9Nb2NrQ29ubkJh
c2Uob2JqZWN0KToKLSAgICAiIiJCYXNlIGNsYXNzIG9mIG1vY2tzIGZvciBtb2RfcHl0aG9uLmFw
YWNoZS5tcF9jb25uLgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIGNoZWNrIHdoYXQgaXMg
d3JpdHRlbiB0byBhIChtb2NrKSBtcF9jb25uLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICBzZWxmLl93cml0ZV9kYXRhID0gW10KLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBkYXRhKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29u
bi53cml0ZS4iIiIKLQotICAgICAgICBzZWxmLl93cml0ZV9kYXRhLmFwcGVuZChkYXRhKQotCi0g
ICAgZGVmIHdyaXR0ZW5fZGF0YShzZWxmKToKLSAgICAgICAgIiIiR2V0IGJ5dGVzIHdyaXR0ZW4g
dG8gdGhpcyBtb2NrLiIiIgotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHNlbGYuX3dyaXRlX2Rh
dGEpCi0KLQotY2xhc3MgTW9ja0Nvbm4oX01vY2tDb25uQmFzZSk6Ci0gICAgIiIiTW9jayBmb3Ig
bW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBz
cGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCi0gICAg
d2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVhZF9kYXRhKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBp
bnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVhZF9kYXRhOiBieXRlcyB0
aGF0IHNob3VsZCBiZSByZXR1cm5lZCB3aGVuIHJlYWQqIG1ldGhvZHMgYXJlCi0gICAgICAgICAg
ICBjYWxsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIF9Nb2NrQ29ubkJhc2UuX19pbml0X18o
c2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF9kYXRhID0gcmVhZF9kYXRhCi0gICAgICAgIHNlbGYu
X3JlYWRfcG9zID0gMAotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVy
cmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgotCi0gICAgICAgIGlm
IHNlbGYuX3JlYWRfcG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgotICAgICAgICAgICAgcmV0
dXJuICcnCi0gICAgICAgIGVuZF9pbmRleCA9IHNlbGYuX3JlYWRfZGF0YS5maW5kKCdcbicsIHNl
bGYuX3JlYWRfcG9zKSArIDEKLSAgICAgICAgaWYgbm90IGVuZF9pbmRleDoKLSAgICAgICAgICAg
IGVuZF9pbmRleCA9IGxlbihzZWxmLl9yZWFkX2RhdGEpCi0gICAgICAgIHJldHVybiBzZWxmLl9y
ZWFkX3VwX3RvKGVuZF9pbmRleCkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAg
ICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAg
ICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVhZF9kYXRhKToKLSAgICAgICAg
ICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXggPSBtaW4obGVuKHNlbGYuX3JlYWRfZGF0
YSksIHNlbGYuX3JlYWRfcG9zICsgbGVuZ3RoKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91
cF90byhlbmRfaW5kZXgpCi0KLSAgICBkZWYgX3JlYWRfdXBfdG8oc2VsZiwgZW5kX2luZGV4KToK
LSAgICAgICAgbGluZSA9IHNlbGYuX3JlYWRfZGF0YVtzZWxmLl9yZWFkX3BvczplbmRfaW5kZXhd
Ci0gICAgICAgIHNlbGYuX3JlYWRfcG9zID0gZW5kX2luZGV4Ci0gICAgICAgIHJldHVybiBsaW5l
Ci0KLQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ubihfTW9ja0Nvbm5CYXNlKToKLSAgICAiIiJCbG9j
a2luZyBtb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLgotCi0gICAgVGhpcyBlbmFi
bGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgYmUgcmVhZCBmcm9tIGEgKG1vY2spIG1w
X2Nvbm4gYXMKLSAgICB3ZWxsIGFzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBpdC4KLSAg
ICBDYWxsZXJzIG9mIHJlYWQqIG1ldGhvZHMgd2lsbCBibG9jayBpZiB0aGVyZSBpcyBubyBieXRl
cyBhdmFpbGFibGUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAg
IF9Nb2NrQ29ubkJhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1
ZS5RdWV1ZSgpCi0KLSAgICBkZWYgcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRl
IG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZGxpbmUuIiIiCi0gICAgICAgIGxpbmUgPSAn
JwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYyA9IHNlbGYuX3F1ZXVlLmdldCgp
Ci0gICAgICAgICAgICBsaW5lICs9IGMKLSAgICAgICAgICAgIGlmIGMgPT0gJ1xuJzoKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbGluZQotCi0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAg
ICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgotCi0g
ICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKGxlbmd0aCk6Ci0g
ICAgICAgICAgICBkYXRhICs9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgIHJldHVybiBkYXRh
Ci0KLSAgICBkZWYgcHV0X2J5dGVzKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgIiIiUHV0IGJ5dGVz
IHRvIGJlIHJlYWQgZnJvbSB0aGlzIG1vY2suCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IGJ5dGVzOiBieXRlcyB0byBiZSByZWFkLgotICAgICAgICAiIiIKLQotICAgICAgICBmb3IgYnl0
ZSBpbiBieXRlczoKLSAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChieXRlKQotCi0KLWNsYXNz
IE1vY2tUYWJsZShkaWN0KToKLSAgICAiIiJNb2NrIHRhYmxlLgotCi0gICAgVGhpcyBtaW1pY3Mg
bW9kX3B5dGhvbiBtcF90YWJsZS4gTm90ZSB0aGF0IG9ubHkgdGhlIG1ldGhvZHMgdXNlZCBieQot
ICAgIHRlc3RzIGFyZSBvdmVycmlkZGVuLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIGNvcHlfZnJvbT17fSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoY29weV9mcm9tLCBkaWN0
KToKLSAgICAgICAgICAgIGNvcHlfZnJvbSA9IGNvcHlfZnJvbS5pdGVtcygpCi0gICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIGNvcHlfZnJvbToKLSAgICAgICAgICAgIHNlbGYuX19zZXRpdGVtX18o
a2V5LCB2YWx1ZSkKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBrZXkpOgotICAgICAgICBy
ZXR1cm4gc3VwZXIoTW9ja1RhYmxlLCBzZWxmKS5fX2dldGl0ZW1fXyhrZXkubG93ZXIoKSkKLQot
ICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgc3VwZXIoTW9j
a1RhYmxlLCBzZWxmKS5fX3NldGl0ZW1fXyhrZXkubG93ZXIoKSwgdmFsdWUpCi0KLSAgICBkZWYg
Z2V0KHNlbGYsIGtleSwgZGVmX3ZhbHVlPU5vbmUpOgotICAgICAgICByZXR1cm4gc3VwZXIoTW9j
a1RhYmxlLCBzZWxmKS5nZXQoa2V5Lmxvd2VyKCksIGRlZl92YWx1ZSkKLQotCi1jbGFzcyBNb2Nr
UmVxdWVzdChvYmplY3QpOgotICAgICIiIk1vY2sgcmVxdWVzdC4KLQotICAgIFRoaXMgbWltaWNz
IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1
cmk9Tm9uZSwgaGVhZGVyc19pbj17fSwgY29ubmVjdGlvbj1Ob25lLAotICAgICAgICAgICAgICAg
ICBpc19odHRwcz1GYWxzZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQot
ICAgICAgICBBcmd1bWVudHM6Ci0gICAgICAgICAgICB1cmk6IFVSSSBvZiB0aGUgcmVxdWVzdC4K
LSAgICAgICAgICAgIGhlYWRlcnNfaW46IFJlcXVlc3QgaGVhZGVycy4KLSAgICAgICAgICAgIGNv
bm5lY3Rpb246IENvbm5lY3Rpb24gdXNlZCBmb3IgdGhlIHJlcXVlc3QuCi0gICAgICAgICAgICBp
c19odHRwczogV2hldGhlciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuCi0KLSAgICAgICAgU2Vl
IHRoZSBkb2N1bWVudCBvZiBtb2RfcHl0aG9uIFJlcXVlc3QgZm9yIGRldGFpbHMuCi0gICAgICAg
ICIiIgotICAgICAgICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxmLmNvbm5lY3Rpb24gPSBj
b25uZWN0aW9uCi0gICAgICAgIHNlbGYuaGVhZGVyc19pbiA9IE1vY2tUYWJsZShoZWFkZXJzX2lu
KQotICAgICAgICAjIHNlbGYuaXNfaHR0cHNfIG5lZWRzIHRvIGJlIGFjY2Vzc2libGUgZnJvbSB0
ZXN0cy4gIFRvIGF2b2lkIG5hbWUKLSAgICAgICAgIyBjb25mbGljdCB3aXRoIHNlbGYuaXNfaHR0
cHMoKSwgaXQgaXMgbmFtZWQgYXMgc3VjaC4KLSAgICAgICAgc2VsZi5pc19odHRwc18gPSBpc19o
dHRwcwotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhl
ciB0aGlzIHJlcXVlc3QgaXMgb3ZlciBTU0wuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmlzX2h0
dHBzXwotCi0KLWNsYXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBmb3Ig
ZGlzcGF0Y2guRGlzcGF0Y2hlci4iIiIKLQotICAgIGRlZiBkb19leHRyYV9oYW5kc2hha2Uoc2Vs
ZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEo
c2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcGFzcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDM4ODU2MThjYTMxNThlOGMwY2RmOTA5ZTFiNmUwZWVmZDg1NWEzYjguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiUnVuIGFsbCB0ZXN0cyBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuCi0iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLQot
X1RFU1RfTU9EVUxFX1BBVFRFUk4gPSByZS5jb21waWxlKHInXih0ZXN0Xy4rKVwucHkkJykKLQot
Ci1kZWYgX2xpc3RfdGVzdF9tb2R1bGVzKGRpcmVjdG9yeSk6Ci0gICAgbW9kdWxlX25hbWVzID0g
W10KLSAgICBmb3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihkaXJlY3RvcnkpOgotICAgICAgICBt
YXRjaCA9IF9URVNUX01PRFVMRV9QQVRURVJOLnNlYXJjaChmaWxlbmFtZSkKLSAgICAgICAgaWYg
bWF0Y2g6Ci0gICAgICAgICAgICBtb2R1bGVfbmFtZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEpKQot
ICAgIHJldHVybiBtb2R1bGVfbmFtZXMKLQotCi1kZWYgX3N1aXRlKCk6Ci0gICAgbG9hZGVyID0g
dW5pdHRlc3QuVGVzdExvYWRlcigpCi0gICAgcmV0dXJuIGxvYWRlci5sb2FkVGVzdHNGcm9tTmFt
ZXMoCi0gICAgICAgICAgICBfbGlzdF90ZXN0X21vZHVsZXMob3MucGF0aC5qb2luKG9zLnBhdGgu
c3BsaXQoX19maWxlX18pWzBdLCAnLicpKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oZGVmYXVsdFRlc3Q9J19zdWl0ZScpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQwMzIyOGRmNTMxNDVjOWY3YzljNjI2
YzExNDRmYWE0MGM0YTI1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjQ0ICswLDAgQEAK
LSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMg
Zm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotCi0KLWltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0
Ci0KLWltcG9ydCBjb25maWcgICMgVGhpcyBtdXN0IGJlIGltcG9ydGVkIGJlZm9yZSBtb2RfcHl3
ZWJzb2NrZXQuCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgZGlzcGF0Y2gKLQotaW1wb3J0
IG1vY2sKLQotCi1fVEVTVF9IQU5ETEVSU19ESVIgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9z
LnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQotCi1fVEVT
VF9IQU5ETEVSU19TVUJfRElSID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1
YicpCi0KLWNsYXNzIERpc3BhdGNoZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYg
dGVzdF9ub3JtYWxpemVfcGF0aChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5w
YXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9iJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxhXFxi
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVw
bGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9ub3Jt
YWxpemVfcGF0aCgnL2EvYy8uLi9iJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0
aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdhYmMnKSkKLQotICAgIGRlZiB0ZXN0X2Nv
bnZlcnRlcihzZWxmKToKLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX3BhdGhfdG9fcmVz
b3VyY2VfY29udmVydGVyKCcvYS9iJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBj
b252ZXJ0ZXIoJy9hL2IvaF93c2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2Mv
aCcsIGNvbnZlcnRlcignL2EvYi9jL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgY29udmVydGVyKCcvYS9iL2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9
IGRpc3BhdGNoLl9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignYS9iJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAg
IGNvbnZlcnRlciA9IGRpc3BhdGNoLl9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8v
LycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKCcvYS9iL2hfd3No
LnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKCcvYS9iLy4u
L2IvaF93c2gucHknKSkKLQotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fcGF0aF90b19y
ZXNvdXJjZV9jb252ZXJ0ZXIoJy9hLy4uL2EvYi8uLi9iLycpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy9oJywgY29udmVydGVyKCcvYS9iL2hfd3NoLnB5JykpCi0KLSAgICAgICAgY29udmVy
dGVyID0gZGlzcGF0Y2guX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKHInXGFcYicpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKHInXGFcYlxoX3dzaC5weScpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihyJy9hL2IvaF93c2gucHkn
KSkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV9maWxlX3BhdGhzKHNlbGYpOgotICAgICAgICBwYXRo
cyA9IGxpc3QoZGlzcGF0Y2guX3NvdXJjZV9maWxlX3BhdGhzKF9URVNUX0hBTkRMRVJTX0RJUikp
Ci0gICAgICAgIHBhdGhzLnNvcnQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihw
YXRocykpCi0gICAgICAgIGV4cGVjdGVkX3BhdGhzID0gWwotICAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSwKLSAgICAgICAgICAg
ICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnb3JpZ2luX2NoZWNrX3dzaC5w
eScpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdz
dWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVy
X3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19E
SVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAncGxhaW5fd3NoLnB5JyksCi0gICAg
ICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScpLAot
ICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScp
LAotICAgICAgICAgICAgICAgIF0KLSAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlw
KGV4cGVjdGVkX3BhdGhzLCBwYXRocyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBkZWYgdGVzdF9zb3VyY2Uoc2VsZik6Ci0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGRpc3BhdGNoLl9zb3VyY2Us
ICcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEVycm9yLCBk
aXNwYXRjaC5fc291cmNlLCAnZGVmJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0
Y2guRGlzcGF0Y2hFcnJvciwgZGlzcGF0Y2guX3NvdXJjZSwgJzEvMCcpCi0gICAgICAgIHNlbGYu
ZmFpbFVubGVzcyhkaXNwYXRjaC5fc291cmNlKAotICAgICAgICAgICAgICAgICdkZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6cGFzc1xuJwotICAgICAgICAgICAgICAg
ICdkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOnBhc3NcbicpKQotCi0gICAg
ZGVmIHRlc3Rfc291cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICBkaXNwYXRjaGVyID0gZGlz
cGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIHdhcm5p
bmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQotICAgICAgICB3YXJuaW5ncy5zb3J0
KCkKLSAgICAgICAgZXhwZWN0ZWRfd2FybmluZ3MgPSBbCi0gICAgICAgICAgICAgICAgKG9zLnBh
dGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdibGFua193c2gucHknKSArCi0gICAgICAgICAg
ICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicp
LAotICAgICAgICAgICAgICAgIChvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdub25fY2FsbGFibGVfd3NoLnB5Jykg
KwotICAgICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBu
b3QgY2FsbGFibGUuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBhdGguam9pbihfVEVTVF9IQU5E
TEVSU19ESVIsICdzdWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hh
bmRzaGFrZV9zaWdfd3NoLnB5JykgKwotICAgICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAgICAgICAgICAgICAob3Mu
cGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpICsKLSAgICAgICAgICAgICAg
ICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlzIG5vdCBkZWZpbmVkLicpLAotICAgICAg
ICAgICAgICAgIF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoNCwgbGVuKHdhcm5pbmdzKSkK
LSAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX3dhcm5pbmdzLCB3
YXJuaW5ncyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhleHBlY3RlZCwgYWN0dWFs
KQotCi0gICAgZGVmIHRlc3RfZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBkaXNw
YXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0g
ICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KCkKLSAgICAgICAgcmVxdWVzdC53c19y
ZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICByZXF1ZXN0LndzX29yaWdpbiA9ICdo
dHRwOi8vZXhhbXBsZS5jb20nCi0gICAgICAgIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtl
KHJlcXVlc3QpICAjIE11c3Qgbm90IHJhaXNlIGV4Y2VwdGlvbi4KLQotICAgICAgICByZXF1ZXN0
LndzX29yaWdpbiA9ICdodHRwOi8vYmFkLmV4YW1wbGUuY29tJwotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhFeGNlcHRpb24sIGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlLCByZXF1ZXN0
KQotCi0gICAgZGVmIHRlc3RfdHJhbnNmZXJfZGF0YShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hl
ciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAg
ICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycp
KQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9vcmlnaW5fY2hlY2snCi0gICAgICAg
IHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDEnCi0KLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29yaWdpbl9jaGVja193
c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2luX2NoZWNrLCBwMScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJl
cXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0g
ICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbicKLSAgICAgICAgcmVxdWVz
dC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2Fs
bGVkIGZvciAvc3ViL3BsYWluLCBOb25lJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICAgICAgcmVxdWVzdCA9IG1vY2su
TW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgcmVxdWVz
dC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWluPycKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2Nv
bCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluPywgTm9uZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0
KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UgPSAnL3N1Yi9wbGFpbj9xPXYnCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
Ci0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj9x
PXYsIE5vbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxlcihz
ZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFO
RExFUlNfRElSLCBOb25lKQotICAgICAgICBmb3IgcmVzb3VyY2UgaW4gWycvYmxhbmsnLCAnL3N1
Yi9ub25fY2FsbGFibGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgICcvc3ViL25vX3dzaF9h
dF90aGVfZW5kJywgJy9kb2VzL25vdC9leGlzdCddOgotICAgICAgICAgICAgcmVxdWVzdCA9IG1v
Y2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSByZXNvdXJjZQotICAgICAgICAgICAgcmVxdWVzdC53c19w
cm90b2NvbCA9ICdwMicKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkaXNwYXRj
aGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQot
ICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGU6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5mYWlsVW5sZXNzKHN0cihlKS5maW5kKCdObyBoYW5kbGVyJykgIT0gLTEpCi0g
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgp
Ci0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhX2hhbmRsZXJfZXhjZXB0aW9uKHNlbGYpOgot
ICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19E
SVIsIE5vbmUpCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249
bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9l
eGNlcHRpb25faW5fdHJhbnNmZXInCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMn
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1
ZXN0KQotICAgICAgICAgICAgc2VsZi5mYWlsKCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhzdHIoZSkuZmluZCgnSW50ZW50aW9uYWwn
KSAhPSAtMSkKLQotICAgIGRlZiB0ZXN0X3NjYW5fZGlyKHNlbGYpOgotICAgICAgICBkaXNwID0g
ZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoMywgbGVuKGRpc3AuX2hhbmRsZXJzKSkKLSAgICAgICAgc2VsZi5mYWls
VW5sZXNzKGRpc3AuX2hhbmRsZXJzLmhhc19rZXkoJy9vcmlnaW5fY2hlY2snKSkKLSAgICAgICAg
c2VsZi5mYWlsVW5sZXNzKGRpc3AuX2hhbmRsZXJzLmhhc19rZXkoJy9zdWIvZXhjZXB0aW9uX2lu
X3RyYW5zZmVyJykpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNf
a2V5KCcvc3ViL3BsYWluJykpCi0KLSAgICBkZWYgdGVzdF9zY2FuX3N1Yl9kaXIoc2VsZik6Ci0g
ICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgX1RF
U1RfSEFORExFUlNfU1VCX0RJUikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlz
cC5faGFuZGxlcnMpKQotICAgICAgICBzZWxmLmZhaWxJZihkaXNwLl9oYW5kbGVycy5oYXNfa2V5
KCcvb3JpZ2luX2NoZWNrJykpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVy
cy5oYXNfa2V5KCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicpKQotICAgICAgICBzZWxmLmZh
aWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL3N1Yi9wbGFpbicpKQotCi0gICAgZGVm
IHRlc3Rfc2Nhbl9zdWJfZGlyX2FzX3Jvb3Qoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRj
aC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX1NVQl9ESVIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRsZXJzKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoZGlz
cC5faGFuZGxlcnMuaGFzX2tleSgnL29yaWdpbl9jaGVjaycpKQotICAgICAgICBzZWxmLmZhaWxJ
ZihkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicpKQot
ICAgICAgICBzZWxmLmZhaWxJZihkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL3BsYWluJykp
Ci0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvZXhjZXB0
aW9uX2luX3RyYW5zZmVyJykpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVy
cy5oYXNfa2V5KCcvcGxhaW4nKSkKLQotICAgIGRlZiB0ZXN0X3NjYW5fZGlyX211c3RfdW5kZXJf
cm9vdChzZWxmKToKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iJywgJ2EvYi9jJykg
ICMgT0sKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9iLy8vJywgJ2EvYicpICAjIE9L
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIsICdhL2IvYycsICdhL2In
KQotCi0gICAgZGVmIHRlc3RfcmVzb3VyY2VfcGF0aF9hbGlhcyhzZWxmKToKLSAgICAgICAgZGlz
cCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAg
ICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxlbihkaXNwLl9oYW5kbGVycykpCi0gICAgICAgIHNl
bGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvb3JpZ2luX2NoZWNrJykpCi0g
ICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL2V4Y2Vw
dGlvbl9pbl90cmFuc2ZlcicpKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxl
cnMuaGFzX2tleSgnL3N1Yi9wbGFpbicpKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5f
aGFuZGxlcnMuaGFzX2tleSgnLycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRj
aC5EaXNwYXRjaEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwLmFkZF9yZXNv
dXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFzJywgJy9ub3QtZXhpc3QnKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YmYwN2JlODNiYTRmZjkzNTA3NTJhY2ZhZTdi
MTk4NWYxYjk3MjA5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTEzICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9y
IGhhbmRzaGFrZSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBjb25m
aWcgICMgVGhpcyBtdXN0IGJlIGltcG9ydGVkIGJlZm9yZSBtb2RfcHl3ZWJzb2NrZXQuCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLWltcG9ydCBtb2NrCi0KLQotX0dP
T0RfUkVRVUVTVCA9ICgKLSAgICA4MCwKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ1Vw
Z3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAotICAg
ICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKLSAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFt
cGxlLmNvbScsCi0gICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAotICAgIH0K
LSkKLQotX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JUID0gKAotICAgICdIVFRQLzEuMSAxMDEg
V2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2Nr
ZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnV2ViU29ja2V0LU9y
aWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnV2ViU29ja2V0LUxvY2F0aW9uOiB3
czovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBs
ZVxyXG4nCi0gICAgJ1xyXG4nKQotCi1fR09PRF9SRVNQT05TRV9TRUNVUkUgPSAoCi0gICAgJ0hU
VFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdX
ZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdXZWJTb2NrZXQt
TG9jYXRpb246IHdzczovL2V4YW1wbGUuY29tL2RlbW9cclxuJwotICAgICdXZWJTb2NrZXQtUHJv
dG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nKQotCi1fR09PRF9SRVFVRVNUX05PTkRFRkFV
TFRfUE9SVCA9ICgKLSAgICA4MDgxLAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnVXBn
cmFkZSc6J1dlYlNvY2tldCcsCi0gICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCi0gICAg
ICAgICdIb3N0JzonZXhhbXBsZS5jb206ODA4MScsCi0gICAgICAgICdPcmlnaW4nOidodHRwOi8v
ZXhhbXBsZS5jb20nLAotICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKLSAg
ICB9Ci0pCi0KLV9HT09EX1JFU1BPTlNFX05PTkRFRkFVTFRfUE9SVCA9ICgKLSAgICAnSFRUUC8x
LjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1dlYlNv
Y2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1dlYlNvY2tldC1Mb2Nh
dGlvbjogd3M6Ly9leGFtcGxlLmNvbTo4MDgxL2RlbW9cclxuJwotICAgICdXZWJTb2NrZXQtUHJv
dG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nKQotCi1fR09PRF9SRVNQT05TRV9TRUNVUkVf
Tk9OREVGID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hh
a2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbicKLSAgICAnV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicKLSAgICAnV2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbTo4MDgxL2RlbW9c
clxuJwotICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nKQot
Ci1fR09PRF9SRVFVRVNUX05PX1BST1RPQ09MID0gKAotICAgIDgwLAotICAgICcvZGVtbycsCi0g
ICAgewotICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCi0gICAgICAgICdDb25uZWN0aW9u
JzonVXBncmFkZScsCi0gICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAotICAgICAgICAnT3Jp
Z2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9Ci0pCi0KLV9HT09EX1JFU1BPTlNFX05P
X1BST1RPQ09MID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5k
c2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicKLSAgICAnV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29t
XHJcbicKLSAgICAnV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tL2RlbW9cclxu
JwotICAgICdcclxuJykKLQotX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURFUlMgPSAo
Ci0gICAgODAsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdVcGdyYWRlJzonV2ViU29j
a2V0JywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKLSAgICAgICAgJ0hvc3QnOidl
eGFtcGxlLmNvbScsCi0gICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
ICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKLSAgICAgICAgJ0FLZXknOidBVmFs
dWUnLAotICAgICAgICAnRW1wdHlWYWx1ZSc6JycsCi0gICAgfQotKQotCi1fQkFEX1JFUVVFU1RT
ID0gKAotICAgICggICMgSFRUUCByZXF1ZXN0Ci0gICAgICAgIDgwLAotICAgICAgICAnL2RlbW8n
LAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6J3d3dy5nb29nbGUuY29tJywKLSAgICAg
ICAgICAgICdVc2VyLUFnZW50JzonTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFj
IE9TIFggMTAuNTsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEu
MykgR2Vja28vMjAwOTA4MjQgRmlyZWZveC8zLjUuMycKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAnIEdUQjYgR1RCQScsCi0gICAgICAgICAgICAnQWNjZXB0JzondGV4dC9odG1sLGFwcGxpY2F0
aW9uL3hodG1sK3htbCxhcHBsaWNhdGlvbi94bWw7cT0wLjksJwotICAgICAgICAgICAgICAgICAg
ICAgJyovKjtxPTAuOCcsCi0gICAgICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzonZW4tdXMsZW47
cT0wLjUnLAotICAgICAgICAgICAgJ0FjY2VwdC1FbmNvZGluZyc6J2d6aXAsZGVmbGF0ZScsCi0g
ICAgICAgICAgICAnQWNjZXB0LUNoYXJzZXQnOidJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0w
LjcnLAotICAgICAgICAgICAgJ0tlZXAtQWxpdmUnOiczMDAnLAotICAgICAgICAgICAgJ0Nvbm5l
Y3Rpb24nOidrZWVwLWFsaXZlJywKLSAgICAgICAgfQotICAgICksCi0gICAgKCAgIyBNaXNzaW5n
IFVwZ3JhZGUKLSAgICAgICAgODAsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAg
ICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCi0gICAgICAgICAgICAnSG9zdCc6J2V4YW1w
bGUuY29tJywKLSAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
ICAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0gICAgICAgIH0KLSAgICAp
LAotICAgICggICMgV3JvbmcgVXBncmFkZQotICAgICAgICA4MCwKLSAgICAgICAgJy9kZW1vJywK
LSAgICAgICAgewotICAgICAgICAgICAgJ1VwZ3JhZGUnOidOb25XZWJTb2NrZXQnLAotICAgICAg
ICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKLSAgICAgICAgICAgICdIb3N0JzonZXhhbXBs
ZS5jb20nLAotICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAg
ICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKLSAgICAgICAgfQotICAgICks
Ci0gICAgKCAgIyBFbXB0eSBXZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAg
ICcvZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywK
LSAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCi0gICAgICAgICAgICAnSG9zdCc6
J2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20n
LAotICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6JycsCi0gICAgICAgIH0KLSAgICAp
LAotICAgICggICMgV3JvbmcgcG9ydCBudW1iZXIgZm9ybWF0Ci0gICAgICAgIDgwLAotICAgICAg
ICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcs
Ci0gICAgICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAotICAgICAgICAgICAgJ0hvc3Qn
OidleGFtcGxlLmNvbToweDUwJywKLSAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBs
ZS5jb20nLAotICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0gICAg
ICAgIH0KLSAgICApLAotICAgICggICMgSGVhZGVyL2Nvbm5lY3Rpb24gcG9ydCBtaXNtYXRjaAot
ICAgICAgICA4MDgwLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAn
VXBncmFkZSc6J1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUn
LAotICAgICAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnT3JpZ2lu
JzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wn
OidzYW1wbGUnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAoICAjIElsbGVnYWwgV2ViU29ja2V0
LVByb3RvY29sCi0gICAgICAgIDgwLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAg
ICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6
J1VwZ3JhZGUnLAotICAgICAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbScsCi0gICAgICAgICAg
ICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgICAgICdXZWJTb2NrZXQt
UHJvdG9jb2wnOidpbGxlZ2FsXHgwOXByb3RvY29sJywKLSAgICAgICAgfQotICAgICksCi0pCi0K
LV9TVFJJQ1RMWV9HT09EX1JFUVVFU1RTID0gKAotICAgICgKLSAgICAgICAgJ0dFVCAvZGVtbyBI
VFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAg
ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxy
XG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAg
J1xyXG4nLAotICAgICksCi0gICAgKCAgIyBXZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgJ0dF
VCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbics
Ci0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFt
cGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywK
LSAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicsCi0gICAgICAgICdcclxu
JywKLSAgICApLAotICAgICggICMgV2ViU29ja2V0LVByb3RvY29sIGFuZCBDb29raWUKLSAgICAg
ICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0
XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0
OiBleGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21c
clxuJywKLSAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicsCi0gICAgICAg
ICdDb29raWU6IHh5elxyXG4nCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgQ29v
a2llCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6
IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAg
ICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4
YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdDb29raWU6IGFiYy94eXpcclxuJwotICAgICAgICAn
Q29va2llMjogJFZlcnNpb249MVxyXG4nCi0gICAgICAgICdDb29raWU6IGFiY1xyXG4nCi0gICAg
ICAgICdcclxuJywKLSAgICApLAotICAgICgKLSAgICAgICAgJ0dFVCAvIEhUVFAvMS4xXHJcbics
Ci0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246
IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAg
ICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAg
KSwKLSkKLQotX05PVF9TVFJJQ1RMWV9HT09EX1JFUVVFU1RTID0gKAotICAgICggICMgRXh0cmEg
c3BhY2UgYWZ0ZXIgR0VUCi0gICAgICAgICdHRVQgIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAg
ICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmln
aW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAg
ICAoICAjIFJlc291cmNlIG5hbWUgZG9lc24ndCBzdGF0IHdpdGggJy8nCi0gICAgICAgICdHRVQg
ZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0g
ICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxl
LmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAg
ICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBObyBzcGFjZSBhZnRlciA6Ci0gICAgICAg
ICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6V2ViU29ja2V0XHJc
bicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBl
eGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxu
JywKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBMb3dlciBjYXNlIFVwZ3JhZGUg
aGVhZGVyCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ3VwZ3Jh
ZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAot
ICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDov
L2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgQ29u
bmVjdGlvbiBjb21lcyBiZWZvcmUgVXBncmFkZQotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4x
XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0g
ICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnXHJcbics
Ci0gICAgKSwKLSAgICAoICAjIE9yaWdpbiBjb21lcyBiZWZvcmUgSG9zdAotICAgICAgICAnR0VU
IC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywK
LSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0
cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAot
ICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAjIEhvc3QgY29udGludWVkIHRvIHRoZSBu
ZXh0IGxpbmUKLSAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBn
cmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbics
Ci0gICAgICAgICdIb3N0OiBleGFtcGxlXHJcbicsCi0gICAgICAgICcgLmNvbVxyXG4nLAotICAg
ICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xyXG4nLAot
ICAgICksCi0gICAgKCAjIENvb2tpZSBjb21lcyBiZWZvcmUgV2ViU29ja2V0LVByb3RvY29sCi0g
ICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAn
SG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUu
Y29tXHJcbicsCi0gICAgICAgICdDb29raWU6IHh5elxyXG4nCi0gICAgICAgICdXZWJTb2NrZXQt
UHJvdG9jb2w6IHNhbXBsZVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAj
IFVua25vd24gaGVhZGVyCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAg
ICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFk
ZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdp
bjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdDb250ZW50LVR5cGU6IHRleHQv
aHRtbFxyXG4nCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgQ29va2llIHdpdGgg
Y29udGludWF0aW9uIGxpbmVzCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAg
ICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBn
cmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ09y
aWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdDb29raWU6IHh5elxyXG4n
LAotICAgICAgICAnIGFiY1xyXG4nLAotICAgICAgICAnIGRlZmdcclxuJywKLSAgICAgICAgJ1xy
XG4nLAotICAgICksCi0gICAgKCAgIyBXcm9uZy1jYXNlIGNvb2tpZQotICAgICAgICAnR0VUIC9k
ZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAg
ICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUu
Y29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAg
ICAgICAnY29va2llOiBhYmMveHl6XHJcbicKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAg
KCAgIyBDb29raWUsIG5vIHNwYWNlIGFmdGVyIGNvbG9uCi0gICAgICAgICdHRVQgL2RlbW8gSFRU
UC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAn
Q29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxu
JywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdD
b29raWU6YWJjL3h5elxyXG4nCi0gICAgICAgICdcclxuJywKLSAgICApLAotKQotCi0KLWRlZiBf
Y3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpOgotICAgIGNvbm4gPSBtb2NrLk1vY2tDb25uKCcn
KQotICAgIGNvbm4ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIHJlcXVlc3RfZGVmWzBdKQotICAg
IHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KAotICAgICAgICAgICAgdXJpPXJlcXVlc3RfZGVmWzFd
LAotICAgICAgICAgICAgaGVhZGVyc19pbj1yZXF1ZXN0X2RlZlsyXSwKLSAgICAgICAgICAgIGNv
bm5lY3Rpb249Y29ubikKLQotCi1kZWYgX2NyZWF0ZV9nZXRfbWVtb3JpemVkX2xpbmVzKGxpbmVz
KToKLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcygpOgotICAgICAgICByZXR1cm4gbGluZXMK
LSAgICByZXR1cm4gZ2V0X21lbW9yaXplZF9saW5lcwotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3Rz
X3dpdGhfbGluZXMocmVxdWVzdF9saW5lc19zZXQpOgotICAgIHJlcXVlc3RzID0gW10KLSAgICBm
b3IgbGluZXMgaW4gcmVxdWVzdF9saW5lc19zZXQ6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoX0dPT0RfUkVRVUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF9t
ZW1vcml6ZWRfbGluZXMgPSBfY3JlYXRlX2dldF9tZW1vcml6ZWRfbGluZXMoCi0gICAgICAgICAg
ICAgICAgbGluZXMpCi0gICAgICAgIHJlcXVlc3RzLmFwcGVuZChyZXF1ZXN0KQotICAgIHJldHVy
biByZXF1ZXN0cwotCi0KLWNsYXNzIEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
LSAgICBkZWYgdGVzdF92YWxpZGF0ZV9wcm90b2NvbChzZWxmKToKLSAgICAgICAgaGFuZHNoYWtl
Ll92YWxpZGF0ZV9wcm90b2NvbCgnc2FtcGxlJykgICMgc2hvdWxkIHN1Y2NlZWQuCi0gICAgICAg
IGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2woJ1NhbXBsZScpICAjIHNob3VsZCBzdWNjZWVk
LgotICAgICAgICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sKCdzYW1wbGVceDIwcHJvdG9j
b2wnKSAgIyBzaG91bGQgc3VjY2VlZC4KLSAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90
b2NvbCgnc2FtcGxlXHg3ZXByb3RvY29sJykgICMgc2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5k
c2hha2VFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0
ZV9wcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MTlwcm90b2Nv
bCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4N2Zwcm90b2NvbCcpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIHUnXHU2NWU1XHU2NzJjJykKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9kZWZh
dWx0X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0Rf
UkVRVUVTVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVl
c3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tE
aXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJlcXVlc3Qud3Nfb3JpZ2lu
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3czovL2V4YW1wbGUuY29tL2RlbW8nLCByZXF1
ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1
ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9kZWZh
dWx0X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0Rf
UkVRVUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHIgPSAoJzAuMC4w
LjAnLCA0NDMpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQotICAgICAgICBoYW5k
c2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAg
aGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09E
X1JFU1BPTlNFX1NFQ1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScs
IHJlcXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfbm9uZGVm
YXVsdF9wb3J0KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09E
X1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUKQotICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtl
LkhhbmRzaGFrZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5k
c2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX05PTkRFRkFV
TFRfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX25vbl9kZWZh
dWx0X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0Rf
UkVRVUVTVF9OT05ERUZBVUxUX1BPUlQpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1
ZQotICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRl
c3RfZ29vZF9yZXF1ZXN0X2RlZmF1bHRfbm9fcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9OT19QUk9UT0NPTCkKLSAgICAgICAg
aGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAg
ICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChf
R09PRF9SRVNQT05TRV9OT19QUk9UT0NPTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9v
cHRpb25hbF9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KF9HT09EX1JFUVVFU1RfV0lUSF9PUFRJT05BTF9IRUFERVJTKQotICAgICAgICBoYW5kc2hha2Vy
ID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBVmFsdWUnLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVyc19pblsnQUtleSddKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQotCi0gICAgZGVmIHRlc3RfYmFkX3JlcXVlc3Rz
KHNlbGYpOgotICAgICAgICBmb3IgcmVxdWVzdCBpbiBtYXAoX2NyZWF0ZV9yZXF1ZXN0LCBfQkFE
X1JFUVVFU1RTKToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtl
cihyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGhh
bmRzaGFrZS5IYW5kc2hha2VFcnJvciwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCi0KLSAgICBk
ZWYgdGVzdF9zdHJpY3RseV9nb29kX3JlcXVlc3RzKHNlbGYpOgotICAgICAgICBmb3IgcmVxdWVz
dCBpbiBfY3JlYXRlX3JlcXVlc3RzX3dpdGhfbGluZXMoX1NUUklDVExZX0dPT0RfUkVRVUVTVFMp
OgotICAgICAgICAgICAgc3RyaWN0X2hhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihy
ZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCi0gICAgICAgICAgICBzdHJpY3RfaGFuZHNo
YWtlci5kb19oYW5kc2hha2UoKQotCi0gICAgZGVmIHRlc3Rfbm90X3N0cmljdGx5X2dvb2RfcmVx
dWVzdHMoc2VsZik6Ci0gICAgICAgIGZvciByZXF1ZXN0IGluIF9jcmVhdGVfcmVxdWVzdHNfd2l0
aF9saW5lcyhfTk9UX1NUUklDVExZX0dPT0RfUkVRVUVTVFMpOgotICAgICAgICAgICAgc3RyaWN0
X2hhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRj
aGVyKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFRydWUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNo
YWtlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UpCi0KLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVu
aXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9t
ZW1vcml6aW5nZmlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDJkZTc3YmE1ZGM2NDE5ODc4MWRlMGZhMjE2ZGQyZGY0NmVkY2MwZDAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1lbW9yaXpp
bmdmaWxlIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCB1bml0dGVzdAot
Ci1pbXBvcnQgY29uZmlnICAjIFRoaXMgbXVzdCBiZSBpbXBvcnRlZCBiZWZvcmUgbW9kX3B5d2Vi
c29ja2V0LgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IG1lbW9yaXppbmdmaWxlCi0KLQot
Y2xhc3MgVXRpbFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBjaGVjayhzZWxmLCBt
ZW1vcml6aW5nX2ZpbGUsIG51bV9yZWFkLCBleHBlY3RlZF9saXN0KToKLSAgICAgICAgZm9yIHVu
dXNlZCBpbiByYW5nZShudW1fcmVhZCk6Ci0gICAgICAgICAgICBtZW1vcml6aW5nX2ZpbGUucmVh
ZGxpbmUoKQotICAgICAgICBhY3R1YWxfbGlzdCA9IG1lbW9yaXppbmdfZmlsZS5nZXRfbWVtb3Jp
emVkX2xpbmVzKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCks
IGxlbihhY3R1YWxfbGlzdCkpCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChl
eHBlY3RlZF9saXN0LCBhY3R1YWxfbGlzdCk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzKHNl
bGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5n
RmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAgICAgICAgICAgICAnSGVsbG9cbldvcmxkXG5X
ZWxjb21lJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3JpemluZ19maWxlLCAzLCBbJ0hlbGxv
XG4nLCAnV29ybGRcbicsICdXZWxjb21lJ10pCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVk
X2xpbmVzX2xpbWl0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgbWVtb3JpemluZ19m
aWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCi0g
ICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpLCAyKQotICAgICAgICBzZWxm
LmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMywgWydIZWxsb1xuJywgJ1dvcmxkXG4nXSkKLQotICAg
IGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXNfZW1wdHlfZmlsZShzZWxmKToKLSAgICAgICAg
bWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8u
U3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJycpKQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9y
aXppbmdfZmlsZSwgMTAsIFtdKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAg
dW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X21vY2sucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhi
MTM3ZDEzODU4OWNlN2I0YWIwMWMxZjMwOWM2YjU1ZjhlMzE2MmEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsMTI2ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQg
MjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVp
dGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLQotIiIiVGVzdHMgZm9yIG1vY2sgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBRdWV1ZQot
aW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBtb2NrCi0KLQotY2xh
c3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgc2V0VXAoc2VsZik6
Ci0gICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKCdBQkNcclxuREVGR1xyXG5cclxu
SElKSycpCi0KLSAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnQUJDXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0hJSksnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLQotICAgIGRlZiB0ZXN0
X3JlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0FCQ1xyXG5EJywgc2VsZi5f
Y29ubi5yZWFkKDYpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdFRkdcclxuXHJcbkhJJywg
c2VsZi5fY29ubi5yZWFkKDkpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdKSycsIHNlbGYu
X2Nvbm4ucmVhZCgxMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4u
cmVhZCgxMCkpCi0KLSAgICBkZWYgdGVzdF9yZWFkX2FuZF9yZWFkbGluZShzZWxmKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbkQnLCBzZWxmLl9jb25uLnJlYWQoNikpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xyXG5ISUpLJywgc2VsZi5fY29ubi5yZWFkKDkpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAg
ICBkZWYgdGVzdF93cml0ZShzZWxmKToKLSAgICAgICAgc2VsZi5fY29ubi53cml0ZSgnSGVsbG9c
clxuJykKLSAgICAgICAgc2VsZi5fY29ubi53cml0ZSgnV29ybGRcclxuJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnSGVsbG9cclxuV29ybGRcclxuJywgc2VsZi5fY29ubi53cml0dGVuX2Rh
dGEoKSkKLQotCi1jbGFzcyBNb2NrQmxvY2tpbmdDb25uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgY2xhc3MgTGluZVJlYWRlcih0aHJl
YWRpbmcuVGhyZWFkKToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25uLCBxdWV1
ZSk6Ci0gICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAg
ICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKLSAgICAgICAgICAgICAgICBzZWxmLl9j
b25uID0gY29ubgotICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAg
ICAgICAgICAgc2VsZi5zdGFydCgpCi0gICAgICAgICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAg
ICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9j
b25uLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVldWUucHV0KGRhdGEp
Ci0gICAgICAgIGNvbm4gPSBtb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKQotICAgICAgICBxdWV1ZSA9
IFF1ZXVlLlF1ZXVlKCkKLSAgICAgICAgcmVhZGVyID0gTGluZVJlYWRlcihjb25uLCBxdWV1ZSkK
LSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHF1ZXVlLmVtcHR5KCkpCi0gICAgICAgIGNvbm4ucHV0
X2J5dGVzKCdGb28gYmFyXHJcbicpCi0gICAgICAgIHJlYWQgPSBxdWV1ZS5nZXQoKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdGb28gYmFyXHJcbicsIHJlYWQpCi0KLQotY2xhc3MgTW9ja1Rh
YmxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfY3JlYXRlX2Zyb21fZGlj
dChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSh7J0tleSc6J1ZhbHVlJ30p
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBkZWYg
dGVzdF9jcmVhdGVfZnJvbV9saXN0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1Rh
YmxlKFsoJ0tleScsICdWYWx1ZScpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUn
LCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRh
YmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX3R1cGxlKHNlbGYpOgotICAg
ICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCgoJ0tleScsICdWYWx1ZScpLCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBkZWYgdGVzdF9zZXRf
YW5kX2dldChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGFibGUuZ2V0KCdLZXknKSkKLSAgICAgICAgdGFibGVb
J0tleSddID0gJ1ZhbHVlJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxl
LmdldCgnS2V5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0
KCdrZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tF
WScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLZXknXSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tFWSddKQotCi0KLWlmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2Yjg4ZTBmMmViODlkMjk4ZWYwN2IyNjE3YTQyMWMwYTU2
NGM5NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVz
dF9tc2d1dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG1zZ3V0aWwg
bW9kdWxlLiIiIgotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBj
b25maWcgICMgVGhpcyBtdXN0IGJlIGltcG9ydGVkIGJlZm9yZSBtb2RfcHl3ZWJzb2NrZXQuCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAotCi1pbXBvcnQgbW9jawotCi0KLWRl
ZiBfY3JlYXRlX3JlcXVlc3QocmVhZF9kYXRhKToKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVz
dChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRhKSkKLQotZGVmIF9jcmVhdGVfYmxv
Y2tpbmdfcmVxdWVzdCgpOgotICAgIHJldHVybiBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249
bW9jay5Nb2NrQmxvY2tpbmdDb25uKCkpCi0KLWNsYXNzIE1lc3NhZ2VUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoJycpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJl
cXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYn
LCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5k
X21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgnJykKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQot
ICAgICAgICAjIFUrNjVlNSBpcyBlbmNvZGVkIGFzIGU2LDk3LGE1IGluIFVURi04Ci0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBceGU2XHg5N1x4YTVceGZmJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYg
dGVzdF9yZWNlaXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoJ1x4MDBIZWxsb1x4ZmZceDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX3VuaWNvZGUoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoJ1x4MDBceGU2XHg5Y1x4YWNceGZmJykKLSAg
ICAgICAgIyBVKzY3MmMgaXMgZW5jb2RlZCBhcyBlNiw5YyxhYyBpbiBVVEYtOAotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHUnXHU2NzJjJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZXJyb25lb3VzX3VuaWNvZGUoc2Vs
Zik6Ci0gICAgICAgICMgXHg4MCBhbmQgXHg4MSBhcmUgaW52YWxpZCBhcyBVVEYtOC4KLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgnXHgwMFx4ODBceDgxXHhmZicpCi0gICAgICAg
ICMgSW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoCi0gICAgICAgICMg
VStmZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHUn
XHVmZmZkXHVmZmZkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBk
ZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdCgnXHg4MFx4MDZJR05PUkVceDAwSGVsbG9ceGZmJwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnXHgwMURJU1JFR0FSRFx4ZmZceDAwV29ybGQhXHhmZicp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwu
cmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcGF5bG9hZF9sZW5ndGgo
c2VsZik6Ci0gICAgICAgIGZvciBsZW5ndGgsIGJ5dGVzIGluICgoMCwgJ1x4MDAnKSwgKDB4N2Ys
ICdceDdmJyksICgweDgwLCAnXHg4MVx4MDAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgweDEyMzQsICdceDgwXHhhNFx4MzQnKSk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5fcGF5bG9h
ZF9sZW5ndGgoX2NyZWF0ZV9yZXF1ZXN0KGJ5dGVzKSkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZl
X2J5dGVzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdhYmNkZWZn
JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJywgbXNndXRpbC5fcmVjZWl2ZV9ieXRl
cyhyZXF1ZXN0LCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVmZycsIG1zZ3V0aWwu
X3JlY2VpdmVfYnl0ZXMocmVxdWVzdCwgNCkpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3VudGlsKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdhYmNYZGVmZ1gnKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLCBtc2d1dGlsLl9yZWFkX3VudGlsKHJlcXVlc3Qs
ICdYJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmcnLCBtc2d1dGlsLl9yZWFkX3Vu
dGlsKHJlcXVlc3QsICdYJykpCi0KLQotY2xhc3MgTWVzc2FnZVJlY2VpdmVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3Qg
PSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwu
TWVzc2FnZVJlY2VpdmVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25l
LCByZWNlaXZlci5yZWNlaXZlX25vd2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoJ1x4MDBIZWxsbyFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SGVsbG8hJywgcmVjZWl2ZXIucmVjZWl2ZSgpKQotCi0gICAgZGVmIHRlc3Rfb25tZXNzYWdlKHNl
bGYpOgotICAgICAgICBvbm1lc3NhZ2VfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIGRl
ZiBvbm1lc3NhZ2VfaGFuZGxlcihtZXNzYWdlKToKLSAgICAgICAgICAgIG9ubWVzc2FnZV9xdWV1
ZS5wdXQobWVzc2FnZSkKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1
ZXN0KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1ZXN0
LCBvbm1lc3NhZ2VfaGFuZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKCdceDAwSGVsbG8hXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScs
IG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwu
TWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToKLSAg
ICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNzYWdl
U2VuZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBjYW5u
b3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMgaW4g
YSBzZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0g
ICAgICAgIGRlZiB3cml0ZShieXRlcyk6Ci0gICAgICAgICAgICBzZW5kX3F1ZXVlLnB1dChieXRl
cykKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAgICAgc2VuZGVyID0gbXNn
dXRpbC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0
KCdIZWxsbycpCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29ybGQnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgc2VuZF9xdWV1ZS5nZXQoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHNlbmRfcXVldWUuZ2V0KCkpCi0K
LQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0j
IHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfdXRpbC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfdXRpbC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjFmMGRiNWE0NWIyMjAyYjMwYTllMzIw
ZTY1ZTNhZWM4MTcyYjEwYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0X3V0aWwucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0jIS91
c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciB1
dGlsIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVz
dAotCi1pbXBvcnQgY29uZmlnICAjIFRoaXMgbXVzdCBiZSBpbXBvcnRlZCBiZWZvcmUgbW9kX3B5
d2Vic29ja2V0LgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotX1RFU1RfREFU
QV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICd0ZXN0ZGF0
YScpCi0KLWNsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9n
ZXRfc3RhY2tfdHJhY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vbmVcbics
IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGEgPSAx
IC8gMCAgIyBJbnRlbnRpb25hbGx5IHJhaXNlIGV4Y2VwdGlvbi4KLSAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbjoKLSAgICAgICAgICAgIHRyYWNlID0gdXRpbC5nZXRfc3RhY2tfdHJhY2UoKQotICAg
ICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHRyYWNlLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQot
ICAgICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHRyYWNlLmZpbmQoJ1plcm9EaXZpc2lvbkVycm9y
JykgIT0gLTEpCi0KLSAgICBkZWYgdGVzdF9wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKHNl
bGYpOgotICAgICAgICBleGMgPSBFeGNlcHRpb24oJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnV29ybGQnLCBzdHIoZXhjKSkKLSAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2Vf
dG9fZXhjZXB0aW9uKCdIZWxsbyAnLCBleGMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvIFdvcmxkJywgc3RyKGV4YykpCi0KLSAgICBkZWYgdGVzdF9nZXRfc2NyaXB0X2ludGVycChz
ZWxmKToKLSAgICAgICAgY3lnd2luX3BhdGggPSAnYzpcXGN5Z3dpblxcYmluJwotICAgICAgICBj
eWd3aW5fcGVybCA9IG9zLnBhdGguam9pbihjeWd3aW5fcGF0aCwgJ3BlcmwnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAg
ICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoTm9uZSwgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9z
LnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ1JFQURNRScpLCBjeWd3aW5fcGF0aCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy91c3IvYmluL3BlcmwgLXdUJywgdXRpbC5nZXRfc2NyaXB0
X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxv
LnBsJykpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN5Z3dpbl9wZXJsICsgJyAtd1QnLCB1
dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RB
VEFfRElSLCAnaGVsbG8ucGwnKSwgY3lnd2luX3BhdGgpKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGMwMDFhYTU1OTVjZGQxMzQwN2Y1NzI4ZWNkNTMyYTVkMTIyNjNl
ZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotVGVzdCBkYXRhIGRpcmVjdG9y
eQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvYmxhbmtfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Zjg3
YzZhZjIzZGYwOGVmZTM1NzVjYWUyMDhkZTUwMjJjYmFhNjYwLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5w
eQorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMg
aW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9v
cmlnaW5fY2hlY2tfd3NoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMxMzlmYTE3NmNjMzQxN2JlOTZkZTc5
OGU2YTgxZWQxNDliMTk5Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRf
ZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09
ICdodHRwOi8vZXhhbXBsZS5jb20nOgotICAgICAgICByZXR1cm4KLSAgICByYWlzZSBWYWx1ZUVy
cm9yKCdVbmFjY2VwdGFibGUgb3JpZ2luOiAlcicgJSByZXF1ZXN0LndzX29yaWdpbikKLQotCi1k
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0ZSgnb3JpZ2luX2NoZWNrX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVz
dC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
ZGF0YS9oYW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiOTgyZDAyMzFlZjAwZjAyZTBkOTBkZjY3OGViODA0YmE0Mzg2MmQ5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5CisrKyAvZGV2L251bGwK
QEAgLTEsNDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0Ogot
IwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRXhjZXB0aW9uIGluIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIEV4Y2VwdGlvbignSW50ZW50aW9uYWwgRXhj
ZXB0aW9uIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVz
b3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxN2U3YmUxODAyZTNjNjZjNjM4NDk4NzVlYTM1ZTI0MDZhMzgxZTYwLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvcnJlY3Qgc2lnbmF0dXJlcywgd3Jvbmcg
ZmlsZSBuYW1lLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJl
cXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvbm9f
d3NoX2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChy
ZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVf
d3NoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MzUyZWI0Y2EyMzg5NTIyMzllMzU0MjcyOGNlM2Iz
OGQ4M2RkNmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwzOSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJOb24tY2FsbGFibGUgaGFu
ZGxlcnMuCi0iIiIKLQotCi13ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSA9IFRydWUKLXdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YSA9IDEKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93c2gucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9zdWIvcGxhaW5fd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjNm
ZjY5MzAyNTZiYzFiMTNlMmM0YzJkMWM4NDNjNGI3YzgwYWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBH
b29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBj
b3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
Ci0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQot
Ci1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwot
Ci0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAl
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1
ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNmJmNjU5YmM5YWYwMWMxMDdlZjM1MDhiMmI1ZDAxNzNkY2Y1OTAwOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKKysrIC9kZXYvbnVsbApAQCAt
MSw0NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXcm9uZyB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZSBzaWduYXR1cmUuCi0iIiIKLQotCi1kZWYgbm9fd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAot
ICAgICAgICAgICAgJ3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9y
ICVzLCAlcycgJQotICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0Lndz
X3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGUwZTJlNTUwNzk0YjdiOTkwZTBiNDRiMzNjZmMyZDRkMTUyZTZjMDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCww
IEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXcm9uZyB3ZWJfc29ja2V0X3RyYW5zZmVyX2Rh
dGEoKSBzaWduYXR1cmUuCi0iIiIKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiBub193ZWJfc29ja2V0X3RyYW5zZmVyX2Rh
dGEocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAotICAgICAgICAgICAg
J3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCi0g
ICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0K
LQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oZWxsby5wbCBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rl
c3RkYXRhL2hlbGxvLnBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGQwMWI0YWQ4
MWM3YmY2NzRhYmM1NmNmMDgzYWNhOGUxNmZiZDY1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hlbGxvLnBsCisrKyAvZGV2L251bGwKQEAg
LTEsMiArMCwwIEBACi0jIS91c3IvYmluL3BlcmwgLXdUCi1wcmludCAiSGVsbG9cbiI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55206</attachid>
            <date>2010-05-05 23:11:22 -0700</date>
            <delta_ts>2010-05-06 14:10:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-38034-20100506151120.patch</filename>
            <type>text/plain</type>
            <size>169448</size>
            <attacher name="Fumitoshi Ukai">ukai</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjZWRmNzYwOWNiYTY4OGE0MDhlZTM4OTc1MjNkZGI5ZWJkNzc2NWEyLi44Y2QzNmNl
Y2JhY2Q2MWEwNDcxMTQ5MDgyOTdhNjYzNGQ2Nzk3MzMwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTAtMDUtMDUgIEZ1bWl0b3NoaSBVa2FpICA8dWthaUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViU29ja2V0OiBweXdl
YnNvY2tldCAwLjUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4MDM0CisKKyAgICAgICAgUmVtb3ZlIHB5d2Vic29ja2V0IGZyb20gd2Via2l0cHkvdGhp
cmRwYXJ0eS4KKyAgICAgICAgTWFrZSBweXdlYnNvY2tldCBhdXRvaW5zdGFsbGVkLgorCisgICAg
ICAgICogU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXI6CisgICAgICAgICAg
QWRkIC0tb3V0cHV0LWRpciBvcHRpb24uCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdlYmtp
dC10ZXN0czoKKyAgICAgICAgICBVc2UgbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyLCBy
YXRoZXIgdGhhbiBkaXJlY3RseSBydW4gcHl3ZWJzb2NrZXQncyBzdGFuZGFsb25lLnB5CisgICAg
ICAgICogU2NyaXB0cy9ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcjoKKyAgICAgICAgICBEaXR0
by4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tl
dF9zZXJ2ZXIucHk6CisgICAgICAgICAgVXNlIGF1dG9pbnN0YWxsZWQgcHl3ZWJzb2NrZXQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAg
ICAgIEF1dG9pbnN0YWxsIHB5d2Vic29ja2V0CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0OiBSZW1vdmVkLgorCiAyMDEwLTA1LTA1ICBEaXJrIFByYW5r
ZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2Vp
ZGVsLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJz
b2NrZXRzZXJ2ZXIgYi9XZWJLaXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tl
dHNlcnZlcgppbmRleCA4ZTRhZWFhYzgyY2E5NmFjNDU5YzY5YjVkOTMxYjczMDlkODJkMmYzLi5l
NDNhYmFiOTQ4YTEyMmVkYjE1NjliYzNhODQyNWJjYmFkNmU4YTVlIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcgorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcgpAQCAtNTksNiAr
NTksOCBAQCBkZWYgbWFpbigpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJy
ZWdpc3Rlcl9jeWd3aW4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZWdp
c3RlciBDeWd3aW4gcGF0aHMgKG9uIFdpbiB0cnkgYm90cyknKQogICAgIG9wdGlvbl9wYXJzZXIu
YWRkX29wdGlvbignLS1waWRmaWxlJywgaGVscD0ncGF0aCB0byBwaWQgZmlsZS4nKQorICAgIG9w
dGlvbl9wYXJzZXIuYWRkX29wdGlvbignLS1vdXRwdXQtZGlyJywgZGVzdD0nb3V0cHV0X2Rpcics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgaGVscD0nb3V0cHV0
IGRpcmVjdG9yeS4nKQogICAgIG9wdGlvbl9wYXJzZXIuYWRkX29wdGlvbignLXYnLCAnLS12ZXJi
b3NlJywgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD1GYWxzZSwgaGVscD0naW5jbHVkZSBkZWJ1Zy1sZXZlbCBsb2dnaW5nJykKICAgICBv
cHRpb25zLCBhcmdzID0gb3B0aW9uX3BhcnNlci5wYXJzZV9hcmdzKCkKQEAgLTcxLDYgKzczLDkg
QEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZG4ndCBncmFiIGF0
IHRoaXMgcHJpdmF0ZSB2YXJpYWJsZS4KICAgICAgICAgICAgIG9wdGlvbnMucG9ydCA9IHdlYnNv
Y2tldF9zZXJ2ZXIuX0RFRkFVTFRfV1NfUE9SVAogCisgICAgaWYgbm90IG9wdGlvbnMub3V0cHV0
X2RpcjoKKyAgICAgICAgb3B0aW9ucy5vdXRwdXRfZGlyID0gdGVtcGZpbGUuZ2V0dGVtcGRpcigp
CisKICAgICBrd2RzID0geydwb3J0Jzogb3B0aW9ucy5wb3J0LCAndXNlX3Rscyc6IG9wdGlvbnMu
dXNlX3Rsc30KICAgICBpZiBvcHRpb25zLnJvb3Q6CiAgICAgICAgIGt3ZHNbJ3Jvb3QnXSA9IG9w
dGlvbnMucm9vdApAQCAtODMsNyArODgsNyBAQCBkZWYgbWFpbigpOgogICAgICAgICBrd2RzWydw
aWRmaWxlJ10gPSBvcHRpb25zLnBpZGZpbGUKIAogICAgIHBvcnRfb2JqID0gZmFjdG9yeS5nZXQo
KQotICAgIHB5d2Vic29ja2V0ID0gd2Vic29ja2V0X3NlcnZlci5QeVdlYlNvY2tldChwb3J0X29i
aiwgdGVtcGZpbGUuZ2V0dGVtcGRpcigpLCAqKmt3ZHMpCisgICAgcHl3ZWJzb2NrZXQgPSB3ZWJz
b2NrZXRfc2VydmVyLlB5V2ViU29ja2V0KHBvcnRfb2JqLCBvcHRpb25zLm91dHB1dF9kaXIsICoq
a3dkcykKIAogICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuV0FSTgogICAgIGlmIG9wdGlvbnMudmVy
Ym9zZToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVz
dHMgYi9XZWJLaXRUb29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCmluZGV4IGQ1ZDcz
NDljNzM0ZTUzMmJhZTBiZDA1YWNiM2Y1MTVmMGU3ZjliMDguLjhlOGM1MWQyMzlkODNhMzFmOGFm
ZGViMWQ0MTM5N2EwYmU1MjkwNmUgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvb2xk
LXJ1bi13ZWJraXQtdGVzdHMKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtp
dC10ZXN0cwpAQCAtNTUzLDcgKzU1Myw3IEBAIG15ICRsYXN0RGlyZWN0b3J5ID0gIiI7CiAKIG15
ICRpc0h0dHBkT3BlbiA9IDA7CiBteSAkaXNXZWJTb2NrZXRTZXJ2ZXJPcGVuID0gMDsKLW15ICR3
ZWJTb2NrZXRTZXJ2ZXJQSUQgPSAwOworbXkgJHdlYlNvY2tldFNlcnZlclBpZEZpbGUgPSAwOwog
bXkgJGZhaWxlZFRvU3RhcnRXZWJTb2NrZXRTZXJ2ZXIgPSAwOwogIyB3c3MgaXMgZGlzYWJsZWQg
dW50aWwgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHB5T3BlblNTTC4KICMgbXkgJHdlYlNvY2tldFNl
Y3VyZVNlcnZlclBJRCA9IDA7CkBAIC0xNDIxLDU0ICsxNDIxLDE5IEBAIHN1YiBvcGVuV2ViU29j
a2V0U2VydmVySWZOZWVkZWQoKQogICAgIHJldHVybiAxIGlmICRpc1dlYlNvY2tldFNlcnZlck9w
ZW47CiAgICAgcmV0dXJuIDAgaWYgJGZhaWxlZFRvU3RhcnRXZWJTb2NrZXRTZXJ2ZXI7CiAKLSAg
ICBteSAkd2ViU29ja2V0U2VydmVyUGF0aCA9ICIvdXNyL2Jpbi9weXRob24iOwotICAgIG15ICR3
ZWJTb2NrZXRQeXRob25QYXRoID0gIldlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldCI7CiAgICAgbXkgJHdlYlNvY2tldEhhbmRsZXJEaXIgPSAiJHRlc3RE
aXJlY3RvcnkiOwotICAgIG15ICR3ZWJTb2NrZXRIYW5kbGVyU2NhbkRpciA9ICIkdGVzdERpcmVj
dG9yeS93ZWJzb2NrZXQvdGVzdHMiOwotICAgIG15ICR3ZWJTb2NrZXRIYW5kbGVyTWFwRmlsZSA9
ICIkd2ViU29ja2V0SGFuZGxlclNjYW5EaXIvaGFuZGxlcl9tYXAudHh0IjsKLSAgICBteSAkc3Ns
Q2VydGlmaWNhdGUgPSAiJHRlc3REaXJlY3RvcnkvaHR0cC9jb25mL3dlYmtpdC1odHRwZC5wZW0i
OwogICAgIG15ICRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeSA9IHJlc29sdmVBbmRNYWtlVGVzdFJl
c3VsdHNEaXJlY3RvcnkoKTsKLSAgICBteSAkbG9nRmlsZSA9ICIkYWJzVGVzdFJlc3VsdHNEaXJl
Y3RvcnkvcHl3ZWJzb2NrZXRfbG9nLnR4dCI7CisgICAgJHdlYlNvY2tldFNlcnZlclBpZEZpbGUg
PSAiJGFic1Rlc3RSZXN1bHRzRGlyZWN0b3J5L3dlYnNvY2tldC5waWQiOwogCiAgICAgbXkgQGFy
Z3MgPSAoCi0gICAgICAgICJXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkiLAotICAgICAgICAiLS1z
ZXJ2ZXItaG9zdCIsICIxMjcuMC4wLjEiLAorICAgICAgICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9u
ZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIiLAorICAgICAgICAiLS1zZXJ2ZXIiLCAic3Rh
cnQiLAogICAgICAgICAiLS1wb3J0IiwgIiR3ZWJTb2NrZXRQb3J0IiwKLSAgICAgICAgIi0tZG9j
dW1lbnQtcm9vdCIsICIkd2ViU29ja2V0SGFuZGxlckRpciIsCi0gICAgICAgICItLXNjYW4tZGly
IiwgIiR3ZWJTb2NrZXRIYW5kbGVyU2NhbkRpciIsCi0gICAgICAgICItLXdlYnNvY2staGFuZGxl
cnMtbWFwLWZpbGUiLCAiJHdlYlNvY2tldEhhbmRsZXJNYXBGaWxlIiwKLSAgICAgICAgIi0tY2dp
LXBhdGhzIiwgIi93ZWJzb2NrZXQvdGVzdHMiLAotICAgICAgICAiLS1sb2ctZmlsZSIsICIkbG9n
RmlsZSIsCi0gICAgICAgICItLXN0cmljdCIsCisgICAgICAgICItLXJvb3QiLCAiJHdlYlNvY2tl
dEhhbmRsZXJEaXIiLAorICAgICAgICAiLS1vdXRwdXQtZGlyIiwgIiRhYnNUZXN0UmVzdWx0c0Rp
cmVjdG9yeSIsCisgICAgICAgICItLXBpZGZpbGUiLCAiJHdlYlNvY2tldFNlcnZlclBpZEZpbGUi
CiAgICAgKTsKLSAgICAjIHdzcyBpcyBkaXNhYmxlZCB1bnRpbCBhbGwgcGxhdGZvcm1zIHN1cHBv
cnQgcHlPcGVuU1NMLgotICAgICMgbXkgQGFyZ3NTZWN1cmUgPSAoCi0gICAgIyAgICAgIldlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvc3RhbmRhbG9uZS5weSIsCi0gICAgIyAgICAgIi1wIiwgIiR3ZWJTb2NrZXRTZWN1cmVQ
b3J0IiwKLSAgICAjICAgICAiLWQiLCAiJHdlYlNvY2tldEhhbmRsZXJEaXIiLAotICAgICMgICAg
ICItdCIsCi0gICAgIyAgICAgIi1rIiwgIiRzc2xDZXJ0aWZpY2F0ZSIsCi0gICAgIyAgICAgIi1j
IiwgIiRzc2xDZXJ0aWZpY2F0ZSIsCi0gICAgIyApOwotCi0gICAgJEVOVnsiUFlUSE9OUEFUSCJ9
ID0gJHdlYlNvY2tldFB5dGhvblBhdGg7Ci0gICAgJHdlYlNvY2tldFNlcnZlclBJRCA9IG9wZW4z
KFwqV0VCU09DS0VUU0VSVkVSX0lOLCBcKldFQlNPQ0tFVFNFUlZFUl9PVVQsIFwqV0VCU09DS0VU
U0VSVkVSX0VSUiwgJHdlYlNvY2tldFNlcnZlclBhdGgsIEBhcmdzKTsKLSAgICAjIHdzcyBpcyBk
aXNhYmxlZCB1bnRpbCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgcHlPcGVuU1NMLgotICAgICMgJHdl
YlNvY2tldFNlY3VyZVNlcnZlclBJRCA9IG9wZW4zKFwqV0VCU09DS0VUU0VDVVJFU0VSVkVSX0lO
LCBcKldFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9PVVQsIFwqV0VCU09DS0VUU0VDVVJFU0VSVkVSX0VS
UiwgJHdlYlNvY2tldFNlcnZlclBhdGgsIEBhcmdzU2VjdXJlKTsKLSAgICAjIG15IEBsaXN0ZW4g
PSAoImh0dHA6Ly8xMjcuMC4wLjE6JHdlYlNvY2tldFBvcnQiLCAiaHR0cHM6Ly8xMjcuMC4wLjE6
JHdlYlNvY2tldFNlY3VyZVBvcnQiKTsKLSAgICBteSBAbGlzdGVuID0gKCJodHRwOi8vMTI3LjAu
MC4xOiR3ZWJTb2NrZXRQb3J0Iik7Ci0gICAgZm9yIChteSAkaSA9IDA7ICRpIDwgQGxpc3Rlbjsg
JGkrKykgewotICAgICAgICBteSAkcmV0cnlDb3VudCA9IDEwOwotICAgICAgICB3aGlsZSAoc3lz
dGVtKCIvdXNyL2Jpbi9jdXJsIC1rIC1xIC0tc2lsZW50IC0tc3RkZXJyIC0gLS1vdXRwdXQgL2Rl
di9udWxsICRsaXN0ZW5bJGldIikgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgIHNsZWVw
IDE7Ci0gICAgICAgICAgICAtLSRyZXRyeUNvdW50OwotICAgICAgICB9Ci0gICAgICAgIHVubGVz
cyAoJHJldHJ5Q291bnQpIHsKLSAgICAgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdh
aXRpbmcgZm9yIFdlYlNvY2tldFNlcnZlciB0byBzdGFydC5cbiI7Ci0gICAgICAgICAgICAkZmFp
bGVkVG9TdGFydFdlYlNvY2tldFNlcnZlciA9IDE7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotICAgIH0KKyAgICBzeXN0ZW0gIi91c3IvYmluL3B5dGhvbiIsIEBhcmdzOwogCiAg
ICAgJGlzV2ViU29ja2V0U2VydmVyT3BlbiA9IDE7CiAgICAgcmV0dXJuIDE7CkBAIC0xNDc4LDE3
ICsxNDQzLDE1IEBAIHN1YiBjbG9zZVdlYlNvY2tldFNlcnZlcigpCiB7CiAgICAgcmV0dXJuIGlm
ICEkaXNXZWJTb2NrZXRTZXJ2ZXJPcGVuOwogCi0gICAgY2xvc2UgV0VCU09DS0VUU0VSVkVSX0lO
OwotICAgIGNsb3NlIFdFQlNPQ0tFVFNFUlZFUl9PVVQ7Ci0gICAgY2xvc2UgV0VCU09DS0VUU0VS
VkVSX0VSUjsKLSAgICBraWxsIDE1LCAkd2ViU29ja2V0U2VydmVyUElEOworICAgIG15IEBhcmdz
ID0gKAorICAgICAgICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2Nr
ZXRzZXJ2ZXIiLAorICAgICAgICAiLS1zZXJ2ZXIiLCAic3RvcCIsCisgICAgICAgICItLXBpZGZp
bGUiLCAiJHdlYlNvY2tldFNlcnZlclBpZEZpbGUiCisgICAgKTsKKyAgICBzeXN0ZW0gIi91c3Iv
YmluL3B5dGhvbiIsIEBhcmdzOworICAgIHVubGluayAiJHdlYlNvY2tldFNlcnZlclBpZEZpbGUi
OwogCiAgICAgIyB3c3MgaXMgZGlzYWJsZWQgdW50aWwgYWxsIHBsYXRmb3JtcyBzdXBwb3J0IHB5
T3BlblNTTC4KLSAgICAjIGNsb3NlIFdFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9JTjsKLSAgICAjIGNs
b3NlIFdFQlNPQ0tFVFNFQ1VSRVNFUlZFUl9PVVQ7Ci0gICAgIyBjbG9zZSBXRUJTT0NLRVRTRUNV
UkVTRVJWRVJfRVJSOwotICAgICMga2lsbCAxNSwgJHdlYlNvY2tldFNlY3VyZVNlcnZlclBJRDsK
LQogICAgICRpc1dlYlNvY2tldFNlcnZlck9wZW4gPSAwOwogfQogCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcgppbmRleCAwNmY5MDc5NzhiNmRlNGI1
MDJkZTA2MWExNWY3MTY5NjQzYmNiZDE5Li4wOGQ0MzBiMTM0NGM2MmMwMjY0ZmNmZmRiMGZjNDAz
ZmIzZWU0OTkzIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtd2Vi
c29ja2V0c2VydmVyCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC13ZWJzb2Nr
ZXRzZXJ2ZXIKQEAgLTQ3LDcgKzQ3LDcgQEAgbXkgJHdlYlNvY2tldFBvcnQgPSA4ODgwOwogbXkg
JHNyY0RpciA9IHNvdXJjZURpcigpOwogbXkgJGxheW91dFRlc3RzTmFtZSA9ICIkc3JjRGlyL0xh
eW91dFRlc3RzIjsKIG15ICR0ZXN0RGlyZWN0b3J5ID0gRmlsZTo6U3BlYy0+cmVsMmFicygkbGF5
b3V0VGVzdHNOYW1lKTsKLW15ICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSAwOworbXkgJHdlYlNvY2tl
dFNlcnZlclBpZEZpbGUgPSAiJHRlc3REaXJlY3Rvcnkvd2Vic29ja2V0LnBpZCI7CiAKIAogcHJp
bnQgIlN0YXJ0aW5nIFdlYiBTb2NrZXQgc2VydmVyLi4uXG4iOwpAQCAtNjAsNDEgKzYwLDI5IEBA
IGNsb3NlV2ViU29ja2V0U2VydmVyKCk7CiBwcmludCAiU3RvcHBlZC5cbiI7CiBleGl0IDA7CiAK
LQogc3ViIG9wZW5XZWJTb2NrZXRTZXJ2ZXIoKQogewotICAgIG15ICR3ZWJTb2NrZXRTZXJ2ZXJQ
YXRoID0gIi91c3IvYmluL3B5dGhvbiI7Ci0gICAgbXkgJHdlYlNvY2tldFB5dGhvblBhdGggPSAi
JHNyY0Rpci9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQiOwogICAgIG15ICR3ZWJTb2NrZXRIYW5kbGVyRGlyID0gIiR0ZXN0RGlyZWN0b3J5IjsKLSAg
ICBteSAkd2ViU29ja2V0SGFuZGxlclNjYW5EaXIgPSAiJHRlc3REaXJlY3Rvcnkvd2Vic29ja2V0
L3Rlc3RzIjsKLSAgICBteSAkd2ViU29ja2V0SGFuZGxlck1hcEZpbGUgPSAiJHdlYlNvY2tldEhh
bmRsZXJTY2FuRGlyL2hhbmRsZXJfbWFwLnR4dCI7CiAKICAgICBteSBAYXJncyA9ICgKLSAgICAg
ICAgIiRzcmNEaXIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IiwKLSAgICAgICAgIi0tc2VydmVy
LWhvc3QiLCAiMTI3LjAuMC4xIiwKKyAgICAgICAgIiRzcmNEaXIvV2ViS2l0VG9vbHMvU2NyaXB0
cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIiLAorICAgICAgICAiLS1zZXJ2ZXIiLCAi
c3RhcnQiLAogICAgICAgICAiLS1wb3J0IiwgIiR3ZWJTb2NrZXRQb3J0IiwKLSAgICAgICAgIi0t
ZG9jdW1lbnQtcm9vdCIsICIkd2ViU29ja2V0SGFuZGxlckRpciIsCi0gICAgICAgICItLXNjYW4t
ZGlyIiwgIiR3ZWJTb2NrZXRIYW5kbGVyU2NhbkRpciIsCi0gICAgICAgICItLXdlYnNvY2staGFu
ZGxlcnMtbWFwLWZpbGUiLCAiJHdlYlNvY2tldEhhbmRsZXJNYXBGaWxlIiwKLSAgICAgICAgIi0t
Y2dpLXBhdGhzIiwgIi93ZWJzb2NrZXQvdGVzdHMiLAorICAgICAgICAiLS1yb290IiwgIiR3ZWJT
b2NrZXRIYW5kbGVyRGlyIiwKKyAgICAgICAgIi0tcGlkZmlsZSIsICIkd2ViU29ja2V0U2VydmVy
UGlkRmlsZSIKICAgICApOwotCi0gICAgJEVOVnsiUFlUSE9OUEFUSCJ9ID0gJHdlYlNvY2tldFB5
dGhvblBhdGg7Ci0gICAgJHdlYlNvY2tldFNlcnZlclBJRCA9IG9wZW4yKFwqV0VCU09DS0VUU0VS
VkVSX0lOLCBcKldFQlNPQ0tFVFNFUlZFUl9PVVQsICR3ZWJTb2NrZXRTZXJ2ZXJQYXRoLCBAYXJn
cyk7Ci0KLSAgICBteSAkbGlzdGVuID0gImh0dHA6Ly8xMjcuMC4wLjE6JHdlYlNvY2tldFBvcnQi
OwotICAgIG15ICRyZXRyeUNvdW50ID0gMTA7Ci0gICAgd2hpbGUgKHN5c3RlbSgiL3Vzci9iaW4v
Y3VybCAtayAtcSAtLXNpbGVudCAtLXN0ZGVyciAtIC0tb3V0cHV0IC9kZXYvbnVsbCAkbGlzdGVu
IikgJiYgJHJldHJ5Q291bnQpIHsKLSAgICAgICAgc2xlZXAgMTsKLSAgICAgICAgLS0kcmV0cnlD
b3VudDsKLSAgICB9Ci0gICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgV2ViU29ja2V0U2Vy
dmVyIHRvIHN0YXJ0IiB1bmxlc3MgJHJldHJ5Q291bnQ7CisgICAgc3lzdGVtICIvdXNyL2Jpbi9w
eXRob24iLCBAYXJnczsKIH0KIAogc3ViIGNsb3NlV2ViU29ja2V0U2VydmVyKCkKIHsKLSAgICBj
bG9zZSBXRUJTT0NLRVRTRVJWRVJfSU47Ci0gICAgY2xvc2UgV0VCU09DS0VUU0VSVkVSX09VVDsK
LSAgICBraWxsIDE1LCAkd2ViU29ja2V0U2VydmVyUElEOworICAgIG15IEBhcmdzID0gKAorICAg
ICAgICAiJHNyY0Rpci9XZWJLaXRUb29scy9TY3JpcHRzL25ldy1ydW4td2Via2l0LXdlYnNvY2tl
dHNlcnZlciIsCisgICAgICAgICItLXNlcnZlciIsICJzdG9wIiwKKyAgICAgICAgIi0tcGlkZmls
ZSIsICIkd2ViU29ja2V0U2VydmVyUGlkRmlsZSIKKyAgICApOworICAgIHN5c3RlbSAiL3Vzci9i
aW4vcHl0aG9uIiwgQGFyZ3M7CisgICAgdW5saW5rICIkd2ViU29ja2V0U2VydmVyUGlkRmlsZSI7
CiB9CiAKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVyLnB5CmluZGV4IGFkNTU3YmRl
OWNmYmQ5Y2NlZDA3MzkyYzJhMDViZjRjMjcxNDMzMmEuLjU1ODY4ZmFlYzI2YmJiMzRjNWNjMDg1
N2VhMjhhMWIwM2I0OGZkNjcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkK
QEAgLTQ2LDYgKzQ2LDggQEAgaW1wb3J0IGZhY3RvcnkKIGltcG9ydCBodHRwX3NlcnZlcgogCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUKK2Zy
b20gd2Via2l0cHkudGhpcmRwYXJ0eS5hdXRvaW5zdGFsbGVkLnB5d2Vic29ja2V0IGltcG9ydCBt
b2RfcHl3ZWJzb2NrZXQKKwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5Lmxh
eW91dF90ZXN0cy5wb3J0LndlYnNvY2tldF9zZXJ2ZXIiKQogCkBAIC0xNTksNyArMTYxLDggQEAg
Y2xhc3MgUHlXZWJTb2NrZXQoaHR0cF9zZXJ2ZXIuTGlnaHR0cGQpOgogICAgICAgICBweXRob25f
aW50ZXJwID0gc3lzLmV4ZWN1dGFibGUKICAgICAgICAgcHl3ZWJzb2NrZXRfYmFzZSA9IG9zLnBh
dGguam9pbigKICAgICAgICAgICAgIG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3Mu
cGF0aC5kaXJuYW1lKAotICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSwg
J3RoaXJkcGFydHknLCAncHl3ZWJzb2NrZXQnKQorICAgICAgICAgICAgb3MucGF0aC5hYnNwYXRo
KF9fZmlsZV9fKSkpKSwgJ3RoaXJkcGFydHknLAorICAgICAgICAgICAgJ2F1dG9pbnN0YWxsZWQn
LCAncHl3ZWJzb2NrZXQnKQogICAgICAgICBweXdlYnNvY2tldF9zY3JpcHQgPSBvcy5wYXRoLmpv
aW4ocHl3ZWJzb2NrZXRfYmFzZSwgJ21vZF9weXdlYnNvY2tldCcsCiAgICAgICAgICAgICAnc3Rh
bmRhbG9uZS5weScpCiAgICAgICAgIHN0YXJ0X2NtZCA9IFsKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQppbmRleCBjMDUyZjAwODZj
YWIwNjkzMTcyMGMwZDhmNjY0ODc3YTc4Y2Y4NmU1Li4zNjQyMjg2ZDE5MTMwZWQ1MWI3MWEwOWI3
MmI2YmVhZGYyZGE2NmNlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvX19pbml0X18ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L19faW5pdF9fLnB5CkBAIC04OSw2ICs4OSwxMSBAQCBpbnN0YWxsZXIuaW5z
dGFsbCh1cmw9Imh0dHA6Ly9pd2ViLmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3B5dGhvbi1p
cmNsaWIvcHl0aAogaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vaXdlYi5kbC5zb3VyY2Vm
b3JnZS5uZXQvcHJvamVjdC9weXRob24taXJjbGliL3B5dGhvbi1pcmNsaWIvMC40LjgvcHl0aG9u
LWlyY2xpYi0wLjQuOC56aXAiLAogICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9ImlyY2Jv
dC5weSIpCiAKK3B5d2Vic29ja2V0X2RpciA9IG9zLnBhdGguam9pbihhdXRvaW5zdGFsbGVkX2Rp
ciwgInB5d2Vic29ja2V0IikKK2luc3RhbGxlciA9IEF1dG9JbnN0YWxsZXIodGFyZ2V0X2Rpcj1w
eXdlYnNvY2tldF9kaXIpCitpbnN0YWxsZXIuaW5zdGFsbCh1cmw9Imh0dHA6Ly9weXdlYnNvY2tl
dC5nb29nbGVjb2RlLmNvbS9maWxlcy9tb2RfcHl3ZWJzb2NrZXQtMC41LnRhci5neiIsCisgICAg
ICAgICAgICAgICAgICB1cmxfc3VicGF0aD0icHl3ZWJzb2NrZXQtMC41L3NyYy9tb2RfcHl3ZWJz
b2NrZXQiKQorCiByZWFkbWVfcGF0aCA9IG9zLnBhdGguam9pbihhdXRvaW5zdGFsbGVkX2Rpciwg
IlJFQURNRSIpCiBpZiBub3Qgb3MucGF0aC5leGlzdHMocmVhZG1lX3BhdGgpOgogICAgIHdpdGgg
Y29kZWNzLm9wZW4ocmVhZG1lX3BhdGgsICJ3IiwgImFzY2lpIikgYXMgZmlsZToKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9D
T1BZSU5HIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L0NPUFlJTkcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiOWQ1MmRkZjkzMDcy
MDg2Y2JiYTIxMmNkYmJlZDdiMzhmYWE1M2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L0NPUFlJTkcKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5
cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4gYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDE5MjU2ODgyYzU2ZmViNzI4MTJjOTljOGE4Mzc5OTc5ZTYzZTRh
MGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L01BTklGRVNULmlu
CisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmNsdWRlIENPUFlJTkcKLWluY2x1ZGUg
TUFOSUZFU1QuaW4KLWluY2x1ZGUgUkVBRE1FCi1yZWN1cnNpdmUtaW5jbHVkZSBleGFtcGxlICou
cHkKLXJlY3Vyc2l2ZS1pbmNsdWRlIG1vZF9weXdlYnNvY2tldCAqLnB5Ci1yZWN1cnNpdmUtaW5j
bHVkZSB0ZXN0ICoucHkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxZjlmMDVmY2RiNjY2M2ZkYjYzZDQ1YWExZjgxNWRiYWU5MDI4YzJiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUKKysrIC9kZXYvbnVsbApA
QCAtMSw2ICswLDAgQEAKLUluc3RhbGwgdGhpcyBwYWNrYWdlIGJ5OgotJCBweXRob24gc2V0dXAu
cHkgYnVpbGQKLSQgc3VkbyBweXRob24gc2V0dXAucHkgaW5zdGFsbAotCi1UaGVuIHJlYWQgZG9j
dW1lbnQgYnk6Ci0kIHB5ZG9jIG1vZF9weXdlYnNvY2tldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRS53ZWJraXQg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvUkVB
RE1FLndlYmtpdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNlM2NlZTMzMGFjMmU2
YmJlNDlkYWNjNDYyYjRhMTExN2VhNzYwYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvUkVBRE1FLndlYmtpdAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAK
LVRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGEgY29weSBvZiB0aGUgcHl3ZWJzb2NrZXQgUHl0aG9u
IG1vZHVsZSBvYnRhaW5lZAotZnJvbSB0aGUgZm9sbG93aW5nIGxvY2F0aW9uOgotCi1odHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvCi0KLVRoaXMgZGlyZWN0b3J5IGN1cnJlbnRs
eSBjb250YWlucyB0aGUgZm9sbG93aW5nIHZlcnNpb246Ci0wLjQuOS4yCi0KLVRoZSBmb2xsb3dp
bmcgbW9kaWZpY2F0aW9ucyBoYXZlIGJlZW4gbWFkZSB0byB0aGlzIGxvY2FsIHZlcnNpb246Ci1t
aW5vciB1cGRhdGVzIGluIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLmlzX2NnaQotCi1Nb3JlIGlu
Zm9ybWF0aW9uIG9uIHRoZXNlIGxvY2FsIG1vZGlmaWNhdGlvbnMgY2FuIGJlIGZvdW5kIGhlcmU6
Ci0KLWh0dHA6Ly90cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9f
Y2xpZW50LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDJiOTc2ZTExOWVlMjg4MGVhZTYwY2Y4MmJlYTc0MWY1NmMzNGNmYzQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwyMDkgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWIgU29ja2V0IEVjaG8gY2xpZW50LgotCi1UaGlzIGlz
IGFuIGV4YW1wbGUgV2ViIFNvY2tldCBjbGllbnQgdGhhdCB0YWxrcyB3aXRoIGVjaG9fd3NoLnB5
LgotVGhpcyBtYXkgYmUgdXNlZnVsIGZvciBjaGVja2luZyBtb2RfcHl3ZWJzb2NrZXQgaW5zdGFs
bGF0aW9uLgotCi1Ob3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwgZS5nLiwgd2Ug
Y3V0IGNvcm5lcnMgaW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1wb3J0IGNvZGVjcwotZnJvbSBv
cHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3lzCi0K
LQotX1RJTUVPVVRfU0VDID0gMTAKLQotX0RFRkFVTFRfUE9SVCA9IDgwCi1fREVGQVVMVF9TRUNV
UkVfUE9SVCA9IDQ0MwotX1VOREVGSU5FRF9QT1JUID0gLTEKLQotX1VQR1JBREVfSEVBREVSID0g
J1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi1fQ09OTkVDVElPTl9IRUFERVIgPSAnQ29ubmVjdGlv
bjogVXBncmFkZVxyXG4nCi1fRVhQRUNURURfUkVTUE9OU0UgPSAoCi0gICAgICAgICdIVFRQLzEu
MSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJyArCi0gICAgICAgIF9VUEdS
QURFX0hFQURFUiArCi0gICAgICAgIF9DT05ORUNUSU9OX0hFQURFUikKLQotX0dPT0RCWUVfTUVT
U0FHRSA9ICdHb29kYnllJwotCi0KLWRlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJl
dHVybiAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfb3JpZ2luX2hl
YWRlcihvcmlnaW4pOgotICAgIHJldHVybiAnT3JpZ2luOiAlc1xyXG4nICUgb3JpZ2luCi0KLQot
Y2xhc3MgX1RMU1NvY2tldChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5l
Y3Rpb24uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6Ci0gICAgICAg
IHNlbGYuX3NzbCA9IHNvY2tldC5zc2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBzZW5kKHNlbGYs
IGJ5dGVzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKLQotICAgIGRl
ZiByZWN2KHNlbGYsIHNpemU9LTEpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6
ZSkKLQotICAgIGRlZiBjbG9zZShzZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAg
ICAgICBwYXNzCi0KLQotY2xhc3MgRWNob0NsaWVudChvYmplY3QpOgotICAgICIiIldlYiBTb2Nr
ZXQgZWNobyBjbGllbnQuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0g
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5v
bmUKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgICIiIlJ1biB0aGUgY2xpZW50LgotCi0g
ICAgICAgIFNoYWtlIGhhbmRzIGFuZCB0aGVuIHJlcGVhdCBzZW5kaW5nIG1lc3NhZ2UgYW5kIHJl
Y2VpdmluZyBpdHMgZWNoby4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNv
Y2tldC5zb2NrZXQoKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2V0dGltZW91dChzZWxmLl9vcHRp
b25zLnNvY2tldF90aW1lb3V0KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zb2Nr
ZXQuY29ubmVjdCgoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSkKLSAgICAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMudXNlX3RsczoKLSAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQg
PSBfVExTU29ja2V0KHNlbGYuX3NvY2tldCkKLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZSgp
Ci0gICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywn
KSArIFtfR09PREJZRV9NRVNTQUdFXToKLSAgICAgICAgICAgICAgICBmcmFtZSA9ICdceDAwJyAr
IGxpbmUuZW5jb2RlKCd1dGYtOCcpICsgJ1x4ZmYnCi0gICAgICAgICAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmQoZnJhbWUpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3Nl
OgotICAgICAgICAgICAgICAgICAgICBwcmludCAnU2VuZDogJXMnICUgbGluZQotICAgICAgICAg
ICAgICAgIHJlY2VpdmVkID0gc2VsZi5fc29ja2V0LnJlY3YobGVuKGZyYW1lKSkKLSAgICAgICAg
ICAgICAgICBpZiByZWNlaXZlZCAhPSBmcmFtZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdJbmNvcnJlY3QgZWNobzogJXInICUgcmVjZWl2ZWQpCi0gICAgICAgICAgICAg
ICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAn
UmVjdjogJXMnICUgcmVjZWl2ZWRbMTotMV0uZGVjb2RlKCd1dGYtOCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2Un
KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNsb3NlKCkKLQot
ICAgIGRlZiBfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChfbWV0
aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkpCi0gICAgICAgIHNlbGYuX3NvY2tldC5z
ZW5kKF9VUEdSQURFX0hFQURFUikKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoX0NPTk5FQ1RJ
T05fSEVBREVSKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChzZWxmLl9mb3JtYXRfaG9zdF9o
ZWFkZXIoKSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoX29yaWdpbl9oZWFkZXIoc2VsZi5f
b3B0aW9ucy5vcmlnaW4pKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZCgnXHJcbicpCi0KLSAg
ICAgICAgZm9yIGV4cGVjdGVkX2NoYXIgaW4gX0VYUEVDVEVEX1JFU1BPTlNFOgotICAgICAgICAg
ICAgcmVjZWl2ZWQgPSBzZWxmLl9zb2NrZXQucmVjdigxKVswXQotICAgICAgICAgICAgaWYgZXhw
ZWN0ZWRfY2hhciAhPSByZWNlaXZlZDoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0hhbmRzaGFrZSBmYWlsdXJlJykKLSAgICAgICAgIyBXZSBjdXQgY29ybmVycyBhbmQgc2tpcCBv
dGhlciBoZWFkZXJzLgotICAgICAgICBzZWxmLl9za2lwX2hlYWRlcnMoKQotCi0gICAgZGVmIF9z
a2lwX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHRlcm1pbmF0b3IgPSAnXHJcblxyXG4nCi0gICAg
ICAgIHBvcyA9IDAKLSAgICAgICAgd2hpbGUgcG9zIDwgbGVuKHRlcm1pbmF0b3IpOgotICAgICAg
ICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9zb2NrZXQucmVjdigxKVswXQotICAgICAgICAgICAgaWYg
cmVjZWl2ZWQgPT0gdGVybWluYXRvcltwb3NdOgotICAgICAgICAgICAgICAgIHBvcyArPSAxCi0g
ICAgICAgICAgICBlbGlmIHJlY2VpdmVkID09IHRlcm1pbmF0b3JbMF06Ci0gICAgICAgICAgICAg
ICAgcG9zID0gMQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwb3MgPSAwCi0K
LSAgICBkZWYgX2Zvcm1hdF9ob3N0X2hlYWRlcihzZWxmKToKLSAgICAgICAgaG9zdCA9ICdIb3N0
OiAnICsgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdAotICAgICAgICBpZiAoKG5vdCBzZWxmLl9v
cHRpb25zLnVzZV90bHMgYW5kCi0gICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9y
dCAhPSBfREVGQVVMVF9QT1JUKSBvcgotICAgICAgICAgICAgKHNlbGYuX29wdGlvbnMudXNlX3Rs
cyBhbmQKLSAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0ICE9IF9ERUZBVUxU
X1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgICAgICBob3N0ICs9ICc6JyArIHN0cihzZWxmLl9vcHRp
b25zLnNlcnZlcl9wb3J0KQotICAgICAgICBob3N0ICs9ICdcclxuJwotICAgICAgICByZXR1cm4g
aG9zdAotCi0KLWRlZiBtYWluKCk6Ci0gICAgc3lzLnN0ZG91dCA9IGNvZGVjcy5nZXR3cml0ZXIo
J3V0Zi04Jykoc3lzLnN0ZG91dCkKLQotICAgIHBhcnNlciA9IE9wdGlvblBhcnNlcigpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1zJywgJy0tc2VydmVyLWhvc3QnLCAnLS1zZXJ2ZXJfaG9zdCcs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLCB0eXBlPSdzdHJpbmcn
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9J2xvY2FsaG9zdCcsIGhlbHA9J3NlcnZl
ciBob3N0JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1zZXJ2ZXItcG9ydCcsICct
LXNlcnZlcl9wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfcG9ydCcs
IHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fVU5ERUZJTkVEX1BP
UlQsIGhlbHA9J3NlcnZlciBwb3J0JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW8nLCAnLS1v
cmlnaW4nLCBkZXN0PSdvcmlnaW4nLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9J2h0dHA6Ly9sb2NhbGhvc3QvJywgaGVscD0nb3JpZ2luJykKLSAgICBwYXJz
ZXIuYWRkX29wdGlvbignLXInLCAnLS1yZXNvdXJjZScsIGRlc3Q9J3Jlc291cmNlJywgdHlwZT0n
c3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScvZWNobycsIGhlbHA9J3Jl
c291cmNlIHBhdGgnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsICctLW1lc3NhZ2UnLCBk
ZXN0PSdtZXNzYWdlJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnY29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNlbmQgZXhjbHVkaW5nICIlcyIgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0aGF0IGlzIGFsd2F5cyBzZW50IGF0IHRoZSBlbmQn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBfR09PREJZRV9NRVNTQUdFKSkKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLXEnLCAnLS1xdWlldCcsIGRlc3Q9J3ZlcmJvc2UnLCBhY3Rpb249
J3N0b3JlX2ZhbHNlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsIGhlbHA9
J3N1cHByZXNzIG1lc3NhZ2VzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXQnLCAnLS10bHMn
LCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLWsnLCAnLS1zb2NrZXQtdGltZW91dCcsICctLXNvY2tldF90aW1lb3V0JywK
LSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdzb2NrZXRfdGltZW91dCcsIHR5cGU9J2ludCcs
IGRlZmF1bHQ9X1RJTUVPVVRfU0VDLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1RpbWVv
dXQoc2VjKSBmb3Igc29ja2V0cycpCi0KLSAgICAob3B0aW9ucywgdW51c2VkX2FyZ3MpID0gcGFy
c2VyLnBhcnNlX2FyZ3MoKQotCi0gICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVyIGRlcGVuZHMgb24g
d2hldGhlciBUTFMgaXMgdXNlZC4KLSAgICBpZiBvcHRpb25zLnNlcnZlcl9wb3J0ID09IF9VTkRF
RklORURfUE9SVDoKLSAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgb3B0
aW9ucy5zZXJ2ZXJfcG9ydCA9IF9ERUZBVUxUX1NFQ1VSRV9QT1JUCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBvcHRpb25zLnNlcnZlcl9wb3J0ID0gX0RFRkFVTFRfUE9SVAotCi0gICAgIyBv
cHRwYXJzZSBkb2Vzbid0IHNlZW0gdG8gaGFuZGxlIG5vbi1hc2NpaSBkZWZhdWx0IHZhbHVlcy4K
LSAgICAjIFNldCBkZWZhdWx0IG1lc3NhZ2UgaGVyZS4KLSAgICBpZiBub3Qgb3B0aW9ucy5tZXNz
YWdlOgotICAgICAgICBvcHRpb25zLm1lc3NhZ2UgPSB1J0hlbGxvLFx1NjVlNVx1NjcyYycgICAj
ICJKYXBhbiIgaW4gSmFwYW5lc2UKLQotICAgIEVjaG9DbGllbnQob3B0aW9ucykucnVuKCkKLQot
Ci1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIG1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob193c2gucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX3dzaC5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBjYWQzMTg0ZDQ1YzUzMTdlZmQ1ZWIxMTVmNDNh
YTQ5MDUxMmYwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhh
bXBsZS9lY2hvX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCi0KLQotX0dP
T0RCWUVfTUVTU0FHRSA9ICdHb29kYnllJwotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hh
bmRzaGFrZShyZXF1ZXN0KToKLSAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQuCi0KLQotZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBUcnVlOgotICAgICAg
ICBsaW5lID0gbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgbGluZSkKLSAgICAgICAgaWYgbGluZSA9PSBfR09PREJZ
RV9NRVNTQUdFOgotICAgICAgICAgICAgcmV0dXJuCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJz
b2NrZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYzRjMDlhYTAwOTFkOGJhZjI5MDg5NTk5MDU4Njc4
NDJhZWI4NjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1w
bGUvaGFuZGxlcl9tYXAudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyB3ZWJz
b2NrZXQgaGFuZGxlciBtYXAgZmlsZSwgdXNlZCBieSBzdGFuZGFsb25lLnB5IC1tIG9wdGlvbi4K
LSMgQSBsaW5lIHN0YXJ0aW5nIHdpdGggJyMnIGlzIGEgY29tbWVudCBsaW5lLgotIyBFYWNoIGxp
bmUgY29uc2lzdHMgb2YgJ2FsaWFzX3Jlc291cmNlX3BhdGgnIGFuZCAnZXhpc3RpbmdfcmVzb3Vy
Y2VfcGF0aCcKLSMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4KLSMgQWxpYXNpbmcgaXMgcHJvY2Vzc2Vk
IGZyb20gdGhlIHRvcCB0byB0aGUgYm90dG9tIG9mIHRoZSBsaW5lLCBhbmQKLSMgJ2V4aXN0aW5n
X3Jlc291cmNlX3BhdGgnIG11c3QgZXhpc3QgYmVmb3JlIGl0IGlzIGFsaWFzZWQuCi0jIEZvciBl
eGFtcGxlLAotIyAgLyAvZWNobwotIyBtZWFucyB0aGF0IGEgcmVxdWVzdCB0byAnLycgd2lsbCBi
ZSBoYW5kbGVkIGJ5IGhhbmRsZXJzIGZvciAnL2VjaG8nLgotLyAvZWNobwotCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDVlODBlOGIzN2Y4M2Q3Njk3YWNlMzA5NzZlM2VhZDAx
MzZkZDk3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L19faW5pdF9fLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYiBTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRU
UCBTZXJ2ZXIuCi0KLW1vZF9weXdlYnNvY2tldCBpcyBhIFdlYiBTb2NrZXQgZXh0ZW5zaW9uIGZv
ciBBcGFjaGUgSFRUUCBTZXJ2ZXIKLWludGVuZGVkIGZvciB0ZXN0aW5nIG9yIGV4cGVyaW1lbnRh
bCBwdXJwb3Nlcy4gbW9kX3B5dGhvbiBpcyByZXF1aXJlZC4KLQotSW5zdGFsbGF0aW9uOgotCi0w
LiBQcmVwYXJlIGFuIEFwYWNoZSBIVFRQIFNlcnZlciBmb3Igd2hpY2ggbW9kX3B5dGhvbiBpcyBl
bmFibGVkLgotCi0xLiBTcGVjaWZ5IHRoZSBmb2xsb3dpbmcgQXBhY2hlIEhUVFAgU2VydmVyIGRp
cmVjdGl2ZXMgdG8gc3VpdCB5b3VyCi0gICBjb25maWd1cmF0aW9uLgotCi0gICBJZiBtb2RfcHl3
ZWJzb2NrZXQgaXMgbm90IGluIHRoZSBQeXRob24gcGF0aCwgc3BlY2lmeSB0aGUgZm9sbG93aW5n
LgotICAgPHdlYnNvY2tfbGliPiBpcyB0aGUgZGlyZWN0b3J5IHdoZXJlIG1vZF9weXdlYnNvY2tl
dCBpcyBpbnN0YWxsZWQuCi0KLSAgICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJzx3ZWJzb2Nr
X2xpYj4nXSIKLQotICAgQWx3YXlzIHNwZWNpZnkgdGhlIGZvbGxvd2luZy4gPHdlYnNvY2tfaGFu
ZGxlcnM+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUKLSAgIHVzZXItd3JpdHRlbiBXZWIgU29ja2V0
IGhhbmRsZXJzIGFyZSBwbGFjZWQuCi0KLSAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29j
a2V0LmhhbmRsZXJfcm9vdCA8d2Vic29ja19oYW5kbGVycz4KLSAgICAgICBQeXRob25IZWFkZXJQ
YXJzZXJIYW5kbGVyIG1vZF9weXdlYnNvY2tldC5oZWFkZXJwYXJzZXJoYW5kbGVyCi0KLSAgIFRv
IGxpbWl0IHRoZSBzZWFyY2ggZm9yIFdlYiBTb2NrZXQgaGFuZGxlcnMgdG8gYSBkaXJlY3Rvcnkg
PHNjYW5fZGlyPgotICAgdW5kZXIgPHdlYnNvY2tfaGFuZGxlcnM+LCBjb25maWd1cmUgYXMgZm9s
bG93czoKLSAgIAotICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9z
Y2FuIDxzY2FuX2Rpcj4KLSAgICAgICAKLSAgIDxzY2FuX2Rpcj4gaXMgdXNlZnVsIGluIHNhdmlu
ZyBzY2FuIHRpbWUgd2hlbiA8d2Vic29ja19oYW5kbGVycz4KLSAgIGNvbnRhaW5zIG1hbnkgbm9u
LVdlYiBTb2NrZXQgaGFuZGxlciBmaWxlcy4KLQotICAgRXhhbXBsZSBzbmlwcGV0IG9mIGh0dHBk
LmNvbmY6Ci0gICAobW9kX3B5d2Vic29ja2V0IGlzIGluIC93ZWJzb2NrX2xpYiwgV2ViIFNvY2tl
dCBoYW5kbGVycyBhcmUgaW4KLSAgIC93ZWJzb2NrX2hhbmRsZXJzLCBwb3J0IGlzIDgwIGZvciB3
cywgNDQzIGZvciB3c3MuKQotCi0gICAgICAgPElmTW9kdWxlIHB5dGhvbl9tb2R1bGU+Ci0gICAg
ICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJy93ZWJzb2NrX2xpYiddIgotICAgICAgICAgUHl0
aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QgL3dlYnNvY2tfaGFuZGxlcnMK
LSAgICAgICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRl
cnBhcnNlcmhhbmRsZXIKLSAgICAgICA8L0lmTW9kdWxlPgotCi1Xcml0aW5nIFdlYiBTb2NrZXQg
aGFuZGxlcnM6Ci0KLVdoZW4gYSBXZWIgU29ja2V0IHJlcXVlc3QgY29tZXMgaW4sIHRoZSByZXNv
dXJjZSBuYW1lCi1zcGVjaWZpZWQgaW4gdGhlIGhhbmRzaGFrZSBpcyBjb25zaWRlcmVkIGFzIGlm
IGl0IGlzIGEgZmlsZSBwYXRoIHVuZGVyCi08d2Vic29ja19oYW5kbGVycz4gYW5kIHRoZSBoYW5k
bGVyIGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi88cmVzb3VyY2VfbmFtZT5fd3NoLnB5
IGlzIGludm9rZWQuCi0KLUZvciBleGFtcGxlLCBpZiB0aGUgcmVzb3VyY2UgbmFtZSBpcyAvZXhh
bXBsZS9jaGF0LCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCi08d2Vic29ja19oYW5kbGVycz4vZXhh
bXBsZS9jaGF0X3dzaC5weSBpcyBpbnZva2VkLgotCi1BIFdlYiBTb2NrZXQgaGFuZGxlciBpcyBj
b21wb3NlZCBvZiB0aGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnM6Ci0KLSAgICB3ZWJfc29ja2V0
X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KQotICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KQotCi13aGVyZToKLSAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0K
LXdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGhhbmRz
aGFrZSBhZnRlciB0aGUKLWhlYWRlcnMgYXJlIHN1Y2Nlc3NmdWxseSBwYXJzZWQgYW5kIFdlYiBT
b2NrZXQgcHJvcGVydGllcyAod3NfbG9jYXRpb24sCi13c19vcmlnaW4sIHdzX3Byb3RvY29sLCBh
bmQgd3NfcmVzb3VyY2UpIGFyZSBhZGRlZCB0byByZXF1ZXN0LiBBIGhhbmRsZXIKLWNhbiByZWpl
Y3QgdGhlIHJlcXVlc3QgYnkgcmFpc2luZyBhbiBleGNlcHRpb24uCi0KLXdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGhhbmRzaGFrZSBjb21wbGV0ZWQKLXN1Y2Nl
c3NmdWxseS4gQSBoYW5kbGVyIGNhbiByZWNlaXZlL3NlbmQgbWVzc2FnZXMgZnJvbS90byB0aGUg
Y2xpZW50Ci11c2luZyByZXF1ZXN0LiBtb2RfcHl3ZWJzb2NrZXQubXNndXRpbCBtb2R1bGUgcHJv
dmlkZXMgdXRpbGl0aWVzCi1mb3IgZGF0YSB0cmFuc2Zlci4KLQotQSBXZWIgU29ja2V0IGhhbmRs
ZXIgbXVzdCBiZSB0aHJlYWQtc2FmZSBpZiB0aGUgc2VydmVyIChBcGFjaGUgb3IKLXN0YW5kYWxv
bmUucHkpIGlzIGNvbmZpZ3VyZWQgdG8gdXNlIHRocmVhZHMuCi0iIiIKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQgdHc9NzIKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2Rpc3BhdGNoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTJlOWVi
NDJiNzVkMDU1MTc2MjhmZDhmZDBhZmJlZjQxZGY0MTJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwyMzEgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRGlzcGF0Y2gg
V2ViIFNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLQotaW1w
b3J0IHV0aWwKLQotCi1fU09VUkNFX1BBVEhfUEFUVEVSTiA9IHJlLmNvbXBpbGUocicoP2kpX3dz
aFwucHkkJykKLV9TT1VSQ0VfU1VGRklYID0gJ193c2gucHknCi1fRE9fRVhUUkFfSEFORFNIQUtF
X0hBTkRMRVJfTkFNRSA9ICd3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZScKLV9UUkFOU0ZF
Ul9EQVRBX0hBTkRMRVJfTkFNRSA9ICd3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEnCi0KLQotY2xh
c3MgRGlzcGF0Y2hFcnJvcihFeGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRj
aGluZyBXZWIgU29ja2V0IHJlcXVlc3QuIiIiCi0KLSAgICBwYXNzCi0KLQotZGVmIF9ub3JtYWxp
emVfcGF0aChwYXRoKToKLSAgICAiIiJOb3JtYWxpemUgcGF0aC4KLQotICAgIEFyZ3M6Ci0gICAg
ICAgIHBhdGg6IHRoZSBwYXRoIHRvIG5vcm1hbGl6ZS4KLQotICAgIFBhdGggaXMgY29udmVydGVk
IHRvIHRoZSBhYnNvbHV0ZSBwYXRoLgotICAgIFRoZSBpbnB1dCBwYXRoIGNhbiB1c2UgZWl0aGVy
ICdcXCcgb3IgJy8nIGFzIHRoZSBzZXBhcmF0b3IuCi0gICAgVGhlIG5vcm1hbGl6ZWQgcGF0aCBh
bHdheXMgdXNlcyAnLycgcmVnYXJkbGVzcyBvZiB0aGUgcGxhdGZvcm0uCi0gICAgIiIiCi0KLSAg
ICBwYXRoID0gcGF0aC5yZXBsYWNlKCdcXCcsIG9zLnBhdGguc2VwKQotICAgIHBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKHBhdGgpCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0g
ICAgcmV0dXJuIHBhdGgKLQotCi1kZWYgX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKGJhc2Vf
ZGlyKToKLSAgICBiYXNlX2RpciA9IF9ub3JtYWxpemVfcGF0aChiYXNlX2RpcikKLSAgICBiYXNl
X2xlbiA9IGxlbihiYXNlX2RpcikKLSAgICBzdWZmaXhfbGVuID0gbGVuKF9TT1VSQ0VfU1VGRklY
KQotICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6Ci0gICAgICAgIGlmIG5vdCBwYXRoLmVuZHN3aXRo
KF9TT1VSQ0VfU1VGRklYKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHBhdGgg
PSBfbm9ybWFsaXplX3BhdGgocGF0aCkKLSAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aChi
YXNlX2Rpcik6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gcGF0aFti
YXNlX2xlbjotc3VmZml4X2xlbl0KLSAgICByZXR1cm4gY29udmVydGVyCi0KLQotZGVmIF9zb3Vy
Y2VfZmlsZV9wYXRocyhkaXJlY3RvcnkpOgotICAgICIiIllpZWxkIFdlYiBTb2NrZXQgSGFuZGxl
ciBzb3VyY2UgZmlsZSBuYW1lcyBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LiIiIgotCi0gICAgZm9y
IHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVjdG9yeSk6Ci0gICAgICAg
IGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290
LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRFUk4uc2VhcmNoKHBhdGgp
OgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKLQotCi1kZWYgX3NvdXJjZShzb3VyY2Vfc3Ry
KToKLSAgICAiIiJTb3VyY2UgYSBoYW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLiIiIgotCi0gICAg
Z2xvYmFsX2RpYyA9IHt9Ci0gICAgdHJ5OgotICAgICAgICBleGVjIHNvdXJjZV9zdHIgaW4gZ2xv
YmFsX2RpYwotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJhaXNlIERpc3BhdGNoRXJy
b3IoJ0Vycm9yIGluIHNvdXJjaW5nIGhhbmRsZXI6JyArCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICByZXR1cm4gKF9leHRyYWN0X2hhbmRs
ZXIoZ2xvYmFsX2RpYywgX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUpLAotICAgICAg
ICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfVFJBTlNGRVJfREFUQV9IQU5ETEVS
X05BTUUpKQotCi0KLWRlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6Ci0gICAgaWYgbmFt
ZSBub3QgaW4gZGljOgotICAgICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCclcyBpcyBub3QgZGVm
aW5lZC4nICUgbmFtZSkKLSAgICBoYW5kbGVyID0gZGljW25hbWVdCi0gICAgaWYgbm90IGNhbGxh
YmxlKGhhbmRsZXIpOgotICAgICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCclcyBpcyBub3QgY2Fs
bGFibGUuJyAlIG5hbWUpCi0gICAgcmV0dXJuIGhhbmRsZXIKLQotCi1jbGFzcyBEaXNwYXRjaGVy
KG9iamVjdCk6Ci0gICAgIiIiRGlzcGF0Y2hlcyBXZWIgU29ja2V0IHJlcXVlc3RzLgotCi0gICAg
VGhpcyBjbGFzcyBtYWludGFpbnMgYSBtYXAgZnJvbSByZXNvdXJjZSBuYW1lIHRvIGhhbmRsZXJz
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJvb3RfZGlyLCBzY2FuX2Rpcj1O
b25lKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICByb290X2RpcjogVGhlIGRpcmVjdG9yeSB3aGVyZSBoYW5kbGVyIGRlZmlu
aXRpb24gZmlsZXMgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgcGxhY2VkLgotICAgICAgICAg
ICAgc2Nhbl9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVz
IGFyZQotICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaGVkLiBzY2FuX2RpciBtdXN0IGJlIGEg
ZGlyZWN0b3J5IHVuZGVyIHJvb3RfZGlyLAotICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGlu
ZyByb290X2RpciBpdHNlbGYuICBJZiBzY2FuX2RpciBpcyBOb25lLCByb290X2RpcgotICAgICAg
ICAgICAgICAgICAgICAgIGlzIHVzZWQgYXMgc2Nhbl9kaXIuIHNjYW5fZGlyIGNhbiBiZSB1c2Vm
dWwgaW4gc2F2aW5nCi0gICAgICAgICAgICAgICAgICAgICAgc2NhbiB0aW1lIHdoZW4gcm9vdF9k
aXIgY29udGFpbnMgbWFueSBzdWJkaXJlY3Rvcmllcy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
c2VsZi5faGFuZGxlcnMgPSB7fQotICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQot
ICAgICAgICBpZiBzY2FuX2RpciBpcyBOb25lOgotICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290
X2RpcgotICAgICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0
aCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6Ci0gICAgICAg
ICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCdzY2FuX2RpcjolcyBtdXN0IGJlIGEgZGlyZWN0b3J5
IHVuZGVyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3RfZGlyOiVzLicg
JSAoc2Nhbl9kaXIsIHJvb3RfZGlyKSkKLSAgICAgICAgc2VsZi5fc291cmNlX2ZpbGVzX2luX2Rp
cihyb290X2Rpciwgc2Nhbl9kaXIpCi0KLSAgICBkZWYgYWRkX3Jlc291cmNlX3BhdGhfYWxpYXMo
c2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfcmVzb3VyY2VfcGF0
aCwgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6Ci0gICAgICAgICIiIkFkZCByZXNvdXJjZSBwYXRo
IGFsaWFzLgotCi0gICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3QgdG8gYWxpYXNfcmVzb3VyY2Vf
cGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5Ci0gICAgICAgIGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3Ig
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgYWxp
YXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAotICAgICAgICAgICAgZXhpc3Rp
bmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0aAotICAgICAgICAiIiIKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlciA9IHNlbGYuX2hhbmRsZXJzW2V4aXN0aW5n
X3Jlc291cmNlX3BhdGhdCi0gICAgICAgICAgICBzZWxmLl9oYW5kbGVyc1thbGlhc19yZXNvdXJj
ZV9wYXRoXSA9IGhhbmRsZXIKLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAg
cmFpc2UgRGlzcGF0Y2hFcnJvcignTm8gaGFuZGxlciBmb3I6ICVyJyAlIGV4aXN0aW5nX3Jlc291
cmNlX3BhdGgpCi0KLSAgICBkZWYgc291cmNlX3dhcm5pbmdzKHNlbGYpOgotICAgICAgICAiIiJS
ZXR1cm4gd2FybmluZ3MgaW4gc291cmNpbmcgaGFuZGxlcnMuIiIiCi0KLSAgICAgICAgcmV0dXJu
IHNlbGYuX3NvdXJjZV93YXJuaW5ncwotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxm
LCByZXF1ZXN0KToKLSAgICAgICAgIiIiRG8gZXh0cmEgY2hlY2tpbmcgaW4gV2ViIFNvY2tldCBo
YW5kc2hha2UuCi0KLSAgICAgICAgU2VsZWN0IGEgaGFuZGxlciBiYXNlZCBvbiByZXF1ZXN0LnVy
aSBhbmQgY2FsbCBpdHMKLSAgICAgICAgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgZnVu
Y3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZG9fZXh0cmFfaGFuZHNoYWtlXywgdW51
c2VkX3RyYW5zZmVyX2RhdGEgPSBzZWxmLl9oYW5kbGVyKHJlcXVlc3QpCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVzdCkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2Vw
dGlvbigKLSAgICAgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAn
ICUgKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9ET19FWFRSQV9IQU5EU0hBS0VfSEFO
RExFUl9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3Vy
Y2UpLAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRl
ZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5kbGVy
IHRyYW5zZmVyX2RhdGEgd2l0aCBhIFdlYiBTb2NrZXQgY2xpZW50LgotCi0gICAgICAgIFNlbGVj
dCBhIGhhbmRsZXIgYmFzZWQgb24gcmVxdWVzdC53c19yZXNvdXJjZSBhbmQgY2FsbCBpdHMKLSAg
ICAgICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGZ1bmN0aW9uLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHVudXNlZF9kb19leHRyYV9oYW5kc2hha2UsIHRyYW5zZmVyX2RhdGFfID0gc2Vs
Zi5faGFuZGxlcihyZXF1ZXN0KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0cmFuc2Zlcl9k
YXRhXyhyZXF1ZXN0KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
dXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAn
JXMgcmFpc2VkIGV4Y2VwdGlvbiBmb3IgJXM6ICcgJSAoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FLCByZXF1ZXN0LndzX3Jlc291cmNlKSwK
LSAgICAgICAgICAgICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYgX2hh
bmRsZXIoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdzX3Jlc291
cmNlX3BhdGggPSByZXF1ZXN0LndzX3Jlc291cmNlLnNwbGl0KCc/JywgMSlbMF0KLSAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9oYW5kbGVyc1t3c19yZXNvdXJjZV9wYXRoXQotICAgICAgICBleGNl
cHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCdObyBoYW5kbGVy
IGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLQotICAgIGRlZiBfc291cmNlX2ZpbGVz
X2luX2RpcihzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIpOgotICAgICAgICAiIiJTb3VyY2UgYWxs
IHRoZSBoYW5kbGVyIHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgotCi0g
ICAgICAgIFRoZSByZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9k
aXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRvX3Jlc291cmNlID0gX3BhdGhfdG9fcmVzb3Vy
Y2VfY29udmVydGVyKHJvb3RfZGlyKQotICAgICAgICBmb3IgcGF0aCBpbiBfc291cmNlX2ZpbGVf
cGF0aHMoc2Nhbl9kaXIpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGhhbmRs
ZXJzID0gX3NvdXJjZShvcGVuKHBhdGgpLnJlYWQoKSkKLSAgICAgICAgICAgIGV4Y2VwdCBEaXNw
YXRjaEVycm9yLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBl
bmQoJyVzOiAlcycgJSAocGF0aCwgZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgIHNlbGYuX2hhbmRsZXJzW3RvX3Jlc291cmNlKHBhdGgpXSA9IGhhbmRsZXJzCi0KLQot
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvaGFuZHNoYWtlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
ODYyNzhlNjgzYzJmNzE0MGFlNWE2YzI1YmFkMWMzZTQzZTNlNjEyLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsMjIwICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJ
bmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldl
YiBTb2NrZXQgaGFuZHNoYWtpbmcuCi0KLU5vdGU6IHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZS9y
ZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRob3VnaAotbW9kX3B5dGhvbiBkb2N1
bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBvbmx5IGluIGNvbm5lY3Rpb24gaGFu
ZGxlcnMuCi1VbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90aGVyIG9wdGlvbnMuIEZvciBleGFt
cGxlLCByZXF1ZXN0LndyaXRlL3JlYWQgYXJlCi1ub3Qgc3VpdGFibGUgYmVjYXVzZSB0aGV5IGRv
bid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgotIiIiCi0KLQotaW1w
b3J0IHJlCi0KLWltcG9ydCB1dGlsCi0KLQotX0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAK
LV9ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0NDMKLV9XRUJfU09DS0VUX1NDSEVN
RSA9ICd3cycKLV9XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUgPSAnd3NzJwotCi1fTUFOREFUT1JZ
X0hFQURFUlMgPSBbCi0gICAgIyBrZXksIGV4cGVjdGVkIHZhbHVlIG9yIE5vbmUKLSAgICBbJ1Vw
Z3JhZGUnLCAnV2ViU29ja2V0J10sCi0gICAgWydDb25uZWN0aW9uJywgJ1VwZ3JhZGUnXSwKLSAg
ICBbJ0hvc3QnLCBOb25lXSwKLSAgICBbJ09yaWdpbicsIE5vbmVdLAotXQotCi1fRklSU1RfRklW
RV9MSU5FUyA9IG1hcChyZS5jb21waWxlLCBbCi0gICAgcideR0VUIC9bXFNdKiBIVFRQLzEuMVxy
XG4kJywKLSAgICByJ15VcGdyYWRlOiBXZWJTb2NrZXRcclxuJCcsCi0gICAgcideQ29ubmVjdGlv
bjogVXBncmFkZVxyXG4kJywKLSAgICByJ15Ib3N0OiBbXFNdK1xyXG4kJywKLSAgICByJ15Pcmln
aW46IFtcU10rXHJcbiQnLAotXSkKLQotX1NJWFRIX0FORF9MQVRFUiA9IHJlLmNvbXBpbGUoCi0g
ICAgcideJwotICAgIHInKFdlYlNvY2tldC1Qcm90b2NvbDogW1x4MjAtXHg3ZV0rXHJcbik/Jwot
ICAgIHInKENvb2tpZTogW15ccl0qXHJcbikqJwotICAgIHInKENvb2tpZTI6IFteXHJdKlxyXG4p
PycKLSAgICByJyhDb29raWU6IFteXHJdKlxyXG4pKicKLSAgICByJ1xyXG4nKQotCi0KLWRlZiBf
ZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6Ci0gICAgaWYgaXNfc2VjdXJlOgotICAgICAgICByZXR1
cm4gX0RFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAotICAgIGVsc2U6Ci0gICAgICAgIHJl
dHVybiBfREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKLQotCi1jbGFzcyBIYW5kc2hha2VFcnJvcihF
eGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBXZWIgU29ja2V0IEhhbmRzaGFrZS4iIiIK
LQotICAgIHBhc3MKLQotCi1kZWYgX3ZhbGlkYXRlX3Byb3RvY29sKHByb3RvY29sKToKLSAgICAi
IiJWYWxpZGF0ZSBXZWJTb2NrZXQtUHJvdG9jb2wgc3RyaW5nLiIiIgotCi0gICAgaWYgbm90IHBy
b3RvY29sOgotICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignSW52YWxpZCBXZWJTb2NrZXQt
UHJvdG9jb2w6IGVtcHR5JykKLSAgICBmb3IgYyBpbiBwcm90b2NvbDoKLSAgICAgICAgaWYgbm90
IDB4MjAgPD0gb3JkKGMpIDw9IDB4N2U6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJv
cignSWxsZWdhbCBjaGFyYWN0ZXIgaW4gcHJvdG9jb2w6ICVyJyAlIGMpCi0KLQotY2xhc3MgSGFu
ZHNoYWtlcihvYmplY3QpOgotICAgICIiIlRoaXMgY2xhc3MgcGVyZm9ybXMgV2ViIFNvY2tldCBo
YW5kc2hha2UuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0Y2hl
ciwgc3RyaWN0PUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0g
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0g
ICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4K
LSAgICAgICAgICAgIHN0cmljdDogU3RyaWN0bHkgY2hlY2sgaGFuZHNoYWtlIHJlcXVlc3QuIERl
ZmF1bHQ6IEZhbHNlLgotICAgICAgICAgICAgICAgIElmIFRydWUsIHJlcXVlc3QuY29ubmVjdGlv
biBtdXN0IHByb3ZpZGUgZ2V0X21lbW9yaXplZF9saW5lcwotICAgICAgICAgICAgICAgIG1ldGhv
ZC4KLQotICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19y
ZXNvdXJjZSBpbiBwZXJmb3JtaW5nCi0gICAgICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0K
LSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hl
ciA9IGRpc3BhdGNoZXIKLSAgICAgICAgc2VsZi5fc3RyaWN0ID0gc3RyaWN0Ci0KLSAgICBkZWYg
ZG9faGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJmb3JtIFdlYiBTb2NrZXQgSGFuZHNo
YWtlLiIiIgotCi0gICAgICAgIHNlbGYuX2NoZWNrX2hlYWRlcl9saW5lcygpCi0gICAgICAgIHNl
bGYuX3NldF9yZXNvdXJjZSgpCi0gICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQotICAgICAgICBz
ZWxmLl9zZXRfbG9jYXRpb24oKQotICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2woKQotICAgICAg
ICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLl9yZXF1ZXN0KQotICAg
ICAgICBzZWxmLl9zZW5kX2hhbmRzaGFrZSgpCi0KLSAgICBkZWYgX3NldF9yZXNvdXJjZShzZWxm
KToKLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVlc3QudXJp
Ci0KLSAgICBkZWYgX3NldF9vcmlnaW4oc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
b3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luWydPcmlnaW4nXQotCi0gICAgZGVmIF9z
ZXRfbG9jYXRpb24oc2VsZik6Ci0gICAgICAgIGxvY2F0aW9uX3BhcnRzID0gW10KLSAgICAgICAg
aWYgc2VsZi5fcmVxdWVzdC5pc19odHRwcygpOgotICAgICAgICAgICAgbG9jYXRpb25fcGFydHMu
YXBwZW5kKF9XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoX1dFQl9TT0NLRVRfU0NIRU1FKQotICAgICAgICBs
b2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzovLycpCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLl9w
YXJzZV9ob3N0X2hlYWRlcigpCi0gICAgICAgIGNvbm5lY3Rpb25fcG9ydCA9IHNlbGYuX3JlcXVl
c3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyWzFdCi0gICAgICAgIGlmIHBvcnQgIT0gY29ubmVjdGlv
bl9wb3J0OgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ0hlYWRlci9jb25uZWN0
aW9uIHBvcnQgbWlzbWF0Y2g6ICVkLyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKLSAgICAgICAgbG9jYXRpb25fcGFydHMuYXBw
ZW5kKGhvc3QpCi0gICAgICAgIGlmIChwb3J0ICE9IF9kZWZhdWx0X3BvcnQoc2VsZi5fcmVxdWVz
dC5pc19odHRwcygpKSk6Ci0gICAgICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQot
ICAgICAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0cihwb3J0KSkKLSAgICAgICAgbG9j
YXRpb25fcGFydHMuYXBwZW5kKHNlbGYuX3JlcXVlc3QudXJpKQotICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX2xvY2F0aW9uID0gJycuam9pbihsb2NhdGlvbl9wYXJ0cykKLQotICAgIGRlZiBfcGFy
c2VfaG9zdF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIGZpZWxkcyA9IHNlbGYuX3JlcXVlc3QuaGVh
ZGVyc19pblsnSG9zdCddLnNwbGl0KCc6JywgMSkKLSAgICAgICAgaWYgbGVuKGZpZWxkcykgPT0g
MToKLSAgICAgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIF9kZWZhdWx0X3BvcnQoc2VsZi5fcmVx
dWVzdC5pc19odHRwcygpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZmllbGRz
WzBdLCBpbnQoZmllbGRzWzFdKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAg
ICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJbnZhbGlkIHBvcnQgbnVtYmVyIGZvcm1hdDog
JXInICUgZSkKLQotICAgIGRlZiBfc2V0X3Byb3RvY29sKHNlbGYpOgotICAgICAgICBwcm90b2Nv
bCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoJ1dlYlNvY2tldC1Qcm90b2NvbCcpCi0g
ICAgICAgIGlmIHByb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgX3ZhbGlkYXRlX3By
b3RvY29sKHByb3RvY29sKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gcHJv
dG9jb2wKLQotICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Jl
cXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICAgICAnSFRUUC8xLjEgMTAxIFdl
YiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZSgnVXBncmFkZTogV2ViU29ja2V0XHJcbicpCi0gICAgICAgIHNlbGYu
X3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nKQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1dlYlNvY2tldC1PcmlnaW46ICcp
Ci0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzZWxmLl9yZXF1ZXN0Lndz
X29yaWdpbikKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdcclxuJykK
LSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdXZWJTb2NrZXQtTG9jYXRp
b246ICcpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShzZWxmLl9yZXF1
ZXN0LndzX2xvY2F0aW9uKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUo
J1xyXG4nKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sOgotICAgICAgICAg
ICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdXZWJTb2NrZXQtUHJvdG9jb2w6ICcp
Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoc2VsZi5fcmVxdWVz
dC53c19wcm90b2NvbCkKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0
ZSgnXHJcbicpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnXHJcbicp
Ci0KLSAgICBkZWYgX2NoZWNrX2hlYWRlcl9saW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGtleSwg
ZXhwZWN0ZWRfdmFsdWUgaW4gX01BTkRBVE9SWV9IRUFERVJTOgotICAgICAgICAgICAgYWN0dWFs
X3ZhbHVlID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldChrZXkpCi0gICAgICAgICAgICBp
ZiBub3QgYWN0dWFsX3ZhbHVlOgotICAgICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9y
KCdIZWFkZXIgJXMgaXMgbm90IGRlZmluZWQnICUga2V5KQotICAgICAgICAgICAgaWYgZXhwZWN0
ZWRfdmFsdWU6Ci0gICAgICAgICAgICAgICAgaWYgYWN0dWFsX3ZhbHVlICE9IGV4cGVjdGVkX3Zh
bHVlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignSWxsZWdhbCB2
YWx1ZSBmb3IgaGVhZGVyICVzOiAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAoa2V5LCBhY3R1YWxfdmFsdWUpKQotICAgICAgICBpZiBzZWxmLl9zdHJpY3Q6
Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbGluZXMgPSBzZWxmLl9yZXF1ZXN0
LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcygpCi0gICAgICAgICAgICBleGNlcHQgQXR0
cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9f
ZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnU3RyaWN0IGhhbmRzaGFrZSBpcyBzcGVj
aWZpZWQgYnV0IHRoZSBjb25uZWN0aW9uICcKLSAgICAgICAgICAgICAgICAgICAgJ2RvZXNuXCd0
IHByb3ZpZGUgZ2V0X21lbW9yaXplZF9saW5lcygpJywgZSkKLSAgICAgICAgICAgICAgICByYWlz
ZQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZmlyc3RfbGluZXMobGluZXMpCi0KLSAgICBkZWYg
X2NoZWNrX2ZpcnN0X2xpbmVzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgaWYgbGVuKGxpbmVzKSA8
IGxlbihfRklSU1RfRklWRV9MSU5FUyk6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJv
cignVG9vIGZldyBoZWFkZXIgbGluZXM6ICVkJyAlIGxlbihsaW5lcykpCi0gICAgICAgIGZvciBs
aW5lLCByZWdleHAgaW4gemlwKGxpbmVzLCBfRklSU1RfRklWRV9MSU5FUyk6Ci0gICAgICAgICAg
ICBpZiBub3QgcmVnZXhwLnNlYXJjaChsaW5lKToKLSAgICAgICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFcnJvcignVW5leHBlY3RlZCBoZWFkZXI6ICVyIGRvZXNuXCd0IG1hdGNoICVyJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGxpbmUsIHJlZ2V4cC5wYXR0ZXJu
KSkKLSAgICAgICAgc2l4dGhfYW5kX2xhdGVyID0gJycuam9pbihsaW5lc1s1Ol0pCi0gICAgICAg
IGlmIG5vdCBfU0lYVEhfQU5EX0xBVEVSLnNlYXJjaChzaXh0aF9hbmRfbGF0ZXIpOgotICAgICAg
ICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ1VuZXhwZWN0ZWQgaGVhZGVyOiAlciBkb2Vzblwn
dCBtYXRjaCAlcicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNpeHRoX2Fu
ZF9sYXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9TSVhUSF9BTkRf
TEFURVIucGF0dGVybikpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhh
bmRsZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNGI5ZjFhMjQxYzRiMzkx
MGMzMDAzYWM4ODY5YjM3OTM0ODRmODIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVyLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiUHl0aG9uSGVh
ZGVyUGFyc2VySGFuZGxlciBmb3IgbW9kX3B5d2Vic29ja2V0LgotCi1BcGFjaGUgSFRUUCBTZXJ2
ZXIgYW5kIG1vZF9weXRob24gbXVzdCBiZSBjb25maWd1cmVkIHN1Y2ggdGhhdCB0aGlzCi1mdW5j
dGlvbiBpcyBjYWxsZWQgdG8gaGFuZGxlIFdlYiBTb2NrZXQgcmVxdWVzdC4KLSIiIgotCi0KLWZy
b20gbW9kX3B5dGhvbiBpbXBvcnQgYXBhY2hlCi0KLWltcG9ydCBkaXNwYXRjaAotaW1wb3J0IGhh
bmRzaGFrZQotaW1wb3J0IHV0aWwKLQotCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRoZSBo
YW5kbGVyIHJvb3QgZGlyZWN0b3J5LgotX1BZT1BUX0hBTkRMRVJfUk9PVCA9ICdtb2RfcHl3ZWJz
b2NrZXQuaGFuZGxlcl9yb290JwotCi0jIFB5dGhvbk9wdGlvbiB0byBzcGVjaWZ5IHRoZSBoYW5k
bGVyIHNjYW4gZGlyZWN0b3J5LgotIyBUaGlzIG11c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIgdGhl
IHJvb3QgZGlyZWN0b3J5LgotIyBUaGUgZGVmYXVsdCBpcyB0aGUgcm9vdCBkaXJlY3RvcnkuCi1f
UFlPUFRfSEFORExFUl9TQ0FOID0gJ21vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4nCi0KLQot
ZGVmIF9jcmVhdGVfZGlzcGF0Y2hlcigpOgotICAgIF9IQU5ETEVSX1JPT1QgPSBhcGFjaGUubWFp
bl9zZXJ2ZXIuZ2V0X29wdGlvbnMoKS5nZXQoCi0gICAgICAgICAgICBfUFlPUFRfSEFORExFUl9S
T09ULCBOb25lKQotICAgIGlmIG5vdCBfSEFORExFUl9ST09UOgotICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1B5dGhvbk9wdGlvbiAlcyBpcyBub3QgZGVmaW5lZCcgJSBfUFlPUFRfSEFORExFUl9S
T09ULAotICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0VSUikKLSAgICBfSEFO
RExFUl9TQ0FOID0gYXBhY2hlLm1haW5fc2VydmVyLmdldF9vcHRpb25zKCkuZ2V0KAotICAgICAg
ICAgICAgX1BZT1BUX0hBTkRMRVJfU0NBTiwgX0hBTkRMRVJfUk9PVCkKLSAgICBkaXNwYXRjaGVy
ID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfSEFORExFUl9ST09ULCBfSEFORExFUl9TQ0FOKQotICAg
IGZvciB3YXJuaW5nIGluIGRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCk6Ci0gICAgICAgIGFw
YWNoZS5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogJXMnICUgd2FybmluZywgYXBhY2hlLkFQ
TE9HX1dBUk5JTkcpCi0gICAgcmV0dXJuIGRpc3BhdGNoZXIKLQotCi0jIEluaXRpYWxpemUKLV9k
aXNwYXRjaGVyID0gX2NyZWF0ZV9kaXNwYXRjaGVyKCkKLQotCi1kZWYgaGVhZGVycGFyc2VyaGFu
ZGxlcihyZXF1ZXN0KToKLSAgICAiIiJIYW5kbGUgcmVxdWVzdC4KLQotICAgIEFyZ3M6Ci0gICAg
ICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgIFRoaXMgZnVuY3Rpb24gaXMg
bmFtZWQgaGVhZGVycGFyc2VyaGFuZGxlciBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IG5hbWUK
LSAgICBmb3IgYSBQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyLgotICAgICIiIgotCi0gICAgdHJ5
OgotICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwgX2Rp
c3BhdGNoZXIpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgcmVx
dWVzdC5sb2dfZXJyb3IoJ21vZF9weXdlYnNvY2tldDogcmVzb3VyY2U6ICVyJyAlIHJlcXVlc3Qu
d3NfcmVzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFwYWNoZS5BUExPR19ERUJV
RykKLSAgICAgICAgX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgIGV4Y2Vw
dCBoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsIGU6Ci0gICAgICAgICMgSGFuZHNoYWtlIGZvciB3
cy93c3MgZmFpbGVkLgotICAgICAgICAjIEJ1dCB0aGUgcmVxdWVzdCBjYW4gYmUgdmFsaWQgaHR0
cC9odHRwcyByZXF1ZXN0LgotICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29j
a2V0OiAlcycgJSBlLCBhcGFjaGUuQVBMT0dfSU5GTykKLSAgICAgICAgcmV0dXJuIGFwYWNoZS5E
RUNMSU5FRAotICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEVycm9yLCBlOgotICAgICAgICBy
ZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiAlcycgJSBlLCBhcGFjaGUuQVBMT0df
V0FSTklORykKLSAgICAgICAgcmV0dXJuIGFwYWNoZS5ERUNMSU5FRAotICAgIHJldHVybiBhcGFj
aGUuRE9ORSAgIyBSZXR1cm4gRE9ORSBzdWNoIHRoYXQgbm8gb3RoZXIgaGFuZGxlcnMgYXJlIGlu
dm9rZWQuCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21l
bW9yaXppbmdmaWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMmY4YTU0ZTQ1NmQ2MGU4MWEzYTI0ZDY0M2Y2MWZjNDY0MWM5
OGM5Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L21lbW9yaXppbmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAot
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJNZW1vcml6
aW5nIGZpbGUuCi0KLUEgbWVtb3JpemluZyBmaWxlIHdyYXBzIGEgZmlsZSBhbmQgbWVtb3JpemVz
IGxpbmVzIHJlYWQgYnkgcmVhZGxpbmUuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi0KLQotY2xhc3Mg
TWVtb3JpemluZ0ZpbGUob2JqZWN0KToKLSAgICAiIiJNZW1vcml6aW5nRmlsZSB3cmFwcyBhIGZp
bGUgYW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotCi0gICAgTm90ZSB0aGF0
IGRhdGEgcmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3QgbWVtb3JpemVkLiBUaGlzIGJlaGF2
aW9yCi0gICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXppbmcgbGluZXMgU2ltcGxlSFRUUFNl
cnZlciByZWFkcyBiZWZvcmUKLSAgICB0aGUgY29udHJvbCByZWFjaGVzIFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyLgotICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlXywgbWF4X21l
bW9yaXplZF9saW5lcz1zeXMubWF4aW50KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3Rh
bmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBmaWxlXzogdGhlIGZpbGUgb2JqZWN0
IHRvIHdyYXAuCi0gICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVzOiB0aGUgbWF4aW11bSBu
dW1iZXIgb2YgbGluZXMgdG8gbWVtb3JpemUuCi0gICAgICAgICAgICAgICAgT25seSB0aGUgZmly
c3QgbWF4X21lbW9yaXplZF9saW5lcyBhcmUgbWVtb3JpemVkLgotICAgICAgICAgICAgICAgIERl
ZmF1bHQ6IHN5cy5tYXhpbnQuIAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fZmlsZSA9IGZp
bGVfCi0gICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuX21h
eF9tZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0KLSAgICBkZWYgX19nZXRh
dHRyaWJ1dGVfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgaWYgbmFtZSBpbiAoJ19maWxlJywgJ19t
ZW1vcml6ZWRfbGluZXMnLCAnX21heF9tZW1vcml6ZWRfbGluZXMnLAotICAgICAgICAgICAgICAg
ICAgICAncmVhZGxpbmUnLCAnZ2V0X21lbW9yaXplZF9saW5lcycpOgotICAgICAgICAgICAgcmV0
dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVybiBz
ZWxmLl9maWxlLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiByZWFkbGluZShzZWxm
KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgZmlsZS5yZWFkbGluZSBhbmQgbWVtb3JpemUgdGhlIGxp
bmUgcmVhZC4iIiIKLQotICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCi0gICAg
ICAgIGlmIGxpbmUgYW5kIGxlbihzZWxmLl9tZW1vcml6ZWRfbGluZXMpIDwgc2VsZi5fbWF4X21l
bW9yaXplZF9saW5lczoKLSAgICAgICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcy5hcHBlbmQo
bGluZSkKLSAgICAgICAgcmV0dXJuIGxpbmUKLQotICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVz
KHNlbGYpOgotICAgICAgICAiIiJHZXQgbGluZXMgbWVtb3JpemVkIHNvIGZhci4iIiIKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX21lbW9yaXplZF9saW5lcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGFlNzE1OTEzYTE1NTBmYzE4YWQ1Yjcy
YzcxNzQ3M2ExMTM1MzkwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1MCArMCww
IEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJNZXNzYWdlIHJlbGF0ZWQgdXRpbGl0aWVzLgot
Ci1Ob3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1v
ZHVsZSwgZXZlbiB0aG91Z2gKLW1vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0IHRoZXkgc2hv
dWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uIGhhbmRsZXJzLgotVW5mb3J0dW5hdGVseSwg
d2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwgcmVxdWVzdC53cml0ZS9yZWFk
IGFyZQotbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5
dGVzIHdyaXRpbmcvcmVhZGluZy4KLSIiIgotCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IHRocmVh
ZGluZwotaW1wb3J0IHV0aWwKLQotCi1jbGFzcyBNc2dVdGlsRXhjZXB0aW9uKEV4Y2VwdGlvbik6
Ci0gICAgcGFzcwotCi0KLWRlZiBfcmVhZChyZXF1ZXN0LCBsZW5ndGgpOgotICAgIGJ5dGVzID0g
cmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQotICAgIGlmIG5vdCBieXRlczoKLSAgICAg
ICAgcmFpc2UgTXNnVXRpbEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHJl
Y2VpdmUgbWVzc2FnZSBmcm9tICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVz
dC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkpCi0gICAgcmV0dXJuIGJ5dGVzCi0KLQotZGVmIF93
cml0ZShyZXF1ZXN0LCBieXRlcyk6Ci0gICAgdHJ5OgotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoYnl0ZXMpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgdXRpbC5w
cmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8g
c2VuZCBtZXNzYWdlIHRvICVyOiAnICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSwKLSAgICAgICAgICAgICAgICBlKQotICAgICAgICBy
YWlzZQotCi0KLWRlZiBzZW5kX21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSk6Ci0gICAgIiIiU2Vu
ZCBtZXNzYWdlLgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1
ZXN0LgotICAgICAgICBtZXNzYWdlOiB1bmljb2RlIHN0cmluZyB0byBzZW5kLgotICAgICIiIgot
Ci0gICAgX3dyaXRlKHJlcXVlc3QsICdceDAwJyArIG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpICsg
J1x4ZmYnKQotCi0KLWRlZiByZWNlaXZlX21lc3NhZ2UocmVxdWVzdCk6Ci0gICAgIiIiUmVjZWl2
ZSBhIFdlYiBTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5bG9hZCBhcyB1bmljb2RlIHN0
cmluZy4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4K
LSAgICAiIiIKLQotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICMgUmVhZCAxIGJ5dGUuCi0gICAg
ICAgICMgbXBfY29ubi5yZWFkIHdpbGwgYmxvY2sgaWYgbm8gYnl0ZXMgYXJlIGF2YWlsYWJsZS4K
LSAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBkaXJlY3RpdmUgb2Yg
QXBhY2hlLgotICAgICAgICBmcmFtZV90eXBlX3N0ciA9IF9yZWFkKHJlcXVlc3QsIDEpCi0gICAg
ICAgIGZyYW1lX3R5cGUgPSBvcmQoZnJhbWVfdHlwZV9zdHJbMF0pCi0gICAgICAgIGlmIChmcmFt
ZV90eXBlICYgMHg4MCkgPT0gMHg4MDoKLSAgICAgICAgICAgICMgVGhlIHBheWxvYWQgbGVuZ3Ro
IGlzIHNwZWNpZmllZCBpbiB0aGUgZnJhbWUuCi0gICAgICAgICAgICAjIFJlYWQgYW5kIGRpc2Nh
cmQuCi0gICAgICAgICAgICBsZW5ndGggPSBfcGF5bG9hZF9sZW5ndGgocmVxdWVzdCkKLSAgICAg
ICAgICAgIF9yZWNlaXZlX2J5dGVzKHJlcXVlc3QsIGxlbmd0aCkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICMgVGhlIHBheWxvYWQgaXMgZGVsaW1pdGVkIHdpdGggXHhmZi4KLSAgICAgICAg
ICAgIGJ5dGVzID0gX3JlYWRfdW50aWwocmVxdWVzdCwgJ1x4ZmYnKQotICAgICAgICAgICAgIyBU
aGUgV2ViIFNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhhdCBpbnZhbGlk
Ci0gICAgICAgICAgICAjIGNoYXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZmZCBS
RVBMQUNFTUVOVCBDSEFSQUNURVIuCi0gICAgICAgICAgICBtZXNzYWdlID0gYnl0ZXMuZGVjb2Rl
KCd1dGYtOCcsICdyZXBsYWNlJykKLSAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUgPT0gMHgwMDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotICAgICAgICAgICAgIyBEaXNjYXJkIGRh
dGEgb2Ygb3RoZXIgdHlwZXMuCi0KLQotZGVmIF9wYXlsb2FkX2xlbmd0aChyZXF1ZXN0KToKLSAg
ICBsZW5ndGggPSAwCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgYl9zdHIgPSBfcmVhZChyZXF1
ZXN0LCAxKQotICAgICAgICBiID0gb3JkKGJfc3RyWzBdKQotICAgICAgICBsZW5ndGggPSBsZW5n
dGggKiAxMjggKyAoYiAmIDB4N2YpCi0gICAgICAgIGlmIChiICYgMHg4MCkgPT0gMDoKLSAgICAg
ICAgICAgIGJyZWFrCi0gICAgcmV0dXJuIGxlbmd0aAotCi0KLWRlZiBfcmVjZWl2ZV9ieXRlcyhy
ZXF1ZXN0LCBsZW5ndGgpOgotICAgIGJ5dGVzID0gW10KLSAgICB3aGlsZSBsZW5ndGggPiAwOgot
ICAgICAgICBuZXdfYnl0ZXMgPSBfcmVhZChyZXF1ZXN0LCBsZW5ndGgpCi0gICAgICAgIGJ5dGVz
LmFwcGVuZChuZXdfYnl0ZXMpCi0gICAgICAgIGxlbmd0aCAtPSBsZW4obmV3X2J5dGVzKQotICAg
IHJldHVybiAnJy5qb2luKGJ5dGVzKQotCi0KLWRlZiBfcmVhZF91bnRpbChyZXF1ZXN0LCBkZWxp
bV9jaGFyKToKLSAgICBieXRlcyA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgY2ggPSBf
cmVhZChyZXF1ZXN0LCAxKQotICAgICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgotICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgYnl0ZXMuYXBwZW5kKGNoKQotICAgIHJldHVybiAnJy5qb2luKGJ5
dGVzKQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAi
IiJUaGlzIGNsYXNzIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4KLQotICAgIFRo
aXMgY2xhc3MgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byByZWNlaXZlIG1lc3NhZ2VzOiBibG9ja2lu
Zywgbm9uLWJsb2NraW5nLAotICAgIGFuZCB2aWEgY2FsbGJhY2suIENhbGxiYWNrIGhhcyB0aGUg
aGlnaGVzdCBwcmVjZWRlbmNlLgotCi0gICAgTm90ZTogVGhpcyBjbGFzcyBzaG91bGQgbm90IGJl
IHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwotICAgIGJlY2F1c2UgcHlP
cGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBpZiB0aGUgc29j
a2V0Ci0gICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgotICAgICIiIgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICIi
IkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVx
dWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgb25tZXNzYWdlOiBhIGZ1bmN0
aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZC4KLSAgICAgICAgICAg
ICAgICAgICAgICAgTWF5IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUgZnVuY3Rpb24gaXMgY2Fs
bGVkIG9uCi0gICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgdGhyZWFkLiBJbiB0aGF0IGNh
c2UsIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBN
ZXNzYWdlUmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MgYmVjYXVzZQotICAgICAg
ICAgICAgICAgICAgICAgICB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBtZXNzYWdlcy4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAg
ICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5R
dWV1ZSgpCi0gICAgICAgIHNlbGYuX29ubWVzc2FnZSA9IG9ubWVzc2FnZQotICAgICAgICBzZWxm
Ll9zdG9wX3JlcXVlc3RlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0g
ICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUg
bm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgbWVzc2FnZSA9IHJlY2VpdmVf
bWVzc2FnZShzZWxmLl9yZXF1ZXN0KQotICAgICAgICAgICAgaWYgc2VsZi5fb25tZXNzYWdlOgot
ICAgICAgICAgICAgICAgIHNlbGYuX29ubWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQobWVzc2FnZSkKLQotICAgIGRlZiBy
ZWNlaXZlKHNlbGYpOgotICAgICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hh
bm5lbCwgYmxvY2tpbmcuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIG1lc3NhZ2Ug
YXMgYSB1bmljb2RlIHN0cmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9x
dWV1ZS5nZXQoKQotCi0gICAgZGVmIHJlY2VpdmVfbm93YWl0KHNlbGYpOgotICAgICAgICAiIiIg
UmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgbm9uLWJsb2NraW5nLgotCi0gICAg
ICAgIFJldHVybnM6Ci0gICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcgaWYg
YXZhaWxhYmxlLiBOb25lIG90aGVyd2lzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9xdWV1ZS5nZXRfbm93YWl0KCkKLSAgICAgICAgZXhj
ZXB0IFF1ZXVlLkVtcHR5OgotICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKLSAgICAgICAgcmV0
dXJuIG1lc3NhZ2UKLQotICAgIGRlZiBzdG9wKHNlbGYpOgotICAgICAgICAiIiJSZXF1ZXN0IHRv
IHN0b3AgdGhpcyBpbnN0YW5jZS4KLQotICAgICAgICBUaGUgaW5zdGFuY2Ugd2lsbCBiZSBzdG9w
cGVkIGFmdGVyIHJlY2VpdmluZyB0aGUgbmV4dCBtZXNzYWdlLgotICAgICAgICBUaGlzIG1ldGhv
ZCBtYXkgbm90IGJlIHZlcnkgdXNlZnVsLCBidXQgdGhlcmUgaXMgbm8gY2xlYW4gd2F5Ci0gICAg
ICAgIGluIFB5dGhvbiB0byBmb3JjZWZ1bGx5IHN0b3AgYSBydW5uaW5nIHRocmVhZC4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0KLWNsYXNzIE1l
c3NhZ2VTZW5kZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFzcyBzZW5kcyBt
ZXNzYWdlcyB0byB0aGUgY2xpZW50LgotCi0gICAgVGhpcyBjbGFzcyBwcm92aWRlcyBib3RoIHN5
bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgd2F5cyB0byBzZW5kCi0gICAgbWVzc2FnZXMuCi0K
LSAgICBOb3RlOiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRoZSBzdGFuZGFs
b25lIHNlcnZlciBmb3Igd3NzCi0gICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBieSB0aGUgc2Vy
dmVyIHJhaXNlcyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKLSAgICBpcyBhY2Nlc3NlZCBm
cm9tIG11bHRpcGxlIHRocmVhZHMuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJl
cXVlc3QpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5f
cmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0g
ICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAg
ZGVmIHJ1bihzZWxmKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2Us
IGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBjb25kaXRpb24uYWNx
dWlyZSgpCi0gICAgICAgICAgICBzZW5kX21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkK
LSAgICAgICAgICAgIGNvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgY29uZGl0aW9uLnJl
bGVhc2UoKQotCi0gICAgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlNlbmQg
YSBtZXNzYWdlLCBibG9ja2luZy4iIiIKLQotICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcu
Q29uZGl0aW9uKCkKLSAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9x
dWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlvbikpCi0gICAgICAgIGNvbmRpdGlvbi53YWl0KCkK
LQotICAgIGRlZiBzZW5kX25vd2FpdChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2VuZCBh
IG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIKLQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1l
c3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24oKSkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxv
bmUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MTE5MTA1Njg2NzMzMmVlZTNl
ZTBjMjI0ZWRjYjgzYzFhYmZhNTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L21vZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDUzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAwOSwg
R29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0K
LQotIiIiU3RhbmRhbG9uZSBXZWIgU29ja2V0IHNlcnZlci4KLQotVXNlIHRoaXMgc2VydmVyIHRv
IHJ1biBtb2RfcHl3ZWJzb2NrZXQgd2l0aG91dCBBcGFjaGUgSFRUUCBTZXJ2ZXIuCi0KLVVzYWdl
OgotICAgIHB5dGhvbiBzdGFuZGFsb25lLnB5IFstcCA8d3NfcG9ydD5dIFstdyA8d2Vic29ja19o
YW5kbGVycz5dCi0gICAgICAgICAgICAgICAgICAgICAgICAgWy1zIDxzY2FuX2Rpcj5dCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgWy1kIDxkb2N1bWVudF9yb290Pl0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICBbLW0gPHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGU+XQotICAgICAgICAgICAg
ICAgICAgICAgICAgIC4uLiBmb3Igb3RoZXIgb3B0aW9ucywgc2VlIF9tYWluIGJlbG93IC4uLgot
Ci08d3NfcG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlv
bi4KLQotPGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBv
ZiBIVE1MIGZpbGVzLgotCi08d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIFdlYiBTb2NrZXQgaGFuZGxlcnMuCi1TZWUgX19pbml0X18ucHkgZm9y
IGRldGFpbHMgb2YgPHdlYnNvY2tfaGFuZGxlcnM+IGFuZCBob3cgdG8gd3JpdGUgV2ViIFNvY2tl
dAotaGFuZGxlcnMuIElmIHRoaXMgcGF0aCBpcyByZWxhdGl2ZSwgPGRvY3VtZW50X3Jvb3Q+IGlz
IHVzZWQgYXMgdGhlIGJhc2UuCi0KLTxzY2FuX2Rpcj4gaXMgYSBwYXRoIHVuZGVyIHRoZSByb290
IGRpcmVjdG9yeS4gSWYgc3BlY2lmaWVkLCBvbmx5IHRoZSBoYW5kbGVycwotdW5kZXIgc2Nhbl9k
aXIgYXJlIHNjYW5uZWQuIFRoaXMgaXMgdXNlZnVsIGluIHNhdmluZyBzY2FuIHRpbWUuCi0KLU5v
dGU6Ci1UaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20gU29ja2V0U2VydmVyLlRocmVhZGluZ01p
eEluLiBIZW5jZSBhIHRocmVhZCBpcwotdXNlZCBmb3IgZWFjaCByZXF1ZXN0LgotIiIiCi0KLWlt
cG9ydCBCYXNlSFRUUFNlcnZlcgotaW1wb3J0IENHSUhUVFBTZXJ2ZXIKLWltcG9ydCBTaW1wbGVI
VFRQU2VydmVyCi1pbXBvcnQgU29ja2V0U2VydmVyCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGxv
Z2dpbmcuaGFuZGxlcnMKLWltcG9ydCBvcHRwYXJzZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWlt
cG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKLQotX0hBU19PUEVOX1NTTCA9IEZhbHNlCi10cnk6Ci0g
ICAgaW1wb3J0IE9wZW5TU0wuU1NMCi0gICAgX0hBU19PUEVOX1NTTCA9IFRydWUKLWV4Y2VwdCBJ
bXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLWltcG9ydCBkaXNwYXRjaAotaW1wb3J0IGhhbmRzaGFr
ZQotaW1wb3J0IG1lbW9yaXppbmdmaWxlCi1pbXBvcnQgdXRpbAotCi0KLV9MT0dfTEVWRUxTID0g
ewotICAgICdkZWJ1Zyc6IGxvZ2dpbmcuREVCVUcsCi0gICAgJ2luZm8nOiBsb2dnaW5nLklORk8s
Ci0gICAgJ3dhcm4nOiBsb2dnaW5nLldBUk4sCi0gICAgJ2Vycm9yJzogbG9nZ2luZy5FUlJPUiwK
LSAgICAnY3JpdGljYWwnOiBsb2dnaW5nLkNSSVRJQ0FMfTsKLQotX0RFRkFVTFRfTE9HX01BWF9C
WVRFUyA9IDEwMjQgKiAyNTYKLV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQgPSA1Ci0KLV9ERUZB
VUxUX1JFUVVFU1RfUVVFVUVfU0laRSA9IDEyOAotCi0jIDEwMjQgaXMgcHJhY3RpY2FsbHkgbGFy
Z2UgZW5vdWdoIHRvIGNvbnRhaW4gV2ViU29ja2V0IGhhbmRzaGFrZSBsaW5lcy4KLV9NQVhfTUVN
T1JJWkVEX0xJTkVTID0gMTAyNAotCi1kZWYgX3ByaW50X3dhcm5pbmdzX2lmX2FueShkaXNwYXRj
aGVyKToKLSAgICB3YXJuaW5ncyA9IGRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICBp
ZiB3YXJuaW5nczoKLSAgICAgICAgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3M6Ci0gICAgICAgICAg
ICBsb2dnaW5nLndhcm5pbmcoJ21vZF9weXdlYnNvY2tldDogJXMnICUgd2FybmluZykKLQotCi1j
bGFzcyBfU3RhbmRhbG9uZUNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJNaW1pYyBtb2RfcHl0
aG9uIG1wX2Nvbm4uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVy
KToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgICByZXF1ZXN0X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5z
dGFuY2UuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKLQotICAgIGRlZiBnZXRfbG9jYWxfYWRkcihzZWxmKToKLSAgICAgICAgIiIi
R2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ubG9jYWxfYWRkci4iIiIKLSAgICAgICAgcmV0dXJuIChz
ZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9uYW1lLAotICAgICAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX3BvcnQpCi0gICAgbG9jYWxfYWRk
ciA9IHByb3BlcnR5KGdldF9sb2NhbF9hZGRyKQotCi0gICAgZGVmIGdldF9yZW1vdGVfYWRkcihz
ZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIG1wX2Nvbm4ucmVtb3RlX2FkZHIuCi0K
LSAgICAgICAgU2V0dGluZyB0aGUgcHJvcGVydHkgaW4gX19pbml0X18gd29uJ3Qgd29yayBiZWNh
dXNlIHRoZSByZXF1ZXN0Ci0gICAgICAgIGhhbmRsZXIgaXMgbm90IGluaXRpYWxpemVkIHlldCB0
aGVyZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5jbGllbnRfYWRk
cmVzcwotICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0gICAg
ZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCku
IiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIud2ZpbGUud3JpdGUoZGF0
YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk1pbWljIG1wX2Nv
bm4ucmVhZCgpLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnJmaWxl
LnJlYWQobGVuZ3RoKQotCi0gICAgZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAg
ICAgICIiIkdldCBtZW1vcml6ZWQgbGluZXMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXF1
ZXN0X2hhbmRsZXIucmZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCi0KLQotY2xhc3MgX1N0YW5k
YWxvbmVSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1ZXN0LiIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlciwgdXNlX3Rscyk6Ci0g
ICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAg
ICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGluc3RhbmNl
LgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyID0gcmVxdWVzdF9o
YW5kbGVyCi0gICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IF9TdGFuZGFsb25lQ29ubmVjdGlvbihy
ZXF1ZXN0X2hhbmRsZXIpCi0gICAgICAgIHNlbGYuX3VzZV90bHMgPSB1c2VfdGxzCi0KLSAgICBk
ZWYgZ2V0X3VyaShzZWxmKToKLSAgICAgICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudXJp
LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnBhdGgKLSAgICB1cmkg
PSBwcm9wZXJ0eShnZXRfdXJpKQotCi0gICAgZGVmIGdldF9oZWFkZXJzX2luKHNlbGYpOgotICAg
ICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC5oZWFkZXJzX2luLiIiIgotICAgICAgICBy
ZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMKLSAgICBoZWFkZXJzX2luID0gcHJv
cGVydHkoZ2V0X2hlYWRlcnNfaW4pCi0KLSAgICBkZWYgaXNfaHR0cHMoc2VsZik6Ci0gICAgICAg
ICIiIk1pbWljIHJlcXVlc3QuaXNfaHR0cHMoKS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Vz
ZV90bHMKLQotCi1jbGFzcyBXZWJTb2NrZXRTZXJ2ZXIoU29ja2V0U2VydmVyLlRocmVhZGluZ01p
eEluLCBCYXNlSFRUUFNlcnZlci5IVFRQU2VydmVyKToKLSAgICAiIiJIVFRQU2VydmVyIHNwZWNp
YWxpemVkIGZvciBXZWIgU29ja2V0LiIiIgotCi0gICAgU29ja2V0U2VydmVyLlRocmVhZGluZ01p
eEluLmRhZW1vbl90aHJlYWRzID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZl
cl9hZGRyZXNzLCBSZXF1ZXN0SGFuZGxlckNsYXNzKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29j
a2V0U2VydmVyLkJhc2VTZXJ2ZXIuX19pbml0X18uIiIiCi0KLSAgICAgICAgU29ja2V0U2VydmVy
LkJhc2VTZXJ2ZXIuX19pbml0X18oCi0gICAgICAgICAgICAgICAgc2VsZiwgc2VydmVyX2FkZHJl
c3MsIFJlcXVlc3RIYW5kbGVyQ2xhc3MpCi0gICAgICAgIHNlbGYuc29ja2V0ID0gc2VsZi5fY3Jl
YXRlX3NvY2tldCgpCi0gICAgICAgIHNlbGYuc2VydmVyX2JpbmQoKQotICAgICAgICBzZWxmLnNl
cnZlcl9hY3RpdmF0ZSgpCi0KLSAgICBkZWYgX2NyZWF0ZV9zb2NrZXQoc2VsZik6Ci0gICAgICAg
IHNvY2tldF8gPSBzb2NrZXQuc29ja2V0KHNlbGYuYWRkcmVzc19mYW1pbHksIHNlbGYuc29ja2V0
X3R5cGUpCi0gICAgICAgIGlmIFdlYlNvY2tldFNlcnZlci5vcHRpb25zLnVzZV90bHM6Ci0gICAg
ICAgICAgICBjdHggPSBPcGVuU1NMLlNTTC5Db250ZXh0KE9wZW5TU0wuU1NMLlNTTHYyM19NRVRI
T0QpCi0gICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVrZXlfZmlsZShXZWJTb2NrZXRTZXJ2ZXIu
b3B0aW9ucy5wcml2YXRlX2tleSkKLSAgICAgICAgICAgIGN0eC51c2VfY2VydGlmaWNhdGVfZmls
ZShXZWJTb2NrZXRTZXJ2ZXIub3B0aW9ucy5jZXJ0aWZpY2F0ZSkKLSAgICAgICAgICAgIHNvY2tl
dF8gPSBPcGVuU1NMLlNTTC5Db25uZWN0aW9uKGN0eCwgc29ja2V0XykKLSAgICAgICAgcmV0dXJu
IHNvY2tldF8KLQotICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcnF1ZXN0LCBjbGllbnRfYWRk
cmVzcyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJyb3IuIiIi
Ci0KLSAgICAgICAgbG9nZ2luZy5lcnJvcigKLSAgICAgICAgICAgICgnRXhjZXB0aW9uIGluIHBy
b2Nlc3NpbmcgcmVxdWVzdCBmcm9tOiAlcicgJSAoY2xpZW50X2FkZHJlc3MsKSkgKwotICAgICAg
ICAgICAgJ1xuJyArIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCi0gICAgICAgICMgTm90ZTogY2xp
ZW50X2FkZHJlc3MgaXMgYSB0dXBsZS4gVG8gbWF0Y2ggaXQgYWdhaW5zdCAlciwgd2UgbmVlZCB0
aGUKLSAgICAgICAgIyB0cmFpbGluZyBjb21tYS4KLQotCi1jbGFzcyBXZWJTb2NrZXRSZXF1ZXN0
SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6Ci0gICAgIiIiQ0dJ
SFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWIgU29ja2V0LiIiIgotCi0gICAg
ZGVmIHNldHVwKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBTb2NrZXRTZXJ2ZXIuU3RyZWFt
UmVxdWVzdEhhbmRsZXIuc2V0dXAuIiIiCi0KLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gc2Vs
Zi5yZXF1ZXN0Ci0gICAgICAgIHNlbGYucmZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5n
RmlsZSgKLSAgICAgICAgICAgICAgICBzb2NrZXQuX2ZpbGVvYmplY3Qoc2VsZi5yZXF1ZXN0LCAn
cmInLCBzZWxmLnJidWZzaXplKSwKLSAgICAgICAgICAgICAgICBtYXhfbWVtb3JpemVkX2xpbmVz
PV9NQVhfTUVNT1JJWkVEX0xJTkVTKQotICAgICAgICBzZWxmLndmaWxlID0gc29ja2V0Ll9maWxl
b2JqZWN0KHNlbGYucmVxdWVzdCwgJ3diJywgc2VsZi53YnVmc2l6ZSkKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCAqYXJncywgKiprZXl3b3Jkcyk6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3QgPSBf
U3RhbmRhbG9uZVJlcXVlc3QoCi0gICAgICAgICAgICAgICAgc2VsZiwgV2ViU29ja2V0UmVxdWVz
dEhhbmRsZXIub3B0aW9ucy51c2VfdGxzKQotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gV2Vi
U29ja2V0UmVxdWVzdEhhbmRsZXIub3B0aW9ucy5kaXNwYXRjaGVyCi0gICAgICAgIHNlbGYuX3By
aW50X3dhcm5pbmdzX2lmX2FueSgpCi0gICAgICAgIHNlbGYuX2hhbmRzaGFrZXIgPSBoYW5kc2hh
a2UuSGFuZHNoYWtlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBzZWxmLl9kaXNw
YXRjaGVyLAotICAgICAgICAgICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLm9wdGlvbnMu
c3RyaWN0KQotICAgICAgICBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlci5fX2lu
aXRfXygKLSAgICAgICAgICAgICAgICBzZWxmLCAqYXJncywgKiprZXl3b3JkcykKLQotICAgIGRl
ZiBfcHJpbnRfd2FybmluZ3NfaWZfYW55KHNlbGYpOgotICAgICAgICB3YXJuaW5ncyA9IHNlbGYu
X2Rpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgaWYgd2FybmluZ3M6Ci0gICAg
ICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKLSAgICAgICAgICAgICAgICBsb2dnaW5n
Lndhcm5pbmcoJ21vZF9weXdlYnNvY2tldDogJXMnICUgd2FybmluZykKLQotICAgIGRlZiBwYXJz
ZV9yZXF1ZXN0KHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCi0KLSAgICAgICAgUmV0dXJuIFRydWUg
dG8gY29udGludWUgcHJvY2Vzc2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgotICAg
ICAgICAiIiIKLSAgICAgICAgcmVzdWx0ID0gQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhh
bmRsZXIucGFyc2VfcmVxdWVzdChzZWxmKQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
ICAgICAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1
ZXN0KQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IGhh
bmRzaGFrZS5IYW5kc2hha2VFcnJvciwgZToKLSAgICAgICAgICAgICAgICAjIEhhbmRzaGFrZSBm
b3Igd3MocykgZmFpbGVkLiBBc3N1bWUgaHR0cChzKS4KLSAgICAgICAgICAgICAgICBsb2dnaW5n
LmluZm8oJ21vZF9weXdlYnNvY2tldDogJXMnICUgZSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGU6Ci0gICAg
ICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSBlKQotICAgICAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnbW9kX3B5d2Vic29ja2V0OiAl
cycgJSB1dGlsLmdldF9zdGFja190cmFjZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxz
ZQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgbG9nX3JlcXVlc3Qoc2VsZiwgY29k
ZT0nLScsIHNpemU9Jy0nKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgQmFzZUhUVFBTZXJ2ZXIubG9n
X3JlcXVlc3QuIiIiCi0KLSAgICAgICAgbG9nZ2luZy5pbmZvKCciJXMiICVzICVzJywKLSAgICAg
ICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdGxpbmUsIHN0cihjb2RlKSwgc3RyKHNpemUpKQot
Ci0gICAgZGVmIGxvZ19lcnJvcihzZWxmLCAqYXJncyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJh
c2VIVFRQU2VydmVyLmxvZ19lcnJvci4iIiIKLQotICAgICAgICAjIERlc3BpdGUgdGhlIG5hbWUs
IHRoaXMgbWV0aG9kIGlzIGZvciB3YXJuaW5ncyB0aGFuIGZvciBlcnJvcnMuCi0gICAgICAgICMg
Rm9yIGV4YW1wbGUsIEhUVFAgc3RhdHVzIGNvZGUgaXMgbG9nZ2VkIGJ5IHRoaXMgbWV0aG9kLgot
ICAgICAgICBsb2dnaW5nLndhcm4oJyVzIC0gJXMnICUgKHNlbGYuYWRkcmVzc19zdHJpbmcoKSwg
KGFyZ3NbMF0gJSBhcmdzWzE6XSkpKQotCi0gICAgZGVmIGlzX2NnaShzZWxmKToKLSAgICAgICAg
IiIiVGVzdCB3aGV0aGVyIHNlbGYucGF0aCBjb3JyZXNwb25kcyB0byBhIENHSSBzY3JpcHQuCi0K
LSAgICAgICAgQWRkIGV4dHJhIGNoZWNrIHRoYXQgc2VsZi5wYXRoIGRvZXNuJ3QgY29udGFpbnMg
Li4KLSAgICAgICAgQWxzbyBjaGVjayBpZiB0aGUgZmlsZSBpcyBhIGV4ZWN1dGFibGUgZmlsZSBv
ciBub3QuCi0gICAgICAgIElmIHRoZSBmaWxlIGlzIG5vdCBleGVjdXRhYmxlLCBpdCBpcyBoYW5k
bGVkIGFzIHN0YXRpYyBmaWxlIG9yIGRpcgotICAgICAgICByYXRoZXIgdGhhbiBhIENHSSBzY3Jp
cHQuCi0gICAgICAgICIiIgotICAgICAgICBpZiBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0
SGFuZGxlci5pc19jZ2koc2VsZik6Ci0gICAgICAgICAgICBpZiAnLi4nIGluIHNlbGYucGF0aDoK
LSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICMgc3RyaXAgcXVlcnkg
cGFyYW1ldGVyIGZyb20gcmVxdWVzdCBwYXRoCi0gICAgICAgICAgICByZXNvdXJjZV9uYW1lID0g
c2VsZi5wYXRoLnNwbGl0KCc/JywgMilbMF0KLSAgICAgICAgICAgICMgY29udmVydCByZXNvdXJj
ZV9uYW1lIGludG8gcmVhbCBwYXRoIG5hbWUgaW4gZmlsZXN5c3RlbS4KLSAgICAgICAgICAgIHNj
cmlwdGZpbGUgPSBzZWxmLnRyYW5zbGF0ZV9wYXRoKHJlc291cmNlX25hbWUpCi0gICAgICAgICAg
ICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoc2NyaXB0ZmlsZSk6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19leGVjdXRhYmxlKHNjcmlwdGZp
bGUpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJuIFRy
dWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZyhvcHRp
b25zKToKLSAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAgbG9nZ2VyLnNldExl
dmVsKF9MT0dfTEVWRUxTW29wdGlvbnMubG9nX2xldmVsXSkKLSAgICBpZiBvcHRpb25zLmxvZ19m
aWxlOgotICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5oYW5kbGVycy5Sb3RhdGluZ0ZpbGVIYW5k
bGVyKAotICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nX2ZpbGUsICdhJywgb3B0aW9ucy5sb2df
bWF4LCBvcHRpb25zLmxvZ19jb3VudCkKLSAgICBlbHNlOgotICAgICAgICBoYW5kbGVyID0gbG9n
Z2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcigK
LSAgICAgICAgICAgICJbJShhc2N0aW1lKXNdIFslKGxldmVsbmFtZSlzXSAlKG5hbWUpczogJSht
ZXNzYWdlKXMiKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGZvcm1hdHRlcikKLSAgICBsb2dn
ZXIuYWRkSGFuZGxlcihoYW5kbGVyKQotCi1kZWYgX2FsaWFzX2hhbmRsZXJzKGRpc3BhdGNoZXIs
IHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpOgotICAgICIiIlNldCBhbGlhc2VzIHNwZWNpZmll
ZCBpbiB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGUgaW4gZGlzcGF0Y2hlci4KLQotICAgIEFyZ3M6
Ci0gICAgICAgIGRpc3BhdGNoZXI6IGRpc3BhdGNoLkRpc3BhdGNoZXIgaW5zdGFuY2UKLSAgICAg
ICAgd2Vic29ja19oYW5kbGVyX21hcF9maWxlOiBhbGlhcyBtYXAgZmlsZQotICAgICIiIgotICAg
IGZwID0gb3Blbih3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgIHRyeToKLSAgICAgICAg
Zm9yIGxpbmUgaW4gZnA6Ci0gICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlz
c3BhY2UoKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKCcoXFMrKVxzKyhcUyspJywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAg
ICAgICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBs
aW5lKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAg
ICAgICAgICAgbS5ncm91cCgxKSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNw
YXRjaC5EaXNwYXRjaEVycm9yLCBlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZXJyb3Ioc3Ry
KGUpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIGZwLmNsb3NlKCkKLQotCi0KLWRlZiBfbWFpbigp
OgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9v
cHRpb24oJy1IJywgJy0tc2VydmVyLWhvc3QnLCAnLS1zZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9JycsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRv
IGxpc3RlbiB0bycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9ydCcsIGRlc3Q9
J3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9aGFuZHNo
YWtlLl9ERUZBVUxUX1dFQl9TT0NLRVRfUE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdwb3J0IHRvIGxpc3RlbiB0bycpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy13JywgJy0td2Vi
c29jay1oYW5kbGVycycsICctLXdlYnNvY2tfaGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9J3dlYnNvY2tfaGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1dlYiBTb2NrZXQgaGFuZGxlcnMg
cm9vdCBkaXJlY3RvcnkuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW0nLCAnLS13ZWJzb2Nr
LWhhbmRsZXJzLW1hcC1maWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAnLS13ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd3ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlJywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgaGVscD0oJ1dlYiBTb2NrZXQgaGFuZGxlcnMgbWFwIGZpbGUu
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRWFjaCBsaW5lIGNvbnNpc3RzIG9mIGFs
aWFzX3Jlc291cmNlX3BhdGggYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhp
c3RpbmdfcmVzb3VyY2VfcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4nKSkKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLXMnLCAnLS1zY2FuLWRpcicsICctLXNjYW5fZGlyJywgZGVzdD0nc2Nhbl9k
aXInLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSgnV2ViIFNvY2tldCBoYW5kbGVycyBzY2FuIGRpcmVjdG9yeS4gJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdNdXN0IGJlIGEgZGlyZWN0b3J5IHVuZGVyIHdlYnNv
Y2tfaGFuZGxlcnMuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1kJywgJy0tZG9jdW1lbnQt
cm9vdCcsICctLWRvY3VtZW50X3Jvb3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Rv
Y3VtZW50X3Jvb3QnLCBkZWZhdWx0PScuJywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdE
b2N1bWVudCByb290IGRpcmVjdG9yeS4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCcteCcsICct
LWNnaS1wYXRocycsICctLWNnaV9wYXRocycsIGRlc3Q9J2NnaV9wYXRocycsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdD
R0kgcGF0aHMgcmVsYXRpdmUgdG8gZG9jdW1lbnRfcm9vdC4nCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ0NvbW1hLXNlcGFyYXRlZC4gKGUuZyAteCAvY2dpLC9odGJpbikgJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdGaWxlcyB1bmRlciBkb2N1bWVudF9yb290L2NnaV9wYXRo
IGFyZSBoYW5kbGVkICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXMgQ0dJIHByb2dy
YW1zLiBNdXN0IGJlIGV4ZWN1dGFibGUuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy10Jywg
Jy0tdGxzJywgZGVzdD0ndXNlX3RscycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgaGVscD0ndXNlIFRMUyAod3NzOi8vKScpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1rJywgJy0tcHJpdmF0ZS1rZXknLCAnLS1wcml2YXRlX2tleScs
Ci0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncHJpdmF0ZV9rZXknLAotICAgICAgICAgICAg
ICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RMUyBwcml2YXRlIGtleSBmaWxlLicpCi0gICAg
cGFyc2VyLmFkZF9vcHRpb24oJy1jJywgJy0tY2VydGlmaWNhdGUnLCBkZXN0PSdjZXJ0aWZpY2F0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIGNlcnRpZmlj
YXRlIGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWwnLCAnLS1sb2ctZmlsZScsICct
LWxvZ19maWxlJywgZGVzdD0nbG9nX2ZpbGUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9JycsIGhlbHA9J0xvZyBmaWxlLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxl
dmVsJywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAg
ICBkZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAgICAg
ICBjaG9pY2VzPVsnZGVidWcnLCAnaW5mbycsICd3YXJuJywgJ2Vycm9yJywgJ2NyaXRpY2FsJ10s
Ci0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIGxldmVsLicpCi0gICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tbG9nLW1heCcsICctLWxvZ19tYXgnLCBkZXN0PSdsb2dfbWF4JywgdHlwZT0n
aW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX0xPR19NQVhfQllU
RVMsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nTG9nIG1heGltdW0gYnl0ZXMnKQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1jb3VudCcsICctLWxvZ19jb3VudCcsIGRlc3Q9J2xv
Z19jb3VudCcsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JywgZGVmYXVsdD1fREVG
QVVMVF9MT0dfQkFDS1VQX0NPVU5ULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBi
YWNrdXAgY291bnQnKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLXN0cmljdCcsIGRlc3Q9J3N0
cmljdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD1GYWxzZSwgaGVscD0nU3RyaWN0bHkgY2hlY2sgaGFuZHNoYWtlIHJlcXVlc3QnKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1ZXVlJywgZGVzdD0ncmVxdWVzdF9xdWV1ZV9zaXpl
JywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9ERUZBVUxUX1JF
UVVFU1RfUVVFVUVfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdyZXF1ZXN0IHF1
ZXVlIHNpemUnKQotICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncygpWzBdCi0KLSAgICBv
cy5jaGRpcihvcHRpb25zLmRvY3VtZW50X3Jvb3QpCi0KLSAgICBfY29uZmlndXJlX2xvZ2dpbmco
b3B0aW9ucykKLQotICAgIFNvY2tldFNlcnZlci5UQ1BTZXJ2ZXIucmVxdWVzdF9xdWV1ZV9zaXpl
ID0gb3B0aW9ucy5yZXF1ZXN0X3F1ZXVlX3NpemUKLSAgICBDR0lIVFRQU2VydmVyLkNHSUhUVFBS
ZXF1ZXN0SGFuZGxlci5jZ2lfZGlyZWN0b3JpZXMgPSBbXQotCi0gICAgaWYgb3B0aW9ucy5jZ2lf
cGF0aHM6Ci0gICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmNnaV9k
aXJlY3RvcmllcyA9IFwKLSAgICAgICAgICAgIG9wdGlvbnMuY2dpX3BhdGhzLnNwbGl0KCcsJykK
LSAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dpbjMyJyk6Ci0gICAgICAg
ICAgICBjeWd3aW5fcGF0aCA9IE5vbmUKLSAgICAgICAgICAgICMgRm9yIFdpbjMyIFB5dGhvbiwg
aXQgaXMgZXhwZWN0ZWQgdGhhdCBDWUdXSU5fUEFUSAotICAgICAgICAgICAgIyBpcyBzZXQgdG8g
YSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgotICAgICAgICAgICAgIyBGb3IgZXhhbXBs
ZSwgd2Vic29ja2V0X3NlcnZlci5weSBpbiBDaHJvbWl1bSBzZXRzIENZR1dJTl9QQVRIIHRvCi0g
ICAgICAgICAgICAjIGZ1bGwgcGF0aCBvZiB0aGlyZF9wYXJ0eS9jeWd3aW4vYmluLgotICAgICAg
ICAgICAgaWYgJ0NZR1dJTl9QQVRIJyBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgIGN5
Z3dpbl9wYXRoID0gb3MuZW52aXJvblsnQ1lHV0lOX1BBVEgnXQotICAgICAgICAgICAgdXRpbC53
cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKQotICAgICAgICAgICAgZGVmIF9fY2hlY2tf
c2NyaXB0KHNjcmlwdHBhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybiB1dGlsLmdldF9zY3Jp
cHRfaW50ZXJwKHNjcmlwdHBhdGgsIGN5Z3dpbl9wYXRoKQotICAgICAgICAgICAgQ0dJSFRUUFNl
cnZlci5leGVjdXRhYmxlID0gX19jaGVja19zY3JpcHQKLQotICAgIGlmIG9wdGlvbnMudXNlX3Rs
czoKLSAgICAgICAgaWYgbm90IF9IQVNfT1BFTl9TU0w6Ci0gICAgICAgICAgICBsb2dnaW5nLmNy
aXRpY2FsKCdUbyB1c2UgVExTLCBpbnN0YWxsIHB5T3BlblNTTC4nKQotICAgICAgICAgICAgc3lz
LmV4aXQoMSkKLSAgICAgICAgaWYgbm90IG9wdGlvbnMucHJpdmF0ZV9rZXkgb3Igbm90IG9wdGlv
bnMuY2VydGlmaWNhdGU6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKAotICAgICAgICAg
ICAgICAgICAgICAnVG8gdXNlIFRMUywgc3BlY2lmeSBwcml2YXRlX2tleSBhbmQgY2VydGlmaWNh
dGUuJykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBub3Qgb3B0aW9ucy5zY2Fu
X2RpcjoKLSAgICAgICAgb3B0aW9ucy5zY2FuX2RpciA9IG9wdGlvbnMud2Vic29ja19oYW5kbGVy
cwotCi0gICAgdHJ5OgotICAgICAgICAjIFNoYXJlIGEgRGlzcGF0Y2hlciBhbW9uZyByZXF1ZXN0
IGhhbmRsZXJzIHRvIHNhdmUgdGltZSBmb3IKLSAgICAgICAgIyBpbnN0YW50aWF0aW9uLiAgRGlz
cGF0Y2hlciBjYW4gYmUgc2hhcmVkIGJlY2F1c2UgaXQgaXMgdGhyZWFkLXNhZmUuCi0gICAgICAg
IG9wdGlvbnMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIob3B0aW9ucy53ZWJzb2Nr
X2hhbmRsZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMuc2Nhbl9kaXIpCi0gICAgICAgIGlmIG9wdGlvbnMud2Vic29ja19oYW5kbGVy
c19tYXBfZmlsZToKLSAgICAgICAgICAgIF9hbGlhc19oYW5kbGVycyhvcHRpb25zLmRpc3BhdGNo
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy53ZWJzb2NrX2hhbmRsZXJz
X21hcF9maWxlKQotICAgICAgICBfcHJpbnRfd2FybmluZ3NfaWZfYW55KG9wdGlvbnMuZGlzcGF0
Y2hlcikKLQotICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5vcHRpb25zID0gb3B0aW9u
cwotICAgICAgICBXZWJTb2NrZXRTZXJ2ZXIub3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAgICBz
ZXJ2ZXIgPSBXZWJTb2NrZXRTZXJ2ZXIoKG9wdGlvbnMuc2VydmVyX2hvc3QsIG9wdGlvbnMucG9y
dCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTb2NrZXRSZXF1ZXN0SGFu
ZGxlcikKLSAgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQotICAgIGV4Y2VwdCBFeGNlcHRp
b24sIGU6Ci0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoc3RyKGUpKQotICAgICAgICBzeXMuZXhp
dCgxKQotCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgX21haW4oKQotCi0KLSMg
dmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC91dGlsLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWM5ZGNhMGFiNDU5
YTQ0MGIwZWMyYTk4MDUwZWQ0OTczMDQzYzU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDEyMSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWIgU29ja2V0cyB1dGlsaXRp
ZXMuCi0iIiIKLQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBv
cnQgdHJhY2ViYWNrCi0KLQotZGVmIGdldF9zdGFja190cmFjZSgpOgotICAgICIiIkdldCB0aGUg
Y3VycmVudCBzdGFjayB0cmFjZSBhcyBzdHJpbmcuCi0KLSAgICBUaGlzIGlzIG5lZWRlZCB0byBz
dXBwb3J0IFB5dGhvbiAyLjMuCi0gICAgVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiB3ZSBvbmx5IHN1
cHBvcnQgUHl0aG9uIDIuNCBhbmQgYWJvdmUuCi0gICAgICAgICAgVXNlIHRyYWNlYmFjay5mb3Jt
YXRfZXhjIGluc3RlYWQuCi0gICAgIiIiCi0KLSAgICBvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygp
Ci0gICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPW91dCkKLSAgICByZXR1cm4gb3V0LmdldHZh
bHVlKCkKLQotCi1kZWYgcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihtZXNzYWdlLCBleGMp
OgotICAgICIiIlByZXBlbmQgbWVzc2FnZSB0byB0aGUgZXhjZXB0aW9uLiIiIgotCi0gICAgZXhj
LmFyZ3MgPSAobWVzc2FnZSArIHN0cihleGMpLCkKLSAgICByZXR1cm4KLQotCi1kZWYgX190cmFu
c2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgpOgotICAgICIiIlRyYW5zbGF0ZSBpbnRl
cnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24gdG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0g
ICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9lc24ndCBzdXBwb3J0IHBhdGggdGhhdCBj
b250YWlucyBzcGFjZSwKLSAgICB3aGljaCBpcyB0eXBpY2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hl
cmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCi0gICAgRm9yIFdpbjMyIHB5dGhvbiwgY3lnd2luX3Bh
dGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFyaWVzLgotCi0gICAgQXJnczoKLSAgICAg
IGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQotICAgICAgY3lnd2luX3BhdGg6IGRpcmVjdG9y
eSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUKLSAgICBSZXR1cm5zOgotICAgICAgdHJh
bnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgotICAgICIiIgotICAgIGlmIG5vdCBjeWd3aW5f
cGF0aDoKLSAgICAgICAgcmV0dXJuIGludGVycAotICAgIG0gPSByZS5tYXRjaCgiXlteIF0qLyhb
XiBdKykoIC4qKT8iLCBpbnRlcnApCi0gICAgaWYgbToKLSAgICAgICAgY21kID0gb3MucGF0aC5q
b2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQotICAgICAgICByZXR1cm4gY21kICsgbS5ncm91
cCgyKQotICAgIHJldHVybiBpbnRlcnAKLQotCi1kZWYgZ2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0
X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgotICAgICIiIkdldHMgIyEtaW50ZXJwcmV0ZXIgY29t
bWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KLQotICAgIEl0IGFsc28gZml4ZXMgY29tbWFuZCBw
YXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gV2ViS2l0LAotICAgIGl0
IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVsbG8ucGwiLgotICAgIFdoZW4gV2luMzIg
UHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0sIGl0IGNvdWxkbid0LiAgU28sIGZpeAot
ICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9wYXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBB
cmdzOgotICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1lIG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5
Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCi0gICAg
UmV0dXJuczoKLSAgICAgICMhLWludGVycHJldGVyIGNvbW1hbmQgbGluZSwgb3IgTm9uZSBpZiBp
dCBpcyBub3QgIyEtc2NyaXB0LgotICAgICIiIgotICAgIGZwID0gb3BlbihzY3JpcHRfcGF0aCkK
LSAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgIGZwLmNsb3NlKCkKLSAgICBtID0gcmUubWF0
Y2goIl4jISguKikiLCBsaW5lKQotICAgIGlmIG06Ci0gICAgICAgIHJldHVybiBfX3RyYW5zbGF0
ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgpCi0gICAgcmV0dXJuIE5vbmUKLQotZGVm
IHdyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpOgotICAgICIiIldyYXAgcG9wZW4zIHRv
IHN1cHBvcnQgIyEtc2NyaXB0IG9uIFdpbmRvd3MuCi0KLSAgICBBcmdzOgotICAgICAgY3lnd2lu
X3BhdGg6ICBwYXRoIGZvciBjeWd3aW4gYmluYXJ5IGlmIGNvbW1hbmQgcGF0aCBpcyBuZWVkZWQg
dG8gYmUKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZC4gIE5vbmUgaWYgbm8gdHJhbnNs
YXRpb24gcmVxdWlyZWQuCi0gICAgIiIiCi0gICAgX19vcmlnX3BvcGVuMyA9IG9zLnBvcGVuMwot
ICAgIGRlZiBfX3dyYXBfcG9wZW4zKGNtZCwgbW9kZT0ndCcsIGJ1ZnNpemU9LTEpOgotICAgICAg
ICBjbWRsaW5lID0gY21kLnNwbGl0KCcgJykKLSAgICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9p
bnRlcnAoY21kbGluZVswXSwgY3lnd2luX3BhdGgpCi0gICAgICAgIGlmIGludGVycDoKLSAgICAg
ICAgICAgIGNtZCA9IGludGVycCArICIgIiArIGNtZAotICAgICAgICByZXR1cm4gX19vcmlnX3Bv
cGVuMyhjbWQsIG1vZGUsIGJ1ZnNpemUpCi0gICAgb3MucG9wZW4zID0gX193cmFwX3BvcGVuMwot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3NldHVwLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3NldHVwLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhMzRhODNiMjcyZTY4NGI0ZjYwNjQwYmYzZGZjNDk0ZjI3NTdl
NDg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weQor
KysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiU2V0IHVwIHNjcmlwdCBmb3IgbW9kX3B5d2Vic29ja2V0
LgotIiIiCi0KLQotZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKLWltcG9ydCBzeXMK
LQotCi1fUEFDS0FHRV9OQU1FID0gJ21vZF9weXdlYnNvY2tldCcKLQotaWYgc3lzLnZlcnNpb24g
PCAnMi4zJzoKLSAgICBwcmludCA+PnN5cy5zdGRlcnIsICclcyByZXF1aXJlcyBQeXRob24gMi4z
IG9yIGxhdGVyLicgJSBfUEFDS0FHRV9OQU1FCi0gICAgc3lzLmV4aXQoMSkKLQotc2V0dXAoYXV0
aG9yPSdZdXpvIEZ1amlzaGltYScsCi0gICAgICBhdXRob3JfZW1haWw9J3l1em9AY2hyb21pdW0u
b3JnJywKLSAgICAgIGRlc2NyaXB0aW9uPSdXZWIgU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hl
IEhUVFAgU2VydmVyLicsCi0gICAgICBsb25nX2Rlc2NyaXB0aW9uPSgKLSAgICAgICAgICAgICAg
J21vZF9weXdlYnNvY2tldCBpcyBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZXh0ZW5zaW9uIGZvciAn
Ci0gICAgICAgICAgICAgICdXZWIgU29ja2V0IChodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC8n
Ci0gICAgICAgICAgICAgICdkcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbCkuICcKLSAg
ICAgICAgICAgICAgJ1NlZSBtb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgZm9yIG1vcmUgZGV0
YWlsLicpLAotICAgICAgbGljZW5zZT0nU2VlIENPUFlJTkcnLAotICAgICAgbmFtZT1fUEFDS0FH
RV9OQU1FLAotICAgICAgcGFja2FnZXM9W19QQUNLQUdFX05BTUVdLAotICAgICAgdXJsPSdodHRw
Oi8vY29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvJywKLSAgICAgIHZlcnNpb249JzAuNC45
LjInLAotICAgICAgKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvY29uZmln
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L3Rlc3QvY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWFhYjhjMDRj
ZWRlNTY4ZmM2ZGU1ZGJhYmFiM2FhMzUyZDZjOWZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC90ZXN0L2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICsw
LDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvbmZpZ3VyYXRpb24gZm9yIHRlc3Rpbmcu
Ci0KLVRlc3QgZmlsZXMgc2hvdWxkIGltcG9ydCB0aGlzIG1vZHVsZSBiZWZvcmUgbW9kX3B5d2Vi
c29ja2V0LgotIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLQotIyBBZGQgdGhlIHBh
cmVudCBkaXJlY3RvcnkgdG8gc3lzLnBhdGggdG8gZW5hYmxlIGltcG9ydGluZyBtb2RfcHl3ZWJz
b2NrZXQuCi1zeXMucGF0aCArPSBbb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18p
WzBdLCAnLi4nKV0KLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L21vY2sucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVz
dC9tb2NrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg1ZDY0NDM5ODNlNmIy
NzdhYjkxNDBjZWRiNTYyMDZmZDk1N2E4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9w
eXdlYnNvY2tldC90ZXN0L21vY2sucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDUgKzAsMCBAQAot
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTW9ja3MgZm9yIHRlc3RpbmcuCi0iIiIKLQotCi1pbXBv
cnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLQotCi1jbGFzcyBfTW9ja0Nvbm5CYXNlKG9iamVj
dCk6Ci0gICAgIiIiQmFzZSBjbGFzcyBvZiBtb2NrcyBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBf
Y29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4g
dG8gYSAobW9jaykgbXBfY29ubi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToK
LSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YSA9IFtdCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0
YSk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUu
IiIiCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiB3
cml0dGVuX2RhdGEoc2VsZik6Ci0gICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRoaXMg
bW9jay4iIiIKLQotICAgICAgICByZXR1cm4gJycuam9pbihzZWxmLl93cml0ZV9kYXRhKQotCi0K
LWNsYXNzIE1vY2tDb25uKF9Nb2NrQ29ubkJhc2UpOgotICAgICIiIk1vY2sgZm9yIG1vZF9weXRo
b24uYXBhY2hlLm1wX2Nvbm4uCi0KLSAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lmeSB3
aGF0IHNob3VsZCBiZSByZWFkIGZyb20gYSAobW9jaykgbXBfY29ubiBhcwotICAgIHdlbGwgYXMg
dG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGl0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIHJlYWRfZGF0YSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2Uu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJlYWRfZGF0YTogYnl0ZXMgdGhhdCBzaG91
bGQgYmUgcmV0dXJuZWQgd2hlbiByZWFkKiBtZXRob2RzIGFyZQotICAgICAgICAgICAgY2FsbGVk
LgotICAgICAgICAiIiIKLQotICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCi0g
ICAgICAgIHNlbGYuX3JlYWRfZGF0YSA9IHJlYWRfZGF0YQotICAgICAgICBzZWxmLl9yZWFkX3Bv
cyA9IDAKLQotICAgIGRlZiByZWFkbGluZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9k
X3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkbGluZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9y
ZWFkX3BvcyA+PSBsZW4oc2VsZi5fcmVhZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwot
ICAgICAgICBlbmRfaW5kZXggPSBzZWxmLl9yZWFkX2RhdGEuZmluZCgnXG4nLCBzZWxmLl9yZWFk
X3BvcykgKyAxCi0gICAgICAgIGlmIG5vdCBlbmRfaW5kZXg6Ci0gICAgICAgICAgICBlbmRfaW5k
ZXggPSBsZW4oc2VsZi5fcmVhZF9kYXRhKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90
byhlbmRfaW5kZXgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgotICAgICAgICAiIiJP
dmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCi0KLSAgICAgICAgaWYg
c2VsZi5fcmVhZF9wb3MgPj0gbGVuKHNlbGYuX3JlYWRfZGF0YSk6Ci0gICAgICAgICAgICByZXR1
cm4gJycKLSAgICAgICAgZW5kX2luZGV4ID0gbWluKGxlbihzZWxmLl9yZWFkX2RhdGEpLCBzZWxm
Ll9yZWFkX3BvcyArIGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfdXBfdG8oZW5k
X2luZGV4KQotCi0gICAgZGVmIF9yZWFkX3VwX3RvKHNlbGYsIGVuZF9pbmRleCk6Ci0gICAgICAg
IGxpbmUgPSBzZWxmLl9yZWFkX2RhdGFbc2VsZi5fcmVhZF9wb3M6ZW5kX2luZGV4XQotICAgICAg
ICBzZWxmLl9yZWFkX3BvcyA9IGVuZF9pbmRleAotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNs
YXNzIE1vY2tCbG9ja2luZ0Nvbm4oX01vY2tDb25uQmFzZSk6Ci0gICAgIiIiQmxvY2tpbmcgbW9j
ayBmb3IgbW9kX3B5dGhvbi5hcGFjaGUubXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0
cyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFz
Ci0gICAgd2VsbCBhcyB0byBjaGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCi0gICAgQ2FsbGVy
cyBvZiByZWFkKiBtZXRob2RzIHdpbGwgYmxvY2sgaWYgdGhlcmUgaXMgbm8gYnl0ZXMgYXZhaWxh
YmxlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBfTW9ja0Nv
bm5CYXNlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3F1ZXVlID0gUXVldWUuUXVldWUo
KQotCi0gICAgZGVmIHJlYWRsaW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0
aG9uLmFwYWNoZS5tcF9jb25uLnJlYWRsaW5lLiIiIgotICAgICAgICBsaW5lID0gJycKLSAgICAg
ICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGMgPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAgICAg
ICAgICAgbGluZSArPSBjCi0gICAgICAgICAgICBpZiBjID09ICdcbic6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIGxpbmUKLQotICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIi
Ik92ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBk
YXRhID0gJycKLSAgICAgICAgZm9yIHVudXNlZCBpbiByYW5nZShsZW5ndGgpOgotICAgICAgICAg
ICAgZGF0YSArPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAg
ZGVmIHB1dF9ieXRlcyhzZWxmLCBieXRlcyk6Ci0gICAgICAgICIiIlB1dCBieXRlcyB0byBiZSBy
ZWFkIGZyb20gdGhpcyBtb2NrLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBieXRlczog
Ynl0ZXMgdG8gYmUgcmVhZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZm9yIGJ5dGUgaW4gYnl0
ZXM6Ci0gICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoYnl0ZSkKLQotCi1jbGFzcyBNb2NrVGFi
bGUoZGljdCk6Ci0gICAgIiIiTW9jayB0YWJsZS4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRo
b24gbXBfdGFibGUuIE5vdGUgdGhhdCBvbmx5IHRoZSBtZXRob2RzIHVzZWQgYnkKLSAgICB0ZXN0
cyBhcmUgb3ZlcnJpZGRlbi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb3B5
X2Zyb209e30pOgotICAgICAgICBpZiBpc2luc3RhbmNlKGNvcHlfZnJvbSwgZGljdCk6Ci0gICAg
ICAgICAgICBjb3B5X2Zyb20gPSBjb3B5X2Zyb20uaXRlbXMoKQotICAgICAgICBmb3Iga2V5LCB2
YWx1ZSBpbiBjb3B5X2Zyb206Ci0gICAgICAgICAgICBzZWxmLl9fc2V0aXRlbV9fKGtleSwgdmFs
dWUpCi0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgcmV0dXJuIHN1
cGVyKE1vY2tUYWJsZSwgc2VsZikuX19nZXRpdGVtX18oa2V5Lmxvd2VyKCkpCi0KLSAgICBkZWYg
X19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6Ci0gICAgICAgIHN1cGVyKE1vY2tUYWJsZSwg
c2VsZikuX19zZXRpdGVtX18oa2V5Lmxvd2VyKCksIHZhbHVlKQotCi0gICAgZGVmIGdldChzZWxm
LCBrZXksIGRlZl92YWx1ZT1Ob25lKToKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwg
c2VsZikuZ2V0KGtleS5sb3dlcigpLCBkZWZfdmFsdWUpCi0KLQotY2xhc3MgTW9ja1JlcXVlc3Qo
b2JqZWN0KToKLSAgICAiIiJNb2NrIHJlcXVlc3QuCi0KLSAgICBUaGlzIG1pbWljcyBtb2RfcHl0
aG9uIHJlcXVlc3QuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpPU5vbmUs
IGhlYWRlcnNfaW49e30sIGNvbm5lY3Rpb249Tm9uZSwKLSAgICAgICAgICAgICAgICAgaXNfaHR0
cHM9RmFsc2UpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJndW1lbnRzOgotICAgICAgICAgICAgdXJpOiBVUkkgb2YgdGhlIHJlcXVlc3QuCi0gICAgICAg
ICAgICBoZWFkZXJzX2luOiBSZXF1ZXN0IGhlYWRlcnMuCi0gICAgICAgICAgICBjb25uZWN0aW9u
OiBDb25uZWN0aW9uIHVzZWQgZm9yIHRoZSByZXF1ZXN0LgotICAgICAgICAgICAgaXNfaHR0cHM6
IFdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLgotCi0gICAgICAgIFNlZSB0aGUgZG9j
dW1lbnQgb2YgbW9kX3B5dGhvbiBSZXF1ZXN0IGZvciBkZXRhaWxzLgotICAgICAgICAiIiIKLSAg
ICAgICAgc2VsZi51cmkgPSB1cmkKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlv
bgotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBNb2NrVGFibGUoaGVhZGVyc19pbikKLSAgICAg
ICAgIyBzZWxmLmlzX2h0dHBzXyBuZWVkcyB0byBiZSBhY2Nlc3NpYmxlIGZyb20gdGVzdHMuICBU
byBhdm9pZCBuYW1lCi0gICAgICAgICMgY29uZmxpY3Qgd2l0aCBzZWxmLmlzX2h0dHBzKCksIGl0
IGlzIG5hbWVkIGFzIHN1Y2guCi0gICAgICAgIHNlbGYuaXNfaHR0cHNfID0gaXNfaHR0cHMKLQot
ICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHdoZXRoZXIgdGhpcyBy
ZXF1ZXN0IGlzIG92ZXIgU1NMLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5pc19odHRwc18KLQot
Ci1jbGFzcyBNb2NrRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIk1vY2sgZm9yIGRpc3BhdGNo
LkRpc3BhdGNoZXIuIiIiCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5f
Y29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNv
bm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC90ZXN0L3J1bl9hbGwucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC9ydW5fYWxsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzODg1NjE4Y2EzMTU4ZThjMGNkZjkwOWUxYjZlMGVlZmQ4NTVhM2I4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw2NCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJp
Z2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIlJ1biBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgotIiIi
Ci0KLQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCB1bml0dGVzdAotCi0KLV9URVNUX01P
RFVMRV9QQVRURVJOID0gcmUuY29tcGlsZShyJ14odGVzdF8uKylcLnB5JCcpCi0KLQotZGVmIF9s
aXN0X3Rlc3RfbW9kdWxlcyhkaXJlY3RvcnkpOgotICAgIG1vZHVsZV9uYW1lcyA9IFtdCi0gICAg
Zm9yIGZpbGVuYW1lIGluIG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKLSAgICAgICAgbWF0Y2ggPSBf
VEVTVF9NT0RVTEVfUEFUVEVSTi5zZWFyY2goZmlsZW5hbWUpCi0gICAgICAgIGlmIG1hdGNoOgot
ICAgICAgICAgICAgbW9kdWxlX25hbWVzLmFwcGVuZChtYXRjaC5ncm91cCgxKSkKLSAgICByZXR1
cm4gbW9kdWxlX25hbWVzCi0KLQotZGVmIF9zdWl0ZSgpOgotICAgIGxvYWRlciA9IHVuaXR0ZXN0
LlRlc3RMb2FkZXIoKQotICAgIHJldHVybiBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAotICAg
ICAgICAgICAgX2xpc3RfdGVzdF9tb2R1bGVzKG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9f
ZmlsZV9fKVswXSwgJy4nKSkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1
bml0dGVzdC5tYWluKGRlZmF1bHRUZXN0PSdfc3VpdGUnKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDMyMjhkZjUzMTQ1YzlmN2M5YzYyNmMxMTQ0ZmFh
NDBjNGEyNTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9kaXNwYXRjaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI0NCArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBkaXNw
YXRjaCBtb2R1bGUuIiIiCi0KLQotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1pbXBv
cnQgY29uZmlnICAjIFRoaXMgbXVzdCBiZSBpbXBvcnRlZCBiZWZvcmUgbW9kX3B5d2Vic29ja2V0
LgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi0KLWltcG9ydCBtb2NrCi0K
LQotX1RFU1RfSEFORExFUlNfRElSID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLnNw
bGl0KF9fZmlsZV9fKVswXSwgJ3Rlc3RkYXRhJywgJ2hhbmRsZXJzJykKLQotX1RFU1RfSEFORExF
UlNfU1VCX0RJUiA9IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInKQotCi1j
bGFzcyBEaXNwYXRjaGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3Rfbm9y
bWFsaXplX3BhdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNw
YXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnL2EvYicpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3BhdGgoJ1xcYVxcYicpKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJlcGxhY2UoJ1xc
JywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFsaXplX3Bh
dGgoJy9hL2MvLi4vYicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0
aCgnYWJjJykucmVwbGFjZSgnXFwnLCAnLycpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnYWJjJykpCi0KLSAgICBkZWYgdGVzdF9jb252ZXJ0ZXIo
c2VsZik6Ci0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9wYXRoX3RvX3Jlc291cmNlX2Nv
bnZlcnRlcignL2EvYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVy
KCcvYS9iL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9jL2gnLCBjb252
ZXJ0ZXIoJy9hL2IvYy9oX3dzaC5weScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUs
IGNvbnZlcnRlcignL2EvYi9oLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
Y29udmVydGVyKCdhL2IvaF93c2gucHknKSkKLQotICAgICAgICBjb252ZXJ0ZXIgPSBkaXNwYXRj
aC5fcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJ2EvYicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy9oJywgY29udmVydGVyKCdhL2IvaF93c2gucHknKSkKLQotICAgICAgICBjb252ZXJ0
ZXIgPSBkaXNwYXRjaC5fcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJy9hL2IvLy8nKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcignL2EvYi9oX3dzaC5weScpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcignL2EvYi8uLi9iL2hfd3No
LnB5JykpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX3BhdGhfdG9fcmVzb3VyY2Vf
Y29udmVydGVyKCcvYS8uLi9hL2IvLi4vYi8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
aCcsIGNvbnZlcnRlcignL2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRp
c3BhdGNoLl9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihyJ1xhXGInKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvaCcsIGNvbnZlcnRlcihyJ1xhXGJcaF93c2gucHknKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIocicvYS9iL2hfd3NoLnB5JykpCi0KLSAg
ICBkZWYgdGVzdF9zb3VyY2VfZmlsZV9wYXRocyhzZWxmKToKLSAgICAgICAgcGF0aHMgPSBsaXN0
KGRpc3BhdGNoLl9zb3VyY2VfZmlsZV9wYXRocyhfVEVTVF9IQU5ETEVSU19ESVIpKQotICAgICAg
ICBwYXRocy5zb3J0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg3LCBsZW4ocGF0aHMpKQot
ICAgICAgICBleHBlY3RlZF9wYXRocyA9IFsKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ29yaWdpbl9jaGVja193c2gucHknKSwKLSAg
ICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkn
KSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3Vi
JywgJ25vbl9jYWxsYWJsZV93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywgJ3BsYWluX3dzaC5weScpLAotICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHknKSwKLSAgICAgICAg
ICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSwKLSAgICAg
ICAgICAgICAgICBdCi0gICAgICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3Rl
ZF9wYXRocywgcGF0aHMpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwg
YWN0dWFsKQotCi0gICAgZGVmIHRlc3Rfc291cmNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEVycm9yLCBkaXNwYXRjaC5fc291cmNlLCAnJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFcnJvciwgZGlzcGF0Y2gu
X3NvdXJjZSwgJ2RlZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRpc3Bh
dGNoRXJyb3IsIGRpc3BhdGNoLl9zb3VyY2UsICcxLzAnKQotICAgICAgICBzZWxmLmZhaWxVbmxl
c3MoZGlzcGF0Y2guX3NvdXJjZSgKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOnBhc3NcbicKLSAgICAgICAgICAgICAgICAnZGVmIHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKLQotICAgIGRlZiB0ZXN0
X3NvdXJjZV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRp
c3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICB3YXJuaW5ncyA9IGRp
c3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgd2FybmluZ3Muc29ydCgpCi0gICAg
ICAgIGV4cGVjdGVkX3dhcm5pbmdzID0gWwotICAgICAgICAgICAgICAgIChvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3NoLnB5JykgKwotICAgICAgICAgICAgICAgICAn
OiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAg
ICAgICAgICAgICAob3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnbm9uX2NhbGxhYmxlX3dzaC5weScpICsKLSAgICAg
ICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgbm90IGNhbGxh
YmxlLicpLAotICAgICAgICAgICAgICAgIChvcy5wYXRoLmpvaW4oX1RFU1RfSEFORExFUlNfRElS
LCAnc3ViJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3cm9uZ19oYW5kc2hha2Vf
c2lnX3dzaC5weScpICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBhdGguam9p
bihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSArCi0gICAgICAgICAgICAgICAgICc6IHdl
Yl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBpcyBub3QgZGVmaW5lZC4nKSwKLSAgICAgICAgICAgICAg
ICBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDQsIGxlbih3YXJuaW5ncykpCi0gICAgICAg
IGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF93YXJuaW5ncywgd2FybmluZ3Mp
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAg
IGRlZiB0ZXN0X2RvX2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9
IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBy
ZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2Ug
PSAnL29yaWdpbl9jaGVjaycKLSAgICAgICAgcmVxdWVzdC53c19vcmlnaW4gPSAnaHR0cDovL2V4
YW1wbGUuY29tJwotICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0
KSAgIyBNdXN0IG5vdCByYWlzZSBleGNlcHRpb24uCi0KLSAgICAgICAgcmVxdWVzdC53c19vcmln
aW4gPSAnaHR0cDovL2JhZC5leGFtcGxlLmNvbScKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
RXhjZXB0aW9uLCBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZSwgcmVxdWVzdCkKLQotICAg
IGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNw
YXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVz
dCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAg
ICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICByZXF1ZXN0
LndzX3Byb3RvY29sID0gJ3AxJwotCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlz
IGNhbGxlZCBmb3IgL29yaWdpbl9jaGVjaywgcDEnLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0g
bW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycpKQotICAgICAgICBy
ZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvcGxhaW4nCi0gICAgICAgIHJlcXVlc3Qud3NfcHJv
dG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3Ig
L3N1Yi9wbGFpbiwgTm9uZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1
ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVz
b3VyY2UgPSAnL3N1Yi9wbGFpbj8nCi0gICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25l
Ci0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj8s
IE5vbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0
aW9uPW1vY2suTW9ja0Nvbm4oJycpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9z
dWIvcGxhaW4/cT12JwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotICAgICAg
ICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yIC9zdWIvcGxhaW4/cT12LCBOb25l
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhX25vX2hhbmRsZXIoc2VsZik6Ci0g
ICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJ
UiwgTm9uZSkKLSAgICAgICAgZm9yIHJlc291cmNlIGluIFsnL2JsYW5rJywgJy9zdWIvbm9uX2Nh
bGxhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnL3N1Yi9ub193c2hfYXRfdGhlX2Vu
ZCcsICcvZG9lcy9ub3QvZXhpc3QnXToKLSAgICAgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tS
ZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgICAgICByZXF1ZXN0
LndzX3Jlc291cmNlID0gcmVzb3VyY2UKLSAgICAgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wg
PSAncDInCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFu
c2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkKLSAgICAgICAg
ICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEVycm9yLCBlOgotICAgICAgICAgICAgICAgIHNl
bGYuZmFpbFVubGVzcyhzdHIoZSkuZmluZCgnTm8gaGFuZGxlcicpICE9IC0xKQotICAgICAgICAg
ICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQotCi0gICAg
ZGVmIHRlc3RfdHJhbnNmZXJfZGF0YV9oYW5kbGVyX2V4Y2VwdGlvbihzZWxmKToKLSAgICAgICAg
ZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25l
KQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9j
a0Nvbm4oJycpKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9zdWIvZXhjZXB0aW9u
X2luX3RyYW5zZmVyJwotICAgICAgICByZXF1ZXN0LndzX3Byb3RvY29sID0gJ3AzJwotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAg
ICAgICAgICAgIHNlbGYuZmFpbCgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAg
ICAgICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUpLmZpbmQoJ0ludGVudGlvbmFsJykgIT0gLTEp
Ci0KLSAgICBkZWYgdGVzdF9zY2FuX2RpcihzZWxmKToKLSAgICAgICAgZGlzcCA9IGRpc3BhdGNo
LkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDMsIGxlbihkaXNwLl9oYW5kbGVycykpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhk
aXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvb3JpZ2luX2NoZWNrJykpCi0gICAgICAgIHNlbGYuZmFp
bFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zl
cicpKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL3N1
Yi9wbGFpbicpKQotCi0gICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyKHNlbGYpOgotICAgICAgICBk
aXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIF9URVNUX0hBTkRM
RVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRs
ZXJzKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL29yaWdp
bl9jaGVjaycpKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tl
eSgnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInKSkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNz
KGRpc3AuX2hhbmRsZXJzLmhhc19rZXkoJy9zdWIvcGxhaW4nKSkKLQotICAgIGRlZiB0ZXN0X3Nj
YW5fc3ViX2Rpcl9hc19yb290KHNlbGYpOgotICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0
Y2hlcihfVEVTVF9IQU5ETEVSU19TVUJfRElSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfVEVTVF9IQU5ETEVSU19TVUJfRElSKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIsIGxlbihkaXNwLl9oYW5kbGVycykpCi0gICAgICAgIHNlbGYuZmFpbElmKGRpc3AuX2hhbmRs
ZXJzLmhhc19rZXkoJy9vcmlnaW5fY2hlY2snKSkKLSAgICAgICAgc2VsZi5mYWlsSWYoZGlzcC5f
aGFuZGxlcnMuaGFzX2tleSgnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInKSkKLSAgICAgICAg
c2VsZi5mYWlsSWYoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL3N1Yi9wbGFpbicpKQotICAgICAg
ICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL2V4Y2VwdGlvbl9pbl90
cmFuc2ZlcicpKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tl
eSgnL3BsYWluJykpCi0KLSAgICBkZWYgdGVzdF9zY2FuX2Rpcl9tdXN0X3VuZGVyX3Jvb3Qoc2Vs
Zik6Ci0gICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIoJ2EvYicsICdhL2IvYycpICAjIE9LCi0g
ICAgICAgIGRpc3BhdGNoLkRpc3BhdGNoZXIoJ2EvYi8vLycsICdhL2InKSAgIyBPSwotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEVycm9yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaGVyLCAnYS9iL2MnLCAnYS9iJykKLQotICAg
IGRlZiB0ZXN0X3Jlc291cmNlX3BhdGhfYWxpYXMoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNw
YXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgZGlzcC5h
ZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygnLycsICcvb3JpZ2luX2NoZWNrJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCg0LCBsZW4oZGlzcC5faGFuZGxlcnMpKQotICAgICAgICBzZWxmLmZhaWxV
bmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL29yaWdpbl9jaGVjaycpKQotICAgICAgICBz
ZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL3N1Yi9leGNlcHRpb25faW5f
dHJhbnNmZXInKSkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKGRpc3AuX2hhbmRsZXJzLmhhc19r
ZXkoJy9zdWIvcGxhaW4nKSkKLSAgICAgICAgc2VsZi5mYWlsVW5sZXNzKGRpc3AuX2hhbmRsZXJz
Lmhhc19rZXkoJy8nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0
Y2hFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0
aF9hbGlhcywgJy9hbGlhcycsICcvbm90LWV4aXN0JykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19t
YWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9oYW5kc2hha2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZS5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOGJmMDdiZTgzYmE0ZmY5MzUwNzUyYWNmYWU3YjE5ODVmMWI5
NzIwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X2hhbmRzaGFrZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDUxMyArMCwwIEBACi0jIS91c3IvYmlu
L2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBoYW5kc2hh
a2UgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgY29uZmlnICAjIFRo
aXMgbXVzdCBiZSBpbXBvcnRlZCBiZWZvcmUgbW9kX3B5d2Vic29ja2V0LgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotCi1pbXBvcnQgbW9jawotCi0KLV9HT09EX1JFUVVF
U1QgPSAoCi0gICAgODAsCi0gICAgJy9kZW1vJywKLSAgICB7Ci0gICAgICAgICdVcGdyYWRlJzon
V2ViU29ja2V0JywKLSAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKLSAgICAgICAgJ0hv
c3QnOidleGFtcGxlLmNvbScsCi0gICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20n
LAotICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxlJywKLSAgICB9Ci0pCi0KLV9H
T09EX1JFU1BPTlNFX0RFRkFVTFRfUE9SVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2Nr
ZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicK
LSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nCi0gICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0
dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1dlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFt
cGxlLmNvbS9kZW1vXHJcbicKLSAgICAnV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwot
ICAgICdcclxuJykKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFID0gKAotICAgICdIVFRQLzEuMSAx
MDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJT
b2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnV2ViU29ja2V0
LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAnV2ViU29ja2V0LUxvY2F0aW9u
OiB3c3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnV2ViU29ja2V0LVByb3RvY29sOiBz
YW1wbGVcclxuJwotICAgICdcclxuJykKLQotX0dPT0RfUkVRVUVTVF9OT05ERUZBVUxUX1BPUlQg
PSAoCi0gICAgODA4MSwKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ1VwZ3JhZGUnOidX
ZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAotICAgICAgICAnSG9z
dCc6J2V4YW1wbGUuY29tOjgwODEnLAotICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUu
Y29tJywKLSAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0gICAgfQotKQot
Ci1fR09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQgPSAoCi0gICAgJ0hUVFAvMS4xIDEwMSBX
ZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdXZWJTb2NrZXQtT3Jp
Z2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwotICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdz
Oi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAgICAnV2ViU29ja2V0LVByb3RvY29sOiBz
YW1wbGVcclxuJwotICAgICdcclxuJykKLQotX0dPT0RfUkVTUE9OU0VfU0VDVVJFX05PTkRFRiA9
ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicK
LSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxy
XG4nCi0gICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAg
J1dlYlNvY2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb206ODA4MS9kZW1vXHJcbicKLSAg
ICAnV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJykKLQotX0dPT0Rf
UkVRVUVTVF9OT19QUk9UT0NPTCA9ICgKLSAgICA4MCwKLSAgICAnL2RlbW8nLAotICAgIHsKLSAg
ICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3Jh
ZGUnLAotICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKLSAgICAgICAgJ09yaWdpbic6J2h0
dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfQotKQotCi1fR09PRF9SRVNQT05TRV9OT19QUk9UT0NP
TCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJc
bicKLSAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKLSAgICAnQ29ubmVjdGlvbjogVXBncmFk
ZVxyXG4nCi0gICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0g
ICAgJ1dlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAn
XHJcbicpCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9PUFRJT05BTF9IRUFERVJTID0gKAotICAgIDgw
LAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCi0g
ICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCi0gICAgICAgICdIb3N0JzonZXhhbXBsZS5j
b20nLAotICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgJ1dl
YlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0gICAgICAgICdBS2V5JzonQVZhbHVlJywKLSAg
ICAgICAgJ0VtcHR5VmFsdWUnOicnLAotICAgIH0KLSkKLQotX0JBRF9SRVFVRVNUUyA9ICgKLSAg
ICAoICAjIEhUVFAgcmVxdWVzdAotICAgICAgICA4MCwKLSAgICAgICAgJy9kZW1vJywKLSAgICAg
ICAgewotICAgICAgICAgICAgJ0hvc3QnOid3d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAn
VXNlci1BZ2VudCc6J01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1hYyBPUyBYIDEw
LjU7JwotICAgICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMpIEdlY2tv
LzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgICAgJyBHVEI2
IEdUQkEnLAotICAgICAgICAgICAgJ0FjY2VwdCc6J3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRt
bCt4bWwsYXBwbGljYXRpb24veG1sO3E9MC45LCcKLSAgICAgICAgICAgICAgICAgICAgICcqLyo7
cT0wLjgnLAotICAgICAgICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6J2VuLXVzLGVuO3E9MC41JywK
LSAgICAgICAgICAgICdBY2NlcHQtRW5jb2RpbmcnOidnemlwLGRlZmxhdGUnLAotICAgICAgICAg
ICAgJ0FjY2VwdC1DaGFyc2V0JzonSVNPLTg4NTktMSx1dGYtODtxPTAuNywqO3E9MC43JywKLSAg
ICAgICAgICAgICdLZWVwLUFsaXZlJzonMzAwJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzon
a2VlcC1hbGl2ZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICggICMgTWlzc2luZyBVcGdyYWRl
Ci0gICAgICAgIDgwLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAn
Q29ubmVjdGlvbic6J1VwZ3JhZGUnLAotICAgICAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbScs
Ci0gICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgICAg
ICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAo
ICAjIFdyb25nIFVwZ3JhZGUKLSAgICAgICAgODAsCi0gICAgICAgICcvZGVtbycsCi0gICAgICAg
IHsKLSAgICAgICAgICAgICdVcGdyYWRlJzonTm9uV2ViU29ja2V0JywKLSAgICAgICAgICAgICdD
b25uZWN0aW9uJzonVXBncmFkZScsCi0gICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywK
LSAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICAgICAg
J1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCi0gICAgICAgIH0KLSAgICApLAotICAgICgg
ICMgRW1wdHkgV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgIDgwLAotICAgICAgICAnL2RlbW8n
LAotICAgICAgICB7Ci0gICAgICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCi0gICAgICAg
ICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAotICAgICAgICAgICAgJ0hvc3QnOidleGFtcGxl
LmNvbScsCi0gICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAg
ICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOicnLAotICAgICAgICB9Ci0gICAgKSwKLSAgICAo
ICAjIFdyb25nIHBvcnQgbnVtYmVyIGZvcm1hdAotICAgICAgICA4MCwKLSAgICAgICAgJy9kZW1v
JywKLSAgICAgICAgewotICAgICAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAg
ICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKLSAgICAgICAgICAgICdIb3N0JzonZXhhbXBs
ZS5jb206MHg1MCcsCi0gICAgICAgICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywK
LSAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1wbGUnLAotICAgICAgICB9Ci0g
ICAgKSwKLSAgICAoICAjIEhlYWRlci9jb25uZWN0aW9uIHBvcnQgbWlzbWF0Y2gKLSAgICAgICAg
ODA4MCwKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAgJ1VwZ3JhZGUn
OidXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKLSAgICAg
ICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ09yaWdpbic6J2h0dHA6
Ly9leGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzonc2FtcGxl
JywKLSAgICAgICAgfQotICAgICksCi0gICAgKCAgIyBJbGxlZ2FsIFdlYlNvY2tldC1Qcm90b2Nv
bAotICAgICAgICA4MCwKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAgICAg
J1VwZ3JhZGUnOidXZWJTb2NrZXQnLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRl
JywKLSAgICAgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ09yaWdp
bic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29s
JzonaWxsZWdhbFx4MDlwcm90b2NvbCcsCi0gICAgICAgIH0KLSAgICApLAotKQotCi1fU1RSSUNU
TFlfR09PRF9SRVFVRVNUUyA9ICgKLSAgICAoCi0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFc
clxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVj
dGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAg
ICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdcclxuJywK
LSAgICApLAotICAgICggICMgV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgICdHRVQgL2RlbW8g
SFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAg
ICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21c
clxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAg
ICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAg
KSwKLSAgICAoICAjIFdlYlNvY2tldC1Qcm90b2NvbCBhbmQgQ29va2llCi0gICAgICAgICdHRVQg
L2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAot
ICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBs
ZS5jb21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0g
ICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nLAotICAgICAgICAnQ29va2ll
OiB4eXpcclxuJwotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAjIENvb2tpZQotICAg
ICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2Nr
ZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hv
c3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNv
bVxyXG4nLAotICAgICAgICAnQ29va2llOiBhYmMveHl6XHJcbicKLSAgICAgICAgJ0Nvb2tpZTI6
ICRWZXJzaW9uPTFcclxuJwotICAgICAgICAnQ29va2llOiBhYmNcclxuJwotICAgICAgICAnXHJc
bicsCi0gICAgKSwKLSAgICAoCi0gICAgICAgICdHRVQgLyBIVFRQLzEuMVxyXG4nLAotICAgICAg
ICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRl
XHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2lu
OiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0pCi0K
LV9OT1RfU1RSSUNUTFlfR09PRF9SRVFVRVNUUyA9ICgKLSAgICAoICAjIEV4dHJhIHNwYWNlIGFm
dGVyIEdFVAotICAgICAgICAnR0VUICAvZGVtbyBIVFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBn
cmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbics
Ci0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnT3JpZ2luOiBodHRw
Oi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBS
ZXNvdXJjZSBuYW1lIGRvZXNuJ3Qgc3RhdCB3aXRoICcvJwotICAgICAgICAnR0VUIGRlbW8gSFRU
UC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAotICAgICAgICAn
Q29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxu
JywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdc
clxuJywKLSAgICApLAotICAgICggICMgTm8gc3BhY2UgYWZ0ZXIgOgotICAgICAgICAnR0VUIC9k
ZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOldlYlNvY2tldFxyXG4nLAotICAg
ICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5j
b21cclxuJywKLSAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAg
ICAgICdcclxuJywKLSAgICApLAotICAgICggICMgTG93ZXIgY2FzZSBVcGdyYWRlIGhlYWRlcgot
ICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICd1cGdyYWRlOiBXZWJT
b2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAg
J0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nLAotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAjIENvbm5lY3Rpb24g
Y29tZXMgYmVmb3JlIFVwZ3JhZGUKLSAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAot
ICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2Vi
U29ja2V0XHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAn
T3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ1xyXG4nLAotICAgICks
Ci0gICAgKCAgIyBPcmlnaW4gY29tZXMgYmVmb3JlIEhvc3QKLSAgICAgICAgJ0dFVCAvZGVtbyBI
VFRQLzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAg
ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFt
cGxlLmNvbVxyXG4nLAotICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAg
J1xyXG4nLAotICAgICksCi0gICAgKCAgIyBIb3N0IGNvbnRpbnVlZCB0byB0aGUgbmV4dCBsaW5l
Ci0gICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKLSAgICAgICAgJ1VwZ3JhZGU6IFdl
YlNvY2tldFxyXG4nLAotICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAotICAgICAg
ICAnSG9zdDogZXhhbXBsZVxyXG4nLAotICAgICAgICAnIC5jb21cclxuJywKLSAgICAgICAgJ09y
aWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdcclxuJywKLSAgICApLAot
ICAgICggIyBDb29raWUgY29tZXMgYmVmb3JlIFdlYlNvY2tldC1Qcm90b2NvbAotICAgICAgICAn
R0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxu
JywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4
YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4n
LAotICAgICAgICAnQ29va2llOiB4eXpcclxuJwotICAgICAgICAnV2ViU29ja2V0LVByb3RvY29s
OiBzYW1wbGVcclxuJywKLSAgICAgICAgJ1xyXG4nLAotICAgICksCi0gICAgKCAgIyBVbmtub3du
IGhlYWRlcgotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdVcGdy
YWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywK
LSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0dHA6
Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29udGVudC1UeXBlOiB0ZXh0L2h0bWxcclxu
JwotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSAgICAoICAjIENvb2tpZSB3aXRoIGNvbnRpbnVh
dGlvbiBsaW5lcwotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCi0gICAgICAgICdV
cGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxu
JywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAgICAgICdPcmlnaW46IGh0
dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29va2llOiB4eXpcclxuJywKLSAgICAg
ICAgJyBhYmNcclxuJywKLSAgICAgICAgJyBkZWZnXHJcbicsCi0gICAgICAgICdcclxuJywKLSAg
ICApLAotICAgICggICMgV3JvbmctY2FzZSBjb29raWUKLSAgICAgICAgJ0dFVCAvZGVtbyBIVFRQ
LzEuMVxyXG4nLAotICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCi0gICAgICAgICdD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCi0gICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4n
LAotICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKLSAgICAgICAgJ2Nv
b2tpZTogYWJjL3h5elxyXG4nCi0gICAgICAgICdcclxuJywKLSAgICApLAotICAgICggICMgQ29v
a2llLCBubyBzcGFjZSBhZnRlciBjb2xvbgotICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJc
bicsCi0gICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKLSAgICAgICAgJ0Nvbm5lY3Rp
b246IFVwZ3JhZGVcclxuJywKLSAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCi0gICAg
ICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAotICAgICAgICAnQ29va2llOmFi
Yy94eXpcclxuJwotICAgICAgICAnXHJcbicsCi0gICAgKSwKLSkKLQotCi1kZWYgX2NyZWF0ZV9y
ZXF1ZXN0KHJlcXVlc3RfZGVmKToKLSAgICBjb25uID0gbW9jay5Nb2NrQ29ubignJykKLSAgICBj
b25uLmxvY2FsX2FkZHIgPSAoJzAuMC4wLjAnLCByZXF1ZXN0X2RlZlswXSkKLSAgICByZXR1cm4g
bW9jay5Nb2NrUmVxdWVzdCgKLSAgICAgICAgICAgIHVyaT1yZXF1ZXN0X2RlZlsxXSwKLSAgICAg
ICAgICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWZbMl0sCi0gICAgICAgICAgICBjb25uZWN0aW9u
PWNvbm4pCi0KLQotZGVmIF9jcmVhdGVfZ2V0X21lbW9yaXplZF9saW5lcyhsaW5lcyk6Ci0gICAg
ZGVmIGdldF9tZW1vcml6ZWRfbGluZXMoKToKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0gICAgcmV0
dXJuIGdldF9tZW1vcml6ZWRfbGluZXMKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0c193aXRoX2xp
bmVzKHJlcXVlc3RfbGluZXNfc2V0KToKLSAgICByZXF1ZXN0cyA9IFtdCi0gICAgZm9yIGxpbmVz
IGluIHJlcXVlc3RfbGluZXNfc2V0OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KF9HT09EX1JFUVVFU1QpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfbWVtb3JpemVk
X2xpbmVzID0gX2NyZWF0ZV9nZXRfbWVtb3JpemVkX2xpbmVzKAotICAgICAgICAgICAgICAgIGxp
bmVzKQotICAgICAgICByZXF1ZXN0cy5hcHBlbmQocmVxdWVzdCkKLSAgICByZXR1cm4gcmVxdWVz
dHMKLQotCi1jbGFzcyBIYW5kc2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVm
IHRlc3RfdmFsaWRhdGVfcHJvdG9jb2woc2VsZik6Ci0gICAgICAgIGhhbmRzaGFrZS5fdmFsaWRh
dGVfcHJvdG9jb2woJ3NhbXBsZScpICAjIHNob3VsZCBzdWNjZWVkLgotICAgICAgICBoYW5kc2hh
a2UuX3ZhbGlkYXRlX3Byb3RvY29sKCdTYW1wbGUnKSAgIyBzaG91bGQgc3VjY2VlZC4KLSAgICAg
ICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCgnc2FtcGxlXHgyMHByb3RvY29sJykgICMg
c2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2woJ3Nh
bXBsZVx4N2Vwcm90b2NvbCcpICAjIHNob3VsZCBzdWNjZWVkLgotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICcnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJy
b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9j
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDE5cHJvdG9jb2wnKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2wsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhoYW5kc2hha2UuSGFuZHNoYWtlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVfcHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICMgIkphcGFuIiBpbiBKYXBhbmVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICB1
J1x1NjVlNVx1NjcyYycpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3RfZGVmYXVsdF9wb3J0
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1Qp
Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hl
cigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JULAotICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnL2RlbW8nLCByZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdodHRwOi8vZXhhbXBsZS5jb20nLCByZXF1ZXN0LndzX29yaWdpbikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnd3M6Ly9leGFtcGxlLmNvbS9kZW1vJywgcmVxdWVzdC53c19s
b2NhdGlvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19w
cm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9zZWN1cmVfZGVmYXVsdF9wb3J0
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1Qp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyID0gKCcwLjAuMC4wJywgNDQz
KQotICAgICAgICByZXF1ZXN0LmlzX2h0dHBzXyA9IFRydWUKLSAgICAgICAgaGFuZHNoYWtlciA9
IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05T
RV9TRUNVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0
LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X25vbmRlZmF1bHRfcG9y
dChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNU
X05PTkRFRkFVTFRfUE9SVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hh
a2VyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
b2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9OT05ERUZBVUxUX1BPUlQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzYW1wbGUnLCByZXF1ZXN0LndzX3Byb3Rv
Y29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9ub25fZGVmYXVsdF9wb3J0
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1Rf
Tk9OREVGQVVMVF9QT1JUKQotICAgICAgICByZXF1ZXN0LmlzX2h0dHBzXyA9IFRydWUKLSAgICAg
ICAgaGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0g
ICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChfR09PRF9SRVNQT05TRV9TRUNVUkVfTk9OREVGLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0ZXN0X2dvb2Rf
cmVxdWVzdF9kZWZhdWx0X25vX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wpCi0gICAgICAgIGhhbmRzaGFr
ZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5k
c2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVT
UE9OU0VfTk9fUFJPVE9DT0wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJl
cXVlc3Qud3NfcHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfb3B0aW9uYWxf
aGVhZGVycyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9S
RVFVRVNUX1dJVEhfT1BUSU9OQUxfSEVBREVSUykKLSAgICAgICAgaGFuZHNoYWtlciA9IGhhbmRz
aGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQVZhbHVlJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bJ0FLZXknXSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmhlYWRl
cnNfaW5bJ0VtcHR5VmFsdWUnXSkKLQotICAgIGRlZiB0ZXN0X2JhZF9yZXF1ZXN0cyhzZWxmKToK
LSAgICAgICAgZm9yIHJlcXVlc3QgaW4gbWFwKF9jcmVhdGVfcmVxdWVzdCwgX0JBRF9SRVFVRVNU
Uyk6Ci0gICAgICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2NrLk1v
Y2tEaXNwYXRjaGVyKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhoYW5kc2hha2Uu
SGFuZHNoYWtlRXJyb3IsIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAgZGVmIHRlc3Rf
c3RyaWN0bHlfZ29vZF9yZXF1ZXN0cyhzZWxmKToKLSAgICAgICAgZm9yIHJlcXVlc3QgaW4gX2Ny
ZWF0ZV9yZXF1ZXN0c193aXRoX2xpbmVzKF9TVFJJQ1RMWV9HT09EX1JFUVVFU1RTKToKLSAgICAg
ICAgICAgIHN0cmljdF9oYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9j
ay5Nb2NrRGlzcGF0Y2hlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBUcnVlKQotICAgICAgICAgICAgc3RyaWN0X2hhbmRzaGFrZXIuZG9f
aGFuZHNoYWtlKCkKLQotICAgIGRlZiB0ZXN0X25vdF9zdHJpY3RseV9nb29kX3JlcXVlc3RzKHNl
bGYpOgotICAgICAgICBmb3IgcmVxdWVzdCBpbiBfY3JlYXRlX3JlcXVlc3RzX3dpdGhfbGluZXMo
X05PVF9TVFJJQ1RMWV9HT09EX1JFUVVFU1RTKToKLSAgICAgICAgICAgIHN0cmljdF9oYW5kc2hh
a2VyID0gaGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVl
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaWN0X2hhbmRzaGFrZXIuZG9faGFu
ZHNoYWtlKQotCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5t
YWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbWVtb3Jpemlu
Z2ZpbGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyZGU3N2JhNWRjNjQxOTg3ODFkZTBmYTIxNmRkMmRmNDZlZGNjMGQwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbWVtb3JpemluZ2Zp
bGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBt
b2R1bGUuIiIiCi0KLQotaW1wb3J0IFN0cmluZ0lPCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0
IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1wb3J0ZWQgYmVmb3JlIG1vZF9weXdlYnNvY2tldC4K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtZW1vcml6aW5nZmlsZQotCi0KLWNsYXNzIFV0
aWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgY2hlY2soc2VsZiwgbWVtb3Jpemlu
Z19maWxlLCBudW1fcmVhZCwgZXhwZWN0ZWRfbGlzdCk6Ci0gICAgICAgIGZvciB1bnVzZWQgaW4g
cmFuZ2UobnVtX3JlYWQpOgotICAgICAgICAgICAgbWVtb3JpemluZ19maWxlLnJlYWRsaW5lKCkK
LSAgICAgICAgYWN0dWFsX2xpc3QgPSBtZW1vcml6aW5nX2ZpbGUuZ2V0X21lbW9yaXplZF9saW5l
cygpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0
dWFsX2xpc3QpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRf
bGlzdCwgYWN0dWFsX2xpc3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwgYWN0dWFsKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAg
ICAgICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3Ry
aW5nSU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScp
KQotICAgICAgICBzZWxmLmNoZWNrKG1lbW9yaXppbmdfZmlsZSwgMywgWydIZWxsb1xuJywgJ1dv
cmxkXG4nLCAnV2VsY29tZSddKQotCi0gICAgZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9saW5lc19s
aW1pdF9tZW1vcml6ZWRfbGluZXMoc2VsZik6Ci0gICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1l
bW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAotICAgICAgICAg
ICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNvbWUnKSwgMikKLSAgICAgICAgc2VsZi5jaGVjayht
ZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbicsICdXb3JsZFxuJ10pCi0KLSAgICBkZWYgdGVz
dF9nZXRfbWVtb3JpemVkX2xpbmVzX2VtcHR5X2ZpbGUoc2VsZik6Ci0gICAgICAgIG1lbW9yaXpp
bmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lP
KAotICAgICAgICAgICAgICAgICcnKSkKLSAgICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2Zp
bGUsIDEwLCBbXSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0
Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF9tb2NrLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjEzN2QxMzg1
ODljZTdiNGFiMDFjMWYzMDljNmI1NWY4ZTMxNjJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDEy
NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIlRlc3RzIGZvciBtb2NrIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0
aHJlYWRpbmcKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgbW9jawotCi0KLWNsYXNzIE1vY2tD
b25uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAg
ICBzZWxmLl9jb25uID0gbW9jay5Nb2NrQ29ubignQUJDXHJcbkRFRkdcclxuXHJcbkhJSksnKQot
Ci0gICAgZGVmIHRlc3RfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0FCQ1xyXG4nLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ0RFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdISUpLJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWRsaW5lKCkpCi0KLSAgICBkZWYgdGVzdF9yZWFkKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVh
ZCg2KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRUZHXHJcblxyXG5ISScsIHNlbGYuX2Nv
bm4ucmVhZCg5KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSksnLCBzZWxmLl9jb25uLnJl
YWQoMTApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25uLnJlYWQoMTAp
KQotCi0gICAgZGVmIHRlc3RfcmVhZF9hbmRfcmVhZGxpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdFRkdcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdcclxuSElKSycsIHNlbGYuX2Nvbm4ucmVhZCg5KSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVmIHRl
c3Rfd3JpdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ0hlbGxvXHJcbicpCi0g
ICAgICAgIHNlbGYuX2Nvbm4ud3JpdGUoJ1dvcmxkXHJcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvXHJcbldvcmxkXHJcbicsIHNlbGYuX2Nvbm4ud3JpdHRlbl9kYXRhKCkpCi0K
LQotY2xhc3MgTW9ja0Jsb2NraW5nQ29ublRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRl
ZiB0ZXN0X3JlYWQoc2VsZik6Ci0gICAgICAgIGNsYXNzIExpbmVSZWFkZXIodGhyZWFkaW5nLlRo
cmVhZCk6Ci0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgcXVldWUpOgotICAg
ICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgICAg
ICAgICBzZWxmLl9xdWV1ZSA9IHF1ZXVlCi0gICAgICAgICAgICAgICAgc2VsZi5fY29ubiA9IGNv
bm4KLSAgICAgICAgICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotICAgICAgICAgICAgICAg
IHNlbGYuc3RhcnQoKQotICAgICAgICAgICAgZGVmIHJ1bihzZWxmKToKLSAgICAgICAgICAgICAg
ICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gc2VsZi5fY29ubi5yZWFk
bGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlLnB1dChkYXRhKQotICAgICAg
ICBjb25uID0gbW9jay5Nb2NrQmxvY2tpbmdDb25uKCkKLSAgICAgICAgcXVldWUgPSBRdWV1ZS5R
dWV1ZSgpCi0gICAgICAgIHJlYWRlciA9IExpbmVSZWFkZXIoY29ubiwgcXVldWUpCi0gICAgICAg
IHNlbGYuZmFpbFVubGVzcyhxdWV1ZS5lbXB0eSgpKQotICAgICAgICBjb25uLnB1dF9ieXRlcygn
Rm9vIGJhclxyXG4nKQotICAgICAgICByZWFkID0gcXVldWUuZ2V0KCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnRm9vIGJhclxyXG4nLCByZWFkKQotCi0KLWNsYXNzIE1vY2tUYWJsZVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX2RpY3Qoc2VsZik6
Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoeydLZXknOidWYWx1ZSd9KQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3RfY3Jl
YXRlX2Zyb21fbGlzdChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZShbKCdL
ZXknLCAnVmFsdWUnKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUu
Z2V0KCdLRVknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5
J10pCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV90dXBsZShzZWxmKToKLSAgICAgICAgdGFi
bGUgPSBtb2NrLk1vY2tUYWJsZSgoKCdLZXknLCAnVmFsdWUnKSwpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS0VZJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotCi0gICAgZGVmIHRlc3Rfc2V0X2FuZF9nZXQo
c2VsZik6Ci0gICAgICAgIHRhYmxlID0gbW9jay5Nb2NrVGFibGUoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIHRhYmxlLmdldCgnS2V5JykpCi0gICAgICAgIHRhYmxlWydLZXknXSA9
ICdWYWx1ZScKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tl
eScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlLmdldCgna2V5Jykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsnS2V5J10pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ2tleSddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLRVknXSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWlu
X18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L3Rlc3QvdGVzdF9tc2d1dGlsLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAxNmI4OGUwZjJlYjg5ZDI5OGVmMDdiMjYxN2E0MjFjMGE1NjRjOTQ4Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXNndXRp
bC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRo
b24KLSMKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmli
dXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4i
IiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgY29uZmlnICAj
IFRoaXMgbXVzdCBiZSBpbXBvcnRlZCBiZWZvcmUgbW9kX3B5d2Vic29ja2V0LgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQgaW1wb3J0IG1zZ3V0aWwKLQotaW1wb3J0IG1vY2sKLQotCi1kZWYgX2NyZWF0
ZV9yZXF1ZXN0KHJlYWRfZGF0YSk6Ci0gICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoY29ubmVj
dGlvbj1tb2NrLk1vY2tDb25uKHJlYWRfZGF0YSkpCi0KLWRlZiBfY3JlYXRlX2Jsb2NraW5nX3Jl
cXVlc3QoKToKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9j
a0Jsb2NraW5nQ29ubigpKQotCi1jbGFzcyBNZXNzYWdlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCcnKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
SGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdl
X3VuaWNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoJycpCi0g
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHUnXHU2NWU1JykKLSAgICAgICAg
IyBVKzY1ZTUgaXMgZW5jb2RlZCBhcyBlNiw5NyxhNSBpbiBVVEYtOAotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdceDAwXHhlNlx4OTdceGE1XHhmZicsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfcmVj
ZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdc
eDAwSGVsbG9ceGZmXHgwMFdvcmxkIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdI
ZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV91bmljb2RlKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdceDAwXHhlNlx4OWNceGFjXHhmZicpCi0gICAgICAgICMg
VSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0g
ICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmljb2RlKHNlbGYpOgotICAg
ICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTguCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoJ1x4MDBceDgwXHg4MVx4ZmYnKQotICAgICAgICAjIEludmFs
aWQgY2hhcmFjdGVycyBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aAotICAgICAgICAjIFUrZmZmZCBS
RVBMQUNFTUVOVCBDSEFSQUNURVIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1ZmZmZFx1
ZmZmZCcsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlX2Rpc2NhcmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X3JlcXVlc3QoJ1x4ODBceDA2SUdOT1JFXHgwMEhlbGxvXHhmZicKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1x4MDFESVNSRUdBUkRceGZmXHgwMFdvcmxkIVx4ZmYnKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3BheWxvYWRfbGVuZ3RoKHNlbGYpOgot
ICAgICAgICBmb3IgbGVuZ3RoLCBieXRlcyBpbiAoKDAsICdceDAwJyksICgweDdmLCAnXHg3Zicp
LCAoMHg4MCwgJ1x4ODFceDAwJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHgx
MjM0LCAnXHg4MFx4YTRceDM0JykpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW5n
dGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ3V0aWwuX3BheWxvYWRfbGVuZ3Ro
KF9jcmVhdGVfcmVxdWVzdChieXRlcykpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9ieXRlcyhz
ZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgnYWJjZGVmZycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycsIG1zZ3V0aWwuX3JlY2VpdmVfYnl0ZXMocmVxdWVz
dCwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2RlZmcnLCBtc2d1dGlsLl9yZWNlaXZl
X2J5dGVzKHJlcXVlc3QsIDQpKQotCi0gICAgZGVmIHRlc3RfcmVhZF91bnRpbChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgnYWJjWGRlZmdYJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnYWJjJywgbXNndXRpbC5fcmVhZF91bnRpbChyZXF1ZXN0LCAnWCcpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkZWZnJywgbXNndXRpbC5fcmVhZF91bnRpbChyZXF1
ZXN0LCAnWCcpKQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiB0ZXN0X3F1ZXVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9ibG9ja2luZ19yZXF1ZXN0KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VS
ZWNlaXZlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVjZWl2
ZXIucmVjZWl2ZV9ub3dhaXQoKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKCdceDAwSGVsbG8hXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIScs
IHJlY2VpdmVyLnJlY2VpdmUoKSkKLQotICAgIGRlZiB0ZXN0X29ubWVzc2FnZShzZWxmKToKLSAg
ICAgICAgb25tZXNzYWdlX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBkZWYgb25tZXNz
YWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0KG1l
c3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0g
ICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCwgb25tZXNz
YWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHgw
MEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEnLCBvbm1lc3Nh
Z2VfcXVldWUuZ2V0KCkpCi0KLQotY2xhc3MgTWVzc2FnZVNlbmRlclRlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgotICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VT
ZW5kZXIocmVxdWVzdCkKLQotICAgICAgICBzZW5kZXIuc2VuZCgnV29ybGQnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdceDAwV29ybGRceGZmJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9ub3dhaXQoc2VsZik6Ci0gICAgICAgICMg
VXNlIGEgcXVldWUgdG8gY2hlY2sgdGhlIGJ5dGVzIHdyaXR0ZW4gYnkgTWVzc2FnZVNlbmRlci4K
LSAgICAgICAgIyByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkgY2Fubm90IGJlIHVz
ZWQgaGVyZSBiZWNhdXNlCi0gICAgICAgICMgTWVzc2FnZVNlbmRlciBydW5zIGluIGEgc2VwYXJh
dGUgdGhyZWFkLgotICAgICAgICBzZW5kX3F1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICBk
ZWYgd3JpdGUoYnl0ZXMpOgotICAgICAgICAgICAgc2VuZF9xdWV1ZS5wdXQoYnl0ZXMpCi0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQotCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0aWwuTWVz
c2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnSGVsbG8n
KQotICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnXHgwMEhlbGxvXHhmZicsIHNlbmRfcXVldWUuZ2V0KCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCBzZW5kX3F1ZXVlLmdldCgpKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZjBkYjVhNDViMjIwMmIzMGE5ZTMyMGU2NWUzYWVj
ODE3MmIxMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgdXRpbCBtb2R1
bGUuIiIiCi0KLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1w
b3J0IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1wb3J0ZWQgYmVmb3JlIG1vZF9weXdlYnNvY2tl
dC4KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLV9URVNUX0RBVEFfRElSID0g
b3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAndGVzdGRhdGEnKQotCi1j
bGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZ2V0X3N0YWNr
X3RyYWNlKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdOb25lXG4nLCB1dGlsLmdl
dF9zdGFja190cmFjZSgpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBhID0gMSAvIDAgICMg
SW50ZW50aW9uYWxseSByYWlzZSBleGNlcHRpb24uCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246
Ci0gICAgICAgICAgICB0cmFjZSA9IHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkKLSAgICAgICAgICAg
IHNlbGYuZmFpbFVubGVzcyh0cmFjZS5zdGFydHN3aXRoKCdUcmFjZWJhY2snKSkKLSAgICAgICAg
ICAgIHNlbGYuZmFpbFVubGVzcyh0cmFjZS5maW5kKCdaZXJvRGl2aXNpb25FcnJvcicpICE9IC0x
KQotCi0gICAgZGVmIHRlc3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbihzZWxmKToKLSAg
ICAgICAgZXhjID0gRXhjZXB0aW9uKCdXb3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1dvcmxkJywgc3RyKGV4YykpCi0gICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2Vw
dGlvbignSGVsbG8gJywgZXhjKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyBXb3Js
ZCcsIHN0cihleGMpKQotCi0gICAgZGVmIHRlc3RfZ2V0X3NjcmlwdF9pbnRlcnAoc2VsZik6Ci0g
ICAgICAgIGN5Z3dpbl9wYXRoID0gJ2M6XFxjeWd3aW5cXGJpbicKLSAgICAgICAgY3lnd2luX3Bl
cmwgPSBvcy5wYXRoLmpvaW4oY3lnd2luX3BhdGgsICdwZXJsJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0
aC5qb2luKF9URVNUX0RBVEFfRElSLCAnUkVBRE1FJykpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRoLmpv
aW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwgY3lnd2luX3BhdGgpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvdXNyL2Jpbi9wZXJsIC13VCcsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAo
Ci0gICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdoZWxsby5wbCcpKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjeWd3aW5fcGVybCArICcgLXdUJywgdXRpbC5nZXRf
c2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwg
J2hlbGxvLnBsJyksIGN5Z3dpbl9wYXRoKSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18n
OgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rl
c3QvdGVzdGRhdGEvUkVBRE1FIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBjMDAxYWE1NTk1Y2RkMTM0MDdmNTcyOGVjZDUzMmE1ZDEyMjYzZWZhLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL1JFQURN
RQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRlc3QgZGF0YSBkaXJlY3RvcnkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L2JsYW5rX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y4N2M2YWYyM2Rm
MDhlZmUzNTc1Y2FlMjA4ZGU1MDIyY2JhYTY2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgot
IyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
IyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
Ci0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNl
ZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0jIGludGVudGlv
bmFsbHkgbGVmdCBibGFuawpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2No
ZWNrX3dzaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdl
YnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdpbl9jaGVja193c2gucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTM5ZmExNzZjYzM0MTdiZTk2ZGU3OThlNmE4MWVk
MTQ5YjE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDQyICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJh
X2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAnaHR0cDov
L2V4YW1wbGUuY29tJzoKLSAgICAgICAgcmV0dXJuCi0gICAgcmFpc2UgVmFsdWVFcnJvcignVW5h
Y2NlcHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCi0KLQotZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dGUoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJv
dG9jb2wpKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFu
ZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjk4MmQwMjMxZWYwMGYwMmUwZDkwZGY2NzhlYjgwNGJhNDM4NjJkOS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ0
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkV4Y2VwdGlvbiBpbiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEoKS4KLSIiIgotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRz
aGFrZShyZXF1ZXN0KToKLSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0
YShyZXF1ZXN0KToKLSAgICByYWlzZSBFeGNlcHRpb24oJ0ludGVudGlvbmFsIEV4Y2VwdGlvbiBm
b3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCBy
ZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hh
bmRsZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMTdlN2JlMTgwMmUzYzY2YzYzODQ5ODc1ZWEzNWUyNDA2YTM4MWU2MC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9z
dWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJDb3JyZWN0IHNpZ25hdHVyZXMsIHdyb25nIGZpbGUgbmFt
ZS4KLSIiIgotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
LSAgICBwYXNzCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoCi0gICAgICAgICAgICAnc3ViL25vX3dzaF9hdF90
aGVfZW5kLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAocmVxdWVzdC53
c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0
L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyNjM1MmViNGNhMjM4OTUyMjM5ZTM1NDI3MjhjZTNiMzhkODNkZDZi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRh
L2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTm9uLWNhbGxhYmxlIGhhbmRsZXJzLgot
IiIiCi0KLQotd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgPSBUcnVlCi13ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEgPSAxCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3BsYWluX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGIzZmY2OTMwMjU2
YmMxYjEzZTJjNGMyZDFjODQzYzRiN2M4MGFhNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlv
bi53cml0ZSgnc3ViL3BsYWluX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19w
cm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDZiZjY1OWJjOWFmMDFjMTA3ZWYzNTA4YjJiNWQwMTczZGNmNTkwMDkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF9kb19leHRyYV9o
YW5kc2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIG5vX3dlYl9zb2NrZXRfZG9fZXh0cmFf
aGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAg
ICAgICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMn
ICUKLSAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2Nv
bCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9zdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93
cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBl
MGUyZTU1MDc5NGI3Yjk5MGUwYjQ0YjMzY2ZjMmQ0ZDE1MmU2YzA0Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z190cmFuc2Zlcl9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKCkgc2ln
bmF0dXJlLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgotICAgIHBhc3MKLQotCi1kZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVl
c3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3Jv
bmdfdHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAg
ICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGVsbG8ucGwgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
ZWxsby5wbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkMDFiNGFkODFjN2JmNjc0
YWJjNTZjZjA4M2FjYThlMTZmYmQ2NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oZWxsby5wbAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAs
MCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13VAotcHJpbnQgIkhlbGxvXG4iOwo=
</data>
<flag name="review"
          id="39336"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>