<?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>78171</bug_id>
          
          <creation_ts>2012-02-08 16:00:48 -0800</creation_ts>
          <short_desc>webkitpy: start cleaning up manager_worker_broker in prep for reuse by test-webkitpy</short_desc>
          <delta_ts>2012-02-23 14:16:52 -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>New Bugs</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>78565</dependson>
    
    <dependson>78568</dependson>
    
    <dependson>78572</dependson>
          <blocked>78185</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>552575</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 16:00:48 -0800</bug_when>
    <thetext>webkitpy: start cleaning up manager_worker_broker in prep for reuse by test-webkitpy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552577</commentid>
    <comment_count>1</comment_count>
      <attachid>126172</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 16:02:15 -0800</bug_when>
    <thetext>Created attachment 126172
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552619</commentid>
    <comment_count>2</comment_count>
      <attachid>126185</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 16:36:26 -0800</bug_when>
    <thetext>Created attachment 126185
move more logic into self._finish_initializing()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552622</commentid>
    <comment_count>3</comment_count>
      <attachid>126185</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-08 16:40:43 -0800</bug_when>
    <thetext>Comment on attachment 126185
move more logic into self._finish_initializing()

I&apos;m confused as to what exactly you&apos;re doing here.  Perhaps this patch is too big, or perhaps I&apos;m just not up-to-speed on this section of webkitpy.

I&apos;m also not sure we want to run test-webkitpy tests in parallel.  Excepting the integration tests, the execute in 23s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552624</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-08 16:41:59 -0800</bug_when>
    <thetext>They run in 51s with the integration tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>552649</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-08 17:04:41 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 126185 [details])
&gt; I&apos;m confused as to what exactly you&apos;re doing here.  Perhaps this patch is too big, or perhaps I&apos;m just not up-to-speed on this section of webkitpy.
&gt; 

I think it&apos;s probably the latter. Tony might be the best person to review this. 

Note that this change is worth doing even if we don&apos;t want to run stuff in parallel; it is just generally making things cleaner.

Also, as far as running in 53s or not, I don&apos;t know about you, but I would rather things ran faster if possible :). Any particular reason you&apos;d be concerned about stuff running in parallel?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553234</commentid>
    <comment_count>6</comment_count>
      <attachid>126185</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-09 09:42:27 -0800</bug_when>
    <thetext>Comment on attachment 126185
move more logic into self._finish_initializing()

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

&gt; Tools/ChangeLog:19
&gt; +        * Scripts/webkitpy/layout_tests/controllers/manager.py:
&gt; +        (Manager._run_tests):
&gt; +        * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
&gt; +        (get):
&gt; +        (AbstractWorker.__init__):
&gt; +        (AbstractWorker.run):

I also skimmed this yesterday and it wasn&apos;t obvious to me what the change was doing (lots of code is moving). It would be helpful if you filled in this part and below with the specific changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553377</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-09 11:52:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I also skimmed this yesterday and it wasn&apos;t obvious to me what the change was doing (lots of code is moving). It would be helpful if you filled in this part and below with the specific changes.

Will do. I will take another look; it may be better to split this into multiple patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553602</commentid>
    <comment_count>8</comment_count>
      <attachid>126401</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-09 16:20:54 -0800</bug_when>
    <thetext>Created attachment 126401
clean up, annotate changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553605</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-09 16:22:03 -0800</bug_when>
    <thetext>Okay, turns out that it doesn&apos;t make much sense to try and split this into multiple patches, so I have attempted to annotate the heck out of the changelog instead. Please take another look, and let me know if that is enough of a field guide?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553713</commentid>
    <comment_count>10</comment_count>
      <attachid>126401</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-02-09 18:42:05 -0800</bug_when>
    <thetext>Comment on attachment 126401
clean up, annotate changelog

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

I mostly skimmed the patch (I don&apos;t have a big picture sense of the code moves), but tried to give some ideas on how to split it up.

&gt; Tools/ChangeLog:12
&gt; +        I want to be able to re-use the worker queue logic from
&gt; +        new-run-webkit-tests in test-webkitpy. In order to do this I
&gt; +        need to remove all of the NRWT-specific logic from the worker
&gt; +        queue, and refactor things a bit so the interface is simpler.
&gt; +        This is the first of several patches for that.

Maybe drop most of this text and focus on how this simplifies the interface.

&gt; Tools/ChangeLog:20
&gt; +        With this patch message_broker.py and manager_worker_broker.py
&gt; +        no longer depend on an options argument (it was only using the
&gt; +        worker_model flag, which is now a string argument to get()), no
&gt; +        longer depends on being handed a Port object, no longer constructs
&gt; +        Host objects in the child processes, and now passes a set of
&gt; +        keyword args to start_worker() instead of a hard-coded list of
&gt; +        NRWT-specific args.

Could each of these (or maybe a couple at a time) be a separate patch?

&gt; Tools/ChangeLog:24
&gt; +

Nit: blank line?

&gt; Tools/ChangeLog:27
&gt; +        (get): take worker_model as an arg instead of options, remove
&gt; +        the runtime_options() function which wasn&apos;t used anyway.

Removing runtime_options could probably be a standalone patch.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:764
&gt; +            worker_connection = manager_connection.start_worker(worker_number, port=self._port,
&gt; +                options=self._options, results_directory=self.results_directory(),
&gt; +                real_port_name=self._port.real_name())

Why do we pass port and port.real_name()?

Rather than passing a dict as worker_args, I think it would be better to have a class.  It&apos;s hard for me to track what&apos;s in worker_args.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:144
&gt; +        self._inline_worker = _InlineWorkerConnection(self._broker,
&gt; +            self._client, self._worker_class, worker_number, port, **worker_args)

It looks like port is in worker_args.  It seems weird that we also pass it as a separate param.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:38
&gt; +# These are needed when workers are launched in new child processes.
&gt; +from webkitpy.common.host import Host
&gt; +from webkitpy.common.host_mock import MockHost

Do we normally comment why we have imports?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:74
&gt; +        if not port:
&gt; +            if &apos;test&apos; in self._real_port_name:
&gt; +                host = MockHost()
&gt; +            else:
&gt; +                host = Host()
&gt; +            host._initialize_scm()
&gt; +            port = host.port_factory.get(self._real_port_name, self._options)

This feels like testing code in the main class.  Is there a way to keep this in test files (maybe as a separate patch before this one)?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:93
&gt; +        self._driver = None

Why did this move?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:126
&gt;              self.cleanup()
&gt; +            self._printer.cleanup()

Should _printer.cleanup() be moved into cleanup()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555826</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-13 18:08:58 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 126401 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126401&amp;action=review
&gt; 
&gt; I mostly skimmed the patch (I don&apos;t have a big picture sense of the code moves), but tried to give some ideas on how to split it up.
&gt; 

Good feedback, thanks for the review!

&gt; &gt; Tools/ChangeLog:12
&gt; &gt; +        I want to be able to re-use the worker queue logic from
&gt; &gt; +        new-run-webkit-tests in test-webkitpy. In order to do this I
&gt; &gt; +        need to remove all of the NRWT-specific logic from the worker
&gt; &gt; +        queue, and refactor things a bit so the interface is simpler.
&gt; &gt; +        This is the first of several patches for that.
&gt; 
&gt; Maybe drop most of this text and focus on how this simplifies the interface.
&gt;

Will do.
 
&gt; &gt; Tools/ChangeLog:20
&gt; &gt; +        With this patch message_broker.py and manager_worker_broker.py
&gt; &gt; +        no longer depend on an options argument (it was only using the
&gt; &gt; +        worker_model flag, which is now a string argument to get()), no
&gt; &gt; +        longer depends on being handed a Port object, no longer constructs
&gt; &gt; +        Host objects in the child processes, and now passes a set of
&gt; &gt; +        keyword args to start_worker() instead of a hard-coded list of
&gt; &gt; +        NRWT-specific args.
&gt; 
&gt; Could each of these (or maybe a couple at a time) be a separate patch?
&gt;

Yeah, I can probably get at least two or three patches out of this.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:764
&gt; &gt; +            worker_connection = manager_connection.start_worker(worker_number, port=self._port,
&gt; &gt; +                options=self._options, results_directory=self.results_directory(),
&gt; &gt; +                real_port_name=self._port.real_name())
&gt; 
&gt; Why do we pass port and port.real_name()?
&gt; 

I don&apos;t think they&apos;re both needed now (this is left over from an earlier rev. Will clean up).

&gt; Rather than passing a dict as worker_args, I think it would be better to have a class.  It&apos;s hard for me to track what&apos;s in worker_args.
&gt;

Okay; it&apos;s a little weird in my mind since there&apos;s no required base interface for this, but I can do that for now.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:144
&gt; &gt; +        self._inline_worker = _InlineWorkerConnection(self._broker,
&gt; &gt; +            self._client, self._worker_class, worker_number, port, **worker_args)
&gt; 
&gt; It looks like port is in worker_args.  It seems weird that we also pass it as a separate param.
&gt; 

Will dig into this. port&apos;s role in this interface is unfortunately awkward :(

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:38
&gt; &gt; +# These are needed when workers are launched in new child processes.
&gt; &gt; +from webkitpy.common.host import Host
&gt; &gt; +from webkitpy.common.host_mock import MockHost
&gt; 
&gt; Do we normally comment why we have imports?
&gt; 

These particular ones have caused confusion in the past, since code shouldn&apos;t normally need to create Hosts.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:74
&gt; &gt; +        if not port:
&gt; &gt; +            if &apos;test&apos; in self._real_port_name:
&gt; &gt; +                host = MockHost()
&gt; &gt; +            else:
&gt; &gt; +                host = Host()
&gt; &gt; +            host._initialize_scm()
&gt; &gt; +            port = host.port_factory.get(self._real_port_name, self._options)
&gt; 
&gt; This feels like testing code in the main class.  Is there a way to keep this in test files (maybe as a separate patch before this one)?
&gt; 

No, unfortunately. That&apos;s part of the MockHost() issue, above

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:93
&gt; &gt; +        self._driver = None
&gt; 
&gt; Why did this move?
&gt; 

To clarify that it wasn&apos;t needed in __init__ (along with the other lines I deleted).

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:126
&gt; &gt;              self.cleanup()
&gt; &gt; +            self._printer.cleanup()
&gt; 
&gt; Should _printer.cleanup() be moved into cleanup()?

Probably a good idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>555931</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-13 21:21:24 -0800</bug_when>
    <thetext>Okay, I&apos;ve split this patch up into the three dependent bugs ... please take a look (bug 78565, bug 78568, bug 78572).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563470</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-02-23 14:16:52 -0800</bug_when>
    <thetext>closing ... the sub-bugs have all landed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126172</attachid>
            <date>2012-02-08 16:02:15 -0800</date>
            <delta_ts>2012-02-08 16:36:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78171-20120208160214.patch</filename>
            <type>text/plain</type>
            <size>24803</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2I4NjIyNDQwNmZkNDIwNWQ4MmY3YzhhMmQ5MTdkNmI1
MTk1YTQwNS4uMWYyZjA2NGY5NWEzYjU2OGE2OTQzZGVjOTMzZWFmMDY4MjVjNDM2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDEyLTAyLTA4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBzdGFydCBjbGVhbmluZyB1cCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIg
aW4gcHJlcCBmb3IgcmV1c2UgYnkgdGVzdC13ZWJraXRweQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHdhbnQgdG8gYmUgYWJsZSB0byByZS11c2UgdGhl
IHdvcmtlciBxdWV1ZSBsb2dpYyBmcm9tCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGlu
IHRlc3Qtd2Via2l0cHkuIEluIG9yZGVyIHRvIGRvIHRoaXMgSQorICAgICAgICBuZWVkIHRvIHJl
bW92ZSBhbGwgb2YgdGhlIE5SV1Qtc3BlY2lmaWMgbG9naWMgZnJvbSB0aGUgd29ya2VyCisgICAg
ICAgIHF1ZXVlLCBhbmQgcmVmYWN0b3IgdGhpbmdzIGEgYml0IHNvIHRoZSBpbnRlcmZhY2UgaXMg
c2ltcGxlci4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2Ygc2V2ZXJhbCBwYXRjaGVzIGZv
ciB0aGF0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyLnB5OgorICAgICAgICAoZ2V0KToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9f
aW5pdF9fKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLnJ1bik6CisgICAgICAgIChfTWFuYWdl
ckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX01hbmFnZXJDb25uZWN0aW9uLnN0YXJ0
X3dvcmtlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5fX2luaXRfXyk6CisgICAgICAgIChf
SW5saW5lTWFuYWdlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5zdGFydF93b3JrZXIpOgor
ICAgICAgICAoX011bHRpUHJvY2Vzc01hbmFnZXIuX19pbml0X18pOgorICAgICAgICAoX011bHRp
UHJvY2Vzc01hbmFnZXIpOgorICAgICAgICAoX011bHRpUHJvY2Vzc01hbmFnZXIuc3RhcnRfd29y
a2VyKToKKyAgICAgICAgKF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9J
bmxpbmVXb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9Qcm9jZXNzLl9faW5p
dF9fKToKKyAgICAgICAgKF9Qcm9jZXNzLnJ1bik6CisgICAgICAgIChfTXVsdGlQcm9jZXNzV29y
a2VyQ29ubmVjdGlvbi5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAobWFrZV9icm9rZXIpOgorICAgICAgICAoX1Rlc3RXb3JrZXIuX19pbml0X18pOgor
ICAgICAgICAoX1Rlc3RXb3JrZXIucnVuKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfY2Fu
Y2VsKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfZG9uZSk6CisgICAgICAgIChfVGVzdHNN
aXhpbi50ZXN0X3Vua25vd25fbWVzc2FnZSk6CisgICAgICAgIChNdWx0aVByb2Nlc3NCcm9rZXJU
ZXN0cy5xdWV1ZSk6CisgICAgICAgIChJbnRlcmZhY2VUZXN0LnRlc3RfbWFuYWdlcmNvbm5lY3Rp
b25faXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJmYWNlVGVzdC50ZXN0X3dvcmtlcmNvbm5l
Y3Rpb25faXNfYWJzdHJhY3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyLnB5OgorICAgICAgICAoQnJva2VyLl9faW5p
dF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy93b3JrZXIucHk6CisgICAgICAgIChXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoV29ya2Vy
Ll9zYWZlX2luaXQpOgorICAgICAgICAoV29ya2VyLnJ1bik6CisKIDIwMTItMDItMDggIFJvYiBC
dWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0gRHVt
cFJlbmRlclRyZWVCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCA3YjE2M2E5ODQ1
YjE1OGY5Zjc5Y2Q2NjZiNTk3ZGU2ZWUyYmRiOGVjLi5jOWU4MmVhZjUwYzAxMzg5NGE4MzZkODM2
NDVkZWYxYTgzNWM5OTNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTc1NCwxNCArNzU0LDE2
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgbnVtX3dvcmtlcnMgPSBtaW4oaW50
KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgbGVuKGFsbF9zaGFyZHMpKQogICAgICAg
ICBzZWxmLl9sb2dfbnVtX3dvcmtlcnMobnVtX3dvcmtlcnMsIGxlbihhbGxfc2hhcmRzKSwgbGVu
KGxvY2tlZF9zaGFyZHMpKQogCi0gICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgc2VsZiwgd29ya2Vy
LldvcmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJv
a2VyLmdldChzZWxmLl9vcHRpb25zLndvcmtlcl9tb2RlbCwgc2VsZiwgd29ya2VyLldvcmtlcikK
IAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46CiAgICAgICAgICAgICByZXR1cm4g
KGtleWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHNlbGYu
X2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3Jr
ZXInLCBudW1fd29ya2VycykpCiAgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShu
dW1fd29ya2Vycyk6Ci0gICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29u
bmVjdGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlciwgc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpKQorICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24u
c3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIsIHBvcnQ9c2VsZi5fcG9ydCwKKyAgICAgICAgICAg
ICAgICBvcHRpb25zPXNlbGYuX29wdGlvbnMsIHJlc3VsdHNfZGlyZWN0b3J5PXNlbGYucmVzdWx0
c19kaXJlY3RvcnkoKSwKKyAgICAgICAgICAgICAgICByZWFsX3BvcnRfbmFtZT1zZWxmLl9wb3J0
LnJlYWxfbmFtZSgpKQogICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdv
cmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQogICAgICAgICAgICAgc2VsZi5fd29ya2Vy
X3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKaW5kZXggODJiYTkxZmY1MmU3
MDA1OTIyOGVkNzA5ZDAyMTc4MTg5YzY1Y2FkZC4uNjM5YmJmZWI0MmZmOTQxYjUyYjJjZTM1ZGVk
OTJjNDM5ZTM1NmJmYiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpAQCAtNTMsMTIgKzUzLDcgQEAgdHJ5OgogZXhjZXB0IEltcG9ydEVycm9yOgogICAg
IG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAotIyBUaGVzZSBhcmUgbmVlZGVkIHdoZW4gd29ya2Vy
cyBhcmUgbGF1bmNoZWQgaW4gbmV3IGNoaWxkIHByb2Nlc3Nlcy4KLWZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKLQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1w
b3J0IG1lc3NhZ2VfYnJva2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBv
cnQgcHJpbnRpbmcKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC03
MCwyMyArNjUsMTEgQEAgTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2VycycKIEFOWV9XT1JLRVJfVE9Q
SUMgPSAnd29ya2VycycKIAogCi1kZWYgcnVudGltZV9vcHRpb25zKCk6Ci0gICAgIiIiUmV0dXJu
IGEgbGlzdCBvZiBvcHRwYXJzZS5PcHRpb24gb2JqZWN0cyBmb3IgYW55IHJ1bnRpbWUgdmFsdWVz
IHVzZWQKLSAgICBieSB0aGlzIG1vZHVsZS4iIiIKLSAgICBvcHRpb25zID0gWwotICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXItbW9kZWwiLCBhY3Rpb249InN0b3JlIiwKLSAg
ICAgICAgICAgIGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZhbHVlcyBhcmUg
IgotICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAncHJvY2Vzc2VzJy4iKSksCi0gICAgXQotICAg
IHJldHVybiBvcHRpb25zCi0KLQotZGVmIGdldChwb3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtl
cl9jbGFzcyk6CitkZWYgZ2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgog
ICAgICIiIlJldHVybiBhIGNvbm5lY3Rpb24gdG8gYSBtYW5hZ2VyL3dvcmtlciBtZXNzYWdlX2Jy
b2tlcgogCiAgICAgQXJnczoKLSAgICAgICAgcG9ydCAtIGhhbmRsZSB0byBsYXlvdXRfdGVzdHMv
cG9ydCBvYmplY3QgZm9yIHBvcnQtc3BlY2lmaWMgc3R1ZmYKLSAgICAgICAgb3B0aW9ucyAtIG9w
dHBhcnNlIGFyZ3VtZW50IGZvciBjb21tYW5kLWxpbmUgb3B0aW9ucworICAgICAgICB3b3JrZXJf
bW9kZWwgLSB0eXBlIG9mIHdvcmtlcnMgdG8gdXNlCiAgICAgICAgIGNsaWVudCAtIG1lc3NhZ2Vf
YnJva2VyLkJyb2tlckNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBkaXNwYXRjaAogICAgICAgICAg
ICAgcmVwbGllcyB0by4KICAgICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRv
IGNyZWF0ZS4gVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudApAQCAtOTUsNyArNzgsNiBAQCBkZWYg
Z2V0KHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgQSBoYW5k
bGUgdG8gYW4gb2JqZWN0IHRoYXQgd2lsbCB0YWxrIHRvIGEgbWVzc2FnZSBicm9rZXIgY29uZmln
dXJlZAogICAgICAgICBmb3IgdGhlIG5vcm1hbCBtYW5hZ2VyL3dvcmtlciBjb21tdW5pY2F0aW9u
LgogICAgICIiIgotICAgIHdvcmtlcl9tb2RlbCA9IG9wdGlvbnMud29ya2VyX21vZGVsCiAgICAg
aWYgd29ya2VyX21vZGVsID09ICdpbmxpbmUnOgogICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1ZXVl
LlF1ZXVlCiAgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfSW5saW5lTWFuYWdlcgpAQCAtMTA1LDEy
ICs4NywxMiBAQCBkZWYgZ2V0KHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToK
ICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBm
b3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAotICAgIGJyb2tlciA9IG1l
c3NhZ2VfYnJva2VyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKLSAgICByZXR1cm4gbWFu
YWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQor
ICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlcihxdWV1ZV9jbGFzcykKKyAgICByZXR1
cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQogCiAKIGNsYXNz
IEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2Rp
cmVjdG9yeSwgb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0
aW9uLCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgIiIiVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBi
ZSB1c2VkIHRvIGRvIGFueSBzaW1wbGUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgbmVjZXNzYXJ5
LCBidXQgc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0aGF0IGNyZWF0ZXMgZGF0YSBzdHJ1Y3R1cmVz
CiAgICAgICAgIHRoYXQgY2Fubm90IGJlIFBpY2tsZWQgb3Igc2VudCBhY3Jvc3MgcHJvY2Vzc2Vz
IChsaWtlIG9wZW5pbmcKQEAgLTEyMCwxNiArMTAyLDEzIEBAIGNsYXNzIEFic3RyYWN0V29ya2Vy
KG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmpl
Y3QgY3JlYXRpbmcKICAgICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1
c2VkIGZvciBtZXNzYWdpbmcuCi0gICAgICAgICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmll
ciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcgotICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1h
bmQtbGluZSBhcmd1bWVudCBvYmplY3QgZnJvbSBvcHRwYXJzZSIiIgorICAgICAgICAgICAgd29y
a2VyX251bWJlciAtIGlkZW50aWZpZXIgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrZXIiIiIKICAg
ICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAgICAgICAg
IHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtl
cl9udW1iZXIKICAgICAgICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJl
cgotICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAK
LSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgorICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICIi
IkNhbGxiYWNrIGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IGV4ZWN1dGluZy4gVHlwaWNhbGx5IGRv
ZXMgYW55CiAgICAgICAgIHJlbWFpbmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBjYWxscyBi
cm9rZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKCkuIiIiCiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKQEAgLTE0MiwzMyArMTIxLDM0IEBAIGNsYXNzIEFic3RyYWN0V29y
a2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6CiAKIAogY2xhc3MgX01hbmFnZXJDb25u
ZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm9rZXIsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAgICAgICAgICIi
IkJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNYW5hZ2VyIG9iamVjdHMuCiAKICAgICAgICAg
QXJnczoKICAgICAgICAgICAgIGJyb2tlcjogaGFuZGxlIHRvIHRoZSBtZXNzYWdlX2Jyb2tlciBv
YmplY3QKLSAgICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25zIG9iamVjdAog
ICAgICAgICAgICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCiAgICAgICAg
ICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMu
CiAgICAgICAgICIiIgogICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9f
aW5pdF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LAogICAgICAgICAgICAgTUFOQUdFUl9UT1BJQywg
QU5ZX1dPUktFUl9UT1BJQykKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAg
ICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKLSAgICBkZWYgc3RhcnRfd29y
a2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5KToKKyAgICBkZWYgc3Rh
cnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgX0lubGluZU1hbmFnZXIoX01hbmFn
ZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwb3J0LCBvcHRp
b25zLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6Ci0gICAgICAgIF9NYW5hZ2VyQ29ubmVjdGlvbi5f
X2luaXRfXyhzZWxmLCBicm9rZXIsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQotICAg
ICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNs
aWVudCwgd29ya2VyX2NsYXNzKToKKyAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCiAgICAgICAgIHNlbGYuX2lubGlu
ZV93b3JrZXIgPSBOb25lCiAKLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1i
ZXIsIHJlc3VsdHNfZGlyZWN0b3J5KToKLSAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlciA9IF9J
bmxpbmVXb3JrZXJDb25uZWN0aW9uKHNlbGYuX2Jyb2tlciwgc2VsZi5fcG9ydCwKLSAgICAgICAg
ICAgIHNlbGYuX2NsaWVudCwgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCByZXN1
bHRzX2RpcmVjdG9yeSwgc2VsZi5fb3B0aW9ucykKKyAgICAjIEZJWE1FOiBXZSBpbmNsdWRlIHRo
ZSAncG9ydCcgc28gdGhhdCB3ZSBjYW4gc2hhcmUgYSBzaW5nbGUgcG9ydCBvYmplY3QKKyAgICAj
IGJldHdlZW4gbWFuYWdlciBhbmQgd29ya2VyIGZvciB0aGUgdGVzdHMgaW4gcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QuCisgICAgIyBUaGVzZSB0ZXN0cyBzaG91bGQgbm90IGJlIGFs
bG93ZWQgdG8gZG8gdGhhdCBhbmQgbmVlZCB0byBiZSBmaXhlZCAoYnVnIDc4MTY4KS4KKyAgICBk
ZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQ9Tm9uZSwgKip3b3JrZXJf
YXJncyk6CisgICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIgPSBfSW5saW5lV29ya2VyQ29ubmVj
dGlvbihzZWxmLl9icm9rZXIsCisgICAgICAgICAgICBzZWxmLl9jbGllbnQsIHNlbGYuX3dvcmtl
cl9jbGFzcywgd29ya2VyX251bWJlciwgcG9ydCwgKip3b3JrZXJfYXJncykKKwogICAgICAgICBy
ZXR1cm4gc2VsZi5faW5saW5lX3dvcmtlcgogCiAgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2Vs
ZiwgZGVsYXlfc2Vjcz1Ob25lKToKQEAgLTE3OSwyNCArMTU5LDIxIEBAIGNsYXNzIF9JbmxpbmVN
YW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6CiAKIAogY2xhc3MgX011bHRpUHJvY2Vzc01hbmFn
ZXIoX01hbmFnZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBw
b3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6Ci0gICAgICAgICMgTm90ZSB0aGF0
IHRoaXMgY2xhc3MgZG9lcyBub3Qga2VlcCBhIGhhbmRsZSB0byB0aGUgYWN0dWFsIHBvcnQKLSAg
ICAgICAgIyBvYmplY3QsIGJlY2F1c2UgaXQgaXNuJ3QgUGlja2xhYmxlLiBJbnN0ZWFkIGl0IGtl
ZXBzIHRoZSBwb3J0Ci0gICAgICAgICMgbmFtZSBhbmQgcmVjcmVhdGVzIHRoZSBwb3J0IGluIHRo
ZSBjaGlsZCBwcm9jZXNzIGZyb20gdGhlIG5hbWUKLSAgICAgICAgIyBhbmQgb3B0aW9ucy4KLSAg
ICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgb3B0aW9ucywg
Y2xpZW50LCB3b3JrZXJfY2xhc3MpCi0gICAgICAgIHNlbGYuX3BsYXRmb3JtX25hbWUgPSBwb3J0
LnJlYWxfbmFtZSgpCi0KLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIs
IHJlc3VsdHNfZGlyZWN0b3J5KToKLSAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBfTXVsdGlQ
cm9jZXNzV29ya2VyQ29ubmVjdGlvbihzZWxmLl9icm9rZXIsIHNlbGYuX3BsYXRmb3JtX25hbWUs
Ci0gICAgICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNf
ZGlyZWN0b3J5LCBzZWxmLl9vcHRpb25zKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIs
IGNsaWVudCwgd29ya2VyX2NsYXNzKToKKyAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5p
dF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCisKKyAgICBkZWYgc3RhcnRf
d29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQ9Tm9uZSwgKip3b3JrZXJfYXJncyk6Cisg
ICAgICAgICMgV2UgZG9uJ3Qgc3RvcmUgdGhlIHBvcnQgYmVjYXVzZSB3b3JrZXJzIHJ1biBpbiBz
ZXBhcmF0ZSBwcm9jZXNzZXMgYW5kCisgICAgICAgICMgd2UgY2FuJ3QgcmVxdWlyZSB0aGUgcGFy
ZW50J3MgcG9ydCB0byBiZSBwaWNrbGVhYmxlIGFuZCBzaGFyZWQgd2l0aCB0aGUgY2hpbGQuCisg
ICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gX011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24o
c2VsZi5fYnJva2VyLAorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVt
YmVyLCAqKndvcmtlcl9hcmdzKQogICAgICAgICB3b3JrZXJfY29ubmVjdGlvbi5zdGFydCgpCiAg
ICAgICAgIHJldHVybiB3b3JrZXJfY29ubmVjdGlvbgogCiAKIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3Rv
cnksIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwg
d29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9h
cmdzKToKKyAgICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYsIHdvcmtlcl9u
dW1iZXIsICoqd29ya2VyX2FyZ3MpCiAgICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX2NsaWVudC5u
YW1lKCkKICAgICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbi5fX2luaXRfXyhz
ZWxmLCBicm9rZXIsIHNlbGYuX2NsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTllfV09SS0VSX1RPUElDLCBNQU5BR0VSX1RPUElDKQpAQCAt
MjE1LDEwICsxOTIsMTIgQEAgY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIu
QnJva2VyQ29ubmVjdGlvbik6CiAKIAogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dv
cmtlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1h
bmFnZXJfY2xpZW50LCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0
b3J5LCBvcHRpb25zKToKLSAgICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwg
YnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBv
cHRpb25zKQotICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb2tlciwgbWFuYWdlcl9jbGllbnQsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwg
cG9ydCwgKip3b3JrZXJfYXJncyk6CisgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdz
KQorCisgICAgICAgICMgU2VlIGNvbW1lbnQgaW4gSW5saW5lV29ya2VyQnJva2VyLnN0YXJ0X3dv
cmtlcigpIGZvciB3aHkgd2UgaGF2ZSBwb3J0IGhlcmUuCiAgICAgICAgIHNlbGYuX3BvcnQgPSBw
b3J0CisgICAgICAgIHNlbGYuX2FsaXZlID0gRmFsc2UKICAgICAgICAgc2VsZi5fbWFuYWdlcl9j
bGllbnQgPSBtYW5hZ2VyX2NsaWVudAogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTI0OCw0
MyArMjI3LDE5IEBAIGNsYXNzIF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0
aW9uKToKIGlmIG11bHRpcHJvY2Vzc2luZzoKIAogICAgIGNsYXNzIF9Qcm9jZXNzKG11bHRpcHJv
Y2Vzc2luZy5Qcm9jZXNzKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25u
ZWN0aW9uLCBwbGF0Zm9ybV9uYW1lLCBvcHRpb25zLCBjbGllbnQpOgorICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIGNsaWVudCk6CiAgICAgICAgICAgICBtdWx0
aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5fd29y
a2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi5fcGxh
dGZvcm1fbmFtZSA9IHBsYXRmb3JtX25hbWUKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBv
cHRpb25zCiAgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAogICAgICAgICBkZWYg
cnVuKHNlbGYpOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0IG9i
amVjdCBoZXJlIGJlY2F1c2UgdGhpcyBpcwotICAgICAgICAgICAgIyBydW5uaW5nIGluIGEgbmV3
IHByb2Nlc3MgYW5kIHdlIGNhbid0IHJlcXVpcmUgdGhlIHBhcmVudCdzCi0gICAgICAgICAgICAj
IEhvc3QgdG8gYmUgcGlja2xlYWJsZSBhbmQgcGFzc2VkIHRvIHRoZSBjaGlsZC4KLSAgICAgICAg
ICAgIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUuc3RhcnRzd2l0aCgndGVzdCcpOgotICAgICAgICAg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGhvc3QgPSBIb3N0KCkKLSAgICAgICAgICAgIGhvc3QuX2luaXRpYWxpemVfc2NtKCkKLQot
ICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgICAgIHBvcnRfb2Jq
ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIG9wdGlvbnMpCi0K
LSAgICAgICAgICAgICMgVGhlIHVuaXggbXVsdGlwcm9jZXNzaW5nIGltcGxlbWVudGF0aW9uIGNs
b25lcyB0aGUKLSAgICAgICAgICAgICMgbG9nIGhhbmRsZXIgY29uZmlndXJhdGlvbiBpbnRvIHRo
ZSBjaGlsZCBwcm9jZXNzZXMsCi0gICAgICAgICAgICAjIGJ1dCB0aGUgd2luIGltcGxlbWVudGF0
aW9uIGRvZXNuJ3QuCi0gICAgICAgICAgICBjb25maWd1cmVfbG9nZ2luZyA9IChzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJykKLQotICAgICAgICAgICAgIyBGSVhNRTogdGhpcyB3b24ndCB3b3JrIGlm
IHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgbG9nZ2luZwotICAgICAgICAgICAgIyBzb21ld2hlcmUg
b3RoZXIgdGhhbiBzeXMuc3RkZXJyIGFuZCBzeXMuc3Rkb3V0LCBidXQgSSdtIG5vdCBzdXJlCi0g
ICAgICAgICAgICAjIGlmIHRoaXMgd2lsbCBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS4KLSAgICAg
ICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnRfb2JqLCBvcHRpb25zLCBzeXMu
c3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1cmVfbG9nZ2luZykKLSAgICAgICAgICAgIHNlbGYu
X2NsaWVudC5ydW4ocG9ydF9vYmopCi0gICAgICAgICAgICBwcmludGVyLmNsZWFudXAoKQorICAg
ICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bigpCiAKIAogY2xhc3MgX011bHRpUHJvY2Vzc1dvcmtl
ckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
cm9rZXIsIHBsYXRmb3JtX25hbWUsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0
c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBfV29ya2VyQ29ubmVjdGlvbi5fX2luaXRf
XyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJl
Y3RvcnksIG9wdGlvbnMpCi0gICAgICAgIHNlbGYuX3Byb2MgPSBfUHJvY2VzcyhzZWxmLCBwbGF0
Zm9ybV9uYW1lLCBvcHRpb25zLCBzZWxmLl9jbGllbnQpCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdzKToKKyAg
ICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xh
c3MsIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpCisgICAgICAgIHNlbGYuX3Byb2MgPSBf
UHJvY2VzcyhzZWxmLCBzZWxmLl9jbGllbnQpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fcHJvYy50ZXJtaW5hdGUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJv
a2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CmluZGV4IDhlNjNmOTNl
YzE1OTBlNjcyZmQ5YjA2NGExNDNjNDQyZGUwN2FjYzMuLjBiMjE4ZGIwYWE0NDNkMTA0M2YyMDk4
ZTg0ZTk4NTVmOTYzN2ZhZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKQEAgLTM4LDkgKzM4LDcgQEAgZXhjZXB0IElt
cG9ydEVycm9yOgogCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0
Y2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAog
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1lc3NhZ2VfYnJva2Vy
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKQEAgLTYw
LDE2ICs1OCwxMiBAQCBkZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVsLCBzdGFy
dF9xdWV1ZT1Ob25lLCBzdG9wX3F1ZXVlPU5vbmUpOgogICAgIGdsb2JhbCBzdG9wcGluZ19xdWV1
ZQogICAgIHN0YXJ0aW5nX3F1ZXVlID0gc3RhcnRfcXVldWUKICAgICBzdG9wcGluZ19xdWV1ZSA9
IHN0b3BfcXVldWUKLSAgICBvcHRpb25zID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQotICAg
IGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KCJ0ZXN0IikKLSAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldCh0ZXN0X3BvcnQs
IG9wdGlvbnMsIG1hbmFnZXIsIF9UZXN0V29ya2VyKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuZ2V0KHdvcmtlcl9tb2RlbCwgbWFuYWdlciwgX1Rlc3RXb3JrZXIpCiAKIAogY2xh
c3MgX1Rlc3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHJl
c3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2Vy
X2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpOgogICAgICAgICBzZWxm
Ll9icm9rZXJfY29ubmVjdGlvbiA9IGJyb2tlcl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYuX29w
dGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVt
YmVyCiAgICAgICAgIHNlbGYuX25hbWUgPSAnVGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVy
CiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtOTQsNyArODgsNyBAQCBjbGFzcyBf
VGVzdFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgIGRl
ZiBjYW5jZWwoc2VsZik6CiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCi0gICAgZGVm
IHJ1bihzZWxmLCBwb3J0KToKKyAgICBkZWYgcnVuKHNlbGYsIHBvcnQ9Tm9uZSk6CiAgICAgICAg
IGlmIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlOgogICAgICAgICAgICAgc2VsZi5fc3RhcnRpbmdfcXVl
dWUucHV0KCcnKQogCkBAIC0xMDgsMTcgKzEwMiw2IEBAIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFn
ZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgICAgICBzZWxmLl9icm9r
ZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2V4Y2VwdGlvbicsICh0eXBlKGUpLCBzdHIoZSks
IE5vbmUpKQogCiAKLWRlZiBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpOgotICAgIG9wdGlvbl9s
aXN0ID0gKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKSArCi0gICAgICAg
ICAgICAgICAgICAgcHJpbnRpbmcucHJpbnRfb3B0aW9ucygpICsKLSAgICAgICAgICAgICAgICAg
ICBbb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwg
ZGVmYXVsdD1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCItLWNoaWxkLXByb2Nlc3NlcyIsIGRlZmF1bHQ9JzInKV0pCi0gICAgcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PW9wdGlvbl9saXN0KQotICAgIG9wdGlvbnMsIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPVsnLS13b3JrZXItbW9kZWwnLCB3b3JrZXJfbW9k
ZWxdKQotICAgIHJldHVybiBvcHRpb25zCi0KLQotCiBjbGFzcyBGdW5jdGlvblRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9nZXRfX2lubGluZShzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKSBpcyBub3QgTm9uZSkK
QEAgLTE3Miw3ICsxNTUsNyBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVm
IHRlc3RfY2FuY2VsKHNlbGYpOgogICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKLSAgICAgICAg
d29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwLCBOb25lKQorICAgICAgICB3b3Jr
ZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCiAgICAgICAgIHdvcmtlci5jYW5jZWwo
KQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3
b3JsZCcpCiAgICAgICAgIHdvcmtlci5qb2luKDAuNSkKQEAgLTE4MCw3ICsxNjMsNyBAQCBjbGFz
cyBfVGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToKICAgICAg
ICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFy
dF93b3JrZXIoMCwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dv
cmtlcigwKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hl
bGxvLCB3b3JsZCcpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQog
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCkBAIC0xOTIsNyArMTc1LDcg
QEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fbWVz
c2FnZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9
IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2Vs
Zi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNz
YWdlKCd1bmtub3duJykKICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQog
ICAgICAgICB3b3JrZXIuam9pbigwLjUpCkBAIC0yMTYsMTQgKzE5OSw2IEBAIGlmIG11bHRpcHJv
Y2Vzc2luZyBhbmQgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgogICAg
ICAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCiAKIAotY2xhc3MgRnVuY3Rp
b25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25z
KHNlbGYpOgotICAgICAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50
aW1lX29wdGlvbnMoKQotICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0
aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFy
c2VfYXJncyhbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMpCi0KLQogY2xhc3Mg
SW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0cyBtb3N0
bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgogCkBAIC0yMzMsMTQgKzIwOCwxNCBAQCBjbGFz
cyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBUZXN0IHRoYXQg
YWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZlIHRoZQogICAg
ICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1ha2VfYnJva2Vy
KHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01h
bmFnZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmLCBOb25lKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2Vy
LCAwLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01hbmFnZXJD
b25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2VyLCAwKQogCiAgICAg
ZGVmIHRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChzZWxmKToKICAgICAgICAgIyBU
ZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZl
IHRoZQogICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1h
a2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCAwLCBO
b25lLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX1dvcmtlckNv
bm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCAwKQogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouY2FuY2VsKQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouaXNfYWxpdmUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5qb2luLCBOb25lKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWVzc2FnZV9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQppbmRleCBkNThhNmNkMTFiYjg4MzRmZjRl
YmViZDAxNzNkMTRmNjM3OTMxZmRkLi5mNjRkMzZkNGI0NWU0NWZmZWFlZTNhMThjODk3NWU4N2Qz
YmE1NmYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQpAQCAtOTQsMTMgKzk0
LDExIEBAIGNsYXNzIEJyb2tlcihvYmplY3QpOgogICAgIG1lc3NhZ2UgdG8gYW55IHRvcGljIHVz
aW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24gb25lCiAgICAg
dG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zLCBxdWV1ZV9tYWtlcik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHF1ZXVlX21ha2VyKToKICAgICAgICAgIiIiQXJnczoKLSAgICAgICAgICAgIG9wdGlvbnM6
IGEgcnVudGltZSBvcHRpb24gY2xhc3MgZnJvbSBvcHRwYXJzZQogICAgICAgICAgICAgcXVldWVf
bWFrZXI6IGEgZmFjdG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVtZW50aW5n
IGEKICAgICAgICAgICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4KICAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3F1
ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKICAgICAgICAgc2VsZi5fdG9waWNzID0ge30KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
d29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CmluZGV4IGZjNzgzMWRmYjY3YzYyZDJjZTU5MWJlMTJhNzU4NjFjODI5Yzg0
Y2YuLmUzY2RhZmMyZTNjNzZlOTM4NzA5MDJlOGRmOGUwY2VhODMzNWM2NzYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93
b3JrZXIucHkKQEAgLTMzLDE4ICszMywyNiBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5n
CiBpbXBvcnQgdGltZQogCisjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJzIGFyZSBsYXVu
Y2hlZCBpbiBuZXcgY2hpbGQgcHJvY2Vzc2VzLgorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBp
bXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdl
cl93b3JrZXJfYnJva2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBp
bXBvcnQgc2luZ2xlX3Rlc3RfcnVubmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmll
d3MgaW1wb3J0IHByaW50aW5nCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiAKIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJl
ciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuQWJzdHJhY3RXb3JrZXIuX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdv
cmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3Rv
cnk9Tm9uZSwgb3B0aW9ucz1Ob25lLCByZWFsX3BvcnRfbmFtZT1Ob25lKToKKyAgICAgICAgbWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyLl9faW5pdF9fKHNlbGYsIHdvcmtlcl9j
b25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9y
eSA9IHJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgIHNlbGYuX3JlYWxfcG9ydF9uYW1lID0gcmVhbF9wb3J0X25hbWUKICAgICAgICAgc2Vs
Zi5fZG9uZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKICAgICAgICAg
c2VsZi5fcG9ydCA9IE5vbmUKQEAgLTU4LDcgKzY2LDcgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAg
ICAgICAgIHNlbGYuY2xlYW51cCgpCiAKLSAgICBkZWYgc2FmZV9pbml0KHNlbGYsIHBvcnQpOgor
ICAgIGRlZiBfc2FmZV9pbml0KHNlbGYsIHBvcnQpOgogICAgICAgICAiIiJUaGlzIG1ldGhvZCBz
aG91bGQgb25seSBiZSBjYWxsZWQgd2hlbiBpdCBpcyBpcyBzYWZlIGZvciB0aGUgbWl4aW4KICAg
ICAgICAgdG8gY3JlYXRlIHN0YXRlIHRoYXQgY2FuJ3QgYmUgUGlja2xlZC4KIApAQCAtODEsOCAr
ODksMjYgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtl
cik6CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAKLSAg
ICBkZWYgcnVuKHNlbGYsIHBvcnQpOgotICAgICAgICBzZWxmLnNhZmVfaW5pdChwb3J0KQorICAg
IGRlZiBydW4oc2VsZiwgcG9ydD1Ob25lKToKKyAgICAgICAgaWYgbm90IHBvcnQ6CisgICAgICAg
ICAgICBpZiAndGVzdCcgaW4gc2VsZi5fcmVhbF9wb3J0X25hbWU6CisgICAgICAgICAgICAgICAg
aG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaG9z
dCA9IEhvc3QoKQorICAgICAgICAgICAgaG9zdC5faW5pdGlhbGl6ZV9zY20oKQorICAgICAgICAg
ICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChzZWxmLl9yZWFsX3BvcnRfbmFtZSwgc2Vs
Zi5fb3B0aW9ucykKKworICAgICAgICAjIFRoZSB1bml4IG11bHRpcHJvY2Vzc2luZyBpbXBsZW1l
bnRhdGlvbiBjbG9uZXMgdGhlCisgICAgICAgICMgbG9nIGhhbmRsZXIgY29uZmlndXJhdGlvbiBp
bnRvIHRoZSBjaGlsZCBwcm9jZXNzZXMsCisgICAgICAgICMgYnV0IHRoZSB3aW4gaW1wbGVtZW50
YXRpb24gZG9lc24ndC4KKyAgICAgICAgY29uZmlndXJlX2xvZ2dpbmcgPSAoc3lzLnBsYXRmb3Jt
ID09ICd3aW4zMicpCisKKyAgICAgICAgIyBGSVhNRTogdGhpcyB3b24ndCB3b3JrIGlmIHRoZSBj
YWxsaW5nIHByb2Nlc3MgaXMgbG9nZ2luZworICAgICAgICAjIHNvbWV3aGVyZSBvdGhlciB0aGFu
IHN5cy5zdGRlcnIgYW5kIHN5cy5zdGRvdXQsIGJ1dCBJJ20gbm90IHN1cmUKKyAgICAgICAgIyBp
ZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4gcHJhY3RpY2UuCisgICAgICAgIHByaW50ZXIgPSBw
cmludGluZy5QcmludGVyKHBvcnQsIHNlbGYuX29wdGlvbnMsIHN5cy5zdGRlcnIsIHN5cy5zdGRv
dXQsIGNvbmZpZ3VyZV9sb2dnaW5nKQorCisgICAgICAgIHNlbGYuX3NhZmVfaW5pdChwb3J0KQog
CiAgICAgICAgIGV4Y2VwdGlvbl9tc2cgPSAiIgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBzdGFy
dGluZyIgJSBzZWxmLl9uYW1lKQpAQCAtMTAyLDYgKzEyOCw3IEBAIGNsYXNzIFdvcmtlcihtYW5h
Z2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgICAgICAgICAgX2xvZy5kZWJ1
ZygiJXMgZG9uZSB3aXRoIG1lc3NhZ2UgbG9vcCVzIiAlIChzZWxmLl9uYW1lLCBleGNlcHRpb25f
bXNnKSkKICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgn
ZG9uZScpCiAgICAgICAgICAgICBzZWxmLmNsZWFudXAoKQorICAgICAgICAgICAgcHJpbnRlci5j
bGVhbnVwKCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRpbmciICUgc2VsZi5fbmFt
ZSkKIAogICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1lLCB0ZXN0
X2xpc3QpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126185</attachid>
            <date>2012-02-08 16:36:26 -0800</date>
            <delta_ts>2012-02-09 16:20:51 -0800</delta_ts>
            <desc>move more logic into self._finish_initializing()</desc>
            <filename>bug-78171-20120208163625.patch</filename>
            <type>text/plain</type>
            <size>25589</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MTMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2I4NjIyNDQwNmZkNDIwNWQ4MmY3YzhhMmQ5MTdkNmI1
MTk1YTQwNS4uMWYyZjA2NGY5NWEzYjU2OGE2OTQzZGVjOTMzZWFmMDY4MjVjNDM2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDEyLTAyLTA4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIHdlYmtpdHB5OiBzdGFydCBjbGVhbmluZyB1cCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIg
aW4gcHJlcCBmb3IgcmV1c2UgYnkgdGVzdC13ZWJraXRweQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHdhbnQgdG8gYmUgYWJsZSB0byByZS11c2UgdGhl
IHdvcmtlciBxdWV1ZSBsb2dpYyBmcm9tCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGlu
IHRlc3Qtd2Via2l0cHkuIEluIG9yZGVyIHRvIGRvIHRoaXMgSQorICAgICAgICBuZWVkIHRvIHJl
bW92ZSBhbGwgb2YgdGhlIE5SV1Qtc3BlY2lmaWMgbG9naWMgZnJvbSB0aGUgd29ya2VyCisgICAg
ICAgIHF1ZXVlLCBhbmQgcmVmYWN0b3IgdGhpbmdzIGEgYml0IHNvIHRoZSBpbnRlcmZhY2UgaXMg
c2ltcGxlci4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2Ygc2V2ZXJhbCBwYXRjaGVzIGZv
ciB0aGF0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIuX3J1bl90ZXN0cyk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyLnB5OgorICAgICAgICAoZ2V0KToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLl9f
aW5pdF9fKToKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLnJ1bik6CisgICAgICAgIChfTWFuYWdl
ckNvbm5lY3Rpb24uX19pbml0X18pOgorICAgICAgICAoX01hbmFnZXJDb25uZWN0aW9uLnN0YXJ0
X3dvcmtlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5fX2luaXRfXyk6CisgICAgICAgIChf
SW5saW5lTWFuYWdlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdlci5zdGFydF93b3JrZXIpOgor
ICAgICAgICAoX011bHRpUHJvY2Vzc01hbmFnZXIuX19pbml0X18pOgorICAgICAgICAoX011bHRp
UHJvY2Vzc01hbmFnZXIpOgorICAgICAgICAoX011bHRpUHJvY2Vzc01hbmFnZXIuc3RhcnRfd29y
a2VyKToKKyAgICAgICAgKF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9J
bmxpbmVXb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKToKKyAgICAgICAgKF9Qcm9jZXNzLl9faW5p
dF9fKToKKyAgICAgICAgKF9Qcm9jZXNzLnJ1bik6CisgICAgICAgIChfTXVsdGlQcm9jZXNzV29y
a2VyQ29ubmVjdGlvbi5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAobWFrZV9icm9rZXIpOgorICAgICAgICAoX1Rlc3RXb3JrZXIuX19pbml0X18pOgor
ICAgICAgICAoX1Rlc3RXb3JrZXIucnVuKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfY2Fu
Y2VsKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfZG9uZSk6CisgICAgICAgIChfVGVzdHNN
aXhpbi50ZXN0X3Vua25vd25fbWVzc2FnZSk6CisgICAgICAgIChNdWx0aVByb2Nlc3NCcm9rZXJU
ZXN0cy5xdWV1ZSk6CisgICAgICAgIChJbnRlcmZhY2VUZXN0LnRlc3RfbWFuYWdlcmNvbm5lY3Rp
b25faXNfYWJzdHJhY3QpOgorICAgICAgICAoSW50ZXJmYWNlVGVzdC50ZXN0X3dvcmtlcmNvbm5l
Y3Rpb25faXNfYWJzdHJhY3QpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21lc3NhZ2VfYnJva2VyLnB5OgorICAgICAgICAoQnJva2VyLl9faW5p
dF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVy
cy93b3JrZXIucHk6CisgICAgICAgIChXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoV29ya2Vy
Ll9zYWZlX2luaXQpOgorICAgICAgICAoV29ya2VyLnJ1bik6CisKIDIwMTItMDItMDggIFJvYiBC
dWlzICA8cmJ1aXNAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW0gRHVt
cFJlbmRlclRyZWVCbGFja0JlcnJ5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCA3YjE2M2E5ODQ1
YjE1OGY5Zjc5Y2Q2NjZiNTk3ZGU2ZWUyYmRiOGVjLi5jOWU4MmVhZjUwYzAxMzg5NGE4MzZkODM2
NDVkZWYxYTgzNWM5OTNiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTc1NCwxNCArNzU0LDE2
IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgbnVtX3dvcmtlcnMgPSBtaW4oaW50
KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgbGVuKGFsbF9zaGFyZHMpKQogICAgICAg
ICBzZWxmLl9sb2dfbnVtX3dvcmtlcnMobnVtX3dvcmtlcnMsIGxlbihhbGxfc2hhcmRzKSwgbGVu
KGxvY2tlZF9zaGFyZHMpKQogCi0gICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgc2VsZiwgd29ya2Vy
LldvcmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJv
a2VyLmdldChzZWxmLl9vcHRpb25zLndvcmtlcl9tb2RlbCwgc2VsZiwgd29ya2VyLldvcmtlcikK
IAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46CiAgICAgICAgICAgICByZXR1cm4g
KGtleWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsIHNlbGYu
X2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKIAogICAgICAgICBzZWxmLl9wcmludGVy
LnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgJXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3Jr
ZXInLCBudW1fd29ya2VycykpCiAgICAgICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShu
dW1fd29ya2Vycyk6Ci0gICAgICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29u
bmVjdGlvbi5zdGFydF93b3JrZXIod29ya2VyX251bWJlciwgc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpKQorICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24u
c3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIsIHBvcnQ9c2VsZi5fcG9ydCwKKyAgICAgICAgICAg
ICAgICBvcHRpb25zPXNlbGYuX29wdGlvbnMsIHJlc3VsdHNfZGlyZWN0b3J5PXNlbGYucmVzdWx0
c19kaXJlY3RvcnkoKSwKKyAgICAgICAgICAgICAgICByZWFsX3BvcnRfbmFtZT1zZWxmLl9wb3J0
LnJlYWxfbmFtZSgpKQogICAgICAgICAgICAgd29ya2VyX3N0YXRlID0gX1dvcmtlclN0YXRlKHdv
cmtlcl9udW1iZXIsIHdvcmtlcl9jb25uZWN0aW9uKQogICAgICAgICAgICAgc2VsZi5fd29ya2Vy
X3N0YXRlc1t3b3JrZXJfY29ubmVjdGlvbi5uYW1lXSA9IHdvcmtlcl9zdGF0ZQogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKaW5kZXggODJiYTkxZmY1MmU3
MDA1OTIyOGVkNzA5ZDAyMTc4MTg5YzY1Y2FkZC4uNjM5YmJmZWI0MmZmOTQxYjUyYjJjZTM1ZGVk
OTJjNDM5ZTM1NmJmYiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jy
b2tlci5weQpAQCAtNTMsMTIgKzUzLDcgQEAgdHJ5OgogZXhjZXB0IEltcG9ydEVycm9yOgogICAg
IG11bHRpcHJvY2Vzc2luZyA9IE5vbmUKIAotIyBUaGVzZSBhcmUgbmVlZGVkIHdoZW4gd29ya2Vy
cyBhcmUgbGF1bmNoZWQgaW4gbmV3IGNoaWxkIHByb2Nlc3Nlcy4KLWZyb20gd2Via2l0cHkuY29t
bW9uLmhvc3QgaW1wb3J0IEhvc3QKLWZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBv
cnQgTW9ja0hvc3QKLQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1w
b3J0IG1lc3NhZ2VfYnJva2VyCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBv
cnQgcHJpbnRpbmcKIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC03
MCwyMyArNjUsMTEgQEAgTUFOQUdFUl9UT1BJQyA9ICdtYW5hZ2VycycKIEFOWV9XT1JLRVJfVE9Q
SUMgPSAnd29ya2VycycKIAogCi1kZWYgcnVudGltZV9vcHRpb25zKCk6Ci0gICAgIiIiUmV0dXJu
IGEgbGlzdCBvZiBvcHRwYXJzZS5PcHRpb24gb2JqZWN0cyBmb3IgYW55IHJ1bnRpbWUgdmFsdWVz
IHVzZWQKLSAgICBieSB0aGlzIG1vZHVsZS4iIiIKLSAgICBvcHRpb25zID0gWwotICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS13b3JrZXItbW9kZWwiLCBhY3Rpb249InN0b3JlIiwKLSAg
ICAgICAgICAgIGhlbHA9KCJjb250cm9scyB3b3JrZXIgbW9kZWwuIFZhbGlkIHZhbHVlcyBhcmUg
IgotICAgICAgICAgICAgIidpbmxpbmUnIGFuZCAncHJvY2Vzc2VzJy4iKSksCi0gICAgXQotICAg
IHJldHVybiBvcHRpb25zCi0KLQotZGVmIGdldChwb3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtl
cl9jbGFzcyk6CitkZWYgZ2V0KHdvcmtlcl9tb2RlbCwgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgog
ICAgICIiIlJldHVybiBhIGNvbm5lY3Rpb24gdG8gYSBtYW5hZ2VyL3dvcmtlciBtZXNzYWdlX2Jy
b2tlcgogCiAgICAgQXJnczoKLSAgICAgICAgcG9ydCAtIGhhbmRsZSB0byBsYXlvdXRfdGVzdHMv
cG9ydCBvYmplY3QgZm9yIHBvcnQtc3BlY2lmaWMgc3R1ZmYKLSAgICAgICAgb3B0aW9ucyAtIG9w
dHBhcnNlIGFyZ3VtZW50IGZvciBjb21tYW5kLWxpbmUgb3B0aW9ucworICAgICAgICB3b3JrZXJf
bW9kZWwgLSB0eXBlIG9mIHdvcmtlcnMgdG8gdXNlCiAgICAgICAgIGNsaWVudCAtIG1lc3NhZ2Vf
YnJva2VyLkJyb2tlckNsaWVudCBpbXBsZW1lbnRhdGlvbiB0byBkaXNwYXRjaAogICAgICAgICAg
ICAgcmVwbGllcyB0by4KICAgICAgICAgd29ya2VyX2NsYXNzIC0gdHlwZSBvZiB3b3JrZXJzIHRv
IGNyZWF0ZS4gVGhpcyBjbGFzcyBtdXN0IGltcGxlbWVudApAQCAtOTUsNyArNzgsNiBAQCBkZWYg
Z2V0KHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgQSBoYW5k
bGUgdG8gYW4gb2JqZWN0IHRoYXQgd2lsbCB0YWxrIHRvIGEgbWVzc2FnZSBicm9rZXIgY29uZmln
dXJlZAogICAgICAgICBmb3IgdGhlIG5vcm1hbCBtYW5hZ2VyL3dvcmtlciBjb21tdW5pY2F0aW9u
LgogICAgICIiIgotICAgIHdvcmtlcl9tb2RlbCA9IG9wdGlvbnMud29ya2VyX21vZGVsCiAgICAg
aWYgd29ya2VyX21vZGVsID09ICdpbmxpbmUnOgogICAgICAgICBxdWV1ZV9jbGFzcyA9IFF1ZXVl
LlF1ZXVlCiAgICAgICAgIG1hbmFnZXJfY2xhc3MgPSBfSW5saW5lTWFuYWdlcgpAQCAtMTA1LDEy
ICs4NywxMiBAQCBkZWYgZ2V0KHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToK
ICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBm
b3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAotICAgIGJyb2tlciA9IG1l
c3NhZ2VfYnJva2VyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKLSAgICByZXR1cm4gbWFu
YWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQor
ICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlcihxdWV1ZV9jbGFzcykKKyAgICByZXR1
cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQogCiAKIGNsYXNz
IEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2Rp
cmVjdG9yeSwgb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0
aW9uLCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgIiIiVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBi
ZSB1c2VkIHRvIGRvIGFueSBzaW1wbGUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgbmVjZXNzYXJ5
LCBidXQgc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0aGF0IGNyZWF0ZXMgZGF0YSBzdHJ1Y3R1cmVz
CiAgICAgICAgIHRoYXQgY2Fubm90IGJlIFBpY2tsZWQgb3Igc2VudCBhY3Jvc3MgcHJvY2Vzc2Vz
IChsaWtlIG9wZW5pbmcKQEAgLTEyMCwxNiArMTAyLDEzIEBAIGNsYXNzIEFic3RyYWN0V29ya2Vy
KG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6CiAgICAgICAgIEFyZ3M6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiAtIGhhbmRsZSB0byB0aGUgQnJva2VyQ29ubmVjdGlvbiBvYmpl
Y3QgY3JlYXRpbmcKICAgICAgICAgICAgICAgICB0aGUgd29ya2VyIGFuZCB0aGF0IGNhbiBiZSB1
c2VkIGZvciBtZXNzYWdpbmcuCi0gICAgICAgICAgICB3b3JrZXJfbnVtYmVyIC0gaWRlbnRpZmll
ciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlcgotICAgICAgICAgICAgb3B0aW9ucyAtIGNvbW1h
bmQtbGluZSBhcmd1bWVudCBvYmplY3QgZnJvbSBvcHRwYXJzZSIiIgorICAgICAgICAgICAgd29y
a2VyX251bWJlciAtIGlkZW50aWZpZXIgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrZXIiIiIKICAg
ICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50Ll9faW5pdF9fKHNlbGYpCiAgICAgICAg
IHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uID0gd29ya2VyX2Nvbm5lY3Rpb24KLSAgICAgICAgc2Vs
Zi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtl
cl9udW1iZXIKICAgICAgICAgc2VsZi5fbmFtZSA9ICd3b3JrZXIvJWQnICUgd29ya2VyX251bWJl
cgotICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CiAK
LSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgorICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgICIi
IkNhbGxiYWNrIGZvciB0aGUgd29ya2VyIHRvIHN0YXJ0IGV4ZWN1dGluZy4gVHlwaWNhbGx5IGRv
ZXMgYW55CiAgICAgICAgIHJlbWFpbmluZyBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBjYWxscyBi
cm9rZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKCkuIiIiCiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKQEAgLTE0MiwzMyArMTIxLDM0IEBAIGNsYXNzIEFic3RyYWN0V29y
a2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6CiAKIAogY2xhc3MgX01hbmFnZXJDb25u
ZWN0aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm9rZXIsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAgICAgICAgICIi
IkJhc2UgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBNYW5hZ2VyIG9iamVjdHMuCiAKICAgICAgICAg
QXJnczoKICAgICAgICAgICAgIGJyb2tlcjogaGFuZGxlIHRvIHRoZSBtZXNzYWdlX2Jyb2tlciBv
YmplY3QKLSAgICAgICAgICAgIG9wdGlvbnM6IGNvbW1hbmQgbGluZSBvcHRpb25zIG9iamVjdAog
ICAgICAgICAgICAgY2xpZW50OiBjYWxsYmFjayBvYmplY3QgKHRoZSBjYWxsZXIpCiAgICAgICAg
ICAgICB3b3JrZXJfY2xhc3M6IGNsYXNzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHdvcmtlcnMu
CiAgICAgICAgICIiIgogICAgICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDb25uZWN0aW9uLl9f
aW5pdF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LAogICAgICAgICAgICAgTUFOQUdFUl9UT1BJQywg
QU5ZX1dPUktFUl9UT1BJQykKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAg
ICAgc2VsZi5fd29ya2VyX2NsYXNzID0gd29ya2VyX2NsYXNzCiAKLSAgICBkZWYgc3RhcnRfd29y
a2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5KToKKyAgICBkZWYgc3Rh
cnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKIAogY2xhc3MgX0lubGluZU1hbmFnZXIoX01hbmFn
ZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwb3J0LCBvcHRp
b25zLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6Ci0gICAgICAgIF9NYW5hZ2VyQ29ubmVjdGlvbi5f
X2luaXRfXyhzZWxmLCBicm9rZXIsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQotICAg
ICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIGNs
aWVudCwgd29ya2VyX2NsYXNzKToKKyAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCiAgICAgICAgIHNlbGYuX2lubGlu
ZV93b3JrZXIgPSBOb25lCiAKLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1i
ZXIsIHJlc3VsdHNfZGlyZWN0b3J5KToKLSAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlciA9IF9J
bmxpbmVXb3JrZXJDb25uZWN0aW9uKHNlbGYuX2Jyb2tlciwgc2VsZi5fcG9ydCwKLSAgICAgICAg
ICAgIHNlbGYuX2NsaWVudCwgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCByZXN1
bHRzX2RpcmVjdG9yeSwgc2VsZi5fb3B0aW9ucykKKyAgICAjIEZJWE1FOiBXZSBpbmNsdWRlIHRo
ZSAncG9ydCcgc28gdGhhdCB3ZSBjYW4gc2hhcmUgYSBzaW5nbGUgcG9ydCBvYmplY3QKKyAgICAj
IGJldHdlZW4gbWFuYWdlciBhbmQgd29ya2VyIGZvciB0aGUgdGVzdHMgaW4gcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QuCisgICAgIyBUaGVzZSB0ZXN0cyBzaG91bGQgbm90IGJlIGFs
bG93ZWQgdG8gZG8gdGhhdCBhbmQgbmVlZCB0byBiZSBmaXhlZCAoYnVnIDc4MTY4KS4KKyAgICBk
ZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQ9Tm9uZSwgKip3b3JrZXJf
YXJncyk6CisgICAgICAgIHNlbGYuX2lubGluZV93b3JrZXIgPSBfSW5saW5lV29ya2VyQ29ubmVj
dGlvbihzZWxmLl9icm9rZXIsCisgICAgICAgICAgICBzZWxmLl9jbGllbnQsIHNlbGYuX3dvcmtl
cl9jbGFzcywgd29ya2VyX251bWJlciwgcG9ydCwgKip3b3JrZXJfYXJncykKKwogICAgICAgICBy
ZXR1cm4gc2VsZi5faW5saW5lX3dvcmtlcgogCiAgICAgZGVmIHJ1bl9tZXNzYWdlX2xvb3Aoc2Vs
ZiwgZGVsYXlfc2Vjcz1Ob25lKToKQEAgLTE3OSwyNCArMTU5LDIxIEBAIGNsYXNzIF9JbmxpbmVN
YW5hZ2VyKF9NYW5hZ2VyQ29ubmVjdGlvbik6CiAKIAogY2xhc3MgX011bHRpUHJvY2Vzc01hbmFn
ZXIoX01hbmFnZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBw
b3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6Ci0gICAgICAgICMgTm90ZSB0aGF0
IHRoaXMgY2xhc3MgZG9lcyBub3Qga2VlcCBhIGhhbmRsZSB0byB0aGUgYWN0dWFsIHBvcnQKLSAg
ICAgICAgIyBvYmplY3QsIGJlY2F1c2UgaXQgaXNuJ3QgUGlja2xhYmxlLiBJbnN0ZWFkIGl0IGtl
ZXBzIHRoZSBwb3J0Ci0gICAgICAgICMgbmFtZSBhbmQgcmVjcmVhdGVzIHRoZSBwb3J0IGluIHRo
ZSBjaGlsZCBwcm9jZXNzIGZyb20gdGhlIG5hbWUKLSAgICAgICAgIyBhbmQgb3B0aW9ucy4KLSAg
ICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYsIGJyb2tlciwgb3B0aW9ucywg
Y2xpZW50LCB3b3JrZXJfY2xhc3MpCi0gICAgICAgIHNlbGYuX3BsYXRmb3JtX25hbWUgPSBwb3J0
LnJlYWxfbmFtZSgpCi0KLSAgICBkZWYgc3RhcnRfd29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIs
IHJlc3VsdHNfZGlyZWN0b3J5KToKLSAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBfTXVsdGlQ
cm9jZXNzV29ya2VyQ29ubmVjdGlvbihzZWxmLl9icm9rZXIsIHNlbGYuX3BsYXRmb3JtX25hbWUs
Ci0gICAgICAgICAgICBzZWxmLl93b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNf
ZGlyZWN0b3J5LCBzZWxmLl9vcHRpb25zKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIs
IGNsaWVudCwgd29ya2VyX2NsYXNzKToKKyAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9faW5p
dF9fKHNlbGYsIGJyb2tlciwgY2xpZW50LCB3b3JrZXJfY2xhc3MpCisKKyAgICBkZWYgc3RhcnRf
d29ya2VyKHNlbGYsIHdvcmtlcl9udW1iZXIsIHBvcnQ9Tm9uZSwgKip3b3JrZXJfYXJncyk6Cisg
ICAgICAgICMgV2UgZG9uJ3Qgc3RvcmUgdGhlIHBvcnQgYmVjYXVzZSB3b3JrZXJzIHJ1biBpbiBz
ZXBhcmF0ZSBwcm9jZXNzZXMgYW5kCisgICAgICAgICMgd2UgY2FuJ3QgcmVxdWlyZSB0aGUgcGFy
ZW50J3MgcG9ydCB0byBiZSBwaWNrbGVhYmxlIGFuZCBzaGFyZWQgd2l0aCB0aGUgY2hpbGQuCisg
ICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gX011bHRpUHJvY2Vzc1dvcmtlckNvbm5lY3Rpb24o
c2VsZi5fYnJva2VyLAorICAgICAgICAgICAgc2VsZi5fd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVt
YmVyLCAqKndvcmtlcl9hcmdzKQogICAgICAgICB3b3JrZXJfY29ubmVjdGlvbi5zdGFydCgpCiAg
ICAgICAgIHJldHVybiB3b3JrZXJfY29ubmVjdGlvbgogCiAKIGNsYXNzIF9Xb3JrZXJDb25uZWN0
aW9uKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3Rv
cnksIG9wdGlvbnMpOgotICAgICAgICBzZWxmLl9jbGllbnQgPSB3b3JrZXJfY2xhc3Moc2VsZiwg
d29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9h
cmdzKToKKyAgICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYsIHdvcmtlcl9u
dW1iZXIsICoqd29ya2VyX2FyZ3MpCiAgICAgICAgIHNlbGYubmFtZSA9IHNlbGYuX2NsaWVudC5u
YW1lKCkKICAgICAgICAgbWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbi5fX2luaXRfXyhz
ZWxmLCBicm9rZXIsIHNlbGYuX2NsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBTllfV09SS0VSX1RPUElDLCBNQU5BR0VSX1RPUElDKQpAQCAt
MjE1LDEwICsxOTIsMTIgQEAgY2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIu
QnJva2VyQ29ubmVjdGlvbik6CiAKIAogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dv
cmtlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1h
bmFnZXJfY2xpZW50LCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0
b3J5LCBvcHRpb25zKToKLSAgICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwg
YnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBv
cHRpb25zKQotICAgICAgICBzZWxmLl9hbGl2ZSA9IEZhbHNlCisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGJyb2tlciwgbWFuYWdlcl9jbGllbnQsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwg
cG9ydCwgKip3b3JrZXJfYXJncyk6CisgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9f
KHNlbGYsIGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdz
KQorCisgICAgICAgICMgU2VlIGNvbW1lbnQgaW4gSW5saW5lV29ya2VyQnJva2VyLnN0YXJ0X3dv
cmtlcigpIGZvciB3aHkgd2UgaGF2ZSBwb3J0IGhlcmUuCiAgICAgICAgIHNlbGYuX3BvcnQgPSBw
b3J0CisgICAgICAgIHNlbGYuX2FsaXZlID0gRmFsc2UKICAgICAgICAgc2VsZi5fbWFuYWdlcl9j
bGllbnQgPSBtYW5hZ2VyX2NsaWVudAogCiAgICAgZGVmIGNhbmNlbChzZWxmKToKQEAgLTI0OCw0
MyArMjI3LDE5IEBAIGNsYXNzIF9JbmxpbmVXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0
aW9uKToKIGlmIG11bHRpcHJvY2Vzc2luZzoKIAogICAgIGNsYXNzIF9Qcm9jZXNzKG11bHRpcHJv
Y2Vzc2luZy5Qcm9jZXNzKToKLSAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25u
ZWN0aW9uLCBwbGF0Zm9ybV9uYW1lLCBvcHRpb25zLCBjbGllbnQpOgorICAgICAgICBkZWYgX19p
bml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIGNsaWVudCk6CiAgICAgICAgICAgICBtdWx0
aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmKQogICAgICAgICAgICAgc2VsZi5fd29y
a2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICAgICAgc2VsZi5fcGxh
dGZvcm1fbmFtZSA9IHBsYXRmb3JtX25hbWUKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBv
cHRpb25zCiAgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQKIAogICAgICAgICBkZWYg
cnVuKHNlbGYpOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0IG9i
amVjdCBoZXJlIGJlY2F1c2UgdGhpcyBpcwotICAgICAgICAgICAgIyBydW5uaW5nIGluIGEgbmV3
IHByb2Nlc3MgYW5kIHdlIGNhbid0IHJlcXVpcmUgdGhlIHBhcmVudCdzCi0gICAgICAgICAgICAj
IEhvc3QgdG8gYmUgcGlja2xlYWJsZSBhbmQgcGFzc2VkIHRvIHRoZSBjaGlsZC4KLSAgICAgICAg
ICAgIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUuc3RhcnRzd2l0aCgndGVzdCcpOgotICAgICAgICAg
ICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGhvc3QgPSBIb3N0KCkKLSAgICAgICAgICAgIGhvc3QuX2luaXRpYWxpemVfc2NtKCkKLQot
ICAgICAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgICAgIHBvcnRfb2Jq
ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIG9wdGlvbnMpCi0K
LSAgICAgICAgICAgICMgVGhlIHVuaXggbXVsdGlwcm9jZXNzaW5nIGltcGxlbWVudGF0aW9uIGNs
b25lcyB0aGUKLSAgICAgICAgICAgICMgbG9nIGhhbmRsZXIgY29uZmlndXJhdGlvbiBpbnRvIHRo
ZSBjaGlsZCBwcm9jZXNzZXMsCi0gICAgICAgICAgICAjIGJ1dCB0aGUgd2luIGltcGxlbWVudGF0
aW9uIGRvZXNuJ3QuCi0gICAgICAgICAgICBjb25maWd1cmVfbG9nZ2luZyA9IChzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJykKLQotICAgICAgICAgICAgIyBGSVhNRTogdGhpcyB3b24ndCB3b3JrIGlm
IHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgbG9nZ2luZwotICAgICAgICAgICAgIyBzb21ld2hlcmUg
b3RoZXIgdGhhbiBzeXMuc3RkZXJyIGFuZCBzeXMuc3Rkb3V0LCBidXQgSSdtIG5vdCBzdXJlCi0g
ICAgICAgICAgICAjIGlmIHRoaXMgd2lsbCBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS4KLSAgICAg
ICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnRfb2JqLCBvcHRpb25zLCBzeXMu
c3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1cmVfbG9nZ2luZykKLSAgICAgICAgICAgIHNlbGYu
X2NsaWVudC5ydW4ocG9ydF9vYmopCi0gICAgICAgICAgICBwcmludGVyLmNsZWFudXAoKQorICAg
ICAgICAgICAgc2VsZi5fY2xpZW50LnJ1bigpCiAKIAogY2xhc3MgX011bHRpUHJvY2Vzc1dvcmtl
ckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
cm9rZXIsIHBsYXRmb3JtX25hbWUsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0
c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBfV29ya2VyQ29ubmVjdGlvbi5fX2luaXRf
XyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJl
Y3RvcnksIG9wdGlvbnMpCi0gICAgICAgIHNlbGYuX3Byb2MgPSBfUHJvY2VzcyhzZWxmLCBwbGF0
Zm9ybV9uYW1lLCBvcHRpb25zLCBzZWxmLl9jbGllbnQpCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdzKToKKyAg
ICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xh
c3MsIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpCisgICAgICAgIHNlbGYuX3Byb2MgPSBf
UHJvY2VzcyhzZWxmLCBzZWxmLl9jbGllbnQpCiAKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAg
ICAgICByZXR1cm4gc2VsZi5fcHJvYy50ZXJtaW5hdGUoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJv
a2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CmluZGV4IDhlNjNmOTNl
YzE1OTBlNjcyZmQ5YjA2NGExNDNjNDQyZGUwN2FjYzMuLjBiMjE4ZGIwYWE0NDNkMTA0M2YyMDk4
ZTg0ZTk4NTVmOTYzN2ZhZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHkKQEAgLTM4LDkgKzM4LDcgQEAgZXhjZXB0IElt
cG9ydEVycm9yOgogCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgb3V0cHV0
Y2FwdHVyZQotZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAog
Ci1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1hbmFnZXJfd29ya2VyX2Jyb2tlcgogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMgaW1wb3J0IG1lc3NhZ2VfYnJva2Vy
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKQEAgLTYw
LDE2ICs1OCwxMiBAQCBkZWYgbWFrZV9icm9rZXIobWFuYWdlciwgd29ya2VyX21vZGVsLCBzdGFy
dF9xdWV1ZT1Ob25lLCBzdG9wX3F1ZXVlPU5vbmUpOgogICAgIGdsb2JhbCBzdG9wcGluZ19xdWV1
ZQogICAgIHN0YXJ0aW5nX3F1ZXVlID0gc3RhcnRfcXVldWUKICAgICBzdG9wcGluZ19xdWV1ZSA9
IHN0b3BfcXVldWUKLSAgICBvcHRpb25zID0gZ2V0X29wdGlvbnMod29ya2VyX21vZGVsKQotICAg
IGhvc3QgPSBNb2NrSG9zdCgpCi0gICAgdGVzdF9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0
KCJ0ZXN0IikKLSAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldCh0ZXN0X3BvcnQs
IG9wdGlvbnMsIG1hbmFnZXIsIF9UZXN0V29ya2VyKQorICAgIHJldHVybiBtYW5hZ2VyX3dvcmtl
cl9icm9rZXIuZ2V0KHdvcmtlcl9tb2RlbCwgbWFuYWdlciwgX1Rlc3RXb3JrZXIpCiAKIAogY2xh
c3MgX1Rlc3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyX2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsIHJl
c3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2Vy
X2Nvbm5lY3Rpb24sIHdvcmtlcl9udW1iZXIsICoqd29ya2VyX2FyZ3MpOgogICAgICAgICBzZWxm
Ll9icm9rZXJfY29ubmVjdGlvbiA9IGJyb2tlcl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYuX29w
dGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3dvcmtlcl9udW1iZXIgPSB3b3JrZXJfbnVt
YmVyCiAgICAgICAgIHNlbGYuX25hbWUgPSAnVGVzdFdvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVy
CiAgICAgICAgIHNlbGYuX3N0b3BwZWQgPSBGYWxzZQpAQCAtOTQsNyArODgsNyBAQCBjbGFzcyBf
VGVzdFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgIGRl
ZiBjYW5jZWwoc2VsZik6CiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gVHJ1ZQogCi0gICAgZGVm
IHJ1bihzZWxmLCBwb3J0KToKKyAgICBkZWYgcnVuKHNlbGYsIHBvcnQ9Tm9uZSk6CiAgICAgICAg
IGlmIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlOgogICAgICAgICAgICAgc2VsZi5fc3RhcnRpbmdfcXVl
dWUucHV0KCcnKQogCkBAIC0xMDgsMTcgKzEwMiw2IEBAIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFn
ZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgICAgICBzZWxmLl9icm9r
ZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2V4Y2VwdGlvbicsICh0eXBlKGUpLCBzdHIoZSks
IE5vbmUpKQogCiAKLWRlZiBnZXRfb3B0aW9ucyh3b3JrZXJfbW9kZWwpOgotICAgIG9wdGlvbl9s
aXN0ID0gKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50aW1lX29wdGlvbnMoKSArCi0gICAgICAg
ICAgICAgICAgICAgcHJpbnRpbmcucHJpbnRfb3B0aW9ucygpICsKLSAgICAgICAgICAgICAgICAg
ICBbb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZXhwZXJpbWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwg
ZGVmYXVsdD1GYWxzZSksCi0gICAgICAgICAgICAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9u
KCItLWNoaWxkLXByb2Nlc3NlcyIsIGRlZmF1bHQ9JzInKV0pCi0gICAgcGFyc2VyID0gb3B0cGFy
c2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PW9wdGlvbl9saXN0KQotICAgIG9wdGlvbnMsIGFy
Z3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPVsnLS13b3JrZXItbW9kZWwnLCB3b3JrZXJfbW9k
ZWxdKQotICAgIHJldHVybiBvcHRpb25zCi0KLQotCiBjbGFzcyBGdW5jdGlvblRlc3RzKHVuaXR0
ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9nZXRfX2lubGluZShzZWxmKToKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKSBpcyBub3QgTm9uZSkK
QEAgLTE3Miw3ICsxNTUsNyBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVm
IHRlc3RfY2FuY2VsKHNlbGYpOgogICAgICAgICBzZWxmLm1ha2VfYnJva2VyKCkKLSAgICAgICAg
d29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwLCBOb25lKQorICAgICAgICB3b3Jr
ZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDApCiAgICAgICAgIHdvcmtlci5jYW5jZWwo
KQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3
b3JsZCcpCiAgICAgICAgIHdvcmtlci5qb2luKDAuNSkKQEAgLTE4MCw3ICsxNjMsNyBAQCBjbGFz
cyBfVGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfZG9uZShzZWxmKToKICAgICAg
ICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFy
dF93b3JrZXIoMCwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dv
cmtlcigwKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hl
bGxvLCB3b3JsZCcpCiAgICAgICAgIHNlbGYuX2Jyb2tlci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQog
ICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2VfbG9vcCgpCkBAIC0xOTIsNyArMTc1LDcg
QEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAogICAgIGRlZiB0ZXN0X3Vua25vd25fbWVz
c2FnZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdvcmtlciA9
IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCwgTm9uZSkKKyAgICAgICAgd29ya2VyID0gc2Vs
Zi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNz
YWdlKCd1bmtub3duJykKICAgICAgICAgc2VsZi5fYnJva2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQog
ICAgICAgICB3b3JrZXIuam9pbigwLjUpCkBAIC0yMTYsMTQgKzE5OSw2IEBAIGlmIG11bHRpcHJv
Y2Vzc2luZyBhbmQgc3lzLnBsYXRmb3JtIG5vdCBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgogICAg
ICAgICAgICAgcmV0dXJuIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpCiAKIAotY2xhc3MgRnVuY3Rp
b25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcnVudGltZV9vcHRpb25z
KHNlbGYpOgotICAgICAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50
aW1lX29wdGlvbnMoKQotICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIob3B0
aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFy
c2VfYXJncyhbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMpCi0KLQogY2xhc3Mg
SW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0cyBtb3N0
bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgogCkBAIC0yMzMsMTQgKzIwOCwxNCBAQCBjbGFz
cyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBUZXN0IHRoYXQg
YWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZlIHRoZQogICAg
ICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1ha2VfYnJva2Vy
KHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01h
bmFnZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmLCBOb25lKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2Vy
LCAwLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01hbmFnZXJD
b25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2VyLCAwKQogCiAgICAg
ZGVmIHRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChzZWxmKToKICAgICAgICAgIyBU
ZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZl
IHRoZQogICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1h
a2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCAwLCBO
b25lLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX1dvcmtlckNv
bm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCAwKQogICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouY2FuY2VsKQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouaXNfYWxpdmUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5qb2luLCBOb25lKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbWVzc2FnZV9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQppbmRleCBkNThhNmNkMTFiYjg4MzRmZjRl
YmViZDAxNzNkMTRmNjM3OTMxZmRkLi5mNjRkMzZkNGI0NWU0NWZmZWFlZTNhMThjODk3NWU4N2Qz
YmE1NmYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQpAQCAtOTQsMTMgKzk0
LDExIEBAIGNsYXNzIEJyb2tlcihvYmplY3QpOgogICAgIG1lc3NhZ2UgdG8gYW55IHRvcGljIHVz
aW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24gb25lCiAgICAg
dG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zLCBxdWV1ZV9tYWtlcik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHF1ZXVlX21ha2VyKToKICAgICAgICAgIiIiQXJnczoKLSAgICAgICAgICAgIG9wdGlvbnM6
IGEgcnVudGltZSBvcHRpb24gY2xhc3MgZnJvbSBvcHRwYXJzZQogICAgICAgICAgICAgcXVldWVf
bWFrZXI6IGEgZmFjdG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVtZW50aW5n
IGEKICAgICAgICAgICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4KICAgICAg
ICAgIiIiCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNlbGYuX3F1
ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKICAgICAgICAgc2VsZi5fdG9waWNzID0ge30KIApkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMv
d29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CmluZGV4IGZjNzgzMWRmYjY3YzYyZDJjZTU5MWJlMTJhNzU4NjFjODI5Yzg0
Y2YuLjYwYjUzZTQwNDY3ZjQxNjA5ODA5NjgzYmViYzY0NjE5M2YyOTMyMjIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93
b3JrZXIucHkKQEAgLTMzLDQzICszMyw2NCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5n
CiBpbXBvcnQgdGltZQogCisjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJzIGFyZSBsYXVu
Y2hlZCBpbiBuZXcgY2hpbGQgcHJvY2Vzc2VzLgorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBp
bXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9z
dAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdl
cl93b3JrZXJfYnJva2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBp
bXBvcnQgc2luZ2xlX3Rlc3RfcnVubmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2Rl
bHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5t
b2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmll
d3MgaW1wb3J0IHByaW50aW5nCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9f
KQogCiAKIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJl
ciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuQWJzdHJhY3RXb3JrZXIuX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHdv
cmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBfX2luaXRf
XyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3Rv
cnk9Tm9uZSwgb3B0aW9ucz1Ob25lLCByZWFsX3BvcnRfbmFtZT1Ob25lKToKKyAgICAgICAgbWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyLl9faW5pdF9fKHNlbGYsIHdvcmtlcl9j
b25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9y
eSA9IHJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCisg
ICAgICAgIHNlbGYuX3JlYWxfcG9ydF9uYW1lID0gcmVhbF9wb3J0X25hbWUKICAgICAgICAgc2Vs
Zi5fZG9uZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKLSAgICAgICAg
c2VsZi5fcG9ydCA9IE5vbmUKLSAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9IE5vbmUKLSAgICAg
ICAgc2VsZi5fYmF0Y2hfY291bnQgPSBOb25lCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBO
b25lCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKLSAgICAgICAgc2VsZi5fdGVzdHNfcnVu
X2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlbmFtZSA9IE5vbmUKIAog
ICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsZWFudXAoKQogCi0gICAgZGVm
IHNhZmVfaW5pdChzZWxmLCBwb3J0KToKKyAgICBkZWYgX2ZpbmlzaF9pbml0aWFsaXppbmcoc2Vs
ZiwgcG9ydCk6CiAgICAgICAgICIiIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3
aGVuIGl0IGlzIGlzIHNhZmUgZm9yIHRoZSBtaXhpbgogICAgICAgICB0byBjcmVhdGUgc3RhdGUg
dGhhdCBjYW4ndCBiZSBQaWNrbGVkLgogCiAgICAgICAgIFRoaXMgcm91dGluZSBleGlzdHMgc28g
dGhhdCB0aGUgbWl4aW4gY2FuIGJlIGNyZWF0ZWQgYW5kIHRoZW4gbWFyc2hhbGVkCiAgICAgICAg
IGFjcm9zcyBpbnRvIGEgY2hpbGQgcHJvY2Vzcy4iIiIKKyAgICAgICAgaWYgbm90IHBvcnQ6Cisg
ICAgICAgICAgICBpZiAndGVzdCcgaW4gc2VsZi5fcmVhbF9wb3J0X25hbWU6CisgICAgICAgICAg
ICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAg
ICAgaG9zdCA9IEhvc3QoKQorICAgICAgICAgICAgaG9zdC5faW5pdGlhbGl6ZV9zY20oKQorICAg
ICAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChzZWxmLl9yZWFsX3BvcnRfbmFt
ZSwgc2VsZi5fb3B0aW9ucykKKwogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorCisgICAgICAg
ICMgVGhlIHVuaXggbXVsdGlwcm9jZXNzaW5nIGltcGxlbWVudGF0aW9uIGNsb25lcyB0aGUKKyAg
ICAgICAgIyBsb2cgaGFuZGxlciBjb25maWd1cmF0aW9uIGludG8gdGhlIGNoaWxkIHByb2Nlc3Nl
cywKKyAgICAgICAgIyBidXQgdGhlIHdpbiBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0LgorICAgICAg
ICBjb25maWd1cmVfbG9nZ2luZyA9IChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykKKworICAgICAg
ICAjIEZJWE1FOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhlIGNhbGxpbmcgcHJvY2VzcyBpcyBsb2dn
aW5nCisgICAgICAgICMgc29tZXdoZXJlIG90aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQgc3lzLnN0
ZG91dCwgYnV0IEknbSBub3Qgc3VyZQorICAgICAgICAjIGlmIHRoaXMgd2lsbCBiZSBhbiBpc3N1
ZSBpbiBwcmFjdGljZS4KKyAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50aW5nLlByaW50ZXIo
cG9ydCwgc2VsZi5fb3B0aW9ucywgc3lzLnN0ZGVyciwgc3lzLnN0ZG91dCwgY29uZmlndXJlX2xv
Z2dpbmcpCisKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHBvcnQuaG9zdC5maWxlc3lzdGVt
CiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9iYXRjaF9zaXpl
ID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplIG9yIDAKICAgICAgICAgdGVzdHNfcnVuX2ZpbGVu
YW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGVz
dHNfcnVuJWQudHh0IiAlIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgIHNlbGYuX3Rlc3Rz
X3J1bl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyh0
ZXN0c19ydW5fZmlsZW5hbWUpCisgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKIAogICAgIGRl
ZiBjYW5jZWwoc2VsZik6CiAgICAgICAgICIiIkF0dGVtcHQgdG8gYWJvcnQgcHJvY2Vzc2luZyAo
YmVzdCBlZmZvcnQpLiIiIgpAQCAtODEsOCArMTAyLDggQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgZGVmIG5hbWUoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzZWxmLl9uYW1lCiAKLSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgotICAgICAg
ICBzZWxmLnNhZmVfaW5pdChwb3J0KQorICAgIGRlZiBydW4oc2VsZiwgcG9ydD1Ob25lKToKKyAg
ICAgICAgc2VsZi5fZmluaXNoX2luaXRpYWxpemluZyhwb3J0KQogCiAgICAgICAgIGV4Y2VwdGlv
bl9tc2cgPSAiIgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBzdGFydGluZyIgJSBzZWxmLl9uYW1l
KQpAQCAtMTAyLDYgKzEyMyw3IEBAIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIu
QWJzdHJhY3RXb3JrZXIpOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSB3aXRoIG1l
c3NhZ2UgbG9vcCVzIiAlIChzZWxmLl9uYW1lLCBleGNlcHRpb25fbXNnKSkKICAgICAgICAgICAg
IHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZG9uZScpCiAgICAgICAgICAg
ICBzZWxmLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5jbGVhbnVwKCkKICAg
ICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRpbmciICUgc2VsZi5fbmFtZSkKIAogICAgIGRl
ZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1lLCB0ZXN0X2xpc3QpOgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126401</attachid>
            <date>2012-02-09 16:20:54 -0800</date>
            <delta_ts>2012-02-13 19:12:27 -0800</delta_ts>
            <desc>clean up, annotate changelog</desc>
            <filename>bug-78171-20120209162053.patch</filename>
            <type>text/plain</type>
            <size>26678</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3Mjk1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTdlNGQ1YTg1ZGZhOTNjMDZlNjA2Mzg1M2NhNTZjNjhk
NTA2NjFlYS4uOTgzYzNiNmNlMjY0MTE4NTMzNTNlMmI3MGMyN2E5OGM5YmE2Yzc5MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDY0
IEBACiAyMDEyLTAyLTA5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIHdlYmtpdHB5OiBzdGFydCBjbGVhbmluZyB1cCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIg
aW4gcHJlcCBmb3IgcmV1c2UgYnkgdGVzdC13ZWJraXRweQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgxNzEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJIHdhbnQgdG8gYmUgYWJsZSB0byByZS11c2UgdGhl
IHdvcmtlciBxdWV1ZSBsb2dpYyBmcm9tCisgICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIGlu
IHRlc3Qtd2Via2l0cHkuIEluIG9yZGVyIHRvIGRvIHRoaXMgSQorICAgICAgICBuZWVkIHRvIHJl
bW92ZSBhbGwgb2YgdGhlIE5SV1Qtc3BlY2lmaWMgbG9naWMgZnJvbSB0aGUgd29ya2VyCisgICAg
ICAgIHF1ZXVlLCBhbmQgcmVmYWN0b3IgdGhpbmdzIGEgYml0IHNvIHRoZSBpbnRlcmZhY2UgaXMg
c2ltcGxlci4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgb2Ygc2V2ZXJhbCBwYXRjaGVzIGZv
ciB0aGF0LgorCisgICAgICAgIFdpdGggdGhpcyBwYXRjaCBtZXNzYWdlX2Jyb2tlci5weSBhbmQg
bWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CisgICAgICAgIG5vIGxvbmdlciBkZXBlbmQgb24gYW4g
b3B0aW9ucyBhcmd1bWVudCAoaXQgd2FzIG9ubHkgdXNpbmcgdGhlCisgICAgICAgIHdvcmtlcl9t
b2RlbCBmbGFnLCB3aGljaCBpcyBub3cgYSBzdHJpbmcgYXJndW1lbnQgdG8gZ2V0KCkpLCBubwor
ICAgICAgICBsb25nZXIgZGVwZW5kcyBvbiBiZWluZyBoYW5kZWQgYSBQb3J0IG9iamVjdCwgbm8g
bG9uZ2VyIGNvbnN0cnVjdHMKKyAgICAgICAgSG9zdCBvYmplY3RzIGluIHRoZSBjaGlsZCBwcm9j
ZXNzZXMsIGFuZCBub3cgcGFzc2VzIGEgc2V0IG9mCisgICAgICAgIGtleXdvcmQgYXJncyB0byBz
dGFydF93b3JrZXIoKSBpbnN0ZWFkIG9mIGEgaGFyZC1jb2RlZCBsaXN0IG9mCisgICAgICAgIE5S
V1Qtc3BlY2lmaWMgYXJncy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9ydW5fdGVzdHMp
OiB1cGRhdGUgdy8gbmV3IHNpZ25hdHVyZXMgaW4gZ2V0KCksIHN0YXJ0X3dvcmtlcigpCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
X3dvcmtlcl9icm9rZXIucHk6CisgICAgICAgIChnZXQpOiB0YWtlIHdvcmtlcl9tb2RlbCBhcyBh
biBhcmcgaW5zdGVhZCBvZiBvcHRpb25zLCByZW1vdmUKKyAgICAgICAgdGhlIHJ1bnRpbWVfb3B0
aW9ucygpIGZ1bmN0aW9uIHdoaWNoIHdhc24ndCB1c2VkIGFueXdheS4KKyAgICAgICAgKEFic3Ry
YWN0V29ya2VyLl9faW5pdF9fKTogcmVtb3ZlIGxheW91dF90ZXN0cy1zcGVjaWZpYyBhcmdzIChu
b3cgcGFzc2VkIHRvIHN0YXJ0X3dvcmtlcikKKyAgICAgICAgKEFic3RyYWN0V29ya2VyLnJ1bik6
IGRpdHRvCisgICAgICAgIChfTWFuYWdlckNvbm5lY3Rpb24uX19pbml0X18pOiByZW1vdmUgbm8t
bG9uZ2VyLW5lZWRlZCBvcHRpb25zIGFyZworICAgICAgICAoX01hbmFnZXJDb25uZWN0aW9uLnN0
YXJ0X3dvcmtlcik6IHRha2UgYSBrZXl3b3JkIGxpc3Qgb2YgY2xpZW50LXNwZWNpZmljIGFyZ3MK
KyAgICAgICAgKF9JbmxpbmVNYW5hZ2VyLl9faW5pdF9fKTogdXBkYXRlIHcvIGludGVyZmFjZSBj
aGFuZ2VzCisgICAgICAgIChfSW5saW5lTWFuYWdlcik6CisgICAgICAgIChfSW5saW5lTWFuYWdl
ci5zdGFydF93b3JrZXIpOiB1c2Uga3dhcmdzLCB3b3JrIGFyb3VuZCBuZWVkaW5nIHRvIHNoYXJl
IGEgcG9ydCBmb3IgdGhlIGludGVncmF0aW9uIHRlc3RzLgorICAgICAgICAoX011bHRpUHJvY2Vz
c01hbmFnZXIuX19pbml0X18pOiB1cGRhdGUgdy8gaW50ZXJmYWNlIGNoYW5nZXMsIHB1c2ggbGF5
b3V0X3Rlc3RzLXNwZWNpZmljIGxvZ2ljIGludG8gV29ya2VyCisgICAgICAgIChfTXVsdGlQcm9j
ZXNzTWFuYWdlcik6CisgICAgICAgIChfTXVsdGlQcm9jZXNzTWFuYWdlci5zdGFydF93b3JrZXIp
OiB1cGRhdGUgdy8gaW50ZXJmYWNlIGNoYW5nZXMuCisgICAgICAgIChfV29ya2VyQ29ubmVjdGlv
bi5fX2luaXRfXyk6IGRpdHRvLgorICAgICAgICAoX0lubGluZVdvcmtlckNvbm5lY3Rpb24uX19p
bml0X18pOiBkaXR0by4KKyAgICAgICAgKF9Qcm9jZXNzLl9faW5pdF9fKTogZGl0dG8uCisgICAg
ICAgIChfUHJvY2Vzcy5ydW4pOiBtb3ZlIGFsbCBvZiB0aGUgbGF5b3V0LXRlc3Qgc3BlY2lmaWMg
bG9naWMgb2YgZGVhbGluZyB3LyBwb3J0cyBhbmQgaG9zdHMgaW50byBXb3JrZXIuCisgICAgICAg
IChfTXVsdGlQcm9jZXNzV29ya2VyQ29ubmVjdGlvbi5fX2luaXRfXyk6IHVwZGF0ZSB3LyBpbnRl
cmZhY2UgY2hhbmdlcy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9icm9rZXJfdW5pdHRlc3QucHk6IGFsbCB0aGUgY2hh
bmdlcyBpbiB0aGlzIGZpbGUgYXJlIGp1c3QgdG8gYWNjb21vZGF0ZSB0aGUgaW50ZXJmYWNlIGNo
YW5nZXMgaW4gdGhlIG90aGVyIGZpbGUuCisgICAgICAgIChtYWtlX2Jyb2tlcik6CisgICAgICAg
IChfVGVzdFdvcmtlci5fX2luaXRfXyk6CisgICAgICAgIChfVGVzdFdvcmtlci5ydW4pOgorICAg
ICAgICAoX1Rlc3RzTWl4aW4udGVzdF9jYW5jZWwpOgorICAgICAgICAoX1Rlc3RzTWl4aW4udGVz
dF9kb25lKToKKyAgICAgICAgKF9UZXN0c01peGluLnRlc3RfdW5rbm93bl9tZXNzYWdlKToKKyAg
ICAgICAgKE11bHRpUHJvY2Vzc0Jyb2tlclRlc3RzLnF1ZXVlKToKKyAgICAgICAgKEludGVyZmFj
ZVRlc3QudGVzdF9tYW5hZ2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdCk6CisgICAgICAgIChJbnRl
cmZhY2VUZXN0LnRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdCk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWVzc2FnZV9icm9rZXIu
cHk6CisgICAgICAgIChCcm9rZXIuX19pbml0X18pOiByZW1vdmUgdW5uZWNlc3Nhcnkgb3B0aW9u
cyBhcmd1bWVudC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy93b3JrZXIucHk6CisgICAgICAgIChXb3JrZXIuX19pbml0X18pOiB1cGRhdGUgdy8g
aW50ZXJmYWNlIGNoYW5nZXMsIG1vdmUgbGF5b3V0X3Rlc3RzLXNwZWNpZmljIGxvZ2ljIGZyb20g
bWFuYWdlcl93b3JrZXJfYnJva2VyIGhlcmUuCisgICAgICAgIChXb3JrZXIuX3NhZmVfaW5pdCk6
IGRpdHRvLgorICAgICAgICAoV29ya2VyLnJ1bik6IGRpdHRvLgorCisyMDEyLTAyLTA5ICBEaXJr
IFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIHNvbWUgdGVzdHMgaW4g
d2Via2l0cHkgYXJlIGJlaW5nIHJ1biB0aHJlZSB0aW1lcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzgyODMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5k
ZXggNzExM2JjYjZhM2VhY2MxZGNkYzkxMjZhY2UxOTY1YTkyZDc0Y2JiNy4uMjQ3MDVlYjRjOWU0
Mjc4NDc4Njg4YzYyNzNjYmY0OGMxNDg3MGViNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC03
NTIsMTQgKzc1MiwxNiBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG51bV93b3Jr
ZXJzID0gbWluKGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIGxlbihhbGxfc2hh
cmRzKSkKICAgICAgICAgc2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxs
X3NoYXJkcyksIGxlbihsb2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rp
b24gPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMs
IHNlbGYsIHdvcmtlci5Xb3JrZXIpCisgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFn
ZXJfd29ya2VyX2Jyb2tlci5nZXQoc2VsZi5fb3B0aW9ucy53b3JrZXJfbW9kZWwsIHNlbGYsIHdv
cmtlci5Xb3JrZXIpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgogICAgICAg
ICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90
aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJSBncmFtbWFyLnBs
dXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQogICAgICAgICBmb3Igd29ya2VyX251bWJl
ciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgotICAgICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24g
PSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdvcmtlcl9udW1iZXIsIHNlbGYucmVz
dWx0c19kaXJlY3RvcnkoKSkKKyAgICAgICAgICAgIHdvcmtlcl9jb25uZWN0aW9uID0gbWFuYWdl
cl9jb25uZWN0aW9uLnN0YXJ0X3dvcmtlcih3b3JrZXJfbnVtYmVyLCBwb3J0PXNlbGYuX3BvcnQs
CisgICAgICAgICAgICAgICAgb3B0aW9ucz1zZWxmLl9vcHRpb25zLCByZXN1bHRzX2RpcmVjdG9y
eT1zZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksCisgICAgICAgICAgICAgICAgcmVhbF9wb3J0X25h
bWU9c2VsZi5fcG9ydC5yZWFsX25hbWUoKSkKICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9X
b3JrZXJTdGF0ZSh3b3JrZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKICAgICAgICAgICAg
IHNlbGYuX3dvcmtlcl9zdGF0ZXNbd29ya2VyX2Nvbm5lY3Rpb24ubmFtZV0gPSB3b3JrZXJfc3Rh
dGUKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4
IDM0MTM2ZmYzNzc4MWM5Yjg0YTg5ZmYxMzE2ODM4ZWNiMmEzZGJhNGYuLjQ4ZDBhMmE1NzllMWNj
YjkzZDQ5MzYwMGUyNDNhNWNlNzJjMTM1OTggMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTQ3LDEyICs0Nyw3IEBAIGltcG9ydCBvcHRwYXJzZQog
aW1wb3J0IFF1ZXVlCiBpbXBvcnQgc3lzCiAKLSMgVGhlc2UgYXJlIG5lZWRlZCB3aGVuIHdvcmtl
cnMgYXJlIGxhdW5jaGVkIGluIG5ldyBjaGlsZCBwcm9jZXNzZXMuCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0IGltcG9ydCBIb3N0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1w
b3J0IE1vY2tIb3N0Ci0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGlt
cG9ydCBtZXNzYWdlX2Jyb2tlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1w
b3J0IHByaW50aW5nCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAt
NjQsMjMgKzU5LDExIEBAIE1BTkFHRVJfVE9QSUMgPSAnbWFuYWdlcnMnCiBBTllfV09SS0VSX1RP
UElDID0gJ3dvcmtlcnMnCiAKIAotZGVmIHJ1bnRpbWVfb3B0aW9ucygpOgotICAgICIiIlJldHVy
biBhIGxpc3Qgb2Ygb3B0cGFyc2UuT3B0aW9uIG9iamVjdHMgZm9yIGFueSBydW50aW1lIHZhbHVl
cyB1c2VkCi0gICAgYnkgdGhpcyBtb2R1bGUuIiIiCi0gICAgb3B0aW9ucyA9IFsKLSAgICAgICAg
b3B0cGFyc2UubWFrZV9vcHRpb24oIi0td29ya2VyLW1vZGVsIiwgYWN0aW9uPSJzdG9yZSIsCi0g
ICAgICAgICAgICBoZWxwPSgiY29udHJvbHMgd29ya2VyIG1vZGVsLiBWYWxpZCB2YWx1ZXMgYXJl
ICIKLSAgICAgICAgICAgICInaW5saW5lJyBhbmQgJ3Byb2Nlc3NlcycuIikpLAotICAgIF0KLSAg
ICByZXR1cm4gb3B0aW9ucwotCi0KLWRlZiBnZXQocG9ydCwgb3B0aW9ucywgY2xpZW50LCB3b3Jr
ZXJfY2xhc3MpOgorZGVmIGdldCh3b3JrZXJfbW9kZWwsIGNsaWVudCwgd29ya2VyX2NsYXNzKToK
ICAgICAiIiJSZXR1cm4gYSBjb25uZWN0aW9uIHRvIGEgbWFuYWdlci93b3JrZXIgbWVzc2FnZV9i
cm9rZXIKIAogICAgIEFyZ3M6Ci0gICAgICAgIHBvcnQgLSBoYW5kbGUgdG8gbGF5b3V0X3Rlc3Rz
L3BvcnQgb2JqZWN0IGZvciBwb3J0LXNwZWNpZmljIHN0dWZmCi0gICAgICAgIG9wdGlvbnMgLSBv
cHRwYXJzZSBhcmd1bWVudCBmb3IgY29tbWFuZC1saW5lIG9wdGlvbnMKKyAgICAgICAgd29ya2Vy
X21vZGVsIC0gdHlwZSBvZiB3b3JrZXJzIHRvIHVzZQogICAgICAgICBjbGllbnQgLSBtZXNzYWdl
X2Jyb2tlci5Ccm9rZXJDbGllbnQgaW1wbGVtZW50YXRpb24gdG8gZGlzcGF0Y2gKICAgICAgICAg
ICAgIHJlcGxpZXMgdG8uCiAgICAgICAgIHdvcmtlcl9jbGFzcyAtIHR5cGUgb2Ygd29ya2VycyB0
byBjcmVhdGUuIFRoaXMgY2xhc3MgbXVzdCBpbXBsZW1lbnQKQEAgLTg5LDcgKzcyLDYgQEAgZGVm
IGdldChwb3J0LCBvcHRpb25zLCBjbGllbnQsIHdvcmtlcl9jbGFzcyk6CiAgICAgICAgIEEgaGFu
ZGxlIHRvIGFuIG9iamVjdCB0aGF0IHdpbGwgdGFsayB0byBhIG1lc3NhZ2UgYnJva2VyIGNvbmZp
Z3VyZWQKICAgICAgICAgZm9yIHRoZSBub3JtYWwgbWFuYWdlci93b3JrZXIgY29tbXVuaWNhdGlv
bi4KICAgICAiIiIKLSAgICB3b3JrZXJfbW9kZWwgPSBvcHRpb25zLndvcmtlcl9tb2RlbAogICAg
IGlmIHdvcmtlcl9tb2RlbCA9PSAnaW5saW5lJzoKICAgICAgICAgcXVldWVfY2xhc3MgPSBRdWV1
ZS5RdWV1ZQogICAgICAgICBtYW5hZ2VyX2NsYXNzID0gX0lubGluZU1hbmFnZXIKQEAgLTk5LDEy
ICs4MSwxMiBAQCBkZWYgZ2V0KHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToK
ICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ1bnN1cHBvcnRlZCB2YWx1ZSBm
b3IgLS13b3JrZXItbW9kZWw6ICVzIiAlIHdvcmtlcl9tb2RlbCkKIAotICAgIGJyb2tlciA9IG1l
c3NhZ2VfYnJva2VyLkJyb2tlcihvcHRpb25zLCBxdWV1ZV9jbGFzcykKLSAgICByZXR1cm4gbWFu
YWdlcl9jbGFzcyhicm9rZXIsIHBvcnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKQor
ICAgIGJyb2tlciA9IG1lc3NhZ2VfYnJva2VyLkJyb2tlcihxdWV1ZV9jbGFzcykKKyAgICByZXR1
cm4gbWFuYWdlcl9jbGFzcyhicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKQogCiAKIGNsYXNz
IEFic3RyYWN0V29ya2VyKG1lc3NhZ2VfYnJva2VyLkJyb2tlckNsaWVudCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2Rp
cmVjdG9yeSwgb3B0aW9ucyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0
aW9uLCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgIiIiVGhlIGNvbnN0cnVjdG9yIHNob3VsZCBi
ZSB1c2VkIHRvIGRvIGFueSBzaW1wbGUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgbmVjZXNzYXJ5
LCBidXQgc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0aGF0IGNyZWF0ZXMgZGF0YSBzdHJ1Y3R1cmVz
CiAgICAgICAgIHRoYXQgY2Fubm90IGJlIFBpY2tsZWQgb3Igc2VudCBhY3Jvc3MgcHJvY2Vzc2Vz
IChsaWtlIG9wZW5pbmcKQEAgLTExNCwxNiArOTYsMTMgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIo
bWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50KToKICAgICAgICAgQXJnczoKICAgICAgICAgICAg
IHdvcmtlcl9jb25uZWN0aW9uIC0gaGFuZGxlIHRvIHRoZSBCcm9rZXJDb25uZWN0aW9uIG9iamVj
dCBjcmVhdGluZwogICAgICAgICAgICAgICAgIHRoZSB3b3JrZXIgYW5kIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIG1lc3NhZ2luZy4KLSAgICAgICAgICAgIHdvcmtlcl9udW1iZXIgLSBpZGVudGlmaWVy
IGZvciB0aGlzIHBhcnRpY3VsYXIgd29ya2VyCi0gICAgICAgICAgICBvcHRpb25zIC0gY29tbWFu
ZC1saW5lIGFyZ3VtZW50IG9iamVjdCBmcm9tIG9wdHBhcnNlIiIiCisgICAgICAgICAgICB3b3Jr
ZXJfbnVtYmVyIC0gaWRlbnRpZmllciBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmtlciIiIgogICAg
ICAgICBtZXNzYWdlX2Jyb2tlci5Ccm9rZXJDbGllbnQuX19pbml0X18oc2VsZikKICAgICAgICAg
c2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24gPSB3b3JrZXJfY29ubmVjdGlvbgotICAgICAgICBzZWxm
Ll9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl93b3JrZXJfbnVtYmVyID0gd29ya2Vy
X251bWJlcgogICAgICAgICBzZWxmLl9uYW1lID0gJ3dvcmtlci8lZCcgJSB3b3JrZXJfbnVtYmVy
Ci0gICAgICAgIHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5ID0gcmVzdWx0c19kaXJlY3RvcnkKIAot
ICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgIiIi
Q2FsbGJhY2sgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgZXhlY3V0aW5nLiBUeXBpY2FsbHkgZG9l
cyBhbnkKICAgICAgICAgcmVtYWluaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGNhbGxzIGJy
b2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcgpAQCAtMTM2LDMzICsxMTUsMzQgQEAgY2xhc3MgQWJzdHJhY3RXb3Jr
ZXIobWVzc2FnZV9icm9rZXIuQnJva2VyQ2xpZW50KToKIAogCiBjbGFzcyBfTWFuYWdlckNvbm5l
Y3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbik6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGJyb2tlciwgb3B0aW9ucywgY2xpZW50LCB3b3JrZXJfY2xhc3MpOgorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBicm9rZXIsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKICAgICAgICAgIiIi
QmFzZSBpbml0aWFsaXphdGlvbiBmb3IgYWxsIE1hbmFnZXIgb2JqZWN0cy4KIAogICAgICAgICBB
cmdzOgogICAgICAgICAgICAgYnJva2VyOiBoYW5kbGUgdG8gdGhlIG1lc3NhZ2VfYnJva2VyIG9i
amVjdAotICAgICAgICAgICAgb3B0aW9uczogY29tbWFuZCBsaW5lIG9wdGlvbnMgb2JqZWN0CiAg
ICAgICAgICAgICBjbGllbnQ6IGNhbGxiYWNrIG9iamVjdCAodGhlIGNhbGxlcikKICAgICAgICAg
ICAgIHdvcmtlcl9jbGFzczogY2xhc3Mgb2JqZWN0IHRvIHVzZSB0byBjcmVhdGUgd29ya2Vycy4K
ICAgICAgICAgIiIiCiAgICAgICAgIG1lc3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24uX19p
bml0X18oc2VsZiwgYnJva2VyLCBjbGllbnQsCiAgICAgICAgICAgICBNQU5BR0VSX1RPUElDLCBB
TllfV09SS0VSX1RPUElDKQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAg
ICBzZWxmLl93b3JrZXJfY2xhc3MgPSB3b3JrZXJfY2xhc3MKIAotICAgIGRlZiBzdGFydF93b3Jr
ZXIoc2VsZiwgd29ya2VyX251bWJlciwgcmVzdWx0c19kaXJlY3RvcnkpOgorICAgIGRlZiBzdGFy
dF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlciwgKip3b3JrZXJfYXJncyk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogCiBjbGFzcyBfSW5saW5lTWFuYWdlcihfTWFuYWdl
ckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG9wdGlv
bnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKLSAgICAgICAgX01hbmFnZXJDb25uZWN0aW9uLl9f
aW5pdF9fKHNlbGYsIGJyb2tlciwgb3B0aW9ucywgY2xpZW50LCB3b3JrZXJfY2xhc3MpCi0gICAg
ICAgIHNlbGYuX3BvcnQgPSBwb3J0CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlciwgY2xp
ZW50LCB3b3JrZXJfY2xhc3MpOgorICAgICAgICBfTWFuYWdlckNvbm5lY3Rpb24uX19pbml0X18o
c2VsZiwgYnJva2VyLCBjbGllbnQsIHdvcmtlcl9jbGFzcykKICAgICAgICAgc2VsZi5faW5saW5l
X3dvcmtlciA9IE5vbmUKIAotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJl
ciwgcmVzdWx0c19kaXJlY3RvcnkpOgotICAgICAgICBzZWxmLl9pbmxpbmVfd29ya2VyID0gX0lu
bGluZVdvcmtlckNvbm5lY3Rpb24oc2VsZi5fYnJva2VyLCBzZWxmLl9wb3J0LAotICAgICAgICAg
ICAgc2VsZi5fY2xpZW50LCBzZWxmLl93b3JrZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3Vs
dHNfZGlyZWN0b3J5LCBzZWxmLl9vcHRpb25zKQorICAgICMgRklYTUU6IFdlIGluY2x1ZGUgdGhl
ICdwb3J0JyBzbyB0aGF0IHdlIGNhbiBzaGFyZSBhIHNpbmdsZSBwb3J0IG9iamVjdAorICAgICMg
YmV0d2VlbiBtYW5hZ2VyIGFuZCB3b3JrZXIgZm9yIHRoZSB0ZXN0cyBpbiBydW5fd2Via2l0X3Rl
c3RzX2ludGVncmF0aW9udGVzdC4KKyAgICAjIFRoZXNlIHRlc3RzIHNob3VsZCBub3QgYmUgYWxs
b3dlZCB0byBkbyB0aGF0IGFuZCBuZWVkIHRvIGJlIGZpeGVkIChidWcgNzgxNjgpLgorICAgIGRl
ZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlciwgcG9ydD1Ob25lLCAqKndvcmtlcl9h
cmdzKToKKyAgICAgICAgc2VsZi5faW5saW5lX3dvcmtlciA9IF9JbmxpbmVXb3JrZXJDb25uZWN0
aW9uKHNlbGYuX2Jyb2tlciwKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudCwgc2VsZi5fd29ya2Vy
X2NsYXNzLCB3b3JrZXJfbnVtYmVyLCBwb3J0LCAqKndvcmtlcl9hcmdzKQorCiAgICAgICAgIHJl
dHVybiBzZWxmLl9pbmxpbmVfd29ya2VyCiAKICAgICBkZWYgcnVuX21lc3NhZ2VfbG9vcChzZWxm
LCBkZWxheV9zZWNzPU5vbmUpOgpAQCAtMTczLDI0ICsxNTMsMTggQEAgY2xhc3MgX0lubGluZU1h
bmFnZXIoX01hbmFnZXJDb25uZWN0aW9uKToKIAogCiBjbGFzcyBfTXVsdGlQcm9jZXNzTWFuYWdl
cihfTWFuYWdlckNvbm5lY3Rpb24pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBv
cnQsIG9wdGlvbnMsIGNsaWVudCwgd29ya2VyX2NsYXNzKToKLSAgICAgICAgIyBOb3RlIHRoYXQg
dGhpcyBjbGFzcyBkb2VzIG5vdCBrZWVwIGEgaGFuZGxlIHRvIHRoZSBhY3R1YWwgcG9ydAotICAg
ICAgICAjIG9iamVjdCwgYmVjYXVzZSBpdCBpc24ndCBQaWNrbGFibGUuIEluc3RlYWQgaXQga2Vl
cHMgdGhlIHBvcnQKLSAgICAgICAgIyBuYW1lIGFuZCByZWNyZWF0ZXMgdGhlIHBvcnQgaW4gdGhl
IGNoaWxkIHByb2Nlc3MgZnJvbSB0aGUgbmFtZQotICAgICAgICAjIGFuZCBvcHRpb25zLgotICAg
ICAgICBfTWFuYWdlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCBvcHRpb25zLCBj
bGllbnQsIHdvcmtlcl9jbGFzcykKLSAgICAgICAgc2VsZi5fcGxhdGZvcm1fbmFtZSA9IHBvcnQu
cmVhbF9uYW1lKCkKLQotICAgIGRlZiBzdGFydF93b3JrZXIoc2VsZiwgd29ya2VyX251bWJlciwg
cmVzdWx0c19kaXJlY3RvcnkpOgotICAgICAgICB3b3JrZXJfY29ubmVjdGlvbiA9IF9NdWx0aVBy
b2Nlc3NXb3JrZXJDb25uZWN0aW9uKHNlbGYuX2Jyb2tlciwgc2VsZi5fcGxhdGZvcm1fbmFtZSwK
LSAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgcmVzdWx0c19k
aXJlY3RvcnksIHNlbGYuX29wdGlvbnMpCisgICAgZGVmIHN0YXJ0X3dvcmtlcihzZWxmLCB3b3Jr
ZXJfbnVtYmVyLCBwb3J0PU5vbmUsICoqd29ya2VyX2FyZ3MpOgorICAgICAgICAjIFdlIGRvbid0
IHN0b3JlIHRoZSBwb3J0IGJlY2F1c2Ugd29ya2VycyBydW4gaW4gc2VwYXJhdGUgcHJvY2Vzc2Vz
IGFuZAorICAgICAgICAjIHdlIGNhbid0IHJlcXVpcmUgdGhlIHBhcmVudCdzIHBvcnQgdG8gYmUg
cGlja2xlYWJsZSBhbmQgc2hhcmVkIHdpdGggdGhlIGNoaWxkLgorICAgICAgICB3b3JrZXJfY29u
bmVjdGlvbiA9IF9NdWx0aVByb2Nlc3NXb3JrZXJDb25uZWN0aW9uKHNlbGYuX2Jyb2tlciwKKyAg
ICAgICAgICAgIHNlbGYuX3dvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgKip3b3JrZXJfYXJn
cykKICAgICAgICAgd29ya2VyX2Nvbm5lY3Rpb24uc3RhcnQoKQogICAgICAgICByZXR1cm4gd29y
a2VyX2Nvbm5lY3Rpb24KIAogCiBjbGFzcyBfV29ya2VyQ29ubmVjdGlvbihtZXNzYWdlX2Jyb2tl
ci5Ccm9rZXJDb25uZWN0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKLSAg
ICAgICAgc2VsZi5fY2xpZW50ID0gd29ya2VyX2NsYXNzKHNlbGYsIHdvcmtlcl9udW1iZXIsIHJl
c3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIs
IHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgKip3b3JrZXJfYXJncyk6CisgICAgICAgIHNl
bGYuX2NsaWVudCA9IHdvcmtlcl9jbGFzcyhzZWxmLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9h
cmdzKQogICAgICAgICBzZWxmLm5hbWUgPSBzZWxmLl9jbGllbnQubmFtZSgpCiAgICAgICAgIG1l
c3NhZ2VfYnJva2VyLkJyb2tlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCBzZWxm
Ll9jbGllbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQU5ZX1dPUktFUl9UT1BJQywgTUFOQUdFUl9UT1BJQykKQEAgLTIwOSw5ICsxODMsMTEgQEAg
Y2xhc3MgX1dvcmtlckNvbm5lY3Rpb24obWVzc2FnZV9icm9rZXIuQnJva2VyQ29ubmVjdGlvbik6
CiAKIAogY2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHBvcnQsIG1hbmFnZXJfY2xpZW50LCB3b3Jr
ZXJfY2xhc3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKLSAg
ICAgICAgX1dvcmtlckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xh
c3MsIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBicm9rZXIsIG1hbmFnZXJfY2xpZW50LCB3b3JrZXJfY2xhc3MsIHdvcmtl
cl9udW1iZXIsIHBvcnQsICoqd29ya2VyX2FyZ3MpOgorICAgICAgICBfV29ya2VyQ29ubmVjdGlv
bi5fX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwgKip3
b3JrZXJfYXJncykKICAgICAgICAgc2VsZi5fYWxpdmUgPSBGYWxzZQorCisgICAgICAgICMgU2Vl
IGNvbW1lbnQgaW4gSW5saW5lV29ya2VyQnJva2VyLnN0YXJ0X3dvcmtlcigpIGZvciB3aHkgd2Ug
aGF2ZSBwb3J0IGhlcmUuCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHNlbGYu
X21hbmFnZXJfY2xpZW50ID0gbWFuYWdlcl9jbGllbnQKIApAQCAtMjQwLDQzICsyMTYsMTkgQEAg
Y2xhc3MgX0lubGluZVdvcmtlckNvbm5lY3Rpb24oX1dvcmtlckNvbm5lY3Rpb24pOgogCiAKIGNs
YXNzIF9Qcm9jZXNzKG11bHRpcHJvY2Vzc2luZy5Qcm9jZXNzKToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgd29ya2VyX2Nvbm5lY3Rpb24sIHBsYXRmb3JtX25hbWUsIG9wdGlvbnMsIGNsaWVudCk6
CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHdvcmtlcl9jb25uZWN0aW9uLCBjbGllbnQpOgogICAg
ICAgICBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxm
Ll93b3JrZXJfY29ubmVjdGlvbiA9IHdvcmtlcl9jb25uZWN0aW9uCi0gICAgICAgIHNlbGYuX3Bs
YXRmb3JtX25hbWUgPSBwbGF0Zm9ybV9uYW1lCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCiAgICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudAogCiAgICAgZGVmIHJ1bihzZWxmKToK
LSAgICAgICAgIyBXZSBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0IG9iamVjdCBoZXJlIGJlY2F1
c2UgdGhpcyBpcwotICAgICAgICAjIHJ1bm5pbmcgaW4gYSBuZXcgcHJvY2VzcyBhbmQgd2UgY2Fu
J3QgcmVxdWlyZSB0aGUgcGFyZW50J3MKLSAgICAgICAgIyBIb3N0IHRvIGJlIHBpY2tsZWFibGUg
YW5kIHBhc3NlZCB0byB0aGUgY2hpbGQuCi0gICAgICAgIGlmIHNlbGYuX3BsYXRmb3JtX25hbWUu
c3RhcnRzd2l0aCgndGVzdCcpOgotICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGhvc3QgPSBIb3N0KCkKLSAgICAgICAgaG9zdC5faW5pdGlh
bGl6ZV9zY20oKQotCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zCi0gICAgICAgIHBv
cnRfb2JqID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX3BsYXRmb3JtX25hbWUsIG9wdGlv
bnMpCi0KLSAgICAgICAgIyBUaGUgdW5peCBtdWx0aXByb2Nlc3NpbmcgaW1wbGVtZW50YXRpb24g
Y2xvbmVzIHRoZQotICAgICAgICAjIGxvZyBoYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW50byB0aGUg
Y2hpbGQgcHJvY2Vzc2VzLAotICAgICAgICAjIGJ1dCB0aGUgd2luIGltcGxlbWVudGF0aW9uIGRv
ZXNuJ3QuCi0gICAgICAgIGNvbmZpZ3VyZV9sb2dnaW5nID0gKHN5cy5wbGF0Zm9ybSA9PSAnd2lu
MzInKQotCi0gICAgICAgICMgRklYTUU6IHRoaXMgd29uJ3Qgd29yayBpZiB0aGUgY2FsbGluZyBw
cm9jZXNzIGlzIGxvZ2dpbmcKLSAgICAgICAgIyBzb21ld2hlcmUgb3RoZXIgdGhhbiBzeXMuc3Rk
ZXJyIGFuZCBzeXMuc3Rkb3V0LCBidXQgSSdtIG5vdCBzdXJlCi0gICAgICAgICMgaWYgdGhpcyB3
aWxsIGJlIGFuIGlzc3VlIGluIHByYWN0aWNlLgotICAgICAgICBwcmludGVyID0gcHJpbnRpbmcu
UHJpbnRlcihwb3J0X29iaiwgb3B0aW9ucywgc3lzLnN0ZGVyciwgc3lzLnN0ZG91dCwgY29uZmln
dXJlX2xvZ2dpbmcpCi0gICAgICAgIHNlbGYuX2NsaWVudC5ydW4ocG9ydF9vYmopCi0gICAgICAg
IHByaW50ZXIuY2xlYW51cCgpCisgICAgICAgIHNlbGYuX2NsaWVudC5ydW4oKQogCiAKIGNsYXNz
IF9NdWx0aVByb2Nlc3NXb3JrZXJDb25uZWN0aW9uKF9Xb3JrZXJDb25uZWN0aW9uKToKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgYnJva2VyLCBwbGF0Zm9ybV9uYW1lLCB3b3JrZXJfY2xhc3MsIHdv
cmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKToKLSAgICAgICAgX1dvcmtl
ckNvbm5lY3Rpb24uX19pbml0X18oc2VsZiwgYnJva2VyLCB3b3JrZXJfY2xhc3MsIHdvcmtlcl9u
dW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQotICAgICAgICBzZWxmLl9wcm9jID0g
X1Byb2Nlc3Moc2VsZiwgcGxhdGZvcm1fbmFtZSwgb3B0aW9ucywgc2VsZi5fY2xpZW50KQorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBicm9rZXIsIHdvcmtlcl9jbGFzcywgd29ya2VyX251bWJlciwg
Kip3b3JrZXJfYXJncyk6CisgICAgICAgIF9Xb3JrZXJDb25uZWN0aW9uLl9faW5pdF9fKHNlbGYs
IGJyb2tlciwgd29ya2VyX2NsYXNzLCB3b3JrZXJfbnVtYmVyLCAqKndvcmtlcl9hcmdzKQorICAg
ICAgICBzZWxmLl9wcm9jID0gX1Byb2Nlc3Moc2VsZiwgc2VsZi5fY2xpZW50KQogCiAgICAgZGVm
IGNhbmNlbChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2MudGVybWluYXRlKCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlcl91bml0dGVz
dC5weQppbmRleCBlNDFlMjJjYTY4MjY0ZDEyNTE2NDg3NzMyYmQ3YWExNmQ1ZTdhZTg4Li42YTlm
NmM2ZWQ4NWYyYTAwNWVlOTExODIzOTBlZjVlZGNiMTYzMDBlIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3dvcmtlcl9i
cm9rZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyX3VuaXR0ZXN0LnB5CkBAIC0zMiw4
ICszMiw3IEBAIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0gaW1wb3J0IG91dHB1dGNhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLmhv
c3RfbW9jayBpbXBvcnQgTW9ja0hvc3QKLWZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9y
dCBwb3J0CisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBt
YW5hZ2VyX3dvcmtlcl9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xs
ZXJzIGltcG9ydCBtZXNzYWdlX2Jyb2tlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmll
d3MgaW1wb3J0IHByaW50aW5nCkBAIC01MywxNiArNTIsMTIgQEAgZGVmIG1ha2VfYnJva2VyKG1h
bmFnZXIsIHdvcmtlcl9tb2RlbCwgc3RhcnRfcXVldWU9Tm9uZSwgc3RvcF9xdWV1ZT1Ob25lKToK
ICAgICBnbG9iYWwgc3RvcHBpbmdfcXVldWUKICAgICBzdGFydGluZ19xdWV1ZSA9IHN0YXJ0X3F1
ZXVlCiAgICAgc3RvcHBpbmdfcXVldWUgPSBzdG9wX3F1ZXVlCi0gICAgb3B0aW9ucyA9IGdldF9v
cHRpb25zKHdvcmtlcl9tb2RlbCkKLSAgICBob3N0ID0gTW9ja0hvc3QoKQotICAgIHRlc3RfcG9y
dCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldCgidGVzdCIpCi0gICAgcmV0dXJuIG1hbmFnZXJfd29y
a2VyX2Jyb2tlci5nZXQodGVzdF9wb3J0LCBvcHRpb25zLCBtYW5hZ2VyLCBfVGVzdFdvcmtlcikK
KyAgICByZXR1cm4gbWFuYWdlcl93b3JrZXJfYnJva2VyLmdldCh3b3JrZXJfbW9kZWwsIG1hbmFn
ZXIsIF9UZXN0V29ya2VyKQogCiAKIGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jy
b2tlci5BYnN0cmFjdFdvcmtlcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlcl9jb25u
ZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCByZXN1bHRzX2RpcmVjdG9yeSwgb3B0aW9ucyk6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGJyb2tlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyLCAqKndv
cmtlcl9hcmdzKToKICAgICAgICAgc2VsZi5fYnJva2VyX2Nvbm5lY3Rpb24gPSBicm9rZXJfY29u
bmVjdGlvbgotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBzZWxmLl93
b3JrZXJfbnVtYmVyID0gd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9uYW1lID0gJ1Rlc3RX
b3JrZXIvJWQnICUgd29ya2VyX251bWJlcgogICAgICAgICBzZWxmLl9zdG9wcGVkID0gRmFsc2UK
QEAgLTg3LDcgKzgyLDcgQEAgY2xhc3MgX1Rlc3RXb3JrZXIobWFuYWdlcl93b3JrZXJfYnJva2Vy
LkFic3RyYWN0V29ya2VyKToKICAgICBkZWYgY2FuY2VsKHNlbGYpOgogICAgICAgICBzZWxmLl9j
YW5jZWxlZCA9IFRydWUKIAotICAgIGRlZiBydW4oc2VsZiwgcG9ydCk6CisgICAgZGVmIHJ1bihz
ZWxmLCBwb3J0PU5vbmUpOgogICAgICAgICBpZiBzZWxmLl9zdGFydGluZ19xdWV1ZToKICAgICAg
ICAgICAgIHNlbGYuX3N0YXJ0aW5nX3F1ZXVlLnB1dCgnJykKIApAQCAtMTAxLDE3ICs5Niw2IEBA
IGNsYXNzIF9UZXN0V29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6
CiAgICAgICAgICAgICBzZWxmLl9icm9rZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2V4Y2Vw
dGlvbicsICh0eXBlKGUpLCBzdHIoZSksIE5vbmUpKQogCiAKLWRlZiBnZXRfb3B0aW9ucyh3b3Jr
ZXJfbW9kZWwpOgotICAgIG9wdGlvbl9saXN0ID0gKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5ydW50
aW1lX29wdGlvbnMoKSArCi0gICAgICAgICAgICAgICAgICAgcHJpbnRpbmcucHJpbnRfb3B0aW9u
cygpICsKLSAgICAgICAgICAgICAgICAgICBbb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tZXhwZXJp
bWVudGFsLWZ1bGx5LXBhcmFsbGVsIiwgZGVmYXVsdD1GYWxzZSksCi0gICAgICAgICAgICAgICAg
ICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNoaWxkLXByb2Nlc3NlcyIsIGRlZmF1bHQ9JzIn
KV0pCi0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKG9wdGlvbl9saXN0PW9wdGlv
bl9saXN0KQotICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzPVsnLS13
b3JrZXItbW9kZWwnLCB3b3JrZXJfbW9kZWxdKQotICAgIHJldHVybiBvcHRpb25zCi0KLQotCiBj
bGFzcyBGdW5jdGlvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9nZXRf
X2lubGluZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1ha2VfYnJva2VyKHNlbGYs
ICdpbmxpbmUnKSBpcyBub3QgTm9uZSkKQEAgLTE2MSw3ICsxNDUsNyBAQCBjbGFzcyBfVGVzdHNN
aXhpbihvYmplY3QpOgogCiAgICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgogICAgICAgICBzZWxm
Lm1ha2VfYnJva2VyKCkKLSAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtl
cigwLCBOb25lKQorICAgICAgICB3b3JrZXIgPSBzZWxmLl9icm9rZXIuc3RhcnRfd29ya2VyKDAp
CiAgICAgICAgIHdvcmtlci5jYW5jZWwoKQogICAgICAgICBzZWxmLl9icm9rZXIucG9zdF9tZXNz
YWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAgICAgIHdvcmtlci5qb2luKDAuNSkK
QEAgLTE2OSw3ICsxNTMsNyBAQCBjbGFzcyBfVGVzdHNNaXhpbihvYmplY3QpOgogCiAgICAgZGVm
IHRlc3RfZG9uZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jyb2tlcigpCi0gICAgICAgIHdv
cmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCwgTm9uZSkKKyAgICAgICAgd29ya2Vy
ID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQogICAgICAgICBzZWxmLl9icm9rZXIucG9z
dF9tZXNzYWdlKCd0ZXN0JywgMSwgJ2hlbGxvLCB3b3JsZCcpCiAgICAgICAgIHNlbGYuX2Jyb2tl
ci5wb3N0X21lc3NhZ2UoJ3N0b3AnKQogICAgICAgICBzZWxmLl9icm9rZXIucnVuX21lc3NhZ2Vf
bG9vcCgpCkBAIC0xODEsNyArMTY1LDcgQEAgY2xhc3MgX1Rlc3RzTWl4aW4ob2JqZWN0KToKIAog
ICAgIGRlZiB0ZXN0X3Vua25vd25fbWVzc2FnZShzZWxmKToKICAgICAgICAgc2VsZi5tYWtlX2Jy
b2tlcigpCi0gICAgICAgIHdvcmtlciA9IHNlbGYuX2Jyb2tlci5zdGFydF93b3JrZXIoMCwgTm9u
ZSkKKyAgICAgICAgd29ya2VyID0gc2VsZi5fYnJva2VyLnN0YXJ0X3dvcmtlcigwKQogICAgICAg
ICBzZWxmLl9icm9rZXIucG9zdF9tZXNzYWdlKCd1bmtub3duJykKICAgICAgICAgc2VsZi5fYnJv
a2VyLnJ1bl9tZXNzYWdlX2xvb3AoKQogICAgICAgICB3b3JrZXIuam9pbigwLjUpCkBAIC0yMDIs
MTQgKzE4Niw2IEBAIGlmIHN5cy5wbGF0Zm9ybSBub3QgaW4gKCdjeWd3aW4nLCAnd2luMzInKToK
ICAgICAgICAgICAgIHNlbGYuX3dvcmtlcl9tb2RlbCA9ICdwcm9jZXNzZXMnCiAKIAotY2xhc3Mg
RnVuY3Rpb25zVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcnVudGltZV9v
cHRpb25zKHNlbGYpOgotICAgICAgICBvcHRpb25fbGlzdCA9IG1hbmFnZXJfd29ya2VyX2Jyb2tl
ci5ydW50aW1lX29wdGlvbnMoKQotICAgICAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJz
ZXIob3B0aW9uX2xpc3Q9b3B0aW9uX2xpc3QpCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBwYXJz
ZXIucGFyc2VfYXJncyhbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbnMpCi0KLQog
Y2xhc3MgSW50ZXJmYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBUaGVzZSB0ZXN0
cyBtb3N0bHkgZXhpc3QgdG8gcGFjaWZ5IGNvdmVyYWdlLgogCkBAIC0yMTksMTQgKzE5NSwxNCBA
QCBjbGFzcyBJbnRlcmZhY2VUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIyBUZXN0
IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFuZCBoYXZlIHRo
ZQogICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tlciA9IG1ha2Vf
YnJva2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9r
ZXIuX01hbmFnZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmLCBOb25lKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRf
d29ya2VyLCAwLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX01h
bmFnZXJDb25uZWN0aW9uKGJyb2tlci5fYnJva2VyLCBOb25lLCBzZWxmKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouc3RhcnRfd29ya2VyLCAwKQog
CiAgICAgZGVmIHRlc3Rfd29ya2VyY29ubmVjdGlvbl9pc19hYnN0cmFjdChzZWxmKToKICAgICAg
ICAgIyBUZXN0IHRoYXQgYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZHMgYXJlIGFic3RyYWN0IGFu
ZCBoYXZlIHRoZQogICAgICAgICAjIHNpZ25hdHVyZSB3ZSBleHBlY3QuCiAgICAgICAgIGJyb2tl
ciA9IG1ha2VfYnJva2VyKHNlbGYsICdpbmxpbmUnKQotICAgICAgICBvYmogPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuX1dvcmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2Vy
LCAwLCBOb25lLCBOb25lKQorICAgICAgICBvYmogPSBtYW5hZ2VyX3dvcmtlcl9icm9rZXIuX1dv
cmtlckNvbm5lY3Rpb24oYnJva2VyLl9icm9rZXIsIF9UZXN0V29ya2VyLCAwKQogICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouY2FuY2VsKQogICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBvYmouaXNfYWxpdmUpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIG9iai5qb2luLCBO
b25lKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWVzc2FnZV9icm9rZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQppbmRleCBkNThhNmNkMTFiYjg4
MzRmZjRlYmViZDAxNzNkMTRmNjM3OTMxZmRkLi5mNjRkMzZkNGI0NWU0NWZmZWFlZTNhMThjODk3
NWU4N2QzYmE1NmYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tZXNzYWdlX2Jyb2tlci5weQpAQCAtOTQs
MTMgKzk0LDExIEBAIGNsYXNzIEJyb2tlcihvYmplY3QpOgogICAgIG1lc3NhZ2UgdG8gYW55IHRv
cGljIHVzaW5nIHBvc3RfbWVzc2FnZSgpLCBhbmQgY2FuIHByb2Nlc3MgbWVzc2FnZXMgb24gb25l
CiAgICAgdG9waWMgYXQgYSB0aW1lIHVzaW5nIHJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKIAotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zLCBxdWV1ZV9tYWtlcik6CisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHF1ZXVlX21ha2VyKToKICAgICAgICAgIiIiQXJnczoKLSAgICAgICAgICAgIG9w
dGlvbnM6IGEgcnVudGltZSBvcHRpb24gY2xhc3MgZnJvbSBvcHRwYXJzZQogICAgICAgICAgICAg
cXVldWVfbWFrZXI6IGEgZmFjdG9yeSBtZXRob2QgdGhhdCByZXR1cm5zIG9iamVjdHMgaW1wbGVt
ZW50aW5nIGEKICAgICAgICAgICAgICAgICBRdWV1ZSBpbnRlcmZhY2UgKHB1dCgpL2dldCgpKS4K
ICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCiAgICAgICAgIHNl
bGYuX3F1ZXVlX21ha2VyID0gcXVldWVfbWFrZXIKICAgICAgICAgc2VsZi5fdG9waWNzID0ge30K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJv
bGxlcnMvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvd29ya2VyLnB5CmluZGV4IGZjNzgzMWRmYjY3YzYyZDJjZTU5MWJlMTJhNzU4NjFj
ODI5Yzg0Y2YuLjYwYjUzZTQwNDY3ZjQxNjA5ODA5NjgzYmViYzY0NjE5M2YyOTMyMjIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dv
cmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy93b3JrZXIucHkKQEAgLTMzLDQzICszMyw2NCBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgdGhy
ZWFkaW5nCiBpbXBvcnQgdGltZQogCisjIFRoZXNlIGFyZSBuZWVkZWQgd2hlbiB3b3JrZXJzIGFy
ZSBsYXVuY2hlZCBpbiBuZXcgY2hpbGQgcHJvY2Vzc2VzLgorZnJvbSB3ZWJraXRweS5jb21tb24u
aG9zdCBpbXBvcnQgSG9zdAorZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBN
b2NrSG9zdAorCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQg
bWFuYWdlcl93b3JrZXJfYnJva2VyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9s
bGVycyBpbXBvcnQgc2luZ2xlX3Rlc3RfcnVubmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5tb2RlbHMgaW1wb3J0IHRlc3RfZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcmVzdWx0cworZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMudmlld3MgaW1wb3J0IHByaW50aW5nCiAKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9f
bmFtZV9fKQogCiAKIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RX
b3JrZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2Vy
X251bWJlciwgcmVzdWx0c19kaXJlY3RvcnksIG9wdGlvbnMpOgotICAgICAgICBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIuX19pbml0X18oc2VsZiwgd29ya2VyX2Nvbm5lY3Rp
b24sIHdvcmtlcl9udW1iZXIsIHJlc3VsdHNfZGlyZWN0b3J5LCBvcHRpb25zKQorICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB3b3JrZXJfY29ubmVjdGlvbiwgd29ya2VyX251bWJlciwgcmVzdWx0c19k
aXJlY3Rvcnk9Tm9uZSwgb3B0aW9ucz1Ob25lLCByZWFsX3BvcnRfbmFtZT1Ob25lKToKKyAgICAg
ICAgbWFuYWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyLl9faW5pdF9fKHNlbGYsIHdv
cmtlcl9jb25uZWN0aW9uLCB3b3JrZXJfbnVtYmVyKQorICAgICAgICBzZWxmLl9yZXN1bHRzX2Rp
cmVjdG9yeSA9IHJlc3VsdHNfZGlyZWN0b3J5CisgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRp
b25zCisgICAgICAgIHNlbGYuX3JlYWxfcG9ydF9uYW1lID0gcmVhbF9wb3J0X25hbWUKICAgICAg
ICAgc2VsZi5fZG9uZSA9IEZhbHNlCiAgICAgICAgIHNlbGYuX2NhbmNlbGVkID0gRmFsc2UKLSAg
ICAgICAgc2VsZi5fcG9ydCA9IE5vbmUKLSAgICAgICAgc2VsZi5fYmF0Y2hfc2l6ZSA9IE5vbmUK
LSAgICAgICAgc2VsZi5fYmF0Y2hfY291bnQgPSBOb25lCi0gICAgICAgIHNlbGYuX2ZpbGVzeXN0
ZW0gPSBOb25lCi0gICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKLSAgICAgICAgc2VsZi5fdGVz
dHNfcnVuX2ZpbGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlbmFtZSA9IE5v
bmUKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsZWFudXAoKQogCi0g
ICAgZGVmIHNhZmVfaW5pdChzZWxmLCBwb3J0KToKKyAgICBkZWYgX2ZpbmlzaF9pbml0aWFsaXpp
bmcoc2VsZiwgcG9ydCk6CiAgICAgICAgICIiIlRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIGNh
bGxlZCB3aGVuIGl0IGlzIGlzIHNhZmUgZm9yIHRoZSBtaXhpbgogICAgICAgICB0byBjcmVhdGUg
c3RhdGUgdGhhdCBjYW4ndCBiZSBQaWNrbGVkLgogCiAgICAgICAgIFRoaXMgcm91dGluZSBleGlz
dHMgc28gdGhhdCB0aGUgbWl4aW4gY2FuIGJlIGNyZWF0ZWQgYW5kIHRoZW4gbWFyc2hhbGVkCiAg
ICAgICAgIGFjcm9zcyBpbnRvIGEgY2hpbGQgcHJvY2Vzcy4iIiIKKyAgICAgICAgaWYgbm90IHBv
cnQ6CisgICAgICAgICAgICBpZiAndGVzdCcgaW4gc2VsZi5fcmVhbF9wb3J0X25hbWU6CisgICAg
ICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0KCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAgICAgICAgaG9zdC5faW5pdGlhbGl6ZV9zY20o
KQorICAgICAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChzZWxmLl9yZWFsX3Bv
cnRfbmFtZSwgc2VsZi5fb3B0aW9ucykKKwogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorCisg
ICAgICAgICMgVGhlIHVuaXggbXVsdGlwcm9jZXNzaW5nIGltcGxlbWVudGF0aW9uIGNsb25lcyB0
aGUKKyAgICAgICAgIyBsb2cgaGFuZGxlciBjb25maWd1cmF0aW9uIGludG8gdGhlIGNoaWxkIHBy
b2Nlc3NlcywKKyAgICAgICAgIyBidXQgdGhlIHdpbiBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0Lgor
ICAgICAgICBjb25maWd1cmVfbG9nZ2luZyA9IChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJykKKwor
ICAgICAgICAjIEZJWE1FOiB0aGlzIHdvbid0IHdvcmsgaWYgdGhlIGNhbGxpbmcgcHJvY2VzcyBp
cyBsb2dnaW5nCisgICAgICAgICMgc29tZXdoZXJlIG90aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQg
c3lzLnN0ZG91dCwgYnV0IEknbSBub3Qgc3VyZQorICAgICAgICAjIGlmIHRoaXMgd2lsbCBiZSBh
biBpc3N1ZSBpbiBwcmFjdGljZS4KKyAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50aW5nLlBy
aW50ZXIocG9ydCwgc2VsZi5fb3B0aW9ucywgc3lzLnN0ZGVyciwgc3lzLnN0ZG91dCwgY29uZmln
dXJlX2xvZ2dpbmcpCisKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHBvcnQuaG9zdC5maWxl
c3lzdGVtCiAgICAgICAgIHNlbGYuX2JhdGNoX2NvdW50ID0gMAogICAgICAgICBzZWxmLl9iYXRj
aF9zaXplID0gc2VsZi5fb3B0aW9ucy5iYXRjaF9zaXplIG9yIDAKICAgICAgICAgdGVzdHNfcnVu
X2ZpbGVuYW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5
LCAidGVzdHNfcnVuJWQudHh0IiAlIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgIHNlbGYu
X3Rlc3RzX3J1bl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3Jp
dGluZyh0ZXN0c19ydW5fZmlsZW5hbWUpCisgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKIAog
ICAgIGRlZiBjYW5jZWwoc2VsZik6CiAgICAgICAgICIiIkF0dGVtcHQgdG8gYWJvcnQgcHJvY2Vz
c2luZyAoYmVzdCBlZmZvcnQpLiIiIgpAQCAtODEsOCArMTAyLDggQEAgY2xhc3MgV29ya2VyKG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgZGVmIG5hbWUoc2VsZik6
CiAgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCiAKLSAgICBkZWYgcnVuKHNlbGYsIHBvcnQpOgot
ICAgICAgICBzZWxmLnNhZmVfaW5pdChwb3J0KQorICAgIGRlZiBydW4oc2VsZiwgcG9ydD1Ob25l
KToKKyAgICAgICAgc2VsZi5fZmluaXNoX2luaXRpYWxpemluZyhwb3J0KQogCiAgICAgICAgIGV4
Y2VwdGlvbl9tc2cgPSAiIgogICAgICAgICBfbG9nLmRlYnVnKCIlcyBzdGFydGluZyIgJSBzZWxm
Ll9uYW1lKQpAQCAtMTAyLDYgKzEyMyw3IEBAIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9i
cm9rZXIuQWJzdHJhY3RXb3JrZXIpOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygiJXMgZG9uZSB3
aXRoIG1lc3NhZ2UgbG9vcCVzIiAlIChzZWxmLl9uYW1lLCBleGNlcHRpb25fbXNnKSkKICAgICAg
ICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnZG9uZScpCiAgICAg
ICAgICAgICBzZWxmLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5fcHJpbnRlci5jbGVhbnVw
KCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRpbmciICUgc2VsZi5fbmFtZSkKIAog
ICAgIGRlZiBoYW5kbGVfdGVzdF9saXN0KHNlbGYsIHNyYywgbGlzdF9uYW1lLCB0ZXN0X2xpc3Qp
Ogo=
</data>

          </attachment>
      

    </bug>

</bugzilla>