<?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>47319</bug_id>
          
          <creation_ts>2010-10-06 18:41:13 -0700</creation_ts>
          <short_desc>rebaseline-chromium-webkit-tests asserts when generating the html report</short_desc>
          <delta_ts>2010-10-07 17:49:04 -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>eric</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>victorw</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>290751</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-06 18:41:13 -0700</bug_when>
    <thetext>rebaseline-chromium-webkit-tests asserts when generating the html report</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290755</commentid>
    <comment_count>1</comment_count>
      <attachid>70025</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-06 18:53:34 -0700</bug_when>
    <thetext>Created attachment 70025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290756</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-06 18:55:25 -0700</bug_when>
    <thetext>note that I will also be using the new path.abspath_to_uri() code in the patch to fix 47220 (enabling new-run-webkit-tests to run under cygwin)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290763</commentid>
    <comment_count>3</comment_count>
      <attachid>70027</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-06 19:18:57 -0700</bug_when>
    <thetext>Created attachment 70027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290765</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-06 19:20:26 -0700</bug_when>
    <thetext>move pulling of sys.platform from the default value of the argument into the function - the default value of the argument is evaluated when the function is defined, not invoked, making it impossible to be ovveridden in unit tests (noticed this when I tested the patch under cygwin).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290809</commentid>
    <comment_count>5</comment_count>
      <attachid>70027</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 22:36:49 -0700</bug_when>
    <thetext>Comment on attachment 70027
Patch

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

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:1
&gt; +#!/usr/bin/env python

We don&apos;t need these lines at the top of files.

&gt; WebKitTools/Scripts/webkitpy/common/system/path.py:48
&gt; +    return &quot;file:///&quot; + path.replace(&quot;\\&quot;, &quot;/&quot;)

Do we need to do any URL escaping?  This feels like too many ///.  Do we want
file://c:/foo
or
file:///c:/foo
?

&gt; WebKitTools/Scripts/webkitpy/common/system/path_unittest.py:34
&gt; +class AbspathTest(unittest.TestCase):

Can you add some tests with %, space, +, and $ ?

&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:655
&gt; +        return webkitpy.common.system.path.abspath_to_uri(path, self._executive)

Crazy.  I&apos;d rather import this at the top of the file.  That makes it easier to grep the codebase and understand what&apos;s going on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290810</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-06 22:37:08 -0700</bug_when>
    <thetext>Yay for deleting code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291164</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 11:39:12 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 70027 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=70027&amp;action=review
&gt; 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:1
&gt; &gt; +#!/usr/bin/env python
&gt; 
&gt; We don&apos;t need these lines at the top of files.
&gt;

True. I wonder how many of the files have them anyway. I&apos;ll take a pass through the code to look. 

AFAIK, we don&apos;t have an official style recommendation on this. Maybe we should? PEP 8 is silent, and the Google style guide recommends one (the AppEngine default, /usr/bin/python2.5, which doesn&apos;t necessarily work for us).
 
&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path.py:48
&gt; &gt; +    return &quot;file:///&quot; + path.replace(&quot;\\&quot;, &quot;/&quot;)
&gt; 
&gt; Do we need to do any URL escaping?

Good question. This was the minimum amount of conversion we needed to do on any file that NRWT uses. As a generic routine it should probably be safer and do more.

&gt;  This feels like too many ///.  Do we want
&gt; file://c:/foo
&gt; or
&gt; file:///c:/foo
&gt; ?
&gt; 

file:///c:/foo . I just tested this to death as part of the fix for bug 47140, although looking back at the bug and the changelog comments, for some reason I failed to explicitly mention that. I&apos;ll go add a comment over there for the record.

&gt; &gt; WebKitTools/Scripts/webkitpy/common/system/path_unittest.py:34
&gt; &gt; +class AbspathTest(unittest.TestCase):
&gt; 
&gt; Can you add some tests with %, space, +, and $ ?
&gt; 

Will do.

&gt; &gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:655
&gt; &gt; +        return webkitpy.common.system.path.abspath_to_uri(path, self._executive)
&gt; 
&gt; Crazy.  I&apos;d rather import this at the top of the file.  That makes it easier to grep the codebase and understand what&apos;s going on.

Yeah, I waffled on this a bit. There is an &quot;import webkitpy.common.system.path&quot; at the top of the file; it wouldn&apos;t work otherwise. So, I&apos;m not entirely sure what grep you&apos;d like to do that would fail?

Otherwise, I agree that this looks a bit weird. I don&apos;t normally like to import bare names from other modules, so I would&apos;ve wanted something like &quot;path.abspath_to_uri()&quot;, but I was worried that that would get confused with os.path and other things. Of course, adding more than one module to the name would be weirder, so I thought that maybe the full module path was least weird. I could easily be wrong. 

Would you prefer &quot;path.abspath_to_uri&quot; or &quot;abspath_to_uri&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291212</commentid>
    <comment_count>8</comment_count>
      <attachid>70027</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-07 13:04:58 -0700</bug_when>
    <thetext>Comment on attachment 70027
Patch

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

&gt;&gt;&gt; WebKitTools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:655
&gt;&gt;&gt; +        return webkitpy.common.system.path.abspath_to_uri(path, self._executive)
&gt;&gt; 
&gt;&gt; Crazy.  I&apos;d rather import this at the top of the file.  That makes it easier to grep the codebase and understand what&apos;s going on.
&gt; 
&gt; Yeah, I waffled on this a bit. There is an &quot;import webkitpy.common.system.path&quot; at the top of the file; it wouldn&apos;t work otherwise. So, I&apos;m not entirely sure what grep you&apos;d like to do that would fail?
&gt; 
&gt; Otherwise, I agree that this looks a bit weird. I don&apos;t normally like to import bare names from other modules, so I would&apos;ve wanted something like &quot;path.abspath_to_uri()&quot;, but I was worried that that would get confused with os.path and other things. Of course, adding more than one module to the name would be weirder, so I thought that maybe the full module path was least weird. I could easily be wrong. 
&gt; 
&gt; Would you prefer &quot;path.abspath_to_uri&quot; or &quot;abspath_to_uri&quot;?

Oh, you could do something like

import webkitpy.common.system.path as path
or
import webkitpy.common.system.path as system_path

&quot;from webkitpy.common.system.path import abspath_to_uri&quot; is also fine with me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291304</commentid>
    <comment_count>9</comment_count>
      <attachid>70164</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 16:10:36 -0700</bug_when>
    <thetext>Created attachment 70164
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291306</commentid>
    <comment_count>10</comment_count>
      <attachid>70164</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-07 16:14:59 -0700</bug_when>
    <thetext>Comment on attachment 70164
Patch

Assuming dirk meant to mark this for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291309</commentid>
    <comment_count>11</comment_count>
      <attachid>70166</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 16:20:12 -0700</bug_when>
    <thetext>Created attachment 70166
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291311</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 16:21:42 -0700</bug_when>
    <thetext>actually didn&apos;t mean to mark the earlier patch for review, I was just posting it so I could reapply it on windows and re-test; the latest patch fixes a bug in the way we were checking the output from cygpath.

this one&apos;s good to go.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291314</commentid>
    <comment_count>13</comment_count>
      <attachid>70166</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-10-07 16:24:06 -0700</bug_when>
    <thetext>Comment on attachment 70166
Patch

okiedokes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291358</commentid>
    <comment_count>14</comment_count>
      <attachid>70166</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 17:48:58 -0700</bug_when>
    <thetext>Comment on attachment 70166
Patch

Clearing flags on attachment: 70166

Committed r69363: &lt;http://trac.webkit.org/changeset/69363&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291359</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-10-07 17:49:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70025</attachid>
            <date>2010-10-06 18:53:34 -0700</date>
            <delta_ts>2010-10-06 19:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47319-20101006185333.patch</filename>
            <type>text/plain</type>
            <size>17275</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MzU1YWVlOGVkNmYxNGU3MzhlYzhhZThlODViYTlhNmUzNjE0NmEzLi5iMjg5ZjNm
Mjc1NjNkZDU1NTU5ZGI3MzU3YjY0MzZmYjE1Yjk2NjVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAK
IDIwMTAtMTAtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgcmVsaWVkIG9uIHRoZSBmaWxlbmFtZV90b191cmkoKQorICAgICAg
ICBob29rIGluIHRoZSBQb3J0IGluZnJhc3RydWN0dXJlIHRvIGdlbmVyYXRlIFVSSXMgZm9yIHRo
ZSBmaWxlcworICAgICAgICBpbiBpdHMgc3VtbWFyeSBIVE1MIHJlcG9ydDsgaG93ZXZlciwgdGhh
dCBtZXRob2QgaXMgc3VwcG9zZWQgdG8gb25seQorICAgICAgICBiZSB1c2VkIGZvciB0ZXN0IGZp
bGVzIChhbmQgc2hvdWxkIHJlYWxseSBiZSByZW5hbWVkKSwgc28gdGhpcyB3b3VsZAorICAgICAg
ICBjcmFzaC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3ICJwYXRoIiBtb2R1bGUg
dG8gdGhlIHN5c3RlbSBwYWNrYWdlIHdpdGggYQorICAgICAgICByb3V0aW5lIGNhbGxlZCBhYnNw
YXRoX3RvX3VyaSgpIHRoYXQgaGFuZGxlcyBjb252ZXJ0aW5nIHBhdGhzIHRvCisgICAgICAgIGZp
bGU6IFVSSXMgaW5kZXBlbmRlbnRseSBvZiBhbnl0aGluZyBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBh
Y2thZ2UsCisgICAgICAgIGFuZCBjaGFuZ2VzIHRoZSBjb2RlIHRvIHVzZSB0aGlzLiBBdCBzb21l
IHBvaW50IGluIHRoZSBuZWFyIGZ1dHVyZQorICAgICAgICB0aGUgbGF5b3V0X3Rlc3RzL3BvcnQv
KiBjb2RlIHNob3VsZCB1c2UgdGhpcyBhcyB3ZWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFs
c28gZGVsZXRlcyBhIGJ1bmNoIG9mIHVudXNlZCBjb2RlIGFuZCBmaXhlcyBzb21lCisgICAgICAg
IGNvbW1lbnRzIGluIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMxOQorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMC0xMC0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0eXBvIGluIGNocm9taXVtLWdwdSB0aGF0IHdhcyB0cnlpbmcgdG8KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTI3MGUwOTJlMWJkMmM4ODQ5ODMzZTIyNTNjNDFmYjU0YmE4MmQwOAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9wYXRoLnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyIiImdlbmVyaWMgcm91dGluZXMgdG8gY29udmVydCBwbGF0Zm9ybS1zcGVj
aWZpYyBwYXRocyB0byBVUklzLiIiIgoraW1wb3J0IHN5cworCisKK2RlZiBhYnNwYXRoX3RvX3Vy
aShwYXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtPXN5cy5wbGF0Zm9ybSk6CisgICAgIiIiQ29udmVy
dHMgYSBwbGF0Zm9ybS1zcGVjaWZpYyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgor
ICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgIHJldHVybiBfd2lucGF0aF90b191
cmkocGF0aCkKKyAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoKKyAgICAgICAgcmV0dXJuIF93
aW5wYXRoX3RvX3VyaShfY3lncGF0aChwYXRoLCBleGVjdXRpdmUpKQorICAgIHJldHVybiBfdW5p
eHlwYXRoX3RvX3VyaShwYXRoKQorCisKK2RlZiBfd2lucGF0aF90b191cmkocGF0aCk6CisgICAg
IiIiQ29udmVydHMgYSB3aW5kb3cgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKKyAg
ICByZXR1cm4gImZpbGU6Ly8vIiArIHBhdGgucmVwbGFjZSgiXFwiLCAiLyIpCisKKworZGVmIF9j
eWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSk6CisgICAgIiIiQ29udmVydHMgYSBjeWd3aW4gcGF0aCB0
byBXaW5kb3dzIHBhdGguIiIiCisgICAgcmV0dXJuIGV4ZWN1dGl2ZS5ydW5fY29tbWFuZChbJ2N5
Z3BhdGgnLCAnLXdhJywgcGF0aF0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisKKworZGVmIF91bml4
eXBhdGhfdG9fdXJpKHBhdGgpOgorICAgICIiIkNvbnZlcnRzIGEgdW5peC1zdHlsZSBwYXRoIHRv
IGEgZmlsZTogVVJMLiIiIgorICAgIHJldHVybiAiZmlsZTovLyIgKyBwYXRoCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3Vu
aXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmNWIxYzY2ZjE3ZjU1MThkNTQ0YTQ5ZjNlOGJkMzdlZjIz
NDhmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQpAQCAtMCwwICsxLDY1IEBACisjIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBwYXRoCisKKworY2xhc3MgQWJzcGF0aFRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBydW5fY29tbWFuZChzZWxmLCBhcmdzLCAq
Kmt3YXJncyk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXJnc1swXSwgJ2N5Z3BhdGgnKQor
ICAgICAgICByZXR1cm4gJ2M6XFxmb29cXGJhci5odG1sJworCisgICAgZGVmIHRlc3RfYWJzcGF0
aF90b191cmlfY3lnd2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJz
cGF0aF90b191cmkoJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3aW4nKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwnKQorCisgICAg
ZGVmIHRlc3RfYWJzcGF0aF90b191cmlfZGFyd2luKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28vYmFyLmh0bWwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFyd2luJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8vZm9vL2Jhci5odG1sIikKKworICAg
IGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX2xpbnV4MihzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCIvZm9vL2Jhci5odG1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2xpbnV4Micp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOi8vL2Zvby9iYXIuaHRtbCIpCisKKyAg
ICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV93aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgiYzpcXGZvb1xcYmFyLmh0bWwiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nd2luMzIn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9jOi9mb28vYmFyLmh0bWwiKQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2Vs
aW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4
IGU1N2NlYjIxNzAwZTVhZmI3ZjVlYzAzMzE1ZDI4NDI0MWJiODZmZWQuLjdmMmJlODFkYzU4MTg4
OWYwZDZjYTEyMTAyZDZmM2E3MmE3MTg1YTAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFz
ZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CkBAIC01OCw4ICs1OCw5IEBAIGltcG9ydCB1
cmxsaWIKIGltcG9ydCB6aXBmaWxlCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBv
cnQgdXNlcgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgcnVu
X2NvbW1hbmQsIFNjcmlwdEVycm9yCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNj
bSBhcyBzY20KK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4
ZWN1dGl2ZSwgU2NyaXB0RXJyb3IKK2ltcG9ydCB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGgK
IAogaW1wb3J0IHBvcnQKIGZyb20gbGF5b3V0X3BhY2thZ2UgaW1wb3J0IHRlc3RfZXhwZWN0YXRp
b25zCkBAIC04MSw1OCArODIsNiBAQCBBUkNISVZFX0RJUl9OQU1FX0RJQ1QgPSB7J3dpbic6ICd3
ZWJraXQtcmVsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAnbGludXgtY2FuYXJ5JzogJ3dl
YmtpdC1yZWwtbGludXgtd2Via2l0LW9yZyd9CiAKIAotIyBGSVhNRTogU2hvdWxkIGJlIHJvbGxl
ZCBpbnRvIHdlYmtpdHB5LkV4ZWN1dGl2ZQotZGVmIHJ1bl9zaGVsbF93aXRoX3JldHVybl9jb2Rl
KGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSk6Ci0gICAgIiIiRXhlY3V0ZXMgYSBjb21tYW5k
IGFuZCByZXR1cm5zIHRoZSBvdXRwdXQgYW5kIHByb2Nlc3MgcmV0dXJuIGNvZGUuCi0KLSAgICBB
cmdzOgotICAgICAgY29tbWFuZDogcHJvZ3JhbSBhbmQgYXJndW1lbnRzLgotICAgICAgcHJpbnRf
b3V0cHV0OiBpZiB0cnVlLCBwcmludCB0aGUgY29tbWFuZCByZXN1bHRzIHRvIHN0YW5kYXJkIG91
dHB1dC4KLQotICAgIFJldHVybnM6Ci0gICAgICBjb21tYW5kIG91dHB1dCwgcmV0dXJuIGNvZGUK
LSAgICAiIiIKLQotICAgICMgVXNlIGEgc2hlbGwgZm9yIHN1YmNvbW1hbmRzIG9uIFdpbmRvd3Mg
dG8gZ2V0IGEgUEFUSCBzZWFyY2guCi0gICAgIyBGSVhNRTogc2hlbGw9VHJ1ZSBpcyBhIHRyYWls
IG9mIHRlYXJzLCBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCi0gICAgdXNlX3NoZWxsID0gc3lzLnBs
YXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpCi0gICAgIyBOb3RlOiBOb3QgdGhyZWFkIHNhZmU6IGh0
dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMzIwCi0gICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4o
Y29tbWFuZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIHNoZWxsPXVzZV9zaGVsbCkKLSAgICBpZiBwcmlu
dF9vdXRwdXQ6Ci0gICAgICAgIG91dHB1dF9hcnJheSA9IFtdCi0gICAgICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgICAgICBsaW5lID0gcC5zdGRvdXQucmVhZGxpbmUoKQotICAgICAgICAgICAgaWYg
bm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIHByaW50X291
dHB1dDoKLSAgICAgICAgICAgICAgICBwcmludCBsaW5lLnN0cmlwKCdcbicpCi0gICAgICAgICAg
ICBvdXRwdXRfYXJyYXkuYXBwZW5kKGxpbmUpCi0gICAgICAgIG91dHB1dCA9ICcnLmpvaW4ob3V0
cHV0X2FycmF5KQotICAgIGVsc2U6Ci0gICAgICAgIG91dHB1dCA9IHAuc3Rkb3V0LnJlYWQoKQot
ICAgIHAud2FpdCgpCi0gICAgcC5zdGRvdXQuY2xvc2UoKQotCi0gICAgcmV0dXJuIG91dHB1dCwg
cC5yZXR1cm5jb2RlCi0KLQotIyBGSVhNRTogU2hvdWxkIGJlIHJvbGxlZCBpbnRvIHdlYmtpdHB5
LkV4ZWN1dGl2ZQotZGVmIHJ1bl9zaGVsbChjb21tYW5kLCBwcmludF9vdXRwdXQ9RmFsc2UpOgot
ICAgICIiIkV4ZWN1dGVzIGEgY29tbWFuZCBhbmQgcmV0dXJucyB0aGUgb3V0cHV0LgotCi0gICAg
QXJnczoKLSAgICAgIGNvbW1hbmQ6IHByb2dyYW0gYW5kIGFyZ3VtZW50cy4KLSAgICAgIHByaW50
X291dHB1dDogaWYgdHJ1ZSwgcHJpbnQgdGhlIGNvbW1hbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBv
dXRwdXQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgY29tbWFuZCBvdXRwdXQKLSAgICAiIiIKLQot
ICAgIG91dHB1dCwgcmV0dXJuX2NvZGUgPSBydW5fc2hlbGxfd2l0aF9yZXR1cm5fY29kZShjb21t
YW5kLCBwcmludF9vdXRwdXQpCi0gICAgcmV0dXJuIG91dHB1dAotCi0KIGRlZiBsb2dfZGFzaGVk
X3N0cmluZyh0ZXh0LCBwbGF0Zm9ybSwgbG9nZ2luZ19sZXZlbD1sb2dnaW5nLklORk8pOgogICAg
ICIiIkxvZyB0ZXh0IG1lc3NhZ2Ugd2l0aCBkYXNoZXMgb24gYm90aCBzaWRlcy4iIiIKIApAQCAt
NjI4LDcgKzU3Nyw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgIGJhc2Vf
ZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0
b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZWxp
bmVfZmlsZW5hbWUsIHNlbGYuX3BsYXRmb3JtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ29sZCcpCi0gICAgICAgICMgRklYTUU6IFRoaXMgYXNzdW1lcyBy
dW5fc2hlbGwgcmV0dXJucyBhIGJ5dGUgYXJyYXkuCiAgICAgICAgICMgV2Ugc2hvdWxkIGJlIHVz
aW5nIGFuIGV4cGxpY2l0IGVuY29kaW5nIGhlcmUuCiAgICAgICAgIHdpdGggb3BlbihiYXNlX2Zp
bGUsICJ3YiIpIGFzIGZpbGU6CiAgICAgICAgICAgICBmaWxlLndyaXRlKG91dHB1dCkKQEAgLTY0
Miw3ICs1OTAsNiBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICAgICAgICAg
IGRpZmZfZmlsZSA9IGdldF9yZXN1bHRfZmlsZV9mdWxscGF0aCgKICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9yeSwgYmFzZWxpbmVfZmlsZW5hbWUsCiAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3BsYXRmb3JtLCAnZGlmZicpCi0gICAgICAgICAgICAgICAg
IyBGSVhNRTogVGhpcyBhc3N1bWVzIHJ1bl9zaGVsbCByZXR1cm5zIGEgYnl0ZSBhcnJheSwgbm90
IHVuaWNvZGUoKQogICAgICAgICAgICAgICAgIHdpdGggb3BlbihkaWZmX2ZpbGUsICd3YicpIGFz
IGZpbGU6CiAgICAgICAgICAgICAgICAgICAgIGZpbGUud3JpdGUob3V0cHV0KQogICAgICAgICAg
ICAgICAgIF9sb2cuaW5mbygnICBIdG1sOiBjcmVhdGVkIGJhc2VsaW5lIGRpZmYgZmlsZTogIiVz
Ii4nLApAQCAtNjk0LDE0ICs2NDEsMTkgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3R5bGU9IndpZHRoOiAyMDAiIHNyYz0iJSh1
cmkpcyIgLz48L2E+PC90ZD4nKQogICAgIEhUTUxfVFIgPSAnPHRyPiVzPC90cj4nCiAKLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0X3BvcnQsIG9wdGlvbnMsIHBsYXRmb3JtcywgcmViYXNl
bGluaW5nX3Rlc3RzKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFyZ2V0X3BvcnQsIG9wdGlv
bnMsIHBsYXRmb3JtcywgcmViYXNlbGluaW5nX3Rlc3RzLAorICAgICAgICAgICAgICAgICBleGVj
dXRpdmUpOgogICAgICAgICBzZWxmLl9odG1sX2RpcmVjdG9yeSA9IG9wdGlvbnMuaHRtbF9kaXJl
Y3RvcnkKICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQgPSB0YXJnZXRfcG9ydAogICAgICAgICBz
ZWxmLl9wbGF0Zm9ybXMgPSBwbGF0Zm9ybXMKICAgICAgICAgc2VsZi5fcmViYXNlbGluaW5nX3Rl
c3RzID0gcmViYXNlbGluaW5nX3Rlc3RzCisgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1
dGl2ZQogICAgICAgICBzZWxmLl9odG1sX2ZpbGUgPSBvcy5wYXRoLmpvaW4ob3B0aW9ucy5odG1s
X2RpcmVjdG9yeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWJh
c2VsaW5lLmh0bWwnKQogCisgICAgZGVmIGFic3BhdGhfdG9fdXJpKHNlbGYsIHBhdGgpOgorICAg
ICAgICByZXR1cm4gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5wYXRoLmFic3BhdGhfdG9fdXJpKHBh
dGgsIHNlbGYuX2V4ZWN1dGl2ZSkKKwogICAgIGRlZiBnZW5lcmF0ZV9odG1sKHNlbGYpOgogICAg
ICAgICAiIiJHZW5lcmF0ZSBodG1sIGZpbGUgZm9yIHJlYmFzZWxpbmluZyByZXN1bHQgY29tcGFy
aXNvbi4iIiIKIApAQCAtNzY5LDE0ICs3MjEsMTMgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmpl
Y3QpOgogICAgICAgICBsaW5rcyA9ICcnCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9sZF9m
aWxlKToKICAgICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsKLSAgICAgICAgICAg
ICAgICAndXJpJzogc2VsZi5fdGFyZ2V0X3BvcnQuZmlsZW5hbWVfdG9fdXJpKG9sZF9maWxlKSwK
KyAgICAgICAgICAgICAgICAndXJpJzogc2VsZi5hYnNwYXRoX3RvX3VyaShvbGRfZmlsZSksCiAg
ICAgICAgICAgICAgICAgJ25hbWUnOiBiYXNlbGluZV9maWxlbmFtZX0KICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIG9sZCBiYXNlbGluZSBmaWxlOiAiJXMiJywg
b2xkX2ZpbGUpCiAgICAgICAgICAgICBsaW5rcyArPSBzZWxmLkhUTUxfVERfTk9MSU5LICUgJycK
IAotICAgICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3VyaSc6IHNlbGYuX3RhcmdldF9w
b3J0LmZpbGVuYW1lX3RvX3VyaSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdfZmlsZSksCisgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJpJzogc2Vs
Zi5hYnNwYXRoX3RvX3VyaShuZXdfZmlsZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnbmFtZSc6IGJhc2VsaW5lX2ZpbGVuYW1lfQogCiAgICAgICAgIGRpZmZfZmlsZSA9IGdl
dF9yZXN1bHRfZmlsZV9mdWxscGF0aChzZWxmLl9odG1sX2RpcmVjdG9yeSwKQEAgLTc4NCw4ICs3
MzUsOCBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlmZicpCiAgICAgICAgIF9sb2cuaW5mbygnICAg
IEJhc2VsaW5lIGRpZmYgZmlsZTogIiVzIicsIGRpZmZfZmlsZSkKICAgICAgICAgaWYgb3MucGF0
aC5leGlzdHMoZGlmZl9maWxlKToKLSAgICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAl
IHsndXJpJzogc2VsZi5fdGFyZ2V0X3BvcnQuZmlsZW5hbWVfdG9fdXJpKAotICAgICAgICAgICAg
ICAgIGRpZmZfZmlsZSksICduYW1lJzogJ0RpZmYnfQorICAgICAgICAgICAgbGlua3MgKz0gaHRt
bF90ZF9saW5rICUgeyd1cmknOiBzZWxmLmFic3BhdGhfdG9fdXJpKGRpZmZfZmlsZSksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAnRGlmZid9CiAgICAgICAg
IGVsc2U6CiAgICAgICAgICAgICBfbG9nLmluZm8oJyAgICBObyBiYXNlbGluZSBkaWZmIGZpbGU6
ICIlcyInLCBkaWZmX2ZpbGUpCiAgICAgICAgICAgICBsaW5rcyArPSBzZWxmLkhUTUxfVERfTk9M
SU5LICUgJycKQEAgLTgyNSw4ICs3NzYsNyBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6
CiAgICAgICAgIGlmIHJvd3M6CiAgICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4o
c2VsZi5fdGFyZ2V0X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3QpCi0gICAgICAgICAgICBodG1sID0gc2VsZi5IVE1MX1RS
X1RFU1QgJSAoCi0gICAgICAgICAgICAgICAgc2VsZi5fdGFyZ2V0X3BvcnQuZmlsZW5hbWVfdG9f
dXJpKHRlc3RfcGF0aCksIHRlc3QpCisgICAgICAgICAgICBodG1sID0gc2VsZi5IVE1MX1RSX1RF
U1QgJSAoc2VsZi5hYnNwYXRoX3RvX3VyaSh0ZXN0X3BhdGgpLCB0ZXN0KQogICAgICAgICAgICAg
aHRtbCArPSBzZWxmLkhUTUxfVEVTVF9ERVRBSUwgJSAnICcuam9pbihyb3dzKQogCiAgICAgICAg
ICAgICBfbG9nLmRlYnVnKCcgICAgaHRtbCBmb3IgdGVzdDogJXMnLCBodG1sKQpAQCAtODY3LDcg
KzgxNyw3IEBAIGRlZiBnZXRfaG9zdF9wb3J0X29iamVjdChvcHRpb25zKToKICAgICByZXR1cm4g
cG9ydF9vYmoKIAogCi1kZWYgbWFpbigpOgorZGVmIG1haW4oZXhlY3V0aXZlPUV4ZWN1dGl2ZSgp
KToKICAgICAiIiJNYWluIGZ1bmN0aW9uIHRvIHByb2R1Y2UgbmV3IGJhc2VsaW5lcy4iIiIKIAog
ICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoKQpAQCAtOTkyLDcgKzk0
Miw4IEBAIGRlZiBtYWluKCk6CiAgICAgaHRtbF9nZW5lcmF0b3IgPSBIdG1sR2VuZXJhdG9yKHRh
cmdldF9wb3J0X29iaiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9u
cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGluZV9wbGF0Zm9y
bXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0
cykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3Rz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmUpCiAgICAgaHRt
bF9nZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCiAgICAgaWYgbm90IG9wdGlvbnMucXVpZXQ6CiAg
ICAgICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CmluZGV4
IDliYTNkNmJkMzdhZDQyZDgxOTg5NzgzNjZkNjBmN2JmNWQzYWQxNjcuLmZjZTZlODJjYWVmODM1
YTczMzk4MDg0YjY5MTQ4MDA4ZGIyNmFlNjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBAIC0zMCwx
MCArMzAsMTIgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzLnB5LiIiIgogCiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAog
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5s
YXlvdXRfdGVzdHMgaW1wb3J0IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzCitmcm9t
IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIFNjcmlw
dEVycm9yCiAKIAogY2xhc3MgTW9ja1BvcnQob2JqZWN0KToKQEAgLTQ1LDggKzQ3LDkgQEAgY2xh
c3MgTW9ja1BvcnQob2JqZWN0KToKIAogCiBjbGFzcyBNb2NrT3B0aW9ucyhvYmplY3QpOgotICAg
IGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0gTm9uZQor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUsIGh0bWxfZGlyZWN0b3J5
PU5vbmUpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9uCisgICAg
ICAgIHNlbGYuaHRtbF9kaXJlY3RvcnkgPSBodG1sX2RpcmVjdG9yeQogCiAKIGRlZiBnZXRfbW9j
a19nZXQoY29uZmlnX2V4cGVjdGF0aW9ucyk6CkBAIC0xMTgsNSArMTIxLDMxIEBAIGNsYXNzIFRl
c3RSZWJhc2VsaW5lcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocmViYXNlbGluZXIuX2RpZmZfYmFzZWxpbmVzKGltYWdlLCBpbWFnZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW1hZ2U9VHJ1ZSkp
CiAKKworY2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRl
ZiBtYWtlX2dlbmVyYXRvcihzZWxmLCB0ZXN0cyk6CisgICAgICAgIHJldHVybiByZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5IdG1sR2VuZXJhdG9yKAorICAgICAgICAgICAgdGFyZ2V0
X3BvcnQ9Tm9uZSwKKyAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMoaHRtbF9kaXJlY3Rv
cnk9Ii90bXAiKSwKKyAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAorICAgICAgICAgICAg
cmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzLAorICAgICAgICAgICAgZXhlY3V0aXZlPUV4ZWN1dGl2
ZSgpKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfYmFzZWxpbmVfbGlua3Moc2VsZik6CisgICAg
ICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KKyAgICAgICAgb3JpZ19leGlzdHMgPSBv
cy5wYXRoLmV4aXN0cworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5wbGF0Zm9ybSA9
ICdkYXJ3aW4nCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IGxhbWJkYSB4OiBUcnVlCisg
ICAgICAgICAgICBnZW5lcmF0b3IgPSBzZWxmLm1ha2VfZ2VuZXJhdG9yKFsiZm9vLnR4dCJdKQor
ICAgICAgICAgICAgbGlua3MgPSBnZW5lcmF0b3IuX2dlbmVyYXRlX2Jhc2VsaW5lX2xpbmtzKCJm
b28iLCAiLnR4dCIsICJtYWMiKQorICAgICAgICAgICAgZXhwZWN0ZWRfbGlua3MgPSAnPHRkIGFs
aWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLW9sZC50eHQi
PmZvby1leHBlY3RlZC50eHQ8L2E+PC90ZD48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9ImZpbGU6
Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtbmV3LnR4dCI+Zm9vLWV4cGVjdGVkLnR4dDwvYT48L3Rk
Pjx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVkLW1hYy1k
aWZmLnR4dCI+RGlmZjwvYT48L3RkPicKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlu
a3MsIGV4cGVjdGVkX2xpbmtzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnBs
YXRmb3JtID0gb3JpZ19wbGF0Zm9ybQorICAgICAgICAgICAgb3MucGF0aC5leGlzdHMgPSBvcmln
X2V4aXN0cworCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFp
bigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70027</attachid>
            <date>2010-10-06 19:18:57 -0700</date>
            <delta_ts>2010-10-07 16:10:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47319-20101006191856.patch</filename>
            <type>text/plain</type>
            <size>17328</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MzU1YWVlOGVkNmYxNGU3MzhlYzhhZThlODViYTlhNmUzNjE0NmEzLi5iMjg5ZjNm
Mjc1NjNkZDU1NTU5ZGI3MzU3YjY0MzZmYjE1Yjk2NjVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAK
IDIwMTAtMTAtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgcmVsaWVkIG9uIHRoZSBmaWxlbmFtZV90b191cmkoKQorICAgICAg
ICBob29rIGluIHRoZSBQb3J0IGluZnJhc3RydWN0dXJlIHRvIGdlbmVyYXRlIFVSSXMgZm9yIHRo
ZSBmaWxlcworICAgICAgICBpbiBpdHMgc3VtbWFyeSBIVE1MIHJlcG9ydDsgaG93ZXZlciwgdGhh
dCBtZXRob2QgaXMgc3VwcG9zZWQgdG8gb25seQorICAgICAgICBiZSB1c2VkIGZvciB0ZXN0IGZp
bGVzIChhbmQgc2hvdWxkIHJlYWxseSBiZSByZW5hbWVkKSwgc28gdGhpcyB3b3VsZAorICAgICAg
ICBjcmFzaC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3ICJwYXRoIiBtb2R1bGUg
dG8gdGhlIHN5c3RlbSBwYWNrYWdlIHdpdGggYQorICAgICAgICByb3V0aW5lIGNhbGxlZCBhYnNw
YXRoX3RvX3VyaSgpIHRoYXQgaGFuZGxlcyBjb252ZXJ0aW5nIHBhdGhzIHRvCisgICAgICAgIGZp
bGU6IFVSSXMgaW5kZXBlbmRlbnRseSBvZiBhbnl0aGluZyBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBh
Y2thZ2UsCisgICAgICAgIGFuZCBjaGFuZ2VzIHRoZSBjb2RlIHRvIHVzZSB0aGlzLiBBdCBzb21l
IHBvaW50IGluIHRoZSBuZWFyIGZ1dHVyZQorICAgICAgICB0aGUgbGF5b3V0X3Rlc3RzL3BvcnQv
KiBjb2RlIHNob3VsZCB1c2UgdGhpcyBhcyB3ZWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFs
c28gZGVsZXRlcyBhIGJ1bmNoIG9mIHVudXNlZCBjb2RlIGFuZCBmaXhlcyBzb21lCisgICAgICAg
IGNvbW1lbnRzIGluIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMxOQorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMC0xMC0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0eXBvIGluIGNocm9taXVtLWdwdSB0aGF0IHdhcyB0cnlpbmcgdG8KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYWEwYjkwYzQxNWYxZjYxNDJiMzYzODBhY2IxMGRlZjU3YjZmMWYzZAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9wYXRoLnB5CkBAIC0wLDAgKzEsNTggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyIiImdlbmVyaWMgcm91dGluZXMgdG8gY29udmVydCBwbGF0Zm9ybS1zcGVj
aWZpYyBwYXRocyB0byBVUklzLiIiIgoraW1wb3J0IHN5cworCisKK2RlZiBhYnNwYXRoX3RvX3Vy
aShwYXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtPU5vbmUpOgorICAgICIiIkNvbnZlcnRzIGEgcGxh
dGZvcm0tc3BlY2lmaWMgYWJzb2x1dGUgcGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKKyAgICBpZiBw
bGF0Zm9ybSBpcyBOb25lOgorICAgICAgICBwbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQorCisgICAg
aWYgcGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShw
YXRoKQorICAgIGlmIHBsYXRmb3JtID09ICdjeWd3aW4nOgorICAgICAgICByZXR1cm4gX3dpbnBh
dGhfdG9fdXJpKF9jeWdwYXRoKHBhdGgsIGV4ZWN1dGl2ZSkpCisgICAgcmV0dXJuIF91bml4eXBh
dGhfdG9fdXJpKHBhdGgpCisKKworZGVmIF93aW5wYXRoX3RvX3VyaShwYXRoKToKKyAgICAiIiJD
b252ZXJ0cyBhIHdpbmRvdyBhYnNvbHV0ZSBwYXRoIHRvIGEgZmlsZTogVVJMLiIiIgorICAgIHJl
dHVybiAiZmlsZTovLy8iICsgcGF0aC5yZXBsYWNlKCJcXCIsICIvIikKKworCitkZWYgX2N5Z3Bh
dGgocGF0aCwgZXhlY3V0aXZlKToKKyAgICAiIiJDb252ZXJ0cyBhIGN5Z3dpbiBwYXRoIHRvIFdp
bmRvd3MgcGF0aC4iIiIKKyAgICByZXR1cm4gZXhlY3V0aXZlLnJ1bl9jb21tYW5kKFsnY3lncGF0
aCcsICctd2EnLCBwYXRoXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKworCitkZWYgX3VuaXh5cGF0
aF90b191cmkocGF0aCk6CisgICAgIiIiQ29udmVydHMgYSB1bml4LXN0eWxlIHBhdGggdG8gYSBm
aWxlOiBVUkwuIiIiCisgICAgcmV0dXJuICJmaWxlOi8vIiArIHBhdGgKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGhfdW5pdHRl
c3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uYmY1YjFjNjZmMTdmNTUxOGQ1NDRhNDlmM2U4YmQzN2VmMjM0OGYy
MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNjUgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IHBhdGgKKworCitjbGFzcyBBYnNwYXRoVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ3MsICoqa3dh
cmdzKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmdzWzBdLCAnY3lncGF0aCcpCisgICAg
ICAgIHJldHVybiAnYzpcXGZvb1xcYmFyLmh0bWwnCisKKyAgICBkZWYgdGVzdF9hYnNwYXRoX3Rv
X3VyaV9jeWd3aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRo
X3RvX3VyaSgnL2N5Z2RyaXZlL2MvZm9vL2Jhci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2N5Z3dpbicpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCcpCisKKyAgICBkZWYg
dGVzdF9hYnNwYXRoX3RvX3VyaV9kYXJ3aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgiL2Zvby9iYXIuaHRtbCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAiZmlsZTovLy9mb28vYmFyLmh0bWwiKQorCisgICAgZGVm
IHRlc3RfYWJzcGF0aF90b191cmlfbGludXgyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28vYmFyLmh0bWwiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nbGludXgyJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8vZm9vL2Jhci5odG1sIikKKworICAgIGRl
ZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX3dpbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwYXRoLmFic3BhdGhfdG9fdXJpKCJjOlxcZm9vXFxiYXIuaHRtbCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSd3aW4zMicpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCIpCisKKwor
aWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVf
Y2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggZTU3
Y2ViMjE3MDBlNWFmYjdmNWVjMDMzMTVkMjg0MjQxYmI4NmZlZC4uN2YyYmU4MWRjNTgxODg5ZjBk
NmNhMTIxMDJkNmYzYTcyYTcxODVhMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGlu
ZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKQEAgLTU4LDggKzU4LDkgQEAgaW1wb3J0IHVybGxp
YgogaW1wb3J0IHppcGZpbGUKIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCB1
c2VyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBydW5fY29t
bWFuZCwgU2NyaXB0RXJyb3IKIGltcG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGFz
IHNjbQorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0
aXZlLCBTY3JpcHRFcnJvcgoraW1wb3J0IHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ucGF0aAogCiBp
bXBvcnQgcG9ydAogZnJvbSBsYXlvdXRfcGFja2FnZSBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMK
QEAgLTgxLDU4ICs4Miw2IEBAIEFSQ0hJVkVfRElSX05BTUVfRElDVCA9IHsnd2luJzogJ3dlYmtp
dC1yZWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsaW51eC1jYW5hcnknOiAnd2Via2l0
LXJlbC1saW51eC13ZWJraXQtb3JnJ30KIAogCi0jIEZJWE1FOiBTaG91bGQgYmUgcm9sbGVkIGlu
dG8gd2Via2l0cHkuRXhlY3V0aXZlCi1kZWYgcnVuX3NoZWxsX3dpdGhfcmV0dXJuX2NvZGUoY29t
bWFuZCwgcHJpbnRfb3V0cHV0PUZhbHNlKToKLSAgICAiIiJFeGVjdXRlcyBhIGNvbW1hbmQgYW5k
IHJldHVybnMgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyByZXR1cm4gY29kZS4KLQotICAgIEFyZ3M6
Ci0gICAgICBjb21tYW5kOiBwcm9ncmFtIGFuZCBhcmd1bWVudHMuCi0gICAgICBwcmludF9vdXRw
dXQ6IGlmIHRydWUsIHByaW50IHRoZSBjb21tYW5kIHJlc3VsdHMgdG8gc3RhbmRhcmQgb3V0cHV0
LgotCi0gICAgUmV0dXJuczoKLSAgICAgIGNvbW1hbmQgb3V0cHV0LCByZXR1cm4gY29kZQotICAg
ICIiIgotCi0gICAgIyBVc2UgYSBzaGVsbCBmb3Igc3ViY29tbWFuZHMgb24gV2luZG93cyB0byBn
ZXQgYSBQQVRIIHNlYXJjaC4KLSAgICAjIEZJWE1FOiBzaGVsbD1UcnVlIGlzIGEgdHJhaWwgb2Yg
dGVhcnMsIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICB1c2Vfc2hlbGwgPSBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnd2luJykKLSAgICAjIE5vdGU6IE5vdCB0aHJlYWQgc2FmZTogaHR0cDov
L2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKLSAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihjb21t
YW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9dXNlX3NoZWxsKQotICAgIGlmIHByaW50X291
dHB1dDoKLSAgICAgICAgb3V0cHV0X2FycmF5ID0gW10KLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgIGxpbmUgPSBwLnN0ZG91dC5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBub3Qg
bGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgcHJpbnRfb3V0cHV0
OgotICAgICAgICAgICAgICAgIHByaW50IGxpbmUuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgIG91
dHB1dF9hcnJheS5hcHBlbmQobGluZSkKLSAgICAgICAgb3V0cHV0ID0gJycuam9pbihvdXRwdXRf
YXJyYXkpCi0gICAgZWxzZToKLSAgICAgICAgb3V0cHV0ID0gcC5zdGRvdXQucmVhZCgpCi0gICAg
cC53YWl0KCkKLSAgICBwLnN0ZG91dC5jbG9zZSgpCi0KLSAgICByZXR1cm4gb3V0cHV0LCBwLnJl
dHVybmNvZGUKLQotCi0jIEZJWE1FOiBTaG91bGQgYmUgcm9sbGVkIGludG8gd2Via2l0cHkuRXhl
Y3V0aXZlCi1kZWYgcnVuX3NoZWxsKGNvbW1hbmQsIHByaW50X291dHB1dD1GYWxzZSk6Ci0gICAg
IiIiRXhlY3V0ZXMgYSBjb21tYW5kIGFuZCByZXR1cm5zIHRoZSBvdXRwdXQuCi0KLSAgICBBcmdz
OgotICAgICAgY29tbWFuZDogcHJvZ3JhbSBhbmQgYXJndW1lbnRzLgotICAgICAgcHJpbnRfb3V0
cHV0OiBpZiB0cnVlLCBwcmludCB0aGUgY29tbWFuZCByZXN1bHRzIHRvIHN0YW5kYXJkIG91dHB1
dC4KLQotICAgIFJldHVybnM6Ci0gICAgICBjb21tYW5kIG91dHB1dAotICAgICIiIgotCi0gICAg
b3V0cHV0LCByZXR1cm5fY29kZSA9IHJ1bl9zaGVsbF93aXRoX3JldHVybl9jb2RlKGNvbW1hbmQs
IHByaW50X291dHB1dCkKLSAgICByZXR1cm4gb3V0cHV0Ci0KLQogZGVmIGxvZ19kYXNoZWRfc3Ry
aW5nKHRleHQsIHBsYXRmb3JtLCBsb2dnaW5nX2xldmVsPWxvZ2dpbmcuSU5GTyk6CiAgICAgIiIi
TG9nIHRleHQgbWVzc2FnZSB3aXRoIGRhc2hlcyBvbiBib3RoIHNpZGVzLiIiIgogCkBAIC02Mjgs
NyArNTc3LDYgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgYmFzZV9maWxl
ID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX29wdGlvbnMuaHRtbF9kaXJlY3Rvcnks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlbGluZV9m
aWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnb2xkJykKLSAgICAgICAgIyBGSVhNRTogVGhpcyBhc3N1bWVzIHJ1bl9z
aGVsbCByZXR1cm5zIGEgYnl0ZSBhcnJheS4KICAgICAgICAgIyBXZSBzaG91bGQgYmUgdXNpbmcg
YW4gZXhwbGljaXQgZW5jb2RpbmcgaGVyZS4KICAgICAgICAgd2l0aCBvcGVuKGJhc2VfZmlsZSwg
IndiIikgYXMgZmlsZToKICAgICAgICAgICAgIGZpbGUud3JpdGUob3V0cHV0KQpAQCAtNjQyLDcg
KzU5MCw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgZGlm
Zl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKAogICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxlbmFtZSwKICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fcGxhdGZvcm0sICdkaWZmJykKLSAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBUaGlzIGFzc3VtZXMgcnVuX3NoZWxsIHJldHVybnMgYSBieXRlIGFycmF5LCBub3QgdW5p
Y29kZSgpCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRpZmZfZmlsZSwgJ3diJykgYXMgZmls
ZToKICAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShvdXRwdXQpCiAgICAgICAgICAgICAg
ICAgX2xvZy5pbmZvKCcgIEh0bWw6IGNyZWF0ZWQgYmFzZWxpbmUgZGlmZiBmaWxlOiAiJXMiLics
CkBAIC02OTQsMTQgKzY0MSwxOSBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0id2lkdGg6IDIwMCIgc3JjPSIlKHVyaSlz
IiAvPjwvYT48L3RkPicpCiAgICAgSFRNTF9UUiA9ICc8dHI+JXM8L3RyPicKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxhdGZvcm1zLCByZWJhc2VsaW5p
bmdfdGVzdHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9ucywg
cGxhdGZvcm1zLCByZWJhc2VsaW5pbmdfdGVzdHMsCisgICAgICAgICAgICAgICAgIGV4ZWN1dGl2
ZSk6CiAgICAgICAgIHNlbGYuX2h0bWxfZGlyZWN0b3J5ID0gb3B0aW9ucy5odG1sX2RpcmVjdG9y
eQogICAgICAgICBzZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0CiAgICAgICAgIHNlbGYu
X3BsYXRmb3JtcyA9IHBsYXRmb3JtcwogICAgICAgICBzZWxmLl9yZWJhc2VsaW5pbmdfdGVzdHMg
PSByZWJhc2VsaW5pbmdfdGVzdHMKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZl
CiAgICAgICAgIHNlbGYuX2h0bWxfZmlsZSA9IG9zLnBhdGguam9pbihvcHRpb25zLmh0bWxfZGly
ZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlYmFzZWxp
bmUuaHRtbCcpCiAKKyAgICBkZWYgYWJzcGF0aF90b191cmkoc2VsZiwgcGF0aCk6CisgICAgICAg
IHJldHVybiB3ZWJraXRweS5jb21tb24uc3lzdGVtLnBhdGguYWJzcGF0aF90b191cmkocGF0aCwg
c2VsZi5fZXhlY3V0aXZlKQorCiAgICAgZGVmIGdlbmVyYXRlX2h0bWwoc2VsZik6CiAgICAgICAg
ICIiIkdlbmVyYXRlIGh0bWwgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29u
LiIiIgogCkBAIC03NjksMTQgKzcyMSwxMyBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6
CiAgICAgICAgIGxpbmtzID0gJycKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob2xkX2ZpbGUp
OgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgewotICAgICAgICAgICAgICAg
ICd1cmknOiBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmkob2xkX2ZpbGUpLAorICAg
ICAgICAgICAgICAgICd1cmknOiBzZWxmLmFic3BhdGhfdG9fdXJpKG9sZF9maWxlKSwKICAgICAg
ICAgICAgICAgICAnbmFtZSc6IGJhc2VsaW5lX2ZpbGVuYW1lfQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgX2xvZy5pbmZvKCcgICAgTm8gb2xkIGJhc2VsaW5lIGZpbGU6ICIlcyInLCBvbGRf
ZmlsZSkKICAgICAgICAgICAgIGxpbmtzICs9IHNlbGYuSFRNTF9URF9OT0xJTksgJSAnJwogCi0g
ICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJpJzogc2VsZi5fdGFyZ2V0X3BvcnQu
ZmlsZW5hbWVfdG9fdXJpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d19maWxlKSwKKyAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBzZWxmLmFi
c3BhdGhfdG9fdXJpKG5ld19maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICduYW1lJzogYmFzZWxpbmVfZmlsZW5hbWV9CiAKICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jl
c3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2h0bWxfZGlyZWN0b3J5LApAQCAtNzg0LDggKzczNSw4
IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdkaWZmJykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgQmFz
ZWxpbmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxlKQogICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhkaWZmX2ZpbGUpOgotICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1
cmknOiBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmkoCi0gICAgICAgICAgICAgICAg
ZGlmZl9maWxlKSwgJ25hbWUnOiAnRGlmZid9CisgICAgICAgICAgICBsaW5rcyArPSBodG1sX3Rk
X2xpbmsgJSB7J3VyaSc6IHNlbGYuYWJzcGF0aF90b191cmkoZGlmZl9maWxlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdEaWZmJ30KICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIGJhc2VsaW5lIGRpZmYgZmlsZTogIiVz
IicsIGRpZmZfZmlsZSkKICAgICAgICAgICAgIGxpbmtzICs9IHNlbGYuSFRNTF9URF9OT0xJTksg
JSAnJwpAQCAtODI1LDggKzc3Niw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAg
ICAgICAgaWYgcm93czoKICAgICAgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihzZWxm
Ll90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgIGh0bWwgPSBzZWxmLkhUTUxfVFJfVEVT
VCAlICgKLSAgICAgICAgICAgICAgICBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmko
dGVzdF9wYXRoKSwgdGVzdCkKKyAgICAgICAgICAgIGh0bWwgPSBzZWxmLkhUTUxfVFJfVEVTVCAl
IChzZWxmLmFic3BhdGhfdG9fdXJpKHRlc3RfcGF0aCksIHRlc3QpCiAgICAgICAgICAgICBodG1s
ICs9IHNlbGYuSFRNTF9URVNUX0RFVEFJTCAlICcgJy5qb2luKHJvd3MpCiAKICAgICAgICAgICAg
IF9sb2cuZGVidWcoJyAgICBodG1sIGZvciB0ZXN0OiAlcycsIGh0bWwpCkBAIC04NjcsNyArODE3
LDcgQEAgZGVmIGdldF9ob3N0X3BvcnRfb2JqZWN0KG9wdGlvbnMpOgogICAgIHJldHVybiBwb3J0
X29iagogCiAKLWRlZiBtYWluKCk6CitkZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkpOgog
ICAgICIiIk1haW4gZnVuY3Rpb24gdG8gcHJvZHVjZSBuZXcgYmFzZWxpbmVzLiIiIgogCiAgICAg
b3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCkBAIC05OTIsNyArOTQyLDgg
QEAgZGVmIG1haW4oKToKICAgICBodG1sX2dlbmVyYXRvciA9IEh0bWxHZW5lcmF0b3IodGFyZ2V0
X3BvcnRfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5lX3BsYXRmb3JtcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZSkKICAgICBodG1sX2dl
bmVyYXRvci5nZW5lcmF0ZV9odG1sKCkKICAgICBpZiBub3Qgb3B0aW9ucy5xdWlldDoKICAgICAg
ICAgaHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rl
c3RzX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggOWJh
M2Q2YmQzN2FkNDJkODE5ODk3ODM2NmQ2MGY3YmY1ZDNhZDE2Ny4uZmNlNmU4MmNhZWY4MzVhNzMz
OTgwODRiNjkxNDgwMDhkYjI2YWU2OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5p
dHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTMwLDEwICsz
MCwxMiBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVz
dHMucHkuIiIiCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cyBpbXBvcnQgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJy
b3IKIAogCiBjbGFzcyBNb2NrUG9ydChvYmplY3QpOgpAQCAtNDUsOCArNDcsOSBAQCBjbGFzcyBN
b2NrUG9ydChvYmplY3QpOgogCiAKIGNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25lCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rvcnk9Tm9u
ZSk6CisgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAg
c2VsZi5odG1sX2RpcmVjdG9yeSA9IGh0bWxfZGlyZWN0b3J5CiAKIAogZGVmIGdldF9tb2NrX2dl
dChjb25maWdfZXhwZWN0YXRpb25zKToKQEAgLTExOCw1ICsxMjEsMzEgQEAgY2xhc3MgVGVzdFJl
YmFzZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShy
ZWJhc2VsaW5lci5fZGlmZl9iYXNlbGluZXMoaW1hZ2UsIGltYWdlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbWFnZT1UcnVlKSkKIAor
CitjbGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIG1h
a2VfZ2VuZXJhdG9yKHNlbGYsIHRlc3RzKToKKyAgICAgICAgcmV0dXJuIHJlYmFzZWxpbmVfY2hy
b21pdW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoCisgICAgICAgICAgICB0YXJnZXRfcG9y
dD1Ob25lLAorICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyhodG1sX2RpcmVjdG9yeT0i
L3RtcCIpLAorICAgICAgICAgICAgcGxhdGZvcm1zPVsnbWFjJ10sCisgICAgICAgICAgICByZWJh
c2VsaW5pbmdfdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBleGVjdXRpdmU9RXhlY3V0aXZlKCkp
CisKKyAgICBkZWYgdGVzdF9nZW5lcmF0ZV9iYXNlbGluZV9saW5rcyhzZWxmKToKKyAgICAgICAg
b3JpZ19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQorICAgICAgICBvcmlnX2V4aXN0cyA9IG9zLnBh
dGguZXhpc3RzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ2Rh
cndpbicKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKKyAgICAg
ICAgICAgIGdlbmVyYXRvciA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0Il0pCisgICAg
ICAgICAgICBsaW5rcyA9IGdlbmVyYXRvci5fZ2VuZXJhdGVfYmFzZWxpbmVfbGlua3MoImZvbyIs
ICIudHh0IiwgIm1hYyIpCisgICAgICAgICAgICBleHBlY3RlZF9saW5rcyA9ICc8dGQgYWxpZ249
Y2VudGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtb2xkLnR4dCI+Zm9v
LWV4cGVjdGVkLnR4dDwvYT48L3RkPjx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90
bXAvZm9vLWV4cGVjdGVkLW1hYy1uZXcudHh0Ij5mb28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRk
IGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLWRpZmYu
dHh0Ij5EaWZmPC9hPjwvdGQ+JworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5rcywg
ZXhwZWN0ZWRfbGlua3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMucGxhdGZv
cm0gPSBvcmlnX3BsYXRmb3JtCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IG9yaWdfZXhp
c3RzCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70164</attachid>
            <date>2010-10-07 16:10:36 -0700</date>
            <delta_ts>2010-10-07 16:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47319-20101007161035.patch</filename>
            <type>text/plain</type>
            <size>19662</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MzU1YWVlOGVkNmYxNGU3MzhlYzhhZThlODViYTlhNmUzNjE0NmEzLi5iMjg5ZjNm
Mjc1NjNkZDU1NTU5ZGI3MzU3YjY0MzZmYjE1Yjk2NjVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAK
IDIwMTAtMTAtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgcmVsaWVkIG9uIHRoZSBmaWxlbmFtZV90b191cmkoKQorICAgICAg
ICBob29rIGluIHRoZSBQb3J0IGluZnJhc3RydWN0dXJlIHRvIGdlbmVyYXRlIFVSSXMgZm9yIHRo
ZSBmaWxlcworICAgICAgICBpbiBpdHMgc3VtbWFyeSBIVE1MIHJlcG9ydDsgaG93ZXZlciwgdGhh
dCBtZXRob2QgaXMgc3VwcG9zZWQgdG8gb25seQorICAgICAgICBiZSB1c2VkIGZvciB0ZXN0IGZp
bGVzIChhbmQgc2hvdWxkIHJlYWxseSBiZSByZW5hbWVkKSwgc28gdGhpcyB3b3VsZAorICAgICAg
ICBjcmFzaC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3ICJwYXRoIiBtb2R1bGUg
dG8gdGhlIHN5c3RlbSBwYWNrYWdlIHdpdGggYQorICAgICAgICByb3V0aW5lIGNhbGxlZCBhYnNw
YXRoX3RvX3VyaSgpIHRoYXQgaGFuZGxlcyBjb252ZXJ0aW5nIHBhdGhzIHRvCisgICAgICAgIGZp
bGU6IFVSSXMgaW5kZXBlbmRlbnRseSBvZiBhbnl0aGluZyBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBh
Y2thZ2UsCisgICAgICAgIGFuZCBjaGFuZ2VzIHRoZSBjb2RlIHRvIHVzZSB0aGlzLiBBdCBzb21l
IHBvaW50IGluIHRoZSBuZWFyIGZ1dHVyZQorICAgICAgICB0aGUgbGF5b3V0X3Rlc3RzL3BvcnQv
KiBjb2RlIHNob3VsZCB1c2UgdGhpcyBhcyB3ZWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFs
c28gZGVsZXRlcyBhIGJ1bmNoIG9mIHVudXNlZCBjb2RlIGFuZCBmaXhlcyBzb21lCisgICAgICAg
IGNvbW1lbnRzIGluIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMxOQorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMC0xMC0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0eXBvIGluIGNocm9taXVtLWdwdSB0aGF0IHdhcyB0cnlpbmcgdG8KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNjY2YTUyYzI4Mzc0NDA0MjQ2YWM2YmJlMWZjZDljYzAyZTFhMzg0NAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9wYXRoLnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJnZW5lcmlj
IHJvdXRpbmVzIHRvIGNvbnZlcnQgcGxhdGZvcm0tc3BlY2lmaWMgcGF0aHMgdG8gVVJJcy4iIiIK
K2ltcG9ydCBzeXMKK2ltcG9ydCB1cmxsaWIKKworCitkZWYgYWJzcGF0aF90b191cmkocGF0aCwg
ZXhlY3V0aXZlLCBwbGF0Zm9ybT1Ob25lKToKKyAgICAiIiJDb252ZXJ0cyBhIHBsYXRmb3JtLXNw
ZWNpZmljIGFic29sdXRlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCisgICAgaWYgcGxhdGZvcm0g
aXMgTm9uZToKKyAgICAgICAgcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KKyAgICByZXR1cm4gImZp
bGU6IiArIF9lc2NhcGUoX2NvbnZlcnRfcGF0aChwYXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtKSkK
KworCitkZWYgX2VzY2FwZShwYXRoKToKKyAgICAiIiJIYW5kbGUgYW55IGNoYXJhY3RlcnMgaW4g
dGhlIHBhdGggdGhhdCBzaG91bGQgYmUgZXNjYXBlZC4iIiIKKyAgICAjIEZJWE1FOiB3ZWIgYnJv
d3NlcnMgZG9uJ3QgYXBwZWFyIHRvIGJsaW5kbHkgcXVvdGUgZXZlcnkgY2hhcmFjdGVyCisgICAg
IyB3aGVuIGNvbnZlcnRpbmcgZmlsZW5hbWVzIHRvIGZpbGVzLiBJbnN0ZWFkIG9mIHVzaW5nIHVy
bGxpYidzIGRlZmF1bHQKKyAgICAjIHJ1bGVzLCB3ZSBhbGxvdyBhIHNtYWxsIGxpc3Qgb2Ygb3Ro
ZXIgY2hhcmFjdGVycyB0aHJvdWdoIHVuLWVzY2FwZWQuCisgICAgIyBJdCdzIHVuY2xlYXIgaWYg
dGhpcyBpcyB0aGUgYmVzdCBwb3NzaWJsZSBzb2x1dGlvbi4KKyAgICByZXR1cm4gdXJsbGliLnF1
b3RlKHBhdGgsIHNhZmU9Jy8rOicpCisKKworZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0
aXZlLCBwbGF0Zm9ybSk6CisgICAgIiIiSGFuZGxlcyBhbnkgb3Mtc3BlY2lmaWMgcGF0aCBzZXBh
cmF0b3JzLCBtYXBwaW5ncywgZXRjLiIiIgorICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6Cisg
ICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkocGF0aCkKKyAgICBpZiBwbGF0Zm9ybSA9PSAn
Y3lnd2luJzoKKyAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShfY3lncGF0aChwYXRoLCBl
eGVjdXRpdmUpKQorICAgIHJldHVybiBfdW5peHlwYXRoX3RvX3VyaShwYXRoKQorCisKK2RlZiBf
d2lucGF0aF90b191cmkocGF0aCk6CisgICAgIiIiQ29udmVydHMgYSB3aW5kb3cgYWJzb2x1dGUg
cGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKKyAgICByZXR1cm4gIi8vLyIgKyBwYXRoLnJlcGxhY2Uo
IlxcIiwgIi8iKQorCisKK2RlZiBfY3lncGF0aChwYXRoLCBleGVjdXRpdmUpOgorICAgICIiIkNv
bnZlcnRzIGEgY3lnd2luIHBhdGggdG8gV2luZG93cyBwYXRoLiIiIgorICAgIHJldHVybiBleGVj
dXRpdmUucnVuX2NvbW1hbmQoWydjeWdwYXRoJywgJy13YScsIHBhdGhdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSkKKworCitkZWYgX3VuaXh5
cGF0aF90b191cmkocGF0aCk6CisgICAgIiIiQ29udmVydHMgYSB1bml4LXN0eWxlIHBhdGggdG8g
YSBmaWxlOiBVUkwuIiIiCisgICAgcmV0dXJuICIvLyIgKyBwYXRoCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjczMGI4ZGExNzI4ODYzMjM5ODYzYmJkNmRlYmU3ZjkzNDM2MzA1OTQK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9z
eXN0ZW0vcGF0aF91bml0dGVzdC5weQpAQCAtMCwwICsxLDEwMCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgcGF0aAorCisKK2NsYXNzIEFic3BhdGhUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgKiprd2Fy
Z3MpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICdjeWdwYXRoJykKKyAgICAg
ICAgcmV0dXJuIHNlbGYuY3lncGF0aF9yZXN1bHQKKworICAgIGRlZiBhc3NlcnRNYXRjaChzZWxm
LCB0ZXN0X3BhdGgsIGV4cGVjdGVkX3VyaSwKKyAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm0s
IGN5Z3BhdGhfcmVzdWx0PU5vbmUpOgorICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnY3lnd2luJzoK
KyAgICAgICAgICAgIHNlbGYuY3lncGF0aF9yZXN1bHQgPSBjeWdwYXRoX3Jlc3VsdAorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9wYXRoLCBleGVjdXRp
dmU9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBs
YXRmb3JtPXBsYXRmb3JtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF91cmkp
CisKKyAgICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9jeWd3aW4oc2VsZik6CisgICAgICAgIHNl
bGYuYXNzZXJ0TWF0Y2goJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjeWdw
YXRoX3Jlc3VsdD0nYzpcXGZvb1xcYmFyLmh0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHBhdGguYWJzcGF0aF90b191cmkoJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdjeWd3
aW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9jOi9mb28vYmFyLmh0bWwn
KQorCisgICAgZGVmIHRlc3RfYWJzcGF0aF90b191cmlfZGFyd2luKHNlbGYpOgorICAgICAgICBz
ZWxmLmFzc2VydE1hdGNoKCcvZm9vL2Jhci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnZmlsZTovLy9mb28vYmFyLmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRm
b3JtPSdkYXJ3aW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191
cmkoIi9mb28vYmFyLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFyd2luJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgImZpbGU6Ly8vZm9vL2Jhci5odG1sIikKKworICAgIGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJp
X2xpbnV4MihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2Zvby9iYXIuaHRtbCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vZm9vL2Jhci5odG1sJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nZGFyd2luJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwYXRoLmFic3BhdGhfdG9fdXJpKCIvZm9vL2Jhci5odG1sIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1zZWxmLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2xpbnV4Micp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICJmaWxlOi8vL2Zvby9iYXIuaHRtbCIpCisKKyAg
ICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV93aW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0
TWF0Y2goJ2M6XFxmb29cXGJhci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmls
ZTovLy9jOi9mb28vYmFyLmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3Jt
PSd3aW4zMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgi
YzpcXGZvb1xcYmFyLmh0bWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlY3V0aXZlPXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBwbGF0Zm9ybT0nd2luMzInKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAiZmlsZTovLy9jOi9mb28vYmFyLmh0bWwiKQorCisgICAgZGVmIHRlc3RfYWJzcGF0aF90b191
cmlfZXNjYXBpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2goJy9mb28vYmFyICsg
YmF6JT8uaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vZm9vL2JhciUy
MCslMjBiYXolMjUlM0YuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09
J2RhcndpbicpCisgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2goJy9mb28vYmFyICsgYmF6JT8uaHRt
bCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vZm9vL2JhciUyMCslMjBiYXol
MjUlM0YuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZvcm09J2xpbnV4Micp
CisKKyAgICAgICAgIyBOb3RlIHRoYXQgeW91IGNhbid0IGhhdmUgJz8nIGluIGEgZmlsZW5hbWUg
b24gd2luZG93cy4KKyAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2N5Z2RyaXZlL2MvZm9vL2Jh
ciArIGJheiUuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9v
L2JhciUyMCslMjBiYXolMjUuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGxhdGZv
cm09J2N5Z3dpbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgY3lncGF0aF9yZXN1bHQ9J2M6
XFxmb29cXGJhciArIGJheiUuaHRtbCcpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
KyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJv
bWl1bV93ZWJraXRfdGVzdHMucHkKaW5kZXggZTU3Y2ViMjE3MDBlNWFmYjdmNWVjMDMzMTVkMjg0
MjQxYmI4NmZlZC4uYzIwYjkwYjljZGNjYzI0ZTkzMWJhNTdjNWVhMDNlODhjNWE4NThkZiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNl
bGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMucHkK
QEAgLTU3LDggKzU3LDkgQEAgaW1wb3J0IHRpbWUKIGltcG9ydCB1cmxsaWIKIGltcG9ydCB6aXBm
aWxlCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aAogZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtIGltcG9ydCB1c2VyCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IK
IGltcG9ydCB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGFzIHNjbQogCiBpbXBvcnQgcG9y
dApAQCAtODEsNTggKzgyLDYgQEAgQVJDSElWRV9ESVJfTkFNRV9ESUNUID0geyd3aW4nOiAnd2Vi
a2l0LXJlbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpbnV4LWNhbmFyeSc6ICd3ZWJr
aXQtcmVsLWxpbnV4LXdlYmtpdC1vcmcnfQogCiAKLSMgRklYTUU6IFNob3VsZCBiZSByb2xsZWQg
aW50byB3ZWJraXRweS5FeGVjdXRpdmUKLWRlZiBydW5fc2hlbGxfd2l0aF9yZXR1cm5fY29kZShj
b21tYW5kLCBwcmludF9vdXRwdXQ9RmFsc2UpOgotICAgICIiIkV4ZWN1dGVzIGEgY29tbWFuZCBh
bmQgcmV0dXJucyB0aGUgb3V0cHV0IGFuZCBwcm9jZXNzIHJldHVybiBjb2RlLgotCi0gICAgQXJn
czoKLSAgICAgIGNvbW1hbmQ6IHByb2dyYW0gYW5kIGFyZ3VtZW50cy4KLSAgICAgIHByaW50X291
dHB1dDogaWYgdHJ1ZSwgcHJpbnQgdGhlIGNvbW1hbmQgcmVzdWx0cyB0byBzdGFuZGFyZCBvdXRw
dXQuCi0KLSAgICBSZXR1cm5zOgotICAgICAgY29tbWFuZCBvdXRwdXQsIHJldHVybiBjb2RlCi0g
ICAgIiIiCi0KLSAgICAjIFVzZSBhIHNoZWxsIGZvciBzdWJjb21tYW5kcyBvbiBXaW5kb3dzIHRv
IGdldCBhIFBBVEggc2VhcmNoLgotICAgICMgRklYTUU6IHNoZWxsPVRydWUgaXMgYSB0cmFpbCBv
ZiB0ZWFycywgYW5kIHNob3VsZCBiZSByZW1vdmVkLgotICAgIHVzZV9zaGVsbCA9IHN5cy5wbGF0
Zm9ybS5zdGFydHN3aXRoKCd3aW4nKQotICAgICMgTm90ZTogTm90IHRocmVhZCBzYWZlOiBodHRw
Oi8vYnVncy5weXRob24ub3JnL2lzc3VlMjMyMAotICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKGNv
bW1hbmQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
c3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBzaGVsbD11c2Vfc2hlbGwpCi0gICAgaWYgcHJpbnRf
b3V0cHV0OgotICAgICAgICBvdXRwdXRfYXJyYXkgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgot
ICAgICAgICAgICAgbGluZSA9IHAuc3Rkb3V0LnJlYWRsaW5lKCkKLSAgICAgICAgICAgIGlmIG5v
dCBsaW5lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBwcmludF9vdXRw
dXQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQgbGluZS5zdHJpcCgnXG4nKQotICAgICAgICAgICAg
b3V0cHV0X2FycmF5LmFwcGVuZChsaW5lKQotICAgICAgICBvdXRwdXQgPSAnJy5qb2luKG91dHB1
dF9hcnJheSkKLSAgICBlbHNlOgotICAgICAgICBvdXRwdXQgPSBwLnN0ZG91dC5yZWFkKCkKLSAg
ICBwLndhaXQoKQotICAgIHAuc3Rkb3V0LmNsb3NlKCkKLQotICAgIHJldHVybiBvdXRwdXQsIHAu
cmV0dXJuY29kZQotCi0KLSMgRklYTUU6IFNob3VsZCBiZSByb2xsZWQgaW50byB3ZWJraXRweS5F
eGVjdXRpdmUKLWRlZiBydW5fc2hlbGwoY29tbWFuZCwgcHJpbnRfb3V0cHV0PUZhbHNlKToKLSAg
ICAiIiJFeGVjdXRlcyBhIGNvbW1hbmQgYW5kIHJldHVybnMgdGhlIG91dHB1dC4KLQotICAgIEFy
Z3M6Ci0gICAgICBjb21tYW5kOiBwcm9ncmFtIGFuZCBhcmd1bWVudHMuCi0gICAgICBwcmludF9v
dXRwdXQ6IGlmIHRydWUsIHByaW50IHRoZSBjb21tYW5kIHJlc3VsdHMgdG8gc3RhbmRhcmQgb3V0
cHV0LgotCi0gICAgUmV0dXJuczoKLSAgICAgIGNvbW1hbmQgb3V0cHV0Ci0gICAgIiIiCi0KLSAg
ICBvdXRwdXQsIHJldHVybl9jb2RlID0gcnVuX3NoZWxsX3dpdGhfcmV0dXJuX2NvZGUoY29tbWFu
ZCwgcHJpbnRfb3V0cHV0KQotICAgIHJldHVybiBvdXRwdXQKLQotCiBkZWYgbG9nX2Rhc2hlZF9z
dHJpbmcodGV4dCwgcGxhdGZvcm0sIGxvZ2dpbmdfbGV2ZWw9bG9nZ2luZy5JTkZPKToKICAgICAi
IiJMb2cgdGV4dCBtZXNzYWdlIHdpdGggZGFzaGVzIG9uIGJvdGggc2lkZXMuIiIiCiAKQEAgLTYy
OCw3ICs1NzcsNiBAQCBjbGFzcyBSZWJhc2VsaW5lcihvYmplY3QpOgogICAgICAgICBiYXNlX2Zp
bGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoc2VsZi5fb3B0aW9ucy5odG1sX2RpcmVjdG9y
eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5l
X2ZpbGVuYW1lLCBzZWxmLl9wbGF0Zm9ybSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdvbGQnKQotICAgICAgICAjIEZJWE1FOiBUaGlzIGFzc3VtZXMgcnVu
X3NoZWxsIHJldHVybnMgYSBieXRlIGFycmF5LgogICAgICAgICAjIFdlIHNob3VsZCBiZSB1c2lu
ZyBhbiBleHBsaWNpdCBlbmNvZGluZyBoZXJlLgogICAgICAgICB3aXRoIG9wZW4oYmFzZV9maWxl
LCAid2IiKSBhcyBmaWxlOgogICAgICAgICAgICAgZmlsZS53cml0ZShvdXRwdXQpCkBAIC02NDIs
NyArNTkwLDYgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBk
aWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVsbHBhdGgoCiAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuaHRtbF9kaXJlY3RvcnksIGJhc2VsaW5lX2ZpbGVuYW1lLAogICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9wbGF0Zm9ybSwgJ2RpZmYnKQotICAgICAgICAgICAgICAgICMg
RklYTUU6IFRoaXMgYXNzdW1lcyBydW5fc2hlbGwgcmV0dXJucyBhIGJ5dGUgYXJyYXksIG5vdCB1
bmljb2RlKCkKICAgICAgICAgICAgICAgICB3aXRoIG9wZW4oZGlmZl9maWxlLCAnd2InKSBhcyBm
aWxlOgogICAgICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKG91dHB1dCkKICAgICAgICAgICAg
ICAgICBfbG9nLmluZm8oJyAgSHRtbDogY3JlYXRlZCBiYXNlbGluZSBkaWZmIGZpbGU6ICIlcyIu
JywKQEAgLTY5NCwxNCArNjQxLDIwIEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAg
ICAgICAgICAgICAgICAgICAgICAgICc8aW1nIHN0eWxlPSJ3aWR0aDogMjAwIiBzcmM9IiUodXJp
KXMiIC8+PC9hPjwvdGQ+JykKICAgICBIVE1MX1RSID0gJzx0cj4lczwvdHI+JwogCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHRhcmdldF9wb3J0LCBvcHRpb25zLCBwbGF0Zm9ybXMsIHJlYmFzZWxp
bmluZ190ZXN0cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldF9wb3J0LCBvcHRpb25z
LCBwbGF0Zm9ybXMsIHJlYmFzZWxpbmluZ190ZXN0cywKKyAgICAgICAgICAgICAgICAgZXhlY3V0
aXZlKToKICAgICAgICAgc2VsZi5faHRtbF9kaXJlY3RvcnkgPSBvcHRpb25zLmh0bWxfZGlyZWN0
b3J5CiAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0ID0gdGFyZ2V0X3BvcnQKICAgICAgICAgc2Vs
Zi5fcGxhdGZvcm1zID0gcGxhdGZvcm1zCiAgICAgICAgIHNlbGYuX3JlYmFzZWxpbmluZ190ZXN0
cyA9IHJlYmFzZWxpbmluZ190ZXN0cworICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRp
dmUKICAgICAgICAgc2VsZi5faHRtbF9maWxlID0gb3MucGF0aC5qb2luKG9wdGlvbnMuaHRtbF9k
aXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmViYXNl
bGluZS5odG1sJykKIAorICAgIGRlZiBhYnNwYXRoX3RvX3VyaShzZWxmLCBmaWxlbmFtZSk6Cisg
ICAgICAgICIiIkNvbnZlcnRzIGFuIGFic29sdXRlIHBhdGggdG8gYSBmaWxlOiBVUkkuIiIiCisg
ICAgICAgIHJldHVybiBwYXRoLmFic3BhdGhfdG9fdXJpKGZpbGVuYW1lLCBzZWxmLl9leGVjdXRp
dmUpCisKICAgICBkZWYgZ2VuZXJhdGVfaHRtbChzZWxmKToKICAgICAgICAgIiIiR2VuZXJhdGUg
aHRtbCBmaWxlIGZvciByZWJhc2VsaW5pbmcgcmVzdWx0IGNvbXBhcmlzb24uIiIiCiAKQEAgLTc2
OSwxNCArNzIyLDEzIEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgbGlu
a3MgPSAnJwogICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvbGRfZmlsZSk6CiAgICAgICAgICAg
ICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7Ci0gICAgICAgICAgICAgICAgJ3VyaSc6IHNlbGYu
X3RhcmdldF9wb3J0LmZpbGVuYW1lX3RvX3VyaShvbGRfZmlsZSksCisgICAgICAgICAgICAgICAg
J3VyaSc6IHNlbGYuYWJzcGF0aF90b191cmkob2xkX2ZpbGUpLAogICAgICAgICAgICAgICAgICdu
YW1lJzogYmFzZWxpbmVfZmlsZW5hbWV9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBfbG9n
LmluZm8oJyAgICBObyBvbGQgYmFzZWxpbmUgZmlsZTogIiVzIicsIG9sZF9maWxlKQogICAgICAg
ICAgICAgbGlua3MgKz0gc2VsZi5IVE1MX1REX05PTElOSyAlICcnCiAKLSAgICAgICAgbGlua3Mg
Kz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191
cmkoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGUpLAorICAg
ICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3VyaSc6IHNlbGYuYWJzcGF0aF90b191cmko
bmV3X2ZpbGUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiBiYXNl
bGluZV9maWxlbmFtZX0KIAogICAgICAgICBkaWZmX2ZpbGUgPSBnZXRfcmVzdWx0X2ZpbGVfZnVs
bHBhdGgoc2VsZi5faHRtbF9kaXJlY3RvcnksCkBAIC03ODQsOCArNzM2LDggQEAgY2xhc3MgSHRt
bEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ2RpZmYnKQogICAgICAgICBfbG9nLmluZm8oJyAgICBCYXNlbGluZSBkaWZmIGZp
bGU6ICIlcyInLCBkaWZmX2ZpbGUpCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRpZmZfZmls
ZSk6Ci0gICAgICAgICAgICBsaW5rcyArPSBodG1sX3RkX2xpbmsgJSB7J3VyaSc6IHNlbGYuX3Rh
cmdldF9wb3J0LmZpbGVuYW1lX3RvX3VyaSgKLSAgICAgICAgICAgICAgICBkaWZmX2ZpbGUpLCAn
bmFtZSc6ICdEaWZmJ30KKyAgICAgICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJp
Jzogc2VsZi5hYnNwYXRoX3RvX3VyaShkaWZmX2ZpbGUpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICduYW1lJzogJ0RpZmYnfQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgX2xvZy5pbmZvKCcgICAgTm8gYmFzZWxpbmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxl
KQogICAgICAgICAgICAgbGlua3MgKz0gc2VsZi5IVE1MX1REX05PTElOSyAlICcnCkBAIC04MjUs
OCArNzc3LDcgQEAgY2xhc3MgSHRtbEdlbmVyYXRvcihvYmplY3QpOgogICAgICAgICBpZiByb3dz
OgogICAgICAgICAgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYuX3RhcmdldF9wb3J0
LmxheW91dF90ZXN0c19kaXIoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB0ZXN0KQotICAgICAgICAgICAgaHRtbCA9IHNlbGYuSFRNTF9UUl9URVNUICUgKAotICAgICAg
ICAgICAgICAgIHNlbGYuX3RhcmdldF9wb3J0LmZpbGVuYW1lX3RvX3VyaSh0ZXN0X3BhdGgpLCB0
ZXN0KQorICAgICAgICAgICAgaHRtbCA9IHNlbGYuSFRNTF9UUl9URVNUICUgKHNlbGYuYWJzcGF0
aF90b191cmkodGVzdF9wYXRoKSwgdGVzdCkKICAgICAgICAgICAgIGh0bWwgKz0gc2VsZi5IVE1M
X1RFU1RfREVUQUlMICUgJyAnLmpvaW4ocm93cykKIAogICAgICAgICAgICAgX2xvZy5kZWJ1Zygn
ICAgIGh0bWwgZm9yIHRlc3Q6ICVzJywgaHRtbCkKQEAgLTg2Nyw3ICs4MTgsNyBAQCBkZWYgZ2V0
X2hvc3RfcG9ydF9vYmplY3Qob3B0aW9ucyk6CiAgICAgcmV0dXJuIHBvcnRfb2JqCiAKIAotZGVm
IG1haW4oKToKK2RlZiBtYWluKGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAgICAgIiIiTWFpbiBm
dW5jdGlvbiB0byBwcm9kdWNlIG5ldyBiYXNlbGluZXMuIiIiCiAKICAgICBvcHRpb25fcGFyc2Vy
ID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKQEAgLTk5Miw3ICs5NDMsOCBAQCBkZWYgbWFpbigp
OgogICAgIGh0bWxfZ2VuZXJhdG9yID0gSHRtbEdlbmVyYXRvcih0YXJnZXRfcG9ydF9vYmosCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmVfcGxhdGZvcm1zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHMpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlYmFzZWxpbmluZ190ZXN0cywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPWV4ZWN1dGl2ZSkKICAgICBodG1sX2dlbmVy
YXRvci5nZW5lcmF0ZV9odG1sKCkKICAgICBpZiBub3Qgb3B0aW9ucy5xdWlldDoKICAgICAgICAg
aHRtbF9nZW5lcmF0b3Iuc2hvd19odG1sKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKaW5kZXggOWJhM2Q2
YmQzN2FkNDJkODE5ODk3ODM2NmQ2MGY3YmY1ZDNhZDE2Ny4uZmNlNmU4MmNhZWY4MzVhNzMzOTgw
ODRiNjkxNDgwMDhkYjI2YWU2OCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcmVi
YXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHNfdW5pdHRlc3QucHkKQEAgLTMwLDEwICszMCwx
MiBAQAogIiIiVW5pdCB0ZXN0cyBmb3IgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMu
cHkuIiIiCiAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzIGltcG9ydCBwb3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cyBpbXBvcnQgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgU2NyaXB0RXJyb3IK
IAogCiBjbGFzcyBNb2NrUG9ydChvYmplY3QpOgpAQCAtNDUsOCArNDcsOSBAQCBjbGFzcyBNb2Nr
UG9ydChvYmplY3QpOgogCiAKIGNsYXNzIE1vY2tPcHRpb25zKG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBOb25lCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvbmZpZ3VyYXRpb249Tm9uZSwgaHRtbF9kaXJlY3Rvcnk9Tm9uZSk6
CisgICAgICAgIHNlbGYuY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2Vs
Zi5odG1sX2RpcmVjdG9yeSA9IGh0bWxfZGlyZWN0b3J5CiAKIAogZGVmIGdldF9tb2NrX2dldChj
b25maWdfZXhwZWN0YXRpb25zKToKQEAgLTExOCw1ICsxMjEsMzEgQEAgY2xhc3MgVGVzdFJlYmFz
ZWxpbmVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZWJh
c2VsaW5lci5fZGlmZl9iYXNlbGluZXMoaW1hZ2UsIGltYWdlLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19pbWFnZT1UcnVlKSkKIAorCitj
bGFzcyBUZXN0SHRtbEdlbmVyYXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIG1ha2Vf
Z2VuZXJhdG9yKHNlbGYsIHRlc3RzKToKKyAgICAgICAgcmV0dXJuIHJlYmFzZWxpbmVfY2hyb21p
dW1fd2Via2l0X3Rlc3RzLkh0bWxHZW5lcmF0b3IoCisgICAgICAgICAgICB0YXJnZXRfcG9ydD1O
b25lLAorICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyhodG1sX2RpcmVjdG9yeT0iL3Rt
cCIpLAorICAgICAgICAgICAgcGxhdGZvcm1zPVsnbWFjJ10sCisgICAgICAgICAgICByZWJhc2Vs
aW5pbmdfdGVzdHM9dGVzdHMsCisgICAgICAgICAgICBleGVjdXRpdmU9RXhlY3V0aXZlKCkpCisK
KyAgICBkZWYgdGVzdF9nZW5lcmF0ZV9iYXNlbGluZV9saW5rcyhzZWxmKToKKyAgICAgICAgb3Jp
Z19wbGF0Zm9ybSA9IHN5cy5wbGF0Zm9ybQorICAgICAgICBvcmlnX2V4aXN0cyA9IG9zLnBhdGgu
ZXhpc3RzCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLnBsYXRmb3JtID0gJ2Rhcndp
bicKKyAgICAgICAgICAgIG9zLnBhdGguZXhpc3RzID0gbGFtYmRhIHg6IFRydWUKKyAgICAgICAg
ICAgIGdlbmVyYXRvciA9IHNlbGYubWFrZV9nZW5lcmF0b3IoWyJmb28udHh0Il0pCisgICAgICAg
ICAgICBsaW5rcyA9IGdlbmVyYXRvci5fZ2VuZXJhdGVfYmFzZWxpbmVfbGlua3MoImZvbyIsICIu
dHh0IiwgIm1hYyIpCisgICAgICAgICAgICBleHBlY3RlZF9saW5rcyA9ICc8dGQgYWxpZ249Y2Vu
dGVyPjxhIGhyZWY9ImZpbGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtb2xkLnR4dCI+Zm9vLWV4
cGVjdGVkLnR4dDwvYT48L3RkPjx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAv
Zm9vLWV4cGVjdGVkLW1hYy1uZXcudHh0Ij5mb28tZXhwZWN0ZWQudHh0PC9hPjwvdGQ+PHRkIGFs
aWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLWRpZmYudHh0
Ij5EaWZmPC9hPjwvdGQ+JworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5rcywgZXhw
ZWN0ZWRfbGlua3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzeXMucGxhdGZvcm0g
PSBvcmlnX3BsYXRmb3JtCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IG9yaWdfZXhpc3Rz
CisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70166</attachid>
            <date>2010-10-07 16:20:12 -0700</date>
            <delta_ts>2010-10-07 17:48:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47319-20101007162010.patch</filename>
            <type>text/plain</type>
            <size>19675</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA0MzU1YWVlOGVkNmYxNGU3MzhlYzhhZThlODViYTlhNmUzNjE0NmEzLi5iMjg5ZjNm
Mjc1NjNkZDU1NTU5ZGI3MzU3YjY0MzZmYjE1Yjk2NjVjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzEgQEAK
IDIwMTAtMTAtMDYgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmViYXNlbGluZS1jaHJv
bWl1bS13ZWJraXQtdGVzdHMgcmVsaWVkIG9uIHRoZSBmaWxlbmFtZV90b191cmkoKQorICAgICAg
ICBob29rIGluIHRoZSBQb3J0IGluZnJhc3RydWN0dXJlIHRvIGdlbmVyYXRlIFVSSXMgZm9yIHRo
ZSBmaWxlcworICAgICAgICBpbiBpdHMgc3VtbWFyeSBIVE1MIHJlcG9ydDsgaG93ZXZlciwgdGhh
dCBtZXRob2QgaXMgc3VwcG9zZWQgdG8gb25seQorICAgICAgICBiZSB1c2VkIGZvciB0ZXN0IGZp
bGVzIChhbmQgc2hvdWxkIHJlYWxseSBiZSByZW5hbWVkKSwgc28gdGhpcyB3b3VsZAorICAgICAg
ICBjcmFzaC4KKworICAgICAgICBUaGlzIGNoYW5nZSBhZGRzIGEgbmV3ICJwYXRoIiBtb2R1bGUg
dG8gdGhlIHN5c3RlbSBwYWNrYWdlIHdpdGggYQorICAgICAgICByb3V0aW5lIGNhbGxlZCBhYnNw
YXRoX3RvX3VyaSgpIHRoYXQgaGFuZGxlcyBjb252ZXJ0aW5nIHBhdGhzIHRvCisgICAgICAgIGZp
bGU6IFVSSXMgaW5kZXBlbmRlbnRseSBvZiBhbnl0aGluZyBpbiB0aGUgbGF5b3V0X3Rlc3RzIHBh
Y2thZ2UsCisgICAgICAgIGFuZCBjaGFuZ2VzIHRoZSBjb2RlIHRvIHVzZSB0aGlzLiBBdCBzb21l
IHBvaW50IGluIHRoZSBuZWFyIGZ1dHVyZQorICAgICAgICB0aGUgbGF5b3V0X3Rlc3RzL3BvcnQv
KiBjb2RlIHNob3VsZCB1c2UgdGhpcyBhcyB3ZWxsLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFs
c28gZGVsZXRlcyBhIGJ1bmNoIG9mIHVudXNlZCBjb2RlIGFuZCBmaXhlcyBzb21lCisgICAgICAg
IGNvbW1lbnRzIGluIHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5LgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzMxOQorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHk6IEFkZGVkLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRoX3VuaXR0ZXN0LnB5OiBB
ZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5l
X2Nocm9taXVtX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0c191bml0dGVzdC5weToK
KworMjAxMC0xMC0wNiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJ1c3NlbGwuCiAKICAgICAgICAgbmV3LXJ1bi13ZWJr
aXQtdGVzdHM6IGZpeCB0eXBvIGluIGNocm9taXVtLWdwdSB0aGF0IHdhcyB0cnlpbmcgdG8KZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3BhdGgucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTM3MjQ3ZWYwYWNjMTkxOWRlMGVkN2U2YjcwZDRjYTgxNzFjNzExMAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9wYXRoLnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJnZW5lcmlj
IHJvdXRpbmVzIHRvIGNvbnZlcnQgcGxhdGZvcm0tc3BlY2lmaWMgcGF0aHMgdG8gVVJJcy4iIiIK
K2ltcG9ydCBzeXMKK2ltcG9ydCB1cmxsaWIKKworCitkZWYgYWJzcGF0aF90b191cmkocGF0aCwg
ZXhlY3V0aXZlLCBwbGF0Zm9ybT1Ob25lKToKKyAgICAiIiJDb252ZXJ0cyBhIHBsYXRmb3JtLXNw
ZWNpZmljIGFic29sdXRlIHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCisgICAgaWYgcGxhdGZvcm0g
aXMgTm9uZToKKyAgICAgICAgcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KKyAgICByZXR1cm4gImZp
bGU6IiArIF9lc2NhcGUoX2NvbnZlcnRfcGF0aChwYXRoLCBleGVjdXRpdmUsIHBsYXRmb3JtKSkK
KworCitkZWYgX2VzY2FwZShwYXRoKToKKyAgICAiIiJIYW5kbGUgYW55IGNoYXJhY3RlcnMgaW4g
dGhlIHBhdGggdGhhdCBzaG91bGQgYmUgZXNjYXBlZC4iIiIKKyAgICAjIEZJWE1FOiB3ZWIgYnJv
d3NlcnMgZG9uJ3QgYXBwZWFyIHRvIGJsaW5kbHkgcXVvdGUgZXZlcnkgY2hhcmFjdGVyCisgICAg
IyB3aGVuIGNvbnZlcnRpbmcgZmlsZW5hbWVzIHRvIGZpbGVzLiBJbnN0ZWFkIG9mIHVzaW5nIHVy
bGxpYidzIGRlZmF1bHQKKyAgICAjIHJ1bGVzLCB3ZSBhbGxvdyBhIHNtYWxsIGxpc3Qgb2Ygb3Ro
ZXIgY2hhcmFjdGVycyB0aHJvdWdoIHVuLWVzY2FwZWQuCisgICAgIyBJdCdzIHVuY2xlYXIgaWYg
dGhpcyBpcyB0aGUgYmVzdCBwb3NzaWJsZSBzb2x1dGlvbi4KKyAgICByZXR1cm4gdXJsbGliLnF1
b3RlKHBhdGgsIHNhZmU9Jy8rOicpCisKKworZGVmIF9jb252ZXJ0X3BhdGgocGF0aCwgZXhlY3V0
aXZlLCBwbGF0Zm9ybSk6CisgICAgIiIiSGFuZGxlcyBhbnkgb3Mtc3BlY2lmaWMgcGF0aCBzZXBh
cmF0b3JzLCBtYXBwaW5ncywgZXRjLiIiIgorICAgIGlmIHBsYXRmb3JtID09ICd3aW4zMic6Cisg
ICAgICAgIHJldHVybiBfd2lucGF0aF90b191cmkocGF0aCkKKyAgICBpZiBwbGF0Zm9ybSA9PSAn
Y3lnd2luJzoKKyAgICAgICAgcmV0dXJuIF93aW5wYXRoX3RvX3VyaShfY3lncGF0aChwYXRoLCBl
eGVjdXRpdmUpKQorICAgIHJldHVybiBfdW5peHlwYXRoX3RvX3VyaShwYXRoKQorCisKK2RlZiBf
d2lucGF0aF90b191cmkocGF0aCk6CisgICAgIiIiQ29udmVydHMgYSB3aW5kb3cgYWJzb2x1dGUg
cGF0aCB0byBhIGZpbGU6IFVSTC4iIiIKKyAgICByZXR1cm4gIi8vLyIgKyBwYXRoLnJlcGxhY2Uo
IlxcIiwgIi8iKQorCisKK2RlZiBfY3lncGF0aChwYXRoLCBleGVjdXRpdmUpOgorICAgICIiIkNv
bnZlcnRzIGEgY3lnd2luIHBhdGggdG8gV2luZG93cyBwYXRoLiIiIgorICAgIHJldHVybiBleGVj
dXRpdmUucnVuX2NvbW1hbmQoWydjeWdwYXRoJywgJy13YScsIHBhdGhdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX291dHB1dD1GYWxzZSkucnN0cmlwKCkKKworCitk
ZWYgX3VuaXh5cGF0aF90b191cmkocGF0aCk6CisgICAgIiIiQ29udmVydHMgYSB1bml4LXN0eWxl
IHBhdGggdG8gYSBmaWxlOiBVUkwuIiIiCisgICAgcmV0dXJuICIvLyIgKyBwYXRoCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9wYXRo
X3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjMTAyMWRjYWQ3ZDVhN2E4ZWQyNDVkMzRkZmIxMTU3
OGRhNGJhNTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9zeXN0ZW0vcGF0aF91bml0dGVzdC5weQpAQCAtMCwwICsxLDEwMCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK2ltcG9ydCB1bml0dGVzdAorCitpbXBvcnQgcGF0aAorCisKK2NsYXNzIEFic3Bh
dGhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJn
cywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFyZ3NbMF0sICdjeWdwYXRo
JykKKyAgICAgICAgcmV0dXJuIHNlbGYuY3lncGF0aF9yZXN1bHQKKworICAgIGRlZiBhc3NlcnRN
YXRjaChzZWxmLCB0ZXN0X3BhdGgsIGV4cGVjdGVkX3VyaSwKKyAgICAgICAgICAgICAgICAgICAg
cGxhdGZvcm0sIGN5Z3BhdGhfcmVzdWx0PU5vbmUpOgorICAgICAgICBpZiBwbGF0Zm9ybSA9PSAn
Y3lnd2luJzoKKyAgICAgICAgICAgIHNlbGYuY3lncGF0aF9yZXN1bHQgPSBjeWdwYXRoX3Jlc3Vs
dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkodGVzdF9wYXRo
LCBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBsYXRmb3JtPXBsYXRmb3JtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZF91cmkpCisKKyAgICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9jeWd3aW4oc2VsZik6Cisg
ICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2goJy9jeWdkcml2ZS9jL2Zvby9iYXIuaHRtbCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgJ2ZpbGU6Ly8vYzovZm9vL2Jhci5odG1sJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nY3lnd2luJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBjeWdwYXRoX3Jlc3VsdD0nYzpcXGZvb1xcYmFyLmh0bWxcbicpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocGF0aC5hYnNwYXRoX3RvX3VyaSgnL2N5Z2RyaXZlL2MvZm9vL2Jhci5odG1s
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2
ZT1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxh
dGZvcm09J2N5Z3dpbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlOi8vL2M6L2Zv
by9iYXIuaHRtbCcpCisKKyAgICBkZWYgdGVzdF9hYnNwYXRoX3RvX3VyaV9kYXJ3aW4oc2VsZik6
CisgICAgICAgIHNlbGYuYXNzZXJ0TWF0Y2goJy9mb28vYmFyLmh0bWwnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICdmaWxlOi8vL2Zvby9iYXIuaHRtbCcsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgcGxhdGZvcm09J2RhcndpbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0aC5h
YnNwYXRoX3RvX3VyaSgiL2Zvby9iYXIuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAiZmlsZTovLy9mb28vYmFyLmh0bWwiKQorCisgICAgZGVmIHRlc3RfYWJz
cGF0aF90b191cmlfbGludXgyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydE1hdGNoKCcvZm9v
L2Jhci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9mb28vYmFyLmh0
bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdkYXJ3aW4nKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBhdGguYWJzcGF0aF90b191cmkoIi9mb28vYmFyLmh0bWwiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0aXZlPXNl
bGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9y
bT0nbGludXgyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGU6Ly8vZm9vL2Jhci5o
dG1sIikKKworICAgIGRlZiB0ZXN0X2Fic3BhdGhfdG9fdXJpX3dpbihzZWxmKToKKyAgICAgICAg
c2VsZi5hc3NlcnRNYXRjaCgnYzpcXGZvb1xcYmFyLmh0bWwnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICdmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgcGxhdGZvcm09J3dpbjMyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLmFic3Bh
dGhfdG9fdXJpKCJjOlxcZm9vXFxiYXIuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleGVjdXRpdmU9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtPSd3aW4zMicpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICJmaWxlOi8vL2M6L2Zvby9iYXIuaHRtbCIpCisKKyAgICBkZWYgdGVzdF9h
YnNwYXRoX3RvX3VyaV9lc2NhcGluZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgn
L2Zvby9iYXIgKyBiYXolPy5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTov
Ly9mb28vYmFyJTIwKyUyMGJheiUyNSUzRi5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBwbGF0Zm9ybT0nZGFyd2luJykKKyAgICAgICAgc2VsZi5hc3NlcnRNYXRjaCgnL2Zvby9iYXIg
KyBiYXolPy5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZTovLy9mb28vYmFy
JTIwKyUyMGJheiUyNSUzRi5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9y
bT0nbGludXgyJykKKworICAgICAgICAjIE5vdGUgdGhhdCB5b3UgY2FuJ3QgaGF2ZSAnPycgaW4g
YSBmaWxlbmFtZSBvbiB3aW5kb3dzLgorICAgICAgICBzZWxmLmFzc2VydE1hdGNoKCcvY3lnZHJp
dmUvYy9mb28vYmFyICsgYmF6JS5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZmls
ZTovLy9jOi9mb28vYmFyJTIwKyUyMGJheiUyNS5odG1sJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBwbGF0Zm9ybT0nY3lnd2luJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjeWdwYXRo
X3Jlc3VsdD0nYzpcXGZvb1xcYmFyICsgYmF6JS5odG1sXG4nKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVtX3dlYmtp
dF90ZXN0cy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Jl
YmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGU1N2NlYjIxNzAwZTVhZmI3
ZjVlYzAzMzE1ZDI4NDI0MWJiODZmZWQuLmMyMGI5MGI5Y2RjY2MyNGU5MzFiYTU3YzVlYTAzZTg4
YzVhODU4ZGYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Vi
a2l0X3Rlc3RzLnB5CkBAIC01Nyw4ICs1Nyw5IEBAIGltcG9ydCB0aW1lCiBpbXBvcnQgdXJsbGli
CiBpbXBvcnQgemlwZmlsZQogCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1wb3J0IHBh
dGgKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgdXNlcgotZnJvbSB3ZWJraXRw
eS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgcnVuX2NvbW1hbmQsIFNjcmlwdEVycm9y
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUs
IFNjcmlwdEVycm9yCiBpbXBvcnQgd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBhcyBzY20K
IAogaW1wb3J0IHBvcnQKQEAgLTgxLDU4ICs4Miw2IEBAIEFSQ0hJVkVfRElSX05BTUVfRElDVCA9
IHsnd2luJzogJ3dlYmtpdC1yZWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICdsaW51eC1j
YW5hcnknOiAnd2Via2l0LXJlbC1saW51eC13ZWJraXQtb3JnJ30KIAogCi0jIEZJWE1FOiBTaG91
bGQgYmUgcm9sbGVkIGludG8gd2Via2l0cHkuRXhlY3V0aXZlCi1kZWYgcnVuX3NoZWxsX3dpdGhf
cmV0dXJuX2NvZGUoY29tbWFuZCwgcHJpbnRfb3V0cHV0PUZhbHNlKToKLSAgICAiIiJFeGVjdXRl
cyBhIGNvbW1hbmQgYW5kIHJldHVybnMgdGhlIG91dHB1dCBhbmQgcHJvY2VzcyByZXR1cm4gY29k
ZS4KLQotICAgIEFyZ3M6Ci0gICAgICBjb21tYW5kOiBwcm9ncmFtIGFuZCBhcmd1bWVudHMuCi0g
ICAgICBwcmludF9vdXRwdXQ6IGlmIHRydWUsIHByaW50IHRoZSBjb21tYW5kIHJlc3VsdHMgdG8g
c3RhbmRhcmQgb3V0cHV0LgotCi0gICAgUmV0dXJuczoKLSAgICAgIGNvbW1hbmQgb3V0cHV0LCBy
ZXR1cm4gY29kZQotICAgICIiIgotCi0gICAgIyBVc2UgYSBzaGVsbCBmb3Igc3ViY29tbWFuZHMg
b24gV2luZG93cyB0byBnZXQgYSBQQVRIIHNlYXJjaC4KLSAgICAjIEZJWE1FOiBzaGVsbD1UcnVl
IGlzIGEgdHJhaWwgb2YgdGVhcnMsIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICB1c2Vfc2hl
bGwgPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnd2luJykKLSAgICAjIE5vdGU6IE5vdCB0aHJl
YWQgc2FmZTogaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMjAKLSAgICBwID0gc3VicHJv
Y2Vzcy5Qb3Blbihjb21tYW5kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgc2hlbGw9dXNlX3NoZWxsKQot
ICAgIGlmIHByaW50X291dHB1dDoKLSAgICAgICAgb3V0cHV0X2FycmF5ID0gW10KLSAgICAgICAg
d2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGxpbmUgPSBwLnN0ZG91dC5yZWFkbGluZSgpCi0gICAg
ICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAg
aWYgcHJpbnRfb3V0cHV0OgotICAgICAgICAgICAgICAgIHByaW50IGxpbmUuc3RyaXAoJ1xuJykK
LSAgICAgICAgICAgIG91dHB1dF9hcnJheS5hcHBlbmQobGluZSkKLSAgICAgICAgb3V0cHV0ID0g
Jycuam9pbihvdXRwdXRfYXJyYXkpCi0gICAgZWxzZToKLSAgICAgICAgb3V0cHV0ID0gcC5zdGRv
dXQucmVhZCgpCi0gICAgcC53YWl0KCkKLSAgICBwLnN0ZG91dC5jbG9zZSgpCi0KLSAgICByZXR1
cm4gb3V0cHV0LCBwLnJldHVybmNvZGUKLQotCi0jIEZJWE1FOiBTaG91bGQgYmUgcm9sbGVkIGlu
dG8gd2Via2l0cHkuRXhlY3V0aXZlCi1kZWYgcnVuX3NoZWxsKGNvbW1hbmQsIHByaW50X291dHB1
dD1GYWxzZSk6Ci0gICAgIiIiRXhlY3V0ZXMgYSBjb21tYW5kIGFuZCByZXR1cm5zIHRoZSBvdXRw
dXQuCi0KLSAgICBBcmdzOgotICAgICAgY29tbWFuZDogcHJvZ3JhbSBhbmQgYXJndW1lbnRzLgot
ICAgICAgcHJpbnRfb3V0cHV0OiBpZiB0cnVlLCBwcmludCB0aGUgY29tbWFuZCByZXN1bHRzIHRv
IHN0YW5kYXJkIG91dHB1dC4KLQotICAgIFJldHVybnM6Ci0gICAgICBjb21tYW5kIG91dHB1dAot
ICAgICIiIgotCi0gICAgb3V0cHV0LCByZXR1cm5fY29kZSA9IHJ1bl9zaGVsbF93aXRoX3JldHVy
bl9jb2RlKGNvbW1hbmQsIHByaW50X291dHB1dCkKLSAgICByZXR1cm4gb3V0cHV0Ci0KLQogZGVm
IGxvZ19kYXNoZWRfc3RyaW5nKHRleHQsIHBsYXRmb3JtLCBsb2dnaW5nX2xldmVsPWxvZ2dpbmcu
SU5GTyk6CiAgICAgIiIiTG9nIHRleHQgbWVzc2FnZSB3aXRoIGRhc2hlcyBvbiBib3RoIHNpZGVz
LiIiIgogCkBAIC02MjgsNyArNTc3LDYgQEAgY2xhc3MgUmViYXNlbGluZXIob2JqZWN0KToKICAg
ICAgICAgYmFzZV9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX29wdGlvbnMu
aHRtbF9kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBiYXNlbGluZV9maWxlbmFtZSwgc2VsZi5fcGxhdGZvcm0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2xkJykKLSAgICAgICAgIyBGSVhNRTogVGhp
cyBhc3N1bWVzIHJ1bl9zaGVsbCByZXR1cm5zIGEgYnl0ZSBhcnJheS4KICAgICAgICAgIyBXZSBz
aG91bGQgYmUgdXNpbmcgYW4gZXhwbGljaXQgZW5jb2RpbmcgaGVyZS4KICAgICAgICAgd2l0aCBv
cGVuKGJhc2VfZmlsZSwgIndiIikgYXMgZmlsZToKICAgICAgICAgICAgIGZpbGUud3JpdGUob3V0
cHV0KQpAQCAtNjQyLDcgKzU5MCw2IEBAIGNsYXNzIFJlYmFzZWxpbmVyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jlc3VsdF9maWxlX2Z1bGxwYXRoKAogICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmh0bWxfZGlyZWN0b3J5LCBiYXNlbGluZV9maWxl
bmFtZSwKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcGxhdGZvcm0sICdkaWZmJykKLSAgICAg
ICAgICAgICAgICAjIEZJWE1FOiBUaGlzIGFzc3VtZXMgcnVuX3NoZWxsIHJldHVybnMgYSBieXRl
IGFycmF5LCBub3QgdW5pY29kZSgpCiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRpZmZfZmls
ZSwgJ3diJykgYXMgZmlsZToKICAgICAgICAgICAgICAgICAgICAgZmlsZS53cml0ZShvdXRwdXQp
CiAgICAgICAgICAgICAgICAgX2xvZy5pbmZvKCcgIEh0bWw6IGNyZWF0ZWQgYmFzZWxpbmUgZGlm
ZiBmaWxlOiAiJXMiLicsCkBAIC02OTQsMTQgKzY0MSwyMCBAQCBjbGFzcyBIdG1sR2VuZXJhdG9y
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAnPGltZyBzdHlsZT0id2lkdGg6IDIw
MCIgc3JjPSIlKHVyaSlzIiAvPjwvYT48L3RkPicpCiAgICAgSFRNTF9UUiA9ICc8dHI+JXM8L3Ry
PicKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRfcG9ydCwgb3B0aW9ucywgcGxhdGZv
cm1zLCByZWJhc2VsaW5pbmdfdGVzdHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXJnZXRf
cG9ydCwgb3B0aW9ucywgcGxhdGZvcm1zLCByZWJhc2VsaW5pbmdfdGVzdHMsCisgICAgICAgICAg
ICAgICAgIGV4ZWN1dGl2ZSk6CiAgICAgICAgIHNlbGYuX2h0bWxfZGlyZWN0b3J5ID0gb3B0aW9u
cy5odG1sX2RpcmVjdG9yeQogICAgICAgICBzZWxmLl90YXJnZXRfcG9ydCA9IHRhcmdldF9wb3J0
CiAgICAgICAgIHNlbGYuX3BsYXRmb3JtcyA9IHBsYXRmb3JtcwogICAgICAgICBzZWxmLl9yZWJh
c2VsaW5pbmdfdGVzdHMgPSByZWJhc2VsaW5pbmdfdGVzdHMKKyAgICAgICAgc2VsZi5fZXhlY3V0
aXZlID0gZXhlY3V0aXZlCiAgICAgICAgIHNlbGYuX2h0bWxfZmlsZSA9IG9zLnBhdGguam9pbihv
cHRpb25zLmh0bWxfZGlyZWN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3JlYmFzZWxpbmUuaHRtbCcpCiAKKyAgICBkZWYgYWJzcGF0aF90b191cmkoc2VsZiwg
ZmlsZW5hbWUpOgorICAgICAgICAiIiJDb252ZXJ0cyBhbiBhYnNvbHV0ZSBwYXRoIHRvIGEgZmls
ZTogVVJJLiIiIgorICAgICAgICByZXR1cm4gcGF0aC5hYnNwYXRoX3RvX3VyaShmaWxlbmFtZSwg
c2VsZi5fZXhlY3V0aXZlKQorCiAgICAgZGVmIGdlbmVyYXRlX2h0bWwoc2VsZik6CiAgICAgICAg
ICIiIkdlbmVyYXRlIGh0bWwgZmlsZSBmb3IgcmViYXNlbGluaW5nIHJlc3VsdCBjb21wYXJpc29u
LiIiIgogCkBAIC03NjksMTQgKzcyMiwxMyBAQCBjbGFzcyBIdG1sR2VuZXJhdG9yKG9iamVjdCk6
CiAgICAgICAgIGxpbmtzID0gJycKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob2xkX2ZpbGUp
OgogICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgewotICAgICAgICAgICAgICAg
ICd1cmknOiBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmkob2xkX2ZpbGUpLAorICAg
ICAgICAgICAgICAgICd1cmknOiBzZWxmLmFic3BhdGhfdG9fdXJpKG9sZF9maWxlKSwKICAgICAg
ICAgICAgICAgICAnbmFtZSc6IGJhc2VsaW5lX2ZpbGVuYW1lfQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgX2xvZy5pbmZvKCcgICAgTm8gb2xkIGJhc2VsaW5lIGZpbGU6ICIlcyInLCBvbGRf
ZmlsZSkKICAgICAgICAgICAgIGxpbmtzICs9IHNlbGYuSFRNTF9URF9OT0xJTksgJSAnJwogCi0g
ICAgICAgIGxpbmtzICs9IGh0bWxfdGRfbGluayAlIHsndXJpJzogc2VsZi5fdGFyZ2V0X3BvcnQu
ZmlsZW5hbWVfdG9fdXJpKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5l
d19maWxlKSwKKyAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1cmknOiBzZWxmLmFi
c3BhdGhfdG9fdXJpKG5ld19maWxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICduYW1lJzogYmFzZWxpbmVfZmlsZW5hbWV9CiAKICAgICAgICAgZGlmZl9maWxlID0gZ2V0X3Jl
c3VsdF9maWxlX2Z1bGxwYXRoKHNlbGYuX2h0bWxfZGlyZWN0b3J5LApAQCAtNzg0LDggKzczNiw4
IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICdkaWZmJykKICAgICAgICAgX2xvZy5pbmZvKCcgICAgQmFz
ZWxpbmUgZGlmZiBmaWxlOiAiJXMiJywgZGlmZl9maWxlKQogICAgICAgICBpZiBvcy5wYXRoLmV4
aXN0cyhkaWZmX2ZpbGUpOgotICAgICAgICAgICAgbGlua3MgKz0gaHRtbF90ZF9saW5rICUgeyd1
cmknOiBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmkoCi0gICAgICAgICAgICAgICAg
ZGlmZl9maWxlKSwgJ25hbWUnOiAnRGlmZid9CisgICAgICAgICAgICBsaW5rcyArPSBodG1sX3Rk
X2xpbmsgJSB7J3VyaSc6IHNlbGYuYWJzcGF0aF90b191cmkoZGlmZl9maWxlKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdEaWZmJ30KICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIF9sb2cuaW5mbygnICAgIE5vIGJhc2VsaW5lIGRpZmYgZmlsZTogIiVz
IicsIGRpZmZfZmlsZSkKICAgICAgICAgICAgIGxpbmtzICs9IHNlbGYuSFRNTF9URF9OT0xJTksg
JSAnJwpAQCAtODI1LDggKzc3Nyw3IEBAIGNsYXNzIEh0bWxHZW5lcmF0b3Iob2JqZWN0KToKICAg
ICAgICAgaWYgcm93czoKICAgICAgICAgICAgIHRlc3RfcGF0aCA9IG9zLnBhdGguam9pbihzZWxm
Ll90YXJnZXRfcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdCkKLSAgICAgICAgICAgIGh0bWwgPSBzZWxmLkhUTUxfVFJfVEVT
VCAlICgKLSAgICAgICAgICAgICAgICBzZWxmLl90YXJnZXRfcG9ydC5maWxlbmFtZV90b191cmko
dGVzdF9wYXRoKSwgdGVzdCkKKyAgICAgICAgICAgIGh0bWwgPSBzZWxmLkhUTUxfVFJfVEVTVCAl
IChzZWxmLmFic3BhdGhfdG9fdXJpKHRlc3RfcGF0aCksIHRlc3QpCiAgICAgICAgICAgICBodG1s
ICs9IHNlbGYuSFRNTF9URVNUX0RFVEFJTCAlICcgJy5qb2luKHJvd3MpCiAKICAgICAgICAgICAg
IF9sb2cuZGVidWcoJyAgICBodG1sIGZvciB0ZXN0OiAlcycsIGh0bWwpCkBAIC04NjcsNyArODE4
LDcgQEAgZGVmIGdldF9ob3N0X3BvcnRfb2JqZWN0KG9wdGlvbnMpOgogICAgIHJldHVybiBwb3J0
X29iagogCiAKLWRlZiBtYWluKCk6CitkZWYgbWFpbihleGVjdXRpdmU9RXhlY3V0aXZlKCkpOgog
ICAgICIiIk1haW4gZnVuY3Rpb24gdG8gcHJvZHVjZSBuZXcgYmFzZWxpbmVzLiIiIgogCiAgICAg
b3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigpCkBAIC05OTIsNyArOTQzLDgg
QEAgZGVmIG1haW4oKToKICAgICBodG1sX2dlbmVyYXRvciA9IEh0bWxHZW5lcmF0b3IodGFyZ2V0
X3BvcnRfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5lX3BsYXRmb3JtcywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmViYXNlbGluaW5nX3Rlc3RzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWJhc2VsaW5pbmdfdGVzdHMsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGl2ZT1leGVjdXRpdmUpCiAg
ICAgaHRtbF9nZW5lcmF0b3IuZ2VuZXJhdGVfaHRtbCgpCiAgICAgaWYgbm90IG9wdGlvbnMucXVp
ZXQ6CiAgICAgICAgIGh0bWxfZ2VuZXJhdG9yLnNob3dfaHRtbCgpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9yZWJhc2VsaW5lX2Nocm9taXVt
X3dlYmtpdF90ZXN0c191bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5
CmluZGV4IDliYTNkNmJkMzdhZDQyZDgxOTg5NzgzNjZkNjBmN2JmNWQzYWQxNjcuLmZjZTZlODJj
YWVmODM1YTczMzk4MDg0YjY5MTQ4MDA4ZGIyNmFlNjggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0
X3Rlc3RzX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3JlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3RzX3VuaXR0ZXN0LnB5CkBA
IC0zMCwxMCArMzAsMTIgQEAKICIiIlVuaXQgdGVzdHMgZm9yIHJlYmFzZWxpbmVfY2hyb21pdW1f
d2Via2l0X3Rlc3RzLnB5LiIiIgogCiBpbXBvcnQgb3MKK2ltcG9ydCBzeXMKIGltcG9ydCB1bml0
dGVzdAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcG9ydAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMgaW1wb3J0IHJlYmFzZWxpbmVfY2hyb21pdW1fd2Via2l0X3Rlc3Rz
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUs
IFNjcmlwdEVycm9yCiAKIAogY2xhc3MgTW9ja1BvcnQob2JqZWN0KToKQEAgLTQ1LDggKzQ3LDkg
QEAgY2xhc3MgTW9ja1BvcnQob2JqZWN0KToKIAogCiBjbGFzcyBNb2NrT3B0aW9ucyhvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uID0g
Tm9uZQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWd1cmF0aW9uPU5vbmUsIGh0bWxfZGly
ZWN0b3J5PU5vbmUpOgorICAgICAgICBzZWxmLmNvbmZpZ3VyYXRpb24gPSBjb25maWd1cmF0aW9u
CisgICAgICAgIHNlbGYuaHRtbF9kaXJlY3RvcnkgPSBodG1sX2RpcmVjdG9yeQogCiAKIGRlZiBn
ZXRfbW9ja19nZXQoY29uZmlnX2V4cGVjdGF0aW9ucyk6CkBAIC0xMTgsNSArMTIxLDMxIEBAIGNs
YXNzIFRlc3RSZWJhc2VsaW5lcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UocmViYXNlbGluZXIuX2RpZmZfYmFzZWxpbmVzKGltYWdlLCBpbWFnZSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfaW1hZ2U9
VHJ1ZSkpCiAKKworY2xhc3MgVGVzdEh0bWxHZW5lcmF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgor
ICAgIGRlZiBtYWtlX2dlbmVyYXRvcihzZWxmLCB0ZXN0cyk6CisgICAgICAgIHJldHVybiByZWJh
c2VsaW5lX2Nocm9taXVtX3dlYmtpdF90ZXN0cy5IdG1sR2VuZXJhdG9yKAorICAgICAgICAgICAg
dGFyZ2V0X3BvcnQ9Tm9uZSwKKyAgICAgICAgICAgIG9wdGlvbnM9TW9ja09wdGlvbnMoaHRtbF9k
aXJlY3Rvcnk9Ii90bXAiKSwKKyAgICAgICAgICAgIHBsYXRmb3Jtcz1bJ21hYyddLAorICAgICAg
ICAgICAgcmViYXNlbGluaW5nX3Rlc3RzPXRlc3RzLAorICAgICAgICAgICAgZXhlY3V0aXZlPUV4
ZWN1dGl2ZSgpKQorCisgICAgZGVmIHRlc3RfZ2VuZXJhdGVfYmFzZWxpbmVfbGlua3Moc2VsZik6
CisgICAgICAgIG9yaWdfcGxhdGZvcm0gPSBzeXMucGxhdGZvcm0KKyAgICAgICAgb3JpZ19leGlz
dHMgPSBvcy5wYXRoLmV4aXN0cworCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5wbGF0
Zm9ybSA9ICdkYXJ3aW4nCisgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyA9IGxhbWJkYSB4OiBU
cnVlCisgICAgICAgICAgICBnZW5lcmF0b3IgPSBzZWxmLm1ha2VfZ2VuZXJhdG9yKFsiZm9vLnR4
dCJdKQorICAgICAgICAgICAgbGlua3MgPSBnZW5lcmF0b3IuX2dlbmVyYXRlX2Jhc2VsaW5lX2xp
bmtzKCJmb28iLCAiLnR4dCIsICJtYWMiKQorICAgICAgICAgICAgZXhwZWN0ZWRfbGlua3MgPSAn
PHRkIGFsaWduPWNlbnRlcj48YSBocmVmPSJmaWxlOi8vL3RtcC9mb28tZXhwZWN0ZWQtbWFjLW9s
ZC50eHQiPmZvby1leHBlY3RlZC50eHQ8L2E+PC90ZD48dGQgYWxpZ249Y2VudGVyPjxhIGhyZWY9
ImZpbGU6Ly8vdG1wL2Zvby1leHBlY3RlZC1tYWMtbmV3LnR4dCI+Zm9vLWV4cGVjdGVkLnR4dDwv
YT48L3RkPjx0ZCBhbGlnbj1jZW50ZXI+PGEgaHJlZj0iZmlsZTovLy90bXAvZm9vLWV4cGVjdGVk
LW1hYy1kaWZmLnR4dCI+RGlmZjwvYT48L3RkPicKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGlua3MsIGV4cGVjdGVkX2xpbmtzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAg
c3lzLnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQorICAgICAgICAgICAgb3MucGF0aC5leGlzdHMg
PSBvcmlnX2V4aXN0cworCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRl
c3QubWFpbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>