<?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>95992</bug_id>
          
          <creation_ts>2012-09-06 09:48:44 -0700</creation_ts>
          <short_desc>[Qt] Implement pixel snapshot generation in WTR</short_desc>
          <delta_ts>2012-11-21 11:31:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>98654</dependson>
    
    <dependson>99354</dependson>
          <blocked>94800</blocked>
    
    <blocked>99463</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Balazs Kelemen">kbalazs</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>hausmann</cc>
    
    <cc>jturcotte</cc>
    
    <cc>loki</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>713378</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-06 09:48:44 -0700</bug_when>
    <thetext>The goal is to make pixel tests test the code path that we use for the real rendering (i.e. in MiniBrowser or snowshoe). This is a side track from bug 90394. Currently the GL rendering has some problem and we cannot switch to it yet. Also QRawWebView lucks a few features (popup menu, editing support, etc.) so switching to it would reduce our coverage. Given these I would first implement the snapshot generation upon QQuickWebView in the software rendering path, as an intermediate step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713386</commentid>
    <comment_count>1</comment_count>
      <attachid>162529</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-06 09:55:50 -0700</bug_when>
    <thetext>Created attachment 162529
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713410</commentid>
    <comment_count>2</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-06 10:15:22 -0700</bug_when>
    <thetext>What would be the best way to focus efforts for those tests? It would be nice to have only one way of doing this and avoid having 3 flaky test runners to maintain instead of a solid one.

If you think that we can get GL rendered pixel tests with QQuickWebView then I think that we should go that way straight and skip the software rendering one.
If you think we can&apos;t then I think we should focus testing efforts on QRawWebView, fixing the flakiness and enabling features that we want coverage on.

If you would have to chose one way to do it, which one would it be?
After all, layout tests are mostly there to test cross platform WebCore and WebKit2 code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713421</commentid>
    <comment_count>3</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-06 10:21:42 -0700</bug_when>
    <thetext>We cannot get GL rendered pixels currently because there is some bug in textmap. But if we fix this we could do it with qquickwebview. In fact I also made a patch for this but it has the same issue that the one based on QRawWebView. So at the end I am not sure we should switch to QRawWebView at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713430</commentid>
    <comment_count>4</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-06 10:26:22 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; We cannot get GL rendered pixels currently because there is some bug in textmap. But if we fix this we could do it with qquickwebview. In fact I also made a patch for this but it has the same issue that the one based on QRawWebView. So at the end I am not sure we should switch to QRawWebView at all.

To make it clear technically: binding a custom qglcontext to our QQuickView and grabbing pixels does work. I guess the reason why it does not mess up with the context it get from the scenegraph is that we don&apos;t actually show our window.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714592</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-07 09:21:38 -0700</bug_when>
    <thetext>As discussed on IRC we can probably want to go through the scenegraph via grabWindow() so we can actually cover the code paths we use normally. For this I made up a patch that basically works locally but I&apos;m not sure the change I had to made in Qt is acceptable. I&apos;m going to find it out next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716056</commentid>
    <comment_count>6</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-10 07:17:30 -0700</bug_when>
    <thetext>Draft patches for screnegraph rendering:
qt -&gt; https://gist.github.com/3691144
webkit (upon the above) -&gt; https://gist.github.com/3691147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716080</commentid>
    <comment_count>7</comment_count>
      <attachid>163132</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-10 08:02:50 -0700</bug_when>
    <thetext>Created attachment 163132
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716082</commentid>
    <comment_count>8</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-10 08:03:54 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Created an attachment (id=163132) [details]
&gt; Patch

I added a timer for this because otherwise we won&apos;t release memory if we become inactive (ui proc stop sending rendernextframe).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716094</commentid>
    <comment_count>9</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-10 08:22:18 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Created an attachment (id=163132) [details] [details]
&gt; &gt; Patch
&gt; 
&gt; I added a timer for this because otherwise we won&apos;t release memory if we become inactive (ui proc stop sending rendernextframe).

Err, sorry, wrong bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722658</commentid>
    <comment_count>10</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-18 04:32:45 -0700</bug_when>
    <thetext>I would like to get some input about how to go forward with this.
So, here is the choices:
1. rendering path
   a/ software
   b/ gl

This is not really a question, since it&apos;s clear we want to test the gl path but as long as it is not stable enough for running a whole test session we can use software rendering as a temporary solution.

2. method
  a/ QRawWebView - like the patch in bug 90394
  b/ QQuickWebView without scenegraph, i.e. calling LayerTreeRenderer::paintToCurrentGLContext manually from viewNeedsDisplay, this has been implemented in the patch here
  c/ QQUickWebView with scenegraph, via QQuickWindow::grabWindow

I don&apos;t really see what is the advance of QRWV, we can use the same method to grab pixels with QQWV as well, plus the latter has some features already implemented that is needed for some tests (popups, editing support, etc.). Making it go through the scenegraph is a bit tricky, and need some changes in Qt. I&apos;m not sure we can push these changes to Qt. Basically the change is to allow grabbing pixels even if there no showed window at all.

My opinion is that the best for now is to go with 1.a + 2.b. Later we can investigate in moving to gl and using grabWindow.

Noam? Simon? Others?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722786</commentid>
    <comment_count>11</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-09-18 07:59:41 -0700</bug_when>
    <thetext>(In reply to comment #10)

My opinion on this is that 2.b isn&apos;t worth it, since it relies on an half-using QtQuick and this _will_ present problems. To me it feels like a hack, can break sooner or later and may prevent us from re-architecting the internals.
So I would ultimately go with 2.c if we could get grabWindow work with a hidden window, or 2.a if not possible.
I&apos;m not worried about pushing changes to Qt, if it makes sense we have the people we need to make it happen.

As for using software rendering meanwhile I personally don&apos;t see an advantage to it, it will produce slightly different results that we&apos;ll have to rebase later, will leave dead code that we won&apos;t dare removing, and making the GL path work shouldn&apos;t be that complicated if we put the efforts to it. This is just an opinion though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722792</commentid>
    <comment_count>12</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2012-09-18 08:06:04 -0700</bug_when>
    <thetext>2c is the best if it&apos;s achievable without tampering with QScenegraph in a disruptive way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726561</commentid>
    <comment_count>13</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-24 05:04:00 -0700</bug_when>
    <thetext>Here is the change for Qt: https://codereview.qt-project.org/#change,35490</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726603</commentid>
    <comment_count>14</comment_count>
      <attachid>165367</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-24 06:31:13 -0700</bug_when>
    <thetext>Created attachment 165367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726607</commentid>
    <comment_count>15</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-24 06:35:28 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Created an attachment (id=165367) [details]
&gt; Patch

... and here is the WebKit part. Fortunately this seems to be relatively stable (no every test fail from a point effect).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727034</commentid>
    <comment_count>16</comment_count>
      <attachid>165367</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-09-24 15:01:16 -0700</bug_when>
    <thetext>Comment on attachment 165367
Patch

Attachment 165367 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13987807</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727336</commentid>
    <comment_count>17</comment_count>
      <attachid>165534</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-09-24 23:42:27 -0700</bug_when>
    <thetext>Created attachment 165534
Patch

buildfix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736623</commentid>
    <comment_count>18</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-08 04:12:24 -0700</bug_when>
    <thetext>The new Qt5 snapshot contains the change which is the dependency of this patch, so we can go forward with this. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736716</commentid>
    <comment_count>19</comment_count>
      <attachid>165534</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-08 09:15:28 -0700</bug_when>
    <thetext>Comment on attachment 165534
Patch

I&apos;m going to split the two parts of this patch as Jocelyn suggested. First part: bug 98654</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736752</commentid>
    <comment_count>20</comment_count>
      <attachid>167553</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-08 10:00:46 -0700</bug_when>
    <thetext>Created attachment 167553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740729</commentid>
    <comment_count>21</comment_count>
      <attachid>168378</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-12 01:47:22 -0700</bug_when>
    <thetext>Created attachment 168378
reupload for ews ouput</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740876</commentid>
    <comment_count>22</comment_count>
      <attachid>168378</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-12 06:13:49 -0700</bug_when>
    <thetext>Comment on attachment 168378
reupload for ews ouput

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

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:36
&gt; +#include &lt;QtGui/qopenglframebufferobject.h&gt;

QOpenGLFramebufferObject or QtGui/QOpenGLFramebufferObject should work

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:53
&gt; +        connect(this, SIGNAL(beforeRendering()), SLOT(onBeforeRendering()), Qt::DirectConnection);

I believe there is no need to specify that it&apos;s a direct connection if both objects are on the same thread.

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:59
&gt; +        return m_fbo ? m_fbo-&gt;toImage() : QImage();

It should never be null here no?

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:74
&gt; +        setSurfaceType(OpenGLSurface);
&gt; +        create();

My feeling would be that it&apos;s better to create as late as possible, at least after setGeometry. Is there a reason to do so that early?

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:100
&gt; +        m_fbo-&gt;release();

Are you sure you need to release if you&apos;re binding right after?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741798</commentid>
    <comment_count>23</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-15 00:12:24 -0700</bug_when>
    <thetext>It has been turned out that we don&apos;t really need to use an fbo, in contrast with the comment at setRenderWithoutShowing. I asked Gunnar about it and he agreed with that, mentioned that the comment is outdated. This means the next patch will be quite trivial.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741799</commentid>
    <comment_count>24</comment_count>
      <attachid>168635</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-15 00:13:14 -0700</bug_when>
    <thetext>Created attachment 168635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741809</commentid>
    <comment_count>25</comment_count>
      <attachid>168635</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-10-15 00:30:51 -0700</bug_when>
    <thetext>Comment on attachment 168635
Patch

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

Looks great :) But I&apos;ll let Jocelyn do the final call.

&gt; Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp:56
&gt; +    QImage snapshotImage()
&gt; +    {
&gt; +        return grabWindow();
&gt; +    }

Any particular reason for this method? Why not let the caller use grabWindow() directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741922</commentid>
    <comment_count>26</comment_count>
      <attachid>168671</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-15 03:57:37 -0700</bug_when>
    <thetext>Created attachment 168671
use grabWindow directly

Note that it won&apos;t build on ews&apos;s because of the depenedency.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741925</commentid>
    <comment_count>27</comment_count>
      <attachid>168671</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-15 04:11:05 -0700</bug_when>
    <thetext>Comment on attachment 168671
use grabWindow directly

Cool, that looks neat now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741926</commentid>
    <comment_count>28</comment_count>
      <attachid>168671</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-10-15 04:11:11 -0700</bug_when>
    <thetext>Comment on attachment 168671
use grabWindow directly

Attachment 168671 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14295599</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742141</commentid>
    <comment_count>29</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-15 10:17:01 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131307</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742331</commentid>
    <comment_count>30</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 12:57:17 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Landed in http://trac.webkit.org/changeset/131307

Rolled out, because it broke layout testing again - http://trac.webkit.org/changeset/131339

I stopped the test after 3 hours 8 minutes (after an editing 
test). Normally all tests take only 25 minutes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742349</commentid>
    <comment_count>31</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-15 13:17:39 -0700</bug_when>
    <thetext>See http://build.webkit.sed.hu/builders/x86-64%20Linux%20Qt%20Release%20WebKit2%20%28Amazon%20EC2%29/builds/9742 for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742930</commentid>
    <comment_count>32</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-16 01:13:58 -0700</bug_when>
    <thetext>I guess that&apos;s happening because this way of pixel generating does not work in xvfb which is revealed by ref tests. I think we need some environment variable quirk to be able to enable it only when running in a suitable environment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742935</commentid>
    <comment_count>33</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-16 01:18:45 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; I guess that&apos;s happening because this way of pixel generating does not work in xvfb which is revealed by ref tests. I think we need some environment variable quirk to be able to enable it only when running in a suitable environment.

Not only reftest became slow, but all tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742986</commentid>
    <comment_count>34</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-16 02:16:30 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; (In reply to comment #32)
&gt; &gt; I guess that&apos;s happening because this way of pixel generating does not work in xvfb which is revealed by ref tests. I think we need some environment variable quirk to be able to enable it only when running in a suitable environment.
&gt; 
&gt; Not only reftest became slow, but all tests.

Strange. I just run the tests at the revision of the second patch, it took 30 minutes although I had a lot of failures and timeouts. Btw, locally if I run the tests in xvfb than pixel and ref tests are crashing (ref tests without -p as well of course).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745266</commentid>
    <comment_count>35</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-10-18 08:16:04 -0700</bug_when>
    <thetext>Landed again in http://trac.webkit.org/changeset/131726</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773137</commentid>
    <comment_count>36</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2012-11-21 11:31:10 -0800</bug_when>
    <thetext>*** Bug 90394 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162529</attachid>
            <date>2012-09-06 09:55:50 -0700</date>
            <delta_ts>2012-09-24 06:31:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20120906185528.patch</filename>
            <type>text/plain</type>
            <size>21383</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTMyODAzMDYwNWQwN2Qz
MTM4MTI0MjBkZGJlOTkxMzU2YmE4YmRiYS4uNDg4NjhkYTEwOWVjNzUxMjM4ZTEyMzYzZDVjNjNh
OGU2MzA3OWE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTA5LTA2ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltbGVtZW50
IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBnZXQgYSBzbmFwc2hvdCBmcm9t
IGEgUVF1aWNrV2ViUGFnZS4KKworICAgICAgICAqIFNoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQu
Y3BwOgorICAgICAgICAoV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UpOiBBZGRlZCBzbyB3ZSBjYW4g
cGFzcyBhIFFJbWFnZSBpbiBXVFIKKyAgICAgICAgdG8gYSBwbGF0Zm9ybSBpbmRlcGVuZGVudCBj
YWxsZXIuCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHA6CisgICAgICAgIChRUXVpY2tXZWJQ
YWdlOjp1cGRhdGVQYWludE5vZGUpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6bGF5ZXJUcmVl
UmVuZGVyZXIpOgorICAgICAgICAoUVF1aWNrV2ViUGFnZTo6cGFpbnRTbmFwc2hvdCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaDoKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3LmNwcDoKKyAgICAg
ICAgKFFRdWlja1dlYlZpZXdQcml2YXRlOjpzZXROZWVkc0Rpc3BsYXkpOgorCiAyMDEyLTA5LTAz
ICBLYW5naWwgSGFuICA8a2FuZ2lsLmhhbkBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbV0syXVtX
VFJdIEltcGxlbWVudCBXZWJLaXRFbmFibGVDYXJldEJyb3dzaW5nIGF0dHJpYnV0ZSBpbiB0ZXN0
UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
cXQvV0tJbWFnZVF0LmNwcAppbmRleCBkMDk3NWY2NTMwZTA3YTE1NDgwY2VlYWM3MGUwMGM0YjU3
MDNlOGEzLi42MDM4OGY0ZmEyN2UxZmMzMjNhYjI1YjY3ZTU4ODFhMTVjMjQ1NjkxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmNwcApAQCAtMjUsMTAgKzI1
LDMwIEBACiAjaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCiAjaW5jbHVkZSAiV0tTaGFyZWRB
UElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKKyNpbmNsdWRlIDxRUGFpbnRlcj4KKyNp
bmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzQ29udGV4dC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvSW50
U2l6ZS5oPgogCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiAKIFFJbWFnZSBXS0ltYWdlQ3JlYXRlUUltYWdlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7
CiAgICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLT5jcmVhdGVRSW1hZ2UoKS5j
b3B5KCk7CiB9CisKK1dLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UoY29uc3QgUUlt
YWdlJiBpbWFnZSkKK3sKKyAgICBpZiAoaW1hZ2UuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgQVNTRVJUKGltYWdlLmJ5dGVzUGVyTGluZSgpID09IGltYWdlLndpZHRoKCkgKiA0
KTsKKworICAgIFJlZlB0cjxXZWJJbWFnZT4gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGlt
YWdlLnNpemUoKSwgc3RhdGljX2Nhc3Q8SW1hZ2VPcHRpb25zPigwKSk7CisgICAgaWYgKCF3ZWJJ
bWFnZS0+Yml0bWFwKCkpCisgICAgICAgIHJldHVybiAwOworICAgIE93blB0cjxHcmFwaGljc0Nv
bnRleHQ+IGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS0+Y3JlYXRlR3JhcGhp
Y3NDb250ZXh0KCk7CisgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBncmFwaGljc0NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpOworICAgIHBhaW50ZXItPmRyYXdJbWFnZShRUG9pbnQoMCwgMCksIGlt
YWdlKTsKKyAgICByZXR1cm4gdG9BUEkod2ViSW1hZ2UucmVsZWFzZSgpLmxlYWtSZWYoKSk7Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJbWFnZVF0LmgKaW5kZXggMWU1MDcz
YTA4Y2IzNDA1Mjk4YmMzNDYxYjY0YWZhZTdlZTk1N2JkMy4uNWFiZWY0ODE4MzA4N2FjNTU2OTE1
ZmNiMjY2ODE0NzY2ODczNWM1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL3F0L1dLSW1hZ2VRdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9X
S0ltYWdlUXQuaApAQCAtMjcsNSArMjcsNiBAQAogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZS5o
PgogCiBXS19FWFBPUlQgUUltYWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFn
ZSk7CitXS19FWFBPUlQgV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBR
SW1hZ2UmIGltYWdlKTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9xdC9xcXVpY2t3ZWJwYWdlLmNwcAppbmRleCBkYjUxYjg1ZGRhNTkyZTIzYjMwZjZiOTkw
ZWQ5MDg2MTRlMjJhZjVkLi5kOTk4ZjUwODA1MjIwYzg4MWMxNTAzNmI1ZGZlYWJjNjIxMGNjMDQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFn
ZS5jcHAKQEAgLTY1LDI0ICs2NSwxMiBAQCB2b2lkIFFRdWlja1dlYlBhZ2VQcml2YXRlOjppbml0
aWFsaXplKFdlYktpdDo6V2ViUGFnZVByb3h5KiB3ZWJQYWdlUHJveHkpCiAgICAgZXZlbnRIYW5k
bGVyLnJlc2V0KG5ldyBRdFdlYlBhZ2VFdmVudEhhbmRsZXIodG9BUEkod2ViUGFnZVByb3h5KSwg
cSwgdmlld3BvcnRJdGVtKSk7CiB9CiAKLXZvaWQgUVF1aWNrV2ViUGFnZVByaXZhdGU6OnBhaW50
KFFQYWludGVyKiBwYWludGVyKQotewotICAgIGlmICghd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJl
YSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMYXllclRyZWVDb29yZGluYXRvclByb3h5KiBs
YXllclRyZWVDb29yZGluYXRvclByb3h5ID0gd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpLT5s
YXllclRyZWVDb29yZGluYXRvclByb3h5KCk7Ci0gICAgaWYgKGxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCkpCi0gICAgICAgIGxheWVyVHJlZUNvb3JkaW5hdG9y
UHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCktPnBhaW50VG9HcmFwaGljc0NvbnRleHQocGFpbnRl
cik7Ci19Ci0KIFFTR05vZGUqIFFRdWlja1dlYlBhZ2U6OnVwZGF0ZVBhaW50Tm9kZShRU0dOb2Rl
KiBvbGROb2RlLCBVcGRhdGVQYWludE5vZGVEYXRhKikKIHsKLSAgICBpZiAoIWQtPndlYlBhZ2VQ
cm94eS0+ZHJhd2luZ0FyZWEoKSkKKyAgICBMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIgPSBs
YXllclRyZWVSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBv
bGROb2RlOwogCi0gICAgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSogbGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eSA9IGQtPndlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eSgpOwotICAgIExheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHktPmxheWVyVHJlZVJlbmRlcmVyKCk7Ci0KICAgICBRdFdlYlBh
Z2VTR05vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxRdFdlYlBhZ2VTR05vZGUqPihvbGROb2RlKTsK
ICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5vZGUgPSBuZXcgUXRXZWJQYWdlU0dOb2RlKCk7CkBA
IC05Nyw2ICs4NSwyNyBAQCBRU0dOb2RlKiBRUXVpY2tXZWJQYWdlOjp1cGRhdGVQYWludE5vZGUo
UVNHTm9kZSogb2xkTm9kZSwgVXBkYXRlUGFpbnROb2RlRGF0YSopCiAgICAgcmV0dXJuIG5vZGU7
CiB9CiAKK0xheWVyVHJlZVJlbmRlcmVyKiBRUXVpY2tXZWJQYWdlOjpsYXllclRyZWVSZW5kZXJl
cigpIGNvbnN0Cit7CisgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEgPSBkLT53ZWJQ
YWdlUHJveHktPmRyYXdpbmdBcmVhKCk7CisgICAgaWYgKCFkcmF3aW5nQXJlYSkKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSogbGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eSA9IGQtPndlYlBhZ2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eSgpOworICAgIGlmICghbGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSkKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHktPmxh
eWVyVHJlZVJlbmRlcmVyKCk7Cit9CisKK3ZvaWQgUVF1aWNrV2ViUGFnZTo6cGFpbnRTbmFwc2hv
dChRUGFpbnRlciogcGFpbnRlcikKK3sKKyAgICBMYXllclRyZWVSZW5kZXJlciogcmVuZGVyZXIg
PSBsYXllclRyZWVSZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVy
bjsKKworICAgIHJlbmRlcmVyLT5zZXRBY3RpdmUodHJ1ZSk7CisgICAgcmVuZGVyZXItPnBhaW50
VG9HcmFwaGljc0NvbnRleHQocGFpbnRlcik7Cit9CisKIFF0V2ViUGFnZUV2ZW50SGFuZGxlciog
UVF1aWNrV2ViUGFnZTo6ZXZlbnRIYW5kbGVyKCkgY29uc3QKIHsKICAgICByZXR1cm4gZC0+ZXZl
bnRIYW5kbGVyLmRhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXF1aWNrd2VicGFnZV9wLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3FxdWlja3dlYnBhZ2VfcC5oCmluZGV4IDNhMTEyZDYyYjNlOWRjYzFkOTUzOTAzOWY1YzIxNWYx
Y2I3Y2Y5Y2QuLjBjN2ExZWU3MDRjOWVlYzJjOGFhZjNiMDkxNjg4MTk3ZjFmZDdkZmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZV9wLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJwYWdlX3AuaApA
QCAtMzEsNiArMzEsNyBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3OwogY2xhc3MgUVdlYlByZWZlcmVu
Y2VzOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIExheWVyVHJlZVJlbmRlcmVyOwogY2xh
c3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOwogfQogCkBAIC01MCwxMCArNTEsMTQgQEAgcHVibGlj
OgogCiAgICAgV2ViS2l0OjpRdFdlYlBhZ2VFdmVudEhhbmRsZXIqIGV2ZW50SGFuZGxlcigpIGNv
bnN0OwogCisgICAgdm9pZCBwYWludFNuYXBzaG90KFFQYWludGVyKiBwYWludGVyKTsKKwogcHJv
dGVjdGVkOgogICAgIHZpcnR1YWwgUVNHTm9kZSogdXBkYXRlUGFpbnROb2RlKFFTR05vZGUqLCBV
cGRhdGVQYWludE5vZGVEYXRhKik7CiAKIHByaXZhdGU6CisgICAgV2ViS2l0OjpMYXllclRyZWVS
ZW5kZXJlciogbGF5ZXJUcmVlUmVuZGVyZXIoKSBjb25zdDsKKwogICAgIFFRdWlja1dlYlBhZ2VQ
cml2YXRlKiBkOwogICAgIGZyaWVuZCBjbGFzcyBRUXVpY2tXZWJWaWV3OwogICAgIGZyaWVuZCBj
bGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCmluZGV4IGVkZWM4YzdmMjZlZmJjYjBhNmM4OGY5
NGVjZWYyMzBhY2Y4MzU4YjEuLjM3ZWFlNmI3MWY0YjVlMWVkNmFlYTI2YjA3YTA5MDdjNzNkYTkz
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vi
dmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3LmNwcApAQCAtNDQyLDEwICs0NDIsMTEgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6
c2V0TmVlZHNEaXNwbGF5KCkKIHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CiAgICAgaWYgKHJl
bmRlclRvT2Zmc2NyZWVuQnVmZmVyKCkpIHsKLSAgICAgICAgLy8gVE9ETzogd2UgY2FuIG1haW50
YWluIGEgcmVhbCBpbWFnZSBoZXJlIGFuZCB1c2UgaXQgZm9yIHBpeGVsIHRlc3RzLiBSaWdodCBu
b3cgdGhpcyBpcyB1c2VkIG9ubHkgZm9yIHJ1bm5pbmcgdGhlIHJlbmRlcmluZyBjb2RlLXBhdGgg
d2hpbGUgcnVubmluZyB0ZXN0cy4KLSAgICAgICAgUUltYWdlIGR1bW15SW1hZ2UoMSwgMSwgUUlt
YWdlOjpGb3JtYXRfQVJHQjMyKTsKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBydW5uaW5n
IHRoZSByZW5kZXJpbmcgY29kZS1wYXRoIHdoaWxlIHJ1bm5pbmcgdGVzdHMgdG8gbWFrZSBzdXJl
CisgICAgICAgIC8vIHdlIHN5bmNocm9uaXNlIHRoZSByZW5kZXJpbmcgY29ycmVjdGx5IHdoaWNo
IGlzIG5lY2Vzc2FyeSB0byBnZXQgdmFsaWQgcGl4ZWwgcmVzdWx0cy4KKyAgICAgICAgUUltYWdl
IGR1bW15SW1hZ2UoUVNpemUoMSwgMSksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMik7CiAgICAgICAg
IFFQYWludGVyIHBhaW50ZXIoJmR1bW15SW1hZ2UpOwotICAgICAgICBxLT5wYWdlKCktPmQtPnBh
aW50KCZwYWludGVyKTsKKyAgICAgICAgcS0+cGFnZSgpLT5wYWludFNuYXBzaG90KCZwYWludGVy
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9n
IGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU2YzRkMTQwMjJlMzQ2ZDg0MWRlOWI3ZmM3MjQ0MTRm
ODU1OTk5NDcuLmYwMDJiZWVkZjk3NmQwMzYxOGFmZGM1M2Q5ZjUyZWY4ODc2NTY5MmQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
NSBAQAorMjAxMi0wOS0wNiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgW1F0XSBJbWxlbWVudCBwaXhlbCBzbmFwc2hvdCBnZW5lcmF0aW9uIGluIFdUUgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRlIFdUUiBz
dWl0YWJsZSBmb3IgcGxhdGZvcm1zIHRoYXQgd2FudCB0byBmb3JjZSBhIHJlcGFpbnQKKyAgICAg
ICAgYXQgdGhlIGVuZCBvZiB0aGUgdGVzdCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHQu
IFBvc3Rwb25lCisgICAgICAgIGZpbmlzaGluZyB0aGUgdGVzdCBhZnRlciB3ZSBnb3QgdGhlIHBp
eGVscy4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6VGVzdEludm9jYXRpb24pOgorICAgICAgICAo
V1RSOjpUZXN0SW52b2NhdGlvbjo6aW52b2tlKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmR1bXApOiBEb24ndCBjbG9zZSBvdXRwdXQgY2hhbm5lbHMgeWV0IGV4Y2VwdAorICAgICAg
ICB3aGVuIHdlIGR1bXAgYWZ0ZXIgYW4gZXJyb3IuIEl0IHdpbGwgYmUgZG9uZSBpbiBmaW5pc2gg
YWZ0ZXIgd2UgYXJlCisgICAgICAgIGRvbmUgd2l0aCB0aGUgcGl4ZWwgcmVzdWx0LgorICAgICAg
ICAoV1RSKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZpbmlzaCk6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRs
ZSk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oOgorICAgICAg
ICAoVGVzdEludm9jYXRpb24pOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rl
c3RJbnZvY2F0aW9uQ2Fpcm8uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6Y29t
cGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaCk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2gpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpQbGF0
Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHA6CisgICAgICAgIChGb3JjZVJlcGFpbnREb25l
V2F0Y2hEb2cpOgorICAgICAgICAoV1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OmV4cGVj
dGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OkZvcmNlUmVwYWlu
dERvbmVXYXRjaERvZzo6Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKToKKyAgICAgICAgKFdUUjo6
Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjpzdGFydCk6CisgICAgICAgIChXVFI6OkZvcmNlUmVw
YWludERvbmVXYXRjaERvZzo6c3RvcCk6CisgICAgICAgIChXVFI6OkZvcmNlUmVwYWludERvbmVX
YXRjaERvZzo6dGltZXJFdmVudCk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpjb21w
YXJlUGl4ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9j
YXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1
bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4uY3BwOgorICAgICAgICAoV1RSOjpUZXN0SW52b2Nh
dGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaCk6CisKIDIwMTItMDktMDQg
IEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtucnd0XSBI
YXJkZW4gYWdhaW5zdCBlbXB0eSBzdGRvdXQvc3RkZXJyIGFmdGVyIHN0b3BwaW5nIGEgY3Jhc2hl
ZC90aW1lZCBvdXQgZHJpdmVyCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IGE1NGZmNjc4YTljNDRiYjlkZTNhMGY1YWNjMGFkOTNhOWZiNjYwYmYuLmM4ODgy
Y2FjMmRlZTNlYjg5MDZiOGE3NjQxMzFiNDQ5ZDZjYTE5NWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgVGVzdEludm9jYXRp
b246OlRlc3RJbnZvY2F0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBwYXRoT3JVUkwpCiAgICAgLCBt
X3BhdGhPclVSTChwYXRoT3JVUkwpCiAgICAgLCBtX2R1bXBQaXhlbHMoZmFsc2UpCiAgICAgLCBt
X2dvdEluaXRpYWxSZXNwb25zZShmYWxzZSkKLSAgICAsIG1fZ290RmluYWxNZXNzYWdlKGZhbHNl
KQorICAgICwgbV9maW5pc2hlZChmYWxzZSkKICAgICAsIG1fZ290UmVwYWludChmYWxzZSkKICAg
ICAsIG1fZXJyb3IoZmFsc2UpCiB7CkBAIC0xODIsOCArMTgyLDggQEAgdm9pZCBUZXN0SW52b2Nh
dGlvbjo6aW52b2tlKCkKIAogICAgIFdLUGFnZUxvYWRVUkwoVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKSwgbV91cmwuZ2V0KCkpOwogCi0gICAgVGVzdENvbnRy
b2xsZXI6OnNoYXJlZCgpLnJ1blVudGlsKG1fZ290RmluYWxNZXNzYWdlLCBUZXN0Q29udHJvbGxl
cjo6c2hhcmVkKCkudXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSA/IFRlc3RDb250cm9sbGVy
OjpMb25nVGltZW91dCA6IFRlc3RDb250cm9sbGVyOjpOb1RpbWVvdXQpOwotICAgIGlmICghbV9n
b3RGaW5hbE1lc3NhZ2UpIHsKKyAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwo
bV9maW5pc2hlZCwgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLnVzZVdhaXRUb0R1bXBXYXRjaGRv
Z1RpbWVyKCkgPyBUZXN0Q29udHJvbGxlcjo6TG9uZ1RpbWVvdXQgOiBUZXN0Q29udHJvbGxlcjo6
Tm9UaW1lb3V0KTsKKyAgICBpZiAoIW1fZmluaXNoZWQpIHsKICAgICAgICAgZXJyb3JNZXNzYWdl
ID0gIlRpbWVkIG91dCB3YWl0aW5nIGZvciBmaW5hbCBtZXNzYWdlIGZyb20gd2ViIHByb2Nlc3Nc
biI7CiAgICAgICAgIGdvdG8gZW5kOwogICAgIH0KQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIFRl
c3RJbnZvY2F0aW9uOjpkdW1wV2ViUHJvY2Vzc1VucmVzcG9uc2l2ZW5lc3MoY29uc3QgY2hhciog
dGV4dFRvU3Rkb3V0KQogICAgIGR1bXAodGV4dFRvU3Rkb3V0LCBlcnJvck1lc3NhZ2VUb1N0ZGVy
ciwgdHJ1ZSk7CiB9CiAKLXZvaWQgVGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciogdGV4
dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIsIGJvb2wgc2VlbkVycm9yKQordm9p
ZCBUZXN0SW52b2NhdGlvbjo6ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNo
YXIqIHRleHRUb1N0ZGVyciwgYm9vbCBjbG9zZU91dHB1dENoYW5uZWxzKQogewogICAgIHByaW50
ZigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluXG4iKTsKICAgICBpZiAodGV4dFRvU3Rkb3V0KQpA
QCAtMjI2LDkgKzIyNiwyMyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNoYXIq
IHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBibwogICAgICAgICBmcHV0
cyh0ZXh0VG9TdGRlcnIsIHN0ZGVycik7CiAKICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsK
LSAgICBmcHV0cygiI0VPRlxuIiwgc3RkZXJyKTsKLSAgICBpZiAoc2VlbkVycm9yKQorCisgICAg
aWYgKGNsb3NlT3V0cHV0Q2hhbm5lbHMpIHsKKyAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZGVy
cik7CiAgICAgICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOworICAgIH0KKworICAgIGZmbHVz
aChzdGRvdXQpOworICAgIGZmbHVzaChzdGRlcnIpOworfQorCit2b2lkIFRlc3RJbnZvY2F0aW9u
OjpmaW5pc2goKQoreworICAgIG1fZmluaXNoZWQgPSB0cnVlOworICAgIFRlc3RDb250cm9sbGVy
OjpzaGFyZWQoKS5ub3RpZnlEb25lKCk7CisKKyAgICBmcHV0cygiI0VPRlxuIiwgc3RkZXJyKTsK
KyAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKICAgICBmZmx1c2goc3Rkb3V0KTsKICAgICBm
Zmx1c2goc3RkZXJyKTsKIH0KQEAgLTI1Myw3ICsyNjcsNyBAQCB2b2lkIFRlc3RJbnZvY2F0aW9u
OjpkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdl
TmFtZQogICAgIGlmIChXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKG1lc3NhZ2VOYW1lLCAi
RXJyb3IiKSkgewogICAgICAgICAvLyBTZXQgYWxsIHN0YXRlcyB0byB0cnVlIHRvIHN0b3Agc3Bp
bm5pbmcgdGhlIHJ1bmxvb3AuCiAgICAgICAgIG1fZ290SW5pdGlhbFJlc3BvbnNlID0gdHJ1ZTsK
LSAgICAgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOworICAgICAgICBtX2ZpbmlzaGVkID0g
dHJ1ZTsKICAgICAgICAgbV9lcnJvciA9IHRydWU7CiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aGFyZWQoKS5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI5MCwxNCArMzA0LDEw
IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAKICAgICAgICAgLy8gRHVtcCBwaXhlbHMgKGlm
IG5lY2Vzc2FyeSkuCiAgICAgICAgIGlmIChtX2R1bXBQaXhlbHMgJiYgcGl4ZWxSZXN1bHQpCi0g
ICAgICAgICAgICBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChwaXhlbFJlc3VsdCwg
cmVwYWludFJlY3RzKTsKKyAgICAgICAgICAgIGNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRG
aW5pc2gocGl4ZWxSZXN1bHQsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGZpbmlzaCgpOwogCi0gICAgICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOwotICAgICAg
ICBmZmx1c2goc3Rkb3V0KTsKLSAgICAgICAgZmZsdXNoKHN0ZGVycik7Ci0gICAgICAgIAotICAg
ICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9IHRydWU7Ci0gICAgICAgIFRlc3RDb250cm9sbGVyOjpz
aGFyZWQoKS5ub3RpZnlEb25lKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmggYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKaW5kZXggNDk2NDFlOWVlNDNlNzg5Y2Q5
NTlmNGI0ZGRhYmU0NjhjZjk2MzgzYi4uZGJlZGQ3ODg4YmMyOGI4ZGZlY2JjYzgwNGY5NWJmNWM0
MGQ1ZDFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlv
bi5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApAQCAtNDYs
OSArNDYsMTkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIHZvaWQgZHVtcFdlYlByb2Nlc3NVbnJl
c3BvbnNpdmVuZXNzKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCk7CiBwcml2YXRlOgotICAgIHN0
YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0
VG9TdGRlcnIgPSAwLCBib29sIHNlZW5FcnJvciA9IGZhbHNlKTsKLSAgICB2b2lkIGR1bXBQaXhl
bHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJl
Y3RzKTsKKyAgICB2b2lkIGZpbmlzaCgpOworICAgIHN0YXRpYyB2b2lkIGR1bXAoY29uc3QgY2hh
ciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIgPSAwLCBib29sIGNsb3Nl
T3V0cHV0Q2hhbm5lbHMgPSBmYWxzZSk7CisgICAgdm9pZCBjb21wYXJlUGl4ZWxzV2l0aEV4cGVj
dGVkQW5kRmluaXNoKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKTsKICAgICBi
b29sIGNvbXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGNvbnN0IGNoYXJb
MzNdKTsKKworICAgIC8vIFNvbWUgcGxhdGZvcm1zIG1pZ2h0IHdhbnQgdG8gZm9yY2UgYSByZXBh
aW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVsIHJlc3VsdC4KKyAgICBzdGF0aWMgdm9pZCBmb3Jj
ZVJlcGFpbnREb25lQ2FsbGJhY2soV0tFcnJvclJlZiwgdm9pZCogY29udGV4dCkKKyAgICB7Cisg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEludm9jYXRpb24qPihjb250ZXh0KS0+Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKCk7CisgICAgfQorICAgIHZvaWQgZm9yY2VSZXBhaW50RG9uZUNh
bGxiYWNrKCk7CisKKyAgICBmcmllbmQgY2xhc3MgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOwog
ICAgIAogICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiBtX3VybDsKICAgICBzdGQ6OnN0cmluZyBt
X3BhdGhPclVSTDsKQEAgLTU4LDcgKzY4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEludm9jYXRp
b24gc3RhdGUKICAgICBib29sIG1fZ290SW5pdGlhbFJlc3BvbnNlOwotICAgIGJvb2wgbV9nb3RG
aW5hbE1lc3NhZ2U7CisgICAgYm9vbCBtX2ZpbmlzaGVkOwogICAgIGJvb2wgbV9nb3RSZXBhaW50
OwogICAgIGJvb2wgbV9lcnJvcjsKIH07CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAppbmRleCBkM2ZiZmQyZWYyZGY0NzA0YWFm
NGExM2YwMTRiOTMyY2MwYTA3MmFhLi42ZGYzNWE2YzIxOGY3NDg2M2UzODE4MjdhNDAwN2ZjYTU0
OTQ0ODgzIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZv
Y2F0aW9uQ2Fpcm8uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdElu
dm9jYXRpb25DYWlyby5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgZHVtcEJpdG1h
cChjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UsIGNvbnN0IGNoYXIqIGNoZWNrc3VtKQogICAgIHBy
aW50UE5HKGRhdGEsIGRhdGFMZW5ndGgsIGNoZWNrc3VtKTsKIH0KIAotdm9pZCBUZXN0SW52b2Nh
dGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiB3a0ltYWdl
LCBXS0FycmF5UmVmIC8qcmVwYWludFJlY3RzKi8pCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpjb21w
YXJlUGl4ZWxzV2l0aEV4cGVjdGVkQW5kRmluaXNoKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJh
eVJlZiAvKnJlcGFpbnRSZWN0cyovKQogewogICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9
IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2Uod2tJbWFnZSk7CiAKQEAgLTg3LDYgKzg3LDggQEAg
dm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJ
bWFnZVJlZiB3a0ltYWdlLCBXS0FycmEKICAgICAgICAgZHVtcEJpdG1hcChzdXJmYWNlLCBhY3R1
YWxIYXNoKTsKIAogICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsKKworICAgIGZp
bmlzaCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCmluZGV4IDViNjhkYWM1YzU0ZDQ2MWUwYTM0ZmI0
NjQ5ZjIyYzBjMzU1ZGFmNTcuLmUxM2YxZWQ0Nzg1MmY0NWM3OTM1ZGUzN2MwYThhODI5MTRiZjQ2
YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25D
Ry5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNw
cApAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIHBhaW50UmVwYWludFJlY3RPdmVybGF5
KENHQ29udGV4dFJlZiBjb250ZXh0LCBXS0ltYWdlUmVmIGltYWdlLCBXS0FyCiAgICAgQ0dDb250
ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVt
cFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZSwgV0tBcnJheVJl
ZiByZXBhaW50UmVjdHMpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4ZWxzV2l0aEV4
cGVjdGVkQW5kRmluaXNoKFdLSW1hZ2VSZWYgaW1hZ2UsIFdLQXJyYXlSZWYgcmVwYWludFJlY3Rz
KQogewogICAgIFBsYXRmb3JtV2ViVmlldyogd2ViVmlldyA9IFRlc3RDb250cm9sbGVyOjpzaGFy
ZWQoKS5tYWluV2ViVmlldygpOwogICAgIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1Nu
YXBzaG90ID0gd2ViVmlldy0+d2luZG93U25hcHNob3RJbWFnZSgpOwpAQCAtMTc3LDYgKzE3Nyw4
IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVk
KFdLSW1hZ2VSZWYgaW1hZ2UsIFdLQXJyYXlSCiAgICAgY29tcHV0ZU1ENUhhc2hTdHJpbmdGb3JD
b250ZXh0KGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOwogICAgIGlmICghY29tcGFyZUFjdHVh
bEhhc2hUb0V4cGVjdGVkQW5kRHVtcFJlc3VsdHMoYWN0dWFsSGFzaCkpCiAgICAgICAgIGR1bXBC
aXRtYXAoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7CisKKyAgICBmaW5pc2goKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0
L1BsYXRmb3JtV2ViVmlld1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZv
cm1XZWJWaWV3UXQuY3BwCmluZGV4IDIxZWQ5MWJiMTc2OGZhMDM5ZTBiMDlkY2NjNmNjNTRjODM0
NTcyNjYuLmE5MjRkZjJhMmFkMDNmZTQ1ODNjNjIwYjhiNjViMTE5MTczZGFkMWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCkBAIC0zMiw4
ICszMiwxMCBAQAogCiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRXZl
bnRMb29wPgorI2luY2x1ZGUgPFFQYWludGVyPgogI2luY2x1ZGUgPFFRbWxQcm9wZXJ0eT4KICNp
bmNsdWRlIDxRdFF1aWNrL1FRdWlja1ZpZXc+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlUXQu
aD4KICNpbmNsdWRlIDxxcGEvcXdpbmRvd3N5c3RlbWludGVyZmFjZS5oPgogCiBuYW1lc3BhY2Ug
V1RSIHsKQEAgLTE1MCw5ICsxNTIsMTEgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJW
aWV3Rmlyc3RSZXNwb25kZXIoKQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdl
YlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hpY2ggbWF5IGJl
IG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0
dXJuIDA7CisgICAgUVJlY3QgZ2VvbWV0cnkgPSBtX3dpbmRvdy0+Z2VvbWV0cnkoKTsKKyAgICBR
SW1hZ2UgaW1hZ2UoZ2VvbWV0cnkuc2l6ZSgpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzIpOworICAg
IFFQYWludGVyIHBhaW50ZXIoJmltYWdlKTsKKyAgICBtX3ZpZXctPnBhZ2UoKS0+cGFpbnRTbmFw
c2hvdCgmcGFpbnRlcik7CisgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKGltYWdl
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9UZXN0SW52b2NhdGlvblF0LmNwcAppbmRleCAwMTYzMGQ5OGE2ZjNiNTE1Yjk5ZTAzODgxZmI1
NmI2MmNlNjZlNjlhLi42MDIyMWQ4ZDIyZTQwNDFjN2MyOTk1Njk1OWNmZGU0ZGJlM2EzMDEyIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKQEAg
LTI0LDkgKzI0LDEwIEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAi
VGVzdEludm9jYXRpb24uaCIKIAorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1
ZGUgIlRlc3RDb250cm9sbGVyLmgiCiAjaW5jbHVkZSA8UUJ1ZmZlcj4KICNpbmNsdWRlIDxRQ3J5
cHRvZ3JhcGhpY0hhc2g+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlUXQuaD4KQEAgLTYyLDEy
ICs2Myw3NSBAQCBzdGF0aWMgdm9pZCBkdW1wSW1hZ2UoY29uc3QgUUltYWdlJiBpbWFnZSkKICAg
ICBmZmx1c2goc3Rkb3V0KTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0Fu
ZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZVJlZiwgV0tBcnJheVJlZiByZXBh
aW50UmVjdHMpCitjbGFzcyBGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2cgOiBwdWJsaWMgUU9iamVj
dCB7CisgICAgUV9PQkpFQ1QKK3B1YmxpYzoKKyAgICBGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2co
VGVzdEludm9jYXRpb24qIGNsaWVudCk7CisgICAgdm9pZCBzdGFydCgpOworICAgIHZvaWQgc3Rv
cCgpOworICAgIGJvb2wgZXhwZWN0aW5nQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2V4cGVj
dGluZ0NhbGxiYWNrOyB9Citwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCB0aW1lckV2ZW50KFFU
aW1lckV2ZW50Kik7CisKKyAgICBUZXN0SW52b2NhdGlvbiogbV9jbGllbnQ7CisgICAgYm9vbCBt
X2V4cGVjdGluZ0NhbGxiYWNrOworICAgIGludCBtX3RpbWVySUQ7Cit9OworCitGb3JjZVJlcGFp
bnREb25lV2F0Y2hEb2c6OkZvcmNlUmVwYWludERvbmVXYXRjaERvZyhUZXN0SW52b2NhdGlvbiog
Y2xpZW50KQorICAgIDogbV9jbGllbnQoY2xpZW50KQorICAgICwgbV9leHBlY3RpbmdDYWxsYmFj
ayhmYWxzZSkKKyAgICAsIG1fdGltZXJJRCgwKQoreworfQorCit2b2lkIEZvcmNlUmVwYWludERv
bmVXYXRjaERvZzo6c3RhcnQoKQogewotICAgIC8vRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD02ODg3MAotICAgIFVOVVNFRF9QQVJBTShyZXBhaW50UmVjdHMp
OworICAgIGNvbnN0IGludCB0aW1lb3V0TWlsbGlzID0gMjAwMDsKKyAgICBtX3RpbWVySUQgPSBz
dGFydFRpbWVyKHRpbWVvdXRNaWxsaXMpOworICAgIG1fZXhwZWN0aW5nQ2FsbGJhY2sgPSB0cnVl
OworfQorCit2b2lkIEZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6c3RvcCgpCit7CisgICAga2ls
bFRpbWVyKG1fdGltZXJJRCk7CisgICAgbV9leHBlY3RpbmdDYWxsYmFjayA9IGZhbHNlOworfQor
Cit2b2lkIEZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6dGltZXJFdmVudChRVGltZXJFdmVudCop
Cit7CisgICAga2lsbFRpbWVyKG1fdGltZXJJRCk7CisgICAgbV9leHBlY3RpbmdDYWxsYmFjayA9
IGZhbHNlOworICAgIG1fY2xpZW50LT5mb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soKTsKK30KKwor
c3RhdGljIEZvcmNlUmVwYWludERvbmVXYXRjaERvZyogc193YXRjaERvZyA9IDA7CisKK3ZvaWQg
VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJbWFn
ZVJlZiBpbWFnZVJlZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpCit7CisgICAgV0tQYWdlUmVm
IHBhZ2UgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpOwor
ICAgIFdLUGFnZUZvcmNlUmVwYWludChwYWdlLCB0aGlzLCBmb3JjZVJlcGFpbnREb25lQ2FsbGJh
Y2spOworCisgICAgaWYgKCFzX3dhdGNoRG9nKQorICAgICAgICBzX3dhdGNoRG9nID0gbmV3IEZv
cmNlUmVwYWludERvbmVXYXRjaERvZyh0aGlzKTsKKyAgICBzX3dhdGNoRG9nLT5zdGFydCgpOwor
fQorCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soKQorewor
ICAgIFFJbWFnZSBpbWFnZTsKKyAgICBBU1NFUlQoc193YXRjaERvZyk7CisgICAgaWYgKHNfd2F0
Y2hEb2ctPmV4cGVjdGluZ0NhbGxiYWNrKCkpIHsKKyAgICAgICAgc193YXRjaERvZy0+c3RvcCgp
OworICAgICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiB3aW5kb3dTbmFwc2hvdCA9IFRlc3RD
b250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT53aW5kb3dTbmFwc2hvdEltYWdlKCk7
CisgICAgICAgIGltYWdlID0gV0tJbWFnZUNyZWF0ZVFJbWFnZSh3aW5kb3dTbmFwc2hvdC5nZXQo
KSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gVGhlIHRlc3QgaGFybmVzcyBleHBlY3RzIGFu
IGltYWdlIHNvIHdlIG91dHB1dCBhbiBlbXB0eSBvbmUuCisgICAgICAgIFdLUmVjdCB3aW5kb3dS
ZWN0ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd0ZyYW1l
KCk7CisgICAgICAgIGltYWdlID0gUUltYWdlKFFTaXplKHdpbmRvd1JlY3Quc2l6ZS53aWR0aCwg
d2luZG93UmVjdC5zaXplLmhlaWdodCksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBs
aWVkKTsKKyAgICAgICAgaW1hZ2UuZmlsbChRdDo6YmxhY2spOworICAgIH0KIAotICAgIFFJbWFn
ZSBpbWFnZSA9IFdLSW1hZ2VDcmVhdGVRSW1hZ2UoaW1hZ2VSZWYpOwogICAgIFFDcnlwdG9ncmFw
aGljSGFzaCBoYXNoKFFDcnlwdG9ncmFwaGljSGFzaDo6TWQ1KTsKICAgICBmb3IgKHVuc2lnbmVk
IHJvdyA9IDA7IHJvdyA8IGltYWdlLmhlaWdodCgpOyArK3JvdykKICAgICAgICAgaGFzaC5hZGRE
YXRhKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGltYWdlLmNvbnN0U2NhbkxpbmUocm93
KSksIGltYWdlLmJ5dGVzUGVyTGluZSgpKTsKQEAgLTc4LDYgKzE0MiwxMCBAQCB2b2lkIFRlc3RJ
bnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIGlt
YWdlUmVmLCBXS0FycgogICAgICAgICBpbWFnZS5zZXRUZXh0KCJjaGVja3N1bSIsIGFjdHVhbEhh
c2gpOwogICAgICAgICBkdW1wSW1hZ2UoaW1hZ2UpOwogICAgIH0KKworICAgIGZpbmlzaCgpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKKworI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uUXQubW9j
IgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25X
aW4uY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25XaW4uY3Bw
CmluZGV4IDg5NDVhYTY4YTNiMmIwYzUyZjZlYzAxNmY1NWVhNTdhZWQwYTgzMDIuLjM5ZjA0YTVh
MThmMmM5N2Q5OTZmMmVjNmNlYTMzNTU1YTViNmQzYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcAorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAKQEAgLTI5LDggKzI5LDkgQEAKIG5h
bWVzcGFjZSBXVFIgewogCiAjaWYgIVVTRShDRykgJiYgIVVTRShDQUlSTykKLXZvaWQgVGVzdElu
dm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYsIFdL
QXJyYXlSZWYpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4ZWxzV2l0aEV4cGVjdGVk
QW5kRmluaXNoKFdLSW1hZ2VSZWYsIFdLQXJyYXlSZWYpCiB7CisgICAgZmluaXNoKCk7CiB9CiAj
ZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163132</attachid>
            <date>2012-09-10 08:02:50 -0700</date>
            <delta_ts>2012-09-10 08:22:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20120910170219.patch</filename>
            <type>text/plain</type>
            <size>7315</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZmJlNDE0OGI4NzBkNmRi
OWUzYzllMTc4OWU4ZWNlZTcyNmExNTg1Yi4uZDkwNTgzMWQwMTg0NDY4ZWUzOTRiZDMzYjZlZmQ0
YzUwZDM3ZTFkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA5LTEwICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltbGVtZW50
IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbGVhc2UgZ3JhcGhpYyBidWZmZXJzIHRoYXQgYXJl
IG5vdCB1c2VkIGZvciBhIHdoaWxlIGluIG9yZGVyIHRvIHNhdmUgbWVtb3J5LgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRp
bmF0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6TGF5ZXJU
cmVlQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6
cmVuZGVyTmV4dEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3I6
OmJlZ2luQ29udGVudFVwZGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5h
dG9yOjpzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNJZk5lY2Vzc2FyeSk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6cmVsZWFz
ZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmg6CisgICAgICAgIChM
YXllclRyZWVDb29yZGluYXRvcik6CisgICAgICAgIChVcGRhdGVBdGxhc1dpdGhJbmFjdGl2aXR5
Q291bnRlcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpVcGRhdGVB
dGxhc1dpdGhJbmFjdGl2aXR5Q291bnRlcjo6VXBkYXRlQXRsYXNXaXRoSW5hY3Rpdml0eUNvdW50
ZXIpOgorICAgICAgICAoV2ViS2l0OjpMYXllclRyZWVDb29yZGluYXRvcjo6VXBkYXRlQXRsYXNX
aXRoSW5hY3Rpdml0eUNvdW50ZXI6OmluY3JlbWVudENvdW50ZXIpOgorICAgICAgICAoV2ViS2l0
OjpMYXllclRyZWVDb29yZGluYXRvcjo6VXBkYXRlQXRsYXNXaXRoSW5hY3Rpdml0eUNvdW50ZXI6
OnJlc2V0Q291bnRlcik6CisgICAgICAgIChXZWJLaXQ6OkxheWVyVHJlZUNvb3JkaW5hdG9yOjpV
cGRhdGVBdGxhc1dpdGhJbmFjdGl2aXR5Q291bnRlcjo6aW5hY3Rpdml0eUNvdW50KToKKwogMjAx
Mi0wOS0wNyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgb3B0aW9uYWwgZGVidWcgbG9nZ2luZyB3aGVuIHdlIGZhbGwgaW50by9vdXQgb2YgdGhy
ZWFkZWQgc2Nyb2xsaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRy
ZWVDb29yZGluYXRvci5jcHAKaW5kZXggZDAyYzlhYmIwNzQ1ZGM2M2FiNzM4NzYzYmZjOWQxYmNj
NmQ4Y2QzYy4uYmNiM2YwZDMwYTQwZjU5Yjk0ZWI3Njk4YTRjMjEyNDQyOTYxMGY0NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmNwcApA
QCAtNzgsNiArNzgsNyBAQCBMYXllclRyZWVDb29yZGluYXRvcjo6TGF5ZXJUcmVlQ29vcmRpbmF0
b3IoV2ViUGFnZSogd2ViUGFnZSkKICAgICAsIG1fc2hvdWxkU3luY0ZyYW1lKGZhbHNlKQogICAg
ICwgbV9zaG91bGRTeW5jUm9vdExheWVyKHRydWUpCiAgICAgLCBtX2xheWVyRmx1c2hUaW1lcih0
aGlzLCAmTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OmxheWVyRmx1c2hUaW1lckZpcmVkKQorICAgICwg
bV9yZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXIodGhpcywgJkxheWVyVHJlZUNvb3JkaW5hdG9y
OjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZCkKICAgICAsIG1fbGF5ZXJGbHVzaFNj
aGVkdWxpbmdFbmFibGVkKHRydWUpCiAgICAgLCBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJ
RCgwKQogewpAQCAtNjAwLDYgKzYwMSw3IEBAIHZvaWQgTGF5ZXJUcmVlQ29vcmRpbmF0b3I6OnJl
bmRlck5leHRGcmFtZSgpCiB7CiAgICAgbV93YWl0aW5nRm9yVUlQcm9jZXNzID0gZmFsc2U7CiAg
ICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CisgICAgc2NoZWR1bGVSZWxlYXNlSW5hY3RpdmVBdGxh
c2VzSWZOZWNlc3NhcnkoKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNl
cy5zaXplKCk7ICsraSkKICAgICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVy
cygpOwogfQpAQCAtNjIzLDE5ICs2MjUsNTMgQEAgUGFzc093blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHQ+IExheWVyVHJlZUNvb3JkaW5hdG9yOjpiZWdpbkNvbnRlbnRVcGRhdGUoY28KIHsK
ICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0PiBncmFwaGljc0NvbnRleHQ7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgVXBkYXRlQXRsYXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOworICAg
ICAgICBVcGRhdGVBdGxhc1dpdGhJbmFjdGl2aXR5Q291bnRlciogYXRsYXMgPSBtX3VwZGF0ZUF0
bGFzZXNbaV0uZ2V0KCk7CiAgICAgICAgIGlmIChhdGxhcy0+ZmxhZ3MoKSA9PSBmbGFncykgewog
ICAgICAgICAgICAgLy8gVGhpcyB3aWxsIHJldHVybiBudWxsIGlmIHRoZXJlIGlzIG5vIGF2YWls
YWJsZSBidWZmZXIgc3BhY2UuCiAgICAgICAgICAgICBncmFwaGljc0NvbnRleHQgPSBhdGxhcy0+
YmVnaW5QYWludGluZ09uQXZhaWxhYmxlQnVmZmVyKGhhbmRsZSwgc2l6ZSwgb2Zmc2V0KTsKLSAg
ICAgICAgICAgIGlmIChncmFwaGljc0NvbnRleHQpCisgICAgICAgICAgICBpZiAoZ3JhcGhpY3ND
b250ZXh0KSB7CisgICAgICAgICAgICAgICAgYXRsYXMtPnJlc2V0Q291bnRlcigpOwogICAgICAg
ICAgICAgICAgIHJldHVybiBncmFwaGljc0NvbnRleHQucmVsZWFzZSgpOworICAgICAgICAgICAg
fQogICAgICAgICB9CiAgICAgfQogCiAgICAgc3RhdGljIGNvbnN0IGludCBTY3JhdGNoQnVmZmVy
RGltZW5zaW9uID0gMTAyNDsgLy8gU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLgotICAgIG1fdXBk
YXRlQXRsYXNlcy5hcHBlbmQoYWRvcHRQdHIobmV3IFVwZGF0ZUF0bGFzKFNjcmF0Y2hCdWZmZXJE
aW1lbnNpb24sIGZsYWdzKSkpOworICAgIG1fdXBkYXRlQXRsYXNlcy5hcHBlbmQoYWRvcHRQdHIo
bmV3IFVwZGF0ZUF0bGFzV2l0aEluYWN0aXZpdHlDb3VudGVyKFNjcmF0Y2hCdWZmZXJEaW1lbnNp
b24sIGZsYWdzKSkpOwogICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5iZWdpblBh
aW50aW5nT25BdmFpbGFibGVCdWZmZXIoaGFuZGxlLCBzaXplLCBvZmZzZXQpOwogfQogCit2b2lk
IExheWVyVHJlZUNvb3JkaW5hdG9yOjpzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNJZk5l
Y2Vzc2FyeSgpCit7CisgICAgY29uc3QgaW50IGtEZWxheSA9IDAuMjsKKyAgICBpZiAoIW1fcmVs
ZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fcmVsZWFzZUlu
YWN0aXZlQXRsYXNlc1RpbWVyLnN0YXJ0UmVwZWF0aW5nKGtEZWxheSk7Cit9CisKK3ZvaWQgTGF5
ZXJUcmVlQ29vcmRpbmF0b3I6OnJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckZpcmVkKFdlYkNv
cmU6OlRpbWVyPExheWVyVHJlZUNvb3JkaW5hdG9yPiopCit7CisgICAgLy8gQWx3YXlzIGtlZXAg
b25lIGF0bGFzLgorICAgIGlmIChtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpIDw9IDEpIHsKKyAgICAg
ICAgbV9yZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXIuc3RvcCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gS2VlcCB1bnVzZWQgYnVmZmVycyBmb3IgYSB3aGlsZSB0byBhdm9p
ZCBtZW1vcnkgYWxsb2NhdGlvbiBjaHVybi4KKyAgICBjb25zdCB1bnNpZ25lZCBrSW5hY3Rpdml0
eVRvbGVyYW5jZSA9IDEwOworCisgICAgVmVjdG9yPE93blB0cjxVcGRhdGVBdGxhc1dpdGhJbmFj
dGl2aXR5Q291bnRlcj4gPiByZW1haW5pbmdBdGxhc2VzOworICAgIHJlbWFpbmluZ0F0bGFzZXMu
cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3VwZGF0ZUF0bGFzZXMuc2l6ZSgpKTsKKyAgICByZW1h
aW5pbmdBdGxhc2VzLnVuY2hlY2tlZEFwcGVuZChtX3VwZGF0ZUF0bGFzZXNbMF0ucmVsZWFzZSgp
KTsKKworICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbV91cGRhdGVBdGxhc2VzLnNpemUoKTsgKytp
KSB7CisgICAgICAgIE93blB0cjxVcGRhdGVBdGxhc1dpdGhJbmFjdGl2aXR5Q291bnRlcj4mIGF0
bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldOworICAgICAgICBhdGxhcy0+aW5jcmVtZW50Q291bnRl
cigpOworICAgICAgICBpZiAoYXRsYXMtPmluYWN0aXZpdHlDb3VudCgpIDwga0luYWN0aXZpdHlU
b2xlcmFuY2UpCisgICAgICAgICAgICByZW1haW5pbmdBdGxhc2VzLnVuY2hlY2tlZEFwcGVuZChh
dGxhcy5yZWxlYXNlKCkpOworICAgIH0KKworICAgIG1fdXBkYXRlQXRsYXNlcy5zd2FwKHJlbWFp
bmluZ0F0bGFzZXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKICNlbmRpZiAvLyBVU0Uo
Q09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvci5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5
ZXJUcmVlQ29vcmRpbmF0b3IuaAppbmRleCBjOGVmNTRhNjg2YWM4YWUwZjA4M2VjMjFhYWZjMDQz
OGI0ZmMzMDA1Li5mZmUxZGRjNjUzNjY3MTc0ZjA1ZWUyMzE2ZDc0MjE2ZWZmMjNjZTQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFw
aGljcy9MYXllclRyZWVDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yLmgKQEAg
LTExMyw2ICsxMTMsMTEgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFBlcmZvcm1TY2hlZHVsZWRM
YXllckZsdXNoKCk7CiAgICAgdm9pZCBzeW5jRGlzcGxheVN0YXRlKCk7CiAKKyAgICB2b2lkIGxh
eWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPExheWVyVHJlZUNvb3JkaW5hdG9yPiop
OworCisgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNJZk5lY2Vzc2FyeSgp
OworICAgIHZvaWQgcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQoV2ViQ29yZTo6VGlt
ZXI8TGF5ZXJUcmVlQ29vcmRpbmF0b3I+Kik7CisKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcj4gbV9yb290TGF5ZXI7CiAKICAgICAvLyBUaGUgbGF5ZXIgd2hpY2ggY29udGFpbnMg
YWxsIG5vbi1jb21wb3NpdGVkIGNvbnRlbnQuCkBAIC0xMjMsNyArMTI4LDIxIEBAIHByaXZhdGU6
CiAKICAgICBIYXNoU2V0PFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+IG1fcmVn
aXN0ZXJlZExheWVyczsKICAgICBIYXNoTWFwPGludDY0X3QsIGludD4gbV9kaXJlY3RseUNvbXBv
c2l0ZWRJbWFnZVJlZkNvdW50czsKLSAgICBWZWN0b3I8T3duUHRyPFVwZGF0ZUF0bGFzPiA+IG1f
dXBkYXRlQXRsYXNlczsKKworICAgIGNsYXNzIFVwZGF0ZUF0bGFzV2l0aEluYWN0aXZpdHlDb3Vu
dGVyIDogcHVibGljIFVwZGF0ZUF0bGFzIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFVwZGF0ZUF0
bGFzV2l0aEluYWN0aXZpdHlDb3VudGVyKGludCBkaW1lbnNpb24sIFNoYXJlYWJsZUJpdG1hcDo6
RmxhZ3MgZmxhZ3MpCisgICAgICAgICAgICA6IFVwZGF0ZUF0bGFzKGRpbWVuc2lvbiwgZmxhZ3Mp
CisgICAgICAgICAgICAsIG1faW5hY3Rpdml0eUNvdW50ZXIoMCkKKyAgICAgICAgeyB9CisgICAg
ICAgIHZvaWQgaW5jcmVtZW50Q291bnRlcigpIHsgKyttX2luYWN0aXZpdHlDb3VudGVyOyB9Cisg
ICAgICAgIHZvaWQgcmVzZXRDb3VudGVyKCkgeyBtX2luYWN0aXZpdHlDb3VudGVyID0gMDsgfQor
ICAgICAgICB1bnNpZ25lZCBpbmFjdGl2aXR5Q291bnQoKSBjb25zdCB7IHJldHVybiBtX2luYWN0
aXZpdHlDb3VudGVyOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9pbmFjdGl2
aXR5Q291bnRlcjsKKyAgICB9OworCisgICAgVmVjdG9yPE93blB0cjxVcGRhdGVBdGxhc1dpdGhJ
bmFjdGl2aXR5Q291bnRlcj4gPiBtX3VwZGF0ZUF0bGFzZXM7CiAKICAgICBib29sIG1fbm90aWZ5
QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoOwogICAgIGJvb2wgbV9pc1ZhbGlkOwpAQCAtMTM3LDgg
KzE1Niw4IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJUcmVlQ29udGV4dCBtX2xheWVyVHJlZUNvbnRl
eHQ7CiAgICAgYm9vbCBtX3Nob3VsZFN5bmNGcmFtZTsKICAgICBib29sIG1fc2hvdWxkU3luY1Jv
b3RMYXllcjsKLSAgICB2b2lkIGxheWVyRmx1c2hUaW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPExh
eWVyVHJlZUNvb3JkaW5hdG9yPiopOwogICAgIFdlYkNvcmU6OlRpbWVyPExheWVyVHJlZUNvb3Jk
aW5hdG9yPiBtX2xheWVyRmx1c2hUaW1lcjsKKyAgICBXZWJDb3JlOjpUaW1lcjxMYXllclRyZWVD
b29yZGluYXRvcj4gbV9yZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXI7CiAgICAgYm9vbCBtX2xh
eWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZDsKICAgICB1aW50NjRfdCBtX2ZvcmNlUmVwYWludEFz
eW5jQ2FsbGJhY2tJRDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165367</attachid>
            <date>2012-09-24 06:31:13 -0700</date>
            <delta_ts>2012-09-24 23:42:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20120924153033.patch</filename>
            <type>text/plain</type>
            <size>19587</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDllZWE0NDI2MWFjNGUx
NzUzZTYwNjEzNmY4NTY2MWM1YWFlNjFkMS4uZjA5NzdhNDljZGQ5NTllYzk5MjVlYTdlNDU2Y2Iw
MDRmNTdjODI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTI0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltbGVtZW50
IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252ZXJ0IGEgUUltYWdlIHRv
IGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBjcm9zcy1wbGF0Zm9ybSBj
b2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dL
SW1hZ2VRdC5oOgorCiAyMDEyLTA5LTIzICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHNldHRpbmcgdG8gdG9nZ2xlIGRldmVs
b3BlciBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
cXQvV0tJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdl
UXQuY3BwCmluZGV4IGQwOTc1ZjY1MzBlMDdhMTU0ODBjZWVhYzcwZTAwYzRiNTcwM2U4YTMuLjYw
Mzg4ZjRmYTI3ZTFmYzMyM2FiMjViNjdlNTg4MWExNWMyNDU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCkBAIC0yNSwxMCArMjUsMzAgQEAKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIK
ICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogUUlt
YWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICByZXR1
cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCktPmNyZWF0ZVFJbWFnZSgpLmNvcHkoKTsKIH0K
KworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdl
KQoreworICAgIGlmIChpbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBB
U1NFUlQoaW1hZ2UuYnl0ZXNQZXJMaW5lKCkgPT0gaW1hZ2Uud2lkdGgoKSAqIDQpOworCisgICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2Uuc2l6ZSgp
LCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDApKTsKKyAgICBpZiAoIXdlYkltYWdlLT5iaXRt
YXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgaW1hZ2UpOworICAg
IHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaAppbmRleCAxZTUwNzNhMDhjYjM0MDUy
OThiYzM0NjFiNjRhZmFlN2VlOTU3YmQzLi41YWJlZjQ4MTgzMDg3YWM1NTY5MTVmY2IyNjY4MTQ3
NjY4NzM1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJ
bWFnZVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5o
CkBAIC0yNyw1ICsyNyw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlLmg+CiAKIFdLX0VY
UE9SVCBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFnZShXS0ltYWdlUmVmIGltYWdlKTsKK1dLX0VY
UE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKGNvbnN0IFFJbWFnZSYgaW1h
Z2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA1ZTZjZGU5N2JmZmRhMWI1ODgyZTBlNWI4MzJhNjQ0MmNkYzhkYzhkLi43MzRm
MjAxYmI3MWZjYjk1MTMwNDdjNzA1ODg5YWExZTI3NzJhYmVmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTItMDkt
MjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0g
SW1sZW1lbnQgcGl4ZWwgc25hcHNob3QgZ2VuZXJhdGlvbiBpbiBXVFIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSS4gTWFkZSBXVFIgc3VpdGFibGUgZm9y
IHBsYXRmb3JtcyB0aGF0IHdhbnQgdG8gZm9yY2UgYSByZXBhaW50CisgICAgICAgIGF0IHRoZSBl
bmQgb2YgdGhlIHRlc3QgYmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0LiBQb3N0cG9uZQor
ICAgICAgICBmaW5pc2hpbmcgdGhlIHRlc3QgYWZ0ZXIgd2UgZ290IHRoZSBwaXhlbHMuCisKKyAg
ICAgICAgSUkuIFN3aXRjaCB0aGUgUXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBsYXRmb3JtV2Vi
VmlldyB0byB1c2UKKyAgICAgICAgUVF1aWNrV2luZG93OjpncmFiV2luZG93IHRvIGdlbmVyYXRl
IHRoZSBwaXhlbCByZXN1bHRzLiBUaGlzIHdheQorICAgICAgICB3ZSB3aWxsIGdvIHRocm91Z2gg
dGhlIHNjZW5lZ3JhcGggYW5kIHRlc3QgdGhlIGFjdHVhbCByZW5kZXJpbmcgYmFja2VuZC4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9r
ZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wKTogRG9uJ3QgY2xvc2Ugb3V0
cHV0IGNoYW5uZWxzIHlldCBleGNlcHQKKyAgICAgICAgd2hlbiB3ZSBkdW1wIGFmdGVyIGFuIGVy
cm9yLiBJdCB3aWxsIGJlIGRvbmUgaW4gZmluaXNoIGFmdGVyIHdlIGFyZQorICAgICAgICBkb25l
IHdpdGggdGhlIHBpeGVsIHJlc3VsdC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpmaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRG
aW5pc2gpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4ZWxzV2l0aEV4cGVj
dGVkQW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2Vi
Vmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6V3JhcHBlcldpbmRvdyk6
CisgICAgICAgIChXcmFwcGVyV2luZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6
c25hcHNob3RJbWFnZSk6CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6On5XcmFwcGVyV2lu
ZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6aGFuZGxlU3RhdHVzQ2hhbmdlZCk6
CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6Om9uQmVmb3JlUmVuZGVyaW5nKToKKyAgICAg
ICAgKFdUUik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJ
bWFnZSk6CisgICAgICAgIEdyYWIgcGl4ZWxzIHdpdGggUXVpY2tXaW5kb3c6OmdyYWJXaW5kb3cu
IFdlIHVzZSBzZXRSZW5kZXJXaXRob3V0U2hvd2luZworICAgICAgICBhbmQgYSBmcmFtZSBidWZm
ZXIgb2JqZWN0IHRvIGF2b2lkIHRoZSBuZWVkIG9mIHNob3dpbmcgdGhlIHdpbmRvdy4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwOgorICAgICAgICAo
Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKToKKyAgICAgICAgKFdUUjo6Rm9yY2VSZXBhaW50RG9u
ZVdhdGNoRG9nOjpleHBlY3RpbmdDYWxsYmFjayk6CisgICAgICAgIChXVFIpOgorICAgICAgICAo
V1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OkZvcmNlUmVwYWludERvbmVXYXRjaERvZyk6
CisgICAgICAgIChXVFI6OkZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6c3RhcnQpOgorICAgICAg
ICAoV1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OnN0b3ApOgorICAgICAgICAoV1RSOjpG
b3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaCk6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2spOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2gp
OgorCiAyMDEyLTA5LTIyICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgog
CiAgICAgICAgIEFYOiBMYXlvdXQgdGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyIGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UYXJnZXQucHJpCmluZGV4IDNjNDdjYWIzOGExYmE3MjA5MDVkNmNmNzdiODQxZjc4
Y2Y0OGY2MDYuLjk5ZWQ4YmE3OWQxM2ZkZjNkYjJiODEyNTQxOWZlMzM0OTdjNzRjZGEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1RhcmdldC5wcmkKQEAgLTMxLDcgKzMxLDcgQEAgU09VUkNFUyArPSBcCiAK
IERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKLVFUID0gY29yZSBndWkgZ3VpLXBy
aXZhdGUgd2lkZ2V0cyBuZXR3b3JrIHRlc3RsaWIgcXVpY2sgcXVpY2stcHJpdmF0ZSB3ZWJraXQK
K1FUID0gY29yZSBndWkgZ3VpLXByaXZhdGUgd2lkZ2V0cyBuZXR3b3JrIHRlc3RsaWIgcXVpY2sg
cXVpY2stcHJpdmF0ZSBxbWwtcHJpdmF0ZSB2OC1wcml2YXRlIHdlYmtpdAogCiBXRUJLSVQgKz0g
d3RmIGphdmFzY3JpcHRjb3JlIHdlYmtpdDIKIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJ
bnZvY2F0aW9uLmNwcAppbmRleCA0NDljMWIwZDMwNGM3YzIyNWM5NmQ4N2I0NjUzYjhlYTRkMzI2
YzYyLi5jOTliMWE4ZTc3NmY3Y2M5ZTE3YmFkZGZhYTZjNjMyMTI0YjliMzBlIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIFRl
c3RJbnZvY2F0aW9uOjpUZXN0SW52b2NhdGlvbihjb25zdCBzdGQ6OnN0cmluZyYgcGF0aE9yVVJM
KQogICAgICwgbV9wYXRoT3JVUkwocGF0aE9yVVJMKQogICAgICwgbV9kdW1wUGl4ZWxzKGZhbHNl
KQogICAgICwgbV9nb3RJbml0aWFsUmVzcG9uc2UoZmFsc2UpCi0gICAgLCBtX2dvdEZpbmFsTWVz
c2FnZShmYWxzZSkKKyAgICAsIG1fZmluaXNoZWQoZmFsc2UpCiAgICAgLCBtX2dvdFJlcGFpbnQo
ZmFsc2UpCiAgICAgLCBtX2Vycm9yKGZhbHNlKQogewpAQCAtMTgyLDggKzE4Miw4IEBAIHZvaWQg
VGVzdEludm9jYXRpb246Omludm9rZSgpCiAKICAgICBXS1BhZ2VMb2FkVVJMKFRlc3RDb250cm9s
bGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5wYWdlKCksIG1fdXJsLmdldCgpKTsKIAotICAg
IFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5ydW5VbnRpbChtX2dvdEZpbmFsTWVzc2FnZSwgVGVz
dENvbnRyb2xsZXI6OnNoYXJlZCgpLnVzZVdhaXRUb0R1bXBXYXRjaGRvZ1RpbWVyKCkgPyBUZXN0
Q29udHJvbGxlcjo6TG9uZ1RpbWVvdXQgOiBUZXN0Q29udHJvbGxlcjo6Tm9UaW1lb3V0KTsKLSAg
ICBpZiAoIW1fZ290RmluYWxNZXNzYWdlKSB7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgp
LnJ1blVudGlsKG1fZmluaXNoZWQsIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS51c2VXYWl0VG9E
dW1wV2F0Y2hkb2dUaW1lcigpID8gVGVzdENvbnRyb2xsZXI6OkxvbmdUaW1lb3V0IDogVGVzdENv
bnRyb2xsZXI6Ok5vVGltZW91dCk7CisgICAgaWYgKCFtX2ZpbmlzaGVkKSB7CiAgICAgICAgIGVy
cm9yTWVzc2FnZSA9ICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgZmluYWwgbWVzc2FnZSBmcm9tIHdl
YiBwcm9jZXNzXG4iOwogICAgICAgICBnb3RvIGVuZDsKICAgICB9CkBAIC0yMTksNyArMjE5LDcg
QEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFdlYlByb2Nlc3NVbnJlc3BvbnNpdmVuZXNzKGNv
bnN0IGNoYXIqIHRleHRUb1N0ZG91dCkKICAgICBkdW1wKHRleHRUb1N0ZG91dCwgZXJyb3JNZXNz
YWdlVG9TdGRlcnIsIHRydWUpOwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0
IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBib29sIHNlZW5F
cnJvcikKK3ZvaWQgVGVzdEludm9jYXRpb246OmR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0
LCBjb25zdCBjaGFyKiB0ZXh0VG9TdGRlcnIsIGJvb2wgY2xvc2VPdXRwdXRDaGFubmVscykKIHsK
ICAgICBwcmludGYoIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpblxuIik7CiAgICAgaWYgKHRleHRU
b1N0ZG91dCkKQEAgLTIyOCw5ICsyMjgsMjMgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcChj
b25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciwgYm8KICAg
ICAgICAgZnB1dHModGV4dFRvU3RkZXJyLCBzdGRlcnIpOwogCiAgICAgZnB1dHMoIiNFT0ZcbiIs
IHN0ZG91dCk7Ci0gICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZGVycik7Ci0gICAgaWYgKHNlZW5FcnJv
cikKKworICAgIGlmIChjbG9zZU91dHB1dENoYW5uZWxzKSB7CisgICAgICAgIGZwdXRzKCIjRU9G
XG4iLCBzdGRlcnIpOwogICAgICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0KTsKKyAgICB9CisK
KyAgICBmZmx1c2goc3Rkb3V0KTsKKyAgICBmZmx1c2goc3RkZXJyKTsKK30KKwordm9pZCBUZXN0
SW52b2NhdGlvbjo6ZmluaXNoKCkKK3sKKyAgICBtX2ZpbmlzaGVkID0gdHJ1ZTsKKyAgICBUZXN0
Q29udHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOworCisgICAgZnB1dHMoIiNFT0ZcbiIs
IHN0ZGVycik7CisgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91dCk7CiAgICAgZmZsdXNoKHN0ZG91
dCk7CiAgICAgZmZsdXNoKHN0ZGVycik7CiB9CkBAIC0yNTUsNyArMjY5LDcgQEAgdm9pZCBUZXN0
SW52b2NhdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZU5hbWUKICAgICBpZiAoV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhtZXNz
YWdlTmFtZSwgIkVycm9yIikpIHsKICAgICAgICAgLy8gU2V0IGFsbCBzdGF0ZXMgdG8gdHJ1ZSB0
byBzdG9wIHNwaW5uaW5nIHRoZSBydW5sb29wLgogICAgICAgICBtX2dvdEluaXRpYWxSZXNwb25z
ZSA9IHRydWU7Ci0gICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgbV9m
aW5pc2hlZCA9IHRydWU7CiAgICAgICAgIG1fZXJyb3IgPSB0cnVlOwogICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CkBAIC0yOTIs
MTQgKzMwNiwxMCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkaWRSZWNlaXZlTWVzc2FnZUZyb21J
bmplY3RlZEJ1bmRsZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZQogCiAgICAgICAgIC8vIER1bXAg
cGl4ZWxzIChpZiBuZWNlc3NhcnkpLgogICAgICAgICBpZiAobV9kdW1wUGl4ZWxzICYmIHBpeGVs
UmVzdWx0KQotICAgICAgICAgICAgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQocGl4
ZWxSZXN1bHQsIHJlcGFpbnRSZWN0cyk7CisgICAgICAgICAgICBjb21wYXJlUGl4ZWxzV2l0aEV4
cGVjdGVkQW5kRmluaXNoKHBpeGVsUmVzdWx0LCByZXBhaW50UmVjdHMpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBmaW5pc2goKTsKIAotICAgICAgICBmcHV0cygiI0VPRlxuIiwgc3Rkb3V0
KTsKLSAgICAgICAgZmZsdXNoKHN0ZG91dCk7Ci0gICAgICAgIGZmbHVzaChzdGRlcnIpOwotICAg
ICAgICAKLSAgICAgICAgbV9nb3RGaW5hbE1lc3NhZ2UgPSB0cnVlOwotICAgICAgICBUZXN0Q29u
dHJvbGxlcjo6c2hhcmVkKCkubm90aWZ5RG9uZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5o
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5oCmluZGV4IDQ5NjQxZTll
ZTQzZTc4OWNkOTU5ZjRiNGRkYWJlNDY4Y2Y5NjM4M2IuLmRiZWRkNzg4OGJjMjhiOGRmZWNiY2M4
MDRmOTViZjVjNDBkNWQxYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmgKQEAgLTQ2LDkgKzQ2LDE5IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIGR1bXBXZWJQ
cm9jZXNzVW5yZXNwb25zaXZlbmVzcyhjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQpOwogcHJpdmF0
ZToKLSAgICBzdGF0aWMgdm9pZCBkdW1wKGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3Qg
Y2hhciogdGV4dFRvU3RkZXJyID0gMCwgYm9vbCBzZWVuRXJyb3IgPSBmYWxzZSk7Ci0gICAgdm9p
ZCBkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVm
IHJlcGFpbnRSZWN0cyk7CisgICAgdm9pZCBmaW5pc2goKTsKKyAgICBzdGF0aWMgdm9pZCBkdW1w
KGNvbnN0IGNoYXIqIHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyID0gMCwg
Ym9vbCBjbG9zZU91dHB1dENoYW5uZWxzID0gZmFsc2UpOworICAgIHZvaWQgY29tcGFyZVBpeGVs
c1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0
cyk7CiAgICAgYm9vbCBjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhj
b25zdCBjaGFyWzMzXSk7CisKKyAgICAvLyBTb21lIHBsYXRmb3JtcyBtaWdodCB3YW50IHRvIGZv
cmNlIGEgcmVwYWludCBiZWZvcmUgZ2VuZXJhdGluZyBwaXhlbCByZXN1bHQuCisgICAgc3RhdGlj
IHZvaWQgZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKFdLRXJyb3JSZWYsIHZvaWQqIGNvbnRleHQp
CisgICAgeworICAgICAgICByZWludGVycHJldF9jYXN0PFRlc3RJbnZvY2F0aW9uKj4oY29udGV4
dCktPmZvcmNlUmVwYWludERvbmVDYWxsYmFjaygpOworICAgIH0KKyAgICB2b2lkIGZvcmNlUmVw
YWludERvbmVDYWxsYmFjaygpOworCisgICAgZnJpZW5kIGNsYXNzIEZvcmNlUmVwYWludERvbmVX
YXRjaERvZzsKICAgICAKICAgICBXS1JldGFpblB0cjxXS1VSTFJlZj4gbV91cmw7CiAgICAgc3Rk
OjpzdHJpbmcgbV9wYXRoT3JVUkw7CkBAIC01OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAKICAgICAv
LyBJbnZvY2F0aW9uIHN0YXRlCiAgICAgYm9vbCBtX2dvdEluaXRpYWxSZXNwb25zZTsKLSAgICBi
b29sIG1fZ290RmluYWxNZXNzYWdlOworICAgIGJvb2wgbV9maW5pc2hlZDsKICAgICBib29sIG1f
Z290UmVwYWludDsKICAgICBib29sIG1fZXJyb3I7CiB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKaW5kZXggZDNmYmZkMmVm
MmRmNDcwNGFhZjRhMTNmMDE0YjkzMmNjMGEwNzJhYS4uNmRmMzVhNmMyMThmNzQ4NjNlMzgxODI3
YTQwMDdmY2E1NDk0NDg4MyAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jYWly
by9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2Nh
aXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2b2lk
IGR1bXBCaXRtYXAoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBjb25zdCBjaGFyKiBjaGVja3N1
bSkKICAgICBwcmludFBORyhkYXRhLCBkYXRhTGVuZ3RoLCBjaGVja3N1bSk7CiB9CiAKLXZvaWQg
VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VS
ZWYgd2tJbWFnZSwgV0tBcnJheVJlZiAvKnJlcGFpbnRSZWN0cyovKQordm9pZCBUZXN0SW52b2Nh
dGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmIHdrSW1h
Z2UsIFdLQXJyYXlSZWYgLypyZXBhaW50UmVjdHMqLykKIHsKICAgICBjYWlyb19zdXJmYWNlX3Qq
IHN1cmZhY2UgPSBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKHdrSW1hZ2UpOwogCkBAIC04Nyw2
ICs4Nyw4IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4
cGVjdGVkKFdLSW1hZ2VSZWYgd2tJbWFnZSwgV0tBcnJhCiAgICAgICAgIGR1bXBCaXRtYXAoc3Vy
ZmFjZSwgYWN0dWFsSGFzaCk7CiAKICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3koc3VyZmFjZSk7
CisKKyAgICBmaW5pc2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAppbmRleCA1YjY4ZGFjNWM1NGQ0
NjFlMGEzNGZiNDY0OWYyMmMwYzM1NWRhZjU3Li5lMTNmMWVkNDc4NTJmNDVjNzkzNWRlMzdjMGE4
YTgyOTE0YmY0NmE4IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NnL1Rlc3RJ
bnZvY2F0aW9uQ0cuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9j
YXRpb25DRy5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBwYWludFJlcGFpbnRS
ZWN0T3ZlcmxheShDR0NvbnRleHRSZWYgY29udGV4dCwgV0tJbWFnZVJlZiBpbWFnZSwgV0tBcgog
ICAgIENHQ29udGV4dFJlc3RvcmVHU3RhdGUoY29udGV4dCk7CiB9CiAKLXZvaWQgVGVzdEludm9j
YXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2Us
IFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQordm9pZCBUZXN0SW52b2NhdGlvbjo6Y29tcGFyZVBp
eGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UmVmIHJl
cGFpbnRSZWN0cykKIHsKICAgICBQbGF0Zm9ybVdlYlZpZXcqIHdlYlZpZXcgPSBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKTsKICAgICBXS1JldGFpblB0cjxXS0ltYWdlUmVm
PiB3aW5kb3dTbmFwc2hvdCA9IHdlYlZpZXctPndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKQEAgLTE3
Nyw2ICsxNzcsOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdp
dGhFeHBlY3RlZChXS0ltYWdlUmVmIGltYWdlLCBXS0FycmF5UgogICAgIGNvbXB1dGVNRDVIYXNo
U3RyaW5nRm9yQ29udGV4dChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsKICAgICBpZiAoIWNv
bXBhcmVBY3R1YWxIYXNoVG9FeHBlY3RlZEFuZER1bXBSZXN1bHRzKGFjdHVhbEhhc2gpKQogICAg
ICAgICBkdW1wQml0bWFwKGNvbnRleHQuZ2V0KCksIGFjdHVhbEhhc2gpOworCisgICAgZmluaXNo
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcAppbmRleCAyMmUzZmM1OTY4ZWZmMTNjNmQyMzk5Nzli
YjVjNDYwZWJjMTBlY2U2Li5jY2Q1OTM2NTVkODkxZmQ2ZjFiNDRkNDM0M2Y4ZDk5ZGY0OTcwZjFm
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0
LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNw
cApAQCAtMzMsOCArMzMsMTIgQEAKICNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgogI2luY2x1
ZGUgPFFFdmVudExvb3A+CiAjaW5jbHVkZSA8UVFtbFByb3BlcnR5PgorI2luY2x1ZGUgPFF0R3Vp
L3FvcGVuZ2xmcmFtZWJ1ZmZlcm9iamVjdC5oPgogI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrVmll
dz4KKyNpbmNsdWRlIDxRdFF1aWNrL3ByaXZhdGUvcXF1aWNrd2luZG93X3AuaD4KKyNpbmNsdWRl
IDxXZWJLaXQyL1dLSW1hZ2VRdC5oPgogI2luY2x1ZGUgPHFwYS9xd2luZG93c3lzdGVtaW50ZXJm
YWNlLmg+CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNwYWNlIFdUUiB7CiAK
QEAgLTQ0LDggKzQ4LDIxIEBAIHB1YmxpYzoKICAgICBXcmFwcGVyV2luZG93KFFRdWlja1dlYlZp
ZXcqIHZpZXcpCiAgICAgICAgIDogUVF1aWNrVmlldyhRVXJsKCJkYXRhOnRleHQvcGxhaW4saW1w
b3J0IFF0UXVpY2sgMi4wXG5JdGVtIHsgb2JqZWN0TmFtZTogJ3Jvb3QnIH0iKSkKICAgICAgICAg
LCBtX3ZpZXcodmlldykKKyAgICAgICAgLCBtX2ZibygwKQogICAgIHsKICAgICAgICAgY29ubmVj
dCh0aGlzLCBTSUdOQUwoc3RhdHVzQ2hhbmdlZChRUXVpY2tWaWV3OjpTdGF0dXMpKSwgU0xPVCho
YW5kbGVTdGF0dXNDaGFuZ2VkKFFRdWlja1ZpZXc6OlN0YXR1cykpKTsKKyAgICAgICAgY29ubmVj
dCh0aGlzLCBTSUdOQUwoYmVmb3JlUmVuZGVyaW5nKCkpLCBTTE9UKG9uQmVmb3JlUmVuZGVyaW5n
KCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgfQorCisgICAgUUltYWdlIHNuYXBzaG90
SW1hZ2UoKQorICAgIHsKKyAgICAgICAgZ3JhYldpbmRvdygpOworICAgICAgICByZXR1cm4gbV9m
Ym8gPyBtX2Ziby0+dG9JbWFnZSgpIDogUUltYWdlKCk7CisgICAgfQorCisgICAgfldyYXBwZXJX
aW5kb3coKQorICAgIHsKKyAgICAgICAgZGVsZXRlIG1fZmJvOwogICAgIH0KIAogcHJpdmF0ZSBR
X1NMT1RTOgpAQCAtNTQsNiArNzEsMTEgQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgICAgICBpZiAo
c3RhdHVzICE9IFFRdWlja1ZpZXc6OlJlYWR5KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAg
ICAgIHNldFN1cmZhY2VUeXBlKE9wZW5HTFN1cmZhY2UpOworICAgICAgICBjcmVhdGUoKTsKKwor
ICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpnZXQodGhpcyktPnNldFJlbmRlcldpdGhvdXRT
aG93aW5nKHRydWUpOworCiAgICAgICAgIHNldEdlb21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsKIAog
ICAgICAgICBzZXRSZXNpemVNb2RlKFFRdWlja1ZpZXc6OlNpemVSb290T2JqZWN0VG9WaWV3KTsK
QEAgLTY0LDEwICs4NiwyNyBAQCBwcml2YXRlIFFfU0xPVFM6CiAgICAgICAgIG1fdmlldy0+cGFn
ZSgpLT5zZXRGb2N1cyh0cnVlKTsKICAgICB9CiAKKyAgICB2b2lkIG9uQmVmb3JlUmVuZGVyaW5n
KCk7CisKIHByaXZhdGU6CiAgICAgUVF1aWNrV2ViVmlldyogbV92aWV3OworICAgIFFPcGVuR0xG
cmFtZWJ1ZmZlck9iamVjdCogbV9mYm87CiB9OwogCit2b2lkIFdyYXBwZXJXaW5kb3c6Om9uQmVm
b3JlUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV9mYm8gJiYgbV9mYm8tPnNpemUoKSA9PSBzaXpl
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAobV9mYm8pIHsKKyAgICAgICAgbV9mYm8tPnJl
bGVhc2UoKTsKKyAgICAgICAgZGVsZXRlIG1fZmJvOworICAgIH0KKyAgICBtX2ZibyA9IG5ldyBR
T3BlbkdMRnJhbWVidWZmZXJPYmplY3Qoc2l6ZSgpKTsKKyAgICBtX2Ziby0+YmluZCgpOworICAg
IHNldFJlbmRlclRhcmdldChtX2Zibyk7CisKK30KKwogUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9y
bVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZikKICAgICA6IG1fdmlldyhuZXcgUVF1aWNrV2ViVmlldyhjb250ZXh0UmVmLCBwYWdlR3Jv
dXBSZWYpKQogICAgICwgbV93aW5kb3cobmV3IFdyYXBwZXJXaW5kb3cobV92aWV3KSkKQEAgLTE1
MCw5ICsxODksNyBAQCB2b2lkIFBsYXRmb3JtV2ViVmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3Bv
bmRlcigpCiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VSZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93
U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgLy8gRklYTUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBp
eGVscyBpbiB0aGUgVUkgcHJvY2VzcywKLSAgICAvLyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRv
IGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNmb3Jtcy4KLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UocW9iamVjdF9jYXN0PFdyYXBwZXJXaW5kb3cq
PihtX3dpbmRvdyktPnNuYXBzaG90SW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKaW5kZXgg
MDE2MzBkOThhNmYzYjUxNWI5OWUwMzg4MWZiNTZiNjJjZTY2ZTY5YS4uNjAyMjFkOGQyMmU0MDQx
YzdjMjk5NTY5NTljZmRlNGRiZTNhMzAxMiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwCkBAIC0yNCw5ICsyNCwxMCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLQogI2luY2x1ZGUgIlRlc3RJbnZvY2F0aW9uLmgiCiAKKyNpbmNsdWRl
ICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNsdWRlICJUZXN0Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgPFFCdWZmZXI+CiAjaW5jbHVkZSA8UUNyeXB0b2dyYXBoaWNIYXNoPgogI2luY2x1ZGUgPFdl
YktpdDIvV0tJbWFnZVF0Lmg+CkBAIC02MiwxMiArNjMsNzUgQEAgc3RhdGljIHZvaWQgZHVtcElt
YWdlKGNvbnN0IFFJbWFnZSYgaW1hZ2UpCiAgICAgZmZsdXNoKHN0ZG91dCk7CiB9CiAKLXZvaWQg
VGVzdEludm9jYXRpb246OmR1bXBQaXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VS
ZWYgaW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVwYWludFJlY3RzKQorY2xhc3MgRm9yY2VSZXBhaW50
RG9uZVdhdGNoRG9nIDogcHVibGljIFFPYmplY3QgeworICAgIFFfT0JKRUNUCitwdWJsaWM6Cisg
ICAgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKFRlc3RJbnZvY2F0aW9uKiBjbGllbnQpOworICAg
IHZvaWQgc3RhcnQoKTsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICBib29sIGV4cGVjdGluZ0NhbGxi
YWNrKCkgY29uc3QgeyByZXR1cm4gbV9leHBlY3RpbmdDYWxsYmFjazsgfQorcHJpdmF0ZToKKyAg
ICB2aXJ0dWFsIHZvaWQgdGltZXJFdmVudChRVGltZXJFdmVudCopOworCisgICAgVGVzdEludm9j
YXRpb24qIG1fY2xpZW50OworICAgIGJvb2wgbV9leHBlY3RpbmdDYWxsYmFjazsKKyAgICBpbnQg
bV90aW1lcklEOworfTsKKworRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjpGb3JjZVJlcGFpbnRE
b25lV2F0Y2hEb2coVGVzdEludm9jYXRpb24qIGNsaWVudCkKKyAgICA6IG1fY2xpZW50KGNsaWVu
dCkKKyAgICAsIG1fZXhwZWN0aW5nQ2FsbGJhY2soZmFsc2UpCisgICAgLCBtX3RpbWVySUQoMCkK
K3sKK30KKwordm9pZCBGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OnN0YXJ0KCkKIHsKLSAgICAv
L0ZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4NzAKLSAg
ICBVTlVTRURfUEFSQU0ocmVwYWludFJlY3RzKTsKKyAgICBjb25zdCBpbnQgdGltZW91dE1pbGxp
cyA9IDIwMDA7CisgICAgbV90aW1lcklEID0gc3RhcnRUaW1lcih0aW1lb3V0TWlsbGlzKTsKKyAg
ICBtX2V4cGVjdGluZ0NhbGxiYWNrID0gdHJ1ZTsKK30KKwordm9pZCBGb3JjZVJlcGFpbnREb25l
V2F0Y2hEb2c6OnN0b3AoKQoreworICAgIGtpbGxUaW1lcihtX3RpbWVySUQpOworICAgIG1fZXhw
ZWN0aW5nQ2FsbGJhY2sgPSBmYWxzZTsKK30KKwordm9pZCBGb3JjZVJlcGFpbnREb25lV2F0Y2hE
b2c6OnRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKQoreworICAgIGtpbGxUaW1lcihtX3RpbWVySUQp
OworICAgIG1fZXhwZWN0aW5nQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICBtX2NsaWVudC0+Zm9yY2VS
ZXBhaW50RG9uZUNhbGxiYWNrKCk7Cit9CisKK3N0YXRpYyBGb3JjZVJlcGFpbnREb25lV2F0Y2hE
b2cqIHNfd2F0Y2hEb2cgPSAwOworCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4ZWxz
V2l0aEV4cGVjdGVkQW5kRmluaXNoKFdLSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLQXJyYXlSZWYgcmVw
YWludFJlY3RzKQoreworICAgIFdLUGFnZVJlZiBwYWdlID0gVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLm1haW5XZWJWaWV3KCktPnBhZ2UoKTsKKyAgICBXS1BhZ2VGb3JjZVJlcGFpbnQocGFnZSwg
dGhpcywgZm9yY2VSZXBhaW50RG9uZUNhbGxiYWNrKTsKKworICAgIGlmICghc193YXRjaERvZykK
KyAgICAgICAgc193YXRjaERvZyA9IG5ldyBGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2codGhpcyk7
CisgICAgc193YXRjaERvZy0+c3RhcnQoKTsKK30KKwordm9pZCBUZXN0SW52b2NhdGlvbjo6Zm9y
Y2VSZXBhaW50RG9uZUNhbGxiYWNrKCkKK3sKKyAgICBRSW1hZ2UgaW1hZ2U7CisgICAgQVNTRVJU
KHNfd2F0Y2hEb2cpOworICAgIGlmIChzX3dhdGNoRG9nLT5leHBlY3RpbmdDYWxsYmFjaygpKSB7
CisgICAgICAgIHNfd2F0Y2hEb2ctPnN0b3AoKTsKKyAgICAgICAgV0tSZXRhaW5QdHI8V0tJbWFn
ZVJlZj4gd2luZG93U25hcHNob3QgPSBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZp
ZXcoKS0+d2luZG93U25hcHNob3RJbWFnZSgpOworICAgICAgICBpbWFnZSA9IFdLSW1hZ2VDcmVh
dGVRSW1hZ2Uod2luZG93U25hcHNob3QuZ2V0KCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8v
IFRoZSB0ZXN0IGhhcm5lc3MgZXhwZWN0cyBhbiBpbWFnZSBzbyB3ZSBvdXRwdXQgYW4gZW1wdHkg
b25lLgorICAgICAgICBXS1JlY3Qgd2luZG93UmVjdCA9IFRlc3RDb250cm9sbGVyOjpzaGFyZWQo
KS5tYWluV2ViVmlldygpLT53aW5kb3dGcmFtZSgpOworICAgICAgICBpbWFnZSA9IFFJbWFnZShR
U2l6ZSh3aW5kb3dSZWN0LnNpemUud2lkdGgsIHdpbmRvd1JlY3Quc2l6ZS5oZWlnaHQpLCBRSW1h
Z2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CisgICAgICAgIGltYWdlLmZpbGwoUXQ6
OmJsYWNrKTsKKyAgICB9CiAKLSAgICBRSW1hZ2UgaW1hZ2UgPSBXS0ltYWdlQ3JlYXRlUUltYWdl
KGltYWdlUmVmKTsKICAgICBRQ3J5cHRvZ3JhcGhpY0hhc2ggaGFzaChRQ3J5cHRvZ3JhcGhpY0hh
c2g6Ok1kNSk7CiAgICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBpbWFnZS5oZWlnaHQo
KTsgKytyb3cpCiAgICAgICAgIGhhc2guYWRkRGF0YShyZWludGVycHJldF9jYXN0PGNvbnN0IGNo
YXIqPihpbWFnZS5jb25zdFNjYW5MaW5lKHJvdykpLCBpbWFnZS5ieXRlc1BlckxpbmUoKSk7CkBA
IC03OCw2ICsxNDIsMTAgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVsc0FuZENvbXBh
cmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZVJlZiwgV0tBcnIKICAgICAgICAgaW1hZ2Uu
c2V0VGV4dCgiY2hlY2tzdW0iLCBhY3R1YWxIYXNoKTsKICAgICAgICAgZHVtcEltYWdlKGltYWdl
KTsKICAgICB9CisKKyAgICBmaW5pc2goKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCisKKyNp
bmNsdWRlICJUZXN0SW52b2NhdGlvblF0Lm1vYyIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcAppbmRleCA4OTQ1YWE2OGEzYjJiMGM1MmY2ZWMw
MTZmNTVlYTU3YWVkMGE4MzAyLi4zOWYwNGE1YTE4ZjJjOTdkOTk2ZjJlYzZjZWEzMzU1NWE1YjZk
M2I1IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlv
bldpbi5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4vVGVzdEludm9jYXRpb25X
aW4uY3BwCkBAIC0yOSw4ICsyOSw5IEBACiBuYW1lc3BhY2UgV1RSIHsKIAogI2lmICFVU0UoQ0cp
ICYmICFVU0UoQ0FJUk8pCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFy
ZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmLCBXS0FycmF5UmVmKQordm9pZCBUZXN0SW52b2NhdGlv
bjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmLCBXS0FycmF5
UmVmKQogeworICAgIGZpbmlzaCgpOwogfQogI2VuZGlmCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165534</attachid>
            <date>2012-09-24 23:42:27 -0700</date>
            <delta_ts>2012-10-08 09:15:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20120925084146.patch</filename>
            <type>text/plain</type>
            <size>19600</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDllZWE0NDI2MWFjNGUx
NzUzZTYwNjEzNmY4NTY2MWM1YWFlNjFkMS4uZjA5NzdhNDljZGQ5NTllYzk5MjVlYTdlNDU2Y2Iw
MDRmNTdjODI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTI0ICBCYWxh
enMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKworICAgICAgICBbUXRdIEltbGVtZW50
IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0byBjb252ZXJ0IGEgUUltYWdlIHRv
IGEgV0tJbWFnZSBzbyB3ZSBjYW4KKyAgICAgICAgcGFzcyBpdCB0byBjcm9zcy1wbGF0Zm9ybSBj
b2RlLgorCisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5jcHA6CisgICAgICAg
IChXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZSk6CisgICAgICAgICogU2hhcmVkL0FQSS9jL3F0L1dL
SW1hZ2VRdC5oOgorCiAyMDEyLTA5LTIzICBTZW9ranUgS3dvbiAgPHNlb2tqdS5rd29uQHNhbXN1
bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dLMl0gQWRkIHNldHRpbmcgdG8gdG9nZ2xlIGRldmVs
b3BlciBleHRlbnNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2Mv
cXQvV0tJbWFnZVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdl
UXQuY3BwCmluZGV4IGQwOTc1ZjY1MzBlMDdhMTU0ODBjZWVhYzcwZTAwYzRiNTcwM2U4YTMuLjYw
Mzg4ZjRmYTI3ZTFmYzMyM2FiMjViNjdlNTg4MWExNWMyNDU2OTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuY3BwCkBAIC0yNSwxMCArMjUsMzAgQEAKICNp
bmNsdWRlICJTaGFyZWFibGVCaXRtYXAuaCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIK
ICNpbmNsdWRlICJXZWJJbWFnZS5oIgorI2luY2x1ZGUgPFFQYWludGVyPgorI2luY2x1ZGUgPFdl
YkNvcmUvR3JhcGhpY3NDb250ZXh0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9JbnRTaXplLmg+CiAK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogUUlt
YWdlIFdLSW1hZ2VDcmVhdGVRSW1hZ2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICByZXR1
cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCktPmNyZWF0ZVFJbWFnZSgpLmNvcHkoKTsKIH0K
KworV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdl
KQoreworICAgIGlmIChpbWFnZS5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBB
U1NFUlQoaW1hZ2UuYnl0ZXNQZXJMaW5lKCkgPT0gaW1hZ2Uud2lkdGgoKSAqIDQpOworCisgICAg
UmVmUHRyPFdlYkltYWdlPiB3ZWJJbWFnZSA9IFdlYkltYWdlOjpjcmVhdGUoaW1hZ2Uuc2l6ZSgp
LCBzdGF0aWNfY2FzdDxJbWFnZU9wdGlvbnM+KDApKTsKKyAgICBpZiAoIXdlYkltYWdlLT5iaXRt
YXAoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4dD4gZ3Jh
cGhpY3NDb250ZXh0ID0gd2ViSW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVHcmFwaGljc0NvbnRleHQo
KTsKKyAgICBRUGFpbnRlciogcGFpbnRlciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CisgICAgcGFpbnRlci0+ZHJhd0ltYWdlKFFQb2ludCgwLCAwKSwgaW1hZ2UpOworICAg
IHJldHVybiB0b0FQSSh3ZWJJbWFnZS5yZWxlYXNlKCkubGVha1JlZigpKTsKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC9XS0ltYWdlUXQuaAppbmRleCAxZTUwNzNhMDhjYjM0MDUy
OThiYzM0NjFiNjRhZmFlN2VlOTU3YmQzLi41YWJlZjQ4MTgzMDg3YWM1NTY5MTVmY2IyNjY4MTQ3
NjY4NzM1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvcXQvV0tJ
bWFnZVF0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL3F0L1dLSW1hZ2VRdC5o
CkBAIC0yNyw1ICsyNyw2IEBACiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlLmg+CiAKIFdLX0VY
UE9SVCBRSW1hZ2UgV0tJbWFnZUNyZWF0ZVFJbWFnZShXS0ltYWdlUmVmIGltYWdlKTsKK1dLX0VY
UE9SVCBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKGNvbnN0IFFJbWFnZSYgaW1h
Z2UpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCA1ZTZjZGU5N2JmZmRhMWI1ODgyZTBlNWI4MzJhNjQ0MmNkYzhkYzhkLi43MzRm
MjAxYmI3MWZjYjk1MTMwNDdjNzA1ODg5YWExZTI3NzJhYmVmIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTkgQEAKKzIwMTItMDkt
MjQgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisgICAgICAgIFtRdF0g
SW1sZW1lbnQgcGl4ZWwgc25hcHNob3QgZ2VuZXJhdGlvbiBpbiBXVFIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSS4gTWFkZSBXVFIgc3VpdGFibGUgZm9y
IHBsYXRmb3JtcyB0aGF0IHdhbnQgdG8gZm9yY2UgYSByZXBhaW50CisgICAgICAgIGF0IHRoZSBl
bmQgb2YgdGhlIHRlc3QgYmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0LiBQb3N0cG9uZQor
ICAgICAgICBmaW5pc2hpbmcgdGhlIHRlc3QgYWZ0ZXIgd2UgZ290IHRoZSBwaXhlbHMuCisKKyAg
ICAgICAgSUkuIFN3aXRjaCB0aGUgUXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBsYXRmb3JtV2Vi
VmlldyB0byB1c2UKKyAgICAgICAgUVF1aWNrV2luZG93OjpncmFiV2luZG93IHRvIGdlbmVyYXRl
IHRoZSBwaXhlbCByZXN1bHRzLiBUaGlzIHdheQorICAgICAgICB3ZSB3aWxsIGdvIHRocm91Z2gg
dGhlIHNjZW5lZ3JhcGggYW5kIHRlc3QgdGhlIGFjdHVhbCByZW5kZXJpbmcgYmFja2VuZC4KKwor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRp
b246OlRlc3RJbnZvY2F0aW9uKToKKyAgICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246Omludm9r
ZSk6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpkdW1wKTogRG9uJ3QgY2xvc2Ugb3V0
cHV0IGNoYW5uZWxzIHlldCBleGNlcHQKKyAgICAgICAgd2hlbiB3ZSBkdW1wIGFmdGVyIGFuIGVy
cm9yLiBJdCB3aWxsIGJlIGRvbmUgaW4gZmluaXNoIGFmdGVyIHdlIGFyZQorICAgICAgICBkb25l
IHdpdGggdGhlIHBpeGVsIHJlc3VsdC4KKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlRl
c3RJbnZvY2F0aW9uOjpmaW5pc2gpOgorICAgICAgICAoV1RSOjpUZXN0SW52b2NhdGlvbjo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUpOgorICAgICAgICAqIFdlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uaDoKKyAgICAgICAgKFRlc3RJbnZvY2F0aW9uKToKKyAgICAg
ICAgKFdUUjo6VGVzdEludm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjayk6CisgICAg
ICAgICogV2ViS2l0VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcDoKKyAg
ICAgICAgKFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRG
aW5pc2gpOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5j
cHA6CisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjpjb21wYXJlUGl4ZWxzV2l0aEV4cGVj
dGVkQW5kRmluaXNoKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2Vi
Vmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6V3JhcHBlcldpbmRvdyk6
CisgICAgICAgIChXcmFwcGVyV2luZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6
c25hcHNob3RJbWFnZSk6CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6On5XcmFwcGVyV2lu
ZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6aGFuZGxlU3RhdHVzQ2hhbmdlZCk6
CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6Om9uQmVmb3JlUmVuZGVyaW5nKToKKyAgICAg
ICAgKFdUUik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJ
bWFnZSk6CisgICAgICAgIEdyYWIgcGl4ZWxzIHdpdGggUXVpY2tXaW5kb3c6OmdyYWJXaW5kb3cu
IFdlIHVzZSBzZXRSZW5kZXJXaXRob3V0U2hvd2luZworICAgICAgICBhbmQgYSBmcmFtZSBidWZm
ZXIgb2JqZWN0IHRvIGF2b2lkIHRoZSBuZWVkIG9mIHNob3dpbmcgdGhlIHdpbmRvdy4KKyAgICAg
ICAgKiBXZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9uUXQuY3BwOgorICAgICAgICAo
Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKToKKyAgICAgICAgKFdUUjo6Rm9yY2VSZXBhaW50RG9u
ZVdhdGNoRG9nOjpleHBlY3RpbmdDYWxsYmFjayk6CisgICAgICAgIChXVFIpOgorICAgICAgICAo
V1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OkZvcmNlUmVwYWludERvbmVXYXRjaERvZyk6
CisgICAgICAgIChXVFI6OkZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6c3RhcnQpOgorICAgICAg
ICAoV1RSOjpGb3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OnN0b3ApOgorICAgICAgICAoV1RSOjpG
b3JjZVJlcGFpbnREb25lV2F0Y2hEb2c6OnRpbWVyRXZlbnQpOgorICAgICAgICAoV1RSOjpUZXN0
SW52b2NhdGlvbjo6Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaCk6CisgICAgICAg
IChXVFI6OlRlc3RJbnZvY2F0aW9uOjpmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2spOgorICAgICAg
ICAqIFdlYktpdFRlc3RSdW5uZXIvd2luL1Rlc3RJbnZvY2F0aW9uV2luLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2gp
OgorCiAyMDEyLTA5LTIyICBEb21pbmljIE1henpvbmkgIDxkbWF6em9uaUBnb29nbGUuY29tPgog
CiAgICAgICAgIEFYOiBMYXlvdXQgdGVzdHMgd291bGQgYmUgZWFzaWVyIHRvIHdyaXRlIGlmIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyIGNvdWxkIGZpbmQgYW4gZWxlbWVudCBieSBpZApkaWZmIC0t
Z2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UYXJnZXQucHJpCmluZGV4IDNjNDdjYWIzOGExYmE3MjA5MDVkNmNmNzdiODQxZjc4
Y2Y0OGY2MDYuLjgxMTFjYjNmZGNmYzJjYWZmZTFlNjliOGY4Y2Q5MmViMDFhODExMGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL1RhcmdldC5wcmkKQEAgLTMxLDcgKzMxLDcgQEAgU09VUkNFUyArPSBcCiAK
IERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKLVFUID0gY29yZSBndWkgZ3VpLXBy
aXZhdGUgd2lkZ2V0cyBuZXR3b3JrIHRlc3RsaWIgcXVpY2sgcXVpY2stcHJpdmF0ZSB3ZWJraXQK
K1FUID0gY29yZSBjb3JlLXByaXZhdGUgZ3VpIGd1aS1wcml2YXRlIHdpZGdldHMgbmV0d29yayB0
ZXN0bGliIHF1aWNrIHF1aWNrLXByaXZhdGUgcW1sLXByaXZhdGUgdjgtcHJpdmF0ZSB3ZWJraXQK
IAogV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29yZSB3ZWJraXQyCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwIGIvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKaW5kZXggNDQ5YzFiMGQzMDRjN2MyMjVjOTZkODdi
NDY1M2I4ZWE0ZDMyNmM2Mi4uYzk5YjFhOGU3NzZmN2NjOWUxN2JhZGRmYWE2YzYzMjEyNGI5YjMw
ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAK
KysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0SW52b2NhdGlvbi5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCBUZXN0SW52b2NhdGlvbjo6VGVzdEludm9jYXRpb24oY29uc3Qgc3RkOjpzdHJp
bmcmIHBhdGhPclVSTCkKICAgICAsIG1fcGF0aE9yVVJMKHBhdGhPclVSTCkKICAgICAsIG1fZHVt
cFBpeGVscyhmYWxzZSkKICAgICAsIG1fZ290SW5pdGlhbFJlc3BvbnNlKGZhbHNlKQotICAgICwg
bV9nb3RGaW5hbE1lc3NhZ2UoZmFsc2UpCisgICAgLCBtX2ZpbmlzaGVkKGZhbHNlKQogICAgICwg
bV9nb3RSZXBhaW50KGZhbHNlKQogICAgICwgbV9lcnJvcihmYWxzZSkKIHsKQEAgLTE4Miw4ICsx
ODIsOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogCiAgICAgV0tQYWdlTG9hZFVS
TChUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+cGFnZSgpLCBtX3VybC5n
ZXQoKSk7CiAKLSAgICBUZXN0Q29udHJvbGxlcjo6c2hhcmVkKCkucnVuVW50aWwobV9nb3RGaW5h
bE1lc3NhZ2UsIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS51c2VXYWl0VG9EdW1wV2F0Y2hkb2dU
aW1lcigpID8gVGVzdENvbnRyb2xsZXI6OkxvbmdUaW1lb3V0IDogVGVzdENvbnRyb2xsZXI6Ok5v
VGltZW91dCk7Ci0gICAgaWYgKCFtX2dvdEZpbmFsTWVzc2FnZSkgeworICAgIFRlc3RDb250cm9s
bGVyOjpzaGFyZWQoKS5ydW5VbnRpbChtX2ZpbmlzaGVkLCBUZXN0Q29udHJvbGxlcjo6c2hhcmVk
KCkudXNlV2FpdFRvRHVtcFdhdGNoZG9nVGltZXIoKSA/IFRlc3RDb250cm9sbGVyOjpMb25nVGlt
ZW91dCA6IFRlc3RDb250cm9sbGVyOjpOb1RpbWVvdXQpOworICAgIGlmICghbV9maW5pc2hlZCkg
ewogICAgICAgICBlcnJvck1lc3NhZ2UgPSAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIGZpbmFsIG1l
c3NhZ2UgZnJvbSB3ZWIgcHJvY2Vzc1xuIjsKICAgICAgICAgZ290byBlbmQ7CiAgICAgfQpAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBXZWJQcm9jZXNzVW5yZXNw
b25zaXZlbmVzcyhjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQpCiAgICAgZHVtcCh0ZXh0VG9TdGRv
dXQsIGVycm9yTWVzc2FnZVRvU3RkZXJyLCB0cnVlKTsKIH0KIAotdm9pZCBUZXN0SW52b2NhdGlv
bjo6ZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVy
ciwgYm9vbCBzZWVuRXJyb3IpCit2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wKGNvbnN0IGNoYXIq
IHRleHRUb1N0ZG91dCwgY29uc3QgY2hhciogdGV4dFRvU3RkZXJyLCBib29sIGNsb3NlT3V0cHV0
Q2hhbm5lbHMpCiB7CiAgICAgcHJpbnRmKCJDb250ZW50LVR5cGU6IHRleHQvcGxhaW5cbiIpOwog
ICAgIGlmICh0ZXh0VG9TdGRvdXQpCkBAIC0yMjgsOSArMjI4LDIzIEBAIHZvaWQgVGVzdEludm9j
YXRpb246OmR1bXAoY29uc3QgY2hhciogdGV4dFRvU3Rkb3V0LCBjb25zdCBjaGFyKiB0ZXh0VG9T
dGRlcnIsIGJvCiAgICAgICAgIGZwdXRzKHRleHRUb1N0ZGVyciwgc3RkZXJyKTsKIAogICAgIGZw
dXRzKCIjRU9GXG4iLCBzdGRvdXQpOwotICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRlcnIpOwotICAg
IGlmIChzZWVuRXJyb3IpCisKKyAgICBpZiAoY2xvc2VPdXRwdXRDaGFubmVscykgeworICAgICAg
ICBmcHV0cygiI0VPRlxuIiwgc3RkZXJyKTsKICAgICAgICAgZnB1dHMoIiNFT0ZcbiIsIHN0ZG91
dCk7CisgICAgfQorCisgICAgZmZsdXNoKHN0ZG91dCk7CisgICAgZmZsdXNoKHN0ZGVycik7Cit9
CisKK3ZvaWQgVGVzdEludm9jYXRpb246OmZpbmlzaCgpCit7CisgICAgbV9maW5pc2hlZCA9IHRy
dWU7CisgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKKworICAgIGZw
dXRzKCIjRU9GXG4iLCBzdGRlcnIpOworICAgIGZwdXRzKCIjRU9GXG4iLCBzdGRvdXQpOwogICAg
IGZmbHVzaChzdGRvdXQpOwogICAgIGZmbHVzaChzdGRlcnIpOwogfQpAQCAtMjU1LDcgKzI2OSw3
IEBAIHZvaWQgVGVzdEludm9jYXRpb246OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVu
ZGxlKFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lCiAgICAgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRG
OENTdHJpbmcobWVzc2FnZU5hbWUsICJFcnJvciIpKSB7CiAgICAgICAgIC8vIFNldCBhbGwgc3Rh
dGVzIHRvIHRydWUgdG8gc3RvcCBzcGlubmluZyB0aGUgcnVubG9vcC4KICAgICAgICAgbV9nb3RJ
bml0aWFsUmVzcG9uc2UgPSB0cnVlOwotICAgICAgICBtX2dvdEZpbmFsTWVzc2FnZSA9IHRydWU7
CisgICAgICAgIG1fZmluaXNoZWQgPSB0cnVlOwogICAgICAgICBtX2Vycm9yID0gdHJ1ZTsKICAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMjkyLDE0ICszMDYsMTAgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUKIAogICAg
ICAgICAvLyBEdW1wIHBpeGVscyAoaWYgbmVjZXNzYXJ5KS4KICAgICAgICAgaWYgKG1fZHVtcFBp
eGVscyAmJiBwaXhlbFJlc3VsdCkKLSAgICAgICAgICAgIGR1bXBQaXhlbHNBbmRDb21wYXJlV2l0
aEV4cGVjdGVkKHBpeGVsUmVzdWx0LCByZXBhaW50UmVjdHMpOworICAgICAgICAgICAgY29tcGFy
ZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChwaXhlbFJlc3VsdCwgcmVwYWludFJlY3RzKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmluaXNoKCk7CiAKLSAgICAgICAgZnB1dHMoIiNF
T0ZcbiIsIHN0ZG91dCk7Ci0gICAgICAgIGZmbHVzaChzdGRvdXQpOwotICAgICAgICBmZmx1c2go
c3RkZXJyKTsKLSAgICAgICAgCi0gICAgICAgIG1fZ290RmluYWxNZXNzYWdlID0gdHJ1ZTsKLSAg
ICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm5vdGlmeURvbmUoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dEludm9jYXRpb24uaCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uaApp
bmRleCA0OTY0MWU5ZWU0M2U3ODljZDk1OWY0YjRkZGFiZTQ2OGNmOTYzODNiLi5kYmVkZDc4ODhi
YzI4YjhkZmVjYmNjODA0Zjk1YmY1YzQwZDVkMWIxIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmgKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5oCkBAIC00Niw5ICs0NiwxOSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCBkdW1wV2ViUHJvY2Vzc1VucmVzcG9uc2l2ZW5lc3MoY29uc3QgY2hhciogdGV4dFRvU3Rk
b3V0KTsKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9T
dGRvdXQsIGNvbnN0IGNoYXIqIHRleHRUb1N0ZGVyciA9IDAsIGJvb2wgc2VlbkVycm9yID0gZmFs
c2UpOwotICAgIHZvaWQgZHVtcFBpeGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJl
ZiwgV0tBcnJheVJlZiByZXBhaW50UmVjdHMpOworICAgIHZvaWQgZmluaXNoKCk7CisgICAgc3Rh
dGljIHZvaWQgZHVtcChjb25zdCBjaGFyKiB0ZXh0VG9TdGRvdXQsIGNvbnN0IGNoYXIqIHRleHRU
b1N0ZGVyciA9IDAsIGJvb2wgY2xvc2VPdXRwdXRDaGFubmVscyA9IGZhbHNlKTsKKyAgICB2b2lk
IGNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJbWFnZVJlZiwgV0tBcnJheVJl
ZiByZXBhaW50UmVjdHMpOwogICAgIGJvb2wgY29tcGFyZUFjdHVhbEhhc2hUb0V4cGVjdGVkQW5k
RHVtcFJlc3VsdHMoY29uc3QgY2hhclszM10pOworCisgICAgLy8gU29tZSBwbGF0Zm9ybXMgbWln
aHQgd2FudCB0byBmb3JjZSBhIHJlcGFpbnQgYmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0
LgorICAgIHN0YXRpYyB2b2lkIGZvcmNlUmVwYWludERvbmVDYWxsYmFjayhXS0Vycm9yUmVmLCB2
b2lkKiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxUZXN0SW52b2Nh
dGlvbio+KGNvbnRleHQpLT5mb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soKTsKKyAgICB9CisgICAg
dm9pZCBmb3JjZVJlcGFpbnREb25lQ2FsbGJhY2soKTsKKworICAgIGZyaWVuZCBjbGFzcyBGb3Jj
ZVJlcGFpbnREb25lV2F0Y2hEb2c7CiAgICAgCiAgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IG1f
dXJsOwogICAgIHN0ZDo6c3RyaW5nIG1fcGF0aE9yVVJMOwpAQCAtNTgsNyArNjgsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gSW52b2NhdGlvbiBzdGF0ZQogICAgIGJvb2wgbV9nb3RJbml0aWFsUmVz
cG9uc2U7Ci0gICAgYm9vbCBtX2dvdEZpbmFsTWVzc2FnZTsKKyAgICBib29sIG1fZmluaXNoZWQ7
CiAgICAgYm9vbCBtX2dvdFJlcGFpbnQ7CiAgICAgYm9vbCBtX2Vycm9yOwogfTsKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2NhaXJvL1Rlc3RJbnZvY2F0aW9uQ2Fpcm8uY3BwCmlu
ZGV4IGQzZmJmZDJlZjJkZjQ3MDRhYWY0YTEzZjAxNGI5MzJjYzBhMDcyYWEuLjZkZjM1YTZjMjE4
Zjc0ODYzZTM4MTgyN2E0MDA3ZmNhNTQ5NDQ4ODMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvY2Fpcm8vVGVzdEludm9jYXRpb25DYWlyby5jcHAKKysrIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9jYWlyby9UZXN0SW52b2NhdGlvbkNhaXJvLmNwcApAQCAtNzcsNyArNzcsNyBA
QCBzdGF0aWMgdm9pZCBkdW1wQml0bWFwKGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgY29uc3Qg
Y2hhciogY2hlY2tzdW0pCiAgICAgcHJpbnRQTkcoZGF0YSwgZGF0YUxlbmd0aCwgY2hlY2tzdW0p
OwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChXS0ltYWdlUmVmIHdrSW1hZ2UsIFdLQXJyYXlSZWYgLypyZXBhaW50UmVjdHMqLykKK3Zv
aWQgVGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJ
bWFnZVJlZiB3a0ltYWdlLCBXS0FycmF5UmVmIC8qcmVwYWludFJlY3RzKi8pCiB7CiAgICAgY2Fp
cm9fc3VyZmFjZV90KiBzdXJmYWNlID0gV0tJbWFnZUNyZWF0ZUNhaXJvU3VyZmFjZSh3a0ltYWdl
KTsKIApAQCAtODcsNiArODcsOCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5k
Q29tcGFyZVdpdGhFeHBlY3RlZChXS0ltYWdlUmVmIHdrSW1hZ2UsIFdLQXJyYQogICAgICAgICBk
dW1wQml0bWFwKHN1cmZhY2UsIGFjdHVhbEhhc2gpOwogCiAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0
cm95KHN1cmZhY2UpOworCisgICAgZmluaXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNw
cCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvY2cvVGVzdEludm9jYXRpb25DRy5jcHAKaW5kZXgg
NWI2OGRhYzVjNTRkNDYxZTBhMzRmYjQ2NDlmMjJjMGMzNTVkYWY1Ny4uZTEzZjFlZDQ3ODUyZjQ1
Yzc5MzVkZTM3YzBhOGE4MjkxNGJmNDZhOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9jZy9UZXN0SW52b2NhdGlvbkNHLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L2NnL1Rlc3RJbnZvY2F0aW9uQ0cuY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQg
cGFpbnRSZXBhaW50UmVjdE92ZXJsYXkoQ0dDb250ZXh0UmVmIGNvbnRleHQsIFdLSW1hZ2VSZWYg
aW1hZ2UsIFdLQXIKICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwogfQogCi12
b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBlY3RlZChXS0lt
YWdlUmVmIGltYWdlLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKK3ZvaWQgVGVzdEludm9jYXRp
b246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJbWFnZVJlZiBpbWFnZSwg
V0tBcnJheVJlZiByZXBhaW50UmVjdHMpCiB7CiAgICAgUGxhdGZvcm1XZWJWaWV3KiB3ZWJWaWV3
ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCk7CiAgICAgV0tSZXRhaW5Q
dHI8V0tJbWFnZVJlZj4gd2luZG93U25hcHNob3QgPSB3ZWJWaWV3LT53aW5kb3dTbmFwc2hvdElt
YWdlKCk7CkBAIC0xNzcsNiArMTc3LDggQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBpeGVs
c0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiBpbWFnZSwgV0tBcnJheVIKICAgICBj
b21wdXRlTUQ1SGFzaFN0cmluZ0ZvckNvbnRleHQoY29udGV4dC5nZXQoKSwgYWN0dWFsSGFzaCk7
CiAgICAgaWYgKCFjb21wYXJlQWN0dWFsSGFzaFRvRXhwZWN0ZWRBbmREdW1wUmVzdWx0cyhhY3R1
YWxIYXNoKSkKICAgICAgICAgZHVtcEJpdG1hcChjb250ZXh0LmdldCgpLCBhY3R1YWxIYXNoKTsK
KworICAgIGZpbmlzaCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggMjJlM2ZjNTk2OGVm
ZjEzYzZkMjM5OTc5YmI1YzQ2MGViYzEwZWNlNi4uY2NkNTkzNjU1ZDg5MWZkNmYxYjQ0ZDQzNDNm
OGQ5OWRmNDk3MGYxZiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0
Zm9ybVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9y
bVdlYlZpZXdRdC5jcHAKQEAgLTMzLDggKzMzLDEyIEBACiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNh
dGlvbj4KICNpbmNsdWRlIDxRRXZlbnRMb29wPgogI2luY2x1ZGUgPFFRbWxQcm9wZXJ0eT4KKyNp
bmNsdWRlIDxRdEd1aS9xb3BlbmdsZnJhbWVidWZmZXJvYmplY3QuaD4KICNpbmNsdWRlIDxRdFF1
aWNrL1FRdWlja1ZpZXc+CisjaW5jbHVkZSA8UXRRdWljay9wcml2YXRlL3FxdWlja3dpbmRvd19w
Lmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0ltYWdlUXQuaD4KICNpbmNsdWRlIDxxcGEvcXdpbmRv
d3N5c3RlbWludGVyZmFjZS5oPgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVz
cGFjZSBXVFIgewogCkBAIC00NCw4ICs0OCwyMSBAQCBwdWJsaWM6CiAgICAgV3JhcHBlcldpbmRv
dyhRUXVpY2tXZWJWaWV3KiB2aWV3KQogICAgICAgICA6IFFRdWlja1ZpZXcoUVVybCgiZGF0YTp0
ZXh0L3BsYWluLGltcG9ydCBRdFF1aWNrIDIuMFxuSXRlbSB7IG9iamVjdE5hbWU6ICdyb290JyB9
IikpCiAgICAgICAgICwgbV92aWV3KHZpZXcpCisgICAgICAgICwgbV9mYm8oMCkKICAgICB7CiAg
ICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHN0YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6U3Rh
dHVzKSksIFNMT1QoaGFuZGxlU3RhdHVzQ2hhbmdlZChRUXVpY2tWaWV3OjpTdGF0dXMpKSk7Cisg
ICAgICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGJlZm9yZVJlbmRlcmluZygpKSwgU0xPVChvbkJl
Zm9yZVJlbmRlcmluZygpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgIH0KKworICAgIFFJ
bWFnZSBzbmFwc2hvdEltYWdlKCkKKyAgICB7CisgICAgICAgIGdyYWJXaW5kb3coKTsKKyAgICAg
ICAgcmV0dXJuIG1fZmJvID8gbV9mYm8tPnRvSW1hZ2UoKSA6IFFJbWFnZSgpOworICAgIH0KKwor
ICAgIH5XcmFwcGVyV2luZG93KCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtX2ZibzsKICAgICB9
CiAKIHByaXZhdGUgUV9TTE9UUzoKQEAgLTU0LDYgKzcxLDExIEBAIHByaXZhdGUgUV9TTE9UUzoK
ICAgICAgICAgaWYgKHN0YXR1cyAhPSBRUXVpY2tWaWV3OjpSZWFkeSkKICAgICAgICAgICAgIHJl
dHVybjsKIAorICAgICAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICAgICAg
Y3JlYXRlKCk7CisKKyAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHRoaXMpLT5zZXRS
ZW5kZXJXaXRob3V0U2hvd2luZyh0cnVlKTsKKwogICAgICAgICBzZXRHZW9tZXRyeSgwLCAwLCA4
MDAsIDYwMCk7CiAKICAgICAgICAgc2V0UmVzaXplTW9kZShRUXVpY2tWaWV3OjpTaXplUm9vdE9i
amVjdFRvVmlldyk7CkBAIC02NCwxMCArODYsMjcgQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgICAg
ICBtX3ZpZXctPnBhZ2UoKS0+c2V0Rm9jdXModHJ1ZSk7CiAgICAgfQogCisgICAgdm9pZCBvbkJl
Zm9yZVJlbmRlcmluZygpOworCiBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXcqIG1fdmlldzsK
KyAgICBRT3BlbkdMRnJhbWVidWZmZXJPYmplY3QqIG1fZmJvOwogfTsKIAordm9pZCBXcmFwcGVy
V2luZG93OjpvbkJlZm9yZVJlbmRlcmluZygpCit7CisgICAgaWYgKG1fZmJvICYmIG1fZmJvLT5z
aXplKCkgPT0gc2l6ZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fZmJvKSB7CisgICAg
ICAgIG1fZmJvLT5yZWxlYXNlKCk7CisgICAgICAgIGRlbGV0ZSBtX2ZibzsKKyAgICB9CisgICAg
bV9mYm8gPSBuZXcgUU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0KHNpemUoKSk7CisgICAgbV9mYm8t
PmJpbmQoKTsKKyAgICBzZXRSZW5kZXJUYXJnZXQobV9mYm8pOworCit9CisKIFBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBtX3ZpZXcobmV3IFFRdWlja1dlYlZpZXcoY29udGV4
dFJlZiwgcGFnZUdyb3VwUmVmKSkKICAgICAsIG1fd2luZG93KG5ldyBXcmFwcGVyV2luZG93KG1f
dmlldykpCkBAIC0xNTAsOSArMTg5LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJW
aWV3Rmlyc3RSZXNwb25kZXIoKQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdl
YlZpZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQg
dG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hpY2ggbWF5IGJl
IG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKHFvYmplY3RfY2FzdDxX
cmFwcGVyV2luZG93Kj4obV93aW5kb3cpLT5zbmFwc2hvdEltYWdlKCkpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXVFIKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdElu
dm9jYXRpb25RdC5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1Rlc3RJbnZvY2F0aW9u
UXQuY3BwCmluZGV4IDAxNjMwZDk4YTZmM2I1MTViOTllMDM4ODFmYjU2YjYyY2U2NmU2OWEuLjYw
MjIxZDhkMjJlNDA0MWM3YzI5OTU2OTU5Y2ZkZTRkYmUzYTMwMTIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvVGVzdEludm9jYXRpb25RdC5jcHAKKysrIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9UZXN0SW52b2NhdGlvblF0LmNwcApAQCAtMjQsOSArMjQsMTAgQEAK
ICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJUZXN0SW52b2NhdGlvbi5o
IgogCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdENvbnRyb2xs
ZXIuaCIKICNpbmNsdWRlIDxRQnVmZmVyPgogI2luY2x1ZGUgPFFDcnlwdG9ncmFwaGljSGFzaD4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VRdC5oPgpAQCAtNjIsMTIgKzYzLDc1IEBAIHN0YXRp
YyB2b2lkIGR1bXBJbWFnZShjb25zdCBRSW1hZ2UmIGltYWdlKQogICAgIGZmbHVzaChzdGRvdXQp
OwogfQogCi12b2lkIFRlc3RJbnZvY2F0aW9uOjpkdW1wUGl4ZWxzQW5kQ29tcGFyZVdpdGhFeHBl
Y3RlZChXS0ltYWdlUmVmIGltYWdlUmVmLCBXS0FycmF5UmVmIHJlcGFpbnRSZWN0cykKK2NsYXNz
IEZvcmNlUmVwYWludERvbmVXYXRjaERvZyA6IHB1YmxpYyBRT2JqZWN0IHsKKyAgICBRX09CSkVD
VAorcHVibGljOgorICAgIEZvcmNlUmVwYWludERvbmVXYXRjaERvZyhUZXN0SW52b2NhdGlvbiog
Y2xpZW50KTsKKyAgICB2b2lkIHN0YXJ0KCk7CisgICAgdm9pZCBzdG9wKCk7CisgICAgYm9vbCBl
eHBlY3RpbmdDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZXhwZWN0aW5nQ2FsbGJhY2s7IH0K
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKKwor
ICAgIFRlc3RJbnZvY2F0aW9uKiBtX2NsaWVudDsKKyAgICBib29sIG1fZXhwZWN0aW5nQ2FsbGJh
Y2s7CisgICAgaW50IG1fdGltZXJJRDsKK307CisKK0ZvcmNlUmVwYWludERvbmVXYXRjaERvZzo6
Rm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nKFRlc3RJbnZvY2F0aW9uKiBjbGllbnQpCisgICAgOiBt
X2NsaWVudChjbGllbnQpCisgICAgLCBtX2V4cGVjdGluZ0NhbGxiYWNrKGZhbHNlKQorICAgICwg
bV90aW1lcklEKDApCit7Cit9CisKK3ZvaWQgRm9yY2VSZXBhaW50RG9uZVdhdGNoRG9nOjpzdGFy
dCgpCiB7Ci0gICAgLy9GSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY4ODcwCi0gICAgVU5VU0VEX1BBUkFNKHJlcGFpbnRSZWN0cyk7CisgICAgY29uc3QgaW50
IHRpbWVvdXRNaWxsaXMgPSAyMDAwOworICAgIG1fdGltZXJJRCA9IHN0YXJ0VGltZXIodGltZW91
dE1pbGxpcyk7CisgICAgbV9leHBlY3RpbmdDYWxsYmFjayA9IHRydWU7Cit9CisKK3ZvaWQgRm9y
Y2VSZXBhaW50RG9uZVdhdGNoRG9nOjpzdG9wKCkKK3sKKyAgICBraWxsVGltZXIobV90aW1lcklE
KTsKKyAgICBtX2V4cGVjdGluZ0NhbGxiYWNrID0gZmFsc2U7Cit9CisKK3ZvaWQgRm9yY2VSZXBh
aW50RG9uZVdhdGNoRG9nOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KikKK3sKKyAgICBraWxsVGlt
ZXIobV90aW1lcklEKTsKKyAgICBtX2V4cGVjdGluZ0NhbGxiYWNrID0gZmFsc2U7CisgICAgbV9j
bGllbnQtPmZvcmNlUmVwYWludERvbmVDYWxsYmFjaygpOworfQorCitzdGF0aWMgRm9yY2VSZXBh
aW50RG9uZVdhdGNoRG9nKiBzX3dhdGNoRG9nID0gMDsKKwordm9pZCBUZXN0SW52b2NhdGlvbjo6
Y29tcGFyZVBpeGVsc1dpdGhFeHBlY3RlZEFuZEZpbmlzaChXS0ltYWdlUmVmIGltYWdlUmVmLCBX
S0FycmF5UmVmIHJlcGFpbnRSZWN0cykKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZSA9IFRlc3RDb250
cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5wYWdlKCk7CisgICAgV0tQYWdlRm9yY2VS
ZXBhaW50KHBhZ2UsIHRoaXMsIGZvcmNlUmVwYWludERvbmVDYWxsYmFjayk7CisKKyAgICBpZiAo
IXNfd2F0Y2hEb2cpCisgICAgICAgIHNfd2F0Y2hEb2cgPSBuZXcgRm9yY2VSZXBhaW50RG9uZVdh
dGNoRG9nKHRoaXMpOworICAgIHNfd2F0Y2hEb2ctPnN0YXJ0KCk7Cit9CisKK3ZvaWQgVGVzdElu
dm9jYXRpb246OmZvcmNlUmVwYWludERvbmVDYWxsYmFjaygpCit7CisgICAgUUltYWdlIGltYWdl
OworICAgIEFTU0VSVChzX3dhdGNoRG9nKTsKKyAgICBpZiAoc193YXRjaERvZy0+ZXhwZWN0aW5n
Q2FsbGJhY2soKSkgeworICAgICAgICBzX3dhdGNoRG9nLT5zdG9wKCk7CisgICAgICAgIFdLUmV0
YWluUHRyPFdLSW1hZ2VSZWY+IHdpbmRvd1NuYXBzaG90ID0gVGVzdENvbnRyb2xsZXI6OnNoYXJl
ZCgpLm1haW5XZWJWaWV3KCktPndpbmRvd1NuYXBzaG90SW1hZ2UoKTsKKyAgICAgICAgaW1hZ2Ug
PSBXS0ltYWdlQ3JlYXRlUUltYWdlKHdpbmRvd1NuYXBzaG90LmdldCgpKTsKKyAgICB9IGVsc2Ug
eworICAgICAgICAvLyBUaGUgdGVzdCBoYXJuZXNzIGV4cGVjdHMgYW4gaW1hZ2Ugc28gd2Ugb3V0
cHV0IGFuIGVtcHR5IG9uZS4KKyAgICAgICAgV0tSZWN0IHdpbmRvd1JlY3QgPSBUZXN0Q29udHJv
bGxlcjo6c2hhcmVkKCkubWFpbldlYlZpZXcoKS0+d2luZG93RnJhbWUoKTsKKyAgICAgICAgaW1h
Z2UgPSBRSW1hZ2UoUVNpemUod2luZG93UmVjdC5zaXplLndpZHRoLCB3aW5kb3dSZWN0LnNpemUu
aGVpZ2h0KSwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICBp
bWFnZS5maWxsKFF0OjpibGFjayk7CisgICAgfQogCi0gICAgUUltYWdlIGltYWdlID0gV0tJbWFn
ZUNyZWF0ZVFJbWFnZShpbWFnZVJlZik7CiAgICAgUUNyeXB0b2dyYXBoaWNIYXNoIGhhc2goUUNy
eXB0b2dyYXBoaWNIYXNoOjpNZDUpOwogICAgIGZvciAodW5zaWduZWQgcm93ID0gMDsgcm93IDwg
aW1hZ2UuaGVpZ2h0KCk7ICsrcm93KQogICAgICAgICBoYXNoLmFkZERhdGEocmVpbnRlcnByZXRf
Y2FzdDxjb25zdCBjaGFyKj4oaW1hZ2UuY29uc3RTY2FuTGluZShyb3cpKSwgaW1hZ2UuYnl0ZXNQ
ZXJMaW5lKCkpOwpAQCAtNzgsNiArMTQyLDEwIEBAIHZvaWQgVGVzdEludm9jYXRpb246OmR1bXBQ
aXhlbHNBbmRDb21wYXJlV2l0aEV4cGVjdGVkKFdLSW1hZ2VSZWYgaW1hZ2VSZWYsIFdLQXJyCiAg
ICAgICAgIGltYWdlLnNldFRleHQoImNoZWNrc3VtIiwgYWN0dWFsSGFzaCk7CiAgICAgICAgIGR1
bXBJbWFnZShpbWFnZSk7CiAgICAgfQorCisgICAgZmluaXNoKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdUUgorCisjaW5jbHVkZSAiVGVzdEludm9jYXRpb25RdC5tb2MiCmRpZmYgLS1naXQgYS9U
b29scy9XZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL3dpbi9UZXN0SW52b2NhdGlvbldpbi5jcHAKaW5kZXggODk0NWFhNjhh
M2IyYjBjNTJmNmVjMDE2ZjU1ZWE1N2FlZDBhODMwMi4uMzlmMDRhNWExOGYyYzk3ZDk5NmYyZWM2
Y2VhMzM1NTVhNWI2ZDNiNSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci93aW4v
VGVzdEludm9jYXRpb25XaW4uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvd2luL1Rl
c3RJbnZvY2F0aW9uV2luLmNwcApAQCAtMjksOCArMjksOSBAQAogbmFtZXNwYWNlIFdUUiB7CiAK
ICNpZiAhVVNFKENHKSAmJiAhVVNFKENBSVJPKQotdm9pZCBUZXN0SW52b2NhdGlvbjo6ZHVtcFBp
eGVsc0FuZENvbXBhcmVXaXRoRXhwZWN0ZWQoV0tJbWFnZVJlZiwgV0tBcnJheVJlZikKK3ZvaWQg
VGVzdEludm9jYXRpb246OmNvbXBhcmVQaXhlbHNXaXRoRXhwZWN0ZWRBbmRGaW5pc2goV0tJbWFn
ZVJlZiwgV0tBcnJheVJlZikKIHsKKyAgICBmaW5pc2goKTsKIH0KICNlbmRpZgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167553</attachid>
            <date>2012-10-08 10:00:46 -0700</date>
            <delta_ts>2012-10-12 01:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20121008185939.patch</filename>
            <type>text/plain</type>
            <size>4789</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNjQ1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTliMWI1OTc4Yzk4ODljY2I4NjM1ZGI1YmVhMGJhODVj
MmFkOGJiZC4uNzg4ZTM4ODU1MTA1NjgyZWE3NDAzNmU1ZDFmNmI4MGEyMDg0NGY0NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMx
IEBACiAyMDEyLTEwLTA4ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAor
ICAgICAgICBbUXRdIEltbGVtZW50IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0aGUg
UXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBsYXRmb3JtV2ViVmlldyB0byB1c2UKKyAgICAgICAg
UVF1aWNrV2luZG93OjpncmFiV2luZG93IHRvIGdlbmVyYXRlIHRoZSBwaXhlbCByZXN1bHRzLiBU
aGlzIHdheQorICAgICAgICB3ZSB3aWxsIGdvIHRocm91Z2ggdGhlIHNjZW5lZ3JhcGggYW5kIHRl
c3QgdGhlIGFjdHVhbCByZW5kZXJpbmcgYmFja2VuZC4KKyAgICAgICAgV2UgdXNlIFFRdWlja1dp
bmRvd1ByaXZhdGU6OnNldFJlbmRlcldpdGhvdXRTaG93aW5nIGFuZCBhIGZyYW1lIGJ1ZmZlcgor
ICAgICAgICBvYmplY3QgdG8gYXZvaWQgdGhlIG5lZWQgb2Ygc2hvd2luZyB0aGUgd2luZG93Lgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpOgorICAgICAgICBOZWVkZWQg
dG8gYWRkIGEgYnVuY2ggb2YgcHJpdmF0ZSBtb2R1bCBkZXBlbmRlbmNpZXMKKyAgICAgICAgdG8g
YmUgYWJsZSB0byB1c2UgUVF1aWNrV2luZG93UHJpdmF0ZS4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBlcldp
bmRvdzo6V3JhcHBlcldpbmRvdyk6CisgICAgICAgIChXcmFwcGVyV2luZG93KToKKyAgICAgICAg
KFdUUjo6V3JhcHBlcldpbmRvdzo6c25hcHNob3RJbWFnZSk6CisgICAgICAgIChXVFI6OldyYXBw
ZXJXaW5kb3c6On5XcmFwcGVyV2luZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6
aGFuZGxlU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6Om9uQmVm
b3JlUmVuZGVyaW5nKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisKKzIwMTItMTAtMDggIEJhbGF6cyBLZWxlbWVu
ICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCiAgICAgICAgIFtXVFJdW0Nvb3JkaW5hdGVkR3JhcGhp
Y3NdIERvIGEgZm9yY2VkIHJlcGFpbnQgYmVmb3JlIGdlbmVyYXRpbmcgcGl4ZWwgcmVzdWx0cwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2NTQKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpIGIvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCmluZGV4IDNjNDdjYWIzOGExYmE3MjA5MDVkNmNmNzdi
ODQxZjc4Y2Y0OGY2MDYuLjgxMTFjYjNmZGNmYzJjYWZmZTFlNjliOGY4Y2Q5MmViMDFhODExMGIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKQEAgLTMxLDcgKzMxLDcgQEAgU09VUkNFUyAr
PSBcCiAKIERFU1RESVIgPSAkJHtST09UX0JVSUxEX0RJUn0vYmluCiAKLVFUID0gY29yZSBndWkg
Z3VpLXByaXZhdGUgd2lkZ2V0cyBuZXR3b3JrIHRlc3RsaWIgcXVpY2sgcXVpY2stcHJpdmF0ZSB3
ZWJraXQKK1FUID0gY29yZSBjb3JlLXByaXZhdGUgZ3VpIGd1aS1wcml2YXRlIHdpZGdldHMgbmV0
d29yayB0ZXN0bGliIHF1aWNrIHF1aWNrLXByaXZhdGUgcW1sLXByaXZhdGUgdjgtcHJpdmF0ZSB3
ZWJraXQKIAogV0VCS0lUICs9IHd0ZiBqYXZhc2NyaXB0Y29yZSB3ZWJraXQyCiAKZGlmZiAtLWdp
dCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggNThiNTM3
Y2U4ZjUxY2E1NzE1ODI2M2Q4ZjY2ZGJiYjcwZGQ2Njg2ZC4uNDRhYmNkYjAyMzA5MWY2ZjI3YjM5
YTIwY2I4YWM1NjZkODYyMGFlMCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9Q
bGF0Zm9ybVdlYlZpZXdRdC5jcHAKQEAgLTMzLDcgKzMzLDkgQEAKICNpbmNsdWRlIDxRQ29yZUFw
cGxpY2F0aW9uPgogI2luY2x1ZGUgPFFFdmVudExvb3A+CiAjaW5jbHVkZSA8UVFtbFByb3BlcnR5
PgorI2luY2x1ZGUgPFF0R3VpL3FvcGVuZ2xmcmFtZWJ1ZmZlcm9iamVjdC5oPgogI2luY2x1ZGUg
PFF0UXVpY2svUVF1aWNrVmlldz4KKyNpbmNsdWRlIDxRdFF1aWNrL3ByaXZhdGUvcXF1aWNrd2lu
ZG93X3AuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLSW1hZ2VRdC5oPgogI2luY2x1ZGUgPHFwYS9x
d2luZG93c3lzdGVtaW50ZXJmYWNlLmg+CiAKQEAgLTQ1LDggKzQ3LDIxIEBAIHB1YmxpYzoKICAg
ICBXcmFwcGVyV2luZG93KFFRdWlja1dlYlZpZXcqIHZpZXcpCiAgICAgICAgIDogUVF1aWNrVmll
dyhRVXJsKCJkYXRhOnRleHQvcGxhaW4saW1wb3J0IFF0UXVpY2sgMi4wXG5JdGVtIHsgb2JqZWN0
TmFtZTogJ3Jvb3QnIH0iKSkKICAgICAgICAgLCBtX3ZpZXcodmlldykKKyAgICAgICAgLCBtX2Zi
bygwKQogICAgIHsKICAgICAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwoc3RhdHVzQ2hhbmdlZChR
UXVpY2tWaWV3OjpTdGF0dXMpKSwgU0xPVChoYW5kbGVTdGF0dXNDaGFuZ2VkKFFRdWlja1ZpZXc6
OlN0YXR1cykpKTsKKyAgICAgICAgY29ubmVjdCh0aGlzLCBTSUdOQUwoYmVmb3JlUmVuZGVyaW5n
KCkpLCBTTE9UKG9uQmVmb3JlUmVuZGVyaW5nKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7Cisg
ICAgfQorCisgICAgUUltYWdlIHNuYXBzaG90SW1hZ2UoKQorICAgIHsKKyAgICAgICAgZ3JhYldp
bmRvdygpOworICAgICAgICByZXR1cm4gbV9mYm8gPyBtX2Ziby0+dG9JbWFnZSgpIDogUUltYWdl
KCk7CisgICAgfQorCisgICAgfldyYXBwZXJXaW5kb3coKQorICAgIHsKKyAgICAgICAgZGVsZXRl
IG1fZmJvOwogICAgIH0KIAogcHJpdmF0ZSBRX1NMT1RTOgpAQCAtNTUsNiArNzAsMTEgQEAgcHJp
dmF0ZSBRX1NMT1RTOgogICAgICAgICBpZiAoc3RhdHVzICE9IFFRdWlja1ZpZXc6OlJlYWR5KQog
ICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHNldFN1cmZhY2VUeXBlKE9wZW5HTFN1cmZh
Y2UpOworICAgICAgICBjcmVhdGUoKTsKKworICAgICAgICBRUXVpY2tXaW5kb3dQcml2YXRlOjpn
ZXQodGhpcyktPnNldFJlbmRlcldpdGhvdXRTaG93aW5nKHRydWUpOworCiAgICAgICAgIHNldEdl
b21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsKIAogICAgICAgICBzZXRSZXNpemVNb2RlKFFRdWlja1Zp
ZXc6OlNpemVSb290T2JqZWN0VG9WaWV3KTsKQEAgLTY1LDEwICs4NSwyNyBAQCBwcml2YXRlIFFf
U0xPVFM6CiAgICAgICAgIG1fdmlldy0+cGFnZSgpLT5zZXRGb2N1cyh0cnVlKTsKICAgICB9CiAK
KyAgICB2b2lkIG9uQmVmb3JlUmVuZGVyaW5nKCk7CisKIHByaXZhdGU6CiAgICAgUVF1aWNrV2Vi
VmlldyogbV92aWV3OworICAgIFFPcGVuR0xGcmFtZWJ1ZmZlck9iamVjdCogbV9mYm87CiB9Owog
Cit2b2lkIFdyYXBwZXJXaW5kb3c6Om9uQmVmb3JlUmVuZGVyaW5nKCkKK3sKKyAgICBpZiAobV9m
Ym8gJiYgbV9mYm8tPnNpemUoKSA9PSBzaXplKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9mYm8pIHsKKyAgICAgICAgbV9mYm8tPnJlbGVhc2UoKTsKKyAgICAgICAgZGVsZXRlIG1fZmJv
OworICAgIH0KKyAgICBtX2ZibyA9IG5ldyBRT3BlbkdMRnJhbWVidWZmZXJPYmplY3Qoc2l6ZSgp
KTsKKyAgICBtX2Ziby0+YmluZCgpOworICAgIHNldFJlbmRlclRhcmdldChtX2Zibyk7CisKK30K
KwogUGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAgICA6IG1fdmlldyhuZXcgUVF1aWNr
V2ViVmlldyhjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYpKQogICAgICwgbV93aW5kb3cobmV3IFdy
YXBwZXJXaW5kb3cobV92aWV3KSkKQEAgLTE1MSw5ICsxODgsNyBAQCB2b2lkIFBsYXRmb3JtV2Vi
Vmlldzo6bWFrZVdlYlZpZXdGaXJzdFJlc3BvbmRlcigpCiAKIFdLUmV0YWluUHRyPFdLSW1hZ2VS
ZWY+IFBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSgpCiB7Ci0gICAgLy8gRklY
TUU6IGltcGxlbWVudCB0byBjYXB0dXJlIHBpeGVscyBpbiB0aGUgVUkgcHJvY2VzcywKLSAgICAv
LyB3aGljaCBtYXkgYmUgbmVjZXNzYXJ5IHRvIGNhcHR1cmUgdGhpbmdzIGxpa2UgM0QgdHJhbnNm
b3Jtcy4KLSAgICByZXR1cm4gV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UoUUltYWdlKCkpOworICAg
IHJldHVybiBXS0ltYWdlQ3JlYXRlRnJvbVFJbWFnZShxb2JqZWN0X2Nhc3Q8V3JhcHBlcldpbmRv
dyo+KG1fd2luZG93KS0+c25hcHNob3RJbWFnZSgpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RS
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168378</attachid>
            <date>2012-10-12 01:47:22 -0700</date>
            <delta_ts>2012-10-15 00:13:08 -0700</delta_ts>
            <desc>reupload for ews ouput</desc>
            <filename>bug-95992-20121012104616.patch</filename>
            <type>text/plain</type>
            <size>4715</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTYwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWNmOWE0YzIyZTJlMTVjODM0ZGQ0NTJiMjYwY2YxOGE0
NWM1MTE0Ny4uZTFlMDNhNDRhZTMyMmQ0ZWNjN2Y3NzlmMDRlYjE4MTc0ZTJiZjk1MCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5
IEBACisyMDEyLTEwLTA4ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbUXRdIEltbGVtZW50IHBpeGVsIHNuYXBzaG90IGdlbmVyYXRpb24gaW4gV1RSCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN3aXRjaCB0aGUg
UXQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBsYXRmb3JtV2ViVmlldyB0byB1c2UKKyAgICAgICAg
UVF1aWNrV2luZG93OjpncmFiV2luZG93IHRvIGdlbmVyYXRlIHRoZSBwaXhlbCByZXN1bHRzLiBU
aGlzIHdheQorICAgICAgICB3ZSB3aWxsIGdvIHRocm91Z2ggdGhlIHNjZW5lZ3JhcGggYW5kIHRl
c3QgdGhlIGFjdHVhbCByZW5kZXJpbmcgYmFja2VuZC4KKyAgICAgICAgV2UgdXNlIFFRdWlja1dp
bmRvd1ByaXZhdGU6OnNldFJlbmRlcldpdGhvdXRTaG93aW5nIGFuZCBhIGZyYW1lIGJ1ZmZlcgor
ICAgICAgICBvYmplY3QgdG8gYXZvaWQgdGhlIG5lZWQgb2Ygc2hvd2luZyB0aGUgd2luZG93Lgor
CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpOgorICAgICAgICBOZWVkZWQg
dG8gYWRkIGEgYnVuY2ggb2YgcHJpdmF0ZSBtb2R1bCBkZXBlbmRlbmNpZXMKKyAgICAgICAgdG8g
YmUgYWJsZSB0byB1c2UgUVF1aWNrV2luZG93UHJpdmF0ZS4KKyAgICAgICAgKiBXZWJLaXRUZXN0
UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBlcldp
bmRvdzo6V3JhcHBlcldpbmRvdyk6CisgICAgICAgIChXcmFwcGVyV2luZG93KToKKyAgICAgICAg
KFdUUjo6V3JhcHBlcldpbmRvdzo6c25hcHNob3RJbWFnZSk6CisgICAgICAgIChXVFI6OldyYXBw
ZXJXaW5kb3c6On5XcmFwcGVyV2luZG93KToKKyAgICAgICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6
aGFuZGxlU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChXVFI6OldyYXBwZXJXaW5kb3c6Om9uQmVm
b3JlUmVuZGVyaW5nKToKKyAgICAgICAgKFdUUik6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisKIDIwMTItMTAtMTIgIEJhbGF6cyBLZWxlbWVu
ICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV1RSXSBEbyBhIGZvcmNlZCBy
ZXBhaW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVsIHJlc3VsdHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFy
Z2V0LnByaQppbmRleCAzYzQ3Y2FiMzhhMWJhNzIwOTA1ZDZjZjc3Yjg0MWY3OGNmNDhmNjA2Li44
MTExY2IzZmRjZmMyY2FmZmUxZTY5YjhmOGNkOTJlYjAxYTgxMTBiIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UYXJnZXQucHJpCkBAIC0zMSw3ICszMSw3IEBAIFNPVVJDRVMgKz0gXAogCiBERVNURElSID0g
JCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgogCi1RVCA9IGNvcmUgZ3VpIGd1aS1wcml2YXRlIHdpZGdl
dHMgbmV0d29yayB0ZXN0bGliIHF1aWNrIHF1aWNrLXByaXZhdGUgd2Via2l0CitRVCA9IGNvcmUg
Y29yZS1wcml2YXRlIGd1aSBndWktcHJpdmF0ZSB3aWRnZXRzIG5ldHdvcmsgdGVzdGxpYiBxdWlj
ayBxdWljay1wcml2YXRlIHFtbC1wcml2YXRlIHY4LXByaXZhdGUgd2Via2l0CiAKIFdFQktJVCAr
PSB3dGYgamF2YXNjcmlwdGNvcmUgd2Via2l0MgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5u
ZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCmluZGV4IDU4YjUzN2NlOGY1MWNhNTcxNTgyNjNk
OGY2NmRiYmI3MGRkNjY4NmQuLjQ0YWJjZGIwMjMwOTFmNmYyN2IzOWEyMGNiOGFjNTY2ZDg2MjBh
ZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3
UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQu
Y3BwCkBAIC0zMyw3ICszMyw5IEBACiAjaW5jbHVkZSA8UUNvcmVBcHBsaWNhdGlvbj4KICNpbmNs
dWRlIDxRRXZlbnRMb29wPgogI2luY2x1ZGUgPFFRbWxQcm9wZXJ0eT4KKyNpbmNsdWRlIDxRdEd1
aS9xb3BlbmdsZnJhbWVidWZmZXJvYmplY3QuaD4KICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja1Zp
ZXc+CisjaW5jbHVkZSA8UXRRdWljay9wcml2YXRlL3FxdWlja3dpbmRvd19wLmg+CiAjaW5jbHVk
ZSA8V2ViS2l0Mi9XS0ltYWdlUXQuaD4KICNpbmNsdWRlIDxxcGEvcXdpbmRvd3N5c3RlbWludGVy
ZmFjZS5oPgogCkBAIC00NSw4ICs0NywyMSBAQCBwdWJsaWM6CiAgICAgV3JhcHBlcldpbmRvdyhR
UXVpY2tXZWJWaWV3KiB2aWV3KQogICAgICAgICA6IFFRdWlja1ZpZXcoUVVybCgiZGF0YTp0ZXh0
L3BsYWluLGltcG9ydCBRdFF1aWNrIDIuMFxuSXRlbSB7IG9iamVjdE5hbWU6ICdyb290JyB9Iikp
CiAgICAgICAgICwgbV92aWV3KHZpZXcpCisgICAgICAgICwgbV9mYm8oMCkKICAgICB7CiAgICAg
ICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKHN0YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6U3RhdHVz
KSksIFNMT1QoaGFuZGxlU3RhdHVzQ2hhbmdlZChRUXVpY2tWaWV3OjpTdGF0dXMpKSk7CisgICAg
ICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGJlZm9yZVJlbmRlcmluZygpKSwgU0xPVChvbkJlZm9y
ZVJlbmRlcmluZygpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOworICAgIH0KKworICAgIFFJbWFn
ZSBzbmFwc2hvdEltYWdlKCkKKyAgICB7CisgICAgICAgIGdyYWJXaW5kb3coKTsKKyAgICAgICAg
cmV0dXJuIG1fZmJvID8gbV9mYm8tPnRvSW1hZ2UoKSA6IFFJbWFnZSgpOworICAgIH0KKworICAg
IH5XcmFwcGVyV2luZG93KCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSBtX2ZibzsKICAgICB9CiAK
IHByaXZhdGUgUV9TTE9UUzoKQEAgLTU1LDYgKzcwLDExIEBAIHByaXZhdGUgUV9TTE9UUzoKICAg
ICAgICAgaWYgKHN0YXR1cyAhPSBRUXVpY2tWaWV3OjpSZWFkeSkKICAgICAgICAgICAgIHJldHVy
bjsKIAorICAgICAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJmYWNlKTsKKyAgICAgICAgY3Jl
YXRlKCk7CisKKyAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6Z2V0KHRoaXMpLT5zZXRSZW5k
ZXJXaXRob3V0U2hvd2luZyh0cnVlKTsKKwogICAgICAgICBzZXRHZW9tZXRyeSgwLCAwLCA4MDAs
IDYwMCk7CiAKICAgICAgICAgc2V0UmVzaXplTW9kZShRUXVpY2tWaWV3OjpTaXplUm9vdE9iamVj
dFRvVmlldyk7CkBAIC02NSwxMCArODUsMjcgQEAgcHJpdmF0ZSBRX1NMT1RTOgogICAgICAgICBt
X3ZpZXctPnBhZ2UoKS0+c2V0Rm9jdXModHJ1ZSk7CiAgICAgfQogCisgICAgdm9pZCBvbkJlZm9y
ZVJlbmRlcmluZygpOworCiBwcml2YXRlOgogICAgIFFRdWlja1dlYlZpZXcqIG1fdmlldzsKKyAg
ICBRT3BlbkdMRnJhbWVidWZmZXJPYmplY3QqIG1fZmJvOwogfTsKIAordm9pZCBXcmFwcGVyV2lu
ZG93OjpvbkJlZm9yZVJlbmRlcmluZygpCit7CisgICAgaWYgKG1fZmJvICYmIG1fZmJvLT5zaXpl
KCkgPT0gc2l6ZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKG1fZmJvKSB7CisgICAgICAg
IG1fZmJvLT5yZWxlYXNlKCk7CisgICAgICAgIGRlbGV0ZSBtX2ZibzsKKyAgICB9CisgICAgbV9m
Ym8gPSBuZXcgUU9wZW5HTEZyYW1lYnVmZmVyT2JqZWN0KHNpemUoKSk7CisgICAgbV9mYm8tPmJp
bmQoKTsKKyAgICBzZXRSZW5kZXJUYXJnZXQobV9mYm8pOworCit9CisKIFBsYXRmb3JtV2ViVmll
dzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBtX3ZpZXcobmV3IFFRdWlja1dlYlZpZXcoY29udGV4dFJl
ZiwgcGFnZUdyb3VwUmVmKSkKICAgICAsIG1fd2luZG93KG5ldyBXcmFwcGVyV2luZG93KG1fdmll
dykpCkBAIC0xNTEsOSArMTg4LDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3
Rmlyc3RSZXNwb25kZXIoKQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZp
ZXc6OndpbmRvd1NuYXBzaG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8g
Y2FwdHVyZSBwaXhlbHMgaW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hpY2ggbWF5IGJlIG5l
Y2Vzc2FyeSB0byBjYXB0dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJu
IFdLSW1hZ2VDcmVhdGVGcm9tUUltYWdlKFFJbWFnZSgpKTsKKyAgICByZXR1cm4gV0tJbWFnZUNy
ZWF0ZUZyb21RSW1hZ2UocW9iamVjdF9jYXN0PFdyYXBwZXJXaW5kb3cqPihtX3dpbmRvdyktPnNu
YXBzaG90SW1hZ2UoKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdUUgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168635</attachid>
            <date>2012-10-15 00:13:14 -0700</date>
            <delta_ts>2012-10-15 03:57:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95992-20121015091159.patch</filename>
            <type>text/plain</type>
            <size>3577</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTg0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZWNhZDQxN2EyNTUxZWQzMGY3ZWJiOGM0YTcxOWE2OTBm
NmQ3ZTY1ZS4uNzVmMDFmZWM0MjhmYTM2Yjc4OWE1MmRlNjRhMDJkMmNjNzg1MGFlZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI2
IEBACiAyMDEyLTEwLTEyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KIAor
ICAgICAgICBbUXRdIEltcGxlbWVudCBwaXhlbCBzbmFwc2hvdCBnZW5lcmF0aW9uIGluIFdUUgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdGhl
IFF0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQbGF0Zm9ybVdlYlZpZXcgdG8gdXNlCisgICAgICAg
IFFRdWlja1dpbmRvdzo6Z3JhYldpbmRvdyB0byBnZW5lcmF0ZSB0aGUgcGl4ZWwgcmVzdWx0cy4g
VGhpcyB3YXkKKyAgICAgICAgd2Ugd2lsbCBnbyB0aHJvdWdoIHRoZSBzY2VuZWdyYXBoIGFuZCB0
ZXN0IHRoZSBhY3R1YWwgcmVuZGVyaW5nIGJhY2tlbmQuCisgICAgICAgIFdlIHVzZSBRUXVpY2tX
aW5kb3dQcml2YXRlOjpzZXRSZW5kZXJXaXRob3V0U2hvd2luZyB0byBhdm9pZCB0aGUgbmVlZCBv
ZgorICAgICAgICBzaG93aW5nIHRoZSB3aW5kb3cuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1RhcmdldC5wcmk6IEhhZCB0byBhZGRlZCBhIGJ1bmNoCisgICAgICAgIG9mIG1vZHVsZXMg
dG8gYmUgYWJsZSB0byB1c2UgUVF1aWNrV2luZG93UHJpdmF0ZS4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBl
cldpbmRvdzo6c25hcHNob3RJbWFnZSk6CisgICAgICAgIChXcmFwcGVyV2luZG93KToKKyAgICAg
ICAgKFdUUjo6V3JhcHBlcldpbmRvdzo6aGFuZGxlU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChX
VFI6OlBsYXRmb3JtV2ViVmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisKKzIwMTItMTAtMTIg
IEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCiAgICAgICAgIFtRdF1bV1RS
XSBEbyBhIGZvcmNlZCByZXBhaW50IGJlZm9yZSBnZW5lcmF0aW5nIHBpeGVsIHJlc3VsdHMKICAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4NjU0CiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaSBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGFyZ2V0LnByaQppbmRleCAzYzQ3Y2FiMzhhMWJhNzIwOTA1ZDZjZjc3Yjg0
MWY3OGNmNDhmNjA2Li44MTExY2IzZmRjZmMyY2FmZmUxZTY5YjhmOGNkOTJlYjAxYTgxMTBiIDEw
MDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5wcmkKKysrIGIvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCkBAIC0zMSw3ICszMSw3IEBAIFNPVVJDRVMgKz0g
XAogCiBERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgogCi1RVCA9IGNvcmUgZ3VpIGd1
aS1wcml2YXRlIHdpZGdldHMgbmV0d29yayB0ZXN0bGliIHF1aWNrIHF1aWNrLXByaXZhdGUgd2Vi
a2l0CitRVCA9IGNvcmUgY29yZS1wcml2YXRlIGd1aSBndWktcHJpdmF0ZSB3aWRnZXRzIG5ldHdv
cmsgdGVzdGxpYiBxdWljayBxdWljay1wcml2YXRlIHFtbC1wcml2YXRlIHY4LXByaXZhdGUgd2Vi
a2l0CiAKIFdFQktJVCArPSB3dGYgamF2YXNjcmlwdGNvcmUgd2Via2l0MgogCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCmluZGV4IDI3ODIzMmYy
OWEwODgyMzg2NDUyN2I2MDhiOGVlN2E1NTM0YzczYjcuLjQwZmE1MTgxMTQ3MTJjYzQzNTBjZjFl
YWFhMWQzYWViZDVjYTFjY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQv
UGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxh
dGZvcm1XZWJWaWV3UXQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSA8UUV2ZW50TG9v
cD4KICNpbmNsdWRlIDxRUW1sUHJvcGVydHk+CiAjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tWaWV3
PgorI2luY2x1ZGUgPFF0UXVpY2svcHJpdmF0ZS9xcXVpY2t3aW5kb3dfcC5oPgogI2luY2x1ZGUg
PFdlYktpdDIvV0tJbWFnZVF0Lmg+CiAjaW5jbHVkZSA8cXBhL3F3aW5kb3dzeXN0ZW1pbnRlcmZh
Y2UuaD4KIApAQCAtNDksNiArNTAsMTEgQEAgcHVibGljOgogICAgICAgICBjb25uZWN0KHRoaXMs
IFNJR05BTChzdGF0dXNDaGFuZ2VkKFFRdWlja1ZpZXc6OlN0YXR1cykpLCBTTE9UKGhhbmRsZVN0
YXR1c0NoYW5nZWQoUVF1aWNrVmlldzo6U3RhdHVzKSkpOwogICAgIH0KIAorICAgIFFJbWFnZSBz
bmFwc2hvdEltYWdlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBncmFiV2luZG93KCk7CisgICAg
fQorCiBwcml2YXRlIFFfU0xPVFM6CiAgICAgdm9pZCBoYW5kbGVTdGF0dXNDaGFuZ2VkKFFRdWlj
a1ZpZXc6OlN0YXR1cyBzdGF0dXMpCiAgICAgewpAQCAtNjEsNiArNjcsMTEgQEAgcHJpdmF0ZSBR
X1NMT1RTOgogICAgICAgICBtX3ZpZXctPnNldFBhcmVudEl0ZW0ocm9vdE9iamVjdCgpKTsKICAg
ICAgICAgUVFtbFByb3BlcnR5Ojp3cml0ZShtX3ZpZXcsICJhbmNob3JzLmZpbGwiLCBxVmFyaWFu
dEZyb21WYWx1ZShyb290T2JqZWN0KCkpKTsKIAorICAgICAgICBzZXRTdXJmYWNlVHlwZShPcGVu
R0xTdXJmYWNlKTsKKyAgICAgICAgY3JlYXRlKCk7CisKKyAgICAgICAgUVF1aWNrV2luZG93UHJp
dmF0ZTo6Z2V0KHRoaXMpLT5zZXRSZW5kZXJXaXRob3V0U2hvd2luZyh0cnVlKTsKKwogICAgICAg
ICBRV2luZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQodGhpcyk7CiAg
ICAgICAgIG1fdmlldy0+cGFnZSgpLT5zZXRGb2N1cyh0cnVlKTsKICAgICB9CkBAIC0xNTEsOSAr
MTYyLDcgQEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIo
KQogCiBXS1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBz
aG90SW1hZ2UoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMg
aW4gdGhlIFVJIHByb2Nlc3MsCi0gICAgLy8gd2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0
dXJlIHRoaW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJuIGFkb3B0V0soV0tJbWFn
ZUNyZWF0ZUZyb21RSW1hZ2UoUUltYWdlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRXSyhXS0ltYWdl
Q3JlYXRlRnJvbVFJbWFnZShzdGF0aWNfY2FzdDxXcmFwcGVyV2luZG93Kj4obV93aW5kb3cpLT5z
bmFwc2hvdEltYWdlKCkpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV1RSCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168671</attachid>
            <date>2012-10-15 03:57:37 -0700</date>
            <delta_ts>2012-10-15 10:17:21 -0700</delta_ts>
            <desc>use grabWindow directly</desc>
            <filename>bug-95992-20121015125622.patch</filename>
            <type>text/plain</type>
            <size>3042</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMjk0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMzNlNjIwZjIxMmZiOTViNTA1MDgwZWE1NDcwM2JjY2Q4
YjJkZjU2Yy4uY2Q4NDcwNDk2NmYzM2U0ZTFiY2I2ODVjYzIxZWU2NzcwNTE0NmUxMiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIy
IEBACisyMDEyLTEwLTEyICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBbUXRdIEltcGxlbWVudCBwaXhlbCBzbmFwc2hvdCBnZW5lcmF0aW9uIGluIFdUUgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5OTIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTd2l0Y2ggdGhl
IFF0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQbGF0Zm9ybVdlYlZpZXcgdG8gdXNlCisgICAgICAg
IFFRdWlja1dpbmRvdzo6Z3JhYldpbmRvdyB0byBnZW5lcmF0ZSB0aGUgcGl4ZWwgcmVzdWx0cy4g
VGhpcyB3YXkKKyAgICAgICAgd2Ugd2lsbCBnbyB0aHJvdWdoIHRoZSBzY2VuZWdyYXBoIGFuZCB0
ZXN0IHRoZSBhY3R1YWwgcmVuZGVyaW5nIGJhY2tlbmQuCisgICAgICAgIFdlIHVzZSBRUXVpY2tX
aW5kb3dQcml2YXRlOjpzZXRSZW5kZXJXaXRob3V0U2hvd2luZyB0byBhdm9pZCB0aGUgbmVlZCBv
ZgorICAgICAgICBzaG93aW5nIHRoZSB3aW5kb3cuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVu
bmVyL1RhcmdldC5wcmk6IEhhZCB0byBhZGRlZCBhIGJ1bmNoCisgICAgICAgIG9mIG1vZHVsZXMg
dG8gYmUgYWJsZSB0byB1c2UgUVF1aWNrV2luZG93UHJpdmF0ZS4KKyAgICAgICAgKiBXZWJLaXRU
ZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmlld1F0LmNwcDoKKyAgICAgICAgKFdUUjo6V3JhcHBl
cldpbmRvdzo6aGFuZGxlU3RhdHVzQ2hhbmdlZCk6CisgICAgICAgIChXVFI6OlBsYXRmb3JtV2Vi
Vmlldzo6d2luZG93U25hcHNob3RJbWFnZSk6CisKIDIwMTItMTAtMTUgIENzYWJhIE9zenRyb2dv
bsOhYyAgPG9zc3lAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRdW1dLMl0gQnVpbGRmaXggZm9y
IG5ld2VyIFF0NS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnBy
aSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGFyZ2V0LnByaQppbmRleCAzYzQ3Y2FiMzhhMWJh
NzIwOTA1ZDZjZjc3Yjg0MWY3OGNmNDhmNjA2Li44MTExY2IzZmRjZmMyY2FmZmUxZTY5YjhmOGNk
OTJlYjAxYTgxMTBiIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1RhcmdldC5w
cmkKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UYXJnZXQucHJpCkBAIC0zMSw3ICszMSw3
IEBAIFNPVVJDRVMgKz0gXAogCiBERVNURElSID0gJCR7Uk9PVF9CVUlMRF9ESVJ9L2JpbgogCi1R
VCA9IGNvcmUgZ3VpIGd1aS1wcml2YXRlIHdpZGdldHMgbmV0d29yayB0ZXN0bGliIHF1aWNrIHF1
aWNrLXByaXZhdGUgd2Via2l0CitRVCA9IGNvcmUgY29yZS1wcml2YXRlIGd1aSBndWktcHJpdmF0
ZSB3aWRnZXRzIG5ldHdvcmsgdGVzdGxpYiBxdWljayBxdWljay1wcml2YXRlIHFtbC1wcml2YXRl
IHY4LXByaXZhdGUgd2Via2l0CiAKIFdFQktJVCArPSB3dGYgamF2YXNjcmlwdGNvcmUgd2Via2l0
MgogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1BsYXRmb3JtV2ViVmll
d1F0LmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3Bw
CmluZGV4IDFlNTNiMDg4NWY0MGQ4MzU3ODhkNDI0YjBhMDdiMGM3NzE4OWRlNWIuLjhjNzYwNTk5
MjcxOGU1OGMwYTU2NDFhMGE1NDc4ODExZWJjYzEyY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRl
c3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5j
bHVkZSA8UUV2ZW50TG9vcD4KICNpbmNsdWRlIDxRUW1sUHJvcGVydHk+CiAjaW5jbHVkZSA8UXRR
dWljay9RUXVpY2tWaWV3PgorI2luY2x1ZGUgPFF0UXVpY2svcHJpdmF0ZS9xcXVpY2t3aW5kb3df
cC5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tJbWFnZVF0Lmg+CiAjaW5jbHVkZSA8cXBhL3F3aW5k
b3dzeXN0ZW1pbnRlcmZhY2UuaD4KIApAQCAtNjEsNiArNjIsMTEgQEAgcHJpdmF0ZSBRX1NMT1RT
OgogICAgICAgICBtX3ZpZXctPnNldFBhcmVudEl0ZW0ocm9vdE9iamVjdCgpKTsKICAgICAgICAg
UVFtbFByb3BlcnR5Ojp3cml0ZShtX3ZpZXcsICJhbmNob3JzLmZpbGwiLCBxVmFyaWFudEZyb21W
YWx1ZShyb290T2JqZWN0KCkpKTsKIAorICAgICAgICBzZXRTdXJmYWNlVHlwZShPcGVuR0xTdXJm
YWNlKTsKKyAgICAgICAgY3JlYXRlKCk7CisKKyAgICAgICAgUVF1aWNrV2luZG93UHJpdmF0ZTo6
Z2V0KHRoaXMpLT5zZXRSZW5kZXJXaXRob3V0U2hvd2luZyh0cnVlKTsKKwogICAgICAgICBRV2lu
ZG93U3lzdGVtSW50ZXJmYWNlOjpoYW5kbGVXaW5kb3dBY3RpdmF0ZWQodGhpcyk7CiAgICAgICAg
IG1fdmlldy0+cGFnZSgpLT5zZXRGb2N1cyh0cnVlKTsKICAgICB9CkBAIC0xNTIsOSArMTU4LDcg
QEAgdm9pZCBQbGF0Zm9ybVdlYlZpZXc6Om1ha2VXZWJWaWV3Rmlyc3RSZXNwb25kZXIoKQogCiBX
S1JldGFpblB0cjxXS0ltYWdlUmVmPiBQbGF0Zm9ybVdlYlZpZXc6OndpbmRvd1NuYXBzaG90SW1h
Z2UoKQogewotICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgdG8gY2FwdHVyZSBwaXhlbHMgaW4gdGhl
IFVJIHByb2Nlc3MsCi0gICAgLy8gd2hpY2ggbWF5IGJlIG5lY2Vzc2FyeSB0byBjYXB0dXJlIHRo
aW5ncyBsaWtlIDNEIHRyYW5zZm9ybXMuCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGFkb3B0
V0soV0tJbWFnZUNyZWF0ZUZyb21RSW1hZ2UobV93aW5kb3ctPmdyYWJXaW5kb3coKSkpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBXVFIK
</data>

          </attachment>
      

    </bug>

</bugzilla>