<?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>41337</bug_id>
          
          <creation_ts>2010-06-28 23:55:45 -0700</creation_ts>
          <short_desc>Teach HTML5TreeBuilder how to merge attributes from extra html/body elements</short_desc>
          <delta_ts>2010-06-30 01:54:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41123</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>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>244129</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 23:55:45 -0700</bug_when>
    <thetext>Teach HTML5TreeBuilder how to merge attributes from extra html/body elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244130</commentid>
    <comment_count>1</comment_count>
      <attachid>59994</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 23:57:01 -0700</bug_when>
    <thetext>Created attachment 59994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244131</commentid>
    <comment_count>2</comment_count>
      <attachid>59994</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 00:00:27 -0700</bug_when>
    <thetext>Comment on attachment 59994
Patch

WebCore/html/HTMLTreeBuilder.h:142
 +                  m_htmlElement = static_cast&lt;HTMLHtmlElement*&gt;(element.get());
Let&apos;s take out these static casts.

WebCore/html/HTMLTreeBuilder.h:212
 +          // keeps them alive.  They are never popped from the stack.
Can you ASSERT this during pop?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244133</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 00:05:12 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 59994 [details])
&gt; WebCore/html/HTMLTreeBuilder.h:142
&gt;  +                  m_htmlElement = static_cast&lt;HTMLHtmlElement*&gt;(element.get());
&gt; Let&apos;s take out these static casts.

No. :)  As stated in person, the type safey is useful.  I added back the ASSERTs.

&gt; WebCore/html/HTMLTreeBuilder.h:212
&gt;  +          // keeps them alive.  They are never popped from the stack.
&gt; Can you ASSERT this during pop?

Yes.  Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244135</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 00:09:20 -0700</bug_when>
    <thetext>&gt; No. :)  As stated in person, the type safey is useful.  I added back the ASSERTs.

Only Eric would invoke &quot;type safety&quot; as a reason to use static_cast!  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244136</commentid>
    <comment_count>5</comment_count>
      <attachid>59995</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 00:16:36 -0700</bug_when>
    <thetext>Created attachment 59995
this doesn&apos;t work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244159</commentid>
    <comment_count>6</comment_count>
      <attachid>59997</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 01:46:55 -0700</bug_when>
    <thetext>Created attachment 59997
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244334</commentid>
    <comment_count>7</comment_count>
      <attachid>59997</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 09:55:19 -0700</bug_when>
    <thetext>Comment on attachment 59997
Patch

Nice test progression.  Here are a bunch of comments, mostly about naming and asserts.  I&apos;d like to see this one more time.  You might have written it while tired.  :)

WebCore/html/HTMLTreeBuilder.cpp:286
 +      m_openElements.pushHtml(attach(m_document, element.release()));
How do we decide if HTML should be Html?

WebCore/html/HTMLTreeBuilder.cpp:331
 +              insertHead(token);
insertHeadElement

WebCore/html/HTMLTreeBuilder.cpp:351
 +              insertBody(token);
insertBodyElement

WebCore/html/HTMLTreeBuilder.cpp:958
 +  void HTMLTreeBuilder::insertHtml(AtomicHTMLToken&amp; token)
ugg.  Naming problems...

WebCore/html/HTMLTreeBuilder.cpp: 
 +      ASSERT(token.type() == HTMLToken::StartTag);
Why did you remove these asserts?

WebCore/html/HTMLTreeBuilder.cpp: 
 +      ASSERT(token.type() == HTMLToken::StartTag);
ditto

WebCore/html/HTMLTreeBuilder.cpp:963
 +  void HTMLTreeBuilder::insertHead(AtomicHTMLToken&amp; token)
Please ASSERT that the token is a StartTag with a name of HEAD

WebCore/html/HTMLTreeBuilder.cpp:969
 +  void HTMLTreeBuilder::insertBody(AtomicHTMLToken&amp; token)
please add that ASSERT to all these cases.

WebCore/html/HTMLTreeBuilder.h:133
 +              ASSERT(m_headElement == m_headElement);
This assert seems vacuous.

WebCore/html/HTMLTreeBuilder.h:169
 +              ASSERT(m_htmlElement);
Please assert that element doesn&apos;t have a tag name of HTML, Body, or Head.

WebCore/html/HTMLTreeBuilder.h:251
 +          // We remember &lt;html&gt;, &lt;head&gt; and &lt;body&gt; as their pushed.  Their
their -&gt; they are</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244413</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 11:58:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; WebCore/html/HTMLTreeBuilder.cpp:286
&gt;  +      m_openElements.pushHtml(attach(m_document, element.release()));
&gt; How do we decide if HTML should be Html?

Donno.  I originally named it pushHTMLElement, but then it seemed confusing because lots of things are HTMLElements.  &lt;html&gt; is called HTMLHtmlElement, so I matched the casing.

&gt; WebCore/html/HTMLTreeBuilder.cpp:331
&gt;  +              insertHead(token);
&gt; insertHeadElement
&gt;
&gt; WebCore/html/HTMLTreeBuilder.cpp:351
&gt;  +              insertBody(token);
&gt; insertBodyElement
&gt;
&gt; WebCore/html/HTMLTreeBuilder.cpp:958
&gt;  +  void HTMLTreeBuilder::insertHtml(AtomicHTMLToken&amp; token)
&gt; ugg.  Naming problems...

These were part of avoiding pushHTMLElement which seemed confusing.

&gt; WebCore/html/HTMLTreeBuilder.cpp: 
&gt;  +      ASSERT(token.type() == HTMLToken::StartTag);
&gt; Why did you remove these asserts?
&gt;
&gt; WebCore/html/HTMLTreeBuilder.cpp: 
&gt;  +      ASSERT(token.type() == HTMLToken::StartTag);
&gt; ditto

Because the very next executed line ASSERTS the same? :)  

&gt; WebCore/html/HTMLTreeBuilder.cpp:963
&gt;  +  void HTMLTreeBuilder::insertHead(AtomicHTMLToken&amp; token)
&gt; Please ASSERT that the token is a StartTag with a name of HEAD

This is already done. :)  createAndAttachElement asserts startTag and pushHead asserts name HEAD.

&gt; WebCore/html/HTMLTreeBuilder.cpp:969
&gt;  +  void HTMLTreeBuilder::insertBody(AtomicHTMLToken&amp; token)
&gt; please add that ASSERT to all these cases.

Again, the asserts are already there. :)

&gt; WebCore/html/HTMLTreeBuilder.h:133
&gt;  +              ASSERT(m_headElement == m_headElement);
&gt; This assert seems vacuous.

Yes, was a typo.  Fixed locally (and in the other patch I uploaded last night).  Fixed.

&gt; WebCore/html/HTMLTreeBuilder.h:169
&gt;  +              ASSERT(m_htmlElement);
&gt; Please assert that element doesn&apos;t have a tag name of HTML, Body, or Head.

Fixed.

&gt; WebCore/html/HTMLTreeBuilder.h:251
&gt;  +          // We remember &lt;html&gt;, &lt;head&gt; and &lt;body&gt; as their pushed.  Their
&gt; their -&gt; they are

Fixed.

Please advise.  The first bunch of comments remained non-actionable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244453</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 13:24:52 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:286
&gt; &gt;  +      m_openElements.pushHtml(attach(m_document, element.release()));
&gt; &gt; How do we decide if HTML should be Html?
&gt; 
&gt; Donno.  I originally named it pushHTMLElement, but then it seemed confusing because lots of things are HTMLElements.  &lt;html&gt; is called HTMLHtmlElement, so I matched the casing.

Hum...  Maybe we should call it HTMLHtmlElement then.  We can probably skip the &quot;HTML&quot; from HTMLHeadElement.  It&apos;s slightly inconsistent, but hopefully easier to understand.

&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:331
&gt; &gt;  +              insertHead(token);
&gt; &gt; insertHeadElement
&gt; &gt;
&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:351
&gt; &gt;  +              insertBody(token);
&gt; &gt; insertBodyElement
&gt; &gt;
&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:958
&gt; &gt;  +  void HTMLTreeBuilder::insertHtml(AtomicHTMLToken&amp; token)
&gt; &gt; ugg.  Naming problems...
&gt; 
&gt; These were part of avoiding pushHTMLElement which seemed confusing.
&gt; 
&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp: 
&gt; &gt;  +      ASSERT(token.type() == HTMLToken::StartTag);
&gt; &gt; Why did you remove these asserts?
&gt; &gt;
&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp: 
&gt; &gt;  +      ASSERT(token.type() == HTMLToken::StartTag);
&gt; &gt; ditto
&gt; 
&gt; Because the very next executed line ASSERTS the same? :)  

I&apos;d rather have extra ASSERTs than wonder if they&apos;re redundant with other ASSERTs.  In this case, they&apos;re documenting what you&apos;re allowed to call this function with.

&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:963
&gt; &gt;  +  void HTMLTreeBuilder::insertHead(AtomicHTMLToken&amp; token)
&gt; &gt; Please ASSERT that the token is a StartTag with a name of HEAD
&gt; 
&gt; This is already done. :)  createAndAttachElement asserts startTag and pushHead asserts name HEAD.

I should make this more explicit in the code.  There&apos;s a controller layer, a model layer, and the constituents of the model.  The insert* functions are the entry points to the modeling layer (the process* functions are in the controller layer).  Because they form an &quot;internal API&quot; of sorts, I think it&apos;s better if they document what sorts of arguments they accept.

Longer term, we should split off the PartiallyConstructedHTMLTree into its own class.

&gt; &gt; WebCore/html/HTMLTreeBuilder.cpp:969
&gt; &gt;  +  void HTMLTreeBuilder::insertBody(AtomicHTMLToken&amp; token)
&gt; &gt; please add that ASSERT to all these cases.
&gt; 
&gt; Again, the asserts are already there. :)

See above.

&gt; Please advise.  The first bunch of comments remained non-actionable.

I think the naming and layering issues are important.  Sorry for not documenting these more clearly.  This class is a bit of a &quot;work in progress.&quot;  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244533</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 15:41:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I should make this more explicit in the code.  There&apos;s a controller layer, a model layer, and the constituents of the model.  The insert* functions are the entry points to the modeling layer (the process* functions are in the controller layer).  Because they form an &quot;internal API&quot; of sorts, I think it&apos;s better if they document what sorts of arguments they accept.
&gt;
&gt; Longer term, we should split off the PartiallyConstructedHTMLTree into its own class.

Yup should probably split different layers off into separate objects. :)  We can include all the .cpp files in an all-in-one file to have inlining if thats needed.

&gt; I think the naming and layering issues are important.  Sorry for not documenting these more clearly.  This class is a bit of a &quot;work in progress.&quot;  :)

Ok.  I&apos;m not sure I yet understand the layering bit, but I&apos;ll post a patch which fixes the ASSERTS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244539</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 16:04:43 -0700</bug_when>
    <thetext>Looking back, I don&apos;t agree with you that the ASSERTS I removed make sense where they are:


-            ASSERT(m_openElements.top()-&gt;tagQName() == headTag);
-            m_openElements.pop();
+            m_openElements.popHead();


popHead better assert it is popping a head element, otherwise it&apos;s a poorly named call.


And twice:

-    ASSERT(token.type() == HTMLToken::StartTag);
     insertElement(token);

It should never be OK to call insertElement with a non-start tag.  so that ASSERT also seems superfluous.

I agree, more asserts are almost always a good thing.  In this case, it seems like the caller is reaching through the abstraction layer to make an ASSERT.  Especially in the head case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244554</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 16:41:33 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; WebCore/html/HTMLTreeBuilder.h:251
&gt; &gt;  +          // We remember &lt;html&gt;, &lt;head&gt; and &lt;body&gt; as their pushed.  Their
&gt; &gt; their -&gt; they are
&gt; 
&gt; Fixed.

I lied.  You must have read wrong.  &quot;Their ElementRecords&quot;.  The element records which &quot;belong to&quot; the head, html, and body elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244556</commentid>
    <comment_count>13</comment_count>
      <attachid>60071</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 16:45:44 -0700</bug_when>
    <thetext>Created attachment 60071
With Adam&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244565</commentid>
    <comment_count>14</comment_count>
      <attachid>60071</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-29 17:17:49 -0700</bug_when>
    <thetext>Comment on attachment 60071
With Adam&apos;s comments

WebCore/html/HTMLTreeBuilder.h:281
 +          // We remember &lt;html&gt;, &lt;head&gt; and &lt;body&gt; as their pushed.  Their
Ok.  It&apos;s fine to reject my ideas about asserts but, but &quot;We remember &lt;html&gt;, &lt;head&gt; and &lt;body&gt; as their pushed.&quot; is really grammatically incorrect.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244616</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 21:27:05 -0700</bug_when>
    <thetext>In my zeal to prove You wrong I seem to have missed that we were talking about different &quot;their&quot;s. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244667</commentid>
    <comment_count>16</comment_count>
      <attachid>60095</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 01:06:41 -0700</bug_when>
    <thetext>Created attachment 60095
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244671</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-30 01:19:13 -0700</bug_when>
    <thetext>Committed r62166: &lt;http://trac.webkit.org/changeset/62166&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244689</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-30 01:54:55 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62166 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/62168
http://trac.webkit.org/changeset/62166
http://trac.webkit.org/changeset/62167</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59994</attachid>
            <date>2010-06-28 23:57:01 -0700</date>
            <delta_ts>2010-06-29 00:16:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41337-20100628235700.patch</filename>
            <type>text/plain</type>
            <size>6366</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZjA3NzllMThjMDVlMTY5MDY0YWNiZjdlZGQwODllZWJkNGEyMGEyLi5iMjZkZmVk
MWQ4NjIwZDY5ZTEzYjQ3YjllMDMxZGIxOGM1ZTQxNjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIEhUTUw1VHJlZUJ1aWxk
ZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1sL2JvZHkgZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzM3CisK
KyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0OiBBZGQgYSB0ZXN0IGZv
ciBkb3VibGUgYm9keS4KKwogMjAxMC0wNi0yOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAxLmRhdCBiL0xheW91dFRlc3RzL2h0
bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5kYXQKaW5kZXggMGExMzQyZmU1MDg1MmFhY2E4YWUw
MjQ4N2FkZTI1NzBkNWQyMjVkYy4uYjdhNmExMDc2OWY1NzVlMDM5MDdkZDYzNWVlN2ExMDAzNTI0
ZDZjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAx
LmRhdAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0CkBA
IC0yMTgsMyArMjE4LDEzIEBAIGNvbnNvbGUubG9nKCJGT088c3Bhbj5CQVI8L3NwYW4+QkFaIik7
CiB8ICAgPGhlYWQ+CiB8ICAgPGJvZHk+CiB8ICAgICAiPCIKKworI2RhdGEKKzxib2R5IGZvbz0n
YmFyJz48Ym9keSBmb289J2JheicgeW89J21hbWEnPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgZm9vPSJiYXIiCit8ICAgICB5bz0i
bWFtYSIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzQ4NWU4MzNlNzBiZWRlM2RlMTRjZWZhOGYxMjY4MWUxNjkyYTJkMy4uMTgyYzlhYmJh
YmE2MDQ1NDVjYmFhNzBmODNmODAyMjFkZTA4NDRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNi0y
OCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggSFRNTDVUcmVlQnVpbGRlciBob3cgdG8g
bWVyZ2UgYXR0cmlidXRlcyBmcm9tIGV4dHJhIGh0bWwvYm9keSBlbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzMzcKKworICAgICAgICAq
IGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAq
IGh0bWwvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OkVsZW1lbnRTdGFjazo6RWxlbWVudFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpodG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6Ym9keUVsZW1lbnQpOgorCiAyMDEwLTA2
LTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVy
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGY0MjY1NTRlZTc3
NTNiMDI4M2M4MzM4ZmUzYmJlNzg1ZmM3M2I2MWEuLjA0MDIwZDgwNDRkM2I2MzNiY2RiZjVmZTQz
ZWUzOTEwYTZkMTg0ZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yODYsOSArMjg2
LDIzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdCZWZvcmVIVE1M
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChhdHRhY2go
bV9kb2N1bWVudCwgZWxlbWVudC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6Omluc2VydEhUTUxTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mKQordm9pZCBIVE1M
VHJlZUJ1aWxkZXI6Om1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4sIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAoIXRva2VuLmF0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+YXR0cmlidXRlcyhmYWxzZSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+bGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMo
KS0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLT5nZXRBdHRyaWJ1
dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKKyAgICB9Cit9CisK
K3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKK3sKKyAgICBwYXJzZUVycm9yKHRva2VuKTsKKyAgICBtZXJnZUF0dHJp
YnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMuaHRtbEVsZW1l
bnQoKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKQEAgLTM3MSw3ICszODUsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKHRva2VuKTsKLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisgICAgICAgICAgICBtZXJnZUF0dHJp
YnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMuYm9keUVsZW1l
bnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBmcmFtZXNldFRhZykgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDEyMjIy
ZjBhZGYzZTk3YzhjYmIxNzY3OWI0NmJjZDM3ZWUxMjliNTQuLmI2YzBjNWJiMjZiYTI1MzM4YzNi
ZDY2MTdiMjQ1MWY2OWIzMDhkZGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1
aWxkZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTI4LDYgKzI4
LDggQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MSHRtbEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgpAQCAtMTIwLDYgKzEy
MiwxMiBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgRWxlbWVudFN0YWNrIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKICAgICBwdWJsaWM6CisgICAgICAgIEVsZW1lbnRTdGFjaygpCisgICAgICAgICAg
ICA6IG1faHRtbEVsZW1lbnQoMCkKKyAgICAgICAgICAgICwgbV9ib2R5RWxlbWVudCgwKQorICAg
ICAgICB7CisgICAgICAgIH0KKwogICAgICAgICB2b2lkIHBvcCgpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHRvcCgpLT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKQEAgLTEyOCw2ICsxMzYsMTQg
QEAgcHJpdmF0ZToKIAogICAgICAgICB2b2lkIHB1c2goUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVt
ZW50KQogICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSBtYXkgd2lzaCB0byByZW1vdmUgdGhl
c2UgaWZzIGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgIGlmICghbV9odG1sRWxlbWVudCkg
eworICAgICAgICAgICAgICAgIC8vIFNob3VsZCBBU1NFUlQoZWxlbWVudC0+aGFzVGFnTmFtZSho
dG1sVGFnKSk7IG9uY2UgdGhpcyBpcyBpbiBhIGNwcC4KKyAgICAgICAgICAgICAgICBtX2h0bWxF
bGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEh0bWxFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7Cisg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFtX2JvZHlFbGVtZW50KSB7CisgICAgICAgICAgICAgICAg
Ly8gU2hvdWxkIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKGJvZHlUYWcpKTsgb25jZSB0aGlz
IGlzIGluIGEgY3BwLgorICAgICAgICAgICAgICAgIG1fYm9keUVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxIVE1MQm9keUVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fdG9wLnNldChuZXcgRWxlbWVudFJlY29yZChlbGVtZW50LCBtX3RvcC5yZWxlYXNl
KCkpKTsKICAgICAgICAgICAgIHRvcCgpLT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOwogICAgICAg
ICB9CkBAIC0xNzcsOCArMTkzLDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gY29u
dGFpbnMoZWxlbWVudCk7CiAgICAgICAgIH0KIAorICAgICAgICBIVE1MSHRtbEVsZW1lbnQqIGh0
bWxFbGVtZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1faHRtbEVsZW1lbnQp
OworICAgICAgICAgICAgcmV0dXJuIG1faHRtbEVsZW1lbnQ7CisgICAgICAgIH0KKworICAgICAg
ICBIVE1MQm9keUVsZW1lbnQqIGJvZHlFbGVtZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKG1fYm9keUVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIG1fYm9keUVsZW1lbnQ7
CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIE93blB0cjxFbGVtZW50UmVjb3Jk
PiBtX3RvcDsKKworICAgICAgICAvLyBXZSByZW1lbWJlciB0aGUgSFRNTCBhbmQgYm9keSBhcyB0
aGVpciBwdXNoZWQuICBUaGVpciBFbGVtZW50UmVjb3JkCisgICAgICAgIC8vIGtlZXBzIHRoZW0g
YWxpdmUuICBUaGV5IGFyZSBuZXZlciBwb3BwZWQgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIEhU
TUxIdG1sRWxlbWVudCogbV9odG1sRWxlbWVudDsKKyAgICAgICAgSFRNTEJvZHlFbGVtZW50KiBt
X2JvZHlFbGVtZW50OwogICAgIH07CiAKICAgICB2b2lkIHBhc3NUb2tlblRvTGVnYWN5UGFyc2Vy
KEhUTUxUb2tlbiYpOwpAQCAtMjMyLDYgKzI2NSw4IEBAIHByaXZhdGU6CiAKICAgICBQYXNzUmVm
UHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAKKyAgICB2b2lk
IG1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21pY0hUTUxUb2tlbiYsIEVs
ZW1lbnQqKTsKKwogICAgIGJvb2wgaW5kZXhPZkZpcnN0VW5vcGVuRm9ybWF0dGluZ0VsZW1lbnQo
dW5zaWduZWQmIGZpcnN0VW5vcGVuRWxlbWVudEluZGV4KSBjb25zdDsKICAgICB2b2lkIHJlY29u
c3RydWN0VGhlQWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7CiAgICAgdm9pZCBjbGVhckFjdGl2
ZUZvcm1hdGluZ0VsZW1lbnRzVXBUb0xhc3RNYXJrZXIoKSB7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59995</attachid>
            <date>2010-06-29 00:16:36 -0700</date>
            <delta_ts>2010-06-29 01:46:52 -0700</delta_ts>
            <desc>this doesn&apos;t work</desc>
            <filename>bug-41337-20100629001634.patch</filename>
            <type>text/plain</type>
            <size>6493</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ZjA3NzllMThjMDVlMTY5MDY0YWNiZjdlZGQwODllZWJkNGEyMGEyLi5iMjZkZmVk
MWQ4NjIwZDY5ZTEzYjQ3YjllMDMxZGIxOGM1ZTQxNjZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIEhUTUw1VHJlZUJ1aWxk
ZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1sL2JvZHkgZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzM3CisK
KyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0OiBBZGQgYSB0ZXN0IGZv
ciBkb3VibGUgYm9keS4KKwogMjAxMC0wNi0yOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAxLmRhdCBiL0xheW91dFRlc3RzL2h0
bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5kYXQKaW5kZXggMGExMzQyZmU1MDg1MmFhY2E4YWUw
MjQ4N2FkZTI1NzBkNWQyMjVkYy4uYjdhNmExMDc2OWY1NzVlMDM5MDdkZDYzNWVlN2ExMDAzNTI0
ZDZjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAx
LmRhdAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0CkBA
IC0yMTgsMyArMjE4LDEzIEBAIGNvbnNvbGUubG9nKCJGT088c3Bhbj5CQVI8L3NwYW4+QkFaIik7
CiB8ICAgPGhlYWQ+CiB8ICAgPGJvZHk+CiB8ICAgICAiPCIKKworI2RhdGEKKzxib2R5IGZvbz0n
YmFyJz48Ym9keSBmb289J2JheicgeW89J21hbWEnPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgZm9vPSJiYXIiCit8ICAgICB5bz0i
bWFtYSIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
aW5kZXggYzQ4NWU4MzNlNzBiZWRlM2RlMTRjZWZhOGYxMjY4MWUxNjkyYTJkMy4uMTgyYzlhYmJh
YmE2MDQ1NDVjYmFhNzBmODNmODAyMjFkZTA4NDRiYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNi0y
OCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggSFRNTDVUcmVlQnVpbGRlciBob3cgdG8g
bWVyZ2UgYXR0cmlidXRlcyBmcm9tIGV4dHJhIGh0bWwvYm9keSBlbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzMzcKKworICAgICAgICAq
IGh0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcpOgorICAgICAgICAq
IGh0bWwvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OkVsZW1lbnRTdGFjazo6RWxlbWVudFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpodG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6Ym9keUVsZW1lbnQpOgorCiAyMDEwLTA2
LTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVy
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGY0MjY1NTRlZTc3
NTNiMDI4M2M4MzM4ZmUzYmJlNzg1ZmM3M2I2MWEuLjA0MDIwZDgwNDRkM2I2MzNiY2RiZjVmZTQz
ZWUzOTEwYTZkMTg0ZmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yODYsOSArMjg2
LDIzIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdCZWZvcmVIVE1M
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgbV9vcGVuRWxlbWVudHMucHVzaChhdHRhY2go
bV9kb2N1bWVudCwgZWxlbWVudC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6Omluc2VydEhUTUxTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mKQordm9pZCBIVE1M
VHJlZUJ1aWxkZXI6Om1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4sIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBpZiAoIXRva2VuLmF0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+YXR0cmlidXRlcyhmYWxzZSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+bGVuZ3RoKCk7
ICsraSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMo
KS0+YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLT5nZXRBdHRyaWJ1
dGVJdGVtKGF0dHJpYnV0ZS0+bmFtZSgpKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJp
YnV0ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKKyAgICB9Cit9CisK
K3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKK3sKKyAgICBwYXJzZUVycm9yKHRva2VuKTsKKyAgICBtZXJnZUF0dHJp
YnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMuaHRtbEVsZW1l
bnQoKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWlj
SFRNTFRva2VuJiB0b2tlbikKQEAgLTM3MSw3ICszODUsOCBAQCB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAg
ICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVy
cm9yKHRva2VuKTsKLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisgICAgICAgICAgICBtZXJnZUF0dHJp
YnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMuYm9keUVsZW1l
bnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBmcmFtZXNldFRhZykgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxU
cmVlQnVpbGRlci5oIGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCmluZGV4IDEyMjIy
ZjBhZGYzZTk3YzhjYmIxNzY3OWI0NmJjZDM3ZWUxMjliNTQuLmM3YzYyODEzNTNlNmQ3ZDc4Y2Rl
NDhjMjg2OTMwMzFjZTQwYjEwN2MgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1
aWxkZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTI4LDYgKzI4
LDkgQEAKIAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24uaCIKKyNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MSHRtbEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1M
VG9rZW5pemVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgpAQCAtMTIwLDE0ICsxMjMsMzAgQEAgcHJpdmF0ZToKIAogICAgIGNsYXNzIEVs
ZW1lbnRTdGFjayA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICBF
bGVtZW50U3RhY2soKQorICAgICAgICAgICAgOiBtX2h0bWxFbGVtZW50KDApCisgICAgICAgICAg
ICAsIG1fYm9keUVsZW1lbnQoMCkKKyAgICAgICAgeworICAgICAgICB9CisKICAgICAgICAgdm9p
ZCBwb3AoKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoIXRvcCgpLT5oYXNUYWdOYW1l
KEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgICAgICAgICAgQVNTRVJUKCF0b3AoKS0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKTsKICAgICAgICAgICAgIHRvcCgpLT5maW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKTsKICAgICAgICAgICAgIG1fdG9wID0gbV90b3AtPnJlbGVhc2VOZXh0KCk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIHB1c2goUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVt
ZW50KQogICAgICAgICB7CisgICAgICAgICAgICAvLyBXZSBtYXkgd2lzaCB0byByZW1vdmUgdGhl
c2UgaWZzIGZvciBwZXJmb3JtYW5jZS4KKyAgICAgICAgICAgIGlmICghbV9odG1sRWxlbWVudCkg
eworICAgICAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6
aHRtbFRhZykpOworICAgICAgICAgICAgICAgIG1faHRtbEVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MSHRtbEVsZW1lbnQqPihlbGVtZW50LmdldCgpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
IW1fYm9keUVsZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZWxlbWVudC0+aGFzVGFn
TmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKTsKKyAgICAgICAgICAgICAgICBtX2JvZHlFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTEJvZHlFbGVtZW50Kj4oZWxlbWVudC5nZXQoKSk7CisgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBtX3RvcC5zZXQobmV3IEVsZW1lbnRSZWNvcmQoZWxlbWVudCwg
bV90b3AucmVsZWFzZSgpKSk7CiAgICAgICAgICAgICB0b3AoKS0+YmVnaW5QYXJzaW5nQ2hpbGRy
ZW4oKTsKICAgICAgICAgfQpAQCAtMTc3LDggKzE5NiwyNSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgcmV0dXJuIGNvbnRhaW5zKGVsZW1lbnQpOwogICAgICAgICB9CiAKKyAgICAgICAgSFRNTEh0
bWxFbGVtZW50KiBodG1sRWxlbWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVCht
X2h0bWxFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtX2h0bWxFbGVtZW50OworICAgICAg
ICB9CisKKyAgICAgICAgSFRNTEJvZHlFbGVtZW50KiBib2R5RWxlbWVudCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChtX2JvZHlFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBt
X2JvZHlFbGVtZW50OworICAgICAgICB9CisKICAgICBwcml2YXRlOgogICAgICAgICBPd25QdHI8
RWxlbWVudFJlY29yZD4gbV90b3A7CisKKyAgICAgICAgLy8gV2UgcmVtZW1iZXIgdGhlIEhUTUwg
YW5kIGJvZHkgYXMgdGhlaXIgcHVzaGVkLiAgVGhlaXIgRWxlbWVudFJlY29yZAorICAgICAgICAv
LyBrZWVwcyB0aGVtIGFsaXZlLiAgVGhleSBhcmUgbmV2ZXIgcG9wcGVkIGZyb20gdGhlIHN0YWNr
LgorICAgICAgICBIVE1MSHRtbEVsZW1lbnQqIG1faHRtbEVsZW1lbnQ7CisgICAgICAgIEhUTUxC
b2R5RWxlbWVudCogbV9ib2R5RWxlbWVudDsKICAgICB9OwogCiAgICAgdm9pZCBwYXNzVG9rZW5U
b0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mKTsKQEAgLTIzMiw2ICsyNjgsOCBAQCBwcml2YXRlOgog
CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYp
OwogCisgICAgdm9pZCBtZXJnZUF0dHJpYnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudChBdG9taWNI
VE1MVG9rZW4mLCBFbGVtZW50Kik7CisKICAgICBib29sIGluZGV4T2ZGaXJzdFVub3BlbkZvcm1h
dHRpbmdFbGVtZW50KHVuc2lnbmVkJiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCkgY29uc3Q7CiAg
ICAgdm9pZCByZWNvbnN0cnVjdFRoZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwogICAgIHZv
aWQgY2xlYXJBY3RpdmVGb3JtYXRpbmdFbGVtZW50c1VwVG9MYXN0TWFya2VyKCkgeyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59997</attachid>
            <date>2010-06-29 01:46:55 -0700</date>
            <delta_ts>2010-06-29 16:45:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-41337-20100629014654.patch</filename>
            <type>text/plain</type>
            <size>12552</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4ODEyZDdiODdlM2Q5NTEzOGY0ZmJlMTE3MzE0YjhkYWI0ZjQxZGY4Li43YWVkMTA0
OThiODUxZjExMjNhNzI3Y2QzOGE1NGViMjY3ZWQxYTJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIEhUTUw1VHJlZUJ1aWxk
ZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1sL2JvZHkgZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzM3CisK
KyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0OiBBZGQgYSB0ZXN0IGZv
ciBkb3VibGUgYm9keS4KKwogMjAxMC0wNi0yOCAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0IGIvTGF5b3V0VGVz
dHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAxLmRhdAppbmRleCAwYTEzNDJmZTUwODUyYWFj
YThhZTAyNDg3YWRlMjU3MGQ1ZDIyNWRjLi5iN2E2YTEwNzY5ZjU3NWUwMzkwN2RkNjM1ZWU3YTEw
MDM1MjRkNmMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Vi
a2l0MDEuZGF0CisrKyBiL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5k
YXQKQEAgLTIxOCwzICsyMTgsMTMgQEAgY29uc29sZS5sb2coIkZPTzxzcGFuPkJBUjwvc3Bhbj5C
QVoiKTsKIHwgICA8aGVhZD4KIHwgICA8Ym9keT4KIHwgICAgICI8IgorCisjZGF0YQorPGJvZHkg
Zm9vPSdiYXInPjxib2R5IGZvbz0nYmF6JyB5bz0nbWFtYSc+CisjZXJyb3JzCisjZG9jdW1lbnQK
K3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICBmb289ImJhciIKK3wgICAg
IHlvPSJtYW1hIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVj
dGVkLWh0bWw1LnR4dCBiL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1s
NS50eHQKaW5kZXggOGE2Y2E4NWQwM2NjOWEwNGI0YzQ4ODRiYTBlMDNkNzQwZmE3Njk3Ny4uMTEy
NWZkZWE4NTY4YmQ1MGYzMGFlZWEyNDY2M2QxYWJiYmIwNDBhZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dAorKysgYi9MYXlvdXRUZXN0
cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CkBAIC03Nyw3ICs3Nyw2IEBAIHJl
c291cmNlcy90ZXN0czIuZGF0OgogMTAKIDExCiAxMwotMTQKIDE3CiAxOAogMTkKQEAgLTEwMyw5
ICsxMDIsNyBAQCByZXNvdXJjZXMvdGVzdHMyLmRhdDoKIDQ3CiA0OAogNDkKLTUwCiA1MQotNTIK
IDUzCiA1NAogNTcKQEAgLTI3NSw5ICsyNzIsNyBAQCByZXNvdXJjZXMvdGVzdHMxMi5kYXQ6CiAx
CiAyCiAKLXJlc291cmNlcy90ZXN0czE0LmRhdDoKLTMKLTYKK3Jlc291cmNlcy90ZXN0czE0LmRh
dDogUEFTUwogCiByZXNvdXJjZXMvdGVzdHMxNS5kYXQ6CiAxCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI5MDI5ZTg1NWEwN2I1MDM0ZjUz
ZTQ1YzM4MzFhZjFjOGM2ZGFhODMuLmE5YjM4ZWIzNjBjMmZkNzBmZTcyMTdiNjc4ODczOGE0NDI4
NGI4OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRlYWNoIEhUTUw1VHJlZUJ1aWxkZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRy
YSBodG1sL2JvZHkgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQxMzM3CisKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Om1lcmdlQXR0cmlidXRlc0Zyb21U
b2tlbkludG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6aW5z
ZXJ0SFRNTFN0YXJ0VGFnSW5Cb2R5KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1N0YXJ0VGFnKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OkVsZW1lbnRT
dGFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6
cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6
aHRtbEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50
U3RhY2s6OmJvZHlFbGVtZW50KToKKwogMjAxMC0wNi0yOSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0
c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9XZWJD
b3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCBmNDI2NTU0ZWU3NzUzYjAyODNjODMz
OGZlM2JiZTc4NWZjNzNiNjFhLi5jYjJkMTBjZmJiZTA2YzkxYmFlZjg2ZDRjMDhjMmMyZDAwZjE1
NzBmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjgzLDEyICsyODMsMjYgQEAgdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxTdGFydFRhZ0JlZm9yZUhUTUwoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKIHsKICAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IEhUTUxIdG1s
RWxlbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQpOwogICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZU1h
cCh0b2tlbi5hdHRyaWJ1dGVzKCksIG1fZnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uKTsKLSAg
ICBtX29wZW5FbGVtZW50cy5wdXNoKGF0dGFjaChtX2RvY3VtZW50LCBlbGVtZW50LnJlbGVhc2Uo
KSkpOworICAgIG1fb3BlbkVsZW1lbnRzLnB1c2hIdG1sKGF0dGFjaChtX2RvY3VtZW50LCBlbGVt
ZW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0SFRNTFN0
YXJ0VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYpCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6bWVy
Z2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbiwg
RWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghdG9r
ZW4uYXR0cmlidXRlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBOYW1lZE5vZGVNYXAqIGF0
dHJpYnV0ZXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgdG9rZW4uYXR0cmlidXRlcygpLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAg
IEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9rZW4uYXR0cmlidXRlcygpLT5hdHRyaWJ1dGVJdGVt
KGkpOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMtPmdldEF0dHJpYnV0ZUl0ZW0oYXR0cmlidXRl
LT5uYW1lKCkpKQorICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGF0dHJpYnV0ZS0+
bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworICAgIH0KK30KKwordm9pZCBIVE1MVHJlZUJ1
aWxkZXI6Omluc2VydEhUTUxTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mIHRva2VuKQor
eworICAgIHBhcnNlRXJyb3IodG9rZW4pOworICAgIG1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbklu
dG9FbGVtZW50KHRva2VuLCBtX29wZW5FbGVtZW50cy5odG1sRWxlbWVudCgpKTsKIH0KIAogdm9p
ZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2Vu
KQpAQCAtMzE0LDggKzMyOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRU
YWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGhlYWRUYWcpIHsKLSAgICAgICAgICAgIGlu
c2VydEVsZW1lbnQodG9rZW4pOwotICAgICAgICAgICAgbV9oZWFkRWxlbWVudCA9IGN1cnJlbnRF
bGVtZW50KCk7CisgICAgICAgICAgICBpbnNlcnRIZWFkKHRva2VuKTsKICAgICAgICAgICAgIHNl
dEluc2VydGlvbk1vZGUoSW5IZWFkTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KQEAgLTMzNSw3ICszNDgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0
VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2Vu
Lm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgICAgICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsK
LSAgICAgICAgICAgIGluc2VydEVsZW1lbnQodG9rZW4pOworICAgICAgICAgICAgaW5zZXJ0Qm9k
eSh0b2tlbik7CiAgICAgICAgICAgICBtX2luc2VydGlvbk1vZGUgPSBJbkJvZHlNb2RlOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zNDcsOSArMzYwLDkgQEAgdm9pZCBIVE1M
VHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAg
ICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJhc2VUYWcgfHwgdG9rZW4ubmFtZSgpID09IGxpbmtU
YWcgfHwgdG9rZW4ubmFtZSgpID09IG1ldGFUYWcgfHwgdG9rZW4ubmFtZSgpID09IG5vZnJhbWVz
VGFnIHx8IHRva2VuLm5hbWUoKSA9PSBzY3JpcHRUYWcgfHwgdG9rZW4ubmFtZSgpID09IHN0eWxl
VGFnIHx8IHRva2VuLm5hbWUoKSA9PSB0aXRsZVRhZykgewogICAgICAgICAgICAgcGFyc2VFcnJv
cih0b2tlbik7CiAgICAgICAgICAgICBBU1NFUlQobV9oZWFkRWxlbWVudCk7Ci0gICAgICAgICAg
ICBtX29wZW5FbGVtZW50cy5wdXNoKG1faGVhZEVsZW1lbnQpOworICAgICAgICAgICAgbV9vcGVu
RWxlbWVudHMucHVzaEhlYWQobV9oZWFkRWxlbWVudCk7CiAgICAgICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucmVtb3ZlKG1faGVhZEVsZW1lbnQu
Z2V0KCkpOworICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucG9wSGVhZCgpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaGVhZFRh
ZykgewpAQCAtMzcxLDcgKzM4NCw4IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgfQogICAgICAgICBpZiAodG9r
ZW4ubmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwot
ICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgIG5vdEltcGxlbWVudGVk
KCk7IC8vIGZyYWdtZW50IGNhc2UKKyAgICAgICAgICAgIG1lcmdlQXR0cmlidXRlc0Zyb21Ub2tl
bkludG9FbGVtZW50KHRva2VuLCBtX29wZW5FbGVtZW50cy5ib2R5RWxlbWVudCgpKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGZy
YW1lc2V0VGFnKSB7CkBAIC01OTYsOCArNjEwLDcgQEAgdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnBy
b2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBjYXNlIEluSGVhZE1vZGU6
CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkgPT0gSW5IZWFkTW9kZSk7CiAgICAgICAg
IGlmICh0b2tlbi5uYW1lKCkgPT0gaGVhZFRhZykgewotICAgICAgICAgICAgQVNTRVJUKG1fb3Bl
bkVsZW1lbnRzLnRvcCgpLT50YWdRTmFtZSgpID09IGhlYWRUYWcpOwotICAgICAgICAgICAgbV9v
cGVuRWxlbWVudHMucG9wKCk7CisgICAgICAgICAgICBtX29wZW5FbGVtZW50cy5wb3BIZWFkKCk7
CiAgICAgICAgICAgICBzZXRJbnNlcnRpb25Nb2RlKEFmdGVySGVhZE1vZGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05MzYsMTAgKzk0OSwzMSBAQCB2b2lkIEhUTUxUcmVl
QnVpbGRlcjo6aW5zZXJ0Q29tbWVudE9uRG9jdW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikK
ICAgICBhdHRhY2gobV9kb2N1bWVudCwgQ29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2Vu
LmNvbW1lbnQoKSkpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0RWxlbWVudChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQorUGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVHJlZUJ1aWxk
ZXI6OmNyZWF0ZUVsZW1lbnRBbmRBdHRhY2hUb0N1cnJlbnQoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKIHsKICAgICBBU1NFUlQodG9rZW4udHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwot
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goYXR0YWNoKGN1cnJlbnRFbGVtZW50KCksIGNyZWF0ZUVs
ZW1lbnQodG9rZW4pKSk7CisgICAgcmV0dXJuIGF0dGFjaChjdXJyZW50RWxlbWVudCgpLCBjcmVh
dGVFbGVtZW50KHRva2VuKSk7Cit9CisKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIdG1s
KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaEh0bWwo
Y3JlYXRlRWxlbWVudEFuZEF0dGFjaFRvQ3VycmVudCh0b2tlbikpOworfQorCit2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6aW5zZXJ0SGVhZChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQoreworICAgIG1f
aGVhZEVsZW1lbnQgPSBjcmVhdGVFbGVtZW50QW5kQXR0YWNoVG9DdXJyZW50KHRva2VuKTsKKyAg
ICBtX29wZW5FbGVtZW50cy5wdXNoSGVhZChtX2hlYWRFbGVtZW50KTsKK30KKwordm9pZCBIVE1M
VHJlZUJ1aWxkZXI6Omluc2VydEJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICBt
X29wZW5FbGVtZW50cy5wdXNoQm9keShjcmVhdGVFbGVtZW50QW5kQXR0YWNoVG9DdXJyZW50KHRv
a2VuKSk7Cit9CisKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRFbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYgdG9rZW4pCit7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChjcmVhdGVFbGVtZW50
QW5kQXR0YWNoVG9DdXJyZW50KHRva2VuKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpp
bnNlcnRTZWxmQ2xvc2luZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKQEAgLTk2MSw3
ICs5OTUsNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0Rm9ybWF0dGluZ0VsZW1lbnQo
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEdl
bmVyaWNSQ0RBVEFFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJU
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBpbnNlcnRFbGVtZW50
KHRva2VuKTsKICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRB
U3RhdGUpOwogICAgIG1fb3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwpA
QCAtOTcwLDcgKzEwMDMsNiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2VuZXJpY1JD
REFUQUVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxk
ZXI6Omluc2VydEdlbmVyaWNSYXdUZXh0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQog
ewotICAgIEFTU0VSVCh0b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAg
aW5zZXJ0RWxlbWVudCh0b2tlbik7CiAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tl
bml6ZXI6OlJBV1RFWFRTdGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2lu
c2VydGlvbk1vZGU7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMTIyMjJmMGFkZjNlOTdjOGNi
YjE3Njc5YjQ2YmNkMzdlZTEyOWI1NC4uNTE1OWIwMjMwZGY5YTVkMjQ0ZGI3OTk5MzMyMDQ1N2Vm
Yzc5ZGQ5MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5j
bHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5o
IgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNp
bmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0x
MjAsMTYgKzEyMSw1MyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgRWxlbWVudFN0YWNrIDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CisgICAgICAgIEVsZW1lbnRTdGFjaygpCisg
ICAgICAgICAgICA6IG1faHRtbEVsZW1lbnQoMCkKKyAgICAgICAgICAgICwgbV9oZWFkRWxlbWVu
dCgwKQorICAgICAgICAgICAgLCBtX2JvZHlFbGVtZW50KDApCisgICAgICAgIHsKKyAgICAgICAg
fQorCisgICAgICAgIHZvaWQgcG9wSGVhZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChtX2hlYWRFbGVtZW50ID09IG1faGVhZEVsZW1lbnQpOworICAgICAgICAgICAgbV9oZWFkRWxl
bWVudCA9IDA7CisgICAgICAgICAgICBwb3BDb21tb24oKTsKKyAgICAgICAgfQorCiAgICAgICAg
IHZvaWQgcG9wKCkKICAgICAgICAgewotICAgICAgICAgICAgdG9wKCktPmZpbmlzaFBhcnNpbmdD
aGlsZHJlbigpOwotICAgICAgICAgICAgbV90b3AgPSBtX3RvcC0+cmVsZWFzZU5leHQoKTsKKyAg
ICAgICAgICAgIEFTU0VSVCghdG9wKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpodG1sVGFnKSk7
CisgICAgICAgICAgICBBU1NFUlQoIXRvcCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRh
ZykpOworICAgICAgICAgICAgQVNTRVJUKCF0b3AoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJv
ZHlUYWcpKTsKKyAgICAgICAgICAgIHBvcENvbW1vbigpOworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBwdXNoSHRtbChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVCghbV9odG1sRWxlbWVudCk7CisgICAgICAgICAgICBtX2h0bWxFbGVt
ZW50ID0gZWxlbWVudC5nZXQoKTsKKyAgICAgICAgICAgIHB1c2hDb21tb24oZWxlbWVudCk7Cisg
ICAgICAgIH0KKworICAgICAgICB2b2lkIHB1c2hIZWFkKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxl
bWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKCFtX2hlYWRFbGVtZW50KTsKKyAg
ICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSBlbGVtZW50LmdldCgpOworICAgICAgICAgICAgcHVz
aENvbW1vbihlbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcHVzaEJvZHkoUGFz
c1JlZlB0cjxFbGVtZW50PiBlbGVtZW50KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
IW1fYm9keUVsZW1lbnQpOworICAgICAgICAgICAgbV9ib2R5RWxlbWVudCA9IGVsZW1lbnQuZ2V0
KCk7CisgICAgICAgICAgICBwdXNoQ29tbW9uKGVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAg
ICAgdm9pZCBwdXNoKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKICAgICAgICAgewotICAg
ICAgICAgICAgbV90b3Auc2V0KG5ldyBFbGVtZW50UmVjb3JkKGVsZW1lbnQsIG1fdG9wLnJlbGVh
c2UoKSkpOwotICAgICAgICAgICAgdG9wKCktPmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CisgICAg
ICAgICAgICBBU1NFUlQobV9odG1sRWxlbWVudCk7CisgICAgICAgICAgICBwdXNoQ29tbW9uKGVs
ZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgRWxlbWVudCogdG9wKCkgY29uc3QKQEAgLTE3
Nyw4ICsyMTUsNDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybiBjb250YWlucyhlbGVt
ZW50KTsKICAgICAgICAgfQogCisgICAgICAgIEVsZW1lbnQqIGh0bWxFbGVtZW50KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKG1faHRtbEVsZW1lbnQpOworICAgICAgICAgICAgcmV0
dXJuIG1faHRtbEVsZW1lbnQ7CisgICAgICAgIH0KKworICAgICAgICBFbGVtZW50KiBoZWFkRWxl
bWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2hlYWRFbGVtZW50KTsKKyAg
ICAgICAgICAgIHJldHVybiBtX2hlYWRFbGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgRWxl
bWVudCogYm9keUVsZW1lbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9ib2R5
RWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gbV9ib2R5RWxlbWVudDsKKyAgICAgICAgfQor
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBwdXNoQ29tbW9uKFBhc3NSZWZQdHI8RWxlbWVu
dD4gZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgbV90b3Auc2V0KG5ldyBFbGVtZW50
UmVjb3JkKGVsZW1lbnQsIG1fdG9wLnJlbGVhc2UoKSkpOworICAgICAgICAgICAgdG9wKCktPmJl
Z2luUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHBvcENvbW1v
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRvcCgpLT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4o
KTsKKyAgICAgICAgICAgIG1fdG9wID0gbV90b3AtPnJlbGVhc2VOZXh0KCk7CisgICAgICAgIH0K
KwogICAgICAgICBPd25QdHI8RWxlbWVudFJlY29yZD4gbV90b3A7CisKKyAgICAgICAgLy8gV2Ug
cmVtZW1iZXIgPGh0bWw+LCA8aGVhZD4gYW5kIDxib2R5PiBhcyB0aGVpciBwdXNoZWQuICBUaGVp
cgorICAgICAgICAvLyBFbGVtZW50UmVjb3JkcyBrZWVwIHRoZW0gYWxpdmUuICA8aHRtbD4gYW5k
IDxib2R5PiBhcmUgbmV2ZXIgcG9wcGVkLgorICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY3Vy
cmVudGx5IHJlcXVpcmUgdHlwZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAv
LyB0aGVzZSBlbGVtZW50cyBzbyB3ZSBoYXZlbid0IHlldCBib3RoZXJlZCB0byBwbHVtYiB0aGUg
dHlwZXMgYWxsIHRoZQorICAgICAgICAvLyB3YXkgZG93biB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQs
IGV0Yy4KKyAgICAgICAgRWxlbWVudCogbV9odG1sRWxlbWVudDsKKyAgICAgICAgRWxlbWVudCog
bV9oZWFkRWxlbWVudDsKKyAgICAgICAgRWxlbWVudCogbV9ib2R5RWxlbWVudDsKICAgICB9Owog
CiAgICAgdm9pZCBwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mKTsKQEAgLTIxOSw2
ICsyOTYsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9r
ZW4mKTsKICAgICB2b2lkIGluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9p
ZCBpbnNlcnRDb21tZW50T25Eb2N1bWVudChBdG9taWNIVE1MVG9rZW4mKTsKKyAgICB2b2lkIGlu
c2VydEh0bWwoQXRvbWljSFRNTFRva2VuJik7CisgICAgdm9pZCBpbnNlcnRIZWFkKEF0b21pY0hU
TUxUb2tlbiYpOworICAgIHZvaWQgaW5zZXJ0Qm9keShBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2
b2lkIGluc2VydEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9pZCBpbnNlcnRTZWxm
Q2xvc2luZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9pZCBpbnNlcnRGb3JtYXR0
aW5nRWxlbWVudChBdG9taWNIVE1MVG9rZW4mKTsKQEAgLTIzMSw2ICszMTEsOSBAQCBwcml2YXRl
OgogICAgIHZvaWQgaW5zZXJ0SFRNTFN0YXJ0VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYpOwog
CiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYp
OworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudEFuZEF0dGFjaFRvQ3VycmVu
dChBdG9taWNIVE1MVG9rZW4mKTsKKworICAgIHZvaWQgbWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2Vu
SW50b0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiwgRWxlbWVudCopOwogCiAgICAgYm9vbCBpbmRl
eE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCh1bnNpZ25lZCYgZmlyc3RVbm9wZW5FbGVt
ZW50SW5kZXgpIGNvbnN0OwogICAgIHZvaWQgcmVjb25zdHJ1Y3RUaGVBY3RpdmVGb3JtYXR0aW5n
RWxlbWVudHMoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60071</attachid>
            <date>2010-06-29 16:45:44 -0700</date>
            <delta_ts>2010-06-30 01:06:29 -0700</delta_ts>
            <desc>With Adam&apos;s comments</desc>
            <filename>bug-41337-20100629164542.patch</filename>
            <type>text/plain</type>
            <size>16331</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OWFjOTNlZmY0MzBjZWUyYTUyZGQwYzRhZjM0OTM2YzIyMmI3NTE4Li4zZThhYmRh
YmRjMTUwOGE4MWUyNTZiZTllYzdiMWRiNjQ4NzQzMDcyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIEhUTUw1VHJlZUJ1aWxk
ZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1sL2JvZHkgZWxlbWVudHMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxMzM3CisK
KyAgICAgICAgKiBodG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0OiBBZGQgYSB0ZXN0IGZv
ciBkb3VibGUgYm9keS4KKwogMjAxMC0wNi0yOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5kYXQgYi9MYXlvdXRUZXN0cy9o
dG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0CmluZGV4IDBhMTM0MmZlNTA4NTJhYWNhOGFl
MDI0ODdhZGUyNTcwZDVkMjI1ZGMuLmI3YTZhMTA3NjlmNTc1ZTAzOTA3ZGQ2MzVlZTdhMTAwMzUy
NGQ2YzAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0bWw1bGliL3Jlc291cmNlcy93ZWJraXQw
MS5kYXQKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAxLmRhdApA
QCAtMjE4LDMgKzIxOCwxMyBAQCBjb25zb2xlLmxvZygiRk9PPHNwYW4+QkFSPC9zcGFuPkJBWiIp
OwogfCAgIDxoZWFkPgogfCAgIDxib2R5PgogfCAgICAgIjwiCisKKyNkYXRhCis8Ym9keSBmb289
J2Jhcic+PGJvZHkgZm9vPSdiYXonIHlvPSdtYW1hJz4KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8
aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgIGZvbz0iYmFyIgorfCAgICAgeW89
Im1hbWEiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQt
aHRtbDUudHh0IGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4
dAppbmRleCA4YTZjYTg1ZDAzY2M5YTA0YjRjNDg4NGJhMGUwM2Q3NDBmYTc2OTc3Li4xMTI1ZmRl
YTg1NjhiZDUwZjMwYWVlYTI0NjYzZDFhYmJiYjA0MGFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0CisrKyBiL0xheW91dFRlc3RzL2h0
bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKQEAgLTc3LDcgKzc3LDYgQEAgcmVzb3Vy
Y2VzL3Rlc3RzMi5kYXQ6CiAxMAogMTEKIDEzCi0xNAogMTcKIDE4CiAxOQpAQCAtMTAzLDkgKzEw
Miw3IEBAIHJlc291cmNlcy90ZXN0czIuZGF0OgogNDcKIDQ4CiA0OQotNTAKIDUxCi01MgogNTMK
IDU0CiA1NwpAQCAtMjc1LDkgKzI3Miw3IEBAIHJlc291cmNlcy90ZXN0czEyLmRhdDoKIDEKIDIK
IAotcmVzb3VyY2VzL3Rlc3RzMTQuZGF0OgotMwotNgorcmVzb3VyY2VzL3Rlc3RzMTQuZGF0OiBQ
QVNTCiAKIHJlc291cmNlcy90ZXN0czE1LmRhdDoKIDEKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hh
bmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzIwNjhlYzFjMGRlMjhjMmFkMDEzMjA2
NTRjY2M0ODlkYTgwZmZjMi4uNTA5OTE4MDBkMDRjMTY2YjhhYjdmMWFjYmMzMWYwZjcxNTcyYjFl
MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NSBAQAorMjAxMC0wNi0yOCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVh
Y2ggSFRNTDVUcmVlQnVpbGRlciBob3cgdG8gbWVyZ2UgYXR0cmlidXRlcyBmcm9tIGV4dHJhIGh0
bWwvYm9keSBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDEzMzcKKworICAgICAgICBIYWQgdG8gdGVhY2ggRWxlbWVudFN0YWNrIHRvIHN0
b3JlIHBvaW50ZXJzIHRvIGh0bWwsIGhlYWQsIGFuZCBib2R5CisgICAgICAgIGVsZW1lbnRzLgor
CisgICAgICAgIFRoaXMgZml4ZWQgYSBmZXcgdGVzdHMgaW4gTGF5b3V0VGVzdHMvaHRtbDVsaWIu
CisKKyAgICAgICAgKiBodG1sL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxTdGFydFRhZ0JlZm9yZUhUTUwpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjptZXJnZUF0dHJpYnV0ZXNGcm9tVG9rZW5JbnRv
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxT
dGFydFRhZ0luQm9keSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nl
c3NTdGFydFRhZyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NF
bmRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjcmVhdGVFbGVtZW50
QW5kQXR0YWNoVG9DdXJyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6
aW5zZXJ0SFRNTEh0bWxFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6aW5zZXJ0SFRNTEhlYWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVp
bGRlcjo6aW5zZXJ0SFRNTEJvZHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVl
QnVpbGRlcjo6aW5zZXJ0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6Omluc2VydEdlbmVyaWNSQ0RBVEFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6aW5zZXJ0R2VuZXJpY1Jhd1RleHRFbGVtZW50KToKKyAgICAgICAgKiBodG1s
L0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpF
bGVtZW50U3RhY2s6OkVsZW1lbnRTdGFjayk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OkVsZW1lbnRTdGFjazo6cG9wSFRNTEhlYWRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpwb3ApOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OnB1c2hIVE1MSHRtbEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OnB1c2hIVE1M
SGVhZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50
U3RhY2s6OnB1c2hIVE1MQm9keUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpFbGVtZW50U3RhY2s6OnB1c2gpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpFbGVtZW50U3RhY2s6OnJlbW92ZUhUTUxIZWFkRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6cmVtb3ZlKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpodG1sRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6aGVhZEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OmJv
ZHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0
YWNrOjpwdXNoQ29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxl
bWVudFN0YWNrOjpwb3BDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpFbGVtZW50U3RhY2s6OnJlbW92ZU5vbkZpcnN0Q29tbW9uKToKKwogMjAxMC0wNi0yOSAgWmhl
bnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkg
R2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZjQyNjU1NGVlNzc1M2IwMjgz
YzgzMzhmZTNiYmU3ODVmYzczYjYxYS4uYzBjNTY3YzI1NjNhZjg3OTJiNGI3Mjg1OGVhOGM2Yjg0
Y2VjOTMzMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5jcHAKQEAgLTI4MywxMiArMjgzLDI2IEBA
IHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdCZWZvcmVIVE1MKEF0b21p
Y0hUTUxUb2tlbiYgdG9rZW4pCiB7CiAgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQgPSBIVE1M
SHRtbEVsZW1lbnQ6OmNyZWF0ZShtX2RvY3VtZW50KTsKICAgICBlbGVtZW50LT5zZXRBdHRyaWJ1
dGVNYXAodG9rZW4uYXR0cmlidXRlcygpLCBtX2ZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbik7
Ci0gICAgbV9vcGVuRWxlbWVudHMucHVzaChhdHRhY2gobV9kb2N1bWVudCwgZWxlbWVudC5yZWxl
YXNlKCkpKTsKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoSFRNTEh0bWxFbGVtZW50KGF0dGFjaCht
X2RvY3VtZW50LCBlbGVtZW50LnJlbGVhc2UoKSkpOwogfQogCi12b2lkIEhUTUxUcmVlQnVpbGRl
cjo6aW5zZXJ0SFRNTFN0YXJ0VGFnSW5Cb2R5KEF0b21pY0hUTUxUb2tlbiYpCit2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbWljSFRN
TFRva2VuJiB0b2tlbiwgRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIGlmICghdG9rZW4uYXR0cmlidXRlcygpKQorICAgICAgICByZXR1cm47CisKKyAgICBO
YW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKGZhbHNlKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdG9rZW4uYXR0cmlidXRlcygpLT5sZW5ndGgoKTsg
KytpKSB7CisgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gdG9rZW4uYXR0cmlidXRlcygp
LT5hdHRyaWJ1dGVJdGVtKGkpOworICAgICAgICBpZiAoIWF0dHJpYnV0ZXMtPmdldEF0dHJpYnV0
ZUl0ZW0oYXR0cmlidXRlLT5uYW1lKCkpKQorICAgICAgICAgICAgZWxlbWVudC0+c2V0QXR0cmli
dXRlKGF0dHJpYnV0ZS0+bmFtZSgpLCBhdHRyaWJ1dGUtPnZhbHVlKCkpOworICAgIH0KK30KKwor
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxTdGFydFRhZ0luQm9keShBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQoreworICAgIHBhcnNlRXJyb3IodG9rZW4pOworICAgIG1lcmdlQXR0cmli
dXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KHRva2VuLCBtX29wZW5FbGVtZW50cy5odG1sRWxlbWVu
dCgpKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFydFRhZyhBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQpAQCAtMzE0LDggKzMyOCw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVy
Ojpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGhlYWRUYWcpIHsK
LSAgICAgICAgICAgIGluc2VydEVsZW1lbnQodG9rZW4pOwotICAgICAgICAgICAgbV9oZWFkRWxl
bWVudCA9IGN1cnJlbnRFbGVtZW50KCk7CisgICAgICAgICAgICBpbnNlcnRIVE1MSGVhZEVsZW1l
bnQodG9rZW4pOwogICAgICAgICAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbkhlYWRNb2RlKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzM1LDcgKzM0OCw3IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAg
ICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAg
ICAgIG1fZnJhbWVzZXRPayA9IGZhbHNlOwotICAgICAgICAgICAgaW5zZXJ0RWxlbWVudCh0b2tl
bik7CisgICAgICAgICAgICBpbnNlcnRIVE1MQm9keUVsZW1lbnQodG9rZW4pOwogICAgICAgICAg
ICAgbV9pbnNlcnRpb25Nb2RlID0gSW5Cb2R5TW9kZTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtMzQ3LDkgKzM2MCw5IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgaWYgKHRva2VuLm5hbWUo
KSA9PSBiYXNlVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBsaW5rVGFnIHx8IHRva2VuLm5hbWUoKSA9
PSBtZXRhVGFnIHx8IHRva2VuLm5hbWUoKSA9PSBub2ZyYW1lc1RhZyB8fCB0b2tlbi5uYW1lKCkg
PT0gc2NyaXB0VGFnIHx8IHRva2VuLm5hbWUoKSA9PSBzdHlsZVRhZyB8fCB0b2tlbi5uYW1lKCkg
PT0gdGl0bGVUYWcpIHsKICAgICAgICAgICAgIHBhcnNlRXJyb3IodG9rZW4pOwogICAgICAgICAg
ICAgQVNTRVJUKG1faGVhZEVsZW1lbnQpOwotICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucHVz
aChtX2hlYWRFbGVtZW50KTsKKyAgICAgICAgICAgIG1fb3BlbkVsZW1lbnRzLnB1c2hIVE1MSGVh
ZEVsZW1lbnQobV9oZWFkRWxlbWVudCk7CiAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwot
ICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucmVtb3ZlKG1faGVhZEVsZW1lbnQuZ2V0KCkpOwor
ICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucmVtb3ZlSFRNTEhlYWRFbGVtZW50KG1faGVhZEVs
ZW1lbnQuZ2V0KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlm
ICh0b2tlbi5uYW1lKCkgPT0gaGVhZFRhZykgewpAQCAtMzcxLDcgKzM4NCw4IEBAIHZvaWQgSFRN
TFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAg
ICAgICAgfQogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGJvZHlUYWcpIHsKICAgICAgICAg
ICAgIHBhcnNlRXJyb3IodG9rZW4pOwotICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7IC8vIGZyYWdtZW50IGNhc2UKKyAgICAgICAgICAg
IG1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KHRva2VuLCBtX29wZW5FbGVtZW50
cy5ib2R5RWxlbWVudCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAg
ICBpZiAodG9rZW4ubmFtZSgpID09IGZyYW1lc2V0VGFnKSB7CkBAIC01OTYsOCArNjEwLDcgQEAg
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NFbmRUYWcoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKICAgICBjYXNlIEluSGVhZE1vZGU6CiAgICAgICAgIEFTU0VSVChpbnNlcnRpb25Nb2RlKCkg
PT0gSW5IZWFkTW9kZSk7CiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkgPT0gaGVhZFRhZykgewot
ICAgICAgICAgICAgQVNTRVJUKG1fb3BlbkVsZW1lbnRzLnRvcCgpLT50YWdRTmFtZSgpID09IGhl
YWRUYWcpOwotICAgICAgICAgICAgbV9vcGVuRWxlbWVudHMucG9wKCk7CisgICAgICAgICAgICBt
X29wZW5FbGVtZW50cy5wb3BIVE1MSGVhZEVsZW1lbnQoKTsKICAgICAgICAgICAgIHNldEluc2Vy
dGlvbk1vZGUoQWZ0ZXJIZWFkTW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTkzNiwxMCArOTQ5LDMxIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRDb21tZW50
T25Eb2N1bWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogICAgIGF0dGFjaChtX2RvY3VtZW50
LCBDb21tZW50OjpjcmVhdGUobV9kb2N1bWVudCwgdG9rZW4uY29tbWVudCgpKSk7CiB9CiAKLXZv
aWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CitQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlRWxlbWVudEFuZEF0
dGFjaFRvQ3VycmVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewogICAgIEFTU0VSVCh0b2tl
bi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7Ci0gICAgbV9vcGVuRWxlbWVudHMucHVz
aChhdHRhY2goY3VycmVudEVsZW1lbnQoKSwgY3JlYXRlRWxlbWVudCh0b2tlbikpKTsKKyAgICBy
ZXR1cm4gYXR0YWNoKGN1cnJlbnRFbGVtZW50KCksIGNyZWF0ZUVsZW1lbnQodG9rZW4pKTsKK30K
Kwordm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEhUTUxIdG1sRWxlbWVudChBdG9taWNIVE1M
VG9rZW4mIHRva2VuKQoreworICAgIG1fb3BlbkVsZW1lbnRzLnB1c2hIVE1MSHRtbEVsZW1lbnQo
Y3JlYXRlRWxlbWVudEFuZEF0dGFjaFRvQ3VycmVudCh0b2tlbikpOworfQorCit2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6aW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
Cit7CisgICAgbV9oZWFkRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnRBbmRBdHRhY2hUb0N1cnJlbnQo
dG9rZW4pOworICAgIG1fb3BlbkVsZW1lbnRzLnB1c2hIVE1MSGVhZEVsZW1lbnQobV9oZWFkRWxl
bWVudCk7Cit9CisKK3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MQm9keUVsZW1lbnQo
QXRvbWljSFRNTFRva2VuJiB0b2tlbikKK3sKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoSFRNTEJv
ZHlFbGVtZW50KGNyZWF0ZUVsZW1lbnRBbmRBdHRhY2hUb0N1cnJlbnQodG9rZW4pKTsKK30KKwor
dm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tl
bikKK3sKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoKGNyZWF0ZUVsZW1lbnRBbmRBdHRhY2hUb0N1
cnJlbnQodG9rZW4pKTsKIH0KIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydFNlbGZDbG9z
aW5nRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQpAQCAtOTYxLDcgKzk5NSw2IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRGb3JtYXR0aW5nRWxlbWVudChBdG9taWNIVE1MVG9r
ZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2VuZXJpY1JDREFUQUVs
ZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKLSAgICBBU1NFUlQodG9rZW4udHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwogICAgIGluc2VydEVsZW1lbnQodG9rZW4pOwogICAg
IG1fdG9rZW5pemVyLT5zZXRTdGF0ZShIVE1MVG9rZW5pemVyOjpSQ0RBVEFTdGF0ZSk7CiAgICAg
bV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CkBAIC05NzAsNyArMTAw
Myw2IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRHZW5lcmljUkNEQVRBRWxlbWVudChB
dG9taWNIVE1MVG9rZW4mIHRva2VuKQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2Vu
ZXJpY1Jhd1RleHRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJU
KHRva2VuLnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBpbnNlcnRFbGVtZW50
KHRva2VuKTsKICAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkFXVEVY
VFN0YXRlKTsKICAgICBtX29yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IG1faW5zZXJ0aW9uTW9kZTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MVHJlZUJ1aWxkZXIuaAppbmRleCAxMjIyMmYwYWRmM2U5N2M4Y2JiMTc2NzliNDZiY2Qz
N2VlMTI5YjU0Li4zMTkxNWNlZjg3NzA4NzYzMTJlMDNkNzg3ZWYwNGRlNWQyYzY3MjI5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvV2ViQ29yZS9odG1s
L0hUTUxUcmVlQnVpbGRlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFbGVtZW50
LmgiCiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KQEAgLTEyMCwxNiArMTIxLDU3
IEBAIHByaXZhdGU6CiAKICAgICBjbGFzcyBFbGVtZW50U3RhY2sgOiBwdWJsaWMgTm9uY29weWFi
bGUgewogICAgIHB1YmxpYzoKKyAgICAgICAgRWxlbWVudFN0YWNrKCkKKyAgICAgICAgICAgIDog
bV9odG1sRWxlbWVudCgwKQorICAgICAgICAgICAgLCBtX2hlYWRFbGVtZW50KDApCisgICAgICAg
ICAgICAsIG1fYm9keUVsZW1lbnQoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAg
dm9pZCBwb3BIVE1MSGVhZEVsZW1lbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
dG9wKCkgPT0gbV9oZWFkRWxlbWVudCk7CisgICAgICAgICAgICBtX2hlYWRFbGVtZW50ID0gMDsK
KyAgICAgICAgICAgIHBvcENvbW1vbigpOworICAgICAgICB9CisKICAgICAgICAgdm9pZCBwb3Ao
KQogICAgICAgICB7Ci0gICAgICAgICAgICB0b3AoKS0+ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7
Ci0gICAgICAgICAgICBtX3RvcCA9IG1fdG9wLT5yZWxlYXNlTmV4dCgpOworICAgICAgICAgICAg
QVNTRVJUKCF0b3AoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmhlYWRUYWcpKTsKKyAgICAgICAg
ICAgIHBvcENvbW1vbigpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBwdXNoSFRNTEh0bWxF
bGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpodG1sVGFnKSk7CisgICAg
ICAgICAgICBBU1NFUlQoIW1faHRtbEVsZW1lbnQpOworICAgICAgICAgICAgbV9odG1sRWxlbWVu
dCA9IGVsZW1lbnQuZ2V0KCk7CisgICAgICAgICAgICBwdXNoQ29tbW9uKGVsZW1lbnQpOworICAg
ICAgICB9CisKKyAgICAgICAgdm9pZCBwdXNoSFRNTEhlYWRFbGVtZW50KFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7CisgICAgICAgICAgICBBU1NFUlQoIW1faGVh
ZEVsZW1lbnQpOworICAgICAgICAgICAgbV9oZWFkRWxlbWVudCA9IGVsZW1lbnQuZ2V0KCk7Cisg
ICAgICAgICAgICBwdXNoQ29tbW9uKGVsZW1lbnQpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBwdXNoSFRNTEJvZHlFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpi
b2R5VGFnKSk7CisgICAgICAgICAgICBBU1NFUlQoIW1fYm9keUVsZW1lbnQpOworICAgICAgICAg
ICAgbV9ib2R5RWxlbWVudCA9IGVsZW1lbnQuZ2V0KCk7CisgICAgICAgICAgICBwdXNoQ29tbW9u
KGVsZW1lbnQpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBwdXNoKFBhc3NSZWZQdHI8RWxl
bWVudD4gZWxlbWVudCkKICAgICAgICAgewotICAgICAgICAgICAgbV90b3Auc2V0KG5ldyBFbGVt
ZW50UmVjb3JkKGVsZW1lbnQsIG1fdG9wLnJlbGVhc2UoKSkpOwotICAgICAgICAgICAgdG9wKCkt
PmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgICAgICAgICBBU1NFUlQoIWVsZW1lbnQtPmhh
c1RhZ05hbWUoSFRNTE5hbWVzOjpodG1sVGFnKSk7CisgICAgICAgICAgICBBU1NFUlQoIWVsZW1l
bnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7CisgICAgICAgICAgICBBU1NFUlQo
IWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpib2R5VGFnKSk7CisgICAgICAgICAgICBB
U1NFUlQobV9odG1sRWxlbWVudCk7CisgICAgICAgICAgICBwdXNoQ29tbW9uKGVsZW1lbnQpOwog
ICAgICAgICB9CiAKICAgICAgICAgRWxlbWVudCogdG9wKCkgY29uc3QKQEAgLTEzNywxOSArMTc5
LDI1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV90b3AtPmVsZW1lbnQoKTsKICAg
ICAgICAgfQogCisgICAgICAgIHZvaWQgcmVtb3ZlSFRNTEhlYWRFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2hlYWRFbGVtZW50ID09IGVs
ZW1lbnQpOworICAgICAgICAgICAgaWYgKG1fdG9wLT5lbGVtZW50KCkgPT0gZWxlbWVudCkgewor
ICAgICAgICAgICAgICAgIHBvcEhUTUxIZWFkRWxlbWVudCgpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSAwOworICAg
ICAgICAgICAgcmVtb3ZlTm9uRmlyc3RDb21tb24oZWxlbWVudCk7CisgICAgICAgIH0KKwogICAg
ICAgICB2b2lkIHJlbW92ZShFbGVtZW50KiBlbGVtZW50KQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoIWVsZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7CiAgICAg
ICAgICAgICBpZiAobV90b3AtPmVsZW1lbnQoKSA9PSBlbGVtZW50KSB7CiAgICAgICAgICAgICAg
ICAgcG9wKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgRWxlbWVudFJlY29yZCogcG9zID0gbV90b3AuZ2V0KCk7Ci0gICAgICAgICAgICB3aGls
ZSAocG9zLT5uZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBpZiAocG9zLT5uZXh0KCktPmVsZW1l
bnQoKSA9PSBlbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIHBvcy0+c2V0TmV4dChwb3Mt
Pm5leHQoKS0+cmVsZWFzZU5leHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZW1vdmVOb25GaXJz
dENvbW1vbihlbGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgY29udGFpbnMoRWxl
bWVudCogZWxlbWVudCkgY29uc3QKQEAgLTE3Nyw4ICsyMjUsNjcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIHJldHVybiBjb250YWlucyhlbGVtZW50KTsKICAgICAgICAgfQogCisgICAgICAgIEVs
ZW1lbnQqIGh0bWxFbGVtZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKG1faHRt
bEVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIG1faHRtbEVsZW1lbnQ7CisgICAgICAgIH0K
KworICAgICAgICBFbGVtZW50KiBoZWFkRWxlbWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChtX2hlYWRFbGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtX2hlYWRFbGVtZW50
OworICAgICAgICB9CisKKyAgICAgICAgRWxlbWVudCogYm9keUVsZW1lbnQoKQorICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQobV9ib2R5RWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4g
bV9ib2R5RWxlbWVudDsKKyAgICAgICAgfQorCiAgICAgcHJpdmF0ZToKKyAgICAgICAgdm9pZCBw
dXNoQ29tbW9uKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV90b3Auc2V0KG5ldyBFbGVtZW50UmVjb3JkKGVsZW1lbnQsIG1fdG9wLnJlbGVhc2Uo
KSkpOworICAgICAgICAgICAgdG9wKCktPmJlZ2luUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgICAg
IH0KKworICAgICAgICB2b2lkIHBvcENvbW1vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVCghdG9wKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpodG1sVGFnKSk7CisgICAgICAgICAg
ICBBU1NFUlQoIXRvcCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOworICAgICAg
ICAgICAgdG9wKCktPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworICAgICAgICAgICAgbV90b3Ag
PSBtX3RvcC0+cmVsZWFzZU5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVtb3Zl
Tm9uRmlyc3RDb21tb24oRWxlbWVudCogZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgICAg
ICAgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOwor
ICAgICAgICAgICAgRWxlbWVudFJlY29yZCogcG9zID0gbV90b3AuZ2V0KCk7CisgICAgICAgICAg
ICBBU1NFUlQocG9zLT5lbGVtZW50KCkgIT0gZWxlbWVudCk7CisgICAgICAgICAgICB3aGlsZSAo
cG9zLT5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zLT5uZXh0KCktPmVsZW1lbnQo
KSA9PSBlbGVtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBJcyBpdCBPSyB0
byBjYWxsIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCisgICAgICAgICAgICAgICAgICAgIC8vIHdo
ZW4gdGhlIGNoaWxkcmVuIGFyZW4ndCBhY3R1YWxseSBmaW5pc2hlZD8KKyAgICAgICAgICAgICAg
ICAgICAgZWxlbWVudC0+ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CisgICAgICAgICAgICAgICAg
ICAgIHBvcy0+c2V0TmV4dChwb3MtPm5leHQoKS0+cmVsZWFzZU5leHQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorCiAgICAgICAgIE93blB0
cjxFbGVtZW50UmVjb3JkPiBtX3RvcDsKKworICAgICAgICAvLyBXZSByZW1lbWJlciA8aHRtbD4s
IDxoZWFkPiBhbmQgPGJvZHk+IGFzIHRoZWlyIHB1c2hlZC4gIFRoZWlyCisgICAgICAgIC8vIEVs
ZW1lbnRSZWNvcmRzIGtlZXAgdGhlbSBhbGl2ZS4gIDxodG1sPiBhbmQgPGJvZHk+IGFyZSBuZXZl
ciBwb3BwZWQuCisgICAgICAgIC8vIEZJWE1FOiBXZSBkb24ndCBjdXJyZW50bHkgcmVxdWlyZSB0
eXBlLXNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0CisgICAgICAgIC8vIHRoZXNlIGVsZW1lbnRz
IHNvIHdlIGhhdmVuJ3QgeWV0IGJvdGhlcmVkIHRvIHBsdW1iIHRoZSB0eXBlcyBhbGwgdGhlCisg
ICAgICAgIC8vIHdheSBkb3duIHRocm91Z2ggY3JlYXRlRWxlbWVudCwgZXRjLgorICAgICAgICBF
bGVtZW50KiBtX2h0bWxFbGVtZW50OworICAgICAgICBFbGVtZW50KiBtX2hlYWRFbGVtZW50Owor
ICAgICAgICBFbGVtZW50KiBtX2JvZHlFbGVtZW50OwogICAgIH07CiAKICAgICB2b2lkIHBhc3NU
b2tlblRvTGVnYWN5UGFyc2VyKEhUTUxUb2tlbiYpOwpAQCAtMjE5LDYgKzMyNiw5IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBpbnNlcnREb2N0eXBlKEF0b21pY0hUTUxUb2tlbiYpOwogICAgIHZvaWQg
aW5zZXJ0Q29tbWVudChBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2b2lkIGluc2VydENvbW1lbnRP
bkRvY3VtZW50KEF0b21pY0hUTUxUb2tlbiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEh0bWxFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEhlYWRFbGVtZW50KEF0
b21pY0hUTUxUb2tlbiYpOworICAgIHZvaWQgaW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0b21pY0hU
TUxUb2tlbiYpOwogICAgIHZvaWQgaW5zZXJ0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mKTsKICAg
ICB2b2lkIGluc2VydFNlbGZDbG9zaW5nRWxlbWVudChBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2
b2lkIGluc2VydEZvcm1hdHRpbmdFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYpOwpAQCAtMjMxLDYg
KzM0MSw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBpbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkoQXRv
bWljSFRNTFRva2VuJik7CiAKICAgICBQYXNzUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnQo
QXRvbWljSFRNTFRva2VuJik7CisgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50
QW5kQXR0YWNoVG9DdXJyZW50KEF0b21pY0hUTUxUb2tlbiYpOworCisgICAgdm9pZCBtZXJnZUF0
dHJpYnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudChBdG9taWNIVE1MVG9rZW4mLCBFbGVtZW50Kik7
CiAKICAgICBib29sIGluZGV4T2ZGaXJzdFVub3BlbkZvcm1hdHRpbmdFbGVtZW50KHVuc2lnbmVk
JiBmaXJzdFVub3BlbkVsZW1lbnRJbmRleCkgY29uc3Q7CiAgICAgdm9pZCByZWNvbnN0cnVjdFRo
ZUFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60095</attachid>
            <date>2010-06-30 01:06:41 -0700</date>
            <delta_ts>2010-06-30 01:06:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-41337-20100630010637.patch</filename>
            <type>text/plain</type>
            <size>16332</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZTZjMmI1ODgzOWVmOWVkMjdjZmM0YzMzZTQ4NzU4NGEyMGZmZmQ0Li40YWEwODlm
N2FlMjQ2ZTQxZTQ2NTk5OWEwNWM3YTRlZTY3YzJkZjhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTAtMDYtMjggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgVGVhY2ggSFRNTDVUcmVlQnVpbGRlciBo
b3cgdG8gbWVyZ2UgYXR0cmlidXRlcyBmcm9tIGV4dHJhIGh0bWwvYm9keSBlbGVtZW50cworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDEzMzcKKworICAg
ICAgICAqIGh0bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5kYXQ6IEFkZCBhIHRlc3QgZm9yIGRv
dWJsZSBib2R5LgorCiAyMDEwLTA2LTMwICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAxLmRhdCBiL0xheW91dFRlc3RzL2h0
bWw1bGliL3Jlc291cmNlcy93ZWJraXQwMS5kYXQKaW5kZXggMGExMzQyZmU1MDg1MmFhY2E4YWUw
MjQ4N2FkZTI1NzBkNWQyMjVkYy4uYjdhNmExMDc2OWY1NzVlMDM5MDdkZDYzNWVlN2ExMDAzNTI0
ZDZjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL3dlYmtpdDAx
LmRhdAorKysgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvd2Via2l0MDEuZGF0CkBA
IC0yMTgsMyArMjE4LDEzIEBAIGNvbnNvbGUubG9nKCJGT088c3Bhbj5CQVI8L3NwYW4+QkFaIik7
CiB8ICAgPGhlYWQ+CiB8ICAgPGJvZHk+CiB8ICAgICAiPCIKKworI2RhdGEKKzxib2R5IGZvbz0n
YmFyJz48Ym9keSBmb289J2JheicgeW89J21hbWEnPgorI2Vycm9ycworI2RvY3VtZW50Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgZm9vPSJiYXIiCit8ICAgICB5bz0i
bWFtYSIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1o
dG1sNS50eHQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9ydW5uZXItZXhwZWN0ZWQtaHRtbDUudHh0
CmluZGV4IDhhNmNhODVkMDNjYzlhMDRiNGM0ODg0YmEwZTAzZDc0MGZhNzY5NzcuLjExMjVmZGVh
ODU2OGJkNTBmMzBhZWVhMjQ2NjNkMWFiYmJiMDQwYWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0bWw1bGliL3J1bm5lci1leHBlY3RlZC1odG1sNS50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHRt
bDVsaWIvcnVubmVyLWV4cGVjdGVkLWh0bWw1LnR4dApAQCAtNzcsNyArNzcsNiBAQCByZXNvdXJj
ZXMvdGVzdHMyLmRhdDoKIDEwCiAxMQogMTMKLTE0CiAxNwogMTgKIDE5CkBAIC0xMDMsOSArMTAy
LDcgQEAgcmVzb3VyY2VzL3Rlc3RzMi5kYXQ6CiA0NwogNDgKIDQ5Ci01MAogNTEKLTUyCiA1Mwog
NTQKIDU3CkBAIC0yNzUsOSArMjcyLDcgQEAgcmVzb3VyY2VzL3Rlc3RzMTIuZGF0OgogMQogMgog
Ci1yZXNvdXJjZXMvdGVzdHMxNC5kYXQ6Ci0zCi02CityZXNvdXJjZXMvdGVzdHMxNC5kYXQ6IFBB
U1MKIAogcmVzb3VyY2VzL3Rlc3RzMTUuZGF0OgogMQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFu
Z2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDIwMTEyOTM5NWU2MTFjN2I3ZmUzY2Mz
NDIyNTI1M2QwYTFmMDlmLi5hMmU3Mjc0ODA2ZWFlMzAzOTE5NzI1YzU2ZTY4ZGZiNDk4NWViYjQ2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ1IEBACisyMDEwLTA2LTI4ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFRlYWNoIEhU
TUw1VHJlZUJ1aWxkZXIgaG93IHRvIG1lcmdlIGF0dHJpYnV0ZXMgZnJvbSBleHRyYSBodG1sL2Jv
ZHkgZWxlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQxMzM3CisKKyAgICAgICAgSGFkIHRvIHRlYWNoIEVsZW1lbnRTdGFjayB0byBzdG9yZSBw
b2ludGVycyB0byBodG1sLCBoZWFkLCBhbmQgYm9keQorICAgICAgICBlbGVtZW50cy4KKworICAg
ICAgICBUaGlzIGZpeGVkIGEgZmV3IHRlc3RzIGluIExheW91dFRlc3RzL2h0bWw1bGliLgorCisg
ICAgICAgICogaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdCZWZvcmVIVE1MKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6bWVyZ2VBdHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRU
YWdJbkJvZHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFn
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlRWxlbWVudEFuZEF0
dGFjaFRvQ3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omluc2Vy
dEhUTUxIdG1sRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6Omlu
c2VydEhUTUxIZWFkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6
Omluc2VydEhUTUxCb2R5RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6Omluc2VydEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpp
bnNlcnRHZW5lcmljUkNEQVRBRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6Omluc2VydEdlbmVyaWNSYXdUZXh0RWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1M
VHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVu
dFN0YWNrOjpFbGVtZW50U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVy
OjpFbGVtZW50U3RhY2s6OnBvcEhUTUxIZWFkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6cG9wKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpwdXNoSFRNTEh0bWxFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpwdXNoSFRNTEhlYWRF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNr
OjpwdXNoSFRNTEJvZHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RWxlbWVudFN0YWNrOjpwdXNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRl
cjo6RWxlbWVudFN0YWNrOjpyZW1vdmVIVE1MSGVhZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OnJlbW92ZSk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6aHRtbEVsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpFbGVtZW50U3RhY2s6OmhlYWRFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxlbWVudFN0YWNrOjpib2R5RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRTdGFjazo6
cHVzaENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkVsZW1lbnRT
dGFjazo6cG9wQ29tbW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RWxl
bWVudFN0YWNrOjpyZW1vdmVOb25GaXJzdENvbW1vbik6CisKIDIwMTAtMDYtMzAgIFl1em8gRnVq
aXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1dl
YkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IGY0MjY1NTRlZTc3NTNiMDI4M2M4
MzM4ZmUzYmJlNzg1ZmM3M2I2MWEuLmMwYzU2N2MyNTYzYWY4NzkyYjRiNzI4NThlYThjNmI4NGNl
YzkzMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yODMsMTIgKzI4MywyNiBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0SFRNTFN0YXJ0VGFnQmVmb3JlSFRNTChBdG9taWNI
VE1MVG9rZW4mIHRva2VuKQogewogICAgIFJlZlB0cjxFbGVtZW50PiBlbGVtZW50ID0gSFRNTEh0
bWxFbGVtZW50OjpjcmVhdGUobV9kb2N1bWVudCk7CiAgICAgZWxlbWVudC0+c2V0QXR0cmlidXRl
TWFwKHRva2VuLmF0dHJpYnV0ZXMoKSwgbV9mcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24pOwot
ICAgIG1fb3BlbkVsZW1lbnRzLnB1c2goYXR0YWNoKG1fZG9jdW1lbnQsIGVsZW1lbnQucmVsZWFz
ZSgpKSk7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaEhUTUxIdG1sRWxlbWVudChhdHRhY2gobV9k
b2N1bWVudCwgZWxlbWVudC5yZWxlYXNlKCkpKTsKIH0KIAotdm9pZCBIVE1MVHJlZUJ1aWxkZXI6
Omluc2VydEhUTUxTdGFydFRhZ0luQm9keShBdG9taWNIVE1MVG9rZW4mKQordm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6Om1lcmdlQXR0cmlidXRlc0Zyb21Ub2tlbkludG9FbGVtZW50KEF0b21pY0hUTUxU
b2tlbiYgdG9rZW4sIEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBpZiAoIXRva2VuLmF0dHJpYnV0ZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTmFt
ZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0gZWxlbWVudC0+YXR0cmlidXRlcyhmYWxzZSk7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRva2VuLmF0dHJpYnV0ZXMoKS0+bGVuZ3RoKCk7ICsr
aSkgeworICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IHRva2VuLmF0dHJpYnV0ZXMoKS0+
YXR0cmlidXRlSXRlbShpKTsKKyAgICAgICAgaWYgKCFhdHRyaWJ1dGVzLT5nZXRBdHRyaWJ1dGVJ
dGVtKGF0dHJpYnV0ZS0+bmFtZSgpKSkKKyAgICAgICAgICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0
ZShhdHRyaWJ1dGUtPm5hbWUoKSwgYXR0cmlidXRlLT52YWx1ZSgpKTsKKyAgICB9Cit9CisKK3Zv
aWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MU3RhcnRUYWdJbkJvZHkoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKK3sKKyAgICBwYXJzZUVycm9yKHRva2VuKTsKKyAgICBtZXJnZUF0dHJpYnV0
ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMuaHRtbEVsZW1lbnQo
KSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWcoQXRvbWljSFRN
TFRva2VuJiB0b2tlbikKQEAgLTMxNCw4ICszMjgsNyBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBoZWFkVGFnKSB7Ci0g
ICAgICAgICAgICBpbnNlcnRFbGVtZW50KHRva2VuKTsKLSAgICAgICAgICAgIG1faGVhZEVsZW1l
bnQgPSBjdXJyZW50RWxlbWVudCgpOworICAgICAgICAgICAgaW5zZXJ0SFRNTEhlYWRFbGVtZW50
KHRva2VuKTsKICAgICAgICAgICAgIHNldEluc2VydGlvbk1vZGUoSW5IZWFkTW9kZSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMzNSw3ICszNDgsNyBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgICAg
ICBtX2ZyYW1lc2V0T2sgPSBmYWxzZTsKLSAgICAgICAgICAgIGluc2VydEVsZW1lbnQodG9rZW4p
OworICAgICAgICAgICAgaW5zZXJ0SFRNTEJvZHlFbGVtZW50KHRva2VuKTsKICAgICAgICAgICAg
IG1faW5zZXJ0aW9uTW9kZSA9IEluQm9keU1vZGU7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KQEAgLTM0Nyw5ICszNjAsOSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0
YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAgICAgIGlmICh0b2tlbi5uYW1lKCkg
PT0gYmFzZVRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gbGlua1RhZyB8fCB0b2tlbi5uYW1lKCkgPT0g
bWV0YVRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gbm9mcmFtZXNUYWcgfHwgdG9rZW4ubmFtZSgpID09
IHNjcmlwdFRhZyB8fCB0b2tlbi5uYW1lKCkgPT0gc3R5bGVUYWcgfHwgdG9rZW4ubmFtZSgpID09
IHRpdGxlVGFnKSB7CiAgICAgICAgICAgICBwYXJzZUVycm9yKHRva2VuKTsKICAgICAgICAgICAg
IEFTU0VSVChtX2hlYWRFbGVtZW50KTsKLSAgICAgICAgICAgIG1fb3BlbkVsZW1lbnRzLnB1c2go
bV9oZWFkRWxlbWVudCk7CisgICAgICAgICAgICBtX29wZW5FbGVtZW50cy5wdXNoSFRNTEhlYWRF
bGVtZW50KG1faGVhZEVsZW1lbnQpOwogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgICAgIG1fb3BlbkVsZW1lbnRzLnJlbW92ZShtX2hlYWRFbGVtZW50LmdldCgpKTsKKyAg
ICAgICAgICAgIG1fb3BlbkVsZW1lbnRzLnJlbW92ZUhUTUxIZWFkRWxlbWVudChtX2hlYWRFbGVt
ZW50LmdldCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAo
dG9rZW4ubmFtZSgpID09IGhlYWRUYWcpIHsKQEAgLTM3MSw3ICszODQsOCBAQCB2b2lkIEhUTUxU
cmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHRva2VuLm5hbWUoKSA9PSBib2R5VGFnKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKHRva2VuKTsKLSAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOyAvLyBmcmFnbWVudCBjYXNlCisgICAgICAgICAgICBt
ZXJnZUF0dHJpYnV0ZXNGcm9tVG9rZW5JbnRvRWxlbWVudCh0b2tlbiwgbV9vcGVuRWxlbWVudHMu
Ym9keUVsZW1lbnQoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAg
aWYgKHRva2VuLm5hbWUoKSA9PSBmcmFtZXNldFRhZykgewpAQCAtNTk2LDggKzYxMCw3IEBAIHZv
aWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzRW5kVGFnKEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
CiAgICAgY2FzZSBJbkhlYWRNb2RlOgogICAgICAgICBBU1NFUlQoaW5zZXJ0aW9uTW9kZSgpID09
IEluSGVhZE1vZGUpOwogICAgICAgICBpZiAodG9rZW4ubmFtZSgpID09IGhlYWRUYWcpIHsKLSAg
ICAgICAgICAgIEFTU0VSVChtX29wZW5FbGVtZW50cy50b3AoKS0+dGFnUU5hbWUoKSA9PSBoZWFk
VGFnKTsKLSAgICAgICAgICAgIG1fb3BlbkVsZW1lbnRzLnBvcCgpOworICAgICAgICAgICAgbV9v
cGVuRWxlbWVudHMucG9wSFRNTEhlYWRFbGVtZW50KCk7CiAgICAgICAgICAgICBzZXRJbnNlcnRp
b25Nb2RlKEFmdGVySGVhZE1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBA
IC05MzYsMTAgKzk0OSwzMSBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0Q29tbWVudE9u
RG9jdW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICBhdHRhY2gobV9kb2N1bWVudCwg
Q29tbWVudDo6Y3JlYXRlKG1fZG9jdW1lbnQsIHRva2VuLmNvbW1lbnQoKSkpOwogfQogCi12b2lk
IEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQor
UGFzc1JlZlB0cjxFbGVtZW50PiBIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZUVsZW1lbnRBbmRBdHRh
Y2hUb0N1cnJlbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKIHsKICAgICBBU1NFUlQodG9rZW4u
dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpOwotICAgIG1fb3BlbkVsZW1lbnRzLnB1c2go
YXR0YWNoKGN1cnJlbnRFbGVtZW50KCksIGNyZWF0ZUVsZW1lbnQodG9rZW4pKSk7CisgICAgcmV0
dXJuIGF0dGFjaChjdXJyZW50RWxlbWVudCgpLCBjcmVhdGVFbGVtZW50KHRva2VuKSk7Cit9CisK
K3ZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRIVE1MSHRtbEVsZW1lbnQoQXRvbWljSFRNTFRv
a2VuJiB0b2tlbikKK3sKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoSFRNTEh0bWxFbGVtZW50KGNy
ZWF0ZUVsZW1lbnRBbmRBdHRhY2hUb0N1cnJlbnQodG9rZW4pKTsKK30KKwordm9pZCBIVE1MVHJl
ZUJ1aWxkZXI6Omluc2VydEhUTUxIZWFkRWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQor
eworICAgIG1faGVhZEVsZW1lbnQgPSBjcmVhdGVFbGVtZW50QW5kQXR0YWNoVG9DdXJyZW50KHRv
a2VuKTsKKyAgICBtX29wZW5FbGVtZW50cy5wdXNoSFRNTEhlYWRFbGVtZW50KG1faGVhZEVsZW1l
bnQpOworfQorCit2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0SFRNTEJvZHlFbGVtZW50KEF0
b21pY0hUTUxUb2tlbiYgdG9rZW4pCit7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaEhUTUxCb2R5
RWxlbWVudChjcmVhdGVFbGVtZW50QW5kQXR0YWNoVG9DdXJyZW50KHRva2VuKSk7Cit9CisKK3Zv
aWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRFbGVtZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4p
Cit7CisgICAgbV9vcGVuRWxlbWVudHMucHVzaChjcmVhdGVFbGVtZW50QW5kQXR0YWNoVG9DdXJy
ZW50KHRva2VuKSk7CiB9CiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjppbnNlcnRTZWxmQ2xvc2lu
Z0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKQEAgLTk2MSw3ICs5OTUsNiBAQCB2b2lk
IEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0Rm9ybWF0dGluZ0VsZW1lbnQoQXRvbWljSFRNTFRva2Vu
JiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEdlbmVyaWNSQ0RBVEFFbGVt
ZW50KEF0b21pY0hUTUxUb2tlbiYgdG9rZW4pCiB7Ci0gICAgQVNTRVJUKHRva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKTsKICAgICBpbnNlcnRFbGVtZW50KHRva2VuKTsKICAgICBt
X3Rva2VuaXplci0+c2V0U3RhdGUoSFRNTFRva2VuaXplcjo6UkNEQVRBU3RhdGUpOwogICAgIG1f
b3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gbV9pbnNlcnRpb25Nb2RlOwpAQCAtOTcwLDcgKzEwMDMs
NiBAQCB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6aW5zZXJ0R2VuZXJpY1JDREFUQUVsZW1lbnQoQXRv
bWljSFRNTFRva2VuJiB0b2tlbikKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6Omluc2VydEdlbmVy
aWNSYXdUZXh0RWxlbWVudChBdG9taWNIVE1MVG9rZW4mIHRva2VuKQogewotICAgIEFTU0VSVCh0
b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZyk7CiAgICAgaW5zZXJ0RWxlbWVudCh0
b2tlbik7CiAgICAgbV90b2tlbml6ZXItPnNldFN0YXRlKEhUTUxUb2tlbml6ZXI6OlJBV1RFWFRT
dGF0ZSk7CiAgICAgbV9vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBtX2luc2VydGlvbk1vZGU7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRyZWVCdWlsZGVyLmggYi9XZWJDb3JlL2h0bWwv
SFRNTFRyZWVCdWlsZGVyLmgKaW5kZXggMTIyMjJmMGFkZjNlOTdjOGNiYjE3Njc5YjQ2YmNkMzdl
ZTEyOWI1NC4uOWY0OGVmNGJhOGNlMTY5ZmZhYTQ4OTg2N2NiZWJlYjYzZTVjYmM1MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUcmVlQnVpbGRlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9I
VE1MVHJlZUJ1aWxkZXIuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbi5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CkBAIC0xMjAsMTYgKzEyMSw1NyBA
QCBwcml2YXRlOgogCiAgICAgY2xhc3MgRWxlbWVudFN0YWNrIDogcHVibGljIE5vbmNvcHlhYmxl
IHsKICAgICBwdWJsaWM6CisgICAgICAgIEVsZW1lbnRTdGFjaygpCisgICAgICAgICAgICA6IG1f
aHRtbEVsZW1lbnQoMCkKKyAgICAgICAgICAgICwgbV9oZWFkRWxlbWVudCgwKQorICAgICAgICAg
ICAgLCBtX2JvZHlFbGVtZW50KDApCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIHZv
aWQgcG9wSFRNTEhlYWRFbGVtZW50KCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHRv
cCgpID09IG1faGVhZEVsZW1lbnQpOworICAgICAgICAgICAgbV9oZWFkRWxlbWVudCA9IDA7Cisg
ICAgICAgICAgICBwb3BDb21tb24oKTsKKyAgICAgICAgfQorCiAgICAgICAgIHZvaWQgcG9wKCkK
ICAgICAgICAgewotICAgICAgICAgICAgdG9wKCktPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwot
ICAgICAgICAgICAgbV90b3AgPSBtX3RvcC0+cmVsZWFzZU5leHQoKTsKKyAgICAgICAgICAgIEFT
U0VSVCghdG9wKCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpoZWFkVGFnKSk7CisgICAgICAgICAg
ICBwb3BDb21tb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcHVzaEhUTUxIdG1sRWxl
bWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgICAg
ICAgICAgQVNTRVJUKCFtX2h0bWxFbGVtZW50KTsKKyAgICAgICAgICAgIG1faHRtbEVsZW1lbnQg
PSBlbGVtZW50LmdldCgpOworICAgICAgICAgICAgcHVzaENvbW1vbihlbGVtZW50KTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgcHVzaEhUTUxIZWFkRWxlbWVudChQYXNzUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpOworICAgICAgICAgICAgQVNTRVJUKCFtX2hlYWRF
bGVtZW50KTsKKyAgICAgICAgICAgIG1faGVhZEVsZW1lbnQgPSBlbGVtZW50LmdldCgpOworICAg
ICAgICAgICAgcHVzaENvbW1vbihlbGVtZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQg
cHVzaEhUTUxCb2R5RWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9k
eVRhZykpOworICAgICAgICAgICAgQVNTRVJUKCFtX2JvZHlFbGVtZW50KTsKKyAgICAgICAgICAg
IG1fYm9keUVsZW1lbnQgPSBlbGVtZW50LmdldCgpOworICAgICAgICAgICAgcHVzaENvbW1vbihl
bGVtZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgcHVzaChQYXNzUmVmUHRyPEVsZW1l
bnQ+IGVsZW1lbnQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIG1fdG9wLnNldChuZXcgRWxlbWVu
dFJlY29yZChlbGVtZW50LCBtX3RvcC5yZWxlYXNlKCkpKTsKLSAgICAgICAgICAgIHRvcCgpLT5i
ZWdpblBhcnNpbmdDaGlsZHJlbigpOworICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgICAgICAgICAgQVNTRVJUKCFlbGVtZW50
LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpOworICAgICAgICAgICAgQVNTRVJUKCFl
bGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykpOworICAgICAgICAgICAgQVNT
RVJUKG1faHRtbEVsZW1lbnQpOworICAgICAgICAgICAgcHVzaENvbW1vbihlbGVtZW50KTsKICAg
ICAgICAgfQogCiAgICAgICAgIEVsZW1lbnQqIHRvcCgpIGNvbnN0CkBAIC0xMzcsMTkgKzE3OSwy
NSBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuIG1fdG9wLT5lbGVtZW50KCk7CiAgICAg
ICAgIH0KIAorICAgICAgICB2b2lkIHJlbW92ZUhUTUxIZWFkRWxlbWVudChFbGVtZW50KiBlbGVt
ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQobV9oZWFkRWxlbWVudCA9PSBlbGVt
ZW50KTsKKyAgICAgICAgICAgIGlmIChtX3RvcC0+ZWxlbWVudCgpID09IGVsZW1lbnQpIHsKKyAg
ICAgICAgICAgICAgICBwb3BIVE1MSGVhZEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2hlYWRFbGVtZW50ID0gMDsKKyAgICAg
ICAgICAgIHJlbW92ZU5vbkZpcnN0Q29tbW9uKGVsZW1lbnQpOworICAgICAgICB9CisKICAgICAg
ICAgdm9pZCByZW1vdmUoRWxlbWVudCogZWxlbWVudCkKICAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKCFlbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aGVhZFRhZykpOwogICAgICAg
ICAgICAgaWYgKG1fdG9wLT5lbGVtZW50KCkgPT0gZWxlbWVudCkgewogICAgICAgICAgICAgICAg
IHBvcCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIEVsZW1lbnRSZWNvcmQqIHBvcyA9IG1fdG9wLmdldCgpOwotICAgICAgICAgICAgd2hpbGUg
KHBvcy0+bmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHBvcy0+bmV4dCgpLT5lbGVtZW50
KCkgPT0gZWxlbWVudCkgewotICAgICAgICAgICAgICAgICAgICBwb3MtPnNldE5leHQocG9zLT5u
ZXh0KCktPnJlbGVhc2VOZXh0KCkpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVtb3ZlTm9uRmlyc3RD
b21tb24oZWxlbWVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGNvbnRhaW5zKEVsZW1l
bnQqIGVsZW1lbnQpIGNvbnN0CkBAIC0xNzcsOCArMjI1LDY3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICByZXR1cm4gY29udGFpbnMoZWxlbWVudCk7CiAgICAgICAgIH0KIAorICAgICAgICBFbGVt
ZW50KiBodG1sRWxlbWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChtX2h0bWxF
bGVtZW50KTsKKyAgICAgICAgICAgIHJldHVybiBtX2h0bWxFbGVtZW50OworICAgICAgICB9CisK
KyAgICAgICAgRWxlbWVudCogaGVhZEVsZW1lbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQobV9oZWFkRWxlbWVudCk7CisgICAgICAgICAgICByZXR1cm4gbV9oZWFkRWxlbWVudDsK
KyAgICAgICAgfQorCisgICAgICAgIEVsZW1lbnQqIGJvZHlFbGVtZW50KCkKKyAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKG1fYm9keUVsZW1lbnQpOworICAgICAgICAgICAgcmV0dXJuIG1f
Ym9keUVsZW1lbnQ7CisgICAgICAgIH0KKwogICAgIHByaXZhdGU6CisgICAgICAgIHZvaWQgcHVz
aENvbW1vbihQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fdG9wLnNldChuZXcgRWxlbWVudFJlY29yZChlbGVtZW50LCBtX3RvcC5yZWxlYXNlKCkp
KTsKKyAgICAgICAgICAgIHRvcCgpLT5iZWdpblBhcnNpbmdDaGlsZHJlbigpOworICAgICAgICB9
CisKKyAgICAgICAgdm9pZCBwb3BDb21tb24oKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoIXRvcCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6aHRtbFRhZykpOworICAgICAgICAgICAg
QVNTRVJUKCF0b3AoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKTsKKyAgICAgICAg
ICAgIHRvcCgpLT5maW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgIG1fdG9wID0g
bV90b3AtPnJlbGVhc2VOZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHJlbW92ZU5v
bkZpcnN0Q29tbW9uKEVsZW1lbnQqIGVsZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Omh0bWxUYWcpKTsKKyAgICAgICAg
ICAgIEFTU0VSVCghZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmJvZHlUYWcpKTsKKyAg
ICAgICAgICAgIEVsZW1lbnRSZWNvcmQqIHBvcyA9IG1fdG9wLmdldCgpOworICAgICAgICAgICAg
QVNTRVJUKHBvcy0+ZWxlbWVudCgpICE9IGVsZW1lbnQpOworICAgICAgICAgICAgd2hpbGUgKHBv
cy0+bmV4dCgpKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvcy0+bmV4dCgpLT5lbGVtZW50KCkg
PT0gZWxlbWVudCkgeworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogSXMgaXQgT0sgdG8g
Y2FsbCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQorICAgICAgICAgICAgICAgICAgICAvLyB3aGVu
IHRoZSBjaGlsZHJlbiBhcmVuJ3QgYWN0dWFsbHkgZmluaXNoZWQ/CisgICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQtPmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOworICAgICAgICAgICAgICAgICAg
ICBwb3MtPnNldE5leHQocG9zLT5uZXh0KCktPnJlbGVhc2VOZXh0KCkpOworICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKwogICAgICAgICBPd25QdHI8
RWxlbWVudFJlY29yZD4gbV90b3A7CisKKyAgICAgICAgLy8gV2UgcmVtZW1iZXIgPGh0bWw+LCA8
aGVhZD4gYW5kIDxib2R5PiBhcyB0aGV5IGFyZSBwdXNoZWQuICBUaGVpcgorICAgICAgICAvLyBF
bGVtZW50UmVjb3JkcyBrZWVwIHRoZW0gYWxpdmUuICA8aHRtbD4gYW5kIDxib2R5PiBhcmUgbmV2
ZXIgcG9wcGVkLgorICAgICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgY3VycmVudGx5IHJlcXVpcmUg
dHlwZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBhYm91dAorICAgICAgICAvLyB0aGVzZSBlbGVtZW50
cyBzbyB3ZSBoYXZlbid0IHlldCBib3RoZXJlZCB0byBwbHVtYiB0aGUgdHlwZXMgYWxsIHRoZQor
ICAgICAgICAvLyB3YXkgZG93biB0aHJvdWdoIGNyZWF0ZUVsZW1lbnQsIGV0Yy4KKyAgICAgICAg
RWxlbWVudCogbV9odG1sRWxlbWVudDsKKyAgICAgICAgRWxlbWVudCogbV9oZWFkRWxlbWVudDsK
KyAgICAgICAgRWxlbWVudCogbV9ib2R5RWxlbWVudDsKICAgICB9OwogCiAgICAgdm9pZCBwYXNz
VG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MVG9rZW4mKTsKQEAgLTIxOSw2ICszMjYsOSBAQCBwcml2
YXRlOgogICAgIHZvaWQgaW5zZXJ0RG9jdHlwZShBdG9taWNIVE1MVG9rZW4mKTsKICAgICB2b2lk
IGluc2VydENvbW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAgdm9pZCBpbnNlcnRDb21tZW50
T25Eb2N1bWVudChBdG9taWNIVE1MVG9rZW4mKTsKKyAgICB2b2lkIGluc2VydEhUTUxIdG1sRWxl
bWVudChBdG9taWNIVE1MVG9rZW4mKTsKKyAgICB2b2lkIGluc2VydEhUTUxIZWFkRWxlbWVudChB
dG9taWNIVE1MVG9rZW4mKTsKKyAgICB2b2lkIGluc2VydEhUTUxCb2R5RWxlbWVudChBdG9taWNI
VE1MVG9rZW4mKTsKICAgICB2b2lkIGluc2VydEVsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAg
ICAgdm9pZCBpbnNlcnRTZWxmQ2xvc2luZ0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJik7CiAgICAg
dm9pZCBpbnNlcnRGb3JtYXR0aW5nRWxlbWVudChBdG9taWNIVE1MVG9rZW4mKTsKQEAgLTIzMSw2
ICszNDEsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5zZXJ0SFRNTFN0YXJ0VGFnSW5Cb2R5KEF0
b21pY0hUTUxUb2tlbiYpOwogCiAgICAgUGFzc1JlZlB0cjxFbGVtZW50PiBjcmVhdGVFbGVtZW50
KEF0b21pY0hUTUxUb2tlbiYpOworICAgIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVu
dEFuZEF0dGFjaFRvQ3VycmVudChBdG9taWNIVE1MVG9rZW4mKTsKKworICAgIHZvaWQgbWVyZ2VB
dHRyaWJ1dGVzRnJvbVRva2VuSW50b0VsZW1lbnQoQXRvbWljSFRNTFRva2VuJiwgRWxlbWVudCop
OwogCiAgICAgYm9vbCBpbmRleE9mRmlyc3RVbm9wZW5Gb3JtYXR0aW5nRWxlbWVudCh1bnNpZ25l
ZCYgZmlyc3RVbm9wZW5FbGVtZW50SW5kZXgpIGNvbnN0OwogICAgIHZvaWQgcmVjb25zdHJ1Y3RU
aGVBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTsK
</data>
<flag name="commit-queue"
          id="47369"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>