<?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>44559</bug_id>
          
          <creation_ts>2010-08-24 15:21:10 -0700</creation_ts>
          <short_desc>new-run-webkit-tests: clean up code for test_types, test_failures</short_desc>
          <delta_ts>2010-08-24 17:10:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268845</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 15:21:10 -0700</bug_when>
    <thetext>new-run-webkit-tests: clean up code for test_types, test_failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268849</commentid>
    <comment_count>1</comment_count>
      <attachid>65334</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 15:22:55 -0700</bug_when>
    <thetext>Created attachment 65334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268857</commentid>
    <comment_count>2</comment_count>
      <attachid>65334</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 15:34:52 -0700</bug_when>
    <thetext>Comment on attachment 65334
Patch

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:76
 +          raise NotImplementedError
This is the new name?

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:40
 +          failure_obj = FailureCrash()
Why the local variables?  Confused.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:37
 +          self.assertNotEqual(failure_obj.result_html_output(&apos;foo&apos;), None)
assertTrue would also work.  This seems like not a very useful test.

WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:69
 +          self.assertRaises(NotImplementedError, failure_obj.message)
I&apos;m not sure the point of this test?

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:553
 +                  output1 = fh1.read()
This doesn&apos;t look like it would actually run.  Is it tested?

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:555
 +                  output2 = fh2.read()
This either.  Same typo.

WebKitTools/Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py:45
 +  if __name__ == &apos;__main__&apos;:
I think PEP8 says 2 blank lines between global blocks.

WebKitTools/Scripts/webkitpy/layout_tests/test_types/text_diff.py:71
 +          if os.path.exists(filename):
This is redundant.  Just remove the indent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268869</commentid>
    <comment_count>3</comment_count>
      <attachid>65334</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-24 15:43:54 -0700</bug_when>
    <thetext>Comment on attachment 65334
Patch

Nice cleanups.

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:553
 +                  output1 = fh1.read()
Shouldn&apos;t this be f1? Also, file_handle1 is more readable.

WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:555
 +                  output2 = fh2.read()
ditto.

WebKitTools/Scripts/webkitpy/layout_tests/test_types/text_diff.py:71
 +          if os.path.exists(filename):
Don&apos;t need this if-statement given the one above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268874</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 15:50:42 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 65334 [details])
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py:76
&gt;  +          raise NotImplementedError
&gt; This is the new name?
&gt;

Actually, the old name (&quot;NotImplemented&quot;) was a typo, and such an exception does not exist. Good thing we always implmeented the routines :)
 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:40
&gt;  +          failure_obj = FailureCrash()
&gt; Why the local variables?  Confused.

No terribly compelling reason. I&apos;ll remove them.

&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:37
&gt;  +          self.assertNotEqual(failure_obj.result_html_output(&apos;foo&apos;), None)
&gt; assertTrue would also work.  This seems like not a very useful test.
&gt; 

It&apos;s simply testing that the output isn&apos;t null. I don&apos;t particularly want to hard-code any specific output here, but I do care that we return something and the function is implemented. I could test for len(x) != 0; any other suggestions?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:69
&gt;  +          self.assertRaises(NotImplementedError, failure_obj.message)
&gt; I&apos;m not sure the point of this test?
&gt; 

These checks test that the base class functions do in fact raise NotImplement errors; if they didn&apos;t (and instead return some &quot;default&quot; text), then the danger is that a subclass wouldn&apos;t properly override them.

I don&apos;t know if there&apos;s a better way to do this in Python, but I&apos;m open to suggestions.

&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:553
&gt;  +                  output1 = fh1.read()
&gt; This doesn&apos;t look like it would actually run.  Is it tested?
&gt; 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:555
&gt;  +                  output2 = fh2.read()
&gt; This either.  Same typo.
&gt; 

Good catch. I&apos;m not sure why this didn&apos;t fall over, but it may not be covered by unit tests (the test coverage on this file is really poor). I&apos;ll fix the typos, but I don&apos;t want to add more tests for this file specifically as part of this patch, to avoid confusing things (I will be adding more unit tests for this soon).

&gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py:45
&gt;  +  if __name__ == &apos;__main__&apos;:
&gt; I think PEP8 says 2 blank lines between global blocks.
&gt;

Right. Not sure how I missed this in check-webkit-style.
 
&gt; WebKitTools/Scripts/webkitpy/layout_tests/test_types/text_diff.py:71
&gt;  +          if os.path.exists(filename):
&gt; This is redundant.  Just remove the indent.

True. Will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268875</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 15:53:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:553
&gt; &gt;  +                  output1 = fh1.read()
&gt; &gt; This doesn&apos;t look like it would actually run.  Is it tested?
&gt; &gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:555
&gt; &gt;  +                  output2 = fh2.read()
&gt; &gt; This either.  Same typo.
&gt; &gt; 
&gt; 
&gt; Good catch. I&apos;m not sure why this didn&apos;t fall over, but it may not be covered by unit tests (the test coverage on this file is really poor). I&apos;ll fix the typos, but I don&apos;t want to add more tests for this file specifically as part of this patch, to avoid confusing things (I will be adding more unit tests for this soon).

Actually I seem to have had writing a unit test for this particular change on my to-do list but lost track of it. It should be easy to add by itself, so I&apos;ll add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268883</commentid>
    <comment_count>6</comment_count>
      <attachid>65339</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 16:07:24 -0700</bug_when>
    <thetext>Created attachment 65339
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268913</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-24 17:10:46 -0700</bug_when>
    <thetext>Committed r65953: &lt;http://trac.webkit.org/changeset/65953&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65334</attachid>
            <date>2010-08-24 15:22:55 -0700</date>
            <delta_ts>2010-08-24 16:07:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44559-20100824152254.patch</filename>
            <type>text/plain</type>
            <size>17921</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMTc3ZDM0M2U1YzhlNGU4MGFjYTAwNTkzNzc3Y2MyY2I5NDZkMzFkLi42OTc5YTU5
NDk3OTkyYzMxMjI2NjMzYmRmMmRjYjE5OGIyZmUxOGZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDgtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIGNvZGUgZm9yIHRlc3RfdHlwZXMsIHRlc3RfZmFpbHVyZXMKKworICAg
ICAgICBBZGQgYSBidW5jaCBvZiB1bml0IHRlc3RzIGZvciB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
dGVzdF90eXBlcyBhbmQKKyAgICAgICAgd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlLnRlc3RfZmFpbHVyZXMsIGFuZCByZW1vdmUKKyAgICAgICAgc29tZSBkZWFkIGNvZGUgYW5k
IG90aGVyd2lzZSBjbGVhbiB1cCB0aGluZ3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTU5CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlw
ZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvdGVzdF90eXBlX2Jhc2VfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5OgorCiAyMDEw
LTA4LTIzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCAzYmU5MjQwODNmMDQzMDk5NDdlNTEy
OTEyOWZkMmI5NmIyNDgyYjAyLi4zNDBkMDc1M2JiMTBmM2E3OTVlYzhiODg3M2FiZjJiODFiMmYz
ZjM1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkK
QEAgLTczLDExICs3MywxMSBAQCBjbGFzcyBUZXN0RmFpbHVyZShvYmplY3QpOgogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgbWVzc2FnZSgpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5n
IGRlc2NyaWJpbmcgdGhlIGZhaWx1cmUgaW4gbW9yZSBkZXRhaWwuIiIiCi0gICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAg
IGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1
cm5zIGFuIEhUTUwgc3RyaW5nIHRvIGJlIGluY2x1ZGVkIG9uIHRoZSByZXN1bHRzLmh0bWwgcGFn
ZS4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2Vs
Zik6CiAgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVy
VHJlZSBiZWZvcmUgdGhlIG5leHQKQEAgLTEwOCwxMCArMTA4LDggQEAgY2xhc3MgRmFpbHVyZVdp
dGhUeXBlKFRlc3RGYWlsdXJlKToKICAgICB1c2UgdGhlIHN0YW5kYXJkIE91dHB1dExpbmtzLgog
ICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfdHlwZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgICBUZXN0RmFpbHVyZS5fX2luaXRfXyhzZWxmKQotICAgICAg
ICAjIEZJWE1FOiBUaGlzIGNsYXNzIG5vIGxvbmdlciBuZWVkcyB0byBrbm93IHRoZSB0ZXN0X3R5
cGUuCi0gICAgICAgIHNlbGYuX3Rlc3RfdHlwZSA9IHRlc3RfdHlwZQogCiAgICAgIyBGaWxlbmFt
ZSBzdWZmaXhlcyB1c2VkIGJ5IFJlc3VsdEh0bWxPdXRwdXQuCiAgICAgT1VUX0ZJTEVOQU1FUyA9
IFtdCkBAIC0yMDIsOCArMjAwLDggQEAgY2xhc3MgRmFpbHVyZVRleHRNaXNtYXRjaChGYWlsdXJl
V2l0aFR5cGUpOgogICAgIE9VVF9GSUxFTkFNRVNfV0RJRkYgPSBbIi1hY3R1YWwudHh0IiwgIi1l
eHBlY3RlZC50eHQiLCAiLWRpZmYudHh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIt
d2RpZmYuaHRtbCIsICItcHJldHR5LWRpZmYuaHRtbCJdCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdGVzdF90eXBlLCBoYXNfd2RpZmYpOgotICAgICAgICBGYWlsdXJlV2l0aFR5cGUuX19pbml0
X18oc2VsZiwgdGVzdF90eXBlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYXNfd2RpZmYpOgor
ICAgICAgICBGYWlsdXJlV2l0aFR5cGUuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgaGFzX3dk
aWZmOgogICAgICAgICAgICAgc2VsZi5PVVRfRklMRU5BTUVTID0gc2VsZi5PVVRfRklMRU5BTUVT
X1dESUZGCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMwNDI2ZjBlNWQzZjZjNDFkMWVkMDA4OGFj
MTUzNzg5YTVkN2IyOTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNzUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiIiVGVzdHMgY29kZSBwYXRo
cyBub3QgY292ZXJlZCBieSB0aGUgcmVndWxhciB1bml0IHRlc3RzLiIiIgorCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2ZhaWx1cmVzIGltcG9ydCAqCitp
bXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBk
ZWYgYXNzZXJ0UmVzdWx0SHRtbChzZWxmLCBmYWlsdXJlX29iaik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90RXF1YWwoZmFpbHVyZV9vYmoucmVzdWx0X2h0bWxfb3V0cHV0KCdmb28nKSwgTm9uZSkK
KworICAgIGRlZiB0ZXN0X2NyYXNoKHNlbGYpOgorICAgICAgICBmYWlsdXJlX29iaiA9IEZhaWx1
cmVDcmFzaCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0SHRtbChmYWlsdXJlX29iaikKKwor
ICAgIGRlZiB0ZXN0X2hhc2hfaW5jb3JyZWN0KHNlbGYpOgorICAgICAgICBmYWlsdXJlX29iaiA9
IEZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3QoKQorICAgICAgICBzZWxmLmFzc2VydFJlc3VsdEh0
bWwoZmFpbHVyZV9vYmopCisKKyAgICBkZWYgdGVzdF9taXNzaW5nKHNlbGYpOgorICAgICAgICBm
YWlsdXJlX29iaiA9IEZhaWx1cmVNaXNzaW5nUmVzdWx0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRS
ZXN1bHRIdG1sKGZhaWx1cmVfb2JqKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19pbWFnZShzZWxm
KToKKyAgICAgICAgZmFpbHVyZV9vYmogPSBGYWlsdXJlTWlzc2luZ0ltYWdlKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRSZXN1bHRIdG1sKGZhaWx1cmVfb2JqKQorCisgICAgZGVmIHRlc3RfbWlzc2lu
Z19pbWFnZV9oYXNoKHNlbGYpOgorICAgICAgICBmYWlsdXJlX29iaiA9IEZhaWx1cmVNaXNzaW5n
SW1hZ2VIYXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRIdG1sKGZhaWx1cmVfb2JqKQor
CisgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKKyAgICAgICAgZmFpbHVyZV9vYmogPSBGYWls
dXJlVGltZW91dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVzdWx0SHRtbChmYWlsdXJlX29iaikK
KworICAgIGRlZiB0ZXN0X3Vua25vd25fZmFpbHVyZV90eXBlKHNlbGYpOgorICAgICAgICBjbGFz
cyBVbmtub3duRmFpbHVyZShUZXN0RmFpbHVyZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAg
ICAgZmFpbHVyZV9vYmogPSBVbmtub3duRmFpbHVyZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsIGRldGVybWluZV9yZXN1bHRfdHlwZSwgW2ZhaWx1cmVfb2JqXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgZmFpbHVyZV9vYmou
bWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwg
ZmFpbHVyZV9vYmoucmVzdWx0X2h0bWxfb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZm9vLnR4dCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVz
dC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMucHkKaW5kZXggOTJmMTAzMjU4MjQ2MjY4ZTU0Y2ZhMDI1MTc3N2U2ZGI0ZjA0MDM5ZS4u
N2U5YmE2ZWY4ZTM4NGNkODhjZmZlZTZmNzRkZDA5NTgzOTgzZGNmZCAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1
bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTYzLDggKzYz
LDYgQEAgaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gYXMgc2NtCiAKIGltcG9y
dCBwb3J0CiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwotZnJv
bSB0ZXN0X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCi1mcm9tIHRlc3RfdHlwZXMgaW1wb3J0IHRl
eHRfZGlmZgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndlYmtpdHB5LmxheW91dF90ZXN0
cy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzIikKQEAgLTU0OSwxMSArNTQ3LDEzIEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6
CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlmIGV4dDEgPT0gJy5QTkcnOgot
ICAgICAgICAgICAgcmV0dXJuIGltYWdlX2RpZmYuSW1hZ2VEaWZmKHNlbGYuX3BvcnQsCi0gICAg
ICAgICAgICAgICAnJykuZGlmZl9maWxlcyhzZWxmLl9wb3J0LCBmaWxlMSwgZmlsZTIpCisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKHNlbGYuX3BvcnQsIGZpbGUxLCBm
aWxlMikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB0ZXh0X2RpZmYuVGVzdFRl
eHREaWZmKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAgJycpLmRpZmZfZmlsZXMoc2VsZi5f
cG9ydCwgZmlsZTEsIGZpbGUyKQorICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlMSwg
InIiLCAidXRmOCIpIGFzIGYxOgorICAgICAgICAgICAgICAgIG91dHB1dDEgPSBmaDEucmVhZCgp
CisgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGUyLCAiciIsICJ1dGY4IikgYXMgZjI6
CisgICAgICAgICAgICAgICAgb3V0cHV0MiA9IGZoMi5yZWFkKCkKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLl9wb3J0LmNvbXBhcmVfdGV4dChvdXRwdXQxLCBvdXRwdXQyKQogCiAgICAgZGVmIF9k
ZWxldGVfYmFzZWxpbmUoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJSZW1vdmUgdGhlIGZp
bGUgZnJvbSByZXBvc2l0b3J5IGFuZCBkZWxldGUgaXQgZnJvbSBkaXNrLgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFn
ZV9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVz
dF90eXBlcy9pbWFnZV9kaWZmLnB5CmluZGV4IGM5ZjQxMDc5OThiMWRkMDNmODY1MDM2YTZmMDBi
NzdhMDAzNDJjNjUuLjg3OTY0NmNmZmZhOTE5YTkwMzVhZDg1ZjYwM2Y1OWUwNjNhM2ZiNTggMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvaW1hZ2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKQEAgLTY2LDEyICs2Niw4IEBAIGNs
YXNzIEltYWdlRGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICBzZWxm
Ll9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFtZSkKICAgICAgICAgZGVzdF9pbWFn
ZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5hbWUsIGV4dGVuc2lvbikKIAotICAg
ICAgICB0cnk6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNvdXJjZV9pbWFnZSk6CiAgICAg
ICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlX2ltYWdlLCBkZXN0X2ltYWdlKQotICAgICAg
ICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAgICAgICMgQSBtaXNzaW5nIGV4cGVjdGVkIFBO
RyBoYXMgYWxyZWFkeSBiZWVuIHJlY29yZGVkIGFzIGFuIGVycm9yLgotICAgICAgICAgICAgaWYg
ZXJybm8uRU5PRU5UICE9IGUuZXJybm86Ci0gICAgICAgICAgICAgICAgcmFpc2UKIAogICAgIGRl
ZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFtZSwgcG5nX3BhdGgsIGNoZWNrc3Vt
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZV9uZXdfYmFzZWxpbmUpOgpA
QCAtMTA3LDIwICsxMDMsOCBAQCBjbGFzcyBJbWFnZURpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5
cGVCYXNlKToKICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUgPSBzZWxmLm91dHB1dF9maWxlbmFt
ZShmaWxlbmFtZSwKICAgICAgICAgICBzZWxmLkZJTEVOQU1FX1NVRkZJWF9FWFBFQ1RFRCArICcu
cG5nJykKIAotICAgICAgICByZXN1bHQgPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAg
IF9jb21wYXJlX2F2YWlsYWJsZSA9IFRydWUKLSAgICAgICAgICAgIHJlc3VsdCA9IHBvcnQuZGlm
Zl9pbWFnZShleHBlY3RlZF9maWxlbmFtZSwgYWN0dWFsX2ZpbGVuYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5hbWUpCi0gICAgICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgotICAgICAgICAgICAgX2NvbXBhcmVfYXZhaWxhYmxlID0gRmFsc2UKLQotICAg
ICAgICBnbG9iYWwgX2NvbXBhcmVfbXNnX3ByaW50ZWQKLSAgICAgICAgaWYgbm90IF9jb21wYXJl
X2F2YWlsYWJsZSBhbmQgbm90IF9jb21wYXJlX21zZ19wcmludGVkOgotICAgICAgICAgICAgX2Nv
bXBhcmVfbXNnX3ByaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICBwcmludCgnaW1hZ2VfZGlmZiBu
b3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhICcgKwotICAgICAgICAgICAgICAgICAgY29u
ZmlndXJhdGlvbiArICcgYnVpbGQgb2YgdGhlIGltYWdlX2RpZmYgZXhlY3V0YWJsZS4nKQotCisg
ICAgICAgIHJlc3VsdCA9IHBvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9maWxlbmFtZSwgYWN0dWFs
X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZl9maWxlbmFt
ZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVmIGNvbXBhcmVfb3V0cHV0KHNlbGYs
IHBvcnQsIGZpbGVuYW1lLCBvdXRwdXQsIHRlc3RfYXJncywgY29uZmlndXJhdGlvbik6CkBAIC0x
NDUsMTQgKzEyOSwxMCBAQCBjbGFzcyBJbWFnZURpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVC
YXNlKToKICAgICAgICAgZXhwZWN0ZWRfcG5nX2ZpbGUgPSBzZWxmLl9wb3J0LmV4cGVjdGVkX2Zp
bGVuYW1lKGZpbGVuYW1lLCAnLnBuZycpCiAKICAgICAgICAgIyBGSVhNRTogV2UgcmVwZWF0IHRo
aXMgcGF0dGVybiBvZnRlbiwgd2Ugc2hvdWxkIHNoYXJlIGNvZGUuCi0gICAgICAgIHRyeToKKyAg
ICAgICAgZXhwZWN0ZWRfaGFzaCA9ICcnCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGV4cGVj
dGVkX2hhc2hfZmlsZSk6CiAgICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGV4cGVjdGVkX2hh
c2hfZmlsZSwgInIiLCAiYXNjaWkiKSBhcyBmaWxlOgogICAgICAgICAgICAgICAgIGV4cGVjdGVk
X2hhc2ggPSBmaWxlLnJlYWQoKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAg
ICAgIGlmIGVycm5vLkVOT0VOVCAhPSBlLmVycm5vOgotICAgICAgICAgICAgICAgIHJhaXNlCi0g
ICAgICAgICAgICBleHBlY3RlZF9oYXNoID0gJycKLQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRo
LmlzZmlsZShleHBlY3RlZF9wbmdfZmlsZSk6CiAgICAgICAgICAgICAjIFJlcG9ydCBhIG1pc3Np
bmcgZXhwZWN0ZWQgUE5HIGZpbGUuCkBAIC0xNjEsNyArMTQxLDcgQEAgY2xhc3MgSW1hZ2VEaWZm
KHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuX2NvcHlf
b3V0cHV0X3BuZyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19wYXRoLCAnLWFjdHVhbC5wbmcnKQot
ICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJ
bWFnZShzZWxmKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZh
aWx1cmVNaXNzaW5nSW1hZ2UoKSkKICAgICAgICAgICAgIHJldHVybiBmYWlsdXJlcwogICAgICAg
ICBlbGlmIHRlc3RfYXJncy5oYXNoID09IGV4cGVjdGVkX2hhc2g6CiAgICAgICAgICAgICAjIEhh
c2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkgdG8gcmV0dXJuKS4KQEAgLTE3OCwyNiAr
MTU4LDExIEBAIGNsYXNzIEltYWdlRGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgog
ICAgICAgICAjIHN0aWxsIG5lZWQgdG8gY2FsbCBDcmVhdGVJbWFnZURpZmYgZm9yIG90aGVyIGNv
ZGVwYXRocy4KICAgICAgICAgaW1hZ2VzX2FyZV9kaWZmZXJlbnQgPSBzZWxmLl9jcmVhdGVfaW1h
Z2VfZGlmZihwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlvbikKICAgICAgICAgaWYgZXhwZWN0
ZWRfaGFzaCA9PSAnJzoKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVz
LkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKHNlbGYpKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBw
ZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZUhhc2goKSkKICAgICAgICAgZWxp
ZiB0ZXN0X2FyZ3MuaGFzaCAhPSBleHBlY3RlZF9oYXNoOgogICAgICAgICAgICAgaWYgaW1hZ2Vz
X2FyZV9kaWZmZXJlbnQ6Ci0gICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKHNlbGYpKQorICAgICAgICAgICAgICAgIGZh
aWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJbWFnZUhhc2hNaXNtYXRjaCgpKQog
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9m
YWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0KHNlbGYpKQorICAgICAgICAgICAgICAg
IGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3Qo
KSkKIAogICAgICAgICByZXR1cm4gZmFpbHVyZXMKLQotICAgIGRlZiBkaWZmX2ZpbGVzKHNlbGYs
IHBvcnQsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgICIiIkRpZmYgdHdvIGltYWdlIGZpbGVzIGV4
YWN0bHkuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBmaWxlMSwgZmlsZTI6IGZ1bGwgcGF0
aHMgb2YgdGhlIGZpbGVzIHRvIGNvbXBhcmUuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAg
ICBUcnVlIGlmIHR3byBmaWxlcyBhcmUgZGlmZmVyZW50LgotICAgICAgICAgIEZhbHNlIG90aGVy
d2lzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBwb3J0
LmRpZmZfaW1hZ2UoZmlsZTEsIGZpbGUyLCBOb25lLCAwKQotICAgICAgICBleGNlcHQgVmFsdWVF
cnJvciwgZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNl
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBl
cy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCBkZDQ0NjQyYjI1MTIyNDZhZWMzODUzZTYwMWZjMDEx
MTgyYjJmOGI4Li43NTNkYmVlYzQ2ZDIxYTg0OWU1MzU2ZjRkYmE5Yzk4MDk2MWE4ZTc1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5
cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2UucHkKQEAgLTE1Niw3ICsxNTYs
NyBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAgICAgICAgUmV0dXJuOgogICAgICAg
ICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzLCBlbXB0eSBpZiB0aGUgdGVzdCBwYXNz
ZXMKICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBfd3JpdGVfaW50b19maWxlX2F0X3Bh
dGgoc2VsZiwgZmlsZV9wYXRoLCBjb250ZW50cywgZW5jb2RpbmcpOgogICAgICAgICAiIiJUaGlz
IG1ldGhvZCBhc3N1bWVzIHRoYXQgYnl0ZV9hcnJheSBpcyBhbHJlYWR5IGVuY29kZWQKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlw
ZXMvdGVzdF90eXBlX2Jhc2VfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlX3VuaXR0ZXN0LnB5Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjNhNjRhN2U3ZmUwYTgxYjA3MjdmOWQ4NzU1ZDc2ODBiMTcyYTliZWMKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90
ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNDYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisiIiIiVGVzdHMgc3RyYXkgdGVzdHMgbm90IGNvdmVyZWQgYnkgcmVndWxh
ciBjb2RlIHBhdGhzLiIiIgorCitpbXBvcnQgdGVzdF90eXBlX2Jhc2UKK2ltcG9ydCB1bml0dGVz
dAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBpbXBvcnQgTW9jaworCisKK2NsYXNz
IFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29tcGFyZV9vdXRwdXRf
bm90aW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgIHRlc3RfdHlwZSA9IHRlc3RfdHlwZV9iYXNl
LlRlc3RUeXBlQmFzZShOb25lLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJ
bXBsZW1lbnRlZEVycm9yLCB0ZXN0X3R5cGUuY29tcGFyZV9vdXRwdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5vbmUsICJmb28udHh0IiwgJycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRlc3RfdHlwZV9iYXNlLlRlc3RBcmd1bWVudHMoKSwgJ0RlYnVnJykKKworaWYgX19uYW1l
X18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZm
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBl
cy90ZXh0X2RpZmYucHkKaW5kZXggZDA2ZWM4ZDM0NjU5ZjEyMmVkNWU4YTkxZTBiYzZlMjZkNzVk
NDRmYS4uNDUyYTY4ZDExMTQ1OWUxYTcwMGUzMzRmZTM3ZTlkY2YxZDQ5YWEyNCAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy90
ZXh0X2RpZmYucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkKQEAgLTY1LDE3ICs2NSwxNiBAQCBjbGFzcyBUZXN0
VGV4dERpZmYodGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKIAogICAgIGRlZiBfZ2V0X25v
cm1hbGl6ZWRfdGV4dChzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICMgRklYTUU6IFdlIHJlcGVh
dCB0aGlzIHBhdHRlcm4gb2Z0ZW4sIHdlIHNob3VsZCBzaGFyZSBjb2RlLgotICAgICAgICB0cnk6
CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CisgICAgICAgICAgICBy
ZXR1cm4gJycKKworICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAg
ICAgICAjIE5PVEU6IC1leHBlY3RlZC50eHQgZmlsZXMgYXJlIEFMV0FZUyB1dGYtOC4gIEhvd2V2
ZXIsCiAgICAgICAgICAgICAjIHdlIGRvIG5vdCBkZWNvZGUgdGhlIG91dHB1dCBmcm9tIERSVCwg
c28gd2Ugc2hvdWxkIG5vdAogICAgICAgICAgICAgIyBkZWNvZGUgdGhlIC1leHBlY3RlZC50eHQg
dmFsdWVzIGVpdGhlciB0byBhbGxvdyBjb21wYXJpc29ucy4KICAgICAgICAgICAgIHdpdGggY29k
ZWNzLm9wZW4oZmlsZW5hbWUsICJyIiwgZW5jb2Rpbmc9Tm9uZSkgYXMgZmlsZToKICAgICAgICAg
ICAgICAgICB0ZXh0ID0gZmlsZS5yZWFkKCkKICAgICAgICAgICAgICAgICAjIFdlIGNvdWxkIGFz
c2VydCB0aGF0IHRoZSB0ZXh0IGlzIHZhbGlkIHV0Zi04LgotICAgICAgICBleGNlcHQgSU9FcnJv
ciwgZToKLSAgICAgICAgICAgIGlmIGVycm5vLkVOT0VOVCAhPSBlLmVycm5vOgotICAgICAgICAg
ICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4gJycKIAogICAgICAgICAjIE5vcm1hbGl6
ZSBsaW5lIGVuZGluZ3MKICAgICAgICAgcmV0dXJuIHRleHQuc3RyaXAoIlxyXG4iKS5yZXBsYWNl
KCJcclxuIiwgIlxuIikgKyAiXG4iCkBAIC0xMDYsMjIgKzEwNSw4IEBAIGNsYXNzIFRlc3RUZXh0
RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1UcnVlKQogCiAgICAgICAgICAgICBpZiBl
eHBlY3RlZCA9PSAnJzoKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWls
dXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3VsdChzZWxmKSkKKyAgICAgICAgICAgICAgICBmYWlsdXJl
cy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlTWlzc2luZ1Jlc3VsdCgpKQogICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5G
YWlsdXJlVGV4dE1pc21hdGNoKHNlbGYsIFRydWUpKQorICAgICAgICAgICAgICAgIGZhaWx1cmVz
LmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVUZXh0TWlzbWF0Y2goVHJ1ZSkpCiAKICAgICAg
ICAgcmV0dXJuIGZhaWx1cmVzCi0KLSAgICBkZWYgZGlmZl9maWxlcyhzZWxmLCBwb3J0LCBmaWxl
MSwgZmlsZTIpOgotICAgICAgICAiIiJEaWZmIHR3byB0ZXh0IGZpbGVzLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgZmlsZTEsIGZpbGUyOiBmdWxsIHBhdGhzIG9mIHRoZSBmaWxlcyB0byBj
b21wYXJlLgotCi0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgVHJ1ZSBpZiB0d28gZmlsZXMg
YXJlIGRpZmZlcmVudC4KLSAgICAgICAgICBGYWxzZSBvdGhlcndpc2UuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIHJldHVybiBwb3J0LmNvbXBhcmVfdGV4dChzZWxmLl9nZXRfbm9ybWFsaXplZF90
ZXh0KGZpbGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldF9u
b3JtYWxpemVkX3RleHQoZmlsZTIpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65339</attachid>
            <date>2010-08-24 16:07:24 -0700</date>
            <delta_ts>2010-08-24 16:41:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44559-20100824160722.patch</filename>
            <type>text/plain</type>
            <size>20241</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAwMTc3ZDM0M2U1YzhlNGU4MGFjYTAwNTkzNzc3Y2MyY2I5NDZkMzFkLi42OTc5YTU5
NDk3OTkyYzMxMjI2NjMzYmRmMmRjYjE5OGIyZmUxOGZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTAtMDgtMjQgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgbmV3LXJ1bi13ZWJraXQt
dGVzdHM6IGNsZWFuIHVwIGNvZGUgZm9yIHRlc3RfdHlwZXMsIHRlc3RfZmFpbHVyZXMKKworICAg
ICAgICBBZGQgYSBidW5jaCBvZiB1bml0IHRlc3RzIGZvciB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
dGVzdF90eXBlcyBhbmQKKyAgICAgICAgd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNr
YWdlLnRlc3RfZmFpbHVyZXMsIGFuZCByZW1vdmUKKyAgICAgICAgc29tZSBkZWFkIGNvZGUgYW5k
IG90aGVyd2lzZSBjbGVhbiB1cCB0aGluZ3MuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NTU5CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVy
ZXNfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlw
ZV9iYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3Rf
dHlwZXMvdGVzdF90eXBlX2Jhc2VfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGV4dF9kaWZmLnB5OgorCiAyMDEw
LTA4LTIzICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvdGVzdF9mYWlsdXJlcy5weQppbmRleCAzYmU5MjQwODNmMDQzMDk5NDdlNTEy
OTEyOWZkMmI5NmIyNDgyYjAyLi4zNDBkMDc1M2JiMTBmM2E3OTVlYzhiODg3M2FiZjJiODFiMmYz
ZjM1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXMucHkK
QEAgLTczLDExICs3MywxMSBAQCBjbGFzcyBUZXN0RmFpbHVyZShvYmplY3QpOgogICAgIEBzdGF0
aWNtZXRob2QKICAgICBkZWYgbWVzc2FnZSgpOgogICAgICAgICAiIiJSZXR1cm5zIGEgc3RyaW5n
IGRlc2NyaWJpbmcgdGhlIGZhaWx1cmUgaW4gbW9yZSBkZXRhaWwuIiIiCi0gICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAg
IGRlZiByZXN1bHRfaHRtbF9vdXRwdXQoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICAiIiJSZXR1
cm5zIGFuIEhUTUwgc3RyaW5nIHRvIGJlIGluY2x1ZGVkIG9uIHRoZSByZXN1bHRzLmh0bWwgcGFn
ZS4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIHNob3VsZF9raWxsX2R1bXBfcmVuZGVyX3RyZWUoc2Vs
Zik6CiAgICAgICAgICIiIlJldHVybnMgVHJ1ZSBpZiB3ZSBzaG91bGQga2lsbCBEdW1wUmVuZGVy
VHJlZSBiZWZvcmUgdGhlIG5leHQKQEAgLTEwOCwxMCArMTA4LDggQEAgY2xhc3MgRmFpbHVyZVdp
dGhUeXBlKFRlc3RGYWlsdXJlKToKICAgICB1c2UgdGhlIHN0YW5kYXJkIE91dHB1dExpbmtzLgog
ICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfdHlwZSk6CisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgICBUZXN0RmFpbHVyZS5fX2luaXRfXyhzZWxmKQotICAgICAg
ICAjIEZJWE1FOiBUaGlzIGNsYXNzIG5vIGxvbmdlciBuZWVkcyB0byBrbm93IHRoZSB0ZXN0X3R5
cGUuCi0gICAgICAgIHNlbGYuX3Rlc3RfdHlwZSA9IHRlc3RfdHlwZQogCiAgICAgIyBGaWxlbmFt
ZSBzdWZmaXhlcyB1c2VkIGJ5IFJlc3VsdEh0bWxPdXRwdXQuCiAgICAgT1VUX0ZJTEVOQU1FUyA9
IFtdCkBAIC0yMDIsOCArMjAwLDggQEAgY2xhc3MgRmFpbHVyZVRleHRNaXNtYXRjaChGYWlsdXJl
V2l0aFR5cGUpOgogICAgIE9VVF9GSUxFTkFNRVNfV0RJRkYgPSBbIi1hY3R1YWwudHh0IiwgIi1l
eHBlY3RlZC50eHQiLCAiLWRpZmYudHh0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICIt
d2RpZmYuaHRtbCIsICItcHJldHR5LWRpZmYuaHRtbCJdCiAKLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdGVzdF90eXBlLCBoYXNfd2RpZmYpOgotICAgICAgICBGYWlsdXJlV2l0aFR5cGUuX19pbml0
X18oc2VsZiwgdGVzdF90eXBlKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoYXNfd2RpZmYpOgor
ICAgICAgICBGYWlsdXJlV2l0aFR5cGUuX19pbml0X18oc2VsZikKICAgICAgICAgaWYgaGFzX3dk
aWZmOgogICAgICAgICAgICAgc2VsZi5PVVRfRklMRU5BTUVTID0gc2VsZi5PVVRfRklMRU5BTUVT
X1dESUZGCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfZmFpbHVyZXNfdW5pdHRlc3QucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2Zh
aWx1cmVzX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY1YzRhMGIyMjgxYTExMjk0ZGY3MjQxZTk4
MzE1YWUyNmUwNGVkZDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X2ZhaWx1cmVzX3VuaXR0ZXN0
LnB5CkBAIC0wLDAgKzEsNjkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1l
dDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiIiVGVzdHMgY29kZSBwYXRo
cyBub3QgY292ZXJlZCBieSB0aGUgcmVndWxhciB1bml0IHRlc3RzLiIiIgorCitmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5sYXlvdXRfcGFja2FnZS50ZXN0X2ZhaWx1cmVzIGltcG9ydCAqCitp
bXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBk
ZWYgYXNzZXJ0UmVzdWx0SHRtbChzZWxmLCBmYWlsdXJlX29iaik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90RXF1YWwoZmFpbHVyZV9vYmoucmVzdWx0X2h0bWxfb3V0cHV0KCdmb28nKSwgTm9uZSkK
KworICAgIGRlZiB0ZXN0X2NyYXNoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJlc3VsdEh0
bWwoRmFpbHVyZUNyYXNoKCkpCisKKyAgICBkZWYgdGVzdF9oYXNoX2luY29ycmVjdChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRIdG1sKEZhaWx1cmVJbWFnZUhhc2hJbmNvcnJlY3Qo
KSkKKworICAgIGRlZiB0ZXN0X21pc3Npbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmVz
dWx0SHRtbChGYWlsdXJlTWlzc2luZ1Jlc3VsdCgpKQorCisgICAgZGVmIHRlc3RfbWlzc2luZ19p
bWFnZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSZXN1bHRIdG1sKEZhaWx1cmVNaXNzaW5n
SW1hZ2UoKSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfaW1hZ2VfaGFzaChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRSZXN1bHRIdG1sKEZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKCkpCisKKyAg
ICBkZWYgdGVzdF90aW1lb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJlc3VsdEh0bWwo
RmFpbHVyZVRpbWVvdXQoKSkKKworICAgIGRlZiB0ZXN0X3Vua25vd25fZmFpbHVyZV90eXBlKHNl
bGYpOgorICAgICAgICBjbGFzcyBVbmtub3duRmFpbHVyZShUZXN0RmFpbHVyZSk6CisgICAgICAg
ICAgICBwYXNzCisKKyAgICAgICAgZmFpbHVyZV9vYmogPSBVbmtub3duRmFpbHVyZSgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGRldGVybWluZV9yZXN1bHRfdHlwZSwg
W2ZhaWx1cmVfb2JqXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRF
cnJvciwgZmFpbHVyZV9vYmoubWVzc2FnZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90
SW1wbGVtZW50ZWRFcnJvciwgZmFpbHVyZV9vYmoucmVzdWx0X2h0bWxfb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZm9vLnR4dCIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFp
bl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggOTJmMTAzMjU4MjQ2MjY4ZTU0Y2ZhMDI1
MTc3N2U2ZGI0ZjA0MDM5ZS4uYjI0MmQ2ZGQ3NTIwYzdhYzAzOTI2YTUyNDc2NmUxOWYxYTcyNTI3
ZSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkKQEAgLTYzLDggKzYzLDYgQEAgaW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5z
Y20gYXMgc2NtCiAKIGltcG9ydCBwb3J0CiBmcm9tIGxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0
X2V4cGVjdGF0aW9ucwotZnJvbSB0ZXN0X3R5cGVzIGltcG9ydCBpbWFnZV9kaWZmCi1mcm9tIHRl
c3RfdHlwZXMgaW1wb3J0IHRleHRfZGlmZgogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIndl
YmtpdHB5LmxheW91dF90ZXN0cy4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYmFzZWxp
bmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzIikKQEAgLTU0OSwxMSArNTQ3LDEzIEBAIGNsYXNzIFJl
YmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgIGlm
IGV4dDEgPT0gJy5QTkcnOgotICAgICAgICAgICAgcmV0dXJuIGltYWdlX2RpZmYuSW1hZ2VEaWZm
KHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAnJykuZGlmZl9maWxlcyhzZWxmLl9wb3J0LCBm
aWxlMSwgZmlsZTIpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fcG9ydC5kaWZmX2ltYWdlKHNl
bGYuX3BvcnQsIGZpbGUxLCBmaWxlMikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVy
biB0ZXh0X2RpZmYuVGVzdFRleHREaWZmKHNlbGYuX3BvcnQsCi0gICAgICAgICAgICAgICAgJycp
LmRpZmZfZmlsZXMoc2VsZi5fcG9ydCwgZmlsZTEsIGZpbGUyKQorICAgICAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihmaWxlMSwgInIiLCAidXRmOCIpIGFzIGZpbGVfaGFuZGxlMToKKyAgICAgICAg
ICAgICAgICBvdXRwdXQxID0gZmlsZV9oYW5kbGUxLnJlYWQoKQorICAgICAgICAgICAgd2l0aCBj
b2RlY3Mub3BlbihmaWxlMiwgInIiLCAidXRmOCIpIGFzIGZpbGVfaGFuZGxlMjoKKyAgICAgICAg
ICAgICAgICBvdXRwdXQyID0gZmlsZV9oYW5kbGUyLnJlYWQoKQorICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX3BvcnQuY29tcGFyZV90ZXh0KG91dHB1dDEsIG91dHB1dDIpCiAKICAgICBkZWYgX2Rl
bGV0ZV9iYXNlbGluZShzZWxmLCBmaWxlbmFtZSk6CiAgICAgICAgICIiIlJlbW92ZSB0aGUgZmls
ZSBmcm9tIHJlcG9zaXRvcnkgYW5kIGRlbGV0ZSBpdCBmcm9tIGRpc2suCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9t
aXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0
LnB5CmluZGV4IDEyMWI2NGVhZGUzNWM3YjdmNjg0M2YyYzIyNDk4MmQxY2VjNzIzMTQuLjgwY2Nl
NDk4MTMzMjUxYjE3YWVjMDk4MjQwYTcxMTgxYTQ4MTI5YmIgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CkBAIC0yOSw2ICsyOSw3IEBACiAKICIiIlVuaXQgdGVzdHMgZm9yIHJlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLnB5LiIiIgogCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydApAQCAtODUsMTggKzg2LDMyIEBA
IGNsYXNzIFRlc3RHZXRIb3N0UG9ydE9iamVjdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKIAogY2xh
c3MgVGVzdFJlYmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X25v
b3Aoc2VsZik6Ci0gICAgICAgICMgdGhpcyBtZXRob2QgdGVzdHMgdGhhdCB3YXMgY2FuIGF0IGxl
YXN0IGluc3RhbnRpYXRlIGFuIG9iamVjdCwgZXZlbgotICAgICAgICAjIGlmIHRoZXJlIGlzIG5v
dGhpbmcgdG8gZG8uCisgICAgZGVmIG1ha2VfcmViYXNlbGluZXIoc2VsZik6CiAgICAgICAgIG9w
dGlvbnMgPSBNb2NrT3B0aW9ucygpCiAgICAgICAgIGhvc3RfcG9ydF9vYmogPSBwb3J0LmdldCgn
dGVzdCcsIG9wdGlvbnMpCiAgICAgICAgIHRhcmdldF9vcHRpb25zID0gb3B0aW9ucwogICAgICAg
ICB0YXJnZXRfcG9ydF9vYmogPSBwb3J0LmdldCgndGVzdCcsIHRhcmdldF9vcHRpb25zKQogICAg
ICAgICBwbGF0Zm9ybSA9ICd0ZXN0JwotICAgICAgICByZWJhc2VsaW5lciA9IHJlYmFzZWxpbmVf
Y2hyb21pdW1fd2Via2l0X3Rlc3RzLlJlYmFzZWxpbmVyKAorICAgICAgICByZXR1cm4gcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMuUmViYXNlbGluZXIoCiAgICAgICAgICAgICBob3N0
X3BvcnRfb2JqLCB0YXJnZXRfcG9ydF9vYmosIHBsYXRmb3JtLCBvcHRpb25zKQorCisgICAgZGVm
IHRlc3Rfbm9vcChzZWxmKToKKyAgICAgICAgIyB0aGlzIG1ldGhvZCB0ZXN0cyB0aGF0IHdhcyBj
YW4gYXQgbGVhc3QgaW5zdGFudGlhdGUgYW4gb2JqZWN0LCBldmVuCisgICAgICAgICMgaWYgdGhl
cmUgaXMgbm90aGluZyB0byBkby4KKyAgICAgICAgcmViYXNlbGluZXIgPSBzZWxmLm1ha2VfcmVi
YXNlbGluZXIoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJlYmFzZWxpbmVyLCBOb25l
KQogCisgICAgZGVmIHRlc3RfZGlmZl9iYXNlbGluZXNfdHh0KHNlbGYpOgorICAgICAgICByZWJh
c2VsaW5lciA9IHNlbGYubWFrZV9yZWJhc2VsaW5lcigpCisgICAgICAgIHBhdGggPSBvcy5wYXRo
LmpvaW4ocmViYXNlbGluZXIuX3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAidGV4dCIsICJhcnRpY2xlLWVsZW1lbnQtZXhwZWN0ZWQudHh0IikK
KyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWJhc2VsaW5lci5fZGlmZl9iYXNlbGluZXMocGF0
aCwgcGF0aCkpCisKKyAgICBkZWYgdGVzdF9kaWZmX2Jhc2VsaW5lc19wbmcoc2VsZik6CisgICAg
ICAgIHJlYmFzZWxpbmVyID0gc2VsZi5tYWtlX3JlYmFzZWxpbmVyKCkKKyAgICAgICAgcGF0aCA9
IG9zLnBhdGguam9pbihyZWJhc2VsaW5lci5fcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImltYWdlIiwgImNhbnZhcy16b29tLWV4cGVjdGVkLnBu
ZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmViYXNlbGluZXIuX2RpZmZfYmFzZWxpbmVz
KHBhdGgsIHBhdGgpKQorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0
Lm1haW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CmluZGV4IGM5ZjQxMDc5
OThiMWRkMDNmODY1MDM2YTZmMDBiNzdhMDAzNDJjNjUuLjg3OTY0NmNmZmZhOTE5YTkwMzVhZDg1
ZjYwM2Y1OWUwNjNhM2ZiNTggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkK
QEAgLTY2LDEyICs2Niw4IEBAIGNsYXNzIEltYWdlRGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlw
ZUJhc2UpOgogICAgICAgICBzZWxmLl9tYWtlX291dHB1dF9kaXJlY3RvcnkodGVzdF9maWxlbmFt
ZSkKICAgICAgICAgZGVzdF9pbWFnZSA9IHNlbGYub3V0cHV0X2ZpbGVuYW1lKHRlc3RfZmlsZW5h
bWUsIGV4dGVuc2lvbikKIAotICAgICAgICB0cnk6CisgICAgICAgIGlmIG9zLnBhdGguZXhpc3Rz
KHNvdXJjZV9pbWFnZSk6CiAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc291cmNlX2ltYWdl
LCBkZXN0X2ltYWdlKQotICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKLSAgICAgICAgICAgICMg
QSBtaXNzaW5nIGV4cGVjdGVkIFBORyBoYXMgYWxyZWFkeSBiZWVuIHJlY29yZGVkIGFzIGFuIGVy
cm9yLgotICAgICAgICAgICAgaWYgZXJybm8uRU5PRU5UICE9IGUuZXJybm86Ci0gICAgICAgICAg
ICAgICAgcmFpc2UKIAogICAgIGRlZiBfc2F2ZV9iYXNlbGluZV9maWxlcyhzZWxmLCBmaWxlbmFt
ZSwgcG5nX3BhdGgsIGNoZWNrc3VtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0ZV9uZXdfYmFzZWxpbmUpOgpAQCAtMTA3LDIwICsxMDMsOCBAQCBjbGFzcyBJbWFnZURpZmYo
dGVzdF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgZXhwZWN0ZWRfZmlsZW5hbWUg
PSBzZWxmLm91dHB1dF9maWxlbmFtZShmaWxlbmFtZSwKICAgICAgICAgICBzZWxmLkZJTEVOQU1F
X1NVRkZJWF9FWFBFQ1RFRCArICcucG5nJykKIAotICAgICAgICByZXN1bHQgPSBUcnVlCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIF9jb21wYXJlX2F2YWlsYWJsZSA9IFRydWUKLSAgICAgICAg
ICAgIHJlc3VsdCA9IHBvcnQuZGlmZl9pbWFnZShleHBlY3RlZF9maWxlbmFtZSwgYWN0dWFsX2Zp
bGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpZmZfZmlsZW5h
bWUpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgX2NvbXBhcmVfYXZh
aWxhYmxlID0gRmFsc2UKLQotICAgICAgICBnbG9iYWwgX2NvbXBhcmVfbXNnX3ByaW50ZWQKLSAg
ICAgICAgaWYgbm90IF9jb21wYXJlX2F2YWlsYWJsZSBhbmQgbm90IF9jb21wYXJlX21zZ19wcmlu
dGVkOgotICAgICAgICAgICAgX2NvbXBhcmVfbXNnX3ByaW50ZWQgPSBUcnVlCi0gICAgICAgICAg
ICBwcmludCgnaW1hZ2VfZGlmZiBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBhICcgKwot
ICAgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiArICcgYnVpbGQgb2YgdGhlIGltYWdlX2Rp
ZmYgZXhlY3V0YWJsZS4nKQotCisgICAgICAgIHJlc3VsdCA9IHBvcnQuZGlmZl9pbWFnZShleHBl
Y3RlZF9maWxlbmFtZSwgYWN0dWFsX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZGlmZl9maWxlbmFtZSkKICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgZGVm
IGNvbXBhcmVfb3V0cHV0KHNlbGYsIHBvcnQsIGZpbGVuYW1lLCBvdXRwdXQsIHRlc3RfYXJncywg
Y29uZmlndXJhdGlvbik6CkBAIC0xNDUsMTQgKzEyOSwxMCBAQCBjbGFzcyBJbWFnZURpZmYodGVz
dF90eXBlX2Jhc2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgZXhwZWN0ZWRfcG5nX2ZpbGUgPSBz
ZWxmLl9wb3J0LmV4cGVjdGVkX2ZpbGVuYW1lKGZpbGVuYW1lLCAnLnBuZycpCiAKICAgICAgICAg
IyBGSVhNRTogV2UgcmVwZWF0IHRoaXMgcGF0dGVybiBvZnRlbiwgd2Ugc2hvdWxkIHNoYXJlIGNv
ZGUuCi0gICAgICAgIHRyeToKKyAgICAgICAgZXhwZWN0ZWRfaGFzaCA9ICcnCisgICAgICAgIGlm
IG9zLnBhdGguZXhpc3RzKGV4cGVjdGVkX2hhc2hfZmlsZSk6CiAgICAgICAgICAgICB3aXRoIGNv
ZGVjcy5vcGVuKGV4cGVjdGVkX2hhc2hfZmlsZSwgInIiLCAiYXNjaWkiKSBhcyBmaWxlOgogICAg
ICAgICAgICAgICAgIGV4cGVjdGVkX2hhc2ggPSBmaWxlLnJlYWQoKQotICAgICAgICBleGNlcHQg
SU9FcnJvciwgZToKLSAgICAgICAgICAgIGlmIGVycm5vLkVOT0VOVCAhPSBlLmVycm5vOgotICAg
ICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICBleHBlY3RlZF9oYXNoID0gJycKLQogCiAg
ICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShleHBlY3RlZF9wbmdfZmlsZSk6CiAgICAgICAg
ICAgICAjIFJlcG9ydCBhIG1pc3NpbmcgZXhwZWN0ZWQgUE5HIGZpbGUuCkBAIC0xNjEsNyArMTQx
LDcgQEAgY2xhc3MgSW1hZ2VEaWZmKHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZSk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0iYXNjaWkiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfdGV4dF9kaWZmcz1GYWxzZSkKICAg
ICAgICAgICAgIHNlbGYuX2NvcHlfb3V0cHV0X3BuZyhmaWxlbmFtZSwgdGVzdF9hcmdzLnBuZ19w
YXRoLCAnLWFjdHVhbC5wbmcnKQotICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFnZShzZWxmKSkKKyAgICAgICAgICAgIGZhaWx1cmVzLmFw
cGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2UoKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWlsdXJlcwogICAgICAgICBlbGlmIHRlc3RfYXJncy5oYXNoID09IGV4cGVjdGVkX2hh
c2g6CiAgICAgICAgICAgICAjIEhhc2ggbWF0Y2hlZCAobm8gZGlmZiBuZWVkZWQsIG9rYXkgdG8g
cmV0dXJuKS4KQEAgLTE3OCwyNiArMTU4LDExIEBAIGNsYXNzIEltYWdlRGlmZih0ZXN0X3R5cGVf
YmFzZS5UZXN0VHlwZUJhc2UpOgogICAgICAgICAjIHN0aWxsIG5lZWQgdG8gY2FsbCBDcmVhdGVJ
bWFnZURpZmYgZm9yIG90aGVyIGNvZGVwYXRocy4KICAgICAgICAgaW1hZ2VzX2FyZV9kaWZmZXJl
bnQgPSBzZWxmLl9jcmVhdGVfaW1hZ2VfZGlmZihwb3J0LCBmaWxlbmFtZSwgY29uZmlndXJhdGlv
bikKICAgICAgICAgaWYgZXhwZWN0ZWRfaGFzaCA9PSAnJzoKLSAgICAgICAgICAgIGZhaWx1cmVz
LmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVNaXNzaW5nSW1hZ2VIYXNoKHNlbGYpKQorICAg
ICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3NpbmdJbWFn
ZUhhc2goKSkKICAgICAgICAgZWxpZiB0ZXN0X2FyZ3MuaGFzaCAhPSBleHBlY3RlZF9oYXNoOgog
ICAgICAgICAgICAgaWYgaW1hZ2VzX2FyZV9kaWZmZXJlbnQ6Ci0gICAgICAgICAgICAgICAgZmFp
bHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZUltYWdlSGFzaE1pc21hdGNoKHNlbGYp
KQorICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1cmVJ
bWFnZUhhc2hNaXNtYXRjaCgpKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBm
YWlsdXJlcy5hcHBlbmQodGVzdF9mYWlsdXJlcy5GYWlsdXJlSW1hZ2VIYXNoSW5jb3JyZWN0KHNl
bGYpKQorICAgICAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZCh0ZXN0X2ZhaWx1cmVzLkZhaWx1
cmVJbWFnZUhhc2hJbmNvcnJlY3QoKSkKIAogICAgICAgICByZXR1cm4gZmFpbHVyZXMKLQotICAg
IGRlZiBkaWZmX2ZpbGVzKHNlbGYsIHBvcnQsIGZpbGUxLCBmaWxlMik6Ci0gICAgICAgICIiIkRp
ZmYgdHdvIGltYWdlIGZpbGVzIGV4YWN0bHkuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICBm
aWxlMSwgZmlsZTI6IGZ1bGwgcGF0aHMgb2YgdGhlIGZpbGVzIHRvIGNvbXBhcmUuCi0KLSAgICAg
ICAgUmV0dXJuczoKLSAgICAgICAgICBUcnVlIGlmIHR3byBmaWxlcyBhcmUgZGlmZmVyZW50Lgot
ICAgICAgICAgIEZhbHNlIG90aGVyd2lzZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJldHVybiBwb3J0LmRpZmZfaW1hZ2UoZmlsZTEsIGZpbGUyLCBOb25lLCAwKQot
ICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdGVzdF90eXBlcy90ZXN0X3R5cGVfYmFzZS5weQppbmRleCBkZDQ0NjQyYjI1
MTIyNDZhZWMzODUzZTYwMWZjMDExMTgyYjJmOGI4Li43NTNkYmVlYzQ2ZDIxYTg0OWU1MzU2ZjRk
YmE5Yzk4MDk2MWE4ZTc1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jh
c2UucHkKQEAgLTE1Niw3ICsxNTYsNyBAQCBjbGFzcyBUZXN0VHlwZUJhc2Uob2JqZWN0KToKICAg
ICAgICAgUmV0dXJuOgogICAgICAgICAgIGEgbGlzdCBvZiBUZXN0RmFpbHVyZSBvYmplY3RzLCBl
bXB0eSBpZiB0aGUgdGVzdCBwYXNzZXMKICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBf
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoc2VsZiwgZmlsZV9wYXRoLCBjb250ZW50cywgZW5jb2Rp
bmcpOgogICAgICAgICAiIiJUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgYnl0ZV9hcnJheSBpcyBh
bHJlYWR5IGVuY29kZWQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvdGVzdF90eXBlX2Jhc2VfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlw
ZV9iYXNlX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVkYmZjYjY4YzA2OGFlM2M2YWNjMDQyNDkw
MGYxYjRmNjJjOTJjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3Rlc3RfdHlwZV9iYXNlX3VuaXR0ZXN0LnB5
CkBAIC0wLDAgKzEsNDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiIiVGVzdHMgc3RyYXkgdGVzdHMg
bm90IGNvdmVyZWQgYnkgcmVndWxhciBjb2RlIHBhdGhzLiIiIgorCitpbXBvcnQgdGVzdF90eXBl
X2Jhc2UKK2ltcG9ydCB1bml0dGVzdAorCitmcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkubW9jayBp
bXBvcnQgTW9jaworCisKK2NsYXNzIFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVm
IHRlc3RfY29tcGFyZV9vdXRwdXRfbm90aW1wbGVtZW50ZWQoc2VsZik6CisgICAgICAgIHRlc3Rf
dHlwZSA9IHRlc3RfdHlwZV9iYXNlLlRlc3RUeXBlQmFzZShOb25lLCBOb25lKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCB0ZXN0X3R5cGUuY29tcGFyZV9v
dXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsICJmb28udHh0IiwgJycsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZV9iYXNlLlRlc3RBcmd1bWVudHMoKSwg
J0RlYnVnJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1h
aW4oKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdGVzdF90eXBlcy90ZXh0X2RpZmYucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQppbmRleCBkMDZlYzhkMzQ2NTlm
MTIyZWQ1ZThhOTFlMGJjNmUyNmQ3NWQ0NGZhLi41MGE5OTk1NDUyMmUwZWMxMjUzNjRlNmIwOGJj
ZjIzMzFkNmRjYzE4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL3RleHRfZGlmZi5weQpAQCAtNjUs
MTggKzY1LDE2IEBAIGNsYXNzIFRlc3RUZXh0RGlmZih0ZXN0X3R5cGVfYmFzZS5UZXN0VHlwZUJh
c2UpOgogCiAgICAgZGVmIF9nZXRfbm9ybWFsaXplZF90ZXh0KHNlbGYsIGZpbGVuYW1lKToKICAg
ICAgICAgIyBGSVhNRTogV2UgcmVwZWF0IHRoaXMgcGF0dGVybiBvZnRlbiwgd2Ugc2hvdWxkIHNo
YXJlIGNvZGUuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgTk9URTogLWV4cGVjdGVkLnR4
dCBmaWxlcyBhcmUgQUxXQVlTIHV0Zi04LiAgSG93ZXZlciwKLSAgICAgICAgICAgICMgd2UgZG8g
bm90IGRlY29kZSB0aGUgb3V0cHV0IGZyb20gRFJULCBzbyB3ZSBzaG91bGQgbm90Ci0gICAgICAg
ICAgICAjIGRlY29kZSB0aGUgLWV4cGVjdGVkLnR4dCB2YWx1ZXMgZWl0aGVyIHRvIGFsbG93IGNv
bXBhcmlzb25zLgotICAgICAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihmaWxlbmFtZSwgInIiLCBl
bmNvZGluZz1Ob25lKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIHRleHQgPSBmaWxlLnJlYWQo
KQotICAgICAgICAgICAgICAgICMgV2UgY291bGQgYXNzZXJ0IHRoYXQgdGhlIHRleHQgaXMgdmFs
aWQgdXRmLTguCi0gICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgotICAgICAgICAgICAgaWYgZXJy
bm8uRU5PRU5UICE9IGUuZXJybm86Ci0gICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgaWYg
bm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJldHVybiAnJwogCisg
ICAgICAgICMgTk9URTogLWV4cGVjdGVkLnR4dCBmaWxlcyBhcmUgQUxXQVlTIHV0Zi04LiAgSG93
ZXZlciwKKyAgICAgICAgIyB3ZSBkbyBub3QgZGVjb2RlIHRoZSBvdXRwdXQgZnJvbSBEUlQsIHNv
IHdlIHNob3VsZCBub3QKKyAgICAgICAgIyBkZWNvZGUgdGhlIC1leHBlY3RlZC50eHQgdmFsdWVz
IGVpdGhlciB0byBhbGxvdyBjb21wYXJpc29ucy4KKyAgICAgICAgd2l0aCBjb2RlY3Mub3Blbihm
aWxlbmFtZSwgInIiLCBlbmNvZGluZz1Ob25lKSBhcyBmaWxlOgorICAgICAgICAgICAgdGV4dCA9
IGZpbGUucmVhZCgpCisgICAgICAgICAgICAjIFdlIGNvdWxkIGFzc2VydCB0aGF0IHRoZSB0ZXh0
IGlzIHZhbGlkIHV0Zi04LgorCiAgICAgICAgICMgTm9ybWFsaXplIGxpbmUgZW5kaW5ncwogICAg
ICAgICByZXR1cm4gdGV4dC5zdHJpcCgiXHJcbiIpLnJlcGxhY2UoIlxyXG4iLCAiXG4iKSArICJc
biIKIApAQCAtMTA2LDIyICsxMDQsOCBAQCBjbGFzcyBUZXN0VGV4dERpZmYodGVzdF90eXBlX2Jh
c2UuVGVzdFR5cGVCYXNlKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
aW50X3RleHRfZGlmZnM9VHJ1ZSkKIAogICAgICAgICAgICAgaWYgZXhwZWN0ZWQgPT0gJyc6Ci0g
ICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZU1pc3Np
bmdSZXN1bHQoc2VsZikpCisgICAgICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFp
bHVyZXMuRmFpbHVyZU1pc3NpbmdSZXN1bHQoKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKHRlc3RfZmFpbHVyZXMuRmFpbHVyZVRleHRNaXNtYXRj
aChzZWxmLCBUcnVlKSkKKyAgICAgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQodGVzdF9mYWls
dXJlcy5GYWlsdXJlVGV4dE1pc21hdGNoKFRydWUpKQogCiAgICAgICAgIHJldHVybiBmYWlsdXJl
cwotCi0gICAgZGVmIGRpZmZfZmlsZXMoc2VsZiwgcG9ydCwgZmlsZTEsIGZpbGUyKToKLSAgICAg
ICAgIiIiRGlmZiB0d28gdGV4dCBmaWxlcy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgIGZp
bGUxLCBmaWxlMjogZnVsbCBwYXRocyBvZiB0aGUgZmlsZXMgdG8gY29tcGFyZS4KLQotICAgICAg
ICBSZXR1cm5zOgotICAgICAgICAgIFRydWUgaWYgdHdvIGZpbGVzIGFyZSBkaWZmZXJlbnQuCi0g
ICAgICAgICAgRmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgICAiIiIKLQotICAgICAgICByZXR1cm4g
cG9ydC5jb21wYXJlX3RleHQoc2VsZi5fZ2V0X25vcm1hbGl6ZWRfdGV4dChmaWxlMSksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfbm9ybWFsaXplZF90ZXh0KGZp
bGUyKSkK
</data>
<flag name="review"
          id="54097"
          type_id="1"
          status="+"
          setter="ojan"
    />
          </attachment>
      

    </bug>

</bugzilla>