<?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>37066</bug_id>
          
          <creation_ts>2010-04-03 15:58:24 -0700</creation_ts>
          <short_desc>check-webkit-style: Separate the file-reading code from the rest of the style-checking code</short_desc>
          <delta_ts>2010-04-27 05:28:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>37754</dependson>
    
    <dependson>37850</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>208310</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-03 15:58:24 -0700</bug_when>
    <thetext>This report is to refactor check-webkit-style to allow other types of processing operations to be done on files, for example extracting license texts from files:

https://bugs.webkit.org/show_bug.cgi?id=35465

and perhaps cleaning up certain style issues (e.g. namespace indenting).

We can do this as follows:

Put all the generic file/directory reading code into a class called FileProcessor, and add a &quot;processor&quot; parameter to its &quot;check_file/check_directory&quot; methods (probably renaming these methods to process_file and process_directory).

Similarly, split off the style-related code from the StyleChecker class into a StyleProcessor class, and give this class a process(lines, file_path) method and an on_complete() method (for printing the total error count after processing several files).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216856</commentid>
    <comment_count>1</comment_count>
      <attachid>54244</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-25 15:49:24 -0700</bug_when>
    <thetext>Created attachment 54244
Proposed patch

To make the review easier, I am doing the deletions of the old classes in a separate patch.

Note also that because this patch eliminates the StyleChecker class, in this patch I am updating the TextFileReader class to use the file-existence check logic discussed and implemented in this patch:

https://bugs.webkit.org/show_bug.cgi?id=37122</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216925</commentid>
    <comment_count>2</comment_count>
      <attachid>54244</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-26 00:12:41 -0700</bug_when>
    <thetext>Comment on attachment 54244
Proposed patch

Looks good! I put a few style nitpicks. All of them aren&apos;t serious, so please feel free to ignore some of (or all of) them.

WebKitTools/Scripts/webkitpy/style/checker.py:791
 +  
Should we have a blank line here? Is this a recommended style I don&apos;t know?

WebKitTools/Scripts/webkitpy/style/checker_unittest.py:534
 +  
I think we can remove this blank line. This is inconsistent with test_process.

WebKitTools/Scripts/webkitpy/style/checker_unittest.py:524
 +          pass
We may want to have a simple comment to mention we are just discarding stderr. Or, we may be able to choose better name for this. Maybe discard_message or something like this. In this way, I think the intention of its callers can be slightly clearer.

WebKitTools/Scripts/webkitpy/style/checker_unittest.py:625
 +      def _mock_increment_error_count(self):
I would call this as do_nothing or something. Or, is it worth checking the count of errors, StyleProcessor_EndToEndTest is also checking this though?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216976</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 03:43:50 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 54244 [details])

Thanks for the prompt review!

&gt; WebKitTools/Scripts/webkitpy/style/checker.py:791
&gt;  +  
&gt; Should we have a blank line here? Is this a recommended style I don&apos;t know?

It&apos;s funny you ask.  I originally didn&apos;t have it, but pep8.py flagged it.  I agree it doesn&apos;t look right.  Maybe I can add a comment so the reader of the code knows why it is there.

&gt; WebKitTools/Scripts/webkitpy/style/checker_unittest.py:524
&gt;  +          pass
&gt; We may want to have a simple comment to mention we are just discarding stderr.
&gt; Or, we may be able to choose better name for this. Maybe discard_message or
&gt; something like this. In this way, I think the intention of its callers can be
&gt; slightly clearer.

Good point.  It is probably in fact simply to check the messages here rather than discard them.  That would be more appropriate for the end-to-end test.

&gt; WebKitTools/Scripts/webkitpy/style/checker_unittest.py:625
&gt;  +      def _mock_increment_error_count(self):
&gt; I would call this as do_nothing or something. Or, is it worth checking the
&gt; count of errors, StyleProcessor_EndToEndTest is also checking this though?

I will rename.  Yes, the end-to-end test checks incrementing the error count.

The code coverage test checks that the function is getting passed around properly inside the method, but doesn&apos;t actually call it.  It was necessary for the caller to pass the error incrementer only so the caller could assert the equality of the DefaultStyleErrorHandler instances:

+        self.assertEquals(carriage_checker.style_error_handler,
+                          expected_error_handler)

+        self.assertEquals(checker.style_error_handler, expected_error_handler)

This capability was added recently here:

https://bugs.webkit.org/show_bug.cgi?id=37850</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216980</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 03:45:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Good point.  It is probably in fact simply to check the messages here rather
&gt; than discard them.  That would be more appropriate for the end-to-end test.

That should be-- &quot;It is probably better in fact to simply check the messages here....&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217006</commentid>
    <comment_count>5</comment_count>
      <attachid>54275</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 04:38:28 -0700</bug_when>
    <thetext>Created attachment 54275
Proposed patch 2

Addressing all comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217015</commentid>
    <comment_count>6</comment_count>
      <attachid>54275</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-26 05:09:12 -0700</bug_when>
    <thetext>Comment on attachment 54275
Proposed patch 2

&gt; It&apos;s funny you ask.  I originally didn&apos;t have it, but pep8.py flagged it.  I
&gt; agree it doesn&apos;t look right.  Maybe I can add a comment so the reader of the
&gt; code knows why it is there.

Hmm. So, let&apos;s leave the blank line. I&apos;m not sure if we need the comment. If we put this comment here, we should put the same comment whenever we will write similar code.

Or, maybe we can just create StyleProcessor.increment_error_count().

Anyway, please choose the way as you like.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217019</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 05:22:32 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Hmm. So, let&apos;s leave the blank line. I&apos;m not sure if we need the comment. If we
&gt; put this comment here, we should put the same comment whenever we will write
&gt; similar code.

In my experience, it&apos;s pretty rare for us to have a function definition inside the body of a method, so I would be okay with including the comment whenever the blank line would otherwise look awkward.  (If we were going to include the blank line for spacing reasons anyways, then a comment would not be necessary.)

I would characterize this as a bug in pep8.py since PEP8 only demands a blank line in between method definitions -- not before every function definition no matter where they appear:

&quot;Method definitions inside a class are separated by a single blank line.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217025</commentid>
    <comment_count>8</comment_count>
      <attachid>54275</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 05:28:45 -0700</bug_when>
    <thetext>Comment on attachment 54275
Proposed patch 2

Clearing flags on attachment: 54275

Committed r58249: &lt;http://trac.webkit.org/changeset/58249&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217026</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 05:28:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217451</commentid>
    <comment_count>10</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-04-26 19:40:15 -0700</bug_when>
    <thetext>I think this patch is the cause to the style problem I am having in https://bugs.webkit.org/show_bug.cgi?id=38140.

Any change to the file WebCore.vcproj will now cause a style error. (Even adding a space).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217533</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-04-26 23:21:02 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I think this patch is the cause to the style problem I am having in
&gt; https://bugs.webkit.org/show_bug.cgi?id=38140.
&gt; 
&gt; Any change to the file WebCore.vcproj will now cause a style error. (Even
&gt; adding a space).

This patch cleaned up some of the style-checking logic.  What you&apos;re seeing is a consequence of the fact that .vcproj files were never listed as files that should be skipped:

http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/style/checker.py?rev=58263#L177

This issue is being addressed here:

https://bugs.webkit.org/show_bug.cgi?id=38149</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>217661</commentid>
    <comment_count>12</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-04-27 05:28:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; I think this patch is the cause to the style problem I am having in
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=38140.
&gt; &gt; 
&gt; &gt; Any change to the file WebCore.vcproj will now cause a style error. (Even
&gt; &gt; adding a space).
&gt; 
&gt; This patch cleaned up some of the style-checking logic.  What you&apos;re seeing is
&gt; a consequence of the fact that .vcproj files were never listed as files that
&gt; should be skipped:
&gt; 
&gt; http://trac.webkit.org/browser/trunk/WebKitTools/Scripts/webkitpy/style/checker.py?rev=58263#L177
&gt; 
&gt; This issue is being addressed here:
&gt; 
&gt; https://bugs.webkit.org/show_bug.cgi?id=38149

Thank you for the explanation.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54244</attachid>
            <date>2010-04-25 15:49:24 -0700</date>
            <delta_ts>2010-04-26 04:38:28 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-37066-1.diff</filename>
            <type>text/plain</type>
            <size>29807</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4Njc5ZjMyLi4wZjBjYmZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTAtMDQt
MjUgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0aGUgU3R5bGVDaGVj
a2VyIGNsYXNzIHRvIHVzZSB0aGUgbmV3IFRleHRGaWxlUmVhZGVyIGNsYXNzLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA2NgorCisgICAgICAg
IFRoaXMgcmV2aXNpb24gc2VwYXJhdGVzIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvciByZWFkaW5n
IGFuZCBpdGVyYXRpbmcKKyAgICAgICAgb3ZlciB0ZXh0IGZpbGVzIGZyb20gdGhlIHJlc3Qgb2Yg
Y2hlY2std2Via2l0LXN0eWxlLgorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5
bGU6CisgICAgICAgICAgLSBDaGFuZ2VkIHRoZSBzY3JpcHQgdG8gdXNlIHRoZSBuZXcgU3R5bGVQ
cm9jZXNzb3IgYW5kCisgICAgICAgICAgICBUZXh0RmlsZVJlYWRlciBjbGFzc2VzIGluc3RlYWQg
b2YgdGhlIFN0eWxlQ2hlY2tlciBjbGFzcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weToKKyAgICAgICAgICAtIEFkZGVkIGEgRklYTUUgdG8gcmVuYW1lIG1h
bnkgb2YgdXNlcyBvZiB0aGUgd29yZCAicHJvY2Vzc29yIiB0bworICAgICAgICAgICAgImNoZWNr
ZXIiLiAgV2UgZGlkIHRoaXMgdG8gY2xhcmlmeSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICAg
ICAgICAgICBQcm9jZXNzb3JCYXNlIGluc3RhbmNlcyBwYXNzZWQgdG8gdGhlIFRleHRGaWxlUmVh
ZGVyIGFuZAorICAgICAgICAgICAgY2xhc3NlcyB0aGF0IHByb2Nlc3MgYW5kIGNoZWNrIGxpbmVz
IGZvciBzdHlsZS4KKyAgICAgICAgICAtIEFkZGVkIGEgRklYTUUgdG8gcmVtb3ZlIEZpbGVUeXBl
Lk5PTkUgYXMgYSBwb3NzaWJsZSByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIG9mIFByb2Nlc3Nv
ckRpc3BhdGNoZXIuX2ZpbGVfdHlwZSgpLiAgVGhpcyB3aWxsIGJldHRlciBjb25zb2xpZGF0ZQor
ICAgICAgICAgICAgdGhlIGxvZ2ljIG9mIHdoaWNoIGZpbGVzIHNob3VsZCBiZSBza2lwcGVkLgor
ICAgICAgICAgIC0gQWRkZWQgYSBGSVhNRSB0byBkZWxldGUgdGhlIFN0eWxlQ2hlY2tlciBjbGFz
cy4KKyAgICAgICAgICAtIEFkZGVkIHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3aGljaCBpbXBs
ZW1lbnRzIFByb2Nlc3NvckJhc2UuCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp
YmxlIGZvciBwcm9jZXNzaW5nIGxpbmVzIHRvIGNoZWNrIHN0eWxlCisgICAgICAgICAgICAoYnV0
IG5vdCBmb3IgcmVhZGluZyBmaWxlcykuICBGb3IgZWFjaCBmaWxlLCB0aGlzIGNsYXNzIGNyZWF0
ZXMKKyAgICAgICAgICAgIGNyZWF0ZXMgYm90aCBhIGNhcnJpYWdlLXJldHVybiBjaGVja2VyIGFu
ZCBhIGZvcm1hdC1zcGVjaWZpYworICAgICAgICAgICAgc3R5bGUgY2hlY2tlciAoZS5nLiBvbmUg
b2YgQysrLCBQeXRob24sIGV0YykuCisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBQYXRjaENoZWNr
ZXIgY2xhc3MgdG8gdXNlIGEgVGV4dEZpbGVSZWFkZXIgaW5zdGFuY2UKKyAgICAgICAgICAgIGlu
c3RlYWQgb2YgYSBTdHlsZUNoZWNrZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBBZGRlZCB0aGUgU3R5bGVQcm9j
ZXNzb3JfRW5kVG9FbmRUZXN0IGNsYXNzIHRvIGRvICJlbmQtdG8tZW5kIgorICAgICAgICAgICAg
dGVzdHMgb2YgdGhlIFN0eWxlUHJvY2Vzc29yIGNsYXNzLgorICAgICAgICAgIC0gQWRkZWQgdGhl
IFN0eWxlUHJvY2Vzc29yX0NvZGVDb3ZlcmFnZVRlc3QgdG8gdGVzdCB0aGUKKyAgICAgICAgICAg
IFN0eWxlUHJvY2Vzc29yIGNsYXNzIHdpdGggbW9yZSBjb21wbGV0ZSBjb2RlIGNvdmVyYWdlLgor
ICAgICAgICAgICAgVW5saWtlIHRoZSBTdHlsZVByb2Nlc3Nvcl9FbmRUb0VuZFRlc3QgY2xhc3Ms
IHRoaXMgY2xhc3MgbWFrZXMKKyAgICAgICAgICAgIGhlYXZ5IHVzZSBvZiBtb2NrIHBhcmFtZXRl
cnMuCisgICAgICAgICAgLSBBZGRlZCBGSVhNRSdzIHRvIGRlbGV0ZSB0aGUgdW5pdCB0ZXN0IGNs
YXNzZXMgdGhhdCBhcmUgbm8KKyAgICAgICAgICAgIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAg
LSBVcGRhdGVkIHRoZSBQYXRjaENoZWNrZXJUZXN0IGNsYXNzIHRvIHVzZSBhIE1vY2tUZXh0Rmls
ZVJlYWRlcgorICAgICAgICAgICAgaW5zdGVhZCBvZiBhIE1vY2tTdHlsZUNoZWNrZXIuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIucHk6CisgICAgICAgICAg
LSBVcGRhdGVkIHRoZSBUZXh0RmlsZVJlYWRlciBjbGFzcyB0byB1c2UgdGhlIHByZWZlcnJlZCBs
b2dpYworICAgICAgICAgICAgb2YgY2hlY2tpbmcgZmlsZSBleGlzdGVuY2UgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgcHJvY2Vzc19maWxlKCkKKyAgICAgICAgICAgIG1ldGhvZCBpbnN0ZWFkIG9m
IGluIHRoZSBleGNlcHQgYmxvY2ssIHBlcgorICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2ZpbGVyZWFkZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBJbiB0aGUgVGV4dEZp
bGVSZWFkZXJUZXN0IGNsYXNzOgorICAgICAgICAgICAgLSBNb3ZlZCB0aGUgdGVzdF9wcm9jZXNz
X2ZpbGVfX3Nob3VsZF9ub3RfcHJvY2VzcygpIG1ldGhvZC4KKyAgICAgICAgICAgIC0gQWRkZWQg
YSB0ZXN0X3Byb2Nlc3NfZmlsZV9fZmlsZV9zdGRpbigpIG1ldGhvZCB0byB0ZXN0CisgICAgICAg
ICAgICAgIHRoZSBmaWxlIHBhdGggIi0iLgorCiAyMDEwLTA0LTIwICBSb2JlcnQgSG9nYW4gIDxy
b2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKaW5kZXggOTg5N2ZiZC4uMDkxY2Jk
NCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKQEAgLTUxLDYgKzUxLDgg
QEAgaW1wb3J0IHN5cwogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBkZXRl
Y3RfY2hlY2tvdXQKIGltcG9ydCB3ZWJraXRweS5zdHlsZS5jaGVja2VyIGFzIGNoZWNrZXIKIGZy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlciBpbXBvcnQgUGF0Y2hDaGVja2VyCitmcm9tIHdlYmtp
dHB5LnN0eWxlLmNoZWNrZXIgaW1wb3J0IFN0eWxlUHJvY2Vzc29yCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmZpbGVyZWFkZXIgaW1wb3J0IFRleHRGaWxlUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnN0eWxl
Lm1haW4gaW1wb3J0IGNoYW5nZV9kaXJlY3RvcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJjaGVjay13ZWJraXQtc3R5bGUiKQpAQCAtMTAzLDIyICsxMDUsMjYgQEAgZGVmIG1haW4oKToK
ICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja2VyLmNoZWNr
X3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpCi0gICAgc3R5bGVfY2hlY2tlciA9
IGNoZWNrZXIuU3R5bGVDaGVja2VyKGNvbmZpZ3VyYXRpb24pCiAKICAgICBwYXRocyA9IGNoYW5n
ZV9kaXJlY3RvcnkoY2hlY2tvdXRfcm9vdD1jaGVja291dF9yb290LCBwYXRocz1wYXRocykKIAor
ICAgIHN0eWxlX3Byb2Nlc3NvciA9IFN0eWxlUHJvY2Vzc29yKGNvbmZpZ3VyYXRpb24pCisKKyAg
ICBmaWxlX3JlYWRlciA9IFRleHRGaWxlUmVhZGVyKHN0eWxlX3Byb2Nlc3NvcikKKwogICAgIGlm
IHBhdGhzOgotICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGhzKHBhdGhzKQorICAgICAg
ICBmaWxlX3JlYWRlci5wcm9jZXNzX3BhdGhzKHBhdGhzKQogICAgIGVsc2U6CiAgICAgICAgIGlm
IG9wdGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIHBhdGNoID0gY2hlY2tvdXQuY3JlYXRl
X3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaCgpCi0gICAgICAg
IHBhdGNoX2NoZWNrZXIgPSBQYXRjaENoZWNrZXIoc3R5bGVfY2hlY2tlcikKKyAgICAgICAgcGF0
Y2hfY2hlY2tlciA9IFBhdGNoQ2hlY2tlcihmaWxlX3JlYWRlcikKICAgICAgICAgcGF0Y2hfY2hl
Y2tlci5jaGVjayhwYXRjaCkKIAotICAgIGVycm9yX2NvdW50ID0gc3R5bGVfY2hlY2tlci5lcnJv
cl9jb3VudAotICAgIGZpbGVfY291bnQgPSBzdHlsZV9jaGVja2VyLmZpbGVfY291bnQKKyAgICBl
cnJvcl9jb3VudCA9IHN0eWxlX3Byb2Nlc3Nvci5lcnJvcl9jb3VudAorICAgIGZpbGVfY291bnQg
PSBmaWxlX3JlYWRlci5maWxlX2NvdW50CisKICAgICBfbG9nLmluZm8oIlRvdGFsIGVycm9ycyBm
b3VuZDogJWQgaW4gJWQgZmlsZXMiCiAgICAgICAgICAgICAgICUgKGVycm9yX2NvdW50LCBmaWxl
X2NvdW50KSkKICAgICAjIFdlIGZhaWwgd2hlbiBzdHlsZSBlcnJvcnMgYXJlIGZvdW5kIG9yIHRo
ZXJlIGFyZSBubyBjaGVja2VkIGZpbGVzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDg0YWUzZGEuLmI2OTdlNTcgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogIiIiRnJvbnQgZW5kIG9mIHNvbWUgc3R5bGUtY2hlY2tlciBtb2R1bGVzLiIiIgogCi1pbXBv
cnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKQEAg
LTMzNyw2ICszMzYsMTMgQEAgY2xhc3MgRmlsZVR5cGU6CiAgICAgVEVYVCA9IDQKIAogCisjIEZJ
WE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBDaGVja2VyRGlzcGF0Y2hlciwgcmVuYW1lIHRoZSBz
dHlsZS9wcm9jZXNzb3JzLworIyAgICAgICAgZm9sZGVyIHRvIHN0eWxlL2NoZWNrZXJzLCBhbmQg
cmVuYW1lIGFsbCBvZiB0aGUgY29kZSBjaGVja2VyCisjICAgICAgICBjbGFzc2VzIHRvIGVuZCBp
biAiQ2hlY2tlciIgKGUuZy4gIkNwcFByb2Nlc3NvciIgc2hvdWxkIGJlY29tZQorIyAgICAgICAg
IkNwcENoZWNrZXIiKS4gIFRoaXMgd2lsbCBhZGRyZXNzIHRoZSBjdXJyZW50IGlzc3VlIHdoZXJl
YnkgdGhlCisjICAgICAgICB3b3JkICJwcm9jZXNzb3IiIGlzIGJlaW5nIHVzZWQgdG8gcmVmZXIg
dG8gYm90aCBhIGdlbmVyYWwgbGluZXMKKyMgICAgICAgIHByb2Nlc3NvciB1c2VkIHRvIGluc3Rh
bnRpYXRlIGEgVGV4dEZpbGVSZWFkZXIsIGFuZCBhIGNsYXNzIHVzZWQKKyMgICAgICAgIHRvIGNo
ZWNrIHN0eWxlIGZvciBhIHBhcnRpY3VsYXIgZmlsZSBmb3JtYXQuCiBjbGFzcyBQcm9jZXNzb3JE
aXNwYXRjaGVyKG9iamVjdCk6CiAKICAgICAiIiJTdXBwb3J0cyBkZXRlcm1pbmluZyB3aGV0aGVy
IGFuZCBob3cgdG8gY2hlY2sgc3R5bGUsIGJhc2VkIG9uIHBhdGguIiIiCkBAIC0zOTUsNiArNDAx
LDExIEBAIGNsYXNzIFByb2Nlc3NvckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ZmlsZV9leHRlbnNpb24gaW4gc2VsZi50ZXh0X2ZpbGVfZXh0ZW5zaW9ucyk6CiAgICAgICAgICAg
ICByZXR1cm4gRmlsZVR5cGUuVEVYVAogICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGSVhN
RTogSWYgcG9zc2libGUsIGNoYW5nZSB0aGlzIG1ldGhvZCB0byBkZWZhdWx0IHRvCisgICAgICAg
ICAgICAjICAgICAgICByZXR1cm5pbmcgRmlsZVR5cGUuVEVYVC4gIFRoZSBzaG91bGRfcHJvY2Vz
cygpIG1ldGhvZAorICAgICAgICAgICAgIyAgICAgICAgc2hvdWxkIHJlYWxseSBlbmNhcHN1bGF0
ZSB3aGljaCBmaWxlcyBub3QgdG8gY2hlY2suCisgICAgICAgICAgICAjICAgICAgICBDdXJyZW50
bHksICJza2lwIiBsb2dpYyBpcyBzcHJlYWQgYmV0d2VlbiBib3RoIHRoaXMKKyAgICAgICAgICAg
ICMgICAgICAgIG1ldGhvZCBhbmQgc2hvdWxkX3Byb2Nlc3MuCiAgICAgICAgICAgICByZXR1cm4g
RmlsZVR5cGUuTk9ORQogCiAgICAgZGVmIF9jcmVhdGVfcHJvY2Vzc29yKHNlbGYsIGZpbGVfdHlw
ZSwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IsCkBAIC01MjgsNyArNTM5LDEzIEBAIGNs
YXNzIFByb2Nlc3NvckJhc2Uob2JqZWN0KToKICAgICAiIiJUaGUgYmFzZSBjbGFzcyBmb3IgcHJv
Y2Vzc29ycyBvZiBsaXN0cyBvZiBsaW5lcy4iIiIKIAogICAgIGRlZiBzaG91bGRfcHJvY2Vzcyhz
ZWxmLCBmaWxlX3BhdGgpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBhdCBm
aWxlX3BhdGggc2hvdWxkIGJlIHByb2Nlc3NlZC4iIiIKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRo
ZXIgdGhlIGZpbGUgYXQgZmlsZV9wYXRoIHNob3VsZCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAg
VGhlIFRleHRGaWxlUmVhZGVyIGNsYXNzIGNhbGxzIHRoaXMgbWV0aG9kIHByaW9yIHRvIHJlYWRp
bmcgaW4KKyAgICAgICAgdGhlIGxpbmVzIG9mIGEgZmlsZS4gIFVzZSB0aGlzIG1ldGhvZCwgZm9y
IGV4YW1wbGUsIHRvIHByZXZlbnQKKyAgICAgICAgdGhlIHN0eWxlIGNoZWNrZXIgZnJvbSByZWFk
aW5nIGJpbmFyeSBmaWxlcyBpbnRvIG1lbW9yeS4KKworICAgICAgICAiIiIKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50LicpCiAK
ICAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5lcywgZmlsZV9wYXRoLCAqKmt3YXJncyk6CkBAIC01
NDksMTAgKzU2Niw4IEBAIGNsYXNzIFByb2Nlc3NvckJhc2Uob2JqZWN0KToKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50LicpCiAK
IAotIyBGSVhNRTogTW9kaWZ5IHRoaXMgY2xhc3MgdG8gc3RhcnQgdXNpbmcgdGhlIFRleHRGaWxl
UmVhZGVyIGNsYXNzIGluCi0jICAgICAgICB3ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyLnB5LiAg
VGhpcyBwcm9iYWJseSBtZWFucyBjcmVhdGluZwotIyAgICAgICAgYSBTdHlsZVByb2Nlc3NvciBj
bGFzcyB0aGF0IGluaGVyaXRzIGZyb20gUHJvY2Vzc29yQmFzZS4KLWNsYXNzIFN0eWxlQ2hlY2tl
cihvYmplY3QpOgorIyBGSVhNRTogRGVsZXRlIHRoaXMgY2xhc3Mgc2luY2UgaXQgaXMgbm8gbG9u
Z2VyIGJlaW5nIHVzZWQuCitjbGFzcyBEZXByZWNhdGVkU3R5bGVDaGVja2VyKG9iamVjdCk6CiAK
ICAgICAiIiJTdXBwb3J0cyBjaGVja2luZyBzdHlsZSBpbiBmaWxlcyBhbmQgcGF0Y2hlcy4KIApA
QCAtNzQwLDE4ICs3NTUsMTM4IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAg
ICBwcm9jZXNzX2ZpbGUocHJvY2Vzc29yLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikK
IAogCitjbGFzcyBTdHlsZVByb2Nlc3NvcihQcm9jZXNzb3JCYXNlKToKKworICAgICIiIkEgUHJv
Y2Vzc29yQmFzZSBmb3IgY2hlY2tpbmcgc3R5bGUuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAg
ZXJyb3JfY291bnQ6IEFuIGludGVnZXIgdGhhdCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJlcG9y
dGVkCisgICAgICAgICAgICAgICAgICAgZXJyb3JzIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcyBp
bnN0YW5jZS4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRp
b24sIG1vY2tfZGlzcGF0Y2hlcj1Ob25lLAorICAgICAgICAgICAgICAgICBtb2NrX2luY3JlbWVu
dF9lcnJvcl9jb3VudD1Ob25lLAorICAgICAgICAgICAgICAgICBtb2NrX2NhcnJpYWdlX2NoZWNr
ZXJfY2xhc3M9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBpbnN0YW5jZS4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgIGNvbmZpZ3VyYXRpb246IEEgU3R5bGVDaGVja2VyQ29uZmlndXJh
dGlvbiBpbnN0YW5jZS4KKyAgICAgICAgICBtb2NrX2Rpc3BhdGNoZXI6IEEgbW9jayBQcm9jZXNz
b3JEaXNwYXRjaGVyIGluc3RhbmNlLiAgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVyIGlzIGZvciB1bml0IHRlc3RpbmcuICBEZWZhdWx0cyB0byBhCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm9jZXNzb3JEaXNwYXRjaGVyIGluc3RhbmNlLgorICAgICAgICAg
IG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50OiBBIG1vY2sgZXJyb3ItY291bnQgaW5jcmVtZW50
ZXIuCisgICAgICAgICAgbW9ja19jYXJyaWFnZV9jaGVja2VyX2NsYXNzOiBBIG1vY2sgY2xhc3Mg
Zm9yIGNoZWNraW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtaW5nIGNhcnJpYWdlIHJldHVybnMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBmb3IgdW5pdCB0ZXN0aW5nLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gQ2FycmlhZ2VSZXR1
cm5Qcm9jZXNzb3IuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vY2tfZGlzcGF0Y2hlciBp
cyBOb25lOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IFByb2Nlc3NvckRpc3BhdGNoZXIoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IG1vY2tfZGlzcGF0Y2hlcgor
CisgICAgICAgIGlmIG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50IGlzIE5vbmU6CisKKyAgICAg
ICAgICAgIGRlZiBpbmNyZW1lbnRfZXJyb3JfY291bnQoKToKKyAgICAgICAgICAgICAgICAiIiJJ
bmNyZW1lbnQgdGhlIHRvdGFsIGNvdW50IG9mIHJlcG9ydGVkIGVycm9ycy4iIiIKKyAgICAgICAg
ICAgICAgICBzZWxmLmVycm9yX2NvdW50ICs9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IGluY3JlbWVudF9lcnJvcl9jb3VudCA9IG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50CisKKyAg
ICAgICAgaWYgbW9ja19jYXJyaWFnZV9jaGVja2VyX2NsYXNzIGlzIE5vbmU6CisgICAgICAgICAg
ICAjIFRoaXMgbmVlZHMgdG8gYmUgYSBjbGFzcyByYXRoZXIgdGhhbiBhbiBpbnN0YW5jZSBzaW5j
ZSB0aGUKKyAgICAgICAgICAgICMgcHJvY2VzcygpIG1ldGhvZCBpbnN0YW50aWF0ZXMgb25lIHVz
aW5nIHBhcmFtZXRlcnMuCisgICAgICAgICAgICBjYXJyaWFnZV9jaGVja2VyX2NsYXNzID0gQ2Fy
cmlhZ2VSZXR1cm5Qcm9jZXNzb3IKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNhcnJpYWdl
X2NoZWNrZXJfY2xhc3MgPSBtb2NrX2NhcnJpYWdlX2NoZWNrZXJfY2xhc3MKKworICAgICAgICBz
ZWxmLmVycm9yX2NvdW50ID0gMAorCisgICAgICAgIHNlbGYuX2NhcnJpYWdlX2NoZWNrZXJfY2xh
c3MgPSBjYXJyaWFnZV9jaGVja2VyX2NsYXNzCisgICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24g
PSBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIgPSBkaXNwYXRjaGVyCisg
ICAgICAgIHNlbGYuX2luY3JlbWVudF9lcnJvcl9jb3VudCA9IGluY3JlbWVudF9lcnJvcl9jb3Vu
dAorCisgICAgZGVmIHNob3VsZF9wcm9jZXNzKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICIi
IlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHNob3VsZCBiZSBjaGVja2VkIGZvciBzdHlsZS4iIiIK
KworICAgICAgICBpZiBzZWxmLl9kaXNwYXRjaGVyLnNob3VsZF9za2lwX3dpdGhvdXRfd2Fybmlu
ZyhmaWxlX3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIHNlbGYu
X2Rpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJuaW5nKGZpbGVfcGF0aCk6CisgICAgICAg
ICAgICBfbG9nLndhcm4oJ0ZpbGUgZXhlbXB0IGZyb20gc3R5bGUgZ3VpZGUuIFNraXBwaW5nOiAi
JXMiJworICAgICAgICAgICAgICAgICAgICAgICUgZmlsZV9wYXRoKQorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgcHJvY2VzcyhzZWxmLCBs
aW5lcywgZmlsZV9wYXRoLCBsaW5lX251bWJlcnM9Tm9uZSk6CisgICAgICAgICIiIkNoZWNrIHRo
ZSBnaXZlbiBsaW5lcyBmb3Igc3R5bGUuCisKKyAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAg
IGxpbmVzOiBBIGxpc3Qgb2YgYWxsIGxpbmVzIGluIHRoZSBmaWxlIHRvIGNoZWNrLgorICAgICAg
ICAgIGZpbGVfcGF0aDogVGhlIHBhdGggb2YgdGhlIGZpbGUgdG8gcHJvY2Vzcy4gIElmIHBvc3Np
YmxlLCB0aGUgcGF0aAorICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJlbGF0aXZlIHRv
IHRoZSBzb3VyY2Ugcm9vdC4gIE90aGVyd2lzZSwKKyAgICAgICAgICAgICAgICAgICAgIHBhdGgt
c3BlY2lmaWMgbG9naWMgbWF5IG5vdCBiZWhhdmUgYXMgZXhwZWN0ZWQuCisgICAgICAgICAgbGlu
ZV9udW1iZXJzOiBBIGxpc3Qgb2YgbGluZSBudW1iZXJzIG9mIHRoZSBsaW5lcyBmb3Igd2hpY2gK
KyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlIGVycm9ycyBzaG91bGQgYmUgcmVwb3J0ZWQs
IG9yIE5vbmUgaWYgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWxsIGxpbmVz
IHNob3VsZCBiZSByZXBvcnRlZC4gIFdoZW4gbm90IE5vbmUsIHRoaXMKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGxpc3Qgbm9ybWFsbHkgY29udGFpbnMgdGhlIGxpbmUgbnVtYmVycyBjb3JyZXNw
b25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgbW9kaWZpZWQgbGluZXMgb2Yg
YSBwYXRjaC4KKworICAgICAgICAiIiIKKyAgICAgICAgX2xvZy5kZWJ1ZygiQ2hlY2tpbmcgc3R5
bGU6ICIgKyBmaWxlX3BhdGgpCisKKyAgICAgICAgc3R5bGVfZXJyb3JfaGFuZGxlciA9IERlZmF1
bHRTdHlsZUVycm9ySGFuZGxlcigKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb249c2VsZi5fY29u
ZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGZpbGVfcGF0aD1maWxlX3BhdGgsCisgICAgICAgICAg
ICBpbmNyZW1lbnRfZXJyb3JfY291bnQ9c2VsZi5faW5jcmVtZW50X2Vycm9yX2NvdW50LAorICAg
ICAgICAgICAgbGluZV9udW1iZXJzPWxpbmVfbnVtYmVycykKKworICAgICAgICBjYXJyaWFnZV9j
aGVja2VyID0gc2VsZi5fY2FycmlhZ2VfY2hlY2tlcl9jbGFzcyhzdHlsZV9lcnJvcl9oYW5kbGVy
KQorCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBwcm9iYWJseSB1c2UgdGhlIFNWTiAiZW9s
LXN0eWxlIiBwcm9wZXJ0eQorICAgICAgICAjICAgICAgICBvciBhIHdoaXRlIGxpc3QgdG8gZGVj
aWRlIHdoZXRoZXIgb3Igbm90IHRvIGRvCisgICAgICAgICMgICAgICAgIHRoZSBjYXJyaWFnZS1y
ZXR1cm4gY2hlY2suIE9yaWdpbmFsbHksIHdlIGRpZCB0aGUKKyAgICAgICAgIyAgICAgICAgY2hl
Y2sgb25seSBpZiAob3MubGluZXNlcCAhPSAnXHJcbicpLgorICAgICAgICAjCisgICAgICAgICMg
Q2hlY2sgZm9yIGFuZCByZW1vdmUgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJucyAoIlxyIikuCisg
ICAgICAgIGxpbmVzID0gY2FycmlhZ2VfY2hlY2tlci5wcm9jZXNzKGxpbmVzKQorCisgICAgICAg
IG1pbl9jb25maWRlbmNlID0gc2VsZi5fY29uZmlndXJhdGlvbi5taW5fY29uZmlkZW5jZQorICAg
ICAgICBjaGVja2VyID0gc2VsZi5fZGlzcGF0Y2hlci5kaXNwYXRjaF9wcm9jZXNzb3IoZmlsZV9w
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3R5bGVfZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlKQorCisgICAgICAgIGlmIGNoZWNr
ZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgRklYTUU6IFNob3VsZCB3ZSByZWFsbHkgYmUgc2tp
cHBpbmcgZmlsZXMgdGhhdCByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgIyAgICAgICAgZm9yIHNo
b3VsZF9wcm9jZXNzKCk/ICBQZXJoYXBzIHRoaXMgc2hvdWxkIGJlIGEKKyAgICAgICAgICAgICMg
ICAgICAgIHdhcm5pbmcgb3IgYW4gZXhjZXB0aW9uIHNvIHdlIGNhbiBmaW5kIG91dCBpZgorICAg
ICAgICAgICAgIyAgICAgICAgc2hvdWxkX3Byb2Nlc3MoKSBpcyBtaXNzaW5nIGFueSBmaWxlcy4K
KyAgICAgICAgICAgIF9sb2cuZGVidWcoJ0ZpbGUgbm90IGEgcmVjb2duaXplZCB0eXBlIHRvIGNo
ZWNrLiBTa2lwcGluZzogIiVzIicKKyAgICAgICAgICAgICAgICAgICAgICAgJSBmaWxlX3BhdGgp
CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBfbG9nLmRlYnVnKCJVc2luZyBjbGFzczog
IiArIGNoZWNrZXIuX19jbGFzc19fLl9fbmFtZV9fKQorCisgICAgICAgIGNoZWNrZXIucHJvY2Vz
cyhsaW5lcykKKworCisjIEZJWE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBQYXRjaFJlYWRlciB0
byBwYXJhbGxlbCBUZXh0RmlsZVJlYWRlcgorIyAgICAgICAgKGFuZCB0byBkaXN0aW5ndWlzaCBp
dCBmcm9tIENhcnJpYWdlUmV0dXJuQ2hlY2tlciwgQ3BwQ2hlY2tlciwKKyMgICAgICAgIGV0Yy4g
d2hpY2ggYXJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHByb2Nlc3NpbmcgbGluZXMpLgogY2xhc3Mg
UGF0Y2hDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiJTdXBwb3J0cyBjaGVja2luZyBzdHlsZSBp
biBwYXRjaGVzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0eWxlX2NoZWNrZXIpOgor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0X2ZpbGVfcmVhZGVyKToKICAgICAgICAgIiIiQ3Jl
YXRlIGEgUGF0Y2hDaGVja2VyIGluc3RhbmNlLgogCiAgICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
c3R5bGVfY2hlY2tlcjogQSBTdHlsZUNoZWNrZXIgaW5zdGFuY2UuCisgICAgICAgICAgdGV4dF9m
aWxlX3JlYWRlcjogQSBUZXh0RmlsZVJlYWRlciBpbnN0YW5jZS4KIAogICAgICAgICAiIiIKLSAg
ICAgICAgc2VsZi5fZmlsZV9jaGVja2VyID0gc3R5bGVfY2hlY2tlcgorICAgICAgICBzZWxmLl90
ZXh0X2ZpbGVfcmVhZGVyID0gdGV4dF9maWxlX3JlYWRlcgogCiAgICAgZGVmIGNoZWNrKHNlbGYs
IHBhdGNoX3N0cmluZyk6CiAgICAgICAgICIiIkNoZWNrIHN0eWxlIGluIHRoZSBnaXZlbiBwYXRj
aC4iIiIKQEAgLTc3NSw1ICs5MTAsNSBAQCBjbGFzcyBQYXRjaENoZWNrZXIob2JqZWN0KToKICAg
ICAgICAgICAgICMgVGhpcyBvcHRpbWl6YXRpb24gYWxzbyBwcmV2ZW50cyB0aGUgcHJvZ3JhbSBm
cm9tIGV4aXRpbmcKICAgICAgICAgICAgICMgZHVlIHRvIGEgZGVsZXRlZCBmaWxlLgogICAgICAg
ICAgICAgaWYgbGluZV9udW1iZXJzOgotICAgICAgICAgICAgICAgIHNlbGYuX2ZpbGVfY2hlY2tl
ci5jaGVja19maWxlKGZpbGVfcGF0aD1wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycz1saW5lX251bWJlcnMpCisgICAgICAgICAg
ICAgICAgc2VsZi5fdGV4dF9maWxlX3JlYWRlci5wcm9jZXNzX2ZpbGUoZmlsZV9wYXRoPXBhdGgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZV9udW1iZXJzPWxpbmVfbnVtYmVycykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQppbmRleCA0MDFhN2IzLi43NGRjMzMw
IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJf
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2VyX3VuaXR0ZXN0LnB5CkBAIC00OSwxMCArNDksMTMgQEAgZnJvbSBjaGVja2VyIGltcG9ydCBf
YWxsX2NhdGVnb3JpZXMKIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0X3N0eWxlX2Nv
bmZpZ3VyYXRpb24KIGZyb20gY2hlY2tlciBpbXBvcnQgY2hlY2tfd2Via2l0X3N0eWxlX3BhcnNl
cgogZnJvbSBjaGVja2VyIGltcG9ydCBjb25maWd1cmVfbG9nZ2luZworZnJvbSBjaGVja2VyIGlt
cG9ydCBEZXByZWNhdGVkU3R5bGVDaGVja2VyCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFByb2Nlc3Nv
ckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBpbXBvcnQgUGF0Y2hDaGVja2VyCi1mcm9tIGNoZWNr
ZXIgaW1wb3J0IFN0eWxlQ2hlY2tlcgorZnJvbSBjaGVja2VyIGltcG9ydCBQcm9jZXNzb3JCYXNl
Citmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlUHJvY2Vzc29yCiBmcm9tIGNoZWNrZXIgaW1wb3J0
IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24KK2Zyb20gZXJyb3JfaGFuZGxlcnMgaW1wb3J0IERl
ZmF1bHRTdHlsZUVycm9ySGFuZGxlcgogZnJvbSBmaWx0ZXIgaW1wb3J0IHZhbGlkYXRlX2ZpbHRl
cl9ydWxlcwogZnJvbSBmaWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KIGZyb20gb3B0
cGFyc2VyIGltcG9ydCBBcmd1bWVudFBhcnNlcgpAQCAtNjEsNiArNjQsNyBAQCBmcm9tIHByb2Nl
c3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJvY2Vzc29ycy5weXRob24gaW1w
b3J0IFB5dGhvblByb2Nlc3NvcgogZnJvbSBwcm9jZXNzb3JzLnRleHQgaW1wb3J0IFRleHRQcm9j
ZXNzb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5sb2d0ZXN0aW5nIGltcG9ydCBMb2dn
aW5nVGVzdENhc2UKK2Zyb20gd2Via2l0cHkuc3R5bGUuZmlsZXJlYWRlciBpbXBvcnQgVGV4dEZp
bGVSZWFkZXIKIAogCiBjbGFzcyBDb25maWd1cmVMb2dnaW5nVGVzdEJhc2UodW5pdHRlc3QuVGVz
dENhc2UpOgpAQCAtNTEyLDYgKzUxNiwyMTQgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ29uZmlndXJh
dGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAgICAgICAgICBb
ImZvby5oKDEwMCk6ICBtZXNzYWdlICBbd2hpdGVzcGFjZS90YWJdIFs1XVxuIl0pCiAKIAorY2xh
c3MgU3R5bGVQcm9jZXNzb3JfRW5kVG9FbmRUZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CisKKyAgICAi
IiJUZXN0IHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3aXRoIGFuIGVtcGhhc2lzIG9uIGVuZC10
by1lbmQgdGVzdHMuIiIiCisKKyAgICBkZWYgX21vY2tfc3RkZXJyX3dyaXRlKHNlbGYsIG1lc3Nh
Z2UpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAi
IiJUZXN0IF9faW5pdF9fIGNvbnN0cnVjdG9yLiIiIgorICAgICAgICBjb25maWd1cmF0aW9uID0g
U3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXJfY29uZmlndXJhdGlvbj1GaWx0ZXJDb25maWd1cmF0aW9uKCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5PXt9LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPTMsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0X2Zvcm1hdD0idnM3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
dGRlcnJfd3JpdGU9c2VsZi5fbW9ja19zdGRlcnJfd3JpdGUpCisKKyAgICAgICAgcHJvY2Vzc29y
ID0gU3R5bGVQcm9jZXNzb3IoY29uZmlndXJhdGlvbikKKworICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhwcm9jZXNzb3IuZXJyb3JfY291bnQsIDApCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzKHNl
bGYpOgorICAgICAgICBjb25maWd1cmF0aW9uID0gU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbigK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfY29uZmlndXJhdGlvbj1GaWx0ZXJD
b25maWd1cmF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3JlcG9ydHNf
cGVyX2NhdGVnb3J5PXt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRl
bmNlPTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0idnM3IiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJfd3JpdGU9c2VsZi5fbW9ja19zdGRl
cnJfd3JpdGUpCisgICAgICAgIHByb2Nlc3NvciA9IFN0eWxlUHJvY2Vzc29yKGNvbmZpZ3VyYXRp
b24pCisKKyAgICAgICAgcHJvY2Vzc29yLnByb2Nlc3MobGluZXM9WydsaW5lMScsICdMaW5lIHdp
dGggdGFiOlx0J10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcGF0aD0nZm9vLnR4
dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvcl9jb3VudCwgMSkK
KworCitjbGFzcyBTdHlsZVByb2Nlc3Nvcl9Db2RlQ292ZXJhZ2VUZXN0KExvZ2dpbmdUZXN0Q2Fz
ZSk6CisKKyAgICAiIiJUZXN0IHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3aXRoIGFuIGVtcGhh
c2lzIG9uIGNvZGUgY292ZXJhZ2UuCisKKyAgICBUaGlzIGNsYXNzIG1ha2VzIGhlYXZ5IHVzZSBv
ZiBtb2NrIG9iamVjdHMuCisKKyAgICAiIiIKKworICAgIGNsYXNzIE1vY2tEaXNwYXRjaGVkQ2hl
Y2tlcihvYmplY3QpOgorCisgICAgICAgICIiIkEgbW9jayBjaGVja2VyIGRpc3BhdGNoZWQgYnkg
dGhlIE1vY2tEaXNwYXRjaGVyLiIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
X3BhdGgsIG1pbl9jb25maWRlbmNlLCBzdHlsZV9lcnJvcl9oYW5kbGVyKToKKyAgICAgICAgICAg
IHNlbGYuZmlsZV9wYXRoID0gZmlsZV9wYXRoCisgICAgICAgICAgICBzZWxmLm1pbl9jb25maWRl
bmNlID0gbWluX2NvbmZpZGVuY2UKKyAgICAgICAgICAgIHNlbGYuc3R5bGVfZXJyb3JfaGFuZGxl
ciA9IHN0eWxlX2Vycm9yX2hhbmRsZXIKKworICAgICAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5l
cyk6CisgICAgICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKKworICAgIGNsYXNzIE1vY2tEaXNw
YXRjaGVyKG9iamVjdCk6CisKKyAgICAgICAgIiIiQSBtb2NrIFByb2Nlc3NvckRpc3BhdGNoZXIg
Y2xhc3MuIiIiCisKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2Vs
Zi5kaXNwYXRjaGVkX2NoZWNrZXIgPSBOb25lCisKKyAgICAgICAgZGVmIHNob3VsZF9za2lwX3dp
dGhfd2FybmluZyhzZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGZpbGVfcGF0
aC5lbmRzd2l0aCgnc2tpcF93aXRoX3dhcm5pbmcudHh0JykKKworICAgICAgICBkZWYgc2hvdWxk
X3NraXBfd2l0aG91dF93YXJuaW5nKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICAgICByZXR1
cm4gZmlsZV9wYXRoLmVuZHN3aXRoKCdza2lwX3dpdGhvdXRfd2FybmluZy50eHQnKQorCisgICAg
ICAgIGRlZiBkaXNwYXRjaF9wcm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRoLCBzdHlsZV9lcnJvcl9o
YW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlKToK
KyAgICAgICAgICAgIGlmIGZpbGVfcGF0aC5lbmRzd2l0aCgnZG9fbm90X3Byb2Nlc3MudHh0Jyk6
CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICAgICAgY2hlY2tlciA9IFN0
eWxlUHJvY2Vzc29yX0NvZGVDb3ZlcmFnZVRlc3QuTW9ja0Rpc3BhdGNoZWRDaGVja2VyKAorICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1pbl9jb25maWRlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lcnJv
cl9oYW5kbGVyKQorCisgICAgICAgICAgICAjIFNhdmUgdGhlIGRpc3BhdGNoZWQgY2hlY2tlciBz
byB0aGUgY3VycmVudCB0ZXN0IGNhc2UgaGFzIGEKKyAgICAgICAgICAgICMgd2F5IHRvIGFjY2Vz
cyBhbmQgY2hlY2sgaXQuCisgICAgICAgICAgICBzZWxmLmRpc3BhdGNoZWRfY2hlY2tlciA9IGNo
ZWNrZXIKKworICAgICAgICAgICAgcmV0dXJuIGNoZWNrZXIKKworICAgIGRlZiBzZXRVcChzZWxm
KToKKyAgICAgICAgTG9nZ2luZ1Rlc3RDYXNlLnNldFVwKHNlbGYpCisKKyAgICAgICAgY29uZmln
dXJhdGlvbiA9IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmlsdGVyX2NvbmZpZ3VyYXRpb249RmlsdGVyQ29uZmlndXJhdGlvbigpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9yZXBvcnRzX3Blcl9jYXRlZ29yeT17IndoaXRl
c3BhY2UvbmV3bGluZSI6IDF9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25m
aWRlbmNlPTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0idnM3
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnJfd3JpdGU9c2VsZi5fbW9ja19z
dGRlcnJfd3JpdGUpCisKKyAgICAgICAgbW9ja19jYXJyaWFnZV9jaGVja2VyX2NsYXNzID0gc2Vs
Zi5fY3JlYXRlX2NhcnJpYWdlX2NoZWNrZXJfY2xhc3MoKQorICAgICAgICBtb2NrX2Rpc3BhdGNo
ZXIgPSBzZWxmLk1vY2tEaXNwYXRjaGVyKCkKKyAgICAgICAgbW9ja19pbmNyZW1lbnRfZXJyb3Jf
Y291bnQgPSBzZWxmLl9tb2NrX2luY3JlbWVudF9lcnJvcl9jb3VudAorCisgICAgICAgIHByb2Nl
c3NvciA9IFN0eWxlUHJvY2Vzc29yKGNvbmZpZ3VyYXRpb249Y29uZmlndXJhdGlvbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1vY2tfY2FycmlhZ2VfY2hlY2tlcl9jbGFzcz1tb2NrX2NhcnJp
YWdlX2NoZWNrZXJfY2xhc3MsCisgICAgICAgICAgICAgICAgICAgICAgICBtb2NrX2Rpc3BhdGNo
ZXI9bW9ja19kaXNwYXRjaGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19pbmNyZW1l
bnRfZXJyb3JfY291bnQ9bW9ja19pbmNyZW1lbnRfZXJyb3JfY291bnQpCisKKyAgICAgICAgc2Vs
Zi5fY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VsZi5fbW9ja19kaXNw
YXRjaGVyID0gbW9ja19kaXNwYXRjaGVyCisgICAgICAgIHNlbGYuX3Byb2Nlc3NvciA9IHByb2Nl
c3NvcgorCisgICAgZGVmIF9tb2NrX2luY3JlbWVudF9lcnJvcl9jb3VudChzZWxmKToKKyAgICAg
ICAgcGFzcworCisgICAgZGVmIF9tb2NrX3N0ZGVycl93cml0ZShzZWxmLCBtZXNzYWdlKToKKyAg
ICAgICAgcGFzcworCisgICAgZGVmIF9jcmVhdGVfY2FycmlhZ2VfY2hlY2tlcl9jbGFzcyhzZWxm
KToKKworICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5jZSB0byBzZWxmIHdpdGggYSBuZXcgbmFt
ZSBzbyBpdHMgbmFtZSBkb2VzIG5vdAorICAgICAgICAjIGNvbmZsaWN0IHdpdGggdGhlIHNlbGYg
aW50cm9kdWNlZCBiZWxvdy4KKyAgICAgICAgdGVzdF9jYXNlID0gc2VsZgorCisgICAgICAgIGNs
YXNzIE1vY2tDYXJyaWFnZUNoZWNrZXIob2JqZWN0KToKKworICAgICAgICAgICAgIiIiQSBtb2Nr
IGNhcnJpYWdlLXJldHVybiBjaGVja2VyLiIiIgorCisgICAgICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgc3R5bGVfZXJyb3JfaGFuZGxlcik6CisgICAgICAgICAgICAgICAgc2VsZi5zdHlsZV9l
cnJvcl9oYW5kbGVyID0gc3R5bGVfZXJyb3JfaGFuZGxlcgorCisgICAgICAgICAgICAgICAgIyBU
aGlzIGdpdmVzIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBhY2Nlc3MgdG8gdGhlCisgICAgICAgICAg
ICAgICAgIyBpbnN0YW50aWF0ZWQgY2FycmlhZ2UgY2hlY2tlci4KKyAgICAgICAgICAgICAgICB0
ZXN0X2Nhc2UuY2FycmlhZ2VfY2hlY2tlciA9IHNlbGYKKworICAgICAgICAgICAgZGVmIHByb2Nl
c3Moc2VsZiwgbGluZXMpOgorICAgICAgICAgICAgICAgICMgU2F2ZSB0aGUgbGluZXMgc28gdGhl
IGN1cnJlbnQgdGVzdCBjYXNlIGhhcyBhIHdheSB0byBhY2Nlc3MKKyAgICAgICAgICAgICAgICAj
IGFuZCBjaGVjayB0aGVtLgorICAgICAgICAgICAgICAgIHNlbGYubGluZXMgPSBsaW5lcworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAgICAgICAgcmV0dXJuIE1vY2tDYXJyaWFn
ZUNoZWNrZXIKKworICAgIGRlZiB0ZXN0X3Nob3VsZF9wcm9jZXNzX19za2lwX3dpdGhvdXRfd2Fy
bmluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzaG91bGRfcHJvY2VzcygpIGZvciBhIHNraXAt
d2l0aG91dC13YXJuaW5nIGZpbGUuIiIiCisgICAgICAgIGZpbGVfcGF0aCA9ICJmb28vc2tpcF93
aXRob3V0X3dhcm5pbmcudHh0IgorCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5fcHJv
Y2Vzc29yLnNob3VsZF9wcm9jZXNzKGZpbGVfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9zaG91bGRf
cHJvY2Vzc19fc2tpcF93aXRoX3dhcm5pbmcoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2hvdWxk
X3Byb2Nlc3MoKSBmb3IgYSBza2lwLXdpdGgtd2FybmluZyBmaWxlLiIiIgorICAgICAgICBmaWxl
X3BhdGggPSAiZm9vL3NraXBfd2l0aF93YXJuaW5nLnR4dCIKKworICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHNlbGYuX3Byb2Nlc3Nvci5zaG91bGRfcHJvY2VzcyhmaWxlX3BhdGgpKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0TG9nKFsnV0FSTklORzogRmlsZSBleGVtcHQgZnJvbSBzdHlsZSBndWlk
ZS4gJworICAgICAgICAgICAgICAgICAgICAgICAgJ1NraXBwaW5nOiAiZm9vL3NraXBfd2l0aF93
YXJuaW5nLnR4dCJcbiddKQorCisgICAgZGVmIHRlc3Rfc2hvdWxkX3Byb2Nlc3NfX3RydWVfcmVz
dWx0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNob3VsZF9wcm9jZXNzKCkgZm9yIGEgZmlsZSB0
aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQuIiIiCisgICAgICAgIGZpbGVfcGF0aCA9ICJmb28vc2tp
cF9wcm9jZXNzLnR4dCIKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5fcHJvY2Vzc29y
LnNob3VsZF9wcm9jZXNzKGZpbGVfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9wcm9jZXNzX19jaGVj
a2VyX2Rpc3BhdGNoZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhlIHByb2Nlc3MoKSBtZXRo
b2QgZm9yIGEgcGF0aCB3aXRoIGEgZGlzcGF0Y2hlZCBjaGVja2VyLiIiIgorICAgICAgICBmaWxl
X3BhdGggPSAnZm9vLnR4dCcKKyAgICAgICAgbGluZXMgPSBbJ2xpbmUxJywgJ2xpbmUyJ10KKyAg
ICAgICAgbGluZV9udW1iZXJzID0gWzEwMF0KKworICAgICAgICBleHBlY3RlZF9lcnJvcl9oYW5k
bGVyID0gRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyKAorICAgICAgICAgICAgY29uZmlndXJhdGlv
bj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAgICAgICAgZmlsZV9wYXRoPWZpbGVfcGF0aCwK
KyAgICAgICAgICAgIGluY3JlbWVudF9lcnJvcl9jb3VudD1zZWxmLl9tb2NrX2luY3JlbWVudF9l
cnJvcl9jb3VudCwKKyAgICAgICAgICAgIGxpbmVfbnVtYmVycz1saW5lX251bWJlcnMpCisKKyAg
ICAgICAgc2VsZi5fcHJvY2Vzc29yLnByb2Nlc3MobGluZXM9bGluZXMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbGVfcGF0aD1maWxlX3BhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycz1saW5lX251bWJlcnMpCisKKyAgICAgICAgIyBD
aGVjayB0aGF0IHRoZSBjYXJyaWFnZS1yZXR1cm4gY2hlY2tlciB3YXMgaW5zdGFudGlhdGVkIGNv
cnJlY3RseQorICAgICAgICAjIGFuZCB3YXMgcGFzc2VkIGxpbmVzIGNvcnJlY3RseS4KKyAgICAg
ICAgY2FycmlhZ2VfY2hlY2tlciA9IHNlbGYuY2FycmlhZ2VfY2hlY2tlcgorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhjYXJyaWFnZV9jaGVja2VyLnN0eWxlX2Vycm9yX2hhbmRsZXIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2Vycm9yX2hhbmRsZXIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGNhcnJpYWdlX2NoZWNrZXIubGluZXMsIFsnbGluZTEnLCAnbGluZTIn
XSkKKworICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHN0eWxlIGNoZWNrZXIgd2FzIGRpc3BhdGNo
ZWQgY29ycmVjdGx5IGFuZCB3YXMKKyAgICAgICAgIyBwYXNzZWQgbGluZXMgY29ycmVjdGx5Lgor
ICAgICAgICBjaGVja2VyID0gc2VsZi5fbW9ja19kaXNwYXRjaGVyLmRpc3BhdGNoZWRfY2hlY2tl
cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja2VyLmZpbGVfcGF0aCwgJ2Zvby50eHQn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja2VyLm1pbl9jb25maWRlbmNlLCAzKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja2VyLnN0eWxlX2Vycm9yX2hhbmRsZXIsIGV4
cGVjdGVkX2Vycm9yX2hhbmRsZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tl
ci5saW5lcywgWydsaW5lMScsICdsaW5lMiddKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc19fbm9f
Y2hlY2tlcl9kaXNwYXRjaGVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoZSBwcm9jZXNzKCkg
bWV0aG9kIGZvciBhIHBhdGggd2l0aCBubyBkaXNwYXRjaGVkIGNoZWNrZXIuIiIiCisgICAgICAg
IHNlbGYuX3Byb2Nlc3Nvci5wcm9jZXNzKGxpbmVzPVsnbGluZTEnLCAnbGluZTInXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPSdmb28vZG9fbm90X3Byb2Nlc3Mu
dHh0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXJzPVsxMDBd
KQorCisgICAgICAgICMgQXMgYSBzYW5pdHkgY2hlY2ssIGNoZWNrIHRoYXQgdGhlIGNhcnJpYWdl
LXJldHVybiBjaGVja2VyIHdhcworICAgICAgICAjIGluc3RhbnRpYXRlZC4gIChUaGlzIGNvZGUg
cGF0aCB3YXMgYWxyZWFkeSBjaGVja2VkIGluIG90aGVyIHRlc3QKKyAgICAgICAgIyBtZXRob2Rz
IGluIHRoaXMgdGVzdCBjYXNlLikKKyAgICAgICAgY2FycmlhZ2VfY2hlY2tlciA9IHNlbGYuY2Fy
cmlhZ2VfY2hlY2tlcgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjYXJyaWFnZV9jaGVja2Vy
LmxpbmVzLCBbJ2xpbmUxJywgJ2xpbmUyJ10pCisKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBz
dHlsZSBjaGVja2VyIHdhcyBub3QgZGlzcGF0Y2hlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlbGYuX21vY2tfZGlzcGF0Y2hlci5kaXNwYXRjaGVkX2NoZWNrZXIgaXMgTm9uZSkKKworCisj
IEZJWE1FOiBEZWxldGUgdGhpcyBjbGFzcyBzaW5jZSBpdCBpcyBubyBsb25nZXIgYmVpbmcgdXNl
ZC4KIGNsYXNzIFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIi
VGVzdCB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLiIiIgpAQCAtNTIwLDcgKzczMiw3IEBAIGNsYXNz
IFN0eWxlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBwYXNzCiAKICAg
ICBkZWYgX3N0eWxlX2NoZWNrZXIoc2VsZiwgY29uZmlndXJhdGlvbik6Ci0gICAgICAgIHJldHVy
biBTdHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbikKKyAgICAgICAgcmV0dXJuIERlcHJlY2F0ZWRT
dHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbikKIAogICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CiAg
ICAgICAgICIiIlRlc3QgX19pbml0X18gY29uc3RydWN0b3IuIiIiCkBAIC01MzgsNiArNzUwLDcg
QEAgY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKHN0eWxlX2NoZWNrZXIuZmlsZV9jb3VudCwgMCkKIAogCisjIEZJWE1F
OiBEZWxldGUgdGhpcyBjbGFzcyBzaW5jZSBpdCBpcyBubyBsb25nZXIgYmVpbmcgdXNlZC4KIGNs
YXNzIFN0eWxlQ2hlY2tlckNoZWNrRmlsZUJhc2UoTG9nZ2luZ1Rlc3RDYXNlKToKIAogICAgIGRl
ZiBzZXRVcChzZWxmKToKQEAgLTU1Niw2ICs3NjksNyBAQCBjbGFzcyBTdHlsZUNoZWNrZXJDaGVj
a0ZpbGVCYXNlKExvZ2dpbmdUZXN0Q2FzZSk6CiAgICAgICAgICAgICBzdGRlcnJfd3JpdGU9c2Vs
Zi5tb2NrX3N0ZGVycl93cml0ZSkKIAogCisjIEZJWE1FOiBEZWxldGUgdGhpcyBjbGFzcyBzaW5j
ZSBpdCBpcyBubyBsb25nZXIgYmVpbmcgdXNlZC4KIGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrRmls
ZVRlc3QoU3R5bGVDaGVja2VyQ2hlY2tGaWxlQmFzZSk6CiAKICAgICAiIiJUZXN0IHRoZSBjaGVj
a19maWxlKCkgbWV0aG9kIG9mIHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MuCkBAIC02MjQsNyArODM4
LDcgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdChTdHlsZUNoZWNrZXJDaGVja0Zp
bGVCYXNlKToKIAogICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi5fc3R5bGVfY2hlY2tlcl9j
b25maWd1cmF0aW9uKCkKIAotICAgICAgICBzdHlsZV9jaGVja2VyID0gU3R5bGVDaGVja2VyKGNv
bmZpZ3VyYXRpb24pCisgICAgICAgIHN0eWxlX2NoZWNrZXIgPSBEZXByZWNhdGVkU3R5bGVDaGVj
a2VyKGNvbmZpZ3VyYXRpb24pCiAKICAgICAgICAgc3R5bGVfY2hlY2tlci5jaGVja19maWxlKGZp
bGVfcGF0aD1maWxlX3BhdGgsCiAgICAgICAgICAgICBtb2NrX2hhbmRsZV9zdHlsZV9lcnJvcj1z
ZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yLApAQCAtNzEyLDYgKzkyNiw3IEBAIGNsYXNzIFN0
eWxlQ2hlY2tlckNoZWNrRmlsZVRlc3QoU3R5bGVDaGVja2VyQ2hlY2tGaWxlQmFzZSk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpCiAKIAorIyBGSVhNRTogRGVsZXRlIHRoaXMg
Y2xhc3Mgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIGJlaW5nIHVzZWQuCiBjbGFzcyBTdHlsZUNoZWNr
ZXJDaGVja1BhdGhzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoZSBj
aGVja19wYXRocygpIG1ldGhvZCBvZiB0aGUgU3R5bGVDaGVja2VyIGNsYXNzLiIiIgpAQCAtNzQ0
LDcgKzk1OSw3IEBAIGNsYXNzIFN0eWxlQ2hlY2tlckNoZWNrUGF0aHNUZXN0KHVuaXR0ZXN0LlRl
c3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3BhdGhzKHNlbGYpOgogICAgICAgICAiIiJU
ZXN0IFN0eWxlQ2hlY2tlci5jaGVja19wYXRocygpLiIiIgotICAgICAgICBjaGVja2VyID0gU3R5
bGVDaGVja2VyKGNvbmZpZ3VyYXRpb249Tm9uZSkKKyAgICAgICAgY2hlY2tlciA9IERlcHJlY2F0
ZWRTdHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbj1Ob25lKQogICAgICAgICBtb2NrX2NoZWNrX2Zp
bGUgPSBzZWxmLl9tb2NrX2NoZWNrX2ZpbGUKICAgICAgICAgbW9ja19vcyA9IHNlbGYuTW9ja09z
KCkKIApAQCAtNzY0LDI1ICs5NzksMjYgQEAgY2xhc3MgUGF0Y2hDaGVja2VyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAKICAgICAiIiJUZXN0IHRoZSBQYXRjaENoZWNrZXIgY2xhc3MuIiIiCiAK
LSAgICBjbGFzcyBNb2NrU3R5bGVDaGVja2VyKG9iamVjdCk6CisgICAgY2xhc3MgTW9ja1RleHRG
aWxlUmVhZGVyKG9iamVjdCk6CiAKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAg
ICAgICAgc2VsZi5jaGVja2VkX2ZpbGVzID0gW10KKyAgICAgICAgICAgIHNlbGYucGFzc2VkX3Rv
X3Byb2Nlc3NfZmlsZSA9IFtdCiAgICAgICAgICAgICAiIiJBIGxpc3Qgb2YgKGZpbGVfcGF0aCwg
bGluZV9udW1iZXJzKSBwYWlycy4iIiIKIAotICAgICAgICBkZWYgY2hlY2tfZmlsZShzZWxmLCBm
aWxlX3BhdGgsIGxpbmVfbnVtYmVycyk6Ci0gICAgICAgICAgICBzZWxmLmNoZWNrZWRfZmlsZXMu
YXBwZW5kKChmaWxlX3BhdGgsIGxpbmVfbnVtYmVycykpCisgICAgICAgIGRlZiBwcm9jZXNzX2Zp
bGUoc2VsZiwgZmlsZV9wYXRoLCBsaW5lX251bWJlcnMpOgorICAgICAgICAgICAgc2VsZi5wYXNz
ZWRfdG9fcHJvY2Vzc19maWxlLmFwcGVuZCgoZmlsZV9wYXRoLCBsaW5lX251bWJlcnMpKQogCiAg
ICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzdHlsZV9jaGVja2VyID0gc2VsZi5Nb2NrU3R5
bGVDaGVja2VyKCkKLSAgICAgICAgc2VsZi5fc3R5bGVfY2hlY2tlciA9IHN0eWxlX2NoZWNrZXIK
LSAgICAgICAgc2VsZi5fcGF0Y2hfY2hlY2tlciA9IFBhdGNoQ2hlY2tlcihzdHlsZV9jaGVja2Vy
KQorICAgICAgICBmaWxlX3JlYWRlciA9IHNlbGYuTW9ja1RleHRGaWxlUmVhZGVyKCkKKyAgICAg
ICAgc2VsZi5fZmlsZV9yZWFkZXIgPSBmaWxlX3JlYWRlcgorICAgICAgICBzZWxmLl9wYXRjaF9j
aGVja2VyID0gUGF0Y2hDaGVja2VyKGZpbGVfcmVhZGVyKQogCiAgICAgZGVmIF9jYWxsX2NoZWNr
X3BhdGNoKHNlbGYsIHBhdGNoX3N0cmluZyk6CiAgICAgICAgIHNlbGYuX3BhdGNoX2NoZWNrZXIu
Y2hlY2socGF0Y2hfc3RyaW5nKQogCi0gICAgZGVmIF9hc3NlcnRfY2hlY2tlZChzZWxmLCBjaGVj
a2VkX2ZpbGVzKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fc3R5bGVfY2hlY2tl
ci5jaGVja2VkX2ZpbGVzLCBjaGVja2VkX2ZpbGVzKQorICAgIGRlZiBfYXNzZXJ0X2NoZWNrZWQo
c2VsZiwgcGFzc2VkX3RvX3Byb2Nlc3NfZmlsZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KHNlbGYuX2ZpbGVfcmVhZGVyLnBhc3NlZF90b19wcm9jZXNzX2ZpbGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBhc3NlZF90b19wcm9jZXNzX2ZpbGUpCiAKICAgICBkZWYgdGVzdF9jaGVj
a19wYXRjaChzZWxmKToKICAgICAgICAgIyBUaGUgbW9kaWZpZWQgbGluZV9udW1iZXJzIGFycmF5
IGZvciB0aGlzIHBhdGNoIGlzOiBbMl0uCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2ZpbGVyZWFkZXIucHkKaW5kZXggMDgxZTZkYy4uNDg0NTViMyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsZXJlYWRlci5weQpAQCAtMTAz
LDYgKzEwMywxMCBAQCBjbGFzcyBUZXh0RmlsZVJlYWRlcihvYmplY3QpOgogICAgICAgICAiIiIK
ICAgICAgICAgc2VsZi5maWxlX2NvdW50ICs9IDEKIAorICAgICAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMoZmlsZV9wYXRoKSBhbmQgZmlsZV9wYXRoICE9ICItIjoKKyAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkZpbGUgZG9lcyBub3QgZXhpc3Q6ICclcyciICUgZmlsZV9wYXRoKQorICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKKwogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvY2Vzc29yLnNob3VsZF9w
cm9jZXNzKGZpbGVfcGF0aCk6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCJTa2lwcGluZyBmaWxl
OiAnJXMnIiAlIGZpbGVfcGF0aCkKICAgICAgICAgICAgIHJldHVybgpAQCAtMTExLDEwICsxMTUs
NiBAQCBjbGFzcyBUZXh0RmlsZVJlYWRlcihvYmplY3QpOgogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBsaW5lcyA9IHNlbGYuX3JlYWRfbGluZXMoZmlsZV9wYXRoKQogICAgICAgICBleGNlcHQg
SU9FcnJvciwgZXJyOgotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVfcGF0
aCk6Ci0gICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiRmlsZSBkb2VzIG5vdCBleGlzdDogJyVz
JyIgJSBmaWxlX3BhdGgpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgICAgICAg
ICAgbWVzc2FnZSA9ICgiQ291bGQgbm90IHJlYWQgZmlsZS4gU2tpcHBpbmc6ICclcydcbiAgJXMi
CiAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpbGVfcGF0aCwgZXJyKSkKICAgICAgICAgICAg
IF9sb2cud2FybihtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9maWxlcmVhZGVyX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyX3VuaXR0ZXN0LnB5CmluZGV4IDU3YjQxMjYuLjU1OGVj
NWEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsZXJl
YWRlcl91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2ZpbGVyZWFkZXJfdW5pdHRlc3QucHkKQEAgLTg3LDEwICs4Nyw2IEBAIGNsYXNzIFRleHRGaWxl
UmVhZGVyVGVzdChMb2dnaW5nVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhw
YXNzZWRfdG9fcHJvY2Vzc29yLCBzZWxmLl9wYXNzZWRfdG9fcHJvY2Vzc29yKCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGZpbGVfY291bnQsIHNlbGYuX2ZpbGVfcmVhZGVyLmZpbGVfY291
bnQpCiAKLSAgICBkZWYgdGVzdF9wcm9jZXNzX2ZpbGVfX3Nob3VsZF9ub3RfcHJvY2VzcyhzZWxm
KToKLSAgICAgICAgc2VsZi5fZmlsZV9yZWFkZXIucHJvY2Vzc19maWxlKCdzaG91bGRfbm90X3By
b2Nlc3MudHh0JykKLSAgICAgICAgc2VsZi5fYXNzZXJ0X2ZpbGVfcmVhZGVyKFtdLCAxKQotCiAg
ICAgZGVmIHRlc3RfcHJvY2Vzc19maWxlX19kb2VzX25vdF9leGlzdChzZWxmKToKICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgc2VsZi5fZmlsZV9yZWFkZXIucHJvY2Vzc19maWxlKCdkb2VzX25v
dF9leGlzdC50eHQnKQpAQCAtMTIyLDYgKzExOCwxMiBAQCBjbGFzcyBUZXh0RmlsZVJlYWRlclRl
c3QoTG9nZ2luZ1Rlc3RDYXNlKToKIAogICAgICAgICBzZWxmLl9hc3NlcnRfZmlsZV9yZWFkZXIo
W10sIDEpCiAKKyAgICBkZWYgdGVzdF9wcm9jZXNzX2ZpbGVfX3Nob3VsZF9ub3RfcHJvY2Vzcyhz
ZWxmKToKKyAgICAgICAgZmlsZV9wYXRoID0gc2VsZi5fY3JlYXRlX2ZpbGUoJ3Nob3VsZF9ub3Rf
cHJvY2Vzcy50eHQnLCAnY29udGVudHMnKQorCisgICAgICAgIHNlbGYuX2ZpbGVfcmVhZGVyLnBy
b2Nlc3NfZmlsZShmaWxlX3BhdGgpCisgICAgICAgIHNlbGYuX2Fzc2VydF9maWxlX3JlYWRlcihb
XSwgMSkKKwogICAgIGRlZiB0ZXN0X3Byb2Nlc3NfZmlsZV9fbXVsdGlwbGVfbGluZXMoc2VsZik6
CiAgICAgICAgIGZpbGVfcGF0aCA9IHNlbGYuX2NyZWF0ZV9maWxlKCdmb28udHh0JywgJ2xpbmUg
b25lXHJcbmxpbmUgdHdvXG4nKQogCkBAIC0xMjksNiArMTMxLDEzIEBAIGNsYXNzIFRleHRGaWxl
UmVhZGVyVGVzdChMb2dnaW5nVGVzdENhc2UpOgogICAgICAgICBwcm9jZXNzZWQgPSBbKFsnbGlu
ZSBvbmVccicsICdsaW5lIHR3bycsICcnXSwgZmlsZV9wYXRoLCBOb25lKV0KICAgICAgICAgc2Vs
Zi5fYXNzZXJ0X2ZpbGVfcmVhZGVyKHByb2Nlc3NlZCwgMSkKIAorICAgIGRlZiB0ZXN0X3Byb2Nl
c3NfZmlsZV9fZmlsZV9zdGRpbihzZWxmKToKKyAgICAgICAgZmlsZV9wYXRoID0gc2VsZi5fY3Jl
YXRlX2ZpbGUoJy0nLCAnZmlsZSBjb250ZW50cycpCisKKyAgICAgICAgc2VsZi5fZmlsZV9yZWFk
ZXIucHJvY2Vzc19maWxlKGZpbGVfcGF0aD1maWxlX3BhdGgsIHRlc3Rfa3dhcmc9J2ZvbycpCisg
ICAgICAgIHByb2Nlc3NlZCA9IFsoWydmaWxlIGNvbnRlbnRzJ10sIGZpbGVfcGF0aCwgJ2Zvbycp
XQorICAgICAgICBzZWxmLl9hc3NlcnRfZmlsZV9yZWFkZXIocHJvY2Vzc2VkLCAxKQorCiAgICAg
ZGVmIHRlc3RfcHJvY2Vzc19maWxlX193aXRoX2t3YXJnKHNlbGYpOgogICAgICAgICBmaWxlX3Bh
dGggPSBzZWxmLl9jcmVhdGVfZmlsZSgnZm9vLnR4dCcsICdmaWxlIGNvbnRlbnRzJykKIAo=
</data>
<flag name="review"
          id="38161"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54275</attachid>
            <date>2010-04-26 04:38:28 -0700</date>
            <delta_ts>2010-04-26 05:28:45 -0700</delta_ts>
            <desc>Proposed patch 2</desc>
            <filename>_patch-37066-2.diff</filename>
            <type>text/plain</type>
            <size>31012</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA4Njc5ZjMyLi4wZjBjYmZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTAtMDQt
MjUgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCB0aGUgU3R5bGVDaGVj
a2VyIGNsYXNzIHRvIHVzZSB0aGUgbmV3IFRleHRGaWxlUmVhZGVyIGNsYXNzLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzA2NgorCisgICAgICAg
IFRoaXMgcmV2aXNpb24gc2VwYXJhdGVzIHRoZSBjb2RlIHJlc3BvbnNpYmxlIGZvciByZWFkaW5n
IGFuZCBpdGVyYXRpbmcKKyAgICAgICAgb3ZlciB0ZXh0IGZpbGVzIGZyb20gdGhlIHJlc3Qgb2Yg
Y2hlY2std2Via2l0LXN0eWxlLgorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5
bGU6CisgICAgICAgICAgLSBDaGFuZ2VkIHRoZSBzY3JpcHQgdG8gdXNlIHRoZSBuZXcgU3R5bGVQ
cm9jZXNzb3IgYW5kCisgICAgICAgICAgICBUZXh0RmlsZVJlYWRlciBjbGFzc2VzIGluc3RlYWQg
b2YgdGhlIFN0eWxlQ2hlY2tlciBjbGFzcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weToKKyAgICAgICAgICAtIEFkZGVkIGEgRklYTUUgdG8gcmVuYW1lIG1h
bnkgb2YgdXNlcyBvZiB0aGUgd29yZCAicHJvY2Vzc29yIiB0bworICAgICAgICAgICAgImNoZWNr
ZXIiLiAgV2UgZGlkIHRoaXMgdG8gY2xhcmlmeSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuCisgICAg
ICAgICAgICBQcm9jZXNzb3JCYXNlIGluc3RhbmNlcyBwYXNzZWQgdG8gdGhlIFRleHRGaWxlUmVh
ZGVyIGFuZAorICAgICAgICAgICAgY2xhc3NlcyB0aGF0IHByb2Nlc3MgYW5kIGNoZWNrIGxpbmVz
IGZvciBzdHlsZS4KKyAgICAgICAgICAtIEFkZGVkIGEgRklYTUUgdG8gcmVtb3ZlIEZpbGVUeXBl
Lk5PTkUgYXMgYSBwb3NzaWJsZSByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIG9mIFByb2Nlc3Nv
ckRpc3BhdGNoZXIuX2ZpbGVfdHlwZSgpLiAgVGhpcyB3aWxsIGJldHRlciBjb25zb2xpZGF0ZQor
ICAgICAgICAgICAgdGhlIGxvZ2ljIG9mIHdoaWNoIGZpbGVzIHNob3VsZCBiZSBza2lwcGVkLgor
ICAgICAgICAgIC0gQWRkZWQgYSBGSVhNRSB0byBkZWxldGUgdGhlIFN0eWxlQ2hlY2tlciBjbGFz
cy4KKyAgICAgICAgICAtIEFkZGVkIHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3aGljaCBpbXBs
ZW1lbnRzIFByb2Nlc3NvckJhc2UuCisgICAgICAgICAgICBUaGlzIGNsYXNzIGlzIHJlc3BvbnNp
YmxlIGZvciBwcm9jZXNzaW5nIGxpbmVzIHRvIGNoZWNrIHN0eWxlCisgICAgICAgICAgICAoYnV0
IG5vdCBmb3IgcmVhZGluZyBmaWxlcykuICBGb3IgZWFjaCBmaWxlLCB0aGlzIGNsYXNzIGNyZWF0
ZXMKKyAgICAgICAgICAgIGNyZWF0ZXMgYm90aCBhIGNhcnJpYWdlLXJldHVybiBjaGVja2VyIGFu
ZCBhIGZvcm1hdC1zcGVjaWZpYworICAgICAgICAgICAgc3R5bGUgY2hlY2tlciAoZS5nLiBvbmUg
b2YgQysrLCBQeXRob24sIGV0YykuCisgICAgICAgICAgLSBVcGRhdGVkIHRoZSBQYXRjaENoZWNr
ZXIgY2xhc3MgdG8gdXNlIGEgVGV4dEZpbGVSZWFkZXIgaW5zdGFuY2UKKyAgICAgICAgICAgIGlu
c3RlYWQgb2YgYSBTdHlsZUNoZWNrZXIuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBBZGRlZCB0aGUgU3R5bGVQcm9j
ZXNzb3JfRW5kVG9FbmRUZXN0IGNsYXNzIHRvIGRvICJlbmQtdG8tZW5kIgorICAgICAgICAgICAg
dGVzdHMgb2YgdGhlIFN0eWxlUHJvY2Vzc29yIGNsYXNzLgorICAgICAgICAgIC0gQWRkZWQgdGhl
IFN0eWxlUHJvY2Vzc29yX0NvZGVDb3ZlcmFnZVRlc3QgdG8gdGVzdCB0aGUKKyAgICAgICAgICAg
IFN0eWxlUHJvY2Vzc29yIGNsYXNzIHdpdGggbW9yZSBjb21wbGV0ZSBjb2RlIGNvdmVyYWdlLgor
ICAgICAgICAgICAgVW5saWtlIHRoZSBTdHlsZVByb2Nlc3Nvcl9FbmRUb0VuZFRlc3QgY2xhc3Ms
IHRoaXMgY2xhc3MgbWFrZXMKKyAgICAgICAgICAgIGhlYXZ5IHVzZSBvZiBtb2NrIHBhcmFtZXRl
cnMuCisgICAgICAgICAgLSBBZGRlZCBGSVhNRSdzIHRvIGRlbGV0ZSB0aGUgdW5pdCB0ZXN0IGNs
YXNzZXMgdGhhdCBhcmUgbm8KKyAgICAgICAgICAgIGxvbmdlciBuZWVkZWQuCisgICAgICAgICAg
LSBVcGRhdGVkIHRoZSBQYXRjaENoZWNrZXJUZXN0IGNsYXNzIHRvIHVzZSBhIE1vY2tUZXh0Rmls
ZVJlYWRlcgorICAgICAgICAgICAgaW5zdGVhZCBvZiBhIE1vY2tTdHlsZUNoZWNrZXIuCisKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIucHk6CisgICAgICAgICAg
LSBVcGRhdGVkIHRoZSBUZXh0RmlsZVJlYWRlciBjbGFzcyB0byB1c2UgdGhlIHByZWZlcnJlZCBs
b2dpYworICAgICAgICAgICAgb2YgY2hlY2tpbmcgZmlsZSBleGlzdGVuY2UgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgcHJvY2Vzc19maWxlKCkKKyAgICAgICAgICAgIG1ldGhvZCBpbnN0ZWFkIG9m
IGluIHRoZSBleGNlcHQgYmxvY2ssIHBlcgorICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3MTIyCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2ZpbGVyZWFkZXJfdW5pdHRlc3QucHk6CisgICAgICAgICAgLSBJbiB0aGUgVGV4dEZp
bGVSZWFkZXJUZXN0IGNsYXNzOgorICAgICAgICAgICAgLSBNb3ZlZCB0aGUgdGVzdF9wcm9jZXNz
X2ZpbGVfX3Nob3VsZF9ub3RfcHJvY2VzcygpIG1ldGhvZC4KKyAgICAgICAgICAgIC0gQWRkZWQg
YSB0ZXN0X3Byb2Nlc3NfZmlsZV9fZmlsZV9zdGRpbigpIG1ldGhvZCB0byB0ZXN0CisgICAgICAg
ICAgICAgIHRoZSBmaWxlIHBhdGggIi0iLgorCiAyMDEwLTA0LTIwICBSb2JlcnQgSG9nYW4gIDxy
b2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4K
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKaW5kZXggOTg5N2ZiZC4uMDkxY2Jk
NCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKQEAgLTUxLDYgKzUxLDgg
QEAgaW1wb3J0IHN5cwogZnJvbSB3ZWJraXRweS5zdHlsZV9yZWZlcmVuY2VzIGltcG9ydCBkZXRl
Y3RfY2hlY2tvdXQKIGltcG9ydCB3ZWJraXRweS5zdHlsZS5jaGVja2VyIGFzIGNoZWNrZXIKIGZy
b20gd2Via2l0cHkuc3R5bGUuY2hlY2tlciBpbXBvcnQgUGF0Y2hDaGVja2VyCitmcm9tIHdlYmtp
dHB5LnN0eWxlLmNoZWNrZXIgaW1wb3J0IFN0eWxlUHJvY2Vzc29yCitmcm9tIHdlYmtpdHB5LnN0
eWxlLmZpbGVyZWFkZXIgaW1wb3J0IFRleHRGaWxlUmVhZGVyCiBmcm9tIHdlYmtpdHB5LnN0eWxl
Lm1haW4gaW1wb3J0IGNoYW5nZV9kaXJlY3RvcnkKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KCJjaGVjay13ZWJraXQtc3R5bGUiKQpAQCAtMTAzLDIyICsxMDUsMjYgQEAgZGVmIG1haW4oKToK
ICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgIGNvbmZpZ3VyYXRpb24gPSBjaGVja2VyLmNoZWNr
X3dlYmtpdF9zdHlsZV9jb25maWd1cmF0aW9uKG9wdGlvbnMpCi0gICAgc3R5bGVfY2hlY2tlciA9
IGNoZWNrZXIuU3R5bGVDaGVja2VyKGNvbmZpZ3VyYXRpb24pCiAKICAgICBwYXRocyA9IGNoYW5n
ZV9kaXJlY3RvcnkoY2hlY2tvdXRfcm9vdD1jaGVja291dF9yb290LCBwYXRocz1wYXRocykKIAor
ICAgIHN0eWxlX3Byb2Nlc3NvciA9IFN0eWxlUHJvY2Vzc29yKGNvbmZpZ3VyYXRpb24pCisKKyAg
ICBmaWxlX3JlYWRlciA9IFRleHRGaWxlUmVhZGVyKHN0eWxlX3Byb2Nlc3NvcikKKwogICAgIGlm
IHBhdGhzOgotICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNrX3BhdGhzKHBhdGhzKQorICAgICAg
ICBmaWxlX3JlYWRlci5wcm9jZXNzX3BhdGhzKHBhdGhzKQogICAgIGVsc2U6CiAgICAgICAgIGlm
IG9wdGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIHBhdGNoID0gY2hlY2tvdXQuY3JlYXRl
X3BhdGNoX3NpbmNlX2xvY2FsX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaCgpCi0gICAgICAg
IHBhdGNoX2NoZWNrZXIgPSBQYXRjaENoZWNrZXIoc3R5bGVfY2hlY2tlcikKKyAgICAgICAgcGF0
Y2hfY2hlY2tlciA9IFBhdGNoQ2hlY2tlcihmaWxlX3JlYWRlcikKICAgICAgICAgcGF0Y2hfY2hl
Y2tlci5jaGVjayhwYXRjaCkKIAotICAgIGVycm9yX2NvdW50ID0gc3R5bGVfY2hlY2tlci5lcnJv
cl9jb3VudAotICAgIGZpbGVfY291bnQgPSBzdHlsZV9jaGVja2VyLmZpbGVfY291bnQKKyAgICBl
cnJvcl9jb3VudCA9IHN0eWxlX3Byb2Nlc3Nvci5lcnJvcl9jb3VudAorICAgIGZpbGVfY291bnQg
PSBmaWxlX3JlYWRlci5maWxlX2NvdW50CisKICAgICBfbG9nLmluZm8oIlRvdGFsIGVycm9ycyBm
b3VuZDogJWQgaW4gJWQgZmlsZXMiCiAgICAgICAgICAgICAgICUgKGVycm9yX2NvdW50LCBmaWxl
X2NvdW50KSkKICAgICAjIFdlIGZhaWwgd2hlbiBzdHlsZSBlcnJvcnMgYXJlIGZvdW5kIG9yIHRo
ZXJlIGFyZSBubyBjaGVja2VkIGZpbGVzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5CmluZGV4IDg0YWUzZGEuLmY1OWQ3OTAgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTMwLDcgKzMwLDYgQEAK
IAogIiIiRnJvbnQgZW5kIG9mIHNvbWUgc3R5bGUtY2hlY2tlciBtb2R1bGVzLiIiIgogCi1pbXBv
cnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBzeXMKQEAg
LTMzNyw2ICszMzYsMTMgQEAgY2xhc3MgRmlsZVR5cGU6CiAgICAgVEVYVCA9IDQKIAogCisjIEZJ
WE1FOiBSZW5hbWUgdGhpcyBjbGFzcyB0byBDaGVja2VyRGlzcGF0Y2hlciwgcmVuYW1lIHRoZSBz
dHlsZS9wcm9jZXNzb3JzLworIyAgICAgICAgZm9sZGVyIHRvIHN0eWxlL2NoZWNrZXJzLCBhbmQg
cmVuYW1lIGFsbCBvZiB0aGUgY29kZSBjaGVja2VyCisjICAgICAgICBjbGFzc2VzIHRvIGVuZCBp
biAiQ2hlY2tlciIgKGUuZy4gIkNwcFByb2Nlc3NvciIgc2hvdWxkIGJlY29tZQorIyAgICAgICAg
IkNwcENoZWNrZXIiKS4gIFRoaXMgd2lsbCBhZGRyZXNzIHRoZSBjdXJyZW50IGlzc3VlIHdoZXJl
YnkgdGhlCisjICAgICAgICB3b3JkICJwcm9jZXNzb3IiIGlzIGJlaW5nIHVzZWQgdG8gcmVmZXIg
dG8gYm90aCBhIGdlbmVyYWwgbGluZXMKKyMgICAgICAgIHByb2Nlc3NvciB1c2VkIHRvIGluc3Rh
bnRpYXRlIGEgVGV4dEZpbGVSZWFkZXIsIGFuZCBhIGNsYXNzIHVzZWQKKyMgICAgICAgIHRvIGNo
ZWNrIHN0eWxlIGZvciBhIHBhcnRpY3VsYXIgZmlsZSBmb3JtYXQuCiBjbGFzcyBQcm9jZXNzb3JE
aXNwYXRjaGVyKG9iamVjdCk6CiAKICAgICAiIiJTdXBwb3J0cyBkZXRlcm1pbmluZyB3aGV0aGVy
IGFuZCBob3cgdG8gY2hlY2sgc3R5bGUsIGJhc2VkIG9uIHBhdGguIiIiCkBAIC0zOTUsNiArNDAx
LDExIEBAIGNsYXNzIFByb2Nlc3NvckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgICAg
ZmlsZV9leHRlbnNpb24gaW4gc2VsZi50ZXh0X2ZpbGVfZXh0ZW5zaW9ucyk6CiAgICAgICAgICAg
ICByZXR1cm4gRmlsZVR5cGUuVEVYVAogICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBGSVhN
RTogSWYgcG9zc2libGUsIGNoYW5nZSB0aGlzIG1ldGhvZCB0byBkZWZhdWx0IHRvCisgICAgICAg
ICAgICAjICAgICAgICByZXR1cm5pbmcgRmlsZVR5cGUuVEVYVC4gIFRoZSBzaG91bGRfcHJvY2Vz
cygpIG1ldGhvZAorICAgICAgICAgICAgIyAgICAgICAgc2hvdWxkIHJlYWxseSBlbmNhcHN1bGF0
ZSB3aGljaCBmaWxlcyBub3QgdG8gY2hlY2suCisgICAgICAgICAgICAjICAgICAgICBDdXJyZW50
bHksICJza2lwIiBsb2dpYyBpcyBzcHJlYWQgYmV0d2VlbiBib3RoIHRoaXMKKyAgICAgICAgICAg
ICMgICAgICAgIG1ldGhvZCBhbmQgc2hvdWxkX3Byb2Nlc3MuCiAgICAgICAgICAgICByZXR1cm4g
RmlsZVR5cGUuTk9ORQogCiAgICAgZGVmIF9jcmVhdGVfcHJvY2Vzc29yKHNlbGYsIGZpbGVfdHlw
ZSwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IsCkBAIC01MjgsNyArNTM5LDEzIEBAIGNs
YXNzIFByb2Nlc3NvckJhc2Uob2JqZWN0KToKICAgICAiIiJUaGUgYmFzZSBjbGFzcyBmb3IgcHJv
Y2Vzc29ycyBvZiBsaXN0cyBvZiBsaW5lcy4iIiIKIAogICAgIGRlZiBzaG91bGRfcHJvY2Vzcyhz
ZWxmLCBmaWxlX3BhdGgpOgotICAgICAgICAiIiJSZXR1cm4gd2hldGhlciB0aGUgZmlsZSBhdCBm
aWxlX3BhdGggc2hvdWxkIGJlIHByb2Nlc3NlZC4iIiIKKyAgICAgICAgIiIiUmV0dXJuIHdoZXRo
ZXIgdGhlIGZpbGUgYXQgZmlsZV9wYXRoIHNob3VsZCBiZSBwcm9jZXNzZWQuCisKKyAgICAgICAg
VGhlIFRleHRGaWxlUmVhZGVyIGNsYXNzIGNhbGxzIHRoaXMgbWV0aG9kIHByaW9yIHRvIHJlYWRp
bmcgaW4KKyAgICAgICAgdGhlIGxpbmVzIG9mIGEgZmlsZS4gIFVzZSB0aGlzIG1ldGhvZCwgZm9y
IGV4YW1wbGUsIHRvIHByZXZlbnQKKyAgICAgICAgdGhlIHN0eWxlIGNoZWNrZXIgZnJvbSByZWFk
aW5nIGJpbmFyeSBmaWxlcyBpbnRvIG1lbW9yeS4KKworICAgICAgICAiIiIKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50LicpCiAK
ICAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5lcywgZmlsZV9wYXRoLCAqKmt3YXJncyk6CkBAIC01
NDksMTAgKzU2Niw4IEBAIGNsYXNzIFByb2Nlc3NvckJhc2Uob2JqZWN0KToKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvcignU3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50LicpCiAK
IAotIyBGSVhNRTogTW9kaWZ5IHRoaXMgY2xhc3MgdG8gc3RhcnQgdXNpbmcgdGhlIFRleHRGaWxl
UmVhZGVyIGNsYXNzIGluCi0jICAgICAgICB3ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyLnB5LiAg
VGhpcyBwcm9iYWJseSBtZWFucyBjcmVhdGluZwotIyAgICAgICAgYSBTdHlsZVByb2Nlc3NvciBj
bGFzcyB0aGF0IGluaGVyaXRzIGZyb20gUHJvY2Vzc29yQmFzZS4KLWNsYXNzIFN0eWxlQ2hlY2tl
cihvYmplY3QpOgorIyBGSVhNRTogRGVsZXRlIHRoaXMgY2xhc3Mgc2luY2UgaXQgaXMgbm8gbG9u
Z2VyIGJlaW5nIHVzZWQuCitjbGFzcyBEZXByZWNhdGVkU3R5bGVDaGVja2VyKG9iamVjdCk6CiAK
ICAgICAiIiJTdXBwb3J0cyBjaGVja2luZyBzdHlsZSBpbiBmaWxlcyBhbmQgcGF0Y2hlcy4KIApA
QCAtNzQwLDE4ICs3NTUsMTM5IEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgogICAgICAg
ICBwcm9jZXNzX2ZpbGUocHJvY2Vzc29yLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikK
IAogCitjbGFzcyBTdHlsZVByb2Nlc3NvcihQcm9jZXNzb3JCYXNlKToKKworICAgICIiIkEgUHJv
Y2Vzc29yQmFzZSBmb3IgY2hlY2tpbmcgc3R5bGUuCisKKyAgICBBdHRyaWJ1dGVzOgorICAgICAg
ZXJyb3JfY291bnQ6IEFuIGludGVnZXIgdGhhdCBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIHJlcG9y
dGVkCisgICAgICAgICAgICAgICAgICAgZXJyb3JzIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhpcyBp
bnN0YW5jZS4KKworICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRp
b24sIG1vY2tfZGlzcGF0Y2hlcj1Ob25lLAorICAgICAgICAgICAgICAgICBtb2NrX2luY3JlbWVu
dF9lcnJvcl9jb3VudD1Ob25lLAorICAgICAgICAgICAgICAgICBtb2NrX2NhcnJpYWdlX2NoZWNr
ZXJfY2xhc3M9Tm9uZSk6CisgICAgICAgICIiIkNyZWF0ZSBhbiBpbnN0YW5jZS4KKworICAgICAg
ICBBcmdzOgorICAgICAgICAgIGNvbmZpZ3VyYXRpb246IEEgU3R5bGVDaGVja2VyQ29uZmlndXJh
dGlvbiBpbnN0YW5jZS4KKyAgICAgICAgICBtb2NrX2Rpc3BhdGNoZXI6IEEgbW9jayBQcm9jZXNz
b3JEaXNwYXRjaGVyIGluc3RhbmNlLiAgVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVyIGlzIGZvciB1bml0IHRlc3RpbmcuICBEZWZhdWx0cyB0byBhCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBQcm9jZXNzb3JEaXNwYXRjaGVyIGluc3RhbmNlLgorICAgICAgICAg
IG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50OiBBIG1vY2sgZXJyb3ItY291bnQgaW5jcmVtZW50
ZXIuCisgICAgICAgICAgbW9ja19jYXJyaWFnZV9jaGVja2VyX2NsYXNzOiBBIG1vY2sgY2xhc3Mg
Zm9yIGNoZWNraW5nIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dHJhbnNmb3JtaW5nIGNhcnJpYWdlIHJldHVybnMuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBpcyBmb3IgdW5pdCB0ZXN0aW5nLgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gQ2FycmlhZ2VSZXR1
cm5Qcm9jZXNzb3IuCisKKyAgICAgICAgIiIiCisgICAgICAgIGlmIG1vY2tfZGlzcGF0Y2hlciBp
cyBOb25lOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IFByb2Nlc3NvckRpc3BhdGNoZXIoKQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlzcGF0Y2hlciA9IG1vY2tfZGlzcGF0Y2hlcgor
CisgICAgICAgIGlmIG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50IGlzIE5vbmU6CisgICAgICAg
ICAgICAjIFRoZSBmb2xsb3dpbmcgYmxhbmsgbGluZSBpcyBwcmVzZW50IHRvIGF2b2lkIGZsYWdn
aW5nIGJ5IHBlcDgucHkuCisKKyAgICAgICAgICAgIGRlZiBpbmNyZW1lbnRfZXJyb3JfY291bnQo
KToKKyAgICAgICAgICAgICAgICAiIiJJbmNyZW1lbnQgdGhlIHRvdGFsIGNvdW50IG9mIHJlcG9y
dGVkIGVycm9ycy4iIiIKKyAgICAgICAgICAgICAgICBzZWxmLmVycm9yX2NvdW50ICs9IDEKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGluY3JlbWVudF9lcnJvcl9jb3VudCA9IG1vY2tfaW5j
cmVtZW50X2Vycm9yX2NvdW50CisKKyAgICAgICAgaWYgbW9ja19jYXJyaWFnZV9jaGVja2VyX2Ns
YXNzIGlzIE5vbmU6CisgICAgICAgICAgICAjIFRoaXMgbmVlZHMgdG8gYmUgYSBjbGFzcyByYXRo
ZXIgdGhhbiBhbiBpbnN0YW5jZSBzaW5jZSB0aGUKKyAgICAgICAgICAgICMgcHJvY2VzcygpIG1l
dGhvZCBpbnN0YW50aWF0ZXMgb25lIHVzaW5nIHBhcmFtZXRlcnMuCisgICAgICAgICAgICBjYXJy
aWFnZV9jaGVja2VyX2NsYXNzID0gQ2FycmlhZ2VSZXR1cm5Qcm9jZXNzb3IKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIGNhcnJpYWdlX2NoZWNrZXJfY2xhc3MgPSBtb2NrX2NhcnJpYWdlX2No
ZWNrZXJfY2xhc3MKKworICAgICAgICBzZWxmLmVycm9yX2NvdW50ID0gMAorCisgICAgICAgIHNl
bGYuX2NhcnJpYWdlX2NoZWNrZXJfY2xhc3MgPSBjYXJyaWFnZV9jaGVja2VyX2NsYXNzCisgICAg
ICAgIHNlbGYuX2NvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX2Rp
c3BhdGNoZXIgPSBkaXNwYXRjaGVyCisgICAgICAgIHNlbGYuX2luY3JlbWVudF9lcnJvcl9jb3Vu
dCA9IGluY3JlbWVudF9lcnJvcl9jb3VudAorCisgICAgZGVmIHNob3VsZF9wcm9jZXNzKHNlbGYs
IGZpbGVfcGF0aCk6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoZSBmaWxlIHNob3VsZCBi
ZSBjaGVja2VkIGZvciBzdHlsZS4iIiIKKworICAgICAgICBpZiBzZWxmLl9kaXNwYXRjaGVyLnNo
b3VsZF9za2lwX3dpdGhvdXRfd2FybmluZyhmaWxlX3BhdGgpOgorICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIGlmIHNlbGYuX2Rpc3BhdGNoZXIuc2hvdWxkX3NraXBfd2l0aF93YXJu
aW5nKGZpbGVfcGF0aCk6CisgICAgICAgICAgICBfbG9nLndhcm4oJ0ZpbGUgZXhlbXB0IGZyb20g
c3R5bGUgZ3VpZGUuIFNraXBwaW5nOiAiJXMiJworICAgICAgICAgICAgICAgICAgICAgICUgZmls
ZV9wYXRoKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBUcnVlCisK
KyAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5lcywgZmlsZV9wYXRoLCBsaW5lX251bWJlcnM9Tm9u
ZSk6CisgICAgICAgICIiIkNoZWNrIHRoZSBnaXZlbiBsaW5lcyBmb3Igc3R5bGUuCisKKyAgICAg
ICAgQXJndW1lbnRzOgorICAgICAgICAgIGxpbmVzOiBBIGxpc3Qgb2YgYWxsIGxpbmVzIGluIHRo
ZSBmaWxlIHRvIGNoZWNrLgorICAgICAgICAgIGZpbGVfcGF0aDogVGhlIHBhdGggb2YgdGhlIGZp
bGUgdG8gcHJvY2Vzcy4gIElmIHBvc3NpYmxlLCB0aGUgcGF0aAorICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkIGJlIHJlbGF0aXZlIHRvIHRoZSBzb3VyY2Ugcm9vdC4gIE90aGVyd2lzZSwKKyAg
ICAgICAgICAgICAgICAgICAgIHBhdGgtc3BlY2lmaWMgbG9naWMgbWF5IG5vdCBiZWhhdmUgYXMg
ZXhwZWN0ZWQuCisgICAgICAgICAgbGluZV9udW1iZXJzOiBBIGxpc3Qgb2YgbGluZSBudW1iZXJz
IG9mIHRoZSBsaW5lcyBmb3Igd2hpY2gKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlIGVy
cm9ycyBzaG91bGQgYmUgcmVwb3J0ZWQsIG9yIE5vbmUgaWYgZXJyb3JzCisgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgYWxsIGxpbmVzIHNob3VsZCBiZSByZXBvcnRlZC4gIFdoZW4gbm90IE5v
bmUsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qgbm9ybWFsbHkgY29udGFpbnMg
dGhlIGxpbmUgbnVtYmVycyBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB0
byB0aGUgbW9kaWZpZWQgbGluZXMgb2YgYSBwYXRjaC4KKworICAgICAgICAiIiIKKyAgICAgICAg
X2xvZy5kZWJ1ZygiQ2hlY2tpbmcgc3R5bGU6ICIgKyBmaWxlX3BhdGgpCisKKyAgICAgICAgc3R5
bGVfZXJyb3JfaGFuZGxlciA9IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcigKKyAgICAgICAgICAg
IGNvbmZpZ3VyYXRpb249c2VsZi5fY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIGZpbGVfcGF0
aD1maWxlX3BhdGgsCisgICAgICAgICAgICBpbmNyZW1lbnRfZXJyb3JfY291bnQ9c2VsZi5faW5j
cmVtZW50X2Vycm9yX2NvdW50LAorICAgICAgICAgICAgbGluZV9udW1iZXJzPWxpbmVfbnVtYmVy
cykKKworICAgICAgICBjYXJyaWFnZV9jaGVja2VyID0gc2VsZi5fY2FycmlhZ2VfY2hlY2tlcl9j
bGFzcyhzdHlsZV9lcnJvcl9oYW5kbGVyKQorCisgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBw
cm9iYWJseSB1c2UgdGhlIFNWTiAiZW9sLXN0eWxlIiBwcm9wZXJ0eQorICAgICAgICAjICAgICAg
ICBvciBhIHdoaXRlIGxpc3QgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGRvCisgICAgICAg
ICMgICAgICAgIHRoZSBjYXJyaWFnZS1yZXR1cm4gY2hlY2suIE9yaWdpbmFsbHksIHdlIGRpZCB0
aGUKKyAgICAgICAgIyAgICAgICAgY2hlY2sgb25seSBpZiAob3MubGluZXNlcCAhPSAnXHJcbicp
LgorICAgICAgICAjCisgICAgICAgICMgQ2hlY2sgZm9yIGFuZCByZW1vdmUgdHJhaWxpbmcgY2Fy
cmlhZ2UgcmV0dXJucyAoIlxyIikuCisgICAgICAgIGxpbmVzID0gY2FycmlhZ2VfY2hlY2tlci5w
cm9jZXNzKGxpbmVzKQorCisgICAgICAgIG1pbl9jb25maWRlbmNlID0gc2VsZi5fY29uZmlndXJh
dGlvbi5taW5fY29uZmlkZW5jZQorICAgICAgICBjaGVja2VyID0gc2VsZi5fZGlzcGF0Y2hlci5k
aXNwYXRjaF9wcm9jZXNzb3IoZmlsZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGVfZXJyb3JfaGFuZGxlciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRl
bmNlKQorCisgICAgICAgIGlmIGNoZWNrZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgRklYTUU6
IFNob3VsZCB3ZSByZWFsbHkgYmUgc2tpcHBpbmcgZmlsZXMgdGhhdCByZXR1cm4gVHJ1ZQorICAg
ICAgICAgICAgIyAgICAgICAgZm9yIHNob3VsZF9wcm9jZXNzKCk/ICBQZXJoYXBzIHRoaXMgc2hv
dWxkIGJlIGEKKyAgICAgICAgICAgICMgICAgICAgIHdhcm5pbmcgb3IgYW4gZXhjZXB0aW9uIHNv
IHdlIGNhbiBmaW5kIG91dCBpZgorICAgICAgICAgICAgIyAgICAgICAgc2hvdWxkX3Byb2Nlc3Mo
KSBpcyBtaXNzaW5nIGFueSBmaWxlcy4KKyAgICAgICAgICAgIF9sb2cuZGVidWcoJ0ZpbGUgbm90
IGEgcmVjb2duaXplZCB0eXBlIHRvIGNoZWNrLiBTa2lwcGluZzogIiVzIicKKyAgICAgICAgICAg
ICAgICAgICAgICAgJSBmaWxlX3BhdGgpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBf
bG9nLmRlYnVnKCJVc2luZyBjbGFzczogIiArIGNoZWNrZXIuX19jbGFzc19fLl9fbmFtZV9fKQor
CisgICAgICAgIGNoZWNrZXIucHJvY2VzcyhsaW5lcykKKworCisjIEZJWE1FOiBSZW5hbWUgdGhp
cyBjbGFzcyB0byBQYXRjaFJlYWRlciB0byBwYXJhbGxlbCBUZXh0RmlsZVJlYWRlcgorIyAgICAg
ICAgKGFuZCB0byBkaXN0aW5ndWlzaCBpdCBmcm9tIENhcnJpYWdlUmV0dXJuQ2hlY2tlciwgQ3Bw
Q2hlY2tlciwKKyMgICAgICAgIGV0Yy4gd2hpY2ggYXJlIHJlc3BvbnNpYmxlIG9ubHkgZm9yIHBy
b2Nlc3NpbmcgbGluZXMpLgogY2xhc3MgUGF0Y2hDaGVja2VyKG9iamVjdCk6CiAKICAgICAiIiJT
dXBwb3J0cyBjaGVja2luZyBzdHlsZSBpbiBwYXRjaGVzLiIiIgogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHN0eWxlX2NoZWNrZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXh0X2ZpbGVf
cmVhZGVyKToKICAgICAgICAgIiIiQ3JlYXRlIGEgUGF0Y2hDaGVja2VyIGluc3RhbmNlLgogCiAg
ICAgICAgIEFyZ3M6Ci0gICAgICAgICAgc3R5bGVfY2hlY2tlcjogQSBTdHlsZUNoZWNrZXIgaW5z
dGFuY2UuCisgICAgICAgICAgdGV4dF9maWxlX3JlYWRlcjogQSBUZXh0RmlsZVJlYWRlciBpbnN0
YW5jZS4KIAogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fZmlsZV9jaGVja2VyID0gc3R5bGVf
Y2hlY2tlcgorICAgICAgICBzZWxmLl90ZXh0X2ZpbGVfcmVhZGVyID0gdGV4dF9maWxlX3JlYWRl
cgogCiAgICAgZGVmIGNoZWNrKHNlbGYsIHBhdGNoX3N0cmluZyk6CiAgICAgICAgICIiIkNoZWNr
IHN0eWxlIGluIHRoZSBnaXZlbiBwYXRjaC4iIiIKQEAgLTc3NSw1ICs5MTEsNSBAQCBjbGFzcyBQ
YXRjaENoZWNrZXIob2JqZWN0KToKICAgICAgICAgICAgICMgVGhpcyBvcHRpbWl6YXRpb24gYWxz
byBwcmV2ZW50cyB0aGUgcHJvZ3JhbSBmcm9tIGV4aXRpbmcKICAgICAgICAgICAgICMgZHVlIHRv
IGEgZGVsZXRlZCBmaWxlLgogICAgICAgICAgICAgaWYgbGluZV9udW1iZXJzOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2ZpbGVfY2hlY2tlci5jaGVja19maWxlKGZpbGVfcGF0aD1wYXRoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycz1s
aW5lX251bWJlcnMpCisgICAgICAgICAgICAgICAgc2VsZi5fdGV4dF9maWxlX3JlYWRlci5wcm9j
ZXNzX2ZpbGUoZmlsZV9wYXRoPXBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXJzPWxpbmVfbnVtYmVycykKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5w
eQppbmRleCA0MDFhN2IzLi5lMzdjYmI5IDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CkBAIC00OSwxMCArNDksMTMg
QEAgZnJvbSBjaGVja2VyIGltcG9ydCBfYWxsX2NhdGVnb3JpZXMKIGZyb20gY2hlY2tlciBpbXBv
cnQgY2hlY2tfd2Via2l0X3N0eWxlX2NvbmZpZ3VyYXRpb24KIGZyb20gY2hlY2tlciBpbXBvcnQg
Y2hlY2tfd2Via2l0X3N0eWxlX3BhcnNlcgogZnJvbSBjaGVja2VyIGltcG9ydCBjb25maWd1cmVf
bG9nZ2luZworZnJvbSBjaGVja2VyIGltcG9ydCBEZXByZWNhdGVkU3R5bGVDaGVja2VyCiBmcm9t
IGNoZWNrZXIgaW1wb3J0IFByb2Nlc3NvckRpc3BhdGNoZXIKIGZyb20gY2hlY2tlciBpbXBvcnQg
UGF0Y2hDaGVja2VyCi1mcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlcgorZnJvbSBjaGVj
a2VyIGltcG9ydCBQcm9jZXNzb3JCYXNlCitmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlUHJvY2Vz
c29yCiBmcm9tIGNoZWNrZXIgaW1wb3J0IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24KK2Zyb20g
ZXJyb3JfaGFuZGxlcnMgaW1wb3J0IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcgogZnJvbSBmaWx0
ZXIgaW1wb3J0IHZhbGlkYXRlX2ZpbHRlcl9ydWxlcwogZnJvbSBmaWx0ZXIgaW1wb3J0IEZpbHRl
ckNvbmZpZ3VyYXRpb24KIGZyb20gb3B0cGFyc2VyIGltcG9ydCBBcmd1bWVudFBhcnNlcgpAQCAt
NjEsNiArNjQsNyBAQCBmcm9tIHByb2Nlc3NvcnMuY3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZy
b20gcHJvY2Vzc29ycy5weXRob24gaW1wb3J0IFB5dGhvblByb2Nlc3NvcgogZnJvbSBwcm9jZXNz
b3JzLnRleHQgaW1wb3J0IFRleHRQcm9jZXNzb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5sb2d0ZXN0aW5nIGltcG9ydCBMb2dnaW5nVGVzdENhc2UKK2Zyb20gd2Via2l0cHkuc3R5bGUu
ZmlsZXJlYWRlciBpbXBvcnQgVGV4dEZpbGVSZWFkZXIKIAogCiBjbGFzcyBDb25maWd1cmVMb2dn
aW5nVGVzdEJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNTEyLDYgKzUxNiwyMzIgQEAgY2xh
c3MgU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICBbImZvby5oKDEwMCk6ICBtZXNzYWdlICBbd2hpdGVzcGFj
ZS90YWJdIFs1XVxuIl0pCiAKIAorY2xhc3MgU3R5bGVQcm9jZXNzb3JfRW5kVG9FbmRUZXN0KExv
Z2dpbmdUZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0IHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3
aXRoIGFuIGVtcGhhc2lzIG9uIGVuZC10by1lbmQgdGVzdHMuIiIiCisKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIExvZ2dpbmdUZXN0Q2FzZS5zZXRVcChzZWxmKQorICAgICAgICBzZWxm
Ll9tZXNzYWdlcyA9IFtdCisKKyAgICBkZWYgX21vY2tfc3RkZXJyX3dyaXRlKHNlbGYsIG1lc3Nh
Z2UpOgorICAgICAgICAiIiJTYXZlIGEgbWVzc2FnZSBzbyBpdCBjYW4gbGF0ZXIgYmUgYXNzZXJ0
ZWQuIiIiCisgICAgICAgIHNlbGYuX21lc3NhZ2VzLmFwcGVuZChtZXNzYWdlKQorCisgICAgZGVm
IHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4i
IiIKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFN0eWxlQ2hlY2tlckNvbmZpZ3VyYXRpb24oCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2NvbmZpZ3VyYXRpb249RmlsdGVyQ29u
ZmlndXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heF9yZXBvcnRzX3Bl
cl9jYXRlZ29yeT17fSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5fY29uZmlkZW5j
ZT0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9InZzNyIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX3dyaXRlPXNlbGYuX21vY2tfc3RkZXJy
X3dyaXRlKQorICAgICAgICBwcm9jZXNzb3IgPSBTdHlsZVByb2Nlc3Nvcihjb25maWd1cmF0aW9u
KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHByb2Nlc3Nvci5lcnJvcl9jb3VudCwgMCkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fbWVzc2FnZXMsIFtdKQorCisgICAgZGVm
IHRlc3RfcHJvY2VzcyhzZWxmKToKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IFN0eWxlQ2hlY2tl
ckNvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyX2NvbmZp
Z3VyYXRpb249RmlsdGVyQ29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1heF9yZXBvcnRzX3Blcl9jYXRlZ29yeT17fSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtaW5fY29uZmlkZW5jZT0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1
dF9mb3JtYXQ9InZzNyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyX3dyaXRl
PXNlbGYuX21vY2tfc3RkZXJyX3dyaXRlKQorICAgICAgICBwcm9jZXNzb3IgPSBTdHlsZVByb2Nl
c3Nvcihjb25maWd1cmF0aW9uKQorCisgICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKGxpbmVzPVsn
bGluZTEnLCAnTGluZSB3aXRoIHRhYjpcdCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWxlX3BhdGg9J2Zvby50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwcm9jZXNzb3Iu
ZXJyb3JfY291bnQsIDEpCisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2VzID0gWydmb28udHh0KDIp
OiAgTGluZSBjb250YWlucyB0YWIgY2hhcmFjdGVyLiAgJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnW3doaXRlc3BhY2UvdGFiXSBbNV1cbiddCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKHNlbGYuX21lc3NhZ2VzLCBleHBlY3RlZF9tZXNzYWdlcykKKworCitjbGFzcyBTdHlsZVBy
b2Nlc3Nvcl9Db2RlQ292ZXJhZ2VUZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0
IHRoZSBTdHlsZVByb2Nlc3NvciBjbGFzcyB3aXRoIGFuIGVtcGhhc2lzIG9uIGNvZGUgY292ZXJh
Z2UuCisKKyAgICBUaGlzIGNsYXNzIG1ha2VzIGhlYXZ5IHVzZSBvZiBtb2NrIG9iamVjdHMuCisK
KyAgICAiIiIKKworICAgIGNsYXNzIE1vY2tEaXNwYXRjaGVkQ2hlY2tlcihvYmplY3QpOgorCisg
ICAgICAgICIiIkEgbW9jayBjaGVja2VyIGRpc3BhdGNoZWQgYnkgdGhlIE1vY2tEaXNwYXRjaGVy
LiIiIgorCisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIG1pbl9jb25maWRl
bmNlLCBzdHlsZV9lcnJvcl9oYW5kbGVyKToKKyAgICAgICAgICAgIHNlbGYuZmlsZV9wYXRoID0g
ZmlsZV9wYXRoCisgICAgICAgICAgICBzZWxmLm1pbl9jb25maWRlbmNlID0gbWluX2NvbmZpZGVu
Y2UKKyAgICAgICAgICAgIHNlbGYuc3R5bGVfZXJyb3JfaGFuZGxlciA9IHN0eWxlX2Vycm9yX2hh
bmRsZXIKKworICAgICAgICBkZWYgcHJvY2VzcyhzZWxmLCBsaW5lcyk6CisgICAgICAgICAgICBz
ZWxmLmxpbmVzID0gbGluZXMKKworICAgIGNsYXNzIE1vY2tEaXNwYXRjaGVyKG9iamVjdCk6CisK
KyAgICAgICAgIiIiQSBtb2NrIFByb2Nlc3NvckRpc3BhdGNoZXIgY2xhc3MuIiIiCisKKyAgICAg
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaGVkX2NoZWNr
ZXIgPSBOb25lCisKKyAgICAgICAgZGVmIHNob3VsZF9za2lwX3dpdGhfd2FybmluZyhzZWxmLCBm
aWxlX3BhdGgpOgorICAgICAgICAgICAgcmV0dXJuIGZpbGVfcGF0aC5lbmRzd2l0aCgnc2tpcF93
aXRoX3dhcm5pbmcudHh0JykKKworICAgICAgICBkZWYgc2hvdWxkX3NraXBfd2l0aG91dF93YXJu
aW5nKHNlbGYsIGZpbGVfcGF0aCk6CisgICAgICAgICAgICByZXR1cm4gZmlsZV9wYXRoLmVuZHN3
aXRoKCdza2lwX3dpdGhvdXRfd2FybmluZy50eHQnKQorCisgICAgICAgIGRlZiBkaXNwYXRjaF9w
cm9jZXNzb3Ioc2VsZiwgZmlsZV9wYXRoLCBzdHlsZV9lcnJvcl9oYW5kbGVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlKToKKyAgICAgICAgICAgIGlmIGZp
bGVfcGF0aC5lbmRzd2l0aCgnZG9fbm90X3Byb2Nlc3MudHh0Jyk6CisgICAgICAgICAgICAgICAg
cmV0dXJuIE5vbmUKKworICAgICAgICAgICAgY2hlY2tlciA9IFN0eWxlUHJvY2Vzc29yX0NvZGVD
b3ZlcmFnZVRlc3QuTW9ja0Rpc3BhdGNoZWRDaGVja2VyKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBmaWxlX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZV9lcnJvcl9oYW5kbGVyKQorCisgICAg
ICAgICAgICAjIFNhdmUgdGhlIGRpc3BhdGNoZWQgY2hlY2tlciBzbyB0aGUgY3VycmVudCB0ZXN0
IGNhc2UgaGFzIGEKKyAgICAgICAgICAgICMgd2F5IHRvIGFjY2VzcyBhbmQgY2hlY2sgaXQuCisg
ICAgICAgICAgICBzZWxmLmRpc3BhdGNoZWRfY2hlY2tlciA9IGNoZWNrZXIKKworICAgICAgICAg
ICAgcmV0dXJuIGNoZWNrZXIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgTG9nZ2lu
Z1Rlc3RDYXNlLnNldFVwKHNlbGYpCisgICAgICAgICMgV2UgY2FuIHBhc3MgYW4gZXJyb3ItbWVz
c2FnZSBzd2FsbG93ZXIgaGVyZSBiZWNhdXNlIGVycm9yIG1lc3NhZ2UKKyAgICAgICAgIyBvdXRw
dXQgaXMgdGVzdGVkIGluc3RlYWQgaW4gdGhlIGVuZC10by1lbmQgdGVzdCBjYXNlIGFib3ZlLgor
ICAgICAgICBjb25maWd1cmF0aW9uID0gU3R5bGVDaGVja2VyQ29uZmlndXJhdGlvbigKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfY29uZmlndXJhdGlvbj1GaWx0ZXJDb25maWd1
cmF0aW9uKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3JlcG9ydHNfcGVyX2Nh
dGVnb3J5PXsid2hpdGVzcGFjZS9uZXdsaW5lIjogMX0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWluX2NvbmZpZGVuY2U9MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
dXRfZm9ybWF0PSJ2czciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycl93cml0
ZT1zZWxmLl9zd2FsbG93X3N0ZGVycl9tZXNzYWdlKQorCisgICAgICAgIG1vY2tfY2FycmlhZ2Vf
Y2hlY2tlcl9jbGFzcyA9IHNlbGYuX2NyZWF0ZV9jYXJyaWFnZV9jaGVja2VyX2NsYXNzKCkKKyAg
ICAgICAgbW9ja19kaXNwYXRjaGVyID0gc2VsZi5Nb2NrRGlzcGF0Y2hlcigpCisgICAgICAgICMg
V2UgZG8gbm90IG5lZWQgdG8gdXNlIGEgcmVhbCBpbmNyZW1lbnRlciBoZXJlIGJlY2F1c2UgZXJy
b3ItY291bnQKKyAgICAgICAgIyBpbmNyZW1lbnRpbmcgaXMgdGVzdGVkIGluc3RlYWQgaW4gdGhl
IGVuZC10by1lbmQgdGVzdCBjYXNlIGFib3ZlLgorICAgICAgICBtb2NrX2luY3JlbWVudF9lcnJv
cl9jb3VudCA9IHNlbGYuX2RvX25vdGhpbmcKKworICAgICAgICBwcm9jZXNzb3IgPSBTdHlsZVBy
b2Nlc3Nvcihjb25maWd1cmF0aW9uPWNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICBtb2NrX2NhcnJpYWdlX2NoZWNrZXJfY2xhc3M9bW9ja19jYXJyaWFnZV9jaGVja2VyX2Ns
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgbW9ja19kaXNwYXRjaGVyPW1vY2tfZGlzcGF0
Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50
PW1vY2tfaW5jcmVtZW50X2Vycm9yX2NvdW50KQorCisgICAgICAgIHNlbGYuX2NvbmZpZ3VyYXRp
b24gPSBjb25maWd1cmF0aW9uCisgICAgICAgIHNlbGYuX21vY2tfZGlzcGF0Y2hlciA9IG1vY2tf
ZGlzcGF0Y2hlcgorICAgICAgICBzZWxmLl9wcm9jZXNzb3IgPSBwcm9jZXNzb3IKKworICAgIGRl
ZiBfZG9fbm90aGluZyhzZWxmKToKKyAgICAgICAgIyBXZSBwcm92aWRlIHRoaXMgZnVuY3Rpb24g
c28gdGhlIGNhbGxlciBjYW4gcGFzcyBpdCB0byB0aGUKKyAgICAgICAgIyBTdHlsZVByb2Nlc3Nv
ciBjb25zdHJ1Y3Rvci4gIFRoaXMgbGV0cyB1cyBhc3NlcnQgdGhlIGVxdWFsaXR5IG9mCisgICAg
ICAgICMgdGhlIERlZmF1bHRTdHlsZUVycm9ySGFuZGxlciBpbnN0YW5jZSBnZW5lcmF0ZWQgYnkg
dGhlIHByb2Nlc3MoKQorICAgICAgICAjIG1ldGhvZCB3aXRoIGFuIGV4cGVjdGVkIGluc3RhbmNl
LgorICAgICAgICBwYXNzCisKKyAgICBkZWYgX3N3YWxsb3dfc3RkZXJyX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSk6CisgICAgICAgICIiIlN3YWxsb3cgYSBtZXNzYWdlIHBhc3NlZCB0byBzdGRlcnIu
d3JpdGUoKS4iIiIKKyAgICAgICAgIyBUaGlzIGlzIGEgbW9jayBzdGRlcnIud3JpdGUoKSBmb3Ig
cGFzc2luZyB0byB0aGUgY29uc3RydWN0b3IKKyAgICAgICAgIyBvZiB0aGUgU3R5bGVDaGVja2Vy
Q29uZmlndXJhdGlvbiBjbGFzcy4KKyAgICAgICAgcGFzcworCisgICAgZGVmIF9jcmVhdGVfY2Fy
cmlhZ2VfY2hlY2tlcl9jbGFzcyhzZWxmKToKKworICAgICAgICAjIENyZWF0ZSBhIHJlZmVyZW5j
ZSB0byBzZWxmIHdpdGggYSBuZXcgbmFtZSBzbyBpdHMgbmFtZSBkb2VzIG5vdAorICAgICAgICAj
IGNvbmZsaWN0IHdpdGggdGhlIHNlbGYgaW50cm9kdWNlZCBiZWxvdy4KKyAgICAgICAgdGVzdF9j
YXNlID0gc2VsZgorCisgICAgICAgIGNsYXNzIE1vY2tDYXJyaWFnZUNoZWNrZXIob2JqZWN0KToK
KworICAgICAgICAgICAgIiIiQSBtb2NrIGNhcnJpYWdlLXJldHVybiBjaGVja2VyLiIiIgorCisg
ICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgc3R5bGVfZXJyb3JfaGFuZGxlcik6CisgICAg
ICAgICAgICAgICAgc2VsZi5zdHlsZV9lcnJvcl9oYW5kbGVyID0gc3R5bGVfZXJyb3JfaGFuZGxl
cgorCisgICAgICAgICAgICAgICAgIyBUaGlzIGdpdmVzIHRoZSBjdXJyZW50IHRlc3QgY2FzZSBh
Y2Nlc3MgdG8gdGhlCisgICAgICAgICAgICAgICAgIyBpbnN0YW50aWF0ZWQgY2FycmlhZ2UgY2hl
Y2tlci4KKyAgICAgICAgICAgICAgICB0ZXN0X2Nhc2UuY2FycmlhZ2VfY2hlY2tlciA9IHNlbGYK
KworICAgICAgICAgICAgZGVmIHByb2Nlc3Moc2VsZiwgbGluZXMpOgorICAgICAgICAgICAgICAg
ICMgU2F2ZSB0aGUgbGluZXMgc28gdGhlIGN1cnJlbnQgdGVzdCBjYXNlIGhhcyBhIHdheSB0byBh
Y2Nlc3MKKyAgICAgICAgICAgICAgICAjIGFuZCBjaGVjayB0aGVtLgorICAgICAgICAgICAgICAg
IHNlbGYubGluZXMgPSBsaW5lcworCisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVzCisKKyAg
ICAgICAgcmV0dXJuIE1vY2tDYXJyaWFnZUNoZWNrZXIKKworICAgIGRlZiB0ZXN0X3Nob3VsZF9w
cm9jZXNzX19za2lwX3dpdGhvdXRfd2FybmluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBzaG91
bGRfcHJvY2VzcygpIGZvciBhIHNraXAtd2l0aG91dC13YXJuaW5nIGZpbGUuIiIiCisgICAgICAg
IGZpbGVfcGF0aCA9ICJmb28vc2tpcF93aXRob3V0X3dhcm5pbmcudHh0IgorCisgICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2Uoc2VsZi5fcHJvY2Vzc29yLnNob3VsZF9wcm9jZXNzKGZpbGVfcGF0aCkp
CisKKyAgICBkZWYgdGVzdF9zaG91bGRfcHJvY2Vzc19fc2tpcF93aXRoX3dhcm5pbmcoc2VsZik6
CisgICAgICAgICIiIlRlc3Qgc2hvdWxkX3Byb2Nlc3MoKSBmb3IgYSBza2lwLXdpdGgtd2Fybmlu
ZyBmaWxlLiIiIgorICAgICAgICBmaWxlX3BhdGggPSAiZm9vL3NraXBfd2l0aF93YXJuaW5nLnR4
dCIKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuX3Byb2Nlc3Nvci5zaG91bGRfcHJv
Y2VzcyhmaWxlX3BhdGgpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0TG9nKFsnV0FSTklORzogRmls
ZSBleGVtcHQgZnJvbSBzdHlsZSBndWlkZS4gJworICAgICAgICAgICAgICAgICAgICAgICAgJ1Nr
aXBwaW5nOiAiZm9vL3NraXBfd2l0aF93YXJuaW5nLnR4dCJcbiddKQorCisgICAgZGVmIHRlc3Rf
c2hvdWxkX3Byb2Nlc3NfX3RydWVfcmVzdWx0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHNob3Vs
ZF9wcm9jZXNzKCkgZm9yIGEgZmlsZSB0aGF0IHNob3VsZCBiZSBwcm9jZXNzZWQuIiIiCisgICAg
ICAgIGZpbGVfcGF0aCA9ICJmb28vc2tpcF9wcm9jZXNzLnR4dCIKKworICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VsZi5fcHJvY2Vzc29yLnNob3VsZF9wcm9jZXNzKGZpbGVfcGF0aCkpCisKKyAg
ICBkZWYgdGVzdF9wcm9jZXNzX19jaGVja2VyX2Rpc3BhdGNoZWQoc2VsZik6CisgICAgICAgICIi
IlRlc3QgdGhlIHByb2Nlc3MoKSBtZXRob2QgZm9yIGEgcGF0aCB3aXRoIGEgZGlzcGF0Y2hlZCBj
aGVja2VyLiIiIgorICAgICAgICBmaWxlX3BhdGggPSAnZm9vLnR4dCcKKyAgICAgICAgbGluZXMg
PSBbJ2xpbmUxJywgJ2xpbmUyJ10KKyAgICAgICAgbGluZV9udW1iZXJzID0gWzEwMF0KKworICAg
ICAgICBleHBlY3RlZF9lcnJvcl9oYW5kbGVyID0gRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyKAor
ICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9jb25maWd1cmF0aW9uLAorICAgICAgICAg
ICAgZmlsZV9wYXRoPWZpbGVfcGF0aCwKKyAgICAgICAgICAgIGluY3JlbWVudF9lcnJvcl9jb3Vu
dD1zZWxmLl9kb19ub3RoaW5nLAorICAgICAgICAgICAgbGluZV9udW1iZXJzPWxpbmVfbnVtYmVy
cykKKworICAgICAgICBzZWxmLl9wcm9jZXNzb3IucHJvY2VzcyhsaW5lcz1saW5lcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9wYXRoPWZpbGVfcGF0aCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9udW1iZXJzPWxpbmVfbnVtYmVycykKKworICAg
ICAgICAjIENoZWNrIHRoYXQgdGhlIGNhcnJpYWdlLXJldHVybiBjaGVja2VyIHdhcyBpbnN0YW50
aWF0ZWQgY29ycmVjdGx5CisgICAgICAgICMgYW5kIHdhcyBwYXNzZWQgbGluZXMgY29ycmVjdGx5
LgorICAgICAgICBjYXJyaWFnZV9jaGVja2VyID0gc2VsZi5jYXJyaWFnZV9jaGVja2VyCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNhcnJpYWdlX2NoZWNrZXIuc3R5bGVfZXJyb3JfaGFuZGxl
ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfZXJyb3JfaGFuZGxlcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2FycmlhZ2VfY2hlY2tlci5saW5lcywgWydsaW5lMScs
ICdsaW5lMiddKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgc3R5bGUgY2hlY2tlciB3YXMg
ZGlzcGF0Y2hlZCBjb3JyZWN0bHkgYW5kIHdhcworICAgICAgICAjIHBhc3NlZCBsaW5lcyBjb3Jy
ZWN0bHkuCisgICAgICAgIGNoZWNrZXIgPSBzZWxmLl9tb2NrX2Rpc3BhdGNoZXIuZGlzcGF0Y2hl
ZF9jaGVja2VyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuZmlsZV9wYXRoLCAn
Zm9vLnR4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIubWluX2NvbmZpZGVu
Y2UsIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuc3R5bGVfZXJyb3JfaGFu
ZGxlciwgZXhwZWN0ZWRfZXJyb3JfaGFuZGxlcikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhjaGVja2VyLmxpbmVzLCBbJ2xpbmUxJywgJ2xpbmUyJ10pCisKKyAgICBkZWYgdGVzdF9wcm9j
ZXNzX19ub19jaGVja2VyX2Rpc3BhdGNoZWQoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhlIHBy
b2Nlc3MoKSBtZXRob2QgZm9yIGEgcGF0aCB3aXRoIG5vIGRpc3BhdGNoZWQgY2hlY2tlci4iIiIK
KyAgICAgICAgc2VsZi5fcHJvY2Vzc29yLnByb2Nlc3MobGluZXM9WydsaW5lMScsICdsaW5lMidd
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3BhdGg9J2Zvby9kb19ub3Rf
cHJvY2Vzcy50eHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJl
cnM9WzEwMF0pCisKKyAgICAgICAgIyBBcyBhIHNhbml0eSBjaGVjaywgY2hlY2sgdGhhdCB0aGUg
Y2FycmlhZ2UtcmV0dXJuIGNoZWNrZXIgd2FzCisgICAgICAgICMgaW5zdGFudGlhdGVkLiAgKFRo
aXMgY29kZSBwYXRoIHdhcyBhbHJlYWR5IGNoZWNrZWQgaW4gb3RoZXIgdGVzdAorICAgICAgICAj
IG1ldGhvZHMgaW4gdGhpcyB0ZXN0IGNhc2UuKQorICAgICAgICBjYXJyaWFnZV9jaGVja2VyID0g
c2VsZi5jYXJyaWFnZV9jaGVja2VyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNhcnJpYWdl
X2NoZWNrZXIubGluZXMsIFsnbGluZTEnLCAnbGluZTInXSkKKworICAgICAgICAjIENoZWNrIHRo
YXQgdGhlIHN0eWxlIGNoZWNrZXIgd2FzIG5vdCBkaXNwYXRjaGVkLgorICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VsZi5fbW9ja19kaXNwYXRjaGVyLmRpc3BhdGNoZWRfY2hlY2tlciBpcyBOb25l
KQorCisKKyMgRklYTUU6IERlbGV0ZSB0aGlzIGNsYXNzIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBi
ZWluZyB1c2VkLgogY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAK
ICAgICAiIiJUZXN0IHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MuIiIiCkBAIC01MjAsNyArNzUwLDcg
QEAgY2xhc3MgU3R5bGVDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBh
c3MKIAogICAgIGRlZiBfc3R5bGVfY2hlY2tlcihzZWxmLCBjb25maWd1cmF0aW9uKToKLSAgICAg
ICAgcmV0dXJuIFN0eWxlQ2hlY2tlcihjb25maWd1cmF0aW9uKQorICAgICAgICByZXR1cm4gRGVw
cmVjYXRlZFN0eWxlQ2hlY2tlcihjb25maWd1cmF0aW9uKQogCiAgICAgZGVmIHRlc3RfaW5pdChz
ZWxmKToKICAgICAgICAgIiIiVGVzdCBfX2luaXRfXyBjb25zdHJ1Y3Rvci4iIiIKQEAgLTUzOCw2
ICs3NjgsNyBAQCBjbGFzcyBTdHlsZUNoZWNrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3R5bGVfY2hlY2tlci5maWxlX2NvdW50LCAwKQogCiAK
KyMgRklYTUU6IERlbGV0ZSB0aGlzIGNsYXNzIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBiZWluZyB1
c2VkLgogY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlQmFzZShMb2dnaW5nVGVzdENhc2UpOgog
CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNTU2LDYgKzc4Nyw3IEBAIGNsYXNzIFN0eWxlQ2hl
Y2tlckNoZWNrRmlsZUJhc2UoTG9nZ2luZ1Rlc3RDYXNlKToKICAgICAgICAgICAgIHN0ZGVycl93
cml0ZT1zZWxmLm1vY2tfc3RkZXJyX3dyaXRlKQogCiAKKyMgRklYTUU6IERlbGV0ZSB0aGlzIGNs
YXNzIHNpbmNlIGl0IGlzIG5vIGxvbmdlciBiZWluZyB1c2VkLgogY2xhc3MgU3R5bGVDaGVja2Vy
Q2hlY2tGaWxlVGVzdChTdHlsZUNoZWNrZXJDaGVja0ZpbGVCYXNlKToKIAogICAgICIiIlRlc3Qg
dGhlIGNoZWNrX2ZpbGUoKSBtZXRob2Qgb2YgdGhlIFN0eWxlQ2hlY2tlciBjbGFzcy4KQEAgLTYy
NCw3ICs4NTYsNyBAQCBjbGFzcyBTdHlsZUNoZWNrZXJDaGVja0ZpbGVUZXN0KFN0eWxlQ2hlY2tl
ckNoZWNrRmlsZUJhc2UpOgogCiAgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLl9zdHlsZV9j
aGVja2VyX2NvbmZpZ3VyYXRpb24oKQogCi0gICAgICAgIHN0eWxlX2NoZWNrZXIgPSBTdHlsZUNo
ZWNrZXIoY29uZmlndXJhdGlvbikKKyAgICAgICAgc3R5bGVfY2hlY2tlciA9IERlcHJlY2F0ZWRT
dHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbikKIAogICAgICAgICBzdHlsZV9jaGVja2VyLmNoZWNr
X2ZpbGUoZmlsZV9wYXRoPWZpbGVfcGF0aCwKICAgICAgICAgICAgIG1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yPXNlbGYubW9ja19oYW5kbGVfc3R5bGVfZXJyb3IsCkBAIC03MTIsNiArOTQ0LDcgQEAg
Y2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tGaWxlVGVzdChTdHlsZUNoZWNrZXJDaGVja0ZpbGVCYXNl
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIikKIAogCisjIEZJWE1FOiBEZWxl
dGUgdGhpcyBjbGFzcyBzaW5jZSBpdCBpcyBubyBsb25nZXIgYmVpbmcgdXNlZC4KIGNsYXNzIFN0
eWxlQ2hlY2tlckNoZWNrUGF0aHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRl
c3QgdGhlIGNoZWNrX3BhdGhzKCkgbWV0aG9kIG9mIHRoZSBTdHlsZUNoZWNrZXIgY2xhc3MuIiIi
CkBAIC03NDQsNyArOTc3LDcgQEAgY2xhc3MgU3R5bGVDaGVja2VyQ2hlY2tQYXRoc1Rlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfY2hlY2tfcGF0aHMoc2VsZik6CiAgICAg
ICAgICIiIlRlc3QgU3R5bGVDaGVja2VyLmNoZWNrX3BhdGhzKCkuIiIiCi0gICAgICAgIGNoZWNr
ZXIgPSBTdHlsZUNoZWNrZXIoY29uZmlndXJhdGlvbj1Ob25lKQorICAgICAgICBjaGVja2VyID0g
RGVwcmVjYXRlZFN0eWxlQ2hlY2tlcihjb25maWd1cmF0aW9uPU5vbmUpCiAgICAgICAgIG1vY2tf
Y2hlY2tfZmlsZSA9IHNlbGYuX21vY2tfY2hlY2tfZmlsZQogICAgICAgICBtb2NrX29zID0gc2Vs
Zi5Nb2NrT3MoKQogCkBAIC03NjQsMjUgKzk5NywyNiBAQCBjbGFzcyBQYXRjaENoZWNrZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIiIlRlc3QgdGhlIFBhdGNoQ2hlY2tlciBjbGFz
cy4iIiIKIAotICAgIGNsYXNzIE1vY2tTdHlsZUNoZWNrZXIob2JqZWN0KToKKyAgICBjbGFzcyBN
b2NrVGV4dEZpbGVSZWFkZXIob2JqZWN0KToKIAogICAgICAgICBkZWYgX19pbml0X18oc2VsZik6
Ci0gICAgICAgICAgICBzZWxmLmNoZWNrZWRfZmlsZXMgPSBbXQorICAgICAgICAgICAgc2VsZi5w
YXNzZWRfdG9fcHJvY2Vzc19maWxlID0gW10KICAgICAgICAgICAgICIiIkEgbGlzdCBvZiAoZmls
ZV9wYXRoLCBsaW5lX251bWJlcnMpIHBhaXJzLiIiIgogCi0gICAgICAgIGRlZiBjaGVja19maWxl
KHNlbGYsIGZpbGVfcGF0aCwgbGluZV9udW1iZXJzKToKLSAgICAgICAgICAgIHNlbGYuY2hlY2tl
ZF9maWxlcy5hcHBlbmQoKGZpbGVfcGF0aCwgbGluZV9udW1iZXJzKSkKKyAgICAgICAgZGVmIHBy
b2Nlc3NfZmlsZShzZWxmLCBmaWxlX3BhdGgsIGxpbmVfbnVtYmVycyk6CisgICAgICAgICAgICBz
ZWxmLnBhc3NlZF90b19wcm9jZXNzX2ZpbGUuYXBwZW5kKChmaWxlX3BhdGgsIGxpbmVfbnVtYmVy
cykpCiAKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHN0eWxlX2NoZWNrZXIgPSBzZWxm
Lk1vY2tTdHlsZUNoZWNrZXIoKQotICAgICAgICBzZWxmLl9zdHlsZV9jaGVja2VyID0gc3R5bGVf
Y2hlY2tlcgotICAgICAgICBzZWxmLl9wYXRjaF9jaGVja2VyID0gUGF0Y2hDaGVja2VyKHN0eWxl
X2NoZWNrZXIpCisgICAgICAgIGZpbGVfcmVhZGVyID0gc2VsZi5Nb2NrVGV4dEZpbGVSZWFkZXIo
KQorICAgICAgICBzZWxmLl9maWxlX3JlYWRlciA9IGZpbGVfcmVhZGVyCisgICAgICAgIHNlbGYu
X3BhdGNoX2NoZWNrZXIgPSBQYXRjaENoZWNrZXIoZmlsZV9yZWFkZXIpCiAKICAgICBkZWYgX2Nh
bGxfY2hlY2tfcGF0Y2goc2VsZiwgcGF0Y2hfc3RyaW5nKToKICAgICAgICAgc2VsZi5fcGF0Y2hf
Y2hlY2tlci5jaGVjayhwYXRjaF9zdHJpbmcpCiAKLSAgICBkZWYgX2Fzc2VydF9jaGVja2VkKHNl
bGYsIGNoZWNrZWRfZmlsZXMpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9zdHls
ZV9jaGVja2VyLmNoZWNrZWRfZmlsZXMsIGNoZWNrZWRfZmlsZXMpCisgICAgZGVmIF9hc3NlcnRf
Y2hlY2tlZChzZWxmLCBwYXNzZWRfdG9fcHJvY2Vzc19maWxlKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5fZmlsZV9yZWFkZXIucGFzc2VkX3RvX3Byb2Nlc3NfZmlsZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFzc2VkX3RvX3Byb2Nlc3NfZmlsZSkKIAogICAgIGRlZiB0
ZXN0X2NoZWNrX3BhdGNoKHNlbGYpOgogICAgICAgICAjIFRoZSBtb2RpZmllZCBsaW5lX251bWJl
cnMgYXJyYXkgZm9yIHRoaXMgcGF0Y2ggaXM6IFsyXS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZmlsZXJlYWRlci5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvZmlsZXJlYWRlci5weQppbmRleCAwODFlNmRjLi40ODQ1NWIzIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXIu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9maWxlcmVhZGVyLnB5
CkBAIC0xMDMsNiArMTAzLDEwIEBAIGNsYXNzIFRleHRGaWxlUmVhZGVyKG9iamVjdCk6CiAgICAg
ICAgICIiIgogICAgICAgICBzZWxmLmZpbGVfY291bnQgKz0gMQogCisgICAgICAgIGlmIG5vdCBv
cy5wYXRoLmV4aXN0cyhmaWxlX3BhdGgpIGFuZCBmaWxlX3BhdGggIT0gIi0iOgorICAgICAgICAg
ICAgX2xvZy5lcnJvcigiRmlsZSBkb2VzIG5vdCBleGlzdDogJyVzJyIgJSBmaWxlX3BhdGgpCisg
ICAgICAgICAgICBzeXMuZXhpdCgxKQorCiAgICAgICAgIGlmIG5vdCBzZWxmLl9wcm9jZXNzb3Iu
c2hvdWxkX3Byb2Nlc3MoZmlsZV9wYXRoKToKICAgICAgICAgICAgIF9sb2cuZGVidWcoIlNraXBw
aW5nIGZpbGU6ICclcyciICUgZmlsZV9wYXRoKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0xMTEs
MTAgKzExNSw2IEBAIGNsYXNzIFRleHRGaWxlUmVhZGVyKG9iamVjdCk6CiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIGxpbmVzID0gc2VsZi5fcmVhZF9saW5lcyhmaWxlX3BhdGgpCiAgICAgICAg
IGV4Y2VwdCBJT0Vycm9yLCBlcnI6Ci0gICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMo
ZmlsZV9wYXRoKToKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKCJGaWxlIGRvZXMgbm90IGV4
aXN0OiAnJXMnIiAlIGZpbGVfcGF0aCkKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotCiAg
ICAgICAgICAgICBtZXNzYWdlID0gKCJDb3VsZCBub3QgcmVhZCBmaWxlLiBTa2lwcGluZzogJyVz
J1xuICAlcyIKICAgICAgICAgICAgICAgICAgICAgICAgJSAoZmlsZV9wYXRoLCBlcnIpKQogICAg
ICAgICAgICAgX2xvZy53YXJuKG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXJfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2ZpbGVyZWFkZXJfdW5pdHRlc3QucHkKaW5kZXggNTdiNDEy
Ni4uNTU4ZWM1YSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9maWxlcmVhZGVyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvZmlsZXJlYWRlcl91bml0dGVzdC5weQpAQCAtODcsMTAgKzg3LDYgQEAgY2xhc3Mg
VGV4dEZpbGVSZWFkZXJUZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHBhc3NlZF90b19wcm9jZXNzb3IsIHNlbGYuX3Bhc3NlZF90b19wcm9jZXNzb3IoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmlsZV9jb3VudCwgc2VsZi5fZmlsZV9yZWFkZXIu
ZmlsZV9jb3VudCkKIAotICAgIGRlZiB0ZXN0X3Byb2Nlc3NfZmlsZV9fc2hvdWxkX25vdF9wcm9j
ZXNzKHNlbGYpOgotICAgICAgICBzZWxmLl9maWxlX3JlYWRlci5wcm9jZXNzX2ZpbGUoJ3Nob3Vs
ZF9ub3RfcHJvY2Vzcy50eHQnKQotICAgICAgICBzZWxmLl9hc3NlcnRfZmlsZV9yZWFkZXIoW10s
IDEpCi0KICAgICBkZWYgdGVzdF9wcm9jZXNzX2ZpbGVfX2RvZXNfbm90X2V4aXN0KHNlbGYpOgog
ICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9maWxlX3JlYWRlci5wcm9jZXNzX2ZpbGUo
J2RvZXNfbm90X2V4aXN0LnR4dCcpCkBAIC0xMjIsNiArMTE4LDEyIEBAIGNsYXNzIFRleHRGaWxl
UmVhZGVyVGVzdChMb2dnaW5nVGVzdENhc2UpOgogCiAgICAgICAgIHNlbGYuX2Fzc2VydF9maWxl
X3JlYWRlcihbXSwgMSkKIAorICAgIGRlZiB0ZXN0X3Byb2Nlc3NfZmlsZV9fc2hvdWxkX25vdF9w
cm9jZXNzKHNlbGYpOgorICAgICAgICBmaWxlX3BhdGggPSBzZWxmLl9jcmVhdGVfZmlsZSgnc2hv
dWxkX25vdF9wcm9jZXNzLnR4dCcsICdjb250ZW50cycpCisKKyAgICAgICAgc2VsZi5fZmlsZV9y
ZWFkZXIucHJvY2Vzc19maWxlKGZpbGVfcGF0aCkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2ZpbGVf
cmVhZGVyKFtdLCAxKQorCiAgICAgZGVmIHRlc3RfcHJvY2Vzc19maWxlX19tdWx0aXBsZV9saW5l
cyhzZWxmKToKICAgICAgICAgZmlsZV9wYXRoID0gc2VsZi5fY3JlYXRlX2ZpbGUoJ2Zvby50eHQn
LCAnbGluZSBvbmVcclxubGluZSB0d29cbicpCiAKQEAgLTEyOSw2ICsxMzEsMTMgQEAgY2xhc3Mg
VGV4dEZpbGVSZWFkZXJUZXN0KExvZ2dpbmdUZXN0Q2FzZSk6CiAgICAgICAgIHByb2Nlc3NlZCA9
IFsoWydsaW5lIG9uZVxyJywgJ2xpbmUgdHdvJywgJyddLCBmaWxlX3BhdGgsIE5vbmUpXQogICAg
ICAgICBzZWxmLl9hc3NlcnRfZmlsZV9yZWFkZXIocHJvY2Vzc2VkLCAxKQogCisgICAgZGVmIHRl
c3RfcHJvY2Vzc19maWxlX19maWxlX3N0ZGluKHNlbGYpOgorICAgICAgICBmaWxlX3BhdGggPSBz
ZWxmLl9jcmVhdGVfZmlsZSgnLScsICdmaWxlIGNvbnRlbnRzJykKKworICAgICAgICBzZWxmLl9m
aWxlX3JlYWRlci5wcm9jZXNzX2ZpbGUoZmlsZV9wYXRoPWZpbGVfcGF0aCwgdGVzdF9rd2FyZz0n
Zm9vJykKKyAgICAgICAgcHJvY2Vzc2VkID0gWyhbJ2ZpbGUgY29udGVudHMnXSwgZmlsZV9wYXRo
LCAnZm9vJyldCisgICAgICAgIHNlbGYuX2Fzc2VydF9maWxlX3JlYWRlcihwcm9jZXNzZWQsIDEp
CisKICAgICBkZWYgdGVzdF9wcm9jZXNzX2ZpbGVfX3dpdGhfa3dhcmcoc2VsZik6CiAgICAgICAg
IGZpbGVfcGF0aCA9IHNlbGYuX2NyZWF0ZV9maWxlKCdmb28udHh0JywgJ2ZpbGUgY29udGVudHMn
KQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>