<?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>109828</bug_id>
          
          <creation_ts>2013-02-14 07:00:28 -0800</creation_ts>
          <short_desc>[WK2][EFL] Add callbacks to the WKViewClient to handle Web Process crash and relaunch</short_desc>
          <delta_ts>2013-03-04 13:41:41 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>833041</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-14 07:00:28 -0800</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833056</commentid>
    <comment_count>1</comment_count>
      <attachid>188346</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-14 07:19:12 -0800</bug_when>
    <thetext>Created attachment 188346
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833063</commentid>
    <comment_count>2</comment_count>
      <attachid>188346</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-14 07:36:27 -0800</bug_when>
    <thetext>Comment on attachment 188346
patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:40
&gt; +typedef void (*WKViewWebProcessCrashedCallback)(WKViewRef view, WKStringRef url, const void* clientInfo);

Shouldn&apos;t we use a WKURL instead of a WKString?

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:41
&gt; +typedef void (*WKViewWebProcessDidRelaunchCallback)(WKViewRef view, const void* clientInfo);

This one could named as a generic WKViewCallback that would be reusable. See for example WKPageCallback.

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:51
&gt; +    WKViewWebProcessDidRelaunchCallback              webProcessDidRelaunch;

Do we really need this one?

&gt; Source/WebKit2/UIProcess/efl/PageClientBase.cpp:127
&gt; +    view()-&gt;webProcessDidRelaunch();

Why don&apos;t we store the theme path in WebView instead of EwkView?

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:69
&gt; +    WKEinaSharedString urlString(url);

This should be in the if scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833064</commentid>
    <comment_count>3</comment_count>
      <attachid>188346</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-14 07:36:59 -0800</bug_when>
    <thetext>Comment on attachment 188346
patch

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

&gt; Source/WebKit2/UIProcess/efl/WebViewClient.h:46
&gt; +    void webProcessCrashed(WebView*, const WTF::String&amp; url);

WTF:: is not needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833173</commentid>
    <comment_count>4</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-14 09:51:11 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 188346 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188346&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:40
&gt; &gt; +typedef void (*WKViewWebProcessCrashedCallback)(WKViewRef view, WKStringRef url, const void* clientInfo);
&gt; 
&gt; Shouldn&apos;t we use a WKURL instead of a WKString?
I was considering this, but I prefer WKString:
1) wep page returns string not url
2) For the most cases string enough, on the other hand it&apos;s easy to 
to construct WKURL on client side if needed.
3) More compact code
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:41
&gt; &gt; +typedef void (*WKViewWebProcessDidRelaunchCallback)(WKViewRef view, const void* clientInfo);
&gt; 
&gt; This one could named as a generic WKViewCallback that would be reusable. See for example WKPageCallback.
Good point, thanks
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:51
&gt; &gt; +    WKViewWebProcessDidRelaunchCallback              webProcessDidRelaunch;
&gt; 
&gt; Do we really need this one?
I guess so
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/PageClientBase.cpp:127
&gt; &gt; +    view()-&gt;webProcessDidRelaunch();
&gt; 
&gt; Why don&apos;t we store the theme path in WebView instead of EwkView?
webview is just exposing the API we miss.. IMO it should contain nether
a lot of logic nor a lot of data, so would keep it as thin as possible.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:69
&gt; &gt; +    WKEinaSharedString urlString(url);
&gt; 
&gt; This should be in the if scope.
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833183</commentid>
    <comment_count>5</comment_count>
      <attachid>188346</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-14 09:56:22 -0800</bug_when>
    <thetext>Comment on attachment 188346
patch

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

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:84
&gt; +        ewkView-&gt;setThemePath(themePath);

Found a problem here: actually WKViewSetThemePath should be invoked, as EwkView::setTheme checks if the given value is the same :/ Will correct it in the next version of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833192</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-14 10:02:12 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 188346 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188346&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:40
&gt; &gt; &gt; +typedef void (*WKViewWebProcessCrashedCallback)(WKViewRef view, WKStringRef url, const void* clientInfo);
&gt; &gt; 
&gt; &gt; Shouldn&apos;t we use a WKURL instead of a WKString?
&gt; I was considering this, but I prefer WKString:
&gt; 1) wep page returns string not url
&gt; 2) For the most cases string enough, on the other hand it&apos;s easy to 
&gt; to construct WKURL on client side if needed.
&gt; 3) More compact code

It is just a matter of calling toCopiedURLAPI() instead of toCopiedAPI() so 3) is not really a good argument IMHO. On the other hand, providing a WKURL to the client provide it with more useful information (e.g. it can easily get the host). It&apos;s not a big deal, but I think it makes some sense.

&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:41
&gt; &gt; &gt; +typedef void (*WKViewWebProcessDidRelaunchCallback)(WKViewRef view, const void* clientInfo);
&gt; &gt; 
&gt; &gt; This one could named as a generic WKViewCallback that would be reusable. See for example WKPageCallback.
&gt; Good point, thanks
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:51
&gt; &gt; &gt; +    WKViewWebProcessDidRelaunchCallback              webProcessDidRelaunch;
&gt; &gt; 
&gt; &gt; Do we really need this one?
&gt; I guess so
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit2/UIProcess/efl/PageClientBase.cpp:127
&gt; &gt; &gt; +    view()-&gt;webProcessDidRelaunch();
&gt; &gt; 
&gt; &gt; Why don&apos;t we store the theme path in WebView instead of EwkView?
&gt; webview is just exposing the API we miss.. IMO it should contain nether
&gt; a lot of logic nor a lot of data, so would keep it as thin as possible.

Well, you will need to set the theme on the view anyway with WKViewSetThemePath(). I think it is weird to store the theme path on EwkView side but then call WKViewSetThemePath() on the WebView.

Kenneth, do you have an opinion on this? I think we should try to get it right as we are adding new C API that we may end up removing afterwards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833919</commentid>
    <comment_count>7</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-15 05:20:56 -0800</bug_when>
    <thetext>
&gt; Well, you will need to set the theme on the view anyway with WKViewSetThemePath(). I think it is weird to store the theme path on EwkView side but then call WKViewSetThemePath() on the WebView.
&gt; 
&gt; Kenneth, do you have an opinion on this? I think we should try to get it right as we are adding new C API that we may end up removing afterwards.

I agree with you and have already talked with misha</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833952</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-15 06:22:29 -0800</bug_when>
    <thetext>&gt; Well, you will need to set the theme on the view anyway with WKViewSetThemePath(). I think it is weird to store the theme path on EwkView side but then call WKViewSetThemePath() on the WebView.
&gt; 

We would anyway need theme to be stored in EwkView as we have to support &apos;const char* ewk_view_theme_get(const Evas_Object* ewkView)&apos; - WK2 EFL public API function. So keeping theme path also in WebView does not make much sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833964</commentid>
    <comment_count>9</comment_count>
      <attachid>188552</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-15 06:39:19 -0800</bug_when>
    <thetext>Created attachment 188552
patch v2

Took comments form Chris into consideration. 
Fixed theme path restoring.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833970</commentid>
    <comment_count>10</comment_count>
      <attachid>188552</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-15 06:45:13 -0800</bug_when>
    <thetext>Comment on attachment 188552
patch v2

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

LGTM, but shouldnt we add API tests? :)

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:52
&gt; +    WKViewWebProcessCrashedCallback                  webProcessCrashed;
&gt; +    WKViewCallback                                   webProcessDidRelaunch;
&gt;  };

Is this common style? having a WKClassNameCallback when the callback takes no special arguments?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>833979</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-15 06:48:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 188552 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188552&amp;action=review
&gt; 
&gt; LGTM, but shouldnt we add API tests? :)
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:52
&gt; &gt; +    WKViewWebProcessCrashedCallback                  webProcessCrashed;
&gt; &gt; +    WKViewCallback                                   webProcessDidRelaunch;
&gt; &gt;  };
&gt; 
&gt; Is this common style? having a WKClassNameCallback when the callback takes no special arguments?

As I said in https://bugs.webkit.org/show_bug.cgi?id=109828#c2, it is done for WKPageCallback at least so it is not new.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834185</commentid>
    <comment_count>12</comment_count>
      <attachid>188603</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-15 11:02:03 -0800</bug_when>
    <thetext>Created attachment 188603
patch v3

Added API tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835355</commentid>
    <comment_count>13</comment_count>
      <attachid>188603</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-18 04:56:39 -0800</bug_when>
    <thetext>Comment on attachment 188603
patch v3

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

&gt; Source/WebKit2/ChangeLog:3
&gt; +        [WK2][EFL] Introduce Web Process crash and Web Process relaunch callbacks to WKViewClient

Add callbacks to the WKViewClient to handle Web Process crash and relaunch

It sounds as you are introducing a crash :-)

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Providing WKViewClient with Web Process crash and Web Process relaunch
&gt; +        callbacks brings better design as WebView should not be aware of
&gt; +        EFL-specific code handling the corresponding events.

You should say that you also add an implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835364</commentid>
    <comment_count>14</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-18 05:08:12 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 188603 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=188603&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/ChangeLog:3
&gt; &gt; +        [WK2][EFL] Introduce Web Process crash and Web Process relaunch callbacks to WKViewClient
&gt; 
&gt; Add callbacks to the WKViewClient to handle Web Process crash and relaunch
&gt; 
&gt; It sounds as you are introducing a crash :-)
:-) hopefully not</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>835390</commentid>
    <comment_count>15</comment_count>
      <attachid>188860</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-18 05:32:33 -0800</bug_when>
    <thetext>Created attachment 188860
patch v4

Change log updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837244</commentid>
    <comment_count>16</comment_count>
      <attachid>188860</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 01:12:08 -0800</bug_when>
    <thetext>Comment on attachment 188860
patch v4

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

LGTM

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:59
&gt; +    // Check if loading was ongoing, when web process crashed.
&gt; +    double loadProgress = ewk_view_load_progress_get(ewkView-&gt;evasObject());

Wouldnt it be easier to get this directly with the WK C API?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837316</commentid>
    <comment_count>17</comment_count>
      <attachid>189280</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 03:50:54 -0800</bug_when>
    <thetext>Created attachment 189280
patch v5

Use WKPageGetEstimatedProgress rather than ewk_view_load_progress_get</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837334</commentid>
    <comment_count>18</comment_count>
      <attachid>189280</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 04:18:11 -0800</bug_when>
    <thetext>Comment on attachment 189280
patch v5

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

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:72
&gt; +    if (!handled) {
&gt; +        WKEinaSharedString urlString(url);
&gt; +        WARN(&quot;WARNING: The web process experienced a crash on &apos;%s&apos;.\n&quot;, static_cast&lt;const char*&gt;(urlString));

Any reason to eina share this?

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:75
&gt; +        // Display an error page
&gt; +        ewk_view_html_string_load(ewkView-&gt;evasObject(), &quot;The web process has crashed.&quot;, 0, urlString);

I had assumed you got rid of this one as well, if it is not a lot of extra code with the C api</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837344</commentid>
    <comment_count>19</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-20 04:31:56 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; (From update of attachment 189280 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189280&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:72
&gt; &gt; +    if (!handled) {
&gt; &gt; +        WKEinaSharedString urlString(url);
&gt; &gt; +        WARN(&quot;WARNING: The web process experienced a crash on &apos;%s&apos;.\n&quot;, static_cast&lt;const char*&gt;(urlString));
&gt; 
&gt; Any reason to eina share this?
WKEinaSharedString just provides convenient way of getting &quot;const char*&quot; from WKURLRef. Eina sharing is overhead but I do not think it is a significant overhead considering obtained code compactness.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:75
&gt; &gt; +        // Display an error page
&gt; &gt; +        ewk_view_html_string_load(ewkView-&gt;evasObject(), &quot;The web process has crashed.&quot;, 0, urlString);
&gt; 
&gt; I had assumed you got rid of this one as well, if it is not a lot of extra code with the C api

ewk_view_html_string_load will also invoke EwkView::informURLChange() which is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>837345</commentid>
    <comment_count>20</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-20 04:34:53 -0800</bug_when>
    <thetext>LGTM, I would add a commetn about the informUrl change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842316</commentid>
    <comment_count>21</comment_count>
      <attachid>189280</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-26 13:32:47 -0800</bug_when>
    <thetext>Comment on attachment 189280
patch v5

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

No problem with this, I sign off on the change.

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:61
&gt; +        loadProgress = 1;

not loadProgress = 0?

&gt; Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:41
&gt; +static bool didFinishLoad;
&gt; +static bool didCrash;
&gt; +static bool didRelaunch;
&gt; +
&gt; +static WKURLRef urlToPass;
&gt; +static WKViewRef viewToPass;
&gt; +static const char* dataToPass;

For a common test, I would say this should be test local.
For EFL tests, you do as you wish I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842871</commentid>
    <comment_count>22</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-27 02:37:13 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; (From update of attachment 189280 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189280&amp;action=review
&gt; 
&gt; No problem with this, I sign off on the change.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:61
&gt; &gt; +        loadProgress = 1;
&gt; 
&gt; not loadProgress = 0?
&gt; 
Agree, this might look weird but it&apos;s a part of WK2 EFL behaviour that I&apos;m keeping untouched in this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846212</commentid>
    <comment_count>23</comment_count>
      <attachid>189280</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-04 01:09:53 -0800</bug_when>
    <thetext>Comment on attachment 189280
patch v5

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

r=me as signed off my benjamin

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:41
&gt;&gt; +static const char* dataToPass;
&gt; 
&gt; For a common test, I would say this should be test local.
&gt; For EFL tests, you do as you wish I guess.

Mikhail can you have a look to see if you could make this change? People will look at current tests when writing new ones</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846369</commentid>
    <comment_count>24</comment_count>
      <attachid>191215</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 05:46:33 -0800</bug_when>
    <thetext>Created attachment 191215
patch v6

Re-factored the added API test so that all the test data is local for the test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846370</commentid>
    <comment_count>25</comment_count>
      <attachid>191215</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 05:49:13 -0800</bug_when>
    <thetext>Comment on attachment 191215
patch v6

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:104
&gt; +    WKURLRef url = Util::createURLForResource(&quot;simple&quot;, &quot;html&quot;);

ahh, I should have used WKRetainPtr here.. (but I can fix it while committing :) )</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846739</commentid>
    <comment_count>26</comment_count>
      <attachid>191215</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-03-04 12:37:22 -0800</bug_when>
    <thetext>Comment on attachment 191215
patch v6

r=me as signed off by ben</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846743</commentid>
    <comment_count>27</comment_count>
      <attachid>191294</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 12:43:58 -0800</bug_when>
    <thetext>Created attachment 191294
to be landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846804</commentid>
    <comment_count>28</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-04 13:40:56 -0800</bug_when>
    <thetext>Committed r144664: &lt;http://trac.webkit.org/changeset/144664&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188346</attachid>
            <date>2013-02-14 07:19:12 -0800</date>
            <delta_ts>2013-02-14 09:56:22 -0800</delta_ts>
            <desc>patch</desc>
            <filename>bug109828</filename>
            <type>text/plain</type>
            <size>10123</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGMzNWE3OTc5ZWRiNGUwZGEzNDU0MTU0MWM5NGUzNDkxZjRlYTc2NzcKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IEZlYiAxNCAxNzoxMDo1NyAyMDEzICswMjAwCgogICAgYnVnMTA5ODI4CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGMwODY4NWUuLmRlM2Y0YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMy0w
Mi0xNCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIEludHJvZHVjZSBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2Vi
IFByb2Nlc3MgcmVsYXVuY2ggY2FsbGJhY2tzIHRvIFdLVmlld0NsaWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gZnV0dXJlIFdlYlZpZXcgY2xh
c3Mgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSBQYWdlQ2xpZW50LgorICAgICAgICBQcm92aWRpbmcg
V0tWaWV3Q2xpZW50IHdpdGggV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1
bmNoCisgICAgICAgIGNhbGxiYWNrcyBicmluZ3MgYmV0dGVyIGRlc2lnbiBhcyBXZWJWaWV3IHNo
b3VsZCBub3QgYmUgYXdhcmUgb2YKKyAgICAgICAgRUZMLXNwZWNpZmljIGNvZGUgaGFuZGxpbmcg
dGhlIGNvcnJlc3BvbmRpbmcgZXZlbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRCYXNlOjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZp
ZXdDbGllbnRFZmw6OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCk6CisgICAg
ICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oOgorICAgICAgICAoVmlld0NsaWVudEVmbCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlldzo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlldzo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlld0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6
OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlZpZXdDbGllbnQ6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCk6CisgICAgICAgICogVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3Q2xpZW50Lmg6CisKIDIwMTMtMDItMTMgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RyaW5nUGFpclZlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggMzI1NDZj
Ni4uMTBhYjM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5oCkBAIC0zNyw2ICszNyw4IEBAIGV4dGVybiAiQyIgewogCiB0eXBlZGVmIHZvaWQgKCpXS1Zp
ZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1JlY3QgYXJlYSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hh
bmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1NpemUgc2l6ZSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdXZWJQcm9jZXNzQ3Jh
c2hlZENhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tTdHJpbmdSZWYgdXJsLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLVmlld1dlYlByb2Nlc3NEaWRSZWxhdW5j
aENhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKIHN0
cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNDUsNiArNDcsOCBAQCBzdHJ1Y3QgV0tWaWV3
Q2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDAKICAgICBXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2Fs
bGJhY2sgICAgICAgICAgICAgICAgICAgdmlld05lZWRzRGlzcGxheTsKICAgICBXS1ZpZXdQYWdl
RGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2sgICAgICAgICAgZGlkQ2hhbmdlQ29udGVudHNT
aXplOworICAgIFdLVmlld1dlYlByb2Nlc3NDcmFzaGVkQ2FsbGJhY2sgICAgICAgICAgICAgICAg
ICB3ZWJQcm9jZXNzQ3Jhc2hlZDsKKyAgICBXS1ZpZXdXZWJQcm9jZXNzRGlkUmVsYXVuY2hDYWxs
YmFjayAgICAgICAgICAgICAgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoOwogfTsKIHR5cGVkZWYgc3Ry
dWN0IFdLVmlld0NsaWVudCBXS1ZpZXdDbGllbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKaW5kZXggYWNlYzYwMC4uNWQ2YTZhMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKQEAg
LTExOSwzMiArMTE5LDEyIEBAIGJvb2wgUGFnZUNsaWVudEJhc2U6OmlzVmlld0luV2luZG93KCkK
IAogdm9pZCBQYWdlQ2xpZW50QmFzZTo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKLSAgICAvLyBDaGVj
ayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQuCi0gICAg
ZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fdmlldy0+
ZXZhc09iamVjdCgpKTsKLSAgICBpZiAobG9hZFByb2dyZXNzID49IDAgJiYgbG9hZFByb2dyZXNz
IDwgMSkgewotICAgICAgICBsb2FkUHJvZ3Jlc3MgPSAxOwotICAgICAgICBtX3ZpZXctPnNtYXJ0
Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7Ci0gICAgfQotCi0g
ICAgbV92aWV3LT5zbWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOwotCi0g
ICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgbV92aWV3LT5zbWFydENhbGxiYWNrPFdlYlBy
b2Nlc3NDcmFzaGVkPigpLmNhbGwoJmhhbmRsZWQpOwotCi0gICAgaWYgKCFoYW5kbGVkKSB7Ci0g
ICAgICAgIENTdHJpbmcgdXJsID0gbV92aWV3LT5wYWdlKCktPnVybEF0UHJvY2Vzc0V4aXQoKS51
dGY4KCk7Ci0gICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNl
ZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0YSgpKTsKLQotICAgICAgICAvLyBEaXNwbGF5
IGFuIGVycm9yIHBhZ2UKLSAgICAgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChtX3ZpZXct
PmV2YXNPYmplY3QoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1cmwuZGF0
YSgpKTsKLSAgICB9CisgICAgdmlldygpLT53ZWJQcm9jZXNzQ3Jhc2hlZCgpOwogfQogCiB2b2lk
IFBhZ2VDbGllbnRCYXNlOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogewotICAgIGNvbnN0IGNoYXIq
IHRoZW1lUGF0aCA9IG1fdmlldy0+dGhlbWVQYXRoKCk7Ci0gICAgaWYgKHRoZW1lUGF0aCkKLSAg
ICAgICAgbV92aWV3LT5wYWdlKCktPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOworICAgIHZpZXco
KS0+d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKCk7CiB9CiAKIHZvaWQgUGFnZUNsaWVudEJhc2U6OnBh
Z2VDbG9zZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3
Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5jcHAKaW5kZXggNzdmOGJmMy4uMmUyNWEwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC01MCw2ICs1MCw0MCBAQCB2b2lkIFZpZXdD
bGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShXS1ZpZXdSZWYsIFdLU2l6ZSBzaXplLCBj
b25zdCB2b2lkKiBjbAogICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8Q29udGVudHNTaXplQ2hh
bmdlZD4oKS5jYWxsKHNpemUpOwogfQogCit2b2lkIFZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3ND
cmFzaGVkKFdLVmlld1JlZiwgV0tTdHJpbmdSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KQoreworICAgIEV3a1ZpZXcqIGV3a1ZpZXcgPSB0b0V3a1ZpZXcoY2xpZW50SW5mbyk7CisKKyAg
ICAvLyBDaGVjayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNo
ZWQuCisgICAgZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0
KGV3a1ZpZXctPmV2YXNPYmplY3QoKSk7CisgICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxv
YWRQcm9ncmVzcyA8IDEpIHsKKyAgICAgICAgbG9hZFByb2dyZXNzID0gMTsKKyAgICAgICAgZXdr
Vmlldy0+c21hcnRDYWxsYmFjazxMb2FkUHJvZ3Jlc3M+KCkuY2FsbCgmbG9hZFByb2dyZXNzKTsK
KyAgICB9CisKKyAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCku
Y2FsbCgpOworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7CisgICAgZXdrVmlldy0+c21hcnRD
YWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5kbGVkKTsKKworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyB1cmxTdHJpbmcodXJsKTsKKworICAgIGlmICghaGFuZGxlZCkgeworICAg
ICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBv
biAnJXMnLlxuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHVybFN0cmluZykpOworCisgICAg
ICAgIC8vIERpc3BsYXkgYW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19odG1sX3N0cmlu
Z19sb2FkKGV3a1ZpZXctPmV2YXNPYmplY3QoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hl
ZC4iLCAwLCB1cmxTdHJpbmcpOworICAgIH0KK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjp3ZWJQ
cm9jZXNzRGlkUmVsYXVuY2goV0tWaWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIEV3a1ZpZXcqIGV3a1ZpZXcgPSB0b0V3a1ZpZXcoY2xpZW50SW5mbyk7CisKKyAgICBpZiAo
Y29uc3QgY2hhciogdGhlbWVQYXRoID0gZXdrVmlldy0+dGhlbWVQYXRoKCkpCisgICAgICAgIGV3
a1ZpZXctPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOworfQorCiBWaWV3Q2xpZW50RWZsOjpWaWV3
Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKIHsKQEAgLTYxLDYg
Kzk1LDggQEAgVmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAg
IHZpZXdDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CiAgICAgdmlld0NsaWVudC5kaWRDaGFuZ2VD
b250ZW50c1NpemUgPSBkaWRDaGFuZ2VDb250ZW50c1NpemU7CiAgICAgdmlld0NsaWVudC52aWV3
TmVlZHNEaXNwbGF5ID0gdmlld05lZWRzRGlzcGxheTsKKyAgICB2aWV3Q2xpZW50LndlYlByb2Nl
c3NDcmFzaGVkID0gd2ViUHJvY2Vzc0NyYXNoZWQ7CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNz
RGlkUmVsYXVuY2ggPSB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiAKICAgICBXS1ZpZXdTZXRWaWV3
Q2xpZW50KG1fdmlldy0+d2tWaWV3KCksICZ2aWV3Q2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKaW5kZXggMmViZDNhMi4uYTJlMTkyMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKQEAgLTQ5
LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRXdrVmlldyogdG9Fd2tWaWV3KGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoV0tW
aWV3UmVmLCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGlj
IHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdLVmlld1JlZiwgV0tTaXplLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdS
ZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9p
ZCB3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV0tWaWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIAogICAgIEV3a1ZpZXcqIG1fdmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3LmNwcAppbmRleCA4NzFkZmMzLi45YWM5N2I5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTExMiw0ICsxMTIsMTQgQEAgdm9pZCBXZWJWaWV3
OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKICAg
ICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUodGhpcywgc2l6ZSk7CiB9CiAKK3ZvaWQg
V2ViVmlldzo6d2ViUHJvY2Vzc0NyYXNoZWQoKQoreworICAgIG1fY2xpZW50LndlYlByb2Nlc3ND
cmFzaGVkKHRoaXMsIG1fd2ViUGFnZVByb3h5LT51cmxBdFByb2Nlc3NFeGl0KCkpOworfQorCit2
b2lkIFdlYlZpZXc6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCgpCit7CisgICAgbV9jbGllbnQud2Vi
UHJvY2Vzc0RpZFJlbGF1bmNoKHRoaXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggNGI1NmI4NS4uMmJhNDBiOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKQEAgLTYxLDYgKzYxLDggQEAg
cHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1ZpZXdDbGllbnQqKTsK
ICAgICB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwog
ICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
KyAgICB2b2lkIHdlYlByb2Nlc3NDcmFzaGVkKCk7CisgICAgdm9pZCB3ZWJQcm9jZXNzRGlkUmVs
YXVuY2goKTsKIAogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KICAgICBFdmFz
X09iamVjdCogZXZhc09iamVjdCgpIHsgcmV0dXJuIG1fZXZhc09iamVjdDsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKaW5kZXggMDVmYzgwYy4u
MTgzZjQ4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGll
bnQuY3BwCkBAIC0yNyw4ICsyNywxMCBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKIAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdURjsKIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTQ4LDQgKzUwLDIwIEBAIHZvaWQgV2ViVmlld0NsaWVudDo6ZGlkQ2hhbmdl
Q29udGVudHNTaXplKFdlYlZpZXcqIHZpZXcsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV9j
bGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRvQVBJKHZpZXcpLCB0b0FQSShzaXplKSwgbV9j
bGllbnQuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgV2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0Ny
YXNoZWQoV2ViVmlldyogdmlldywgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFtX2Ns
aWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQu
d2ViUHJvY2Vzc0NyYXNoZWQodG9BUEkodmlldyksIGFkb3B0V0sodG9Db3BpZWRBUEkodXJsKSku
Z2V0KCksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlZpZXdDbGllbnQ6Ondl
YlByb2Nlc3NEaWRSZWxhdW5jaChXZWJWaWV3KiB2aWV3KQoreworICAgIGlmICghbV9jbGllbnQu
d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC53
ZWJQcm9jZXNzRGlkUmVsYXVuY2godG9BUEkodmlldyksIG1fY2xpZW50LmNsaWVudEluZm8pOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3Q2xpZW50LmgKaW5kZXggZDVlODJkZC4uNjgzNGE4MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0
OwpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBXZWJWaWV3Q2xpZW50OiBwdWJsaWMgQVBJQ2xpZW50
PFdLVmlld0NsaWVudCwga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uPgogcHVibGljOgogICAg
IHZvaWQgdmlld05lZWRzRGlzcGxheShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYp
OwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CisgICAgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXZWJWaWV3KiwgY29uc3Qg
V1RGOjpTdHJpbmcmIHVybCk7CisgICAgdm9pZCB3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV2ViVmll
dyopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188552</attachid>
            <date>2013-02-15 06:39:19 -0800</date>
            <delta_ts>2013-02-15 11:02:03 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>bug109828_v2</filename>
            <type>text/plain</type>
            <size>11834</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDFjNGUwMzljODhkMmJlMzdiODdiNWE4OWYwNDU0ZWRlNzcyODQ3MzIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VGh1IEZlYiAxNCAxNzoxMDo1NyAyMDEzICswMjAwCgogICAgYnVnMTA5ODI4CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGZiMTY5NGYuLjM3Y2I2OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMy0w
Mi0xNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIEludHJvZHVjZSBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2Vi
IFByb2Nlc3MgcmVsYXVuY2ggY2FsbGJhY2tzIHRvIFdLVmlld0NsaWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gZnV0dXJlIFdlYlZpZXcgY2xh
c3Mgd2lsbCBiZSBpbmhlcml0ZWQgZnJvbSBQYWdlQ2xpZW50LgorICAgICAgICBQcm92aWRpbmcg
V0tWaWV3Q2xpZW50IHdpdGggV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1
bmNoCisgICAgICAgIGNhbGxiYWNrcyBicmluZ3MgYmV0dGVyIGRlc2lnbiBhcyBXZWJWaWV3IHNo
b3VsZCBub3QgYmUgYXdhcmUgb2YKKyAgICAgICAgRUZMLXNwZWNpZmljIGNvZGUgaGFuZGxpbmcg
dGhlIGNvcnJlc3BvbmRpbmcgZXZlbnRzLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0VGhlbWVQYXRoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFn
ZUNsaWVudEJhc2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6cHJvY2Vz
c0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEJhc2U6OmRpZFJlbGF1bmNo
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0NsaWVudEVmbDo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVudEVmbDo6d2ViUHJvY2Vzc0Rp
ZFJlbGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVm
bCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmg6CisgICAgICAgIChW
aWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpzZXRUaGVtZVBhdGgpOgorCisgICAgICAgICAgICBBY2Nl
cHRzIFdURjo6U3RyaW5nIGluc3RlYWQgb2YgV0tTdHJpbmdSZWYgYXMgaXQgaXMKKyAgICAgICAg
ICAgIG1vcmUgYXBwcm9wcmlhdGUgZm9yIEMrKyBBUEkgaW1wbGVtZW50YXRpb24gY2xhc3MuCisK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNo
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuaDoKKyAgICAgICAgKFdlYlZpZXcp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktp
dCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OndlYlByb2Nlc3NEaWRSZWxhdW5j
aCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50Lmg6CisKIDIwMTMtMDIt
MTQgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVsbGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAg
W1dLMl0gUmVuYW1lIGZyb20gc2Nyb2xsT2Zmc2V0IHRvIHNjcm9sbERlbHRhIGluIFdlYkNocm9t
ZUNsaWVudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cAppbmRleCAyMTBmMmUyLi44MTA3ZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC04NCw3ICs4NCw3IEBAIGJvb2wgV0tWaWV3R2V0RHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoV0tWaWV3UmVmIHZpZXdSZWYpCiAKIHZvaWQgV0tWaWV3
U2V0VGhlbWVQYXRoKFdLVmlld1JlZiB2aWV3UmVmLCBXS1N0cmluZ1JlZiB0aGVtZSkKIHsKLSAg
ICB0b0ltcGwodmlld1JlZiktPnNldFRoZW1lUGF0aCh0aGVtZSk7CisgICAgdG9JbXBsKHZpZXdS
ZWYpLT5zZXRUaGVtZVBhdGgodG9JbXBsKHRoZW1lKS0+c3RyaW5nKCkpOwogfQogCiB2b2lkIFdL
Vmlld1N1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucyhXS1ZpZXdSZWYgdmlld1Jl
ZikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCmluZGV4IDMy
NTQ2YzYuLjA1ZGI5MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9X
S1ZpZXcuaApAQCAtMzUsOCArMzUsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2
YXNfT2JqZWN0OwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB2b2lkICgqV0tWaWV3
Q2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVk
ZWYgdm9pZCAoKldLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcs
IFdLUmVjdCBhcmVhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIHR5cGVkZWYgdm9pZCAoKldL
Vmlld1BhZ2VEaWRDaGFuZ2VDb250ZW50c1NpemVDYWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIFdL
U2l6ZSBzaXplLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKK3R5cGVkZWYgdm9pZCAoKldLVmll
d1dlYlByb2Nlc3NDcmFzaGVkQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1VSTFJlZiB1cmws
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tWaWV3Q2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
QEAgLTQ1LDYgKzQ3LDggQEAgc3RydWN0IFdLVmlld0NsaWVudCB7CiAgICAgLy8gVmVyc2lvbiAw
CiAgICAgV0tWaWV3Vmlld05lZWRzRGlzcGxheUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIHZp
ZXdOZWVkc0Rpc3BsYXk7CiAgICAgV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxi
YWNrICAgICAgICAgIGRpZENoYW5nZUNvbnRlbnRzU2l6ZTsKKyAgICBXS1ZpZXdXZWJQcm9jZXNz
Q3Jhc2hlZENhbGxiYWNrICAgICAgICAgICAgICAgICAgd2ViUHJvY2Vzc0NyYXNoZWQ7CisgICAg
V0tWaWV3Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYlByb2Nl
c3NEaWRSZWxhdW5jaDsKIH07CiB0eXBlZGVmIHN0cnVjdCBXS1ZpZXdDbGllbnQgV0tWaWV3Q2xp
ZW50OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRCYXNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2Uu
Y3BwCmluZGV4IGFjZWM2MDAuLjVkNmE2YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwCkBAIC0xMTksMzIgKzExOSwxMiBAQCBib29sIFBh
Z2VDbGllbnRCYXNlOjppc1ZpZXdJbldpbmRvdygpCiAKIHZvaWQgUGFnZUNsaWVudEJhc2U6OnBy
b2Nlc3NEaWRDcmFzaCgpCiB7Ci0gICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywg
d2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgotICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBld2tf
dmlld19sb2FkX3Byb2dyZXNzX2dldChtX3ZpZXctPmV2YXNPYmplY3QoKSk7Ci0gICAgaWYgKGxv
YWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKLSAgICAgICAgbG9hZFByb2dy
ZXNzID0gMTsKLSAgICAgICAgbV92aWV3LT5zbWFydENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5j
YWxsKCZsb2FkUHJvZ3Jlc3MpOwotICAgIH0KLQotICAgIG1fdmlldy0+c21hcnRDYWxsYmFjazxU
b29sdGlwVGV4dFVuc2V0PigpLmNhbGwoKTsKLQotICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwot
ICAgIG1fdmlldy0+c21hcnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5k
bGVkKTsKLQotICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICBDU3RyaW5nIHVybCA9IG1fdmll
dy0+cGFnZSgpLT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgpOwotICAgICAgICBXQVJOKCJXQVJO
SU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJs
LmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0gICAgICAgIGV3
a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV92aWV3LT5ldmFzT2JqZWN0KCksICJUaGUgd2ViIHBy
b2Nlc3MgaGFzIGNyYXNoZWQuIiwgMCwgdXJsLmRhdGEoKSk7Ci0gICAgfQorICAgIHZpZXcoKS0+
d2ViUHJvY2Vzc0NyYXNoZWQoKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlkUmVsYXVu
Y2hQcm9jZXNzKCkKIHsKLSAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGggPSBtX3ZpZXctPnRoZW1l
UGF0aCgpOwotICAgIGlmICh0aGVtZVBhdGgpCi0gICAgICAgIG1fdmlldy0+cGFnZSgpLT5zZXRU
aGVtZVBhdGgodGhlbWVQYXRoKTsKKyAgICB2aWV3KCktPndlYlByb2Nlc3NEaWRSZWxhdW5jaCgp
OwogfQogCiB2b2lkIFBhZ2VDbGllbnRCYXNlOjpwYWdlQ2xvc2VkKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCmluZGV4IDc3ZjhiZjMuLmQzMjBk
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNw
cApAQCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKIAogI2luY2x1
ZGUgIkV3a1ZpZXcuaCIKLSNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
U3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IEV3a1ZpZXdDYWxsYmFja3M7CiAKQEAgLTUwLDYgKzUxLDM3IEBAIHZvaWQgVmlld0NsaWVudEVm
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKFdLVmlld1JlZiwgV0tTaXplIHNpemUsIGNvbnN0IHZv
aWQqIGNsCiAgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2VkPigp
LmNhbGwoc2l6ZSk7CiB9CiAKK3ZvaWQgVmlld0NsaWVudEVmbDo6d2ViUHJvY2Vzc0NyYXNoZWQo
V0tWaWV3UmVmLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAg
RXdrVmlldyogZXdrVmlldyA9IHRvRXdrVmlldyhjbGllbnRJbmZvKTsKKworICAgIC8vIENoZWNr
IGlmIGxvYWRpbmcgd2FzIG9uZ29pbmcsIHdoZW4gd2ViIHByb2Nlc3MgY3Jhc2hlZC4KKyAgICBk
b3VibGUgbG9hZFByb2dyZXNzID0gZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19nZXQoZXdrVmlldy0+
ZXZhc09iamVjdCgpKTsKKyAgICBpZiAobG9hZFByb2dyZXNzID49IDAgJiYgbG9hZFByb2dyZXNz
IDwgMSkgeworICAgICAgICBsb2FkUHJvZ3Jlc3MgPSAxOworICAgICAgICBld2tWaWV3LT5zbWFy
dENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZsb2FkUHJvZ3Jlc3MpOworICAgIH0KKwor
ICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8VG9vbHRpcFRleHRVbnNldD4oKS5jYWxsKCk7CisK
KyAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsKKyAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPFdl
YlByb2Nlc3NDcmFzaGVkPigpLmNhbGwoJmhhbmRsZWQpOworCisgICAgaWYgKCFoYW5kbGVkKSB7
CisgICAgICAgIFdLRWluYVNoYXJlZFN0cmluZyB1cmxTdHJpbmcodXJsKTsKKyAgICAgICAgV0FS
TigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5c
biIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPih1cmxTdHJpbmcpKTsKKworICAgICAgICAvLyBE
aXNwbGF5IGFuIGVycm9yIHBhZ2UKKyAgICAgICAgZXdrX3ZpZXdfaHRtbF9zdHJpbmdfbG9hZChl
d2tWaWV3LT5ldmFzT2JqZWN0KCksICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuIiwgMCwg
dXJsU3RyaW5nKTsKKyAgICB9Cit9CisKK3ZvaWQgVmlld0NsaWVudEVmbDo6d2ViUHJvY2Vzc0Rp
ZFJlbGF1bmNoKFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorewor
ICAgIGlmIChjb25zdCBjaGFyKiB0aGVtZVBhdGggPSB0b0V3a1ZpZXcoY2xpZW50SW5mbyktPnRo
ZW1lUGF0aCgpKQorICAgICAgICBXS1ZpZXdTZXRUaGVtZVBhdGgodmlld1JlZiwgYWRvcHRXSyhX
S1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyh0aGVtZVBhdGgpKS5nZXQoKSk7Cit9CisKIFZp
ZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwoRXdrVmlldyogdmlldykKICAgICA6IG1fdmlldyh2
aWV3KQogewpAQCAtNjEsNiArOTMsOCBAQCBWaWV3Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKEV3
a1ZpZXcqIHZpZXcpCiAgICAgdmlld0NsaWVudC5jbGllbnRJbmZvID0gdGhpczsKICAgICB2aWV3
Q2xpZW50LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSA9IGRpZENoYW5nZUNvbnRlbnRzU2l6ZTsKICAg
ICB2aWV3Q2xpZW50LnZpZXdOZWVkc0Rpc3BsYXkgPSB2aWV3TmVlZHNEaXNwbGF5OworICAgIHZp
ZXdDbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQgPSB3ZWJQcm9jZXNzQ3Jhc2hlZDsKKyAgICB2aWV3
Q2xpZW50LndlYlByb2Nlc3NEaWRSZWxhdW5jaCA9IHdlYlByb2Nlc3NEaWRSZWxhdW5jaDsKIAog
ICAgIFdLVmlld1NldFZpZXdDbGllbnQobV92aWV3LT53a1ZpZXcoKSwgJnZpZXdDbGllbnQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZs
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaAppbmRleCAy
ZWJkM2EyLi42YmFhZjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1ZpZXdDbGllbnRFZmwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdD
bGllbnRFZmwuaApAQCAtNDksNiArNDksOCBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBFd2tWaWV3
KiB0b0V3a1ZpZXcoY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgdmll
d05lZWRzRGlzcGxheShXS1ZpZXdSZWYsIFdLUmVjdCBhcmVhLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBX
S1NpemUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIHdlYlByb2Nl
c3NDcmFzaGVkKFdLVmlld1JlZiwgV0tVUkxSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwor
ICAgIHN0YXRpYyB2b2lkIHdlYlByb2Nlc3NEaWRSZWxhdW5jaChXS1ZpZXdSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogCiAgICAgRXdrVmlldyogbV92aWV3OwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDg3MWRmYzMuLmI4NDRhZDkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtNjIsOSArNjIsOSBAQCB2
b2lkIFdlYlZpZXc6OmluaXRpYWxpemUoKQogICAgIG1fd2ViUGFnZVByb3h5LT5pbml0aWFsaXpl
V2ViUGFnZSgpOwogfQogCi12b2lkIFdlYlZpZXc6OnNldFRoZW1lUGF0aChXS1N0cmluZ1JlZiB0
aGVtZSkKK3ZvaWQgV2ViVmlldzo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWUpCiB7
Ci0gICAgbV93ZWJQYWdlUHJveHktPnNldFRoZW1lUGF0aCh0b1dURlN0cmluZyh0aGVtZSkudXRm
OCgpLmRhdGEoKSk7CisgICAgbV93ZWJQYWdlUHJveHktPnNldFRoZW1lUGF0aCh0aGVtZSk7CiB9
CiAKIHZvaWQgV2ViVmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5k
KQpAQCAtMTEyLDQgKzExMiwxNCBAQCB2b2lkIFdlYlZpZXc6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogICAgIG1fY2xpZW50LmRpZENoYW5nZUNv
bnRlbnRzU2l6ZSh0aGlzLCBzaXplKTsKIH0KIAordm9pZCBXZWJWaWV3Ojp3ZWJQcm9jZXNzQ3Jh
c2hlZCgpCit7CisgICAgbV9jbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQodGhpcywgbV93ZWJQYWdl
UHJveHktPnVybEF0UHJvY2Vzc0V4aXQoKSk7Cit9CisKK3ZvaWQgV2ViVmlldzo6d2ViUHJvY2Vz
c0RpZFJlbGF1bmNoKCkKK3sKKyAgICBtX2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2godGhp
cyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuaAppbmRleCA0YjU2Yjg1Li5lMzFlOTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
cmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sKTsKICAgICBib29sIGRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFRoZW1lUGF0aChXS1N0cmluZ1Jl
Zik7CisgICAgdm9pZCBzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKQEAgLTYxLDYgKzYxLDggQEAgcHVibGljOgog
ICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1ZpZXdDbGllbnQqKTsKICAgICB2b2lk
IHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQg
ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lk
IHdlYlByb2Nlc3NDcmFzaGVkKCk7CisgICAgdm9pZCB3ZWJQcm9jZXNzRGlkUmVsYXVuY2goKTsK
IAogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4KICAgICBFdmFzX09iamVjdCog
ZXZhc09iamVjdCgpIHsgcmV0dXJuIG1fZXZhc09iamVjdDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKaW5kZXggMDVmYzgwYy4uZmZjYTA5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogCiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKQEAgLTQ4LDQgKzQ5LDIwIEBAIHZvaWQgV2ViVmlld0NsaWVudDo6ZGlkQ2hh
bmdlQ29udGVudHNTaXplKFdlYlZpZXcqIHZpZXcsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAg
bV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRvQVBJKHZpZXcpLCB0b0FQSShzaXplKSwg
bV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgV2ViVmlld0NsaWVudDo6d2ViUHJvY2Vz
c0NyYXNoZWQoV2ViVmlldyogdmlldywgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFt
X2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGll
bnQud2ViUHJvY2Vzc0NyYXNoZWQodG9BUEkodmlldyksIGFkb3B0V0sodG9Db3BpZWRVUkxBUEko
dXJsKSkuZ2V0KCksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlZpZXdDbGll
bnQ6OndlYlByb2Nlc3NEaWRSZWxhdW5jaChXZWJWaWV3KiB2aWV3KQoreworICAgIGlmICghbV9j
bGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ns
aWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2godG9BUEkodmlldyksIG1fY2xpZW50LmNsaWVudElu
Zm8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKaW5kZXggZDVlODJkZC4uMTBjZjkyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJ
bnRSZWN0OwpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBXZWJWaWV3Q2xpZW50OiBwdWJsaWMgQVBJ
Q2xpZW50PFdLVmlld0NsaWVudCwga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uPgogcHVibGlj
OgogICAgIHZvaWQgdmlld05lZWRzRGlzcGxheShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqLCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXZWJWaWV3Kiwg
Y29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdlYlZp
ZXcqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188603</attachid>
            <date>2013-02-15 11:02:03 -0800</date>
            <delta_ts>2013-02-18 05:32:33 -0800</delta_ts>
            <desc>patch v3</desc>
            <filename>bug109828_v3</filename>
            <type>text/plain</type>
            <size>17379</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDc1MDMyMzY4NjFjNzJmNWQzNjI5OTkyZGJjY2RjZDExMjM0MTY3MjMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIEZlYiAxNSAyMDo0Nzo1NSAyMDEzICswMjAwCgogICAgYnVnMTA5ODI4CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDMwNzE3YWEuLjQ4MTJiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMy0w
Mi0xNSAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIEludHJvZHVjZSBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2Vi
IFByb2Nlc3MgcmVsYXVuY2ggY2FsbGJhY2tzIHRvIFdLVmlld0NsaWVudAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5ODI4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvdmlkaW5nIFdLVmlld0NsaWVu
dCB3aXRoIFdlYiBQcm9jZXNzIGNyYXNoIGFuZCBXZWIgUHJvY2VzcyByZWxhdW5jaAorICAgICAg
ICBjYWxsYmFja3MgYnJpbmdzIGJldHRlciBkZXNpZ24gYXMgV2ViVmlldyBzaG91bGQgbm90IGJl
IGF3YXJlIG9mCisgICAgICAgIEVGTC1zcGVjaWZpYyBjb2RlIGhhbmRsaW5nIHRoZSBjb3JyZXNw
b25kaW5nIGV2ZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cDoKKyAgICAgICAgKFdLVmlld1NldFRoZW1lUGF0aCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZCk6
CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50RWZsOjp3ZWJQ
cm9jZXNzRGlkUmVsYXVuY2gpOgorICAgICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50RWZsOjpWaWV3
Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaDoKKyAg
ICAgICAgKFZpZXdDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFRoZW1lUGF0aCk6CisKKyAgICAgICAg
ICAgIEFjY2VwdHMgV1RGOjpTdHJpbmcgaW5zdGVhZCBvZiBXS1N0cmluZ1JlZiBhcyBpdCBpcwor
ICAgICAgICAgICAgbW9yZSBhcHByb3ByaWF0ZSBmb3IgQysrIEFQSSBpbXBsZW1lbnRhdGlvbiBj
bGFzcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAoV2ViVmlldyk6CisgICAgICAgICogVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaDoKKwogMjAxMy0wMi0xNSAgU3VkYXJzYW5hIE5h
Z2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtX
SzJdIFVzZSBDIEFQSSBpbnNpZGUgQmF0dGVyeVByb3ZpZGVyIGFuZCBOZXR3b3JrSW5mb1Byb3Zp
ZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKaW5k
ZXggMjEwZjJlMi4uODEwN2UxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9lZmwvV0tWaWV3LmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFdLVmlld0dldERyYXdzVHJh
bnNwYXJlbnRCYWNrZ3JvdW5kKFdLVmlld1JlZiB2aWV3UmVmKQogCiB2b2lkIFdLVmlld1NldFRo
ZW1lUGF0aChXS1ZpZXdSZWYgdmlld1JlZiwgV0tTdHJpbmdSZWYgdGhlbWUpCiB7Ci0gICAgdG9J
bXBsKHZpZXdSZWYpLT5zZXRUaGVtZVBhdGgodGhlbWUpOworICAgIHRvSW1wbCh2aWV3UmVmKS0+
c2V0VGhlbWVQYXRoKHRvSW1wbCh0aGVtZSktPnN0cmluZygpKTsKIH0KIAogdm9pZCBXS1ZpZXdT
dXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoV0tWaWV3UmVmIHZpZXdSZWYpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCAzMjU0NmM2
Li4wNWRiOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmgKQEAgLTM1LDggKzM1LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9FdmFzX09iamVjdCBFdmFzX09i
amVjdDsKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5cGVkZWYgdm9pZCAoKldLVmlld0NhbGxi
YWNrKShXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1Jl
Y3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdQ
YWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1NpemUg
c2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdXZWJQ
cm9jZXNzQ3Jhc2hlZENhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tVUkxSZWYgdXJsLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLVmlld0NsaWVudCB7CiAgICAgaW50ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC00
NSw2ICs0Nyw4IEBAIHN0cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIC8vIFZlcnNpb24gMAogICAg
IFdLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxsYmFjayAgICAgICAgICAgICAgICAgICB2aWV3TmVl
ZHNEaXNwbGF5OwogICAgIFdLVmlld1BhZ2VEaWRDaGFuZ2VDb250ZW50c1NpemVDYWxsYmFjayAg
ICAgICAgICBkaWRDaGFuZ2VDb250ZW50c1NpemU7CisgICAgV0tWaWV3V2ViUHJvY2Vzc0NyYXNo
ZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgIHdlYlByb2Nlc3NDcmFzaGVkOworICAgIFdLVmll
d0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJQcm9jZXNzRGlk
UmVsYXVuY2g7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tWaWV3Q2xpZW50IFdLVmlld0NsaWVudDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKaW5k
ZXggNzdmOGJmMy4uZDMyMGQwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5jbHVkZSAiVmlld0NsaWVu
dEVmbC5oIgogCiAjaW5jbHVkZSAiRXdrVmlldy5oIgotI2luY2x1ZGUgIldLVmlldy5oIgorI2lu
Y2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgog
CiB1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIApAQCAtNTAsNiArNTEsMzcgQEAg
dm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1Np
emUgc2l6ZSwgY29uc3Qgdm9pZCogY2wKICAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPENvbnRl
bnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0KIAordm9pZCBWaWV3Q2xpZW50RWZsOjp3
ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8p
OworCisgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywgd2hlbiB3ZWIgcHJvY2Vz
cyBjcmFzaGVkLgorICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBld2tfdmlld19sb2FkX3Byb2dy
ZXNzX2dldChld2tWaWV3LT5ldmFzT2JqZWN0KCkpOworICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0g
MCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKSB7CisgICAgICAgIGxvYWRQcm9ncmVzcyA9IDE7CisgICAg
ICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9n
cmVzcyk7CisgICAgfQorCisgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4dFVu
c2V0PigpLmNhbGwoKTsKKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGV3a1ZpZXct
PnNtYXJ0Q2FsbGJhY2s8V2ViUHJvY2Vzc0NyYXNoZWQ+KCkuY2FsbCgmaGFuZGxlZCk7CisKKyAg
ICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybFN0cmluZyh1
cmwpOworICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQg
YSBjcmFzaCBvbiAnJXMnLlxuIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHVybFN0cmluZykp
OworCisgICAgICAgIC8vIERpc3BsYXkgYW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19o
dG1sX3N0cmluZ19sb2FkKGV3a1ZpZXctPmV2YXNPYmplY3QoKSwgIlRoZSB3ZWIgcHJvY2VzcyBo
YXMgY3Jhc2hlZC4iLCAwLCB1cmxTdHJpbmcpOworICAgIH0KK30KKwordm9pZCBWaWV3Q2xpZW50
RWZsOjp3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCit7CisgICAgaWYgKGNvbnN0IGNoYXIqIHRoZW1lUGF0aCA9IHRvRXdrVmll
dyhjbGllbnRJbmZvKS0+dGhlbWVQYXRoKCkpCisgICAgICAgIFdLVmlld1NldFRoZW1lUGF0aCh2
aWV3UmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRoZW1lUGF0aCkp
LmdldCgpKTsKK30KKwogVmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3
KQogICAgIDogbV92aWV3KHZpZXcpCiB7CkBAIC02MSw2ICs5Myw4IEBAIFZpZXdDbGllbnRFZmw6
OlZpZXdDbGllbnRFZmwoRXdrVmlldyogdmlldykKICAgICB2aWV3Q2xpZW50LmNsaWVudEluZm8g
PSB0aGlzOwogICAgIHZpZXdDbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplID0gZGlkQ2hhbmdl
Q29udGVudHNTaXplOwogICAgIHZpZXdDbGllbnQudmlld05lZWRzRGlzcGxheSA9IHZpZXdOZWVk
c0Rpc3BsYXk7CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCA9IHdlYlByb2Nlc3ND
cmFzaGVkOworICAgIHZpZXdDbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoID0gd2ViUHJvY2Vz
c0RpZFJlbGF1bmNoOwogCiAgICAgV0tWaWV3U2V0Vmlld0NsaWVudChtX3ZpZXctPndrVmlldygp
LCAmdmlld0NsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1ZpZXdDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0Ns
aWVudEVmbC5oCmluZGV4IDJlYmQzYTIuLjZiYWFmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCkBAIC00OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAg
ICAgc3RhdGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAg
ICBzdGF0aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0IGFyZWEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNvbnRlbnRz
U2l6ZShXS1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3Rh
dGljIHZvaWQgd2ViUHJvY2Vzc0NyYXNoZWQoV0tWaWV3UmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdL
Vmlld1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAKICAgICBFd2tWaWV3KiBtX3ZpZXc7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggM2FiNGZk
NC4uNTc4MmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBA
IC04Myw5ICs4Myw5IEBAIEV2YXNfT2JqZWN0KiBXZWJWaWV3OjpldmFzT2JqZWN0KCkKICAgICBy
ZXR1cm4gbV9ld2tWaWV3LT5ldmFzT2JqZWN0KCk7CiB9CiAKLXZvaWQgV2ViVmlldzo6c2V0VGhl
bWVQYXRoKFdLU3RyaW5nUmVmIHRoZW1lKQordm9pZCBXZWJWaWV3OjpzZXRUaGVtZVBhdGgoY29u
c3QgU3RyaW5nJiB0aGVtZSkKIHsKLSAgICBtX3BhZ2UtPnNldFRoZW1lUGF0aCh0b1dURlN0cmlu
Zyh0aGVtZSkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9wYWdlLT5zZXRUaGVtZVBhdGgodGhlbWUp
OwogfQogCiB2b2lkIFdlYlZpZXc6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dy
b3VuZCkKQEAgLTIwNSwzMiArMjA1LDEyIEBAIGJvb2wgV2ViVmlldzo6aXNWaWV3SW5XaW5kb3co
KQogCiB2b2lkIFdlYlZpZXc6OnByb2Nlc3NEaWRDcmFzaCgpCiB7Ci0gICAgLy8gQ2hlY2sgaWYg
bG9hZGluZyB3YXMgb25nb2luZywgd2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgotICAgIGRvdWJs
ZSBsb2FkUHJvZ3Jlc3MgPSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChtX2V3a1ZpZXctPmV2
YXNPYmplY3QoKSk7Ci0gICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8
IDEpIHsKLSAgICAgICAgbG9hZFByb2dyZXNzID0gMTsKLSAgICAgICAgbV9ld2tWaWV3LT5zbWFy
dENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZsb2FkUHJvZ3Jlc3MpOwotICAgIH0KLQot
ICAgIG1fZXdrVmlldy0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4dFVuc2V0PigpLmNhbGwoKTsK
LQotICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAgIG1fZXdrVmlldy0+c21hcnRDYWxsYmFj
azxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5kbGVkKTsKLQotICAgIGlmICghaGFuZGxl
ZCkgewotICAgICAgICBDU3RyaW5nIHVybCA9IG1fcGFnZS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0
ZjgoKTsKLSAgICAgICAgV0FSTigiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2Vk
IGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkpOwotCi0gICAgICAgIC8vIERpc3BsYXkg
YW4gZXJyb3IgcGFnZQotICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKG1fZXdrVmll
dy0+ZXZhc09iamVjdCgpLCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybC5k
YXRhKCkpOwotICAgIH0KKyAgICBtX2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCh0aGlzLCBtX3Bh
Z2UtPnVybEF0UHJvY2Vzc0V4aXQoKSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKCkKIHsKLSAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGggPSBtX2V3a1ZpZXctPnRoZW1l
UGF0aCgpOwotICAgIGlmICh0aGVtZVBhdGgpCi0gICAgICAgIG1fcGFnZS0+c2V0VGhlbWVQYXRo
KHRoZW1lUGF0aCk7CisgICAgbV9jbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoKHRoaXMpOwog
fQogCiB2b2lkIFdlYlZpZXc6OnBhZ2VDbG9zZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuaAppbmRleCBhYjIyOGIwLi5lNDRmYzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuaApAQCAtNTksNyArNTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRE
cmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sKTsKICAgICBib29sIGRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKCkgY29uc3Q7CiAKLSAgICB2b2lkIHNldFRoZW1lUGF0aChXS1N0cmluZ1Jl
Zik7CisgICAgdm9pZCBzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIHN1
c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0
aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCmluZGV4IDA1ZmM4MGMuLmZmY2EwOTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKIAogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCkBAIC00OCw0ICs0OSwyMCBAQCB2b2lkIFdlYlZpZXdDbGllbnQ6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZShXZWJWaWV3KiB2aWV3LCBjb25zdCBJbnRTaXplJiBzaXplKQogICAgIG1fY2xpZW50
LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh0b0FQSSh2aWV3KSwgdG9BUEkoc2l6ZSksIG1fY2xpZW50
LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYlZpZXdDbGllbnQ6OndlYlByb2Nlc3NDcmFzaGVk
KFdlYlZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIGlmICghbV9jbGllbnQu
d2ViUHJvY2Vzc0NyYXNoZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fY2xpZW50LndlYlBy
b2Nlc3NDcmFzaGVkKHRvQVBJKHZpZXcpLCBhZG9wdFdLKHRvQ29waWVkVVJMQVBJKHVybCkpLmdl
dCgpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJWaWV3Q2xpZW50Ojp3ZWJQ
cm9jZXNzRGlkUmVsYXVuY2goV2ViVmlldyogdmlldykKK3sKKyAgICBpZiAoIW1fY2xpZW50Lndl
YlByb2Nlc3NEaWRSZWxhdW5jaCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQud2Vi
UHJvY2Vzc0RpZFJlbGF1bmNoKHRvQVBJKHZpZXcpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0NsaWVudC5oCmluZGV4IGQ1ZTgyZGQuLjEwY2Y5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsK
QEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgV2ViVmlld0NsaWVudDogcHVibGljIEFQSUNsaWVudDxX
S1ZpZXdDbGllbnQsIGtXS1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbj4KIHB1YmxpYzoKICAgICB2
b2lkIHZpZXdOZWVkc0Rpc3BsYXkoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsK
ICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpOworICAgIHZvaWQgd2ViUHJvY2Vzc0NyYXNoZWQoV2ViVmlldyosIGNvbnN0IFN0
cmluZyYgdXJsKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NEaWRSZWxhdW5jaChXZWJWaWV3Kik7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODM5OGRlLi4wOWFjZmZiIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMTMt
MDItMTUgIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+
CisKKyAgICAgICAgW1dLMl1bRUZMXSBJbnRyb2R1Y2UgV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdl
YiBQcm9jZXNzIHJlbGF1bmNoIGNhbGxiYWNrcyB0byBXS1ZpZXdDbGllbnQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTgyOAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIEFQSSB0ZXN0IGZvciBu
ZXdseSBhZGRlZCBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2ViIFByb2Nlc3MgcmVsYXVuY2ggV0tW
aWV3Q2xpZW50CisgICAgICAgIGNhbGxiYWNrcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Q01ha2VMaXN0cy50eHQ6CisKKyAgICAgICAgICAgIFRlc3RzIGxvY2F0ZWQgaW4gJ1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Micgc3ViZGlyZWN0b3JpZXMgYXJlIGFsc28KKyAgICAgICAgICAg
IGNvbnNpZGVyZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtl
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9lZmwvV0tWaWV3Q2xpZW50
V2ViUHJvY2Vzc0NhbGxiYWNrcy5jcHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6c2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjp3ZWJQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJQ
cm9jZXNzRGlkUmVsYXVuY2gpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0Vmlld0NsaWVu
dCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxMy0wMi0xNSAgQW5kcmV5
IEx1c2huaWtvdiAgPGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW1wbGVtZW50IHNtYXJ0IGJyYWNlcyBmdW5jdGlvbmFsaXR5CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAppbmRleCAxZDk2YjBkLi44YzUyZThhIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01h
a2VMaXN0cy50eHQKQEAgLTEyNywxMCArMTI3LDExIEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0xJ
QlJBUklFUwogKQogCiBmb3JlYWNoICh0ZXN0TmFtZSAke3Rlc3Rfd2Via2l0Ml9hcGlfQklOQVJJ
RVN9KQotICAgIGFkZF9leGVjdXRhYmxlKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi8ke3Rlc3ROYW1lfS5jcHApCi0gICAgYWRk
X3Rlc3QodGVzdF93ZWJraXQyX2FwaV8ke3Rlc3ROYW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVU
X0RJUkVDVE9SWX0vdGVzdF93ZWJraXQyX2FwaV8ke3Rlc3ROYW1lfSkKLSAgICBzZXRfdGVzdHNf
cHJvcGVydGllcyh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdE5hbWV9IFBST1BFUlRJRVMgVElNRU9V
VCA2MCkKLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXModGVzdF93ZWJraXQyX2FwaV8ke3Rlc3RO
YW1lfSAke3Rlc3Rfd2Via2l0Ml9hcGlfTElCUkFSSUVTfSkKKyAgICBnZXRfZmlsZW5hbWVfY29t
cG9uZW50KHRlc3RCYXNlTmFtZSAke3Rlc3ROYW1lfSBOQU1FKQorICAgIGFkZF9leGVjdXRhYmxl
KHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rl
c3RzL1dlYktpdDIvJHt0ZXN0TmFtZX0uY3BwKQorICAgIGFkZF90ZXN0KHRlc3Rfd2Via2l0Ml9h
cGlfJHt0ZXN0QmFzZU5hbWV9ICR7Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS90ZXN0
X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VOYW1lfSkKKyAgICBzZXRfdGVzdHNfcHJvcGVydGllcyh0
ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VOYW1lfSBQUk9QRVJUSUVTIFRJTUVPVVQgNjApCisg
ICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9
ICR7dGVzdF93ZWJraXQyX2FwaV9MSUJSQVJJRVN9KQogZW5kZm9yZWFjaCAoKQogCiAjIFdlIGRv
bid0IHJ1biB0ZXN0cyB0aGF0IGFyZSBleHBlY3RlZCB0byBmYWlsLiBXZSBjb3VsZCB1c2UgdGhl
IFdJTExfRkFJTApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5j
bWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggZDhmNWE3
OC4uODM5ODNiNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC04Niw2
ICs4Niw3IEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTCiAgICAgV0tTdHJpbmdKU1N0
cmluZwogICAgIFdLVVJMCiAgICAgV2lsbFNlbmRTdWJtaXRFdmVudAorICAgIGVmbC9XS1ZpZXdD
bGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzCiApCiAKIHNldCh0ZXN0X3dlYmtpdDJfYXBpX2ZhaWxf
QklOQVJJRVMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9l
ZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vzc0NhbGxiYWNrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MuY3Bw
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZWIzNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVu
dFdlYlByb2Nlc3NDYWxsYmFja3MuY3BwCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBI
T0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1
ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgeworCitzdGF0aWMgYm9vbCBkaWRGaW5pc2hMb2FkOworc3RhdGlj
IGJvb2wgZGlkQ3Jhc2g7CitzdGF0aWMgYm9vbCBkaWRSZWxhdW5jaDsKKworc3RhdGljIFdLVVJM
UmVmIHVybFRvUGFzczsKK3N0YXRpYyBXS1ZpZXdSZWYgdmlld1RvUGFzczsKK3N0YXRpYyBjb25z
dCBjaGFyKiBkYXRhVG9QYXNzOworCitzdGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqKQoreworICAgIGRp
ZEZpbmlzaExvYWQgPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50
KFdLUGFnZVJlZiBwYWdlKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJDbGllbnQ7
CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKwor
ICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hMb2FkRm9y
RnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZsb2FkZXJDbGll
bnQpOworfQorCit2b2lkIHdlYlByb2Nlc3NDcmFzaGVkKFdLVmlld1JlZiB2aWV3LCBXS1VSTFJl
ZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRVhQRUNUX0VRKHZpZXdUb1Bh
c3MsIHZpZXcpOworICAgIEVYUEVDVF9FUShkYXRhVG9QYXNzLCBjbGllbnRJbmZvKTsKKyAgICBF
WFBFQ1RfVFJVRShXS1VSTElzRXF1YWwodXJsLCB1cmxUb1Bhc3MpKTsKKyAgICBkaWRDcmFzaCA9
IHRydWU7Cit9CisKK3ZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdLVmlld1JlZiB2aWV3LCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEVYUEVDVF9FUSh2aWV3VG9QYXNzLCB2aWV3
KTsKKyAgICBFWFBFQ1RfRVEoZGF0YVRvUGFzcywgY2xpZW50SW5mbyk7CisgICAgZGlkUmVsYXVu
Y2ggPSB0cnVlOworfQorCitzdGF0aWMgdm9pZCBzZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3
KQoreworICAgIFdLVmlld0NsaWVudCB2aWV3Q2xpZW50OworICAgIG1lbXNldCgmdmlld0NsaWVu
dCwgMCwgc2l6ZW9mKFdLVmlld0NsaWVudCkpOworCisgICAgdmlld0NsaWVudC52ZXJzaW9uID0g
a1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHZpZXdDbGllbnQuY2xpZW50SW5mbyA9
IGRhdGFUb1Bhc3M7CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCA9IHdlYlByb2Nl
c3NDcmFzaGVkOworICAgIHZpZXdDbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoID0gd2ViUHJv
Y2Vzc0RpZFJlbGF1bmNoOworCisgICAgV0tWaWV3U2V0Vmlld0NsaWVudCh2aWV3LCAmdmlld0Ns
aWVudCk7Cit9CisKK1RFU1QoV2ViS2l0MiwgV0tWaWV3Q2xpZW50V2ViUHJvY2Vzc0NhbGxiYWNr
cykKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgV0tD
b250ZXh0Q3JlYXRlKCkpOworICAgIHVybFRvUGFzcyA9IFV0aWw6OmNyZWF0ZVVSTEZvclJlc291
cmNlKCJzaW1wbGUiLCAiaHRtbCIpOworICAgIGRhdGFUb1Bhc3MgPSBuZXcgY2hhclsxMF07CisK
KyAgICBQbGF0Zm9ybVdlYlZpZXcgdmlldyhjb250ZXh0LmdldCgpKTsKKyAgICB2aWV3VG9QYXNz
ID0gdmlldy5wbGF0Zm9ybVZpZXcoKTsKKworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQodmlldy5w
YWdlKCkpOworICAgIHNldFZpZXdDbGllbnQodmlld1RvUGFzcyk7CisKKyAgICBXS1BhZ2VMb2Fk
VVJMKHZpZXcucGFnZSgpLCB1cmxUb1Bhc3MpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9h
ZCk7CisKKyAgICBXS1BhZ2VUZXJtaW5hdGUodmlldy5wYWdlKCkpOworICAgIFV0aWw6OnJ1bigm
ZGlkQ3Jhc2gpOworCisgICAgV0tQYWdlUmVsb2FkKHZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpy
dW4oJmRpZFJlbGF1bmNoKTsKKworICAgIGRlbGV0ZVtdIGRhdGFUb1Bhc3M7CisgICAgV0tSZWxl
YXNlKHVybFRvUGFzcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188860</attachid>
            <date>2013-02-18 05:32:33 -0800</date>
            <delta_ts>2013-02-20 03:50:54 -0800</delta_ts>
            <desc>patch v4</desc>
            <filename>bug109828_v4</filename>
            <type>text/plain</type>
            <size>17456</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDViZmQ1NzQ5MzRlNjcwMjBkZWE4MTE1NzY3OGY1OWYxYjExNzgxY2EKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIEZlYiAxNSAyMDo0Nzo1NSAyMDEzICswMjAwCgogICAgYnVnMTA5ODI4CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IDMwNzE3YWEuLjYxMDBhYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMy0w
Mi0xOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIEFkZCBjYWxsYmFja3MgdG8gdGhlIFdLVmlld0NsaWVudCB0
byBoYW5kbGUgV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIHJlbGF1bmNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRpbmcgV0tWaWV3Q2xpZW50IHdp
dGggV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1bmNoCisgICAgICAgIGNh
bGxiYWNrcyBicmluZ3MgYmV0dGVyIGRlc2lnbiBhcyBXZWJWaWV3IHNob3VsZCBub3QgYmUgYXdh
cmUgb2YKKyAgICAgICAgRUZMLXNwZWNpZmljIGNvZGUgaGFuZGxpbmcgdGhlIGNvcnJlc3BvbmRp
bmcgZXZlbnRzLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbWVudGlvbmVk
IFdlYiBQcm9jZXNzIGNhbGxiYWNrcyB3YXMgYWxzbyBhZGRlZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NldFRoZW1lUGF0aCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50
RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzRGlkUmVsYXVuY2gpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1ZpZXdDbGllbnRFZmwuaDoKKyAgICAgICAgKFZpZXdDbGllbnRFZmwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNl
dFRoZW1lUGF0aCk6CisKKyAgICAgICAgICAgIEFjY2VwdHMgV1RGOjpTdHJpbmcgaW5zdGVhZCBv
ZiBXS1N0cmluZ1JlZiBhcyBpdCBpcworICAgICAgICAgICAgbW9yZSBhcHByb3ByaWF0ZSBmb3Ig
QysrIEFQSSBpbXBsZW1lbnRhdGlvbiBjbGFzcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRSZWxhdW5j
aFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAo
V2ViVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0Rp
ZFJlbGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaDoKKwog
MjAxMy0wMi0xNSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5hZ2luZW5pQGludGVs
LmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIFVzZSBDIEFQSSBpbnNpZGUgQmF0dGVyeVByb3Zp
ZGVyIGFuZCBOZXR3b3JrSW5mb1Byb3ZpZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5jcHAKaW5kZXggMjEwZjJlMi4uODEwN2UxMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtODQsNyArODQsNyBA
QCBib29sIFdLVmlld0dldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKFdLVmlld1JlZiB2aWV3
UmVmKQogCiB2b2lkIFdLVmlld1NldFRoZW1lUGF0aChXS1ZpZXdSZWYgdmlld1JlZiwgV0tTdHJp
bmdSZWYgdGhlbWUpCiB7Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRUaGVtZVBhdGgodGhlbWUp
OworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0VGhlbWVQYXRoKHRvSW1wbCh0aGVtZSktPnN0cmlu
ZygpKTsKIH0KIAogdm9pZCBXS1ZpZXdTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuaAppbmRleCAzMjU0NmM2Li4wNWRiOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTM1LDggKzM1LDEwIEBAIHR5cGVkZWYgc3Ry
dWN0IF9FdmFzX09iamVjdCBFdmFzX09iamVjdDsKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5
cGVkZWYgdm9pZCAoKldLVmlld0NhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJh
Y2spKFdLVmlld1JlZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2sp
KFdLVmlld1JlZiB2aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0
eXBlZGVmIHZvaWQgKCpXS1ZpZXdXZWJQcm9jZXNzQ3Jhc2hlZENhbGxiYWNrKShXS1ZpZXdSZWYg
dmlldywgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdL
Vmlld0NsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHZlcnNpb247CkBAIC00NSw2ICs0Nyw4IEBAIHN0cnVjdCBXS1ZpZXdDbGllbnQg
ewogICAgIC8vIFZlcnNpb24gMAogICAgIFdLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICB2aWV3TmVlZHNEaXNwbGF5OwogICAgIFdLVmlld1BhZ2VEaWRDaGFu
Z2VDb250ZW50c1NpemVDYWxsYmFjayAgICAgICAgICBkaWRDaGFuZ2VDb250ZW50c1NpemU7Cisg
ICAgV0tWaWV3V2ViUHJvY2Vzc0NyYXNoZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgIHdlYlBy
b2Nlc3NDcmFzaGVkOworICAgIFdLVmlld0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tW
aWV3Q2xpZW50IFdLVmlld0NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvVmlld0NsaWVudEVmbC5jcHAKaW5kZXggNzdmOGJmMy4uZDMyMGQwZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw3ICsyNyw4
IEBACiAjaW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgogCiAjaW5jbHVkZSAiRXdrVmlldy5oIgot
I2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KKyNpbmNs
dWRlIDxXZWJLaXQyL1dLVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNr
czsKIApAQCAtNTAsNiArNTEsMzcgQEAgdm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2wKICAgICBld2tW
aWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0K
IAordm9pZCBWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYsIFdLVVJM
UmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBld2tWaWV3
ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8pOworCisgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMg
b25nb2luZywgd2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgorICAgIGRvdWJsZSBsb2FkUHJvZ3Jl
c3MgPSBld2tfdmlld19sb2FkX3Byb2dyZXNzX2dldChld2tWaWV3LT5ldmFzT2JqZWN0KCkpOwor
ICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKSB7CisgICAgICAg
IGxvYWRQcm9ncmVzcyA9IDE7CisgICAgICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8TG9hZFBy
b2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7CisgICAgfQorCisgICAgZXdrVmlldy0+c21h
cnRDYWxsYmFjazxUb29sdGlwVGV4dFVuc2V0PigpLmNhbGwoKTsKKworICAgIGJvb2wgaGFuZGxl
ZCA9IGZhbHNlOworICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8V2ViUHJvY2Vzc0NyYXNoZWQ+
KCkuY2FsbCgmaGFuZGxlZCk7CisKKyAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIHVybFN0cmluZyh1cmwpOworICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUg
d2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KHVybFN0cmluZykpOworCisgICAgICAgIC8vIERpc3BsYXkgYW4gZXJyb3Ig
cGFnZQorICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKGV3a1ZpZXctPmV2YXNPYmpl
Y3QoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1cmxTdHJpbmcpOworICAg
IH0KK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV0tWaWV3
UmVmIHZpZXdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgaWYgKGNvbnN0IGNo
YXIqIHRoZW1lUGF0aCA9IHRvRXdrVmlldyhjbGllbnRJbmZvKS0+dGhlbWVQYXRoKCkpCisgICAg
ICAgIFdLVmlld1NldFRoZW1lUGF0aCh2aWV3UmVmLCBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0
aFVURjhDU3RyaW5nKHRoZW1lUGF0aCkpLmdldCgpKTsKK30KKwogVmlld0NsaWVudEVmbDo6Vmll
d0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAgIDogbV92aWV3KHZpZXcpCiB7CkBAIC02MSw2
ICs5Myw4IEBAIFZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwoRXdrVmlldyogdmlldykKICAg
ICB2aWV3Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwogICAgIHZpZXdDbGllbnQuZGlkQ2hhbmdl
Q29udGVudHNTaXplID0gZGlkQ2hhbmdlQ29udGVudHNTaXplOwogICAgIHZpZXdDbGllbnQudmll
d05lZWRzRGlzcGxheSA9IHZpZXdOZWVkc0Rpc3BsYXk7CisgICAgdmlld0NsaWVudC53ZWJQcm9j
ZXNzQ3Jhc2hlZCA9IHdlYlByb2Nlc3NDcmFzaGVkOworICAgIHZpZXdDbGllbnQud2ViUHJvY2Vz
c0RpZFJlbGF1bmNoID0gd2ViUHJvY2Vzc0RpZFJlbGF1bmNoOwogCiAgICAgV0tWaWV3U2V0Vmll
d0NsaWVudChtX3ZpZXctPndrVmlldygpLCAmdmlld0NsaWVudCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCmluZGV4IDJlYmQzYTIuLjZiYWFmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCkBAIC00
OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdL
Vmlld1JlZiwgV0tSZWN0IGFyZWEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRp
YyB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShXS1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc0NyYXNoZWQoV0tWaWV3
UmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdLVmlld1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAKICAgICBFd2tWaWV3KiBtX3ZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlldy5jcHAKaW5kZXggM2FiNGZkNC4uNTc4MmFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC04Myw5ICs4Myw5IEBAIEV2YXNfT2JqZWN0KiBXZWJW
aWV3OjpldmFzT2JqZWN0KCkKICAgICByZXR1cm4gbV9ld2tWaWV3LT5ldmFzT2JqZWN0KCk7CiB9
CiAKLXZvaWQgV2ViVmlldzo6c2V0VGhlbWVQYXRoKFdLU3RyaW5nUmVmIHRoZW1lKQordm9pZCBX
ZWJWaWV3OjpzZXRUaGVtZVBhdGgoY29uc3QgU3RyaW5nJiB0aGVtZSkKIHsKLSAgICBtX3BhZ2Ut
PnNldFRoZW1lUGF0aCh0b1dURlN0cmluZyh0aGVtZSkudXRmOCgpLmRhdGEoKSk7CisgICAgbV9w
YWdlLT5zZXRUaGVtZVBhdGgodGhlbWUpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNldERyYXdzQmFj
a2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKQEAgLTIwNSwzMiArMjA1LDEyIEBAIGJvb2wg
V2ViVmlldzo6aXNWaWV3SW5XaW5kb3coKQogCiB2b2lkIFdlYlZpZXc6OnByb2Nlc3NEaWRDcmFz
aCgpCiB7Ci0gICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywgd2hlbiB3ZWIgcHJv
Y2VzcyBjcmFzaGVkLgotICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBld2tfdmlld19sb2FkX3By
b2dyZXNzX2dldChtX2V3a1ZpZXctPmV2YXNPYmplY3QoKSk7Ci0gICAgaWYgKGxvYWRQcm9ncmVz
cyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKLSAgICAgICAgbG9hZFByb2dyZXNzID0gMTsK
LSAgICAgICAgbV9ld2tWaWV3LT5zbWFydENhbGxiYWNrPExvYWRQcm9ncmVzcz4oKS5jYWxsKCZs
b2FkUHJvZ3Jlc3MpOwotICAgIH0KLQotICAgIG1fZXdrVmlldy0+c21hcnRDYWxsYmFjazxUb29s
dGlwVGV4dFVuc2V0PigpLmNhbGwoKTsKLQotICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOwotICAg
IG1fZXdrVmlldy0+c21hcnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5k
bGVkKTsKLQotICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICBDU3RyaW5nIHVybCA9IG1fcGFn
ZS0+dXJsQXRQcm9jZXNzRXhpdCgpLnV0ZjgoKTsKLSAgICAgICAgV0FSTigiV0FSTklORzogVGhl
IHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy5cbiIsIHVybC5kYXRhKCkp
OwotCi0gICAgICAgIC8vIERpc3BsYXkgYW4gZXJyb3IgcGFnZQotICAgICAgICBld2tfdmlld19o
dG1sX3N0cmluZ19sb2FkKG1fZXdrVmlldy0+ZXZhc09iamVjdCgpLCAiVGhlIHdlYiBwcm9jZXNz
IGhhcyBjcmFzaGVkLiIsIDAsIHVybC5kYXRhKCkpOwotICAgIH0KKyAgICBtX2NsaWVudC53ZWJQ
cm9jZXNzQ3Jhc2hlZCh0aGlzLCBtX3BhZ2UtPnVybEF0UHJvY2Vzc0V4aXQoKSk7CiB9CiAKIHZv
aWQgV2ViVmlldzo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBjb25zdCBjaGFyKiB0aGVt
ZVBhdGggPSBtX2V3a1ZpZXctPnRoZW1lUGF0aCgpOwotICAgIGlmICh0aGVtZVBhdGgpCi0gICAg
ICAgIG1fcGFnZS0+c2V0VGhlbWVQYXRoKHRoZW1lUGF0aCk7CisgICAgbV9jbGllbnQud2ViUHJv
Y2Vzc0RpZFJlbGF1bmNoKHRoaXMpOwogfQogCiB2b2lkIFdlYlZpZXc6OnBhZ2VDbG9zZWQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCBhYjIyOGIwLi5lNDRmYzYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtNTksNyArNTksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChib29sKTsK
ICAgICBib29sIGRyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKCkgY29uc3Q7CiAKLSAgICB2b2lk
IHNldFRoZW1lUGF0aChXS1N0cmluZ1JlZik7CisgICAgdm9pZCBzZXRUaGVtZVBhdGgoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9u
cygpOwogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCmluZGV4IDA1
ZmM4MGMuLmZmY2EwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0NsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3Q2xpZW50LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQu
aCIKIAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC00OCw0ICs0OSwyMCBAQCB2b2lkIFdlYlZp
ZXdDbGllbnQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShXZWJWaWV3KiB2aWV3LCBjb25zdCBJbnRT
aXplJiBzaXplKQogICAgIG1fY2xpZW50LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh0b0FQSSh2aWV3
KSwgdG9BUEkoc2l6ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOwogfQogCit2b2lkIFdlYlZpZXdD
bGllbnQ6OndlYlByb2Nlc3NDcmFzaGVkKFdlYlZpZXcqIHZpZXcsIGNvbnN0IFN0cmluZyYgdXJs
KQoreworICAgIGlmICghbV9jbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fY2xpZW50LndlYlByb2Nlc3NDcmFzaGVkKHRvQVBJKHZpZXcpLCBhZG9wdFdL
KHRvQ29waWVkVVJMQVBJKHVybCkpLmdldCgpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwor
dm9pZCBXZWJWaWV3Q2xpZW50Ojp3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV2ViVmlldyogdmlldykK
K3sKKyAgICBpZiAoIW1fY2xpZW50LndlYlByb2Nlc3NEaWRSZWxhdW5jaCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9jbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoKHRvQVBJKHZpZXcpLCBt
X2NsaWVudC5jbGllbnRJbmZvKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oCmluZGV4IGQ1ZTgyZGQuLjEw
Y2Y5MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0Ns
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5o
CkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJBUElDbGllbnQuaCIKICNpbmNsdWRlICJX
S1ZpZXcuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgSW50UmVjdDsKQEAgLTQyLDYgKzQzLDggQEAgY2xhc3MgV2ViVmlld0Ns
aWVudDogcHVibGljIEFQSUNsaWVudDxXS1ZpZXdDbGllbnQsIGtXS1ZpZXdDbGllbnRDdXJyZW50
VmVyc2lvbj4KIHB1YmxpYzoKICAgICB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoV2ViVmlldyosIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShX
ZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgd2ViUHJvY2Vzc0Ny
YXNoZWQoV2ViVmlldyosIGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICB2b2lkIHdlYlByb2Nlc3NE
aWRSZWxhdW5jaChXZWJWaWV3Kik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyODM5OGRlLi5m
NDQxM2MzIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjggQEAKKzIwMTMtMDItMTggIE1pa2hhaWwgUG96ZG55YWtvdiAgPG1pa2hh
aWwucG96ZG55YWtvdkBpbnRlbC5jb20+CisKKyAgICAgICAgW1dLMl1bRUZMXSBBZGQgY2FsbGJh
Y2tzIHRvIHRoZSBXS1ZpZXdDbGllbnQgdG8gaGFuZGxlIFdlYiBQcm9jZXNzIGNyYXNoIGFuZCBy
ZWxhdW5jaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA5ODI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgQVBJIHRlc3QgZm9yIG5ld2x5IGFkZGVkIFdlYiBQcm9jZXNzIGNyYXNoIGFuZCBXZWIg
UHJvY2VzcyByZWxhdW5jaCBXS1ZpZXdDbGllbnQKKyAgICAgICAgY2FsbGJhY2tzLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dDoKKworICAgICAgICAgICAgVGVzdHMg
bG9jYXRlZCBpbiAnVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyJyBzdWJkaXJlY3RvcmllcyBh
cmUgYWxzbworICAgICAgICAgICAgY29uc2lkZXJlZC4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvUGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzLmNwcDogQWRkZWQuCisgICAg
ICAgIChUZXN0V2ViS2l0QVBJKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmRpZEZpbmlzaExv
YWRGb3JGcmFtZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZXRQYWdlTG9hZGVyQ2xpZW50
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzZXRWaWV3Q2xpZW50KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDEzLTAyLTE1ICBBbmRyZXkgTHVzaG5pa292ICA8bHVzaG5pa292QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBsZW1lbnQgc21hcnQgYnJhY2VzIGZ1bmN0aW9u
YWxpdHkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQgYi9U
b29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CmluZGV4IDFkOTZiMGQuLjhjNTJlOGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dApAQCAtMTI3LDEwICsxMjcsMTEgQEAgc2V0
KHRlc3Rfd2Via2l0Ml9hcGlfTElCUkFSSUVTCiApCiAKIGZvcmVhY2ggKHRlc3ROYW1lICR7dGVz
dF93ZWJraXQyX2FwaV9CSU5BUklFU30pCi0gICAgYWRkX2V4ZWN1dGFibGUodGVzdF93ZWJraXQy
X2FwaV8ke3Rlc3ROYW1lfSAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyLyR7dGVz
dE5hbWV9LmNwcCkKLSAgICBhZGRfdGVzdCh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdE5hbWV9ICR7
Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS90ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdE5h
bWV9KQotICAgIHNldF90ZXN0c19wcm9wZXJ0aWVzKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFt
ZX0gUFJPUEVSVElFUyBUSU1FT1VUIDYwKQotICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0
X3dlYmtpdDJfYXBpXyR7dGVzdE5hbWV9ICR7dGVzdF93ZWJraXQyX2FwaV9MSUJSQVJJRVN9KQor
ICAgIGdldF9maWxlbmFtZV9jb21wb25lbnQodGVzdEJhc2VOYW1lICR7dGVzdE5hbWV9IE5BTUUp
CisgICAgYWRkX2V4ZWN1dGFibGUodGVzdF93ZWJraXQyX2FwaV8ke3Rlc3RCYXNlTmFtZX0gJHtU
RVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMvV2ViS2l0Mi8ke3Rlc3ROYW1lfS5jcHApCisgICAgYWRk
X3Rlc3QodGVzdF93ZWJraXQyX2FwaV8ke3Rlc3RCYXNlTmFtZX0gJHtDTUFLRV9SVU5USU1FX09V
VFBVVF9ESVJFQ1RPUll9L3Rlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9KQorICAgIHNl
dF90ZXN0c19wcm9wZXJ0aWVzKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9IFBST1BF
UlRJRVMgVElNRU9VVCA2MCkKKyAgICB0YXJnZXRfbGlua19saWJyYXJpZXModGVzdF93ZWJraXQy
X2FwaV8ke3Rlc3RCYXNlTmFtZX0gJHt0ZXN0X3dlYmtpdDJfYXBpX0xJQlJBUklFU30pCiBlbmRm
b3JlYWNoICgpCiAKICMgV2UgZG9uJ3QgcnVuIHRlc3RzIHRoYXQgYXJlIGV4cGVjdGVkIHRvIGZh
aWwuIFdlIGNvdWxkIHVzZSB0aGUgV0lMTF9GQUlMCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZQppbmRleCBkOGY1YTc4Li44Mzk4M2I2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTg2LDYgKzg2LDcgQEAgc2V0KHRlc3Rfd2Via2l0Ml9hcGlfQklOQVJJ
RVMKICAgICBXS1N0cmluZ0pTU3RyaW5nCiAgICAgV0tVUkwKICAgICBXaWxsU2VuZFN1Ym1pdEV2
ZW50CisgICAgZWZsL1dLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MKICkKIAogc2V0KHRl
c3Rfd2Via2l0Ml9hcGlfZmFpbF9CSU5BUklFUwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9lZmwvV0tWaWV3Q2xpZW50V2Vi
UHJvY2Vzc0NhbGxiYWNrcy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MThlYjM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9lZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vzc0NhbGxiYWNrcy5jcHAKQEAgLTAsMCArMSwx
MTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVdlYlZpZXcuaCIKKyNpbmNs
dWRlICJUZXN0LmgiCisjaW5jbHVkZSAiV0tWaWV3LmgiCisjaW5jbHVkZSA8V2ViS2l0Mi9XS1Jl
dGFpblB0ci5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGRp
ZEZpbmlzaExvYWQ7CitzdGF0aWMgYm9vbCBkaWRDcmFzaDsKK3N0YXRpYyBib29sIGRpZFJlbGF1
bmNoOworCitzdGF0aWMgV0tVUkxSZWYgdXJsVG9QYXNzOworc3RhdGljIFdLVmlld1JlZiB2aWV3
VG9QYXNzOworc3RhdGljIGNvbnN0IGNoYXIqIGRhdGFUb1Bhc3M7CisKK3N0YXRpYyB2b2lkIGRp
ZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLVHlwZVJlZiwgY29u
c3Qgdm9pZCopCit7CisgICAgZGlkRmluaXNoTG9hZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lk
IHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCit7CisgICAgV0tQYWdlTG9hZGVy
Q2xpZW50IGxvYWRlckNsaWVudDsKKyAgICBtZW1zZXQoJmxvYWRlckNsaWVudCwgMCwgc2l6ZW9m
KGxvYWRlckNsaWVudCkpOworCisgICAgbG9hZGVyQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFt
ZSA9IGRpZEZpbmlzaExvYWRGb3JGcmFtZTsKKworICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGll
bnQocGFnZSwgJmxvYWRlckNsaWVudCk7Cit9CisKK3ZvaWQgd2ViUHJvY2Vzc0NyYXNoZWQoV0tW
aWV3UmVmIHZpZXcsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBFWFBFQ1RfRVEodmlld1RvUGFzcywgdmlldyk7CisgICAgRVhQRUNUX0VRKGRhdGFUb1Bhc3Ms
IGNsaWVudEluZm8pOworICAgIEVYUEVDVF9UUlVFKFdLVVJMSXNFcXVhbCh1cmwsIHVybFRvUGFz
cykpOworICAgIGRpZENyYXNoID0gdHJ1ZTsKK30KKwordm9pZCB3ZWJQcm9jZXNzRGlkUmVsYXVu
Y2goV0tWaWV3UmVmIHZpZXcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRVhQRUNU
X0VRKHZpZXdUb1Bhc3MsIHZpZXcpOworICAgIEVYUEVDVF9FUShkYXRhVG9QYXNzLCBjbGllbnRJ
bmZvKTsKKyAgICBkaWRSZWxhdW5jaCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkIHNldFZpZXdD
bGllbnQoV0tWaWV3UmVmIHZpZXcpCit7CisgICAgV0tWaWV3Q2xpZW50IHZpZXdDbGllbnQ7Cisg
ICAgbWVtc2V0KCZ2aWV3Q2xpZW50LCAwLCBzaXplb2YoV0tWaWV3Q2xpZW50KSk7CisKKyAgICB2
aWV3Q2xpZW50LnZlcnNpb24gPSBrV0tWaWV3Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgdmll
d0NsaWVudC5jbGllbnRJbmZvID0gZGF0YVRvUGFzczsKKyAgICB2aWV3Q2xpZW50LndlYlByb2Nl
c3NDcmFzaGVkID0gd2ViUHJvY2Vzc0NyYXNoZWQ7CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNz
RGlkUmVsYXVuY2ggPSB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CisKKyAgICBXS1ZpZXdTZXRWaWV3
Q2xpZW50KHZpZXcsICZ2aWV3Q2xpZW50KTsKK30KKworVEVTVChXZWJLaXQyLCBXS1ZpZXdDbGll
bnRXZWJQcm9jZXNzQ2FsbGJhY2tzKQoreworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4g
Y29udGV4dChBZG9wdFdLLCBXS0NvbnRleHRDcmVhdGUoKSk7CisgICAgdXJsVG9QYXNzID0gVXRp
bDo6Y3JlYXRlVVJMRm9yUmVzb3VyY2UoInNpbXBsZSIsICJodG1sIik7CisgICAgZGF0YVRvUGFz
cyA9IG5ldyBjaGFyWzEwXTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB2aWV3KGNvbnRleHQuZ2V0
KCkpOworICAgIHZpZXdUb1Bhc3MgPSB2aWV3LnBsYXRmb3JtVmlldygpOworCisgICAgc2V0UGFn
ZUxvYWRlckNsaWVudCh2aWV3LnBhZ2UoKSk7CisgICAgc2V0Vmlld0NsaWVudCh2aWV3VG9QYXNz
KTsKKworICAgIFdLUGFnZUxvYWRVUkwodmlldy5wYWdlKCksIHVybFRvUGFzcyk7CisgICAgVXRp
bDo6cnVuKCZkaWRGaW5pc2hMb2FkKTsKKworICAgIFdLUGFnZVRlcm1pbmF0ZSh2aWV3LnBhZ2Uo
KSk7CisgICAgVXRpbDo6cnVuKCZkaWRDcmFzaCk7CisKKyAgICBXS1BhZ2VSZWxvYWQodmlldy5w
YWdlKCkpOworICAgIFV0aWw6OnJ1bigmZGlkUmVsYXVuY2gpOworCisgICAgZGVsZXRlW10gZGF0
YVRvUGFzczsKKyAgICBXS1JlbGVhc2UodXJsVG9QYXNzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189280</attachid>
            <date>2013-02-20 03:50:54 -0800</date>
            <delta_ts>2013-03-04 05:46:33 -0800</delta_ts>
            <desc>patch v5</desc>
            <filename>bug109828_v5</filename>
            <type>text/plain</type>
            <size>17422</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDc5NGY5ZWRjOGYwZTI4Y2UxY2U4MmMwZTI3Y2ZhZDk0Zjk4ODczOTMKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIEZlYiAxNSAyMDo0Nzo1NSAyMDEzICswMjAwCgogICAgYnVnMTA5ODI4CgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmlu
ZGV4IGRhYmQ3ZmIuLjcwNjhhZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBAQAorMjAxMy0w
Mi0xOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4K
KworICAgICAgICBbV0syXVtFRkxdIEFkZCBjYWxsYmFja3MgdG8gdGhlIFdLVmlld0NsaWVudCB0
byBoYW5kbGUgV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIHJlbGF1bmNoCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRpbmcgV0tWaWV3Q2xpZW50IHdp
dGggV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1bmNoCisgICAgICAgIGNh
bGxiYWNrcyBicmluZ3MgYmV0dGVyIGRlc2lnbiBhcyBXZWJWaWV3IHNob3VsZCBub3QgYmUgYXdh
cmUgb2YKKyAgICAgICAgRUZMLXNwZWNpZmljIGNvZGUgaGFuZGxpbmcgdGhlIGNvcnJlc3BvbmRp
bmcgZXZlbnRzLgorCisgICAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbWVudGlvbmVk
IFdlYiBQcm9jZXNzIGNhbGxiYWNrcyB3YXMgYWxzbyBhZGRlZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcDoKKyAgICAgICAgKFdLVmlld1NldFRoZW1lUGF0aCk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50
RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzRGlkUmVsYXVuY2gpOgorICAgICAgICAoV2Vi
S2l0OjpWaWV3Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
ZWZsL1ZpZXdDbGllbnRFZmwuaDoKKyAgICAgICAgKFZpZXdDbGllbnRFZmwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNl
dFRoZW1lUGF0aCk6CisKKyAgICAgICAgICAgIEFjY2VwdHMgV1RGOjpTdHJpbmcgaW5zdGVhZCBv
ZiBXS1N0cmluZ1JlZiBhcyBpdCBpcworICAgICAgICAgICAgbW9yZSBhcHByb3ByaWF0ZSBmb3Ig
QysrIEFQSSBpbXBsZW1lbnRhdGlvbiBjbGFzcy4KKworICAgICAgICAoV2ViS2l0OjpXZWJWaWV3
Ojpwcm9jZXNzRGlkQ3Jhc2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRSZWxhdW5j
aFByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOgorICAgICAgICAo
V2ViVmlldyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0Rp
ZFJlbGF1bmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaDoKKwog
MjAxMy0wMi0xOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBDbGFyaWZ5IGlzSW5XaW5kb3cgdnMuIGlzVmlzaWJsZSBwYXRoIHRocm91Z2ggdG8gUmVu
ZGVyTGF5ZXJDb21wb3NpdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5jcHAKaW5kZXggNzZlZDlkZi4uZTQ2OWNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtODQsNyArODQsNyBAQCBib29sIFdL
Vmlld0dldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKFdLVmlld1JlZiB2aWV3UmVmKQogCiB2
b2lkIFdLVmlld1NldFRoZW1lUGF0aChXS1ZpZXdSZWYgdmlld1JlZiwgV0tTdHJpbmdSZWYgdGhl
bWUpCiB7Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRUaGVtZVBhdGgodGhlbWUpOworICAgIHRv
SW1wbCh2aWV3UmVmKS0+c2V0VGhlbWVQYXRoKHRvSW1wbCh0aGVtZSktPnN0cmluZygpKTsKIH0K
IAogdm9pZCBXS1ZpZXdTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoV0tWaWV3
UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
ZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcu
aAppbmRleCBiNDJiMjI3Li40NThhY2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKQEAgLTM1LDggKzM1LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9FdmFz
X09iamVjdCBFdmFzX09iamVjdDsKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKK3R5cGVkZWYgdm9p
ZCAoKldLVmlld0NhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmll
d1JlZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVm
IHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdXZWJQcm9jZXNzQ3Jhc2hlZENhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tV
UkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3RydWN0IFdLVmlld0NsaWVu
dCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHZlcnNpb247CkBAIC00NSw2ICs0Nyw4IEBAIHN0cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIC8v
IFZlcnNpb24gMAogICAgIFdLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxsYmFjayAgICAgICAgICAg
ICAgICAgICB2aWV3TmVlZHNEaXNwbGF5OwogICAgIFdLVmlld1BhZ2VEaWRDaGFuZ2VDb250ZW50
c1NpemVDYWxsYmFjayAgICAgICAgICBkaWRDaGFuZ2VDb250ZW50c1NpemU7CisgICAgV0tWaWV3
V2ViUHJvY2Vzc0NyYXNoZWRDYWxsYmFjayAgICAgICAgICAgICAgICAgIHdlYlByb2Nlc3NDcmFz
aGVkOworICAgIFdLVmlld0NhbGxiYWNrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tWaWV3Q2xpZW50
IFdLVmlld0NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0Ns
aWVudEVmbC5jcHAKaW5kZXggNzdmOGJmMy4uNTViNWFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw3ICsyNyw4IEBACiAjaW5j
bHVkZSAiVmlld0NsaWVudEVmbC5oIgogCiAjaW5jbHVkZSAiRXdrVmlldy5oIgotI2luY2x1ZGUg
IldLVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4KKyNpbmNsdWRlIDxXZWJL
aXQyL1dLVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgRXdrVmlld0NhbGxiYWNrczsKIApAQCAt
NTAsNiArNTEsMzcgQEAgdm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUo
V0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2wKICAgICBld2tWaWV3LT5zbWFy
dENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0KIAordm9pZCBW
aWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYsIFdLVVJMUmVmIHVybCwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tW
aWV3KGNsaWVudEluZm8pOworCisgICAgLy8gQ2hlY2sgaWYgbG9hZGluZyB3YXMgb25nb2luZywg
d2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgorICAgIGRvdWJsZSBsb2FkUHJvZ3Jlc3MgPSBXS1Bh
Z2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhld2tWaWV3LT53a1BhZ2UoKSk7CisgICAgaWYgKGxvYWRQ
cm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKKyAgICAgICAgbG9hZFByb2dyZXNz
ID0gMTsKKyAgICAgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxMb2FkUHJvZ3Jlc3M+KCkuY2Fs
bCgmbG9hZFByb2dyZXNzKTsKKyAgICB9CisKKyAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPFRv
b2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOworCisgICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Cisg
ICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hlZD4oKS5jYWxsKCZoYW5k
bGVkKTsKKworICAgIGlmICghaGFuZGxlZCkgeworICAgICAgICBXS0VpbmFTaGFyZWRTdHJpbmcg
dXJsU3RyaW5nKHVybCk7CisgICAgICAgIFdBUk4oIldBUk5JTkc6IFRoZSB3ZWIgcHJvY2VzcyBl
eHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4o
dXJsU3RyaW5nKSk7CisKKyAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCisgICAgICAg
IGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoZXdrVmlldy0+ZXZhc09iamVjdCgpLCAiVGhlIHdl
YiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybFN0cmluZyk7CisgICAgfQorfQorCit2b2lk
IFZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NEaWRSZWxhdW5jaChXS1ZpZXdSZWYgdmlld1JlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoY29uc3QgY2hhciogdGhlbWVQYXRo
ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8pLT50aGVtZVBhdGgoKSkKKyAgICAgICAgV0tWaWV3U2V0
VGhlbWVQYXRoKHZpZXdSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmco
dGhlbWVQYXRoKSkuZ2V0KCkpOworfQorCiBWaWV3Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKEV3
a1ZpZXcqIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKIHsKQEAgLTYxLDYgKzkzLDggQEAgVmll
d0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAgIHZpZXdDbGllbnQu
Y2xpZW50SW5mbyA9IHRoaXM7CiAgICAgdmlld0NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUg
PSBkaWRDaGFuZ2VDb250ZW50c1NpemU7CiAgICAgdmlld0NsaWVudC52aWV3TmVlZHNEaXNwbGF5
ID0gdmlld05lZWRzRGlzcGxheTsKKyAgICB2aWV3Q2xpZW50LndlYlByb2Nlc3NDcmFzaGVkID0g
d2ViUHJvY2Vzc0NyYXNoZWQ7CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2gg
PSB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiAKICAgICBXS1ZpZXdTZXRWaWV3Q2xpZW50KG1fdmll
dy0+d2tWaWV3KCksICZ2aWV3Q2xpZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWV3Q2xpZW50RWZsLmgKaW5kZXggMmViZDNhMi4uNmJhYWYwOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKQEAgLTQ5LDYgKzQ5LDggQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgRXdrVmlldyogdG9Fd2tWaWV3KGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoV0tWaWV3UmVmLCBXS1Jl
Y3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNTaXplKFdLVmlld1JlZiwgV0tTaXplLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYsIFdLVVJMUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzRGlk
UmVsYXVuY2goV0tWaWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogICAgIEV3a1Zp
ZXcqIG1fdmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApp
bmRleCAxMGEzODUxLi44MDBkNGIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKQEAgLTgzLDkgKzgzLDkgQEAgRXZhc19PYmplY3QqIFdlYlZpZXc6OmV2YXNPYmpl
Y3QoKQogICAgIHJldHVybiBtX2V3a1ZpZXctPmV2YXNPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJW
aWV3OjpzZXRUaGVtZVBhdGgoV0tTdHJpbmdSZWYgdGhlbWUpCit2b2lkIFdlYlZpZXc6OnNldFRo
ZW1lUGF0aChjb25zdCBTdHJpbmcmIHRoZW1lKQogewotICAgIG1fcGFnZS0+c2V0VGhlbWVQYXRo
KHRvV1RGU3RyaW5nKHRoZW1lKS51dGY4KCkuZGF0YSgpKTsKKyAgICBtX3BhZ2UtPnNldFRoZW1l
UGF0aCh0aGVtZSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wg
ZHJhd3NCYWNrZ3JvdW5kKQpAQCAtMjIyLDMyICsyMjIsMTIgQEAgYm9vbCBXZWJWaWV3Ojppc1Zp
ZXdJbldpbmRvdygpCiAKIHZvaWQgV2ViVmlldzo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKLSAgICAv
LyBDaGVjayBpZiBsb2FkaW5nIHdhcyBvbmdvaW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQu
Ci0gICAgZG91YmxlIGxvYWRQcm9ncmVzcyA9IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1f
ZXdrVmlldy0+ZXZhc09iamVjdCgpKTsKLSAgICBpZiAobG9hZFByb2dyZXNzID49IDAgJiYgbG9h
ZFByb2dyZXNzIDwgMSkgewotICAgICAgICBsb2FkUHJvZ3Jlc3MgPSAxOwotICAgICAgICBtX2V3
a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7
Ci0gICAgfQotCi0gICAgbV9ld2tWaWV3LT5zbWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+
KCkuY2FsbCgpOwotCi0gICAgYm9vbCBoYW5kbGVkID0gZmFsc2U7Ci0gICAgbV9ld2tWaWV3LT5z
bWFydENhbGxiYWNrPFdlYlByb2Nlc3NDcmFzaGVkPigpLmNhbGwoJmhhbmRsZWQpOwotCi0gICAg
aWYgKCFoYW5kbGVkKSB7Ci0gICAgICAgIENTdHJpbmcgdXJsID0gbV9wYWdlLT51cmxBdFByb2Nl
c3NFeGl0KCkudXRmOCgpOwotICAgICAgICBXQVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3Mg
ZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxuIiwgdXJsLmRhdGEoKSk7Ci0KLSAgICAgICAg
Ly8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0gICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xv
YWQobV9ld2tWaWV3LT5ldmFzT2JqZWN0KCksICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQu
IiwgMCwgdXJsLmRhdGEoKSk7Ci0gICAgfQorICAgIG1fY2xpZW50LndlYlByb2Nlc3NDcmFzaGVk
KHRoaXMsIG1fcGFnZS0+dXJsQXRQcm9jZXNzRXhpdCgpKTsKIH0KIAogdm9pZCBXZWJWaWV3Ojpk
aWRSZWxhdW5jaFByb2Nlc3MoKQogewotICAgIGNvbnN0IGNoYXIqIHRoZW1lUGF0aCA9IG1fZXdr
Vmlldy0+dGhlbWVQYXRoKCk7Ci0gICAgaWYgKHRoZW1lUGF0aCkKLSAgICAgICAgbV9wYWdlLT5z
ZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKKyAgICBtX2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVu
Y2godGhpcyk7CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFnZUNsb3NlZCgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4IDQ0ZWU5ZDcuLmY3NzFmMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCkBAIC01OSw3ICs1OSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKGJvb2wpOwogICAgIGJvb2wgZHJh
d3NUcmFuc3BhcmVudEJhY2tncm91bmQoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0VGhlbWVQYXRo
KFdLU3RyaW5nUmVmKTsKKyAgICB2b2lkIHNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmKTsKIAog
ICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9p
ZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKaW5kZXggMDVmYzgwYy4uZmZjYTA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3Bw
CkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgogCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKQEAgLTQ4LDQgKzQ5LDIwIEBAIHZvaWQgV2ViVmlld0NsaWVudDo6ZGlk
Q2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqIHZpZXcsIGNvbnN0IEludFNpemUmIHNpemUpCiAg
ICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRvQVBJKHZpZXcpLCB0b0FQSShzaXpl
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9CiAKK3ZvaWQgV2ViVmlld0NsaWVudDo6d2ViUHJv
Y2Vzc0NyYXNoZWQoV2ViVmlldyogdmlldywgY29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYg
KCFtX2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9j
bGllbnQud2ViUHJvY2Vzc0NyYXNoZWQodG9BUEkodmlldyksIGFkb3B0V0sodG9Db3BpZWRVUkxB
UEkodXJsKSkuZ2V0KCksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit2b2lkIFdlYlZpZXdD
bGllbnQ6OndlYlByb2Nlc3NEaWRSZWxhdW5jaChXZWJWaWV3KiB2aWV3KQoreworICAgIGlmICgh
bV9jbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2godG9BUEkodmlldyksIG1fY2xpZW50LmNsaWVu
dEluZm8pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKaW5kZXggZDVlODJkZC4uMTBjZjkyZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKQEAgLTI4LDYgKzI4
LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNsaWVudC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBJbnRSZWN0OwpAQCAtNDIsNiArNDMsOCBAQCBjbGFzcyBXZWJWaWV3Q2xpZW50OiBwdWJsaWMg
QVBJQ2xpZW50PFdLVmlld0NsaWVudCwga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uPgogcHVi
bGljOgogICAgIHZvaWQgdmlld05lZWRzRGlzcGxheShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqLCBjb25z
dCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXZWJWaWV3
KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAgIHZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdl
YlZpZXcqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNkY2U0ZjIuLjMzM2M0ZjUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
OCBAQAorMjAxMy0wMi0xOCAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIEFkZCBjYWxsYmFja3MgdG8gdGhlIFdL
Vmlld0NsaWVudCB0byBoYW5kbGUgV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIHJlbGF1bmNoCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDk4MjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBBUEkgdGVz
dCBmb3IgbmV3bHkgYWRkZWQgV2ViIFByb2Nlc3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1
bmNoIFdLVmlld0NsaWVudAorICAgICAgICBjYWxsYmFja3MuCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NNYWtlTGlzdHMudHh0OgorCisgICAgICAgICAgICBUZXN0cyBsb2NhdGVkIGluICdU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDInIHN1YmRpcmVjdG9yaWVzIGFyZSBhbHNvCisgICAg
ICAgICAgICBjb25zaWRlcmVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmll
d0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJL
aXRBUEkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6d2ViUHJvY2Vzc0NyYXNoZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFZp
ZXdDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMTMtMDItMTkg
IEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgd2Fy
bmluZyBmcm9tIHJ1bi1iaW5kaW5ncy10ZXN0cwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQK
aW5kZXggMWQ5NmIwZC4uOGM1MmU4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
TWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBA
IC0xMjcsMTAgKzEyNywxMSBAQCBzZXQodGVzdF93ZWJraXQyX2FwaV9MSUJSQVJJRVMKICkKIAog
Zm9yZWFjaCAodGVzdE5hbWUgJHt0ZXN0X3dlYmtpdDJfYXBpX0JJTkFSSUVTfSkKLSAgICBhZGRf
ZXhlY3V0YWJsZSh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdE5hbWV9ICR7VEVTVFdFQktJVEFQSV9E
SVJ9L1Rlc3RzL1dlYktpdDIvJHt0ZXN0TmFtZX0uY3BwKQotICAgIGFkZF90ZXN0KHRlc3Rfd2Vi
a2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHtDTUFLRV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L3Rl
c3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0pCi0gICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXModGVz
dF93ZWJraXQyX2FwaV8ke3Rlc3ROYW1lfSBQUk9QRVJUSUVTIFRJTUVPVVQgNjApCi0gICAgdGFy
Z2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHt0ZXN0X3dl
YmtpdDJfYXBpX0xJQlJBUklFU30pCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCh0ZXN0QmFz
ZU5hbWUgJHt0ZXN0TmFtZX0gTkFNRSkKKyAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0X3dlYmtpdDJf
YXBpXyR7dGVzdEJhc2VOYW1lfSAke1RFU1RXRUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyLyR7
dGVzdE5hbWV9LmNwcCkKKyAgICBhZGRfdGVzdCh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VO
YW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vdGVzdF93ZWJraXQyX2FwaV8k
e3Rlc3RCYXNlTmFtZX0pCisgICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXModGVzdF93ZWJraXQyX2Fw
aV8ke3Rlc3RCYXNlTmFtZX0gUFJPUEVSVElFUyBUSU1FT1VUIDYwKQorICAgIHRhcmdldF9saW5r
X2xpYnJhcmllcyh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VOYW1lfSAke3Rlc3Rfd2Via2l0
Ml9hcGlfTElCUkFSSUVTfSkKIGVuZGZvcmVhY2ggKCkKIAogIyBXZSBkb24ndCBydW4gdGVzdHMg
dGhhdCBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4gV2UgY291bGQgdXNlIHRoZSBXSUxMX0ZBSUwKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCmluZGV4IDNiY2I4OWIuLjFkMzRhZDAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtODYsNiArODYsNyBAQCBzZXQo
dGVzdF93ZWJraXQyX2FwaV9CSU5BUklFUwogICAgIFdLU3RyaW5nSlNTdHJpbmcKICAgICBXS1VS
TAogICAgIFdpbGxTZW5kU3VibWl0RXZlbnQKKyAgICBlZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vz
c0NhbGxiYWNrcwogKQogCiBzZXQodGVzdF93ZWJraXQyX2FwaV9mYWlsX0JJTkFSSUVTCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVu
dFdlYlByb2Nlc3NDYWxsYmFja3MuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGViMzVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2Fs
bGJhY2tzLmNwcApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBs
YXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUgIlRlc3QuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIK
KyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWluUHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0
QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZDsKK3N0YXRpYyBib29sIGRpZENyYXNo
Oworc3RhdGljIGJvb2wgZGlkUmVsYXVuY2g7CisKK3N0YXRpYyBXS1VSTFJlZiB1cmxUb1Bhc3M7
CitzdGF0aWMgV0tWaWV3UmVmIHZpZXdUb1Bhc3M7CitzdGF0aWMgY29uc3QgY2hhciogZGF0YVRv
UGFzczsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0g
dHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFn
ZSkKK3sKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OworICAgIG1lbXNldCgm
bG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJDbGll
bnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworCisgICAg
V0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKK30KKwordm9p
ZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYgdmlldywgV0tVUkxSZWYgdXJsLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQoreworICAgIEVYUEVDVF9FUSh2aWV3VG9QYXNzLCB2aWV3KTsKKyAg
ICBFWFBFQ1RfRVEoZGF0YVRvUGFzcywgY2xpZW50SW5mbyk7CisgICAgRVhQRUNUX1RSVUUoV0tV
UkxJc0VxdWFsKHVybCwgdXJsVG9QYXNzKSk7CisgICAgZGlkQ3Jhc2ggPSB0cnVlOworfQorCit2
b2lkIHdlYlByb2Nlc3NEaWRSZWxhdW5jaChXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBFWFBFQ1RfRVEodmlld1RvUGFzcywgdmlldyk7CisgICAgRVhQRUNU
X0VRKGRhdGFUb1Bhc3MsIGNsaWVudEluZm8pOworICAgIGRpZFJlbGF1bmNoID0gdHJ1ZTsKK30K
Kworc3RhdGljIHZvaWQgc2V0Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldykKK3sKKyAgICBXS1Zp
ZXdDbGllbnQgdmlld0NsaWVudDsKKyAgICBtZW1zZXQoJnZpZXdDbGllbnQsIDAsIHNpemVvZihX
S1ZpZXdDbGllbnQpKTsKKworICAgIHZpZXdDbGllbnQudmVyc2lvbiA9IGtXS1ZpZXdDbGllbnRD
dXJyZW50VmVyc2lvbjsKKyAgICB2aWV3Q2xpZW50LmNsaWVudEluZm8gPSBkYXRhVG9QYXNzOwor
ICAgIHZpZXdDbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQgPSB3ZWJQcm9jZXNzQ3Jhc2hlZDsKKyAg
ICB2aWV3Q2xpZW50LndlYlByb2Nlc3NEaWRSZWxhdW5jaCA9IHdlYlByb2Nlc3NEaWRSZWxhdW5j
aDsKKworICAgIFdLVmlld1NldFZpZXdDbGllbnQodmlldywgJnZpZXdDbGllbnQpOworfQorCitU
RVNUKFdlYktpdDIsIFdLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MpCit7CisgICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENyZWF0ZSgp
KTsKKyAgICB1cmxUb1Bhc3MgPSBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwg
Imh0bWwiKTsKKyAgICBkYXRhVG9QYXNzID0gbmV3IGNoYXJbMTBdOworCisgICAgUGxhdGZvcm1X
ZWJWaWV3IHZpZXcoY29udGV4dC5nZXQoKSk7CisgICAgdmlld1RvUGFzcyA9IHZpZXcucGxhdGZv
cm1WaWV3KCk7CisKKyAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHZpZXcucGFnZSgpKTsKKyAgICBz
ZXRWaWV3Q2xpZW50KHZpZXdUb1Bhc3MpOworCisgICAgV0tQYWdlTG9hZFVSTCh2aWV3LnBhZ2Uo
KSwgdXJsVG9QYXNzKTsKKyAgICBVdGlsOjpydW4oJmRpZEZpbmlzaExvYWQpOworCisgICAgV0tQ
YWdlVGVybWluYXRlKHZpZXcucGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJmRpZENyYXNoKTsKKwor
ICAgIFdLUGFnZVJlbG9hZCh2aWV3LnBhZ2UoKSk7CisgICAgVXRpbDo6cnVuKCZkaWRSZWxhdW5j
aCk7CisKKyAgICBkZWxldGVbXSBkYXRhVG9QYXNzOworICAgIFdLUmVsZWFzZSh1cmxUb1Bhc3Mp
OworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="209631"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191215</attachid>
            <date>2013-03-04 05:46:33 -0800</date>
            <delta_ts>2013-03-04 12:43:58 -0800</delta_ts>
            <desc>patch v6</desc>
            <filename>bug109828_v6</filename>
            <type>text/plain</type>
            <size>17956</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGIzZTRkYzcwZDI1OTAzODgwODBlY2U4ODA2MzM0NzMwYTljOTc4N2YKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1hciA0IDE1OjM3OjE3IDIwMTMgKzAyMDAKCiAgICBidWcxMDk4MjgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggOTM0NjUyZS4uNmQ3Y2M5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAz
LTA0ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdW0VGTF0gQWRkIGNhbGxiYWNrcyB0byB0aGUgV0tWaWV3Q2xpZW50IHRv
IGhhbmRsZSBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgcmVsYXVuY2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTgyOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByb3ZpZGluZyBXS1ZpZXdDbGllbnQgd2l0
aCBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2ViIFByb2Nlc3MgcmVsYXVuY2gKKyAgICAgICAgY2Fs
bGJhY2tzIGJyaW5ncyBiZXR0ZXIgZGVzaWduIGFzIFdlYlZpZXcgc2hvdWxkIG5vdCBiZSBhd2Fy
ZSBvZgorICAgICAgICBFRkwtc3BlY2lmaWMgY29kZSBoYW5kbGluZyB0aGUgY29ycmVzcG9uZGlu
ZyBldmVudHMuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtZW50aW9uZWQg
V2ViIFByb2Nlc3MgY2FsbGJhY2tzIHdhcyBhbHNvIGFkZGVkLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0VGhlbWVQYXRoKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRF
Zmw6OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCk6CisgICAgICAgIChXZWJL
aXQ6OlZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvVmlld0NsaWVudEVmbC5oOgorICAgICAgICAoVmlld0NsaWVudEVmbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6c2V0
VGhlbWVQYXRoKToKKworICAgICAgICAgICAgQWNjZXB0cyBXVEY6OlN0cmluZyBpbnN0ZWFkIG9m
IFdLU3RyaW5nUmVmIGFzIGl0IGlzCisgICAgICAgICAgICBtb3JlIGFwcHJvcHJpYXRlIGZvciBD
KysgQVBJIGltcGxlbWVudGF0aW9uIGNsYXNzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZFJlbGF1bmNo
UHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6CisgICAgICAgIChX
ZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp3ZWJQcm9jZXNzQ3Jhc2hlZCk6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp3ZWJQcm9jZXNzRGlk
UmVsYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oOgorCiAy
MDEzLTAzLTA0ICBLdW5paGlrbyBTYWthbW90byAgPGtzYWthbW90b0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWRkIGJ1aWxkIGZsYWcgZm9yIEZvbnRMb2FkZXIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAppbmRleCAxNzc5MTFmLi5hMjQ5ODIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCkBAIC0x
MDYsNyArMTA2LDcgQEAgYm9vbCBXS1ZpZXdHZXREcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZChX
S1ZpZXdSZWYgdmlld1JlZikKIAogdm9pZCBXS1ZpZXdTZXRUaGVtZVBhdGgoV0tWaWV3UmVmIHZp
ZXdSZWYsIFdLU3RyaW5nUmVmIHRoZW1lKQogewotICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0VGhl
bWVQYXRoKHRoZW1lKTsKKyAgICB0b0ltcGwodmlld1JlZiktPnNldFRoZW1lUGF0aCh0b0ltcGwo
dGhlbWUpLT5zdHJpbmcoKSk7CiB9CiAKIHZvaWQgV0tWaWV3U3VzcGVuZEFjdGl2ZURPTU9iamVj
dHNBbmRBbmltYXRpb25zKFdLVmlld1JlZiB2aWV3UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggNzM0NTU2Ni4uYTcwOWI0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC0zOCw4ICszOCwxMCBA
QCB0eXBlZGVmIHN0cnVjdCBfY2Fpcm9fc3VyZmFjZSBjYWlyb19zdXJmYWNlX3Q7CiBleHRlcm4g
IkMiIHsKICNlbmRpZgogCit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdDYWxsYmFjaykoV0tWaWV3UmVm
IHZpZXcsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tWaWV3Vmll
d05lZWRzRGlzcGxheUNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tSZWN0IGFyZWEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tWaWV3UGFnZURpZENoYW5nZUNv
bnRlbnRzU2l6ZUNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHNpemUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tWaWV3V2ViUHJvY2Vzc0NyYXNoZWRD
YWxsYmFjaykoV0tWaWV3UmVmIHZpZXcsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiAKIHN0cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNDgsNiArNTAsOCBAQCBz
dHJ1Y3QgV0tWaWV3Q2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDAKICAgICBXS1ZpZXdWaWV3TmVl
ZHNEaXNwbGF5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgdmlld05lZWRzRGlzcGxheTsKICAg
ICBXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2sgICAgICAgICAgZGlkQ2hh
bmdlQ29udGVudHNTaXplOworICAgIFdLVmlld1dlYlByb2Nlc3NDcmFzaGVkQ2FsbGJhY2sgICAg
ICAgICAgICAgICAgICB3ZWJQcm9jZXNzQ3Jhc2hlZDsKKyAgICBXS1ZpZXdDYWxsYmFjayAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoOwogfTsK
IHR5cGVkZWYgc3RydWN0IFdLVmlld0NsaWVudCBXS1ZpZXdDbGllbnQ7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCmluZGV4IDc3ZjhiZjMuLjU1
YjVhYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVu
dEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZs
LmNwcApAQCAtMjcsNyArMjcsOCBAQAogI2luY2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKIAogI2lu
Y2x1ZGUgIkV3a1ZpZXcuaCIKLSNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlIDxXZWJLaXQy
L1dLU3RyaW5nLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIEV3a1ZpZXdDYWxsYmFja3M7CiAKQEAgLTUwLDYgKzUxLDM3IEBAIHZvaWQgVmlld0NsaWVu
dEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKFdLVmlld1JlZiwgV0tTaXplIHNpemUsIGNvbnN0
IHZvaWQqIGNsCiAgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2Vk
PigpLmNhbGwoc2l6ZSk7CiB9CiAKK3ZvaWQgVmlld0NsaWVudEVmbDo6d2ViUHJvY2Vzc0NyYXNo
ZWQoV0tWaWV3UmVmLCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgRXdrVmlldyogZXdrVmlldyA9IHRvRXdrVmlldyhjbGllbnRJbmZvKTsKKworICAgIC8vIENo
ZWNrIGlmIGxvYWRpbmcgd2FzIG9uZ29pbmcsIHdoZW4gd2ViIHByb2Nlc3MgY3Jhc2hlZC4KKyAg
ICBkb3VibGUgbG9hZFByb2dyZXNzID0gV0tQYWdlR2V0RXN0aW1hdGVkUHJvZ3Jlc3MoZXdrVmll
dy0+d2tQYWdlKCkpOworICAgIGlmIChsb2FkUHJvZ3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3Mg
PCAxKSB7CisgICAgICAgIGxvYWRQcm9ncmVzcyA9IDE7CisgICAgICAgIGV3a1ZpZXctPnNtYXJ0
Q2FsbGJhY2s8TG9hZFByb2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7CisgICAgfQorCisg
ICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxUb29sdGlwVGV4dFVuc2V0PigpLmNhbGwoKTsKKwor
ICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8V2Vi
UHJvY2Vzc0NyYXNoZWQ+KCkuY2FsbCgmaGFuZGxlZCk7CisKKyAgICBpZiAoIWhhbmRsZWQpIHsK
KyAgICAgICAgV0tFaW5hU2hhcmVkU3RyaW5nIHVybFN0cmluZyh1cmwpOworICAgICAgICBXQVJO
KCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMnLlxu
Iiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHVybFN0cmluZykpOworCisgICAgICAgIC8vIERp
c3BsYXkgYW4gZXJyb3IgcGFnZQorICAgICAgICBld2tfdmlld19odG1sX3N0cmluZ19sb2FkKGV3
a1ZpZXctPmV2YXNPYmplY3QoKSwgIlRoZSB3ZWIgcHJvY2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1
cmxTdHJpbmcpOworICAgIH0KK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzRGlk
UmVsYXVuY2goV0tWaWV3UmVmIHZpZXdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7Cisg
ICAgaWYgKGNvbnN0IGNoYXIqIHRoZW1lUGF0aCA9IHRvRXdrVmlldyhjbGllbnRJbmZvKS0+dGhl
bWVQYXRoKCkpCisgICAgICAgIFdLVmlld1NldFRoZW1lUGF0aCh2aWV3UmVmLCBhZG9wdFdLKFdL
U3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKHRoZW1lUGF0aCkpLmdldCgpKTsKK30KKwogVmll
d0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAgIDogbV92aWV3KHZp
ZXcpCiB7CkBAIC02MSw2ICs5Myw4IEBAIFZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwoRXdr
VmlldyogdmlldykKICAgICB2aWV3Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOwogICAgIHZpZXdD
bGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplID0gZGlkQ2hhbmdlQ29udGVudHNTaXplOwogICAg
IHZpZXdDbGllbnQudmlld05lZWRzRGlzcGxheSA9IHZpZXdOZWVkc0Rpc3BsYXk7CisgICAgdmll
d0NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCA9IHdlYlByb2Nlc3NDcmFzaGVkOworICAgIHZpZXdD
bGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNoID0gd2ViUHJvY2Vzc0RpZFJlbGF1bmNoOwogCiAg
ICAgV0tWaWV3U2V0Vmlld0NsaWVudChtX3ZpZXctPndrVmlldygpLCAmdmlld0NsaWVudCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCmluZGV4IDJl
YmQzYTIuLjZiYWFmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
Vmlld0NsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0Ns
aWVudEVmbC5oCkBAIC00OSw2ICs0OSw4IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEV3a1ZpZXcq
IHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCB2aWV3
TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0IGFyZWEsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShXS1ZpZXdSZWYsIFdL
U2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vz
c0NyYXNoZWQoV0tWaWV3UmVmLCBXS1VSTFJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cisg
ICAgc3RhdGljIHZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdLVmlld1JlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiAKICAgICBFd2tWaWV3KiBtX3ZpZXc7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKaW5kZXggNTg0NmUyMS4uMjk3MzE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCkBAIC0xMjgsOSArMTI4LDkgQEAg
RXZhc19PYmplY3QqIFdlYlZpZXc6OmV2YXNPYmplY3QoKQogICAgIHJldHVybiBtX2V3a1ZpZXct
PmV2YXNPYmplY3QoKTsKIH0KIAotdm9pZCBXZWJWaWV3OjpzZXRUaGVtZVBhdGgoV0tTdHJpbmdS
ZWYgdGhlbWUpCit2b2lkIFdlYlZpZXc6OnNldFRoZW1lUGF0aChjb25zdCBTdHJpbmcmIHRoZW1l
KQogewotICAgIG1fcGFnZS0+c2V0VGhlbWVQYXRoKHRvV1RGU3RyaW5nKHRoZW1lKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBtX3BhZ2UtPnNldFRoZW1lUGF0aCh0aGVtZSk7CiB9CiAKIHZvaWQgV2Vi
Vmlldzo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNrZ3JvdW5kKQpAQCAtMjk3LDMy
ICsyOTcsMTIgQEAgYm9vbCBXZWJWaWV3Ojppc1ZpZXdJbldpbmRvdygpCiAKIHZvaWQgV2ViVmll
dzo6cHJvY2Vzc0RpZENyYXNoKCkKIHsKLSAgICAvLyBDaGVjayBpZiBsb2FkaW5nIHdhcyBvbmdv
aW5nLCB3aGVuIHdlYiBwcm9jZXNzIGNyYXNoZWQuCi0gICAgZG91YmxlIGxvYWRQcm9ncmVzcyA9
IGV3a192aWV3X2xvYWRfcHJvZ3Jlc3NfZ2V0KG1fZXdrVmlldy0+ZXZhc09iamVjdCgpKTsKLSAg
ICBpZiAobG9hZFByb2dyZXNzID49IDAgJiYgbG9hZFByb2dyZXNzIDwgMSkgewotICAgICAgICBs
b2FkUHJvZ3Jlc3MgPSAxOwotICAgICAgICBtX2V3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8TG9hZFBy
b2dyZXNzPigpLmNhbGwoJmxvYWRQcm9ncmVzcyk7Ci0gICAgfQotCi0gICAgbV9ld2tWaWV3LT5z
bWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOwotCi0gICAgYm9vbCBoYW5k
bGVkID0gZmFsc2U7Ci0gICAgbV9ld2tWaWV3LT5zbWFydENhbGxiYWNrPFdlYlByb2Nlc3NDcmFz
aGVkPigpLmNhbGwoJmhhbmRsZWQpOwotCi0gICAgaWYgKCFoYW5kbGVkKSB7Ci0gICAgICAgIENT
dHJpbmcgdXJsID0gbV9wYWdlLT51cmxBdFByb2Nlc3NFeGl0KCkudXRmOCgpOwotICAgICAgICBX
QVJOKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgZXhwZXJpZW5jZWQgYSBjcmFzaCBvbiAnJXMn
LlxuIiwgdXJsLmRhdGEoKSk7Ci0KLSAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJvciBwYWdlCi0g
ICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQobV9ld2tWaWV3LT5ldmFzT2JqZWN0KCks
ICJUaGUgd2ViIHByb2Nlc3MgaGFzIGNyYXNoZWQuIiwgMCwgdXJsLmRhdGEoKSk7Ci0gICAgfQor
ICAgIG1fY2xpZW50LndlYlByb2Nlc3NDcmFzaGVkKHRoaXMsIG1fcGFnZS0+dXJsQXRQcm9jZXNz
RXhpdCgpKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogewotICAg
IGNvbnN0IGNoYXIqIHRoZW1lUGF0aCA9IG1fZXdrVmlldy0+dGhlbWVQYXRoKCk7Ci0gICAgaWYg
KHRoZW1lUGF0aCkKLSAgICAgICAgbV9wYWdlLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKKyAg
ICBtX2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2godGhpcyk7CiB9CiAKIHZvaWQgV2ViVmll
dzo6cGFnZUNsb3NlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oCmluZGV4
IDQyYzhkMTMuLjlmNWY2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5o
CkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldERyYXdzVHJhbnNwYXJlbnRC
YWNrZ3JvdW5kKGJvb2wpOwogICAgIGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoKSBj
b25zdDsKIAotICAgIHZvaWQgc2V0VGhlbWVQYXRoKFdLU3RyaW5nUmVmKTsKKyAgICB2b2lkIHNl
dFRoZW1lUGF0aChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9i
amVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5k
QW5pbWF0aW9ucygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0Ns
aWVudC5jcHAKaW5kZXggMDVmYzgwYy4uZmZjYTA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiV2ViVmlld0NsaWVudC5oIgogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAi
V0tSZXRhaW5QdHIuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4LDQgKzQ5
LDIwIEBAIHZvaWQgV2ViVmlld0NsaWVudDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcq
IHZpZXcsIGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVu
dHNTaXplKHRvQVBJKHZpZXcpLCB0b0FQSShzaXplKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CiB9
CiAKK3ZvaWQgV2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0NyYXNoZWQoV2ViVmlldyogdmlldywg
Y29uc3QgU3RyaW5nJiB1cmwpCit7CisgICAgaWYgKCFtX2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hl
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQodG9B
UEkodmlldyksIGFkb3B0V0sodG9Db3BpZWRVUkxBUEkodXJsKSkuZ2V0KCksIG1fY2xpZW50LmNs
aWVudEluZm8pOworfQorCit2b2lkIFdlYlZpZXdDbGllbnQ6OndlYlByb2Nlc3NEaWRSZWxhdW5j
aChXZWJWaWV3KiB2aWV3KQoreworICAgIGlmICghbV9jbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1
bmNoKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVu
Y2godG9BUEkodmlldyksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
d0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgK
aW5kZXggZDVlODJkZC4uMTBjZjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3Q2xpZW50LmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSUNsaWVu
dC5oIgogI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRSZWN0OwpAQCAtNDIsNiArNDMsOCBA
QCBjbGFzcyBXZWJWaWV3Q2xpZW50OiBwdWJsaWMgQVBJQ2xpZW50PFdLVmlld0NsaWVudCwga1dL
Vmlld0NsaWVudEN1cnJlbnRWZXJzaW9uPgogcHVibGljOgogICAgIHZvaWQgdmlld05lZWRzRGlz
cGxheShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNTaXplKFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAg
dm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXZWJWaWV3KiwgY29uc3QgU3RyaW5nJiB1cmwpOworICAg
IHZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdlYlZpZXcqKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGU1NWIwMzguLjAxNTYwZTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMy0wMy0wNCAgTWlraGFpbCBQ
b3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KKworICAgICAgICBbV0sy
XVtFRkxdIEFkZCBjYWxsYmFja3MgdG8gdGhlIFdLVmlld0NsaWVudCB0byBoYW5kbGUgV2ViIFBy
b2Nlc3MgY3Jhc2ggYW5kIHJlbGF1bmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDk4MjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBBUEkgdGVzdCBmb3IgbmV3bHkgYWRkZWQgV2ViIFByb2Nl
c3MgY3Jhc2ggYW5kIFdlYiBQcm9jZXNzIHJlbGF1bmNoIFdLVmlld0NsaWVudAorICAgICAgICBj
YWxsYmFja3MuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0OgorCisg
ICAgICAgICAgICBUZXN0cyBsb2NhdGVkIGluICdUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIn
IHN1YmRpcmVjdG9yaWVzIGFyZSBhbHNvCisgICAgICAgICAgICBjb25zaWRlcmVkLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEkpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNl
dFBhZ2VMb2FkZXJDbGllbnQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViUHJvY2Vzc0Ny
YXNoZWQpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNldFZpZXdDbGllbnQpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMTMtMDMtMDQgIEt1bmloaWtvIFNha2Ftb3RvICA8a3Nha2Ft
b3RvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgYnVpbGQgZmxhZyBmb3IgRm9udExvYWRl
cgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKaW5kZXggNzFmN2E5Mi4uYThlOTk5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMudHh0CkBAIC0xMjgsMTAgKzEyOCwxMSBAQCBzZXQodGVz
dF93ZWJraXQyX2FwaV9MSUJSQVJJRVMKICkKIAogZm9yZWFjaCAodGVzdE5hbWUgJHt0ZXN0X3dl
YmtpdDJfYXBpX0JJTkFSSUVTfSkKLSAgICBhZGRfZXhlY3V0YWJsZSh0ZXN0X3dlYmtpdDJfYXBp
XyR7dGVzdE5hbWV9ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvJHt0ZXN0TmFt
ZX0uY3BwKQotICAgIGFkZF90ZXN0KHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHtDTUFL
RV9SVU5USU1FX09VVFBVVF9ESVJFQ1RPUll9L3Rlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0p
Ci0gICAgc2V0X3Rlc3RzX3Byb3BlcnRpZXModGVzdF93ZWJraXQyX2FwaV8ke3Rlc3ROYW1lfSBQ
Uk9QRVJUSUVTIFRJTUVPVVQgNjApCi0gICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHRlc3Rfd2Vi
a2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHt0ZXN0X3dlYmtpdDJfYXBpX0xJQlJBUklFU30pCisgICAg
Z2V0X2ZpbGVuYW1lX2NvbXBvbmVudCh0ZXN0QmFzZU5hbWUgJHt0ZXN0TmFtZX0gTkFNRSkKKyAg
ICBhZGRfZXhlY3V0YWJsZSh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VOYW1lfSAke1RFU1RX
RUJLSVRBUElfRElSfS9UZXN0cy9XZWJLaXQyLyR7dGVzdE5hbWV9LmNwcCkKKyAgICBhZGRfdGVz
dCh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VOYW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVU
X0RJUkVDVE9SWX0vdGVzdF93ZWJraXQyX2FwaV8ke3Rlc3RCYXNlTmFtZX0pCisgICAgc2V0X3Rl
c3RzX3Byb3BlcnRpZXModGVzdF93ZWJraXQyX2FwaV8ke3Rlc3RCYXNlTmFtZX0gUFJPUEVSVElF
UyBUSU1FT1VUIDYwKQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh0ZXN0X3dlYmtpdDJfYXBp
XyR7dGVzdEJhc2VOYW1lfSAke3Rlc3Rfd2Via2l0Ml9hcGlfTElCUkFSSUVTfSkKIGVuZGZvcmVh
Y2ggKCkKIAogIyBXZSBkb24ndCBydW4gdGVzdHMgdGhhdCBhcmUgZXhwZWN0ZWQgdG8gZmFpbC4g
V2UgY291bGQgdXNlIHRoZSBXSUxMX0ZBSUwKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1FZmwuY21ha2UgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNt
YWtlCmluZGV4IDNiY2I4OWIuLjFkMzRhZDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVm
bC5jbWFrZQpAQCAtODYsNiArODYsNyBAQCBzZXQodGVzdF93ZWJraXQyX2FwaV9CSU5BUklFUwog
ICAgIFdLU3RyaW5nSlNTdHJpbmcKICAgICBXS1VSTAogICAgIFdpbGxTZW5kU3VibWl0RXZlbnQK
KyAgICBlZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vzc0NhbGxiYWNrcwogKQogCiBzZXQodGVzdF93
ZWJraXQyX2FwaV9mYWlsX0JJTkFSSUVTCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9j
ZXNzQ2FsbGJhY2tzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDk3
MDk5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L2VmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tzLmNwcApAQCAtMCwwICsxLDEyNSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmlldy5oIgorI2luY2x1ZGUg
IlRlc3QuaCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKyNpbmNsdWRlIDxXZWJLaXQyL1dLUmV0YWlu
UHRyLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworc3RydWN0IFRlc3RTdGF0ZXNE
YXRhIHsKKyAgICBUZXN0U3RhdGVzRGF0YShXS1ZpZXdSZWYgdmlldywgV0tVUkxSZWYgdXJsKQor
ICAgICAgICA6IHZpZXcodmlldykKKyAgICAgICAgLCB1cmwodXJsKQorICAgICAgICAsIGRpZEZp
bmlzaExvYWQoZmFsc2UpCisgICAgICAgICwgZGlkQ3Jhc2goZmFsc2UpCisgICAgICAgICwgZGlk
UmVsYXVuY2goZmFsc2UpCisgICAgeworICAgIH0KKworICAgIFdLVmlld1JlZiB2aWV3OworICAg
IFdLVVJMUmVmIHVybDsKKyAgICBib29sIGRpZEZpbmlzaExvYWQ7CisgICAgYm9vbCBkaWRDcmFz
aDsKKyAgICBib29sIGRpZFJlbGF1bmNoOworfTsKKworc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIFRlc3RTdGF0ZXNEYXRhKiBzdGF0ZXMgPSBjb25zdF9jYXN0PFRl
c3RTdGF0ZXNEYXRhKj4oc3RhdGljX2Nhc3Q8Y29uc3QgVGVzdFN0YXRlc0RhdGEqPihjbGllbnRJ
bmZvKSk7CisgICAgc3RhdGVzLT5kaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3RhdGljIHZv
aWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBXS1BhZ2VMb2FkZXJDbGllbnQgbG9hZGVyQ2xpZW50OworICAgIG1lbXNl
dCgmbG9hZGVyQ2xpZW50LCAwLCBzaXplb2YobG9hZGVyQ2xpZW50KSk7CisKKyAgICBsb2FkZXJD
bGllbnQuZGlkRmluaXNoTG9hZEZvckZyYW1lID0gZGlkRmluaXNoTG9hZEZvckZyYW1lOworICAg
IGxvYWRlckNsaWVudC5jbGllbnRJbmZvID0gY2xpZW50SW5mbzsKKworICAgIFdLUGFnZVNldFBh
Z2VMb2FkZXJDbGllbnQocGFnZSwgJmxvYWRlckNsaWVudCk7Cit9CisKK3ZvaWQgd2ViUHJvY2Vz
c0NyYXNoZWQoV0tWaWV3UmVmIHZpZXcsIFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKK3sKKyAgICBUZXN0U3RhdGVzRGF0YSogc3RhdGVzID0gY29uc3RfY2FzdDxUZXN0U3Rh
dGVzRGF0YSo+KHN0YXRpY19jYXN0PGNvbnN0IFRlc3RTdGF0ZXNEYXRhKj4oY2xpZW50SW5mbykp
OworCisgICAgRVhQRUNUX0VRKHN0YXRlcy0+dmlldywgdmlldyk7CisgICAgRVhQRUNUX1RSVUUo
V0tVUkxJc0VxdWFsKHVybCwgc3RhdGVzLT51cmwpKTsKKworICAgIHN0YXRlcy0+ZGlkQ3Jhc2gg
PSB0cnVlOworfQorCit2b2lkIHdlYlByb2Nlc3NEaWRSZWxhdW5jaChXS1ZpZXdSZWYgdmlldywg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBUZXN0U3RhdGVzRGF0YSogc3RhdGVzID0g
Y29uc3RfY2FzdDxUZXN0U3RhdGVzRGF0YSo+KHN0YXRpY19jYXN0PGNvbnN0IFRlc3RTdGF0ZXNE
YXRhKj4oY2xpZW50SW5mbykpOworCisgICAgRVhQRUNUX0VRKHN0YXRlcy0+dmlldywgdmlldyk7
CisKKyAgICBzdGF0ZXMtPmRpZFJlbGF1bmNoID0gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgc2V0
Vmlld0NsaWVudChXS1ZpZXdSZWYgdmlldywgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBXS1ZpZXdDbGllbnQgdmlld0NsaWVudDsKKyAgICBtZW1zZXQoJnZpZXdDbGllbnQsIDAsIHNp
emVvZihXS1ZpZXdDbGllbnQpKTsKKworICAgIHZpZXdDbGllbnQudmVyc2lvbiA9IGtXS1ZpZXdD
bGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB2aWV3Q2xpZW50LmNsaWVudEluZm8gPSBjbGllbnRJ
bmZvOworICAgIHZpZXdDbGllbnQud2ViUHJvY2Vzc0NyYXNoZWQgPSB3ZWJQcm9jZXNzQ3Jhc2hl
ZDsKKyAgICB2aWV3Q2xpZW50LndlYlByb2Nlc3NEaWRSZWxhdW5jaCA9IHdlYlByb2Nlc3NEaWRS
ZWxhdW5jaDsKKworICAgIFdLVmlld1NldFZpZXdDbGllbnQodmlldywgJnZpZXdDbGllbnQpOwor
fQorCitURVNUKFdlYktpdDIsIFdLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MpCit7Cisg
ICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFdLQ29udGV4dENy
ZWF0ZSgpKTsKKyAgICBXS1VSTFJlZiB1cmwgPSBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgi
c2ltcGxlIiwgImh0bWwiKTsKKworICAgIFBsYXRmb3JtV2ViVmlldyB2aWV3KGNvbnRleHQuZ2V0
KCkpOworCisgICAgVGVzdFN0YXRlc0RhdGEgc3RhdGVzID0gVGVzdFN0YXRlc0RhdGEodmlldy5w
bGF0Zm9ybVZpZXcoKSwgdXJsKTsKKworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQodmlldy5wYWdl
KCksICZzdGF0ZXMpOworICAgIHNldFZpZXdDbGllbnQodmlldy5wbGF0Zm9ybVZpZXcoKSwgJnN0
YXRlcyk7CisKKyAgICBXS1BhZ2VMb2FkVVJMKHZpZXcucGFnZSgpLCB1cmwpOworICAgIFV0aWw6
OnJ1bigmc3RhdGVzLmRpZEZpbmlzaExvYWQpOworCisgICAgV0tQYWdlVGVybWluYXRlKHZpZXcu
cGFnZSgpKTsKKyAgICBVdGlsOjpydW4oJnN0YXRlcy5kaWRDcmFzaCk7CisKKyAgICBXS1BhZ2VS
ZWxvYWQodmlldy5wYWdlKCkpOworICAgIFV0aWw6OnJ1bigmc3RhdGVzLmRpZFJlbGF1bmNoKTsK
KworICAgIFdLUmVsZWFzZSh1cmwpOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
Cg==
</data>
<flag name="review"
          id="212119"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191294</attachid>
            <date>2013-03-04 12:43:58 -0800</date>
            <delta_ts>2013-03-04 13:41:41 -0800</delta_ts>
            <desc>to be landed</desc>
            <filename>bug109828_v7</filename>
            <type>text/plain</type>
            <size>18032</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGE3YWNhYTkwYTUyMjk2ZDJhODEzZWNmZDEzZjVjODYyN2FmODI4NmEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
TW9uIE1hciA0IDIyOjM3OjUxIDIwMTMgKzAyMDAKCiAgICBidWcxMDk4MjgKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggZWMyZDYwMy4uMjViYzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEzLTAz
LTA0ICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgor
CisgICAgICAgIFtXSzJdW0VGTF0gQWRkIGNhbGxiYWNrcyB0byB0aGUgV0tWaWV3Q2xpZW50IHRv
IGhhbmRsZSBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgcmVsYXVuY2gKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwOTgyOAorCisgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgorCisgICAgICAgIFByb3ZpZGluZyBXS1Zp
ZXdDbGllbnQgd2l0aCBXZWIgUHJvY2VzcyBjcmFzaCBhbmQgV2ViIFByb2Nlc3MgcmVsYXVuY2gK
KyAgICAgICAgY2FsbGJhY2tzIGJyaW5ncyBiZXR0ZXIgZGVzaWduIGFzIFdlYlZpZXcgc2hvdWxk
IG5vdCBiZSBhd2FyZSBvZgorICAgICAgICBFRkwtc3BlY2lmaWMgY29kZSBoYW5kbGluZyB0aGUg
Y29ycmVzcG9uZGluZyBldmVudHMuCisKKyAgICAgICAgVGhlIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBtZW50aW9uZWQgV2ViIFByb2Nlc3MgY2FsbGJhY2tzIHdhcyBhbHNvIGFkZGVkLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0
VGhlbWVQYXRoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NDcmFzaGVkKToKKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NEaWRSZWxhdW5jaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oOgorICAgICAgICAoVmlld0NsaWVudEVmbCk6
CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlldzo6c2V0VGhlbWVQYXRoKToKKworICAgICAgICAgICAgQWNjZXB0cyBXVEY6OlN0cmlu
ZyBpbnN0ZWFkIG9mIFdLU3RyaW5nUmVmIGFzIGl0IGlzCisgICAgICAgICAgICBtb3JlIGFwcHJv
cHJpYXRlIGZvciBDKysgQVBJIGltcGxlbWVudGF0aW9uIGNsYXNzLgorCisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXc6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6
OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmg6
CisgICAgICAgIChXZWJWaWV3KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGll
bnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp3ZWJQcm9jZXNzQ3Jhc2hl
ZCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50Ojp3
ZWJQcm9jZXNzRGlkUmVsYXVuY2gpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0Ns
aWVudC5oOgorCiAyMDEzLTAzLTA0ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5j
b20+CiAKICAgICAgICAgQ29tcGxldGUgdGhlIHBsdWctaW4gVVJMIHN0cmluZyBiZWZvcmUgc2Vu
ZGluZyBpdCB0byB0aGUgVUkgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDE3NzkxMWYuLmEyNDk4MjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCBib29sIFdLVmlld0dldERyYXdzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kKFdLVmlld1JlZiB2aWV3
UmVmKQogCiB2b2lkIFdLVmlld1NldFRoZW1lUGF0aChXS1ZpZXdSZWYgdmlld1JlZiwgV0tTdHJp
bmdSZWYgdGhlbWUpCiB7Ci0gICAgdG9JbXBsKHZpZXdSZWYpLT5zZXRUaGVtZVBhdGgodGhlbWUp
OworICAgIHRvSW1wbCh2aWV3UmVmKS0+c2V0VGhlbWVQYXRoKHRvSW1wbCh0aGVtZSktPnN0cmlu
ZygpKTsKIH0KIAogdm9pZCBXS1ZpZXdTdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlv
bnMoV0tWaWV3UmVmIHZpZXdSZWYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvZWZsL1dLVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2Vm
bC9XS1ZpZXcuaAppbmRleCA3MzQ1NTY2Li5hNzA5YjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmgKQEAgLTM4LDggKzM4LDEwIEBAIHR5cGVkZWYgc3Ry
dWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1cmZhY2VfdDsKIGV4dGVybiAiQyIgewogI2VuZGlm
CiAKK3R5cGVkZWYgdm9pZCAoKldLVmlld0NhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgY29uc3Qg
dm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5
Q2FsbGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbyk7CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2Fs
bGJhY2spKFdLVmlld1JlZiB2aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5m
byk7Cit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdXZWJQcm9jZXNzQ3Jhc2hlZENhbGxiYWNrKShXS1Zp
ZXdSZWYgdmlldywgV0tVUkxSZWYgdXJsLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAogc3Ry
dWN0IFdLVmlld0NsaWVudCB7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHZlcnNpb247CkBAIC00OCw2ICs1MCw4IEBAIHN0cnVjdCBXS1ZpZXdD
bGllbnQgewogICAgIC8vIFZlcnNpb24gMAogICAgIFdLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxs
YmFjayAgICAgICAgICAgICAgICAgICB2aWV3TmVlZHNEaXNwbGF5OwogICAgIFdLVmlld1BhZ2VE
aWRDaGFuZ2VDb250ZW50c1NpemVDYWxsYmFjayAgICAgICAgICBkaWRDaGFuZ2VDb250ZW50c1Np
emU7CisgICAgV0tWaWV3V2ViUHJvY2Vzc0NyYXNoZWRDYWxsYmFjayAgICAgICAgICAgICAgICAg
IHdlYlByb2Nlc3NDcmFzaGVkOworICAgIFdLVmlld0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiB9OwogdHlwZWRlZiBzdHJ1
Y3QgV0tWaWV3Q2xpZW50IFdLVmlld0NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKaW5kZXggNzdmOGJmMy4uNTViNWFhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw3
ICsyNyw4IEBACiAjaW5jbHVkZSAiVmlld0NsaWVudEVmbC5oIgogCiAjaW5jbHVkZSAiRXdrVmll
dy5oIgotI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUgPFdlYktpdDIvV0tTdHJpbmcuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLVmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgRXdrVmlld0Nh
bGxiYWNrczsKIApAQCAtNTAsNiArNTEsMzcgQEAgdm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFu
Z2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2wKICAg
ICBld2tWaWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXpl
KTsKIH0KIAordm9pZCBWaWV3Q2xpZW50RWZsOjp3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYs
IFdLVVJMUmVmIHVybCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBl
d2tWaWV3ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8pOworCisgICAgLy8gQ2hlY2sgaWYgbG9hZGlu
ZyB3YXMgb25nb2luZywgd2hlbiB3ZWIgcHJvY2VzcyBjcmFzaGVkLgorICAgIGRvdWJsZSBsb2Fk
UHJvZ3Jlc3MgPSBXS1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncmVzcyhld2tWaWV3LT53a1BhZ2UoKSk7
CisgICAgaWYgKGxvYWRQcm9ncmVzcyA+PSAwICYmIGxvYWRQcm9ncmVzcyA8IDEpIHsKKyAgICAg
ICAgbG9hZFByb2dyZXNzID0gMTsKKyAgICAgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxMb2Fk
UHJvZ3Jlc3M+KCkuY2FsbCgmbG9hZFByb2dyZXNzKTsKKyAgICB9CisKKyAgICBld2tWaWV3LT5z
bWFydENhbGxiYWNrPFRvb2x0aXBUZXh0VW5zZXQ+KCkuY2FsbCgpOworCisgICAgYm9vbCBoYW5k
bGVkID0gZmFsc2U7CisgICAgZXdrVmlldy0+c21hcnRDYWxsYmFjazxXZWJQcm9jZXNzQ3Jhc2hl
ZD4oKS5jYWxsKCZoYW5kbGVkKTsKKworICAgIGlmICghaGFuZGxlZCkgeworICAgICAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgdXJsU3RyaW5nKHVybCk7CisgICAgICAgIFdBUk4oIldBUk5JTkc6IFRo
ZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCBzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4odXJsU3RyaW5nKSk7CisKKyAgICAgICAgLy8gRGlzcGxheSBhbiBlcnJv
ciBwYWdlCisgICAgICAgIGV3a192aWV3X2h0bWxfc3RyaW5nX2xvYWQoZXdrVmlldy0+ZXZhc09i
amVjdCgpLCAiVGhlIHdlYiBwcm9jZXNzIGhhcyBjcmFzaGVkLiIsIDAsIHVybFN0cmluZyk7Cisg
ICAgfQorfQorCit2b2lkIFZpZXdDbGllbnRFZmw6OndlYlByb2Nlc3NEaWRSZWxhdW5jaChXS1Zp
ZXdSZWYgdmlld1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoY29uc3Qg
Y2hhciogdGhlbWVQYXRoID0gdG9Fd2tWaWV3KGNsaWVudEluZm8pLT50aGVtZVBhdGgoKSkKKyAg
ICAgICAgV0tWaWV3U2V0VGhlbWVQYXRoKHZpZXdSZWYsIGFkb3B0V0soV0tTdHJpbmdDcmVhdGVX
aXRoVVRGOENTdHJpbmcodGhlbWVQYXRoKSkuZ2V0KCkpOworfQorCiBWaWV3Q2xpZW50RWZsOjpW
aWV3Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykKIHsKQEAgLTYx
LDYgKzkzLDggQEAgVmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQog
ICAgIHZpZXdDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CiAgICAgdmlld0NsaWVudC5kaWRDaGFu
Z2VDb250ZW50c1NpemUgPSBkaWRDaGFuZ2VDb250ZW50c1NpemU7CiAgICAgdmlld0NsaWVudC52
aWV3TmVlZHNEaXNwbGF5ID0gdmlld05lZWRzRGlzcGxheTsKKyAgICB2aWV3Q2xpZW50LndlYlBy
b2Nlc3NDcmFzaGVkID0gd2ViUHJvY2Vzc0NyYXNoZWQ7CisgICAgdmlld0NsaWVudC53ZWJQcm9j
ZXNzRGlkUmVsYXVuY2ggPSB3ZWJQcm9jZXNzRGlkUmVsYXVuY2g7CiAKICAgICBXS1ZpZXdTZXRW
aWV3Q2xpZW50KG1fdmlldy0+d2tWaWV3KCksICZ2aWV3Q2xpZW50KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKaW5kZXggMmViZDNhMi4uNmJhYWYw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZs
LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKQEAg
LTQ5LDYgKzQ5LDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgRXdrVmlldyogdG9Fd2tWaWV3KGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIHZpZXdOZWVkc0Rpc3BsYXko
V0tWaWV3UmVmLCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3Rh
dGljIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdLVmlld1JlZiwgV0tTaXplLCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1Zp
ZXdSZWYsIFdLVVJMUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9p
ZCB3ZWJQcm9jZXNzRGlkUmVsYXVuY2goV0tWaWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKIAogICAgIEV3a1ZpZXcqIG1fdmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3LmNwcAppbmRleCA1ODQ2ZTIxLi4yOTczMTk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKQEAgLTEyOCw5ICsxMjgsOSBAQCBFdmFzX09iamVjdCog
V2ViVmlldzo6ZXZhc09iamVjdCgpCiAgICAgcmV0dXJuIG1fZXdrVmlldy0+ZXZhc09iamVjdCgp
OwogfQogCi12b2lkIFdlYlZpZXc6OnNldFRoZW1lUGF0aChXS1N0cmluZ1JlZiB0aGVtZSkKK3Zv
aWQgV2ViVmlldzo6c2V0VGhlbWVQYXRoKGNvbnN0IFN0cmluZyYgdGhlbWUpCiB7Ci0gICAgbV9w
YWdlLT5zZXRUaGVtZVBhdGgodG9XVEZTdHJpbmcodGhlbWUpLnV0ZjgoKS5kYXRhKCkpOworICAg
IG1fcGFnZS0+c2V0VGhlbWVQYXRoKHRoZW1lKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzZXREcmF3
c0JhY2tncm91bmQoYm9vbCBkcmF3c0JhY2tncm91bmQpCkBAIC0yOTcsMzIgKzI5NywxMiBAQCBi
b29sIFdlYlZpZXc6OmlzVmlld0luV2luZG93KCkKIAogdm9pZCBXZWJWaWV3Ojpwcm9jZXNzRGlk
Q3Jhc2goKQogewotICAgIC8vIENoZWNrIGlmIGxvYWRpbmcgd2FzIG9uZ29pbmcsIHdoZW4gd2Vi
IHByb2Nlc3MgY3Jhc2hlZC4KLSAgICBkb3VibGUgbG9hZFByb2dyZXNzID0gZXdrX3ZpZXdfbG9h
ZF9wcm9ncmVzc19nZXQobV9ld2tWaWV3LT5ldmFzT2JqZWN0KCkpOwotICAgIGlmIChsb2FkUHJv
Z3Jlc3MgPj0gMCAmJiBsb2FkUHJvZ3Jlc3MgPCAxKSB7Ci0gICAgICAgIGxvYWRQcm9ncmVzcyA9
IDE7Ci0gICAgICAgIG1fZXdrVmlldy0+c21hcnRDYWxsYmFjazxMb2FkUHJvZ3Jlc3M+KCkuY2Fs
bCgmbG9hZFByb2dyZXNzKTsKLSAgICB9Ci0KLSAgICBtX2V3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8
VG9vbHRpcFRleHRVbnNldD4oKS5jYWxsKCk7Ci0KLSAgICBib29sIGhhbmRsZWQgPSBmYWxzZTsK
LSAgICBtX2V3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8V2ViUHJvY2Vzc0NyYXNoZWQ+KCkuY2FsbCgm
aGFuZGxlZCk7Ci0KLSAgICBpZiAoIWhhbmRsZWQpIHsKLSAgICAgICAgQ1N0cmluZyB1cmwgPSBt
X3BhZ2UtPnVybEF0UHJvY2Vzc0V4aXQoKS51dGY4KCk7Ci0gICAgICAgIFdBUk4oIldBUk5JTkc6
IFRoZSB3ZWIgcHJvY2VzcyBleHBlcmllbmNlZCBhIGNyYXNoIG9uICclcycuXG4iLCB1cmwuZGF0
YSgpKTsKLQotICAgICAgICAvLyBEaXNwbGF5IGFuIGVycm9yIHBhZ2UKLSAgICAgICAgZXdrX3Zp
ZXdfaHRtbF9zdHJpbmdfbG9hZChtX2V3a1ZpZXctPmV2YXNPYmplY3QoKSwgIlRoZSB3ZWIgcHJv
Y2VzcyBoYXMgY3Jhc2hlZC4iLCAwLCB1cmwuZGF0YSgpKTsKLSAgICB9CisgICAgbV9jbGllbnQu
d2ViUHJvY2Vzc0NyYXNoZWQodGhpcywgbV9wYWdlLT51cmxBdFByb2Nlc3NFeGl0KCkpOwogfQog
CiB2b2lkIFdlYlZpZXc6OmRpZFJlbGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgY29uc3QgY2hhciog
dGhlbWVQYXRoID0gbV9ld2tWaWV3LT50aGVtZVBhdGgoKTsKLSAgICBpZiAodGhlbWVQYXRoKQot
ICAgICAgICBtX3BhZ2UtPnNldFRoZW1lUGF0aCh0aGVtZVBhdGgpOworICAgIG1fY2xpZW50Lndl
YlByb2Nlc3NEaWRSZWxhdW5jaCh0aGlzKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWdlQ2xvc2Vk
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKaW5kZXggNDJjOGQxMy4uOWY1
ZjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmgKQEAgLTY4LDcgKzY4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0RHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQoYm9v
bCk7CiAgICAgYm9vbCBkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCgpIGNvbnN0OwogCi0gICAg
dm9pZCBzZXRUaGVtZVBhdGgoV0tTdHJpbmdSZWYpOworICAgIHZvaWQgc2V0VGhlbWVQYXRoKGNv
bnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzdXNwZW5kQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1h
dGlvbnMoKTsKICAgICB2b2lkIHJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcAppbmRl
eCAwNWZjODBjLi5mZmNhMDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXdDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0NsaWVudC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJWaWV3Q2xp
ZW50LmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5o
IgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsNCArNDksMjAgQEAgdm9pZCBX
ZWJWaWV3Q2xpZW50OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV2ViVmlldyogdmlldywgY29uc3Qg
SW50U2l6ZSYgc2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUodG9BUEko
dmlldyksIHRvQVBJKHNpemUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJW
aWV3Q2xpZW50Ojp3ZWJQcm9jZXNzQ3Jhc2hlZChXZWJWaWV3KiB2aWV3LCBjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgICBpZiAoIW1fY2xpZW50LndlYlByb2Nlc3NDcmFzaGVkKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCh0b0FQSSh2aWV3KSwgYWRv
cHRXSyh0b0NvcGllZFVSTEFQSSh1cmwpKS5nZXQoKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9
CisKK3ZvaWQgV2ViVmlld0NsaWVudDo6d2ViUHJvY2Vzc0RpZFJlbGF1bmNoKFdlYlZpZXcqIHZp
ZXcpCit7CisgICAgaWYgKCFtX2NsaWVudC53ZWJQcm9jZXNzRGlkUmVsYXVuY2gpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LndlYlByb2Nlc3NEaWRSZWxhdW5jaCh0b0FQSSh2aWV3
KSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaAppbmRleCBkNWU4MmRk
Li4xMGNmOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGll
bnQuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCiAjaW5jbHVk
ZSAiV0tWaWV3LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIEludFJlY3Q7CkBAIC00Miw2ICs0Myw4IEBAIGNsYXNzIFdlYlZp
ZXdDbGllbnQ6IHB1YmxpYyBBUElDbGllbnQ8V0tWaWV3Q2xpZW50LCBrV0tWaWV3Q2xpZW50Q3Vy
cmVudFZlcnNpb24+CiBwdWJsaWM6CiAgICAgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdlYlZpZXcq
LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Np
emUoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKyAgICB2b2lkIHdlYlByb2Nl
c3NDcmFzaGVkKFdlYlZpZXcqLCBjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdm9pZCB3ZWJQcm9j
ZXNzRGlkUmVsYXVuY2goV2ViVmlldyopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjA3NThk
My4uMDRkYjM0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAzLTA0ICBNaWtoYWlsIFBvemRueWFrb3YgIDxt
aWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIFtXSzJdW0VGTF0gQWRkIGNh
bGxiYWNrcyB0byB0aGUgV0tWaWV3Q2xpZW50IHRvIGhhbmRsZSBXZWIgUHJvY2VzcyBjcmFzaCBh
bmQgcmVsYXVuY2gKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwOTgyOAorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgorCisgICAgICAgIEFkZGVkIEFQSSB0ZXN0IGZvciBuZXdseSBhZGRlZCBXZWIgUHJvY2Vz
cyBjcmFzaCBhbmQgV2ViIFByb2Nlc3MgcmVsYXVuY2ggV0tWaWV3Q2xpZW50CisgICAgICAgIGNh
bGxiYWNrcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQ6CisKKyAg
ICAgICAgICAgIFRlc3RzIGxvY2F0ZWQgaW4gJ1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Micg
c3ViZGlyZWN0b3JpZXMgYXJlIGFsc28KKyAgICAgICAgICAgIGNvbnNpZGVyZWQuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9lZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vzc0NhbGxiYWNrcy5j
cHA6IEFkZGVkLgorICAgICAgICAoVGVzdFdlYktpdEFQSSk6CisgICAgICAgIChUZXN0V2ViS2l0
QVBJOjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0
UGFnZUxvYWRlckNsaWVudCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJQcm9jZXNzQ3Jh
c2hlZCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp3ZWJQcm9jZXNzRGlkUmVsYXVuY2gpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2V0Vmlld0NsaWVudCk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKwogMjAxMy0wMy0wNCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBVcHN0cmVhbSBpT1MgQWNjZXNzaWJpbGl0eSBEdW1w
UmVuZGVyVHJlZSBjaGFuZ2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtl
TGlzdHMudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9DTWFrZUxpc3RzLnR4dAppbmRleCA3MWY3
YTkyLi5hOGU5OTk5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ01ha2VMaXN0cy50eHQKQEAgLTEyOCwxMCAr
MTI4LDExIEBAIHNldCh0ZXN0X3dlYmtpdDJfYXBpX0xJQlJBUklFUwogKQogCiBmb3JlYWNoICh0
ZXN0TmFtZSAke3Rlc3Rfd2Via2l0Ml9hcGlfQklOQVJJRVN9KQotICAgIGFkZF9leGVjdXRhYmxl
KHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0TmFtZX0gJHtURVNUV0VCS0lUQVBJX0RJUn0vVGVzdHMv
V2ViS2l0Mi8ke3Rlc3ROYW1lfS5jcHApCi0gICAgYWRkX3Rlc3QodGVzdF93ZWJraXQyX2FwaV8k
e3Rlc3ROYW1lfSAke0NNQUtFX1JVTlRJTUVfT1VUUFVUX0RJUkVDVE9SWX0vdGVzdF93ZWJraXQy
X2FwaV8ke3Rlc3ROYW1lfSkKLSAgICBzZXRfdGVzdHNfcHJvcGVydGllcyh0ZXN0X3dlYmtpdDJf
YXBpXyR7dGVzdE5hbWV9IFBST1BFUlRJRVMgVElNRU9VVCA2MCkKLSAgICB0YXJnZXRfbGlua19s
aWJyYXJpZXModGVzdF93ZWJraXQyX2FwaV8ke3Rlc3ROYW1lfSAke3Rlc3Rfd2Via2l0Ml9hcGlf
TElCUkFSSUVTfSkKKyAgICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KHRlc3RCYXNlTmFtZSAke3Rl
c3ROYW1lfSBOQU1FKQorICAgIGFkZF9leGVjdXRhYmxlKHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0
QmFzZU5hbWV9ICR7VEVTVFdFQktJVEFQSV9ESVJ9L1Rlc3RzL1dlYktpdDIvJHt0ZXN0TmFtZX0u
Y3BwKQorICAgIGFkZF90ZXN0KHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9ICR7Q01B
S0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZfS90ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJhc2VO
YW1lfSkKKyAgICBzZXRfdGVzdHNfcHJvcGVydGllcyh0ZXN0X3dlYmtpdDJfYXBpXyR7dGVzdEJh
c2VOYW1lfSBQUk9QRVJUSUVTIFRJTUVPVVQgNjApCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVz
KHRlc3Rfd2Via2l0Ml9hcGlfJHt0ZXN0QmFzZU5hbWV9ICR7dGVzdF93ZWJraXQyX2FwaV9MSUJS
QVJJRVN9KQogZW5kZm9yZWFjaCAoKQogCiAjIFdlIGRvbid0IHJ1biB0ZXN0cyB0aGF0IGFyZSBl
eHBlY3RlZCB0byBmYWlsLiBXZSBjb3VsZCB1c2UgdGhlIFdJTExfRkFJTApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggM2JjYjg5Yi4uMWQzNGFkMCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1BsYXRmb3JtRWZsLmNtYWtlCkBAIC04Niw2ICs4Niw3IEBAIHNldCh0ZXN0X3dlYmtp
dDJfYXBpX0JJTkFSSUVTCiAgICAgV0tTdHJpbmdKU1N0cmluZwogICAgIFdLVVJMCiAgICAgV2ls
bFNlbmRTdWJtaXRFdmVudAorICAgIGVmbC9XS1ZpZXdDbGllbnRXZWJQcm9jZXNzQ2FsbGJhY2tz
CiApCiAKIHNldCh0ZXN0X3dlYmtpdDJfYXBpX2ZhaWxfQklOQVJJRVMKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9lZmwvV0tWaWV3Q2xpZW50V2ViUHJvY2Vz
c0NhbGxiYWNrcy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dL
Vmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjljMmRmYTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvZWZsL1dLVmlld0NsaWVudFdlYlByb2Nlc3NDYWxsYmFja3MuY3Bw
CkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBv
cmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJW
aWV3LmgiCisjaW5jbHVkZSAiVGVzdC5oIgorI2luY2x1ZGUgIldLVmlldy5oIgorI2luY2x1ZGUg
PFdlYktpdDIvV0tSZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitz
dHJ1Y3QgVGVzdFN0YXRlc0RhdGEgeworICAgIFRlc3RTdGF0ZXNEYXRhKFdLVmlld1JlZiB2aWV3
LCBXS1VSTFJlZiB1cmwpCisgICAgICAgIDogdmlldyh2aWV3KQorICAgICAgICAsIHVybCh1cmwp
CisgICAgICAgICwgZGlkRmluaXNoTG9hZChmYWxzZSkKKyAgICAgICAgLCBkaWRDcmFzaChmYWxz
ZSkKKyAgICAgICAgLCBkaWRSZWxhdW5jaChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAgV0tW
aWV3UmVmIHZpZXc7CisgICAgV0tVUkxSZWYgdXJsOworICAgIGJvb2wgZGlkRmluaXNoTG9hZDsK
KyAgICBib29sIGRpZENyYXNoOworICAgIGJvb2wgZGlkUmVsYXVuY2g7Cit9OworCitzdGF0aWMg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVS
ZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgVGVzdFN0YXRlc0RhdGEqIHN0YXRl
cyA9IGNvbnN0X2Nhc3Q8VGVzdFN0YXRlc0RhdGEqPihzdGF0aWNfY2FzdDxjb25zdCBUZXN0U3Rh
dGVzRGF0YSo+KGNsaWVudEluZm8pKTsKKyAgICBzdGF0ZXMtPmRpZEZpbmlzaExvYWQgPSB0cnVl
OworfQorCitzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFdLUGFnZUxvYWRlckNsaWVudCBsb2FkZXJD
bGllbnQ7CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQsIDAsIHNpemVvZihsb2FkZXJDbGllbnQp
KTsKKworICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5pc2hM
b2FkRm9yRnJhbWU7CisgICAgbG9hZGVyQ2xpZW50LmNsaWVudEluZm8gPSBjbGllbnRJbmZvOwor
CisgICAgV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudChwYWdlLCAmbG9hZGVyQ2xpZW50KTsKK30K
Kwordm9pZCB3ZWJQcm9jZXNzQ3Jhc2hlZChXS1ZpZXdSZWYgdmlldywgV0tVUkxSZWYgdXJsLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFRlc3RTdGF0ZXNEYXRhKiBzdGF0ZXMgPSBj
b25zdF9jYXN0PFRlc3RTdGF0ZXNEYXRhKj4oc3RhdGljX2Nhc3Q8Y29uc3QgVGVzdFN0YXRlc0Rh
dGEqPihjbGllbnRJbmZvKSk7CisKKyAgICBFWFBFQ1RfRVEoc3RhdGVzLT52aWV3LCB2aWV3KTsK
KyAgICBFWFBFQ1RfVFJVRShXS1VSTElzRXF1YWwodXJsLCBzdGF0ZXMtPnVybCkpOworCisgICAg
c3RhdGVzLT5kaWRDcmFzaCA9IHRydWU7Cit9CisKK3ZvaWQgd2ViUHJvY2Vzc0RpZFJlbGF1bmNo
KFdLVmlld1JlZiB2aWV3LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIFRlc3RTdGF0
ZXNEYXRhKiBzdGF0ZXMgPSBjb25zdF9jYXN0PFRlc3RTdGF0ZXNEYXRhKj4oc3RhdGljX2Nhc3Q8
Y29uc3QgVGVzdFN0YXRlc0RhdGEqPihjbGllbnRJbmZvKSk7CisKKyAgICBFWFBFQ1RfRVEoc3Rh
dGVzLT52aWV3LCB2aWV3KTsKKworICAgIHN0YXRlcy0+ZGlkUmVsYXVuY2ggPSB0cnVlOworfQor
CitzdGF0aWMgdm9pZCBzZXRWaWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIFdLVmlld0NsaWVudCB2aWV3Q2xpZW50OworICAgIG1lbXNldCgm
dmlld0NsaWVudCwgMCwgc2l6ZW9mKFdLVmlld0NsaWVudCkpOworCisgICAgdmlld0NsaWVudC52
ZXJzaW9uID0ga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIHZpZXdDbGllbnQuY2xp
ZW50SW5mbyA9IGNsaWVudEluZm87CisgICAgdmlld0NsaWVudC53ZWJQcm9jZXNzQ3Jhc2hlZCA9
IHdlYlByb2Nlc3NDcmFzaGVkOworICAgIHZpZXdDbGllbnQud2ViUHJvY2Vzc0RpZFJlbGF1bmNo
ID0gd2ViUHJvY2Vzc0RpZFJlbGF1bmNoOworCisgICAgV0tWaWV3U2V0Vmlld0NsaWVudCh2aWV3
LCAmdmlld0NsaWVudCk7Cit9CisKK1RFU1QoV2ViS2l0MiwgV0tWaWV3Q2xpZW50V2ViUHJvY2Vz
c0NhbGxiYWNrcykKK3sKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRv
cHRXSywgV0tDb250ZXh0Q3JlYXRlKCkpOworICAgIFdLUmV0YWluUHRyPFdLVVJMUmVmPiB1cmwg
PSBVdGlsOjpjcmVhdGVVUkxGb3JSZXNvdXJjZSgic2ltcGxlIiwgImh0bWwiKTsKKworICAgIFBs
YXRmb3JtV2ViVmlldyB2aWV3KGNvbnRleHQuZ2V0KCkpOworCisgICAgVGVzdFN0YXRlc0RhdGEg
c3RhdGVzID0gVGVzdFN0YXRlc0RhdGEodmlldy5wbGF0Zm9ybVZpZXcoKSwgdXJsLmdldCgpKTsK
KworICAgIHNldFBhZ2VMb2FkZXJDbGllbnQodmlldy5wYWdlKCksICZzdGF0ZXMpOworICAgIHNl
dFZpZXdDbGllbnQodmlldy5wbGF0Zm9ybVZpZXcoKSwgJnN0YXRlcyk7CisKKyAgICBXS1BhZ2VM
b2FkVVJMKHZpZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmc3RhdGVzLmRp
ZEZpbmlzaExvYWQpOworCisgICAgV0tQYWdlVGVybWluYXRlKHZpZXcucGFnZSgpKTsKKyAgICBV
dGlsOjpydW4oJnN0YXRlcy5kaWRDcmFzaCk7CisKKyAgICBXS1BhZ2VSZWxvYWQodmlldy5wYWdl
KCkpOworICAgIFV0aWw6OnJ1bigmc3RhdGVzLmRpZFJlbGF1bmNoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>