<?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>70492</bug_id>
          
          <creation_ts>2011-10-20 04:37:11 -0700</creation_ts>
          <short_desc>REGRESSION(97879): Pixel tests no longer work with NRWT on Mac</short_desc>
          <delta_ts>2011-10-20 16:16:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>70435</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Eric Seidel (no email)">eric</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>487485</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 04:37:11 -0700</bug_when>
    <thetext>REGRESSION(97879): Pixel tests no longer work with NRWT on Mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487487</commentid>
    <comment_count>1</comment_count>
      <attachid>111755</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 04:40:55 -0700</bug_when>
    <thetext>Created attachment 111755
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487488</commentid>
    <comment_count>2</comment_count>
      <attachid>111755</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 04:43:52 -0700</bug_when>
    <thetext>Comment on attachment 111755
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:600
&gt; +                assert out_line[-1] == &quot;\n&quot;, &quot;Missing newline&quot;
&gt; +                content_length_before_header_check = block._content_length
&gt;                  self._process_stdout_line(block, out_line)
&gt;                  # FIXME: Unlike HTTP, DRT dumps the content right after printing a Content-Length header.
&gt;                  # Don&apos;t wait until we&apos;re done with headers, just read the binary blob right now.
&gt; -                if block._content_length is not None and not block.content:
&gt; -                    block.content = self._server_process.read_stdout(deadline - time.time(), block._content_length)
&gt; +                if content_length_before_header_check != block._content_length:
&gt; +                    block.content = self._server_process.read_stdout(deadline, block._content_length)

This is the actual bugfix.  Note the assert which will prevent us from getting this type of bug in the future.

We were ending up reading the image content as normal text lines instead of a binary blob.  Thus when we sent the lines to ImageDiff it got confused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487489</commentid>
    <comment_count>3</comment_count>
      <attachid>111755</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 04:44:30 -0700</bug_when>
    <thetext>Comment on attachment 111755
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:121
&gt; -    def write(self, input):
&gt; +    def write(self, bytes):

input is a global function in python, so we prefer not to shadow it with variable names.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487505</commentid>
    <comment_count>4</comment_count>
      <attachid>111755</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-10-20 05:25:24 -0700</bug_when>
    <thetext>Comment on attachment 111755
Patch

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

Doesn&apos;t seem like you have a test for the fix?

&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:228
&gt; +        ms_to_wait = deadline - time.time()

time.time() returns a number in seconds, not milliseconds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487905</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 15:03:47 -0700</bug_when>
    <thetext>I can undo the deadline part of the fix.  The fix for pixel tests is covered by that assert.  I agree this could all use more testing. :)  I shouldn&apos;t have tried to fix this at 5am.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487926</commentid>
    <comment_count>6</comment_count>
      <attachid>111755</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 15:28:35 -0700</bug_when>
    <thetext>Comment on attachment 111755
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/server_process.py:228
&gt;&gt; +        ms_to_wait = deadline - time.time()
&gt; 
&gt; time.time() returns a number in seconds, not milliseconds.

Yes, my (historical) use of ms_ in the variable name was incorrect.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487967</commentid>
    <comment_count>7</comment_count>
      <attachid>111865</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 16:09:02 -0700</bug_when>
    <thetext>Created attachment 111865
now with more test!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>487970</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-10-20 16:16:44 -0700</bug_when>
    <thetext>Committed r98034: &lt;http://trac.webkit.org/changeset/98034&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111755</attachid>
            <date>2011-10-20 04:40:55 -0700</date>
            <delta_ts>2011-10-20 16:08:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-70492-20111020044054.patch</filename>
            <type>text/plain</type>
            <size>18442</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc5NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZTE1YjYyZGE5NWVhMTc1OTRlMjcwNjZkNWNmNWUwNDRk
NGQyYmQ0Li5lMjI4ZWUxYmVlMDNlYWQ2ZDdkYmViZDM4NWZhOWI1NjZkOWQxMjViIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMTAtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJFR1JFU1NJT04oOTc4NzkpOiBQaXhlbCB0ZXN0cyBubyBsb25nZXIgd29yayB3aXRoIE5SV1Qg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBidWcgdHVybmVkIG91dCB0byBiZSB0aGF0IEkgd2FzIGFzc3VtaW5nIHRoZSBibG9jay5jb250
ZW50CisgICAgICAgIHdvdWxkIGJlIGVtcHR5IGJlZm9yZSB0aGUgYmluYXJ5IGNvbnRlbnQgZm9s
bG93aW5nIENvbnRlbnQtTGVuZ3RoCisgICAgICAgIHdhcyByZWFkIGluc2lkZSBfcmVhZF9ibG9j
ay4gIFR1cm5zIG91dCBpdHMgbm90LCBkdWUgdG8gZXh0cmEgbmV3bGluZXMKKyAgICAgICAgYW5k
ICJFeHBlY3RlZEhhc2giIGhlYWRlci4KKworICAgICAgICBJbiB0aGUgcHJvY2VzcyBvZiB0cnlp
bmcgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBnb2luZyB3cm9uZyBJIGVuZGVkIHVwCisgICAgICAg
IGNsZWFuaW5nIHVwIG91ciBuZXdsaW5lIHVzYWdlIGluIER1bXBSZW5kZXJUcmVlIGEgbGl0dGxl
LiAgTW92ZWQKKyAgICAgICAgdHdvIGVycm9yIG1lc3NhZ2VzIGZyb20gc3Rkb3V0IHRvIHN0ZGVy
ciwgYW5kIGZpeGVkIGEgbGl0dGxlIGNvZGUgaW5kZW50L3doaXRlc3BhY2UuCisKKyAgICAgICAg
SSBhbHNvIGZpeGVkIFNlcnZlclByb2Nlc3MgdG8gdXNlICJkZWFkbGluZSIgZXZlcnl3aGVyZSBp
bnN0ZWFkIG9mIHRpbWVvdXQKKyAgICAgICAgcGVyIEFkYW0ncyByZXF1ZXN0IGluIHRoZSBvcmln
aW5hbCBidWcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNw
cDoKKyAgICAgICAgKGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHA6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3Vw
cG9ydE1hYy5tbToKKyAgICAgICAgKHJlc3RvcmVNYWluRGlzcGxheUNvbG9yUHJvZmlsZSk6Cisg
ICAgICAgIChzZXR1cE1haW5EaXNwbGF5Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5Ogor
CiAyMDExLTEwLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBBZGRpbmcgbXlzZWxmIHRvIHdhdGNobGlzdHMuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCmluZGV4IDI0ZmJmNGI0ZmE4OTg5MzYy
ODRiMzQ1YjZlNjJjMjkyNDYxNjk4NmUuLjBhNzE3NTJiNTY5NDdiZDA0MTc2OTRjZTlmNDYzNzA1
ODEyYTI3YzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBv
cnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHZvaWQgZHVtcFdlYlZpZXdBc1BpeGVsc0FuZENvbXBhcmVXaXRoRXhw
ZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGV4cGVjdGVkSGFzaCkKICAgICB9CiAgICAgCiAgICAg
aWYgKGR1bXBJbWFnZSkKLSAgICAgIGR1bXBCaXRtYXAoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFz
aCk7CisgICAgICAgIGR1bXBCaXRtYXAoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7CiB9CiAK
IHN0YXRpYyB2b2lkIGFwcGVuZEludFRvVmVjdG9yKHVuc2lnbmVkIG51bWJlciwgVmVjdG9yPHVu
c2lnbmVkIGNoYXI+JiB2ZWN0b3IpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
Zy9JbWFnZURpZmZDRy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5j
cHAKaW5kZXggYjRmNDMyZjhhMTU3YzgxOTFhNDkwYmE5OTkxMjFlYTMzNGU3YzZhYy4uMDdlNTEx
MzBjNzcwODQ2MTJhOWI1OWY2NzVhYWUzMjUzYzFlMDNmNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2NnL0ltYWdlRGlmZkNHLmNwcApAQCAtMjExLDEzICsyMTEsMTMgQEAgaW50IG1haW4oaW50IGFy
Z2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkKICAgICAgICAgICAgIGVsc2UgaWYgKGltYWdlU2l6ZSA+
IDAgJiYgIWJhc2VsaW5lSW1hZ2UpCiAgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFnZSA9IGNy
ZWF0ZUltYWdlRnJvbVN0ZGluKGltYWdlU2l6ZSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgZnB1dHMoImVycm9yLCBpbWFnZSBzaXplIG11c3QgYmUgc3BlY2lmaWVkLlxuIiwg
c3Rkb3V0KTsKKyAgICAgICAgICAgICAgICBmcHV0cygiZXJyb3IsIGltYWdlIHNpemUgbXVzdCBi
ZSBzcGVjaWZpZWQuXG4iLCBzdGRlcnIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGFjdHVh
bEltYWdlICYmIGJhc2VsaW5lSW1hZ2UpIHsKICAgICAgICAgICAgIFJldGFpblB0cjxDR0ltYWdl
UmVmPiBkaWZmSW1hZ2U7CiAgICAgICAgICAgICBmbG9hdCBkaWZmZXJlbmNlID0gMTAwLjBmOwot
ICAgICAgICAgICAgCisKICAgICAgICAgICAgIGlmICgoQ0dJbWFnZUdldFdpZHRoKGFjdHVhbElt
YWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0V2lkdGgoYmFzZWxpbmVJbWFnZS5nZXQoKSkpICYmIChD
R0ltYWdlR2V0SGVpZ2h0KGFjdHVhbEltYWdlLmdldCgpKSA9PSBDR0ltYWdlR2V0SGVpZ2h0KGJh
c2VsaW5lSW1hZ2UuZ2V0KCkpKSAmJiAoaW1hZ2VIYXNBbHBoYShhY3R1YWxJbWFnZS5nZXQoKSkg
PT0gaW1hZ2VIYXNBbHBoYShiYXNlbGluZUltYWdlLmdldCgpKSkpIHsKICAgICAgICAgICAgICAg
ICBkaWZmSW1hZ2UgPSBjcmVhdGVEaWZmZXJlbmNlSW1hZ2UoYWN0dWFsSW1hZ2UuZ2V0KCksIGJh
c2VsaW5lSW1hZ2UuZ2V0KCksIGRpZmZlcmVuY2UpOyAvLyBkaWZmZXJlbmNlIGlzIHBhc3NlZCBi
eSByZWZlcmVuY2UKICAgICAgICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8PSB0b2xlcmFuY2Up
CkBAIC0yMjgsNyArMjI4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3Zb
XSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICBmcHV0cygiZXJyb3IsIHRlc3QgYW5kIHJlZmVyZW5jZSBpbWFnZSBoYXZlIGRpZmZlcmVudCBw
cm9wZXJ0aWVzLlxuIiwgc3RkZXJyKTsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAg
aWYgKGRpZmZlcmVuY2UgPiAwLjBmKSB7CiAgICAgICAgICAgICAgICAgaWYgKGRpZmZJbWFnZSkg
ewogICAgICAgICAgICAgICAgICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlRGF0YVJlZj4gaW1hZ2VE
YXRhKEFkb3B0Q0YsIENGRGF0YUNyZWF0ZU11dGFibGUoMCwgMCkpOwpAQCAtMjM4LDcgKzIzOCw3
IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZigiQ29udGVudC1MZW5ndGg6ICVsdVxuIiwgQ0ZEYXRhR2V0TGVuZ3RoKGlt
YWdlRGF0YS5nZXQoKSkpOwogICAgICAgICAgICAgICAgICAgICBmd3JpdGUoQ0ZEYXRhR2V0Qnl0
ZVB0cihpbWFnZURhdGEuZ2V0KCkpLCAxLCBDRkRhdGFHZXRMZW5ndGgoaW1hZ2VEYXRhLmdldCgp
KSwgc3Rkb3V0KTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCisKICAgICAg
ICAgICAgICAgICBmcHJpbnRmKHN0ZG91dCwgImRpZmY6ICUwMS4yZiUlIGZhaWxlZFxuIiwgZGlm
ZmVyZW5jZSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0
ZG91dCwgImRpZmY6ICUwMS4yZiUlIHBhc3NlZFxuIiwgZGlmZmVyZW5jZSk7CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0gYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KaW5kZXggNWU3NjQ5NWVmNGYwZDdkYTdl
MmYwODZiNmFjMzBjNjk1MGNhNzgwMy4uZmY4OGI1Njc3MWFlZDg4ZWVmMWIzNzI0OWU5NDg4NDNh
ZTZjOWI4NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJU
cmVlLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQpA
QCAtMTA4Myw4ICsxMDgzLDggQEAgdm9pZCBkdW1wKCkKICAgICAgICAgcHJpbnRmKCJDb250ZW50
LVR5cGU6ICVzXG4iLCBbcmVzdWx0TWltZVR5cGUgVVRGOFN0cmluZ10pOwogCiAgICAgICAgIGlm
IChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBBc0F1ZGlvKCkpCi0gICAgICAgICAgICBwcmlu
dGYoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NFxuIik7ICAgICAgICAgICAgCi0g
ICAgICAgIAorICAgICAgICAgICAgcHJpbnRmKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBi
YXNlNjRcbiIpOworCiAgICAgICAgIGlmIChyZXN1bHREYXRhKSB7CiAgICAgICAgICAgICBmd3Jp
dGUoW3Jlc3VsdERhdGEgYnl0ZXNdLCAxLCBbcmVzdWx0RGF0YSBsZW5ndGhdLCBzdGRvdXQpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1h
Yy5tbSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCmlu
ZGV4IDc0YmE5NTczNDUyMTc1Mjg3Y2Q0OThmYTU0OTJlOGI4ODJhZjU3MTAuLjNkNmZiZGQ1OTZm
MjA5ZTdhZThiOGI3OTdkMTRhNmU0NjIxMjIzZmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9QaXhlbER1bXBTdXBwb3J0TWFjLm1tCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgcmVz
dG9yZU1haW5EaXNwbGF5Q29sb3JQcm9maWxlKGludCBpZ25vcmVkKQogICAgICAgICBjb25zdCBD
TURldmljZVNjb3BlIHNjb3BlID0geyBrQ0ZQcmVmZXJlbmNlc0N1cnJlbnRVc2VyLCBrQ0ZQcmVm
ZXJlbmNlc0N1cnJlbnRIb3N0IH07CiAgICAgICAgIGludCBlcnJvciA9IENNU2V0RGV2aWNlUHJv
ZmlsZShjbURpc3BsYXlEZXZpY2VDbGFzcywgKENNRGV2aWNlSUQpa0NHRGlyZWN0TWFpbkRpc3Bs
YXksICZzY29wZSwgY21EZWZhdWx0UHJvZmlsZUlELCAmc0luaXRpYWxQcm9maWxlTG9jYXRpb24p
OwogICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxl
ZCB0byByZXN0b3JlIGluaXRpYWwgY29sb3IgcHJvZmlsZSBmb3IgbWFpbiBkaXNwbGF5ISBPcGVu
IFN5c3RlbSBQcmVmZXJlbmNlcyA+IERpc3BsYXlzID4gQ29sb3IgYW5kIG1hbnVhbGx5IHJlLXNl
bGVjdCB0aGUgcHJvZmlsZS4gIChFcnJvcjogJWkpIiwgZXJyb3IpOworICAgICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmVzdG9yZSBpbml0aWFsIGNvbG9yIHByb2ZpbGUgZm9y
IG1haW4gZGlzcGxheSEgT3BlbiBTeXN0ZW0gUHJlZmVyZW5jZXMgPiBEaXNwbGF5cyA+IENvbG9y
IGFuZCBtYW51YWxseSByZS1zZWxlY3QgdGhlIHByb2ZpbGUuICAoRXJyb3I6ICVpKVxuIiwgZXJy
b3IpOwogICAgICAgICBzSW5pdGlhbFByb2ZpbGVMb2NhdGlvbi5sb2NUeXBlID0gY21Ob1Byb2Zp
bGVCYXNlOwogICAgIH0KIH0KQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBzZXR1cE1haW5EaXNwbGF5
Q29sb3JQcm9maWxlKCkKICAgICAgICAgQ01DbG9zZVByb2ZpbGUocHJvZmlsZSk7CiAgICAgfQog
ICAgIGlmIChlcnJvcikgewotICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byByZXRy
aWV2ZSBjdXJyZW50IGNvbG9yIHByb2ZpbGUgZm9yIG1haW4gZGlzcGxheSwgdGh1cyBpdCB3b24n
dCBiZSBjaGFuZ2VkLiAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4gIChF
cnJvcjogJWkpIiwgZXJyb3IpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBy
ZXRyaWV2ZSBjdXJyZW50IGNvbG9yIHByb2ZpbGUgZm9yIG1haW4gZGlzcGxheSwgdGh1cyBpdCB3
b24ndCBiZSBjaGFuZ2VkLiAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4g
IChFcnJvcjogJWkpXG4iLCBlcnJvcik7CiAgICAgICAgIHNJbml0aWFsUHJvZmlsZUxvY2F0aW9u
LmxvY1R5cGUgPSBjbU5vUHJvZmlsZUJhc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC05
MCw3ICs5MCw3IEBAIHZvaWQgc2V0dXBNYWluRGlzcGxheUNvbG9yUHJvZmlsZSgpCiAgICAgc3Ry
Y3B5KGxvY2F0aW9uLnUucGF0aExvYy5wYXRoLCBQUk9GSUxFX1BBVEgpOwogICAgIGVycm9yID0g
Q01TZXREZXZpY2VQcm9maWxlKGNtRGlzcGxheURldmljZUNsYXNzLCAoQ01EZXZpY2VJRClrQ0dE
aXJlY3RNYWluRGlzcGxheSwgJnNjb3BlLCBjbURlZmF1bHRQcm9maWxlSUQsICZsb2NhdGlvbik7
CiAgICAgaWYgKGVycm9yKSB7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHNl
dCBjb2xvciBwcm9maWxlIGZvciBtYWluIGRpc3BsYXkhICBNYW55IHBpeGVsIHRlc3RzIG1heSBm
YWlsIGFzIGEgcmVzdWx0LiAgKEVycm9yOiAlaSkiLCBlcnJvcik7CisgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiRmFpbGVkIHRvIHNldCBjb2xvciBwcm9maWxlIGZvciBtYWluIGRpc3BsYXkhICBN
YW55IHBpeGVsIHRlc3RzIG1heSBmYWlsIGFzIGEgcmVzdWx0LiAgKEVycm9yOiAlaSlcbiIsIGVy
cm9yKTsKICAgICAgICAgc0luaXRpYWxQcm9maWxlTG9jYXRpb24ubG9jVHlwZSA9IGNtTm9Qcm9m
aWxlQmFzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4
IDlmODJmNDIwNWJkZmZjNWMzNTQxYmU4ZjAzYWNkYzAzZjZjMTBlNTguLjg0MTY5NDg0OGZmNWUz
M2M4MjEzNTkxNTZjZjk1Njk3YzQ0MmEwMzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNDgs
NyArNDgsNyBAQCBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiBjbGFzcyBTZXJ2
ZXJQcm9jZXNzOgogICAgICIiIlRoaXMgY2xhc3MgcHJvdmlkZXMgYSB3cmFwcGVyIGFyb3VuZCBh
IHN1YnByb2Nlc3MgdGhhdAogICAgIGltcGxlbWVudHMgYSBzaW1wbGUgcmVxdWVzdC9yZXNwb25z
ZSB1c2FnZSBtb2RlbC4gVGhlIHByaW1hcnkgYmVuZWZpdAotICAgIGlzIHRoYXQgcmVhZGluZyBy
ZXNwb25zZXMgdGFrZXMgYSB0aW1lb3V0LCBzbyB0aGF0IHdlIGRvbid0IGV2ZXIgYmxvY2sKKyAg
ICBpcyB0aGF0IHJlYWRpbmcgcmVzcG9uc2VzIHRha2VzIGEgZGVhZGxpbmUsIHNvIHRoYXQgd2Ug
ZG9uJ3QgZXZlciBibG9jawogICAgIGluZGVmaW5pdGVseS4gVGhlIGNsYXNzIGFsc28gaGFuZGxl
cyB0cmFuc3BhcmVudGx5IHJlc3RhcnRpbmcgcHJvY2Vzc2VzCiAgICAgYXMgbmVjZXNzYXJ5IHRv
IGtlZXAgaXNzdWluZyBjb21tYW5kcy4iIiIKIApAQCAtMTE4LDEzICsxMTgsMTMgQEAgY2xhc3Mg
U2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jLnBvbGwoKQogICAg
ICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIHdyaXRlKHNlbGYsIGlucHV0KToKKyAgICBkZWYg
d3JpdGUoc2VsZiwgYnl0ZXMpOgogICAgICAgICAiIiJXcml0ZSBhIHJlcXVlc3QgdG8gdGhlIHN1
YnByb2Nlc3MuIFRoZSBzdWJwcm9jZXNzIGlzIChyZS0pc3RhcnQoKSdlZAogICAgICAgICBpZiBp
cyBub3QgYWxyZWFkeSBydW5uaW5nLiIiIgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKICAg
ICAgICAgICAgIHNlbGYuX3N0YXJ0KCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5f
cHJvYy5zdGRpbi53cml0ZShpbnB1dCkKKyAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3Jp
dGUoYnl0ZXMpCiAgICAgICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgogICAgICAgICAgICAgc2VsZi5z
dG9wKCkKICAgICAgICAgICAgICMgc3RvcCgpIGNhbGxzIF9yZXNldCgpLCBzbyB3ZSBoYXZlIHRv
IHNldCBjcmFzaGVkIHRvIFRydWUgYWZ0ZXIgY2FsbGluZyBzdG9wKCkuCkBAIC0xNDIsMTMgKzE0
MiwxMyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3Bv
cF9lcnJvcl9ieXRlcyhpbmRleF9hZnRlcl9uZXdsaW5lKQogICAgICAgICByZXR1cm4gTm9uZQog
Ci0gICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgdGltZW91dF9zZWNvbmRzKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3JlYWQodGltZW91dF9zZWNvbmRzLCBzZWxmLl9wb3Bfc3Rkb3V0X2xp
bmVfaWZfcmVhZHkpCisgICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgor
ICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgc2VsZi5fcG9wX3N0ZG91dF9saW5l
X2lmX3JlYWR5KQogCi0gICAgZGVmIHJlYWRfc3RkZXJyX2xpbmUoc2VsZiwgdGltZW91dF9zZWNv
bmRzKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQodGltZW91dF9zZWNvbmRzLCBzZWxmLl9w
b3Bfc3RkZXJyX2xpbmVfaWZfcmVhZHkpCisgICAgZGVmIHJlYWRfc3RkZXJyX2xpbmUoc2VsZiwg
ZGVhZGxpbmUpOgorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwgc2VsZi5fcG9w
X3N0ZGVycl9saW5lX2lmX3JlYWR5KQogCi0gICAgZGVmIHJlYWRfZWl0aGVyX3N0ZG91dF9vcl9z
dGRlcnJfbGluZShzZWxmLCB0aW1lb3V0X3NlY29uZHMpOgorICAgIGRlZiByZWFkX2VpdGhlcl9z
dGRvdXRfb3Jfc3RkZXJyX2xpbmUoc2VsZiwgZGVhZGxpbmUpOgogICAgICAgICBkZWYgcmV0cmll
dmVfYnl0ZXNfZnJvbV9idWZmZXJzKCk6CiAgICAgICAgICAgICBzdGRvdXRfbGluZSA9IHNlbGYu
X3BvcF9zdGRvdXRfbGluZV9pZl9yZWFkeSgpCiAgICAgICAgICAgICBpZiBzdGRvdXRfbGluZToK
QEAgLTE1OCwxMyArMTU4LDEzIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUsIHN0ZGVycl9saW5lCiAgICAgICAgICAgICByZXR1cm4gTm9uZSAgIyBJ
bnN0cnVjdHMgdGhlIGNhbGxlciB0byBrZWVwIHdhaXRpbmcuCiAKLSAgICAgICAgcmV0dXJuX3Zh
bHVlID0gc2VsZi5fcmVhZCh0aW1lb3V0X3NlY29uZHMsIHJldHJpZXZlX2J5dGVzX2Zyb21fYnVm
ZmVycykKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gc2VsZi5fcmVhZChkZWFkbGluZSwgcmV0cmll
dmVfYnl0ZXNfZnJvbV9idWZmZXJzKQogICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgYml0IG9m
IGEgaGFjayBhcm91bmQgdGhlIGZhY3QgdGhhdCBfcmVhZCBub3JtYWxseSBvbmx5IHJldHVybnMg
b25lIHZhbHVlLCBidXQgdGhpcyBjYWxsZXIgd2FudHMgaXQgdG8gcmV0dXJuIHR3by4KICAgICAg
ICAgaWYgcmV0dXJuX3ZhbHVlIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZSwgTm9u
ZQogICAgICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlCiAKLSAgICBkZWYgcmVhZF9zdGRvdXQoc2Vs
ZiwgdGltZW91dF9zZWNvbmRzLCBzaXplKToKKyAgICBkZWYgcmVhZF9zdGRvdXQoc2VsZiwgZGVh
ZGxpbmUsIHNpemUpOgogICAgICAgICBpZiBzaXplIDw9IDA6CiAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdTZXJ2ZXJQcm9jZXNzLnJlYWQoKSBjYWxsZWQgd2l0aCBhIG5vbi1wb3NpdGl2
ZSBzaXplOiAlZCAnICUgc2l6ZSkKIApAQCAtMTczLDcgKzE3Myw3IEBAIGNsYXNzIFNlcnZlclBy
b2Nlc3M6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcF9vdXRwdXRfYnl0ZXMoc2l6
ZSkKICAgICAgICAgICAgIHJldHVybiBOb25lCiAKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQo
dGltZW91dF9zZWNvbmRzLCByZXRyaWV2ZV9ieXRlc19mcm9tX3N0ZG91dF9idWZmZXIpCisgICAg
ICAgIHJldHVybiBzZWxmLl9yZWFkKGRlYWRsaW5lLCByZXRyaWV2ZV9ieXRlc19mcm9tX3N0ZG91
dF9idWZmZXIpCiAKICAgICBkZWYgX2NoZWNrX2Zvcl9jcmFzaChzZWxmKToKICAgICAgICAgaWYg
c2VsZi5fcHJvYy5wb2xsKCkgIT0gTm9uZToKQEAgLTIxMSw3ICsyMTEsNyBAQCBjbGFzcyBTZXJ2
ZXJQcm9jZXNzOgogICAgICAgICAgICAgc2VsZi5fc2FtcGxlKCkKIAogICAgIGRlZiBfc3BsaXRf
c3RyaW5nX2FmdGVyX2luZGV4KHNlbGYsIHN0cmluZywgaW5kZXgpOgotICAgICAgICByZXR1cm4g
c3RyaW5nWzA6aW5kZXhdLCBzdHJpbmdbaW5kZXg6XQorICAgICAgICByZXR1cm4gc3RyaW5nWzpp
bmRleF0sIHN0cmluZ1tpbmRleDpdCiAKICAgICBkZWYgX3BvcF9vdXRwdXRfYnl0ZXMoc2VsZiwg
Ynl0ZXNfY291bnQpOgogICAgICAgICBvdXRwdXQsIHNlbGYuX291dHB1dCA9IHNlbGYuX3NwbGl0
X3N0cmluZ19hZnRlcl9pbmRleChzZWxmLl9vdXRwdXQsIGJ5dGVzX2NvdW50KQpAQCAtMjIxLDEw
ICsyMjEsMTEgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgb3V0cHV0LCBzZWxmLl9l
cnJvciA9IHNlbGYuX3NwbGl0X3N0cmluZ19hZnRlcl9pbmRleChzZWxmLl9lcnJvciwgYnl0ZXNf
Y291bnQpCiAgICAgICAgIHJldHVybiBvdXRwdXQKIAotICAgIGRlZiBfd2FpdF9mb3JfZGF0YV9h
bmRfdXBkYXRlX2J1ZmZlcnMoc2VsZiwgbXNfdG9fd2FpdCk6CisgICAgZGVmIF93YWl0X2Zvcl9k
YXRhX2FuZF91cGRhdGVfYnVmZmVycyhzZWxmLCBkZWFkbGluZSk6CiAgICAgICAgIG91dF9mZCA9
IHNlbGYuX3Byb2Muc3Rkb3V0LmZpbGVubygpCiAgICAgICAgIGVycl9mZCA9IHNlbGYuX3Byb2Mu
c3RkZXJyLmZpbGVubygpCiAgICAgICAgIHNlbGVjdF9mZHMgPSAob3V0X2ZkLCBlcnJfZmQpCisg
ICAgICAgIG1zX3RvX3dhaXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCiAgICAgICAgIHJlYWRf
ZmRzLCBfLCBfID0gc2VsZWN0LnNlbGVjdChzZWxlY3RfZmRzLCBbXSwgc2VsZWN0X2ZkcywgbXNf
dG9fd2FpdCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3V0X2ZkIGluIHJlYWRfZmRz
OgpAQCAtMjQ2LDggKzI0Nyw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgIyBUaGlzIHJl
YWQgZnVuY3Rpb24gaXMgYSBiaXQgb2RkbHktZGVzaWduZWQsIGFzIGl0IHBvbGxzIGJvdGggc3Rk
b3V0IGFuZCBzdGRlcnIsIHlldAogICAgICMgb25seSByZWFkcy9yZXR1cm5zIGZyb20gb25lIG9m
IHRoZW0gKGJ1ZmZlcmluZyBib3RoIGluIGxvY2FsIHNlbGYuX291dHB1dC9zZWxmLl9lcnJvciku
CiAgICAgIyBJdCBtaWdodCBiZSBjbGVhbmVyIHRvIHBhc3MgaW4gdGhlIGZpbGUgZGVzY3JpcHRv
ciB0byBwb2xsIGluc3RlYWQuCi0gICAgZGVmIF9yZWFkKHNlbGYsIHRpbWVvdXQsIGZldGNoX2J5
dGVzX2Zyb21fYnVmZmVyc19jYWxsYmFjayk6Ci0gICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1l
KCkgKyB0aW1lb3V0CisgICAgZGVmIF9yZWFkKHNlbGYsIGRlYWRsaW5lLCBmZXRjaF9ieXRlc19m
cm9tX2J1ZmZlcnNfY2FsbGJhY2spOgogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAg
aWYgc2VsZi5fY2hlY2tfZm9yX2Fib3J0KGRlYWRsaW5lKToKICAgICAgICAgICAgICAgICByZXR1
cm4gTm9uZQpAQCAtMjU2LDcgKzI1Niw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAg
ICAgICBpZiBieXRlcyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4gYnl0ZXMK
IAotICAgICAgICAgICAgc2VsZi5fd2FpdF9mb3JfZGF0YV9hbmRfdXBkYXRlX2J1ZmZlcnMoZGVh
ZGxpbmUgLSB0aW1lLnRpbWUoKSkKKyAgICAgICAgICAgIHNlbGYuX3dhaXRfZm9yX2RhdGFfYW5k
X3VwZGF0ZV9idWZmZXJzKGRlYWRsaW5lKQogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAg
IGlmIG5vdCBzZWxmLl9wcm9jOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCBhODNiNDk2ZmUxMzFjMTc2ODRhZjM4OGMwM2I4
ZDBiOThiNjQ0ZjFiLi40NDY1Y2M1ZWFmN2MwNTUyNzA4ZDMyZTcwZTNlMWE2Yzc2ZmE4NjQ4IDEw
MDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQpAQCAtMTc3LDM1ICsxNzcsMzkgQEAgY2xhc3MgV2ViS2l0UG9ydChQb3J0KToKICAgICAg
ICAgcmV0dXJuIHByb2Nlc3MKIAogICAgIGRlZiBfcmVhZF9pbWFnZV9kaWZmKHNlbGYsIHNwKToK
LSAgICAgICAgdGltZW91dCA9IDIuMAotICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsg
dGltZW91dAotICAgICAgICBvdXRwdXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKHRpbWVvdXQpCisg
ICAgICAgIGRlYWRsaW5lID0gdGltZS50aW1lKCkgKyAyLjAKKyAgICAgICAgb3V0cHV0ID0gTm9u
ZQogICAgICAgICBvdXRwdXRfaW1hZ2UgPSAiIgotICAgICAgICBkaWZmX3BlcmNlbnQgPSAwCi0g
ICAgICAgIHdoaWxlIG5vdCBzcC50aW1lZF9vdXQgYW5kIG5vdCBzcC5jcmFzaGVkIGFuZCBvdXRw
dXQ6CisKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIG91dHB1dCA9IHNwLnJlYWRf
c3Rkb3V0X2xpbmUoZGVhZGxpbmUpCisgICAgICAgICAgICBpZiBzcC50aW1lZF9vdXQgb3Igc3Au
Y3Jhc2hlZCBvciBub3Qgb3V0cHV0OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAg
ICAgIGlmIG91dHB1dC5zdGFydHN3aXRoKCdkaWZmJyk6ICAjIFRoaXMgaXMgdGhlIGxhc3QgbGlu
ZSBJbWFnZURpZmYgcHJpbnRzLgorICAgICAgICAgICAgICAgIGJyZWFrCisKICAgICAgICAgICAg
IGlmIG91dHB1dC5zdGFydHN3aXRoKCdDb250ZW50LUxlbmd0aCcpOgogICAgICAgICAgICAgICAg
IG0gPSByZS5tYXRjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgb3V0cHV0KQogICAgICAgICAg
ICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KG0uZ3JvdXAoMSkpCi0gICAgICAgICAgICAgICAg
dGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICBvdXRwdXRf
aW1hZ2UgPSBzcC5yZWFkX3N0ZG91dCh0aW1lb3V0LCBjb250ZW50X2xlbmd0aCkKLSAgICAgICAg
ICAgICAgICBvdXRwdXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKHRpbWVvdXQpCi0gICAgICAgICAg
ICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToK
LSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1lLnRpbWUoKQorICAgICAgICAgICAgICAgIG91dHB1
dF9pbWFnZSA9IHNwLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBjb250ZW50X2xlbmd0aCkKICAgICAg
ICAgICAgICAgICBvdXRwdXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQorICAgICAg
ICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgaWYgc3AudGltZWRfb3V0OgogICAgICAgICAgICAg
X2xvZy5lcnJvcigiSW1hZ2VEaWZmIHRpbWVkIG91dCIpCiAgICAgICAgIGlmIHNwLmNyYXNoZWQ6
CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJJbWFnZURpZmYgY3Jhc2hlZCIpCisgICAgICAgICMg
RklYTUU6IFRoZXJlIGlzIG5vIG5lZWQgdG8gc2h1dCBkb3duIHRoZSBJbWFnZURpZmYgc2VydmVy
IGFmdGVyIGV2ZXJ5IGRpZmYuCiAgICAgICAgIHNwLnN0b3AoKQotICAgICAgICBpZiBvdXRwdXQu
c3RhcnRzd2l0aCgnZGlmZicpOgorCisgICAgICAgIGRpZmZfcGVyY2VudCA9IDAKKyAgICAgICAg
aWYgb3V0cHV0IGFuZCBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOgogICAgICAgICAgICAgbSA9
IHJlLm1hdGNoKCdkaWZmOiAoLispJSAocGFzc2VkfGZhaWxlZCknLCBvdXRwdXQpCiAgICAgICAg
ICAgICBpZiBtLmdyb3VwKDIpID09ICdwYXNzZWQnOgogICAgICAgICAgICAgICAgIHJldHVybiBb
Tm9uZSwgMF0KICAgICAgICAgICAgIGRpZmZfcGVyY2VudCA9IGZsb2F0KG0uZ3JvdXAoMSkpCisK
ICAgICAgICAgcmV0dXJuIChvdXRwdXRfaW1hZ2UsIGRpZmZfcGVyY2VudCkKIAogICAgIGRlZiBk
ZWZhdWx0X3Jlc3VsdHNfZGlyZWN0b3J5KHNlbGYpOgpAQCAtNTUwLDYgKzU1NCw3IEBAIGNsYXNz
IFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgb3Igc2VsZi5fcmVhZF9oZWFkZXIo
YmxvY2ssIGxpbmUsICdDb250ZW50LUxlbmd0aDogJywgJ19jb250ZW50X2xlbmd0aCcsIGludCkK
ICAgICAgICAgICAgIG9yIHNlbGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAnQWN0dWFsSGFz
aDogJywgJ2NvbnRlbnRfaGFzaCcpKToKICAgICAgICAgICAgIHJldHVybgorICAgICAgICAjIE5v
dGUsIHdlJ3JlIG5vdCByZWFkaW5nIEV4cGVjdGVkSGFzaDogaGVyZSwgYnV0IHdlIGNvdWxkLgog
ICAgICAgICAjIElmIHRoZSBsaW5lIHdhc24ndCBhIGhlYWRlciwgd2UganVzdCBhcHBlbmQgaXQg
dG8gdGhlIGNvbnRlbnQuCiAgICAgICAgIGJsb2NrLmNvbnRlbnQgKz0gbGluZQogCkBAIC01NjYs
MTkgKzU3MSwxNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIGlm
IG91dF9zZWVuX2VvZiBhbmQgKHNlbGYuZXJyX3NlZW5fZW9mIG9yIG5vdCB3YWl0X2Zvcl9zdGRl
cnJfZW9mKToKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgICAgICAgICBpZiBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy50aW1lZF9vdXQgb3Igc2VsZi5fZGV0ZWN0ZWRfY3Jhc2goKToKLSAgICAg
ICAgICAgICAgICBicmVhawotCi0gICAgICAgICAgICB0aW1lb3V0ID0gZGVhZGxpbmUgLSB0aW1l
LnRpbWUoKQotCiAgICAgICAgICAgICBpZiBzZWxmLmVycl9zZWVuX2VvZjoKLSAgICAgICAgICAg
ICAgICBvdXRfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0X2xpbmUodGlt
ZW91dCkKKyAgICAgICAgICAgICAgICBvdXRfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJl
YWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpCiAgICAgICAgICAgICAgICAgZXJyX2xpbmUgPSBOb25l
CiAgICAgICAgICAgICBlbGlmIG91dF9zZWVuX2VvZjoKICAgICAgICAgICAgICAgICBvdXRfbGlu
ZSA9IE5vbmUKLSAgICAgICAgICAgICAgICBlcnJfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNz
LnJlYWRfc3RkZXJyX2xpbmUodGltZW91dCkKKyAgICAgICAgICAgICAgICBlcnJfbGluZSA9IHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3RkZXJyX2xpbmUoZGVhZGxpbmUpCiAgICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIG91dF9saW5lLCBlcnJfbGluZSA9IHNlbGYuX3NlcnZl
cl9wcm9jZXNzLnJlYWRfZWl0aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZSh0aW1lb3V0KQorICAg
ICAgICAgICAgICAgIG91dF9saW5lLCBlcnJfbGluZSA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJl
YWRfZWl0aGVyX3N0ZG91dF9vcl9zdGRlcnJfbGluZShkZWFkbGluZSkKKworICAgICAgICAgICAg
aWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuX2RldGVjdGVkX2NyYXNo
KCk6CisgICAgICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICAgICAgaWYgb3V0X2xpbmU6CiAg
ICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBvdXRfc2Vlbl9lb2YKQEAgLTU4OCwxMSArNTkxLDEz
IEBAIGNsYXNzIFdlYktpdERyaXZlcihEcml2ZXIpOgogICAgICAgICAgICAgICAgIGVycl9saW5l
LCBzZWxmLmVycl9zZWVuX2VvZiA9IHNlbGYuX3N0cmlwX2VvZihlcnJfbGluZSkKIAogICAgICAg
ICAgICAgaWYgb3V0X2xpbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG91dF9saW5lWy0xXSA9
PSAiXG4iLCAiTWlzc2luZyBuZXdsaW5lIgorICAgICAgICAgICAgICAgIGNvbnRlbnRfbGVuZ3Ro
X2JlZm9yZV9oZWFkZXJfY2hlY2sgPSBibG9jay5fY29udGVudF9sZW5ndGgKICAgICAgICAgICAg
ICAgICBzZWxmLl9wcm9jZXNzX3N0ZG91dF9saW5lKGJsb2NrLCBvdXRfbGluZSkKICAgICAgICAg
ICAgICAgICAjIEZJWE1FOiBVbmxpa2UgSFRUUCwgRFJUIGR1bXBzIHRoZSBjb250ZW50IHJpZ2h0
IGFmdGVyIHByaW50aW5nIGEgQ29udGVudC1MZW5ndGggaGVhZGVyLgogICAgICAgICAgICAgICAg
ICMgRG9uJ3Qgd2FpdCB1bnRpbCB3ZSdyZSBkb25lIHdpdGggaGVhZGVycywganVzdCByZWFkIHRo
ZSBiaW5hcnkgYmxvYiByaWdodCBub3cuCi0gICAgICAgICAgICAgICAgaWYgYmxvY2suX2NvbnRl
bnRfbGVuZ3RoIGlzIG5vdCBOb25lIGFuZCBub3QgYmxvY2suY29udGVudDoKLSAgICAgICAgICAg
ICAgICAgICAgYmxvY2suY29udGVudCA9IHNlbGYuX3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0
KGRlYWRsaW5lIC0gdGltZS50aW1lKCksIGJsb2NrLl9jb250ZW50X2xlbmd0aCkKKyAgICAgICAg
ICAgICAgICBpZiBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrICE9IGJsb2NrLl9j
b250ZW50X2xlbmd0aDoKKyAgICAgICAgICAgICAgICAgICAgYmxvY2suY29udGVudCA9IHNlbGYu
X3NlcnZlcl9wcm9jZXNzLnJlYWRfc3Rkb3V0KGRlYWRsaW5lLCBibG9jay5fY29udGVudF9sZW5n
dGgpCiAKICAgICAgICAgICAgIGlmIGVycl9saW5lOgogICAgICAgICAgICAgICAgIGlmIHNlbGYu
X2NoZWNrX2Zvcl9kcml2ZXJfY3Jhc2goZXJyX2xpbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpp
bmRleCBlY2Y2OTEwYThlYjA1MDcxMGEyNjFkOTE1YjA4MDE2OTFjZGNiYTk5Li5iOGI2NGE1Nzc0
MDgyYjMzYzYyZDk2OWZkM2Y3NDRhZDM2ZjZhMTRjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdF91bml0dGVzdC5weQpA
QCAtMjA1LDEyICsyMDUsMTIgQEAgY2xhc3MgTW9ja1NlcnZlclByb2Nlc3Mob2JqZWN0KToKICAg
ICAgICAgc2VsZi5jcmFzaGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5saW5lcyA9IGxpbmVzIG9y
IFtdCiAKLSAgICBkZWYgcmVhZF9zdGRvdXRfbGluZShzZWxmLCB0aW1lb3V0KToKKyAgICBkZWYg
cmVhZF9zdGRvdXRfbGluZShzZWxmLCBkZWFkbGluZSk6CiAgICAgICAgIHJldHVybiBzZWxmLmxp
bmVzLnBvcCgwKSArICJcbiIKIAotICAgIGRlZiByZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJy
X2xpbmUoc2VsZiwgdGltZW91dCk6CisgICAgZGVmIHJlYWRfZWl0aGVyX3N0ZG91dF9vcl9zdGRl
cnJfbGluZShzZWxmLCBkZWFkbGluZSk6CiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBoYXZl
IHRlc3RzIHdoaWNoIGludGVybWl4IHN0ZGVyciBhbmQgc3Rkb3V0IGxpbmVzLgotICAgICAgICBy
ZXR1cm4gc2VsZi5yZWFkX3N0ZG91dF9saW5lKHRpbWVvdXQpLCBOb25lCisgICAgICAgIHJldHVy
biBzZWxmLnJlYWRfc3Rkb3V0X2xpbmUoZGVhZGxpbmUpLCBOb25lCiAKIAogY2xhc3MgV2ViS2l0
RHJpdmVyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111865</attachid>
            <date>2011-10-20 16:09:02 -0700</date>
            <delta_ts>2011-10-20 16:11:33 -0700</delta_ts>
            <desc>now with more test!</desc>
            <filename>bug-70492-20111020160901.patch</filename>
            <type>text/plain</type>
            <size>20601</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTc5NTUKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZTE1YjYyZGE5NWVhMTc1OTRlMjcwNjZkNWNmNWUwNDRk
NGQyYmQ0Li5lMjI4ZWUxYmVlMDNlYWQ2ZDdkYmViZDM4NWZhOWI1NjZkOWQxMjViIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUg
QEAKKzIwMTEtMTAtMjAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IFJFR1JFU1NJT04oOTc4NzkpOiBQaXhlbCB0ZXN0cyBubyBsb25nZXIgd29yayB3aXRoIE5SV1Qg
b24gTWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MDQ5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSBidWcgdHVybmVkIG91dCB0byBiZSB0aGF0IEkgd2FzIGFzc3VtaW5nIHRoZSBibG9jay5jb250
ZW50CisgICAgICAgIHdvdWxkIGJlIGVtcHR5IGJlZm9yZSB0aGUgYmluYXJ5IGNvbnRlbnQgZm9s
bG93aW5nIENvbnRlbnQtTGVuZ3RoCisgICAgICAgIHdhcyByZWFkIGluc2lkZSBfcmVhZF9ibG9j
ay4gIFR1cm5zIG91dCBpdHMgbm90LCBkdWUgdG8gZXh0cmEgbmV3bGluZXMKKyAgICAgICAgYW5k
ICJFeHBlY3RlZEhhc2giIGhlYWRlci4KKworICAgICAgICBJbiB0aGUgcHJvY2VzcyBvZiB0cnlp
bmcgdG8gZmlndXJlIG91dCB3aGF0IHdhcyBnb2luZyB3cm9uZyBJIGVuZGVkIHVwCisgICAgICAg
IGNsZWFuaW5nIHVwIG91ciBuZXdsaW5lIHVzYWdlIGluIER1bXBSZW5kZXJUcmVlIGEgbGl0dGxl
LiAgTW92ZWQKKyAgICAgICAgdHdvIGVycm9yIG1lc3NhZ2VzIGZyb20gc3Rkb3V0IHRvIHN0ZGVy
ciwgYW5kIGZpeGVkIGEgbGl0dGxlIGNvZGUgaW5kZW50L3doaXRlc3BhY2UuCisKKyAgICAgICAg
SSBhbHNvIGZpeGVkIFNlcnZlclByb2Nlc3MgdG8gdXNlICJkZWFkbGluZSIgZXZlcnl3aGVyZSBp
bnN0ZWFkIG9mIHRpbWVvdXQKKyAgICAgICAgcGVyIEFkYW0ncyByZXF1ZXN0IGluIHRoZSBvcmln
aW5hbCBidWcuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNw
cDoKKyAgICAgICAgKGR1bXBXZWJWaWV3QXNQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHA6CisgICAgICAgICht
YWluKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW06Cisg
ICAgICAgIChkdW1wKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3Vw
cG9ydE1hYy5tbToKKyAgICAgICAgKHJlc3RvcmVNYWluRGlzcGxheUNvbG9yUHJvZmlsZSk6Cisg
ICAgICAgIChzZXR1cE1haW5EaXNwbGF5Q29sb3JQcm9maWxlKToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3VuaXR0ZXN0LnB5Ogor
CiAyMDExLTEwLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBVbnJldmlld2VkLiBBZGRpbmcgbXlzZWxmIHRvIHdhdGNobGlzdHMuCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9QaXhlbER1bXBTdXBwb3J0LmNwcCBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCmluZGV4IDI0ZmJmNGI0ZmE4OTg5MzYy
ODRiMzQ1YjZlNjJjMjkyNDYxNjk4NmUuLmVlMzhjMjM1Y2M0YzE1YjA1NTM2MmRkOThjY2Q3ZDM1
ZGNmNzcwNTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBv
cnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1BpeGVsRHVtcFN1cHBvcnQuY3BwCkBA
IC01NywyMSArNTcsMjEgQEAgdm9pZCBkdW1wV2ViVmlld0FzUGl4ZWxzQW5kQ29tcGFyZVdpdGhF
eHBlY3RlZChjb25zdCBzdGQ6OnN0cmluZyYgZXhwZWN0ZWRIYXNoKQogICAgIC8vIENvbXB1dGUg
dGhlIGhhc2ggb2YgdGhlIGJpdG1hcCBjb250ZXh0IHBpeGVscwogICAgIGNoYXIgYWN0dWFsSGFz
aFszM107CiAgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JCaXRtYXBDb250ZXh0KGNvbnRleHQu
Z2V0KCksIGFjdHVhbEhhc2gpOwotICAgIHByaW50ZigiXG5BY3R1YWxIYXNoOiAlc1xuIiwgYWN0
dWFsSGFzaCk7Ci0gICAgCisgICAgcHJpbnRmKCJcbkFjdHVhbEhhc2g6ICVzXG4iLCBhY3R1YWxI
YXNoKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9yIHRoZSBsZWFkaW5nIG5ld2xpbmUuCisKICAgICAv
LyBDaGVjayB0aGUgY29tcHV0ZWQgaGFzaCBhZ2FpbnN0IHRoZSBleHBlY3RlZCBvbmUgYW5kIGR1
bXAgaW1hZ2Ugb24gbWlzbWF0Y2gKICAgICBib29sIGR1bXBJbWFnZSA9IHRydWU7CiAgICAgaWYg
KGV4cGVjdGVkSGFzaC5sZW5ndGgoKSA+IDApIHsKICAgICAgICAgQVNTRVJUKGV4cGVjdGVkSGFz
aC5sZW5ndGgoKSA9PSAzMik7CisKKyAgICAgICAgcHJpbnRmKCJcbkV4cGVjdGVkSGFzaDogJXNc
biIsIGV4cGVjdGVkSGFzaC5jX3N0cigpKTsgLy8gRklYTUU6IE5vIG5lZWQgZm9yIHRoZSBsZWFk
aW5nIG5ld2xpbmUuCiAgICAgICAgIAotICAgICAgICBwcmludGYoIlxuRXhwZWN0ZWRIYXNoOiAl
c1xuIiwgZXhwZWN0ZWRIYXNoLmNfc3RyKCkpOwotICAgICAgICAKLSAgICAgICAgaWYgKGV4cGVj
dGVkSGFzaCA9PSBhY3R1YWxIYXNoKSAgICAgLy8gRklYTUU6IGRvIGNhc2UgaW5zZW5zaXRpdmUg
Y29tcGFyZQorICAgICAgICBpZiAoZXhwZWN0ZWRIYXNoID09IGFjdHVhbEhhc2gpIC8vIEZJWE1F
OiBkbyBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmUKICAgICAgICAgICAgIGR1bXBJbWFnZSA9IGZh
bHNlOwogICAgIH0KLSAgICAKKwogICAgIGlmIChkdW1wSW1hZ2UpCi0gICAgICBkdW1wQml0bWFw
KGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOworICAgICAgICBkdW1wQml0bWFwKGNvbnRleHQu
Z2V0KCksIGFjdHVhbEhhc2gpOwogfQogCiBzdGF0aWMgdm9pZCBhcHBlbmRJbnRUb1ZlY3Rvcih1
bnNpZ25lZCBudW1iZXIsIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYgdmVjdG9yKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2cvSW1hZ2VEaWZmQ0cuY3BwCmluZGV4IGI0ZjQzMmY4YTE1N2M4MTkxYTQ5MGJh
OTk5MTIxZWEzMzRlN2M2YWMuLjA3ZTUxMTMwYzc3MDg0NjEyYTliNTlmNjc1YWFlMzI1M2MxZTAz
ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2NnL0ltYWdlRGlmZkNHLmNwcAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jZy9JbWFnZURpZmZDRy5jcHAKQEAgLTIxMSwxMyAr
MjExLDEzIEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAg
ICAgICBlbHNlIGlmIChpbWFnZVNpemUgPiAwICYmICFiYXNlbGluZUltYWdlKQogICAgICAgICAg
ICAgICAgIGJhc2VsaW5lSW1hZ2UgPSBjcmVhdGVJbWFnZUZyb21TdGRpbihpbWFnZVNpemUpOwog
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZwdXRzKCJlcnJvciwgaW1hZ2Ugc2l6
ZSBtdXN0IGJlIHNwZWNpZmllZC5cbiIsIHN0ZG91dCk7CisgICAgICAgICAgICAgICAgZnB1dHMo
ImVycm9yLCBpbWFnZSBzaXplIG11c3QgYmUgc3BlY2lmaWVkLlxuIiwgc3RkZXJyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmIChhY3R1YWxJbWFnZSAmJiBiYXNlbGluZUltYWdlKSB7CiAgICAg
ICAgICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4gZGlmZkltYWdlOwogICAgICAgICAgICAgZmxv
YXQgZGlmZmVyZW5jZSA9IDEwMC4wZjsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAgICBpZiAo
KENHSW1hZ2VHZXRXaWR0aChhY3R1YWxJbWFnZS5nZXQoKSkgPT0gQ0dJbWFnZUdldFdpZHRoKGJh
c2VsaW5lSW1hZ2UuZ2V0KCkpKSAmJiAoQ0dJbWFnZUdldEhlaWdodChhY3R1YWxJbWFnZS5nZXQo
KSkgPT0gQ0dJbWFnZUdldEhlaWdodChiYXNlbGluZUltYWdlLmdldCgpKSkgJiYgKGltYWdlSGFz
QWxwaGEoYWN0dWFsSW1hZ2UuZ2V0KCkpID09IGltYWdlSGFzQWxwaGEoYmFzZWxpbmVJbWFnZS5n
ZXQoKSkpKSB7CiAgICAgICAgICAgICAgICAgZGlmZkltYWdlID0gY3JlYXRlRGlmZmVyZW5jZUlt
YWdlKGFjdHVhbEltYWdlLmdldCgpLCBiYXNlbGluZUltYWdlLmdldCgpLCBkaWZmZXJlbmNlKTsg
Ly8gZGlmZmVyZW5jZSBpcyBwYXNzZWQgYnkgcmVmZXJlbmNlCiAgICAgICAgICAgICAgICAgaWYg
KGRpZmZlcmVuY2UgPD0gdG9sZXJhbmNlKQpAQCAtMjI4LDcgKzIyOCw3IEBAIGludCBtYWluKGlu
dCBhcmdjLCBjb25zdCBjaGFyKiBhcmd2W10pCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgZnB1dHMoImVycm9yLCB0ZXN0IGFuZCByZWZlcmVu
Y2UgaW1hZ2UgaGF2ZSBkaWZmZXJlbnQgcHJvcGVydGllcy5cbiIsIHN0ZGVycik7Ci0gICAgICAg
ICAgICAgICAgCisKICAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlID4gMC4wZikgewogICAgICAg
ICAgICAgICAgIGlmIChkaWZmSW1hZ2UpIHsKICAgICAgICAgICAgICAgICAgICAgUmV0YWluUHRy
PENGTXV0YWJsZURhdGFSZWY+IGltYWdlRGF0YShBZG9wdENGLCBDRkRhdGFDcmVhdGVNdXRhYmxl
KDAsIDApKTsKQEAgLTIzOCw3ICsyMzgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hh
ciogYXJndltdKQogICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNvbnRlbnQtTGVuZ3RoOiAl
bHVcbiIsIENGRGF0YUdldExlbmd0aChpbWFnZURhdGEuZ2V0KCkpKTsKICAgICAgICAgICAgICAg
ICAgICAgZndyaXRlKENGRGF0YUdldEJ5dGVQdHIoaW1hZ2VEYXRhLmdldCgpKSwgMSwgQ0ZEYXRh
R2V0TGVuZ3RoKGltYWdlRGF0YS5nZXQoKSksIHN0ZG91dCk7CiAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgIAorCiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZm
OiAlMDEuMmYlJSBmYWlsZWRcbiIsIGRpZmZlcmVuY2UpOwogICAgICAgICAgICAgfSBlbHNlCiAg
ICAgICAgICAgICAgICAgZnByaW50ZihzdGRvdXQsICJkaWZmOiAlMDEuMmYlJSBwYXNzZWRcbiIs
IGRpZmZlcmVuY2UpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBSZW5kZXJUcmVlLm1t
CmluZGV4IDVlNzY0OTVlZjRmMGQ3ZGE3ZTJmMDg2YjZhYzMwYzY5NTBjYTc4MDMuLmZmODhiNTY3
NzFhZWQ4OGVlZjFiMzcyNDllOTQ4ODQzYWU2YzliODYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9tYWMvRHVtcFJlbmRlclRyZWUubW0KQEAgLTEwODMsOCArMTA4Myw4IEBAIHZvaWQgZHVtcCgp
CiAgICAgICAgIHByaW50ZigiQ29udGVudC1UeXBlOiAlc1xuIiwgW3Jlc3VsdE1pbWVUeXBlIFVU
RjhTdHJpbmddKTsKIAogICAgICAgICBpZiAoZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wQXNB
dWRpbygpKQotICAgICAgICAgICAgcHJpbnRmKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBi
YXNlNjRcbiIpOyAgICAgICAgICAgIAotICAgICAgICAKKyAgICAgICAgICAgIHByaW50ZigiQ29u
dGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XG4iKTsKKwogICAgICAgICBpZiAocmVzdWx0
RGF0YSkgewogICAgICAgICAgICAgZndyaXRlKFtyZXN1bHREYXRhIGJ5dGVzXSwgMSwgW3Jlc3Vs
dERhdGEgbGVuZ3RoXSwgc3Rkb3V0KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvbWFjL1BpeGVsRHVtcFN1cHBvcnRNYWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
UGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQppbmRleCA3NGJhOTU3MzQ1MjE3NTI4N2NkNDk4ZmE1NDky
ZThiODgyYWY1NzEwLi4zZDZmYmRkNTk2ZjIwOWU3YWU4YjhiNzk3ZDE0YTZlNDYyMTIyM2ZmIDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5t
bQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvUGl4ZWxEdW1wU3VwcG9ydE1hYy5tbQpA
QCAtNjIsNyArNjIsNyBAQCB2b2lkIHJlc3RvcmVNYWluRGlzcGxheUNvbG9yUHJvZmlsZShpbnQg
aWdub3JlZCkKICAgICAgICAgY29uc3QgQ01EZXZpY2VTY29wZSBzY29wZSA9IHsga0NGUHJlZmVy
ZW5jZXNDdXJyZW50VXNlciwga0NGUHJlZmVyZW5jZXNDdXJyZW50SG9zdCB9OwogICAgICAgICBp
bnQgZXJyb3IgPSBDTVNldERldmljZVByb2ZpbGUoY21EaXNwbGF5RGV2aWNlQ2xhc3MsIChDTURl
dmljZUlEKWtDR0RpcmVjdE1haW5EaXNwbGF5LCAmc2NvcGUsIGNtRGVmYXVsdFByb2ZpbGVJRCwg
JnNJbml0aWFsUHJvZmlsZUxvY2F0aW9uKTsKICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAg
ICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmVzdG9yZSBpbml0aWFsIGNvbG9yIHByb2Zp
bGUgZm9yIG1haW4gZGlzcGxheSEgT3BlbiBTeXN0ZW0gUHJlZmVyZW5jZXMgPiBEaXNwbGF5cyA+
IENvbG9yIGFuZCBtYW51YWxseSByZS1zZWxlY3QgdGhlIHByb2ZpbGUuICAoRXJyb3I6ICVpKSIs
IGVycm9yKTsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFpbGVkIHRvIHJlc3RvcmUg
aW5pdGlhbCBjb2xvciBwcm9maWxlIGZvciBtYWluIGRpc3BsYXkhIE9wZW4gU3lzdGVtIFByZWZl
cmVuY2VzID4gRGlzcGxheXMgPiBDb2xvciBhbmQgbWFudWFsbHkgcmUtc2VsZWN0IHRoZSBwcm9m
aWxlLiAgKEVycm9yOiAlaSlcbiIsIGVycm9yKTsKICAgICAgICAgc0luaXRpYWxQcm9maWxlTG9j
YXRpb24ubG9jVHlwZSA9IGNtTm9Qcm9maWxlQmFzZTsKICAgICB9CiB9CkBAIC04MCw3ICs4MCw3
IEBAIHZvaWQgc2V0dXBNYWluRGlzcGxheUNvbG9yUHJvZmlsZSgpCiAgICAgICAgIENNQ2xvc2VQ
cm9maWxlKHByb2ZpbGUpOwogICAgIH0KICAgICBpZiAoZXJyb3IpIHsKLSAgICAgICAgZnByaW50
ZihzdGRlcnIsICJGYWlsZWQgdG8gcmV0cmlldmUgY3VycmVudCBjb2xvciBwcm9maWxlIGZvciBt
YWluIGRpc3BsYXksIHRodXMgaXQgd29uJ3QgYmUgY2hhbmdlZC4gIE1hbnkgcGl4ZWwgdGVzdHMg
bWF5IGZhaWwgYXMgYSByZXN1bHQuICAoRXJyb3I6ICVpKSIsIGVycm9yKTsKKyAgICAgICAgZnBy
aW50ZihzdGRlcnIsICJGYWlsZWQgdG8gcmV0cmlldmUgY3VycmVudCBjb2xvciBwcm9maWxlIGZv
ciBtYWluIGRpc3BsYXksIHRodXMgaXQgd29uJ3QgYmUgY2hhbmdlZC4gIE1hbnkgcGl4ZWwgdGVz
dHMgbWF5IGZhaWwgYXMgYSByZXN1bHQuICAoRXJyb3I6ICVpKVxuIiwgZXJyb3IpOwogICAgICAg
ICBzSW5pdGlhbFByb2ZpbGVMb2NhdGlvbi5sb2NUeXBlID0gY21Ob1Byb2ZpbGVCYXNlOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIHNldHVwTWFpbkRpc3Bs
YXlDb2xvclByb2ZpbGUoKQogICAgIHN0cmNweShsb2NhdGlvbi51LnBhdGhMb2MucGF0aCwgUFJP
RklMRV9QQVRIKTsKICAgICBlcnJvciA9IENNU2V0RGV2aWNlUHJvZmlsZShjbURpc3BsYXlEZXZp
Y2VDbGFzcywgKENNRGV2aWNlSUQpa0NHRGlyZWN0TWFpbkRpc3BsYXksICZzY29wZSwgY21EZWZh
dWx0UHJvZmlsZUlELCAmbG9jYXRpb24pOwogICAgIGlmIChlcnJvcikgewotICAgICAgICBmcHJp
bnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZXQgY29sb3IgcHJvZmlsZSBmb3IgbWFpbiBkaXNwbGF5
ISAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJlc3VsdC4gIChFcnJvcjogJWkpIiwg
ZXJyb3IpOworICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkZhaWxlZCB0byBzZXQgY29sb3IgcHJv
ZmlsZSBmb3IgbWFpbiBkaXNwbGF5ISAgTWFueSBwaXhlbCB0ZXN0cyBtYXkgZmFpbCBhcyBhIHJl
c3VsdC4gIChFcnJvcjogJWkpXG4iLCBlcnJvcik7CiAgICAgICAgIHNJbml0aWFsUHJvZmlsZUxv
Y2F0aW9uLmxvY1R5cGUgPSBjbU5vUHJvZmlsZUJhc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Nl
cnZlcl9wcm9jZXNzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9zZXJ2ZXJfcHJvY2Vzcy5weQppbmRleCA5ZjgyZjQyMDViZGZmYzVjMzU0MWJlOGYwM2FjZGMw
M2Y2YzEwZTU4Li41MjZjMWYzNjJiMmZhZmZhMGY2NDY1NzZjMDdiYWE4NmNlZDIzNTU3IDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9w
cm9jZXNzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
c2VydmVyX3Byb2Nlc3MucHkKQEAgLTQ4LDcgKzQ4LDcgQEAgX2xvZyA9IGxvZ2dpbmcuZ2V0TG9n
Z2VyKF9fbmFtZV9fKQogY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAiIiJUaGlzIGNsYXNzIHBy
b3ZpZGVzIGEgd3JhcHBlciBhcm91bmQgYSBzdWJwcm9jZXNzIHRoYXQKICAgICBpbXBsZW1lbnRz
IGEgc2ltcGxlIHJlcXVlc3QvcmVzcG9uc2UgdXNhZ2UgbW9kZWwuIFRoZSBwcmltYXJ5IGJlbmVm
aXQKLSAgICBpcyB0aGF0IHJlYWRpbmcgcmVzcG9uc2VzIHRha2VzIGEgdGltZW91dCwgc28gdGhh
dCB3ZSBkb24ndCBldmVyIGJsb2NrCisgICAgaXMgdGhhdCByZWFkaW5nIHJlc3BvbnNlcyB0YWtl
cyBhIGRlYWRsaW5lLCBzbyB0aGF0IHdlIGRvbid0IGV2ZXIgYmxvY2sKICAgICBpbmRlZmluaXRl
bHkuIFRoZSBjbGFzcyBhbHNvIGhhbmRsZXMgdHJhbnNwYXJlbnRseSByZXN0YXJ0aW5nIHByb2Nl
c3NlcwogICAgIGFzIG5lY2Vzc2FyeSB0byBrZWVwIGlzc3VpbmcgY29tbWFuZHMuIiIiCiAKQEAg
LTExOCwxMyArMTE4LDEzIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcHJvYy5wb2xsKCkKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiB3cml0
ZShzZWxmLCBpbnB1dCk6CisgICAgZGVmIHdyaXRlKHNlbGYsIGJ5dGVzKToKICAgICAgICAgIiIi
V3JpdGUgYSByZXF1ZXN0IHRvIHRoZSBzdWJwcm9jZXNzLiBUaGUgc3VicHJvY2VzcyBpcyAocmUt
KXN0YXJ0KCknZWQKICAgICAgICAgaWYgaXMgbm90IGFscmVhZHkgcnVubmluZy4iIiIKICAgICAg
ICAgaWYgbm90IHNlbGYuX3Byb2M6CiAgICAgICAgICAgICBzZWxmLl9zdGFydCgpCiAgICAgICAg
IHRyeToKLSAgICAgICAgICAgIHNlbGYuX3Byb2Muc3RkaW4ud3JpdGUoaW5wdXQpCisgICAgICAg
ICAgICBzZWxmLl9wcm9jLnN0ZGluLndyaXRlKGJ5dGVzKQogICAgICAgICBleGNlcHQgSU9FcnJv
ciwgZToKICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgICAgICAjIHN0b3AoKSBjYWxs
cyBfcmVzZXQoKSwgc28gd2UgaGF2ZSB0byBzZXQgY3Jhc2hlZCB0byBUcnVlIGFmdGVyIGNhbGxp
bmcgc3RvcCgpLgpAQCAtMTQyLDEzICsxNDIsMTMgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9wb3BfZXJyb3JfYnl0ZXMoaW5kZXhfYWZ0ZXJfbmV3bGlu
ZSkKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiByZWFkX3N0ZG91dF9saW5lKHNlbGYs
IHRpbWVvdXRfc2Vjb25kcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHRpbWVvdXRfc2Vj
b25kcywgc2VsZi5fcG9wX3N0ZG91dF9saW5lX2lmX3JlYWR5KQorICAgIGRlZiByZWFkX3N0ZG91
dF9saW5lKHNlbGYsIGRlYWRsaW5lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWQoZGVhZGxp
bmUsIHNlbGYuX3BvcF9zdGRvdXRfbGluZV9pZl9yZWFkeSkKIAotICAgIGRlZiByZWFkX3N0ZGVy
cl9saW5lKHNlbGYsIHRpbWVvdXRfc2Vjb25kcyk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZWFk
KHRpbWVvdXRfc2Vjb25kcywgc2VsZi5fcG9wX3N0ZGVycl9saW5lX2lmX3JlYWR5KQorICAgIGRl
ZiByZWFkX3N0ZGVycl9saW5lKHNlbGYsIGRlYWRsaW5lKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3JlYWQoZGVhZGxpbmUsIHNlbGYuX3BvcF9zdGRlcnJfbGluZV9pZl9yZWFkeSkKIAotICAgIGRl
ZiByZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoc2VsZiwgdGltZW91dF9zZWNvbmRz
KToKKyAgICBkZWYgcmVhZF9laXRoZXJfc3Rkb3V0X29yX3N0ZGVycl9saW5lKHNlbGYsIGRlYWRs
aW5lKToKICAgICAgICAgZGVmIHJldHJpZXZlX2J5dGVzX2Zyb21fYnVmZmVycygpOgogICAgICAg
ICAgICAgc3Rkb3V0X2xpbmUgPSBzZWxmLl9wb3Bfc3Rkb3V0X2xpbmVfaWZfcmVhZHkoKQogICAg
ICAgICAgICAgaWYgc3Rkb3V0X2xpbmU6CkBAIC0xNTgsMTMgKzE1OCwxMyBAQCBjbGFzcyBTZXJ2
ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lLCBzdGRlcnJfbGluZQogICAg
ICAgICAgICAgcmV0dXJuIE5vbmUgICMgSW5zdHJ1Y3RzIHRoZSBjYWxsZXIgdG8ga2VlcCB3YWl0
aW5nLgogCi0gICAgICAgIHJldHVybl92YWx1ZSA9IHNlbGYuX3JlYWQodGltZW91dF9zZWNvbmRz
LCByZXRyaWV2ZV9ieXRlc19mcm9tX2J1ZmZlcnMpCisgICAgICAgIHJldHVybl92YWx1ZSA9IHNl
bGYuX3JlYWQoZGVhZGxpbmUsIHJldHJpZXZlX2J5dGVzX2Zyb21fYnVmZmVycykKICAgICAgICAg
IyBGSVhNRTogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgYXJvdW5kIHRoZSBmYWN0IHRoYXQgX3Jl
YWQgbm9ybWFsbHkgb25seSByZXR1cm5zIG9uZSB2YWx1ZSwgYnV0IHRoaXMgY2FsbGVyIHdhbnRz
IGl0IHRvIHJldHVybiB0d28uCiAgICAgICAgIGlmIHJldHVybl92YWx1ZSBpcyBOb25lOgogICAg
ICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKICAgICAgICAgcmV0dXJuIHJldHVybl92YWx1ZQog
Ci0gICAgZGVmIHJlYWRfc3Rkb3V0KHNlbGYsIHRpbWVvdXRfc2Vjb25kcywgc2l6ZSk6CisgICAg
ZGVmIHJlYWRfc3Rkb3V0KHNlbGYsIGRlYWRsaW5lLCBzaXplKToKICAgICAgICAgaWYgc2l6ZSA8
PSAwOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignU2VydmVyUHJvY2Vzcy5yZWFkKCkg
Y2FsbGVkIHdpdGggYSBub24tcG9zaXRpdmUgc2l6ZTogJWQgJyAlIHNpemUpCiAKQEAgLTE3Myw3
ICsxNzMsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAgIHJldHVybiBz
ZWxmLl9wb3Bfb3V0cHV0X2J5dGVzKHNpemUpCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogCi0g
ICAgICAgIHJldHVybiBzZWxmLl9yZWFkKHRpbWVvdXRfc2Vjb25kcywgcmV0cmlldmVfYnl0ZXNf
ZnJvbV9zdGRvdXRfYnVmZmVyKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhZChkZWFkbGluZSwg
cmV0cmlldmVfYnl0ZXNfZnJvbV9zdGRvdXRfYnVmZmVyKQogCiAgICAgZGVmIF9jaGVja19mb3Jf
Y3Jhc2goc2VsZik6CiAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpICE9IE5vbmU6CkBAIC0y
MTEsNyArMjExLDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHNlbGYuX3Nh
bXBsZSgpCiAKICAgICBkZWYgX3NwbGl0X3N0cmluZ19hZnRlcl9pbmRleChzZWxmLCBzdHJpbmcs
IGluZGV4KToKLSAgICAgICAgcmV0dXJuIHN0cmluZ1swOmluZGV4XSwgc3RyaW5nW2luZGV4Ol0K
KyAgICAgICAgcmV0dXJuIHN0cmluZ1s6aW5kZXhdLCBzdHJpbmdbaW5kZXg6XQogCiAgICAgZGVm
IF9wb3Bfb3V0cHV0X2J5dGVzKHNlbGYsIGJ5dGVzX2NvdW50KToKICAgICAgICAgb3V0cHV0LCBz
ZWxmLl9vdXRwdXQgPSBzZWxmLl9zcGxpdF9zdHJpbmdfYWZ0ZXJfaW5kZXgoc2VsZi5fb3V0cHV0
LCBieXRlc19jb3VudCkKQEAgLTIyMSwxMSArMjIxLDExIEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6
CiAgICAgICAgIG91dHB1dCwgc2VsZi5fZXJyb3IgPSBzZWxmLl9zcGxpdF9zdHJpbmdfYWZ0ZXJf
aW5kZXgoc2VsZi5fZXJyb3IsIGJ5dGVzX2NvdW50KQogICAgICAgICByZXR1cm4gb3V0cHV0CiAK
LSAgICBkZWYgX3dhaXRfZm9yX2RhdGFfYW5kX3VwZGF0ZV9idWZmZXJzKHNlbGYsIG1zX3RvX3dh
aXQpOgorICAgIGRlZiBfd2FpdF9mb3JfZGF0YV9hbmRfdXBkYXRlX2J1ZmZlcnMoc2VsZiwgZGVh
ZGxpbmUpOgogICAgICAgICBvdXRfZmQgPSBzZWxmLl9wcm9jLnN0ZG91dC5maWxlbm8oKQogICAg
ICAgICBlcnJfZmQgPSBzZWxmLl9wcm9jLnN0ZGVyci5maWxlbm8oKQogICAgICAgICBzZWxlY3Rf
ZmRzID0gKG91dF9mZCwgZXJyX2ZkKQotICAgICAgICByZWFkX2ZkcywgXywgXyA9IHNlbGVjdC5z
ZWxlY3Qoc2VsZWN0X2ZkcywgW10sIHNlbGVjdF9mZHMsIG1zX3RvX3dhaXQpCisgICAgICAgIHJl
YWRfZmRzLCBfLCBfID0gc2VsZWN0LnNlbGVjdChzZWxlY3RfZmRzLCBbXSwgc2VsZWN0X2Zkcywg
ZGVhZGxpbmUgLSB0aW1lLnRpbWUoKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgb3V0
X2ZkIGluIHJlYWRfZmRzOgogICAgICAgICAgICAgICAgIHNlbGYuX291dHB1dCArPSBzZWxmLl9w
cm9jLnN0ZG91dC5yZWFkKCkKQEAgLTI0Niw4ICsyNDYsNyBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNz
OgogICAgICMgVGhpcyByZWFkIGZ1bmN0aW9uIGlzIGEgYml0IG9kZGx5LWRlc2lnbmVkLCBhcyBp
dCBwb2xscyBib3RoIHN0ZG91dCBhbmQgc3RkZXJyLCB5ZXQKICAgICAjIG9ubHkgcmVhZHMvcmV0
dXJucyBmcm9tIG9uZSBvZiB0aGVtIChidWZmZXJpbmcgYm90aCBpbiBsb2NhbCBzZWxmLl9vdXRw
dXQvc2VsZi5fZXJyb3IpLgogICAgICMgSXQgbWlnaHQgYmUgY2xlYW5lciB0byBwYXNzIGluIHRo
ZSBmaWxlIGRlc2NyaXB0b3IgdG8gcG9sbCBpbnN0ZWFkLgotICAgIGRlZiBfcmVhZChzZWxmLCB0
aW1lb3V0LCBmZXRjaF9ieXRlc19mcm9tX2J1ZmZlcnNfY2FsbGJhY2spOgotICAgICAgICBkZWFk
bGluZSA9IHRpbWUudGltZSgpICsgdGltZW91dAorICAgIGRlZiBfcmVhZChzZWxmLCBkZWFkbGlu
ZSwgZmV0Y2hfYnl0ZXNfZnJvbV9idWZmZXJzX2NhbGxiYWNrKToKICAgICAgICAgd2hpbGUgVHJ1
ZToKICAgICAgICAgICAgIGlmIHNlbGYuX2NoZWNrX2Zvcl9hYm9ydChkZWFkbGluZSk6CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIE5vbmUKQEAgLTI1Niw3ICsyNTUsNyBAQCBjbGFzcyBTZXJ2ZXJQ
cm9jZXNzOgogICAgICAgICAgICAgaWYgYnl0ZXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJ5dGVzCiAKLSAgICAgICAgICAgIHNlbGYuX3dhaXRfZm9yX2RhdGFfYW5kX3Vw
ZGF0ZV9idWZmZXJzKGRlYWRsaW5lIC0gdGltZS50aW1lKCkpCisgICAgICAgICAgICBzZWxmLl93
YWl0X2Zvcl9kYXRhX2FuZF91cGRhdGVfYnVmZmVycyhkZWFkbGluZSkKIAogICAgIGRlZiBzdG9w
KHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkKaW5kZXggYTgzYjQ5NmZlMTMx
YzE3Njg0YWYzODhjMDNiOGQwYjk4YjY0NGYxYi4uNDQ2NWNjNWVhZjdjMDU1MjcwOGQzMmU3MGUz
ZTFhNmM3NmZhODY0OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC93ZWJraXQucHkKQEAgLTE3NywzNSArMTc3LDM5IEBAIGNsYXNzIFdlYktpdFBv
cnQoUG9ydCk6CiAgICAgICAgIHJldHVybiBwcm9jZXNzCiAKICAgICBkZWYgX3JlYWRfaW1hZ2Vf
ZGlmZihzZWxmLCBzcCk6Ci0gICAgICAgIHRpbWVvdXQgPSAyLjAKLSAgICAgICAgZGVhZGxpbmUg
PSB0aW1lLnRpbWUoKSArIHRpbWVvdXQKLSAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9zdGRvdXRf
bGluZSh0aW1lb3V0KQorICAgICAgICBkZWFkbGluZSA9IHRpbWUudGltZSgpICsgMi4wCisgICAg
ICAgIG91dHB1dCA9IE5vbmUKICAgICAgICAgb3V0cHV0X2ltYWdlID0gIiIKLSAgICAgICAgZGlm
Zl9wZXJjZW50ID0gMAotICAgICAgICB3aGlsZSBub3Qgc3AudGltZWRfb3V0IGFuZCBub3Qgc3Au
Y3Jhc2hlZCBhbmQgb3V0cHV0OgorCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBv
dXRwdXQgPSBzcC5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQorICAgICAgICAgICAgaWYgc3Au
dGltZWRfb3V0IG9yIHNwLmNyYXNoZWQgb3Igbm90IG91dHB1dDoKKyAgICAgICAgICAgICAgICBi
cmVhaworCisgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnZGlmZicpOiAgIyBUaGlz
IGlzIHRoZSBsYXN0IGxpbmUgSW1hZ2VEaWZmIHByaW50cy4KKyAgICAgICAgICAgICAgICBicmVh
aworCiAgICAgICAgICAgICBpZiBvdXRwdXQuc3RhcnRzd2l0aCgnQ29udGVudC1MZW5ndGgnKToK
ICAgICAgICAgICAgICAgICBtID0gcmUubWF0Y2goJ0NvbnRlbnQtTGVuZ3RoOiAoXGQrKScsIG91
dHB1dCkKICAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IGludChtLmdyb3VwKDEpKQot
ICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBkZWFkbGluZSAtIHRpbWUudGltZSgpCi0gICAgICAg
ICAgICAgICAgb3V0cHV0X2ltYWdlID0gc3AucmVhZF9zdGRvdXQodGltZW91dCwgY29udGVudF9s
ZW5ndGgpCi0gICAgICAgICAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9zdGRvdXRfbGluZSh0aW1l
b3V0KQotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBlbGlmIG91dHB1dC5zdGFy
dHN3aXRoKCdkaWZmJyk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKKyAgICAg
ICAgICAgICAgICBvdXRwdXRfaW1hZ2UgPSBzcC5yZWFkX3N0ZG91dChkZWFkbGluZSwgY29udGVu
dF9sZW5ndGgpCiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gc3AucmVhZF9zdGRvdXRfbGluZShk
ZWFkbGluZSkKKyAgICAgICAgICAgICAgICBicmVhawogCiAgICAgICAgIGlmIHNwLnRpbWVkX291
dDoKICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkltYWdlRGlmZiB0aW1lZCBvdXQiKQogICAgICAg
ICBpZiBzcC5jcmFzaGVkOgogICAgICAgICAgICAgX2xvZy5lcnJvcigiSW1hZ2VEaWZmIGNyYXNo
ZWQiKQorICAgICAgICAjIEZJWE1FOiBUaGVyZSBpcyBubyBuZWVkIHRvIHNodXQgZG93biB0aGUg
SW1hZ2VEaWZmIHNlcnZlciBhZnRlciBldmVyeSBkaWZmLgogICAgICAgICBzcC5zdG9wKCkKLSAg
ICAgICAgaWYgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToKKworICAgICAgICBkaWZmX3BlcmNl
bnQgPSAwCisgICAgICAgIGlmIG91dHB1dCBhbmQgb3V0cHV0LnN0YXJ0c3dpdGgoJ2RpZmYnKToK
ICAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnZGlmZjogKC4rKSUgKHBhc3NlZHxmYWlsZWQpJywg
b3V0cHV0KQogICAgICAgICAgICAgaWYgbS5ncm91cCgyKSA9PSAncGFzc2VkJzoKICAgICAgICAg
ICAgICAgICByZXR1cm4gW05vbmUsIDBdCiAgICAgICAgICAgICBkaWZmX3BlcmNlbnQgPSBmbG9h
dChtLmdyb3VwKDEpKQorCiAgICAgICAgIHJldHVybiAob3V0cHV0X2ltYWdlLCBkaWZmX3BlcmNl
bnQpCiAKICAgICBkZWYgZGVmYXVsdF9yZXN1bHRzX2RpcmVjdG9yeShzZWxmKToKQEAgLTU1MCw2
ICs1NTQsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgICAgIG9yIHNl
bGYuX3JlYWRfaGVhZGVyKGJsb2NrLCBsaW5lLCAnQ29udGVudC1MZW5ndGg6ICcsICdfY29udGVu
dF9sZW5ndGgnLCBpbnQpCiAgICAgICAgICAgICBvciBzZWxmLl9yZWFkX2hlYWRlcihibG9jaywg
bGluZSwgJ0FjdHVhbEhhc2g6ICcsICdjb250ZW50X2hhc2gnKSk6CiAgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgIyBOb3RlLCB3ZSdyZSBub3QgcmVhZGluZyBFeHBlY3RlZEhhc2g6IGhlcmUs
IGJ1dCB3ZSBjb3VsZC4KICAgICAgICAgIyBJZiB0aGUgbGluZSB3YXNuJ3QgYSBoZWFkZXIsIHdl
IGp1c3QgYXBwZW5kIGl0IHRvIHRoZSBjb250ZW50LgogICAgICAgICBibG9jay5jb250ZW50ICs9
IGxpbmUKIApAQCAtNTY2LDE5ICs1NzEsMTcgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6
CiAgICAgICAgICAgICBpZiBvdXRfc2Vlbl9lb2YgYW5kIChzZWxmLmVycl9zZWVuX2VvZiBvciBu
b3Qgd2FpdF9mb3Jfc3RkZXJyX2VvZik6CiAgICAgICAgICAgICAgICAgYnJlYWsKIAotICAgICAg
ICAgICAgaWYgc2VsZi5fc2VydmVyX3Byb2Nlc3MudGltZWRfb3V0IG9yIHNlbGYuX2RldGVjdGVk
X2NyYXNoKCk6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgdGltZW91dCA9
IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLQogICAgICAgICAgICAgaWYgc2VsZi5lcnJfc2Vlbl9l
b2Y6Ci0gICAgICAgICAgICAgICAgb3V0X2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFk
X3N0ZG91dF9saW5lKHRpbWVvdXQpCisgICAgICAgICAgICAgICAgb3V0X2xpbmUgPSBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKQogICAgICAgICAgICAgICAg
IGVycl9saW5lID0gTm9uZQogICAgICAgICAgICAgZWxpZiBvdXRfc2Vlbl9lb2Y6CiAgICAgICAg
ICAgICAgICAgb3V0X2xpbmUgPSBOb25lCi0gICAgICAgICAgICAgICAgZXJyX2xpbmUgPSBzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZGVycl9saW5lKHRpbWVvdXQpCisgICAgICAgICAgICAg
ICAgZXJyX2xpbmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZGVycl9saW5lKGRlYWRs
aW5lKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBvdXRfbGluZSwgZXJyX2xp
bmUgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xp
bmUodGltZW91dCkKKyAgICAgICAgICAgICAgICBvdXRfbGluZSwgZXJyX2xpbmUgPSBzZWxmLl9z
ZXJ2ZXJfcHJvY2Vzcy5yZWFkX2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoZGVhZGxpbmUp
CisKKyAgICAgICAgICAgIGlmIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnRpbWVkX291dCBvciBzZWxm
Ll9kZXRlY3RlZF9jcmFzaCgpOgorICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAg
IGlmIG91dF9saW5lOgogICAgICAgICAgICAgICAgIGFzc2VydCBub3Qgb3V0X3NlZW5fZW9mCkBA
IC01ODgsMTEgKzU5MSwxMyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAg
ICAgICAgICBlcnJfbGluZSwgc2VsZi5lcnJfc2Vlbl9lb2YgPSBzZWxmLl9zdHJpcF9lb2YoZXJy
X2xpbmUpCiAKICAgICAgICAgICAgIGlmIG91dF9saW5lOgorICAgICAgICAgICAgICAgIGFzc2Vy
dCBvdXRfbGluZVstMV0gPT0gIlxuIiwgIk1pc3NpbmcgbmV3bGluZSIKKyAgICAgICAgICAgICAg
ICBjb250ZW50X2xlbmd0aF9iZWZvcmVfaGVhZGVyX2NoZWNrID0gYmxvY2suX2NvbnRlbnRfbGVu
Z3RoCiAgICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19zdGRvdXRfbGluZShibG9jaywgb3V0
X2xpbmUpCiAgICAgICAgICAgICAgICAgIyBGSVhNRTogVW5saWtlIEhUVFAsIERSVCBkdW1wcyB0
aGUgY29udGVudCByaWdodCBhZnRlciBwcmludGluZyBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlci4K
ICAgICAgICAgICAgICAgICAjIERvbid0IHdhaXQgdW50aWwgd2UncmUgZG9uZSB3aXRoIGhlYWRl
cnMsIGp1c3QgcmVhZCB0aGUgYmluYXJ5IGJsb2IgcmlnaHQgbm93LgotICAgICAgICAgICAgICAg
IGlmIGJsb2NrLl9jb250ZW50X2xlbmd0aCBpcyBub3QgTm9uZSBhbmQgbm90IGJsb2NrLmNvbnRl
bnQ6Ci0gICAgICAgICAgICAgICAgICAgIGJsb2NrLmNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSAtIHRpbWUudGltZSgpLCBibG9jay5fY29udGVudF9s
ZW5ndGgpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGhfYmVmb3JlX2hlYWRlcl9j
aGVjayAhPSBibG9jay5fY29udGVudF9sZW5ndGg6CisgICAgICAgICAgICAgICAgICAgIGJsb2Nr
LmNvbnRlbnQgPSBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5yZWFkX3N0ZG91dChkZWFkbGluZSwgYmxv
Y2suX2NvbnRlbnRfbGVuZ3RoKQogCiAgICAgICAgICAgICBpZiBlcnJfbGluZToKICAgICAgICAg
ICAgICAgICBpZiBzZWxmLl9jaGVja19mb3JfZHJpdmVyX2NyYXNoKGVycl9saW5lKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0X3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJr
aXRfdW5pdHRlc3QucHkKaW5kZXggZWNmNjkxMGE4ZWIwNTA3MTBhMjYxZDkxNWIwODAxNjkxY2Rj
YmE5OS4uYTc3YzExMTI0ZmM5ODRmZDE5MWFjMDkxMWNjZjcwNTEzMWViYjk4OSAxMDA3NTUKLS0t
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXRfdW5pdHRl
c3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJr
aXRfdW5pdHRlc3QucHkKQEAgLTIwNSwxMiArMjA1LDE4IEBAIGNsYXNzIE1vY2tTZXJ2ZXJQcm9j
ZXNzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuY3Jhc2hlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYu
bGluZXMgPSBsaW5lcyBvciBbXQogCi0gICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgdGlt
ZW91dCk6CisgICAgZGVmIHJlYWRfc3Rkb3V0X2xpbmUoc2VsZiwgZGVhZGxpbmUpOgogICAgICAg
ICByZXR1cm4gc2VsZi5saW5lcy5wb3AoMCkgKyAiXG4iCiAKLSAgICBkZWYgcmVhZF9laXRoZXJf
c3Rkb3V0X29yX3N0ZGVycl9saW5lKHNlbGYsIHRpbWVvdXQpOgorICAgIGRlZiByZWFkX3N0ZG91
dChzZWxmLCBkZWFkbGluZSwgc2l6ZSk6CisgICAgICAgICMgcmVhZF9zdGRvdXQgZG9lc24ndCBh
Y3R1YWxseSBmdW5jdGlvbiBvbiBsaW5lcywgYnV0IHRoaXMgaXMgc3VmZmljaWVudCBmb3Igb3Vy
IHRlc3RpbmcuCisgICAgICAgIGxpbmUgPSBzZWxmLmxpbmVzLnBvcCgwKQorICAgICAgICBhc3Nl
cnQgbGVuKGxpbmUpID09IHNpemUKKyAgICAgICAgcmV0dXJuIGxpbmUKKworICAgIGRlZiByZWFk
X2VpdGhlcl9zdGRvdXRfb3Jfc3RkZXJyX2xpbmUoc2VsZiwgZGVhZGxpbmUpOgogICAgICAgICAj
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSB0ZXN0cyB3aGljaCBpbnRlcm1peCBzdGRlcnIgYW5kIHN0
ZG91dCBsaW5lcy4KLSAgICAgICAgcmV0dXJuIHNlbGYucmVhZF9zdGRvdXRfbGluZSh0aW1lb3V0
KSwgTm9uZQorICAgICAgICByZXR1cm4gc2VsZi5yZWFkX3N0ZG91dF9saW5lKGRlYWRsaW5lKSwg
Tm9uZQogCiAKIGNsYXNzIFdlYktpdERyaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAt
MjI3LDMgKzIzMywyMCBAQCBjbGFzcyBXZWJLaXREcml2ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50X3R5cGUs
ICdteV90eXBlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5lbmNv
ZGluZywgJ25vbmUnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmNv
bnRlbnRfaGFzaCwgJ2Zvb2JhcicpCisKKyAgICBkZWYgdGVzdF9yZWFkX2JpbmFyeV9ibG9jayhz
ZWxmKToKKyAgICAgICAgcG9ydCA9IFRlc3RXZWJLaXRQb3J0KCkKKyAgICAgICAgZHJpdmVyID0g
V2ViS2l0RHJpdmVyKHBvcnQsIDApCisgICAgICAgIGRyaXZlci5fc2VydmVyX3Byb2Nlc3MgPSBN
b2NrU2VydmVyUHJvY2VzcyhbCisgICAgICAgICAgICAnQWN0dWFsSGFzaDogYWN0dWFsJywKKyAg
ICAgICAgICAgICdFeHBlY3RlZEhhc2g6IGV4cGVjdGVkJywKKyAgICAgICAgICAgICdDb250ZW50
LVR5cGU6IGltYWdlL3BuZycsCisgICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6IDgnLAorICAg
ICAgICAgICAgIjEyMzQ1Njc4IiwKKyAgICAgICAgICAgICIjRU9GIiwKKyAgICAgICAgXSkKKyAg
ICAgICAgY29udGVudF9ibG9jayA9IGRyaXZlci5fcmVhZF9ibG9jaygwKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmNvbnRlbnRfdHlwZSwgJ2ltYWdlL3BuZycpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbnRlbnRfYmxvY2suY29udGVudF9oYXNoLCAnYWN0
dWFsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29udGVudF9ibG9jay5jb250ZW50LCAn
MTIzNDU2NzgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb250ZW50X2Jsb2NrLmRlY29k
ZWRfY29udGVudCwgJzEyMzQ1Njc4JykK
</data>
<flag name="review"
          id="109791"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="109792"
          type_id="3"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>