<?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>21303</bug_id>
          
          <creation_ts>2008-10-02 03:57:04 -0700</creation_ts>
          <short_desc>[GTK] Scrolling glitches</short_desc>
          <delta_ts>2008-10-20 08:41:50 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Mikael Tennhammar">mikael.tennhammar</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>alp</cc>
    
    <cc>hyatt</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>93710</commentid>
    <comment_count>0</comment_count>
    <who name="Mikael Tennhammar">mikael.tennhammar</who>
    <bug_when>2008-10-02 03:57:04 -0700</bug_when>
    <thetext>The visual area is not updated when auto scrolling.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93711</commentid>
    <comment_count>1</comment_count>
      <attachid>24016</attachid>
    <who name="Mikael Tennhammar">mikael.tennhammar</who>
    <bug_when>2008-10-02 03:59:22 -0700</bug_when>
    <thetext>Created attachment 24016
Changes in ScrollViewGtk to have teh view repainted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93712</commentid>
    <comment_count>2</comment_count>
      <attachid>24016</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-02 04:27:56 -0700</bug_when>
    <thetext>Comment on attachment 24016
Changes in ScrollViewGtk to have teh view repainted

r=me

Gtk had implemented the update() method incorrectly (when it was never meant to be an invalidate), so I guess this got caused by me fixing that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93758</commentid>
    <comment_count>3</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-02 11:24:46 -0700</bug_when>
    <thetext>I landed this with my next round of ScrollView changes in 37198.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93881</commentid>
    <comment_count>4</comment_count>
      <attachid>24046</attachid>
    <who name="Mikael Tennhammar">mikael.tennhammar</who>
    <bug_when>2008-10-03 03:45:20 -0700</bug_when>
    <thetext>Created attachment 24046
Fix the repainting of the content when scrolling via the scrollbars

The current code do not make that SccrollView repaint itself. after scroll.
Note For the reviewer! I have only experience from GTK, but it seems clean to call the ScrollView&apos;s own method.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93882</commentid>
    <comment_count>5</comment_count>
    <who name="Mikael Tennhammar">mikael.tennhammar</who>
    <bug_when>2008-10-03 03:47:15 -0700</bug_when>
    <thetext>After latest updates of ScrollViewGtk the repainting of the view does not happen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93886</commentid>
    <comment_count>6</comment_count>
      <attachid>24048</attachid>
    <who name="Mikael Tennhammar">mikael.tennhammar</who>
    <bug_when>2008-10-03 04:43:08 -0700</bug_when>
    <thetext>Created attachment 24048
Fix the repainting of the content when scrolling via the scrollbars

The current code do not make that SccrollView repaint itself. after scroll.
Note For the reviewer! I have only experience from GTK, but it seems clean to
call the ScrollView&apos;s own method.

This is the same patch as the previous one, but there where some printout in the old one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93887</commentid>
    <comment_count>7</comment_count>
      <attachid>24049</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-03 05:24:06 -0700</bug_when>
    <thetext>Created attachment 24049
Kill off more of ScrollViewGtk, fix GTK+ rendering issues

 WebCore/ChangeLog                             |   42 ++++++
 WebCore/platform/ScrollView.cpp               |   18 --
 WebCore/platform/ScrollView.h                 |    2 
 WebCore/platform/gtk/ScrollViewGtk.cpp        |  180 +++++++-------------------
 WebCore/platform/gtk/ScrollbarGtk.cpp         |  110 ++++++++++-----
 WebCore/platform/gtk/ScrollbarGtk.h           |    5 
 WebKit/gtk/ChangeLog                          |   28 ++++
 WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp |   50 ++++++-
 WebKit/gtk/webkit/webkitwebview.cpp           |   24 +++
 9 files changed, 263 insertions(+), 196 deletions(-)

So, I took the recent breakage as an opportunity to fix invalidation/repaint issues we&apos;ve had in the GTK+ port since the early days and kill off the cruft in ScrollViewGtk/ScrollViewPrivate (which are almost dead now).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93913</commentid>
    <comment_count>8</comment_count>
      <attachid>24048</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-03 11:12:08 -0700</bug_when>
    <thetext>Comment on attachment 24048
Fix the repainting of the content when scrolling via the scrollbars

Made obsolete by my fixes last night.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93914</commentid>
    <comment_count>9</comment_count>
      <attachid>24049</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-03 11:12:58 -0700</bug_when>
    <thetext>Comment on attachment 24049
Kill off more of ScrollViewGtk, fix GTK+ rendering issues

You need to merge this patch to ToT.  I landed a fix for my Gtk autoscroll breakage last night.  I think this patch is better than what I did... you just need to get merged to ToT to get a new patch for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93916</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-03 11:15:06 -0700</bug_when>
    <thetext>ScrollbarGtk(ScrollbarClient*, ScrollbarOrientation, ScrollbarControlSize, GtkAdjustment* = 0);

ScrollbarGtk is refcounted, so please make a create method instead and don&apos;t make your new constructor public.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95145</commentid>
    <comment_count>11</comment_count>
      <attachid>24016</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-10-12 19:21:22 -0700</bug_when>
    <thetext>Comment on attachment 24016
Changes in ScrollViewGtk to have teh view repainted

Clearing review flag from this obsolete patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95846</commentid>
    <comment_count>12</comment_count>
      <attachid>24484</attachid>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-18 00:28:14 -0700</bug_when>
    <thetext>Created attachment 24484
Scrolling fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96000</commentid>
    <comment_count>13</comment_count>
      <attachid>24484</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2008-10-20 08:26:53 -0700</bug_when>
    <thetext>Comment on attachment 24484
Scrolling fixes

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96003</commentid>
    <comment_count>14</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-10-20 08:41:50 -0700</bug_when>
    <thetext>Landed in r37725. (Would still be nice to pick up the ScrollbarGtk cleanup changes some time later, they weren&apos;t in the patch.)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24016</attachid>
            <date>2008-10-02 03:59:22 -0700</date>
            <delta_ts>2008-10-12 19:21:22 -0700</delta_ts>
            <desc>Changes in ScrollViewGtk to have teh view repainted</desc>
            <filename>gtk.patch</filename>
            <type>text/plain</type>
            <size>605</size>
            <attacher name="Mikael Tennhammar">mikael.tennhammar</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCShyZXZpc2lvbiAzNzE4
OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODEsNyArMTgxLDEwIEBAIHZvaWQgU2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZh
dGU6OnNjcm8KIAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIHdpbmRvdyAod2hpY2ggc2hvdWxkIGRv
IG5vdGhpbmcgYnV0IGEgYmxpdCBvZiB0aGUgYmFja2luZyBzdG9yZSdzIHVwZGF0ZVJlY3QgYW5k
IHNvIHNob3VsZAogICAgIC8vIGJlIHZlcnkgZmFzdCkuCi0gICAgdmlldy0+aG9zdFdpbmRvdygp
LT5wYWludCgpOworCisgICAgdmlldy0+aW52YWxpZGF0ZSgpOworICAgIAorCiB9CiAKIHZvaWQg
U2Nyb2xsVmlldzo6U2Nyb2xsVmlld1ByaXZhdGU6OmFkanVzdG1lbnRDaGFuZ2VkKEd0a0FkanVz
dG1lbnQqIGFkanVzdG1lbnQsIGdwb2ludGVyIF90aGF0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24046</attachid>
            <date>2008-10-03 03:45:20 -0700</date>
            <delta_ts>2008-10-03 04:43:08 -0700</delta_ts>
            <desc>Fix the repainting of the content when scrolling via the scrollbars</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>1116</size>
            <attacher name="Mikael Tennhammar">mikael.tennhammar</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMzcyMjMpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjYsNiArMjI2LDcg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdAogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkgeworCXByaW50ZiggIlNjcm9sbFZpZXc6
OnNldFNjcm9sbFBvc2l0aW9uIHBsYXRmb3JtVmlkZ2V0KCkgXG4iICk7CiAgICAgICAgIHBsYXRm
b3JtU2V0U2Nyb2xsUG9zaXRpb24oc2Nyb2xsUG9pbnQpOwogICAgICAgICByZXR1cm47CiAgICAg
fQpAQCAtMjM2LDYgKzIzNyw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRpb24o
Y29uc3QKICAgICBpZiAobmV3U2Nyb2xsUG9zaXRpb24gPT0gc2Nyb2xsUG9zaXRpb24oKSkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgcHJpbnRmKCAiU2Nyb2xsVmlldzo6c2V0U2Nyb2xsUG9zaXRp
b24gdXBkYXRlIHNjcm9sbEJhcnMoKSBcbiIgKTsKICAgICB1cGRhdGVTY3JvbGxiYXJzKEludFNp
emUobmV3U2Nyb2xsUG9zaXRpb24ueCgpLCBuZXdTY3JvbGxQb3NpdGlvbi55KCkpKTsKIH0KIApA
QCAtNDA4LDggKzQxMCw4IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2Nyb2xsQ29udGVudHMoY29uc3Qg
SW4KICAgICBmcmFtZVJlY3RzQ2hhbmdlZCgpOwogCiAgICAgLy8gTm93IHVwZGF0ZSB0aGUgd2lu
ZG93ICh3aGljaCBzaG91bGQgZG8gbm90aGluZyBidXQgYSBibGl0IG9mIHRoZSBiYWNraW5nIHN0
b3JlJ3MgdXBkYXRlUmVjdCBhbmQgc28gc2hvdWxkCi0gICAgLy8gYmUgdmVyeSBmYXN0KS4KLSAg
ICBob3N0V2luZG93KCktPnBhaW50KCk7CisgICAgLy8gYmUgdmVyeSBmYXN0KS4JCisgICAgaW52
YWxpZGF0ZSgpOwogfQogCiBJbnRQb2ludCBTY3JvbGxWaWV3Ojp3aW5kb3dUb0NvbnRlbnRzKGNv
bnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkgY29uc3QK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24048</attachid>
            <date>2008-10-03 04:43:08 -0700</date>
            <delta_ts>2008-10-03 11:12:08 -0700</delta_ts>
            <desc>Fix the repainting of the content when scrolling via the scrollbars</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>587</size>
            <attacher name="Mikael Tennhammar">mikael.tennhammar</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2aXNpb24gMzcyMzUpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MDgsOCArNDA4LDgg
QEAgdm9pZCBTY3JvbGxWaWV3OjpzY3JvbGxDb250ZW50cyhjb25zdCBJbgogICAgIGZyYW1lUmVj
dHNDaGFuZ2VkKCk7CiAKICAgICAvLyBOb3cgdXBkYXRlIHRoZSB3aW5kb3cgKHdoaWNoIHNob3Vs
ZCBkbyBub3RoaW5nIGJ1dCBhIGJsaXQgb2YgdGhlIGJhY2tpbmcgc3RvcmUncyB1cGRhdGVSZWN0
IGFuZCBzbyBzaG91bGQKLSAgICAvLyBiZSB2ZXJ5IGZhc3QpLgotICAgIGhvc3RXaW5kb3coKS0+
cGFpbnQoKTsKKyAgICAvLyBiZSB2ZXJ5IGZhc3QpLgkKKyAgICBpbnZhbGlkYXRlKCk7CiB9CiAK
IEludFBvaW50IFNjcm9sbFZpZXc6OndpbmRvd1RvQ29udGVudHMoY29uc3QgSW50UG9pbnQmIHdp
bmRvd1BvaW50KSBjb25zdAo=
</data>
<flag name="review"
          id="10887"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24049</attachid>
            <date>2008-10-03 05:24:06 -0700</date>
            <delta_ts>2008-10-03 11:12:58 -0700</delta_ts>
            <desc>Kill off more of ScrollViewGtk, fix GTK+ rendering issues</desc>
            <filename>nuanti-scroll-fixes-oct3.patch</filename>
            <type>text/plain</type>
            <size>26429</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzIzNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMDgtMTAtMDMgIEFscCBUb2tlciAgPGFscEBudWFudGkuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwMworICAgICAgICBBdXRvIHNjcm9s
bCBkb2VzIG5vdCB3b3JrIGZvciBHdGsgLSBhZ2FpbgorCisgICAgICAgIEVsbWluaWF0ZSBTY3Jv
bGxWaWV3UHJpdmF0ZSBhbmQgcmVkdWNlIEdUSystc3BlY2lmaWMgc3BlY2lhbC1jYXNlcyBpbgor
ICAgICAgICBTY3JvbGxWaWV3LgorCisgICAgICAgIEltcGxlbWVudCBhIGJ1ZmZlcmluZyBzY2hl
bWUgdG8gYXZvaWQgZnVsbCByZXBhaW50cyB3aGVuIHNjcm9sbGluZworICAgICAgICB2aWV3cyBv
ciBzdWJmcmFtZXMgc2lnbmlmaWNhbnRseSBpbXByb3Zpbmcgc2Nyb2xsaW5nIHBlcmZvcm1hbmNl
LgorCisgICAgICAgIEltcHJvdmUgcmVuZGVyaW5nIHBlcmZvcm1hbmNlIGJ5IGNvYWxlc2Npbmcg
bGFyZ2UgbnVtYmVycyBvZiBzbWFsbAorICAgICAgICByZXBhaW50cy4KKworICAgICAgICBBbHNv
IGZpeGVzIGxvbmctcnVubmluZyBpc3N1ZXMgd2l0aCBzY3JvbGxiYXIgcG9zaXRpb25pbmcgYW5k
IGZyYW1lCisgICAgICAgIGludmFsaWRhdGlvbi4KKworICAgICAgICBSZW5kZXJpbmcgaW4gdGhl
IEdUSysgcG9ydCBzaG91bGQgYmUgbW9yZSBzaW1pbGFyIHRvIG90aGVyIHBvcnRzIGFmdGVyCisg
ICAgICAgIHRoZXNlIGNoYW5nZXMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMpOgorICAg
ICAgICAqIHBsYXRmb3JtL1Njcm9sbFZpZXcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Ny
b2xsVmlld0d0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpTY3JvbGxWaWV3
UHJpdmF0ZTo6U2Nyb2xsVmlld1ByaXZhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmll
dzo6U2Nyb2xsVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRHdGtBZGp1
c3RtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3OjpzZXRIYXNIb3Jpem9udGFs
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbFZpZXc6OnNldEhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcDoKKyAg
ICAgICAgKGd0a1Njcm9sbEV2ZW50Q2FsbGJhY2spOgorICAgICAgICAoZ3RrVmFsdWVDaGFuZ2Vk
KToKKyAgICAgICAgKFNjcm9sbGJhckd0azo6U2Nyb2xsYmFyR3RrKToKKyAgICAgICAgKFNjcm9s
bGJhckd0azo6flNjcm9sbGJhckd0ayk6CisgICAgICAgIChTY3JvbGxiYXJHdGs6OmZyYW1lUmVj
dHNDaGFuZ2VkKToKKyAgICAgICAgKFNjcm9sbGJhckd0azo6dXBkYXRlVGh1bWJQb3NpdGlvbik6
CisgICAgICAgIChTY3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbik6CisgICAgICAg
IChTY3JvbGxiYXJHdGs6OnNldEVuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJHdGsuaDoKKwogMjAwOC0xMC0wMyAgRGF2aWQgSHlhdHQgIDxoeWF0dEBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIGFkZFRvRGlydHlSZWdpb24uCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAJKHJldmlzaW9uIDM3MjIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnJl
bW92ZUNoaWxkKFdpZGdldCogY2hpCiAgICAgICAgIHBsYXRmb3JtUmVtb3ZlQ2hpbGQoY2hpbGQp
OwogfQogCisjaWYgIVBMQVRGT1JNKEdUSykKIHZvaWQgU2Nyb2xsVmlldzo6c2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGJhcihib29sIGhhc0JhcikKIHsKICAgICBpZiAoaGFzQmFyICYmICFtX2hvcml6
b250YWxTY3JvbGxiYXIpIHsKQEAgLTk4LDYgKzk5LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRI
YXNWZXJ0aWNhbFNjcm9sbGJhcgogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gMDsKICAg
ICB9CiB9CisjZW5kaWYKIAogdm9pZCBTY3JvbGxWaWV3OjpzZXRTY3JvbGxiYXJNb2RlcyhTY3Jv
bGxiYXJNb2RlIGhvcml6b250YWxNb2RlLCBTY3JvbGxiYXJNb2RlIHZlcnRpY2FsTW9kZSkKIHsK
QEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29u
c3QgCiAgICAgSW50U2l6ZSBzY3JvbGwgPSBkZXNpcmVkT2Zmc2V0LnNocnVua1RvKG1heFNjcm9s
bFBvc2l0aW9uKTsKICAgICBzY3JvbGwuY2xhbXBOZWdhdGl2ZVRvWmVybygpOwogIAotICAgIGlm
ICghcGxhdGZvcm1IYW5kbGVIb3Jpem9udGFsQWRqdXN0bWVudChzY3JvbGwpICYmIG1faG9yaXpv
bnRhbFNjcm9sbGJhcikgeworICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIpIHsKICAgICAg
ICAgaW50IGNsaWVudFdpZHRoID0gdmlzaWJsZVdpZHRoKCk7CiAgICAgICAgIG1faG9yaXpvbnRh
bFNjcm9sbGJhci0+c2V0RW5hYmxlZChjb250ZW50c1dpZHRoKCkgPiBjbGllbnRXaWR0aCk7CiAg
ICAgICAgIGludCBwYWdlU3RlcCA9IChjbGllbnRXaWR0aCAtIGNBbW91bnRUb0tlZXBXaGVuUGFn
aW5nKTsKQEAgLTMzMyw3ICszMzUsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJh
cnMoY29uc3QgCiAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldFN1cHByZXNz
SW52YWxpZGF0aW9uKGZhbHNlKTsgCiAgICAgfSAKIAotICAgIGlmICghcGxhdGZvcm1IYW5kbGVW
ZXJ0aWNhbEFkanVzdG1lbnQoc2Nyb2xsKSAmJiBtX3ZlcnRpY2FsU2Nyb2xsYmFyKSB7CisgICAg
aWYgKG1fdmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgaW50IGNsaWVudEhlaWdodCA9IHZp
c2libGVIZWlnaHQoKTsKICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+c2V0RW5hYmxlZChj
b250ZW50c0hlaWdodCgpID4gY2xpZW50SGVpZ2h0KTsKICAgICAgICAgaW50IHBhZ2VTdGVwID0g
KGNsaWVudEhlaWdodCAtIGNBbW91bnRUb0tlZXBXaGVuUGFnaW5nKTsKQEAgLTgxMCwxNyArODEy
LDUgQEAgYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUlzT2Zmc2NyZWVuKCkgYwogfQogI2VuZGlm
CiAKLSNpZiAhUExBVEZPUk0oR1RLKQotYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZUhv
cml6b250YWxBZGp1c3RtZW50KGNvbnN0IEludFNpemUmKQotewotICAgIHJldHVybiBmYWxzZTsK
LX0KLQotYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZVZlcnRpY2FsQWRqdXN0bWVudChj
b25zdCBJbnRTaXplJikKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0jZW5kaWYKLQogfQogCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkocmV2aXNpb24gMzcyMjEpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjYxLDggKzI2MSw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwbGF0Zm9ybVNldFNjcm9sbGJhcnNTdXBwcmVzc2VkKGJvb2wgcmVwYWlu
dE9uVW5zdXBwcmVzcyk7CiAgICAgdm9pZCBwbGF0Zm9ybVJlcGFpbnRDb250ZW50UmVjdGFuZ2xl
KGNvbnN0IEludFJlY3QmLCBib29sIG5vdyk7CiAgICAgYm9vbCBwbGF0Zm9ybUlzT2Zmc2NyZWVu
KCkgY29uc3Q7Ci0gICAgYm9vbCBwbGF0Zm9ybUhhbmRsZUhvcml6b250YWxBZGp1c3RtZW50KGNv
bnN0IEludFNpemUmKTsKLSAgICBib29sIHBsYXRmb3JtSGFuZGxlVmVydGljYWxBZGp1c3RtZW50
KGNvbnN0IEludFNpemUmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZCBfX09CSkNf
XwogcHVibGljOgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAJKHJl
dmlzaW9uIDM3MjIxKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsVmlld0d0ay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWlj
aGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA3IEhv
bGdlciBIYW5zIFBldGVyIEZyZXl0aGVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KLSAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTnVhbnRpIEx0ZC4KICAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0zMiw4MSArMzIsMjkgQEAKICNpbmNs
dWRlICJTY3JvbGxWaWV3LmgiCiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJG
b2N1c0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgIkhvc3RXaW5kb3cu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNp
bmNsdWRlICJQbGF0Zm9ybU1vdXNlRXZlbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZl
bnQuaCIKICNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNs
dWRlICJTY3JvbGxiYXJHdGsuaCIKLSNpbmNsdWRlICJTY3JvbGxiYXJUaGVtZS5oIgogCiAjaW5j
bHVkZSA8Z3RrL2d0ay5oPgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIFNjcm9sbFZpZXc6OlNjcm9sbFZpZXdQcml2YXRlCiB7CiBwdWJsaWM6
Ci0gICAgU2Nyb2xsVmlld1ByaXZhdGUoU2Nyb2xsVmlldyogX3ZpZXcpCi0gICAgICAgIDogdmll
dyhfdmlldykKLSAgICAgICAgLCBob3Jpem9udGFsQWRqdXN0bWVudCgwKQotICAgICAgICAsIHZl
cnRpY2FsQWRqdXN0bWVudCgwKQotICAgIHt9Ci0KLSAgICB+U2Nyb2xsVmlld1ByaXZhdGUoKQot
ICAgIHsKLSAgICAgICAgaWYgKGhvcml6b250YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgICAgICBn
X3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QoaG9yaXpvbnRhbEFk
anVzdG1lbnQpLCAoZ3BvaW50ZXIpU2Nyb2xsVmlld1ByaXZhdGU6OmFkanVzdG1lbnRDaGFuZ2Vk
LCB0aGlzKTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKGhvcml6b250YWxBZGp1c3RtZW50
KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh2ZXJ0aWNhbEFkanVzdG1lbnQpIHsKLSAgICAg
ICAgICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09CSkVDVCh2ZXJ0
aWNhbEFkanVzdG1lbnQpLCAoZ3BvaW50ZXIpU2Nyb2xsVmlld1ByaXZhdGU6OmFkanVzdG1lbnRD
aGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKHZlcnRpY2FsQWRqdXN0
bWVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBhZGp1c3RtZW50Q2hh
bmdlZChHdGtBZGp1c3RtZW50KiwgZ3BvaW50ZXIpOworICAgIFNjcm9sbFZpZXdQcml2YXRlKCkg
OgorICAgICAgICBob3Jpem9udGFsQWRqdXN0bWVudCgwKQorICAgICAgICAsIHZlcnRpY2FsQWRq
dXN0bWVudCgwKSB7fQogCi0gICAgU2Nyb2xsVmlldyogdmlldzsKLSAgICBJbnRTaXplIHZpZXdQ
b3J0U2l6ZTsKICAgICBHdGtBZGp1c3RtZW50KiBob3Jpem9udGFsQWRqdXN0bWVudDsKICAgICBH
dGtBZGp1c3RtZW50KiB2ZXJ0aWNhbEFkanVzdG1lbnQ7CiB9OwogCi12b2lkIFNjcm9sbFZpZXc6
OlNjcm9sbFZpZXdQcml2YXRlOjphZGp1c3RtZW50Q2hhbmdlZChHdGtBZGp1c3RtZW50KiBhZGp1
c3RtZW50LCBncG9pbnRlciBfdGhhdCkKLXsKLSAgICBTY3JvbGxWaWV3UHJpdmF0ZSogdGhhdCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8U2Nyb2xsVmlld1ByaXZhdGUqPihfdGhhdCk7Ci0KLSAgICAvLyBG
aWd1cmUgb3V0IGlmIHdlIHJlYWxseSBtb3ZlZC4KLSAgICBJbnRTaXplIG5ld09mZnNldCA9IHRo
YXQtPnZpZXctPm1fc2Nyb2xsT2Zmc2V0OwotICAgIGlmIChhZGp1c3RtZW50ID09IHRoYXQtPmhv
cml6b250YWxBZGp1c3RtZW50KQotICAgICAgICBuZXdPZmZzZXQuc2V0V2lkdGgoc3RhdGljX2Nh
c3Q8aW50PihndGtfYWRqdXN0bWVudF9nZXRfdmFsdWUoYWRqdXN0bWVudCkpKTsKLSAgICBlbHNl
IGlmIChhZGp1c3RtZW50ID09IHRoYXQtPnZlcnRpY2FsQWRqdXN0bWVudCkKLSAgICAgICAgbmV3
T2Zmc2V0LnNldEhlaWdodChzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50X2dldF92YWx1
ZShhZGp1c3RtZW50KSkpOwotCi0gICAgSW50U2l6ZSBzY3JvbGxEZWx0YSA9IG5ld09mZnNldCAt
IHRoYXQtPnZpZXctPm1fc2Nyb2xsT2Zmc2V0OwotICAgIGlmIChzY3JvbGxEZWx0YSA9PSBJbnRT
aXplKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0aGF0LT52aWV3LT5tX3Njcm9sbE9mZnNldCA9
IG5ld09mZnNldDsKLQotICAgIGlmICh0aGF0LT52aWV3LT5zY3JvbGxiYXJzU3VwcHJlc3NlZCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aGF0LT52aWV3LT5zY3JvbGxDb250ZW50cyhzY3Jv
bGxEZWx0YSk7Ci0gICAgc3RhdGljX2Nhc3Q8RnJhbWVWaWV3Kj4odGhhdC0+dmlldyktPmZyYW1l
KCktPnNlbmRTY3JvbGxFdmVudCgpOwotfQotCiBTY3JvbGxWaWV3OjpTY3JvbGxWaWV3KCkKLSAg
ICA6IG1fZGF0YShuZXcgU2Nyb2xsVmlld1ByaXZhdGUodGhpcykpCisgICAgOiBtX2RhdGEobmV3
IFNjcm9sbFZpZXdQcml2YXRlKCkpCiB7CiAgICAgaW5pdCgpOwogfQpAQCAtMTE3LDQxICs2NSw2
IEBAIFNjcm9sbFZpZXc6On5TY3JvbGxWaWV3KCkKICAgICBkZWxldGUgbV9kYXRhOwogfQogCi0v
KgotICogVGhlIGZvbGxvd2luZyBpcyBhc3N1bWVkOgotICogICAoaGFkaiAmJiB2YWRqKSB8fCAo
IWhhZGogJiYgIXZhZGopCi0gKi8KLXZvaWQgU2Nyb2xsVmlldzo6c2V0R3RrQWRqdXN0bWVudHMo
R3RrQWRqdXN0bWVudCogaGFkaiwgR3RrQWRqdXN0bWVudCogdmFkaikKLXsKLSAgICBBU1NFUlQo
IWhhZGogPT0gIXZhZGopOwotCi0gICAgaWYgKG1fZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQp
IHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JKRUNU
KG1fZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQpLCAoZ3BvaW50ZXIpU2Nyb2xsVmlld1ByaXZh
dGU6OmFkanVzdG1lbnRDaGFuZ2VkLCBtX2RhdGEpOwotICAgICAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMoR19PQkpFQ1QobV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQp
LCAoZ3BvaW50ZXIpU2Nyb2xsVmlld1ByaXZhdGU6OmFkanVzdG1lbnRDaGFuZ2VkLCBtX2RhdGEp
OwotICAgICAgICBnX29iamVjdF91bnJlZihtX2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50KTsK
LSAgICAgICAgZ19vYmplY3RfdW5yZWYobV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQpOwotICAg
IH0KLQotICAgIG1fZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQgPSBoYWRqOwotICAgIG1fZGF0
YS0+dmVydGljYWxBZGp1c3RtZW50ID0gdmFkajsKLQotICAgIGlmIChtX2RhdGEtPmhvcml6b250
YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9kYXRhLT5ob3Jpem9u
dGFsQWRqdXN0bWVudCwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKFNjcm9sbFZpZXdQcml2
YXRlOjphZGp1c3RtZW50Q2hhbmdlZCksIG1fZGF0YSk7Ci0gICAgICAgIGdfc2lnbmFsX2Nvbm5l
Y3QobV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQsICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFD
SyhTY3JvbGxWaWV3UHJpdmF0ZTo6YWRqdXN0bWVudENoYW5nZWQpLCBtX2RhdGEpOwotCi0gICAg
ICAgIC8qCi0gICAgICAgICAqIGRpc2FibGUgdGhlIHNjcm9sbGJhcnMgKGlmIHdlIGhhdmUgYW55
KSBhcyB0aGUgR3RrQWRqdXN0bWVudCBvdmVyCi0gICAgICAgICAqLwotICAgICAgICBzZXRIYXNW
ZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSk7Ci0gICAgICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxi
YXIoZmFsc2UpOwotCi0gICAgICAgIGdfb2JqZWN0X3JlZihtX2RhdGEtPmhvcml6b250YWxBZGp1
c3RtZW50KTsKLSAgICAgICAgZ19vYmplY3RfcmVmKG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50
KTsKLSAgICB9Ci0KLSAgICB1cGRhdGVTY3JvbGxiYXJzKG1fc2Nyb2xsT2Zmc2V0KTsKLX0KLQog
dm9pZCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUFkZENoaWxkKFdpZGdldCogY2hpbGQpCiB7CiAgICAg
aWYgKCFHVEtfSVNfU09DS0VUKGNoaWxkLT5wbGF0Zm9ybVdpZGdldCgpKSkKQEAgLTE2NCw0NCAr
NzcsNiBAQCB2b2lkIFNjcm9sbFZpZXc6OnBsYXRmb3JtUmVtb3ZlQ2hpbGQoV2lkCiAgICAgICAg
IGd0a19jb250YWluZXJfcmVtb3ZlKEdUS19DT05UQUlORVIoY29udGFpbmluZ1dpbmRvdygpKSwg
Y2hpbGQtPnBsYXRmb3JtV2lkZ2V0KCkpOwogfQogCi1ib29sIFNjcm9sbFZpZXc6OnBsYXRmb3Jt
SGFuZGxlSG9yaXpvbnRhbEFkanVzdG1lbnQoY29uc3QgSW50U2l6ZSYgc2Nyb2xsKQotewotICAg
IGlmIChtX2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIG1fZGF0YS0+aG9y
aXpvbnRhbEFkanVzdG1lbnQtPnBhZ2Vfc2l6ZSA9IHZpc2libGVXaWR0aCgpOwotICAgICAgICBt
X2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50LT5zdGVwX2luY3JlbWVudCA9IHZpc2libGVXaWR0
aCgpIC8gMTAuMDsKLSAgICAgICAgbV9kYXRhLT5ob3Jpem9udGFsQWRqdXN0bWVudC0+cGFnZV9p
bmNyZW1lbnQgPSB2aXNpYmxlV2lkdGgoKSAqIDAuOTsKLSAgICAgICAgbV9kYXRhLT5ob3Jpem9u
dGFsQWRqdXN0bWVudC0+bG93ZXIgPSAwOwotICAgICAgICBtX2RhdGEtPmhvcml6b250YWxBZGp1
c3RtZW50LT51cHBlciA9IGNvbnRlbnRzV2lkdGgoKTsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRf
Y2hhbmdlZChtX2RhdGEtPmhvcml6b250YWxBZGp1c3RtZW50KTsKLQotICAgICAgICBpZiAobV9z
Y3JvbGxPZmZzZXQud2lkdGgoKSAhPSBzY3JvbGwud2lkdGgoKSkgewotICAgICAgICAgICAgbV9k
YXRhLT5ob3Jpem9udGFsQWRqdXN0bWVudC0+dmFsdWUgPSBzY3JvbGwud2lkdGgoKTsKLSAgICAg
ICAgICAgIGd0a19hZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9kYXRhLT5ob3Jpem9udGFsQWRq
dXN0bWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBTY3JvbGxWaWV3OjpwbGF0Zm9ybUhhbmRsZVZlcnRpY2Fs
QWRqdXN0bWVudChjb25zdCBJbnRTaXplJiBzY3JvbGwpCi17Ci0gICAgaWYgKG1fZGF0YS0+dmVy
dGljYWxBZGp1c3RtZW50KSB7Ci0gICAgICAgIG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50LT5w
YWdlX3NpemUgPSB2aXNpYmxlSGVpZ2h0KCk7Ci0gICAgICAgIG1fZGF0YS0+dmVydGljYWxBZGp1
c3RtZW50LT5zdGVwX2luY3JlbWVudCA9IHZpc2libGVIZWlnaHQoKSAvIDEwLjA7Ci0gICAgICAg
IG1fZGF0YS0+dmVydGljYWxBZGp1c3RtZW50LT5wYWdlX2luY3JlbWVudCA9IHZpc2libGVIZWln
aHQoKSAqIDAuOTsKLSAgICAgICAgbV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQtPmxvd2VyID0g
MDsKLSAgICAgICAgbV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQtPnVwcGVyID0gY29udGVudHNI
ZWlnaHQoKTsKLSAgICAgICAgZ3RrX2FkanVzdG1lbnRfY2hhbmdlZChtX2RhdGEtPnZlcnRpY2Fs
QWRqdXN0bWVudCk7Ci0KLSAgICAgICAgaWYgKG1fc2Nyb2xsT2Zmc2V0LmhlaWdodCgpICE9IHNj
cm9sbC5oZWlnaHQoKSkgewotICAgICAgICAgICAgbV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQt
PnZhbHVlID0gc2Nyb2xsLmhlaWdodCgpOwotICAgICAgICAgICAgZ3RrX2FkanVzdG1lbnRfdmFs
dWVfY2hhbmdlZChtX2RhdGEtPnZlcnRpY2FsQWRqdXN0bWVudCk7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfSAKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHZvaWQgU2Ny
b2xsVmlldzo6YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiBjb250YWluaW5nV2luZG93
UmVjdCkKIHsKICAgICBBU1NFUlQoaXNGcmFtZVZpZXcoKSk7CkBAIC0yMTIsNCArODcsNDkgQEAg
dm9pZCBTY3JvbGxWaWV3OjphZGRUb0RpcnR5UmVnaW9uKGNvbnN0IAogICAgIHBhZ2UtPmNocm9t
ZSgpLT5hZGRUb0RpcnR5UmVnaW9uKGNvbnRhaW5pbmdXaW5kb3dSZWN0KTsKIH0KIAordm9pZCBT
Y3JvbGxWaWV3OjpzZXRHdGtBZGp1c3RtZW50cyhHdGtBZGp1c3RtZW50KiBoYWRqLCBHdGtBZGp1
c3RtZW50KiB2YWRqKQoreworICAgIEFTU0VSVCghaGFkaiA9PSAhdmFkaik7CisKKyAgICAvLyBG
SVhNRTogQXZvaWQgZGVzdHJ1Y3Rpb24gb2YgcGVybWFuZW50IFNjcm9sbGJhcnMuCisjaWYgMAor
ICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoZmFsc2UpOworICAgIG1faG9yaXpvbnRhbFNj
cm9sbGJhciA9IGFkb3B0UmVmKG5ldyBTY3JvbGxiYXJHdGsodGhpcywgSG9yaXpvbnRhbFNjcm9s
bGJhciwgUmVndWxhclNjcm9sbGJhciwgaGFkaikpOworICAgIGFkZENoaWxkKG1faG9yaXpvbnRh
bFNjcm9sbGJhci5nZXQoKSk7CisKKyAgICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSk7
CisgICAgbV92ZXJ0aWNhbFNjcm9sbGJhciA9IGFkb3B0UmVmKG5ldyBTY3JvbGxiYXJHdGsodGhp
cywgVmVydGljYWxTY3JvbGxiYXIsIFJlZ3VsYXJTY3JvbGxiYXIsIHZhZGopKTsKKyAgICBhZGRD
aGlsZChtX3ZlcnRpY2FsU2Nyb2xsYmFyLmdldCgpKTsKKyNlbmRpZgorCisgICAgc2V0SGFzSG9y
aXpvbnRhbFNjcm9sbGJhcihmYWxzZSk7CisgICAgc2V0SGFzVmVydGljYWxTY3JvbGxiYXIoZmFs
c2UpOworICAgIG1fZGF0YS0+aG9yaXpvbnRhbEFkanVzdG1lbnQgPSBoYWRqOworICAgIG1fZGF0
YS0+dmVydGljYWxBZGp1c3RtZW50ID0gdmFkajsKKyAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xs
YmFyKGhhZGopOworICAgIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKHZhZGopOworfQorCit2b2lk
IFNjcm9sbFZpZXc6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIpCit7Cisg
ICAgaWYgKGhhc0JhciAmJiAhbV9ob3Jpem9udGFsU2Nyb2xsYmFyKSB7CisgICAgICAgIG1faG9y
aXpvbnRhbFNjcm9sbGJhciA9IGFkb3B0UmVmKG5ldyBTY3JvbGxiYXJHdGsodGhpcywgSG9yaXpv
bnRhbFNjcm9sbGJhciwgUmVndWxhclNjcm9sbGJhciwgbV9kYXRhLT5ob3Jpem9udGFsQWRqdXN0
bWVudCkpOworICAgICAgICBhZGRDaGlsZChtX2hvcml6b250YWxTY3JvbGxiYXIuZ2V0KCkpOwor
ICAgIH0gZWxzZSBpZiAoIWhhc0JhciAmJiBtX2hvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAg
ICAgcmVtb3ZlQ2hpbGQobV9ob3Jpem9udGFsU2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAgbV9o
b3Jpem9udGFsU2Nyb2xsYmFyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgU2Nyb2xsVmlldzo6c2V0
SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNCYXIpCit7CisgICAgaWYgKGhhc0JhciAmJiAh
bV92ZXJ0aWNhbFNjcm9sbGJhcikgeworICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyID0gYWRv
cHRSZWYobmV3IFNjcm9sbGJhckd0ayh0aGlzLCBWZXJ0aWNhbFNjcm9sbGJhciwgUmVndWxhclNj
cm9sbGJhciwgbV9kYXRhLT52ZXJ0aWNhbEFkanVzdG1lbnQpKTsKKyAgICAgICAgYWRkQ2hpbGQo
bV92ZXJ0aWNhbFNjcm9sbGJhci5nZXQoKSk7CisgICAgfSBlbHNlIGlmICghaGFzQmFyICYmIG1f
dmVydGljYWxTY3JvbGxiYXIpIHsKKyAgICAgICAgcmVtb3ZlQ2hpbGQobV92ZXJ0aWNhbFNjcm9s
bGJhci5nZXQoKSk7CisgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXIgPSAwOworICAgIH0KK30K
KwogfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyR3RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuY3BwCShyZXZpc2lvbiAz
NzIyMSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhckd0ay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICogIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIg
SGFucyBQZXRlciBGcmV5dGhlciB6ZWNrZUBzZWxmaXNoLm9yZworICogIENvcHlyaWdodCAoQykg
MjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAt
MTksMTIgKzIwLDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
R3RrLmgiCiAKLSNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyVGhlbWUuaCIKLSNpbmNsdWRlICJndGtkcmF3aW5nLmgiCiAKICNpbmNs
dWRlIDxndGsvZ3RrLmg+CiAKQEAgLTM1LDM1ICszNCw2OCBAQCBQYXNzUmVmUHRyPFNjcm9sbGJh
cj4gU2Nyb2xsYmFyOjpjcmVhdGVOCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTY3JvbGxiYXJH
dGsoY2xpZW50LCBvcmllbnRhdGlvbiwgc2l6ZSkpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gZ3Rr
U2Nyb2xsRXZlbnRDYWxsYmFjayhHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRTY3JvbGwqIGV2
ZW50LCBTY3JvbGxiYXJHdGsqKQorc3RhdGljIGdib29sZWFuIGd0a1Njcm9sbEV2ZW50Q2FsbGJh
Y2soR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50U2Nyb2xsKiBldmVudCwgU2Nyb2xsYmFyR3Rr
KiBzY3JvbGxiYXIpCiB7CiAgICAgLyogU2Nyb2xsIG9ubHkgaWYgb3VyIHBhcmVudCByZWplY3Rz
IHRoZSBzY3JvbGwgZXZlbnQuIFRoZSByYXRpb25hbGUgZm9yCiAgICAgICogdGhpcyBpcyB0aGF0
IHdlIHdhbnQgdGhlIG1haW4gZnJhbWUgdG8gc2Nyb2xsIHdoZW4gd2UgbW92ZSB0aGUgbW91c2UK
ICAgICAgKiB3aGVlbCBvdmVyIGEgY2hpbGQgc2Nyb2xsYmFyIGluIG1vc3QgY2FzZXMuICovCisK
KyAgICBpZiAoc2Nyb2xsYmFyLT5wYXJlbnQoKSA9PSBzY3JvbGxiYXItPnJvb3QoKSkKKyAgICAg
ICAgcmV0dXJuIEZBTFNFOworCiAgICAgcmV0dXJuIGd0a193aWRnZXRfZXZlbnQoZ3RrX3dpZGdl
dF9nZXRfcGFyZW50KHdpZGdldCksIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnQqPihldmVudCkp
OwogfQogCitzdGF0aWMgdm9pZCBndGtWYWx1ZUNoYW5nZWQoR3RrQWRqdXN0bWVudCogYWRqdXN0
bWVudCwgU2Nyb2xsYmFyR3RrKiBzY3JvbGxiYXIpCit7CisgICAgc2Nyb2xsYmFyLT5zZXRWYWx1
ZShzdGF0aWNfY2FzdDxpbnQ+KGd0a19hZGp1c3RtZW50X2dldF92YWx1ZShhZGp1c3RtZW50KSkp
OworfQorCiBTY3JvbGxiYXJHdGs6OlNjcm9sbGJhckd0ayhTY3JvbGxiYXJDbGllbnQqIGNsaWVu
dCwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29u
dHJvbFNpemUsIEd0a0FkanVzdG1lbnQqIGFkanVzdG1lbnQpCiAgICAgOiBTY3JvbGxiYXIoY2xp
ZW50LCBvcmllbnRhdGlvbiwgY29udHJvbFNpemUpCi0gICAgLCBtX2FkanVzdG1lbnQoR1RLX0FE
SlVTVE1FTlQoZ3RrX2FkanVzdG1lbnRfbmV3KDAuMCwgMC4wLCAwLjAsIDAuMCwgMC4wLCAwLjAp
KSkKKyAgICAsIG1fYWRqdXN0bWVudChhZGp1c3RtZW50KQogewotICAgIEd0a1Njcm9sbGJhciog
c2Nyb2xsQmFyID0gb3JpZW50YXRpb24gPT0gSG9yaXpvbnRhbFNjcm9sbGJhciA/Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBHVEtfU0NST0xMQkFSKDo6Z3RrX2hzY3JvbGxiYXJfbmV3
KG1fYWRqdXN0bWVudCkpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TQ1JP
TExCQVIoOjpndGtfdnNjcm9sbGJhcl9uZXcobV9hZGp1c3RtZW50KSk7Ci0gICAgZ3RrX3dpZGdl
dF9zaG93KEdUS19XSURHRVQoc2Nyb2xsQmFyKSk7Ci0gICAgZ19vYmplY3RfcmVmKEdfT0JKRUNU
KHNjcm9sbEJhcikpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QoR19PQkpFQ1Qoc2Nyb2xsQmFyKSwg
InZhbHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKFNjcm9sbGJhckd0azo6Z3RrVmFsdWVDaGFuZ2Vk
KSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChHX09CSkVDVChzY3JvbGxCYXIpLCAic2Ny
b2xsLWV2ZW50IiwgR19DQUxMQkFDSyhndGtTY3JvbGxFdmVudENhbGxiYWNrKSwgdGhpcyk7Cisg
ICAgaWYgKG1fYWRqdXN0bWVudCkgeworICAgICAgICBzZXRQbGF0Zm9ybVdpZGdldCgwKTsKKyAg
ICAgICAgcmVzaXplKDAsIDApOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fYWRqdXN0bWVudCA9
IEdUS19BREpVU1RNRU5UKGd0a19hZGp1c3RtZW50X25ldygwLjAsIDAuMCwgMC4wLCAwLjAsIDAu
MCwgMC4wKSk7CisgICAgICAgIEd0a1dpZGdldCogc2Nyb2xsQmFyID0gb3JpZW50YXRpb24gPT0g
SG9yaXpvbnRhbFNjcm9sbGJhciA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGd0a19oc2Nyb2xsYmFyX25ldyhtX2FkanVzdG1lbnQpIDoKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ3RrX3ZzY3JvbGxiYXJfbmV3KG1fYWRqdXN0bWVudCk7CisKKyNpZiBH
TElCX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQorICAgICAgICBnX29iamVjdF9yZWZfc2luayhHX09C
SkVDVChzY3JvbGxCYXIpKTsKKyNlbHNlCisgICAgICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChz
Y3JvbGxCYXIpKTsKKyAgICAgICAgZ3RrX29iamVjdF9zaW5rKEdUS19PQkpFQ1Qoc2Nyb2xsQmFy
KSk7CisjZW5kaWYKKworICAgICAgICBndGtfd2lkZ2V0X3Nob3coc2Nyb2xsQmFyKTsKKworICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KEdfT0JKRUNUKHNjcm9sbEJhciksICJzY3JvbGwtZXZlbnQi
LCBHX0NBTExCQUNLKGd0a1Njcm9sbEV2ZW50Q2FsbGJhY2spLCB0aGlzKTsKKyAgICAgICAgc2V0
UGxhdGZvcm1XaWRnZXQoc2Nyb2xsQmFyKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBhc3Np
Z24gYSBzYW5lIGRlZmF1bHQgd2lkdGggYW5kIGhlaWdodCB0byB0aGUgU2Nyb2xsYmFyLCBvdGhl
cndpc2UKKyAgICAgICAgICogd2Ugd2lsbCBlbmQgdXAgd2l0aCBhIDAgd2lkdGggc2Nyb2xsYmFy
LgorICAgICAgICAgKi8KKyAgICAgICAgcmVzaXplKFNjcm9sbGJhclRoZW1lOjpuYXRpdmVUaGVt
ZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKSwKKyAgICAgICAgICAgICAgIFNjcm9sbGJhclRoZW1l
OjpuYXRpdmVUaGVtZSgpLT5zY3JvbGxiYXJUaGlja25lc3MoKSk7CisgICAgfQogCi0gICAgc2V0
UGxhdGZvcm1XaWRnZXQoR1RLX1dJREdFVChzY3JvbGxCYXIpKTsKKyAgICB1cGRhdGVUaHVtYlBy
b3BvcnRpb24oKTsKKyAgICB1cGRhdGVUaHVtYlBvc2l0aW9uKCk7CiAKLSAgICAvKgotICAgICAq
IGFzc2lnbiBhIHNhbmUgZGVmYXVsdCB3aWR0aCBhbmQgaGVpZ2h0IHRvIHRoZSBTY3JvbGxiYXIs
IG90aGVyd2lzZQotICAgICAqIHdlIHdpbGwgZW5kIHVwIHdpdGggYSAwIHdpZHRoIHNjcm9sbGJh
ci4KLSAgICAgKi8KLSAgICByZXNpemUoU2Nyb2xsYmFyVGhlbWU6Om5hdGl2ZVRoZW1lKCktPnNj
cm9sbGJhclRoaWNrbmVzcygpLAotICAgICAgICAgICBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhl
bWUoKS0+c2Nyb2xsYmFyVGhpY2tuZXNzKCkpOworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLDEw
LDApCisgICAgZ19vYmplY3RfcmVmX3NpbmsoR19PQkpFQ1QobV9hZGp1c3RtZW50KSk7CisjZWxz
ZQorICAgIGdfb2JqZWN0X3JlZihHX09CSkVDVChtX2FkanVzdG1lbnQpKTsKKyAgICBndGtfb2Jq
ZWN0X3NpbmsoR1RLX09CSkVDVChtX2FkanVzdG1lbnQpKTsKKyNlbmRpZgorCisgICAgZ19zaWdu
YWxfY29ubmVjdF9hZnRlcihHX09CSkVDVChtX2FkanVzdG1lbnQpLCAidmFsdWUtY2hhbmdlZCIs
IEdfQ0FMTEJBQ0soZ3RrVmFsdWVDaGFuZ2VkKSwgdGhpcyk7CiB9CiAKIFNjcm9sbGJhckd0azo6
flNjcm9sbGJhckd0aygpCkBAIC03MSw5ICsxMDMsMTMgQEAgU2Nyb2xsYmFyR3RrOjp+U2Nyb2xs
YmFyR3RrKCkKICAgICAvKgogICAgICAqIHRoZSBXaWRnZXQgZG9lcyBub3QgdGFrZSBvdmVyIG93
bmVyc2hpcC4KICAgICAgKi8KLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1
bmMoR19PQkpFQ1QocGxhdGZvcm1XaWRnZXQoKSksIChncG9pbnRlcilTY3JvbGxiYXJHdGs6Omd0
a1ZhbHVlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9i
eV9mdW5jKEdfT0JKRUNUKHBsYXRmb3JtV2lkZ2V0KCkpLCAoZ3BvaW50ZXIpZ3RrU2Nyb2xsRXZl
bnRDYWxsYmFjaywgdGhpcyk7Ci0gICAgZ19vYmplY3RfdW5yZWYoR19PQkpFQ1QocGxhdGZvcm1X
aWRnZXQoKSkpOworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhHX09C
SkVDVChtX2FkanVzdG1lbnQpLCAoZ3BvaW50ZXIpZ3RrVmFsdWVDaGFuZ2VkLCB0aGlzKTsKKyAg
ICBnX29iamVjdF91bnJlZihtX2FkanVzdG1lbnQpOworCisgICAgaWYgKHBsYXRmb3JtV2lkZ2V0
KCkpIHsKKyAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKEdfT0JK
RUNUKHBsYXRmb3JtV2lkZ2V0KCkpLCAoZ3BvaW50ZXIpZ3RrU2Nyb2xsRXZlbnRDYWxsYmFjaywg
dGhpcyk7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKEdfT0JKRUNUKHBsYXRmb3JtV2lkZ2V0KCkp
KTsKKyAgICB9CiB9CiAKIHZvaWQgU2Nyb2xsYmFyR3RrOjpmcmFtZVJlY3RzQ2hhbmdlZCgpIGNv
bnN0CkBAIC04MSw2ICsxMTcsOSBAQCB2b2lkIFNjcm9sbGJhckd0azo6ZnJhbWVSZWN0c0NoYW5n
ZWQoKSBjCiAgICAgaWYgKCFwYXJlbnQoKSB8fCAhcGFyZW50KCktPmlzU2Nyb2xsVmlld1Njcm9s
bGJhcih0aGlzKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKCFwbGF0Zm9ybVdpZGdldCgp
KQorICAgICAgICByZXR1cm47CisKICAgICBJbnRQb2ludCBsb2MgPSBwYXJlbnQoKS0+Y29udmVy
dFRvQ29udGFpbmluZ1dpbmRvdyhmcmFtZVJlY3QoKS5sb2NhdGlvbigpKTsKIAogICAgIC8vIERv
bid0IGFsbG93IHRoZSBhbGxvY2F0aW9uIHNpemUgdG8gYmUgbmVnYXRpdmUKQEAgLTkzLDggKzEz
Miw4IEBAIHZvaWQgU2Nyb2xsYmFyR3RrOjpmcmFtZVJlY3RzQ2hhbmdlZCgpIGMKIAogdm9pZCBT
Y3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUG9zaXRpb24oKQogewotICAgIGlmIChtX2FkanVzdG1l
bnQtPnZhbHVlICE9IG1fY3VycmVudFBvcykgewotICAgICAgICBtX2FkanVzdG1lbnQtPnZhbHVl
ID0gbV9jdXJyZW50UG9zOworICAgIGlmIChtX2FkanVzdG1lbnQtPnZhbHVlICE9IHZhbHVlKCkp
IHsKKyAgICAgICAgbV9hZGp1c3RtZW50LT52YWx1ZSA9IHZhbHVlKCk7CiAgICAgICAgIGd0a19h
ZGp1c3RtZW50X3ZhbHVlX2NoYW5nZWQobV9hZGp1c3RtZW50KTsKICAgICB9CiB9CkBAIC0xMDQs
NiArMTQzLDcgQEAgdm9pZCBTY3JvbGxiYXJHdGs6OnVwZGF0ZVRodW1iUHJvcG9ydGlvbgogICAg
IG1fYWRqdXN0bWVudC0+c3RlcF9pbmNyZW1lbnQgPSBtX2xpbmVTdGVwOwogICAgIG1fYWRqdXN0
bWVudC0+cGFnZV9pbmNyZW1lbnQgPSBtX3BhZ2VTdGVwOwogICAgIG1fYWRqdXN0bWVudC0+cGFn
ZV9zaXplID0gbV92aXNpYmxlU2l6ZTsKKyAgICBtX2FkanVzdG1lbnQtPmxvd2VyID0gMDsKICAg
ICBtX2FkanVzdG1lbnQtPnVwcGVyID0gbV90b3RhbFNpemU7CiAgICAgZ3RrX2FkanVzdG1lbnRf
Y2hhbmdlZChtX2FkanVzdG1lbnQpOwogfQpAQCAtMTE5LDYgKzE1OSw5IEBAIHZvaWQgU2Nyb2xs
YmFyR3RrOjpmcmFtZVJlY3RzQ2hhbmdlZCgpCiAgICAgaWYgKCFwYXJlbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCisgICAgaWYgKCFwbGF0Zm9ybVdpZGdldCgpKQorICAgICAgICByZXR1cm47CisK
ICAgICBBU1NFUlQocGFyZW50KCktPmlzRnJhbWVWaWV3KCkpOwogCiAgICAgRnJhbWVWaWV3KiBm
cmFtZVZpZXcgPSBzdGF0aWNfY2FzdDxGcmFtZVZpZXcqPihwYXJlbnQoKSk7CkBAIC0xMzEsMjAg
KzE3NCwxNSBAQCB2b2lkIFNjcm9sbGJhckd0azo6ZnJhbWVSZWN0c0NoYW5nZWQoKQogICAgIGd0
a193aWRnZXRfc2l6ZV9hbGxvY2F0ZShwbGF0Zm9ybVdpZGdldCgpLCAmYWxsb2NhdGlvbik7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyR3RrOjpndGtWYWx1ZUNoYW5nZWQoR3RrQWRqdXN0bWVudCosIFNj
cm9sbGJhckd0ayogdGhhdCkKLXsKLSAgICB0aGF0LT5zZXRWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+
KGd0a19hZGp1c3RtZW50X2dldF92YWx1ZSh0aGF0LT5tX2FkanVzdG1lbnQpKSk7Ci19Ci0KIHZv
aWQgU2Nyb2xsYmFyR3RrOjpzZXRFbmFibGVkKGJvb2wgc2hvdWxkRW5hYmxlKQogewogICAgIGlm
IChlbmFibGVkKCkgPT0gc2hvdWxkRW5hYmxlKQogICAgICAgICByZXR1cm47Ci0gICAgICAgIAot
ICAgIFNjcm9sbGJhcjo6c2V0RW5hYmxlZChzaG91bGRFbmFibGUpOwotICAgIGlmIChwbGF0Zm9y
bVdpZGdldCgpKSAKLSAgICAgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKHBsYXRmb3JtV2lk
Z2V0KCksIHNob3VsZEVuYWJsZSk7Ci19CiAKKyAgICBTY3JvbGxiYXI6OnNldEVuYWJsZWQoc2hv
dWxkRW5hYmxlKTsKIAorICAgIGlmICghcGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmV0dXJu
OwogCisgICAgZ3RrX3dpZGdldF9zZXRfc2Vuc2l0aXZlKHBsYXRmb3JtV2lkZ2V0KCksIHNob3Vs
ZEVuYWJsZSk7Cit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaAkocmV2aXNp
b24gMzcyMjEpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJHdGsuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogI2RlZmluZSBTY3JvbGxiYXJHdGtfaAogCiAjaW5j
bHVkZSAiU2Nyb2xsYmFyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAogdHlwZWRl
ZiBzdHJ1Y3QgX0d0a0FkanVzdG1lbnQgR3RrQWRqdXN0bWVudDsKIApAQCAtMzYsNiArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JvbGxiYXJHdGsgOiBwdWJsaWMgU2Nyb2xs
YmFyIHsKIHB1YmxpYzoKICAgICBmcmllbmQgY2xhc3MgU2Nyb2xsYmFyOworICAgIFNjcm9sbGJh
ckd0ayhTY3JvbGxiYXJDbGllbnQqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29u
dHJvbFNpemUsIEd0a0FkanVzdG1lbnQqID0gMCk7CiAKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJH
dGsoKTsKIApAQCAtNTEsMTQgKzUxLDExIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZnJh
bWVSZWN0c0NoYW5nZWQoKSBjb25zdDsKIAogcHJvdGVjdGVkOgotICAgIFNjcm9sbGJhckd0ayhT
Y3JvbGxiYXJDbGllbnQqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNp
emUpOwotCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRodW1iUG9zaXRpb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlVGh1bWJQcm9wb3J0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIGZyYW1l
UmVjdHNDaGFuZ2VkKCk7CiAgICAgCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIGd0a1ZhbHVl
Q2hhbmdlZChHdGtBZGp1c3RtZW50KiwgU2Nyb2xsYmFyR3RrKik7CiAgICAgR3RrQWRqdXN0bWVu
dCogbV9hZGp1c3RtZW50OwogfTsKIApJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3MjM1KQorKysgV2ViS2l0
L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAwOC0xMC0w
MyAgQWxwIFRva2VyICA8YWxwQG51YW50aS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzAzCisgICAgICAgIEF1dG8gc2Nyb2xsIGRvZXMgbm90IHdvcmsgZm9yIEd0ayAt
IGFnYWluCisKKyAgICAgICAgRWxtaW5pYXRlIFNjcm9sbFZpZXdQcml2YXRlIGFuZCByZWR1Y2Ug
R1RLKy1zcGVjaWZpYyBzcGVjaWFsLWNhc2VzIGluCisgICAgICAgIFNjcm9sbFZpZXcuCisKKyAg
ICAgICAgSW1wbGVtZW50IGEgYnVmZmVyaW5nIHNjaGVtZSB0byBhdm9pZCBmdWxsIHJlcGFpbnRz
IHdoZW4gc2Nyb2xsaW5nCisgICAgICAgIHZpZXdzIG9yIHN1YmZyYW1lcyBzaWduaWZpY2FudGx5
IGltcHJvdmluZyBzY3JvbGxpbmcgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgSW1wcm92ZSByZW5k
ZXJpbmcgcGVyZm9ybWFuY2UgYnkgY29hbGVzY2luZyBsYXJnZSBudW1iZXJzIG9mIHNtYWxsCisg
ICAgICAgIHJlcGFpbnRzLgorCisgICAgICAgIEFsc28gZml4ZXMgbG9uZy1ydW5uaW5nIGlzc3Vl
cyB3aXRoIHNjcm9sbGJhciBwb3NpdGlvbmluZyBhbmQgZnJhbWUKKyAgICAgICAgaW52YWxpZGF0
aW9uLgorCisgICAgICAgIFJlbmRlcmluZyBpbiB0aGUgR1RLKyBwb3J0IHNob3VsZCBiZSBtb3Jl
IHNpbWlsYXIgdG8gb3RoZXIgcG9ydHMgYWZ0ZXIKKyAgICAgICAgdGhlc2UgY2hhbmdlcy4KKwor
ICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudDo6cmVwYWludCk6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6c2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjphZGRUb0RpcnR5
UmVnaW9uKToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisKIDIwMDgtMTAt
MDMgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgICBSZW1vdmUgYWRk
VG9EaXJ0eVJlZ2lvbi4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xp
ZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5jcHAJKHJldmlzaW9uIDM3MjIxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNyBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4IENocmlzdGlhbiBEeXdhbiA8Y2hyaXN0aWFuQGltZW5k
aW8uY29tPgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5jb20+
CiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0yNjEsOCArMjYyLDcgQEAgSW50UmVjdCBDaHJvbWVD
bGllbnQ6OndpbmRvd1Jlc2l6ZXJSZWN0KAogCiB2b2lkIENocm9tZUNsaWVudDo6cmVwYWludChj
b25zdCBJbnRSZWN0JiB3aW5kb3dSZWN0LCBib29sIGNvbnRlbnRDaGFuZ2VkLCBib29sIGltbWVk
aWF0ZSwgYm9vbCByZXBhaW50Q29udGVudE9ubHkpCiB7Ci0gICAgLy8gU2luY2Ugd2UgaGF2ZSBu
byBiYWNraW5nIHN0b3JlLCB3ZSBkbyBub3RoaW5nIGlmIHJlcGFpbnRDb250ZW50T25seSBpcyBz
ZXQuCi0gICAgaWYgKCFtX3dlYlZpZXcgfHwgcmVwYWludENvbnRlbnRPbmx5KQorICAgIGlmICgh
bV93ZWJWaWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBHZGtSZWN0YW5nbGUgcmVjdCA9IHdp
bmRvd1JlY3Q7CkBAIC0yNzEsMTUgKzI3MSw0NyBAQCB2b2lkIENocm9tZUNsaWVudDo6cmVwYWlu
dChjb25zdCBJbnRSZWN0CiAgICAgaWYgKHdpbmRvdykgewogICAgICAgICAvLyBObyBkb3VibGUg
YnVmZmVyLgogICAgICAgICBpZiAoY29udGVudENoYW5nZWQpCi0gICAgICAgICAgICBnZGtfd2lu
ZG93X2ludmFsaWRhdGVfcmVjdCh3aW5kb3csICZyZWN0LCB0cnVlKTsKKyAgICAgICAgICAgIGdk
a193aW5kb3dfaW52YWxpZGF0ZV9yZWN0KHdpbmRvdywgJnJlY3QsIEZBTFNFKTsKKworICAgICAg
ICAvLyBObyBkb3VibGUgYnVmZmVyIHlldCwgc28gbm8gbmVlZCBmb3IgaW1tZWRpYXRlIHVwZGF0
ZXMuCisjaWYgMAogICAgICAgICBpZiAoaW1tZWRpYXRlKQotICAgICAgICAgICAgZ2RrX3dpbmRv
d19wcm9jZXNzX3VwZGF0ZXMod2luZG93LCB0cnVlKTsKKyAgICAgICAgICAgIGdka193aW5kb3df
cHJvY2Vzc191cGRhdGVzKHdpbmRvdywgRkFMU0UpOworI2VuZGlmCiAgICAgfQogfQogCiB2b2lk
IENocm9tZUNsaWVudDo6c2Nyb2xsKGNvbnN0IEludFNpemUmIGRlbHRhLCBjb25zdCBJbnRSZWN0
JiBzY3JvbGxWaWV3UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fd2ViVmlldykKKyAgICAgICAgcmV0dXJuOworCisgICAg
R2RrV2luZG93KiBnZGtXaW5kb3cgPSBHVEtfV0lER0VUKG1fd2ViVmlldyktPndpbmRvdzsKKyAg
ICBpZiAoIWdka1dpbmRvdykKKyAgICAgICAgcmV0dXJuOworCisgICAgR2RrUmVjdGFuZ2xlIGFy
ZWEgPSBjbGlwUmVjdDsKKworICAgIEdka1JlY3RhbmdsZSBzcmNfYXJlYTsKKyAgICBHZGtSZWN0
YW5nbGUgbW92ZUFyZWE7CisKKyAgICBzcmNfYXJlYSA9IGFyZWE7CisgICAgc3JjX2FyZWEueCAt
PSBkZWx0YS53aWR0aCgpOworICAgIHNyY19hcmVhLnkgLT0gZGVsdGEuaGVpZ2h0KCk7CisKKyAg
ICBHZGtSZWdpb24qIGludmFsaWRSZWdpb24gPSBnZGtfcmVnaW9uX3JlY3RhbmdsZSgmYXJlYSk7
CisKKyAgICBpZiAoZ2RrX3JlY3RhbmdsZV9pbnRlcnNlY3QoJmFyZWEsICZzcmNfYXJlYSwgJm1v
dmVBcmVhKSkKKyAgICB7CisgICAgICAgIEdka1JlZ2lvbiogbW92ZVJlZ2lvbiA9IGdka19yZWdp
b25fcmVjdGFuZ2xlKCZtb3ZlQXJlYSk7CisgICAgICAgIGdka193aW5kb3dfbW92ZV9yZWdpb24o
Z2RrV2luZG93LCBtb3ZlUmVnaW9uLCBkZWx0YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQoKSk7Cisg
ICAgICAgIGdka19yZWdpb25fb2Zmc2V0KG1vdmVSZWdpb24sIGRlbHRhLndpZHRoKCksIGRlbHRh
LmhlaWdodCgpKTsKKyAgICAgICAgZ2RrX3JlZ2lvbl9zdWJ0cmFjdChpbnZhbGlkUmVnaW9uLCBt
b3ZlUmVnaW9uKTsKKyAgICAgICAgZ2RrX3JlZ2lvbl9kZXN0cm95KG1vdmVSZWdpb24pOworICAg
IH0KKworICAgIGdka193aW5kb3dfaW52YWxpZGF0ZV9yZWdpb24oZ2RrV2luZG93LCBpbnZhbGlk
UmVnaW9uLCBGQUxTRSk7CisgICAgZ2RrX3JlZ2lvbl9kZXN0cm95KGludmFsaWRSZWdpb24pOwog
fQogCiBJbnRSZWN0IENocm9tZUNsaWVudDo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVjdCYg
cmVjdCkgY29uc3QKQEAgLTI5NCw5ICszMjYsMTMgQEAgSW50UG9pbnQgQ2hyb21lQ2xpZW50Ojpz
Y3JlZW5Ub1dpbmRvdyhjbwogICAgIHJldHVybiBwb2ludDsKIH0KIAotdm9pZCBDaHJvbWVDbGll
bnQ6OmFkZFRvRGlydHlSZWdpb24oY29uc3QgSW50UmVjdCYpCit2b2lkIENocm9tZUNsaWVudDo6
YWRkVG9EaXJ0eVJlZ2lvbihjb25zdCBJbnRSZWN0JiByKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgR2RrUmVjdGFuZ2xlIHJlY3QgPSByOworICAgIEdka1dpbmRvdyogd2luZG93ID0g
R1RLX1dJREdFVChtX3dlYlZpZXcpLT53aW5kb3c7CisKKyAgICBpZiAod2luZG93KQorICAgICAg
ICBnZGtfd2luZG93X2ludmFsaWRhdGVfcmVjdCh3aW5kb3csICZyZWN0LCBGQUxTRSk7CiB9CiAK
IHZvaWQgQ2hyb21lQ2xpZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0
UmVzdWx0JiBoaXQsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpCkluZGV4OiBXZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24gMzcyMjEpCisrKyBXZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgyLDggKzI4Miw2IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2UKICAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7CiAKICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdl
YlZpZXcpLT5tYWluRnJhbWUoKTsKLSAgICBHZGtSZWN0YW5nbGUgY2xpcDsKLSAgICBnZGtfcmVn
aW9uX2dldF9jbGlwYm94KGV2ZW50LT5yZWdpb24sICZjbGlwKTsKICAgICBjYWlyb190KiBjciA9
IGdka19jYWlyb19jcmVhdGUoZXZlbnQtPndpbmRvdyk7CiAgICAgR3JhcGhpY3NDb250ZXh0IGN0
eChjcik7CiAgICAgY3R4LnNldEdka0V4cG9zZUV2ZW50KGV2ZW50KTsKQEAgLTI5Nyw4ICsyOTUs
MjggQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdF93ZWJfdmlld19leHBvc2VfZQogICAgICAgICAg
ICAgY2Fpcm9fcmVzdG9yZShjcik7CiAgICAgICAgIH0KIAotICAgICAgICBmcmFtZS0+dmlldygp
LT5wYWludCgmY3R4LCBjbGlwKTsKKyAgICAgICAgR2RrUmVjdGFuZ2xlKiByZWN0cyA9IE5VTEw7
CisgICAgICAgIGludCBuX3JlY3RzID0gMDsKKyAgICAgICAgZ2RrX3JlZ2lvbl9nZXRfcmVjdGFu
Z2xlcyhldmVudC0+cmVnaW9uLCAmcmVjdHMsICZuX3JlY3RzKTsKKworICAgICAgICAvLyBBdm9p
ZCByZWN1cnNpbmcgaW50byB0aGUgcmVuZGVyIHRyZWUgZXhjZXNzaXZlbHkKKyAgICAgICAgaWYg
KG5fcmVjdHMgPiAxNikgeworICAgICAgICAgICAgSW50UmVjdCBjbGlwID0gZXZlbnQtPmFyZWE7
CisgICAgICAgICAgICBjdHguY2xpcChjbGlwKTsKKyAgICAgICAgICAgIGZyYW1lLT52aWV3KCkt
PnBhaW50KCZjdHgsIGNsaXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBuX3JlY3RzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHJl
Y3QgPSByZWN0c1tpXTsKKyAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOworICAgICAgICAgICAg
ICAgIGN0eC5jbGlwKHJlY3QpOworICAgICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnBhaW50
KCZjdHgsIHJlY3QpOworICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBnX2ZyZWUocmVjdHMpOwogICAgIH0KKwogICAgIGNh
aXJvX2Rlc3Ryb3koY3IpOwogCiAgICAgcmV0dXJuIEZBTFNFOwo=
</data>
<flag name="review"
          id="10888"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24484</attachid>
            <date>2008-10-18 00:28:14 -0700</date>
            <delta_ts>2008-10-20 08:26:53 -0700</delta_ts>
            <desc>Scrolling fixes</desc>
            <filename>nuanti-scrollperf-oct18.patch</filename>
            <type>text/plain</type>
            <size>7684</size>
            <attacher name="Alp Toker">alp</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiAzNzY3NikKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDgtMTAtMTggIEFscCBUb2tlciAgPGFscEBudWFu
dGkuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTMwMworICAgICAgICBb
R1RLXSBTY3JvbGxpbmcgZ2xpdGNoZXMKKworICAgICAgICBJbXBsZW1lbnQgYSBidWZmZXJpbmcg
c2NoZW1lIHRvIGF2b2lkIGZ1bGwgcmVwYWludHMgd2hlbiBzY3JvbGxpbmcKKyAgICAgICAgdmll
d3Mgb3Igc3ViZnJhbWVzIHNpZ25pZmljYW50bHkgaW1wcm92aW5nIHNjcm9sbGluZyBwZXJmb3Jt
YW5jZS4KKworICAgICAgICBJbXByb3ZlIHJlbmRlcmluZyBwZXJmb3JtYW5jZSBieSBjb2FsZXNj
aW5nIGxhcmdlIG51bWJlcnMgb2Ygc21hbGwKKyAgICAgICAgcmVwYWludHMuCisKKyAgICAgICAg
QWxzbyBmaXhlcyBsb25nLXJ1bm5pbmcgaXNzdWVzIHdpdGggc2Nyb2xsYmFyIHBvc2l0aW9uaW5n
IGFuZCBmcmFtZQorICAgICAgICBpbnZhbGlkYXRpb24uCisKKyAgICAgICAgUmVuZGVyaW5nIGlu
IHRoZSBHVEsrIHBvcnQgc2hvdWxkIGJlIG1vcmUgc2ltaWxhciB0byBvdGhlciBwb3J0cyBhZnRl
cgorICAgICAgICB0aGVzZSBjaGFuZ2VzLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpyZXBhaW50
KToKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpzY3JvbGwpOgorICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
RnJhbWVMb2FkZXJDbGllbnQ6OmZvcmNlTGF5b3V0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vidmlldy5jcHA6CisKIDIwMDgtMTAtMTcgIEx1a2UgS2VubmV0aCBDYXNzb24gTGVpZ2h0b24g
IDxsa2NsQGxrY2wubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgUm93ZS4gTGFuZGVk
IGJ5IEphbiBBbG9uem8uCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAzNzY3NikKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDcgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAq
IENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVu
ZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICoKICAqICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFs
IFB1YmxpYwpAQCAtMjU5LDI1ICsyNjAsNTEgQEAgSW50UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRv
d1Jlc2l6ZXJSZWN0KAogICAgIHJldHVybiBJbnRSZWN0KCk7CiB9CiAKLXZvaWQgQ2hyb21lQ2xp
ZW50OjpyZXBhaW50KGNvbnN0IEludFJlY3QmIHdpbmRvd1JlY3QsIGJvb2wsIGJvb2wgaW1tZWRp
YXRlLCBib29sIHJlcGFpbnRDb250ZW50T25seSkKK3ZvaWQgQ2hyb21lQ2xpZW50OjpyZXBhaW50
KGNvbnN0IEludFJlY3QmIHdpbmRvd1JlY3QsIGJvb2wgY29udGVudENoYW5nZWQsIGJvb2wgaW1t
ZWRpYXRlLCBib29sIHJlcGFpbnRDb250ZW50T25seSkKIHsKLSAgICBpZiAoIW1fd2ViVmlldyB8
fCByZXBhaW50Q29udGVudE9ubHkpCisgICAgaWYgKCFtX3dlYlZpZXcpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEdka1JlY3RhbmdsZSByZWN0ID0gd2luZG93UmVjdDsKICAgICBHZGtXaW5kb3cq
IHdpbmRvdyA9IEdUS19XSURHRVQobV93ZWJWaWV3KS0+d2luZG93OwogCiAgICAgaWYgKHdpbmRv
dykgewotICAgICAgICAvLyBObyBkb3VibGUgYnVmZmVyLiAgSnVzdCBhbHdheXMgYXNzdW1lIHdl
IG5lZWQgdG8gaW52YWxpZGF0ZS4KLSAgICAgICAgZ2RrX3dpbmRvd19pbnZhbGlkYXRlX3JlY3Qo
d2luZG93LCAmcmVjdCwgdHJ1ZSk7Ci0gICAgICAgIGlmIChpbW1lZGlhdGUpCi0gICAgICAgICAg
ICBnZGtfd2luZG93X3Byb2Nlc3NfdXBkYXRlcyh3aW5kb3csIHRydWUpOworICAgICAgICBpZiAo
Y29udGVudENoYW5nZWQpCisgICAgICAgICAgICBnZGtfd2luZG93X2ludmFsaWRhdGVfcmVjdCh3
aW5kb3csICZyZWN0LCBGQUxTRSk7CisgICAgICAgIC8vIFdlIGRvbid0IGN1cnJlbnRseSBkbyBp
bW1lZGlhdGUgdXBkYXRlcyBzaW5jZSB0aGV5IGRlbGF5IG90aGVyIFVJIGVsZW1lbnRzLgorICAg
ICAgICAvL2lmIChpbW1lZGlhdGUpCisgICAgICAgIC8vICAgIGdka193aW5kb3dfcHJvY2Vzc191
cGRhdGVzKHdpbmRvdywgRkFMU0UpOwogICAgIH0KIH0KIAotdm9pZCBDaHJvbWVDbGllbnQ6OnNj
cm9sbChjb25zdCBJbnRTaXplJiBkZWx0YSwgY29uc3QgSW50UmVjdCYgc2Nyb2xsVmlld1JlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KQordm9pZCBDaHJvbWVDbGllbnQ6OnNjcm9sbChjb25z
dCBJbnRTaXplJiBkZWx0YSwgY29uc3QgSW50UmVjdCYgcmVjdFRvU2Nyb2xsLCBjb25zdCBJbnRS
ZWN0JiBjbGlwUmVjdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV93ZWJW
aWV3KQorICAgICAgICByZXR1cm47CisKKyAgICBHZGtXaW5kb3cqIHdpbmRvdyA9IEdUS19XSURH
RVQobV93ZWJWaWV3KS0+d2luZG93OworICAgIGlmICghd2luZG93KQorICAgICAgICByZXR1cm47
CisKKyAgICBHZGtSZWN0YW5nbGUgYXJlYSA9IGNsaXBSZWN0OworICAgIEdka1JlY3RhbmdsZSBt
b3ZlUmVjdDsKKworICAgIEdka1JlY3RhbmdsZSBzb3VyY2VSZWN0ID0gYXJlYTsKKyAgICBzb3Vy
Y2VSZWN0LnggLT0gZGVsdGEud2lkdGgoKTsKKyAgICBzb3VyY2VSZWN0LnkgLT0gZGVsdGEuaGVp
Z2h0KCk7CisKKyAgICBHZGtSZWdpb24qIGludmFsaWRSZWdpb24gPSBnZGtfcmVnaW9uX3JlY3Rh
bmdsZSgmYXJlYSk7CisKKyAgICBpZiAoZ2RrX3JlY3RhbmdsZV9pbnRlcnNlY3QoJmFyZWEsICZz
b3VyY2VSZWN0LCAmbW92ZVJlY3QpKSB7CisgICAgICAgIEdka1JlZ2lvbiogbW92ZVJlZ2lvbiA9
IGdka19yZWdpb25fcmVjdGFuZ2xlKCZtb3ZlUmVjdCk7CisgICAgICAgIGdka193aW5kb3dfbW92
ZV9yZWdpb24od2luZG93LCBtb3ZlUmVnaW9uLCBkZWx0YS53aWR0aCgpLCBkZWx0YS5oZWlnaHQo
KSk7CisgICAgICAgIGdka19yZWdpb25fb2Zmc2V0KG1vdmVSZWdpb24sIGRlbHRhLndpZHRoKCks
IGRlbHRhLmhlaWdodCgpKTsKKyAgICAgICAgZ2RrX3JlZ2lvbl9zdWJ0cmFjdChpbnZhbGlkUmVn
aW9uLCBtb3ZlUmVnaW9uKTsKKyAgICAgICAgZ2RrX3JlZ2lvbl9kZXN0cm95KG1vdmVSZWdpb24p
OworICAgIH0KKworICAgIGdka193aW5kb3dfaW52YWxpZGF0ZV9yZWdpb24od2luZG93LCBpbnZh
bGlkUmVnaW9uLCBGQUxTRSk7CisgICAgZ2RrX3JlZ2lvbl9kZXN0cm95KGludmFsaWRSZWdpb24p
OwogfQogCiBJbnRSZWN0IENocm9tZUNsaWVudDo6d2luZG93VG9TY3JlZW4oY29uc3QgSW50UmVj
dCYgcmVjdCkgY29uc3QKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiAzNzY3NikKKysrIFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MzYsNyArNDM2LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudDo6bWFrZVJlcHJlc2VudGF0
aQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpmb3JjZUxheW91dCgpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBjb3JlKG1fZnJhbWUpLT5mb3JjZUxheW91dCh0cnVlKTsKIH0KIAog
dm9pZCBGcmFtZUxvYWRlckNsaWVudDo6Zm9yY2VMYXlvdXRGb3JOb25IVE1MKCkKSW5kZXg6IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCShyZXZpc2lvbiAzNzY3NikKKysrIFdlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw3
IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFy
LmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKKyNpbmNsdWRlIDx3dGYvR093blB0ci5o
PgogCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KIApAQCAtMjc2LDMwICsyNzcsNjUgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF9wcm9wZXJ0eQogICAgIH0KIH0KIAorc3Rh
dGljIGJvb2wgc2hvdWxkQ29hbGVzY2UoR2RrUmVjdGFuZ2xlIHJlY3QsIEdka1JlY3RhbmdsZSog
cmVjdHMsIGludCBjb3VudCkKK3sKKyAgICBjb25zdCBpbnQgY1JlY3RUaHJlc2hvbGQgPSAxMDsK
KyAgICBjb25zdCBmbG9hdCBjV2FzdGVkU3BhY2VUaHJlc2hvbGQgPSAwLjc1ZjsKKyAgICBib29s
IHVzZVVuaW9uZWRSZWN0ID0gKGNvdW50IDw9IDEpIHx8IChjb3VudCA+IGNSZWN0VGhyZXNob2xk
KTsKKyAgICBpZiAoIXVzZVVuaW9uZWRSZWN0KSB7CisgICAgICAgIC8vIEF0dGVtcHQgdG8gZ3Vl
c3Mgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIHVzZSB0aGUgdW5pb25lZCByZWN0IG9yIHRoZSBp
bmRpdmlkdWFsIHJlY3RzLgorICAgICAgICAvLyBXZSBkbyB0aGlzIGJ5IGNvbXB1dGluZyB0aGUg
cGVyY2VudGFnZSBvZiAid2FzdGVkIHNwYWNlIiBpbiB0aGUgdW5pb24uICBJZiB0aGF0IHdhc3Rl
ZCBzcGFjZQorICAgICAgICAvLyBpcyB0b28gbGFyZ2UsIHRoZW4gd2Ugd2lsbCBkbyBpbmRpdmlk
dWFsIHJlY3QgcGFpbnRpbmcgaW5zdGVhZC4KKyAgICAgICAgZmxvYXQgdW5pb25QaXhlbHMgPSAo
cmVjdC53aWR0aCAqIHJlY3QuaGVpZ2h0KTsKKyAgICAgICAgZmxvYXQgc2luZ2xlUGl4ZWxzID0g
MDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICAgICAg
c2luZ2xlUGl4ZWxzICs9IHJlY3RzW2ldLndpZHRoICogcmVjdHNbaV0uaGVpZ2h0OworICAgICAg
ICBmbG9hdCB3YXN0ZWRTcGFjZSA9IDEgLSAoc2luZ2xlUGl4ZWxzIC8gdW5pb25QaXhlbHMpOwor
ICAgICAgICBpZiAod2FzdGVkU3BhY2UgPD0gY1dhc3RlZFNwYWNlVGhyZXNob2xkKQorICAgICAg
ICAgICAgdXNlVW5pb25lZFJlY3QgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gdXNlVW5pb25l
ZFJlY3Q7Cit9CisKIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZXhwb3NlX2V2ZW50
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEV4cG9zZSogZXZlbnQpCiB7CiAgICAgV2ViS2l0
V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3aWRnZXQpOwogICAgIFdlYktpdFdl
YlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKIAogICAgIEZyYW1lKiBmcmFtZSA9
IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOwotICAgIEdka1JlY3RhbmdsZSBjbGlwOwotICAg
IGdka19yZWdpb25fZ2V0X2NsaXBib3goZXZlbnQtPnJlZ2lvbiwgJmNsaXApOwotICAgIGNhaXJv
X3QqIGNyID0gZ2RrX2NhaXJvX2NyZWF0ZShldmVudC0+d2luZG93KTsKLSAgICBHcmFwaGljc0Nv
bnRleHQgY3R4KGNyKTsKLSAgICBjdHguc2V0R2RrRXhwb3NlRXZlbnQoZXZlbnQpOwogICAgIGlm
IChmcmFtZS0+Y29udGVudFJlbmRlcmVyKCkgJiYgZnJhbWUtPnZpZXcoKSkgewogICAgICAgICBm
cmFtZS0+dmlldygpLT5sYXlvdXRJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAgICAgIGlmIChw
cml2LT50cmFuc3BhcmVudCkgewotICAgICAgICAgICAgY2Fpcm9fc2F2ZShjcik7Ci0gICAgICAg
ICAgICBjYWlyb19zZXRfb3BlcmF0b3IoY3IsIENBSVJPX09QRVJBVE9SX0NMRUFSKTsKLSAgICAg
ICAgICAgIGNhaXJvX3BhaW50KGNyKTsKLSAgICAgICAgICAgIGNhaXJvX3Jlc3RvcmUoY3IpOwor
ICAgICAgICBjYWlyb190KiBjciA9IGdka19jYWlyb19jcmVhdGUoZXZlbnQtPndpbmRvdyk7Cisg
ICAgICAgIEdyYXBoaWNzQ29udGV4dCBjdHgoY3IpOworICAgICAgICBjYWlyb19kZXN0cm95KGNy
KTsKKyAgICAgICAgY3R4LnNldEdka0V4cG9zZUV2ZW50KGV2ZW50KTsKKworICAgICAgICBHT3du
UHRyPEdka1JlY3RhbmdsZT4gcmVjdHM7CisgICAgICAgIGludCByZWN0Q291bnQ7CisgICAgICAg
IGdka19yZWdpb25fZ2V0X3JlY3RhbmdsZXMoZXZlbnQtPnJlZ2lvbiwgJnJlY3RzLm91dFB0cigp
LCAmcmVjdENvdW50KTsKKworICAgICAgICAvLyBBdm9pZCByZWN1cnNpbmcgaW50byB0aGUgcmVu
ZGVyIHRyZWUgZXhjZXNzaXZlbHkKKyAgICAgICAgYm9vbCBjb2FsZXNjZSA9IHNob3VsZENvYWxl
c2NlKGV2ZW50LT5hcmVhLCByZWN0cy5nZXQoKSwgcmVjdENvdW50KTsKKworICAgICAgICBpZiAo
Y29hbGVzY2UpIHsKKyAgICAgICAgICAgIEludFJlY3QgcmVjdCA9IGV2ZW50LT5hcmVhOworICAg
ICAgICAgICAgY3R4LmNsaXAocmVjdCk7CisgICAgICAgICAgICBpZiAocHJpdi0+dHJhbnNwYXJl
bnQpCisgICAgICAgICAgICAgICAgY3R4LmNsZWFyUmVjdChyZWN0KTsKKyAgICAgICAgICAgIGZy
YW1lLT52aWV3KCktPnBhaW50KCZjdHgsIHJlY3QpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkrKykgeworICAgICAgICAgICAg
ICAgIEludFJlY3QgcmVjdCA9IHJlY3RzLmdldCgpW2ldOworICAgICAgICAgICAgICAgIGN0eC5z
YXZlKCk7CisgICAgICAgICAgICAgICAgY3R4LmNsaXAocmVjdCk7CisgICAgICAgICAgICAgICAg
aWYgKHByaXYtPnRyYW5zcGFyZW50KQorICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0
KHJlY3QpOworICAgICAgICAgICAgICAgIGZyYW1lLT52aWV3KCktPnBhaW50KCZjdHgsIHJlY3Qp
OworICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CisgICAgICAgICAgICB9CiAgICAgICAg
IH0KLQotICAgICAgICBmcmFtZS0+dmlldygpLT5wYWludCgmY3R4LCBjbGlwKTsKICAgICB9Ci0g
ICAgY2Fpcm9fZGVzdHJveShjcik7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9Cg==
</data>
<flag name="review"
          id="11143"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>