<?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>109559</bug_id>
          
          <creation_ts>2013-02-12 02:44:02 -0800</creation_ts>
          <short_desc>[EFL][WK2] Introduce WKViewClient C API</short_desc>
          <delta_ts>2013-02-13 08:18:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>107657</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>830732</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-12 02:44:02 -0800</bug_when>
    <thetext>In order to decouple EFL&apos;s PageClient from EwkView, we need to introduce a WKViewClient C API so that PageClient can interact with WebView instead of EwkView and so that the EwkView can simply use WKViewClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831747</commentid>
    <comment_count>1</comment_count>
      <attachid>188036</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 02:26:58 -0800</bug_when>
    <thetext>Created attachment 188036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831751</commentid>
    <comment_count>2</comment_count>
      <attachid>188037</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 02:36:27 -0800</bug_when>
    <thetext>Created attachment 188037
Patch

Quickly add &quot;explicit&quot; to one of the constructor before Gyuyoung notices :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831795</commentid>
    <comment_count>3</comment_count>
      <attachid>188036</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-13 04:15:15 -0800</bug_when>
    <thetext>Comment on attachment 188036
Patch

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

&gt; Source/WebKit2/ChangeLog:10
&gt; +        PageClient and EwkView. In the end, PageClient should only interact with

when completed, Page...

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:36
&gt; +
&gt; +EwkView* ViewClientEfl::toEwkView(const void* clientInfo)

As this is the default EFL implementation shoulnd this be moved to the API/efl directory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831799</commentid>
    <comment_count>4</comment_count>
      <attachid>188037</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-13 04:18:43 -0800</bug_when>
    <thetext>Comment on attachment 188037
Patch

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

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:61
&gt; +    viewClient.clientInfo = this;

it does not need &quot;this&quot; it needs EwkView, right?

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.h:37
&gt; +class ViewClientEfl {

I am not convinced we need this class at all, could EwkView itself somehow implement client interface?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831801</commentid>
    <comment_count>5</comment_count>
      <attachid>188036</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 04:20:51 -0800</bug_when>
    <thetext>Comment on attachment 188036
Patch

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

&gt;&gt; Source/WebKit2/ChangeLog:10
&gt;&gt; +        PageClient and EwkView. In the end, PageClient should only interact with
&gt; 
&gt; when completed, Page...

Hmm. Why not but I&apos;m not convinced &quot;In the end&quot; is incorrect.

&gt;&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:36
&gt;&gt; +EwkView* ViewClientEfl::toEwkView(const void* clientInfo)
&gt; 
&gt; As this is the default EFL implementation shoulnd this be moved to the API/efl directory?

All our EFL clients are currently in this folder, so I added ViewClientEfl here. We may decide to move all of them to API/efl at some point but at least it is consistent for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831806</commentid>
    <comment_count>6</comment_count>
      <attachid>188037</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 04:27:17 -0800</bug_when>
    <thetext>Comment on attachment 188037
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.cpp:61
&gt;&gt; +    viewClient.clientInfo = this;
&gt; 
&gt; it does not need &quot;this&quot; it needs EwkView, right?

For the current callbacks we have, yes. But when we start adding more callbacks, this may change. Having the ViewClientEfl is more flexible and more forward looking IMHO.

&gt;&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.h:37
&gt;&gt; +class ViewClientEfl {
&gt; 
&gt; I am not convinced we need this class at all, could EwkView itself somehow implement client interface?

Well, so far we have split clients from Ewk classes to avoid cluttering their implementation. For example, look at EwkContext and DownloadManagerEfl / ContextHistoryClientEfl / NetworkInfoProvider ...

I think it is nice to have a clear separation between the clients and the Ewk classes. This is what we have been doing so far and I don&apos;t see why this case is different.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831808</commentid>
    <comment_count>7</comment_count>
      <attachid>188037</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-13 04:28:02 -0800</bug_when>
    <thetext>Comment on attachment 188037
Patch

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

&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.h:39
&gt; +    PassOwnPtr&lt;ViewClientEfl&gt; create(EwkView* view)

mmm.. maybe I&apos;m missing something, but who calls it? I cannot find it in the patch..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831809</commentid>
    <comment_count>8</comment_count>
      <attachid>188037</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 04:29:03 -0800</bug_when>
    <thetext>Comment on attachment 188037
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/efl/ViewClientEfl.h:39
&gt;&gt; +    PassOwnPtr&lt;ViewClientEfl&gt; create(EwkView* view)
&gt; 
&gt; mmm.. maybe I&apos;m missing something, but who calls it? I cannot find it in the patch..

Oops :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831816</commentid>
    <comment_count>9</comment_count>
      <attachid>188058</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-02-13 04:48:39 -0800</bug_when>
    <thetext>Created attachment 188058
Patch

Take feedback into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831818</commentid>
    <comment_count>10</comment_count>
      <attachid>188058</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-02-13 04:59:40 -0800</bug_when>
    <thetext>Comment on attachment 188058
Patch

looks OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831822</commentid>
    <comment_count>11</comment_count>
      <attachid>188058</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-02-13 05:00:45 -0800</bug_when>
    <thetext>Comment on attachment 188058
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831909</commentid>
    <comment_count>12</comment_count>
      <attachid>188058</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-02-13 07:59:30 -0800</bug_when>
    <thetext>Comment on attachment 188058
Patch

It&apos;s a little weird to use a C API to do this since it seems like an implementation detail, but I&apos;ll let it slide since it&apos;s not cross platform code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831919</commentid>
    <comment_count>13</comment_count>
      <attachid>188058</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 08:18:24 -0800</bug_when>
    <thetext>Comment on attachment 188058
Patch

Clearing flags on attachment: 188058

Committed r142750: &lt;http://trac.webkit.org/changeset/142750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831920</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-13 08:18:30 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188036</attachid>
            <date>2013-02-13 02:26:58 -0800</date>
            <delta_ts>2013-02-13 04:20:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>109559_wkviewclient.patch</filename>
            <type>text/plain</type>
            <size>22167</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NTg3MTU0Li45YWYxMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTMtMDItMTMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW50cm9kdWNlIFdLVmlld0NsaWVudCBDIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIHRoZSBXS1ZpZXdDbGllbnQgQyBBUEkgZm9yIEVGTCdzIFdLVmlldy4gVGhl
IHB1cnBvc2Ugb2YKKyAgICAgICAgdGhpcyBuZXcgQyBBUEkgaXMgdG8gZXZlbnR1YWxseSByZW1v
dmUgdGhlIGludGVyZGVwZW5kZW5jeSBiZXR3ZWVuIEVGTCdzCisgICAgICAgIFBhZ2VDbGllbnQg
YW5kIEV3a1ZpZXcuIEluIHRoZSBlbmQsIFBhZ2VDbGllbnQgc2hvdWxkIG9ubHkgaW50ZXJhY3Qg
d2l0aAorICAgICAgICBXZWJWaWV3IGFuZCBub3QgYmUgYXdhcmUgb2YgRXdrVmlldyBzbyB0aGF0
IHdlIGhhdmUgYSBjbGVhbiBzZXBhcmF0aW9uIGJldHdlZW4KKyAgICAgICAgaW50ZXJuYWwgV2Vi
S2l0MiBjbGFzc2VzIGFuZCBvdXIgRUZMIEV3ayBBUEkgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBvbmx5IGEgZmlyc3Qgc3RlcCB0b3dhcmRzIHRoaXMgZ29hbCBhcyB0
aGVyZSBpcyBhIGxvdCBvZiB3b3JrCisgICAgICAgIHRvIGRvIHRvIGFjaGlldmUgY29tcGxldGUg
c2VwYXJhdGlvbiBiZXR3ZWVuIEV3a1ZpZXcgYW5kIFBhZ2VDbGllbnQuIFRoZSBwdXJwb3NlCisg
ICAgICAgIG9mIHRoaXMgcGF0Y2ggaXMgdG8gaW50cm9kdWNlIHRoZSBuZWVkZWQgYXJjaGl0ZWN0
dXJlIHdoaWNoIHdpbGwgbGF0ZXIgYmUKKyAgICAgICAgZXh0ZW5kZWQgYnkgaW50cm9kdWNpbmcg
bmV3IFdLVmlld0NsaWVudCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkIG5ldyBWaWV3Q2xpZW50RWZsLmNwcCBhbmQgV2ViVmlld0NsaWVudC5jcHAgdG8gRUZM
J3MgQ01ha2UKKyAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdTZXRWaWV3Q2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOiBJbnRyb2R1Y2UgbmV3IFdLVmlld0Ns
aWVudCBDIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tz
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHA6IFN0YXJ0IGNh
bGxpbmcgV0tWaWV3Q2xpZW50IGNhbGxiYWNrcyBpbnN0ZWFkIG9mCisgICAgICAgIGludGVyYWN0
aW5nIGRpcmVjdGx5IHdpdGggRXdrVmlldyB0byBhdm9pZCB2aW9sYXRpbmcgQVBJIGxheWVyaW5n
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6dmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRCYXNlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
UGFnZUNsaWVudEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1
bHRJbXBsLmNwcDogU3RhcnQgY2FsbGluZyBXS1ZpZXdDbGllbnQgY2FsbGJhY2tzIGluc3RlYWQg
b2YKKyAgICAgICAgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBFd2tWaWV3IHRvIGF2b2lkIHZp
b2xhdGluZyBBUEkgbGF5ZXJpbmcuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRMZWdhY3lJbXBsLmNwcDogU3RhcnQgY2FsbGluZyBXS1ZpZXdDbGllbnQgY2FsbGJh
Y2tzIGluc3RlYWQgb2YKKyAgICAgICAgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBFd2tWaWV3
IHRvIGF2b2lkIHZpb2xhdGluZyBBUEkgbGF5ZXJpbmcuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3Q2xpZW50RWZsOjp0b0V3a1ZpZXcpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
Q2xpZW50RWZsOjp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVu
dEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVu
dEVmbDo6Vmlld0NsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6On5W
aWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaDog
SW50cm9kdWNlIG5ldyBWaWV3Q2xpZW50RWZsIHdoaWNoIGhhbmRsZXMgV0tWaWV3Q2xpZW50IGNh
bGxiYWNrcworICAgICAgICBhbmQgaW50ZXJhY3RzIHdpdGggRXdrVmlldy4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChWaWV3Q2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0Ns
aWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppbml0aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOiBBZGQgbmV3IFdlYlZpZXdDbGllbnQgbWVtYmVy
IGFuZCBjb3JyZXNwb25kaW5nIG1ldGhvZHMgdG8gaW50ZXJhY3QKKyAgICAgICAgd2l0aCBpdC4K
KyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50
Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlk
Q2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGll
bnQuaDogQWRkIG5ldyBXZWJWaWV3Q2xpZW50IEFQSUNsaWVudCBmb3IgV0tWaWV3Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEzLTAyLTEyICBBZGVu
aWxzb24gQ2F2YWxjYW50aSAgPGNhdmFsY2FudGlpQGdtYWlsLmNvbT4KIAogICAgICAgICBbV0sy
XSBQYWdlIHJlbG9hZGluZyB3aWxsIGNyYXNoIFVJUHJvY2VzcyBhZnRlciBXZWJQcm9jZXNzIHdh
cyBraWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggOWNlNDViMi4uMTU2YmExYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTk5LDYgKzk5LDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvVmlld0NsaWVu
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKQEAgLTEwOCw2ICsxMDksNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3Bw
CiAKICAgICBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZl
clNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKaW5kZXggMTFjZDI4YS4uMjEwZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtNTIsNiArNTIsMTEgQEAgdm9pZCBXS1ZpZXdJbml0
aWFsaXplKFdLVmlld1JlZiB2aWV3UmVmKQogICAgIHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlhbGl6
ZSgpOwogfQogCit2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmIHZpZXdSZWYsIGNv
bnN0IFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlh
bGl6ZUNsaWVudChjbGllbnQpOworfQorCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdS
ZWYgdmlld1JlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCAxZmJmYjVm
Li4zMjU0NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgV0tWaWV3X2gKIAogI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CiAKICNpZiBVU0Uo
RU8pCiB0eXBlZGVmIHN0cnVjdCBfRW8gRXZhczsKQEAgLTM0LDExICszNSwyNyBAQCB0eXBlZGVm
IHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CiBleHRlcm4gIkMiIHsKICNlbmRpZgog
Cit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2
aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1Zp
ZXdDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRJbmZvOworCisgICAgLy8gVmVyc2lvbiAwCisgICAgV0tWaWV3
Vmlld05lZWRzRGlzcGxheUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIHZpZXdOZWVkc0Rpc3Bs
YXk7CisgICAgV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxiYWNrICAgICAgICAg
IGRpZENoYW5nZUNvbnRlbnRzU2l6ZTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1ZpZXdDbGllbnQg
V0tWaWV3Q2xpZW50OworCitlbnVtIHsga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9
OworCiBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShFdmFzKiBjYW52YXMsIFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiBXS19FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlZExheW91dChFdmFzKiBjYW52YXMsIFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiBXS19FWFBPUlQg
dm9pZCBXS1ZpZXdJbml0aWFsaXplKFdLVmlld1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdT
ZXRWaWV3Q2xpZW50KFdLVmlld1JlZiwgY29uc3QgV0tWaWV3Q2xpZW50Kik7CiAKIFdLX0VYUE9S
VCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKaW5kZXggMGU3NjNh
My4uNWYxY2IwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0NhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiV0tFaW5h
U2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
dmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQwLDkgKzQxLDYg
QEAgdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsK
IHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247
CiB0eXBlZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKLXN0cnVjdCBFd2tfRG93bmxv
YWRfSm9iX0Vycm9yOwotc3RydWN0IEV3a19DU1NfU2l6ZTsKLQogbmFtZXNwYWNlIEV3a1ZpZXdD
YWxsYmFja3MgewogCiBlbnVtIENhbGxiYWNrVHlwZSB7CkBAIC0xNDEsOSArMTM5LDkgQEAgc3Ry
dWN0IENhbGxCYWNrIDxjYWxsYmFja1R5cGUsIEV3a19DU1NfU2l6ZSo+IDogcHVibGljIEV2YXNP
YmplY3RIb2xkZXIgewogICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
b2JqZWN0LCBDYWxsQmFja0luZm88Y2FsbGJhY2tUeXBlPjo6bmFtZSgpLCBzaXplKTsKICAgICB9
CiAKLSAgICB2b2lkIGNhbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYXJnKQorICAgIHZvaWQg
Y2FsbChjb25zdCBXS1NpemUmIGFyZykKICAgICB7Ci0gICAgICAgIEV3a19DU1NfU2l6ZSBzaXpl
ID0geyBhcmcud2lkdGgoKSwgYXJnLmhlaWdodCgpIH07CisgICAgICAgIEV3a19DU1NfU2l6ZSBz
aXplID0geyBhcmcud2lkdGgsIGFyZy5oZWlnaHQgfTsKICAgICAgICAgY2FsbCgmc2l6ZSk7CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFz
ZS5jcHAKaW5kZXggNGRmZjcyMS4uMGNhMzY0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKQEAgLTYxLDkgKzYxLDExIEBAIFBhZ2VDbGll
bnRCYXNlOjp+UGFnZUNsaWVudEJhc2UoKQogewogfQogCi1Fd2tWaWV3KiBQYWdlQ2xpZW50QmFz
ZTo6dmlldygpIGNvbnN0CitXZWJWaWV3KiBQYWdlQ2xpZW50QmFzZTo6dmlldygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1fdmlldzsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIElu
IHRoZSBmdXR1cmUsIG1fdmlldyBzaG91bGQgYmUKKyAgICAvLyBhIFdlYlZpZXcgaW5zdGVhZCBv
ZiBhbiBFd2tWaWV3LgorICAgIHJldHVybiB0b0ltcGwobV92aWV3LT53a1ZpZXcoKSk7CiB9CiAK
IC8vIFBhZ2VDbGllbnQKQEAgLTczLDkgKzc1LDkgQEAgUGFzc093blB0cjxEcmF3aW5nQXJlYVBy
b3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCiAgICAgcmV0dXJu
IGRyYXdpbmdBcmVhLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50QmFzZTo6c2V0Vmll
d05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3ZvaWQgUGFnZUNsaWVudEJh
c2U6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJlYSkKIHsK
LSAgICBtX3ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIHZpZXcoKS0+c2V0Vmll
d05lZWRzRGlzcGxheShhcmVhKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlzcGxheVZp
ZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50
QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5oCmlu
ZGV4IDBmN2FkOGMuLjc3NDRhOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZs
L1BhZ2VDbGllbnRCYXNlLmgKQEAgLTM0LDYgKzM0LDggQEAgY2xhc3MgRXdrVmlldzsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlZpZXc7CisKIGNsYXNzIFBhZ2VDbGllbnRCYXNl
IDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnRC
YXNlKCk7CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
Vmlld3BvcnRTaXplKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1Np
emUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIAotICAgIEV3a1ZpZXcqIHZpZXcoKSBj
b25zdDsKKyAgICBXZWJWaWV3KiB2aWV3KCkgY29uc3Q7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBQYWdlQ2xpZW50QmFzZShFd2tWaWV3Kik7CkBAIC0xMTIsNyArMTE0LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7
CiAKIHByb3RlY3RlZDoKLSAgICBFd2tWaWV3KiBtX3ZpZXc7CisgICAgRXdrVmlldyogbV92aWV3
OyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgV2ViVmlldyB3aGVuIHBvc3NpYmxlLgogICAgIERlZmF1
bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCmluZGV4
IDVhOTIyMTkuLmE0NDhhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKQogewogICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIp
OwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNp
emUpOwotICAgIG1fdmlldy0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2VkPigpLmNh
bGwoc2l6ZSk7CisgICAgdmlldygpLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudERlZmF1bHRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCmluZGV4IDY1NTNhOWQuLjYzZTY3N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUlt
cGwuY3BwCkBAIC03MSw4ICs3MSw3IEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENo
YW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0CiAKIHZvaWQg
UGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKQogewotICAgIG1fdmlldy0+c2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7
Ci0gICAgbV92aWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChz
aXplKTsKKyAgICB2aWV3KCktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9W
aWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVu
dEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdmOGJmMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcu
aCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFj
a3M7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFd2tWaWV3KiBWaWV3Q2xpZW50RWZsOjp0b0V3
a1ZpZXcoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Vmlld0NsaWVudEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV92aWV3Owor
fQorCit2b2lkIFZpZXdDbGllbnRFZmw6OnZpZXdOZWVkc0Rpc3BsYXkoV0tWaWV3UmVmLCBXS1Jl
Y3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9Fd2tWaWV3KGNsaWVudEluZm8p
LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8p
OworICAgIGV3a1ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIGV3a1ZpZXctPnNt
YXJ0Q2FsbGJhY2s8Q29udGVudHNTaXplQ2hhbmdlZD4oKS5jYWxsKHNpemUpOworfQorCitWaWV3
Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCisgICAgOiBtX3ZpZXcodmll
dykKK3sKKyAgICBBU1NFUlQobV92aWV3KTsKKworICAgIFdLVmlld0NsaWVudCB2aWV3Q2xpZW50
OworICAgIG1lbXNldCgmdmlld0NsaWVudCwgMCwgc2l6ZW9mKFdLVmlld0NsaWVudCkpOworICAg
IHZpZXdDbGllbnQudmVyc2lvbiA9IGtXS1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB2
aWV3Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIHZpZXdDbGllbnQuZGlkQ2hhbmdlQ29u
dGVudHNTaXplID0gZGlkQ2hhbmdlQ29udGVudHNTaXplOworICAgIHZpZXdDbGllbnQudmlld05l
ZWRzRGlzcGxheSA9IHZpZXdOZWVkc0Rpc3BsYXk7CisKKyAgICBXS1ZpZXdTZXRWaWV3Q2xpZW50
KG1fdmlldy0+d2tWaWV3KCksICZ2aWV3Q2xpZW50KTsKK30KKworVmlld0NsaWVudEVmbDo6flZp
ZXdDbGllbnRFZmwoKQoreworICAgIFdLVmlld1NldFZpZXdDbGllbnQobV92aWV3LT53a1ZpZXco
KSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi42NGJmZDM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWV3Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBWaWV3Q2xpZW50RWZsX2gKKyNkZWZpbmUgVmlld0NsaWVudEVmbF9oCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXc7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBWaWV3Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBQYXNz
T3duUHRyPFZpZXdDbGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3KiB2aWV3KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBWaWV3Q2xpZW50RWZsKHZpZXcpKTsKKyAgICB9CisKKyAg
ICB+Vmlld0NsaWVudEVmbCgpOworCitwcml2YXRlOgorICAgIFZpZXdDbGllbnRFZmwoRXdrVmll
dyopOworCisgICAgc3RhdGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0
IGFyZWEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5n
ZUNvbnRlbnRzU2l6ZShXS1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CisKKyAgICBFd2tWaWV3KiBtX3ZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKwor
I2VuZGlmIC8vIFZpZXdDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
Vmlldy5jcHAKaW5kZXggNjQ5ZjBmYi4uNTYyMzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1dlYlZpZXcuY3BwCkBAIC05NCw0ICs5NCwxOSBAQCB2b2lkIFdlYlZpZXc6OnJlc3Vt
ZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3dlYlBhZ2VQcm94eS0+cmVz
dW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJWaWV3Ojpp
bml0aWFsaXplQ2xpZW50KGNvbnN0IFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xp
ZW50LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWV3OjpzZXRWaWV3TmVlZHNE
aXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGFyZWEpCit7CisgICAgbV9jbGllbnQudmll
d05lZWRzRGlzcGxheSh0aGlzLCBhcmVhKTsKK30KKwordm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VD
b250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX2NsaWVu
dC5kaWRDaGFuZ2VDb250ZW50c1NpemUodGhpcywgc2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCA3ZWI1MmFk
Li40YjU2Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtMzIs
NiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVmlld0Ns
aWVudC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTYsNiArNTcsMTEgQEAgcHVibGlj
OgogICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAg
dm9pZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCisgICAgLy8gVmll
dyBjbGllbnQuCisgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLVmlld0NsaWVudCop
OworICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7
CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OworCiAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIHBvc3NpYmxlLgogICAgIEV2YXNfT2JqZWN0
KiBldmFzT2JqZWN0KCkgeyByZXR1cm4gbV9ldmFzT2JqZWN0OyB9CiAgICAgV2ViUGFnZVByb3h5
KiBwYWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHkuZ2V0KCk7IH0KQEAgLTYzLDYgKzY5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0
dXJuIEFQSVR5cGU7IH0KIAorICAgIFdlYlZpZXdDbGllbnQgbV9jbGllbnQ7CiAgICAgUmVmUHRy
PFdlYlBhZ2VQcm94eT4gbV93ZWJQYWdlUHJveHk7CiAgICAgRXZhc19PYmplY3QqIG1fZXZhc09i
amVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZp
ZXdDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjUyOTcwCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNw
cApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxl
Y3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdlYlZpZXdDbGllbnQ6OnZpZXdOZWVkc0Rp
c3BsYXkoV2ViVmlldyogdmlldywgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJlYSkKK3sKKyAg
ICBpZiAoIW1fY2xpZW50LnZpZXdOZWVkc0Rpc3BsYXkpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fY2xpZW50LnZpZXdOZWVkc0Rpc3BsYXkodG9BUEkodmlldyksIHRvQVBJKGFyZWEpLCBtX2Ns
aWVudC5jbGllbnRJbmZvKTsKK30KKwordm9pZCBXZWJWaWV3Q2xpZW50OjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoV2ViVmlldyogdmlldywgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sK
KyAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRvQVBJKHZpZXcpLCB0b0FQ
SShzaXplKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FlNzAwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgKQEAgLTAsMCArMSw1
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJWaWV3Q2xpZW50X2gKKyNkZWZp
bmUgV2ViVmlld0NsaWVudF9oCisKKyNpbmNsdWRlICJBUElDbGllbnQuaCIKKyNpbmNsdWRlICJX
S1ZpZXcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgSW50UmVjdDsKK2NsYXNzIElu
dFNpemU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJWaWV3OworCitjbGFz
cyBXZWJWaWV3Q2xpZW50OiBwdWJsaWMgQVBJQ2xpZW50PFdLVmlld0NsaWVudCwga1dLVmlld0Ns
aWVudEN1cnJlbnRWZXJzaW9uPiB7CitwdWJsaWM6CisgICAgdm9pZCB2aWV3TmVlZHNEaXNwbGF5
KFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7CisgICAgdm9pZCBkaWRDaGFuZ2VD
b250ZW50c1NpemUoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKKworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBXZWJWaWV3Q2xpZW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188037</attachid>
            <date>2013-02-13 02:36:27 -0800</date>
            <delta_ts>2013-02-13 04:48:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>109559_wkviewclient.patch</filename>
            <type>text/plain</type>
            <size>22172</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NTg3MTU0Li45YWYxMzdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjgg
QEAKKzIwMTMtMDItMTMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW50cm9kdWNlIFdLVmlld0NsaWVudCBDIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIHRoZSBXS1ZpZXdDbGllbnQgQyBBUEkgZm9yIEVGTCdzIFdLVmlldy4gVGhl
IHB1cnBvc2Ugb2YKKyAgICAgICAgdGhpcyBuZXcgQyBBUEkgaXMgdG8gZXZlbnR1YWxseSByZW1v
dmUgdGhlIGludGVyZGVwZW5kZW5jeSBiZXR3ZWVuIEVGTCdzCisgICAgICAgIFBhZ2VDbGllbnQg
YW5kIEV3a1ZpZXcuIEluIHRoZSBlbmQsIFBhZ2VDbGllbnQgc2hvdWxkIG9ubHkgaW50ZXJhY3Qg
d2l0aAorICAgICAgICBXZWJWaWV3IGFuZCBub3QgYmUgYXdhcmUgb2YgRXdrVmlldyBzbyB0aGF0
IHdlIGhhdmUgYSBjbGVhbiBzZXBhcmF0aW9uIGJldHdlZW4KKyAgICAgICAgaW50ZXJuYWwgV2Vi
S2l0MiBjbGFzc2VzIGFuZCBvdXIgRUZMIEV3ayBBUEkgaW1wbGVtZW50YXRpb24uCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpcyBvbmx5IGEgZmlyc3Qgc3RlcCB0b3dhcmRzIHRoaXMgZ29hbCBhcyB0
aGVyZSBpcyBhIGxvdCBvZiB3b3JrCisgICAgICAgIHRvIGRvIHRvIGFjaGlldmUgY29tcGxldGUg
c2VwYXJhdGlvbiBiZXR3ZWVuIEV3a1ZpZXcgYW5kIFBhZ2VDbGllbnQuIFRoZSBwdXJwb3NlCisg
ICAgICAgIG9mIHRoaXMgcGF0Y2ggaXMgdG8gaW50cm9kdWNlIHRoZSBuZWVkZWQgYXJjaGl0ZWN0
dXJlIHdoaWNoIHdpbGwgbGF0ZXIgYmUKKyAgICAgICAgZXh0ZW5kZWQgYnkgaW50cm9kdWNpbmcg
bmV3IFdLVmlld0NsaWVudCBjYWxsYmFja3MuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFr
ZTogQWRkIG5ldyBWaWV3Q2xpZW50RWZsLmNwcCBhbmQgV2ViVmlld0NsaWVudC5jcHAgdG8gRUZM
J3MgQ01ha2UKKyAgICAgICAgY29uZmlndXJhdGlvbi4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0MvZWZsL1dLVmlldy5jcHA6CisgICAgICAgIChXS1ZpZXdTZXRWaWV3Q2xpZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oOiBJbnRyb2R1Y2UgbmV3IFdLVmlld0Ns
aWVudCBDIEFQSS4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tz
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHA6IFN0YXJ0IGNh
bGxpbmcgV0tWaWV3Q2xpZW50IGNhbGxiYWNrcyBpbnN0ZWFkIG9mCisgICAgICAgIGludGVyYWN0
aW5nIGRpcmVjdGx5IHdpdGggRXdrVmlldyB0byBhdm9pZCB2aW9sYXRpbmcgQVBJIGxheWVyaW5n
LgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6dmlldyk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VDbGllbnRCYXNlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvZWZsL1BhZ2VDbGllbnRCYXNlLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
UGFnZUNsaWVudEJhc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudERlZmF1
bHRJbXBsLmNwcDogU3RhcnQgY2FsbGluZyBXS1ZpZXdDbGllbnQgY2FsbGJhY2tzIGluc3RlYWQg
b2YKKyAgICAgICAgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBFd2tWaWV3IHRvIGF2b2lkIHZp
b2xhdGluZyBBUEkgbGF5ZXJpbmcuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnREZWZhdWx0
SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1Bh
Z2VDbGllbnRMZWdhY3lJbXBsLmNwcDogU3RhcnQgY2FsbGluZyBXS1ZpZXdDbGllbnQgY2FsbGJh
Y2tzIGluc3RlYWQgb2YKKyAgICAgICAgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCBFd2tWaWV3
IHRvIGF2b2lkIHZpb2xhdGluZyBBUEkgbGF5ZXJpbmcuCisgICAgICAgIChXZWJLaXQ6OlBhZ2VD
bGllbnRMZWdhY3lJbXBsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAo
V2ViS2l0OjpWaWV3Q2xpZW50RWZsOjp0b0V3a1ZpZXcpOgorICAgICAgICAoV2ViS2l0OjpWaWV3
Q2xpZW50RWZsOjp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVu
dEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVu
dEVmbDo6Vmlld0NsaWVudEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6On5W
aWV3Q2xpZW50RWZsKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaDog
SW50cm9kdWNlIG5ldyBWaWV3Q2xpZW50RWZsIHdoaWNoIGhhbmRsZXMgV0tWaWV3Q2xpZW50IGNh
bGxiYWNrcworICAgICAgICBhbmQgaW50ZXJhY3RzIHdpdGggRXdrVmlldy4KKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChWaWV3Q2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6Vmlld0Ns
aWVudEVmbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Ojppbml0aWFsaXplQ2xpZW50KToKKyAgICAgICAgKFdl
YktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXc6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJWaWV3OjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlldy5oOiBBZGQgbmV3IFdlYlZpZXdDbGllbnQgbWVtYmVy
IGFuZCBjb3JyZXNwb25kaW5nIG1ldGhvZHMgdG8gaW50ZXJhY3QKKyAgICAgICAgd2l0aCBpdC4K
KyAgICAgICAgKFdlYlZpZXcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVu
dC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50
Ojp2aWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlk
Q2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGll
bnQuaDogQWRkIG5ldyBXZWJWaWV3Q2xpZW50IEFQSUNsaWVudCBmb3IgV0tWaWV3Q2xpZW50Lgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEzLTAyLTEyICBBZGVu
aWxzb24gQ2F2YWxjYW50aSAgPGNhdmFsY2FudGlpQGdtYWlsLmNvbT4KIAogICAgICAgICBbV0sy
XSBQYWdlIHJlbG9hZGluZyB3aWxsIGNyYXNoIFVJUHJvY2VzcyBhZnRlciBXZWJQcm9jZXNzIHdh
cyBraWxsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKaW5kZXggOWNlNDViMi4uMTU2YmExYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTk5LDYgKzk5LDcgQEAgbGlzdChBUFBFTkQg
V2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL2VmbC9SZXF1ZXN0TWFuYWdlckNsaWVudEVm
bC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1RleHRDaGVja2VyRWZsLmNwcAogICAgIFVJUHJvY2Vz
cy9lZmwvVmlicmF0aW9uQ2xpZW50RWZsLmNwcAorICAgIFVJUHJvY2Vzcy9lZmwvVmlld0NsaWVu
dEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkNvbnRleHRFZmwuY3BwCiAgICAgVUlQcm9j
ZXNzL2VmbC9XZWJDb250ZXh0TWVudVByb3h5RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2Vi
RnVsbFNjcmVlbk1hbmFnZXJQcm94eUVmbC5jcHAKQEAgLTEwOCw2ICsxMDksNyBAQCBsaXN0KEFQ
UEVORCBXZWJLaXQyX1NPVVJDRVMKICAgICBVSVByb2Nlc3MvZWZsL1dlYlByZWZlcmVuY2VzRWZs
LmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViUHJvY2Vzc1Byb3h5RWZsLmNwcAogICAgIFVJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3Bw
CiAKICAgICBVSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL2VmbC9XZWJJbnNwZWN0b3JTZXJ2ZXJF
ZmwuY3BwCiAgICAgVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9zb3VwL1dlYlNvY2tldFNlcnZl
clNvdXAuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5j
cHAKaW5kZXggMTFjZDI4YS4uMjEwZjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9lZmwvV0tWaWV3LmNwcApAQCAtNTIsNiArNTIsMTEgQEAgdm9pZCBXS1ZpZXdJbml0
aWFsaXplKFdLVmlld1JlZiB2aWV3UmVmKQogICAgIHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlhbGl6
ZSgpOwogfQogCit2b2lkIFdLVmlld1NldFZpZXdDbGllbnQoV0tWaWV3UmVmIHZpZXdSZWYsIGNv
bnN0IFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIHRvSW1wbCh2aWV3UmVmKS0+aW5pdGlh
bGl6ZUNsaWVudChjbGllbnQpOworfQorCiBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdS
ZWYgdmlld1JlZikKIHsKICAgICByZXR1cm4gdG9JbXBsKHZpZXdSZWYpLT5wYWdlUmVmKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAppbmRleCAxZmJmYjVm
Li4zMjU0NmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZs
L1dLVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3
LmgKQEAgLTIxLDYgKzIxLDcgQEAKICNkZWZpbmUgV0tWaWV3X2gKIAogI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8V2ViS2l0Mi9XS0dlb21ldHJ5Lmg+CiAKICNpZiBVU0Uo
RU8pCiB0eXBlZGVmIHN0cnVjdCBfRW8gRXZhczsKQEAgLTM0LDExICszNSwyNyBAQCB0eXBlZGVm
IHN0cnVjdCBfRXZhc19PYmplY3QgRXZhc19PYmplY3Q7CiBleHRlcm4gIkMiIHsKICNlbmRpZgog
Cit0eXBlZGVmIHZvaWQgKCpXS1ZpZXdWaWV3TmVlZHNEaXNwbGF5Q2FsbGJhY2spKFdLVmlld1Jl
ZiB2aWV3LCBXS1JlY3QgYXJlYSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZv
aWQgKCpXS1ZpZXdQYWdlRGlkQ2hhbmdlQ29udGVudHNTaXplQ2FsbGJhY2spKFdLVmlld1JlZiB2
aWV3LCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisKK3N0cnVjdCBXS1Zp
ZXdDbGllbnQgeworICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ZXJzaW9uOworICAgIGNvbnN0IHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjbGllbnRJbmZvOworCisgICAgLy8gVmVyc2lvbiAwCisgICAgV0tWaWV3
Vmlld05lZWRzRGlzcGxheUNhbGxiYWNrICAgICAgICAgICAgICAgICAgIHZpZXdOZWVkc0Rpc3Bs
YXk7CisgICAgV0tWaWV3UGFnZURpZENoYW5nZUNvbnRlbnRzU2l6ZUNhbGxiYWNrICAgICAgICAg
IGRpZENoYW5nZUNvbnRlbnRzU2l6ZTsKK307Cit0eXBlZGVmIHN0cnVjdCBXS1ZpZXdDbGllbnQg
V0tWaWV3Q2xpZW50OworCitlbnVtIHsga1dLVmlld0NsaWVudEN1cnJlbnRWZXJzaW9uID0gMCB9
OworCiBXS19FWFBPUlQgV0tWaWV3UmVmIFdLVmlld0NyZWF0ZShFdmFzKiBjYW52YXMsIFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiBXS19FWFBPUlQg
V0tWaWV3UmVmIFdLVmlld0NyZWF0ZVdpdGhGaXhlZExheW91dChFdmFzKiBjYW52YXMsIFdLQ29u
dGV4dFJlZiBjb250ZXh0LCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXApOwogCiBXS19FWFBPUlQg
dm9pZCBXS1ZpZXdJbml0aWFsaXplKFdLVmlld1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ZpZXdT
ZXRWaWV3Q2xpZW50KFdLVmlld1JlZiwgY29uc3QgV0tWaWV3Q2xpZW50Kik7CiAKIFdLX0VYUE9S
VCBXS1BhZ2VSZWYgV0tWaWV3R2V0UGFnZShXS1ZpZXdSZWYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgKaW5kZXggMGU3NjNh
My4uNWYxY2IwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0NhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5jbHVkZSAiV0tFaW5h
U2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNpbmNsdWRlICJld2tf
dmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUuaD4K
KyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQwLDkgKzQxLDYg
QEAgdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdDsK
IHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb247
CiB0eXBlZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKLXN0cnVjdCBFd2tfRG93bmxv
YWRfSm9iX0Vycm9yOwotc3RydWN0IEV3a19DU1NfU2l6ZTsKLQogbmFtZXNwYWNlIEV3a1ZpZXdD
YWxsYmFja3MgewogCiBlbnVtIENhbGxiYWNrVHlwZSB7CkBAIC0xNDEsOSArMTM5LDkgQEAgc3Ry
dWN0IENhbGxCYWNrIDxjYWxsYmFja1R5cGUsIEV3a19DU1NfU2l6ZSo+IDogcHVibGljIEV2YXNP
YmplY3RIb2xkZXIgewogICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1f
b2JqZWN0LCBDYWxsQmFja0luZm88Y2FsbGJhY2tUeXBlPjo6bmFtZSgpLCBzaXplKTsKICAgICB9
CiAKLSAgICB2b2lkIGNhbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYXJnKQorICAgIHZvaWQg
Y2FsbChjb25zdCBXS1NpemUmIGFyZykKICAgICB7Ci0gICAgICAgIEV3a19DU1NfU2l6ZSBzaXpl
ID0geyBhcmcud2lkdGgoKSwgYXJnLmhlaWdodCgpIH07CisgICAgICAgIEV3a19DU1NfU2l6ZSBz
aXplID0geyBhcmcud2lkdGgsIGFyZy5oZWlnaHQgfTsKICAgICAgICAgY2FsbCgmc2l6ZSk7CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNs
aWVudEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFz
ZS5jcHAKaW5kZXggNGRmZjcyMS4uYWNlYzYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKQEAgLTYxLDkgKzYxLDExIEBAIFBhZ2VDbGll
bnRCYXNlOjp+UGFnZUNsaWVudEJhc2UoKQogewogfQogCi1Fd2tWaWV3KiBQYWdlQ2xpZW50QmFz
ZTo6dmlldygpIGNvbnN0CitXZWJWaWV3KiBQYWdlQ2xpZW50QmFzZTo6dmlldygpCiB7Ci0gICAg
cmV0dXJuIG1fdmlldzsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3JhcnkuIEluIHRoZSBm
dXR1cmUsIG1fdmlldyBzaG91bGQgYmUKKyAgICAvLyBhIFdlYlZpZXcgaW5zdGVhZCBvZiBhbiBF
d2tWaWV3LgorICAgIHJldHVybiB0b0ltcGwobV92aWV3LT53a1ZpZXcoKSk7CiB9CiAKIC8vIFBh
Z2VDbGllbnQKQEAgLTczLDkgKzc1LDkgQEAgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBQ
YWdlQ2xpZW50QmFzZTo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCiAgICAgcmV0dXJuIGRyYXdp
bmdBcmVhLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50QmFzZTo6c2V0Vmlld05lZWRz
RGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3ZvaWQgUGFnZUNsaWVudEJhc2U6OnNl
dFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJlYSkKIHsKLSAgICBt
X3ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIHZpZXcoKS0+c2V0Vmlld05lZWRz
RGlzcGxheShhcmVhKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlzcGxheVZpZXcoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5oCmluZGV4IDBm
N2FkOGMuLjliNTI4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
UGFnZUNsaWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VD
bGllbnRCYXNlLmgKQEAgLTM0LDYgKzM0LDggQEAgY2xhc3MgRXdrVmlldzsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKK2NsYXNzIFdlYlZpZXc7CisKIGNsYXNzIFBhZ2VDbGllbnRCYXNlIDogcHVi
bGljIFBhZ2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VDbGllbnRCYXNlKCk7
CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVmlld3Bv
cnRTaXplKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIAotICAgIEV3a1ZpZXcqIHZpZXcoKSBjb25zdDsK
KyAgICBXZWJWaWV3KiB2aWV3KCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBQYWdlQ2xp
ZW50QmFzZShFd2tWaWV3Kik7CkBAIC0xMTIsNyArMTE0LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7CiAKIHByb3RlY3Rl
ZDoKLSAgICBFd2tWaWV3KiBtX3ZpZXc7CisgICAgRXdrVmlldyogbV92aWV3OyAvLyBGSVhNRTog
U2hvdWxkIGJlIGEgV2ViVmlldyB3aGVuIHBvc3NpYmxlLgogICAgIERlZmF1bHRVbmRvQ29udHJv
bGxlciBtX3VuZG9Db250cm9sbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCmluZGV4IDVhOTIyMTkuLmE0
NDhhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VD
bGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQYWdlQ2xpZW50RGVm
YXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQogewogICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOwogICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOwotICAgIG1f
dmlldy0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2VkPigpLmNhbGwoc2l6ZSk7Cisg
ICAgdmlldygpLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiB9CiAKIHZvaWQgUGFnZUNs
aWVudERlZmF1bHRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9z
aXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VDbGll
bnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVu
dExlZ2FjeUltcGwuY3BwCmluZGV4IDY1NTNhOWQuLjYzZTY3N2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCkBAIC03
MSw4ICs3MSw3IEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENoYW5nZVZpZXdwb3J0
UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0CiAKIHZvaWQgUGFnZUNsaWVudExl
Z2FjeUltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBz
aXplKQogewotICAgIG1fdmlldy0+c2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7Ci0gICAgbV92aWV3
LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChzaXplKTsKKyAgICB2
aWV3KCktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50
TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdmOGJmMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVmbC5jcHAKQEAgLTAs
MCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcuaCIKKyNpbmNsdWRl
ICJXS1ZpZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFja3M7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitFd2tWaWV3KiBWaWV3Q2xpZW50RWZsOjp0b0V3a1ZpZXcoY29uc3Qg
dm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Vmlld0NsaWVudEVm
bCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV92aWV3OworfQorCit2b2lkIFZp
ZXdDbGllbnRFZmw6OnZpZXdOZWVkc0Rpc3BsYXkoV0tWaWV3UmVmLCBXS1JlY3QsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pCit7CisgICAgdG9Fd2tWaWV3KGNsaWVudEluZm8pLT5zY2hlZHVsZVVw
ZGF0ZURpc3BsYXkoKTsKK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50
c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sK
KyAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8pOworICAgIGV3a1Zp
ZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIGV3a1ZpZXctPnNtYXJ0Q2FsbGJhY2s8
Q29udGVudHNTaXplQ2hhbmdlZD4oKS5jYWxsKHNpemUpOworfQorCitWaWV3Q2xpZW50RWZsOjpW
aWV3Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCisgICAgOiBtX3ZpZXcodmlldykKK3sKKyAgICBB
U1NFUlQobV92aWV3KTsKKworICAgIFdLVmlld0NsaWVudCB2aWV3Q2xpZW50OworICAgIG1lbXNl
dCgmdmlld0NsaWVudCwgMCwgc2l6ZW9mKFdLVmlld0NsaWVudCkpOworICAgIHZpZXdDbGllbnQu
dmVyc2lvbiA9IGtXS1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB2aWV3Q2xpZW50LmNs
aWVudEluZm8gPSB0aGlzOworICAgIHZpZXdDbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplID0g
ZGlkQ2hhbmdlQ29udGVudHNTaXplOworICAgIHZpZXdDbGllbnQudmlld05lZWRzRGlzcGxheSA9
IHZpZXdOZWVkc0Rpc3BsYXk7CisKKyAgICBXS1ZpZXdTZXRWaWV3Q2xpZW50KG1fdmlldy0+d2tW
aWV3KCksICZ2aWV3Q2xpZW50KTsKK30KKworVmlld0NsaWVudEVmbDo6flZpZXdDbGllbnRFZmwo
KQoreworICAgIFdLVmlld1NldFZpZXdDbGllbnQobV92aWV3LT53a1ZpZXcoKSwgMCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1Zp
ZXdDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTlmMGMy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xp
ZW50RWZsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBW
aWV3Q2xpZW50RWZsX2gKKyNkZWZpbmUgVmlld0NsaWVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJL
aXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXc7CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBWaWV3Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBQYXNzT3duUHRyPFZpZXdD
bGllbnRFZmw+IGNyZWF0ZShFd2tWaWV3KiB2aWV3KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBWaWV3Q2xpZW50RWZsKHZpZXcpKTsKKyAgICB9CisKKyAgICB+Vmlld0NsaWVu
dEVmbCgpOworCitwcml2YXRlOgorICAgIGV4cGxpY2l0IFZpZXdDbGllbnRFZmwoRXdrVmlldyop
OworCisgICAgc3RhdGljIEV3a1ZpZXcqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJbmZv
KTsKKyAgICBzdGF0aWMgdm9pZCB2aWV3TmVlZHNEaXNwbGF5KFdLVmlld1JlZiwgV0tSZWN0IGFy
ZWEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNv
bnRlbnRzU2l6ZShXS1ZpZXdSZWYsIFdLU2l6ZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisK
KyAgICBFd2tWaWV3KiBtX3ZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFZpZXdDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2VmbC9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
dy5jcHAKaW5kZXggNjQ5ZjBmYi4uNTYyMzc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlZpZXcuY3BwCkBAIC05NCw0ICs5NCwxOSBAQCB2b2lkIFdlYlZpZXc6OnJlc3VtZUFj
dGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKICAgICBtX3dlYlBhZ2VQcm94eS0+cmVzdW1l
QWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKTsKIH0KIAordm9pZCBXZWJWaWV3Ojppbml0
aWFsaXplQ2xpZW50KGNvbnN0IFdLVmlld0NsaWVudCogY2xpZW50KQoreworICAgIG1fY2xpZW50
LmluaXRpYWxpemUoY2xpZW50KTsKK30KKwordm9pZCBXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNw
bGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGFyZWEpCit7CisgICAgbV9jbGllbnQudmlld05l
ZWRzRGlzcGxheSh0aGlzLCBhcmVhKTsKK30KKwordm9pZCBXZWJWaWV3OjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKK3sKKyAgICBtX2NsaWVudC5k
aWRDaGFuZ2VDb250ZW50c1NpemUodGhpcywgc2l6ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaAppbmRleCA3ZWI1MmFkLi40
YjU2Yjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXcuaApAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94
eS5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVuY2VzLmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVu
dC5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTYsNiArNTcsMTEgQEAgcHVibGljOgog
ICAgIHZvaWQgc3VzcGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiAgICAgdm9p
ZCByZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpOwogCisgICAgLy8gVmlldyBj
bGllbnQuCisgICAgdm9pZCBpbml0aWFsaXplQ2xpZW50KGNvbnN0IFdLVmlld0NsaWVudCopOwor
ICAgIHZvaWQgc2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Cisg
ICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOwor
CiAgICAgLy8gRklYTUU6IFJlbW92ZSB3aGVuIHBvc3NpYmxlLgogICAgIEV2YXNfT2JqZWN0KiBl
dmFzT2JqZWN0KCkgeyByZXR1cm4gbV9ldmFzT2JqZWN0OyB9CiAgICAgV2ViUGFnZVByb3h5KiBw
YWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlUHJveHkuZ2V0KCk7IH0KQEAgLTYzLDYgKzY5LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IEFQSVR5cGU7IH0KIAorICAgIFdlYlZpZXdDbGllbnQgbV9jbGllbnQ7CiAgICAgUmVmUHRyPFdl
YlBhZ2VQcm94eT4gbV93ZWJQYWdlUHJveHk7CiAgICAgRXZhc19PYmplY3QqIG1fZXZhc09iamVj
dDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYlZpZXdD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWZjODBjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcApA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ry
b25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisK
K3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBX
ZWJWaWV3Q2xpZW50Ojp2aWV3TmVlZHNEaXNwbGF5KFdlYlZpZXcqIHZpZXcsIGNvbnN0IEludFJl
Y3QmIGFyZWEpCit7CisgICAgaWYgKCFtX2NsaWVudC52aWV3TmVlZHNEaXNwbGF5KQorICAgICAg
ICByZXR1cm47CisKKyAgICBtX2NsaWVudC52aWV3TmVlZHNEaXNwbGF5KHRvQVBJKHZpZXcpLCB0
b0FQSShhcmVhKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7Cit9CisKK3ZvaWQgV2ViVmlld0NsaWVu
dDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqIHZpZXcsIGNvbnN0IEludFNpemUmIHNp
emUpCit7CisgICAgaWYgKCFtX2NsaWVudC5kaWRDaGFuZ2VDb250ZW50c1NpemUpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fY2xpZW50LmRpZENoYW5nZUNvbnRlbnRzU2l6ZSh0b0FQSSh2aWV3
KSwgdG9BUEkoc2l6ZSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmll
d0NsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDVlODJkZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlld0NsaWVudC5oCkBAIC0w
LDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVmlld0NsaWVudF9o
CisjZGVmaW5lIFdlYlZpZXdDbGllbnRfaAorCisjaW5jbHVkZSAiQVBJQ2xpZW50LmgiCisjaW5j
bHVkZSAiV0tWaWV3LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIEludFJlY3Q7Citj
bGFzcyBJbnRTaXplOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVmlldzsK
KworY2xhc3MgV2ViVmlld0NsaWVudDogcHVibGljIEFQSUNsaWVudDxXS1ZpZXdDbGllbnQsIGtX
S1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbj4geworcHVibGljOgorICAgIHZvaWQgdmlld05lZWRz
RGlzcGxheShXZWJWaWV3KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgZGlk
Q2hhbmdlQ29udGVudHNTaXplKFdlYlZpZXcqLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFdlYlZpZXdDbGllbnRfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188058</attachid>
            <date>2013-02-13 04:48:39 -0800</date>
            <delta_ts>2013-02-13 08:18:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>109559_wkviewclient.patch</filename>
            <type>text/plain</type>
            <size>24129</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA3NTg3MTU0Li44YzljYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzQg
QEAKKzIwMTMtMDItMTMgIENocmlzdG9waGUgRHVtZXogIDxjaC5kdW1lekBzaXNhLnNhbXN1bmcu
Y29tPgorCisgICAgICAgIFtFRkxdW1dLMl0gSW50cm9kdWNlIFdLVmlld0NsaWVudCBDIEFQSQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5NTU5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRj
aCBpbnRyb2R1Y2VzIHRoZSBXS1ZpZXdDbGllbnQgQyBBUEkgZm9yIEVGTCdzIFdLVmlldy4gVGhl
IHB1cnBvc2Ugb2YKKyAgICAgICAgdGhpcyBuZXcgQyBBUEkgaXMgdG8gZXZlbnR1YWxseSByZW1v
dmUgdGhlIGludGVyZGVwZW5kZW5jeSBiZXR3ZWVuIEVGTCdzCisgICAgICAgIFBhZ2VDbGllbnQg
YW5kIEV3a1ZpZXcuIFdoZW4gY29tcGxldGVkLCBQYWdlQ2xpZW50IHNob3VsZCBvbmx5IGludGVy
YWN0IHdpdGgKKyAgICAgICAgV2ViVmlldyBhbmQgbm90IGJlIGF3YXJlIG9mIEV3a1ZpZXcgc28g
dGhhdCB3ZSBoYXZlIGEgY2xlYW4gc2VwYXJhdGlvbiBiZXR3ZWVuCisgICAgICAgIGludGVybmFs
IFdlYktpdDIgY2xhc3NlcyBhbmQgb3VyIEVGTCBFd2sgQVBJIGltcGxlbWVudGF0aW9uLgorCisg
ICAgICAgIFRoaXMgcGF0Y2ggaXMgb25seSBhIGZpcnN0IHN0ZXAgdG93YXJkcyB0aGlzIGdvYWwg
YXMgdGhlcmUgaXMgYSBsb3Qgb2Ygd29yaworICAgICAgICB0byBkbyB0byBhY2hpZXZlIGNvbXBs
ZXRlIHNlcGFyYXRpb24gYmV0d2VlbiBFd2tWaWV3IGFuZCBQYWdlQ2xpZW50LiBUaGUgcHVycG9z
ZQorICAgICAgICBvZiB0aGlzIHBhdGNoIGlzIHRvIGludHJvZHVjZSB0aGUgbmVlZGVkIGFyY2hp
dGVjdHVyZSB3aGljaCB3aWxsIGxhdGVyIGJlCisgICAgICAgIGV4dGVuZGVkIGJ5IGludHJvZHVj
aW5nIG5ldyBXS1ZpZXdDbGllbnQgY2FsbGJhY2tzLgorCisgICAgICAgICogUGxhdGZvcm1FZmwu
Y21ha2U6IEFkZCBuZXcgVmlld0NsaWVudEVmbC5jcHAgYW5kIFdlYlZpZXdDbGllbnQuY3BwIHRv
IEVGTCdzIENNYWtlCisgICAgICAgIGNvbmZpZ3VyYXRpb24uCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9DL2VmbC9XS1ZpZXcuY3BwOgorICAgICAgICAoV0tWaWV3U2V0Vmlld0NsaWVudCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaDogSW50cm9kdWNlIG5ldyBXS1Zp
ZXdDbGllbnQgQyBBUEkuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlldy5jcHA6
CisgICAgICAgIChFd2tWaWV3OjpFd2tWaWV3KTogSW5pdGlhbGl6ZSBWaWV3Q2xpZW50RWZsLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaDogQWRkIG5ldyBWaWV3Q2xpZW50
RWZsIG1lbWJlci4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChFd2tWaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6IFVwZGF0ZSBDb250ZW50
c1NpemVDaGFuZ2VkIHNtYXJ0IGNhbGxiYWNrIHRvCisgICAgICAgIGFjY2VwdCBhIFdLU2l6ZSBp
biBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhbiBJbnRSZWN0LgorICAgICAgICAqIFVJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudEJhc2UuY3BwOiBTdGFydCBjYWxsaW5nIFdLVmlld0NsaWVudCBjYWxsYmFj
a3MgaW5zdGVhZCBvZgorICAgICAgICBpbnRlcmFjdGluZyBkaXJlY3RseSB3aXRoIEV3a1ZpZXcg
dG8gYXZvaWQgdmlvbGF0aW5nIEFQSSBsYXllcmluZy4KKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEJhc2U6OnZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50QmFzZTo6c2V0Vmll
d05lZWRzRGlzcGxheSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGllbnRCYXNlKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHA6IFN0YXJ0IGNhbGxpbmcg
V0tWaWV3Q2xpZW50IGNhbGxiYWNrcyBpbnN0ZWFkIG9mCisgICAgICAgIGludGVyYWN0aW5nIGRp
cmVjdGx5IHdpdGggRXdrVmlldyB0byBhdm9pZCB2aW9sYXRpbmcgQVBJIGxheWVyaW5nLgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZSk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50TGVnYWN5SW1wbC5jcHA6IFN0
YXJ0IGNhbGxpbmcgV0tWaWV3Q2xpZW50IGNhbGxiYWNrcyBpbnN0ZWFkIG9mCisgICAgICAgIGlu
dGVyYWN0aW5nIGRpcmVjdGx5IHdpdGggRXdrVmlldyB0byBhdm9pZCB2aW9sYXRpbmcgQVBJIGxh
eWVyaW5nLgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50TGVnYWN5SW1wbDo6ZGlkQ2hhbmdl
Q29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3Bw
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVudEVmbDo6dG9F
d2tWaWV3KToKKyAgICAgICAgKFdlYktpdDo6Vmlld0NsaWVudEVmbDo6dmlld05lZWRzRGlzcGxh
eSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6
ZSk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OlZpZXdDbGllbnRFZmwpOgorICAg
ICAgICAoV2ViS2l0OjpWaWV3Q2xpZW50RWZsOjp+Vmlld0NsaWVudEVmbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmg6IEludHJvZHVjZSBuZXcgVmlld0NsaWVudEVm
bCB3aGljaCBoYW5kbGVzIFdLVmlld0NsaWVudCBjYWxsYmFja3MKKyAgICAgICAgYW5kIGludGVy
YWN0cyB3aXRoIEV3a1ZpZXcuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoVmlld0NsaWVu
dEVmbCk6CisgICAgICAgIChXZWJLaXQ6OlZpZXdDbGllbnRFZmw6OmNyZWF0ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
aW5pdGlhbGl6ZUNsaWVudCk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlldzo6
ZGlkQ2hhbmdlQ29udGVudHNTaXplKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXcu
aDogQWRkIG5ldyBXZWJWaWV3Q2xpZW50IG1lbWJlciBhbmQgY29ycmVzcG9uZGluZyBtZXRob2Rz
IHRvIGludGVyYWN0CisgICAgICAgIHdpdGggaXQuCisgICAgICAgIChXZWJWaWV3KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6dmlld05lZWRzRGlzcGxheSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAg
ICAgICogVUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50Lmg6IEFkZCBuZXcgV2ViVmlld0NsaWVu
dCBBUElDbGllbnQgZm9yIFdLVmlld0NsaWVudC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViS2l0KToKKwogMjAxMy0wMi0xMiAgQWRlbmlsc29uIENhdmFsY2FudGkgIDxjYXZhbGNh
bnRpaUBnbWFpbC5jb20+CiAKICAgICAgICAgW1dLMl0gUGFnZSByZWxvYWRpbmcgd2lsbCBjcmFz
aCBVSVByb2Nlc3MgYWZ0ZXIgV2ViUHJvY2VzcyB3YXMga2lsbGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZs
LmNtYWtlCmluZGV4IDljZTQ1YjIuLjE1NmJhMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtl
CkBAIC05OSw2ICs5OSw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9lZmwvUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9U
ZXh0Q2hlY2tlckVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1ZpYnJhdGlvbkNsaWVudEVmbC5j
cHAKKyAgICBVSVByb2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2Vm
bC9XZWJDb250ZXh0RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvV2ViQ29udGV4dE1lbnVQcm94
eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHlFZmwu
Y3BwCkBAIC0xMDgsNiArMTA5LDcgQEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAg
VUlQcm9jZXNzL2VmbC9XZWJQcmVmZXJlbmNlc0VmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dl
YlByb2Nlc3NQcm94eUVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCisgICAg
VUlQcm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcAogCiAgICAgVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9lZmwvV2ViSW5zcGVjdG9yU2VydmVyRWZsLmNwcAogICAgIFVJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvc291cC9XZWJTb2NrZXRTZXJ2ZXJTb3VwLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuY3BwCmluZGV4IDExY2QyOGEuLjIxMGYyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9lZmwvV0tWaWV3LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5jcHAKQEAg
LTUyLDYgKzUyLDExIEBAIHZvaWQgV0tWaWV3SW5pdGlhbGl6ZShXS1ZpZXdSZWYgdmlld1JlZikK
ICAgICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemUoKTsKIH0KIAordm9pZCBXS1ZpZXdTZXRW
aWV3Q2xpZW50KFdLVmlld1JlZiB2aWV3UmVmLCBjb25zdCBXS1ZpZXdDbGllbnQqIGNsaWVudCkK
K3sKKyAgICB0b0ltcGwodmlld1JlZiktPmluaXRpYWxpemVDbGllbnQoY2xpZW50KTsKK30KKwog
V0tQYWdlUmVmIFdLVmlld0dldFBhZ2UoV0tWaWV3UmVmIHZpZXdSZWYpCiB7CiAgICAgcmV0dXJu
IHRvSW1wbCh2aWV3UmVmKS0+cGFnZVJlZigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9lZmwvV0tWaWV3LmgKaW5kZXggMWZiZmI1Zi4uMzI1NDZjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL2VmbC9XS1ZpZXcuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvZWZsL1dLVmlldy5oCkBAIC0yMSw2ICsyMSw3IEBACiAjZGVm
aW5lIFdLVmlld19oCiAKICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdl
YktpdDIvV0tHZW9tZXRyeS5oPgogCiAjaWYgVVNFKEVPKQogdHlwZWRlZiBzdHJ1Y3QgX0VvIEV2
YXM7CkBAIC0zNCwxMSArMzUsMjcgQEAgdHlwZWRlZiBzdHJ1Y3QgX0V2YXNfT2JqZWN0IEV2YXNf
T2JqZWN0OwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAordHlwZWRlZiB2b2lkICgqV0tWaWV3Vmll
d05lZWRzRGlzcGxheUNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tSZWN0IGFyZWEsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pOwordHlwZWRlZiB2b2lkICgqV0tWaWV3UGFnZURpZENoYW5nZUNv
bnRlbnRzU2l6ZUNhbGxiYWNrKShXS1ZpZXdSZWYgdmlldywgV0tTaXplIHNpemUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworCitzdHJ1Y3QgV0tWaWV3Q2xpZW50IHsKKyAgICBpbnQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjsKKyAgICBjb25z
dCB2b2lkKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SW5mbzsK
KworICAgIC8vIFZlcnNpb24gMAorICAgIFdLVmlld1ZpZXdOZWVkc0Rpc3BsYXlDYWxsYmFjayAg
ICAgICAgICAgICAgICAgICB2aWV3TmVlZHNEaXNwbGF5OworICAgIFdLVmlld1BhZ2VEaWRDaGFu
Z2VDb250ZW50c1NpemVDYWxsYmFjayAgICAgICAgICBkaWRDaGFuZ2VDb250ZW50c1NpemU7Cit9
OwordHlwZWRlZiBzdHJ1Y3QgV0tWaWV3Q2xpZW50IFdLVmlld0NsaWVudDsKKworZW51bSB7IGtX
S1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbiA9IDAgfTsKKwogV0tfRVhQT1JUIFdLVmlld1JlZiBX
S1ZpZXdDcmVhdGUoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwKTsKIAogV0tfRVhQT1JUIFdLVmlld1JlZiBXS1ZpZXdDcmVhdGVXaXRo
Rml4ZWRMYXlvdXQoRXZhcyogY2FudmFzLCBXS0NvbnRleHRSZWYgY29udGV4dCwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwKTsKIAogV0tfRVhQT1JUIHZvaWQgV0tWaWV3SW5pdGlhbGl6ZShXS1Zp
ZXdSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tWaWV3U2V0Vmlld0NsaWVudChXS1ZpZXdSZWYsIGNv
bnN0IFdLVmlld0NsaWVudCopOwogCiBXS19FWFBPUlQgV0tQYWdlUmVmIFdLVmlld0dldFBhZ2Uo
V0tWaWV3UmVmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
LmNwcAppbmRleCBjNDUzMzEzLi5lNjNhZTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIlBhZ2VQ
b2xpY3lDbGllbnRFZmwuaCIKICNpbmNsdWRlICJQYWdlVUlDbGllbnRFZmwuaCIKICNpbmNsdWRl
ICJTbmFwc2hvdEltYWdlR0wuaCIKKyNpbmNsdWRlICJWaWV3Q2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiV0tEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldL
TnVtYmVyLmgiCkBAIC0yMzIsNiArMjMzLDcgQEAgRXdrVmlldzo6RXdrVmlldyhFdmFzX09iamVj
dCogZXZhc09iamVjdCwgUGFzc1JlZlB0cjxFd2tDb250ZXh0PiBjb250ZXh0LCBXS1BhZ2UKICAg
ICAsIG1fY29udGV4dE1lbnVDbGllbnQoQ29udGV4dE1lbnVDbGllbnRFZmw6OmNyZWF0ZSh0aGlz
KSkKICAgICAsIG1fZmluZENsaWVudChGaW5kQ2xpZW50RWZsOjpjcmVhdGUodGhpcykpCiAgICAg
LCBtX2Zvcm1DbGllbnQoRm9ybUNsaWVudEVmbDo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV92aWV3
Q2xpZW50KFZpZXdDbGllbnRFZmw6OmNyZWF0ZSh0aGlzKSkKICNpZiBFTkFCTEUoVklCUkFUSU9O
KQogICAgICwgbV92aWJyYXRpb25DbGllbnQoVmlicmF0aW9uQ2xpZW50RWZsOjpjcmVhdGUodGhp
cykpCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L0V3a1ZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXcuaApp
bmRleCA5YWRmYjBmLi5lNDJkMTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9Fd2tWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvRXdrVmlldy5oCkBAIC02MSw2ICs2MSw3IEBAIGNsYXNzIFBhZ2VDbGllbnRCYXNlOwogY2xh
c3MgUGFnZUxvYWRDbGllbnRFZmw7CiBjbGFzcyBQYWdlUG9saWN5Q2xpZW50RWZsOwogY2xhc3Mg
UGFnZVVJQ2xpZW50RWZsOworY2xhc3MgVmlld0NsaWVudEVmbDsKIGNsYXNzIFdlYkNvbnRleHRN
ZW51SXRlbURhdGE7CiBjbGFzcyBXZWJDb250ZXh0TWVudVByb3h5RWZsOwogY2xhc3MgV2ViUGFn
ZUdyb3VwOwpAQCAtMjY3LDYgKzI2OCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6
Q29udGV4dE1lbnVDbGllbnRFZmw+IG1fY29udGV4dE1lbnVDbGllbnQ7CiAgICAgT3duUHRyPFdl
YktpdDo6RmluZENsaWVudEVmbD4gbV9maW5kQ2xpZW50OwogICAgIE93blB0cjxXZWJLaXQ6OkZv
cm1DbGllbnRFZmw+IG1fZm9ybUNsaWVudDsKKyAgICBPd25QdHI8V2ViS2l0OjpWaWV3Q2xpZW50
RWZsPiBtX3ZpZXdDbGllbnQ7CiAjaWYgRU5BQkxFKFZJQlJBVElPTikKICAgICBPd25QdHI8V2Vi
S2l0OjpWaWJyYXRpb25DbGllbnRFZmw+IG1fdmlicmF0aW9uQ2xpZW50OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tz
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmgK
aW5kZXggMGU3NjNhMy4uNWYxY2IwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0NhbGxiYWNrcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaApAQCAtMjgsOCArMjgsOSBAQAogCiAjaW5j
bHVkZSAiV0tFaW5hU2hhcmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiZXdrX3ByaXZhdGUuaCIKKyNp
bmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgPEV2YXMuaD4KLSNpbmNsdWRlIDxXZWJDb3Jl
L0ludFNpemUuaD4KKyNpbmNsdWRlIDxXZWJLaXQyL1dLR2VvbWV0cnkuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTQwLDkgKzQxLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdDsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfTmF2aWdhdGlvbl9Qb2xp
Y3lfRGVjaXNpb247CiB0eXBlZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKLXN0cnVj
dCBFd2tfRG93bmxvYWRfSm9iX0Vycm9yOwotc3RydWN0IEV3a19DU1NfU2l6ZTsKLQogbmFtZXNw
YWNlIEV3a1ZpZXdDYWxsYmFja3MgewogCiBlbnVtIENhbGxiYWNrVHlwZSB7CkBAIC0xNDEsOSAr
MTM5LDkgQEAgc3RydWN0IENhbGxCYWNrIDxjYWxsYmFja1R5cGUsIEV3a19DU1NfU2l6ZSo+IDog
cHVibGljIEV2YXNPYmplY3RIb2xkZXIgewogICAgICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKG1fb2JqZWN0LCBDYWxsQmFja0luZm88Y2FsbGJhY2tUeXBlPjo6bmFtZSgpLCBz
aXplKTsKICAgICB9CiAKLSAgICB2b2lkIGNhbGwoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgYXJn
KQorICAgIHZvaWQgY2FsbChjb25zdCBXS1NpemUmIGFyZykKICAgICB7Ci0gICAgICAgIEV3a19D
U1NfU2l6ZSBzaXplID0geyBhcmcud2lkdGgoKSwgYXJnLmhlaWdodCgpIH07CisgICAgICAgIEV3
a19DU1NfU2l6ZSBzaXplID0geyBhcmcud2lkdGgsIGFyZy5oZWlnaHQgfTsKICAgICAgICAgY2Fs
bCgmc2l6ZSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvUGFnZUNsaWVudEJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Q
YWdlQ2xpZW50QmFzZS5jcHAKaW5kZXggNGRmZjcyMS4uYWNlYzYwMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFzZS5jcHAKQEAgLTYxLDkgKzYxLDEx
IEBAIFBhZ2VDbGllbnRCYXNlOjp+UGFnZUNsaWVudEJhc2UoKQogewogfQogCi1Fd2tWaWV3KiBQ
YWdlQ2xpZW50QmFzZTo6dmlldygpIGNvbnN0CitXZWJWaWV3KiBQYWdlQ2xpZW50QmFzZTo6dmll
dygpCiB7Ci0gICAgcmV0dXJuIG1fdmlldzsKKyAgICAvLyBGSVhNRTogVGhpcyBpcyB0ZW1wb3Jh
cnkuIEluIHRoZSBmdXR1cmUsIG1fdmlldyBzaG91bGQgYmUKKyAgICAvLyBhIFdlYlZpZXcgaW5z
dGVhZCBvZiBhbiBFd2tWaWV3LgorICAgIHJldHVybiB0b0ltcGwobV92aWV3LT53a1ZpZXcoKSk7
CiB9CiAKIC8vIFBhZ2VDbGllbnQKQEAgLTczLDkgKzc1LDkgQEAgUGFzc093blB0cjxEcmF3aW5n
QXJlYVByb3h5PiBQYWdlQ2xpZW50QmFzZTo6Y3JlYXRlRHJhd2luZ0FyZWFQcm94eSgpCiAgICAg
cmV0dXJuIGRyYXdpbmdBcmVhLnJlbGVhc2UoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50QmFzZTo6
c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JikKK3ZvaWQgUGFnZUNs
aWVudEJhc2U6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgYXJl
YSkKIHsKLSAgICBtX3ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIHZpZXcoKS0+
c2V0Vmlld05lZWRzRGlzcGxheShhcmVhKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50QmFzZTo6ZGlz
cGxheVZpZXcoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdl
Q2xpZW50QmFzZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50QmFz
ZS5oCmluZGV4IDBmN2FkOGMuLjliNTI4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9lZmwvUGFnZUNsaWVudEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnRCYXNlLmgKQEAgLTM0LDYgKzM0LDggQEAgY2xhc3MgRXdrVmlldzsK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFdlYlZpZXc7CisKIGNsYXNzIFBhZ2VDbGll
bnRCYXNlIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgflBhZ2VD
bGllbnRCYXNlKCk7CkBAIC00Miw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVmlld3BvcnRTaXplKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpID0gMDsKIAotICAgIEV3a1ZpZXcqIHZp
ZXcoKSBjb25zdDsKKyAgICBXZWJWaWV3KiB2aWV3KCk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBQYWdlQ2xpZW50QmFzZShFd2tWaWV3Kik7CkBAIC0xMTIsNyArMTE0LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7
CiAKIHByb3RlY3RlZDoKLSAgICBFd2tWaWV3KiBtX3ZpZXc7CisgICAgRXdrVmlldyogbV92aWV3
OyAvLyBGSVhNRTogU2hvdWxkIGJlIGEgV2ViVmlldyB3aGVuIHBvc3NpYmxlLgogICAgIERlZmF1
bHRVbmRvQ29udHJvbGxlciBtX3VuZG9Db250cm9sbGVyOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlQ2xpZW50RGVmYXVsdEltcGwuY3BwCmluZGV4
IDVhOTIyMTkuLmE0NDhhODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudERlZmF1bHRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvZWZsL1BhZ2VDbGllbnREZWZhdWx0SW1wbC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50RGVmYXVsdEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKQogewogICAgIEFTU0VSVChtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIp
OwogICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNp
emUpOwotICAgIG1fdmlldy0+c21hcnRDYWxsYmFjazxDb250ZW50c1NpemVDaGFuZ2VkPigpLmNh
bGwoc2l6ZSk7CisgICAgdmlldygpLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7CiB9CiAK
IHZvaWQgUGFnZUNsaWVudERlZmF1bHRJbXBsOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VDbGllbnRMZWdhY3lJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvUGFnZUNsaWVudExlZ2FjeUltcGwuY3BwCmluZGV4IDY1NTNhOWQuLjYzZTY3N2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUNsaWVudExlZ2FjeUlt
cGwuY3BwCkBAIC03MSw4ICs3MSw3IEBAIHZvaWQgUGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENo
YW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0CiAKIHZvaWQg
UGFnZUNsaWVudExlZ2FjeUltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKQogewotICAgIG1fdmlldy0+c2NoZWR1bGVVcGRhdGVEaXNwbGF5KCk7
Ci0gICAgbV92aWV3LT5zbWFydENhbGxiYWNrPENvbnRlbnRzU2l6ZUNoYW5nZWQ+KCkuY2FsbChz
aXplKTsKKyAgICB2aWV3KCktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKIH0KIAogdm9p
ZCBQYWdlQ2xpZW50TGVnYWN5SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9W
aWV3Q2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVu
dEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzdmOGJmMwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvVmlld0NsaWVudEVm
bC5jcHAKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5n
IEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlZpZXdDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIkV3a1ZpZXcu
aCIKKyNpbmNsdWRlICJXS1ZpZXcuaCIKKwordXNpbmcgbmFtZXNwYWNlIEV3a1ZpZXdDYWxsYmFj
a3M7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitFd2tWaWV3KiBWaWV3Q2xpZW50RWZsOjp0b0V3
a1ZpZXcoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
Vmlld0NsaWVudEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKS0+bV92aWV3Owor
fQorCit2b2lkIFZpZXdDbGllbnRFZmw6OnZpZXdOZWVkc0Rpc3BsYXkoV0tWaWV3UmVmLCBXS1Jl
Y3QsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgdG9Fd2tWaWV3KGNsaWVudEluZm8p
LT5zY2hlZHVsZVVwZGF0ZURpc3BsYXkoKTsKK30KKwordm9pZCBWaWV3Q2xpZW50RWZsOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUgc2l6ZSwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbykKK3sKKyAgICBFd2tWaWV3KiBld2tWaWV3ID0gdG9Fd2tWaWV3KGNsaWVudEluZm8p
OworICAgIGV3a1ZpZXctPnNjaGVkdWxlVXBkYXRlRGlzcGxheSgpOworICAgIGV3a1ZpZXctPnNt
YXJ0Q2FsbGJhY2s8Q29udGVudHNTaXplQ2hhbmdlZD4oKS5jYWxsKHNpemUpOworfQorCitWaWV3
Q2xpZW50RWZsOjpWaWV3Q2xpZW50RWZsKEV3a1ZpZXcqIHZpZXcpCisgICAgOiBtX3ZpZXcodmll
dykKK3sKKyAgICBBU1NFUlQobV92aWV3KTsKKworICAgIFdLVmlld0NsaWVudCB2aWV3Q2xpZW50
OworICAgIG1lbXNldCgmdmlld0NsaWVudCwgMCwgc2l6ZW9mKFdLVmlld0NsaWVudCkpOworICAg
IHZpZXdDbGllbnQudmVyc2lvbiA9IGtXS1ZpZXdDbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICB2
aWV3Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIHZpZXdDbGllbnQuZGlkQ2hhbmdlQ29u
dGVudHNTaXplID0gZGlkQ2hhbmdlQ29udGVudHNTaXplOworICAgIHZpZXdDbGllbnQudmlld05l
ZWRzRGlzcGxheSA9IHZpZXdOZWVkc0Rpc3BsYXk7CisKKyAgICBXS1ZpZXdTZXRWaWV3Q2xpZW50
KG1fdmlldy0+d2tWaWV3KCksICZ2aWV3Q2xpZW50KTsKK30KKworVmlld0NsaWVudEVmbDo6flZp
ZXdDbGllbnRFZmwoKQoreworICAgIFdLVmlld1NldFZpZXdDbGllbnQobV92aWV3LT53a1ZpZXco
KSwgMCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9WaWV3Q2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL1ZpZXdDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi4yZWJkM2EyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9WaWV3Q2xpZW50RWZsLmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBWaWV3Q2xpZW50RWZsX2gKKyNkZWZpbmUgVmlld0NsaWVudEVmbF9oCisKKyNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPFdlYktpdDIvV0tHZW9tZXRyeS5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK2NsYXNzIEV3a1ZpZXc7CisKK25hbWVz
cGFjZSBXZWJLaXQgeworCitjbGFzcyBWaWV3Q2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc093blB0cjxWaWV3Q2xpZW50RWZsPiBjcmVhdGUoRXdrVmlldyogdmlldykKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgVmlld0NsaWVudEVmbCh2aWV3KSk7CisgICAg
fQorCisgICAgflZpZXdDbGllbnRFZmwoKTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBWaWV3
Q2xpZW50RWZsKEV3a1ZpZXcqKTsKKworICAgIHN0YXRpYyBFd2tWaWV3KiB0b0V3a1ZpZXcoY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgdmlld05lZWRzRGlzcGxheShX
S1ZpZXdSZWYsIFdLUmVjdCBhcmVhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoV0tWaWV3UmVmLCBXS1NpemUsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworCisgICAgRXdrVmlldyogbV92aWV3OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBWaWV3Q2xpZW50RWZsX2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXcuY3BwCmluZGV4IDY0OWYwZmIuLjU2MjM3OTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3LmNwcApAQCAtOTQsNCArOTQsMTkgQEAgdm9p
ZCBXZWJWaWV3OjpyZXN1bWVBY3RpdmVET01PYmplY3RzQW5kQW5pbWF0aW9ucygpCiAgICAgbV93
ZWJQYWdlUHJveHktPnJlc3VtZUFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCk7CiB9CiAK
K3ZvaWQgV2ViVmlldzo6aW5pdGlhbGl6ZUNsaWVudChjb25zdCBXS1ZpZXdDbGllbnQqIGNsaWVu
dCkKK3sKKyAgICBtX2NsaWVudC5pbml0aWFsaXplKGNsaWVudCk7Cit9CisKK3ZvaWQgV2ViVmll
dzo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBhcmVhKQorewor
ICAgIG1fY2xpZW50LnZpZXdOZWVkc0Rpc3BsYXkodGhpcywgYXJlYSk7Cit9CisKK3ZvaWQgV2Vi
Vmlldzo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUp
Cit7CisgICAgbV9jbGllbnQuZGlkQ2hhbmdlQ29udGVudHNTaXplKHRoaXMsIHNpemUpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViVmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJWaWV3
LmgKaW5kZXggN2ViNTJhZC4uNGI1NmI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9X
ZWJWaWV3LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKICNp
bmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQcmVmZXJlbmNlcy5oIgorI2lu
Y2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTU2LDYg
KzU3LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHN1c3BlbmRBY3RpdmVET01PYmplY3RzQW5kQW5p
bWF0aW9ucygpOwogICAgIHZvaWQgcmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMo
KTsKIAorICAgIC8vIFZpZXcgY2xpZW50LgorICAgIHZvaWQgaW5pdGlhbGl6ZUNsaWVudChjb25z
dCBXS1ZpZXdDbGllbnQqKTsKKyAgICB2b2lkIHNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOworICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmKTsKKwogICAgIC8vIEZJWE1FOiBSZW1vdmUgd2hlbiBwb3NzaWJsZS4K
ICAgICBFdmFzX09iamVjdCogZXZhc09iamVjdCgpIHsgcmV0dXJuIG1fZXZhc09iamVjdDsgfQog
ICAgIFdlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZVByb3h5LmdldCgpOyB9
CkBAIC02Myw2ICs2OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmlydHVhbCBUeXBlIHR5
cGUoKSBjb25zdCB7IHJldHVybiBBUElUeXBlOyB9CiAKKyAgICBXZWJWaWV3Q2xpZW50IG1fY2xp
ZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG1fd2ViUGFnZVByb3h5OwogICAgIEV2YXNf
T2JqZWN0KiBtX2V2YXNPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9XZWJWaWV3Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlld0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
MDVmYzgwYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
V2ViVmlld0NsaWVudC5jcHAKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJT
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKworI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKK3ZvaWQgV2ViVmlld0NsaWVudDo6dmlld05lZWRzRGlzcGxheShXZWJWaWV3
KiB2aWV3LCBjb25zdCBJbnRSZWN0JiBhcmVhKQoreworICAgIGlmICghbV9jbGllbnQudmlld05l
ZWRzRGlzcGxheSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbGllbnQudmlld05lZWRzRGlz
cGxheSh0b0FQSSh2aWV3KSwgdG9BUEkoYXJlYSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQor
Cit2b2lkIFdlYlZpZXdDbGllbnQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShXZWJWaWV3KiB2aWV3
LCBjb25zdCBJbnRTaXplJiBzaXplKQoreworICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQ29u
dGVudHNTaXplKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2NsaWVudC5kaWRDaGFuZ2VDb250
ZW50c1NpemUodG9BUEkodmlldyksIHRvQVBJKHNpemUpLCBtX2NsaWVudC5jbGllbnRJbmZvKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9l
ZmwvV2ViVmlld0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1
ZTgyZGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dl
YlZpZXdDbGllbnQuaApAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlZpZXdDbGllbnRfaAorI2RlZmluZSBXZWJWaWV3Q2xpZW50X2gKKworI2luY2x1ZGUg
IkFQSUNsaWVudC5oIgorI2luY2x1ZGUgIldLVmlldy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBJbnRSZWN0OworY2xhc3MgSW50U2l6ZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIFdlYlZpZXc7CisKK2NsYXNzIFdlYlZpZXdDbGllbnQ6IHB1YmxpYyBBUElDbGll
bnQ8V0tWaWV3Q2xpZW50LCBrV0tWaWV3Q2xpZW50Q3VycmVudFZlcnNpb24+IHsKK3B1YmxpYzoK
KyAgICB2b2lkIHZpZXdOZWVkc0Rpc3BsYXkoV2ViVmlldyosIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKTsKKyAgICB2b2lkIGRpZENoYW5nZUNvbnRlbnRzU2l6ZShXZWJWaWV3KiwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAv
LyBXZWJWaWV3Q2xpZW50X2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>