<?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>67592</bug_id>
          
          <creation_ts>2011-09-05 03:10:57 -0700</creation_ts>
          <short_desc>Take pageScaleFactor into account for MouseRelatedEvents.</short_desc>
          <delta_ts>2011-10-06 03:09:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>67836</dependson>
          <blocked>68075</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="John Knottenbelt">jknotten</reporter>
          <assigned_to name="John Knottenbelt">jknotten</assigned_to>
          <cc>bdakin</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fsamuel</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>462089</commentid>
    <comment_count>0</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-05 03:10:57 -0700</bug_when>
    <thetext>Take pageScaleFactor into account for MouseRelatedEvents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462091</commentid>
    <comment_count>1</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-05 03:17:31 -0700</bug_when>
    <thetext>Mouse-related events currently take account of the zoom factor, but they        also need to take account of the page scale factor so that pageX and pageY event coordinates are properly determined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462092</commentid>
    <comment_count>2</comment_count>
      <attachid>106317</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-05 03:18:56 -0700</bug_when>
    <thetext>Created attachment 106317
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462182</commentid>
    <comment_count>3</comment_count>
      <attachid>106317</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-05 09:54:59 -0700</bug_when>
    <thetext>Comment on attachment 106317
Patch

Clearing flags on attachment: 106317

Committed r94536: &lt;http://trac.webkit.org/changeset/94536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>462183</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-05 09:55:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464130</commentid>
    <comment_count>5</comment_count>
      <attachid>106317</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-08 10:23:09 -0700</bug_when>
    <thetext>Comment on attachment 106317
Patch

Why doesn&apos;t frameView-&gt;windowToContents() already take the page scale factor into account? I think it should. Page scale factor is implemented as a transform on the RenderView&apos;s layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464751</commentid>
    <comment_count>6</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-09 05:39:46 -0700</bug_when>
    <thetext>I noticed that this change unintentionally modified the MouseEvent&apos;s absoluteLocation, so I have reverted the patch (with https://bugs.webkit.org/show_bug.cgi?id=67836 ) for now. 

Simon, can you take a look at the layout test in this patch and let me know if that makes sense to you? If we leave the mouse where it is, scale the page out and then click again, we do expect the pageX and pageY to change because now the mouse is over a different area of the web page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>464840</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-09 09:39:11 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 106317 [details])
&gt; Why doesn&apos;t frameView-&gt;windowToContents() already take the page scale factor into account? I think it should.
Actually I may be wrong there.

The test does make sense to me; it&apos;s a good test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467001</commentid>
    <comment_count>8</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-14 06:58:49 -0700</bug_when>
    <thetext>Reopening as my original fix had problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467006</commentid>
    <comment_count>9</comment_count>
      <attachid>107327</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-14 07:00:35 -0700</bug_when>
    <thetext>Created attachment 107327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467009</commentid>
    <comment_count>10</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-14 07:04:21 -0700</bug_when>
    <thetext>The new patch uploads some extended test cases. It would be really helpful to get feedback on whether these are correct or not. Interestingly, the test involving the iframe already seems to correctly take into account pageScaleFactor (as set by EventSender) and the CSS style transform (&quot;-webkit-transform&quot;). 

The layout tests also demonstrate that my previous fix is an incomplete in that it breaks the currently passing iframe test. 

If everybody agrees that on the expected result for the iframe test, I can submit that separately since no new code is needed to make it pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467026</commentid>
    <comment_count>11</comment_count>
      <attachid>107327</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 07:40:48 -0700</bug_when>
    <thetext>Comment on attachment 107327
Patch

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

New failing tests:
fast/events/page-scaled-mouse-click.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467058</commentid>
    <comment_count>12</comment_count>
      <attachid>107327</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-14 09:12:36 -0700</bug_when>
    <thetext>Comment on attachment 107327
Patch

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

&gt; LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js:2
&gt; +description(&quot;This tests that page scaling does not affect mouse event pageX and pageY coordinates for &quot; +
&gt; +            &quot;content embedded in an iframe.&quot;);

It looks like it&apos;s also testing CSS transforms?

&gt; LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js:4
&gt; +var html = document.getElementsByTagName(&quot;html&quot;)[0];

This can be document.documentElement.

&gt; LayoutTests/fast/events/script-tests/page-scaled-mouse-click.js:3
&gt; +var html = document.getElementsByTagName(&quot;html&quot;)[0];

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468485</commentid>
    <comment_count>13</comment_count>
      <attachid>107653</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-16 08:02:29 -0700</bug_when>
    <thetext>Created attachment 107653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468488</commentid>
    <comment_count>14</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-16 08:05:50 -0700</bug_when>
    <thetext>Thanks for your review, Simon. I&apos;ve made the changes you suggested. 

Yes, the patch also tests CSS transforms as it seems related. When in an iframe, both page scaling and CSS transform works correctly, but when in the main document neither work. I think that this could be a clue to a proper fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468507</commentid>
    <comment_count>15</comment_count>
      <attachid>107653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-16 08:45:46 -0700</bug_when>
    <thetext>Comment on attachment 107653
Patch

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

I&apos;m confused about the state of the code here. It looks like you made a fix to MouseRelatedEvent and then backed it out. This patch only contains test cases. Do these tests pass or fail with current builds?

&gt; LayoutTests/fast/events/page-scaled-mouse-click-iframe.html:1
&gt; +&lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML//EN&quot;&gt;

These should be just &lt;!DOCTYPE html&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468513</commentid>
    <comment_count>16</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-16 08:52:29 -0700</bug_when>
    <thetext>Thanks for the review again. The status is that right now, all I have is are these two test cases. I do not have a proposed fix yet.

My initial fix was incorrect - your comment about FrameView::windowToContents and page scaling being implemented as a transform on the RenderView&apos;s layer made me investigate further. Fady Samuel also suggested to test the iframe case. 

Right now, the iframe test case is passes, but the plain document test case does not.

What&apos;s happening is that FrameView::windowToContents == ScrollView::windowToContents appears not to be applying any transforms if there is no parent ScrollView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468521</commentid>
    <comment_count>17</comment_count>
      <attachid>107653</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-09-16 09:12:48 -0700</bug_when>
    <thetext>Comment on attachment 107653
Patch

These tests seem fine, but they can&apos;t be checked in without an associated code fix, so r-. You should include them with the final patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>468591</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-09-16 10:38:43 -0700</bug_when>
    <thetext>For the future: I think it’s OK to land tests with failing expected results and then later land the bug fix and revise successful expected results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472334</commentid>
    <comment_count>19</comment_count>
      <attachid>108494</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-23 10:54:49 -0700</bug_when>
    <thetext>Created attachment 108494
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472337</commentid>
    <comment_count>20</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-09-23 10:57:32 -0700</bug_when>
    <thetext>This patch takes into account page scaling for mouse events, so that the pageX and pageY are correctly calculated. 

This patch preserves the existing correct behaviour of iframes (which work correctly with CSS transforms and page scaling), and fixes the behaviour of plain documents with respect to page scaling.

MouseEvents still need to take into account CSS transforms for main documents (when an iframe is not involved), and I have created bug https://bugs.webkit.org/show_bug.cgi?id=68703 to address this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477519</commentid>
    <comment_count>21</comment_count>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-10-04 03:19:17 -0700</bug_when>
    <thetext>Simon any comments on this patch would be much appreciated.

My take on the windowToContents question is that it should not take into account the page scale factor, since the windowLocation is in the same coordinate space as the scrollPosition, which is post scaled (see https://bugs.webkit.org/show_bug.cgi?id=68081 which fixes a bug relating to DOMWindow::scrollX() and DOMWindow::scrollY() needing to take the scaling factor into account).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>477775</commentid>
    <comment_count>22</comment_count>
      <attachid>108494</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-10-04 11:15:39 -0700</bug_when>
    <thetext>Comment on attachment 108494
Patch

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

&gt; LayoutTests/fast/events/script-tests/page-scaled-mouse-click-iframe.js:35
&gt; +        debug(&quot;This test requires DumpRenderTree.  Click on the blue rect with the left mouse button to log the mouse coordinates.&quot;)

... or WebKitTestRunner.

&gt; Source/WebCore/dom/MouseRelatedEvent.cpp:53
&gt; +    return LayoutSize(frameView-&gt;scrollX() / scaleFactor,
&gt; +        frameView-&gt;scrollY() / scaleFactor);

You should unwrap this line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>478256</commentid>
    <comment_count>23</comment_count>
      <attachid>109768</attachid>
    <who name="John Knottenbelt">jknotten</who>
    <bug_when>2011-10-05 03:14:29 -0700</bug_when>
    <thetext>Created attachment 109768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479026</commentid>
    <comment_count>24</comment_count>
      <attachid>109768</attachid>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-10-06 02:03:30 -0700</bug_when>
    <thetext>Comment on attachment 109768
Patch

Carrying forward Simon&apos;s r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479034</commentid>
    <comment_count>25</comment_count>
      <attachid>109768</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 03:09:15 -0700</bug_when>
    <thetext>Comment on attachment 109768
Patch

Clearing flags on attachment: 109768

Committed r96798: &lt;http://trac.webkit.org/changeset/96798&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>479035</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-06 03:09:21 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106317</attachid>
            <date>2011-09-05 03:18:56 -0700</date>
            <delta_ts>2011-09-14 07:00:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67592-20110905111855.patch</filename>
            <type>text/plain</type>
            <size>5904</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQzNzkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhMzRiZDAyZjc3Y2I5MTM4YjAxZjc0
NzQwNzcwMDlmYTdhNzhmMGE2Li43YmZlNTYxNzZhNzI4ZTU2NjM2N2FiZjdiNmRmNGI5YjQ0NmRj
M2Y0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMDktMDUgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVGYWN0b3Ig
aW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIE1vdXNlLXJlbGF0
ZWQgZXZlbnRzIGN1cnJlbnRseSB0YWtlIGFjY291bnQgb2YgdGhlIHpvb20gZmFjdG9yLCBidXQg
dGhleQorICAgICAgICBhbHNvIG5lZWQgdG8gdGFrZSBhY2NvdW50IG9mIHRoZSBwYWdlIHNjYWxl
IGZhY3RvciBzbyB0aGF0IHBhZ2VYIGFuZCBwYWdlWQorICAgICAgICBldmVudCBjb29yZGluYXRl
cyBhcmUgcHJvcGVybHkgZGV0ZXJtaW5lZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNr
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQt
bW91c2UtY2xpY2suaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvc2NyaXB0LXRl
c3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzOiBBZGRlZC4KKwogMjAxMS0wOS0wMSAgSmFt
ZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0g
QWRkIGNocm9taXVtIGxlb3BhcmQgYmFzZWxpbmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTNmMWI3YWFkMzExYTNlMzI3OGFiMzczZDAzODU2YWFiMzI4ZDRkNAotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUaGlzIHRlc3RzIHRoYXQgcGFnZSBz
Y2FsaW5nIGRvZXMgbm90IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29vcmRp
bmF0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2ZW50TG9nIGlz
ICJjbGljaygxMCwgMTApIgorUEFTUyBldmVudExvZyBpcyAiY2xpY2soMjAsIDIwKSIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMjI4ZjFiMjRmMzc3YWIzNDkxMzAyNzRhODc2NzU2YWQ0N2E4MzlhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xp
Y2suaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBo
cmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2Ny
aXB0IHNyYz0ic2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lMDFlNTE2ZTgyYThkZmIwNmY0NTExOTNmODk1NGQxN2ZlNzVhNmZiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVk
LW1vdXNlLWNsaWNrLmpzCkBAIC0wLDAgKzEsNTQgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoYXQgcGFnZSBzY2FsaW5nIGRvZXMgbm90IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQg
cGFnZVkgY29vcmRpbmF0ZXMuIik7CisKK3ZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0g
IjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1ZSI7CisKK3ZhciBldmVu
dExvZyA9ICIiOworCitmdW5jdGlvbiBhcHBlbmRFdmVudExvZygpIHsKKyAgICB2YXIgbXNnID0g
ZXZlbnQudHlwZSArICIoIiArIGV2ZW50LnBhZ2VYICsgIiwgIiArIGV2ZW50LnBhZ2VZICsgIiki
OworCisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBldmVudExvZyArPSBt
c2c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVidWcobXNnKTsKKyAgICB9Cit9CisKK2Z1bmN0
aW9uIGNsZWFyRXZlbnRMb2coKSB7CisgICAgZXZlbnRMb2cgPSAiIjsKK30KKworZGl2LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKK2RvY3VtZW50LmJv
ZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworZnVuY3Rp
b24gc2VuZEV2ZW50cyhidXR0b24pIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgewor
ICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgQ2xpY2sg
b24gdGhlIGJsdWUgcmVjdCB3aXRoIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiB0byBsb2cgdGhlIG1v
dXNlIGNvb3JkaW5hdGVzLiIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZlbnRTZW5k
ZXIubW91c2VEb3duKGJ1dHRvbik7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcChidXR0b24pOwor
fQorCitmdW5jdGlvbiB0ZXN0RXZlbnRzKGJ1dHRvbiwgZXhwZWN0ZWRTdHJpbmcpIHsKKyAgICBz
ZW5kRXZlbnRzKGJ1dHRvbik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudExvZyIs
IGV4cGVjdGVkU3RyaW5nKTsKKyAgICBjbGVhckV2ZW50TG9nKCk7Cit9CisKK2lmICh3aW5kb3cu
ZXZlbnRTZW5kZXIpIHsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOworICAg
IHRlc3RFdmVudHMoMCwgImNsaWNrKDEwLCAxMCkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxl
UGFnZUJ5KDAuNSwgMCwgMCk7CisKKyAgICAvLyBXZSBhcmUgY2xpY2tpbmcgaW4gdGhlIHNhbWUg
cG9zaXRpb24gb24gc2NyZWVuLCBidXQgd2UgaGF2ZSBzY2FsZWQgdGhlIHBhZ2Ugb3V0IGJ5IDUw
JSwKKyAgICAvLyB3ZSB0aGVyZWZvcmUgZXhwZWN0IHRoZSBwYWdlLXJlbGF0aXZlIGNvb3JkaW5h
dGVzIG9mIHRoZSBtb3VzZSBldmVudCAocGFnZVgsIHBhZ2VZKQorICAgIC8vIHRvIGJlIGRvdWJs
ZWQuCisgICAgdGVzdEV2ZW50cygwLCAiY2xpY2soMjAsIDIwKSIpOworfQorCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYWZhYzUxZjMxZTFjNDljY2VjNWYw
MzJiZDhlMzFiOTI0NTYwNjA3Li44MGIzNzY3MjRmZTcwNWI5Mjc5NTkzNTI3ZDQwNjIxZTQ5OTU4
ZDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMDUgIEpvaG4gS25vdHRl
bmJlbHQgIDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVG
YWN0b3IgaW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZXZlbnRzL3BhZ2Ut
c2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwKKworICAgICAgICAqIGRvbS9Nb3VzZVJlbGF0ZWRFdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVk
RXZlbnQpOgorCiAyMDExLTA5LTAxICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGdvb2dsZS5jb20+
CiAKICAgICAgICAgR2VuZXJhdGUgYSBGaWxlUmVhZGVyIGNvbnN0cnVjdG9yIG9mIFY4IHVzaW5n
IHRoZSBJREwgJ0NvbnN0cnVjdG9yJyBleHRlbmRlZCBhdHRyaWJ1dGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4IDIxNmZlMjhjNDFjMjM1Yjg5NTg0NDU4NTk5
Njc3MDU1MWVjNWZjMGMuLjJkODE5MzU2ZTc0NWE2YmM4Njc4Y2Q4NDE1ZmY3MTBhMmIzNjg4NzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApAQCAtNjcsNyArNjcs
NyBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxhdGVkRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYgogICAgICAgICBpZiAoRnJhbWVWaWV3KiBmcmFt
ZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IGZy
YW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0
aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRzKHdpbmRvd0xvY2F0aW9uKTsKLSAgICAg
ICAgICAgIGZsb2F0IHBhZ2Vab29tID0gZnJhbWUtPnBhZ2Vab29tRmFjdG9yKCk7CisgICAgICAg
ICAgICBmbG9hdCBwYWdlWm9vbSA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPnBh
Z2VTY2FsZUZhY3RvcigpOwogICAgICAgICAgICAgaWYgKHBhZ2Vab29tICE9IDEuMGYpIHsKICAg
ICAgICAgICAgICAgICAvLyBBZGp1c3Qgb3VyIHBhZ2VYIGFuZCBwYWdlWSB0byBhY2NvdW50IGZv
ciB0aGUgcGFnZSB6b29tLgogICAgICAgICAgICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uLnNj
YWxlKDEgLyBwYWdlWm9vbSwgMSAvIHBhZ2Vab29tKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107327</attachid>
            <date>2011-09-14 07:00:35 -0700</date>
            <delta_ts>2011-09-16 08:02:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67592-20110914150033.patch</filename>
            <type>text/plain</type>
            <size>10257</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwMjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OWQ4YTU5NDkyYmIxYzJkNzU2YTIx
YzMwNWUyZTljMmI4NGY4ZmQzLi43Y2I1YWEwZjIwNDZhNWZlNDkzZjA2ZmJmYTIzNmJiNWU3ZWY1
NGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDktMTQgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVGYWN0b3Ig
aW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWlmcmFtZS1pbm5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKCk6CisgICAgICAgIChjbGVhckV2ZW50TG9nKToKKyAgICAgICAgKHRlc3RFdmVudHMpOgor
ICAgICAgICAoaWZyYW1lTG9hZGVkKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3JpcHQtdGVz
dHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAg
ICAgKGNsZWFyRXZlbnRMb2cpOgorICAgICAgICAoc2VuZEV2ZW50cyk6CisgICAgICAgICh0ZXN0
RXZlbnRzKToKKwogMjAxMS0wOS0xMyAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93biBpcyB1bmltcGxlbWVudGVkIChXS1RSKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xp
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI4NDQzODVjOTZiNzdhYTNkZDY3YzY5
OWJiN2NhNmQ0NGVjZjg2NTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBA
QAorVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ugc2NhbGluZyBkb2VzIG5vdCBhZmZlY3QgbW91c2UgZXZl
bnQgcGFnZVggYW5kIHBhZ2VZIGNvb3JkaW5hdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworVW5zY2FsZWQKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDEwLCAxMCkiCisKK3Nl
dFBhZ2VTY2FsZSgwLjUpCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgMjApIgorCitDU1Mg
c2NhbGUoMC41LCAyLjApCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgNSkiCisKK3NldFBh
Z2VTY2FsZSgwLjUpLCBDU1Mgc2NhbGUoMC41LCAyLjApCitQQVNTIGV2ZW50TG9nIGlzICJjbGlj
ayg0MCwgMTApIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQt
bW91c2UtY2xpY2staWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
YmZjYjU3OGZjZjJlYjgwZjgyZjAwNDA3MzM4ZGI1N2JhMjk5OGYyMAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFt
ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCitUaGlzIHRlc3RzIHRoYXQgcGFnZSBz
Y2FsaW5nIGRvZXMgbm90IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29vcmRp
bmF0ZXMgZm9yIGNvbnRlbnQgZW1iZWRkZWQgaW4gYW4gaWZyYW1lLgorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworVW5zY2FsZWQKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDEwLCAx
MCkiCisKK3NldFBhZ2VTY2FsZSgwLjUpCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgMjAp
IgorCitDU1Mgc2NhbGUoMC41LCAyLjApCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgNSki
CisKK3NldFBhZ2VTY2FsZSgwLjUpLCBDU1Mgc2NhbGUoMC41LCAyLjApCitQQVNTIGV2ZW50TG9n
IGlzICJjbGljayg0MCwgMTApIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFn
ZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43OTliZDA3
Y2JmMzIzYTY0ODA1NDliYWFjN2FlODI1NzMxNGQ3YmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmh0bWwK
QEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgorPGh0bWwgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsgIj4KKzxoZWFkPgor
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHls
ZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOiAwcHg7Ij4KKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2Ny
aXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1z
Y2FsZWQtbW91c2UtY2xpY2suaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTA3ZDc1MWExNzE5M2E2YWYwOTZi
ODEyNjRiNjQ5NWMyYmI3MjM1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURP
Q1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFk
PgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1z
dHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjBweCI+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMv
cGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLWlubmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9yZXNvdXJjZXMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLWlubmVy
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMDU1YzA0ZDg3MGRjZmEyZTIxMWIzYWE2OTYzMzhmYzk0ZjJmNGFh
YgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9w
YWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtaW5uZXIuaHRtbApAQCAtMCwwICsxLDIgQEAK
Kzxib2R5IG9ubG9hZD0icGFyZW50LmlmcmFtZUxvYWRlZCgpIiBzdHlsZT0ibWFyZ2luOiAwcHg7
Ij4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10
ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQzMTIxNDE3NjNmMTEwMmIwOGY1ZGQ5MjRiNDJmMzA1NWUwYTU2N2EKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1z
Y2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzCkBAIC0wLDAgKzEsODMgQEAKK2Rlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoYXQgcGFnZSBzY2FsaW5nIGRvZXMgbm90IGFmZmVjdCBtb3VzZSBldmVu
dCBwYWdlWCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMgZm9yICIgKworICAgICAgICAgICAgImNvbnRl
bnQgZW1iZWRkZWQgaW4gYW4gaWZyYW1lLiIpOworCit2YXIgaHRtbCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJodG1sIilbMF07CisKK3ZhciBpZnJhbWUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJpZnJhbWUiKTsKK2lmcmFtZS5zdHlsZS5ib3JkZXIgPSAibm9uZSI7CitpZnJh
bWUuc3R5bGUud2lkdGggPSAiMjAwcHgiOworaWZyYW1lLnN0eWxlLmhlaWdodCA9ICIyMDBweCI7
CitpZnJhbWUuc3R5bGUuYmFja2dyb3VuZCA9ICJncmVlbiI7CisKK3ZhciBkaXYgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIxMDBweCI7CitkaXYu
c3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiYmx1
ZSI7CisKK3ZhciBldmVudExvZyA9ICIiOworCitmdW5jdGlvbiBhcHBlbmRFdmVudExvZyhldmVu
dCkgeworICAgIHZhciBtc2cgPSBldmVudC50eXBlICsgIigiICsgZXZlbnQucGFnZVggKyAiLCAi
ICsgZXZlbnQucGFnZVkgKyAiKSI7CisKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7Cisg
ICAgICAgIGV2ZW50TG9nICs9IG1zZzsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1Zyhtc2cp
OworICAgIH0KK30KKworZnVuY3Rpb24gY2xlYXJFdmVudExvZygpIHsKKyAgICBldmVudExvZyA9
ICIiOworfQorCitmdW5jdGlvbiBzZW5kRXZlbnRzKGJ1dHRvbikgeworICAgIGlmICghd2luZG93
LmV2ZW50U2VuZGVyKSB7CisgICAgICAgIGRlYnVnKCJUaGlzIHRlc3QgcmVxdWlyZXMgRHVtcFJl
bmRlclRyZWUuICBDbGljayBvbiB0aGUgYmx1ZSByZWN0IHdpdGggdGhlIGxlZnQgbW91c2UgYnV0
dG9uIHRvIGxvZyB0aGUgbW91c2UgY29vcmRpbmF0ZXMuIikKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICBldmVudFNlbmRlci5tb3VzZURvd24oYnV0dG9uKTsKKyAgICBldmVudFNlbmRlci5t
b3VzZVVwKGJ1dHRvbik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFdmVudHMoYnV0dG9uLCBkZXNjcmlw
dGlvbiwgZXhwZWN0ZWRTdHJpbmcpIHsKKyAgICBzZW5kRXZlbnRzKGJ1dHRvbik7CisgICAgZGVi
dWcoZGVzY3JpcHRpb24pOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnRMb2ciLCBl
eHBlY3RlZFN0cmluZyk7CisgICAgY2xlYXJFdmVudExvZygpOworICAgIGRlYnVnKCIiKTsKK30K
KworZnVuY3Rpb24gaWZyYW1lTG9hZGVkKCkgeworICAvLyBBZGQgdGhlIGRpdiB0byB0aGUgaWZy
YW1lLgorICBkaXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhcHBlbmRFdmVudExvZywgZmFs
c2UpOworICBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShk
aXYsIGlmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKKyAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEw
LCAxMCk7CisgICAgLy8gV2UgYXJlIGNsaWNraW5nIGluIHRoZSBzYW1lIHBvc2l0aW9uIG9uIHNj
cmVlbi4gQXMgd2Ugc2NhbGUgb3IgdHJhbnNmb3JtIHRoZSBwYWdlLAorICAgIC8vIHdlIGV4cGVj
dCB0aGUgcGFnZVggYW5kIHBhZ2VZIGV2ZW50IGNvb3JkaW5hdGVzIHRvIGNoYW5nZSBiZWNhdXNl
IGRpZmZlcmVudAorICAgIC8vIHBhcnRzIG9mIHRoZSBkb2N1bWVudCBhcmUgdW5kZXIgdGhlIG1v
dXNlLgorCisgICAgdGVzdEV2ZW50cygwLCAiVW5zY2FsZWQiLCAiY2xpY2soMTAsIDEwKSIpOwor
CisgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoMC41LCAwLCAwKTsKKyAgICB0ZXN0RXZlbnRz
KDAsICJzZXRQYWdlU2NhbGUoMC41KSIsICJjbGljaygyMCwgMjApIik7CisKKyAgICBldmVudFNl
bmRlci5zY2FsZVBhZ2VCeSgxLjAsIDAsIDApOworICAgIGh0bWwuc3R5bGVbIi13ZWJraXQtdHJh
bnNmb3JtIl0gPSAic2NhbGUoMC41LCAyLjApIjsKKyAgICBodG1sLnN0eWxlWyItd2Via2l0LXRy
YW5zZm9ybS1vcmlnaW4iXSA9ICIwIDAiOworICAgIHRlc3RFdmVudHMoMCwgIkNTUyBzY2FsZSgw
LjUsIDIuMCkiLCAiY2xpY2soMjAsIDUpIik7CisKKyAgICBldmVudFNlbmRlci5zY2FsZVBhZ2VC
eSgwLjUsIDAsIDApOworICAgIHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgwLjUpLCBDU1Mg
c2NhbGUoMC41LCAyLjApIiwgImNsaWNrKDQwLCAxMCkiKTsKKyAgfQorCisgIGZpbmlzaEpTVGVz
dCgpOworfQorCisvLyBBZGQgdGhlIGlmcmFtZSB0byB0aGUgZG9jdW1lbnQuCitpZnJhbWUuc3Jj
ID0gInJlc291cmNlcy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtaW5uZXIuaHRtbCI7
Citkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShpZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RD
aGlsZCk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVs
bHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Ny
aXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvc2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjAxZjU5ZTBhYjQ5N2FjMjU3N2E0ZTMxOGY5YmU4ODQzNDZjMGEzMDEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2suanMKQEAgLTAsMCArMSw2NiBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhh
dCBwYWdlIHNjYWxpbmcgZG9lcyBub3QgYWZmZWN0IG1vdXNlIGV2ZW50IHBhZ2VYIGFuZCBwYWdl
WSBjb29yZGluYXRlcy4iKTsKKwordmFyIGh0bWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaHRtbCIpWzBdOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2
Iik7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBw
eCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2YXIgZXZlbnRMb2cg
PSAiIjsKKworZnVuY3Rpb24gYXBwZW5kRXZlbnRMb2coKSB7CisgICAgdmFyIG1zZyA9IGV2ZW50
LnR5cGUgKyAiKCIgKyBldmVudC5wYWdlWCArICIsICIgKyBldmVudC5wYWdlWSArICIpIjsKKwor
ICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRMb2cgKz0gbXNnOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlvbiBj
bGVhckV2ZW50TG9nKCkgeworICAgIGV2ZW50TG9nID0gIiI7Cit9CisKK2Rpdi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7Citkb2N1bWVudC5ib2R5Lmlu
c2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIHNl
bmRFdmVudHMoYnV0dG9uKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIENsaWNrIG9uIHRo
ZSBibHVlIHJlY3Qgd2l0aCB0aGUgbGVmdCBtb3VzZSBidXR0b24gdG8gbG9nIHRoZSBtb3VzZSBj
b29yZGluYXRlcy4iKQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bihidXR0b24pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoYnV0dG9uKTsKK30KKwor
ZnVuY3Rpb24gdGVzdEV2ZW50cyhidXR0b24sIGRlc2NyaXB0aW9uLCBleHBlY3RlZFN0cmluZykg
eworICAgIHNlbmRFdmVudHMoYnV0dG9uKTsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlvbik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudExvZyIsIGV4cGVjdGVkU3RyaW5nKTsKKyAgICBk
ZWJ1ZygiIik7CisgICAgY2xlYXJFdmVudExvZygpOworfQorCitpZiAod2luZG93LmV2ZW50U2Vu
ZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAgICAvLyBXZSBh
cmUgY2xpY2tpbmcgaW4gdGhlIHNhbWUgcG9zaXRpb24gb24gc2NyZWVuLiBBcyB3ZSBzY2FsZSBv
ciB0cmFuc2Zvcm0gdGhlIHBhZ2UsCisgICAgLy8gd2UgZXhwZWN0IHRoZSBwYWdlWCBhbmQgcGFn
ZVkgZXZlbnQgY29vcmRpbmF0ZXMgdG8gY2hhbmdlIGJlY2F1c2UgZGlmZmVyZW50CisgICAgLy8g
cGFydHMgb2YgdGhlIGRvY3VtZW50IGFyZSB1bmRlciB0aGUgbW91c2UuCisKKyAgICB0ZXN0RXZl
bnRzKDAsICJVbnNjYWxlZCIsICJjbGljaygxMCwgMTApIik7CisKKyAgICBldmVudFNlbmRlci5z
Y2FsZVBhZ2VCeSgwLjUsIDAsIDApOworICAgIHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgw
LjUpIiwgImNsaWNrKDIwLCAyMCkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDEu
MCwgMCwgMCk7CisgICAgaHRtbC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXSA9ICJzY2FsZSgw
LjUsIDIuMCkiOworICAgIGh0bWwuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiJdID0g
IjAgMCI7CisgICAgdGVzdEV2ZW50cygwLCAiQ1NTIHNjYWxlKDAuNSwgMi4wKSIsICJjbGljaygy
MCwgNSkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDAuNSwgMCwgMCk7CisgICAg
dGVzdEV2ZW50cygwLCAic2V0UGFnZVNjYWxlKDAuNSksIENTUyBzY2FsZSgwLjUsIDIuMCkiLCAi
Y2xpY2soNDAsIDEwKSIpOworfQorCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107653</attachid>
            <date>2011-09-16 08:02:29 -0700</date>
            <delta_ts>2011-09-23 10:54:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67592-20110916160227.patch</filename>
            <type>text/plain</type>
            <size>10293</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTUwMjMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1OWQ4YTU5NDkyYmIxYzJkNzU2YTIx
YzMwNWUyZTljMmI4NGY4ZmQzLi43Y2I1YWEwZjIwNDZhNWZlNDkzZjA2ZmJmYTIzNmJiNWU3ZWY1
NGFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDktMTQgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVGYWN0b3Ig
aW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWlmcmFtZS1pbm5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKCk6CisgICAgICAgIChjbGVhckV2ZW50TG9nKToKKyAgICAgICAgKHRlc3RFdmVudHMpOgor
ICAgICAgICAoaWZyYW1lTG9hZGVkKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3JpcHQtdGVz
dHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAg
ICAgKGNsZWFyRXZlbnRMb2cpOgorICAgICAgICAoc2VuZEV2ZW50cyk6CisgICAgICAgICh0ZXN0
RXZlbnRzKToKKwogMjAxMS0wOS0xMyAgUmVuYXRhIEhvZG92YW4gIDxyZW5pQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgZXZlbnRTZW5kZXIua2V5RG93biBpcyB1bmltcGxlbWVudGVkIChXS1RSKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xp
Y2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0NWVlZTE0ZjUwMGJiYzA2MjkyZGFl
MTJmYzUxMjgzZGNkYzJjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMSBA
QAorVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ugc2NhbGluZyBhbmQgQ1NTIHRyYW5zZm9ybXMgZG8gbm90
IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitVbnNjYWxlZAorUEFTUyBldmVudExvZyBpcyAiY2xp
Y2soMTAsIDEwKSIKKworc2V0UGFnZVNjYWxlKDAuNSkKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNr
KDIwLCAyMCkiCisKK0NTUyBzY2FsZSgwLjUsIDIuMCkKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNr
KDIwLCA1KSIKKworc2V0UGFnZVNjYWxlKDAuNSksIENTUyBzY2FsZSgwLjUsIDIuMCkKK1BBU1Mg
ZXZlbnRMb2cgaXMgImNsaWNrKDQwLCAxMCkiCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZWNmMDZhYjgzNTZkNzkwYTczNjM2NDhjYjlmZGJhMmUzODA0YzA2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQt
bW91c2UtY2xpY2staWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIyIEBACisKK1RoaXMg
dGVzdHMgdGhhdCBwYWdlIHNjYWxpbmcgYW5kIENTUyB0cmFuc2Zvcm1zIGRvIG5vdCBhZmZlY3Qg
bW91c2UgZXZlbnQgcGFnZVggYW5kIHBhZ2VZIGNvb3JkaW5hdGVzIGZvciBjb250ZW50IGVtYmVk
ZGVkIGluIGFuIGlmcmFtZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Vuc2Nh
bGVkCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygxMCwgMTApIgorCitzZXRQYWdlU2NhbGUoMC41
KQorUEFTUyBldmVudExvZyBpcyAiY2xpY2soMjAsIDIwKSIKKworQ1NTIHNjYWxlKDAuNSwgMi4w
KQorUEFTUyBldmVudExvZyBpcyAiY2xpY2soMjAsIDUpIgorCitzZXRQYWdlU2NhbGUoMC41KSwg
Q1NTIHNjYWxlKDAuNSwgMi4wKQorUEFTUyBldmVudExvZyBpcyAiY2xpY2soNDAsIDEwKSIKKwor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlm
cmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xp
Y2staWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk5YmQwN2NiZjMyM2E2NDgwNTQ5YmFhYzdhZTgy
NTczMTRkN2JhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3Bh
Z2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS5odG1sCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiByZWQ7ICI+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIu
Li9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
c3R5bGU9Im1hcmdpbjogMHB4OyI+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9
ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1t
b3VzZS1jbGljay1pZnJhbWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNWUwN2Q3NTFhMTcxOTNhNmFmMDk2YjgxMjY0YjY0OTVjMmJiNzIzNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNl
LWNsaWNrLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVl
dCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3Jj
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJv
ZHkgc3R5bGU9Im1hcmdpbjowcHgiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQt
bW91c2UtY2xpY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNr
LWlmcmFtZS1pbm5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3Bh
Z2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1pbm5lci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1NWMw
NGQ4NzBkY2ZhMmUyMTFiM2FhNjk2MzM4ZmM5NGYyZjRhYWIKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2st
aWZyYW1lLWlubmVyLmh0bWwKQEAgLTAsMCArMSwyIEBACis8Ym9keSBvbmxvYWQ9InBhcmVudC5p
ZnJhbWVMb2FkZWQoKSIgc3R5bGU9Im1hcmdpbjogMHB4OyI+Cis8L2JvZHk+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2Ut
Y2xpY2staWZyYW1lLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL3Bh
Z2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MDRlN2U0ZWNlMWQz
OGU4NGY2ZTM1YWMwMDQ1Mzg3Yjk3NjUxMWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFt
ZS5qcwpAQCAtMCwwICsxLDgzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ug
c2NhbGluZyBhbmQgQ1NTIHRyYW5zZm9ybXMgZG8gbm90IGFmZmVjdCBtb3VzZSBldmVudCBwYWdl
WCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMgZm9yICIgKworICAgICAgICAgICAgImNvbnRlbnQgZW1i
ZWRkZWQgaW4gYW4gaWZyYW1lLiIpOworCit2YXIgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudDsKKwordmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOwor
aWZyYW1lLnN0eWxlLmJvcmRlciA9ICJub25lIjsKK2lmcmFtZS5zdHlsZS53aWR0aCA9ICIyMDBw
eCI7CitpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjIwMHB4IjsKK2lmcmFtZS5zdHlsZS5iYWNrZ3Jv
dW5kID0gImdyZWVuIjsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIp
OworZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5oZWlnaHQgPSAiMTAwcHgi
OworZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGV2ZW50TG9nID0g
IiI7CisKK2Z1bmN0aW9uIGFwcGVuZEV2ZW50TG9nKGV2ZW50KSB7CisgICAgdmFyIG1zZyA9IGV2
ZW50LnR5cGUgKyAiKCIgKyBldmVudC5wYWdlWCArICIsICIgKyBldmVudC5wYWdlWSArICIpIjsK
KworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRMb2cgKz0gbXNn
OworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlv
biBjbGVhckV2ZW50TG9nKCkgeworICAgIGV2ZW50TG9nID0gIiI7Cit9CisKK2Z1bmN0aW9uIHNl
bmRFdmVudHMoYnV0dG9uKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAg
ICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIENsaWNrIG9uIHRo
ZSBibHVlIHJlY3Qgd2l0aCB0aGUgbGVmdCBtb3VzZSBidXR0b24gdG8gbG9nIHRoZSBtb3VzZSBj
b29yZGluYXRlcy4iKQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV2ZW50U2VuZGVyLm1v
dXNlRG93bihidXR0b24pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoYnV0dG9uKTsKK30KKwor
ZnVuY3Rpb24gdGVzdEV2ZW50cyhidXR0b24sIGRlc2NyaXB0aW9uLCBleHBlY3RlZFN0cmluZykg
eworICAgIHNlbmRFdmVudHMoYnV0dG9uKTsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlvbik7CisgICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudExvZyIsIGV4cGVjdGVkU3RyaW5nKTsKKyAgICBj
bGVhckV2ZW50TG9nKCk7CisgICAgZGVidWcoIiIpOworfQorCitmdW5jdGlvbiBpZnJhbWVMb2Fk
ZWQoKSB7CisgIC8vIEFkZCB0aGUgZGl2IHRvIHRoZSBpZnJhbWUuCisgIGRpdi5hZGRFdmVudExp
c3RlbmVyKCJjbGljayIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7CisgIGlmcmFtZS5jb250ZW50
V2luZG93LmRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgaWZyYW1lLmNvbnRlbnRXaW5k
b3cuZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKworICBpZiAod2luZG93LmV2ZW50U2VuZGVy
KSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAgICAvLyBXZSBhcmUg
Y2xpY2tpbmcgaW4gdGhlIHNhbWUgcG9zaXRpb24gb24gc2NyZWVuLiBBcyB3ZSBzY2FsZSBvciB0
cmFuc2Zvcm0gdGhlIHBhZ2UsCisgICAgLy8gd2UgZXhwZWN0IHRoZSBwYWdlWCBhbmQgcGFnZVkg
ZXZlbnQgY29vcmRpbmF0ZXMgdG8gY2hhbmdlIGJlY2F1c2UgZGlmZmVyZW50CisgICAgLy8gcGFy
dHMgb2YgdGhlIGRvY3VtZW50IGFyZSB1bmRlciB0aGUgbW91c2UuCisKKyAgICB0ZXN0RXZlbnRz
KDAsICJVbnNjYWxlZCIsICJjbGljaygxMCwgMTApIik7CisKKyAgICBldmVudFNlbmRlci5zY2Fs
ZVBhZ2VCeSgwLjUsIDAsIDApOworICAgIHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgwLjUp
IiwgImNsaWNrKDIwLCAyMCkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDEuMCwg
MCwgMCk7CisgICAgaHRtbC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXSA9ICJzY2FsZSgwLjUs
IDIuMCkiOworICAgIGh0bWwuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiJdID0gIjAg
MCI7CisgICAgdGVzdEV2ZW50cygwLCAiQ1NTIHNjYWxlKDAuNSwgMi4wKSIsICJjbGljaygyMCwg
NSkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDAuNSwgMCwgMCk7CisgICAgdGVz
dEV2ZW50cygwLCAic2V0UGFnZVNjYWxlKDAuNSksIENTUyBzY2FsZSgwLjUsIDIuMCkiLCAiY2xp
Y2soNDAsIDEwKSIpOworICB9CisKKyAgZmluaXNoSlNUZXN0KCk7Cit9CisKKy8vIEFkZCB0aGUg
aWZyYW1lIHRvIHRoZSBkb2N1bWVudC4KK2lmcmFtZS5zcmMgPSAicmVzb3VyY2VzL3BhZ2Utc2Nh
bGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1pbm5lci5odG1sIjsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0
QmVmb3JlKGlmcmFtZSwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKKword2luZG93LmpzVGVz
dElzQXN5bmMgPSB0cnVlOword2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQt
bW91c2UtY2xpY2suanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFn
ZS1zY2FsZWQtbW91c2UtY2xpY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTViNTNhMDg3ZTgxNTBmNGJjNmI4
YmE0YjRiMzVjZTRiNTYxNDNiNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5qcwpAQCAtMCwwICsx
LDY2IEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ugc2NhbGluZyBhbmQgQ1NT
IHRyYW5zZm9ybXMgZG8gbm90IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29v
cmRpbmF0ZXMuIik7CisKK3ZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworCit2
YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUud2lkdGgg
PSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dy
b3VuZENvbG9yID0gImJsdWUiOworCit2YXIgZXZlbnRMb2cgPSAiIjsKKworZnVuY3Rpb24gYXBw
ZW5kRXZlbnRMb2coKSB7CisgICAgdmFyIG1zZyA9IGV2ZW50LnR5cGUgKyAiKCIgKyBldmVudC5w
YWdlWCArICIsICIgKyBldmVudC5wYWdlWSArICIpIjsKKworICAgIGlmICh3aW5kb3cuZXZlbnRT
ZW5kZXIpIHsKKyAgICAgICAgZXZlbnRMb2cgKz0gbXNnOworICAgIH0gZWxzZSB7CisgICAgICAg
IGRlYnVnKG1zZyk7CisgICAgfQorfQorCitmdW5jdGlvbiBjbGVhckV2ZW50TG9nKCkgeworICAg
IGV2ZW50TG9nID0gIiI7Cit9CisKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFwcGVu
ZEV2ZW50TG9nLCBmYWxzZSk7Citkb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKK2Z1bmN0aW9uIHNlbmRFdmVudHMoYnV0dG9uKSB7Cisg
ICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBy
ZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4gIENsaWNrIG9uIHRoZSBibHVlIHJlY3Qgd2l0aCB0aGUg
bGVmdCBtb3VzZSBidXR0b24gdG8gbG9nIHRoZSBtb3VzZSBjb29yZGluYXRlcy4iKQorICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bihidXR0b24pOworICAg
IGV2ZW50U2VuZGVyLm1vdXNlVXAoYnV0dG9uKTsKK30KKworZnVuY3Rpb24gdGVzdEV2ZW50cyhi
dXR0b24sIGRlc2NyaXB0aW9uLCBleHBlY3RlZFN0cmluZykgeworICAgIHNlbmRFdmVudHMoYnV0
dG9uKTsKKyAgICBkZWJ1ZyhkZXNjcmlwdGlvbik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5n
KCJldmVudExvZyIsIGV4cGVjdGVkU3RyaW5nKTsKKyAgICBkZWJ1ZygiIik7CisgICAgY2xlYXJF
dmVudExvZygpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsKKyAgICAvLyBXZSBhcmUgY2xpY2tpbmcgaW4gdGhlIHNh
bWUgcG9zaXRpb24gb24gc2NyZWVuLiBBcyB3ZSBzY2FsZSBvciB0cmFuc2Zvcm0gdGhlIHBhZ2Us
CisgICAgLy8gd2UgZXhwZWN0IHRoZSBwYWdlWCBhbmQgcGFnZVkgZXZlbnQgY29vcmRpbmF0ZXMg
dG8gY2hhbmdlIGJlY2F1c2UgZGlmZmVyZW50CisgICAgLy8gcGFydHMgb2YgdGhlIGRvY3VtZW50
IGFyZSB1bmRlciB0aGUgbW91c2UuCisKKyAgICB0ZXN0RXZlbnRzKDAsICJVbnNjYWxlZCIsICJj
bGljaygxMCwgMTApIik7CisKKyAgICBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgwLjUsIDAsIDAp
OworICAgIHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgwLjUpIiwgImNsaWNrKDIwLCAyMCki
KTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5KDEuMCwgMCwgMCk7CisgICAgaHRtbC5z
dHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0iXSA9ICJzY2FsZSgwLjUsIDIuMCkiOworICAgIGh0bWwu
c3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbiJdID0gIjAgMCI7CisgICAgdGVzdEV2ZW50
cygwLCAiQ1NTIHNjYWxlKDAuNSwgMi4wKSIsICJjbGljaygyMCwgNSkiKTsKKworICAgIGV2ZW50
U2VuZGVyLnNjYWxlUGFnZUJ5KDAuNSwgMCwgMCk7CisgICAgdGVzdEV2ZW50cygwLCAic2V0UGFn
ZVNjYWxlKDAuNSksIENTUyBzY2FsZSgwLjUsIDIuMCkiLCAiY2xpY2soNDAsIDEwKSIpOworfQor
Cit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108494</attachid>
            <date>2011-09-23 10:54:49 -0700</date>
            <delta_ts>2011-10-05 03:14:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67592-20110923185447.patch</filename>
            <type>text/plain</type>
            <size>14213</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU4MDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkZWYwOTUwNGY3YWI4M2NkZjZiMmE5
MGQzNzYyMGUzZjU4ZDZlNmRhLi5lZTgzZmJkZmI0NzFiYjVmODU4M2IyYjZmZjk2ZGVlZGE2M2Jh
Yzg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDktMjMgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVGYWN0b3Ig
aW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWlmcmFtZS1pbm5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKCk6CisgICAgICAgIChjbGVhckV2ZW50TG9nKToKKyAgICAgICAgKHRlc3RFdmVudHMpOgor
ICAgICAgICAoaWZyYW1lTG9hZGVkKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3JpcHQtdGVz
dHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAg
ICAgKGNsZWFyRXZlbnRMb2cpOgorICAgICAgICAoc2VuZEV2ZW50cyk6CisgICAgICAgICh0ZXN0
RXZlbnRzKToKKwogMjAxMS0wOS0yMyAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5j
b20+CiAKICAgICAgICAgW1F0XVtHdGtdIFdyb25nIHN0YXRlIHdoZW4gcGF1c2luZyBhIHZpZGVv
IGluIHRoZSAicGxheWluZyIgZXZlbnQgaGFuZGxlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2stZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjdmZTUxYjBiMjFlMDg3OTEzMWQ4Mzg5M2Y0NzZiZjVlZTUxN2U1ZjAKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1j
bGljay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ug
c2NhbGluZyBkb2VzIG5vdCBhZmZlY3QgbW91c2UgZXZlbnQgcGFnZVggYW5kIHBhZ2VZIGNvb3Jk
aW5hdGVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworVW5zY2FsZWQKK1BBU1Mg
ZXZlbnRMb2cgaXMgImNsaWNrKDEwLCAxMCkiCisKK3NldFBhZ2VTY2FsZSgwLjUpCitQQVNTIGV2
ZW50TG9nIGlzICJjbGljaygyMCwgMjApIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYWVjZjA2YWI4MzU2ZDc5MGE3MzYzNjQ4Y2I5ZmRiYTJlMzgwNGMwNgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1v
dXNlLWNsaWNrLWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMiBAQAorCitUaGlzIHRl
c3RzIHRoYXQgcGFnZSBzY2FsaW5nIGFuZCBDU1MgdHJhbnNmb3JtcyBkbyBub3QgYWZmZWN0IG1v
dXNlIGV2ZW50IHBhZ2VYIGFuZCBwYWdlWSBjb29yZGluYXRlcyBmb3IgY29udGVudCBlbWJlZGRl
ZCBpbiBhbiBpZnJhbWUuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitVbnNjYWxl
ZAorUEFTUyBldmVudExvZyBpcyAiY2xpY2soMTAsIDEwKSIKKworc2V0UGFnZVNjYWxlKDAuNSkK
K1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDIwLCAyMCkiCisKK0NTUyBzY2FsZSgwLjUsIDIuMCkK
K1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDIwLCA1KSIKKworc2V0UGFnZVNjYWxlKDAuNSksIENT
UyBzY2FsZSgwLjUsIDIuMCkKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDQwLCAxMCkiCisKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJh
bWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNr
LWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ1NjRkZDFjOGE1NGRkOTUyZDExYjI4ZDk5YjA3Y2Zh
ZGYxN2Q2YzcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbApAQCAtMCwwICsxLDEzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7ICI+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgc3R5bGU9Im1hcmdpbjogMHB4OyI+Cis8cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNj
cmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFn
ZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Ut
c2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzUzZDRlZjg2ZWI5MGEwOWU1YjA5
ZGVjMzIwZDBjMTJmMDAyOGExYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHls
ZT0ibWFyZ2luOjBweCI+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1j
bGljay5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1l
LWlubmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvcGFnZS1zY2Fs
ZWQtbW91c2UtY2xpY2staWZyYW1lLWlubmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU1YzA0ZDg3MGRj
ZmEyZTIxMWIzYWE2OTYzMzhmYzk0ZjJmNGFhYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL3Jlc291cmNlcy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUt
aW5uZXIuaHRtbApAQCAtMCwwICsxLDIgQEAKKzxib2R5IG9ubG9hZD0icGFyZW50LmlmcmFtZUxv
YWRlZCgpIiBzdHlsZT0ibWFyZ2luOiAwcHg7Ij4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1p
ZnJhbWUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2Fs
ZWQtbW91c2UtY2xpY2staWZyYW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNGU3ZTRlY2UxZDM4ZTg0ZjZl
MzVhYzAwNDUzODdiOTc2NTExZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzCkBA
IC0wLDAgKzEsODMgQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgcGFnZSBzY2FsaW5n
IGFuZCBDU1MgdHJhbnNmb3JtcyBkbyBub3QgYWZmZWN0IG1vdXNlIGV2ZW50IHBhZ2VYIGFuZCBw
YWdlWSBjb29yZGluYXRlcyBmb3IgIiArCisgICAgICAgICAgICAiY29udGVudCBlbWJlZGRlZCBp
biBhbiBpZnJhbWUuIik7CisKK3ZhciBodG1sID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Owor
Cit2YXIgaWZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpZnJhbWUu
c3R5bGUuYm9yZGVyID0gIm5vbmUiOworaWZyYW1lLnN0eWxlLndpZHRoID0gIjIwMHB4IjsKK2lm
cmFtZS5zdHlsZS5oZWlnaHQgPSAiMjAwcHgiOworaWZyYW1lLnN0eWxlLmJhY2tncm91bmQgPSAi
Z3JlZW4iOworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CitkaXYu
c3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhlaWdodCA9ICIxMDBweCI7CitkaXYu
c3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2YXIgZXZlbnRMb2cgPSAiIjsKKwor
ZnVuY3Rpb24gYXBwZW5kRXZlbnRMb2coZXZlbnQpIHsKKyAgICB2YXIgbXNnID0gZXZlbnQudHlw
ZSArICIoIiArIGV2ZW50LnBhZ2VYICsgIiwgIiArIGV2ZW50LnBhZ2VZICsgIikiOworCisgICAg
aWYgKHdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBldmVudExvZyArPSBtc2c7CisgICAg
fSBlbHNlIHsKKyAgICAgICAgZGVidWcobXNnKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsZWFy
RXZlbnRMb2coKSB7CisgICAgZXZlbnRMb2cgPSAiIjsKK30KKworZnVuY3Rpb24gc2VuZEV2ZW50
cyhidXR0b24pIHsKKyAgICBpZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZWJ1
ZygiVGhpcyB0ZXN0IHJlcXVpcmVzIER1bXBSZW5kZXJUcmVlLiAgQ2xpY2sgb24gdGhlIGJsdWUg
cmVjdCB3aXRoIHRoZSBsZWZ0IG1vdXNlIGJ1dHRvbiB0byBsb2cgdGhlIG1vdXNlIGNvb3JkaW5h
dGVzLiIpCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3du
KGJ1dHRvbik7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcChidXR0b24pOworfQorCitmdW5jdGlv
biB0ZXN0RXZlbnRzKGJ1dHRvbiwgZGVzY3JpcHRpb24sIGV4cGVjdGVkU3RyaW5nKSB7CisgICAg
c2VuZEV2ZW50cyhidXR0b24pOworICAgIGRlYnVnKGRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoImV2ZW50TG9nIiwgZXhwZWN0ZWRTdHJpbmcpOworICAgIGNsZWFyRXZl
bnRMb2coKTsKKyAgICBkZWJ1ZygiIik7Cit9CisKK2Z1bmN0aW9uIGlmcmFtZUxvYWRlZCgpIHsK
KyAgLy8gQWRkIHRoZSBkaXYgdG8gdGhlIGlmcmFtZS4KKyAgZGl2LmFkZEV2ZW50TGlzdGVuZXIo
ImNsaWNrIiwgYXBwZW5kRXZlbnRMb2csIGZhbHNlKTsKKyAgaWZyYW1lLmNvbnRlbnRXaW5kb3cu
ZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUoZGl2LCBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1
bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCisgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygxMCwgMTApOworICAgIC8vIFdlIGFyZSBjbGlja2lu
ZyBpbiB0aGUgc2FtZSBwb3NpdGlvbiBvbiBzY3JlZW4uIEFzIHdlIHNjYWxlIG9yIHRyYW5zZm9y
bSB0aGUgcGFnZSwKKyAgICAvLyB3ZSBleHBlY3QgdGhlIHBhZ2VYIGFuZCBwYWdlWSBldmVudCBj
b29yZGluYXRlcyB0byBjaGFuZ2UgYmVjYXVzZSBkaWZmZXJlbnQKKyAgICAvLyBwYXJ0cyBvZiB0
aGUgZG9jdW1lbnQgYXJlIHVuZGVyIHRoZSBtb3VzZS4KKworICAgIHRlc3RFdmVudHMoMCwgIlVu
c2NhbGVkIiwgImNsaWNrKDEwLCAxMCkiKTsKKworICAgIGV2ZW50U2VuZGVyLnNjYWxlUGFnZUJ5
KDAuNSwgMCwgMCk7CisgICAgdGVzdEV2ZW50cygwLCAic2V0UGFnZVNjYWxlKDAuNSkiLCAiY2xp
Y2soMjAsIDIwKSIpOworCisgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoMS4wLCAwLCAwKTsK
KyAgICBodG1sLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybSJdID0gInNjYWxlKDAuNSwgMi4wKSI7
CisgICAgaHRtbC5zdHlsZVsiLXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luIl0gPSAiMCAwIjsKKyAg
ICB0ZXN0RXZlbnRzKDAsICJDU1Mgc2NhbGUoMC41LCAyLjApIiwgImNsaWNrKDIwLCA1KSIpOwor
CisgICAgZXZlbnRTZW5kZXIuc2NhbGVQYWdlQnkoMC41LCAwLCAwKTsKKyAgICB0ZXN0RXZlbnRz
KDAsICJzZXRQYWdlU2NhbGUoMC41KSwgQ1NTIHNjYWxlKDAuNSwgMi4wKSIsICJjbGljayg0MCwg
MTApIik7CisgIH0KKworICBmaW5pc2hKU1Rlc3QoKTsKK30KKworLy8gQWRkIHRoZSBpZnJhbWUg
dG8gdGhlIGRvY3VtZW50LgoraWZyYW1lLnNyYyA9ICJyZXNvdXJjZXMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2staWZyYW1lLWlubmVyLmh0bWwiOworZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUo
aWZyYW1lLCBkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Cit3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxlZC1tb3VzZS1j
bGljay5qcyBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3NjcmlwdC10ZXN0cy9wYWdlLXNjYWxl
ZC1tb3VzZS1jbGljay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMmQ3NzRkOGVjYTI2OGI3MDA3MzNlZWIyYzcx
ODU5OWM1MmUxYzE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
c2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzCkBAIC0wLDAgKzEsNTcgQEAK
K2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgcGFnZSBzY2FsaW5nIGRvZXMgbm90IGFmZmVj
dCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMuIik7CisKK3ZhciBodG1s
ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OworCit2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2Iik7CitkaXYuc3R5bGUud2lkdGggPSAiMTAwcHgiOworZGl2LnN0eWxlLmhl
aWdodCA9ICIxMDBweCI7CitkaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gImJsdWUiOworCit2
YXIgZXZlbnRMb2cgPSAiIjsKKworZnVuY3Rpb24gYXBwZW5kRXZlbnRMb2coKSB7CisgICAgdmFy
IG1zZyA9IGV2ZW50LnR5cGUgKyAiKCIgKyBldmVudC5wYWdlWCArICIsICIgKyBldmVudC5wYWdl
WSArICIpIjsKKworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRM
b2cgKz0gbXNnOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKG1zZyk7CisgICAgfQorfQor
CitmdW5jdGlvbiBjbGVhckV2ZW50TG9nKCkgeworICAgIGV2ZW50TG9nID0gIiI7Cit9CisKK2Rp
di5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFwcGVuZEV2ZW50TG9nLCBmYWxzZSk7Citkb2N1
bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisK
K2Z1bmN0aW9uIHNlbmRFdmVudHMoYnV0dG9uKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5k
ZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyBEdW1wUmVuZGVyVHJlZS4g
IENsaWNrIG9uIHRoZSBibHVlIHJlY3Qgd2l0aCB0aGUgbGVmdCBtb3VzZSBidXR0b24gdG8gbG9n
IHRoZSBtb3VzZSBjb29yZGluYXRlcy4iKQorICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bihidXR0b24pOworICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoYnV0
dG9uKTsKK30KKworZnVuY3Rpb24gdGVzdEV2ZW50cyhidXR0b24sIGRlc2NyaXB0aW9uLCBleHBl
Y3RlZFN0cmluZykgeworICAgIHNlbmRFdmVudHMoYnV0dG9uKTsKKyAgICBkZWJ1ZyhkZXNjcmlw
dGlvbik7CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJldmVudExvZyIsIGV4cGVjdGVkU3Ry
aW5nKTsKKyAgICBkZWJ1ZygiIik7CisgICAgY2xlYXJFdmVudExvZygpOworfQorCitpZiAod2lu
ZG93LmV2ZW50U2VuZGVyKSB7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oMTAsIDEwKTsK
KyAgICAvLyBXZSBhcmUgY2xpY2tpbmcgaW4gdGhlIHNhbWUgcG9zaXRpb24gb24gc2NyZWVuLiBB
cyB3ZSBzY2FsZSBvciB0cmFuc2Zvcm0gdGhlIHBhZ2UsCisgICAgLy8gd2UgZXhwZWN0IHRoZSBw
YWdlWCBhbmQgcGFnZVkgZXZlbnQgY29vcmRpbmF0ZXMgdG8gY2hhbmdlIGJlY2F1c2UgZGlmZmVy
ZW50CisgICAgLy8gcGFydHMgb2YgdGhlIGRvY3VtZW50IGFyZSB1bmRlciB0aGUgbW91c2UuCisg
ICAgdGVzdEV2ZW50cygwLCAiVW5zY2FsZWQiLCAiY2xpY2soMTAsIDEwKSIpOworCisgICAgZXZl
bnRTZW5kZXIuc2NhbGVQYWdlQnkoMC41LCAwLCAwKTsKKyAgICB0ZXN0RXZlbnRzKDAsICJzZXRQ
YWdlU2NhbGUoMC41KSIsICJjbGljaygyMCwgMjApIik7Cit9CisKK3ZhciBzdWNjZXNzZnVsbHlQ
YXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhjNzQyMmI1Yjc5ODYyZGEzZmFkNjlhMWQwYjRh
OTdiYmEwNGEyZTAuLmE4N2ZlZWM0ZGVkN2UyOGRmNzc5ZWE2NWVlMDdiMDMzNWIyMDIyZmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0wOS0yMyAgSm9obiBLbm90dGVuYmVsdCAg
PGprbm90dGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBUYWtlIHBhZ2VTY2FsZUZhY3RvciBp
bnRvIGFjY291bnQgZm9yIE1vdXNlUmVsYXRlZEV2ZW50cy4KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY3NTkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvZXZlbnRzL3BhZ2Utc2NhbGVk
LW1vdXNlLWNsaWNrLWlmcmFtZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay5odG1sCisKKyAgICAgICAgKiBkb20vTW91c2VSZWxhdGVkRXZl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29udGVudHNTY3JvbGxPZmZzZXQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OmZyYW1lU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TW91c2VS
ZWxhdGVkRXZlbnQ6OmNvbXB1dGVQYWdlTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TW91
c2VSZWxhdGVkRXZlbnQ6OmNvbXB1dGVSZWxhdGl2ZVBvc2l0aW9uKToKKwogMjAxMS0wOS0yMyAg
RGVlcGFrIFNoZXJ2ZWdoYXIgIDxicHd2NjRAbW90b3JvbGEuY29tPgogCiAgICAgICAgIFtHdGtd
IFRpdGxlIGF0dHJpYnV0ZSBpcyBub3QgcmVzcGVjdGVkIG9uIG9wdGlvbiBlbGVtZW50cy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCmluZGV4IDIxNmZlMjhjNDFjMjM1
Yjg5NTg0NDU4NTk5Njc3MDU1MWVjNWZjMGMuLjNiMmQ4MGViOGZhMDEyZWQ4MGJkMGU0MDdjZGQ4
ZDI1ZDE3ZDkyMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJlbGF0ZWRF
dmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcApA
QCAtNDgsOCArNDgsOSBAQCBzdGF0aWMgTGF5b3V0U2l6ZSBjb250ZW50c1Njcm9sbE9mZnNldChB
YnN0cmFjdFZpZXcqIGFic3RyYWN0VmlldykKICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGZy
YW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgIHJldHVybiBMYXlvdXRT
aXplKCk7Ci0gICAgcmV0dXJuIExheW91dFNpemUoZnJhbWVWaWV3LT5zY3JvbGxYKCkgLyBmcmFt
ZS0+cGFnZVpvb21GYWN0b3IoKSwKLSAgICAgICAgZnJhbWVWaWV3LT5zY3JvbGxZKCkgLyBmcmFt
ZS0+cGFnZVpvb21GYWN0b3IoKSk7CisgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFn
ZVpvb21GYWN0b3IoKSAqIGZyYW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIExh
eW91dFNpemUoZnJhbWVWaWV3LT5zY3JvbGxYKCkgLyBzY2FsZUZhY3RvciwKKyAgICAgICAgZnJh
bWVWaWV3LT5zY3JvbGxZKCkgLyBzY2FsZUZhY3Rvcik7CiB9CiAKIE1vdXNlUmVsYXRlZEV2ZW50
OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBj
YW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSwgUGFzc1JlZlB0cjxBYnN0cmFjdFZpZXc+IGFic3Ry
YWN0VmlldywKQEAgLTY3LDE1ICs2OCwxNSBAQCBNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VSZWxh
dGVkRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgY2FuQnViYgogICAg
ICAgICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKSB7CiAgICAgICAg
ICAgICBzY3JvbGxQb3NpdGlvbiA9IGZyYW1lVmlldy0+c2Nyb2xsUG9zaXRpb24oKTsKICAgICAg
ICAgICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uID0gZnJhbWVWaWV3LT53aW5kb3dUb0NvbnRlbnRz
KHdpbmRvd0xvY2F0aW9uKTsKLSAgICAgICAgICAgIGZsb2F0IHBhZ2Vab29tID0gZnJhbWUtPnBh
Z2Vab29tRmFjdG9yKCk7Ci0gICAgICAgICAgICBpZiAocGFnZVpvb20gIT0gMS4wZikgeworICAg
ICAgICAgICAgZmxvYXQgc2NhbGVGYWN0b3IgPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKSAqIGZy
YW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBpZiAoc2NhbGVGYWN0b3IgIT0g
MS4wZikgewogICAgICAgICAgICAgICAgIC8vIEFkanVzdCBvdXIgcGFnZVggYW5kIHBhZ2VZIHRv
IGFjY291bnQgZm9yIHRoZSBwYWdlIHpvb20uCi0gICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdl
TG9jYXRpb24uc2NhbGUoMSAvIHBhZ2Vab29tLCAxIC8gcGFnZVpvb20pOworICAgICAgICAgICAg
ICAgIGFkanVzdGVkUGFnZUxvY2F0aW9uLnNjYWxlKDEgLyBzY2FsZUZhY3RvciwgMSAvIHNjYWxl
RmFjdG9yKTsKIAogICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byB1c2Ug
ZmxvYXQgbWF0aCBhbmQgcHJvcGVyIHJvdW5kaW5nIChvcgogICAgICAgICAgICAgICAgIC8vIGJl
dHRlciB5ZXQsIHVzZSBMYXlvdXRQb2ludDo6c2NhbGUpLgotICAgICAgICAgICAgICAgIHNjcm9s
bFBvc2l0aW9uLnNldFgoc2Nyb2xsUG9zaXRpb24ueCgpIC8gcGFnZVpvb20pOwotICAgICAgICAg
ICAgICAgIHNjcm9sbFBvc2l0aW9uLnNldFkoc2Nyb2xsUG9zaXRpb24ueSgpIC8gcGFnZVpvb20p
OworICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNldFgoc2Nyb2xsUG9zaXRpb24ueCgp
IC8gc2NhbGVGYWN0b3IpOworICAgICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uLnNldFkoc2Ny
b2xsUG9zaXRpb24ueSgpIC8gc2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpAQCAtMTIyLDEwICsxMjMsMjEgQEAgc3RhdGljIGZsb2F0IHBhZ2Vab29tRmFjdG9y
KGNvbnN0IFVJRXZlbnQqIGV2ZW50KQogICAgIHJldHVybiBmcmFtZS0+cGFnZVpvb21GYWN0b3Io
KTsKIH0KIAorc3RhdGljIGZsb2F0IGZyYW1lU2NhbGVGYWN0b3IoY29uc3QgVUlFdmVudCogZXZl
bnQpCit7CisgICAgRE9NV2luZG93KiB3aW5kb3cgPSBldmVudC0+dmlldygpOworICAgIGlmICgh
d2luZG93KQorICAgICAgICByZXR1cm4gMTsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGZy
YW1lLT5mcmFtZVNjYWxlRmFjdG9yKCk7Cit9CisKIHZvaWQgTW91c2VSZWxhdGVkRXZlbnQ6OmNv
bXB1dGVQYWdlTG9jYXRpb24oKQogewotICAgIGZsb2F0IHpvb21GYWN0b3IgPSBwYWdlWm9vbUZh
Y3Rvcih0aGlzKTsKLSAgICBzZXRBYnNvbHV0ZUxvY2F0aW9uKHJvdW5kZWRMYXlvdXRQb2ludChG
bG9hdFBvaW50KHBhZ2VYKCkgKiB6b29tRmFjdG9yLCBwYWdlWSgpICogem9vbUZhY3RvcikpKTsK
KyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpICogZnJhbWVTY2Fs
ZUZhY3Rvcih0aGlzKTsKKyAgICBzZXRBYnNvbHV0ZUxvY2F0aW9uKHJvdW5kZWRMYXlvdXRQb2lu
dChGbG9hdFBvaW50KHBhZ2VYKCkgKiBzY2FsZUZhY3RvciwgcGFnZVkoKSAqIHNjYWxlRmFjdG9y
KSkpOwogfQogCiB2b2lkIE1vdXNlUmVsYXRlZEV2ZW50OjpyZWNlaXZlZFRhcmdldCgpCkBAIC0x
NTEsNyArMTYzLDcgQEAgdm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9z
aXRpb24oKQogICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByID0gdGFyZ2V0Tm9kZS0+cmVuZGVy
ZXIoKSkgewogICAgICAgICAgICAgRmxvYXRQb2ludCBsb2NhbFBvcyA9IHItPmFic29sdXRlVG9M
b2NhbChhYnNvbHV0ZUxvY2F0aW9uKCksIGZhbHNlLCB0cnVlKTsKICAgICAgICAgICAgIG1fb2Zm
c2V0TG9jYXRpb24gPSByb3VuZGVkTGF5b3V0UG9pbnQobG9jYWxQb3MpOwotICAgICAgICAgICAg
ZmxvYXQgc2NhbGVGYWN0b3IgPSAxIC8gcGFnZVpvb21GYWN0b3IodGhpcyk7CisgICAgICAgICAg
ICBmbG9hdCBzY2FsZUZhY3RvciA9IDEgLyAocGFnZVpvb21GYWN0b3IodGhpcykgKiBmcmFtZVNj
YWxlRmFjdG9yKHRoaXMpKTsKICAgICAgICAgICAgIGlmIChzY2FsZUZhY3RvciAhPSAxLjBmKQog
ICAgICAgICAgICAgICAgIG1fb2Zmc2V0TG9jYXRpb24uc2NhbGUoc2NhbGVGYWN0b3IsIHNjYWxl
RmFjdG9yKTsKICAgICAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109768</attachid>
            <date>2011-10-05 03:14:29 -0700</date>
            <delta_ts>2011-10-06 03:09:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-67592-20111005111427.patch</filename>
            <type>text/plain</type>
            <size>14182</size>
            <attacher name="John Knottenbelt">jknotten</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTY2ODIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNTAzYjM5OTkxYzdhMjc4Y2YyZmRl
ODE0MGMyZmZmMzlmZjNiYTlmLi41MTM2NDI2ODc3YzdlNTk0MmRkYTU5OGFkMWM3MjgwMjAwOTlm
MzViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTEtMDktMjMgIEpvaG4gS25vdHRlbmJlbHQg
IDxqa25vdHRlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGFrZSBwYWdlU2NhbGVGYWN0b3Ig
aW50byBhY2NvdW50IGZvciBNb3VzZVJlbGF0ZWRFdmVudHMuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NzU5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWlmcmFtZS1pbm5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3Jp
cHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKCk6CisgICAgICAgIChjbGVhckV2ZW50TG9nKToKKyAgICAgICAgKHRlc3RFdmVudHMpOgor
ICAgICAgICAoaWZyYW1lTG9hZGVkKToKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9zY3JpcHQtdGVz
dHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2suanM6IEFkZGVkLgorICAgICAgICAoKToKKyAgICAg
ICAgKGNsZWFyRXZlbnRMb2cpOgorICAgICAgICAoc2VuZEV2ZW50cyk6CisgICAgICAgICh0ZXN0
RXZlbnRzKToKKwogMjAxMS0xMC0wNSAgR2Fib3IgUmFwY3NhbnlpICA8cmdhYm9yQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgW1F0XSBVbnJldmlld2VkIGdhcmRlbmluZy4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43ZmU1MWIwYjIxZTA4NzkxMzFkODM4OTNmNDc2YmY1ZWU1MTdl
NWYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2Fs
ZWQtbW91c2UtY2xpY2stZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdHMg
dGhhdCBwYWdlIHNjYWxpbmcgZG9lcyBub3QgYWZmZWN0IG1vdXNlIGV2ZW50IHBhZ2VYIGFuZCBw
YWdlWSBjb29yZGluYXRlcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1Vuc2Nh
bGVkCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygxMCwgMTApIgorCitzZXRQYWdlU2NhbGUoMC41
KQorUEFTUyBldmVudExvZyBpcyAiY2xpY2soMjAsIDIwKSIKKworUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFlY2YwNmFiODM1NmQ3OTBhNzM2MzY0OGNiOWZkYmEy
ZTM4MDRjMDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdl
LXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjIgQEAK
KworVGhpcyB0ZXN0cyB0aGF0IHBhZ2Ugc2NhbGluZyBhbmQgQ1NTIHRyYW5zZm9ybXMgZG8gbm90
IGFmZmVjdCBtb3VzZSBldmVudCBwYWdlWCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMgZm9yIGNvbnRl
bnQgZW1iZWRkZWQgaW4gYW4gaWZyYW1lLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisK
KworVW5zY2FsZWQKK1BBU1MgZXZlbnRMb2cgaXMgImNsaWNrKDEwLCAxMCkiCisKK3NldFBhZ2VT
Y2FsZSgwLjUpCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgMjApIgorCitDU1Mgc2NhbGUo
MC41LCAyLjApCitQQVNTIGV2ZW50TG9nIGlzICJjbGljaygyMCwgNSkiCisKK3NldFBhZ2VTY2Fs
ZSgwLjUpLCBDU1Mgc2NhbGUoMC41LCAyLjApCitQQVNTIGV2ZW50TG9nIGlzICJjbGljayg0MCwg
MTApIgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2Ut
Y2xpY2staWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1t
b3VzZS1jbGljay1pZnJhbWUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNTY0ZGQxYzhhNTRkZDk1MmQxMWIy
OGQ5OWIwN2NmYWRmMTdkNmM3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmh0bWwKQEAgLTAsMCArMSwxMyBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmVkOyAi
PgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXN0eWxlLmNzcyI+Cis8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJtYXJnaW46IDBweDsiPgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQgc3JjPSJzY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM1M2Q0ZWY4NmVi
OTBhMDllNWIwOWRlYzMyMGQwYzEyZjAwMjhhMWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay5odG1sCkBAIC0wLDAgKzEs
MTMgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQg
c3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHkgc3R5bGU9Im1hcmdpbjowcHgiPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvcGFnZS1zY2Fs
ZWQtbW91c2UtY2xpY2suanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2VzL3BhZ2Utc2NhbGVkLW1vdXNlLWNs
aWNrLWlmcmFtZS1pbm5lci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvcmVzb3VyY2Vz
L3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS1pbm5lci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1
NWMwNGQ4NzBkY2ZhMmUyMTFiM2FhNjk2MzM4ZmM5NGYyZjRhYWIKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9yZXNvdXJjZXMvcGFnZS1zY2FsZWQtbW91c2UtY2xp
Y2staWZyYW1lLWlubmVyLmh0bWwKQEAgLTAsMCArMSwyIEBACis8Ym9keSBvbmxvYWQ9InBhcmVu
dC5pZnJhbWVMb2FkZWQoKSIgc3R5bGU9Im1hcmdpbjogMHB4OyI+Cis8L2JvZHk+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91
c2UtY2xpY2staWZyYW1lLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3Rz
L3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlmcmFtZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjg5ZmRmNDNm
NzJkYWE4MzkzMmI1NDRlMmM5Nzk1NzM4MzVkMjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLWlm
cmFtZS5qcwpAQCAtMCwwICsxLDgzIEBACitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGF0IHBh
Z2Ugc2NhbGluZyBhbmQgQ1NTIHRyYW5zZm9ybXMgZG8gbm90IGFmZmVjdCBtb3VzZSBldmVudCBw
YWdlWCBhbmQgcGFnZVkgY29vcmRpbmF0ZXMgZm9yICIgKworICAgICAgICAgICAgImNvbnRlbnQg
ZW1iZWRkZWQgaW4gYW4gaWZyYW1lLiIpOworCit2YXIgaHRtbCA9IGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudDsKKwordmFyIGlmcmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIp
OworaWZyYW1lLnN0eWxlLmJvcmRlciA9ICJub25lIjsKK2lmcmFtZS5zdHlsZS53aWR0aCA9ICIy
MDBweCI7CitpZnJhbWUuc3R5bGUuaGVpZ2h0ID0gIjIwMHB4IjsKK2lmcmFtZS5zdHlsZS5iYWNr
Z3JvdW5kID0gImdyZWVuIjsKKwordmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpOworZGl2LnN0eWxlLndpZHRoID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5oZWlnaHQgPSAiMTAw
cHgiOworZGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJibHVlIjsKKwordmFyIGV2ZW50TG9n
ID0gIiI7CisKK2Z1bmN0aW9uIGFwcGVuZEV2ZW50TG9nKGV2ZW50KSB7CisgICAgdmFyIG1zZyA9
IGV2ZW50LnR5cGUgKyAiKCIgKyBldmVudC5wYWdlWCArICIsICIgKyBldmVudC5wYWdlWSArICIp
IjsKKworICAgIGlmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICAgICAgZXZlbnRMb2cgKz0g
bXNnOworICAgIH0gZWxzZSB7CisgICAgICAgIGRlYnVnKG1zZyk7CisgICAgfQorfQorCitmdW5j
dGlvbiBjbGVhckV2ZW50TG9nKCkgeworICAgIGV2ZW50TG9nID0gIiI7Cit9CisKK2Z1bmN0aW9u
IHNlbmRFdmVudHMoYnV0dG9uKSB7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAg
ICAgICAgZGVidWcoIlRoaXMgdGVzdCByZXF1aXJlcyB0aGUgRXZlbnRTZW5kZXIgQVBJIChwcm92
aWRlZCBieSwgZm9yIGV4YW1wbGUsIER1bXBSZW5kZXJUcmVlIG9yIFdlYktpdFRlc3RSdW5uZXIp
LiBDbGljayBvbiB0aGUgYmx1ZSByZWN0IHdpdGggdGhlIGxlZnQgbW91c2UgYnV0dG9uIHRvIGxv
ZyB0aGUgbW91c2UgY29vcmRpbmF0ZXMuIikKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBl
dmVudFNlbmRlci5tb3VzZURvd24oYnV0dG9uKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKGJ1
dHRvbik7Cit9CisKK2Z1bmN0aW9uIHRlc3RFdmVudHMoYnV0dG9uLCBkZXNjcmlwdGlvbiwgZXhw
ZWN0ZWRTdHJpbmcpIHsKKyAgICBzZW5kRXZlbnRzKGJ1dHRvbik7CisgICAgZGVidWcoZGVzY3Jp
cHRpb24pOworICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygiZXZlbnRMb2ciLCBleHBlY3RlZFN0
cmluZyk7CisgICAgY2xlYXJFdmVudExvZygpOworICAgIGRlYnVnKCIiKTsKK30KKworZnVuY3Rp
b24gaWZyYW1lTG9hZGVkKCkgeworICAvLyBBZGQgdGhlIGRpdiB0byB0aGUgaWZyYW1lLgorICBk
aXYuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBhcHBlbmRFdmVudExvZywgZmFsc2UpOworICBp
ZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5Lmluc2VydEJlZm9yZShkaXYsIGlmcmFt
ZS5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisKKyAgaWYgKHdpbmRv
dy5ldmVudFNlbmRlcikgeworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKDEwLCAxMCk7Cisg
ICAgLy8gV2UgYXJlIGNsaWNraW5nIGluIHRoZSBzYW1lIHBvc2l0aW9uIG9uIHNjcmVlbi4gQXMg
d2Ugc2NhbGUgb3IgdHJhbnNmb3JtIHRoZSBwYWdlLAorICAgIC8vIHdlIGV4cGVjdCB0aGUgcGFn
ZVggYW5kIHBhZ2VZIGV2ZW50IGNvb3JkaW5hdGVzIHRvIGNoYW5nZSBiZWNhdXNlIGRpZmZlcmVu
dAorICAgIC8vIHBhcnRzIG9mIHRoZSBkb2N1bWVudCBhcmUgdW5kZXIgdGhlIG1vdXNlLgorCisg
ICAgdGVzdEV2ZW50cygwLCAiVW5zY2FsZWQiLCAiY2xpY2soMTAsIDEwKSIpOworCisgICAgZXZl
bnRTZW5kZXIuc2NhbGVQYWdlQnkoMC41LCAwLCAwKTsKKyAgICB0ZXN0RXZlbnRzKDAsICJzZXRQ
YWdlU2NhbGUoMC41KSIsICJjbGljaygyMCwgMjApIik7CisKKyAgICBldmVudFNlbmRlci5zY2Fs
ZVBhZ2VCeSgxLjAsIDAsIDApOworICAgIGh0bWwuc3R5bGVbIi13ZWJraXQtdHJhbnNmb3JtIl0g
PSAic2NhbGUoMC41LCAyLjApIjsKKyAgICBodG1sLnN0eWxlWyItd2Via2l0LXRyYW5zZm9ybS1v
cmlnaW4iXSA9ICIwIDAiOworICAgIHRlc3RFdmVudHMoMCwgIkNTUyBzY2FsZSgwLjUsIDIuMCki
LCAiY2xpY2soMjAsIDUpIik7CisKKyAgICBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgwLjUsIDAs
IDApOworICAgIHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgwLjUpLCBDU1Mgc2NhbGUoMC41
LCAyLjApIiwgImNsaWNrKDQwLCAxMCkiKTsKKyAgfQorCisgIGZpbmlzaEpTVGVzdCgpOworfQor
CisvLyBBZGQgdGhlIGlmcmFtZSB0byB0aGUgZG9jdW1lbnQuCitpZnJhbWUuc3JjID0gInJlc291
cmNlcy9wYWdlLXNjYWxlZC1tb3VzZS1jbGljay1pZnJhbWUtaW5uZXIuaHRtbCI7Citkb2N1bWVu
dC5ib2R5Lmluc2VydEJlZm9yZShpZnJhbWUsIGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCk7CisK
K3dpbmRvdy5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKK3dpbmRvdy5zdWNjZXNzZnVsbHlQYXJzZWQg
PSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2NyaXB0LXRlc3Rz
L3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvc2Ny
aXB0LXRlc3RzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIyZDc3NGQ4
ZWNhMjY4YjcwMDczM2VlYjJjNzE4NTk5YzUyZTFjMTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2V2ZW50cy9zY3JpcHQtdGVzdHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2su
anMKQEAgLTAsMCArMSw1NyBAQAorZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBwYWdlIHNj
YWxpbmcgZG9lcyBub3QgYWZmZWN0IG1vdXNlIGV2ZW50IHBhZ2VYIGFuZCBwYWdlWSBjb29yZGlu
YXRlcy4iKTsKKwordmFyIGh0bWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7CisKK3ZhciBk
aXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKK2Rpdi5zdHlsZS53aWR0aCA9ICIx
MDBweCI7CitkaXYuc3R5bGUuaGVpZ2h0ID0gIjEwMHB4IjsKK2Rpdi5zdHlsZS5iYWNrZ3JvdW5k
Q29sb3IgPSAiYmx1ZSI7CisKK3ZhciBldmVudExvZyA9ICIiOworCitmdW5jdGlvbiBhcHBlbmRF
dmVudExvZygpIHsKKyAgICB2YXIgbXNnID0gZXZlbnQudHlwZSArICIoIiArIGV2ZW50LnBhZ2VY
ICsgIiwgIiArIGV2ZW50LnBhZ2VZICsgIikiOworCisgICAgaWYgKHdpbmRvdy5ldmVudFNlbmRl
cikgeworICAgICAgICBldmVudExvZyArPSBtc2c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZGVi
dWcobXNnKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNsZWFyRXZlbnRMb2coKSB7CisgICAgZXZl
bnRMb2cgPSAiIjsKK30KKworZGl2LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgYXBwZW5kRXZl
bnRMb2csIGZhbHNlKTsKK2RvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKGRpdiwgZG9jdW1lbnQu
Ym9keS5maXJzdENoaWxkKTsKKworZnVuY3Rpb24gc2VuZEV2ZW50cyhidXR0b24pIHsKKyAgICBp
ZiAoIXdpbmRvdy5ldmVudFNlbmRlcikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IHJlcXVp
cmVzIER1bXBSZW5kZXJUcmVlLiAgQ2xpY2sgb24gdGhlIGJsdWUgcmVjdCB3aXRoIHRoZSBsZWZ0
IG1vdXNlIGJ1dHRvbiB0byBsb2cgdGhlIG1vdXNlIGNvb3JkaW5hdGVzLiIpCisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgZXZlbnRTZW5kZXIubW91c2VEb3duKGJ1dHRvbik7CisgICAgZXZl
bnRTZW5kZXIubW91c2VVcChidXR0b24pOworfQorCitmdW5jdGlvbiB0ZXN0RXZlbnRzKGJ1dHRv
biwgZGVzY3JpcHRpb24sIGV4cGVjdGVkU3RyaW5nKSB7CisgICAgc2VuZEV2ZW50cyhidXR0b24p
OworICAgIGRlYnVnKGRlc2NyaXB0aW9uKTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoImV2
ZW50TG9nIiwgZXhwZWN0ZWRTdHJpbmcpOworICAgIGRlYnVnKCIiKTsKKyAgICBjbGVhckV2ZW50
TG9nKCk7Cit9CisKK2lmICh3aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbygxMCwgMTApOworICAgIC8vIFdlIGFyZSBjbGlja2luZyBpbiB0aGUgc2FtZSBw
b3NpdGlvbiBvbiBzY3JlZW4uIEFzIHdlIHNjYWxlIG9yIHRyYW5zZm9ybSB0aGUgcGFnZSwKKyAg
ICAvLyB3ZSBleHBlY3QgdGhlIHBhZ2VYIGFuZCBwYWdlWSBldmVudCBjb29yZGluYXRlcyB0byBj
aGFuZ2UgYmVjYXVzZSBkaWZmZXJlbnQKKyAgICAvLyBwYXJ0cyBvZiB0aGUgZG9jdW1lbnQgYXJl
IHVuZGVyIHRoZSBtb3VzZS4KKyAgICB0ZXN0RXZlbnRzKDAsICJVbnNjYWxlZCIsICJjbGljaygx
MCwgMTApIik7CisKKyAgICBldmVudFNlbmRlci5zY2FsZVBhZ2VCeSgwLjUsIDAsIDApOworICAg
IHRlc3RFdmVudHMoMCwgInNldFBhZ2VTY2FsZSgwLjUpIiwgImNsaWNrKDIwLCAyMCkiKTsKK30K
KwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDM0NjljZDMz
MDNkMjliNzNiZmVmMmMyNmQ4Mjc1NGQyNTc2MDg4NS4uYTcwZjI5NGNkMmIwNGE1YTBkYWQ3YWQw
OWZhY2NiZGUzNThkYmZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTA5LTIz
ICBKb2huIEtub3R0ZW5iZWx0ICA8amtub3R0ZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFRh
a2UgcGFnZVNjYWxlRmFjdG9yIGludG8gYWNjb3VudCBmb3IgTW91c2VSZWxhdGVkRXZlbnRzLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njc1OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogZmFz
dC9ldmVudHMvcGFnZS1zY2FsZWQtbW91c2UtY2xpY2staWZyYW1lLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZXZlbnRzL3BhZ2Utc2NhbGVkLW1vdXNlLWNsaWNrLmh0bWwKKworICAgICAgICAq
IGRvbS9Nb3VzZVJlbGF0ZWRFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50c1Nj
cm9sbE9mZnNldCk6CisgICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6TW91c2VS
ZWxhdGVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6ZnJhbWVTY2FsZUZhY3Rvcik6CisgICAg
ICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVJlbGF0aXZlUG9zaXRp
b24pOgorCiAyMDExLTEwLTA0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgTm9kZTo6d2lsbEJsdXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Nb3VzZVJl
bGF0ZWRFdmVudC5jcHAKaW5kZXggMjE2ZmUyOGM0MWMyMzViODk1ODQ0NTg1OTk2NzcwNTUxZWM1
ZmMwYy4uY2NhZWM3M2I4YmE0MzVlYjc2YjNlMDAwMGU2YTUwMjEyZGFkMjhhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL01vdXNlUmVsYXRlZEV2ZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTW91c2VSZWxhdGVkRXZlbnQuY3BwCkBAIC00OCw4ICs0OCw4IEBAIHN0YXRp
YyBMYXlvdXRTaXplIGNvbnRlbnRzU2Nyb2xsT2Zmc2V0KEFic3RyYWN0VmlldyogYWJzdHJhY3RW
aWV3KQogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKTsKICAgICBpZiAo
IWZyYW1lVmlldykKICAgICAgICAgcmV0dXJuIExheW91dFNpemUoKTsKLSAgICByZXR1cm4gTGF5
b3V0U2l6ZShmcmFtZVZpZXctPnNjcm9sbFgoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpLAot
ICAgICAgICBmcmFtZVZpZXctPnNjcm9sbFkoKSAvIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpKTsK
KyAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUt
PmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gTGF5b3V0U2l6ZShmcmFtZVZpZXctPnNj
cm9sbFgoKSAvIHNjYWxlRmFjdG9yLCBmcmFtZVZpZXctPnNjcm9sbFkoKSAvIHNjYWxlRmFjdG9y
KTsKIH0KIAogTW91c2VSZWxhdGVkRXZlbnQ6Ok1vdXNlUmVsYXRlZEV2ZW50KGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBib29sIGNhbkJ1YmJsZSwgYm9vbCBjYW5jZWxhYmxlLCBQYXNz
UmVmUHRyPEFic3RyYWN0Vmlldz4gYWJzdHJhY3RWaWV3LApAQCAtNjcsMTUgKzY3LDE1IEBAIE1v
dXNlUmVsYXRlZEV2ZW50OjpNb3VzZVJlbGF0ZWRFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2
ZW50VHlwZSwgYm9vbCBjYW5CdWJiCiAgICAgICAgIGlmIChGcmFtZVZpZXcqIGZyYW1lVmlldyA9
IGZyYW1lLT52aWV3KCkpIHsKICAgICAgICAgICAgIHNjcm9sbFBvc2l0aW9uID0gZnJhbWVWaWV3
LT5zY3JvbGxQb3NpdGlvbigpOwogICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24gPSBm
cmFtZVZpZXctPndpbmRvd1RvQ29udGVudHMod2luZG93TG9jYXRpb24pOwotICAgICAgICAgICAg
ZmxvYXQgcGFnZVpvb20gPSBmcmFtZS0+cGFnZVpvb21GYWN0b3IoKTsKLSAgICAgICAgICAgIGlm
IChwYWdlWm9vbSAhPSAxLjBmKSB7CisgICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IGZy
YW1lLT5wYWdlWm9vbUZhY3RvcigpICogZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIGlmIChzY2FsZUZhY3RvciAhPSAxLjBmKSB7CiAgICAgICAgICAgICAgICAgLy8gQWRq
dXN0IG91ciBwYWdlWCBhbmQgcGFnZVkgdG8gYWNjb3VudCBmb3IgdGhlIHBhZ2Ugem9vbS4KLSAg
ICAgICAgICAgICAgICBhZGp1c3RlZFBhZ2VMb2NhdGlvbi5zY2FsZSgxIC8gcGFnZVpvb20sIDEg
LyBwYWdlWm9vbSk7CisgICAgICAgICAgICAgICAgYWRqdXN0ZWRQYWdlTG9jYXRpb24uc2NhbGUo
MSAvIHNjYWxlRmFjdG9yLCAxIC8gc2NhbGVGYWN0b3IpOwogCiAgICAgICAgICAgICAgICAgLy8g
RklYTUU6IENoYW5nZSB0aGlzIHRvIHVzZSBmbG9hdCBtYXRoIGFuZCBwcm9wZXIgcm91bmRpbmcg
KG9yCiAgICAgICAgICAgICAgICAgLy8gYmV0dGVyIHlldCwgdXNlIExheW91dFBvaW50OjpzY2Fs
ZSkuCi0gICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WChzY3JvbGxQb3NpdGlvbi54
KCkgLyBwYWdlWm9vbSk7Ci0gICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRpb24uc2V0WShzY3Jv
bGxQb3NpdGlvbi55KCkgLyBwYWdlWm9vbSk7CisgICAgICAgICAgICAgICAgc2Nyb2xsUG9zaXRp
b24uc2V0WChzY3JvbGxQb3NpdGlvbi54KCkgLyBzY2FsZUZhY3Rvcik7CisgICAgICAgICAgICAg
ICAgc2Nyb2xsUG9zaXRpb24uc2V0WShzY3JvbGxQb3NpdGlvbi55KCkgLyBzY2FsZUZhY3Rvcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xMjIsMTAgKzEyMiwyMSBAQCBz
dGF0aWMgZmxvYXQgcGFnZVpvb21GYWN0b3IoY29uc3QgVUlFdmVudCogZXZlbnQpCiAgICAgcmV0
dXJuIGZyYW1lLT5wYWdlWm9vbUZhY3RvcigpOwogfQogCitzdGF0aWMgZmxvYXQgZnJhbWVTY2Fs
ZUZhY3Rvcihjb25zdCBVSUV2ZW50KiBldmVudCkKK3sKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9
IGV2ZW50LT52aWV3KCk7CisgICAgaWYgKCF3aW5kb3cpCisgICAgICAgIHJldHVybiAxOworICAg
IEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAg
ICByZXR1cm4gMTsKKyAgICByZXR1cm4gZnJhbWUtPmZyYW1lU2NhbGVGYWN0b3IoKTsKK30KKwog
dm9pZCBNb3VzZVJlbGF0ZWRFdmVudDo6Y29tcHV0ZVBhZ2VMb2NhdGlvbigpCiB7Ci0gICAgZmxv
YXQgem9vbUZhY3RvciA9IHBhZ2Vab29tRmFjdG9yKHRoaXMpOwotICAgIHNldEFic29sdXRlTG9j
YXRpb24ocm91bmRlZExheW91dFBvaW50KEZsb2F0UG9pbnQocGFnZVgoKSAqIHpvb21GYWN0b3Is
IHBhZ2VZKCkgKiB6b29tRmFjdG9yKSkpOworICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gcGFnZVpv
b21GYWN0b3IodGhpcykgKiBmcmFtZVNjYWxlRmFjdG9yKHRoaXMpOworICAgIHNldEFic29sdXRl
TG9jYXRpb24ocm91bmRlZExheW91dFBvaW50KEZsb2F0UG9pbnQocGFnZVgoKSAqIHNjYWxlRmFj
dG9yLCBwYWdlWSgpICogc2NhbGVGYWN0b3IpKSk7CiB9CiAKIHZvaWQgTW91c2VSZWxhdGVkRXZl
bnQ6OnJlY2VpdmVkVGFyZ2V0KCkKQEAgLTE1MSw3ICsxNjIsNyBAQCB2b2lkIE1vdXNlUmVsYXRl
ZEV2ZW50Ojpjb21wdXRlUmVsYXRpdmVQb3NpdGlvbigpCiAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHIgPSB0YXJnZXROb2RlLT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9zID0gci0+YWJzb2x1dGVUb0xvY2FsKGFic29sdXRlTG9jYXRpb24oKSwgZmFsc2Us
IHRydWUpOwogICAgICAgICAgICAgbV9vZmZzZXRMb2NhdGlvbiA9IHJvdW5kZWRMYXlvdXRQb2lu
dChsb2NhbFBvcyk7Ci0gICAgICAgICAgICBmbG9hdCBzY2FsZUZhY3RvciA9IDEgLyBwYWdlWm9v
bUZhY3Rvcih0aGlzKTsKKyAgICAgICAgICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gMSAvIChwYWdl
Wm9vbUZhY3Rvcih0aGlzKSAqIGZyYW1lU2NhbGVGYWN0b3IodGhpcykpOwogICAgICAgICAgICAg
aWYgKHNjYWxlRmFjdG9yICE9IDEuMGYpCiAgICAgICAgICAgICAgICAgbV9vZmZzZXRMb2NhdGlv
bi5zY2FsZShzY2FsZUZhY3Rvciwgc2NhbGVGYWN0b3IpOwogICAgICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>