<?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>76760</bug_id>
          
          <creation_ts>2012-01-20 17:56:25 -0800</creation_ts>
          <short_desc>Chrome 18 fails html5test.com XHR Blob response test</short_desc>
          <delta_ts>2012-03-04 17:55:41 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>40829</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>bugmail</cc>
    
    <cc>dglazkov</cc>
    
    <cc>ericu</cc>
    
    <cc>haraken</cc>
    
    <cc>info</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539967</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-20 17:56:25 -0800</bug_when>
    <thetext>Chrome 18 fails html5test.com XHR Blob response test

This is the test:

testResponseTypeBlob: function(item) {
					if (!window.XMLHttpRequest || !window.Blob) return;
					
					var xhr = new window.XMLHttpRequest();

					if (typeof xhr.responseType == &apos;undefined&apos;) return;
										
					var done = false;

					xhr.onreadystatechange = function() {
						if (this.readyState == 4 &amp;&amp; !done) {
							done = true;
							passed = false;
							
							try {
								passed = !!(this.response &amp;&amp; this.response instanceof Blob);
							} catch(e) {
							}							

							item.stopBackground();
							item.update({
								&apos;passed&apos;: passed
							});
						}
					}
					
					try {
						item.startBackground();
						xhr.open(&quot;GET&quot;, &quot;detect.html&quot;);
						xhr.responseType = &quot;blob&quot;;
						xhr.send();
					} catch (e) {
						item.stopBackground();
					}
				},

i&apos;ve run the test manually in the inspector (while inspecting the main page on html5test.com)

And found that we get xhr.response == null when fetching detect.html.

Unclear why.  It&apos;s also possible the test is wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539968</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-20 17:57:49 -0800</bug_when>
    <thetext>By &quot;run the test manually&quot;, I mean I executed the following in the inspector, while inspecting the main page on that site (so my XHR&apos;s would not be x-domain):


&gt; var xhr = new window.XMLHttpRequest();
undefined
&gt; xhr.open(&quot;GET&quot;, &quot;detect.html&quot;);
						xhr.responseType = &quot;blob&quot;;
						xhr.send();
undefined
&gt; xhr.responseType
&quot;blob&quot;
&gt; xhr.readyState
4
&gt; xhr.response
null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540037</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-20 20:08:20 -0800</bug_when>
    <thetext>See also http://code.google.com/p/chromium/issues/detail?id=52486</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540040</commentid>
    <comment_count>3</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2012-01-20 20:16:23 -0800</bug_when>
    <thetext>As far as I know, responseBlob just isn&apos;t implemented yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540042</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-20 20:45:08 -0800</bug_when>
    <thetext>I was mistaken in relating thsi to the Chromium bug.  This bug is about .response being a Blob, not about the responseBlob accessor.

However, I think you&apos;re right.

It&apos;s enabled:
http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/features.gypi#L101

But not implemented??
http://trac.webkit.org/browser/trunk/Source/WebCore/xml/XMLHttpRequest.cpp#L1033
http://trac.webkit.org/browser/trunk/Source/WebCore/xml/XMLHttpRequest.cpp#L261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540458</commentid>
    <comment_count>5</comment_count>
      <attachid>123535</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-23 03:10:42 -0800</bug_when>
    <thetext>Created attachment 123535
speculative fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540460</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-23 03:11:37 -0800</bug_when>
    <thetext>The AppleMac port disables thsi feature... and the Chromium Mac port is failign to build for me, making this difficult to test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540698</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-23 11:37:29 -0800</bug_when>
    <thetext>I can help you build the chromium-mac port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540976</commentid>
    <comment_count>8</comment_count>
      <attachid>123659</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-23 16:47:43 -0800</bug_when>
    <thetext>Created attachment 123659
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541029</commentid>
    <comment_count>9</comment_count>
      <attachid>123659</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-01-23 17:39:15 -0800</bug_when>
    <thetext>Comment on attachment 123659
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1035
&gt; +    if (m_responseTypeCode == ResponseTypeBlob) {

This is handled a little differently for the ResponseTypeArrayBuffer case
* creation of the array buffer is deferred until the accessor is called
* and after it&apos;s created (which similarly involves copying the data), m_binaryResponseBuilder&apos;s copy of the data is cleared.

I&apos;d vote to make responseBlob handling more like responseArrayBuffer handling, so do this Blob::creation stuff in XMLHttpRequest::responseBlob() instead of in this method. Wdty?

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1042
&gt; +        // a SharedBuffer, even if they don&apos;t get the Blob from the network layer directly.

I&apos;ve got real mixed feelings about implementing it in this way. Developers trying to use this feature for &apos;large&apos; amounts of data will probably not find this so satisfying. The responseArrayBuffer thing is functionally equivalent to this impl. This impl of responseBlob doesn&apos;t actually add value over that.

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:1046
&gt; +        OwnPtr&lt;BlobData&gt; blobData = BlobData::create();

We should probably also set the content type here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541057</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-01-23 18:19:09 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 123659 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123659&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:1035
&gt; &gt; +    if (m_responseTypeCode == ResponseTypeBlob) {
&gt; 
&gt; This is handled a little differently for the ResponseTypeArrayBuffer case
&gt; * creation of the array buffer is deferred until the accessor is called
&gt; * and after it&apos;s created (which similarly involves copying the data), m_binaryResponseBuilder&apos;s copy of the data is cleared.
&gt; 
&gt; I&apos;d vote to make responseBlob handling more like responseArrayBuffer handling, so do this Blob::creation stuff in XMLHttpRequest::responseBlob() instead of in this method. Wdty?

That&apos;s fine.  I can change it to match responseArrayBuffer if you&apos;re OK with this sort of &quot;hacky&quot; solution in general.

&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:1042
&gt; &gt; +        // a SharedBuffer, even if they don&apos;t get the Blob from the network layer directly.
&gt; 
&gt; I&apos;ve got real mixed feelings about implementing it in this way. Developers trying to use this feature for &apos;large&apos; amounts of data will probably not find this so satisfying. The responseArrayBuffer thing is functionally equivalent to this impl. This impl of responseBlob doesn&apos;t actually add value over that.

I agree.  It&apos;s definitely a hack.  I&apos;m not sure how much it matters in the short-term.

There seems to be some interest from developers for this feature, but I&apos;m not sure how many complaints we would have about an implementation with potentially poor performance like this one:
http://stackoverflow.com/questions/8022425/getting-blob-data-from-xhr-request
http://code.google.com/p/chromium/issues/detail?id=52486

&gt; &gt; Source/WebCore/xml/XMLHttpRequest.cpp:1046
&gt; &gt; +        OwnPtr&lt;BlobData&gt; blobData = BlobData::create();
&gt; 
&gt; We should probably also set the content type here.

OK.  I assume that should be: blobData-&gt;setContentType(m_response-&gt;mimeType())?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541157</commentid>
    <comment_count>11</comment_count>
      <attachid>123659</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 00:09:25 -0800</bug_when>
    <thetext>Comment on attachment 123659
Patch

Attachment 123659 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11335291

New failing tests:
fast/files/xhr-response-blob.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541382</commentid>
    <comment_count>12</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-01-24 09:20:12 -0800</bug_when>
    <thetext>&gt; That&apos;s fine.  I can change it to match responseArrayBuffer if you&apos;re OK with this sort of &quot;hacky&quot; solution in general.

sgtm

&gt; OK.  I assume that should be: blobData-&gt;setContentType(m_response-&gt;mimeType())?

How XMLHttpRequest::responseMIMEType() computes its return value looks relevant, except for how it defaults to &quot;text/xml&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547439</commentid>
    <comment_count>13</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 15:35:04 -0800</bug_when>
    <thetext>Sorry for the delay.  Distracted by other patches/obligations.  Have updated the patch and will post shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547443</commentid>
    <comment_count>14</comment_count>
      <attachid>125034</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 15:39:41 -0800</bug_when>
    <thetext>Created attachment 125034
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547445</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 15:40:14 -0800</bug_when>
    <thetext>Updated per Michael&apos;s recommendations.  I&apos;m happy to make further changes/further testing as desired.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547464</commentid>
    <comment_count>16</comment_count>
      <attachid>125034</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-01 16:14:08 -0800</bug_when>
    <thetext>Comment on attachment 125034
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:275
&gt; +    if (!m_responseBlob.get() &amp;&amp; m_binaryResponseBuilder.get() &amp;&amp; m_binaryResponseBuilder-&gt;size() &gt; 0) {

if size() == 0, should this method return a zero-length blob rather than NULL?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547467</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 16:18:31 -0800</bug_when>
    <thetext>I don&apos;t believe that&apos;s possible.  Unless didRecieveData is called in the zero-length response case.  I can construct a test case for that cornercase if necessary.  I suspect that case should be regarded the same as the FIXME about always returning a blob like the spec says.  But I&apos;m unclear if the spec is right there, since then once you set responseType=&apos;blob&apos; .response is never null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547471</commentid>
    <comment_count>18</comment_count>
      <attachid>125034</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 16:24:26 -0800</bug_when>
    <thetext>Comment on attachment 125034
Patch

Attachment 125034 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11389646

New failing tests:
fast/files/xhr-response-blob.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547482</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 16:36:55 -0800</bug_when>
    <thetext>I will rebaseline chromium after landing.  Dealing with the results cascade is neigh impossible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547495</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-02-01 16:59:41 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; I don&apos;t believe that&apos;s possible.  Unless didRecieveData is called in the zero-length response case.  I can construct a test case for that cornercase if necessary.  I suspect that case should be regarded the same as the FIXME about always returning a blob like the spec says.  But I&apos;m unclear if the spec is right there, since then once you set responseType=&apos;blob&apos; .response is never null.


http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-response-attribute
About the .response attribute, looks like the spec says that incremental reading only works when the .responseType attibute is &apos;text&apos;, otherwise, if accessed prior to being DONE you get NULL. We still have type specific .responseXXXX getters, but modulo that difference...

... for the &apos;blob&apos; type

* if accessed prior to DONE --&gt; NULL
* if accessed after DONE --&gt; NON-NULL (an empty blob in zero-length cases or error cases)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547498</commentid>
    <comment_count>21</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-01 17:05:21 -0800</bug_when>
    <thetext>Thank you for the clarification.  I will update the patch to return an empty blob in the after-done, zero-length response case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549664</commentid>
    <comment_count>22</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-05 18:24:43 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #17)
&gt; &gt; I don&apos;t believe that&apos;s possible.  Unless didRecieveData is called in the zero-length response case.  I can construct a test case for that cornercase if necessary.  I suspect that case should be regarded the same as the FIXME about always returning a blob like the spec says.  But I&apos;m unclear if the spec is right there, since then once you set responseType=&apos;blob&apos; .response is never null.
&gt; 
&gt; 
&gt; http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-response-attribute
&gt; About the .response attribute, looks like the spec says that incremental reading only works when the .responseType attibute is &apos;text&apos;, otherwise, if accessed prior to being DONE you get NULL. We still have type specific .responseXXXX getters, but modulo that difference...
&gt; 
&gt; ... for the &apos;blob&apos; type
&gt; 
&gt; * if accessed prior to DONE --&gt; NULL
&gt; * if accessed after DONE --&gt; NON-NULL (an empty blob in zero-length cases or error cases)

I&apos;m confused as to what the blob.response.type should be in the error or empty cases...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549668</commentid>
    <comment_count>23</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-05 18:26:47 -0800</bug_when>
    <thetext>I see.  The type should probably be the empty string:
http://dev.w3.org/2006/webapi/FileAPI/#attributes-blob</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549765</commentid>
    <comment_count>24</comment_count>
      <attachid>125582</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-05 23:39:16 -0800</bug_when>
    <thetext>Created attachment 125582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>549839</commentid>
    <comment_count>25</comment_count>
      <attachid>125582</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 01:48:57 -0800</bug_when>
    <thetext>Comment on attachment 125582
Patch

Attachment 125582 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11434218

New failing tests:
fast/files/xhr-response-blob.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550064</commentid>
    <comment_count>26</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-06 09:35:08 -0800</bug_when>
    <thetext>I will rebaseline cr-linux when this lands.  cr-mac passes for me locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550068</commentid>
    <comment_count>27</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-02-06 09:40:08 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-response-attribute
&gt; About the .response attribute, looks like the spec says that incremental reading only works when the .responseType attibute is &apos;text&apos;, otherwise, if accessed prior to being DONE you get NULL. We still have type specific .responseXXXX getters, but modulo that difference...
&gt; 
&gt; ... for the &apos;blob&apos; type
&gt; 
&gt; * if accessed prior to DONE --&gt; NULL
&gt; * if accessed after DONE --&gt; NON-NULL (an empty blob in zero-length cases or error cases)

I&apos;ve tested all 3 of these cases in my latest test case.  I&apos;m happy to test additional cases if desired.  Just let me know.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566040</commentid>
    <comment_count>28</comment_count>
      <attachid>125582</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 15:41:11 -0800</bug_when>
    <thetext>Comment on attachment 125582
Patch

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

&gt; Source/WebCore/xml/XMLHttpRequest.cpp:283
&gt; +        if (m_binaryResponseBuilder.get()) {

No need for &quot;get()&quot; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566046</commentid>
    <comment_count>29</comment_count>
      <attachid>125582</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-27 15:43:50 -0800</bug_when>
    <thetext>Comment on attachment 125582
Patch

Looks like you&apos;ve addressed all of Michael&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570044</commentid>
    <comment_count>30</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-02 16:57:32 -0800</bug_when>
    <thetext>Committed r109635: &lt;http://trac.webkit.org/changeset/109635&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570064</commentid>
    <comment_count>31</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-02 17:49:17 -0800</bug_when>
    <thetext>Committed r109643: &lt;http://trac.webkit.org/changeset/109643&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570299</commentid>
    <comment_count>32</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-04 16:21:03 -0800</bug_when>
    <thetext>fast/files/xhr-response-blob.html is failing in Chromium/Win and Chromium/Mac:

http://test-results.appspot.com/dashboards/flakiness_dashboard.html#showExpectations=true&amp;tests=fast%2Ffiles%2Fxhr-response-blob.html

Is it OK to rebaseline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570327</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-03-04 17:54:16 -0800</bug_when>
    <thetext>Yes, the mime-type difference was not an intended part of the test.  Feel free to rebaseline, I&apos;ll go about fixing the test to not include this &quot;what mime type does the OS thing &apos;.js&apos; means&quot; part of the test.  It&apos;s unclear to me if the default mime type for .js matters, or if it&apos;s just an expected OS difference.  In any case, it&apos;s not what this test is supposed to be testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570328</commentid>
    <comment_count>34</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-04 17:55:41 -0800</bug_when>
    <thetext>OK, I&apos;ll rebaseline it. Thanks.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123535</attachid>
            <date>2012-01-23 03:10:42 -0800</date>
            <delta_ts>2012-01-23 16:47:39 -0800</delta_ts>
            <desc>speculative fix</desc>
            <filename>bug-76760-20120123031041.patch</filename>
            <type>text/plain</type>
            <size>1958</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NTY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGI3ZDVhYmNmZWU5OGU2
YzRhNzAzNWQzYWJhMGJjYWJlNDlmYTQyMS4uODUyMjY5MzA2Zjg1ZThhYWI0ZmM3YWM1YzNmYjY0
MTU1YTFhYjcwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTIzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRt
bDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogeG1sL1hNTEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKToKKwogMjAxMi0wMS0yMCAgTWFyayBQaWxncmltICA8cGls
Z3JpbUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIGluZGV4ZWRkYiB0byB1c2Ugc3Vw
cGxlbWVudGFsIElETCBmb3IgRE9NV2luZG93CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA2YmU1OGFhY2YxZDY2NzU5OGZlZTI2MDU2MGNkYTdkNTZhN2QyMDBmLi4zYTg2
OTY4NzkyOGI2MDMwY2E5OWFiZWE4OTJiNWFjNDFiYzNkZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKQEAgLTEwMzEsNyArMTAzMSwxNSBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgZG91YmxlKQog
ICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKICNpZiBFTkFCTEUoWEhSX1JF
U1BPTlNFX0JMT0IpCi0gICAgLy8gRklYTUU6IFNldCBtX3Jlc3BvbnNlQmxvYiB0byBzb21ldGhp
bmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgorICAgIGlmIChtX3Jlc3BvbnNl
VHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQmxvYikgeworICAgICAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIG5vdCBuZWVkIHRvIGNvcHkgdGhlIGRhdGEhIFRoZSBibG9iIEFQSXMgYXJlIGFtYXppbmcg
YmFkIGF0IHRoaXMuCisgICAgICAgIFJlZlB0cjxSYXdEYXRhPiByYXdEYXRhID0gUmF3RGF0YTo6
Y3JlYXRlKCk7CisgICAgICAgIGxvbmcgbG9uZyBkYXRhU2l6ZSA9IG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLnNpemUoKTsKKyAgICAgICAgcmF3RGF0YS5tdXRhYmxlRGF0YSgpLmFwcGVuZChtX2Jp
bmFyeVJlc3BvbnNlQnVpbGRlci5kYXRhKCksIGRhdGFTaXplKTsKKyAgICAgICAgUmVmUHRyPEJs
b2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgYmxvYkRhdGEu
YXBwZW5kRGF0YShyYXdEYXRhLCAwLCBkYXRhU2l6ZSk7CisgICAgICAgIG1fcmVzcG9uc2VCbG9i
ID0gQmxvYjo6Y3JlYXRlKGJsb2JEYXRhLCBkYXRhU2l6ZSk7CisgICAgfQogI2VuZGlmCiAKICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVx
dWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIsIG1fcmVzcG9uc2VCdWls
ZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVSTCwgbV9s
YXN0U2VuZExpbmVOdW1iZXIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123659</attachid>
            <date>2012-01-23 16:47:43 -0800</date>
            <delta_ts>2012-02-01 15:39:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76760-20120123164742.patch</filename>
            <type>text/plain</type>
            <size>6999</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzUzNDlkMjVkN2E0Y2Mz
ZWUyYzM3OTY3Y2ZiYjJmMGFkOGVjMzA4Ni4uMzVlMGM5Y2YwNWU3YjM4YTYxYzk3ODQ4M2JkZTFj
NTczMDI2YTU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTIzICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRt
bDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNvZGUgd2FzIGFscmVhZHkgdGhl
cmUsIHRoaXMganVzdCBmaXhlcyB0aGUgRklYTUUKKyAgICAgICAgd2hpY2ggd2FzIGNhdXNpbmcg
dGhpcyBmZWF0dXJlIG5vdCB0byB3b3JrLiAgQ2hyb21pdW0gYWxyZWFkeQorICAgICAgICBoYWQg
dGhpcyAjaWZkZWYgZW5hYmxlZCwgYnV0IG90aGVyIHBvcnRzIChhdCBsZWFzdCBNYWMpIGRvIG5v
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKKwor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIwMTItMDEtMjMgIEFudHRpIEtvaXZp
c3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHQgdG8gZml4IFF0IGJ1aWxk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYWNmMWQ2Njc1
OThmZWUyNjA1NjBjZGE3ZDU2YTdkMjAwZi4uOWI2M2I5NjgwZjlmNWFkMmMzNDdiMWE3MDFiM2Ri
MjMzMWVlZTZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yMyw2
ICsyMyw3IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkJsb2Iu
aCIKKyNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGlj
eS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUgIkRP
TUZvcm1EYXRhLmgiCkBAIC0xMDMxLDcgKzEwMzIsMjEgQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkKICAgICBt
X3Jlc3BvbnNlQnVpbGRlci5zaHJpbmtUb0ZpdCgpOwogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05T
RV9CTE9CKQotICAgIC8vIEZJWE1FOiBTZXQgbV9yZXNwb25zZUJsb2IgdG8gc29tZXRoaW5nIGhl
cmUgaW4gdGhlIFJlc3BvbnNlVHlwZUJsb2IgY2FzZS4KKyAgICBpZiAobV9yZXNwb25zZVR5cGVD
b2RlID09IFJlc3BvbnNlVHlwZUJsb2IpIHsKKyAgICAgICAgLy8gRklYTUU6IFRoaXMgY2F1c2Vz
IHR3byAob3IgbW9yZSkgdW5uZWNlc3NhcnkgY29waWVzIG9mIHRoZSBkYXRhLgorICAgICAgICAv
LyBDaHJvbWl1bSBzdG9yZXMgYmxvYiBkYXRhIGluIHRoZSBicm93c2VyIHByb2Nlc3MsIHNvIHdl
J3JlIHB1bGxpbmcgdGhlIGRhdGEKKyAgICAgICAgLy8gZnJvbSB0aGUgbmV0d29yayBvbmx5IHRv
IGNvcHkgaXQgaW50byB0aGUgcmVuZGVyZXIgdG8gY29weSBpdCBiYWNrIHRvIHRoZSBicm93c2Vy
LgorICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgZ2V0IHRoZSBibG9iL2ZpbGUtaGFuZGxlIGZyb20g
dGhlIFJlc291cmNlUmVzcG9uc2UgZGlyZWN0bHkKKyAgICAgICAgLy8gaW5zdGVhZCBvZiBjb3B5
aW5nIHRoZSBieXRlcy4gRW1iZWRkZXJzIHdobyBzdG9yZSBibG9iIGRhdGEgaW4gdGhlCisgICAg
ICAgIC8vIHNhbWUgcHJvY2VzcyBhcyBXZWJDb3JlIHdvdWxkIGF0IGxlYXN0IHRvIHRlYWNoIEJs
b2JEYXRhIHRvIHRha2UKKyAgICAgICAgLy8gYSBTaGFyZWRCdWZmZXIsIGV2ZW4gaWYgdGhleSBk
b24ndCBnZXQgdGhlIEJsb2IgZnJvbSB0aGUgbmV0d29yayBsYXllciBkaXJlY3RseS4KKyAgICAg
ICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAg
c2l6ZV90IHNpemUgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpOworICAgICAgICBy
YXdEYXRhLT5tdXRhYmxlRGF0YSgpLT5hcHBlbmQobV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPmRh
dGEoKSwgc2l6ZSk7CisgICAgICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0
YTo6Y3JlYXRlKCk7CisgICAgICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKHJhd0RhdGEsIDAsIEJs
b2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpOworICAgICAgICBtX3Jlc3BvbnNlQmxvYiA9IEJsb2I6
OmNyZWF0ZShibG9iRGF0YS5yZWxlYXNlKCksIHNpemUpOworICAgIH0KICNlbmRpZgogCiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVl
c3Qoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBpZGVudGlmaWVyLCBtX3Jlc3BvbnNlQnVpbGRl
ci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSwgbV91cmwsIG1fbGFzdFNlbmRVUkwsIG1fbGFz
dFNlbmRMaW5lTnVtYmVyKTsKQEAgLTExMDMsNyArMTExOCwxMSBAQCB2b2lkIFhNTEh0dHBSZXF1
ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogCiAgICAgaWYg
KHVzZURlY29kZXIpCiAgICAgICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXIt
PmRlY29kZShkYXRhLCBsZW4pKTsKLSAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0g
UmVzcG9uc2VUeXBlQXJyYXlCdWZmZXIpIHsKKyAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNv
ZGUgPT0gUmVzcG9uc2VUeXBlQXJyYXlCdWZmZXIKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JM
T0IpCisgICAgICAgICAgICAgfHwgbV9yZXNwb25zZVR5cGVDb2RlID09IFJlc3BvbnNlVHlwZUJs
b2IKKyNlbmRpZgorICAgICAgICAgICAgICkgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRh
dGEuCiAgICAgICAgIGlmICghbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXIpCiAgICAgICAgICAgICBt
X2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NWU4ZmI2ODgxNjg2MzhkYjNhZjIzMmZkZWU0YmFmZDExNjg5MGQ5Ny4uYzU1N2Y1MjhhYjZkZmM4
NTBkMzM2MDJkOWE4NDI4MDMwYzAyOGE3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAx
LTIzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTgg
ZmFpbHMgaHRtbDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVz
dHMveGhyLXJlc3BvbnNlLWJsb2IuanM6IEFkZGVkLgorICAgICAgICAoeGhyLm9ucmVhZHlzdGF0
ZWNoYW5nZSk6CisgICAgICAgICogZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2IuaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNl
LWJsb2ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wMS0yMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVwZGF0ZSB0aGUgYmFzZWxpbmVzIGZvciBhIG51
bWJlciBvZiB0ZXN0cyB0aGF0IHVzZSBncmFkaWVudHMuICBUaGUgbmV3CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy94aHItcmVzcG9uc2UtYmxvYi5qcyBi
L0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL3hoci1yZXNwb25zZS1ibG9iLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjc0OWQ3YjU1YWRlYWQ0ODczMTlmMGMxOGQ4YmIxNTNhNzFlMzQ2MDcKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy94aHIt
cmVzcG9uc2UtYmxvYi5qcwpAQCAtMCwwICsxLDE3IEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0
IFhIUi5yZXNwb25zZVR5cGUgPSAnYmxvYicgZ2l2ZXMgeW91IGJhY2sgYSBCbG9iLiIpOworCitp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVy
LndhaXRVbnRpbERvbmUoKTsKKwordmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworeGhy
Lm9wZW4oIkdFVCIsICJzY3JpcHQtdGVzdHMveGhyLXJlc3BvbnNlLWJsb2IuanMiKTsKK3hoci5y
ZXNwb25zZVR5cGUgPSAiYmxvYiI7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoInhoci5yZXNwb25z
ZVR5cGUiLCAiYmxvYiIpOworeGhyLnNlbmQoKTsKK3hoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBm
dW5jdGlvbigpIHsKKyAgICBpZiAoeGhyLnJlYWR5U3RhdGUgIT0gNCkKKyAgICAgICAgcmV0dXJu
OworICAgIHNob3VsZEJlVHJ1ZSgieGhyLnJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYiIpOworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmls
ZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxl
cy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzJkMjFkYzc4NmJj
MTVjYmYwYWFmNWIzOWFlNTMyMDc2YmRmZTljMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTEgQEAKK1Rlc3QgdGhhdCBYSFIucmVzcG9uc2VUeXBlID0gJ2Jsb2InIGdpdmVzIHlvdSBiYWNr
IGEgQmxvYi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgeGhyLnJlc3Bv
bnNlVHlwZSBpcyAiYmxvYiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorUEFTUyB4aHIucmVzcG9uc2UgaW5zdGFuY2VvZiBCbG9iIGlzIHRydWUKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjQ4ZTVlYzlhYjg1YzEzMjg4ZDI2YmM5Njg1YTNiZDJjMTdhNzMwY2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0
LXRlc3RzL3hoci1yZXNwb25zZS1ibG9iLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2ZpbGVzL3hoci1yZXNw
b25zZS1ibG9iLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L2Zp
bGVzL3hoci1yZXNwb25zZS1ibG9iLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYTk2M2ZhM2Jh
ZjM3ZGFmYWI3MmZjNzM4NzA1OGIwOWM4YzU3YTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgdGhhdCBYSFIucmVzcG9uc2VUeXBlID0gJ2Jsb2In
IGdpdmVzIHlvdSBiYWNrIGEgQmxvYi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K0ZBSUwgeGhyLnJlc3BvbnNlVHlwZSBzaG91bGQgYmUgYmxvYi4gV2FzIC4KK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRkFJTCB4aHIucmVzcG9uc2Ug
aW5zdGFuY2VvZiBCbG9iIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125034</attachid>
            <date>2012-02-01 15:39:41 -0800</date>
            <delta_ts>2012-02-05 23:39:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76760-20120201153940.patch</filename>
            <type>text/plain</type>
            <size>9124</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzhiNGNhNDljNjgwNThi
OWVhNzQ0ZmUyN2ZiNDc4MzE0YzRmYjY4Yi4uMmYwNzE2MDdiMDM0NzY3ZTI5OTIwM2QyYjcxZmJk
YjBmZjBkNTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTMxICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRt
bDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNvZGUgd2FzIGFscmVhZHkgdGhl
cmUsIHRoaXMganVzdCBmaXhlcyB0aGUgRklYTUUKKyAgICAgICAgd2hpY2ggd2FzIGNhdXNpbmcg
dGhpcyBmZWF0dXJlIG5vdCB0byB3b3JrLiAgQ2hyb21pdW0gYWxyZWFkeQorICAgICAgICBoYWQg
dGhpcyAjaWZkZWYgZW5hYmxlZCwgYnV0IG90aGVyIHBvcnRzIChhdCBsZWFzdCBNYWMpIGRvIG5v
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKKwor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIwMTItMDItMDEgIFJ5b3N1a2UgTml3
YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR2NjIGJ1aWxkIGZpeCBhZnRlciByMTA2
NDgyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmJlNThhYWNmMWQ2
Njc1OThmZWUyNjA1NjBjZGE3ZDU2YTdkMjAwZi4uOTg4YmY1MzZhOTZjMWM1Y2EwOTIyMDMxM2Vm
MTQ4MGVkMDY5NTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0y
Myw2ICsyMyw3IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKIAogI2luY2x1ZGUgIkJs
b2IuaCIKKyNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWN1cml0eVBv
bGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oIgogI2luY2x1ZGUg
IkRPTUZvcm1EYXRhLmgiCkBAIC0yNTksMTIgKzI2MCwzNiBAQCBEb2N1bWVudCogWE1MSHR0cFJl
cXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVjKQogfQogCiAjaWYgRU5BQkxFKFhI
Ul9SRVNQT05TRV9CTE9CKQotQmxvYiogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQmxvYihFeGNl
cHRpb25Db2RlJiBlYykgY29uc3QKK0Jsb2IqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZUJsb2Io
RXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fcmVzcG9uc2VUeXBlQ29kZSAhPSBSZXNw
b25zZVR5cGVCbG9iKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KKyAgICAvLyBGSVhNRTogVGhlIHNwZWMgc2VlbXMgdG8gaW5kaWNh
dGUgdGhhdCB3ZSBzaG91bGQgcmV0dXJuIGFuIGVtcHR5IGJsb2IgaGVyZQorICAgIC8vIGh0dHA6
Ly9kdmNzLnczLm9yZy9oZy94aHIvcmF3LWZpbGUvdGlwL092ZXJ2aWV3Lmh0bWwjcmVzcG9uc2Ut
ZW50aXR5LWJvZHkKKyAgICAvLyBidXQgdGhhdCBkb2Vzbid0IG1hdGNoIHRoZSBvdGhlciByZXNw
b25zZSB0eXBlcy4KKyAgICBpZiAobV9zdGF0ZSAhPSBET05FKQorICAgICAgICByZXR1cm4gMDsK
KworICAgIGlmICghbV9yZXNwb25zZUJsb2IuZ2V0KCkgJiYgbV9iaW5hcnlSZXNwb25zZUJ1aWxk
ZXIuZ2V0KCkgJiYgbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSA+IDApIHsKKyAgICAg
ICAgLy8gRklYTUU6IFRoaXMgY2F1c2VzIHR3byAob3IgbW9yZSkgdW5uZWNlc3NhcnkgY29waWVz
IG9mIHRoZSBkYXRhLgorICAgICAgICAvLyBDaHJvbWl1bSBzdG9yZXMgYmxvYiBkYXRhIGluIHRo
ZSBicm93c2VyIHByb2Nlc3MsIHNvIHdlJ3JlIHB1bGxpbmcgdGhlIGRhdGEKKyAgICAgICAgLy8g
ZnJvbSB0aGUgbmV0d29yayBvbmx5IHRvIGNvcHkgaXQgaW50byB0aGUgcmVuZGVyZXIgdG8gY29w
eSBpdCBiYWNrIHRvIHRoZSBicm93c2VyLgorICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgZ2V0IHRo
ZSBibG9iL2ZpbGUtaGFuZGxlIGZyb20gdGhlIFJlc291cmNlUmVzcG9uc2UgZGlyZWN0bHkKKyAg
ICAgICAgLy8gaW5zdGVhZCBvZiBjb3B5aW5nIHRoZSBieXRlcy4gRW1iZWRkZXJzIHdobyBzdG9y
ZSBibG9iIGRhdGEgaW4gdGhlCisgICAgICAgIC8vIHNhbWUgcHJvY2VzcyBhcyBXZWJDb3JlIHdv
dWxkIGF0IGxlYXN0IHRvIHRlYWNoIEJsb2JEYXRhIHRvIHRha2UKKyAgICAgICAgLy8gYSBTaGFy
ZWRCdWZmZXIsIGV2ZW4gaWYgdGhleSBkb24ndCBnZXQgdGhlIEJsb2IgZnJvbSB0aGUgbmV0d29y
ayBsYXllciBkaXJlY3RseS4KKyAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdE
YXRhOjpjcmVhdGUoKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBtX2JpbmFyeVJlc3BvbnNlQnVp
bGRlci0+c2l6ZSgpOworICAgICAgICByYXdEYXRhLT5tdXRhYmxlRGF0YSgpLT5hcHBlbmQobV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXItPmRhdGEoKSwgc2l6ZSk7CisgICAgICAgIE93blB0cjxCbG9i
RGF0YT4gYmxvYkRhdGEgPSBCbG9iRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIGJsb2JEYXRhLT5h
cHBlbmREYXRhKHJhd0RhdGEsIDAsIEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpOworICAgICAg
ICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9u
c2VNSU1FVHlwZSBkZWZhdWx0cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0Lgor
ICAgICAgICBtX3Jlc3BvbnNlQmxvYiA9IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5yZWxlYXNlKCks
IHNpemUpOworICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci5jbGVhcigpOworICAgIH0K
KwogICAgIHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQoKTsKIH0KICNlbmRpZgpAQCAtMjg0LDEw
ICszMDksNyBAQCBBcnJheUJ1ZmZlciogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQXJyYXlCdWZm
ZXIoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmNs
ZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKSkKLSAg
ICAgICAgcmV0dXJuIG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKTsKLQotICAgIHJldHVybiAw
OworICAgIHJldHVybiBtX3Jlc3BvbnNlQXJyYXlCdWZmZXIuZ2V0KCk7CiB9CiAKIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlwZShjb25zdCBTdHJpbmcmIHJlc3BvbnNlVHlwZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDMwLDEwICsxMDUyLDYgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJsZSkK
IAogICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKLSNpZiBFTkFCTEUoWEhS
X1JFU1BPTlNFX0JMT0IpCi0gICAgLy8gRklYTUU6IFNldCBtX3Jlc3BvbnNlQmxvYiB0byBzb21l
dGhpbmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgotI2VuZGlmCi0KICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVz
dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIsIG1fcmVzcG9uc2VCdWlsZGVy
LnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVSTCwgbV9sYXN0
U2VuZExpbmVOdW1iZXIpOwogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsKQEAgLTEx
MDMsNyArMTEyMSwxMSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogCiAgICAgaWYgKHVzZURlY29kZXIpCiAgICAgICAgIG1f
cmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsKLSAg
ICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQXJyYXlCdWZmZXIp
IHsKKyAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQXJyYXlC
dWZmZXIKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAgICAgICAgICAgfHwgbV9y
ZXNwb25zZVR5cGVDb2RlID09IFJlc3BvbnNlVHlwZUJsb2IKKyNlbmRpZgorICAgICAgICAgICAg
ICkgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCiAgICAgICAgIGlmICghbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIpCiAgICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCmlu
ZGV4IDI2ZWU2NWNlYjc5ZGQ5Y2QxOGZhOGIyNjQ5NmIwYmQ1NmJiNGJiNmYuLjEzNzNmZTdiZmUz
NzUwZmMzYmM4YTA0YmZhMWE3NjRiNGRlYjE1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiByZXNwb25z
ZVhNTChFeGNlcHRpb25Db2RlJik7CiAgICAgRG9jdW1lbnQqIG9wdGlvbmFsUmVzcG9uc2VYTUwo
KSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlRG9jdW1lbnQuZ2V0KCk7IH0KICNpZiBFTkFCTEUo
WEhSX1JFU1BPTlNFX0JMT0IpCi0gICAgQmxvYiogcmVzcG9uc2VCbG9iKEV4Y2VwdGlvbkNvZGUm
KSBjb25zdDsKKyAgICBCbG9iKiByZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwogICAgIEJs
b2IqIG9wdGlvbmFsUmVzcG9uc2VCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUJsb2Iu
Z2V0KCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNmE2ZWQxZjFjYjZlZWUwZDRkNDNhYWE0ZDM4YTUy
ZGM0MmI0NzQzMS4uNTM0NzMxZDg2MjllMGRhZWFiZmQ0ODIyY2NhNzE5OTU4ZWU5Nzc5MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTMxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRtbDV0ZXN0LmNvbSBYSFIgQmxvYiBy
ZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMveGhyLXJlc3BvbnNlLWJsb2IuanM6IEFkZGVk
LgorICAgICAgICAoeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSk6CisgICAgICAgICogZmFzdC9maWxl
cy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZmlsZXMveGhyLXJlc3BvbnNlLWJsb2IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorCiAyMDEyLTAyLTAxICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+
CiAKICAgICAgICAgUmVwbGFjZSBKU0FycmF5IGRlc3RydWN0b3Igd2l0aCBmaW5hbGl6ZXIKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0LXRlc3RzL3hoci1yZXNwb25z
ZS1ibG9iLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMveGhyLXJlc3Bv
bnNlLWJsb2IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjkwYzJkMmFiNmQ2Zjc3MWI2OGJkZGMzZDBiZmQ0MTgy
YTQ4ZmYxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMvc2NyaXB0
LXRlc3RzL3hoci1yZXNwb25zZS1ibG9iLmpzCkBAIC0wLDAgKzEsMTkgQEAKK2Rlc2NyaXB0aW9u
KCJUZXN0IHRoYXQgWEhSLnJlc3BvbnNlVHlwZSA9ICdibG9iJyBnaXZlcyB5b3UgYmFjayBhIEJs
b2IuIik7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1
ZXN0KCk7Cit4aHIub3BlbigiR0VUIiwgInNjcmlwdC10ZXN0cy94aHItcmVzcG9uc2UtYmxvYi5q
cyIpOworeGhyLnJlc3BvbnNlVHlwZSA9ICJibG9iIjsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygi
eGhyLnJlc3BvbnNlVHlwZSIsICJibG9iIik7Cit4aHIuc2VuZCgpOworeGhyLm9ucmVhZHlzdGF0
ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgIGlmICh4aHIucmVhZHlTdGF0ZSAhPSA0KQorICAg
ICAgICByZXR1cm47CisgICAgc2hvdWxkQmVUcnVlKCJ4aHIucmVzcG9uc2UgaW5zdGFuY2VvZiBC
bG9iIik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJ4aHIucmVzcG9uc2UudHlwZSIsICJ0
ZXh0L2phdmFzY3JpcHQiKTsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDEyYjgxMTBlZTNlYmQyMWI4NDYxMWU4MWViZmRiOTEyZmM2ZDI3ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2It
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK1Rlc3QgdGhhdCBYSFIucmVzcG9uc2VUeXBl
ID0gJ2Jsb2InIGdpdmVzIHlvdSBiYWNrIGEgQmxvYi4KKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK0ZBSUwgeGhyLnJlc3BvbnNlVHlwZSBzaG91bGQgYmUgYmxvYi4gV2FzIC4KK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorRkFJTCB4aHIu
cmVzcG9uc2UgaW5zdGFuY2VvZiBCbG9iIHNob3VsZCBiZSB0cnVlLiBXYXMgZmFsc2UuCitGQUlM
IHhoci5yZXNwb25zZS50eXBlIHNob3VsZCBiZSB0ZXh0L2phdmFzY3JpcHQgKG9mIHR5cGUgc3Ry
aW5nKS4gV2FzIHVuZGVmaW5lZCAob2YgdHlwZSB1bmRlZmluZWQpLgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhlNWVjOWFi
ODVjMTMyODhkMjZiYzk2ODVhM2JkMmMxN2E3MzBjYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2IuaHRtbApAQCAtMCwwICsxLDEwIEBA
Cis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMveGhyLXJl
c3BvbnNlLWJsb2IuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxv
Yi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2ZpbGVz
L3hoci1yZXNwb25zZS1ibG9iLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzdkN2U3MDk3NThm
Nzk5MDYxYmNiYjI5MmZlN2UzZjAyNDI4NGIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMiBAQAorVGVzdCB0aGF0IFhIUi5yZXNwb25zZVR5cGUgPSAnYmxv
YicgZ2l2ZXMgeW91IGJhY2sgYSBCbG9iLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworUEFTUyB4aHIucmVzcG9uc2VUeXBlIGlzICJibG9iIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitQQVNTIHhoci5yZXNwb25zZSBpbnN0YW5jZW9m
IEJsb2IgaXMgdHJ1ZQorUEFTUyB4aHIucmVzcG9uc2UudHlwZSBpcyAidGV4dC9qYXZhc2NyaXB0
IgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125582</attachid>
            <date>2012-02-05 23:39:16 -0800</date>
            <delta_ts>2012-02-27 15:43:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76760-20120205233915.patch</filename>
            <type>text/plain</type>
            <size>11464</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NzcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ2OWZkNTg5ZWY4N2M5
ZjVlNzc1ZDBhOWMwNWM2YzkzZjljNWI2Yi4uYzYzOGYwN2ZlZTljNDhjMzk1OTNkNzU1NWQ2Njc1
OTUwZDA5MGNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTMxICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRt
bDV0ZXN0LmNvbSBYSFIgQmxvYiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vc3Qgb2YgdGhlIGNvZGUgd2FzIGFscmVhZHkgdGhl
cmUsIHRoaXMganVzdCBmaXhlcyB0aGUgRklYTUUKKyAgICAgICAgd2hpY2ggd2FzIGNhdXNpbmcg
dGhpcyBmZWF0dXJlIG5vdCB0byB3b3JrLiAgQ2hyb21pdW0gYWxyZWFkeQorICAgICAgICBoYWQg
dGhpcyAjaWZkZWYgZW5hYmxlZCwgYnV0IG90aGVyIHBvcnRzIChhdCBsZWFzdCBNYWMpIGRvIG5v
dC4KKworICAgICAgICBUZXN0OiBmYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKKwor
ICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyk6CisKIDIwMTItMDItMDUgIEFuZHJlYXMgS2xp
bmcgIDxhd2Vzb21la2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSB1bnVzZWQgZmls
ZSBNYXBwZWRBdHRyaWJ1dGVFbnRyeS5oLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAKaW5kZXggNDFmMDYyMWVjNjFmNjBhMmQ3MDM4MzBiZDI1YjNiN2UxZGMyMmRlMi4uY2ViYTQ4
N2FmM2ZhZjgxMTUwYjE4YTIzNWMxYzQ5MjZkYTFiMmY5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1M
SHR0cFJlcXVlc3QuY3BwCkBAIC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3QuaCIKIAogI2luY2x1ZGUgIkJsb2IuaCIKKyNpbmNsdWRlICJCbG9iRGF0YS5oIgogI2luY2x1
ZGUgIkNvbnRlbnRTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIkNyb3NzT3JpZ2luQWNjZXNz
Q29udHJvbC5oIgogI2luY2x1ZGUgIkRPTUZvcm1EYXRhLmgiCkBAIC0yNTksMTIgKzI2MCwzNyBA
QCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1MKEV4Y2VwdGlvbkNvZGUmIGVj
KQogfQogCiAjaWYgRU5BQkxFKFhIUl9SRVNQT05TRV9CTE9CKQotQmxvYiogWE1MSHR0cFJlcXVl
c3Q6OnJlc3BvbnNlQmxvYihFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKK0Jsb2IqIFhNTEh0dHBS
ZXF1ZXN0OjpyZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKG1fcmVz
cG9uc2VUeXBlQ29kZSAhPSBSZXNwb25zZVR5cGVCbG9iKSB7CiAgICAgICAgIGVjID0gSU5WQUxJ
RF9TVEFURV9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICAvLyBXZSBhbHdheXMg
cmV0dXJuIG51bGwgYmVmb3JlIERPTkUuCisgICAgaWYgKG1fc3RhdGUgIT0gRE9ORSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIW1fcmVzcG9uc2VCbG9iLmdldCgpKSB7CisgICAgICAg
IC8vIEZJWE1FOiBUaGlzIGNhdXNlcyB0d28gKG9yIG1vcmUpIHVubmVjZXNzYXJ5IGNvcGllcyBv
ZiB0aGUgZGF0YS4KKyAgICAgICAgLy8gQ2hyb21pdW0gc3RvcmVzIGJsb2IgZGF0YSBpbiB0aGUg
YnJvd3NlciBwcm9jZXNzLCBzbyB3ZSdyZSBwdWxsaW5nIHRoZSBkYXRhCisgICAgICAgIC8vIGZy
b20gdGhlIG5ldHdvcmsgb25seSB0byBjb3B5IGl0IGludG8gdGhlIHJlbmRlcmVyIHRvIGNvcHkg
aXQgYmFjayB0byB0aGUgYnJvd3Nlci4KKyAgICAgICAgLy8gSWRlYWxseSB3ZSdkIGdldCB0aGUg
YmxvYi9maWxlLWhhbmRsZSBmcm9tIHRoZSBSZXNvdXJjZVJlc3BvbnNlIGRpcmVjdGx5CisgICAg
ICAgIC8vIGluc3RlYWQgb2YgY29weWluZyB0aGUgYnl0ZXMuIEVtYmVkZGVycyB3aG8gc3RvcmUg
YmxvYiBkYXRhIGluIHRoZQorICAgICAgICAvLyBzYW1lIHByb2Nlc3MgYXMgV2ViQ29yZSB3b3Vs
ZCBhdCBsZWFzdCB0byB0ZWFjaCBCbG9iRGF0YSB0byB0YWtlCisgICAgICAgIC8vIGEgU2hhcmVk
QnVmZmVyLCBldmVuIGlmIHRoZXkgZG9uJ3QgZ2V0IHRoZSBCbG9iIGZyb20gdGhlIG5ldHdvcmsg
bGF5ZXIgZGlyZWN0bHkuCisgICAgICAgIE93blB0cjxCbG9iRGF0YT4gYmxvYkRhdGEgPSBCbG9i
RGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIC8vIElmIHdlIGVycm9yZWQgb3V0IG9yIGdvdCBubyBk
YXRhLCB3ZSBzdGlsbCByZXR1cm4gYSBibG9iLCBqdXN0IGFuIGVtcHR5IG9uZS4KKyAgICAgICAg
aWYgKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLmdldCgpKSB7CisgICAgICAgICAgICBSZWZQdHI8
UmF3RGF0YT4gcmF3RGF0YSA9IFJhd0RhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgc2l6ZV90
IHNpemUgPSBtX2JpbmFyeVJlc3BvbnNlQnVpbGRlci0+c2l6ZSgpOworICAgICAgICAgICAgcmF3
RGF0YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyLT5kYXRh
KCksIHNpemUpOworICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZERhdGEocmF3RGF0YSwgMCwg
QmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+c2V0Q29u
dGVudFR5cGUocmVzcG9uc2VNSU1FVHlwZSgpKTsgLy8gcmVzcG9uc2VNSU1FVHlwZSBkZWZhdWx0
cyB0byB0ZXh0L3htbCB3aGljaCBtYXkgYmUgaW5jb3JyZWN0LgorICAgICAgICAgICAgbV9iaW5h
cnlSZXNwb25zZUJ1aWxkZXIuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBtX3Jlc3BvbnNl
QmxvYiA9IEJsb2I6OmNyZWF0ZShibG9iRGF0YS5yZWxlYXNlKCksIG1fYmluYXJ5UmVzcG9uc2VC
dWlsZGVyLmdldCgpID8gbV9iaW5hcnlSZXNwb25zZUJ1aWxkZXItPnNpemUoKSA6IDApOworICAg
IH0KKwogICAgIHJldHVybiBtX3Jlc3BvbnNlQmxvYi5nZXQoKTsKIH0KICNlbmRpZgpAQCAtMjg0
LDEwICszMTAsNyBAQCBBcnJheUJ1ZmZlciogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlQXJyYXlC
dWZmZXIoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIG1fYmluYXJ5UmVzcG9uc2VCdWlsZGVy
LmNsZWFyKCk7CiAgICAgfQogCi0gICAgaWYgKG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKSkK
LSAgICAgICAgcmV0dXJuIG1fcmVzcG9uc2VBcnJheUJ1ZmZlci5nZXQoKTsKLQotICAgIHJldHVy
biAwOworICAgIHJldHVybiBtX3Jlc3BvbnNlQXJyYXlCdWZmZXIuZ2V0KCk7CiB9CiAKIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OnNldFJlc3BvbnNlVHlwZShjb25zdCBTdHJpbmcmIHJlc3BvbnNlVHlw
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCkBAIC0xMDMwLDEwICsxMDUzLDYgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGRvdWJs
ZSkKIAogICAgIG1fcmVzcG9uc2VCdWlsZGVyLnNocmlua1RvRml0KCk7CiAKLSNpZiBFTkFCTEUo
WEhSX1JFU1BPTlNFX0JMT0IpCi0gICAgLy8gRklYTUU6IFNldCBtX3Jlc3BvbnNlQmxvYiB0byBz
b21ldGhpbmcgaGVyZSBpbiB0aGUgUmVzcG9uc2VUeXBlQmxvYiBjYXNlLgotI2VuZGlmCi0KICAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVx
dWVzdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGlkZW50aWZpZXIsIG1fcmVzcG9uc2VCdWls
ZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpLCBtX3VybCwgbV9sYXN0U2VuZFVSTCwgbV9s
YXN0U2VuZExpbmVOdW1iZXIpOwogCiAgICAgYm9vbCBoYWRMb2FkZXIgPSBtX2xvYWRlcjsKQEAg
LTExMDMsNyArMTEyMiwxMSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogCiAgICAgaWYgKHVzZURlY29kZXIpCiAgICAgICAg
IG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4pKTsK
LSAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQXJyYXlCdWZm
ZXIpIHsKKyAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQXJy
YXlCdWZmZXIKKyNpZiBFTkFCTEUoWEhSX1JFU1BPTlNFX0JMT0IpCisgICAgICAgICAgICAgfHwg
bV9yZXNwb25zZVR5cGVDb2RlID09IFJlc3BvbnNlVHlwZUJsb2IKKyNlbmRpZgorICAgICAgICAg
ICAgICkgewogICAgICAgICAvLyBCdWZmZXIgYmluYXJ5IGRhdGEuCiAgICAgICAgIGlmICghbV9i
aW5hcnlSZXNwb25zZUJ1aWxkZXIpCiAgICAgICAgICAgICBtX2JpbmFyeVJlc3BvbnNlQnVpbGRl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5o
CmluZGV4IDI2ZWU2NWNlYjc5ZGQ5Y2QxOGZhOGIyNjQ5NmIwYmQ1NmJiNGJiNmYuLjEzNzNmZTdi
ZmUzNzUwZmMzYmM4YTA0YmZhMWE3NjRiNGRlYjE1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5oCkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOgogICAgIERvY3VtZW50KiByZXNw
b25zZVhNTChFeGNlcHRpb25Db2RlJik7CiAgICAgRG9jdW1lbnQqIG9wdGlvbmFsUmVzcG9uc2VY
TUwoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNlRG9jdW1lbnQuZ2V0KCk7IH0KICNpZiBFTkFC
TEUoWEhSX1JFU1BPTlNFX0JMT0IpCi0gICAgQmxvYiogcmVzcG9uc2VCbG9iKEV4Y2VwdGlvbkNv
ZGUmKSBjb25zdDsKKyAgICBCbG9iKiByZXNwb25zZUJsb2IoRXhjZXB0aW9uQ29kZSYpOwogICAg
IEJsb2IqIG9wdGlvbmFsUmVzcG9uc2VCbG9iKCkgY29uc3QgeyByZXR1cm4gbV9yZXNwb25zZUJs
b2IuZ2V0KCk7IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDIxNTVmOWIwNjI1MjJkODk4N2ZiYjNiNDM2
Yjc2NjdkOWJjMmM2OC4uZmM1M2M1YzY0NmJhYzNiYWMyMjliMWVhZmQ4ZjZkMzI0MGZmNWE4ZCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTMxICBFcmljIFNlaWRlbCAgPGVyaWNAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBDaHJvbWUgMTggZmFpbHMgaHRtbDV0ZXN0LmNvbSBYSFIgQmxv
YiByZXNwb25zZSB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03Njc2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmFzdC9maWxlcy9zY3JpcHQtdGVzdHMveGhyLXJlc3BvbnNlLWJsb2IuanM6IEFk
ZGVkLgorICAgICAgICAoeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSk6CisgICAgICAgICogZmFzdC9m
aWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorCiAyMDEyLTAyLTA1ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUmViYXNlbGluZSB4c3MtaW5hY3RpdmUtY2xvc3VyZS5odG1sLiAgVGhpcyB0ZXN0ICJm
YWlscyIgYmVjYXVzZSBvZiBhCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3Nj
cmlwdC10ZXN0cy94aHItcmVzcG9uc2UtYmxvYi5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMv
c2NyaXB0LXRlc3RzL3hoci1yZXNwb25zZS1ibG9iLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFiMDkzZTQ4YTAz
MDI4YTk4MzdkZTc5ZGQzMGNmNDA0YmFiNDg2YzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2ZpbGVzL3NjcmlwdC10ZXN0cy94aHItcmVzcG9uc2UtYmxvYi5qcwpAQCAtMCww
ICsxLDMwIEBACitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IFhIUi5yZXNwb25zZVR5cGUgPSAnYmxv
YicgZ2l2ZXMgeW91IGJhY2sgYSBCbG9iLiIpOworCitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworZnVu
Y3Rpb24gdGVzdEJsb2IoYmxvYlVSTCwgYmxvYlR5cGUsIGRvbmVGdW5jdGlvbikgeworICAgIHdp
bmRvdy54aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3BlbigiR0VUIiwgYmxv
YlVSTCk7CisgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICJibG9iIjsKKyAgICBzaG91bGRCZUVxdWFs
VG9TdHJpbmcoInhoci5yZXNwb25zZVR5cGUiLCAiYmxvYiIpOworICAgIHhoci5zZW5kKCk7Cisg
ICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAoeGhy
LnJlYWR5U3RhdGUgIT0gNCkgeworICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJ4aHIucmVzcG9u
c2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzaG91bGRCZVRy
dWUoInhoci5yZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IiKTsKKyAgICAgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJ4aHIucmVzcG9uc2UudHlwZSIsIGJsb2JUeXBlKTsKKyAgICAgICAgZG9uZUZ1
bmN0aW9uKCk7CisgICAgfQorfQorCit0ZXN0QmxvYigic2NyaXB0LXRlc3RzL3hoci1yZXNwb25z
ZS1ibG9iLmpzIiwgInRleHQvamF2YXNjcmlwdCIsIGZ1bmN0aW9uKCkgeworICAgIHRlc3RCbG9i
KCJyZXNvdXJjZXMvZG9lc19ub3RfZXhpc3QudHh0IiwgIiIsIGZ1bmN0aW9uKCkgeworICAgICAg
ICB0ZXN0QmxvYigicmVzb3VyY2VzL2VtcHR5LWZpbGUiLCAiIiwgZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSkKKyAgICB9KQor
fSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9i
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2It
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM5MjFjY2M0NGIwZjQ0YjAwNzNlMjk2MGJkN2UxZmY2
MDVjOGE4ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2ZpbGVzL3hoci1y
ZXNwb25zZS1ibG9iLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUxIEBACitUZXN0IHRoYXQgWEhS
LnJlc3BvbnNlVHlwZSA9ICdibG9iJyBnaXZlcyB5b3UgYmFjayBhIEJsb2IuCisKK09uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KKworCitGQUlMIHhoci5yZXNwb25zZVR5cGUgc2hvdWxkIGJlIGJs
b2IuIFdhcyAuCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKK0ZBSUwgeGhyLnJlc3BvbnNlIHNob3VsZCBiZSBudWxsIChvZiB0eXBlIG9iamVjdCkuIFdh
cyAgKG9mIHR5cGUgc3RyaW5nKS4KK0ZBSUwgeGhyLnJlc3BvbnNlIHNob3VsZCBiZSBudWxsIChv
ZiB0eXBlIG9iamVjdCkuIFdhcyBkZXNjcmlwdGlvbigiVGVzdCB0aGF0IFhIUi5yZXNwb25zZVR5
cGUgPSAnYmxvYicgZ2l2ZXMgeW91IGJhY2sgYSBCbG9iLiIpOworCitpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUo
KTsKKworZnVuY3Rpb24gdGVzdEJsb2IoYmxvYlVSTCwgYmxvYlR5cGUsIGRvbmVGdW5jdGlvbikg
eworICAgIHdpbmRvdy54aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKKyAgICB4aHIub3Blbigi
R0VUIiwgYmxvYlVSTCk7CisgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICJibG9iIjsKKyAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoInhoci5yZXNwb25zZVR5cGUiLCAiYmxvYiIpOworICAgIHhoci5z
ZW5kKCk7CisgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAoeGhyLnJlYWR5U3RhdGUgIT0gNCkgeworICAgICAgICAgICAgc2hvdWxkQmVOdWxsKCJ4
aHIucmVzcG9uc2UiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBz
aG91bGRCZVRydWUoInhoci5yZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IiKTsKKyAgICAgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCJ4aHIucmVzcG9uc2UudHlwZSIsIGJsb2JUeXBlKTsKKyAgICAg
ICAgZG9uZUZ1bmN0aW9uKCk7CisgICAgfQorfQorCit0ZXN0QmxvYigic2NyaXB0LXRlc3RzL3ho
ci1yZXNwb25zZS1ibG9iLmpzIiwgInRleHQvamF2YXNjcmlwdCIsIGZ1bmN0aW9uKCkgeworICAg
IHRlc3RCbG9iKCJyZXNvdXJjZXMvZG9lc19ub3RfZXhpc3QudHh0IiwgIiIsIGZ1bmN0aW9uKCkg
eworICAgICAgICB0ZXN0QmxvYigicmVzb3VyY2VzL2VtcHR5LWZpbGUiLCAiIiwgZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICAgICAgfSkK
KyAgICB9KQorfSk7CisgKG9mIHR5cGUgc3RyaW5nKS4KK0ZBSUwgeGhyLnJlc3BvbnNlIGluc3Rh
bmNlb2YgQmxvYiBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCB4aHIucmVzcG9uc2Uu
dHlwZSBzaG91bGQgYmUgdGV4dC9qYXZhc2NyaXB0IChvZiB0eXBlIHN0cmluZykuIFdhcyB1bmRl
ZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KK0ZBSUwgeGhyLnJlc3BvbnNlVHlwZSBzaG91bGQg
YmUgYmxvYi4gV2FzIC4KK0ZBSUwgeGhyLnJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYiBzaG91bGQg
YmUgdHJ1ZS4gV2FzIGZhbHNlLgorRkFJTCB4aHIucmVzcG9uc2UudHlwZSBzaG91bGQgYmUgIChv
ZiB0eXBlIHN0cmluZykuIFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KK0ZBSUwg
eGhyLnJlc3BvbnNlVHlwZSBzaG91bGQgYmUgYmxvYi4gV2FzIC4KK0ZBSUwgeGhyLnJlc3BvbnNl
IHNob3VsZCBiZSBudWxsIChvZiB0eXBlIG9iamVjdCkuIFdhcyAgKG9mIHR5cGUgc3RyaW5nKS4K
K0ZBSUwgeGhyLnJlc3BvbnNlIGluc3RhbmNlb2YgQmxvYiBzaG91bGQgYmUgdHJ1ZS4gV2FzIGZh
bHNlLgorRkFJTCB4aHIucmVzcG9uc2UudHlwZSBzaG91bGQgYmUgIChvZiB0eXBlIHN0cmluZyku
IFdhcyB1bmRlZmluZWQgKG9mIHR5cGUgdW5kZWZpbmVkKS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9maWxlcy94aHItcmVzcG9uc2UtYmxvYi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4ZTVlYzlhYjg1YzEz
Mjg4ZDI2YmM5Njg1YTNiZDJjMTdhNzMwY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2ZpbGVzL3hoci1yZXNwb25zZS1ibG9iLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3hoci1yZXNwb25z
ZS1ibG9iLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9maWxlcy94aHIt
cmVzcG9uc2UtYmxvYi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzI2NWY2NTlhOTcwOGM1MTZl
YTAwNGZjYzc4ZGIzMDcxNDRmNGU0YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZmlsZXMveGhyLXJlc3BvbnNlLWJsb2ItZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjEgQEAKK1Rlc3QgdGhhdCBYSFIucmVzcG9uc2VUeXBlID0gJ2Jsb2InIGdp
dmVzIHlvdSBiYWNrIGEgQmxvYi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1MgeGhyLnJlc3BvbnNlVHlwZSBpcyAiYmxvYiIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyB4aHIucmVzcG9uc2UgaXMgbnVsbAorUEFTUyB4
aHIucmVzcG9uc2UgaXMgbnVsbAorUEFTUyB4aHIucmVzcG9uc2UgaW5zdGFuY2VvZiBCbG9iIGlz
IHRydWUKK1BBU1MgeGhyLnJlc3BvbnNlLnR5cGUgaXMgInRleHQvamF2YXNjcmlwdCIKK1BBU1Mg
eGhyLnJlc3BvbnNlVHlwZSBpcyAiYmxvYiIKK1BBU1MgeGhyLnJlc3BvbnNlIGluc3RhbmNlb2Yg
QmxvYiBpcyB0cnVlCitQQVNTIHhoci5yZXNwb25zZS50eXBlIGlzICIiCitQQVNTIHhoci5yZXNw
b25zZVR5cGUgaXMgImJsb2IiCitQQVNTIHhoci5yZXNwb25zZSBpcyBudWxsCitQQVNTIHhoci5y
ZXNwb25zZSBpbnN0YW5jZW9mIEJsb2IgaXMgdHJ1ZQorUEFTUyB4aHIucmVzcG9uc2UudHlwZSBp
cyAiIgorCg==
</data>
<flag name="review"
          id="127113"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="127114"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>