<?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>100370</bug_id>
          
          <creation_ts>2012-10-25 05:00:23 -0700</creation_ts>
          <short_desc>[EFL][WK2] Remove some C&apos;ism from EwkView</short_desc>
          <delta_ts>2012-10-25 09:55:23 -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>100273</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>mikhail.pozdnyakov</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>750690</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 05:00:23 -0700</bug_when>
    <thetext>EwkView still contains quite a bit of C&apos;ism. We should gradually get rid of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750735</commentid>
    <comment_count>1</comment_count>
      <attachid>170623</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 06:18:11 -0700</bug_when>
    <thetext>Created attachment 170623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750737</commentid>
    <comment_count>2</comment_count>
      <attachid>170623</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2012-10-25 06:21:21 -0700</bug_when>
    <thetext>Comment on attachment 170623
Patch

looks good</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750745</commentid>
    <comment_count>3</comment_count>
      <attachid>170623</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-25 06:27:56 -0700</bug_when>
    <thetext>Comment on attachment 170623
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:112
&gt; +PassOwnPtr&lt;Ecore_IMF_Context&gt; EwkViewImpl::createIMFContext(Ewk_View_Smart_Data* sd)

Why not using smartData instead of sd ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750761</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 06:52:01 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 170623 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=170623&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:112
&gt; &gt; +PassOwnPtr&lt;Ecore_IMF_Context&gt; EwkViewImpl::createIMFContext(Ewk_View_Smart_Data* sd)
&gt; 
&gt; Why not using smartData instead of sd ?

Because it conflicts with the method name smartData() in the same class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750771</commentid>
    <comment_count>5</comment_count>
      <attachid>170636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 06:59:47 -0700</bug_when>
    <thetext>Created attachment 170636
Patch

Requesting r? again because I had to move the mouse / touch callbacks to EwkViewImpl to address an API tests regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750780</commentid>
    <comment_count>6</comment_count>
      <attachid>170636</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-25 07:05:22 -0700</bug_when>
    <thetext>Comment on attachment 170636
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:225
&gt; +    data = edje_object_data_get(m_cursorObject.get(), &quot;hot.y&quot;);

This is getting quite hot :-)

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:559
&gt; +bool EwkViewImpl::focused() const

why not isFocused() that is like webkit style

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:576
&gt; +Ecore_IMF_Context* EwkViewImpl::imfContext()

i really dislike the imf abbrivation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750786</commentid>
    <comment_count>7</comment_count>
      <attachid>170636</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-10-25 07:11:31 -0700</bug_when>
    <thetext>Comment on attachment 170636
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:106
&gt; +    free(buffer);

Unrelated?

&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:588
&gt; -    _ewk_view_imf_context_destroy(imfContext);
&gt; -
&gt;      void* item;
&gt;      EINA_LIST_FREE(popupMenuItems, item)
&gt;          delete static_cast&lt;Ewk_Popup_Menu_Item*&gt;(item);
&gt; +    if (m_theme != theme) {

Do you really want to compare the memory addresses here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750799</commentid>
    <comment_count>8</comment_count>
      <attachid>170636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 07:27:15 -0700</bug_when>
    <thetext>Comment on attachment 170636
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:106
&gt;&gt; +    free(buffer);
&gt; 
&gt; Unrelated?

Hmm. Yes, this is a memory leak fix. Do you really want me to move it to a separate patch?

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:559
&gt;&gt; +bool EwkViewImpl::focused() const
&gt; 
&gt; why not isFocused() that is like webkit style

Ok.

&gt;&gt; Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp:588
&gt;&gt; +    if (m_theme != theme) {
&gt; 
&gt; Do you really want to compare the memory addresses here?

I am not :) m_theme is a WKEinaSharedString. Therefore it is safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750813</commentid>
    <comment_count>9</comment_count>
      <attachid>170636</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 07:43:06 -0700</bug_when>
    <thetext>Comment on attachment 170636
Patch

Will take feedback into consideration and reupload.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750858</commentid>
    <comment_count>10</comment_count>
      <attachid>170657</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 08:33:25 -0700</bug_when>
    <thetext>Created attachment 170657
Patch

Take feedback from Kenneth and Antonio into consideration:
- Renamed visible() / focused() to isVisible() / isFocused()
- Moved memory leak fix to another patch (Bug 100380)
- renamed &quot;imf&quot; to &quot;inputMethod&quot;
- Rebase on master since some AC fixes landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750869</commentid>
    <comment_count>11</comment_count>
      <attachid>170657</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-25 08:45:13 -0700</bug_when>
    <thetext>Comment on attachment 170657
Patch

Could someone please cq+ ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750944</commentid>
    <comment_count>12</comment_count>
      <attachid>170657</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 09:55:18 -0700</bug_when>
    <thetext>Comment on attachment 170657
Patch

Clearing flags on attachment: 170657

Committed r132498: &lt;http://trac.webkit.org/changeset/132498&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>750945</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-25 09:55:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170623</attachid>
            <date>2012-10-25 06:18:11 -0700</date>
            <delta_ts>2012-10-25 06:59:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100370_ewk_view_cism.patch</filename>
            <type>text/plain</type>
            <size>33713</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggM2YwYjg2OC4uN2JhMzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMC0yNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gUmVtb3ZlIHNvbWUgQydpc20gZnJvbSBFd2tWaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE93blB0ciB1c2VhYmxlIGZv
ciBFY29yZV9JTUZfQ29udGV4dCB0byBhdm9pZAorICAgICAgICB1c2luZyByYXcgcG9pbnRlcnMg
aW4gRUZMIHBvcnQuCisKKyAgICAgICAgKiB3dGYvT3duUHRyQ29tbW9uLmg6CisgICAgICAgIChX
VEYpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiB3dGYvZWZs
L093blB0ckVmbC5jcHA6CisgICAgICAgIChXVEY6OmRlbGV0ZU93bmVkUHRyKToKKyAgICAgICAg
KFdURik6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29t
bW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAppbmRleCA0M2EzY2I3Li5mZTI1
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVj
dCBIUkdOX18qIEhSR047CiAKICNpZiBQTEFURk9STShFRkwpCiB0eXBlZGVmIHN0cnVjdCBfRWNv
cmVfRXZhcyBFY29yZV9FdmFzOwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0lNRl9Db250ZXh0IEVj
b3JlX0lNRl9Db250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX1BpcGUgRWNvcmVfUGlwZTsK
IHR5cGVkZWYgc3RydWN0IF9FY29yZV9UaW1lciBFY29yZV9UaW1lcjsKIHR5cGVkZWYgc3RydWN0
IF9FaW5hX0hhc2ggRWluYV9IYXNoOwpAQCAtNjgsNiArNjksNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVP
d25lZFB0cihFY29yZV9FdmFzKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRl
T3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVPd25lZFB0cihFY29yZV9QaXBlKik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVsZXRlT3duZWRQdHIoRWNvcmVfVGltZXIqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWxldGVPd25lZFB0cihFaW5hX0hhc2gqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggMmQ2NjNmYS4uNzNkNTdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIx
LDYgKzIxLDcgQEAgTElTVChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7SUNVX0kxOE5fTElC
UkFSSUVTfQogICAgICR7RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9JTUZfTElCUkFSSUVTfQogICAgICR7RUlOQV9MSUJSQVJJRVN9CiAg
ICAgJHtFVkFTX0xJQlJBUklFU30KICAgICAke0NNQUtFX0RMX0xJQlN9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25Q
dHJFZmwuY3BwCmluZGV4IGM2Y2E1ZTIuLmI3NjQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVj
b3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8RXZhcy5oPgogCkBAIC02NCw0ICs2NSwxMCBAQCB2b2lkIGRlbGV0ZU93bmVkUHRy
KEVjb3JlX1RpbWVyKiBwdHIpCiAgICAgICAgIGVjb3JlX3RpbWVyX2RlbChwdHIpOwogfQogCit2
b2lkIGRlbGV0ZU93bmVkUHRyKEVjb3JlX0lNRl9Db250ZXh0KiBwdHIpCit7CisgICAgaWYgKHB0
cikKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKHB0cik7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBjZTM5YjUxLi43NDM2OGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODAgQEAKKzIwMTIt
MTAtMjUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSBzb21lIEMnaXNtIGZyb20gRXdrVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbG90IG9m
IEMnaXNtIGZyb20gRXdrVmlldzoKKyAgICAgICAgLSBNYWtlIG1vcmUgbWVtYmVycyBwcml2YXRl
IGFuZCBhZGQgQysrIG1ldGhvZHMgdG8KKyAgICAgICAgRXdrVmlld0ltcGwgZm9yIHRoZSBwdWJs
aWMgQyBBUEkgdG8gdXNlCisgICAgICAgIC0gVXNlIHNtYXJ0IHBvaW50ZXJzIHdoZW4gcG9zc2li
bGUgaW5zdGVhZCBvZiByYXcKKyAgICAgICAgb25lcworICAgICAgICAtIFVzZSBDKysgbmFtaW5n
IGNvbnZlbnRpb25zIGZvciBjYWxsYmFjayBmdW5jdGlvbnMKKyAgICAgICAgYW5kIGRlZmluZSB0
aGVtIGFzIHN0YXRpYyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uSU1G
SW5wdXRTZXF1ZW5jZUNvbXBsZXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvbklNRlByZWVk
aXRTZXF1ZW5jZUNoYW5nZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUlNRkNvbnRl
eHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldEN1cnNvcik6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6Zm9jdXNlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dmlzaWJsZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmltZkNv
bnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnRoZW1lUGF0aCk6CisgICAgICAgIChFd2tW
aWV3SW1wbDo6c2V0VGhlbWVQYXRoKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpjdXN0b21UZXh0
RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRDdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1JY29uQ2hhbmdlKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIpOgorICAgICAgICAoRXdrVmlld0lt
cGw6OmRpc21pc3NDb2xvclBpY2tlcik6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dXBkYXRlVGV4
dElucHV0U3RhdGUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmluZm9ybVVSTENoYW5nZSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmV3a0NvbnRleHQpOgorICAgICAgICAoRXdrVmll
d0ltcGw6OnNldHRpbmdzKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjp1cmwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmZhdmljb25VUkwpOgorICAgICAg
ICAoRXdrVmlld0ltcGw6Om1vdXNlRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6c2V0TW91c2VFdmVudHNFbmFibGVkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp0b3VjaEV2
ZW50c0VuYWJsZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxl
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjppc1ZpZXdWaXNpYmxlKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsOjpoYW5kbGVEb3dubG9hZFJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19zZXR0aW5nc19wcml2YXRlLmg6CisgICAgICAgIChFd2tfU2V0dGluZ3M6
OmNyZWF0ZSk6CisgICAgICAgIChFd2tfU2V0dGluZ3M6OkV3a19TZXR0aW5ncyk6CisgICAgICAg
IChFd2tfU2V0dGluZ3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNw
cDoKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV91cCk6CisgICAgICAgIChfZXdrX3Zp
ZXdfc21hcnRfa2V5X2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2FkZCk6CisgICAg
ICAgIChld2tfdmlld19jb250ZXh0X2dldCk6CisgICAgICAgIChld2tfdmlld191cmxfZ2V0KToK
KyAgICAgICAgKGV3a192aWV3X2ljb25fdXJsX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0
aW5nc19nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdGl0bGVfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3RoZW1lX3NldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9nZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfc2V0dGluZ19lbmNvZGluZ19jdXN0b21fZ2V0KToKKyAgICAgICAgKGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldCk6CisgICAgICAgIChld2tfdmlld19tb3VzZV9l
dmVudHNfZW5hYmxlZF9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJs
ZWRfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQpOgorICAg
ICAgICAoZXdrX3ZpZXdfdG91Y2hfZXZlbnRzX2VuYWJsZWRfc2V0KToKKyAgICAgICAgKGV3a192
aWV3X3RvdWNoX2V2ZW50c19lbmFibGVkX2dldCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9X
ZWJJbnNwZWN0b3JQcm94eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclBy
b3h5OjpwbGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorCiAyMDEyLTEwLTI1ICBTdWRhcnNh
bmEgTmFnaW5lbmkgIDxzdWRhcnNhbmEubmFnaW5lbmlAaW50ZWwuY29tPgogCiAgICAgICAgIFtF
RkxdW0FDXSBGaXggYnVpbGQgYnJlYWsgd2hlbiBBQyBpcyBlbmFibGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKaW5kZXggOTI1ZjJmMi4u
MDNlZmNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdr
Vmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1Zp
ZXdJbXBsLmNwcApAQCAtMzEsNiArMzEsOCBAQAogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgiCisjaW5jbHVkZSAiV0tDb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyLmgiCisjaW5jbHVkZSAiV0tTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eUVmbC5oIgogI2luY2x1ZGUg
ImV3a19iYWNrX2ZvcndhcmRfbGlzdF9wcml2YXRlLmgiCkBAIC03NywyMiArNzksMjIgQEAgY29u
c3QgRXZhc19PYmplY3QqIEV3a1ZpZXdJbXBsOjp2aWV3RnJvbVBhZ2VWaWV3TWFwKGNvbnN0IFdL
UGFnZVJlZiBwYWdlKQogICAgIHJldHVybiBwYWdlVmlld01hcC5nZXQocGFnZSk7CiB9CiAKLXN0
YXRpYyB2b2lkIF9ld2tfdmlld19jb21taXQodm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQq
LCB2b2lkKiBldmVudEluZm8pCit2b2lkIEV3a1ZpZXdJbXBsOjpvbklNRklucHV0U2VxdWVuY2VD
b21wbGV0ZSh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbykK
IHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tf
Vmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgdmlld0ltcGwpOwotICAgIGlmICghZXZlbnRJbmZvIHx8ICF2aWV3SW1wbC0+
aXNJbWZGb2N1c2VkKQorICAgIGlmICghZXZlbnRJbmZvIHx8ICF2aWV3SW1wbC0+bV9pc0ltZkZv
Y3VzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPmNvbmZp
cm1Db21wb3NpdGlvbihTdHJpbmc6OmZyb21VVEY4KHN0YXRpY19jYXN0PGNoYXIqPihldmVudElu
Zm8pKSk7CiB9CiAKLXN0YXRpYyB2b2lkIF9ld2tfdmlld19wcmVlZGl0X2NoYW5nZWQodm9pZCog
ZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQqIGNvbnRleHQsIHZvaWQqKQordm9pZCBFd2tWaWV3SW1w
bDo6b25JTUZQcmVlZGl0U2VxdWVuY2VDaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250
ZXh0KiBjb250ZXh0LCB2b2lkKikKIHsKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERh
dGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CiAgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgdmlld0ltcGwpOwogCi0gICAgaWYgKCF2
aWV3SW1wbC0+cGFnZVByb3h5LT5mb2N1c2VkRnJhbWUoKSB8fCAhdmlld0ltcGwtPmlzSW1mRm9j
dXNlZCkKKyAgICBpZiAoIXZpZXdJbXBsLT5wYWdlUHJveHktPmZvY3VzZWRGcmFtZSgpIHx8ICF2
aWV3SW1wbC0+bV9pc0ltZkZvY3VzZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGNoYXIqIGJ1
ZmZlciA9IDA7CkBAIC0xMDEsNzYgKzEwMyw1NCBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfcHJl
ZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0KiBjb250ZXh0LCB2bwog
ICAgICAgICByZXR1cm47CiAKICAgICBTdHJpbmcgcHJlZWRpdFN0cmluZyA9IFN0cmluZzo6ZnJv
bVVURjgoYnVmZmVyKTsKKyAgICBmcmVlKGJ1ZmZlcik7CiAgICAgVmVjdG9yPENvbXBvc2l0aW9u
VW5kZXJsaW5lPiB1bmRlcmxpbmVzOwogICAgIHVuZGVybGluZXMuYXBwZW5kKENvbXBvc2l0aW9u
VW5kZXJsaW5lKDAsIHByZWVkaXRTdHJpbmcubGVuZ3RoKCksIENvbG9yKDAsIDAsIDApLCBmYWxz
ZSkpOwogICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnNldENvbXBvc2l0aW9uKHByZWVkaXRTdHJp
bmcsIHVuZGVybGluZXMsIDApOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW1mX2NvbnRl
eHRfZGVzdHJveShFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dCkKLXsKLSAgICBpZiAoIWlt
ZkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50
X2NhbGxiYWNrX2RlbChpbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfUFJFRURJVF9DSEFO
R0VELCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkKTsKLSAgICBlY29yZV9pbWZfY29udGV4dF9l
dmVudF9jYWxsYmFja19kZWwoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0NBTExCQUNLX0NPTU1JVCwg
X2V3a192aWV3X2NvbW1pdCk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKGltZkNvbnRleHQp
OwotfQotCi1zdGF0aWMgRWNvcmVfSU1GX0NvbnRleHQqIF9ld2tfdmlld19pbWZfY29udGV4dF9j
cmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQorUGFzc093blB0cjxFY29yZV9J
TUZfQ29udGV4dD4gRXdrVmlld0ltcGw6OmNyZWF0ZUlNRkNvbnRleHQoRXdrX1ZpZXdfU21hcnRf
RGF0YSogc2QpCiB7CiAgICAgY29uc3QgY2hhciogZGVmYXVsdENvbnRleHRJRCA9IGVjb3JlX2lt
Zl9jb250ZXh0X2RlZmF1bHRfaWRfZ2V0KCk7CiAgICAgaWYgKCFkZWZhdWx0Q29udGV4dElEKQot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBFY29yZV9J
TUZfQ29udGV4dCogaW1mQ29udGV4dCA9IGVjb3JlX2ltZl9jb250ZXh0X2FkZChkZWZhdWx0Q29u
dGV4dElEKTsKKyAgICBPd25QdHI8RWNvcmVfSU1GX0NvbnRleHQ+IGltZkNvbnRleHQgPSBhZG9w
dFB0cihlY29yZV9pbWZfY29udGV4dF9hZGQoZGVmYXVsdENvbnRleHRJRCkpOwogICAgIGlmICgh
aW1mQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRkKGltZkNvbnRleHQsIEVD
T1JFX0lNRl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIF9ld2tfdmlld19wcmVlZGl0X2NoYW5n
ZWQsIHNtYXJ0RGF0YSk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRk
KGltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19DT01NSVQsIF9ld2tfdmlld19jb21taXQs
IHNtYXJ0RGF0YSk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRkKGlt
ZkNvbnRleHQuZ2V0KCksIEVDT1JFX0lNRl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIG9uSU1G
UHJlZWRpdFNlcXVlbmNlQ2hhbmdlZCwgc2QpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2ZW50
X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LmdldCgpLCBFQ09SRV9JTUZfQ0FMTEJBQ0tfQ09NTUlU
LCBvbklNRklucHV0U2VxdWVuY2VDb21wbGV0ZSwgc2QpOwogCi0gICAgRWNvcmVfRXZhcyogZWNv
cmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzbWFydERhdGEtPmJhc2UuZXZhcyk7
Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfY2xpZW50X3dpbmRvd19zZXQoaW1mQ29udGV4dCwgKHZv
aWQqKWVjb3JlX2V2YXNfd2luZG93X2dldChlY29yZUV2YXMpKTsKLSAgICBlY29yZV9pbWZfY29u
dGV4dF9jbGllbnRfY2FudmFzX3NldChpbWZDb250ZXh0LCBzbWFydERhdGEtPmJhc2UuZXZhcyk7
CisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChz
ZC0+YmFzZS5ldmFzKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGllbnRfd2luZG93X3NldChp
bWZDb250ZXh0LmdldCgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihlY29yZV9ldmFzX3dpbmRv
d19nZXQoZWNvcmVFdmFzKSkpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2NsaWVudF9jYW52YXNf
c2V0KGltZkNvbnRleHQuZ2V0KCksIHNkLT5iYXNlLmV2YXMpOwogCi0gICAgcmV0dXJuIGltZkNv
bnRleHQ7CisgICAgcmV0dXJuIGltZkNvbnRleHQucmVsZWFzZSgpOwogfQogCiBFd2tWaWV3SW1w
bDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBzZXR0aW5ncyhhZG9wdFB0
cihuZXcgRXdrX1NldHRpbmdzKHRoaXMpKSkKLSAgICAsIGFyZU1vdXNlRXZlbnRzRW5hYmxlZChm
YWxzZSkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgYXJlVG91Y2hFdmVudHNFbmFi
bGVkKGZhbHNlKQotI2VuZGlmCi0gICAgLCBwb3B1cE1lbnVQcm94eSgwKQorICAgIDogcG9wdXBN
ZW51UHJveHkoMCkKICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCi0gICAgLCBpbWZDb250ZXh0KDAp
Ci0gICAgLCBpc0ltZkZvY3VzZWQoZmFsc2UpCi0jaWZkZWYgSEFWRV9FQ09SRV9YCi0gICAgLCBp
c1VzaW5nRWNvcmVYKGZhbHNlKQotI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQogICAgICwgZXZhc0dsKDApCiAgICAgLCBldmFzR2xDb250ZXh0KDApCiAgICAgLCBldmFz
R2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fdmlldyh2aWV3KQorICAgICwgbV9zZXR0aW5n
cyhFd2tfU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1faW1mQ29udGV4dChjcmVhdGVJ
TUZDb250ZXh0KHNtYXJ0RGF0YSgpKSkKKyAgICAsIG1faXNJbWZGb2N1c2VkKGZhbHNlKQorICAg
ICwgbV9tb3VzZUV2ZW50c0VuYWJsZWQoZmFsc2UpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
KyAgICAsIG1fdG91Y2hFdmVudHNFbmFibGVkKGZhbHNlKQorI2VuZGlmCiB7CiAgICAgQVNTRVJU
KHZpZXcpOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7Ci0gICAg
QVNTRVJUKHNkKTsKLQotICAgIGltZkNvbnRleHQgPSBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3Jl
YXRlKHNkKTsKLQotI2lmZGVmIEhBVkVfRUNPUkVfWAotICAgIGlzVXNpbmdFY29yZVggPSBXZWJD
b3JlOjppc1VzaW5nRWNvcmVYKHNkLT5iYXNlLmV2YXMpOwotI2VuZGlmCiB9CiAKIEV3a1ZpZXdJ
bXBsOjp+RXdrVmlld0ltcGwoKQogewotICAgIF9ld2tfdmlld19pbWZfY29udGV4dF9kZXN0cm95
KGltZkNvbnRleHQpOwotCiAgICAgdm9pZCogaXRlbTsKICAgICBFSU5BX0xJU1RfRlJFRShwb3B1
cE1lbnVJdGVtcywgaXRlbSkKICAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEV3a19Qb3B1cF9N
ZW51X0l0ZW0qPihpdGVtKTsKQEAgLTIwNCw0NiArMTg0LDQ2IEBAIHZvaWQgRXdrVmlld0ltcGw6
OnNldEN1cnNvcihjb25zdCBDdXJzb3ImIGN1cnNvcikKICAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IHNtYXJ0RGF0YSgpOwogCiAgICAgY29uc3QgY2hhciogZ3JvdXAgPSBjdXJzb3IucGxh
dGZvcm1DdXJzb3IoKTsKLSAgICBpZiAoIWdyb3VwIHx8IGdyb3VwID09IGN1cnNvckdyb3VwKQor
ICAgIGlmICghZ3JvdXAgfHwgZ3JvdXAgPT0gbV9jdXJzb3JHcm91cCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgY3Vyc29yR3JvdXAgPSBncm91cDsKLSAgICBjdXJzb3JPYmplY3QgPSBhZG9wdFJl
ZihlZGplX29iamVjdF9hZGQoc2QtPmJhc2UuZXZhcykpOworICAgIG1fY3Vyc29yR3JvdXAgPSBn
cm91cDsKKyAgICBtX2N1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2JqZWN0X2FkZChzZC0+
YmFzZS5ldmFzKSk7CiAKICAgICBFY29yZV9FdmFzKiBlY29yZUV2YXMgPSBlY29yZV9ldmFzX2Vj
b3JlX2V2YXNfZ2V0KHNkLT5iYXNlLmV2YXMpOwotICAgIGlmICghdGhlbWUgfHwgIWVkamVfb2Jq
ZWN0X2ZpbGVfc2V0KGN1cnNvck9iamVjdC5nZXQoKSwgdGhlbWUsIGdyb3VwKSkgewotICAgICAg
ICBjdXJzb3JPYmplY3QuY2xlYXIoKTsKKyAgICBpZiAoIW1fdGhlbWUgfHwgIWVkamVfb2JqZWN0
X2ZpbGVfc2V0KG1fY3Vyc29yT2JqZWN0LmdldCgpLCBtX3RoZW1lLCBncm91cCkpIHsKKyAgICAg
ICAgbV9jdXJzb3JPYmplY3QuY2xlYXIoKTsKIAogICAgICAgICBlY29yZV9ldmFzX29iamVjdF9j
dXJzb3Jfc2V0KGVjb3JlRXZhcywgMCwgMCwgMCwgMCk7CiAjaWZkZWYgSEFWRV9FQ09SRV9YCi0g
ICAgICAgIGlmIChpc1VzaW5nRWNvcmVYKQorICAgICAgICBpZiAoV2ViQ29yZTo6aXNVc2luZ0Vj
b3JlWChzZC0+YmFzZS5ldmFzKSkKICAgICAgICAgICAgIFdlYkNvcmU6OmFwcGx5RmFsbGJhY2tD
dXJzb3IoZWNvcmVFdmFzLCBncm91cCk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIEV2YXNfQ29vcmQgd2lkdGgsIGhlaWdodDsKLSAgICBlZGplX29iamVjdF9zaXplX21p
bl9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAmd2lkdGgsICZoZWlnaHQpOworICAgIGVkamVfb2Jq
ZWN0X3NpemVfbWluX2dldChtX2N1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAmaGVpZ2h0KTsK
ICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkKLSAgICAgICAgZWRqZV9vYmplY3Rf
c2l6ZV9taW5fY2FsYyhjdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAg
ICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2NhbGMobV9jdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0
aCwgJmhlaWdodCk7CiAgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHsKICAgICAg
ICAgd2lkdGggPSBkZWZhdWx0Q3Vyc29yU2l6ZTsKICAgICAgICAgaGVpZ2h0ID0gZGVmYXVsdEN1
cnNvclNpemU7CiAgICAgfQotICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShjdXJzb3JPYmplY3QuZ2V0
KCksIHdpZHRoLCBoZWlnaHQpOworICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZShtX2N1cnNvck9iamVj
dC5nZXQoKSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBjb25zdCBjaGFyKiBkYXRhOwogICAgIGlu
dCBob3RzcG90WCA9IDA7Ci0gICAgZGF0YSA9IGVkamVfb2JqZWN0X2RhdGFfZ2V0KGN1cnNvck9i
amVjdC5nZXQoKSwgImhvdC54Iik7CisgICAgZGF0YSA9IGVkamVfb2JqZWN0X2RhdGFfZ2V0KG1f
Y3Vyc29yT2JqZWN0LmdldCgpLCAiaG90LngiKTsKICAgICBpZiAoZGF0YSkKICAgICAgICAgaG90
c3BvdFggPSBhdG9pKGRhdGEpOwogCiAgICAgaW50IGhvdHNwb3RZID0gMDsKLSAgICBkYXRhID0g
ZWRqZV9vYmplY3RfZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgpLCAiaG90LnkiKTsKKyAgICBk
YXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQobV9jdXJzb3JPYmplY3QuZ2V0KCksICJob3QueSIp
OwogICAgIGlmIChkYXRhKQogICAgICAgICBob3RzcG90WSA9IGF0b2koZGF0YSk7CiAKLSAgICBl
Y29yZV9ldmFzX29iamVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgY3Vyc29yT2JqZWN0LmdldCgp
LCBFVkFTX0xBWUVSX01BWCwgaG90c3BvdFgsIGhvdHNwb3RZKTsKKyAgICBlY29yZV9ldmFzX29i
amVjdF9jdXJzb3Jfc2V0KGVjb3JlRXZhcywgbV9jdXJzb3JPYmplY3QuZ2V0KCksIEVWQVNfTEFZ
RVJfTUFYLCBob3RzcG90WCwgaG90c3BvdFkpOwogfQogCiB2b2lkIEV3a1ZpZXdJbXBsOjpyZWRy
YXdSZWdpb24oY29uc3QgSW50UmVjdCYgcmVjdCkKQEAgLTM2MCw2ICszNDAsMjAgQEAgdm9pZCBF
d2tWaWV3SW1wbDo6c2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKICAgICBldmFzX29iamVjdF9pbWFnZV9kYXRhX2NvcHlfc2V0KHNkLT5pbWFnZSwgaW1h
Z2VEYXRhKTsKIH0KIAorI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQorYm9vbCBFd2tWaWV3
SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYgY29sb3IpCit7
CisgICAgaWYgKCFtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjb2xvclN0cmluZyhBZG9wdFdL
LCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5zZXJpYWxpemVkKCkudXRmOCgp
LmRhdGEoKSkpOworICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNldENvbG9yKG1fY29s
b3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5nZXQoKSwgY29sb3JTdHJpbmcuZ2V0KCkpOworICAgIG1f
Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOworCisgICAgcmV0dXJuIHRydWU7Cit9
CisjZW5kaWYKKwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIGluZm9ybXMgbG9hZCBmYWlsZWQgd2l0
aCBlcnJvciBpbmZvcm1hdGlvbi4KQEAgLTU1OSw2ICs1NTMsNTggQEAgSW50U2l6ZSBFd2tWaWV3
SW1wbDo6c2l6ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9
CiAKK2Jvb2wgRXdrVmlld0ltcGw6OmZvY3VzZWQoKSBjb25zdAoreworICAgIHJldHVybiBldmFz
X29iamVjdF9mb2N1c19nZXQobV92aWV3KTsKK30KKworYm9vbCBFd2tWaWV3SW1wbDo6dmlzaWJs
ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KG1fdmlldyk7
Cit9CisKK2NvbnN0IGNoYXIqIEV3a1ZpZXdJbXBsOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgbV90
aXRsZSA9IHBhZ2VQcm94eS0+cGFnZVRpdGxlKCkudXRmOCgpLmRhdGEoKTsKKworICAgIHJldHVy
biBtX3RpdGxlOworfQorCitFY29yZV9JTUZfQ29udGV4dCogRXdrVmlld0ltcGw6OmltZkNvbnRl
eHQoKQoreworICAgIHJldHVybiBtX2ltZkNvbnRleHQuZ2V0KCk7Cit9CisKK2NvbnN0IGNoYXIq
IEV3a1ZpZXdJbXBsOjp0aGVtZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3RoZW1lOwor
fQorCit2b2lkIEV3a1ZpZXdJbXBsOjpzZXRUaGVtZVBhdGgoY29uc3QgY2hhciogdGhlbWUpCit7
CisgICAgaWYgKG1fdGhlbWUgIT0gdGhlbWUpIHsKKyAgICAgICAgbV90aGVtZSA9IHRoZW1lOwor
ICAgICAgICBwYWdlUHJveHktPnNldFRoZW1lUGF0aCh0aGVtZSk7CisgICAgfQorfQorCitjb25z
dCBjaGFyKiBFd2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0Cit7Cisg
ICAgU3RyaW5nIGN1c3RvbUVuY29kaW5nID0gcGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdO
YW1lKCk7CisgICAgaWYgKGN1c3RvbUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBtX2N1c3RvbUVuY29kaW5nID0gY3VzdG9tRW5jb2RpbmcudXRmOCgpLmRhdGEo
KTsKKworICAgIHJldHVybiBtX2N1c3RvbUVuY29kaW5nOworfQorCit2b2lkIEV3a1ZpZXdJbXBs
OjpzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNoYXIqIGVuY29kaW5nKQoreworICAg
IG1fY3VzdG9tRW5jb2RpbmcgPSBlbmNvZGluZzsKKyAgICBwYWdlUHJveHktPnNldEN1c3RvbVRl
eHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmluZygpKTsKK30KKwogLyoq
CiAgKiBAaW50ZXJuYWwKICAqIFVwZGF0ZSB0aGUgdmlldydzIGZhdmljb24gYW5kIGVtaXRzIGEg
Imljb24sY2hhbmdlZCIgc2lnbmFsIGlmIGl0IGhhcwpAQCAtNTcyLDcgKzYxOCw3IEBAIHZvaWQg
RXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQogICAgIEV3a19GYXZpY29uX0RhdGFiYXNl
KiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJhc2UoKTsKICAgICBBU1NFUlQo
aWNvbkRhdGFiYXNlKTsKIAotICAgIGZhdmljb25VUkwgPSBld2tfZmF2aWNvbl9kYXRhYmFzZV9p
Y29uX3VybF9nZXQoaWNvbkRhdGFiYXNlLCB1cmwpOworICAgIG1fZmF2aWNvblVSTCA9IGV3a19m
YXZpY29uX2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJhc2UsIG1fdXJsKTsKICAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywgImljb24sY2hhbmdlZCIsIDAp
OwogfQogCkBAIC02OTAsNyArNzM2LDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6cmVxdWVzdENvbG9y
UGlja2VyKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0NvbG9yUGlja2VyUmUKICAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwogICAgIEVJTkFfU0FGRVRZX09O
X05VTExfUkVUVVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KTsKIAotICAg
IGNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICBtX2NvbG9yUGlja2Vy
UmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsKIAogICAgIHNkLT5hcGktPmlucHV0X3BpY2tlcl9j
b2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKIH0KQEAgLTcwNCw3ICs3NTAsNyBAQCB2b2lk
IEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIoKQogICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2Qt
PmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOwogCi0gICAgY29sb3JQaWNrZXJSZXN1
bHRMaXN0ZW5lci5jbGVhcigpOworICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVh
cigpOwogCiAgICAgc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3Moc2QpOwogfQpA
QCAtODQ1LDI4ICs4OTEsMjggQEAgdW5zaWduZWQgbG9uZyBsb25nIEV3a1ZpZXdJbXBsOjppbmZv
cm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25zdCBTdHJpbmcmIGRhdGFiYXMKICAqLwogdm9pZCBF
d2tWaWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUoKQogewotICAgIGlmICghaW1mQ29udGV4
dCkKKyAgICBpZiAoIW1faW1mQ29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgY29uc3Qg
RWRpdG9yU3RhdGUmIGVkaXRvciA9IHBhZ2VQcm94eS0+ZWRpdG9yU3RhdGUoKTsKIAogICAgIGlm
IChlZGl0b3IuaXNDb250ZW50RWRpdGFibGUpIHsKLSAgICAgICAgaWYgKGlzSW1mRm9jdXNlZCkK
KyAgICAgICAgaWYgKG1faXNJbWZGb2N1c2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KGltZkNvbnRleHQpOwotICAgICAgICBlY29yZV9p
bWZfY29udGV4dF9mb2N1c19pbihpbWZDb250ZXh0KTsKLSAgICAgICAgaXNJbWZGb2N1c2VkID0g
dHJ1ZTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQobV9pbWZDb250ZXh0LmdldCgp
KTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9jdXNfaW4obV9pbWZDb250ZXh0LmdldCgp
KTsKKyAgICAgICAgbV9pc0ltZkZvY3VzZWQgPSB0cnVlOwogICAgIH0gZWxzZSB7Ci0gICAgICAg
IGlmICghaXNJbWZGb2N1c2VkKQorICAgICAgICBpZiAoIW1faXNJbWZGb2N1c2VkKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlZGl0b3IuaGFzQ29tcG9zaXRpb24pCiAgICAg
ICAgICAgICBwYWdlUHJveHktPmNhbmNlbENvbXBvc2l0aW9uKCk7CiAKLSAgICAgICAgaXNJbWZG
b2N1c2VkID0gZmFsc2U7Ci0gICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KGltZkNvbnRl
eHQpOwotICAgICAgICBlY29yZV9pbWZfY29udGV4dF9mb2N1c19vdXQoaW1mQ29udGV4dCk7Cisg
ICAgICAgIG1faXNJbWZGb2N1c2VkID0gZmFsc2U7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0
X3Jlc2V0KG1faW1mQ29udGV4dC5nZXQoKSk7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2Zv
Y3VzX291dChtX2ltZkNvbnRleHQuZ2V0KCkpOwogICAgIH0KIH0KIApAQCAtODgzLDExICs5Mjks
MTEgQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtVVJMQ2hhbmdlKCkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgQ1N0cmluZyByYXdBY3RpdmVVUkwgPSBhY3RpdmVVUkwudXRmOCgpOwotICAgIGlm
ICh1cmwgPT0gcmF3QWN0aXZlVVJMLmRhdGEoKSkKKyAgICBpZiAobV91cmwgPT0gcmF3QWN0aXZl
VVJMLmRhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXJsID0gcmF3QWN0aXZlVVJMLmRh
dGEoKTsKLSAgICBjb25zdCBjaGFyKiBjYWxsYmFja0FyZ3VtZW50ID0gc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KHVybCk7CisgICAgbV91cmwgPSByYXdBY3RpdmVVUkwuZGF0YSgpOworICAgIGNv
bnN0IGNoYXIqIGNhbGxiYWNrQXJndW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV91
cmwpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAidXJsLGNo
YW5nZWQiLCBjb25zdF9jYXN0PGNoYXIqPihjYWxsYmFja0FyZ3VtZW50KSk7CiAKICAgICAvLyBV
cGRhdGUgdGhlIHZpZXcncyBmYXZpY29uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5kZXggZWY2MzIwNy4uMDE2YzAwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC03MSw2ICs3MSw3
IEBAIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZsOwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRT
aXplOwpAQCAtMTAxLDEzICsxMDIsMzggQEAgcHVibGljOgogICAgIGlubGluZSBFdmFzX09iamVj
dCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQogICAgIFdLUGFnZVJlZiB3a1BhZ2UoKTsKICAg
ICBpbmxpbmUgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHBhZ2UoKSB7IHJldHVybiBwYWdlUHJveHku
Z2V0KCk7IH0KKyAgICBFd2tfQ29udGV4dCogZXdrQ29udGV4dCgpIHsgcmV0dXJuIGNvbnRleHQu
Z2V0KCk7IH0KKyAgICBFd2tfU2V0dGluZ3MqIHNldHRpbmdzKCkgeyByZXR1cm4gbV9zZXR0aW5n
cy5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9v
bCBmb2N1c2VkKCkgY29uc3Q7CisgICAgYm9vbCB2aXNpYmxlKCkgY29uc3Q7CisKKyAgICBjb25z
dCBjaGFyKiB1cmwoKSBjb25zdCB7IHJldHVybiBtX3VybDsgfQorICAgIGNvbnN0IGNoYXIqIGZh
dmljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX2Zhdmljb25VUkw7IH0KKyAgICBjb25zdCBjaGFy
KiB0aXRsZSgpIGNvbnN0OworICAgIEVjb3JlX0lNRl9Db250ZXh0KiBpbWZDb250ZXh0KCk7CisK
KyAgICBjb25zdCBjaGFyKiB0aGVtZVBhdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFRoZW1lUGF0
aChjb25zdCBjaGFyKiB0aGVtZSk7CisgICAgY29uc3QgY2hhciogY3VzdG9tVGV4dEVuY29kaW5n
TmFtZSgpIGNvbnN0OworICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBj
aGFyKiBlbmNvZGluZyk7CisKKyAgICBib29sIG1vdXNlRXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW91c2VFdmVudHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRNb3VzZUV2ZW50c0Vu
YWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fbW91c2VFdmVudHNFbmFibGVkID0gZW5hYmxlZDsgfQor
I2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCB0b3VjaEV2ZW50c0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRzRW5hYmxlZDsgfQorICAgIHZvaWQgc2V0VG91Y2hF
dmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3RvdWNoRXZlbnRzRW5hYmxlZCA9IGVuYWJs
ZWQ7IH0KKyNlbmRpZgogCiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29y
JiBjdXJzb3IpOwogICAgIHZvaWQgcmVkcmF3UmVnaW9uKGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHJlY3QpOwogICAgIHZvaWQgc2V0SW1hZ2VEYXRhKHZvaWQqIGltYWdlRGF0YSwgY29uc3QgV2Vi
Q29yZTo6SW50U2l6ZSYgc2l6ZSk7CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAg
ICBib29sIHNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKTsK
KyNlbmRpZgorCiAgICAgc3RhdGljIHZvaWQgYWRkVG9QYWdlVmlld01hcChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldyk7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlRnJvbVBhZ2VWaWV3TWFwKGNv
bnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICAgICBzdGF0aWMgY29uc3QgRXZhc19PYmplY3Qq
IHZpZXdGcm9tUGFnZVZpZXdNYXAoY29uc3QgV0tQYWdlUmVmKTsKQEAgLTE5NCwzMiArMjIwLDEy
IEBAIHB1YmxpYzoKICAgICBPd25QdHI8V2ViS2l0OjpGaW5kQ2xpZW50RWZsPiBmaW5kQ2xpZW50
OwogICAgIE93blB0cjxXZWJLaXQ6OkZvcm1DbGllbnRFZmw+IGZvcm1DbGllbnQ7CiAKLSAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgdXJsOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyB0aXRsZTsKLSAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgdGhlbWU7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIGN1c3Rv
bUVuY29kaW5nOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyBjdXJzb3JHcm91cDsKLSAgICBXS0Vp
bmFTaGFyZWRTdHJpbmcgZmF2aWNvblVSTDsKLSAgICBSZWZQdHI8RXZhc19PYmplY3Q+IGN1cnNv
ck9iamVjdDsKICAgICBPd25QdHI8RXdrX0JhY2tfRm9yd2FyZF9MaXN0PiBiYWNrRm9yd2FyZExp
c3Q7Ci0gICAgT3duUHRyPEV3a19TZXR0aW5ncz4gc2V0dGluZ3M7Ci0gICAgYm9vbCBhcmVNb3Vz
ZUV2ZW50c0VuYWJsZWQ7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb2xvclBpY2tlclJlc3VsdExpc3Rl
bmVyUmVmPiBjb2xvclBpY2tlclJlc3VsdExpc3RlbmVyOwogICAgIFJlZlB0cjxFd2tfQ29udGV4
dD4gY29udGV4dDsKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGJvb2wgYXJlVG91Y2hF
dmVudHNFbmFibGVkOwotI2VuZGlmCiAKICAgICBXZWJLaXQ6OldlYlBvcHVwTWVudVByb3h5RWZs
KiBwb3B1cE1lbnVQcm94eTsKICAgICBFaW5hX0xpc3QqIHBvcHVwTWVudUl0ZW1zOwogCi0gICAg
RWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQ7Ci0gICAgYm9vbCBpc0ltZkZvY3VzZWQ7Ci0K
LSNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICBib29sIGlzVXNpbmdFY29yZVg7Ci0jZW5kaWYKLQog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBFdmFzX0dMKiBldmFzR2w7CiAg
ICAgRXZhc19HTF9Db250ZXh0KiBldmFzR2xDb250ZXh0OwpAQCAtMjI3LDkgKzIzMywyOSBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFy
dERhdGEoKTsKKyAgICBpbmxpbmUgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKCk7CisK
KyAgICBzdGF0aWMgUGFzc093blB0cjxFY29yZV9JTUZfQ29udGV4dD4gY3JlYXRlSU1GQ29udGV4
dChFd2tfVmlld19TbWFydF9EYXRhKik7CisgICAgc3RhdGljIHZvaWQgb25JTUZJbnB1dFNlcXVl
bmNlQ29tcGxldGUodm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQqLCB2b2lkKiBldmVudElu
Zm8pOworICAgIHN0YXRpYyB2b2lkIG9uSU1GUHJlZWRpdFNlcXVlbmNlQ2hhbmdlZCh2b2lkKiBk
YXRhLCBFY29yZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbyk7CiAKICAgICBFdmFzX09i
amVjdCogbV92aWV3OworICAgIE93blB0cjxFd2tfU2V0dGluZ3M+IG1fc2V0dGluZ3M7CisgICAg
T3duUHRyPEVjb3JlX0lNRl9Db250ZXh0PiBtX2ltZkNvbnRleHQ7CisgICAgYm9vbCBtX2lzSW1m
Rm9jdXNlZDsKKyAgICBSZWZQdHI8RXZhc19PYmplY3Q+IG1fY3Vyc29yT2JqZWN0OworICAgIFdL
RWluYVNoYXJlZFN0cmluZyBtX2N1cnNvckdyb3VwOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBt
X2Zhdmljb25VUkw7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdXJsOworICAgIG11dGFibGUg
V0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGhl
bWU7CisgICAgbXV0YWJsZSBXS0VpbmFTaGFyZWRTdHJpbmcgbV9jdXN0b21FbmNvZGluZzsKKyAg
ICBib29sIG1fbW91c2VFdmVudHNFbmFibGVkOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5hYmxlZDsKKyNlbmRpZgorICAgIFdLUmV0YWluUHRyPFdL
Q29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJlZj4gbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
OworCiAgICAgdHlwZWRlZiBIYXNoTWFwPFdLUGFnZVJlZiwgY29uc3QgRXZhc19PYmplY3QqPiBQ
YWdlVmlld01hcDsKICAgICBzdGF0aWMgUGFnZVZpZXdNYXAgcGFnZVZpZXdNYXA7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
CmluZGV4IDUzN2Y0ZTAuLjNhMzFjZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTk4LDEyICs5OCwxMiBAQCBib29s
IFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogCiBib29sIFBhZ2VDbGllbnRJ
bXBsOjppc1ZpZXdGb2N1c2VkKCkKIHsKLSAgICByZXR1cm4gZXZhc19vYmplY3RfZm9jdXNfZ2V0
KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgcmV0dXJuIG1fdmlld0ltcGwtPmZvY3VzZWQoKTsK
IH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgcmV0dXJu
IGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgcmV0dXJu
IG1fdmlld0ltcGwtPnZpc2libGUoKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3
SW5XaW5kb3coKQpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nl
c3NEaWRDcmFzaCgpCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2Vzcygp
CiB7Ci0gICAgY29uc3QgY2hhciogdGhlbWVQYXRoID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KG1fdmll
d0ltcGwtPnZpZXcoKSk7CisgICAgY29uc3QgY2hhciogdGhlbWVQYXRoID0gbV92aWV3SW1wbC0+
dGhlbWVQYXRoKCk7CiAgICAgaWYgKHRoZW1lUGF0aCkKICAgICAgICAgbV92aWV3SW1wbC0+cGFn
ZSgpLT5zZXRUaGVtZVBhdGgodGhlbWVQYXRoKTsKIH0KQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpCiAKIHZvaWQgUGFnZUNsaWVu
dEltcGw6OmhhbmRsZURvd25sb2FkUmVxdWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsK
LSAgICBFd2tfQ29udGV4dCogY29udGV4dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KG1fdmlld0lt
cGwtPnZpZXcoKSk7CisgICAgRXdrX0NvbnRleHQqIGNvbnRleHQgPSBtX3ZpZXdJbXBsLT5ld2tD
b250ZXh0KCk7CiAgICAgY29udGV4dC0+ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxv
YWQoZG93bmxvYWQsIG1fdmlld0ltcGwpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzX3ByaXZhdGUuaAppbmRleCAyNDRmOTU3
Li5lYTI5YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfc2V0dGluZ3NfcHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
ZWZsL2V3a19zZXR0aW5nc19wcml2YXRlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgZXdr
X3NldHRpbmdzX3ByaXZhdGVfaAogI2RlZmluZSBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCiAKLSNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJQcmVmZXJlbmNlczsKQEAgLTM5LDE2ICszOSwyMSBA
QCBjbGFzcyBFd2tWaWV3SW1wbDsKICAqLwogY2xhc3MgRXdrX1NldHRpbmdzIHsKIHB1YmxpYzoK
LSAgICBleHBsaWNpdCBFd2tfU2V0dGluZ3MoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQotICAgICAg
ICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrX1NldHRp
bmdzPiBjcmVhdGUoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQogICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fdmlld0ltcGwpOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEV3a19TZXR0aW5ncyh2
aWV3SW1wbCkpOwogICAgIH0KIAogICAgIGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHBy
ZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAgV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5j
ZXMoKTsKIAogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBFd2tfU2V0dGluZ3MoRXdrVmlld0ltcGwq
IHZpZXdJbXBsKQorICAgICAgICA6IG1fdmlld0ltcGwodmlld0ltcGwpCisgICAgeworICAgICAg
ICBBU1NFUlQobV92aWV3SW1wbCk7CisgICAgfQorCiAgICAgRXdrVmlld0ltcGwqIG1fdmlld0lt
cGw7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5j
cHAKaW5kZXggYjhiZTY3NC4uYTk5OTc0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a192aWV3LmNwcApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlBhZ2VV
SUNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVudEVmbC5oIgogI2luY2x1
ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5o
IgogI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRmluZE9wdGlv
bnMuaCIKICNpbmNsdWRlICJXS1JldGFpblB0ci5oIgpAQCAtMjE3LDggKzIxNiw5IEBAIHN0YXRp
YyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSwgY29uc3QKICAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogCi0gICAg
aWYgKGltcGwtPmltZkNvbnRleHQpCi0gICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KGlt
cGwtPmltZkNvbnRleHQpOworICAgIEVjb3JlX0lNRl9Db250ZXh0KiBpbWZDb250ZXh0ID0gaW1w
bC0+aW1mQ29udGV4dCgpOworICAgIGlmIChpbWZDb250ZXh0KQorICAgICAgICBlY29yZV9pbWZf
Y29udGV4dF9yZXNldChpbWZDb250ZXh0KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjQz
LDExICsyNDMsMTIgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24o
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdAogICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAogICAgIGJvb2wgaXNGaWx0
ZXJlZCA9IGZhbHNlOwotICAgIGlmIChpbXBsLT5pbWZDb250ZXh0KSB7CisgICAgRWNvcmVfSU1G
X0NvbnRleHQqIGltZkNvbnRleHQgPSBpbXBsLT5pbWZDb250ZXh0KCk7CisgICAgaWYgKGltZkNv
bnRleHQpIHsKICAgICAgICAgRWNvcmVfSU1GX0V2ZW50IGltZkV2ZW50OwogICAgICAgICBlY29y
ZV9pbWZfZXZhc19ldmVudF9rZXlfZG93bl93cmFwKGNvbnN0X2Nhc3Q8RXZhc19FdmVudF9LZXlf
RG93bio+KGRvd25FdmVudCksICZpbWZFdmVudC5rZXlfZG93bik7CiAKLSAgICAgICAgaXNGaWx0
ZXJlZCA9IGVjb3JlX2ltZl9jb250ZXh0X2ZpbHRlcl9ldmVudChpbXBsLT5pbWZDb250ZXh0LCBF
Q09SRV9JTUZfRVZFTlRfS0VZX0RPV04sICZpbWZFdmVudCk7CisgICAgICAgIGlzRmlsdGVyZWQg
PSBlY29yZV9pbWZfY29udGV4dF9maWx0ZXJfZXZlbnQoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0VW
RU5UX0tFWV9ET1dOLCAmaW1mRXZlbnQpOwogICAgIH0KIAogICAgIGltcGwtPnBhZ2VQcm94eS0+
aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRpdmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCwgaXNG
aWx0ZXJlZCkpOwpAQCAtNDM5LDcgKzQ0MCw3IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19zbWFy
dF9hZGQoRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgZXZhc19vYmplY3Rfc21hcnRfbWVtYmVy
X2FkZChzbWFydERhdGEtPmltYWdlLCBld2tWaWV3KTsKICAgICBldmFzX29iamVjdF9zaG93KHNt
YXJ0RGF0YS0+aW1hZ2UpOwogCi0gICAgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0
KGV3a1ZpZXcsIHRydWUpOworICAgIHNtYXJ0RGF0YS0+cHJpdi0+c2V0TW91c2VFdmVudHNFbmFi
bGVkKHRydWUpOwogCiAjZGVmaW5lIENPTk5FQ1QocywgYykgZXZhc19vYmplY3RfZXZlbnRfY2Fs
bGJhY2tfYWRkKGV3a1ZpZXcsIHMsIGMsIHNtYXJ0RGF0YSkKICAgICBDT05ORUNUKEVWQVNfQ0FM
TEJBQ0tfRk9DVVNfSU4sIF9ld2tfdmlld19vbl9mb2N1c19pbik7CkBAIC03NTAsNyArNzUxLDcg
QEAgRXdrX0NvbnRleHQqIGV3a192aWV3X2NvbnRleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRh
LCAwKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAw
KTsKIAotICAgIHJldHVybiBpbXBsLT5jb250ZXh0LmdldCgpOworICAgIHJldHVybiBpbXBsLT5l
d2tDb250ZXh0KCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld191cmxfc2V0KEV2YXNfT2JqZWN0
KiBld2tWaWV3LCBjb25zdCBjaGFyKiB1cmwpCkBAIC03NzAsNyArNzcxLDcgQEAgY29uc3QgY2hh
ciogZXdrX3ZpZXdfdXJsX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tf
VklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJ
RVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAgICByZXR1cm4g
aW1wbC0+dXJsOworICAgIHJldHVybiBpbXBsLT51cmwoKTsKIH0KIAogY29uc3QgY2hhciAqZXdr
X3ZpZXdfaWNvbl91cmxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tWaWV3KQpAQCAtNzc4LDcg
Kzc3OSw3IEBAIGNvbnN0IGNoYXIgKmV3a192aWV3X2ljb25fdXJsX2dldChjb25zdCBFdmFzX09i
amVjdCAqZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
aW1wbCwgMCk7CiAKLSAgICByZXR1cm4gaW1wbC0+ZmF2aWNvblVSTDsKKyAgICByZXR1cm4gaW1w
bC0+ZmF2aWNvblVSTCgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfcmVsb2FkKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQpAQCAtODE4LDcgKzgxOSw3IEBAIEV3a19TZXR0aW5ncyogZXdrX3ZpZXdf
c2V0dGluZ3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NE
X0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklFV19JTVBM
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAwKTsKIAotICAgIHJldHVybiBpbXBsLT5z
ZXR0aW5ncy5nZXQoKTsKKyAgICByZXR1cm4gaW1wbC0+c2V0dGluZ3MoKTsKIH0KIAogY29uc3Qg
Y2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAt
ODI2LDEwICs4MjcsNyBAQCBjb25zdCBjaGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZh
c19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3
LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIGltcGwsIDApOwogCi0gICAgQ1N0cmluZyB0aXRsZSA9IGltcGwtPnBhZ2VQcm94eS0+cGFn
ZVRpdGxlKCkudXRmOCgpOwotICAgIGltcGwtPnRpdGxlID0gdGl0bGUuZGF0YSgpOwotCi0gICAg
cmV0dXJuIGltcGwtPnRpdGxlOworICAgIHJldHVybiBpbXBsLT50aXRsZSgpOwogfQogCiAvKioK
QEAgLTg5MSwxMCArODg5LDcgQEAgdm9pZCBld2tfdmlld190aGVtZV9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHBhdGgpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVS
Tihld2tWaWV3LCBzbWFydERhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihz
bWFydERhdGEsIGltcGwpOwogCi0gICAgaWYgKGltcGwtPnRoZW1lICE9IHBhdGgpIHsKLSAgICAg
ICAgaW1wbC0+dGhlbWUgPSBwYXRoOwotICAgICAgICBpbXBsLT5wYWdlUHJveHktPnNldFRoZW1l
UGF0aChwYXRoKTsKLSAgICB9CisgICAgaW1wbC0+c2V0VGhlbWVQYXRoKHBhdGgpOwogfQogCiBj
b25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcp
CkBAIC05MDIsNyArODk3LDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21h
cnREYXRhLCBpbXBsLCAwKTsKIAotICAgIHJldHVybiBpbXBsLT50aGVtZTsKKyAgICByZXR1cm4g
aW1wbC0+dGhlbWVQYXRoKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19iYWNrKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3KQpAQCAtOTk0LDEzICs5ODksNyBAQCBjb25zdCBjaGFyKiBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDApOwogCi0gICAg
U3RyaW5nIGN1c3RvbUVuY29kaW5nID0gaW1wbC0+cGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKCk7Ci0gICAgaWYgKGN1c3RvbUVuY29kaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBpbXBsLT5jdXN0b21FbmNvZGluZyA9IGN1c3RvbUVuY29kaW5nLnV0Zjgo
KS5kYXRhKCk7Ci0KLSAgICByZXR1cm4gaW1wbC0+Y3VzdG9tRW5jb2Rpbmc7CisgICAgcmV0dXJu
IGltcGwtPmN1c3RvbVRleHRFbmNvZGluZ05hbWUoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3
X3NldHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3Qg
Y2hhciogZW5jb2RpbmcpCkBAIC0xMDA4LDggKzk5Nyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld19z
ZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNo
YXIqCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBm
YWxzZSk7CiAKLSAgICBpbXBsLT5jdXN0b21FbmNvZGluZyA9IGVuY29kaW5nOwotICAgIGltcGwt
PnBhZ2VQcm94eS0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGluZyA/IGVuY29kaW5n
IDogU3RyaW5nKCkpOworICAgIGltcGwtPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2Rp
bmcpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMDk3LDEwICsxMDg1LDEwIEBAIEVpbmFf
Qm9vbCBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIEVpbmFfQm9vbCBlbmFiCiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCiAgICAgZW5hYmxlZCA9ICEhZW5hYmxlZDsKLSAgICBpZiAo
aW1wbC0+YXJlTW91c2VFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCisgICAgaWYgKGltcGwtPm1v
dXNlRXZlbnRzRW5hYmxlZCgpID09IGVuYWJsZWQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0g
ICAgaW1wbC0+YXJlTW91c2VFdmVudHNFbmFibGVkID0gZW5hYmxlZDsKKyAgICBpbXBsLT5zZXRN
b3VzZUV2ZW50c0VuYWJsZWQoZW5hYmxlZCk7CiAgICAgaWYgKGVuYWJsZWQpIHsKICAgICAgICAg
ZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9V
U0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rvd24sIHNtYXJ0RGF0YSk7CiAgICAgICAgIGV2
YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBFVkFTX0NBTExCQUNLX01PVVNF
X1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXAsIHNtYXJ0RGF0YSk7CkBAIC0xMTE5LDcgKzExMDcs
NyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPmFyZU1vdXNlRXZlbnRz
RW5hYmxlZDsKKyAgICByZXR1cm4gaW1wbC0+bW91c2VFdmVudHNFbmFibGVkKCk7CiB9CiAKIEVp
bmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKQEAgLTExMjcsMTQgKzExMTUsOCBAQCBF
aW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09iamVjdCogZXdr
VmlldywgaW50IHIsIGludCBnLCBpbgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbXBsLT5jb2xvclBpY2tlclJlc3Vs
dExpc3RlbmVyLCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNvcmU6
OkNvbG9yKHIsIGcsIGIsIGEpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjb2xvclN0
cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5zZXJpYWxp
emVkKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclNl
dENvbG9yKGltcGwtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCksIGNvbG9yU3RyaW5n
LmdldCgpKTsKLSAgICBpbXBsLT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CiAK
LSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaW1wbC0+c2V0Q29sb3JQaWNrZXJDb2xvcihX
ZWJDb3JlOjpDb2xvcihyLCBnLCBiLCBhKSk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpAQCAtMTE2NSwxMCArMTE0NywxMCBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdG91Y2hfZXZl
bnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wgZW5hYgogICAg
IEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAog
ICAgIGVuYWJsZWQgPSAhIWVuYWJsZWQ7Ci0gICAgaWYgKGltcGwtPmFyZVRvdWNoRXZlbnRzRW5h
YmxlZCA9PSBlbmFibGVkKQorICAgIGlmIChpbXBsLT50b3VjaEV2ZW50c0VuYWJsZWQoKSA9PSBl
bmFibGVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGltcGwtPmFyZVRvdWNoRXZlbnRz
RW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgaW1wbC0+c2V0VG91Y2hFdmVudHNFbmFibGVkKGVuYWJs
ZWQpOwogICAgIGlmIChlbmFibGVkKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIHRvIGNv
bm5lY3QgdG91Y2ggY2FsbGJhY2tzIHdpdGggbW91c2UgYW5kIG11bHRpIGV2ZW50cwogICAgICAg
ICAvLyBiZWNhdXNlIHRoZSBFdmFzIGNyZWF0ZXMgbW91c2UgZXZlbnRzIGZvciBmaXJzdCB0b3Vj
aCBhbmQgbXVsdGkgZXZlbnRzCkBAIC0xMjAyLDcgKzExODQsNyBAQCBFaW5hX0Jvb2wgZXdrX3Zp
ZXdfdG91Y2hfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2Up
OwogCi0gICAgcmV0dXJuIGltcGwtPmFyZVRvdWNoRXZlbnRzRW5hYmxlZDsKKyAgICByZXR1cm4g
aW1wbC0+dG91Y2hFdmVudHNFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0
b3JQcm94eUVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3Rv
clByb3h5RWZsLmNwcAppbmRleCA4NGJhMmIzLi44MmY4M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtOTcs
MTIgKzk3LDEzIEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3Jl
YXRlSW5zcGVjdG9yUGFnZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9pbnNwZWN0b3JW
aWV3ID0gZXdrX3ZpZXdfYmFzZV9hZGQoZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cp
LCB0b0FQSShwYWdlKCktPnByb2Nlc3MoKS0+Y29udGV4dCgpKSwgdG9BUEkoaW5zcGVjdG9yUGFn
ZUdyb3VwKCkpKTsKLSAgICBld2tfdmlld190aGVtZV9zZXQobV9pbnNwZWN0b3JWaWV3LCBURVNU
X1RIRU1FX0RJUiIvZGVmYXVsdC5lZGoiKTsKKyAgICBFd2tWaWV3SW1wbCogaW5zcGVjdG9yVmll
d0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QobV9pbnNwZWN0b3JWaWV3KTsKKyAg
ICBpbnNwZWN0b3JWaWV3SW1wbC0+c2V0VGhlbWVQYXRoKFRFU1RfVEhFTUVfRElSICIvZGVmYXVs
dC5lZGoiKTsKIAotICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MgPSBld2tfdmlld19zZXR0aW5n
c19nZXQobV9pbnNwZWN0b3JWaWV3KTsKKyAgICBFd2tfU2V0dGluZ3MqIHNldHRpbmdzID0gaW5z
cGVjdG9yVmlld0ltcGwtPnNldHRpbmdzKCk7CiAgICAgZXdrX3NldHRpbmdzX2ZpbGVfYWNjZXNz
X2Zyb21fZmlsZV91cmxzX2FsbG93ZWRfc2V0KHNldHRpbmdzLCB0cnVlKTsKIAotICAgIHJldHVy
biBFd2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QobV9pbnNwZWN0b3JWaWV3KS0+cGFnZSgpOwor
ICAgIHJldHVybiBpbnNwZWN0b3JWaWV3SW1wbC0+cGFnZSgpOwogfQogCiB2b2lkIFdlYkluc3Bl
Y3RvclByb3h5OjpwbGF0Zm9ybU9wZW4oKQo=
</data>
<flag name="review"
          id="184286"
          type_id="1"
          status="+"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170636</attachid>
            <date>2012-10-25 06:59:47 -0700</date>
            <delta_ts>2012-10-25 08:33:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100370_ewk_view_cism.patch</filename>
            <type>text/plain</type>
            <size>45724</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggM2YwYjg2OC4uN2JhMzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMC0yNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gUmVtb3ZlIHNvbWUgQydpc20gZnJvbSBFd2tWaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE93blB0ciB1c2VhYmxlIGZv
ciBFY29yZV9JTUZfQ29udGV4dCB0byBhdm9pZAorICAgICAgICB1c2luZyByYXcgcG9pbnRlcnMg
aW4gRUZMIHBvcnQuCisKKyAgICAgICAgKiB3dGYvT3duUHRyQ29tbW9uLmg6CisgICAgICAgIChX
VEYpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiB3dGYvZWZs
L093blB0ckVmbC5jcHA6CisgICAgICAgIChXVEY6OmRlbGV0ZU93bmVkUHRyKToKKyAgICAgICAg
KFdURik6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29t
bW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAppbmRleCA0M2EzY2I3Li5mZTI1
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVj
dCBIUkdOX18qIEhSR047CiAKICNpZiBQTEFURk9STShFRkwpCiB0eXBlZGVmIHN0cnVjdCBfRWNv
cmVfRXZhcyBFY29yZV9FdmFzOwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0lNRl9Db250ZXh0IEVj
b3JlX0lNRl9Db250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX1BpcGUgRWNvcmVfUGlwZTsK
IHR5cGVkZWYgc3RydWN0IF9FY29yZV9UaW1lciBFY29yZV9UaW1lcjsKIHR5cGVkZWYgc3RydWN0
IF9FaW5hX0hhc2ggRWluYV9IYXNoOwpAQCAtNjgsNiArNjksNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVP
d25lZFB0cihFY29yZV9FdmFzKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRl
T3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVPd25lZFB0cihFY29yZV9QaXBlKik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVsZXRlT3duZWRQdHIoRWNvcmVfVGltZXIqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWxldGVPd25lZFB0cihFaW5hX0hhc2gqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggMmQ2NjNmYS4uNzNkNTdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIx
LDYgKzIxLDcgQEAgTElTVChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7SUNVX0kxOE5fTElC
UkFSSUVTfQogICAgICR7RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9JTUZfTElCUkFSSUVTfQogICAgICR7RUlOQV9MSUJSQVJJRVN9CiAg
ICAgJHtFVkFTX0xJQlJBUklFU30KICAgICAke0NNQUtFX0RMX0xJQlN9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25Q
dHJFZmwuY3BwCmluZGV4IGM2Y2E1ZTIuLmI3NjQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVj
b3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8RXZhcy5oPgogCkBAIC02NCw0ICs2NSwxMCBAQCB2b2lkIGRlbGV0ZU93bmVkUHRy
KEVjb3JlX1RpbWVyKiBwdHIpCiAgICAgICAgIGVjb3JlX3RpbWVyX2RlbChwdHIpOwogfQogCit2
b2lkIGRlbGV0ZU93bmVkUHRyKEVjb3JlX0lNRl9Db250ZXh0KiBwdHIpCit7CisgICAgaWYgKHB0
cikKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKHB0cik7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBjZTM5YjUxLi45MzBkYTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODcgQEAKKzIwMTIt
MTAtMjUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSBzb21lIEMnaXNtIGZyb20gRXdrVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbG90IG9m
IEMnaXNtIGZyb20gRXdrVmlldzoKKyAgICAgICAgLSBNYWtlIG1vcmUgbWVtYmVycyBwcml2YXRl
IGFuZCBhZGQgQysrIG1ldGhvZHMgdG8KKyAgICAgICAgRXdrVmlld0ltcGwgZm9yIHRoZSBwdWJs
aWMgQyBBUEkgdG8gdXNlCisgICAgICAgIC0gVXNlIHNtYXJ0IHBvaW50ZXJzIHdoZW4gcG9zc2li
bGUgaW5zdGVhZCBvZiByYXcKKyAgICAgICAgb25lcworICAgICAgICAtIFVzZSBDKysgbmFtaW5n
IGNvbnZlbnRpb25zIGZvciBjYWxsYmFjayBmdW5jdGlvbnMKKyAgICAgICAgYW5kIGRlZmluZSB0
aGVtIGFzIHN0YXRpYyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uSU1G
SW5wdXRTZXF1ZW5jZUNvbXBsZXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvbklNRlByZWVk
aXRTZXF1ZW5jZUNoYW5nZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUlNRkNvbnRl
eHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldEN1cnNvcik6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6Zm9jdXNlZCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6dmlzaWJsZSk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6dGl0bGUpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmltZkNv
bnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnRoZW1lUGF0aCk6CisgICAgICAgIChFd2tW
aWV3SW1wbDo6c2V0VGhlbWVQYXRoKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpjdXN0b21UZXh0
RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRDdXN0b21UZXh0RW5jb2Rp
bmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRNb3VzZUV2ZW50c0VuYWJsZWQpOgor
ICAgICAgICAoRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxlZCk6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6cmVx
dWVzdENvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNr
ZXIpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0YXRlKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAoRXdrVmlld0ltcGw6
Om9uTW91c2VEb3duKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvbk1vdXNlVXApOgorICAgICAg
ICAoRXdrVmlld0ltcGw6Om9uTW91c2VNb3ZlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpmZWVk
VG91Y2hFdmVudHMpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uVG91Y2hEb3duKToKKyAgICAg
ICAgKEV3a1ZpZXdJbXBsOjpvblRvdWNoVXApOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uVG91
Y2hNb3ZlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXdrQ29udGV4dCk6CisgICAg
ICAgIChFd2tWaWV3SW1wbDo6c2V0dGluZ3MpOgorICAgICAgICAoRXdrVmlld0ltcGwpOgorICAg
ICAgICAoRXdrVmlld0ltcGw6OnVybCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZmF2aWNvblVS
TCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6bW91c2VFdmVudHNFbmFibGVkKToKKyAgICAgICAg
KEV3a1ZpZXdJbXBsOjp0b3VjaEV2ZW50c0VuYWJsZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aXNW
aWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRSZWxhdW5j
aFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxv
YWRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3NfcHJp
dmF0ZS5oOgorICAgICAgICAoRXdrX1NldHRpbmdzOjpjcmVhdGUpOgorICAgICAgICAoRXdrX1Nl
dHRpbmdzOjpFd2tfU2V0dGluZ3MpOgorICAgICAgICAoRXdrX1NldHRpbmdzKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChfZXdrX3ZpZXdfc21h
cnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9kb3duKToKKyAgICAg
ICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdfY29udGV4dF9nZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfdXJsX2dldCk6CisgICAgICAgIChld2tfdmlld19pY29uX3Vy
bF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KToKKyAgICAgICAgKGV3a192
aWV3X3RpdGxlX2dldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9zZXQpOgorICAgICAgICAo
ZXdrX3ZpZXdfdGhlbWVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRpbmdfZW5jb2Rpbmdf
Y3VzdG9tX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29kaW5nX2N1c3RvbV9z
ZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KToKKyAgICAg
ICAgKGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dldCk6CisgICAgICAgIChld2tfdmll
d19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3X3RvdWNoX2V2ZW50
c19lbmFibGVkX3NldCk6CisgICAgICAgIChld2tfdmlld190b3VjaF9ldmVudHNfZW5hYmxlZF9n
ZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0
b3JQYWdlKToKKwogMjAxMi0xMC0yNSAgU3VkYXJzYW5hIE5hZ2luZW5pICA8c3VkYXJzYW5hLm5h
Z2luZW5pQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXVtBQ10gRml4IGJ1aWxkIGJyZWFrIHdo
ZW4gQUMgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
RXdrVmlld0ltcGwuY3BwCmluZGV4IDkyNWYyZjIuLmZjMDEyN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5jcHAKQEAgLTMxLDYgKzMxLDgg
QEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZENsaWVu
dEVmbC5oIgorI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIgorI2luY2x1
ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSAiV2Vi
UG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJld2tfYmFja19mb3J3YXJkX2xpc3RfcHJp
dmF0ZS5oIgpAQCAtNzcsMjIgKzc5LDIyIEBAIGNvbnN0IEV2YXNfT2JqZWN0KiBFd2tWaWV3SW1w
bDo6dmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1BhZ2VSZWYgcGFnZSkKICAgICByZXR1cm4g
cGFnZVZpZXdNYXAuZ2V0KHBhZ2UpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfY29tbWl0
KHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0Kiwgdm9pZCogZXZlbnRJbmZvKQordm9pZCBF
d2tWaWV3SW1wbDo6b25JTUZJbnB1dFNlcXVlbmNlQ29tcGxldGUodm9pZCogZGF0YSwgRWNvcmVf
SU1GX0NvbnRleHQqLCB2b2lkKiBldmVudEluZm8pCiB7CiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0
YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwog
ICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHZpZXdJbXBsKTsKLSAg
ICBpZiAoIWV2ZW50SW5mbyB8fCAhdmlld0ltcGwtPmlzSW1mRm9jdXNlZCkKKyAgICBpZiAoIWV2
ZW50SW5mbyB8fCAhdmlld0ltcGwtPm1faXNJbWZGb2N1c2VkKQogICAgICAgICByZXR1cm47CiAK
ICAgICB2aWV3SW1wbC0+cGFnZVByb3h5LT5jb25maXJtQ29tcG9zaXRpb24oU3RyaW5nOjpmcm9t
VVRGOChzdGF0aWNfY2FzdDxjaGFyKj4oZXZlbnRJbmZvKSkpOwogfQogCi1zdGF0aWMgdm9pZCBf
ZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0KiBj
b250ZXh0LCB2b2lkKikKK3ZvaWQgRXdrVmlld0ltcGw6Om9uSU1GUHJlZWRpdFNlcXVlbmNlQ2hh
bmdlZCh2b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm9pZCopCiB7CiAg
ICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdf
U21hcnRfRGF0YSo+KGRhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIHZpZXdJbXBsKTsKIAotICAgIGlmICghdmlld0ltcGwtPnBhZ2VQcm94eS0+Zm9jdXNl
ZEZyYW1lKCkgfHwgIXZpZXdJbXBsLT5pc0ltZkZvY3VzZWQpCisgICAgaWYgKCF2aWV3SW1wbC0+
cGFnZVByb3h5LT5mb2N1c2VkRnJhbWUoKSB8fCAhdmlld0ltcGwtPm1faXNJbWZGb2N1c2VkKQog
ICAgICAgICByZXR1cm47CiAKICAgICBjaGFyKiBidWZmZXIgPSAwOwpAQCAtMTAxLDc2ICsxMDMs
NTcgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2b2lkKiBkYXRhLCBF
Y29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm8KICAgICAgICAgcmV0dXJuOwogCiAgICAgU3Ry
aW5nIHByZWVkaXRTdHJpbmcgPSBTdHJpbmc6OmZyb21VVEY4KGJ1ZmZlcik7CisgICAgZnJlZShi
dWZmZXIpOwogICAgIFZlY3RvcjxDb21wb3NpdGlvblVuZGVybGluZT4gdW5kZXJsaW5lczsKICAg
ICB1bmRlcmxpbmVzLmFwcGVuZChDb21wb3NpdGlvblVuZGVybGluZSgwLCBwcmVlZGl0U3RyaW5n
Lmxlbmd0aCgpLCBDb2xvcigwLCAwLCAwKSwgZmFsc2UpKTsKICAgICB2aWV3SW1wbC0+cGFnZVBy
b3h5LT5zZXRDb21wb3NpdGlvbihwcmVlZGl0U3RyaW5nLCB1bmRlcmxpbmVzLCAwKTsKIH0KIAot
c3RhdGljIHZvaWQgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koRWNvcmVfSU1GX0NvbnRl
eHQqIGltZkNvbnRleHQpCi17Ci0gICAgaWYgKCFpbWZDb250ZXh0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBlY29yZV9pbWZfY29udGV4dF9ldmVudF9jYWxsYmFja19kZWwoaW1mQ29udGV4dCwg
RUNPUkVfSU1GX0NBTExCQUNLX1BSRUVESVRfQ0hBTkdFRCwgX2V3a192aWV3X3ByZWVkaXRfY2hh
bmdlZCk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfZGVsKGltZkNvbnRl
eHQsIEVDT1JFX0lNRl9DQUxMQkFDS19DT01NSVQsIF9ld2tfdmlld19jb21taXQpOwotICAgIGVj
b3JlX2ltZl9jb250ZXh0X2RlbChpbWZDb250ZXh0KTsKLX0KLQotc3RhdGljIEVjb3JlX0lNRl9D
b250ZXh0KiBfZXdrX3ZpZXdfaW1mX2NvbnRleHRfY3JlYXRlKEV3a19WaWV3X1NtYXJ0X0RhdGEq
IHNtYXJ0RGF0YSkKK1Bhc3NPd25QdHI8RWNvcmVfSU1GX0NvbnRleHQ+IEV3a1ZpZXdJbXBsOjpj
cmVhdGVJTUZDb250ZXh0KEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkKQogewogICAgIGNvbnN0IGNo
YXIqIGRlZmF1bHRDb250ZXh0SUQgPSBlY29yZV9pbWZfY29udGV4dF9kZWZhdWx0X2lkX2dldCgp
OwogICAgIGlmICghZGVmYXVsdENvbnRleHRJRCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCi0gICAgRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQgPSBl
Y29yZV9pbWZfY29udGV4dF9hZGQoZGVmYXVsdENvbnRleHRJRCk7CisgICAgT3duUHRyPEVjb3Jl
X0lNRl9Db250ZXh0PiBpbWZDb250ZXh0ID0gYWRvcHRQdHIoZWNvcmVfaW1mX2NvbnRleHRfYWRk
KGRlZmF1bHRDb250ZXh0SUQpKTsKICAgICBpZiAoIWltZkNvbnRleHQpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGVjb3JlX2ltZl9jb250ZXh0X2V2
ZW50X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tfUFJFRURJVF9D
SEFOR0VELCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkLCBzbWFydERhdGEpOwotICAgIGVjb3Jl
X2ltZl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FM
TEJBQ0tfQ09NTUlULCBfZXdrX3ZpZXdfY29tbWl0LCBzbWFydERhdGEpOworICAgIGVjb3JlX2lt
Zl9jb250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LmdldCgpLCBFQ09SRV9JTUZf
Q0FMTEJBQ0tfUFJFRURJVF9DSEFOR0VELCBvbklNRlByZWVkaXRTZXF1ZW5jZUNoYW5nZWQsIHNk
KTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9ldmVudF9jYWxsYmFja19hZGQoaW1mQ29udGV4dC5n
ZXQoKSwgRUNPUkVfSU1GX0NBTExCQUNLX0NPTU1JVCwgb25JTUZJbnB1dFNlcXVlbmNlQ29tcGxl
dGUsIHNkKTsKIAotICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVf
ZXZhc19nZXQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwotICAgIGVjb3JlX2ltZl9jb250ZXh0X2Ns
aWVudF93aW5kb3dfc2V0KGltZkNvbnRleHQsICh2b2lkKillY29yZV9ldmFzX3dpbmRvd19nZXQo
ZWNvcmVFdmFzKSk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfY2xpZW50X2NhbnZhc19zZXQoaW1m
Q29udGV4dCwgc21hcnREYXRhLT5iYXNlLmV2YXMpOworICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZh
cyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19nZXQoc2QtPmJhc2UuZXZhcyk7CisgICAgZWNvcmVf
aW1mX2NvbnRleHRfY2xpZW50X3dpbmRvd19zZXQoaW1mQ29udGV4dC5nZXQoKSwgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZWNvcmVfZXZhc193aW5kb3dfZ2V0KGVjb3JlRXZhcykpKTsKKyAgICBl
Y29yZV9pbWZfY29udGV4dF9jbGllbnRfY2FudmFzX3NldChpbWZDb250ZXh0LmdldCgpLCBzZC0+
YmFzZS5ldmFzKTsKIAotICAgIHJldHVybiBpbWZDb250ZXh0OworICAgIHJldHVybiBpbWZDb250
ZXh0LnJlbGVhc2UoKTsKIH0KIAogRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKEV2YXNfT2JqZWN0
KiB2aWV3KQotICAgIDogc2V0dGluZ3MoYWRvcHRQdHIobmV3IEV3a19TZXR0aW5ncyh0aGlzKSkp
Ci0gICAgLCBhcmVNb3VzZUV2ZW50c0VuYWJsZWQoZmFsc2UpCi0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICAsIGFyZVRvdWNoRXZlbnRzRW5hYmxlZChmYWxzZSkKLSNlbmRpZgotICAgICwg
cG9wdXBNZW51UHJveHkoMCkKKyAgICA6IHBvcHVwTWVudVByb3h5KDApCiAgICAgLCBwb3B1cE1l
bnVJdGVtcygwKQotICAgICwgaW1mQ29udGV4dCgwKQotICAgICwgaXNJbWZGb2N1c2VkKGZhbHNl
KQotI2lmZGVmIEhBVkVfRUNPUkVfWAotICAgICwgaXNVc2luZ0Vjb3JlWChmYWxzZSkKLSNlbmRp
ZgogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIGV2YXNHbCgwKQogICAg
ICwgZXZhc0dsQ29udGV4dCgwKQogICAgICwgZXZhc0dsU3VyZmFjZSgwKQogI2VuZGlmCiAgICAg
LCBtX3ZpZXcodmlldykKKyAgICAsIG1fc2V0dGluZ3MoRXdrX1NldHRpbmdzOjpjcmVhdGUodGhp
cykpCisgICAgLCBtX2ltZkNvbnRleHQoY3JlYXRlSU1GQ29udGV4dChzbWFydERhdGEoKSkpCisg
ICAgLCBtX2lzSW1mRm9jdXNlZChmYWxzZSkKKyAgICAsIG1fbW91c2VFdmVudHNFbmFibGVkKGZh
bHNlKQorI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgLCBtX3RvdWNoRXZlbnRzRW5hYmxl
ZChmYWxzZSkKKyNlbmRpZgogewogICAgIEFTU0VSVCh2aWV3KTsKLSAgICBFd2tfVmlld19TbWFy
dF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwotICAgIEFTU0VSVChzZCk7Ci0KLSAgICBpbWZDb250
ZXh0ID0gX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZShzZCk7CiAKLSNpZmRlZiBIQVZFX0VD
T1JFX1gKLSAgICBpc1VzaW5nRWNvcmVYID0gV2ViQ29yZTo6aXNVc2luZ0Vjb3JlWChzZC0+YmFz
ZS5ldmFzKTsKLSNlbmRpZgorICAgIC8vIEVuYWJsZSBtb3VzZSBldmVudHMgYnkgZGVmYXVsdAor
ICAgIHNldE1vdXNlRXZlbnRzRW5hYmxlZCh0cnVlKTsKIH0KIAogRXdrVmlld0ltcGw6On5Fd2tW
aWV3SW1wbCgpCiB7Ci0gICAgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koaW1mQ29udGV4
dCk7Ci0KICAgICB2b2lkKiBpdGVtOwogICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVudUl0ZW1z
LCBpdGVtKQogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVfSXRlbSo+
KGl0ZW0pOwpAQCAtMjA0LDQ2ICsxODcsNDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0Q3Vyc29y
KGNvbnN0IEN1cnNvciYgY3Vyc29yKQogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21h
cnREYXRhKCk7CiAKICAgICBjb25zdCBjaGFyKiBncm91cCA9IGN1cnNvci5wbGF0Zm9ybUN1cnNv
cigpOwotICAgIGlmICghZ3JvdXAgfHwgZ3JvdXAgPT0gY3Vyc29yR3JvdXApCisgICAgaWYgKCFn
cm91cCB8fCBncm91cCA9PSBtX2N1cnNvckdyb3VwKQogICAgICAgICByZXR1cm47CiAKLSAgICBj
dXJzb3JHcm91cCA9IGdyb3VwOwotICAgIGN1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVkamVfb2Jq
ZWN0X2FkZChzZC0+YmFzZS5ldmFzKSk7CisgICAgbV9jdXJzb3JHcm91cCA9IGdyb3VwOworICAg
IG1fY3Vyc29yT2JqZWN0ID0gYWRvcHRSZWYoZWRqZV9vYmplY3RfYWRkKHNkLT5iYXNlLmV2YXMp
KTsKIAogICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVfZXZhc19n
ZXQoc2QtPmJhc2UuZXZhcyk7Ci0gICAgaWYgKCF0aGVtZSB8fCAhZWRqZV9vYmplY3RfZmlsZV9z
ZXQoY3Vyc29yT2JqZWN0LmdldCgpLCB0aGVtZSwgZ3JvdXApKSB7Ci0gICAgICAgIGN1cnNvck9i
amVjdC5jbGVhcigpOworICAgIGlmICghbV90aGVtZSB8fCAhZWRqZV9vYmplY3RfZmlsZV9zZXQo
bV9jdXJzb3JPYmplY3QuZ2V0KCksIG1fdGhlbWUsIGdyb3VwKSkgeworICAgICAgICBtX2N1cnNv
ck9iamVjdC5jbGVhcigpOwogCiAgICAgICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNvcl9zZXQo
ZWNvcmVFdmFzLCAwLCAwLCAwLCAwKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICAgICAgaWYg
KGlzVXNpbmdFY29yZVgpCisgICAgICAgIGlmIChXZWJDb3JlOjppc1VzaW5nRWNvcmVYKHNkLT5i
YXNlLmV2YXMpKQogICAgICAgICAgICAgV2ViQ29yZTo6YXBwbHlGYWxsYmFja0N1cnNvcihlY29y
ZUV2YXMsIGdyb3VwKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgRXZh
c19Db29yZCB3aWR0aCwgaGVpZ2h0OwotICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2dldChjdXJz
b3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgZWRqZV9vYmplY3Rfc2l6ZV9t
aW5fZ2V0KG1fY3Vyc29yT2JqZWN0LmdldCgpLCAmd2lkdGgsICZoZWlnaHQpOwogICAgIGlmICh3
aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgICAgICBlZGplX29iamVjdF9zaXplX21pbl9j
YWxjKGN1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAgZWRqZV9v
YmplY3Rfc2l6ZV9taW5fY2FsYyhtX2N1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAmaGVpZ2h0
KTsKICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkgewogICAgICAgICB3aWR0aCA9
IGRlZmF1bHRDdXJzb3JTaXplOwogICAgICAgICBoZWlnaHQgPSBkZWZhdWx0Q3Vyc29yU2l6ZTsK
ICAgICB9Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKGN1cnNvck9iamVjdC5nZXQoKSwgd2lkdGgs
IGhlaWdodCk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fY3Vyc29yT2JqZWN0LmdldCgpLCB3
aWR0aCwgaGVpZ2h0KTsKIAogICAgIGNvbnN0IGNoYXIqIGRhdGE7CiAgICAgaW50IGhvdHNwb3RY
ID0gMDsKLSAgICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQoY3Vyc29yT2JqZWN0LmdldCgp
LCAiaG90LngiKTsKKyAgICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQobV9jdXJzb3JPYmpl
Y3QuZ2V0KCksICJob3QueCIpOwogICAgIGlmIChkYXRhKQogICAgICAgICBob3RzcG90WCA9IGF0
b2koZGF0YSk7CiAKICAgICBpbnQgaG90c3BvdFkgPSAwOwotICAgIGRhdGEgPSBlZGplX29iamVj
dF9kYXRhX2dldChjdXJzb3JPYmplY3QuZ2V0KCksICJob3QueSIpOworICAgIGRhdGEgPSBlZGpl
X29iamVjdF9kYXRhX2dldChtX2N1cnNvck9iamVjdC5nZXQoKSwgImhvdC55Iik7CiAgICAgaWYg
KGRhdGEpCiAgICAgICAgIGhvdHNwb3RZID0gYXRvaShkYXRhKTsKIAotICAgIGVjb3JlX2V2YXNf
b2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBjdXJzb3JPYmplY3QuZ2V0KCksIEVWQVNfTEFZ
RVJfTUFYLCBob3RzcG90WCwgaG90c3BvdFkpOworICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNv
cl9zZXQoZWNvcmVFdmFzLCBtX2N1cnNvck9iamVjdC5nZXQoKSwgRVZBU19MQVlFUl9NQVgsIGhv
dHNwb3RYLCBob3RzcG90WSk7CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OnJlZHJhd1JlZ2lvbihj
b25zdCBJbnRSZWN0JiByZWN0KQpAQCAtMzYwLDYgKzM0MywyMCBAQCB2b2lkIEV3a1ZpZXdJbXBs
OjpzZXRJbWFnZURhdGEodm9pZCogaW1hZ2VEYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogICAg
IGV2YXNfb2JqZWN0X2ltYWdlX2RhdGFfY29weV9zZXQoc2QtPmltYWdlLCBpbWFnZURhdGEpOwog
fQogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCitib29sIEV3a1ZpZXdJbXBsOjpzZXRD
b2xvclBpY2tlckNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcikKK3sKKyAgICBpZiAo
IW1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGNvbG9yU3RyaW5nKEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbG9yLnNlcmlhbGl6ZWQoKS51dGY4KCkuZGF0YSgpKSk7
CisgICAgV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyU2V0Q29sb3IobV9jb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyLmdldCgpLCBjb2xvclN0cmluZy5nZXQoKSk7CisgICAgbV9jb2xvclBpY2tl
clJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRpZgor
CiAvKioKICAqIEBpbnRlcm5hbAogICogaW5mb3JtcyBsb2FkIGZhaWxlZCB3aXRoIGVycm9yIGlu
Zm9ybWF0aW9uLgpAQCAtNTU5LDYgKzU1NiwxMDggQEAgSW50U2l6ZSBFd2tWaWV3SW1wbDo6c2l6
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEludFNpemUod2lkdGgsIGhlaWdodCk7CiB9CiAKK2Jvb2wg
RXdrVmlld0ltcGw6OmZvY3VzZWQoKSBjb25zdAoreworICAgIHJldHVybiBldmFzX29iamVjdF9m
b2N1c19nZXQobV92aWV3KTsKK30KKworYm9vbCBFd2tWaWV3SW1wbDo6dmlzaWJsZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0KG1fdmlldyk7Cit9CisKK2Nv
bnN0IGNoYXIqIEV3a1ZpZXdJbXBsOjp0aXRsZSgpIGNvbnN0Cit7CisgICAgbV90aXRsZSA9IHBh
Z2VQcm94eS0+cGFnZVRpdGxlKCkudXRmOCgpLmRhdGEoKTsKKworICAgIHJldHVybiBtX3RpdGxl
OworfQorCitFY29yZV9JTUZfQ29udGV4dCogRXdrVmlld0ltcGw6OmltZkNvbnRleHQoKQorewor
ICAgIHJldHVybiBtX2ltZkNvbnRleHQuZ2V0KCk7Cit9CisKK2NvbnN0IGNoYXIqIEV3a1ZpZXdJ
bXBsOjp0aGVtZVBhdGgoKSBjb25zdAoreworICAgIHJldHVybiBtX3RoZW1lOworfQorCit2b2lk
IEV3a1ZpZXdJbXBsOjpzZXRUaGVtZVBhdGgoY29uc3QgY2hhciogdGhlbWUpCit7CisgICAgaWYg
KG1fdGhlbWUgIT0gdGhlbWUpIHsKKyAgICAgICAgbV90aGVtZSA9IHRoZW1lOworICAgICAgICBw
YWdlUHJveHktPnNldFRoZW1lUGF0aCh0aGVtZSk7CisgICAgfQorfQorCitjb25zdCBjaGFyKiBF
d2tWaWV3SW1wbDo6Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0Cit7CisgICAgU3RyaW5n
IGN1c3RvbUVuY29kaW5nID0gcGFnZVByb3h5LT5jdXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7Cisg
ICAgaWYgKGN1c3RvbUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBtX2N1c3RvbUVuY29kaW5nID0gY3VzdG9tRW5jb2RpbmcudXRmOCgpLmRhdGEoKTsKKworICAg
IHJldHVybiBtX2N1c3RvbUVuY29kaW5nOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpzZXRDdXN0
b21UZXh0RW5jb2RpbmdOYW1lKGNvbnN0IGNoYXIqIGVuY29kaW5nKQoreworICAgIG1fY3VzdG9t
RW5jb2RpbmcgPSBlbmNvZGluZzsKKyAgICBwYWdlUHJveHktPnNldEN1c3RvbVRleHRFbmNvZGlu
Z05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmluZygpKTsKK30KKwordm9pZCBFd2tWaWV3
SW1wbDo6c2V0TW91c2VFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAobV9t
b3VzZUV2ZW50c0VuYWJsZWQgPT0gZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9t
b3VzZUV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisgICAgICAgIGV2YXNfb2Jq
ZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfRE9XTiwg
b25Nb3VzZURvd24sIHNkKTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRk
KG1fdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9VUCwgb25Nb3VzZVVwLCBzZCk7CisgICAgICAg
IGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9V
U0VfTU9WRSwgb25Nb3VzZU1vdmUsIHNkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBldmFzX29i
amVjdF9ldmVudF9jYWxsYmFja19kZWwobV92aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04s
IG9uTW91c2VEb3duKTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKG1f
dmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9VUCwgb25Nb3VzZVVwKTsKKyAgICAgICAgZXZhc19v
YmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKG1fdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZF
LCBvbk1vdXNlTW92ZSk7CisgICAgfQorfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3Zv
aWQgRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgaWYgKG1fdG91Y2hFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fdG91Y2hFdmVudHNFbmFibGVkID0gZW5hYmxlZDsKKworICAgIGlmIChlbmFibGVk
KSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBoYXZlIHRvIGNvbm5lY3QgdG91Y2ggY2FsbGJhY2tz
IHdpdGggbW91c2UgYW5kIG11bHRpIGV2ZW50cworICAgICAgICAvLyBiZWNhdXNlIHRoZSBFdmFz
IGNyZWF0ZXMgbW91c2UgZXZlbnRzIGZvciBmaXJzdCB0b3VjaCBhbmQgbXVsdGkgZXZlbnRzCisg
ICAgICAgIC8vIGZvciBzZWNvbmQgYW5kIHRoaXJkIHRvdWNoZXMuIEJlbG93IGNvZGVzIHNob3Vs
ZCBiZSBmaXhlZCB3aGVuIHRoZSBFdmFzCisgICAgICAgIC8vIHN1cHBvcnRzIHRoZSB0b3VjaCBl
dmVudHMuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTc3ODUgZm9yIGRldGFpbHMuCisgICAgICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc21hcnREYXRhKCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCht
X3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfRE9XTiwgb25Ub3VjaERvd24sIHNkKTsKKyAgICAg
ICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG1fdmlldywgRVZBU19DQUxMQkFDS19N
T1VTRV9VUCwgb25Ub3VjaFVwLCBzZCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxi
YWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgb25Ub3VjaE1vdmUsIHNk
KTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG1fdmlldywgRVZBU19D
QUxMQkFDS19NVUxUSV9ET1dOLCBvblRvdWNoRG93biwgc2QpOworICAgICAgICBldmFzX29iamVj
dF9ldmVudF9jYWxsYmFja19hZGQobV92aWV3LCBFVkFTX0NBTExCQUNLX01VTFRJX1VQLCBvblRv
dWNoVXAsIHNkKTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKG1fdmll
dywgRVZBU19DQUxMQkFDS19NVUxUSV9NT1ZFLCBvblRvdWNoTW92ZSwgc2QpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChtX3ZpZXcsIEVWQVNf
Q0FMTEJBQ0tfTU9VU0VfRE9XTiwgb25Ub3VjaERvd24pOworICAgICAgICBldmFzX29iamVjdF9l
dmVudF9jYWxsYmFja19kZWwobV92aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX1VQLCBvblRvdWNo
VXApOworICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwobV92aWV3LCBFVkFT
X0NBTExCQUNLX01PVVNFX01PVkUsIG9uVG91Y2hNb3ZlKTsKKyAgICAgICAgZXZhc19vYmplY3Rf
ZXZlbnRfY2FsbGJhY2tfZGVsKG1fdmlldywgRVZBU19DQUxMQkFDS19NVUxUSV9ET1dOLCBvblRv
dWNoRG93bik7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChtX3ZpZXcs
IEVWQVNfQ0FMTEJBQ0tfTVVMVElfVVAsIG9uVG91Y2hVcCk7CisgICAgICAgIGV2YXNfb2JqZWN0
X2V2ZW50X2NhbGxiYWNrX2RlbChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTVVMVElfTU9WRSwgb25U
b3VjaE1vdmUpOworICAgIH0KK30KKyNlbmRpZgorCiAvKioKICAqIEBpbnRlcm5hbAogICogVXBk
YXRlIHRoZSB2aWV3J3MgZmF2aWNvbiBhbmQgZW1pdHMgYSAiaWNvbixjaGFuZ2VkIiBzaWduYWwg
aWYgaXQgaGFzCkBAIC01NzIsNyArNjcxLDcgQEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtSWNv
bkNoYW5nZSgpCiAgICAgRXdrX0Zhdmljb25fRGF0YWJhc2UqIGljb25EYXRhYmFzZSA9IGNvbnRl
eHQtPmZhdmljb25EYXRhYmFzZSgpOwogICAgIEFTU0VSVChpY29uRGF0YWJhc2UpOwogCi0gICAg
ZmF2aWNvblVSTCA9IGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJh
c2UsIHVybCk7CisgICAgbV9mYXZpY29uVVJMID0gZXdrX2Zhdmljb25fZGF0YWJhc2VfaWNvbl91
cmxfZ2V0KGljb25EYXRhYmFzZSwgbV91cmwpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2NhbGwobV92aWV3LCAiaWNvbixjaGFuZ2VkIiwgMCk7CiB9CiAKQEAgLTY5MCw3ICs3ODks
NyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpyZXF1ZXN0Q29sb3JQaWNrZXIoaW50IHIsIGludCBnLCBp
bnQgYiwgaW50IGEsIFdLQ29sb3JQaWNrZXJSZQogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3QpOwogCi0gICAgY29sb3JQaWNrZXJSZXN1bHRMaXN0
ZW5lciA9IGxpc3RlbmVyOworICAgIG1fY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lciA9IGxpc3Rl
bmVyOwogCiAgICAgc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX3JlcXVlc3Qoc2QsIHIsIGcs
IGIsIGEpOwogfQpAQCAtNzA0LDcgKzgwMyw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmRpc21pc3ND
b2xvclBpY2tlcigpCiAgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzbWFydERhdGEoKTsK
ICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpLT5pbnB1dF9waWNrZXJfY29s
b3JfZGlzbWlzcyk7CiAKLSAgICBjb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7Cisg
ICAgbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7CiAKICAgICBzZC0+YXBpLT5p
bnB1dF9waWNrZXJfY29sb3JfZGlzbWlzcyhzZCk7CiB9CkBAIC04NDUsMjggKzk0NCwyOCBAQCB1
bnNpZ25lZCBsb25nIGxvbmcgRXdrVmlld0ltcGw6OmluZm9ybURhdGFiYXNlUXVvdGFSZWFjaGVk
KGNvbnN0IFN0cmluZyYgZGF0YWJhcwogICovCiB2b2lkIEV3a1ZpZXdJbXBsOjp1cGRhdGVUZXh0
SW5wdXRTdGF0ZSgpCiB7Ci0gICAgaWYgKCFpbWZDb250ZXh0KQorICAgIGlmICghbV9pbWZDb250
ZXh0KQogICAgICAgICByZXR1cm47CiAKICAgICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yID0g
cGFnZVByb3h5LT5lZGl0b3JTdGF0ZSgpOwogCiAgICAgaWYgKGVkaXRvci5pc0NvbnRlbnRFZGl0
YWJsZSkgewotICAgICAgICBpZiAoaXNJbWZGb2N1c2VkKQorICAgICAgICBpZiAobV9pc0ltZkZv
Y3VzZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRf
cmVzZXQoaW1mQ29udGV4dCk7Ci0gICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX2luKGlt
ZkNvbnRleHQpOwotICAgICAgICBpc0ltZkZvY3VzZWQgPSB0cnVlOworICAgICAgICBlY29yZV9p
bWZfY29udGV4dF9yZXNldChtX2ltZkNvbnRleHQuZ2V0KCkpOworICAgICAgICBlY29yZV9pbWZf
Y29udGV4dF9mb2N1c19pbihtX2ltZkNvbnRleHQuZ2V0KCkpOworICAgICAgICBtX2lzSW1mRm9j
dXNlZCA9IHRydWU7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFpc0ltZkZvY3VzZWQpCisg
ICAgICAgIGlmICghbV9pc0ltZkZvY3VzZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgaWYgKGVkaXRvci5oYXNDb21wb3NpdGlvbikKICAgICAgICAgICAgIHBhZ2VQcm94eS0+Y2Fu
Y2VsQ29tcG9zaXRpb24oKTsKIAotICAgICAgICBpc0ltZkZvY3VzZWQgPSBmYWxzZTsKLSAgICAg
ICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQoaW1mQ29udGV4dCk7Ci0gICAgICAgIGVjb3JlX2lt
Zl9jb250ZXh0X2ZvY3VzX291dChpbWZDb250ZXh0KTsKKyAgICAgICAgbV9pc0ltZkZvY3VzZWQg
PSBmYWxzZTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQobV9pbWZDb250ZXh0Lmdl
dCgpKTsKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZm9jdXNfb3V0KG1faW1mQ29udGV4dC5n
ZXQoKSk7CiAgICAgfQogfQogCkBAIC04ODMsMTEgKzk4MiwxMSBAQCB2b2lkIEV3a1ZpZXdJbXBs
OjppbmZvcm1VUkxDaGFuZ2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBDU3RyaW5nIHJhd0Fj
dGl2ZVVSTCA9IGFjdGl2ZVVSTC51dGY4KCk7Ci0gICAgaWYgKHVybCA9PSByYXdBY3RpdmVVUkwu
ZGF0YSgpKQorICAgIGlmIChtX3VybCA9PSByYXdBY3RpdmVVUkwuZGF0YSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICB1cmwgPSByYXdBY3RpdmVVUkwuZGF0YSgpOwotICAgIGNvbnN0IGNoYXIq
IGNhbGxiYWNrQXJndW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4odXJsKTsKKyAgICBt
X3VybCA9IHJhd0FjdGl2ZVVSTC5kYXRhKCk7CisgICAgY29uc3QgY2hhciogY2FsbGJhY2tBcmd1
bWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihtX3VybCk7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfY2FsbChtX3ZpZXcsICJ1cmwsY2hhbmdlZCIsIGNvbnN0X2Nhc3Q8Y2hh
cio+KGNhbGxiYWNrQXJndW1lbnQpKTsKIAogICAgIC8vIFVwZGF0ZSB0aGUgdmlldydzIGZhdmlj
b24uCkBAIC05MTIsMyArMTAxMSw3NCBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpjbG9zZVBhZ2UoKQog
ewogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAiY2xvc2Usd2lu
ZG93IiwgMCk7CiB9CisKK3ZvaWQgRXdrVmlld0ltcGw6Om9uTW91c2VEb3duKHZvaWQqIGRhdGEs
IEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50
X01vdXNlX0Rvd24qIGRvd25FdmVudCA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfRG93
bio+KGV2ZW50SW5mbyk7CisgICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2Fz
dDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk4oc2QtPmFwaSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+
bW91c2VfZG93bik7CisgICAgc2QtPmFwaS0+bW91c2VfZG93bihzZCwgZG93bkV2ZW50KTsKK30K
Kwordm9pZCBFd2tWaWV3SW1wbDo6b25Nb3VzZVVwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09i
amVjdCosIHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX1VwKiB1cEV2
ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9VcCo+KGV2ZW50SW5mbyk7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfdXApOworICAgIHNkLT5h
cGktPm1vdXNlX3VwKHNkLCB1cEV2ZW50KTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6b25Nb3Vz
ZU1vdmUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKQor
eworICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZh
c19FdmVudF9Nb3VzZV9Nb3ZlKj4oZXZlbnRJbmZvKTsKKyAgICBFd2tfVmlld19TbWFydF9EYXRh
KiBzZCA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKKyAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzZC0+YXBpKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxM
X1JFVFVSTihzZC0+YXBpLT5tb3VzZV9tb3ZlKTsKKyAgICBzZC0+YXBpLT5tb3VzZV9tb3ZlKHNk
LCBtb3ZlRXZlbnQpOworfQorCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKK3ZvaWQgRXdrVmll
d0ltcGw6OmZlZWRUb3VjaEV2ZW50cyhFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQoreworICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CisKKyAgICB1bnNpZ25lZCBj
b3VudCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9jb3VudChzZC0+YmFzZS5ldmFzKTsKKyAgICBp
ZiAoIWNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBFaW5hX0xpc3QqIHBvaW50cyA9IDA7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgRXdr
X1RvdWNoX1BvaW50KiBwb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7CisgICAgICAgIHBvaW50
LT5pZCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfaWRfZ2V0KHNkLT5iYXNlLmV2YXMsIGkp
OworICAgICAgICBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3h5X2dldChzZC0+YmFzZS5ldmFz
LCBpLCAmcG9pbnQtPngsICZwb2ludC0+eSk7CisgICAgICAgIHBvaW50LT5zdGF0ZSA9IGV2YXNf
dG91Y2hfcG9pbnRfbGlzdF9udGhfc3RhdGVfZ2V0KHNkLT5iYXNlLmV2YXMsIGkpOworICAgICAg
ICBwb2ludHMgPSBlaW5hX2xpc3RfYXBwZW5kKHBvaW50cywgcG9pbnQpOworICAgIH0KKworICAg
IGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQobV92aWV3LCB0eXBlLCBwb2ludHMsIGV2YXNfa2V5
X21vZGlmaWVyX2dldChzZC0+YmFzZS5ldmFzKSk7CisKKyAgICB2b2lkKiBkYXRhOworICAgIEVJ
TkFfTElTVF9GUkVFKHBvaW50cywgZGF0YSkKKyAgICAgICAgZGVsZXRlIHN0YXRpY19jYXN0PEV3
a19Ub3VjaF9Qb2ludCo+KGRhdGEpOworfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpvblRvdWNoRG93
bih2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2JqZWN0KiBld2tW
aWV3LCB2b2lkKiAvKiBldmVudEluZm8gKi8pCit7CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBs
ID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0KGV3a1ZpZXcpOworICAgIHZpZXdJbXBsLT5m
ZWVkVG91Y2hFdmVudHMoRVdLX1RPVUNIX1NUQVJUKTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6
b25Ub3VjaFVwKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLykKK3sKKyAgICBFd2tWaWV3SW1wbCog
dmlld0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QoZXdrVmlldyk7CisgICAgdmll
d0ltcGwtPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9VQ0hfRU5EKTsKK30KKwordm9pZCBFd2tWaWV3
SW1wbDo6b25Ub3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBF
dmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQoreworICAgIEV3a1Zp
ZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChld2tWaWV3KTsK
KyAgICB2aWV3SW1wbC0+ZmVlZFRvdWNoRXZlbnRzKEVXS19UT1VDSF9NT1ZFKTsKK30KKyNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKaW5k
ZXggZWY2MzIwNy4uZjg0M2ZlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvRXdrVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L2VmbC9Fd2tWaWV3SW1wbC5oCkBAIC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAorI2lmIEVOQUJMRShUT1VD
SF9FVkVOVFMpCisjaW5jbHVkZSAiZXdrX3RvdWNoLmgiCisjZW5kaWYKKwogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICNpbmNsdWRlIDxFdmFzX0dMLmg+CiAjZW5kaWYKQEAgLTcx
LDYgKzc1LDcgQEAgY2xhc3MgV2ViUG9wdXBNZW51UHJveHlFZmw7CiB9CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIENvbG9yOwogY2xhc3MgQ3Vyc29yOwogY2xhc3MgSW50UmVjdDsKIGNs
YXNzIEludFNpemU7CkBAIC0xMDEsMTMgKzEwNiwzOCBAQCBwdWJsaWM6CiAgICAgaW5saW5lIEV2
YXNfT2JqZWN0KiB2aWV3KCkgeyByZXR1cm4gbV92aWV3OyB9CiAgICAgV0tQYWdlUmVmIHdrUGFn
ZSgpOwogICAgIGlubGluZSBXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSgpIHsgcmV0dXJuIHBh
Z2VQcm94eS5nZXQoKTsgfQorICAgIEV3a19Db250ZXh0KiBld2tDb250ZXh0KCkgeyByZXR1cm4g
Y29udGV4dC5nZXQoKTsgfQorICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MoKSB7IHJldHVybiBt
X3NldHRpbmdzLmdldCgpOyB9CiAKICAgICBXZWJDb3JlOjpJbnRTaXplIHNpemUoKSBjb25zdDsK
KyAgICBib29sIGZvY3VzZWQoKSBjb25zdDsKKyAgICBib29sIHZpc2libGUoKSBjb25zdDsKKwor
ICAgIGNvbnN0IGNoYXIqIHVybCgpIGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgY29uc3Qg
Y2hhciogZmF2aWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fZmF2aWNvblVSTDsgfQorICAgIGNv
bnN0IGNoYXIqIHRpdGxlKCkgY29uc3Q7CisgICAgRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRl
eHQoKTsKKworICAgIGNvbnN0IGNoYXIqIHRoZW1lUGF0aCgpIGNvbnN0OworICAgIHZvaWQgc2V0
VGhlbWVQYXRoKGNvbnN0IGNoYXIqIHRoZW1lKTsKKyAgICBjb25zdCBjaGFyKiBjdXN0b21UZXh0
RW5jb2RpbmdOYW1lKCkgY29uc3Q7CisgICAgdm9pZCBzZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1l
KGNvbnN0IGNoYXIqIGVuY29kaW5nKTsKKworICAgIGJvb2wgbW91c2VFdmVudHNFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9tb3VzZUV2ZW50c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldE1vdXNl
RXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisg
ICAgYm9vbCB0b3VjaEV2ZW50c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3RvdWNoRXZlbnRz
RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0VG91Y2hFdmVudHNFbmFibGVkKGJvb2wgZW5hYmxlZCk7
CisjZW5kaWYKIAogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYgY3Vy
c29yKTsKICAgICB2b2lkIHJlZHJhd1JlZ2lvbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
KTsKICAgICB2b2lkIHNldEltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNvbnN0IFdlYkNvcmU6
OkludFNpemUmIHNpemUpOwogCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAgYm9v
bCBzZXRDb2xvclBpY2tlckNvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9yJiBjb2xvcik7CisjZW5k
aWYKKwogICAgIHN0YXRpYyB2b2lkIGFkZFRvUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3Qq
IGV3a1ZpZXcpOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUZyb21QYWdlVmlld01hcChjb25zdCBF
dmFzX09iamVjdCogZXdrVmlldyk7CiAgICAgc3RhdGljIGNvbnN0IEV2YXNfT2JqZWN0KiB2aWV3
RnJvbVBhZ2VWaWV3TWFwKGNvbnN0IFdLUGFnZVJlZik7CkBAIC0xOTQsMzIgKzIyNCwxMiBAQCBw
dWJsaWM6CiAgICAgT3duUHRyPFdlYktpdDo6RmluZENsaWVudEVmbD4gZmluZENsaWVudDsKICAg
ICBPd25QdHI8V2ViS2l0OjpGb3JtQ2xpZW50RWZsPiBmb3JtQ2xpZW50OwogCi0gICAgV0tFaW5h
U2hhcmVkU3RyaW5nIHVybDsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgdGl0bGU7Ci0gICAgV0tF
aW5hU2hhcmVkU3RyaW5nIHRoZW1lOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyBjdXN0b21FbmNv
ZGluZzsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgY3Vyc29yR3JvdXA7Ci0gICAgV0tFaW5hU2hh
cmVkU3RyaW5nIGZhdmljb25VUkw7Ci0gICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBjdXJzb3JPYmpl
Y3Q7CiAgICAgT3duUHRyPEV3a19CYWNrX0ZvcndhcmRfTGlzdD4gYmFja0ZvcndhcmRMaXN0Owot
ICAgIE93blB0cjxFd2tfU2V0dGluZ3M+IHNldHRpbmdzOwotICAgIGJvb2wgYXJlTW91c2VFdmVu
dHNFbmFibGVkOwotICAgIFdLUmV0YWluUHRyPFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lclJl
Zj4gY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lcjsKICAgICBSZWZQdHI8RXdrX0NvbnRleHQ+IGNv
bnRleHQ7Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBib29sIGFyZVRvdWNoRXZlbnRz
RW5hYmxlZDsKLSNlbmRpZgogCiAgICAgV2ViS2l0OjpXZWJQb3B1cE1lbnVQcm94eUVmbCogcG9w
dXBNZW51UHJveHk7CiAgICAgRWluYV9MaXN0KiBwb3B1cE1lbnVJdGVtczsKIAotICAgIEVjb3Jl
X0lNRl9Db250ZXh0KiBpbWZDb250ZXh0OwotICAgIGJvb2wgaXNJbWZGb2N1c2VkOwotCi0jaWZk
ZWYgSEFWRV9FQ09SRV9YCi0gICAgYm9vbCBpc1VzaW5nRWNvcmVYOwotI2VuZGlmCi0KICNpZiBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgRXZhc19HTCogZXZhc0dsOwogICAgIEV2
YXNfR0xfQ29udGV4dCogZXZhc0dsQ29udGV4dDsKQEAgLTIyNyw5ICsyMzcsMzkgQEAgcHVibGlj
OgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRh
KCk7CisgICAgaW5saW5lIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSgpOworCisgICAg
c3RhdGljIFBhc3NPd25QdHI8RWNvcmVfSU1GX0NvbnRleHQ+IGNyZWF0ZUlNRkNvbnRleHQoRXdr
X1ZpZXdfU21hcnRfRGF0YSopOworICAgIHN0YXRpYyB2b2lkIG9uSU1GSW5wdXRTZXF1ZW5jZUNv
bXBsZXRlKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0Kiwgdm9pZCogZXZlbnRJbmZvKTsK
KyAgICBzdGF0aWMgdm9pZCBvbklNRlByZWVkaXRTZXF1ZW5jZUNoYW5nZWQodm9pZCogZGF0YSwg
RWNvcmVfSU1GX0NvbnRleHQqLCB2b2lkKiBldmVudEluZm8pOworCisgICAgc3RhdGljIHZvaWQg
b25Nb3VzZURvd24odm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJ
bmZvKTsKKyAgICBzdGF0aWMgdm9pZCBvbk1vdXNlVXAodm9pZCogZGF0YSwgRXZhcyosIEV2YXNf
T2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBvbk1vdXNlTW92ZSh2
b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pOworI2lmIEVO
QUJMRShUT1VDSF9FVkVOVFMpCisgICAgdm9pZCBmZWVkVG91Y2hFdmVudHMoRXdrX1RvdWNoX0V2
ZW50X1R5cGUgdHlwZSk7CisgICAgc3RhdGljIHZvaWQgb25Ub3VjaERvd24odm9pZCogLyogZGF0
YSAqLywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyog
ZXZlbnRJbmZvICovKTsKKyAgICBzdGF0aWMgdm9pZCBvblRvdWNoVXAodm9pZCogLyogZGF0YSAq
LywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZl
bnRJbmZvICovKTsKKyAgICBzdGF0aWMgdm9pZCBvblRvdWNoTW92ZSh2b2lkKiAvKiBkYXRhICov
LCBFdmFzKiAvKiBjYW52YXMgKi8sIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiAvKiBldmVu
dEluZm8gKi8pOworI2VuZGlmCiAKICAgICBFdmFzX09iamVjdCogbV92aWV3OworICAgIE93blB0
cjxFd2tfU2V0dGluZ3M+IG1fc2V0dGluZ3M7CisgICAgT3duUHRyPEVjb3JlX0lNRl9Db250ZXh0
PiBtX2ltZkNvbnRleHQ7CisgICAgYm9vbCBtX2lzSW1mRm9jdXNlZDsKKyAgICBSZWZQdHI8RXZh
c19PYmplY3Q+IG1fY3Vyc29yT2JqZWN0OworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX2N1cnNv
ckdyb3VwOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX2Zhdmljb25VUkw7CisgICAgV0tFaW5h
U2hhcmVkU3RyaW5nIG1fdXJsOworICAgIG11dGFibGUgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0
bGU7CisgICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGhlbWU7CisgICAgbXV0YWJsZSBXS0VpbmFT
aGFyZWRTdHJpbmcgbV9jdXN0b21FbmNvZGluZzsKKyAgICBib29sIG1fbW91c2VFdmVudHNFbmFi
bGVkOworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBtX3RvdWNoRXZlbnRzRW5h
YmxlZDsKKyNlbmRpZgorICAgIFdLUmV0YWluUHRyPFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clJlZj4gbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyOworCiAgICAgdHlwZWRlZiBIYXNoTWFw
PFdLUGFnZVJlZiwgY29uc3QgRXZhc19PYmplY3QqPiBQYWdlVmlld01hcDsKICAgICBzdGF0aWMg
UGFnZVZpZXdNYXAgcGFnZVZpZXdNYXA7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IDUzN2Y0ZTAuLjNhMzFjZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAKQEAgLTk4LDEyICs5OCwxMiBAQCBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdX
aW5kb3dBY3RpdmUoKQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdGb2N1c2VkKCkKIHsK
LSAgICByZXR1cm4gZXZhc19vYmplY3RfZm9jdXNfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7Cisg
ICAgcmV0dXJuIG1fdmlld0ltcGwtPmZvY3VzZWQoKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0
KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgcmV0dXJuIG1fdmlld0ltcGwtPnZpc2libGUoKTsK
IH0KIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3SW5XaW5kb3coKQpAQCAtMTI0LDcgKzEy
NCw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnByb2Nlc3NEaWRDcmFzaCgpCiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZFJlbGF1bmNoUHJvY2VzcygpCiB7Ci0gICAgY29uc3QgY2hhciogdGhl
bWVQYXRoID0gZXdrX3ZpZXdfdGhlbWVfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgY29u
c3QgY2hhciogdGhlbWVQYXRoID0gbV92aWV3SW1wbC0+dGhlbWVQYXRoKCk7CiAgICAgaWYgKHRo
ZW1lUGF0aCkKICAgICAgICAgbV92aWV3SW1wbC0+cGFnZSgpLT5zZXRUaGVtZVBhdGgodGhlbWVQ
YXRoKTsKIH0KQEAgLTMwMyw3ICszMDMsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjp1cGRhdGVU
ZXh0SW5wdXRTdGF0ZSgpCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmhhbmRsZURvd25sb2FkUmVx
dWVzdChEb3dubG9hZFByb3h5KiBkb3dubG9hZCkKIHsKLSAgICBFd2tfQ29udGV4dCogY29udGV4
dCA9IGV3a192aWV3X2NvbnRleHRfZ2V0KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgRXdrX0Nv
bnRleHQqIGNvbnRleHQgPSBtX3ZpZXdJbXBsLT5ld2tDb250ZXh0KCk7CiAgICAgY29udGV4dC0+
ZG93bmxvYWRNYW5hZ2VyKCktPnJlZ2lzdGVyRG93bmxvYWQoZG93bmxvYWQsIG1fdmlld0ltcGwp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tf
c2V0dGluZ3NfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X3NldHRpbmdzX3ByaXZhdGUuaAppbmRleCAyNDRmOTU3Li5lYTI5YTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfc2V0dGluZ3NfcHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5nc19wcml2YXRl
LmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpZm5kZWYgZXdrX3NldHRpbmdzX3ByaXZhdGVfaAogI2Rl
ZmluZSBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCiAKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBX
ZWJQcmVmZXJlbmNlczsKQEAgLTM5LDE2ICszOSwyMSBAQCBjbGFzcyBFd2tWaWV3SW1wbDsKICAq
LwogY2xhc3MgRXdrX1NldHRpbmdzIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBFd2tfU2V0dGlu
Z3MoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQotICAgICAgICA6IG1fdmlld0ltcGwodmlld0ltcGwp
CisgICAgc3RhdGljIFBhc3NPd25QdHI8RXdrX1NldHRpbmdzPiBjcmVhdGUoRXdrVmlld0ltcGwq
IHZpZXdJbXBsKQogICAgIHsKLSAgICAgICAgQVNTRVJUKG1fdmlld0ltcGwpOworICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IEV3a19TZXR0aW5ncyh2aWV3SW1wbCkpOwogICAgIH0KIAogICAg
IGNvbnN0IFdlYktpdDo6V2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAgICAg
V2ViS2l0OjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKTsKIAogcHJpdmF0ZToKKyAgICBl
eHBsaWNpdCBFd2tfU2V0dGluZ3MoRXdrVmlld0ltcGwqIHZpZXdJbXBsKQorICAgICAgICA6IG1f
dmlld0ltcGwodmlld0ltcGwpCisgICAgeworICAgICAgICBBU1NFUlQobV92aWV3SW1wbCk7Cisg
ICAgfQorCiAgICAgRXdrVmlld0ltcGwqIG1fdmlld0ltcGw7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKaW5kZXggYjhiZTY3NC4uZDFiOWM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcApA
QCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlBhZ2VVSUNsaWVudEVmbC5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZENsaWVudEVmbC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1
ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIldLRWluYVNoYXJl
ZFN0cmluZy5oIgogI2luY2x1ZGUgIldLRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJXS1JldGFp
blB0ci5oIgpAQCAtMjE3LDggKzIxNiw5IEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3Nt
YXJ0X21vdXNlX3VwKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QKICAgICBp
bXBsLT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2
ZW50LCAmcG9zaXRpb24pKTsKICNlbmRpZgogCi0gICAgaWYgKGltcGwtPmltZkNvbnRleHQpCi0g
ICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X3Jlc2V0KGltcGwtPmltZkNvbnRleHQpOworICAgIEVj
b3JlX0lNRl9Db250ZXh0KiBpbWZDb250ZXh0ID0gaW1wbC0+aW1mQ29udGV4dCgpOworICAgIGlm
IChpbWZDb250ZXh0KQorICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChpbWZDb250ZXh0
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMjQzLDExICsyNDMsMTIgQEAgc3RhdGljIEVp
bmFfQm9vbCBfZXdrX3ZpZXdfc21hcnRfa2V5X2Rvd24oRXdrX1ZpZXdfU21hcnRfRGF0YSogc21h
cnREYXRhLCBjb25zdAogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEs
IGltcGwsIGZhbHNlKTsKIAogICAgIGJvb2wgaXNGaWx0ZXJlZCA9IGZhbHNlOwotICAgIGlmIChp
bXBsLT5pbWZDb250ZXh0KSB7CisgICAgRWNvcmVfSU1GX0NvbnRleHQqIGltZkNvbnRleHQgPSBp
bXBsLT5pbWZDb250ZXh0KCk7CisgICAgaWYgKGltZkNvbnRleHQpIHsKICAgICAgICAgRWNvcmVf
SU1GX0V2ZW50IGltZkV2ZW50OwogICAgICAgICBlY29yZV9pbWZfZXZhc19ldmVudF9rZXlfZG93
bl93cmFwKGNvbnN0X2Nhc3Q8RXZhc19FdmVudF9LZXlfRG93bio+KGRvd25FdmVudCksICZpbWZF
dmVudC5rZXlfZG93bik7CiAKLSAgICAgICAgaXNGaWx0ZXJlZCA9IGVjb3JlX2ltZl9jb250ZXh0
X2ZpbHRlcl9ldmVudChpbXBsLT5pbWZDb250ZXh0LCBFQ09SRV9JTUZfRVZFTlRfS0VZX0RPV04s
ICZpbWZFdmVudCk7CisgICAgICAgIGlzRmlsdGVyZWQgPSBlY29yZV9pbWZfY29udGV4dF9maWx0
ZXJfZXZlbnQoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0VWRU5UX0tFWV9ET1dOLCAmaW1mRXZlbnQp
OwogICAgIH0KIAogICAgIGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlS2V5Ym9hcmRFdmVudChOYXRp
dmVXZWJLZXlib2FyZEV2ZW50KGRvd25FdmVudCwgaXNGaWx0ZXJlZCkpOwpAQCAtMjg4LDMzICsy
ODksNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2Vfd2hlZWwodm9pZCogZGF0YSwg
RXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbgogICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3Vz
ZV93aGVlbChzbWFydERhdGEsIHdoZWVsRXZlbnQpOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfb25fbW91c2VfZG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZm8pCi17Ci0gICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQgPSBzdGF0
aWNfY2FzdDxFdmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudEluZm8pOwotICAgIEV3a19WaWV3
X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEq
PihkYXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX2Rv
d24pOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9kb3duKHNtYXJ0RGF0YSwgZG93bkV2ZW50
KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3VwKHZvaWQqIGRhdGEsIEV2
YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsKLSAgICBFdmFzX0V2ZW50X01v
dXNlX1VwKiB1cEV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9VcCo+KGV2ZW50
SW5mbyk7Ci0gICAgRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8
RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNtYXJ0RGF0YS0+YXBpKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFy
dERhdGEtPmFwaS0+bW91c2VfdXApOwotICAgIHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV91cChzbWFy
dERhdGEsIHVwRXZlbnQpOwotfQotCi1zdGF0aWMgdm9pZCBfZXdrX3ZpZXdfb25fbW91c2VfbW92
ZSh2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17Ci0g
ICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlKiBtb3ZlRXZlbnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2
ZW50X01vdXNlX01vdmUqPihldmVudEluZm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBF
SU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGktPm1vdXNlX21vdmUpOwotICAgIHNtYXJ0
RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKHNtYXJ0RGF0YSwgbW92ZUV2ZW50KTsKLX0KLQogc3RhdGlj
IHZvaWQgX2V3a192aWV3X29uX2tleV9kb3duKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVj
dCosIHZvaWQqIGV2ZW50SW5mbykKIHsKICAgICBFdmFzX0V2ZW50X0tleV9Eb3duKiBkb3duRXZl
bnQgPSBzdGF0aWNfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4oZXZlbnRJbmZvKTsKQEAgLTM1
MSw0NyArMzI1LDYgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX2hpZGUodm9pZCogZGF0YSwg
RXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogLypldmVudEluZm8KICAgICBpbXBsLT5wYWdlUHJv
eHktPnZpZXdTdGF0ZURpZENoYW5nZShXZWJQYWdlUHJveHk6OlZpZXdJc1Zpc2libGUpOwogfQog
Ci0jaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLXN0YXRpYyBpbmxpbmUgdm9pZCBfZXdrX3ZpZXdf
ZmVlZF90b3VjaF9ldmVudF91c2luZ190b3VjaF9wb2ludF9saXN0X29mX2V2YXMoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcsIEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpCi17Ci0gICAgRVdLX1ZJRVdf
U0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEpOwotCi0gICAgdW5zaWduZWQgY291
bnQgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfY291bnQoc21hcnREYXRhLT5iYXNlLmV2YXMpOwot
ICAgIGlmICghY291bnQpCi0gICAgICAgIHJldHVybjsKLQotICAgIEVpbmFfTGlzdCogcG9pbnRz
ID0gMDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAg
ICBFd2tfVG91Y2hfUG9pbnQqIHBvaW50ID0gbmV3IEV3a19Ub3VjaF9Qb2ludDsKLSAgICAgICAg
cG9pbnQtPmlkID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9pZF9nZXQoc21hcnREYXRhLT5i
YXNlLmV2YXMsIGkpOwotICAgICAgICBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3h5X2dldChz
bWFydERhdGEtPmJhc2UuZXZhcywgaSwgJnBvaW50LT54LCAmcG9pbnQtPnkpOwotICAgICAgICBw
b2ludC0+c3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3N0YXRlX2dldChzbWFydERh
dGEtPmJhc2UuZXZhcywgaSk7Ci0gICAgICAgIHBvaW50cyA9IGVpbmFfbGlzdF9hcHBlbmQocG9p
bnRzLCBwb2ludCk7Ci0gICAgfQotCi0gICAgZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudChld2tW
aWV3LCB0eXBlLCBwb2ludHMsIGV2YXNfa2V5X21vZGlmaWVyX2dldChzbWFydERhdGEtPmJhc2Uu
ZXZhcykpOwotCi0gICAgdm9pZCogZGF0YTsKLSAgICBFSU5BX0xJU1RfRlJFRShwb2ludHMsIGRh
dGEpCi0gICAgICAgIGRlbGV0ZSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRhKTsK
LX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX3RvdWNoX2Rvd24odm9pZCogLyogZGF0YSAq
LywgRXZhcyogLyogY2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZl
bnRJbmZvICovKQotewotICAgIF9ld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50X3VzaW5nX3RvdWNo
X3BvaW50X2xpc3Rfb2ZfZXZhcyhld2tWaWV3LCBFV0tfVE9VQ0hfU1RBUlQpOwotfQotCi1zdGF0
aWMgdm9pZCBfZXdrX3ZpZXdfb25fdG91Y2hfdXAodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyog
Y2FudmFzICovLCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQot
ewotICAgIF9ld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50X3VzaW5nX3RvdWNoX3BvaW50X2xpc3Rf
b2ZfZXZhcyhld2tWaWV3LCBFV0tfVE9VQ0hfRU5EKTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192
aWV3X29uX3RvdWNoX21vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBF
dmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQotewotICAgIF9ld2tf
dmlld19mZWVkX3RvdWNoX2V2ZW50X3VzaW5nX3RvdWNoX3BvaW50X2xpc3Rfb2ZfZXZhcyhld2tW
aWV3LCBFV0tfVE9VQ0hfTU9WRSk7Ci19Ci0jZW5kaWYKLQogc3RhdGljIEV2YXNfU21hcnRfQ2xh
c3MgZ19wYXJlbnRTbWFydENsYXNzID0gRVZBU19TTUFSVF9DTEFTU19JTklUX05VTEw7CiAKIHN0
YXRpYyB2b2lkIF9ld2tfdmlld19pbXBsX2RlbChFd2tWaWV3SW1wbCogaW1wbCkKQEAgLTQzOSw4
ICszNzIsNiBAQCBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfc21hcnRfYWRkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3KQogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X21lbWJlcl9hZGQoc21hcnREYXRhLT5pbWFn
ZSwgZXdrVmlldyk7CiAgICAgZXZhc19vYmplY3Rfc2hvdyhzbWFydERhdGEtPmltYWdlKTsKIAot
ICAgIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX3NldChld2tWaWV3LCB0cnVlKTsKLQog
I2RlZmluZSBDT05ORUNUKHMsIGMpIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tW
aWV3LCBzLCBjLCBzbWFydERhdGEpCiAgICAgQ09OTkVDVChFVkFTX0NBTExCQUNLX0ZPQ1VTX0lO
LCBfZXdrX3ZpZXdfb25fZm9jdXNfaW4pOwogICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19GT0NV
U19PVVQsIF9ld2tfdmlld19vbl9mb2N1c19vdXQpOwpAQCAtNzUwLDcgKzY4MSw3IEBAIEV3a19D
b250ZXh0KiBld2tfdmlld19jb250ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
ICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAg
ICByZXR1cm4gaW1wbC0+Y29udGV4dC5nZXQoKTsKKyAgICByZXR1cm4gaW1wbC0+ZXdrQ29udGV4
dCgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfdXJsX3NldChFdmFzX09iamVjdCogZXdrVmll
dywgY29uc3QgY2hhciogdXJsKQpAQCAtNzcwLDcgKzcwMSw3IEBAIGNvbnN0IGNoYXIqIGV3a192
aWV3X3VybF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDApOwogCi0gICAgcmV0dXJuIGltcGwtPnVy
bDsKKyAgICByZXR1cm4gaW1wbC0+dXJsKCk7CiB9CiAKIGNvbnN0IGNoYXIgKmV3a192aWV3X2lj
b25fdXJsX2dldChjb25zdCBFdmFzX09iamVjdCAqZXdrVmlldykKQEAgLTc3OCw3ICs3MDksNyBA
QCBjb25zdCBjaGFyICpld2tfdmlld19pY29uX3VybF9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3
a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDAp
OwogCi0gICAgcmV0dXJuIGltcGwtPmZhdmljb25VUkw7CisgICAgcmV0dXJuIGltcGwtPmZhdmlj
b25VUkwoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3JlbG9hZChFdmFzX09iamVjdCogZXdr
VmlldykKQEAgLTgxOCw3ICs3NDksNyBAQCBFd2tfU2V0dGluZ3MqIGV3a192aWV3X3NldHRpbmdz
X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1Jf
UkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAgICByZXR1cm4gaW1wbC0+c2V0dGluZ3Mu
Z2V0KCk7CisgICAgcmV0dXJuIGltcGwtPnNldHRpbmdzKCk7CiB9CiAKIGNvbnN0IGNoYXIqIGV3
a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKQEAgLTgyNiwxMCAr
NzU3LDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfdGl0bGVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0
KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnRE
YXRhLCAwKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBs
LCAwKTsKIAotICAgIENTdHJpbmcgdGl0bGUgPSBpbXBsLT5wYWdlUHJveHktPnBhZ2VUaXRsZSgp
LnV0ZjgoKTsKLSAgICBpbXBsLT50aXRsZSA9IHRpdGxlLmRhdGEoKTsKLQotICAgIHJldHVybiBp
bXBsLT50aXRsZTsKKyAgICByZXR1cm4gaW1wbC0+dGl0bGUoKTsKIH0KIAogLyoqCkBAIC04OTEs
MTAgKzgxOSw3IEBAIHZvaWQgZXdrX3ZpZXdfdGhlbWVfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBjb25zdCBjaGFyKiBwYXRoKQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmll
dywgc21hcnREYXRhKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBpbXBsKTsKIAotICAgIGlmIChpbXBsLT50aGVtZSAhPSBwYXRoKSB7Ci0gICAgICAgIGltcGwt
PnRoZW1lID0gcGF0aDsKLSAgICAgICAgaW1wbC0+cGFnZVByb3h5LT5zZXRUaGVtZVBhdGgocGF0
aCk7Ci0gICAgfQorICAgIGltcGwtPnNldFRoZW1lUGF0aChwYXRoKTsKIH0KIAogY29uc3QgY2hh
ciogZXdrX3ZpZXdfdGhlbWVfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQpAQCAtOTAy
LDcgKzgyNyw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFzX09i
amVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNt
YXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwg
aW1wbCwgMCk7CiAKLSAgICByZXR1cm4gaW1wbC0+dGhlbWU7CisgICAgcmV0dXJuIGltcGwtPnRo
ZW1lUGF0aCgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfYmFjayhFdmFzX09iamVjdCogZXdr
VmlldykKQEAgLTk5NCwxMyArOTE5LDcgQEAgY29uc3QgY2hhciogZXdrX3ZpZXdfc2V0dGluZ19l
bmNvZGluZ19jdXN0b21fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAwKTsKIAotICAgIFN0cmluZyBj
dXN0b21FbmNvZGluZyA9IGltcGwtPnBhZ2VQcm94eS0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgp
OwotICAgIGlmIChjdXN0b21FbmNvZGluZy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgaW1wbC0+Y3VzdG9tRW5jb2RpbmcgPSBjdXN0b21FbmNvZGluZy51dGY4KCkuZGF0YSgp
OwotCi0gICAgcmV0dXJuIGltcGwtPmN1c3RvbUVuY29kaW5nOworICAgIHJldHVybiBpbXBsLT5j
dXN0b21UZXh0RW5jb2RpbmdOYW1lKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19zZXR0aW5n
X2VuY29kaW5nX2N1c3RvbV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIGVu
Y29kaW5nKQpAQCAtMTAwOCw4ICs5MjcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfc2V0dGluZ19l
bmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBjaGFyKgogICAg
IEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAg
ICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwog
Ci0gICAgaW1wbC0+Y3VzdG9tRW5jb2RpbmcgPSBlbmNvZGluZzsKLSAgICBpbXBsLT5wYWdlUHJv
eHktPnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoZW5jb2RpbmcgPyBlbmNvZGluZyA6IFN0cmlu
ZygpKTsKKyAgICBpbXBsLT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTA5NiwyMCArMTAxNCw3IEBAIEVpbmFfQm9vbCBld2tf
dmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFf
Qm9vbCBlbmFiCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERh
dGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsLCBmYWxzZSk7CiAKLSAgICBlbmFibGVkID0gISFlbmFibGVkOwotICAgIGlmIChpbXBsLT5h
cmVNb3VzZUV2ZW50c0VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBpbXBsLT5hcmVNb3VzZUV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOwotICAgIGlmIChlbmFi
bGVkKSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBF
VkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl9tb3VzZV9kb3duLCBzbWFydERh
dGEpOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmlldywgRVZB
U19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwLCBzbWFydERhdGEpOwot
ICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmlldywgRVZBU19DQUxM
QkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fbW91c2VfbW92ZSwgc21hcnREYXRhKTsKLSAg
ICB9IGVsc2UgewotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoZXdrVmll
dywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93bik7Ci0g
ICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChld2tWaWV3LCBFVkFTX0NBTExC
QUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fbW91c2VfdXApOwotICAgICAgICBldmFzX29iamVj
dF9ldmVudF9jYWxsYmFja19kZWwoZXdrVmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBf
ZXdrX3ZpZXdfb25fbW91c2VfbW92ZSk7Ci0gICAgfQorICAgIGltcGwtPnNldE1vdXNlRXZlbnRz
RW5hYmxlZCghIWVuYWJsZWQpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMTE5LDcgKzEw
MjQsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdr
Vmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJO
KHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgcmV0dXJuIGltcGwtPmFyZU1vdXNlRXZl
bnRzRW5hYmxlZDsKKyAgICByZXR1cm4gaW1wbC0+bW91c2VFdmVudHNFbmFibGVkKCk7CiB9CiAK
IEVpbmFfQm9vbCBld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBpbnQgciwgaW50IGcsIGludCBiLCBpbnQgYSkKQEAgLTExMjcsMTQgKzEwMzIsOCBA
QCBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgaW50IHIsIGludCBnLCBpbgogI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NPTE9SKQog
ICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7
CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2Up
OwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChpbXBsLT5jb2xvclBpY2tlclJl
c3VsdExpc3RlbmVyLCBmYWxzZSk7Ci0KLSAgICBXZWJDb3JlOjpDb2xvciBjb2xvciA9IFdlYkNv
cmU6OkNvbG9yKHIsIGcsIGIsIGEpOwotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBjb2xv
clN0cmluZyhBZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb2xvci5zZXJp
YWxpemVkKCkudXRmOCgpLmRhdGEoKSkpOwotICAgIFdLQ29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5l
clNldENvbG9yKGltcGwtPmNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCksIGNvbG9yU3Ry
aW5nLmdldCgpKTsKLSAgICBpbXBsLT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmNsZWFyKCk7
CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gaW1wbC0+c2V0Q29sb3JQaWNrZXJDb2xv
cihXZWJDb3JlOjpDb2xvcihyLCBnLCBiLCBhKSk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsK
ICNlbmRpZgpAQCAtMTE2NCwzMSArMTA2Myw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190b3VjaF9l
dmVudHNfZW5hYmxlZF9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIEVpbmFfQm9vbCBlbmFiCiAg
ICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsK
ICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7
CiAKLSAgICBlbmFibGVkID0gISFlbmFibGVkOwotICAgIGlmIChpbXBsLT5hcmVUb3VjaEV2ZW50
c0VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBpbXBsLT5h
cmVUb3VjaEV2ZW50c0VuYWJsZWQgPSBlbmFibGVkOwotICAgIGlmIChlbmFibGVkKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBXZSBoYXZlIHRvIGNvbm5lY3QgdG91Y2ggY2FsbGJhY2tzIHdpdGggbW91
c2UgYW5kIG11bHRpIGV2ZW50cwotICAgICAgICAvLyBiZWNhdXNlIHRoZSBFdmFzIGNyZWF0ZXMg
bW91c2UgZXZlbnRzIGZvciBmaXJzdCB0b3VjaCBhbmQgbXVsdGkgZXZlbnRzCi0gICAgICAgIC8v
IGZvciBzZWNvbmQgYW5kIHRoaXJkIHRvdWNoZXMuIEJlbG93IGNvZGVzIHNob3VsZCBiZSBmaXhl
ZCB3aGVuIHRoZSBFdmFzCi0gICAgICAgIC8vIHN1cHBvcnRzIHRoZSB0b3VjaCBldmVudHMuCi0g
ICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTc3
ODUgZm9yIGRldGFpbHMuCi0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChl
d2tWaWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl90b3VjaF9kb3du
LCBzbWFydERhdGEpOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdr
VmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX3RvdWNoX3VwLCBzbWFy
dERhdGEpOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmlldywg
RVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBfZXdrX3ZpZXdfb25fdG91Y2hfbW92ZSwgc21hcnRE
YXRhKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1ZpZXcsIEVW
QVNfQ0FMTEJBQ0tfTVVMVElfRE9XTiwgX2V3a192aWV3X29uX3RvdWNoX2Rvd24sIHNtYXJ0RGF0
YSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBFVkFT
X0NBTExCQUNLX01VTFRJX1VQLCBfZXdrX3ZpZXdfb25fdG91Y2hfdXAsIHNtYXJ0RGF0YSk7Ci0g
ICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tWaWV3LCBFVkFTX0NBTExC
QUNLX01VTFRJX01PVkUsIF9ld2tfdmlld19vbl90b3VjaF9tb3ZlLCBzbWFydERhdGEpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChld2tWaWV3
LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIF9ld2tfdmlld19vbl90b3VjaF9kb3duKTsKLSAg
ICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKGV3a1ZpZXcsIEVWQVNfQ0FMTEJB
Q0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl90b3VjaF91cCk7Ci0gICAgICAgIGV2YXNfb2JqZWN0
X2V2ZW50X2NhbGxiYWNrX2RlbChld2tWaWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX01PVkUsIF9l
d2tfdmlld19vbl90b3VjaF9tb3ZlKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJh
Y2tfZGVsKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTVVMVElfRE9XTiwgX2V3a192aWV3X29uX3Rv
dWNoX2Rvd24pOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoZXdrVmll
dywgRVZBU19DQUxMQkFDS19NVUxUSV9VUCwgX2V3a192aWV3X29uX3RvdWNoX3VwKTsKLSAgICAg
ICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tf
TVVMVElfTU9WRSwgX2V3a192aWV3X29uX3RvdWNoX21vdmUpOwotICAgIH0KKyAgICBpbXBsLT5z
ZXRUb3VjaEV2ZW50c0VuYWJsZWQoISFlbmFibGVkKTsKIAogICAgIHJldHVybiB0cnVlOwogI2Vs
c2UKQEAgLTEyMDIsNyArMTA3Nyw3IEBAIEVpbmFfQm9vbCBld2tfdmlld190b3VjaF9ldmVudHNf
ZW5hYmxlZF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIGZhbHNlKTsKICAgICBFV0tfVklFV19J
TVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKLSAgICByZXR1cm4g
aW1wbC0+YXJlVG91Y2hFdmVudHNFbmFibGVkOworICAgIHJldHVybiBpbXBsLT50b3VjaEV2ZW50
c0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCmlu
ZGV4IDg0YmEyYjMuLjgyZjgzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJveHlFZmwuY3BwCkBAIC05NywxMiArOTcsMTMgQEAgV2Vi
UGFnZVByb3h5KiBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1DcmVhdGVJbnNwZWN0b3JQYWdl
KCkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBtX2luc3BlY3RvclZpZXcgPSBld2tfdmlld19i
YXNlX2FkZChlY29yZV9ldmFzX2dldChtX2luc3BlY3RvcldpbmRvdyksIHRvQVBJKHBhZ2UoKS0+
cHJvY2VzcygpLT5jb250ZXh0KCkpLCB0b0FQSShpbnNwZWN0b3JQYWdlR3JvdXAoKSkpOwotICAg
IGV3a192aWV3X3RoZW1lX3NldChtX2luc3BlY3RvclZpZXcsIFRFU1RfVEhFTUVfRElSIi9kZWZh
dWx0LmVkaiIpOworICAgIEV3a1ZpZXdJbXBsKiBpbnNwZWN0b3JWaWV3SW1wbCA9IEV3a1ZpZXdJ
bXBsOjpmcm9tRXZhc09iamVjdChtX2luc3BlY3RvclZpZXcpOworICAgIGluc3BlY3RvclZpZXdJ
bXBsLT5zZXRUaGVtZVBhdGgoVEVTVF9USEVNRV9ESVIgIi9kZWZhdWx0LmVkaiIpOwogCi0gICAg
RXdrX1NldHRpbmdzKiBzZXR0aW5ncyA9IGV3a192aWV3X3NldHRpbmdzX2dldChtX2luc3BlY3Rv
clZpZXcpOworICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MgPSBpbnNwZWN0b3JWaWV3SW1wbC0+
c2V0dGluZ3MoKTsKICAgICBld2tfc2V0dGluZ3NfZmlsZV9hY2Nlc3NfZnJvbV9maWxlX3VybHNf
YWxsb3dlZF9zZXQoc2V0dGluZ3MsIHRydWUpOwogCi0gICAgcmV0dXJuIEV3a1ZpZXdJbXBsOjpm
cm9tRXZhc09iamVjdChtX2luc3BlY3RvclZpZXcpLT5wYWdlKCk7CisgICAgcmV0dXJuIGluc3Bl
Y3RvclZpZXdJbXBsLT5wYWdlKCk7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtT3BlbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170657</attachid>
            <date>2012-10-25 08:33:25 -0700</date>
            <delta_ts>2012-10-25 09:55:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100370_ewk_view_cism2.patch</filename>
            <type>text/plain</type>
            <size>46358</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggM2YwYjg2OC4uN2JhMzQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAxMi0xMC0yNSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGNocmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCisgICAgICAg
IFtFRkxdW1dLMl0gUmVtb3ZlIHNvbWUgQydpc20gZnJvbSBFd2tWaWV3CisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzNzAKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIE93blB0ciB1c2VhYmxlIGZv
ciBFY29yZV9JTUZfQ29udGV4dCB0byBhdm9pZAorICAgICAgICB1c2luZyByYXcgcG9pbnRlcnMg
aW4gRUZMIHBvcnQuCisKKyAgICAgICAgKiB3dGYvT3duUHRyQ29tbW9uLmg6CisgICAgICAgIChX
VEYpOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiB3dGYvZWZs
L093blB0ckVmbC5jcHA6CisgICAgICAgIChXVEY6OmRlbGV0ZU93bmVkUHRyKToKKyAgICAgICAg
KFdURik6CisKIDIwMTItMDktMjcgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcHJvdmlkZSBtZW1vcnkgaW5zdHJ1bWVudGF0
aW9uIGZvciBMaXN0SGFzaFNldApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvT3duUHRyQ29t
bW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAppbmRleCA0M2EzY2I3Li5mZTI1
MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9Pd25QdHJDb21tb24uaApAQCAtNDAsNiArNDAsNyBAQCB0eXBlZGVmIHN0cnVj
dCBIUkdOX18qIEhSR047CiAKICNpZiBQTEFURk9STShFRkwpCiB0eXBlZGVmIHN0cnVjdCBfRWNv
cmVfRXZhcyBFY29yZV9FdmFzOwordHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX0lNRl9Db250ZXh0IEVj
b3JlX0lNRl9Db250ZXh0OwogdHlwZWRlZiBzdHJ1Y3QgX0Vjb3JlX1BpcGUgRWNvcmVfUGlwZTsK
IHR5cGVkZWYgc3RydWN0IF9FY29yZV9UaW1lciBFY29yZV9UaW1lcjsKIHR5cGVkZWYgc3RydWN0
IF9FaW5hX0hhc2ggRWluYV9IYXNoOwpAQCAtNjgsNiArNjksNyBAQCBuYW1lc3BhY2UgV1RGIHsK
IAogI2lmIFBMQVRGT1JNKEVGTCkKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCBkZWxldGVP
d25lZFB0cihFY29yZV9FdmFzKik7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZGVsZXRl
T3duZWRQdHIoRWNvcmVfSU1GX0NvbnRleHQqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9p
ZCBkZWxldGVPd25lZFB0cihFY29yZV9QaXBlKik7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZv
aWQgZGVsZXRlT3duZWRQdHIoRWNvcmVfVGltZXIqKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUg
dm9pZCBkZWxldGVPd25lZFB0cihFaW5hX0hhc2gqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UK
aW5kZXggMmQ2NjNmYS4uNzNkNTdlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvUGxhdGZv
cm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dURi93dGYvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTIx
LDYgKzIxLDcgQEAgTElTVChBUFBFTkQgV1RGX0xJQlJBUklFUwogICAgICR7SUNVX0kxOE5fTElC
UkFSSUVTfQogICAgICR7RUNPUkVfTElCUkFSSUVTfQogICAgICR7RUNPUkVfRVZBU19MSUJSQVJJ
RVN9CisgICAgJHtFQ09SRV9JTUZfTElCUkFSSUVTfQogICAgICR7RUlOQV9MSUJSQVJJRVN9CiAg
ICAgJHtFVkFTX0xJQlJBUklFU30KICAgICAke0NNQUtFX0RMX0xJQlN9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi9lZmwvT3duUHRyRWZsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25Q
dHJFZmwuY3BwCmluZGV4IGM2Y2E1ZTIuLmI3NjQyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2VmbC9Pd25QdHJFZmwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2VmbC9Pd25QdHJFZmwu
Y3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlIDxFY29yZS5oPgogI2luY2x1ZGUgPEVj
b3JlX0V2YXMuaD4KKyNpbmNsdWRlIDxFY29yZV9JTUYuaD4KICNpbmNsdWRlIDxFaW5hLmg+CiAj
aW5jbHVkZSA8RXZhcy5oPgogCkBAIC02NCw0ICs2NSwxMCBAQCB2b2lkIGRlbGV0ZU93bmVkUHRy
KEVjb3JlX1RpbWVyKiBwdHIpCiAgICAgICAgIGVjb3JlX3RpbWVyX2RlbChwdHIpOwogfQogCit2
b2lkIGRlbGV0ZU93bmVkUHRyKEVjb3JlX0lNRl9Db250ZXh0KiBwdHIpCit7CisgICAgaWYgKHB0
cikKKyAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfZGVsKHB0cik7Cit9CisKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCBlMmE2M2Y1Li5lYzdhZDIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsODkgQEAKIDIwMTIt
MTAtMjUgIENocmlzdG9waGUgRHVtZXogIDxjaHJpc3RvcGhlLmR1bWV6QGludGVsLmNvbT4KIAor
ICAgICAgICBbRUZMXVtXSzJdIFJlbW92ZSBzb21lIEMnaXNtIGZyb20gRXdrVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMzcwCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGEgbG90IG9m
IEMnaXNtIGZyb20gRXdrVmlldzoKKyAgICAgICAgLSBNYWtlIG1vcmUgbWVtYmVycyBwcml2YXRl
IGFuZCBhZGQgQysrIG1ldGhvZHMgdG8KKyAgICAgICAgRXdrVmlld0ltcGwgZm9yIHRoZSBwdWJs
aWMgQyBBUEkgdG8gdXNlCisgICAgICAgIC0gVXNlIHNtYXJ0IHBvaW50ZXJzIHdoZW4gcG9zc2li
bGUgaW5zdGVhZCBvZiByYXcKKyAgICAgICAgb25lcworICAgICAgICAtIFVzZSBDKysgbmFtaW5n
IGNvbnZlbnRpb25zIGZvciBjYWxsYmFjayBmdW5jdGlvbnMKKyAgICAgICAgYW5kIGRlZmluZSB0
aGVtIGFzIHN0YXRpYyBtZXRob2RzIGluIEV3a1ZpZXdJbXBsLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uSU1G
SW5wdXRTZXF1ZW5jZUNvbXBsZXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvbklNRlByZWVk
aXRTZXF1ZW5jZUNoYW5nZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OmNyZWF0ZUlNRkNvbnRl
eHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OkV3a1ZpZXdJbXBsKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjp+RXdrVmlld0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldEN1cnNvcik6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0Q29sb3JQaWNrZXJDb2xvcik6CisgICAgICAgIChF
d2tWaWV3SW1wbDo6aXNGb2N1c2VkKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppc1Zpc2libGUp
OgorICAgICAgICAoRXdrVmlld0ltcGw6OnRpdGxlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpp
bnB1dE1ldGhvZENvbnRleHQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnRoZW1lUGF0aCk6Cisg
ICAgICAgIChFd2tWaWV3SW1wbDo6c2V0VGhlbWVQYXRoKToKKyAgICAgICAgKEV3a1ZpZXdJbXBs
OjpjdXN0b21UZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRDdXN0
b21UZXh0RW5jb2RpbmdOYW1lKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpzZXRNb3VzZUV2ZW50
c0VuYWJsZWQpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnNldFRvdWNoRXZlbnRzRW5hYmxlZCk6
CisgICAgICAgIChFd2tWaWV3SW1wbDo6aW5mb3JtSWNvbkNoYW5nZSk6CisgICAgICAgIChFd2tW
aWV3SW1wbDo6cmVxdWVzdENvbG9yUGlja2VyKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpkaXNt
aXNzQ29sb3JQaWNrZXIpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnVwZGF0ZVRleHRJbnB1dFN0
YXRlKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjppbmZvcm1VUkxDaGFuZ2UpOgorICAgICAgICAo
RXdrVmlld0ltcGw6Om9uTW91c2VEb3duKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvbk1vdXNl
VXApOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uTW91c2VNb3ZlKToKKyAgICAgICAgKEV3a1Zp
ZXdJbXBsOjpmZWVkVG91Y2hFdmVudHMpOgorICAgICAgICAoRXdrVmlld0ltcGw6Om9uVG91Y2hE
b3duKToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjpvblRvdWNoVXApOgorICAgICAgICAoRXdrVmll
d0ltcGw6Om9uVG91Y2hNb3ZlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6ZXdrQ29u
dGV4dCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6c2V0dGluZ3MpOgorICAgICAgICAoRXdrVmll
d0ltcGwpOgorICAgICAgICAoRXdrVmlld0ltcGw6OnVybCk6CisgICAgICAgIChFd2tWaWV3SW1w
bDo6ZmF2aWNvblVSTCk6CisgICAgICAgIChFd2tWaWV3SW1wbDo6bW91c2VFdmVudHNFbmFibGVk
KToKKyAgICAgICAgKEV3a1ZpZXdJbXBsOjp0b3VjaEV2ZW50c0VuYWJsZWQpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmlzVmlld0ZvY3VzZWQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xp
ZW50SW1wbDo6aXNWaWV3VmlzaWJsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBs
OjpkaWRSZWxhdW5jaFByb2Nlc3MpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
aGFuZGxlRG93bmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
c2V0dGluZ3NfcHJpdmF0ZS5oOgorICAgICAgICAoRXdrX1NldHRpbmdzOjpjcmVhdGUpOgorICAg
ICAgICAoRXdrX1NldHRpbmdzOjpFd2tfU2V0dGluZ3MpOgorICAgICAgICAoRXdrX1NldHRpbmdz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X2tleV9k
b3duKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9hZGQpOgorICAgICAgICAoZXdrX3ZpZXdf
Y29udGV4dF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfdXJsX2dldCk6CisgICAgICAgIChld2tf
dmlld19pY29uX3VybF9nZXQpOgorICAgICAgICAoZXdrX3ZpZXdfc2V0dGluZ3NfZ2V0KToKKyAg
ICAgICAgKGV3a192aWV3X3RpdGxlX2dldCk6CisgICAgICAgIChld2tfdmlld190aGVtZV9zZXQp
OgorICAgICAgICAoZXdrX3ZpZXdfdGhlbWVfZ2V0KToKKyAgICAgICAgKGV3a192aWV3X3NldHRp
bmdfZW5jb2RpbmdfY3VzdG9tX2dldCk6CisgICAgICAgIChld2tfdmlld19zZXR0aW5nX2VuY29k
aW5nX2N1c3RvbV9zZXQpOgorICAgICAgICAoZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRf
c2V0KToKKyAgICAgICAgKGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dldCk6CisgICAg
ICAgIChld2tfdmlld19jb2xvcl9waWNrZXJfY29sb3Jfc2V0KToKKyAgICAgICAgKGV3a192aWV3
X3RvdWNoX2V2ZW50c19lbmFibGVkX3NldCk6CisgICAgICAgIChld2tfdmlld190b3VjaF9ldmVu
dHNfZW5hYmxlZF9nZXQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViSW5zcGVjdG9yUHJv
eHlFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1D
cmVhdGVJbnNwZWN0b3JQYWdlKToKKworMjAxMi0xMC0yNSAgQ2hyaXN0b3BoZSBEdW1leiAgPGNo
cmlzdG9waGUuZHVtZXpAaW50ZWwuY29tPgorCiAgICAgICAgIFtFRkxdW1dLMl0gTWVtb3J5IGxl
YWsgaW4gX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCgpCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDAzODAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuY3BwCmluZGV4IDI3Mjk1YzAuLjZiYjM2MWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3SW1wbC5j
cHAKQEAgLTMxLDYgKzMxLDggQEAKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2luY2x1ZGUg
IlJlc291cmNlTG9hZENsaWVudEVmbC5oIgorI2luY2x1ZGUgIldLQ29sb3JQaWNrZXJSZXN1bHRM
aXN0ZW5lci5oIgorI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlFZmwuaCIKICNpbmNsdWRlICJld2tfYmFj
a19mb3J3YXJkX2xpc3RfcHJpdmF0ZS5oIgpAQCAtNzcsMjIgKzc5LDIyIEBAIGNvbnN0IEV2YXNf
T2JqZWN0KiBFd2tWaWV3SW1wbDo6dmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1BhZ2VSZWYg
cGFnZSkKICAgICByZXR1cm4gcGFnZVZpZXdNYXAuZ2V0KHBhZ2UpOwogfQogCi1zdGF0aWMgdm9p
ZCBfZXdrX3ZpZXdfY29tbWl0KHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0Kiwgdm9pZCog
ZXZlbnRJbmZvKQordm9pZCBFd2tWaWV3SW1wbDo6b25JTUZJbnB1dFNlcXVlbmNlQ29tcGxldGUo
dm9pZCogZGF0YSwgRWNvcmVfSU1GX0NvbnRleHQqLCB2b2lkKiBldmVudEluZm8pCiB7CiAgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21h
cnRfRGF0YSo+KGRhdGEpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHZpZXdJbXBsKTsKLSAgICBpZiAoIWV2ZW50SW5mbyB8fCAhdmlld0ltcGwtPmlzSW1mRm9j
dXNlZCkKKyAgICBpZiAoIWV2ZW50SW5mbyB8fCAhdmlld0ltcGwtPm1faW5wdXRNZXRob2RDb250
ZXh0Rm9jdXNlZCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdmlld0ltcGwtPnBhZ2VQcm94eS0+
Y29uZmlybUNvbXBvc2l0aW9uKFN0cmluZzo6ZnJvbVVURjgoc3RhdGljX2Nhc3Q8Y2hhcio+KGV2
ZW50SW5mbykpKTsKIH0KIAotc3RhdGljIHZvaWQgX2V3a192aWV3X3ByZWVkaXRfY2hhbmdlZCh2
b2lkKiBkYXRhLCBFY29yZV9JTUZfQ29udGV4dCogY29udGV4dCwgdm9pZCopCit2b2lkIEV3a1Zp
ZXdJbXBsOjpvbklNRlByZWVkaXRTZXF1ZW5jZUNoYW5nZWQodm9pZCogZGF0YSwgRWNvcmVfSU1G
X0NvbnRleHQqIGNvbnRleHQsIHZvaWQqKQogewogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSA9IHN0YXRpY19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKICAgICBF
V0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCB2aWV3SW1wbCk7CiAKLSAgICBp
ZiAoIXZpZXdJbXBsLT5wYWdlUHJveHktPmZvY3VzZWRGcmFtZSgpIHx8ICF2aWV3SW1wbC0+aXNJ
bWZGb2N1c2VkKQorICAgIGlmICghdmlld0ltcGwtPnBhZ2VQcm94eS0+Zm9jdXNlZEZyYW1lKCkg
fHwgIXZpZXdJbXBsLT5tX2lucHV0TWV0aG9kQ29udGV4dEZvY3VzZWQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGNoYXIqIGJ1ZmZlciA9IDA7CkBAIC0xMDcsNzIgKzEwOSw1MiBAQCBzdGF0aWMg
dm9pZCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250
ZXh0KiBjb250ZXh0LCB2bwogICAgIHZpZXdJbXBsLT5wYWdlUHJveHktPnNldENvbXBvc2l0aW9u
KHByZWVkaXRTdHJpbmcsIHVuZGVybGluZXMsIDApOwogfQogCi1zdGF0aWMgdm9pZCBfZXdrX3Zp
ZXdfaW1mX2NvbnRleHRfZGVzdHJveShFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dCkKLXsK
LSAgICBpZiAoIWltZkNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGVjb3JlX2ltZl9j
b250ZXh0X2V2ZW50X2NhbGxiYWNrX2RlbChpbWZDb250ZXh0LCBFQ09SRV9JTUZfQ0FMTEJBQ0tf
UFJFRURJVF9DSEFOR0VELCBfZXdrX3ZpZXdfcHJlZWRpdF9jaGFuZ2VkKTsKLSAgICBlY29yZV9p
bWZfY29udGV4dF9ldmVudF9jYWxsYmFja19kZWwoaW1mQ29udGV4dCwgRUNPUkVfSU1GX0NBTExC
QUNLX0NPTU1JVCwgX2V3a192aWV3X2NvbW1pdCk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZGVs
KGltZkNvbnRleHQpOwotfQotCi1zdGF0aWMgRWNvcmVfSU1GX0NvbnRleHQqIF9ld2tfdmlld19p
bWZfY29udGV4dF9jcmVhdGUoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhKQorUGFzc093
blB0cjxFY29yZV9JTUZfQ29udGV4dD4gRXdrVmlld0ltcGw6OmNyZWF0ZUlNRkNvbnRleHQoRXdr
X1ZpZXdfU21hcnRfRGF0YSogc2QpCiB7CiAgICAgY29uc3QgY2hhciogZGVmYXVsdENvbnRleHRJ
RCA9IGVjb3JlX2ltZl9jb250ZXh0X2RlZmF1bHRfaWRfZ2V0KCk7CiAgICAgaWYgKCFkZWZhdWx0
Q29udGV4dElEKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dCA9IGVjb3JlX2ltZl9jb250ZXh0X2Fk
ZChkZWZhdWx0Q29udGV4dElEKTsKKyAgICBPd25QdHI8RWNvcmVfSU1GX0NvbnRleHQ+IGltZkNv
bnRleHQgPSBhZG9wdFB0cihlY29yZV9pbWZfY29udGV4dF9hZGQoZGVmYXVsdENvbnRleHRJRCkp
OwogICAgIGlmICghaW1mQ29udGV4dCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCi0gICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2FsbGJhY2tfYWRkKGlt
ZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19QUkVFRElUX0NIQU5HRUQsIF9ld2tfdmlld19w
cmVlZGl0X2NoYW5nZWQsIHNtYXJ0RGF0YSk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRf
Y2FsbGJhY2tfYWRkKGltZkNvbnRleHQsIEVDT1JFX0lNRl9DQUxMQkFDS19DT01NSVQsIF9ld2tf
dmlld19jb21taXQsIHNtYXJ0RGF0YSk7CisgICAgZWNvcmVfaW1mX2NvbnRleHRfZXZlbnRfY2Fs
bGJhY2tfYWRkKGltZkNvbnRleHQuZ2V0KCksIEVDT1JFX0lNRl9DQUxMQkFDS19QUkVFRElUX0NI
QU5HRUQsIG9uSU1GUHJlZWRpdFNlcXVlbmNlQ2hhbmdlZCwgc2QpOworICAgIGVjb3JlX2ltZl9j
b250ZXh0X2V2ZW50X2NhbGxiYWNrX2FkZChpbWZDb250ZXh0LmdldCgpLCBFQ09SRV9JTUZfQ0FM
TEJBQ0tfQ09NTUlULCBvbklNRklucHV0U2VxdWVuY2VDb21wbGV0ZSwgc2QpOwogCi0gICAgRWNv
cmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29yZV9ldmFzX2dldChzbWFydERhdGEt
PmJhc2UuZXZhcyk7Ci0gICAgZWNvcmVfaW1mX2NvbnRleHRfY2xpZW50X3dpbmRvd19zZXQoaW1m
Q29udGV4dCwgKHZvaWQqKWVjb3JlX2V2YXNfd2luZG93X2dldChlY29yZUV2YXMpKTsKLSAgICBl
Y29yZV9pbWZfY29udGV4dF9jbGllbnRfY2FudmFzX3NldChpbWZDb250ZXh0LCBzbWFydERhdGEt
PmJhc2UuZXZhcyk7CisgICAgRWNvcmVfRXZhcyogZWNvcmVFdmFzID0gZWNvcmVfZXZhc19lY29y
ZV9ldmFzX2dldChzZC0+YmFzZS5ldmFzKTsKKyAgICBlY29yZV9pbWZfY29udGV4dF9jbGllbnRf
d2luZG93X3NldChpbWZDb250ZXh0LmdldCgpLCByZWludGVycHJldF9jYXN0PHZvaWQqPihlY29y
ZV9ldmFzX3dpbmRvd19nZXQoZWNvcmVFdmFzKSkpOworICAgIGVjb3JlX2ltZl9jb250ZXh0X2Ns
aWVudF9jYW52YXNfc2V0KGltZkNvbnRleHQuZ2V0KCksIHNkLT5iYXNlLmV2YXMpOwogCi0gICAg
cmV0dXJuIGltZkNvbnRleHQ7CisgICAgcmV0dXJuIGltZkNvbnRleHQucmVsZWFzZSgpOwogfQog
CiBFd2tWaWV3SW1wbDo6RXdrVmlld0ltcGwoRXZhc19PYmplY3QqIHZpZXcpCi0gICAgOiBzZXR0
aW5ncyhhZG9wdFB0cihuZXcgRXdrX1NldHRpbmdzKHRoaXMpKSkKLSAgICAsIGFyZU1vdXNlRXZl
bnRzRW5hYmxlZChmYWxzZSkKLSNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgICwgYXJlVG91
Y2hFdmVudHNFbmFibGVkKGZhbHNlKQotI2VuZGlmCi0gICAgLCBwb3B1cE1lbnVQcm94eSgwKQor
ICAgIDogcG9wdXBNZW51UHJveHkoMCkKICAgICAsIHBvcHVwTWVudUl0ZW1zKDApCi0gICAgLCBp
bWZDb250ZXh0KDApCi0gICAgLCBpc0ltZkZvY3VzZWQoZmFsc2UpCi0jaWZkZWYgSEFWRV9FQ09S
RV9YCi0gICAgLCBpc1VzaW5nRWNvcmVYKGZhbHNlKQotI2VuZGlmCiAjaWYgVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQogICAgICwgZXZhc0dsKDApCiAgICAgLCBldmFzR2xDb250ZXh0KDAp
CiAgICAgLCBldmFzR2xTdXJmYWNlKDApCiAjZW5kaWYKICAgICAsIG1fdmlldyh2aWV3KQorICAg
ICwgbV9zZXR0aW5ncyhFd2tfU2V0dGluZ3M6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1faW5wdXRN
ZXRob2RDb250ZXh0KGNyZWF0ZUlNRkNvbnRleHQoc21hcnREYXRhKCkpKQorICAgICwgbV9pbnB1
dE1ldGhvZENvbnRleHRGb2N1c2VkKGZhbHNlKQorICAgICwgbV9tb3VzZUV2ZW50c0VuYWJsZWQo
ZmFsc2UpCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICAsIG1fdG91Y2hFdmVudHNFbmFi
bGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX2Rpc3BsYXlUaW1lcih0aGlzLCAmRXdrVmlld0lt
cGw6OmRpc3BsYXlUaW1lckZpcmVkKQogewogICAgIEFTU0VSVCh2aWV3KTsKLSAgICBFd2tfVmll
d19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwotICAgIEFTU0VSVChzZCk7Ci0KLSAgICBp
bWZDb250ZXh0ID0gX2V3a192aWV3X2ltZl9jb250ZXh0X2NyZWF0ZShzZCk7CiAKLSNpZmRlZiBI
QVZFX0VDT1JFX1gKLSAgICBpc1VzaW5nRWNvcmVYID0gV2ViQ29yZTo6aXNVc2luZ0Vjb3JlWChz
ZC0+YmFzZS5ldmFzKTsKLSNlbmRpZgorICAgIC8vIEVuYWJsZSBtb3VzZSBldmVudHMgYnkgZGVm
YXVsdAorICAgIHNldE1vdXNlRXZlbnRzRW5hYmxlZCh0cnVlKTsKIH0KIAogRXdrVmlld0ltcGw6
On5Fd2tWaWV3SW1wbCgpCiB7Ci0gICAgX2V3a192aWV3X2ltZl9jb250ZXh0X2Rlc3Ryb3koaW1m
Q29udGV4dCk7Ci0KICAgICB2b2lkKiBpdGVtOwogICAgIEVJTkFfTElTVF9GUkVFKHBvcHVwTWVu
dUl0ZW1zLCBpdGVtKQogICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX1BvcHVwX01lbnVf
SXRlbSo+KGl0ZW0pOwpAQCAtMjA2LDQ2ICsxODgsNDYgQEAgdm9pZCBFd2tWaWV3SW1wbDo6c2V0
Q3Vyc29yKGNvbnN0IEN1cnNvciYgY3Vyc29yKQogICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNk
ID0gc21hcnREYXRhKCk7CiAKICAgICBjb25zdCBjaGFyKiBncm91cCA9IGN1cnNvci5wbGF0Zm9y
bUN1cnNvcigpOwotICAgIGlmICghZ3JvdXAgfHwgZ3JvdXAgPT0gY3Vyc29yR3JvdXApCisgICAg
aWYgKCFncm91cCB8fCBncm91cCA9PSBtX2N1cnNvckdyb3VwKQogICAgICAgICByZXR1cm47CiAK
LSAgICBjdXJzb3JHcm91cCA9IGdyb3VwOwotICAgIGN1cnNvck9iamVjdCA9IGFkb3B0UmVmKGVk
amVfb2JqZWN0X2FkZChzZC0+YmFzZS5ldmFzKSk7CisgICAgbV9jdXJzb3JHcm91cCA9IGdyb3Vw
OworICAgIG1fY3Vyc29yT2JqZWN0ID0gYWRvcHRSZWYoZWRqZV9vYmplY3RfYWRkKHNkLT5iYXNl
LmV2YXMpKTsKIAogICAgIEVjb3JlX0V2YXMqIGVjb3JlRXZhcyA9IGVjb3JlX2V2YXNfZWNvcmVf
ZXZhc19nZXQoc2QtPmJhc2UuZXZhcyk7Ci0gICAgaWYgKCF0aGVtZSB8fCAhZWRqZV9vYmplY3Rf
ZmlsZV9zZXQoY3Vyc29yT2JqZWN0LmdldCgpLCB0aGVtZSwgZ3JvdXApKSB7Ci0gICAgICAgIGN1
cnNvck9iamVjdC5jbGVhcigpOworICAgIGlmICghbV90aGVtZSB8fCAhZWRqZV9vYmplY3RfZmls
ZV9zZXQobV9jdXJzb3JPYmplY3QuZ2V0KCksIG1fdGhlbWUsIGdyb3VwKSkgeworICAgICAgICBt
X2N1cnNvck9iamVjdC5jbGVhcigpOwogCiAgICAgICAgIGVjb3JlX2V2YXNfb2JqZWN0X2N1cnNv
cl9zZXQoZWNvcmVFdmFzLCAwLCAwLCAwLCAwKTsKICNpZmRlZiBIQVZFX0VDT1JFX1gKLSAgICAg
ICAgaWYgKGlzVXNpbmdFY29yZVgpCisgICAgICAgIGlmIChXZWJDb3JlOjppc1VzaW5nRWNvcmVY
KHNkLT5iYXNlLmV2YXMpKQogICAgICAgICAgICAgV2ViQ29yZTo6YXBwbHlGYWxsYmFja0N1cnNv
cihlY29yZUV2YXMsIGdyb3VwKTsKICNlbmRpZgogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgRXZhc19Db29yZCB3aWR0aCwgaGVpZ2h0OwotICAgIGVkamVfb2JqZWN0X3NpemVfbWluX2dl
dChjdXJzb3JPYmplY3QuZ2V0KCksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgZWRqZV9vYmplY3Rf
c2l6ZV9taW5fZ2V0KG1fY3Vyc29yT2JqZWN0LmdldCgpLCAmd2lkdGgsICZoZWlnaHQpOwogICAg
IGlmICh3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQotICAgICAgICBlZGplX29iamVjdF9zaXpl
X21pbl9jYWxjKGN1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAg
ZWRqZV9vYmplY3Rfc2l6ZV9taW5fY2FsYyhtX2N1cnNvck9iamVjdC5nZXQoKSwgJndpZHRoLCAm
aGVpZ2h0KTsKICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkgewogICAgICAgICB3
aWR0aCA9IGRlZmF1bHRDdXJzb3JTaXplOwogICAgICAgICBoZWlnaHQgPSBkZWZhdWx0Q3Vyc29y
U2l6ZTsKICAgICB9Ci0gICAgZXZhc19vYmplY3RfcmVzaXplKGN1cnNvck9iamVjdC5nZXQoKSwg
d2lkdGgsIGhlaWdodCk7CisgICAgZXZhc19vYmplY3RfcmVzaXplKG1fY3Vyc29yT2JqZWN0Lmdl
dCgpLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAgIGNvbnN0IGNoYXIqIGRhdGE7CiAgICAgaW50IGhv
dHNwb3RYID0gMDsKLSAgICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQoY3Vyc29yT2JqZWN0
LmdldCgpLCAiaG90LngiKTsKKyAgICBkYXRhID0gZWRqZV9vYmplY3RfZGF0YV9nZXQobV9jdXJz
b3JPYmplY3QuZ2V0KCksICJob3QueCIpOwogICAgIGlmIChkYXRhKQogICAgICAgICBob3RzcG90
WCA9IGF0b2koZGF0YSk7CiAKICAgICBpbnQgaG90c3BvdFkgPSAwOwotICAgIGRhdGEgPSBlZGpl
X29iamVjdF9kYXRhX2dldChjdXJzb3JPYmplY3QuZ2V0KCksICJob3QueSIpOworICAgIGRhdGEg
PSBlZGplX29iamVjdF9kYXRhX2dldChtX2N1cnNvck9iamVjdC5nZXQoKSwgImhvdC55Iik7CiAg
ICAgaWYgKGRhdGEpCiAgICAgICAgIGhvdHNwb3RZID0gYXRvaShkYXRhKTsKIAotICAgIGVjb3Jl
X2V2YXNfb2JqZWN0X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBjdXJzb3JPYmplY3QuZ2V0KCksIEVW
QVNfTEFZRVJfTUFYLCBob3RzcG90WCwgaG90c3BvdFkpOworICAgIGVjb3JlX2V2YXNfb2JqZWN0
X2N1cnNvcl9zZXQoZWNvcmVFdmFzLCBtX2N1cnNvck9iamVjdC5nZXQoKSwgRVZBU19MQVlFUl9N
QVgsIGhvdHNwb3RYLCBob3RzcG90WSk7CiB9CiAKIHZvaWQgRXdrVmlld0ltcGw6OmRpc3BsYXlU
aW1lckZpcmVkKFdlYkNvcmU6OlRpbWVyPEV3a1ZpZXdJbXBsPiopCkBAIC0zODMsNiArMzY1LDIw
IEBAIHZvaWQgRXdrVmlld0ltcGw6OnNldEltYWdlRGF0YSh2b2lkKiBpbWFnZURhdGEsIGNvbnN0
IEludFNpemUmIHNpemUpCiAgICAgZXZhc19vYmplY3RfaW1hZ2VfZGF0YV9jb3B5X3NldChzZC0+
aW1hZ2UsIGltYWdlRGF0YSk7CiB9CiAKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKK2Jv
b2wgRXdrVmlld0ltcGw6OnNldENvbG9yUGlja2VyQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3Im
IGNvbG9yKQoreworICAgIGlmICghbV9jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gY29sb3JTdHJp
bmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29sb3Iuc2VyaWFsaXpl
ZCgpLnV0ZjgoKS5kYXRhKCkpKTsKKyAgICBXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJTZXRD
b2xvcihtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuZ2V0KCksIGNvbG9yU3RyaW5nLmdldCgp
KTsKKyAgICBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIuY2xlYXIoKTsKKworICAgIHJldHVy
biB0cnVlOworfQorI2VuZGlmCisKIC8qKgogICogQGludGVybmFsCiAgKiBpbmZvcm1zIGxvYWQg
ZmFpbGVkIHdpdGggZXJyb3IgaW5mb3JtYXRpb24uCkBAIC01ODIsNiArNTc4LDEwOCBAQCBJbnRT
aXplIEV3a1ZpZXdJbXBsOjpzaXplKCkgY29uc3QKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKIH0KIAorYm9vbCBFd2tWaWV3SW1wbDo6aXNGb2N1c2VkKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gZXZhc19vYmplY3RfZm9jdXNfZ2V0KG1fdmlldyk7Cit9CisKK2Jvb2wgRXdrVmll
d0ltcGw6OmlzVmlzaWJsZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2YXNfb2JqZWN0X3Zpc2li
bGVfZ2V0KG1fdmlldyk7Cit9CisKK2NvbnN0IGNoYXIqIEV3a1ZpZXdJbXBsOjp0aXRsZSgpIGNv
bnN0Cit7CisgICAgbV90aXRsZSA9IHBhZ2VQcm94eS0+cGFnZVRpdGxlKCkudXRmOCgpLmRhdGEo
KTsKKworICAgIHJldHVybiBtX3RpdGxlOworfQorCitFY29yZV9JTUZfQ29udGV4dCogRXdrVmll
d0ltcGw6OmlucHV0TWV0aG9kQ29udGV4dCgpCit7CisgICAgcmV0dXJuIG1faW5wdXRNZXRob2RD
b250ZXh0LmdldCgpOworfQorCitjb25zdCBjaGFyKiBFd2tWaWV3SW1wbDo6dGhlbWVQYXRoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV90aGVtZTsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6c2V0
VGhlbWVQYXRoKGNvbnN0IGNoYXIqIHRoZW1lKQoreworICAgIGlmIChtX3RoZW1lICE9IHRoZW1l
KSB7CisgICAgICAgIG1fdGhlbWUgPSB0aGVtZTsKKyAgICAgICAgcGFnZVByb3h5LT5zZXRUaGVt
ZVBhdGgodGhlbWUpOworICAgIH0KK30KKworY29uc3QgY2hhciogRXdrVmlld0ltcGw6OmN1c3Rv
bVRleHRFbmNvZGluZ05hbWUoKSBjb25zdAoreworICAgIFN0cmluZyBjdXN0b21FbmNvZGluZyA9
IHBhZ2VQcm94eS0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpOworICAgIGlmIChjdXN0b21FbmNv
ZGluZy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgbV9jdXN0b21FbmNvZGlu
ZyA9IGN1c3RvbUVuY29kaW5nLnV0ZjgoKS5kYXRhKCk7CisKKyAgICByZXR1cm4gbV9jdXN0b21F
bmNvZGluZzsKK30KKwordm9pZCBFd2tWaWV3SW1wbDo6c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFt
ZShjb25zdCBjaGFyKiBlbmNvZGluZykKK3sKKyAgICBtX2N1c3RvbUVuY29kaW5nID0gZW5jb2Rp
bmc7CisgICAgcGFnZVByb3h5LT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nID8g
ZW5jb2RpbmcgOiBTdHJpbmcoKSk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6OnNldE1vdXNlRXZl
bnRzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1fbW91c2VFdmVudHNFbmFibGVk
ID09IGVuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fbW91c2VFdmVudHNFbmFibGVk
ID0gZW5hYmxlZDsKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzZCA9IHNtYXJ0RGF0YSgpOworICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFj
a19hZGQobV92aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RPV04sIG9uTW91c2VEb3duLCBzZCk7
CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FM
TEJBQ0tfTU9VU0VfVVAsIG9uTW91c2VVcCwgc2QpOworICAgICAgICBldmFzX29iamVjdF9ldmVu
dF9jYWxsYmFja19hZGQobV92aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX01PVkUsIG9uTW91c2VN
b3ZlLCBzZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJh
Y2tfZGVsKG1fdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBvbk1vdXNlRG93bik7Cisg
ICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChtX3ZpZXcsIEVWQVNfQ0FMTEJB
Q0tfTU9VU0VfVVAsIG9uTW91c2VVcCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxi
YWNrX2RlbChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgb25Nb3VzZU1vdmUpOwor
ICAgIH0KK30KKworI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCit2b2lkIEV3a1ZpZXdJbXBsOjpz
ZXRUb3VjaEV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtX3RvdWNoRXZl
bnRzRW5hYmxlZCA9PSBlbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RvdWNoRXZl
bnRzRW5hYmxlZCA9IGVuYWJsZWQ7CisKKyAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICAvLyBG
SVhNRTogV2UgaGF2ZSB0byBjb25uZWN0IHRvdWNoIGNhbGxiYWNrcyB3aXRoIG1vdXNlIGFuZCBt
dWx0aSBldmVudHMKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgRXZhcyBjcmVhdGVzIG1vdXNlIGV2
ZW50cyBmb3IgZmlyc3QgdG91Y2ggYW5kIG11bHRpIGV2ZW50cworICAgICAgICAvLyBmb3Igc2Vj
b25kIGFuZCB0aGlyZCB0b3VjaGVzLiBCZWxvdyBjb2RlcyBzaG91bGQgYmUgZml4ZWQgd2hlbiB0
aGUgRXZhcworICAgICAgICAvLyBzdXBwb3J0cyB0aGUgdG91Y2ggZXZlbnRzLgorICAgICAgICAv
LyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3Nzg1IGZvciBk
ZXRhaWxzLgorICAgICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwor
ICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQobV92aWV3LCBFVkFTX0NBTExC
QUNLX01PVVNFX0RPV04sIG9uVG91Y2hEb3duLCBzZCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2
ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIG9uVG91Y2hV
cCwgc2QpOworICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQobV92aWV3LCBF
VkFTX0NBTExCQUNLX01PVVNFX01PVkUsIG9uVG91Y2hNb3ZlLCBzZCk7CisgICAgICAgIGV2YXNf
b2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTVVMVElfRE9X
Tiwgb25Ub3VjaERvd24sIHNkKTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tf
YWRkKG1fdmlldywgRVZBU19DQUxMQkFDS19NVUxUSV9VUCwgb25Ub3VjaFVwLCBzZCk7CisgICAg
ICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tf
TVVMVElfTU9WRSwgb25Ub3VjaE1vdmUsIHNkKTsKKyAgICB9IGVsc2UgeworICAgICAgICBldmFz
X29iamVjdF9ldmVudF9jYWxsYmFja19kZWwobV92aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX0RP
V04sIG9uVG91Y2hEb3duKTsKKyAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVs
KG1fdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9VUCwgb25Ub3VjaFVwKTsKKyAgICAgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKG1fdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9N
T1ZFLCBvblRvdWNoTW92ZSk7CisgICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2Rl
bChtX3ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTVVMVElfRE9XTiwgb25Ub3VjaERvd24pOworICAgICAg
ICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwobV92aWV3LCBFVkFTX0NBTExCQUNLX01V
TFRJX1VQLCBvblRvdWNoVXApOworICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19k
ZWwobV92aWV3LCBFVkFTX0NBTExCQUNLX01VTFRJX01PVkUsIG9uVG91Y2hNb3ZlKTsKKyAgICB9
Cit9CisjZW5kaWYKKwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIFVwZGF0ZSB0aGUgdmlldydzIGZh
dmljb24gYW5kIGVtaXRzIGEgImljb24sY2hhbmdlZCIgc2lnbmFsIGlmIGl0IGhhcwpAQCAtNTk1
LDcgKzY5Myw3IEBAIHZvaWQgRXdrVmlld0ltcGw6OmluZm9ybUljb25DaGFuZ2UoKQogICAgIEV3
a19GYXZpY29uX0RhdGFiYXNlKiBpY29uRGF0YWJhc2UgPSBjb250ZXh0LT5mYXZpY29uRGF0YWJh
c2UoKTsKICAgICBBU1NFUlQoaWNvbkRhdGFiYXNlKTsKIAotICAgIGZhdmljb25VUkwgPSBld2tf
ZmF2aWNvbl9kYXRhYmFzZV9pY29uX3VybF9nZXQoaWNvbkRhdGFiYXNlLCB1cmwpOworICAgIG1f
ZmF2aWNvblVSTCA9IGV3a19mYXZpY29uX2RhdGFiYXNlX2ljb25fdXJsX2dldChpY29uRGF0YWJh
c2UsIG1fdXJsKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxsKG1fdmlldywg
Imljb24sY2hhbmdlZCIsIDApOwogfQogCkBAIC03MTMsNyArODExLDcgQEAgdm9pZCBFd2tWaWV3
SW1wbDo6cmVxdWVzdENvbG9yUGlja2VyKGludCByLCBpbnQgZywgaW50IGIsIGludCBhLCBXS0Nv
bG9yUGlja2VyUmUKICAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPmlucHV0X3BpY2tlcl9jb2xv
cl9yZXF1ZXN0KTsKIAotICAgIGNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsK
KyAgICBtX2NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXIgPSBsaXN0ZW5lcjsKIAogICAgIHNkLT5h
cGktPmlucHV0X3BpY2tlcl9jb2xvcl9yZXF1ZXN0KHNkLCByLCBnLCBiLCBhKTsKIH0KQEAgLTcy
Nyw3ICs4MjUsNyBAQCB2b2lkIEV3a1ZpZXdJbXBsOjpkaXNtaXNzQ29sb3JQaWNrZXIoKQogICAg
IEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc21hcnREYXRhKCk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9yX2Rpc21pc3MpOwogCi0g
ICAgY29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5jbGVhcigpOworICAgIG1fY29sb3JQaWNrZXJS
ZXN1bHRMaXN0ZW5lci5jbGVhcigpOwogCiAgICAgc2QtPmFwaS0+aW5wdXRfcGlja2VyX2NvbG9y
X2Rpc21pc3Moc2QpOwogfQpAQCAtODY4LDI4ICs5NjYsMjggQEAgdW5zaWduZWQgbG9uZyBsb25n
IEV3a1ZpZXdJbXBsOjppbmZvcm1EYXRhYmFzZVF1b3RhUmVhY2hlZChjb25zdCBTdHJpbmcmIGRh
dGFiYXMKICAqLwogdm9pZCBFd2tWaWV3SW1wbDo6dXBkYXRlVGV4dElucHV0U3RhdGUoKQogewot
ICAgIGlmICghaW1mQ29udGV4dCkKKyAgICBpZiAoIW1faW5wdXRNZXRob2RDb250ZXh0KQogICAg
ICAgICByZXR1cm47CiAKICAgICBjb25zdCBFZGl0b3JTdGF0ZSYgZWRpdG9yID0gcGFnZVByb3h5
LT5lZGl0b3JTdGF0ZSgpOwogCiAgICAgaWYgKGVkaXRvci5pc0NvbnRlbnRFZGl0YWJsZSkgewot
ICAgICAgICBpZiAoaXNJbWZGb2N1c2VkKQorICAgICAgICBpZiAobV9pbnB1dE1ldGhvZENvbnRl
eHRGb2N1c2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGVjb3JlX2ltZl9jb250
ZXh0X3Jlc2V0KGltZkNvbnRleHQpOwotICAgICAgICBlY29yZV9pbWZfY29udGV4dF9mb2N1c19p
bihpbWZDb250ZXh0KTsKLSAgICAgICAgaXNJbWZGb2N1c2VkID0gdHJ1ZTsKKyAgICAgICAgZWNv
cmVfaW1mX2NvbnRleHRfcmVzZXQobV9pbnB1dE1ldGhvZENvbnRleHQuZ2V0KCkpOworICAgICAg
ICBlY29yZV9pbWZfY29udGV4dF9mb2N1c19pbihtX2lucHV0TWV0aG9kQ29udGV4dC5nZXQoKSk7
CisgICAgICAgIG1faW5wdXRNZXRob2RDb250ZXh0Rm9jdXNlZCA9IHRydWU7CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKCFpc0ltZkZvY3VzZWQpCisgICAgICAgIGlmICghbV9pbnB1dE1ldGhv
ZENvbnRleHRGb2N1c2VkKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmIChlZGl0
b3IuaGFzQ29tcG9zaXRpb24pCiAgICAgICAgICAgICBwYWdlUHJveHktPmNhbmNlbENvbXBvc2l0
aW9uKCk7CiAKLSAgICAgICAgaXNJbWZGb2N1c2VkID0gZmFsc2U7Ci0gICAgICAgIGVjb3JlX2lt
Zl9jb250ZXh0X3Jlc2V0KGltZkNvbnRleHQpOwotICAgICAgICBlY29yZV9pbWZfY29udGV4dF9m
b2N1c19vdXQoaW1mQ29udGV4dCk7CisgICAgICAgIG1faW5wdXRNZXRob2RDb250ZXh0Rm9jdXNl
ZCA9IGZhbHNlOworICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChtX2lucHV0TWV0aG9k
Q29udGV4dC5nZXQoKSk7CisgICAgICAgIGVjb3JlX2ltZl9jb250ZXh0X2ZvY3VzX291dChtX2lu
cHV0TWV0aG9kQ29udGV4dC5nZXQoKSk7CiAgICAgfQogfQogCkBAIC05MDYsMTEgKzEwMDQsMTEg
QEAgdm9pZCBFd2tWaWV3SW1wbDo6aW5mb3JtVVJMQ2hhbmdlKCkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ1N0cmluZyByYXdBY3RpdmVVUkwgPSBhY3RpdmVVUkwudXRmOCgpOwotICAgIGlmICh1
cmwgPT0gcmF3QWN0aXZlVVJMLmRhdGEoKSkKKyAgICBpZiAobV91cmwgPT0gcmF3QWN0aXZlVVJM
LmRhdGEoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgdXJsID0gcmF3QWN0aXZlVVJMLmRhdGEo
KTsKLSAgICBjb25zdCBjaGFyKiBjYWxsYmFja0FyZ3VtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHVybCk7CisgICAgbV91cmwgPSByYXdBY3RpdmVVUkwuZGF0YSgpOworICAgIGNvbnN0
IGNoYXIqIGNhbGxiYWNrQXJndW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4obV91cmwp
OwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwobV92aWV3LCAidXJsLGNoYW5n
ZWQiLCBjb25zdF9jYXN0PGNoYXIqPihjYWxsYmFja0FyZ3VtZW50KSk7CiAKICAgICAvLyBVcGRh
dGUgdGhlIHZpZXcncyBmYXZpY29uLgpAQCAtOTM1LDMgKzEwMzMsNzQgQEAgdm9pZCBFd2tWaWV3
SW1wbDo6Y2xvc2VQYWdlKCkKIHsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19jYWxs
KG1fdmlldywgImNsb3NlLHdpbmRvdyIsIDApOwogfQorCit2b2lkIEV3a1ZpZXdJbXBsOjpvbk1v
dXNlRG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8p
Cit7CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duKiBkb3duRXZlbnQgPSBzdGF0aWNfY2FzdDxF
dmFzX0V2ZW50X01vdXNlX0Rvd24qPihldmVudEluZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0Rh
dGEqIHNkID0gc3RhdGljX2Nhc3Q8RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOKHNkLT5hcGktPm1vdXNlX2Rvd24pOworICAgIHNkLT5hcGktPm1vdXNlX2Rvd24o
c2QsIGRvd25FdmVudCk7Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6Om9uTW91c2VVcCh2b2lkKiBk
YXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCit7CisgICAgRXZhc19F
dmVudF9Nb3VzZV9VcCogdXBFdmVudCA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAq
PihldmVudEluZm8pOworICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNkID0gc3RhdGljX2Nhc3Q8
RXdrX1ZpZXdfU21hcnRfRGF0YSo+KGRhdGEpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVU
VVJOKHNkLT5hcGkpOworICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNkLT5hcGktPm1v
dXNlX3VwKTsKKyAgICBzZC0+YXBpLT5tb3VzZV91cChzZCwgdXBFdmVudCk7Cit9CisKK3ZvaWQg
RXdrVmlld0ltcGw6Om9uTW91c2VNb3ZlKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCos
IHZvaWQqIGV2ZW50SW5mbykKK3sKKyAgICBFdmFzX0V2ZW50X01vdXNlX01vdmUqIG1vdmVFdmVu
dCA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfTW92ZSo+KGV2ZW50SW5mbyk7CisgICAg
RXdrX1ZpZXdfU21hcnRfRGF0YSogc2QgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRh
Kj4oZGF0YSk7CisgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaSk7CisgICAg
RUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc2QtPmFwaS0+bW91c2VfbW92ZSk7CisgICAgc2Qt
PmFwaS0+bW91c2VfbW92ZShzZCwgbW92ZUV2ZW50KTsKK30KKworI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCit2b2lkIEV3a1ZpZXdJbXBsOjpmZWVkVG91Y2hFdmVudHMoRXdrX1RvdWNoX0V2ZW50
X1R5cGUgdHlwZSkKK3sKKyAgICBFd2tfVmlld19TbWFydF9EYXRhKiBzZCA9IHNtYXJ0RGF0YSgp
OworCisgICAgdW5zaWduZWQgY291bnQgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfY291bnQoc2Qt
PmJhc2UuZXZhcyk7CisgICAgaWYgKCFjb3VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgRWlu
YV9MaXN0KiBwb2ludHMgPSAwOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsg
KytpKSB7CisgICAgICAgIEV3a19Ub3VjaF9Qb2ludCogcG9pbnQgPSBuZXcgRXdrX1RvdWNoX1Bv
aW50OworICAgICAgICBwb2ludC0+aWQgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX2lkX2dl
dChzZC0+YmFzZS5ldmFzLCBpKTsKKyAgICAgICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94
eV9nZXQoc2QtPmJhc2UuZXZhcywgaSwgJnBvaW50LT54LCAmcG9pbnQtPnkpOworICAgICAgICBw
b2ludC0+c3RhdGUgPSBldmFzX3RvdWNoX3BvaW50X2xpc3RfbnRoX3N0YXRlX2dldChzZC0+YmFz
ZS5ldmFzLCBpKTsKKyAgICAgICAgcG9pbnRzID0gZWluYV9saXN0X2FwcGVuZChwb2ludHMsIHBv
aW50KTsKKyAgICB9CisKKyAgICBld2tfdmlld19mZWVkX3RvdWNoX2V2ZW50KG1fdmlldywgdHlw
ZSwgcG9pbnRzLCBldmFzX2tleV9tb2RpZmllcl9nZXQoc2QtPmJhc2UuZXZhcykpOworCisgICAg
dm9pZCogZGF0YTsKKyAgICBFSU5BX0xJU1RfRlJFRShwb2ludHMsIGRhdGEpCisgICAgICAgIGRl
bGV0ZSBzdGF0aWNfY2FzdDxFd2tfVG91Y2hfUG9pbnQqPihkYXRhKTsKK30KKwordm9pZCBFd2tW
aWV3SW1wbDo6b25Ub3VjaERvd24odm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICov
LCBFdmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKQoreworICAgIEV3
a1ZpZXdJbXBsKiB2aWV3SW1wbCA9IEV3a1ZpZXdJbXBsOjpmcm9tRXZhc09iamVjdChld2tWaWV3
KTsKKyAgICB2aWV3SW1wbC0+ZmVlZFRvdWNoRXZlbnRzKEVXS19UT1VDSF9TVEFSVCk7Cit9CisK
K3ZvaWQgRXdrVmlld0ltcGw6Om9uVG91Y2hVcCh2b2lkKiAvKiBkYXRhICovLCBFdmFzKiAvKiBj
YW52YXMgKi8sIEV2YXNfT2JqZWN0KiBld2tWaWV3LCB2b2lkKiAvKiBldmVudEluZm8gKi8pCit7
CisgICAgRXdrVmlld0ltcGwqIHZpZXdJbXBsID0gRXdrVmlld0ltcGw6OmZyb21FdmFzT2JqZWN0
KGV3a1ZpZXcpOworICAgIHZpZXdJbXBsLT5mZWVkVG91Y2hFdmVudHMoRVdLX1RPVUNIX0VORCk7
Cit9CisKK3ZvaWQgRXdrVmlld0ltcGw6Om9uVG91Y2hNb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2
YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5m
byAqLykKK3sKKyAgICBFd2tWaWV3SW1wbCogdmlld0ltcGwgPSBFd2tWaWV3SW1wbDo6ZnJvbUV2
YXNPYmplY3QoZXdrVmlldyk7CisgICAgdmlld0ltcGwtPmZlZWRUb3VjaEV2ZW50cyhFV0tfVE9V
Q0hfTU9WRSk7Cit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9Fd2tWaWV3SW1wbC5oCmluZGV4IGU3NDdhMmIuLjcyMjhmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmlld0ltcGwuaApAQCAtMzUsNiArMzUsMTAgQEAK
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorI2luY2x1ZGUgImV3a190b3VjaC5oIgorI2Vu
ZGlmCisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAjaW5jbHVkZSA8RXZhc19H
TC5oPgogI2VuZGlmCkBAIC03Miw2ICs3Niw3IEBAIGNsYXNzIFdlYlBvcHVwTWVudVByb3h5RWZs
OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBDb2xvcjsKIGNsYXNzIEN1cnNvcjsK
IGNsYXNzIEludFJlY3Q7CiBjbGFzcyBJbnRTaXplOwpAQCAtMTAyLDEzICsxMDcsMzggQEAgcHVi
bGljOgogICAgIGlubGluZSBFdmFzX09iamVjdCogdmlldygpIHsgcmV0dXJuIG1fdmlldzsgfQog
ICAgIFdLUGFnZVJlZiB3a1BhZ2UoKTsKICAgICBpbmxpbmUgV2ViS2l0OjpXZWJQYWdlUHJveHkq
IHBhZ2UoKSB7IHJldHVybiBwYWdlUHJveHkuZ2V0KCk7IH0KKyAgICBFd2tfQ29udGV4dCogZXdr
Q29udGV4dCgpIHsgcmV0dXJuIGNvbnRleHQuZ2V0KCk7IH0KKyAgICBFd2tfU2V0dGluZ3MqIHNl
dHRpbmdzKCkgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQogCiAgICAgV2ViQ29yZTo6SW50
U2l6ZSBzaXplKCkgY29uc3Q7CisgICAgYm9vbCBpc0ZvY3VzZWQoKSBjb25zdDsKKyAgICBib29s
IGlzVmlzaWJsZSgpIGNvbnN0OworCisgICAgY29uc3QgY2hhciogdXJsKCkgY29uc3QgeyByZXR1
cm4gbV91cmw7IH0KKyAgICBjb25zdCBjaGFyKiBmYXZpY29uVVJMKCkgY29uc3QgeyByZXR1cm4g
bV9mYXZpY29uVVJMOyB9CisgICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdDsKKyAgICBFY29y
ZV9JTUZfQ29udGV4dCogaW5wdXRNZXRob2RDb250ZXh0KCk7CisKKyAgICBjb25zdCBjaGFyKiB0
aGVtZVBhdGgoKSBjb25zdDsKKyAgICB2b2lkIHNldFRoZW1lUGF0aChjb25zdCBjaGFyKiB0aGVt
ZSk7CisgICAgY29uc3QgY2hhciogY3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpIGNvbnN0OworICAg
IHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShjb25zdCBjaGFyKiBlbmNvZGluZyk7CisK
KyAgICBib29sIG1vdXNlRXZlbnRzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbW91c2VFdmVu
dHNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRNb3VzZUV2ZW50c0VuYWJsZWQoYm9vbCBlbmFibGVk
KTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgdG91Y2hFdmVudHNFbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV90b3VjaEV2ZW50c0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldFRv
dWNoRXZlbnRzRW5hYmxlZChib29sIGVuYWJsZWQpOworI2VuZGlmCiAKICAgICB2b2lkIHNldEN1
cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImIGN1cnNvcik7CiAgICAgdm9pZCByZWRyYXdSZWdp
b24oY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVjdCk7CiAgICAgdm9pZCBzZXRJbWFnZURhdGEo
dm9pZCogaW1hZ2VEYXRhLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKTsKIAorI2lmIEVO
QUJMRShJTlBVVF9UWVBFX0NPTE9SKQorICAgIGJvb2wgc2V0Q29sb3JQaWNrZXJDb2xvcihjb25z
dCBXZWJDb3JlOjpDb2xvciYgY29sb3IpOworI2VuZGlmCisKICAgICBzdGF0aWMgdm9pZCBhZGRU
b1BhZ2VWaWV3TWFwKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KTsKICAgICBzdGF0aWMgdm9p
ZCByZW1vdmVGcm9tUGFnZVZpZXdNYXAoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogICAg
IHN0YXRpYyBjb25zdCBFdmFzX09iamVjdCogdmlld0Zyb21QYWdlVmlld01hcChjb25zdCBXS1Bh
Z2VSZWYpOwpAQCAtMTk1LDMyICsyMjUsMTIgQEAgcHVibGljOgogICAgIE93blB0cjxXZWJLaXQ6
OkZpbmRDbGllbnRFZmw+IGZpbmRDbGllbnQ7CiAgICAgT3duUHRyPFdlYktpdDo6Rm9ybUNsaWVu
dEVmbD4gZm9ybUNsaWVudDsKIAotICAgIFdLRWluYVNoYXJlZFN0cmluZyB1cmw7Ci0gICAgV0tF
aW5hU2hhcmVkU3RyaW5nIHRpdGxlOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyB0aGVtZTsKLSAg
ICBXS0VpbmFTaGFyZWRTdHJpbmcgY3VzdG9tRW5jb2Rpbmc7Ci0gICAgV0tFaW5hU2hhcmVkU3Ry
aW5nIGN1cnNvckdyb3VwOwotICAgIFdLRWluYVNoYXJlZFN0cmluZyBmYXZpY29uVVJMOwotICAg
IFJlZlB0cjxFdmFzX09iamVjdD4gY3Vyc29yT2JqZWN0OwogICAgIE93blB0cjxFd2tfQmFja19G
b3J3YXJkX0xpc3Q+IGJhY2tGb3J3YXJkTGlzdDsKLSAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBz
ZXR0aW5nczsKLSAgICBib29sIGFyZU1vdXNlRXZlbnRzRW5hYmxlZDsKLSAgICBXS1JldGFpblB0
cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+IGNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXI7CiAgICAgUmVmUHRyPEV3a19Db250ZXh0PiBjb250ZXh0OwotI2lmIEVOQUJMRShUT1VDSF9F
VkVOVFMpCi0gICAgYm9vbCBhcmVUb3VjaEV2ZW50c0VuYWJsZWQ7Ci0jZW5kaWYKIAogICAgIFdl
YktpdDo6V2ViUG9wdXBNZW51UHJveHlFZmwqIHBvcHVwTWVudVByb3h5OwogICAgIEVpbmFfTGlz
dCogcG9wdXBNZW51SXRlbXM7CiAKLSAgICBFY29yZV9JTUZfQ29udGV4dCogaW1mQ29udGV4dDsK
LSAgICBib29sIGlzSW1mRm9jdXNlZDsKLQotI2lmZGVmIEhBVkVfRUNPUkVfWAotICAgIGJvb2wg
aXNVc2luZ0Vjb3JlWDsKLSNlbmRpZgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIEV2YXNfR0wqIGV2YXNHbDsKICAgICBFdmFzX0dMX0NvbnRleHQqIGV2YXNHbENvbnRl
eHQ7CkBAIC0yMjgsMTQgKzIzOCw0NCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAg
ICBFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEoKTsKKyAgICBpbmxpbmUgRXdrX1ZpZXdf
U21hcnRfRGF0YSogc21hcnREYXRhKCk7CiAgICAgdm9pZCBkaXNwbGF5VGltZXJGaXJlZChXZWJD
b3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4qKTsKIAorICAgIHN0YXRpYyBQYXNzT3duUHRyPEVjb3Jl
X0lNRl9Db250ZXh0PiBjcmVhdGVJTUZDb250ZXh0KEV3a19WaWV3X1NtYXJ0X0RhdGEqKTsKKyAg
ICBzdGF0aWMgdm9pZCBvbklNRklucHV0U2VxdWVuY2VDb21wbGV0ZSh2b2lkKiBkYXRhLCBFY29y
ZV9JTUZfQ29udGV4dCosIHZvaWQqIGV2ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgb25JTUZQ
cmVlZGl0U2VxdWVuY2VDaGFuZ2VkKHZvaWQqIGRhdGEsIEVjb3JlX0lNRl9Db250ZXh0Kiwgdm9p
ZCogZXZlbnRJbmZvKTsKKworICAgIHN0YXRpYyB2b2lkIG9uTW91c2VEb3duKHZvaWQqIGRhdGEs
IEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQg
b25Nb3VzZVVwKHZvaWQqIGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50SW5m
byk7CisgICAgc3RhdGljIHZvaWQgb25Nb3VzZU1vdmUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNf
T2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZvKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAg
IHZvaWQgZmVlZFRvdWNoRXZlbnRzKEV3a19Ub3VjaF9FdmVudF9UeXBlIHR5cGUpOworICAgIHN0
YXRpYyB2b2lkIG9uVG91Y2hEb3duKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAq
LywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLyk7CisgICAgc3Rh
dGljIHZvaWQgb25Ub3VjaFVwKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywg
RXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLyk7CisgICAgc3RhdGlj
IHZvaWQgb25Ub3VjaE1vdmUodm9pZCogLyogZGF0YSAqLywgRXZhcyogLyogY2FudmFzICovLCBF
dmFzX09iamVjdCogZXdrVmlldywgdm9pZCogLyogZXZlbnRJbmZvICovKTsKKyNlbmRpZgorCiAg
ICAgRXZhc19PYmplY3QqIG1fdmlldzsKLSAgICB0eXBlZGVmIEhhc2hNYXA8V0tQYWdlUmVmLCBj
b25zdCBFdmFzX09iamVjdCo+IFBhZ2VWaWV3TWFwOwotICAgIHN0YXRpYyBQYWdlVmlld01hcCBw
YWdlVmlld01hcDsKKyAgICBPd25QdHI8RXdrX1NldHRpbmdzPiBtX3NldHRpbmdzOworICAgIE93
blB0cjxFY29yZV9JTUZfQ29udGV4dD4gbV9pbnB1dE1ldGhvZENvbnRleHQ7CisgICAgYm9vbCBt
X2lucHV0TWV0aG9kQ29udGV4dEZvY3VzZWQ7CisgICAgUmVmUHRyPEV2YXNfT2JqZWN0PiBtX2N1
cnNvck9iamVjdDsKKyAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV9jdXJzb3JHcm91cDsKKyAgICBX
S0VpbmFTaGFyZWRTdHJpbmcgbV9mYXZpY29uVVJMOworICAgIFdLRWluYVNoYXJlZFN0cmluZyBt
X3VybDsKKyAgICBtdXRhYmxlIFdLRWluYVNoYXJlZFN0cmluZyBtX3RpdGxlOworICAgIFdLRWlu
YVNoYXJlZFN0cmluZyBtX3RoZW1lOworICAgIG11dGFibGUgV0tFaW5hU2hhcmVkU3RyaW5nIG1f
Y3VzdG9tRW5jb2Rpbmc7CisgICAgYm9vbCBtX21vdXNlRXZlbnRzRW5hYmxlZDsKKyNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgbV90b3VjaEV2ZW50c0VuYWJsZWQ7CisjZW5kaWYK
KyAgICBXS1JldGFpblB0cjxXS0NvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJSZWY+IG1fY29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lcjsKICAgICBXZWJDb3JlOjpUaW1lcjxFd2tWaWV3SW1wbD4gbV9k
aXNwbGF5VGltZXI7CiAgICAgV1RGOjpWZWN0b3IgPFdlYkNvcmU6OkludFJlY3Q+IG1fZGlydHlS
ZWN0czsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxXS1BhZ2VSZWYsIGNvbnN0IEV2YXNfT2JqZWN0
Kj4gUGFnZVZpZXdNYXA7CisgICAgc3RhdGljIFBhZ2VWaWV3TWFwIHBhZ2VWaWV3TWFwOwogfTsK
IAogI2VuZGlmIC8vIEV3a1ZpZXdJbXBsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAppbmRleCA1MzdmNGUwLi5lMzU2NWViIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudElt
cGwuY3BwCkBAIC05OCwxMiArOTgsMTIgQEAgYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3V2lu
ZG93QWN0aXZlKCkKIAogYm9vbCBQYWdlQ2xpZW50SW1wbDo6aXNWaWV3Rm9jdXNlZCgpCiB7Ci0g
ICAgcmV0dXJuIGV2YXNfb2JqZWN0X2ZvY3VzX2dldChtX3ZpZXdJbXBsLT52aWV3KCkpOworICAg
IHJldHVybiBtX3ZpZXdJbXBsLT5pc0ZvY3VzZWQoKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50SW1w
bDo6aXNWaWV3VmlzaWJsZSgpCiB7Ci0gICAgcmV0dXJuIGV2YXNfb2JqZWN0X3Zpc2libGVfZ2V0
KG1fdmlld0ltcGwtPnZpZXcoKSk7CisgICAgcmV0dXJuIG1fdmlld0ltcGwtPmlzVmlzaWJsZSgp
OwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdJbldpbmRvdygpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6cHJvY2Vzc0RpZENyYXNoKCkKIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKIHsKLSAgICBjb25zdCBjaGFyKiB0
aGVtZVBhdGggPSBld2tfdmlld190aGVtZV9nZXQobV92aWV3SW1wbC0+dmlldygpKTsKKyAgICBj
b25zdCBjaGFyKiB0aGVtZVBhdGggPSBtX3ZpZXdJbXBsLT50aGVtZVBhdGgoKTsKICAgICBpZiAo
dGhlbWVQYXRoKQogICAgICAgICBtX3ZpZXdJbXBsLT5wYWdlKCktPnNldFRoZW1lUGF0aCh0aGVt
ZVBhdGgpOwogfQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OnVwZGF0
ZVRleHRJbnB1dFN0YXRlKCkKIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6aGFuZGxlRG93bmxvYWRS
ZXF1ZXN0KERvd25sb2FkUHJveHkqIGRvd25sb2FkKQogewotICAgIEV3a19Db250ZXh0KiBjb250
ZXh0ID0gZXdrX3ZpZXdfY29udGV4dF9nZXQobV92aWV3SW1wbC0+dmlldygpKTsKKyAgICBFd2tf
Q29udGV4dCogY29udGV4dCA9IG1fdmlld0ltcGwtPmV3a0NvbnRleHQoKTsKICAgICBjb250ZXh0
LT5kb3dubG9hZE1hbmFnZXIoKS0+cmVnaXN0ZXJEb3dubG9hZChkb3dubG9hZCwgbV92aWV3SW1w
bCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19zZXR0aW5nc19wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfc2V0dGluZ3NfcHJpdmF0ZS5oCmluZGV4IDI0NGY5NTcuLmVhMjlhODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19zZXR0aW5nc19wcml2YXRlLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3NldHRpbmdzX3ByaXZh
dGUuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBld2tfc2V0dGluZ3NfcHJpdmF0ZV9oCiAj
ZGVmaW5lIGV3a19zZXR0aW5nc19wcml2YXRlX2gKIAotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNz
IFdlYlByZWZlcmVuY2VzOwpAQCAtMzksMTYgKzM5LDIxIEBAIGNsYXNzIEV3a1ZpZXdJbXBsOwog
ICovCiBjbGFzcyBFd2tfU2V0dGluZ3MgewogcHVibGljOgotICAgIGV4cGxpY2l0IEV3a19TZXR0
aW5ncyhFd2tWaWV3SW1wbCogdmlld0ltcGwpCi0gICAgICAgIDogbV92aWV3SW1wbCh2aWV3SW1w
bCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxFd2tfU2V0dGluZ3M+IGNyZWF0ZShFd2tWaWV3SW1w
bCogdmlld0ltcGwpCiAgICAgewotICAgICAgICBBU1NFUlQobV92aWV3SW1wbCk7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgRXdrX1NldHRpbmdzKHZpZXdJbXBsKSk7CiAgICAgfQogCiAg
ICAgY29uc3QgV2ViS2l0OjpXZWJQcmVmZXJlbmNlcyogcHJlZmVyZW5jZXMoKSBjb25zdDsKICAg
ICBXZWJLaXQ6OldlYlByZWZlcmVuY2VzKiBwcmVmZXJlbmNlcygpOwogCiBwcml2YXRlOgorICAg
IGV4cGxpY2l0IEV3a19TZXR0aW5ncyhFd2tWaWV3SW1wbCogdmlld0ltcGwpCisgICAgICAgIDog
bV92aWV3SW1wbCh2aWV3SW1wbCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3ZpZXdJbXBsKTsK
KyAgICB9CisKICAgICBFd2tWaWV3SW1wbCogbV92aWV3SW1wbDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRleCAzNDQ1YzQyLi45ZGZm
OTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
CkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiUGFnZVVJQ2xpZW50RWZsLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VMb2FkQ2xpZW50RWZsLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5j
bHVkZSAiV0tDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV0tFaW5hU2hh
cmVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiV0tGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldLUmV0
YWluUHRyLmgiCkBAIC0yMTcsOCArMjE2LDkgQEAgc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfbW91c2VfdXAoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdAogICAg
IGltcGwtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KHVw
RXZlbnQsICZwb3NpdGlvbikpOwogI2VuZGlmCiAKLSAgICBpZiAoaW1wbC0+aW1mQ29udGV4dCkK
LSAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQoaW1wbC0+aW1mQ29udGV4dCk7CisgICAg
RWNvcmVfSU1GX0NvbnRleHQqIGlucHV0TWV0aG9kQ29udGV4dCA9IGltcGwtPmlucHV0TWV0aG9k
Q29udGV4dCgpOworICAgIGlmIChpbnB1dE1ldGhvZENvbnRleHQpCisgICAgICAgIGVjb3JlX2lt
Zl9jb250ZXh0X3Jlc2V0KGlucHV0TWV0aG9kQ29udGV4dCk7CiAKICAgICByZXR1cm4gdHJ1ZTsK
IH0KQEAgLTI0MywxMSArMjQzLDEyIEBAIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3X3NtYXJ0
X2tleV9kb3duKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3QKICAgICBFV0tf
VklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCBmYWxzZSk7CiAKICAgICBi
b29sIGlzRmlsdGVyZWQgPSBmYWxzZTsKLSAgICBpZiAoaW1wbC0+aW1mQ29udGV4dCkgewotICAg
ICAgICBFY29yZV9JTUZfRXZlbnQgaW1mRXZlbnQ7Ci0gICAgICAgIGVjb3JlX2ltZl9ldmFzX2V2
ZW50X2tleV9kb3duX3dyYXAoY29uc3RfY2FzdDxFdmFzX0V2ZW50X0tleV9Eb3duKj4oZG93bkV2
ZW50KSwgJmltZkV2ZW50LmtleV9kb3duKTsKKyAgICBFY29yZV9JTUZfQ29udGV4dCogaW5wdXRN
ZXRob2RDb250ZXh0ID0gaW1wbC0+aW5wdXRNZXRob2RDb250ZXh0KCk7CisgICAgaWYgKGlucHV0
TWV0aG9kQ29udGV4dCkgeworICAgICAgICBFY29yZV9JTUZfRXZlbnQgaW5wdXRNZXRob2RFdmVu
dDsKKyAgICAgICAgZWNvcmVfaW1mX2V2YXNfZXZlbnRfa2V5X2Rvd25fd3JhcChjb25zdF9jYXN0
PEV2YXNfRXZlbnRfS2V5X0Rvd24qPihkb3duRXZlbnQpLCAmaW5wdXRNZXRob2RFdmVudC5rZXlf
ZG93bik7CiAKLSAgICAgICAgaXNGaWx0ZXJlZCA9IGVjb3JlX2ltZl9jb250ZXh0X2ZpbHRlcl9l
dmVudChpbXBsLT5pbWZDb250ZXh0LCBFQ09SRV9JTUZfRVZFTlRfS0VZX0RPV04sICZpbWZFdmVu
dCk7CisgICAgICAgIGlzRmlsdGVyZWQgPSBlY29yZV9pbWZfY29udGV4dF9maWx0ZXJfZXZlbnQo
aW5wdXRNZXRob2RDb250ZXh0LCBFQ09SRV9JTUZfRVZFTlRfS0VZX0RPV04sICZpbnB1dE1ldGhv
ZEV2ZW50KTsKICAgICB9CiAKICAgICBpbXBsLT5wYWdlUHJveHktPmhhbmRsZUtleWJvYXJkRXZl
bnQoTmF0aXZlV2ViS2V5Ym9hcmRFdmVudChkb3duRXZlbnQsIGlzRmlsdGVyZWQpKTsKQEAgLTI4
OCwzMyArMjg5LDYgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21vdXNlX3doZWVsKHZvaWQq
IGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW4KICAgICBzbWFydERhdGEtPmFw
aS0+bW91c2Vfd2hlZWwoc21hcnREYXRhLCB3aGVlbEV2ZW50KTsKIH0KIAotc3RhdGljIHZvaWQg
X2V3a192aWV3X29uX21vdXNlX2Rvd24odm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwg
dm9pZCogZXZlbnRJbmZvKQotewotICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biogZG93bkV2ZW50
ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9Nb3VzZV9Eb3duKj4oZXZlbnRJbmZvKTsKLSAgICBF
d2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFy
dF9EYXRhKj4oZGF0YSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRh
LT5hcGkpOwotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5t
b3VzZV9kb3duKTsKLSAgICBzbWFydERhdGEtPmFwaS0+bW91c2VfZG93bihzbWFydERhdGEsIGRv
d25FdmVudCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9tb3VzZV91cCh2b2lkKiBk
YXRhLCBFdmFzKiwgRXZhc19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXZhc19F
dmVudF9Nb3VzZV9VcCogdXBFdmVudCA9IHN0YXRpY19jYXN0PEV2YXNfRXZlbnRfTW91c2VfVXAq
PihldmVudEluZm8pOwotICAgIEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSA9IHN0YXRp
Y19jYXN0PEV3a19WaWV3X1NtYXJ0X0RhdGEqPihkYXRhKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9O
VUxMX1JFVFVSTihzbWFydERhdGEtPmFwaSk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk4oc21hcnREYXRhLT5hcGktPm1vdXNlX3VwKTsKLSAgICBzbWFydERhdGEtPmFwaS0+bW91c2Vf
dXAoc21hcnREYXRhLCB1cEV2ZW50KTsKLX0KLQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX21v
dXNlX21vdmUodm9pZCogZGF0YSwgRXZhcyosIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZv
KQotewotICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSogbW92ZUV2ZW50ID0gc3RhdGljX2Nhc3Q8
RXZhc19FdmVudF9Nb3VzZV9Nb3ZlKj4oZXZlbnRJbmZvKTsKLSAgICBFd2tfVmlld19TbWFydF9E
YXRhKiBzbWFydERhdGEgPSBzdGF0aWNfY2FzdDxFd2tfVmlld19TbWFydF9EYXRhKj4oZGF0YSk7
Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5hcGkpOwotICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOKHNtYXJ0RGF0YS0+YXBpLT5tb3VzZV9tb3ZlKTsKLSAg
ICBzbWFydERhdGEtPmFwaS0+bW91c2VfbW92ZShzbWFydERhdGEsIG1vdmVFdmVudCk7Ci19Ci0K
IHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9rZXlfZG93bih2b2lkKiBkYXRhLCBFdmFzKiwgRXZh
c19PYmplY3QqLCB2b2lkKiBldmVudEluZm8pCiB7CiAgICAgRXZhc19FdmVudF9LZXlfRG93biog
ZG93bkV2ZW50ID0gc3RhdGljX2Nhc3Q8RXZhc19FdmVudF9LZXlfRG93bio+KGV2ZW50SW5mbyk7
CkBAIC0zNTEsNDcgKzMyNSw2IEBAIHN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl9oaWRlKHZvaWQq
IGRhdGEsIEV2YXMqLCBFdmFzX09iamVjdCosIHZvaWQqIC8qZXZlbnRJbmZvCiAgICAgaW1wbC0+
cGFnZVByb3h5LT52aWV3U3RhdGVEaWRDaGFuZ2UoV2ViUGFnZVByb3h5OjpWaWV3SXNWaXNpYmxl
KTsKIH0KIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi1zdGF0aWMgaW5saW5lIHZvaWQgX2V3
a192aWV3X2ZlZWRfdG91Y2hfZXZlbnRfdXNpbmdfdG91Y2hfcG9pbnRfbGlzdF9vZl9ldmFzKEV2
YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfVG91Y2hfRXZlbnRfVHlwZSB0eXBlKQotewotICAgIEVX
S19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhKTsKLQotICAgIHVuc2ln
bmVkIGNvdW50ID0gZXZhc190b3VjaF9wb2ludF9saXN0X2NvdW50KHNtYXJ0RGF0YS0+YmFzZS5l
dmFzKTsKLSAgICBpZiAoIWNvdW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBFaW5hX0xpc3Qq
IHBvaW50cyA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsK
LSAgICAgICAgRXdrX1RvdWNoX1BvaW50KiBwb2ludCA9IG5ldyBFd2tfVG91Y2hfUG9pbnQ7Ci0g
ICAgICAgIHBvaW50LT5pZCA9IGV2YXNfdG91Y2hfcG9pbnRfbGlzdF9udGhfaWRfZ2V0KHNtYXJ0
RGF0YS0+YmFzZS5ldmFzLCBpKTsKLSAgICAgICAgZXZhc190b3VjaF9wb2ludF9saXN0X250aF94
eV9nZXQoc21hcnREYXRhLT5iYXNlLmV2YXMsIGksICZwb2ludC0+eCwgJnBvaW50LT55KTsKLSAg
ICAgICAgcG9pbnQtPnN0YXRlID0gZXZhc190b3VjaF9wb2ludF9saXN0X250aF9zdGF0ZV9nZXQo
c21hcnREYXRhLT5iYXNlLmV2YXMsIGkpOwotICAgICAgICBwb2ludHMgPSBlaW5hX2xpc3RfYXBw
ZW5kKHBvaW50cywgcG9pbnQpOwotICAgIH0KLQotICAgIGV3a192aWV3X2ZlZWRfdG91Y2hfZXZl
bnQoZXdrVmlldywgdHlwZSwgcG9pbnRzLCBldmFzX2tleV9tb2RpZmllcl9nZXQoc21hcnREYXRh
LT5iYXNlLmV2YXMpKTsKLQotICAgIHZvaWQqIGRhdGE7Ci0gICAgRUlOQV9MSVNUX0ZSRUUocG9p
bnRzLCBkYXRhKQotICAgICAgICBkZWxldGUgc3RhdGljX2Nhc3Q8RXdrX1RvdWNoX1BvaW50Kj4o
ZGF0YSk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9ld2tfdmlld19vbl90b3VjaF9kb3duKHZvaWQqIC8q
IGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQq
IC8qIGV2ZW50SW5mbyAqLykKLXsKLSAgICBfZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudF91c2lu
Z190b3VjaF9wb2ludF9saXN0X29mX2V2YXMoZXdrVmlldywgRVdLX1RPVUNIX1NUQVJUKTsKLX0K
LQotc3RhdGljIHZvaWQgX2V3a192aWV3X29uX3RvdWNoX3VwKHZvaWQqIC8qIGRhdGEgKi8sIEV2
YXMqIC8qIGNhbnZhcyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5m
byAqLykKLXsKLSAgICBfZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudF91c2luZ190b3VjaF9wb2lu
dF9saXN0X29mX2V2YXMoZXdrVmlldywgRVdLX1RPVUNIX0VORCk7Ci19Ci0KLXN0YXRpYyB2b2lk
IF9ld2tfdmlld19vbl90b3VjaF9tb3ZlKHZvaWQqIC8qIGRhdGEgKi8sIEV2YXMqIC8qIGNhbnZh
cyAqLywgRXZhc19PYmplY3QqIGV3a1ZpZXcsIHZvaWQqIC8qIGV2ZW50SW5mbyAqLykKLXsKLSAg
ICBfZXdrX3ZpZXdfZmVlZF90b3VjaF9ldmVudF91c2luZ190b3VjaF9wb2ludF9saXN0X29mX2V2
YXMoZXdrVmlldywgRVdLX1RPVUNIX01PVkUpOwotfQotI2VuZGlmCi0KIHN0YXRpYyBFdmFzX1Nt
YXJ0X0NsYXNzIGdfcGFyZW50U21hcnRDbGFzcyA9IEVWQVNfU01BUlRfQ0xBU1NfSU5JVF9OVUxM
OwogCiBzdGF0aWMgdm9pZCBfZXdrX3ZpZXdfaW1wbF9kZWwoRXdrVmlld0ltcGwqIGltcGwpCkBA
IC00MzksOCArMzcyLDYgQEAgc3RhdGljIHZvaWQgX2V3a192aWV3X3NtYXJ0X2FkZChFdmFzX09i
amVjdCogZXdrVmlldykKICAgICBldmFzX29iamVjdF9zbWFydF9tZW1iZXJfYWRkKHNtYXJ0RGF0
YS0+aW1hZ2UsIGV3a1ZpZXcpOwogICAgIGV2YXNfb2JqZWN0X3Nob3coc21hcnREYXRhLT5pbWFn
ZSk7CiAKLSAgICBld2tfdmlld19tb3VzZV9ldmVudHNfZW5hYmxlZF9zZXQoZXdrVmlldywgdHJ1
ZSk7Ci0KICNkZWZpbmUgQ09OTkVDVChzLCBjKSBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19h
ZGQoZXdrVmlldywgcywgYywgc21hcnREYXRhKQogICAgIENPTk5FQ1QoRVZBU19DQUxMQkFDS19G
T0NVU19JTiwgX2V3a192aWV3X29uX2ZvY3VzX2luKTsKICAgICBDT05ORUNUKEVWQVNfQ0FMTEJB
Q0tfRk9DVVNfT1VULCBfZXdrX3ZpZXdfb25fZm9jdXNfb3V0KTsKQEAgLTc1MCw3ICs2ODEsNyBA
QCBFd2tfQ29udGV4dCogZXdrX3ZpZXdfY29udGV4dF9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3
a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEs
IDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDAp
OwogCi0gICAgcmV0dXJuIGltcGwtPmNvbnRleHQuZ2V0KCk7CisgICAgcmV0dXJuIGltcGwtPmV3
a0NvbnRleHQoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X3VybF9zZXQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHVybCkKQEAgLTc3MCw3ICs3MDEsNyBAQCBjb25zdCBjaGFy
KiBld2tfdmlld191cmxfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCAwKTsKICAgICBFV0tfVklF
V19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBpbXBsLCAwKTsKIAotICAgIHJldHVybiBp
bXBsLT51cmw7CisgICAgcmV0dXJuIGltcGwtPnVybCgpOwogfQogCiBjb25zdCBjaGFyICpld2tf
dmlld19pY29uX3VybF9nZXQoY29uc3QgRXZhc19PYmplY3QgKmV3a1ZpZXcpCkBAIC03NzgsNyAr
NzA5LDcgQEAgY29uc3QgY2hhciAqZXdrX3ZpZXdfaWNvbl91cmxfZ2V0KGNvbnN0IEV2YXNfT2Jq
ZWN0ICpld2tWaWV3KQogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21h
cnREYXRhLCAwKTsKICAgICBFV0tfVklFV19JTVBMX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBp
bXBsLCAwKTsKIAotICAgIHJldHVybiBpbXBsLT5mYXZpY29uVVJMOworICAgIHJldHVybiBpbXBs
LT5mYXZpY29uVVJMKCk7CiB9CiAKIEVpbmFfQm9vbCBld2tfdmlld19yZWxvYWQoRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCkBAIC04MTgsNyArNzQ5LDcgQEAgRXdrX1NldHRpbmdzKiBld2tfdmlld19z
ZXR0aW5nc19nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0Rf
R0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIDApOwogCi0gICAgcmV0dXJuIGltcGwtPnNl
dHRpbmdzLmdldCgpOworICAgIHJldHVybiBpbXBsLT5zZXR0aW5ncygpOwogfQogCiBjb25zdCBj
aGFyKiBld2tfdmlld190aXRsZV9nZXQoY29uc3QgRXZhc19PYmplY3QqIGV3a1ZpZXcpCkBAIC04
MjYsMTAgKzc1Nyw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3RpdGxlX2dldChjb25zdCBFdmFz
X09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcs
IHNtYXJ0RGF0YSwgMCk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0
YSwgaW1wbCwgMCk7CiAKLSAgICBDU3RyaW5nIHRpdGxlID0gaW1wbC0+cGFnZVByb3h5LT5wYWdl
VGl0bGUoKS51dGY4KCk7Ci0gICAgaW1wbC0+dGl0bGUgPSB0aXRsZS5kYXRhKCk7Ci0KLSAgICBy
ZXR1cm4gaW1wbC0+dGl0bGU7CisgICAgcmV0dXJuIGltcGwtPnRpdGxlKCk7CiB9CiAKIC8qKgpA
QCAtODkxLDEwICs4MTksNyBAQCB2b2lkIGV3a192aWV3X3RoZW1lX3NldChFdmFzX09iamVjdCog
ZXdrVmlldywgY29uc3QgY2hhciogcGF0aCkKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJO
KGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgaW1wbCk7CiAKLSAgICBpZiAoaW1wbC0+dGhlbWUgIT0gcGF0aCkgewotICAgICAg
ICBpbXBsLT50aGVtZSA9IHBhdGg7Ci0gICAgICAgIGltcGwtPnBhZ2VQcm94eS0+c2V0VGhlbWVQ
YXRoKHBhdGgpOwotICAgIH0KKyAgICBpbXBsLT5zZXRUaGVtZVBhdGgocGF0aCk7CiB9CiAKIGNv
bnN0IGNoYXIqIGV3a192aWV3X3RoZW1lX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykK
QEAgLTkwMiw3ICs4MjcsNyBAQCBjb25zdCBjaGFyKiBld2tfdmlld190aGVtZV9nZXQoY29uc3Qg
RXZhc19PYmplY3QqIGV3a1ZpZXcpCiAgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tW
aWV3LCBzbWFydERhdGEsIDApOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFy
dERhdGEsIGltcGwsIDApOwogCi0gICAgcmV0dXJuIGltcGwtPnRoZW1lOworICAgIHJldHVybiBp
bXBsLT50aGVtZVBhdGgoKTsKIH0KIAogRWluYV9Cb29sIGV3a192aWV3X2JhY2soRXZhc19PYmpl
Y3QqIGV3a1ZpZXcpCkBAIC05OTQsMTMgKzkxOSw3IEBAIGNvbnN0IGNoYXIqIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfY3VzdG9tX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgMCk7CiAgICAg
RVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgMCk7CiAKLSAgICBT
dHJpbmcgY3VzdG9tRW5jb2RpbmcgPSBpbXBsLT5wYWdlUHJveHktPmN1c3RvbVRleHRFbmNvZGlu
Z05hbWUoKTsKLSAgICBpZiAoY3VzdG9tRW5jb2RpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIGltcGwtPmN1c3RvbUVuY29kaW5nID0gY3VzdG9tRW5jb2RpbmcudXRmOCgp
LmRhdGEoKTsKLQotICAgIHJldHVybiBpbXBsLT5jdXN0b21FbmNvZGluZzsKKyAgICByZXR1cm4g
aW1wbC0+Y3VzdG9tVGV4dEVuY29kaW5nTmFtZSgpOwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdf
c2V0dGluZ19lbmNvZGluZ19jdXN0b21fc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBj
aGFyKiBlbmNvZGluZykKQEAgLTEwMDgsOCArOTI3LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X3Nl
dHRpbmdfZW5jb2RpbmdfY3VzdG9tX3NldChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgY2hh
cioKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFs
c2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZh
bHNlKTsKIAotICAgIGltcGwtPmN1c3RvbUVuY29kaW5nID0gZW5jb2Rpbmc7Ci0gICAgaW1wbC0+
cGFnZVByb3h5LT5zZXRDdXN0b21UZXh0RW5jb2RpbmdOYW1lKGVuY29kaW5nID8gZW5jb2Rpbmcg
OiBTdHJpbmcoKSk7CisgICAgaW1wbC0+c2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShlbmNvZGlu
Zyk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTEwOTYsMjAgKzEwMTQsNyBAQCBFaW5hX0Jv
b2wgZXdrX3ZpZXdfbW91c2VfZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3
LCBFaW5hX0Jvb2wgZW5hYgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywg
c21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0
RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAgZW5hYmxlZCA9ICEhZW5hYmxlZDsKLSAgICBpZiAo
aW1wbC0+YXJlTW91c2VFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCi0gICAgICAgIHJldHVybiB0
cnVlOwotCi0gICAgaW1wbC0+YXJlTW91c2VFdmVudHNFbmFibGVkID0gZW5hYmxlZDsKLSAgICBp
ZiAoZW5hYmxlZCkgewotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdr
VmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fbW91c2VfZG93biwg
c21hcnREYXRhKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1Zp
ZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl9tb3VzZV91cCwgc21hcnRE
YXRhKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3a1ZpZXcsIEVW
QVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUsIHNtYXJ0RGF0
YSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVs
KGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfRE9XTiwgX2V3a192aWV3X29uX21vdXNlX2Rv
d24pOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoZXdrVmlldywgRVZB
U19DQUxMQkFDS19NT1VTRV9VUCwgX2V3a192aWV3X29uX21vdXNlX3VwKTsKLSAgICAgICAgZXZh
c19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVsKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0Vf
TU9WRSwgX2V3a192aWV3X29uX21vdXNlX21vdmUpOwotICAgIH0KKyAgICBpbXBsLT5zZXRNb3Vz
ZUV2ZW50c0VuYWJsZWQoISFlbmFibGVkKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTEx
OSw3ICsxMDI0LDcgQEAgRWluYV9Cb29sIGV3a192aWV3X21vdXNlX2V2ZW50c19lbmFibGVkX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrVmlldykKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVU
VVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09S
X1JFVFVSTihzbWFydERhdGEsIGltcGwsIGZhbHNlKTsKIAotICAgIHJldHVybiBpbXBsLT5hcmVN
b3VzZUV2ZW50c0VuYWJsZWQ7CisgICAgcmV0dXJuIGltcGwtPm1vdXNlRXZlbnRzRW5hYmxlZCgp
OwogfQogCiBFaW5hX0Jvb2wgZXdrX3ZpZXdfY29sb3JfcGlja2VyX2NvbG9yX3NldChFdmFzX09i
amVjdCogZXdrVmlldywgaW50IHIsIGludCBnLCBpbnQgYiwgaW50IGEpCkBAIC0xMTI3LDE0ICsx
MDMyLDggQEAgRWluYV9Cb29sIGV3a192aWV3X2NvbG9yX3BpY2tlcl9jb2xvcl9zZXQoRXZhc19P
YmplY3QqIGV3a1ZpZXcsIGludCByLCBpbnQgZywgaW4KICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9D
T0xPUikKICAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSwg
ZmFsc2UpOwogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIGltcGws
IGZhbHNlKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW1wbC0+Y29sb3JQ
aWNrZXJSZXN1bHRMaXN0ZW5lciwgZmFsc2UpOwotCi0gICAgV2ViQ29yZTo6Q29sb3IgY29sb3Ig
PSBXZWJDb3JlOjpDb2xvcihyLCBnLCBiLCBhKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1Jl
Zj4gY29sb3JTdHJpbmcoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29s
b3Iuc2VyaWFsaXplZCgpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICBXS0NvbG9yUGlja2VyUmVzdWx0
TGlzdGVuZXJTZXRDb2xvcihpbXBsLT5jb2xvclBpY2tlclJlc3VsdExpc3RlbmVyLmdldCgpLCBj
b2xvclN0cmluZy5nZXQoKSk7Ci0gICAgaW1wbC0+Y29sb3JQaWNrZXJSZXN1bHRMaXN0ZW5lci5j
bGVhcigpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGltcGwtPnNldENvbG9yUGlj
a2VyQ29sb3IoV2ViQ29yZTo6Q29sb3IociwgZywgYiwgYSkpOwogI2Vsc2UKICAgICByZXR1cm4g
ZmFsc2U7CiAjZW5kaWYKQEAgLTExNjQsMzEgKzEwNjMsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdf
dG91Y2hfZXZlbnRzX2VuYWJsZWRfc2V0KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFaW5hX0Jvb2wg
ZW5hYgogICAgIEVXS19WSUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBm
YWxzZSk7CiAgICAgRVdLX1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwg
ZmFsc2UpOwogCi0gICAgZW5hYmxlZCA9ICEhZW5hYmxlZDsKLSAgICBpZiAoaW1wbC0+YXJlVG91
Y2hFdmVudHNFbmFibGVkID09IGVuYWJsZWQpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAg
aW1wbC0+YXJlVG91Y2hFdmVudHNFbmFibGVkID0gZW5hYmxlZDsKLSAgICBpZiAoZW5hYmxlZCkg
ewotICAgICAgICAvLyBGSVhNRTogV2UgaGF2ZSB0byBjb25uZWN0IHRvdWNoIGNhbGxiYWNrcyB3
aXRoIG1vdXNlIGFuZCBtdWx0aSBldmVudHMKLSAgICAgICAgLy8gYmVjYXVzZSB0aGUgRXZhcyBj
cmVhdGVzIG1vdXNlIGV2ZW50cyBmb3IgZmlyc3QgdG91Y2ggYW5kIG11bHRpIGV2ZW50cwotICAg
ICAgICAvLyBmb3Igc2Vjb25kIGFuZCB0aGlyZCB0b3VjaGVzLiBCZWxvdyBjb2RlcyBzaG91bGQg
YmUgZml4ZWQgd2hlbiB0aGUgRXZhcwotICAgICAgICAvLyBzdXBwb3J0cyB0aGUgdG91Y2ggZXZl
bnRzLgotICAgICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3Nzg1IGZvciBkZXRhaWxzLgotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFj
a19hZGQoZXdrVmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fdG91
Y2hfZG93biwgc21hcnREYXRhKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tf
YWRkKGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfVVAsIF9ld2tfdmlld19vbl90b3VjaF91
cCwgc21hcnREYXRhKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKGV3
a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTU9VU0VfTU9WRSwgX2V3a192aWV3X29uX3RvdWNoX21vdmUs
IHNtYXJ0RGF0YSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZChld2tW
aWV3LCBFVkFTX0NBTExCQUNLX01VTFRJX0RPV04sIF9ld2tfdmlld19vbl90b3VjaF9kb3duLCBz
bWFydERhdGEpOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmll
dywgRVZBU19DQUxMQkFDS19NVUxUSV9VUCwgX2V3a192aWV3X29uX3RvdWNoX3VwLCBzbWFydERh
dGEpOwotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQoZXdrVmlldywgRVZB
U19DQUxMQkFDS19NVUxUSV9NT1ZFLCBfZXdrX3ZpZXdfb25fdG91Y2hfbW92ZSwgc21hcnREYXRh
KTsKLSAgICB9IGVsc2UgewotICAgICAgICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19kZWwo
ZXdrVmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9ET1dOLCBfZXdrX3ZpZXdfb25fdG91Y2hfZG93
bik7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChld2tWaWV3LCBFVkFT
X0NBTExCQUNLX01PVVNFX1VQLCBfZXdrX3ZpZXdfb25fdG91Y2hfdXApOwotICAgICAgICBldmFz
X29iamVjdF9ldmVudF9jYWxsYmFja19kZWwoZXdrVmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9N
T1ZFLCBfZXdrX3ZpZXdfb25fdG91Y2hfbW92ZSk7Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50
X2NhbGxiYWNrX2RlbChld2tWaWV3LCBFVkFTX0NBTExCQUNLX01VTFRJX0RPV04sIF9ld2tfdmll
d19vbl90b3VjaF9kb3duKTsKLSAgICAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfZGVs
KGV3a1ZpZXcsIEVWQVNfQ0FMTEJBQ0tfTVVMVElfVVAsIF9ld2tfdmlld19vbl90b3VjaF91cCk7
Ci0gICAgICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2RlbChld2tWaWV3LCBFVkFTX0NB
TExCQUNLX01VTFRJX01PVkUsIF9ld2tfdmlld19vbl90b3VjaF9tb3ZlKTsKLSAgICB9CisgICAg
aW1wbC0+c2V0VG91Y2hFdmVudHNFbmFibGVkKCEhZW5hYmxlZCk7CiAKICAgICByZXR1cm4gdHJ1
ZTsKICNlbHNlCkBAIC0xMjAyLDcgKzEwNzcsNyBAQCBFaW5hX0Jvb2wgZXdrX3ZpZXdfdG91Y2hf
ZXZlbnRzX2VuYWJsZWRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIEVXS19W
SUVXX1NEX0dFVF9PUl9SRVRVUk4oZXdrVmlldywgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRVdL
X1ZJRVdfSU1QTF9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgaW1wbCwgZmFsc2UpOwogCi0gICAg
cmV0dXJuIGltcGwtPmFyZVRvdWNoRXZlbnRzRW5hYmxlZDsKKyAgICByZXR1cm4gaW1wbC0+dG91
Y2hFdmVudHNFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJJbnNwZWN0b3JQcm94eUVm
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZs
LmNwcAppbmRleCA4NGJhMmIzLi44MmY4M2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvZWZsL1dlYkluc3BlY3RvclByb3h5RWZsLmNwcApAQCAtOTcsMTIgKzk3LDEz
IEBAIFdlYlBhZ2VQcm94eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVj
dG9yUGFnZSgpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgbV9pbnNwZWN0b3JWaWV3ID0gZXdr
X3ZpZXdfYmFzZV9hZGQoZWNvcmVfZXZhc19nZXQobV9pbnNwZWN0b3JXaW5kb3cpLCB0b0FQSShw
YWdlKCktPnByb2Nlc3MoKS0+Y29udGV4dCgpKSwgdG9BUEkoaW5zcGVjdG9yUGFnZUdyb3VwKCkp
KTsKLSAgICBld2tfdmlld190aGVtZV9zZXQobV9pbnNwZWN0b3JWaWV3LCBURVNUX1RIRU1FX0RJ
UiIvZGVmYXVsdC5lZGoiKTsKKyAgICBFd2tWaWV3SW1wbCogaW5zcGVjdG9yVmlld0ltcGwgPSBF
d2tWaWV3SW1wbDo6ZnJvbUV2YXNPYmplY3QobV9pbnNwZWN0b3JWaWV3KTsKKyAgICBpbnNwZWN0
b3JWaWV3SW1wbC0+c2V0VGhlbWVQYXRoKFRFU1RfVEhFTUVfRElSICIvZGVmYXVsdC5lZGoiKTsK
IAotICAgIEV3a19TZXR0aW5ncyogc2V0dGluZ3MgPSBld2tfdmlld19zZXR0aW5nc19nZXQobV9p
bnNwZWN0b3JWaWV3KTsKKyAgICBFd2tfU2V0dGluZ3MqIHNldHRpbmdzID0gaW5zcGVjdG9yVmll
d0ltcGwtPnNldHRpbmdzKCk7CiAgICAgZXdrX3NldHRpbmdzX2ZpbGVfYWNjZXNzX2Zyb21fZmls
ZV91cmxzX2FsbG93ZWRfc2V0KHNldHRpbmdzLCB0cnVlKTsKIAotICAgIHJldHVybiBFd2tWaWV3
SW1wbDo6ZnJvbUV2YXNPYmplY3QobV9pbnNwZWN0b3JWaWV3KS0+cGFnZSgpOworICAgIHJldHVy
biBpbnNwZWN0b3JWaWV3SW1wbC0+cGFnZSgpOwogfQogCiB2b2lkIFdlYkluc3BlY3RvclByb3h5
OjpwbGF0Zm9ybU9wZW4oKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>