<?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>137600</bug_id>
          
          <creation_ts>2014-10-10 02:17:09 -0700</creation_ts>
          <short_desc>import-w3c-tests doesn&apos;t prefix property values</short_desc>
          <delta_ts>2014-10-14 01:08:15 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Manuel Rego Casasnovas">rego</reporter>
          <assigned_to name="Manuel Rego Casasnovas">rego</assigned_to>
          <cc>bjonesbe</cc>
    
    <cc>commit-queue</cc>
    
    <cc>glenn</cc>
    
    <cc>rhauck</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1040858</commentid>
    <comment_count>0</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2014-10-10 02:17:09 -0700</bug_when>
    <thetext>Some property values like &quot;display: -webkit-grid;&quot; need to include the vendor prefix in WebKit.

Currently the import-w3c-tests is only prefixing the properties (example: &quot;grid-row: 3;&quot; =&gt; &quot;-webkit-grid-row: 3;&quot;) but not the property values.

CSSValueKeywords.in has the list of property values from where we can extract the prefixed ones:
http://trac.webkit.org/browser/trunk/Source/WebCore/css/CSSValueKeywords.in</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040859</commentid>
    <comment_count>1</comment_count>
      <attachid>239609</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2014-10-10 02:20:00 -0700</bug_when>
    <thetext>Created attachment 239609
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1040973</commentid>
    <comment_count>2</comment_count>
      <attachid>239609</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-10-10 11:17:44 -0700</bug_when>
    <thetext>Comment on attachment 239609
Patch

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

I haven&apos;t looked through all of the test changes yet, but here&apos;s a first pass.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:87
&gt; +        property_values_regex = &apos;(:\s*|^\s*)(&apos; + &quot;|&quot;.join(prop.replace(&apos;-webkit-&apos;, &apos;&apos;) for prop in self.prefixed_property_values) + &apos;)(\s*;|\s*}|\s*$)&apos;
&gt; +        self.property_values_re = re.compile(property_values_regex)

Nit: I think this should be singular (property_value_re/property_value_regex).

Since the other one is prop_re, I&apos;m torn a bit on if this should be &quot;property&quot;, to match webkit style better, or if it should be &quot;prop&quot; for consistency with existing code. Your call on that one.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:95
&gt; +    def read_webkit_prefixed_css_property_list(self, contents):

Why not pass in the file name instead of the contents? It would make the call sites of this method much more readable.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:143
&gt; +            _log.info(&apos;  converting property %s&apos;, prop)
&gt; +
&gt; +        text = &apos;&apos;.join(text_chunks)
&gt; +        converted_property_values = set()
&gt; +        text_chunks = []
&gt; +        cur_pos = 0
&gt; +        for m in self.property_values_re.finditer(text):
&gt; +            text_chunks.extend([text[cur_pos:m.start()], m.group(1), &apos;-webkit-&apos;, m.group(2), m.group(3)])
&gt; +            converted_property_values.add(m.group(2))
&gt; +            cur_pos = m.end()
&gt; +        text_chunks.append(text[cur_pos:])
&gt; +
&gt; +        for value in converted_property_values:
&gt; +            _log.info(&apos;  converting property value %s&apos;, value)

I don&apos;t like the code duplication. You should at least factor the common code out into a helper method and just call it twice.

Ideally, we&apos;d only iterate once, but that&apos;s tricky, and might be premature optimization, so I&apos;m not asking for that. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041058</commentid>
    <comment_count>3</comment_count>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2014-10-10 16:00:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 239609 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239609&amp;action=review
&gt; 
&gt; I haven&apos;t looked through all of the test changes yet, but here&apos;s a first pass.

Thanks for the quick review!

&gt; &gt; Tools/Scripts/webkitpy/w3c/test_converter.py:87
&gt; &gt; +        property_values_regex = &apos;(:\s*|^\s*)(&apos; + &quot;|&quot;.join(prop.replace(&apos;-webkit-&apos;, &apos;&apos;) for prop in self.prefixed_property_values) + &apos;)(\s*;|\s*}|\s*$)&apos;
&gt; &gt; +        self.property_values_re = re.compile(property_values_regex)
&gt; 
&gt; Nit: I think this should be singular (property_value_re/property_value_regex).

Using singular here.

&gt; Since the other one is prop_re, I&apos;m torn a bit on if this should be &quot;property&quot;, to match webkit style better, or if it should be &quot;prop&quot; for consistency with existing code. Your call on that one.

I&apos;m keeping &quot;prop&quot; and using &quot;prop_value&quot; for this case, as there are more variables with short names in this script. Probably a bigger refactoring should be done at some point.

&gt; &gt; Tools/Scripts/webkitpy/w3c/test_converter.py:95
&gt; &gt; +    def read_webkit_prefixed_css_property_list(self, contents):
&gt; 
&gt; Why not pass in the file name instead of the contents? It would make the call sites of this method much more readable.

You&apos;re right, it makes things simpler.

&gt; &gt; Tools/Scripts/webkitpy/w3c/test_converter.py:143
&gt; &gt; +            _log.info(&apos;  converting property %s&apos;, prop)
&gt; &gt; +
&gt; &gt; +        text = &apos;&apos;.join(text_chunks)
&gt; &gt; +        converted_property_values = set()
&gt; &gt; +        text_chunks = []
&gt; &gt; +        cur_pos = 0
&gt; &gt; +        for m in self.property_values_re.finditer(text):
&gt; &gt; +            text_chunks.extend([text[cur_pos:m.start()], m.group(1), &apos;-webkit-&apos;, m.group(2), m.group(3)])
&gt; &gt; +            converted_property_values.add(m.group(2))
&gt; &gt; +            cur_pos = m.end()
&gt; &gt; +        text_chunks.append(text[cur_pos:])
&gt; &gt; +
&gt; &gt; +        for value in converted_property_values:
&gt; &gt; +            _log.info(&apos;  converting property value %s&apos;, value)
&gt; 
&gt; I don&apos;t like the code duplication. You should at least factor the common code out into a helper method and just call it twice.
&gt; 
&gt; Ideally, we&apos;d only iterate once, but that&apos;s tricky, and might be premature optimization, so I&apos;m not asking for that. :-)

Fair enough :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041060</commentid>
    <comment_count>4</comment_count>
      <attachid>239658</attachid>
    <who name="Manuel Rego Casasnovas">rego</who>
    <bug_when>2014-10-10 16:01:01 -0700</bug_when>
    <thetext>Created attachment 239658
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041329</commentid>
    <comment_count>5</comment_count>
      <attachid>239658</attachid>
    <who name="Bem Jones-Bey">bjonesbe</who>
    <bug_when>2014-10-13 11:59:19 -0700</bug_when>
    <thetext>Comment on attachment 239658
Patch

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

Looks good. r=me.

&gt; Tools/Scripts/webkitpy/w3c/test_converter.py:125
&gt; +        return (converted_properties[0], converted_property_values[0], converted_property_values[1])

One of these days, we should refactor this to return an object with proper field names instead of a tuple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041491</commentid>
    <comment_count>6</comment_count>
      <attachid>239658</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 01:08:12 -0700</bug_when>
    <thetext>Comment on attachment 239658
Patch

Clearing flags on attachment: 239658

Committed r174672: &lt;http://trac.webkit.org/changeset/174672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1041492</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-14 01:08:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239609</attachid>
            <date>2014-10-10 02:20:00 -0700</date>
            <delta_ts>2014-10-10 16:00:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137600-20141010112002.patch</filename>
            <type>text/plain</type>
            <size>23515</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmNhYmU2Yjk3ZmQzZjQ3NTE0ZGI1NjJkODY2NjYyZmE5
YzVlOGM3ZC4uMDE4ZWExOTFjNTk0OTI0ZDZjYjYyZmEwZWUwMmI2YWZkOThlYTNhZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4
IEBACisyMDE0LTEwLTEwICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgorCisgICAgICAgIGltcG9ydC13M2MtdGVzdHMgZG9lc24ndCBwcmVmaXggcHJvcGVydHkgdmFs
dWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc2
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHByb3BlcnR5IHZhbHVlcyBhcmUgcHJlZml4ZWQgaW4gV2ViS2l0LiBNb2RpZmllZCB0aGUgVzND
IGltcG9ydAorICAgICAgICBzY3JpcHQgaW4gb3JkZXIgdG8gcHJlZml4IHByb3BlcnR5IHZhbHVl
cyBhbmQgbm90IG9ubHkgcHJvcGVydGllcy4KKyAgICAgICAgVGhlIHBhdGNoIHJlLXVzZXMgbW9z
dCBvZiB0aGUgYWxyZWFkeSBleGlzdGVudCBsb2dpYyB0byBwcmVmaXgKKyAgICAgICAgcHJvcGVy
dGllcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5
OiBSZWFkIHByZWZpeGVkIHByb3BlcnR5IHZhbHVlcworICAgICAgICBmcm9tIENTU1ZhbHVlS2V5
d29yZHMuaW4gYW5kIGFkYXB0IGNvbnZlcnRlciB0byBtb2RpZnkgYm90aCBwcm9wZXJ0aWVzCisg
ICAgICAgIGFuZCBwcm9wZXJ0eSB2YWx1ZXMuCisgICAgICAgIChjb252ZXJ0X2Zvcl93ZWJraXQp
OgorICAgICAgICAoX1czQ1Rlc3RDb252ZXJ0ZXIuX19pbml0X18pOgorICAgICAgICAoX1czQ1Rl
c3RDb252ZXJ0ZXIub3V0cHV0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLnJlYWRfd2Vi
a2l0X3ByZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVy
dGVyLmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVydGllc19hbmRfdmFsdWVz
KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmNvbnZlcnRfc3R5bGVfZGF0YSk6CisgICAg
ICAgIChfVzNDVGVzdENvbnZlcnRlci5hZGRfd2Via2l0X3ByZWZpeF90b191bnByZWZpeGVkX3By
b3BlcnRpZXMpOiBEZWxldGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3Rf
Y29udmVydGVyX3VuaXR0ZXN0LnB5OiBVcGRhdGVkIHVuaXQgdGVzdCB0bworICAgICAgICBpbmNs
dWRlIGNoZWNrcyBmb3IgcHJvcGVydHkgdmFsdWVzIHRvby4KKyAgICAgICAgKFczQ1Rlc3RDb252
ZXJ0ZXJUZXN0LnRlc3RfcmVhZF9wcmVmaXhlZF9wcm9wZXJ0eV9saXN0KToKKyAgICAgICAgKHZl
cmlmeV9ub19jb252ZXJzaW9uX2hhcHBlbmVkKToKKyAgICAgICAgKHZlcmlmeV9wcmVmaXhlZF9w
cm9wZXJ0aWVzKToKKyAgICAgICAgKHZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMpOgor
ICAgICAgICAoZ2VuZXJhdGVfdGVzdF9jb250ZW50X3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyk6Cisg
ICAgICAgIChnZW5lcmF0ZV90ZXN0X2NvbnRlbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHk6IE1vZGlmaWVkIGltcG9ydGVyIHRvIG1hbmFnZQorICAg
ICAgICBwcmVmaXhlZCBwcm9wZXJ0eSB2YWx1ZXMgYW5kIGluZm9ybSBhYm91dCB0aGVtLgorICAg
ICAgICAoVGVzdEltcG9ydGVyLmltcG9ydF90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIu
d3JpdGVfaW1wb3J0X2xvZyk6CisKIDIwMTQtMTAtMDggIEpha2UgTmllbHNlbiAgPGphY29iX25p
ZWxzZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0eWxlUXVldWUgc2hvdWxkIHRocm93IGEgUGF0
Y2hJc05vdFZhbGlkIGV4Y2VwdGlvbiB0byBhY2hpZXZlCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CmluZGV4IDVjY2JkNmYyZjZmNTE3MzJjMGU1ZGE4MzM4
NjVmNzQ3MjBiZjRiYWEuLjE2YmYxMGU2YjQ0Yjk2YmMyMmNmNGZiMGQ5Nzc5MWJhMDY1MzkxOTgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBAIC00
NCw3ICs0NCw3IEBAIGRlZiBjb252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCBy
ZWZlcmVuY2Vfc3VwcG9ydF9pbmZvLCBob3N0PUhvc3QoKSk6CiAgICAgY29udGVudHMgPSBob3N0
LmZpbGVzeXN0ZW0ucmVhZF9iaW5hcnlfZmlsZShmaWxlbmFtZSkKICAgICBjb252ZXJ0ZXIgPSBf
VzNDVGVzdENvbnZlcnRlcihuZXdfcGF0aCwgZmlsZW5hbWUsIHJlZmVyZW5jZV9zdXBwb3J0X2lu
Zm8sIGhvc3QpCiAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5jc3MnKToKLSAgICAgICAgcmV0
dXJuIGNvbnZlcnRlci5hZGRfd2Via2l0X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3BlcnRpZXMo
Y29udGVudHMpCisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuYWRkX3dlYmtpdF9wcmVmaXhfdG9f
dW5wcmVmaXhlZF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoY29udGVudHMpCiAgICAgZWxzZToKICAg
ICAgICAgY29udmVydGVyLmZlZWQoY29udGVudHMpCiAgICAgICAgIGNvbnZlcnRlci5jbG9zZSgp
CkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIF9XM0NUZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgog
CiAgICAgICAgIHNlbGYuY29udmVydGVkX2RhdGEgPSBbXQogICAgICAgICBzZWxmLmNvbnZlcnRl
ZF9wcm9wZXJ0aWVzID0gW10KKyAgICAgICAgc2VsZi5jb252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVz
ID0gW10KICAgICAgICAgc2VsZi5pbl9zdHlsZV90YWcgPSBGYWxzZQogICAgICAgICBzZWxmLnN0
eWxlX2RhdGEgPSBbXQogICAgICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKQEAgLTcyLDI1
ICs3MywyOSBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToKIAogICAgICAg
ICAjIFRoZXNlIHNldHRpbmdzIG1pZ2h0IHZhcnkgYmV0d2VlbiBXZWJLaXQgYW5kIEJsaW5rCiAg
ICAgICAgIHNlbGYuX2Nzc19wcm9wZXJ0eV9maWxlID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X3Jv
b3QoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2NzcycsICdDU1NQcm9wZXJ0eU5hbWVzLmluJykKKyAg
ICAgICAgc2VsZi5fY3NzX3Byb3BlcnR5X3ZhbHVlc19maWxlID0gc2VsZi5wYXRoX2Zyb21fd2Vi
a2l0X3Jvb3QoJ1NvdXJjZScsICdXZWJDb3JlJywgJ2NzcycsICdDU1NWYWx1ZUtleXdvcmRzLmlu
JykKICAgICAgICAgc2VsZi5fY3NzX3Byb3BlcnR5X3NwbGl0X3N0cmluZyA9ICc9JwogCiAgICAg
ICAgIHNlbGYudGVzdF9oYXJuZXNzX3JlID0gcmUuY29tcGlsZSgnL3Jlc291cmNlcy90ZXN0aGFy
bmVzcycpCiAKLSAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0gc2VsZi5yZWFkX3dl
YmtpdF9wcmVmaXhlZF9jc3NfcHJvcGVydHlfbGlzdCgpCisgICAgICAgIHNlbGYucHJlZml4ZWRf
cHJvcGVydGllcyA9IHNlbGYucmVhZF93ZWJraXRfcHJlZml4ZWRfY3NzX3Byb3BlcnR5X2xpc3Qo
c2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShzZWxmLl9jc3NfcHJvcGVydHlfZmlsZSkp
CiAgICAgICAgIHByb3BfcmVnZXggPSAnKFtcc3tdfF4pKCcgKyAifCIuam9pbihwcm9wLnJlcGxh
Y2UoJy13ZWJraXQtJywgJycpIGZvciBwcm9wIGluIHNlbGYucHJlZml4ZWRfcHJvcGVydGllcykg
KyAnKShccys6fDopJwogICAgICAgICBzZWxmLnByb3BfcmUgPSByZS5jb21waWxlKHByb3BfcmVn
ZXgpCiAKKyAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMgPSBzZWxmLnJlYWRf
d2Via2l0X3ByZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90
ZXh0X2ZpbGUoc2VsZi5fY3NzX3Byb3BlcnR5X3ZhbHVlc19maWxlKSkKKyAgICAgICAgcHJvcGVy
dHlfdmFsdWVzX3JlZ2V4ID0gJyg6XHMqfF5ccyopKCcgKyAifCIuam9pbihwcm9wLnJlcGxhY2Uo
Jy13ZWJraXQtJywgJycpIGZvciBwcm9wIGluIHNlbGYucHJlZml4ZWRfcHJvcGVydHlfdmFsdWVz
KSArICcpKFxzKjt8XHMqfXxccyokKScKKyAgICAgICAgc2VsZi5wcm9wZXJ0eV92YWx1ZXNfcmUg
PSByZS5jb21waWxlKHByb3BlcnR5X3ZhbHVlc19yZWdleCkKKwogICAgIGRlZiBvdXRwdXQoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5jb252ZXJ0ZWRfcHJvcGVydGllcywgJycuam9pbihz
ZWxmLmNvbnZlcnRlZF9kYXRhKSkKKyAgICAgICAgcmV0dXJuIChzZWxmLmNvbnZlcnRlZF9wcm9w
ZXJ0aWVzLCBzZWxmLmNvbnZlcnRlZF9wcm9wZXJ0eV92YWx1ZXMsICcnLmpvaW4oc2VsZi5jb252
ZXJ0ZWRfZGF0YSkpCiAKICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9yb290KHNlbGYsICpjb21w
cyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmFic3BhdGgoc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9yb290LCAqY29tcHMpKQogCi0gICAgZGVmIHJlYWRfd2Vi
a2l0X3ByZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KHNlbGYpOgorICAgIGRlZiByZWFkX3dlYmtp
dF9wcmVmaXhlZF9jc3NfcHJvcGVydHlfbGlzdChzZWxmLCBjb250ZW50cyk6CiAgICAgICAgIHBy
ZWZpeGVkX3Byb3BlcnRpZXMgPSBbXQogICAgICAgICB1bnByZWZpeGVkX3Byb3BlcnRpZXMgPSBz
ZXQoKQogCi0gICAgICAgIGNvbnRlbnRzID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmls
ZShzZWxmLl9jc3NfcHJvcGVydHlfZmlsZSkKICAgICAgICAgZm9yIGxpbmUgaW4gY29udGVudHMu
c3BsaXRsaW5lcygpOgogICAgICAgICAgICAgaWYgcmUubWF0Y2goJ14oI3wvLyknLCBsaW5lKToK
ICAgICAgICAgICAgICAgICAjIHNraXAgY29tbWVudHMgYW5kIHByZXByb2Nlc3NvciBkaXJlY3Rp
dmVzCkBAIC0xMDcsMTAgKzExMiwxMCBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFy
c2VyKToKICAgICAgICAgIyBJZ25vcmUgYW55IHByZWZpeGVkIHByb3BlcnRpZXMgZm9yIHdoaWNo
IGFuIHVucHJlZml4ZWQgdmVyc2lvbiBpcyBzdXBwb3J0ZWQKICAgICAgICAgcmV0dXJuIFtwcm9w
IGZvciBwcm9wIGluIHByZWZpeGVkX3Byb3BlcnRpZXMgaWYgcHJvcCBub3QgaW4gdW5wcmVmaXhl
ZF9wcm9wZXJ0aWVzXQogCi0gICAgZGVmIGFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRf
cHJvcGVydGllcyhzZWxmLCB0ZXh0KToKLSAgICAgICAgIiIiIFNlYXJjaGVzIHx0ZXh0fCBmb3Ig
aW5zdGFuY2VzIG9mIHByb3BlcnRpZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggYW5k
IGFkZHMgdGhlIHByZWZpeCB0byB0aGVtLgorICAgIGRlZiBhZGRfd2Via2l0X3ByZWZpeF90b191
bnByZWZpeGVkX3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyhzZWxmLCB0ZXh0KToKKyAgICAgICAgIiIi
IFNlYXJjaGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2VzIG9mIHByb3BlcnRpZXMgYW5kIHZhbHVlcyBy
ZXF1aXJpbmcgdGhlIC13ZWJraXQtIHByZWZpeCBhbmQgYWRkcyB0aGUgcHJlZml4IHRvIHRoZW0u
CiAKLSAgICAgICAgUmV0dXJucyB0aGUgbGlzdCBvZiBjb252ZXJ0ZWQgcHJvcGVydGllcyBhbmQg
dGhlIG1vZGlmaWVkIHRleHQuIiIiCisgICAgICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgY29udmVy
dGVkIHByb3BlcnRpZXMsIHZhbHVlcyBhbmQgdGhlIG1vZGlmaWVkIHRleHQuIiIiCiAKICAgICAg
ICAgY29udmVydGVkX3Byb3BlcnRpZXMgPSBzZXQoKQogICAgICAgICB0ZXh0X2NodW5rcyA9IFtd
CkBAIC0xMjIsMTAgKzEyNywyMyBAQCBjbGFzcyBfVzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2Vy
KToKICAgICAgICAgdGV4dF9jaHVua3MuYXBwZW5kKHRleHRbY3VyX3BvczpdKQogCiAgICAgICAg
IGZvciBwcm9wIGluIGNvbnZlcnRlZF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgX2xvZy5pbmZv
KCcgIGNvbnZlcnRpbmcgJXMnLCBwcm9wKQorICAgICAgICAgICAgX2xvZy5pbmZvKCcgIGNvbnZl
cnRpbmcgcHJvcGVydHkgJXMnLCBwcm9wKQorCisgICAgICAgIHRleHQgPSAnJy5qb2luKHRleHRf
Y2h1bmtzKQorICAgICAgICBjb252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzID0gc2V0KCkKKyAgICAg
ICAgdGV4dF9jaHVua3MgPSBbXQorICAgICAgICBjdXJfcG9zID0gMAorICAgICAgICBmb3IgbSBp
biBzZWxmLnByb3BlcnR5X3ZhbHVlc19yZS5maW5kaXRlcih0ZXh0KToKKyAgICAgICAgICAgIHRl
eHRfY2h1bmtzLmV4dGVuZChbdGV4dFtjdXJfcG9zOm0uc3RhcnQoKV0sIG0uZ3JvdXAoMSksICct
d2Via2l0LScsIG0uZ3JvdXAoMiksIG0uZ3JvdXAoMyldKQorICAgICAgICAgICAgY29udmVydGVk
X3Byb3BlcnR5X3ZhbHVlcy5hZGQobS5ncm91cCgyKSkKKyAgICAgICAgICAgIGN1cl9wb3MgPSBt
LmVuZCgpCisgICAgICAgIHRleHRfY2h1bmtzLmFwcGVuZCh0ZXh0W2N1cl9wb3M6XSkKKworICAg
ICAgICBmb3IgdmFsdWUgaW4gY29udmVydGVkX3Byb3BlcnR5X3ZhbHVlczoKKyAgICAgICAgICAg
IF9sb2cuaW5mbygnICBjb252ZXJ0aW5nIHByb3BlcnR5IHZhbHVlICVzJywgdmFsdWUpCiAKLSAg
ICAgICAgIyBGSVhNRTogSGFuZGxlIHRoZSBKUyB2ZXJzaW9ucyBvZiB0aGVzZSBwcm9wZXJ0aWVz
IGFuZCBHZXRDb21wdXRlZFN0eWxlLCB0b28uCi0gICAgICAgIHJldHVybiAoY29udmVydGVkX3By
b3BlcnRpZXMsICcnLmpvaW4odGV4dF9jaHVua3MpKQorICAgICAgICAjIEZJWE1FOiBIYW5kbGUg
dGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3BlcnRpZXMgYW5kIHZhbHVlcyBhbmQgR2V0Q29t
cHV0ZWRTdHlsZSwgdG9vLgorICAgICAgICByZXR1cm4gKGNvbnZlcnRlZF9wcm9wZXJ0aWVzLCBj
b252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzLCAnJy5qb2luKHRleHRfY2h1bmtzKSkKIAogICAgIGRl
ZiBjb252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyhzZWxmLCB0ZXh0KToKICAgICAgICAgIiIiIFNl
YXJjaGVzIHx0ZXh0fCBmb3IgaW5zdGFuY2VzIG9mIGZpbGVzIGluIHJlZmVyZW5jZV9zdXBwb3J0
X2luZm8gYW5kIHVwZGF0ZXMgdGhlIHJlbGF0aXZlIHBhdGggdG8gYmUgY29ycmVjdCBmb3IgdGhl
IG5ldyByZWYgZmlsZSBsb2NhdGlvbiIiIgpAQCAtMTQwLDE0ICsxNTgsMTYgQEAgY2xhc3MgX1cz
Q1Rlc3RDb252ZXJ0ZXIoSFRNTFBhcnNlcik6CiAgICAgICAgIHJldHVybiBjb252ZXJ0ZWQKIAog
ICAgIGRlZiBjb252ZXJ0X3N0eWxlX2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIGNvbnZlcnRl
ZCA9IHNlbGYuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVzKGRhdGEp
CisgICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhl
ZF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoZGF0YSkKICAgICAgICAgaWYgY29udmVydGVkWzBdOgog
ICAgICAgICAgICAgc2VsZi5jb252ZXJ0ZWRfcHJvcGVydGllcy5leHRlbmQobGlzdChjb252ZXJ0
ZWRbMF0pKQorICAgICAgICBpZiBjb252ZXJ0ZWRbMV06CisgICAgICAgICAgICBzZWxmLmNvbnZl
cnRlZF9wcm9wZXJ0eV92YWx1ZXMuZXh0ZW5kKGxpc3QoY29udmVydGVkWzFdKSkKIAogICAgICAg
ICBpZiBzZWxmLnJlZmVyZW5jZV9zdXBwb3J0X2luZm8gaXMgTm9uZSBvciBzZWxmLnJlZmVyZW5j
ZV9zdXBwb3J0X2luZm8gPT0ge306Ci0gICAgICAgICAgICByZXR1cm4gY29udmVydGVkWzFdCisg
ICAgICAgICAgICByZXR1cm4gY29udmVydGVkWzJdCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuY29u
dmVydF9yZWZlcmVuY2VfcmVscGF0aHMoY29udmVydGVkWzFdKQorICAgICAgICByZXR1cm4gc2Vs
Zi5jb252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyhjb252ZXJ0ZWRbMl0pCiAKICAgICBkZWYgY29u
dmVydF9hdHRyaWJ1dGVzX2lmX25lZWRlZChzZWxmLCB0YWcsIGF0dHJzKToKICAgICAgICAgY29u
dmVydGVkID0gc2VsZi5nZXRfc3RhcnR0YWdfdGV4dCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CmluZGV4IDg5NmJiNmY4
NTI1MzFmNjE3MzAyOGIwNmQwMWFjZmM4YjkyYTE3NjUuLjE3M2JkZDZlNGRkN2UxYzkwNWExMGE3
NjE0YzU4YTIwN2UzZmUyYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0LnB5CkBAIC01NCw2ICs1NCw4IEBAIGNsYXNzIFcz
Q1Rlc3RDb252ZXJ0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgY29udmVydGVy
ID0gX1czQ1Rlc3RDb252ZXJ0ZXIoRFVNTVlfUEFUSCwgRFVNTVlfRklMRU5BTUUsIE5vbmUpCiAg
ICAgICAgIHByb3BfbGlzdCA9IGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShwcm9wX2xpc3QsICdObyBwcmVmaXhlZCBwcm9wZXJ0aWVzIGZvdW5k
JykKKyAgICAgICAgcHJvcGVydHlfdmFsdWVzX2xpc3QgPSBjb252ZXJ0ZXIucHJlZml4ZWRfcHJv
cGVydHlfdmFsdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwcm9wZXJ0eV92YWx1ZXNfbGlz
dCwgJ05vIHByZWZpeGVkIHByb3BlcnR5IHZhbHVlcyBmb3VuZCcpCiAKICAgICBkZWYgdGVzdF9j
b252ZXJ0X2Zvcl93ZWJraXRfbm90aGluZ190b19jb252ZXJ0KHNlbGYpOgogICAgICAgICAiIiIg
VGVzdHMgY29udmVydF9mb3Jfd2Via2l0KCkgdXNpbmcgYSBiYXNpYyB0ZXN0IHRoYXQgaGFzIG5v
dGhpbmcgdG8gY29udmVydCAiIiIKQEAgLTEwNCw4ICsxMDYsOSBAQCBDT05URU5UIE9GIFRFU1QK
ICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLm91dHB1dCgpCiAKICAgICAgICAgc2VsZi52
ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQpCi0gICAgICAgIHNlbGYudmVyaWZ5
X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsxXSwgZmFrZV9kaXJfcGF0
aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhzKGNvbnZlcnRl
ciwgY29udmVydGVkWzJdLCBmYWtlX2Rpcl9wYXRoLCAxLCAxKQogICAgICAgICBzZWxmLnZlcmlm
eV9wcmVmaXhlZF9wcm9wZXJ0aWVzKGNvbnZlcnRlZCwgW10pCisgICAgICAgIHNlbGYudmVyaWZ5
X3ByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcyhjb252ZXJ0ZWQsIFtdKQogCiAgICAgZGVmIHRlc3Rf
Y29udmVydF9mb3Jfd2Via2l0X3Byb3BlcnRpZXNfb25seShzZWxmKToKICAgICAgICAgIiIiIFRl
c3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgdGVzdCB0aGF0IGhhcyAyIHByZWZpeGVk
IHByb3BlcnRpZXM6IDEgaW4gYSBzdHlsZSBibG9jayArIDEgaW5saW5lIHN0eWxlICIiIgpAQCAt
MTE2LDMxICsxMTksMzIgQEAgQ09OVEVOVCBPRiBURVNUCiA8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgogCi0j
YmxvY2sxIHsgQHRlc3QwQDogcHJvcHZhbHVlOyB9CisjYmxvY2sxIHsgQHRlc3QwQDogQHByb3B2
YWx1ZTBAOyB9CiAKIDwvc3R5bGU+CiA8L2hlYWQ+CiA8Ym9keT4KLTxkaXYgaWQ9ImVsZW0xIiBz
dHlsZT0iQHRlc3QxQDogcHJvcHZhbHVlOyI+PC9kaXY+Cis8ZGl2IGlkPSJlbGVtMSIgc3R5bGU9
IkB0ZXN0MUA6IEBwcm9wdmFsdWUxQDsiPjwvZGl2PgogPC9ib2R5PgogPC9odG1sPgogIiIiCiAg
ICAgICAgIGZha2VfZGlyX3BhdGggPSBzZWxmLmZha2VfZGlyX3BhdGgoJ2hhcm5lc3NhbmRwcm9w
cycpCiAgICAgICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKGZha2VfZGlyX3BhdGgs
IERVTU1ZX0ZJTEVOQU1FLCBOb25lKQotICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVy
YXRlX3Rlc3RfY29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgMSwgdGVzdF9o
dG1sKQorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29udGVudF9w
cm9wZXJ0aWVzX2FuZF92YWx1ZXMoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIGNvbnZl
cnRlci5wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMsIDEsIHRlc3RfaHRtbCkKIAogICAgICAgICBv
YyA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCiAgICAgICAg
IHRyeToKLSAgICAgICAgICAgIGNvbnZlcnRlci5mZWVkKHRlc3RfY29udGVudFsxXSkKKyAgICAg
ICAgICAgIGNvbnZlcnRlci5mZWVkKHRlc3RfY29udGVudFsyXSkKICAgICAgICAgICAgIGNvbnZl
cnRlci5jbG9zZSgpCiAgICAgICAgICAgICBjb252ZXJ0ZWQgPSBjb252ZXJ0ZXIub3V0cHV0KCkK
ICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAg
ICAgICBzZWxmLnZlcmlmeV9jb252ZXJzaW9uX2hhcHBlbmVkKGNvbnZlcnRlZCkKLSAgICAgICAg
c2VsZi52ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhzKGNvbnZlcnRlciwgY29udmVydGVkWzFdLCBm
YWtlX2Rpcl9wYXRoLCAxLCAxKQorICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0
aHMoY29udmVydGVyLCBjb252ZXJ0ZWRbMl0sIGZha2VfZGlyX3BhdGgsIDEsIDEpCiAgICAgICAg
IHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRpZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRb
MF0pCisgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcyhjb252ZXJ0
ZWQsIHRlc3RfY29udGVudFsxXSkKIAogICAgIGRlZiB0ZXN0X2NvbnZlcnRfZm9yX3dlYmtpdF9o
YXJuZXNzX2FuZF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICAiIiIgVGVzdHMgY29udmVydF9m
b3Jfd2Via2l0KCkgdXNpbmcgYSBiYXNpYyBKUyB0ZXN0IHRoYXQgdXNlcyB0ZXN0aGFybmVzcy5q
cyBhbmQgdGVzdGhhcm5lc3MuY3NzIGFuZCBoYXMgNCBwcmVmaXhlZCBwcm9wZXJ0aWVzOiAzIGlu
IGEgc3R5bGUgYmxvY2sgKyAxIGlubGluZSBzdHlsZSAiIiIKQEAgLTE1MSwxNCArMTU1LDE0IEBA
IENPTlRFTlQgT0YgVEVTVAogPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgogPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KIAotI2Jsb2NrMSB7IEB0ZXN0MEA6
IHByb3B2YWx1ZTsgfQotI2Jsb2NrMiB7IEB0ZXN0MUA6IHByb3B2YWx1ZTsgfQotI2Jsb2NrMyB7
IEB0ZXN0MkA6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMSB7IEB0ZXN0MEA6IEBwcm9wdmFsdWUwQDsg
fQorI2Jsb2NrMiB7IEB0ZXN0MUA6IEBwcm9wdmFsdWUxQDsgfQorI2Jsb2NrMyB7IEB0ZXN0MkA6
IEBwcm9wdmFsdWUyQDsgfQogCiA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+Ci08ZGl2IGlkPSJl
bGVtMSIgc3R5bGU9IkB0ZXN0M0A6IHByb3B2YWx1ZTsiPjwvZGl2PgorPGRpdiBpZD0iZWxlbTEi
IHN0eWxlPSJAdGVzdDNAOiBAcHJvcHZhbHVlM0A7Ij48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4K
ICIiIgpAQCAtMTY4LDE2ICsxNzIsMTcgQEAgQ09OVEVOVCBPRiBURVNUCiAgICAgICAgIG9jID0g
T3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKICAgICAgICAgdHJ5
OgotICAgICAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2NvbnRlbnQo
Y29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDIsIHRlc3RfaHRtbCkKLSAgICAgICAgICAg
IGNvbnZlcnRlci5mZWVkKHRlc3RfY29udGVudFsxXSkKKyAgICAgICAgICAgIHRlc3RfY29udGVu
dCA9IHNlbGYuZ2VuZXJhdGVfdGVzdF9jb250ZW50X3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyhjb252
ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnR5X3Zh
bHVlcywgMiwgdGVzdF9odG1sKQorICAgICAgICAgICAgY29udmVydGVyLmZlZWQodGVzdF9jb250
ZW50WzJdKQogICAgICAgICAgICAgY29udmVydGVyLmNsb3NlKCkKICAgICAgICAgICAgIGNvbnZl
cnRlZCA9IGNvbnZlcnRlci5vdXRwdXQoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAg
b2MucmVzdG9yZV9vdXRwdXQoKQogCiAgICAgICAgIHNlbGYudmVyaWZ5X2NvbnZlcnNpb25faGFw
cGVuZWQoY29udmVydGVkKQotICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMo
Y29udmVydGVyLCBjb252ZXJ0ZWRbMV0sIGZha2VfZGlyX3BhdGgsIDEsIDEpCisgICAgICAgIHNl
bGYudmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsyXSwgZmFr
ZV9kaXJfcGF0aCwgMSwgMSkKICAgICAgICAgc2VsZi52ZXJpZnlfcHJlZml4ZWRfcHJvcGVydGll
cyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFswXSkKKyAgICAgICAgc2VsZi52ZXJpZnlfcHJlZml4
ZWRfcHJvcGVydHlfdmFsdWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzFdKQogCiAgICAgZGVm
IHRlc3RfY29udmVydF90ZXN0X2hhcm5lc3NfcGF0aHMoc2VsZik6CiAgICAgICAgICIiIiBUZXN0
cyBjb252ZXJ0X3Rlc3RoYXJuZXNzX3BhdGhzKCkgd2l0aCBhIHRlc3QgdGhhdCB1c2VzIGFsbCB0
aHJlZSB0ZXN0aGFybmVzcyBmaWxlcyAiIiIKQEAgLTIwMSw3ICsyMDYsNyBAQCBDT05URU5UIE9G
IFRFU1QKICAgICAgICAgICAgIG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAgICBzZWxmLnZl
cmlmeV9jb252ZXJzaW9uX2hhcHBlbmVkKGNvbnZlcnRlZCkKLSAgICAgICAgc2VsZi52ZXJpZnlf
dGVzdF9oYXJuZXNzX3BhdGhzKGNvbnZlcnRlciwgY29udmVydGVkWzFdLCBmYWtlX2Rpcl9wYXRo
LCAyLCAxKQorICAgICAgICBzZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVy
LCBjb252ZXJ0ZWRbMl0sIGZha2VfZGlyX3BhdGgsIDIsIDEpCiAKICAgICBkZWYgdGVzdF9jb252
ZXJ0X3ByZWZpeGVkX3Byb3BlcnRpZXMoc2VsZik6CiAgICAgICAgICIiIiBUZXN0cyBjb252ZXJ0
X3ByZWZpeGVkX3Byb3BlcnRpZXMoKSBmaWxlIHRoYXQgaGFzIDIwIHByb3BlcnRpZXMgcmVxdWly
aW5nIHRoZSAtd2Via2l0LSBwcmVmaXg6CkBAIC0yMTksNjAgKzIyNCw2MiBAQCBDT05URU5UIE9G
IFRFU1QKIH0KIAogLmJsb2NrMiB7Ci0gICAgQHRlc3QwQDogcHJvcHZhbHVlOworICAgIEB0ZXN0
MEA6IEBwcm9wdmFsdWUwQDsKIH0KIAotLmJsb2NrM3tAdGVzdDFAOiBwcm9wdmFsdWU7fQorLmJs
b2NrM3tAdGVzdDFAOiBAcHJvcHZhbHVlMUA7fQogCi0uYmxvY2s0IHsgQHRlc3QyQDpwcm9wdmFs
dWU7IH0KKy5ibG9jazQgeyBAdGVzdDJAOkBwcm9wdmFsdWUyQDsgfQogCi0uYmxvY2s1eyBAdGVz
dDNAIDpwcm9wdmFsdWU7IH0KKy5ibG9jazV7IEB0ZXN0M0AgOkBwcm9wdmFsdWUzQDsgfQogCi0j
YmxvY2s2IHsgICAgQHRlc3Q0QCAgIDogICBwcm9wdmFsdWU7ICB9CisjYmxvY2s2IHsgICAgQHRl
c3Q0QCAgIDogICBAcHJvcHZhbHVlNEAgICA7ICB9CiAKICNibG9jazcKIHsKLSAgICBAdGVzdDVA
OiBwcm9wdmFsdWU7CisgICAgQHRlc3Q1QDogQHByb3B2YWx1ZTVAOwogfQogCi0jYmxvY2s4IHsg
QHRlc3Q2QDogcHJvcHZhbHVlOyB9CisjYmxvY2s4IHsgQHRlc3Q2QDogQHByb3B2YWx1ZTZAIH0K
IAogI2Jsb2NrOTpwc2V1ZG8KIHsKIAotICAgIEB0ZXN0N0A6IHByb3B2YWx1ZTsKKyAgICBAdGVz
dDdAOiBAcHJvcHZhbHVlN0A7CiAgICAgQHRlc3Q4QDogIHByb3B2YWx1ZSBwcm9wdmFsdWUgcHJv
cHZhbHVlOzsKKyAgICBwcm9wbmFtZToKK0Bwcm9wdmFsdWU4QDsKIH0KIAogXV0+PC9zdHlsZT4K
IDwvaGVhZD4KIDxib2R5PgotICAgIDxkaXYgaWQ9ImVsZW0xIiBzdHlsZT0iQHRlc3Q5QDogcHJv
cHZhbHVlOyI+PC9kaXY+Ci0gICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJwcm9wbmFtZTogcHJv
cHZhbHVlOyBAdGVzdDEwQCA6IHByb3B2YWx1ZTsgcHJvcG5hbWU6cHJvcHZhbHVlOyI+PC9kaXY+
Ci0gICAgPGRpdiBpZD0iZWxlbTIiIHN0eWxlPSJAdGVzdDExQDogcHJvcHZhbHVlOyBAdGVzdDEy
QCA6IHByb3B2YWx1ZTsgQHRlc3QxM0AgICA6cHJvcHZhbHVlOyI+PC9kaXY+Ci0gICAgPGRpdiBp
ZD0iZWxlbTMiIHN0eWxlPSJAdGVzdDE0QDpwcm9wdmFsdWUiPjwvZGl2PgorICAgIDxkaXYgaWQ9
ImVsZW0xIiBzdHlsZT0iQHRlc3Q5QDogQHByb3B2YWx1ZTlAOyI+PC9kaXY+CisgICAgPGRpdiBp
ZD0iZWxlbTIiIHN0eWxlPSJwcm9wbmFtZTogcHJvcHZhbHVlOyBAdGVzdDEwQCA6IEBwcm9wdmFs
dWUxMEA7IHByb3BuYW1lOnByb3B2YWx1ZTsiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImVsZW0yIiBz
dHlsZT0iQHRlc3QxMUA6IEBwcm9wdmFsdWUxMUA7IEB0ZXN0MTJAIDogQHByb3B2YWx1ZTEyQDsg
QHRlc3QxM0AgICA6ICAgQHByb3B2YWx1ZTEzQCAgIDsiPjwvZGl2PgorICAgIDxkaXYgaWQ9ImVs
ZW0zIiBzdHlsZT0iQHRlc3QxNEA6QHByb3B2YWx1ZTE0QCI+PC9kaXY+CiA8L2JvZHk+CiA8c3R5
bGUgdHlwZT0idGV4dC9jc3MiPjwhW0NEQVRBWwogCi0uYmxvY2sxMHsgQHRlc3QxNUA6IHByb3B2
YWx1ZTsgfQotLmJsb2NrMTF7IEB0ZXN0MTZAOiBwcm9wdmFsdWU7IH0KLS5ibG9jazEyeyBAdGVz
dDE3QDogcHJvcHZhbHVlOyB9CisuYmxvY2sxMHsgQHRlc3QxNUA6IEBwcm9wdmFsdWUxNUA7IH0K
Ky5ibG9jazExeyBAdGVzdDE2QDogQHByb3B2YWx1ZTE2QDsgfQorLmJsb2NrMTJ7IEB0ZXN0MTdA
OiBAcHJvcHZhbHVlMTdAOyB9CiAjYmxvY2sxMzpwc2V1ZG8KIHsKLSAgICBAdGVzdDE4QDogcHJv
cHZhbHVlOwotICAgIEB0ZXN0MTlAOiBwcm9wdmFsdWU7CisgICAgQHRlc3QxOEA6IEBwcm9wdmFs
dWUxOEA7CisgICAgQHRlc3QxOUA6IEBwcm9wdmFsdWUxOUA7CiB9CiAKIF1dPjwvc3R5bGU+CiA8
L2h0bWw+CiAiIiIKICAgICAgICAgY29udmVydGVyID0gX1czQ1Rlc3RDb252ZXJ0ZXIoRFVNTVlf
UEFUSCwgRFVNTVlfRklMRU5BTUUsIE5vbmUpCi0gICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYu
Z2VuZXJhdGVfdGVzdF9jb250ZW50KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyMCwg
dGVzdF9odG1sKQorICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29u
dGVudF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMs
IGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMsIDIwLCB0ZXN0X2h0bWwpCiAKICAg
ICAgICAgb2MgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQog
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMV0p
CisgICAgICAgICAgICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMl0pCiAgICAgICAgICAg
ICBjb252ZXJ0ZXIuY2xvc2UoKQogICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLm91
dHB1dCgpCiAgICAgICAgIGZpbmFsbHk6CkBAIC0yODAsMTIgKzI4NywxMyBAQCBDT05URU5UIE9G
IFRFU1QKIAogICAgICAgICBzZWxmLnZlcmlmeV9jb252ZXJzaW9uX2hhcHBlbmVkKGNvbnZlcnRl
ZCkKICAgICAgICAgc2VsZi52ZXJpZnlfcHJlZml4ZWRfcHJvcGVydGllcyhjb252ZXJ0ZWQsIHRl
c3RfY29udGVudFswXSkKKyAgICAgICAgc2VsZi52ZXJpZnlfcHJlZml4ZWRfcHJvcGVydHlfdmFs
dWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50WzFdKQogCiAgICAgZGVmIHZlcmlmeV9jb252ZXJz
aW9uX2hhcHBlbmVkKHNlbGYsIGNvbnZlcnRlZCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShj
b252ZXJ0ZWQsICJjb252ZXJzaW9uIGRpZG4ndCBoYXBwZW4iKQogCiAgICAgZGVmIHZlcmlmeV9u
b19jb252ZXJzaW9uX2hhcHBlbmVkKHNlbGYsIGNvbnZlcnRlZCwgb3JpZ2luYWwpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNvbnZlcnRlZFsxXSwgb3JpZ2luYWwsICd0ZXN0IHNob3VsZCBu
b3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29udmVy
dGVkWzJdLCBvcmlnaW5hbCwgJ3Rlc3Qgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29udmVydGVkJykK
IAogICAgIGRlZiB2ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhzKHNlbGYsIGNvbnZlcnRlciwgY29u
dmVydGVkLCB0ZXN0X3BhdGgsIG51bV9zcmNfcGF0aHMsIG51bV9ocmVmX3BhdGhzKToKICAgICAg
ICAgaWYgaXNpbnN0YW5jZShjb252ZXJ0ZWQsIGJhc2VzdHJpbmcpOgpAQCAtMzA2LDI0ICszMTQs
MzQgQEAgQ09OVEVOVCBPRiBURVNUCiAgICAgZGVmIHZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0aWVz
KHNlbGYsIGNvbnZlcnRlZCwgdGVzdF9wcm9wZXJ0aWVzKToKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChsZW4oc2V0KGNvbnZlcnRlZFswXSkpLCBsZW4oc2V0KHRlc3RfcHJvcGVydGllcykpLCAn
SW5jb3JyZWN0IG51bWJlciBvZiBwcm9wZXJ0aWVzIGNvbnZlcnRlZCcpCiAgICAgICAgIGZvciB0
ZXN0X3Byb3AgaW4gdGVzdF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCh0ZXN0X3Byb3AgaW4gY29udmVydGVkWzFdKSwgJ1Byb3BlcnR5ICcgKyB0ZXN0X3Byb3AgKyAn
IG5vdCBmb3VuZCBpbiBjb252ZXJ0ZWQgZG9jJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsyXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9wICsg
JyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCiAKLSAgICBkZWYgZ2VuZXJhdGVfdGVzdF9j
b250ZW50KHNlbGYsIGZ1bGxfcHJvcGVydHlfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllcywgaHRt
bCk6Ci0gICAgICAgICIiIkluc2VydHMgcHJvcGVydGllcyByZXF1aXJpbmcgYSAtd2Via2l0LSBw
cmVmaXggaW50byB0aGUgY29udGVudCwgcmVwbGFjaW5nIFwnQHRlc3RYWEBcJyB3aXRoIGEgcHJv
cGVydHkuIiIiCi0gICAgICAgIHRlc3RfcHJvcGVydGllcyA9IFtdCisgICAgZGVmIHZlcmlmeV9w
cmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMoc2VsZiwgY29udmVydGVkLCB0ZXN0X3Byb3BlcnR5X3Zh
bHVlcyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNldChjb252ZXJ0ZWRbMV0pKSwg
bGVuKHNldCh0ZXN0X3Byb3BlcnR5X3ZhbHVlcykpLCAnSW5jb3JyZWN0IG51bWJlciBvZiBwcm9w
ZXJ0eSB2YWx1ZXMgY29udmVydGVkICcgKyBzdHIobGVuKHNldChjb252ZXJ0ZWRbMV0pKSkgKyAn
IHZzICcgKyBzdHIobGVuKHNldCh0ZXN0X3Byb3BlcnR5X3ZhbHVlcykpKSkKKyAgICAgICAgZm9y
IHRlc3RfdmFsdWUgaW4gdGVzdF9wcm9wZXJ0eV92YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFz
c2VydFRydWUoKHRlc3RfdmFsdWUgaW4gY29udmVydGVkWzJdKSwgJ1Byb3BlcnR5IHZhbHVlICcg
KyB0ZXN0X3ZhbHVlICsgJyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisKKyAgICBkZWYg
Z2VuZXJhdGVfdGVzdF9jb250ZW50X3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyhzZWxmLCBmdWxsX3By
b3BlcnR5X2xpc3QsIGZ1bGx5X3Byb3BlcnR5X3ZhbHVlc19saXN0LCBudW1fdGVzdF9wcm9wZXJ0
aWVzX2FuZF92YWx1ZXMsIGh0bWwpOgorICAgICAgICAiIiJJbnNlcnRzIHByb3BlcnRpZXMgcmVx
dWlyaW5nIGEgLXdlYmtpdC0gcHJlZml4IGludG8gdGhlIGNvbnRlbnQsIHJlcGxhY2luZyBcJ0B0
ZXN0WFhAXCcgd2l0aCBhIHByb3BlcnR5IGFuZCBcJ0Bwcm9wdmFsdWVYWEBcJyB3aXRoIGEgdmFs
dWUuIiIiCisgICAgICAgIHRlc3RfY29udGVudF9wcm9wZXJ0aWVzID0gc2VsZi5nZW5lcmF0ZV90
ZXN0X2NvbnRlbnQoZnVsbF9wcm9wZXJ0eV9saXN0LCBudW1fdGVzdF9wcm9wZXJ0aWVzX2FuZF92
YWx1ZXMsICd0ZXN0JywgaHRtbCkKKyAgICAgICAgdGVzdF9jb250ZW50X3Byb3BlcnR5X3ZhbHVl
cyA9IHNlbGYuZ2VuZXJhdGVfdGVzdF9jb250ZW50KGZ1bGx5X3Byb3BlcnR5X3ZhbHVlc19saXN0
LCBudW1fdGVzdF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMsICdwcm9wdmFsdWUnLCB0ZXN0X2NvbnRl
bnRfcHJvcGVydGllc1sxXSkKKyAgICAgICAgcmV0dXJuICh0ZXN0X2NvbnRlbnRfcHJvcGVydGll
c1swXSwgdGVzdF9jb250ZW50X3Byb3BlcnR5X3ZhbHVlc1swXSwgdGVzdF9jb250ZW50X3Byb3Bl
cnR5X3ZhbHVlc1sxXSkKKworICAgIGRlZiBnZW5lcmF0ZV90ZXN0X2NvbnRlbnQoc2VsZiwgZnVs
bF9saXN0LCBudW1fdGVzdCwgc3VmZml4LCBodG1sKToKKyAgICAgICAgdGVzdF9saXN0ID0gW10K
ICAgICAgICAgY291bnQgPSAwCi0gICAgICAgIHdoaWxlIGNvdW50IDwgbnVtX3Rlc3RfcHJvcGVy
dGllczoKLSAgICAgICAgICAgIHRlc3RfcHJvcGVydGllcy5hcHBlbmQoZnVsbF9wcm9wZXJ0eV9s
aXN0W2NvdW50XSkKKyAgICAgICAgd2hpbGUgY291bnQgPCBudW1fdGVzdDoKKyAgICAgICAgICAg
IHRlc3RfbGlzdC5hcHBlbmQoZnVsbF9saXN0W2NvdW50XSkKICAgICAgICAgICAgIGNvdW50ICs9
IDEKIAotICAgICAgICAjIFJlcGxhY2UgdGhlIHRva2VucyBpbiB0aGUgdGVzdGh0bWwgd2l0aCB0
aGUgdGVzdCBwcm9wZXJ0aWVzLiBXYWxrIGJhY2t3YXJkCi0gICAgICAgICMgdGhyb3VnaCB0aGUg
bGlzdCB0byByZXBsYWNlIHRoZSBkb3VibGUtZGlnaXQgdG9rZW5zIGZpcnN0Ci0gICAgICAgIGlu
ZGV4ID0gbGVuKHRlc3RfcHJvcGVydGllcykgLSAxCisgICAgICAgICMgUmVwbGFjZSB0aGUgdG9r
ZW5zIGluIHRoZSB0ZXN0aHRtbCB3aXRoIHRoZSB0ZXN0IHByb3BlcnRpZXMgb3IgdmFsdWVzLgor
ICAgICAgICAjIFdhbGsgYmFja3dhcmQgdGhyb3VnaCB0aGUgbGlzdCB0byByZXBsYWNlIHRoZSBk
b3VibGUtZGlnaXQgdG9rZW5zIGZpcnN0LgorICAgICAgICBpbmRleCA9IGxlbih0ZXN0X2xpc3Qp
IC0gMQogICAgICAgICB3aGlsZSBpbmRleCA+PSAwOgogICAgICAgICAgICAgIyBVc2UgdGhlIHVu
cHJlZml4ZWQgdmVyc2lvbgotICAgICAgICAgICAgdGVzdF9wcm9wID0gdGVzdF9wcm9wZXJ0aWVz
W2luZGV4XS5yZXBsYWNlKCctd2Via2l0LScsICcnKQorICAgICAgICAgICAgdGVzdCA9IHRlc3Rf
bGlzdFtpbmRleF0ucmVwbGFjZSgnLXdlYmtpdC0nLCAnJykKICAgICAgICAgICAgICMgUmVwbGFj
ZSB0aGUgdG9rZW4KLSAgICAgICAgICAgIGh0bWwgPSBodG1sLnJlcGxhY2UoJ0B0ZXN0JyArIHN0
cihpbmRleCkgKyAnQCcsIHRlc3RfcHJvcCkKKyAgICAgICAgICAgIGh0bWwgPSBodG1sLnJlcGxh
Y2UoJ0AnICsgc3VmZml4ICsgc3RyKGluZGV4KSArICdAJywgdGVzdCkKICAgICAgICAgICAgIGlu
ZGV4IC09IDEKIAotICAgICAgICByZXR1cm4gKHRlc3RfcHJvcGVydGllcywgaHRtbCkKKyAgICAg
ICAgcmV0dXJuICh0ZXN0X2xpc3QsIGh0bWwpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2Mv
dGVzdF9pbXBvcnRlci5weQppbmRleCA3NTFlOGIzNTllMTg4MjJjMTQyMGViNjk3ZGVlMDFkY2Rj
MWRjZmIzLi4wMDE3Nzc5ODIxMTY5MzdmMDllOGJlMTM4ZWE1NWRlNmJhNjFlNDJhIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0ZXIucHkKQEAgLTIzOSw2ICsyMzks
NyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgdG90YWxfaW1wb3J0ZWRf
cmVmdGVzdHMgPSAwCiAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgPSAwCiAgICAgICAg
IHRvdGFsX3ByZWZpeGVkX3Byb3BlcnRpZXMgPSB7fQorICAgICAgICB0b3RhbF9wcmVmaXhlZF9w
cm9wZXJ0eV92YWx1ZXMgPSB7fQogCiAgICAgICAgIGZhaWxlZF9jb252ZXJzaW9uX2ZpbGVzID0g
W10KIApAQCAtMjQ4LDYgKzI0OSw3IEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogICAg
ICAgICAgICAgdG90YWxfaW1wb3J0ZWRfanN0ZXN0cyArPSBkaXJfdG9fY29weVsnanN0ZXN0cydd
CiAKICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BlcnRpZXMgPSBbXQorICAgICAgICAgICAgcHJl
Zml4ZWRfcHJvcGVydHlfdmFsdWVzID0gW10KIAogICAgICAgICAgICAgaWYgbm90IGRpcl90b19j
b3B5Wydjb3B5X2xpc3QnXToKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMzEyLDggKzMx
NCwxNSBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0aWVzW3ByZWZpeGVkX3Byb3BlcnR5XSArPSAx
CiAKICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BlcnRpZXMuZXh0ZW5kKHNl
dChjb252ZXJ0ZWRfZmlsZVswXSkgLSBzZXQocHJlZml4ZWRfcHJvcGVydGllcykpCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZvciBwcmVmaXhlZF92YWx1ZSBpbiBjb252ZXJ0ZWRfZmlsZVsx
XToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0eV92
YWx1ZXMuc2V0ZGVmYXVsdChwcmVmaXhlZF92YWx1ZSwgMCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXNbcHJlZml4ZWRfdmFsdWVdICs9
IDEKKworICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzLmV4
dGVuZChzZXQoY29udmVydGVkX2ZpbGVbMV0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnR5X3ZhbHVl
cykpCisKICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUgPSBvcGVuKG5ld19maWxlcGF0
aCwgJ3diJykKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUud3JpdGUoY29udmVydGVk
X2ZpbGVbMV0pCisgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKGNvbnZlcnRl
ZF9maWxlWzJdKQogICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS5jbG9zZSgpCiAgICAg
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKG9y
aWdfZmlsZXBhdGgsIG5ld19maWxlcGF0aCkKQEAgLTMyMSw3ICszMzAsNyBAQCBjbGFzcyBUZXN0
SW1wb3J0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBjb3BpZWRfZmlsZXMuYXBwZW5kKG5l
d19maWxlcGF0aC5yZXBsYWNlKHNlbGYuX3dlYmtpdF9yb290LCAnJykpCiAKICAgICAgICAgICAg
IHNlbGYucmVtb3ZlX2RlbGV0ZWRfZmlsZXMobmV3X3BhdGgsIGNvcGllZF9maWxlcykKLSAgICAg
ICAgICAgIHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdfcGF0aCwgY29waWVkX2ZpbGVzLCBwcmVm
aXhlZF9wcm9wZXJ0aWVzKQorICAgICAgICAgICAgc2VsZi53cml0ZV9pbXBvcnRfbG9nKG5ld19w
YXRoLCBjb3BpZWRfZmlsZXMsIHByZWZpeGVkX3Byb3BlcnRpZXMsIHByZWZpeGVkX3Byb3BlcnR5
X3ZhbHVlcykKIAogICAgICAgICBfbG9nLmluZm8oJ0ltcG9ydCBjb21wbGV0ZScpCiAKQEAgLTMz
Niw2ICszNDUsMTEgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAKICAgICAgICAgZm9y
IHByZWZpeGVkX3Byb3BlcnR5IGluIHNvcnRlZCh0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0aWVzLCBr
ZXk9bGFtYmRhIHA6IHRvdGFsX3ByZWZpeGVkX3Byb3BlcnRpZXNbcF0pOgogICAgICAgICAgICAg
X2xvZy5pbmZvKCcgICVzOiAlcycsIHByZWZpeGVkX3Byb3BlcnR5LCB0b3RhbF9wcmVmaXhlZF9w
cm9wZXJ0aWVzW3ByZWZpeGVkX3Byb3BlcnR5XSkKKyAgICAgICAgX2xvZy5pbmZvKCcnKQorICAg
ICAgICBfbG9nLmluZm8oJ1Byb3BlcnR5IHZhbHVlcyBuZWVkaW5nIHByZWZpeGVzIChieSBjb3Vu
dCk6JykKKworICAgICAgICBmb3IgcHJlZml4ZWRfdmFsdWUgaW4gc29ydGVkKHRvdGFsX3ByZWZp
eGVkX3Byb3BlcnR5X3ZhbHVlcywga2V5PWxhbWJkYSBwOiB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0
eV92YWx1ZXNbcF0pOgorICAgICAgICAgICAgX2xvZy5pbmZvKCcgICVzOiAlcycsIHByZWZpeGVk
X3ZhbHVlLCB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXNbcHJlZml4ZWRfdmFsdWVdKQog
CiAgICAgZGVmIHJlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYsIGltcG9ydF9kaXJlY3RvcnksIG5l
d19maWxlX2xpc3QpOgogICAgICAgICAiIiIgUmVhZHMgYW4gaW1wb3J0IGxvZyBpbiB8aW1wb3J0
X2RpcmVjdG9yeXwsIGNvbXBhcmVzIGl0IHRvIHRoZSB8bmV3X2ZpbGVfbGlzdHwsIGFuZCByZW1v
dmVzIGZpbGVzIG5vdCBpbiB0aGUgbmV3IGxpc3QuIiIiCkBAIC0zNjEsNyArMzc1LDcgQEAgY2xh
c3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAKICAgICAgICAgaW1wb3J0X2xvZy5jbG9zZSgpCiAK
LSAgICBkZWYgd3JpdGVfaW1wb3J0X2xvZyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBmaWxlX2xp
c3QsIHByb3BfbGlzdCk6CisgICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1wb3J0X2Rp
cmVjdG9yeSwgZmlsZV9saXN0LCBwcm9wX2xpc3QsIHByb3BlcnR5X3ZhbHVlc19saXN0KToKICAg
ICAgICAgIiIiIFdyaXRlcyBhIHczYy1pbXBvcnQubG9nIGZpbGUgaW4gZWFjaCBkaXJlY3Rvcnkg
d2l0aCBpbXBvcnRlZCBmaWxlcy4gIiIiCiAKICAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRp
bWUubm93KCkKQEAgLTM4NCw2ICszOTgsMTIgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgaW1wb3J0X2xvZy53cml0ZShwcm9wICsgJ1xuJykKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ05vbmVcbicpCisgICAgICAgIGlt
cG9ydF9sb2cud3JpdGUoJ1Byb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OlxuJykKKyAgICAgICAgaWYgcHJvcGVydHlfdmFsdWVzX2xpc3Q6CisgICAgICAgICAgICBmb3Ig
dmFsdWUgaW4gcHJvcGVydHlfdmFsdWVzX2xpc3Q6CisgICAgICAgICAgICAgICAgaW1wb3J0X2xv
Zy53cml0ZSh2YWx1ZSArICdcbicpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpbXBvcnRf
bG9nLndyaXRlKCdOb25lXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCctLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1cbicpCiAgICAgICAgIGltcG9ydF9sb2cud3JpdGUoJ0xpc3Qgb2YgZmlsZXM6XG4nKQog
ICAgICAgICBmb3IgaXRlbSBpbiBmaWxlX2xpc3Q6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239658</attachid>
            <date>2014-10-10 16:01:01 -0700</date>
            <delta_ts>2014-10-14 01:08:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137600-20141011010104.patch</filename>
            <type>text/plain</type>
            <size>23858</size>
            <attacher name="Manuel Rego Casasnovas">rego</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NTAyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmNhYmU2Yjk3ZmQzZjQ3NTE0ZGI1NjJkODY2NjYyZmE5
YzVlOGM3ZC4uNzE1MmUxYWJlYmI4YjBmZjc2ODYxNTE3ZTBmNGFmYWM4ZDFkN2Q5NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDE0LTEwLTEwICBNYW51ZWwgUmVnbyBDYXNhc25vdmFzICA8cmVnb0BpZ2FsaWEuY29t
PgorCisgICAgICAgIGltcG9ydC13M2MtdGVzdHMgZG9lc24ndCBwcmVmaXggcHJvcGVydHkgdmFs
dWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc2
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHByb3BlcnR5IHZhbHVlcyBhcmUgcHJlZml4ZWQgaW4gV2ViS2l0LiBNb2RpZmllZCB0aGUgVzND
IGltcG9ydAorICAgICAgICBzY3JpcHQgaW4gb3JkZXIgdG8gcHJlZml4IHByb3BlcnR5IHZhbHVl
cyBhbmQgbm90IG9ubHkgcHJvcGVydGllcy4KKyAgICAgICAgVGhlIHBhdGNoIHJlLXVzZXMgbW9z
dCBvZiB0aGUgYWxyZWFkeSBleGlzdGVudCBsb2dpYyB0byBwcmVmaXgKKyAgICAgICAgcHJvcGVy
dGllcy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5
OiBSZWFkIHByZWZpeGVkIHByb3BlcnR5IHZhbHVlcworICAgICAgICBmcm9tIENTU1ZhbHVlS2V5
d29yZHMuaW4gYW5kIGFkYXB0IGNvbnZlcnRlciB0byBtb2RpZnkgYm90aCBwcm9wZXJ0aWVzCisg
ICAgICAgIGFuZCBwcm9wZXJ0eSB2YWx1ZXMuCisgICAgICAgIChjb252ZXJ0X2Zvcl93ZWJraXQp
OgorICAgICAgICAoX1czQ1Rlc3RDb252ZXJ0ZXIuX19pbml0X18pOgorICAgICAgICAoX1czQ1Rl
c3RDb252ZXJ0ZXIub3V0cHV0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLnJlYWRfd2Vi
a2l0X3ByZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVy
dGVyKToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVydGVyLmFkZF93ZWJraXRfcHJlZml4X3RvX3Vu
cHJlZml4ZWRfcHJvcGVydGllc19hbmRfdmFsdWVzKToKKyAgICAgICAgKF9XM0NUZXN0Q29udmVy
dGVyLmFkZF93ZWJraXRfcHJlZml4X2ZvbGxvd2luZ19yZWdleCk6CisgICAgICAgIChfVzNDVGVz
dENvbnZlcnRlci5jb252ZXJ0X3JlZmVyZW5jZV9yZWxwYXRocyk6CisgICAgICAgIChfVzNDVGVz
dENvbnZlcnRlci5jb252ZXJ0X3N0eWxlX2RhdGEpOgorICAgICAgICAoX1czQ1Rlc3RDb252ZXJ0
ZXIuY29udmVydF9hdHRyaWJ1dGVzX2lmX25lZWRlZCk6CisgICAgICAgIChfVzNDVGVzdENvbnZl
cnRlci5hZGRfd2Via2l0X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3BlcnRpZXMpOiBEZWxldGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyX3VuaXR0ZXN0
LnB5OiBVcGRhdGVkIHVuaXQgdGVzdCB0bworICAgICAgICBpbmNsdWRlIGNoZWNrcyBmb3IgcHJv
cGVydHkgdmFsdWVzIHRvby4KKyAgICAgICAgKFczQ1Rlc3RDb252ZXJ0ZXJUZXN0LnRlc3RfcmVh
ZF9wcmVmaXhlZF9wcm9wZXJ0eV9saXN0KToKKyAgICAgICAgKHZlcmlmeV9ub19jb252ZXJzaW9u
X2hhcHBlbmVkKToKKyAgICAgICAgKHZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0aWVzKToKKyAgICAg
ICAgKHZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMpOgorICAgICAgICAoZ2VuZXJhdGVf
dGVzdF9jb250ZW50X3Byb3BlcnRpZXNfYW5kX3ZhbHVlcyk6CisgICAgICAgIChnZW5lcmF0ZV90
ZXN0X2NvbnRlbnQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfaW1wb3J0
ZXIucHk6IE1vZGlmaWVkIGltcG9ydGVyIHRvIG1hbmFnZQorICAgICAgICBwcmVmaXhlZCBwcm9w
ZXJ0eSB2YWx1ZXMgYW5kIGluZm9ybSBhYm91dCB0aGVtLgorICAgICAgICAoVGVzdEltcG9ydGVy
LmltcG9ydF90ZXN0cyk6CisgICAgICAgIChUZXN0SW1wb3J0ZXIud3JpdGVfaW1wb3J0X2xvZyk6
CisKIDIwMTQtMTAtMDggIEpha2UgTmllbHNlbiAgPGphY29iX25pZWxzZW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFN0eWxlUXVldWUgc2hvdWxkIHRocm93IGEgUGF0Y2hJc05vdFZhbGlkIGV4Y2Vw
dGlvbiB0byBhY2hpZXZlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90
ZXN0X2NvbnZlcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVy
dGVyLnB5CmluZGV4IDVjY2JkNmYyZjZmNTE3MzJjMGU1ZGE4MzM4NjVmNzQ3MjBiZjRiYWEuLmQ0
NjM1OTZhN2RjYjFlZTBjNTIwMzI1ZWNlMDExMjRiMTViODIzNTQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdzNjL3Rlc3RfY29udmVydGVyLnB5CkBAIC00NCw3ICs0NCw3IEBAIGRlZiBj
b252ZXJ0X2Zvcl93ZWJraXQobmV3X3BhdGgsIGZpbGVuYW1lLCByZWZlcmVuY2Vfc3VwcG9ydF9p
bmZvLCBob3N0PUhvc3QoKSk6CiAgICAgY29udGVudHMgPSBob3N0LmZpbGVzeXN0ZW0ucmVhZF9i
aW5hcnlfZmlsZShmaWxlbmFtZSkKICAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihu
ZXdfcGF0aCwgZmlsZW5hbWUsIHJlZmVyZW5jZV9zdXBwb3J0X2luZm8sIGhvc3QpCiAgICAgaWYg
ZmlsZW5hbWUuZW5kc3dpdGgoJy5jc3MnKToKLSAgICAgICAgcmV0dXJuIGNvbnZlcnRlci5hZGRf
d2Via2l0X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3BlcnRpZXMoY29udGVudHMpCisgICAgICAg
IHJldHVybiBjb252ZXJ0ZXIuYWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0
aWVzX2FuZF92YWx1ZXMoY29udGVudHMpCiAgICAgZWxzZToKICAgICAgICAgY29udmVydGVyLmZl
ZWQoY29udGVudHMpCiAgICAgICAgIGNvbnZlcnRlci5jbG9zZSgpCkBAIC02MSw2ICs2MSw3IEBA
IGNsYXNzIF9XM0NUZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogCiAgICAgICAgIHNlbGYuY29u
dmVydGVkX2RhdGEgPSBbXQogICAgICAgICBzZWxmLmNvbnZlcnRlZF9wcm9wZXJ0aWVzID0gW10K
KyAgICAgICAgc2VsZi5jb252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzID0gW10KICAgICAgICAgc2Vs
Zi5pbl9zdHlsZV90YWcgPSBGYWxzZQogICAgICAgICBzZWxmLnN0eWxlX2RhdGEgPSBbXQogICAg
ICAgICBzZWxmLmZpbGVuYW1lID0gZmlsZW5hbWUKQEAgLTcyLDI1ICs3MywzMCBAQCBjbGFzcyBf
VzNDVGVzdENvbnZlcnRlcihIVE1MUGFyc2VyKToKIAogICAgICAgICAjIFRoZXNlIHNldHRpbmdz
IG1pZ2h0IHZhcnkgYmV0d2VlbiBXZWJLaXQgYW5kIEJsaW5rCiAgICAgICAgIHNlbGYuX2Nzc19w
cm9wZXJ0eV9maWxlID0gc2VsZi5wYXRoX2Zyb21fd2Via2l0X3Jvb3QoJ1NvdXJjZScsICdXZWJD
b3JlJywgJ2NzcycsICdDU1NQcm9wZXJ0eU5hbWVzLmluJykKKyAgICAgICAgc2VsZi5fY3NzX3By
b3BlcnR5X3ZhbHVlX2ZpbGUgPSBzZWxmLnBhdGhfZnJvbV93ZWJraXRfcm9vdCgnU291cmNlJywg
J1dlYkNvcmUnLCAnY3NzJywgJ0NTU1ZhbHVlS2V5d29yZHMuaW4nKQogICAgICAgICBzZWxmLl9j
c3NfcHJvcGVydHlfc3BsaXRfc3RyaW5nID0gJz0nCiAKICAgICAgICAgc2VsZi50ZXN0X2hhcm5l
c3NfcmUgPSByZS5jb21waWxlKCcvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzJykKIAotICAgICAgICBz
ZWxmLnByZWZpeGVkX3Byb3BlcnRpZXMgPSBzZWxmLnJlYWRfd2Via2l0X3ByZWZpeGVkX2Nzc19w
cm9wZXJ0eV9saXN0KCkKKyAgICAgICAgc2VsZi5wcmVmaXhlZF9wcm9wZXJ0aWVzID0gc2VsZi5y
ZWFkX3dlYmtpdF9wcmVmaXhlZF9jc3NfcHJvcGVydHlfbGlzdChzZWxmLl9jc3NfcHJvcGVydHlf
ZmlsZSkKICAgICAgICAgcHJvcF9yZWdleCA9ICcoW1xze118XikoJyArICJ8Ii5qb2luKHByb3Au
cmVwbGFjZSgnLXdlYmtpdC0nLCAnJykgZm9yIHByb3AgaW4gc2VsZi5wcmVmaXhlZF9wcm9wZXJ0
aWVzKSArICcpKFxzKzp8OiknCiAgICAgICAgIHNlbGYucHJvcF9yZSA9IHJlLmNvbXBpbGUocHJv
cF9yZWdleCkKIAorICAgICAgICBzZWxmLnByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcyA9IHNlbGYu
cmVhZF93ZWJraXRfcHJlZml4ZWRfY3NzX3Byb3BlcnR5X2xpc3Qoc2VsZi5fY3NzX3Byb3BlcnR5
X3ZhbHVlX2ZpbGUpCisgICAgICAgIHByb3BfdmFsdWVfcmVnZXggPSAnKDpccyp8XlxzKikoJyAr
ICJ8Ii5qb2luKHZhbHVlLnJlcGxhY2UoJy13ZWJraXQtJywgJycpIGZvciB2YWx1ZSBpbiBzZWxm
LnByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcykgKyAnKShccyo7fFxzKn18XHMqJCknCisgICAgICAg
IHNlbGYucHJvcF92YWx1ZV9yZSA9IHJlLmNvbXBpbGUocHJvcF92YWx1ZV9yZWdleCkKKwogICAg
IGRlZiBvdXRwdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5jb252ZXJ0ZWRfcHJvcGVy
dGllcywgJycuam9pbihzZWxmLmNvbnZlcnRlZF9kYXRhKSkKKyAgICAgICAgcmV0dXJuIChzZWxm
LmNvbnZlcnRlZF9wcm9wZXJ0aWVzLCBzZWxmLmNvbnZlcnRlZF9wcm9wZXJ0eV92YWx1ZXMsICcn
LmpvaW4oc2VsZi5jb252ZXJ0ZWRfZGF0YSkpCiAKICAgICBkZWYgcGF0aF9mcm9tX3dlYmtpdF9y
b290KHNlbGYsICpjb21wcyk6CiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmFic3Bh
dGgoc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9yb290LCAqY29tcHMpKQogCi0g
ICAgZGVmIHJlYWRfd2Via2l0X3ByZWZpeGVkX2Nzc19wcm9wZXJ0eV9saXN0KHNlbGYpOgorICAg
IGRlZiByZWFkX3dlYmtpdF9wcmVmaXhlZF9jc3NfcHJvcGVydHlfbGlzdChzZWxmLCBmaWxlX25h
bWUpOgorICAgICAgICBjb250ZW50cyA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUo
ZmlsZV9uYW1lKQogICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KICAgICAgICAgdW5w
cmVmaXhlZF9wcm9wZXJ0aWVzID0gc2V0KCkKIAotICAgICAgICBjb250ZW50cyA9IHNlbGYuX2Zp
bGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc2VsZi5fY3NzX3Byb3BlcnR5X2ZpbGUpCiAgICAgICAg
IGZvciBsaW5lIGluIGNvbnRlbnRzLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgIGlmIHJlLm1h
dGNoKCdeKCN8Ly8pJywgbGluZSk6CiAgICAgICAgICAgICAgICAgIyBza2lwIGNvbW1lbnRzIGFu
ZCBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcwpAQCAtMTA3LDI1ICsxMTMsMzEgQEAgY2xhc3MgX1cz
Q1Rlc3RDb252ZXJ0ZXIoSFRNTFBhcnNlcik6CiAgICAgICAgICMgSWdub3JlIGFueSBwcmVmaXhl
ZCBwcm9wZXJ0aWVzIGZvciB3aGljaCBhbiB1bnByZWZpeGVkIHZlcnNpb24gaXMgc3VwcG9ydGVk
CiAgICAgICAgIHJldHVybiBbcHJvcCBmb3IgcHJvcCBpbiBwcmVmaXhlZF9wcm9wZXJ0aWVzIGlm
IHByb3Agbm90IGluIHVucHJlZml4ZWRfcHJvcGVydGllc10KIAotICAgIGRlZiBhZGRfd2Via2l0
X3ByZWZpeF90b191bnByZWZpeGVkX3Byb3BlcnRpZXMoc2VsZiwgdGV4dCk6Ci0gICAgICAgICIi
IiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBwcm9wZXJ0aWVzIHJlcXVpcmluZyB0
aGUgLXdlYmtpdC0gcHJlZml4IGFuZCBhZGRzIHRoZSBwcmVmaXggdG8gdGhlbS4KKyAgICBkZWYg
YWRkX3dlYmtpdF9wcmVmaXhfdG9fdW5wcmVmaXhlZF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoc2Vs
ZiwgdGV4dCk6CisgICAgICAgICIiIiBTZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBw
cm9wZXJ0aWVzIGFuZCB2YWx1ZXMgcmVxdWlyaW5nIHRoZSAtd2Via2l0LSBwcmVmaXggYW5kIGFk
ZHMgdGhlIHByZWZpeCB0byB0aGVtLgorCisgICAgICAgIFJldHVybnMgdGhlIGxpc3Qgb2YgY29u
dmVydGVkIHByb3BlcnRpZXMsIHZhbHVlcyBhbmQgdGhlIG1vZGlmaWVkIHRleHQuIiIiCisKKyAg
ICAgICAgY29udmVydGVkX3Byb3BlcnRpZXMgPSBzZWxmLmFkZF93ZWJraXRfcHJlZml4X2ZvbGxv
d2luZ19yZWdleCh0ZXh0LCBzZWxmLnByb3BfcmUpCisgICAgICAgIGNvbnZlcnRlZF9wcm9wZXJ0
eV92YWx1ZXMgPSBzZWxmLmFkZF93ZWJraXRfcHJlZml4X2ZvbGxvd2luZ19yZWdleChjb252ZXJ0
ZWRfcHJvcGVydGllc1sxXSwgc2VsZi5wcm9wX3ZhbHVlX3JlKQogCi0gICAgICAgIFJldHVybnMg
dGhlIGxpc3Qgb2YgY29udmVydGVkIHByb3BlcnRpZXMgYW5kIHRoZSBtb2RpZmllZCB0ZXh0LiIi
IgorICAgICAgICAjIEZJWE1FOiBIYW5kbGUgdGhlIEpTIHZlcnNpb25zIG9mIHRoZXNlIHByb3Bl
cnRpZXMgYW5kIHZhbHVlcyBhbmQgR2V0Q29tcHV0ZWRTdHlsZSwgdG9vLgorICAgICAgICByZXR1
cm4gKGNvbnZlcnRlZF9wcm9wZXJ0aWVzWzBdLCBjb252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzWzBd
LCBjb252ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzWzFdKQogCi0gICAgICAgIGNvbnZlcnRlZF9wcm9w
ZXJ0aWVzID0gc2V0KCkKKyAgICBkZWYgYWRkX3dlYmtpdF9wcmVmaXhfZm9sbG93aW5nX3JlZ2V4
KHNlbGYsIHRleHQsIHJlZ2V4KToKKyAgICAgICAgY29udmVydGVkX2xpc3QgPSBzZXQoKQogICAg
ICAgICB0ZXh0X2NodW5rcyA9IFtdCiAgICAgICAgIGN1cl9wb3MgPSAwCi0gICAgICAgIGZvciBt
IGluIHNlbGYucHJvcF9yZS5maW5kaXRlcih0ZXh0KToKKyAgICAgICAgZm9yIG0gaW4gcmVnZXgu
ZmluZGl0ZXIodGV4dCk6CiAgICAgICAgICAgICB0ZXh0X2NodW5rcy5leHRlbmQoW3RleHRbY3Vy
X3BvczptLnN0YXJ0KCldLCBtLmdyb3VwKDEpLCAnLXdlYmtpdC0nLCBtLmdyb3VwKDIpLCBtLmdy
b3VwKDMpXSkKLSAgICAgICAgICAgIGNvbnZlcnRlZF9wcm9wZXJ0aWVzLmFkZChtLmdyb3VwKDIp
KQorICAgICAgICAgICAgY29udmVydGVkX2xpc3QuYWRkKG0uZ3JvdXAoMikpCiAgICAgICAgICAg
ICBjdXJfcG9zID0gbS5lbmQoKQogICAgICAgICB0ZXh0X2NodW5rcy5hcHBlbmQodGV4dFtjdXJf
cG9zOl0pCiAKLSAgICAgICAgZm9yIHByb3AgaW4gY29udmVydGVkX3Byb3BlcnRpZXM6Ci0gICAg
ICAgICAgICBfbG9nLmluZm8oJyAgY29udmVydGluZyAlcycsIHByb3ApCisgICAgICAgIGZvciBp
dGVtIGluIGNvbnZlcnRlZF9saXN0OgorICAgICAgICAgICAgX2xvZy5pbmZvKCcgIGNvbnZlcnRp
bmcgJXMnLCBpdGVtKQogCi0gICAgICAgICMgRklYTUU6IEhhbmRsZSB0aGUgSlMgdmVyc2lvbnMg
b2YgdGhlc2UgcHJvcGVydGllcyBhbmQgR2V0Q29tcHV0ZWRTdHlsZSwgdG9vLgotICAgICAgICBy
ZXR1cm4gKGNvbnZlcnRlZF9wcm9wZXJ0aWVzLCAnJy5qb2luKHRleHRfY2h1bmtzKSkKKyAgICAg
ICAgcmV0dXJuIChjb252ZXJ0ZWRfbGlzdCwgJycuam9pbih0ZXh0X2NodW5rcykpCiAKICAgICBk
ZWYgY29udmVydF9yZWZlcmVuY2VfcmVscGF0aHMoc2VsZiwgdGV4dCk6CiAgICAgICAgICIiIiBT
ZWFyY2hlcyB8dGV4dHwgZm9yIGluc3RhbmNlcyBvZiBmaWxlcyBpbiByZWZlcmVuY2Vfc3VwcG9y
dF9pbmZvIGFuZCB1cGRhdGVzIHRoZSByZWxhdGl2ZSBwYXRoIHRvIGJlIGNvcnJlY3QgZm9yIHRo
ZSBuZXcgcmVmIGZpbGUgbG9jYXRpb24iIiIKQEAgLTE0MCwxNCArMTUyLDE2IEBAIGNsYXNzIF9X
M0NUZXN0Q29udmVydGVyKEhUTUxQYXJzZXIpOgogICAgICAgICByZXR1cm4gY29udmVydGVkCiAK
ICAgICBkZWYgY29udmVydF9zdHlsZV9kYXRhKHNlbGYsIGRhdGEpOgotICAgICAgICBjb252ZXJ0
ZWQgPSBzZWxmLmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4ZWRfcHJvcGVydGllcyhkYXRh
KQorICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLmFkZF93ZWJraXRfcHJlZml4X3RvX3VucHJlZml4
ZWRfcHJvcGVydGllc19hbmRfdmFsdWVzKGRhdGEpCiAgICAgICAgIGlmIGNvbnZlcnRlZFswXToK
ICAgICAgICAgICAgIHNlbGYuY29udmVydGVkX3Byb3BlcnRpZXMuZXh0ZW5kKGxpc3QoY29udmVy
dGVkWzBdKSkKKyAgICAgICAgaWYgY29udmVydGVkWzFdOgorICAgICAgICAgICAgc2VsZi5jb252
ZXJ0ZWRfcHJvcGVydHlfdmFsdWVzLmV4dGVuZChsaXN0KGNvbnZlcnRlZFsxXSkpCiAKICAgICAg
ICAgaWYgc2VsZi5yZWZlcmVuY2Vfc3VwcG9ydF9pbmZvIGlzIE5vbmUgb3Igc2VsZi5yZWZlcmVu
Y2Vfc3VwcG9ydF9pbmZvID09IHt9OgotICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFsxXQor
ICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRlZFsyXQogCi0gICAgICAgIHJldHVybiBzZWxmLmNv
bnZlcnRfcmVmZXJlbmNlX3JlbHBhdGhzKGNvbnZlcnRlZFsxXSkKKyAgICAgICAgcmV0dXJuIHNl
bGYuY29udmVydF9yZWZlcmVuY2VfcmVscGF0aHMoY29udmVydGVkWzJdKQogCiAgICAgZGVmIGNv
bnZlcnRfYXR0cmlidXRlc19pZl9uZWVkZWQoc2VsZiwgdGFnLCBhdHRycyk6CiAgICAgICAgIGNv
bnZlcnRlZCA9IHNlbGYuZ2V0X3N0YXJ0dGFnX3RleHQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS93M2MvdGVzdF9jb252ZXJ0ZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQppbmRleCA4OTZiYjZm
ODUyNTMxZjYxNzMwMjhiMDZkMDFhY2ZjOGI5MmExNzY1Li4xNzNiZGQ2ZTRkZDdlMWM5MDVhMTBh
NzYxNGM1OGEyMDdlM2ZlMmIxIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3cz
Yy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3czYy90ZXN0X2NvbnZlcnRlcl91bml0dGVzdC5weQpAQCAtNTQsNiArNTQsOCBAQCBjbGFzcyBX
M0NUZXN0Q29udmVydGVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGNvbnZlcnRl
ciA9IF9XM0NUZXN0Q29udmVydGVyKERVTU1ZX1BBVEgsIERVTU1ZX0ZJTEVOQU1FLCBOb25lKQog
ICAgICAgICBwcm9wX2xpc3QgPSBjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcwogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocHJvcF9saXN0LCAnTm8gcHJlZml4ZWQgcHJvcGVydGllcyBmb3Vu
ZCcpCisgICAgICAgIHByb3BlcnR5X3ZhbHVlc19saXN0ID0gY29udmVydGVyLnByZWZpeGVkX3By
b3BlcnR5X3ZhbHVlcworICAgICAgICBzZWxmLmFzc2VydFRydWUocHJvcGVydHlfdmFsdWVzX2xp
c3QsICdObyBwcmVmaXhlZCBwcm9wZXJ0eSB2YWx1ZXMgZm91bmQnKQogCiAgICAgZGVmIHRlc3Rf
Y29udmVydF9mb3Jfd2Via2l0X25vdGhpbmdfdG9fY29udmVydChzZWxmKToKICAgICAgICAgIiIi
IFRlc3RzIGNvbnZlcnRfZm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgdGVzdCB0aGF0IGhhcyBu
b3RoaW5nIHRvIGNvbnZlcnQgIiIiCkBAIC0xMDQsOCArMTA2LDkgQEAgQ09OVEVOVCBPRiBURVNU
CiAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5vdXRwdXQoKQogCiAgICAgICAgIHNlbGYu
dmVyaWZ5X2NvbnZlcnNpb25faGFwcGVuZWQoY29udmVydGVkKQotICAgICAgICBzZWxmLnZlcmlm
eV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVyLCBjb252ZXJ0ZWRbMV0sIGZha2VfZGlyX3Bh
dGgsIDEsIDEpCisgICAgICAgIHNlbGYudmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0
ZXIsIGNvbnZlcnRlZFsyXSwgZmFrZV9kaXJfcGF0aCwgMSwgMSkKICAgICAgICAgc2VsZi52ZXJp
ZnlfcHJlZml4ZWRfcHJvcGVydGllcyhjb252ZXJ0ZWQsIFtdKQorICAgICAgICBzZWxmLnZlcmlm
eV9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMoY29udmVydGVkLCBbXSkKIAogICAgIGRlZiB0ZXN0
X2NvbnZlcnRfZm9yX3dlYmtpdF9wcm9wZXJ0aWVzX29ubHkoc2VsZik6CiAgICAgICAgICIiIiBU
ZXN0cyBjb252ZXJ0X2Zvcl93ZWJraXQoKSB1c2luZyBhIHRlc3QgdGhhdCBoYXMgMiBwcmVmaXhl
ZCBwcm9wZXJ0aWVzOiAxIGluIGEgc3R5bGUgYmxvY2sgKyAxIGlubGluZSBzdHlsZSAiIiIKQEAg
LTExNiwzMSArMTE5LDMyIEBAIENPTlRFTlQgT0YgVEVTVAogPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgogPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KIAot
I2Jsb2NrMSB7IEB0ZXN0MEA6IHByb3B2YWx1ZTsgfQorI2Jsb2NrMSB7IEB0ZXN0MEA6IEBwcm9w
dmFsdWUwQDsgfQogCiA8L3N0eWxlPgogPC9oZWFkPgogPGJvZHk+Ci08ZGl2IGlkPSJlbGVtMSIg
c3R5bGU9IkB0ZXN0MUA6IHByb3B2YWx1ZTsiPjwvZGl2PgorPGRpdiBpZD0iZWxlbTEiIHN0eWxl
PSJAdGVzdDFAOiBAcHJvcHZhbHVlMUA7Ij48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KICIiIgog
ICAgICAgICBmYWtlX2Rpcl9wYXRoID0gc2VsZi5mYWtlX2Rpcl9wYXRoKCdoYXJuZXNzYW5kcHJv
cHMnKQogICAgICAgICBjb252ZXJ0ZXIgPSBfVzNDVGVzdENvbnZlcnRlcihmYWtlX2Rpcl9wYXRo
LCBEVU1NWV9GSUxFTkFNRSwgTm9uZSkKLSAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5l
cmF0ZV90ZXN0X2NvbnRlbnQoY29udmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIDEsIHRlc3Rf
aHRtbCkKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2NvbnRlbnRf
cHJvcGVydGllc19hbmRfdmFsdWVzKGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCBjb252
ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzLCAxLCB0ZXN0X2h0bWwpCiAKICAgICAgICAg
b2MgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgb2MuY2FwdHVyZV9vdXRwdXQoKQogICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMV0pCisgICAg
ICAgICAgICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMl0pCiAgICAgICAgICAgICBjb252
ZXJ0ZXIuY2xvc2UoKQogICAgICAgICAgICAgY29udmVydGVkID0gY29udmVydGVyLm91dHB1dCgp
CiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAKICAg
ICAgICAgc2VsZi52ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQpCi0gICAgICAg
IHNlbGYudmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsxXSwg
ZmFrZV9kaXJfcGF0aCwgMSwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlfdGVzdF9oYXJuZXNzX3Bh
dGhzKGNvbnZlcnRlciwgY29udmVydGVkWzJdLCBmYWtlX2Rpcl9wYXRoLCAxLCAxKQogICAgICAg
ICBzZWxmLnZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0aWVzKGNvbnZlcnRlZCwgdGVzdF9jb250ZW50
WzBdKQorICAgICAgICBzZWxmLnZlcmlmeV9wcmVmaXhlZF9wcm9wZXJ0eV92YWx1ZXMoY29udmVy
dGVkLCB0ZXN0X2NvbnRlbnRbMV0pCiAKICAgICBkZWYgdGVzdF9jb252ZXJ0X2Zvcl93ZWJraXRf
aGFybmVzc19hbmRfcHJvcGVydGllcyhzZWxmKToKICAgICAgICAgIiIiIFRlc3RzIGNvbnZlcnRf
Zm9yX3dlYmtpdCgpIHVzaW5nIGEgYmFzaWMgSlMgdGVzdCB0aGF0IHVzZXMgdGVzdGhhcm5lc3Mu
anMgYW5kIHRlc3RoYXJuZXNzLmNzcyBhbmQgaGFzIDQgcHJlZml4ZWQgcHJvcGVydGllczogMyBp
biBhIHN0eWxlIGJsb2NrICsgMSBpbmxpbmUgc3R5bGUgIiIiCkBAIC0xNTEsMTQgKzE1NSwxNCBA
QCBDT05URU5UIE9GIFRFU1QKIDxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CiAKLSNibG9jazEgeyBAdGVzdDBA
OiBwcm9wdmFsdWU7IH0KLSNibG9jazIgeyBAdGVzdDFAOiBwcm9wdmFsdWU7IH0KLSNibG9jazMg
eyBAdGVzdDJAOiBwcm9wdmFsdWU7IH0KKyNibG9jazEgeyBAdGVzdDBAOiBAcHJvcHZhbHVlMEA7
IH0KKyNibG9jazIgeyBAdGVzdDFAOiBAcHJvcHZhbHVlMUA7IH0KKyNibG9jazMgeyBAdGVzdDJA
OiBAcHJvcHZhbHVlMkA7IH0KIAogPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgotPGRpdiBpZD0i
ZWxlbTEiIHN0eWxlPSJAdGVzdDNAOiBwcm9wdmFsdWU7Ij48L2Rpdj4KKzxkaXYgaWQ9ImVsZW0x
IiBzdHlsZT0iQHRlc3QzQDogQHByb3B2YWx1ZTNAOyI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+
CiAiIiIKQEAgLTE2OCwxNiArMTcyLDE3IEBAIENPTlRFTlQgT0YgVEVTVAogICAgICAgICBvYyA9
IE91dHB1dENhcHR1cmUoKQogICAgICAgICBvYy5jYXB0dXJlX291dHB1dCgpCiAgICAgICAgIHRy
eToKLSAgICAgICAgICAgIHRlc3RfY29udGVudCA9IHNlbGYuZ2VuZXJhdGVfdGVzdF9jb250ZW50
KGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVzLCAyLCB0ZXN0X2h0bWwpCi0gICAgICAgICAg
ICBjb252ZXJ0ZXIuZmVlZCh0ZXN0X2NvbnRlbnRbMV0pCisgICAgICAgICAgICB0ZXN0X2NvbnRl
bnQgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29udGVudF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoY29u
dmVydGVyLnByZWZpeGVkX3Byb3BlcnRpZXMsIGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0eV92
YWx1ZXMsIDIsIHRlc3RfaHRtbCkKKyAgICAgICAgICAgIGNvbnZlcnRlci5mZWVkKHRlc3RfY29u
dGVudFsyXSkKICAgICAgICAgICAgIGNvbnZlcnRlci5jbG9zZSgpCiAgICAgICAgICAgICBjb252
ZXJ0ZWQgPSBjb252ZXJ0ZXIub3V0cHV0KCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAg
IG9jLnJlc3RvcmVfb3V0cHV0KCkKIAogICAgICAgICBzZWxmLnZlcmlmeV9jb252ZXJzaW9uX2hh
cHBlbmVkKGNvbnZlcnRlZCkKLSAgICAgICAgc2VsZi52ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhz
KGNvbnZlcnRlciwgY29udmVydGVkWzFdLCBmYWtlX2Rpcl9wYXRoLCAxLCAxKQorICAgICAgICBz
ZWxmLnZlcmlmeV90ZXN0X2hhcm5lc3NfcGF0aHMoY29udmVydGVyLCBjb252ZXJ0ZWRbMl0sIGZh
a2VfZGlyX3BhdGgsIDEsIDEpCiAgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRp
ZXMoY29udmVydGVkLCB0ZXN0X2NvbnRlbnRbMF0pCisgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZp
eGVkX3Byb3BlcnR5X3ZhbHVlcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsxXSkKIAogICAgIGRl
ZiB0ZXN0X2NvbnZlcnRfdGVzdF9oYXJuZXNzX3BhdGhzKHNlbGYpOgogICAgICAgICAiIiIgVGVz
dHMgY29udmVydF90ZXN0aGFybmVzc19wYXRocygpIHdpdGggYSB0ZXN0IHRoYXQgdXNlcyBhbGwg
dGhyZWUgdGVzdGhhcm5lc3MgZmlsZXMgIiIiCkBAIC0yMDEsNyArMjA2LDcgQEAgQ09OVEVOVCBP
RiBURVNUCiAgICAgICAgICAgICBvYy5yZXN0b3JlX291dHB1dCgpCiAKICAgICAgICAgc2VsZi52
ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0ZWQpCi0gICAgICAgIHNlbGYudmVyaWZ5
X3Rlc3RfaGFybmVzc19wYXRocyhjb252ZXJ0ZXIsIGNvbnZlcnRlZFsxXSwgZmFrZV9kaXJfcGF0
aCwgMiwgMSkKKyAgICAgICAgc2VsZi52ZXJpZnlfdGVzdF9oYXJuZXNzX3BhdGhzKGNvbnZlcnRl
ciwgY29udmVydGVkWzJdLCBmYWtlX2Rpcl9wYXRoLCAyLCAxKQogCiAgICAgZGVmIHRlc3RfY29u
dmVydF9wcmVmaXhlZF9wcm9wZXJ0aWVzKHNlbGYpOgogICAgICAgICAiIiIgVGVzdHMgY29udmVy
dF9wcmVmaXhlZF9wcm9wZXJ0aWVzKCkgZmlsZSB0aGF0IGhhcyAyMCBwcm9wZXJ0aWVzIHJlcXVp
cmluZyB0aGUgLXdlYmtpdC0gcHJlZml4OgpAQCAtMjE5LDYwICsyMjQsNjIgQEAgQ09OVEVOVCBP
RiBURVNUCiB9CiAKIC5ibG9jazIgewotICAgIEB0ZXN0MEA6IHByb3B2YWx1ZTsKKyAgICBAdGVz
dDBAOiBAcHJvcHZhbHVlMEA7CiB9CiAKLS5ibG9jazN7QHRlc3QxQDogcHJvcHZhbHVlO30KKy5i
bG9jazN7QHRlc3QxQDogQHByb3B2YWx1ZTFAO30KIAotLmJsb2NrNCB7IEB0ZXN0MkA6cHJvcHZh
bHVlOyB9CisuYmxvY2s0IHsgQHRlc3QyQDpAcHJvcHZhbHVlMkA7IH0KIAotLmJsb2NrNXsgQHRl
c3QzQCA6cHJvcHZhbHVlOyB9CisuYmxvY2s1eyBAdGVzdDNAIDpAcHJvcHZhbHVlM0A7IH0KIAot
I2Jsb2NrNiB7ICAgIEB0ZXN0NEAgICA6ICAgcHJvcHZhbHVlOyAgfQorI2Jsb2NrNiB7ICAgIEB0
ZXN0NEAgICA6ICAgQHByb3B2YWx1ZTRAICAgOyAgfQogCiAjYmxvY2s3CiB7Ci0gICAgQHRlc3Q1
QDogcHJvcHZhbHVlOworICAgIEB0ZXN0NUA6IEBwcm9wdmFsdWU1QDsKIH0KIAotI2Jsb2NrOCB7
IEB0ZXN0NkA6IHByb3B2YWx1ZTsgfQorI2Jsb2NrOCB7IEB0ZXN0NkA6IEBwcm9wdmFsdWU2QCB9
CiAKICNibG9jazk6cHNldWRvCiB7CiAKLSAgICBAdGVzdDdAOiBwcm9wdmFsdWU7CisgICAgQHRl
c3Q3QDogQHByb3B2YWx1ZTdAOwogICAgIEB0ZXN0OEA6ICBwcm9wdmFsdWUgcHJvcHZhbHVlIHBy
b3B2YWx1ZTs7CisgICAgcHJvcG5hbWU6CitAcHJvcHZhbHVlOEA7CiB9CiAKIF1dPjwvc3R5bGU+
CiA8L2hlYWQ+CiA8Ym9keT4KLSAgICA8ZGl2IGlkPSJlbGVtMSIgc3R5bGU9IkB0ZXN0OUA6IHBy
b3B2YWx1ZTsiPjwvZGl2PgotICAgIDxkaXYgaWQ9ImVsZW0yIiBzdHlsZT0icHJvcG5hbWU6IHBy
b3B2YWx1ZTsgQHRlc3QxMEAgOiBwcm9wdmFsdWU7IHByb3BuYW1lOnByb3B2YWx1ZTsiPjwvZGl2
PgotICAgIDxkaXYgaWQ9ImVsZW0yIiBzdHlsZT0iQHRlc3QxMUA6IHByb3B2YWx1ZTsgQHRlc3Qx
MkAgOiBwcm9wdmFsdWU7IEB0ZXN0MTNAICAgOnByb3B2YWx1ZTsiPjwvZGl2PgotICAgIDxkaXYg
aWQ9ImVsZW0zIiBzdHlsZT0iQHRlc3QxNEA6cHJvcHZhbHVlIj48L2Rpdj4KKyAgICA8ZGl2IGlk
PSJlbGVtMSIgc3R5bGU9IkB0ZXN0OUA6IEBwcm9wdmFsdWU5QDsiPjwvZGl2PgorICAgIDxkaXYg
aWQ9ImVsZW0yIiBzdHlsZT0icHJvcG5hbWU6IHByb3B2YWx1ZTsgQHRlc3QxMEAgOiBAcHJvcHZh
bHVlMTBAOyBwcm9wbmFtZTpwcm9wdmFsdWU7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJlbGVtMiIg
c3R5bGU9IkB0ZXN0MTFAOiBAcHJvcHZhbHVlMTFAOyBAdGVzdDEyQCA6IEBwcm9wdmFsdWUxMkA7
IEB0ZXN0MTNAICAgOiAgIEBwcm9wdmFsdWUxM0AgICA7Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJl
bGVtMyIgc3R5bGU9IkB0ZXN0MTRAOkBwcm9wdmFsdWUxNEAiPjwvZGl2PgogPC9ib2R5PgogPHN0
eWxlIHR5cGU9InRleHQvY3NzIj48IVtDREFUQVsKIAotLmJsb2NrMTB7IEB0ZXN0MTVAOiBwcm9w
dmFsdWU7IH0KLS5ibG9jazExeyBAdGVzdDE2QDogcHJvcHZhbHVlOyB9Ci0uYmxvY2sxMnsgQHRl
c3QxN0A6IHByb3B2YWx1ZTsgfQorLmJsb2NrMTB7IEB0ZXN0MTVAOiBAcHJvcHZhbHVlMTVAOyB9
CisuYmxvY2sxMXsgQHRlc3QxNkA6IEBwcm9wdmFsdWUxNkA7IH0KKy5ibG9jazEyeyBAdGVzdDE3
QDogQHByb3B2YWx1ZTE3QDsgfQogI2Jsb2NrMTM6cHNldWRvCiB7Ci0gICAgQHRlc3QxOEA6IHBy
b3B2YWx1ZTsKLSAgICBAdGVzdDE5QDogcHJvcHZhbHVlOworICAgIEB0ZXN0MThAOiBAcHJvcHZh
bHVlMThAOworICAgIEB0ZXN0MTlAOiBAcHJvcHZhbHVlMTlAOwogfQogCiBdXT48L3N0eWxlPgog
PC9odG1sPgogIiIiCiAgICAgICAgIGNvbnZlcnRlciA9IF9XM0NUZXN0Q29udmVydGVyKERVTU1Z
X1BBVEgsIERVTU1ZX0ZJTEVOQU1FLCBOb25lKQotICAgICAgICB0ZXN0X2NvbnRlbnQgPSBzZWxm
LmdlbmVyYXRlX3Rlc3RfY29udGVudChjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydGllcywgMjAs
IHRlc3RfaHRtbCkKKyAgICAgICAgdGVzdF9jb250ZW50ID0gc2VsZi5nZW5lcmF0ZV90ZXN0X2Nv
bnRlbnRfcHJvcGVydGllc19hbmRfdmFsdWVzKGNvbnZlcnRlci5wcmVmaXhlZF9wcm9wZXJ0aWVz
LCBjb252ZXJ0ZXIucHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzLCAyMCwgdGVzdF9odG1sKQogCiAg
ICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkK
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29udmVydGVyLmZlZWQodGVzdF9jb250ZW50WzFd
KQorICAgICAgICAgICAgY29udmVydGVyLmZlZWQodGVzdF9jb250ZW50WzJdKQogICAgICAgICAg
ICAgY29udmVydGVyLmNsb3NlKCkKICAgICAgICAgICAgIGNvbnZlcnRlZCA9IGNvbnZlcnRlci5v
dXRwdXQoKQogICAgICAgICBmaW5hbGx5OgpAQCAtMjgwLDEyICsyODcsMTMgQEAgQ09OVEVOVCBP
RiBURVNUCiAKICAgICAgICAgc2VsZi52ZXJpZnlfY29udmVyc2lvbl9oYXBwZW5lZChjb252ZXJ0
ZWQpCiAgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnRpZXMoY29udmVydGVkLCB0
ZXN0X2NvbnRlbnRbMF0pCisgICAgICAgIHNlbGYudmVyaWZ5X3ByZWZpeGVkX3Byb3BlcnR5X3Zh
bHVlcyhjb252ZXJ0ZWQsIHRlc3RfY29udGVudFsxXSkKIAogICAgIGRlZiB2ZXJpZnlfY29udmVy
c2lvbl9oYXBwZW5lZChzZWxmLCBjb252ZXJ0ZWQpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUo
Y29udmVydGVkLCAiY29udmVyc2lvbiBkaWRuJ3QgaGFwcGVuIikKIAogICAgIGRlZiB2ZXJpZnlf
bm9fY29udmVyc2lvbl9oYXBwZW5lZChzZWxmLCBjb252ZXJ0ZWQsIG9yaWdpbmFsKToKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjb252ZXJ0ZWRbMV0sIG9yaWdpbmFsLCAndGVzdCBzaG91bGQg
bm90IGhhdmUgYmVlbiBjb252ZXJ0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnZl
cnRlZFsyXSwgb3JpZ2luYWwsICd0ZXN0IHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbnZlcnRlZCcp
CiAKICAgICBkZWYgdmVyaWZ5X3Rlc3RfaGFybmVzc19wYXRocyhzZWxmLCBjb252ZXJ0ZXIsIGNv
bnZlcnRlZCwgdGVzdF9wYXRoLCBudW1fc3JjX3BhdGhzLCBudW1faHJlZl9wYXRocyk6CiAgICAg
ICAgIGlmIGlzaW5zdGFuY2UoY29udmVydGVkLCBiYXNlc3RyaW5nKToKQEAgLTMwNiwyNCArMzE0
LDM0IEBAIENPTlRFTlQgT0YgVEVTVAogICAgIGRlZiB2ZXJpZnlfcHJlZml4ZWRfcHJvcGVydGll
cyhzZWxmLCBjb252ZXJ0ZWQsIHRlc3RfcHJvcGVydGllcyk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobGVuKHNldChjb252ZXJ0ZWRbMF0pKSwgbGVuKHNldCh0ZXN0X3Byb3BlcnRpZXMpKSwg
J0luY29ycmVjdCBudW1iZXIgb2YgcHJvcGVydGllcyBjb252ZXJ0ZWQnKQogICAgICAgICBmb3Ig
dGVzdF9wcm9wIGluIHRlc3RfcHJvcGVydGllczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgodGVzdF9wcm9wIGluIGNvbnZlcnRlZFsxXSksICdQcm9wZXJ0eSAnICsgdGVzdF9wcm9wICsg
JyBub3QgZm91bmQgaW4gY29udmVydGVkIGRvYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRy
dWUoKHRlc3RfcHJvcCBpbiBjb252ZXJ0ZWRbMl0pLCAnUHJvcGVydHkgJyArIHRlc3RfcHJvcCAr
ICcgbm90IGZvdW5kIGluIGNvbnZlcnRlZCBkb2MnKQogCi0gICAgZGVmIGdlbmVyYXRlX3Rlc3Rf
Y29udGVudChzZWxmLCBmdWxsX3Byb3BlcnR5X2xpc3QsIG51bV90ZXN0X3Byb3BlcnRpZXMsIGh0
bWwpOgotICAgICAgICAiIiJJbnNlcnRzIHByb3BlcnRpZXMgcmVxdWlyaW5nIGEgLXdlYmtpdC0g
cHJlZml4IGludG8gdGhlIGNvbnRlbnQsIHJlcGxhY2luZyBcJ0B0ZXN0WFhAXCcgd2l0aCBhIHBy
b3BlcnR5LiIiIgotICAgICAgICB0ZXN0X3Byb3BlcnRpZXMgPSBbXQorICAgIGRlZiB2ZXJpZnlf
cHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzKHNlbGYsIGNvbnZlcnRlZCwgdGVzdF9wcm9wZXJ0eV92
YWx1ZXMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZXQoY29udmVydGVkWzFdKSks
IGxlbihzZXQodGVzdF9wcm9wZXJ0eV92YWx1ZXMpKSwgJ0luY29ycmVjdCBudW1iZXIgb2YgcHJv
cGVydHkgdmFsdWVzIGNvbnZlcnRlZCAnICsgc3RyKGxlbihzZXQoY29udmVydGVkWzFdKSkpICsg
JyB2cyAnICsgc3RyKGxlbihzZXQodGVzdF9wcm9wZXJ0eV92YWx1ZXMpKSkpCisgICAgICAgIGZv
ciB0ZXN0X3ZhbHVlIGluIHRlc3RfcHJvcGVydHlfdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKCh0ZXN0X3ZhbHVlIGluIGNvbnZlcnRlZFsyXSksICdQcm9wZXJ0eSB2YWx1ZSAn
ICsgdGVzdF92YWx1ZSArICcgbm90IGZvdW5kIGluIGNvbnZlcnRlZCBkb2MnKQorCisgICAgZGVm
IGdlbmVyYXRlX3Rlc3RfY29udGVudF9wcm9wZXJ0aWVzX2FuZF92YWx1ZXMoc2VsZiwgZnVsbF9w
cm9wZXJ0eV9saXN0LCBmdWxseV9wcm9wZXJ0eV92YWx1ZXNfbGlzdCwgbnVtX3Rlc3RfcHJvcGVy
dGllc19hbmRfdmFsdWVzLCBodG1sKToKKyAgICAgICAgIiIiSW5zZXJ0cyBwcm9wZXJ0aWVzIHJl
cXVpcmluZyBhIC13ZWJraXQtIHByZWZpeCBpbnRvIHRoZSBjb250ZW50LCByZXBsYWNpbmcgXCdA
dGVzdFhYQFwnIHdpdGggYSBwcm9wZXJ0eSBhbmQgXCdAcHJvcHZhbHVlWFhAXCcgd2l0aCBhIHZh
bHVlLiIiIgorICAgICAgICB0ZXN0X2NvbnRlbnRfcHJvcGVydGllcyA9IHNlbGYuZ2VuZXJhdGVf
dGVzdF9jb250ZW50KGZ1bGxfcHJvcGVydHlfbGlzdCwgbnVtX3Rlc3RfcHJvcGVydGllc19hbmRf
dmFsdWVzLCAndGVzdCcsIGh0bWwpCisgICAgICAgIHRlc3RfY29udGVudF9wcm9wZXJ0eV92YWx1
ZXMgPSBzZWxmLmdlbmVyYXRlX3Rlc3RfY29udGVudChmdWxseV9wcm9wZXJ0eV92YWx1ZXNfbGlz
dCwgbnVtX3Rlc3RfcHJvcGVydGllc19hbmRfdmFsdWVzLCAncHJvcHZhbHVlJywgdGVzdF9jb250
ZW50X3Byb3BlcnRpZXNbMV0pCisgICAgICAgIHJldHVybiAodGVzdF9jb250ZW50X3Byb3BlcnRp
ZXNbMF0sIHRlc3RfY29udGVudF9wcm9wZXJ0eV92YWx1ZXNbMF0sIHRlc3RfY29udGVudF9wcm9w
ZXJ0eV92YWx1ZXNbMV0pCisKKyAgICBkZWYgZ2VuZXJhdGVfdGVzdF9jb250ZW50KHNlbGYsIGZ1
bGxfbGlzdCwgbnVtX3Rlc3QsIHN1ZmZpeCwgaHRtbCk6CisgICAgICAgIHRlc3RfbGlzdCA9IFtd
CiAgICAgICAgIGNvdW50ID0gMAotICAgICAgICB3aGlsZSBjb3VudCA8IG51bV90ZXN0X3Byb3Bl
cnRpZXM6Ci0gICAgICAgICAgICB0ZXN0X3Byb3BlcnRpZXMuYXBwZW5kKGZ1bGxfcHJvcGVydHlf
bGlzdFtjb3VudF0pCisgICAgICAgIHdoaWxlIGNvdW50IDwgbnVtX3Rlc3Q6CisgICAgICAgICAg
ICB0ZXN0X2xpc3QuYXBwZW5kKGZ1bGxfbGlzdFtjb3VudF0pCiAgICAgICAgICAgICBjb3VudCAr
PSAxCiAKLSAgICAgICAgIyBSZXBsYWNlIHRoZSB0b2tlbnMgaW4gdGhlIHRlc3RodG1sIHdpdGgg
dGhlIHRlc3QgcHJvcGVydGllcy4gV2FsayBiYWNrd2FyZAotICAgICAgICAjIHRocm91Z2ggdGhl
IGxpc3QgdG8gcmVwbGFjZSB0aGUgZG91YmxlLWRpZ2l0IHRva2VucyBmaXJzdAotICAgICAgICBp
bmRleCA9IGxlbih0ZXN0X3Byb3BlcnRpZXMpIC0gMQorICAgICAgICAjIFJlcGxhY2UgdGhlIHRv
a2VucyBpbiB0aGUgdGVzdGh0bWwgd2l0aCB0aGUgdGVzdCBwcm9wZXJ0aWVzIG9yIHZhbHVlcy4K
KyAgICAgICAgIyBXYWxrIGJhY2t3YXJkIHRocm91Z2ggdGhlIGxpc3QgdG8gcmVwbGFjZSB0aGUg
ZG91YmxlLWRpZ2l0IHRva2VucyBmaXJzdC4KKyAgICAgICAgaW5kZXggPSBsZW4odGVzdF9saXN0
KSAtIDEKICAgICAgICAgd2hpbGUgaW5kZXggPj0gMDoKICAgICAgICAgICAgICMgVXNlIHRoZSB1
bnByZWZpeGVkIHZlcnNpb24KLSAgICAgICAgICAgIHRlc3RfcHJvcCA9IHRlc3RfcHJvcGVydGll
c1tpbmRleF0ucmVwbGFjZSgnLXdlYmtpdC0nLCAnJykKKyAgICAgICAgICAgIHRlc3QgPSB0ZXN0
X2xpc3RbaW5kZXhdLnJlcGxhY2UoJy13ZWJraXQtJywgJycpCiAgICAgICAgICAgICAjIFJlcGxh
Y2UgdGhlIHRva2VuCi0gICAgICAgICAgICBodG1sID0gaHRtbC5yZXBsYWNlKCdAdGVzdCcgKyBz
dHIoaW5kZXgpICsgJ0AnLCB0ZXN0X3Byb3ApCisgICAgICAgICAgICBodG1sID0gaHRtbC5yZXBs
YWNlKCdAJyArIHN1ZmZpeCArIHN0cihpbmRleCkgKyAnQCcsIHRlc3QpCiAgICAgICAgICAgICBp
bmRleCAtPSAxCiAKLSAgICAgICAgcmV0dXJuICh0ZXN0X3Byb3BlcnRpZXMsIGh0bWwpCisgICAg
ICAgIHJldHVybiAodGVzdF9saXN0LCBodG1sKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvdzNj
L3Rlc3RfaW1wb3J0ZXIucHkKaW5kZXggNzUxZThiMzU5ZTE4ODIyYzE0MjBlYjY5N2RlZTAxZGNk
YzFkY2ZiMy4uMDAxNzc3OTgyMTE2OTM3ZjA5ZThiZTEzOGVhNTVkZTZiYTYxZTQyYSAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS93M2MvdGVzdF9pbXBvcnRlci5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3czYy90ZXN0X2ltcG9ydGVyLnB5CkBAIC0yMzksNiArMjM5
LDcgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgIHRvdGFsX2ltcG9ydGVk
X3JlZnRlc3RzID0gMAogICAgICAgICB0b3RhbF9pbXBvcnRlZF9qc3Rlc3RzID0gMAogICAgICAg
ICB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0aWVzID0ge30KKyAgICAgICAgdG90YWxfcHJlZml4ZWRf
cHJvcGVydHlfdmFsdWVzID0ge30KIAogICAgICAgICBmYWlsZWRfY29udmVyc2lvbl9maWxlcyA9
IFtdCiAKQEAgLTI0OCw2ICsyNDksNyBAQCBjbGFzcyBUZXN0SW1wb3J0ZXIob2JqZWN0KToKICAg
ICAgICAgICAgIHRvdGFsX2ltcG9ydGVkX2pzdGVzdHMgKz0gZGlyX3RvX2NvcHlbJ2pzdGVzdHMn
XQogCiAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzID0gW10KKyAgICAgICAgICAgIHBy
ZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcyA9IFtdCiAKICAgICAgICAgICAgIGlmIG5vdCBkaXJfdG9f
Y29weVsnY29weV9saXN0J106CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTMxMiw4ICsz
MTQsMTUgQEAgY2xhc3MgVGVzdEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG90YWxfcHJlZml4ZWRfcHJvcGVydGllc1twcmVmaXhlZF9wcm9wZXJ0eV0gKz0g
MQogCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhlZF9wcm9wZXJ0aWVzLmV4dGVuZChz
ZXQoY29udmVydGVkX2ZpbGVbMF0pIC0gc2V0KHByZWZpeGVkX3Byb3BlcnRpZXMpKQorCisgICAg
ICAgICAgICAgICAgICAgICAgICBmb3IgcHJlZml4ZWRfdmFsdWUgaW4gY29udmVydGVkX2ZpbGVb
MV06CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxfcHJlZml4ZWRfcHJvcGVydHlf
dmFsdWVzLnNldGRlZmF1bHQocHJlZml4ZWRfdmFsdWUsIDApCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdG90YWxfcHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzW3ByZWZpeGVkX3ZhbHVlXSAr
PSAxCisKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeGVkX3Byb3BlcnR5X3ZhbHVlcy5l
eHRlbmQoc2V0KGNvbnZlcnRlZF9maWxlWzFdKSAtIHNldChwcmVmaXhlZF9wcm9wZXJ0eV92YWx1
ZXMpKQorCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlID0gb3BlbihuZXdfZmlsZXBh
dGgsICd3YicpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRmaWxlLndyaXRlKGNvbnZlcnRl
ZF9maWxlWzFdKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0ZmlsZS53cml0ZShjb252ZXJ0
ZWRfZmlsZVsyXSkKICAgICAgICAgICAgICAgICAgICAgICAgIG91dGZpbGUuY2xvc2UoKQogICAg
ICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShv
cmlnX2ZpbGVwYXRoLCBuZXdfZmlsZXBhdGgpCkBAIC0zMjEsNyArMzMwLDcgQEAgY2xhc3MgVGVz
dEltcG9ydGVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgY29waWVkX2ZpbGVzLmFwcGVuZChu
ZXdfZmlsZXBhdGgucmVwbGFjZShzZWxmLl93ZWJraXRfcm9vdCwgJycpKQogCiAgICAgICAgICAg
ICBzZWxmLnJlbW92ZV9kZWxldGVkX2ZpbGVzKG5ld19wYXRoLCBjb3BpZWRfZmlsZXMpCi0gICAg
ICAgICAgICBzZWxmLndyaXRlX2ltcG9ydF9sb2cobmV3X3BhdGgsIGNvcGllZF9maWxlcywgcHJl
Zml4ZWRfcHJvcGVydGllcykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfaW1wb3J0X2xvZyhuZXdf
cGF0aCwgY29waWVkX2ZpbGVzLCBwcmVmaXhlZF9wcm9wZXJ0aWVzLCBwcmVmaXhlZF9wcm9wZXJ0
eV92YWx1ZXMpCiAKICAgICAgICAgX2xvZy5pbmZvKCdJbXBvcnQgY29tcGxldGUnKQogCkBAIC0z
MzYsNiArMzQ1LDExIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogCiAgICAgICAgIGZv
ciBwcmVmaXhlZF9wcm9wZXJ0eSBpbiBzb3J0ZWQodG90YWxfcHJlZml4ZWRfcHJvcGVydGllcywg
a2V5PWxhbWJkYSBwOiB0b3RhbF9wcmVmaXhlZF9wcm9wZXJ0aWVzW3BdKToKICAgICAgICAgICAg
IF9sb2cuaW5mbygnICAlczogJXMnLCBwcmVmaXhlZF9wcm9wZXJ0eSwgdG90YWxfcHJlZml4ZWRf
cHJvcGVydGllc1twcmVmaXhlZF9wcm9wZXJ0eV0pCisgICAgICAgIF9sb2cuaW5mbygnJykKKyAg
ICAgICAgX2xvZy5pbmZvKCdQcm9wZXJ0eSB2YWx1ZXMgbmVlZGluZyBwcmVmaXhlcyAoYnkgY291
bnQpOicpCisKKyAgICAgICAgZm9yIHByZWZpeGVkX3ZhbHVlIGluIHNvcnRlZCh0b3RhbF9wcmVm
aXhlZF9wcm9wZXJ0eV92YWx1ZXMsIGtleT1sYW1iZGEgcDogdG90YWxfcHJlZml4ZWRfcHJvcGVy
dHlfdmFsdWVzW3BdKToKKyAgICAgICAgICAgIF9sb2cuaW5mbygnICAlczogJXMnLCBwcmVmaXhl
ZF92YWx1ZSwgdG90YWxfcHJlZml4ZWRfcHJvcGVydHlfdmFsdWVzW3ByZWZpeGVkX3ZhbHVlXSkK
IAogICAgIGRlZiByZW1vdmVfZGVsZXRlZF9maWxlcyhzZWxmLCBpbXBvcnRfZGlyZWN0b3J5LCBu
ZXdfZmlsZV9saXN0KToKICAgICAgICAgIiIiIFJlYWRzIGFuIGltcG9ydCBsb2cgaW4gfGltcG9y
dF9kaXJlY3Rvcnl8LCBjb21wYXJlcyBpdCB0byB0aGUgfG5ld19maWxlX2xpc3R8LCBhbmQgcmVt
b3ZlcyBmaWxlcyBub3QgaW4gdGhlIG5ldyBsaXN0LiIiIgpAQCAtMzYxLDcgKzM3NSw3IEBAIGNs
YXNzIFRlc3RJbXBvcnRlcihvYmplY3QpOgogCiAgICAgICAgIGltcG9ydF9sb2cuY2xvc2UoKQog
Ci0gICAgZGVmIHdyaXRlX2ltcG9ydF9sb2coc2VsZiwgaW1wb3J0X2RpcmVjdG9yeSwgZmlsZV9s
aXN0LCBwcm9wX2xpc3QpOgorICAgIGRlZiB3cml0ZV9pbXBvcnRfbG9nKHNlbGYsIGltcG9ydF9k
aXJlY3RvcnksIGZpbGVfbGlzdCwgcHJvcF9saXN0LCBwcm9wZXJ0eV92YWx1ZXNfbGlzdCk6CiAg
ICAgICAgICIiIiBXcml0ZXMgYSB3M2MtaW1wb3J0LmxvZyBmaWxlIGluIGVhY2ggZGlyZWN0b3J5
IHdpdGggaW1wb3J0ZWQgZmlsZXMuICIiIgogCiAgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0
aW1lLm5vdygpCkBAIC0zODQsNiArMzk4LDEyIEBAIGNsYXNzIFRlc3RJbXBvcnRlcihvYmplY3Qp
OgogICAgICAgICAgICAgICAgIGltcG9ydF9sb2cud3JpdGUocHJvcCArICdcbicpCiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdOb25lXG4nKQorICAgICAgICBp
bXBvcnRfbG9nLndyaXRlKCdQcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czpcbicpCisgICAgICAgIGlmIHByb3BlcnR5X3ZhbHVlc19saXN0OgorICAgICAgICAgICAgZm9y
IHZhbHVlIGluIHByb3BlcnR5X3ZhbHVlc19saXN0OgorICAgICAgICAgICAgICAgIGltcG9ydF9s
b2cud3JpdGUodmFsdWUgKyAnXG4nKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0
X2xvZy53cml0ZSgnTm9uZVxuJykKICAgICAgICAgaW1wb3J0X2xvZy53cml0ZSgnLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tXG4nKQogICAgICAgICBpbXBvcnRfbG9nLndyaXRlKCdMaXN0IG9mIGZpbGVzOlxuJykK
ICAgICAgICAgZm9yIGl0ZW0gaW4gZmlsZV9saXN0Ogo=
</data>

          </attachment>
      

    </bug>

</bugzilla>