<?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>124549</bug_id>
          
          <creation_ts>2013-11-18 17:11:13 -0800</creation_ts>
          <short_desc>run-jsc-stress-tests should be able to package its tests and move them places</short_desc>
          <delta_ts>2013-12-02 12:52:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>124627</dependson>
    
    <dependson>124847</dependson>
          <blocked>120809</blocked>
    
    <blocked>124551</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>951887</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 17:11:13 -0800</bug_when>
    <thetext>Currently run-javascriptcore-tests runs files wherever it finds them. We want it to be able to run tests on remote machines, which will require moving those test files around. A first step to this is for run-jsc-tests to package everything it needs into a tar file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951890</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 17:11:59 -0800</bug_when>
    <thetext>s/run-javascriptcore-tests/run-jsc-stress-tests/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>951895</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-18 17:17:12 -0800</bug_when>
    <thetext>This feature will be enabled by the --tarball flag and will be disabled by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952331</commentid>
    <comment_count>3</comment_count>
      <attachid>217363</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-19 17:10:13 -0800</bug_when>
    <thetext>Created attachment 217363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952338</commentid>
    <comment_count>4</comment_count>
      <attachid>217363</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-11-19 17:34:19 -0800</bug_when>
    <thetext>Comment on attachment 217363
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952356</commentid>
    <comment_count>5</comment_count>
      <attachid>217363</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-19 18:05:56 -0800</bug_when>
    <thetext>Comment on attachment 217363
Patch

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

R=me too

&gt; Tools/Scripts/run-jsc-stress-tests:318
&gt; +        self.addLayoutTestFiles

These &quot;self.&quot; things should be superfluous. Get rid of them if possible.

&gt; Tools/Scripts/run-jsc-stress-tests:330
&gt; +        system(&quot;mkdir&quot;, &quot;-p&quot;, bundleTestPath.to_s) unless bundleTestPath.directory?

Why not use the ruby mkdir API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952360</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-19 18:16:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 217363 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=217363&amp;action=review
&gt; 
&gt; R=me too
&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:318
&gt; &gt; +        self.addLayoutTestFiles
&gt; 
&gt; These &quot;self.&quot; things should be superfluous. Get rid of them if possible.

Will do.

&gt; 
&gt; &gt; Tools/Scripts/run-jsc-stress-tests:330
&gt; &gt; +        system(&quot;mkdir&quot;, &quot;-p&quot;, bundleTestPath.to_s) unless bundleTestPath.directory?
&gt; 
&gt; Why not use the ruby mkdir API?

You mean the FileUtils mkdir_p thingy? No reason really.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952376</commentid>
    <comment_count>7</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-19 18:49:06 -0800</bug_when>
    <thetext>Committed r159538: &lt;http://trac.webkit.org/changeset/159538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952379</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-19 19:14:27 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 124627</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952382</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-19 19:16:19 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Re-opened since this is blocked by bug 124627

Today is not my day :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952615</commentid>
    <comment_count>10</comment_count>
      <attachid>217439</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-20 09:04:21 -0800</bug_when>
    <thetext>Created attachment 217439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952617</commentid>
    <comment_count>11</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-20 09:06:33 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=217439) [details]
&gt; Patch

The main difference is that the default Bundle class now uses WEBKIT_PATH as the base for all paths passed to localPathToBundlePath. This prevents run-jsc-stress-tests from getting confused when using LAYOUTTESTS_RELATIVE_PATH to setup the helper files for layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952625</commentid>
    <comment_count>12</comment_count>
      <attachid>217439</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-20 09:29:21 -0800</bug_when>
    <thetext>Comment on attachment 217439
Patch

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

How does this handle extra files for Kraken, Octane, etc?

&gt; Tools/Scripts/run-jsc-stress-tests:289
&gt; +    attr_accessor :baseForExtraFiles
&gt; +    def add(localTestPath, testName)

I would put a blank line between attr_accessor and def add.

&gt; Tools/Scripts/run-jsc-stress-tests:317
&gt; +        self.addLayoutTestFiles

Remove self.

&gt; Tools/Scripts/run-jsc-stress-tests:337
&gt; +        self.add(LAYOUTTESTS_RELATIVE_PATH + &quot;resources&quot;, &quot;standalone-pre.js&quot;)

Remove self.

&gt; Tools/Scripts/run-jsc-stress-tests:338
&gt; +        self.add(LAYOUTTESTS_RELATIVE_PATH + &quot;resources&quot;, &quot;standalone-post.js&quot;)

Remove self.

&gt; Tools/Scripts/run-jsc-stress-tests:344
&gt; +            self.add(@baseForExtraFiles, file)

Remove self.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952631</commentid>
    <comment_count>13</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-20 09:33:41 -0800</bug_when>
    <thetext>Am I understanding right that this is engineered around having all tests in a subdirectory of the WebKit checkout?

That won&apos;t work for any of our internal tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952637</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-20 09:55:09 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; Am I understanding right that this is engineered around having all tests in a subdirectory of the WebKit checkout?
&gt; 
&gt; That won&apos;t work for any of our internal tests.

I don&apos;t think so. It&apos;s engineered around having all tests relative to the WebKit checkout, which I believe was already the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952650</commentid>
    <comment_count>15</comment_count>
      <attachid>217452</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-20 10:08:12 -0800</bug_when>
    <thetext>Created attachment 217452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>952709</commentid>
    <comment_count>16</comment_count>
      <attachid>217452</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-20 11:55:07 -0800</bug_when>
    <thetext>Comment on attachment 217452
Patch

After talking in person, this approach definitely still needs some work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953613</commentid>
    <comment_count>17</comment_count>
      <attachid>217698</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-22 10:38:08 -0800</bug_when>
    <thetext>Created attachment 217698
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953656</commentid>
    <comment_count>18</comment_count>
      <attachid>217698</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-22 12:56:54 -0800</bug_when>
    <thetext>Comment on attachment 217698
Patch

We talked about it offline.  Looks really good but it would be even better if run-jsc-stress-tests didn&apos;t hard-code yaml filenames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953670</commentid>
    <comment_count>19</comment_count>
      <attachid>217713</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-22 13:44:44 -0800</bug_when>
    <thetext>Created attachment 217713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953672</commentid>
    <comment_count>20</comment_count>
      <attachid>217713</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-11-22 13:50:08 -0800</bug_when>
    <thetext>Comment on attachment 217713
Patch

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

&gt; Tools/Scripts/run-jsc-stress-tests:355
&gt; +            if key == &quot;DYLD_FRAMEWORK_PATH&quot;
&gt; +                script += &quot;export #{key}=$(cd ../#{$frameworkPath.dirname}; pwd)\n&quot;

Change this to not be an IMPORTANT_ENV and handle it outside the loop.

&gt; Tools/Scripts/run-jsc-stress-tests:611
&gt; +    $extraFilesBaseDir = $extraFilesBaseDir.dirname unless $extraFilesBaseDir.basename == $benchmarkDirectory.basename

Don&apos;t change this here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953677</commentid>
    <comment_count>21</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-22 13:57:46 -0800</bug_when>
    <thetext>I cc-ed some people responsible for other platforms since they&apos;ll need to make some adjustments if they want it to work for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>953679</commentid>
    <comment_count>22</comment_count>
      <attachid>217715</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-22 14:08:14 -0800</bug_when>
    <thetext>Created attachment 217715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954025</commentid>
    <comment_count>23</comment_count>
      <attachid>217715</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-25 09:26:51 -0800</bug_when>
    <thetext>Comment on attachment 217715
Patch

Clearing flags on attachment: 217715

Committed r159752: &lt;http://trac.webkit.org/changeset/159752&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954026</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-25 09:26:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954031</commentid>
    <comment_count>25</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-25 09:53:06 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 217715 [details])
&gt; Clearing flags on attachment: 217715
&gt; 
&gt; Committed r159752: &lt;http://trac.webkit.org/changeset/159752&gt;

FYI, it broke run-javascriptcore-tests script on all build.webkit.org bots:

Error: #&lt;LoadError: cannot load such file -- highline&gt;
Tools/Scripts/run-jsc-stress-tests:153:in `frameworkFromJSCPath&apos;: Unknown JSC path, cannot copy full framework: /Volumes/Data/slave/mavericks-release-tests-wk1/build/WebKitBuild/Release/jsc (RuntimeError)
	from Tools/Scripts/run-jsc-stress-tests:163:in `copyVMToBundle&apos;
	from Tools/Scripts/run-jsc-stress-tests:822:in `prepareBundle&apos;
	from Tools/Scripts/run-jsc-stress-tests:1056:in `&lt;main&gt;&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954032</commentid>
    <comment_count>26</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-25 09:53:29 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #23)
&gt; &gt; (From update of attachment 217715 [details] [details])
&gt; &gt; Clearing flags on attachment: 217715
&gt; &gt; 
&gt; &gt; Committed r159752: &lt;http://trac.webkit.org/changeset/159752&gt;
&gt; 
&gt; FYI, it broke run-javascriptcore-tests script on all build.webkit.org bots:
&gt; 
&gt; Error: #&lt;LoadError: cannot load such file -- highline&gt;
&gt; Tools/Scripts/run-jsc-stress-tests:153:in `frameworkFromJSCPath&apos;: Unknown JSC path, cannot copy full framework: /Volumes/Data/slave/mavericks-release-tests-wk1/build/WebKitBuild/Release/jsc (RuntimeError)
&gt;     from Tools/Scripts/run-jsc-stress-tests:163:in `copyVMToBundle&apos;
&gt;     from Tools/Scripts/run-jsc-stress-tests:822:in `prepareBundle&apos;
&gt;     from Tools/Scripts/run-jsc-stress-tests:1056:in `&lt;main&gt;&apos;

Fix is on the way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954034</commentid>
    <comment_count>27</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-25 10:02:00 -0800</bug_when>
    <thetext>&gt; Fix is on the way.

Fix landed in http://trac.webkit.org/changeset/159754.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954038</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-11-25 10:36:13 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 124847</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954042</commentid>
    <comment_count>29</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-11-25 10:38:03 -0800</bug_when>
    <thetext>(In reply to comment #28)
&gt; Re-opened since this is blocked by bug 124847

This broke the linux test bots. Ossy has agreed to help adjust the script so that it works for the linux bots as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954312</commentid>
    <comment_count>30</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2013-11-26 11:21:40 -0800</bug_when>
    <thetext>I tried to debug r159752-r159754 changes on Linux, but it seems the problem
is bigger than I thought before. The whole &quot;framework&quot; is a Mac only thing,
it doesn&apos;t exist on Linux at all, that&apos;s why frameworkFromJSCPath() is broken,
and then setting $frameworkPath and $jscPath based on the this premise that
framework exists and jsc is placed in $frameworkPath/Resources/jsc.

archiveBuiltProduct() in Tools/BuildSlaveSupport/built-product-archive
would be a good start to bundle everything properly on all ports. Of
course it packs everything for layout testing which we don&apos;t need for
running only jsc tests.

But it seems it works only on GTK now (but packs jsc-stress-results unnecessarily!), EFL doesn&apos;t use it, because they have builder-tester bots only,
not separated builder and tester. But I still wondering how it works, because it
doesn&apos;t pack the monumental but necessary WebKitBuild/Dependencies.

It&apos;s more complex than I thought. :( I propose keeping the actual behaviour
of jsc-stress-tests script and create bundle if only --tarball is passed
until we find the proper way creating bundle on Linux. ( as Mark mentioned
in https://bugs.webkit.org/show_bug.cgi?id=124549#c2 )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955492</commentid>
    <comment_count>31</comment_count>
      <attachid>218202</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-02 11:43:32 -0800</bug_when>
    <thetext>Created attachment 218202
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955494</commentid>
    <comment_count>32</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-02 11:44:32 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; Created an attachment (id=218202) [details]
&gt; Patch

I modified the script to artificially create the directory structure it expects, even on platforms that don&apos;t normally have a JavaScriptCore.framework directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955499</commentid>
    <comment_count>33</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-12-02 11:52:46 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; Created an attachment (id=218202) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I modified the script to artificially create the directory structure it expects, even on platforms that don&apos;t normally have a JavaScriptCore.framework directory.

For those reviewing, the changes are in copyVMToBundle and prepareFramework</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955528</commentid>
    <comment_count>34</comment_count>
      <attachid>218202</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 12:52:41 -0800</bug_when>
    <thetext>Comment on attachment 218202
Patch

Clearing flags on attachment: 218202

Committed r159955: &lt;http://trac.webkit.org/changeset/159955&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>955529</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-02 12:52:47 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217363</attachid>
            <date>2013-11-19 17:10:13 -0800</date>
            <delta_ts>2013-11-20 09:04:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131119171012.patch</filename>
            <type>text/plain</type>
            <size>14688</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTUzMikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIyIEBACisyMDEzLTExLTE5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuIFRoaXMgc2NyaXB0IHdhcyBq
dXN0IGEgcnVieSByZWltcGxlbWVudGF0aW9uIAorICAgICAgICBvZiBncmVwIC1pIC1xIAorICAg
ICAgICAqIFNjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzOiBQYXNzIHRocm91Z2ggdGhl
IC0tbWFrZS1idW5kbGUgZmxhZy4KKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRl
c3RzOiBBZGRlZCB0aGUgbmV3IGNvbmNlcHQgb2YgYSAiYnVuZGxlIiwgd2hpY2ggaXMgYSBjb2xs
ZWN0aW9uIG9mIGFsbCB0ZXN0cyBhbmQgYW55CisgICAgICAgIG90aGVyIGZpbGVzIHRoYXQgdGhv
c2UgdGVzdHMgcmVxdWlyZSB0byBydW4gaW4gYW55IGVudmlyb25tZW50IGFsb25nIHdpdGggYSBm
aXhlZCByb290IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZXNlCisgICAgICAgIGZpbGVzIGFuZCB0
aGVpciBleHBlY3RlZCBkaXJlY3Rvcnkgc3RydWN0dXJlIGFyZSBjbG9uZWQuIFRoZSBkZWZhdWx0
IEJ1bmRsZSBjbGFzcyBpcyBiYXNpY2FsbHkgCisgICAgICAgIGEgbm8tb3Agc28gdGhhdCBpdCBm
dW5jdGlvbnMgbGlrZSBydW4tanNjLXN0cmVzcy10ZXN0cyBwcmlvciB0byB0aGlzIHBhdGNoLiBN
b3ZhYmxlQnVuZGxlIGlzIGEgQnVuZGxlIHRoYXQga25vd3MgCisgICAgICAgIGhvdyB0byB0cmFu
c2xhdGUgbG9jYWwgcGF0aHMgdG8gYnVuZGxlIHBhdGhzIGFuZCBkb2VzIGFsbCB0aGUgd29yayBv
ZiBtb3ZpbmcgZWFjaCB0ZXN0IGZpbGUgaW50byB0aGUgcmlnaHQgcGxhY2UgCisgICAgICAgIGlu
c2lkZSB0aGUgLnRlc3RzIGRpcmVjdG9yeS4gQWZ0ZXIgYWxsIHRoZSB0ZXN0IGZpbGVzIGhhdmUg
YmVlbiBjcmVhdGVkIGluIGpzYy1zdHJlc3MtcmVzdWx0cyBNb3ZhYmxlQnVuZGxlIAorICAgICAg
ICBjcmVhdGVzIGEgdGFyYmFsbCBvZiB0aGUgZW50aXJlIGRpcmVjdG9yeSBmb3IgZWFzeSByZWxv
Y2F0aW9uLiBUaGUgLS1tYWtlLWJ1bmRsZSBmbGFnIGNhdXNlcyBydW4tanNjLXN0cmVzcy10ZXN0
cyAKKyAgICAgICAgdG8gdXNlIE1vdmFibGVCdW5kbGUgaW5zdGVhZCBvZiBqdXN0IEJ1bmRsZS4g
CisKIDIwMTMtMTEtMTkgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTUxMzk0Nzk+IFJlZW5hYmxlIHRoZSBKU0MgT2JqZWN0aXZlLUMg
QVBJIHRlc3RzIG9uIE1vdW50YWluIExpb24gb25jZSB0aGUgYm90cyBhcmUgcnVubmluZyBYY29k
ZSA1CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0cwkocmV2aXNpb24g
MTU5NDc0KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHdvcmtp
bmcgY29weSkKQEAgLTc4LDYgKzc4LDcgQEAgbXkgJHJ1bk1vemlsbGEgPSAwOwogbXkgJHJ1bkpT
Q1N0cmVzcyA9ICFpc0FwcGxlV2luV2ViS2l0KCkgJiYgIWlzV2luQ2Fpcm8oKTsKIAogbXkgJGVu
YWJsZUZUTCA9IDA7CitteSAkbWFrZUJ1bmRsZSA9IDA7CiAKIG15ICRwcm9ncmFtTmFtZSA9IGJh
c2VuYW1lKCQwKTsKIG15ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVpbGRKU0MgPyAid2lsbCBjaGVj
ayIgOiAid2lsbCBub3QgY2hlY2siOwpAQCAtOTQsNiArOTUsNyBAQCBVc2FnZTogJHByb2dyYW1O
YW1lIFtvcHRpb25zXSBbb3B0aW9ucyB0CiAgIC0tW25vLV1idWlsZCAgICAgICAgICAgICAgICAg
IENoZWNrIChvciBkb24ndCBjaGVjaykgdG8gc2VlIGlmIHRoZSBqc2MgYnVpbGQgaXMgdXAtdG8t
ZGF0ZSAoZGVmYXVsdDogJGJ1aWxkSlNDRGVmYXVsdCkKICAgLS1bbm8tXXRlc3RhcGkgICAgICAg
ICAgICAgICAgUnVuIChvciBkb24ndCBydW4pIHRlc3RhcGkgKGRlZmF1bHQ6ICR0ZXN0YXBpRGVm
YXVsdCkKICAgLS1bbm8tXWpzYy1zdHJlc3MgICAgICAgICAgICAgUnVuIChvciBkb24ndCBydW4p
IHRoZSBKU0Mgc3RyZXNzIHRlc3RzIChkZWZhdWx0OiAkanNjU3RyZXNzRGVmYXVsdCkKKyAgLS1t
YWtlLWJ1bmRsZSAgICAgICAgICAgICAgICAgUGFja2FnZSB0aGUgcmVzdWx0aW5nIHRlc3QgZmls
ZXMgZW1pdHRlZCBieSB0aGUgSlNDIHN0cmVzcyB0ZXN0cyAoZGVmYXVsdDogJG1ha2VCdW5kbGUp
CiBFT0YKIAogR2V0T3B0aW9ucygKQEAgLTEwNCw2ICsxMDYsNyBAQCBHZXRPcHRpb25zKAogICAg
ICdmdGwtaml0IScgPT4gXCRlbmFibGVGVEwsCiAgICAgJ3Rlc3RhcGkhJyA9PiBcJHJ1blRlc3RB
UEksCiAgICAgJ2pzYy1zdHJlc3MhJyA9PiBcJHJ1bkpTQ1N0cmVzcywKKyAgICAnbWFrZS1idW5k
bGUhJyA9PiBcJG1ha2VCdW5kbGUsCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAKICk7CiAKQEAg
LTEyMyw2ICsxMjYsMTAgQEAgaWYgKCRzaG93SGVscCkgewogICAgZXhpdCAxOwogfQogCitpZiAo
ISRydW5KU0NTdHJlc3MpIHsKKyAgICAkbWFrZUJ1bmRsZSA9IDA7Cit9CisKIHNldENvbmZpZ3Vy
YXRpb25Qcm9kdWN0RGlyKEN3ZDo6YWJzX3BhdGgoJHJvb3QpKSBpZiAoZGVmaW5lZCgkcm9vdCkp
OwogCiBpZiAoIWRlZmluZWQoJHJvb3QpICYmICRidWlsZEpTQykgewpAQCAtMjQ1LDYgKzI1Miw5
IEBAIGlmICgkcnVuSlNDU3RyZXNzKSB7CiAgICAgaWYgKGRlZmluZWQoJEVOVnsiRVhUUkFfSlND
X1RFU1RTIn0pKSB7CiAgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgJEVOVnsiRVhU
UkFfSlNDX1RFU1RTIn0pOwogICAgIH0KKyAgICBpZiAoJG1ha2VCdW5kbGUpIHsKKyAgICAgICAg
cHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAiLS1tYWtlLWJ1bmRsZSIpOworICAgIH0KICAgICBw
cmludCAiUnVubmluZzogIiAuIGpvaW4oIiAiLCBAanNjU3RyZXNzRHJpdmVyQ21kKSAuICJcbiI7
CiAgICAgbXkgJHJlc3VsdCA9IHN5c3RlbShAanNjU3RyZXNzRHJpdmVyQ21kKTsKICAgICBleGl0
IGV4aXRTdGF0dXMoJHJlc3VsdCkgaWYgJHJlc3VsdDsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVu
LWpzYy1zdHJlc3MtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cwkocmV2aXNpb24gMTU5NDc0KQorKysgVG9vbHMvU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCByZXF1aXJlICd5YW1s
JwogVEhJU19TQ1JJUFRfUEFUSCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykucmVhbHBhdGgKIFND
UklQVFNfUEFUSCA9IFRISVNfU0NSSVBUX1BBVEguZGlybmFtZQogV0VCS0lUX1BBVEggPSBTQ1JJ
UFRTX1BBVEguZGlybmFtZS5kaXJuYW1lCi1MQVlPVVRURVNUU19QQVRIID0gV0VCS0lUX1BBVEgg
KyAiTGF5b3V0VGVzdHMiCitMQVlPVVRURVNUU19SRUxBVElWRV9QQVRIID0gUGF0aG5hbWUubmV3
KF9fRklMRV9fKSArICIuLiIgKyAiLi4iICsgIi4uIiArICJMYXlvdXRUZXN0cyIKIHJhaXNlIHVu
bGVzcyBTQ1JJUFRTX1BBVEguYmFzZW5hbWUudG9fcyA9PSAiU2NyaXB0cyIKIHJhaXNlIHVubGVz
cyBTQ1JJUFRTX1BBVEguZGlybmFtZS5iYXNlbmFtZS50b19zID09ICJUb29scyIKIApAQCAtODUs
NiArODUsNyBAQCAkY29sbGVjdGlvbnMgPSBbXQogJG91dHB1dERpciA9IFBhdGhuYW1lLm5ldygi
cmVzdWx0cyIpCiAkdmVyYm9zaXR5ID0gMAogJGVycm9yT25GYWlsdXJlID0gZmFsc2UKKyRjcmVh
dGVCdW5kbGUgPSBmYWxzZQogCiBkZWYgdXNhZ2UKICAgICBwdXRzICJydW4tanNjLXN0cmVzcy10
ZXN0cyAtaiA8c2hlbGwgcGF0aD4gPGNvbGxlY3Rpb25zIHBhdGg+IFs8Y29sbGVjdGlvbnMgcGF0
aD4gLi4uXSIKQEAgLTkzLDYgKzk0LDcgQEAgZGVmIHVzYWdlCiAgICAgcHV0cyAiLS1mdGwtaml0
ICAgICAgICAgICAgICAgICAgIEluZGljYXRlIHRoYXQgd2UgaGF2ZSB0aGUgRlRMIEpJVC4iCiAg
ICAgcHV0cyAiLS1vdXRwdXQtZGlyICAgICAgICAgKC1vKSAgIFBhdGggd2hlcmUgdG8gcHV0IHJl
c3VsdHMuIERlZmF1bHQgaXMgI3skb3V0cHV0RGlyfS4iCiAgICAgcHV0cyAiLS1bbm8tXWVycm9y
LW9uLWZhaWx1cmUgICAgIEV4aXQgd2l0aCBleGl0IGNvZGUgMSBpZiBhbnkgdGVzdHMgZmFpbC4g
RGVmYXVsdCBpcyAjeyRlcnJvck9uRmFpbHVyZX0uIgorICAgIHB1dHMgIi0tbWFrZS1idW5kbGUg
ICAgICAgICAgICAgICBQYWNrYWdlcyB1cCB0aGUgb3V0cHV0IG9mIHRoZSBzY3JpcHQgc28gdGhh
dCBpdCBjYW4gYmUgcnVuIGluIGFyYml0cmFyeSBsb2NhdGlvbnMuIgogICAgIHB1dHMgIi0tdmVy
Ym9zZSAgICAgICAgICAgICgtdikgICBQcmludCBtb3JlIHRoaW5ncyB3aGlsZSBydW5uaW5nLiIK
ICAgICBwdXRzICItLWhlbHAgICAgICAgICAgICAgICAoLWgpICAgUHJpbnQgdGhpcyBtZXNzYWdl
LiIKICAgICBleGl0IDEKQEAgLTEwNCw2ICsxMDYsNyBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVs
cCcsICctaCcsIEdldG9wdExvCiAgICAgICAgICAgICAgICBbJy0tb3V0cHV0LWRpcicsICctbycs
IEdldG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS12ZXJi
b3NlJywgJy12JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyct
LWVycm9yLW9uLWZhaWx1cmUnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAgICAg
ICAgICBbJy0tbWFrZS1idW5kbGUnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCiAgICAgICAg
ICAgICAgICBbJy0tbm8tZXJyb3Itb24tZmFpbHVyZScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5U
XSkuZWFjaCB7CiAgICAgfCBvcHQsIGFyZyB8CiAgICAgY2FzZSBvcHQKQEAgLTExOSw2ICsxMjIs
OCBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9wdExvCiAgICAgICAgICRl
cnJvck9uRmFpbHVyZSA9IHRydWUKICAgICB3aGVuICctLW5vLWVycm9yLW9uLWZhaWx1cmUnCiAg
ICAgICAgICRlcnJvck9uRmFpbHVyZSA9IGZhbHNlCisgICAgd2hlbiAnLS1tYWtlLWJ1bmRsZScK
KyAgICAgICAgJGNyZWF0ZUJ1bmRsZSA9IHRydWUKICAgICB3aGVuICctLXZlcmJvc2UnCiAgICAg
ICAgICR2ZXJib3NpdHkgKz0gMQogICAgIGVuZApAQCAtMTMxLDYgKzEzNiwxMCBAQCB1bmxlc3Mg
JGpzY1BhdGgKICAgICBleGl0IDEKIGVuZAogCitpZiAkY3JlYXRlQnVuZGxlCisgICAgJGNhblJ1
bkRpc3BsYXlQcm9maWxlck91dHB1dCA9IGZhbHNlCitlbmQKKwogJG51bUZhaWx1cmVzID0gMAog
CiBFQUdFUl9PUFRJT05TID0gWyItLXRocmVzaG9sZEZvckpJVEFmdGVyV2FybVVwPTEwIiwgIi0t
dGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplQWZ0ZXJXYXJt
VXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcD0yMCIsICItLXRo
cmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZvckZUTE9wdGltaXplQWZ0
ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNvb249MjAiXQpAQCAtMjE0
LDcgKzIyMyw3IEBAIGRlZiBtb3ppbGxhRXJyb3JIYW5kbGVyCiAgICAgICAgIG91dHAucHV0cyAi
dGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBl
Y2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkg
fCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIg
KyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiBydWJ5ICIgKyBTaGVs
bHdvcmRzLnNoZWxsZXNjYXBlKChIRUxQRVJTX1BBVEggKyAiY2hlY2stbW96aWxsYS1mYWlsdXJl
IikudG9fcykgKyAiICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgImVsaWYg
Z3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9IgogICAgICAgICBvdXRwLnB1dHMg
InRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAm
JiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQog
ICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMjM0LDcgKzI0
Myw3IEBAIGRlZiBtb3ppbGxhRmFpbEVycm9ySGFuZGxlcgogICAgICAgICBvdXRwLnB1dHMgImlm
IHRlc3QgLWUgI3twbGFuLmZhaWxGaWxlfSIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgogICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5zdWNjZXNzQ29tbWFuZAotICAgICAgICBvdXRw
LnB1dHMgImVsaWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoSEVMUEVSU19QQVRI
ICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsgIiAje291dHB1dEZpbGVuYW1lfSIK
KyAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVu
YW1lfSIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgogICAgICAgICBvdXRwLnB1dHMgIiAgICAi
ICsgcGxhbi5zdWNjZXNzQ29tbWFuZAogICAgICAgICBvdXRwLnB1dHMgImVsc2UiCkBAIC0yNTUs
NyArMjY0LDcgQEAgZGVmIG1vemlsbGFFeGl0M0Vycm9ySGFuZGxlcgogICAgICAgICBvdXRwLnB1
dHMgInRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgYGNhdCAje3BsYW4uZmFpbEZp
bGV9YCAtZXEgMyBdIgogICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAgICAgICBvdXRw
LnB1dHMgIiAgICAgICAgaWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoSEVMUEVS
U19QQVRIICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsgIiAje291dHB1dEZpbGVu
YW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAj
e291dHB1dEZpbGVuYW1lfSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNh
dCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAg
ICAgIG91dHAucHV0cyAiICAgICAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTI3NSw2
ICsyODQsODkgQEAgZW5kCiAKICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CiAKK2NsYXNzIEJ1bmRs
ZQorICAgIGF0dHJfYWNjZXNzb3IgOmJhc2VGb3JFeHRyYUZpbGVzCisgICAgZGVmIGFkZChsb2Nh
bFRlc3RQYXRoLCB0ZXN0TmFtZSkKKyAgICBlbmQKKworICAgIGRlZiB3aWxsU3RhcnRMb2FkaW5n
VGVzdHMKKyAgICAgICAgJHN0ZGVyci5wdXRzICJOb3QgY3JlYXRpbmcgdGVzdCBidW5kbGUuIgor
ICAgIGVuZAorCisgICAgZGVmIGRpZEZpbmlzaExvYWRpbmdUZXN0cworICAgIGVuZAorCisgICAg
ZGVmIGFkZEV4dHJhRmlsZXMoZXh0cmFGaWxlcykKKyAgICBlbmQKKworICAgIGRlZiBwYWNrYWdl
IQorICAgIGVuZAorCisgICAgZGVmIGxvY2FsUGF0aFRvQnVuZGxlUGF0aChsb2NhbFBhdGgpCisg
ICAgICAgIGxvY2FsUGF0aAorICAgIGVuZAorZW5kCisKK2NsYXNzIE1vdmFibGVCdW5kbGUgPCBC
dW5kbGUKKyAgICBkZWYgaW5pdGlhbGl6ZShidW5kbGVSb290KQorICAgICAgICBAYnVuZGxlUm9v
dCA9IGJ1bmRsZVJvb3QKKyAgICAgICAgQGJ1bmRsZWRGaWxlQ291bnQgPSAwCisgICAgZW5kCisK
KyAgICBkZWYgd2lsbFN0YXJ0TG9hZGluZ1Rlc3RzCisgICAgICAgICRzdGRlcnIucHV0cyAiQ29w
eWluZyB0ZXN0cyBpbnRvIGJ1bmRsZS4uLiIKKyAgICAgICAgc2VsZi5hZGRMYXlvdXRUZXN0Rmls
ZXMKKyAgICBlbmQKKworICAgIGRlZiBkaWRGaW5pc2hMb2FkaW5nVGVzdHMKKyAgICAgICAgJHN0
ZGVyci5wdXRzICJEb25lIGNvcHlpbmcgdGVzdHMgaW50byBidW5kbGUuIgorICAgIGVuZAorCisg
ICAgZGVmIGFkZChsb2NhbFRlc3RQYXRoLCB0ZXN0TmFtZSkKKyAgICAgICAgYnVuZGxlVGVzdFBh
dGggPSBzZWxmLmxvY2FsUGF0aFRvQnVuZGxlUGF0aChsb2NhbFRlc3RQYXRoKQorICAgICAgICBs
b2NhbEZ1bGxQYXRoID0gbG9jYWxUZXN0UGF0aCArIHRlc3ROYW1lCisgICAgICAgIGJ1bmRsZUZ1
bGxQYXRoID0gYnVuZGxlVGVzdFBhdGggKyB0ZXN0TmFtZQorCisgICAgICAgIHN5c3RlbSgibWtk
aXIiLCAiLXAiLCBidW5kbGVUZXN0UGF0aC50b19zKSB1bmxlc3MgYnVuZGxlVGVzdFBhdGguZGly
ZWN0b3J5PworICAgICAgICBzeXN0ZW0oImNwIiwgbG9jYWxGdWxsUGF0aC50b19zLCBidW5kbGVG
dWxsUGF0aC50b19zKQorCisgICAgICAgIEBidW5kbGVkRmlsZUNvdW50ICs9IDEKKyAgICAgICAg
cHJpbnQoIlxyICAgICIgKyBAYnVuZGxlZEZpbGVDb3VudC50b19zICsgIlxyIikKKyAgICBlbmQK
KworICAgIGRlZiBhZGRMYXlvdXRUZXN0RmlsZXMKKyAgICAgICAgc2VsZi5hZGQoTEFZT1VUVEVT
VFNfUkVMQVRJVkVfUEFUSCArICJyZXNvdXJjZXMiLCAic3RhbmRhbG9uZS1wcmUuanMiKQorICAg
ICAgICBzZWxmLmFkZChMQVlPVVRURVNUU19SRUxBVElWRV9QQVRIICsgInJlc291cmNlcyIsICJz
dGFuZGFsb25lLXBvc3QuanMiKQorICAgIGVuZAorCisgICAgZGVmIGFkZEV4dHJhRmlsZXMoZXh0
cmFGaWxlcykKKyAgICAgICAgZXh0cmFGaWxlcy5lYWNoIHsKKyAgICAgICAgICAgIHwgZmlsZSB8
CisgICAgICAgICAgICBzZWxmLmFkZChAYmFzZUZvckV4dHJhRmlsZXMsIGZpbGUpCisgICAgICAg
IH0KKyAgICBlbmQKKworICAgIGRlZiBwYWNrYWdlIQorICAgICAgICAkc3RkZXJyLnB1dHMgIkNy
ZWF0aW5nIHRhcmJhbGwgZm9yIGJ1bmRsZS4uLiIKKyAgICAgICAgRGlyLmNoZGlyKCRvdXRwdXRE
aXIgKyAiLi4iKSB7CisgICAgICAgICAgICBjbWQgPSAidGFyIC1jemYgcGF5bG9hZC50YXIuZ3og
I3skb3V0cHV0RGlyLmJhc2VuYW1lfSIKKyAgICAgICAgICAgICRzdGRlcnIucHV0cyAiPj4gI3tj
bWR9IiBpZiAkdmVyYm9zaXR5ID49IDIKKyAgICAgICAgICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0o
Y21kKQorICAgICAgICB9CisgICAgICAgICRzdGRlcnIucHV0cygiRG9uZS4iKQorICAgIGVuZAor
CisgICAgZGVmIGxvY2FsUGF0aFRvQnVuZGxlUGF0aChsb2NhbFBhdGgpCisgICAgICAgIEBidW5k
bGVSb290ICsgbG9jYWxQYXRoCisgICAgZW5kCitlbmQKKworaWYgJGNyZWF0ZUJ1bmRsZQorICAg
ICR0ZXN0QnVuZGxlID0gTW92YWJsZUJ1bmRsZS5uZXcoJG91dHB1dERpciArICIudGVzdHMiKQor
ZWxzZQorICAgICR0ZXN0QnVuZGxlID0gQnVuZGxlLm5ldworZW5kCisKIGNsYXNzIFBsYW4KICAg
ICBhdHRyX3JlYWRlciA6ZGlyZWN0b3J5LCA6YXJndW1lbnRzLCA6bmFtZSwgOm91dHB1dEhhbmRs
ZXIsIDplcnJvckhhbmRsZXIKICAgICBhdHRyX2FjY2Vzc29yIDppbmRleApAQCAtNDg1LDExICs1
NzcsMTMgQEAgZGVmIHJ1bkxheW91dFRlc3Qoa2luZCwgKm9wdGlvbnMpCiAgICAgZWxzZQogICAg
ICAgICBraW5kID0gImxheW91dCIKICAgICBlbmQKKyAgICBidW5kbGVMYXlvdXRUZXN0c1BhdGgg
PSAkdGVzdEJ1bmRsZS5sb2NhbFBhdGhUb0J1bmRsZVBhdGgoTEFZT1VUVEVTVFNfUkVMQVRJVkVf
UEFUSCkKKyAgICAkdGVzdEJ1bmRsZS5hZGRFeHRyYUZpbGVzKFtQYXRobmFtZS5uZXcoIi4uLyN7
dGVzdE5hbWV9LWV4cGVjdGVkLnR4dCIpXSkKICAgICBhcmdzID0KICAgICAgICAgWyRqc2NQYXRo
LnRvX3NdICsgb3B0aW9ucyArCi0gICAgICAgIFsoTEFZT1VUVEVTVFNfUEFUSCArICJyZXNvdXJj
ZXMiICsgInN0YW5kYWxvbmUtcHJlLmpzIikudG9fcywKKyAgICAgICAgWyhidW5kbGVMYXlvdXRU
ZXN0c1BhdGggKyAicmVzb3VyY2VzIiArICJzdGFuZGFsb25lLXByZS5qcyIpLnRvX3MsCiAgICAg
ICAgICAkYmVuY2htYXJrLnRvX3MsCi0gICAgICAgICAoTEFZT1VUVEVTVFNfUEFUSCArICJyZXNv
dXJjZXMiICsgInN0YW5kYWxvbmUtcG9zdC5qcyIpLnRvX3NdCisgICAgICAgICAoYnVuZGxlTGF5
b3V0VGVzdHNQYXRoICsgInJlc291cmNlcyIgKyAic3RhbmRhbG9uZS1wb3N0LmpzIikudG9fc10K
ICAgICBhZGRSdW5Db21tYW5kKGtpbmQsIGFyZ3MsIG5vaXN5T3V0cHV0SGFuZGxlciwgZGlmZkVy
cm9ySGFuZGxlcigoJGJlbmNobWFya0RpcmVjdG9yeS5kaXJuYW1lICsgIiN7dGVzdE5hbWV9LWV4
cGVjdGVkLnR4dCIpLnRvX3MpKQogZW5kCiAKQEAgLTUyMiw2ICs2MTYsNyBAQCBkZWYgcnVuTW96
aWxsYVRlc3Qoa2luZCwgbW9kZSwgZXh0cmFGaWxlCiAgICAgZWxzZQogICAgICAgICBraW5kID0g
Im1vemlsbGEiCiAgICAgZW5kCisgICAgJHRlc3RCdW5kbGUuYWRkRXh0cmFGaWxlcyhleHRyYUZp
bGVzKQogICAgIGFyZ3MgPSBbJGpzY1BhdGgudG9fc10gKyBvcHRpb25zICsgZXh0cmFGaWxlcy5t
YXB7fHZ8ICgkYmVuY2htYXJrRGlyZWN0b3J5ICsgdikudG9fc30gKyBbJGJlbmNobWFyay50b19z
XQogICAgIGNhc2UgbW9kZQogICAgIHdoZW4gOm5vcm1hbApAQCAtNjY2LDEwICs3NjEsMTMgQEAg
ZGVmIGhhbmRsZUNvbGxlY3Rpb25GaWxlKGNvbGxlY3Rpb24pCiAgICAgICAgIGFsbEpTRmlsZXMo
c3ViQ29sbGVjdGlvbikuZWFjaCB7CiAgICAgICAgICAgICB8IHBhdGggfAogICAgICAgICAgICAg
Ci0gICAgICAgICAgICBwYXRoID0gcGF0aC5yZWFscGF0aAotICAgICAgICAgICAgCisgICAgICAg
ICAgICAkdGVzdEJ1bmRsZS5hZGQocGF0aC5kaXJuYW1lLCBwYXRoLmJhc2VuYW1lKQorICAgICAg
ICAgICAgJHRlc3RCdW5kbGUuYmFzZUZvckV4dHJhRmlsZXMgPSBwYXRoLmRpcm5hbWUKKworICAg
ICAgICAgICAgcGF0aCA9ICR0ZXN0QnVuZGxlLmxvY2FsUGF0aFRvQnVuZGxlUGF0aChwYXRoKS5y
ZWFscGF0aAorCisgICAgICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1l
IAogICAgICAgICAgICAgJGJlbmNobWFyayA9IHBhdGguYmFzZW5hbWUKLSAgICAgICAgICAgICRi
ZW5jaG1hcmtEaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgJHJ1bkNvbW1hbmRPcHRpb25zID0ge30KICAgICAgICAgICAgIGV2YWwgZW50cnlbImNtZCJd
CkBAIC02ODksMTEgKzc4NywxNCBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbkRpcmVjdG9yeShjb2xs
ZWN0aW9uCiAgICAgCiAgICAgJGNvbGxlY3Rpb24gPSBjb2xsZWN0aW9uCiAgICAgJGNvbGxlY3Rp
b25OYW1lID0gY29sbGVjdGlvbk5hbWUKLSAgICAkYmVuY2htYXJrRGlyZWN0b3J5ID0gJGNvbGxl
Y3Rpb24KKyAgICBsb2NhbEJlbmNobWFya0RpcmVjdG9yeSA9ICRjb2xsZWN0aW9uCisgICAgJGJl
bmNobWFya0RpcmVjdG9yeSA9ICR0ZXN0QnVuZGxlLmxvY2FsUGF0aFRvQnVuZGxlUGF0aChsb2Nh
bEJlbmNobWFya0RpcmVjdG9yeSkKKyAgICAkdGVzdEJ1bmRsZS5iYXNlRm9yRXh0cmFGaWxlcyA9
IGxvY2FsQmVuY2htYXJrRGlyZWN0b3J5CiAgICAgYWxsSlNGaWxlcygkY29sbGVjdGlvbikuZWFj
aCB7CiAgICAgICAgIHwgcGF0aCB8CiAgICAgICAgIAogICAgICAgICAkYmVuY2htYXJrID0gcGF0
aC5iYXNlbmFtZQorICAgICAgICAkdGVzdEJ1bmRsZS5hZGQobG9jYWxCZW5jaG1hcmtEaXJlY3Rv
cnksICRiZW5jaG1hcmspCiAgICAgICAgIAogICAgICAgICAkcnVuQ29tbWFuZE9wdGlvbnMgPSB7
fQogICAgICAgICBkZWZhdWx0UnVuIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCkBAIC03MTAsMTEg
KzgxMSwxNSBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAogZW5k
CiAKKyR0ZXN0QnVuZGxlLndpbGxTdGFydExvYWRpbmdUZXN0cworCiBBUkdWLmVhY2ggewogICAg
IHwgY29sbGVjdGlvbiB8CiAgICAgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogfQogCisk
dGVzdEJ1bmRsZS5kaWRGaW5pc2hMb2FkaW5nVGVzdHMKKwogZGVmIGFwcGVuZEZhaWx1cmUocGxh
bikKICAgICBGaWxlLm9wZW4oJG91dHB1dERpciArICJmYWlsZWQiLCAiYSIpIHsKICAgICAgICAg
fCBvdXRwIHwKQEAgLTgxMCw2ICs5MTUsMTEgQEAgRmlsZS5vcGVuKHBhcmFsbGVsRGlyICsgIk1h
a2VmaWxlIiwgInciKQogICAgIH0KIH0KIAoraWYgJGNyZWF0ZUJ1bmRsZQorICAgICR0ZXN0QnVu
ZGxlLnBhY2thZ2UhCisgICAgZXhpdCAwCitlbmQKKwogRGlyLmNoZGlyKHBhcmFsbGVsRGlyKSB7
CiAgICAgdW5sZXNzICRwcm9ncmVzc01ldGVyCiAgICAgICAgIG15c3lzKCJtYWtlIiwgIi1qIiwg
JG51bVByb2Nlc3NvcnMudG9fcywgIi1zIiwgIi1mIiwgIk1ha2VmaWxlIikKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvY2hlY2stbW96aWxsYS1mYWlsdXJlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvY2hlY2st
bW96aWxsYS1mYWlsdXJlCShyZXZpc2lvbiAxNTk0NzQpCisrKyBUb29scy9TY3JpcHRzL2pzYy1z
dHJlc3MtdGVzdC1oZWxwZXJzL2NoZWNrLW1vemlsbGEtZmFpbHVyZQkod29ya2luZyBjb3B5KQpA
QCAtMSwzNCArMCwwIEBACi0jIS91c3IvYmluL2VudiBydWJ5Ci0KLSMgQ29weXJpZ2h0IChDKSAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotIyBhcmUgbWV0OgotIwotIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0jIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0jIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotIyBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCi0jIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0jIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSMg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECi0jIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi1GaWxlLm9wZW4oQVJHVlswXSwgInIiKSB7Ci0gICAgfCBpbnAgfAot
ICAgIGlucC5lYWNoX2xpbmUgewotICAgICAgICB8IGxpbmUgfAotICAgICAgICBleGl0IDAgaWYg
bGluZSA9fiAvZmFpbGVkIS9pCi0gICAgfQotfQotCi1leGl0IDEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217439</attachid>
            <date>2013-11-20 09:04:21 -0800</date>
            <delta_ts>2013-11-20 10:08:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131120090420.patch</filename>
            <type>text/plain</type>
            <size>14812</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTU2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDEzLTExLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czoKKworICAgICAgICAqIFNjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMv
Y2hlY2stbW96aWxsYS1mYWlsdXJlOiBSZW1vdmVkLiBUaGlzIHNjcmlwdCB3YXMgCisgICAgICAg
IGp1c3QgYSBydWJ5IHJlaW1wbGVtZW50YXRpb24gb2YgZ3JlcCAtaSAtcSAKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czogUGFzcyB0aHJvdWdoIHRoZSAtLW1ha2Ut
YnVuZGxlIGZsYWcuCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogQWRk
ZWQgdGhlIG5ldyBjb25jZXB0IG9mIGEgImJ1bmRsZSIsIHdoaWNoIGlzIGEgCisgICAgICAgIGNv
bGxlY3Rpb24gb2YgYWxsIHRlc3RzIGFuZCBhbnkgb3RoZXIgZmlsZXMgdGhhdCB0aG9zZSB0ZXN0
cyByZXF1aXJlIHRvIHJ1biBpbiAKKyAgICAgICAgYW55IGVudmlyb25tZW50IGFsb25nIHdpdGgg
YSBmaXhlZCByb290IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZXNlIGZpbGVzIGFuZCB0aGVpciAK
KyAgICAgICAgZXhwZWN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhcmUgY2xvbmVkLiBUaGUgZGVm
YXVsdCBCdW5kbGUgY2xhc3MgaXMgYmFzaWNhbGx5IGEgCisgICAgICAgIG5vLW9wIHNvIHRoYXQg
aXQgZnVuY3Rpb25zIGxpa2UgcnVuLWpzYy1zdHJlc3MtdGVzdHMgcHJpb3IgdG8gdGhpcyBwYXRj
aC4gCisgICAgICAgIE1vdmFibGVCdW5kbGUgaXMgYSBCdW5kbGUgdGhhdCBrbm93cyBob3cgdG8g
dHJhbnNsYXRlIGxvY2FsIHBhdGhzIHRvIGJ1bmRsZSBwYXRocyAKKyAgICAgICAgYW5kIGRvZXMg
YWxsIHRoZSB3b3JrIG9mIG1vdmluZyBlYWNoIHRlc3QgZmlsZSBpbnRvIHRoZSByaWdodCBwbGFj
ZSBpbnNpZGUgCisgICAgICAgIHRoZSAudGVzdHMgZGlyZWN0b3J5LiBBZnRlciBhbGwgdGhlIHRl
c3QgZmlsZXMgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4ganNjLXN0cmVzcy1yZXN1bHRzIAorICAgICAg
ICBNb3ZhYmxlQnVuZGxlIGNyZWF0ZXMgYSB0YXJiYWxsIG9mIHRoZSBlbnRpcmUgZGlyZWN0b3J5
IGZvciBlYXN5IHJlbG9jYXRpb24uIAorICAgICAgICBUaGUgLS1tYWtlLWJ1bmRsZSBmbGFnIGNh
dXNlcyBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB1c2UgTW92YWJsZUJ1bmRsZSBpbnN0ZWFkIG9m
IGp1c3QgQnVuZGxlLiAKKwogMjAxMy0xMS0yMCAgRMOhbmllbCBCw6F0eWFpICA8QmF0eWFpLkRh
bmllbEBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIE1vdmVkIHN0cmF5IHVybHMgZnJvbSBz
dm4ucHkgYW5kIHN0YXR1c3NlcnZlci5weSBpbnRvIGNvbW1vbi5jb25maWcudXJscwpJbmRleDog
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHJldmlzaW9uIDE1OTU2NCkKKysr
IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw2ICs3OCw3IEBAIG15ICRydW5Nb3ppbGxhID0gMDsKIG15ICRydW5KU0NTdHJlc3MgPSAh
aXNBcHBsZVdpbldlYktpdCgpICYmICFpc1dpbkNhaXJvKCk7CiAKIG15ICRlbmFibGVGVEwgPSAw
OworbXkgJG1ha2VCdW5kbGUgPSAwOwogCiBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7
CiBteSAkYnVpbGRKU0NEZWZhdWx0ID0gJGJ1aWxkSlNDID8gIndpbGwgY2hlY2siIDogIndpbGwg
bm90IGNoZWNrIjsKQEAgLTk0LDYgKzk1LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9u
c10gW29wdGlvbnMgdAogICAtLVtuby1dYnVpbGQgICAgICAgICAgICAgICAgICBDaGVjayAob3Ig
ZG9uJ3QgY2hlY2spIHRvIHNlZSBpZiB0aGUganNjIGJ1aWxkIGlzIHVwLXRvLWRhdGUgKGRlZmF1
bHQ6ICRidWlsZEpTQ0RlZmF1bHQpCiAgIC0tW25vLV10ZXN0YXBpICAgICAgICAgICAgICAgIFJ1
biAob3IgZG9uJ3QgcnVuKSB0ZXN0YXBpIChkZWZhdWx0OiAkdGVzdGFwaURlZmF1bHQpCiAgIC0t
W25vLV1qc2Mtc3RyZXNzICAgICAgICAgICAgIFJ1biAob3IgZG9uJ3QgcnVuKSB0aGUgSlNDIHN0
cmVzcyB0ZXN0cyAoZGVmYXVsdDogJGpzY1N0cmVzc0RlZmF1bHQpCisgIC0tbWFrZS1idW5kbGUg
ICAgICAgICAgICAgICAgIFBhY2thZ2UgdGhlIHJlc3VsdGluZyB0ZXN0IGZpbGVzIGVtaXR0ZWQg
YnkgdGhlIEpTQyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRtYWtlQnVuZGxlKQogRU9GCiAKIEdl
dE9wdGlvbnMoCkBAIC0xMDQsNiArMTA2LDcgQEAgR2V0T3B0aW9ucygKICAgICAnZnRsLWppdCEn
ID0+IFwkZW5hYmxlRlRMLAogICAgICd0ZXN0YXBpIScgPT4gXCRydW5UZXN0QVBJLAogICAgICdq
c2Mtc3RyZXNzIScgPT4gXCRydW5KU0NTdHJlc3MsCisgICAgJ21ha2UtYnVuZGxlIScgPT4gXCRt
YWtlQnVuZGxlLAogICAgICdoZWxwJyA9PiBcJHNob3dIZWxwCiApOwogCkBAIC0xMjMsNiArMTI2
LDEwIEBAIGlmICgkc2hvd0hlbHApIHsKICAgIGV4aXQgMTsKIH0KIAoraWYgKCEkcnVuSlNDU3Ry
ZXNzKSB7CisgICAgJG1ha2VCdW5kbGUgPSAwOworfQorCiBzZXRDb25maWd1cmF0aW9uUHJvZHVj
dERpcihDd2Q6OmFic19wYXRoKCRyb290KSkgaWYgKGRlZmluZWQoJHJvb3QpKTsKIAogaWYgKCFk
ZWZpbmVkKCRyb290KSAmJiAkYnVpbGRKU0MpIHsKQEAgLTI0NSw2ICsyNTIsOSBAQCBpZiAoJHJ1
bkpTQ1N0cmVzcykgewogICAgIGlmIChkZWZpbmVkKCRFTlZ7IkVYVFJBX0pTQ19URVNUUyJ9KSkg
ewogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICRFTlZ7IkVYVFJBX0pTQ19URVNU
UyJ9KTsKICAgICB9CisgICAgaWYgKCRtYWtlQnVuZGxlKSB7CisgICAgICAgIHB1c2goQGpzY1N0
cmVzc0RyaXZlckNtZCwgIi0tbWFrZS1idW5kbGUiKTsKKyAgICB9CiAgICAgcHJpbnQgIlJ1bm5p
bmc6ICIgLiBqb2luKCIgIiwgQGpzY1N0cmVzc0RyaXZlckNtZCkgLiAiXG4iOwogICAgIG15ICRy
ZXN1bHQgPSBzeXN0ZW0oQGpzY1N0cmVzc0RyaXZlckNtZCk7CiAgICAgZXhpdCBleGl0U3RhdHVz
KCRyZXN1bHQpIGlmICRyZXN1bHQ7CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJ
KHJldmlzaW9uIDE1OTU2NCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgcmVxdWlyZSAneWFtbCcKIFRISVNfU0NS
SVBUX1BBVEggPSBQYXRobmFtZS5uZXcoX19GSUxFX18pLnJlYWxwYXRoCiBTQ1JJUFRTX1BBVEgg
PSBUSElTX1NDUklQVF9QQVRILmRpcm5hbWUKIFdFQktJVF9QQVRIID0gU0NSSVBUU19QQVRILmRp
cm5hbWUuZGlybmFtZQotTEFZT1VUVEVTVFNfUEFUSCA9IFdFQktJVF9QQVRIICsgIkxheW91dFRl
c3RzIgorTEFZT1VUVEVTVFNfUkVMQVRJVkVfUEFUSCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykg
KyAiLi4iICsgIi4uIiArICIuLiIgKyAiTGF5b3V0VGVzdHMiCiByYWlzZSB1bmxlc3MgU0NSSVBU
U19QQVRILmJhc2VuYW1lLnRvX3MgPT0gIlNjcmlwdHMiCiByYWlzZSB1bmxlc3MgU0NSSVBUU19Q
QVRILmRpcm5hbWUuYmFzZW5hbWUudG9fcyA9PSAiVG9vbHMiCiAKQEAgLTg1LDYgKzg1LDcgQEAg
JGNvbGxlY3Rpb25zID0gW10KICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoInJlc3VsdHMiKQog
JHZlcmJvc2l0eSA9IDAKICRlcnJvck9uRmFpbHVyZSA9IGZhbHNlCiskY3JlYXRlQnVuZGxlID0g
ZmFsc2UKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNo
ZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBA
IC05Myw2ICs5NCw3IEBAIGRlZiB1c2FnZQogICAgIHB1dHMgIi0tZnRsLWppdCAgICAgICAgICAg
ICAgICAgICBJbmRpY2F0ZSB0aGF0IHdlIGhhdmUgdGhlIEZUTCBKSVQuIgogICAgIHB1dHMgIi0t
b3V0cHV0LWRpciAgICAgICAgICgtbykgICBQYXRoIHdoZXJlIHRvIHB1dCByZXN1bHRzLiBEZWZh
dWx0IGlzICN7JG91dHB1dERpcn0uIgogICAgIHB1dHMgIi0tW25vLV1lcnJvci1vbi1mYWlsdXJl
ICAgICBFeGl0IHdpdGggZXhpdCBjb2RlIDEgaWYgYW55IHRlc3RzIGZhaWwuIERlZmF1bHQgaXMg
I3skZXJyb3JPbkZhaWx1cmV9LiIKKyAgICBwdXRzICItLW1ha2UtYnVuZGxlICAgICAgICAgICAg
ICAgUGFja2FnZXMgdXAgdGhlIG91dHB1dCBvZiB0aGUgc2NyaXB0IHNvIHRoYXQgaXQgY2FuIGJl
IHJ1biBpbiBhcmJpdHJhcnkgbG9jYXRpb25zLiIKICAgICBwdXRzICItLXZlcmJvc2UgICAgICAg
ICAgICAoLXYpICAgUHJpbnQgbW9yZSB0aGluZ3Mgd2hpbGUgcnVubmluZy4iCiAgICAgcHV0cyAi
LS1oZWxwICAgICAgICAgICAgICAgKC1oKSAgIFByaW50IHRoaXMgbWVzc2FnZS4iCiAgICAgZXhp
dCAxCkBAIC0xMDQsNiArMTA2LDcgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBH
ZXRvcHRMbwogICAgICAgICAgICAgICAgWyctLW91dHB1dC1kaXInLCAnLW8nLCBHZXRvcHRMb25n
OjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tdmVyYm9zZScsICctdics
IEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1lcnJvci1vbi1m
YWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgWyctLW1h
a2UtYnVuZGxlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyct
LW5vLWVycm9yLW9uLWZhaWx1cmUnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0pLmVhY2ggewog
ICAgIHwgb3B0LCBhcmcgfAogICAgIGNhc2Ugb3B0CkBAIC0xMTksNiArMTIyLDggQEAgR2V0b3B0
TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMbwogICAgICAgICAkZXJyb3JPbkZhaWx1
cmUgPSB0cnVlCiAgICAgd2hlbiAnLS1uby1lcnJvci1vbi1mYWlsdXJlJwogICAgICAgICAkZXJy
b3JPbkZhaWx1cmUgPSBmYWxzZQorICAgIHdoZW4gJy0tbWFrZS1idW5kbGUnCisgICAgICAgICRj
cmVhdGVCdW5kbGUgPSB0cnVlCiAgICAgd2hlbiAnLS12ZXJib3NlJwogICAgICAgICAkdmVyYm9z
aXR5ICs9IDEKICAgICBlbmQKQEAgLTEzMSw2ICsxMzYsMTAgQEAgdW5sZXNzICRqc2NQYXRoCiAg
ICAgZXhpdCAxCiBlbmQKIAoraWYgJGNyZWF0ZUJ1bmRsZQorICAgICRjYW5SdW5EaXNwbGF5UHJv
ZmlsZXJPdXRwdXQgPSBmYWxzZQorZW5kCisKICRudW1GYWlsdXJlcyA9IDAKIAogRUFHRVJfT1BU
SU9OUyA9IFsiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZv
ckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0t
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIw
IiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIl0KQEAgLTIxNCw3ICsyMjMsNyBA
QCBkZWYgbW96aWxsYUVycm9ySGFuZGxlcgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjog
VW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHByZWZp
eENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoSEVMUEVSU19QQVRIICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsg
IiAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEg
ZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgogICAg
ICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0
cHV0RmlsZW5hbWV9KSB8ICIgKyBwcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKICAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTIzNCw3ICsyNDMsNyBAQCBkZWYg
bW96aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7
cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlm
IHJ1YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJjaGVjay1t
b3ppbGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91
dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCiAgICAg
ICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3Vj
Y2Vzc0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlIgpAQCAtMjU1LDcgKzI2NCw3IEBA
IGRlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgog
ICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbIGBjYXQgI3twbGFuLmZhaWxGaWxlfWAgLWVxIDMg
XSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgIGlmIHJ1YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJj
aGVjay1tb3ppbGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAg
ICAgIG91dHAucHV0cyAiICAgICAgICBpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxl
bmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICB0aGVuIgogICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRG
aWxlbmFtZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCkBAIC0yNzUsNiArMjg0LDg4IEBA
IGVuZAogCiAkcnVuQ29tbWFuZE9wdGlvbnMgPSB7fQogCitjbGFzcyBCdW5kbGUKKyAgICBhdHRy
X2FjY2Vzc29yIDpiYXNlRm9yRXh0cmFGaWxlcworICAgIGRlZiBhZGQobG9jYWxUZXN0UGF0aCwg
dGVzdE5hbWUpCisgICAgZW5kCisKKyAgICBkZWYgd2lsbFN0YXJ0TG9hZGluZ1Rlc3RzCisgICAg
ZW5kCisKKyAgICBkZWYgZGlkRmluaXNoTG9hZGluZ1Rlc3RzCisgICAgZW5kCisKKyAgICBkZWYg
YWRkRXh0cmFGaWxlcyhleHRyYUZpbGVzKQorICAgIGVuZAorCisgICAgZGVmIHBhY2thZ2UhCisg
ICAgZW5kCisKKyAgICBkZWYgbG9jYWxQYXRoVG9CdW5kbGVQYXRoKGxvY2FsUGF0aCkKKyAgICAg
ICAgV0VCS0lUX1BBVEggKyBsb2NhbFBhdGgKKyAgICBlbmQKK2VuZAorCitjbGFzcyBNb3ZhYmxl
QnVuZGxlIDwgQnVuZGxlCisgICAgZGVmIGluaXRpYWxpemUoYnVuZGxlUm9vdCkKKyAgICAgICAg
QGJ1bmRsZVJvb3QgPSBidW5kbGVSb290CisgICAgICAgIEBidW5kbGVkRmlsZUNvdW50ID0gMAor
ICAgIGVuZAorCisgICAgZGVmIHdpbGxTdGFydExvYWRpbmdUZXN0cworICAgICAgICAkc3RkZXJy
LnB1dHMgIkNvcHlpbmcgdGVzdHMgaW50byBidW5kbGUuLi4iCisgICAgICAgIHNlbGYuYWRkTGF5
b3V0VGVzdEZpbGVzCisgICAgZW5kCisKKyAgICBkZWYgZGlkRmluaXNoTG9hZGluZ1Rlc3RzCisg
ICAgICAgICRzdGRlcnIucHV0cyAiRG9uZSBjb3B5aW5nIHRlc3RzIGludG8gYnVuZGxlLiIKKyAg
ICBlbmQKKworICAgIGRlZiBhZGQobG9jYWxUZXN0UGF0aCwgdGVzdE5hbWUpCisgICAgICAgIGJ1
bmRsZVRlc3RQYXRoID0gc2VsZi5sb2NhbFBhdGhUb0J1bmRsZVBhdGgobG9jYWxUZXN0UGF0aCkK
KyAgICAgICAgbG9jYWxGdWxsUGF0aCA9IGxvY2FsVGVzdFBhdGggKyB0ZXN0TmFtZQorICAgICAg
ICBidW5kbGVGdWxsUGF0aCA9IGJ1bmRsZVRlc3RQYXRoICsgdGVzdE5hbWUKKworICAgICAgICBz
eXN0ZW0oIm1rZGlyIiwgIi1wIiwgYnVuZGxlVGVzdFBhdGgudG9fcykgdW5sZXNzIGJ1bmRsZVRl
c3RQYXRoLmRpcmVjdG9yeT8KKyAgICAgICAgc3lzdGVtKCJjcCIsIGxvY2FsRnVsbFBhdGgudG9f
cywgYnVuZGxlRnVsbFBhdGgudG9fcykKKworICAgICAgICBAYnVuZGxlZEZpbGVDb3VudCArPSAx
CisgICAgICAgIHByaW50KCJcciAgICAiICsgQGJ1bmRsZWRGaWxlQ291bnQudG9fcyArICJcciIp
CisgICAgZW5kCisKKyAgICBkZWYgYWRkTGF5b3V0VGVzdEZpbGVzCisgICAgICAgIHNlbGYuYWRk
KExBWU9VVFRFU1RTX1JFTEFUSVZFX1BBVEggKyAicmVzb3VyY2VzIiwgInN0YW5kYWxvbmUtcHJl
LmpzIikKKyAgICAgICAgc2VsZi5hZGQoTEFZT1VUVEVTVFNfUkVMQVRJVkVfUEFUSCArICJyZXNv
dXJjZXMiLCAic3RhbmRhbG9uZS1wb3N0LmpzIikKKyAgICBlbmQKKworICAgIGRlZiBhZGRFeHRy
YUZpbGVzKGV4dHJhRmlsZXMpCisgICAgICAgIGV4dHJhRmlsZXMuZWFjaCB7CisgICAgICAgICAg
ICB8IGZpbGUgfAorICAgICAgICAgICAgc2VsZi5hZGQoQGJhc2VGb3JFeHRyYUZpbGVzLCBmaWxl
KQorICAgICAgICB9CisgICAgZW5kCisKKyAgICBkZWYgcGFja2FnZSEKKyAgICAgICAgJHN0ZGVy
ci5wdXRzICJDcmVhdGluZyB0YXJiYWxsIGZvciBidW5kbGUuLi4iCisgICAgICAgIERpci5jaGRp
cigkb3V0cHV0RGlyICsgIi4uIikgeworICAgICAgICAgICAgY21kID0gInRhciAtY3pmIHBheWxv
YWQudGFyLmd6ICN7JG91dHB1dERpci5iYXNlbmFtZX0iCisgICAgICAgICAgICAkc3RkZXJyLnB1
dHMgIj4+ICN7Y21kfSIgaWYgJHZlcmJvc2l0eSA+PSAyCisgICAgICAgICAgICByYWlzZSB1bmxl
c3Mgc3lzdGVtKGNtZCkKKyAgICAgICAgfQorICAgICAgICAkc3RkZXJyLnB1dHMoIkRvbmUuIikK
KyAgICBlbmQKKworICAgIGRlZiBsb2NhbFBhdGhUb0J1bmRsZVBhdGgobG9jYWxQYXRoKQorICAg
ICAgICBAYnVuZGxlUm9vdCArIGxvY2FsUGF0aAorICAgIGVuZAorZW5kCisKK2lmICRjcmVhdGVC
dW5kbGUKKyAgICAkdGVzdEJ1bmRsZSA9IE1vdmFibGVCdW5kbGUubmV3KCRvdXRwdXREaXIgKyAi
LnRlc3RzIikKK2Vsc2UKKyAgICAkdGVzdEJ1bmRsZSA9IEJ1bmRsZS5uZXcKK2VuZAorCiBjbGFz
cyBQbGFuCiAgICAgYXR0cl9yZWFkZXIgOmRpcmVjdG9yeSwgOmFyZ3VtZW50cywgOm5hbWUsIDpv
dXRwdXRIYW5kbGVyLCA6ZXJyb3JIYW5kbGVyCiAgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKQEAg
LTQ4NSwxMSArNTc2LDEzIEBAIGRlZiBydW5MYXlvdXRUZXN0KGtpbmQsICpvcHRpb25zKQogICAg
IGVsc2UKICAgICAgICAga2luZCA9ICJsYXlvdXQiCiAgICAgZW5kCisgICAgYnVuZGxlTGF5b3V0
VGVzdHNQYXRoID0gJHRlc3RCdW5kbGUubG9jYWxQYXRoVG9CdW5kbGVQYXRoKExBWU9VVFRFU1RT
X1JFTEFUSVZFX1BBVEgpCisgICAgJHRlc3RCdW5kbGUuYWRkRXh0cmFGaWxlcyhbUGF0aG5hbWUu
bmV3KCIuLi8je3Rlc3ROYW1lfS1leHBlY3RlZC50eHQiKV0pCiAgICAgYXJncyA9CiAgICAgICAg
IFskanNjUGF0aC50b19zXSArIG9wdGlvbnMgKwotICAgICAgICBbKExBWU9VVFRFU1RTX1BBVEgg
KyAicmVzb3VyY2VzIiArICJzdGFuZGFsb25lLXByZS5qcyIpLnRvX3MsCisgICAgICAgIFsoYnVu
ZGxlTGF5b3V0VGVzdHNQYXRoICsgInJlc291cmNlcyIgKyAic3RhbmRhbG9uZS1wcmUuanMiKS50
b19zLAogICAgICAgICAgJGJlbmNobWFyay50b19zLAotICAgICAgICAgKExBWU9VVFRFU1RTX1BB
VEggKyAicmVzb3VyY2VzIiArICJzdGFuZGFsb25lLXBvc3QuanMiKS50b19zXQorICAgICAgICAg
KGJ1bmRsZUxheW91dFRlc3RzUGF0aCArICJyZXNvdXJjZXMiICsgInN0YW5kYWxvbmUtcG9zdC5q
cyIpLnRvX3NdCiAgICAgYWRkUnVuQ29tbWFuZChraW5kLCBhcmdzLCBub2lzeU91dHB1dEhhbmRs
ZXIsIGRpZmZFcnJvckhhbmRsZXIoKCRiZW5jaG1hcmtEaXJlY3RvcnkuZGlybmFtZSArICIje3Rl
c3ROYW1lfS1leHBlY3RlZC50eHQiKS50b19zKSkKIGVuZAogCkBAIC01MjIsNiArNjE1LDcgQEAg
ZGVmIHJ1bk1vemlsbGFUZXN0KGtpbmQsIG1vZGUsIGV4dHJhRmlsZQogICAgIGVsc2UKICAgICAg
ICAga2luZCA9ICJtb3ppbGxhIgogICAgIGVuZAorICAgICR0ZXN0QnVuZGxlLmFkZEV4dHJhRmls
ZXMoZXh0cmFGaWxlcykKICAgICBhcmdzID0gWyRqc2NQYXRoLnRvX3NdICsgb3B0aW9ucyArIGV4
dHJhRmlsZXMubWFwe3x2fCAoJGJlbmNobWFya0RpcmVjdG9yeSArIHYpLnRvX3N9ICsgWyRiZW5j
aG1hcmsudG9fc10KICAgICBjYXNlIG1vZGUKICAgICB3aGVuIDpub3JtYWwKQEAgLTY2NiwxMCAr
NzYwLDEzIEBAIGRlZiBoYW5kbGVDb2xsZWN0aW9uRmlsZShjb2xsZWN0aW9uKQogICAgICAgICBh
bGxKU0ZpbGVzKHN1YkNvbGxlY3Rpb24pLmVhY2ggewogICAgICAgICAgICAgfCBwYXRoIHwKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcGF0aCA9IHBhdGgucmVhbHBhdGgKLSAgICAgICAgICAg
IAorICAgICAgICAgICAgJHRlc3RCdW5kbGUuYWRkKHBhdGguZGlybmFtZSwgcGF0aC5iYXNlbmFt
ZSkKKyAgICAgICAgICAgICR0ZXN0QnVuZGxlLmJhc2VGb3JFeHRyYUZpbGVzID0gcGF0aC5kaXJu
YW1lCisKKyAgICAgICAgICAgIHBhdGggPSAkdGVzdEJ1bmRsZS5sb2NhbFBhdGhUb0J1bmRsZVBh
dGgocGF0aCkucmVhbHBhdGgKKworICAgICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9yeSA9IHBh
dGguZGlybmFtZSAKICAgICAgICAgICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCi0gICAg
ICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lCiAgICAgICAgICAgICAK
ICAgICAgICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CiAgICAgICAgICAgICBldmFsIGVu
dHJ5WyJjbWQiXQpAQCAtNjg5LDExICs3ODYsMTQgQEAgZGVmIGhhbmRsZUNvbGxlY3Rpb25EaXJl
Y3RvcnkoY29sbGVjdGlvbgogICAgIAogICAgICRjb2xsZWN0aW9uID0gY29sbGVjdGlvbgogICAg
ICRjb2xsZWN0aW9uTmFtZSA9IGNvbGxlY3Rpb25OYW1lCi0gICAgJGJlbmNobWFya0RpcmVjdG9y
eSA9ICRjb2xsZWN0aW9uCisgICAgbG9jYWxCZW5jaG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlv
bgorICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAkdGVzdEJ1bmRsZS5sb2NhbFBhdGhUb0J1bmRs
ZVBhdGgobG9jYWxCZW5jaG1hcmtEaXJlY3RvcnkpCisgICAgJHRlc3RCdW5kbGUuYmFzZUZvckV4
dHJhRmlsZXMgPSBsb2NhbEJlbmNobWFya0RpcmVjdG9yeQogICAgIGFsbEpTRmlsZXMoJGNvbGxl
Y3Rpb24pLmVhY2ggewogICAgICAgICB8IHBhdGggfAogICAgICAgICAKICAgICAgICAgJGJlbmNo
bWFyayA9IHBhdGguYmFzZW5hbWUKKyAgICAgICAgJHRlc3RCdW5kbGUuYWRkKGxvY2FsQmVuY2ht
YXJrRGlyZWN0b3J5LCAkYmVuY2htYXJrKQogICAgICAgICAKICAgICAgICAgJHJ1bkNvbW1hbmRP
cHRpb25zID0ge30KICAgICAgICAgZGVmYXVsdFJ1biB1bmxlc3MgcGFyc2VSdW5Db21tYW5kcwpA
QCAtNzEwLDExICs4MTAsMTUgQEAgZGVmIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlvbikKICAg
ICBlbmQKIGVuZAogCiskdGVzdEJ1bmRsZS53aWxsU3RhcnRMb2FkaW5nVGVzdHMKKwogQVJHVi5l
YWNoIHsKICAgICB8IGNvbGxlY3Rpb24gfAogICAgIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlv
bikKIH0KIAorJHRlc3RCdW5kbGUuZGlkRmluaXNoTG9hZGluZ1Rlc3RzCisKIGRlZiBhcHBlbmRG
YWlsdXJlKHBsYW4pCiAgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFpbGVkIiwgImEiKSB7
CiAgICAgICAgIHwgb3V0cCB8CkBAIC04MTAsNiArOTE0LDExIEBAIEZpbGUub3BlbihwYXJhbGxl
bERpciArICJNYWtlZmlsZSIsICJ3IikKICAgICB9CiB9CiAKK2lmICRjcmVhdGVCdW5kbGUKKyAg
ICAkdGVzdEJ1bmRsZS5wYWNrYWdlIQorICAgIGV4aXQgMAorZW5kCisKIERpci5jaGRpcihwYXJh
bGxlbERpcikgewogICAgIHVubGVzcyAkcHJvZ3Jlc3NNZXRlcgogICAgICAgICBteXN5cygibWFr
ZSIsICItaiIsICRudW1Qcm9jZXNzb3JzLnRvX3MsICItcyIsICItZiIsICJNYWtlZmlsZSIpCklu
ZGV4OiBUb29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL2NoZWNrLW1vemlsbGEt
ZmFpbHVyZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxw
ZXJzL2NoZWNrLW1vemlsbGEtZmFpbHVyZQkocmV2aXNpb24gMTU5NTY0KQorKysgVG9vbHMvU2Ny
aXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmUJKHdvcmtp
bmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcnVieQotCi0jIENvcHly
aWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
IAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
LSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotRmlsZS5vcGVuKEFSR1ZbMF0sICJyIikgewotICAg
IHwgaW5wIHwKLSAgICBpbnAuZWFjaF9saW5lIHsKLSAgICAgICAgfCBsaW5lIHwKLSAgICAgICAg
ZXhpdCAwIGlmIGxpbmUgPX4gL2ZhaWxlZCEvaQotICAgIH0KLX0KLQotZXhpdCAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217452</attachid>
            <date>2013-11-20 10:08:12 -0800</date>
            <delta_ts>2013-11-22 10:38:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131120100811.patch</filename>
            <type>text/plain</type>
            <size>14789</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTU2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI4IEBACisyMDEzLTExLTIwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6CisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0
cmVzcy10ZXN0czoKKworICAgICAgICAqIFNjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMv
Y2hlY2stbW96aWxsYS1mYWlsdXJlOiBSZW1vdmVkLiBUaGlzIHNjcmlwdCB3YXMgCisgICAgICAg
IGp1c3QgYSBydWJ5IHJlaW1wbGVtZW50YXRpb24gb2YgZ3JlcCAtaSAtcSAKKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czogUGFzcyB0aHJvdWdoIHRoZSAtLW1ha2Ut
YnVuZGxlIGZsYWcuCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogQWRk
ZWQgdGhlIG5ldyBjb25jZXB0IG9mIGEgImJ1bmRsZSIsIHdoaWNoIGlzIGEgCisgICAgICAgIGNv
bGxlY3Rpb24gb2YgYWxsIHRlc3RzIGFuZCBhbnkgb3RoZXIgZmlsZXMgdGhhdCB0aG9zZSB0ZXN0
cyByZXF1aXJlIHRvIHJ1biBpbiAKKyAgICAgICAgYW55IGVudmlyb25tZW50IGFsb25nIHdpdGgg
YSBmaXhlZCByb290IGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZXNlIGZpbGVzIGFuZCB0aGVpciAK
KyAgICAgICAgZXhwZWN0ZWQgZGlyZWN0b3J5IHN0cnVjdHVyZSBhcmUgY2xvbmVkLiBUaGUgZGVm
YXVsdCBCdW5kbGUgY2xhc3MgaXMgYmFzaWNhbGx5IGEgCisgICAgICAgIG5vLW9wIHNvIHRoYXQg
aXQgZnVuY3Rpb25zIGxpa2UgcnVuLWpzYy1zdHJlc3MtdGVzdHMgcHJpb3IgdG8gdGhpcyBwYXRj
aC4gCisgICAgICAgIE1vdmFibGVCdW5kbGUgaXMgYSBCdW5kbGUgdGhhdCBrbm93cyBob3cgdG8g
dHJhbnNsYXRlIGxvY2FsIHBhdGhzIHRvIGJ1bmRsZSBwYXRocyAKKyAgICAgICAgYW5kIGRvZXMg
YWxsIHRoZSB3b3JrIG9mIG1vdmluZyBlYWNoIHRlc3QgZmlsZSBpbnRvIHRoZSByaWdodCBwbGFj
ZSBpbnNpZGUgCisgICAgICAgIHRoZSAudGVzdHMgZGlyZWN0b3J5LiBBZnRlciBhbGwgdGhlIHRl
c3QgZmlsZXMgaGF2ZSBiZWVuIGNyZWF0ZWQgaW4ganNjLXN0cmVzcy1yZXN1bHRzIAorICAgICAg
ICBNb3ZhYmxlQnVuZGxlIGNyZWF0ZXMgYSB0YXJiYWxsIG9mIHRoZSBlbnRpcmUgZGlyZWN0b3J5
IGZvciBlYXN5IHJlbG9jYXRpb24uIAorICAgICAgICBUaGUgLS1tYWtlLWJ1bmRsZSBmbGFnIGNh
dXNlcyBydW4tanNjLXN0cmVzcy10ZXN0cyB0byB1c2UgTW92YWJsZUJ1bmRsZSBpbnN0ZWFkIG9m
IGp1c3QgQnVuZGxlLiAKKwogMjAxMy0xMS0yMCAgRMOhbmllbCBCw6F0eWFpICA8QmF0eWFpLkRh
bmllbEBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIE1vdmVkIHN0cmF5IHVybHMgZnJvbSBz
dm4ucHkgYW5kIHN0YXR1c3NlcnZlci5weSBpbnRvIGNvbW1vbi5jb25maWcudXJscwpJbmRleDog
VG9vbHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMJKHJldmlzaW9uIDE1OTU2NCkKKysr
IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBA
IC03OCw2ICs3OCw3IEBAIG15ICRydW5Nb3ppbGxhID0gMDsKIG15ICRydW5KU0NTdHJlc3MgPSAh
aXNBcHBsZVdpbldlYktpdCgpICYmICFpc1dpbkNhaXJvKCk7CiAKIG15ICRlbmFibGVGVEwgPSAw
OworbXkgJG1ha2VCdW5kbGUgPSAwOwogCiBteSAkcHJvZ3JhbU5hbWUgPSBiYXNlbmFtZSgkMCk7
CiBteSAkYnVpbGRKU0NEZWZhdWx0ID0gJGJ1aWxkSlNDID8gIndpbGwgY2hlY2siIDogIndpbGwg
bm90IGNoZWNrIjsKQEAgLTk0LDYgKzk1LDcgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9u
c10gW29wdGlvbnMgdAogICAtLVtuby1dYnVpbGQgICAgICAgICAgICAgICAgICBDaGVjayAob3Ig
ZG9uJ3QgY2hlY2spIHRvIHNlZSBpZiB0aGUganNjIGJ1aWxkIGlzIHVwLXRvLWRhdGUgKGRlZmF1
bHQ6ICRidWlsZEpTQ0RlZmF1bHQpCiAgIC0tW25vLV10ZXN0YXBpICAgICAgICAgICAgICAgIFJ1
biAob3IgZG9uJ3QgcnVuKSB0ZXN0YXBpIChkZWZhdWx0OiAkdGVzdGFwaURlZmF1bHQpCiAgIC0t
W25vLV1qc2Mtc3RyZXNzICAgICAgICAgICAgIFJ1biAob3IgZG9uJ3QgcnVuKSB0aGUgSlNDIHN0
cmVzcyB0ZXN0cyAoZGVmYXVsdDogJGpzY1N0cmVzc0RlZmF1bHQpCisgIC0tbWFrZS1idW5kbGUg
ICAgICAgICAgICAgICAgIFBhY2thZ2UgdGhlIHJlc3VsdGluZyB0ZXN0IGZpbGVzIGVtaXR0ZWQg
YnkgdGhlIEpTQyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRtYWtlQnVuZGxlKQogRU9GCiAKIEdl
dE9wdGlvbnMoCkBAIC0xMDQsNiArMTA2LDcgQEAgR2V0T3B0aW9ucygKICAgICAnZnRsLWppdCEn
ID0+IFwkZW5hYmxlRlRMLAogICAgICd0ZXN0YXBpIScgPT4gXCRydW5UZXN0QVBJLAogICAgICdq
c2Mtc3RyZXNzIScgPT4gXCRydW5KU0NTdHJlc3MsCisgICAgJ21ha2UtYnVuZGxlIScgPT4gXCRt
YWtlQnVuZGxlLAogICAgICdoZWxwJyA9PiBcJHNob3dIZWxwCiApOwogCkBAIC0xMjMsNiArMTI2
LDEwIEBAIGlmICgkc2hvd0hlbHApIHsKICAgIGV4aXQgMTsKIH0KIAoraWYgKCEkcnVuSlNDU3Ry
ZXNzKSB7CisgICAgJG1ha2VCdW5kbGUgPSAwOworfQorCiBzZXRDb25maWd1cmF0aW9uUHJvZHVj
dERpcihDd2Q6OmFic19wYXRoKCRyb290KSkgaWYgKGRlZmluZWQoJHJvb3QpKTsKIAogaWYgKCFk
ZWZpbmVkKCRyb290KSAmJiAkYnVpbGRKU0MpIHsKQEAgLTI0NSw2ICsyNTIsOSBAQCBpZiAoJHJ1
bkpTQ1N0cmVzcykgewogICAgIGlmIChkZWZpbmVkKCRFTlZ7IkVYVFJBX0pTQ19URVNUUyJ9KSkg
ewogICAgICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICRFTlZ7IkVYVFJBX0pTQ19URVNU
UyJ9KTsKICAgICB9CisgICAgaWYgKCRtYWtlQnVuZGxlKSB7CisgICAgICAgIHB1c2goQGpzY1N0
cmVzc0RyaXZlckNtZCwgIi0tbWFrZS1idW5kbGUiKTsKKyAgICB9CiAgICAgcHJpbnQgIlJ1bm5p
bmc6ICIgLiBqb2luKCIgIiwgQGpzY1N0cmVzc0RyaXZlckNtZCkgLiAiXG4iOwogICAgIG15ICRy
ZXN1bHQgPSBzeXN0ZW0oQGpzY1N0cmVzc0RyaXZlckNtZCk7CiAgICAgZXhpdCBleGl0U3RhdHVz
KCRyZXN1bHQpIGlmICRyZXN1bHQ7CkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNz
LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJ
KHJldmlzaW9uIDE1OTU2NCkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAgcmVxdWlyZSAneWFtbCcKIFRISVNfU0NS
SVBUX1BBVEggPSBQYXRobmFtZS5uZXcoX19GSUxFX18pLnJlYWxwYXRoCiBTQ1JJUFRTX1BBVEgg
PSBUSElTX1NDUklQVF9QQVRILmRpcm5hbWUKIFdFQktJVF9QQVRIID0gU0NSSVBUU19QQVRILmRp
cm5hbWUuZGlybmFtZQotTEFZT1VUVEVTVFNfUEFUSCA9IFdFQktJVF9QQVRIICsgIkxheW91dFRl
c3RzIgorTEFZT1VUVEVTVFNfUkVMQVRJVkVfUEFUSCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykg
KyAiLi4iICsgIi4uIiArICIuLiIgKyAiTGF5b3V0VGVzdHMiCiByYWlzZSB1bmxlc3MgU0NSSVBU
U19QQVRILmJhc2VuYW1lLnRvX3MgPT0gIlNjcmlwdHMiCiByYWlzZSB1bmxlc3MgU0NSSVBUU19Q
QVRILmRpcm5hbWUuYmFzZW5hbWUudG9fcyA9PSAiVG9vbHMiCiAKQEAgLTg1LDYgKzg1LDcgQEAg
JGNvbGxlY3Rpb25zID0gW10KICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoInJlc3VsdHMiKQog
JHZlcmJvc2l0eSA9IDAKICRlcnJvck9uRmFpbHVyZSA9IGZhbHNlCiskY3JlYXRlQnVuZGxlID0g
ZmFsc2UKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMgLWogPHNo
ZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBA
IC05Myw2ICs5NCw3IEBAIGRlZiB1c2FnZQogICAgIHB1dHMgIi0tZnRsLWppdCAgICAgICAgICAg
ICAgICAgICBJbmRpY2F0ZSB0aGF0IHdlIGhhdmUgdGhlIEZUTCBKSVQuIgogICAgIHB1dHMgIi0t
b3V0cHV0LWRpciAgICAgICAgICgtbykgICBQYXRoIHdoZXJlIHRvIHB1dCByZXN1bHRzLiBEZWZh
dWx0IGlzICN7JG91dHB1dERpcn0uIgogICAgIHB1dHMgIi0tW25vLV1lcnJvci1vbi1mYWlsdXJl
ICAgICBFeGl0IHdpdGggZXhpdCBjb2RlIDEgaWYgYW55IHRlc3RzIGZhaWwuIERlZmF1bHQgaXMg
I3skZXJyb3JPbkZhaWx1cmV9LiIKKyAgICBwdXRzICItLW1ha2UtYnVuZGxlICAgICAgICAgICAg
ICAgUGFja2FnZXMgdXAgdGhlIG91dHB1dCBvZiB0aGUgc2NyaXB0IHNvIHRoYXQgaXQgY2FuIGJl
IHJ1biBpbiBhcmJpdHJhcnkgbG9jYXRpb25zLiIKICAgICBwdXRzICItLXZlcmJvc2UgICAgICAg
ICAgICAoLXYpICAgUHJpbnQgbW9yZSB0aGluZ3Mgd2hpbGUgcnVubmluZy4iCiAgICAgcHV0cyAi
LS1oZWxwICAgICAgICAgICAgICAgKC1oKSAgIFByaW50IHRoaXMgbWVzc2FnZS4iCiAgICAgZXhp
dCAxCkBAIC0xMDQsNiArMTA2LDcgQEAgR2V0b3B0TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBH
ZXRvcHRMbwogICAgICAgICAgICAgICAgWyctLW91dHB1dC1kaXInLCAnLW8nLCBHZXRvcHRMb25n
OjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tdmVyYm9zZScsICctdics
IEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1lcnJvci1vbi1m
YWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAorICAgICAgICAgICAgICAgWyctLW1h
a2UtYnVuZGxlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyct
LW5vLWVycm9yLW9uLWZhaWx1cmUnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0pLmVhY2ggewog
ICAgIHwgb3B0LCBhcmcgfAogICAgIGNhc2Ugb3B0CkBAIC0xMTksNiArMTIyLDggQEAgR2V0b3B0
TG9uZy5uZXcoWyctLWhlbHAnLCAnLWgnLCBHZXRvcHRMbwogICAgICAgICAkZXJyb3JPbkZhaWx1
cmUgPSB0cnVlCiAgICAgd2hlbiAnLS1uby1lcnJvci1vbi1mYWlsdXJlJwogICAgICAgICAkZXJy
b3JPbkZhaWx1cmUgPSBmYWxzZQorICAgIHdoZW4gJy0tbWFrZS1idW5kbGUnCisgICAgICAgICRj
cmVhdGVCdW5kbGUgPSB0cnVlCiAgICAgd2hlbiAnLS12ZXJib3NlJwogICAgICAgICAkdmVyYm9z
aXR5ICs9IDEKICAgICBlbmQKQEAgLTEzMSw2ICsxMzYsMTAgQEAgdW5sZXNzICRqc2NQYXRoCiAg
ICAgZXhpdCAxCiBlbmQKIAoraWYgJGNyZWF0ZUJ1bmRsZQorICAgICRjYW5SdW5EaXNwbGF5UHJv
ZmlsZXJPdXRwdXQgPSBmYWxzZQorZW5kCisKICRudW1GYWlsdXJlcyA9IDAKIAogRUFHRVJfT1BU
SU9OUyA9IFsiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9sZEZv
ckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwgIi0t
dGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JP
cHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVwPTIw
IiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIl0KQEAgLTIxNCw3ICsyMjMsNyBA
QCBkZWYgbW96aWxsYUVycm9ySGFuZGxlcgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgIChjYXQgI3tvdXRwdXRGaWxlbmFtZX0gJiYgZWNobyBFUlJPUjog
VW5leHBlY3RlZCBleGl0IGNvZGU6IGBjYXQgI3twbGFuLmZhaWxGaWxlfWApIHwgIiArIHByZWZp
eENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWls
Q29tbWFuZAotICAgICAgICBvdXRwLnB1dHMgImVsaWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoSEVMUEVSU19QQVRIICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsg
IiAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICJlbGlmIGdyZXAgLWkgLXEg
ZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgogICAg
ICAgICBvdXRwLnB1dHMgIiAgICAoZWNobyBEZXRlY3RlZCBmYWlsdXJlczogJiYgY2F0ICN7b3V0
cHV0RmlsZW5hbWV9KSB8ICIgKyBwcmVmaXhDb21tYW5kKHBsYW4ubmFtZSkKICAgICAgICAgb3V0
cC5wdXRzICIgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTIzNCw3ICsyNDMsNyBAQCBkZWYg
bW96aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7
cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5w
dXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlm
IHJ1YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJjaGVjay1t
b3ppbGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91
dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCiAgICAg
ICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3Vj
Y2Vzc0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlIgpAQCAtMjU1LDcgKzI2NCw3IEBA
IGRlZiBtb3ppbGxhRXhpdDNFcnJvckhhbmRsZXIKICAgICAgICAgb3V0cC5wdXRzICJ0aGVuIgog
ICAgICAgICBvdXRwLnB1dHMgIiAgICBpZiBbIGBjYXQgI3twbGFuLmZhaWxGaWxlfWAgLWVxIDMg
XSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAg
ICAgIGlmIHJ1YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJj
aGVjay1tb3ppbGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAg
ICAgIG91dHAucHV0cyAiICAgICAgICBpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxl
bmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICB0aGVuIgogICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRG
aWxlbmFtZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1
dHMgIiAgICAgICAgICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCkBAIC0yNzUsNiArMjg0LDg5IEBA
IGVuZAogCiAkcnVuQ29tbWFuZE9wdGlvbnMgPSB7fQogCitjbGFzcyBCdW5kbGUKKyAgICBhdHRy
X2FjY2Vzc29yIDpiYXNlRm9yRXh0cmFGaWxlcworCisgICAgZGVmIGFkZChsb2NhbFRlc3RQYXRo
LCB0ZXN0TmFtZSkKKyAgICBlbmQKKworICAgIGRlZiB3aWxsU3RhcnRMb2FkaW5nVGVzdHMKKyAg
ICBlbmQKKworICAgIGRlZiBkaWRGaW5pc2hMb2FkaW5nVGVzdHMKKyAgICBlbmQKKworICAgIGRl
ZiBhZGRFeHRyYUZpbGVzKGV4dHJhRmlsZXMpCisgICAgZW5kCisKKyAgICBkZWYgcGFja2FnZSEK
KyAgICBlbmQKKworICAgIGRlZiBsb2NhbFBhdGhUb0J1bmRsZVBhdGgobG9jYWxQYXRoKQorICAg
ICAgICBXRUJLSVRfUEFUSCArIGxvY2FsUGF0aAorICAgIGVuZAorZW5kCisKK2NsYXNzIE1vdmFi
bGVCdW5kbGUgPCBCdW5kbGUKKyAgICBkZWYgaW5pdGlhbGl6ZShidW5kbGVSb290KQorICAgICAg
ICBAYnVuZGxlUm9vdCA9IGJ1bmRsZVJvb3QKKyAgICAgICAgQGJ1bmRsZWRGaWxlQ291bnQgPSAw
CisgICAgZW5kCisKKyAgICBkZWYgd2lsbFN0YXJ0TG9hZGluZ1Rlc3RzCisgICAgICAgICRzdGRl
cnIucHV0cyAiQ29weWluZyB0ZXN0cyBpbnRvIGJ1bmRsZS4uLiIKKyAgICAgICAgYWRkTGF5b3V0
VGVzdEZpbGVzCisgICAgZW5kCisKKyAgICBkZWYgZGlkRmluaXNoTG9hZGluZ1Rlc3RzCisgICAg
ICAgICRzdGRlcnIucHV0cyAiRG9uZSBjb3B5aW5nIHRlc3RzIGludG8gYnVuZGxlLiIKKyAgICBl
bmQKKworICAgIGRlZiBhZGQobG9jYWxUZXN0UGF0aCwgdGVzdE5hbWUpCisgICAgICAgIGJ1bmRs
ZVRlc3RQYXRoID0gbG9jYWxQYXRoVG9CdW5kbGVQYXRoKGxvY2FsVGVzdFBhdGgpCisgICAgICAg
IGxvY2FsRnVsbFBhdGggPSBsb2NhbFRlc3RQYXRoICsgdGVzdE5hbWUKKyAgICAgICAgYnVuZGxl
RnVsbFBhdGggPSBidW5kbGVUZXN0UGF0aCArIHRlc3ROYW1lCisKKyAgICAgICAgc3lzdGVtKCJt
a2RpciIsICItcCIsIGJ1bmRsZVRlc3RQYXRoLnRvX3MpIHVubGVzcyBidW5kbGVUZXN0UGF0aC5k
aXJlY3Rvcnk/CisgICAgICAgIHN5c3RlbSgiY3AiLCBsb2NhbEZ1bGxQYXRoLnRvX3MsIGJ1bmRs
ZUZ1bGxQYXRoLnRvX3MpCisKKyAgICAgICAgQGJ1bmRsZWRGaWxlQ291bnQgKz0gMQorICAgICAg
ICBwcmludCgiXHIgICAgIiArIEBidW5kbGVkRmlsZUNvdW50LnRvX3MgKyAiXHIiKQorICAgIGVu
ZAorCisgICAgZGVmIGFkZExheW91dFRlc3RGaWxlcworICAgICAgICBhZGQoTEFZT1VUVEVTVFNf
UkVMQVRJVkVfUEFUSCArICJyZXNvdXJjZXMiLCAic3RhbmRhbG9uZS1wcmUuanMiKQorICAgICAg
ICBhZGQoTEFZT1VUVEVTVFNfUkVMQVRJVkVfUEFUSCArICJyZXNvdXJjZXMiLCAic3RhbmRhbG9u
ZS1wb3N0LmpzIikKKyAgICBlbmQKKworICAgIGRlZiBhZGRFeHRyYUZpbGVzKGV4dHJhRmlsZXMp
CisgICAgICAgIGV4dHJhRmlsZXMuZWFjaCB7CisgICAgICAgICAgICB8IGZpbGUgfAorICAgICAg
ICAgICAgYWRkKEBiYXNlRm9yRXh0cmFGaWxlcywgZmlsZSkKKyAgICAgICAgfQorICAgIGVuZAor
CisgICAgZGVmIHBhY2thZ2UhCisgICAgICAgICRzdGRlcnIucHV0cyAiQ3JlYXRpbmcgdGFyYmFs
bCBmb3IgYnVuZGxlLi4uIgorICAgICAgICBEaXIuY2hkaXIoJG91dHB1dERpciArICIuLiIpIHsK
KyAgICAgICAgICAgIGNtZCA9ICJ0YXIgLWN6ZiBwYXlsb2FkLnRhci5neiAjeyRvdXRwdXREaXIu
YmFzZW5hbWV9IgorICAgICAgICAgICAgJHN0ZGVyci5wdXRzICI+PiAje2NtZH0iIGlmICR2ZXJi
b3NpdHkgPj0gMgorICAgICAgICAgICAgcmFpc2UgdW5sZXNzIHN5c3RlbShjbWQpCisgICAgICAg
IH0KKyAgICAgICAgJHN0ZGVyci5wdXRzKCJEb25lLiIpCisgICAgZW5kCisKKyAgICBkZWYgbG9j
YWxQYXRoVG9CdW5kbGVQYXRoKGxvY2FsUGF0aCkKKyAgICAgICAgQGJ1bmRsZVJvb3QgKyBsb2Nh
bFBhdGgKKyAgICBlbmQKK2VuZAorCitpZiAkY3JlYXRlQnVuZGxlCisgICAgJHRlc3RCdW5kbGUg
PSBNb3ZhYmxlQnVuZGxlLm5ldygkb3V0cHV0RGlyICsgIi50ZXN0cyIpCitlbHNlCisgICAgJHRl
c3RCdW5kbGUgPSBCdW5kbGUubmV3CitlbmQKKwogY2xhc3MgUGxhbgogICAgIGF0dHJfcmVhZGVy
IDpkaXJlY3RvcnksIDphcmd1bWVudHMsIDpuYW1lLCA6b3V0cHV0SGFuZGxlciwgOmVycm9ySGFu
ZGxlcgogICAgIGF0dHJfYWNjZXNzb3IgOmluZGV4CkBAIC00ODUsMTEgKzU3NywxMyBAQCBkZWYg
cnVuTGF5b3V0VGVzdChraW5kLCAqb3B0aW9ucykKICAgICBlbHNlCiAgICAgICAgIGtpbmQgPSAi
bGF5b3V0IgogICAgIGVuZAorICAgIGJ1bmRsZUxheW91dFRlc3RzUGF0aCA9ICR0ZXN0QnVuZGxl
LmxvY2FsUGF0aFRvQnVuZGxlUGF0aChMQVlPVVRURVNUU19SRUxBVElWRV9QQVRIKQorICAgICR0
ZXN0QnVuZGxlLmFkZEV4dHJhRmlsZXMoW1BhdGhuYW1lLm5ldygiLi4vI3t0ZXN0TmFtZX0tZXhw
ZWN0ZWQudHh0IildKQogICAgIGFyZ3MgPQogICAgICAgICBbJGpzY1BhdGgudG9fc10gKyBvcHRp
b25zICsKLSAgICAgICAgWyhMQVlPVVRURVNUU19QQVRIICsgInJlc291cmNlcyIgKyAic3RhbmRh
bG9uZS1wcmUuanMiKS50b19zLAorICAgICAgICBbKGJ1bmRsZUxheW91dFRlc3RzUGF0aCArICJy
ZXNvdXJjZXMiICsgInN0YW5kYWxvbmUtcHJlLmpzIikudG9fcywKICAgICAgICAgICRiZW5jaG1h
cmsudG9fcywKLSAgICAgICAgIChMQVlPVVRURVNUU19QQVRIICsgInJlc291cmNlcyIgKyAic3Rh
bmRhbG9uZS1wb3N0LmpzIikudG9fc10KKyAgICAgICAgIChidW5kbGVMYXlvdXRUZXN0c1BhdGgg
KyAicmVzb3VyY2VzIiArICJzdGFuZGFsb25lLXBvc3QuanMiKS50b19zXQogICAgIGFkZFJ1bkNv
bW1hbmQoa2luZCwgYXJncywgbm9pc3lPdXRwdXRIYW5kbGVyLCBkaWZmRXJyb3JIYW5kbGVyKCgk
YmVuY2htYXJrRGlyZWN0b3J5LmRpcm5hbWUgKyAiI3t0ZXN0TmFtZX0tZXhwZWN0ZWQudHh0Iiku
dG9fcykpCiBlbmQKIApAQCAtNTIyLDYgKzYxNiw3IEBAIGRlZiBydW5Nb3ppbGxhVGVzdChraW5k
LCBtb2RlLCBleHRyYUZpbGUKICAgICBlbHNlCiAgICAgICAgIGtpbmQgPSAibW96aWxsYSIKICAg
ICBlbmQKKyAgICAkdGVzdEJ1bmRsZS5hZGRFeHRyYUZpbGVzKGV4dHJhRmlsZXMpCiAgICAgYXJn
cyA9IFskanNjUGF0aC50b19zXSArIG9wdGlvbnMgKyBleHRyYUZpbGVzLm1hcHt8dnwgKCRiZW5j
aG1hcmtEaXJlY3RvcnkgKyB2KS50b19zfSArIFskYmVuY2htYXJrLnRvX3NdCiAgICAgY2FzZSBt
b2RlCiAgICAgd2hlbiA6bm9ybWFsCkBAIC02NjYsMTAgKzc2MSwxMyBAQCBkZWYgaGFuZGxlQ29s
bGVjdGlvbkZpbGUoY29sbGVjdGlvbikKICAgICAgICAgYWxsSlNGaWxlcyhzdWJDb2xsZWN0aW9u
KS5lYWNoIHsKICAgICAgICAgICAgIHwgcGF0aCB8CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHBhdGggPSBwYXRoLnJlYWxwYXRoCi0gICAgICAgICAgICAKKyAgICAgICAgICAgICR0ZXN0QnVu
ZGxlLmFkZChwYXRoLmRpcm5hbWUsIHBhdGguYmFzZW5hbWUpCisgICAgICAgICAgICAkdGVzdEJ1
bmRsZS5iYXNlRm9yRXh0cmFGaWxlcyA9IHBhdGguZGlybmFtZQorCisgICAgICAgICAgICBwYXRo
ID0gJHRlc3RCdW5kbGUubG9jYWxQYXRoVG9CdW5kbGVQYXRoKHBhdGgpLnJlYWxwYXRoCisKKyAg
ICAgICAgICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSBwYXRoLmRpcm5hbWUgCiAgICAgICAgICAg
ICAkYmVuY2htYXJrID0gcGF0aC5iYXNlbmFtZQotICAgICAgICAgICAgJGJlbmNobWFya0RpcmVj
dG9yeSA9IHBhdGguZGlybmFtZQogICAgICAgICAgICAgCiAgICAgICAgICAgICAkcnVuQ29tbWFu
ZE9wdGlvbnMgPSB7fQogICAgICAgICAgICAgZXZhbCBlbnRyeVsiY21kIl0KQEAgLTY4OSwxMSAr
Nzg3LDE0IEBAIGRlZiBoYW5kbGVDb2xsZWN0aW9uRGlyZWN0b3J5KGNvbGxlY3Rpb24KICAgICAK
ICAgICAkY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24KICAgICAkY29sbGVjdGlvbk5hbWUgPSBjb2xs
ZWN0aW9uTmFtZQotICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlvbgorICAgIGxv
Y2FsQmVuY2htYXJrRGlyZWN0b3J5ID0gJGNvbGxlY3Rpb24KKyAgICAkYmVuY2htYXJrRGlyZWN0
b3J5ID0gJHRlc3RCdW5kbGUubG9jYWxQYXRoVG9CdW5kbGVQYXRoKGxvY2FsQmVuY2htYXJrRGly
ZWN0b3J5KQorICAgICR0ZXN0QnVuZGxlLmJhc2VGb3JFeHRyYUZpbGVzID0gbG9jYWxCZW5jaG1h
cmtEaXJlY3RvcnkKICAgICBhbGxKU0ZpbGVzKCRjb2xsZWN0aW9uKS5lYWNoIHsKICAgICAgICAg
fCBwYXRoIHwKICAgICAgICAgCiAgICAgICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCisg
ICAgICAgICR0ZXN0QnVuZGxlLmFkZChsb2NhbEJlbmNobWFya0RpcmVjdG9yeSwgJGJlbmNobWFy
aykKICAgICAgICAgCiAgICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CiAgICAgICAgIGRl
ZmF1bHRSdW4gdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKQEAgLTcxMCwxMSArODExLDE1IEBAIGRl
ZiBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCiAgICAgZW5kCiBlbmQKIAorJHRlc3RCdW5k
bGUud2lsbFN0YXJ0TG9hZGluZ1Rlc3RzCisKIEFSR1YuZWFjaCB7CiAgICAgfCBjb2xsZWN0aW9u
IHwKICAgICBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCiB9CiAKKyR0ZXN0QnVuZGxlLmRp
ZEZpbmlzaExvYWRpbmdUZXN0cworCiBkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQogICAgIEZpbGUu
b3Blbigkb3V0cHV0RGlyICsgImZhaWxlZCIsICJhIikgewogICAgICAgICB8IG91dHAgfApAQCAt
ODEwLDYgKzkxNSwxMSBAQCBGaWxlLm9wZW4ocGFyYWxsZWxEaXIgKyAiTWFrZWZpbGUiLCAidyIp
CiAgICAgfQogfQogCitpZiAkY3JlYXRlQnVuZGxlCisgICAgJHRlc3RCdW5kbGUucGFja2FnZSEK
KyAgICBleGl0IDAKK2VuZAorCiBEaXIuY2hkaXIocGFyYWxsZWxEaXIpIHsKICAgICB1bmxlc3Mg
JHByb2dyZXNzTWV0ZXIKICAgICAgICAgbXlzeXMoIm1ha2UiLCAiLWoiLCAkbnVtUHJvY2Vzc29y
cy50b19zLCAiLXMiLCAiLWYiLCAiTWFrZWZpbGUiKQpJbmRleDogVG9vbHMvU2NyaXB0cy9qc2Mt
c3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmUKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1
cmUJKHJldmlzaW9uIDE1OTU2NCkKKysrIFRvb2xzL1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhl
bHBlcnMvY2hlY2stbW96aWxsYS1mYWlsdXJlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHJ1YnkKLQotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLUZpbGUub3BlbihBUkdWWzBdLCAiciIpIHsKLSAgICB8IGlucCB8Ci0gICAgaW5wLmVhY2hf
bGluZSB7Ci0gICAgICAgIHwgbGluZSB8Ci0gICAgICAgIGV4aXQgMCBpZiBsaW5lID1+IC9mYWls
ZWQhL2kKLSAgICB9Ci19Ci0KLWV4aXQgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217698</attachid>
            <date>2013-11-22 10:38:08 -0800</date>
            <delta_ts>2013-11-22 13:44:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131122103808.patch</filename>
            <type>text/plain</type>
            <size>37273</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTY5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEzLTExLTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuIFdhcyBqdXN0IGEgcnVieSBy
ZWltcGxlbWVudGF0aW9uIAorICAgICAgICBvZiBncmVwIC1pIC1xCisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6IFBhc3MgdGhyb3VnaCB0aGUgLS10YXJiYWxsIGZs
YWcuCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogQ2hhbmdlZCB0byBj
cmVhdGUgYSBidW5kbGUgb2YgdGVzdHMgaW5zaWRlIHRoZSByZXN1bHRzIGRpcmVjdG9yeS4gCisg
ICAgICAgIFdlIG5vdyBhbHNvIGNvcHkgd2hhdGV2ZXIgVk0gd2FzIHNwZWNpZmllZCwgYWxvbmcg
d2l0aCBpdHMgYXNzb2NpYXRlZCBmcmFtZXdvcmssIGludG8gdGhpcyBkaXJlY3RvcnkuIAorICAg
ICAgICBBbGwgb2YgdGhlIGdlbmVyYXRlZCBzY3JpcHRzIG5vdyBhcmUgY29tcGxldGVseSByZWxh
dGl2ZSB3aXRoaW4gdGhlIHJlc3VsdHMgZGlyZWN0b3J5LiBUaGlzIGFsbG93cyAKKyAgICAgICAg
cnVuLWpzYy1zdHJlc3MtdGVzdHMgdG8gZXhlY3V0ZSBhIGJ1bmRsZSBmcm9tIGFueXdoZXJlLiBB
bHNvIGFkZGVkIGEgLS10YXJiYWxsIGZsYWcgd2hpY2ggY3JlYXRlcyBhIAorICAgICAgICB0YXJi
YWxsIG9mIHRoZSBnZW5lcmF0ZWQgcmVzdWx0cyBkaXJlY3RvcnkuIEFsc28gcmVmYWN0b3JlZCBz
ZXZlcmFsIHBvcnRpb25zIG9mIHRoZSBzY3JpcHQgaW50byAKKyAgICAgICAgc2VwYXJhdGUgZnVu
Y3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJ1biB0aGVtIGNvbmRpdGlvbmFsbHkgZGVwZW5k
aW5nIG9uIHdoaWNoIG1vZGUgd2UncmUgcnVubmluZyBpbi4KKwogMjAxMy0xMS0yMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE1OTY5MC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0
Y29yZS10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBteSAkcnVuSlNDU3Ry
ZXNzID0gIWlzQXBwbGVXaW5XZWJLaXQoKSAmCiAKIG15ICRlbmFibGVGVEwgPSAwOwogCitteSAk
Y3JlYXRlVGFyYmFsbCA9IDA7CisKIG15ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKIG15
ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVpbGRKU0MgPyAid2lsbCBjaGVjayIgOiAid2lsbCBub3Qg
Y2hlY2siOwogbXkgJHRlc3RhcGlEZWZhdWx0ID0gJHJ1blRlc3RBUEkgPyAid2lsbCBydW4iIDog
IndpbGwgbm90IHJ1biI7CkBAIC05NCw2ICs5Niw3IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1bbm8tXWJ1aWxkICAgICAgICAgICAgICAgICAgQ2hlY2sg
KG9yIGRvbid0IGNoZWNrKSB0byBzZWUgaWYgdGhlIGpzYyBidWlsZCBpcyB1cC10by1kYXRlIChk
ZWZhdWx0OiAkYnVpbGRKU0NEZWZhdWx0KQogICAtLVtuby1ddGVzdGFwaSAgICAgICAgICAgICAg
ICBSdW4gKG9yIGRvbid0IHJ1bikgdGVzdGFwaSAoZGVmYXVsdDogJHRlc3RhcGlEZWZhdWx0KQog
ICAtLVtuby1danNjLXN0cmVzcyAgICAgICAgICAgICBSdW4gKG9yIGRvbid0IHJ1bikgdGhlIEpT
QyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRqc2NTdHJlc3NEZWZhdWx0KQorICAtLXRhcmJhbGwg
ICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB0YXJiYWxsIG9mIHRoZSBidW5kbGUgcHJvZHVj
ZWQgYnkgcnVubmluZyB0aGUgSlNDIHN0cmVzcyB0ZXN0cy4KIEVPRgogCiBHZXRPcHRpb25zKApA
QCAtMTA0LDYgKzEwNyw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ2Z0bC1qaXQhJyA9PiBcJGVuYWJs
ZUZUTCwKICAgICAndGVzdGFwaSEnID0+IFwkcnVuVGVzdEFQSSwKICAgICAnanNjLXN0cmVzcyEn
ID0+IFwkcnVuSlNDU3RyZXNzLAorICAgICd0YXJiYWxsIScgPT4gXCRjcmVhdGVUYXJiYWxsLAog
ICAgICdoZWxwJyA9PiBcJHNob3dIZWxwCiApOwogCkBAIC0yMzksNiArMjQzLDkgQEAgaWYgKCRy
dW5KU0NTdHJlc3MpIHsKICAgICBpZiAoJGVuYWJsZUZUTCkgewogICAgICAgICBwdXNoKEBqc2NT
dHJlc3NEcml2ZXJDbWQsICItLWZ0bC1qaXQiKTsKICAgICB9CisgICAgaWYgKCRjcmVhdGVUYXJi
YWxsKSB7CisgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tdGFyYmFsbCIpOwor
ICAgIH0KICAgICBpZiAoZGVmaW5lZCgkZXh0cmFUZXN0cykpIHsKICAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAkZXh0cmFUZXN0cyk7CiAgICAgfQpJbmRleDogVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCityZXF1aXJlICdmaWxldXRpbHMnCiByZXF1aXJlICdn
ZXRvcHRsb25nJwogcmVxdWlyZSAncGF0aG5hbWUnCiByZXF1aXJlICd5YW1sJwpAQCAtODEsMTAg
KzgyLDEwIEBAIGVuZAogCiAkanNjUGF0aCA9IG5pbAogJGVuYWJsZUZUTCA9IGZhbHNlCi0kY29s
bGVjdGlvbnMgPSBbXQogJG91dHB1dERpciA9IFBhdGhuYW1lLm5ldygicmVzdWx0cyIpCiAkdmVy
Ym9zaXR5ID0gMAotJGVycm9yT25GYWlsdXJlID0gZmFsc2UKKyRidW5kbGUgPSBuaWwKKyR0YXJi
YWxsID0gZmFsc2UKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMg
LWogPHNoZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4u
Ll0iCkBAIC05Miw4ICs5Myw5IEBAIGRlZiB1c2FnZQogICAgIHB1dHMgIi0tanNjICAgICAgICAg
ICAgICAgICgtaikgICBQYXRoIHRvIEphdmFTY3JpcHRDb3JlLiBUaGlzIG9wdGlvbiBpcyByZXF1
aXJlZC4iCiAgICAgcHV0cyAiLS1mdGwtaml0ICAgICAgICAgICAgICAgICAgIEluZGljYXRlIHRo
YXQgd2UgaGF2ZSB0aGUgRlRMIEpJVC4iCiAgICAgcHV0cyAiLS1vdXRwdXQtZGlyICAgICAgICAg
KC1vKSAgIFBhdGggd2hlcmUgdG8gcHV0IHJlc3VsdHMuIERlZmF1bHQgaXMgI3skb3V0cHV0RGly
fS4iCi0gICAgcHV0cyAiLS1bbm8tXWVycm9yLW9uLWZhaWx1cmUgICAgIEV4aXQgd2l0aCBleGl0
IGNvZGUgMSBpZiBhbnkgdGVzdHMgZmFpbC4gRGVmYXVsdCBpcyAjeyRlcnJvck9uRmFpbHVyZX0u
IgogICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAgICgtdikgICBQcmludCBtb3JlIHRoaW5n
cyB3aGlsZSBydW5uaW5nLiIKKyAgICBwdXRzICItLXJ1bi1idW5kbGUgICAgICAgICAgICAgICAg
UnVucyBhIGJ1bmRsZSBwcmV2aW91c2x5IGNyZWF0ZWQgYnkgcnVuLWpzYy1zdHJlc3MtdGVzdHMu
IgorICAgIHB1dHMgIi0tdGFyYmFsbCAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgdGFyYmFs
bCBvZiB0aGUgZmluYWwgYnVuZGxlLiIKICAgICBwdXRzICItLWhlbHAgICAgICAgICAgICAgICAo
LWgpICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIKICAgICBleGl0IDEKIGVuZApAQCAtMTAyLDkgKzEw
NCw5IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG8KICAgICAgICAg
ICAgICAgIFsnLS1qc2MnLCAnLWonLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAg
ICAgICAgICAgICAgICBbJy0tZnRsLWppdCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgIFsnLS1vdXRwdXQtZGlyJywgJy1vJywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAotICAgICAgICAgICAgICAgWyctLXZlcmJvc2UnLCAnLXYnLCBHZXRvcHRMb25n
OjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICBbJy0tZXJyb3Itb24tZmFpbHVyZScsIEdl
dG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgIFsnLS1uby1lcnJvci1vbi1m
YWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdKS5lYWNoIHsKKyAgICAgICAgICAgICAg
IFsnLS1ydW4tYnVuZGxlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgWyctLXRhcmJhbGwnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAg
ICAgICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSkuZWFj
aCB7CiAgICAgfCBvcHQsIGFyZyB8CiAgICAgY2FzZSBvcHQKICAgICB3aGVuICctLWhlbHAnCkBA
IC0xMTUsMTcgKzExNywyMiBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9w
dExvCiAgICAgICAgICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoYXJnKQogICAgIHdoZW4gJy0t
ZnRsLWppdCcKICAgICAgICAgJGVuYWJsZUZUTCA9IHRydWUKLSAgICB3aGVuICctLWVycm9yLW9u
LWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFpbHVyZSA9IHRydWUKLSAgICB3aGVuICctLW5v
LWVycm9yLW9uLWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFpbHVyZSA9IGZhbHNlCiAgICAg
d2hlbiAnLS12ZXJib3NlJwogICAgICAgICAkdmVyYm9zaXR5ICs9IDEKKyAgICB3aGVuICctLXJ1
bi1idW5kbGUnCisgICAgICAgICRidW5kbGUgPSBQYXRobmFtZS5uZXcoYXJnKQorICAgIHdoZW4g
Jy0tdGFyYmFsbCcKKyAgICAgICAgJHRhcmJhbGwgPSB0cnVlCiAgICAgZW5kCiB9CiAKICRwcm9n
cmVzc01ldGVyID0gKCR2ZXJib3NpdHkgPT0gMCBhbmQgJHN0ZGluLnR0eT8pCiAKK2lmICRidW5k
bGUKKyAgICAkanNjUGF0aCA9ICRidW5kbGUgKyAiLnZtIiArICJKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsiICsgIlJlc291cmNlcyIgKyAianNjIgorICAgICRvdXRwdXREaXIgPSAkYnVuZGxlCitl
bmQKKwogdW5sZXNzICRqc2NQYXRoCiAgICAgJHN0ZGVyci5wdXRzICJFcnJvcjogbXVzdCBzcGVj
aWZ5IC1qIDxwYXRoPi4iCiAgICAgZXhpdCAxCkBAIC0xMzcsNiArMTQ0LDM4IEBAIEVBR0VSX09Q
VElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXIKIAogJHJ1bmxpc3QgPSBbXQogCitkZWYg
ZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKKyAgICBpZiBqc2NQYXRoLmRpcm5hbWUuYmFz
ZW5hbWUudG9fcyA9PSAiUmVzb3VyY2VzIiBhbmQganNjUGF0aC5kaXJuYW1lLmRpcm5hbWUuYmFz
ZW5hbWUudG9fcyA9PSAiSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIgorICAgICAgICBqc2NQYXRo
LmRpcm5hbWUuZGlybmFtZQorICAgIGVsc2lmIGpzY1BhdGguZGlybmFtZS5iYXNlbmFtZS50b19z
ID09ICJEZWJ1ZyIgYW5kIGpzY1BhdGguZGlybmFtZS5kaXJuYW1lLmJhc2VuYW1lLnRvX3MgPT0g
IldlYktpdEJ1aWxkIgorICAgICAgICBqc2NQYXRoLmRpcm5hbWUgKyAiSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVua25vd24gSlNDIHBhdGgsIGNh
bm5vdCBjb3B5IGZ1bGwgZnJhbWV3b3JrOiAje2pzY1BhdGh9IgorICAgIGVuZAorZW5kCisKK2Rl
ZiBjb3B5Vk1Ub0J1bmRsZQorICAgIHJhaXNlIGlmICRidW5kbGUKKworICAgIHZtRGlyID0gJG91
dHB1dERpciArICIudm0iCisgICAgRmlsZVV0aWxzLm1rZGlyX3Agdm1EaXIKKyAgICAKKyAgICBm
cmFtZXdvcmtQYXRoID0gZnJhbWV3b3JrRnJvbUpTQ1BhdGgoJGpzY1BhdGgpCisgICAgRmlsZVV0
aWxzLmNwX3IgZnJhbWV3b3JrUGF0aCwgdm1EaXIKKworICAgICRmcmFtZXdvcmtQYXRoID0gUGF0
aG5hbWUubmV3KCIudm0iKSArICJKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsiCisgICAgJGpzY1Bh
dGggPSAkZnJhbWV3b3JrUGF0aCArICJSZXNvdXJjZXMiICsgImpzYyIKK2VuZAorCitkZWYgcGF0
aFRvVk0KKyAgICBkaXIgPSBQYXRobmFtZS5uZXcoIi4iKQorICAgICRiZW5jaG1hcmtEaXJlY3Rv
cnkuZWFjaF9maWxlbmFtZSB7CisgICAgICAgIHwgcGF0aENvbXBvbmVudCB8CisgICAgICAgIGRp
ciArPSAiLi4iCisgICAgfQorICAgIGRpciArICRqc2NQYXRoCitlbmQKKwogZGVmIHByZWZpeENv
bW1hbmQocHJlZml4KQogICAgICJhd2sgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoInsgcHJp
bnRmICN7KHByZWZpeCArICc6ICcpLmluc3BlY3R9OyBwcmludCB9IikKIGVuZApAQCAtMTQ5LDcg
KzE4OCw3IEBAIGVuZAogZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAg
ICAgICAgIHwgbmFtZSB8Ci0gICAgICAgICIgfCAiICsgcGlwZUFuZFByZWZpeENvbW1hbmQoKCRv
dXRwdXREaXIgKyAobmFtZSArICIub3V0IikpLnRvX3MsIG5hbWUpCisgICAgICAgICIgfCAiICsg
cGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50
b19zLCBuYW1lKQogICAgIH0KIGVuZAogCkBAIC0xNTcsNyArMTk2LDcgQEAgZW5kCiBkZWYgbm9p
c3lPdXRwdXRIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAgICB8IG5hbWUgfAotICAgICAg
ICAiIHwgY2F0ID4gIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyAobmFt
ZSArICIub3V0IikpLnRvX3MpCisgICAgICAgICIgfCBjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpCiAgICAgfQog
ZW5kCiAKQEAgLTE3OSwxNiArMjE4LDE2IEBAIGVuZAogZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhw
ZWN0ZWRGaWxlbmFtZSkKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0g
ICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERp
ciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotICAgICAgICBkaWZmRmlsZW5hbWUgPSBT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKCgkb3V0cHV0RGlyICsgKHBsYW4ubmFtZSArICIuZGlmZiIp
KS50b19zKQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUo
KFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCisgICAgICAgIGRp
ZmZGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBs
YW4ubmFtZSArICIuZGlmZiIpKS50b19zKQogICAgICAgICAKICAgICAgICAgb3V0cC5wdXRzICJp
ZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAg
ICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9S
OiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lICN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCisgICAgICAgIG91dHAucHV0cyAiZWxpZiB0
ZXN0IC1lIC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCiAg
ICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZGlmZiAtdSAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5h
bWV9ID4gI3tkaWZmRmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBkaWZmIC11IC4u
LyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0gI3tvdXRwdXRGaWxl
bmFtZX0gPiAje2RpZmZGaWxlbmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgJD8g
LWVxIDAgXSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKICAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKQEAgLTIwOCwxMyArMjQ3LDEzIEBAIGVuZAog
ZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwg
cGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgo
JG91dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRG
aWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4u
bmFtZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7
cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5w
dXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVk
IGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJlZml4Q29tbWFuZChw
bGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZWxpZiBydWJ5ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChI
RUxQRVJTX1BBVEggKyAiY2hlY2stbW96aWxsYS1mYWlsdXJlIikudG9fcykgKyAiICN7b3V0cHV0
RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7
b3V0cHV0RmlsZW5hbWV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAgICAgIG91dHAu
cHV0cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFt
ZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMjI5LDEyICsyNjgsMTIgQEAgZW5kCiBkZWYgbW96
aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxh
biB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91
dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRGaWxl
bmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFt
ZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxh
bi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIHJ1
YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJjaGVjay1tb3pp
bGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAu
cHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCiAgICAgICAg
IG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vz
c0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlIgpAQCAtMjQ5LDEzICsyODgsMTMgQEAg
ZW5kCiBkZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAg
ICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hl
bGxlc2NhcGUoKCRvdXRwdXREaXIgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICAg
ICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4i
KSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQogCiAgICAgICAgIG91dHAucHV0cyAiaWYg
dGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgIGlmIFsgYGNhdCAje3BsYW4uZmFpbEZpbGV9YCAtZXEgMyBdIgog
ICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
aWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoSEVMUEVSU19QQVRIICsgImNoZWNr
LW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsgIiAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1l
fSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCiAgICAgICAgIG91dHAucHV0cyAi
ICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVu
YW1lfSkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAi
ICAgICAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTI4MCw3ICszMTksNyBAQCBjbGFz
cyBQbGFuCiAgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKICAgICAKICAgICBkZWYgaW5pdGlhbGl6
ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVy
KQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnJlYWxwYXRoCisgICAgICAgIEBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkKICAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwogICAgICAg
ICBAbmFtZSA9IG5hbWUKICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCkBA
IC0yODksNyArMzI4LDEwIEBAIGNsYXNzIFBsYW4KICAgICBlbmQKICAgICAKICAgICBkZWYgc2hl
bGxDb21tYW5kCi0gICAgICAgICIoY2QgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3Rv
cnkudG9fcyl9ICYmIFwiJEBcIiAiICsgQGFyZ3VtZW50cy5tYXB7CisgICAgICAgICMgSXQncyBp
bXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBz
dWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQorICAgICAgICAjIGluIHRoZSBzdWJz
aGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3Rvcnku
IFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBiZW5kIG92
ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KKyAgICAgICAg
IihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgXCIk
QFwiICIgKyBAYXJndW1lbnRzLm1hcHsKICAgICAgICAgICAgIHwgdiB8CiAgICAgICAgICAgICBy
YWlzZSAiRGV0ZWN0ZWQgYSBub24tc3RyaW5nIGluICN7aW5zcGVjdH0iIHVubGVzcyB2LmlzX2E/
IFN0cmluZwogICAgICAgICAgICAgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2KQpAQCAtMjk3LDE1
ICszMzksMjYgQEAgY2xhc3MgUGxhbgogICAgIGVuZAogICAgIAogICAgIGRlZiByZXByb1Njcmlw
dENvbW1hbmQKLSAgICAgICAgc2NyaXB0ID0gIiIKKyAgICAgICAgIyBXZSBoYXZlIHRvIGZpbmQg
b3VyIHdheSBiYWNrIHRvIHRoZSAucGFyYWxsZWwgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVy
ZSBhbGwgb2YgdGhlIHJlbGF0aXZlCisgICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQg
b3V0IGZyb20uCisgICAgICAgIHNjcmlwdCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGly
bmFtZSBcIiR7QkFTSF9TT1VSQ0VbMF19XCIgKVwiICYmIHB3ZCApXCJcbiIKKyAgICAgICAgc2Ny
aXB0ICs9ICJjZCAkQ1VSUkVOVF9ESVJcbiIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5k
aXJuYW1lLmVhY2hfZmlsZW5hbWUgeworICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAg
ICAgICAgICAgIHNjcmlwdCArPSAiY2QgLi5cbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQg
Kz0gImNkIC5wYXJhbGxlbFxuIgorCiAgICAgICAgIElNUE9SVEFOVF9FTlZTLmVhY2ggewogICAg
ICAgICAgICAgfCBrZXkgfAotICAgICAgICAgICAgaWYgRU5WW2tleV0KKyAgICAgICAgICAgIGlm
IGtleSA9PSAiRFlMRF9GUkFNRVdPUktfUEFUSCIKKyAgICAgICAgICAgICAgICBzY3JpcHQgKz0g
ImV4cG9ydCAje2tleX09JChjZCAuLi8jeyRmcmFtZXdvcmtQYXRoLmRpcm5hbWV9OyBwd2QpXG4i
CisgICAgICAgICAgICBlbHNpZiBFTlZba2V5XQogICAgICAgICAgICAgICAgIHNjcmlwdCArPSAi
ZXhwb3J0ICN7a2V5fT0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WW2tleV0pfVxuIgogICAg
ICAgICAgICAgZW5kCiAgICAgICAgIH0KICAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29tbWFu
ZH0gfHwgZXhpdCAxIgotICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2Ny
aXB0KX0gPiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyBAbmFtZSkudG9f
cyl9IgorICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2NyaXB0KX0gPiAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSArIEBuYW1lKS50b19z
KX0iCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGZhaWxDb21tYW5kCkBAIC0zNjYsMjIgKzQxOSwy
NiBAQCBlbmQKICMgcmV0dXJucyBmYWxzZSwgaW4gd2hpY2ggY2FzZSB5b3UncmUgc3VwcG9zZWQg
dG8gYWRkIHlvdXIgb3duIHJ1biBjb21tYW5kcy4KIGRlZiBwYXJzZVJ1bkNvbW1hbmRzCiAgICAg
ZGlkUnVuID0gZmFsc2UKLSAgICBGaWxlLm9wZW4oJGJlbmNobWFya0RpcmVjdG9yeSArICRiZW5j
aG1hcmspIHsKLSAgICAgICAgfCBpbnAgfAotICAgICAgICBpbnAuZWFjaF9saW5lIHsKLSAgICAg
ICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgIGRvZXNN
YXRjaCA9IGxpbmUgPX4gL15cL1wvQC8KLSAgICAgICAgICAgIHJlc2N1ZSBFeGNlcHRpb24gPT4g
ZQotICAgICAgICAgICAgICAgICMgQXBwYXJlbnRseSB0aGlzIGhhcHBlbnMgaW4gdGhlIGNhc2Ug
b2Ygc29tZSBVVEY4IHN0dWZmIGluIHNvbWUgZmlsZXMsIHdoZXJlCi0gICAgICAgICAgICAgICAg
IyBSdWJ5IHRyaWVzIHRvIGJlIHN0cmljdCBhbmQgdGhyb3cgZXhjZXB0aW9ucy4KLSAgICAgICAg
ICAgICAgICBuZXh0Ci0gICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIG5leHQgdW5sZXNzIGRv
ZXNNYXRjaAotICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCi0gICAgICAgICAgICBkaWRS
dW4gPSB0cnVlCisKKyAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICBGaWxlLm9w
ZW4oJGJlbmNobWFya0RpcmVjdG9yeSArICRiZW5jaG1hcmspIHsKKyAgICAgICAgICAgIHwgaW5w
IHwKKyAgICAgICAgICAgIGlucC5lYWNoX2xpbmUgeworICAgICAgICAgICAgICAgIHwgbGluZSB8
CisgICAgICAgICAgICAgICAgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgZG9lc01hdGNoID0g
bGluZSA9fiAvXlwvXC9ALworICAgICAgICAgICAgICAgIHJlc2N1ZSBFeGNlcHRpb24gPT4gZQor
ICAgICAgICAgICAgICAgICAgICAjIEFwcGFyZW50bHkgdGhpcyBoYXBwZW5zIGluIHRoZSBjYXNl
IG9mIHNvbWUgVVRGOCBzdHVmZiBpbiBzb21lIGZpbGVzLCB3aGVyZQorICAgICAgICAgICAgICAg
ICAgICAjIFJ1YnkgdHJpZXMgdG8gYmUgc3RyaWN0IGFuZCB0aHJvdyBleGNlcHRpb25zLgorICAg
ICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgZG9lc01hdGNoCisgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21h
dGNoCisgICAgICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQorICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorCiAgICAgZGlkUnVuCiBlbmQKIApAQCAtMzkwLDcgKzQ0Nyw3IEBAIGRlZiBz
bG93IQogZW5kCiAKIGRlZiBydW4oa2luZCwgKm9wdGlvbnMpCi0gICAgYWRkUnVuQ29tbWFuZChr
aW5kLCBbJGpzY1BhdGgudG9fc10gKyBvcHRpb25zICsgWyRiZW5jaG1hcmsudG9fc10sIHNpbGVu
dE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKKyAgICBhZGRSdW5Db21tYW5kKGtp
bmQsIFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKyBbJGJlbmNobWFyay50b19zXSwgc2lsZW50
T3V0cHV0SGFuZGxlciwgc2ltcGxlRXJyb3JIYW5kbGVyKQogZW5kCiAKIGRlZiBydW5EZWZhdWx0
CkBAIC00NzAsNyArNTI3LDcgQEAgZW5kCiBkZWYgcnVuUHJvZmlsZXIKICAgICBwcm9maWxlck91
dHB1dCA9IHVuaXF1ZUZpbGVuYW1lKCIuanNvbiIpCiAgICAgaWYgJGNhblJ1bkRpc3BsYXlQcm9m
aWxlck91dHB1dAotICAgICAgICBhZGRSdW5Db21tYW5kKCJwcm9maWxlciIsIFsicnVieSIsIChI
RUxQRVJTX1BBVEggKyAicHJvZmlsZXItdGVzdC1oZWxwZXIiKS50b19zLCAoU0NSSVBUU19QQVRI
ICsgImRpc3BsYXktcHJvZmlsZXItb3V0cHV0IikudG9fcywgcHJvZmlsZXJPdXRwdXQudG9fcywg
JGpzY1BhdGgudG9fcywgIi1wIiwgcHJvZmlsZXJPdXRwdXQudG9fcywgJGJlbmNobWFyay50b19z
XSwgc2lsZW50T3V0cHV0SGFuZGxlciwgc2ltcGxlRXJyb3JIYW5kbGVyKQorICAgICAgICBhZGRS
dW5Db21tYW5kKCJwcm9maWxlciIsIFsicnVieSIsIChIRUxQRVJTX1BBVEggKyAicHJvZmlsZXIt
dGVzdC1oZWxwZXIiKS50b19zLCAoU0NSSVBUU19QQVRIICsgImRpc3BsYXktcHJvZmlsZXItb3V0
cHV0IikudG9fcywgcHJvZmlsZXJPdXRwdXQudG9fcywgcGF0aFRvVk0udG9fcywgIi1wIiwgcHJv
ZmlsZXJPdXRwdXQudG9fcywgJGJlbmNobWFyay50b19zXSwgc2lsZW50T3V0cHV0SGFuZGxlciwg
c2ltcGxlRXJyb3JIYW5kbGVyKQogICAgIGVsc2UKICAgICAgICAgcHV0cyAiUnVubmluZyBzaW1w
bGUgdmVyc2lvbiBvZiAjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSBiZWNhdXNlIHNv
bWUgcmVxdWlyZWQgUnVieSBmZWF0dXJlcyBhcmUgdW5hdmFpbGFibGUuIgogICAgICAgICBydW4o
InByb2ZpbGVyLXNpbXBsZSIsICItcCIsIHByb2ZpbGVyT3V0cHV0LnRvX3MpCkBAIC00ODUsMTIg
KzU0MiwxNSBAQCBkZWYgcnVuTGF5b3V0VGVzdChraW5kLCAqb3B0aW9ucykKICAgICBlbHNlCiAg
ICAgICAgIGtpbmQgPSAibGF5b3V0IgogICAgIGVuZAotICAgIGFyZ3MgPQotICAgICAgICBbJGpz
Y1BhdGgudG9fc10gKyBvcHRpb25zICsKLSAgICAgICAgWyhMQVlPVVRURVNUU19QQVRIICsgInJl
c291cmNlcyIgKyAic3RhbmRhbG9uZS1wcmUuanMiKS50b19zLAorCisgICAgcHJlcGFyZUV4dHJh
UmVsYXRpdmVGaWxlcyhbIi4uLyN7dGVzdE5hbWV9LWV4cGVjdGVkLnR4dCJdKQorICAgIHByZXBh
cmVFeHRyYUFic29sdXRlRmlsZXMoTEFZT1VUVEVTVFNfUEFUSCwgWyJyZXNvdXJjZXMvc3RhbmRh
bG9uZS1wcmUuanMiLCAicmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcyJdKQorCisgICAgYXJn
cyA9IFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKworICAgICAgICBbKFBhdGhuYW1lLm5ldygi
cmVzb3VyY2VzIikgKyAic3RhbmRhbG9uZS1wcmUuanMiKS50b19zLAogICAgICAgICAgJGJlbmNo
bWFyay50b19zLAotICAgICAgICAgKExBWU9VVFRFU1RTX1BBVEggKyAicmVzb3VyY2VzIiArICJz
dGFuZGFsb25lLXBvc3QuanMiKS50b19zXQotICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgYXJncywg
bm9pc3lPdXRwdXRIYW5kbGVyLCBkaWZmRXJyb3JIYW5kbGVyKCgkYmVuY2htYXJrRGlyZWN0b3J5
LmRpcm5hbWUgKyAiI3t0ZXN0TmFtZX0tZXhwZWN0ZWQudHh0IikudG9fcykpCisgICAgICAgICAo
UGF0aG5hbWUubmV3KCJyZXNvdXJjZXMiKSArICJzdGFuZGFsb25lLXBvc3QuanMiKS50b19zXQor
ICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgYXJncywgbm9pc3lPdXRwdXRIYW5kbGVyLCBkaWZmRXJy
b3JIYW5kbGVyKCgkYmVuY2htYXJrRGlyZWN0b3J5ICsgIi4uLyN7dGVzdE5hbWV9LWV4cGVjdGVk
LnR4dCIpLnRvX3MpKQogZW5kCiAKIGRlZiBydW5MYXlvdXRUZXN0RGVmYXVsdApAQCAtNTE2LDEz
ICs1NzYsNDAgQEAgZGVmIGRlZmF1bHRSdW5MYXlvdXRUZXN0CiAgICAgcnVuTGF5b3V0VGVzdERG
R0VhZ2VyTm9DSklUCiBlbmQKIAorZGVmIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoZXh0cmFG
aWxlcykKKyAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICBleHRyYUZpbGVzLmVh
Y2ggeworICAgICAgICAgICAgfCBmaWxlIHwKKyAgICAgICAgICAgIEZpbGVVdGlscy5jcCAkZXh0
cmFGaWxlc0Jhc2VEaXIgKyBmaWxlLCAkYmVuY2htYXJrRGlyZWN0b3J5ICsgZmlsZQorICAgICAg
ICB9CisgICAgfQorZW5kCisKK2RlZiBiYXNlRGlyRm9yQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFt
ZSkKKyAgICBQYXRobmFtZSgiLnRlc3RzIikgKyBjb2xsZWN0aW9uTmFtZQorZW5kCisKK2RlZiBw
cmVwYXJlRXh0cmFBYnNvbHV0ZUZpbGVzKGFic29sdXRlQmFzZSwgZXh0cmFGaWxlcykKKyAgICBy
YWlzZSB1bmxlc3MgYWJzb2x1dGVCYXNlLmFic29sdXRlPworICAgIERpci5jaGRpcigkb3V0cHV0
RGlyKSB7CisgICAgICAgIGNvbGxlY3Rpb25CYXNlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24o
JGNvbGxlY3Rpb25OYW1lKQorICAgICAgICBleHRyYUZpbGVzLmVhY2ggeworICAgICAgICAgICAg
fCBmaWxlIHwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gY29sbGVjdGlvbkJhc2VEaXIgKyBm
aWxlCisgICAgICAgICAgICBGaWxlVXRpbHMubWtkaXJfcCBkZXN0aW5hdGlvbi5kaXJuYW1lIHVu
bGVzcyBkZXN0aW5hdGlvbi5kaXJlY3Rvcnk/CisgICAgICAgICAgICBGaWxlVXRpbHMuY3AgYWJz
b2x1dGVCYXNlICsgZmlsZSwgZGVzdGluYXRpb24KKyAgICAgICAgfQorICAgIH0KK2VuZAorCiBk
ZWYgcnVuTW96aWxsYVRlc3Qoa2luZCwgbW9kZSwgZXh0cmFGaWxlcywgKm9wdGlvbnMpCiAgICAg
aWYga2luZAogICAgICAgICBraW5kID0gIm1vemlsbGEtIiArIGtpbmQKICAgICBlbHNlCiAgICAg
ICAgIGtpbmQgPSAibW96aWxsYSIKICAgICBlbmQKLSAgICBhcmdzID0gWyRqc2NQYXRoLnRvX3Nd
ICsgb3B0aW9ucyArIGV4dHJhRmlsZXMubWFwe3x2fCAoJGJlbmNobWFya0RpcmVjdG9yeSArIHYp
LnRvX3N9ICsgWyRiZW5jaG1hcmsudG9fc10KKyAgICBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVz
KGV4dHJhRmlsZXMpCisgICAgYXJncyA9IFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKyBleHRy
YUZpbGVzLm1hcHt8dnwgdi50b19zfSArIFskYmVuY2htYXJrLnRvX3NdCiAgICAgY2FzZSBtb2Rl
CiAgICAgd2hlbiA6bm9ybWFsCiAgICAgICAgIGVycm9ySGFuZGxlciA9IG1vemlsbGFFcnJvckhh
bmRsZXIKQEAgLTU2NSwxNCArNjUyLDYgQEAgZGVmIHNraXAKICAgICBwdXRzICJTa2lwcGluZyAj
eyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSIKIGVuZAogCi1EaXIubWtkaXIoJG91dHB1
dERpcikgdW5sZXNzICRvdXRwdXREaXIuZGlyZWN0b3J5PwotYmVnaW4KLSAgICBGaWxlLmRlbGV0
ZSgkb3V0cHV0RGlyICsgImZhaWxlZCIpCi1yZXNjdWUKLWVuZAotCi0kb3V0cHV0RGlyID0gJG91
dHB1dERpci5yZWFscGF0aAotCiBkZWYgYWxsSlNGaWxlcyhwYXRoKQogICAgIGlmIHBhdGguZmls
ZT8KICAgICAgICAgW3BhdGhdCkBAIC02MTQsMTEgKzY5MywzNCBAQCBkZWYgc2ltcGxpZnlDb2xs
ZWN0aW9uTmFtZShjb2xsZWN0aW9uUGF0CiBlbmQKIAogZGVmIHByZXBhcmVDb2xsZWN0aW9uKG5h
bWUpCi0gICAgZGlyID0gJG91dHB1dERpcgotICAgIFBhdGhuYW1lLm5ldyhuYW1lKS5lYWNoX2Zp
bGVuYW1lIHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAgICAgIGRpciA9IGRpciArIGZpbGVu
YW1lCi0gICAgICAgIERpci5ta2RpcihkaXIpIHVubGVzcyBkaXIuZGlyZWN0b3J5PworICAgIEZp
bGVVdGlscy5ta2Rpcl9wICRvdXRwdXREaXIgKyBuYW1lCisKKyAgICBhYnNvbHV0ZUNvbGxlY3Rp
b24gPSAkY29sbGVjdGlvbi5yZWFscGF0aAorCisgICAgRGlyLmNoZGlyKCRvdXRwdXREaXIpIHsK
KyAgICAgICAgYnVuZGxlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24obmFtZSkKKworICAgICAg
ICAjIENyZWF0ZSB0aGUgcHJvcGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLgorICAgICAgICBGaWxl
VXRpbHMubWtkaXJfcCBidW5kbGVEaXIKKyAgICAgICAgaWYgYnVuZGxlRGlyLmJhc2VuYW1lID09
ICRjb2xsZWN0aW9uLmJhc2VuYW1lCisgICAgICAgICAgICBGaWxlVXRpbHMuY3BfciBhYnNvbHV0
ZUNvbGxlY3Rpb24sIGJ1bmRsZURpci5kaXJuYW1lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IEZpbGVVdGlscy5jcF9yIGFic29sdXRlQ29sbGVjdGlvbiwgYnVuZGxlRGlyCisgICAgICAgIGVu
ZAorCisgICAgICAgICMgSGFuZGxlIHNwZWNpYWwgY2FzZXMgdGhhdCBleHBlY3QgZXh0cmEgZmls
ZXMuCisgICAgICAgIGlmIG5hbWUgPX4gL15tb3ppbGxhLXRlc3RzXC55YW1sLworICAgICAgICAg
ICAgJGV4dHJhRmlsZXNCYXNlRGlyID0gYWJzb2x1dGVDb2xsZWN0aW9uLmRpcm5hbWUKKyAgICAg
ICAgZWxzaWYgbmFtZSA9fiAvXmpzYy1sYXlvdXQtdGVzdHNcLnlhbWwvCisgICAgICAgICAgICAk
ZXh0cmFGaWxlc0Jhc2VEaXIgPSBhYnNvbHV0ZUNvbGxlY3Rpb24KKyAgICAgICAgZW5kCisKKyAg
ICAgICAgIyBSZWRpcmVjdCB0aGUgY29sbGVjdGlvbidzIGxvY2F0aW9uIHRvIHRoZSBuZXdseSBj
b25zdHJ1Y3RlZCBidW5kbGUuCisgICAgICAgIGlmIGFic29sdXRlQ29sbGVjdGlvbi5kaXJlY3Rv
cnk/CisgICAgICAgICAgICAkY29sbGVjdGlvbiA9IGJ1bmRsZURpcgorICAgICAgICBlbHNlCisg
ICAgICAgICAgICAkY29sbGVjdGlvbiA9IGJ1bmRsZURpciArICRjb2xsZWN0aW9uLmJhc2VuYW1l
CisgICAgICAgIGVuZAogICAgIH0KIGVuZAogCkBAIC02MjYsNyArNzI4LDcgQEAgJGNvbGxlY3Rp
b25OYW1lcyA9IHt9CiAKIGRlZiBoYW5kbGVDb2xsZWN0aW9uRmlsZShjb2xsZWN0aW9uKQogICAg
IGNvbGxlY3Rpb25OYW1lID0gc2ltcGxpZnlDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uKQotICAg
IAorICAgCiAgICAgcGF0aHMgPSB7fQogICAgIHN1YkNvbGxlY3Rpb25zID0gW10KICAgICBZQU1M
Ojpsb2FkKElPOjpyZWFkKGNvbGxlY3Rpb24pKS5lYWNoIHsKQEAgLTY2MiwxNyArNzY0LDE3IEBA
IGRlZiBoYW5kbGVDb2xsZWN0aW9uRmlsZShjb2xsZWN0aW9uKQogICAgICAgICAkY29sbGVjdGlv
bk5hbWUgPSAkY29sbGVjdGlvbk5hbWUudG9fcwogICAgICAgICAKICAgICAgICAgcHJlcGFyZUNv
bGxlY3Rpb24oJGNvbGxlY3Rpb25OYW1lKQotICAgICAgICAKLSAgICAgICAgYWxsSlNGaWxlcyhz
dWJDb2xsZWN0aW9uKS5lYWNoIHsKLSAgICAgICAgICAgIHwgcGF0aCB8Ci0gICAgICAgICAgICAK
LSAgICAgICAgICAgIHBhdGggPSBwYXRoLnJlYWxwYXRoCi0gICAgICAgICAgICAKLSAgICAgICAg
ICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCi0gICAgICAgICAgICAkYmVuY2htYXJrRGly
ZWN0b3J5ID0gcGF0aC5kaXJuYW1lCi0gICAgICAgICAgICAKLSAgICAgICAgICAgICRydW5Db21t
YW5kT3B0aW9ucyA9IHt9Ci0gICAgICAgICAgICBldmFsIGVudHJ5WyJjbWQiXQorICAgICAgCisg
ICAgICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgICAgICBhbGxKU0ZpbGVzKCRj
b2xsZWN0aW9uKS5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHBhdGggfAorICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgJGJlbmNobWFyayA9IHBhdGguYmFzZW5hbWUKKyAgICAgICAg
ICAgICAgICAkYmVuY2htYXJrRGlyZWN0b3J5ID0gcGF0aC5kaXJuYW1lCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgJHJ1bkNvbW1hbmRPcHRpb25zID0ge30KKyAgICAgICAgICAg
ICAgICBldmFsIGVudHJ5WyJjbWQiXQorICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQog
ICAgIApAQCAtNjg1LDE4ICs3ODcsMjAgQEAgZW5kCiBkZWYgaGFuZGxlQ29sbGVjdGlvbkRpcmVj
dG9yeShjb2xsZWN0aW9uKQogICAgIGNvbGxlY3Rpb25OYW1lID0gc2ltcGxpZnlDb2xsZWN0aW9u
TmFtZShjb2xsZWN0aW9uKQogICAgIAotICAgIHByZXBhcmVDb2xsZWN0aW9uKGNvbGxlY3Rpb25O
YW1lKQotICAgIAogICAgICRjb2xsZWN0aW9uID0gY29sbGVjdGlvbgogICAgICRjb2xsZWN0aW9u
TmFtZSA9IGNvbGxlY3Rpb25OYW1lCi0gICAgJGJlbmNobWFya0RpcmVjdG9yeSA9ICRjb2xsZWN0
aW9uCi0gICAgYWxsSlNGaWxlcygkY29sbGVjdGlvbikuZWFjaCB7Ci0gICAgICAgIHwgcGF0aCB8
Ci0gICAgICAgIAotICAgICAgICAkYmVuY2htYXJrID0gcGF0aC5iYXNlbmFtZQotICAgICAgICAK
LSAgICAgICAgJHJ1bkNvbW1hbmRPcHRpb25zID0ge30KLSAgICAgICAgZGVmYXVsdFJ1biB1bmxl
c3MgcGFyc2VSdW5Db21tYW5kcworICAgIHByZXBhcmVDb2xsZWN0aW9uKGNvbGxlY3Rpb25OYW1l
KQorICAgCisgICAgRGlyLmNoZGlyKCRvdXRwdXREaXIpIHsKKyAgICAgICAgJGJlbmNobWFya0Rp
cmVjdG9yeSA9ICRjb2xsZWN0aW9uCisgICAgICAgIGFsbEpTRmlsZXMoJGNvbGxlY3Rpb24pLmVh
Y2ggeworICAgICAgICAgICAgfCBwYXRoIHwKKyAgICAgICAgICAgIAorICAgICAgICAgICAgJGJl
bmNobWFyayA9IHBhdGguYmFzZW5hbWUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgJHJ1bkNv
bW1hbmRPcHRpb25zID0ge30KKyAgICAgICAgICAgIGRlZmF1bHRSdW4gdW5sZXNzIHBhcnNlUnVu
Q29tbWFuZHMKKyAgICAgICAgfQogICAgIH0KIGVuZAogCkBAIC03MTAsMTEgKzgxNCw2IEBAIGRl
ZiBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCiAgICAgZW5kCiBlbmQKIAotQVJHVi5lYWNo
IHsKLSAgICB8IGNvbGxlY3Rpb24gfAotICAgIGhhbmRsZUNvbGxlY3Rpb24oY29sbGVjdGlvbikK
LX0KLQogZGVmIGFwcGVuZEZhaWx1cmUocGxhbikKICAgICBGaWxlLm9wZW4oJG91dHB1dERpciAr
ICJmYWlsZWQiLCAiYSIpIHsKICAgICAgICAgfCBvdXRwIHwKQEAgLTcyMyw2ICs4MjIsMTI2IEBA
IGRlZiBhcHBlbmRGYWlsdXJlKHBsYW4pCiAgICAgJG51bUZhaWx1cmVzICs9IDEKIGVuZAogCitk
ZWYgcHJlcGFyZUJ1bmRsZQorICAgIHJhaXNlIGlmICRidW5kbGUKKworICAgIGNvcHlWTVRvQnVu
ZGxlCisKKyAgICBBUkdWLmVhY2ggeworICAgICAgICB8IGNvbGxlY3Rpb24gfAorICAgICAgICBo
YW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCisgICAgfQorZW5kCisKK2RlZiBjbGVhbk9sZFJl
c3VsdHMKKyAgICByYWlzZSB1bmxlc3MgJGJ1bmRsZQorCisgICAgZWFjaFJlc3VsdEZpbGUoJG91
dHB1dERpcikgeworICAgICAgICB8IHBhdGggfAorICAgICAgICBGaWxlVXRpbHMucm1fZiBwYXRo
CisgICAgfQorZW5kCisKK2RlZiBjbGVhbkVtcHR5UmVzdWx0RmlsZXMKKyAgICBlYWNoUmVzdWx0
RmlsZSgkb3V0cHV0RGlyKSB7CisgICAgICAgIHwgcGF0aCB8CisgICAgICAgIG5leHQgdW5sZXNz
IHBhdGguYmFzZW5hbWUudG9fcyA9fiAvXC5vdXQkLworICAgICAgICBuZXh0IHVubGVzcyBGaWxl
VGVzdC5zaXplKHBhdGgpID09IDAKKyAgICAgICAgRmlsZVV0aWxzLnJtX2YgcGF0aAorICAgIH0K
K2VuZAorCitkZWYgZWFjaFJlc3VsdEZpbGUoc3RhcnRpbmdEaXIsICZibG9jaykKKyAgICBkaXJz
VG9DbGVhbiA9IFtzdGFydGluZ0Rpcl0KKyAgICB1bnRpbCBkaXJzVG9DbGVhbi5lbXB0eT8gZG8K
KyAgICAgICAgbmV4dERpciA9IGRpcnNUb0NsZWFuLnBvcAorICAgICAgICBEaXIuZm9yZWFjaChu
ZXh0RGlyKSB7CisgICAgICAgICAgICB8IGVudHJ5IHwKKyAgICAgICAgICAgIG5leHQgaWYgZW50
cnkgPX4gL15cLi8KKyAgICAgICAgICAgIHBhdGggPSBuZXh0RGlyICsgZW50cnkKKyAgICAgICAg
ICAgIGlmIHBhdGguZGlyZWN0b3J5PworICAgICAgICAgICAgICAgIGRpcnNUb0NsZWFuLnB1c2go
cGF0aCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBibG9jay5jYWxsKHBhdGgp
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2RlZiBwcmVwYXJl
UGFyYWxsZWxUZXN0UnVubmVyCisgICAgIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3Qg
cnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCisgICAgIyBzaW1wbGlj
aXR5IHBhcnQgaXMgcGFydGljdWxhcmx5IGltcG9ydGFudC4gV2UgZG9uJ3Qgd2FudCB0byBoYXZl
IHRvIGhhdmUKKyAgICAjIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNp
bmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4KKyAgICAjCisgICAgIyBBcyBzdWNoLCB3ZSBqdXN0
IHBhc3Mgb2ZmIGFsbCBvZiB0aGUgaGFyZCB3b3JrIHRvICdtYWtlJy4gVGhpcyBjcmVhdGVzIGEK
KyAgICAjIGR1bW15IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnBhcmFsbGVsIikgaW4gd2hpY2gg
d2UgY3JlYXRlIGEgZHVtbXkKKyAgICAjIE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGFuICdh
bGwnIHJ1bGUgdGhhdCBkZXBlbmRzIG9uIGFsbCBvZiB0aGUgdGVzdHMuCisgICAgIyBUaGF0IGlz
LCBmb3IgZWFjaCB0ZXN0IHdlIGtub3cgd2Ugd2lsbCBydW4sIHRoZXJlIGlzIGEgcnVsZSBpbiB0
aGUKKyAgICAjIE1ha2VmaWxlIGFuZCAnYWxsJyBkZXBlbmRzIG9uIGl0LiBSdW5uaW5nICdtYWtl
IC1qIDx3aGF0ZXZlcj4nIG9uIHRoaXMKKyAgICAjIE1ha2VmaWxlIHJlc3VsdHMgaW4gJ21ha2Un
IGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgorICAgICMKKyAgICAjIC0gTG9hZCBiYWxhbmNp
bmcganVzdCB3b3Jrcy4gTW9zdCBzeXN0ZW1zIGhhdmUgYSBncmVhdCBsb2FkIGJhbGFuY2VyIGlu
CisgICAgIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFs
bCBhIHJlYWwgJ21ha2UnLgorICAgICMKKyAgICAjIC0gSW50ZXJydXB0aW9ucyBqdXN0IHdvcmsu
IEZvciBleGFtcGxlIEN0cmwtQyBoYW5kbGluZyBpbiAnbWFrZScgaXMKKyAgICAjICAgZXhhY3Rs
eSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4K
KyAgICAjCisgICAgIyBXZSB0aGVuIGRvIHNvbWUgdHJpY2tzIHRvIG1ha2UgZmFpbHVyZSBkZXRl
Y3Rpb24gd29yayBhbmQgdG8gbWFrZSB0aGlzCisgICAgIyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRl
c3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KKyAgICAjIHN0
b3AuIFdlIGFsc28gZG9uJ3QgaGF2ZSBhbnkgZmFjaWxpdHkgZm9yIG1ha2VmaWxlLWVzY2FwaW5n
IG9mIHBhdGggbmFtZXMuCisgICAgIyBXZSBkbyBoYXZlIHN1Y2ggYSB0aGluZyBmb3Igc2hlbGwt
ZXNjYXBpbmcsIHRob3VnaC4gV2UgZml4IGJvdGggcHJvYmxlbXMKKyAgICAjIGJ5IGhhdmluZyB0
aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNo
ZWxsCisgICAgIyBzY3JpcHQgb24gdGhlIHNpZGUuIFRoZXJlIGlzIG9uZSBzdWNoIHNjcmlwdCBw
ZXIgdGVzdC4gVGhlIHNjcmlwdCByZXNwb25kcworICAgICMgdG8gZmFpbHVyZSBieSBwcmludGlu
ZyBzb21ldGhpbmcgb24gdGhlIGNvbnNvbGUgYW5kIHRoZW4gdG91Y2hpbmcgYQorICAgICMgZmFp
bHVyZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBt
YWtlcyAnbWFrZScKKyAgICAjIGNvbnRpbnVlIHBhc3QgdGhhdCBmYWlsdXJlIGFuZCBjb21wbGV0
ZSBhbGwgdGhlIHRlc3RzIGFueXdheS4KKyAgICAjCisgICAgIyBJbiB0aGUgZW5kLCB0aGlzIHNj
cmlwdCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKKyAgICAj
IGZpbGVzIGluIHRoZSAucGFyYWxsZWwgZGlyZWN0b3J5IHdob3NlIG5hbWUgbWF0Y2hlcyAvXnRl
c3RfZmFpbF8vLCB3aGVyZQorICAgICMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8nIGlzIHRo
ZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKKyAgICAjIHdvdWxkIGJlIGNy
ZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQor
ICAgICMgYmFzaWNhbGx5IHVzaW5nIHRoZSBmaWxlc3lzdGVtIGFzIGEgY29uY3VycmVudCBkYXRh
YmFzZSBvZiB0ZXN0IGZhaWx1cmVzLgorICAgICMgRXZlbiBpZiB0d28gdGVzdHMgZmFpbCBhdCB0
aGUgc2FtZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAorICAgICMgZmls
ZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCisgICAgCisgICAgcnVuSW5kaWNlcyA9IFtd
CisgICAgJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBwbGFuLCBpbmRleCB8
CisgICAgICAgIHJ1bkluZGljZXMgPDwgaW5kZXgKKyAgICAgICAgcGxhbi5pbmRleCA9IGluZGV4
CisgICAgfQorICAgIAorICAgIERpci5ta2RpcigkcGFyYWxsZWxEaXIpIHVubGVzcyAkcGFyYWxs
ZWxEaXIuZGlyZWN0b3J5PworICAgIHRvRGVsZXRlID0gW10KKyAgICBEaXIuZm9yZWFjaCgkcGFy
YWxsZWxEaXIpIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAgICAgIGlmIGZpbGVuYW1lID1+
IC9edGVzdF8vCisgICAgICAgICAgICB0b0RlbGV0ZSA8PCBmaWxlbmFtZQorICAgICAgICBlbmQK
KyAgICB9CisgICAgCisgICAgdG9EZWxldGUuZWFjaCB7CisgICAgICAgIHwgZmlsZW5hbWUgfAor
ICAgICAgICBGaWxlLnVubGluaygkcGFyYWxsZWxEaXIgKyBmaWxlbmFtZSkKKyAgICB9CisKKyAg
ICAkcnVubGlzdC5lYWNoIHsKKyAgICAgICAgfCBwbGFuIHwKKyAgICAgICAgcGxhbi53cml0ZVJ1
blNjcmlwdCgkcGFyYWxsZWxEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCisgICAg
fQorICAgIAorICAgIEZpbGUub3BlbigkcGFyYWxsZWxEaXIgKyAiTWFrZWZpbGUiLCAidyIpIHsK
KyAgICAgICAgfCBvdXRwIHwKKyAgICAgICAgb3V0cC5wdXRzKCJhbGw6ICIgKyBydW5JbmRpY2Vz
Lm1hcHt8dnwgInRlc3RfZG9uZV8je3Z9In0uam9pbignICcpKQorICAgICAgICBydW5JbmRpY2Vz
LmVhY2ggeworICAgICAgICAgICAgfCBpbmRleCB8CisgICAgICAgICAgICBwbGFuID0gJHJ1bmxp
c3RbaW5kZXhdCisgICAgICAgICAgICBvdXRwLnB1dHMgInRlc3RfZG9uZV8je2luZGV4fToiCisg
ICAgICAgICAgICBvdXRwLnB1dHMgIlx0c2ggdGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIKKyAg
ICAgICAgfQorICAgIH0KK2VuZAorCiBpZiAkZW5hYmxlRlRMIGFuZCBFTlZbIkpTQ190aW1lb3V0
Il0KICAgICAjIEN1cnJlbnRseSwgdXNpbmcgdGhlIEZUTCBpcyBhIHBlcmZvcm1hbmNlIHJlZ3Jl
c3Npb24gcGFydGljdWxhcmx5IGluIHJlYWwKICAgICAjIChpLmUuIG5vbi1sb29weSkgYmVuY2ht
YXJrcy4gQWNjb3VudCBmb3IgdGhpcyBpbiB0aGUgdGltZW91dC4KQEAgLTczNCwxNTQgKzk1Mywx
MTcgQEAgaWYgRU5WWyJKU0NfdGltZW91dCJdCiAgICAgIyBJbmNyZWFzZSB0aGUgdGltZW91dCBw
cm9wb3J0aW9uYWxseSB0byB0aGUgbnVtYmVyIG9mIHByb2Nlc3NvcnMuCiAgICAgRU5WWyJKU0Nf
dGltZW91dCJdID0gKEVOVlsiSlNDX3RpbWVvdXQiXS50b19pLnRvX2YgKiBNYXRoLnNxcnQoJG51
bVByb2Nlc3NvcnMpKS50b19pLnRvX3MKIGVuZAotCi0jIFRoZSBnb2FscyBvZiBvdXIgcGFyYWxs
ZWwgdGVzdCBydW5uZXIgYXJlIHNjYWxhYmlsaXR5IGFuZCBzaW1wbGljaXR5LiBUaGUKLSMgc2lt
cGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdlIGRvbid0IHdhbnQgdG8g
aGF2ZSB0byBoYXZlCi0jIGEgZnVsbC10aW1lIGNvbnRyaWJ1dG9yIGp1c3QgcGhpbG9zb3BoaXNp
bmcgYWJvdXQgcGFyYWxsZWwgdGVzdGluZy4KLSMKLSMgQXMgc3VjaCwgd2UganVzdCBwYXNzIG9m
ZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFrZScuIFRoaXMgY3JlYXRlcyBhCi0jIGR1bW15
IGRpcmVjdG9yeSAoIiRvdXRwdXREaXIvLnBhcmFsbGVsIikgaW4gd2hpY2ggd2UgY3JlYXRlIGEg
ZHVtbXkKLSMgTWFrZWZpbGUuIFRoZSBNYWtlZmlsZSBoYXMgYW4gJ2FsbCcgcnVsZSB0aGF0IGRl
cGVuZHMgb24gYWxsIG9mIHRoZSB0ZXN0cy4KLSMgVGhhdCBpcywgZm9yIGVhY2ggdGVzdCB3ZSBr
bm93IHdlIHdpbGwgcnVuLCB0aGVyZSBpcyBhIHJ1bGUgaW4gdGhlCi0jIE1ha2VmaWxlIGFuZCAn
YWxsJyBkZXBlbmRzIG9uIGl0LiBSdW5uaW5nICdtYWtlIC1qIDx3aGF0ZXZlcj4nIG9uIHRoaXMK
LSMgTWFrZWZpbGUgcmVzdWx0cyBpbiAnbWFrZScgZG9pbmcgYWxsIG9mIHRoZSBoYXJkIHdvcms6
Ci0jCi0jIC0gTG9hZCBiYWxhbmNpbmcganVzdCB3b3Jrcy4gTW9zdCBzeXN0ZW1zIGhhdmUgYSBn
cmVhdCBsb2FkIGJhbGFuY2VyIGluCi0jICAgJ21ha2UnLiBJZiB5b3VyIHN5c3RlbSBkb2Vzbid0
IHRoZW4ganVzdCBpbnN0YWxsIGEgcmVhbCAnbWFrZScuCi0jCi0jIC0gSW50ZXJydXB0aW9ucyBq
dXN0IHdvcmsuIEZvciBleGFtcGxlIEN0cmwtQyBoYW5kbGluZyBpbiAnbWFrZScgaXMKLSMgICBl
eGFjdGx5IHJpZ2h0LiBZb3UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB6b21iaWUgcHJvY2Vz
c2VzLgotIwotIyBXZSB0aGVuIGRvIHNvbWUgdHJpY2tzIHRvIG1ha2UgZmFpbHVyZSBkZXRlY3Rp
b24gd29yayBhbmQgdG8gbWFrZSB0aGlzCi0jIHRvdGFsbHkgc291bmQuIElmIGEgdGVzdCBmYWls
cywgd2UgZG9uJ3Qgd2FudCB0aGUgd2hvbGUgJ21ha2UnIGpvYiB0bwotIyBzdG9wLiBXZSBhbHNv
IGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5h
bWVzLgotIyBXZSBkbyBoYXZlIHN1Y2ggYSB0aGluZyBmb3Igc2hlbGwtZXNjYXBpbmcsIHRob3Vn
aC4gV2UgZml4IGJvdGggcHJvYmxlbXMKLSMgYnkgaGF2aW5nIHRoZSBhY3R1YWwgd29yayBmb3Ig
ZWFjaCBvZiB0aGUgdGVzdCBydWxlcyBiZSBkb25lIGluIGEgc2hlbGwKLSMgc2NyaXB0IG9uIHRo
ZSBzaWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVz
cG9uZHMKLSMgdG8gZmFpbHVyZSBieSBwcmludGluZyBzb21ldGhpbmcgb24gdGhlIGNvbnNvbGUg
YW5kIHRoZW4gdG91Y2hpbmcgYQotIyBmYWlsdXJlIGZpbGUgZm9yIHRoYXQgdGVzdCwgYnV0IHRo
ZW4gc3RpbGwgcmV0dXJucyAwLiBUaGlzIG1ha2VzICdtYWtlJwotIyBjb250aW51ZSBwYXN0IHRo
YXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCi0jCi0jIEluIHRo
ZSBlbmQsIHRoaXMgc2NyaXB0IGNvbGxlY3RzIGFsbCBvZiB0aGUgZmFpbHVyZXMgYnkgc2VhcmNo
aW5nIGZvcgotIyBmaWxlcyBpbiB0aGUgLnBhcmFsbGVsIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1h
dGNoZXMgL150ZXN0X2ZhaWxfLywgd2hlcmUKLSMgdGhlIHRoaW5nIGFmdGVyIHRoZSAnZmFpbF8n
IGlzIHRoZSB0ZXN0IGluZGV4LiBUaG9zZSBhcmUgdGhlIGZpbGVzIHRoYXQKLSMgd291bGQgYmUg
Y3JlYXRlZCBieSB0aGUgdGVzdCBzY3JpcHRzIGlmIHRoZXkgZGV0ZWN0IGZhaWx1cmUuIFdlJ3Jl
Ci0jIGJhc2ljYWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJh
c2Ugb2YgdGVzdCBmYWlsdXJlcy4KLSMgRXZlbiBpZiB0d28gdGVzdHMgZmFpbCBhdCB0aGUgc2Ft
ZSB0aW1lLCBzaW5jZSB0aGV5J3JlIHRvdWNoaW5nIGRpZmZlcmVudAotIyBmaWxlcyB3ZSB3b24n
dCBtaXNzIGFueSBmYWlsdXJlcy4KLQotcnVuSW5kaWNlcyA9IFtdCi0kcnVubGlzdC5lYWNoX3dp
dGhfaW5kZXggewotICAgIHwgcGxhbiwgaW5kZXggfAotICAgIHJ1bkluZGljZXMgPDwgaW5kZXgK
LSAgICBwbGFuLmluZGV4ID0gaW5kZXgKLX0KLQotcGFyYWxsZWxEaXIgPSAkb3V0cHV0RGlyICsg
Ii5wYXJhbGxlbCIKLURpci5ta2RpcihwYXJhbGxlbERpcikgdW5sZXNzIHBhcmFsbGVsRGlyLmRp
cmVjdG9yeT8KLXRvRGVsZXRlID0gW10KLURpci5mb3JlYWNoKHBhcmFsbGVsRGlyKSB7Ci0gICAg
fCBmaWxlbmFtZSB8Ci0gICAgaWYgZmlsZW5hbWUgPX4gL150ZXN0Xy8KLSAgICAgICAgdG9EZWxl
dGUgPDwgZmlsZW5hbWUKLSAgICBlbmQKLX0KLQotdG9EZWxldGUuZWFjaCB7Ci0gICAgfCBmaWxl
bmFtZSB8Ci0gICAgRmlsZS51bmxpbmsocGFyYWxsZWxEaXIgKyBmaWxlbmFtZSkKLX0KLQorICAg
IAogcHV0cwogCi0kcnVubGlzdC5lYWNoIHsKLSAgICB8IHBsYW4gfAotICAgIHBsYW4ud3JpdGVS
dW5TY3JpcHQocGFyYWxsZWxEaXIgKyAidGVzdF9zY3JpcHRfI3twbGFuLmluZGV4fSIpCi19Ci0K
LUZpbGUub3BlbihwYXJhbGxlbERpciArICJNYWtlZmlsZSIsICJ3IikgewotICAgIHwgb3V0cCB8
Ci0gICAgb3V0cC5wdXRzKCJhbGw6ICIgKyBydW5JbmRpY2VzLm1hcHt8dnwgInRlc3RfZG9uZV8j
e3Z9In0uam9pbignICcpKQotICAgIHJ1bkluZGljZXMuZWFjaCB7Ci0gICAgICAgIHwgaW5kZXgg
fAotICAgICAgICBwbGFuID0gJHJ1bmxpc3RbaW5kZXhdCi0gICAgICAgIG91dHAucHV0cyAidGVz
dF9kb25lXyN7aW5kZXh9OiIKLSAgICAgICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7
cGxhbi5pbmRleH0iCitkZWYgY2xlYW5QYXJhbGxlbERpcmVjdG9yeQorICAgIHJhaXNlIHVubGVz
cyAkYnVuZGxlCisgICAgRGlyLmZvcmVhY2goJHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmls
ZW5hbWUgfAorICAgICAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvXnRlc3RfZmFpbC8KKyAg
ICAgICAgRmlsZVV0aWxzLnJtX2YgJHBhcmFsbGVsRGlyICsgZmlsZW5hbWUKICAgICB9Ci19Citl
bmQKIAotRGlyLmNoZGlyKHBhcmFsbGVsRGlyKSB7Ci0gICAgdW5sZXNzICRwcm9ncmVzc01ldGVy
Ci0gICAgICAgIG15c3lzKCJtYWtlIiwgIi1qIiwgJG51bVByb2Nlc3NvcnMudG9fcywgIi1zIiwg
Ii1mIiwgIk1ha2VmaWxlIikKLSAgICBlbHNlCi0gICAgICAgIGNtZCA9ICJtYWtlIC1qICN7JG51
bVByb2Nlc3NvcnN9IC1zIC1mIE1ha2VmaWxlIgotICAgICAgICBydW5uaW5nID0ge30KLSAgICAg
ICAgZGlkUnVuID0ge30KLSAgICAgICAgZGlkRmFpbCA9IHt9Ci0gICAgICAgIGJsYW5rTGluZSA9
IHRydWUKLSAgICAgICAgcHJldlN0cmluZ0xlbmd0aCA9IDAKLSAgICAgICAgSU8ucG9wZW4oY21k
LCAiciIpIHsKLSAgICAgICAgICAgIHwgaW5wIHwKLSAgICAgICAgICAgIGlucC5lYWNoX2xpbmUg
ewotICAgICAgICAgICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgICAgICAgbGluZS5jaG9tcCEK
LSAgICAgICAgICAgICAgICBpZiBsaW5lID1+IC9eUnVubmluZyAvCi0gICAgICAgICAgICAgICAg
ICAgIHJ1bm5pbmdbJH4ucG9zdF9tYXRjaF0gPSB0cnVlCi0gICAgICAgICAgICAgICAgZWxzaWYg
bGluZSA9fiAvXlBBU1M6IC8KLSAgICAgICAgICAgICAgICAgICAgZGlkUnVuWyR+LnBvc3RfbWF0
Y2hdID0gdHJ1ZQotICAgICAgICAgICAgICAgIGVsc2lmIGxpbmUgPX4gL15GQUlMOiAvCi0gICAg
ICAgICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKLSAgICAgICAgICAg
ICAgICAgICAgZGlkRmFpbFskfi5wb3N0X21hdGNoXSA9IHRydWUKLSAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHVubGVzcyBibGFua0xpbmUKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByaW50KCJcciIgKyAiICIgKiBwcmV2U3RyaW5nTGVuZ3RoICsgIlxyIikKLSAg
ICAgICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgICAgIHB1dHMgbGluZQotICAg
ICAgICAgICAgICAgICAgICBibGFua0xpbmUgPSB0cnVlCi0gICAgICAgICAgICAgICAgZW5kCi0g
ICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZGVmIGxwYWQoc3RyLCBjaGFycykKLSAg
ICAgICAgICAgICAgICAgICAgc3RyID0gc3RyLnRvX3MKLSAgICAgICAgICAgICAgICAgICAgaWYg
c3RyLmxlbmd0aCA+IGNoYXJzCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHIKK2RlZiBydW5Q
YXJhbGxlbFRlc3RSdW5uZXIKKyAgICBEaXIuY2hkaXIoJHBhcmFsbGVsRGlyKSB7CisgICAgICAg
ICMgLTEgZm9yIHRoZSBNYWtlZmlsZSwgYW5kIC0yIGZvciAnLi4nIGFuZCAnLicKKyAgICAgICAg
bnVtYmVyT2ZUZXN0cyA9IERpci5lbnRyaWVzKCIuIikuY291bnQgLSAzCisgICAgICAgIHVubGVz
cyAkcHJvZ3Jlc3NNZXRlcgorICAgICAgICAgICAgbXlzeXMoIm1ha2UiLCAiLWoiLCAkbnVtUHJv
Y2Vzc29ycy50b19zLCAiLXMiLCAiLWYiLCAiTWFrZWZpbGUiKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjbWQgPSAibWFrZSAtaiAjeyRudW1Qcm9jZXNzb3JzfSAtcyAtZiBNYWtlZmlsZSIK
KyAgICAgICAgICAgIHJ1bm5pbmcgPSB7fQorICAgICAgICAgICAgZGlkUnVuID0ge30KKyAgICAg
ICAgICAgIGRpZEZhaWwgPSB7fQorICAgICAgICAgICAgYmxhbmtMaW5lID0gdHJ1ZQorICAgICAg
ICAgICAgcHJldlN0cmluZ0xlbmd0aCA9IDAKKyAgICAgICAgICAgIElPLnBvcGVuKGNtZCwgInIi
KSB7CisgICAgICAgICAgICAgICAgfCBpbnAgfAorICAgICAgICAgICAgICAgIGlucC5lYWNoX2xp
bmUgeworICAgICAgICAgICAgICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgICAgICBs
aW5lLmNob21wIQorICAgICAgICAgICAgICAgICAgICBpZiBsaW5lID1+IC9eUnVubmluZyAvCisg
ICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nWyR+LnBvc3RfbWF0Y2hdID0gdHJ1ZQorICAg
ICAgICAgICAgICAgICAgICBlbHNpZiBsaW5lID1+IC9eUEFTUzogLworICAgICAgICAgICAgICAg
ICAgICAgICAgZGlkUnVuWyR+LnBvc3RfbWF0Y2hdID0gdHJ1ZQorICAgICAgICAgICAgICAgICAg
ICBlbHNpZiBsaW5lID1+IC9eRkFJTDogLworICAgICAgICAgICAgICAgICAgICAgICAgZGlkUnVu
WyR+LnBvc3RfbWF0Y2hdID0gdHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgZGlkRmFpbFsk
fi5wb3N0X21hdGNoXSA9IHRydWUKICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgICAgICAgICAgIiUje2NoYXJzfXMiJShzdHIpCisgICAgICAgICAgICAgICAgICAgICAg
ICB1bmxlc3MgYmxhbmtMaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIlxy
IiArICIgIiAqIHByZXZTdHJpbmdMZW5ndGggKyAiXHIiKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICBwdXRzIGxpbmUKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGJsYW5rTGluZSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkZWYgbHBhZChzdHIsIGNoYXJz
KQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gc3RyLnRvX3MKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHN0ci5sZW5ndGggPiBjaGFycworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cgorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICIlI3tjaGFyc31zIiUoc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgIAorICAgICAgICAgICAgICAgICAgICBzdHJp
bmcgID0gIiIKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICJcciN7bHBhZChkaWRSdW4u
c2l6ZSwgbnVtYmVyT2ZUZXN0cy50b19zLnNpemUpfS8je251bWJlck9mVGVzdHN9IgorICAgICAg
ICAgICAgICAgICAgICB1bmxlc3MgZGlkRmFpbC5lbXB0eT8KKyAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cmluZyArPSAiIChmYWlsZWQgI3tkaWRGYWlsLnNpemV9KSIKKyAgICAgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiICIKKyAgICAgICAgICAg
ICAgICAgICAgKHJ1bm5pbmcuc2l6ZSAtIGRpZFJ1bi5zaXplKS50aW1lcyB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBzdHJpbmcgKz0gIi4iCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgaWYgc3RyaW5nLmxlbmd0aCA8IHByZXZTdHJpbmdMZW5ndGgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHByaW50IHN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAg
cHJpbnQoIiAiICogKHByZXZTdHJpbmdMZW5ndGggLSBzdHJpbmcubGVuZ3RoKSkKICAgICAgICAg
ICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgZW5kCi0KLSAgICAgICAgICAgICAgICBz
dHJpbmcgID0gIiIKLSAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIlxyI3tscGFkKGRpZFJ1bi5z
aXplLCAkcnVubGlzdC5zaXplLnRvX3Muc2l6ZSl9LyN7JHJ1bmxpc3Quc2l6ZX0iCi0gICAgICAg
ICAgICAgICAgdW5sZXNzIGRpZEZhaWwuZW1wdHk/Ci0gICAgICAgICAgICAgICAgICAgIHN0cmlu
ZyArPSAiIChmYWlsZWQgI3tkaWRGYWlsLnNpemV9KSIKLSAgICAgICAgICAgICAgICBlbmQKLSAg
ICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiCi0gICAgICAgICAgICAgICAgKHJ1bm5pbmcuc2l6
ZSAtIGRpZFJ1bi5zaXplKS50aW1lcyB7Ci0gICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAi
LiIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgc3RyaW5nLmxlbmd0aCA8
IHByZXZTdHJpbmdMZW5ndGgKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgc3RyaW5nCi0gICAg
ICAgICAgICAgICAgICAgIHByaW50KCIgIiAqIChwcmV2U3RyaW5nTGVuZ3RoIC0gc3RyaW5nLmxl
bmd0aCkpCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgcHJpbnQgc3RyaW5n
Ci0gICAgICAgICAgICAgICAgcHJldlN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgKLSAgICAg
ICAgICAgICAgICBibGFua0xpbmUgPSBmYWxzZQotICAgICAgICAgICAgICAgICRzdGRvdXQuZmx1
c2gKKyAgICAgICAgICAgICAgICAgICAgcHJldlN0cmluZ0xlbmd0aCA9IHN0cmluZy5sZW5ndGgK
KyAgICAgICAgICAgICAgICAgICAgYmxhbmtMaW5lID0gZmFsc2UKKyAgICAgICAgICAgICAgICAg
ICAgJHN0ZG91dC5mbHVzaAorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAg
ICAgfQotICAgICAgICBwdXRzCi0gICAgICAgIHJhaXNlICJGYWlsZWQgdG8gcnVuICN7Y21kfTog
I3skPy5pbnNwZWN0fSIgdW5sZXNzICQ/LnN1Y2Nlc3M/Ci0gICAgZW5kCi19CisgICAgICAgICAg
ICBwdXRzCisgICAgICAgICAgICByYWlzZSAiRmFpbGVkIHRvIHJ1biAje2NtZH06ICN7JD8uaW5z
cGVjdH0iIHVubGVzcyAkPy5zdWNjZXNzPworICAgICAgICBlbmQKKyAgICB9CitlbmQKIAotIyBE
ZWxldGUgZW1wdHkgLm91dCBmaWxlcyB0byBtYWtlIGxpZmUgbGVzcyBjb25mdXNpbmcuCi0kcnVu
bGlzdC5lYWNoIHsKLSAgICB8IHBsYW4gfAotICAgIG91dHB1dEZpbGVuYW1lID0gJG91dHB1dERp
ciArIChwbGFuLm5hbWUgKyAiLm91dCIpCi0gICAgRmlsZS51bmxpbmsgb3V0cHV0RmlsZW5hbWUg
aWYgRmlsZVRlc3Quc2l6ZShvdXRwdXRGaWxlbmFtZSkgPT0gMAotfQorZGVmIGRldGVjdEZhaWx1
cmVzCisgICAgcmFpc2UgaWYgJGJ1bmRsZQogCi1EaXIuZm9yZWFjaChwYXJhbGxlbERpcikgewot
ICAgIHwgZmlsZW5hbWUgfAotICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC90ZXN0X2ZhaWxf
LwotICAgIGFwcGVuZEZhaWx1cmUoJHJ1bmxpc3RbJH4ucG9zdF9tYXRjaC50b19pXSkKLX0KKyAg
ICBEaXIuZm9yZWFjaCgkcGFyYWxsZWxEaXIpIHsKKyAgICAgICAgfCBmaWxlbmFtZSB8CisgICAg
ICAgIG5leHQgdW5sZXNzIGZpbGVuYW1lID1+IC90ZXN0X2ZhaWxfLworICAgICAgICBhcHBlbmRG
YWlsdXJlKCRydW5saXN0WyR+LnBvc3RfbWF0Y2gudG9faV0pCisgICAgfQorZW5kCisKK2RlZiBj
b21wcmVzc0J1bmRsZQorICAgIGNtZCA9ICJjZCAjeyRvdXRwdXREaXJ9Ly4uICYmIHRhciAtY3pm
IHBheWxvYWQudGFyLmd6ICN7JG91dHB1dERpci5iYXNlbmFtZX0iCisgICAgJHN0ZGVyci5wdXRz
ICI+PiAje2NtZH0iIGlmICR2ZXJib3NpdHkgPj0gMgorICAgIHJhaXNlIHVubGVzcyBzeXN0ZW0o
Y21kKQorZW5kCisKK0ZpbGVVdGlscy5ybV9yZiAkb3V0cHV0RGlyIGlmICRvdXRwdXREaXIuZGly
ZWN0b3J5PyBhbmQgbm90ICRidW5kbGUKK0Rpci5ta2Rpcigkb3V0cHV0RGlyKSB1bmxlc3MgJG91
dHB1dERpci5kaXJlY3Rvcnk/CisKK2JlZ2luCisgICAgRmlsZS5kZWxldGUoJG91dHB1dERpciAr
ICJmYWlsZWQiKQorcmVzY3VlCitlbmQKKworJG91dHB1dERpciA9ICRvdXRwdXREaXIucmVhbHBh
dGgKKyRwYXJhbGxlbERpciA9ICRvdXRwdXREaXIgKyAiLnBhcmFsbGVsIgorCitwcmVwYXJlQnVu
ZGxlIHVubGVzcyAkYnVuZGxlCitwcmVwYXJlUGFyYWxsZWxUZXN0UnVubmVyIHVubGVzcyAkYnVu
ZGxlCitjbGVhblBhcmFsbGVsRGlyZWN0b3J5IGlmICRidW5kbGUKK2NsZWFuT2xkUmVzdWx0cyBp
ZiAkYnVuZGxlCitydW5QYXJhbGxlbFRlc3RSdW5uZXIKK2NsZWFuRW1wdHlSZXN1bHRGaWxlcwor
ZGV0ZWN0RmFpbHVyZXMgdW5sZXNzICRidW5kbGUKK2NvbXByZXNzQnVuZGxlIGlmICR0YXJiYWxs
CkluZGV4OiBUb29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1oZWxwZXJzL2NoZWNrLW1vemls
bGEtZmFpbHVyZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2pzYy1zdHJlc3MtdGVzdC1o
ZWxwZXJzL2NoZWNrLW1vemlsbGEtZmFpbHVyZQkocmV2aXNpb24gMTU5Njk2KQorKysgVG9vbHMv
U2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmUJKHdv
cmtpbmcgY29weSkKQEAgLTEsMzQgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcnVieQotCi0jIENv
cHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSMgYXJlIG1ldDoKLSMKLSMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAotIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSMgICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
IAotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0jIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKLSMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotIyBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotIyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0jIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotIyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSMgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotRmlsZS5vcGVuKEFSR1ZbMF0sICJyIikgewot
ICAgIHwgaW5wIHwKLSAgICBpbnAuZWFjaF9saW5lIHsKLSAgICAgICAgfCBsaW5lIHwKLSAgICAg
ICAgZXhpdCAwIGlmIGxpbmUgPX4gL2ZhaWxlZCEvaQotICAgIH0KLX0KLQotZXhpdCAxCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217713</attachid>
            <date>2013-11-22 13:44:44 -0800</date>
            <delta_ts>2013-11-22 14:08:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131122134443.patch</filename>
            <type>text/plain</type>
            <size>37166</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTY5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEzLTExLTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuIFdhcyBqdXN0IGEgcnVieSBy
ZWltcGxlbWVudGF0aW9uIAorICAgICAgICBvZiBncmVwIC1pIC1xCisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6IFBhc3MgdGhyb3VnaCB0aGUgLS10YXJiYWxsIGZs
YWcuCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogQ2hhbmdlZCB0byBj
cmVhdGUgYSBidW5kbGUgb2YgdGVzdHMgaW5zaWRlIHRoZSByZXN1bHRzIGRpcmVjdG9yeS4gCisg
ICAgICAgIFdlIG5vdyBhbHNvIGNvcHkgd2hhdGV2ZXIgVk0gd2FzIHNwZWNpZmllZCwgYWxvbmcg
d2l0aCBpdHMgYXNzb2NpYXRlZCBmcmFtZXdvcmssIGludG8gdGhpcyBkaXJlY3RvcnkuIAorICAg
ICAgICBBbGwgb2YgdGhlIGdlbmVyYXRlZCBzY3JpcHRzIG5vdyBhcmUgY29tcGxldGVseSByZWxh
dGl2ZSB3aXRoaW4gdGhlIHJlc3VsdHMgZGlyZWN0b3J5LiBUaGlzIGFsbG93cyAKKyAgICAgICAg
cnVuLWpzYy1zdHJlc3MtdGVzdHMgdG8gZXhlY3V0ZSBhIGJ1bmRsZSBmcm9tIGFueXdoZXJlLiBB
bHNvIGFkZGVkIGEgLS10YXJiYWxsIGZsYWcgd2hpY2ggY3JlYXRlcyBhIAorICAgICAgICB0YXJi
YWxsIG9mIHRoZSBnZW5lcmF0ZWQgcmVzdWx0cyBkaXJlY3RvcnkuIEFsc28gcmVmYWN0b3JlZCBz
ZXZlcmFsIHBvcnRpb25zIG9mIHRoZSBzY3JpcHQgaW50byAKKyAgICAgICAgc2VwYXJhdGUgZnVu
Y3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJ1biB0aGVtIGNvbmRpdGlvbmFsbHkgZGVwZW5k
aW5nIG9uIHdoaWNoIG1vZGUgd2UncmUgcnVubmluZyBpbi4KKwogMjAxMy0xMS0yMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE1OTY5MC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0
Y29yZS10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBteSAkcnVuSlNDU3Ry
ZXNzID0gIWlzQXBwbGVXaW5XZWJLaXQoKSAmCiAKIG15ICRlbmFibGVGVEwgPSAwOwogCitteSAk
Y3JlYXRlVGFyYmFsbCA9IDA7CisKIG15ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKIG15
ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVpbGRKU0MgPyAid2lsbCBjaGVjayIgOiAid2lsbCBub3Qg
Y2hlY2siOwogbXkgJHRlc3RhcGlEZWZhdWx0ID0gJHJ1blRlc3RBUEkgPyAid2lsbCBydW4iIDog
IndpbGwgbm90IHJ1biI7CkBAIC05NCw2ICs5Niw3IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1bbm8tXWJ1aWxkICAgICAgICAgICAgICAgICAgQ2hlY2sg
KG9yIGRvbid0IGNoZWNrKSB0byBzZWUgaWYgdGhlIGpzYyBidWlsZCBpcyB1cC10by1kYXRlIChk
ZWZhdWx0OiAkYnVpbGRKU0NEZWZhdWx0KQogICAtLVtuby1ddGVzdGFwaSAgICAgICAgICAgICAg
ICBSdW4gKG9yIGRvbid0IHJ1bikgdGVzdGFwaSAoZGVmYXVsdDogJHRlc3RhcGlEZWZhdWx0KQog
ICAtLVtuby1danNjLXN0cmVzcyAgICAgICAgICAgICBSdW4gKG9yIGRvbid0IHJ1bikgdGhlIEpT
QyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRqc2NTdHJlc3NEZWZhdWx0KQorICAtLXRhcmJhbGwg
ICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB0YXJiYWxsIG9mIHRoZSBidW5kbGUgcHJvZHVj
ZWQgYnkgcnVubmluZyB0aGUgSlNDIHN0cmVzcyB0ZXN0cy4KIEVPRgogCiBHZXRPcHRpb25zKApA
QCAtMTA0LDYgKzEwNyw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ2Z0bC1qaXQhJyA9PiBcJGVuYWJs
ZUZUTCwKICAgICAndGVzdGFwaSEnID0+IFwkcnVuVGVzdEFQSSwKICAgICAnanNjLXN0cmVzcyEn
ID0+IFwkcnVuSlNDU3RyZXNzLAorICAgICd0YXJiYWxsIScgPT4gXCRjcmVhdGVUYXJiYWxsLAog
ICAgICdoZWxwJyA9PiBcJHNob3dIZWxwCiApOwogCkBAIC0yMzksNiArMjQzLDkgQEAgaWYgKCRy
dW5KU0NTdHJlc3MpIHsKICAgICBpZiAoJGVuYWJsZUZUTCkgewogICAgICAgICBwdXNoKEBqc2NT
dHJlc3NEcml2ZXJDbWQsICItLWZ0bC1qaXQiKTsKICAgICB9CisgICAgaWYgKCRjcmVhdGVUYXJi
YWxsKSB7CisgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tdGFyYmFsbCIpOwor
ICAgIH0KICAgICBpZiAoZGVmaW5lZCgkZXh0cmFUZXN0cykpIHsKICAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAkZXh0cmFUZXN0cyk7CiAgICAgfQpJbmRleDogVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCityZXF1aXJlICdmaWxldXRpbHMnCiByZXF1aXJlICdn
ZXRvcHRsb25nJwogcmVxdWlyZSAncGF0aG5hbWUnCiByZXF1aXJlICd5YW1sJwpAQCAtODEsMTAg
KzgyLDEwIEBAIGVuZAogCiAkanNjUGF0aCA9IG5pbAogJGVuYWJsZUZUTCA9IGZhbHNlCi0kY29s
bGVjdGlvbnMgPSBbXQogJG91dHB1dERpciA9IFBhdGhuYW1lLm5ldygicmVzdWx0cyIpCiAkdmVy
Ym9zaXR5ID0gMAotJGVycm9yT25GYWlsdXJlID0gZmFsc2UKKyRidW5kbGUgPSBuaWwKKyR0YXJi
YWxsID0gZmFsc2UKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVuLWpzYy1zdHJlc3MtdGVzdHMg
LWogPHNoZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNvbGxlY3Rpb25zIHBhdGg+IC4u
Ll0iCkBAIC05Miw4ICs5Myw5IEBAIGRlZiB1c2FnZQogICAgIHB1dHMgIi0tanNjICAgICAgICAg
ICAgICAgICgtaikgICBQYXRoIHRvIEphdmFTY3JpcHRDb3JlLiBUaGlzIG9wdGlvbiBpcyByZXF1
aXJlZC4iCiAgICAgcHV0cyAiLS1mdGwtaml0ICAgICAgICAgICAgICAgICAgIEluZGljYXRlIHRo
YXQgd2UgaGF2ZSB0aGUgRlRMIEpJVC4iCiAgICAgcHV0cyAiLS1vdXRwdXQtZGlyICAgICAgICAg
KC1vKSAgIFBhdGggd2hlcmUgdG8gcHV0IHJlc3VsdHMuIERlZmF1bHQgaXMgI3skb3V0cHV0RGly
fS4iCi0gICAgcHV0cyAiLS1bbm8tXWVycm9yLW9uLWZhaWx1cmUgICAgIEV4aXQgd2l0aCBleGl0
IGNvZGUgMSBpZiBhbnkgdGVzdHMgZmFpbC4gRGVmYXVsdCBpcyAjeyRlcnJvck9uRmFpbHVyZX0u
IgogICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAgICgtdikgICBQcmludCBtb3JlIHRoaW5n
cyB3aGlsZSBydW5uaW5nLiIKKyAgICBwdXRzICItLXJ1bi1idW5kbGUgICAgICAgICAgICAgICAg
UnVucyBhIGJ1bmRsZSBwcmV2aW91c2x5IGNyZWF0ZWQgYnkgcnVuLWpzYy1zdHJlc3MtdGVzdHMu
IgorICAgIHB1dHMgIi0tdGFyYmFsbCAgICAgICAgICAgICAgICAgICBDcmVhdGVzIGEgdGFyYmFs
bCBvZiB0aGUgZmluYWwgYnVuZGxlLiIKICAgICBwdXRzICItLWhlbHAgICAgICAgICAgICAgICAo
LWgpICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIKICAgICBleGl0IDEKIGVuZApAQCAtMTAyLDkgKzEw
NCw5IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG8KICAgICAgICAg
ICAgICAgIFsnLS1qc2MnLCAnLWonLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCiAg
ICAgICAgICAgICAgICBbJy0tZnRsLWppdCcsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKICAg
ICAgICAgICAgICAgIFsnLS1vdXRwdXQtZGlyJywgJy1vJywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAotICAgICAgICAgICAgICAgWyctLXZlcmJvc2UnLCAnLXYnLCBHZXRvcHRMb25n
OjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICBbJy0tZXJyb3Itb24tZmFpbHVyZScsIEdl
dG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAgIFsnLS1uby1lcnJvci1vbi1m
YWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdKS5lYWNoIHsKKyAgICAgICAgICAgICAg
IFsnLS1ydW4tYnVuZGxlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAorICAgICAg
ICAgICAgICAgWyctLXRhcmJhbGwnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCisgICAgICAg
ICAgICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSkuZWFj
aCB7CiAgICAgfCBvcHQsIGFyZyB8CiAgICAgY2FzZSBvcHQKICAgICB3aGVuICctLWhlbHAnCkBA
IC0xMTUsMTcgKzExNywyMiBAQCBHZXRvcHRMb25nLm5ldyhbJy0taGVscCcsICctaCcsIEdldG9w
dExvCiAgICAgICAgICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXcoYXJnKQogICAgIHdoZW4gJy0t
ZnRsLWppdCcKICAgICAgICAgJGVuYWJsZUZUTCA9IHRydWUKLSAgICB3aGVuICctLWVycm9yLW9u
LWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFpbHVyZSA9IHRydWUKLSAgICB3aGVuICctLW5v
LWVycm9yLW9uLWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFpbHVyZSA9IGZhbHNlCiAgICAg
d2hlbiAnLS12ZXJib3NlJwogICAgICAgICAkdmVyYm9zaXR5ICs9IDEKKyAgICB3aGVuICctLXJ1
bi1idW5kbGUnCisgICAgICAgICRidW5kbGUgPSBQYXRobmFtZS5uZXcoYXJnKQorICAgIHdoZW4g
Jy0tdGFyYmFsbCcKKyAgICAgICAgJHRhcmJhbGwgPSB0cnVlCiAgICAgZW5kCiB9CiAKICRwcm9n
cmVzc01ldGVyID0gKCR2ZXJib3NpdHkgPT0gMCBhbmQgJHN0ZGluLnR0eT8pCiAKK2lmICRidW5k
bGUKKyAgICAkanNjUGF0aCA9ICRidW5kbGUgKyAiLnZtIiArICJKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsiICsgIlJlc291cmNlcyIgKyAianNjIgorICAgICRvdXRwdXREaXIgPSAkYnVuZGxlCitl
bmQKKwogdW5sZXNzICRqc2NQYXRoCiAgICAgJHN0ZGVyci5wdXRzICJFcnJvcjogbXVzdCBzcGVj
aWZ5IC1qIDxwYXRoPi4iCiAgICAgZXhpdCAxCkBAIC0xMzcsNiArMTQ0LDM4IEBAIEVBR0VSX09Q
VElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXIKIAogJHJ1bmxpc3QgPSBbXQogCitkZWYg
ZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKKyAgICBpZiBqc2NQYXRoLmRpcm5hbWUuYmFz
ZW5hbWUudG9fcyA9PSAiUmVzb3VyY2VzIiBhbmQganNjUGF0aC5kaXJuYW1lLmRpcm5hbWUuYmFz
ZW5hbWUudG9fcyA9PSAiSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIgorICAgICAgICBqc2NQYXRo
LmRpcm5hbWUuZGlybmFtZQorICAgIGVsc2lmIGpzY1BhdGguZGlybmFtZS5iYXNlbmFtZS50b19z
ID09ICJEZWJ1ZyIgYW5kIGpzY1BhdGguZGlybmFtZS5kaXJuYW1lLmJhc2VuYW1lLnRvX3MgPT0g
IldlYktpdEJ1aWxkIgorICAgICAgICBqc2NQYXRoLmRpcm5hbWUgKyAiSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVua25vd24gSlNDIHBhdGgsIGNh
bm5vdCBjb3B5IGZ1bGwgZnJhbWV3b3JrOiAje2pzY1BhdGh9IgorICAgIGVuZAorZW5kCisKK2Rl
ZiBjb3B5Vk1Ub0J1bmRsZQorICAgIHJhaXNlIGlmICRidW5kbGUKKworICAgIHZtRGlyID0gJG91
dHB1dERpciArICIudm0iCisgICAgRmlsZVV0aWxzLm1rZGlyX3Agdm1EaXIKKyAgICAKKyAgICBm
cmFtZXdvcmtQYXRoID0gZnJhbWV3b3JrRnJvbUpTQ1BhdGgoJGpzY1BhdGgpCisgICAgRmlsZVV0
aWxzLmNwX3IgZnJhbWV3b3JrUGF0aCwgdm1EaXIKKworICAgICRmcmFtZXdvcmtQYXRoID0gUGF0
aG5hbWUubmV3KCIudm0iKSArICJKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsiCisgICAgJGpzY1Bh
dGggPSAkZnJhbWV3b3JrUGF0aCArICJSZXNvdXJjZXMiICsgImpzYyIKK2VuZAorCitkZWYgcGF0
aFRvVk0KKyAgICBkaXIgPSBQYXRobmFtZS5uZXcoIi4iKQorICAgICRiZW5jaG1hcmtEaXJlY3Rv
cnkuZWFjaF9maWxlbmFtZSB7CisgICAgICAgIHwgcGF0aENvbXBvbmVudCB8CisgICAgICAgIGRp
ciArPSAiLi4iCisgICAgfQorICAgIGRpciArICRqc2NQYXRoCitlbmQKKwogZGVmIHByZWZpeENv
bW1hbmQocHJlZml4KQogICAgICJhd2sgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoInsgcHJp
bnRmICN7KHByZWZpeCArICc6ICcpLmluc3BlY3R9OyBwcmludCB9IikKIGVuZApAQCAtMTQ5LDcg
KzE4OCw3IEBAIGVuZAogZGVmIHNpbGVudE91dHB1dEhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAg
ICAgICAgIHwgbmFtZSB8Ci0gICAgICAgICIgfCAiICsgcGlwZUFuZFByZWZpeENvbW1hbmQoKCRv
dXRwdXREaXIgKyAobmFtZSArICIub3V0IikpLnRvX3MsIG5hbWUpCisgICAgICAgICIgfCAiICsg
cGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50
b19zLCBuYW1lKQogICAgIH0KIGVuZAogCkBAIC0xNTcsNyArMTk2LDcgQEAgZW5kCiBkZWYgbm9p
c3lPdXRwdXRIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAgICB8IG5hbWUgfAotICAgICAg
ICAiIHwgY2F0ID4gIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyAobmFt
ZSArICIub3V0IikpLnRvX3MpCisgICAgICAgICIgfCBjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpCiAgICAgfQog
ZW5kCiAKQEAgLTE3OSwxNiArMjE4LDE2IEBAIGVuZAogZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhw
ZWN0ZWRGaWxlbmFtZSkKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0g
ICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERp
ciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotICAgICAgICBkaWZmRmlsZW5hbWUgPSBT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKCgkb3V0cHV0RGlyICsgKHBsYW4ubmFtZSArICIuZGlmZiIp
KS50b19zKQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUo
KFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCisgICAgICAgIGRp
ZmZGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBs
YW4ubmFtZSArICIuZGlmZiIpKS50b19zKQogICAgICAgICAKICAgICAgICAgb3V0cC5wdXRzICJp
ZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAg
ICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9S
OiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJl
Zml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZh
aWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lICN7U2hlbGx3b3Jkcy5z
aGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCisgICAgICAgIG91dHAucHV0cyAiZWxpZiB0
ZXN0IC1lIC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCiAg
ICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZGlmZiAtdSAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5h
bWV9ID4gI3tkaWZmRmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBkaWZmIC11IC4u
LyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0gI3tvdXRwdXRGaWxl
bmFtZX0gPiAje2RpZmZGaWxlbmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgJD8g
LWVxIDAgXSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIKICAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKQEAgLTIwOCwxMyArMjQ3LDEzIEBAIGVuZAog
ZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwg
cGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgo
JG91dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRG
aWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4u
bmFtZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7
cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5w
dXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVk
IGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJlZml4Q29tbWFuZChw
bGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0g
ICAgICAgIG91dHAucHV0cyAiZWxpZiBydWJ5ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChI
RUxQRVJTX1BBVEggKyAiY2hlY2stbW96aWxsYS1mYWlsdXJlIikudG9fcykgKyAiICN7b3V0cHV0
RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7
b3V0cHV0RmlsZW5hbWV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAgICAgIG91dHAu
cHV0cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFt
ZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAg
ICAiICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMjI5LDEyICsyNjgsMTIgQEAgZW5kCiBkZWYgbW96
aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxh
biB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91
dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRGaWxl
bmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFt
ZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxh
bi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRz
ICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIHJ1
YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJjaGVjay1tb3pp
bGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAu
cHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCiAgICAgICAg
IG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vz
c0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlIgpAQCAtMjQ5LDEzICsyODgsMTMgQEAg
ZW5kCiBkZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAg
ICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hl
bGxlc2NhcGUoKCRvdXRwdXREaXIgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICAg
ICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4i
KSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQogCiAgICAgICAgIG91dHAucHV0cyAiaWYg
dGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAg
ICAgIG91dHAucHV0cyAiICAgIGlmIFsgYGNhdCAje3BsYW4uZmFpbEZpbGV9YCAtZXEgMyBdIgog
ICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAg
aWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoSEVMUEVSU19QQVRIICsgImNoZWNr
LW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsgIiAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAg
b3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1l
fSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCiAgICAgICAgIG91dHAucHV0cyAi
ICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVu
YW1lfSkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAi
ICAgICAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTI4MCw3ICszMTksNyBAQCBjbGFz
cyBQbGFuCiAgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKICAgICAKICAgICBkZWYgaW5pdGlhbGl6
ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVy
KQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnJlYWxwYXRoCisgICAgICAgIEBkaXJl
Y3RvcnkgPSBkaXJlY3RvcnkKICAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwogICAgICAg
ICBAbmFtZSA9IG5hbWUKICAgICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCkBA
IC0yODksNyArMzI4LDEwIEBAIGNsYXNzIFBsYW4KICAgICBlbmQKICAgICAKICAgICBkZWYgc2hl
bGxDb21tYW5kCi0gICAgICAgICIoY2QgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3Rv
cnkudG9fcyl9ICYmIFwiJEBcIiAiICsgQGFyZ3VtZW50cy5tYXB7CisgICAgICAgICMgSXQncyBp
bXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBz
dWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQorICAgICAgICAjIGluIHRoZSBzdWJz
aGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3Rvcnku
IFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBiZW5kIG92
ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KKyAgICAgICAg
IihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgXCIk
QFwiICIgKyBAYXJndW1lbnRzLm1hcHsKICAgICAgICAgICAgIHwgdiB8CiAgICAgICAgICAgICBy
YWlzZSAiRGV0ZWN0ZWQgYSBub24tc3RyaW5nIGluICN7aW5zcGVjdH0iIHVubGVzcyB2LmlzX2E/
IFN0cmluZwogICAgICAgICAgICAgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2KQpAQCAtMjk3LDE1
ICszMzksMjYgQEAgY2xhc3MgUGxhbgogICAgIGVuZAogICAgIAogICAgIGRlZiByZXByb1Njcmlw
dENvbW1hbmQKLSAgICAgICAgc2NyaXB0ID0gIiIKKyAgICAgICAgIyBXZSBoYXZlIHRvIGZpbmQg
b3VyIHdheSBiYWNrIHRvIHRoZSAucGFyYWxsZWwgZGlyZWN0b3J5IHNpbmNlIHRoYXQncyB3aGVy
ZSBhbGwgb2YgdGhlIHJlbGF0aXZlCisgICAgICAgICMgcGF0aHMgYXNzdW1lIHRoZXkgc3RhcnQg
b3V0IGZyb20uCisgICAgICAgIHNjcmlwdCA9ICJDVVJSRU5UX0RJUj1cIiQoIGNkIFwiJCggZGly
bmFtZSBcIiR7QkFTSF9TT1VSQ0VbMF19XCIgKVwiICYmIHB3ZCApXCJcbiIKKyAgICAgICAgc2Ny
aXB0ICs9ICJjZCAkQ1VSUkVOVF9ESVJcbiIKKyAgICAgICAgUGF0aG5hbWUubmV3KEBuYW1lKS5k
aXJuYW1lLmVhY2hfZmlsZW5hbWUgeworICAgICAgICAgICAgfCBwYXRoQ29tcG9uZW50IHwKKyAg
ICAgICAgICAgIHNjcmlwdCArPSAiY2QgLi5cbiIKKyAgICAgICAgfQorICAgICAgICBzY3JpcHQg
Kz0gImNkIC5wYXJhbGxlbFxuIgorCiAgICAgICAgIElNUE9SVEFOVF9FTlZTLmVhY2ggewogICAg
ICAgICAgICAgfCBrZXkgfAotICAgICAgICAgICAgaWYgRU5WW2tleV0KKyAgICAgICAgICAgIGlm
IGtleSA9PSAiRFlMRF9GUkFNRVdPUktfUEFUSCIKKyAgICAgICAgICAgICAgICBzY3JpcHQgKz0g
ImV4cG9ydCAje2tleX09JChjZCAuLi8jeyRmcmFtZXdvcmtQYXRoLmRpcm5hbWV9OyBwd2QpXG4i
CisgICAgICAgICAgICBlbHNpZiBFTlZba2V5XQogICAgICAgICAgICAgICAgIHNjcmlwdCArPSAi
ZXhwb3J0ICN7a2V5fT0je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoRU5WW2tleV0pfVxuIgogICAg
ICAgICAgICAgZW5kCiAgICAgICAgIH0KICAgICAgICAgc2NyaXB0ICs9ICIje3NoZWxsQ29tbWFu
ZH0gfHwgZXhpdCAxIgotICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2Ny
aXB0KX0gPiAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyBAbmFtZSkudG9f
cyl9IgorICAgICAgICAiZWNobyAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoc2NyaXB0KX0gPiAj
e1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lLm5ldygiLi4iKSArIEBuYW1lKS50b19z
KX0iCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIGZhaWxDb21tYW5kCkBAIC0zNjYsMjIgKzQxOSwy
NiBAQCBlbmQKICMgcmV0dXJucyBmYWxzZSwgaW4gd2hpY2ggY2FzZSB5b3UncmUgc3VwcG9zZWQg
dG8gYWRkIHlvdXIgb3duIHJ1biBjb21tYW5kcy4KIGRlZiBwYXJzZVJ1bkNvbW1hbmRzCiAgICAg
ZGlkUnVuID0gZmFsc2UKLSAgICBGaWxlLm9wZW4oJGJlbmNobWFya0RpcmVjdG9yeSArICRiZW5j
aG1hcmspIHsKLSAgICAgICAgfCBpbnAgfAotICAgICAgICBpbnAuZWFjaF9saW5lIHsKLSAgICAg
ICAgICAgIHwgbGluZSB8Ci0gICAgICAgICAgICBiZWdpbgotICAgICAgICAgICAgICAgIGRvZXNN
YXRjaCA9IGxpbmUgPX4gL15cL1wvQC8KLSAgICAgICAgICAgIHJlc2N1ZSBFeGNlcHRpb24gPT4g
ZQotICAgICAgICAgICAgICAgICMgQXBwYXJlbnRseSB0aGlzIGhhcHBlbnMgaW4gdGhlIGNhc2Ug
b2Ygc29tZSBVVEY4IHN0dWZmIGluIHNvbWUgZmlsZXMsIHdoZXJlCi0gICAgICAgICAgICAgICAg
IyBSdWJ5IHRyaWVzIHRvIGJlIHN0cmljdCBhbmQgdGhyb3cgZXhjZXB0aW9ucy4KLSAgICAgICAg
ICAgICAgICBuZXh0Ci0gICAgICAgICAgICBlbmQKLSAgICAgICAgICAgIG5leHQgdW5sZXNzIGRv
ZXNNYXRjaAotICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21hdGNoCi0gICAgICAgICAgICBkaWRS
dW4gPSB0cnVlCisKKyAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICBGaWxlLm9w
ZW4oJGJlbmNobWFya0RpcmVjdG9yeSArICRiZW5jaG1hcmspIHsKKyAgICAgICAgICAgIHwgaW5w
IHwKKyAgICAgICAgICAgIGlucC5lYWNoX2xpbmUgeworICAgICAgICAgICAgICAgIHwgbGluZSB8
CisgICAgICAgICAgICAgICAgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgZG9lc01hdGNoID0g
bGluZSA9fiAvXlwvXC9ALworICAgICAgICAgICAgICAgIHJlc2N1ZSBFeGNlcHRpb24gPT4gZQor
ICAgICAgICAgICAgICAgICAgICAjIEFwcGFyZW50bHkgdGhpcyBoYXBwZW5zIGluIHRoZSBjYXNl
IG9mIHNvbWUgVVRGOCBzdHVmZiBpbiBzb21lIGZpbGVzLCB3aGVyZQorICAgICAgICAgICAgICAg
ICAgICAjIFJ1YnkgdHJpZXMgdG8gYmUgc3RyaWN0IGFuZCB0aHJvdyBleGNlcHRpb25zLgorICAg
ICAgICAgICAgICAgICAgICBuZXh0CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgbmV4dCB1bmxlc3MgZG9lc01hdGNoCisgICAgICAgICAgICAgICAgZXZhbCAkfi5wb3N0X21h
dGNoCisgICAgICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQorICAgICAgICAgICAgfQogICAgICAg
ICB9CiAgICAgfQorCiAgICAgZGlkUnVuCiBlbmQKIApAQCAtMzkwLDcgKzQ0Nyw3IEBAIGRlZiBz
bG93IQogZW5kCiAKIGRlZiBydW4oa2luZCwgKm9wdGlvbnMpCi0gICAgYWRkUnVuQ29tbWFuZChr
aW5kLCBbJGpzY1BhdGgudG9fc10gKyBvcHRpb25zICsgWyRiZW5jaG1hcmsudG9fc10sIHNpbGVu
dE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKKyAgICBhZGRSdW5Db21tYW5kKGtp
bmQsIFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKyBbJGJlbmNobWFyay50b19zXSwgc2lsZW50
T3V0cHV0SGFuZGxlciwgc2ltcGxlRXJyb3JIYW5kbGVyKQogZW5kCiAKIGRlZiBydW5EZWZhdWx0
CkBAIC00NzAsNyArNTI3LDcgQEAgZW5kCiBkZWYgcnVuUHJvZmlsZXIKICAgICBwcm9maWxlck91
dHB1dCA9IHVuaXF1ZUZpbGVuYW1lKCIuanNvbiIpCiAgICAgaWYgJGNhblJ1bkRpc3BsYXlQcm9m
aWxlck91dHB1dAotICAgICAgICBhZGRSdW5Db21tYW5kKCJwcm9maWxlciIsIFsicnVieSIsIChI
RUxQRVJTX1BBVEggKyAicHJvZmlsZXItdGVzdC1oZWxwZXIiKS50b19zLCAoU0NSSVBUU19QQVRI
ICsgImRpc3BsYXktcHJvZmlsZXItb3V0cHV0IikudG9fcywgcHJvZmlsZXJPdXRwdXQudG9fcywg
JGpzY1BhdGgudG9fcywgIi1wIiwgcHJvZmlsZXJPdXRwdXQudG9fcywgJGJlbmNobWFyay50b19z
XSwgc2lsZW50T3V0cHV0SGFuZGxlciwgc2ltcGxlRXJyb3JIYW5kbGVyKQorICAgICAgICBhZGRS
dW5Db21tYW5kKCJwcm9maWxlciIsIFsicnVieSIsIChIRUxQRVJTX1BBVEggKyAicHJvZmlsZXIt
dGVzdC1oZWxwZXIiKS50b19zLCAoU0NSSVBUU19QQVRIICsgImRpc3BsYXktcHJvZmlsZXItb3V0
cHV0IikudG9fcywgcHJvZmlsZXJPdXRwdXQudG9fcywgcGF0aFRvVk0udG9fcywgIi1wIiwgcHJv
ZmlsZXJPdXRwdXQudG9fcywgJGJlbmNobWFyay50b19zXSwgc2lsZW50T3V0cHV0SGFuZGxlciwg
c2ltcGxlRXJyb3JIYW5kbGVyKQogICAgIGVsc2UKICAgICAgICAgcHV0cyAiUnVubmluZyBzaW1w
bGUgdmVyc2lvbiBvZiAjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSBiZWNhdXNlIHNv
bWUgcmVxdWlyZWQgUnVieSBmZWF0dXJlcyBhcmUgdW5hdmFpbGFibGUuIgogICAgICAgICBydW4o
InByb2ZpbGVyLXNpbXBsZSIsICItcCIsIHByb2ZpbGVyT3V0cHV0LnRvX3MpCkBAIC00ODUsMTIg
KzU0MiwxNSBAQCBkZWYgcnVuTGF5b3V0VGVzdChraW5kLCAqb3B0aW9ucykKICAgICBlbHNlCiAg
ICAgICAgIGtpbmQgPSAibGF5b3V0IgogICAgIGVuZAotICAgIGFyZ3MgPQotICAgICAgICBbJGpz
Y1BhdGgudG9fc10gKyBvcHRpb25zICsKLSAgICAgICAgWyhMQVlPVVRURVNUU19QQVRIICsgInJl
c291cmNlcyIgKyAic3RhbmRhbG9uZS1wcmUuanMiKS50b19zLAorCisgICAgcHJlcGFyZUV4dHJh
UmVsYXRpdmVGaWxlcyhbIi4uLyN7dGVzdE5hbWV9LWV4cGVjdGVkLnR4dCJdKQorICAgIHByZXBh
cmVFeHRyYUFic29sdXRlRmlsZXMoTEFZT1VUVEVTVFNfUEFUSCwgWyJyZXNvdXJjZXMvc3RhbmRh
bG9uZS1wcmUuanMiLCAicmVzb3VyY2VzL3N0YW5kYWxvbmUtcG9zdC5qcyJdKQorCisgICAgYXJn
cyA9IFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKworICAgICAgICBbKFBhdGhuYW1lLm5ldygi
cmVzb3VyY2VzIikgKyAic3RhbmRhbG9uZS1wcmUuanMiKS50b19zLAogICAgICAgICAgJGJlbmNo
bWFyay50b19zLAotICAgICAgICAgKExBWU9VVFRFU1RTX1BBVEggKyAicmVzb3VyY2VzIiArICJz
dGFuZGFsb25lLXBvc3QuanMiKS50b19zXQotICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgYXJncywg
bm9pc3lPdXRwdXRIYW5kbGVyLCBkaWZmRXJyb3JIYW5kbGVyKCgkYmVuY2htYXJrRGlyZWN0b3J5
LmRpcm5hbWUgKyAiI3t0ZXN0TmFtZX0tZXhwZWN0ZWQudHh0IikudG9fcykpCisgICAgICAgICAo
UGF0aG5hbWUubmV3KCJyZXNvdXJjZXMiKSArICJzdGFuZGFsb25lLXBvc3QuanMiKS50b19zXQor
ICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgYXJncywgbm9pc3lPdXRwdXRIYW5kbGVyLCBkaWZmRXJy
b3JIYW5kbGVyKCgkYmVuY2htYXJrRGlyZWN0b3J5ICsgIi4uLyN7dGVzdE5hbWV9LWV4cGVjdGVk
LnR4dCIpLnRvX3MpKQogZW5kCiAKIGRlZiBydW5MYXlvdXRUZXN0RGVmYXVsdApAQCAtNTE2LDEz
ICs1NzYsNDEgQEAgZGVmIGRlZmF1bHRSdW5MYXlvdXRUZXN0CiAgICAgcnVuTGF5b3V0VGVzdERG
R0VhZ2VyTm9DSklUCiBlbmQKIAorZGVmIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoZXh0cmFG
aWxlcykKKyAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICBleHRyYUZpbGVzLmVh
Y2ggeworICAgICAgICAgICAgfCBmaWxlIHwKKyAgICAgICAgICAgIEZpbGVVdGlscy5jcCAkZXh0
cmFGaWxlc0Jhc2VEaXIgKyBmaWxlLCAkYmVuY2htYXJrRGlyZWN0b3J5ICsgZmlsZQorICAgICAg
ICB9CisgICAgfQorZW5kCisKK2RlZiBiYXNlRGlyRm9yQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFt
ZSkKKyAgICBQYXRobmFtZSgiLnRlc3RzIikgKyBjb2xsZWN0aW9uTmFtZQorZW5kCisKK2RlZiBw
cmVwYXJlRXh0cmFBYnNvbHV0ZUZpbGVzKGFic29sdXRlQmFzZSwgZXh0cmFGaWxlcykKKyAgICBy
YWlzZSB1bmxlc3MgYWJzb2x1dGVCYXNlLmFic29sdXRlPworICAgIERpci5jaGRpcigkb3V0cHV0
RGlyKSB7CisgICAgICAgIGNvbGxlY3Rpb25CYXNlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24o
JGNvbGxlY3Rpb25OYW1lKQorICAgICAgICBleHRyYUZpbGVzLmVhY2ggeworICAgICAgICAgICAg
fCBmaWxlIHwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gY29sbGVjdGlvbkJhc2VEaXIgKyBm
aWxlCisgICAgICAgICAgICBGaWxlVXRpbHMubWtkaXJfcCBkZXN0aW5hdGlvbi5kaXJuYW1lIHVu
bGVzcyBkZXN0aW5hdGlvbi5kaXJlY3Rvcnk/CisgICAgICAgICAgICBGaWxlVXRpbHMuY3AgYWJz
b2x1dGVCYXNlICsgZmlsZSwgZGVzdGluYXRpb24KKyAgICAgICAgfQorICAgIH0KK2VuZAorCiBk
ZWYgcnVuTW96aWxsYVRlc3Qoa2luZCwgbW9kZSwgZXh0cmFGaWxlcywgKm9wdGlvbnMpCiAgICAg
aWYga2luZAogICAgICAgICBraW5kID0gIm1vemlsbGEtIiArIGtpbmQKICAgICBlbHNlCiAgICAg
ICAgIGtpbmQgPSAibW96aWxsYSIKICAgICBlbmQKLSAgICBhcmdzID0gWyRqc2NQYXRoLnRvX3Nd
ICsgb3B0aW9ucyArIGV4dHJhRmlsZXMubWFwe3x2fCAoJGJlbmNobWFya0RpcmVjdG9yeSArIHYp
LnRvX3N9ICsgWyRiZW5jaG1hcmsudG9fc10KKyAgICAkZXh0cmFGaWxlc0Jhc2VEaXIgPSAkZXh0
cmFGaWxlc0Jhc2VEaXIuZGlybmFtZSB1bmxlc3MgJGV4dHJhRmlsZXNCYXNlRGlyLmJhc2VuYW1l
ID09ICRiZW5jaG1hcmtEaXJlY3RvcnkuYmFzZW5hbWUKKyAgICBwcmVwYXJlRXh0cmFSZWxhdGl2
ZUZpbGVzKGV4dHJhRmlsZXMpCisgICAgYXJncyA9IFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMg
KyBleHRyYUZpbGVzLm1hcHt8dnwgdi50b19zfSArIFskYmVuY2htYXJrLnRvX3NdCiAgICAgY2Fz
ZSBtb2RlCiAgICAgd2hlbiA6bm9ybWFsCiAgICAgICAgIGVycm9ySGFuZGxlciA9IG1vemlsbGFF
cnJvckhhbmRsZXIKQEAgLTU2NSwxNCArNjUzLDYgQEAgZGVmIHNraXAKICAgICBwdXRzICJTa2lw
cGluZyAjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSIKIGVuZAogCi1EaXIubWtkaXIo
JG91dHB1dERpcikgdW5sZXNzICRvdXRwdXREaXIuZGlyZWN0b3J5PwotYmVnaW4KLSAgICBGaWxl
LmRlbGV0ZSgkb3V0cHV0RGlyICsgImZhaWxlZCIpCi1yZXNjdWUKLWVuZAotCi0kb3V0cHV0RGly
ID0gJG91dHB1dERpci5yZWFscGF0aAotCiBkZWYgYWxsSlNGaWxlcyhwYXRoKQogICAgIGlmIHBh
dGguZmlsZT8KICAgICAgICAgW3BhdGhdCkBAIC02MTQsMTEgKzY5NCwyOSBAQCBkZWYgc2ltcGxp
ZnlDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uUGF0CiBlbmQKIAogZGVmIHByZXBhcmVDb2xsZWN0
aW9uKG5hbWUpCi0gICAgZGlyID0gJG91dHB1dERpcgotICAgIFBhdGhuYW1lLm5ldyhuYW1lKS5l
YWNoX2ZpbGVuYW1lIHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAgICAgIGRpciA9IGRpciAr
IGZpbGVuYW1lCi0gICAgICAgIERpci5ta2RpcihkaXIpIHVubGVzcyBkaXIuZGlyZWN0b3J5Pwor
ICAgIEZpbGVVdGlscy5ta2Rpcl9wICRvdXRwdXREaXIgKyBuYW1lCisKKyAgICBhYnNvbHV0ZUNv
bGxlY3Rpb24gPSAkY29sbGVjdGlvbi5yZWFscGF0aAorCisgICAgRGlyLmNoZGlyKCRvdXRwdXRE
aXIpIHsKKyAgICAgICAgYnVuZGxlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24obmFtZSkKKwor
ICAgICAgICAjIENyZWF0ZSB0aGUgcHJvcGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLgorICAgICAg
ICBGaWxlVXRpbHMubWtkaXJfcCBidW5kbGVEaXIKKyAgICAgICAgaWYgYnVuZGxlRGlyLmJhc2Vu
YW1lID09ICRjb2xsZWN0aW9uLmJhc2VuYW1lCisgICAgICAgICAgICBGaWxlVXRpbHMuY3BfciBh
YnNvbHV0ZUNvbGxlY3Rpb24sIGJ1bmRsZURpci5kaXJuYW1lCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIEZpbGVVdGlscy5jcF9yIGFic29sdXRlQ29sbGVjdGlvbiwgYnVuZGxlRGlyCisgICAg
ICAgIGVuZAorCisgICAgICAgICRleHRyYUZpbGVzQmFzZURpciA9IGFic29sdXRlQ29sbGVjdGlv
bgorCisgICAgICAgICMgUmVkaXJlY3QgdGhlIGNvbGxlY3Rpb24ncyBsb2NhdGlvbiB0byB0aGUg
bmV3bHkgY29uc3RydWN0ZWQgYnVuZGxlLgorICAgICAgICBpZiBhYnNvbHV0ZUNvbGxlY3Rpb24u
ZGlyZWN0b3J5PworICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSBidW5kbGVEaXIKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSBidW5kbGVEaXIgKyAkY29sbGVjdGlvbi5i
YXNlbmFtZQorICAgICAgICBlbmQKICAgICB9CiBlbmQKIApAQCAtNjI2LDcgKzcyNCw3IEBAICRj
b2xsZWN0aW9uTmFtZXMgPSB7fQogCiBkZWYgaGFuZGxlQ29sbGVjdGlvbkZpbGUoY29sbGVjdGlv
bikKICAgICBjb2xsZWN0aW9uTmFtZSA9IHNpbXBsaWZ5Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlv
bikKLSAgICAKKyAgIAogICAgIHBhdGhzID0ge30KICAgICBzdWJDb2xsZWN0aW9ucyA9IFtdCiAg
ICAgWUFNTDo6bG9hZChJTzo6cmVhZChjb2xsZWN0aW9uKSkuZWFjaCB7CkBAIC02NjIsMTcgKzc2
MCwxNyBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbkZpbGUoY29sbGVjdGlvbikKICAgICAgICAgJGNv
bGxlY3Rpb25OYW1lID0gJGNvbGxlY3Rpb25OYW1lLnRvX3MKICAgICAgICAgCiAgICAgICAgIHBy
ZXBhcmVDb2xsZWN0aW9uKCRjb2xsZWN0aW9uTmFtZSkKLSAgICAgICAgCi0gICAgICAgIGFsbEpT
RmlsZXMoc3ViQ29sbGVjdGlvbikuZWFjaCB7Ci0gICAgICAgICAgICB8IHBhdGggfAotICAgICAg
ICAgICAgCi0gICAgICAgICAgICBwYXRoID0gcGF0aC5yZWFscGF0aAotICAgICAgICAgICAgCi0g
ICAgICAgICAgICAkYmVuY2htYXJrID0gcGF0aC5iYXNlbmFtZQotICAgICAgICAgICAgJGJlbmNo
bWFya0RpcmVjdG9yeSA9IHBhdGguZGlybmFtZQotICAgICAgICAgICAgCi0gICAgICAgICAgICAk
cnVuQ29tbWFuZE9wdGlvbnMgPSB7fQotICAgICAgICAgICAgZXZhbCBlbnRyeVsiY21kIl0KKyAg
ICAgIAorICAgICAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICAgICAgYWxsSlNG
aWxlcygkY29sbGVjdGlvbikuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwYXRoIHwKKyAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCisg
ICAgICAgICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9yeSA9IHBhdGguZGlybmFtZQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CisgICAg
ICAgICAgICAgICAgZXZhbCBlbnRyeVsiY21kIl0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgIH0KICAgICAKQEAgLTY4NSwxOCArNzgzLDIwIEBAIGVuZAogZGVmIGhhbmRsZUNvbGxlY3Rp
b25EaXJlY3RvcnkoY29sbGVjdGlvbikKICAgICBjb2xsZWN0aW9uTmFtZSA9IHNpbXBsaWZ5Q29s
bGVjdGlvbk5hbWUoY29sbGVjdGlvbikKICAgICAKLSAgICBwcmVwYXJlQ29sbGVjdGlvbihjb2xs
ZWN0aW9uTmFtZSkKLSAgICAKICAgICAkY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24KICAgICAkY29s
bGVjdGlvbk5hbWUgPSBjb2xsZWN0aW9uTmFtZQotICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAk
Y29sbGVjdGlvbgotICAgIGFsbEpTRmlsZXMoJGNvbGxlY3Rpb24pLmVhY2ggewotICAgICAgICB8
IHBhdGggfAotICAgICAgICAKLSAgICAgICAgJGJlbmNobWFyayA9IHBhdGguYmFzZW5hbWUKLSAg
ICAgICAgCi0gICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9Ci0gICAgICAgIGRlZmF1bHRS
dW4gdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKKyAgICBwcmVwYXJlQ29sbGVjdGlvbihjb2xsZWN0
aW9uTmFtZSkKKyAgIAorICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgICRiZW5j
aG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlvbgorICAgICAgICBhbGxKU0ZpbGVzKCRjb2xsZWN0
aW9uKS5lYWNoIHsKKyAgICAgICAgICAgIHwgcGF0aCB8CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCisgICAgICAgICAgICAKKyAgICAgICAgICAg
ICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CisgICAgICAgICAgICBkZWZhdWx0UnVuIHVubGVzcyBw
YXJzZVJ1bkNvbW1hbmRzCisgICAgICAgIH0KICAgICB9CiBlbmQKIApAQCAtNzEwLDExICs4MTAs
NiBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAogZW5kCiAKLUFS
R1YuZWFjaCB7Ci0gICAgfCBjb2xsZWN0aW9uIHwKLSAgICBoYW5kbGVDb2xsZWN0aW9uKGNvbGxl
Y3Rpb24pCi19Ci0KIGRlZiBhcHBlbmRGYWlsdXJlKHBsYW4pCiAgICAgRmlsZS5vcGVuKCRvdXRw
dXREaXIgKyAiZmFpbGVkIiwgImEiKSB7CiAgICAgICAgIHwgb3V0cCB8CkBAIC03MjMsNiArODE4
LDEyNiBAQCBkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQogICAgICRudW1GYWlsdXJlcyArPSAxCiBl
bmQKIAorZGVmIHByZXBhcmVCdW5kbGUKKyAgICByYWlzZSBpZiAkYnVuZGxlCisKKyAgICBjb3B5
Vk1Ub0J1bmRsZQorCisgICAgQVJHVi5lYWNoIHsKKyAgICAgICAgfCBjb2xsZWN0aW9uIHwKKyAg
ICAgICAgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQorICAgIH0KK2VuZAorCitkZWYgY2xl
YW5PbGRSZXN1bHRzCisgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKKworICAgIGVhY2hSZXN1bHRG
aWxlKCRvdXRwdXREaXIpIHsKKyAgICAgICAgfCBwYXRoIHwKKyAgICAgICAgRmlsZVV0aWxzLnJt
X2YgcGF0aAorICAgIH0KK2VuZAorCitkZWYgY2xlYW5FbXB0eVJlc3VsdEZpbGVzCisgICAgZWFj
aFJlc3VsdEZpbGUoJG91dHB1dERpcikgeworICAgICAgICB8IHBhdGggfAorICAgICAgICBuZXh0
IHVubGVzcyBwYXRoLmJhc2VuYW1lLnRvX3MgPX4gL1wub3V0JC8KKyAgICAgICAgbmV4dCB1bmxl
c3MgRmlsZVRlc3Quc2l6ZShwYXRoKSA9PSAwCisgICAgICAgIEZpbGVVdGlscy5ybV9mIHBhdGgK
KyAgICB9CitlbmQKKworZGVmIGVhY2hSZXN1bHRGaWxlKHN0YXJ0aW5nRGlyLCAmYmxvY2spCisg
ICAgZGlyc1RvQ2xlYW4gPSBbc3RhcnRpbmdEaXJdCisgICAgdW50aWwgZGlyc1RvQ2xlYW4uZW1w
dHk/IGRvCisgICAgICAgIG5leHREaXIgPSBkaXJzVG9DbGVhbi5wb3AKKyAgICAgICAgRGlyLmZv
cmVhY2gobmV4dERpcikgeworICAgICAgICAgICAgfCBlbnRyeSB8CisgICAgICAgICAgICBuZXh0
IGlmIGVudHJ5ID1+IC9eXC4vCisgICAgICAgICAgICBwYXRoID0gbmV4dERpciArIGVudHJ5Cisg
ICAgICAgICAgICBpZiBwYXRoLmRpcmVjdG9yeT8KKyAgICAgICAgICAgICAgICBkaXJzVG9DbGVh
bi5wdXNoKHBhdGgpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmxvY2suY2Fs
bChwYXRoKQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYg
cHJlcGFyZVBhcmFsbGVsVGVzdFJ1bm5lcgorICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJhbGxl
bCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQorICAgICMg
c2ltcGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdlIGRvbid0IHdhbnQg
dG8gaGF2ZSB0byBoYXZlCisgICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxv
c29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCisgICAgIworICAgICMgQXMgc3VjaCwg
d2UganVzdCBwYXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFrZScuIFRoaXMgY3Jl
YXRlcyBhCisgICAgIyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5wYXJhbGxlbCIpIGlu
IHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15CisgICAgIyBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhh
cyBhbiAnYWxsJyBydWxlIHRoYXQgZGVwZW5kcyBvbiBhbGwgb2YgdGhlIHRlc3RzLgorICAgICMg
VGhhdCBpcywgZm9yIGVhY2ggdGVzdCB3ZSBrbm93IHdlIHdpbGwgcnVuLCB0aGVyZSBpcyBhIHJ1
bGUgaW4gdGhlCisgICAgIyBNYWtlZmlsZSBhbmQgJ2FsbCcgZGVwZW5kcyBvbiBpdC4gUnVubmlu
ZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCisgICAgIyBNYWtlZmlsZSByZXN1bHRzIGlu
ICdtYWtlJyBkb2luZyBhbGwgb2YgdGhlIGhhcmQgd29yazoKKyAgICAjCisgICAgIyAtIExvYWQg
YmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxh
bmNlciBpbgorICAgICMgICAnbWFrZScuIElmIHlvdXIgc3lzdGVtIGRvZXNuJ3QgdGhlbiBqdXN0
IGluc3RhbGwgYSByZWFsICdtYWtlJy4KKyAgICAjCisgICAgIyAtIEludGVycnVwdGlvbnMganVz
dCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlzCisgICAgIyAg
IGV4YWN0bHkgcmlnaHQuIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHpvbWJpZSBwcm9j
ZXNzZXMuCisgICAgIworICAgICMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1
cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcworICAgICMgdG90YWxseSBzb3VuZC4g
SWYgYSB0ZXN0IGZhaWxzLCB3ZSBkb24ndCB3YW50IHRoZSB3aG9sZSAnbWFrZScgam9iIHRvCisg
ICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1l
c2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9y
IHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCisgICAgIyBieSBo
YXZpbmcgdGhlIGFjdHVhbCB3b3JrIGZvciBlYWNoIG9mIHRoZSB0ZXN0IHJ1bGVzIGJlIGRvbmUg
aW4gYSBzaGVsbAorICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBz
Y3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKKyAgICAjIHRvIGZhaWx1cmUgYnkg
cHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAg
ICAjIGZhaWx1cmUgZmlsZSBmb3IgdGhhdCB0ZXN0LCBidXQgdGhlbiBzdGlsbCByZXR1cm5zIDAu
IFRoaXMgbWFrZXMgJ21ha2UnCisgICAgIyBjb250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQg
Y29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCisgICAgIworICAgICMgSW4gdGhlIGVuZCwg
dGhpcyBzY3JpcHQgY29sbGVjdHMgYWxsIG9mIHRoZSBmYWlsdXJlcyBieSBzZWFyY2hpbmcgZm9y
CisgICAgIyBmaWxlcyBpbiB0aGUgLnBhcmFsbGVsIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNo
ZXMgL150ZXN0X2ZhaWxfLywgd2hlcmUKKyAgICAjIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxf
JyBpcyB0aGUgdGVzdCBpbmRleC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0CisgICAgIyB3b3Vs
ZCBiZSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4g
V2UncmUKKyAgICAjIGJhc2ljYWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJl
bnQgZGF0YWJhc2Ugb2YgdGVzdCBmYWlsdXJlcy4KKyAgICAjIEV2ZW4gaWYgdHdvIHRlc3RzIGZh
aWwgYXQgdGhlIHNhbWUgdGltZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKKyAg
ICAjIGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgorICAgIAorICAgIHJ1bkluZGlj
ZXMgPSBbXQorICAgICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgcGxhbiwg
aW5kZXggfAorICAgICAgICBydW5JbmRpY2VzIDw8IGluZGV4CisgICAgICAgIHBsYW4uaW5kZXgg
PSBpbmRleAorICAgIH0KKyAgICAKKyAgICBEaXIubWtkaXIoJHBhcmFsbGVsRGlyKSB1bmxlc3Mg
JHBhcmFsbGVsRGlyLmRpcmVjdG9yeT8KKyAgICB0b0RlbGV0ZSA9IFtdCisgICAgRGlyLmZvcmVh
Y2goJHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBpZiBmaWxl
bmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgdG9EZWxldGUgPDwgZmlsZW5hbWUKKyAgICAg
ICAgZW5kCisgICAgfQorICAgIAorICAgIHRvRGVsZXRlLmVhY2ggeworICAgICAgICB8IGZpbGVu
YW1lIHwKKyAgICAgICAgRmlsZS51bmxpbmsoJHBhcmFsbGVsRGlyICsgZmlsZW5hbWUpCisgICAg
fQorCisgICAgJHJ1bmxpc3QuZWFjaCB7CisgICAgICAgIHwgcGxhbiB8CisgICAgICAgIHBsYW4u
d3JpdGVSdW5TY3JpcHQoJHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0i
KQorICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oJHBhcmFsbGVsRGlyICsgIk1ha2VmaWxlIiwg
InciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAgICAgIG91dHAucHV0cygiYWxsOiAiICsgcnVu
SW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9LmpvaW4oJyAnKSkKKyAgICAgICAgcnVu
SW5kaWNlcy5lYWNoIHsKKyAgICAgICAgICAgIHwgaW5kZXggfAorICAgICAgICAgICAgcGxhbiA9
ICRydW5saXN0W2luZGV4XQorICAgICAgICAgICAgb3V0cC5wdXRzICJ0ZXN0X2RvbmVfI3tpbmRl
eH06IgorICAgICAgICAgICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRl
eH0iCisgICAgICAgIH0KKyAgICB9CitlbmQKKwogaWYgJGVuYWJsZUZUTCBhbmQgRU5WWyJKU0Nf
dGltZW91dCJdCiAgICAgIyBDdXJyZW50bHksIHVzaW5nIHRoZSBGVEwgaXMgYSBwZXJmb3JtYW5j
ZSByZWdyZXNzaW9uIHBhcnRpY3VsYXJseSBpbiByZWFsCiAgICAgIyAoaS5lLiBub24tbG9vcHkp
IGJlbmNobWFya3MuIEFjY291bnQgZm9yIHRoaXMgaW4gdGhlIHRpbWVvdXQuCkBAIC03MzQsMTU0
ICs5NDksMTE3IEBAIGlmIEVOVlsiSlNDX3RpbWVvdXQiXQogICAgICMgSW5jcmVhc2UgdGhlIHRp
bWVvdXQgcHJvcG9ydGlvbmFsbHkgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLgogICAgIEVO
VlsiSlNDX3RpbWVvdXQiXSA9IChFTlZbIkpTQ190aW1lb3V0Il0udG9faS50b19mICogTWF0aC5z
cXJ0KCRudW1Qcm9jZXNzb3JzKSkudG9faS50b19zCiBlbmQKLQotIyBUaGUgZ29hbHMgb2Ygb3Vy
IHBhcmFsbGVsIHRlc3QgcnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhl
Ci0jIHNpbXBsaWNpdHkgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3
YW50IHRvIGhhdmUgdG8gaGF2ZQotIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxv
c29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3RpbmcuCi0jCi0jIEFzIHN1Y2gsIHdlIGp1c3Qg
cGFzcyBvZmYgYWxsIG9mIHRoZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzIGNyZWF0ZXMgYQot
IyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5wYXJhbGxlbCIpIGluIHdoaWNoIHdlIGNy
ZWF0ZSBhIGR1bW15Ci0jIE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGFuICdhbGwnIHJ1bGUg
dGhhdCBkZXBlbmRzIG9uIGFsbCBvZiB0aGUgdGVzdHMuCi0jIFRoYXQgaXMsIGZvciBlYWNoIHRl
c3Qgd2Uga25vdyB3ZSB3aWxsIHJ1biwgdGhlcmUgaXMgYSBydWxlIGluIHRoZQotIyBNYWtlZmls
ZSBhbmQgJ2FsbCcgZGVwZW5kcyBvbiBpdC4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBv
biB0aGlzCi0jIE1ha2VmaWxlIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFy
ZCB3b3JrOgotIwotIyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBo
YXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgotIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0g
ZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwgJ21ha2UnLgotIwotIyAtIEludGVycnVw
dGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlz
Ci0jICAgZXhhY3RseSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmll
IHByb2Nlc3Nlcy4KLSMKLSMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUg
ZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcwotIyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRl
c3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KLSMgc3RvcC4g
V2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZpbGUtZXNjYXBpbmcgb2Yg
cGF0aCBuYW1lcy4KLSMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5n
LCB0aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCi0jIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdv
cmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCi0jIHNjcmlw
dCBvbiB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2Ny
aXB0IHJlc3BvbmRzCi0jIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBj
b25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKLSMgZmFpbHVyZSBmaWxlIGZvciB0aGF0IHRlc3Qs
IGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFrZScKLSMgY29udGludWUg
cGFzdCB0aGF0IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotIwot
IyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5
IHNlYXJjaGluZyBmb3IKLSMgZmlsZXMgaW4gdGhlIC5wYXJhbGxlbCBkaXJlY3Rvcnkgd2hvc2Ug
bmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJlCi0jIHRoZSB0aGluZyBhZnRlciB0aGUg
J2ZhaWxfJyBpcyB0aGUgdGVzdCBpbmRleC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0Ci0jIHdv
dWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJl
LiBXZSdyZQotIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50
IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCi0jIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQg
dGhlIHNhbWUgdGltZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKLSMgZmlsZXMg
d2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0KLXJ1bkluZGljZXMgPSBbXQotJHJ1bmxpc3Qu
ZWFjaF93aXRoX2luZGV4IHsKLSAgICB8IHBsYW4sIGluZGV4IHwKLSAgICBydW5JbmRpY2VzIDw8
IGluZGV4Ci0gICAgcGxhbi5pbmRleCA9IGluZGV4Ci19Ci0KLXBhcmFsbGVsRGlyID0gJG91dHB1
dERpciArICIucGFyYWxsZWwiCi1EaXIubWtkaXIocGFyYWxsZWxEaXIpIHVubGVzcyBwYXJhbGxl
bERpci5kaXJlY3Rvcnk/Ci10b0RlbGV0ZSA9IFtdCi1EaXIuZm9yZWFjaChwYXJhbGxlbERpcikg
ewotICAgIHwgZmlsZW5hbWUgfAotICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCi0gICAgICAg
IHRvRGVsZXRlIDw8IGZpbGVuYW1lCi0gICAgZW5kCi19Ci0KLXRvRGVsZXRlLmVhY2ggewotICAg
IHwgZmlsZW5hbWUgfAotICAgIEZpbGUudW5saW5rKHBhcmFsbGVsRGlyICsgZmlsZW5hbWUpCi19
Ci0KKyAgICAKIHB1dHMKIAotJHJ1bmxpc3QuZWFjaCB7Ci0gICAgfCBwbGFuIHwKLSAgICBwbGFu
LndyaXRlUnVuU2NyaXB0KHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0i
KQotfQotCi1GaWxlLm9wZW4ocGFyYWxsZWxEaXIgKyAiTWFrZWZpbGUiLCAidyIpIHsKLSAgICB8
IG91dHAgfAotICAgIG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0
X2RvbmVfI3t2fSJ9LmpvaW4oJyAnKSkKLSAgICBydW5JbmRpY2VzLmVhY2ggewotICAgICAgICB8
IGluZGV4IHwKLSAgICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQotICAgICAgICBvdXRwLnB1
dHMgInRlc3RfZG9uZV8je2luZGV4fToiCi0gICAgICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3Nj
cmlwdF8je3BsYW4uaW5kZXh9IgorZGVmIGNsZWFuUGFyYWxsZWxEaXJlY3RvcnkKKyAgICByYWlz
ZSB1bmxlc3MgJGJ1bmRsZQorICAgIERpci5mb3JlYWNoKCRwYXJhbGxlbERpcikgeworICAgICAg
ICB8IGZpbGVuYW1lIHwKKyAgICAgICAgbmV4dCB1bmxlc3MgZmlsZW5hbWUgPX4gL150ZXN0X2Zh
aWwvCisgICAgICAgIEZpbGVVdGlscy5ybV9mICRwYXJhbGxlbERpciArIGZpbGVuYW1lCiAgICAg
fQotfQorZW5kCiAKLURpci5jaGRpcihwYXJhbGxlbERpcikgewotICAgIHVubGVzcyAkcHJvZ3Jl
c3NNZXRlcgotICAgICAgICBteXN5cygibWFrZSIsICItaiIsICRudW1Qcm9jZXNzb3JzLnRvX3Ms
ICItcyIsICItZiIsICJNYWtlZmlsZSIpCi0gICAgZWxzZQotICAgICAgICBjbWQgPSAibWFrZSAt
aiAjeyRudW1Qcm9jZXNzb3JzfSAtcyAtZiBNYWtlZmlsZSIKLSAgICAgICAgcnVubmluZyA9IHt9
Ci0gICAgICAgIGRpZFJ1biA9IHt9Ci0gICAgICAgIGRpZEZhaWwgPSB7fQotICAgICAgICBibGFu
a0xpbmUgPSB0cnVlCi0gICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSAwCi0gICAgICAgIElPLnBv
cGVuKGNtZCwgInIiKSB7Ci0gICAgICAgICAgICB8IGlucCB8Ci0gICAgICAgICAgICBpbnAuZWFj
aF9saW5lIHsKLSAgICAgICAgICAgICAgICB8IGxpbmUgfAotICAgICAgICAgICAgICAgIGxpbmUu
Y2hvbXAhCi0gICAgICAgICAgICAgICAgaWYgbGluZSA9fiAvXlJ1bm5pbmcgLwotICAgICAgICAg
ICAgICAgICAgICBydW5uaW5nWyR+LnBvc3RfbWF0Y2hdID0gdHJ1ZQotICAgICAgICAgICAgICAg
IGVsc2lmIGxpbmUgPX4gL15QQVNTOiAvCi0gICAgICAgICAgICAgICAgICAgIGRpZFJ1blskfi5w
b3N0X21hdGNoXSA9IHRydWUKLSAgICAgICAgICAgICAgICBlbHNpZiBsaW5lID1+IC9eRkFJTDog
LwotICAgICAgICAgICAgICAgICAgICBkaWRSdW5bJH4ucG9zdF9tYXRjaF0gPSB0cnVlCi0gICAg
ICAgICAgICAgICAgICAgIGRpZEZhaWxbJH4ucG9zdF9tYXRjaF0gPSB0cnVlCi0gICAgICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB1bmxlc3MgYmxhbmtMaW5lCi0gICAgICAg
ICAgICAgICAgICAgICAgICBwcmludCgiXHIiICsgIiAiICogcHJldlN0cmluZ0xlbmd0aCArICJc
ciIpCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICBwdXRzIGxp
bmUKLSAgICAgICAgICAgICAgICAgICAgYmxhbmtMaW5lID0gdHJ1ZQotICAgICAgICAgICAgICAg
IGVuZAotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZiBscGFkKHN0ciwgY2hh
cnMpCi0gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci50b19zCi0gICAgICAgICAgICAgICAg
ICAgIGlmIHN0ci5sZW5ndGggPiBjaGFycwotICAgICAgICAgICAgICAgICAgICAgICAgc3RyCitk
ZWYgcnVuUGFyYWxsZWxUZXN0UnVubmVyCisgICAgRGlyLmNoZGlyKCRwYXJhbGxlbERpcikgewor
ICAgICAgICAjIC0xIGZvciB0aGUgTWFrZWZpbGUsIGFuZCAtMiBmb3IgJy4uJyBhbmQgJy4nCisg
ICAgICAgIG51bWJlck9mVGVzdHMgPSBEaXIuZW50cmllcygiLiIpLmNvdW50IC0gMworICAgICAg
ICB1bmxlc3MgJHByb2dyZXNzTWV0ZXIKKyAgICAgICAgICAgIG15c3lzKCJtYWtlIiwgIi1qIiwg
JG51bVByb2Nlc3NvcnMudG9fcywgIi1zIiwgIi1mIiwgIk1ha2VmaWxlIikKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY21kID0gIm1ha2UgLWogI3skbnVtUHJvY2Vzc29yc30gLXMgLWYgTWFr
ZWZpbGUiCisgICAgICAgICAgICBydW5uaW5nID0ge30KKyAgICAgICAgICAgIGRpZFJ1biA9IHt9
CisgICAgICAgICAgICBkaWRGYWlsID0ge30KKyAgICAgICAgICAgIGJsYW5rTGluZSA9IHRydWUK
KyAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSAwCisgICAgICAgICAgICBJTy5wb3Blbihj
bWQsICJyIikgeworICAgICAgICAgICAgICAgIHwgaW5wIHwKKyAgICAgICAgICAgICAgICBpbnAu
ZWFjaF9saW5lIHsKKyAgICAgICAgICAgICAgICAgICAgfCBsaW5lIHwKKyAgICAgICAgICAgICAg
ICAgICAgbGluZS5jaG9tcCEKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9fiAvXlJ1bm5p
bmcgLworICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZ1skfi5wb3N0X21hdGNoXSA9IHRy
dWUKKyAgICAgICAgICAgICAgICAgICAgZWxzaWYgbGluZSA9fiAvXlBBU1M6IC8KKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAgICAg
ICAgICAgICAgZWxzaWYgbGluZSA9fiAvXkZBSUw6IC8KKyAgICAgICAgICAgICAgICAgICAgICAg
IGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRp
ZEZhaWxbJH4ucG9zdF9tYXRjaF0gPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICIlI3tjaGFyc31zIiUoc3RyKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdW5sZXNzIGJsYW5rTGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW50KCJcciIgKyAiICIgKiBwcmV2U3RyaW5nTGVuZ3RoICsgIlxyIikKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgcHV0cyBsaW5lCisgICAgICAg
ICAgICAgICAgICAgICAgICBibGFua0xpbmUgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZGVmIGxwYWQoc3Ry
LCBjaGFycykKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci50b19zCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBzdHIubGVuZ3RoID4gY2hhcnMKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiJSN7Y2hhcnN9cyIlKHN0cikKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAKKyAgICAgICAgICAgICAgICAg
ICAgc3RyaW5nICA9ICIiCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiXHIje2xwYWQo
ZGlkUnVuLnNpemUsIG51bWJlck9mVGVzdHMudG9fcy5zaXplKX0vI3tudW1iZXJPZlRlc3RzfSIK
KyAgICAgICAgICAgICAgICAgICAgdW5sZXNzIGRpZEZhaWwuZW1wdHk/CisgICAgICAgICAgICAg
ICAgICAgICAgICBzdHJpbmcgKz0gIiAoZmFpbGVkICN7ZGlkRmFpbC5zaXplfSkiCisgICAgICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiCisgICAg
ICAgICAgICAgICAgICAgIChydW5uaW5nLnNpemUgLSBkaWRSdW4uc2l6ZSkudGltZXMgeworICAg
ICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIuIgorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgICAgIGlmIHN0cmluZy5sZW5ndGggPCBwcmV2U3RyaW5nTGVuZ3Ro
CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBzdHJpbmcKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50KCIgIiAqIChwcmV2U3RyaW5nTGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkpCiAg
ICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAg
ICAgICAgc3RyaW5nICA9ICIiCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJcciN7bHBhZChk
aWRSdW4uc2l6ZSwgJHJ1bmxpc3Quc2l6ZS50b19zLnNpemUpfS8jeyRydW5saXN0LnNpemV9Igot
ICAgICAgICAgICAgICAgIHVubGVzcyBkaWRGYWlsLmVtcHR5PwotICAgICAgICAgICAgICAgICAg
ICBzdHJpbmcgKz0gIiAoZmFpbGVkICN7ZGlkRmFpbC5zaXplfSkiCi0gICAgICAgICAgICAgICAg
ZW5kCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICIgIgotICAgICAgICAgICAgICAgIChydW5u
aW5nLnNpemUgLSBkaWRSdW4uc2l6ZSkudGltZXMgewotICAgICAgICAgICAgICAgICAgICBzdHJp
bmcgKz0gIi4iCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIHN0cmluZy5s
ZW5ndGggPCBwcmV2U3RyaW5nTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgIHByaW50IHN0cmlu
ZwotICAgICAgICAgICAgICAgICAgICBwcmludCgiICIgKiAocHJldlN0cmluZ0xlbmd0aCAtIHN0
cmluZy5sZW5ndGgpKQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIHByaW50
IHN0cmluZwotICAgICAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3Ro
Ci0gICAgICAgICAgICAgICAgYmxhbmtMaW5lID0gZmFsc2UKLSAgICAgICAgICAgICAgICAkc3Rk
b3V0LmZsdXNoCisgICAgICAgICAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSBzdHJpbmcu
bGVuZ3RoCisgICAgICAgICAgICAgICAgICAgIGJsYW5rTGluZSA9IGZhbHNlCisgICAgICAgICAg
ICAgICAgICAgICRzdGRvdXQuZmx1c2gKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICAgICAgcHV0cwotICAgICAgICByYWlzZSAiRmFpbGVkIHRvIHJ1biAj
e2NtZH06ICN7JD8uaW5zcGVjdH0iIHVubGVzcyAkPy5zdWNjZXNzPwotICAgIGVuZAotfQorICAg
ICAgICAgICAgcHV0cworICAgICAgICAgICAgcmFpc2UgIkZhaWxlZCB0byBydW4gI3tjbWR9OiAj
eyQ/Lmluc3BlY3R9IiB1bmxlc3MgJD8uc3VjY2Vzcz8KKyAgICAgICAgZW5kCisgICAgfQorZW5k
CiAKLSMgRGVsZXRlIGVtcHR5IC5vdXQgZmlsZXMgdG8gbWFrZSBsaWZlIGxlc3MgY29uZnVzaW5n
LgotJHJ1bmxpc3QuZWFjaCB7Ci0gICAgfCBwbGFuIHwKLSAgICBvdXRwdXRGaWxlbmFtZSA9ICRv
dXRwdXREaXIgKyAocGxhbi5uYW1lICsgIi5vdXQiKQotICAgIEZpbGUudW5saW5rIG91dHB1dEZp
bGVuYW1lIGlmIEZpbGVUZXN0LnNpemUob3V0cHV0RmlsZW5hbWUpID09IDAKLX0KK2RlZiBkZXRl
Y3RGYWlsdXJlcworICAgIHJhaXNlIGlmICRidW5kbGUKIAotRGlyLmZvcmVhY2gocGFyYWxsZWxE
aXIpIHsKLSAgICB8IGZpbGVuYW1lIHwKLSAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVz
dF9mYWlsXy8KLSAgICBhcHBlbmRGYWlsdXJlKCRydW5saXN0WyR+LnBvc3RfbWF0Y2gudG9faV0p
Ci19CisgICAgRGlyLmZvcmVhY2goJHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUg
fAorICAgICAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVzdF9mYWlsXy8KKyAgICAgICAg
YXBwZW5kRmFpbHVyZSgkcnVubGlzdFskfi5wb3N0X21hdGNoLnRvX2ldKQorICAgIH0KK2VuZAor
CitkZWYgY29tcHJlc3NCdW5kbGUKKyAgICBjbWQgPSAiY2QgI3skb3V0cHV0RGlyfS8uLiAmJiB0
YXIgLWN6ZiBwYXlsb2FkLnRhci5neiAjeyRvdXRwdXREaXIuYmFzZW5hbWV9IgorICAgICRzdGRl
cnIucHV0cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5ID49IDIKKyAgICByYWlzZSB1bmxlc3Mg
c3lzdGVtKGNtZCkKK2VuZAorCitGaWxlVXRpbHMucm1fcmYgJG91dHB1dERpciBpZiAkb3V0cHV0
RGlyLmRpcmVjdG9yeT8gYW5kIG5vdCAkYnVuZGxlCitEaXIubWtkaXIoJG91dHB1dERpcikgdW5s
ZXNzICRvdXRwdXREaXIuZGlyZWN0b3J5PworCitiZWdpbgorICAgIEZpbGUuZGVsZXRlKCRvdXRw
dXREaXIgKyAiZmFpbGVkIikKK3Jlc2N1ZQorZW5kCisKKyRvdXRwdXREaXIgPSAkb3V0cHV0RGly
LnJlYWxwYXRoCiskcGFyYWxsZWxEaXIgPSAkb3V0cHV0RGlyICsgIi5wYXJhbGxlbCIKKworcHJl
cGFyZUJ1bmRsZSB1bmxlc3MgJGJ1bmRsZQorcHJlcGFyZVBhcmFsbGVsVGVzdFJ1bm5lciB1bmxl
c3MgJGJ1bmRsZQorY2xlYW5QYXJhbGxlbERpcmVjdG9yeSBpZiAkYnVuZGxlCitjbGVhbk9sZFJl
c3VsdHMgaWYgJGJ1bmRsZQorcnVuUGFyYWxsZWxUZXN0UnVubmVyCitjbGVhbkVtcHR5UmVzdWx0
RmlsZXMKK2RldGVjdEZhaWx1cmVzIHVubGVzcyAkYnVuZGxlCitjb21wcmVzc0J1bmRsZSBpZiAk
dGFyYmFsbApJbmRleDogVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVj
ay1tb3ppbGxhLWZhaWx1cmUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNz
LXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmUJKHJldmlzaW9uIDE1OTY5NikKKysr
IFRvb2xzL1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvY2hlY2stbW96aWxsYS1mYWls
dXJlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHJ1YnkK
LQotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
IwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLUZpbGUub3BlbihBUkdWWzBdLCAi
ciIpIHsKLSAgICB8IGlucCB8Ci0gICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgIHwgbGluZSB8
Ci0gICAgICAgIGV4aXQgMCBpZiBsaW5lID1+IC9mYWlsZWQhL2kKLSAgICB9Ci19Ci0KLWV4aXQg
MQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217715</attachid>
            <date>2013-11-22 14:08:14 -0800</date>
            <delta_ts>2013-12-02 11:43:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131122140814.patch</filename>
            <type>text/plain</type>
            <size>37247</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTY5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEzLTExLTIyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuIFdhcyBqdXN0IGEgcnVieSBy
ZWltcGxlbWVudGF0aW9uIAorICAgICAgICBvZiBncmVwIC1pIC1xCisgICAgICAgICogU2NyaXB0
cy9ydW4tamF2YXNjcmlwdGNvcmUtdGVzdHM6IFBhc3MgdGhyb3VnaCB0aGUgLS10YXJiYWxsIGZs
YWcuCisgICAgICAgICogU2NyaXB0cy9ydW4tanNjLXN0cmVzcy10ZXN0czogQ2hhbmdlZCB0byBj
cmVhdGUgYSBidW5kbGUgb2YgdGVzdHMgaW5zaWRlIHRoZSByZXN1bHRzIGRpcmVjdG9yeS4gCisg
ICAgICAgIFdlIG5vdyBhbHNvIGNvcHkgd2hhdGV2ZXIgVk0gd2FzIHNwZWNpZmllZCwgYWxvbmcg
d2l0aCBpdHMgYXNzb2NpYXRlZCBmcmFtZXdvcmssIGludG8gdGhpcyBkaXJlY3RvcnkuIAorICAg
ICAgICBBbGwgb2YgdGhlIGdlbmVyYXRlZCBzY3JpcHRzIG5vdyBhcmUgY29tcGxldGVseSByZWxh
dGl2ZSB3aXRoaW4gdGhlIHJlc3VsdHMgZGlyZWN0b3J5LiBUaGlzIGFsbG93cyAKKyAgICAgICAg
cnVuLWpzYy1zdHJlc3MtdGVzdHMgdG8gZXhlY3V0ZSBhIGJ1bmRsZSBmcm9tIGFueXdoZXJlLiBB
bHNvIGFkZGVkIGEgLS10YXJiYWxsIGZsYWcgd2hpY2ggY3JlYXRlcyBhIAorICAgICAgICB0YXJi
YWxsIG9mIHRoZSBnZW5lcmF0ZWQgcmVzdWx0cyBkaXJlY3RvcnkuIEFsc28gcmVmYWN0b3JlZCBz
ZXZlcmFsIHBvcnRpb25zIG9mIHRoZSBzY3JpcHQgaW50byAKKyAgICAgICAgc2VwYXJhdGUgZnVu
Y3Rpb25zIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJ1biB0aGVtIGNvbmRpdGlvbmFsbHkgZGVwZW5k
aW5nIG9uIHdoaWNoIG1vZGUgd2UncmUgcnVubmluZyBpbi4KKwogMjAxMy0xMS0yMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjE1OTY5MC4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRj
b3JlLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWphdmFzY3JpcHRjb3Jl
LXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1qYXZhc2NyaXB0
Y29yZS10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksOCBAQCBteSAkcnVuSlNDU3Ry
ZXNzID0gIWlzQXBwbGVXaW5XZWJLaXQoKSAmCiAKIG15ICRlbmFibGVGVEwgPSAwOwogCitteSAk
Y3JlYXRlVGFyYmFsbCA9IDA7CisKIG15ICRwcm9ncmFtTmFtZSA9IGJhc2VuYW1lKCQwKTsKIG15
ICRidWlsZEpTQ0RlZmF1bHQgPSAkYnVpbGRKU0MgPyAid2lsbCBjaGVjayIgOiAid2lsbCBub3Qg
Y2hlY2siOwogbXkgJHRlc3RhcGlEZWZhdWx0ID0gJHJ1blRlc3RBUEkgPyAid2lsbCBydW4iIDog
IndpbGwgbm90IHJ1biI7CkBAIC05NCw2ICs5Niw3IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1bbm8tXWJ1aWxkICAgICAgICAgICAgICAgICAgQ2hlY2sg
KG9yIGRvbid0IGNoZWNrKSB0byBzZWUgaWYgdGhlIGpzYyBidWlsZCBpcyB1cC10by1kYXRlIChk
ZWZhdWx0OiAkYnVpbGRKU0NEZWZhdWx0KQogICAtLVtuby1ddGVzdGFwaSAgICAgICAgICAgICAg
ICBSdW4gKG9yIGRvbid0IHJ1bikgdGVzdGFwaSAoZGVmYXVsdDogJHRlc3RhcGlEZWZhdWx0KQog
ICAtLVtuby1danNjLXN0cmVzcyAgICAgICAgICAgICBSdW4gKG9yIGRvbid0IHJ1bikgdGhlIEpT
QyBzdHJlc3MgdGVzdHMgKGRlZmF1bHQ6ICRqc2NTdHJlc3NEZWZhdWx0KQorICAtLXRhcmJhbGwg
ICAgICAgICAgICAgICAgICAgICBDcmVhdGUgYSB0YXJiYWxsIG9mIHRoZSBidW5kbGUgcHJvZHVj
ZWQgYnkgcnVubmluZyB0aGUgSlNDIHN0cmVzcyB0ZXN0cy4KIEVPRgogCiBHZXRPcHRpb25zKApA
QCAtMTA0LDYgKzEwNyw3IEBAIEdldE9wdGlvbnMoCiAgICAgJ2Z0bC1qaXQhJyA9PiBcJGVuYWJs
ZUZUTCwKICAgICAndGVzdGFwaSEnID0+IFwkcnVuVGVzdEFQSSwKICAgICAnanNjLXN0cmVzcyEn
ID0+IFwkcnVuSlNDU3RyZXNzLAorICAgICd0YXJiYWxsIScgPT4gXCRjcmVhdGVUYXJiYWxsLAog
ICAgICdoZWxwJyA9PiBcJHNob3dIZWxwCiApOwogCkBAIC0yMzksNiArMjQzLDkgQEAgaWYgKCRy
dW5KU0NTdHJlc3MpIHsKICAgICBpZiAoJGVuYWJsZUZUTCkgewogICAgICAgICBwdXNoKEBqc2NT
dHJlc3NEcml2ZXJDbWQsICItLWZ0bC1qaXQiKTsKICAgICB9CisgICAgaWYgKCRjcmVhdGVUYXJi
YWxsKSB7CisgICAgICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tdGFyYmFsbCIpOwor
ICAgIH0KICAgICBpZiAoZGVmaW5lZCgkZXh0cmFUZXN0cykpIHsKICAgICAgICAgcHVzaChAanNj
U3RyZXNzRHJpdmVyQ21kLCAkZXh0cmFUZXN0cyk7CiAgICAgfQpJbmRleDogVG9vbHMvU2NyaXB0
cy9ydW4tanNjLXN0cmVzcy10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCShyZXZpc2lvbiAxNTk2OTYpCisrKyBUb29scy9TY3JpcHRzL3J1bi1q
c2Mtc3RyZXNzLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw2ICsyMyw3IEBACiAjIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgogIyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCityZXF1aXJlICdmaWxldXRpbHMnCiByZXF1aXJlICdn
ZXRvcHRsb25nJwogcmVxdWlyZSAncGF0aG5hbWUnCiByZXF1aXJlICd5YW1sJwpAQCAtMzYsNyAr
MzcsNyBAQCByYWlzZSB1bmxlc3MgU0NSSVBUU19QQVRILmRpcm5hbWUuYmFzZW5hCiAKIEhFTFBF
UlNfUEFUSCA9IFNDUklQVFNfUEFUSCArICJqc2Mtc3RyZXNzLXRlc3QtaGVscGVycyIKIAotSU1Q
T1JUQU5UX0VOVlMgPSBbIkpTQ190aW1lb3V0IiwgIkRZTERfRlJBTUVXT1JLX1BBVEgiXQorSU1Q
T1JUQU5UX0VOVlMgPSBbIkpTQ190aW1lb3V0Il0KIAogYmVnaW4KICAgICByZXF1aXJlICdzaGVs
bHdvcmRzJwpAQCAtODEsMTAgKzgyLDEwIEBAIGVuZAogCiAkanNjUGF0aCA9IG5pbAogJGVuYWJs
ZUZUTCA9IGZhbHNlCi0kY29sbGVjdGlvbnMgPSBbXQogJG91dHB1dERpciA9IFBhdGhuYW1lLm5l
dygicmVzdWx0cyIpCiAkdmVyYm9zaXR5ID0gMAotJGVycm9yT25GYWlsdXJlID0gZmFsc2UKKyRi
dW5kbGUgPSBuaWwKKyR0YXJiYWxsID0gZmFsc2UKIAogZGVmIHVzYWdlCiAgICAgcHV0cyAicnVu
LWpzYy1zdHJlc3MtdGVzdHMgLWogPHNoZWxsIHBhdGg+IDxjb2xsZWN0aW9ucyBwYXRoPiBbPGNv
bGxlY3Rpb25zIHBhdGg+IC4uLl0iCkBAIC05Miw4ICs5Myw5IEBAIGRlZiB1c2FnZQogICAgIHB1
dHMgIi0tanNjICAgICAgICAgICAgICAgICgtaikgICBQYXRoIHRvIEphdmFTY3JpcHRDb3JlLiBU
aGlzIG9wdGlvbiBpcyByZXF1aXJlZC4iCiAgICAgcHV0cyAiLS1mdGwtaml0ICAgICAgICAgICAg
ICAgICAgIEluZGljYXRlIHRoYXQgd2UgaGF2ZSB0aGUgRlRMIEpJVC4iCiAgICAgcHV0cyAiLS1v
dXRwdXQtZGlyICAgICAgICAgKC1vKSAgIFBhdGggd2hlcmUgdG8gcHV0IHJlc3VsdHMuIERlZmF1
bHQgaXMgI3skb3V0cHV0RGlyfS4iCi0gICAgcHV0cyAiLS1bbm8tXWVycm9yLW9uLWZhaWx1cmUg
ICAgIEV4aXQgd2l0aCBleGl0IGNvZGUgMSBpZiBhbnkgdGVzdHMgZmFpbC4gRGVmYXVsdCBpcyAj
eyRlcnJvck9uRmFpbHVyZX0uIgogICAgIHB1dHMgIi0tdmVyYm9zZSAgICAgICAgICAgICgtdikg
ICBQcmludCBtb3JlIHRoaW5ncyB3aGlsZSBydW5uaW5nLiIKKyAgICBwdXRzICItLXJ1bi1idW5k
bGUgICAgICAgICAgICAgICAgUnVucyBhIGJ1bmRsZSBwcmV2aW91c2x5IGNyZWF0ZWQgYnkgcnVu
LWpzYy1zdHJlc3MtdGVzdHMuIgorICAgIHB1dHMgIi0tdGFyYmFsbCAgICAgICAgICAgICAgICAg
ICBDcmVhdGVzIGEgdGFyYmFsbCBvZiB0aGUgZmluYWwgYnVuZGxlLiIKICAgICBwdXRzICItLWhl
bHAgICAgICAgICAgICAgICAoLWgpICAgUHJpbnQgdGhpcyBtZXNzYWdlLiIKICAgICBleGl0IDEK
IGVuZApAQCAtMTAyLDkgKzEwNCw5IEBAIEdldG9wdExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywg
R2V0b3B0TG8KICAgICAgICAgICAgICAgIFsnLS1qc2MnLCAnLWonLCBHZXRvcHRMb25nOjpSRVFV
SVJFRF9BUkdVTUVOVF0sCiAgICAgICAgICAgICAgICBbJy0tZnRsLWppdCcsIEdldG9wdExvbmc6
Ok5PX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1vdXRwdXQtZGlyJywgJy1vJywgR2V0
b3B0TG9uZzo6UkVRVUlSRURfQVJHVU1FTlRdLAotICAgICAgICAgICAgICAgWyctLXZlcmJvc2Un
LCAnLXYnLCBHZXRvcHRMb25nOjpOT19BUkdVTUVOVF0sCi0gICAgICAgICAgICAgICBbJy0tZXJy
b3Itb24tZmFpbHVyZScsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAgICAgICAg
IFsnLS1uby1lcnJvci1vbi1mYWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdKS5lYWNo
IHsKKyAgICAgICAgICAgICAgIFsnLS1ydW4tYnVuZGxlJywgR2V0b3B0TG9uZzo6UkVRVUlSRURf
QVJHVU1FTlRdLAorICAgICAgICAgICAgICAgWyctLXRhcmJhbGwnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6
Ok5PX0FSR1VNRU5UXSkuZWFjaCB7CiAgICAgfCBvcHQsIGFyZyB8CiAgICAgY2FzZSBvcHQKICAg
ICB3aGVuICctLWhlbHAnCkBAIC0xMTUsMTcgKzExNywyMiBAQCBHZXRvcHRMb25nLm5ldyhbJy0t
aGVscCcsICctaCcsIEdldG9wdExvCiAgICAgICAgICRvdXRwdXREaXIgPSBQYXRobmFtZS5uZXco
YXJnKQogICAgIHdoZW4gJy0tZnRsLWppdCcKICAgICAgICAgJGVuYWJsZUZUTCA9IHRydWUKLSAg
ICB3aGVuICctLWVycm9yLW9uLWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFpbHVyZSA9IHRy
dWUKLSAgICB3aGVuICctLW5vLWVycm9yLW9uLWZhaWx1cmUnCi0gICAgICAgICRlcnJvck9uRmFp
bHVyZSA9IGZhbHNlCiAgICAgd2hlbiAnLS12ZXJib3NlJwogICAgICAgICAkdmVyYm9zaXR5ICs9
IDEKKyAgICB3aGVuICctLXJ1bi1idW5kbGUnCisgICAgICAgICRidW5kbGUgPSBQYXRobmFtZS5u
ZXcoYXJnKQorICAgIHdoZW4gJy0tdGFyYmFsbCcKKyAgICAgICAgJHRhcmJhbGwgPSB0cnVlCiAg
ICAgZW5kCiB9CiAKICRwcm9ncmVzc01ldGVyID0gKCR2ZXJib3NpdHkgPT0gMCBhbmQgJHN0ZGlu
LnR0eT8pCiAKK2lmICRidW5kbGUKKyAgICAkanNjUGF0aCA9ICRidW5kbGUgKyAiLnZtIiArICJK
YXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsiICsgIlJlc291cmNlcyIgKyAianNjIgorICAgICRvdXRw
dXREaXIgPSAkYnVuZGxlCitlbmQKKwogdW5sZXNzICRqc2NQYXRoCiAgICAgJHN0ZGVyci5wdXRz
ICJFcnJvcjogbXVzdCBzcGVjaWZ5IC1qIDxwYXRoPi4iCiAgICAgZXhpdCAxCkBAIC0xMzcsNiAr
MTQ0LDM4IEBAIEVBR0VSX09QVElPTlMgPSBbIi0tdGhyZXNob2xkRm9ySklUQWZ0ZXIKIAogJHJ1
bmxpc3QgPSBbXQogCitkZWYgZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKKyAgICBpZiBq
c2NQYXRoLmRpcm5hbWUuYmFzZW5hbWUudG9fcyA9PSAiUmVzb3VyY2VzIiBhbmQganNjUGF0aC5k
aXJuYW1lLmRpcm5hbWUuYmFzZW5hbWUudG9fcyA9PSAiSmF2YVNjcmlwdENvcmUuZnJhbWV3b3Jr
IgorICAgICAgICBqc2NQYXRoLmRpcm5hbWUuZGlybmFtZQorICAgIGVsc2lmIGpzY1BhdGguZGly
bmFtZS5iYXNlbmFtZS50b19zID09ICJEZWJ1ZyIgYW5kIGpzY1BhdGguZGlybmFtZS5kaXJuYW1l
LmJhc2VuYW1lLnRvX3MgPT0gIldlYktpdEJ1aWxkIgorICAgICAgICBqc2NQYXRoLmRpcm5hbWUg
KyAiSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlVu
a25vd24gSlNDIHBhdGgsIGNhbm5vdCBjb3B5IGZ1bGwgZnJhbWV3b3JrOiAje2pzY1BhdGh9Igor
ICAgIGVuZAorZW5kCisKK2RlZiBjb3B5Vk1Ub0J1bmRsZQorICAgIHJhaXNlIGlmICRidW5kbGUK
KworICAgIHZtRGlyID0gJG91dHB1dERpciArICIudm0iCisgICAgRmlsZVV0aWxzLm1rZGlyX3Ag
dm1EaXIKKyAgICAKKyAgICBmcmFtZXdvcmtQYXRoID0gZnJhbWV3b3JrRnJvbUpTQ1BhdGgoJGpz
Y1BhdGgpCisgICAgRmlsZVV0aWxzLmNwX3IgZnJhbWV3b3JrUGF0aCwgdm1EaXIKKworICAgICRm
cmFtZXdvcmtQYXRoID0gUGF0aG5hbWUubmV3KCIudm0iKSArICJKYXZhU2NyaXB0Q29yZS5mcmFt
ZXdvcmsiCisgICAgJGpzY1BhdGggPSAkZnJhbWV3b3JrUGF0aCArICJSZXNvdXJjZXMiICsgImpz
YyIKK2VuZAorCitkZWYgcGF0aFRvVk0KKyAgICBkaXIgPSBQYXRobmFtZS5uZXcoIi4iKQorICAg
ICRiZW5jaG1hcmtEaXJlY3RvcnkuZWFjaF9maWxlbmFtZSB7CisgICAgICAgIHwgcGF0aENvbXBv
bmVudCB8CisgICAgICAgIGRpciArPSAiLi4iCisgICAgfQorICAgIGRpciArICRqc2NQYXRoCitl
bmQKKwogZGVmIHByZWZpeENvbW1hbmQocHJlZml4KQogICAgICJhd2sgIiArIFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoInsgcHJpbnRmICN7KHByZWZpeCArICc6ICcpLmluc3BlY3R9OyBwcmludCB9
IikKIGVuZApAQCAtMTQ5LDcgKzE4OCw3IEBAIGVuZAogZGVmIHNpbGVudE91dHB1dEhhbmRsZXIK
ICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgbmFtZSB8Ci0gICAgICAgICIgfCAiICsgcGlwZUFu
ZFByZWZpeENvbW1hbmQoKCRvdXRwdXREaXIgKyAobmFtZSArICIub3V0IikpLnRvX3MsIG5hbWUp
CisgICAgICAgICIgfCAiICsgcGlwZUFuZFByZWZpeENvbW1hbmQoKFBhdGhuYW1lKCIuLiIpICsg
KG5hbWUgKyAiLm91dCIpKS50b19zLCBuYW1lKQogICAgIH0KIGVuZAogCkBAIC0xNTcsNyArMTk2
LDcgQEAgZW5kCiBkZWYgbm9pc3lPdXRwdXRIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAg
ICB8IG5hbWUgfAotICAgICAgICAiIHwgY2F0ID4gIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUo
KCRvdXRwdXREaXIgKyAobmFtZSArICIub3V0IikpLnRvX3MpCisgICAgICAgICIgfCBjYXQgPiAi
ICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUoIi4uIikgKyAobmFtZSArICIub3V0
IikpLnRvX3MpCiAgICAgfQogZW5kCiAKQEAgLTE3OSwxNiArMjE4LDE2IEBAIGVuZAogZGVmIGRp
ZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKICAgICBQcm9jLm5ldyB7CiAgICAgICAg
IHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZSgoJG91dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQotICAgICAg
ICBkaWZmRmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKCgkb3V0cHV0RGlyICsgKHBs
YW4ubmFtZSArICIuZGlmZiIpKS50b19zKQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxs
d29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0Iikp
LnRvX3MpCisgICAgICAgIGRpZmZGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBh
dGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIuZGlmZiIpKS50b19zKQogICAgICAgICAKICAg
ICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91
dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVu
YW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFp
bEZpbGV9YCkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0
cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0
IC1lICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCisgICAgICAg
IG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lIC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBl
Y3RlZEZpbGVuYW1lKX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKLSAgICAgICAgb3V0cC5w
dXRzICIgICAgZGlmZiAtdSAje1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoZXhwZWN0ZWRGaWxlbmFt
ZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1
dHMgIiAgICBkaWZmIC11IC4uLyN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVu
YW1lKX0gI3tvdXRwdXRGaWxlbmFtZX0gPiAje2RpZmZGaWxlbmFtZX0iCiAgICAgICAgIG91dHAu
cHV0cyAiICAgIGlmIFsgJD8gLWVxIDAgXSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgdGhlbiIK
ICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKQEAgLTIwOCwx
MyArMjQ3LDEzIEBAIGVuZAogZGVmIG1vemlsbGFFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7
CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19z
KQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhu
YW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5w
dXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhl
biIKICAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hv
IEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAi
ICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBw
bGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAiZWxpZiBydWJ5ICIgKyBTaGVsbHdv
cmRzLnNoZWxsZXNjYXBlKChIRUxQRVJTX1BBVEggKyAiY2hlY2stbW96aWxsYS1mYWlsdXJlIiku
dG9fcykgKyAiICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAgICBvdXRwLnB1dHMgImVsaWYgZ3Jl
cCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9IgogICAgICAgICBvdXRwLnB1dHMgInRo
ZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIERldGVjdGVkIGZhaWx1cmVzOiAmJiBj
YXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHByZWZpeENvbW1hbmQocGxhbi5uYW1lKQogICAg
ICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29tbWFuZApAQCAtMjI5LDEyICsyNjgs
MTIgQEAgZW5kCiBkZWYgbW96aWxsYUZhaWxFcnJvckhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAg
ICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jk
cy5zaGVsbGVzY2FwZSgoJG91dHB1dERpciArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQor
ICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1l
KCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCiAKICAgICAgICAgb3V0cC5wdXRz
ICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIK
ICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKLSAgICAgICAg
b3V0cC5wdXRzICJlbGlmIHJ1YnkgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKEhFTFBFUlNf
UEFUSCArICJjaGVjay1tb3ppbGxhLWZhaWx1cmUiKS50b19zKSArICIgI3tvdXRwdXRGaWxlbmFt
ZX0iCisgICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1pIC1xIGZhaWxlZCEgI3tvdXRwdXRG
aWxlbmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIg
ICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKICAgICAgICAgb3V0cC5wdXRzICJlbHNlIgpAQCAt
MjQ5LDEzICsyODgsMTMgQEAgZW5kCiBkZWYgbW96aWxsYUV4aXQzRXJyb3JIYW5kbGVyCiAgICAg
UHJvYy5uZXcgewogICAgICAgICB8IG91dHAsIHBsYW4gfAotICAgICAgICBvdXRwdXRGaWxlbmFt
ZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyAocGxhbi5uYW1lICsgIi5v
dXQiKSkudG9fcykKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAiLm91dCIpKS50b19zKQogCiAgICAg
ICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFpbEZpbGV9IgogICAgICAgICBvdXRw
LnB1dHMgInRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgYGNhdCAje3BsYW4uZmFp
bEZpbGV9YCAtZXEgMyBdIgogICAgICAgICBvdXRwLnB1dHMgIiAgICB0aGVuIgotICAgICAgICBv
dXRwLnB1dHMgIiAgICAgICAgaWYgcnVieSAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoSEVM
UEVSU19QQVRIICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIpLnRvX3MpICsgIiAje291dHB1dEZp
bGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIGlmIGdyZXAgLWkgLXEgZmFpbGVk
ISAje291dHB1dEZpbGVuYW1lfSIKICAgICAgICAgb3V0cC5wdXRzICIgICAgICAgIHRoZW4iCiAg
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgKGVjaG8gRGV0ZWN0ZWQgZmFpbHVyZXM6ICYm
IGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAg
ICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgIiArIHBsYW4uZmFpbENvbW1hbmQKQEAgLTI4
MCw3ICszMTksNyBAQCBjbGFzcyBQbGFuCiAgICAgYXR0cl9hY2Nlc3NvciA6aW5kZXgKICAgICAK
ICAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3VtZW50cywgbmFtZSwgb3V0cHV0SGFu
ZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0b3J5ID0gZGlyZWN0b3J5LnJlYWxw
YXRoCisgICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkKICAgICAgICAgQGFyZ3VtZW50cyA9
IGFyZ3VtZW50cwogICAgICAgICBAbmFtZSA9IG5hbWUKICAgICAgICAgQG91dHB1dEhhbmRsZXIg
PSBvdXRwdXRIYW5kbGVyCkBAIC0yODksNyArMzI4LDEwIEBAIGNsYXNzIFBsYW4KICAgICBlbmQK
ICAgICAKICAgICBkZWYgc2hlbGxDb21tYW5kCi0gICAgICAgICIoY2QgI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmIFwiJEBcIiAiICsgQGFyZ3VtZW50cy5tYXB7
CisgICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1iZXIgdGhhdCB0aGUgdGVzdCBpcyBh
Y3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2UgY2hhbmdlIGRpcmVjdG9yeQorICAg
ICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVybiB3ZSB3aWxsIGJlIGluIG91ciBv
cmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNhdXNlIHdlIGRvbid0CisgICAgICAg
ICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRvIHRoaW5ncyByZWxhdGl2ZSB0byB0
aGUgcm9vdC4KKyAgICAgICAgIihjZCAuLi8je1NoZWxsd29yZHMuc2hlbGxlc2NhcGUoQGRpcmVj
dG9yeS50b19zKX0gJiYgXCIkQFwiICIgKyBAYXJndW1lbnRzLm1hcHsKICAgICAgICAgICAgIHwg
diB8CiAgICAgICAgICAgICByYWlzZSAiRGV0ZWN0ZWQgYSBub24tc3RyaW5nIGluICN7aW5zcGVj
dH0iIHVubGVzcyB2LmlzX2E/IFN0cmluZwogICAgICAgICAgICAgU2hlbGx3b3Jkcy5zaGVsbGVz
Y2FwZSh2KQpAQCAtMjk3LDcgKzMzOSwxNyBAQCBjbGFzcyBQbGFuCiAgICAgZW5kCiAgICAgCiAg
ICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICBzY3JpcHQgPSAiIgorICAgICAgICAj
IFdlIGhhdmUgdG8gZmluZCBvdXIgd2F5IGJhY2sgdG8gdGhlIC5wYXJhbGxlbCBkaXJlY3Rvcnkg
c2luY2UgdGhhdCdzIHdoZXJlIGFsbCBvZiB0aGUgcmVsYXRpdmUKKyAgICAgICAgIyBwYXRocyBh
c3N1bWUgdGhleSBzdGFydCBvdXQgZnJvbS4KKyAgICAgICAgc2NyaXB0ID0gIkNVUlJFTlRfRElS
PVwiJCggY2QgXCIkKCBkaXJuYW1lIFwiJHtCQVNIX1NPVVJDRVswXX1cIiApXCIgJiYgcHdkIClc
IlxuIgorICAgICAgICBzY3JpcHQgKz0gImNkICRDVVJSRU5UX0RJUlxuIgorICAgICAgICBQYXRo
bmFtZS5uZXcoQG5hbWUpLmRpcm5hbWUuZWFjaF9maWxlbmFtZSB7CisgICAgICAgICAgICB8IHBh
dGhDb21wb25lbnQgfAorICAgICAgICAgICAgc2NyaXB0ICs9ICJjZCAuLlxuIgorICAgICAgICB9
CisgICAgICAgIHNjcmlwdCArPSAiY2QgLnBhcmFsbGVsXG4iCisKKyAgICAgICAgc2NyaXB0ICs9
ICJleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSD0kKGNkIC4uLyN7JGZyYW1ld29ya1BhdGguZGly
bmFtZX07IHB3ZClcbiIKICAgICAgICAgSU1QT1JUQU5UX0VOVlMuZWFjaCB7CiAgICAgICAgICAg
ICB8IGtleSB8CiAgICAgICAgICAgICBpZiBFTlZba2V5XQpAQCAtMzA1LDcgKzM1Nyw3IEBAIGNs
YXNzIFBsYW4KICAgICAgICAgICAgIGVuZAogICAgICAgICB9CiAgICAgICAgIHNjcmlwdCArPSAi
I3tzaGVsbENvbW1hbmR9IHx8IGV4aXQgMSIKLSAgICAgICAgImVjaG8gI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKCgkb3V0cHV0RGly
ICsgQG5hbWUpLnRvX3MpfSIKKyAgICAgICAgImVjaG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZS5uZXcoIi4uIikg
KyBAbmFtZSkudG9fcyl9IgogICAgIGVuZAogICAgIAogICAgIGRlZiBmYWlsQ29tbWFuZApAQCAt
MzY2LDIyICs0MTgsMjYgQEAgZW5kCiAjIHJldHVybnMgZmFsc2UsIGluIHdoaWNoIGNhc2UgeW91
J3JlIHN1cHBvc2VkIHRvIGFkZCB5b3VyIG93biBydW4gY29tbWFuZHMuCiBkZWYgcGFyc2VSdW5D
b21tYW5kcwogICAgIGRpZFJ1biA9IGZhbHNlCi0gICAgRmlsZS5vcGVuKCRiZW5jaG1hcmtEaXJl
Y3RvcnkgKyAkYmVuY2htYXJrKSB7Ci0gICAgICAgIHwgaW5wIHwKLSAgICAgICAgaW5wLmVhY2hf
bGluZSB7Ci0gICAgICAgICAgICB8IGxpbmUgfAotICAgICAgICAgICAgYmVnaW4KLSAgICAgICAg
ICAgICAgICBkb2VzTWF0Y2ggPSBsaW5lID1+IC9eXC9cL0AvCi0gICAgICAgICAgICByZXNjdWUg
RXhjZXB0aW9uID0+IGUKLSAgICAgICAgICAgICAgICAjIEFwcGFyZW50bHkgdGhpcyBoYXBwZW5z
IGluIHRoZSBjYXNlIG9mIHNvbWUgVVRGOCBzdHVmZiBpbiBzb21lIGZpbGVzLCB3aGVyZQotICAg
ICAgICAgICAgICAgICMgUnVieSB0cmllcyB0byBiZSBzdHJpY3QgYW5kIHRocm93IGV4Y2VwdGlv
bnMuCi0gICAgICAgICAgICAgICAgbmV4dAotICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICBu
ZXh0IHVubGVzcyBkb2VzTWF0Y2gKLSAgICAgICAgICAgIGV2YWwgJH4ucG9zdF9tYXRjaAotICAg
ICAgICAgICAgZGlkUnVuID0gdHJ1ZQorCisgICAgRGlyLmNoZGlyKCRvdXRwdXREaXIpIHsKKyAg
ICAgICAgRmlsZS5vcGVuKCRiZW5jaG1hcmtEaXJlY3RvcnkgKyAkYmVuY2htYXJrKSB7CisgICAg
ICAgICAgICB8IGlucCB8CisgICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKKyAgICAgICAgICAg
ICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgIGJlZ2luCisgICAgICAgICAgICAgICAgICAg
IGRvZXNNYXRjaCA9IGxpbmUgPX4gL15cL1wvQC8KKyAgICAgICAgICAgICAgICByZXNjdWUgRXhj
ZXB0aW9uID0+IGUKKyAgICAgICAgICAgICAgICAgICAgIyBBcHBhcmVudGx5IHRoaXMgaGFwcGVu
cyBpbiB0aGUgY2FzZSBvZiBzb21lIFVURjggc3R1ZmYgaW4gc29tZSBmaWxlcywgd2hlcmUKKyAg
ICAgICAgICAgICAgICAgICAgIyBSdWJ5IHRyaWVzIHRvIGJlIHN0cmljdCBhbmQgdGhyb3cgZXhj
ZXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgbmV4dAorICAgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGRvZXNNYXRjaAorICAgICAgICAgICAgICAgIGV2
YWwgJH4ucG9zdF9tYXRjaAorICAgICAgICAgICAgICAgIGRpZFJ1biA9IHRydWUKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KKwogICAgIGRpZFJ1bgogZW5kCiAKQEAgLTM5MCw3ICs0
NDYsNyBAQCBkZWYgc2xvdyEKIGVuZAogCiBkZWYgcnVuKGtpbmQsICpvcHRpb25zKQotICAgIGFk
ZFJ1bkNvbW1hbmQoa2luZCwgWyRqc2NQYXRoLnRvX3NdICsgb3B0aW9ucyArIFskYmVuY2htYXJr
LnRvX3NdLCBzaWxlbnRPdXRwdXRIYW5kbGVyLCBzaW1wbGVFcnJvckhhbmRsZXIpCisgICAgYWRk
UnVuQ29tbWFuZChraW5kLCBbcGF0aFRvVk0udG9fc10gKyBvcHRpb25zICsgWyRiZW5jaG1hcmsu
dG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKIGVuZAogCiBk
ZWYgcnVuRGVmYXVsdApAQCAtNDcwLDcgKzUyNiw3IEBAIGVuZAogZGVmIHJ1blByb2ZpbGVyCiAg
ICAgcHJvZmlsZXJPdXRwdXQgPSB1bmlxdWVGaWxlbmFtZSgiLmpzb24iKQogICAgIGlmICRjYW5S
dW5EaXNwbGF5UHJvZmlsZXJPdXRwdXQKLSAgICAgICAgYWRkUnVuQ29tbWFuZCgicHJvZmlsZXIi
LCBbInJ1YnkiLCAoSEVMUEVSU19QQVRIICsgInByb2ZpbGVyLXRlc3QtaGVscGVyIikudG9fcywg
KFNDUklQVFNfUEFUSCArICJkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCIpLnRvX3MsIHByb2ZpbGVy
T3V0cHV0LnRvX3MsICRqc2NQYXRoLnRvX3MsICItcCIsIHByb2ZpbGVyT3V0cHV0LnRvX3MsICRi
ZW5jaG1hcmsudG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikK
KyAgICAgICAgYWRkUnVuQ29tbWFuZCgicHJvZmlsZXIiLCBbInJ1YnkiLCAoSEVMUEVSU19QQVRI
ICsgInByb2ZpbGVyLXRlc3QtaGVscGVyIikudG9fcywgKFNDUklQVFNfUEFUSCArICJkaXNwbGF5
LXByb2ZpbGVyLW91dHB1dCIpLnRvX3MsIHByb2ZpbGVyT3V0cHV0LnRvX3MsIHBhdGhUb1ZNLnRv
X3MsICItcCIsIHByb2ZpbGVyT3V0cHV0LnRvX3MsICRiZW5jaG1hcmsudG9fc10sIHNpbGVudE91
dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKICAgICBlbHNlCiAgICAgICAgIHB1dHMg
IlJ1bm5pbmcgc2ltcGxlIHZlcnNpb24gb2YgI3skY29sbGVjdGlvbk5hbWV9LyN7JGJlbmNobWFy
a30gYmVjYXVzZSBzb21lIHJlcXVpcmVkIFJ1YnkgZmVhdHVyZXMgYXJlIHVuYXZhaWxhYmxlLiIK
ICAgICAgICAgcnVuKCJwcm9maWxlci1zaW1wbGUiLCAiLXAiLCBwcm9maWxlck91dHB1dC50b19z
KQpAQCAtNDg1LDEyICs1NDEsMTUgQEAgZGVmIHJ1bkxheW91dFRlc3Qoa2luZCwgKm9wdGlvbnMp
CiAgICAgZWxzZQogICAgICAgICBraW5kID0gImxheW91dCIKICAgICBlbmQKLSAgICBhcmdzID0K
LSAgICAgICAgWyRqc2NQYXRoLnRvX3NdICsgb3B0aW9ucyArCi0gICAgICAgIFsoTEFZT1VUVEVT
VFNfUEFUSCArICJyZXNvdXJjZXMiICsgInN0YW5kYWxvbmUtcHJlLmpzIikudG9fcywKKworICAg
IHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoWyIuLi8je3Rlc3ROYW1lfS1leHBlY3RlZC50eHQi
XSwgJGJlbmNobWFya0RpcmVjdG9yeSkKKyAgICBwcmVwYXJlRXh0cmFBYnNvbHV0ZUZpbGVzKExB
WU9VVFRFU1RTX1BBVEgsIFsicmVzb3VyY2VzL3N0YW5kYWxvbmUtcHJlLmpzIiwgInJlc291cmNl
cy9zdGFuZGFsb25lLXBvc3QuanMiXSkKKworICAgIGFyZ3MgPSBbcGF0aFRvVk0udG9fc10gKyBv
cHRpb25zICsKKyAgICAgICAgWyhQYXRobmFtZS5uZXcoInJlc291cmNlcyIpICsgInN0YW5kYWxv
bmUtcHJlLmpzIikudG9fcywKICAgICAgICAgICRiZW5jaG1hcmsudG9fcywKLSAgICAgICAgIChM
QVlPVVRURVNUU19QQVRIICsgInJlc291cmNlcyIgKyAic3RhbmRhbG9uZS1wb3N0LmpzIikudG9f
c10KLSAgICBhZGRSdW5Db21tYW5kKGtpbmQsIGFyZ3MsIG5vaXN5T3V0cHV0SGFuZGxlciwgZGlm
ZkVycm9ySGFuZGxlcigoJGJlbmNobWFya0RpcmVjdG9yeS5kaXJuYW1lICsgIiN7dGVzdE5hbWV9
LWV4cGVjdGVkLnR4dCIpLnRvX3MpKQorICAgICAgICAgKFBhdGhuYW1lLm5ldygicmVzb3VyY2Vz
IikgKyAic3RhbmRhbG9uZS1wb3N0LmpzIikudG9fc10KKyAgICBhZGRSdW5Db21tYW5kKGtpbmQs
IGFyZ3MsIG5vaXN5T3V0cHV0SGFuZGxlciwgZGlmZkVycm9ySGFuZGxlcigoJGJlbmNobWFya0Rp
cmVjdG9yeSArICIuLi8je3Rlc3ROYW1lfS1leHBlY3RlZC50eHQiKS50b19zKSkKIGVuZAogCiBk
ZWYgcnVuTGF5b3V0VGVzdERlZmF1bHQKQEAgLTUxNiwxMyArNTc1LDQwIEBAIGRlZiBkZWZhdWx0
UnVuTGF5b3V0VGVzdAogICAgIHJ1bkxheW91dFRlc3RERkdFYWdlck5vQ0pJVAogZW5kCiAKK2Rl
ZiBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVzKGV4dHJhRmlsZXMsIGRlc3RpbmF0aW9uKQorICAg
IERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgIGV4dHJhRmlsZXMuZWFjaCB7CisgICAg
ICAgICAgICB8IGZpbGUgfAorICAgICAgICAgICAgRmlsZVV0aWxzLmNwICRleHRyYUZpbGVzQmFz
ZURpciArIGZpbGUsIGRlc3RpbmF0aW9uICsgZmlsZQorICAgICAgICB9CisgICAgfQorZW5kCisK
K2RlZiBiYXNlRGlyRm9yQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkKKyAgICBQYXRobmFtZSgi
LnRlc3RzIikgKyBjb2xsZWN0aW9uTmFtZQorZW5kCisKK2RlZiBwcmVwYXJlRXh0cmFBYnNvbHV0
ZUZpbGVzKGFic29sdXRlQmFzZSwgZXh0cmFGaWxlcykKKyAgICByYWlzZSB1bmxlc3MgYWJzb2x1
dGVCYXNlLmFic29sdXRlPworICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgIGNv
bGxlY3Rpb25CYXNlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24oJGNvbGxlY3Rpb25OYW1lKQor
ICAgICAgICBleHRyYUZpbGVzLmVhY2ggeworICAgICAgICAgICAgfCBmaWxlIHwKKyAgICAgICAg
ICAgIGRlc3RpbmF0aW9uID0gY29sbGVjdGlvbkJhc2VEaXIgKyBmaWxlCisgICAgICAgICAgICBG
aWxlVXRpbHMubWtkaXJfcCBkZXN0aW5hdGlvbi5kaXJuYW1lIHVubGVzcyBkZXN0aW5hdGlvbi5k
aXJlY3Rvcnk/CisgICAgICAgICAgICBGaWxlVXRpbHMuY3AgYWJzb2x1dGVCYXNlICsgZmlsZSwg
ZGVzdGluYXRpb24KKyAgICAgICAgfQorICAgIH0KK2VuZAorCiBkZWYgcnVuTW96aWxsYVRlc3Qo
a2luZCwgbW9kZSwgZXh0cmFGaWxlcywgKm9wdGlvbnMpCiAgICAgaWYga2luZAogICAgICAgICBr
aW5kID0gIm1vemlsbGEtIiArIGtpbmQKICAgICBlbHNlCiAgICAgICAgIGtpbmQgPSAibW96aWxs
YSIKICAgICBlbmQKLSAgICBhcmdzID0gWyRqc2NQYXRoLnRvX3NdICsgb3B0aW9ucyArIGV4dHJh
RmlsZXMubWFwe3x2fCAoJGJlbmNobWFya0RpcmVjdG9yeSArIHYpLnRvX3N9ICsgWyRiZW5jaG1h
cmsudG9fc10KKyAgICBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVzKGV4dHJhRmlsZXMubWFwe3x2
fCAoUGF0aG5hbWUoIi4uIikgKyB2KS50b19zfSwgJGNvbGxlY3Rpb24pCisgICAgYXJncyA9IFtw
YXRoVG9WTS50b19zXSArIG9wdGlvbnMgKyBleHRyYUZpbGVzLm1hcHt8dnwgdi50b19zfSArIFsk
YmVuY2htYXJrLnRvX3NdCiAgICAgY2FzZSBtb2RlCiAgICAgd2hlbiA6bm9ybWFsCiAgICAgICAg
IGVycm9ySGFuZGxlciA9IG1vemlsbGFFcnJvckhhbmRsZXIKQEAgLTU2NSwxNCArNjUxLDYgQEAg
ZGVmIHNraXAKICAgICBwdXRzICJTa2lwcGluZyAjeyRjb2xsZWN0aW9uTmFtZX0vI3skYmVuY2ht
YXJrfSIKIGVuZAogCi1EaXIubWtkaXIoJG91dHB1dERpcikgdW5sZXNzICRvdXRwdXREaXIuZGly
ZWN0b3J5PwotYmVnaW4KLSAgICBGaWxlLmRlbGV0ZSgkb3V0cHV0RGlyICsgImZhaWxlZCIpCi1y
ZXNjdWUKLWVuZAotCi0kb3V0cHV0RGlyID0gJG91dHB1dERpci5yZWFscGF0aAotCiBkZWYgYWxs
SlNGaWxlcyhwYXRoKQogICAgIGlmIHBhdGguZmlsZT8KICAgICAgICAgW3BhdGhdCkBAIC02MTQs
MTEgKzY5MiwyOSBAQCBkZWYgc2ltcGxpZnlDb2xsZWN0aW9uTmFtZShjb2xsZWN0aW9uUGF0CiBl
bmQKIAogZGVmIHByZXBhcmVDb2xsZWN0aW9uKG5hbWUpCi0gICAgZGlyID0gJG91dHB1dERpcgot
ICAgIFBhdGhuYW1lLm5ldyhuYW1lKS5lYWNoX2ZpbGVuYW1lIHsKLSAgICAgICAgfCBmaWxlbmFt
ZSB8Ci0gICAgICAgIGRpciA9IGRpciArIGZpbGVuYW1lCi0gICAgICAgIERpci5ta2RpcihkaXIp
IHVubGVzcyBkaXIuZGlyZWN0b3J5PworICAgIEZpbGVVdGlscy5ta2Rpcl9wICRvdXRwdXREaXIg
KyBuYW1lCisKKyAgICBhYnNvbHV0ZUNvbGxlY3Rpb24gPSAkY29sbGVjdGlvbi5yZWFscGF0aAor
CisgICAgRGlyLmNoZGlyKCRvdXRwdXREaXIpIHsKKyAgICAgICAgYnVuZGxlRGlyID0gYmFzZURp
ckZvckNvbGxlY3Rpb24obmFtZSkKKworICAgICAgICAjIENyZWF0ZSB0aGUgcHJvcGVyIGRpcmVj
dG9yeSBzdHJ1Y3R1cmVzLgorICAgICAgICBGaWxlVXRpbHMubWtkaXJfcCBidW5kbGVEaXIKKyAg
ICAgICAgaWYgYnVuZGxlRGlyLmJhc2VuYW1lID09ICRjb2xsZWN0aW9uLmJhc2VuYW1lCisgICAg
ICAgICAgICBGaWxlVXRpbHMuY3BfciBhYnNvbHV0ZUNvbGxlY3Rpb24sIGJ1bmRsZURpci5kaXJu
YW1lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEZpbGVVdGlscy5jcF9yIGFic29sdXRlQ29s
bGVjdGlvbiwgYnVuZGxlRGlyCisgICAgICAgIGVuZAorCisgICAgICAgICRleHRyYUZpbGVzQmFz
ZURpciA9IGFic29sdXRlQ29sbGVjdGlvbgorCisgICAgICAgICMgUmVkaXJlY3QgdGhlIGNvbGxl
Y3Rpb24ncyBsb2NhdGlvbiB0byB0aGUgbmV3bHkgY29uc3RydWN0ZWQgYnVuZGxlLgorICAgICAg
ICBpZiBhYnNvbHV0ZUNvbGxlY3Rpb24uZGlyZWN0b3J5PworICAgICAgICAgICAgJGNvbGxlY3Rp
b24gPSBidW5kbGVEaXIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSBi
dW5kbGVEaXIgKyAkY29sbGVjdGlvbi5iYXNlbmFtZQorICAgICAgICBlbmQKICAgICB9CiBlbmQK
IApAQCAtNjI2LDcgKzcyMiw3IEBAICRjb2xsZWN0aW9uTmFtZXMgPSB7fQogCiBkZWYgaGFuZGxl
Q29sbGVjdGlvbkZpbGUoY29sbGVjdGlvbikKICAgICBjb2xsZWN0aW9uTmFtZSA9IHNpbXBsaWZ5
Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlvbikKLSAgICAKKyAgIAogICAgIHBhdGhzID0ge30KICAg
ICBzdWJDb2xsZWN0aW9ucyA9IFtdCiAgICAgWUFNTDo6bG9hZChJTzo6cmVhZChjb2xsZWN0aW9u
KSkuZWFjaCB7CkBAIC02NjIsMTcgKzc1OCwxNyBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbkZpbGUo
Y29sbGVjdGlvbikKICAgICAgICAgJGNvbGxlY3Rpb25OYW1lID0gJGNvbGxlY3Rpb25OYW1lLnRv
X3MKICAgICAgICAgCiAgICAgICAgIHByZXBhcmVDb2xsZWN0aW9uKCRjb2xsZWN0aW9uTmFtZSkK
LSAgICAgICAgCi0gICAgICAgIGFsbEpTRmlsZXMoc3ViQ29sbGVjdGlvbikuZWFjaCB7Ci0gICAg
ICAgICAgICB8IHBhdGggfAotICAgICAgICAgICAgCi0gICAgICAgICAgICBwYXRoID0gcGF0aC5y
ZWFscGF0aAotICAgICAgICAgICAgCi0gICAgICAgICAgICAkYmVuY2htYXJrID0gcGF0aC5iYXNl
bmFtZQotICAgICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9yeSA9IHBhdGguZGlybmFtZQotICAg
ICAgICAgICAgCi0gICAgICAgICAgICAkcnVuQ29tbWFuZE9wdGlvbnMgPSB7fQotICAgICAgICAg
ICAgZXZhbCBlbnRyeVsiY21kIl0KKyAgICAgIAorICAgICAgICBEaXIuY2hkaXIoJG91dHB1dERp
cikgeworICAgICAgICAgICAgYWxsSlNGaWxlcygkY29sbGVjdGlvbikuZWFjaCB7CisgICAgICAg
ICAgICAgICAgfCBwYXRoIHwKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICRiZW5j
aG1hcmsgPSBwYXRoLmJhc2VuYW1lCisgICAgICAgICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9y
eSA9IHBhdGguZGlybmFtZQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICRydW5D
b21tYW5kT3B0aW9ucyA9IHt9CisgICAgICAgICAgICAgICAgZXZhbCBlbnRyeVsiY21kIl0KKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTY4NSwxOCArNzgxLDIwIEBA
IGVuZAogZGVmIGhhbmRsZUNvbGxlY3Rpb25EaXJlY3RvcnkoY29sbGVjdGlvbikKICAgICBjb2xs
ZWN0aW9uTmFtZSA9IHNpbXBsaWZ5Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlvbikKICAgICAKLSAg
ICBwcmVwYXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkKLSAgICAKICAgICAkY29sbGVjdGlv
biA9IGNvbGxlY3Rpb24KICAgICAkY29sbGVjdGlvbk5hbWUgPSBjb2xsZWN0aW9uTmFtZQotICAg
ICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlvbgotICAgIGFsbEpTRmlsZXMoJGNvbGxl
Y3Rpb24pLmVhY2ggewotICAgICAgICB8IHBhdGggfAotICAgICAgICAKLSAgICAgICAgJGJlbmNo
bWFyayA9IHBhdGguYmFzZW5hbWUKLSAgICAgICAgCi0gICAgICAgICRydW5Db21tYW5kT3B0aW9u
cyA9IHt9Ci0gICAgICAgIGRlZmF1bHRSdW4gdW5sZXNzIHBhcnNlUnVuQ29tbWFuZHMKKyAgICBw
cmVwYXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkKKyAgIAorICAgIERpci5jaGRpcigkb3V0
cHV0RGlyKSB7CisgICAgICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlvbgorICAg
ICAgICBhbGxKU0ZpbGVzKCRjb2xsZWN0aW9uKS5lYWNoIHsKKyAgICAgICAgICAgIHwgcGF0aCB8
CisgICAgICAgICAgICAKKyAgICAgICAgICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CisgICAgICAg
ICAgICBkZWZhdWx0UnVuIHVubGVzcyBwYXJzZVJ1bkNvbW1hbmRzCisgICAgICAgIH0KICAgICB9
CiBlbmQKIApAQCAtNzEwLDExICs4MDgsNiBAQCBkZWYgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0
aW9uKQogICAgIGVuZAogZW5kCiAKLUFSR1YuZWFjaCB7Ci0gICAgfCBjb2xsZWN0aW9uIHwKLSAg
ICBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCi19Ci0KIGRlZiBhcHBlbmRGYWlsdXJlKHBs
YW4pCiAgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFpbGVkIiwgImEiKSB7CiAgICAgICAg
IHwgb3V0cCB8CkBAIC03MjMsNiArODE2LDEyNiBAQCBkZWYgYXBwZW5kRmFpbHVyZShwbGFuKQog
ICAgICRudW1GYWlsdXJlcyArPSAxCiBlbmQKIAorZGVmIHByZXBhcmVCdW5kbGUKKyAgICByYWlz
ZSBpZiAkYnVuZGxlCisKKyAgICBjb3B5Vk1Ub0J1bmRsZQorCisgICAgQVJHVi5lYWNoIHsKKyAg
ICAgICAgfCBjb2xsZWN0aW9uIHwKKyAgICAgICAgaGFuZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9u
KQorICAgIH0KK2VuZAorCitkZWYgY2xlYW5PbGRSZXN1bHRzCisgICAgcmFpc2UgdW5sZXNzICRi
dW5kbGUKKworICAgIGVhY2hSZXN1bHRGaWxlKCRvdXRwdXREaXIpIHsKKyAgICAgICAgfCBwYXRo
IHwKKyAgICAgICAgRmlsZVV0aWxzLnJtX2YgcGF0aAorICAgIH0KK2VuZAorCitkZWYgY2xlYW5F
bXB0eVJlc3VsdEZpbGVzCisgICAgZWFjaFJlc3VsdEZpbGUoJG91dHB1dERpcikgeworICAgICAg
ICB8IHBhdGggfAorICAgICAgICBuZXh0IHVubGVzcyBwYXRoLmJhc2VuYW1lLnRvX3MgPX4gL1wu
b3V0JC8KKyAgICAgICAgbmV4dCB1bmxlc3MgRmlsZVRlc3Quc2l6ZShwYXRoKSA9PSAwCisgICAg
ICAgIEZpbGVVdGlscy5ybV9mIHBhdGgKKyAgICB9CitlbmQKKworZGVmIGVhY2hSZXN1bHRGaWxl
KHN0YXJ0aW5nRGlyLCAmYmxvY2spCisgICAgZGlyc1RvQ2xlYW4gPSBbc3RhcnRpbmdEaXJdCisg
ICAgdW50aWwgZGlyc1RvQ2xlYW4uZW1wdHk/IGRvCisgICAgICAgIG5leHREaXIgPSBkaXJzVG9D
bGVhbi5wb3AKKyAgICAgICAgRGlyLmZvcmVhY2gobmV4dERpcikgeworICAgICAgICAgICAgfCBl
bnRyeSB8CisgICAgICAgICAgICBuZXh0IGlmIGVudHJ5ID1+IC9eXC4vCisgICAgICAgICAgICBw
YXRoID0gbmV4dERpciArIGVudHJ5CisgICAgICAgICAgICBpZiBwYXRoLmRpcmVjdG9yeT8KKyAg
ICAgICAgICAgICAgICBkaXJzVG9DbGVhbi5wdXNoKHBhdGgpCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgYmxvY2suY2FsbChwYXRoKQorICAgICAgICAgICAgZW5kCisgICAgICAg
IH0KKyAgICBlbmQKK2VuZAorCitkZWYgcHJlcGFyZVBhcmFsbGVsVGVzdFJ1bm5lcgorICAgICMg
VGhlIGdvYWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5lciBhcmUgc2NhbGFiaWxpdHkgYW5k
IHNpbXBsaWNpdHkuIFRoZQorICAgICMgc2ltcGxpY2l0eSBwYXJ0IGlzIHBhcnRpY3VsYXJseSBp
bXBvcnRhbnQuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0byBoYXZlCisgICAgIyBhIGZ1bGwtdGlt
ZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3Rpbmcu
CisgICAgIworICAgICMgQXMgc3VjaCwgd2UganVzdCBwYXNzIG9mZiBhbGwgb2YgdGhlIGhhcmQg
d29yayB0byAnbWFrZScuIFRoaXMgY3JlYXRlcyBhCisgICAgIyBkdW1teSBkaXJlY3RvcnkgKCIk
b3V0cHV0RGlyLy5wYXJhbGxlbCIpIGluIHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15CisgICAgIyBN
YWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhbiAnYWxsJyBydWxlIHRoYXQgZGVwZW5kcyBvbiBh
bGwgb2YgdGhlIHRlc3RzLgorICAgICMgVGhhdCBpcywgZm9yIGVhY2ggdGVzdCB3ZSBrbm93IHdl
IHdpbGwgcnVuLCB0aGVyZSBpcyBhIHJ1bGUgaW4gdGhlCisgICAgIyBNYWtlZmlsZSBhbmQgJ2Fs
bCcgZGVwZW5kcyBvbiBpdC4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCisg
ICAgIyBNYWtlZmlsZSByZXN1bHRzIGluICdtYWtlJyBkb2luZyBhbGwgb2YgdGhlIGhhcmQgd29y
azoKKyAgICAjCisgICAgIyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVt
cyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgorICAgICMgICAnbWFrZScuIElmIHlvdXIg
c3lzdGVtIGRvZXNuJ3QgdGhlbiBqdXN0IGluc3RhbGwgYSByZWFsICdtYWtlJy4KKyAgICAjCisg
ICAgIyAtIEludGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxp
bmcgaW4gJ21ha2UnIGlzCisgICAgIyAgIGV4YWN0bHkgcmlnaHQuIFlvdSBkb24ndCBoYXZlIHRv
IHdvcnJ5IGFib3V0IHpvbWJpZSBwcm9jZXNzZXMuCisgICAgIworICAgICMgV2UgdGhlbiBkbyBz
b21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhp
cworICAgICMgdG90YWxseSBzb3VuZC4gSWYgYSB0ZXN0IGZhaWxzLCB3ZSBkb24ndCB3YW50IHRo
ZSB3aG9sZSAnbWFrZScgam9iIHRvCisgICAgIyBzdG9wLiBXZSBhbHNvIGRvbid0IGhhdmUgYW55
IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBwYXRoIG5hbWVzLgorICAgICMgV2Ug
ZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBi
b3RoIHByb2JsZW1zCisgICAgIyBieSBoYXZpbmcgdGhlIGFjdHVhbCB3b3JrIGZvciBlYWNoIG9m
IHRoZSB0ZXN0IHJ1bGVzIGJlIGRvbmUgaW4gYSBzaGVsbAorICAgICMgc2NyaXB0IG9uIHRoZSBz
aWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRlc3QuIFRoZSBzY3JpcHQgcmVzcG9u
ZHMKKyAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xl
IGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAgICAjIGZhaWx1cmUgZmlsZSBmb3IgdGhhdCB0ZXN0LCBi
dXQgdGhlbiBzdGlsbCByZXR1cm5zIDAuIFRoaXMgbWFrZXMgJ21ha2UnCisgICAgIyBjb250aW51
ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxsIHRoZSB0ZXN0cyBhbnl3YXkuCisg
ICAgIworICAgICMgSW4gdGhlIGVuZCwgdGhpcyBzY3JpcHQgY29sbGVjdHMgYWxsIG9mIHRoZSBm
YWlsdXJlcyBieSBzZWFyY2hpbmcgZm9yCisgICAgIyBmaWxlcyBpbiB0aGUgLnBhcmFsbGVsIGRp
cmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNoZXMgL150ZXN0X2ZhaWxfLywgd2hlcmUKKyAgICAjIHRo
ZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0aGUgdGVzdCBpbmRleC4gVGhvc2UgYXJlIHRo
ZSBmaWxlcyB0aGF0CisgICAgIyB3b3VsZCBiZSBjcmVhdGVkIGJ5IHRoZSB0ZXN0IHNjcmlwdHMg
aWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKKyAgICAjIGJhc2ljYWxseSB1c2luZyB0aGUg
ZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ugb2YgdGVzdCBmYWlsdXJlcy4KKyAg
ICAjIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNhbWUgdGltZSwgc2luY2UgdGhleSdy
ZSB0b3VjaGluZyBkaWZmZXJlbnQKKyAgICAjIGZpbGVzIHdlIHdvbid0IG1pc3MgYW55IGZhaWx1
cmVzLgorICAgIAorICAgIHJ1bkluZGljZXMgPSBbXQorICAgICRydW5saXN0LmVhY2hfd2l0aF9p
bmRleCB7CisgICAgICAgIHwgcGxhbiwgaW5kZXggfAorICAgICAgICBydW5JbmRpY2VzIDw8IGlu
ZGV4CisgICAgICAgIHBsYW4uaW5kZXggPSBpbmRleAorICAgIH0KKyAgICAKKyAgICBEaXIubWtk
aXIoJHBhcmFsbGVsRGlyKSB1bmxlc3MgJHBhcmFsbGVsRGlyLmRpcmVjdG9yeT8KKyAgICB0b0Rl
bGV0ZSA9IFtdCisgICAgRGlyLmZvcmVhY2goJHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmls
ZW5hbWUgfAorICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRlc3RfLworICAgICAgICAgICAgdG9E
ZWxldGUgPDwgZmlsZW5hbWUKKyAgICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHRvRGVsZXRl
LmVhY2ggeworICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgRmlsZS51bmxpbmsoJHBhcmFs
bGVsRGlyICsgZmlsZW5hbWUpCisgICAgfQorCisgICAgJHJ1bmxpc3QuZWFjaCB7CisgICAgICAg
IHwgcGxhbiB8CisgICAgICAgIHBsYW4ud3JpdGVSdW5TY3JpcHQoJHBhcmFsbGVsRGlyICsgInRl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oJHBh
cmFsbGVsRGlyICsgIk1ha2VmaWxlIiwgInciKSB7CisgICAgICAgIHwgb3V0cCB8CisgICAgICAg
IG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9
LmpvaW4oJyAnKSkKKyAgICAgICAgcnVuSW5kaWNlcy5lYWNoIHsKKyAgICAgICAgICAgIHwgaW5k
ZXggfAorICAgICAgICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQorICAgICAgICAgICAgb3V0
cC5wdXRzICJ0ZXN0X2RvbmVfI3tpbmRleH06IgorICAgICAgICAgICAgb3V0cC5wdXRzICJcdHNo
IHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iCisgICAgICAgIH0KKyAgICB9CitlbmQKKwogaWYg
JGVuYWJsZUZUTCBhbmQgRU5WWyJKU0NfdGltZW91dCJdCiAgICAgIyBDdXJyZW50bHksIHVzaW5n
IHRoZSBGVEwgaXMgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHBhcnRpY3VsYXJseSBpbiByZWFs
CiAgICAgIyAoaS5lLiBub24tbG9vcHkpIGJlbmNobWFya3MuIEFjY291bnQgZm9yIHRoaXMgaW4g
dGhlIHRpbWVvdXQuCkBAIC03MzQsMTU0ICs5NDcsMTE3IEBAIGlmIEVOVlsiSlNDX3RpbWVvdXQi
XQogICAgICMgSW5jcmVhc2UgdGhlIHRpbWVvdXQgcHJvcG9ydGlvbmFsbHkgdG8gdGhlIG51bWJl
ciBvZiBwcm9jZXNzb3JzLgogICAgIEVOVlsiSlNDX3RpbWVvdXQiXSA9IChFTlZbIkpTQ190aW1l
b3V0Il0udG9faS50b19mICogTWF0aC5zcXJ0KCRudW1Qcm9jZXNzb3JzKSkudG9faS50b19zCiBl
bmQKLQotIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRlc3QgcnVubmVyIGFyZSBzY2FsYWJp
bGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0jIHNpbXBsaWNpdHkgcGFydCBpcyBwYXJ0aWN1bGFy
bHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUgdG8gaGF2ZQotIyBhIGZ1bGwtdGlt
ZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFib3V0IHBhcmFsbGVsIHRlc3Rpbmcu
Ci0jCi0jIEFzIHN1Y2gsIHdlIGp1c3QgcGFzcyBvZmYgYWxsIG9mIHRoZSBoYXJkIHdvcmsgdG8g
J21ha2UnLiBUaGlzIGNyZWF0ZXMgYQotIyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5w
YXJhbGxlbCIpIGluIHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15Ci0jIE1ha2VmaWxlLiBUaGUgTWFr
ZWZpbGUgaGFzIGFuICdhbGwnIHJ1bGUgdGhhdCBkZXBlbmRzIG9uIGFsbCBvZiB0aGUgdGVzdHMu
Ci0jIFRoYXQgaXMsIGZvciBlYWNoIHRlc3Qgd2Uga25vdyB3ZSB3aWxsIHJ1biwgdGhlcmUgaXMg
YSBydWxlIGluIHRoZQotIyBNYWtlZmlsZSBhbmQgJ2FsbCcgZGVwZW5kcyBvbiBpdC4gUnVubmlu
ZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCi0jIE1ha2VmaWxlIHJlc3VsdHMgaW4gJ21h
a2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgotIwotIyAtIExvYWQgYmFsYW5jaW5nIGp1
c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgotIyAg
ICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVuIGp1c3QgaW5zdGFsbCBhIHJlYWwg
J21ha2UnLgotIwotIyAtIEludGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3IgZXhhbXBsZSBDdHJs
LUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlzCi0jICAgZXhhY3RseSByaWdodC4gWW91IGRvbid0IGhh
dmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4KLSMKLSMgV2UgdGhlbiBkbyBzb21l
IHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdvcmsgYW5kIHRvIG1ha2UgdGhpcwot
IyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRlc3QgZmFpbHMsIHdlIGRvbid0IHdhbnQgdGhlIHdob2xl
ICdtYWtlJyBqb2IgdG8KLSMgc3RvcC4gV2UgYWxzbyBkb24ndCBoYXZlIGFueSBmYWNpbGl0eSBm
b3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4KLSMgV2UgZG8gaGF2ZSBzdWNoIGEg
dGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCi0j
IGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2ggb2YgdGhlIHRlc3QgcnVsZXMgYmUg
ZG9uZSBpbiBhIHNoZWxsCi0jIHNjcmlwdCBvbiB0aGUgc2lkZS4gVGhlcmUgaXMgb25lIHN1Y2gg
c2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRzCi0jIHRvIGZhaWx1cmUgYnkgcHJp
bnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKLSMgZmFp
bHVyZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0aWxsIHJldHVybnMgMC4gVGhpcyBt
YWtlcyAnbWFrZScKLSMgY29udGludWUgcGFzdCB0aGF0IGZhaWx1cmUgYW5kIGNvbXBsZXRlIGFs
bCB0aGUgdGVzdHMgYW55d2F5LgotIwotIyBJbiB0aGUgZW5kLCB0aGlzIHNjcmlwdCBjb2xsZWN0
cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBmb3IKLSMgZmlsZXMgaW4gdGhlIC5w
YXJhbGxlbCBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVzIC9edGVzdF9mYWlsXy8sIHdoZXJl
Ci0jIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0aGUgdGVzdCBpbmRleC4gVGhvc2Ug
YXJlIHRoZSBmaWxlcyB0aGF0Ci0jIHdvdWxkIGJlIGNyZWF0ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0
cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQotIyBiYXNpY2FsbHkgdXNpbmcgdGhlIGZp
bGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNlIG9mIHRlc3QgZmFpbHVyZXMuCi0jIEV2
ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNhbWUgdGltZSwgc2luY2UgdGhleSdyZSB0b3Vj
aGluZyBkaWZmZXJlbnQKLSMgZmlsZXMgd2Ugd29uJ3QgbWlzcyBhbnkgZmFpbHVyZXMuCi0KLXJ1
bkluZGljZXMgPSBbXQotJHJ1bmxpc3QuZWFjaF93aXRoX2luZGV4IHsKLSAgICB8IHBsYW4sIGlu
ZGV4IHwKLSAgICBydW5JbmRpY2VzIDw8IGluZGV4Ci0gICAgcGxhbi5pbmRleCA9IGluZGV4Ci19
Ci0KLXBhcmFsbGVsRGlyID0gJG91dHB1dERpciArICIucGFyYWxsZWwiCi1EaXIubWtkaXIocGFy
YWxsZWxEaXIpIHVubGVzcyBwYXJhbGxlbERpci5kaXJlY3Rvcnk/Ci10b0RlbGV0ZSA9IFtdCi1E
aXIuZm9yZWFjaChwYXJhbGxlbERpcikgewotICAgIHwgZmlsZW5hbWUgfAotICAgIGlmIGZpbGVu
YW1lID1+IC9edGVzdF8vCi0gICAgICAgIHRvRGVsZXRlIDw8IGZpbGVuYW1lCi0gICAgZW5kCi19
Ci0KLXRvRGVsZXRlLmVhY2ggewotICAgIHwgZmlsZW5hbWUgfAotICAgIEZpbGUudW5saW5rKHBh
cmFsbGVsRGlyICsgZmlsZW5hbWUpCi19Ci0KKyAgICAKIHB1dHMKIAotJHJ1bmxpc3QuZWFjaCB7
Ci0gICAgfCBwbGFuIHwKLSAgICBwbGFuLndyaXRlUnVuU2NyaXB0KHBhcmFsbGVsRGlyICsgInRl
c3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQotfQotCi1GaWxlLm9wZW4ocGFyYWxsZWxEaXIgKyAi
TWFrZWZpbGUiLCAidyIpIHsKLSAgICB8IG91dHAgfAotICAgIG91dHAucHV0cygiYWxsOiAiICsg
cnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9LmpvaW4oJyAnKSkKLSAgICBydW5J
bmRpY2VzLmVhY2ggewotICAgICAgICB8IGluZGV4IHwKLSAgICAgICAgcGxhbiA9ICRydW5saXN0
W2luZGV4XQotICAgICAgICBvdXRwLnB1dHMgInRlc3RfZG9uZV8je2luZGV4fToiCi0gICAgICAg
IG91dHAucHV0cyAiXHRzaCB0ZXN0X3NjcmlwdF8je3BsYW4uaW5kZXh9IgorZGVmIGNsZWFuUGFy
YWxsZWxEaXJlY3RvcnkKKyAgICByYWlzZSB1bmxlc3MgJGJ1bmRsZQorICAgIERpci5mb3JlYWNo
KCRwYXJhbGxlbERpcikgeworICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAgICAgbmV4dCB1bmxl
c3MgZmlsZW5hbWUgPX4gL150ZXN0X2ZhaWwvCisgICAgICAgIEZpbGVVdGlscy5ybV9mICRwYXJh
bGxlbERpciArIGZpbGVuYW1lCiAgICAgfQotfQorZW5kCiAKLURpci5jaGRpcihwYXJhbGxlbERp
cikgewotICAgIHVubGVzcyAkcHJvZ3Jlc3NNZXRlcgotICAgICAgICBteXN5cygibWFrZSIsICIt
aiIsICRudW1Qcm9jZXNzb3JzLnRvX3MsICItcyIsICItZiIsICJNYWtlZmlsZSIpCi0gICAgZWxz
ZQotICAgICAgICBjbWQgPSAibWFrZSAtaiAjeyRudW1Qcm9jZXNzb3JzfSAtcyAtZiBNYWtlZmls
ZSIKLSAgICAgICAgcnVubmluZyA9IHt9Ci0gICAgICAgIGRpZFJ1biA9IHt9Ci0gICAgICAgIGRp
ZEZhaWwgPSB7fQotICAgICAgICBibGFua0xpbmUgPSB0cnVlCi0gICAgICAgIHByZXZTdHJpbmdM
ZW5ndGggPSAwCi0gICAgICAgIElPLnBvcGVuKGNtZCwgInIiKSB7Ci0gICAgICAgICAgICB8IGlu
cCB8Ci0gICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKLSAgICAgICAgICAgICAgICB8IGxpbmUg
fAotICAgICAgICAgICAgICAgIGxpbmUuY2hvbXAhCi0gICAgICAgICAgICAgICAgaWYgbGluZSA9
fiAvXlJ1bm5pbmcgLwotICAgICAgICAgICAgICAgICAgICBydW5uaW5nWyR+LnBvc3RfbWF0Y2hd
ID0gdHJ1ZQotICAgICAgICAgICAgICAgIGVsc2lmIGxpbmUgPX4gL15QQVNTOiAvCi0gICAgICAg
ICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKLSAgICAgICAgICAgICAg
ICBlbHNpZiBsaW5lID1+IC9eRkFJTDogLwotICAgICAgICAgICAgICAgICAgICBkaWRSdW5bJH4u
cG9zdF9tYXRjaF0gPSB0cnVlCi0gICAgICAgICAgICAgICAgICAgIGRpZEZhaWxbJH4ucG9zdF9t
YXRjaF0gPSB0cnVlCi0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB1
bmxlc3MgYmxhbmtMaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiXHIiICsgIiAi
ICogcHJldlN0cmluZ0xlbmd0aCArICJcciIpCi0gICAgICAgICAgICAgICAgICAgIGVuZAotICAg
ICAgICAgICAgICAgICAgICBwdXRzIGxpbmUKLSAgICAgICAgICAgICAgICAgICAgYmxhbmtMaW5l
ID0gdHJ1ZQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgICAgIGRlZiBscGFkKHN0ciwgY2hhcnMpCi0gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0
ci50b19zCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0ci5sZW5ndGggPiBjaGFycwotICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyCitkZWYgcnVuUGFyYWxsZWxUZXN0UnVubmVyCisgICAgRGly
LmNoZGlyKCRwYXJhbGxlbERpcikgeworICAgICAgICAjIC0xIGZvciB0aGUgTWFrZWZpbGUsIGFu
ZCAtMiBmb3IgJy4uJyBhbmQgJy4nCisgICAgICAgIG51bWJlck9mVGVzdHMgPSBEaXIuZW50cmll
cygiLiIpLmNvdW50IC0gMworICAgICAgICB1bmxlc3MgJHByb2dyZXNzTWV0ZXIKKyAgICAgICAg
ICAgIG15c3lzKCJtYWtlIiwgIi1qIiwgJG51bVByb2Nlc3NvcnMudG9fcywgIi1zIiwgIi1mIiwg
Ik1ha2VmaWxlIikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY21kID0gIm1ha2UgLWogI3sk
bnVtUHJvY2Vzc29yc30gLXMgLWYgTWFrZWZpbGUiCisgICAgICAgICAgICBydW5uaW5nID0ge30K
KyAgICAgICAgICAgIGRpZFJ1biA9IHt9CisgICAgICAgICAgICBkaWRGYWlsID0ge30KKyAgICAg
ICAgICAgIGJsYW5rTGluZSA9IHRydWUKKyAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSAw
CisgICAgICAgICAgICBJTy5wb3BlbihjbWQsICJyIikgeworICAgICAgICAgICAgICAgIHwgaW5w
IHwKKyAgICAgICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKKyAgICAgICAgICAgICAgICAgICAg
fCBsaW5lIHwKKyAgICAgICAgICAgICAgICAgICAgbGluZS5jaG9tcCEKKyAgICAgICAgICAgICAg
ICAgICAgaWYgbGluZSA9fiAvXlJ1bm5pbmcgLworICAgICAgICAgICAgICAgICAgICAgICAgcnVu
bmluZ1skfi5wb3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxzaWYgbGlu
ZSA9fiAvXlBBU1M6IC8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21h
dGNoXSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxzaWYgbGluZSA9fiAvXkZBSUw6IC8K
KyAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWxbJH4ucG9zdF9tYXRjaF0gPSB0cnVlCiAgICAg
ICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICIlI3tjaGFyc31z
IiUoc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5sZXNzIGJsYW5rTGluZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcciIgKyAiICIgKiBwcmV2U3RyaW5nTGVuZ3Ro
ICsgIlxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAg
ICAgICAgcHV0cyBsaW5lCisgICAgICAgICAgICAgICAgICAgICAgICBibGFua0xpbmUgPSB0cnVl
CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgZGVmIGxwYWQoc3RyLCBjaGFycykKKyAgICAgICAgICAgICAgICAgICAgICAg
IHN0ciA9IHN0ci50b19zCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHIubGVuZ3RoID4g
Y2hhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJSN7Y2hhcnN9cyIlKHN0
cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBlbmQK
KyAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nICA9ICIiCisgICAgICAgICAgICAgICAg
ICAgIHN0cmluZyArPSAiXHIje2xwYWQoZGlkUnVuLnNpemUsIG51bWJlck9mVGVzdHMudG9fcy5z
aXplKX0vI3tudW1iZXJPZlRlc3RzfSIKKyAgICAgICAgICAgICAgICAgICAgdW5sZXNzIGRpZEZh
aWwuZW1wdHk/CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAoZmFpbGVkICN7
ZGlkRmFpbC5zaXplfSkiCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
ICAgICBzdHJpbmcgKz0gIiAiCisgICAgICAgICAgICAgICAgICAgIChydW5uaW5nLnNpemUgLSBk
aWRSdW4uc2l6ZSkudGltZXMgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICs9ICIu
IgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIHN0cmluZy5s
ZW5ndGggPCBwcmV2U3RyaW5nTGVuZ3RoCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBz
dHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCIgIiAqIChwcmV2U3RyaW5nTGVu
Z3RoIC0gc3RyaW5nLmxlbmd0aCkpCiAgICAgICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAg
ICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgc3RyaW5nICA9ICIiCi0gICAgICAgICAgICAg
ICAgc3RyaW5nICs9ICJcciN7bHBhZChkaWRSdW4uc2l6ZSwgJHJ1bmxpc3Quc2l6ZS50b19zLnNp
emUpfS8jeyRydW5saXN0LnNpemV9IgotICAgICAgICAgICAgICAgIHVubGVzcyBkaWRGYWlsLmVt
cHR5PwotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAoZmFpbGVkICN7ZGlkRmFpbC5z
aXplfSkiCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICIg
IgotICAgICAgICAgICAgICAgIChydW5uaW5nLnNpemUgLSBkaWRSdW4uc2l6ZSkudGltZXMgewot
ICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIi4iCi0gICAgICAgICAgICAgICAgfQotICAg
ICAgICAgICAgICAgIGlmIHN0cmluZy5sZW5ndGggPCBwcmV2U3RyaW5nTGVuZ3RoCiAgICAgICAg
ICAgICAgICAgICAgIHByaW50IHN0cmluZwotICAgICAgICAgICAgICAgICAgICBwcmludCgiICIg
KiAocHJldlN0cmluZ0xlbmd0aCAtIHN0cmluZy5sZW5ndGgpKQotICAgICAgICAgICAgICAgIGVu
ZAotICAgICAgICAgICAgICAgIHByaW50IHN0cmluZwotICAgICAgICAgICAgICAgIHByZXZTdHJp
bmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoCi0gICAgICAgICAgICAgICAgYmxhbmtMaW5lID0gZmFs
c2UKLSAgICAgICAgICAgICAgICAkc3Rkb3V0LmZsdXNoCisgICAgICAgICAgICAgICAgICAgIHBy
ZXZTdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoCisgICAgICAgICAgICAgICAgICAgIGJsYW5r
TGluZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgICRzdGRvdXQuZmx1c2gKKyAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcHV0cwotICAgICAg
ICByYWlzZSAiRmFpbGVkIHRvIHJ1biAje2NtZH06ICN7JD8uaW5zcGVjdH0iIHVubGVzcyAkPy5z
dWNjZXNzPwotICAgIGVuZAotfQorICAgICAgICAgICAgcHV0cworICAgICAgICAgICAgcmFpc2Ug
IkZhaWxlZCB0byBydW4gI3tjbWR9OiAjeyQ/Lmluc3BlY3R9IiB1bmxlc3MgJD8uc3VjY2Vzcz8K
KyAgICAgICAgZW5kCisgICAgfQorZW5kCiAKLSMgRGVsZXRlIGVtcHR5IC5vdXQgZmlsZXMgdG8g
bWFrZSBsaWZlIGxlc3MgY29uZnVzaW5nLgotJHJ1bmxpc3QuZWFjaCB7Ci0gICAgfCBwbGFuIHwK
LSAgICBvdXRwdXRGaWxlbmFtZSA9ICRvdXRwdXREaXIgKyAocGxhbi5uYW1lICsgIi5vdXQiKQot
ICAgIEZpbGUudW5saW5rIG91dHB1dEZpbGVuYW1lIGlmIEZpbGVUZXN0LnNpemUob3V0cHV0Rmls
ZW5hbWUpID09IDAKLX0KK2RlZiBkZXRlY3RGYWlsdXJlcworICAgIHJhaXNlIGlmICRidW5kbGUK
IAotRGlyLmZvcmVhY2gocGFyYWxsZWxEaXIpIHsKLSAgICB8IGZpbGVuYW1lIHwKLSAgICBuZXh0
IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVzdF9mYWlsXy8KLSAgICBhcHBlbmRGYWlsdXJlKCRydW5s
aXN0WyR+LnBvc3RfbWF0Y2gudG9faV0pCi19CisgICAgRGlyLmZvcmVhY2goJHBhcmFsbGVsRGly
KSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9
fiAvdGVzdF9mYWlsXy8KKyAgICAgICAgYXBwZW5kRmFpbHVyZSgkcnVubGlzdFskfi5wb3N0X21h
dGNoLnRvX2ldKQorICAgIH0KK2VuZAorCitkZWYgY29tcHJlc3NCdW5kbGUKKyAgICBjbWQgPSAi
Y2QgI3skb3V0cHV0RGlyfS8uLiAmJiB0YXIgLWN6ZiBwYXlsb2FkLnRhci5neiAjeyRvdXRwdXRE
aXIuYmFzZW5hbWV9IgorICAgICRzdGRlcnIucHV0cyAiPj4gI3tjbWR9IiBpZiAkdmVyYm9zaXR5
ID49IDIKKyAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkKK2VuZAorCitGaWxlVXRpbHMucm1f
cmYgJG91dHB1dERpciBpZiAkb3V0cHV0RGlyLmRpcmVjdG9yeT8gYW5kIG5vdCAkYnVuZGxlCitE
aXIubWtkaXIoJG91dHB1dERpcikgdW5sZXNzICRvdXRwdXREaXIuZGlyZWN0b3J5PworCitiZWdp
bgorICAgIEZpbGUuZGVsZXRlKCRvdXRwdXREaXIgKyAiZmFpbGVkIikKK3Jlc2N1ZQorZW5kCisK
KyRvdXRwdXREaXIgPSAkb3V0cHV0RGlyLnJlYWxwYXRoCiskcGFyYWxsZWxEaXIgPSAkb3V0cHV0
RGlyICsgIi5wYXJhbGxlbCIKKworcHJlcGFyZUJ1bmRsZSB1bmxlc3MgJGJ1bmRsZQorcHJlcGFy
ZVBhcmFsbGVsVGVzdFJ1bm5lciB1bmxlc3MgJGJ1bmRsZQorY2xlYW5QYXJhbGxlbERpcmVjdG9y
eSBpZiAkYnVuZGxlCitjbGVhbk9sZFJlc3VsdHMgaWYgJGJ1bmRsZQorcnVuUGFyYWxsZWxUZXN0
UnVubmVyCitjbGVhbkVtcHR5UmVzdWx0RmlsZXMKK2RldGVjdEZhaWx1cmVzIHVubGVzcyAkYnVu
ZGxlCitjb21wcmVzc0J1bmRsZSBpZiAkdGFyYmFsbApJbmRleDogVG9vbHMvU2NyaXB0cy9qc2Mt
c3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmUKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1
cmUJKHJldmlzaW9uIDE1OTY5NikKKysrIFRvb2xzL1NjcmlwdHMvanNjLXN0cmVzcy10ZXN0LWhl
bHBlcnMvY2hlY2stbW96aWxsYS1mYWlsdXJlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0ICswLDAg
QEAKLSMhL3Vzci9iaW4vZW52IHJ1YnkKLQotIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0jIGFy
ZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSMgMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSMg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0jIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSMg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotIyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0jIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLUZpbGUub3BlbihBUkdWWzBdLCAiciIpIHsKLSAgICB8IGlucCB8Ci0gICAgaW5wLmVhY2hf
bGluZSB7Ci0gICAgICAgIHwgbGluZSB8Ci0gICAgICAgIGV4aXQgMCBpZiBsaW5lID1+IC9mYWls
ZWQhL2kKLSAgICB9Ci19Ci0KLWV4aXQgMQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218202</attachid>
            <date>2013-12-02 11:43:32 -0800</date>
            <delta_ts>2013-12-02 12:52:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-124549-20131202114331.patch</filename>
            <type>text/plain</type>
            <size>37724</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1OTk0MikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIwIEBACisyMDEzLTEyLTAyICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBs
ZS5jb20+CisKKyAgICAgICAgcnVuLWpzYy1zdHJlc3MtdGVzdHMgc2hvdWxkIGJlIGFibGUgdG8g
cGFja2FnZSBpdHMgdGVzdHMgYW5kIG1vdmUgdGhlbSBwbGFjZXMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNDU0OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3Qt
aGVscGVycy9jaGVjay1tb3ppbGxhLWZhaWx1cmU6IFJlbW92ZWQuIFdhcyBqdXN0IGEgcnVieSBy
ZWltcGxlbWVudGF0aW9uCisgICAgICAgIG9mIGdyZXAgLWkgLXEKKyAgICAgICAgKiBTY3JpcHRz
L3J1bi1qYXZhc2NyaXB0Y29yZS10ZXN0czogUGFzcyB0aHJvdWdoIHRoZSAtLXRhcmJhbGwgZmxh
Zy4KKyAgICAgICAgKiBTY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzOiBDaGFuZ2VkIHRvIGNy
ZWF0ZSBhIGJ1bmRsZSBvZiB0ZXN0cyBpbnNpZGUgdGhlIHJlc3VsdHMgZGlyZWN0b3J5LgorICAg
ICAgICBXZSBub3cgYWxzbyBjb3B5IHdoYXRldmVyIFZNIHdhcyBzcGVjaWZpZWQsIGFsb25nIHdp
dGggaXRzIGFzc29jaWF0ZWQgZnJhbWV3b3JrLCBpbnRvIHRoaXMgZGlyZWN0b3J5LgorICAgICAg
ICBBbGwgb2YgdGhlIGdlbmVyYXRlZCBzY3JpcHRzIG5vdyBhcmUgY29tcGxldGVseSByZWxhdGl2
ZSB3aXRoaW4gdGhlIHJlc3VsdHMgZGlyZWN0b3J5LiBUaGlzIGFsbG93cworICAgICAgICBydW4t
anNjLXN0cmVzcy10ZXN0cyB0byBleGVjdXRlIGEgYnVuZGxlIGZyb20gYW55d2hlcmUuIEFsc28g
YWRkZWQgYSAtLXRhcmJhbGwgZmxhZyB3aGljaCBjcmVhdGVzIGEKKyAgICAgICAgdGFyYmFsbCBv
ZiB0aGUgZ2VuZXJhdGVkIHJlc3VsdHMgZGlyZWN0b3J5LiBBbHNvIHJlZmFjdG9yZWQgc2V2ZXJh
bCBwb3J0aW9ucyBvZiB0aGUgc2NyaXB0IGludG8KKyAgICAgICAgc2VwYXJhdGUgZnVuY3Rpb25z
IHRvIG1ha2UgaXQgZWFzaWVyIHRvIHJ1biB0aGVtIGNvbmRpdGlvbmFsbHkgZGVwZW5kaW5nIG9u
IHdoaWNoIG1vZGUgd2UncmUgcnVubmluZyBpbi4gCisKIDIwMTMtMTItMDIgIEFuZHJ6ZWogQmFk
b3dza2kgIDxhLmJhZG93c2tpQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtBVEtdIFN1cHBvcnQg
YWN0aXZlIHN0YXRlIGZvciBsaXN0Ym94IGVsZW1lbnRzLgpJbmRleDogVG9vbHMvU2NyaXB0cy9y
dW4tamF2YXNjcmlwdGNvcmUtdGVzdHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4t
amF2YXNjcmlwdGNvcmUtdGVzdHMJKHJldmlzaW9uIDE1OTkzMykKKysrIFRvb2xzL1NjcmlwdHMv
cnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw4IEBA
IG15ICRydW5KU0NTdHJlc3MgPSAhaXNBcHBsZVdpbldlYktpdCgpICYKIAogbXkgJGVuYWJsZUZU
TCA9IDA7CiAKK215ICRjcmVhdGVUYXJiYWxsID0gMDsKKwogbXkgJHByb2dyYW1OYW1lID0gYmFz
ZW5hbWUoJDApOwogbXkgJGJ1aWxkSlNDRGVmYXVsdCA9ICRidWlsZEpTQyA/ICJ3aWxsIGNoZWNr
IiA6ICJ3aWxsIG5vdCBjaGVjayI7CiBteSAkdGVzdGFwaURlZmF1bHQgPSAkcnVuVGVzdEFQSSA/
ICJ3aWxsIHJ1biIgOiAid2lsbCBub3QgcnVuIjsKQEAgLTk0LDYgKzk2LDcgQEAgVXNhZ2U6ICRw
cm9ncmFtTmFtZSBbb3B0aW9uc10gW29wdGlvbnMgdAogICAtLVtuby1dYnVpbGQgICAgICAgICAg
ICAgICAgICBDaGVjayAob3IgZG9uJ3QgY2hlY2spIHRvIHNlZSBpZiB0aGUganNjIGJ1aWxkIGlz
IHVwLXRvLWRhdGUgKGRlZmF1bHQ6ICRidWlsZEpTQ0RlZmF1bHQpCiAgIC0tW25vLV10ZXN0YXBp
ICAgICAgICAgICAgICAgIFJ1biAob3IgZG9uJ3QgcnVuKSB0ZXN0YXBpIChkZWZhdWx0OiAkdGVz
dGFwaURlZmF1bHQpCiAgIC0tW25vLV1qc2Mtc3RyZXNzICAgICAgICAgICAgIFJ1biAob3IgZG9u
J3QgcnVuKSB0aGUgSlNDIHN0cmVzcyB0ZXN0cyAoZGVmYXVsdDogJGpzY1N0cmVzc0RlZmF1bHQp
CisgIC0tdGFyYmFsbCAgICAgICAgICAgICAgICAgICAgIENyZWF0ZSBhIHRhcmJhbGwgb2YgdGhl
IGJ1bmRsZSBwcm9kdWNlZCBieSBydW5uaW5nIHRoZSBKU0Mgc3RyZXNzIHRlc3RzLgogRU9GCiAK
IEdldE9wdGlvbnMoCkBAIC0xMDQsNiArMTA3LDcgQEAgR2V0T3B0aW9ucygKICAgICAnZnRsLWpp
dCEnID0+IFwkZW5hYmxlRlRMLAogICAgICd0ZXN0YXBpIScgPT4gXCRydW5UZXN0QVBJLAogICAg
ICdqc2Mtc3RyZXNzIScgPT4gXCRydW5KU0NTdHJlc3MsCisgICAgJ3RhcmJhbGwhJyA9PiBcJGNy
ZWF0ZVRhcmJhbGwsCiAgICAgJ2hlbHAnID0+IFwkc2hvd0hlbHAKICk7CiAKQEAgLTIzOSw2ICsy
NDMsOSBAQCBpZiAoJHJ1bkpTQ1N0cmVzcykgewogICAgIGlmICgkZW5hYmxlRlRMKSB7CiAgICAg
ICAgIHB1c2goQGpzY1N0cmVzc0RyaXZlckNtZCwgIi0tZnRsLWppdCIpOwogICAgIH0KKyAgICBp
ZiAoJGNyZWF0ZVRhcmJhbGwpIHsKKyAgICAgICAgcHVzaChAanNjU3RyZXNzRHJpdmVyQ21kLCAi
LS10YXJiYWxsIik7CisgICAgfQogICAgIGlmIChkZWZpbmVkKCRleHRyYVRlc3RzKSkgewogICAg
ICAgICBwdXNoKEBqc2NTdHJlc3NEcml2ZXJDbWQsICRleHRyYVRlc3RzKTsKICAgICB9CkluZGV4
OiBUb29scy9TY3JpcHRzL3J1bi1qc2Mtc3RyZXNzLXRlc3RzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHJldmlzaW9uIDE1OTkzMykKKysrIFRvb2xz
L1NjcmlwdHMvcnVuLWpzYy1zdHJlc3MtdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTIzLDYgKzIz
LDcgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCiAjIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK3JlcXVpcmUgJ2ZpbGV1dGls
cycKIHJlcXVpcmUgJ2dldG9wdGxvbmcnCiByZXF1aXJlICdwYXRobmFtZScKIHJlcXVpcmUgJ3lh
bWwnCkBAIC0zNiw3ICszNyw3IEBAIHJhaXNlIHVubGVzcyBTQ1JJUFRTX1BBVEguZGlybmFtZS5i
YXNlbmEKIAogSEVMUEVSU19QQVRIID0gU0NSSVBUU19QQVRIICsgImpzYy1zdHJlc3MtdGVzdC1o
ZWxwZXJzIgogCi1JTVBPUlRBTlRfRU5WUyA9IFsiSlNDX3RpbWVvdXQiLCAiRFlMRF9GUkFNRVdP
UktfUEFUSCJdCitJTVBPUlRBTlRfRU5WUyA9IFsiSlNDX3RpbWVvdXQiXQogCiBiZWdpbgogICAg
IHJlcXVpcmUgJ3NoZWxsd29yZHMnCkBAIC04MSwxMCArODIsMTAgQEAgZW5kCiAKICRqc2NQYXRo
ID0gbmlsCiAkZW5hYmxlRlRMID0gZmFsc2UKLSRjb2xsZWN0aW9ucyA9IFtdCiAkb3V0cHV0RGly
ID0gUGF0aG5hbWUubmV3KCJyZXN1bHRzIikKICR2ZXJib3NpdHkgPSAwCi0kZXJyb3JPbkZhaWx1
cmUgPSBmYWxzZQorJGJ1bmRsZSA9IG5pbAorJHRhcmJhbGwgPSBmYWxzZQogCiBkZWYgdXNhZ2UK
ICAgICBwdXRzICJydW4tanNjLXN0cmVzcy10ZXN0cyAtaiA8c2hlbGwgcGF0aD4gPGNvbGxlY3Rp
b25zIHBhdGg+IFs8Y29sbGVjdGlvbnMgcGF0aD4gLi4uXSIKQEAgLTkyLDggKzkzLDkgQEAgZGVm
IHVzYWdlCiAgICAgcHV0cyAiLS1qc2MgICAgICAgICAgICAgICAgKC1qKSAgIFBhdGggdG8gSmF2
YVNjcmlwdENvcmUuIFRoaXMgb3B0aW9uIGlzIHJlcXVpcmVkLiIKICAgICBwdXRzICItLWZ0bC1q
aXQgICAgICAgICAgICAgICAgICAgSW5kaWNhdGUgdGhhdCB3ZSBoYXZlIHRoZSBGVEwgSklULiIK
ICAgICBwdXRzICItLW91dHB1dC1kaXIgICAgICAgICAoLW8pICAgUGF0aCB3aGVyZSB0byBwdXQg
cmVzdWx0cy4gRGVmYXVsdCBpcyAjeyRvdXRwdXREaXJ9LiIKLSAgICBwdXRzICItLVtuby1dZXJy
b3Itb24tZmFpbHVyZSAgICAgRXhpdCB3aXRoIGV4aXQgY29kZSAxIGlmIGFueSB0ZXN0cyBmYWls
LiBEZWZhdWx0IGlzICN7JGVycm9yT25GYWlsdXJlfS4iCiAgICAgcHV0cyAiLS12ZXJib3NlICAg
ICAgICAgICAgKC12KSAgIFByaW50IG1vcmUgdGhpbmdzIHdoaWxlIHJ1bm5pbmcuIgorICAgIHB1
dHMgIi0tcnVuLWJ1bmRsZSAgICAgICAgICAgICAgICBSdW5zIGEgYnVuZGxlIHByZXZpb3VzbHkg
Y3JlYXRlZCBieSBydW4tanNjLXN0cmVzcy10ZXN0cy4iCisgICAgcHV0cyAiLS10YXJiYWxsICAg
ICAgICAgICAgICAgICAgIENyZWF0ZXMgYSB0YXJiYWxsIG9mIHRoZSBmaW5hbCBidW5kbGUuIgog
ICAgIHB1dHMgIi0taGVscCAgICAgICAgICAgICAgICgtaCkgICBQcmludCB0aGlzIG1lc3NhZ2Uu
IgogICAgIGV4aXQgMQogZW5kCkBAIC0xMDIsOSArMTA0LDkgQEAgR2V0b3B0TG9uZy5uZXcoWyct
LWhlbHAnLCAnLWgnLCBHZXRvcHRMbwogICAgICAgICAgICAgICAgWyctLWpzYycsICctaicsIEdl
dG9wdExvbmc6OlJFUVVJUkVEX0FSR1VNRU5UXSwKICAgICAgICAgICAgICAgIFsnLS1mdGwtaml0
JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAogICAgICAgICAgICAgICAgWyctLW91dHB1dC1k
aXInLCAnLW8nLCBHZXRvcHRMb25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCi0gICAgICAgICAgICAg
ICBbJy0tdmVyYm9zZScsICctdicsIEdldG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKLSAgICAgICAg
ICAgICAgIFsnLS1lcnJvci1vbi1mYWlsdXJlJywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdLAot
ICAgICAgICAgICAgICAgWyctLW5vLWVycm9yLW9uLWZhaWx1cmUnLCBHZXRvcHRMb25nOjpOT19B
UkdVTUVOVF0pLmVhY2ggeworICAgICAgICAgICAgICAgWyctLXJ1bi1idW5kbGUnLCBHZXRvcHRM
b25nOjpSRVFVSVJFRF9BUkdVTUVOVF0sCisgICAgICAgICAgICAgICBbJy0tdGFyYmFsbCcsIEdl
dG9wdExvbmc6Ok5PX0FSR1VNRU5UXSwKKyAgICAgICAgICAgICAgIFsnLS12ZXJib3NlJywgJy12
JywgR2V0b3B0TG9uZzo6Tk9fQVJHVU1FTlRdKS5lYWNoIHsKICAgICB8IG9wdCwgYXJnIHwKICAg
ICBjYXNlIG9wdAogICAgIHdoZW4gJy0taGVscCcKQEAgLTExNSwxNyArMTE3LDIyIEBAIEdldG9w
dExvbmcubmV3KFsnLS1oZWxwJywgJy1oJywgR2V0b3B0TG8KICAgICAgICAgJG91dHB1dERpciA9
IFBhdGhuYW1lLm5ldyhhcmcpCiAgICAgd2hlbiAnLS1mdGwtaml0JwogICAgICAgICAkZW5hYmxl
RlRMID0gdHJ1ZQotICAgIHdoZW4gJy0tZXJyb3Itb24tZmFpbHVyZScKLSAgICAgICAgJGVycm9y
T25GYWlsdXJlID0gdHJ1ZQotICAgIHdoZW4gJy0tbm8tZXJyb3Itb24tZmFpbHVyZScKLSAgICAg
ICAgJGVycm9yT25GYWlsdXJlID0gZmFsc2UKICAgICB3aGVuICctLXZlcmJvc2UnCiAgICAgICAg
ICR2ZXJib3NpdHkgKz0gMQorICAgIHdoZW4gJy0tcnVuLWJ1bmRsZScKKyAgICAgICAgJGJ1bmRs
ZSA9IFBhdGhuYW1lLm5ldyhhcmcpCisgICAgd2hlbiAnLS10YXJiYWxsJworICAgICAgICAkdGFy
YmFsbCA9IHRydWUKICAgICBlbmQKIH0KIAogJHByb2dyZXNzTWV0ZXIgPSAoJHZlcmJvc2l0eSA9
PSAwIGFuZCAkc3RkaW4udHR5PykKIAoraWYgJGJ1bmRsZQorICAgICRqc2NQYXRoID0gJGJ1bmRs
ZSArICIudm0iICsgIkphdmFTY3JpcHRDb3JlLmZyYW1ld29yayIgKyAiUmVzb3VyY2VzIiArICJq
c2MiCisgICAgJG91dHB1dERpciA9ICRidW5kbGUKK2VuZAorCiB1bmxlc3MgJGpzY1BhdGgKICAg
ICAkc3RkZXJyLnB1dHMgIkVycm9yOiBtdXN0IHNwZWNpZnkgLWogPHBhdGg+LiIKICAgICBleGl0
IDEKQEAgLTEzNyw2ICsxNDQsNTUgQEAgRUFHRVJfT1BUSU9OUyA9IFsiLS10aHJlc2hvbGRGb3JK
SVRBZnRlcgogCiAkcnVubGlzdCA9IFtdCiAKK2RlZiBmcmFtZXdvcmtGcm9tSlNDUGF0aChqc2NQ
YXRoKQorICAgIGlmIGpzY1BhdGguZGlybmFtZS5iYXNlbmFtZS50b19zID09ICJSZXNvdXJjZXMi
IGFuZCBqc2NQYXRoLmRpcm5hbWUuZGlybmFtZS5iYXNlbmFtZS50b19zID09ICJKYXZhU2NyaXB0
Q29yZS5mcmFtZXdvcmsiCisgICAgICAgIGpzY1BhdGguZGlybmFtZS5kaXJuYW1lCisgICAgZWxz
aWYganNjUGF0aC5kaXJuYW1lLmRpcm5hbWUuYmFzZW5hbWUudG9fcyA9PSAiV2ViS2l0QnVpbGQi
CisgICAgICAgIHBhcmVudERpck5hbWUgPSBqc2NQYXRoLmRpcm5hbWUuYmFzZW5hbWUudG9fcwor
ICAgICAgICBpZiBwYXJlbnREaXJOYW1lID09ICJEZWJ1ZyIgb3IgcGFyZW50RGlyTmFtZSA9PSAi
UmVsZWFzZSIgCisgICAgICAgICAgICBqc2NQYXRoLmRpcm5hbWUgKyAiSmF2YVNjcmlwdENvcmUu
ZnJhbWV3b3JrIgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiVW5rbm93biBKU0Mg
cGF0aCwgY2Fubm90IGNvcHkgZnVsbCBmcmFtZXdvcms6ICN7anNjUGF0aH0iCisgICAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgICAgJHN0ZGVyci5wdXRzICJXYXJuaW5nOiBjYW5ub3QgaWRlbnRp
ZnkgSlNDIGZyYW1ld29yaywgZG9pbmcgZ2VuZXJpYyBWTSBjb3B5LiIKKyAgICAgICAgbmlsCisg
ICAgZW5kCitlbmQKKworZGVmIHByZXBhcmVGcmFtZXdvcmsoanNjUGF0aCkKKyAgICBmcmFtZXdv
cmtQYXRoID0gZnJhbWV3b3JrRnJvbUpTQ1BhdGgoanNjUGF0aCkKKyAgICAkZnJhbWV3b3JrUGF0
aCA9IFBhdGhuYW1lLm5ldygiLnZtIikgKyAiSmF2YVNjcmlwdENvcmUuZnJhbWV3b3JrIgorICAg
ICRqc2NQYXRoID0gJGZyYW1ld29ya1BhdGggKyAiUmVzb3VyY2VzIiArICJqc2MiCisKKyAgICBp
ZiBmcmFtZXdvcmtQYXRoCisgICAgICAgIEZpbGVVdGlscy5jcF9yIGZyYW1ld29ya1BhdGgsIHZt
RGlyCisgICAgZWxzZQorICAgICAgICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICAg
ICAgRmlsZVV0aWxzLm1rZGlyX3AgJGpzY1BhdGguZGlybmFtZQorICAgICAgICAgICAgRmlsZVV0
aWxzLmNwIGpzY1BhdGgsICRqc2NQYXRoCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYg
Y29weVZNVG9CdW5kbGUKKyAgICByYWlzZSBpZiAkYnVuZGxlCisKKyAgICB2bURpciA9ICRvdXRw
dXREaXIgKyAiLnZtIgorICAgIEZpbGVVdGlscy5ta2Rpcl9wIHZtRGlyCisgICAKKyAgICBwcmVw
YXJlRnJhbWV3b3JrKCRqc2NQYXRoKSAKK2VuZAorCitkZWYgcGF0aFRvVk0KKyAgICBkaXIgPSBQ
YXRobmFtZS5uZXcoIi4iKQorICAgICRiZW5jaG1hcmtEaXJlY3RvcnkuZWFjaF9maWxlbmFtZSB7
CisgICAgICAgIHwgcGF0aENvbXBvbmVudCB8CisgICAgICAgIGRpciArPSAiLi4iCisgICAgfQor
ICAgIGRpciArICRqc2NQYXRoCitlbmQKKwogZGVmIHByZWZpeENvbW1hbmQocHJlZml4KQogICAg
ICJhd2sgIiArIFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoInsgcHJpbnRmICN7KHByZWZpeCArICc6
ICcpLmluc3BlY3R9OyBwcmludCB9IikKIGVuZApAQCAtMTQ5LDcgKzIwNSw3IEBAIGVuZAogZGVm
IHNpbGVudE91dHB1dEhhbmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgbmFtZSB8Ci0g
ICAgICAgICIgfCAiICsgcGlwZUFuZFByZWZpeENvbW1hbmQoKCRvdXRwdXREaXIgKyAobmFtZSAr
ICIub3V0IikpLnRvX3MsIG5hbWUpCisgICAgICAgICIgfCAiICsgcGlwZUFuZFByZWZpeENvbW1h
bmQoKFBhdGhuYW1lKCIuLiIpICsgKG5hbWUgKyAiLm91dCIpKS50b19zLCBuYW1lKQogICAgIH0K
IGVuZAogCkBAIC0xNTcsNyArMjEzLDcgQEAgZW5kCiBkZWYgbm9pc3lPdXRwdXRIYW5kbGVyCiAg
ICAgUHJvYy5uZXcgewogICAgICAgICB8IG5hbWUgfAotICAgICAgICAiIHwgY2F0ID4gIiArIFNo
ZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXREaXIgKyAobmFtZSArICIub3V0IikpLnRvX3Mp
CisgICAgICAgICIgfCBjYXQgPiAiICsgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoUGF0aG5hbWUo
Ii4uIikgKyAobmFtZSArICIub3V0IikpLnRvX3MpCiAgICAgfQogZW5kCiAKQEAgLTE3OSwxNiAr
MjM1LDE2IEBAIGVuZAogZGVmIGRpZmZFcnJvckhhbmRsZXIoZXhwZWN0ZWRGaWxlbmFtZSkKICAg
ICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1dEZpbGVu
YW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERpciArIChwbGFuLm5hbWUgKyAi
Lm91dCIpKS50b19zKQotICAgICAgICBkaWZmRmlsZW5hbWUgPSBTaGVsbHdvcmRzLnNoZWxsZXNj
YXBlKCgkb3V0cHV0RGlyICsgKHBsYW4ubmFtZSArICIuZGlmZiIpKS50b19zKQorICAgICAgICBv
dXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsg
KHBsYW4ubmFtZSArICIub3V0IikpLnRvX3MpCisgICAgICAgIGRpZmZGaWxlbmFtZSA9IFNoZWxs
d29yZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIuZGlmZiIp
KS50b19zKQogICAgICAgICAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5m
YWlsRmlsZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIg
ICAgKGNhdCAje291dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQg
Y29kZTogYGNhdCAje3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5h
bWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAg
IG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lICN7U2hlbGx3b3Jkcy5zaGVsbGVzY2FwZShleHBlY3Rl
ZEZpbGVuYW1lKX0iCisgICAgICAgIG91dHAucHV0cyAiZWxpZiB0ZXN0IC1lIC4uLyN7U2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0iCiAgICAgICAgIG91dHAucHV0cyAi
dGhlbiIKLSAgICAgICAgb3V0cC5wdXRzICIgICAgZGlmZiAtdSAje1NoZWxsd29yZHMuc2hlbGxl
c2NhcGUoZXhwZWN0ZWRGaWxlbmFtZSl9ICN7b3V0cHV0RmlsZW5hbWV9ID4gI3tkaWZmRmlsZW5h
bWV9IgorICAgICAgICBvdXRwLnB1dHMgIiAgICBkaWZmIC11IC4uLyN7U2hlbGx3b3Jkcy5zaGVs
bGVzY2FwZShleHBlY3RlZEZpbGVuYW1lKX0gI3tvdXRwdXRGaWxlbmFtZX0gPiAje2RpZmZGaWxl
bmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAiICAgIGlmIFsgJD8gLWVxIDAgXSIKICAgICAgICAg
b3V0cC5wdXRzICIgICAgdGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3Vj
Y2Vzc0NvbW1hbmQKQEAgLTIwOCwxMyArMjY0LDEzIEBAIGVuZAogZGVmIG1vemlsbGFFcnJvckhh
bmRsZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91
dHB1dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERpciArIChwbGFu
Lm5hbWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRv
X3MpCiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAg
ICAgICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgKGNhdCAje291
dHB1dEZpbGVuYW1lfSAmJiBlY2hvIEVSUk9SOiBVbmV4cGVjdGVkIGV4aXQgY29kZTogYGNhdCAj
e3BsYW4uZmFpbEZpbGV9YCkgfCAiICsgcHJlZml4Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAg
IG91dHAucHV0cyAiICAgICIgKyBwbGFuLmZhaWxDb21tYW5kCi0gICAgICAgIG91dHAucHV0cyAi
ZWxpZiBydWJ5ICIgKyBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChIRUxQRVJTX1BBVEggKyAiY2hl
Y2stbW96aWxsYS1mYWlsdXJlIikudG9fcykgKyAiICN7b3V0cHV0RmlsZW5hbWV9IgorICAgICAg
ICBvdXRwLnB1dHMgImVsaWYgZ3JlcCAtaSAtcSBmYWlsZWQhICN7b3V0cHV0RmlsZW5hbWV9Igog
ICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgIChlY2hvIERl
dGVjdGVkIGZhaWx1cmVzOiAmJiBjYXQgI3tvdXRwdXRGaWxlbmFtZX0pIHwgIiArIHByZWZpeENv
bW1hbmQocGxhbi5uYW1lKQogICAgICAgICBvdXRwLnB1dHMgIiAgICAiICsgcGxhbi5mYWlsQ29t
bWFuZApAQCAtMjI5LDEyICsyODUsMTIgQEAgZW5kCiBkZWYgbW96aWxsYUZhaWxFcnJvckhhbmRs
ZXIKICAgICBQcm9jLm5ldyB7CiAgICAgICAgIHwgb3V0cCwgcGxhbiB8Ci0gICAgICAgIG91dHB1
dEZpbGVuYW1lID0gU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSgoJG91dHB1dERpciArIChwbGFuLm5h
bWUgKyAiLm91dCIpKS50b19zKQorICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKFBhdGhuYW1lKCIuLiIpICsgKHBsYW4ubmFtZSArICIub3V0IikpLnRvX3Mp
CiAKICAgICAgICAgb3V0cC5wdXRzICJpZiB0ZXN0IC1lICN7cGxhbi5mYWlsRmlsZX0iCiAgICAg
ICAgIG91dHAucHV0cyAidGhlbiIKICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3Vj
Y2Vzc0NvbW1hbmQKLSAgICAgICAgb3V0cC5wdXRzICJlbGlmIHJ1YnkgIiArIFNoZWxsd29yZHMu
c2hlbGxlc2NhcGUoKEhFTFBFUlNfUEFUSCArICJjaGVjay1tb3ppbGxhLWZhaWx1cmUiKS50b19z
KSArICIgI3tvdXRwdXRGaWxlbmFtZX0iCisgICAgICAgIG91dHAucHV0cyAiZWxpZiBncmVwIC1p
IC1xIGZhaWxlZCEgI3tvdXRwdXRGaWxlbmFtZX0iCiAgICAgICAgIG91dHAucHV0cyAidGhlbiIK
ICAgICAgICAgb3V0cC5wdXRzICIgICAgIiArIHBsYW4uc3VjY2Vzc0NvbW1hbmQKICAgICAgICAg
b3V0cC5wdXRzICJlbHNlIgpAQCAtMjQ5LDEzICszMDUsMTMgQEAgZW5kCiBkZWYgbW96aWxsYUV4
aXQzRXJyb3JIYW5kbGVyCiAgICAgUHJvYy5uZXcgewogICAgICAgICB8IG91dHAsIHBsYW4gfAot
ICAgICAgICBvdXRwdXRGaWxlbmFtZSA9IFNoZWxsd29yZHMuc2hlbGxlc2NhcGUoKCRvdXRwdXRE
aXIgKyAocGxhbi5uYW1lICsgIi5vdXQiKSkudG9fcykKKyAgICAgICAgb3V0cHV0RmlsZW5hbWUg
PSBTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKChQYXRobmFtZSgiLi4iKSArIChwbGFuLm5hbWUgKyAi
Lm91dCIpKS50b19zKQogCiAgICAgICAgIG91dHAucHV0cyAiaWYgdGVzdCAtZSAje3BsYW4uZmFp
bEZpbGV9IgogICAgICAgICBvdXRwLnB1dHMgInRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAg
IGlmIFsgYGNhdCAje3BsYW4uZmFpbEZpbGV9YCAtZXEgMyBdIgogICAgICAgICBvdXRwLnB1dHMg
IiAgICB0aGVuIgotICAgICAgICBvdXRwLnB1dHMgIiAgICAgICAgaWYgcnVieSAiICsgU2hlbGx3
b3Jkcy5zaGVsbGVzY2FwZSgoSEVMUEVSU19QQVRIICsgImNoZWNrLW1vemlsbGEtZmFpbHVyZSIp
LnRvX3MpICsgIiAje291dHB1dEZpbGVuYW1lfSIKKyAgICAgICAgb3V0cC5wdXRzICIgICAgICAg
IGlmIGdyZXAgLWkgLXEgZmFpbGVkISAje291dHB1dEZpbGVuYW1lfSIKICAgICAgICAgb3V0cC5w
dXRzICIgICAgICAgIHRoZW4iCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgKGVjaG8g
RGV0ZWN0ZWQgZmFpbHVyZXM6ICYmIGNhdCAje291dHB1dEZpbGVuYW1lfSkgfCAiICsgcHJlZml4
Q29tbWFuZChwbGFuLm5hbWUpCiAgICAgICAgIG91dHAucHV0cyAiICAgICAgICAgICAgIiArIHBs
YW4uZmFpbENvbW1hbmQKQEAgLTI4MCw3ICszMzYsNyBAQCBjbGFzcyBQbGFuCiAgICAgYXR0cl9h
Y2Nlc3NvciA6aW5kZXgKICAgICAKICAgICBkZWYgaW5pdGlhbGl6ZShkaXJlY3RvcnksIGFyZ3Vt
ZW50cywgbmFtZSwgb3V0cHV0SGFuZGxlciwgZXJyb3JIYW5kbGVyKQotICAgICAgICBAZGlyZWN0
b3J5ID0gZGlyZWN0b3J5LnJlYWxwYXRoCisgICAgICAgIEBkaXJlY3RvcnkgPSBkaXJlY3RvcnkK
ICAgICAgICAgQGFyZ3VtZW50cyA9IGFyZ3VtZW50cwogICAgICAgICBAbmFtZSA9IG5hbWUKICAg
ICAgICAgQG91dHB1dEhhbmRsZXIgPSBvdXRwdXRIYW5kbGVyCkBAIC0yODksNyArMzQ1LDEwIEBA
IGNsYXNzIFBsYW4KICAgICBlbmQKICAgICAKICAgICBkZWYgc2hlbGxDb21tYW5kCi0gICAgICAg
ICIoY2QgI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKEBkaXJlY3RvcnkudG9fcyl9ICYmIFwiJEBc
IiAiICsgQGFyZ3VtZW50cy5tYXB7CisgICAgICAgICMgSXQncyBpbXBvcnRhbnQgdG8gcmVtZW1i
ZXIgdGhhdCB0aGUgdGVzdCBpcyBhY3R1YWxseSBydW4gaW4gYSBzdWJzaGVsbCwgc28gaWYgd2Ug
Y2hhbmdlIGRpcmVjdG9yeQorICAgICAgICAjIGluIHRoZSBzdWJzaGVsbCB3aGVuIHdlIHJldHVy
biB3ZSB3aWxsIGJlIGluIG91ciBvcmlnaW5hbCBkaXJlY3RvcnkuIFRoaXMgaXMgbmljZSBiZWNh
dXNlIHdlIGRvbid0CisgICAgICAgICMgaGF2ZSB0byBiZW5kIG92ZXIgYmFja3dhcmRzIHRvIGRv
IHRoaW5ncyByZWxhdGl2ZSB0byB0aGUgcm9vdC4KKyAgICAgICAgIihjZCAuLi8je1NoZWxsd29y
ZHMuc2hlbGxlc2NhcGUoQGRpcmVjdG9yeS50b19zKX0gJiYgXCIkQFwiICIgKyBAYXJndW1lbnRz
Lm1hcHsKICAgICAgICAgICAgIHwgdiB8CiAgICAgICAgICAgICByYWlzZSAiRGV0ZWN0ZWQgYSBu
b24tc3RyaW5nIGluICN7aW5zcGVjdH0iIHVubGVzcyB2LmlzX2E/IFN0cmluZwogICAgICAgICAg
ICAgU2hlbGx3b3Jkcy5zaGVsbGVzY2FwZSh2KQpAQCAtMjk3LDcgKzM1NiwxNyBAQCBjbGFzcyBQ
bGFuCiAgICAgZW5kCiAgICAgCiAgICAgZGVmIHJlcHJvU2NyaXB0Q29tbWFuZAotICAgICAgICBz
Y3JpcHQgPSAiIgorICAgICAgICAjIFdlIGhhdmUgdG8gZmluZCBvdXIgd2F5IGJhY2sgdG8gdGhl
IC5wYXJhbGxlbCBkaXJlY3Rvcnkgc2luY2UgdGhhdCdzIHdoZXJlIGFsbCBvZiB0aGUgcmVsYXRp
dmUKKyAgICAgICAgIyBwYXRocyBhc3N1bWUgdGhleSBzdGFydCBvdXQgZnJvbS4KKyAgICAgICAg
c2NyaXB0ID0gIkNVUlJFTlRfRElSPVwiJCggY2QgXCIkKCBkaXJuYW1lIFwiJHtCQVNIX1NPVVJD
RVswXX1cIiApXCIgJiYgcHdkIClcIlxuIgorICAgICAgICBzY3JpcHQgKz0gImNkICRDVVJSRU5U
X0RJUlxuIgorICAgICAgICBQYXRobmFtZS5uZXcoQG5hbWUpLmRpcm5hbWUuZWFjaF9maWxlbmFt
ZSB7CisgICAgICAgICAgICB8IHBhdGhDb21wb25lbnQgfAorICAgICAgICAgICAgc2NyaXB0ICs9
ICJjZCAuLlxuIgorICAgICAgICB9CisgICAgICAgIHNjcmlwdCArPSAiY2QgLnBhcmFsbGVsXG4i
CisKKyAgICAgICAgc2NyaXB0ICs9ICJleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSD0kKGNkIC4u
LyN7JGZyYW1ld29ya1BhdGguZGlybmFtZX07IHB3ZClcbiIKICAgICAgICAgSU1QT1JUQU5UX0VO
VlMuZWFjaCB7CiAgICAgICAgICAgICB8IGtleSB8CiAgICAgICAgICAgICBpZiBFTlZba2V5XQpA
QCAtMzA1LDcgKzM3NCw3IEBAIGNsYXNzIFBsYW4KICAgICAgICAgICAgIGVuZAogICAgICAgICB9
CiAgICAgICAgIHNjcmlwdCArPSAiI3tzaGVsbENvbW1hbmR9IHx8IGV4aXQgMSIKLSAgICAgICAg
ImVjaG8gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNo
ZWxsZXNjYXBlKCgkb3V0cHV0RGlyICsgQG5hbWUpLnRvX3MpfSIKKyAgICAgICAgImVjaG8gI3tT
aGVsbHdvcmRzLnNoZWxsZXNjYXBlKHNjcmlwdCl9ID4gI3tTaGVsbHdvcmRzLnNoZWxsZXNjYXBl
KChQYXRobmFtZS5uZXcoIi4uIikgKyBAbmFtZSkudG9fcyl9IgogICAgIGVuZAogICAgIAogICAg
IGRlZiBmYWlsQ29tbWFuZApAQCAtMzY2LDIyICs0MzUsMjYgQEAgZW5kCiAjIHJldHVybnMgZmFs
c2UsIGluIHdoaWNoIGNhc2UgeW91J3JlIHN1cHBvc2VkIHRvIGFkZCB5b3VyIG93biBydW4gY29t
bWFuZHMuCiBkZWYgcGFyc2VSdW5Db21tYW5kcwogICAgIGRpZFJ1biA9IGZhbHNlCi0gICAgRmls
ZS5vcGVuKCRiZW5jaG1hcmtEaXJlY3RvcnkgKyAkYmVuY2htYXJrKSB7Ci0gICAgICAgIHwgaW5w
IHwKLSAgICAgICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgICAgICB8IGxpbmUgfAotICAgICAg
ICAgICAgYmVnaW4KLSAgICAgICAgICAgICAgICBkb2VzTWF0Y2ggPSBsaW5lID1+IC9eXC9cL0Av
Ci0gICAgICAgICAgICByZXNjdWUgRXhjZXB0aW9uID0+IGUKLSAgICAgICAgICAgICAgICAjIEFw
cGFyZW50bHkgdGhpcyBoYXBwZW5zIGluIHRoZSBjYXNlIG9mIHNvbWUgVVRGOCBzdHVmZiBpbiBz
b21lIGZpbGVzLCB3aGVyZQotICAgICAgICAgICAgICAgICMgUnVieSB0cmllcyB0byBiZSBzdHJp
Y3QgYW5kIHRocm93IGV4Y2VwdGlvbnMuCi0gICAgICAgICAgICAgICAgbmV4dAotICAgICAgICAg
ICAgZW5kCi0gICAgICAgICAgICBuZXh0IHVubGVzcyBkb2VzTWF0Y2gKLSAgICAgICAgICAgIGV2
YWwgJH4ucG9zdF9tYXRjaAotICAgICAgICAgICAgZGlkUnVuID0gdHJ1ZQorCisgICAgRGlyLmNo
ZGlyKCRvdXRwdXREaXIpIHsKKyAgICAgICAgRmlsZS5vcGVuKCRiZW5jaG1hcmtEaXJlY3Rvcnkg
KyAkYmVuY2htYXJrKSB7CisgICAgICAgICAgICB8IGlucCB8CisgICAgICAgICAgICBpbnAuZWFj
aF9saW5lIHsKKyAgICAgICAgICAgICAgICB8IGxpbmUgfAorICAgICAgICAgICAgICAgIGJlZ2lu
CisgICAgICAgICAgICAgICAgICAgIGRvZXNNYXRjaCA9IGxpbmUgPX4gL15cL1wvQC8KKyAgICAg
ICAgICAgICAgICByZXNjdWUgRXhjZXB0aW9uID0+IGUKKyAgICAgICAgICAgICAgICAgICAgIyBB
cHBhcmVudGx5IHRoaXMgaGFwcGVucyBpbiB0aGUgY2FzZSBvZiBzb21lIFVURjggc3R1ZmYgaW4g
c29tZSBmaWxlcywgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgIyBSdWJ5IHRyaWVzIHRvIGJl
IHN0cmljdCBhbmQgdGhyb3cgZXhjZXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgbmV4dAor
ICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzIGRvZXNNYXRj
aAorICAgICAgICAgICAgICAgIGV2YWwgJH4ucG9zdF9tYXRjaAorICAgICAgICAgICAgICAgIGRp
ZFJ1biA9IHRydWUKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKwogICAgIGRpZFJ1
bgogZW5kCiAKQEAgLTM5MCw3ICs0NjMsNyBAQCBkZWYgc2xvdyEKIGVuZAogCiBkZWYgcnVuKGtp
bmQsICpvcHRpb25zKQotICAgIGFkZFJ1bkNvbW1hbmQoa2luZCwgWyRqc2NQYXRoLnRvX3NdICsg
b3B0aW9ucyArIFskYmVuY2htYXJrLnRvX3NdLCBzaWxlbnRPdXRwdXRIYW5kbGVyLCBzaW1wbGVF
cnJvckhhbmRsZXIpCisgICAgYWRkUnVuQ29tbWFuZChraW5kLCBbcGF0aFRvVk0udG9fc10gKyBv
cHRpb25zICsgWyRiZW5jaG1hcmsudG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVy
cm9ySGFuZGxlcikKIGVuZAogCiBkZWYgcnVuRGVmYXVsdApAQCAtNDc4LDcgKzU1MSw3IEBAIGVu
ZAogZGVmIHJ1blByb2ZpbGVyCiAgICAgcHJvZmlsZXJPdXRwdXQgPSB1bmlxdWVGaWxlbmFtZSgi
Lmpzb24iKQogICAgIGlmICRjYW5SdW5EaXNwbGF5UHJvZmlsZXJPdXRwdXQKLSAgICAgICAgYWRk
UnVuQ29tbWFuZCgicHJvZmlsZXIiLCBbInJ1YnkiLCAoSEVMUEVSU19QQVRIICsgInByb2ZpbGVy
LXRlc3QtaGVscGVyIikudG9fcywgKFNDUklQVFNfUEFUSCArICJkaXNwbGF5LXByb2ZpbGVyLW91
dHB1dCIpLnRvX3MsIHByb2ZpbGVyT3V0cHV0LnRvX3MsICRqc2NQYXRoLnRvX3MsICItcCIsIHBy
b2ZpbGVyT3V0cHV0LnRvX3MsICRiZW5jaG1hcmsudG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIs
IHNpbXBsZUVycm9ySGFuZGxlcikKKyAgICAgICAgYWRkUnVuQ29tbWFuZCgicHJvZmlsZXIiLCBb
InJ1YnkiLCAoSEVMUEVSU19QQVRIICsgInByb2ZpbGVyLXRlc3QtaGVscGVyIikudG9fcywgKFND
UklQVFNfUEFUSCArICJkaXNwbGF5LXByb2ZpbGVyLW91dHB1dCIpLnRvX3MsIHByb2ZpbGVyT3V0
cHV0LnRvX3MsIHBhdGhUb1ZNLnRvX3MsICItcCIsIHByb2ZpbGVyT3V0cHV0LnRvX3MsICRiZW5j
aG1hcmsudG9fc10sIHNpbGVudE91dHB1dEhhbmRsZXIsIHNpbXBsZUVycm9ySGFuZGxlcikKICAg
ICBlbHNlCiAgICAgICAgIHB1dHMgIlJ1bm5pbmcgc2ltcGxlIHZlcnNpb24gb2YgI3skY29sbGVj
dGlvbk5hbWV9LyN7JGJlbmNobWFya30gYmVjYXVzZSBzb21lIHJlcXVpcmVkIFJ1YnkgZmVhdHVy
ZXMgYXJlIHVuYXZhaWxhYmxlLiIKICAgICAgICAgcnVuKCJwcm9maWxlci1zaW1wbGUiLCAiLXAi
LCBwcm9maWxlck91dHB1dC50b19zKQpAQCAtNDkzLDEyICs1NjYsMTUgQEAgZGVmIHJ1bkxheW91
dFRlc3Qoa2luZCwgKm9wdGlvbnMpCiAgICAgZWxzZQogICAgICAgICBraW5kID0gImxheW91dCIK
ICAgICBlbmQKLSAgICBhcmdzID0KLSAgICAgICAgWyRqc2NQYXRoLnRvX3NdICsgb3B0aW9ucyAr
Ci0gICAgICAgIFsoTEFZT1VUVEVTVFNfUEFUSCArICJyZXNvdXJjZXMiICsgInN0YW5kYWxvbmUt
cHJlLmpzIikudG9fcywKKworICAgIHByZXBhcmVFeHRyYVJlbGF0aXZlRmlsZXMoWyIuLi8je3Rl
c3ROYW1lfS1leHBlY3RlZC50eHQiXSwgJGJlbmNobWFya0RpcmVjdG9yeSkKKyAgICBwcmVwYXJl
RXh0cmFBYnNvbHV0ZUZpbGVzKExBWU9VVFRFU1RTX1BBVEgsIFsicmVzb3VyY2VzL3N0YW5kYWxv
bmUtcHJlLmpzIiwgInJlc291cmNlcy9zdGFuZGFsb25lLXBvc3QuanMiXSkKKworICAgIGFyZ3Mg
PSBbcGF0aFRvVk0udG9fc10gKyBvcHRpb25zICsKKyAgICAgICAgWyhQYXRobmFtZS5uZXcoInJl
c291cmNlcyIpICsgInN0YW5kYWxvbmUtcHJlLmpzIikudG9fcywKICAgICAgICAgICRiZW5jaG1h
cmsudG9fcywKLSAgICAgICAgIChMQVlPVVRURVNUU19QQVRIICsgInJlc291cmNlcyIgKyAic3Rh
bmRhbG9uZS1wb3N0LmpzIikudG9fc10KLSAgICBhZGRSdW5Db21tYW5kKGtpbmQsIGFyZ3MsIG5v
aXN5T3V0cHV0SGFuZGxlciwgZGlmZkVycm9ySGFuZGxlcigoJGJlbmNobWFya0RpcmVjdG9yeS5k
aXJuYW1lICsgIiN7dGVzdE5hbWV9LWV4cGVjdGVkLnR4dCIpLnRvX3MpKQorICAgICAgICAgKFBh
dGhuYW1lLm5ldygicmVzb3VyY2VzIikgKyAic3RhbmRhbG9uZS1wb3N0LmpzIikudG9fc10KKyAg
ICBhZGRSdW5Db21tYW5kKGtpbmQsIGFyZ3MsIG5vaXN5T3V0cHV0SGFuZGxlciwgZGlmZkVycm9y
SGFuZGxlcigoJGJlbmNobWFya0RpcmVjdG9yeSArICIuLi8je3Rlc3ROYW1lfS1leHBlY3RlZC50
eHQiKS50b19zKSkKIGVuZAogCiBkZWYgcnVuTGF5b3V0VGVzdERlZmF1bHQKQEAgLTUyNCwxMyAr
NjAwLDQwIEBAIGRlZiBkZWZhdWx0UnVuTGF5b3V0VGVzdAogICAgIHJ1bkxheW91dFRlc3RERkdF
YWdlck5vQ0pJVAogZW5kCiAKK2RlZiBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZpbGVzKGV4dHJhRmls
ZXMsIGRlc3RpbmF0aW9uKQorICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgIGV4
dHJhRmlsZXMuZWFjaCB7CisgICAgICAgICAgICB8IGZpbGUgfAorICAgICAgICAgICAgRmlsZVV0
aWxzLmNwICRleHRyYUZpbGVzQmFzZURpciArIGZpbGUsIGRlc3RpbmF0aW9uICsgZmlsZQorICAg
ICAgICB9CisgICAgfQorZW5kCisKK2RlZiBiYXNlRGlyRm9yQ29sbGVjdGlvbihjb2xsZWN0aW9u
TmFtZSkKKyAgICBQYXRobmFtZSgiLnRlc3RzIikgKyBjb2xsZWN0aW9uTmFtZQorZW5kCisKK2Rl
ZiBwcmVwYXJlRXh0cmFBYnNvbHV0ZUZpbGVzKGFic29sdXRlQmFzZSwgZXh0cmFGaWxlcykKKyAg
ICByYWlzZSB1bmxlc3MgYWJzb2x1dGVCYXNlLmFic29sdXRlPworICAgIERpci5jaGRpcigkb3V0
cHV0RGlyKSB7CisgICAgICAgIGNvbGxlY3Rpb25CYXNlRGlyID0gYmFzZURpckZvckNvbGxlY3Rp
b24oJGNvbGxlY3Rpb25OYW1lKQorICAgICAgICBleHRyYUZpbGVzLmVhY2ggeworICAgICAgICAg
ICAgfCBmaWxlIHwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gY29sbGVjdGlvbkJhc2VEaXIg
KyBmaWxlCisgICAgICAgICAgICBGaWxlVXRpbHMubWtkaXJfcCBkZXN0aW5hdGlvbi5kaXJuYW1l
IHVubGVzcyBkZXN0aW5hdGlvbi5kaXJlY3Rvcnk/CisgICAgICAgICAgICBGaWxlVXRpbHMuY3Ag
YWJzb2x1dGVCYXNlICsgZmlsZSwgZGVzdGluYXRpb24KKyAgICAgICAgfQorICAgIH0KK2VuZAor
CiBkZWYgcnVuTW96aWxsYVRlc3Qoa2luZCwgbW9kZSwgZXh0cmFGaWxlcywgKm9wdGlvbnMpCiAg
ICAgaWYga2luZAogICAgICAgICBraW5kID0gIm1vemlsbGEtIiArIGtpbmQKICAgICBlbHNlCiAg
ICAgICAgIGtpbmQgPSAibW96aWxsYSIKICAgICBlbmQKLSAgICBhcmdzID0gWyRqc2NQYXRoLnRv
X3NdICsgb3B0aW9ucyArIGV4dHJhRmlsZXMubWFwe3x2fCAoJGJlbmNobWFya0RpcmVjdG9yeSAr
IHYpLnRvX3N9ICsgWyRiZW5jaG1hcmsudG9fc10KKyAgICBwcmVwYXJlRXh0cmFSZWxhdGl2ZUZp
bGVzKGV4dHJhRmlsZXMubWFwe3x2fCAoUGF0aG5hbWUoIi4uIikgKyB2KS50b19zfSwgJGNvbGxl
Y3Rpb24pCisgICAgYXJncyA9IFtwYXRoVG9WTS50b19zXSArIG9wdGlvbnMgKyBleHRyYUZpbGVz
Lm1hcHt8dnwgdi50b19zfSArIFskYmVuY2htYXJrLnRvX3NdCiAgICAgY2FzZSBtb2RlCiAgICAg
d2hlbiA6bm9ybWFsCiAgICAgICAgIGVycm9ySGFuZGxlciA9IG1vemlsbGFFcnJvckhhbmRsZXIK
QEAgLTU3MywxNCArNjc2LDYgQEAgZGVmIHNraXAKICAgICBwdXRzICJTa2lwcGluZyAjeyRjb2xs
ZWN0aW9uTmFtZX0vI3skYmVuY2htYXJrfSIKIGVuZAogCi1EaXIubWtkaXIoJG91dHB1dERpcikg
dW5sZXNzICRvdXRwdXREaXIuZGlyZWN0b3J5PwotYmVnaW4KLSAgICBGaWxlLmRlbGV0ZSgkb3V0
cHV0RGlyICsgImZhaWxlZCIpCi1yZXNjdWUKLWVuZAotCi0kb3V0cHV0RGlyID0gJG91dHB1dERp
ci5yZWFscGF0aAotCiBkZWYgYWxsSlNGaWxlcyhwYXRoKQogICAgIGlmIHBhdGguZmlsZT8KICAg
ICAgICAgW3BhdGhdCkBAIC02MjIsMTEgKzcxNywyOSBAQCBkZWYgc2ltcGxpZnlDb2xsZWN0aW9u
TmFtZShjb2xsZWN0aW9uUGF0CiBlbmQKIAogZGVmIHByZXBhcmVDb2xsZWN0aW9uKG5hbWUpCi0g
ICAgZGlyID0gJG91dHB1dERpcgotICAgIFBhdGhuYW1lLm5ldyhuYW1lKS5lYWNoX2ZpbGVuYW1l
IHsKLSAgICAgICAgfCBmaWxlbmFtZSB8Ci0gICAgICAgIGRpciA9IGRpciArIGZpbGVuYW1lCi0g
ICAgICAgIERpci5ta2RpcihkaXIpIHVubGVzcyBkaXIuZGlyZWN0b3J5PworICAgIEZpbGVVdGls
cy5ta2Rpcl9wICRvdXRwdXREaXIgKyBuYW1lCisKKyAgICBhYnNvbHV0ZUNvbGxlY3Rpb24gPSAk
Y29sbGVjdGlvbi5yZWFscGF0aAorCisgICAgRGlyLmNoZGlyKCRvdXRwdXREaXIpIHsKKyAgICAg
ICAgYnVuZGxlRGlyID0gYmFzZURpckZvckNvbGxlY3Rpb24obmFtZSkKKworICAgICAgICAjIENy
ZWF0ZSB0aGUgcHJvcGVyIGRpcmVjdG9yeSBzdHJ1Y3R1cmVzLgorICAgICAgICBGaWxlVXRpbHMu
bWtkaXJfcCBidW5kbGVEaXIKKyAgICAgICAgaWYgYnVuZGxlRGlyLmJhc2VuYW1lID09ICRjb2xs
ZWN0aW9uLmJhc2VuYW1lCisgICAgICAgICAgICBGaWxlVXRpbHMuY3BfciBhYnNvbHV0ZUNvbGxl
Y3Rpb24sIGJ1bmRsZURpci5kaXJuYW1lCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEZpbGVV
dGlscy5jcF9yIGFic29sdXRlQ29sbGVjdGlvbiwgYnVuZGxlRGlyCisgICAgICAgIGVuZAorCisg
ICAgICAgICRleHRyYUZpbGVzQmFzZURpciA9IGFic29sdXRlQ29sbGVjdGlvbgorCisgICAgICAg
ICMgUmVkaXJlY3QgdGhlIGNvbGxlY3Rpb24ncyBsb2NhdGlvbiB0byB0aGUgbmV3bHkgY29uc3Ry
dWN0ZWQgYnVuZGxlLgorICAgICAgICBpZiBhYnNvbHV0ZUNvbGxlY3Rpb24uZGlyZWN0b3J5Pwor
ICAgICAgICAgICAgJGNvbGxlY3Rpb24gPSBidW5kbGVEaXIKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgJGNvbGxlY3Rpb24gPSBidW5kbGVEaXIgKyAkY29sbGVjdGlvbi5iYXNlbmFtZQorICAg
ICAgICBlbmQKICAgICB9CiBlbmQKIApAQCAtNjM0LDcgKzc0Nyw3IEBAICRjb2xsZWN0aW9uTmFt
ZXMgPSB7fQogCiBkZWYgaGFuZGxlQ29sbGVjdGlvbkZpbGUoY29sbGVjdGlvbikKICAgICBjb2xs
ZWN0aW9uTmFtZSA9IHNpbXBsaWZ5Q29sbGVjdGlvbk5hbWUoY29sbGVjdGlvbikKLSAgICAKKyAg
IAogICAgIHBhdGhzID0ge30KICAgICBzdWJDb2xsZWN0aW9ucyA9IFtdCiAgICAgWUFNTDo6bG9h
ZChJTzo6cmVhZChjb2xsZWN0aW9uKSkuZWFjaCB7CkBAIC02NzAsMTcgKzc4MywxNyBAQCBkZWYg
aGFuZGxlQ29sbGVjdGlvbkZpbGUoY29sbGVjdGlvbikKICAgICAgICAgJGNvbGxlY3Rpb25OYW1l
ID0gJGNvbGxlY3Rpb25OYW1lLnRvX3MKICAgICAgICAgCiAgICAgICAgIHByZXBhcmVDb2xsZWN0
aW9uKCRjb2xsZWN0aW9uTmFtZSkKLSAgICAgICAgCi0gICAgICAgIGFsbEpTRmlsZXMoc3ViQ29s
bGVjdGlvbikuZWFjaCB7Ci0gICAgICAgICAgICB8IHBhdGggfAotICAgICAgICAgICAgCi0gICAg
ICAgICAgICBwYXRoID0gcGF0aC5yZWFscGF0aAotICAgICAgICAgICAgCi0gICAgICAgICAgICAk
YmVuY2htYXJrID0gcGF0aC5iYXNlbmFtZQotICAgICAgICAgICAgJGJlbmNobWFya0RpcmVjdG9y
eSA9IHBhdGguZGlybmFtZQotICAgICAgICAgICAgCi0gICAgICAgICAgICAkcnVuQ29tbWFuZE9w
dGlvbnMgPSB7fQotICAgICAgICAgICAgZXZhbCBlbnRyeVsiY21kIl0KKyAgICAgIAorICAgICAg
ICBEaXIuY2hkaXIoJG91dHB1dERpcikgeworICAgICAgICAgICAgYWxsSlNGaWxlcygkY29sbGVj
dGlvbikuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBwYXRoIHwKKyAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICRiZW5jaG1hcmsgPSBwYXRoLmJhc2VuYW1lCisgICAgICAgICAgICAg
ICAgJGJlbmNobWFya0RpcmVjdG9yeSA9IHBhdGguZGlybmFtZQorICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9CisgICAgICAgICAgICAgICAg
ZXZhbCBlbnRyeVsiY21kIl0KKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAK
QEAgLTY5MywxOCArODA2LDIwIEBAIGVuZAogZGVmIGhhbmRsZUNvbGxlY3Rpb25EaXJlY3Rvcnko
Y29sbGVjdGlvbikKICAgICBjb2xsZWN0aW9uTmFtZSA9IHNpbXBsaWZ5Q29sbGVjdGlvbk5hbWUo
Y29sbGVjdGlvbikKICAgICAKLSAgICBwcmVwYXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkK
LSAgICAKICAgICAkY29sbGVjdGlvbiA9IGNvbGxlY3Rpb24KICAgICAkY29sbGVjdGlvbk5hbWUg
PSBjb2xsZWN0aW9uTmFtZQotICAgICRiZW5jaG1hcmtEaXJlY3RvcnkgPSAkY29sbGVjdGlvbgot
ICAgIGFsbEpTRmlsZXMoJGNvbGxlY3Rpb24pLmVhY2ggewotICAgICAgICB8IHBhdGggfAotICAg
ICAgICAKLSAgICAgICAgJGJlbmNobWFyayA9IHBhdGguYmFzZW5hbWUKLSAgICAgICAgCi0gICAg
ICAgICRydW5Db21tYW5kT3B0aW9ucyA9IHt9Ci0gICAgICAgIGRlZmF1bHRSdW4gdW5sZXNzIHBh
cnNlUnVuQ29tbWFuZHMKKyAgICBwcmVwYXJlQ29sbGVjdGlvbihjb2xsZWN0aW9uTmFtZSkKKyAg
IAorICAgIERpci5jaGRpcigkb3V0cHV0RGlyKSB7CisgICAgICAgICRiZW5jaG1hcmtEaXJlY3Rv
cnkgPSAkY29sbGVjdGlvbgorICAgICAgICBhbGxKU0ZpbGVzKCRjb2xsZWN0aW9uKS5lYWNoIHsK
KyAgICAgICAgICAgIHwgcGF0aCB8CisgICAgICAgICAgICAKKyAgICAgICAgICAgICRiZW5jaG1h
cmsgPSBwYXRoLmJhc2VuYW1lCisgICAgICAgICAgICAKKyAgICAgICAgICAgICRydW5Db21tYW5k
T3B0aW9ucyA9IHt9CisgICAgICAgICAgICBkZWZhdWx0UnVuIHVubGVzcyBwYXJzZVJ1bkNvbW1h
bmRzCisgICAgICAgIH0KICAgICB9CiBlbmQKIApAQCAtNzE4LDExICs4MzMsNiBAQCBkZWYgaGFu
ZGxlQ29sbGVjdGlvbihjb2xsZWN0aW9uKQogICAgIGVuZAogZW5kCiAKLUFSR1YuZWFjaCB7Ci0g
ICAgfCBjb2xsZWN0aW9uIHwKLSAgICBoYW5kbGVDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCi19Ci0K
IGRlZiBhcHBlbmRGYWlsdXJlKHBsYW4pCiAgICAgRmlsZS5vcGVuKCRvdXRwdXREaXIgKyAiZmFp
bGVkIiwgImEiKSB7CiAgICAgICAgIHwgb3V0cCB8CkBAIC03MzEsNiArODQxLDEyNiBAQCBkZWYg
YXBwZW5kRmFpbHVyZShwbGFuKQogICAgICRudW1GYWlsdXJlcyArPSAxCiBlbmQKIAorZGVmIHBy
ZXBhcmVCdW5kbGUKKyAgICByYWlzZSBpZiAkYnVuZGxlCisKKyAgICBjb3B5Vk1Ub0J1bmRsZQor
CisgICAgQVJHVi5lYWNoIHsKKyAgICAgICAgfCBjb2xsZWN0aW9uIHwKKyAgICAgICAgaGFuZGxl
Q29sbGVjdGlvbihjb2xsZWN0aW9uKQorICAgIH0KK2VuZAorCitkZWYgY2xlYW5PbGRSZXN1bHRz
CisgICAgcmFpc2UgdW5sZXNzICRidW5kbGUKKworICAgIGVhY2hSZXN1bHRGaWxlKCRvdXRwdXRE
aXIpIHsKKyAgICAgICAgfCBwYXRoIHwKKyAgICAgICAgRmlsZVV0aWxzLnJtX2YgcGF0aAorICAg
IH0KK2VuZAorCitkZWYgY2xlYW5FbXB0eVJlc3VsdEZpbGVzCisgICAgZWFjaFJlc3VsdEZpbGUo
JG91dHB1dERpcikgeworICAgICAgICB8IHBhdGggfAorICAgICAgICBuZXh0IHVubGVzcyBwYXRo
LmJhc2VuYW1lLnRvX3MgPX4gL1wub3V0JC8KKyAgICAgICAgbmV4dCB1bmxlc3MgRmlsZVRlc3Qu
c2l6ZShwYXRoKSA9PSAwCisgICAgICAgIEZpbGVVdGlscy5ybV9mIHBhdGgKKyAgICB9CitlbmQK
KworZGVmIGVhY2hSZXN1bHRGaWxlKHN0YXJ0aW5nRGlyLCAmYmxvY2spCisgICAgZGlyc1RvQ2xl
YW4gPSBbc3RhcnRpbmdEaXJdCisgICAgdW50aWwgZGlyc1RvQ2xlYW4uZW1wdHk/IGRvCisgICAg
ICAgIG5leHREaXIgPSBkaXJzVG9DbGVhbi5wb3AKKyAgICAgICAgRGlyLmZvcmVhY2gobmV4dERp
cikgeworICAgICAgICAgICAgfCBlbnRyeSB8CisgICAgICAgICAgICBuZXh0IGlmIGVudHJ5ID1+
IC9eXC4vCisgICAgICAgICAgICBwYXRoID0gbmV4dERpciArIGVudHJ5CisgICAgICAgICAgICBp
ZiBwYXRoLmRpcmVjdG9yeT8KKyAgICAgICAgICAgICAgICBkaXJzVG9DbGVhbi5wdXNoKHBhdGgp
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYmxvY2suY2FsbChwYXRoKQorICAg
ICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYgcHJlcGFyZVBhcmFs
bGVsVGVzdFJ1bm5lcgorICAgICMgVGhlIGdvYWxzIG9mIG91ciBwYXJhbGxlbCB0ZXN0IHJ1bm5l
ciBhcmUgc2NhbGFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuIFRoZQorICAgICMgc2ltcGxpY2l0eSBw
YXJ0IGlzIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQuIFdlIGRvbid0IHdhbnQgdG8gaGF2ZSB0byBo
YXZlCisgICAgIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFi
b3V0IHBhcmFsbGVsIHRlc3RpbmcuCisgICAgIworICAgICMgQXMgc3VjaCwgd2UganVzdCBwYXNz
IG9mZiBhbGwgb2YgdGhlIGhhcmQgd29yayB0byAnbWFrZScuIFRoaXMgY3JlYXRlcyBhCisgICAg
IyBkdW1teSBkaXJlY3RvcnkgKCIkb3V0cHV0RGlyLy5wYXJhbGxlbCIpIGluIHdoaWNoIHdlIGNy
ZWF0ZSBhIGR1bW15CisgICAgIyBNYWtlZmlsZS4gVGhlIE1ha2VmaWxlIGhhcyBhbiAnYWxsJyBy
dWxlIHRoYXQgZGVwZW5kcyBvbiBhbGwgb2YgdGhlIHRlc3RzLgorICAgICMgVGhhdCBpcywgZm9y
IGVhY2ggdGVzdCB3ZSBrbm93IHdlIHdpbGwgcnVuLCB0aGVyZSBpcyBhIHJ1bGUgaW4gdGhlCisg
ICAgIyBNYWtlZmlsZSBhbmQgJ2FsbCcgZGVwZW5kcyBvbiBpdC4gUnVubmluZyAnbWFrZSAtaiA8
d2hhdGV2ZXI+JyBvbiB0aGlzCisgICAgIyBNYWtlZmlsZSByZXN1bHRzIGluICdtYWtlJyBkb2lu
ZyBhbGwgb2YgdGhlIGhhcmQgd29yazoKKyAgICAjCisgICAgIyAtIExvYWQgYmFsYW5jaW5nIGp1
c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQgbG9hZCBiYWxhbmNlciBpbgorICAg
ICMgICAnbWFrZScuIElmIHlvdXIgc3lzdGVtIGRvZXNuJ3QgdGhlbiBqdXN0IGluc3RhbGwgYSBy
ZWFsICdtYWtlJy4KKyAgICAjCisgICAgIyAtIEludGVycnVwdGlvbnMganVzdCB3b3JrLiBGb3Ig
ZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlzCisgICAgIyAgIGV4YWN0bHkgcmln
aHQuIFlvdSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHpvbWJpZSBwcm9jZXNzZXMuCisgICAg
IworICAgICMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9u
IHdvcmsgYW5kIHRvIG1ha2UgdGhpcworICAgICMgdG90YWxseSBzb3VuZC4gSWYgYSB0ZXN0IGZh
aWxzLCB3ZSBkb24ndCB3YW50IHRoZSB3aG9sZSAnbWFrZScgam9iIHRvCisgICAgIyBzdG9wLiBX
ZSBhbHNvIGRvbid0IGhhdmUgYW55IGZhY2lsaXR5IGZvciBtYWtlZmlsZS1lc2NhcGluZyBvZiBw
YXRoIG5hbWVzLgorICAgICMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2Fw
aW5nLCB0aG91Z2guIFdlIGZpeCBib3RoIHByb2JsZW1zCisgICAgIyBieSBoYXZpbmcgdGhlIGFj
dHVhbCB3b3JrIGZvciBlYWNoIG9mIHRoZSB0ZXN0IHJ1bGVzIGJlIGRvbmUgaW4gYSBzaGVsbAor
ICAgICMgc2NyaXB0IG9uIHRoZSBzaWRlLiBUaGVyZSBpcyBvbmUgc3VjaCBzY3JpcHQgcGVyIHRl
c3QuIFRoZSBzY3JpcHQgcmVzcG9uZHMKKyAgICAjIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29t
ZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0aGVuIHRvdWNoaW5nIGEKKyAgICAjIGZhaWx1cmUg
ZmlsZSBmb3IgdGhhdCB0ZXN0LCBidXQgdGhlbiBzdGlsbCByZXR1cm5zIDAuIFRoaXMgbWFrZXMg
J21ha2UnCisgICAgIyBjb250aW51ZSBwYXN0IHRoYXQgZmFpbHVyZSBhbmQgY29tcGxldGUgYWxs
IHRoZSB0ZXN0cyBhbnl3YXkuCisgICAgIworICAgICMgSW4gdGhlIGVuZCwgdGhpcyBzY3JpcHQg
Y29sbGVjdHMgYWxsIG9mIHRoZSBmYWlsdXJlcyBieSBzZWFyY2hpbmcgZm9yCisgICAgIyBmaWxl
cyBpbiB0aGUgLnBhcmFsbGVsIGRpcmVjdG9yeSB3aG9zZSBuYW1lIG1hdGNoZXMgL150ZXN0X2Zh
aWxfLywgd2hlcmUKKyAgICAjIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0aGUgdGVz
dCBpbmRleC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0CisgICAgIyB3b3VsZCBiZSBjcmVhdGVk
IGJ5IHRoZSB0ZXN0IHNjcmlwdHMgaWYgdGhleSBkZXRlY3QgZmFpbHVyZS4gV2UncmUKKyAgICAj
IGJhc2ljYWxseSB1c2luZyB0aGUgZmlsZXN5c3RlbSBhcyBhIGNvbmN1cnJlbnQgZGF0YWJhc2Ug
b2YgdGVzdCBmYWlsdXJlcy4KKyAgICAjIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNh
bWUgdGltZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKKyAgICAjIGZpbGVzIHdl
IHdvbid0IG1pc3MgYW55IGZhaWx1cmVzLgorICAgIAorICAgIHJ1bkluZGljZXMgPSBbXQorICAg
ICRydW5saXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgcGxhbiwgaW5kZXggfAorICAg
ICAgICBydW5JbmRpY2VzIDw8IGluZGV4CisgICAgICAgIHBsYW4uaW5kZXggPSBpbmRleAorICAg
IH0KKyAgICAKKyAgICBEaXIubWtkaXIoJHBhcmFsbGVsRGlyKSB1bmxlc3MgJHBhcmFsbGVsRGly
LmRpcmVjdG9yeT8KKyAgICB0b0RlbGV0ZSA9IFtdCisgICAgRGlyLmZvcmVhY2goJHBhcmFsbGVs
RGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBpZiBmaWxlbmFtZSA9fiAvXnRl
c3RfLworICAgICAgICAgICAgdG9EZWxldGUgPDwgZmlsZW5hbWUKKyAgICAgICAgZW5kCisgICAg
fQorICAgIAorICAgIHRvRGVsZXRlLmVhY2ggeworICAgICAgICB8IGZpbGVuYW1lIHwKKyAgICAg
ICAgRmlsZS51bmxpbmsoJHBhcmFsbGVsRGlyICsgZmlsZW5hbWUpCisgICAgfQorCisgICAgJHJ1
bmxpc3QuZWFjaCB7CisgICAgICAgIHwgcGxhbiB8CisgICAgICAgIHBsYW4ud3JpdGVSdW5TY3Jp
cHQoJHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQorICAgIH0KKyAg
ICAKKyAgICBGaWxlLm9wZW4oJHBhcmFsbGVsRGlyICsgIk1ha2VmaWxlIiwgInciKSB7CisgICAg
ICAgIHwgb3V0cCB8CisgICAgICAgIG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7
fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9LmpvaW4oJyAnKSkKKyAgICAgICAgcnVuSW5kaWNlcy5lYWNo
IHsKKyAgICAgICAgICAgIHwgaW5kZXggfAorICAgICAgICAgICAgcGxhbiA9ICRydW5saXN0W2lu
ZGV4XQorICAgICAgICAgICAgb3V0cC5wdXRzICJ0ZXN0X2RvbmVfI3tpbmRleH06IgorICAgICAg
ICAgICAgb3V0cC5wdXRzICJcdHNoIHRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iCisgICAgICAg
IH0KKyAgICB9CitlbmQKKwogaWYgJGVuYWJsZUZUTCBhbmQgRU5WWyJKU0NfdGltZW91dCJdCiAg
ICAgIyBDdXJyZW50bHksIHVzaW5nIHRoZSBGVEwgaXMgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9u
IHBhcnRpY3VsYXJseSBpbiByZWFsCiAgICAgIyAoaS5lLiBub24tbG9vcHkpIGJlbmNobWFya3Mu
IEFjY291bnQgZm9yIHRoaXMgaW4gdGhlIHRpbWVvdXQuCkBAIC03NDIsMTU0ICs5NzIsMTE3IEBA
IGlmIEVOVlsiSlNDX3RpbWVvdXQiXQogICAgICMgSW5jcmVhc2UgdGhlIHRpbWVvdXQgcHJvcG9y
dGlvbmFsbHkgdG8gdGhlIG51bWJlciBvZiBwcm9jZXNzb3JzLgogICAgIEVOVlsiSlNDX3RpbWVv
dXQiXSA9IChFTlZbIkpTQ190aW1lb3V0Il0udG9faS50b19mICogTWF0aC5zcXJ0KCRudW1Qcm9j
ZXNzb3JzKSkudG9faS50b19zCiBlbmQKLQotIyBUaGUgZ29hbHMgb2Ygb3VyIHBhcmFsbGVsIHRl
c3QgcnVubmVyIGFyZSBzY2FsYWJpbGl0eSBhbmQgc2ltcGxpY2l0eS4gVGhlCi0jIHNpbXBsaWNp
dHkgcGFydCBpcyBwYXJ0aWN1bGFybHkgaW1wb3J0YW50LiBXZSBkb24ndCB3YW50IHRvIGhhdmUg
dG8gaGF2ZQotIyBhIGZ1bGwtdGltZSBjb250cmlidXRvciBqdXN0IHBoaWxvc29waGlzaW5nIGFi
b3V0IHBhcmFsbGVsIHRlc3RpbmcuCi0jCi0jIEFzIHN1Y2gsIHdlIGp1c3QgcGFzcyBvZmYgYWxs
IG9mIHRoZSBoYXJkIHdvcmsgdG8gJ21ha2UnLiBUaGlzIGNyZWF0ZXMgYQotIyBkdW1teSBkaXJl
Y3RvcnkgKCIkb3V0cHV0RGlyLy5wYXJhbGxlbCIpIGluIHdoaWNoIHdlIGNyZWF0ZSBhIGR1bW15
Ci0jIE1ha2VmaWxlLiBUaGUgTWFrZWZpbGUgaGFzIGFuICdhbGwnIHJ1bGUgdGhhdCBkZXBlbmRz
IG9uIGFsbCBvZiB0aGUgdGVzdHMuCi0jIFRoYXQgaXMsIGZvciBlYWNoIHRlc3Qgd2Uga25vdyB3
ZSB3aWxsIHJ1biwgdGhlcmUgaXMgYSBydWxlIGluIHRoZQotIyBNYWtlZmlsZSBhbmQgJ2FsbCcg
ZGVwZW5kcyBvbiBpdC4gUnVubmluZyAnbWFrZSAtaiA8d2hhdGV2ZXI+JyBvbiB0aGlzCi0jIE1h
a2VmaWxlIHJlc3VsdHMgaW4gJ21ha2UnIGRvaW5nIGFsbCBvZiB0aGUgaGFyZCB3b3JrOgotIwot
IyAtIExvYWQgYmFsYW5jaW5nIGp1c3Qgd29ya3MuIE1vc3Qgc3lzdGVtcyBoYXZlIGEgZ3JlYXQg
bG9hZCBiYWxhbmNlciBpbgotIyAgICdtYWtlJy4gSWYgeW91ciBzeXN0ZW0gZG9lc24ndCB0aGVu
IGp1c3QgaW5zdGFsbCBhIHJlYWwgJ21ha2UnLgotIwotIyAtIEludGVycnVwdGlvbnMganVzdCB3
b3JrLiBGb3IgZXhhbXBsZSBDdHJsLUMgaGFuZGxpbmcgaW4gJ21ha2UnIGlzCi0jICAgZXhhY3Rs
eSByaWdodC4gWW91IGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgem9tYmllIHByb2Nlc3Nlcy4K
LSMKLSMgV2UgdGhlbiBkbyBzb21lIHRyaWNrcyB0byBtYWtlIGZhaWx1cmUgZGV0ZWN0aW9uIHdv
cmsgYW5kIHRvIG1ha2UgdGhpcwotIyB0b3RhbGx5IHNvdW5kLiBJZiBhIHRlc3QgZmFpbHMsIHdl
IGRvbid0IHdhbnQgdGhlIHdob2xlICdtYWtlJyBqb2IgdG8KLSMgc3RvcC4gV2UgYWxzbyBkb24n
dCBoYXZlIGFueSBmYWNpbGl0eSBmb3IgbWFrZWZpbGUtZXNjYXBpbmcgb2YgcGF0aCBuYW1lcy4K
LSMgV2UgZG8gaGF2ZSBzdWNoIGEgdGhpbmcgZm9yIHNoZWxsLWVzY2FwaW5nLCB0aG91Z2guIFdl
IGZpeCBib3RoIHByb2JsZW1zCi0jIGJ5IGhhdmluZyB0aGUgYWN0dWFsIHdvcmsgZm9yIGVhY2gg
b2YgdGhlIHRlc3QgcnVsZXMgYmUgZG9uZSBpbiBhIHNoZWxsCi0jIHNjcmlwdCBvbiB0aGUgc2lk
ZS4gVGhlcmUgaXMgb25lIHN1Y2ggc2NyaXB0IHBlciB0ZXN0LiBUaGUgc2NyaXB0IHJlc3BvbmRz
Ci0jIHRvIGZhaWx1cmUgYnkgcHJpbnRpbmcgc29tZXRoaW5nIG9uIHRoZSBjb25zb2xlIGFuZCB0
aGVuIHRvdWNoaW5nIGEKLSMgZmFpbHVyZSBmaWxlIGZvciB0aGF0IHRlc3QsIGJ1dCB0aGVuIHN0
aWxsIHJldHVybnMgMC4gVGhpcyBtYWtlcyAnbWFrZScKLSMgY29udGludWUgcGFzdCB0aGF0IGZh
aWx1cmUgYW5kIGNvbXBsZXRlIGFsbCB0aGUgdGVzdHMgYW55d2F5LgotIwotIyBJbiB0aGUgZW5k
LCB0aGlzIHNjcmlwdCBjb2xsZWN0cyBhbGwgb2YgdGhlIGZhaWx1cmVzIGJ5IHNlYXJjaGluZyBm
b3IKLSMgZmlsZXMgaW4gdGhlIC5wYXJhbGxlbCBkaXJlY3Rvcnkgd2hvc2UgbmFtZSBtYXRjaGVz
IC9edGVzdF9mYWlsXy8sIHdoZXJlCi0jIHRoZSB0aGluZyBhZnRlciB0aGUgJ2ZhaWxfJyBpcyB0
aGUgdGVzdCBpbmRleC4gVGhvc2UgYXJlIHRoZSBmaWxlcyB0aGF0Ci0jIHdvdWxkIGJlIGNyZWF0
ZWQgYnkgdGhlIHRlc3Qgc2NyaXB0cyBpZiB0aGV5IGRldGVjdCBmYWlsdXJlLiBXZSdyZQotIyBi
YXNpY2FsbHkgdXNpbmcgdGhlIGZpbGVzeXN0ZW0gYXMgYSBjb25jdXJyZW50IGRhdGFiYXNlIG9m
IHRlc3QgZmFpbHVyZXMuCi0jIEV2ZW4gaWYgdHdvIHRlc3RzIGZhaWwgYXQgdGhlIHNhbWUgdGlt
ZSwgc2luY2UgdGhleSdyZSB0b3VjaGluZyBkaWZmZXJlbnQKLSMgZmlsZXMgd2Ugd29uJ3QgbWlz
cyBhbnkgZmFpbHVyZXMuCi0KLXJ1bkluZGljZXMgPSBbXQotJHJ1bmxpc3QuZWFjaF93aXRoX2lu
ZGV4IHsKLSAgICB8IHBsYW4sIGluZGV4IHwKLSAgICBydW5JbmRpY2VzIDw8IGluZGV4Ci0gICAg
cGxhbi5pbmRleCA9IGluZGV4Ci19Ci0KLXBhcmFsbGVsRGlyID0gJG91dHB1dERpciArICIucGFy
YWxsZWwiCi1EaXIubWtkaXIocGFyYWxsZWxEaXIpIHVubGVzcyBwYXJhbGxlbERpci5kaXJlY3Rv
cnk/Ci10b0RlbGV0ZSA9IFtdCi1EaXIuZm9yZWFjaChwYXJhbGxlbERpcikgewotICAgIHwgZmls
ZW5hbWUgfAotICAgIGlmIGZpbGVuYW1lID1+IC9edGVzdF8vCi0gICAgICAgIHRvRGVsZXRlIDw8
IGZpbGVuYW1lCi0gICAgZW5kCi19Ci0KLXRvRGVsZXRlLmVhY2ggewotICAgIHwgZmlsZW5hbWUg
fAotICAgIEZpbGUudW5saW5rKHBhcmFsbGVsRGlyICsgZmlsZW5hbWUpCi19Ci0KKyAgICAKIHB1
dHMKIAotJHJ1bmxpc3QuZWFjaCB7Ci0gICAgfCBwbGFuIHwKLSAgICBwbGFuLndyaXRlUnVuU2Ny
aXB0KHBhcmFsbGVsRGlyICsgInRlc3Rfc2NyaXB0XyN7cGxhbi5pbmRleH0iKQotfQotCi1GaWxl
Lm9wZW4ocGFyYWxsZWxEaXIgKyAiTWFrZWZpbGUiLCAidyIpIHsKLSAgICB8IG91dHAgfAotICAg
IG91dHAucHV0cygiYWxsOiAiICsgcnVuSW5kaWNlcy5tYXB7fHZ8ICJ0ZXN0X2RvbmVfI3t2fSJ9
LmpvaW4oJyAnKSkKLSAgICBydW5JbmRpY2VzLmVhY2ggewotICAgICAgICB8IGluZGV4IHwKLSAg
ICAgICAgcGxhbiA9ICRydW5saXN0W2luZGV4XQotICAgICAgICBvdXRwLnB1dHMgInRlc3RfZG9u
ZV8je2luZGV4fToiCi0gICAgICAgIG91dHAucHV0cyAiXHRzaCB0ZXN0X3NjcmlwdF8je3BsYW4u
aW5kZXh9IgorZGVmIGNsZWFuUGFyYWxsZWxEaXJlY3RvcnkKKyAgICByYWlzZSB1bmxlc3MgJGJ1
bmRsZQorICAgIERpci5mb3JlYWNoKCRwYXJhbGxlbERpcikgeworICAgICAgICB8IGZpbGVuYW1l
IHwKKyAgICAgICAgbmV4dCB1bmxlc3MgZmlsZW5hbWUgPX4gL150ZXN0X2ZhaWwvCisgICAgICAg
IEZpbGVVdGlscy5ybV9mICRwYXJhbGxlbERpciArIGZpbGVuYW1lCiAgICAgfQotfQorZW5kCiAK
LURpci5jaGRpcihwYXJhbGxlbERpcikgewotICAgIHVubGVzcyAkcHJvZ3Jlc3NNZXRlcgotICAg
ICAgICBteXN5cygibWFrZSIsICItaiIsICRudW1Qcm9jZXNzb3JzLnRvX3MsICItcyIsICItZiIs
ICJNYWtlZmlsZSIpCi0gICAgZWxzZQotICAgICAgICBjbWQgPSAibWFrZSAtaiAjeyRudW1Qcm9j
ZXNzb3JzfSAtcyAtZiBNYWtlZmlsZSIKLSAgICAgICAgcnVubmluZyA9IHt9Ci0gICAgICAgIGRp
ZFJ1biA9IHt9Ci0gICAgICAgIGRpZEZhaWwgPSB7fQotICAgICAgICBibGFua0xpbmUgPSB0cnVl
Ci0gICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSAwCi0gICAgICAgIElPLnBvcGVuKGNtZCwgInIi
KSB7Ci0gICAgICAgICAgICB8IGlucCB8Ci0gICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsKLSAg
ICAgICAgICAgICAgICB8IGxpbmUgfAotICAgICAgICAgICAgICAgIGxpbmUuY2hvbXAhCi0gICAg
ICAgICAgICAgICAgaWYgbGluZSA9fiAvXlJ1bm5pbmcgLwotICAgICAgICAgICAgICAgICAgICBy
dW5uaW5nWyR+LnBvc3RfbWF0Y2hdID0gdHJ1ZQotICAgICAgICAgICAgICAgIGVsc2lmIGxpbmUg
PX4gL15QQVNTOiAvCi0gICAgICAgICAgICAgICAgICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9
IHRydWUKLSAgICAgICAgICAgICAgICBlbHNpZiBsaW5lID1+IC9eRkFJTDogLwotICAgICAgICAg
ICAgICAgICAgICBkaWRSdW5bJH4ucG9zdF9tYXRjaF0gPSB0cnVlCi0gICAgICAgICAgICAgICAg
ICAgIGRpZEZhaWxbJH4ucG9zdF9tYXRjaF0gPSB0cnVlCi0gICAgICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgICAgICB1bmxlc3MgYmxhbmtMaW5lCi0gICAgICAgICAgICAgICAgICAg
ICAgICBwcmludCgiXHIiICsgIiAiICogcHJldlN0cmluZ0xlbmd0aCArICJcciIpCi0gICAgICAg
ICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICAgICBwdXRzIGxpbmUKLSAgICAgICAg
ICAgICAgICAgICAgYmxhbmtMaW5lID0gdHJ1ZQotICAgICAgICAgICAgICAgIGVuZAotICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGRlZiBscGFkKHN0ciwgY2hhcnMpCi0gICAgICAg
ICAgICAgICAgICAgIHN0ciA9IHN0ci50b19zCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0ci5s
ZW5ndGggPiBjaGFycwotICAgICAgICAgICAgICAgICAgICAgICAgc3RyCitkZWYgcnVuUGFyYWxs
ZWxUZXN0UnVubmVyCisgICAgRGlyLmNoZGlyKCRwYXJhbGxlbERpcikgeworICAgICAgICAjIC0x
IGZvciB0aGUgTWFrZWZpbGUsIGFuZCAtMiBmb3IgJy4uJyBhbmQgJy4nCisgICAgICAgIG51bWJl
ck9mVGVzdHMgPSBEaXIuZW50cmllcygiLiIpLmNvdW50IC0gMworICAgICAgICB1bmxlc3MgJHBy
b2dyZXNzTWV0ZXIKKyAgICAgICAgICAgIG15c3lzKCJtYWtlIiwgIi1qIiwgJG51bVByb2Nlc3Nv
cnMudG9fcywgIi1zIiwgIi1mIiwgIk1ha2VmaWxlIikKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY21kID0gIm1ha2UgLWogI3skbnVtUHJvY2Vzc29yc30gLXMgLWYgTWFrZWZpbGUiCisgICAg
ICAgICAgICBydW5uaW5nID0ge30KKyAgICAgICAgICAgIGRpZFJ1biA9IHt9CisgICAgICAgICAg
ICBkaWRGYWlsID0ge30KKyAgICAgICAgICAgIGJsYW5rTGluZSA9IHRydWUKKyAgICAgICAgICAg
IHByZXZTdHJpbmdMZW5ndGggPSAwCisgICAgICAgICAgICBJTy5wb3BlbihjbWQsICJyIikgewor
ICAgICAgICAgICAgICAgIHwgaW5wIHwKKyAgICAgICAgICAgICAgICBpbnAuZWFjaF9saW5lIHsK
KyAgICAgICAgICAgICAgICAgICAgfCBsaW5lIHwKKyAgICAgICAgICAgICAgICAgICAgbGluZS5j
aG9tcCEKKyAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9fiAvXlJ1bm5pbmcgLworICAgICAg
ICAgICAgICAgICAgICAgICAgcnVubmluZ1skfi5wb3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAg
ICAgICAgICAgICAgZWxzaWYgbGluZSA9fiAvXlBBU1M6IC8KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGRpZFJ1blskfi5wb3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgZWxz
aWYgbGluZSA9fiAvXkZBSUw6IC8KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZFJ1blskfi5w
b3N0X21hdGNoXSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZEZhaWxbJH4ucG9z
dF9tYXRjaF0gPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgICAgICIlI3tjaGFyc31zIiUoc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgdW5s
ZXNzIGJsYW5rTGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJcciIgKyAi
ICIgKiBwcmV2U3RyaW5nTGVuZ3RoICsgIlxyIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgICAgICAgICAgICAgcHV0cyBsaW5lCisgICAgICAgICAgICAgICAgICAg
ICAgICBibGFua0xpbmUgPSB0cnVlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZGVmIGxwYWQoc3RyLCBjaGFycykKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci50b19zCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiBzdHIubGVuZ3RoID4gY2hhcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dHIKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiJSN7Y2hhcnN9cyIlKHN0cikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICBlbmQKKyAgICAKKyAgICAgICAgICAgICAgICAgICAgc3RyaW5nICA9
ICIiCisgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSAiXHIje2xwYWQoZGlkUnVuLnNpemUs
IG51bWJlck9mVGVzdHMudG9fcy5zaXplKX0vI3tudW1iZXJPZlRlc3RzfSIKKyAgICAgICAgICAg
ICAgICAgICAgdW5sZXNzIGRpZEZhaWwuZW1wdHk/CisgICAgICAgICAgICAgICAgICAgICAgICBz
dHJpbmcgKz0gIiAoZmFpbGVkICN7ZGlkRmFpbC5zaXplfSkiCisgICAgICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIiAiCisgICAgICAgICAgICAgICAg
ICAgIChydW5uaW5nLnNpemUgLSBkaWRSdW4uc2l6ZSkudGltZXMgeworICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaW5nICs9ICIuIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlmIHN0cmluZy5sZW5ndGggPCBwcmV2U3RyaW5nTGVuZ3RoCisgICAgICAgICAg
ICAgICAgICAgICAgICBwcmludCBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50
KCIgIiAqIChwcmV2U3RyaW5nTGVuZ3RoIC0gc3RyaW5nLmxlbmd0aCkpCiAgICAgICAgICAgICAg
ICAgICAgIGVuZAotICAgICAgICAgICAgICAgIGVuZAotCi0gICAgICAgICAgICAgICAgc3RyaW5n
ICA9ICIiCi0gICAgICAgICAgICAgICAgc3RyaW5nICs9ICJcciN7bHBhZChkaWRSdW4uc2l6ZSwg
JHJ1bmxpc3Quc2l6ZS50b19zLnNpemUpfS8jeyRydW5saXN0LnNpemV9IgotICAgICAgICAgICAg
ICAgIHVubGVzcyBkaWRGYWlsLmVtcHR5PwotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0g
IiAoZmFpbGVkICN7ZGlkRmFpbC5zaXplfSkiCi0gICAgICAgICAgICAgICAgZW5kCi0gICAgICAg
ICAgICAgICAgc3RyaW5nICs9ICIgIgotICAgICAgICAgICAgICAgIChydW5uaW5nLnNpemUgLSBk
aWRSdW4uc2l6ZSkudGltZXMgewotICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gIi4iCi0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIHN0cmluZy5sZW5ndGggPCBwcmV2
U3RyaW5nTGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgIHByaW50IHN0cmluZwotICAgICAgICAg
ICAgICAgICAgICBwcmludCgiICIgKiAocHJldlN0cmluZ0xlbmd0aCAtIHN0cmluZy5sZW5ndGgp
KQotICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgIHByaW50IHN0cmluZwotICAg
ICAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoCi0gICAgICAgICAg
ICAgICAgYmxhbmtMaW5lID0gZmFsc2UKLSAgICAgICAgICAgICAgICAkc3Rkb3V0LmZsdXNoCisg
ICAgICAgICAgICAgICAgICAgIHByZXZTdHJpbmdMZW5ndGggPSBzdHJpbmcubGVuZ3RoCisgICAg
ICAgICAgICAgICAgICAgIGJsYW5rTGluZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgICRz
dGRvdXQuZmx1c2gKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0K
LSAgICAgICAgcHV0cwotICAgICAgICByYWlzZSAiRmFpbGVkIHRvIHJ1biAje2NtZH06ICN7JD8u
aW5zcGVjdH0iIHVubGVzcyAkPy5zdWNjZXNzPwotICAgIGVuZAotfQorICAgICAgICAgICAgcHV0
cworICAgICAgICAgICAgcmFpc2UgIkZhaWxlZCB0byBydW4gI3tjbWR9OiAjeyQ/Lmluc3BlY3R9
IiB1bmxlc3MgJD8uc3VjY2Vzcz8KKyAgICAgICAgZW5kCisgICAgfQorZW5kCiAKLSMgRGVsZXRl
IGVtcHR5IC5vdXQgZmlsZXMgdG8gbWFrZSBsaWZlIGxlc3MgY29uZnVzaW5nLgotJHJ1bmxpc3Qu
ZWFjaCB7Ci0gICAgfCBwbGFuIHwKLSAgICBvdXRwdXRGaWxlbmFtZSA9ICRvdXRwdXREaXIgKyAo
cGxhbi5uYW1lICsgIi5vdXQiKQotICAgIEZpbGUudW5saW5rIG91dHB1dEZpbGVuYW1lIGlmIEZp
bGVUZXN0LnNpemUob3V0cHV0RmlsZW5hbWUpID09IDAKLX0KK2RlZiBkZXRlY3RGYWlsdXJlcwor
ICAgIHJhaXNlIGlmICRidW5kbGUKIAotRGlyLmZvcmVhY2gocGFyYWxsZWxEaXIpIHsKLSAgICB8
IGZpbGVuYW1lIHwKLSAgICBuZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVzdF9mYWlsXy8KLSAg
ICBhcHBlbmRGYWlsdXJlKCRydW5saXN0WyR+LnBvc3RfbWF0Y2gudG9faV0pCi19CisgICAgRGly
LmZvcmVhY2goJHBhcmFsbGVsRGlyKSB7CisgICAgICAgIHwgZmlsZW5hbWUgfAorICAgICAgICBu
ZXh0IHVubGVzcyBmaWxlbmFtZSA9fiAvdGVzdF9mYWlsXy8KKyAgICAgICAgYXBwZW5kRmFpbHVy
ZSgkcnVubGlzdFskfi5wb3N0X21hdGNoLnRvX2ldKQorICAgIH0KK2VuZAorCitkZWYgY29tcHJl
c3NCdW5kbGUKKyAgICBjbWQgPSAiY2QgI3skb3V0cHV0RGlyfS8uLiAmJiB0YXIgLWN6ZiBwYXls
b2FkLnRhci5neiAjeyRvdXRwdXREaXIuYmFzZW5hbWV9IgorICAgICRzdGRlcnIucHV0cyAiPj4g
I3tjbWR9IiBpZiAkdmVyYm9zaXR5ID49IDIKKyAgICByYWlzZSB1bmxlc3Mgc3lzdGVtKGNtZCkK
K2VuZAorCitGaWxlVXRpbHMucm1fcmYgJG91dHB1dERpciBpZiAkb3V0cHV0RGlyLmRpcmVjdG9y
eT8gYW5kIG5vdCAkYnVuZGxlCitEaXIubWtkaXIoJG91dHB1dERpcikgdW5sZXNzICRvdXRwdXRE
aXIuZGlyZWN0b3J5PworCitiZWdpbgorICAgIEZpbGUuZGVsZXRlKCRvdXRwdXREaXIgKyAiZmFp
bGVkIikKK3Jlc2N1ZQorZW5kCisKKyRvdXRwdXREaXIgPSAkb3V0cHV0RGlyLnJlYWxwYXRoCisk
cGFyYWxsZWxEaXIgPSAkb3V0cHV0RGlyICsgIi5wYXJhbGxlbCIKKworcHJlcGFyZUJ1bmRsZSB1
bmxlc3MgJGJ1bmRsZQorcHJlcGFyZVBhcmFsbGVsVGVzdFJ1bm5lciB1bmxlc3MgJGJ1bmRsZQor
Y2xlYW5QYXJhbGxlbERpcmVjdG9yeSBpZiAkYnVuZGxlCitjbGVhbk9sZFJlc3VsdHMgaWYgJGJ1
bmRsZQorcnVuUGFyYWxsZWxUZXN0UnVubmVyCitjbGVhbkVtcHR5UmVzdWx0RmlsZXMKK2RldGVj
dEZhaWx1cmVzIHVubGVzcyAkYnVuZGxlCitjb21wcmVzc0J1bmRsZSBpZiAkdGFyYmFsbApJbmRl
eDogVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVycy9jaGVjay1tb3ppbGxhLWZh
aWx1cmUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9qc2Mtc3RyZXNzLXRlc3QtaGVscGVy
cy9jaGVjay1tb3ppbGxhLWZhaWx1cmUJKHJldmlzaW9uIDE1OTkzMykKKysrIFRvb2xzL1Njcmlw
dHMvanNjLXN0cmVzcy10ZXN0LWhlbHBlcnMvY2hlY2stbW96aWxsYS1mYWlsdXJlCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDM0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHJ1YnkKLQotIyBDb3B5cmln
aHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0jIGFyZSBtZXQ6Ci0jCi0jIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAK
LSMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0jICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSMK
LSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKLSMgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotIyBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0j
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSMgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotIyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSMgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0jIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLUZpbGUub3BlbihBUkdWWzBdLCAiciIpIHsKLSAgICB8
IGlucCB8Ci0gICAgaW5wLmVhY2hfbGluZSB7Ci0gICAgICAgIHwgbGluZSB8Ci0gICAgICAgIGV4
aXQgMCBpZiBsaW5lID1+IC9mYWlsZWQhL2kKLSAgICB9Ci19Ci0KLWV4aXQgMQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>