<?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>34260</bug_id>
          
          <creation_ts>2010-01-28 06:19:45 -0800</creation_ts>
          <short_desc>check-webkit-style: is not reporting the carriage-return error for patches</short_desc>
          <delta_ts>2010-02-08 15:46:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>34379</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Jerdonek">cjerdonek</reporter>
          <assigned_to name="Chris Jerdonek">cjerdonek</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185456</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-01-28 06:19:45 -0800</bug_when>
    <thetext>It looks like there is a bug in StyleChecker.check_patch() which is causing the carriage-return error never to be reported for patches.

The reason is that StyleChecker._process_file() associates the carriage-return error with line zero, but line zero will never be a modified line of a patch file (line numbers of patches start with 1).  I discovered this a week or two ago and made a note of it in the code as a FIXME.

Since it looks like we&apos;ve never turned this on, it&apos;s unknown to me what will happen if we correct this error and turn it on (i.e. it&apos;s unknown to me how prevalent it is).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186547</commentid>
    <comment_count>1</comment_count>
      <attachid>47867</attachid>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-01 13:30:11 -0800</bug_when>
    <thetext>Created attachment 47867
Proposed patch

I addressed the FIXME by adding the ability to limit the number of error reports per category, per file.  (The essence of the existing carriage return logic is that a carriage return error should be reported at most once per file.)

It might be nice to enable this for the tab check, too.  See this, for example--

https://bugs.webkit.org/show_bug.cgi?id=33475#c2

Note also that the submitted fix preserves the prevailing behavior that errors for patch files should only be reported if they occur in a modified line.  This wasn&apos;t being done with the existing &quot;line 0&quot; code (even if the existing code were working).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186554</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-01 13:39:14 -0800</bug_when>
    <thetext>I also have a question.  I&apos;m wondering if, in our case, it makes sense to do the following check prior to checking for carriage returns:

+        # FIXME: Shouldn&apos;t we always do this check?
+        should_check_no_carriage_return = (os.linesep != &apos;\r\n&apos;)
+
+        for line_number in range(len(lines)):
+            if should_check_no_carriage_return:
+                check_no_carriage_return(lines[line_number], line_number,
+                                         handle_style_error)

The reason is that it seems like whether the files in source control should have carriage returns has nothing to do with the operating system of the machine that is running check-webkit-style (i.e. check-webkit-style should behave the same on Windows machines as it does on Macs, etc).

By the way, I already addressed this FIXME in checker_unittest.py and forgot to delete it:

+# FIXME: Check that the keys are in _style_categories().
+#
+# The maximum number of errors to report per file, per category.
+# If a category is not a key, then it has no maximum.
+MAX_REPORTS_PER_CATEGORY = {
+    &quot;whitespace/carriage_return&quot;: 1
+}

I will correct that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186796</commentid>
    <comment_count>3</comment_count>
      <attachid>47867</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-01 21:32:41 -0800</bug_when>
    <thetext>Comment on attachment 47867
Proposed patch

&gt;      def __init__(self, output_format=&quot;emacs&quot;, verbosity=1, filter=None,
&gt; -                 git_commit=None, extra_flag_values=None):
&gt; -        if filter is None:
&gt; -            filter = CategoryFilter()
&gt; +                 max_reports_per_category=None,
&gt; +                 git_commit=None,
&gt; +                 extra_flag_values=None):

Though this code is OK as is, I&apos;d break line for each arguments to improve the consistency a bit:

      def __init__(self,
                   output_format=&quot;emacs&quot;,
                   verbosity=1,
                   filter=None,
                   max_reports_per_category=None,
                   git_commit=None,
                   extra_flag_values=None):

&gt; +        # FIXME: Shouldn&apos;t we always do this check?

Agreed. I guess we need to use svn property &quot;eol-style&quot; or a whitelist instead of this check.

&gt; +    def test_max_reports_per_category(self):
&gt; +        &quot;&quot;&quot;Check that MAX_REPORTS_PER_CATEGORY is valid.&quot;&quot;&quot;
&gt; +        categories = style.style_categories()
&gt; +        for category in style.MAX_REPORTS_PER_CATEGORY.keys():

I slightly prefer iterkeys, but it&apos;s OK as is.

&gt; +    def test_ends_with_carriage_newline(self):
&gt; +        # Check_no_carriage_return only checks the final character.
&gt; +        self.assert_carriage_return(&quot;no carriage return\r\n&quot;, is_error=False)

This test case looks weird as we want to warn for this case. I think we&apos;ll never pass strings which contain &quot;\n&quot; as a parameter of check_no_carriage_return. How about using &quot;carriage return\r in a string&quot; or something like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186804</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-01 21:49:29 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 47867 [details])
&gt; &gt;      def __init__(self, output_format=&quot;emacs&quot;, verbosity=1, filter=None,
&gt; &gt; -                 git_commit=None, extra_flag_values=None):
&gt; &gt; -        if filter is None:
&gt; &gt; -            filter = CategoryFilter()
&gt; &gt; +                 max_reports_per_category=None,
&gt; &gt; +                 git_commit=None,
&gt; &gt; +                 extra_flag_values=None):
&gt; 
&gt; Though this code is OK as is, I&apos;d break line for each arguments to improve the
&gt; consistency a bit:
&gt; 
&gt;       def __init__(self,
&gt;                    output_format=&quot;emacs&quot;,
&gt;                    verbosity=1,
&gt;                    filter=None,
&gt;                    max_reports_per_category=None,
&gt;                    git_commit=None,
&gt;                    extra_flag_values=None):

Thanks.  I prefer this style, too.  Maybe this should be part of the new style guide? :)

&gt; 
&gt; &gt; +        # FIXME: Shouldn&apos;t we always do this check?
&gt; 
&gt; Agreed. I guess we need to use svn property &quot;eol-style&quot; or a whitelist instead
&gt; of this check.

Sounds good.  I&apos;ll go ahead and remove it and add a FIXME re: eol-style instead.

&gt; &gt; +    def test_max_reports_per_category(self):
&gt; &gt; +        &quot;&quot;&quot;Check that MAX_REPORTS_PER_CATEGORY is valid.&quot;&quot;&quot;
&gt; &gt; +        categories = style.style_categories()
&gt; &gt; +        for category in style.MAX_REPORTS_PER_CATEGORY.keys():
&gt; 
&gt; I slightly prefer iterkeys, but it&apos;s OK as is.

Good point.  Thanks.

&gt; &gt; +    def test_ends_with_carriage_newline(self):
&gt; &gt; +        # Check_no_carriage_return only checks the final character.
&gt; &gt; +        self.assert_carriage_return(&quot;no carriage return\r\n&quot;, is_error=False)
&gt; 
&gt; This test case looks weird as we want to warn for this case. I think we&apos;ll
&gt; never pass strings which contain &quot;\n&quot; as a parameter of
&gt; check_no_carriage_return. How about using &quot;carriage return\r in a string&quot; or
&gt; something like this?

Sounds good.  By the way, will we ever have a &quot;\r&quot; in the middle of a string?  Should that also be an error and not just occurrences at the end?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186815</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-01 22:42:54 -0800</bug_when>
    <thetext>Manually committed r54206 (via &quot;git svn dcommit&quot;):

http://trac.webkit.org/changeset/54206</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>186878</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-02-02 02:37:37 -0800</bug_when>
    <thetext>&gt; Sounds good.  By the way, will we ever have a &quot;\r&quot; in the middle of a string? 
&gt; Should that also be an error and not just occurrences at the end?

We have at least one file: http://trac.webkit.org/browser/trunk/LayoutTests/fast/js/script-tests/parse-backslash-before-newline.js</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>187643</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-02-03 23:21:31 -0800</bug_when>
    <thetext>FYI, looks like the fix worked. :)

https://bugs.webkit.org/show_bug.cgi?id=34464#c9</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47867</attachid>
            <date>2010-02-01 13:30:11 -0800</date>
            <delta_ts>2010-02-08 15:46:20 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>_patch-34260-1.txt</filename>
            <type>text/plain</type>
            <size>28604</size>
            <attacher name="Chris Jerdonek">cjerdonek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzOGNkNDU5Li5hYWE0ZWE4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTAtMDIt
MDEgIENocmlzIEplcmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcmVzc2VkIEZJWE1FIGluIGNo
ZWNrLXdlYmtpdC1zdHlsZSBzbyB0aGF0IHRoZSBjYXJyaWFnZS1yZXR1cm4KKyAgICAgICAgY2hl
Y2sgd2lsbCB3b3JrIGZvciBwYXRjaGVzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zNDI2MAorCisgICAgICAgIEFsc28gYWRkZWQgc3VwcG9ydCBm
b3IgbGltaXRpbmcgdGhlIG51bWJlciBvZiBlcnJvcnMgcmVwb3J0ZWQKKyAgICAgICAgcGVyIGNh
dGVnb3J5LCBwZXIgZmlsZS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlci5weToKKyAgICAgICAgICAtIEFkZGVkIG5ldyAid2hpdGVzcGFjZS9jYXJyaWFnZV9yZXR1
cm4iIGNhdGVnb3J5IGZyb20gY29tbW9uLnB5LgorICAgICAgICAgIC0gQWRkZWQgTUFYX1JFUE9S
VFNfUEVSX0NBVEVHT1JZIGRpY3Rpb25hcnkuCisgICAgICAgICAgLSBBZGRlZCBtYXhfcmVwb3J0
c19wZXJfY2F0ZWdvcnkgYXR0cmlidXRlIHRvIFByb2Nlc3Nvck9wdGlvbnMgY2xhc3MuCisgICAg
ICAgICAgLSBSZWZhY3RvcmVkIFN0eWxlQ2hlY2tlci5fcHJvY2Vzc19maWxlKCkuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAg
ICAgLSBVcGRhdGVkIFByb2Nlc3Nvck9wdGlvbnNUZXN0IHRlc3RzLgorICAgICAgICAgIC0gQWRk
ZWQgdGVzdCB0byBjaGVjayBNQVhfUkVQT1JUU19QRVJfQ0FURUdPUlkuCisKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5OgorICAgICAgICAgIC0gQWRk
ZWQgc3VwcG9ydCBmb3Igc3VwcHJlc3NpbmcgdGhlIGRpc3BsYXkgb2YgZXJyb3JzIGFmdGVyCisg
ICAgICAgICAgICByZWFjaGluZyBhIHBlci1jYXRlZ29yeSBtYXhpbXVtIChmcm9tIG1heF9yZXBv
cnRzX3Blcl9jYXRlZ29yeSkuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vy
cm9yX2hhbmRsZXJzX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIC0gQWRkZWQgdGVzdCBmb3Igc3Vw
cHJlc3NpbmcgZXJyb3IgZGlzcGxheS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5
bGUvcHJvY2Vzc29ycy9jb21tb24ucHk6IEFkZGVkLgorICAgICAgICAgIC0gTW92ZWQgY2Fycmlh
Z2UtcmV0dXJuIGNoZWNrIHRvIG5ldyBmaWxlLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9wcm9jZXNzb3JzL2NvbW1vbl91bml0dGVzdC5weTogQWRkZWQuCisgICAgICAgICAg
LSBBZGRlZCB1bml0IHRlc3RzIGZvciBjYXJyaWFnZS1yZXR1cm4gY2hlY2suCisKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0ZXN0cy5weToKKyAgICAgICAgICAtIEFkZGVk
IHJlZmVyZW5jZSB0byBjb21tb25fdW5pdHRlc3QucHkuCisKIDIwMTAtMDEtMzEgIENocmlzIEpl
cmRvbmVrICA8Y2plcmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2hp
bmljaGlybyBIYW1hamkuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXIucHkKaW5kZXggZmFmOTU0Zi4uMDM2ODg1NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzcsNiArMzcsOCBAQCBpbXBvcnQgc3lz
CiBmcm9tIC4uIHN0eWxlX3JlZmVyZW5jZXMgaW1wb3J0IHBhcnNlX3BhdGNoCiBmcm9tIGVycm9y
X2hhbmRsZXJzIGltcG9ydCBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIKIGZyb20gZXJyb3JfaGFu
ZGxlcnMgaW1wb3J0IFBhdGNoU3R5bGVFcnJvckhhbmRsZXIKK2Zyb20gcHJvY2Vzc29ycy5jb21t
b24gaW1wb3J0IGNoZWNrX25vX2NhcnJpYWdlX3JldHVybgorZnJvbSBwcm9jZXNzb3JzLmNvbW1v
biBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCiBmcm9tIHByb2Nlc3NvcnMu
Y3BwIGltcG9ydCBDcHBQcm9jZXNzb3IKIGZyb20gcHJvY2Vzc29ycy50ZXh0IGltcG9ydCBUZXh0
UHJvY2Vzc29yCiAKQEAgLTEwNiwxMCArMTA4LDE5IEBAIFNLSVBQRURfRklMRVNfV0lUSE9VVF9X
QVJOSU5HID0gWwogICAgIF0KIAogCisjIEZJWE1FOiBDaGVjayB0aGF0IHRoZSBrZXlzIGFyZSBp
biBfc3R5bGVfY2F0ZWdvcmllcygpLgorIworIyBUaGUgbWF4aW11bSBudW1iZXIgb2YgZXJyb3Jz
IHRvIHJlcG9ydCBwZXIgZmlsZSwgcGVyIGNhdGVnb3J5LgorIyBJZiBhIGNhdGVnb3J5IGlzIG5v
dCBhIGtleSwgdGhlbiBpdCBoYXMgbm8gbWF4aW11bS4KK01BWF9SRVBPUlRTX1BFUl9DQVRFR09S
WSA9IHsKKyAgICAid2hpdGVzcGFjZS9jYXJyaWFnZV9yZXR1cm4iOiAxCit9CisKKwogZGVmIHN0
eWxlX2NhdGVnb3JpZXMoKToKICAgICAiIiJSZXR1cm4gdGhlIHNldCBvZiBhbGwgY2F0ZWdvcmll
cyB1c2VkIGJ5IGNoZWNrLXdlYmtpdC1zdHlsZS4iIiIKLSAgICAjIElmIG90aGVyIHByb2Nlc3Nv
cnMgaGFkIGNhdGVnb3JpZXMsIHdlIHdvdWxkIHRha2UgdGhlaXIgdW5pb24gaGVyZS4KLSAgICBy
ZXR1cm4gQ3BwUHJvY2Vzc29yLmNhdGVnb3JpZXMKKyAgICAjIFRha2UgdGhlIHVuaW9uIGFjcm9z
cyBhbGwgcHJvY2Vzc29ycy4KKyAgICByZXR1cm4gQ29tbW9uQ2F0ZWdvcmllcy51bmlvbihDcHBQ
cm9jZXNzb3IuY2F0ZWdvcmllcykKIAogCiBkZWYgd2Via2l0X2FyZ3VtZW50X2RlZmF1bHRzKCk6
CkBAIC0yOTEsMTEgKzMwMiwxNSBAQCBjbGFzcyBQcm9jZXNzb3JPcHRpb25zKG9iamVjdCk6CiAg
ICAgIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLCB2
ZXJib3NpdHk9MSwgZmlsdGVyPU5vbmUsCi0gICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9u
ZSwgZXh0cmFfZmxhZ192YWx1ZXM9Tm9uZSk6Ci0gICAgICAgIGlmIGZpbHRlciBpcyBOb25lOgot
ICAgICAgICAgICAgZmlsdGVyID0gQ2F0ZWdvcnlGaWx0ZXIoKQorICAgICAgICAgICAgICAgICBt
YXhfcmVwb3J0c19wZXJfY2F0ZWdvcnk9Tm9uZSwKKyAgICAgICAgICAgICAgICAgZ2l0X2NvbW1p
dD1Ob25lLAorICAgICAgICAgICAgICAgICBleHRyYV9mbGFnX3ZhbHVlcz1Ob25lKToKICAgICAg
ICAgaWYgZXh0cmFfZmxhZ192YWx1ZXMgaXMgTm9uZToKICAgICAgICAgICAgIGV4dHJhX2ZsYWdf
dmFsdWVzID0ge30KKyAgICAgICAgaWYgZmlsdGVyIGlzIE5vbmU6CisgICAgICAgICAgICBmaWx0
ZXIgPSBDYXRlZ29yeUZpbHRlcigpCisgICAgICAgIGlmIG1heF9yZXBvcnRzX3Blcl9jYXRlZ29y
eSBpcyBOb25lOgorICAgICAgICAgICAgbWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5ID0ge30KIAog
ICAgICAgICBpZiBvdXRwdXRfZm9ybWF0IG5vdCBpbiAoImVtYWNzIiwgInZzNyIpOgogICAgICAg
ICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCAib3V0cHV0X2Zvcm1hdCIgcGFyYW1ldGVy
OiAnCkBAIC0zMDcsMjQgKzMyMiwyNyBAQCBjbGFzcyBQcm9jZXNzb3JPcHRpb25zKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZSBtdXN0IGJlIGFuIGludGVnZXIg
YmV0d2VlbiAxLTUgaW5jbHVzaXZlLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdW
YWx1ZSBnaXZlbjogIiVzIi4nICUgdmVyYm9zaXR5KQogCi0gICAgICAgIHNlbGYub3V0cHV0X2Zv
cm1hdCA9IG91dHB1dF9mb3JtYXQKLSAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkK
KyAgICAgICAgc2VsZi5leHRyYV9mbGFnX3ZhbHVlcyA9IGV4dHJhX2ZsYWdfdmFsdWVzCiAgICAg
ICAgIHNlbGYuZmlsdGVyID0gZmlsdGVyCiAgICAgICAgIHNlbGYuZ2l0X2NvbW1pdCA9IGdpdF9j
b21taXQKLSAgICAgICAgc2VsZi5leHRyYV9mbGFnX3ZhbHVlcyA9IGV4dHJhX2ZsYWdfdmFsdWVz
CisgICAgICAgIHNlbGYubWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5ID0gbWF4X3JlcG9ydHNfcGVy
X2NhdGVnb3J5CisgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKKyAg
ICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKIAogICAgICMgVXNlZnVsIGZvciB1bml0
IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIlJldHVy
biB3aGV0aGVyIHRoaXMgUHJvY2Vzc29yT3B0aW9ucyBpbnN0YW5jZSBpcyBlcXVhbCB0byBhbm90
aGVyLiIiIgotICAgICAgICBpZiBzZWxmLm91dHB1dF9mb3JtYXQgIT0gb3RoZXIub3V0cHV0X2Zv
cm1hdDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLnZlcmJvc2l0
eSAhPSBvdGhlci52ZXJib3NpdHk6CisgICAgICAgIGlmIHNlbGYuZXh0cmFfZmxhZ192YWx1ZXMg
IT0gb3RoZXIuZXh0cmFfZmxhZ192YWx1ZXM6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAg
ICAgICAgaWYgc2VsZi5maWx0ZXIgIT0gb3RoZXIuZmlsdGVyOgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAgICAgICAgIGlmIHNlbGYuZ2l0X2NvbW1pdCAhPSBvdGhlci5naXRfY29tbWl0Ogog
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuZXh0cmFfZmxhZ192YWx1
ZXMgIT0gb3RoZXIuZXh0cmFfZmxhZ192YWx1ZXM6CisgICAgICAgIGlmIHNlbGYubWF4X3JlcG9y
dHNfcGVyX2NhdGVnb3J5ICE9IG90aGVyLm1heF9yZXBvcnRzX3Blcl9jYXRlZ29yeToKKyAgICAg
ICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLm91dHB1dF9mb3JtYXQgIT0gb3Ro
ZXIub3V0cHV0X2Zvcm1hdDoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBz
ZWxmLnZlcmJvc2l0eSAhPSBvdGhlci52ZXJib3NpdHk6CiAgICAgICAgICAgICByZXR1cm4gRmFs
c2UKIAogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtNTY4LDggKzU4NiwxMiBAQCBjbGFzcyBBcmd1
bWVudFBhcnNlcihvYmplY3QpOgogCiAgICAgICAgIGZpbHRlciA9IENhdGVnb3J5RmlsdGVyKGZp
bHRlcl9ydWxlcykKIAotICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyhvdXRwdXRf
Zm9ybWF0LCB2ZXJib3NpdHksIGZpbHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2l0X2NvbW1pdCwgZXh0cmFfZmxhZ192YWx1ZXMpCisgICAgICAgIG9wdGlvbnMgPSBQ
cm9jZXNzb3JPcHRpb25zKGV4dHJhX2ZsYWdfdmFsdWVzPWV4dHJhX2ZsYWdfdmFsdWVzLAorICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcj1maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
Z2l0X2NvbW1pdD1naXRfY29tbWl0LAorICAgICAgICAgICAgICAgICAgICAgIG1heF9yZXBvcnRz
X3Blcl9jYXRlZ29yeT1NQVhfUkVQT1JUU19QRVJfQ0FURUdPUlksCisgICAgICAgICAgICAgICAg
ICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAg
IHZlcmJvc2l0eT12ZXJib3NpdHkpCiAKICAgICAgICAgcmV0dXJuIChmaWxlbmFtZXMsIG9wdGlv
bnMpCiAKQEAgLTcyMCwzNSArNzQyLDMyIEBAIGNsYXNzIFN0eWxlQ2hlY2tlcihvYmplY3QpOgog
ICAgICAgICAgICAgIyAnXHJcbicgYXMgaW4gV2luZG93cyksIGEgd2FybmluZyBpcyBpc3N1ZWQg
YmVsb3cgaWYgdGhpcyBmaWxlCiAgICAgICAgICAgICAjIGlzIHByb2Nlc3NlZC4KICAgICAgICAg
ICAgIGlmIGZpbGVfcGF0aCA9PSAnLSc6Ci0gICAgICAgICAgICAgICAgbGluZXMgPSBjb2RlY3Mu
U3RyZWFtUmVhZGVyV3JpdGVyKHN5cy5zdGRpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZWNzLmdldHJlYWRlcigndXRmOCcpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlY3MuZ2V0d3Jp
dGVyKCd1dGY4JyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdyZXBsYWNlJykucmVhZCgpLnNwbGl0KCdcbicpCisgICAgICAgICAgICAgICAgZmls
ZSA9IGNvZGVjcy5TdHJlYW1SZWFkZXJXcml0ZXIoc3lzLnN0ZGluLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy5nZXRyZWFkZXIoJ3V0Zjgn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2Rl
Y3MuZ2V0d3JpdGVyKCd1dGY4JyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3JlcGxhY2UnKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBsaW5lcyA9IGNvZGVjcy5vcGVuKGZpbGVfcGF0aCwgJ3InLCAndXRmOCcsICdyZXBsYWNl
JykucmVhZCgpLnNwbGl0KCdcbicpCisgICAgICAgICAgICAgICAgZmlsZSA9IGNvZGVjcy5vcGVu
KGZpbGVfcGF0aCwgJ3InLCAndXRmOCcsICdyZXBsYWNlJykKIAotICAgICAgICAgICAgY2Fycmlh
Z2VfcmV0dXJuX2ZvdW5kID0gRmFsc2UKLSAgICAgICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nICdc
cicuCi0gICAgICAgICAgICBmb3IgbGluZV9udW1iZXIgaW4gcmFuZ2UobGVuKGxpbmVzKSk6Ci0g
ICAgICAgICAgICAgICAgaWYgbGluZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCdccicpOgotICAg
ICAgICAgICAgICAgICAgICBsaW5lc1tsaW5lX251bWJlcl0gPSBsaW5lc1tsaW5lX251bWJlcl0u
cnN0cmlwKCdccicpCi0gICAgICAgICAgICAgICAgICAgIGNhcnJpYWdlX3JldHVybl9mb3VuZCA9
IFRydWUKKyAgICAgICAgICAgIGNvbnRlbnRzID0gZmlsZS5yZWFkKCkKIAogICAgICAgICBleGNl
cHQgSU9FcnJvcjoKICAgICAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSgiU2tpcHBpbmcgaW5w
dXQgJyVzJzogQ2FuJ3Qgb3BlbiBmb3IgcmVhZGluZ1xuIiAlIGZpbGVfcGF0aCkKICAgICAgICAg
ICAgIHJldHVybgogCi0gICAgICAgIHByb2Nlc3Nvci5wcm9jZXNzKGxpbmVzKQorICAgICAgICBs
aW5lcyA9IGNvbnRlbnRzLnNwbGl0KCJcbiIpCiAKLSAgICAgICAgaWYgY2FycmlhZ2VfcmV0dXJu
X2ZvdW5kIGFuZCBvcy5saW5lc2VwICE9ICdcclxuJzoKLSAgICAgICAgICAgICMgRklYTUU6IE1h
a2Ugc3VyZSB0aGlzIGVycm9yIGFsc28gc2hvd3MgdXAgd2hlbiBjaGVja2luZwotICAgICAgICAg
ICAgIyAgICAgICAgcGF0Y2hlcywgaWYgYXBwcm9wcmlhdGUuCi0gICAgICAgICAgICAjCi0gICAg
ICAgICAgICAjIFVzZSAwIGZvciBsaW5lX251bWJlciBzaW5jZSBvdXRwdXR0aW5nIG9ubHkgb25l
IGVycm9yIGZvcgotICAgICAgICAgICAgIyBwb3RlbnRpYWxseSBzZXZlcmFsIGxpbmVzLgotICAg
ICAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9yKGZpbGVfcGF0aCwgMCwgJ3doaXRlc3BhY2UvbmV3
bGluZScsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09uZSBvciBtb3JlIHVu
ZXhwZWN0ZWQgXFxyICheTSkgZm91bmQ7JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4nKQorICAgICAgICAjIEZJWE1FOiBTaG91bGRuJ3Qg
d2UgYWx3YXlzIGRvIHRoaXMgY2hlY2s/CisgICAgICAgIHNob3VsZF9jaGVja19ub19jYXJyaWFn
ZV9yZXR1cm4gPSAob3MubGluZXNlcCAhPSAnXHJcbicpCisKKyAgICAgICAgZm9yIGxpbmVfbnVt
YmVyIGluIHJhbmdlKGxlbihsaW5lcykpOgorICAgICAgICAgICAgaWYgc2hvdWxkX2NoZWNrX25v
X2NhcnJpYWdlX3JldHVybjoKKyAgICAgICAgICAgICAgICBjaGVja19ub19jYXJyaWFnZV9yZXR1
cm4obGluZXNbbGluZV9udW1iZXJdLCBsaW5lX251bWJlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICAgICAgaWYg
bGluZXNbbGluZV9udW1iZXJdLmVuZHN3aXRoKCJcciIpOgorICAgICAgICAgICAgICAgIGxpbmVz
W2xpbmVfbnVtYmVyXSA9IGxpbmVzW2xpbmVfbnVtYmVyXS5yc3RyaXAoIlxyIikKKworICAgICAg
ICBwcm9jZXNzb3IucHJvY2VzcyhsaW5lcykKIAogICAgIGRlZiBjaGVja19maWxlKHNlbGYsIGZp
bGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yPU5vbmUsIHByb2Nlc3NfZmlsZT1Ob25lKToKICAg
ICAgICAgIiIiQ2hlY2sgc3R5bGUgaW4gdGhlIGdpdmVuIGZpbGUuCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKaW5kZXgg
NGQ2YjJlNy4uOWU5Y2IyNiAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQpAQCAtMTEwLDYgKzExMCw3IEBAIGNsYXNz
IFByb2Nlc3Nvck9wdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVlcywge30pCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9wdGlvbnMuZmlsdGVyLCBDYXRlZ29yeUZpbHRlcigpKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLmdpdF9jb21taXQsIE5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKG9wdGlvbnMubWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5LCB7fSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5vdXRwdXRfZm9ybWF0LCAiZW1hY3MiKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb25zLnZlcmJvc2l0eSwgMSkKIApAQCAtMTI2LDEx
ICsxMjcsMTMgQEAgY2xhc3MgUHJvY2Vzc29yT3B0aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyhleHRyYV9mbGFnX3ZhbHVlcz17
ImV4dHJhX3ZhbHVlIiA6IDJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
aWx0ZXI9Q2F0ZWdvcnlGaWx0ZXIoWyIrIl0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnaXRfY29tbWl0PSJjb21taXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtYXhfcmVwb3J0c19wZXJfY2F0ZWdvcnk9eyJjYXRlZ29yeSI6IDN9LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJ2czciLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MykKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMob3B0aW9ucy5leHRyYV9mbGFnX3ZhbHVlcywgeyJleHRyYV92YWx1ZSIgOiAy
fSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5maWx0ZXIsIENhdGVnb3J5Rmls
dGVyKFsiKyJdKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5naXRfY29tbWl0
LCAiY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9ucy5tYXhfcmVwb3J0
c19wZXJfY2F0ZWdvcnksIHsiY2F0ZWdvcnkiOiAzfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMob3B0aW9ucy5vdXRwdXRfZm9ybWF0LCAidnM3IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMob3B0aW9ucy52ZXJib3NpdHksIDMpCiAKQEAgLTE0MywxMSArMTQ2LDE0IEBAIGNsYXNzIFBy
b2Nlc3Nvck9wdGlvbnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgb3B0aW9ucyA9
IFByb2Nlc3Nvck9wdGlvbnMoZXh0cmFfZmxhZ192YWx1ZXM9eyJleHRyYV92YWx1ZSIgOiAxfSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyPUNhdGVnb3J5RmlsdGVy
KFsiKyJdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD0i
Y29tbWl0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3JlcG9ydHNf
cGVyX2NhdGVnb3J5PXsiY2F0ZWdvcnkiOiAzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X2Zvcm1hdD0idnM3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmVyYm9zaXR5PTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucyA9
PSBQcm9jZXNzb3JPcHRpb25zKGV4dHJhX2ZsYWdfdmFsdWVzPXsiZXh0cmFfdmFsdWUiIDogMn0p
KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vzc29yT3B0aW9ucyhm
aWx0ZXI9Q2F0ZWdvcnlGaWx0ZXIoWyItIl0pKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShv
cHRpb25zID09IFByb2Nlc3Nvck9wdGlvbnMoZ2l0X2NvbW1pdD0iY29tbWl0MiIpKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbnMgPT0gUHJvY2Vzc29yT3B0aW9ucyhtYXhfcmVwb3J0
c19wZXJfY2F0ZWdvcnk9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHsiY2F0ZWdvcnkiOiAyfSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
b3B0aW9ucyA9PSBQcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQ9ImVtYWNzIikpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9ucyA9PSBQcm9jZXNzb3JPcHRpb25zKHZlcmJvc2l0
eT0yKSkKIApAQCAtMTczLDkgKzE3OSw5IEBAIGNsYXNzIFByb2Nlc3Nvck9wdGlvbnNUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb25zLmlzX3Jl
cG9ydGFibGUoInh5eiIsIDMpKQogCiAKLWNsYXNzIFdlYktpdEFyZ3VtZW50RGVmYXVsdHNUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIEdsb2JhbFZhcmlhYmxlc1Rlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogCi0gICAgIiIiVGVzdHMgdmFsaWRpdHkgb2YgZGVmYXVsdCBhcmd1bWVudHMg
dXNlZCBieSBjaGVjay13ZWJraXQtc3R5bGUuIiIiCisgICAgIiIiVGVzdHMgdmFsaWRpdHkgb2Yg
dGhlIGdsb2JhbCB2YXJpYWJsZXMuIiIiCiAKICAgICBkZWYgZGVmYXVsdHMoc2VsZik6CiAgICAg
ICAgIHJldHVybiBzdHlsZS53ZWJraXRfYXJndW1lbnRfZGVmYXVsdHMoKQpAQCAtMjA2LDYgKzIx
MiwxMyBAQCBjbGFzcyBXZWJLaXRBcmd1bWVudERlZmF1bHRzVGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgICAgICMgb24gdmFsaWQgYXJndW1lbnRzIGVsc2V3aGVyZS4KICAgICAgICAgcGFy
c2VyLnBhcnNlKFtdKSAjIGFyZ3VtZW50cyB2YWxpZDogbm8gZXJyb3Igb3IgU3lzdGVtRXhpdAog
CisgICAgZGVmIHRlc3RfbWF4X3JlcG9ydHNfcGVyX2NhdGVnb3J5KHNlbGYpOgorICAgICAgICAi
IiJDaGVjayB0aGF0IE1BWF9SRVBPUlRTX1BFUl9DQVRFR09SWSBpcyB2YWxpZC4iIiIKKyAgICAg
ICAgY2F0ZWdvcmllcyA9IHN0eWxlLnN0eWxlX2NhdGVnb3JpZXMoKQorICAgICAgICBmb3IgY2F0
ZWdvcnkgaW4gc3R5bGUuTUFYX1JFUE9SVFNfUEVSX0NBVEVHT1JZLmtleXMoKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShjYXRlZ29yeSBpbiBjYXRlZ29yaWVzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdLZXkgIiVzIiBpcyBub3QgYSBjYXRlZ29yeScgJSBjYXRlZ29yeSkK
KwogCiBjbGFzcyBBcmd1bWVudFByaW50ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAt
MjE3LDggKzIzMCwxMSBAQCBjbGFzcyBBcmd1bWVudFByaW50ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9ydWxlcz1bXSwgZ2l0X2NvbW1p
dD1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZmxhZ192YWx1ZXM9e30pOgog
ICAgICAgICBmaWx0ZXIgPSBDYXRlZ29yeUZpbHRlcihmaWx0ZXJfcnVsZXMpCi0gICAgICAgIHJl
dHVybiBzdHlsZS5Qcm9jZXNzb3JPcHRpb25zKG91dHB1dF9mb3JtYXQsIHZlcmJvc2l0eSwgZmls
dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0LCBl
eHRyYV9mbGFnX3ZhbHVlcykKKyAgICAgICAgcmV0dXJuIHN0eWxlLlByb2Nlc3Nvck9wdGlvbnMo
ZXh0cmFfZmxhZ192YWx1ZXM9ZXh0cmFfZmxhZ192YWx1ZXMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpbHRlcj1maWx0ZXIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Z2l0X2NvbW1pdCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9dmVyYm9zaXR5KQogCiAg
ICAgZGVmIHRlc3RfdG9fZmxhZ19zdHJpbmcoc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBzZWxm
Ll9jcmVhdGVfb3B0aW9ucygndnM3JywgNSwgWycrZm9vJywgJy1iYXInXSwgJ2dpdCcsCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJz
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVycy5w
eQppbmRleCA1NGIxZDc2Li4zMTE0MGRlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvZXJyb3JfaGFuZGxlcnMucHkKQEAgLTMyLDcgKzMyLDkgQEAgTWV0
aG9kczoKIAogICAgIEhhbmRsZSB0aGUgb2NjdXJyZW5jZSBvZiBhIHN0eWxlIGVycm9yLgogCi0g
ICAgQ2hlY2sgd2hldGhlciB0aGUgZXJyb3IgaXMgcmVwb3J0YWJsZS4gSWYgc28sIHJlcG9ydCB0
aGUgZGV0YWlscy4KKyAgICBDaGVjayB3aGV0aGVyIHRoZSBlcnJvciBpcyByZXBvcnRhYmxlLiBJ
ZiBzbywgaW5jcmVtZW50IHRoZSB0b3RhbAorICAgIGVycm9yIGNvdW50IGFuZCByZXBvcnQgdGhl
IGRldGFpbHMuIE5vdGUgdGhhdCBlcnJvciByZXBvcnRpbmcgY2FuCisgICAgYmUgc3VwcHJlc3Nl
ZCBhZnRlciByZWFjaGluZyBhIGNlcnRhaW4gbnVtYmVyIG9mIHJlcG9ydHMuCiAKICAgICBBcmdz
OgogICAgICAgbGluZV9udW1iZXI6IFRoZSBpbnRlZ2VyIGxpbmUgbnVtYmVyIG9mIHRoZSBsaW5l
IGNvbnRhaW5pbmcgdGhlIGVycm9yLgpAQCAtNzksNiArODEsMjggQEAgY2xhc3MgRGVmYXVsdFN0
eWxlRXJyb3JIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25z
CiAgICAgICAgIHNlbGYuX3N0ZGVycl93cml0ZSA9IHN0ZGVycl93cml0ZQogCisgICAgICAgICMg
QSBzdHJpbmcgdG8gaW50ZWdlciBkaWN0aW9uYXJ5IGNhY2hlIG9mIHRoZSBudW1iZXIgb2YgcmVw
b3J0YWJsZQorICAgICAgICAjIGVycm9ycyBwZXIgY2F0ZWdvcnkgcGFzc2VkIHRvIHRoaXMgaW5z
dGFuY2UuCisgICAgICAgIHNlbGYuX2NhdGVnb3J5X3RvdGFscyA9IHsgfQorCisgICAgZGVmIF9h
ZGRfcmVwb3J0YWJsZV9lcnJvcihzZWxmLCBjYXRlZ29yeSk6CisgICAgICAgICIiIkluY3JlbWVu
dCB0aGUgZXJyb3IgY291bnQgYW5kIHJldHVybiB0aGUgbmV3IGNhdGVnb3J5IHRvdGFsLiIiIgor
ICAgICAgICBzZWxmLl9pbmNyZW1lbnRfZXJyb3JfY291bnQoKSAjIEluY3JlbWVudCB0aGUgdG90
YWwuCisKKyAgICAgICAgIyBJbmNyZW1lbnQgdGhlIGNhdGVnb3J5IHRvdGFsLgorICAgICAgICBp
ZiBub3QgY2F0ZWdvcnkgaW4gc2VsZi5fY2F0ZWdvcnlfdG90YWxzOgorICAgICAgICAgICAgc2Vs
Zi5fY2F0ZWdvcnlfdG90YWxzW2NhdGVnb3J5XSA9IDEKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2NhdGVnb3J5X3RvdGFsc1tjYXRlZ29yeV0gKz0gMQorCisgICAgICAgIHJldHVy
biBzZWxmLl9jYXRlZ29yeV90b3RhbHNbY2F0ZWdvcnldCisKKyAgICBkZWYgX21heF9yZXBvcnRz
KHNlbGYsIGNhdGVnb3J5KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBtYXhpbXVtIG51bWJlciBv
ZiBlcnJvcnMgdG8gcmVwb3J0LiIiIgorICAgICAgICBpZiBub3QgY2F0ZWdvcnkgaW4gc2VsZi5f
b3B0aW9ucy5tYXhfcmVwb3J0c19wZXJfY2F0ZWdvcnk6CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5tYXhfcmVwb3J0c19wZXJfY2F0ZWdvcnlb
Y2F0ZWdvcnldCisKICAgICBkZWYgX19jYWxsX18oc2VsZiwgbGluZV9udW1iZXIsIGNhdGVnb3J5
LCBjb25maWRlbmNlLCBtZXNzYWdlKToKICAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1cnJlbmNl
IG9mIGEgc3R5bGUgZXJyb3IuCiAKQEAgLTg4LDEzICsxMTIsMjMgQEAgY2xhc3MgRGVmYXVsdFN0
eWxlRXJyb3JIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmlz
X3JlcG9ydGFibGUoY2F0ZWdvcnksIGNvbmZpZGVuY2UpOgogICAgICAgICAgICAgcmV0dXJuCiAK
LSAgICAgICAgc2VsZi5faW5jcmVtZW50X2Vycm9yX2NvdW50KCkKKyAgICAgICAgY2F0ZWdvcnlf
dG90YWwgPSBzZWxmLl9hZGRfcmVwb3J0YWJsZV9lcnJvcihjYXRlZ29yeSkKKworICAgICAgICBt
YXhfcmVwb3J0cyA9IHNlbGYuX21heF9yZXBvcnRzKGNhdGVnb3J5KQorCisgICAgICAgIGlmICht
YXhfcmVwb3J0cyBpcyBub3QgTm9uZSkgYW5kIChjYXRlZ29yeV90b3RhbCA+IG1heF9yZXBvcnRz
KToKKyAgICAgICAgICAgICMgVGhlbiBzdXBwcmVzcyBkaXNwbGF5aW5nIHRoZSBlcnJvci4KKyAg
ICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMub3V0cHV0X2Zvcm1h
dCA9PSAndnM3JzoKICAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSAiJXMoJXMpOiAgJXMgIFsl
c10gWyVkXVxuIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIl
czolczogICVzICBbJXNdIFslZF1cbiIKIAorICAgICAgICBpZiBjYXRlZ29yeV90b3RhbCA9PSBt
YXhfcmVwb3J0czoKKyAgICAgICAgICAgIGZvcm1hdF9zdHJpbmcgKz0gKCJTdXBwcmVzc2luZyBm
dXJ0aGVyIFslc10gcmVwb3J0cyBmb3IgdGhpcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZmlsZS5cbiIgJSBjYXRlZ29yeSkKKwogICAgICAgICBzZWxmLl9zdGRlcnJfd3JpdGUo
Zm9ybWF0X3N0cmluZyAlIChzZWxmLl9maWxlX3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLApAQCAtMTMwLDcgKzE2NCw3IEBAIGNsYXNz
IFBhdGNoU3R5bGVFcnJvckhhbmRsZXIob2JqZWN0KToKICAgICAgICAgaWYgbm90IHNlbGYuX2xp
bmVfbnVtYmVyczoKICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuX2RpZmYubGluZXM6CiAg
ICAgICAgICAgICAgICAgIyBXaGVuIGRlbGV0ZWQgbGluZSBpcyBub3Qgc2V0LCBpdCBtZWFucyB0
aGF0Ci0gICAgICAgICAgICAgICAgIyB0aGUgbGluZSBpcyBuZXdseSBhZGRlZC4KKyAgICAgICAg
ICAgICAgICAjIHRoZSBsaW5lIGlzIG5ld2x5IGFkZGVkIChvciBtb2RpZmllZCkuCiAgICAgICAg
ICAgICAgICAgaWYgbm90IGxpbmVbMF06CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2xpbmVf
bnVtYmVycy5hZGQobGluZVsxXSkKIApAQCAtMTQwLDkgKzE3NCw5IEBAIGNsYXNzIFBhdGNoU3R5
bGVFcnJvckhhbmRsZXIob2JqZWN0KToKICAgICAgICAgIiIiSGFuZGxlIHRoZSBvY2N1cnJlbmNl
IG9mIGEgc3R5bGUgZXJyb3IuCiAKICAgICAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXBv
cnQgZXJyb3JzIG9jY3VycmluZyBpbiBsaW5lcyBub3QKLSAgICAgICAgbW9kaWZpZWQgb3IgYWRk
ZWQuCisgICAgICAgIG1hcmtlZCBhcyBtb2RpZmllZCBvciBhZGRlZCBpbiB0aGUgcGF0Y2guCiAK
LSAgICAgICAgQXJnczogc2VlIHRoZSBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXIuX19jYWxsX18o
KSBkb2N1bWVudGF0aW9uLgorICAgICAgICBTZWUgdGhlIGRvY3N0cmluZyBvZiB0aGlzIG1vZHVs
ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogICAgICAgICAiIiIKICAgICAgICAgaWYgbGluZV9u
dW1iZXIgbm90IGluIHNlbGYuX2dldF9saW5lX251bWJlcnMoKToKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvZXJyb3JfaGFuZGxlcnNfdW5pdHRlc3QucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2Vycm9yX2hhbmRsZXJzX3VuaXR0
ZXN0LnB5CmluZGV4IDZhOTFmZjIuLjgzYmRiYjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvZXJyb3JfaGFuZGxlcnNfdW5pdHRlc3QucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9lcnJvcl9oYW5kbGVyc191bml0dGVzdC5w
eQpAQCAtNTAsOSArNTAsNiBAQCBjbGFzcyBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXJUZXN0KFN0
eWxlRXJyb3JIYW5kbGVyVGVzdEJhc2UpOgogCiAgICAgX2NhdGVnb3J5ID0gIndoaXRlc3BhY2Uv
dGFiIgogCi0gICAgZGVmIF9vcHRpb25zKHNlbGYsIG91dHB1dF9mb3JtYXQpOgotICAgICAgICBy
ZXR1cm4gUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9Mywgb3V0cHV0X2Zvcm1hdD1vdXRwdXRf
Zm9ybWF0KQotCiAgICAgZGVmIF9lcnJvcl9oYW5kbGVyKHNlbGYsIG9wdGlvbnMpOgogICAgICAg
ICBmaWxlX3BhdGggPSAiZm9vLmgiCiAgICAgICAgIHJldHVybiBEZWZhdWx0U3R5bGVFcnJvckhh
bmRsZXIoZmlsZV9wYXRoLApAQCAtNjAsMjkgKzU3LDI4IEBAIGNsYXNzIERlZmF1bHRTdHlsZUVy
cm9ySGFuZGxlclRlc3QoU3R5bGVFcnJvckhhbmRsZXJUZXN0QmFzZSk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19pbmNyZW1lbnRfZXJyb3JfY291
bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbW9ja19z
dGRlcnJfd3JpdGUpCiAKLSAgICBkZWYgX3ByZXBhcmVfY2FsbChzZWxmLCBvdXRwdXRfZm9ybWF0
PSJlbWFjcyIpOgotICAgICAgICAiIiJSZXR1cm4gb3B0aW9ucyBhZnRlciBpbml0aWFsaXppbmcu
IiIiCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9vcHRpb25zKG91dHB1dF9mb3JtYXQpCi0KLSAg
ICAgICAgIyBUZXN0IHRoYXQgY291bnQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4KKyAgICBkZWYg
X2NoZWNrX2luaXRpYWxpemVkKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGF0IGNvdW50IGFu
ZCBlcnJvciBtZXNzYWdlcyBhcmUgaW5pdGlhbGl6ZWQuIiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKDAsIHNlbGYuX2Vycm9yX2NvdW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygi
Iiwgc2VsZi5fZXJyb3JfbWVzc2FnZXMpCiAKLSAgICAgICAgcmV0dXJuIG9wdGlvbnMKLQotICAg
IGRlZiBfY2FsbF9lcnJvcl9oYW5kbGVyKHNlbGYsIG9wdGlvbnMsIGNvbmZpZGVuY2UpOgotICAg
ICAgICAiIiJIYW5kbGUgYW4gZXJyb3Igd2l0aCBnaXZlbiBjb25maWRlbmNlLiIiIgotICAgICAg
ICBoYW5kbGVfZXJyb3IgPSBzZWxmLl9lcnJvcl9oYW5kbGVyKG9wdGlvbnMpCi0KKyAgICBkZWYg
X2NhbGwoc2VsZiwgaGFuZGxlX2Vycm9yLCBvcHRpb25zLCBjb25maWRlbmNlKToKKyAgICAgICAg
IiIiSGFuZGxlIGFuIGVycm9yIHdpdGggdGhlIGdpdmVuIGVycm9yIGhhbmRsZXIuIiIiCiAgICAg
ICAgIGxpbmVfbnVtYmVyID0gMTAwCiAgICAgICAgIG1lc3NhZ2UgPSAibWVzc2FnZSIKIAogICAg
ICAgICBoYW5kbGVfZXJyb3IobGluZV9udW1iZXIsIHNlbGYuX2NhdGVnb3J5LCBjb25maWRlbmNl
LCBtZXNzYWdlKQogCisgICAgZGVmIF9jYWxsX2Vycm9yX2hhbmRsZXIoc2VsZiwgb3B0aW9ucywg
Y29uZmlkZW5jZSk6CisgICAgICAgICIiIkhhbmRsZSBhbiBlcnJvciB1c2luZyBhIG5ldyBlcnJv
ciBoYW5kbGVyLiIiIgorICAgICAgICBoYW5kbGVfZXJyb3IgPSBzZWxmLl9lcnJvcl9oYW5kbGVy
KG9wdGlvbnMpCisgICAgICAgIHNlbGYuX2NhbGwoaGFuZGxlX2Vycm9yLCBvcHRpb25zLCBjb25m
aWRlbmNlKQorCiAgICAgZGVmIHRlc3RfY2FsbF9ub25fcmVwb3J0YWJsZShzZWxmKToKICAgICAg
ICAgIiIiVGVzdCBfX2NhbGxfXygpIG1ldGhvZCB3aXRoIGEgbm9uLXJlcG9ydGFibGUgZXJyb3Iu
IiIiCiAgICAgICAgIGNvbmZpZGVuY2UgPSAxCi0gICAgICAgIG9wdGlvbnMgPSBzZWxmLl9wcmVw
YXJlX2NhbGwoKQorICAgICAgICBvcHRpb25zID0gUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9
MykKKyAgICAgICAgc2VsZi5fY2hlY2tfaW5pdGlhbGl6ZWQoKQogCiAgICAgICAgICMgQ29uZmly
bSB0aGUgZXJyb3IgaXMgbm90IHJlcG9ydGFibGUuCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
b3B0aW9ucy5pc19yZXBvcnRhYmxlKHNlbGYuX2NhdGVnb3J5LCBjb25maWRlbmNlKSkKQEAgLTk1
LDcgKzkxLDggQEAgY2xhc3MgRGVmYXVsdFN0eWxlRXJyb3JIYW5kbGVyVGVzdChTdHlsZUVycm9y
SGFuZGxlclRlc3RCYXNlKToKICAgICBkZWYgdGVzdF9jYWxsX3JlcG9ydGFibGVfZW1hY3Moc2Vs
Zik6CiAgICAgICAgICIiIlRlc3QgX19jYWxsX18oKSBtZXRob2Qgd2l0aCBhIHJlcG9ydGFibGUg
ZXJyb3IgYW5kIGVtYWNzIGZvcm1hdC4iIiIKICAgICAgICAgY29uZmlkZW5jZSA9IDUKLSAgICAg
ICAgb3B0aW9ucyA9IHNlbGYuX3ByZXBhcmVfY2FsbCgiZW1hY3MiKQorICAgICAgICBvcHRpb25z
ID0gUHJvY2Vzc29yT3B0aW9ucyh2ZXJib3NpdHk9Mywgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiKQor
ICAgICAgICBzZWxmLl9jaGVja19pbml0aWFsaXplZCgpCiAKICAgICAgICAgc2VsZi5fY2FsbF9l
cnJvcl9oYW5kbGVyKG9wdGlvbnMsIGNvbmZpZGVuY2UpCiAKQEAgLTEwNiw3ICsxMDMsOCBAQCBj
bGFzcyBEZWZhdWx0U3R5bGVFcnJvckhhbmRsZXJUZXN0KFN0eWxlRXJyb3JIYW5kbGVyVGVzdEJh
c2UpOgogICAgIGRlZiB0ZXN0X2NhbGxfcmVwb3J0YWJsZV92czcoc2VsZik6CiAgICAgICAgICIi
IlRlc3QgX19jYWxsX18oKSBtZXRob2Qgd2l0aCBhIHJlcG9ydGFibGUgZXJyb3IgYW5kIHZzNyBm
b3JtYXQuIiIiCiAgICAgICAgIGNvbmZpZGVuY2UgPSA1Ci0gICAgICAgIG9wdGlvbnMgPSBzZWxm
Ll9wcmVwYXJlX2NhbGwoInZzNyIpCisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRpb25z
KHZlcmJvc2l0eT0zLCBvdXRwdXRfZm9ybWF0PSJ2czciKQorICAgICAgICBzZWxmLl9jaGVja19p
bml0aWFsaXplZCgpCiAKICAgICAgICAgc2VsZi5fY2FsbF9lcnJvcl9oYW5kbGVyKG9wdGlvbnMs
IGNvbmZpZGVuY2UpCiAKQEAgLTExNCw2ICsxMTIsMzYgQEAgY2xhc3MgRGVmYXVsdFN0eWxlRXJy
b3JIYW5kbGVyVGVzdChTdHlsZUVycm9ySGFuZGxlclRlc3RCYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoc2VsZi5fZXJyb3JfbWVzc2FnZXMsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJmb28uaCgxMDApOiAgbWVzc2FnZSAgW3doaXRlc3BhY2UvdGFiXSBbNV1cbiIpCiAKKyAg
ICBkZWYgdGVzdF9jYWxsX21heF9yZXBvcnRzX3Blcl9jYXRlZ29yeShzZWxmKToKKyAgICAgICAg
IiIiVGVzdCBlcnJvciByZXBvcnQgc3VwcHJlc3Npb24gaW4gX19jYWxsX18oKSBtZXRob2QuIiIi
CisgICAgICAgIGNvbmZpZGVuY2UgPSA1CisgICAgICAgIG9wdGlvbnMgPSBQcm9jZXNzb3JPcHRp
b25zKHZlcmJvc2l0eT0zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhf
cmVwb3J0c19wZXJfY2F0ZWdvcnk9e3NlbGYuX2NhdGVnb3J5OiAyfSkKKyAgICAgICAgZXJyb3Jf
aGFuZGxlciA9IHNlbGYuX2Vycm9yX2hhbmRsZXIob3B0aW9ucykKKworICAgICAgICBzZWxmLl9j
aGVja19pbml0aWFsaXplZCgpCisKKyAgICAgICAgIyBGaXJzdCBjYWxsOiB1c3VhbCByZXBvcnRp
bmcuCisgICAgICAgIHNlbGYuX2NhbGwoZXJyb3JfaGFuZGxlciwgb3B0aW9ucywgY29uZmlkZW5j
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgc2VsZi5fZXJyb3JfY291bnQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2Vycm9yX21lc3NhZ2VzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZm9vLmg6MTAwOiAgbWVzc2FnZSAgW3doaXRlc3BhY2UvdGFiXSBbNV1c
biIpCisKKyAgICAgICAgIyBTZWNvbmQgY2FsbDogc3VwcHJlc3Npb24gbWVzc2FnZSByZXBvcnRl
ZC4KKyAgICAgICAgc2VsZi5fZXJyb3JfbWVzc2FnZXMgPSAiIgorICAgICAgICBzZWxmLl9jYWxs
KGVycm9yX2hhbmRsZXIsIG9wdGlvbnMsIGNvbmZpZGVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKDIsIHNlbGYuX2Vycm9yX2NvdW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWxmLl9lcnJvcl9tZXNzYWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZvby5oOjEw
MDogIG1lc3NhZ2UgIFt3aGl0ZXNwYWNlL3RhYl0gWzVdXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICJTdXBwcmVzc2luZyBmdXJ0aGVyIFslc10gcmVwb3J0cyBmb3IgdGhpcyBmaWxlLlxu
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAlIHNlbGYuX2NhdGVnb3J5KQorCisgICAgICAg
ICMgVGhpcmQgY2FsbDogbm8gcmVwb3J0LgorICAgICAgICBzZWxmLl9lcnJvcl9tZXNzYWdlcyA9
ICIiCisgICAgICAgIHNlbGYuX2NhbGwoZXJyb3JfaGFuZGxlciwgb3B0aW9ucywgY29uZmlkZW5j
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMywgc2VsZi5fZXJyb3JfY291bnQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX2Vycm9yX21lc3NhZ2VzLCAiIikKKwogCiBjbGFz
cyBQYXRjaFN0eWxlRXJyb3JIYW5kbGVyVGVzdChTdHlsZUVycm9ySGFuZGxlclRlc3RCYXNlKToK
IApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9wcm9jZXNz
b3JzL2NvbW1vbi5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvcHJvY2Vz
c29ycy9jb21tb24ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNGJl
YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
cHJvY2Vzc29ycy9jb21tb24ucHkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycgQU5EIEFOWQorIyBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisjIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisjIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyMgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisjIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisjIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJTdXBwb3J0cyBzdHlsZSBjaGVja2luZyBu
b3Qgc3BlY2lmaWMgdG8gYW55IG9uZSBwcm9jZXNzb3IuIiIiCisKKworIyBGSVhNRTogVGVzdCB0
aGlzIGxpc3QgaW4gdGhlIHNhbWUgd2F5IHRoYXQgdGhlIGxpc3Qgb2YgQ3BwUHJvY2Vzc29yCisj
ICAgICAgICBjYXRlZ29yaWVzIGlzIHRlc3RlZCwgZm9yIGV4YW1wbGUgYnkgY2hlY2tpbmcgdGhh
dCBhbGwgb2YgaXRzCisjICAgICAgICBlbGVtZW50cyBhcHBlYXIgaW4gdGhlIHVuaXQgdGVzdHMu
IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGRvbmUKKyMgICAgICAgIGFmdGVyIG1vdmluZyB0aGUg
cmVsZXZhbnQgY3BwX3VuaXR0ZXN0LkVycm9yQ29sbGVjdG9yIGNvZGUKKyMgICAgICAgIGludG8g
YSBzaGFyZWQgbG9jYXRpb24gYW5kIHJlZmFjdG9yaW5nIGFwcHJvcHJpYXRlbHkuCitjYXRlZ29y
aWVzID0gc2V0KFsKKyAgICAid2hpdGVzcGFjZS9jYXJyaWFnZV9yZXR1cm4iLAorXSkKKworCitk
ZWYgY2hlY2tfbm9fY2FycmlhZ2VfcmV0dXJuKGxpbmUsIGxpbmVfbnVtYmVyLCBlcnJvcik6Cisg
ICAgIiIiQ2hlY2sgdGhhdCBhIGxpbmUgZG9lcyBub3QgZW5kIHdpdGggYSBjYXJyaWFnZSByZXR1
cm4uCisKKyAgICBSZXR1cm5zIHRydWUgaWYgdGhlIGNoZWNrIGlzIHN1Y2Nlc3NmdWwgKGkuZS4g
aWYgdGhlIGxpbmUgZG9lcyBub3QKKyAgICBlbmQgd2l0aCBhIGNhcnJpYWdlIHJldHVybiksIGFu
ZCBmYWxzZSBvdGhlcndpc2UuCisKKyAgICBBcmdzOgorICAgICAgbGluZTogQSBzdHJpbmcgdGhh
dCBpcyB0aGUgbGluZSB0byBjaGVjay4KKyAgICAgIGxpbmVfbnVtYmVyOiBUaGUgbGluZSBudW1i
ZXIuCisgICAgICBlcnJvcjogVGhlIGZ1bmN0aW9uIHRvIGNhbGwgd2l0aCBhbnkgZXJyb3JzIGZv
dW5kLgorCisgICAgIiIiCisKKyAgICBpZiBsaW5lLmVuZHN3aXRoKCJcciIpOgorICAgICAgICBl
cnJvcihsaW5lX251bWJlciwKKyAgICAgICAgICAgICAgIndoaXRlc3BhY2UvY2FycmlhZ2VfcmV0
dXJuIiwKKyAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgIk9uZSBvciBtb3JlIHVuZXhw
ZWN0ZWQgXFxyICheTSkgZm91bmQ7ICIKKyAgICAgICAgICAgICAgImJldHRlciB0byB1c2Ugb25s
eSBhIFxcbiIpCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgcmV0dXJuIFRydWUKKworCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3Byb2Nlc3NvcnMv
Y29tbW9uX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9w
cm9jZXNzb3JzL2NvbW1vbl91bml0dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi41NmRiM2NjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9wcm9jZXNzb3JzL2NvbW1vbl91bml0dGVzdC5weQpAQCAtMCwwICsxLDgy
IEBACisjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtp
dC5vcmcpCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisjIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyMgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04K
KyMgQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVu
aXQgdGVzdHMgZm9yIGNvbW1vbi5weS4iIiIKKworCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBj
b21tb24gaW1wb3J0IGNoZWNrX25vX2NhcnJpYWdlX3JldHVybgorCisKKyMgRklYTUU6IFRoZSB1
bml0IHRlc3RzIGZvciB0aGUgY3BwLCB0ZXh0LCBhbmQgY29tbW9uIHByb2Nlc3NvcnMgc2hvdWxk
CisjICAgICAgICBzaGFyZSBzdXBwb3J0aW5nIHRlc3QgY29kZS4gVGhpcyBjYW4gaW5jbHVkZSwg
Zm9yIGV4YW1wbGUsIHRoZQorIyAgICAgICAgbW9jayBzdHlsZSBlcnJvciBoYW5kbGluZyBjb2Rl
IGFuZCB0aGUgY29kZSB0byBjaGVjayB0aGF0IGFsbAorIyAgICAgICAgb2YgYSBwcm9jZXNzb3In
cyBjYXRlZ29yaWVzIGFyZSBjb3ZlcmVkIGJ5IHRoZSB1bml0IHRlc3RzLgorIyAgICAgICAgU3Vj
aCBzaGFyZWQgY29kZSBjYW4gYmUgbG9jYXRlZCBpbiBhIHNoYXJlZCB0ZXN0IGZpbGUsIHBlcmhh
cHMKKyMgICAgICAgIGlsa2UgdGhpcyBvbmUuCitjbGFzcyBDYXJyaWFnZVJldHVyblRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgorCisgICAgIiIiVGVzdHMgY2hlY2tfbm9fY2FycmlhZ2VfcmV0dXJu
KCkuIiIiCisKKyAgICBfY2F0ZWdvcnkgPSAid2hpdGVzcGFjZS9jYXJyaWFnZV9yZXR1cm4iCisg
ICAgX2NvbmZpZGVuY2UgPSAxCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYu
X3N0eWxlX2Vycm9ycyA9IFtdICMgVGhlIGxpc3Qgb2YgYWNjdW11bGF0ZWQgc3R5bGUgZXJyb3Jz
LgorCisgICAgZGVmIF9tb2NrX3N0eWxlX2Vycm9yX2hhbmRsZXIoc2VsZiwgbGluZV9udW1iZXIs
IGNhdGVnb3J5LCBjb25maWRlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UpOgorICAgICAgICAiIiJBcHBlbmQgdGhlIGVycm9yIGluZm9ybWF0aW9uIHRvIHRo
ZSBsaXN0IG9mIHN0eWxlIGVycm9ycy4iIiIKKyAgICAgICAgZXJyb3IgPSAobGluZV9udW1iZXIs
IGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgICAgICBzZWxmLl9zdHlsZV9lcnJv
cnMuYXBwZW5kKGVycm9yKQorCisgICAgZGVmIGFzc2VydF9jYXJyaWFnZV9yZXR1cm4oc2VsZiwg
bGluZSwgaXNfZXJyb3IpOgorICAgICAgICAiIiJDYWxsIGNoZWNrX25vX2NhcnJpYWdlX3JldHVy
bigpIGFuZCBhc3NlcnQgdGhlIHJlc3VsdC4iIiIKKyAgICAgICAgbGluZV9udW1iZXIgPSAxMDAK
KyAgICAgICAgaGFuZGxlX3N0eWxlX2Vycm9yID0gc2VsZi5fbW9ja19zdHlsZV9lcnJvcl9oYW5k
bGVyCisKKyAgICAgICAgY2hlY2tfbm9fY2FycmlhZ2VfcmV0dXJuKGxpbmUsIGxpbmVfbnVtYmVy
LCBoYW5kbGVfc3R5bGVfZXJyb3IpCisKKyAgICAgICAgZXhwZWN0ZWRfbWVzc2FnZSA9ICgiT25l
IG9yIG1vcmUgdW5leHBlY3RlZCBcXHIgKF5NKSBmb3VuZDsgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJiZXR0ZXIgdG8gdXNlIG9ubHkgYSBcXG4iKQorCisgICAgICAgIGlmIGlzX2Vy
cm9yOgorICAgICAgICAgICAgZXhwZWN0ZWRfZXJyb3JzID0gWyhsaW5lX251bWJlciwgc2VsZi5f
Y2F0ZWdvcnksIHNlbGYuX2NvbmZpZGVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkX21lc3NhZ2UpXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2Vs
Zi5fc3R5bGVfZXJyb3JzLCBleHBlY3RlZF9lcnJvcnMpCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLl9zdHlsZV9lcnJvcnMsIFtdKQorCisgICAgZGVm
IHRlc3RfZW5kc193aXRoX2NhcnJpYWdlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jYXJy
aWFnZV9yZXR1cm4oImNhcnJpYWdlIHJldHVyblxyIiwgaXNfZXJyb3I9VHJ1ZSkKKworICAgIGRl
ZiB0ZXN0X2VuZHNfd2l0aF9ub3RoaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydF9jYXJy
aWFnZV9yZXR1cm4oIm5vIGNhcnJpYWdlIHJldHVybiIsIGlzX2Vycm9yPUZhbHNlKQorCisgICAg
ZGVmIHRlc3RfZW5kc193aXRoX25ld2xpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Nh
cnJpYWdlX3JldHVybigibm8gY2FycmlhZ2UgcmV0dXJuXG4iLCBpc19lcnJvcj1GYWxzZSkKKwor
ICAgIGRlZiB0ZXN0X2VuZHNfd2l0aF9jYXJyaWFnZV9uZXdsaW5lKHNlbGYpOgorICAgICAgICAj
IENoZWNrX25vX2NhcnJpYWdlX3JldHVybiBvbmx5IGNoZWNrcyB0aGUgZmluYWwgY2hhcmFjdGVy
LgorICAgICAgICBzZWxmLmFzc2VydF9jYXJyaWFnZV9yZXR1cm4oIm5vIGNhcnJpYWdlIHJldHVy
blxyXG4iLCBpc19lcnJvcj1GYWxzZSkKKwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS91bml0dGVzdHMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL3VuaXR0ZXN0cy5weQppbmRleCAxMWMxMGU3Li44ODNlMTM3IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0ZXN0cy5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL3VuaXR0ZXN0cy5weQpAQCAtMzcsNSAr
MzcsNiBAQCBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSBjaGVja2VyX3VuaXR0ZXN0IGltcG9ydCAq
CiBmcm9tIGVycm9yX2hhbmRsZXJzX3VuaXR0ZXN0IGltcG9ydCAqCitmcm9tIHByb2Nlc3NvcnMu
Y29tbW9uX3VuaXR0ZXN0IGltcG9ydCAqCiBmcm9tIHByb2Nlc3NvcnMuY3BwX3VuaXR0ZXN0IGlt
cG9ydCAqCiBmcm9tIHByb2Nlc3NvcnMudGV4dF91bml0dGVzdCBpbXBvcnQgKgo=
</data>
<flag name="review"
          id="30422"
          type_id="1"
          status="+"
          setter="hamaji"
    />
    <flag name="commit-queue"
          id="30423"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>