<?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>52771</bug_id>
          
          <creation_ts>2011-01-19 17:17:24 -0800</creation_ts>
          <short_desc>nrwt: clean up almost all remaining port references</short_desc>
          <delta_ts>2011-01-21 18:01:04 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>52772</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Pranke">dpranke</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>ossy</cc>
    
    <cc>rgabor</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>336961</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 17:17:24 -0800</bug_when>
    <thetext>nrwt: clean up almost all remaining port references</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>336963</commentid>
    <comment_count>1</comment_count>
      <attachid>79527</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-19 17:18:40 -0800</bug_when>
    <thetext>Created attachment 79527
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337226</commentid>
    <comment_count>2</comment_count>
      <attachid>79527</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-20 03:02:23 -0800</bug_when>
    <thetext>Comment on attachment 79527
Patch

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

Looks sane.  Are you sure all the import with_statement removals are safe?

&gt; Tools/ChangeLog:8
&gt; +        Need a short description and bug URL (OOPS!)

Missing bug url/title.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:48
&gt; +        self._port = None

Shouldn&apos;t be needed.

&gt; Tools/Scripts/webkitpy/layout_tests/port/port_testcase.py:67
&gt;          if not port.check_image_diff():
&gt; +            # The port hasn&apos;t been built - don&apos;t run the tests.
&gt;              return

I&apos;m confused why the tests depend on having a build here.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:399
&gt; +        environment[&apos;DUMPRENDERTREE_TEMP&apos;] = str(self._driver_tempdir)

Curious why this is needed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337681</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 15:58:49 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 79527 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79527&amp;action=review
&gt; 
&gt; Looks sane.  Are you sure all the import with_statement removals are safe?
&gt; 

I double-checked them all. The only one that wasn&apos;t was test_runner.py, which was fixed last night in a separate patch (this patch was stale).

&gt; &gt; Tools/ChangeLog:8
&gt; &gt; +        Need a short description and bug URL (OOPS!)
&gt; 
&gt; Missing bug url/title.
&gt; 

Added.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:48
&gt; &gt; +        self._port = None
&gt; 
&gt; Shouldn&apos;t be needed.
&gt;

It isn&apos;t needed, but it&apos;ll keep me from accidentally referencing it in a different test down the road.
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/port_testcase.py:67
&gt; &gt;          if not port.check_image_diff():
&gt; &gt; +            # The port hasn&apos;t been built - don&apos;t run the tests.
&gt; &gt;              return
&gt; 
&gt; I&apos;m confused why the tests depend on having a build here.
&gt; 

This test is an integration test that launches ImageDiff and checks the result ... if there is no build, it can&apos;t execute properly, so we skip it.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:399
&gt; &gt; +        environment[&apos;DUMPRENDERTREE_TEMP&apos;] = str(self._driver_tempdir)
&gt; 
&gt; Curious why this is needed?

I don&apos;t actually know, but I think it might have to do with tests for LocalStorage or something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337706</commentid>
    <comment_count>4</comment_count>
      <attachid>79665</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 16:41:43 -0800</bug_when>
    <thetext>Created attachment 79665
update w/ review feedback from eseidel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337781</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-20 18:30:27 -0800</bug_when>
    <thetext>Committed r76322: &lt;http://trac.webkit.org/changeset/76322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337921</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-01-21 00:25:40 -0800</bug_when>
    <thetext>Reopen, because it broke NRWT on Qt:
( http://webkit.sed.hu/buildbot/waterfall?show=x86-32%20Linux%20Qt%20Release%20new-run-webkit-tests )

expected result:
=&gt; Results: 17414/22954 tests passed (75.9%)
=&gt; Tests to be fixed (5540):
      1 test timed out           ( 0.0%)
     88 no expected results found ( 1.6%)
     10 text diff mismatch       ( 0.2%)
   5441 skipped                  (98.2%)


actual results:
=&gt; Results: 17269/22954 tests passed (75.2%)
=&gt; Tests to be fixed (5685):
      5 DumpRenderTree crashes   ( 0.1%)
     22 tests timed out          ( 0.4%)
   1533 no expected results found (27.0%)
   3648 text diff mismatch       (64.2%)
    477 skipped                  ( 8.4%)

It seems NRWT ignores platform/qt/Skipped file.
Gabor, could you check it please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338328</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 14:03:26 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; It seems NRWT ignores platform/qt/Skipped file.
&gt; Gabor, could you check it please?

I can confirm that I broke this. Patch coming up shortly ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338341</commentid>
    <comment_count>8</comment_count>
      <attachid>79792</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 14:23:24 -0800</bug_when>
    <thetext>Created attachment 79792
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338410</commentid>
    <comment_count>9</comment_count>
      <attachid>79792</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-01-21 15:55:10 -0800</bug_when>
    <thetext>Comment on attachment 79792
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit_unittest.py:102
&gt; +if __name__ == &apos;__main__&apos;:
&gt; +    unittest.main()

I guess the imports only work if you happen to run this from the right place?  Anyway, seems harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338411</commentid>
    <comment_count>10</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-21 15:56:31 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=79792&amp;action=review

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:305
&gt; +            tests_to_skip.extend(self._tests_from_skipped_file_contents(skipped_file_contents))

Does mac_unittest still pass with this change? The mac port class extends WebKitPort, and mac_unittest.py calls _tests_from_skipped_file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338415</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 16:09:15 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=79792&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:305
&gt; &gt; +            tests_to_skip.extend(self._tests_from_skipped_file_contents(skipped_file_contents))
&gt; 
&gt; Does mac_unittest still pass with this change? The mac port class extends WebKitPort, and mac_unittest.py calls _tests_from_skipped_file.

Good catch. I would&apos;ve sworn I ran the tests before uploading the patch, but I guess I didn&apos;t.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338416</commentid>
    <comment_count>12</comment_count>
      <attachid>79807</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 16:11:17 -0800</bug_when>
    <thetext>Created attachment 79807
update w/ review feedback from mihaip - fix mac_unittest</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338448</commentid>
    <comment_count>13</comment_count>
      <attachid>79807</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 17:30:07 -0800</bug_when>
    <thetext>Comment on attachment 79807
update w/ review feedback from mihaip - fix mac_unittest

Clearing flags on attachment: 79807

Committed r76413: &lt;http://trac.webkit.org/changeset/76413&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338449</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-21 17:30:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338462</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-21 18:01:04 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76413 might have broken Qt Linux Release
The following tests are not passing:
fast/text/justify-nbsp.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79527</attachid>
            <date>2011-01-19 17:18:40 -0800</date>
            <delta_ts>2011-01-20 16:41:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52771-20110119171839.patch</filename>
            <type>text/plain</type>
            <size>28184</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiNzNl
MDM1YjFiNjY1NTYzNjBhMGI1NjNmODA1YWViMTAxMDc5NzA2Li43YTNkMWE2ZDkyNjQzMTI4YTU5
MDA4MTIwZDc2Nzg5NmIyZDY5YTA3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzMgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBucnd0OiBjbGVhbiB1cCBhbG1vc3QgYWxsIHJlbWFp
bmluZyBwb3J0IHJlZmVyZW5jZXMsIHJlbW92ZQorICAgICAgICB1bm5lY2Vzc2FyeSBpbXBvcnQg
Y2xhdXNlcy4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwg
KE9PUFMhKQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvdGVzdF9ydW5uZXIucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fd2luLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fd2luX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZS5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZm
LnB5OgorCisyMDExLTAxLTE5ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIHJlbW92ZSBm
cyByZWZzIGZyb20gcnVuX3dlYmtpdF90ZXN0cywgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRf
dGVzdHMKIAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTI3NjIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKaW5kZXggNjc1MjRkMzVhNzZh
ZjMxNjQ1ZmI2NmUwNzViZGU5ZDc0ZmZjOGI1YS4uMTQ4ZGQxNTY2MWQyMjkwODE3ZjFkOTYxYzFl
MTk4MWM2NzZlNjk1YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKQEAgLTQw
LDcgKzQwLDYgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgUXVldWUKIGlt
cG9ydCByYW5kb20KLWltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fZ3B1LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV9ncHUucHkKaW5kZXggYzFmNWM4ZDY5YzdhNDBkYzNmNDlmZTk2NzE2ZjIwNDI1MGQxMTU4
Ni4uYjg4ZDhhYTA4NTM3ZGZkY2ZmMTc5MTM2NjM2MjEyMTg0YWZmYjIyNCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9n
cHUucHkKQEAgLTI0LDEwICsyNCw2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
Ci1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MK
LWltcG9ydCBvcwogaW1wb3J0IHN5cwogCiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAgLTgyLDEw
ICs3OCw5IEBAIGRlZiBfZ3B1X292ZXJyaWRlcyhwb3J0KToKICAgICAgICAgICAgICdsYXlvdXRf
dGVzdHMnLCAndGVzdF9leHBlY3RhdGlvbnNfZ3B1LnR4dCcpCiAgICAgZXhjZXB0IEFzc2VydGlv
bkVycm9yOgogICAgICAgICByZXR1cm4gTm9uZQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhv
dmVycmlkZXNfcGF0aCk6CisgICAgaWYgbm90IHBvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzKG92ZXJy
aWRlc19wYXRoKToKICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICB3aXRoIGNvZGVjcy5vcGVuKG92
ZXJyaWRlc19wYXRoLCAiciIsICJ1dGYtOCIpIGFzIGZpbGU6Ci0gICAgICAgIHJldHVybiBmaWxl
LnJlYWQoKQorICAgIHJldHVybiBwb3J0Ll9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG92ZXJy
aWRlc19wYXRoKQogCiAKIGNsYXNzIENocm9taXVtR3B1TGludXhQb3J0KGNocm9taXVtX2xpbnV4
LkNocm9taXVtTGludXhQb3J0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKaW5k
ZXggYWQwNDA0Y2ZmZTQ3OTBmOWVkZTMxMTMxM2QxZDRkOGZjYTY5MzYwNS4uMGJmYjEyNzY3NmMz
NjhmZjIyNmI4OWJiZGMzMmYwOTcxNzJkNGZmNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5p
dHRlc3QucHkKQEAgLTI0LDcgKzI0LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkudG9vbCBpbXBv
cnQgbW9ja3Rvb2wKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xpbnV4LnB5CmluZGV4IDc5NzQxYjJlYzk0ZmQ4NmI0ZTc1
MTI0N2I4Mzk0MzU4NjY2ZThiZjYuLmE3NWY3ZDIwYWY3ZTEwYzIzOTdiODQzMDJiNzY1MDUyNGM3
NzJmOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fbGludXgucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weQpAQCAtODMsMTQgKzgzLDE0IEBAIGNsYXNzIENo
cm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKIAogICAgICAgICBiYXNlID0gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBh
dGguam9pbihiYXNlLCAnc2NvbnNidWlsZCcpKToKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhp
c3RzKG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKSkgb3Igc2VsZi5nZXRfb3B0aW9u
KCd1c2VfdGVzdF9zaGVsbCcpOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNl
LCAnb3V0JywgKmNvbXBzKQorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CisgICAgICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFz
ZSwgJ291dCcsICpjb21wcykpIG9yIHNlbGYuZ2V0X29wdGlvbigndXNlX3Rlc3Rfc2hlbGwnKToK
KyAgICAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ291dCcsICpj
b21wcykKICAgICAgICAgYmFzZSA9IHNlbGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCkKLSAgICAg
ICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJykpOgot
ICAgICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnc2NvbnNidWlsZCcsICpjb21w
cykKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFz
ZSwgJ3Njb25zYnVpbGQnKSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5q
b2luKGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKGJhc2UsICdvdXQnLCAqY29tcHMpCiAKICAgICBkZWYgX2NoZWNrX2FwYWNo
ZV9pbnN0YWxsKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxlX2V4
aXN0cyhzZWxmLl9wYXRoX3RvX2FwYWNoZSgpLApAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIENo
cm9taXVtTGludXhQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBjb25maWdfbmFtZSA9ICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJwogCi0g
ICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRw
JywgJ2NvbmYnLAorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWdfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90b19saWdodHRwZChzZWxmKToKQEAg
LTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBDaHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1
bVBvcnQpOgogICAgICAgICAgICAgcmV0dXJuICcvdXNyL2Jpbi93ZGlmZicKIAogICAgIGRlZiBf
aXNfcmVkaGF0X2Jhc2VkKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMob3Mu
cGF0aC5qb2luKCcvZXRjJywgJ3JlZGhhdC1yZWxlYXNlJykpCisgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oJy9ldGMnLCAncmVkaGF0
LXJlbGVhc2UnKSkKIAogICAgIGRlZiBfc2h1dF9kb3duX2h0dHBfc2VydmVyKHNlbGYsIHNlcnZl
cl9waWQpOgogICAgICAgICAiIiJTaHV0IGRvd24gdGhlIGxpZ2h0dHBkIHdlYiBzZXJ2ZXIuIEJs
b2NrcyB1bnRpbCBpdCdzIGZ1bGx5CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CmluZGV4IGIwOGE5NDhiNDQ5NDZk
MzhmOGJjNjY1MDg4MDQ3OTdlYTBiOGU3MTMuLjUzNjBhYjM0Zjg3NmQ4YWY5Y2NmMWE5OGU3MTU0
ODFjYzcyMGEzNjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5CkBAIC0xMTAsNyArMTEwLDcgQEAgY2xhc3Mg
Q2hyb21pdW1NYWNQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICpjb21wcykKIAogICAgICAgICBwYXRoID0gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgneGNvZGVidWlsZCcsICpjb21wcykKLSAgICAgICAgaWYg
b3MucGF0aC5leGlzdHMocGF0aCkgb3Igc2VsZi5nZXRfb3B0aW9uKCd1c2VfdGVzdF9zaGVsbCcp
OgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRoKSBvciBzZWxmLmdldF9v
cHRpb24oJ3VzZV90ZXN0X3NoZWxsJyk6CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoCiAgICAgICAgICAgICAnU291cmNl
JywgJ1dlYktpdCcsICdjaHJvbWl1bScsICd4Y29kZWJ1aWxkJywgKmNvbXBzKQpAQCAtMTMyLDgg
KzEzMiw4IEBAIGNsYXNzIENocm9taXVtTWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgog
ICAgICAgICByZXR1cm4gJy91c3Ivc2Jpbi9odHRwZCcKIAogICAgIGRlZiBfcGF0aF90b19hcGFj
aGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5s
YXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcGFjaGUyLWh0dHBkLmNvbmYnKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBhY2hlMi1odHRwZC5jb25mJykKIAog
ICAgIGRlZiBfcGF0aF90b19saWdodHRwZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2xp
Z2h0dHBkX3BhdGgoJ2JpbicsICdsaWdodHRwZCcpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQpp
bmRleCA1YTAyY2FlNGNhYjJjNWQzMmU2MWE3Zjg4MWJlMzJlYmUzYWJkNTIyLi42Yzg5ODdiOTEz
NTAxYmM5MzM4YzZjNjVlMjdlZWM0ZDFjNDAwMThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3Qu
cHkKQEAgLTI2LDcgKzI2LDYgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWlt
cG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgU3RyaW5nSU8KIApAQCAtMTMxLDcgKzEz
MCw3IEBAIGNsYXNzIENocm9taXVtUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAg
ICBtb2NrX29wdGlvbnMgPSBtb2NrdG9vbC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBD
aHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAKLSAg
ICAgICAgZmFrZV90ZXN0ID0gb3MucGF0aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAi
ZmFzdC9qcy9ub3QtZ29vZC5qcyIpCisgICAgICAgIGZha2VfdGVzdCA9IHBvcnQuX2ZpbGVzeXN0
ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgImZhc3QvanMvbm90LWdvb2QuanMiKQog
CiAgICAgICAgIHBvcnQudGVzdF9leHBlY3RhdGlvbnMgPSBsYW1iZGE6ICIiIkJVR19URVNUIFNL
SVAgOiBmYXN0L2pzL25vdC1nb29kLmpzID0gVEVYVAogTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5
LWdvb2QuanMgPSBUSU1FT1VUIFBBU1MiIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKaW5kZXggMGZlY2M2ZDJk
NDFhNzEyNmI2NmRiYmJjNmEwMzdkZjM3ZWJiNmQ5ZC4uMTRmMjc3NzkxZDk5YmQ4MmMyYzZlOTQ2
ZWMxOGIyOGIxNGFlOTk2MCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkKQEAgLTMwLDcgKzMwLDYgQEAKICIi
IkNocm9taXVtIFdpbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAK
IGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIAogaW1wb3J0IGNocm9taXVt
CkBAIC0xMTEsMTMgKzExMCwxMiBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hy
b21pdW1Qb3J0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNv
bXBzKQogCiAgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQn
LCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApOgorICAgICAgICBpZiBzZWxm
Ll9maWxlc3lzdGVtLmV4aXN0cyhwKToKICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgIHAg
PSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCdjaHJvbWUnLCAqY29tcHMpCi0gICAgICAg
IGlmIG9zLnBhdGguZXhpc3RzKHApIG9yIHNlbGYuZ2V0X29wdGlvbigndXNlX3Rlc3Rfc2hlbGwn
KToKKyAgICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMocCkgb3Igc2VsZi5nZXRfb3B0
aW9uKCd1c2VfdGVzdF9zaGVsbCcpOgogICAgICAgICAgICAgcmV0dXJuIHAKLSAgICAgICAgcmV0
dXJuIG9zLnBhdGguam9pbihzZWxmLnBhdGhfZnJvbV93ZWJraXRfYmFzZSgpLCAnV2ViS2l0Jywg
J2Nocm9taXVtJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAg
IHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2Uo
KSwgJ1dlYktpdCcsICdjaHJvbWl1bScsICpjb21wcykKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0
aChzZWxmLCAqY29tcHMpOgogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1f
YmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywKQEAgLTEyOCw4ICsxMjYsNyBA
QCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NiaW4nLCAnaHR0cGQnKQogCiAg
ICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJu
IG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2N5Z3dpbi1odHRwZC5jb25mJykKKyAgICAgICAg
cmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0
dHAnLCAnY29uZicsICdjeWd3aW4taHR0cGQuY29uZicpCiAKICAgICBkZWYgX3BhdGhfdG9fbGln
aHR0cGQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9saWdodHRwZF9wYXRoKCdMaWdodFRQ
RC5leGUnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV93aW5fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQppbmRleCAzNmYzYzZiMjQy
ODBlYzg0MmQyZTUwOTBlNzQ0NmNlY2E2ZDUwY2U5Li5kNjc3NTg5YTUxYTA3OTYwYTk0ZDc2MzI4
YjE5ZTUyMTRjNmQzNjIyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQpAQCAt
NDUsMTMgKzQ1LDE1IEBAIGNsYXNzIENocm9taXVtV2luVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYu
b3JpZ19wbGF0Zm9ybQorICAgICAgICBzZWxmLl9wb3J0ID0gTm9uZQogCiAgICAgZGVmIF9tb2Nr
X3BhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBv
cy5wYXRoLmpvaW4oIi9jaHJvbWl1bS9zcmMiLCAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtLmpvaW4oIi9jaHJvbWl1bS9zcmMiLCAqY29tcHMpCiAKICAgICBk
ZWYgdGVzdF9zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHBvcnQgPSBj
aHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Qb3J0KCkKICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0g
bW9ja3Rvb2wuTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCisgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHBvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UgPSBzZWxmLl9t
b2NrX3BhdGhfZnJvbV9jaHJvbWl1bV9iYXNlCiAgICAgICAgIG91dHB1dCA9IG91dHB1dGNhcHR1
cmUuT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIG9yaWdfZW52aXJvbiA9IG9zLmVudmlyb24uY29w
eSgpCkBAIC02NSw2ICs2Nyw3IEBAIGNsYXNzIENocm9taXVtV2luVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CiAgICAgICAgICAgICBvcHRpb25zPUNocm9taXVtV2luVGVzdC5SZWdpc3RlckN5Z3dp
bk9wdGlvbigpKQogICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBtb2NrdG9vbC5Nb2NrRXhlY3V0
aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAgICAgICAgcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFz
ZSA9IHNlbGYuX21vY2tfcGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UKKyAgICAgICAgc2VsZi5fcG9y
dCA9IHBvcnQKICAgICAgICAgc2V0dXBfbW91bnQgPSBzZWxmLl9tb2NrX3BhdGhfZnJvbV9jaHJv
bWl1bV9iYXNlKCJ0aGlyZF9wYXJ0eSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiY3lnd2luIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXR1cF9tb3VudC5iYXQiKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29n
bGVfY2hyb21lLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9n
b29nbGVfY2hyb21lLnB5CmluZGV4IDhkOTRiYjU5NGRmZDQ2MGI2NjRhZjkyNmFlZjU4MmZmN2M2
ZmQyZTMuLmFlOTAzNzQyMDA3NzllZjBlZTgwOWNlYzEwNWU1YzViZTRmODdjNDYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9t
ZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2ds
ZV9jaHJvbWUucHkKQEAgLTI0LDExICsyNCw2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBj
b2RlY3MKLWltcG9ydCBvcwotCiAKIGRlZiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBv
cnQsIHN1cGVyKToKICAgICAjIFRoZSBjaHJvbWUgcG9ydHMgdXNlIHRoZSByZWd1bGFyIG92ZXJy
aWRlcyBwbHVzIGFueXRoaW5nIGluIHRoZQpAQCAtNDAsMTQgKzM1LDExIEBAIGRlZiBfdGVzdF9l
eHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBvcnQsIHN1cGVyKToKICAgICAjIHRoaXMgY2hhbmdlZCBp
biByNjA0MjcuIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGNoYW5nZWQgYmFjay4KICAgICBvdmVy
cmlkZXNfcGF0aCA9IHBvcnQucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsICd0b29s
cycsCiAgICAgICAgICAgICAnbGF5b3V0X3Rlc3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9t
ZS50eHQnKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CisgICAg
aWYgbm90IHBvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzKG92ZXJyaWRlc19wYXRoKToKICAgICAgICAg
cmV0dXJuIGNocm9taXVtX292ZXJyaWRlcwogCi0gICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlk
ZXNfcGF0aCwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICBpZiBjaHJvbWl1bV9vdmVy
cmlkZXM6Ci0gICAgICAgICAgICByZXR1cm4gY2hyb21pdW1fb3ZlcnJpZGVzICsgZmlsZS5yZWFk
KCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQorICAgIGNo
cm9taXVtX292ZXJyaWRlcyA9IGNocm9taXVtX292ZXJyaWRlcyBvciAnJworICAgIHJldHVybiBj
aHJvbWl1bV9vdmVycmlkZXMgKyBwb3J0Ll9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG92ZXJy
aWRlc19wYXRoKQogCiBkZWYgR2V0R29vZ2xlQ2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgIiIi
U29tZSB0ZXN0cyBoYXZlIHNsaWdodGx5IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gY29tcGlsZWQg
YXMgR29vZ2xlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHkKaW5kZXggZTYwYzI3
NDE2ZGViMzc5MzVmNDBiNDUzNTdjYmQyOTcxZDJjNmVhNi4uNjUzOWJiMmI0YmViOTg4MDVhYWY5
M2Q0MzE0ZDA2MGE0NGFhODM4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5w
eQpAQCAtNTAsNyArNTAsNyBAQCBjbGFzcyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHBvcnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9t
ZVBvcnQocG9ydF9uYW1lPXBvcnRfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcHRpb25zPU5vbmUpCiAgICAgICAgIHBhdGggPSBwb3J0LmJh
c2VsaW5lX3NlYXJjaF9wYXRoKClbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF9wYXRoLCBvcy5wYXRoLnNwbGl0KHBhdGgpWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGV4cGVjdGVkX3BhdGgsIHBvcnQuX2ZpbGVzeXN0ZW0uYmFzZW5hbWUocGF0aCkpCiAKICAgICBk
ZWYgX3ZlcmlmeV9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAg
ICAgICMgRklYTUU6IG1ha2UgdGhpcyBtb3JlIHJvYnVzdCB3aGVuIHdlIGhhdmUgdGhlIFRyZWUo
KSBhYnN0cmFjdGlvbi4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHkKaW5kZXggYTE4ZmRmZjVjZjNiNGE2MjlmZDA1ODhlMTZiZTMxNzJlNWQyNjNm
Yy4uMGVjOWY4NzhhY2Q5MzFhZDZkZTRkYWNlZmZkYWVkYWM3NTQ5M2E4ZCAxMDA2NDQKLS0tIGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTU3LDggKzU3
LDggQEAgY2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0KToKIAogICAgIGRlZiBfcGF0aF90b19hcGFj
aGVfY29uZmlnX2ZpbGUoc2VsZik6CiAgICAgICAgICMgRklYTUU6IFRoaXMgbmVlZHMgdG8gZGV0
ZWN0IHRoZSBkaXN0cmlidXRpb24gYW5kIGNoYW5nZSBjb25maWcgZmlsZXMuCi0gICAgICAgIHJl
dHVybiBvcy5wYXRoLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYn
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25m
JykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0
c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQogCiAgICAgZGVmIF9zaHV0X2Rvd25f
aHR0cF9zZXJ2ZXIoc2VsZiwgc2VydmVyX3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUg
aHR0cGQgd2ViIHNlcnZlci4gQmxvY2tzIHVudGlsIGl0J3MgZnVsbHkKQEAgLTEwMyw3ICsxMDMs
NyBAQCBjbGFzcyBHdGtQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgY29uZmlnX25hbWUgPSAnYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicKIAotICAgICAgICBy
ZXR1cm4gb3MucGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25m
JywKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0
c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnX25hbWUpCiAKICAgICBkZWYgX3BhdGhfdG9fd2RpZmYoc2VsZik6CkBAIC0xMTMsNCArMTEz
LDQgQEAgY2xhc3MgR3RrUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAgIHJldHVybiAnL3Vz
ci9iaW4vd2RpZmYnCiAKICAgICBkZWYgX2lzX3JlZGhhdF9iYXNlZChzZWxmKToKLSAgICAgICAg
cmV0dXJuIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbignL2V0YycsICdyZWRoYXQtcmVsZWFz
ZScpKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fZmlsZXN5
c3RlbS5qb2luKCcvZXRjJywgJ3JlZGhhdC1yZWxlYXNlJykpCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CmluZGV4IDY5NmUzMzk4ZWE0YjI4YWM3
NjIyNTkwN2RjMzYyZmZjM2ZiODZmOWUuLjA2MjIxOTYxMDgxNDY1ODI2NjBjYTRmMGI1MTA4OTlk
MjJhYzZkMjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5CkBAIC03Niw5ICs3Niw5IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAg
ICAgICAgICMgcGxhdGZvcm1zIGFuZCBtb3ZlZCBpbnRvIGJhc2UuUG9ydC4KICAgICAgICAgc2tp
cHBlZF9maWxlcyA9IFtdCiAgICAgICAgIGlmIHNlbGYuX25hbWUgaW4gKCdtYWMtdGlnZXInLCAn
bWFjLWxlb3BhcmQnLCAnbWFjLXNub3dsZW9wYXJkJyk6Ci0gICAgICAgICAgICBza2lwcGVkX2Zp
bGVzLmFwcGVuZChvcy5wYXRoLmpvaW4oCisgICAgICAgICAgICBza2lwcGVkX2ZpbGVzLmFwcGVu
ZChzZWxmLl9maWxlc3lzdGVtLmpvaW4oCiAgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoc2VsZi5fbmFtZSksICdTa2lwcGVkJykpCi0gICAgICAgIHNraXBwZWRfZmls
ZXMuYXBwZW5kKG9zLnBhdGguam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyks
CisgICAgICAgIHNraXBwZWRfZmlsZXMuYXBwZW5kKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnU2tpcHBlZCcpKQogICAgICAgICByZXR1cm4gc2tpcHBlZF9maWxl
cwogCkBAIC05OSw3ICs5OSw3IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAg
IHJldHVybiAnJwogCiAgICAgZGVmIF9idWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydChzZWxmKToKLSAg
ICAgICAgamF2YV90ZXN0c19wYXRoID0gb3MucGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCAiamF2YSIpCisgICAgICAgIGphdmFfdGVzdHNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgImphdmEiKQogICAgICAgICBidWlsZF9qYXZh
ID0gWyIvdXNyL2Jpbi9tYWtlIiwgIi1DIiwgamF2YV90ZXN0c19wYXRoXQogICAgICAgICBpZiBz
ZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYnVpbGRfamF2YSwgcmV0dXJuX2V4aXRfY29kZT1U
cnVlKToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBKYXZhIHN1cHBv
cnQgZmlsZXM6ICVzIiAlIGJ1aWxkX2phdmEpCkBAIC0xMjQsOCArMTI0LDggQEAgY2xhc3MgTWFj
UG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgXQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91
dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2FwYWNoZTItaHR0cGQuY29uZicpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcGFjaGUyLWh0dHBkLmNvbmYnKQogCiAgICAg
IyBGSVhNRTogVGhpcyBkb2Vzbid0IGhhdmUgYW55dGhpbmcgdG8gZG8gd2l0aCBXZWJLaXQuCiAg
ICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2ZXIoc2VsZiwgc2VydmVyX3BpZCk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNh
c2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVz
dGNhc2UucHkKaW5kZXggYzRiMzZhY2Q5MDc5ZmQyZmJlOTA5MDEyMDJkNWY5YzAyNWUzODdlNS4u
MzBmM2E1NjkxNmUxNjFiZWE2YmNlNDY5NzBkZjE0NGQ2NzY5NzRhNCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2Fz
ZS5weQpAQCAtMjgsOCArMjgsNiBAQAogCiAiIiJVbml0IHRlc3RpbmcgYmFzZSBjbGFzcyBmb3Ig
UG9ydCBpbXBsZW1lbnRhdGlvbnMuIiIiCiAKLWltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCiBp
bXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbApAQCAt
NjQsMzAgKzYyLDI1IEBAIGNsYXNzIFBvcnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIGlmIG5vdCBwb3J0OgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBGSVhN
RTogbm90IHN1cmUgd2h5IHRoaXMgc2hvdWxkbid0IGFsd2F5cyBiZSBUcnVlCi0gICAgICAgICNz
ZWxmLmFzc2VydFRydWUocG9ydC5jaGVja19pbWFnZV9kaWZmKCkpCiAgICAgICAgIGlmIG5vdCBw
b3J0LmNoZWNrX2ltYWdlX2RpZmYoKToKKyAgICAgICAgICAgICMgVGhlIHBvcnQgaGFzbid0IGJl
ZW4gYnVpbHQgLSBkb24ndCBydW4gdGhlIHRlc3RzLgogICAgICAgICAgICAgcmV0dXJuCiAKICAg
ICAgICAgZGlyID0gcG9ydC5sYXlvdXRfdGVzdHNfZGlyKCkKLSAgICAgICAgZmlsZTEgPSBvcy5w
YXRoLmpvaW4oZGlyLCAnZmFzdCcsICdjc3MnLCAnYnV0dG9uX2NlbnRlci5wbmcnKQotICAgICAg
ICBmaDEgPSBmaWxlKGZpbGUxKQotICAgICAgICBjb250ZW50czEgPSBmaDEucmVhZCgpCi0gICAg
ICAgIGZpbGUyID0gb3MucGF0aC5qb2luKGRpciwgJ2Zhc3QnLCAnY3NzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0ZWQucG5nJykKLSAgICAg
ICAgZmgyID0gZmlsZShmaWxlMikKLSAgICAgICAgY29udGVudHMyID0gZmgyLnJlYWQoKQotICAg
ICAgICB0bXBmaWxlID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAgICAgICAgZmlsZTEgPSBwb3J0Ll9m
aWxlc3lzdGVtLmpvaW4oZGlyLCAnZmFzdCcsICdjc3MnLCAnYnV0dG9uX2NlbnRlci5wbmcnKQor
ICAgICAgICBjb250ZW50czEgPSBwb3J0Ll9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmls
ZTEpCisgICAgICAgIGZpbGUyID0gcG9ydC5fZmlsZXN5c3RlbS5qb2luKGRpciwgJ2Zhc3QnLCAn
Y3NzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW92ZS1zaG9y
dGhhbmQtZXhwZWN0ZWQucG5nJykKKyAgICAgICAgY29udGVudHMyID0gcG9ydC5fZmlsZXN5c3Rl
bS5yZWFkX2JpbmFyeV9maWxlKGZpbGUyKQorICAgICAgICB0bXBmZCwgdG1wZmlsZSA9IHBvcnQu
X2ZpbGVzeXN0ZW0ub3Blbl9iaW5hcnlfdGVtcGZpbGUoJycpCisgICAgICAgIHRtcGZkLmNsb3Nl
KCkKIAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEs
IGNvbnRlbnRzMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29u
dGVudHMxLCBjb250ZW50czIpKQogCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZf
aW1hZ2UoY29udGVudHMxLCBjb250ZW50czIsIHRtcGZpbGUpKQotICAgICAgICBmaDEuY2xvc2Uo
KQotICAgICAgICBmaDIuY2xvc2UoKQotICAgICAgICAjIEZJWE1FOiB0aGlzIG1heSBub3QgYmUg
YmVpbmcgd3JpdHRlbj8KLSAgICAgICAgIyBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMo
dG1wZmlsZSkpCi0gICAgICAgICMgb3MucmVtb3ZlKHRtcGZpbGUpCisKKyAgICAgICAgcG9ydC5f
ZmlsZXN5c3RlbS5yZW1vdmUodG1wZmlsZSkKIAogICAgIGRlZiB0ZXN0X3dlYnNvY2tldF9zZXJ2
ZXIoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9xdC5weQppbmRleCBhZjk0YWNjMzkwMWI0
ODBjNDNhODQxNThiYjUzOTBhZWJiMzZjZWE5Li4xNjk1YjYwMzkxZGNiY2MzNDY0NDAzN2M1Yjcz
OGQ0OGU4ZWQ4MzFlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L3F0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvcXQucHkKQEAgLTcxLDggKzcxLDggQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgog
CiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgIyBG
SVhNRTogVGhpcyBuZWVkcyB0byBkZXRlY3QgdGhlIGRpc3RyaWJ1dGlvbiBhbmQgY2hhbmdlIGNv
bmZpZyBmaWxlcy4KLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0
c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fw
YWNoZTItZGViaWFuLWh0dHBkLmNvbmYnKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3Rl
bS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicp
CiAKICAgICBkZWYgX3NodXRfZG93bl9odHRwX3NlcnZlcihzZWxmLCBzZXJ2ZXJfcGlkKToKICAg
ICAgICAgIiIiU2h1dCBkb3duIHRoZSBodHRwZCB3ZWIgc2VydmVyLiBCbG9ja3MgdW50aWwgaXQn
cyBmdWxseQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3dlYmtpdC5weQppbmRleCBhZmRlYmViMmM4NDZlZDdjY2RmZDJmZmU3ZGIwMjFhZDMxNTIxM2I5
Li41NzdhY2Q0NWU5ODNjYzFjNGNkOGFkMTdkYTE3OWYzZGIwNGFkOGVmIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMzEs
MjAgKzMxLDE0IEBACiAiIiJXZWJLaXQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGludGVy
ZmFjZS4iIiIKIAogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWlt
cG9ydCBjb2RlY3MKIGltcG9ydCBsb2dnaW5nCitpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwog
aW1wb3J0IHJlCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBv
cnQgdGltZQogaW1wb3J0IHdlYmJyb3dzZXIKLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IHRlbXBm
aWxlCi1pbXBvcnQgc2h1dGlsCiAKIGltcG9ydCB3ZWJraXRweS5jb21tb24uc3lzdGVtLm9zcGF0
aCBhcyBvc3BhdGgKIGltcG9ydCB3ZWJraXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2Uu
dGVzdF9vdXRwdXQgYXMgdGVzdF9vdXRwdXQKQEAgLTcyLDggKzY2LDggQEAgY2xhc3MgV2ViS2l0
UG9ydChiYXNlLlBvcnQpOgogICAgICAgICByZXR1cm4gW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9w
YXRoKHNlbGYuX25hbWUpXQogCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmls
ZShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLl93ZWJraXRfYmFzZWxp
bmVfcGF0aChzZWxmLl9uYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9l
eHBlY3RhdGlvbnMudHh0JykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLl9uYW1lKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKIAogICAgICMgT25s
eSBuZWVkZWQgYnkgcG9ydHMgd2hpY2ggbWFpbnRhaW4gdmVyc2lvbmVkIHRlc3QgZXhwZWN0YXRp
b25zIChsaWtlIG1hYy10aWdlciB2cy4gbWFjLWxlb3BhcmQpCiAgICAgZGVmIHZlcnNpb24oc2Vs
Zik6CkBAIC04NSw3ICs3OSw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKIAogICAg
IGRlZiBfY2hlY2tfZHJpdmVyKHNlbGYpOgogICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYuX3Bh
dGhfdG9fZHJpdmVyKCkKLSAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRyaXZlcl9wYXRo
KToKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZpbGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRoKToK
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkR1bXBSZW5kZXJUcmVlIHdhcyBub3QgZm91bmQgYXQg
JXMiICUgZHJpdmVyX3BhdGgpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0
dXJuIFRydWUKQEAgLTEwOCw3ICsxMDIsNyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6
CiAKICAgICBkZWYgY2hlY2tfaW1hZ2VfZGlmZihzZWxmLCBvdmVycmlkZV9zdGVwPU5vbmUsIGxv
Z2dpbmc9VHJ1ZSk6CiAgICAgICAgIGltYWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1h
Z2VfZGlmZigpCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbWFnZV9kaWZmX3BhdGgp
OgorICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoaW1hZ2VfZGlmZl9wYXRo
KToKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB3YXMgbm90IGZvdW5kIGF0ICVz
IiAlIGltYWdlX2RpZmZfcGF0aCkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBy
ZXR1cm4gVHJ1ZQpAQCAtMTY1LDggKzE1OSw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0
KToKICAgICAgICAgICAgIGlmIG0uZ3JvdXAoMikgPT0gJ3Bhc3NlZCc6CiAgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gRmFsc2UKICAgICAgICAgZWxpZiBvdXRwdXQgYW5kIGRpZmZfZmlsZW5hbWU6
Ci0gICAgICAgICAgICB3aXRoIG9wZW4oZGlmZl9maWxlbmFtZSwgJ3cnKSBhcyBmaWxlOgotICAg
ICAgICAgICAgICAgIGZpbGUud3JpdGUob3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5
c3RlbS53cml0ZV90ZXh0X2ZpbGUoZGlmZl9maWxlbmFtZSwgb3V0cHV0KQogICAgICAgICBlbGlm
IHNwLnRpbWVkX291dDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBv
dXQiKQogICAgICAgICBlbGlmIHNwLmNyYXNoZWQ6CkBAIC0zMDAsMjUgKzI5MywyMiBAQCBjbGFz
cyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHJldHVybiB0ZXN0c190b19za2lwCiAK
ICAgICBkZWYgX3NraXBwZWRfZmlsZV9wYXRocyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtvcy5w
YXRoLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTa2lwcGVk
JyldCisgICAgICAgIHJldHVybiBbc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9i
YXNlbGluZV9wYXRoKHNlbGYuX25hbWUpLCAnU2tpcHBlZCcpXQogCiAgICAgZGVmIF9leHBlY3Rh
dGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVzKHNlbGYpOgogICAgICAgICB0ZXN0c190b19za2lwID0g
W10KICAgICAgICAgZm9yIGZpbGVuYW1lIGluIHNlbGYuX3NraXBwZWRfZmlsZV9wYXRocygpOgot
ICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKKyAgICAgICAgICAg
IGlmIG5vdCBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICAg
ICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gb3BlbiBTa2lwcGVkIGZpbGU6ICVzIiAlIGZpbGVuYW1l
KQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVu
KGZpbGVuYW1lLCAiciIsICJ1dGYtOCIpIGFzIHNraXBwZWRfZmlsZToKLSAgICAgICAgICAgICAg
ICB0ZXN0c190b19za2lwLmV4dGVuZChzZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmlsZShza2lw
cGVkX2ZpbGUpKQorICAgICAgICAgICAgc2tpcHBlZF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5y
ZWFkX3RleHRfZmlsZShmaWxlbmFtZSkKICAgICAgICAgcmV0dXJuIHRlc3RzX3RvX3NraXAKIAog
ICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9ucyhzZWxmKToKICAgICAgICAgIyBUaGUgV2ViS2l0IG1h
YyBwb3J0IHVzZXMgYSBjb21iaW5hdGlvbiBvZiBhIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUKICAg
ICAgICAgIyBhbmQgJ1NraXBwZWQnIGZpbGVzLgogICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9
IHNlbGYucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKCkKLSAgICAgICAgd2l0aCBjb2Rl
Y3Mub3BlbihleHBlY3RhdGlvbnNfcGF0aCwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAg
ICAgICAgcmV0dXJuIGZpbGUucmVhZCgpICsgc2VsZi5fc2tpcHMoKQorICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCkgKyBzZWxm
Ll9za2lwcygpCiAKICAgICBkZWYgX3NraXBzKHNlbGYpOgogICAgICAgICAjIEVhY2ggU2tpcHBl
ZCBmaWxlIGNvbnRhaW5zIGEgbGlzdCBvZiBmaWxlcwpAQCAtMzczLDcgKzM2Myw3IEBAIGNsYXNz
IFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgICMgVGhlIEFwYWNoZSBiaW5hcnkg
cGF0aCBjYW4gdmFyeSBkZXBlbmRpbmcgb24gT1MgYW5kIGRpc3RyaWJ1dGlvbgogICAgICAgICAg
ICAgIyBTZWUgaHR0cDovL3dpa2kuYXBhY2hlLm9yZy9odHRwZC9EaXN0cm9zRGVmYXVsdExheW91
dAogICAgICAgICAgICAgZm9yIHBhdGggaW4gWyIvdXNyL3NiaW4vaHR0cGQiLCAiL3Vzci9zYmlu
L2FwYWNoZTIiXToKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAg
ICAgICAgICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwYXRoKToKICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fY2FjaGVkX2FwYWNoZV9wYXRoID0gcGF0aAogICAgICAgICAgICAg
ICAgICAgICBicmVhawogCkBAIC0zODksMTAgKzM3OSwxMCBAQCBjbGFzcyBXZWJLaXREcml2ZXIo
YmFzZS5Ecml2ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVy
KToKICAgICAgICAgc2VsZi5fd29ya2VyX251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAg
c2VsZi5fcG9ydCA9IHBvcnQKLSAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSB0ZW1wZmls
ZS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJlbmRlclRyZWUtJykKKyAgICAgICAgc2VsZi5fZHJpdmVy
X3RlbXBkaXIgPSBwb3J0Ll9maWxlc3lzdGVtLm1rZHRlbXAocHJlZml4PSdEdW1wUmVuZGVyVHJl
ZS0nKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoc2Vs
Zi5fZHJpdmVyX3RlbXBkaXIpCisgICAgICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVl
KHN0cihzZWxmLl9kcml2ZXJfdGVtcGRpcikpCiAKICAgICBkZWYgY21kX2xpbmUoc2VsZik6CiAg
ICAgICAgIGNtZCA9IHNlbGYuX2NvbW1hbmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24o
J3dyYXBwZXInKSkKQEAgLTQwNiw3ICszOTYsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5E
cml2ZXIpOgogICAgIGRlZiBzdGFydChzZWxmKToKICAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxm
Ll9wb3J0LnNldHVwX2Vudmlyb25fZm9yX3NlcnZlcigpCiAgICAgICAgIGVudmlyb25tZW50WydE
WUxEX0ZSQU1FV09SS19QQVRIJ10gPSBzZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKLSAgICAgICAg
ZW52aXJvbm1lbnRbJ0RVTVBSRU5ERVJUUkVFX1RFTVAnXSA9IHNlbGYuX2RyaXZlcl90ZW1wZGly
CisgICAgICAgIGVudmlyb25tZW50WydEVU1QUkVOREVSVFJFRV9URU1QJ10gPSBzdHIoc2VsZi5f
ZHJpdmVyX3RlbXBkaXIpCiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VydmVyX3By
b2Nlc3MuU2VydmVyUHJvY2VzcyhzZWxmLl9wb3J0LAogICAgICAgICAgICAgIkR1bXBSZW5kZXJU
cmVlIiwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHkgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQppbmRleCA5ZTMwMTU1MTAwMDc3NjA4
ZGM3MWYyNDU1YTBmNGZlMjYyMTM1ZDY1Li5lN2QyMDA0YmFiMzVlN2QzZDhkZGYyYjhiZTA2MTVh
MTZhOTQwNWEzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L3dpbi5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dpbi5weQpAQCAtMjksNyArMjksNiBAQAogIiIiV2ViS2l0IFdpbiBpbXBsZW1lbnRhdGlv
biBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MK
IAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBv
cnQKIApAQCAtNjAsOCArNTksOCBAQCBjbGFzcyBXaW5Qb3J0KFdlYktpdFBvcnQpOgogICAgICAg
ICBdCiAKICAgICBkZWYgX3BhdGhfdG9fYXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAg
ICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdj
b25mJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3lnd2luLWh0dHBkLmNvbmYnKQor
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpLCAnaHR0cCcsICdjb25mJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnY3lnd2luLWh0dHBkLmNvbmYnKQogCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2ZXIo
c2VsZiwgc2VydmVyX3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUgaHR0cGQgd2ViIHNl
cnZlci4gQmxvY2tzIHVudGlsIGl0J3MgZnVsbHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQppbmRl
eCBkYTQ2NmM4YTE3Y2QxY2UyN2VjZmJmOTViMTAyZjhmNTc4ZTM1MThiLi40NDYwNWQyZWU4MWI3
YjA0MjE0MTVkMWFjYmQyMjc0ZTVhZTBhODdiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy90ZXN0X3R5cGVzL2ltYWdlX2RpZmYucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CkBA
IC0zNCwxMyArMzQsOCBAQCBtYXRjaCwgcmV0dXJucyBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2gg
YW5kIG91dHB1dHMgYm90aCBoYXNoZXMgaW50byB0aGUgbGF5b3V0CiB0ZXN0IHJlc3VsdHMgZGly
ZWN0b3J5LgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQot
aW1wb3J0IGNvZGVjcwogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1p
bXBvcnQgc2h1dGlsCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdl
IGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5
cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFzZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79665</attachid>
            <date>2011-01-20 16:41:43 -0800</date>
            <delta_ts>2011-01-21 14:23:20 -0800</delta_ts>
            <desc>update w/ review feedback from eseidel</desc>
            <filename>bug-52771-20110120164141.patch</filename>
            <type>text/plain</type>
            <size>28559</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMjE2
ZDVlODc2NmNlMzM5MzBjNGRmMTQ2YjdkODVjMTNjMDMyZTNiLi5lZDk4YzhkYmVhM2ZmYmU4Yzdj
ZTQ1OGFjMjUyMWU4MmFmZDUwNDFkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMzUgQEAKIDIwMTEtMDEtMTkgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTaWVk
ZWwuCisKKyAgICAgICAgbnJ3dDogY2xlYW4gdXAgYWxtb3N0IGFsbCByZW1haW5pbmcgcG9ydCBy
ZWZlcmVuY2VzLCByZW1vdmUKKyAgICAgICAgdW5uZWNlc3NhcnkgaW1wb3J0IGNsYXVzZXMuIFRo
ZSBvbmx5IHJlbWFpbmluZyByZWZlcmVuY2VzIGFyZQorICAgICAgICBpbiBwbGFjZXMgd2hlcmUg
YSBtb2NrIGZpbGVzeXN0ZW0gbWFrZXMgbm8gc2Vuc2Ugb3IgY2FuJ3QgYmUKKyAgICAgICAgdXNl
ZCwgYW5kIGluIG9uZSByb3V0aW5lIGluIHBvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdCB0aGF0
CisgICAgICAgIEknbGwgcmV3cml0ZSBpbiBhIHNlcGFyYXRlIHBhdGNoLgorCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01Mjc3MQorCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV9ncHUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV9ncHVfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51eC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX21hYy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2luLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fd2lu
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvZ29vZ2xlX2Nocm9tZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5OgorCisyMDExLTAxLTE5ICBE
aXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgogCiAgICAgICAgIHJlbW92ZSBmcyByZWZzIGZyb20gcnVuX3dlYmtp
dF90ZXN0cywgcmViYXNlbGluZV9jaHJvbWl1bV93ZWJraXRfdGVzdHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVu
bmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2th
Z2UvdGVzdF9ydW5uZXIucHkKaW5kZXggNjc1MjRkMzVhNzZhZjMxNjQ1ZmI2NmUwNzViZGU5ZDc0
ZmZjOGI1YS4uNmMwNzg1MDBlYWViN2E5ODg4ODViMjE4NDlkMGE2NWViYjIwZjIwMiAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2Uv
dGVzdF9ydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
bGF5b3V0X3BhY2thZ2UvdGVzdF9ydW5uZXIucHkKQEAgLTM1LDEyICszNSwxMyBAQCBvYmplY3Rz
IHRvIHRoZSBUZXN0UnVubmVyLiAgVGhlIFRlc3RSdW5uZXIgdGhlbiBhZ2dyZWdhdGVzIHRoZSBU
ZXN0RmFpbHVyZXMgdG8KIGNyZWF0ZSBhIGZpbmFsIHJlcG9ydC4KICIiIgogCitmcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dp
bmcKIGltcG9ydCBtYXRoCiBpbXBvcnQgUXVldWUKIGltcG9ydCByYW5kb20KLWltcG9ydCBzaHV0
aWwKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fZ3B1LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKaW5kZXggYzFmNWM4
ZDY5YzdhNDBkYzNmNDlmZTk2NzE2ZjIwNDI1MGQxMTU4Ni4uYjg4ZDhhYTA4NTM3ZGZkY2ZmMTc5
MTM2NjM2MjEyMTg0YWZmYjIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHUucHkKQEAgLTI0LDEwICsyNCw2IEBA
CiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0
IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKLWltcG9ydCBvcwogaW1wb3J0IHN5cwog
CiBpbXBvcnQgY2hyb21pdW1fbGludXgKQEAgLTgyLDEwICs3OCw5IEBAIGRlZiBfZ3B1X292ZXJy
aWRlcyhwb3J0KToKICAgICAgICAgICAgICdsYXlvdXRfdGVzdHMnLCAndGVzdF9leHBlY3RhdGlv
bnNfZ3B1LnR4dCcpCiAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgogICAgICAgICByZXR1cm4g
Tm9uZQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CisgICAgaWYg
bm90IHBvcnQuX2ZpbGVzeXN0ZW0uZXhpc3RzKG92ZXJyaWRlc19wYXRoKToKICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICB3aXRoIGNvZGVjcy5vcGVuKG92ZXJyaWRlc19wYXRoLCAiciIsICJ1dGYt
OCIpIGFzIGZpbGU6Ci0gICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQorICAgIHJldHVybiBwb3J0
Ll9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG92ZXJyaWRlc19wYXRoKQogCiAKIGNsYXNzIENo
cm9taXVtR3B1TGludXhQb3J0KGNocm9taXVtX2xpbnV4LkNocm9taXVtTGludXhQb3J0KToKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21p
dW1fZ3B1X3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKaW5kZXggYWQwNDA0Y2ZmZTQ3OTBmOWVkZTMx
MTMxM2QxZDRkOGZjYTY5MzYwNS4uMGJmYjEyNzY3NmMzNjhmZjIyNmI4OWJiZGMzMmYwOTcxNzJk
NGZmNiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9ncHVfdW5pdHRlc3QucHkKQEAgLTI0LDcgKzI0LDYg
QEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1wb3J0IHVu
aXR0ZXN0CiAKIGZyb20gd2Via2l0cHkudG9vbCBpbXBvcnQgbW9ja3Rvb2wKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2xp
bnV4LnB5CmluZGV4IDc5NzQxYjJlYzk0ZmQ4NmI0ZTc1MTI0N2I4Mzk0MzU4NjY2ZThiZjYuLmE3
NWY3ZDIwYWY3ZTEwYzIzOTdiODQzMDJiNzY1MDUyNGM3NzJmOTYgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbGludXgucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9saW51
eC5weQpAQCAtODMsMTQgKzgzLDE0IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpjb21wcykKIAogICAgICAgICBiYXNlID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgp
Ci0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlLCAnc2NvbnNidWls
ZCcpKToKLSAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQn
LCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihiYXNlLCAn
b3V0JywgKmNvbXBzKSkgb3Igc2VsZi5nZXRfb3B0aW9uKCd1c2VfdGVzdF9zaGVsbCcpOgotICAg
ICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQorICAgICAg
ICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwg
J3Njb25zYnVpbGQnKSk6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2lu
KGJhc2UsICdzY29uc2J1aWxkJywgKmNvbXBzKQorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVt
LmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykpIG9yIHNl
bGYuZ2V0X29wdGlvbigndXNlX3Rlc3Rfc2hlbGwnKToKKyAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ291dCcsICpjb21wcykKICAgICAgICAgYmFzZSA9IHNl
bGYucGF0aF9mcm9tX3dlYmtpdF9iYXNlKCkKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMob3Mu
cGF0aC5qb2luKGJhc2UsICdzY29uc2J1aWxkJykpOgotICAgICAgICAgICAgcmV0dXJuIG9zLnBh
dGguam9pbihiYXNlLCAnc2NvbnNidWlsZCcsICpjb21wcykKLSAgICAgICAgcmV0dXJuIG9zLnBh
dGguam9pbihiYXNlLCAnb3V0JywgKmNvbXBzKQorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVt
LmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4oYmFzZSwgJ3Njb25zYnVpbGQnKSk6CisgICAg
ICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGJhc2UsICdzY29uc2J1aWxkJywg
KmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGJhc2UsICdvdXQn
LCAqY29tcHMpCiAKICAgICBkZWYgX2NoZWNrX2FwYWNoZV9pbnN0YWxsKHNlbGYpOgogICAgICAg
ICByZXN1bHQgPSBjaHJvbWl1bS5jaGVja19maWxlX2V4aXN0cyhzZWxmLl9wYXRoX3RvX2FwYWNo
ZSgpLApAQCAtMTM3LDcgKzEzNyw3IEBAIGNsYXNzIENocm9taXVtTGludXhQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWdfbmFtZSA9
ICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJwogCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpv
aW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLAorICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcs
ICdjb25mJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfbmFtZSkKIAogICAg
IGRlZiBfcGF0aF90b19saWdodHRwZChzZWxmKToKQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBD
aHJvbWl1bUxpbnV4UG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAgICAgcmV0
dXJuICcvdXNyL2Jpbi93ZGlmZicKIAogICAgIGRlZiBfaXNfcmVkaGF0X2Jhc2VkKHNlbGYpOgot
ICAgICAgICByZXR1cm4gb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKCcvZXRjJywgJ3JlZGhh
dC1yZWxlYXNlJykpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxm
Ll9maWxlc3lzdGVtLmpvaW4oJy9ldGMnLCAncmVkaGF0LXJlbGVhc2UnKSkKIAogICAgIGRlZiBf
c2h1dF9kb3duX2h0dHBfc2VydmVyKHNlbGYsIHNlcnZlcl9waWQpOgogICAgICAgICAiIiJTaHV0
IGRvd24gdGhlIGxpZ2h0dHBkIHdlYiBzZXJ2ZXIuIEJsb2NrcyB1bnRpbCBpdCdzIGZ1bGx5CmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hy
b21pdW1fbWFjLnB5CmluZGV4IGIwOGE5NDhiNDQ5NDZkMzhmOGJjNjY1MDg4MDQ3OTdlYTBiOGU3
MTMuLjUzNjBhYjM0Zjg3NmQ4YWY5Y2NmMWE5OGU3MTU0ODFjYzcyMGEzNjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fbWFjLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1f
bWFjLnB5CkBAIC0xMTAsNyArMTEwLDcgQEAgY2xhc3MgQ2hyb21pdW1NYWNQb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICpjb21wcykKIAogICAgICAgICBwYXRoID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgn
eGNvZGVidWlsZCcsICpjb21wcykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCkgb3Ig
c2VsZi5nZXRfb3B0aW9uKCd1c2VfdGVzdF9zaGVsbCcpOgorICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhwYXRoKSBvciBzZWxmLmdldF9vcHRpb24oJ3VzZV90ZXN0X3NoZWxsJyk6
CiAgICAgICAgICAgICByZXR1cm4gcGF0aAogICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21f
d2Via2l0X2Jhc2UoCiAgICAgICAgICAgICAnU291cmNlJywgJ1dlYktpdCcsICdjaHJvbWl1bScs
ICd4Y29kZWJ1aWxkJywgKmNvbXBzKQpAQCAtMTMyLDggKzEzMiw4IEBAIGNsYXNzIENocm9taXVt
TWFjUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gJy91c3Ivc2Jp
bi9odHRwZCcKIAogICAgIGRlZiBfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICdodHRw
JywgJ2NvbmYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcGFjaGUyLWh0dHBkLmNv
bmYnKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rl
c3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnYXBhY2hlMi1odHRwZC5jb25mJykKIAogICAgIGRlZiBfcGF0aF90b19saWdodHRw
ZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2xpZ2h0dHBkX3BhdGgoJ2JpbicsICdsaWdo
dHRwZCcpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV91bml0dGVzdC5weQppbmRleCA1YTAyY2FlNGNhYjJjNWQzMmU2
MWE3Zjg4MWJlMzJlYmUzYWJkNTIyLi42Yzg5ODdiOTEzNTAxYmM5MzM4YzZjNjVlMjdlZWM0ZDFj
NDAwMThiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fdW5pdHRlc3QucHkKQEAgLTI2LDcgKzI2LDYgQEAKICMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0
CiBpbXBvcnQgU3RyaW5nSU8KIApAQCAtMTMxLDcgKzEzMCw3IEBAIGNsYXNzIENocm9taXVtUG9y
dFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBtb2NrX29wdGlvbnMgPSBtb2NrdG9v
bC5Nb2NrT3B0aW9ucygpCiAgICAgICAgIHBvcnQgPSBDaHJvbWl1bVBvcnRUZXN0LlRlc3RMaW51
eFBvcnQob3B0aW9ucz1tb2NrX29wdGlvbnMpCiAKLSAgICAgICAgZmFrZV90ZXN0ID0gb3MucGF0
aC5qb2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAiZmFzdC9qcy9ub3QtZ29vZC5qcyIpCisg
ICAgICAgIGZha2VfdGVzdCA9IHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0
c19kaXIoKSwgImZhc3QvanMvbm90LWdvb2QuanMiKQogCiAgICAgICAgIHBvcnQudGVzdF9leHBl
Y3RhdGlvbnMgPSBsYW1iZGE6ICIiIkJVR19URVNUIFNLSVAgOiBmYXN0L2pzL25vdC1nb29kLmpz
ID0gVEVYVAogTElOVVggV0lOIDogZmFzdC9qcy92ZXJ5LWdvb2QuanMgPSBUSU1FT1VUIFBBU1Mi
IiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
Y2hyb21pdW1fd2luLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV93aW4ucHkKaW5kZXggMGZlY2M2ZDJkNDFhNzEyNmI2NmRiYmJjNmEwMzdkZjM3
ZWJiNmQ5ZC4uMTRmMjc3NzkxZDk5YmQ4MmMyYzZlOTQ2ZWMxOGIyOGIxNGFlOTk2MCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93
aW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJv
bWl1bV93aW4ucHkKQEAgLTMwLDcgKzMwLDYgQEAKICIiIkNocm9taXVtIFdpbiBpbXBsZW1lbnRh
dGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2UuIiIiCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3MKIGltcG9ydCBzeXMKIAogaW1wb3J0IGNocm9taXVtCkBAIC0xMTEsMTMgKzExMCwxMiBAQCBj
bGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQogCiAgICAgICAgIHAgPSBzZWxm
LnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd3ZWJraXQnLCAqY29tcHMpCi0gICAgICAgIGlmIG9z
LnBhdGguZXhpc3RzKHApOgorICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwKToK
ICAgICAgICAgICAgIHJldHVybiBwCiAgICAgICAgIHAgPSBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1
bV9iYXNlKCdjaHJvbWUnLCAqY29tcHMpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHApIG9y
IHNlbGYuZ2V0X29wdGlvbigndXNlX3Rlc3Rfc2hlbGwnKToKKyAgICAgICAgaWYgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMocCkgb3Igc2VsZi5nZXRfb3B0aW9uKCd1c2VfdGVzdF9zaGVsbCcpOgog
ICAgICAgICAgICAgcmV0dXJuIHAKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnBh
dGhfZnJvbV93ZWJraXRfYmFzZSgpLCAnV2ViS2l0JywgJ2Nocm9taXVtJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVt
LmpvaW4oc2VsZi5wYXRoX2Zyb21fd2Via2l0X2Jhc2UoKSwgJ1dlYktpdCcsICdjaHJvbWl1bScs
ICpjb21wcykKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAg
ICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnbGln
aHR0cGQnLCAnd2luJywKQEAgLTEyOCw4ICsxMjYsNyBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3NiaW4nLCAnaHR0cGQnKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9j
b25maWdfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91
dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2N5Z3dpbi1odHRwZC5jb25mJykKKyAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsICdjeWd3aW4taHR0
cGQuY29uZicpCiAKICAgICBkZWYgX3BhdGhfdG9fbGlnaHR0cGQoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLl9saWdodHRwZF9wYXRoKCdMaWdodFRQRC5leGUnKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW5fdW5pdHRl
c3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVt
X3dpbl91bml0dGVzdC5weQppbmRleCAzNmYzYzZiMjQyODBlYzg0MmQyZTUwOTBlNzQ0NmNlY2E2
ZDUwY2U5Li5kNjc3NTg5YTUxYTA3OTYwYTk0ZDc2MzI4YjE5ZTUyMTRjNmQzNjIyIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bl91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX3dpbl91bml0dGVzdC5weQpAQCAtNDUsMTMgKzQ1LDE1IEBAIGNsYXNzIENo
cm9taXVtV2luVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVhckRvd24oc2Vs
Zik6CiAgICAgICAgIHN5cy5wbGF0Zm9ybSA9IHNlbGYub3JpZ19wbGF0Zm9ybQorICAgICAgICBz
ZWxmLl9wb3J0ID0gTm9uZQogCiAgICAgZGVmIF9tb2NrX3BhdGhfZnJvbV9jaHJvbWl1bV9iYXNl
KHNlbGYsICpjb21wcyk6Ci0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oIi9jaHJvbWl1bS9z
cmMiLCAqY29tcHMpCisgICAgICAgIHJldHVybiBzZWxmLl9wb3J0Ll9maWxlc3lzdGVtLmpvaW4o
Ii9jaHJvbWl1bS9zcmMiLCAqY29tcHMpCiAKICAgICBkZWYgdGVzdF9zZXR1cF9lbnZpcm9uX2Zv
cl9zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHBvcnQgPSBjaHJvbWl1bV93aW4uQ2hyb21pdW1XaW5Q
b3J0KCkKICAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gbW9ja3Rvb2wuTW9ja0V4ZWN1dGl2ZShz
aG91bGRfbG9nPVRydWUpCisgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAgICAgICAgIHBvcnQu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UgPSBzZWxmLl9tb2NrX3BhdGhfZnJvbV9jaHJvbWl1bV9i
YXNlCiAgICAgICAgIG91dHB1dCA9IG91dHB1dGNhcHR1cmUuT3V0cHV0Q2FwdHVyZSgpCiAgICAg
ICAgIG9yaWdfZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCkBAIC02NSw2ICs2Nyw3IEBAIGNs
YXNzIENocm9taXVtV2luVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICBvcHRp
b25zPUNocm9taXVtV2luVGVzdC5SZWdpc3RlckN5Z3dpbk9wdGlvbigpKQogICAgICAgICBwb3J0
Ll9leGVjdXRpdmUgPSBtb2NrdG9vbC5Nb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkKICAg
ICAgICAgcG9ydC5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSA9IHNlbGYuX21vY2tfcGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKICAgICAgICAgc2V0dXBf
bW91bnQgPSBzZWxmLl9tb2NrX3BhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCJ0aGlyZF9wYXJ0eSIs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiY3lnd2luIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzZXR1cF9tb3VudC5iYXQiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVfY2hyb21lLnB5CmluZGV4IDhk
OTRiYjU5NGRmZDQ2MGI2NjRhZjkyNmFlZjU4MmZmN2M2ZmQyZTMuLmFlOTAzNzQyMDA3NzllZjBl
ZTgwOWNlYzEwNWU1YzViZTRmODdjNDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ29vZ2xlX2Nocm9tZS5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWUucHkKQEAgLTI0LDExICsy
NCw2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKLWltcG9ydCBvcwotCiAKIGRl
ZiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBvcnQsIHN1cGVyKToKICAgICAjIFRoZSBj
aHJvbWUgcG9ydHMgdXNlIHRoZSByZWd1bGFyIG92ZXJyaWRlcyBwbHVzIGFueXRoaW5nIGluIHRo
ZQpAQCAtNDAsMTQgKzM1LDExIEBAIGRlZiBfdGVzdF9leHBlY3RhdGlvbnNfb3ZlcnJpZGVzKHBv
cnQsIHN1cGVyKToKICAgICAjIHRoaXMgY2hhbmdlZCBpbiByNjA0MjcuIFRoaXMgc2hvdWxkIHBy
b2JhYmx5IGJlIGNoYW5nZWQgYmFjay4KICAgICBvdmVycmlkZXNfcGF0aCA9IHBvcnQucGF0aF9m
cm9tX2Nocm9taXVtX2Jhc2UoJ3dlYmtpdCcsICd0b29scycsCiAgICAgICAgICAgICAnbGF5b3V0
X3Rlc3RzJywgJ3Rlc3RfZXhwZWN0YXRpb25zX2Nocm9tZS50eHQnKQotICAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhvdmVycmlkZXNfcGF0aCk6CisgICAgaWYgbm90IHBvcnQuX2ZpbGVzeXN0ZW0u
ZXhpc3RzKG92ZXJyaWRlc19wYXRoKToKICAgICAgICAgcmV0dXJuIGNocm9taXVtX292ZXJyaWRl
cwogCi0gICAgd2l0aCBjb2RlY3Mub3BlbihvdmVycmlkZXNfcGF0aCwgInIiLCAidXRmLTgiKSBh
cyBmaWxlOgotICAgICAgICBpZiBjaHJvbWl1bV9vdmVycmlkZXM6Ci0gICAgICAgICAgICByZXR1
cm4gY2hyb21pdW1fb3ZlcnJpZGVzICsgZmlsZS5yZWFkKCkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJldHVybiBmaWxlLnJlYWQoKQorICAgIGNocm9taXVtX292ZXJyaWRlcyA9IGNocm9t
aXVtX292ZXJyaWRlcyBvciAnJworICAgIHJldHVybiBjaHJvbWl1bV9vdmVycmlkZXMgKyBwb3J0
Ll9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKG92ZXJyaWRlc19wYXRoKQogCiBkZWYgR2V0R29v
Z2xlQ2hyb21lUG9ydCgqKmt3YXJncyk6CiAgICAgIiIiU29tZSB0ZXN0cyBoYXZlIHNsaWdodGx5
IGRpZmZlcmVudCByZXN1bHRzIHdoZW4gY29tcGlsZWQgYXMgR29vZ2xlCmRpZmYgLS1naXQgYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2dsZV9jaHJvbWVfdW5p
dHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2dvb2ds
ZV9jaHJvbWVfdW5pdHRlc3QucHkKaW5kZXggZTYwYzI3NDE2ZGViMzc5MzVmNDBiNDUzNTdjYmQy
OTcxZDJjNmVhNi4uNjUzOWJiMmI0YmViOTg4MDVhYWY5M2Q0MzE0ZDA2MGE0NGFhODM4YSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9nb29nbGVf
Y2hyb21lX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZ29vZ2xlX2Nocm9tZV91bml0dGVzdC5weQpAQCAtNTAsNyArNTAsNyBAQCBjbGFz
cyBHZXRHb29nbGVDaHJvbWVQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHBv
cnQgPSBnb29nbGVfY2hyb21lLkdldEdvb2dsZUNocm9tZVBvcnQocG9ydF9uYW1lPXBvcnRfbmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25zPU5vbmUpCiAgICAgICAgIHBhdGggPSBwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKClbMF0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9wYXRoLCBvcy5wYXRoLnNwbGl0KHBh
dGgpWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3BhdGgsIHBvcnQuX2Zp
bGVzeXN0ZW0uYmFzZW5hbWUocGF0aCkpCiAKICAgICBkZWYgX3ZlcmlmeV9leHBlY3RhdGlvbnNf
b3ZlcnJpZGVzKHNlbGYsIHBvcnRfbmFtZSk6CiAgICAgICAgICMgRklYTUU6IG1ha2UgdGhpcyBt
b3JlIHJvYnVzdCB3aGVuIHdlIGhhdmUgdGhlIFRyZWUoKSBhYnN0cmFjdGlvbi4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggYTE4ZmRm
ZjVjZjNiNGE2MjlmZDA1ODhlMTZiZTMxNzJlNWQyNjNmYy4uMGVjOWY4NzhhY2Q5MzFhZDZkZTRk
YWNlZmZkYWVkYWM3NTQ5M2E4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTU3LDggKzU3LDggQEAgY2xhc3MgR3RrUG9ydChXZWJL
aXRQb3J0KToKIAogICAgIGRlZiBfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2VsZik6CiAg
ICAgICAgICMgRklYTUU6IFRoaXMgbmVlZHMgdG8gZGV0ZWN0IHRoZSBkaXN0cmlidXRpb24gYW5k
IGNoYW5nZSBjb25maWcgZmlsZXMuCi0gICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi5s
YXlvdXRfdGVzdHNfZGlyKCksICdodHRwJywgJ2NvbmYnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdhcGFjaGUyLWRlYmlhbi1odHRwZC5jb25mJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZics
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwYWNoZTItZGViaWFuLWh0
dHBkLmNvbmYnKQogCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2ZXIoc2VsZiwgc2VydmVy
X3BpZCk6CiAgICAgICAgICIiIlNodXQgZG93biB0aGUgaHR0cGQgd2ViIHNlcnZlci4gQmxvY2tz
IHVudGlsIGl0J3MgZnVsbHkKQEAgLTEwMyw3ICsxMDMsNyBAQCBjbGFzcyBHdGtQb3J0KFdlYktp
dFBvcnQpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY29uZmlnX25hbWUgPSAnYXBhY2hl
Mi1kZWJpYW4taHR0cGQuY29uZicKIAotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYu
bGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZics
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnX25hbWUpCiAKICAgICBkZWYgX3Bh
dGhfdG9fd2RpZmYoc2VsZik6CkBAIC0xMTMsNCArMTEzLDQgQEAgY2xhc3MgR3RrUG9ydChXZWJL
aXRQb3J0KToKICAgICAgICAgICAgIHJldHVybiAnL3Vzci9iaW4vd2RpZmYnCiAKICAgICBkZWYg
X2lzX3JlZGhhdF9iYXNlZChzZWxmKToKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKG9z
LnBhdGguam9pbignL2V0YycsICdyZWRoYXQtcmVsZWFzZScpKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKCcvZXRjJywgJ3JlZGhh
dC1yZWxlYXNlJykpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L21hYy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5CmluZGV4IDY5NmUzMzk4ZWE0YjI4YWM3NjIyNTkwN2RjMzYyZmZjM2ZiODZmOWUu
LjA2MjIxOTYxMDgxNDY1ODI2NjBjYTRmMGI1MTA4OTlkMjJhYzZkMjMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5CkBAIC03Niw5ICs3Niw5
IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICMgcGxhdGZvcm1zIGFuZCBt
b3ZlZCBpbnRvIGJhc2UuUG9ydC4KICAgICAgICAgc2tpcHBlZF9maWxlcyA9IFtdCiAgICAgICAg
IGlmIHNlbGYuX25hbWUgaW4gKCdtYWMtdGlnZXInLCAnbWFjLWxlb3BhcmQnLCAnbWFjLXNub3ds
ZW9wYXJkJyk6Ci0gICAgICAgICAgICBza2lwcGVkX2ZpbGVzLmFwcGVuZChvcy5wYXRoLmpvaW4o
CisgICAgICAgICAgICBza2lwcGVkX2ZpbGVzLmFwcGVuZChzZWxmLl9maWxlc3lzdGVtLmpvaW4o
CiAgICAgICAgICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgoc2VsZi5fbmFtZSks
ICdTa2lwcGVkJykpCi0gICAgICAgIHNraXBwZWRfZmlsZXMuYXBwZW5kKG9zLnBhdGguam9pbihz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgnbWFjJyksCisgICAgICAgIHNraXBwZWRfZmlsZXMu
YXBwZW5kKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCgn
bWFjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU2tpcHBl
ZCcpKQogICAgICAgICByZXR1cm4gc2tpcHBlZF9maWxlcwogCkBAIC05OSw3ICs5OSw3IEBAIGNs
YXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgIHJldHVybiAnJwogCiAgICAgZGVmIF9i
dWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydChzZWxmKToKLSAgICAgICAgamF2YV90ZXN0c19wYXRoID0g
b3MucGF0aC5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAiamF2YSIpCisgICAgICAgIGph
dmFfdGVzdHNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19k
aXIoKSwgImphdmEiKQogICAgICAgICBidWlsZF9qYXZhID0gWyIvdXNyL2Jpbi9tYWtlIiwgIi1D
IiwgamF2YV90ZXN0c19wYXRoXQogICAgICAgICBpZiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQoYnVpbGRfamF2YSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKToKICAgICAgICAgICAgIF9sb2cu
ZXJyb3IoIkZhaWxlZCB0byBidWlsZCBKYXZhIHN1cHBvcnQgZmlsZXM6ICVzIiAlIGJ1aWxkX2ph
dmEpCkBAIC0xMjQsOCArMTI0LDggQEAgY2xhc3MgTWFjUG9ydChXZWJLaXRQb3J0KToKICAgICAg
ICAgXQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKLSAgICAg
ICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAn
Y29uZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwYWNoZTItaHR0cGQuY29uZicp
CisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNf
ZGlyKCksICdodHRwJywgJ2NvbmYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdhcGFjaGUyLWh0dHBkLmNvbmYnKQogCiAgICAgIyBGSVhNRTogVGhpcyBkb2Vzbid0IGhh
dmUgYW55dGhpbmcgdG8gZG8gd2l0aCBXZWJLaXQuCiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9z
ZXJ2ZXIoc2VsZiwgc2VydmVyX3BpZCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3BvcnRfdGVzdGNhc2UucHkKaW5kZXggYzRiMzZhY2Q5
MDc5ZmQyZmJlOTA5MDEyMDJkNWY5YzAyNWUzODdlNS4uMzBmM2E1NjkxNmUxNjFiZWE2YmNlNDY5
NzBkZjE0NGQ2NzY5NzRhNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9wb3J0X3Rlc3RjYXNlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcG9ydF90ZXN0Y2FzZS5weQpAQCAtMjgsOCArMjgsNiBAQAog
CiAiIiJVbml0IHRlc3RpbmcgYmFzZSBjbGFzcyBmb3IgUG9ydCBpbXBsZW1lbnRhdGlvbnMuIiIi
CiAKLWltcG9ydCBvcwotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB3
ZWJraXRweS50b29sIGltcG9ydCBtb2NrdG9vbApAQCAtNjQsMzAgKzYyLDI1IEBAIGNsYXNzIFBv
cnRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGlmIG5vdCBwb3J0OgogICAg
ICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgIyBGSVhNRTogbm90IHN1cmUgd2h5IHRoaXMgc2hv
dWxkbid0IGFsd2F5cyBiZSBUcnVlCi0gICAgICAgICNzZWxmLmFzc2VydFRydWUocG9ydC5jaGVj
a19pbWFnZV9kaWZmKCkpCiAgICAgICAgIGlmIG5vdCBwb3J0LmNoZWNrX2ltYWdlX2RpZmYoKToK
KyAgICAgICAgICAgICMgVGhlIHBvcnQgaGFzbid0IGJlZW4gYnVpbHQgLSBkb24ndCBydW4gdGhl
IHRlc3RzLgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZGlyID0gcG9ydC5sYXlvdXRf
dGVzdHNfZGlyKCkKLSAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmpvaW4oZGlyLCAnZmFzdCcsICdj
c3MnLCAnYnV0dG9uX2NlbnRlci5wbmcnKQotICAgICAgICBmaDEgPSBmaWxlKGZpbGUxKQotICAg
ICAgICBjb250ZW50czEgPSBmaDEucmVhZCgpCi0gICAgICAgIGZpbGUyID0gb3MucGF0aC5qb2lu
KGRpciwgJ2Zhc3QnLCAnY3NzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbW92
ZS1zaG9ydGhhbmQtZXhwZWN0ZWQucG5nJykKLSAgICAgICAgZmgyID0gZmlsZShmaWxlMikKLSAg
ICAgICAgY29udGVudHMyID0gZmgyLnJlYWQoKQotICAgICAgICB0bXBmaWxlID0gdGVtcGZpbGUu
bWt0ZW1wKCkKKyAgICAgICAgZmlsZTEgPSBwb3J0Ll9maWxlc3lzdGVtLmpvaW4oZGlyLCAnZmFz
dCcsICdjc3MnLCAnYnV0dG9uX2NlbnRlci5wbmcnKQorICAgICAgICBjb250ZW50czEgPSBwb3J0
Ll9maWxlc3lzdGVtLnJlYWRfYmluYXJ5X2ZpbGUoZmlsZTEpCisgICAgICAgIGZpbGUyID0gcG9y
dC5fZmlsZXN5c3RlbS5qb2luKGRpciwgJ2Zhc3QnLCAnY3NzJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3JlbW92ZS1zaG9ydGhhbmQtZXhwZWN0ZWQucG5nJykKKyAg
ICAgICAgY29udGVudHMyID0gcG9ydC5fZmlsZXN5c3RlbS5yZWFkX2JpbmFyeV9maWxlKGZpbGUy
KQorICAgICAgICB0bXBmZCwgdG1wZmlsZSA9IHBvcnQuX2ZpbGVzeXN0ZW0ub3Blbl9iaW5hcnlf
dGVtcGZpbGUoJycpCisgICAgICAgIHRtcGZkLmNsb3NlKCkKIAogICAgICAgICBzZWxmLmFzc2Vy
dEZhbHNlKHBvcnQuZGlmZl9pbWFnZShjb250ZW50czEsIGNvbnRlbnRzMSkpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50czIpKQogCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmRpZmZfaW1hZ2UoY29udGVudHMxLCBjb250ZW50
czIsIHRtcGZpbGUpKQotICAgICAgICBmaDEuY2xvc2UoKQotICAgICAgICBmaDIuY2xvc2UoKQot
ICAgICAgICAjIEZJWE1FOiB0aGlzIG1heSBub3QgYmUgYmVpbmcgd3JpdHRlbj8KLSAgICAgICAg
IyBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModG1wZmlsZSkpCi0gICAgICAgICMgb3Mu
cmVtb3ZlKHRtcGZpbGUpCisKKyAgICAgICAgcG9ydC5fZmlsZXN5c3RlbS5yZW1vdmUodG1wZmls
ZSkKIAogICAgIGRlZiB0ZXN0X3dlYnNvY2tldF9zZXJ2ZXIoc2VsZik6CiAgICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3F0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9xdC5weQppbmRleCBhZjk0YWNjMzkwMWI0ODBjNDNhODQxNThiYjUzOTBhZWJiMzZj
ZWE5Li4xNjk1YjYwMzkxZGNiY2MzNDY0NDAzN2M1YjczOGQ0OGU4ZWQ4MzFlIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3F0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvcXQucHkKQEAgLTcxLDggKzcx
LDggQEAgY2xhc3MgUXRQb3J0KFdlYktpdFBvcnQpOgogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBuZWVkcyB0byBkZXRl
Y3QgdGhlIGRpc3RyaWJ1dGlvbiBhbmQgY2hhbmdlIGNvbmZpZyBmaWxlcy4KLSAgICAgICAgcmV0
dXJuIG9zLnBhdGguam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZics
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FwYWNoZTItZGViaWFuLWh0dHBkLmNvbmYn
KQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3Rz
X2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYXBhY2hlMi1kZWJpYW4taHR0cGQuY29uZicpCiAKICAgICBkZWYgX3NodXRfZG93bl9o
dHRwX3NlcnZlcihzZWxmLCBzZXJ2ZXJfcGlkKToKICAgICAgICAgIiIiU2h1dCBkb3duIHRoZSBo
dHRwZCB3ZWIgc2VydmVyLiBCbG9ja3MgdW50aWwgaXQncyBmdWxseQpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBhZmRlYmVi
MmM4NDZlZDdjY2RmZDJmZmU3ZGIwMjFhZDMxNTIxM2I5Li41NzdhY2Q0NWU5ODNjYzFjNGNkOGFk
MTdkYTE3OWYzZGIwNGFkOGVmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtMzEsMjAgKzMxLDE0IEBACiAiIiJXZWJLaXQg
aW1wbGVtZW50YXRpb25zIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKIAogCi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBjb2RlY3MKIGltcG9ydCBsb2dn
aW5nCitpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwogaW1wb3J0IHJlCi1pbXBvcnQgc2h1dGls
CiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHdlYmJyb3dz
ZXIKLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc2h1dGlsCiAKIGlt
cG9ydCB3ZWJraXRweS5jb21tb24uc3lzdGVtLm9zcGF0aCBhcyBvc3BhdGgKIGltcG9ydCB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubGF5b3V0X3BhY2thZ2UudGVzdF9vdXRwdXQgYXMgdGVzdF9vdXRw
dXQKQEAgLTcyLDggKzY2LDggQEAgY2xhc3MgV2ViS2l0UG9ydChiYXNlLlBvcnQpOgogICAgICAg
ICByZXR1cm4gW3NlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUpXQogCiAgICAg
ZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKLSAgICAgICAgcmV0dXJu
IG9zLnBhdGguam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChzZWxmLl9uYW1lKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9leHBlY3RhdGlvbnMudHh0JykKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0
aChzZWxmLl9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVz
dF9leHBlY3RhdGlvbnMudHh0JykKIAogICAgICMgT25seSBuZWVkZWQgYnkgcG9ydHMgd2hpY2gg
bWFpbnRhaW4gdmVyc2lvbmVkIHRlc3QgZXhwZWN0YXRpb25zIChsaWtlIG1hYy10aWdlciB2cy4g
bWFjLWxlb3BhcmQpCiAgICAgZGVmIHZlcnNpb24oc2VsZik6CkBAIC04NSw3ICs3OSw3IEBAIGNs
YXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKIAogICAgIGRlZiBfY2hlY2tfZHJpdmVyKHNlbGYp
OgogICAgICAgICBkcml2ZXJfcGF0aCA9IHNlbGYuX3BhdGhfdG9fZHJpdmVyKCkKLSAgICAgICAg
aWYgbm90IG9zLnBhdGguZXhpc3RzKGRyaXZlcl9wYXRoKToKKyAgICAgICAgaWYgbm90IHNlbGYu
X2ZpbGVzeXN0ZW0uZXhpc3RzKGRyaXZlcl9wYXRoKToKICAgICAgICAgICAgIF9sb2cuZXJyb3Io
IkR1bXBSZW5kZXJUcmVlIHdhcyBub3QgZm91bmQgYXQgJXMiICUgZHJpdmVyX3BhdGgpCiAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKQEAgLTEwOCw3ICsxMDIs
NyBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAKICAgICBkZWYgY2hlY2tfaW1hZ2Vf
ZGlmZihzZWxmLCBvdmVycmlkZV9zdGVwPU5vbmUsIGxvZ2dpbmc9VHJ1ZSk6CiAgICAgICAgIGlt
YWdlX2RpZmZfcGF0aCA9IHNlbGYuX3BhdGhfdG9faW1hZ2VfZGlmZigpCi0gICAgICAgIGlmIG5v
dCBvcy5wYXRoLmV4aXN0cyhpbWFnZV9kaWZmX3BhdGgpOgorICAgICAgICBpZiBub3Qgc2VsZi5f
ZmlsZXN5c3RlbS5leGlzdHMoaW1hZ2VfZGlmZl9wYXRoKToKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoIkltYWdlRGlmZiB3YXMgbm90IGZvdW5kIGF0ICVzIiAlIGltYWdlX2RpZmZfcGF0aCkKICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQpAQCAtMTY1LDggKzE1
OSw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToKICAgICAgICAgICAgIGlmIG0uZ3Jv
dXAoMikgPT0gJ3Bhc3NlZCc6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gRmFsc2UKICAgICAg
ICAgZWxpZiBvdXRwdXQgYW5kIGRpZmZfZmlsZW5hbWU6Ci0gICAgICAgICAgICB3aXRoIG9wZW4o
ZGlmZl9maWxlbmFtZSwgJ3cnKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZpbGUud3JpdGUo
b3V0cHV0KQorICAgICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoZGlm
Zl9maWxlbmFtZSwgb3V0cHV0KQogICAgICAgICBlbGlmIHNwLnRpbWVkX291dDoKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBvdXQiKQogICAgICAgICBlbGlmIHNwLmNy
YXNoZWQ6CkBAIC0zMDAsMjUgKzI5MywyMiBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6
CiAgICAgICAgIHJldHVybiB0ZXN0c190b19za2lwCiAKICAgICBkZWYgX3NraXBwZWRfZmlsZV9w
YXRocyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtvcy5wYXRoLmpvaW4oc2VsZi5fd2Via2l0X2Jh
c2VsaW5lX3BhdGgoc2VsZi5fbmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdTa2lwcGVkJyldCisgICAgICAgIHJldHVybiBbc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3dlYmtpdF9iYXNlbGluZV9wYXRoKHNlbGYuX25hbWUp
LCAnU2tpcHBlZCcpXQogCiAgICAgZGVmIF9leHBlY3RhdGlvbnNfZnJvbV9za2lwcGVkX2ZpbGVz
KHNlbGYpOgogICAgICAgICB0ZXN0c190b19za2lwID0gW10KICAgICAgICAgZm9yIGZpbGVuYW1l
IGluIHNlbGYuX3NraXBwZWRfZmlsZV9wYXRocygpOgotICAgICAgICAgICAgaWYgbm90IG9zLnBh
dGguZXhpc3RzKGZpbGVuYW1lKToKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9maWxlc3lzdGVt
LmV4aXN0cyhmaWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8g
b3BlbiBTa2lwcGVkIGZpbGU6ICVzIiAlIGZpbGVuYW1lKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICB3aXRoIGNvZGVjcy5vcGVuKGZpbGVuYW1lLCAiciIsICJ1dGYtOCIp
IGFzIHNraXBwZWRfZmlsZToKLSAgICAgICAgICAgICAgICB0ZXN0c190b19za2lwLmV4dGVuZChz
ZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmlsZShza2lwcGVkX2ZpbGUpKQorICAgICAgICAgICAg
c2tpcHBlZF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkK
ICAgICAgICAgcmV0dXJuIHRlc3RzX3RvX3NraXAKIAogICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9u
cyhzZWxmKToKICAgICAgICAgIyBUaGUgV2ViS2l0IG1hYyBwb3J0IHVzZXMgYSBjb21iaW5hdGlv
biBvZiBhIHRlc3RfZXhwZWN0YXRpb25zIGZpbGUKICAgICAgICAgIyBhbmQgJ1NraXBwZWQnIGZp
bGVzLgogICAgICAgICBleHBlY3RhdGlvbnNfcGF0aCA9IHNlbGYucGF0aF90b190ZXN0X2V4cGVj
dGF0aW9uc19maWxlKCkKLSAgICAgICAgd2l0aCBjb2RlY3Mub3BlbihleHBlY3RhdGlvbnNfcGF0
aCwgInIiLCAidXRmLTgiKSBhcyBmaWxlOgotICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgp
ICsgc2VsZi5fc2tpcHMoKQorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3Rl
eHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCkgKyBzZWxmLl9za2lwcygpCiAKICAgICBkZWYgX3Nr
aXBzKHNlbGYpOgogICAgICAgICAjIEVhY2ggU2tpcHBlZCBmaWxlIGNvbnRhaW5zIGEgbGlzdCBv
ZiBmaWxlcwpAQCAtMzczLDcgKzM2Myw3IEBAIGNsYXNzIFdlYktpdFBvcnQoYmFzZS5Qb3J0KToK
ICAgICAgICAgICAgICMgVGhlIEFwYWNoZSBiaW5hcnkgcGF0aCBjYW4gdmFyeSBkZXBlbmRpbmcg
b24gT1MgYW5kIGRpc3RyaWJ1dGlvbgogICAgICAgICAgICAgIyBTZWUgaHR0cDovL3dpa2kuYXBh
Y2hlLm9yZy9odHRwZC9EaXN0cm9zRGVmYXVsdExheW91dAogICAgICAgICAgICAgZm9yIHBhdGgg
aW4gWyIvdXNyL3NiaW4vaHR0cGQiLCAiL3Vzci9zYmluL2FwYWNoZTIiXToKLSAgICAgICAgICAg
ICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9m
aWxlc3lzdGVtLmV4aXN0cyhwYXRoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY2FjaGVk
X2FwYWNoZV9wYXRoID0gcGF0aAogICAgICAgICAgICAgICAgICAgICBicmVhawogCkBAIC0zODks
MTAgKzM3OSwxMCBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0LCB3b3JrZXJfbnVtYmVyKToKICAgICAgICAgc2VsZi5fd29ya2Vy
X251bWJlciA9IHdvcmtlcl9udW1iZXIKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKLSAgICAg
ICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nRHVtcFJl
bmRlclRyZWUtJykKKyAgICAgICAgc2VsZi5fZHJpdmVyX3RlbXBkaXIgPSBwb3J0Ll9maWxlc3lz
dGVtLm1rZHRlbXAocHJlZml4PSdEdW1wUmVuZGVyVHJlZS0nKQogCiAgICAgZGVmIF9fZGVsX18o
c2VsZik6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCisgICAg
ICAgIHNlbGYuX3BvcnQuX2ZpbGVzeXN0ZW0ucm10cmVlKHN0cihzZWxmLl9kcml2ZXJfdGVtcGRp
cikpCiAKICAgICBkZWYgY21kX2xpbmUoc2VsZik6CiAgICAgICAgIGNtZCA9IHNlbGYuX2NvbW1h
bmRfd3JhcHBlcihzZWxmLl9wb3J0LmdldF9vcHRpb24oJ3dyYXBwZXInKSkKQEAgLTQwNiw3ICsz
OTYsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoYmFzZS5Ecml2ZXIpOgogICAgIGRlZiBzdGFydChz
ZWxmKToKICAgICAgICAgZW52aXJvbm1lbnQgPSBzZWxmLl9wb3J0LnNldHVwX2Vudmlyb25fZm9y
X3NlcnZlcigpCiAgICAgICAgIGVudmlyb25tZW50WydEWUxEX0ZSQU1FV09SS19QQVRIJ10gPSBz
ZWxmLl9wb3J0Ll9idWlsZF9wYXRoKCkKLSAgICAgICAgZW52aXJvbm1lbnRbJ0RVTVBSRU5ERVJU
UkVFX1RFTVAnXSA9IHNlbGYuX2RyaXZlcl90ZW1wZGlyCisgICAgICAgIGVudmlyb25tZW50WydE
VU1QUkVOREVSVFJFRV9URU1QJ10gPSBzdHIoc2VsZi5fZHJpdmVyX3RlbXBkaXIpCiAgICAgICAg
IHNlbGYuX3NlcnZlcl9wcm9jZXNzID0gc2VydmVyX3Byb2Nlc3MuU2VydmVyUHJvY2VzcyhzZWxm
Ll9wb3J0LAogICAgICAgICAgICAgIkR1bXBSZW5kZXJUcmVlIiwgc2VsZi5jbWRfbGluZSgpLCBl
bnZpcm9ubWVudCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93aW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3dpbi5weQppbmRleCA5ZTMwMTU1MTAwMDc3NjA4ZGM3MWYyNDU1YTBmNGZlMjYyMTM1ZDY1
Li5lN2QyMDA0YmFiMzVlN2QzZDhkZGYyYjhiZTA2MTVhMTZhOTQwNWEzIDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dpbi5weQpAQCAtMjksNyArMjks
NiBAQAogIiIiV2ViS2l0IFdpbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUG9ydCBpbnRlcmZhY2Uu
IiIiCiAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRf
dGVzdHMucG9ydC53ZWJraXQgaW1wb3J0IFdlYktpdFBvcnQKIApAQCAtNjAsOCArNTksOCBAQCBj
bGFzcyBXaW5Qb3J0KFdlYktpdFBvcnQpOgogICAgICAgICBdCiAKICAgICBkZWYgX3BhdGhfdG9f
YXBhY2hlX2NvbmZpZ19maWxlKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNl
bGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY3lnd2luLWh0dHBkLmNvbmYnKQorICAgICAgICByZXR1cm4gc2VsZi5fZmls
ZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAnaHR0cCcsICdjb25mJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY3lnd2luLWh0dHBkLmNvbmYnKQog
CiAgICAgZGVmIF9zaHV0X2Rvd25faHR0cF9zZXJ2ZXIoc2VsZiwgc2VydmVyX3BpZCk6CiAgICAg
ICAgICIiIlNodXQgZG93biB0aGUgaHR0cGQgd2ViIHNlcnZlci4gQmxvY2tzIHVudGlsIGl0J3Mg
ZnVsbHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Rl
c3RfdHlwZXMvaW1hZ2VfZGlmZi5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3Rlc3RfdHlwZXMvaW1hZ2VfZGlmZi5weQppbmRleCBkYTQ2NmM4YTE3Y2QxY2UyN2VjZmJm
OTViMTAyZjhmNTc4ZTM1MThiLi40NDYwNWQyZWU4MWI3YjA0MjE0MTVkMWFjYmQyMjc0ZTVhZTBh
ODdiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy90ZXN0
X3R5cGVzL2ltYWdlX2RpZmYucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdGVzdF90eXBlcy9pbWFnZV9kaWZmLnB5CkBAIC0zNCwxMyArMzQsOCBAQCBtYXRjaCwg
cmV0dXJucyBGYWlsdXJlSW1hZ2VIYXNoTWlzbWF0Y2ggYW5kIG91dHB1dHMgYm90aCBoYXNoZXMg
aW50byB0aGUgbGF5b3V0CiB0ZXN0IHJlc3VsdHMgZGlyZWN0b3J5LgogIiIiCiAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQotaW1wb3J0IGNvZGVjcwogaW1wb3J0IGVy
cm5vCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiAKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLmxheW91dF9wYWNrYWdlIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy50ZXN0X3R5cGVzIGltcG9ydCB0ZXN0X3R5cGVfYmFz
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79792</attachid>
            <date>2011-01-21 14:23:24 -0800</date>
            <delta_ts>2011-01-21 16:11:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52771-20110121142323.patch</filename>
            <type>text/plain</type>
            <size>4992</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNzM1
MjNmYzgwNDU5NWRhMzRkZDVlMWExNTZmMzBlZmM3MjA0ZGY2Li4wNDRmMjJkMDZhYWUxYjNmZWJm
Nzc2MmIxODdjNGMzMmIzNjBhMzNiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDEtMjEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIGluIHI3NjMyMiB0aGF0IGNhdXNl
ZCBOUldUIHRvIG5vdCBhY3R1YWxseQorICAgICAgICByZWFkIHRoZSBTa2lwcGVkIGZpbGVzIHBy
b3Blcmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01Mjc3MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXRfdW5pdHRlc3QucHk6CisKIDIwMTEtMDEtMjEgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBw
bGUuY29tPgogCiAgICAgICAgRml4IE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggNTc3YWNkNDVlOTgzY2Mx
YzRjZDhhZDE3ZGExNzlmM2RiMDRhZDhlZi4uNDc2NTU1YzVhMjljMDk5YjAyY2FmNGJjYTRjZDgz
OTc5ZGNkNzgzNyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC93ZWJraXQucHkKQEAgLTI4Myw5ICsyODMsOSBAQCBjbGFzcyBXZWJLaXRQb3J0KGJh
c2UuUG9ydCk6CiAgICAgICAgIHVuc3VwcG9ydGVkX2ZlYXR1cmVfdGVzdHMgPSBzZWxmLl9za2lw
cGVkX3Rlc3RzX2Zvcl91bnN1cHBvcnRlZF9mZWF0dXJlcygpCiAgICAgICAgIHJldHVybiBkaXNh
YmxlZF9mZWF0dXJlX3Rlc3RzICsgd2ViYXJjaGl2ZV90ZXN0cyArIHVuc3VwcG9ydGVkX2ZlYXR1
cmVfdGVzdHMKIAotICAgIGRlZiBfdGVzdHNfZnJvbV9za2lwcGVkX2ZpbGUoc2VsZiwgc2tpcHBl
ZF9maWxlKToKKyAgICBkZWYgX3Rlc3RzX2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYs
IHNraXBwZWRfZmlsZV9jb250ZW50cyk6CiAgICAgICAgIHRlc3RzX3RvX3NraXAgPSBbXQotICAg
ICAgICBmb3IgbGluZSBpbiBza2lwcGVkX2ZpbGUucmVhZGxpbmVzKCk6CisgICAgICAgIGZvciBs
aW5lIGluIHNraXBwZWRfZmlsZV9jb250ZW50cy5zcGxpdCgnXG4nKToKICAgICAgICAgICAgIGxp
bmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpIG9y
IG5vdCBsZW4obGluZSk6CiAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTMwMSw3ICszMDEs
OCBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBpZiBub3Qgc2Vs
Zi5fZmlsZXN5c3RlbS5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIF9sb2cud2Fy
bigiRmFpbGVkIHRvIG9wZW4gU2tpcHBlZCBmaWxlOiAlcyIgJSBmaWxlbmFtZSkKICAgICAgICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgc2tpcHBlZF9maWxlID0gc2VsZi5fZmlsZXN5
c3RlbS5yZWFkX3RleHRfZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgIHNraXBwZWRfZmlsZV9j
b250ZW50cyA9IHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZmlsZW5hbWUpCisgICAg
ICAgICAgICB0ZXN0c190b19za2lwLmV4dGVuZChzZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmls
ZV9jb250ZW50cyhza2lwcGVkX2ZpbGVfY29udGVudHMpKQogICAgICAgICByZXR1cm4gdGVzdHNf
dG9fc2tpcAogCiAgICAgZGVmIHRlc3RfZXhwZWN0YXRpb25zKHNlbGYpOgpkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weQppbmRleCA3YjY4MzEwODVkZmFlOTgwYjI5N2M2NzYyODIyMzkzZmUzMWY1ODMyLi5j
NzJhNDExYWNiMDAzZmI4ODZkNjFhZjQxNjVkMTFkZjIwMTZlY2U0IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0
dGVzdC5weQpAQCAtMSw1ICsxLDYgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIyBDb3B5cmln
aHQgKEMpIDIwMTAgR2Fib3IgUmFwY3NhbnlpIDxyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1PiwgVW5p
dmVyc2l0eSBvZiBTemVnZWQKKyMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yNiwxMyAr
MjcsMTkgQEAKIAogaW1wb3J0IHVuaXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bSBpbXBvcnQgZmlsZXN5c3RlbV9tb2NrCisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBv
cnQud2Via2l0IGltcG9ydCBXZWJLaXRQb3J0CiAKIAogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2Vi
S2l0UG9ydCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHN5bWJvbF9saXN0PU5vbmUsIGZlYXR1
cmVfbGlzdD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3ltYm9sX2xpc3Q9Tm9uZSwg
ZmVhdHVyZV9saXN0PU5vbmUsCisgICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5v
bmUsIHNraXBzX2ZpbGU9Tm9uZSwgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbF9saXN0
ID0gc3ltYm9sX2xpc3QKICAgICAgICAgc2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0dXJlX2xpc3QK
KyAgICAgICAgc2VsZi5leHBlY3RhdGlvbnNfZmlsZSA9IGV4cGVjdGF0aW9uc19maWxlCisgICAg
ICAgIHNlbGYuc2tpcHNfZmlsZSA9IHNraXBzX2ZpbGUKKyAgICAgICAgV2ViS2l0UG9ydC5fX2lu
aXRfXyhzZWxmLCAqKmt3YXJncykKIAogICAgIGRlZiBfcnVudGltZV9mZWF0dXJlX2xpc3Qoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLmZlYXR1cmVfbGlzdApAQCAtNDYsNyArNTMsMTQgQEAg
Y2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6CiAgICAgZGVmIF90ZXN0c19mb3JfZGlz
YWJsZWRfZmVhdHVyZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBbImFjY2Vzc2liaWxpdHkiLCBd
CiAKKyAgICBkZWYgcGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAg
ICBpZiBzZWxmLmV4cGVjdGF0aW9uc19maWxlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhw
ZWN0YXRpb25zX2ZpbGUKKyAgICAgICAgcmV0dXJuIFdlYktpdFBvcnQucGF0aF90b190ZXN0X2V4
cGVjdGF0aW9uc19maWxlKHNlbGYpCisKICAgICBkZWYgX3NraXBwZWRfZmlsZV9wYXRocyhzZWxm
KToKKyAgICAgICAgaWYgc2VsZi5za2lwc19maWxlOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxm
LnNraXBzX2ZpbGVdCiAgICAgICAgIHJldHVybiBbXQogCiBjbGFzcyBXZWJLaXRQb3J0VGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC02NiwzICs4MCwyMyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVz
dCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMo
c2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9u
ZSkuc2tpcHBlZF9sYXlvdXRfdGVzdHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQo
WyJtZWRpYSIsICJhY2Nlc3NpYmlsaXR5Il0pKQorCisgICAgZGVmIHRlc3RfdGVzdF9leHBlY3Rh
dGlvbnMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSByZWFkIGJvdGggdGhlIGV4cGVj
dGF0aW9ucyBmaWxlIGFuZCBhbnl0aGluZyBpbiBhCisgICAgICAgICMgU2tpcHBlZCBmaWxlLCBh
bmQgdGhhdCB3ZSBpbmNsdWRlIHRoZSBmZWF0dXJlIGFuZCBwbGF0Zm9ybSBjaGVja3MuCisgICAg
ICAgIGZpbGVzID0geworICAgICAgICAgICAgJy90bXAvdGVzdF9leHBlY3RhdGlvbnMudHh0Jzog
J0JVR19URVNURVhQRUNUQVRJT05TIFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0
bWwgPSBGQUlMXG4nLAorICAgICAgICAgICAgJy90bXAvU2tpcHBlZCc6ICdmYXN0L2h0bWwva2V5
Z2VuLmh0bWwnLAorICAgICAgICB9CisgICAgICAgIG1vY2tfZnMgPSBmaWxlc3lzdGVtX21vY2su
TW9ja0ZpbGVTeXN0ZW0oZmlsZXMpCisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChleHBl
Y3RhdGlvbnNfZmlsZT0nL3RtcC90ZXN0X2V4cGVjdGF0aW9ucy50eHQnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2tpcHNfZmlsZT0nL3RtcC9Ta2lwcGVkJywgZmlsZXN5c3RlbT1t
b2NrX2ZzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMo
KSwKKyAgICAgICAgIiIiQlVHX1RFU1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRp
Y2xlLWVsZW1lbnQuaHRtbCA9IEZBSUwKK0JVR19TS0lQUEVEIFNLSVAgOiBmYXN0L2h0bWwva2V5
Z2VuLmh0bWwgPSBGQUlMCitCVUdfU0tJUFBFRCBTS0lQIDogbWVkaWEgPSBGQUlMCitCVUdfU0tJ
UFBFRCBTS0lQIDogYWNjZXNzaWJpbGl0eSA9IEZBSUwiIiIpCisKKworaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79807</attachid>
            <date>2011-01-21 16:11:17 -0800</date>
            <delta_ts>2011-01-21 17:30:07 -0800</delta_ts>
            <desc>update w/ review feedback from mihaip - fix mac_unittest</desc>
            <filename>bug-52771-20110121161116.patch</filename>
            <type>text/plain</type>
            <size>5997</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNzM1
MjNmYzgwNDU5NWRhMzRkZDVlMWExNTZmMzBlZmM3MjA0ZGY2Li4yYzNjNjgwNTVlMmE2NDE3NmQw
OGRlMjdkZTQxMzJjNDRlODg1N2Q0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDEtMjEgIERpcmsgUHJhbmtl
ICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIGluIHI3NjMyMiB0aGF0IGNhdXNl
ZCBOUldUIHRvIG5vdCBhY3R1YWxseQorICAgICAgICByZWFkIHRoZSBTa2lwcGVkIGZpbGVzIHBy
b3Blcmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD01Mjc3MQorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXRfdW5pdHRlc3QucHk6CisKIDIwMTEtMDEtMjEgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgogCiAgICAgICAgRml4IE1hYyBidWlsZC4KZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKaW5k
ZXggZDM4M2E0Y2Q4ODM3ZTU5Y2E1NGNkYWU5Nzk2MWE0YTU1YjFmNDAwNC4uZWVjMTEwMmNiMGQ0
NDg0MmFkYjZiYjZmODEzYTBmNDJkZDU5MmEyOSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTY5LDEy
ICs2OSwxMSBAQCBzdmcvYmF0aWsvdGV4dC9zbWFsbEZvbnRzLnN2ZwogICAgICAgICAic3ZnL2Jh
dGlrL3RleHQvc21hbGxGb250cy5zdmciLAogICAgIF0KIAotICAgIGRlZiB0ZXN0X3NraXBwZWRf
ZmlsZV9wYXRocyhzZWxmKToKKyAgICBkZWYgdGVzdF90ZXN0c19mcm9tX3NraXBwZWRfZmlsZV9j
b250ZW50cyhzZWxmKToKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAg
aWYgbm90IHBvcnQ6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2tpcHBlZF9maWxlID0g
U3RyaW5nSU8uU3RyaW5nSU8oc2VsZi5leGFtcGxlX3NraXBwZWRfZmlsZSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0Ll90ZXN0c19mcm9tX3NraXBwZWRfZmlsZShza2lwcGVkX2ZpbGUp
LCBzZWxmLmV4YW1wbGVfc2tpcHBlZF90ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0Ll90ZXN0c19mcm9tX3NraXBwZWRfZmlsZV9jb250ZW50cyhzZWxmLmV4YW1wbGVfc2tpcHBl
ZF9maWxlKSwgc2VsZi5leGFtcGxlX3NraXBwZWRfdGVzdHMpCiAKIAogaWYgX19uYW1lX18gPT0g
J19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC93ZWJraXQucHkKaW5kZXggNTc3YWNkNDVlOTgzY2MxYzRjZDhhZDE3ZGExNzlmM2RiMDRh
ZDhlZi4uNDc2NTU1YzVhMjljMDk5YjAyY2FmNGJjYTRjZDgzOTc5ZGNkNzgzNyAxMDA2NDQKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKQEAg
LTI4Myw5ICsyODMsOSBAQCBjbGFzcyBXZWJLaXRQb3J0KGJhc2UuUG9ydCk6CiAgICAgICAgIHVu
c3VwcG9ydGVkX2ZlYXR1cmVfdGVzdHMgPSBzZWxmLl9za2lwcGVkX3Rlc3RzX2Zvcl91bnN1cHBv
cnRlZF9mZWF0dXJlcygpCiAgICAgICAgIHJldHVybiBkaXNhYmxlZF9mZWF0dXJlX3Rlc3RzICsg
d2ViYXJjaGl2ZV90ZXN0cyArIHVuc3VwcG9ydGVkX2ZlYXR1cmVfdGVzdHMKIAotICAgIGRlZiBf
dGVzdHNfZnJvbV9za2lwcGVkX2ZpbGUoc2VsZiwgc2tpcHBlZF9maWxlKToKKyAgICBkZWYgX3Rl
c3RzX2Zyb21fc2tpcHBlZF9maWxlX2NvbnRlbnRzKHNlbGYsIHNraXBwZWRfZmlsZV9jb250ZW50
cyk6CiAgICAgICAgIHRlc3RzX3RvX3NraXAgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiBza2lw
cGVkX2ZpbGUucmVhZGxpbmVzKCk6CisgICAgICAgIGZvciBsaW5lIGluIHNraXBwZWRfZmlsZV9j
b250ZW50cy5zcGxpdCgnXG4nKToKICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKICAg
ICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnIycpIG9yIG5vdCBsZW4obGluZSk6CiAgICAg
ICAgICAgICAgICAgY29udGludWUKQEAgLTMwMSw3ICszMDEsOCBAQCBjbGFzcyBXZWJLaXRQb3J0
KGJhc2UuUG9ydCk6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMo
ZmlsZW5hbWUpOgogICAgICAgICAgICAgICAgIF9sb2cud2FybigiRmFpbGVkIHRvIG9wZW4gU2tp
cHBlZCBmaWxlOiAlcyIgJSBmaWxlbmFtZSkKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAg
ICAgICAgICAgc2tpcHBlZF9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5yZWFkX3RleHRfZmlsZShm
aWxlbmFtZSkKKyAgICAgICAgICAgIHNraXBwZWRfZmlsZV9jb250ZW50cyA9IHNlbGYuX2ZpbGVz
eXN0ZW0ucmVhZF90ZXh0X2ZpbGUoZmlsZW5hbWUpCisgICAgICAgICAgICB0ZXN0c190b19za2lw
LmV4dGVuZChzZWxmLl90ZXN0c19mcm9tX3NraXBwZWRfZmlsZV9jb250ZW50cyhza2lwcGVkX2Zp
bGVfY29udGVudHMpKQogICAgICAgICByZXR1cm4gdGVzdHNfdG9fc2tpcAogCiAgICAgZGVmIHRl
c3RfZXhwZWN0YXRpb25zKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQppbmRleCA3YjY4MzEw
ODVkZmFlOTgwYjI5N2M2NzYyODIyMzkzZmUzMWY1ODMyLi5jNzJhNDExYWNiMDAzZmI4ODZkNjFh
ZjQxNjVkMTFkZjIwMTZlY2U0IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpAQCAtMSw1ICsxLDYg
QEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR2Fib3IgUmFw
Y3NhbnlpIDxyZ2Fib3JAaW5mLnUtc3plZ2VkLmh1PiwgVW5pdmVyc2l0eSBvZiBTemVnZWQKKyMg
Q29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBAIC0yNiwxMyArMjcsMTkgQEAKIAogaW1wb3J0IHVu
aXR0ZXN0CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgZmlsZXN5c3RlbV9t
b2NrCisKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQud2Via2l0IGltcG9ydCBXZWJL
aXRQb3J0CiAKIAogY2xhc3MgVGVzdFdlYktpdFBvcnQoV2ViS2l0UG9ydCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHN5bWJvbF9saXN0PU5vbmUsIGZlYXR1cmVfbGlzdD1Ob25lKToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgc3ltYm9sX2xpc3Q9Tm9uZSwgZmVhdHVyZV9saXN0PU5vbmUsCisg
ICAgICAgICAgICAgICAgIGV4cGVjdGF0aW9uc19maWxlPU5vbmUsIHNraXBzX2ZpbGU9Tm9uZSwg
Kiprd2FyZ3MpOgogICAgICAgICBzZWxmLnN5bWJvbF9saXN0ID0gc3ltYm9sX2xpc3QKICAgICAg
ICAgc2VsZi5mZWF0dXJlX2xpc3QgPSBmZWF0dXJlX2xpc3QKKyAgICAgICAgc2VsZi5leHBlY3Rh
dGlvbnNfZmlsZSA9IGV4cGVjdGF0aW9uc19maWxlCisgICAgICAgIHNlbGYuc2tpcHNfZmlsZSA9
IHNraXBzX2ZpbGUKKyAgICAgICAgV2ViS2l0UG9ydC5fX2luaXRfXyhzZWxmLCAqKmt3YXJncykK
IAogICAgIGRlZiBfcnVudGltZV9mZWF0dXJlX2xpc3Qoc2VsZik6CiAgICAgICAgIHJldHVybiBz
ZWxmLmZlYXR1cmVfbGlzdApAQCAtNDYsNyArNTMsMTQgQEAgY2xhc3MgVGVzdFdlYktpdFBvcnQo
V2ViS2l0UG9ydCk6CiAgICAgZGVmIF90ZXN0c19mb3JfZGlzYWJsZWRfZmVhdHVyZXMoc2VsZik6
CiAgICAgICAgIHJldHVybiBbImFjY2Vzc2liaWxpdHkiLCBdCiAKKyAgICBkZWYgcGF0aF90b190
ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmV4cGVjdGF0aW9u
c19maWxlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0YXRpb25zX2ZpbGUKKyAgICAg
ICAgcmV0dXJuIFdlYktpdFBvcnQucGF0aF90b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYp
CisKICAgICBkZWYgX3NraXBwZWRfZmlsZV9wYXRocyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5z
a2lwc19maWxlOgorICAgICAgICAgICAgcmV0dXJuIFtzZWxmLnNraXBzX2ZpbGVdCiAgICAgICAg
IHJldHVybiBbXQogCiBjbGFzcyBXZWJLaXRQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBA
IC02NiwzICs4MCwyMyBAQCBjbGFzcyBXZWJLaXRQb3J0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgZGVmIHRlc3Rfc2tpcHBlZF9sYXlvdXRfdGVzdHMoc2VsZik6CiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoVGVzdFdlYktpdFBvcnQoTm9uZSwgTm9uZSkuc2tpcHBlZF9sYXlvdXRfdGVz
dHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQoWyJtZWRpYSIsICJhY2Nlc3NpYmls
aXR5Il0pKQorCisgICAgZGVmIHRlc3RfdGVzdF9leHBlY3RhdGlvbnMoc2VsZik6CisgICAgICAg
ICMgQ2hlY2sgdGhhdCB3ZSByZWFkIGJvdGggdGhlIGV4cGVjdGF0aW9ucyBmaWxlIGFuZCBhbnl0
aGluZyBpbiBhCisgICAgICAgICMgU2tpcHBlZCBmaWxlLCBhbmQgdGhhdCB3ZSBpbmNsdWRlIHRo
ZSBmZWF0dXJlIGFuZCBwbGF0Zm9ybSBjaGVja3MuCisgICAgICAgIGZpbGVzID0geworICAgICAg
ICAgICAgJy90bXAvdGVzdF9leHBlY3RhdGlvbnMudHh0JzogJ0JVR19URVNURVhQRUNUQVRJT05T
IFNLSVAgOiBmYXN0L2h0bWwvYXJ0aWNsZS1lbGVtZW50Lmh0bWwgPSBGQUlMXG4nLAorICAgICAg
ICAgICAgJy90bXAvU2tpcHBlZCc6ICdmYXN0L2h0bWwva2V5Z2VuLmh0bWwnLAorICAgICAgICB9
CisgICAgICAgIG1vY2tfZnMgPSBmaWxlc3lzdGVtX21vY2suTW9ja0ZpbGVTeXN0ZW0oZmlsZXMp
CisgICAgICAgIHBvcnQgPSBUZXN0V2ViS2l0UG9ydChleHBlY3RhdGlvbnNfZmlsZT0nL3RtcC90
ZXN0X2V4cGVjdGF0aW9ucy50eHQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tp
cHNfZmlsZT0nL3RtcC9Ta2lwcGVkJywgZmlsZXN5c3RlbT1tb2NrX2ZzKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQudGVzdF9leHBlY3RhdGlvbnMoKSwKKyAgICAgICAgIiIiQlVHX1RF
U1RFWFBFQ1RBVElPTlMgU0tJUCA6IGZhc3QvaHRtbC9hcnRpY2xlLWVsZW1lbnQuaHRtbCA9IEZB
SUwKK0JVR19TS0lQUEVEIFNLSVAgOiBmYXN0L2h0bWwva2V5Z2VuLmh0bWwgPSBGQUlMCitCVUdf
U0tJUFBFRCBTS0lQIDogbWVkaWEgPSBGQUlMCitCVUdfU0tJUFBFRCBTS0lQIDogYWNjZXNzaWJp
bGl0eSA9IEZBSUwiIiIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0
dGVzdC5tYWluKCkK
</data>

          </attachment>
      

    </bug>

</bugzilla>