<?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>120350</bug_id>
          
          <creation_ts>2013-08-27 02:39:14 -0700</creation_ts>
          <short_desc>[GTK] Cancel the current active WebKitAuthenticationRequest on load failed</short_desc>
          <delta_ts>2013-09-09 06:48:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Obzhirov">obzhirov</reporter>
          <assigned_to name="Anton Obzhirov">obzhirov</assigned_to>
          <cc>brian.holt</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>921413</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-08-27 02:39:14 -0700</bug_when>
    <thetext>See https://bugs.webkit.org/show_bug.cgi?id=119487 for more details. The patch will follow shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921461</commentid>
    <comment_count>1</comment_count>
      <attachid>209754</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-08-27 05:31:46 -0700</bug_when>
    <thetext>Created attachment 209754
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921462</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-27 05:33:37 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>921499</commentid>
    <comment_count>3</comment_count>
      <attachid>209754</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2013-08-27 07:05:19 -0700</bug_when>
    <thetext>Comment on attachment 209754
Patch

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

Some comments

&gt; Source/WebKit2/ChangeLog:10
&gt; +        New test has been added in authentication tests.

Instead of a list of short descriptions of the changes, the ChangeLog normally contains a short description of the issue and the fix.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1432
&gt; +            &quot;cancel-authenticate&quot;,

This might be a bit of bikeshedding but authentication-canceled sounds more gnomish to me, although I&apos;d let the API maintainers decide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924401</commentid>
    <comment_count>4</comment_count>
      <attachid>209754</attachid>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-09-04 06:45:32 -0700</bug_when>
    <thetext>Comment on attachment 209754
Patch

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

Informal review: overall it looks good to me.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1432
&gt;&gt; +            &quot;cancel-authenticate&quot;,
&gt; 
&gt; This might be a bit of bikeshedding but authentication-canceled sounds more gnomish to me, although I&apos;d let the API maintainers decide.

I&apos;m not a gnome developer but I think &quot;authentication-cancelled&quot; sounds more intuitive as well.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h:248
&gt; +    gboolean   (* cancel_authenticate)       (WebKitWebView               *web_view);

You should remove the last open slot (reserved6) to maintain the ABI.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1504
&gt; +    AuthenticationTest::add(&quot;WebKitWebView&quot;, &quot;authentication-cancel-authentication&quot;, testWebViewCancelAuthentication);

I would go for more descriptive names because these 2 tests are a bit ambiguous now. Perhaps authentication-load-cancelled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924403</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-04 06:57:22 -0700</bug_when>
    <thetext>Thanks for both reviews! - I will incorporate all comments in my next patch. Now waiting for Carlos :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924903</commentid>
    <comment_count>6</comment_count>
      <attachid>209754</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-05 00:30:36 -0700</bug_when>
    <thetext>Comment on attachment 209754
Patch

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

Agree with all other review comments, thanks Sergio and Brian.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationDialog.cpp:35
&gt; +    unsigned long cancelAuthenticateEventID;

authenticationCancelledID;

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:124
&gt; +    CANCEL_AUTHENTICATE,

This is a notification, it should be AUTHENTICATION_CANCELLED, but I wonder if it would be better to simply add a cancelled signal to the WebKitAuthenticationRequest object instead of adding another signal to the WebView.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1426
&gt; +     * Returns: %TRUE to stop other handlers from being invoked for the event.
&gt; +     *   %FALSE to propagate the event further.

Why is this true_handled? What happens when the user returns TRUE or FALSE?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1821
&gt;      GRefPtr&lt;WebKitAuthenticationRequest&gt; request = adoptGRef(webkitAuthenticationRequestCreate(authenticationChallenge, privateBrowsingEnabled));
&gt; +    webView-&gt;priv-&gt;authenticationRequest = request;

You can merge this now, and keep the initial reference in the view.

webView-&gt;priv-&gt;authenticationRequest = adoptGRef(webkitAuthenticationRequestCreate(authenticationChallenge, privateBrowsingEnabled));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>924978</commentid>
    <comment_count>7</comment_count>
    <who name="Brian Holt">brian.holt</who>
    <bug_when>2013-09-05 05:54:43 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; [...]
&gt; This is a notification, it should be AUTHENTICATION_CANCELLED, but I wonder if it would be better to simply add a cancelled signal to the WebKitAuthenticationRequest object instead of adding another signal to the WebView.

Since this signal would always and only be emitted when authenication is cancelled, it makes sense to me to put in the request and emit the signal in webkit_authentication_request_cancel(), so I support this idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925104</commentid>
    <comment_count>8</comment_count>
      <attachid>210630</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-05 10:21:51 -0700</bug_when>
    <thetext>Created attachment 210630
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925428</commentid>
    <comment_count>9</comment_count>
      <attachid>210630</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-06 00:21:04 -0700</bug_when>
    <thetext>Comment on attachment 210630
Patch

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

This looks much better, but there are still some minor details to fix. Thanks!

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:99
&gt; +     * WebKitAuthenticationRequest::authentication-cancelled:

I think the name is a bit redundant, we can simply use WebKitAuthenticationRequest::cancelled, which means the authentication request has been cancelled.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:105
&gt; +     */

Add Since: tag here, I think we should merge this in the stable branch, so it should be 2.2, unless other maintainers disagree.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:307
&gt; + * #WebKitAuthenticationRequest::authentication-cancelled signal with #WebKitAuthenticationRequest will be emitted.

You don&apos;t need to say explicitly that the signal will be emitted with a WebKitAuthenticationRequest, all signals are emitted with the object that emits them.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1501
&gt; +        webView-&gt;priv-&gt;authenticationRequest.clear();

You should also reset this when the load finishes successfully, since this is not used once the load has finished, and also when the load fails with TLS errors. I would also reset this when a new load starts, that way we don&apos;t probably need webkitWebViewBaseCancelAuthenticationDialog anymore, if there&apos;s an active request, it will be cancelled (in the dispose method) and the dialog will be destroyed.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1268
&gt; +    static gboolean runAuthenticationCancelledCallback(WebKitAuthenticationRequest*, AuthenticationTest*)

Why is this called run? This doesn&apos;t run anything, this is just notified that the auth request has been cancelled. Also, this should be void, not gboolean.

&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1292
&gt; +gboolean AuthenticationTest::authenticationCancelledReceived = false;

Don&apos;t use gboolean and false, use FALSE instead, or even better, use bool</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925458</commentid>
    <comment_count>10</comment_count>
      <attachid>210630</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-06 02:33:38 -0700</bug_when>
    <thetext>Comment on attachment 210630
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:99
&gt;&gt; +     * WebKitAuthenticationRequest::authentication-cancelled:
&gt; 
&gt; I think the name is a bit redundant, we can simply use WebKitAuthenticationRequest::cancelled, which means the authentication request has been cancelled.

Makes sense for me as well

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:105
&gt;&gt; +     */
&gt; 
&gt; Add Since: tag here, I think we should merge this in the stable branch, so it should be 2.2, unless other maintainers disagree.

ok

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitAuthenticationRequest.cpp:307
&gt;&gt; + * #WebKitAuthenticationRequest::authentication-cancelled signal with #WebKitAuthenticationRequest will be emitted.
&gt; 
&gt; You don&apos;t need to say explicitly that the signal will be emitted with a WebKitAuthenticationRequest, all signals are emitted with the object that emits them.

ok

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:1501
&gt;&gt; +        webView-&gt;priv-&gt;authenticationRequest.clear();
&gt; 
&gt; You should also reset this when the load finishes successfully, since this is not used once the load has finished, and also when the load fails with TLS errors. I would also reset this when a new load starts, that way we don&apos;t probably need webkitWebViewBaseCancelAuthenticationDialog anymore, if there&apos;s an active request, it will be cancelled (in the dispose method) and the dialog will be destroyed.

I&apos;ll check webkitWebViewBaseCancelAuthenticationDialog - I think you&apos;re right I just need to cover all places where request should be reset.

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1268
&gt;&gt; +    static gboolean runAuthenticationCancelledCallback(WebKitAuthenticationRequest*, AuthenticationTest*)
&gt; 
&gt; Why is this called run? This doesn&apos;t run anything, this is just notified that the auth request has been cancelled. Also, this should be void, not gboolean.

yep

&gt;&gt; Source/WebKit2/UIProcess/API/gtk/tests/TestWebKitWebView.cpp:1292
&gt;&gt; +gboolean AuthenticationTest::authenticationCancelledReceived = false;
&gt; 
&gt; Don&apos;t use gboolean and false, use FALSE instead, or even better, use bool

I&apos;ll go for bool - makes sense to use standard types for me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>925599</commentid>
    <comment_count>11</comment_count>
      <attachid>210758</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-06 08:34:01 -0700</bug_when>
    <thetext>Created attachment 210758
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926176</commentid>
    <comment_count>12</comment_count>
      <attachid>210758</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-07 03:57:56 -0700</bug_when>
    <thetext>Comment on attachment 210758
Patch

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

This looks good to me, setting r- only because of the static function. This adds new API, so we need approval from another GTK+ port maintainer.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3081
&gt; +void webkitWebViewResetAuthenticationRequest(WebKitWebView* webView)

This function is only used by this file, so it should be static. I&apos;m not sure reset is the best name, though, I would use Cancel or Clear.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp:3083
&gt; +    if (webView-&gt;priv-&gt;authenticationRequest) {

Use an early return here instead.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h:63
&gt; +void webkitWebViewResetAuthenticationRequest(WebKitWebView*);

This is not needed because the function is only used in WebKitWebView.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926647</commentid>
    <comment_count>13</comment_count>
      <attachid>211028</attachid>
    <who name="Anton Obzhirov">obzhirov</who>
    <bug_when>2013-09-09 04:15:25 -0700</bug_when>
    <thetext>Created attachment 211028
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926670</commentid>
    <comment_count>14</comment_count>
      <attachid>211028</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-09-09 06:00:19 -0700</bug_when>
    <thetext>Comment on attachment 211028
Patch

The API looks good to me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926673</commentid>
    <comment_count>15</comment_count>
      <attachid>211028</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-09 06:04:38 -0700</bug_when>
    <thetext>Comment on attachment 211028
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926687</commentid>
    <comment_count>16</comment_count>
      <attachid>211028</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-09 06:48:34 -0700</bug_when>
    <thetext>Comment on attachment 211028
Patch

Clearing flags on attachment: 211028

Committed r155347: &lt;http://trac.webkit.org/changeset/155347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>926688</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-09 06:48:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>209754</attachid>
            <date>2013-08-27 05:31:46 -0700</date>
            <delta_ts>2013-09-05 10:21:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120350-20130827133243.patch</filename>
            <type>text/plain</type>
            <size>11413</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU0NjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZjA2MjhiZTQ5ZDdmYzUw
Y2QyNmZkODk2MDBjNTFmNjJhZDVjNDE0MC4uZGVmMmU0NDA2ODViOTk4NjYzMzlhMzQ1OWQ2Y2I0
ZmVlMDdjNDQxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTA4LTI3ICBBbnRv
biBPYnpoaXJvdiAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQ2Fu
Y2VsIHRoZSBjdXJyZW50IGFjdGl2ZSBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qgb24gbG9h
ZCBmYWlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE5ldyBjYW5jZWwgYXV0aGVudGljYXRpb24gc2lnbmFsIGhhcyBiZWVuIGFkZGVkIGluIFdlYktp
dFdlYlZpZXcuCisgICAgICAgIERlZmF1bHQgZGlhbG9nIGhhcyBiZWVuIHVwZGF0ZWQgdG8gZGlz
bWlzcyBpdHNlbGYgb24gdGhlIHNpZ25hbC4KKyAgICAgICAgTmV3IHRlc3QgaGFzIGJlZW4gYWRk
ZWQgaW4gYXV0aGVudGljYXRpb24gdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHA6CisgICAgICAgIChjYW5jZWxBdXRoZW50
aWNhdGUpOgorICAgICAgICAod2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dJbml0aWFsaXplKToK
KyAgICAgICAgKHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nRGlzcG9zZSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZCk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0
V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0aW9uKToKKyAgICAgICAgKGJlZm9yZUFsbCk6CisKIDIw
MTMtMDgtMjYgIFNhbnRvc2ggTWFodG8gIDxzYW50b3NoLm1hQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIEZpeGluZyBjb21waWxhdGlvbiB3YXJuaW5nICJ1bnVzZWQgcGFyYW1ldGVyIiBpbiBXZWJQ
YWdlUHJveHkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAKaW5kZXggNTE2NzBjZTVj
ZTFjMTY3ZTAzZDExZjhjOWU0Y2MzY2E1YWUyNzdlMC4uYjI2YmU2ZjY3ZGEyOGYxNWFkNTNiNjJk
ZWZmYTgzYzVhZGIxMzFmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmNwcApAQCAtMzIs
NyArMzIsNyBAQCBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nUHJpdmF0ZSB7CiAg
ICAgR1JlZlB0cjxXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q+IHJlcXVlc3Q7CiAgICAgR3Rr
V2lkZ2V0KiBhdXRoV2lkZ2V0OwogICAgIEd0a1dpZGdldCogZGVmYXVsdEJ1dHRvbjsKLSAgICB1
bnNpZ25lZCBsb25nIGxvYWRGYWlsZWRFdmVudElEOworICAgIHVuc2lnbmVkIGxvbmcgY2FuY2Vs
QXV0aGVudGljYXRlRXZlbnRJRDsKICAgICBHUmVmUHRyPEd0a1N0eWxlQ29udGV4dD4gc3R5bGVD
b250ZXh0OwogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CiB9OwpAQCAtNTQsOSArNTQsOCBA
QCBzdGF0aWMgdm9pZCBjYW5jZWxCdXR0b25DbGlja2VkKEd0a0J1dHRvbiosIFdlYktpdEF1dGhl
bnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbAogICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lE
R0VUKGF1dGhEaWFsb2cpKTsKIH0KIAotc3RhdGljIHZvaWQgcGFnZUxvYWRGYWlsZWQoV2ViS2l0
V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciosIEdFcnJvciosIFdlYktpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nKQorc3RhdGljIHZvaWQgY2FuY2VsQXV0aGVu
dGljYXRlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZyogYXV0aERp
YWxvZykKIHsKLSAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5jZWwoYXV0aERp
YWxvZy0+cHJpdi0+cmVxdWVzdC5nZXQoKSk7CiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19X
SURHRVQoYXV0aERpYWxvZykpOwogfQogCkBAIC05OSw3ICs5OCw3IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZShXZWJLaXRBdXRoZW50aWNhdGlvbkRp
YWxvZyogYXV0CiAgICAgZ3RrX3dpZGdldF9zaG93KGZyYW1lKTsKIAogICAgIGF1dGhEaWFsb2ct
PnByaXYtPndlYlZpZXcgPSB3ZWJWaWV3OwotICAgIGF1dGhEaWFsb2ctPnByaXYtPmxvYWRGYWls
ZWRFdmVudElEID0gZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NB
TExCQUNLKHBhZ2VMb2FkRmFpbGVkKSwgYXV0aERpYWxvZyk7CisgICAgYXV0aERpYWxvZy0+cHJp
di0+Y2FuY2VsQXV0aGVudGljYXRlRXZlbnRJRCA9IGdfc2lnbmFsX2Nvbm5lY3Qod2ViVmlldywg
ImNhbmNlbC1hdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLKGNhbmNlbEF1dGhlbnRpY2F0ZSksIGF1
dGhEaWFsb2cpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QXV0aGVudGljYXRpb25EaWFs
b2dEcmF3KEd0a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKQEAgLTEzOSw5ICsxMzgsOSBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0NvbnN0cnVjdGVkKEdPYmpl
Y3QqIG9iamVjdCkKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nRGlzcG9z
ZShHT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2dQcml2
YXRlKiBwcml2ID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0RJQUxPRyhvYmplY3QpLT5wcml2Owot
ICAgIGlmIChwcml2LT5sb2FkRmFpbGVkRXZlbnRJRCkgewotICAgICAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QocHJpdi0+d2ViVmlldywgcHJpdi0+bG9hZEZhaWxlZEV2ZW50SUQpOwot
ICAgICAgICBwcml2LT5sb2FkRmFpbGVkRXZlbnRJRCA9IDA7CisgICAgaWYgKHByaXYtPmNhbmNl
bEF1dGhlbnRpY2F0ZUV2ZW50SUQpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25u
ZWN0KHByaXYtPndlYlZpZXcsIHByaXYtPmNhbmNlbEF1dGhlbnRpY2F0ZUV2ZW50SUQpOworICAg
ICAgICBwcml2LT5jYW5jZWxBdXRoZW50aWNhdGVFdmVudElEID0gMDsKICAgICB9CiAKICAgICBH
X09CSkVDVF9DTEFTUyh3ZWJraXRfYXV0aGVudGljYXRpb25fZGlhbG9nX3BhcmVudF9jbGFzcykt
PmRpc3Bvc2Uob2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggNzJmZTY2YTQyZWFkMjJmYWYyZDlhNDg1YTk5MTIy
NTMyNjIyZmVkMi4uNmFkNTI0YzRkM2FiMWJlMGJiODU4YmE0MjJmNDNlODhjMzlhNjU0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5j
cHAKQEAgLTEyMSw2ICsxMjEsNyBAQCBlbnVtIHsKICAgICBXRUJfUFJPQ0VTU19DUkFTSEVELAog
CiAgICAgQVVUSEVOVElDQVRFLAorICAgIENBTkNFTF9BVVRIRU5USUNBVEUsCiAKICAgICBMQVNU
X1NJR05BTAogfTsKQEAgLTE5MCw2ICsxOTEsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2
YXRlIHsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOwogCiAgICAg
U25hcHNob3RSZXN1bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKKyAgICBHUmVmUHRyPFdlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0OwogfTsKIAogc3Rh
dGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtMTQxMSw2ICsxNDEz
LDMwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZp
ZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgICAgICAgICAgd2Via2l0X21hcnNoYWxfQk9PTEVB
Tl9fT0JKRUNULAogICAgICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDEsIC8qIG51bWJlciBvZiBw
YXJhbWV0ZXJzICovCiAgICAgICAgICAgICBXRUJLSVRfVFlQRV9BVVRIRU5USUNBVElPTl9SRVFV
RVNUKTsKKworICAgIC8qKgorICAgICAqIFdlYktpdFdlYlZpZXc6OmNhbmNlbC1hdXRoZW50aWNh
dGU6CisgICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNp
Z25hbCBpcyBlbWl0dGVkCisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdo
ZW4gdGhlIHVzZXIgYXV0aGVudGljYXRpb24gcmVxdWVzdCBpcworICAgICAqIGNhbmNlbGxlZC4g
SXQgYWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBkaXNtaXNzIGl0cyBhdXRoZW50aWNhdGlvbgor
ICAgICAqIGRpYWxvZyBpbiBjYXNlIG9mIHBhZ2UgbG9hZCBmYWlsdXJlIGZvciBleGFtcGxlLgor
ICAgICAqCisgICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9t
IGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KKyAgICAgKiAgICVGQUxTRSB0byBwcm9wYWdh
dGUgdGhlIGV2ZW50IGZ1cnRoZXIuCisgICAgICoKKyAgICAgKiBTaW5jZTogMi4yCisgICAgICov
CisgICAgc2lnbmFsc1tDQU5DRUxfQVVUSEVOVElDQVRFXSA9CisgICAgICAgIGdfc2lnbmFsX25l
dygKKyAgICAgICAgICAgICJjYW5jZWwtYXV0aGVudGljYXRlIiwKKyAgICAgICAgICAgIEdfVFlQ
RV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCisgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFT
VCwKKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIGNhbmNl
bF9hdXRoZW50aWNhdGUpLAorICAgICAgICAgICAgZ19zaWduYWxfYWNjdW11bGF0b3JfdHJ1ZV9o
YW5kbGVkLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHdlYmtpdF9tYXJzaGFsX0JPT0xF
QU5fX1ZPSUQsCisgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTiwgMCk7CiB9CiAKIHN0YXRpYyB2
b2lkIHdlYmtpdFdlYlZpZXdTZXRJc0xvYWRpbmcoV2ViS2l0V2ViVmlldyogd2ViVmlldywgYm9v
bCBpc0xvYWRpbmcpCkBAIC0xNDkzLDYgKzE1MTksMTMgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9h
ZEZhaWxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50
LAogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywg
c2lnbmFsc1tMT0FEX0ZBSUxFRF0sIDAsIGxvYWRFdmVudCwgZmFpbGluZ1VSSSwgZXJyb3IsICZy
ZXR1cm5WYWx1ZSk7CiAgICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0xPQURfQ0hB
TkdFRF0sIDAsIFdFQktJVF9MT0FEX0ZJTklTSEVEKTsKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+
YXV0aGVudGljYXRpb25SZXF1ZXN0KSB7CisgICAgICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9y
ZXF1ZXN0X2NhbmNlbCh3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QuZ2V0KCkp
OworCisgICAgICAgIGdib29sZWFuIHJldHVyblZhbHVlOworICAgICAgICBnX3NpZ25hbF9lbWl0
KHdlYlZpZXcsIHNpZ25hbHNbQ0FOQ0VMX0FVVEhFTlRJQ0FURV0sIDAsICZyZXR1cm5WYWx1ZSk7
CisgICAgICAgIHdlYlZpZXctPnByaXYtPmF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jbGVhcigpOwor
ICAgIH0KIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZFdpdGhUTFNFcnJvcnMoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGluZ1VSSSwgR0Vycm9yICplcnJv
ciwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxzQ2VydGlmaWNhdGUqIGNlcnRp
ZmljYXRlKQpAQCAtMTc4NSw2ICsxODE4LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3SGFuZGxlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgQXV0aGVudGkKIHsK
ICAgICBnYm9vbGVhbiBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dl
dF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdl
YlZpZXcpKTsKICAgICBHUmVmUHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gcmVxdWVz
dCA9IGFkb3B0R1JlZih3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVlc3RDcmVhdGUoYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpKTsKKyAgICB3ZWJWaWV3LT5w
cml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGdib29sZWFuIHJldHVy
blZhbHVlOwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tBVVRIRU5USUNBVEVd
LCAwLCByZXF1ZXN0LmdldCgpLCAmcmV0dXJuVmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCmluZGV4IGE0ZDZlNDM5ZWNhNzI2
ZTkwNjM3NjEzMjE2YTUxNDc3ZWI3YWU5N2QuLjhlZTY1YWFjMmFlMzBiNDBkYzU2MWI2MTdlN2Mx
ODZiM2M3MDk1ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3LmgKQEAgLTI0NSw2ICsyNDUsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdD
bGFzcyB7CiAKICAgICBnYm9vbGVhbiAgICgqIGF1dGhlbnRpY2F0ZSkgICAgICAgICAgICAgIChX
ZWJLaXRXZWJWaWV3ICAgICAgICAgICAgICAgKndlYl92aWV3LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCAq
cmVxdWVzdCk7CisgICAgZ2Jvb2xlYW4gICAoKiBjYW5jZWxfYXV0aGVudGljYXRlKSAgICAgICAo
V2ViS2l0V2ViVmlldyAgICAgICAgICAgICAgICp3ZWJfdmlldyk7CiAgICAgdm9pZCAoKl93ZWJr
aXRfcmVzZXJ2ZWQwKSAodm9pZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQxKSAodm9p
ZCk7CiAgICAgdm9pZCAoKl93ZWJraXRfcmVzZXJ2ZWQyKSAodm9pZCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHAKaW5kZXggNmZmZTUxNGMyNzE1MzliMTY5ZTRjYTJkNWUwOWM4OTBlMjY0MzI0Mi4u
ZTVjZmIwNjYzMTY4ZjM2YzU0NzY0YmE0NjRhMjViODljNGQzM2IxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcApAQCAtMTI0MCw2ICsxMjQwLDcgQEAgcHVibGljOgogICAgIEF1dGhlbnRpY2F0
aW9uVGVzdCgpCiAgICAgewogICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImF1
dGhlbnRpY2F0ZSIsIEdfQ0FMTEJBQ0socnVuQXV0aGVudGljYXRpb25DYWxsYmFjayksIHRoaXMp
OworICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNhbmNlbC1hdXRoZW50aWNh
dGUiLCBHX0NBTExCQUNLKHJ1bkNhbmNlbEF1dGhlbnRpY2F0aW9uQ2FsbGJhY2spLCB0aGlzKTsK
ICAgICB9CiAKICAgICB+QXV0aGVudGljYXRpb25UZXN0KCkKQEAgLTEyNDgsMTEgKzEyNDksMTMg
QEAgcHVibGljOgogICAgIH0KIAogICAgIHN0YXRpYyBpbnQgYXV0aGVudGljYXRpb25SZXRyaWVz
OworICAgIHN0YXRpYyBnYm9vbGVhbiBjYW5jZWxBdXRoZW50aWNhdGlvblJlY2VpdmVkOwogCiAg
ICAgdm9pZCBsb2FkVVJJKGNvbnN0IGNoYXIqIHVyaSkKICAgICB7CiAgICAgICAgIC8vIFJlc2V0
IHRoZSByZXRyeSBjb3VudCBvZiB0aGUgZmFrZSBzZXJ2ZXIgd2hlbiBhIHBhZ2UgaXMgbG9hZGVk
LgogICAgICAgICBhdXRoZW50aWNhdGlvblJldHJpZXMgPSAwOworICAgICAgICBjYW5jZWxBdXRo
ZW50aWNhdGlvblJlY2VpdmVkID0gZmFsc2U7CiAgICAgICAgIExvYWRUcmFja2luZ1Rlc3Q6Omxv
YWRVUkkodXJpKTsKICAgICB9CiAKQEAgLTEyNjIsNiArMTI2NSwxMiBAQCBwdWJsaWM6CiAgICAg
ICAgIHJldHVybiBUUlVFOwogICAgIH0KIAorICAgIHN0YXRpYyBnYm9vbGVhbiBydW5DYW5jZWxB
dXRoZW50aWNhdGlvbkNhbGxiYWNrKFdlYktpdFdlYlZpZXcqLCBBdXRoZW50aWNhdGlvblRlc3Qq
IHRlc3QpCisgICAgeworICAgICAgICBjYW5jZWxBdXRoZW50aWNhdGlvblJlY2VpdmVkID0gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorCiAgICAgdm9pZCBydW5BdXRoZW50aWNh
dGlvbihXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgewogICAgICAg
ICBhc3NlcnRPYmplY3RJc0RlbGV0ZWRXaGVuVGVzdEZpbmlzaGVzKEdfT0JKRUNUKHJlcXVlc3Qp
KTsKQEAgLTEyODAsNiArMTI4OSw3IEBAIHByaXZhdGU6CiB9OwogCiBpbnQgQXV0aGVudGljYXRp
b25UZXN0OjphdXRoZW50aWNhdGlvblJldHJpZXMgPSAwOworZ2Jvb2xlYW4gQXV0aGVudGljYXRp
b25UZXN0OjpjYW5jZWxBdXRoZW50aWNhdGlvblJlY2VpdmVkID0gZmFsc2U7CiAKIHN0YXRpYyBj
b25zdCBjaGFyIGF1dGhUZXN0VXNlcm5hbWVbXSA9ICJ1c2VybmFtZSI7CiBzdGF0aWMgY29uc3Qg
Y2hhciBhdXRoVGVzdFBhc3N3b3JkW10gPSAicGFzc3dvcmQiOwpAQCAtMTMyNSw2ICsxMzM1LDIz
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25DYW5jZWwoQXV0aGVudGlj
YXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgZ19hc3NlcnRfZXJyb3IodGVzdC0+bV9l
cnJvci5nZXQoKSwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9ORVRXT1JLX0VSUk9SX0NB
TkNFTExFRCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRp
b24oQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3Qt
PmxvYWRVUkkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgp
KTsKKyAgICB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRpb25SZXF1ZXN0KCk7CisgICAgd2Via2l0
X3dlYl92aWV3X3N0b3BfbG9hZGluZyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIC8vIEV4cGVjdCBl
bXB0eSBwYWdlLgorICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNz
ZXJ0KHRlc3QtPmNhbmNlbEF1dGhlbnRpY2F0aW9uUmVjZWl2ZWQpOworCisgICAgZ19hc3NlcnRf
Y21waW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9j
bXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlz
aW9uYWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50
c1sxXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCk7CisgICAg
Z19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rl
c3Q6OkxvYWRGaW5pc2hlZCk7CisKKyAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdl
dCgpLCBXRUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVE
KTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUoQXV0
aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIFRlc3QgYXV0
aGVudGljYXRpb24gZmFpbHVyZXMuCkBAIC0xNDc0LDYgKzE1MDEsNyBAQCB2b2lkIGJlZm9yZUFs
bCgpCiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwYWdlLXZpc2liaWxp
dHkiLCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKICAgICBBdXRoZW50aWNhdGlvblRlc3Q6
OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0IiwgdGVzdFdlYlZp
ZXdBdXRoZW50aWNhdGlvblJlcXVlc3QpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJX
ZWJLaXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLWNhbmNlbCIsIHRlc3RXZWJWaWV3QXV0aGVu
dGljYXRpb25DYW5jZWwpOworICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImF1dGhlbnRpY2F0aW9uLWNhbmNlbC1hdXRoZW50aWNhdGlvbiIsIHRlc3RXZWJWaWV3
Q2FuY2VsQXV0aGVudGljYXRpb24pOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLWZhaWx1cmUiLCB0ZXN0V2ViVmlld0F1dGhlbnRp
Y2F0aW9uRmFpbHVyZSk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZp
ZXciLCAiYXV0aGVudGljYXRpb24tbm8tY3JlZGVudGlhbCIsIHRlc3RXZWJWaWV3QXV0aGVudGlj
YXRpb25Ob0NyZWRlbnRpYWwpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLXN0b3JhZ2UiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uU3RvcmFnZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210630</attachid>
            <date>2013-09-05 10:21:51 -0700</date>
            <delta_ts>2013-09-06 08:33:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120350-20130905182150.patch</filename>
            <type>text/plain</type>
            <size>15742</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZTNmM2Y3ODdiZThkNjIz
N2U4MzhkMGQ1YzljY2M5OGFhMzVhZmU0Zi4uYWE0M2ExZjYwZmRhNjMxOGM3YWVjMDI2ZDc1Mzg2
NmE1ODJhNGE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEzLTA5LTA1ICBBbnRv
biBPYnpoaXJvdiAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQ2Fu
Y2VsIHRoZSBjdXJyZW50IGFjdGl2ZSBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qgb24gbG9h
ZCBmYWlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBkZWZhdWx0IGRpYWxvZyBkb2VzIG5vdCBnZXQgY2xvc2VkIGFuZCB0aGUgYXV0aGVudGlj
YXRpb24gaXMgbm90IGNhbmNlbGxlZAorICAgICAgICBpZiBsb2FkaW5nIGZhaWxzIG9yIGlzIHN0
b3BwZWQgb24gYSBwYWdlIHdoaWNoIHJlcXVpcmVzIEhUVFAgYXV0aGVudGljYXRpb24uICAgICAg
ICAKKworICAgICAgICBUaGlzIHBhdGNoIGNhbmNlbHMgdGhlIGF1dGhlbnRpY2F0aW9uIHJlcXVl
c3Qgb24gbG9hZCBmYWlsZWQKKyAgICAgICAgYW5kIGFkZHMgbmV3IGF1dGhlbnRpY2F0aW9uIGNh
bmNlbGxlZCBzaWduYWwgaW4gV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0CisgICAgICAgIHRv
IGFsbG93IHRoZSBhcHBsaWNhdGlvbiBoYW5kbGluZyBvZiBhdXRoZW50aWNhdGlvbiBVSS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmNw
cDoKKyAgICAgICAgKGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkKToKKyAgICAgICAgKHdlYmtpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZSk6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNh
dGlvbkRpYWxvZ0Rpc3Bvc2UpOgorICAgICAgICAod2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dO
ZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlh
bG9nLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25S
ZXF1ZXN0LmNwcDoKKyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2NsYXNz
X2luaXQpOgorICAgICAgICAod2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuY2VsKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcDoKKyAgICAgICAg
KHdlYmtpdFdlYlZpZXdBdXRoZW50aWNhdGUpOgorICAgICAgICAod2Via2l0V2ViVmlld0xvYWRG
YWlsZWQpOgorICAgICAgICAod2Via2l0V2ViVmlld0hhbmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHA6CisgICAgICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTG9hZENhbmNlbGxlZCk6
CisgICAgICAgIChiZWZvcmVBbGwpOgorCiAyMDEzLTA5LTA0ICBBbGJlcnRvIEdhcmNpYSAgPGJl
cnRvQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dLMl1bR1RLXSBBU1NFUlRJT04gaW4gV2ViS2l0
OjpMYXllclRyZWVIb3N0R3RrOjppbnZhbGlkYXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5j
cHAKaW5kZXggNTE2NzBjZTVjZTFjMTY3ZTAzZDExZjhjOWU0Y2MzY2E1YWUyNzdlMC4uNDg3MTNk
ZWZhZTFjZTFmZDZjOTYyZTdkMTUxZDMyYzNiMmI4MTdiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9u
RGlhbG9nLmNwcApAQCAtMzIsOSArMzIsOCBAQCBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9u
RGlhbG9nUHJpdmF0ZSB7CiAgICAgR1JlZlB0cjxXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q+
IHJlcXVlc3Q7CiAgICAgR3RrV2lkZ2V0KiBhdXRoV2lkZ2V0OwogICAgIEd0a1dpZGdldCogZGVm
YXVsdEJ1dHRvbjsKLSAgICB1bnNpZ25lZCBsb25nIGxvYWRGYWlsZWRFdmVudElEOworICAgIHVu
c2lnbmVkIGxvbmcgYXV0aGVudGljYXRpb25DYW5jZWxsZWRJRDsKICAgICBHUmVmUHRyPEd0a1N0
eWxlQ29udGV4dD4gc3R5bGVDb250ZXh0OwotICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CiB9
OwogCiBXRUJLSVRfREVGSU5FX1RZUEUoV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2csIHdlYmtp
dF9hdXRoZW50aWNhdGlvbl9kaWFsb2csIEdUS19UWVBFX0VWRU5UX0JPWCkKQEAgLTU0LDEzICs1
MywxMiBAQCBzdGF0aWMgdm9pZCBjYW5jZWxCdXR0b25DbGlja2VkKEd0a0J1dHRvbiosIFdlYktp
dEF1dGhlbnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbAogICAgIGd0a193aWRnZXRfZGVzdHJveShH
VEtfV0lER0VUKGF1dGhEaWFsb2cpKTsKIH0KIAotc3RhdGljIHZvaWQgcGFnZUxvYWRGYWlsZWQo
V2ViS2l0V2ViVmlldyosIFdlYktpdExvYWRFdmVudCwgY29uc3QgY2hhciosIEdFcnJvciosIFdl
YktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nKQorc3RhdGljIHZvaWQgYXV0aGVu
dGljYXRpb25DYW5jZWxsZWQoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiwgV2ViS2l0QXV0
aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsb2cpCiB7Ci0gICAgd2Via2l0X2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3RfY2FuY2VsKGF1dGhEaWFsb2ctPnByaXYtPnJlcXVlc3QuZ2V0KCkpOwogICAg
IGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGF1dGhEaWFsb2cpKTsKIH0KIAotc3RhdGlj
IHZvaWQgd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dJbml0aWFsaXplKFdlYktpdEF1dGhlbnRp
Y2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nLCBDcmVkZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlh
bFN0b3JhZ2VNb2RlLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorc3RhdGljIHZvaWQgd2Via2l0
QXV0aGVudGljYXRpb25EaWFsb2dJbml0aWFsaXplKFdlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9n
KiBhdXRoRGlhbG9nLCBDcmVkZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3JhZ2VNb2Rl
KQogewogICAgIEd0a1dpZGdldCogZnJhbWUgPSBndGtfZnJhbWVfbmV3KDApOwogICAgIGd0a19m
cmFtZV9zZXRfc2hhZG93X3R5cGUoR1RLX0ZSQU1FKGZyYW1lKSwgR1RLX1NIQURPV19JTik7CkBA
IC05OCw4ICs5Niw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nSW5p
dGlhbGl6ZShXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZyogYXV0CiAgICAgZ3RrX2NvbnRhaW5l
cl9hZGQoR1RLX0NPTlRBSU5FUihhdXRoRGlhbG9nKSwgZnJhbWUpOwogICAgIGd0a193aWRnZXRf
c2hvdyhmcmFtZSk7CiAKLSAgICBhdXRoRGlhbG9nLT5wcml2LT53ZWJWaWV3ID0gd2ViVmlldzsK
LSAgICBhdXRoRGlhbG9nLT5wcml2LT5sb2FkRmFpbGVkRXZlbnRJRCA9IGdfc2lnbmFsX2Nvbm5l
Y3Qod2ViVmlldywgImxvYWQtZmFpbGVkIiwgR19DQUxMQkFDSyhwYWdlTG9hZEZhaWxlZCksIGF1
dGhEaWFsb2cpOworICAgIGF1dGhEaWFsb2ctPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVk
SUQgPSBnX3NpZ25hbF9jb25uZWN0KGF1dGhEaWFsb2ctPnByaXYtPnJlcXVlc3QuZ2V0KCksICJh
dXRoZW50aWNhdGlvbi1jYW5jZWxsZWQiLCBHX0NBTExCQUNLKGF1dGhlbnRpY2F0aW9uQ2FuY2Vs
bGVkKSwgYXV0aERpYWxvZyk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRBdXRoZW50aWNh
dGlvbkRpYWxvZ0RyYXcoR3RrV2lkZ2V0KiB3aWRnZXQsIGNhaXJvX3QqIGNyKQpAQCAtMTM5LDkg
KzEzNiw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nQ29uc3RydWN0
ZWQoR09iamVjdCogb2JqZWN0KQogc3RhdGljIHZvaWQgd2Via2l0QXV0aGVudGljYXRpb25EaWFs
b2dEaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIHsKICAgICBXZWJLaXRBdXRoZW50aWNhdGlvbkRp
YWxvZ1ByaXZhdGUqIHByaXYgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fRElBTE9HKG9iamVjdCkt
PnByaXY7Ci0gICAgaWYgKHByaXYtPmxvYWRGYWlsZWRFdmVudElEKSB7Ci0gICAgICAgIGdfc2ln
bmFsX2hhbmRsZXJfZGlzY29ubmVjdChwcml2LT53ZWJWaWV3LCBwcml2LT5sb2FkRmFpbGVkRXZl
bnRJRCk7Ci0gICAgICAgIHByaXYtPmxvYWRGYWlsZWRFdmVudElEID0gMDsKKyAgICBpZiAocHJp
di0+YXV0aGVudGljYXRpb25DYW5jZWxsZWRJRCkgeworICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QocHJpdi0+cmVxdWVzdC5nZXQoKSwgcHJpdi0+YXV0aGVudGljYXRpb25DYW5j
ZWxsZWRJRCk7CisgICAgICAgIHByaXYtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkSUQgPSAwOwog
ICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9kaWFsb2df
cGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwpAQCAtMTU4LDEwICsxNTUsMTAgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2RpYWxvZ19jbGFzc19pbml0KFdlYktpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nQ2wKICAgICB3aWRnZXRDbGFzcy0+bWFwID0gd2Via2l0QXV0aGVu
dGljYXRpb25EaWFsb2dNYXA7CiB9CiAKLUd0a1dpZGdldCogd2Via2l0QXV0aGVudGljYXRpb25E
aWFsb2dOZXcoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0LCBDcmVkZW50aWFs
U3RvcmFnZU1vZGUgbW9kZSwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK0d0a1dpZGdldCogd2Vi
a2l0QXV0aGVudGljYXRpb25EaWFsb2dOZXcoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiBy
ZXF1ZXN0LCBDcmVkZW50aWFsU3RvcmFnZU1vZGUgbW9kZSkKIHsKICAgICBXZWJLaXRBdXRoZW50
aWNhdGlvbkRpYWxvZyogYXV0aERpYWxvZyA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9ESUFMT0co
Z19vYmplY3RfbmV3KFdFQktJVF9UWVBFX0FVVEhFTlRJQ0FUSU9OX0RJQUxPRywgTlVMTCkpOwog
ICAgIGF1dGhEaWFsb2ctPnByaXYtPnJlcXVlc3QgPSByZXF1ZXN0OwotICAgIHdlYmtpdEF1dGhl
bnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZShhdXRoRGlhbG9nLCBtb2RlLCB3ZWJWaWV3KTsKKyAg
ICB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0luaXRpYWxpemUoYXV0aERpYWxvZywgbW9kZSk7
CiAgICAgcmV0dXJuIEdUS19XSURHRVQoYXV0aERpYWxvZyk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25E
aWFsb2cuaAppbmRleCAzZjI4YjFhOTU0ZDVhN2VlZWRjNzdkOTgyYWY5OGEwN2E0Yjk5ZDVlLi5l
NWU2MmE3YmQ3ZTg5ODFlYzZjMmE0YjcwM2M2ZDllMGYxMDM2ZjhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0
aW9uRGlhbG9nLmgKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IF9XZWJLaXRBdXRoZW50aWNhdGlv
bkRpYWxvZ0NsYXNzIHsKIH07CiAKIEdUeXBlIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9kaWFsb2df
Z2V0X3R5cGUoKTsKLUd0a1dpZGdldCogd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dOZXcoV2Vi
S2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiwgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlLCBXZWJLaXRX
ZWJWaWV3Kik7CitHdGtXaWRnZXQqIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTmV3KFdlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdCosIENyZWRlbnRpYWxTdG9yYWdlTW9kZSk7CiAKIEdfRU5E
X0RFQ0xTCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCmluZGV4IGU4YzMzYjJiNWY5
ZjQwMjNkNGQ3YjU1YzhjYjhkOWJiYWZiNjM0ZGQuLmQ0OTNjZjAxN2QxY2YzNzQ1NWEwZGFlNzFh
NDNjM2QzODlhMzk5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcApAQCAtNTEs
NiArNTEsMTIgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgKiBXZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3Qgb2JqZWN0LgogICovCiAKK2VudW0geworICAgIEFVVEhFTlRJQ0FUSU9OX0NB
TkNFTExFRCwKKworICAgIExBU1RfU0lHTkFMCit9OworCiBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRp
Y2F0aW9uUmVxdWVzdFByaXZhdGUgewogICAgIFJlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTsKICAgICBib29sIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQ7CkBAIC01OSw2ICs2NSw4IEBAIHN0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25S
ZXF1ZXN0UHJpdmF0ZSB7CiAgICAgQ1N0cmluZyByZWFsbTsKIH07CiAKK3N0YXRpYyBndWludCBz
aWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsKKwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXRUJLSVRfQVVUSEVOVElDQVRJT05fU0NIRU1FX0RFRkFVTFQsIFByb3RlY3Rpb25TcGFj
ZUF1dGhlbnRpY2F0aW9uU2NoZW1lRGVmYXVsdCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdFQktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9CQVNJQywgUHJvdGVjdGlvblNw
YWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQQmFzaWMpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXRUJLSVRfQVVUSEVOVElDQVRJT05fU0NIRU1FX0hUVFBfRElHRVNULCBQcm90ZWN0
aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZUhUVFBEaWdlc3QpOwpAQCAtODYsNiArOTQsMjIg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2xhc3NfaW5pdChX
ZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKIHsKICAgICBHT2JqZWN0Q2xhc3MqIG9iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKICAgICBvYmplY3RDbGFzcy0+ZGlz
cG9zZSA9IHdlYmtpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdERpc3Bvc2U7CisKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q6OmF1dGhlbnRpY2F0aW9uLWNhbmNlbGxl
ZDoKKyAgICAgKiBAcmVxdWVzdDogdGhlICNXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QKKyAg
ICAgKgorICAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUgdXNlciBhdXRoZW50
aWNhdGlvbiByZXF1ZXN0IGlzCisgICAgICogY2FuY2VsbGVkLiBJdCBhbGxvd3MgdGhlIGFwcGxp
Y2F0aW9uIHRvIGRpc21pc3MgaXRzIGF1dGhlbnRpY2F0aW9uCisgICAgICogZGlhbG9nIGluIGNh
c2Ugb2YgcGFnZSBsb2FkIGZhaWx1cmUgZm9yIGV4YW1wbGUuCisgICAgICovCisgICAgc2lnbmFs
c1tBVVRIRU5USUNBVElPTl9DQU5DRUxMRURdID0KKyAgICAgICAgZ19zaWduYWxfbmV3KCJhdXRo
ZW50aWNhdGlvbi1jYW5jZWxsZWQiLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mob2Jq
ZWN0Q2xhc3MpLAorICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAw
LCAwLCAwLAorICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZPSURfX1ZPSUQsCisgICAg
ICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CiB9CiAKIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dCogd2Via2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Q3JlYXRlKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBib29sIHByaXZhdGVCcm93c2luZ0Vu
YWJsZWQpCkBAIC0yODAsNiArMzA0LDcgQEAgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVx
dWVzdF9hdXRoZW50aWNhdGUoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXEKICAqCiAg
KiBDYW5jZWwgdGhlIGF1dGhlbnRpY2F0aW9uIGNoYWxsZW5nZS4gVGhpcyB3aWxsIGFsc28gY2Fu
Y2VsIHRoZSBwYWdlIGxvYWRpbmcgYW5kIHJlc3VsdCBpbiBhCiAgKiAjV2ViS2l0V2ViVmlldzo6
bG9hZC1mYWlsZWQgc2lnbmFsIHdpdGggYSAjV2ViS2l0TmV0d29ya0Vycm9yIG9mIHR5cGUgJVdF
QktJVF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCBiZWluZyBlbWl0dGVkLgorICogI1dlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdDo6YXV0aGVudGljYXRpb24tY2FuY2VsbGVkIHNpZ25hbCB3aXRo
ICNXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qgd2lsbCBiZSBlbWl0dGVkLgogICoKICAqIFNp
bmNlOiAyLjIKICAqLwpAQCAtMjg4LDQgKzMxMyw2IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3RfY2FuY2VsKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9SRVFVRVNUKHJl
cXVlc3QpKTsKIAogICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5s
aXN0ZW5lcigpLT5jYW5jZWwoKTsKKworICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2lnbmFs
c1tBVVRIRU5USUNBVElPTl9DQU5DRUxMRURdLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZGQ1ZThkZWU4MzRk
MDhkMzczMGNhMzJlMDViZWQ0MDNjZjdlNTNhNS4uZjU1MTY2Y2FhZTdkZGMzOWMxODhiNzAxNDdl
NmNiYTJjNjM2N2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0V2ViVmlldy5jcHAKQEAgLTE5MCw2ICsxOTAsNyBAQCBzdHJ1Y3QgX1dlYktpdFdl
YlZpZXdQcml2YXRlIHsKICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklE
OwogCiAgICAgU25hcHNob3RSZXN1bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKKyAgICBHUmVm
UHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0Owog
fTsKIAogc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDM3
LDcgKzQzOCw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRh
dGFiYXNlU2lnbmFsSGFuZGxlcnMoV2ViS2l0V2ViVmlldyoKIHN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QXV0aGVudGljYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkKIHsKICAgICBDcmVkZW50aWFsU3RvcmFnZU1vZGUg
Y3JlZGVudGlhbFN0b3JhZ2VNb2RlID0gd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2Fu
X3NhdmVfY3JlZGVudGlhbHMocmVxdWVzdCkgPyBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlIDogRGlz
YWxsb3dQZXJzaXN0ZW50U3RvcmFnZTsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZUFkZEF1dGhlbnRp
Y2F0aW9uRGlhbG9nKFdFQktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJraXRBdXRoZW50
aWNhdGlvbkRpYWxvZ05ldyhyZXF1ZXN0LCBjcmVkZW50aWFsU3RvcmFnZU1vZGUsIHdlYlZpZXcp
KTsKKyAgICB3ZWJraXRXZWJWaWV3QmFzZUFkZEF1dGhlbnRpY2F0aW9uRGlhbG9nKFdFQktJVF9X
RUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05ldyhyZXF1
ZXN0LCBjcmVkZW50aWFsU3RvcmFnZU1vZGUpKTsKIAogICAgIHJldHVybiBUUlVFOwogfQpAQCAt
MTQ5NSw2ICsxNDk2LDEwIEBAIHZvaWQgd2Via2l0V2ViVmlld0xvYWRGYWlsZWQoV2ViS2l0V2Vi
Vmlldyogd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwKICAgICBnYm9vbGVhbiBy
ZXR1cm5WYWx1ZTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlM
RURdLCAwLCBsb2FkRXZlbnQsIGZhaWxpbmdVUkksIGVycm9yLCAmcmV0dXJuVmFsdWUpOwogICAg
IGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRf
TE9BRF9GSU5JU0hFRCk7CisgICAgaWYgKHdlYlZpZXctPnByaXYtPmF1dGhlbnRpY2F0aW9uUmVx
dWVzdCkgeworICAgICAgICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5jZWwod2Vi
Vmlldy0+cHJpdi0+YXV0aGVudGljYXRpb25SZXF1ZXN0LmdldCgpKTsKKyAgICAgICAgd2ViVmll
dy0+cHJpdi0+YXV0aGVudGljYXRpb25SZXF1ZXN0LmNsZWFyKCk7CisgICAgfQogfQogCiB2b2lk
IHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJW
aWV3LCBjb25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKmVycm9yLCBHVGxzQ2VydGlmaWNh
dGVGbGFncyB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCkBAIC0xNzg2
LDkgKzE3OTEsOSBAQCB2b2lkIHdlYmtpdFdlYlZpZXdTdWJtaXRGb3JtUmVxdWVzdChXZWJLaXRX
ZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRGb3JtU3VibWlzc2lvbgogdm9pZCB3ZWJraXRXZWJWaWV3
SGFuZGxlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7CiAg
ICAgZ2Jvb2xlYW4gcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IHdlYmtpdF9zZXR0aW5nc19nZXRf
ZW5hYmxlX3ByaXZhdGVfYnJvd3Npbmcod2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJW
aWV3KSk7Ci0gICAgR1JlZlB0cjxXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q+IHJlcXVlc3Qg
PSBhZG9wdEdSZWYod2Via2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Q3JlYXRlKGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSk7CisgICAgd2ViVmlldy0+cHJp
di0+YXV0aGVudGljYXRpb25SZXF1ZXN0ID0gYWRvcHRHUmVmKHdlYmtpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdENyZWF0ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgcHJpdmF0ZUJyb3dzaW5nRW5h
YmxlZCkpOwogICAgIGdib29sZWFuIHJldHVyblZhbHVlOwotICAgIGdfc2lnbmFsX2VtaXQod2Vi
Vmlldywgc2lnbmFsc1tBVVRIRU5USUNBVEVdLCAwLCByZXF1ZXN0LmdldCgpLCAmcmV0dXJuVmFs
dWUpOworICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tBVVRIRU5USUNBVEVdLCAw
LCB3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1
ZSk7CiB9CiAKIHZvaWQgd2Via2l0V2ViVmlld0luc2VjdXJlQ29udGVudERldGVjdGVkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEluc2VjdXJlQ29udGVudEV2ZW50IHR5cGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0
V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0
V2ViS2l0V2ViVmlldy5jcHAKaW5kZXggMjhhMDhmMzAyMTMzOWY3ODUwMjdiODcwZmU0NzU5YTYz
OGYzZmFjYS4uODVmYjk4MjM2NTJlM2ZjYzlmZDIyYTlkNzYwZGNhMzhiYTFiMDMzZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rl
c3RXZWJLaXRXZWJWaWV3LmNwcApAQCAtMTI0OCwyMCArMTI0OCwyOSBAQCBwdWJsaWM6CiAgICAg
fQogCiAgICAgc3RhdGljIGludCBhdXRoZW50aWNhdGlvblJldHJpZXM7CisgICAgc3RhdGljIGdi
b29sZWFuIGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQ7CiAKICAgICB2b2lkIGxvYWRV
UkkoY29uc3QgY2hhciogdXJpKQogICAgIHsKICAgICAgICAgLy8gUmVzZXQgdGhlIHJldHJ5IGNv
dW50IG9mIHRoZSBmYWtlIHNlcnZlciB3aGVuIGEgcGFnZSBpcyBsb2FkZWQuCiAgICAgICAgIGF1
dGhlbnRpY2F0aW9uUmV0cmllcyA9IDA7CisgICAgICAgIGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVk
UmVjZWl2ZWQgPSBmYWxzZTsKICAgICAgICAgTG9hZFRyYWNraW5nVGVzdDo6bG9hZFVSSSh1cmkp
OwogICAgIH0KIAogICAgIHN0YXRpYyBnYm9vbGVhbiBydW5BdXRoZW50aWNhdGlvbkNhbGxiYWNr
KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QsIEF1
dGhlbnRpY2F0aW9uVGVzdCogdGVzdCkKICAgICB7CisgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
cmVxdWVzdCwgImF1dGhlbnRpY2F0aW9uLWNhbmNlbGxlZCIsIEdfQ0FMTEJBQ0socnVuQXV0aGVu
dGljYXRpb25DYW5jZWxsZWRDYWxsYmFjayksIHRlc3QpOwogICAgICAgICB0ZXN0LT5ydW5BdXRo
ZW50aWNhdGlvbihyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuIFRSVUU7CiAgICAgfQogCisgICAg
c3RhdGljIGdib29sZWFuIHJ1bkF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkQ2FsbGJhY2soV2ViS2l0
QXV0aGVudGljYXRpb25SZXF1ZXN0KiwgQXV0aGVudGljYXRpb25UZXN0KikKKyAgICB7CisgICAg
ICAgIGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQgPSB0cnVlOworICAgICAgICByZXR1
cm4gVFJVRTsKKyAgICB9CisKICAgICB2b2lkIHJ1bkF1dGhlbnRpY2F0aW9uKFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkKICAgICB7CiAgICAgICAgIGFzc2VydE9iamVjdElz
RGVsZXRlZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwpAQCAtMTI4MCw2ICsx
Mjg5LDcgQEAgcHJpdmF0ZToKIH07CiAKIGludCBBdXRoZW50aWNhdGlvblRlc3Q6OmF1dGhlbnRp
Y2F0aW9uUmV0cmllcyA9IDA7CitnYm9vbGVhbiBBdXRoZW50aWNhdGlvblRlc3Q6OmF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQgPSBmYWxzZTsKIAogc3RhdGljIGNvbnN0IGNoYXIgYXV0
aFRlc3RVc2VybmFtZVtdID0gInVzZXJuYW1lIjsKIHN0YXRpYyBjb25zdCBjaGFyIGF1dGhUZXN0
UGFzc3dvcmRbXSA9ICJwYXNzd29yZCI7CkBAIC0xMzI1LDYgKzEzMzUsMjMgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbmNlbChBdXRoZW50aWNhdGlvblRlc3QqIHRl
c3QsIGdjb25zdHBvaW4KICAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdldCgpLCBX
RUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKTsKIH0K
IAorc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkxvYWRDYW5jZWxsZWQoQXV0
aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQoreworICAgIHRlc3QtPmxvYWRV
Ukkoa1NlcnZlci0+Z2V0VVJJRm9yUGF0aCgiL2F1dGgtdGVzdC5odG1sIikuZGF0YSgpKTsKKyAg
ICB0ZXN0LT53YWl0Rm9yQXV0aGVudGljYXRpb25SZXF1ZXN0KCk7CisgICAgd2Via2l0X3dlYl92
aWV3X3N0b3BfbG9hZGluZyh0ZXN0LT5tX3dlYlZpZXcpOworICAgIC8vIEV4cGVjdCBlbXB0eSBw
YWdlLgorICAgIHRlc3QtPndhaXRVbnRpbExvYWRGaW5pc2hlZCgpOworICAgIGdfYXNzZXJ0KHRl
c3QtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQpOworCisgICAgZ19hc3NlcnRfY21w
aW50KHRlc3QtPm1fbG9hZEV2ZW50cy5zaXplKCksID09LCAzKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQodGVzdC0+bV9sb2FkRXZlbnRzWzBdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9u
YWxMb2FkU3RhcnRlZCk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1sx
XSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZEZhaWxlZCk7CisgICAgZ19h
c3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1syXSwgPT0sIExvYWRUcmFja2luZ1Rlc3Q6
OkxvYWRGaW5pc2hlZCk7CisKKyAgICBnX2Fzc2VydF9lcnJvcih0ZXN0LT5tX2Vycm9yLmdldCgp
LCBXRUJLSVRfTkVUV09SS19FUlJPUiwgV0VCS0lUX05FVFdPUktfRVJST1JfQ0FOQ0VMTEVEKTsK
K30KKwogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUoQXV0aGVu
dGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2ludGVyKQogewogICAgIC8vIFRlc3QgYXV0aGVu
dGljYXRpb24gZmFpbHVyZXMuCkBAIC0xNDc0LDYgKzE1MDEsNyBAQCB2b2lkIGJlZm9yZUFsbCgp
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJwYWdlLXZpc2liaWxpdHki
LCB0ZXN0V2ViVmlld1BhZ2VWaXNpYmlsaXR5KTsKICAgICBBdXRoZW50aWNhdGlvblRlc3Q6OmFk
ZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1yZXF1ZXN0IiwgdGVzdFdlYlZpZXdB
dXRoZW50aWNhdGlvblJlcXVlc3QpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJL
aXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLWNhbmNlbCIsIHRlc3RXZWJWaWV3QXV0aGVudGlj
YXRpb25DYW5jZWwpOworICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgImF1dGhlbnRpY2F0aW9uLWxvYWQtY2FuY2VsbGVkIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNh
dGlvbkxvYWRDYW5jZWxsZWQpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLWZhaWx1cmUiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uRmFpbHVyZSk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiYXV0aGVudGljYXRpb24tbm8tY3JlZGVudGlhbCIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRp
b25Ob0NyZWRlbnRpYWwpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJW
aWV3IiwgImF1dGhlbnRpY2F0aW9uLXN0b3JhZ2UiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9u
U3RvcmFnZSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>210758</attachid>
            <date>2013-09-06 08:34:01 -0700</date>
            <delta_ts>2013-09-09 04:15:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120350-20130906163401.patch</filename>
            <type>text/plain</type>
            <size>18525</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MTgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2Q4MmY0OTA2MTE4MjQ5
YjE4NjM3YzRhYjczYmI2ZDRlNWIxYjdlOS4uNmI4ODFhMDMzZWY5ZmYzMTY1OWY0NDkxNzIzMGM3
MThiNzMwNzQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEzLTA5LTA2ICBBbnRv
biBPYnpoaXJvdiAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQ2Fu
Y2VsIHRoZSBjdXJyZW50IGFjdGl2ZSBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qgb24gbG9h
ZCBmYWlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBkZWZhdWx0IGRpYWxvZyBkb2VzIG5vdCBnZXQgY2xvc2VkIGFuZCB0aGUgYXV0aGVudGlj
YXRpb24gaXMgbm90IGNhbmNlbGxlZAorICAgICAgICBpZiBsb2FkaW5nIGZhaWxzIG9yIGlzIHN0
b3BwZWQgb24gYSBwYWdlIHdoaWNoIHJlcXVpcmVzIEhUVFAgYXV0aGVudGljYXRpb24uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjYW5jZWxzIHRoZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IG9uIGxv
YWQgZmFpbGVkCisgICAgICAgIGFuZCBhZGRzIG5ldyBhdXRoZW50aWNhdGlvbiBjYW5jZWxsZWQg
c2lnbmFsIGluIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdAorICAgICAgICB0byBhbGxvdyB0
aGUgYXBwbGljYXRpb24gaGFuZGxpbmcgb2YgYXV0aGVudGljYXRpb24gVUkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHA6CisgICAg
ICAgIChhdXRoZW50aWNhdGlvbkNhbmNlbGxlZCk6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNh
dGlvbkRpYWxvZ0luaXRpYWxpemUpOgorICAgICAgICAod2Via2l0QXV0aGVudGljYXRpb25EaWFs
b2dEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTmV3KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5j
cHA6CisgICAgICAgICh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2NhbmNlbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QXV0aGVudGljYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3UmVzZXRBdXRoZW50aWNhdGlvblJlcXVlc3QpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh0ZXN0V2Vi
Vmlld0F1dGhlbnRpY2F0aW9uTG9hZENhbmNlbGxlZCk6CisgICAgICAgIChiZWZvcmVBbGwpOgor
CiAyMDEzLTA5LTA1ICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAg
ICAgICBbQ01BS0VdIEFkZCBjKysweCBpbnRvIENYWF9GTEFHUyBhcyBhIGRlZmF1bHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0
aW9uRGlhbG9nLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nLmNwcAppbmRleCA1MTY3MGNlNWNlMWMxNjdlMDNkMTFmOGM5ZTRj
YzNjYTVhZTI3N2UwLi40M2NkODNhYzBjZTQxNmU1NTRhMTc5MjNhNDI1Yjc2MDc2N2ViZjFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50
aWNhdGlvbkRpYWxvZy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwCkBAIC0zMiw5ICszMiw4IEBAIHN0cnVjdCBf
V2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2dQcml2YXRlIHsKICAgICBHUmVmUHRyPFdlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdD4gcmVxdWVzdDsKICAgICBHdGtXaWRnZXQqIGF1dGhXaWRnZXQ7
CiAgICAgR3RrV2lkZ2V0KiBkZWZhdWx0QnV0dG9uOwotICAgIHVuc2lnbmVkIGxvbmcgbG9hZEZh
aWxlZEV2ZW50SUQ7CisgICAgdW5zaWduZWQgbG9uZyBhdXRoZW50aWNhdGlvbkNhbmNlbGxlZElE
OwogICAgIEdSZWZQdHI8R3RrU3R5bGVDb250ZXh0PiBzdHlsZUNvbnRleHQ7Ci0gICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldzsKIH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShXZWJLaXRBdXRoZW50
aWNhdGlvbkRpYWxvZywgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2RpYWxvZywgR1RLX1RZUEVfRVZF
TlRfQk9YKQpAQCAtNTQsMTMgKzUzLDEyIEBAIHN0YXRpYyB2b2lkIGNhbmNlbEJ1dHRvbkNsaWNr
ZWQoR3RrQnV0dG9uKiwgV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsCiAgICAg
Z3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoYXV0aERpYWxvZykpOwogfQogCi1zdGF0aWMg
dm9pZCBwYWdlTG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0TG9hZEV2ZW50LCBjb25z
dCBjaGFyKiwgR0Vycm9yKiwgV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsb2cp
CitzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGlvbkNhbmNlbGxlZChXZWJLaXRBdXRoZW50aWNhdGlv
blJlcXVlc3QqLCBXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZyogYXV0aERpYWxvZykKIHsKLSAg
ICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5jZWwoYXV0aERpYWxvZy0+cHJpdi0+
cmVxdWVzdC5nZXQoKSk7CiAgICAgZ3RrX3dpZGdldF9kZXN0cm95KEdUS19XSURHRVQoYXV0aERp
YWxvZykpOwogfQogCi1zdGF0aWMgdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0luaXRp
YWxpemUoV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsb2csIENyZWRlbnRpYWxT
dG9yYWdlTW9kZSBjcmVkZW50aWFsU3RvcmFnZU1vZGUsIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcp
CitzdGF0aWMgdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0luaXRpYWxpemUoV2ViS2l0
QXV0aGVudGljYXRpb25EaWFsb2cqIGF1dGhEaWFsb2csIENyZWRlbnRpYWxTdG9yYWdlTW9kZSBj
cmVkZW50aWFsU3RvcmFnZU1vZGUpCiB7CiAgICAgR3RrV2lkZ2V0KiBmcmFtZSA9IGd0a19mcmFt
ZV9uZXcoMCk7CiAgICAgZ3RrX2ZyYW1lX3NldF9zaGFkb3dfdHlwZShHVEtfRlJBTUUoZnJhbWUp
LCBHVEtfU0hBRE9XX0lOKTsKQEAgLTk4LDggKzk2LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0
aGVudGljYXRpb25EaWFsb2dJbml0aWFsaXplKFdlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nKiBh
dXQKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGF1dGhEaWFsb2cpLCBmcmFt
ZSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KGZyYW1lKTsKIAotICAgIGF1dGhEaWFsb2ctPnByaXYt
PndlYlZpZXcgPSB3ZWJWaWV3OwotICAgIGF1dGhEaWFsb2ctPnByaXYtPmxvYWRGYWlsZWRFdmVu
dElEID0gZ19zaWduYWxfY29ubmVjdCh3ZWJWaWV3LCAibG9hZC1mYWlsZWQiLCBHX0NBTExCQUNL
KHBhZ2VMb2FkRmFpbGVkKSwgYXV0aERpYWxvZyk7CisgICAgYXV0aERpYWxvZy0+cHJpdi0+YXV0
aGVudGljYXRpb25DYW5jZWxsZWRJRCA9IGdfc2lnbmFsX2Nvbm5lY3QoYXV0aERpYWxvZy0+cHJp
di0+cmVxdWVzdC5nZXQoKSwgImNhbmNlbGxlZCIsIEdfQ0FMTEJBQ0soYXV0aGVudGljYXRpb25D
YW5jZWxsZWQpLCBhdXRoRGlhbG9nKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEF1dGhl
bnRpY2F0aW9uRGlhbG9nRHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCkBAIC0x
MzksOSArMTM2LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dDb25z
dHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiBzdGF0aWMgdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlv
bkRpYWxvZ0Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogewogICAgIFdlYktpdEF1dGhlbnRpY2F0
aW9uRGlhbG9nUHJpdmF0ZSogcHJpdiA9IFdFQktJVF9BVVRIRU5USUNBVElPTl9ESUFMT0cob2Jq
ZWN0KS0+cHJpdjsKLSAgICBpZiAocHJpdi0+bG9hZEZhaWxlZEV2ZW50SUQpIHsKLSAgICAgICAg
Z19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYtPndlYlZpZXcsIHByaXYtPmxvYWRGYWls
ZWRFdmVudElEKTsKLSAgICAgICAgcHJpdi0+bG9hZEZhaWxlZEV2ZW50SUQgPSAwOworICAgIGlm
IChwcml2LT5hdXRoZW50aWNhdGlvbkNhbmNlbGxlZElEKSB7CisgICAgICAgIGdfc2lnbmFsX2hh
bmRsZXJfZGlzY29ubmVjdChwcml2LT5yZXF1ZXN0LmdldCgpLCBwcml2LT5hdXRoZW50aWNhdGlv
bkNhbmNlbGxlZElEKTsKKyAgICAgICAgcHJpdi0+YXV0aGVudGljYXRpb25DYW5jZWxsZWRJRCA9
IDA7CiAgICAgfQogCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2F1dGhlbnRpY2F0aW9uX2Rp
YWxvZ19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBAIC0xNTgsMTAgKzE1NSwxMCBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fZGlhbG9nX2NsYXNzX2luaXQoV2Vi
S2l0QXV0aGVudGljYXRpb25EaWFsb2dDbAogICAgIHdpZGdldENsYXNzLT5tYXAgPSB3ZWJraXRB
dXRoZW50aWNhdGlvbkRpYWxvZ01hcDsKIH0KIAotR3RrV2lkZ2V0KiB3ZWJraXRBdXRoZW50aWNh
dGlvbkRpYWxvZ05ldyhXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QsIENyZWRl
bnRpYWxTdG9yYWdlTW9kZSBtb2RlLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQorR3RrV2lkZ2V0
KiB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05ldyhXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVl
c3QqIHJlcXVlc3QsIENyZWRlbnRpYWxTdG9yYWdlTW9kZSBtb2RlKQogewogICAgIFdlYktpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0RJ
QUxPRyhnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfQVVUSEVOVElDQVRJT05fRElBTE9HLCBOVUxM
KSk7CiAgICAgYXV0aERpYWxvZy0+cHJpdi0+cmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgd2Via2l0
QXV0aGVudGljYXRpb25EaWFsb2dJbml0aWFsaXplKGF1dGhEaWFsb2csIG1vZGUsIHdlYlZpZXcp
OworICAgIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZShhdXRoRGlhbG9nLCBt
b2RlKTsKICAgICByZXR1cm4gR1RLX1dJREdFVChhdXRoRGlhbG9nKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlh
bG9nLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNh
dGlvbkRpYWxvZy5oCmluZGV4IDNmMjhiMWE5NTRkNWE3ZWVlZGM3N2Q5ODJhZjk4YTA3YTRiOTlk
NWUuLmU1ZTYyYTdiZDdlODk4MWVjNmMyYTRiNzAzYzZkOWUwZjEwMzZmOGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlh
bG9nLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVu
dGljYXRpb25EaWFsb2cuaApAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgX1dlYktpdEF1dGhlbnRp
Y2F0aW9uRGlhbG9nQ2xhc3MgewogfTsKIAogR1R5cGUgd2Via2l0X2F1dGhlbnRpY2F0aW9uX2Rp
YWxvZ19nZXRfdHlwZSgpOwotR3RrV2lkZ2V0KiB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05l
dyhXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QqLCBDcmVkZW50aWFsU3RvcmFnZU1vZGUsIFdl
YktpdFdlYlZpZXcqKTsKK0d0a1dpZGdldCogd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dOZXco
V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiwgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlKTsKIAog
R19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKaW5kZXggZThjMzNi
MmI1ZjlmNDAyM2Q0ZDdiNTVjOGNiOGQ5YmJhZmI2MzRkZC4uNmYwYzM3MDdlMzc4ZTQyYTkzYjJk
ZmI5M2FkMGYzMGFlNWI3YjJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3QuY3BwCkBA
IC01MSw2ICs1MSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAqIFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdCBvYmplY3QuCiAgKi8KIAorZW51bSB7CisgICAgQ0FOQ0VMTEVELAor
CisgICAgTEFTVF9TSUdOQUwKK307CisKIHN0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25SZXF1
ZXN0UHJpdmF0ZSB7CiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsK
QEAgLTU5LDYgKzY1LDggQEAgc3RydWN0IF9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2
YXRlIHsKICAgICBDU3RyaW5nIHJlYWxtOwogfTsKIAorc3RhdGljIGd1aW50IHNpZ25hbHNbTEFT
VF9TSUdOQUxdID0geyAwLCB9OworCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdFQktJ
VF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfREVGQVVMVCwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGlj
YXRpb25TY2hlbWVEZWZhdWx0KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lU
X0FVVEhFTlRJQ0FUSU9OX1NDSEVNRV9IVFRQX0JBU0lDLCBQcm90ZWN0aW9uU3BhY2VBdXRoZW50
aWNhdGlvblNjaGVtZUhUVFBCYXNpYyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdF
QktJVF9BVVRIRU5USUNBVElPTl9TQ0hFTUVfSFRUUF9ESUdFU1QsIFByb3RlY3Rpb25TcGFjZUF1
dGhlbnRpY2F0aW9uU2NoZW1lSFRUUERpZ2VzdCk7CkBAIC04Niw2ICs5NCwyNCBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jbGFzc19pbml0KFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdAogewogICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09C
SkVDVF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOwogICAgIG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Vi
a2l0QXV0aGVudGljYXRpb25SZXF1ZXN0RGlzcG9zZTsKKworICAgIC8qKgorICAgICAqIFdlYktp
dEF1dGhlbnRpY2F0aW9uUmVxdWVzdDo6Y2FuY2VsbGVkOgorICAgICAqIEByZXF1ZXN0OiB0aGUg
I1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdAorICAgICAqCisgICAgICogVGhpcyBzaWduYWwg
aXMgZW1pdHRlZCB3aGVuIHRoZSB1c2VyIGF1dGhlbnRpY2F0aW9uIHJlcXVlc3QgaXMKKyAgICAg
KiBjYW5jZWxsZWQuIEl0IGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gZGlzbWlzcyBpdHMgYXV0
aGVudGljYXRpb24KKyAgICAgKiBkaWFsb2cgaW4gY2FzZSBvZiBwYWdlIGxvYWQgZmFpbHVyZSBm
b3IgZXhhbXBsZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAyLjIKKyAgICAgKi8KKyAgICBzaWdu
YWxzW0NBTkNFTExFRF0gPQorICAgICAgICBnX3NpZ25hbF9uZXcoImNhbmNlbGxlZCIsCisgICAg
ICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyhvYmplY3RDbGFzcyksCisgICAgICAgICAgICBHX1NJ
R05BTF9SVU5fTEFTVCwKKyAgICAgICAgICAgIDAsIDAsIDAsCisgICAgICAgICAgICBnX2NjbG9z
dXJlX21hcnNoYWxfVk9JRF9fVk9JRCwKKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAwKTsKIH0K
IAogV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiB3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVl
c3RDcmVhdGUoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFs
bGVuZ2UsIGJvb2wgcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkKQEAgLTI4OCw0ICszMTQsNiBAQCB2
b2lkIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2NhbmNlbChXZWJLaXRBdXRoZW50aWNh
dGlvblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfSVNfQVVU
SEVOVElDQVRJT05fUkVRVUVTVChyZXF1ZXN0KSk7CiAKICAgICByZXF1ZXN0LT5wcml2LT5hdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS0+bGlzdGVuZXIoKS0+Y2FuY2VsKCk7CisKKyAgICBnX3NpZ25h
bF9lbWl0KHJlcXVlc3QsIHNpZ25hbHNbQ0FOQ0VMTEVEXSwgMCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCmluZGV4IGRkNWU4
ZGVlODM0ZDA4ZDM3MzBjYTMyZTA1YmVkNDAzY2Y3ZTUzYTUuLmQ3ZmZlYWY2Y2VkOWE3Nzc1ZDk0
ZWQ5ZTcwNWVjYjEzN2RjNjgxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0xOTAsNiArMTkwLDcgQEAgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAgICAgdW5zaWduZWQgbG9uZyBmYXZpY29uQ2hhbmdlZEhh
bmRsZXJJRDsKIAogICAgIFNuYXBzaG90UmVzdWx0c01hcCBzbmFwc2hvdFJlc3VsdHNNYXA7Cisg
ICAgR1JlZlB0cjxXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Q+IGF1dGhlbnRpY2F0aW9uUmVx
dWVzdDsKIH07CiAKIHN0YXRpYyBndWludCBzaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwgfTsK
QEAgLTQzNyw3ICs0MzgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdEZh
dmljb25EYXRhYmFzZVNpZ25hbEhhbmRsZXJzKFdlYktpdFdlYlZpZXcqCiBzdGF0aWMgZ2Jvb2xl
YW4gd2Via2l0V2ViVmlld0F1dGhlbnRpY2F0ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJL
aXRBdXRoZW50aWNhdGlvblJlcXVlc3QqIHJlcXVlc3QpCiB7CiAgICAgQ3JlZGVudGlhbFN0b3Jh
Z2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSA9IHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1
ZXN0X2Nhbl9zYXZlX2NyZWRlbnRpYWxzKHJlcXVlc3QpID8gQWxsb3dQZXJzaXN0ZW50U3RvcmFn
ZSA6IERpc2FsbG93UGVyc2lzdGVudFN0b3JhZ2U7Ci0gICAgd2Via2l0V2ViVmlld0Jhc2VBZGRB
dXRoZW50aWNhdGlvbkRpYWxvZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgd2Via2l0
QXV0aGVudGljYXRpb25EaWFsb2dOZXcocmVxdWVzdCwgY3JlZGVudGlhbFN0b3JhZ2VNb2RlLCB3
ZWJWaWV3KSk7CisgICAgd2Via2l0V2ViVmlld0Jhc2VBZGRBdXRoZW50aWNhdGlvbkRpYWxvZyhX
RUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3KSwgd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dO
ZXcocmVxdWVzdCwgY3JlZGVudGlhbFN0b3JhZ2VNb2RlKSk7CiAKICAgICByZXR1cm4gVFJVRTsK
IH0KQEAgLTE0MzUsMTAgKzE0MzYsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0VtaXRM
b2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQKICAgICBp
ZiAobG9hZEV2ZW50ID09IFdFQktJVF9MT0FEX1NUQVJURUQpIHsKICAgICAgICAgd2Via2l0V2Vi
Vmlld1NldElzTG9hZGluZyh3ZWJWaWV3LCB0cnVlKTsKICAgICAgICAgd2Via2l0V2ViVmlld1dh
dGNoRm9yQ2hhbmdlc0luRmF2aWNvbih3ZWJWaWV3KTsKLSAgICAgICAgd2Via2l0V2ViVmlld0Jh
c2VDYW5jZWxBdXRoZW50aWNhdGlvbkRpYWxvZyhXRUJLSVRfV0VCX1ZJRVdfQkFTRSh3ZWJWaWV3
KSk7CisgICAgICAgIHdlYmtpdFdlYlZpZXdSZXNldEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJW
aWV3KTsKICAgICB9IGVsc2UgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRfTE9BRF9GSU5JU0hFRCkg
ewogICAgICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIGZhbHNlKTsKLSAg
ICAgICAgd2ViVmlldy0+cHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJjZSA9IGZhbHNlOworICAg
ICAgICB3ZWJraXRXZWJWaWV3UmVzZXRBdXRoZW50aWNhdGlvblJlcXVlc3Qod2ViVmlldyk7CiAg
ICAgICAgIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0TWFpblJlc291cmNlUmVzcG9uc2VDaGFuZ2Vk
U2lnbmFsSGFuZGxlcih3ZWJWaWV3KTsKICAgICB9IGVsc2UKICAgICAgICAgd2Via2l0V2ViVmll
d1VwZGF0ZVVSSSh3ZWJWaWV3KTsKQEAgLTE0OTIsNiArMTQ5Myw4IEBAIHZvaWQgd2Via2l0V2Vi
Vmlld0xvYWRDaGFuZ2VkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBs
b2FkRXZlbnQpCiB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsIGNvbnN0IGNoYXIqIGZhaWxpbmdVUkks
IEdFcnJvciAqZXJyb3IpCiB7CiAgICAgd2Via2l0V2ViVmlld1NldElzTG9hZGluZyh3ZWJWaWV3
LCBmYWxzZSk7CisgICAgd2Via2l0V2ViVmlld1Jlc2V0QXV0aGVudGljYXRpb25SZXF1ZXN0KHdl
YlZpZXcpOworCiAgICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7CiAgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCBzaWduYWxzW0xPQURfRkFJTEVEXSwgMCwgbG9hZEV2ZW50LCBmYWlsaW5nVVJJLCBl
cnJvciwgJnJldHVyblZhbHVlKTsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNb
TE9BRF9DSEFOR0VEXSwgMCwgV0VCS0lUX0xPQURfRklOSVNIRUQpOwpAQCAtMTUwMCw2ICsxNTAz
LDcgQEAgdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LAogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxl
ZFdpdGhUTFNFcnJvcnMoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogZmFpbGlu
Z1VSSSwgR0Vycm9yICplcnJvciwgR1Rsc0NlcnRpZmljYXRlRmxhZ3MgdGxzRXJyb3JzLCBHVGxz
Q2VydGlmaWNhdGUqIGNlcnRpZmljYXRlKQogewogICAgIHdlYmtpdFdlYlZpZXdTZXRJc0xvYWRp
bmcod2ViVmlldywgZmFsc2UpOworICAgIHdlYmtpdFdlYlZpZXdSZXNldEF1dGhlbnRpY2F0aW9u
UmVxdWVzdCh3ZWJWaWV3KTsKIAogICAgIFdlYktpdFRMU0Vycm9yc1BvbGljeSB0bHNFcnJvcnNQ
b2xpY3kgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJvcnNfcG9saWN5KHdlYlZpZXct
PnByaXYtPmNvbnRleHQpOwogICAgIGlmICh0bHNFcnJvcnNQb2xpY3kgPT0gV0VCS0lUX1RMU19F
UlJPUlNfUE9MSUNZX0ZBSUwpIHsKQEAgLTE3ODYsOSArMTc5MCw5IEBAIHZvaWQgd2Via2l0V2Vi
Vmlld1N1Ym1pdEZvcm1SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEZvcm1T
dWJtaXNzaW9uCiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBnYm9vbGVhbiBwcml2YXRlQnJvd3NpbmdF
bmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJpdmF0ZV9icm93c2luZyh3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKLSAgICBHUmVmUHRyPFdlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1JlZih3ZWJraXRBdXRoZW50aWNh
dGlvblJlcXVlc3RDcmVhdGUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIHByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpKTsKKyAgICB3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QgPSBh
ZG9wdEdSZWYod2Via2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Q3JlYXRlKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSk7CiAgICAgZ2Jvb2xlYW4gcmV0dXJu
VmFsdWU7Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0FVVEhFTlRJQ0FURV0s
IDAsIHJlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CisgICAgZ19zaWduYWxfZW1pdCh3ZWJW
aWV3LCBzaWduYWxzW0FVVEhFTlRJQ0FURV0sIDAsIHdlYlZpZXctPnByaXYtPmF1dGhlbnRpY2F0
aW9uUmVxdWVzdC5nZXQoKSwgJnJldHVyblZhbHVlKTsKIH0KIAogdm9pZCB3ZWJraXRXZWJWaWV3
SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0SW5z
ZWN1cmVDb250ZW50RXZlbnQgdHlwZSkKQEAgLTMwNzQsMyArMzA3OCwxMCBAQCB2b2lkIHdlYmtp
dFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdf
c2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tXRUJfUFJPQ0VTU19DUkFTSEVEXSwgMCwgJnJl
dHVyblZhbHVlKTsKIH0KIAordm9pZCB3ZWJraXRXZWJWaWV3UmVzZXRBdXRoZW50aWNhdGlvblJl
cXVlc3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBpZiAod2ViVmlldy0+cHJpdi0+
YXV0aGVudGljYXRpb25SZXF1ZXN0KSB7CisgICAgICAgIHdlYmtpdF9hdXRoZW50aWNhdGlvbl9y
ZXF1ZXN0X2NhbmNlbCh3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QuZ2V0KCkp
OworICAgICAgICB3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNhdGlvblJlcXVlc3QuY2xlYXIoKTsK
KyAgICB9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRXZWJWaWV3QmFzZS5jcHAKaW5kZXggMWI2Yjk0MDcxZTQ0NzRmZWNiMGM1MWFmYzRlN2Ex
NjBkY2UwZjYxZi4uYTEyMmY0ZGEzN2M1OTMzMTg4ZDZiYzg0ODUyZWFlMDJlNDEyNjQ2ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZp
ZXdCYXNlLmNwcApAQCAtMjk4LDEzICsyOTgsNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQWRk
QXV0aGVudGljYXRpb25EaWFsb2coV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNlLCBHdAog
ICAgIGd0a193aWRnZXRfcXVldWVfZHJhdyhHVEtfV0lER0VUKHdlYlZpZXdCYXNlKSk7CiB9CiAK
LXZvaWQgd2Via2l0V2ViVmlld0Jhc2VDYW5jZWxBdXRoZW50aWNhdGlvbkRpYWxvZyhXZWJLaXRX
ZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UpCi17Ci0gICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
KiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7Ci0gICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9u
RGlhbG9nKQotICAgICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocHJpdi0+YXV0aGVudGljYXRpb25E
aWFsb2cpOwotfQotCiB2b2lkIHdlYmtpdFdlYlZpZXdCYXNlQWRkV2ViSW5zcGVjdG9yKFdlYktp
dFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSwgR3RrV2lkZ2V0KiBpbnNwZWN0b3IpCiB7CiAgICAg
d2ViVmlld0Jhc2UtPnByaXYtPmluc3BlY3RvclZpZXcgPSBpbnNwZWN0b3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUu
aAppbmRleCBlYjFmMjdkYjI5OGNhZTM4NzgxYjVkYjQyNDhhM2Q2Yjg3ZGE0YmExLi5lMTVhNGU0
MzhkNjQ3ZGE1ZjM2MTMyNDY4Mjc4YWNkMjA1YTQ5YmQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgKQEAgLTYw
LDUgKzYwLDYgQEAgdm9pZCB3ZWJraXRXZWJWaWV3U3VibWl0Rm9ybVJlcXVlc3QoV2ViS2l0V2Vi
VmlldyosIFdlYktpdEZvcm1TdWJtaXNzaW9uUmVxdWVzdCoKIHZvaWQgd2Via2l0V2ViVmlld0hh
bmRsZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdFdlYlZpZXcqLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKTsKIHZvaWQgd2Via2l0V2ViVmlld0luc2VjdXJlQ29u
dGVudERldGVjdGVkKFdlYktpdFdlYlZpZXcqLCBXZWJLaXRJbnNlY3VyZUNvbnRlbnRFdmVudCk7
CiB2b2lkIHdlYmtpdFdlYlZpZXdXZWJQcm9jZXNzQ3Jhc2hlZChXZWJLaXRXZWJWaWV3Kik7Cit2
b2lkIHdlYmtpdFdlYlZpZXdSZXNldEF1dGhlbnRpY2F0aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3
Kik7CiAKICNlbmRpZiAvLyBXZWJLaXRXZWJWaWV3UHJpdmF0ZV9oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmll
dy5jcHAKaW5kZXggMjhhMDhmMzAyMTMzOWY3ODUwMjdiODcwZmU0NzU5YTYzOGYzZmFjYS4uN2E1
MzEwNGMxMzhiYWNkMTkxM2U1NmNiM2ZiZDhkZGRlNWJlMzIyOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJW
aWV3LmNwcApAQCAtMTI0OCwyMCArMTI0OCwyOCBAQCBwdWJsaWM6CiAgICAgfQogCiAgICAgc3Rh
dGljIGludCBhdXRoZW50aWNhdGlvblJldHJpZXM7CisgICAgc3RhdGljIGJvb2wgYXV0aGVudGlj
YXRpb25DYW5jZWxsZWRSZWNlaXZlZDsKIAogICAgIHZvaWQgbG9hZFVSSShjb25zdCBjaGFyKiB1
cmkpCiAgICAgewogICAgICAgICAvLyBSZXNldCB0aGUgcmV0cnkgY291bnQgb2YgdGhlIGZha2Ug
c2VydmVyIHdoZW4gYSBwYWdlIGlzIGxvYWRlZC4KICAgICAgICAgYXV0aGVudGljYXRpb25SZXRy
aWVzID0gMDsKKyAgICAgICAgYXV0aGVudGljYXRpb25DYW5jZWxsZWRSZWNlaXZlZCA9IGZhbHNl
OwogICAgICAgICBMb2FkVHJhY2tpbmdUZXN0Ojpsb2FkVVJJKHVyaSk7CiAgICAgfQogCiAgICAg
c3RhdGljIGdib29sZWFuIHJ1bkF1dGhlbnRpY2F0aW9uQ2FsbGJhY2soV2ViS2l0V2ViVmlldyos
IFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCwgQXV0aGVudGljYXRpb25UZXN0
KiB0ZXN0KQogICAgIHsKKyAgICAgICAgZ19zaWduYWxfY29ubmVjdChyZXF1ZXN0LCAiY2FuY2Vs
bGVkIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGlvbkNhbmNlbGxlZENhbGxiYWNrKSwgdGVzdCk7
CiAgICAgICAgIHRlc3QtPnJ1bkF1dGhlbnRpY2F0aW9uKHJlcXVlc3QpOwogICAgICAgICByZXR1
cm4gVFJVRTsKICAgICB9CiAKKyAgICBzdGF0aWMgdm9pZCBhdXRoZW50aWNhdGlvbkNhbmNlbGxl
ZENhbGxiYWNrKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCosIEF1dGhlbnRpY2F0aW9uVGVz
dCopCisgICAgeworICAgICAgICBhdXRoZW50aWNhdGlvbkNhbmNlbGxlZFJlY2VpdmVkID0gdHJ1
ZTsKKyAgICB9CisKICAgICB2b2lkIHJ1bkF1dGhlbnRpY2F0aW9uKFdlYktpdEF1dGhlbnRpY2F0
aW9uUmVxdWVzdCogcmVxdWVzdCkKICAgICB7CiAgICAgICAgIGFzc2VydE9iamVjdElzRGVsZXRl
ZFdoZW5UZXN0RmluaXNoZXMoR19PQkpFQ1QocmVxdWVzdCkpOwpAQCAtMTI4MCw2ICsxMjg4LDcg
QEAgcHJpdmF0ZToKIH07CiAKIGludCBBdXRoZW50aWNhdGlvblRlc3Q6OmF1dGhlbnRpY2F0aW9u
UmV0cmllcyA9IDA7Citib29sIEF1dGhlbnRpY2F0aW9uVGVzdDo6YXV0aGVudGljYXRpb25DYW5j
ZWxsZWRSZWNlaXZlZCA9IGZhbHNlOwogCiBzdGF0aWMgY29uc3QgY2hhciBhdXRoVGVzdFVzZXJu
YW1lW10gPSAidXNlcm5hbWUiOwogc3RhdGljIGNvbnN0IGNoYXIgYXV0aFRlc3RQYXNzd29yZFtd
ID0gInBhc3N3b3JkIjsKQEAgLTEzMjUsNiArMTMzNCwyMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
Vmlld0F1dGhlbnRpY2F0aW9uQ2FuY2VsKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbgogICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIFdFQktJVF9ORVRX
T1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpOwogfQogCitzdGF0aWMg
dm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTG9hZENhbmNlbGxlZChBdXRoZW50aWNhdGlv
blRlc3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCit7CisgICAgdGVzdC0+bG9hZFVSSShrU2VydmVy
LT5nZXRVUklGb3JQYXRoKCIvYXV0aC10ZXN0Lmh0bWwiKS5kYXRhKCkpOworICAgIHRlc3QtPndh
aXRGb3JBdXRoZW50aWNhdGlvblJlcXVlc3QoKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc3RvcF9s
b2FkaW5nKHRlc3QtPm1fd2ViVmlldyk7CisgICAgLy8gRXhwZWN0IGVtcHR5IHBhZ2UuCisgICAg
dGVzdC0+d2FpdFVudGlsTG9hZEZpbmlzaGVkKCk7CisgICAgZ19hc3NlcnQodGVzdC0+YXV0aGVu
dGljYXRpb25DYW5jZWxsZWRSZWNlaXZlZCk7CisKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+
bV9sb2FkRXZlbnRzLnNpemUoKSwgPT0sIDMpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5t
X2xvYWRFdmVudHNbMF0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92aXNpb25hbExvYWRTdGFy
dGVkKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQodGVzdC0+bV9sb2FkRXZlbnRzWzFdLCA9PSwgTG9h
ZFRyYWNraW5nVGVzdDo6UHJvdmlzaW9uYWxMb2FkRmFpbGVkKTsKKyAgICBnX2Fzc2VydF9jbXBp
bnQodGVzdC0+bV9sb2FkRXZlbnRzWzJdLCA9PSwgTG9hZFRyYWNraW5nVGVzdDo6TG9hZEZpbmlz
aGVkKTsKKworICAgIGdfYXNzZXJ0X2Vycm9yKHRlc3QtPm1fZXJyb3IuZ2V0KCksIFdFQktJVF9O
RVRXT1JLX0VSUk9SLCBXRUJLSVRfTkVUV09SS19FUlJPUl9DQU5DRUxMRUQpOworfQorCiBzdGF0
aWMgdm9pZCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uRmFpbHVyZShBdXRoZW50aWNhdGlvblRl
c3QqIHRlc3QsIGdjb25zdHBvaW50ZXIpCiB7CiAgICAgLy8gVGVzdCBhdXRoZW50aWNhdGlvbiBm
YWlsdXJlcy4KQEAgLTE0NzQsNiArMTUwMCw3IEBAIHZvaWQgYmVmb3JlQWxsKCkKICAgICBXZWJW
aWV3VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgInBhZ2UtdmlzaWJpbGl0eSIsIHRlc3RXZWJW
aWV3UGFnZVZpc2liaWxpdHkpOwogICAgIEF1dGhlbnRpY2F0aW9uVGVzdDo6YWRkKCJXZWJLaXRX
ZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLXJlcXVlc3QiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0
aW9uUmVxdWVzdCk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXci
LCAiYXV0aGVudGljYXRpb24tY2FuY2VsIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkNhbmNl
bCk7CisgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXV0aGVu
dGljYXRpb24tbG9hZC1jYW5jZWxsZWQiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTG9hZENh
bmNlbGxlZCk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAi
YXV0aGVudGljYXRpb24tZmFpbHVyZSIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25GYWlsdXJl
KTsKICAgICBBdXRoZW50aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50
aWNhdGlvbi1uby1jcmVkZW50aWFsIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbk5vQ3JlZGVu
dGlhbCk7CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXV0
aGVudGljYXRpb24tc3RvcmFnZSIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25TdG9yYWdlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>211028</attachid>
            <date>2013-09-09 04:15:25 -0700</date>
            <delta_ts>2013-09-09 06:48:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-120350-20130909121526.patch</filename>
            <type>text/plain</type>
            <size>17708</size>
            <attacher name="Anton Obzhirov">obzhirov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU1MzQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNGI5YzI0MTQwYjM4ODg1
ZjFmNzAxYTljOGRmNmY5YTY1ZmE1M2VjZS4uYmYxNzQyNGE5ZGE3YTkzYzkyZmU3YTM1ZmEzOTNm
ZDg4ZWQ0MTY4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDEzLTA5LTA2ICBBbnRv
biBPYnpoaXJvdiAgPGEub2J6aGlyb3ZAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0dUS10gQ2Fu
Y2VsIHRoZSBjdXJyZW50IGFjdGl2ZSBXZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3Qgb24gbG9h
ZCBmYWlsZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMDM1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFRoZSBkZWZhdWx0IGRpYWxvZyBkb2VzIG5vdCBnZXQgY2xvc2VkIGFuZCB0aGUgYXV0aGVudGlj
YXRpb24gaXMgbm90IGNhbmNlbGxlZAorICAgICAgICBpZiBsb2FkaW5nIGZhaWxzIG9yIGlzIHN0
b3BwZWQgb24gYSBwYWdlIHdoaWNoIHJlcXVpcmVzIEhUVFAgYXV0aGVudGljYXRpb24uCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBjYW5jZWxzIHRoZSBhdXRoZW50aWNhdGlvbiByZXF1ZXN0IG9uIGxv
YWQgZmFpbGVkCisgICAgICAgIGFuZCBhZGRzIG5ldyBhdXRoZW50aWNhdGlvbiBjYW5jZWxsZWQg
c2lnbmFsIGluIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdAorICAgICAgICB0byBhbGxvdyB0
aGUgYXBwbGljYXRpb24gaGFuZGxpbmcgb2YgYXV0aGVudGljYXRpb24gVUkuCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5jcHA6CisgICAg
ICAgIChhdXRoZW50aWNhdGlvbkNhbmNlbGxlZCk6CisgICAgICAgICh3ZWJraXRBdXRoZW50aWNh
dGlvbkRpYWxvZ0luaXRpYWxpemUpOgorICAgICAgICAod2Via2l0QXV0aGVudGljYXRpb25EaWFs
b2dEaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTmV3KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5j
cHA6CisgICAgICAgICh3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jbGFzc19pbml0KToK
KyAgICAgICAgKHdlYmtpdF9hdXRoZW50aWNhdGlvbl9yZXF1ZXN0X2NhbmNlbCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRX
ZWJWaWV3QXV0aGVudGljYXRlKToKKyAgICAgICAgKHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKToK
KyAgICAgICAgKHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6Cisg
ICAgICAgICh3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1ZXN0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHA6CisgICAg
ICAgICh0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTG9hZENhbmNlbGxlZCk6CisgICAgICAgIChi
ZWZvcmVBbGwpOgorCiAyMDEzLTA5LTA4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2guZHVtZXpAc2lz
YS5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbd2syXSBSRUdSRVNTSU9OIChyMTU0NjczKTogUERG
IHNjcm9sbGluZyBtb3ZlcyB2ZXJ5IHNsb3dseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuY3Bw
CmluZGV4IDUxNjcwY2U1Y2UxYzE2N2UwM2QxMWY4YzllNGNjM2NhNWFlMjc3ZTAuLjQzY2Q4M2Fj
MGNlNDE2ZTU1NGExNzkyM2E0MjViNzYwNzY3ZWJmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRp
YWxvZy5jcHAKQEAgLTMyLDkgKzMyLDggQEAgc3RydWN0IF9XZWJLaXRBdXRoZW50aWNhdGlvbkRp
YWxvZ1ByaXZhdGUgewogICAgIEdSZWZQdHI8V2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0PiBy
ZXF1ZXN0OwogICAgIEd0a1dpZGdldCogYXV0aFdpZGdldDsKICAgICBHdGtXaWRnZXQqIGRlZmF1
bHRCdXR0b247Ci0gICAgdW5zaWduZWQgbG9uZyBsb2FkRmFpbGVkRXZlbnRJRDsKKyAgICB1bnNp
Z25lZCBsb25nIGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkSUQ7CiAgICAgR1JlZlB0cjxHdGtTdHls
ZUNvbnRleHQ+IHN0eWxlQ29udGV4dDsKLSAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OwogfTsK
IAogV0VCS0lUX0RFRklORV9UWVBFKFdlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLCB3ZWJraXRf
YXV0aGVudGljYXRpb25fZGlhbG9nLCBHVEtfVFlQRV9FVkVOVF9CT1gpCkBAIC01NCwxMyArNTMs
MTIgQEAgc3RhdGljIHZvaWQgY2FuY2VsQnV0dG9uQ2xpY2tlZChHdGtCdXR0b24qLCBXZWJLaXRB
dXRoZW50aWNhdGlvbkRpYWxvZyogYXV0aERpYWwKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3koR1RL
X1dJREdFVChhdXRoRGlhbG9nKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhZ2VMb2FkRmFpbGVkKFdl
YktpdFdlYlZpZXcqLCBXZWJLaXRMb2FkRXZlbnQsIGNvbnN0IGNoYXIqLCBHRXJyb3IqLCBXZWJL
aXRBdXRoZW50aWNhdGlvbkRpYWxvZyogYXV0aERpYWxvZykKK3N0YXRpYyB2b2lkIGF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGVkKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCosIFdlYktpdEF1dGhl
bnRpY2F0aW9uRGlhbG9nKiBhdXRoRGlhbG9nKQogewotICAgIHdlYmtpdF9hdXRoZW50aWNhdGlv
bl9yZXF1ZXN0X2NhbmNlbChhdXRoRGlhbG9nLT5wcml2LT5yZXF1ZXN0LmdldCgpKTsKICAgICBn
dGtfd2lkZ2V0X2Rlc3Ryb3koR1RLX1dJREdFVChhdXRoRGlhbG9nKSk7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZShXZWJLaXRBdXRoZW50aWNh
dGlvbkRpYWxvZyogYXV0aERpYWxvZywgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxT
dG9yYWdlTW9kZSwgV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3N0YXRpYyB2b2lkIHdlYmtpdEF1
dGhlbnRpY2F0aW9uRGlhbG9nSW5pdGlhbGl6ZShXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZyog
YXV0aERpYWxvZywgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlIGNyZWRlbnRpYWxTdG9yYWdlTW9kZSkK
IHsKICAgICBHdGtXaWRnZXQqIGZyYW1lID0gZ3RrX2ZyYW1lX25ldygwKTsKICAgICBndGtfZnJh
bWVfc2V0X3NoYWRvd190eXBlKEdUS19GUkFNRShmcmFtZSksIEdUS19TSEFET1dfSU4pOwpAQCAt
OTgsOCArOTYsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0luaXRp
YWxpemUoV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cqIGF1dAogICAgIGd0a19jb250YWluZXJf
YWRkKEdUS19DT05UQUlORVIoYXV0aERpYWxvZyksIGZyYW1lKTsKICAgICBndGtfd2lkZ2V0X3No
b3coZnJhbWUpOwogCi0gICAgYXV0aERpYWxvZy0+cHJpdi0+d2ViVmlldyA9IHdlYlZpZXc7Ci0g
ICAgYXV0aERpYWxvZy0+cHJpdi0+bG9hZEZhaWxlZEV2ZW50SUQgPSBnX3NpZ25hbF9jb25uZWN0
KHdlYlZpZXcsICJsb2FkLWZhaWxlZCIsIEdfQ0FMTEJBQ0socGFnZUxvYWRGYWlsZWQpLCBhdXRo
RGlhbG9nKTsKKyAgICBhdXRoRGlhbG9nLT5wcml2LT5hdXRoZW50aWNhdGlvbkNhbmNlbGxlZElE
ID0gZ19zaWduYWxfY29ubmVjdChhdXRoRGlhbG9nLT5wcml2LT5yZXF1ZXN0LmdldCgpLCAiY2Fu
Y2VsbGVkIiwgR19DQUxMQkFDSyhhdXRoZW50aWNhdGlvbkNhbmNlbGxlZCksIGF1dGhEaWFsb2cp
OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QXV0aGVudGljYXRpb25EaWFsb2dEcmF3KEd0
a1dpZGdldCogd2lkZ2V0LCBjYWlyb190KiBjcikKQEAgLTEzOSw5ICsxMzYsOSBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVj
dCkKIHN0YXRpYyB2b2lkIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nRGlzcG9zZShHT2JqZWN0
KiBvYmplY3QpCiB7CiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2dQcml2YXRlKiBwcml2
ID0gV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX0RJQUxPRyhvYmplY3QpLT5wcml2OwotICAgIGlmIChw
cml2LT5sb2FkRmFpbGVkRXZlbnRJRCkgewotICAgICAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nv
bm5lY3QocHJpdi0+d2ViVmlldywgcHJpdi0+bG9hZEZhaWxlZEV2ZW50SUQpOwotICAgICAgICBw
cml2LT5sb2FkRmFpbGVkRXZlbnRJRCA9IDA7CisgICAgaWYgKHByaXYtPmF1dGhlbnRpY2F0aW9u
Q2FuY2VsbGVkSUQpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KHByaXYt
PnJlcXVlc3QuZ2V0KCksIHByaXYtPmF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkSUQpOworICAgICAg
ICBwcml2LT5hdXRoZW50aWNhdGlvbkNhbmNlbGxlZElEID0gMDsKICAgICB9CiAKICAgICBHX09C
SkVDVF9DTEFTUyh3ZWJraXRfYXV0aGVudGljYXRpb25fZGlhbG9nX3BhcmVudF9jbGFzcyktPmRp
c3Bvc2Uob2JqZWN0KTsKQEAgLTE1OCwxMCArMTU1LDEwIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9h
dXRoZW50aWNhdGlvbl9kaWFsb2dfY2xhc3NfaW5pdChXZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxv
Z0NsCiAgICAgd2lkZ2V0Q2xhc3MtPm1hcCA9IHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTWFw
OwogfQogCi1HdGtXaWRnZXQqIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTmV3KFdlYktpdEF1
dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCwgQ3JlZGVudGlhbFN0b3JhZ2VNb2RlIG1vZGUs
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCitHdGtXaWRnZXQqIHdlYmtpdEF1dGhlbnRpY2F0aW9u
RGlhbG9nTmV3KFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCwgQ3JlZGVudGlh
bFN0b3JhZ2VNb2RlIG1vZGUpCiB7CiAgICAgV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cqIGF1
dGhEaWFsb2cgPSBXRUJLSVRfQVVUSEVOVElDQVRJT05fRElBTE9HKGdfb2JqZWN0X25ldyhXRUJL
SVRfVFlQRV9BVVRIRU5USUNBVElPTl9ESUFMT0csIE5VTEwpKTsKICAgICBhdXRoRGlhbG9nLT5w
cml2LT5yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ0lu
aXRpYWxpemUoYXV0aERpYWxvZywgbW9kZSwgd2ViVmlldyk7CisgICAgd2Via2l0QXV0aGVudGlj
YXRpb25EaWFsb2dJbml0aWFsaXplKGF1dGhEaWFsb2csIG1vZGUpOwogICAgIHJldHVybiBHVEtf
V0lER0VUKGF1dGhEaWFsb2cpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEF1dGhlbnRpY2F0aW9uRGlhbG9nLmgKaW5kZXggM2Yy
OGIxYTk1NGQ1YTdlZWVkYzc3ZDk4MmFmOThhMDdhNGI5OWQ1ZS4uZTVlNjJhN2JkN2U4OTgxZWM2
YzJhNGI3MDNjNmQ5ZTBmMTAzNmY4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2cuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlvbkRpYWxvZy5oCkBAIC00
OSw3ICs0OSw3IEBAIHN0cnVjdCBfV2ViS2l0QXV0aGVudGljYXRpb25EaWFsb2dDbGFzcyB7CiB9
OwogCiBHVHlwZSB3ZWJraXRfYXV0aGVudGljYXRpb25fZGlhbG9nX2dldF90eXBlKCk7Ci1HdGtX
aWRnZXQqIHdlYmtpdEF1dGhlbnRpY2F0aW9uRGlhbG9nTmV3KFdlYktpdEF1dGhlbnRpY2F0aW9u
UmVxdWVzdCosIENyZWRlbnRpYWxTdG9yYWdlTW9kZSwgV2ViS2l0V2ViVmlldyopOworR3RrV2lk
Z2V0KiB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05ldyhXZWJLaXRBdXRoZW50aWNhdGlvblJl
cXVlc3QqLCBDcmVkZW50aWFsU3RvcmFnZU1vZGUpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50aWNhdGlv
blJlcXVlc3QuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0QXV0
aGVudGljYXRpb25SZXF1ZXN0LmNwcAppbmRleCBlOGMzM2IyYjVmOWY0MDIzZDRkN2I1NWM4Y2I4
ZDliYmFmYjYzNGRkLi42ZjBjMzcwN2UzNzhlNDJhOTNiMmRmYjkzYWQwZjMwYWU1YjdiMmRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRBdXRoZW50
aWNhdGlvblJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdC5jcHAKQEAgLTUxLDYgKzUxLDEyIEBAIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogICogV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0IG9iamVj
dC4KICAqLwogCitlbnVtIHsKKyAgICBDQU5DRUxMRUQsCisKKyAgICBMQVNUX1NJR05BTAorfTsK
Kwogc3RydWN0IF9XZWJLaXRBdXRoZW50aWNhdGlvblJlcXVlc3RQcml2YXRlIHsKICAgICBSZWZQ
dHI8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gYXV0aGVudGljYXRpb25DaGFsbGVuZ2U7
CiAgICAgYm9vbCBwcml2YXRlQnJvd3NpbmdFbmFibGVkOwpAQCAtNTksNiArNjUsOCBAQCBzdHJ1
Y3QgX1dlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdFByaXZhdGUgewogICAgIENTdHJpbmcgcmVh
bG07CiB9OwogCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAsIH07CisK
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1NDSEVN
RV9ERUZBVUxULCBQcm90ZWN0aW9uU3BhY2VBdXRoZW50aWNhdGlvblNjaGVtZURlZmF1bHQpOwog
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXRUJLSVRfQVVUSEVOVElDQVRJT05fU0NIRU1F
X0hUVFBfQkFTSUMsIFByb3RlY3Rpb25TcGFjZUF1dGhlbnRpY2F0aW9uU2NoZW1lSFRUUEJhc2lj
KTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV0VCS0lUX0FVVEhFTlRJQ0FUSU9OX1ND
SEVNRV9IVFRQX0RJR0VTVCwgUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVIVFRQ
RGlnZXN0KTsKQEAgLTg2LDYgKzk0LDI0IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9hdXRoZW50aWNh
dGlvbl9yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0CiB7CiAg
ICAgR09iamVjdENsYXNzKiBvYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHJlcXVlc3RDbGFz
cyk7CiAgICAgb2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSB3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVl
c3REaXNwb3NlOworCisgICAgLyoqCisgICAgICogV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0
OjpjYW5jZWxsZWQ6CisgICAgICogQHJlcXVlc3Q6IHRoZSAjV2ViS2l0QXV0aGVudGljYXRpb25S
ZXF1ZXN0CisgICAgICoKKyAgICAgKiBUaGlzIHNpZ25hbCBpcyBlbWl0dGVkIHdoZW4gdGhlIHVz
ZXIgYXV0aGVudGljYXRpb24gcmVxdWVzdCBpcworICAgICAqIGNhbmNlbGxlZC4gSXQgYWxsb3dz
IHRoZSBhcHBsaWNhdGlvbiB0byBkaXNtaXNzIGl0cyBhdXRoZW50aWNhdGlvbgorICAgICAqIGRp
YWxvZyBpbiBjYXNlIG9mIHBhZ2UgbG9hZCBmYWlsdXJlIGZvciBleGFtcGxlLgorICAgICAqCisg
ICAgICogU2luY2U6IDIuMgorICAgICAqLworICAgIHNpZ25hbHNbQ0FOQ0VMTEVEXSA9CisgICAg
ICAgIGdfc2lnbmFsX25ldygiY2FuY2VsbGVkIiwKKyAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NM
QVNTKG9iamVjdENsYXNzKSwKKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorICAgICAg
ICAgICAgMCwgMCwgMCwKKyAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hhbF9WT0lEX19WT0lE
LAorICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwogfQogCiBXZWJLaXRBdXRoZW50aWNhdGlv
blJlcXVlc3QqIHdlYmtpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdENyZWF0ZShBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgYm9vbCBwcml2YXRlQnJv
d3NpbmdFbmFibGVkKQpAQCAtMjg4LDQgKzMxNCw2IEBAIHZvaWQgd2Via2l0X2F1dGhlbnRpY2F0
aW9uX3JlcXVlc3RfY2FuY2VsKFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdCogcmVxdWVzdCkK
ICAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19BVVRIRU5USUNBVElPTl9SRVFVRVNUKHJl
cXVlc3QpKTsKIAogICAgIHJlcXVlc3QtPnByaXYtPmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5s
aXN0ZW5lcigpLT5jYW5jZWwoKTsKKworICAgIGdfc2lnbmFsX2VtaXQocmVxdWVzdCwgc2lnbmFs
c1tDQU5DRUxMRURdLCAwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvV2ViS2l0V2ViVmlldy5jcHAKaW5kZXggZGQ1ZThkZWU4MzRkMDhkMzczMGNhMzJlMDVi
ZWQ0MDNjZjdlNTNhNS4uNDQ2MjllY2ZmZGE2MjUzNmQ4OGFmMWNmNTgzMTYxOTU2N2FkOTUxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAKQEAgLTE5MCw2ICsxOTAsNyBAQCBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdQcml2YXRlIHsK
ICAgICB1bnNpZ25lZCBsb25nIGZhdmljb25DaGFuZ2VkSGFuZGxlcklEOwogCiAgICAgU25hcHNo
b3RSZXN1bHRzTWFwIHNuYXBzaG90UmVzdWx0c01hcDsKKyAgICBHUmVmUHRyPFdlYktpdEF1dGhl
bnRpY2F0aW9uUmVxdWVzdD4gYXV0aGVudGljYXRpb25SZXF1ZXN0OwogfTsKIAogc3RhdGljIGd1
aW50IHNpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpAQCAtNDM3LDcgKzQzOCw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdEaXNjb25uZWN0RmF2aWNvbkRhdGFiYXNlU2lnbmFsSGFu
ZGxlcnMoV2ViS2l0V2ViVmlldyoKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRXZWJWaWV3QXV0aGVu
dGljYXRlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVz
dCogcmVxdWVzdCkKIHsKICAgICBDcmVkZW50aWFsU3RvcmFnZU1vZGUgY3JlZGVudGlhbFN0b3Jh
Z2VNb2RlID0gd2Via2l0X2F1dGhlbnRpY2F0aW9uX3JlcXVlc3RfY2FuX3NhdmVfY3JlZGVudGlh
bHMocmVxdWVzdCkgPyBBbGxvd1BlcnNpc3RlbnRTdG9yYWdlIDogRGlzYWxsb3dQZXJzaXN0ZW50
U3RvcmFnZTsKLSAgICB3ZWJraXRXZWJWaWV3QmFzZUFkZEF1dGhlbnRpY2F0aW9uRGlhbG9nKFdF
QktJVF9XRUJfVklFV19CQVNFKHdlYlZpZXcpLCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05l
dyhyZXF1ZXN0LCBjcmVkZW50aWFsU3RvcmFnZU1vZGUsIHdlYlZpZXcpKTsKKyAgICB3ZWJraXRX
ZWJWaWV3QmFzZUFkZEF1dGhlbnRpY2F0aW9uRGlhbG9nKFdFQktJVF9XRUJfVklFV19CQVNFKHdl
YlZpZXcpLCB3ZWJraXRBdXRoZW50aWNhdGlvbkRpYWxvZ05ldyhyZXF1ZXN0LCBjcmVkZW50aWFs
U3RvcmFnZU1vZGUpKTsKIAogICAgIHJldHVybiBUUlVFOwogfQpAQCAtMTQzMCwxNSArMTQzMSwy
NCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKFdlYktpdFdlYlZpZXcq
IHdlYlZpZXcsIGJvb2wgaXNMb2FkaW5nKQogICAgIGdfb2JqZWN0X3RoYXdfbm90aWZ5KEdfT0JK
RUNUKHdlYlZpZXcpKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhl
bnRpY2F0aW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIGlmICghd2Vi
Vmlldy0+cHJpdi0+YXV0aGVudGljYXRpb25SZXF1ZXN0KQorICAgICAgICByZXR1cm47CisKKyAg
ICB3ZWJraXRfYXV0aGVudGljYXRpb25fcmVxdWVzdF9jYW5jZWwod2ViVmlldy0+cHJpdi0+YXV0
aGVudGljYXRpb25SZXF1ZXN0LmdldCgpKTsKKyAgICB3ZWJWaWV3LT5wcml2LT5hdXRoZW50aWNh
dGlvblJlcXVlc3QuY2xlYXIoKTsKK30KKwogc3RhdGljIHZvaWQgd2Via2l0V2ViVmlld0VtaXRM
b2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2
ZW50KQogewogICAgIGlmIChsb2FkRXZlbnQgPT0gV0VCS0lUX0xPQURfU1RBUlRFRCkgewogICAg
ICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZpZXcsIHRydWUpOwogICAgICAgICB3
ZWJraXRXZWJWaWV3V2F0Y2hGb3JDaGFuZ2VzSW5GYXZpY29uKHdlYlZpZXcpOwotICAgICAgICB3
ZWJraXRXZWJWaWV3QmFzZUNhbmNlbEF1dGhlbnRpY2F0aW9uRGlhbG9nKFdFQktJVF9XRUJfVklF
V19CQVNFKHdlYlZpZXcpKTsKKyAgICAgICAgd2Via2l0V2ViVmlld0NhbmNlbEF1dGhlbnRpY2F0
aW9uUmVxdWVzdCh3ZWJWaWV3KTsKICAgICB9IGVsc2UgaWYgKGxvYWRFdmVudCA9PSBXRUJLSVRf
TE9BRF9GSU5JU0hFRCkgewogICAgICAgICB3ZWJraXRXZWJWaWV3U2V0SXNMb2FkaW5nKHdlYlZp
ZXcsIGZhbHNlKTsKLSAgICAgICAgd2ViVmlldy0+cHJpdi0+d2FpdGluZ0Zvck1haW5SZXNvdXJj
ZSA9IGZhbHNlOworICAgICAgICB3ZWJraXRXZWJWaWV3Q2FuY2VsQXV0aGVudGljYXRpb25SZXF1
ZXN0KHdlYlZpZXcpOwogICAgICAgICB3ZWJraXRXZWJWaWV3RGlzY29ubmVjdE1haW5SZXNvdXJj
ZVJlc3BvbnNlQ2hhbmdlZFNpZ25hbEhhbmRsZXIod2ViVmlldyk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkod2ViVmlldyk7CkBAIC0xNDkyLDYgKzE1MDIsOCBA
QCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkQ2hhbmdlZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBX
ZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50KQogdm9pZCB3ZWJraXRXZWJWaWV3TG9hZEZhaWxlZChX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRMb2FkRXZlbnQgbG9hZEV2ZW50LCBjb25zdCBj
aGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKmVycm9yKQogewogICAgIHdlYmtpdFdlYlZpZXdTZXRJ
c0xvYWRpbmcod2ViVmlldywgZmFsc2UpOworICAgIHdlYmtpdFdlYlZpZXdDYW5jZWxBdXRoZW50
aWNhdGlvblJlcXVlc3Qod2ViVmlldyk7CisKICAgICBnYm9vbGVhbiByZXR1cm5WYWx1ZTsKICAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbTE9BRF9GQUlMRURdLCAwLCBsb2FkRXZl
bnQsIGZhaWxpbmdVUkksIGVycm9yLCAmcmV0dXJuVmFsdWUpOwogICAgIGdfc2lnbmFsX2VtaXQo
d2ViVmlldywgc2lnbmFsc1tMT0FEX0NIQU5HRURdLCAwLCBXRUJLSVRfTE9BRF9GSU5JU0hFRCk7
CkBAIC0xNTAwLDYgKzE1MTIsNyBAQCB2b2lkIHdlYmtpdFdlYlZpZXdMb2FkRmFpbGVkKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIFdlYktpdExvYWRFdmVudCBsb2FkRXZlbnQsCiB2b2lkIHdlYmtp
dFdlYlZpZXdMb2FkRmFpbGVkV2l0aFRMU0Vycm9ycyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBj
b25zdCBjaGFyKiBmYWlsaW5nVVJJLCBHRXJyb3IgKmVycm9yLCBHVGxzQ2VydGlmaWNhdGVGbGFn
cyB0bHNFcnJvcnMsIEdUbHNDZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiB7CiAgICAgd2Via2l0
V2ViVmlld1NldElzTG9hZGluZyh3ZWJWaWV3LCBmYWxzZSk7CisgICAgd2Via2l0V2ViVmlld0Nh
bmNlbEF1dGhlbnRpY2F0aW9uUmVxdWVzdCh3ZWJWaWV3KTsKIAogICAgIFdlYktpdFRMU0Vycm9y
c1BvbGljeSB0bHNFcnJvcnNQb2xpY3kgPSB3ZWJraXRfd2ViX2NvbnRleHRfZ2V0X3Rsc19lcnJv
cnNfcG9saWN5KHdlYlZpZXctPnByaXYtPmNvbnRleHQpOwogICAgIGlmICh0bHNFcnJvcnNQb2xp
Y3kgPT0gV0VCS0lUX1RMU19FUlJPUlNfUE9MSUNZX0ZBSUwpIHsKQEAgLTE3ODYsOSArMTc5OSw5
IEBAIHZvaWQgd2Via2l0V2ViVmlld1N1Ym1pdEZvcm1SZXF1ZXN0KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcsIFdlYktpdEZvcm1TdWJtaXNzaW9uCiB2b2lkIHdlYmtpdFdlYlZpZXdIYW5kbGVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5KiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKIHsKICAgICBnYm9vbGVh
biBwcml2YXRlQnJvd3NpbmdFbmFibGVkID0gd2Via2l0X3NldHRpbmdzX2dldF9lbmFibGVfcHJp
dmF0ZV9icm93c2luZyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpKTsKLSAg
ICBHUmVmUHRyPFdlYktpdEF1dGhlbnRpY2F0aW9uUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0R1Jl
Zih3ZWJraXRBdXRoZW50aWNhdGlvblJlcXVlc3RDcmVhdGUoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIHByaXZhdGVCcm93c2luZ0VuYWJsZWQpKTsKKyAgICB3ZWJWaWV3LT5wcml2LT5hdXRoZW50
aWNhdGlvblJlcXVlc3QgPSBhZG9wdEdSZWYod2Via2l0QXV0aGVudGljYXRpb25SZXF1ZXN0Q3Jl
YXRlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBwcml2YXRlQnJvd3NpbmdFbmFibGVkKSk7CiAg
ICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWdu
YWxzW0FVVEhFTlRJQ0FURV0sIDAsIHJlcXVlc3QuZ2V0KCksICZyZXR1cm5WYWx1ZSk7CisgICAg
Z19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW0FVVEhFTlRJQ0FURV0sIDAsIHdlYlZpZXct
PnByaXYtPmF1dGhlbnRpY2F0aW9uUmVxdWVzdC5nZXQoKSwgJnJldHVyblZhbHVlKTsKIH0KIAog
dm9pZCB3ZWJraXRXZWJWaWV3SW5zZWN1cmVDb250ZW50RGV0ZWN0ZWQoV2ViS2l0V2ViVmlldyog
d2ViVmlldywgV2ViS2l0SW5zZWN1cmVDb250ZW50RXZlbnQgdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAppbmRl
eCAxYjZiOTQwNzFlNDQ3NGZlY2IwYzUxYWZjNGU3YTE2MGRjZTBmNjFmLi5hMTIyZjRkYTM3YzU5
MzMxODhkNmJjODQ4NTJlYWUwMmU0MTI2NDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCkBAIC0yOTgsMTMgKzI5
OCw2IEBAIHZvaWQgd2Via2l0V2ViVmlld0Jhc2VBZGRBdXRoZW50aWNhdGlvbkRpYWxvZyhXZWJL
aXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIEd0CiAgICAgZ3RrX3dpZGdldF9xdWV1ZV9kcmF3
KEdUS19XSURHRVQod2ViVmlld0Jhc2UpKTsKIH0KIAotdm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNh
bmNlbEF1dGhlbnRpY2F0aW9uRGlhbG9nKFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJWaWV3QmFzZSkK
LXsKLSAgICBXZWJLaXRXZWJWaWV3QmFzZVByaXZhdGUqIHByaXYgPSB3ZWJWaWV3QmFzZS0+cHJp
djsKLSAgICBpZiAocHJpdi0+YXV0aGVudGljYXRpb25EaWFsb2cpCi0gICAgICAgIGd0a193aWRn
ZXRfZGVzdHJveShwcml2LT5hdXRoZW50aWNhdGlvbkRpYWxvZyk7Ci19Ci0KIHZvaWQgd2Via2l0
V2ViVmlld0Jhc2VBZGRXZWJJbnNwZWN0b3IoV2ViS2l0V2ViVmlld0Jhc2UqIHdlYlZpZXdCYXNl
LCBHdGtXaWRnZXQqIGluc3BlY3RvcikKIHsKICAgICB3ZWJWaWV3QmFzZS0+cHJpdi0+aW5zcGVj
dG9yVmlldyA9IGluc3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAppbmRleCAyOGEwOGYz
MDIxMzM5Zjc4NTAyN2I4NzBmZTQ3NTlhNjM4ZjNmYWNhLi43YTUzMTA0YzEzOGJhY2QxOTEzZTU2
Y2IzZmJkOGRkZGU1YmUzMjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCkBAIC0xMjQ4LDIw
ICsxMjQ4LDI4IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBzdGF0aWMgaW50IGF1dGhlbnRpY2F0
aW9uUmV0cmllczsKKyAgICBzdGF0aWMgYm9vbCBhdXRoZW50aWNhdGlvbkNhbmNlbGxlZFJlY2Vp
dmVkOwogCiAgICAgdm9pZCBsb2FkVVJJKGNvbnN0IGNoYXIqIHVyaSkKICAgICB7CiAgICAgICAg
IC8vIFJlc2V0IHRoZSByZXRyeSBjb3VudCBvZiB0aGUgZmFrZSBzZXJ2ZXIgd2hlbiBhIHBhZ2Ug
aXMgbG9hZGVkLgogICAgICAgICBhdXRoZW50aWNhdGlvblJldHJpZXMgPSAwOworICAgICAgICBh
dXRoZW50aWNhdGlvbkNhbmNlbGxlZFJlY2VpdmVkID0gZmFsc2U7CiAgICAgICAgIExvYWRUcmFj
a2luZ1Rlc3Q6OmxvYWRVUkkodXJpKTsKICAgICB9CiAKICAgICBzdGF0aWMgZ2Jvb2xlYW4gcnVu
QXV0aGVudGljYXRpb25DYWxsYmFjayhXZWJLaXRXZWJWaWV3KiwgV2ViS2l0QXV0aGVudGljYXRp
b25SZXF1ZXN0KiByZXF1ZXN0LCBBdXRoZW50aWNhdGlvblRlc3QqIHRlc3QpCiAgICAgeworICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KHJlcXVlc3QsICJjYW5jZWxsZWQiLCBHX0NBTExCQUNLKGF1
dGhlbnRpY2F0aW9uQ2FuY2VsbGVkQ2FsbGJhY2spLCB0ZXN0KTsKICAgICAgICAgdGVzdC0+cnVu
QXV0aGVudGljYXRpb24ocmVxdWVzdCk7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIAor
ICAgIHN0YXRpYyB2b2lkIGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkQ2FsbGJhY2soV2ViS2l0QXV0
aGVudGljYXRpb25SZXF1ZXN0KiwgQXV0aGVudGljYXRpb25UZXN0KikKKyAgICB7CisgICAgICAg
IGF1dGhlbnRpY2F0aW9uQ2FuY2VsbGVkUmVjZWl2ZWQgPSB0cnVlOworICAgIH0KKwogICAgIHZv
aWQgcnVuQXV0aGVudGljYXRpb24oV2ViS2l0QXV0aGVudGljYXRpb25SZXF1ZXN0KiByZXF1ZXN0
KQogICAgIHsKICAgICAgICAgYXNzZXJ0T2JqZWN0SXNEZWxldGVkV2hlblRlc3RGaW5pc2hlcyhH
X09CSkVDVChyZXF1ZXN0KSk7CkBAIC0xMjgwLDYgKzEyODgsNyBAQCBwcml2YXRlOgogfTsKIAog
aW50IEF1dGhlbnRpY2F0aW9uVGVzdDo6YXV0aGVudGljYXRpb25SZXRyaWVzID0gMDsKK2Jvb2wg
QXV0aGVudGljYXRpb25UZXN0OjphdXRoZW50aWNhdGlvbkNhbmNlbGxlZFJlY2VpdmVkID0gZmFs
c2U7CiAKIHN0YXRpYyBjb25zdCBjaGFyIGF1dGhUZXN0VXNlcm5hbWVbXSA9ICJ1c2VybmFtZSI7
CiBzdGF0aWMgY29uc3QgY2hhciBhdXRoVGVzdFBhc3N3b3JkW10gPSAicGFzc3dvcmQiOwpAQCAt
MTMyNSw2ICsxMzM0LDIzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25D
YW5jZWwoQXV0aGVudGljYXRpb25UZXN0KiB0ZXN0LCBnY29uc3Rwb2luCiAgICAgZ19hc3NlcnRf
ZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJVF9O
RVRXT1JLX0VSUk9SX0NBTkNFTExFRCk7CiB9CiAKK3N0YXRpYyB2b2lkIHRlc3RXZWJWaWV3QXV0
aGVudGljYXRpb25Mb2FkQ2FuY2VsbGVkKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0
cG9pbnRlcikKK3sKKyAgICB0ZXN0LT5sb2FkVVJJKGtTZXJ2ZXItPmdldFVSSUZvclBhdGgoIi9h
dXRoLXRlc3QuaHRtbCIpLmRhdGEoKSk7CisgICAgdGVzdC0+d2FpdEZvckF1dGhlbnRpY2F0aW9u
UmVxdWVzdCgpOworICAgIHdlYmtpdF93ZWJfdmlld19zdG9wX2xvYWRpbmcodGVzdC0+bV93ZWJW
aWV3KTsKKyAgICAvLyBFeHBlY3QgZW1wdHkgcGFnZS4KKyAgICB0ZXN0LT53YWl0VW50aWxMb2Fk
RmluaXNoZWQoKTsKKyAgICBnX2Fzc2VydCh0ZXN0LT5hdXRoZW50aWNhdGlvbkNhbmNlbGxlZFJl
Y2VpdmVkKTsKKworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHMuc2l6ZSgp
LCA9PSwgMyk7CisgICAgZ19hc3NlcnRfY21waW50KHRlc3QtPm1fbG9hZEV2ZW50c1swXSwgPT0s
IExvYWRUcmFja2luZ1Rlc3Q6OlByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQpOworICAgIGdfYXNzZXJ0
X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVudHNbMV0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpQcm92
aXNpb25hbExvYWRGYWlsZWQpOworICAgIGdfYXNzZXJ0X2NtcGludCh0ZXN0LT5tX2xvYWRFdmVu
dHNbMl0sID09LCBMb2FkVHJhY2tpbmdUZXN0OjpMb2FkRmluaXNoZWQpOworCisgICAgZ19hc3Nl
cnRfZXJyb3IodGVzdC0+bV9lcnJvci5nZXQoKSwgV0VCS0lUX05FVFdPUktfRVJST1IsIFdFQktJ
VF9ORVRXT1JLX0VSUk9SX0NBTkNFTExFRCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJWaWV3
QXV0aGVudGljYXRpb25GYWlsdXJlKEF1dGhlbnRpY2F0aW9uVGVzdCogdGVzdCwgZ2NvbnN0cG9p
bnRlcikKIHsKICAgICAvLyBUZXN0IGF1dGhlbnRpY2F0aW9uIGZhaWx1cmVzLgpAQCAtMTQ3NCw2
ICsxNTAwLDcgQEAgdm9pZCBiZWZvcmVBbGwoKQogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAicGFnZS12aXNpYmlsaXR5IiwgdGVzdFdlYlZpZXdQYWdlVmlzaWJpbGl0eSk7
CiAgICAgQXV0aGVudGljYXRpb25UZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAiYXV0aGVudGlj
YXRpb24tcmVxdWVzdCIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25SZXF1ZXN0KTsKICAgICBB
dXRoZW50aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1j
YW5jZWwiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uQ2FuY2VsKTsKKyAgICBBdXRoZW50aWNh
dGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1sb2FkLWNhbmNl
bGxlZCIsIHRlc3RXZWJWaWV3QXV0aGVudGljYXRpb25Mb2FkQ2FuY2VsbGVkKTsKICAgICBBdXRo
ZW50aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1mYWls
dXJlIiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvbkZhaWx1cmUpOwogICAgIEF1dGhlbnRpY2F0
aW9uVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImF1dGhlbnRpY2F0aW9uLW5vLWNyZWRlbnRp
YWwiLCB0ZXN0V2ViVmlld0F1dGhlbnRpY2F0aW9uTm9DcmVkZW50aWFsKTsKICAgICBBdXRoZW50
aWNhdGlvblRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJhdXRoZW50aWNhdGlvbi1zdG9yYWdl
IiwgdGVzdFdlYlZpZXdBdXRoZW50aWNhdGlvblN0b3JhZ2UpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>