<?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>71903</bug_id>
          
          <creation_ts>2011-11-09 06:42:34 -0800</creation_ts>
          <short_desc>[chromium] Missing wait() in CCThreadProxy::setVisible</short_desc>
          <delta_ts>2011-11-11 18:05:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72102</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Iain Merrick">husky</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>husky</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>498891</commentid>
    <comment_count>0</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 06:42:34 -0800</bug_when>
    <thetext>[chromium] Missing wait() in CCThreadProxy::setVisible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498892</commentid>
    <comment_count>1</comment_count>
      <attachid>114262</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 06:43:12 -0800</bug_when>
    <thetext>Created attachment 114262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498897</commentid>
    <comment_count>2</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-09 06:46:00 -0800</bug_when>
    <thetext>setVisible() returns immediately, so the CCCompletionEvent is deleted before the compositor thread has had a chance to call signal().

I&apos;ve added an ASSERT which should catch similar bugs in future.

Haven&apos;t yet figured out a good way to test this. Neither our unit tests nor any existing layout tests seem to call setVisible(). I guess I&apos;ll have to create a new CCThreadProxyTest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499092</commentid>
    <comment_count>3</comment_count>
      <attachid>114262</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-09 10:00:22 -0800</bug_when>
    <thetext>Comment on attachment 114262
Patch

s/signalled/signaled

The fix makes sense.

I like the guards.

Unofficial lgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499224</commentid>
    <comment_count>4</comment_count>
      <attachid>114262</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-09 12:01:43 -0800</bug_when>
    <thetext>Comment on attachment 114262
Patch

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

No chance of a unit test? We have some CCLayerTreeHostTests that bounce between threads already.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCCompletionEvent.h:56
&gt; +        ASSERT(!m_waited &amp;&amp; (m_waited = true));

side-effects in an ASSERT() is pretty ugly - can you just do the assignment in an #ifndef NDEBUG block?  this reads like a bug, not something intentional

&gt; Source/WebCore/platform/graphics/chromium/cc/CCCompletionEvent.h:63
&gt; +        ASSERT(!m_signalled &amp;&amp; (m_signalled = true));

same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499910</commentid>
    <comment_count>5</comment_count>
      <attachid>114262</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 08:03:00 -0800</bug_when>
    <thetext>Comment on attachment 114262
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCCompletionEvent.h:56
&gt;&gt; +        ASSERT(!m_waited &amp;&amp; (m_waited = true));
&gt; 
&gt; side-effects in an ASSERT() is pretty ugly - can you just do the assignment in an #ifndef NDEBUG block?  this reads like a bug, not something intentional

The #ifdef felt a bit noisy, but you&apos;re right, this is just icky. Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499911</commentid>
    <comment_count>6</comment_count>
      <attachid>114502</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 08:09:30 -0800</bug_when>
    <thetext>Created attachment 114502
Made asserts less hacky</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499956</commentid>
    <comment_count>7</comment_count>
      <attachid>114502</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 08:51:59 -0800</bug_when>
    <thetext>Comment on attachment 114502
Made asserts less hacky

I&apos;m going to add a new test case in CCLayerTreeHostTest, but it&apos;s not quite working as expected -- there may be further sneaky problems with setVisible().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500002</commentid>
    <comment_count>8</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 09:36:31 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 114502 [details])
&gt; I&apos;m going to add a new test case in CCLayerTreeHostTest, but it&apos;s not quite working as expected -- there may be further sneaky problems with setVisible().

Aha, I see what&apos;s going on: setVisible(true) is asynchronous, so it only gets pushed to the CCScheduler at commit time, but commits are suppressed while we&apos;re invisible.

Allowing commits while !visible works around this, but I&apos;m not sure it&apos;s correct. I wonder if the core state machine should be checking visibility at all? Doing draws and commits while invisible isn&apos;t *wrong*, it&apos;s just inefficient. So maybe we should suppress those at a higher level, in the main thread.

Anyway, I&apos;ll amend the patch and you can judge for yourself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500008</commentid>
    <comment_count>9</comment_count>
      <attachid>114522</attachid>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 09:45:53 -0800</bug_when>
    <thetext>Created attachment 114522
Added unit test, fixed setVisible(true)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500009</commentid>
    <comment_count>10</comment_count>
    <who name="Iain Merrick">husky</who>
    <bug_when>2011-11-10 09:47:01 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=114522) [details]
&gt; Added unit test, fixed setVisible(true)

Also Americanizzzed the spelling of &quot;signaled&quot; to keep Nat happy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500019</commentid>
    <comment_count>11</comment_count>
      <attachid>114522</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 09:58:49 -0800</bug_when>
    <thetext>Comment on attachment 114522
Added unit test, fixed setVisible(true)

Suppressing commits when not visible is an efficiency that we can&apos;t afford to not have.

Should we pass visible state across explicitly instead of relying on setNeedsCommit() / pushing in the commit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500027</commentid>
    <comment_count>12</comment_count>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-10 10:12:25 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (From update of attachment 114502 [details] [details])
&gt; &gt; I&apos;m going to add a new test case in CCLayerTreeHostTest, but it&apos;s not quite working as expected -- there may be further sneaky problems with setVisible().
&gt; 
&gt; Aha, I see what&apos;s going on: setVisible(true) is asynchronous, so it only gets pushed to the CCScheduler at commit time, but commits are suppressed while we&apos;re invisible.
&gt; 
&gt; Allowing commits while !visible works around this, but I&apos;m not sure it&apos;s correct. I wonder if the core state machine should be checking visibility at all? Doing draws and commits while invisible isn&apos;t *wrong*, it&apos;s just inefficient. So maybe we should suppress those at a higher level, in the main thread.
&gt; 
&gt; Anyway, I&apos;ll amend the patch and you can judge for yourself.

Wait, what&apos;s the expectation when setVisible(true)? Afaik, that should be a noop...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500300</commentid>
    <comment_count>13</comment_count>
      <attachid>114574</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 14:40:00 -0800</bug_when>
    <thetext>Created attachment 114574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500308</commentid>
    <comment_count>14</comment_count>
      <attachid>114579</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 14:44:51 -0800</bug_when>
    <thetext>Created attachment 114579
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500309</commentid>
    <comment_count>15</comment_count>
      <attachid>114579</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-10 14:45:18 -0800</bug_when>
    <thetext>Comment on attachment 114579
Patch

This makes setVisible always synchronous and pushes visible state through that message only instead of hooking into the commit flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500523</commentid>
    <comment_count>16</comment_count>
      <attachid>114579</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-10 22:09:23 -0800</bug_when>
    <thetext>Comment on attachment 114579
Patch

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

Coolies. Thanks James and Iain.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:263
&gt; +        m_schedulerOnImplThread-&gt;setNeedsCommit();

why needs commit? if you just go away and come back and the page is truly idle, that wont be necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500969</commentid>
    <comment_count>17</comment_count>
      <attachid>114745</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 11:34:30 -0800</bug_when>
    <thetext>Created attachment 114745
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501031</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 13:18:00 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCThreadProxy.cpp:263
&gt; &gt; +        m_schedulerOnImplThread-&gt;setNeedsCommit();
&gt; 
&gt; why needs commit? if you just go away and come back and the page is truly idle, that wont be necessary.

Removed - it&apos;s not necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501249</commentid>
    <comment_count>19</comment_count>
      <attachid>114745</attachid>
    <who name="Nat Duca">nduca</who>
    <bug_when>2011-11-11 17:17:16 -0800</bug_when>
    <thetext>Comment on attachment 114745
Patch

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

LGTM

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:214
&gt; +        callOnMainThread(visible ? CCLayerTreeHostTest::dispatchSetVisible : CCLayerTreeHostTest::dispatchSetInvisible, this);

is this because callOnMainThread doesn&apos;t support args? Its fine if that&apos;s the case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501251</commentid>
    <comment_count>20</comment_count>
      <attachid>114745</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-11-11 17:19:40 -0800</bug_when>
    <thetext>Comment on attachment 114745
Patch

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

&gt;&gt; Source/WebKit/chromium/tests/CCLayerTreeHostTest.cpp:214
&gt;&gt; +        callOnMainThread(visible ? CCLayerTreeHostTest::dispatchSetVisible : CCLayerTreeHostTest::dispatchSetInvisible, this);
&gt; 
&gt; is this because callOnMainThread doesn&apos;t support args? Its fine if that&apos;s the case.

Yeah I think (this part is from Iain&apos;s patch, but that&apos;s the reason I would have guessed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501278</commentid>
    <comment_count>21</comment_count>
      <attachid>114745</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 18:05:54 -0800</bug_when>
    <thetext>Comment on attachment 114745
Patch

Clearing flags on attachment: 114745

Committed r100055: &lt;http://trac.webkit.org/changeset/100055&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501279</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 18:05:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114262</attachid>
            <date>2011-11-09 06:43:12 -0800</date>
            <delta_ts>2011-11-10 08:09:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71903-20111109144310.patch</filename>
            <type>text/plain</type>
            <size>2989</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NzAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMDkgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNaXNzaW5nIHdh
aXQoKSBpbiBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDb21wbGV0aW9uRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50
OjpDQ0NvbXBsZXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRpb25FdmVu
dDo6fkNDQ29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2
ZW50Ojp3YWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50OjpzaWduYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSk6CisKIDIw
MTEtMTEtMDkgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgogCiAgICAg
ICAgIFtQYXJ0IDFdIFBhcnNlIHRoZSBjdXN0b20oKSBmdW5jdGlvbiBpbiAtd2Via2l0LWZpbHRl
cgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0ND
b21wbGV0aW9uRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCShyZXZpc2lvbiA5OTY5MykK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxl
dGlvbkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDM1ICszMCw0OCBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAvLyBVc2VkIGZvciBtYWtpbmcgYmxvY2tpbmcgY2FsbHMgZnJvbSBvbmUg
dGhyZWFkIHRvIGFub3RoZXIuIFVzZSBvbmx5IHdoZW4KLS8vIGFic29sdXRlbHkgY2VydGFpbiB0
aGF0IGRvaW5nLXNvIHdpbGwgbm90IGxlYWQgdG8gYSBsaXZlbG9jay4KKy8vIGFic29sdXRlbHkg
Y2VydGFpbiB0aGF0IGRvaW5nLXNvIHdpbGwgbm90IGxlYWQgdG8gYSBkZWFkbG9jay4KIC8vCiAv
LyBJdCBpcyBzYWZlIHRvIGRlc3Ryb3kgdGhpcyBvYmplY3QgYXMgc29vbiBhcyB3YWl0KCkgcmV0
dXJucy4KIGNsYXNzIENDQ29tcGxldGlvbkV2ZW50IHsKIHB1YmxpYzoKICAgICBDQ0NvbXBsZXRp
b25FdmVudCgpCiAgICAgeworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV93YWl0ZWQgPSBmYWxz
ZTsKKyAgICAgICAgbV9zaWduYWxsZWQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICBtX211dGV4
LmxvY2soKTsKICAgICB9CiAKICAgICB+Q0NDb21wbGV0aW9uRXZlbnQoKQogICAgIHsKICAgICAg
ICAgbV9tdXRleC51bmxvY2soKTsKKyAgICAgICAgQVNTRVJUKG1fd2FpdGVkKTsKKyAgICAgICAg
QVNTRVJUKG1fc2lnbmFsbGVkKTsKICAgICB9CiAKICAgICB2b2lkIHdhaXQoKQogICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3dhaXRlZCAmJiAobV93YWl0ZWQgPSB0cnVlKSk7CiAgICAgICAgIG1f
Y29uZGl0aW9uLndhaXQobV9tdXRleCk7CiAgICAgfQogCiAgICAgdm9pZCBzaWduYWwoKQogICAg
IHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgQVNTRVJUKCFt
X3NpZ25hbGxlZCAmJiAobV9zaWduYWxsZWQgPSB0cnVlKSk7CiAgICAgICAgIG1fY29uZGl0aW9u
LnNpZ25hbCgpOwogICAgIH0KIAogcHJpdmF0ZToKICAgICBNdXRleCBtX211dGV4OwogICAgIFRo
cmVhZENvbmRpdGlvbiBtX2NvbmRpdGlvbjsKKyNpZm5kZWYgTkRFQlVHCisgICAgLy8gVXNlZCB0
byBhc3NlcnQgdGhhdCB3YWl0KCkgYW5kIHNpZ25hbCgpIGFyZSBlYWNoIGNhbGxlZCBleGFjdGx5
IG9uY2UuCisgICAgYm9vbCBtX3dhaXRlZDsKKyAgICBib29sIG1fc2lnbmFsbGVkOworI2VuZGlm
CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmNwcAkocmV2aXNpb24gOTk2
OTMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDYgKzI1MSw3IEBAIHZvaWQgQ0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZShib29sIHZpc2kKICAgICBpZiAoIXZpc2libGUpIHsKICAg
ICAgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKICAgICAgICAgc19jY1RocmVhZC0+
cG9zdFRhc2soY3JlYXRlQ0NUaHJlYWRUYXNrKHRoaXMsICZDQ1RocmVhZFByb3h5OjpkaWRCZWNv
bWVJbnZpc2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRp
b24pKSk7CisgICAgICAgIGNvbXBsZXRpb24ud2FpdCgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogICAgIHNldE5lZWRzUmVkcmF3KCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114502</attachid>
            <date>2011-11-10 08:09:30 -0800</date>
            <delta_ts>2011-11-10 09:45:45 -0800</delta_ts>
            <desc>Made asserts less hacky</desc>
            <filename>bug-71903-20111110160929.patch</filename>
            <type>text/plain</type>
            <size>3057</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBNaXNzaW5nIHdh
aXQoKSBpbiBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTkwMworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NDb21wbGV0aW9uRXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50
OjpDQ0NvbXBsZXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRpb25FdmVu
dDo6fkNDQ29tcGxldGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2
ZW50Ojp3YWl0KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50OjpzaWduYWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSk6CisKIDIw
MTEtMTEtMTAgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAg
ICAgICAgW0dUS10gc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1jaGFuZ2UtY29udGVudC1zaXplLnho
dG1sIGNyYXNoZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaAkocmV2aXNp
b24gOTk4NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0NvbXBsZXRpb25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwzNSArMzAsNTQgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogLy8gVXNlZCBmb3IgbWFraW5nIGJsb2NraW5nIGNhbGxz
IGZyb20gb25lIHRocmVhZCB0byBhbm90aGVyLiBVc2Ugb25seSB3aGVuCi0vLyBhYnNvbHV0ZWx5
IGNlcnRhaW4gdGhhdCBkb2luZy1zbyB3aWxsIG5vdCBsZWFkIHRvIGEgbGl2ZWxvY2suCisvLyBh
YnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCBkb2luZy1zbyB3aWxsIG5vdCBsZWFkIHRvIGEgZGVhZGxv
Y2suCiAvLwogLy8gSXQgaXMgc2FmZSB0byBkZXN0cm95IHRoaXMgb2JqZWN0IGFzIHNvb24gYXMg
d2FpdCgpIHJldHVybnMuCiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudCB7CiBwdWJsaWM6CiAgICAg
Q0NDb21wbGV0aW9uRXZlbnQoKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fd2Fp
dGVkID0gZmFsc2U7CisgICAgICAgIG1fc2lnbmFsbGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAg
ICAgbV9tdXRleC5sb2NrKCk7CiAgICAgfQogCiAgICAgfkNDQ29tcGxldGlvbkV2ZW50KCkKICAg
ICB7CiAgICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7CisgICAgICAgIEFTU0VSVChtX3dhaXRlZCk7
CisgICAgICAgIEFTU0VSVChtX3NpZ25hbGxlZCk7CiAgICAgfQogCiAgICAgdm9pZCB3YWl0KCkK
ICAgICB7CisgICAgICAgIEFTU0VSVCghbV93YWl0ZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICAg
ICAgbV93YWl0ZWQgPSB0cnVlOworI2VuZGlmCiAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobV9t
dXRleCk7CiAgICAgfQogCiAgICAgdm9pZCBzaWduYWwoKQogICAgIHsKICAgICAgICAgTXV0ZXhM
b2NrZXIgbG9jayhtX211dGV4KTsKKyAgICAgICAgQVNTRVJUKCFtX3NpZ25hbGxlZCk7CisjaWZu
ZGVmIE5ERUJVRworICAgICAgICBtX3NpZ25hbGxlZCA9IHRydWU7CisjZW5kaWYKICAgICAgICAg
bV9jb25kaXRpb24uc2lnbmFsKCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIE11dGV4IG1fbXV0
ZXg7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0aW9uOworI2lmbmRlZiBOREVCVUcKKyAg
ICAvLyBVc2VkIHRvIGFzc2VydCB0aGF0IHdhaXQoKSBhbmQgc2lnbmFsKCkgYXJlIGVhY2ggY2Fs
bGVkIGV4YWN0bHkgb25jZS4KKyAgICBib29sIG1fd2FpdGVkOworICAgIGJvb2wgbV9zaWduYWxs
ZWQ7CisjZW5kaWYKIH07CiAKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCShy
ZXZpc2lvbiA5OTg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTIsNiArMjUyLDcg
QEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlKGJvb2wgdmlzaQogICAgIGlmICghdmlz
aWJsZSkgewogICAgICAgICBDQ0NvbXBsZXRpb25FdmVudCBjb21wbGV0aW9uOwogICAgICAgICBz
X2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJv
eHk6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZCwgQWxsb3dDcm9zc1RocmVhZEFjY2Vz
cygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxldGlvbi53YWl0KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgc2V0TmVlZHNSZWRyYXcoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114522</attachid>
            <date>2011-11-10 09:45:53 -0800</date>
            <delta_ts>2011-11-10 14:39:55 -0800</delta_ts>
            <desc>Added unit test, fixed setVisible(true)</desc>
            <filename>bug-71903-20111110174552.patch</filename>
            <type>text/plain</type>
            <size>6927</size>
            <attacher name="Iain Merrick">husky</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5ODU3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEtMTEtMTAgIElhaW4gTWVy
cmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NUaHJl
YWRQcm94eTo6c2V0VmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzE5MDMKKworICAgICAgICBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50IGRl
cGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIHNob3dpbmcKKyAgICAgICAgb3IgaGlkaW5nIHRoZSBj
b21wb3NpdG9yLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggY29kZSBwYXRocy4KKworICAgICAgICBz
ZXRWaXNpYmxlKGZhbHNlKSBpcyBzeW5jaHJvbm91cy4gSXQgd2FzIG1pc3NpbmcgYSB3YWl0KCku
CisKKyAgICAgICAgc2V0VmlzaWJsZSh0cnVlKSBpcyBhc3luY2hyb25vdXMuIEl0IG5lZWRzIHRv
IGNvbW1pdCgpIHRvIHByb3BhZ2F0ZQorICAgICAgICB0aGUgdmlzaWJpbGl0eSBmbGFnIHRvIHRo
ZSBDQyB0aHJlYWQsIGJ1dCBjb21taXRzIHdlcmUgYmVpbmcKKyAgICAgICAgc3VwcHJlc3NlZCBp
biB0aGUgaGlkZGVuIHN0YXRlLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9u
RXZlbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50OjpDQ0NvbXBsZXRp
b25FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRpb25FdmVudDo6fkNDQ29tcGxl
dGlvbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50Ojp3YWl0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNDQ29tcGxldGlvbkV2ZW50OjpzaWduYWwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NUaHJlYWRQcm94eTo6c2V0VmlzaWJsZSk6CisKIDIwMTEtMTEtMTAgIE5p
a29sYXMgWmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CiAKICAgICAgICAgW0dUS10g
c3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS1jaGFuZ2UtY29udGVudC1zaXplLnhodG1sIGNyYXNoZXMK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29t
cGxldGlvbkV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9uRXZlbnQuaAkocmV2aXNpb24gOTk4NTYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRp
b25FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwzNSArMzAsNTQgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogLy8gVXNlZCBmb3IgbWFraW5nIGJsb2NraW5nIGNhbGxzIGZyb20gb25lIHRo
cmVhZCB0byBhbm90aGVyLiBVc2Ugb25seSB3aGVuCi0vLyBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhh
dCBkb2luZy1zbyB3aWxsIG5vdCBsZWFkIHRvIGEgbGl2ZWxvY2suCisvLyBhYnNvbHV0ZWx5IGNl
cnRhaW4gdGhhdCBkb2luZy1zbyB3aWxsIG5vdCBsZWFkIHRvIGEgZGVhZGxvY2suCiAvLwogLy8g
SXQgaXMgc2FmZSB0byBkZXN0cm95IHRoaXMgb2JqZWN0IGFzIHNvb24gYXMgd2FpdCgpIHJldHVy
bnMuCiBjbGFzcyBDQ0NvbXBsZXRpb25FdmVudCB7CiBwdWJsaWM6CiAgICAgQ0NDb21wbGV0aW9u
RXZlbnQoKQogICAgIHsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fd2FpdGVkID0gZmFsc2U7
CisgICAgICAgIG1fc2lnbmFsZWQgPSBmYWxzZTsKKyNlbmRpZgogICAgICAgICBtX211dGV4Lmxv
Y2soKTsKICAgICB9CiAKICAgICB+Q0NDb21wbGV0aW9uRXZlbnQoKQogICAgIHsKICAgICAgICAg
bV9tdXRleC51bmxvY2soKTsKKyAgICAgICAgQVNTRVJUKG1fd2FpdGVkKTsKKyAgICAgICAgQVNT
RVJUKG1fc2lnbmFsZWQpOwogICAgIH0KIAogICAgIHZvaWQgd2FpdCgpCiAgICAgeworICAgICAg
ICBBU1NFUlQoIW1fd2FpdGVkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgICAgIG1fd2FpdGVkID0g
dHJ1ZTsKKyNlbmRpZgogICAgICAgICBtX2NvbmRpdGlvbi53YWl0KG1fbXV0ZXgpOwogICAgIH0K
IAogICAgIHZvaWQgc2lnbmFsKCkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2sobV9t
dXRleCk7CisgICAgICAgIEFTU0VSVCghbV9zaWduYWxlZCk7CisjaWZuZGVmIE5ERUJVRworICAg
ICAgICBtX3NpZ25hbGVkID0gdHJ1ZTsKKyNlbmRpZgogICAgICAgICBtX2NvbmRpdGlvbi5zaWdu
YWwoKTsKICAgICB9CiAKIHByaXZhdGU6CiAgICAgTXV0ZXggbV9tdXRleDsKICAgICBUaHJlYWRD
b25kaXRpb24gbV9jb25kaXRpb247CisjaWZuZGVmIE5ERUJVRworICAgIC8vIFVzZWQgdG8gYXNz
ZXJ0IHRoYXQgd2FpdCgpIGFuZCBzaWduYWwoKSBhcmUgZWFjaCBjYWxsZWQgZXhhY3RseSBvbmNl
LgorICAgIGJvb2wgbV93YWl0ZWQ7CisgICAgYm9vbCBtX3NpZ25hbGVkOworI2VuZGlmCiB9Owog
CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NjaGVkdWxlclN0YXRlTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY2hlZHVsZXJTdGF0ZU1hY2hpbmUuY3Bw
CShyZXZpc2lvbiA5OTg1NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDU2NoZWR1bGVyU3RhdGVNYWNoaW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDIsNyArNDIsNyBAQCBDQ1NjaGVkdWxlclN0YXRlTWFjaGluZTo6QWN0aW9uIENDU2NoZWR1CiAg
ICAgY2FzZSBDT01NSVRfU1RBVEVfSURMRToKICAgICAgICAgaWYgKG1fbmVlZHNSZWRyYXcgJiYg
bV9pbnNpZGVWU3luYyAmJiBtX3Zpc2libGUpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0RS
QVc7Ci0gICAgICAgIGlmIChtX25lZWRzQ29tbWl0ICYmIG1fdmlzaWJsZSkKKyAgICAgICAgaWYg
KG1fbmVlZHNDb21taXQpCiAgICAgICAgICAgICByZXR1cm4gQUNUSU9OX0JFR0lOX0ZSQU1FOwog
ICAgICAgICByZXR1cm4gQUNUSU9OX05PTkU7CiAKQEAgLTc3LDcgKzc3LDYgQEAgdm9pZCBDQ1Nj
aGVkdWxlclN0YXRlTWFjaGluZTo6dXBkYXRlU3RhdAogICAgICAgICByZXR1cm47CiAKICAgICBj
YXNlIEFDVElPTl9CRUdJTl9GUkFNRToKLSAgICAgICAgQVNTRVJUKG1fdmlzaWJsZSk7CiAgICAg
ICAgIG1fY29tbWl0U3RhdGUgPSBDT01NSVRfU1RBVEVfRlJBTUVfSU5fUFJPR1JFU1M7CiAgICAg
ICAgIG1fbmVlZHNDb21taXQgPSBmYWxzZTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5jcHAJKHJldmlzaW9uIDk5ODU2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI1Miw4ICsyNTIsMTAgQEAgdm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxl
KGJvb2wgdmlzaQogICAgIGlmICghdmlzaWJsZSkgewogICAgICAgICBDQ0NvbXBsZXRpb25FdmVu
dCBjb21wbGV0aW9uOwogICAgICAgICBzX2NjVGhyZWFkLT5wb3N0VGFzayhjcmVhdGVDQ1RocmVh
ZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVh
ZCwgQWxsb3dDcm9zc1RocmVhZEFjY2VzcygmY29tcGxldGlvbikpKTsKKyAgICAgICAgY29tcGxl
dGlvbi53YWl0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CisgICAgc2V0TmVlZHNDb21taXQo
KTsKICAgICBzZXROZWVkc1JlZHJhdygpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAJKHJldmlzaW9uIDk5
ODU2KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDYgKzIwOSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlzcGF0Y2hTZXROZWVkc1Jl
ZHJhdywgdGhpcyk7CiAgICAgfQogCisgICAgdm9pZCBwb3N0U2V0VmlzaWJsZVRvTWFpblRocmVh
ZChib29sIHZpc2libGUpCisgICAgeworICAgICAgICBjYWxsT25NYWluVGhyZWFkKHZpc2libGUg
PyBDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldFZpc2libGUgOiBDQ0xheWVyVHJlZUhv
c3RUZXN0OjpkaXNwYXRjaFNldEludmlzaWJsZSwgdGhpcyk7CisgICAgfQorCiAgICAgdm9pZCB0
aW1lb3V0KCkKICAgICB7CiAgICAgICAgIG1fdGltZWRPdXQgPSB0cnVlOwpAQCAtMjcxLDYgKzI3
NiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXRO
ZWVkc1JlZHJhdygpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGRpc3BhdGNoU2V0VmlzaWJs
ZSh2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
ICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0
VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOworICAgICAgaWYgKHRlc3QtPm1fbGF5
ZXJUcmVlSG9zdCkKKyAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUo
dHJ1ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXRJbnZpc2libGUodm9p
ZCogc2VsZikKKyAgICB7CisgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgQ0NM
YXllclRyZWVIb3N0VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENDTGF5ZXJUcmVlSG9zdFRlc3Qq
PihzZWxmKTsKKyAgICAgIEFTU0VSVCh0ZXN0KTsKKyAgICAgIGlmICh0ZXN0LT5tX2xheWVyVHJl
ZUhvc3QpCisgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5zZXRWaXNpYmxlKGZhbHNl
KTsKKyAgICB9CisKICAgICBjbGFzcyBUaW1lb3V0VGFzayA6IHB1YmxpYyB3ZWJraXRfc3VwcG9y
dDo6VGFza0FkYXB0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgVGltZW91dFRh
c2soQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCkKQEAgLTc2Miw0ICs3ODUsNDkgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxNdWx0aXBsZQogICAgIHJ1blRlc3RUaHJlYWRlZCgp
OwogfQogCitjbGFzcyBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSA6IHB1YmxpYyBDQ0xh
eWVyVHJlZUhvc3RUZXN0IHsKK3B1YmxpYzoKKworICAgIENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRW
aXNpYmxlKCkKKyAgICAgICAgOiBtX251bUNvbW1pdHMoMCkKKyAgICAgICAgLCBtX251bURyYXdz
KDApCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBiZWdpblRlc3QoKQorICAgIHsK
KyAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQoZmFsc2UpOworICAgICAgICBwb3N0
U2V0TmVlZHNSZWRyYXdUb01haW5UaHJlYWQoKTsgLy8gVGhpcyBpcyBzdXBwcmVzc2VkIHdoaWxl
IHdlJ3JlIGludmlzaWJsZS4KKyAgICAgICAgcG9zdFNldFZpc2libGVUb01haW5UaHJlYWQodHJ1
ZSk7IC8vIEF1dG9tYXRpY2FsbHkgY29tbWl0cywgd2hpY2ggdW5ibG9ja3Mgb3VyIHJlZHJhdy4K
KyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWl0Q29tcGxldGVPbkNDVGhyZWFkKENDTGF5
ZXJUcmVlSG9zdEltcGwqIGltcGwpCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT52
aXNpYmxlKCkpOworICAgICAgICArK21fbnVtQ29tbWl0czsKKyAgICB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhd0xheWVyc09uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1wbCkKKyAg
ICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGltcGwtPnZpc2libGUoKSk7CisgICAgICAgICsrbV9u
dW1EcmF3czsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBh
ZnRlclRlc3QoKQorICAgIHsKKyAgICAgICAgRVhQRUNUX0VRKDEsIG1fbnVtQ29tbWl0cyk7Cisg
ICAgICAgIEVYUEVDVF9FUSgxLCBtX251bURyYXdzKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
aW50IG1fbnVtQ29tbWl0czsKKyAgICBpbnQgbV9udW1EcmF3czsKK307CisKK1RFU1RfRihDQ0xh
eWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSwgcnVuTXVsdGlUaHJlYWQpCit7CisgICAgcnVuVGVz
dCh0cnVlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114574</attachid>
            <date>2011-11-10 14:40:00 -0800</date>
            <delta_ts>2011-11-10 14:44:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71903-20111110143959.patch</filename>
            <type>text/plain</type>
            <size>7909</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi5hNjE4N2Y1NWRjOTc3NGZkODE4NDhlN2I0N2E3Nzc0
ZjQ2ODJiYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE5MDMKKworICAgICAgICBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50
IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIHNob3dpbmcKKyAgICAgICAgb3IgaGlkaW5nIHRo
ZSBjb21wb3NpdG9yLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggY29kZSBwYXRocy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0NvbXBsZXRpb25FdmVudDo6Q0NDb21wbGV0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDb21wbGV0aW9uRXZlbnQ6On5DQ0NvbXBsZXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NvbXBsZXRpb25FdmVudDo6d2FpdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRp
b25FdmVudDo6c2lnbmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNl
dFZpc2libGUpOgorCiAyMDExLTExLTEwICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4K
IAogICAgICAgICAtLXdlYmtpdC12aXN1YWwtd29yZCBjcmFzaCB3aGVuIGNyZWF0ZSBsZWdhY3kg
cG9zaXRpb24gZm9yIHNoYWRvd1Jvb3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmlu
ZGV4IDc4YmM2ODNhMWQxMjNmYzNlODgwMTg2NGEwNzliNjZkZGIyZDllYWMuLmYwMjI2NjE3YmVk
NTMzZDdlOGQ4NTMzMWRjMjY5MGFiNmJmZDVkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9u
RXZlbnQuaApAQCAtMzAsMzUgKzMwLDU0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVz
ZWQgZm9yIG1ha2luZyBibG9ja2luZyBjYWxscyBmcm9tIG9uZSB0aHJlYWQgdG8gYW5vdGhlci4g
VXNlIG9ubHkgd2hlbgotLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmctc28gd2lsbCBu
b3QgbGVhZCB0byBhIGxpdmVsb2NrLgorLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmct
c28gd2lsbCBub3QgbGVhZCB0byBhIGRlYWRsb2NrLgogLy8KIC8vIEl0IGlzIHNhZmUgdG8gZGVz
dHJveSB0aGlzIG9iamVjdCBhcyBzb29uIGFzIHdhaXQoKSByZXR1cm5zLgogY2xhc3MgQ0NDb21w
bGV0aW9uRXZlbnQgewogcHVibGljOgogICAgIENDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7Cisj
aWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IGZhbHNlOworICAgICAgICBtX3NpZ25h
bGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgbV9tdXRleC5sb2NrKCk7CiAgICAgfQogCiAg
ICAgfkNDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7CiAgICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7
CisgICAgICAgIEFTU0VSVChtX3dhaXRlZCk7CisgICAgICAgIEFTU0VSVChtX3NpZ25hbGVkKTsK
ICAgICB9CiAKICAgICB2b2lkIHdhaXQoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3dhaXRl
ZCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IHRydWU7CisjZW5kaWYKICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4KTsKICAgICB9CiAKICAgICB2b2lkIHNpZ25h
bCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBB
U1NFUlQoIW1fc2lnbmFsZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9zaWduYWxlZCA9
IHRydWU7CisjZW5kaWYKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIE11dGV4IG1fbXV0ZXg7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBVc2VkIHRvIGFzc2VydCB0aGF0IHdhaXQoKSBh
bmQgc2lnbmFsKCkgYXJlIGVhY2ggY2FsbGVkIGV4YWN0bHkgb25jZS4KKyAgICBib29sIG1fd2Fp
dGVkOworICAgIGJvb2wgbV9zaWduYWxlZDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCAwNjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgxNTA2Zjk3
ZmJhLi4zNzZmOWQ1NzU2MDc0ZjgzMjBhZTdkYjk1N2JkMjg3ZDI3ODYxMzkxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjQ5LDIwICsyNDksMjIgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCF2aXNp
YmxlKSB7Ci0gICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNf
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNldE5lZWRzUmVk
cmF3KCk7CisgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBzX2NjVGhyZWFk
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldFZp
c2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCB2
aXNpYmxlKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHZpc2libGUpCiB7CiAgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+c2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShmYWxzZSk7CisgICAgaWYgKCF2aXNpYmxlKQorICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzQ29tbWl0KCk7CisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVk
c1JlZHJhdygpOworICAgIH0KKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VmlzaWJs
ZSh2aXNpYmxlKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKHZpc2libGUp
OwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgK
aW5kZXggMDQ1ZGE3NDY4MDY1NzkzMDhlMTZmZGJlY2YxMDJkZWU3ODkyOTk5My4uYjg5OWJmODQx
ZWUyODU3ZGJlMDVhNGMxNDFlN2JlMzFhMGYxNDg5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGhyZWFkUHJveHku
aApAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW5pdGlhbGl6ZUltcGxPbklt
cGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2b2lkIGluaXRpYWxpemVMYXllclJl
bmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNEKiwgQ0NDb21wbGV0aW9uRXZlbnQq
LCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKiwg
aW50KiBjb21wb3NpdG9ySWRlbnRpZmllcik7CiAgICAgdm9pZCBzZXROZWVkc0FuaW1hdGVPbklt
cGxUaHJlYWQoKTsKLSAgICB2b2lkIGRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChDQ0Nv
bXBsZXRpb25FdmVudCopOworICAgIHZvaWQgc2V0VmlzaWJsZU9uSW1wbFRocmVhZChDQ0NvbXBs
ZXRpb25FdmVudCosIGJvb2wgdmlzaWJsZSk7CiAgICAgdm9pZCBsYXllclRyZWVIb3N0Q2xvc2Vk
T25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAKICAgICAvLyBBY2Nlc3NlZCBvbiBt
YWluIHRocmVhZCBvbmx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYmVjMjc5ODMzYjk5MWI3MzRkOTNkZjJmZTBk
ZGY1YWY4ZDBhMDJhYi4uNjFlYmM2ZmE4YjhhZjkyMWIzMTQ1Mjc4ZjBjMmRkNGM5YmI3YzExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RU
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dFRlc3QuY3BwCkBAIC0yMDksNiArMjA5LDExIEBAIHB1YmxpYzoKICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldE5lZWRzUmVkcmF3LCB0aGlz
KTsKICAgICB9CiAKKyAgICB2b2lkIHBvc3RTZXRWaXNpYmxlVG9NYWluVGhyZWFkKGJvb2wgdmlz
aWJsZSkKKyAgICB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQodmlzaWJsZSA/IENDTGF5ZXJU
cmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0VmlzaWJsZSA6IENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRp
c3BhdGNoU2V0SW52aXNpYmxlLCB0aGlzKTsKKyAgICB9CisKICAgICB2b2lkIHRpbWVvdXQoKQog
ICAgIHsKICAgICAgICAgbV90aW1lZE91dCA9IHRydWU7CkBAIC0yNzEsNiArMjc2LDI0IEBAIHBy
b3RlY3RlZDoKICAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldE5lZWRzUmVkcmF3
KCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hTZXRWaXNpYmxlKHZvaWQqIHNl
bGYpCisgICAgeworICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgIENDTGF5ZXJU
cmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDQ0xheWVyVHJlZUhvc3RUZXN0Kj4oc2Vs
Zik7CisgICAgICBBU1NFUlQodGVzdCk7CisgICAgICBpZiAodGVzdC0+bV9sYXllclRyZWVIb3N0
KQorICAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVlSG9zdC0+c2V0VmlzaWJsZSh0cnVlKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldEludmlzaWJsZSh2b2lkKiBzZWxmKQor
ICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICBDQ0xheWVyVHJlZUhv
c3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOwor
ICAgICAgQVNTRVJUKHRlc3QpOworICAgICAgaWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKKyAg
ICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldFZpc2libGUoZmFsc2UpOworICAgIH0K
KwogICAgIGNsYXNzIFRpbWVvdXRUYXNrIDogcHVibGljIHdlYmtpdF9zdXBwb3J0OjpUYXNrQWRh
cHRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBUaW1lb3V0VGFzayhDQ0xheWVy
VHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtNzYyLDQgKzc4NSw0OSBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0VGVzdFNjcm9sbE11bHRpcGxlUmVkcmF3LCBydW5NdWx0aVRocmVhZCkKICAgICBydW5U
ZXN0VGhyZWFkZWQoKTsKIH0KIAorY2xhc3MgQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUg
OiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJsaWM6CisKKyAgICBDQ0xheWVyVHJl
ZUhvc3RUZXN0U2V0VmlzaWJsZSgpCisgICAgICAgIDogbV9udW1Db21taXRzKDApCisgICAgICAg
ICwgbV9udW1EcmF3cygwKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYmVnaW5U
ZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RTZXRWaXNpYmxlVG9NYWluVGhyZWFkKGZhbHNlKTsK
KyAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhyZWFkKCk7IC8vIFRoaXMgaXMgc3Vw
cHJlc3NlZCB3aGlsZSB3ZSdyZSBpbnZpc2libGUuCisgICAgICAgIHBvc3RTZXRWaXNpYmxlVG9N
YWluVGhyZWFkKHRydWUpOyAvLyBBdXRvbWF0aWNhbGx5IGNvbW1pdHMsIHdoaWNoIHVuYmxvY2tz
IG91ciByZWRyYXcuCisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGNvbW1pdENvbXBsZXRlT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUoaW1wbC0+dmlzaWJsZSgpKTsKKyAgICAgICAgKyttX251bUNvbW1pdHM7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGRyYXdMYXllcnNPbkNDVGhyZWFkKENDTGF5ZXJUcmVlSG9zdElt
cGwqIGltcGwpCisgICAgeworICAgICAgICBFWFBFQ1RfVFJVRShpbXBsLT52aXNpYmxlKCkpOwor
ICAgICAgICArK21fbnVtRHJhd3M7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgYWZ0ZXJUZXN0KCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9FUSgxLCBtX251
bUNvbW1pdHMpOworICAgICAgICBFWFBFQ1RfRVEoMSwgbV9udW1EcmF3cyk7CisgICAgfQorCitw
cml2YXRlOgorICAgIGludCBtX251bUNvbW1pdHM7CisgICAgaW50IG1fbnVtRHJhd3M7Cit9Owor
CitURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUsIHJ1bk11bHRpVGhyZWFkKQor
eworICAgIHJ1blRlc3QodHJ1ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114579</attachid>
            <date>2011-11-10 14:44:51 -0800</date>
            <delta_ts>2011-11-11 11:34:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71903-20111110144450.patch</filename>
            <type>text/plain</type>
            <size>8390</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi5hNjE4N2Y1NWRjOTc3NGZkODE4NDhlN2I0N2E3Nzc0
ZjQ2ODJiYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE5MDMKKworICAgICAgICBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50
IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIHNob3dpbmcKKyAgICAgICAgb3IgaGlkaW5nIHRo
ZSBjb21wb3NpdG9yLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggY29kZSBwYXRocy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0NvbXBsZXRpb25FdmVudDo6Q0NDb21wbGV0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDb21wbGV0aW9uRXZlbnQ6On5DQ0NvbXBsZXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NvbXBsZXRpb25FdmVudDo6d2FpdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRp
b25FdmVudDo6c2lnbmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNl
dFZpc2libGUpOgorCiAyMDExLTExLTEwICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4K
IAogICAgICAgICAtLXdlYmtpdC12aXN1YWwtd29yZCBjcmFzaCB3aGVuIGNyZWF0ZSBsZWdhY3kg
cG9zaXRpb24gZm9yIHNoYWRvd1Jvb3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmlu
ZGV4IDc4YmM2ODNhMWQxMjNmYzNlODgwMTg2NGEwNzliNjZkZGIyZDllYWMuLmYwMjI2NjE3YmVk
NTMzZDdlOGQ4NTMzMWRjMjY5MGFiNmJmZDVkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9u
RXZlbnQuaApAQCAtMzAsMzUgKzMwLDU0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVz
ZWQgZm9yIG1ha2luZyBibG9ja2luZyBjYWxscyBmcm9tIG9uZSB0aHJlYWQgdG8gYW5vdGhlci4g
VXNlIG9ubHkgd2hlbgotLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmctc28gd2lsbCBu
b3QgbGVhZCB0byBhIGxpdmVsb2NrLgorLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmct
c28gd2lsbCBub3QgbGVhZCB0byBhIGRlYWRsb2NrLgogLy8KIC8vIEl0IGlzIHNhZmUgdG8gZGVz
dHJveSB0aGlzIG9iamVjdCBhcyBzb29uIGFzIHdhaXQoKSByZXR1cm5zLgogY2xhc3MgQ0NDb21w
bGV0aW9uRXZlbnQgewogcHVibGljOgogICAgIENDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7Cisj
aWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IGZhbHNlOworICAgICAgICBtX3NpZ25h
bGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgbV9tdXRleC5sb2NrKCk7CiAgICAgfQogCiAg
ICAgfkNDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7CiAgICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7
CisgICAgICAgIEFTU0VSVChtX3dhaXRlZCk7CisgICAgICAgIEFTU0VSVChtX3NpZ25hbGVkKTsK
ICAgICB9CiAKICAgICB2b2lkIHdhaXQoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3dhaXRl
ZCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IHRydWU7CisjZW5kaWYKICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4KTsKICAgICB9CiAKICAgICB2b2lkIHNpZ25h
bCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBB
U1NFUlQoIW1fc2lnbmFsZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9zaWduYWxlZCA9
IHRydWU7CisjZW5kaWYKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIE11dGV4IG1fbXV0ZXg7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBVc2VkIHRvIGFzc2VydCB0aGF0IHdhaXQoKSBh
bmQgc2lnbmFsKCkgYXJlIGVhY2ggY2FsbGVkIGV4YWN0bHkgb25jZS4KKyAgICBib29sIG1fd2Fp
dGVkOworICAgIGJvb2wgbV9zaWduYWxlZDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCAwNjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgxNTA2Zjk3
ZmJhLi5hMGFmMWJmYzYxMzhlMDRiZjNjYmRlMGNkMjQ1MTQzZjdhOGNmMmU4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjQ5LDIwICsyNDksMjIgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCF2aXNp
YmxlKSB7Ci0gICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNf
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNldE5lZWRzUmVk
cmF3KCk7CisgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBzX2NjVGhyZWFk
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldFZp
c2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCB2
aXNpYmxlKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHZpc2libGUpCiB7CiAgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+c2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShmYWxzZSk7CisgICAgaWYgKCF2aXNpYmxlKQorICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgbV9zY2hlZHVsZXJPbkltcGxUaHJlYWQtPnNl
dE5lZWRzQ29tbWl0KCk7CisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXROZWVk
c1JlZHJhdygpOworICAgIH0KKyAgICBtX3NjaGVkdWxlck9uSW1wbFRocmVhZC0+c2V0VmlzaWJs
ZSh2aXNpYmxlKTsKKyAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5zZXRWaXNpYmxlKHZpc2libGUp
OwogICAgIGNvbXBsZXRpb24tPnNpZ25hbCgpOwogfQogCkBAIC00NDYsOCArNDQ4LDYgQEAgdm9p
ZCBDQ1RocmVhZFByb3h5OjpzY2hlZHVsZWRBY3Rpb25Db21taXQoKQogCiAgICAgbV9sYXllclRy
ZWVIb3N0LT5iZWdpbkNvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgp
KTsKICAgICBDQ1RleHR1cmVVcGRhdGVyIHVwZGF0ZXIobV9sYXllclRyZWVIb3N0SW1wbC0+Y29u
dGVudHNUZXh0dXJlQWxsb2NhdG9yKCkpOwotICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZp
c2libGUobV9sYXllclRyZWVIb3N0LT52aXNpYmxlKCkpOwotICAgIG1fc2NoZWR1bGVyT25JbXBs
VGhyZWFkLT5zZXRWaXNpYmxlKG1fbGF5ZXJUcmVlSG9zdEltcGwtPnZpc2libGUoKSk7CiAgICAg
bV9sYXllclRyZWVIb3N0LT5maW5pc2hDb21taXRPbkltcGxUaHJlYWQobV9sYXllclRyZWVIb3N0
SW1wbC5nZXQoKSk7CiAKICAgICBtX2xheWVyVHJlZUhvc3RJbXBsLT5jb21taXRDb21wbGV0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NUaHJlYWRQcm94eS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaHJlYWRQcm94eS5oCmluZGV4IDA0NWRhNzQ2ODA2NTc5MzA4ZTE2ZmRiZWNm
MTAyZGVlNzg5Mjk5OTMuLmI4OTliZjg0MWVlMjg1N2RiZTA1YTRjMTQxZTdiZTMxYTBmMTQ4OTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGhyZWFkUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RocmVhZFByb3h5LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGluaXRpYWxpemVJbXBsT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAg
ICAgdm9pZCBpbml0aWFsaXplTGF5ZXJSZW5kZXJlck9uSW1wbFRocmVhZChHcmFwaGljc0NvbnRl
eHQzRCosIENDQ29tcGxldGlvbkV2ZW50KiwgYm9vbCogaW5pdGlhbGl6ZVN1Y2NlZWRlZCwgTGF5
ZXJSZW5kZXJlckNhcGFiaWxpdGllcyosIGludCogY29tcG9zaXRvcklkZW50aWZpZXIpOwogICAg
IHZvaWQgc2V0TmVlZHNBbmltYXRlT25JbXBsVGhyZWFkKCk7Ci0gICAgdm9pZCBkaWRCZWNvbWVJ
bnZpc2libGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKKyAgICB2b2lkIHNldFZp
c2libGVPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sIHZpc2libGUpOwogICAg
IHZvaWQgbGF5ZXJUcmVlSG9zdENsb3NlZE9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCop
OwogCiAgICAgLy8gQWNjZXNzZWQgb24gbWFpbiB0aHJlYWQgb25seS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGJl
YzI3OTgzM2I5OTFiNzM0ZDkzZGYyZmUwZGRmNWFmOGQwYTAyYWIuLjYxZWJjNmZhOGI4YWY5MjFi
MzE0NTI3OGYwYzJkZDRjOWJiN2MxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjA5LDYgKzIwOSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoQ0NMYXllclRyZWVIb3N0VGVzdDo6ZGlz
cGF0Y2hTZXROZWVkc1JlZHJhdywgdGhpcyk7CiAgICAgfQogCisgICAgdm9pZCBwb3N0U2V0Vmlz
aWJsZVRvTWFpblRocmVhZChib29sIHZpc2libGUpCisgICAgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKHZpc2libGUgPyBDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldFZpc2libGUg
OiBDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRjaFNldEludmlzaWJsZSwgdGhpcyk7CisgICAg
fQorCiAgICAgdm9pZCB0aW1lb3V0KCkKICAgICB7CiAgICAgICAgIG1fdGltZWRPdXQgPSB0cnVl
OwpAQCAtMjcxLDYgKzI3NiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAgdGVzdC0+bV9sYXll
clRyZWVIb3N0LT5zZXROZWVkc1JlZHJhdygpOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIGRp
c3BhdGNoU2V0VmlzaWJsZSh2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8
Q0NMYXllclRyZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOworICAgICAg
aWYgKHRlc3QtPm1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhv
c3QtPnNldFZpc2libGUodHJ1ZSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgZGlzcGF0Y2hT
ZXRJbnZpc2libGUodm9pZCogc2VsZikKKyAgICB7CisgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgICAgQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCA9IHN0YXRpY19jYXN0PENDTGF5
ZXJUcmVlSG9zdFRlc3QqPihzZWxmKTsKKyAgICAgIEFTU0VSVCh0ZXN0KTsKKyAgICAgIGlmICh0
ZXN0LT5tX2xheWVyVHJlZUhvc3QpCisgICAgICAgICAgdGVzdC0+bV9sYXllclRyZWVIb3N0LT5z
ZXRWaXNpYmxlKGZhbHNlKTsKKyAgICB9CisKICAgICBjbGFzcyBUaW1lb3V0VGFzayA6IHB1Ymxp
YyB3ZWJraXRfc3VwcG9ydDo6VGFza0FkYXB0b3IgewogICAgIHB1YmxpYzoKICAgICAgICAgZXhw
bGljaXQgVGltZW91dFRhc2soQ0NMYXllclRyZWVIb3N0VGVzdCogdGVzdCkKQEAgLTc2Miw0ICs3
ODUsNDkgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTY3JvbGxNdWx0aXBsZVJlZHJhdywg
cnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdFRocmVhZGVkKCk7CiB9CiAKK2NsYXNzIENDTGF5
ZXJUcmVlSG9zdFRlc3RTZXRWaXNpYmxlIDogcHVibGljIENDTGF5ZXJUcmVlSG9zdFRlc3Qgewor
cHVibGljOgorCisgICAgQ0NMYXllclRyZWVIb3N0VGVzdFNldFZpc2libGUoKQorICAgICAgICA6
IG1fbnVtQ29tbWl0cygwKQorICAgICAgICAsIG1fbnVtRHJhd3MoMCkKKyAgICB7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIGJlZ2luVGVzdCgpCisgICAgeworICAgICAgICBwb3N0U2V0Vmlz
aWJsZVRvTWFpblRocmVhZChmYWxzZSk7CisgICAgICAgIHBvc3RTZXROZWVkc1JlZHJhd1RvTWFp
blRocmVhZCgpOyAvLyBUaGlzIGlzIHN1cHByZXNzZWQgd2hpbGUgd2UncmUgaW52aXNpYmxlLgor
ICAgICAgICBwb3N0U2V0VmlzaWJsZVRvTWFpblRocmVhZCh0cnVlKTsgLy8gQXV0b21hdGljYWxs
eSBjb21taXRzLCB3aGljaCB1bmJsb2NrcyBvdXIgcmVkcmF3LgorICAgIH0KKworICAgIHZpcnR1
YWwgdm9pZCBjb21taXRDb21wbGV0ZU9uQ0NUaHJlYWQoQ0NMYXllclRyZWVIb3N0SW1wbCogaW1w
bCkKKyAgICB7CisgICAgICAgIEVYUEVDVF9UUlVFKGltcGwtPnZpc2libGUoKSk7CisgICAgICAg
ICsrbV9udW1Db21taXRzOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25D
Q1RocmVhZChDQ0xheWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUoaW1wbC0+dmlzaWJsZSgpKTsKKyAgICAgICAgKyttX251bURyYXdzOworICAgICAgICBl
bmRUZXN0KCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgewor
ICAgICAgICBFWFBFQ1RfRVEoMSwgbV9udW1Db21taXRzKTsKKyAgICAgICAgRVhQRUNUX0VRKDEs
IG1fbnVtRHJhd3MpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9udW1Db21taXRzOwor
ICAgIGludCBtX251bURyYXdzOworfTsKKworVEVTVF9GKENDTGF5ZXJUcmVlSG9zdFRlc3RTZXRW
aXNpYmxlLCBydW5NdWx0aVRocmVhZCkKK3sKKyAgICBydW5UZXN0KHRydWUpOworfQorCiB9IC8v
IG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114745</attachid>
            <date>2011-11-11 11:34:30 -0800</date>
            <delta_ts>2011-11-11 18:05:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71903-20111111113429.patch</filename>
            <type>text/plain</type>
            <size>8113</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk4ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlMjE5NjUzNTM0MzMwOTBk
ZGJhZWU2MTkyNDkwOWQ5NWY1ZmZhMjdlLi5hNjE4N2Y1NWRjOTc3NGZkODE4NDhlN2I0N2E3Nzc0
ZjQ2ODJiYTYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMTEtMTAgIElhaW4g
TWVycmljayAgPGh1c2t5QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBGaXggQ0NU
aHJlYWRQcm94eTo6c2V0VmlzaWJsZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzE5MDMKKworICAgICAgICBUaGUgYmVoYXZpb3IgaXMgZGlmZmVyZW50
IGRlcGVuZGluZyBvbiB3aGV0aGVyIHdlJ3JlIHNob3dpbmcKKyAgICAgICAgb3IgaGlkaW5nIHRo
ZSBjb21wb3NpdG9yLiBUaGlzIHBhdGNoIGZpeGVzIGJvdGggY29kZSBwYXRocy4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpD
Q0NvbXBsZXRpb25FdmVudDo6Q0NDb21wbGV0aW9uRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NDb21wbGV0aW9uRXZlbnQ6On5DQ0NvbXBsZXRpb25FdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpDQ0NvbXBsZXRpb25FdmVudDo6d2FpdCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0NvbXBsZXRp
b25FdmVudDo6c2lnbmFsKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDVGhyZWFkUHJveHk6OnNl
dFZpc2libGUpOgorCiAyMDExLTExLTEwICBYaWFvbWVpIEppICA8eGppQGNocm9taXVtLm9yZz4K
IAogICAgICAgICAtLXdlYmtpdC12aXN1YWwtd29yZCBjcmFzaCB3aGVuIGNyZWF0ZSBsZWdhY3kg
cG9zaXRpb24gZm9yIHNoYWRvd1Jvb3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0NvbXBsZXRpb25FdmVudC5oCmlu
ZGV4IDc4YmM2ODNhMWQxMjNmYzNlODgwMTg2NGEwNzliNjZkZGIyZDllYWMuLmYwMjI2NjE3YmVk
NTMzZDdlOGQ4NTMzMWRjMjY5MGFiNmJmZDVkMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQ29tcGxldGlvbkV2ZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NDb21wbGV0aW9u
RXZlbnQuaApAQCAtMzAsMzUgKzMwLDU0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFVz
ZWQgZm9yIG1ha2luZyBibG9ja2luZyBjYWxscyBmcm9tIG9uZSB0aHJlYWQgdG8gYW5vdGhlci4g
VXNlIG9ubHkgd2hlbgotLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmctc28gd2lsbCBu
b3QgbGVhZCB0byBhIGxpdmVsb2NrLgorLy8gYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgZG9pbmct
c28gd2lsbCBub3QgbGVhZCB0byBhIGRlYWRsb2NrLgogLy8KIC8vIEl0IGlzIHNhZmUgdG8gZGVz
dHJveSB0aGlzIG9iamVjdCBhcyBzb29uIGFzIHdhaXQoKSByZXR1cm5zLgogY2xhc3MgQ0NDb21w
bGV0aW9uRXZlbnQgewogcHVibGljOgogICAgIENDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7Cisj
aWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IGZhbHNlOworICAgICAgICBtX3NpZ25h
bGVkID0gZmFsc2U7CisjZW5kaWYKICAgICAgICAgbV9tdXRleC5sb2NrKCk7CiAgICAgfQogCiAg
ICAgfkNDQ29tcGxldGlvbkV2ZW50KCkKICAgICB7CiAgICAgICAgIG1fbXV0ZXgudW5sb2NrKCk7
CisgICAgICAgIEFTU0VSVChtX3dhaXRlZCk7CisgICAgICAgIEFTU0VSVChtX3NpZ25hbGVkKTsK
ICAgICB9CiAKICAgICB2b2lkIHdhaXQoKQogICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3dhaXRl
ZCk7CisjaWZuZGVmIE5ERUJVRworICAgICAgICBtX3dhaXRlZCA9IHRydWU7CisjZW5kaWYKICAg
ICAgICAgbV9jb25kaXRpb24ud2FpdChtX211dGV4KTsKICAgICB9CiAKICAgICB2b2lkIHNpZ25h
bCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fbXV0ZXgpOworICAgICAgICBB
U1NFUlQoIW1fc2lnbmFsZWQpOworI2lmbmRlZiBOREVCVUcKKyAgICAgICAgbV9zaWduYWxlZCA9
IHRydWU7CisjZW5kaWYKICAgICAgICAgbV9jb25kaXRpb24uc2lnbmFsKCk7CiAgICAgfQogCiBw
cml2YXRlOgogICAgIE11dGV4IG1fbXV0ZXg7CiAgICAgVGhyZWFkQ29uZGl0aW9uIG1fY29uZGl0
aW9uOworI2lmbmRlZiBOREVCVUcKKyAgICAvLyBVc2VkIHRvIGFzc2VydCB0aGF0IHdhaXQoKSBh
bmQgc2lnbmFsKCkgYXJlIGVhY2ggY2FsbGVkIGV4YWN0bHkgb25jZS4KKyAgICBib29sIG1fd2Fp
dGVkOworICAgIGJvb2wgbV9zaWduYWxlZDsKKyNlbmRpZgogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaHJlYWRQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Ro
cmVhZFByb3h5LmNwcAppbmRleCAwNjNkMGFlYWQxMWYxZWQzMDM2MDRlMDM0OTIwYTgxNTA2Zjk3
ZmJhLi5kZjNkZmZiZDBlYzQzNWNiZDBmNGE3MTRlNDA1NDlmNTIwODQ0MDU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RocmVhZFByb3h5LmNwcApAQCAtMjQ5LDIwICsyNDksMjAgQEAgdm9pZCBDQ1RocmVhZFBy
b3h5OjpzZXROZWVkc1JlZHJhdygpCiB2b2lkIENDVGhyZWFkUHJveHk6OnNldFZpc2libGUoYm9v
bCB2aXNpYmxlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCF2aXNp
YmxlKSB7Ci0gICAgICAgIENDQ29tcGxldGlvbkV2ZW50IGNvbXBsZXRpb247Ci0gICAgICAgIHNf
Y2NUaHJlYWQtPnBvc3RUYXNrKGNyZWF0ZUNDVGhyZWFkVGFzayh0aGlzLCAmQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNz
KCZjb21wbGV0aW9uKSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNldE5lZWRzUmVk
cmF3KCk7CisgICAgQ0NDb21wbGV0aW9uRXZlbnQgY29tcGxldGlvbjsKKyAgICBzX2NjVGhyZWFk
LT5wb3N0VGFzayhjcmVhdGVDQ1RocmVhZFRhc2sodGhpcywgJkNDVGhyZWFkUHJveHk6OnNldFZp
c2libGVPbkltcGxUaHJlYWQsIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoJmNvbXBsZXRpb24pLCB2
aXNpYmxlKSk7CisgICAgY29tcGxldGlvbi53YWl0KCk7CiB9CiAKLXZvaWQgQ0NUaHJlYWRQcm94
eTo6ZGlkQmVjb21lSW52aXNpYmxlT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50KiBjb21w
bGV0aW9uKQordm9pZCBDQ1RocmVhZFByb3h5OjpzZXRWaXNpYmxlT25JbXBsVGhyZWFkKENDQ29t
cGxldGlvbkV2ZW50KiBjb21wbGV0aW9uLCBib29sIHZpc2libGUpCiB7CiAgICAgQVNTRVJUKGlz
SW1wbFRocmVhZCgpKTsKLSAgICBtX2xheWVyVHJlZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9u
SW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBsLmdldCgpKTsKLSAgICBtX3NjaGVkdWxlck9u
SW1wbFRocmVhZC0+c2V0VmlzaWJsZShmYWxzZSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+
c2V0VmlzaWJsZShmYWxzZSk7CisgICAgaWYgKCF2aXNpYmxlKQorICAgICAgICBtX2xheWVyVHJl
ZUhvc3QtPmRpZEJlY29tZUludmlzaWJsZU9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRO
ZWVkc1JlZHJhdygpOworICAgIG1fc2NoZWR1bGVyT25JbXBsVGhyZWFkLT5zZXRWaXNpYmxlKHZp
c2libGUpOworICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpc2libGUodmlzaWJsZSk7CiAg
ICAgY29tcGxldGlvbi0+c2lnbmFsKCk7CiB9CiAKQEAgLTQ0Niw4ICs0NDYsNiBAQCB2b2lkIEND
VGhyZWFkUHJveHk6OnNjaGVkdWxlZEFjdGlvbkNvbW1pdCgpCiAKICAgICBtX2xheWVyVHJlZUhv
c3QtPmJlZ2luQ29tbWl0T25JbXBsVGhyZWFkKG1fbGF5ZXJUcmVlSG9zdEltcGwuZ2V0KCkpOwog
ICAgIENDVGV4dHVyZVVwZGF0ZXIgdXBkYXRlcihtX2xheWVyVHJlZUhvc3RJbXBsLT5jb250ZW50
c1RleHR1cmVBbGxvY2F0b3IoKSk7Ci0gICAgbV9sYXllclRyZWVIb3N0SW1wbC0+c2V0VmlzaWJs
ZShtX2xheWVyVHJlZUhvc3QtPnZpc2libGUoKSk7Ci0gICAgbV9zY2hlZHVsZXJPbkltcGxUaHJl
YWQtPnNldFZpc2libGUobV9sYXllclRyZWVIb3N0SW1wbC0+dmlzaWJsZSgpKTsKICAgICBtX2xh
eWVyVHJlZUhvc3QtPmZpbmlzaENvbW1pdE9uSW1wbFRocmVhZChtX2xheWVyVHJlZUhvc3RJbXBs
LmdldCgpKTsKIAogICAgIG1fbGF5ZXJUcmVlSG9zdEltcGwtPmNvbW1pdENvbXBsZXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1RocmVhZFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1RocmVhZFByb3h5LmgKaW5kZXggMDQ1ZGE3NDY4MDY1NzkzMDhlMTZmZGJlY2YxMDJk
ZWU3ODkyOTk5My4uYjg5OWJmODQxZWUyODU3ZGJlMDVhNGMxNDFlN2JlMzFhMGYxNDg5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aHJlYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGhyZWFkUHJveHkuaApAQCAtOTksNyArOTksNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgaW5pdGlhbGl6ZUltcGxPbkltcGxUaHJlYWQoQ0NDb21wbGV0aW9uRXZlbnQqKTsKICAgICB2
b2lkIGluaXRpYWxpemVMYXllclJlbmRlcmVyT25JbXBsVGhyZWFkKEdyYXBoaWNzQ29udGV4dDNE
KiwgQ0NDb21wbGV0aW9uRXZlbnQqLCBib29sKiBpbml0aWFsaXplU3VjY2VlZGVkLCBMYXllclJl
bmRlcmVyQ2FwYWJpbGl0aWVzKiwgaW50KiBjb21wb3NpdG9ySWRlbnRpZmllcik7CiAgICAgdm9p
ZCBzZXROZWVkc0FuaW1hdGVPbkltcGxUaHJlYWQoKTsKLSAgICB2b2lkIGRpZEJlY29tZUludmlz
aWJsZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCopOworICAgIHZvaWQgc2V0VmlzaWJs
ZU9uSW1wbFRocmVhZChDQ0NvbXBsZXRpb25FdmVudCosIGJvb2wgdmlzaWJsZSk7CiAgICAgdm9p
ZCBsYXllclRyZWVIb3N0Q2xvc2VkT25JbXBsVGhyZWFkKENDQ29tcGxldGlvbkV2ZW50Kik7CiAK
ICAgICAvLyBBY2Nlc3NlZCBvbiBtYWluIHRocmVhZCBvbmx5LgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggYmVjMjc5
ODMzYjk5MWI3MzRkOTNkZjJmZTBkZGY1YWY4ZDBhMDJhYi4uZDcxNDYwMmM2NzQzYTc3NDAxNTlk
NTRiNjVhNjFmYmFhMjM2N2YwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCkBAIC0yMDksNiArMjA5LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChDQ0xheWVyVHJlZUhvc3RUZXN0OjpkaXNwYXRj
aFNldE5lZWRzUmVkcmF3LCB0aGlzKTsKICAgICB9CiAKKyAgICB2b2lkIHBvc3RTZXRWaXNpYmxl
VG9NYWluVGhyZWFkKGJvb2wgdmlzaWJsZSkKKyAgICB7CisgICAgICAgIGNhbGxPbk1haW5UaHJl
YWQodmlzaWJsZSA/IENDTGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0VmlzaWJsZSA6IEND
TGF5ZXJUcmVlSG9zdFRlc3Q6OmRpc3BhdGNoU2V0SW52aXNpYmxlLCB0aGlzKTsKKyAgICB9CisK
ICAgICB2b2lkIHRpbWVvdXQoKQogICAgIHsKICAgICAgICAgbV90aW1lZE91dCA9IHRydWU7CkBA
IC0yNzEsNiArMjc2LDI0IEBAIHByb3RlY3RlZDoKICAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJl
ZUhvc3QtPnNldE5lZWRzUmVkcmF3KCk7CiAgICAgfQogCisgICAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hTZXRWaXNpYmxlKHZvaWQqIHNlbGYpCisgICAgeworICAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICAgIENDTGF5ZXJUcmVlSG9zdFRlc3QqIHRlc3QgPSBzdGF0aWNfY2FzdDxDQ0xh
eWVyVHJlZUhvc3RUZXN0Kj4oc2VsZik7CisgICAgICBBU1NFUlQodGVzdCk7CisgICAgICBpZiAo
dGVzdC0+bV9sYXllclRyZWVIb3N0KQorICAgICAgICAgIHRlc3QtPm1fbGF5ZXJUcmVlSG9zdC0+
c2V0VmlzaWJsZSh0cnVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaXNwYXRjaFNldElu
dmlzaWJsZSh2b2lkKiBzZWxmKQorICAgIHsKKyAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgICBDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0ID0gc3RhdGljX2Nhc3Q8Q0NMYXllclRy
ZWVIb3N0VGVzdCo+KHNlbGYpOworICAgICAgQVNTRVJUKHRlc3QpOworICAgICAgaWYgKHRlc3Qt
Pm1fbGF5ZXJUcmVlSG9zdCkKKyAgICAgICAgICB0ZXN0LT5tX2xheWVyVHJlZUhvc3QtPnNldFZp
c2libGUoZmFsc2UpOworICAgIH0KKwogICAgIGNsYXNzIFRpbWVvdXRUYXNrIDogcHVibGljIHdl
YmtpdF9zdXBwb3J0OjpUYXNrQWRhcHRvciB7CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNp
dCBUaW1lb3V0VGFzayhDQ0xheWVyVHJlZUhvc3RUZXN0KiB0ZXN0KQpAQCAtNzYyLDQgKzc4NSw0
MiBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdFNjcm9sbE11bHRpcGxlUmVkcmF3LCBydW5N
dWx0aVRocmVhZCkKICAgICBydW5UZXN0VGhyZWFkZWQoKTsKIH0KIAorY2xhc3MgQ0NMYXllclRy
ZWVIb3N0VGVzdFNldFZpc2libGUgOiBwdWJsaWMgQ0NMYXllclRyZWVIb3N0VGVzdCB7CitwdWJs
aWM6CisKKyAgICBDQ0xheWVyVHJlZUhvc3RUZXN0U2V0VmlzaWJsZSgpCisgICAgICAgIDogbV9u
dW1Db21taXRzKDApCisgICAgICAgICwgbV9udW1EcmF3cygwKQorICAgIHsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYmVnaW5UZXN0KCkKKyAgICB7CisgICAgICAgIHBvc3RTZXRWaXNpYmxl
VG9NYWluVGhyZWFkKGZhbHNlKTsKKyAgICAgICAgcG9zdFNldE5lZWRzUmVkcmF3VG9NYWluVGhy
ZWFkKCk7IC8vIFRoaXMgaXMgc3VwcHJlc3NlZCB3aGlsZSB3ZSdyZSBpbnZpc2libGUuCisgICAg
ICAgIHBvc3RTZXRWaXNpYmxlVG9NYWluVGhyZWFkKHRydWUpOyAvLyBUcmlnZ2VycyB0aGUgcmVk
cmF3LgorICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkcmF3TGF5ZXJzT25DQ1RocmVhZChDQ0xh
eWVyVHJlZUhvc3RJbXBsKiBpbXBsKQorICAgIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoaW1wbC0+
dmlzaWJsZSgpKTsKKyAgICAgICAgKyttX251bURyYXdzOworICAgICAgICBlbmRUZXN0KCk7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGFmdGVyVGVzdCgpCisgICAgeworICAgICAgICBFWFBF
Q1RfRVEoMSwgbV9udW1EcmF3cyk7CisgICAgfQorCitwcml2YXRlOgorICAgIGludCBtX251bUNv
bW1pdHM7CisgICAgaW50IG1fbnVtRHJhd3M7Cit9OworCitURVNUX0YoQ0NMYXllclRyZWVIb3N0
VGVzdFNldFZpc2libGUsIHJ1bk11bHRpVGhyZWFkKQoreworICAgIHJ1blRlc3QodHJ1ZSk7Cit9
CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>