<?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>100199</bug_id>
          
          <creation_ts>2012-10-23 22:39:22 -0700</creation_ts>
          <short_desc>[EFL][WK2] Make find and form clients C++ classes</short_desc>
          <delta_ts>2012-10-24 04:02:29 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>99992</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>gyuyoung.kim</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>749358</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 22:39:22 -0700</bug_when>
    <thetext>As part of bug 99992, we should move away from C&apos;ism and make the find client a C++ class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749402</commentid>
    <comment_count>1</comment_count>
      <attachid>170328</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 23:44:37 -0700</bug_when>
    <thetext>Created attachment 170328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749415</commentid>
    <comment_count>2</comment_count>
      <attachid>170328</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-24 00:07:42 -0700</bug_when>
    <thetext>Comment on attachment 170328
Patch

looks nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749458</commentid>
    <comment_count>3</comment_count>
      <attachid>170328</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 01:14:20 -0700</bug_when>
    <thetext>Comment on attachment 170328
Patch

Rejecting attachment 170328 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ommit-queue/Source/WebKit/chromium/third_party/snappy/src --revision 63 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
44&gt;At revision 63.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/14566117</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749487</commentid>
    <comment_count>4</comment_count>
      <attachid>170350</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-24 02:52:56 -0700</bug_when>
    <thetext>Created attachment 170350
Patch for landing

Rebase on master. Could someone please cq+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749516</commentid>
    <comment_count>5</comment_count>
      <attachid>170350</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 04:02:23 -0700</bug_when>
    <thetext>Comment on attachment 170350
Patch for landing

Clearing flags on attachment: 170350

Committed r132334: &lt;http://trac.webkit.org/changeset/132334&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>749517</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-24 04:02:29 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170328</attachid>
            <date>2012-10-23 23:44:37 -0700</date>
            <delta_ts>2012-10-24 02:52:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100199_find_client_cpp.patch</filename>
            <type>text/plain</type>
            <size>24727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAyN2Y4NDFmLi41YzE3MGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgZmluZCBhbmQgZm9ybSBjbGllbnRzIEMr
KyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDAxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNYWtlIGZvcm0gYW5kIGZpbmQgY2xpZW50IEMrKyBjbGFzc2VzIHRvIG1vdmUgYXdheQorICAg
ICAgICBmcm9tIEMnaXNtIGluIFdLMiBFRkwgcG9ydC4gVGhlIG5ldyBjbGFzc2VzIGhhdmUgYmVl
bgorICAgICAgICBtb3ZlZCB1cCB0byBVSVByb2Nlc3MvZWZsIGluc3RlYWQgb2YgVUlQcm9jZXNz
L0FQSS9lZmwKKyAgICAgICAgc2luY2UgaXQgaXMgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEku
CisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFd2tfVmlld19Qcml2YXRlX0RhdGEpOgorICAg
ICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmlu
ZENsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9ld2tfdmlld19maW5kX2NsaWVudC5jcHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0Ojp0b0ZpbmRDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50
RWZsOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6RmluZENsaWVudEVmbDo6ZGlk
RmFpbFRvRmluZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGllbnRFZmw6OkZpbmRD
bGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZmluZF9j
bGllbnRfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKEZpbmRDbGllbnRF
ZmwpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpjcmVhdGUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudC5jcHAuCisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1DbGllbnRFZmwpOgorICAgICAgICAo
V2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJLaXQ6
OkZvcm1DbGllbnRFZmw6OkZvcm1DbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
Rm9ybUNsaWVudEVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0KToK
KyAgICAgICAgKEZvcm1DbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpGb3JtQ2xpZW50RWZs
OjpjcmVhdGUpOgorCiAyMDEyLTEwLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgV2ViS2l0MiBwYXJ0IG9mIDxyZGFyOi8vcHJvYmxlbS8yOTY2OTc0PiBbbWFj
XSBLZXJuaW5nIGFuZCBsaWdhdHVyZXMgYXJlIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYktpdDIv
UGxhdGZvcm1FZmwuY21ha2UKaW5kZXggNzQxZjM0OC4uNWJlYTM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYktpdDIvUGxhdGZv
cm1FZmwuY21ha2UKQEAgLTY5LDEyICs2OSwxMiBAQCBMSVNUKEFQUEVORCBXZWJLaXQyX1NPVVJD
RVMKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdXJsX3Jlc3BvbnNlLmNwcAogICAgIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a191cmxfc2NoZW1lX3JlcXVlc3QuY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZmluZF9j
bGllbnQuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGllbnQuY3Bw
CiAKICAgICBVSVByb2Nlc3MvY2Fpcm8vQmFja2luZ1N0b3JlQ2Fpcm8uY3BwCiAKICAgICBVSVBy
b2Nlc3MvZWZsL0Rvd25sb2FkTWFuYWdlckVmbC5jcHAKKyAgICBVSVByb2Nlc3MvZWZsL0ZpbmRD
bGllbnRFZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcAogICAgIFVJ
UHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9QYWdl
UG9saWN5Q2xpZW50RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZVVJQ2xpZW50RWZsLmNw
cApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCmluZGV4
IDcwZTY5MTUuLjQ3MmE2NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKQEAgLTIxLDYgKzIxLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJld2tfdmlldy5oIgogCisjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgorI2luY2x1
ZGUgIkZvcm1DbGllbnRFZmwuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50Lmgi
CiAjaW5jbHVkZSAiTmF0aXZlV2ViTW91c2VFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYldo
ZWVsRXZlbnQuaCIKQEAgLTUzLDggKzU1LDYgQEAKICNpbmNsdWRlICJld2tfcmVzb3VyY2UuaCIK
ICNpbmNsdWRlICJld2tfcmVzb3VyY2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0aW5n
c19wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfZmluZF9jbGllbnRfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgImV3a192aWV3X2Zvcm1fY2xpZW50X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tf
dmlld19wcml2YXRlLmgiCiAjaW5jbHVkZSA8RWNvcmVfRXZhcy5oPgogI2luY2x1ZGUgPEVjb3Jl
X0lNRi5oPgpAQCAtMTI5LDYgKzEyOSw4IEBAIHN0cnVjdCBFd2tfVmlld19Qcml2YXRlX0RhdGEg
ewogICAgIE93blB0cjxQYWdlUG9saWN5Q2xpZW50RWZsPiBwYWdlUG9saWN5Q2xpZW50OwogICAg
IE93blB0cjxQYWdlVUlDbGllbnRFZmw+IHBhZ2VVSUNsaWVudDsKICAgICBPd25QdHI8UmVzb3Vy
Y2VMb2FkQ2xpZW50RWZsPiByZXNvdXJjZUxvYWRDbGllbnQ7CisgICAgT3duUHRyPEZpbmRDbGll
bnRFZmw+IGZpbmRDbGllbnQ7CisgICAgT3duUHRyPEZvcm1DbGllbnRFZmw+IGZvcm1DbGllbnQ7
CiAKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdXJsOwogICAgIFdLRWluYVNoYXJlZFN0cmluZyB0
aXRsZTsKQEAgLTkyMywxOCArOTI1LDE4IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19pbml0aWFs
aXplKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBQYXNzUmVmUHRyPEV3a19Db250ZXh0PiBjCiAgICAg
cHJpdi0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwcml2LT5wYWdlVmll
d3BvcnRDb250cm9sbGVyLmdldCgpKTsKICNlbmRpZgogCi0gICAgLy8gSW5pdGlhbGl6ZSBwYWdl
IGNsaWVudHMuCi0gICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHByaXYtPnBhZ2VQcm94eS5n
ZXQoKSk7Ci0gICAgZXdrX3ZpZXdfZmluZF9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7
Ci0gICAgZXdrX3ZpZXdfZm9ybV9jbGllbnRfYXR0YWNoKHdrUGFnZSwgZXdrVmlldyk7CiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHByaXYtPnBhZ2VQcm94eS0+ZnVsbFNjcmVlbk1h
bmFnZXIoKS0+c2V0V2ViVmlldyhld2tWaWV3KTsKICAgICBld2tfc2V0dGluZ3NfZnVsbHNjcmVl
bl9lbmFibGVkX3NldChwcml2LT5zZXR0aW5ncy5nZXQoKSwgdHJ1ZSk7CiAjZW5kaWYKKworICAg
IC8vIEluaXRpYWxpemUgcGFnZSBjbGllbnRzLgogICAgIHByaXYtPnBhZ2VMb2FkQ2xpZW50ID0g
UGFnZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKICAgICBwcml2LT5wYWdlUG9saWN5
Q2xpZW50ID0gUGFnZVBvbGljeUNsaWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcpOwogICAgIHByaXYt
PnBhZ2VVSUNsaWVudCA9IFBhZ2VVSUNsaWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcpOwogICAgIHBy
aXYtPnJlc291cmNlTG9hZENsaWVudCA9IFJlc291cmNlTG9hZENsaWVudEVmbDo6Y3JlYXRlKGV3
a1ZpZXcpOworICAgIHByaXYtPmZpbmRDbGllbnQgPSBGaW5kQ2xpZW50RWZsOjpjcmVhdGUoZXdr
Vmlldyk7CisgICAgcHJpdi0+Zm9ybUNsaWVudCA9IEZvcm1DbGllbnRFZmw6OmNyZWF0ZShld2tW
aWV3KTsKIAogICAgIC8qIExpc3RlbiBmb3IgZmF2aWNvbiBjaGFuZ2VzICovCiAgICAgRXdrX0Zh
dmljb25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IHByaXYtPmNvbnRleHQtPmZhdmljb25EYXRh
YmFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfZmluZF9jbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXdfZmluZF9jbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
ZWRjM2NiLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X2ZpbmRfY2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
LSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgot
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSAiV0tQ
YWdlLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfZmluZF9jbGllbnRfcHJpdmF0ZS5oIgotI2luY2x1
ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotc3RhdGljIGlubGluZSBFdmFzX09iamVjdCogdG9F
d2tWaWV3KGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEV2YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotfQotCi1zdGF0
aWMgdm9pZCBkaWRGaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVkIG1h
dGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgZXdrX3ZpZXdfdGV4dF9m
b3VuZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIG1hdGNoQ291bnQpOwotfQotCi1zdGF0aWMgdm9p
ZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCi17Ci0gICAgZXdrX3ZpZXdfdGV4dF9mb3VuZCh0b0V3a1ZpZXcoY2xpZW50
SW5mbyksIDApOwotfQotCi1zdGF0aWMgdm9pZCBkaWRDb3VudFN0cmluZ01hdGNoZXMoV0tQYWdl
UmVmLCBXS1N0cmluZ1JlZiwgdW5zaWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKLXsKLSAgICBld2tfdmlld190ZXh0X2ZvdW5kKHRvRXdrVmlldyhjbGllbnRJbmZvKSwg
bWF0Y2hDb3VudCk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfZmluZF9jbGllbnRfYXR0YWNoKFdLUGFn
ZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBXS1BhZ2VGaW5kQ2xp
ZW50IGZpbmRDbGllbnQ7Ci0gICAgbWVtc2V0KCZmaW5kQ2xpZW50LCAwLCBzaXplb2YoV0tQYWdl
RmluZENsaWVudCkpOwotICAgIGZpbmRDbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VGaW5kQ2xpZW50
Q3VycmVudFZlcnNpb247Ci0gICAgZmluZENsaWVudC5jbGllbnRJbmZvID0gZXdrVmlldzsKLSAg
ICBmaW5kQ2xpZW50LmRpZEZpbmRTdHJpbmcgPSBkaWRGaW5kU3RyaW5nOwotICAgIGZpbmRDbGll
bnQuZGlkRmFpbFRvRmluZFN0cmluZyA9IGRpZEZhaWxUb0ZpbmRTdHJpbmc7Ci0gICAgZmluZENs
aWVudC5kaWRDb3VudFN0cmluZ01hdGNoZXMgPSBkaWRDb3VudFN0cmluZ01hdGNoZXM7Ci0gICAg
V0tQYWdlU2V0UGFnZUZpbmRDbGllbnQocGFnZVJlZiwgJmZpbmRDbGllbnQpOwotfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZmluZF9jbGll
bnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdf
ZmluZF9jbGllbnRfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTcx
NDMzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192
aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBld2tfdmlld19maW5kX2NsaWVudF9wcml2
YXRlX2gKLSNkZWZpbmUgZXdrX3ZpZXdfZmluZF9jbGllbnRfcHJpdmF0ZV9oCi0KLSNpbmNsdWRl
IDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KLQotdm9pZCBld2tfdmlld19m
aW5kX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3
KTsKLQotI2VuZGlmIC8vIGV3a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGll
bnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTA5ZWQ5Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2Zvcm1fY2xpZW50
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIldLUGFnZS5oIgotI2luY2x1ZGUgImV3
a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgotI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Np
b25fcmVxdWVzdF9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJp
dmF0ZS5oIgotI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIKLQotc3RhdGljIHZvaWQgd2ls
bFN1Ym1pdEZvcm0oV0tQYWdlUmVmLCBXS0ZyYW1lUmVmIC8qZnJhbWUqLywgV0tGcmFtZVJlZiAv
KnNvdXJjZUZyYW1lKi8sIFdLRGljdGlvbmFyeVJlZiB2YWx1ZXMsIFdLVHlwZVJlZiAvKnVzZXJE
YXRhKi8sIFdLRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbykKLXsKLSAgICBFdmFzX09iamVjdCogZXdrVmlldyA9IHN0YXRpY19jYXN0PEV2
YXNfT2JqZWN0Kj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotCi0gICAgUmVmUHRy
PEV3a19Gb3JtX1N1Ym1pc3Npb25fUmVxdWVzdD4gcmVxdWVzdCA9IEV3a19Gb3JtX1N1Ym1pc3Np
b25fUmVxdWVzdDo6Y3JlYXRlKHZhbHVlcywgbGlzdGVuZXIpOwotICAgIGV3a192aWV3X2Zvcm1f
c3VibWlzc2lvbl9yZXF1ZXN0X25ldyhld2tWaWV3LCByZXF1ZXN0LmdldCgpKTsKLX0KLQotdm9p
ZCBld2tfdmlld19mb3JtX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBhZ2VSZWYsIEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQotewotICAgIFdLUGFnZUZvcm1DbGllbnQgZm9ybUNsaWVudDsKLSAgICBt
ZW1zZXQoJmZvcm1DbGllbnQsIDAsIHNpemVvZihXS1BhZ2VGb3JtQ2xpZW50KSk7Ci0gICAgZm9y
bUNsaWVudC52ZXJzaW9uID0ga1dLUGFnZUZvcm1DbGllbnRDdXJyZW50VmVyc2lvbjsKLSAgICBm
b3JtQ2xpZW50LmNsaWVudEluZm8gPSBld2tWaWV3OwotICAgIGZvcm1DbGllbnQud2lsbFN1Ym1p
dEZvcm0gPSB3aWxsU3VibWl0Rm9ybTsKLSAgICBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChwYWdl
UmVmLCAmZm9ybUNsaWVudCk7Ci19CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlLmgKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmZWI0YTEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oCisr
KyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJ
bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX3ZpZXdfZm9ybV9j
bGllbnRfcHJpdmF0ZV9oCi0KLSNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8V2ViS2l0Mi9X
S0Jhc2UuaD4KLQotdm9pZCBld2tfdmlld19mb3JtX2NsaWVudF9hdHRhY2goV0tQYWdlUmVmIHBh
Z2VSZWYsIEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKLQotI2VuZGlmIC8vIGV3a192aWV3X2Zvcm1f
Y2xpZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9GaW5kQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM1NTA2Ygot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVu
dEVmbC5jcHAKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBTYW1z
dW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRmluZENsaWVudEVmbC5oIgorCisjaW5jbHVk
ZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RhdGljIGlubGluZSBGaW5kQ2xpZW50RWZsKiB0b0ZpbmRDbGllbnRFZmwo
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RmluZENs
aWVudEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30KKwordm9pZCBGaW5k
Q2xpZW50RWZsOjpkaWRGaW5kU3RyaW5nKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVk
IG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgRmluZENsaWVudEVm
bCogZmluZENsaWVudCA9IHRvRmluZENsaWVudEVmbChjbGllbnRJbmZvKTsKKyAgICBld2tfdmll
d190ZXh0X2ZvdW5kKGZpbmRDbGllbnQtPm1fdmlldywgbWF0Y2hDb3VudCk7Cit9CisKK3ZvaWQg
RmluZENsaWVudEVmbDo6ZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVm
LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGll
bnQgPSB0b0ZpbmRDbGllbnRFZmwoY2xpZW50SW5mbyk7CisgICAgZXdrX3ZpZXdfdGV4dF9mb3Vu
ZChmaW5kQ2xpZW50LT5tX3ZpZXcsIDApOworfQorCitGaW5kQ2xpZW50RWZsOjpGaW5kQ2xpZW50
RWZsKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIDogbV92aWV3KHZpZXcpCit7CisgICAgV0tQYWdl
UmVmIHBhZ2VSZWYgPSBld2tfdmlld193a3BhZ2VfZ2V0KG1fdmlldyk7CisgICAgQVNTRVJUKHBh
Z2VSZWYpOworCisgICAgV0tQYWdlRmluZENsaWVudCBmaW5kQ2xpZW50OworICAgIG1lbXNldCgm
ZmluZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUZpbmRDbGllbnQpKTsKKyAgICBmaW5kQ2xpZW50
LnZlcnNpb24gPSBrV0tQYWdlRmluZENsaWVudEN1cnJlbnRWZXJzaW9uOworICAgIGZpbmRDbGll
bnQuY2xpZW50SW5mbyA9IHRoaXM7CisgICAgZmluZENsaWVudC5kaWRGaW5kU3RyaW5nID0gZGlk
RmluZFN0cmluZzsKKyAgICBmaW5kQ2xpZW50LmRpZEZhaWxUb0ZpbmRTdHJpbmcgPSBkaWRGYWls
VG9GaW5kU3RyaW5nOworICAgIGZpbmRDbGllbnQuZGlkQ291bnRTdHJpbmdNYXRjaGVzID0gZGlk
RmluZFN0cmluZzsKKyAgICBXS1BhZ2VTZXRQYWdlRmluZENsaWVudChwYWdlUmVmLCAmZmluZENs
aWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi5iMzdkYWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2VmbC9GaW5kQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaWZuZGVmIEZpbmRDbGllbnRFZmxfaAorI2RlZmluZSBGaW5kQ2xpZW50RWZs
X2gKKworI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEZpbmRDbGllbnRFZmwgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPEZpbmRDbGllbnRFZmw+IGNyZWF0ZShFdmFzX09i
amVjdCogdmlldykKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgRmluZENsaWVu
dEVmbCh2aWV3KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIGV4cGxpY2l0IEZpbmRDbGllbnRF
ZmwoRXZhc19PYmplY3QqIHZpZXcpOworCisgICAgc3RhdGljIHZvaWQgZGlkRmluZFN0cmluZyhX
S1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGYWlsVG9GaW5kU3RyaW5nKFdLUGFnZVJl
ZiwgV0tTdHJpbmdSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOworCisgICAgRXZhc19PYmpl
Y3QqIG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRmlu
ZENsaWVudEVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0Zv
cm1DbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50
RWZsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NTA2MjBhCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZs
LmNwcApAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRm9ybUNsaWVudEVmbC5oIgorCisjaW5jbHVkZSAiV0tQYWdlLmgi
CisjaW5jbHVkZSAiZXdrX2Zvcm1fc3VibWlzc2lvbl9yZXF1ZXN0X3ByaXZhdGUuaCIKKyNpbmNs
dWRlICJld2tfdmlld19wcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMg
aW5saW5lIEZvcm1DbGllbnRFZmwqIHRvRm9ybUNsaWVudEVmbChjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGb3JtQ2xpZW50RWZsKj4oY29uc3RfY2Fz
dDx2b2lkKj4oY2xpZW50SW5mbykpOworfQorCit2b2lkIEZvcm1DbGllbnRFZmw6OndpbGxTdWJt
aXRGb3JtKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiAvKmZyYW1lKi8sIFdLRnJhbWVSZWYgLypzb3Vy
Y2VGcmFtZSovLCBXS0RpY3Rpb25hcnlSZWYgdmFsdWVzLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSov
LCBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgRm9ybUNsaWVudEVmbCogZm9ybUNsaWVudCA9IHRvRm9ybUNsaWVudEVm
bChjbGllbnRJbmZvKTsKKworICAgIFJlZlB0cjxFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q+
IHJlcXVlc3QgPSBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q6OmNyZWF0ZSh2YWx1ZXMsIGxp
c3RlbmVyKTsKKyAgICBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoZm9ybUNs
aWVudC0+bV92aWV3LCByZXF1ZXN0LmdldCgpKTsKK30KKworRm9ybUNsaWVudEVmbDo6Rm9ybUNs
aWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAgICA6IG1fdmlldyh2aWV3KQoreworICAgIFdL
UGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2twYWdlX2dldChtX3ZpZXcpOworICAgIEFTU0VS
VChwYWdlUmVmKTsKKworICAgIFdLUGFnZUZvcm1DbGllbnQgZm9ybUNsaWVudDsKKyAgICBtZW1z
ZXQoJmZvcm1DbGllbnQsIDAsIHNpemVvZihXS1BhZ2VGb3JtQ2xpZW50KSk7CisgICAgZm9ybUNs
aWVudC52ZXJzaW9uID0ga1dLUGFnZUZvcm1DbGllbnRDdXJyZW50VmVyc2lvbjsKKyAgICBmb3Jt
Q2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAgIGZvcm1DbGllbnQud2lsbFN1Ym1pdEZvcm0g
PSB3aWxsU3VibWl0Rm9ybTsKKyAgICBXS1BhZ2VTZXRQYWdlRm9ybUNsaWVudChwYWdlUmVmLCAm
Zm9ybUNsaWVudCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL0Zvcm1DbGllbnRFZmwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi43ZTI4YTEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBGb3JtQ2xpZW50RWZsX2gKKyNkZWZpbmUgRm9ybUNsaWVudEVmbF9o
CisKKyNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBGb3JtQ2xpZW50RWZsIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxGb3JtQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmpl
Y3QqIHZpZXcpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEZvcm1DbGllbnRF
ZmwodmlldykpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBGb3JtQ2xpZW50RWZs
KEV2YXNfT2JqZWN0KiB2aWV3KTsKKworICAgIHN0YXRpYyB2b2lkIHdpbGxTdWJtaXRGb3JtKFdL
UGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tGcmFtZVJlZiwgV0tEaWN0aW9uYXJ5UmVmIHZhbHVlcywg
V0tUeXBlUmVmIHVzZXJEYXRhLCBXS0Zvcm1TdWJtaXNzaW9uTGlzdGVuZXJSZWYsIGNvbnN0IHZv
aWQqIGNsaWVudEluZm8pOworCisgICAgRXZhc19PYmplY3QqIG1fdmlldzsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gRm9ybUNsaWVudEVmbF9oCg==
</data>
<flag name="review"
          id="183899"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
    <flag name="commit-queue"
          id="183900"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170350</attachid>
            <date>2012-10-24 02:52:56 -0700</date>
            <delta_ts>2012-10-24 04:02:23 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>100199_find_client_cpp.patch</filename>
            <type>text/plain</type>
            <size>24758</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBhNWZlODNlLi4wZmQyZDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkg
QEAKKzIwMTItMTAtMjMgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVs
LmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIE1ha2UgZmluZCBhbmQgZm9ybSBjbGllbnRzIEMr
KyBjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDAxOTkKKworICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNl
bi4KKworICAgICAgICBNYWtlIGZvcm0gYW5kIGZpbmQgY2xpZW50IEMrKyBjbGFzc2VzIHRvIG1v
dmUgYXdheQorICAgICAgICBmcm9tIEMnaXNtIGluIFdLMiBFRkwgcG9ydC4gVGhlIG5ldyBjbGFz
c2VzIGhhdmUgYmVlbgorICAgICAgICBtb3ZlZCB1cCB0byBVSVByb2Nlc3MvZWZsIGluc3RlYWQg
b2YgVUlQcm9jZXNzL0FQSS9lZmwKKyAgICAgICAgc2luY2UgaXQgaXMgbm90IHBhcnQgb2YgdGhl
IHB1YmxpYyBBUEkuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChFd2tfVmlld19Qcml2YXRl
X0RhdGEpOgorICAgICAgICAoX2V3a192aWV3X2luaXRpYWxpemUpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19maW5kX2NsaWVudC5jcHAuCisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0Ojp0b0ZpbmRDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ2xpZW50RWZsOjpkaWRGaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6RmluZENs
aWVudEVmbDo6ZGlkRmFpbFRvRmluZFN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDbGll
bnRFZmw6OkZpbmRDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRmluZENsaWVu
dEVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3ZpZXdfZmluZF9jbGllbnRfcHJpdmF0ZS5oLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAg
KEZpbmRDbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ2xpZW50RWZsOjpjcmVhdGUp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHA6IFJlbmFtZWQgZnJv
bSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudC5j
cHAuCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0b0Zvcm1DbGllbnRFZmwp
OgorICAgICAgICAoV2ViS2l0OjpGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybSk6CisgICAg
ICAgIChXZWJLaXQ6OkZvcm1DbGllbnRFZmw6OkZvcm1DbGllbnRFZmwpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oLgorICAgICAg
ICAoV2ViS2l0KToKKyAgICAgICAgKEZvcm1DbGllbnRFZmwpOgorICAgICAgICAoV2ViS2l0OjpG
b3JtQ2xpZW50RWZsOjpjcmVhdGUpOgorCiAyMDEyLTEwLTI0ICBZYWVsIEFoYXJvbiAgPHlhZWwu
YWhhcm9uQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdW0FDXSBCbGFjayBzY3JlZW4g
aW4gd2ViIGluc3BlY3RvciB3aW5kb3cgd2l0aCBBQyBvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFr
ZQppbmRleCBlMmI1OWU2Li4yOGIwZmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbGF0
Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAt
NjgsMTMgKzY4LDEzIEBAIExJU1QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a191cmxfcmVzcG9uc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3VybF9zY2hlbWVfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKLSAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19maW5kX2NsaWVudC5jcHAKLSAgICBV
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudC5jcHAKIAogICAgIFVJUHJvY2Vz
cy9jYWlyby9CYWNraW5nU3RvcmVDYWlyby5jcHAKIAogICAgIFVJUHJvY2Vzcy9lZmwvQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwuY3BwCiAgICAgVUlQcm9jZXNzL2VmbC9Eb3dubG9hZE1hbmFnZXJF
ZmwuY3BwCisgICAgVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmNwcAorICAgIFVJUHJvY2Vz
cy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKICAgICBVSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50
RWZsLmNwcAogICAgIFVJUHJvY2Vzcy9lZmwvUGFnZVBvbGljeUNsaWVudEVmbC5jcHAKICAgICBV
SVByb2Nlc3MvZWZsL1BhZ2VVSUNsaWVudEVmbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCA3MGU2OTE1Li40NzJhNjc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCkBAIC0yMSw2ICsy
MSw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXcuaCIKIAorI2lu
Y2x1ZGUgIkZpbmRDbGllbnRFZmwuaCIKKyNpbmNsdWRlICJGb3JtQ2xpZW50RWZsLmgiCiAjaW5j
bHVkZSAiTmF0aXZlV2ViS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk5hdGl2ZVdlYk1vdXNl
RXZlbnQuaCIKICNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCkBAIC01Myw4ICs1NSw2
IEBACiAjaW5jbHVkZSAiZXdrX3Jlc291cmNlLmgiCiAjaW5jbHVkZSAiZXdrX3Jlc291cmNlX3By
aXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3
a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19mb3JtX2Ns
aWVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogI2luY2x1ZGUg
PEVjb3JlX0V2YXMuaD4KICNpbmNsdWRlIDxFY29yZV9JTUYuaD4KQEAgLTEyOSw2ICsxMjksOCBA
QCBzdHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZVBvbGljeUNs
aWVudEVmbD4gcGFnZVBvbGljeUNsaWVudDsKICAgICBPd25QdHI8UGFnZVVJQ2xpZW50RWZsPiBw
YWdlVUlDbGllbnQ7CiAgICAgT3duUHRyPFJlc291cmNlTG9hZENsaWVudEVmbD4gcmVzb3VyY2VM
b2FkQ2xpZW50OworICAgIE93blB0cjxGaW5kQ2xpZW50RWZsPiBmaW5kQ2xpZW50OworICAgIE93
blB0cjxGb3JtQ2xpZW50RWZsPiBmb3JtQ2xpZW50OwogCiAgICAgV0tFaW5hU2hhcmVkU3RyaW5n
IHVybDsKICAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdGl0bGU7CkBAIC05MjMsMTggKzkyNSwxOCBA
QCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW5pdGlhbGl6ZShFdmFzX09iamVjdCogZXdrVmlldywg
UGFzc1JlZlB0cjxFd2tfQ29udGV4dD4gYwogICAgIHByaXYtPnBhZ2VDbGllbnQtPnNldFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXIocHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7CiAj
ZW5kaWYKIAotICAgIC8vIEluaXRpYWxpemUgcGFnZSBjbGllbnRzLgotICAgIFdLUGFnZVJlZiB3
a1BhZ2UgPSB0b0FQSShwcml2LT5wYWdlUHJveHkuZ2V0KCkpOwotICAgIGV3a192aWV3X2ZpbmRf
Y2xpZW50X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwotICAgIGV3a192aWV3X2Zvcm1fY2xpZW50
X2F0dGFjaCh3a1BhZ2UsIGV3a1ZpZXcpOwogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAg
ICBwcml2LT5wYWdlUHJveHktPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPnNldFdlYlZpZXcoZXdrVmll
dyk7CiAgICAgZXdrX3NldHRpbmdzX2Z1bGxzY3JlZW5fZW5hYmxlZF9zZXQocHJpdi0+c2V0dGlu
Z3MuZ2V0KCksIHRydWUpOwogI2VuZGlmCisKKyAgICAvLyBJbml0aWFsaXplIHBhZ2UgY2xpZW50
cy4KICAgICBwcml2LT5wYWdlTG9hZENsaWVudCA9IFBhZ2VMb2FkQ2xpZW50RWZsOjpjcmVhdGUo
ZXdrVmlldyk7CiAgICAgcHJpdi0+cGFnZVBvbGljeUNsaWVudCA9IFBhZ2VQb2xpY3lDbGllbnRF
Zmw6OmNyZWF0ZShld2tWaWV3KTsKICAgICBwcml2LT5wYWdlVUlDbGllbnQgPSBQYWdlVUlDbGll
bnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKICAgICBwcml2LT5yZXNvdXJjZUxvYWRDbGllbnQgPSBS
ZXNvdXJjZUxvYWRDbGllbnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKKyAgICBwcml2LT5maW5kQ2xp
ZW50ID0gRmluZENsaWVudEVmbDo6Y3JlYXRlKGV3a1ZpZXcpOworICAgIHByaXYtPmZvcm1DbGll
bnQgPSBGb3JtQ2xpZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7CiAKICAgICAvKiBMaXN0ZW4gZm9y
IGZhdmljb24gY2hhbmdlcyAqLwogICAgIEV3a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJh
c2UgPSBwcml2LT5jb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2ZpbmRfY2xpZW50LmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2ZpbmRfY2xpZW50LmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVkYzNjYi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19maW5kX2NsaWVudC5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIFNh
bXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIldLUGFnZS5oIgotI2luY2x1ZGUgImV3a192aWV3
X2ZpbmRfY2xpZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCi0K
LXN0YXRpYyBpbmxpbmUgRXZhc19PYmplY3QqIHRvRXdrVmlldyhjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKQotewotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8
dm9pZCo+KGNsaWVudEluZm8pKTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmluZFN0cmluZyhXS1Bh
Z2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIGV3a192aWV3X3RleHRfZm91bmQodG9Fd2tWaWV3KGNsaWVudEluZm8p
LCBtYXRjaENvdW50KTsKLX0KLQotc3RhdGljIHZvaWQgZGlkRmFpbFRvRmluZFN0cmluZyhXS1Bh
Z2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIGV3a192
aWV3X3RleHRfZm91bmQodG9Fd2tWaWV3KGNsaWVudEluZm8pLCAwKTsKLX0KLQotc3RhdGljIHZv
aWQgZGlkQ291bnRTdHJpbmdNYXRjaGVzKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYsIHVuc2lnbmVk
IG1hdGNoQ291bnQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgZXdrX3ZpZXdfdGV4
dF9mb3VuZCh0b0V3a1ZpZXcoY2xpZW50SW5mbyksIG1hdGNoQ291bnQpOwotfQotCi12b2lkIGV3
a192aWV3X2ZpbmRfY2xpZW50X2F0dGFjaChXS1BhZ2VSZWYgcGFnZVJlZiwgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCi17Ci0gICAgV0tQYWdlRmluZENsaWVudCBmaW5kQ2xpZW50OwotICAgIG1lbXNl
dCgmZmluZENsaWVudCwgMCwgc2l6ZW9mKFdLUGFnZUZpbmRDbGllbnQpKTsKLSAgICBmaW5kQ2xp
ZW50LnZlcnNpb24gPSBrV0tQYWdlRmluZENsaWVudEN1cnJlbnRWZXJzaW9uOwotICAgIGZpbmRD
bGllbnQuY2xpZW50SW5mbyA9IGV3a1ZpZXc7Ci0gICAgZmluZENsaWVudC5kaWRGaW5kU3RyaW5n
ID0gZGlkRmluZFN0cmluZzsKLSAgICBmaW5kQ2xpZW50LmRpZEZhaWxUb0ZpbmRTdHJpbmcgPSBk
aWRGYWlsVG9GaW5kU3RyaW5nOwotICAgIGZpbmRDbGllbnQuZGlkQ291bnRTdHJpbmdNYXRjaGVz
ID0gZGlkQ291bnRTdHJpbmdNYXRjaGVzOwotICAgIFdLUGFnZVNldFBhZ2VGaW5kQ2xpZW50KHBh
Z2VSZWYsICZmaW5kQ2xpZW50KTsKLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2ZpbmRfY2xpZW50X3ByaXZhdGUuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzE3MTQzMy4uMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19maW5kX2NsaWVudF9wcml2YXRlLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
Zm5kZWYgZXdrX3ZpZXdfZmluZF9jbGllbnRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a192aWV3X2Zp
bmRfY2xpZW50X3ByaXZhdGVfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+Ci0KLXZvaWQgZXdrX3ZpZXdfZmluZF9jbGllbnRfYXR0YWNoKFdLUGFnZVJl
ZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldyk7Ci0KLSNlbmRpZiAvLyBld2tfdmlld19m
aW5kX2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3X2Zvcm1fY2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3X2Zvcm1fY2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNzUwOWVkOS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlld19mb3JtX2NsaWVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1
MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNp
bmNsdWRlICJXS1BhZ2UuaCIKLSNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3Qu
aCIKLSNpbmNsdWRlICJld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3RfcHJpdmF0ZS5oIgotI2lu
Y2x1ZGUgImV3a192aWV3X2Zvcm1fY2xpZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfdmll
d19wcml2YXRlLmgiCi0KLXN0YXRpYyB2b2lkIHdpbGxTdWJtaXRGb3JtKFdLUGFnZVJlZiwgV0tG
cmFtZVJlZiAvKmZyYW1lKi8sIFdLRnJhbWVSZWYgLypzb3VyY2VGcmFtZSovLCBXS0RpY3Rpb25h
cnlSZWYgdmFsdWVzLCBXS1R5cGVSZWYgLyp1c2VyRGF0YSovLCBXS0Zvcm1TdWJtaXNzaW9uTGlz
dGVuZXJSZWYgbGlzdGVuZXIsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgRXZhc19P
YmplY3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9p
ZCo+KGNsaWVudEluZm8pKTsKLQotICAgIFJlZlB0cjxFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVl
c3Q+IHJlcXVlc3QgPSBFd2tfRm9ybV9TdWJtaXNzaW9uX1JlcXVlc3Q6OmNyZWF0ZSh2YWx1ZXMs
IGxpc3RlbmVyKTsKLSAgICBld2tfdmlld19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9uZXcoZXdr
VmlldywgcmVxdWVzdC5nZXQoKSk7Ci19Ci0KLXZvaWQgZXdrX3ZpZXdfZm9ybV9jbGllbnRfYXR0
YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmlldykKLXsKLSAgICBXS1Bh
Z2VGb3JtQ2xpZW50IGZvcm1DbGllbnQ7Ci0gICAgbWVtc2V0KCZmb3JtQ2xpZW50LCAwLCBzaXpl
b2YoV0tQYWdlRm9ybUNsaWVudCkpOwotICAgIGZvcm1DbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VG
b3JtQ2xpZW50Q3VycmVudFZlcnNpb247Ci0gICAgZm9ybUNsaWVudC5jbGllbnRJbmZvID0gZXdr
VmlldzsKLSAgICBmb3JtQ2xpZW50LndpbGxTdWJtaXRGb3JtID0gd2lsbFN1Ym1pdEZvcm07Ci0g
ICAgV0tQYWdlU2V0UGFnZUZvcm1DbGllbnQocGFnZVJlZiwgJmZvcm1DbGllbnQpOwotfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfZm9ybV9j
bGllbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3Zp
ZXdfZm9ybV9jbGllbnRfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ZmViNGExLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3X2Zvcm1fY2xpZW50X3ByaXZhdGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
Ci0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgZXdrX3ZpZXdfZm9ybV9jbGllbnRfcHJp
dmF0ZV9oCi0jZGVmaW5lIGV3a192aWV3X2Zvcm1fY2xpZW50X3ByaXZhdGVfaAotCi0jaW5jbHVk
ZSA8RXZhcy5oPgotI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+Ci0KLXZvaWQgZXdrX3ZpZXdf
Zm9ybV9jbGllbnRfYXR0YWNoKFdLUGFnZVJlZiBwYWdlUmVmLCBFdmFzX09iamVjdCogZXdrVmll
dyk7Ci0KLSNlbmRpZiAvLyBld2tfdmlld19mb3JtX2NsaWVudF9wcml2YXRlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczNTUwNmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL0ZpbmRDbGllbnRFZmwuY3BwCkBAIC0wLDAgKzEsNjggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmljcy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkZpbmRDbGllbnRFZmwuaCIKKworI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgImV3
a192aWV3X3ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBpbmxpbmUg
RmluZENsaWVudEVmbCogdG9GaW5kQ2xpZW50RWZsKGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZpbmRDbGllbnRFZmwqPihjb25zdF9jYXN0PHZvaWQq
PihjbGllbnRJbmZvKSk7Cit9CisKK3ZvaWQgRmluZENsaWVudEVmbDo6ZGlkRmluZFN0cmluZyhX
S1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCB1bnNpZ25lZCBtYXRjaENvdW50LCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKQoreworICAgIEZpbmRDbGllbnRFZmwqIGZpbmRDbGllbnQgPSB0b0ZpbmRDbGll
bnRFZmwoY2xpZW50SW5mbyk7CisgICAgZXdrX3ZpZXdfdGV4dF9mb3VuZChmaW5kQ2xpZW50LT5t
X3ZpZXcsIG1hdGNoQ291bnQpOworfQorCit2b2lkIEZpbmRDbGllbnRFZmw6OmRpZEZhaWxUb0Zp
bmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykK
K3sKKyAgICBGaW5kQ2xpZW50RWZsKiBmaW5kQ2xpZW50ID0gdG9GaW5kQ2xpZW50RWZsKGNsaWVu
dEluZm8pOworICAgIGV3a192aWV3X3RleHRfZm91bmQoZmluZENsaWVudC0+bV92aWV3LCAwKTsK
K30KKworRmluZENsaWVudEVmbDo6RmluZENsaWVudEVmbChFdmFzX09iamVjdCogdmlldykKKyAg
ICA6IG1fdmlldyh2aWV3KQoreworICAgIFdLUGFnZVJlZiBwYWdlUmVmID0gZXdrX3ZpZXdfd2tw
YWdlX2dldChtX3ZpZXcpOworICAgIEFTU0VSVChwYWdlUmVmKTsKKworICAgIFdLUGFnZUZpbmRD
bGllbnQgZmluZENsaWVudDsKKyAgICBtZW1zZXQoJmZpbmRDbGllbnQsIDAsIHNpemVvZihXS1Bh
Z2VGaW5kQ2xpZW50KSk7CisgICAgZmluZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUZpbmRDbGll
bnRDdXJyZW50VmVyc2lvbjsKKyAgICBmaW5kQ2xpZW50LmNsaWVudEluZm8gPSB0aGlzOworICAg
IGZpbmRDbGllbnQuZGlkRmluZFN0cmluZyA9IGRpZEZpbmRTdHJpbmc7CisgICAgZmluZENsaWVu
dC5kaWRGYWlsVG9GaW5kU3RyaW5nID0gZGlkRmFpbFRvRmluZFN0cmluZzsKKyAgICBmaW5kQ2xp
ZW50LmRpZENvdW50U3RyaW5nTWF0Y2hlcyA9IGRpZEZpbmRTdHJpbmc7CisgICAgV0tQYWdlU2V0
UGFnZUZpbmRDbGllbnQocGFnZVJlZiwgJmZpbmRDbGllbnQpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENs
aWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9GaW5kQ2xpZW50RWZsLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM3ZGFlZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRmluZENsaWVudEVmbC5oCkBAIC0w
LDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgU2Ftc3VuZyBFbGVjdHJvbmlj
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBGaW5kQ2xp
ZW50RWZsX2gKKyNkZWZpbmUgRmluZENsaWVudEVmbF9oCisKKyNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBGaW5kQ2xpZW50RWZsIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0
cjxGaW5kQ2xpZW50RWZsPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXcpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IEZpbmRDbGllbnRFZmwodmlldykpOworICAgIH0KKworcHJp
dmF0ZToKKyAgICBleHBsaWNpdCBGaW5kQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3KTsKKwor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmRTdHJpbmcoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiwgdW5z
aWduZWQgbWF0Y2hDb3VudCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZv
aWQgZGlkRmFpbFRvRmluZFN0cmluZyhXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKTsKKworICAgIEV2YXNfT2JqZWN0KiBtX3ZpZXc7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEZpbmRDbGllbnRFZmxfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNjUwNjIwYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5jcHAKQEAgLTAsMCArMSw2MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkZvcm1DbGll
bnRFZmwuaCIKKworI2luY2x1ZGUgIldLUGFnZS5oIgorI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1p
c3Npb25fcmVxdWVzdF9wcml2YXRlLmgiCisjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgor
CituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIGlubGluZSBGb3JtQ2xpZW50RWZsKiB0b0Zv
cm1DbGllbnRFZmwoY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Rm9ybUNsaWVudEVmbCo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKK30K
Kwordm9pZCBGb3JtQ2xpZW50RWZsOjp3aWxsU3VibWl0Rm9ybShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYgLypmcmFtZSovLCBXS0ZyYW1lUmVmIC8qc291cmNlRnJhbWUqLywgV0tEaWN0aW9uYXJ5UmVm
IHZhbHVlcywgV0tUeXBlUmVmIC8qdXNlckRhdGEqLywgV0tGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UmVmIGxpc3RlbmVyLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIEZvcm1DbGllbnRF
ZmwqIGZvcm1DbGllbnQgPSB0b0Zvcm1DbGllbnRFZmwoY2xpZW50SW5mbyk7CisKKyAgICBSZWZQ
dHI8RXdrX0Zvcm1fU3VibWlzc2lvbl9SZXF1ZXN0PiByZXF1ZXN0ID0gRXdrX0Zvcm1fU3VibWlz
c2lvbl9SZXF1ZXN0OjpjcmVhdGUodmFsdWVzLCBsaXN0ZW5lcik7CisgICAgZXdrX3ZpZXdfZm9y
bV9zdWJtaXNzaW9uX3JlcXVlc3RfbmV3KGZvcm1DbGllbnQtPm1fdmlldywgcmVxdWVzdC5nZXQo
KSk7Cit9CisKK0Zvcm1DbGllbnRFZmw6OkZvcm1DbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXcp
CisgICAgOiBtX3ZpZXcodmlldykKK3sKKyAgICBXS1BhZ2VSZWYgcGFnZVJlZiA9IGV3a192aWV3
X3drcGFnZV9nZXQobV92aWV3KTsKKyAgICBBU1NFUlQocGFnZVJlZik7CisKKyAgICBXS1BhZ2VG
b3JtQ2xpZW50IGZvcm1DbGllbnQ7CisgICAgbWVtc2V0KCZmb3JtQ2xpZW50LCAwLCBzaXplb2Yo
V0tQYWdlRm9ybUNsaWVudCkpOworICAgIGZvcm1DbGllbnQudmVyc2lvbiA9IGtXS1BhZ2VGb3Jt
Q2xpZW50Q3VycmVudFZlcnNpb247CisgICAgZm9ybUNsaWVudC5jbGllbnRJbmZvID0gdGhpczsK
KyAgICBmb3JtQ2xpZW50LndpbGxTdWJtaXRGb3JtID0gd2lsbFN1Ym1pdEZvcm07CisgICAgV0tQ
YWdlU2V0UGFnZUZvcm1DbGllbnQocGFnZVJlZiwgJmZvcm1DbGllbnQpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwv
Rm9ybUNsaWVudEVmbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9Gb3JtQ2xpZW50
RWZsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2UyOGExMgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvRm9ybUNsaWVudEVmbC5o
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRm9ybUNsaWVu
dEVmbF9oCisjZGVmaW5lIEZvcm1DbGllbnRFZmxfaAorCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jh
c2UuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworY2xhc3MgRm9ybUNsaWVudEVmbCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8
Rm9ybUNsaWVudEVmbD4gY3JlYXRlKEV2YXNfT2JqZWN0KiB2aWV3KQorICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBGb3JtQ2xpZW50RWZsKHZpZXcpKTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgRm9ybUNsaWVudEVmbChFdmFzX09iamVjdCogdmlldyk7CisKKyAg
ICBzdGF0aWMgdm9pZCB3aWxsU3VibWl0Rm9ybShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRnJh
bWVSZWYsIFdLRGljdGlvbmFyeVJlZiB2YWx1ZXMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgV0tGb3Jt
U3VibWlzc2lvbkxpc3RlbmVyUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIEV2
YXNfT2JqZWN0KiBtX3ZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
IC8vIEZvcm1DbGllbnRFZmxfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>