<?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>218477</bug_id>
          
          <creation_ts>2020-11-02 20:01:56 -0800</creation_ts>
          <short_desc>Scroll position can get reset after programmatic scroll</short_desc>
          <delta_ts>2020-11-03 12:04:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>koivisto</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1703804</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-02 20:01:56 -0800</bug_when>
    <thetext>Scroll position can get reset after programmatic scroll</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703805</commentid>
    <comment_count>1</comment_count>
      <attachid>413001</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-02 20:10:12 -0800</bug_when>
    <thetext>Created attachment 413001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703806</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-02 20:10:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/70978102&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703817</commentid>
    <comment_count>3</comment_count>
      <attachid>413005</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-02 22:39:44 -0800</bug_when>
    <thetext>Created attachment 413005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703895</commentid>
    <comment_count>4</comment_count>
      <attachid>413005</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-03 02:52:37 -0800</bug_when>
    <thetext>Comment on attachment 413005
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:405
&gt; +//    LOG(Scrolling, &quot;\nScrollingTree %p applyLayerPositions (main thread %d)&quot;, this, isMainThread());

Stray //

&gt; Source/WebCore/page/scrolling/ScrollingTree.cpp:582
&gt; +    LockHolder locker(m_pendingScrollUpdatesLock);

I prefer

auto locker = holdLock(m_pendingScrollUpdatesLock);

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:221
&gt; +        ScrollUpdate() = default;
&gt; +        ScrollUpdate(ScrollingNodeID scrollingNodeID, FloatPoint point, Optional&lt;FloatPoint&gt; viewportOrigin, ScrollingLayerPositionAction udpateAction)
&gt; +            : nodeID(scrollingNodeID)
&gt; +            , scrollPosition(point)
&gt; +            , layoutViewportOrigin(viewportOrigin)
&gt; +            , updateLayerPositionAction(udpateAction)
&gt; +        { }

You can probably delete these explicit constructors and the code will still compile as-is.

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:225
&gt; +        FloatPoint scrollPosition;
&gt; +        Optional&lt;FloatPoint&gt; layoutViewportOrigin;

...except these may need { }.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703896</commentid>
    <comment_count>5</comment_count>
      <attachid>413005</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-11-03 02:53:45 -0800</bug_when>
    <thetext>Comment on attachment 413005
Patch

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

&gt; Source/WebCore/page/scrolling/ScrollingTree.h:216
&gt; +        ScrollUpdate(ScrollingNodeID scrollingNodeID, FloatPoint point, Optional&lt;FloatPoint&gt; viewportOrigin, ScrollingLayerPositionAction udpateAction)

Spelling udpateAction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1704127</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-11-03 12:04:54 -0800</bug_when>
    <thetext>https://trac.webkit.org/r269312</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413001</attachid>
            <date>2020-11-02 20:10:12 -0800</date>
            <delta_ts>2020-11-02 22:30:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218477-20201102201011.patch</filename>
            <type>text/plain</type>
            <size>21659</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVhZjFmOTJlNTJlY2Vj
ZGViN2EzOTM5NGJjMzM4NzcxMDYzMzAyYi4uMmRjMmI0MTQ0Y2U2ODdhYmMyYWRiNTA5ZWI2NzRj
Mzk5MTI5ZjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTExLTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbCBwb3Np
dGlvbiBjYW4gZ2V0IHJlc2V0IGFmdGVyIHByb2dyYW1tYXRpYyBzY3JvbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFydCBvZiByZGFy
Oi8vcHJvYmxlbS82OTU5OTUzMTogU2Nyb2xsaW5nIG9uIG5ldGZsaXguY29tIHNvbWV0aW1lcyBq
dW1wcyB0byB0aGUgdG9wLgorCisgICAgICAgIFNjcm9sbGluZyB0aHJlYWQgc2Nyb2xsIG5vdGlm
aWNhdGlvbnMgYXJlIGhhbmRsZWQgb24gdGhlIG1haW4gdGhyZWFkIGFzeW5jaHJvbm91c2x5LCBh
bmQKKyAgICAgICAgdGhlcmUgYXJlIHR3byBzb3VyY2VzIG9mIGRlbGF5OiBmaXJzdCwgdGhlIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaCgpIGluIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xs
aW5nVHJlZU5vZGVEaWRTY3JvbGwoKSwKKyAgICAgICAgYW5kIHNlY29uZCB0aGUgemVyby1kZWxh
eSBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyIGluIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgcHJvYmxlbSB3aGVuIGRvaW5nIHBy
b2dyYW1tYXRpYyBzY3JvbGxzLCBzaW5jZSB0aGUgbWFpbiB0aHJlYWQgY2FuCisgICAgICAgIHBy
b2dyYW1tYXRpY2FsbHkgc2Nyb2xsLCB0aGVuIHRoZSBhYm92ZSBhc3luY2hyb255IG1lYW5zIHRo
YXQKKyAgICAgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKCkgZ2V0cyBjYWxsZWQgZm9yIGFuIGVhcmxpZXIKKyAgICAgICAg
dXNlciBzY3JvbGwgKG9yLCBhcyBpcyBvZnRlbiB0aGUgY2FzZSBvbiBuZXRmbGl4LmNvbSwgYSBz
Y3JvbGwgdHJpZ2dlcmVkIGJ5IHRoZQorICAgICAgICBydWJiZXJiYW5kaW5nIHRpbWVyIG9uIHRo
ZSBzY3JvbGxpbmcgdGhyZWFkKS4KKworICAgICAgICBUaGlzIHBhdGNoZXMgYWRkcmVzc2VzIHRo
ZXNlIG91dC1vZi1vcmRlciBzY3JvbGxzIGJ5IHN0b3Jpbmcgc2Nyb2xsaW5nIHRocmVhZCBzY3Jv
bGwgdXBkYXRlcworICAgICAgICBpbiBhIHRocmVhZHNhZmUgZGF0YSBzdHJ1Y3R1cmUgb24gdGhl
IHNjcm9sbGluZyB0cmVlLCBhbmQgYWx3YXlzIGFwcGx5aW5nIHRob3NlIG9uIHRoZSBtYWluCisg
ICAgICAgIHRocmVhZCBiZWZvcmUgaGFuZGxpbmcgb3RoZXIgc2Nyb2xsIGNoYW5nZXMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHplcm8tZGVsYXkgdGltZXIsIHdo
aWNoIGRpZCBzZXJ2ZSBhIHB1cnBvc2Ugb2YgY29hbGVzY2luZyBzY3JvbGwKKyAgICAgICAgbm90
aWZpY2F0aW9ucyBmcm9tIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGFuZCBVSSBwcm9jZXNzIChmb3Ig
aU9TKS4gV2l0aCB0aGUgcGF0Y2gsIHdlIHN0aWxsCisgICAgICAgIGdldCBjb2FsZXNjaW5nIHBl
ciBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKS4gV2UgbG9zZSBjb2FsZXNjaW5nIG9uIGlPUywg
YnV0IHRob3NlCisgICAgICAgIG5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIGp1c3Qgb25jZSBwZXIg
ZnJhbWUuIElmIHdlIGZpbmQgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGNvYWxlc2NlLAorICAg
ICAgICB3ZSBjYW4gcHV0IGEgdGltZXIgYmFjay4KKworICAgICAgICBOb3QgdGVzdGFibGUgYmVj
YXVzZSBpdCdzIHZlcnkgdGltaW5nIGRlcGVuZGVudC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c3luY2hyb25pemVTdGF0ZUZyb21TY3JvbGxpbmdUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxl
dGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6YXBwbHlTY3JvbGxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNj
aGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9sbFVwZGF0ZTo6U2No
ZWR1bGVkU2Nyb2xsVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9sbFVwZGF0ZTo6bWF0Y2hlc1VwZGF0ZVR5
cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6YXBwbHlMYXllclBvc2l0
aW9uc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmFkZFBlbmRp
bmdTY3JvbGxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6dGFrZVBl
bmRpbmdTY3JvbGxVcGRhdGVzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpTY3JvbGxVcGRhdGU6OlNj
cm9sbFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpTY3JvbGxVcGRh
dGU6OmNhbk1lcmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OlNj
cm9sbFVwZGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKwogMjAyMC0xMS0wMiAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFJFR1JFU1NJT04o
cjI2OTE0NCkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9z
Y3JvbGxJbnRvVmlldy1zY3JvbGxNYXJnaW4uaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3
OTE3NWQ2MDVkZjY2ZDFjZThlNGUxYTBmMjgzMTI5MWIwZjFjNzEuLmFmNTA3NGMzZTNhOWE0NDhk
NDM0NGM1NWRiOWUzOTcwMjk0NWJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAt
MTEtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAg
U2Nyb2xsIHBvc2l0aW9uIGNhbiBnZXQgcmVzZXQgYWZ0ZXIgcHJvZ3JhbW1hdGljIHNjcm9sbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9z
aXRpb25DaGFuZ2VkRm9yTm9kZSk6CisKIDIwMjAtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Agc2VuZGluZyBvcmlnaW5zIGZyb20gV2ViUHJv
Y2VzcyB0byBVSVByb2Nlc3MgZm9yIGdldFVzZXJNZWRpYSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCAzMDM3OTAwNmUzNmQwNGRmYzEzNDE3MWYyNzc0MDZlOTdhZjAyNGI2Li4y
ZTZlZTNjMjRlNTQ4YWUyODI2MDE3ZmE4OWNiZjExOTlmYmE2ZDFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtNTgsNyArNTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkK
ICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCi0gICAgLCBtX3VwZGF0ZU5vZGVTY3Jv
bGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0K
QEAgLTI1NSw3ICsyNTQsNiBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVl
c3RTY3JvbGxQb3NpdGlvblVwZGF0ZShTY3JvbGxhYmxlQXJlYSYgc2NybwogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0KICAgICBhdXRvIHNjcm9s
bGluZ05vZGVJRCA9IHNjcm9sbGFibGVBcmVhLnNjcm9sbGluZ05vZGVJRCgpOwogICAgIGlmICgh
c2Nyb2xsaW5nTm9kZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzAsNyArMjY4LDcg
QEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm8KICAgICBib29sIGluQmFja0ZvcndhcmRDYWNoZSA9
IGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5iYWNrRm9yd2FyZENhY2hlU3RhdGUoKSAh
PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlOwogICAgIGJvb2wgaW5Qcm9ncmFtbWF0
aWNTY3JvbGwgPSBzY3JvbGxhYmxlQXJlYS5jdXJyZW50U2Nyb2xsVHlwZSgpID09IFNjcm9sbFR5
cGU6OlByb2dyYW1tYXRpYzsKICAgICBpZiAoaW5Qcm9ncmFtbWF0aWNTY3JvbGwgfHwgaW5CYWNr
Rm9yd2FyZENhY2hlKQotICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3Jv
bGwoc2Nyb2xsaW5nTm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgeyB9LCBTY3JvbGxUeXBlOjpQcm9n
cmFtbWF0aWMsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCwgSW5mb3JtV2hlZWxF
dmVudE1vbml0b3I6Ok5vKTsKKyAgICAgICAgYXBwbHlTY3JvbGxVcGRhdGUoc2Nyb2xsaW5nTm9k
ZUlELCBzY3JvbGxQb3NpdGlvbiwgeyB9LCBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCwgSW5mb3JtV2hlZWxFdmVudE1vbml0b3I6Ok5v
KTsKIAogICAgIEFTU0VSVChpblByb2dyYW1tYXRpY1Njcm9sbCA9PSAoc2Nyb2xsVHlwZSA9PSBT
Y3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMpKTsKIApAQCAtMzAxLDYgKzI5OSw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMo
KQogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbml6ZVN0YXRlRnJvbVNj
cm9sbGluZ1RyZWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXBwbHlQ
ZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCiAgICAgbV9zY3JvbGxpbmdUcmVlLT50cmF2ZXJzZVNj
cm9sbGluZ1RyZWUoWyZdKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFNjcm9sbGluZ05vZGVUeXBl
LCBPcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2lu
dD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpIHsK
ICAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICYmIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KSB7
CkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpub3Rl
U2Nyb2xsaW5nVGhyZWFkU3luY0NvbXBsZXRlRm9yTm9kZShTY3JvbGxpbmcKIHsKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwg
c3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsOiBSZW1vdmluZyBkZWZlcnJhbCBvbiAi
IDw8IG5vZGVJRCA8PCAiIGZvciByZWFzb24gIiA8PCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxF
dmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bm90ZVNjcm9sbGluZ1RocmVhZFN5bmNDb21wbGV0ZUZvck5vZGU6IFJlbW92aW5nIGRl
ZmVycmFsIG9uICIgPDwgbm9kZUlEIDw8ICIgZm9yIHJlYXNvbiAiIDw8IFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAgICAgIG1fcGFnZS0+d2hl
ZWxFdmVudFRlc3RNb25pdG9yKCktPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0
X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG5v
ZGVJRCksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7
CiAgICAgfQogI2Vsc2UKQEAgLTMyMiwzMSArMzIxLDEzIEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6bm90ZVNjcm9sbGluZ1RocmVhZFN5bmNDb21wbGV0ZUZvck5vZGUoU2Nyb2xs
aW5nCiAjZW5kaWYKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVs
ZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8Rmxv
YXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0
aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMoKQogewotICAgIFNjaGVkdWxlZFNj
cm9sbFVwZGF0ZSBzY3JvbGxVcGRhdGUobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmll
d3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwotICAgIAotICAgIGlm
IChtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLm1hdGNoZXNVcGRhdGVUeXBlKHNjcm9sbFVwZGF0
ZSkpIHsKLSAgICAgICAgICAgIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnNjcm9sbFBvc2l0aW9u
ID0gc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgICAgICBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5s
YXlvdXRWaWV3cG9ydE9yaWdpbiA9IGxheW91dFZpZXdwb3J0T3JpZ2luOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXJzIGRv
bid0IG1hdGNoIHdoYXQgd2FzIHByZXZpb3VzbHkgc2NoZWR1bGVkLCBkaXNwYXRjaCBpbW1lZGlh
dGVseS4KLSAgICAgICAgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lci5zdG9wKCk7Ci0g
ICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChtX3NjaGVkdWxlZFNj
cm9sbFVwZGF0ZS5ub2RlSUQsIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnNjcm9sbFBvc2l0aW9u
LCBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5sYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlw
ZTo6VXNlciwgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUudXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlv
bik7Ci0gICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChub2RlSUQs
IHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZTo6VXNlciwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7Ci0gICAgICAgIHJldHVybjsKKyAgICBhdXRv
IHNjcm9sbFVwZGF0ZXMgPSBtX3Njcm9sbGluZ1RyZWUtPnRha2VQZW5kaW5nU2Nyb2xsVXBkYXRl
cygpOworICAgIGZvciAoYXV0byYgdXBkYXRlIDogc2Nyb2xsVXBkYXRlcykgeworICAgICAgICBM
T0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMgLSBub2RlICIgPDwgdXBkYXRlLm5vZGVJ
RCA8PCAiIHNjcm9sbCBwb3NpdGlvbiAiIDw8IHVwZGF0ZS5zY3JvbGxQb3NpdGlvbik7CisgICAg
ICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbCh1cGRhdGUubm9kZUlELCB1
cGRhdGUuc2Nyb2xsUG9zaXRpb24sIHVwZGF0ZS5sYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xs
VHlwZTo6VXNlciwgdXBkYXRlLnVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24sIEluZm9ybVdoZWVs
RXZlbnRNb25pdG9yOjpZZXMpOwogICAgIH0KLQotICAgIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRl
ID0gc2Nyb2xsVXBkYXRlOwotICAgIG1fdXBkYXRlTm9kZVNjcm9sbFBvc2l0aW9uVGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7Ci19Ci0KLXZvaWQgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCgpCi17Ci0gICAgdXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRl
Lm5vZGVJRCwgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUuc2Nyb2xsUG9zaXRpb24sIG1fc2NoZWR1
bGVkU2Nyb2xsVXBkYXRlLmxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlOjpVc2VyLCBt
X3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS51cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uKTsKIH0KIAog
RnJhbWVWaWV3KiBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpmcmFtZVZpZXdGb3JTY3JvbGxp
bmdOb2RlKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQpIGNvbnN0CkBAIC0zODEsNiAr
MzYyLDEyIEBAIEZyYW1lVmlldyogQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3
Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAordm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjphcHBseVNjcm9sbFVwZGF0ZShTY3Jv
bGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3Np
dGlvbiwgT3B0aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5
cGUgc2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXll
clBvc2l0aW9uQWN0aW9uLCBJbmZvcm1XaGVlbEV2ZW50TW9uaXRvciBpbmZvcm1XaGVlbEV2ZW50
TW9uaXRvcikKK3sKKyAgICBhcHBseVBlbmRpbmdTY3JvbGxVcGRhdGVzKCk7CisgICAgdXBkYXRl
U2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKHNjcm9sbGluZ05vZGVJRCwgc2Nyb2xsUG9z
aXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBzY3JvbGxUeXBlLCBzY3JvbGxpbmdMYXllclBv
c2l0aW9uQWN0aW9uLCBpbmZvcm1XaGVlbEV2ZW50TW9uaXRvcik7Cit9CisKIHZvaWQgQXN5bmNT
Y3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xs
KFNjcm9sbGluZ05vZGVJRCBzY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9s
bFBvc2l0aW9uLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Ny
b2xsVHlwZSBzY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24sIEluZm9ybVdoZWVsRXZlbnRNb25pdG9yIGluZm9ybVdoZWVs
RXZlbnRNb25pdG9yKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBAIC0zOTUsNyAr
MzgyLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3Np
dGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm8KICAgICBpZiAoIWZyYW1lVmlld1B0cikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFt
IDw8ICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVy
QXN5bmNTY3JvbGwgbm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCA8PCAiIHNjcm9sbFBvc2l0aW9u
ICIgPDwgc2Nyb2xsUG9zaXRpb24gPDwgIiBhY3Rpb24gIiA8PCBzY3JvbGxpbmdMYXllclBvc2l0
aW9uQWN0aW9uKTsKKyAgICBMT0dfV0lUSF9TVFJFQU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Nj
cm9sbCBub2RlICIgPDwgc2Nyb2xsaW5nTm9kZUlEIDw8ICIgIiA8PCBzY3JvbGxUeXBlIDw8ICIg
c2Nyb2xsUG9zaXRpb24gIiA8PCBzY3JvbGxQb3NpdGlvbiA8PCAiIGFjdGlvbiAiIDw8IHNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogCiAgICAgYXV0byYgZnJhbWVWaWV3ID0gKmZyYW1l
Vmlld1B0cjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCA1NjY3OGI3YzNhOTQ4MGIwZjZj
MTE0ZGY3Y2M3YzZjZTFiYWZiYTc3Li40MjNjMDZlNzJiMGUwOWU5MTEzZTgyMWRiY2FhZTFkMDc5
NmFjMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCkBAIC01MSwxMCArNTEsMTAgQEAgcHVibGljOgog
CiAgICAgdm9pZCBzY3JvbGxpbmdTdGF0ZVRyZWVQcm9wZXJ0aWVzQ2hhbmdlZCgpOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBPcHRpb25h
bDxGbG9hdFBvaW50PiYgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbGluZ0xheWVyUG9zaXRp
b25BY3Rpb24pOworICAgIHZvaWQgYXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCiAgICAg
ZW51bSBjbGFzcyBJbmZvcm1XaGVlbEV2ZW50TW9uaXRvciB7IFllcywgTm8gfTsKLSAgICB2b2lk
IHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNv
bnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdp
biwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgSW5mb3JtV2hlZWxF
dmVudE1vbml0b3IgPSBJbmZvcm1XaGVlbEV2ZW50TW9uaXRvcjo6WWVzKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGFwcGx5U2Nyb2xsVXBkYXRlKFNjcm9sbGluZ05vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYsIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3Jv
bGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uLCBJbmZvcm1XaGVlbEV2ZW50TW9u
aXRvciA9IEluZm9ybVdoZWVsRXZlbnRNb25pdG9yOjpZZXMpOwogCiAjaWYgUExBVEZPUk0oQ09D
T0EpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVXaGVlbEV2ZW50UGhhc2UoU2Nyb2xs
aW5nTm9kZUlELCBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkgZmluYWw7CkBAIC0xNTUsMzggKzE1
NSwxNSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBlbnN1cmVSb290U3RhdGVOb2RlRm9yRnJhbWVW
aWV3KEZyYW1lVmlldyYpOwogCi0gICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGxUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzZXRFdmVudFRyYWNraW5nUmVnaW9uc0Rp
cnR5KCk7CiAgICAgdm9pZCB1cGRhdGVFdmVudFRyYWNraW5nUmVnaW9ucygpOwogICAgIAogICAg
IHZvaWQgbm90ZVNjcm9sbGluZ1RocmVhZFN5bmNDb21wbGV0ZUZvck5vZGUoU2Nyb2xsaW5nTm9k
ZUlEKTsKKworICAgIHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNj
cm9sbGluZ05vZGVJRCwgY29uc3QgRmxvYXRQb2ludCYsIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxh
eW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0
aW9uLCBJbmZvcm1XaGVlbEV2ZW50TW9uaXRvcik7CiAgICAgCiAgICAgRnJhbWVWaWV3KiBmcmFt
ZVZpZXdGb3JTY3JvbGxpbmdOb2RlKFNjcm9sbGluZ05vZGVJRCkgY29uc3Q7CiAKLSAgICBUaW1l
ciBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyOwotCi0gICAgc3RydWN0IFNjaGVkdWxl
ZFNjcm9sbFVwZGF0ZSB7Ci0gICAgICAgIFNjaGVkdWxlZFNjcm9sbFVwZGF0ZSgpID0gZGVmYXVs
dDsKLSAgICAgICAgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlKFNjcm9sbGluZ05vZGVJRCBzY3JvbGxp
bmdOb2RlSUQsIEZsb2F0UG9pbnQgcG9pbnQsIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHZpZXdwb3J0
T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHVkcGF0ZUFjdGlvbikKLSAgICAg
ICAgICAgIDogbm9kZUlEKHNjcm9sbGluZ05vZGVJRCkKLSAgICAgICAgICAgICwgc2Nyb2xsUG9z
aXRpb24ocG9pbnQpCi0gICAgICAgICAgICAsIGxheW91dFZpZXdwb3J0T3JpZ2luKHZpZXdwb3J0
T3JpZ2luKQotICAgICAgICAgICAgLCB1cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uKHVkcGF0ZUFj
dGlvbikKLSAgICAgICAgeyB9Ci0KLSAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCB7IDAg
fTsKLSAgICAgICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbjsKLSAgICAgICAgT3B0aW9uYWw8
RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47Ci0gICAgICAgIFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbiB7IFNjcm9sbGluZ0xheWVy
UG9zaXRpb25BY3Rpb246OlN5bmMgfTsKLSAgICAgICAgCi0gICAgICAgIGJvb2wgbWF0Y2hlc1Vw
ZGF0ZVR5cGUoY29uc3QgU2NoZWR1bGVkU2Nyb2xsVXBkYXRlJiBvdGhlcikgY29uc3QKLSAgICAg
ICAgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVJRCA9PSBvdGhlci5ub2RlSUQgJiYgdXBkYXRl
TGF5ZXJQb3NpdGlvbkFjdGlvbiA9PSBvdGhlci51cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uOwot
ICAgICAgICB9Ci0gICAgfTsKLQotICAgIFNjaGVkdWxlZFNjcm9sbFVwZGF0ZSBtX3NjaGVkdWxl
ZFNjcm9sbFVwZGF0ZTsKLQogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdTdGF0ZVRyZWU+
IG1fc2Nyb2xsaW5nU3RhdGVUcmVlOwogICAgIFJlZlB0cjxTY3JvbGxpbmdUcmVlPiBtX3Njcm9s
bGluZ1RyZWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZS5jcHAKaW5kZXggZTczZTZmN2UwNTIzZTFhOWQxNjE2YmE2YzdjMzI5NjE0ZWE4YTIzMy4u
YTljMmM2NTg5NGY4ZjM3MWVlZDA5MGEyYTU2MDNkMjhhZTQ5ZmQ2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTQwMiw3ICs0MDIs
NyBAQCB2b2lkIFNjcm9sbGluZ1RyZWU6OmFwcGx5TGF5ZXJQb3NpdGlvbnNJbnRlcm5hbCgpCiAg
ICAgaWYgKCFtX3Jvb3ROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBMT0coU2Nyb2xsaW5n
LCAiXG5TY3JvbGxpbmdUcmVlICVwIGFwcGx5TGF5ZXJQb3NpdGlvbnMgKG1haW4gdGhyZWFkICVk
KSIsIHRoaXMsIGlzTWFpblRocmVhZCgpKTsKKy8vICAgIExPRyhTY3JvbGxpbmcsICJcblNjcm9s
bGluZ1RyZWUgJXAgYXBwbHlMYXllclBvc2l0aW9ucyAobWFpbiB0aHJlYWQgJWQpIiwgdGhpcywg
aXNNYWluVGhyZWFkKCkpOwogICAgIGFwcGx5TGF5ZXJQb3NpdGlvbnNSZWN1cnNpdmUoKm1fcm9v
dE5vZGUpOwogfQogCkBAIC01NzcsNiArNTc3LDI1IEBAIGJvb2wgU2Nyb2xsaW5nVHJlZTo6bWFp
bkZyYW1lQ2FuUnViYmVyQmFuZEluRGlyZWN0aW9uKFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24p
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCit2b2lkIFNjcm9sbGluZ1RyZWU6OmFkZFBlbmRpbmdT
Y3JvbGxVcGRhdGUoU2Nyb2xsVXBkYXRlJiYgdXBkYXRlKQoreworICAgIExvY2tIb2xkZXIgbG9j
a2VyKG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXNMb2NrKTsKKyAgICBmb3IgKGF1dG8mIGV4aXN0aW5n
VXBkYXRlIDogbV9wZW5kaW5nU2Nyb2xsVXBkYXRlcykgeworICAgICAgICBpZiAoZXhpc3RpbmdV
cGRhdGUuY2FuTWVyZ2UodXBkYXRlKSkgeworICAgICAgICAgICAgZXhpc3RpbmdVcGRhdGUubWVy
Z2UoV1RGTW92ZSh1cGRhdGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXMuYXBwZW5kKFdURk1vdmUodXBkYXRlKSk7
Cit9CisKK1ZlY3RvcjxTY3JvbGxpbmdUcmVlOjpTY3JvbGxVcGRhdGU+IFNjcm9sbGluZ1RyZWU6
OnRha2VQZW5kaW5nU2Nyb2xsVXBkYXRlcygpCit7CisgICAgTG9ja0hvbGRlciBsb2NrZXIobV9w
ZW5kaW5nU2Nyb2xsVXBkYXRlc0xvY2spOworICAgIHJldHVybiBzdGQ6OmV4Y2hhbmdlKG1fcGVu
ZGluZ1Njcm9sbFVwZGF0ZXMsIHsgfSk7Cit9CisKIC8vIENhbiBiZSBjYWxsZWQgZnJvbSB0aGUg
bWFpbiB0aHJlYWQuCiB2b2lkIFNjcm9sbGluZ1RyZWU6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlv
cihTY3JvbGxQaW5uaW5nQmVoYXZpb3IgcGlubmluZykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaAppbmRleCA5NzYxNzI4Mzc3NDVkNmZkY2U5OTRm
NTRkNDM4NjZiNzYzMGI4OTE2Li5kYzQ1ZmM4NTk1MmE2OTQxYTEzZWFlMjYzNTUyOWIzNDAzOWU2
Yzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5o
CkBAIC0yMTEsNiArMjExLDM1IEBAIHB1YmxpYzoKICAgICBib29sIGhhc1Byb2Nlc3NlZFdoZWVs
RXZlbnRzUmVjZW50bHkoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHdpbGxQcm9jZXNzV2hl
ZWxFdmVudCgpOwogCisgICAgc3RydWN0IFNjcm9sbFVwZGF0ZSB7CisgICAgICAgIFNjcm9sbFVw
ZGF0ZSgpID0gZGVmYXVsdDsKKyAgICAgICAgU2Nyb2xsVXBkYXRlKFNjcm9sbGluZ05vZGVJRCBz
Y3JvbGxpbmdOb2RlSUQsIEZsb2F0UG9pbnQgcG9pbnQsIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IHZp
ZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHVkcGF0ZUFjdGlvbikK
KyAgICAgICAgICAgIDogbm9kZUlEKHNjcm9sbGluZ05vZGVJRCkKKyAgICAgICAgICAgICwgc2Ny
b2xsUG9zaXRpb24ocG9pbnQpCisgICAgICAgICAgICAsIGxheW91dFZpZXdwb3J0T3JpZ2luKHZp
ZXdwb3J0T3JpZ2luKQorICAgICAgICAgICAgLCB1cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uKHVk
cGF0ZUFjdGlvbikKKyAgICAgICAgeyB9CisKKyAgICAgICAgU2Nyb2xsaW5nTm9kZUlEIG5vZGVJ
RCB7IDAgfTsKKyAgICAgICAgRmxvYXRQb2ludCBzY3JvbGxQb3NpdGlvbjsKKyAgICAgICAgT3B0
aW9uYWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgICAgIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24gdXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbiB7IFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgfTsKKyAgICAgICAgCisgICAgICAgIGJvb2wgY2Fu
TWVyZ2UoY29uc3QgU2Nyb2xsVXBkYXRlJiBvdGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG5vZGVJRCA9PSBvdGhlci5ub2RlSUQgJiYgdXBkYXRlTGF5ZXJQb3NpdGlv
bkFjdGlvbiA9PSBvdGhlci51cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIG1lcmdlKFNjcm9sbFVwZGF0ZSYmIG90aGVyKQorICAgICAg
ICB7CisgICAgICAgICAgICBzY3JvbGxQb3NpdGlvbiA9IG90aGVyLnNjcm9sbFBvc2l0aW9uOwor
ICAgICAgICAgICAgbGF5b3V0Vmlld3BvcnRPcmlnaW4gPSBvdGhlci5sYXlvdXRWaWV3cG9ydE9y
aWdpbjsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIGFkZFBlbmRpbmdTY3JvbGxVcGRh
dGUoU2Nyb2xsVXBkYXRlJiYpOworICAgIFZlY3RvcjxTY3JvbGxVcGRhdGU+IHRha2VQZW5kaW5n
U2Nyb2xsVXBkYXRlcygpOworCiBwcm90ZWN0ZWQ6CiAgICAgV2hlZWxFdmVudEhhbmRsaW5nUmVz
dWx0IGhhbmRsZVdoZWVsRXZlbnRXaXRoTm9kZShjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmLCBP
cHRpb25TZXQ8V2hlZWxFdmVudFByb2Nlc3NpbmdTdGVwcz4sIFNjcm9sbGluZ1RyZWVOb2RlKik7
CiAKQEAgLTI3OSw2ICszMDgsOSBAQCBwcml2YXRlOgogICAgIExvY2sgbV9zd2lwZVN0YXRlTXV0
ZXg7CiAgICAgU3dpcGVTdGF0ZSBtX3N3aXBlU3RhdGU7CiAKKyAgICBMb2NrIG1fcGVuZGluZ1Nj
cm9sbFVwZGF0ZXNMb2NrOworICAgIFZlY3RvcjxTY3JvbGxVcGRhdGU+IG1fcGVuZGluZ1Njcm9s
bFVwZGF0ZXM7CisKICAgICBMb2NrIG1fbGFzdFdoZWVsRXZlbnRUaW1lTXV0ZXg7CiAgICAgTW9u
b3RvbmljVGltZSBtX2xhc3RXaGVlbEV2ZW50VGltZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKaW5kZXggOTUw
MTZkOTY3YTlmMjBhNDQ0ODYwYWU4YmU1NDMxNTdhNzQ2ZDhmNS4uOTM3OTQ1NmVhZTE3YjA5ODJj
YjVkNTJkOTk1ZmNhZGVkNTRiN2Q0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC0xNDYsMTYgKzE0Niwx
OSBAQCB2b2lkIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5nVHJlZU5vZGVEaWRTY3Jv
bGwoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgICAgICBkZWZlcldoZWVsRXZlbnRUZXN0
Q29tcGxldGlvbkZvclJlYXNvbihyZWludGVycHJldF9jYXN0PFdoZWVsRXZlbnRUZXN0TW9uaXRv
cjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyPihub2RlLnNjcm9sbGluZ05vZGVJRCgpKSwgV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxpbmdUaHJlYWRTeW5jTmVlZGVkKTsKICNlbmRpZgog
Ci0gICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsICIgPDwgbm9kZS5zY3JvbGxpbmdO
b2RlSUQoKSA8PCAiIHRvICIgPDwgc2Nyb2xsUG9zaXRpb24gPDwgIiBib3VuY2luZyB0byBtYWlu
IHRocmVhZCIpOwotCiAgICAgaWYgKFJ1bkxvb3A6OmlzTWFpbigpKSB7Ci0gICAgICAgIG1fc2Ny
b2xsaW5nQ29vcmRpbmF0b3ItPnVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChu
b2RlLnNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRPcmln
aW4sIFNjcm9sbFR5cGU6OlVzZXIsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOworICAg
ICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLT5hcHBseVNjcm9sbFVwZGF0ZShub2RlLnNjcm9s
bGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9s
bFR5cGU6OlVzZXIsIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtzdHJvbmdUaGlzID0g
bWFrZVJlZigqdGhpcyksIG5vZGVJRCA9IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBv
c2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlv
bl0geworICAgIExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVlTm9kZURpZFNjcm9sbCAiIDw8IG5vZGUuc2Nyb2xs
aW5nTm9kZUlEKCkgPDwgIiB0byAiIDw8IHNjcm9sbFBvc2l0aW9uIDw8ICIgYm91bmNpbmcgdG8g
bWFpbiB0aHJlYWQiKTsKKworICAgIGF1dG8gc2Nyb2xsVXBkYXRlID0gU2Nyb2xsVXBkYXRlIHsg
bm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3Jp
Z2luLCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIH07CisgICAgYWRkUGVuZGluZ1Njcm9s
bFVwZGF0ZShXVEZNb3ZlKHNjcm9sbFVwZGF0ZSkpOworCisgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAgICAgICAgaWYgKGF1dG8q
IHNjcm9sbGluZ0Nvb3JkaW5hdG9yID0gc3Ryb25nVGhpcy0+bV9zY3JvbGxpbmdDb29yZGluYXRv
ci5nZXQoKSkKLSAgICAgICAgICAgIHNjcm9sbGluZ0Nvb3JkaW5hdG9yLT5zY2hlZHVsZVVwZGF0
ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBs
YXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAg
ICAgICAgICBzY3JvbGxpbmdDb29yZGluYXRvci0+YXBwbHlQZW5kaW5nU2Nyb2xsVXBkYXRlcygp
OwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xs
aW5nQ29vcmRpbmF0b3IubW0KaW5kZXggZDAyOWRjZDQ5ZTVlMzUxNWZlZThjNTAxOThlZTRlZmY0
ZTkzNGZkYi4uNzI4ZGUzZTUxNGM0NzAwYmI2YTBiNTg3ZGM4NzFiMmQyZjNhZTY3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvci5tbQpA
QCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmJ1aWxk
VHJhbnNhY3Rpb24oUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuCiAvLyBOb3RpZmljYXRp
b24gZnJvbSB0aGUgVUkgcHJvY2VzcyB0aGF0IHdlIHNjcm9sbGVkLgogdm9pZCBSZW1vdGVTY3Jv
bGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdO
b2RlSUQgbm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBzeW5j
TGF5ZXJQb3NpdGlvbikKIHsKLSAgICBzY2hlZHVsZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChub2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBXVEY6Om51bGxvcHQsIHN5bmNMYXll
clBvc2l0aW9uID8gU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6U3luYyA6IFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb246OlNldCk7CisgICAgYXBwbHlTY3JvbGxVcGRhdGUobm9kZUlE
LCBzY3JvbGxQb3NpdGlvbiwgV1RGOjpudWxsb3B0LCBTY3JvbGxUeXBlOjpVc2VyLCBzeW5jTGF5
ZXJQb3NpdGlvbiA/IFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxp
bmdMYXllclBvc2l0aW9uQWN0aW9uOjpTZXQpOwogfQogCiB2b2lkIFJlbW90ZVNjcm9sbGluZ0Nv
b3JkaW5hdG9yOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0NoYW5nZWRGb3JOb2RlKFNjcm9sbGlu
Z05vZGVJRCBub2RlSUQsIHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQo=
</data>
<flag name="commit-queue"
          id="429546"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>413005</attachid>
            <date>2020-11-02 22:39:44 -0800</date>
            <delta_ts>2020-11-03 02:52:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218477-20201102223943.patch</filename>
            <type>text/plain</type>
            <size>21693</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTVhZjFmOTJlNTJlY2Vj
ZGViN2EzOTM5NGJjMzM4NzcxMDYzMzAyYi4uMmRjMmI0MTQ0Y2U2ODdhYmMyYWRiNTA5ZWI2NzRj
Mzk5MTI5ZjE2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDIwLTExLTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFNjcm9sbCBwb3Np
dGlvbiBjYW4gZ2V0IHJlc2V0IGFmdGVyIHByb2dyYW1tYXRpYyBzY3JvbGwKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxODQ3NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgUGFydCBvZiByZGFy
Oi8vcHJvYmxlbS82OTU5OTUzMTogU2Nyb2xsaW5nIG9uIG5ldGZsaXguY29tIHNvbWV0aW1lcyBq
dW1wcyB0byB0aGUgdG9wLgorCisgICAgICAgIFNjcm9sbGluZyB0aHJlYWQgc2Nyb2xsIG5vdGlm
aWNhdGlvbnMgYXJlIGhhbmRsZWQgb24gdGhlIG1haW4gdGhyZWFkIGFzeW5jaHJvbm91c2x5LCBh
bmQKKyAgICAgICAgdGhlcmUgYXJlIHR3byBzb3VyY2VzIG9mIGRlbGF5OiBmaXJzdCwgdGhlIFJ1
bkxvb3A6Om1haW4oKS5kaXNwYXRjaCgpIGluIFRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xs
aW5nVHJlZU5vZGVEaWRTY3JvbGwoKSwKKyAgICAgICAgYW5kIHNlY29uZCB0aGUgemVyby1kZWxh
eSBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyIGluIEFzeW5jU2Nyb2xsaW5nQ29vcmRp
bmF0b3IuCisgICAgICAgIAorICAgICAgICBUaGlzIGlzIGEgcHJvYmxlbSB3aGVuIGRvaW5nIHBy
b2dyYW1tYXRpYyBzY3JvbGxzLCBzaW5jZSB0aGUgbWFpbiB0aHJlYWQgY2FuCisgICAgICAgIHBy
b2dyYW1tYXRpY2FsbHkgc2Nyb2xsLCB0aGVuIHRoZSBhYm92ZSBhc3luY2hyb255IG1lYW5zIHRo
YXQKKyAgICAgICAgQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRp
b25BZnRlckFzeW5jU2Nyb2xsKCkgZ2V0cyBjYWxsZWQgZm9yIGFuIGVhcmxpZXIKKyAgICAgICAg
dXNlciBzY3JvbGwgKG9yLCBhcyBpcyBvZnRlbiB0aGUgY2FzZSBvbiBuZXRmbGl4LmNvbSwgYSBz
Y3JvbGwgdHJpZ2dlcmVkIGJ5IHRoZQorICAgICAgICBydWJiZXJiYW5kaW5nIHRpbWVyIG9uIHRo
ZSBzY3JvbGxpbmcgdGhyZWFkKS4KKworICAgICAgICBUaGlzIHBhdGNoZXMgYWRkcmVzc2VzIHRo
ZXNlIG91dC1vZi1vcmRlciBzY3JvbGxzIGJ5IHN0b3Jpbmcgc2Nyb2xsaW5nIHRocmVhZCBzY3Jv
bGwgdXBkYXRlcworICAgICAgICBpbiBhIHRocmVhZHNhZmUgZGF0YSBzdHJ1Y3R1cmUgb24gdGhl
IHNjcm9sbGluZyB0cmVlLCBhbmQgYWx3YXlzIGFwcGx5aW5nIHRob3NlIG9uIHRoZSBtYWluCisg
ICAgICAgIHRocmVhZCBiZWZvcmUgaGFuZGxpbmcgb3RoZXIgc2Nyb2xsIGNoYW5nZXMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHplcm8tZGVsYXkgdGltZXIsIHdo
aWNoIGRpZCBzZXJ2ZSBhIHB1cnBvc2Ugb2YgY29hbGVzY2luZyBzY3JvbGwKKyAgICAgICAgbm90
aWZpY2F0aW9ucyBmcm9tIHRoZSBzY3JvbGxpbmcgdGhyZWFkIGFuZCBVSSBwcm9jZXNzIChmb3Ig
aU9TKS4gV2l0aCB0aGUgcGF0Y2gsIHdlIHN0aWxsCisgICAgICAgIGdldCBjb2FsZXNjaW5nIHBl
ciBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goKS4gV2UgbG9zZSBjb2FsZXNjaW5nIG9uIGlPUywg
YnV0IHRob3NlCisgICAgICAgIG5vdGlmaWNhdGlvbnMgc2hvdWxkIGJlIGp1c3Qgb25jZSBwZXIg
ZnJhbWUuIElmIHdlIGZpbmQgdGhhdCBpdCB3YXMgbmVjZXNzYXJ5IHRvIGNvYWxlc2NlLAorICAg
ICAgICB3ZSBjYW4gcHV0IGEgdGltZXIgYmFjay4KKworICAgICAgICBOb3QgdGVzdGFibGUgYmVj
YXVzZSBpdCdzIHZlcnkgdGltaW5nIGRlcGVuZGVudC4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcik6CisgICAg
ICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9z
aXRpb25VcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3JvbGxpbmdDb29yZGluYXRv
cjo6c3luY2hyb25pemVTdGF0ZUZyb21TY3JvbGxpbmdUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6Om5vdGVTY3JvbGxpbmdUaHJlYWRTeW5jQ29tcGxl
dGVGb3JOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6QXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6YXBwbHlTY3JvbGxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5j
U2Nyb2xsKToKKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNj
aGVkdWxlVXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0ZVNjcm9sbFBv
c2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQpOiBEZWxldGVkLgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9sbFVwZGF0ZTo6U2No
ZWR1bGVkU2Nyb2xsVXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OlNjaGVkdWxlZFNjcm9sbFVwZGF0ZTo6bWF0Y2hlc1VwZGF0ZVR5
cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6YXBwbHlMYXllclBvc2l0
aW9uc0ludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OmFkZFBlbmRp
bmdTY3JvbGxVcGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZTo6dGFrZVBl
bmRpbmdTY3JvbGxVcGRhdGVzKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpTY3JvbGxVcGRhdGU6OlNj
cm9sbFVwZGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlOjpTY3JvbGxVcGRh
dGU6OmNhbk1lcmdlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWU6OlNj
cm9sbFVwZGF0ZTo6bWVyZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRlZFNjcm9sbGluZ1RyZWU6
OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKToKKwogMjAyMC0xMS0wMiAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dMSUJdIFJFR1JFU1NJT04o
cjI2OTE0NCkgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3Nzb20tdmlldy9z
Y3JvbGxJbnRvVmlldy1zY3JvbGxNYXJnaW4uaHRtbCBpcyBmYWlsaW5nCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA3
OTE3NWQ2MDVkZjY2ZDFjZThlNGUxYTBmMjgzMTI5MWIwZjFjNzEuLmFmNTA3NGMzZTNhOWE0NDhk
NDM0NGM1NWRiOWUzOTcwMjk0NWJiZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAt
MTEtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAg
U2Nyb2xsIHBvc2l0aW9uIGNhbiBnZXQgcmVzZXQgYWZ0ZXIgcHJvZ3JhbW1hdGljIHNjcm9sbAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4NDc3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1t
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6c2Nyb2xsUG9z
aXRpb25DaGFuZ2VkRm9yTm9kZSk6CisKIDIwMjAtMTEtMDIgIFlvdWVubiBGYWJsZXQgIDx5b3Vl
bm5AYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3Agc2VuZGluZyBvcmlnaW5zIGZyb20gV2ViUHJv
Y2VzcyB0byBVSVByb2Nlc3MgZm9yIGdldFVzZXJNZWRpYSByZXF1ZXN0cwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAppbmRleCAzMDM3OTAwNmUzNmQwNGRmYzEzNDE3MWYyNzc0MDZlOTdhZjAyNGI2Li5j
OGYwYTBhOGJlOTAzYTVjOTVkZGYxOTIxNzgzYzdmMDUxMjRhNTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcApAQCAtNTgsNyArNTgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEFzeW5jU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IoUGFnZSogcGFnZSkK
ICAgICA6IFNjcm9sbGluZ0Nvb3JkaW5hdG9yKHBhZ2UpCi0gICAgLCBtX3VwZGF0ZU5vZGVTY3Jv
bGxQb3NpdGlvblRpbWVyKCp0aGlzLCAmQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6dXBkYXRl
U2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCkKICAgICAsIG1fc2Nyb2xs
aW5nU3RhdGVUcmVlKG1ha2VVbmlxdWU8U2Nyb2xsaW5nU3RhdGVUcmVlPih0aGlzKSkKIHsKIH0K
QEAgLTI1NSw3ICsyNTQsNiBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVl
c3RTY3JvbGxQb3NpdGlvblVwZGF0ZShTY3JvbGxhYmxlQXJlYSYgc2NybwogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKG1fcGFnZSk7Ci0KICAgICBhdXRvIHNjcm9s
bGluZ05vZGVJRCA9IHNjcm9sbGFibGVBcmVhLnNjcm9sbGluZ05vZGVJRCgpOwogICAgIGlmICgh
c2Nyb2xsaW5nTm9kZUlEKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNzAsNyArMjY4LDcg
QEAgYm9vbCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25V
cGRhdGUoU2Nyb2xsYWJsZUFyZWEmIHNjcm8KICAgICBib29sIGluQmFja0ZvcndhcmRDYWNoZSA9
IGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5iYWNrRm9yd2FyZENhY2hlU3RhdGUoKSAh
PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlOwogICAgIGJvb2wgaW5Qcm9ncmFtbWF0
aWNTY3JvbGwgPSBzY3JvbGxhYmxlQXJlYS5jdXJyZW50U2Nyb2xsVHlwZSgpID09IFNjcm9sbFR5
cGU6OlByb2dyYW1tYXRpYzsKICAgICBpZiAoaW5Qcm9ncmFtbWF0aWNTY3JvbGwgfHwgaW5CYWNr
Rm9yd2FyZENhY2hlKQotICAgICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3Jv
bGwoc2Nyb2xsaW5nTm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgeyB9LCBTY3JvbGxUeXBlOjpQcm9n
cmFtbWF0aWMsIFNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCwgSW5mb3JtV2hlZWxF
dmVudE1vbml0b3I6Ok5vKTsKKyAgICAgICAgYXBwbHlTY3JvbGxVcGRhdGUoc2Nyb2xsaW5nTm9k
ZUlELCBzY3JvbGxQb3NpdGlvbiwgeyB9LCBTY3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMsIFNjcm9s
bGluZ0xheWVyUG9zaXRpb25BY3Rpb246OlNldCwgSW5mb3JtV2hlZWxFdmVudE1vbml0b3I6Ok5v
KTsKIAogICAgIEFTU0VSVChpblByb2dyYW1tYXRpY1Njcm9sbCA9PSAoc2Nyb2xsVHlwZSA9PSBT
Y3JvbGxUeXBlOjpQcm9ncmFtbWF0aWMpKTsKIApAQCAtMzAxLDYgKzI5OSw3IEBAIHZvaWQgQXN5
bmNTY3JvbGxpbmdDb29yZGluYXRvcjo6YXBwbHlTY3JvbGxpbmdUcmVlTGF5ZXJQb3NpdGlvbnMo
KQogdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbml6ZVN0YXRlRnJvbVNj
cm9sbGluZ1RyZWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgYXBwbHlQ
ZW5kaW5nU2Nyb2xsVXBkYXRlcygpOwogCiAgICAgbV9zY3JvbGxpbmdUcmVlLT50cmF2ZXJzZVNj
cm9sbGluZ1RyZWUoWyZdKFNjcm9sbGluZ05vZGVJRCBub2RlSUQsIFNjcm9sbGluZ05vZGVUeXBl
LCBPcHRpb25hbDxGbG9hdFBvaW50PiBzY3JvbGxQb3NpdGlvbiwgT3B0aW9uYWw8RmxvYXRQb2lu
dD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIGJvb2wgc2Nyb2xsZWRTaW5jZUxhc3RDb21taXQpIHsK
ICAgICAgICAgaWYgKHNjcm9sbFBvc2l0aW9uICYmIHNjcm9sbGVkU2luY2VMYXN0Q29tbWl0KSB7
CkBAIC0zMTQsNyArMzEzLDcgQEAgdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpub3Rl
U2Nyb2xsaW5nVGhyZWFkU3luY0NvbXBsZXRlRm9yTm9kZShTY3JvbGxpbmcKIHsKICNpZiBQTEFU
Rk9STShNQUMpCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmlzTW9uaXRvcmluZ1doZWVsRXZl
bnRzKCkpIHsKLSAgICAgICAgTE9HX1dJVEhfU1RSRUFNKFdoZWVsRXZlbnRUZXN0TW9uaXRvciwg
c3RyZWFtIDw8ICIgICAgKCEpIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlVXBk
YXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsOiBSZW1vdmluZyBkZWZlcnJhbCBvbiAi
IDw8IG5vZGVJRCA8PCAiIGZvciByZWFzb24gIiA8PCBXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNj
cm9sbGluZ1RocmVhZFN5bmNOZWVkZWQpOworICAgICAgICBMT0dfV0lUSF9TVFJFQU0oV2hlZWxF
dmVudFRlc3RNb25pdG9yLCBzdHJlYW0gPDwgIiAgICAoISkgQXN5bmNTY3JvbGxpbmdDb29yZGlu
YXRvcjo6bm90ZVNjcm9sbGluZ1RocmVhZFN5bmNDb21wbGV0ZUZvck5vZGU6IFJlbW92aW5nIGRl
ZmVycmFsIG9uICIgPDwgbm9kZUlEIDw8ICIgZm9yIHJlYXNvbiAiIDw8IFdoZWVsRXZlbnRUZXN0
TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAgICAgICAgIG1fcGFnZS0+d2hl
ZWxFdmVudFRlc3RNb25pdG9yKCktPnJlbW92ZURlZmVycmFsRm9yUmVhc29uKHJlaW50ZXJwcmV0
X2Nhc3Q8V2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXI+KG5v
ZGVJRCksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsaW5nVGhyZWFkU3luY05lZWRlZCk7
CiAgICAgfQogI2Vsc2UKQEAgLTMyMiwzMSArMzIxLDE2IEBAIHZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6bm90ZVNjcm9sbGluZ1RocmVhZFN5bmNDb21wbGV0ZUZvck5vZGUoU2Nyb2xs
aW5nCiAjZW5kaWYKIH0KIAotdm9pZCBBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yOjpzY2hlZHVs
ZVVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgbm9k
ZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgY29uc3QgT3B0aW9uYWw8Rmxv
YXRQb2ludD4mIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0
aW9uIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pCit2b2lkIEFzeW5jU2Nyb2xsaW5nQ29v
cmRpbmF0b3I6OmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMoKQogewotICAgIFNjaGVkdWxlZFNj
cm9sbFVwZGF0ZSBzY3JvbGxVcGRhdGUobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmll
d3BvcnRPcmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOwotICAgIAotICAgIGlm
IChtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAg
aWYgKG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLm1hdGNoZXNVcGRhdGVUeXBlKHNjcm9sbFVwZGF0
ZSkpIHsKLSAgICAgICAgICAgIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnNjcm9sbFBvc2l0aW9u
ID0gc2Nyb2xsUG9zaXRpb247Ci0gICAgICAgICAgICBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5s
YXlvdXRWaWV3cG9ydE9yaWdpbiA9IGxheW91dFZpZXdwb3J0T3JpZ2luOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIC8vIElmIHRoZSBwYXJhbWV0ZXJzIGRv
bid0IG1hdGNoIHdoYXQgd2FzIHByZXZpb3VzbHkgc2NoZWR1bGVkLCBkaXNwYXRjaCBpbW1lZGlh
dGVseS4KLSAgICAgICAgbV91cGRhdGVOb2RlU2Nyb2xsUG9zaXRpb25UaW1lci5zdG9wKCk7Ci0g
ICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChtX3NjaGVkdWxlZFNj
cm9sbFVwZGF0ZS5ub2RlSUQsIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnNjcm9sbFBvc2l0aW9u
LCBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5sYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlw
ZTo6VXNlciwgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGUudXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlv
bik7Ci0gICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChub2RlSUQs
IHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZTo6VXNlciwg
c2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgaWYgKCFtX3Njcm9sbGluZ1RyZWUp
CiAgICAgICAgIHJldHVybjsKLSAgICB9CiAKLSAgICBtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZSA9
IHNjcm9sbFVwZGF0ZTsKLSAgICBtX3VwZGF0ZU5vZGVTY3JvbGxQb3NpdGlvblRpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwotfQotCi12b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVwZGF0
ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbFRpbWVyRmlyZWQoKQotewotICAgIHVwZGF0
ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChtX3NjaGVkdWxlZFNjcm9sbFVwZGF0ZS5u
b2RlSUQsIG1fc2NoZWR1bGVkU2Nyb2xsVXBkYXRlLnNjcm9sbFBvc2l0aW9uLCBtX3NjaGVkdWxl
ZFNjcm9sbFVwZGF0ZS5sYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZTo6VXNlciwgbV9z
Y2hlZHVsZWRTY3JvbGxVcGRhdGUudXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgYXV0
byBzY3JvbGxVcGRhdGVzID0gbV9zY3JvbGxpbmdUcmVlLT50YWtlUGVuZGluZ1Njcm9sbFVwZGF0
ZXMoKTsKKyAgICBmb3IgKGF1dG8mIHVwZGF0ZSA6IHNjcm9sbFVwZGF0ZXMpIHsKKyAgICAgICAg
TE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJBc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yOjphcHBseVBlbmRpbmdTY3JvbGxVcGRhdGVzIC0gbm9kZSAiIDw8IHVwZGF0ZS5ub2Rl
SUQgPDwgIiBzY3JvbGwgcG9zaXRpb24gIiA8PCB1cGRhdGUuc2Nyb2xsUG9zaXRpb24pOworICAg
ICAgICB1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwodXBkYXRlLm5vZGVJRCwg
dXBkYXRlLnNjcm9sbFBvc2l0aW9uLCB1cGRhdGUubGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9s
bFR5cGU6OlVzZXIsIHVwZGF0ZS51cGRhdGVMYXllclBvc2l0aW9uQWN0aW9uLCBJbmZvcm1XaGVl
bEV2ZW50TW9uaXRvcjo6WWVzKTsKKyAgICB9CiB9CiAKIEZyYW1lVmlldyogQXN5bmNTY3JvbGxp
bmdDb29yZGluYXRvcjo6ZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdOb2RlSUQg
c2Nyb2xsaW5nTm9kZUlEKSBjb25zdApAQCAtMzgxLDYgKzM2NSwxMiBAQCBGcmFtZVZpZXcqIEFz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OmZyYW1lVmlld0ZvclNjcm9sbGluZ05vZGUoU2Nyb2xs
aW5nTm9kZUlECiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3ZvaWQgQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvcjo6YXBwbHlTY3JvbGxVcGRhdGUoU2Nyb2xsaW5nTm9kZUlEIHNjcm9sbGluZ05v
ZGVJRCwgY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIE9wdGlvbmFsPEZsb2F0UG9p
bnQ+IGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlIHNjcm9sbFR5cGUsIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24gc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgSW5mb3Jt
V2hlZWxFdmVudE1vbml0b3IgaW5mb3JtV2hlZWxFdmVudE1vbml0b3IpCit7CisgICAgYXBwbHlQ
ZW5kaW5nU2Nyb2xsVXBkYXRlcygpOworICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3lu
Y1Njcm9sbChzY3JvbGxpbmdOb2RlSUQsIHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9y
aWdpbiwgc2Nyb2xsVHlwZSwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgaW5mb3JtV2hl
ZWxFdmVudE1vbml0b3IpOworfQorCiB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnVw
ZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQgc2Nyb2xs
aW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgT3B0aW9uYWw8Rmxv
YXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5cGUgc2Nyb2xsVHlwZSwgU2Ny
b2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uLCBJ
bmZvcm1XaGVlbEV2ZW50TW9uaXRvciBpbmZvcm1XaGVlbEV2ZW50TW9uaXRvcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMzk1LDcgKzM4NSw3IEBAIHZvaWQgQXN5bmNTY3Jv
bGxpbmdDb29yZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsKFNj
cm9sbGluZ05vCiAgICAgaWYgKCFmcmFtZVZpZXdQdHIpCiAgICAgICAgIHJldHVybjsKIAotICAg
IExPR19XSVRIX1NUUkVBTShTY3JvbGxpbmcsIHN0cmVhbSA8PCAiQXN5bmNTY3JvbGxpbmdDb29y
ZGluYXRvcjo6dXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsIG5vZGUgIiA8PCBz
Y3JvbGxpbmdOb2RlSUQgPDwgIiBzY3JvbGxQb3NpdGlvbiAiIDw8IHNjcm9sbFBvc2l0aW9uIDw8
ICIgYWN0aW9uICIgPDwgc2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbik7CisgICAgTE9HX1dJ
VEhfU1RSRUFNKFNjcm9sbGluZywgc3RyZWFtIDw8ICJBc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9y
Ojp1cGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwgbm9kZSAiIDw8IHNjcm9sbGlu
Z05vZGVJRCA8PCAiICIgPDwgc2Nyb2xsVHlwZSA8PCAiIHNjcm9sbFBvc2l0aW9uICIgPDwgc2Ny
b2xsUG9zaXRpb24gPDwgIiBhY3Rpb24gIiA8PCBzY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9u
KTsKIAogICAgIGF1dG8mIGZyYW1lVmlldyA9ICpmcmFtZVZpZXdQdHI7CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3Jk
aW5hdG9yLmgKaW5kZXggNTY2NzhiN2MzYTk0ODBiMGY2YzExNGRmN2NjN2M2Y2UxYmFmYmE3Ny4u
NDIzYzA2ZTcyYjBlMDllOTExM2U4MjFkYmNhYWUxZDA3OTZhYzE5NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuaApAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2Nyb2xsaW5nU3Rh
dGVUcmVlUHJvcGVydGllc0NoYW5nZWQoKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2No
ZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlE
LCBjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgT3B0aW9uYWw8RmxvYXRQb2ludD4mIGxheW91dFZp
ZXdwb3J0T3JpZ2luLCBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKKyAgICB2b2lkIGFw
cGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMoKTsKIAogICAgIGVudW0gY2xhc3MgSW5mb3JtV2hlZWxF
dmVudE1vbml0b3IgeyBZZXMsIE5vIH07Ci0gICAgdm9pZCB1cGRhdGVTY3JvbGxQb3NpdGlvbkFm
dGVyQXN5bmNTY3JvbGwoU2Nyb2xsaW5nTm9kZUlELCBjb25zdCBGbG9hdFBvaW50JiwgT3B0aW9u
YWw8RmxvYXRQb2ludD4gbGF5b3V0Vmlld3BvcnRPcmlnaW4sIFNjcm9sbFR5cGUsIFNjcm9sbGlu
Z0xheWVyUG9zaXRpb25BY3Rpb24sIEluZm9ybVdoZWVsRXZlbnRNb25pdG9yID0gSW5mb3JtV2hl
ZWxFdmVudE1vbml0b3I6Olllcyk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseVNjcm9s
bFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZsb2F0UG9pbnQmLCBPcHRpb25hbDxGbG9h
dFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Nyb2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbiwgSW5mb3JtV2hlZWxFdmVudE1vbml0b3IgPSBJbmZvcm1XaGVlbEV2ZW50
TW9uaXRvcjo6WWVzKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgaGFuZGxlV2hlZWxFdmVudFBoYXNlKFNjcm9sbGluZ05vZGVJRCwgUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2UpIGZpbmFsOwpAQCAtMTU1LDM4ICsxNTUsMTUgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgZW5zdXJlUm9vdFN0YXRlTm9kZUZvckZyYW1lVmlldyhGcmFtZVZpZXcmKTsKIAotICAg
IHZvaWQgdXBkYXRlU2Nyb2xsUG9zaXRpb25BZnRlckFzeW5jU2Nyb2xsVGltZXJGaXJlZCgpOwog
ICAgIHZvaWQgc2V0RXZlbnRUcmFja2luZ1JlZ2lvbnNEaXJ0eSgpOwogICAgIHZvaWQgdXBkYXRl
RXZlbnRUcmFja2luZ1JlZ2lvbnMoKTsKICAgICAKICAgICB2b2lkIG5vdGVTY3JvbGxpbmdUaHJl
YWRTeW5jQ29tcGxldGVGb3JOb2RlKFNjcm9sbGluZ05vZGVJRCk7CisKKyAgICB2b2lkIHVwZGF0
ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChTY3JvbGxpbmdOb2RlSUQsIGNvbnN0IEZs
b2F0UG9pbnQmLCBPcHRpb25hbDxGbG9hdFBvaW50PiBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgU2Ny
b2xsVHlwZSwgU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbiwgSW5mb3JtV2hlZWxFdmVudE1v
bml0b3IpOwogICAgIAogICAgIEZyYW1lVmlldyogZnJhbWVWaWV3Rm9yU2Nyb2xsaW5nTm9kZShT
Y3JvbGxpbmdOb2RlSUQpIGNvbnN0OwogCi0gICAgVGltZXIgbV91cGRhdGVOb2RlU2Nyb2xsUG9z
aXRpb25UaW1lcjsKLQotICAgIHN0cnVjdCBTY2hlZHVsZWRTY3JvbGxVcGRhdGUgewotICAgICAg
ICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUoKSA9IGRlZmF1bHQ7Ci0gICAgICAgIFNjaGVkdWxlZFNj
cm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBGbG9hdFBvaW50IHBv
aW50LCBPcHRpb25hbDxGbG9hdFBvaW50PiB2aWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5nTGF5ZXJQ
b3NpdGlvbkFjdGlvbiB1ZHBhdGVBY3Rpb24pCi0gICAgICAgICAgICA6IG5vZGVJRChzY3JvbGxp
bmdOb2RlSUQpCi0gICAgICAgICAgICAsIHNjcm9sbFBvc2l0aW9uKHBvaW50KQotICAgICAgICAg
ICAgLCBsYXlvdXRWaWV3cG9ydE9yaWdpbih2aWV3cG9ydE9yaWdpbikKLSAgICAgICAgICAgICwg
dXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbih1ZHBhdGVBY3Rpb24pCi0gICAgICAgIHsgfQotCi0g
ICAgICAgIFNjcm9sbGluZ05vZGVJRCBub2RlSUQgeyAwIH07Ci0gICAgICAgIEZsb2F0UG9pbnQg
c2Nyb2xsUG9zaXRpb247Ci0gICAgICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91dFZpZXdw
b3J0T3JpZ2luOwotICAgICAgICBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHVwZGF0ZUxh
eWVyUG9zaXRpb25BY3Rpb24geyBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpTeW5jIH07
Ci0gICAgICAgIAotICAgICAgICBib29sIG1hdGNoZXNVcGRhdGVUeXBlKGNvbnN0IFNjaGVkdWxl
ZFNjcm9sbFVwZGF0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVy
biBub2RlSUQgPT0gb3RoZXIubm9kZUlEICYmIHVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24gPT0g
b3RoZXIudXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbjsKLSAgICAgICAgfQotICAgIH07Ci0KLSAg
ICBTY2hlZHVsZWRTY3JvbGxVcGRhdGUgbV9zY2hlZHVsZWRTY3JvbGxVcGRhdGU7Ci0KICAgICBz
dGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nU3RhdGVUcmVlPiBtX3Njcm9sbGluZ1N0YXRlVHJlZTsK
ICAgICBSZWZQdHI8U2Nyb2xsaW5nVHJlZT4gbV9zY3JvbGxpbmdUcmVlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuY3BwCmluZGV4IGU3M2U2Zjdl
MDUyM2UxYTlkMTYxNmJhNmM3YzMyOTYxNGVhOGEyMzMuLmE5YzJjNjU4OTRmOGYzNzFlZWQwOTBh
MmE1NjAzZDI4YWU0OWZkNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWUuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
OjphcHBseUxheWVyUG9zaXRpb25zSW50ZXJuYWwoKQogICAgIGlmICghbV9yb290Tm9kZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgTE9HKFNjcm9sbGluZywgIlxuU2Nyb2xsaW5nVHJlZSAlcCBh
cHBseUxheWVyUG9zaXRpb25zIChtYWluIHRocmVhZCAlZCkiLCB0aGlzLCBpc01haW5UaHJlYWQo
KSk7CisvLyAgICBMT0coU2Nyb2xsaW5nLCAiXG5TY3JvbGxpbmdUcmVlICVwIGFwcGx5TGF5ZXJQ
b3NpdGlvbnMgKG1haW4gdGhyZWFkICVkKSIsIHRoaXMsIGlzTWFpblRocmVhZCgpKTsKICAgICBh
cHBseUxheWVyUG9zaXRpb25zUmVjdXJzaXZlKCptX3Jvb3ROb2RlKTsKIH0KIApAQCAtNTc3LDYg
KzU3NywyNSBAQCBib29sIFNjcm9sbGluZ1RyZWU6Om1haW5GcmFtZUNhblJ1YmJlckJhbmRJbkRp
cmVjdGlvbihTY3JvbGxEaXJlY3Rpb24gZGlyZWN0aW9uKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAordm9pZCBTY3JvbGxpbmdUcmVlOjphZGRQZW5kaW5nU2Nyb2xsVXBkYXRlKFNjcm9sbFVwZGF0
ZSYmIHVwZGF0ZSkKK3sKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3BlbmRpbmdTY3JvbGxVcGRh
dGVzTG9jayk7CisgICAgZm9yIChhdXRvJiBleGlzdGluZ1VwZGF0ZSA6IG1fcGVuZGluZ1Njcm9s
bFVwZGF0ZXMpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nVXBkYXRlLmNhbk1lcmdlKHVwZGF0ZSkp
IHsKKyAgICAgICAgICAgIGV4aXN0aW5nVXBkYXRlLm1lcmdlKFdURk1vdmUodXBkYXRlKSk7Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3BlbmRpbmdTY3Jv
bGxVcGRhdGVzLmFwcGVuZChXVEZNb3ZlKHVwZGF0ZSkpOworfQorCitWZWN0b3I8U2Nyb2xsaW5n
VHJlZTo6U2Nyb2xsVXBkYXRlPiBTY3JvbGxpbmdUcmVlOjp0YWtlUGVuZGluZ1Njcm9sbFVwZGF0
ZXMoKQoreworICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcGVuZGluZ1Njcm9sbFVwZGF0ZXNMb2Nr
KTsKKyAgICByZXR1cm4gc3RkOjpleGNoYW5nZShtX3BlbmRpbmdTY3JvbGxVcGRhdGVzLCB7IH0p
OworfQorCiAvLyBDYW4gYmUgY2FsbGVkIGZyb20gdGhlIG1haW4gdGhyZWFkLgogdm9pZCBTY3Jv
bGxpbmdUcmVlOjpzZXRTY3JvbGxQaW5uaW5nQmVoYXZpb3IoU2Nyb2xsUGlubmluZ0JlaGF2aW9y
IHBpbm5pbmcpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlLmgKaW5kZXggOTc2MTcyODM3NzQ1ZDZmZGNlOTk0ZjU0ZDQzODY2Yjc2MzBiODkxNi4uZGM0
NWZjODU5NTJhNjk0MWExM2VhZTI2MzU1MjliMzQwMzllNmM4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWUuaApAQCAtMjExLDYgKzIxMSwzNSBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNQcm9jZXNzZWRXaGVlbEV2ZW50c1JlY2VudGx5KCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3aWxsUHJvY2Vzc1doZWVsRXZlbnQoKTsKIAorICAgIHN0cnVj
dCBTY3JvbGxVcGRhdGUgeworICAgICAgICBTY3JvbGxVcGRhdGUoKSA9IGRlZmF1bHQ7CisgICAg
ICAgIFNjcm9sbFVwZGF0ZShTY3JvbGxpbmdOb2RlSUQgc2Nyb2xsaW5nTm9kZUlELCBGbG9hdFBv
aW50IHBvaW50LCBPcHRpb25hbDxGbG9hdFBvaW50PiB2aWV3cG9ydE9yaWdpbiwgU2Nyb2xsaW5n
TGF5ZXJQb3NpdGlvbkFjdGlvbiB1ZHBhdGVBY3Rpb24pCisgICAgICAgICAgICA6IG5vZGVJRChz
Y3JvbGxpbmdOb2RlSUQpCisgICAgICAgICAgICAsIHNjcm9sbFBvc2l0aW9uKHBvaW50KQorICAg
ICAgICAgICAgLCBsYXlvdXRWaWV3cG9ydE9yaWdpbih2aWV3cG9ydE9yaWdpbikKKyAgICAgICAg
ICAgICwgdXBkYXRlTGF5ZXJQb3NpdGlvbkFjdGlvbih1ZHBhdGVBY3Rpb24pCisgICAgICAgIHsg
fQorCisgICAgICAgIFNjcm9sbGluZ05vZGVJRCBub2RlSUQgeyAwIH07CisgICAgICAgIEZsb2F0
UG9pbnQgc2Nyb2xsUG9zaXRpb247CisgICAgICAgIE9wdGlvbmFsPEZsb2F0UG9pbnQ+IGxheW91
dFZpZXdwb3J0T3JpZ2luOworICAgICAgICBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uIHVw
ZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24geyBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpT
eW5jIH07CisgICAgICAgIAorICAgICAgICBib29sIGNhbk1lcmdlKGNvbnN0IFNjcm9sbFVwZGF0
ZSYgb3RoZXIpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBub2RlSUQgPT0g
b3RoZXIubm9kZUlEICYmIHVwZGF0ZUxheWVyUG9zaXRpb25BY3Rpb24gPT0gb3RoZXIudXBkYXRl
TGF5ZXJQb3NpdGlvbkFjdGlvbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBt
ZXJnZShTY3JvbGxVcGRhdGUmJiBvdGhlcikKKyAgICAgICAgeworICAgICAgICAgICAgc2Nyb2xs
UG9zaXRpb24gPSBvdGhlci5zY3JvbGxQb3NpdGlvbjsKKyAgICAgICAgICAgIGxheW91dFZpZXdw
b3J0T3JpZ2luID0gb3RoZXIubGF5b3V0Vmlld3BvcnRPcmlnaW47CisgICAgICAgIH0KKyAgICB9
OworCisgICAgdm9pZCBhZGRQZW5kaW5nU2Nyb2xsVXBkYXRlKFNjcm9sbFVwZGF0ZSYmKTsKKyAg
ICBWZWN0b3I8U2Nyb2xsVXBkYXRlPiB0YWtlUGVuZGluZ1Njcm9sbFVwZGF0ZXMoKTsKKwogcHJv
dGVjdGVkOgogICAgIFdoZWVsRXZlbnRIYW5kbGluZ1Jlc3VsdCBoYW5kbGVXaGVlbEV2ZW50V2l0
aE5vZGUoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiwgT3B0aW9uU2V0PFdoZWVsRXZlbnRQcm9j
ZXNzaW5nU3RlcHM+LCBTY3JvbGxpbmdUcmVlTm9kZSopOwogCkBAIC0yNzksNiArMzA4LDkgQEAg
cHJpdmF0ZToKICAgICBMb2NrIG1fc3dpcGVTdGF0ZU11dGV4OwogICAgIFN3aXBlU3RhdGUgbV9z
d2lwZVN0YXRlOwogCisgICAgTG9jayBtX3BlbmRpbmdTY3JvbGxVcGRhdGVzTG9jazsKKyAgICBW
ZWN0b3I8U2Nyb2xsVXBkYXRlPiBtX3BlbmRpbmdTY3JvbGxVcGRhdGVzOworCiAgICAgTG9jayBt
X2xhc3RXaGVlbEV2ZW50VGltZU11dGV4OwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0V2hlZWxF
dmVudFRpbWU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Ro
cmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9U
aHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDk1MDE2ZDk2N2E5ZjIwYTQ0NDg2MGFlOGJl
NTQzMTU3YTc0NmQ4ZjUuLjkzNzk0NTZlYWUxN2IwOTgyY2I1ZDUyZDk5NWZjYWRlZDU0YjdkNGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xs
aW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRT
Y3JvbGxpbmdUcmVlLmNwcApAQCAtMTQ2LDE2ICsxNDYsMTkgQEAgdm9pZCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnNjcm9sbGluZ1RyZWVOb2RlRGlkU2Nyb2xsKFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2QKICAgICAgICAgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25Gb3JSZWFzb24ocmVp
bnRlcnByZXRfY2FzdDxXaGVlbEV2ZW50VGVzdE1vbml0b3I6OlNjcm9sbGFibGVBcmVhSWRlbnRp
Zmllcj4obm9kZS5zY3JvbGxpbmdOb2RlSUQoKSksIFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Ny
b2xsaW5nVGhyZWFkU3luY05lZWRlZCk7CiAjZW5kaWYKIAotICAgIExPR19XSVRIX1NUUkVBTShT
Y3JvbGxpbmcsIHN0cmVhbSA8PCAiVGhyZWFkZWRTY3JvbGxpbmdUcmVlOjpzY3JvbGxpbmdUcmVl
Tm9kZURpZFNjcm9sbCAiIDw8IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCkgPDwgIiB0byAiIDw8IHNj
cm9sbFBvc2l0aW9uIDw8ICIgYm91bmNpbmcgdG8gbWFpbiB0aHJlYWQiKTsKLQogICAgIGlmIChS
dW5Mb29wOjppc01haW4oKSkgewotICAgICAgICBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9yLT51cGRh
dGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwg
c2Nyb2xsUG9zaXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlOjpVc2VyLCBz
Y3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uKTsKKyAgICAgICAgbV9zY3JvbGxpbmdDb29yZGlu
YXRvci0+YXBwbHlTY3JvbGxVcGRhdGUobm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xsUG9z
aXRpb24sIGxheW91dFZpZXdwb3J0T3JpZ2luLCBTY3JvbGxUeXBlOjpVc2VyLCBzY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJ1bkxv
b3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBub2RlSUQg
PSBub2RlLnNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRP
cmlnaW4sIHNjcm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb25dIHsKKyAgICBMT0dfV0lUSF9TVFJF
QU0oU2Nyb2xsaW5nLCBzdHJlYW0gPDwgIlRocmVhZGVkU2Nyb2xsaW5nVHJlZTo6c2Nyb2xsaW5n
VHJlZU5vZGVEaWRTY3JvbGwgIiA8PCBub2RlLnNjcm9sbGluZ05vZGVJRCgpIDw8ICIgdG8gIiA8
PCBzY3JvbGxQb3NpdGlvbiA8PCAiIGJvdW5jaW5nIHRvIG1haW4gdGhyZWFkIik7CisKKyAgICBh
dXRvIHNjcm9sbFVwZGF0ZSA9IFNjcm9sbFVwZGF0ZSB7IG5vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHNjcm9sbFBvc2l0aW9uLCBsYXlvdXRWaWV3cG9ydE9yaWdpbiwgc2Nyb2xsaW5nTGF5ZXJQb3Np
dGlvbkFjdGlvbiB9OworICAgIGFkZFBlbmRpbmdTY3JvbGxVcGRhdGUoV1RGTW92ZShzY3JvbGxV
cGRhdGUpKTsKKworICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbc3Ryb25nVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSB7CiAgICAgICAgIGlmIChhdXRvKiBzY3JvbGxpbmdDb29yZGluYXRvciA9
IHN0cm9uZ1RoaXMtPm1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IuZ2V0KCkpCi0gICAgICAgICAgICBz
Y3JvbGxpbmdDb29yZGluYXRvci0+c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5
bmNTY3JvbGwobm9kZUlELCBzY3JvbGxQb3NpdGlvbiwgbGF5b3V0Vmlld3BvcnRPcmlnaW4sIHNj
cm9sbGluZ0xheWVyUG9zaXRpb25BY3Rpb24pOworICAgICAgICAgICAgc2Nyb2xsaW5nQ29vcmRp
bmF0b3ItPmFwcGx5UGVuZGluZ1Njcm9sbFVwZGF0ZXMoKTsKICAgICB9KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1Jl
bW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yLm1tCmluZGV4
IGQwMjlkY2Q0OWU1ZTM1MTVmZWU4YzUwMTk4ZWU0ZWZmNGU5MzRmZGIuLjcyOGRlM2U1MTRjNDcw
MGJiNmEwYjU4N2RjODcxYjJkMmYzYWU2NzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRv
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3IubW0KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lk
IFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpidWlsZFRyYW5zYWN0aW9uKFJlbW90ZVNjcm9s
bGluZ0Nvb3JkaW5hdG9yVHJhbgogLy8gTm90aWZpY2F0aW9uIGZyb20gdGhlIFVJIHByb2Nlc3Mg
dGhhdCB3ZSBzY3JvbGxlZC4KIHZvaWQgUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNjcm9s
bFBvc2l0aW9uQ2hhbmdlZEZvck5vZGUoU2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCwgY29uc3QgRmxv
YXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgc3luY0xheWVyUG9zaXRpb24pCiB7Ci0gICAg
c2NoZWR1bGVVcGRhdGVTY3JvbGxQb3NpdGlvbkFmdGVyQXN5bmNTY3JvbGwobm9kZUlELCBzY3Jv
bGxQb3NpdGlvbiwgV1RGOjpudWxsb3B0LCBzeW5jTGF5ZXJQb3NpdGlvbiA/IFNjcm9sbGluZ0xh
eWVyUG9zaXRpb25BY3Rpb246OlN5bmMgOiBTY3JvbGxpbmdMYXllclBvc2l0aW9uQWN0aW9uOjpT
ZXQpOworICAgIGFwcGx5U2Nyb2xsVXBkYXRlKG5vZGVJRCwgc2Nyb2xsUG9zaXRpb24sIFdURjo6
bnVsbG9wdCwgU2Nyb2xsVHlwZTo6VXNlciwgc3luY0xheWVyUG9zaXRpb24gPyBTY3JvbGxpbmdM
YXllclBvc2l0aW9uQWN0aW9uOjpTeW5jIDogU2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbkFjdGlvbjo6
U2V0KTsKIH0KIAogdm9pZCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvcjo6Y3VycmVudFNuYXBQ
b2ludEluZGljZXNDaGFuZ2VkRm9yTm9kZShTY3JvbGxpbmdOb2RlSUQgbm9kZUlELCB1bnNpZ25l
ZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkK
</data>
<flag name="review"
          id="429548"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>