<?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>127681</bug_id>
          
          <creation_ts>2014-01-27 05:33:04 -0800</creation_ts>
          <short_desc>Remove repaint throttling</short_desc>
          <delta_ts>2014-01-27 16:13:36 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>127697</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972397</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-27 05:33:04 -0800</bug_when>
    <thetext>Nowadays we throttle layer flushes. This code is unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972401</commentid>
    <comment_count>1</comment_count>
      <attachid>222321</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-27 05:42:59 -0800</bug_when>
    <thetext>Created attachment 222321
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972402</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-27 05:45:12 -0800</bug_when>
    <thetext>Attachment 222321 did not pass style-queue:


ERROR: Source/WebCore/dom/Element.cpp:1221:  Missing space after ,  [whitespace/comma] [3]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972405</commentid>
    <comment_count>3</comment_count>
      <attachid>222322</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-27 05:58:47 -0800</bug_when>
    <thetext>Created attachment 222322
another</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972414</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2014-01-27 07:07:25 -0800</bug_when>
    <thetext>https://trac.webkit.org/r162837</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972649</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-01-27 16:13:36 -0800</bug_when>
    <thetext>This patch appears to have introduced perf. regressions in html5-full-render and 3% regression in DoYouEvenBench: https://bugs.webkit.org/show_bug.cgi?id=127722</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222321</attachid>
            <date>2014-01-27 05:42:59 -0800</date>
            <delta_ts>2014-01-27 05:58:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>remove-repaint-throttling.patch</filename>
            <type>text/plain</type>
            <size>22280</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTAxLTI3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcmVwYWludCB0aHJv
dHRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
b3dhZGF5cyB3ZSB0aHJvdHRsZSBsYXllciBmbHVzaGVzLiBUaGlzIGNvZGUgaXMgdW5uZWNlc3Nh
cnkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNl
cnREaWN0YXRlZFRleHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hEcmFnRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRj
aE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0Zy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpkaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZv
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5b3V0
QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorCiAyMDE0LTAxLTI3ICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IERpc2FibGUgYWNjZXNzaWJpbGl0
eSBhZnRlciBldmVyeSB0ZXN0IHJ1bgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDE2MjgwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgyLDcgKzEyODIsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNvbXBv
c2l0aW5nCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNf
MTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJl
cGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9yRQogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnNFdgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVT
M19mTlNfMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNjI4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzM5LDggKzE3MzksNiBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNT
dHlsZShTdHlsZTo6Q2hhbmdlCiAgICAgICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyIGRp
c2FibGVyKCp0aGlzKTsKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25T
Y29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKIAotICAgICAgICBmcmFtZVZpZXcu
YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0KICAgICAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVj
YWxjU2hvdWxkRm9yY2UpCiAgICAgICAgICAgICBjaGFuZ2UgPSBTdHlsZTo6Rm9yY2U7CiAKQEAg
LTE3NjQsOCArMTc2Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFu
Z2UKICAgICAgICAgLy8gUHNldWRvIGVsZW1lbnQgcmVtb3ZhbCBhbmQgc2ltaWxhciBtYXkgb25s
eSB3b3JrIHdpdGggdGhlc2UgZmxhZ3Mgc3RpbGwgc2V0LiBSZXNldCB0aGVtIGFmdGVyIHRoZSBz
dHlsZSByZWNhbGMuCiAgICAgICAgIGlmIChtX3N0eWxlUmVzb2x2ZXIpCiAgICAgICAgICAgICBt
X3N0eWxlU2hlZXRDb2xsZWN0aW9uLnJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7Ci0KLSAgICAgICAg
ZnJhbWVWaWV3LmVuZERlZmVycmVkUmVwYWludHMoKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSB3
YW50ZWQgdG8gY2FsbCBpbXBsaWNpdENsb3NlKCkgZHVyaW5nIHJlY2FsY1N0eWxlLCBkbyBzbyBu
b3cgdGhhdCB3ZSdyZSBmaW5pc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlz
aW9uIDE2MjgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIxOCw2ICsxMjE4LDcgQEAgdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNo
YW5nZWQoY29ucwogICAgIGlmIChoYXNSYXJlRGF0YSgpKQogICAgICAgICBlbGVtZW50UmFyZURh
dGEoKS0+Y2xlYXJDbGFzc0xpc3RWYWx1ZUZvclF1aXJrc01vZGUoKTsKIAorICAgIGZwcmludGYo
c3RkZXJyLCAiY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkIHNob3VsZEludmFsaWRhdGVTdHlsZT0lZFxu
IixzaG91bGRJbnZhbGlkYXRlU3R5bGUpOwogICAgIGlmIChzaG91bGRJbnZhbGlkYXRlU3R5bGUp
CiAgICAgICAgIHNldE5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkocmV2aXNp
b24gMTYyODA3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIGJvb2wgQWx0ZXJu
YXRpdmVUZXh0Q29udHJvbGxlcjo6aW5zZXJ0RGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKQotICAgICAgICB2aWV3LT5y
ZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CisgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZs
dXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAogICAgIFJlZlB0cjxU
ZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5k
b2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAg
ICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE2MjgwNykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw5
ICs3OTgsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAgICAgUmVmPEZy
YW1lPiBwcm90ZWN0KG1fZnJhbWUpOwogICAgIG1fc2hvdWxkQ2FsbENoZWNrQ29tcGxldGVkID0g
ZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZS52aWV3KCkpCi0gICAgICAgIG1fZnJhbWUudmlldygp
LT5oYW5kbGVMb2FkQ29tcGxldGVkKCk7Ci0KICAgICAvLyBIYXZlIHdlIGNvbXBsZXRlZCBiZWZv
cmU/CiAgICAgaWYgKG1faXNDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQ1LDkgKzg0
Miw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkKICAgICBjb21wbGV0ZWQo
KTsKICAgICBpZiAobV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7
Ci0KLSAgICBpZiAobV9mcmFtZS52aWV3KCkpCi0gICAgICAgIG1fZnJhbWUudmlldygpLT5oYW5k
bGVMb2FkQ29tcGxldGVkKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrVGltZXJGaXJl
ZChUaW1lcjxGcmFtZUxvYWRlcj4mKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhh
bmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAkocmV2aXNpb24gMTYyODA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE2LDcgKzIwMTYsNyBAQCBib29sIEV2ZW50SGFu
ZGxlcjo6ZGlzcGF0Y2hEcmFnRXZlbnQoY29uCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICB2aWV3LT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CisgICAg
dmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlv
bigpOwogICAgIFJlZlB0cjxNb3VzZUV2ZW50PiBtZSA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVu
dFR5cGUsCiAgICAgICAgIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLCBtX2ZyYW1lLmRv
Y3VtZW50KCktPmRlZmF1bHRWaWV3KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9u
KCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCks
IGV2ZW50LnBvc2l0aW9uKCkueSgpLApAQCAtMjM4OCw3ICsyMzg4LDcgQEAgdm9pZCBFdmVudEhh
bmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZQogYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNo
TW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0Tm9k
ZSwgYm9vbCAvKmNhbmNlbGFibGUqLywgaW50IGNsaWNrQ291bnQsIGNvbnN0IFBsYXRmb3JtTW91
c2VFdmVudCYgbW91c2VFdmVudCwgYm9vbCBzZXRVbmRlcikKIHsKICAgICBpZiAoRnJhbWVWaWV3
KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCi0gICAgICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBh
aW50RGVsYXkoKTsKKyAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVt
cG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCiAgICAgdXBkYXRlTW91c2VFdmVudFRhcmdldE5v
ZGUodGFyZ2V0Tm9kZSwgbW91c2VFdmVudCwgc2V0VW5kZXIpOwogCkBAIC0yOTE0LDcgKzI5MTQs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihtX2ZyYW1lKTsKIAog
ICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKLSAgICAgICAgdmlldy0+
cmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOworICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJG
bHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKICAgICAvLyBGSVhN
RSAoYnVnIDY4MTg1KTogdGhpcyBjYWxsIHNob3VsZCBiZSBtYWRlIGF0IGFub3RoZXIgYWJzdHJh
Y3Rpb24gbGF5ZXIKICAgICBtX2ZyYW1lLmxvYWRlcigpLnJlc2V0TXVsdGlwbGVGb3JtU3VibWlz
c2lvblByb3RlY3Rpb24oKTsKQEAgLTMzMzYsNyArMzMzNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpoYW5kbGVUZXh0SW5wdXRFdmVudCgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVz
ZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOworICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVz
aFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKICAgICBSZWZQdHI8VGV4
dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9t
V2luZG93KCksIHRleHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVu
dCh1bmRlcmx5aW5nRXZlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2
aXNpb24gMTYyODA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTgsMjggKzExOCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAKIGRvdWJsZSBGcmFtZVZpZXc6OnNDdXJyZW50UGFpbnRUaW1lU3RhbXAgPSAwLjA7CiAKLQot
Ly8gUkVQQUlOVF9USFJPVFRMSU5HIG5vdyBjaG9vc2VzIGRlZmF1bHQgdmFsdWVzIGZvciB0aHJv
dHRsaW5nIHBhcmFtZXRlcnMuCi0vLyBTaG91bGQgYmUgcmVtb3ZlZCB3aGVuIGFwcGxpY2F0aW9u
cyBzdGFydCB1c2luZyBydW50aW1lIGNvbmZpZ3VyYXRpb24uCi0jaWYgRU5BQkxFKFJFUEFJTlRf
VEhST1RUTElORykKLS8vIE5vcm1hbCBkZWxheQotZG91YmxlIEZyYW1lVmlldzo6c19ub3JtYWxE
ZWZlcnJlZFJlcGFpbnREZWxheSA9IDAuMDE2OwotLy8gTmVnYXRpdmUgdmFsdWUgd291bGQgbWVh
biB0aGF0IGZpcnN0IGZldyByZXBhaW50cyBoYXBwZW4gd2l0aG91dCBhIGRlbGF5Ci1kb3VibGUg
RnJhbWVWaWV3OjpzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcgPSAw
OwotLy8gVGhlIGRlbGF5IGdyb3dzIG9uIGVhY2ggcmVwYWludCB0byB0aGlzIG1heGltdW0gdmFs
dWUKLWRvdWJsZSBGcmFtZVZpZXc6OnNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2Fk
aW5nID0gMi41OwotLy8gT24gZWFjaCByZXBhaW50IHRoZSBkZWxheSBpbmNyZXNlcyBieSB0aGlz
IGFtb3VudAotZG91YmxlIEZyYW1lVmlldzo6c19kZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVu
dER1cmluZ0xvYWRpbmcgPSAwLjU7Ci0jZWxzZQotLy8gRklYTUU6IFJlcGFpbnQgdGhyb3R0bGlu
ZyBjb3VsZCBiZSBnb29kIHRvIGhhdmUgb24gYWxsIHBsYXRmb3JtLgotLy8gVGhlIGJhbGFuY2Ug
YmV0d2VlbiBDUFUgdXNlIGFuZCByZXBhaW50IGZyZXF1ZW5jeSB3aWxsIG5lZWQgc29tZSB0dW5p
bmcgZm9yIGRlc2t0b3AuCi0vLyBNb3JlIGhvb2tzIG1heSBiZSBuZWVkZWQgdG8gcmVzZXQgdGhl
IGRlbGF5IG9uIHRoaW5ncyBsaWtlIEdJRiBhbmQgQ1NTIGFuaW1hdGlvbnMuCi1kb3VibGUgRnJh
bWVWaWV3OjpzX25vcm1hbERlZmVycmVkUmVwYWludERlbGF5ID0gMDsKLWRvdWJsZSBGcmFtZVZp
ZXc6OnNfaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IDA7Ci1kb3Vi
bGUgRnJhbWVWaWV3OjpzX21heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IDA7
Ci1kb3VibGUgRnJhbWVWaWV3OjpzX2RlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5n
TG9hZGluZyA9IDA7Ci0jZW5kaWYKLQogLy8gVGhlIG1heGltdW0gbnVtYmVyIG9mIHVwZGF0ZUVt
YmVkZGVkT2JqZWN0cyBpdGVyYXRpb25zIHRoYXQgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJldHVy
bmluZy4KIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhVcGRhdGVFbWJlZGRlZE9iamVjdHNJdGVy
YXRpb25zID0gMjsKIApAQCAtMTk4LDcgKzE3Niw2IEBAIEZyYW1lVmlldzo6RnJhbWVWaWV3KEZy
YW1lJiBmcmFtZSkKICAgICAsIG1fd2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpCiAgICAgLCBtX2lu
UHJvZ3JhbW1hdGljU2Nyb2xsKGZhbHNlKQogICAgICwgbV9zYWZlVG9Qcm9wYWdhdGVTY3JvbGxU
b1BhcmVudCh0cnVlKQotICAgICwgbV9kZWZlcnJlZFJlcGFpbnRUaW1lcih0aGlzLCAmRnJhbWVW
aWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZpcmVkKQogICAgICwgbV9pc1RyYWNraW5nUmVwYWlu
dHMoZmFsc2UpCiAgICAgLCBtX3Nob3VsZFVwZGF0ZVdoaWxlT2Zmc2NyZWVuKHRydWUpCiAgICAg
LCBtX2V4cG9zZWRSZWN0KEZsb2F0UmVjdDo6aW5maW5pdGVSZWN0KCkpCkBAIC0yODUsMTEgKzI2
Miw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXNldCgpCiAgICAgbV9zYWZlVG9Qcm9wYWdhdGVTY3Jv
bGxUb1BhcmVudCA9IHRydWU7CiAgICAgbV9sYXN0Vmlld3BvcnRTaXplID0gSW50U2l6ZSgpOwog
ICAgIG1fbGFzdFpvb21GYWN0b3IgPSAxLjBmOwotICAgIG1fZGVmZXJyaW5nUmVwYWludHMgPSAw
OwotICAgIG1fcmVwYWludENvdW50ID0gMDsKLSAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwot
ICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgPSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxh
eUR1cmluZ0xvYWRpbmc7Ci0gICAgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdG9wKCk7CiAgICAg
bV9pc1RyYWNraW5nUmVwYWludHMgPSBmYWxzZTsKICAgICBtX3RyYWNrZWRSZXBhaW50UmVjdHMu
Y2xlYXIoKTsKICAgICBtX2xhc3RQYWludFRpbWUgPSAwOwpAQCAtOTAyLDEwICs4NzQsNiBAQCBi
b29sIEZyYW1lVmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yCiAgICAgaWYgKG5lZWRzTGF5
b3V0KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIElmIHdlIHN5bmMgY29tcG9z
aXRpbmcgbGF5ZXJzIGFuZCBhbGxvdyB0aGUgcmVwYWludCB0byBiZSBkZWZlcnJlZCwgdGhlcmUg
aXMgdGltZSBmb3IgYQotICAgIC8vIHZpc2libGUgZmxhc2ggdG8gb2NjdXIuIEluc3RlYWQsIHN0
b3AgdGhlIGRlZmVycmVkIHJlcGFpbnQgdGltZXIgYW5kIHJlcGFpbnQgaW1tZWRpYXRlbHkuCi0g
ICAgZmx1c2hEZWZlcnJlZFJlcGFpbnRzKCk7Ci0KICNpZiBQTEFURk9STShJT1MpCiAgICAgaWYg
KFRpbGVDYWNoZSogdGlsZUNhY2hlID0gdGhpcy0+dGlsZUNhY2hlKCkpCiAgICAgICAgIHRpbGVD
YWNoZS0+ZG9QZW5kaW5nUmVwYWludHMoKTsKQEAgLTEzMTIsNyArMTI4MCw2IEBAIHZvaWQgRnJh
bWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKICAgICAgICAgQVNTRVJUKG1fbGF5b3V0
UGhhc2UgPT0gSW5QcmVMYXlvdXQpOwogICAgICAgICBtX2xheW91dFBoYXNlID0gSW5MYXlvdXQ7
CiAKLSAgICAgICAgYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7CiAgICAgICAgIGZvcmNlTGF5b3V0
UGFyZW50Vmlld0lmTmVlZGVkKCk7CiAKICAgICAgICAgQVNTRVJUKG1fbGF5b3V0UGhhc2UgPT0g
SW5MYXlvdXQpOwpAQCAtMTMzMiw3ICsxMjk5LDYgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChi
b29sIGFsbG93U3VidHJlZQogICAgICAgICBpZiAoZG9jdW1lbnQudGV4dEF1dG9zaXplcigpLT5w
cm9jZXNzU3VidHJlZShyb290KSAmJiByb290LT5uZWVkc0xheW91dCgpKQogICAgICAgICAgICAg
cm9vdC0+bGF5b3V0KCk7CiAjZW5kaWYKLSAgICAgICAgZW5kRGVmZXJyZWRSZXBhaW50cygpOwog
CiAgICAgICAgIEFTU0VSVChtX2xheW91dFBoYXNlID09IEluTGF5b3V0KTsKIApAQCAtMTM1Niwx
NCArMTMyMiwxMSBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAg
ICAgbV9uZWVkc0Z1bGxSZXBhaW50ID0gbmVlZGVkRnVsbFJlcGFpbnQ7CiAKICAgICAvLyBOb3cg
dXBkYXRlIHRoZSBwb3NpdGlvbnMgb2YgYWxsIGxheWVycy4KLSAgICBiZWdpbkRlZmVycmVkUmVw
YWludHMoKTsKICAgICBpZiAobV9uZWVkc0Z1bGxSZXBhaW50KQogICAgICAgICByb290LT52aWV3
KCkucmVwYWludFJvb3RDb250ZW50cygpOwogCiAgICAgbGF5ZXItPnVwZGF0ZUxheWVyUG9zaXRp
b25zQWZ0ZXJMYXlvdXQocmVuZGVyVmlldygpLT5sYXllcigpLCB1cGRhdGVMYXllclBvc2l0aW9u
RmxhZ3MobGF5ZXIsIHN1YnRyZWUsIG1fbmVlZHNGdWxsUmVwYWludCkpOwogCi0gICAgZW5kRGVm
ZXJyZWRSZXBhaW50cygpOwotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IHVwZGF0ZUNvbXBvc2l0aW5nTGF5ZXJzQWZ0ZXJMYXlvdXQoKTsKICNlbmRpZgpAQCAtMjE1OSwz
MiArMjEyMiw2IEBAIHZvaWQgRnJhbWVWaWV3OjpyZXBhaW50Q29udGVudFJlY3RhbmdsZSgKIAog
ICAgIGFkZFRyYWNrZWRSZXBhaW50UmVjdChyKTsKIAotICAgIGRvdWJsZSBkZWxheSA9IG1fZGVm
ZXJyaW5nUmVwYWludHMgPyAwIDogYWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpOwotICAg
IGlmICgobV9kZWZlcnJpbmdSZXBhaW50cyB8fCBtX2RlZmVycmVkUmVwYWludFRpbWVyLmlzQWN0
aXZlKCkgfHwgZGVsYXkpICYmICFpbW1lZGlhdGUpIHsKLSAgICAgICAgSW50UmVjdCBwYWludFJl
Y3QgPSByOwotICAgICAgICBpZiAoY2xpcHNSZXBhaW50cygpICYmICFwYWludHNFbnRpcmVDb250
ZW50cygpKQotICAgICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdCh2aXNpYmxlQ29udGVudFJl
Y3QoTGVnYWN5SU9TRG9jdW1lbnRWaXNpYmxlUmVjdCkpOwotICAgICAgICBpZiAocGFpbnRSZWN0
LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKG1fcmVwYWludENv
dW50ID09IGNSZXBhaW50UmVjdFVuaW9uVGhyZXNob2xkKSB7Ci0gICAgICAgICAgICBJbnRSZWN0
IHVuaW9uZWRSZWN0OwotICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNSZXBh
aW50UmVjdFVuaW9uVGhyZXNob2xkOyArK2kpCi0gICAgICAgICAgICAgICAgdW5pb25lZFJlY3Qu
dW5pdGUocGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlcGFpbnRSZWN0c1tpXSkpOwotICAgICAgICAg
ICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKLSAgICAgICAgICAgIG1fcmVwYWludFJlY3RzLmFw
cGVuZCh1bmlvbmVkUmVjdCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1fcmVwYWludENvdW50
IDwgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQpCi0gICAgICAgICAgICBtX3JlcGFpbnRSZWN0
cy5hcHBlbmQocGFpbnRSZWN0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9yZXBhaW50
UmVjdHNbMF0udW5pdGUocGFpbnRSZWN0KTsKLSAgICAgICAgbV9yZXBhaW50Q291bnQrKzsKLQot
ICAgICAgICBpZiAoIW1fZGVmZXJyaW5nUmVwYWludHMpCi0gICAgICAgICAgICBzdGFydERlZmVy
cmVkUmVwYWludFRpbWVyKGRlbGF5KTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAog
ICAgIGlmICghc2hvdWxkVXBkYXRlKGltbWVkaWF0ZSkpCiAgICAgICAgIHJldHVybjsKIApAQCAt
MjI3NSwxNDMgKzIyMTIsMTQgQEAgdm9pZCBGcmFtZVZpZXc6OmFkZGVkT3JSZW1vdmVkU2Nyb2xs
YmFyKAogI2VuZGlmCiB9CiAKLXZvaWQgRnJhbWVWaWV3OjpiZWdpbkRlZmVycmVkUmVwYWludHMo
KQotewotICAgIGlmICghZnJhbWUoKS5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIGZyYW1lKCku
bWFpbkZyYW1lKCkudmlldygpLT5iZWdpbkRlZmVycmVkUmVwYWludHMoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG1fZGVmZXJyaW5nUmVwYWludHMrKzsKLX0KLQotdm9pZCBGcmFt
ZVZpZXc6OmVuZERlZmVycmVkUmVwYWludHMoKQotewotICAgIGlmICghZnJhbWUoKS5pc01haW5G
cmFtZSgpKSB7Ci0gICAgICAgIGZyYW1lKCkubWFpbkZyYW1lKCkudmlldygpLT5lbmREZWZlcnJl
ZFJlcGFpbnRzKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBU1NFUlQobV9kZWZl
cnJpbmdSZXBhaW50cyA+IDApOwotCi0gICAgaWYgKC0tbV9kZWZlcnJpbmdSZXBhaW50cykKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3RpdmUo
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGRvdWJsZSBkZWxheSA9IGFkanVzdGVkRGVm
ZXJyZWRSZXBhaW50RGVsYXkoKSkgewotICAgICAgICBzdGFydERlZmVycmVkUmVwYWludFRpbWVy
KGRlbGF5KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBkb0RlZmVycmVkUmVw
YWludHMoKTsKLX0KLQotdm9pZCBGcmFtZVZpZXc6OnN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIo
ZG91YmxlIGRlbGF5KQotewotICAgIGlmIChtX2RlZmVycmVkUmVwYWludFRpbWVyLmlzQWN0aXZl
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZGVmZXJyZWRSZXBhaW50VGltZXIuc3RhcnRP
bmVTaG90KGRlbGF5KTsKLX0KLQotdm9pZCBGcmFtZVZpZXc6OmhhbmRsZUxvYWRDb21wbGV0ZWQo
KQotewotICAgIC8vIE9uY2UgbG9hZGluZyBoYXMgY29tcGxldGVkLCBhbGxvdyBhdXRvU2l6ZSBv
bmUgbGFzdCBvcHBvcnR1bml0eSB0bwotICAgIC8vIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgZnJh
bWUuCi0gICAgYXV0b1NpemVJZkVuYWJsZWQoKTsKLSAgICBpZiAoc2hvdWxkVXNlTG9hZFRpbWVE
ZWZlcnJlZFJlcGFpbnREZWxheSgpKQotICAgICAgICByZXR1cm47Ci0gICAgbV9kZWZlcnJlZFJl
cGFpbnREZWxheSA9IHNfbm9ybWFsRGVmZXJyZWRSZXBhaW50RGVsYXk7Ci0gICAgZmx1c2hEZWZl
cnJlZFJlcGFpbnRzKCk7Ci19Ci0KLXZvaWQgRnJhbWVWaWV3OjpmbHVzaERlZmVycmVkUmVwYWlu
dHMoKQotewotICAgIGlmICghbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICByZXR1cm47Ci0gICAgbV9kZWZlcnJlZFJlcGFpbnRUaW1lci5zdG9wKCk7Ci0gICAgZG9E
ZWZlcnJlZFJlcGFpbnRzKCk7Ci19Ci0KLXZvaWQgRnJhbWVWaWV3Ojpkb0RlZmVycmVkUmVwYWlu
dHMoKQotewotICAgIEFTU0VSVCghbV9kZWZlcnJpbmdSZXBhaW50cyk7Ci0gICAgaWYgKCFzaG91
bGRVcGRhdGUoKSkgewotICAgICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwotICAgICAgICBt
X3JlcGFpbnRDb3VudCA9IDA7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgdW5zaWduZWQg
c2l6ZSA9IG1fcmVwYWludFJlY3RzLnNpemUoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgaSsrKSB7Ci0jaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi0gICAgICAgIGlm
IChmcmFtZSgpLnRpbGVkQmFja2luZ1N0b3JlKCkpIHsKLSAgICAgICAgICAgIGZyYW1lKCkudGls
ZWRCYWNraW5nU3RvcmUoKS0+aW52YWxpZGF0ZShwaXhlbFNuYXBwZWRJbnRSZWN0KG1fcmVwYWlu
dFJlY3RzW2ldKSk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotI2VuZGlmCi0g
ICAgICAgIFNjcm9sbFZpZXc6OnJlcGFpbnRDb250ZW50UmVjdGFuZ2xlKHBpeGVsU25hcHBlZElu
dFJlY3QobV9yZXBhaW50UmVjdHNbaV0pLCBmYWxzZSk7Ci0gICAgfQotICAgIG1fcmVwYWludFJl
Y3RzLmNsZWFyKCk7Ci0gICAgbV9yZXBhaW50Q291bnQgPSAwOwotICAgIAotICAgIHVwZGF0ZURl
ZmVycmVkUmVwYWludERlbGF5QWZ0ZXJSZXBhaW50KCk7Ci19Ci0KLWJvb2wgRnJhbWVWaWV3Ojpz
aG91bGRVc2VMb2FkVGltZURlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3QKLXsKLSAgICAvLyBE
b24ndCBkZWZlciBhZnRlciB0aGUgaW5pdGlhbCBsb2FkIG9mIHRoZSBwYWdlIGhhcyBiZWVuIGNv
bXBsZXRlZC4KLSAgICBpZiAoZnJhbWUoKS50cmVlKCkudG9wKCkubG9hZGVyKCkuaXNDb21wbGV0
ZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJh
bWUoKS5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICBpZiAoZG9jdW1lbnQtPnBhcnNpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgaWYgKGRvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi12b2lkIEZyYW1l
Vmlldzo6dXBkYXRlRGVmZXJyZWRSZXBhaW50RGVsYXlBZnRlclJlcGFpbnQoKQotewotICAgIGlm
ICghc2hvdWxkVXNlTG9hZFRpbWVEZWZlcnJlZFJlcGFpbnREZWxheSgpKSB7Ci0gICAgICAgIG1f
ZGVmZXJyZWRSZXBhaW50RGVsYXkgPSBzX25vcm1hbERlZmVycmVkUmVwYWludERlbGF5OwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotICAgIGRvdWJsZSBpbmNyZW1lbnRlZFJlcGFpbnREZWxheSA9
IG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgKyBzX2RlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50
RHVyaW5nTG9hZGluZzsKLSAgICBtX2RlZmVycmVkUmVwYWludERlbGF5ID0gc3RkOjptaW4oaW5j
cmVtZW50ZWRSZXBhaW50RGVsYXksIHNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2Fk
aW5nKTsKLX0KLQotdm9pZCBGcmFtZVZpZXc6OnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKQor
dm9pZCBGcmFtZVZpZXc6OmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9y
SW50ZXJhY3Rpb24oKQogewotICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkgPSAwOwotICAgIGlm
IChtX2RlZmVycmVkUmVwYWludFRpbWVyLmlzQWN0aXZlKCkpIHsKLSAgICAgICAgbV9kZWZlcnJl
ZFJlcGFpbnRUaW1lci5zdG9wKCk7Ci0gICAgICAgIGlmICghbV9kZWZlcnJpbmdSZXBhaW50cykK
LSAgICAgICAgICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOwotICAgIH0KICNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSByZW5kZXJWaWV3
KCkpCiAgICAgICAgIHZpZXctPmNvbXBvc2l0b3IoKS5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxp
bmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAjZW5kaWYKIH0KIAotZG91YmxlIEZyYW1l
Vmlldzo6YWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0Ci17Ci0gICAgQVNTRVJU
KCFtX2RlZmVycmluZ1JlcGFpbnRzKTsKLSAgICBpZiAoIW1fZGVmZXJyZWRSZXBhaW50RGVsYXkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIGRvdWJsZSB0aW1lU2luY2VMYXN0UGFpbnQgPSBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSAtIG1fbGFzdFBhaW50VGltZTsKLSAgICByZXR1cm4g
c3RkOjptYXg8ZG91YmxlPigwLCBtX2RlZmVycmVkUmVwYWludERlbGF5IC0gdGltZVNpbmNlTGFz
dFBhaW50KTsKLX0KLSAgICAKLXZvaWQgRnJhbWVWaWV3OjpkZWZlcnJlZFJlcGFpbnRUaW1lckZp
cmVkKFRpbWVyPEZyYW1lVmlldz4mKQotewotICAgIGRvRGVmZXJyZWRSZXBhaW50cygpOwotfQot
CiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlTGF5ZXJGbHVzaFRocm90dGxpbmdJbkFsbEZyYW1lcygp
CiB7CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQpAQCAtMzgyMiwxMCArMzYzMCw2
IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmUKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgY2hpbGRWaWV3cy5zaXplKCk7ICsraSkKICAgICAgICAgY2hpbGRW
aWV3c1tpXS0+dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpOwogCi0gICAg
Ly8gdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSBpcyBjYWxsZWQgd2hlbiB3
ZSBuZWVkIHRvIG1ha2Ugc3VyZSBzdHlsZSBhbmQgbGF5b3V0IGFyZSB1cC10by1kYXRlIGJlZm9y
ZQotICAgIC8vIHBhaW50aW5nLCBzbyB3ZSBuZWVkIHRvIGZsdXNoIG91dCBhbnkgZGVmZXJyZWQg
cmVwYWludHMgdG9vLgotICAgIGZsdXNoRGVmZXJyZWRSZXBhaW50cygpOwotCiAgICAgLy8gV2hl
biBmcmFtZSBmbGF0dGVuaW5nIGlzIG9uLCBjaGlsZCBmcmFtZSBjYW4gbWFyayBwYXJlbnQgZnJh
bWUgZGlydHkuIEluIHN1Y2ggY2FzZSwgY2hpbGQgZnJhbWUKICAgICAvLyBuZWVkcyB0byBjYWxs
IGxheW91dCBvbiBwYXJlbnQgZnJhbWUgcmVjdXJzaXZlbHkuCiAgICAgLy8gVGhpcyBhc3NlcnQg
ZW5zdXJlcyB0aGF0IHBhcmVudCBmcmFtZXMgYXJlIGNsZWFuLCB3aGVuIGNoaWxkIGZyYW1lcyBm
aW5pc2hlZCB1cGRhdGluZyBsYXlvdXQgYW5kIHN0eWxlLgpAQCAtNDExNSwzMCArMzkxOSw2IEBA
IEludFBvaW50IEZyYW1lVmlldzo6Y29udmVydEZyb21Db250YWluaW4KICAgICByZXR1cm4gcGFy
ZW50UG9pbnQ7CiB9CiAKLS8vIE5vcm1hbCBkZWxheQotdm9pZCBGcmFtZVZpZXc6OnNldFJlcGFp
bnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50RGVsYXkoZG91YmxlIHApCi17Ci0gICAgc19ub3Jt
YWxEZWZlcnJlZFJlcGFpbnREZWxheSA9IHA7Ci19Ci0KLS8vIE5lZ2F0aXZlIHZhbHVlIHdvdWxk
IG1lYW4gdGhhdCBmaXJzdCBmZXcgcmVwYWludHMgaGFwcGVuIHdpdGhvdXQgYSBkZWxheQotdm9p
ZCBGcmFtZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFpbnRE
ZWxheUR1cmluZ0xvYWRpbmcoZG91YmxlIHApCi17Ci0gICAgc19pbml0aWFsRGVmZXJyZWRSZXBh
aW50RGVsYXlEdXJpbmdMb2FkaW5nID0gcDsKLX0KLQotLy8gVGhlIGRlbGF5IGdyb3dzIG9uIGVh
Y2ggcmVwYWludCB0byB0aGlzIG1heGltdW0gdmFsdWUKLXZvaWQgRnJhbWVWaWV3OjpzZXRSZXBh
aW50VGhyb3R0bGluZ01heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyhkb3VibGUg
cCkKLXsKLSAgICBzX21heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyA9IHA7Ci19
Ci0KLS8vIE9uIGVhY2ggcmVwYWludCB0aGUgZGVsYXkgaW5jcmVhc2VzIGJ5IHRoaXMgYW1vdW50
Ci12b2lkIEZyYW1lVmlldzo6c2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxh
eUluY3JlbWVudER1cmluZ0xvYWRpbmcoZG91YmxlIHApCi17Ci0gICAgc19kZWZlcnJlZFJlcGFp
bnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmcgPSBwOwotfQotCiB2b2lkIEZyYW1lVmlldzo6
c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogewogICAgIGlmICh0cmFja1Jl
cGFpbnRzID09IG1faXNUcmFja2luZ1JlcGFpbnRzKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oCShyZXZpc2lvbiAxNjI4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjAsMTMgKzI2MCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wg
Zml4ZWRFbGVtZW50c0xheW91dFJlbGF0aXZlVG9GcmFtZSgpIGNvbnN0OwogCi0gICAgdm9pZCBi
ZWdpbkRlZmVycmVkUmVwYWludHMoKTsKLSAgICB2b2lkIGVuZERlZmVycmVkUmVwYWludHMoKTsK
LSAgICB2b2lkIGhhbmRsZUxvYWRDb21wbGV0ZWQoKTsKLSAgICB2b2lkIGZsdXNoRGVmZXJyZWRS
ZXBhaW50cygpOwotICAgIHZvaWQgc3RhcnREZWZlcnJlZFJlcGFpbnRUaW1lcihkb3VibGUgZGVs
YXkpOwotICAgIHZvaWQgcmVzZXREZWZlcnJlZFJlcGFpbnREZWxheSgpOwotCisgICAgdm9pZCBk
aXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAg
ICAgdm9pZCB1cGRhdGVMYXllckZsdXNoVGhyb3R0bGluZ0luQWxsRnJhbWVzKCk7CiAgICAgdm9p
ZCBhZGp1c3RUaWxlZEJhY2tpbmdDb3ZlcmFnZSgpOwogICAgIGJvb2wgc3BlY3VsYXRpdmVUaWxp
bmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjdWxhdGl2ZVRpbGluZ0VuYWJsZWQ7IH0K
QEAgLTM2MCwxNSArMzU0LDYgQEAgcHVibGljOgogICAgIGVudW0gU2Nyb2xsYmFyTW9kZXNDYWxj
dWxhdGlvblN0cmF0ZWd5IHsgUnVsZXNGcm9tV2ViQ29udGVudE9ubHksIEFueVJ1bGUgfTsKICAg
ICB2b2lkIGNhbGN1bGF0ZVNjcm9sbGJhck1vZGVzRm9yTGF5b3V0KFNjcm9sbGJhck1vZGUmIGhN
b2RlLCBTY3JvbGxiYXJNb2RlJiB2TW9kZSwgU2Nyb2xsYmFyTW9kZXNDYWxjdWxhdGlvblN0cmF0
ZWd5ID0gQW55UnVsZSk7CiAKLSAgICAvLyBOb3JtYWwgZGVsYXkKLSAgICBzdGF0aWMgdm9pZCBz
ZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERlbGF5KGRvdWJsZSBwKTsKLSAgICAv
LyBOZWdhdGl2ZSB2YWx1ZSB3b3VsZCBtZWFuIHRoYXQgZmlyc3QgZmV3IHJlcGFpbnRzIGhhcHBl
biB3aXRob3V0IGEgZGVsYXkKLSAgICBzdGF0aWMgdm9pZCBzZXRSZXBhaW50VGhyb3R0bGluZ25J
bml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2FkaW5nKGRvdWJsZSBwKTsKLSAgICAv
LyBUaGUgZGVsYXkgZ3Jvd3Mgb24gZWFjaCByZXBhaW50IHRvIHRoaXMgbWF4aW11bSB2YWx1ZQot
ICAgIHN0YXRpYyB2b2lkIHNldFJlcGFpbnRUaHJvdHRsaW5nTWF4RGVmZXJyZWRSZXBhaW50RGVs
YXlEdXJpbmdMb2FkaW5nKGRvdWJsZSBwKTsKLSAgICAvLyBPbiBlYWNoIHJlcGFpbnQgdGhlIGRl
bGF5IGluY3Jlc2VzIGJ5IHRoaXMgYW1vdW50Ci0gICAgc3RhdGljIHZvaWQgc2V0UmVwYWludFRo
cm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmcoZG91Ymxl
IHApOwotCiAgICAgdmlydHVhbCBJbnRQb2ludCBsYXN0S25vd25Nb3VzZVBvc2l0aW9uKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzSGFuZGxpbmdXaGVlbEV2ZW50KCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRTZXRDdXJzb3IoKSBjb25zdDsKQEAgLTU1Miwx
MiArNTM3LDYgQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQYWdlVGhhdENv
bnRlbnRBcmVhV2lsbFBhaW50KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBib29sIHNob3VsZFVz
ZUxvYWRUaW1lRGVmZXJyZWRSZXBhaW50RGVsYXkoKSBjb25zdDsKLSAgICB2b2lkIGRlZmVycmVk
UmVwYWludFRpbWVyRmlyZWQoVGltZXI8RnJhbWVWaWV3PiYpOwotICAgIHZvaWQgZG9EZWZlcnJl
ZFJlcGFpbnRzKCk7Ci0gICAgdm9pZCB1cGRhdGVEZWZlcnJlZFJlcGFpbnREZWxheUFmdGVyUmVw
YWludCgpOwotICAgIGRvdWJsZSBhZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3Q7
Ci0KICAgICB2b2lkIGVuYWJsZVNwZWN1bGF0aXZlVGlsaW5nSWZOZWVkZWQoKTsKICAgICB2b2lk
IHNwZWN1bGF0aXZlVGlsaW5nRW5hYmxlVGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Jik7CiAK
QEAgLTYzNywxMSArNjE2LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1faW5Qcm9ncmFtbWF0aWNT
Y3JvbGw7CiAgICAgYm9vbCBtX3NhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50OwogCi0gICAg
dW5zaWduZWQgbV9kZWZlcnJpbmdSZXBhaW50czsKLSAgICB1bnNpZ25lZCBtX3JlcGFpbnRDb3Vu
dDsKLSAgICBWZWN0b3I8TGF5b3V0UmVjdD4gbV9yZXBhaW50UmVjdHM7Ci0gICAgVGltZXI8RnJh
bWVWaWV3PiBtX2RlZmVycmVkUmVwYWludFRpbWVyOwotICAgIGRvdWJsZSBtX2RlZmVycmVkUmVw
YWludERlbGF5OwogICAgIGRvdWJsZSBtX2xhc3RQYWludFRpbWU7CiAKICAgICBib29sIG1faXNU
cmFja2luZ1JlcGFpbnRzOyAvLyBVc2VkIGZvciB0ZXN0aW5nLgpAQCAtNjk4LDExICs2NzIsNiBA
QCBwcml2YXRlOgogCiAgICAgTGF5b3V0TWlsZXN0b25lcyBtX21pbGVzdG9uZXNQZW5kaW5nUGFp
bnQ7CiAKLSAgICBzdGF0aWMgZG91YmxlIHNfbm9ybWFsRGVmZXJyZWRSZXBhaW50RGVsYXk7Ci0g
ICAgc3RhdGljIGRvdWJsZSBzX2luaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRp
bmc7Ci0gICAgc3RhdGljIGRvdWJsZSBzX21heERlZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9h
ZGluZzsKLSAgICBzdGF0aWMgZG91YmxlIHNfZGVmZXJyZWRSZXBhaW50RGVsYXlJbmNyZW1lbnRE
dXJpbmdMb2FkaW5nOwotCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIHZpc3VhbENoYXJhY3Rl
clRocmVzaG9sZCA9IDIwMDsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmlzdWFsUGl4ZWxU
aHJlc2hvbGQgPSAzMiAqIDMyOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCShyZXZpc2lvbiAxNjI4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkyOSw4ICs5MjksNiBAQCB2b2lkIFJl
bmRlclZpZXc6OnNldFNlbGVjdGlvbihSZW5kZXJPYmplCiAgICAgaWYgKGJsb2NrUmVwYWludE1v
ZGUgPT0gUmVwYWludE5vdGhpbmcpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lVmlldygp
LmJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwotCiAgICAgLy8gSGF2ZSBhbnkgb2YgdGhlIG9sZCBz
ZWxlY3RlZCBvYmplY3RzIGNoYW5nZWQgY29tcGFyZWQgdG8gdGhlIG5ldyBzZWxlY3Rpb24/CiAg
ICAgZm9yIChTZWxlY3RlZE9iamVjdE1hcDo6aXRlcmF0b3IgaSA9IG9sZFNlbGVjdGVkT2JqZWN0
cy5iZWdpbigpOyBpICE9IG9sZE9iamVjdHNFbmQ7ICsraSkgewogICAgICAgICBSZW5kZXJPYmpl
Y3QqIG9iaiA9IGktPmtleTsKQEAgLTk3MSw4ICs5NjksNiBAQCB2b2lkIFJlbmRlclZpZXc6OnNl
dFNlbGVjdGlvbihSZW5kZXJPYmplCiAgICAgU2VsZWN0ZWRCbG9ja01hcDo6aXRlcmF0b3IgbmV3
QmxvY2tzRW5kID0gbmV3U2VsZWN0ZWRCbG9ja3MuZW5kKCk7CiAgICAgZm9yIChTZWxlY3RlZEJs
b2NrTWFwOjppdGVyYXRvciBpID0gbmV3U2VsZWN0ZWRCbG9ja3MuYmVnaW4oKTsgaSAhPSBuZXdC
bG9ja3NFbmQ7ICsraSkKICAgICAgICAgaS0+dmFsdWUtPnJlcGFpbnQoKTsKLQotICAgIGZyYW1l
VmlldygpLmVuZERlZmVycmVkUmVwYWludHMoKTsKIH0KIAogdm9pZCBSZW5kZXJWaWV3OjpnZXRT
ZWxlY3Rpb24oUmVuZGVyT2JqZWN0KiYgc3RhcnRSZW5kZXJlciwgaW50JiBzdGFydE9mZnNldCwg
UmVuZGVyT2JqZWN0KiYgZW5kUmVuZGVyZXIsIGludCYgZW5kT2Zmc2V0KSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222322</attachid>
            <date>2014-01-27 05:58:47 -0800</date>
            <delta_ts>2014-01-27 06:57:05 -0800</delta_ts>
            <desc>another</desc>
            <filename>remove-repaint-throttling-2.patch</filename>
            <type>text/plain</type>
            <size>22859</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2MjgzNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE0LTAxLTI3ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgcmVwYWludCB0aHJv
dHRsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjc2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBO
b3dhZGF5cyB3ZSB0aHJvdHRsZSBsYXllciBmbHVzaGVzLiBUaGlzIGNvZGUgaXMgdW5uZWNlc3Nh
cnkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlY2FsY1N0eWxlKToKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpjbGFzc0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIGVkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNl
cnREaWN0YXRlZFRleHQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQpOgorICAgICAgICAqIHBh
Z2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGlz
cGF0Y2hEcmFnRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpkaXNwYXRj
aE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjprZXlFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KToK
KyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZp
ZXc6OkZyYW1lVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0Zy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6bGF5b3V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVWaWV3OjpkaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3JhcmlseUZv
ckludGVyYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6dXBkYXRlTGF5b3V0
QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpzZXRTZWxlY3Rpb24pOgorCiAyMDE0LTAxLTI3ICBDaHJpcyBGbGVpemFjaCAg
PGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgQVg6IERpc2FibGUgYWNjZXNzaWJpbGl0
eSBhZnRlciBldmVyeSB0ZXN0IHJ1bgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9u
IDE2MjgwNykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjgyLDcgKzEyODIsNiBAQCBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjBlbnRlckNvbXBv
c2l0aW5nCiBfX1pON1dlYkNvcmU5RnJhbWVWaWV3MjByZW1vdmVTY3JvbGxhYmxlQXJlYUVQTlNf
MTRTY3JvbGxhYmxlQXJlYUUKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHJlc2V0VHJhY2tlZFJl
cGFpbnRzRXYKIF9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMHNldENhbkhhdmVTY3JvbGxiYXJzRWIK
LV9fWk43V2ViQ29yZTlGcmFtZVZpZXcyMWZsdXNoRGVmZXJyZWRSZXBhaW50c0V2CiBfX1pON1dl
YkNvcmU5RnJhbWVWaWV3MjJzZXRCYXNlQmFja2dyb3VuZENvbG9yRVJLTlNfNUNvbG9yRQogX19a
TjdXZWJDb3JlOUZyYW1lVmlldzIzdXBkYXRlQ2FuSGF2ZVNjcm9sbGJhcnNFdgogX19aTjdXZWJD
b3JlOUZyYW1lVmlldzI0Zm9yY2VMYXlvdXRGb3JQYWdpbmF0aW9uRVJLTlNfOUZsb2F0U2l6ZUVT
M19mTlNfMTlBZGp1c3RWaWV3U2l6ZU9yTm90RQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiAxNjI4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzM5LDggKzE3MzksNiBAQCB2b2lkIERvY3VtZW50OjpyZWNhbGNT
dHlsZShTdHlsZTo6Q2hhbmdlCiAgICAgICAgIFBvc3RBdHRhY2hDYWxsYmFja0Rpc2FibGVyIGRp
c2FibGVyKCp0aGlzKTsKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25T
Y29wZSBzdXNwZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKIAotICAgICAgICBmcmFtZVZpZXcu
YmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0KICAgICAgICAgaWYgKG1fcGVuZGluZ1N0eWxlUmVj
YWxjU2hvdWxkRm9yY2UpCiAgICAgICAgICAgICBjaGFuZ2UgPSBTdHlsZTo6Rm9yY2U7CiAKQEAg
LTE3NjQsOCArMTc2Miw2IEBAIHZvaWQgRG9jdW1lbnQ6OnJlY2FsY1N0eWxlKFN0eWxlOjpDaGFu
Z2UKICAgICAgICAgLy8gUHNldWRvIGVsZW1lbnQgcmVtb3ZhbCBhbmQgc2ltaWxhciBtYXkgb25s
eSB3b3JrIHdpdGggdGhlc2UgZmxhZ3Mgc3RpbGwgc2V0LiBSZXNldCB0aGVtIGFmdGVyIHRoZSBz
dHlsZSByZWNhbGMuCiAgICAgICAgIGlmIChtX3N0eWxlUmVzb2x2ZXIpCiAgICAgICAgICAgICBt
X3N0eWxlU2hlZXRDb2xsZWN0aW9uLnJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7Ci0KLSAgICAgICAg
ZnJhbWVWaWV3LmVuZERlZmVycmVkUmVwYWludHMoKTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSB3
YW50ZWQgdG8gY2FsbCBpbXBsaWNpdENsb3NlKCkgZHVyaW5nIHJlY2FsY1N0eWxlLCBkbyBzbyBu
b3cgdGhhdCB3ZSdyZSBmaW5pc2hlZC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTYyODA3KQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjg5LDcgKzY4OSw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlcjo6aW5zZXJ0RGkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKEZyYW1l
VmlldyogdmlldyA9IG1fZnJhbWUudmlldygpKQotICAgICAgICB2aWV3LT5yZXNldERlZmVycmVk
UmVwYWludERlbGF5KCk7CisgICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGlu
Z1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKIAogICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2
ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVGb3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLT5k
b21XaW5kb3coKSwgdGV4dCwgZGljdGF0aW9uQWx0ZXJuYXRpdmVzKTsKICAgICBldmVudC0+c2V0
VW5kZXJseWluZ0V2ZW50KHRyaWdnZXJpbmdFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE2MjgwNykKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5OCw5ICs3OTgsNiBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0
KG1fZnJhbWUpOwogICAgIG1fc2hvdWxkQ2FsbENoZWNrQ29tcGxldGVkID0gZmFsc2U7CiAKLSAg
ICBpZiAobV9mcmFtZS52aWV3KCkpCi0gICAgICAgIG1fZnJhbWUudmlldygpLT5oYW5kbGVMb2Fk
Q29tcGxldGVkKCk7Ci0KICAgICAvLyBIYXZlIHdlIGNvbXBsZXRlZCBiZWZvcmU/CiAgICAgaWYg
KG1faXNDb21wbGV0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtODQ1LDkgKzg0Miw2IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkKICAgICBjb21wbGV0ZWQoKTsKICAgICBpZiAo
bV9mcmFtZS5wYWdlKCkpCiAgICAgICAgIGNoZWNrTG9hZENvbXBsZXRlKCk7Ci0KLSAgICBpZiAo
bV9mcmFtZS52aWV3KCkpCi0gICAgICAgIG1fZnJhbWUudmlldygpLT5oYW5kbGVMb2FkQ29tcGxl
dGVkKCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrVGltZXJGaXJlZChUaW1lcjxGcmFt
ZUxvYWRlcj4mKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNp
b24gMTYyODA3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDE2LDcgKzIwMTYsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6ZGlzcGF0
Y2hEcmFnRXZlbnQoY29uCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICB2aWV3LT5yZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7CisgICAgdmlldy0+ZGlzYWJs
ZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogICAgIFJl
ZlB0cjxNb3VzZUV2ZW50PiBtZSA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsCiAgICAg
ICAgIHRydWUsIHRydWUsIGV2ZW50LnRpbWVzdGFtcCgpLCBtX2ZyYW1lLmRvY3VtZW50KCktPmRl
ZmF1bHRWaWV3KCksCiAgICAgICAgIDAsIGV2ZW50Lmdsb2JhbFBvc2l0aW9uKCkueCgpLCBldmVu
dC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9zaXRpb24oKS54KCksIGV2ZW50LnBvc2l0
aW9uKCkueSgpLApAQCAtMjM4OCw3ICsyMzg4LDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0
ZU1vdXNlRXZlbnRUYXJnZQogYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2V0Tm9kZSwgYm9vbCAvKmNh
bmNlbGFibGUqLywgaW50IGNsaWNrQ291bnQsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91
c2VFdmVudCwgYm9vbCBzZXRVbmRlcikKIHsKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9m
cmFtZS52aWV3KCkpCi0gICAgICAgIHZpZXctPnJlc2V0RGVmZXJyZWRSZXBhaW50RGVsYXkoKTsK
KyAgICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJ
bnRlcmFjdGlvbigpOwogCiAgICAgdXBkYXRlTW91c2VFdmVudFRhcmdldE5vZGUodGFyZ2V0Tm9k
ZSwgbW91c2VFdmVudCwgc2V0VW5kZXIpOwogCkBAIC0yOTE0LDcgKzI5MTQsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvCiAgICAgVXNlclR5cGluZ0dlc3R1cmVJ
bmRpY2F0b3IgdHlwaW5nR2VzdHVyZUluZGljYXRvcihtX2ZyYW1lKTsKIAogICAgIGlmIChGcmFt
ZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVzZXREZWZlcnJl
ZFJlcGFpbnREZWxheSgpOworICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxp
bmdUZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKICAgICAvLyBGSVhNRSAoYnVnIDY4MTg1
KTogdGhpcyBjYWxsIHNob3VsZCBiZSBtYWRlIGF0IGFub3RoZXIgYWJzdHJhY3Rpb24gbGF5ZXIK
ICAgICBtX2ZyYW1lLmxvYWRlcigpLnJlc2V0TXVsdGlwbGVGb3JtU3VibWlzc2lvblByb3RlY3Rp
b24oKTsKQEAgLTMzMzYsNyArMzMzNiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVUZXh0
SW5wdXRFdmVudCgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGlmIChGcmFtZVZp
ZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVzZXREZWZlcnJlZFJl
cGFpbnREZWxheSgpOworICAgICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdU
ZW1wb3JhcmlseUZvckludGVyYWN0aW9uKCk7CiAKICAgICBSZWZQdHI8VGV4dEV2ZW50PiBldmVu
dCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRl
eHQsIGlucHV0VHlwZSk7CiAgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCh1bmRlcmx5aW5n
RXZlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE2MjgwNykKKysrIFNv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NTYsNyArOTU2
LDYgQEAgdm9pZCBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVQYWludEJlZ2luKAogICAgIGlmICgh
bV92aWV3KQogICAgICAgICByZXR1cm47CiAgICAgbV92aWV3LT51cGRhdGVMYXlvdXRBbmRTdHls
ZUlmTmVlZGVkUmVjdXJzaXZlKCk7Ci0gICAgbV92aWV3LT5mbHVzaERlZmVycmVkUmVwYWludHMo
KTsKIH0KIAogdm9pZCBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVQYWludChHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIHJlY3QpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXcuY3BwCShyZXZpc2lvbiAxNjI4MDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCwyOCArMTE4LDYgQEAgdXNpbmcgbmFtZXNw
YWNlIEhUTUxOYW1lczsKIAogZG91YmxlIEZyYW1lVmlldzo6c0N1cnJlbnRQYWludFRpbWVTdGFt
cCA9IDAuMDsKIAotCi0vLyBSRVBBSU5UX1RIUk9UVExJTkcgbm93IGNob29zZXMgZGVmYXVsdCB2
YWx1ZXMgZm9yIHRocm90dGxpbmcgcGFyYW1ldGVycy4KLS8vIFNob3VsZCBiZSByZW1vdmVkIHdo
ZW4gYXBwbGljYXRpb25zIHN0YXJ0IHVzaW5nIHJ1bnRpbWUgY29uZmlndXJhdGlvbi4KLSNpZiBF
TkFCTEUoUkVQQUlOVF9USFJPVFRMSU5HKQotLy8gTm9ybWFsIGRlbGF5Ci1kb3VibGUgRnJhbWVW
aWV3OjpzX25vcm1hbERlZmVycmVkUmVwYWludERlbGF5ID0gMC4wMTY7Ci0vLyBOZWdhdGl2ZSB2
YWx1ZSB3b3VsZCBtZWFuIHRoYXQgZmlyc3QgZmV3IHJlcGFpbnRzIGhhcHBlbiB3aXRob3V0IGEg
ZGVsYXkKLWRvdWJsZSBGcmFtZVZpZXc6OnNfaW5pdGlhbERlZmVycmVkUmVwYWludERlbGF5RHVy
aW5nTG9hZGluZyA9IDA7Ci0vLyBUaGUgZGVsYXkgZ3Jvd3Mgb24gZWFjaCByZXBhaW50IHRvIHRo
aXMgbWF4aW11bSB2YWx1ZQotZG91YmxlIEZyYW1lVmlldzo6c19tYXhEZWZlcnJlZFJlcGFpbnRE
ZWxheUR1cmluZ0xvYWRpbmcgPSAyLjU7Ci0vLyBPbiBlYWNoIHJlcGFpbnQgdGhlIGRlbGF5IGlu
Y3Jlc2VzIGJ5IHRoaXMgYW1vdW50Ci1kb3VibGUgRnJhbWVWaWV3OjpzX2RlZmVycmVkUmVwYWlu
dERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyA9IDAuNTsKLSNlbHNlCi0vLyBGSVhNRTogUmVw
YWludCB0aHJvdHRsaW5nIGNvdWxkIGJlIGdvb2QgdG8gaGF2ZSBvbiBhbGwgcGxhdGZvcm0uCi0v
LyBUaGUgYmFsYW5jZSBiZXR3ZWVuIENQVSB1c2UgYW5kIHJlcGFpbnQgZnJlcXVlbmN5IHdpbGwg
bmVlZCBzb21lIHR1bmluZyBmb3IgZGVza3RvcC4KLS8vIE1vcmUgaG9va3MgbWF5IGJlIG5lZWRl
ZCB0byByZXNldCB0aGUgZGVsYXkgb24gdGhpbmdzIGxpa2UgR0lGIGFuZCBDU1MgYW5pbWF0aW9u
cy4KLWRvdWJsZSBGcmFtZVZpZXc6OnNfbm9ybWFsRGVmZXJyZWRSZXBhaW50RGVsYXkgPSAwOwot
ZG91YmxlIEZyYW1lVmlldzo6c19pbml0aWFsRGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdMb2Fk
aW5nID0gMDsKLWRvdWJsZSBGcmFtZVZpZXc6OnNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJp
bmdMb2FkaW5nID0gMDsKLWRvdWJsZSBGcmFtZVZpZXc6OnNfZGVmZXJyZWRSZXBhaW50RGVsYXlJ
bmNyZW1lbnREdXJpbmdMb2FkaW5nID0gMDsKLSNlbmRpZgotCiAvLyBUaGUgbWF4aW11bSBudW1i
ZXIgb2YgdXBkYXRlRW1iZWRkZWRPYmplY3RzIGl0ZXJhdGlvbnMgdGhhdCBzaG91bGQgYmUgZG9u
ZSBiZWZvcmUgcmV0dXJuaW5nLgogc3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heFVwZGF0ZUVtYmVk
ZGVkT2JqZWN0c0l0ZXJhdGlvbnMgPSAyOwogCkBAIC0xOTgsNyArMTc2LDYgQEAgRnJhbWVWaWV3
OjpGcmFtZVZpZXcoRnJhbWUmIGZyYW1lKQogICAgICwgbV93YXNTY3JvbGxlZEJ5VXNlcihmYWxz
ZSkKICAgICAsIG1faW5Qcm9ncmFtbWF0aWNTY3JvbGwoZmFsc2UpCiAgICAgLCBtX3NhZmVUb1By
b3BhZ2F0ZVNjcm9sbFRvUGFyZW50KHRydWUpCi0gICAgLCBtX2RlZmVycmVkUmVwYWludFRpbWVy
KHRoaXMsICZGcmFtZVZpZXc6OmRlZmVycmVkUmVwYWludFRpbWVyRmlyZWQpCiAgICAgLCBtX2lz
VHJhY2tpbmdSZXBhaW50cyhmYWxzZSkKICAgICAsIG1fc2hvdWxkVXBkYXRlV2hpbGVPZmZzY3Jl
ZW4odHJ1ZSkKICAgICAsIG1fZXhwb3NlZFJlY3QoRmxvYXRSZWN0OjppbmZpbml0ZVJlY3QoKSkK
QEAgLTI4NSwxMSArMjYyLDYgQEAgdm9pZCBGcmFtZVZpZXc6OnJlc2V0KCkKICAgICBtX3NhZmVU
b1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50ID0gdHJ1ZTsKICAgICBtX2xhc3RWaWV3cG9ydFNpemUg
PSBJbnRTaXplKCk7CiAgICAgbV9sYXN0Wm9vbUZhY3RvciA9IDEuMGY7Ci0gICAgbV9kZWZlcnJp
bmdSZXBhaW50cyA9IDA7Ci0gICAgbV9yZXBhaW50Q291bnQgPSAwOwotICAgIG1fcmVwYWludFJl
Y3RzLmNsZWFyKCk7Ci0gICAgbV9kZWZlcnJlZFJlcGFpbnREZWxheSA9IHNfaW5pdGlhbERlZmVy
cmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZzsKLSAgICBtX2RlZmVycmVkUmVwYWludFRpbWVy
LnN0b3AoKTsKICAgICBtX2lzVHJhY2tpbmdSZXBhaW50cyA9IGZhbHNlOwogICAgIG1fdHJhY2tl
ZFJlcGFpbnRSZWN0cy5jbGVhcigpOwogICAgIG1fbGFzdFBhaW50VGltZSA9IDA7CkBAIC05MDIs
MTAgKzg3NCw2IEBAIGJvb2wgRnJhbWVWaWV3OjpmbHVzaENvbXBvc2l0aW5nU3RhdGVGb3IKICAg
ICBpZiAobmVlZHNMYXlvdXQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gSWYg
d2Ugc3luYyBjb21wb3NpdGluZyBsYXllcnMgYW5kIGFsbG93IHRoZSByZXBhaW50IHRvIGJlIGRl
ZmVycmVkLCB0aGVyZSBpcyB0aW1lIGZvciBhCi0gICAgLy8gdmlzaWJsZSBmbGFzaCB0byBvY2N1
ci4gSW5zdGVhZCwgc3RvcCB0aGUgZGVmZXJyZWQgcmVwYWludCB0aW1lciBhbmQgcmVwYWludCBp
bW1lZGlhdGVseS4KLSAgICBmbHVzaERlZmVycmVkUmVwYWludHMoKTsKLQogI2lmIFBMQVRGT1JN
KElPUykKICAgICBpZiAoVGlsZUNhY2hlKiB0aWxlQ2FjaGUgPSB0aGlzLT50aWxlQ2FjaGUoKSkK
ICAgICAgICAgdGlsZUNhY2hlLT5kb1BlbmRpbmdSZXBhaW50cygpOwpAQCAtMTMxMiw3ICsxMjgw
LDYgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZQogICAgICAgICBB
U1NFUlQobV9sYXlvdXRQaGFzZSA9PSBJblByZUxheW91dCk7CiAgICAgICAgIG1fbGF5b3V0UGhh
c2UgPSBJbkxheW91dDsKIAotICAgICAgICBiZWdpbkRlZmVycmVkUmVwYWludHMoKTsKICAgICAg
ICAgZm9yY2VMYXlvdXRQYXJlbnRWaWV3SWZOZWVkZWQoKTsKIAogICAgICAgICBBU1NFUlQobV9s
YXlvdXRQaGFzZSA9PSBJbkxheW91dCk7CkBAIC0xMzMyLDcgKzEyOTksNiBAQCB2b2lkIEZyYW1l
Vmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVlCiAgICAgICAgIGlmIChkb2N1bWVudC50ZXh0
QXV0b3NpemVyKCktPnByb2Nlc3NTdWJ0cmVlKHJvb3QpICYmIHJvb3QtPm5lZWRzTGF5b3V0KCkp
CiAgICAgICAgICAgICByb290LT5sYXlvdXQoKTsKICNlbmRpZgotICAgICAgICBlbmREZWZlcnJl
ZFJlcGFpbnRzKCk7CiAKICAgICAgICAgQVNTRVJUKG1fbGF5b3V0UGhhc2UgPT0gSW5MYXlvdXQp
OwogCkBAIC0xMzU2LDE0ICsxMzIyLDExIEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBh
bGxvd1N1YnRyZWUKICAgICBtX25lZWRzRnVsbFJlcGFpbnQgPSBuZWVkZWRGdWxsUmVwYWludDsK
IAogICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBhbGwgbGF5ZXJzLgotICAgIGJl
Z2luRGVmZXJyZWRSZXBhaW50cygpOwogICAgIGlmIChtX25lZWRzRnVsbFJlcGFpbnQpCiAgICAg
ICAgIHJvb3QtPnZpZXcoKS5yZXBhaW50Um9vdENvbnRlbnRzKCk7CiAKICAgICBsYXllci0+dXBk
YXRlTGF5ZXJQb3NpdGlvbnNBZnRlckxheW91dChyZW5kZXJWaWV3KCktPmxheWVyKCksIHVwZGF0
ZUxheWVyUG9zaXRpb25GbGFncyhsYXllciwgc3VidHJlZSwgbV9uZWVkc0Z1bGxSZXBhaW50KSk7
CiAKLSAgICBlbmREZWZlcnJlZFJlcGFpbnRzKCk7Ci0KICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgdXBkYXRlQ29tcG9zaXRpbmdMYXllcnNBZnRlckxheW91dCgpOwogI2Vu
ZGlmCkBAIC0yMTU5LDMyICsyMTIyLDYgQEAgdm9pZCBGcmFtZVZpZXc6OnJlcGFpbnRDb250ZW50
UmVjdGFuZ2xlKAogCiAgICAgYWRkVHJhY2tlZFJlcGFpbnRSZWN0KHIpOwogCi0gICAgZG91Ymxl
IGRlbGF5ID0gbV9kZWZlcnJpbmdSZXBhaW50cyA/IDAgOiBhZGp1c3RlZERlZmVycmVkUmVwYWlu
dERlbGF5KCk7Ci0gICAgaWYgKChtX2RlZmVycmluZ1JlcGFpbnRzIHx8IG1fZGVmZXJyZWRSZXBh
aW50VGltZXIuaXNBY3RpdmUoKSB8fCBkZWxheSkgJiYgIWltbWVkaWF0ZSkgewotICAgICAgICBJ
bnRSZWN0IHBhaW50UmVjdCA9IHI7Ci0gICAgICAgIGlmIChjbGlwc1JlcGFpbnRzKCkgJiYgIXBh
aW50c0VudGlyZUNvbnRlbnRzKCkpCi0gICAgICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KHZp
c2libGVDb250ZW50UmVjdChMZWdhY3lJT1NEb2N1bWVudFZpc2libGVSZWN0KSk7Ci0gICAgICAg
IGlmIChwYWludFJlY3QuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBp
ZiAobV9yZXBhaW50Q291bnQgPT0gY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQpIHsKLSAgICAg
ICAgICAgIEludFJlY3QgdW5pb25lZFJlY3Q7Ci0gICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY1JlcGFpbnRSZWN0VW5pb25UaHJlc2hvbGQ7ICsraSkKLSAgICAgICAgICAgICAg
ICB1bmlvbmVkUmVjdC51bml0ZShwaXhlbFNuYXBwZWRJbnRSZWN0KG1fcmVwYWludFJlY3RzW2ld
KSk7Ci0gICAgICAgICAgICBtX3JlcGFpbnRSZWN0cy5jbGVhcigpOwotICAgICAgICAgICAgbV9y
ZXBhaW50UmVjdHMuYXBwZW5kKHVuaW9uZWRSZWN0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAo
bV9yZXBhaW50Q291bnQgPCBjUmVwYWludFJlY3RVbmlvblRocmVzaG9sZCkKLSAgICAgICAgICAg
IG1fcmVwYWludFJlY3RzLmFwcGVuZChwYWludFJlY3QpOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBtX3JlcGFpbnRSZWN0c1swXS51bml0ZShwYWludFJlY3QpOwotICAgICAgICBtX3JlcGFp
bnRDb3VudCsrOwotCi0gICAgICAgIGlmICghbV9kZWZlcnJpbmdSZXBhaW50cykKLSAgICAgICAg
ICAgIHN0YXJ0RGVmZXJyZWRSZXBhaW50VGltZXIoZGVsYXkpOwotCi0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0gICAgCiAgICAgaWYgKCFzaG91bGRVcGRhdGUoaW1tZWRpYXRlKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0yMjc1LDE0MyArMjIxMiwxNCBAQCB2b2lkIEZyYW1lVmlldzo6YWRkZWRP
clJlbW92ZWRTY3JvbGxiYXIoCiAjZW5kaWYKIH0KIAotdm9pZCBGcmFtZVZpZXc6OmJlZ2luRGVm
ZXJyZWRSZXBhaW50cygpCi17Ci0gICAgaWYgKCFmcmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAg
ICAgICAgZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3KCktPmJlZ2luRGVmZXJyZWRSZXBhaW50cygp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9kZWZlcnJpbmdSZXBhaW50cysrOwot
fQotCi12b2lkIEZyYW1lVmlldzo6ZW5kRGVmZXJyZWRSZXBhaW50cygpCi17Ci0gICAgaWYgKCFm
cmFtZSgpLmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgZnJhbWUoKS5tYWluRnJhbWUoKS52aWV3
KCktPmVuZERlZmVycmVkUmVwYWludHMoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IEFTU0VSVChtX2RlZmVycmluZ1JlcGFpbnRzID4gMCk7Ci0KLSAgICBpZiAoLS1tX2RlZmVycmlu
Z1JlcGFpbnRzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9kZWZlcnJlZFJlcGFpbnRU
aW1lci5pc0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZG91YmxlIGRlbGF5
ID0gYWRqdXN0ZWREZWZlcnJlZFJlcGFpbnREZWxheSgpKSB7Ci0gICAgICAgIHN0YXJ0RGVmZXJy
ZWRSZXBhaW50VGltZXIoZGVsYXkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IGRvRGVmZXJyZWRSZXBhaW50cygpOwotfQotCi12b2lkIEZyYW1lVmlldzo6c3RhcnREZWZlcnJl
ZFJlcGFpbnRUaW1lcihkb3VibGUgZGVsYXkpCi17Ci0gICAgaWYgKG1fZGVmZXJyZWRSZXBhaW50
VGltZXIuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9kZWZlcnJlZFJlcGFp
bnRUaW1lci5zdGFydE9uZVNob3QoZGVsYXkpOwotfQotCi12b2lkIEZyYW1lVmlldzo6aGFuZGxl
TG9hZENvbXBsZXRlZCgpCi17Ci0gICAgLy8gT25jZSBsb2FkaW5nIGhhcyBjb21wbGV0ZWQsIGFs
bG93IGF1dG9TaXplIG9uZSBsYXN0IG9wcG9ydHVuaXR5IHRvCi0gICAgLy8gcmVkdWNlIHRoZSBz
aXplIG9mIHRoZSBmcmFtZS4KLSAgICBhdXRvU2l6ZUlmRW5hYmxlZCgpOwotICAgIGlmIChzaG91
bGRVc2VMb2FkVGltZURlZmVycmVkUmVwYWludERlbGF5KCkpCi0gICAgICAgIHJldHVybjsKLSAg
ICBtX2RlZmVycmVkUmVwYWludERlbGF5ID0gc19ub3JtYWxEZWZlcnJlZFJlcGFpbnREZWxheTsK
LSAgICBmbHVzaERlZmVycmVkUmVwYWludHMoKTsKLX0KLQotdm9pZCBGcmFtZVZpZXc6OmZsdXNo
RGVmZXJyZWRSZXBhaW50cygpCi17Ci0gICAgaWYgKCFtX2RlZmVycmVkUmVwYWludFRpbWVyLmlz
QWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2RlZmVycmVkUmVwYWludFRpbWVyLnN0
b3AoKTsKLSAgICBkb0RlZmVycmVkUmVwYWludHMoKTsKLX0KLQotdm9pZCBGcmFtZVZpZXc6OmRv
RGVmZXJyZWRSZXBhaW50cygpCi17Ci0gICAgQVNTRVJUKCFtX2RlZmVycmluZ1JlcGFpbnRzKTsK
LSAgICBpZiAoIXNob3VsZFVwZGF0ZSgpKSB7Ci0gICAgICAgIG1fcmVwYWludFJlY3RzLmNsZWFy
KCk7Ci0gICAgICAgIG1fcmVwYWludENvdW50ID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICB1bnNpZ25lZCBzaXplID0gbV9yZXBhaW50UmVjdHMuc2l6ZSgpOwotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKLSAgICAgICAgaWYgKGZyYW1lKCkudGlsZWRCYWNraW5nU3RvcmUoKSkgewotICAgICAgICAg
ICAgZnJhbWUoKS50aWxlZEJhY2tpbmdTdG9yZSgpLT5pbnZhbGlkYXRlKHBpeGVsU25hcHBlZElu
dFJlY3QobV9yZXBhaW50UmVjdHNbaV0pKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9Ci0jZW5kaWYKLSAgICAgICAgU2Nyb2xsVmlldzo6cmVwYWludENvbnRlbnRSZWN0YW5nbGUo
cGl4ZWxTbmFwcGVkSW50UmVjdChtX3JlcGFpbnRSZWN0c1tpXSksIGZhbHNlKTsKLSAgICB9Ci0g
ICAgbV9yZXBhaW50UmVjdHMuY2xlYXIoKTsKLSAgICBtX3JlcGFpbnRDb3VudCA9IDA7Ci0gICAg
Ci0gICAgdXBkYXRlRGVmZXJyZWRSZXBhaW50RGVsYXlBZnRlclJlcGFpbnQoKTsKLX0KLQotYm9v
bCBGcmFtZVZpZXc6OnNob3VsZFVzZUxvYWRUaW1lRGVmZXJyZWRSZXBhaW50RGVsYXkoKSBjb25z
dAotewotICAgIC8vIERvbid0IGRlZmVyIGFmdGVyIHRoZSBpbml0aWFsIGxvYWQgb2YgdGhlIHBh
Z2UgaGFzIGJlZW4gY29tcGxldGVkLgotICAgIGlmIChmcmFtZSgpLnRyZWUoKS50b3AoKS5sb2Fk
ZXIoKS5pc0NvbXBsZXRlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChkb2N1bWVudC0+cGFyc2luZygpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICBpZiAoZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJl
cXVlc3RDb3VudCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLXZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVEZWZlcnJlZFJlcGFpbnREZWxheUFmdGVyUmVwYWlu
dCgpCi17Ci0gICAgaWYgKCFzaG91bGRVc2VMb2FkVGltZURlZmVycmVkUmVwYWludERlbGF5KCkp
IHsKLSAgICAgICAgbV9kZWZlcnJlZFJlcGFpbnREZWxheSA9IHNfbm9ybWFsRGVmZXJyZWRSZXBh
aW50RGVsYXk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgZG91YmxlIGluY3JlbWVudGVk
UmVwYWludERlbGF5ID0gbV9kZWZlcnJlZFJlcGFpbnREZWxheSArIHNfZGVmZXJyZWRSZXBhaW50
RGVsYXlJbmNyZW1lbnREdXJpbmdMb2FkaW5nOwotICAgIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkg
PSBzdGQ6Om1pbihpbmNyZW1lbnRlZFJlcGFpbnREZWxheSwgc19tYXhEZWZlcnJlZFJlcGFpbnRE
ZWxheUR1cmluZ0xvYWRpbmcpOwotfQotCi12b2lkIEZyYW1lVmlldzo6cmVzZXREZWZlcnJlZFJl
cGFpbnREZWxheSgpCit2b2lkIEZyYW1lVmlldzo6ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5n
VGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpCiB7Ci0gICAgbV9kZWZlcnJlZFJlcGFpbnREZWxh
eSA9IDA7Ci0gICAgaWYgKG1fZGVmZXJyZWRSZXBhaW50VGltZXIuaXNBY3RpdmUoKSkgewotICAg
ICAgICBtX2RlZmVycmVkUmVwYWludFRpbWVyLnN0b3AoKTsKLSAgICAgICAgaWYgKCFtX2RlZmVy
cmluZ1JlcGFpbnRzKQotICAgICAgICAgICAgZG9EZWZlcnJlZFJlcGFpbnRzKCk7Ci0gICAgfQog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAoUmVuZGVyVmlldyogdmll
dyA9IHJlbmRlclZpZXcoKSkKICAgICAgICAgdmlldy0+Y29tcG9zaXRvcigpLmRpc2FibGVMYXll
ckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsKICNlbmRpZgogfQog
Ci1kb3VibGUgRnJhbWVWaWV3OjphZGp1c3RlZERlZmVycmVkUmVwYWludERlbGF5KCkgY29uc3QK
LXsKLSAgICBBU1NFUlQoIW1fZGVmZXJyaW5nUmVwYWludHMpOwotICAgIGlmICghbV9kZWZlcnJl
ZFJlcGFpbnREZWxheSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgZG91YmxlIHRpbWVTaW5jZUxh
c3RQYWludCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9sYXN0UGFpbnRUaW1l
OwotICAgIHJldHVybiBzdGQ6Om1heDxkb3VibGU+KDAsIG1fZGVmZXJyZWRSZXBhaW50RGVsYXkg
LSB0aW1lU2luY2VMYXN0UGFpbnQpOwotfQotICAgIAotdm9pZCBGcmFtZVZpZXc6OmRlZmVycmVk
UmVwYWludFRpbWVyRmlyZWQoVGltZXI8RnJhbWVWaWV3PiYpCi17Ci0gICAgZG9EZWZlcnJlZFJl
cGFpbnRzKCk7Ci19Ci0KIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVMYXllckZsdXNoVGhyb3R0bGlu
Z0luQWxsRnJhbWVzKCkKIHsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCkBAIC0z
ODIyLDEwICszNjMwLDYgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZO
ZQogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjaGlsZFZpZXdzLnNpemUoKTsgKytpKQog
ICAgICAgICBjaGlsZFZpZXdzW2ldLT51cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJz
aXZlKCk7CiAKLSAgICAvLyB1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlIGlz
IGNhbGxlZCB3aGVuIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHN0eWxlIGFuZCBsYXlvdXQgYXJlIHVw
LXRvLWRhdGUgYmVmb3JlCi0gICAgLy8gcGFpbnRpbmcsIHNvIHdlIG5lZWQgdG8gZmx1c2ggb3V0
IGFueSBkZWZlcnJlZCByZXBhaW50cyB0b28uCi0gICAgZmx1c2hEZWZlcnJlZFJlcGFpbnRzKCk7
Ci0KICAgICAvLyBXaGVuIGZyYW1lIGZsYXR0ZW5pbmcgaXMgb24sIGNoaWxkIGZyYW1lIGNhbiBt
YXJrIHBhcmVudCBmcmFtZSBkaXJ0eS4gSW4gc3VjaCBjYXNlLCBjaGlsZCBmcmFtZQogICAgIC8v
IG5lZWRzIHRvIGNhbGwgbGF5b3V0IG9uIHBhcmVudCBmcmFtZSByZWN1cnNpdmVseS4KICAgICAv
LyBUaGlzIGFzc2VydCBlbnN1cmVzIHRoYXQgcGFyZW50IGZyYW1lcyBhcmUgY2xlYW4sIHdoZW4g
Y2hpbGQgZnJhbWVzIGZpbmlzaGVkIHVwZGF0aW5nIGxheW91dCBhbmQgc3R5bGUuCkBAIC00MTE1
LDMwICszOTE5LDYgQEAgSW50UG9pbnQgRnJhbWVWaWV3Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbgog
ICAgIHJldHVybiBwYXJlbnRQb2ludDsKIH0KIAotLy8gTm9ybWFsIGRlbGF5Ci12b2lkIEZyYW1l
Vmlldzo6c2V0UmVwYWludFRocm90dGxpbmdEZWZlcnJlZFJlcGFpbnREZWxheShkb3VibGUgcCkK
LXsKLSAgICBzX25vcm1hbERlZmVycmVkUmVwYWludERlbGF5ID0gcDsKLX0KLQotLy8gTmVnYXRp
dmUgdmFsdWUgd291bGQgbWVhbiB0aGF0IGZpcnN0IGZldyByZXBhaW50cyBoYXBwZW4gd2l0aG91
dCBhIGRlbGF5Ci12b2lkIEZyYW1lVmlldzo6c2V0UmVwYWludFRocm90dGxpbmduSW5pdGlhbERl
ZmVycmVkUmVwYWludERlbGF5RHVyaW5nTG9hZGluZyhkb3VibGUgcCkKLXsKLSAgICBzX2luaXRp
YWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcgPSBwOwotfQotCi0vLyBUaGUgZGVs
YXkgZ3Jvd3Mgb24gZWFjaCByZXBhaW50IHRvIHRoaXMgbWF4aW11bSB2YWx1ZQotdm9pZCBGcmFt
ZVZpZXc6OnNldFJlcGFpbnRUaHJvdHRsaW5nTWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdM
b2FkaW5nKGRvdWJsZSBwKQotewotICAgIHNfbWF4RGVmZXJyZWRSZXBhaW50RGVsYXlEdXJpbmdM
b2FkaW5nID0gcDsKLX0KLQotLy8gT24gZWFjaCByZXBhaW50IHRoZSBkZWxheSBpbmNyZWFzZXMg
YnkgdGhpcyBhbW91bnQKLXZvaWQgRnJhbWVWaWV3OjpzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVy
cmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyhkb3VibGUgcCkKLXsKLSAgICBz
X2RlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5nTG9hZGluZyA9IHA7Ci19Ci0KIHZv
aWQgRnJhbWVWaWV3OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCiB7CiAg
ICAgaWYgKHRyYWNrUmVwYWludHMgPT0gbV9pc1RyYWNraW5nUmVwYWludHMpCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVWaWV3LmgJKHJldmlzaW9uIDE2MjgwNykKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTI2MCwxMyArMjYwLDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBmaXhlZEVsZW1lbnRzTGF5b3V0UmVsYXRpdmVUb0ZyYW1lKCkgY29uc3Q7
CiAKLSAgICB2b2lkIGJlZ2luRGVmZXJyZWRSZXBhaW50cygpOwotICAgIHZvaWQgZW5kRGVmZXJy
ZWRSZXBhaW50cygpOwotICAgIHZvaWQgaGFuZGxlTG9hZENvbXBsZXRlZCgpOwotICAgIHZvaWQg
Zmx1c2hEZWZlcnJlZFJlcGFpbnRzKCk7Ci0gICAgdm9pZCBzdGFydERlZmVycmVkUmVwYWludFRp
bWVyKGRvdWJsZSBkZWxheSk7Ci0gICAgdm9pZCByZXNldERlZmVycmVkUmVwYWludERlbGF5KCk7
Ci0KKyAgICB2b2lkIGRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50
ZXJhY3Rpb24oKTsKICAgICB2b2lkIHVwZGF0ZUxheWVyRmx1c2hUaHJvdHRsaW5nSW5BbGxGcmFt
ZXMoKTsKICAgICB2b2lkIGFkanVzdFRpbGVkQmFja2luZ0NvdmVyYWdlKCk7CiAgICAgYm9vbCBz
cGVjdWxhdGl2ZVRpbGluZ0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGF0aXZlVGls
aW5nRW5hYmxlZDsgfQpAQCAtMzYwLDE1ICszNTQsNiBAQCBwdWJsaWM6CiAgICAgZW51bSBTY3Jv
bGxiYXJNb2Rlc0NhbGN1bGF0aW9uU3RyYXRlZ3kgeyBSdWxlc0Zyb21XZWJDb250ZW50T25seSwg
QW55UnVsZSB9OwogICAgIHZvaWQgY2FsY3VsYXRlU2Nyb2xsYmFyTW9kZXNGb3JMYXlvdXQoU2Ny
b2xsYmFyTW9kZSYgaE1vZGUsIFNjcm9sbGJhck1vZGUmIHZNb2RlLCBTY3JvbGxiYXJNb2Rlc0Nh
bGN1bGF0aW9uU3RyYXRlZ3kgPSBBbnlSdWxlKTsKIAotICAgIC8vIE5vcm1hbCBkZWxheQotICAg
IHN0YXRpYyB2b2lkIHNldFJlcGFpbnRUaHJvdHRsaW5nRGVmZXJyZWRSZXBhaW50RGVsYXkoZG91
YmxlIHApOwotICAgIC8vIE5lZ2F0aXZlIHZhbHVlIHdvdWxkIG1lYW4gdGhhdCBmaXJzdCBmZXcg
cmVwYWludHMgaGFwcGVuIHdpdGhvdXQgYSBkZWxheQotICAgIHN0YXRpYyB2b2lkIHNldFJlcGFp
bnRUaHJvdHRsaW5nbkluaXRpYWxEZWZlcnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcoZG91
YmxlIHApOwotICAgIC8vIFRoZSBkZWxheSBncm93cyBvbiBlYWNoIHJlcGFpbnQgdG8gdGhpcyBt
YXhpbXVtIHZhbHVlCi0gICAgc3RhdGljIHZvaWQgc2V0UmVwYWludFRocm90dGxpbmdNYXhEZWZl
cnJlZFJlcGFpbnREZWxheUR1cmluZ0xvYWRpbmcoZG91YmxlIHApOwotICAgIC8vIE9uIGVhY2gg
cmVwYWludCB0aGUgZGVsYXkgaW5jcmVzZXMgYnkgdGhpcyBhbW91bnQKLSAgICBzdGF0aWMgdm9p
ZCBzZXRSZXBhaW50VGhyb3R0bGluZ0RlZmVycmVkUmVwYWludERlbGF5SW5jcmVtZW50RHVyaW5n
TG9hZGluZyhkb3VibGUgcCk7Ci0KICAgICB2aXJ0dWFsIEludFBvaW50IGxhc3RLbm93bk1vdXNl
UG9zaXRpb24oKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNIYW5kbGluZ1do
ZWVsRXZlbnQoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHNob3VsZFNldEN1cnNvcigpIGNv
bnN0OwpAQCAtNTUyLDEyICs1MzcsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIG5v
dGlmeVBhZ2VUaGF0Q29udGVudEFyZWFXaWxsUGFpbnQoKSBjb25zdCBvdmVycmlkZTsKIAotICAg
IGJvb2wgc2hvdWxkVXNlTG9hZFRpbWVEZWZlcnJlZFJlcGFpbnREZWxheSgpIGNvbnN0OwotICAg
IHZvaWQgZGVmZXJyZWRSZXBhaW50VGltZXJGaXJlZChUaW1lcjxGcmFtZVZpZXc+Jik7Ci0gICAg
dm9pZCBkb0RlZmVycmVkUmVwYWludHMoKTsKLSAgICB2b2lkIHVwZGF0ZURlZmVycmVkUmVwYWlu
dERlbGF5QWZ0ZXJSZXBhaW50KCk7Ci0gICAgZG91YmxlIGFkanVzdGVkRGVmZXJyZWRSZXBhaW50
RGVsYXkoKSBjb25zdDsKLQogICAgIHZvaWQgZW5hYmxlU3BlY3VsYXRpdmVUaWxpbmdJZk5lZWRl
ZCgpOwogICAgIHZvaWQgc3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1lckZpcmVkKFRpbWVyPEZy
YW1lVmlldz4mKTsKIApAQCAtNjM3LDExICs2MTYsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9p
blByb2dyYW1tYXRpY1Njcm9sbDsKICAgICBib29sIG1fc2FmZVRvUHJvcGFnYXRlU2Nyb2xsVG9Q
YXJlbnQ7CiAKLSAgICB1bnNpZ25lZCBtX2RlZmVycmluZ1JlcGFpbnRzOwotICAgIHVuc2lnbmVk
IG1fcmVwYWludENvdW50OwotICAgIFZlY3RvcjxMYXlvdXRSZWN0PiBtX3JlcGFpbnRSZWN0czsK
LSAgICBUaW1lcjxGcmFtZVZpZXc+IG1fZGVmZXJyZWRSZXBhaW50VGltZXI7Ci0gICAgZG91Ymxl
IG1fZGVmZXJyZWRSZXBhaW50RGVsYXk7CiAgICAgZG91YmxlIG1fbGFzdFBhaW50VGltZTsKIAog
ICAgIGJvb2wgbV9pc1RyYWNraW5nUmVwYWludHM7IC8vIFVzZWQgZm9yIHRlc3RpbmcuCkBAIC02
OTgsMTEgKzY3Miw2IEBAIHByaXZhdGU6CiAKICAgICBMYXlvdXRNaWxlc3RvbmVzIG1fbWlsZXN0
b25lc1BlbmRpbmdQYWludDsKIAotICAgIHN0YXRpYyBkb3VibGUgc19ub3JtYWxEZWZlcnJlZFJl
cGFpbnREZWxheTsKLSAgICBzdGF0aWMgZG91YmxlIHNfaW5pdGlhbERlZmVycmVkUmVwYWludERl
bGF5RHVyaW5nTG9hZGluZzsKLSAgICBzdGF0aWMgZG91YmxlIHNfbWF4RGVmZXJyZWRSZXBhaW50
RGVsYXlEdXJpbmdMb2FkaW5nOwotICAgIHN0YXRpYyBkb3VibGUgc19kZWZlcnJlZFJlcGFpbnRE
ZWxheUluY3JlbWVudER1cmluZ0xvYWRpbmc7Ci0KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
dmlzdWFsQ2hhcmFjdGVyVGhyZXNob2xkID0gMjAwOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCB2aXN1YWxQaXhlbFRocmVzaG9sZCA9IDMyICogMzI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAJKHJldmlzaW9uIDE2MjgwNykKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTI5LDggKzky
OSw2IEBAIHZvaWQgUmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamUKICAgICBpZiAo
YmxvY2tSZXBhaW50TW9kZSA9PSBSZXBhaW50Tm90aGluZykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWVWaWV3KCkuYmVnaW5EZWZlcnJlZFJlcGFpbnRzKCk7Ci0KICAgICAvLyBIYXZlIGFu
eSBvZiB0aGUgb2xkIHNlbGVjdGVkIG9iamVjdHMgY2hhbmdlZCBjb21wYXJlZCB0byB0aGUgbmV3
IHNlbGVjdGlvbj8KICAgICBmb3IgKFNlbGVjdGVkT2JqZWN0TWFwOjppdGVyYXRvciBpID0gb2xk
U2VsZWN0ZWRPYmplY3RzLmJlZ2luKCk7IGkgIT0gb2xkT2JqZWN0c0VuZDsgKytpKSB7CiAgICAg
ICAgIFJlbmRlck9iamVjdCogb2JqID0gaS0+a2V5OwpAQCAtOTcxLDggKzk2OSw2IEBAIHZvaWQg
UmVuZGVyVmlldzo6c2V0U2VsZWN0aW9uKFJlbmRlck9iamUKICAgICBTZWxlY3RlZEJsb2NrTWFw
OjppdGVyYXRvciBuZXdCbG9ja3NFbmQgPSBuZXdTZWxlY3RlZEJsb2Nrcy5lbmQoKTsKICAgICBm
b3IgKFNlbGVjdGVkQmxvY2tNYXA6Oml0ZXJhdG9yIGkgPSBuZXdTZWxlY3RlZEJsb2Nrcy5iZWdp
bigpOyBpICE9IG5ld0Jsb2Nrc0VuZDsgKytpKQogICAgICAgICBpLT52YWx1ZS0+cmVwYWludCgp
OwotCi0gICAgZnJhbWVWaWV3KCkuZW5kRGVmZXJyZWRSZXBhaW50cygpOwogfQogCiB2b2lkIFJl
bmRlclZpZXc6OmdldFNlbGVjdGlvbihSZW5kZXJPYmplY3QqJiBzdGFydFJlbmRlcmVyLCBpbnQm
IHN0YXJ0T2Zmc2V0LCBSZW5kZXJPYmplY3QqJiBlbmRSZW5kZXJlciwgaW50JiBlbmRPZmZzZXQp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0JKHJl
dmlzaW9uIDE2MjgwNykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MjAsMTMgKzE0MjAsNiBAQCAtICh2b2lkKXZpZXdXaWxs
RHJhdwogICAgIGlmIChfcHJpdmF0ZS0+ZGF0YVNvdXJjZSAmJiBbc2VsZiBfaXNUb3BIVE1MVmll
d10pCiAgICAgICAgIFtzZWxmIF93ZWJfdXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vy
c2l2ZV07CiAKLSNpZiBQTEFURk9STShJT1MpCi0gICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSBj
b3JlKFtzZWxmIF9mcmFtZV0pKSB7Ci0gICAgICAgIGlmIChGcmFtZVZpZXcqIGNvcmVWaWV3ID0g
Y29yZUZyYW1lLT52aWV3KCkpCi0gICAgICAgICAgICBjb3JlVmlldy0+Zmx1c2hEZWZlcnJlZFJl
cGFpbnRzKCk7Ci0gICAgfQotI2VuZGlmCi0KICAgICBbc3VwZXIgdmlld1dpbGxEcmF3XTsKIH0K
IAo=
</data>
<flag name="review"
          id="246307"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>