<?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>19143</bug_id>
          
          <creation_ts>2008-05-20 06:25:47 -0700</creation_ts>
          <short_desc>[GTK] Improve the handling of new window requests</short_desc>
          <delta_ts>2008-10-18 14:43:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>19130</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>16881</dependson>
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Marco Barisione">marco.barisione</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>gustavo</cc>
    
    <cc>hortont424</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>80976</commentid>
    <comment_count>0</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-20 06:25:47 -0700</bug_when>
    <thetext>Currently the support in WebKit GTK to open new windows (via js, target=_blank, etc.) is very limited and buggy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>80980</commentid>
    <comment_count>1</comment_count>
      <attachid>21254</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-20 07:05:24 -0700</bug_when>
    <thetext>Created attachment 21254
Allow more control on the creation of new windows

I added a create-web-view signal so handlers can create and return a new web view. I also added WebKitWebViewRequest and WebKitWebWindowFeatures, containing information on the new web view (like the network request or the requested size).

Initially the web view should be invisible and shown only after the emission of show-web-view. If no handlers handle this signal then the default action is to show the toplevel widget containing the web view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81106</commentid>
    <comment_count>2</comment_count>
      <attachid>21272</attachid>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-21 11:14:11 -0700</bug_when>
    <thetext>Created attachment 21272
Allow more control on the creation of new windows

Same patch as before but I added a missing const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81212</commentid>
    <comment_count>3</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-22 10:21:04 -0700</bug_when>
    <thetext>Note that some things will not work (e.g. requiring via js a specific size for a window) because of bug #16881.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>81284</commentid>
    <comment_count>4</comment_count>
    <who name="Marco Barisione">marco.barisione</who>
    <bug_when>2008-05-23 03:17:50 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of 19130 ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>83975</commentid>
    <comment_count>5</comment_count>
      <attachid>21272</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2008-06-20 10:54:09 -0700</bug_when>
    <thetext>Comment on attachment 21272
Allow more control on the creation of new windows

This is obsolete now, so no need to review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95814</commentid>
    <comment_count>6</comment_count>
    <who name="Timothy P. Horton">hortont424</who>
    <bug_when>2008-10-17 18:31:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 21272 [edit])
&gt; This is obsolete now, so no need to review.

It seems that bug #16562 had code to fix this, but it was then pulled from that large patch in favor of this bug (comment 20 on that bug), and then this bug was obsoleted in favor of #16562.

This is clearly a blocker for the use of WebKit on the GTK platform (without insane workarounds, it&apos;s impossible to open new windows, without this patch - Epiphany Webkit can&apos;t do it, etc.).

Not sure what can be done (though this patch seems to do the job...), but /something/ needs to be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95880</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2008-10-18 14:43:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This is clearly a blocker for the use of WebKit on the GTK platform (without
&gt; insane workarounds, it&apos;s impossible to open new windows, without this patch -
&gt; Epiphany Webkit can&apos;t do it, etc.).

Agreed.
 
&gt; Not sure what can be done (though this patch seems to do the job...), but
&gt; /something/ needs to be done.

What needs to be done is to get 16562 and 19130 (which has the current patch for implementing new windows, a merge from the one provided here with mine) reviewed and landed, in my opinion. 


</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21254</attachid>
            <date>2008-05-20 07:05:24 -0700</date>
            <delta_ts>2008-05-21 11:14:11 -0700</delta_ts>
            <desc>Allow more control on the creation of new windows</desc>
            <filename>new-window.patch</filename>
            <type>text/plain</type>
            <size>34571</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbmUgMzM5MjYpCisrKyBHTlVtYWtlZmlsZS5hbQkoY29waWEgbG9jYWxlKQpAQCAtMjk4LDYg
KzI5OCw4IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9z
b3VyY2VzICs9IFwKQEAgLTMyMSw2ICszMjMsOCBAQAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCShyZXZpc2lvbmUgMzM5MjYpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTIxLDEyICsyMSwxNCBAQAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcu
aCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHBy
aXZhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpbmRvd0Zl
YXR1cmVzLmgiCkBAIC05NCwyNSArOTYsNTIgQEAKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9j
dXMoR1RLX1dJTkRPVyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJh
bWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFs
b2cpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVz
dCogbmV0d29ya1JlcXVlc3QgPSAwOworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5
KCkpCisgICAgICAgIG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXco
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICpraXRGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworICAgIGtpdEZlYXR1cmVzLT54ID0gY29y
ZUZlYXR1cmVzLnhTZXQgPyBjb3JlRmVhdHVyZXMueCA6IC0xOworICAgIGtpdEZlYXR1cmVzLT55
ID0gY29yZUZlYXR1cmVzLnlTZXQgPyBjb3JlRmVhdHVyZXMueSA6IC0xOworICAgIGtpdEZlYXR1
cmVzLT53aWR0aCA9IGNvcmVGZWF0dXJlcy53aWR0aFNldCA/IGNvcmVGZWF0dXJlcy53aWR0aCA6
IC0xOworICAgIGtpdEZlYXR1cmVzLT5oZWlnaHQgPSBjb3JlRmVhdHVyZXMuaGVpZ2h0U2V0ID8g
Y29yZUZlYXR1cmVzLmhlaWdodCA6IC0xOworICAgIGtpdEZlYXR1cmVzLT5zaG93X21lbnUgPSBj
b3JlRmVhdHVyZXMubWVudUJhclZpc2libGU7CisgICAga2l0RmVhdHVyZXMtPnNob3dfc3RhdHVz
YmFyID0gY29yZUZlYXR1cmVzLnN0YXR1c0JhclZpc2libGU7CisgICAga2l0RmVhdHVyZXMtPnNo
b3dfdG9vbGJhciA9IGNvcmVGZWF0dXJlcy50b29sQmFyVmlzaWJsZTsKKyAgICBraXRGZWF0dXJl
cy0+c2hvd191cmkgPSBjb3JlRmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlOworICAgIGtpdEZl
YXR1cmVzLT5zaG93X3Njcm9sbGJhcnMgPSBjb3JlRmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGU7
CisgICAga2l0RmVhdHVyZXMtPnJlc2l6YWJsZSA9IGNvcmVGZWF0dXJlcy5yZXNpemFibGU7Cisg
ICAga2l0RmVhdHVyZXMtPmZ1bGxzY3JlZW4gPSBjb3JlRmVhdHVyZXMuZnVsbHNjcmVlbjsKKyAg
ICBraXRGZWF0dXJlcy0+ZGlhbG9nID0gY29yZUZlYXR1cmVzLmRpYWxvZzsKKworICAgIGdwb2lu
dGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JF
UVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUi
LCBmcmFtZUxvYWRSZXF1ZXN0LmZyYW1lTmFtZSgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldHdvcmstcmVxdWVzdCIsIG5ldHdv
cmtSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3
aW5kb3ctZmVhdHVyZXMiLCBraXRGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAw
OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXci
LCBraXQoZnJhbWUpLCB3ZWJWaWV3UmVxdWVzdCwgJndlYlZpZXcpOworCisgICAgZ19vYmplY3Rf
dW5yZWYoR19PQkpFQ1Qod2ViVmlld1JlcXVlc3QpKTsKKyAgICBnX2ZyZWUoa2l0RmVhdHVyZXMp
OworICAgIGlmIChuZXR3b3JrUmVxdWVzdCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobmV0d29y
a1JlcXVlc3QpOworCisgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9
IGVsc2UgewotICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICov
Ci0gICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NM
QVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAo
IXdlYlZpZXcpCi0gICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmll
dyk7Ci0gICAgICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29yZVBhZ2U7Ci0gICAgfQorICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJ
VkFURSh3ZWJWaWV3KTsKKyAgICByZXR1cm4gcHJpdmF0ZURhdGEtPmNvcmVQYWdlOwogfQogCiB2
b2lkIENocm9tZUNsaWVudDo6c2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIHdlYmtpdF93ZWJfdmlld19zaG93
KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb25lIDMzOTI2KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCkBA
IC0yNTYsOSArMjU3LDcgQEAKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICgh
cG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSSB0aGluayBR
dCB2ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQotICAg
IC8vIGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhl
IHNhbWUKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9s
aWN5SWdub3JlKTsKKyAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlv
bikoUG9saWN5VXNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC01NTksNyArNTU4LDggQEAKIAogdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAg
IHdlYmtpdF93ZWJfdmlld19zaG93KHdlYlZpZXcpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkBAIC03MjYsOCArNzI2LDE3IEBACiAKIEZyYW1lKiBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdwb2ludGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIE5VTEwpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktp
dFdlYlZpZXcqIG5ld1dlYlZpZXcgPSAwOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViVmlld1JlcXVlc3QsICZuZXdXZWJW
aWV3KTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJWaWV3UmVxdWVzdCkpOworCisg
ICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShuZXdX
ZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+bWFpbkZyYW1lKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJz
aGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwu
bGlzdAkocmV2aXNpb25lIDMzOTI2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNo
YWwubGlzdAkoY29waWEgbG9jYWxlKQpAQCAtNSw4ICs1LDEwIEBACiBWT0lEOk9CSkVDVCxTVFJJ
TkcKIFZPSUQ6T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitCT09M
RUFOOlZPSUQKIEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklO
RwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxT
VFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVCxPQkpFQ1QKSW5k
ZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJl
dmlzaW9uZSAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMu
Y3BwCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiAi
QyIgeworCitHVHlwZSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSh2b2lkKQor
eworICAgIHN0YXRpYyBHVHlwZSB0eXBlX2lkID0gMDsKKworICAgIGlmICghdHlwZV9pZCkKKyAg
ICAgICAgdHlwZV9pZCA9IGdfYm94ZWRfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKCJXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoR0JveGVkQ29weUZ1bmMpd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY29weSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHQm94ZWRG
cmVlRnVuYylnX2ZyZWUpOworCisgICAgcmV0dXJuIHR5cGVfaWQ7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3OgorICoKKyAqIFJldHVybnMgYSBuZXcgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMgd2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zLAorICogdGhhdCBpcyBu
byBzaXplIG9yIHBvc2l0aW9uIHNldCBhbmQgYWxsIHRoZSBiYXJzIHZpc2libGUuCisgKiBUaGUg
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmcmVlIHdpdGggZ19mcmVlKCkuCisgKgorICogUmV0dXJu
IHZhbHVlOiBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqLworV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyh2b2lkKQoreworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcyA9IGdfbmV3MChXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcywgMSk7CisgICAgd2luZG93RmVhdHVyZXMtPnggPSAtMTsKKyAgICB3
aW5kb3dGZWF0dXJlcy0+eSA9IC0xOworICAgIHdpbmRvd0ZlYXR1cmVzLT53aWR0aCA9IC0xOwor
ICAgIHdpbmRvd0ZlYXR1cmVzLT5oZWlnaHQgPSAtMTsKKyAgICB3aW5kb3dGZWF0dXJlcy0+cmVz
aXphYmxlPSBUUlVFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5kaWFsb2cgPSBGQUxTRTsKKyAgICB3
aW5kb3dGZWF0dXJlcy0+ZnVsbHNjcmVlbiA9IEZBTFNFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5z
aG93X21lbnUgPSBUUlVFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5zaG93X3N0YXR1c2JhciA9IFRS
VUU7CisgICAgd2luZG93RmVhdHVyZXMtPnNob3dfdG9vbGJhciA9IFRSVUU7CisgICAgd2luZG93
RmVhdHVyZXMtPnNob3dfdXJpID0gVFJVRTsKKyAgICB3aW5kb3dGZWF0dXJlcy0+c2hvd19zY3Jv
bGxiYXJzID0gVFJVRTsKKworICAgIHJldHVybiB3aW5kb3dGZWF0dXJlczsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jb3B5OgorICogQHdpbmRvd0ZlYXR1cmVzOiBh
ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFJldHVybnMgYSBjb3B5IG9mIEB3aW5k
b3dGZWF0dXJlcy4KKyAqIFRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZyZWUgd2l0aCBnX2Zy
ZWUoKS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cworICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfY29weShjb25zdCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod2luZG93RmVhdHVyZXMsIE5VTEwpOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGNvcHkgPSBnX25ldyhXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcywgMSk7CisgICAgbWVtY3B5KGNvcHksIHdpbmRvd0ZlYXR1cmVzLCBzaXplb2YoV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICByZXR1cm4gY29weTsKK30KKworfQpJbmRleDogV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShjb3BpYSBsb2NhbGUpCkBAIC02OCw2ICs2OCw4
IEBACiAKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWduYWxzICovCisgICAgQ1JFQVRFX1dFQl9W
SUVXLAorICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCiAgICAg
V0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwKQEAgLTUzMywxMiArNTM1
LDE2IEBACiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQog
Ci1zdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92
aWV3KFdlYktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmll
d19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAwOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJf
dmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwog
c3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZp
Z2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBX
ZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcwNSw2
ICs3MTEsMTggQEAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVh
dGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQs
IEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRl
ciBkdW1teSkKK3sKKyAgICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgICBn
cG9pbnRlciBuZXdXZWJWaWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOwor
ICAgIGdfdmFsdWVfc2V0X29iamVjdChyZXR1cm5BY2N1LCBuZXdXZWJWaWV3KTsKKworICAgIGlm
IChuZXdXZWJWaWV3KQorICAgICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgICBy
ZXR1cm4gY29udGludWVFbWlzc2lvbjsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZp
Z2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFs
dWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVt
bXkpCiB7CiAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOwpAQCAtNzQ3LDYgKzc2
NSw1NSBAQAogICAgICAqIFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6OmNyZWF0ZS13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktp
dFdlYkZyYW1lCisgICAgICogQHdlYl92aWV3X3JlcXVlc3Q6IGEgI1dlYktpdFdlYlZpZXdSZXF1
ZXN0CisgICAgICogQHJldHVybjogYSBuZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3Ig
JU5VTEwKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcg
d2luZG93IGlzIHJlcXVlc3RlZC4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRo
ZSBzaWduYWwgaGFuZGxlciBzaG91bGQgcmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdFdlYlZpZXcuIFRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG5vdCBiZQorICAg
ICAqIGRpc3BsYXllZCB0byB0aGUgdXNlciB1bnRpbCB0aGUgInNob3ctd2ViLXZpZXciIHNpZ25h
bCBpcyBlbWl0dGVkLgorICAgICAqCisgICAgICogQHdlYl92aWV3X3JlcXVlc3QgY29udGFpbnMg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldyAjV2ViS2l0V2ViVmlldywKKyAgICAgKiBidXQgbm90
ZSB0aGF0IHlvdSBjYW4gZnJlZWx5IGlnbm9yZSBhbnkgcGFydGljdWxhciByZXF1ZXN0IGxpa2Ug
dGhlCisgICAgICogc2l6ZSBvZiB0aGUgbmV3IHdpbmRvdyBvciB3aGF0IGJhcnMgc2hvdWxkIGJl
IGRpc3BsYXllZCBpbiB0aGUgbmV3CisgICAgICogd2luZG93LgorICAgICAqLworICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW0NSRUFURV9XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoImNyZWF0
ZS13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05B
TF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xh
c3MsIGNyZWF0ZV93ZWJfdmlldyksCisgICAgICAgICAgICB3ZWJraXRfY3JlYXRlX3dlYl92aWV3
X3JlcXVlc3RfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9PQkpFQ1RfX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNU
LCAyLAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9PQkpF
Q1QpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6c2hvdy13ZWItdmlldzoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQHJldHVybjogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5n
IGludm9rZWQgZm9yIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVy
dGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciAiY3JlYXRlLXdlYi12aWV3IiB3aGVu
IHRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgICAgICogYmUgZGlzcGxheWVkIHRvIHRo
ZSB1c2VyLgorICAgICAqCisgICAgICogSWYgdGhlcmUgaXNuJ3QgYW55IGhhbmRsZXIgZm9yIHRo
aXMgc2lnbmFsIG9yIGlmIHRoZXkgcmV0dXJuICVGQUxTRSwKKyAgICAgKiB0aGVuIHRoZSBkZWZh
dWx0IGFjdGlvbiBpcyB0byBjYWxsIGd0a193aWRnZXRfc2hvd19hbGwoKSBvbiB0aGUKKyAgICAg
KiB0b3BsZXZlbCB3aW5kb3cgY29udGFpbmluZyBAd2ViX3ZpZXcuCisgICAgICovCisgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoInNob3ct
d2ViLXZpZXciLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUKSwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBzaG93X3dlYl92aWV3KSwK
KyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTkFWSUdBVElPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVl
c3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAg
ICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJ
T04pLApAQCAtMTA3NCw2ICsxMTQxLDcgQEAKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2Ygdmly
dHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcg
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNz
LT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAg
ICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3Jl
YWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0
X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAg
ICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29z
ZV9maWxlOwpAQCAtMTM4MCw2ICsxNDQ4LDE5IEBACiAgICAgcmV0dXJuIEdUS19XSURHRVQod2Vi
Vmlldyk7CiB9CiAKK3ZvaWQgd2Via2l0X3dlYl92aWV3X3Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0
KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddLCAwLCAmaXNI
YW5kbGVkKTsKKyAgICBpZiAoaXNIYW5kbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtX
aWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJW
aWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh0b3BsZXZlbCk7Cit9CisKIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5oCShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgJKHJldmlzaW9uZSAwKQpAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dF
Ql9XSU5ET1dfRkVBVFVSRVNfSAorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19I
CisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRl
ZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9XSU5E
T1dfRkVBVFVSRVMgKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlKCkpCisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlczsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgZ2ludCB4Owor
ICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRoOworICAgIGdpbnQgaGVpZ2h0OworICAgIGdib29s
ZWFuIHJlc2l6YWJsZTsKKyAgICBnYm9vbGVhbiBkaWFsb2c7CisgICAgZ2Jvb2xlYW4gZnVsbHNj
cmVlbjsKKyAgICBnYm9vbGVhbiBzaG93X21lbnU7CisgICAgZ2Jvb2xlYW4gc2hvd19zdGF0dXNi
YXI7CisgICAgZ2Jvb2xlYW4gc2hvd190b29sYmFyOworICAgIGdib29sZWFuIHNob3dfdXJpOwor
ICAgIGdib29sZWFuIHNob3dfc2Nyb2xsYmFyczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KHZv
aWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY29weShjb25zdCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93
RmVhdHVyZXMpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaAkoY29waWEgbG9jYWxlKQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaD4KIAogR19CRUdJTl9ERUNM
UwogCkBAIC02MywxMSArNjQsOSBAQAogCiAgICAgLyoKICAgICAgKiBkZWZhdWx0IGhhbmRsZXIv
dmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3JlYXRlX3dlYl92aWV3IG5lZWRzIGEg
cmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNpZ25hbCB3aXRoIGRlZmF1bHQgaGFu
ZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29tZW9uZSBkb2luZyBhIGdfc2lnbmFs
X3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJRGVsZWdhdGUgaGFzIG5vdGhpbmcg
Zm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUgYXMgd2VsbC4uLgogICAgICAqLwot
ICAgIFdlYktpdFdlYlZpZXcqICAoKmNyZWF0ZV93ZWJfdmlldykgIChXZWJLaXRXZWJWaWV3KiB3
ZWJfdmlldyk7CisgICAgV2ViS2l0V2ViVmlldyogKCpjcmVhdGVfd2ViX3ZpZXcpIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworICAgIGdi
b29sZWFuICgqc2hvd193ZWJfdmlldykgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogICAg
IC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lE
ZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmgJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAkoY29waWEgbG9jYWxlKQpAQCAtMTA4LDYgKzEwOCw5IEBACiAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl92
aWV3X3Nob3cgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOworCiAgICAgLy8gRklYTUU6IE1vdmUg
dGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNz
ZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXdyZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJldmlzaW9uZSAwKQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSwyNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2Vidmlld3JlcXVlc3QuaCIKKyNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZSB7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtSZXF1ZXN0
OworICAgIGdjaGFyKiBuYW1lOworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3aW5kb3dG
ZWF0dXJlczsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1RfR0VUX1BSSVZB
VEUob2JqKShHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9WSUVXX1JFUVVFU1QsIFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSkpCisKK2VudW0gIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX05FVFdPUktfUkVRVUVTVCwKKyAgICBQUk9QX05BTUUs
CisgICAgUFJPUF9XSU5ET1dfRkVBVFVSRVMKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2Vi
Vmlld1JlcXVlc3QsIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KFdl
YktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29y
a1JlcXVlc3QpOworCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0
ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wZXJ0
eUlkKSB7CisgICAgY2FzZSBQUk9QX05FVFdPUktfUkVRVUVTVDoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmV0d29ya19yZXF1
ZXN0KHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX05BTUU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0
X25hbWUocmVxdWVzdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZF
QVRVUkVTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3
X3JlcXVlc3RfZ2V0X3dpbmRvd19mZWF0dXJlcyhyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9X
RUJfVklFV19SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAg
IGNhc2UgUFJPUF9ORVRXT1JLX1JFUVVFU1Q6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X3NldF9uZXR3b3JrX3JlcXVlc3QocmVxdWVzdCwgc3RhdGljX2Nhc3Q8V2ViS2l0TmV0d29y
a1JlcXVlc3QqPihnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRf
bmFtZShyZXF1ZXN0LCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X3JlcXVlc3Rfc2V0X3dpbmRvd19mZWF0dXJlcyhyZXF1ZXN0LCBzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyo+KGdfdmFsdWVfZ2V0X2JveGVkKHZhbHVlKSkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfaW5pdChXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1ZXN0LT5wcml2ID0gV0VCS0lUX1dFQl9W
SUVXX1JFUVVFU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworICAgIHByaXYtPm5hbWUgPSBnX3N0
cmR1cCgiIik7CisgICAgcHJpdi0+d2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXcoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
ZmluYWxpemUoR09iamVjdCogb2JqKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1
ZXN0ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqKTsKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgaWYgKHJlcXVlc3QtPnBy
aXYtPm5ldHdvcmtSZXF1ZXN0KQorICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5uZXR3b3Jr
UmVxdWVzdCk7CisKKyAgICBnX2ZyZWUocHJpdi0+bmFtZSk7CisgICAgZ19mcmVlKHByaXYtPndp
bmRvd0ZlYXR1cmVzKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iaik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcyog
cmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3Byb3BlcnR5OworICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemU7
CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9Q
X05FVFdPUktfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoIm5ldHdvcmstcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXR3b3JrIHJlcXVlc3QiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
VGhlIG5ldHdvcmsgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJh
bUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkp
KTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBS
T1BfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoIm5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTmV3IHdpbmRvdyBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSBuZXcg
d2luZG93IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJ3
aW5kb3ctZmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJXaW5kb3cgZmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3cgdGhlIG5ldyB3aW5kb3cgc2hv
dWxkIGxvb2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywg
c2l6ZW9mKFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSkpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3b3JrX3JlcXVlc3Q6CisgKiBAcmVxdWVzdDogYSAj
V2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2ViS2l0TmV0d29ya1Jl
cXVlc3QgZm9yIHRoZSBwYWdlIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUKKyAqIG5ldyAjV2Vi
S2l0V2ViVmlldyBvciAlTlVMTCBpZiB0aGUgbmF2aWdhdGlvbiB3aWxsIGhhcHBlbiBpbiBhIGxh
dGVyIHN0YWdlLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXROZXR3b3JrUmVxdWVz
dCBvciBOVUxMCisgKi8KK1dlYktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfd2ViX3ZpZXdfcmVx
dWVzdF9nZXRfbmV0d29ya19yZXF1ZXN0KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJl
cXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVz
dDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25ldHdvcmtf
cmVxdWVzdChXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0TmV0d29ya1JlcXVl
c3QqIG5ldHdvcmtSZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoIW5ldHdvcmtS
ZXF1ZXN0IHx8IFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QobmV0d29ya1JlcXVlc3QpKTsKKwor
ICAgIGlmIChyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCA9PSBuZXR3b3JrUmVxdWVzdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0
KQorICAgICAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCk7
CisgICAgcmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QgPSBuZXR3b3JrUmVxdWVzdDsKKyAg
ICBnX29iamVjdF9yZWYocmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgIm5ldHdvcmstcmVxdWVzdCIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lOgorICogQHJlcXVlc3Q6IGEg
I1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKgorICogUmV0dXJucyB0aGUgbmFtZSBmb3IgdGhlIG5l
dyB3ZWIgdmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBuYW1lIG9mIHRoZSBuZXcgd2Vi
IHZpZXcKKyAqLworZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lKFdlYktp
dFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiBy
ZXF1ZXN0LT5wcml2LT5uYW1lOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0
X3NldF9uYW1lOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKiBAbmFt
ZTogdGhlIHdlYiB2aWV3IG5hbWUKKyAqCisgKiBTZXRzIHRoZSBuYW1lIGZvciB0aGUgbmV3ICNX
ZWJLaXRXZWJWaWV3LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uYW1l
KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogbmFtZSkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpKTsK
KyAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOworCisgICAgaWYgKCFzdHJjbXAocmVxdWVzdC0+
cHJpdi0+bmFtZSwgbmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdfZnJlZShyZXF1ZXN0
LT5wcml2LT5uYW1lKTsKKyAgICByZXF1ZXN0LT5wcml2LT5uYW1lID0gZ19zdHJkdXAobmFtZSk7
CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHJlcXVlc3QpLCAibmFtZSIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXM6CisgKiBA
cmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2Vi
S2l0V2ViV2luZG93RmVhdHVyZXMgZGVzY3JpYmluZyBob3cgdGhlIG5ldyB3aW5kb3cgc2hvdWxk
IGxvb2suCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVz
CisgKi8KK2NvbnN0IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3ZpZXdfcmVx
dWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJl
cXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT53aW5kb3dGZWF0dXJl
czsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1
cmVzOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKiBAd2luZG93RmVh
dHVyZXM6IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKgorICogU2V0cyB0aGUgI1dlYktp
dFdlYldpbmRvd0ZlYXR1cmVzIGRlc2NyaWJpbmcgaG93IHRoZSBuZXcgd2luZG93IHNob3VsZCBs
b29rLgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF93aW5kb3dfZmVhdHVy
ZXMoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9J
U19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIGlmIChyZXF1ZXN0LT5wcml2LT53
aW5kb3dGZWF0dXJlcyA9PSB3aW5kb3dGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Z19mcmVlKHJlcXVlc3QtPnByaXYtPndpbmRvd0ZlYXR1cmVzKTsKKyAgICByZXF1ZXN0LT5wcml2
LT53aW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NvcHkod2luZG93
RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgIndpbmRv
dy1mZWF0dXJlcyIpOworfQorCit9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocmV2aXNpb25lIDMzOTI2
KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgJKGNvcGlhIGxvY2FsZSkKQEAgLTI3LDUg
KzI3LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3Qu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KIAogI2VuZGlm
IC8qIF9fV0VCS0lUX0hfXyAqLwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
d3JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cmVxdWVzdC5oCShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXdyZXF1ZXN0LmgJKHJldmlzaW9uZSAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9WSUVXX1JFUVVF
U1RfSAorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9ICisKKyNpbmNsdWRlIDxndGsv
Z3RrLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4KKyNpbmNs
dWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KKworR19CRUdJTl9ERUNMUwor
CisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QgICAgICAgICAgICAod2Via2l0
X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JF
UVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
V0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2ViVmlld1JlcXVlc3QpKQorI2Rl
ZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVD
S19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIFdlYktp
dFdlYlZpZXdSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVdfUkVRVUVT
VChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVXX1JFUVVF
U1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBXRUJLSVRf
VFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Rf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfVklFV19SRVFVRVNULCBXZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0IFdlYktpdFdlYlZpZXdSZXF1ZXN0Owor
dHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MgV2ViS2l0V2ViVmlld1Jl
cXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGUg
V2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1
ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0Q2xh
c3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRfQVBJIEdU
eXBlCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfdHlwZSh2b2lkKTsKKworV0VCS0lUX0FQ
SSBXZWJLaXROZXR3b3JrUmVxdWVzdCoKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3
b3JrX3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJ
IGdjaGFyKgord2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWUoV2ViS2l0V2ViVmlld1Jl
cXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X3NldF9uYW1lKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciog
bmFtZSk7CisKK1dFQktJVF9BUEkgY29uc3QgV2ViS2l0V2ViV2luZG93RmVhdHVyZXMqCit3ZWJr
aXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1
ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVz
dF9zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBjb25z
dCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMpOworCitHX0VORF9ERUNM
UworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzM5MjYpCisrKyBXZWJLaXQvZ3RrL0NoYW5n
ZUxvZwkoY29waWEgbG9jYWxlKQpAQCAtMSwzICsxLDQ4IEBACisyMDA4LTA1LTIwICBNYXJjbyBC
YXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTQzCisgICAgICAgIFtHVEtdIEltcHJvdmUgdGhlIGhhbmRs
aW5nIG9mIG5ldyB3aW5kb3cgcmVxdWVzdHMKKworICAgICAgICBJbXByb3ZlIGhvdyBuZXcgd2lu
ZG93cyBhcmUgY3JlYXRlIHdoZW4gcmVxdWVzdGVkIGJ5IFdlYkNvcmUuIEVtaXQKKyAgICAgICAg
ImNyZWF0ZS13ZWItdmlldyIgdG8gYXNrIGZvciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgV2ViS2l0
V2ViVmlldyBhbmQKKyAgICAgICAgInNob3ctd2ViLXZpZXciIHdoZW4gdGhlIG5ldyBXZWJLaXRX
ZWJWaWV3IHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlCisgICAgICAgIHVzZXIuCisKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6IEVtaXQgImNyZWF0ZS13ZWItdmlldyIuCisg
ICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2hvdyk6IENhbGwgd2Via2l0X3dlYl92aWV3
X3Nob3coKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIFNlbmQgYWx3YXlzIHRoZSAidXNlIiBw
b2xpY3kuCisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaFNob3cp
OiBDYWxsIHdlYmtpdF93ZWJfdmlld19zaG93KCkKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6IEVtaXQKKyAgICAgICAgImNyZWF0ZS13ZWIt
dmlldyIuCisgICAgICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6IEFkZCBtYXJzaGFs
bGVycyBmb3IgImNyZWF0ZS13ZWItdmlldyIKKyAgICAgICAgYW5kICJzaG93LXdlYi12aWV3Ii4K
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6IEluY2x1ZGUgdGhlIG5ldyBoZWFkZXJzLAorICAg
ICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6IEFkZCB3ZWJraXRfd2ViX3ZpZXdfc2hvdygp
LgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogQWRkIHRoZSBzaWduYWxzICJj
cmVhdGUtd2ViLXZpZXciIGFuZAorICAgICAgICAic2hvdy13ZWItdmlldyIsIGFuZCBhZGQgd2Vi
a2l0X3dlYl92aWV3X3Nob3coKS4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOiBB
ZGQgdGhlIHZpcnR1YWwgbWV0aG9kIHNob3dfd2ViX3ZpZXcoKS4KKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0d2Vidmlld3JlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3
UmVxdWVzdFByaXZhdGU6Oik6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRl
Ojp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfcHJvcGVydHkpOgorICAgICAgICAoX1dlYktp
dFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3Byb3Bl
cnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJf
dmlld19yZXF1ZXN0X2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0
ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemUpOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfY2xhc3NfaW5pdCk6
CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3ZpZXdf
cmVxdWVzdF9nZXRfbmV0d29ya19yZXF1ZXN0KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uZXR3b3JrX3JlcXVlc3Qp
OgorICAgICAgICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3
X3JlcXVlc3RfZ2V0X25hbWUpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0
ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWUpOgorICAgICAgICAoX1dlYktpdFdl
YlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3dpbmRvd19m
ZWF0dXJlcyk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJraXRf
d2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzKToKKyAgICAgICAgKiB3ZWJraXQv
d2Via2l0d2Vidmlld3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YndpbmRvd2ZlYXR1cmVzLmNwcDogQWRkZWQuCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmg6IEFkZGVkLgorCiAyMDA4LTA1LTE5ICBBbHAgVG9rZXIgIDxhbHBAbnVh
bnRpLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgYW5kIEJldGguCkluZGV4OiBD
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzM5MjYpCisrKyBD
aGFuZ2VMb2cJKGNvcGlhIGxvY2FsZSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wNS0yMCAgTWFy
Y28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MworICAgICAgICBbR1RLXSBJbXByb3ZlIHRoZSBo
YW5kbGluZyBvZiBuZXcgd2luZG93IHJlcXVlc3RzCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bTogd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwLAorCXdlYmtpdHdlYndpbmRvd2ZlYXR1cmVz
LmgsIHdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQKKwl3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5o
CisKIDIwMDgtMDUtMjAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21272</attachid>
            <date>2008-05-21 11:14:11 -0700</date>
            <delta_ts>2008-06-20 10:54:09 -0700</delta_ts>
            <desc>Allow more control on the creation of new windows</desc>
            <filename>new-window.patch</filename>
            <type>text/plain</type>
            <size>34583</size>
            <attacher name="Marco Barisione">marco.barisione</attacher>
            
              <data encoding="base64">SW5kZXg6IEdOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEdOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbmUgMzM5MjYpCisrKyBHTlVtYWtlZmlsZS5hbQkoY29waWEgbG9jYWxlKQpAQCAtMjk4LDYg
KzI5OCw4IEBACiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaCBcCiAJV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0uaCBcCiAJV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93
ZmVhdHVyZXMuaCBcCisJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaCBc
CiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCiAKIHdlYmtpdGd0a19idWlsdF9z
b3VyY2VzICs9IFwKQEAgLTMyMSw2ICszMjMsOCBAQAogCVdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcCBcCiAJV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViaGlzdG9yeWl0ZW0u
Y3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAgXAorCVdlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcCBcCisJV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwIFwKIAlXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcCBcCiAJV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwIFwKIAlXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0NvbnRleHRNZW51Q2xpZW50R3Rr
LmNwcCBcCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRH
dGsuY3BwCShyZXZpc2lvbmUgMzM5MjYpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTIxLDEyICsyMSwxNCBAQAogI2lu
Y2x1ZGUgIkNocm9tZUNsaWVudEd0ay5oIgogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5j
bHVkZSAiRnJhbWVMb2FkUmVxdWVzdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRlICJIaXRU
ZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYnZpZXcu
aCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2luY2x1ZGUgIndlYmtpdHBy
aXZhdGUuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIldpbmRvd0Zl
YXR1cmVzLmgiCkBAIC05NCwyNSArOTYsNTIgQEAKICAgICAgICAgZ3RrX3dpbmRvd19zZXRfZm9j
dXMoR1RLX1dJTkRPVyh3aW5kb3cpLCBOVUxMKTsKIH0KIAotUGFnZSogQ2hyb21lQ2xpZW50Ojpj
cmVhdGVXaW5kb3coRnJhbWUqLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QgV2luZG93
RmVhdHVyZXMmIGZlYXR1cmVzKQorUGFnZSogQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJh
bWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBjb25z
dCBXaW5kb3dGZWF0dXJlcyYgY29yZUZlYXR1cmVzKQogewotICAgIGlmIChmZWF0dXJlcy5kaWFs
b2cpIHsKLSAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBXZWJLaXROZXR3b3JrUmVxdWVz
dCogbmV0d29ya1JlcXVlc3QgPSAwOworICAgIGlmICghZnJhbWVMb2FkUmVxdWVzdC5pc0VtcHR5
KCkpCisgICAgICAgIG5ldHdvcmtSZXF1ZXN0ID0gd2Via2l0X25ldHdvcmtfcmVxdWVzdF9uZXco
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKS51dGY4KCku
ZGF0YSgpKTsKKworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzICpraXRGZWF0dXJlcyA9IHdl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldygpOworICAgIGtpdEZlYXR1cmVzLT54ID0gY29y
ZUZlYXR1cmVzLnhTZXQgPyBjb3JlRmVhdHVyZXMueCA6IC0xOworICAgIGtpdEZlYXR1cmVzLT55
ID0gY29yZUZlYXR1cmVzLnlTZXQgPyBjb3JlRmVhdHVyZXMueSA6IC0xOworICAgIGtpdEZlYXR1
cmVzLT53aWR0aCA9IGNvcmVGZWF0dXJlcy53aWR0aFNldCA/IGNvcmVGZWF0dXJlcy53aWR0aCA6
IC0xOworICAgIGtpdEZlYXR1cmVzLT5oZWlnaHQgPSBjb3JlRmVhdHVyZXMuaGVpZ2h0U2V0ID8g
Y29yZUZlYXR1cmVzLmhlaWdodCA6IC0xOworICAgIGtpdEZlYXR1cmVzLT5zaG93X21lbnUgPSBj
b3JlRmVhdHVyZXMubWVudUJhclZpc2libGU7CisgICAga2l0RmVhdHVyZXMtPnNob3dfc3RhdHVz
YmFyID0gY29yZUZlYXR1cmVzLnN0YXR1c0JhclZpc2libGU7CisgICAga2l0RmVhdHVyZXMtPnNo
b3dfdG9vbGJhciA9IGNvcmVGZWF0dXJlcy50b29sQmFyVmlzaWJsZTsKKyAgICBraXRGZWF0dXJl
cy0+c2hvd191cmkgPSBjb3JlRmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlOworICAgIGtpdEZl
YXR1cmVzLT5zaG93X3Njcm9sbGJhcnMgPSBjb3JlRmVhdHVyZXMuc2Nyb2xsYmFyc1Zpc2libGU7
CisgICAga2l0RmVhdHVyZXMtPnJlc2l6YWJsZSA9IGNvcmVGZWF0dXJlcy5yZXNpemFibGU7Cisg
ICAga2l0RmVhdHVyZXMtPmZ1bGxzY3JlZW4gPSBjb3JlRmVhdHVyZXMuZnVsbHNjcmVlbjsKKyAg
ICBraXRGZWF0dXJlcy0+ZGlhbG9nID0gY29yZUZlYXR1cmVzLmRpYWxvZzsKKworICAgIGdwb2lu
dGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JF
UVVFU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hbWUi
LCBmcmFtZUxvYWRSZXF1ZXN0LmZyYW1lTmFtZSgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldHdvcmstcmVxdWVzdCIsIG5ldHdv
cmtSZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3
aW5kb3ctZmVhdHVyZXMiLCBraXRGZWF0dXJlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSAw
OworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZShtX3dlYlZpZXcsICJjcmVhdGUtd2ViLXZpZXci
LCBraXQoZnJhbWUpLCB3ZWJWaWV3UmVxdWVzdCwgJndlYlZpZXcpOworCisgICAgZ19vYmplY3Rf
dW5yZWYoR19PQkpFQ1Qod2ViVmlld1JlcXVlc3QpKTsKKyAgICBnX2ZyZWUoa2l0RmVhdHVyZXMp
OworICAgIGlmIChuZXR3b3JrUmVxdWVzdCkKKyAgICAgICAgZ19vYmplY3RfdW5yZWYobmV0d29y
a1JlcXVlc3QpOworCisgICAgaWYgKCF3ZWJWaWV3KQogICAgICAgICByZXR1cm4gMDsKLSAgICB9
IGVsc2UgewotICAgICAgICAvKiBUT0RPOiBGcmFtZUxvYWRSZXF1ZXN0IGlzIG5vdCB1c2VkICov
Ci0gICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX0NM
QVNTKG1fd2ViVmlldyktPmNyZWF0ZV93ZWJfdmlldyhtX3dlYlZpZXcpOwotICAgICAgICBpZiAo
IXdlYlZpZXcpCi0gICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBXZWJLaXRXZWJWaWV3
UHJpdmF0ZSogcHJpdmF0ZURhdGEgPSBXRUJLSVRfV0VCX1ZJRVdfR0VUX1BSSVZBVEUod2ViVmll
dyk7Ci0gICAgICAgIHJldHVybiBwcml2YXRlRGF0YS0+Y29yZVBhZ2U7Ci0gICAgfQorICAgIFdl
YktpdFdlYlZpZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJ
VkFURSh3ZWJWaWV3KTsKKyAgICByZXR1cm4gcHJpdmF0ZURhdGEtPmNvcmVQYWdlOwogfQogCiB2
b2lkIENocm9tZUNsaWVudDo6c2hvdygpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBp
ZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworICAgIHdlYmtpdF93ZWJfdmlld19zaG93
KG1fd2ViVmlldyk7CiB9CiAKIGJvb2wgQ2hyb21lQ2xpZW50OjpjYW5SdW5Nb2RhbCgpCkluZGV4
OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb25lIDMzOTI2KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAJKGNvcGlhIGxvY2FsZSkKQEAgLTQzLDYgKzQzLDcgQEAKICNp
bmNsdWRlICJranNfYmluZGluZy5oIgogI2luY2x1ZGUgImtqc19wcm94eS5oIgogI2luY2x1ZGUg
IndlYmtpdHdlYnZpZXcuaCIKKyNpbmNsdWRlICJ3ZWJraXR3ZWJ2aWV3cmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIndlYmtpdHdlYmZyYW1lLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgogCkBA
IC0yNTYsOSArMjU3LDcgQEAKICAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwogICAgIGlmICgh
cG9saWN5RnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKLSAgICAvLyBGSVhNRTogSSB0aGluayBR
dCB2ZXJzaW9uIG1hcnNoYWxzIHRoaXMgdG8gYW5vdGhlciB0aHJlYWQgc28gd2hlbiB3ZQotICAg
IC8vIGhhdmUgbXVsdGktdGhyZWFkZWQgZG93bmxvYWQsIHdlIG1pZ2h0IG5lZWQgdG8gZG8gdGhl
IHNhbWUKLSAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlvbikoUG9s
aWN5SWdub3JlKTsKKyAgICAoY29yZShtX2ZyYW1lKS0+bG9hZGVyKCktPipwb2xpY3lGdW5jdGlv
bikoUG9saWN5VXNlKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKEZyYW1lUG9saWN5RnVuY3Rpb24gcG9saWN5RnVu
Y3Rpb24sIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIGFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXNvdXJjZVJlcXVlc3QpCkBAIC01NTksNyArNTU4LDggQEAKIAogdm9pZCBGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hTaG93KCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAg
IHdlYmtpdF93ZWJfdmlld19zaG93KHdlYlZpZXcpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50OjpjYW5jZWxQb2xpY3lDaGVjaygpCkBAIC03MjYsOCArNzI2LDE3IEBACiAKIEZyYW1lKiBG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKCkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAwOworICAgIGdwb2ludGVyIHdlYlZpZXdSZXF1ZXN0ID0gZ19v
YmplY3RfbmV3KFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QsIE5VTEwpOworICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpOworICAgIFdlYktp
dFdlYlZpZXcqIG5ld1dlYlZpZXcgPSAwOworICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSh3ZWJW
aWV3LCAiY3JlYXRlLXdlYi12aWV3IiwgbV9mcmFtZSwgd2ViVmlld1JlcXVlc3QsICZuZXdXZWJW
aWV3KTsKKyAgICBnX29iamVjdF91bnJlZihHX09CSkVDVCh3ZWJWaWV3UmVxdWVzdCkpOworCisg
ICAgaWYgKCFuZXdXZWJWaWV3KQorICAgICAgICByZXR1cm4gMDsKKworICAgIFdlYktpdFdlYlZp
ZXdQcml2YXRlKiBwcml2YXRlRGF0YSA9IFdFQktJVF9XRUJfVklFV19HRVRfUFJJVkFURShuZXdX
ZWJWaWV3KTsKKyAgICByZXR1cm4gY29yZShwcml2YXRlRGF0YS0+bWFpbkZyYW1lKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hVbmFibGVUb0ltcGxlbWVudFBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJikKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdC1tYXJz
aGFsLmxpc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNoYWwu
bGlzdAkocmV2aXNpb25lIDMzOTI2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LW1hcnNo
YWwubGlzdAkoY29waWEgbG9jYWxlKQpAQCAtNSw4ICs1LDEwIEBACiBWT0lEOk9CSkVDVCxTVFJJ
TkcKIFZPSUQ6T0JKRUNULE9CSkVDVAogVk9JRDpPQkpFQ1QsUE9JTlRFUixQT0lOVEVSCitCT09M
RUFOOlZPSUQKIEJPT0xFQU46U1RSSU5HLElOVCxTVFJJTkcKIEJPT0xFQU46T0JKRUNULFNUUklO
RwogQk9PTEVBTjpPQkpFQ1QsU1RSSU5HLEJPT0xFQU4KIEJPT0xFQU46T0JKRUNULFNUUklORyxT
VFJJTkcsU1RSSU5HCiBJTlQ6T0JKRUNULE9CSkVDVAorT0JKRUNUOk9CSkVDVCxPQkpFQ1QKSW5k
ZXg6IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ3aW5kb3dmZWF0dXJlcy5jcHAJKHJl
dmlzaW9uZSAwKQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMu
Y3BwCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBDb2xsYWJvcmEgTHRkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJ3ZWJr
aXR3ZWJ3aW5kb3dmZWF0dXJlcy5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK2V4dGVybiAi
QyIgeworCitHVHlwZSB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19nZXRfdHlwZSh2b2lkKQor
eworICAgIHN0YXRpYyBHVHlwZSB0eXBlX2lkID0gMDsKKworICAgIGlmICghdHlwZV9pZCkKKyAg
ICAgICAgdHlwZV9pZCA9IGdfYm94ZWRfdHlwZV9yZWdpc3Rlcl9zdGF0aWMgKCJXZWJLaXRXZWJX
aW5kb3dGZWF0dXJlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoR0JveGVkQ29weUZ1bmMpd2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfY29weSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHQm94ZWRG
cmVlRnVuYylnX2ZyZWUpOworCisgICAgcmV0dXJuIHR5cGVfaWQ7Cit9CisKKy8qKgorICogd2Vi
a2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3OgorICoKKyAqIFJldHVybnMgYSBuZXcgV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMgd2l0aCB0aGUgZGVmYXVsdCBvcHRpb25zLAorICogdGhhdCBpcyBu
byBzaXplIG9yIHBvc2l0aW9uIHNldCBhbmQgYWxsIHRoZSBiYXJzIHZpc2libGUuCisgKiBUaGUg
cmV0dXJuIHZhbHVlIHNob3VsZCBiZSBmcmVlIHdpdGggZ19mcmVlKCkuCisgKgorICogUmV0dXJu
IHZhbHVlOiBhIG5ldyAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMKKyAqLworV2ViS2l0V2ViV2lu
ZG93RmVhdHVyZXMqIHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX25ldyh2b2lkKQoreworICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcyA9IGdfbmV3MChXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcywgMSk7CisgICAgd2luZG93RmVhdHVyZXMtPnggPSAtMTsKKyAgICB3
aW5kb3dGZWF0dXJlcy0+eSA9IC0xOworICAgIHdpbmRvd0ZlYXR1cmVzLT53aWR0aCA9IC0xOwor
ICAgIHdpbmRvd0ZlYXR1cmVzLT5oZWlnaHQgPSAtMTsKKyAgICB3aW5kb3dGZWF0dXJlcy0+cmVz
aXphYmxlPSBUUlVFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5kaWFsb2cgPSBGQUxTRTsKKyAgICB3
aW5kb3dGZWF0dXJlcy0+ZnVsbHNjcmVlbiA9IEZBTFNFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5z
aG93X21lbnUgPSBUUlVFOworICAgIHdpbmRvd0ZlYXR1cmVzLT5zaG93X3N0YXR1c2JhciA9IFRS
VUU7CisgICAgd2luZG93RmVhdHVyZXMtPnNob3dfdG9vbGJhciA9IFRSVUU7CisgICAgd2luZG93
RmVhdHVyZXMtPnNob3dfdXJpID0gVFJVRTsKKyAgICB3aW5kb3dGZWF0dXJlcy0+c2hvd19zY3Jv
bGxiYXJzID0gVFJVRTsKKworICAgIHJldHVybiB3aW5kb3dGZWF0dXJlczsKK30KKworLyoqCisg
KiB3ZWJraXRfd2ViX3dpbmRvd19mZWF0dXJlc19jb3B5OgorICogQHdpbmRvd0ZlYXR1cmVzOiBh
ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcworICoKKyAqIFJldHVybnMgYSBjb3B5IG9mIEB3aW5k
b3dGZWF0dXJlcy4KKyAqIFRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGZyZWUgd2l0aCBnX2Zy
ZWUoKS4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IGEgbmV3ICNXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cworICovCitXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Via2l0X3dlYl93aW5kb3dfZmVhdHVy
ZXNfY29weShjb25zdCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMpCit7
CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwod2luZG93RmVhdHVyZXMsIE5VTEwpOworCisgICAg
V2ViS2l0V2ViV2luZG93RmVhdHVyZXMqIGNvcHkgPSBnX25ldyhXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlcywgMSk7CisgICAgbWVtY3B5KGNvcHksIHdpbmRvd0ZlYXR1cmVzLCBzaXplb2YoV2ViS2l0
V2ViV2luZG93RmVhdHVyZXMpKTsKKyAgICByZXR1cm4gY29weTsKK30KKworfQpJbmRleDogV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShjb3BpYSBsb2NhbGUpCkBAIC02OCw2ICs2OCw4
IEBACiAKIGVudW0gewogICAgIC8qIG5vcm1hbCBzaWduYWxzICovCisgICAgQ1JFQVRFX1dFQl9W
SUVXLAorICAgIFNIT1dfV0VCX1ZJRVcsCiAgICAgTkFWSUdBVElPTl9SRVFVRVNURUQsCiAgICAg
V0lORE9XX09CSkVDVF9DTEVBUkVELAogICAgIExPQURfU1RBUlRFRCwKQEAgLTUzMywxMiArNTM1
LDE2IEBACiAgICAgICAgICgqY2FsbGJhY2spKCpjdXJyZW50LCBjYWxsYmFja0RhdGEpOwogfQog
Ci1zdGF0aWMgV2ViS2l0V2ViVmlldyogd2Via2l0X3dlYl92aWV3X3JlYWxfY3JlYXRlX3dlYl92
aWV3KFdlYktpdFdlYlZpZXcqKQorc3RhdGljIFdlYktpdFdlYlZpZXcqIHdlYmtpdF93ZWJfdmll
d19yZWFsX2NyZWF0ZV93ZWJfdmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVy
biAwOwogfQogCitzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJf
dmlldyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQoreworICAgIHJldHVybiBGQUxTRTsKK30KKwog
c3RhdGljIFdlYktpdE5hdmlnYXRpb25SZXNwb25zZSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9uYXZp
Z2F0aW9uX3JlcXVlc3RlZChXZWJLaXRXZWJWaWV3KiwgV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBX
ZWJLaXROZXR3b3JrUmVxdWVzdCopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTcwNSw2
ICs3MTEsMTggQEAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIAorc3RhdGljIGdib29sZWFuIHdlYmtpdF9jcmVh
dGVfd2ViX3ZpZXdfcmVxdWVzdF9oYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCogaWhpbnQs
IEdWYWx1ZSogcmV0dXJuQWNjdSwgY29uc3QgR1ZhbHVlKiBoYW5kbGVyUmV0dXJuLCBncG9pbnRl
ciBkdW1teSkKK3sKKyAgICBnYm9vbGVhbiBjb250aW51ZUVtaXNzaW9uID0gVFJVRTsKKyAgICBn
cG9pbnRlciBuZXdXZWJWaWV3ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1cm4pOwor
ICAgIGdfdmFsdWVfc2V0X29iamVjdChyZXR1cm5BY2N1LCBuZXdXZWJWaWV3KTsKKworICAgIGlm
IChuZXdXZWJWaWV3KQorICAgICAgICBjb250aW51ZUVtaXNzaW9uID0gRkFMU0U7CisKKyAgICBy
ZXR1cm4gY29udGludWVFbWlzc2lvbjsKK30KKwogc3RhdGljIGdib29sZWFuIHdlYmtpdF9uYXZp
Z2F0aW9uX3JlcXVlc3RfaGFuZGxlZChHU2lnbmFsSW52b2NhdGlvbkhpbnQqIGloaW50LCBHVmFs
dWUqIHJldHVybkFjY3UsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50ZXIgZHVt
bXkpCiB7CiAgIGdib29sZWFuIGNvbnRpbnVlRW1pc3Npb24gPSBUUlVFOwpAQCAtNzQ3LDYgKzc2
NSw1NSBAQAogICAgICAqIFNpZ25hbHMKICAgICAgKi8KIAorICAgIC8qKgorICAgICAqIFdlYktp
dFdlYlZpZXc6OmNyZWF0ZS13ZWItdmlldzoKKyAgICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qg
b24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVkCisgICAgICogQGZyYW1lOiB0aGUgI1dlYktp
dFdlYkZyYW1lCisgICAgICogQHdlYl92aWV3X3JlcXVlc3Q6IGEgI1dlYktpdFdlYlZpZXdSZXF1
ZXN0CisgICAgICogQHJldHVybjogYSBuZXdseSBhbGxvY2F0ZWQgI1dlYktpdFdlYlZpZXcgb3Ig
JU5VTEwKKyAgICAgKgorICAgICAqIEVtaXR0ZWQgd2hlbiB0aGUgY3JlYXRpb24gb2YgYSBuZXcg
d2luZG93IGlzIHJlcXVlc3RlZC4KKyAgICAgKiBJZiB0aGlzIHNpZ25hbCBpcyBoYW5kbGVkIHRo
ZSBzaWduYWwgaGFuZGxlciBzaG91bGQgcmV0dXJuIHRoZQorICAgICAqIG5ld2x5IGNyZWF0ZWQg
I1dlYktpdFdlYlZpZXcuIFRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkIG5vdCBiZQorICAg
ICAqIGRpc3BsYXllZCB0byB0aGUgdXNlciB1bnRpbCB0aGUgInNob3ctd2ViLXZpZXciIHNpZ25h
bCBpcyBlbWl0dGVkLgorICAgICAqCisgICAgICogQHdlYl92aWV3X3JlcXVlc3QgY29udGFpbnMg
aW5mb3JtYXRpb24gYWJvdXQgdGhlIG5ldyAjV2ViS2l0V2ViVmlldywKKyAgICAgKiBidXQgbm90
ZSB0aGF0IHlvdSBjYW4gZnJlZWx5IGlnbm9yZSBhbnkgcGFydGljdWxhciByZXF1ZXN0IGxpa2Ug
dGhlCisgICAgICogc2l6ZSBvZiB0aGUgbmV3IHdpbmRvdyBvciB3aGF0IGJhcnMgc2hvdWxkIGJl
IGRpc3BsYXllZCBpbiB0aGUgbmV3CisgICAgICogd2luZG93LgorICAgICAqLworICAgIHdlYmtp
dF93ZWJfdmlld19zaWduYWxzW0NSRUFURV9XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoImNyZWF0
ZS13ZWItdmlldyIsCisgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3Mp
LAorICAgICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05B
TF9BQ1RJT04pLAorICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChXZWJLaXRXZWJWaWV3Q2xh
c3MsIGNyZWF0ZV93ZWJfdmlldyksCisgICAgICAgICAgICB3ZWJraXRfY3JlYXRlX3dlYl92aWV3
X3JlcXVlc3RfaGFuZGxlZCwKKyAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRf
bWFyc2hhbF9PQkpFQ1RfX09CSkVDVF9PQkpFQ1QsCisgICAgICAgICAgICBHX1RZUEVfT0JKRUNU
LCAyLAorICAgICAgICAgICAgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgIEdfVFlQRV9PQkpF
Q1QpOworCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzo6c2hvdy13ZWItdmlldzoKKyAg
ICAgKiBAd2ViX3ZpZXc6IHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlIHNpZ25hbCBpcyBlbWl0dGVk
CisgICAgICogQHJldHVybjogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVycyBmcm9tIGJlaW5n
IGludm9rZWQgZm9yIHRoZSBldmVudCwgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVy
dGhlcgorICAgICAqCisgICAgICogRW1pdHRlZCBhZnRlciAiY3JlYXRlLXdlYi12aWV3IiB3aGVu
IHRoZSBuZXcgI1dlYktpdFdlYlZpZXcgc2hvdWxkCisgICAgICogYmUgZGlzcGxheWVkIHRvIHRo
ZSB1c2VyLgorICAgICAqCisgICAgICogSWYgdGhlcmUgaXNuJ3QgYW55IGhhbmRsZXIgZm9yIHRo
aXMgc2lnbmFsIG9yIGlmIHRoZXkgcmV0dXJuICVGQUxTRSwKKyAgICAgKiB0aGVuIHRoZSBkZWZh
dWx0IGFjdGlvbiBpcyB0byBjYWxsIGd0a193aWRnZXRfc2hvd19hbGwoKSBvbiB0aGUKKyAgICAg
KiB0b3BsZXZlbCB3aW5kb3cgY29udGFpbmluZyBAd2ViX3ZpZXcuCisgICAgICovCisgICAgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbU0hPV19XRUJfVklFV10gPSBnX3NpZ25hbF9uZXcoInNob3ct
d2ViLXZpZXciLAorICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwK
KyAgICAgICAgICAgIChHU2lnbmFsRmxhZ3MpKEdfU0lHTkFMX1JVTl9MQVNUKSwKKyAgICAgICAg
ICAgIEdfU1RSVUNUX09GRlNFVCAoV2ViS2l0V2ViVmlld0NsYXNzLCBzaG93X3dlYl92aWV3KSwK
KyAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3RydWVfaGFuZGxlZCwKKyAgICAgICAg
ICAgIE5VTEwsCisgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9CT09MRUFOX19WT0lELAorICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDApOworCiAgICAgd2Via2l0X3dlYl92aWV3X3NpZ25h
bHNbTkFWSUdBVElPTl9SRVFVRVNURURdID0gZ19zaWduYWxfbmV3KCJuYXZpZ2F0aW9uLXJlcXVl
c3RlZCIsCiAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAogICAg
ICAgICAgICAgKEdTaWduYWxGbGFncykoR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9BQ1RJ
T04pLApAQCAtMTA3NCw2ICsxMTQxLDcgQEAKICAgICAgKiBpbXBsZW1lbnRhdGlvbnMgb2Ygdmly
dHVhbCBtZXRob2RzCiAgICAgICovCiAgICAgd2ViVmlld0NsYXNzLT5jcmVhdGVfd2ViX3ZpZXcg
PSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF9jcmVhdGVfd2ViX3ZpZXc7CisgICAgd2ViVmlld0NsYXNz
LT5zaG93X3dlYl92aWV3ID0gd2Via2l0X3dlYl92aWV3X3JlYWxfc2hvd193ZWJfdmlldzsKICAg
ICB3ZWJWaWV3Q2xhc3MtPm5hdmlnYXRpb25fcmVxdWVzdGVkID0gd2Via2l0X3dlYl92aWV3X3Jl
YWxfbmF2aWdhdGlvbl9yZXF1ZXN0ZWQ7CiAgICAgd2ViVmlld0NsYXNzLT53aW5kb3dfb2JqZWN0
X2NsZWFyZWQgPSB3ZWJraXRfd2ViX3ZpZXdfcmVhbF93aW5kb3dfb2JqZWN0X2NsZWFyZWQ7CiAg
ICAgd2ViVmlld0NsYXNzLT5jaG9vc2VfZmlsZSA9IHdlYmtpdF93ZWJfdmlld19yZWFsX2Nob29z
ZV9maWxlOwpAQCAtMTM4MCw2ICsxNDQ4LDE5IEBACiAgICAgcmV0dXJuIEdUS19XSURHRVQod2Vi
Vmlldyk7CiB9CiAKK3ZvaWQgd2Via2l0X3dlYl92aWV3X3Nob3coV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3
KSk7CisKKyAgICBnYm9vbGVhbiBpc0hhbmRsZWQgPSBGQUxTRTsKKyAgICBnX3NpZ25hbF9lbWl0
KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW1NIT1dfV0VCX1ZJRVddLCAwLCAmaXNI
YW5kbGVkKTsKKyAgICBpZiAoaXNIYW5kbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBHdGtX
aWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJW
aWV3KSk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbCh0b3BsZXZlbCk7Cit9CisKIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NldF9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRX
ZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
d2luZG93ZmVhdHVyZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ3aW5kb3dmZWF0dXJlcy5oCShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYndpbmRvd2ZlYXR1cmVzLmgJKHJldmlzaW9uZSAwKQpAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICog
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K
KyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dF
Ql9XSU5ET1dfRkVBVFVSRVNfSAorI2RlZmluZSBXRUJLSVRfV0VCX1dJTkRPV19GRUFUVVJFU19I
CisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorCisjaW5jbHVkZSA8d2Via2l0L3dlYmtpdGRl
ZmluZXMuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9XSU5E
T1dfRkVBVFVSRVMgKHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlKCkpCisKK3R5
cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyBXZWJLaXRXZWJXaW5kb3dGZWF0
dXJlczsKKworc3RydWN0IF9XZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyB7CisgICAgZ2ludCB4Owor
ICAgIGdpbnQgeTsKKyAgICBnaW50IHdpZHRoOworICAgIGdpbnQgaGVpZ2h0OworICAgIGdib29s
ZWFuIHJlc2l6YWJsZTsKKyAgICBnYm9vbGVhbiBkaWFsb2c7CisgICAgZ2Jvb2xlYW4gZnVsbHNj
cmVlbjsKKyAgICBnYm9vbGVhbiBzaG93X21lbnU7CisgICAgZ2Jvb2xlYW4gc2hvd19zdGF0dXNi
YXI7CisgICAgZ2Jvb2xlYW4gc2hvd190b29sYmFyOworICAgIGdib29sZWFuIHNob3dfdXJpOwor
ICAgIGdib29sZWFuIHNob3dfc2Nyb2xsYmFyczsKK307CisKK1dFQktJVF9BUEkgR1R5cGUKK3dl
YmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2dldF90eXBlKHZvaWQpOworCitXRUJLSVRfQVBJIFdl
YktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93aW5kb3dfZmVhdHVyZXNfbmV3KHZv
aWQpOworCitXRUJLSVRfQVBJIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKgord2Via2l0X3dlYl93
aW5kb3dfZmVhdHVyZXNfY29weShjb25zdCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93
RmVhdHVyZXMpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmgJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuaAkoY29waWEgbG9jYWxlKQpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0
d2ViaGlzdG9yeWl0ZW0uaD4KICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaD4KIAogR19CRUdJTl9ERUNM
UwogCkBAIC02MywxMSArNjQsOSBAQAogCiAgICAgLyoKICAgICAgKiBkZWZhdWx0IGhhbmRsZXIv
dmlydHVhbCBtZXRob2RzCi0gICAgICogRElTQ1VTUzogY3JlYXRlX3dlYl92aWV3IG5lZWRzIGEg
cmVxdWVzdCBhbmQgc2hvdWxkIHdlIG1ha2UgdGhpcyBhIHNpZ25hbCB3aXRoIGRlZmF1bHQgaGFu
ZGxlcj8gdGhpcyB3b3VsZAotICAgICAqIHJlcXVpcmUgc29tZW9uZSBkb2luZyBhIGdfc2lnbmFs
X3N0b3BfZW1pc3Npb25fYnlfbmFtZQotICAgICAqIFdlYlVJRGVsZWdhdGUgaGFzIG5vdGhpbmcg
Zm9yIGNyZWF0ZV9mcmFtZSwgV2ViUG9saWN5RGVsZWdhdGUgYXMgd2VsbC4uLgogICAgICAqLwot
ICAgIFdlYktpdFdlYlZpZXcqICAoKmNyZWF0ZV93ZWJfdmlldykgIChXZWJLaXRXZWJWaWV3KiB3
ZWJfdmlldyk7CisgICAgV2ViS2l0V2ViVmlldyogKCpjcmVhdGVfd2ViX3ZpZXcpIChXZWJLaXRX
ZWJWaWV3KiB3ZWJfdmlldywgV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworICAgIGdi
b29sZWFuICgqc2hvd193ZWJfdmlldykgKFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKIAogICAg
IC8qCiAgICAgICogVE9ETzogRklYTUU6IENyZWF0ZSBzb21ldGhpbmcgbGlrZSBXZWJQb2xpY3lE
ZWNpc2lvbkxpc3RlbmVyX1Byb3RvY29sIGluc3RlYWQKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRw
cml2YXRlLmgJKHJldmlzaW9uZSAzMzkyNikKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAkoY29waWEgbG9jYWxlKQpAQCAtMTA4LDYgKzEwOCw5IEBACiAgICAgV2ViS2l0V2Vi
SGlzdG9yeUl0ZW0qCiAgICAgd2Via2l0X3dlYl9oaXN0b3J5X2l0ZW1fbmV3X3dpdGhfY29yZV9p
dGVtKFdlYkNvcmU6Okhpc3RvcnlJdGVtKik7CiAKKyAgICB2b2lkCisgICAgd2Via2l0X3dlYl92
aWV3X3Nob3cgKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOworCiAgICAgLy8gRklYTUU6IE1vdmUg
dGhlc2UgdG8gd2Via2l0d2ViZnJhbWUuaCBvbmNlIHRoZWlyIEFQSSBoYXMgYmVlbiBkaXNjdXNz
ZWQuCiAKICAgICBXRUJLSVRfQVBJIEdTTGlzdCoKSW5kZXg6IFdlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXdyZXF1ZXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3cmVxdWVzdC5jcHAJKHJldmlzaW9uZSAwKQorKysgV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwCShyZXZpc2lvbmUgMCkKQEAgLTAsMCArMSwyNDMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICog
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAid2Via2l0d2Vidmlld3JlcXVlc3QuaCIKKyNpbmNsdWRlICJ3
ZWJraXRwcml2YXRlLmgiCisKK2V4dGVybiAiQyIgeworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZSB7CisgICAgV2ViS2l0TmV0d29ya1JlcXVlc3QqIG5ldHdvcmtSZXF1ZXN0
OworICAgIGdjaGFyKiBuYW1lOworICAgIFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3aW5kb3dG
ZWF0dXJlczsKK307CisKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1RfR0VUX1BSSVZB
VEUob2JqKShHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dF
Ql9WSUVXX1JFUVVFU1QsIFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSkpCisKK2VudW0gIHsK
KyAgICBQUk9QXzAsCisKKyAgICBQUk9QX05FVFdPUktfUkVRVUVTVCwKKyAgICBQUk9QX05BTUUs
CisgICAgUFJPUF9XSU5ET1dfRkVBVFVSRVMKK307CisKK0dfREVGSU5FX1RZUEUoV2ViS2l0V2Vi
Vmlld1JlcXVlc3QsIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0LCBHX1RZUEVfT0JKRUNUKQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfbmV0d29ya19yZXF1ZXN0KFdl
YktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBXZWJLaXROZXR3b3JrUmVxdWVzdCogbmV0d29y
a1JlcXVlc3QpOworCisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BlcnR5SWQsIEdWYWx1ZSogdmFsdWUs
IEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0
ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqZWN0KTsKKworICAgIHN3aXRjaChwcm9wZXJ0
eUlkKSB7CisgICAgY2FzZSBQUk9QX05FVFdPUktfUkVRVUVTVDoKKyAgICAgICAgZ192YWx1ZV9z
ZXRfb2JqZWN0KHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmV0d29ya19yZXF1
ZXN0KHJlcXVlc3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX05BTUU6CisgICAg
ICAgIGdfdmFsdWVfc2V0X3N0cmluZyh2YWx1ZSwgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0
X25hbWUocmVxdWVzdCkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0lORE9XX0ZF
QVRVUkVTOgorICAgICAgICBnX3ZhbHVlX3NldF9ib3hlZCh2YWx1ZSwgd2Via2l0X3dlYl92aWV3
X3JlcXVlc3RfZ2V0X3dpbmRvd19mZWF0dXJlcyhyZXF1ZXN0KSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGRlZmF1bHQ6CisgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChv
YmplY3QsIHByb3BlcnR5SWQsIHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfcHJvcGVydHkoR09iamVjdCog
b2JqZWN0LCBndWludCBwcm9wZXJ0eUlkLCBjb25zdCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVj
KiBwc3BlYykKK3sKKyAgICBXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCA9IFdFQktJVF9X
RUJfVklFV19SRVFVRVNUKG9iamVjdCk7CisKKyAgICBzd2l0Y2gocHJvcGVydHlJZCkgeworICAg
IGNhc2UgUFJPUF9ORVRXT1JLX1JFUVVFU1Q6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X3NldF9uZXR3b3JrX3JlcXVlc3QocmVxdWVzdCwgc3RhdGljX2Nhc3Q8V2ViS2l0TmV0d29y
a1JlcXVlc3QqPihnX3ZhbHVlX2dldF9vYmplY3QodmFsdWUpKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9OQU1FOgorICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRf
bmFtZShyZXF1ZXN0LCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBQUk9QX1dJTkRPV19GRUFUVVJFUzoKKyAgICAgICAgd2Via2l0X3dlYl92aWV3
X3JlcXVlc3Rfc2V0X3dpbmRvd19mZWF0dXJlcyhyZXF1ZXN0LCBzdGF0aWNfY2FzdDxXZWJLaXRX
ZWJXaW5kb3dGZWF0dXJlcyo+KGdfdmFsdWVfZ2V0X2JveGVkKHZhbHVlKSkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVS
VFlfSUQob2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0K
K30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfaW5pdChXZWJLaXRXZWJW
aWV3UmVxdWVzdCogcmVxdWVzdCkKK3sKKyAgICByZXF1ZXN0LT5wcml2ID0gV0VCS0lUX1dFQl9W
SUVXX1JFUVVFU1RfR0VUX1BSSVZBVEUocmVxdWVzdCk7CisKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworICAgIHByaXYtPm5hbWUgPSBnX3N0
cmR1cCgiIik7CisgICAgcHJpdi0+d2luZG93RmVhdHVyZXMgPSB3ZWJraXRfd2ViX3dpbmRvd19m
ZWF0dXJlc19uZXcoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
ZmluYWxpemUoR09iamVjdCogb2JqKQoreworICAgIFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1
ZXN0ID0gV0VCS0lUX1dFQl9WSUVXX1JFUVVFU1Qob2JqKTsKKyAgICBXZWJLaXRXZWJWaWV3UmVx
dWVzdFByaXZhdGUqIHByaXYgPSByZXF1ZXN0LT5wcml2OworCisgICAgaWYgKHJlcXVlc3QtPnBy
aXYtPm5ldHdvcmtSZXF1ZXN0KQorICAgICAgICBnX29iamVjdF91bnJlZihwcml2LT5uZXR3b3Jr
UmVxdWVzdCk7CisKKyAgICBnX2ZyZWUocHJpdi0+bmFtZSk7CisgICAgZ19mcmVlKHByaXYtPndp
bmRvd0ZlYXR1cmVzKTsKKworICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19yZXF1
ZXN0X3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iaik7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld1JlcXVlc3RDbGFzcyog
cmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogb2JqZWN0Q2xhc3MgPSBHX09CSkVD
VF9DTEFTUyhyZXF1ZXN0Q2xhc3MpOworCisgICAgb2JqZWN0Q2xhc3MtPmdldF9wcm9wZXJ0eSA9
IHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9wcm9wZXJ0eTsKKyAgICBvYmplY3RDbGFzcy0+
c2V0X3Byb3BlcnR5ID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X3Byb3BlcnR5OworICAg
IG9iamVjdENsYXNzLT5kaXNwb3NlID0gd2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemU7
CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9Q
X05FVFdPUktfUkVRVUVTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdf
cGFyYW1fc3BlY19vYmplY3QoIm5ldHdvcmstcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZXR3b3JrIHJlcXVlc3QiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
VGhlIG5ldHdvcmsgcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX05FVFdPUktfUkVRVUVTVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdQYXJh
bUZsYWdzKShXRUJLSVRfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1RfT05MWSkp
KTsKKworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBS
T1BfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3Bl
Y19zdHJpbmcoIm5hbWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiTmV3IHdpbmRvdyBuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBuYW1lIG9mIHRoZSBuZXcg
d2luZG93IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKworICAgIGdfb2JqZWN0X2Ns
YXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfV0lORE9XX0ZFQVRVUkVTLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX2JveGVkKCJ3
aW5kb3ctZmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJXaW5kb3cgZmVhdHVyZXMiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3cgdGhlIG5ldyB3aW5kb3cgc2hv
dWxkIGxvb2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFdFQktJVF9UWVBFX1dFQl9XSU5ET1dfRkVBVFVSRVMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSkpOworCisgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHJlcXVlc3RDbGFzcywg
c2l6ZW9mKFdlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZSkpOworfQorCisvKioKKyAqIHdlYmtp
dF93ZWJfdmlld19yZXF1ZXN0X2dldF9uZXR3b3JrX3JlcXVlc3Q6CisgKiBAcmVxdWVzdDogYSAj
V2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRoZSAjV2ViS2l0TmV0d29ya1Jl
cXVlc3QgZm9yIHRoZSBwYWdlIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUKKyAqIG5ldyAjV2Vi
S2l0V2ViVmlldyBvciAlTlVMTCBpZiB0aGUgbmF2aWdhdGlvbiB3aWxsIGhhcHBlbiBpbiBhIGxh
dGVyIHN0YWdlLgorICoKKyAqIFJldHVybiB2YWx1ZTogdGhlICNXZWJLaXROZXR3b3JrUmVxdWVz
dCBvciBOVUxMCisgKi8KK1dlYktpdE5ldHdvcmtSZXF1ZXN0KiB3ZWJraXRfd2ViX3ZpZXdfcmVx
dWVzdF9nZXRfbmV0d29ya19yZXF1ZXN0KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJl
cXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVz
dDsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25ldHdvcmtf
cmVxdWVzdChXZWJLaXRXZWJWaWV3UmVxdWVzdCogcmVxdWVzdCwgV2ViS2l0TmV0d29ya1JlcXVl
c3QqIG5ldHdvcmtSZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXX1JFUVVFU1QocmVxdWVzdCkpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoIW5ldHdvcmtS
ZXF1ZXN0IHx8IFdFQktJVF9JU19ORVRXT1JLX1JFUVVFU1QobmV0d29ya1JlcXVlc3QpKTsKKwor
ICAgIGlmIChyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCA9PSBuZXR3b3JrUmVxdWVzdCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHJlcXVlc3QtPnByaXYtPm5ldHdvcmtSZXF1ZXN0
KQorICAgICAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0LT5wcml2LT5uZXR3b3JrUmVxdWVzdCk7
CisgICAgcmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QgPSBuZXR3b3JrUmVxdWVzdDsKKyAg
ICBnX29iamVjdF9yZWYocmVxdWVzdC0+cHJpdi0+bmV0d29ya1JlcXVlc3QpOworICAgIGdfb2Jq
ZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwgIm5ldHdvcmstcmVxdWVzdCIpOworfQorCisv
KioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1lOgorICogQHJlcXVlc3Q6IGEg
I1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKgorICogUmV0dXJucyB0aGUgbmFtZSBmb3IgdGhlIG5l
dyB3ZWIgdmlldy4KKyAqCisgKiBSZXR1cm4gdmFsdWU6IHRoZSBuYW1lIG9mIHRoZSBuZXcgd2Vi
IHZpZXcKKyAqLworY29uc3QgZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF9uYW1l
KFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJl
dHVybiByZXF1ZXN0LT5wcml2LT5uYW1lOworfQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19y
ZXF1ZXN0X3NldF9uYW1lOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0Cisg
KiBAbmFtZTogdGhlIHdlYiB2aWV3IG5hbWUKKyAqCisgKiBTZXRzIHRoZSBuYW1lIGZvciB0aGUg
bmV3ICNXZWJLaXRXZWJWaWV3LgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3Nl
dF9uYW1lKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBjb25zdCBnY2hhciogbmFtZSkK
K3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVl
c3QpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKG5hbWUpOworCisgICAgaWYgKCFzdHJjbXAocmVx
dWVzdC0+cHJpdi0+bmFtZSwgbmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIGdfZnJlZShy
ZXF1ZXN0LT5wcml2LT5uYW1lKTsKKyAgICByZXF1ZXN0LT5wcml2LT5uYW1lID0gZ19zdHJkdXAo
bmFtZSk7CisgICAgZ19vYmplY3Rfbm90aWZ5KEdfT0JKRUNUKHJlcXVlc3QpLCAibmFtZSIpOwor
fQorCisvKioKKyAqIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dldF93aW5kb3dfZmVhdHVyZXM6
CisgKiBAcmVxdWVzdDogYSAjV2ViS2l0TmV0d29ya1JlcXVlc3QKKyAqCisgKiBSZXR1cm5zIHRo
ZSAjV2ViS2l0V2ViV2luZG93RmVhdHVyZXMgZGVzY3JpYmluZyBob3cgdGhlIG5ldyB3aW5kb3cg
c2hvdWxkIGxvb2suCisgKgorICogUmV0dXJuIHZhbHVlOiB0aGUgI1dlYktpdFdlYldpbmRvd0Zl
YXR1cmVzCisgKi8KK2NvbnN0IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJraXRfd2ViX3Zp
ZXdfcmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1
ZXN0KQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFV19SRVFV
RVNUKHJlcXVlc3QpLCBOVUxMKTsKKworICAgIHJldHVybiByZXF1ZXN0LT5wcml2LT53aW5kb3dG
ZWF0dXJlczsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93
X2ZlYXR1cmVzOgorICogQHJlcXVlc3Q6IGEgI1dlYktpdE5ldHdvcmtSZXF1ZXN0CisgKiBAd2lu
ZG93RmVhdHVyZXM6IGEgI1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzCisgKgorICogU2V0cyB0aGUg
I1dlYktpdFdlYldpbmRvd0ZlYXR1cmVzIGRlc2NyaWJpbmcgaG93IHRoZSBuZXcgd2luZG93IHNo
b3VsZCBsb29rLgorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF93aW5kb3df
ZmVhdHVyZXMoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QsIGNvbnN0IFdlYktpdFdlYldp
bmRvd0ZlYXR1cmVzKiB3aW5kb3dGZWF0dXJlcykKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdF
QktJVF9JU19XRUJfVklFV19SRVFVRVNUKHJlcXVlc3QpKTsKKworICAgIGlmIChyZXF1ZXN0LT5w
cml2LT53aW5kb3dGZWF0dXJlcyA9PSB3aW5kb3dGZWF0dXJlcykKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZ19mcmVlKHJlcXVlc3QtPnByaXYtPndpbmRvd0ZlYXR1cmVzKTsKKyAgICByZXF1ZXN0
LT5wcml2LT53aW5kb3dGZWF0dXJlcyA9IHdlYmtpdF93ZWJfd2luZG93X2ZlYXR1cmVzX2NvcHko
d2luZG93RmVhdHVyZXMpOworICAgIGdfb2JqZWN0X25vdGlmeShHX09CSkVDVChyZXF1ZXN0KSwg
IndpbmRvdy1mZWF0dXJlcyIpOworfQorCit9CkluZGV4OiBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXQuaAkocmV2aXNpb25l
IDMzOTI2KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0LmgJKGNvcGlhIGxvY2FsZSkKQEAg
LTI3LDUgKzI3LDcgQEAKICNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlldy5oPgogI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXR3ZWJiYWNrZm9yd2FyZGxpc3QuaD4KICNpbmNsdWRlIDx3ZWJraXQv
d2Via2l0d2ViaGlzdG9yeWl0ZW0uaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vidmlld3Jl
cXVlc3QuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KIAog
I2VuZGlmIC8qIF9fV0VCS0lUX0hfXyAqLwpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlld3JlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3cmVxdWVzdC5oCShyZXZpc2lvbmUgMCkKKysrIFdlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXdyZXF1ZXN0LmgJKHJldmlzaW9uZSAwKQpAQCAtMCwwICsxLDcwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV0VCS0lUX1dFQl9WSUVX
X1JFUVVFU1RfSAorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9ICisKKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisKKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0bmV0d29ya3JlcXVlc3QuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuaD4KKworR19CRUdJTl9E
RUNMUworCisjZGVmaW5lIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1QgICAgICAgICAgICAo
d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9W
SUVXX1JFUVVFU1Qob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgo
b2JqKSwgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfUkVRVUVTVCwgV2ViS2l0V2ViVmlld1JlcXVlc3Qp
KQorI2RlZmluZSBXRUJLSVRfV0VCX1ZJRVdfUkVRVUVTVF9DTEFTUyhrbGFzcykgICAgKEdfVFlQ
RV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFdFQktJVF9UWVBFX1dFQl9WSUVXX1JFUVVFU1Qs
IFdlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MpKQorI2RlZmluZSBXRUJLSVRfSVNfV0VCX1ZJRVdf
UkVRVUVTVChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX0lTX1dFQl9WSUVX
X1JFUVVFU1RfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBX
RUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNUKSkKKyNkZWZpbmUgV0VCS0lUX1dFQl9WSUVXX1JF
UVVFU1RfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfVklFV19SRVFVRVNULCBXZWJLaXRXZWJWaWV3UmVxdWVzdENsYXNzKSkK
KwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0IFdlYktpdFdlYlZpZXdSZXF1
ZXN0OwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1ZXN0Q2xhc3MgV2ViS2l0V2Vi
Vmlld1JlcXVlc3RDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3UmVxdWVzdFBy
aXZhdGUgV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOworCitzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXdSZXF1ZXN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKKyAgICBXZWJLaXRXZWJW
aWV3UmVxdWVzdFByaXZhdGUqIHByaXY7Cit9OworCitzdHJ1Y3QgX1dlYktpdFdlYlZpZXdSZXF1
ZXN0Q2xhc3MgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitXRUJLSVRf
QVBJIEdUeXBlCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfdHlwZSh2b2lkKTsKKworV0VC
S0lUX0FQSSBXZWJLaXROZXR3b3JrUmVxdWVzdCoKK3dlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2dl
dF9uZXR3b3JrX3JlcXVlc3QoV2ViS2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJL
SVRfQVBJIGNvbnN0IGdjaGFyKgord2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWUoV2Vi
S2l0V2ViVmlld1JlcXVlc3QqIHJlcXVlc3QpOworCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF93
ZWJfdmlld19yZXF1ZXN0X3NldF9uYW1lKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0LCBj
b25zdCBnY2hhciogbmFtZSk7CisKK1dFQktJVF9BUEkgY29uc3QgV2ViS2l0V2ViV2luZG93RmVh
dHVyZXMqCit3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfd2luZG93X2ZlYXR1cmVzKFdlYktp
dFdlYlZpZXdSZXF1ZXN0KiByZXF1ZXN0KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2Vi
X3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzKFdlYktpdFdlYlZpZXdSZXF1ZXN0KiBy
ZXF1ZXN0LCBjb25zdCBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2luZG93RmVhdHVyZXMpOwor
CitHX0VORF9ERUNMUworCisjZW5kaWYKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbmUgMzM5MjYpCisrKyBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwkoY29waWEgbG9jYWxlKQpAQCAtMSwzICsxLDQ4IEBACisyMDA4LTA1
LTIwICBNYXJjbyBCYXJpc2lvbmUgIDxtYXJjby5iYXJpc2lvbmVAY29sbGFib3JhLmNvLnVrPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHA6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTQzCisgICAgICAgIFtHVEtdIEltcHJv
dmUgdGhlIGhhbmRsaW5nIG9mIG5ldyB3aW5kb3cgcmVxdWVzdHMKKworICAgICAgICBJbXByb3Zl
IGhvdyBuZXcgd2luZG93cyBhcmUgY3JlYXRlIHdoZW4gcmVxdWVzdGVkIGJ5IFdlYkNvcmUuIEVt
aXQKKyAgICAgICAgImNyZWF0ZS13ZWItdmlldyIgdG8gYXNrIGZvciB0aGUgY3JlYXRpb24gb2Yg
YSBuZXcgV2ViS2l0V2ViVmlldyBhbmQKKyAgICAgICAgInNob3ctd2ViLXZpZXciIHdoZW4gdGhl
IG5ldyBXZWJLaXRXZWJWaWV3IHNob3VsZCBiZSBkaXNwbGF5ZWQgdG8gdGhlCisgICAgICAgIHVz
ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmNyZWF0ZVdpbmRvdyk6IEVtaXQgImNyZWF0ZS13
ZWItdmlldyIuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2hvdyk6IENhbGwgd2Vi
a2l0X3dlYl92aWV3X3Nob3coKS4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIFNlbmQgYWx3YXlz
IHRoZSAidXNlIiBwb2xpY3kuCisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaFNob3cpOiBDYWxsIHdlYmtpdF93ZWJfdmlld19zaG93KCkKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6IEVtaXQKKyAgICAgICAg
ImNyZWF0ZS13ZWItdmlldyIuCisgICAgICAgICogd2Via2l0L3dlYmtpdC1tYXJzaGFsLmxpc3Q6
IEFkZCBtYXJzaGFsbGVycyBmb3IgImNyZWF0ZS13ZWItdmlldyIKKyAgICAgICAgYW5kICJzaG93
LXdlYi12aWV3Ii4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Lmg6IEluY2x1ZGUgdGhlIG5ldyBo
ZWFkZXJzLAorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6IEFkZCB3ZWJraXRfd2Vi
X3ZpZXdfc2hvdygpLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogQWRkIHRo
ZSBzaWduYWxzICJjcmVhdGUtd2ViLXZpZXciIGFuZAorICAgICAgICAic2hvdy13ZWItdmlldyIs
IGFuZCBhZGQgd2Via2l0X3dlYl92aWV3X3Nob3coKS4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5oOiBBZGQgdGhlIHZpcnR1YWwgbWV0aG9kIHNob3dfd2ViX3ZpZXcoKS4KKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9X
ZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6Oik6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1Jl
cXVlc3RQcml2YXRlOjp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfcHJvcGVydHkpOgorICAg
ICAgICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVl
c3Rfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKF9XZWJLaXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6
OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X2luaXQpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3RfZmluYWxpemUpOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
Y2xhc3NfaW5pdCk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2YXRlOjp3ZWJr
aXRfd2ViX3ZpZXdfcmVxdWVzdF9nZXRfbmV0d29ya19yZXF1ZXN0KToKKyAgICAgICAgKF9XZWJL
aXRXZWJWaWV3UmVxdWVzdFByaXZhdGU6OndlYmtpdF93ZWJfdmlld19yZXF1ZXN0X3NldF9uZXR3
b3JrX3JlcXVlc3QpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Vi
a2l0X3dlYl92aWV3X3JlcXVlc3RfZ2V0X25hbWUpOgorICAgICAgICAoX1dlYktpdFdlYlZpZXdS
ZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rfc2V0X25hbWUpOgorICAgICAg
ICAoX1dlYktpdFdlYlZpZXdSZXF1ZXN0UHJpdmF0ZTo6d2Via2l0X3dlYl92aWV3X3JlcXVlc3Rf
Z2V0X3dpbmRvd19mZWF0dXJlcyk6CisgICAgICAgIChfV2ViS2l0V2ViVmlld1JlcXVlc3RQcml2
YXRlOjp3ZWJraXRfd2ViX3ZpZXdfcmVxdWVzdF9zZXRfd2luZG93X2ZlYXR1cmVzKToKKyAgICAg
ICAgKiB3ZWJraXQvd2Via2l0d2Vidmlld3JlcXVlc3QuaDogQWRkZWQuCisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmNwcDogQWRkZWQuCisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYndpbmRvd2ZlYXR1cmVzLmg6IEFkZGVkLgorCiAyMDA4LTA1LTE5ICBBbHAgVG9r
ZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgYW5kIEJl
dGguCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gQ2hhbmdlTG9nCShyZXZpc2lvbmUg
MzM5MjYpCisrKyBDaGFuZ2VMb2cJKGNvcGlhIGxvY2FsZSkKQEAgLTEsMyArMSwxNCBAQAorMjAw
OC0wNS0yMCAgTWFyY28gQmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51
az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRw
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTE0MworICAgICAgICBbR1RLXSBJ
bXByb3ZlIHRoZSBoYW5kbGluZyBvZiBuZXcgd2luZG93IHJlcXVlc3RzCisKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbTogd2Via2l0d2Vid2luZG93ZmVhdHVyZXMuY3BwLAorCXdlYmtpdHdlYndp
bmRvd2ZlYXR1cmVzLmgsIHdlYmtpdHdlYnZpZXdyZXF1ZXN0LmNwcCBhbmQKKwl3ZWJraXR3ZWJ2
aWV3cmVxdWVzdC5oCisKIDIwMDgtMDUtMjAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpv
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxwLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>