<?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>110463</bug_id>
          
          <creation_ts>2013-02-21 06:25:15 -0800</creation_ts>
          <short_desc>[WK2][EFL] WebView: Add callbacks to the WKViewClient to handle page viewport update</short_desc>
          <delta_ts>2013-05-10 15:08:08 -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>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>114593</dependson>
          <blocked>115871</blocked>
    
    <blocked>107657</blocked>
    
    <blocked>107662</blocked>
    
    <blocked>110741</blocked>
    
    <blocked>111543</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>abecsi</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>jesus</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>luciano.wolf</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838377</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-21 06:25:15 -0800</bug_when>
    <thetext>SSIA.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839474</commentid>
    <comment_count>1</comment_count>
      <attachid>189748</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-22 05:13:30 -0800</bug_when>
    <thetext>Created attachment 189748
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839501</commentid>
    <comment_count>2</comment_count>
      <attachid>189748</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-22 05:39:26 -0800</bug_when>
    <thetext>Comment on attachment 189748
WIP

Looks nice... im not sure whether we should use these names or the naming from css device adapt spec... scale seems nicer though than zoom as the spec uses</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839526</commentid>
    <comment_count>3</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-22 05:57:22 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 189748 [details])
&gt; Looks nice... im not sure whether we should use these names or the naming from css device adapt spec... scale seems nicer though than zoom as the spec uses

good point, I would align names in public apis with specs, maybe we should rename WebCore types accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839542</commentid>
    <comment_count>4</comment_count>
      <attachid>189765</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-22 06:28:53 -0800</bug_when>
    <thetext>Created attachment 189765
patch

Decided not to include WKViewportAttributes functions so far, as they are not used within this patch (will be used
when Page Viewport Controller is based on C API). In the interim we can figure out appropriate naming for these functions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>839543</commentid>
    <comment_count>5</comment_count>
      <attachid>189765</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-22 06:31:37 -0800</bug_when>
    <thetext>Comment on attachment 189765
patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>843239</commentid>
    <comment_count>6</comment_count>
      <attachid>189765</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-27 10:43:20 -0800</bug_when>
    <thetext>Comment on attachment 189765
patch

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

&gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:52
&gt;      WKViewPageDidChangeContentsSizeCallback          didChangeContentsSize;
&gt; +    WKViewPageDidChangeViewportAttributesCallback    didChangeViewportAttributes;

I am more and more confused by what is going on in EFL :(

What goes in view? What goes in page? Why are those two suddenly view callbacks?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844072</commentid>
    <comment_count>7</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-28 07:48:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 189765 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=189765&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/C/efl/WKView.h:52
&gt; &gt;      WKViewPageDidChangeContentsSizeCallback          didChangeContentsSize;
&gt; &gt; +    WKViewPageDidChangeViewportAttributesCallback    didChangeViewportAttributes;
&gt; 
&gt; I am more and more confused by what is going on in EFL :(
&gt; 
&gt; What goes in view? What goes in page? Why are those two suddenly view callbacks?

We want to keep WebView toolkit-agnostic and WKViewClient in general is needed
to provide a way for enabling EwkView handlers.

ViewportAttributes are calculated based on view size and view in many ways controls the viewport, so I think having didChangeViewportAttributes callback in WKViewClient is quite natural.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>844316</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-28 11:55:57 -0800</bug_when>
    <thetext>Wait what? What do you think a WebPage is then? And the PageUIClient?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>845055</commentid>
    <comment_count>9</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-03-01 04:22:32 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Wait what? What do you think a WebPage is then? And the PageUIClient?

Please correct me if I&apos;m wrong, in my understanding WebPage is what to be shown by WebView and PageUIClient is to provide UI-related activities required by  WebPage (like showing message box or setting a focus).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>872797</commentid>
    <comment_count>10</comment_count>
      <attachid>197269</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-10 08:10:50 -0700</bug_when>
    <thetext>Created attachment 197269
rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874481</commentid>
    <comment_count>11</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-04-12 05:33:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I am more and more confused by what is going on in EFL :(
&gt; 
&gt; What goes in view? What goes in page? Why are those two suddenly view callbacks?

Benjamin, this idea came from the way Nix decided to handle this sort of information. It is not only about being &quot;toolkit-agnostic&quot;, but also about being &quot;UX-agnostic&quot;. NIXView also gets the same callbacks (https://github.com/WebKitNix/webkitnix/blob/master/Source/WebKit2/UIProcess/API/nix/NIXView.h#L82) so the application can decide how it wants to handle viewport changes.

In our Minibrowser, for instance, we use this so we can handle &quot;gesture&quot;-scaling properly, etc. https://github.com/WebKitNix/webkitnix/blob/master/Tools/MiniBrowser/nix/main.cpp#L689

I&apos;m more than interested to hear your feedback on this.

(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; Wait what? What do you think a WebPage is then? And the PageUIClient?
&gt; 
&gt; Please correct me if I&apos;m wrong, in my understanding WebPage is what to be shown by WebView and PageUIClient is to provide UI-related activities required by  WebPage (like showing message box or setting a focus).

I&apos;m also interested to check if this is accurate or not. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874492</commentid>
    <comment_count>12</comment_count>
      <attachid>197269</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-12 06:09:02 -0700</bug_when>
    <thetext>Comment on attachment 197269
rebased

Clearing flags on attachment: 197269

Committed r148274: &lt;http://trac.webkit.org/changeset/148274&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>874493</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-12 06:09:06 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887625</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-10 14:36:55 -0700</bug_when>
    <thetext>This was a bad idea.

I am in favor of reverting this change. RAW viewport attribute should not be exposed. What should be exposed is the behavior computed with those attributes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887633</commentid>
    <comment_count>15</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-05-10 14:58:14 -0700</bug_when>
    <thetext>So far, Nix needs such viewport information on its API layer so the application can use that information to implement whatever is the way it wants to interact with the page. We don&apos;t use the PageViewportController as the other CoordinatedGraphics ports do.

However, currently WKViewClient is exposing a WKViewportAttribute which is useless for us without something like what I&apos;m proposing in https://bugs.webkit.org/show_bug.cgi?id=115871 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887635</commentid>
    <comment_count>16</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-05-10 15:03:52 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; So far, Nix needs such viewport information on its API layer so the application can use that information to implement whatever is the way it wants to interact with the page. We don&apos;t use the PageViewportController as the other CoordinatedGraphics ports do.
&gt; 
&gt; However, currently WKViewClient is exposing a WKViewportAttribute which is useless for us without something like what I&apos;m proposing in https://bugs.webkit.org/show_bug.cgi?id=115871 .

Let say I were to expose the way Transforms are applied to the API. That way each embedded could decide how to apply matrices to coordinates. Would you say it is a good idea?

This is how I see exposing viewport attribute. The input and computation should not matter for embedders and WebKit should be able to rely on deterministic properties given a certain input. Thus we should exposed the computed results, not a raw input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>887637</commentid>
    <comment_count>17</comment_count>
    <who name="Jesus Sanchez-Palencia">jesus</who>
    <bug_when>2013-05-10 15:08:08 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; So far, Nix needs such viewport information on its API layer so the application can use that information to implement whatever is the way it wants to interact with the page. We don&apos;t use the PageViewportController as the other CoordinatedGraphics ports do.
&gt; &gt; 
&gt; &gt; However, currently WKViewClient is exposing a WKViewportAttribute which is useless for us without something like what I&apos;m proposing in https://bugs.webkit.org/show_bug.cgi?id=115871 .
&gt; 
&gt; Let say I were to expose the way Transforms are applied to the API. That way each embedded could decide how to apply matrices to coordinates. Would you say it is a good idea?

Well, funny enough this is something that we also do indeed: https://github.com/WebKitNix/webkitnix/blob/master/Source/WebKit2/UIProcess/API/nix/NIXView.h#L103</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189748</attachid>
            <date>2013-02-22 05:13:30 -0800</date>
            <delta_ts>2013-02-22 06:28:53 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug110463_WIP</filename>
            <type>text/plain</type>
            <size>17818</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGExZTM4ODVjNmVkZjFmNTc5OWYzYTY2NmVjMmJkNDMxMmZkZGExOTEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIEZlYiAyMiAxNTowMzoxMCAyMDEzICswMjAwCgogICAgYnVnMTEwNDYzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCA3YzFjMGZkLi45ZDFiNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
Mjk3LDYgKzI5Nyw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViVUlD
bGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRB
dHRyaWJ1dGVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCkBAIC0zMzksNiArMzQwLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAKICAgICBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCmluZGV4IDhjMjQzZGIuLjgwMjZiN2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKQEAgLTEzNyw2ICsxMzcsNyBAQCB0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ByZWZlcmVuY2VzKiBXS1ByZWZlcmVuY2VzUmVm
OwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcm90ZWN0aW9uU3BhY2UqIFdLUHJvdGVj
dGlvblNwYWNlUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tUZXh0Q2hlY2tlciog
V0tUZXh0Q2hlY2tlclJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9u
KiBXS1ZpYnJhdGlvblJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlld3BvcnRB
dHRyaWJ1dGVzKiBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUg
dHlwZXMgKi8KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5o
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCmluZGV4IDVlY2ViNTYyLi42NDNk
MzVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJT2JqZWN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBAIC0xMDksNiArMTA5LDcgQEAgcHVi
bGljOgogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCiAgICAgICAgIFR5cGVUZXh0Q2hlY2tlciwK
ICAgICAgICAgVHlwZVZpYnJhdGlvbiwKKyAgICAgICAgVHlwZVZpZXdwb3J0QXR0cmlidXRlcywK
IAogICAgICAgICAvLyBCdW5kbGUgdHlwZXMKICAgICAgICAgVHlwZUJ1bmRsZSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAppbmRleCBkNTEzYjk2Li44MzBkZWI2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCkBAIC05Myw2
ICs5Myw3IEBAIGNsYXNzIFdlYlJlbmRlckxheWVyOwogY2xhc3MgV2ViUmVuZGVyT2JqZWN0Owog
Y2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKK2NsYXNzIFdl
YlZpZXdwb3J0QXR0cmlidXRlczsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXBwbGljYXRpb25D
YWNoZU1hbmFnZXJSZWYsIFdlYkFwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUHJveHkpCiBXS19BRERf
QVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eSkKQEAgLTEzNyw2ICsxMzgsNyBAQCBXS19BRERfQVBJX01BUFBJTkcoV0tS
ZW5kZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tSZW5k
ZXJPYmplY3RSZWYsIFdlYlJlbmRlck9iamVjdCkKIFdLX0FERF9BUElfTUFQUElORyhXS1RleHRD
aGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9BUElfTUFQUElORyhXS1ZpYnJhdGlv
blJlZiwgV2ViVmlicmF0aW9uUHJveHkpCitXS19BRERfQVBJX01BUFBJTkcoV0tWaWV3cG9ydEF0
dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKIFdLX0FERF9BUElfTUFQUElORyhX
S0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCiAKIC8qIEVudW0gY29udmVyc2lvbnMg
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0
QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9y
dEF0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMWMz
ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tW
aWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2xheW91dFNpemVp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBW
aWV3b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1ZpZXdwb3J0
QXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2ViVmll
d3BvcnRBdHRyaWJ1dGVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlE
IFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoV2Vi
Vmlld3BvcnRBdHRyaWJ1dGVzOjpBUElUeXBlKTsKK30KKworV0tTaXplIFdLVmlld3BvcnRBdHRy
aWJ1dGVzR2V0TGF5b3V0U2l6ZShXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiB2aWV3cG9ydEF0dHJp
YnV0ZXNSZWYpCit7CisgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNpemUgPSB0b0ltcGwodmlld3Bv
cnRBdHRyaWJ1dGVzUmVmKS0+b3JpZ2luYWxBdHRyaWJ1dGVzKCkubGF5b3V0U2l6ZTsKKyAgICBy
ZXR1cm4gV0tTaXplTWFrZShzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworfQorCitmbG9h
dCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dldEluaXRpYWxTY2FsZShXS1ZpZXdwb3J0QXR0cmlidXRl
c1JlZiB2aWV3cG9ydEF0dHJpYnV0ZXNSZWYpCit7CisgICAgcmV0dXJuIHRvSW1wbCh2aWV3cG9y
dEF0dHJpYnV0ZXNSZWYpLT5vcmlnaW5hbEF0dHJpYnV0ZXMoKS5pbml0aWFsU2NhbGU7Cit9CisK
K2Zsb2F0IFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0TWluaW11bVNjYWxlKFdLVmlld3BvcnRBdHRy
aWJ1dGVzUmVmIHZpZXdwb3J0QXR0cmlidXRlc1JlZikKK3sKKyAgICByZXR1cm4gdG9JbXBsKHZp
ZXdwb3J0QXR0cmlidXRlc1JlZiktPm9yaWdpbmFsQXR0cmlidXRlcygpLm1pbmltdW1TY2FsZTsK
K30KKworZmxvYXQgV0tWaWV3cG9ydEF0dHJpYnV0ZXNHZXRNYXhpbXVtU2NhbGUoV0tWaWV3cG9y
dEF0dHJpYnV0ZXNSZWYgdmlld3BvcnRBdHRyaWJ1dGVzUmVmKQoreworICAgIHJldHVybiB0b0lt
cGwodmlld3BvcnRBdHRyaWJ1dGVzUmVmKS0+b3JpZ2luYWxBdHRyaWJ1dGVzKCkubWF4aW11bVNj
YWxlOworfQorCitmbG9hdCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dldFVzZXJTY2FsYWJsZShXS1Zp
ZXdwb3J0QXR0cmlidXRlc1JlZiB2aWV3cG9ydEF0dHJpYnV0ZXNSZWYpCit7CisgICAgcmV0dXJu
IHRvSW1wbCh2aWV3cG9ydEF0dHJpYnV0ZXNSZWYpLT5vcmlnaW5hbEF0dHJpYnV0ZXMoKS51c2Vy
U2NhbGFibGU7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tWaWV3cG9ydEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmNjNzdhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBWaWV3b2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgV0tWaWV3cG9ydEF0dHJpYnV0ZXNfaAorI2RlZmluZSBXS1ZpZXdw
b3J0QXR0cmlidXRlc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUg
PFdlYktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dldFR5
cGVJRCgpOworCitXS19FWFBPUlQgV0tTaXplIFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0TGF5b3V0
U2l6ZShXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZik7CitXS19FWFBPUlQgZmxvYXQgV0tWaWV3cG9y
dEF0dHJpYnV0ZXNHZXRJbml0aWFsU2NhbGUoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYpOworV0tf
RVhQT1JUIGZsb2F0IFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0TWluaW11bVNjYWxlKFdLVmlld3Bv
cnRBdHRyaWJ1dGVzUmVmKTsKK1dLX0VYUE9SVCBmbG9hdCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dl
dE1heGltdW1TY2FsZShXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZik7CitXS19FWFBPUlQgZmxvYXQg
V0tWaWV3cG9ydEF0dHJpYnV0ZXNHZXRVc2VyU2NhbGFibGUoV0tWaWV3cG9ydEF0dHJpYnV0ZXNS
ZWYpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tWaWV3
cG9ydEF0dHJpYnV0ZXNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmgKaW5kZXggNzM0NTU2Ni4uODJlZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC00MCw2ICs0MCw3IEBAIGV4dGVybiAiQyIgewog
CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2
aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1ZpZXdQYWdlRGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzQ2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAKIHN0cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3Qg
V0tWaWV3Q2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDAKICAgICBXS1ZpZXdWaWV3TmVlZHNEaXNw
bGF5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgdmlld05lZWRzRGlzcGxheTsKICAgICBXS1Zp
ZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2sgICAgICAgICAgZGlkQ2hhbmdlQ29u
dGVudHNTaXplOworICAgIFdLVmlld1BhZ2VEaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXNDYWxs
YmFjayAgICBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXM7CiB9OwogdHlwZWRlZiBzdHJ1Y3Qg
V0tWaWV3Q2xpZW50IFdLVmlld0NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42NGI0YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWV3cG9ydEF0
dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZpZXdwb3J0QXR0cmlidXRl
czo6V2ViVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYgYXR0cmlidXRlcykKKyAgICA6IG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworfQorCitX
ZWJWaWV3cG9ydEF0dHJpYnV0ZXM6On5XZWJWaWV3cG9ydEF0dHJpYnV0ZXMoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJW
aWV3cG9ydEF0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
ZDU3MzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZp
ZXdwb3J0QXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IFZpZXdvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJWaWV3cG9ydEF0dHJpYnV0ZXNfaAorI2RlZmluZSBXZWJWaWV3cG9ydEF0
dHJpYnV0ZXNfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9W
aWV3cG9ydEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZp
ZXdwb3J0QXR0cmlidXRlczsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXdwb3J0QXR0
cmlidXRlcz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cmli
dXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld3BvcnRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJWaWV3cG9ydEF0
dHJpYnV0ZXMoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgb3Jp
Z2luYWxBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV2ViVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBUElUeXBlOyB9CisKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJWaWV3
cG9ydEF0dHJpYnV0ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0Ns
aWVudEVmbC5jcHAKaW5kZXggNzdmOGJmMy4uNjBlYzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw4ICsyNywxMSBAQAogI2lu
Y2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKIAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRl
ICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNpbmNs
dWRlICJXZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCIKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdD
YWxsYmFja3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTAsNiArNTMsMTcgQEAgdm9pZCBW
aWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6
ZSwgY29uc3Qgdm9pZCogY2wKICAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6
ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0KIAordm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFu
Z2VWaWV3cG9ydEF0dHJpYnV0ZXMoV0tWaWV3UmVmLCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiBh
dHRyaWJ1dGVzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3a1ZpZXcqIGV3a1Zp
ZXcgPSB0b0V3a1ZpZXcoY2xpZW50SW5mbyk7CisgICAgaWYgKFdLUGFnZVVzZUZpeGVkTGF5b3V0
KGV3a1ZpZXctPndrUGFnZSgpKSkgeworICAgICAgICAvLyBGSVhNRTogcGFnZVZpZXdwb3J0Q29u
dHJvbGxlciBzaG91bGQgYWNjZXB0IFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLgorICAgICAgICBl
d2tWaWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcyh0b0ltcGwoYXR0cmlidXRlcyktPm9yaWdpbmFsQXR0cmlidXRlcygpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKK30K
KwogVmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAgIDogbV92
aWV3KHZpZXcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Zp
ZXdDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5oCmluZGV4IDJlYmQzYTIuLjcxNmM3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvVmlld0NsaWVudEVmbC5oCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0
aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0IGFyZWEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShX
S1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdLVmlld1JlZiwgV0tWaWV3cG9ydEF0dHJp
YnV0ZXNSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgRXdrVmlldyogbV92aWV3
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDM3ZTQ5
NzkuLmJhMGVjZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApA
QCAtNTA2LDExICs1MDYsNyBAQCBGbG9hdFJlY3QgV2ViVmlldzo6Y29udmVydFRvVXNlclNwYWNl
KGNvbnN0IEZsb2F0UmVjdCYgZGV2aWNlUmVjdCkKIAogdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRy
KQogewotICAgIGlmIChtX3BhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAgICAgbV9ld2tW
aWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyhhdHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2V3a1ZpZXctPnNjaGVkdWxl
VXBkYXRlRGlzcGxheSgpOworICAgIG1fY2xpZW50LmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyh0aGlzLCBhdHRyKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3Q2xpZW50LmNwcAppbmRleCAwNWZjODBjLi4wNDRlZGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKQEAgLTI1LDggKzI1LDEx
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsNCArNTEsMTMgQEAgdm9pZCBXZWJWaWV3Q2xp
ZW50OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV2ViVmlldyogdmlldywgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUodG9BUEkodmlldyksIHRv
QVBJKHNpemUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJWaWV3Q2xpZW50
OjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoV2ViVmlldyogdmlldywgY29uc3QgVmlld3Bv
cnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
Vmlld3BvcnRBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxX
S1ZpZXdwb3J0QXR0cmlidXRlc1JlZj4gd2tBdHRyaWJ1dGVzID0gYWRvcHRXSyh0b0FQSShXZWJW
aWV3cG9ydEF0dHJpYnV0ZXM6OmNyZWF0ZShhdHRyaWJ1dGVzKS5sZWFrUmVmKCkpKTsKKyAgICBt
X2NsaWVudC5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXModG9BUEkodmlldyksIHdrQXR0cmli
dXRlcy5nZXQoKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaAppbmRl
eCBkNWU4MmRkLi4wYjVhZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXdDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBWaWV3cG9ydEF0dHJpYnV0ZXM7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBXZWJWaWV3Q2xp
ZW50OiBwdWJsaWMgQVBJQ2xpZW50PFdLVmlld0NsaWVudCwga1dLVmlld0NsaWVudEN1cnJlbnRW
ZXJzaW9uPgogcHVibGljOgogICAgIHZvaWQgdmlld05lZWRzRGlzcGxheShXZWJWaWV3KiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdl
YlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189765</attachid>
            <date>2013-02-22 06:28:53 -0800</date>
            <delta_ts>2013-04-10 08:10:50 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug110463</filename>
            <type>text/plain</type>
            <size>18787</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGVjNjVlZjJmNzE2MTc2MTUwYWYxOTM4N2QyMzY1MzkwODdiNDY3N2UKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
RnJpIEZlYiAyMiAxNjoyMDozMyAyMDEzICswMjAwCgogICAgYnVnMTEwNDYzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCA3YzFjMGZkLi45ZDFiNGJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
Mjk3LDYgKzI5Nyw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViVUlD
bGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRB
dHRyaWJ1dGVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCkBAIC0zMzksNiArMzQwLDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAKICAgICBVSVByb2Nl
c3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKICAgICBV
SVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDVmNzFjY2EuLmUxNmNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1
NCBAQAorMjAxMy0wMi0yMiAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFpbC5wb3pkbnlha292
QGludGVsLmNvbT4KKworICAgICAgICBbV0syXVtFRkxdIFdlYlZpZXc6IEFkZCBjYWxsYmFja3Mg
dG8gdGhlIFdLVmlld0NsaWVudCB0byBoYW5kbGUgcGFnZSB2aWV3cG9ydCB1cGRhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQ2MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL2Vm
bC9WaWV3Q2xpZW50RWZsLmg6CisgICAgICAgIChWaWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRD
aGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmll
d0NsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmRpZENoYW5nZVZp
ZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlld0NsaWVudC5oOgorCisgICAgICAgICAgICBBZGRlZCBkaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMgY2FsbGJhY2sgdG8gdGhlIFdLVmlld0NsaWVudCB0bworICAgICAgICAg
ICAgaGFuZGxlIHBhZ2Ugdmlld3BvcnQgdXBkYXRlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Jhc2UuaDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJT2JqZWN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJp
YnV0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0VHlwZUlE
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3cG9ydEF0dHJpYnV0ZXM6OldlYlZpZXdwb3J0
QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdwb3J0QXR0cmlidXRlczo6fldl
YlZpZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0
cmlidXRlcy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJWaWV3cG9y
dEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3cG9ydEF0dHJpYnV0ZXM6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdwb3J0QXR0cmlidXRlczo6b3JpZ2luYWxB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld3BvcnRBdHRyaWJ1dGVzOjp0eXBl
KToKKworICAgICAgICAgICAgQWRkZWQgV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYgLSBXSzIgQyBB
UEkgb2JqZWN0IHRoYXQgaXMgd3JhcHBpbmcgCisgICAgICAgICAgICBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgc3RydWN0dXJlIGFuZCBpcyBwYXNzZWQgaW4gZGlkQ2hhbmdlVmlld3BvcnRB
dHRyaWJ1dGVzCisgICAgICAgICAgICBXS1ZpZXdDbGllbnQgY2FsbGJhY2suCisKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWV3
Q2xpZW50RWZsOjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViS2l0
KToKKworICAgICAgICAgICAgQWRkZWQgaW1wbGVtZW50YWlvbiBvZiBkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXMgV0tWaWV3Q2xpZW50IAorICAgICAgICAgICAgY2FsbGJhY2sgc28gdGhhdCBl
eGlzdGluZyBFRkwgV0syIGZ1bnRpb25hbGl0eSBpcyBrZXB0LgorCisKIDIwMTMtMDItMjIgIEJh
bGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFlldCBhbm90aGVy
IHVucmV2aWV3ZWQgYnVpbGRmaXggYWZ0ZXIgcjE0MzcxNC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkv
Yy9XS0Jhc2UuaAppbmRleCA4YzI0M2RiLi44MDI2YjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQ
SS9jL1dLQmFzZS5oCkBAIC0xMzcsNiArMTM3LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3Bh
cXVlV0tQcmVmZXJlbmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLUHJvdGVjdGlvblNwYWNlKiBXS1Byb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7Cit0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmlidXRlcyogV0tWaWV3cG9ydEF0
dHJpYnV0ZXNSZWY7CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUElPYmplY3QuaAppbmRleCA1ZWNlYjU2Mi4uNjQzZDM1YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9B
UElPYmplY3QuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgVHlwZVByZWZl
cmVuY2VzLAogICAgICAgICBUeXBlVGV4dENoZWNrZXIsCiAgICAgICAgIFR5cGVWaWJyYXRpb24s
CisgICAgICAgIFR5cGVWaWV3cG9ydEF0dHJpYnV0ZXMsCiAKICAgICAgICAgLy8gQnVuZGxlIHR5
cGVzCiAgICAgICAgIFR5cGVCdW5kbGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tBUElDYXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgKaW5kZXggZDUxM2I5Ni4uODMwZGViNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApAQCAtOTMsNiArOTMsNyBAQCBjbGFzcyBXZWJSZW5k
ZXJMYXllcjsKIGNsYXNzIFdlYlJlbmRlck9iamVjdDsKIGNsYXNzIFdlYlRleHRDaGVja2VyOwog
Y2xhc3MgV2ViVmlicmF0aW9uUHJveHk7CitjbGFzcyBXZWJWaWV3cG9ydEF0dHJpYnV0ZXM7CiAK
IFdLX0FERF9BUElfTUFQUElORyhXS0FwcGxpY2F0aW9uQ2FjaGVNYW5hZ2VyUmVmLCBXZWJBcHBs
aWNhdGlvbkNhY2hlTWFuYWdlclByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCkBAIC0xMzcs
NiArMTM4LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyTGF5ZXJSZWYsIFdlYlJlbmRl
ckxheWVyKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLUmVuZGVyT2JqZWN0UmVmLCBXZWJSZW5kZXJP
YmplY3QpCiBXS19BRERfQVBJX01BUFBJTkcoV0tUZXh0Q2hlY2tlclJlZiwgV2ViVGV4dENoZWNr
ZXIpCiBXS19BRERfQVBJX01BUFBJTkcoV0tWaWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5
KQorV0tfQUREX0FQSV9NQVBQSU5HKFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9y
dEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tJbnNwZWN0b3JSZWYsIFdlYkluc3Bl
Y3RvclByb3h5KQogCiAvKiBFbnVtIGNvbnZlcnNpb25zICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzBhZjU2Ci0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApA
QCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEludGVsIENvcnBvcmF0
aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dsYXlvdXRTaXplaW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3QgVmlld29mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tWaWV3cG9ydEF0dHJpYnV0ZXMuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1ZGUgIldlYlZpZXdwb3J0QXR0cmlidXRlcy5oIgorCit1
c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5cGVJRCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dl
dFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKFdlYlZpZXdwb3J0QXR0cmlidXRlczo6QVBJ
VHlwZSk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tW
aWV3cG9ydEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1Zp
ZXdwb3J0QXR0cmlidXRlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEy
NWIwOWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tWaWV3cG9ydEF0dHJpYnV0ZXMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEzIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBWaWV3b2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV0tWaWV3cG9ydEF0dHJpYnV0ZXNfaAorI2RlZmluZSBXS1ZpZXdwb3J0
QXR0cmlidXRlc19oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tHZW9tZXRyeS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgewor
I2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1ZpZXdwb3J0QXR0cmlidXRlc0dldFR5cGVJ
RCgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogV0tWaWV3
cG9ydEF0dHJpYnV0ZXNfaCAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwv
V0tWaWV3LmgKaW5kZXggNzM0NTU2Ni4uODJlZGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC00MCw2ICs0MCw3IEBAIGV4dGVybiAiQyIgewog
CiB0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiB0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2
aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQg
KCpXS1ZpZXdQYWdlRGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzQ2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAKIHN0cnVjdCBXS1ZpZXdDbGllbnQgewogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uOwpAQCAtNDgsNiArNDksNyBAQCBzdHJ1Y3Qg
V0tWaWV3Q2xpZW50IHsKICAgICAvLyBWZXJzaW9uIDAKICAgICBXS1ZpZXdWaWV3TmVlZHNEaXNw
bGF5Q2FsbGJhY2sgICAgICAgICAgICAgICAgICAgdmlld05lZWRzRGlzcGxheTsKICAgICBXS1Zp
ZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2sgICAgICAgICAgZGlkQ2hhbmdlQ29u
dGVudHNTaXplOworICAgIFdLVmlld1BhZ2VEaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXNDYWxs
YmFjayAgICBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXM7CiB9OwogdHlwZWRlZiBzdHJ1Y3Qg
V0tWaWV3Q2xpZW50IFdLVmlld0NsaWVudDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi42NGI0YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMyBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWV3cG9ydEF0
dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1dlYlZpZXdwb3J0QXR0cmlidXRl
czo6V2ViVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYgYXR0cmlidXRlcykKKyAgICA6IG1fYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworfQorCitX
ZWJWaWV3cG9ydEF0dHJpYnV0ZXM6On5XZWJWaWV3cG9ydEF0dHJpYnV0ZXMoKQoreworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJW
aWV3cG9ydEF0dHJpYnV0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5j
ZDU3MzJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZp
ZXdwb3J0QXR0cmlidXRlcy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IFZpZXdvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBXZWJWaWV3cG9ydEF0dHJpYnV0ZXNfaAorI2RlZmluZSBXZWJWaWV3cG9ydEF0
dHJpYnV0ZXNfaAorCisjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9W
aWV3cG9ydEFyZ3VtZW50cy5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMgOiBwdWJsaWMgQVBJ
T2JqZWN0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZVZp
ZXdwb3J0QXR0cmlidXRlczsKKworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlZpZXdwb3J0QXR0
cmlidXRlcz4gY3JlYXRlKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cmli
dXRlcykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViVmlld3BvcnRBdHRy
aWJ1dGVzKGF0dHJpYnV0ZXMpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5XZWJWaWV3cG9ydEF0
dHJpYnV0ZXMoKTsKKworICAgIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgb3Jp
Z2luYWxBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9hdHRyaWJ1dGVzOyB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgV2ViVmlld3BvcnRBdHRyaWJ1dGVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXR0cmlidXRlcyYpOworCisgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBBUElUeXBlOyB9CisKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMgbV9hdHRy
aWJ1dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJWaWV3
cG9ydEF0dHJpYnV0ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0Ns
aWVudEVmbC5jcHAKaW5kZXggNzdmOGJmMy4uNjBlYzA4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0yNyw4ICsyNywxMSBAQAogI2lu
Y2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKIAogI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRl
ICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiV0tWaWV3LmgiCiAKKyNpbmNs
dWRlICJXZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCIKKwogdXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdD
YWxsYmFja3M7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNTAsNiArNTMsMTcgQEAgdm9pZCBW
aWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6
ZSwgY29uc3Qgdm9pZCogY2wKICAgICBld2tWaWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6
ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKIH0KIAordm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFu
Z2VWaWV3cG9ydEF0dHJpYnV0ZXMoV0tWaWV3UmVmLCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiBh
dHRyaWJ1dGVzLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEV3a1ZpZXcqIGV3a1Zp
ZXcgPSB0b0V3a1ZpZXcoY2xpZW50SW5mbyk7CisgICAgaWYgKFdLUGFnZVVzZUZpeGVkTGF5b3V0
KGV3a1ZpZXctPndrUGFnZSgpKSkgeworICAgICAgICAvLyBGSVhNRTogcGFnZVZpZXdwb3J0Q29u
dHJvbGxlciBzaG91bGQgYWNjZXB0IFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLgorICAgICAgICBl
d2tWaWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcyh0b0ltcGwoYXR0cmlidXRlcyktPm9yaWdpbmFsQXR0cmlidXRlcygpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBld2tWaWV3LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKK30K
KwogVmlld0NsaWVudEVmbDo6Vmlld0NsaWVudEVmbChFd2tWaWV3KiB2aWV3KQogICAgIDogbV92
aWV3KHZpZXcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Zp
ZXdDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5oCmluZGV4IDJlYmQzYTIuLjcxNmM3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvVmlld0NsaWVudEVmbC5oCkBAIC00OSw2ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgc3Rh
dGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0
aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0IGFyZWEsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShX
S1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKFdLVmlld1JlZiwgV0tWaWV3cG9ydEF0dHJp
YnV0ZXNSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiAgICAgRXdrVmlldyogbV92aWV3
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDJhM2Fh
OWMuLjdhNWVmZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApA
QCAtNTA3LDExICs1MDcsNyBAQCBGbG9hdFJlY3QgV2ViVmlldzo6Y29udmVydFRvVXNlclNwYWNl
KGNvbnN0IEZsb2F0UmVjdCYgZGV2aWNlUmVjdCkKIAogdm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VW
aWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRy
KQogewotICAgIGlmIChtX3BhZ2UtPnVzZUZpeGVkTGF5b3V0KCkpIHsKLSAgICAgICAgbV9ld2tW
aWV3LT5wYWdlVmlld3BvcnRDb250cm9sbGVyKCktPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyhhdHRyKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBtX2V3a1ZpZXctPnNjaGVkdWxl
VXBkYXRlRGlzcGxheSgpOworICAgIG1fY2xpZW50LmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRl
cyh0aGlzLCBhdHRyKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJWaWV3Q2xpZW50LmNwcAppbmRleCAwNWZjODBjLi4wNDRlZGQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5jcHAKQEAgLTI1LDggKzI1LDEx
IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJWaWV3Q2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmgiCiAKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKKyNpbmNsdWRlICJXS0Jhc2UuaCIKKyNpbmNsdWRlICJXS1JldGFpblB0ci5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNDgsNCArNTEsMTMgQEAgdm9pZCBXZWJWaWV3Q2xp
ZW50OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoV2ViVmlldyogdmlldywgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUodG9BUEkodmlldyksIHRv
QVBJKHNpemUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsKIH0KIAordm9pZCBXZWJWaWV3Q2xpZW50
OjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoV2ViVmlldyogdmlldywgY29uc3QgVmlld3Bv
cnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVzKQoreworICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdl
Vmlld3BvcnRBdHRyaWJ1dGVzKQorICAgICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxX
S1ZpZXdwb3J0QXR0cmlidXRlc1JlZj4gd2tBdHRyaWJ1dGVzID0gYWRvcHRXSyh0b0FQSShXZWJW
aWV3cG9ydEF0dHJpYnV0ZXM6OmNyZWF0ZShhdHRyaWJ1dGVzKS5sZWFrUmVmKCkpKTsKKyAgICBt
X2NsaWVudC5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXModG9BUEkodmlldyksIHdrQXR0cmli
dXRlcy5nZXQoKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xp
ZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaAppbmRl
eCBkNWU4MmRkLi4wYjVhZDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXdDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXdDbGllbnQuaApAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSW50UmVjdDsKIGNsYXNzIEludFNpemU7CitjbGFzcyBWaWV3cG9ydEF0dHJpYnV0ZXM7CiB9
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDIsNiArNDMsNyBAQCBjbGFzcyBXZWJWaWV3Q2xp
ZW50OiBwdWJsaWMgQVBJQ2xpZW50PFdLVmlld0NsaWVudCwga1dLVmlld0NsaWVudEN1cnJlbnRW
ZXJzaW9uPgogcHVibGljOgogICAgIHZvaWQgdmlld05lZWRzRGlzcGxheShXZWJWaWV3KiwgY29u
c3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKFdl
YlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3
cG9ydEF0dHJpYnV0ZXMoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRl
cyYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>197269</attachid>
            <date>2013-04-10 08:10:50 -0700</date>
            <delta_ts>2013-04-12 06:09:01 -0700</delta_ts>
            <desc>rebased</desc>
            <filename>bug110463_v2</filename>
            <type>text/plain</type>
            <size>18943</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGZiMjVjNjM1ZTM0M2RkZDBjNzVlMDc0MjMyZTcyMzI5ZDY5ODMzMWQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
V2VkIEFwciAxMCAxNzowODowOCAyMDEzICswMzAwCgogICAgYnVnMTEwNDYzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxp
c3RzLnR4dAppbmRleCA0MmZhNzdkLi5lYmQxZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dApAQCAt
MzAxLDYgKzMwMSw3IEBAIHNldChXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvV2ViVUlD
bGllbnQuY3BwCiAgICAgVUlQcm9jZXNzL1dlYlZpYnJhdGlvblByb3ZpZGVyLmNwcAogICAgIFVJ
UHJvY2Vzcy9XZWJWaWJyYXRpb25Qcm94eS5jcHAKKyAgICBVSVByb2Nlc3MvV2ViVmlld3BvcnRB
dHRyaWJ1dGVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1h
bmFnZXIuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Y3BwCkBAIC0zNDMsNiArMzQ0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvQy9XS1Jlc291cmNlQ2FjaGVNYW5hZ2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1RleHRDaGVja2VyLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKKyAg
ICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAKICAgICBVSVByb2Nl
c3MvQVBJL0Nvb3JkaW5hdGVkR3JhcGhpY3MvV0tDb29yZGluYXRlZFNjZW5lLmNwcAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggNzY0MzdhOC4uZjM5ZDI0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisy
MDEzLTA0LTEwICBNaWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwu
Y29tPgorCisgICAgICAgIFtXSzJdW0VGTF0gV2ViVmlldzogQWRkIGNhbGxiYWNrcyB0byB0aGUg
V0tWaWV3Q2xpZW50IHRvIGhhbmRsZSBwYWdlIHZpZXdwb3J0IHVwZGF0ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNDYzCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdD
bGllbnRFZmwuaDoKKyAgICAgICAgKFZpZXdDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlkQ2hhbmdlVmlld3BvcnRB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3Q2xpZW50Lmg6CisKKyAgICAgICAgICAgIEFkZGVkIGRpZENoYW5nZVZpZXdwb3J0QXR0
cmlidXRlcyBjYWxsYmFjayB0byB0aGUgV0tWaWV3Q2xpZW50IHRvCisgICAgICAgICAgICBoYW5k
bGUgcGFnZSB2aWV3cG9ydCB1cGRhdGVzLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNoYXJlZC9BUElPYmpl
Y3QuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tWaWV3cG9ydEF0dHJpYnV0ZXNHZXRUeXBlSUQpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlZpZXdwb3J0QXR0cmlidXRlczo6V2ViVmlld3BvcnRBdHRyaWJ1
dGVzKToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld3BvcnRBdHRyaWJ1dGVzOjp+V2ViVmlld3Bv
cnRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1dGVz
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlZpZXdwb3J0QXR0cmli
dXRlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdwb3J0QXR0cmlidXRlczo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld3BvcnRBdHRyaWJ1dGVzOjpvcmlnaW5hbEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3cG9ydEF0dHJpYnV0ZXM6OnR5cGUpOgorCisg
ICAgICAgICAgICBBZGRlZCBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiAtIFdLMiBDIEFQSSBvYmpl
Y3QgdGhhdCBpcyB3cmFwcGluZyAKKyAgICAgICAgICAgIFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyBzdHJ1Y3R1cmUgYW5kIGlzIHBhc3NlZCBpbiBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0
ZXMKKyAgICAgICAgICAgIFdLVmlld0NsaWVudCBjYWxsYmFjay4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRF
Zmw6OmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJLaXQpOgorCisg
ICAgICAgICAgICBBZGRlZCBpbXBsZW1lbnRhaW9uIG9mIGRpZENoYW5nZVZpZXdwb3J0QXR0cmli
dXRlcyBXS1ZpZXdDbGllbnQgCisgICAgICAgICAgICBjYWxsYmFjayBzbyB0aGF0IGV4aXN0aW5n
IEVGTCBXSzIgZnVudGlvbmFsaXR5IGlzIGtlcHQuCisKKwogMjAxMy0wNC0xMCAgQW50b24gT2J6
aGlyb3YgIDxhLm9iemhpcm92QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtHVEtdIEFkZCBzdXBw
b3J0IGZvciBQYWdlIFZpc2liaWxpdHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9BUEkvYy9XS0Jhc2UuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaApp
bmRleCBkN2IxNWQwLi41NDBhNzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
QVBJL2MvV0tCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5o
CkBAIC0xMzMsNiArMTMzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tQcmVmZXJl
bmNlcyogV0tQcmVmZXJlbmNlc1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLUHJv
dGVjdGlvblNwYWNlKiBXS1Byb3RlY3Rpb25TcGFjZVJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLVGV4dENoZWNrZXIqIFdLVGV4dENoZWNrZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25SZWY7Cit0eXBlZGVmIGNvbnN0IHN0
cnVjdCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmlidXRlcyogV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWY7
CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9BUElPYmplY3QuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUElPYmplY3Qu
aAppbmRleCA5NzEwODIyLi5hMjI1ZTJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvQVBJT2JqZWN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSU9iamVjdC5oCkBA
IC0xMDksNiArMTA5LDcgQEAgcHVibGljOgogICAgICAgICBUeXBlUHJlZmVyZW5jZXMsCiAgICAg
ICAgIFR5cGVUZXh0Q2hlY2tlciwKICAgICAgICAgVHlwZVZpYnJhdGlvbiwKKyAgICAgICAgVHlw
ZVZpZXdwb3J0QXR0cmlidXRlcywKIAogICAgICAgICAvLyBCdW5kbGUgdHlwZXMKICAgICAgICAg
VHlwZUJ1bmRsZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaApp
bmRleCBhYzE0OWU2Li5iMWJlNzg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tBUElDYXN0LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQVBJQ2FzdC5oCkBAIC05NCw2ICs5NCw3IEBAIGNsYXNzIFdlYlJlbmRlckxheWVyOwogY2xh
c3MgV2ViUmVuZGVyT2JqZWN0OwogY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJWaWJy
YXRpb25Qcm94eTsKK2NsYXNzIFdlYlZpZXdwb3J0QXR0cmlidXRlczsKIAogV0tfQUREX0FQSV9N
QVBQSU5HKFdLQXBwbGljYXRpb25DYWNoZU1hbmFnZXJSZWYsIFdlYkFwcGxpY2F0aW9uQ2FjaGVN
YW5hZ2VyUHJveHkpCiBXS19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVJlZiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSkKQEAgLTEzOCw2ICsxMzksNyBAQCBX
S19BRERfQVBJX01BUFBJTkcoV0tSZW5kZXJMYXllclJlZiwgV2ViUmVuZGVyTGF5ZXIpCiBXS19B
RERfQVBJX01BUFBJTkcoV0tSZW5kZXJPYmplY3RSZWYsIFdlYlJlbmRlck9iamVjdCkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1RleHRDaGVja2VyUmVmLCBXZWJUZXh0Q2hlY2tlcikKIFdLX0FERF9B
UElfTUFQUElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0aW9uUHJveHkpCitXS19BRERfQVBJ
X01BUFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykK
IFdLX0FERF9BUElfTUFQUElORyhXS0luc3BlY3RvclJlZiwgV2ViSW5zcGVjdG9yUHJveHkpCiAK
IC8qIEVudW0gY29udmVyc2lvbnMgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmUzMGFmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCkBAIC0wLDAgKzEsMzcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2xheW91dFNpemVpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBWaWV3b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXS1ZpZXdwb3J0QXR0cmlidXRlcy5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0
LmgiCisjaW5jbHVkZSAiV2ViVmlld3BvcnRBdHRyaWJ1dGVzLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0VHlwZUlEKCkKK3sK
KyAgICByZXR1cm4gdG9BUEkoV2ViVmlld3BvcnRBdHRyaWJ1dGVzOjpBUElUeXBlKTsKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0cmli
dXRlcy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLVmlld3BvcnRBdHRyaWJ1
dGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1YjA5YwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ZpZXdwb3J0QXR0
cmlidXRlcy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50
ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IFZpZXdvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBXS1ZpZXdwb3J0QXR0cmlidXRlc19oCisjZGVmaW5lIFdLVmlld3BvcnRBdHRyaWJ1dGVzX2gK
KworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21l
dHJ5Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworV0tf
RVhQT1JUIFdLVHlwZUlEIFdLVmlld3BvcnRBdHRyaWJ1dGVzR2V0VHlwZUlEKCk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBXS1ZpZXdwb3J0QXR0cmlidXRl
c19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dL
Vmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRl
eCAzNzAyYmI0Li5mNzE1NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvZWZsL1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9l
ZmwvV0tWaWV3LmgKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRlZiB2b2lkICgqV0tWaWV3UGFnZURp
ZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHMKIHR5
cGVkZWYgdm9pZCAoKldLVmlld1dlYlByb2Nlc3NDcmFzaGVkQ2FsbGJhY2spKFdLVmlld1JlZiB2
aWV3LCBXS1VSTFJlZiB1cmwsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lk
ICgqV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzUG9zaXRpb25DYWxsYmFjaykoV0tWaWV3UmVm
IHZpZXcsIFdLUG9pbnQgcG9zaXRpb24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogdHlwZWRl
ZiB2b2lkICgqV0tWaWV3UGFnZURpZFJlbmRlckZyYW1lQ2FsbGJhY2spKFdLVmlld1JlZiB2aWV3
LCBXS1NpemUgY29udGVudHNTaXplLCBXS1JlY3QgY292ZXJlZFJlY3QsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tWaWV3UGFnZURpZENoYW5nZVZpZXdwb3J0QXR0
cmlidXRlc0NhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYs
IGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogCiBzdHJ1Y3QgV0tWaWV3Q2xpZW50IHsKICAgICBp
bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsK
QEAgLTQ5LDYgKzUwLDcgQEAgc3RydWN0IFdLVmlld0NsaWVudCB7CiAgICAgV0tWaWV3UGFnZURp
ZENoYW5nZUNvbnRlbnRzUG9zaXRpb25DYWxsYmFjayAgICAgIGRpZENoYW5nZUNvbnRlbnRzUG9z
aXRpb247CiAgICAgV0tWaWV3UGFnZURpZFJlbmRlckZyYW1lQ2FsbGJhY2sgICAgICAgICAgICAg
ICAgIGRpZFJlbmRlckZyYW1lOwogICAgIFdLVmlld0NhbGxiYWNrICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uOworICAgIFdLVmlld1Bh
Z2VEaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXNDYWxsYmFjayAgICBkaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXM7CiB9OwogdHlwZWRlZiBzdHJ1Y3QgV0tWaWV3Q2xpZW50IFdLVmlld0NsaWVu
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0
cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVmlld3BvcnRBdHRyaWJ1
dGVzLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGI0YTc2Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmli
dXRlcy5jcHAKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJbnRl
bCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK1dlYlZpZXdwb3J0QXR0cmlidXRlczo6V2ViVmlld3BvcnRBdHRyaWJ1dGVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cmlidXRlcykKKyAgICA6IG1f
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQoreworfQorCitXZWJWaWV3cG9ydEF0dHJpYnV0ZXM6On5X
ZWJWaWV3cG9ydEF0dHJpYnV0ZXMoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmIzZjU5Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlZpZXdwb3J0QXR0cmlidXRlcy5oCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSW50ZWwgQ29ycG9yYXRpb24u
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IFZpZXdvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWV3cG9ydEF0
dHJpYnV0ZXNfaAorI2RlZmluZSBXZWJWaWV3cG9ydEF0dHJpYnV0ZXNfaAorCisjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJWaWV3cG9ydEF0dHJpYnV0ZXMgOiBwdWJsaWMgVHlwZWRBUElPYmplY3Q8QVBJT2JqZWN0OjpU
eXBlVmlld3BvcnRBdHRyaWJ1dGVzPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8
V2ViVmlld3BvcnRBdHRyaWJ1dGVzPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBhdHRyaWJ1dGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBX
ZWJWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cmlidXRlcykpOworICAgIH0KKworICAgIHZpcnR1YWwg
fldlYlZpZXdwb3J0QXR0cmlidXRlcygpOworCisgICAgY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRB
dHRyaWJ1dGVzJiBvcmlnaW5hbEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX2F0dHJpYnV0
ZXM7IH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMoY29u
c3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJik7CisKKyAgICBXZWJDb3JlOjpWaWV3cG9y
dEF0dHJpYnV0ZXMgbV9hdHRyaWJ1dGVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisK
KyNlbmRpZiAvLyBXZWJWaWV3cG9ydEF0dHJpYnV0ZXNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKaW5kZXggNGJhYjIxNy4uZDFkYWFlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCkBAIC0y
OCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJFd2tWaWV3LmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5oIiAKKyNpbmNsdWRlICJXZWJWaWV3cG9ydEF0dHJpYnV0ZXMuaCIKICNp
bmNsdWRlIDxXZWJLaXQyL1dLU3RyaW5nLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1ZpZXcuaD4K
IApAQCAtMTMxLDYgKzEzMiwxOSBAQCB2b2lkIFZpZXdDbGllbnRFZmw6OmRpZENvbXBsZXRlUGFn
ZVRyYW5zaXRpb24oV0tWaWV3UmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogICAgIGV3a1Zp
ZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOwogfQogCit2b2lkIFZpZXdDbGllbnRFZmw6OmRp
ZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXS1ZpZXdSZWYsIFdLVmlld3BvcnRBdHRyaWJ1dGVz
UmVmIGF0dHJpYnV0ZXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRXdrVmlldyog
ZXdrVmlldyA9IHRvRXdrVmlldyhjbGllbnRJbmZvKTsKKyAgICBpZiAoV0tQYWdlVXNlRml4ZWRM
YXlvdXQoZXdrVmlldy0+d2tQYWdlKCkpKSB7CisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQorICAgICAgICAvLyBGSVhNRTogcGFnZVZpZXdwb3J0Q29udHJvbGxlciBzaG91bGQgYWNj
ZXB0IFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLgorICAgICAgICBld2tWaWV3LT5wYWdlVmlld3Bv
cnRDb250cm9sbGVyKCktPmRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyh0b0ltcGwoYXR0cmli
dXRlcyktPm9yaWdpbmFsQXR0cmlidXRlcygpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGV3a1ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworfQorCiBWaWV3Q2xp
ZW50RWZsOjpWaWV3Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCiAgICAgOiBtX3ZpZXcodmlldykK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmgKaW5kZXgg
Mzc2Y2M1NS4uNzg4OWExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9WaWV3Q2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3
Q2xpZW50RWZsLmgKQEAgLTU0LDYgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBk
aWRDaGFuZ2VDb250ZW50c1Bvc2l0aW9uKFdLVmlld1JlZiwgV0tQb2ludCwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkUmVuZGVyRnJhbWUoV0tWaWV3UmVmLCBX
S1NpemUsIFdLUmVjdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkQ29tcGxldGVQYWdlVHJhbnNpdGlvbihXS1ZpZXdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVZpZXdwb3J0QXR0cmlidXRlcyhXS1ZpZXdS
ZWYsIFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKIAog
ICAgIEV3a1ZpZXcqIG1fdmlldzsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJW
aWV3LmNwcAppbmRleCA0MDgwZmU3Li5jODkwMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlldy5jcHAKQEAgLTUyOSwxMyArNTI5LDcgQEAgRmxvYXRSZWN0IFdlYlZpZXc6
OmNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBGbG9hdFJlY3QmIGRldmljZVJlY3QpCiAKIHZvaWQg
V2ViVmlldzo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKIHsKLSAgICBpZiAobV9wYWdlLT51c2VGaXhlZExheW91dCgp
KSB7Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgICAgICBtX2V3a1ZpZXct
PnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIoKS0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0
dHIpOwotI2VuZGlmCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgbV9ld2tWaWV3LT5zY2hl
ZHVsZVVwZGF0ZURpc3BsYXkoKTsKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJp
YnV0ZXModGhpcywgYXR0cik7CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViVmlld0NsaWVudC5jcHAKaW5kZXggZGNhZmNjYS4uZTJhYjUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwCkBAIC0yNSw4ICsy
NSwxMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5o
IgorI2luY2x1ZGUgIldlYlZpZXdwb3J0QXR0cmlidXRlcy5oIgogCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCisjaW5jbHVkZSAiV0tCYXNlLmgiCiAjaW5jbHVkZSAiV0tSZXRhaW5QdHIuaCIKIAog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC04OSw0ICs5MSwxMyBAQCB2b2lkIFdlYlZpZXdD
bGllbnQ6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24oV2ViVmlldyogdmlldykKICAgICBtX2Ns
aWVudC5kaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKHRvQVBJKHZpZXcpLCBtX2NsaWVudC5jbGll
bnRJbmZvKTsKIH0KIAordm9pZCBXZWJWaWV3Q2xpZW50OjpkaWRDaGFuZ2VWaWV3cG9ydEF0dHJp
YnV0ZXMoV2ViVmlldyogdmlldywgY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyaWJ1dGVz
KQoreworICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBXS1JldGFpblB0cjxXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZj4g
d2tBdHRyaWJ1dGVzID0gYWRvcHRXSyh0b0FQSShXZWJWaWV3cG9ydEF0dHJpYnV0ZXM6OmNyZWF0
ZShhdHRyaWJ1dGVzKS5sZWFrUmVmKCkpKTsKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VWaWV3cG9y
dEF0dHJpYnV0ZXModG9BUEkodmlldyksIHdrQXR0cmlidXRlcy5nZXQoKSwgbV9jbGllbnQuY2xp
ZW50SW5mbyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaAppbmRleCAyNTk3YzM1Li5mMDQ5NDQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaApAQCAtMzQsNiAr
MzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRQb2ludDsKIGNsYXNzIEludFJl
Y3Q7CiBjbGFzcyBJbnRTaXplOworY2xhc3MgVmlld3BvcnRBdHRyaWJ1dGVzOwogfQogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKQEAgLTQ5LDYgKzUwLDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hh
bmdlQ29udGVudHNQb3NpdGlvbihXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsK
ICAgICB2b2lkIGRpZFJlbmRlckZyYW1lKFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZvaWQgZGlkQ29tcGxldGVQYWdlVHJh
bnNpdGlvbihXZWJWaWV3Kik7CisgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMo
V2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>