<?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>52085</bug_id>
          
          <creation_ts>2011-01-07 14:56:26 -0800</creation_ts>
          <short_desc>Add Document::setContent()</short_desc>
          <delta_ts>2011-01-11 17:26:28 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>52036</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>331032</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-07 14:56:26 -0800</bug_when>
    <thetext>Add Document::setContent()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331045</commentid>
    <comment_count>1</comment_count>
      <attachid>78280</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-07 15:10:15 -0800</bug_when>
    <thetext>Created attachment 78280
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331320</commentid>
    <comment_count>2</comment_count>
      <attachid>78280</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-08 17:01:57 -0800</bug_when>
    <thetext>Comment on attachment 78280
Patch

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

&gt; WebCore/dom/Document.cpp:1170
&gt; +bool Document::setContent(const Vector&lt;char&gt;&amp; content)

Is it really better to have something that takes a vector rather than a const char*, size_t pair?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331339</commentid>
    <comment_count>3</comment_count>
      <attachid>78336</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-08 17:42:51 -0800</bug_when>
    <thetext>Created attachment 78336
Patch

(In reply to comment #2)
&gt; (From update of attachment 78280 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78280&amp;action=review
&gt; 
&gt; &gt; WebCore/dom/Document.cpp:1170
&gt; &gt; +bool Document::setContent(const Vector&lt;char&gt;&amp; content)
&gt; 
&gt; Is it really better to have something that takes a vector rather than a const char*, size_t pair?

No, Vector as argument is a clear mistake.
I think you meant const char*, int pair? (see http://trac.webkit.org/browser/trunk/Source/WebCore/dom/DocumentParser.h?rev=75314#L49)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>331777</commentid>
    <comment_count>4</comment_count>
      <attachid>78336</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-10 11:44:05 -0800</bug_when>
    <thetext>Comment on attachment 78336
Patch

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

I think this needs one more round.  I like where this is going though!

&gt; Source/WebCore/dom/Document.cpp:1179
&gt; +    return wellFormed();

Is wellFormed what we&apos;d want for non-XML content?  Is this an XML-only method?

&gt; Source/WebCore/dom/Document.cpp:1186
&gt; +    // FIXME: We should pass content directly to the parser insted of decoding it here.
&gt; +    // At the moment only SVGFonts use this method, so the xml mime type is ok for now.
&gt; +    setDecoder(TextResourceDecoder::create(&quot;application/xml&quot;));

Why should we pass it directly to the parser?

It seems it would be better to put this decoding code in the SVGImage code for now, unless you&apos;re about to post a follow-up patch to not decode?

&gt; Source/WebCore/dom/Document.h:353
&gt; +    bool setContent(const char*, int);

Don&apos;t you want size_t here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332008</commentid>
    <comment_count>5</comment_count>
      <attachid>78336</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-10 15:51:20 -0800</bug_when>
    <thetext>Comment on attachment 78336
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:1186
&gt;&gt; +    // FIXME: We should pass content directly to the parser insted of decoding it here.
&gt;&gt; +    // At the moment only SVGFonts use this method, so the xml mime type is ok for now.
&gt;&gt; +    setDecoder(TextResourceDecoder::create(&quot;application/xml&quot;));
&gt; 
&gt; Why should we pass it directly to the parser?
&gt; 
&gt; It seems it would be better to put this decoding code in the SVGImage code for now, unless you&apos;re about to post a follow-up patch to not decode?

It&apos;s confusing that this is only for XML.  I&apos;d expect this method to work for both HTML and XML.  Also, have you looked at how the output of JavaScript URLs gets put into a document?  I think it might benefit from using this API.  You can follow the trail from executeIfJavaScriptURL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332009</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-01-10 15:51:57 -0800</bug_when>
    <thetext>I wish I could upvote this patch as being awesome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332390</commentid>
    <comment_count>7</comment_count>
      <attachid>78542</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 09:19:27 -0800</bug_when>
    <thetext>Created attachment 78542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332402</commentid>
    <comment_count>8</comment_count>
      <attachid>78336</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 09:31:15 -0800</bug_when>
    <thetext>Comment on attachment 78336
Patch

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

&gt;&gt; Source/WebCore/dom/Document.cpp:1179
&gt;&gt; +    return wellFormed();
&gt; 
&gt; Is wellFormed what we&apos;d want for non-XML content?  Is this an XML-only method?

IMHO wellFomed() is what we want. Do you know a better alternative? At the moment it&apos;s used for XML-only, but it feeds the parser, so it can be used for other content too.

&gt;&gt;&gt; Source/WebCore/dom/Document.cpp:1186
&gt;&gt;&gt; +    setDecoder(TextResourceDecoder::create(&quot;application/xml&quot;));
&gt;&gt; 
&gt;&gt; Why should we pass it directly to the parser?
&gt;&gt; 
&gt;&gt; It seems it would be better to put this decoding code in the SVGImage code for now, unless you&apos;re about to post a follow-up patch to not decode?
&gt; 
&gt; It&apos;s confusing that this is only for XML.  I&apos;d expect this method to work for both HTML and XML.  Also, have you looked at how the output of JavaScript URLs gets put into a document?  I think it might benefit from using this API.  You can follow the trail from executeIfJavaScriptURL.

see 52036 (Feed libxml2 with raw data, relying on it to do character set decoding): This will avoid UTF-8-&gt;UTF-16-&gt;UTF-8 convertion.
I only removed the code paths, which triggered the new assertion. I&apos;ll look for methos which might use this when I can set raw data on document. Step by step. :-)

&gt;&gt; Source/WebCore/dom/Document.h:353
&gt;&gt; +    bool setContent(const char*, int);
&gt; 
&gt; Don&apos;t you want size_t here?

see http://trac.webkit.org/browser/trunk/Source/WebCore/dom/DocumentParser.h?rev=75314#L49 (from https://bugs.webkit.org/show_bug.cgi?id=52085#c3 ;-))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332436</commentid>
    <comment_count>9</comment_count>
      <attachid>78547</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 10:37:52 -0800</bug_when>
    <thetext>Created attachment 78547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332495</commentid>
    <comment_count>10</comment_count>
      <attachid>78547</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 11:45:48 -0800</bug_when>
    <thetext>Comment on attachment 78547
Patch

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

&gt; Source/WebCore/dom/Document.cpp:1179
&gt; +    return wellFormed();

I feel like well-formedness has little to do with if the setContent succeeded or not, which is what the bool return from setContent feels like it should be.

It seems the callers should check wellFormed separately.

&gt; Source/WebCore/loader/cache/CachedFont.cpp:144
&gt; +
&gt; +        if (!m_externalSVGDocument-&gt;setContent(decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size()) + decoder-&gt;flush()))
&gt; +            m_externalSVGDocument = 0;

This is wrong.

You got rid of the decoder error detection.  If we don&apos;t have a test for that, we should.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332496</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 11:46:06 -0800</bug_when>
    <thetext>I think the wellFormed() check should be split out and setContent should just return void.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332508</commentid>
    <comment_count>12</comment_count>
      <attachid>78569</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 11:54:19 -0800</bug_when>
    <thetext>Created attachment 78569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332532</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 12:14:29 -0800</bug_when>
    <thetext>Attachment 78569 did not build on chromium:
Build output: http://queues.webkit.org/results/7409120</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332538</commentid>
    <comment_count>14</comment_count>
      <attachid>78576</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 12:19:25 -0800</bug_when>
    <thetext>Created attachment 78576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332539</commentid>
    <comment_count>15</comment_count>
      <attachid>78569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 12:19:48 -0800</bug_when>
    <thetext>Comment on attachment 78569
Patch

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

In general this looks fine.  Looks like it breaks cr-linux though?

&gt; Source/WebCore/loader/cache/CachedFont.cpp:-150
&gt; -        m_externalSVGDocument-&gt;finishParsing();

It&apos;s unclear to me how this change from document-&gt;finishParsing to m_parser-&gt;finish() is going to behave.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332543</commentid>
    <comment_count>16</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-11 12:23:28 -0800</bug_when>
    <thetext>Attachment 78569 did not build on win:
Build output: http://queues.webkit.org/results/7455094</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332544</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 12:25:04 -0800</bug_when>
    <thetext>Attachment 78569 did not build on gtk:
Build output: http://queues.webkit.org/results/7374143</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332545</commentid>
    <comment_count>18</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 12:25:11 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 78569 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78569&amp;action=review
&gt; 
&gt; In general this looks fine.  Looks like it breaks cr-linux though?

missed the bool -&gt; void change in patch :-/

&gt; &gt; Source/WebCore/loader/cache/CachedFont.cpp:-150
&gt; &gt; -        m_externalSVGDocument-&gt;finishParsing();
&gt; 
&gt; It&apos;s unclear to me how this change from document-&gt;finishParsing to m_parser-&gt;finish() is going to behave.

document-&gt;finishParsing does &quot;if (m_parser) m_parser-&gt;finish();&quot;. I think it&apos;s ok, because m_parser can&apos;t be null ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332590</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 13:05:01 -0800</bug_when>
    <thetext>Attachment 78576 did not build on chromium:
Build output: http://queues.webkit.org/results/7434118</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332592</commentid>
    <comment_count>20</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-01-11 13:06:49 -0800</bug_when>
    <thetext>Attachment 78576 did not build on qt:
Build output: http://queues.webkit.org/results/7402134</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332615</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-11 13:52:02 -0800</bug_when>
    <thetext>Attachment 78576 did not build on gtk:
Build output: http://queues.webkit.org/results/7400126</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332621</commentid>
    <comment_count>22</comment_count>
      <attachid>78593</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 13:55:03 -0800</bug_when>
    <thetext>Created attachment 78593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332626</commentid>
    <comment_count>23</comment_count>
      <attachid>78593</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 13:58:32 -0800</bug_when>
    <thetext>Comment on attachment 78593
Patch

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

LGTM.

&gt; Source/WebCore/loader/cache/CachedFont.cpp:143
&gt; +        m_externalSVGDocument-&gt;setContent(decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size()) + decoder-&gt;flush());

It&apos;s unfortunate that this is much less memory efficient now.  We end up doing two (possibly large) allocations for the main data decoding instead of one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332630</commentid>
    <comment_count>24</comment_count>
      <attachid>78593</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-11 14:02:11 -0800</bug_when>
    <thetext>Comment on attachment 78593
Patch

(In reply to comment #23)
&gt; (From update of attachment 78593 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=78593&amp;action=review
&gt; 
&gt; LGTM.

Sorry for so much spam.

&gt; &gt; Source/WebCore/loader/cache/CachedFont.cpp:143
&gt; &gt; +        m_externalSVGDocument-&gt;setContent(decoder-&gt;decode(m_data-&gt;data(), m_data-&gt;size()) + decoder-&gt;flush());
&gt; 
&gt; It&apos;s unfortunate that this is much less memory efficient now.  We end up doing two (possibly large) allocations for the main data decoding instead of one.

IMHO flush() won&apos;t return anything in 99.9%. Usually decode returns all of the decoded data, so we pass the string directly to setContent. flush() will only return a non-empty string when we have &quot;invalid&quot; input enconding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332633</commentid>
    <comment_count>25</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-01-11 14:06:04 -0800</bug_when>
    <thetext>Attachment 78576 did not build on win:
Build output: http://queues.webkit.org/results/7465111</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332818</commentid>
    <comment_count>26</comment_count>
      <attachid>78593</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-11 17:26:19 -0800</bug_when>
    <thetext>Comment on attachment 78593
Patch

Clearing flags on attachment: 78593

Committed r75577: &lt;http://trac.webkit.org/changeset/75577&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332819</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-11 17:26:28 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78280</attachid>
            <date>2011-01-07 15:10:15 -0800</date>
            <delta_ts>2011-01-08 17:42:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110108001012.patch</filename>
            <type>text/plain</type>
            <size>7681</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmQ5ZmM3YjE3NzRhMjBkYWY1ZDQ5M2M0N2ZjMTc5N2MwYTIzMDVlZC4uNTM1NTNiNTBmZmJlNGQ2
Zjg0YWY1NTBmMWM1NDdkMGExNTgyOTU4MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wMS0wNyAgUGF0
cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgRG9jdW1lbnQ6OnNldENvbnRlbnQoKQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTIwODUKKwor
ICAgICAgICBBZGQgYSBtZXRob2QgdG8gRG9jdW1lbnQgdG8gc2V0IHRoZSB3aG9sZSBjb250ZW50
IGF0IG9uY2UuCisgICAgICAgIFRoaXMgcmVtb3ZlcyB0aGUgaGFjayBvZiB0aGUgaW5zZXJ0IG1l
dGhvZCBpbiB0aGUgeG1sIHBhcnNlcgorICAgICAgICBhbmQgaXMgYSBwcmVkZWNlc3NvciB0byBm
ZWVkIHRoZSB4bWwgcGFyc2VyIHdpdGggcmF3IGRhdGEuCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldENvbnRlbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KTogQWRkZWQgQVNT
RVJUX05PVF9SRUFDSEVEKCkuCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEpOiBVc2Ug
c2V0Q29udGVudC4KKyAgICAgICAgKiB4bWwvRE9NUGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKTogRGl0dG8uCisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpyZXNw
b25zZVhNTCk6IERpdHRvLgorICAgICAgICAqIHhtbC9YU0xUUHJvY2Vzc29yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJvbVNvdXJjZSk6IERp
dHRvLgorCiAyMDExLTAxLTA3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcCBiL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1YmZlZTAzNmEzMjhmODZh
YWM3ODA1YWYxNTg3YWY2YWQzNjVjZDIyLi43ZjQwMjFlZmY4ZmY4MGY0NGE5OWE4NmEyZDQyODJj
ODcxYjBiOWJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMTU1LDYgKzExNTUsMjYgQEAgS1VSTCBEb2N1bWVu
dDo6YmFzZVVSSSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFzZVVSTDsKIH0KIAorYm9vbCBEb2N1
bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7CisgICAgcmVtb3ZlQWxs
Q2hpbGRyZW4oKTsKKworICAgIG9wZW4oKTsKKyAgICBtX3BhcnNlci0+YXBwZW5kKGNvbnRlbnQp
OworICAgIG1fcGFyc2VyLT5maW5pc2goKTsKKyAgICBjbG9zZSgpOworCisgICAgcmV0dXJuIHdl
bGxGb3JtZWQoKTsKK30KKworYm9vbCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBWZWN0b3I8
Y2hhcj4mIGNvbnRlbnQpCit7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIGNvbnRlbnQg
ZGlyZWN0bHkgdG8gdGhlIHBhcnNlciBpbnN0ZWQgb2YgZGVjb2RpbmcgaXQgaGVyZS4KKyAgICAv
LyBBdCB0aGUgbW9tZW50IG9ubHkgU1ZHRm9udHMgdXNlIHRoaXMgbWV0aG9kLCBzbyB0aGUgeG1s
IG1pbWUgdHlwZSBpcyBvayBmb3Igbm93LgorICAgIHNldERlY29kZXIoVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94bWwiKSk7CisgICAgcmV0dXJuIHNldENvbnRlbnQo
bV9kZWNvZGVyLT5kZWNvZGUoY29udGVudC5kYXRhKCksIGNvbnRlbnQuc2l6ZSgpKSArIG1fZGVj
b2Rlci0+Zmx1c2goKSk7Cit9CisKIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERP
TSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKIC8vICogbWFraW5nIGl0IHJlY2VpdmUg
YSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8g
KiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBz
ZXBhcmF0ZWx5LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKaW5kZXggN2U3OTY3ZjFiYTlmZjc1NzFkZTk0Zjk3YjQxMzczZDIyZTQy
NTI0Ni4uZDM5NDQzOTkzMDcwMDc5YmRlYmJkODIxZjU0NDE4ZDk4NDE2ZWYwZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBA
IC0zNDgsNiArMzQ4LDkgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDaGFyc2V0KGNvbnN0IFN0
cmluZyYpOwogCisgICAgYm9vbCBzZXRDb250ZW50KGNvbnN0IFN0cmluZyYpOworICAgIGJvb2wg
c2V0Q29udGVudChjb25zdCBWZWN0b3I8Y2hhcj4mKTsKKwogICAgIFN0cmluZyBjb250ZW50TGFu
Z3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYW5ndWFnZTsgfQogICAgIHZvaWQgc2V0
Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2NvbnRlbnRMYW5ndWFnZSA9
IGxhbmc7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3Bw
IGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDY4YzhkZDlhMzI3YmQ3
OTI1MWM0NTg1ZDNkMDA3N2FiOGViZTc1NDQuLmE1ZDNjMDg2NDMxMzRkMTVhZGZiZWNmYTk5OGEy
YmVhYmRjNWJkYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNw
cAorKysgYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTExNiwxMyArMTE2
LDkgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2xlYXJDdXJyZW50Tm9kZVN0YWNrKCkKICAg
ICB9CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKK3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFy
b3VuZCB0aGUgZmFjdCB0aGF0IFhNTEh0dHBSZXF1ZXN0Ci0gICAgLy8gcmVzcG9uc2VYTUwoKSBj
YWxscyBEb2N1bWVudDo6d3JpdGUoKSB3aGljaCBpbiB0dXJuIGNhbGxzIGluc2VydCgpLiBJbgot
ICAgIC8vIEhUTUwsIHRoYXQncyBjb3JyZWN0LCBhcyBpbnNlcnQoKSBpbXBsaWVzIGEgc3luY2hy
b25vdXMgcGFyc2UuICBGb3IgWE1MLAotICAgIC8vIGFsbCBwYXJzaW5nIGlzIHN5bmNocm9ub3Vz
IGJ1dCBkb2N1bWVudC53cml0ZSBzaG91bGRuJ3QgYmUgc3VwcG9ydGVkLgotICAgIGFwcGVuZChz
b3VyY2UpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCBkNjk2N2JmZDc4MGQ5MTIxYjRiNWZkNDk2Yjg0MDZmZjViNTBh
MGI4Li5mYTQ2MmNkNjBkM2UxMzkyMzJhZmNmMTc4NzdjMzdmZTUxMzA1ZTZhIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRGb250LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZvbnRQ
bGF0Zm9ybURhdGEuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlNoYXJl
ZEJ1ZmZlci5oIgotI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKICNpZmRlZiBTVE9SRV9GT05UX0NVU1RPTV9QTEFURk9STV9EQVRBCkBA
IC0xMzcsMTggKzEzNiw4IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEoKQog
ICAgIEFTU0VSVChtX2lzU1ZHRm9udCk7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQg
JiYgIWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7CiAgICAgICAg
IG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsK
LSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5vcGVuKCk7Ci0KLSAgICAgICAgUmVmUHRy
PFRleHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVh
dGUoImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPndy
aXRlKGRlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKLSAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5mbHVzaCgpKTsKLSAg
ICAgICAgaWYgKGRlY29kZXItPnNhd0Vycm9yKCkpIHsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudC5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQot
ICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPmZpbmlzaFBhcnNpbmcoKTsKLSAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LT5jbG9zZSgpOworICAgICAgICBpZiAoIW1fZXh0ZXJuYWxT
VkdEb2N1bWVudC0+c2V0Q29udGVudChtX2RhdGEtPmJ1ZmZlcigpKSkKKyAgICAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudCA9IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAgYi9XZWJD
b3JlL3htbC9ET01QYXJzZXIuY3BwCmluZGV4IGU2YWEzYjBjMTY5YWJmMjUyMmM3YTBmMzI0NzMw
NjFiYmUyYzMxOGQuLmMwZDE0NmMyODI4NzQ2YzM0OWMyZjcyY2ZiZTZlZWFmZTY1Njg5ZTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS94bWwvRE9N
UGFyc2VyLmNwcApAQCAtMjQsMjAgKzI0LDE1IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50PiBE
T01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgU3RyaW5n
JiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAoIURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVU
eXBlKGNvbnRlbnRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RG9jdW1l
bnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwg
MCwgS1VSTCgpLCBmYWxzZSk7Ci0KLSAgICBkb2MtPm9wZW4oKTsKLSAgICBkb2MtPndyaXRlKHN0
cik7Ci0gICAgZG9jLT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgZG9jLT5jbG9zZSgpOwotICAgICAg
ICAKKyAgICBkb2MtPnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsK
IH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4
IGZjN2ViOWUyZDQ5NTVhMjY5MjUwZTQ5ZGEyYTU5ZjNmZGQxZDhhNDguLmVlZjg0NTBlZThlMGI3
ZmYzNWUzNjBkMmJiNzYxNzc2ZmFhNGU0NzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcAorKysgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI0
NSwxMyArMjQ1LDggQEAgRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNl
cHRpb25Db2RlJiBlYykKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IERvY3VtZW50OjpjcmVhdGUoMCwg
bV91cmwpOwotICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+b3BlbigpOwogICAgICAgICAgICAg
Ly8gRklYTUU6IFNldCBMYXN0LU1vZGlmaWVkLgotICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+
d3JpdGUobV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpOwotICAg
ICAgICAgICAgbV9yZXNwb25zZVhNTC0+ZmluaXNoUGFyc2luZygpOwotICAgICAgICAgICAgbV9y
ZXNwb25zZVhNTC0+Y2xvc2UoKTsKLQotICAgICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlWE1MLT53
ZWxsRm9ybWVkKCkpCisgICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2VYTUwtPnNldENvbnRlbnQo
bV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpKQogICAgICAgICAg
ICAgICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9CiAgICAgICAgIG1fY3JlYXRlZERv
Y3VtZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3Bw
IGIvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggOWI2YTA2NzhiZjYyZDg1NGFi
Mjc3NzY5NGEwM2Q4NDRmZDI0ZjI0Yi4uZmU1ZjQyMGZjNDliYjc4YTBiYzZhMDY2YTZkNGJjZWVl
MTIwOTk0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIv
V2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKQEAgLTg4LDE0ICs4OCwxMSBAQCBQYXNzUmVm
UHRyPERvY3VtZW50PiBYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29u
c3QgU3RyaW5nJiBzb3VyYwogICAgICAgICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0KTsKICAg
ICB9CiAKLSAgICByZXN1bHQtPm9wZW4oKTsKLQogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBl
KTsKICAgICBkZWNvZGVyLT5zZXRFbmNvZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBV
VEY4RW5jb2RpbmcoKSA6IFRleHRFbmNvZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJj
ZURlY29kZXI6OkVuY29kaW5nRnJvbVhNTEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVy
KGRlY29kZXIucmVsZWFzZSgpKTsKIAotICAgIHJlc3VsdC0+d3JpdGUoZG9jdW1lbnRTb3VyY2Up
OwotICAgIHJlc3VsdC0+Y2xvc2UoKTsKKyAgICByZXN1bHQtPnNldENvbnRlbnQoZG9jdW1lbnRT
b3VyY2UpOwogCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78336</attachid>
            <date>2011-01-08 17:42:51 -0800</date>
            <delta_ts>2011-01-11 09:31:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085b.patch</filename>
            <type>text/plain</type>
            <size>7350</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGVjMmY0Li41YmE3NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTEtMDEtMDggIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIERvY3Vt
ZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3VtZW50IHRvIHNl
dCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92ZXMgdGhlIGhh
Y2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAgICAgYW5kIGlz
IGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBkYXRhLgorCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpz
ZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vWE1M
RG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6
Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZvbnQ6OmVuc3Vy
ZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RPTVBhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyk6IERpdHRv
LgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpY
TUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4bWwvWFNMVFBy
b2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpjcmVhdGVEb2N1
bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0wOCAgQmVuamFtaW4gUG91bGFpbiAg
PGJlbmphbWluLnBvdWxhaW5Abm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5l
dGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggZTRiMTEy
OC4uMGQwZGI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0xMTY3LDYgKzExNjcsMjYg
QEAgS1VSTCBEb2N1bWVudDo6YmFzZVVSSSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFzZVVSTDsK
IH0KIAorYm9vbCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCit7
CisgICAgcmVtb3ZlQWxsQ2hpbGRyZW4oKTsKKworICAgIG9wZW4oKTsKKyAgICBtX3BhcnNlci0+
YXBwZW5kKGNvbnRlbnQpOworICAgIG1fcGFyc2VyLT5maW5pc2goKTsKKyAgICBjbG9zZSgpOwor
CisgICAgcmV0dXJuIHdlbGxGb3JtZWQoKTsKK30KKworYm9vbCBEb2N1bWVudDo6c2V0Q29udGVu
dChjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkKK3sKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIHBhc3MgY29udGVudCBkaXJlY3RseSB0byB0aGUgcGFyc2VyIGluc3RlZCBvZiBkZWNvZGlu
ZyBpdCBoZXJlLgorICAgIC8vIEF0IHRoZSBtb21lbnQgb25seSBTVkdGb250cyB1c2UgdGhpcyBt
ZXRob2QsIHNvIHRoZSB4bWwgbWltZSB0eXBlIGlzIG9rIGZvciBub3cuCisgICAgc2V0RGVjb2Rl
cihUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFwcGxpY2F0aW9uL3htbCIpKTsKKyAgICBy
ZXR1cm4gc2V0Q29udGVudChtX2RlY29kZXItPmRlY29kZShieXRlcywgbGVuZ3RoKSArIG1fZGVj
b2Rlci0+Zmx1c2goKSk7Cit9CisKIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERP
TSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJZGVhczoKIC8vICogbWFraW5nIGl0IHJlY2VpdmUg
YSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBub2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8g
KiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhwYWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBz
ZXBhcmF0ZWx5LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmYjFhZTMxLi44YzA4MjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaApAQCAtMzQ5LDYgKzM0OSw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
c2V0Q2hhcnNldChjb25zdCBTdHJpbmcmKTsKIAorICAgIGJvb2wgc2V0Q29udGVudChjb25zdCBT
dHJpbmcmKTsKKyAgICBib29sIHNldENvbnRlbnQoY29uc3QgY2hhciosIGludCk7CisKICAgICBT
dHJpbmcgY29udGVudExhbmd1YWdlKCkgY29uc3QgeyByZXR1cm4gbV9jb250ZW50TGFuZ3VhZ2U7
IH0KICAgICB2b2lkIHNldENvbnRlbnRMYW5ndWFnZShjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9j
b250ZW50TGFuZ3VhZ2UgPSBsYW5nOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCmluZGV4IDY4YzhkZDkuLmE1ZDNjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTE2LDEzICsxMTYsOSBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpjbGVhckN1cnJlbnROb2RlU3RhY2soKQogICAgIH0KIH0KIAotdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBY
TUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCiB7Ci0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgYSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgWE1M
SHR0cFJlcXVlc3QKLSAgICAvLyByZXNwb25zZVhNTCgpIGNhbGxzIERvY3VtZW50Ojp3cml0ZSgp
IHdoaWNoIGluIHR1cm4gY2FsbHMgaW5zZXJ0KCkuIEluCi0gICAgLy8gSFRNTCwgdGhhdCdzIGNv
cnJlY3QsIGFzIGluc2VydCgpIGltcGxpZXMgYSBzeW5jaHJvbm91cyBwYXJzZS4gIEZvciBYTUws
Ci0gICAgLy8gYWxsIHBhcnNpbmcgaXMgc3luY2hyb25vdXMgYnV0IGRvY3VtZW50LndyaXRlIHNo
b3VsZG4ndCBiZSBzdXBwb3J0ZWQuCi0gICAgYXBwZW5kKHNvdXJjZSk7CisgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBT
ZWdtZW50ZWRTdHJpbmcmIHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkRm9udC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9u
dC5jcHAKaW5kZXggZDY5NjdiZi4uOGI4ZGUxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRGb250LmNwcApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1ZGUgIkZvbnRQbGF0
Zm9ybURhdGEuaCIKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1
ZmZlci5oIgotI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKICNpZmRlZiBTVE9SRV9GT05UX0NVU1RPTV9QTEFURk9STV9EQVRBCkBAIC0x
MzcsMTggKzEzNiw4IEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEoKQogICAg
IEFTU0VSVChtX2lzU1ZHRm9udCk7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYg
IWVycm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7CiAgICAgICAgIG1f
ZXh0ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKLSAg
ICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5vcGVuKCk7Ci0KLSAgICAgICAgUmVmUHRyPFRl
eHRSZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUo
ImFwcGxpY2F0aW9uL3htbCIpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPndyaXRl
KGRlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKLSAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5mbHVzaCgpKTsKLSAgICAg
ICAgaWYgKGRlY29kZXItPnNhd0Vycm9yKCkpIHsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdE
b2N1bWVudC5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAg
ICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPmZpbmlzaFBhcnNpbmcoKTsKLSAgICAgICAgbV9l
eHRlcm5hbFNWR0RvY3VtZW50LT5jbG9zZSgpOworICAgICAgICBpZiAoIW1fZXh0ZXJuYWxTVkdE
b2N1bWVudC0+c2V0Q29udGVudChtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKQorICAg
ICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gMDsKICAgICB9CiAKICAgICByZXR1cm4g
bV9leHRlcm5hbFNWR0RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL0RP
TVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRleCBlNmFh
M2IwLi5jMGQxNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApAQCAtMjQsMjAgKzI0LDE1
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewot
ICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBhcnNlRnJvbVN0cmluZyhj
b25zdCBTdHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKIHsKICAgICBpZiAo
IURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRUeXBlKSkKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERPTUltcGxlbWVudGF0aW9u
OjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBmYWxzZSk7Ci0KLSAgICBk
b2MtPm9wZW4oKTsKLSAgICBkb2MtPndyaXRlKHN0cik7Ci0gICAgZG9jLT5maW5pc2hQYXJzaW5n
KCk7Ci0gICAgZG9jLT5jbG9zZSgpOwotICAgICAgICAKKyAgICBkb2MtPnNldENvbnRlbnQoc3Ry
KTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggZmM3ZWI5ZS4uZWVm
ODQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC0yNDUsMTMgKzI0
NSw4IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29k
ZSYgZWMpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gMDsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4oKTsKICAgICAgICAgICAgIC8vIEZJWE1F
OiBTZXQgTGFzdC1Nb2RpZmllZC4KLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPndyaXRlKG1f
cmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKTsKLSAgICAgICAgICAg
IG1fcmVzcG9uc2VYTUwtPmZpbmlzaFBhcnNpbmcoKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VY
TUwtPmNsb3NlKCk7Ci0KLSAgICAgICAgICAgIGlmICghbV9yZXNwb25zZVhNTC0+d2VsbEZvcm1l
ZCgpKQorICAgICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlWE1MLT5zZXRDb250ZW50KG1fcmVzcG9u
c2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVDYXBhY2l0eSgpKSkKICAgICAgICAgICAgICAgICBt
X3Jlc3BvbnNlWE1MID0gMDsKICAgICAgICAgfQogICAgICAgICBtX2NyZWF0ZWREb2N1bWVudCA9
IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKaW5kZXggOWI2YTA2Ny4uZmU1
ZjQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcApAQCAtODgsMTQgKzg4LDEx
IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IFhTTFRQcm9jZXNzb3I6OmNyZWF0ZURvY3VtZW50RnJv
bVNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjCiAgICAgICAgIGZyYW1lLT5zZXREb2N1bWVudChy
ZXN1bHQpOwogICAgIH0KIAotICAgIHJlc3VsdC0+b3BlbigpOwotCiAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoc291
cmNlTUlNRVR5cGUpOwogICAgIGRlY29kZXItPnNldEVuY29kaW5nKHNvdXJjZUVuY29kaW5nLmlz
RW1wdHkoKSA/IFVURjhFbmNvZGluZygpIDogVGV4dEVuY29kaW5nKHNvdXJjZUVuY29kaW5nKSwg
VGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tWE1MSGVhZGVyKTsKICAgICByZXN1bHQt
PnNldERlY29kZXIoZGVjb2Rlci5yZWxlYXNlKCkpOwogCi0gICAgcmVzdWx0LT53cml0ZShkb2N1
bWVudFNvdXJjZSk7Ci0gICAgcmVzdWx0LT5jbG9zZSgpOworICAgIHJlc3VsdC0+c2V0Q29udGVu
dChkb2N1bWVudFNvdXJjZSk7CiAKICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78542</attachid>
            <date>2011-01-11 09:19:27 -0800</date>
            <delta_ts>2011-01-11 10:37:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110111181924.patch</filename>
            <type>text/plain</type>
            <size>7298</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5ZWYzMTdhZTRiYzQxLi5h
Yzc4ZDEwZTFlZDE3MDhiYmQ4OGFkNWFlZjBmMmQyNTg1ZmViMzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIERvY3VtZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3Vt
ZW50IHRvIHNldCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdGhlIGhhY2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAg
ICAgYW5kIGlzIGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBk
YXRhLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTEyOTU4ZTBiZDBhMWJlOTdmMjY4ZWZi
YWYwYzQzMzExMjU4ZTYyLi45YjUyZmU0Y2I0ZTQ3NzNjNWE0NDEwMTYyMGNmNTI2MDM2NGRmMjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExNjcsNiArMTE2NywxOCBAQCBLVVJMIERv
Y3VtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQogCitib29s
IERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICByZW1v
dmVBbGxDaGlsZHJlbigpOworCisgICAgb3BlbigpOworICAgIG1fcGFyc2VyLT5hcHBlbmQoY29u
dGVudCk7CisgICAgbV9wYXJzZXItPmZpbmlzaCgpOworICAgIGNsb3NlKCk7CisKKyAgICByZXR1
cm4gd2VsbEZvcm1lZCgpOworfQorCiAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNjdXNzIHRoZSBE
T00gQVBJIGhlcmUgYXQgc29tZSBwb2ludC4gSWRlYXM6CiAvLyAqIG1ha2luZyBpdCByZWNlaXZl
IGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8v
ICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24g
c2VwYXJhdGVseSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmIxYWUzMWE1N2Q4NWI3NTBmMzI3
N2RiNDkyYmYzNDRhNDhmZTE0Yi4uOGMwODI0ZWQ5OWQyMjA5ZmMyNGRkYzEwNjI3ZDFiY2VlNGUx
NWJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0OSw2ICszNDksOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENoYXJzZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIHNldENvbnRl
bnQoY29uc3QgU3RyaW5nJik7CisgICAgYm9vbCBzZXRDb250ZW50KGNvbnN0IGNoYXIqLCBpbnQp
OworCiAgICAgU3RyaW5nIGNvbnRlbnRMYW5ndWFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dExhbmd1YWdlOyB9CiAgICAgdm9pZCBzZXRDb250ZW50TGFuZ3VhZ2UoY29uc3QgU3RyaW5nJiBs
YW5nKSB7IG1fY29udGVudExhbmd1YWdlID0gbGFuZzsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1hN
TERvY3VtZW50UGFyc2VyLmNwcAppbmRleCA2OGM4ZGQ5YTMyN2JkNzkyNTFjNDU4NWQzZDAwNzdh
YjhlYmU3NTQ0Li5hNWQzYzA4NjQzMTM0ZDE1YWRmYmVjZmE5OThhMmJlYWJkYzViZGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTExNiwxMyArMTE2LDkg
QEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6Y2xlYXJDdXJyZW50Tm9kZVN0YWNrKCkKICAgICB9
CiB9CiAKLXZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50ZWRTdHJp
bmcmIHNvdXJjZSkKK3ZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdtZW50
ZWRTdHJpbmcmKQogewotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3Vu
ZCB0aGUgZmFjdCB0aGF0IFhNTEh0dHBSZXF1ZXN0Ci0gICAgLy8gcmVzcG9uc2VYTUwoKSBjYWxs
cyBEb2N1bWVudDo6d3JpdGUoKSB3aGljaCBpbiB0dXJuIGNhbGxzIGluc2VydCgpLiBJbgotICAg
IC8vIEhUTUwsIHRoYXQncyBjb3JyZWN0LCBhcyBpbnNlcnQoKSBpbXBsaWVzIGEgc3luY2hyb25v
dXMgcGFyc2UuICBGb3IgWE1MLAotICAgIC8vIGFsbCBwYXJzaW5nIGlzIHN5bmNocm9ub3VzIGJ1
dCBkb2N1bWVudC53cml0ZSBzaG91bGRuJ3QgYmUgc3VwcG9ydGVkLgotICAgIGFwcGVuZChzb3Vy
Y2UpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCiB2b2lkIFhNTERvY3VtZW50UGFy
c2VyOjphcHBlbmQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCmluZGV4IGQ2OTY3YmZkNzgwZDkxMjFiNGI1ZmQ0OTZi
ODQwNmZmNWI1MGEwYjguLmJhNDBiY2UzMzRjNDA1NDk3MTk4ZjgyMDk1NDg4ZDYxYTVjYTdhOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKQEAgLTEzNywx
OCArMTM3LDExIEBAIGJvb2wgQ2FjaGVkRm9udDo6ZW5zdXJlU1ZHRm9udERhdGEoKQogICAgIEFT
U0VSVChtX2lzU1ZHRm9udCk7CiAgICAgaWYgKCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQgJiYgIWVy
cm9yT2NjdXJyZWQoKSAmJiAhaXNMb2FkaW5nKCkgJiYgbV9kYXRhKSB7CiAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUoMCwgS1VSTCgpKTsKLSAgICAg
ICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT5vcGVuKCk7CiAKICAgICAgICAgUmVmUHRyPFRleHRS
ZXNvdXJjZURlY29kZXI+IGRlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoImFw
cGxpY2F0aW9uL3htbCIpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPndyaXRlKGRl
Y29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRhLT5zaXplKCkpKTsKLSAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5mbHVzaCgpKTsKLSAgICAgICAg
aWYgKGRlY29kZXItPnNhd0Vycm9yKCkpIHsKLSAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLQotICAgICAg
ICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPmZpbmlzaFBhcnNpbmcoKTsKLSAgICAgICAgbV9leHRl
cm5hbFNWR0RvY3VtZW50LT5jbG9zZSgpOworCisgICAgICAgIGlmICghbV9leHRlcm5hbFNWR0Rv
Y3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZShtX2RhdGEtPmRhdGEoKSwgbV9kYXRh
LT5zaXplKCkpICsgZGVjb2Rlci0+Zmx1c2goKSkpCisgICAgICAgICAgICBtX2V4dGVybmFsU1ZH
RG9jdW1lbnQgPSAwOwogICAgIH0KIAogICAgIHJldHVybiBtX2V4dGVybmFsU1ZHRG9jdW1lbnQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCmluZGV4IGU2YWEzYjBjMTY5YWJmMjUyMmM3YTBmMzI0
NzMwNjFiYmUyYzMxOGQuLmMwZDE0NmMyODI4NzQ2YzM0OWMyZjcyY2ZiZTZlZWFmZTY1Njg5ZTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9ET01QYXJzZXIuY3BwCkBAIC0yNCwyMCArMjQsMTUgQEAKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCisKIFBhc3NS
ZWZQdHI8RG9jdW1lbnQ+IERPTVBhcnNlcjo6cGFyc2VGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogewogICAgIGlmICghRE9NSW1wbGVtZW50
YXRpb246OmlzWE1MTUlNRVR5cGUoY29udGVudFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jID0gRE9NSW1wbGVtZW50YXRpb246OmNyZWF0ZURvY3Vt
ZW50KGNvbnRlbnRUeXBlLCAwLCBLVVJMKCksIGZhbHNlKTsKLQotICAgIGRvYy0+b3BlbigpOwot
ICAgIGRvYy0+d3JpdGUoc3RyKTsKLSAgICBkb2MtPmZpbmlzaFBhcnNpbmcoKTsKLSAgICBkb2Mt
PmNsb3NlKCk7Ci0gICAgICAgIAorICAgIGRvYy0+c2V0Q29udGVudChzdHIpOwogICAgIHJldHVy
biBkb2MucmVsZWFzZSgpOwogfQogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBmYzdlYjllMmQ0OTU1YTI2OTI1MGU0OWRh
MmE1OWYzZmRkMWQ4YTQ4Li5lZWY4NDUwZWU4ZTBiN2ZmMzVlMzYwZDJiYjc2MTc3NmZhYTRlNDc4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTI0NSwxMyArMjQ1LDgg
QEAgRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBl
YykKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV9yZXNwb25zZVhNTCA9IERvY3VtZW50OjpjcmVhdGUoMCwgbV91cmwpOwotICAg
ICAgICAgICAgbV9yZXNwb25zZVhNTC0+b3BlbigpOwogICAgICAgICAgICAgLy8gRklYTUU6IFNl
dCBMYXN0LU1vZGlmaWVkLgotICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+d3JpdGUobV9yZXNw
b25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpOwotICAgICAgICAgICAgbV9y
ZXNwb25zZVhNTC0+ZmluaXNoUGFyc2luZygpOwotICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+
Y2xvc2UoKTsKLQotICAgICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlWE1MLT53ZWxsRm9ybWVkKCkp
CisgICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2VYTUwtPnNldENvbnRlbnQobV9yZXNwb25zZUJ1
aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNhcGFjaXR5KCkpKQogICAgICAgICAgICAgICAgIG1fcmVz
cG9uc2VYTUwgPSAwOwogICAgICAgICB9CiAgICAgICAgIG1fY3JlYXRlZERvY3VtZW50ID0gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCA5YjZhMDY3OGJmNjJkODU0
YWIyNzc3Njk0YTAzZDg0NGZkMjRmMjRiLi5mZTVmNDIwZmM0OWJiNzhhMGJjNmEwNjZhNmQ0YmNl
ZWUxMjA5OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC04OCwxNCAr
ODgsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1l
bnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmMKICAgICAgICAgZnJhbWUtPnNldERvY3Vt
ZW50KHJlc3VsdCk7CiAgICAgfQogCi0gICAgcmVzdWx0LT5vcGVuKCk7Ci0KICAgICBSZWZQdHI8
VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0
ZShzb3VyY2VNSU1FVHlwZSk7CiAgICAgZGVjb2Rlci0+c2V0RW5jb2Rpbmcoc291cmNlRW5jb2Rp
bmcuaXNFbXB0eSgpID8gVVRGOEVuY29kaW5nKCkgOiBUZXh0RW5jb2Rpbmcoc291cmNlRW5jb2Rp
bmcpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21YTUxIZWFkZXIpOwogICAgIHJl
c3VsdC0+c2V0RGVjb2RlcihkZWNvZGVyLnJlbGVhc2UoKSk7CiAKLSAgICByZXN1bHQtPndyaXRl
KGRvY3VtZW50U291cmNlKTsKLSAgICByZXN1bHQtPmNsb3NlKCk7CisgICAgcmVzdWx0LT5zZXRD
b250ZW50KGRvY3VtZW50U291cmNlKTsKIAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwog
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78547</attachid>
            <date>2011-01-11 10:37:52 -0800</date>
            <delta_ts>2011-01-11 11:54:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110111193749.patch</filename>
            <type>text/plain</type>
            <size>7258</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5ZWYzMTdhZTRiYzQxLi5h
Yzc4ZDEwZTFlZDE3MDhiYmQ4OGFkNWFlZjBmMmQyNTg1ZmViMzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIERvY3VtZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3Vt
ZW50IHRvIHNldCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdGhlIGhhY2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAg
ICAgYW5kIGlzIGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBk
YXRhLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTEyOTU4ZTBiZDBhMWJlOTdmMjY4ZWZi
YWYwYzQzMzExMjU4ZTYyLi45YjUyZmU0Y2I0ZTQ3NzNjNWE0NDEwMTYyMGNmNTI2MDM2NGRmMjM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExNjcsNiArMTE2NywxOCBAQCBLVVJMIERv
Y3VtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQogCitib29s
IERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICByZW1v
dmVBbGxDaGlsZHJlbigpOworCisgICAgb3BlbigpOworICAgIG1fcGFyc2VyLT5hcHBlbmQoY29u
dGVudCk7CisgICAgbV9wYXJzZXItPmZpbmlzaCgpOworICAgIGNsb3NlKCk7CisKKyAgICByZXR1
cm4gd2VsbEZvcm1lZCgpOworfQorCiAvLyBGSVhNRTogV2UgbmVlZCB0byBkaXNjdXNzIHRoZSBE
T00gQVBJIGhlcmUgYXQgc29tZSBwb2ludC4gSWRlYXM6CiAvLyAqIG1ha2luZyBpdCByZWNlaXZl
IGEgcmVjdCBhcyBwYXJhbWV0ZXIsIGkuZS4gbm9kZXNGcm9tUmVjdCh4LCB5LCB3LCBoKTsKIC8v
ICogbWFraW5nIGl0IHJlY2VpdmUgdGhlIGV4cGFkaW5nIHNpemUgb2YgZWFjaCBkaXJlY3Rpb24g
c2VwYXJhdGVseSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmIxYWUzMWE1N2Q4NWI3NTBmMzI3
N2RiNDkyYmYzNDRhNDhmZTE0Yi4uODZiNjE0Zjg4ZWVjMmYwMDczNWM2NTIyMTExNTZiZTVlMWY3
ZGNjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTM0OSw2ICszNDksOCBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNldENoYXJzZXQoY29uc3QgU3RyaW5nJik7CiAKKyAgICBib29sIHNldENvbnRl
bnQoY29uc3QgU3RyaW5nJik7CisKICAgICBTdHJpbmcgY29udGVudExhbmd1YWdlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb250ZW50TGFuZ3VhZ2U7IH0KICAgICB2b2lkIHNldENvbnRlbnRMYW5ndWFn
ZShjb25zdCBTdHJpbmcmIGxhbmcpIHsgbV9jb250ZW50TGFuZ3VhZ2UgPSBsYW5nOyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDY4YzhkZDlhMzI3YmQ3
OTI1MWM0NTg1ZDNkMDA3N2FiOGViZTc1NDQuLmE1ZDNjMDg2NDMxMzRkMTVhZGZiZWNmYTk5OGEy
YmVhYmRjNWJkYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcApA
QCAtMTE2LDEzICsxMTYsOSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjbGVhckN1cnJlbnRO
b2RlU3RhY2soKQogICAgIH0KIH0KIAotdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6aW5z
ZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYpCiB7Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgYSBo
YWNrIHRvIHdvcmsgYXJvdW5kIHRoZSBmYWN0IHRoYXQgWE1MSHR0cFJlcXVlc3QKLSAgICAvLyBy
ZXNwb25zZVhNTCgpIGNhbGxzIERvY3VtZW50Ojp3cml0ZSgpIHdoaWNoIGluIHR1cm4gY2FsbHMg
aW5zZXJ0KCkuIEluCi0gICAgLy8gSFRNTCwgdGhhdCdzIGNvcnJlY3QsIGFzIGluc2VydCgpIGlt
cGxpZXMgYSBzeW5jaHJvbm91cyBwYXJzZS4gIEZvciBYTUwsCi0gICAgLy8gYWxsIHBhcnNpbmcg
aXMgc3luY2hyb25vdXMgYnV0IGRvY3VtZW50LndyaXRlIHNob3VsZG4ndCBiZSBzdXBwb3J0ZWQu
Ci0gICAgYXBwZW5kKHNvdXJjZSk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHZv
aWQgWE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKaW5kZXggZDY5NjdiZmQ3
ODBkOTEyMWI0YjVmZDQ5NmI4NDA2ZmY1YjUwYTBiOC4uYmE0MGJjZTMzNGM0MDU0OTcxOThmODIw
OTU0ODhkNjFhNWNhN2E5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZEZvbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRG
b250LmNwcApAQCAtMTM3LDE4ICsxMzcsMTEgQEAgYm9vbCBDYWNoZWRGb250OjplbnN1cmVTVkdG
b250RGF0YSgpCiAgICAgQVNTRVJUKG1faXNTVkdGb250KTsKICAgICBpZiAoIW1fZXh0ZXJuYWxT
VkdEb2N1bWVudCAmJiAhZXJyb3JPY2N1cnJlZCgpICYmICFpc0xvYWRpbmcoKSAmJiBtX2RhdGEp
IHsKICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gU1ZHRG9jdW1lbnQ6OmNyZWF0ZSgw
LCBLVVJMKCkpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPm9wZW4oKTsKIAogICAg
ICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24veG1sIik7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdE
b2N1bWVudC0+d3JpdGUoZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNp
emUoKSkpOwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPndyaXRlKGRlY29kZXItPmZs
dXNoKCkpOwotICAgICAgICBpZiAoZGVjb2Rlci0+c2F3RXJyb3IoKSkgewotICAgICAgICAgICAg
bV9leHRlcm5hbFNWR0RvY3VtZW50LmNsZWFyKCk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAg
ICAgICAgfQotCi0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudC0+ZmluaXNoUGFyc2luZygp
OwotICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPmNsb3NlKCk7CisKKyAgICAgICAgaWYg
KCFtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRlbnQoZGVjb2Rlci0+ZGVjb2RlKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkgKyBkZWNvZGVyLT5mbHVzaCgpKSkKKyAgICAgICAg
ICAgIG1fZXh0ZXJuYWxTVkdEb2N1bWVudCA9IDA7CiAgICAgfQogCiAgICAgcmV0dXJuIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9ET01QYXJz
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKaW5kZXggZTZhYTNiMGMx
NjlhYmYyNTIyYzdhMGYzMjQ3MzA2MWJiZTJjMzE4ZC4uYzBkMTQ2YzI4Mjg3NDZjMzQ5YzJmNzJj
ZmJlNmVlYWZlNjU2ODllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL0RPTVBhcnNlci5jcHAKQEAgLTI0LDIwICsy
NCwxNSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLSAgICAKKwogUGFzc1JlZlB0cjxEb2N1bWVudD4gRE9NUGFyc2VyOjpwYXJzZUZyb21TdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHIsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAg
aWYgKCFET01JbXBsZW1lbnRhdGlvbjo6aXNYTUxNSU1FVHlwZShjb250ZW50VHlwZSkpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgUmVmUHRyPERvY3VtZW50PiBkb2MgPSBET01JbXBsZW1lbnRh
dGlvbjo6Y3JlYXRlRG9jdW1lbnQoY29udGVudFR5cGUsIDAsIEtVUkwoKSwgZmFsc2UpOwotCi0g
ICAgZG9jLT5vcGVuKCk7Ci0gICAgZG9jLT53cml0ZShzdHIpOwotICAgIGRvYy0+ZmluaXNoUGFy
c2luZygpOwotICAgIGRvYy0+Y2xvc2UoKTsKLSAgICAgICAgCisgICAgZG9jLT5zZXRDb250ZW50
KHN0cik7CiAgICAgcmV0dXJuIGRvYy5yZWxlYXNlKCk7CiB9CiAKLX0KK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGZjN2ViOWUy
ZDQ5NTVhMjY5MjUwZTQ5ZGEyYTU5ZjNmZGQxZDhhNDguLmVlZjg0NTBlZThlMGI3ZmYzNWUzNjBk
MmJiNzYxNzc2ZmFhNGU0NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRw
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMjQ1LDEzICsyNDUsOCBAQCBEb2N1bWVudCogWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlWE1M
KEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1MID0gRG9jdW1lbnQ6OmNyZWF0
ZSgwLCBtX3VybCk7Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5vcGVuKCk7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogU2V0IExhc3QtTW9kaWZpZWQuCi0gICAgICAgICAgICBtX3Jlc3BvbnNl
WE1MLT53cml0ZShtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSk7
Ci0gICAgICAgICAgICBtX3Jlc3BvbnNlWE1MLT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgICAgICAg
ICBtX3Jlc3BvbnNlWE1MLT5jbG9zZSgpOwotCi0gICAgICAgICAgICBpZiAoIW1fcmVzcG9uc2VY
TUwtPndlbGxGb3JtZWQoKSkKKyAgICAgICAgICAgIGlmICghbV9yZXNwb25zZVhNTC0+c2V0Q29u
dGVudChtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkpCiAgICAg
ICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7CiAgICAgICAgIH0KICAgICAgICAgbV9jcmVh
dGVkRG9jdW1lbnQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQ
cm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCmluZGV4
IDliNmEwNjc4YmY2MmQ4NTRhYjI3Nzc2OTRhMDNkODQ0ZmQyNGYyNGIuLmZlNWY0MjBmYzQ5YmI3
OGEwYmM2YTA2NmE2ZDRiY2VlZTEyMDk5NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YU0xUUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nv
ci5jcHAKQEAgLTg4LDE0ICs4OCwxMSBAQCBQYXNzUmVmUHRyPERvY3VtZW50PiBYU0xUUHJvY2Vz
c29yOjpjcmVhdGVEb2N1bWVudEZyb21Tb3VyY2UoY29uc3QgU3RyaW5nJiBzb3VyYwogICAgICAg
ICBmcmFtZS0+c2V0RG9jdW1lbnQocmVzdWx0KTsKICAgICB9CiAKLSAgICByZXN1bHQtPm9wZW4o
KTsKLQogICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBkZWNvZGVyID0gVGV4dFJlc291
cmNlRGVjb2Rlcjo6Y3JlYXRlKHNvdXJjZU1JTUVUeXBlKTsKICAgICBkZWNvZGVyLT5zZXRFbmNv
ZGluZyhzb3VyY2VFbmNvZGluZy5pc0VtcHR5KCkgPyBVVEY4RW5jb2RpbmcoKSA6IFRleHRFbmNv
ZGluZyhzb3VyY2VFbmNvZGluZyksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVhN
TEhlYWRlcik7CiAgICAgcmVzdWx0LT5zZXREZWNvZGVyKGRlY29kZXIucmVsZWFzZSgpKTsKIAot
ICAgIHJlc3VsdC0+d3JpdGUoZG9jdW1lbnRTb3VyY2UpOwotICAgIHJlc3VsdC0+Y2xvc2UoKTsK
KyAgICByZXN1bHQtPnNldENvbnRlbnQoZG9jdW1lbnRTb3VyY2UpOwogCiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78569</attachid>
            <date>2011-01-11 11:54:19 -0800</date>
            <delta_ts>2011-01-11 12:19:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110111205417.patch</filename>
            <type>text/plain</type>
            <size>7307</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5ZWYzMTdhZTRiYzQxLi5h
Yzc4ZDEwZTFlZDE3MDhiYmQ4OGFkNWFlZjBmMmQyNTg1ZmViMzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIERvY3VtZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3Vt
ZW50IHRvIHNldCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdGhlIGhhY2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAg
ICAgYW5kIGlzIGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBk
YXRhLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTEyOTU4ZTBiZDBhMWJlOTdmMjY4ZWZi
YWYwYzQzMzExMjU4ZTYyLi4xMDU2OTZkYzI4YzFiMWE1NjJkOGQ3Y2RhYTJlNGZjMzMyYWJjZWQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExNjcsNiArMTE2NywxNiBAQCBLVVJMIERv
Y3VtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQogCitib29s
IERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICByZW1v
dmVBbGxDaGlsZHJlbigpOworCisgICAgb3BlbigpOworICAgIG1fcGFyc2VyLT5hcHBlbmQoY29u
dGVudCk7CisgICAgbV9wYXJzZXItPmZpbmlzaCgpOworICAgIGNsb3NlKCk7Cit9CisKIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJ
ZGVhczoKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBu
b2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhw
YWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBmYjFhZTMxYTU3ZDg1Yjc1MGYzMjc3ZGI0OTJiZjM0NGE0OGZlMTRiLi4yODYzMTc1
MTFlZGNmNjBhY2FkNDk2OGVjNGY0Y2ZkNDFhZjBiMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzQ5LDYgKzM0OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2hhcnNldChjb25zdCBT
dHJpbmcmKTsKIAorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0
cmluZyBjb250ZW50TGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYW5ndWFnZTsg
fQogICAgIHZvaWQgc2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2Nv
bnRlbnRMYW5ndWFnZSA9IGxhbmc7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggNjhjOGRkOWEzMjdiZDc5MjUxYzQ1ODVkM2QwMDc3YWI4ZWJlNzU0NC4u
YTVkM2MwODY0MzEzNGQxNWFkZmJlY2ZhOTk4YTJiZWFiZGM1YmRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMTYsMTMgKzExNiw5IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmNsZWFyQ3VycmVudE5vZGVTdGFjaygpCiAgICAgfQogfQogCi12b2lk
IFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Up
Cit2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhlIGZhY3Qg
dGhhdCBYTUxIdHRwUmVxdWVzdAotICAgIC8vIHJlc3BvbnNlWE1MKCkgY2FsbHMgRG9jdW1lbnQ6
OndyaXRlKCkgd2hpY2ggaW4gdHVybiBjYWxscyBpbnNlcnQoKS4gSW4KLSAgICAvLyBIVE1MLCB0
aGF0J3MgY29ycmVjdCwgYXMgaW5zZXJ0KCkgaW1wbGllcyBhIHN5bmNocm9ub3VzIHBhcnNlLiAg
Rm9yIFhNTCwKLSAgICAvLyBhbGwgcGFyc2luZyBpcyBzeW5jaHJvbm91cyBidXQgZG9jdW1lbnQu
d3JpdGUgc2hvdWxkbid0IGJlIHN1cHBvcnRlZC4KLSAgICBhcHBlbmQoc291cmNlKTsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCBkNjk2N2JmZDc4MGQ5MTIxYjRiNWZkNDk2Yjg0MDZmZjViNTBh
MGI4Li5mZTMyODFlZWJiMzQzMTA4Yzk0YmQ1OTExYjdmNTUyMTY5NTcyMzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzcsMTggKzEzNywxMyBA
QCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKICAgICBBU1NFUlQobV9pc1NW
R0ZvbnQpOwogICAgIGlmICghbV9leHRlcm5hbFNWR0RvY3VtZW50ICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIG1fZGF0YSkgewogICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7Ci0gICAgICAgIG1fZXh0ZXJu
YWxTVkdEb2N1bWVudC0+b3BlbigpOwogCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94
bWwiKTsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5kZWNv
ZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7Ci0gICAgICAgIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudC0+d3JpdGUoZGVjb2Rlci0+Zmx1c2goKSk7Ci0gICAgICAgIGlmIChkZWNvZGVy
LT5zYXdFcnJvcigpKSB7Ci0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQuY2xlYXIo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+Y2xvc2UoKTsKKworICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkgKyBkZWNv
ZGVyLT5mbHVzaCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChkZWNvZGVyLT5zYXdFcnJvcigp
KQorICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gMDsKICAgICB9CiAKICAgICBy
ZXR1cm4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRl
eCBlNmFhM2IwYzE2OWFiZjI1MjJjN2EwZjMyNDczMDYxYmJlMmMzMThkLi5jMGQxNDZjMjgyODc0
NmMzNDljMmY3MmNmYmU2ZWVhZmU2NTY4OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvRE9NUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApA
QCAtMjQsMjAgKzI0LDE1IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBh
cnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBpZiAoIURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBm
YWxzZSk7Ci0KLSAgICBkb2MtPm9wZW4oKTsKLSAgICBkb2MtPndyaXRlKHN0cik7Ci0gICAgZG9j
LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgZG9jLT5jbG9zZSgpOwotICAgICAgICAKKyAgICBkb2Mt
PnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggZmM3ZWI5ZTJkNDk1NWEyNjkyNTBlNDlkYTJhNTlmM2ZkZDFkOGE0OC4uYjY3ZWIyM2I5Y2I2
YjYzZmZmYjY0ZjE5YTUxNDBiYzA5NDAxOWI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0yNDUsMTMgKzI0NSw5IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1M
ID0gMDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1
bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4o
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTZXQgTGFzdC1Nb2RpZmllZC4KLSAgICAgICAgICAg
IG1fcmVzcG9uc2VYTUwtPndyaXRlKG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVD
YXBhY2l0eSgpKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmZpbmlzaFBhcnNpbmcoKTsK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmNsb3NlKCk7Ci0KLSAgICAgICAgICAgIGlmICgh
bV9yZXNwb25zZVhNTC0+d2VsbEZvcm1lZCgpKQorICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+
c2V0Q29udGVudChtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkK
KyAgICAgICAgICAgIGlmICghbV9yZXNwb25zZS0+d2VsbEZvcm1lZCgpKQogICAgICAgICAgICAg
ICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9CiAgICAgICAgIG1fY3JlYXRlZERvY3Vt
ZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCA5YjZhMDY3
OGJmNjJkODU0YWIyNzc3Njk0YTAzZDg0NGZkMjRmMjRiLi5mZTVmNDIwZmM0OWJiNzhhMGJjNmEw
NjZhNmQ0YmNlZWUxMjA5OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBA
IC04OCwxNCArODgsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3Jl
YXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmMKICAgICAgICAgZnJhbWUt
PnNldERvY3VtZW50KHJlc3VsdCk7CiAgICAgfQogCi0gICAgcmVzdWx0LT5vcGVuKCk7Ci0KICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CiAgICAgZGVjb2Rlci0+c2V0RW5jb2Rpbmcoc291
cmNlRW5jb2RpbmcuaXNFbXB0eSgpID8gVVRGOEVuY29kaW5nKCkgOiBUZXh0RW5jb2Rpbmcoc291
cmNlRW5jb2RpbmcpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21YTUxIZWFkZXIp
OwogICAgIHJlc3VsdC0+c2V0RGVjb2RlcihkZWNvZGVyLnJlbGVhc2UoKSk7CiAKLSAgICByZXN1
bHQtPndyaXRlKGRvY3VtZW50U291cmNlKTsKLSAgICByZXN1bHQtPmNsb3NlKCk7CisgICAgcmVz
dWx0LT5zZXRDb250ZW50KGRvY3VtZW50U291cmNlKTsKIAogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78576</attachid>
            <date>2011-01-11 12:19:25 -0800</date>
            <delta_ts>2011-01-11 13:54:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110111211922.patch</filename>
            <type>text/plain</type>
            <size>7307</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5ZWYzMTdhZTRiYzQxLi5h
Yzc4ZDEwZTFlZDE3MDhiYmQ4OGFkNWFlZjBmMmQyNTg1ZmViMzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIERvY3VtZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3Vt
ZW50IHRvIHNldCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdGhlIGhhY2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAg
ICAgYW5kIGlzIGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBk
YXRhLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTEyOTU4ZTBiZDBhMWJlOTdmMjY4ZWZi
YWYwYzQzMzExMjU4ZTYyLi40MmE2ODY4NmNhYWM5MjBkMGM3NGRkYmM5Yjg3ZTlhNGYwZjllODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExNjcsNiArMTE2NywxNiBAQCBLVVJMIERv
Y3VtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQogCit2b2lk
IERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICByZW1v
dmVBbGxDaGlsZHJlbigpOworCisgICAgb3BlbigpOworICAgIG1fcGFyc2VyLT5hcHBlbmQoY29u
dGVudCk7CisgICAgbV9wYXJzZXItPmZpbmlzaCgpOworICAgIGNsb3NlKCk7Cit9CisKIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJ
ZGVhczoKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBu
b2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhw
YWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBmYjFhZTMxYTU3ZDg1Yjc1MGYzMjc3ZGI0OTJiZjM0NGE0OGZlMTRiLi4yODYzMTc1
MTFlZGNmNjBhY2FkNDk2OGVjNGY0Y2ZkNDFhZjBiMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzQ5LDYgKzM0OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2hhcnNldChjb25zdCBT
dHJpbmcmKTsKIAorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0
cmluZyBjb250ZW50TGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYW5ndWFnZTsg
fQogICAgIHZvaWQgc2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2Nv
bnRlbnRMYW5ndWFnZSA9IGxhbmc7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggNjhjOGRkOWEzMjdiZDc5MjUxYzQ1ODVkM2QwMDc3YWI4ZWJlNzU0NC4u
YTVkM2MwODY0MzEzNGQxNWFkZmJlY2ZhOTk4YTJiZWFiZGM1YmRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMTYsMTMgKzExNiw5IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmNsZWFyQ3VycmVudE5vZGVTdGFjaygpCiAgICAgfQogfQogCi12b2lk
IFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Up
Cit2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhlIGZhY3Qg
dGhhdCBYTUxIdHRwUmVxdWVzdAotICAgIC8vIHJlc3BvbnNlWE1MKCkgY2FsbHMgRG9jdW1lbnQ6
OndyaXRlKCkgd2hpY2ggaW4gdHVybiBjYWxscyBpbnNlcnQoKS4gSW4KLSAgICAvLyBIVE1MLCB0
aGF0J3MgY29ycmVjdCwgYXMgaW5zZXJ0KCkgaW1wbGllcyBhIHN5bmNocm9ub3VzIHBhcnNlLiAg
Rm9yIFhNTCwKLSAgICAvLyBhbGwgcGFyc2luZyBpcyBzeW5jaHJvbm91cyBidXQgZG9jdW1lbnQu
d3JpdGUgc2hvdWxkbid0IGJlIHN1cHBvcnRlZC4KLSAgICBhcHBlbmQoc291cmNlKTsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCBkNjk2N2JmZDc4MGQ5MTIxYjRiNWZkNDk2Yjg0MDZmZjViNTBh
MGI4Li5mZTMyODFlZWJiMzQzMTA4Yzk0YmQ1OTExYjdmNTUyMTY5NTcyMzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzcsMTggKzEzNywxMyBA
QCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKICAgICBBU1NFUlQobV9pc1NW
R0ZvbnQpOwogICAgIGlmICghbV9leHRlcm5hbFNWR0RvY3VtZW50ICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIG1fZGF0YSkgewogICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7Ci0gICAgICAgIG1fZXh0ZXJu
YWxTVkdEb2N1bWVudC0+b3BlbigpOwogCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94
bWwiKTsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5kZWNv
ZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7Ci0gICAgICAgIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudC0+d3JpdGUoZGVjb2Rlci0+Zmx1c2goKSk7Ci0gICAgICAgIGlmIChkZWNvZGVy
LT5zYXdFcnJvcigpKSB7Ci0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQuY2xlYXIo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+Y2xvc2UoKTsKKworICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkgKyBkZWNv
ZGVyLT5mbHVzaCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChkZWNvZGVyLT5zYXdFcnJvcigp
KQorICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gMDsKICAgICB9CiAKICAgICBy
ZXR1cm4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRl
eCBlNmFhM2IwYzE2OWFiZjI1MjJjN2EwZjMyNDczMDYxYmJlMmMzMThkLi5jMGQxNDZjMjgyODc0
NmMzNDljMmY3MmNmYmU2ZWVhZmU2NTY4OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvRE9NUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApA
QCAtMjQsMjAgKzI0LDE1IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBh
cnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBpZiAoIURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBm
YWxzZSk7Ci0KLSAgICBkb2MtPm9wZW4oKTsKLSAgICBkb2MtPndyaXRlKHN0cik7Ci0gICAgZG9j
LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgZG9jLT5jbG9zZSgpOwotICAgICAgICAKKyAgICBkb2Mt
PnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggZmM3ZWI5ZTJkNDk1NWEyNjkyNTBlNDlkYTJhNTlmM2ZkZDFkOGE0OC4uYjY3ZWIyM2I5Y2I2
YjYzZmZmYjY0ZjE5YTUxNDBiYzA5NDAxOWI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0yNDUsMTMgKzI0NSw5IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1M
ID0gMDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1
bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4o
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTZXQgTGFzdC1Nb2RpZmllZC4KLSAgICAgICAgICAg
IG1fcmVzcG9uc2VYTUwtPndyaXRlKG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVD
YXBhY2l0eSgpKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmZpbmlzaFBhcnNpbmcoKTsK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmNsb3NlKCk7Ci0KLSAgICAgICAgICAgIGlmICgh
bV9yZXNwb25zZVhNTC0+d2VsbEZvcm1lZCgpKQorICAgICAgICAgICAgbV9yZXNwb25zZVhNTC0+
c2V0Q29udGVudChtX3Jlc3BvbnNlQnVpbGRlci50b1N0cmluZ1ByZXNlcnZlQ2FwYWNpdHkoKSkK
KyAgICAgICAgICAgIGlmICghbV9yZXNwb25zZS0+d2VsbEZvcm1lZCgpKQogICAgICAgICAgICAg
ICAgIG1fcmVzcG9uc2VYTUwgPSAwOwogICAgICAgICB9CiAgICAgICAgIG1fY3JlYXRlZERvY3Vt
ZW50ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCA5YjZhMDY3
OGJmNjJkODU0YWIyNzc3Njk0YTAzZDg0NGZkMjRmMjRiLi5mZTVmNDIwZmM0OWJiNzhhMGJjNmEw
NjZhNmQ0YmNlZWUxMjA5OTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFBy
b2Nlc3Nvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBA
IC04OCwxNCArODgsMTEgQEAgUGFzc1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3Jl
YXRlRG9jdW1lbnRGcm9tU291cmNlKGNvbnN0IFN0cmluZyYgc291cmMKICAgICAgICAgZnJhbWUt
PnNldERvY3VtZW50KHJlc3VsdCk7CiAgICAgfQogCi0gICAgcmVzdWx0LT5vcGVuKCk7Ci0KICAg
ICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29k
ZXI6OmNyZWF0ZShzb3VyY2VNSU1FVHlwZSk7CiAgICAgZGVjb2Rlci0+c2V0RW5jb2Rpbmcoc291
cmNlRW5jb2RpbmcuaXNFbXB0eSgpID8gVVRGOEVuY29kaW5nKCkgOiBUZXh0RW5jb2Rpbmcoc291
cmNlRW5jb2RpbmcpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21YTUxIZWFkZXIp
OwogICAgIHJlc3VsdC0+c2V0RGVjb2RlcihkZWNvZGVyLnJlbGVhc2UoKSk7CiAKLSAgICByZXN1
bHQtPndyaXRlKGRvY3VtZW50U291cmNlKTsKLSAgICByZXN1bHQtPmNsb3NlKCk7CisgICAgcmVz
dWx0LT5zZXRDb250ZW50KGRvY3VtZW50U291cmNlKTsKIAogICAgIHJldHVybiByZXN1bHQucmVs
ZWFzZSgpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78593</attachid>
            <date>2011-01-11 13:55:03 -0800</date>
            <delta_ts>2011-01-11 17:26:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52085-20110111225500.patch</filename>
            <type>text/plain</type>
            <size>7229</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA5MTQ3ZjBhYzNlZDdhODAzMDUzOGVlODEyYzE5ZWYzMTdhZTRiYzQxLi5h
Yzc4ZDEwZTFlZDE3MDhiYmQ4OGFkNWFlZjBmMmQyNTg1ZmViMzA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMTEtMDEtMTEgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIERvY3VtZW50OjpzZXRDb250ZW50KCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTUyMDg1CisKKyAgICAgICAgQWRkIGEgbWV0aG9kIHRvIERvY3Vt
ZW50IHRvIHNldCB0aGUgd2hvbGUgY29udGVudCBhdCBvbmNlLgorICAgICAgICBUaGlzIHJlbW92
ZXMgdGhlIGhhY2sgb2YgdGhlIGluc2VydCBtZXRob2QgaW4gdGhlIHhtbCBwYXJzZXIKKyAgICAg
ICAgYW5kIGlzIGEgcHJlZGVjZXNzb3IgdG8gZmVlZCB0aGUgeG1sIHBhcnNlciB3aXRoIHJhdyBk
YXRhLgorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRDb250ZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAg
KiBkb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1l
bnRQYXJzZXI6Omluc2VydCk6IEFkZGVkIEFTU0VSVF9OT1RfUkVBQ0hFRCgpLgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRGb250LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEZv
bnQ6OmVuc3VyZVNWR0ZvbnREYXRhKTogVXNlIHNldENvbnRlbnQuCisgICAgICAgICogeG1sL0RP
TVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01QYXJzZXI6OnBhcnNlRnJvbVN0cmlu
Zyk6IERpdHRvLgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VYTUwpOiBEaXR0by4KKyAgICAgICAgKiB4
bWwvWFNMVFByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYU0xUUHJvY2Vzc29yOjpj
cmVhdGVEb2N1bWVudEZyb21Tb3VyY2UpOiBEaXR0by4KKwogMjAxMS0wMS0xMSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGRm
aXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxZTEyOTU4ZTBiZDBhMWJlOTdmMjY4ZWZi
YWYwYzQzMzExMjU4ZTYyLi40MmE2ODY4NmNhYWM5MjBkMGM3NGRkYmM5Yjg3ZTlhNGYwZjllODk2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTExNjcsNiArMTE2NywxNiBAQCBLVVJMIERv
Y3VtZW50OjpiYXNlVVJJKCkgY29uc3QKICAgICByZXR1cm4gbV9iYXNlVVJMOwogfQogCit2b2lk
IERvY3VtZW50OjpzZXRDb250ZW50KGNvbnN0IFN0cmluZyYgY29udGVudCkKK3sKKyAgICByZW1v
dmVBbGxDaGlsZHJlbigpOworCisgICAgb3BlbigpOworICAgIG1fcGFyc2VyLT5hcHBlbmQoY29u
dGVudCk7CisgICAgbV9wYXJzZXItPmZpbmlzaCgpOworICAgIGNsb3NlKCk7Cit9CisKIC8vIEZJ
WE1FOiBXZSBuZWVkIHRvIGRpc2N1c3MgdGhlIERPTSBBUEkgaGVyZSBhdCBzb21lIHBvaW50LiBJ
ZGVhczoKIC8vICogbWFraW5nIGl0IHJlY2VpdmUgYSByZWN0IGFzIHBhcmFtZXRlciwgaS5lLiBu
b2Rlc0Zyb21SZWN0KHgsIHksIHcsIGgpOwogLy8gKiBtYWtpbmcgaXQgcmVjZWl2ZSB0aGUgZXhw
YWRpbmcgc2l6ZSBvZiBlYWNoIGRpcmVjdGlvbiBzZXBhcmF0ZWx5LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAppbmRleCBmYjFhZTMxYTU3ZDg1Yjc1MGYzMjc3ZGI0OTJiZjM0NGE0OGZlMTRiLi4yODYzMTc1
MTFlZGNmNjBhY2FkNDk2OGVjNGY0Y2ZkNDFhZjBiMTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApA
QCAtMzQ5LDYgKzM0OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q2hhcnNldChjb25zdCBT
dHJpbmcmKTsKIAorICAgIHZvaWQgc2V0Q29udGVudChjb25zdCBTdHJpbmcmKTsKKwogICAgIFN0
cmluZyBjb250ZW50TGFuZ3VhZ2UoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRMYW5ndWFnZTsg
fQogICAgIHZvaWQgc2V0Q29udGVudExhbmd1YWdlKGNvbnN0IFN0cmluZyYgbGFuZykgeyBtX2Nv
bnRlbnRMYW5ndWFnZSA9IGxhbmc7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlci5jcHAKaW5kZXggNjhjOGRkOWEzMjdiZDc5MjUxYzQ1ODVkM2QwMDc3YWI4ZWJlNzU0NC4u
YTVkM2MwODY0MzEzNGQxNWFkZmJlY2ZhOTk4YTJiZWFiZGM1YmRjOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xMTYsMTMgKzExNiw5IEBAIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OmNsZWFyQ3VycmVudE5vZGVTdGFjaygpCiAgICAgfQogfQogCi12b2lk
IFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBzb3VyY2Up
Cit2b2lkIFhNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJikK
IHsKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhlIGZhY3Qg
dGhhdCBYTUxIdHRwUmVxdWVzdAotICAgIC8vIHJlc3BvbnNlWE1MKCkgY2FsbHMgRG9jdW1lbnQ6
OndyaXRlKCkgd2hpY2ggaW4gdHVybiBjYWxscyBpbnNlcnQoKS4gSW4KLSAgICAvLyBIVE1MLCB0
aGF0J3MgY29ycmVjdCwgYXMgaW5zZXJ0KCkgaW1wbGllcyBhIHN5bmNocm9ub3VzIHBhcnNlLiAg
Rm9yIFhNTCwKLSAgICAvLyBhbGwgcGFyc2luZyBpcyBzeW5jaHJvbm91cyBidXQgZG9jdW1lbnQu
d3JpdGUgc2hvdWxkbid0IGJlIHN1cHBvcnRlZC4KLSAgICBhcHBlbmQoc291cmNlKTsKKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5k
KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRGb250LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRGb250LmNwcAppbmRleCBkNjk2N2JmZDc4MGQ5MTIxYjRiNWZkNDk2Yjg0MDZmZjViNTBh
MGI4Li5mZTMyODFlZWJiMzQzMTA4Yzk0YmQ1OTExYjdmNTUyMTY5NTcyMzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkRm9udC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEZvbnQuY3BwCkBAIC0xMzcsMTggKzEzNywxMyBA
QCBib29sIENhY2hlZEZvbnQ6OmVuc3VyZVNWR0ZvbnREYXRhKCkKICAgICBBU1NFUlQobV9pc1NW
R0ZvbnQpOwogICAgIGlmICghbV9leHRlcm5hbFNWR0RvY3VtZW50ICYmICFlcnJvck9jY3VycmVk
KCkgJiYgIWlzTG9hZGluZygpICYmIG1fZGF0YSkgewogICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKDAsIEtVUkwoKSk7Ci0gICAgICAgIG1fZXh0ZXJu
YWxTVkdEb2N1bWVudC0+b3BlbigpOwogCiAgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNv
ZGVyPiBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJhcHBsaWNhdGlvbi94
bWwiKTsKLSAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50LT53cml0ZShkZWNvZGVyLT5kZWNv
ZGUobV9kYXRhLT5kYXRhKCksIG1fZGF0YS0+c2l6ZSgpKSk7Ci0gICAgICAgIG1fZXh0ZXJuYWxT
VkdEb2N1bWVudC0+d3JpdGUoZGVjb2Rlci0+Zmx1c2goKSk7Ci0gICAgICAgIGlmIChkZWNvZGVy
LT5zYXdFcnJvcigpKSB7Ci0gICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQuY2xlYXIo
KTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0KLSAgICAgICAgbV9leHRlcm5h
bFNWR0RvY3VtZW50LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+Y2xvc2UoKTsKKworICAgICAgICBtX2V4dGVybmFsU1ZHRG9jdW1lbnQtPnNldENvbnRl
bnQoZGVjb2Rlci0+ZGVjb2RlKG1fZGF0YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkgKyBkZWNv
ZGVyLT5mbHVzaCgpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChkZWNvZGVyLT5zYXdFcnJvcigp
KQorICAgICAgICAgICAgbV9leHRlcm5hbFNWR0RvY3VtZW50ID0gMDsKICAgICB9CiAKICAgICBy
ZXR1cm4gbV9leHRlcm5hbFNWR0RvY3VtZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
eG1sL0RPTVBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcAppbmRl
eCBlNmFhM2IwYzE2OWFiZjI1MjJjN2EwZjMyNDczMDYxYmJlMmMzMThkLi5jMGQxNDZjMjgyODc0
NmMzNDljMmY3MmNmYmU2ZWVhZmU2NTY4OWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvRE9NUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvRE9NUGFyc2VyLmNwcApA
QCAtMjQsMjAgKzI0LDE1IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewotICAgIAorCiBQYXNzUmVmUHRyPERvY3VtZW50PiBET01QYXJzZXI6OnBh
cnNlRnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0ciwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIHsKICAgICBpZiAoIURPTUltcGxlbWVudGF0aW9uOjppc1hNTE1JTUVUeXBlKGNvbnRlbnRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvYyA9IERP
TUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1bWVudChjb250ZW50VHlwZSwgMCwgS1VSTCgpLCBm
YWxzZSk7Ci0KLSAgICBkb2MtPm9wZW4oKTsKLSAgICBkb2MtPndyaXRlKHN0cik7Ci0gICAgZG9j
LT5maW5pc2hQYXJzaW5nKCk7Ci0gICAgZG9jLT5jbG9zZSgpOwotICAgICAgICAKKyAgICBkb2Mt
PnNldENvbnRlbnQoc3RyKTsKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KIAotfQorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5k
ZXggZmM3ZWI5ZTJkNDk1NWEyNjkyNTBlNDlkYTJhNTlmM2ZkZDFkOGE0OC4uNTc4NjE3NjA4ODRk
YTNiYTc4MDI3OWI5OGFjZThlZGU1NDVjYTkyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuY3BwCkBAIC0yNDUsMTIgKzI0NSw4IEBAIERvY3VtZW50KiBYTUxIdHRwUmVxdWVzdDo6
cmVzcG9uc2VYTUwoRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBtX3Jlc3BvbnNlWE1M
ID0gMDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwgPSBEb2N1
bWVudDo6Y3JlYXRlKDAsIG1fdXJsKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPm9wZW4o
KTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBTZXQgTGFzdC1Nb2RpZmllZC4KLSAgICAgICAgICAg
IG1fcmVzcG9uc2VYTUwtPndyaXRlKG1fcmVzcG9uc2VCdWlsZGVyLnRvU3RyaW5nUHJlc2VydmVD
YXBhY2l0eSgpKTsKLSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmZpbmlzaFBhcnNpbmcoKTsK
LSAgICAgICAgICAgIG1fcmVzcG9uc2VYTUwtPmNsb3NlKCk7Ci0KKyAgICAgICAgICAgIG1fcmVz
cG9uc2VYTUwtPnNldENvbnRlbnQobV9yZXNwb25zZUJ1aWxkZXIudG9TdHJpbmdQcmVzZXJ2ZUNh
cGFjaXR5KCkpOwogICAgICAgICAgICAgaWYgKCFtX3Jlc3BvbnNlWE1MLT53ZWxsRm9ybWVkKCkp
CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZVhNTCA9IDA7CiAgICAgICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YU0xUUHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3htbC9YU0xUUHJvY2Vzc29yLmNwcAppbmRleCA5YjZhMDY3OGJmNjJkODU0YWIyNzc3Njk0YTAz
ZDg0NGZkMjRmMjRiLi5mZTVmNDIwZmM0OWJiNzhhMGJjNmEwNjZhNmQ0YmNlZWUxMjA5OTRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFNMVFByb2Nlc3Nvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hTTFRQcm9jZXNzb3IuY3BwCkBAIC04OCwxNCArODgsMTEgQEAgUGFz
c1JlZlB0cjxEb2N1bWVudD4gWFNMVFByb2Nlc3Nvcjo6Y3JlYXRlRG9jdW1lbnRGcm9tU291cmNl
KGNvbnN0IFN0cmluZyYgc291cmMKICAgICAgICAgZnJhbWUtPnNldERvY3VtZW50KHJlc3VsdCk7
CiAgICAgfQogCi0gICAgcmVzdWx0LT5vcGVuKCk7Ci0KICAgICBSZWZQdHI8VGV4dFJlc291cmNl
RGVjb2Rlcj4gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShzb3VyY2VNSU1F
VHlwZSk7CiAgICAgZGVjb2Rlci0+c2V0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcuaXNFbXB0eSgp
ID8gVVRGOEVuY29kaW5nKCkgOiBUZXh0RW5jb2Rpbmcoc291cmNlRW5jb2RpbmcpLCBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21YTUxIZWFkZXIpOwogICAgIHJlc3VsdC0+c2V0RGVj
b2RlcihkZWNvZGVyLnJlbGVhc2UoKSk7CiAKLSAgICByZXN1bHQtPndyaXRlKGRvY3VtZW50U291
cmNlKTsKLSAgICByZXN1bHQtPmNsb3NlKCk7CisgICAgcmVzdWx0LT5zZXRDb250ZW50KGRvY3Vt
ZW50U291cmNlKTsKIAogICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>