<?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>53277</bug_id>
          
          <creation_ts>2011-01-27 18:16:17 -0800</creation_ts>
          <short_desc>Add basic rubber banding support</short_desc>
          <delta_ts>2011-01-28 12:18:10 -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>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</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>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>341217</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-27 18:16:17 -0800</bug_when>
    <thetext>Add basic rubber bandings support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341218</commentid>
    <comment_count>1</comment_count>
      <attachid>80393</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-27 18:18:07 -0800</bug_when>
    <thetext>Created attachment 80393
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341235</commentid>
    <comment_count>2</comment_count>
      <attachid>80393</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2011-01-27 18:39:54 -0800</bug_when>
    <thetext>Comment on attachment 80393
Patch

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

r=me with minor comments.

&gt; Source/WebCore/ChangeLog:5
&gt; +        Add basic rubber bandings support

s/bandings/banding/

&gt; Source/WebCore/page/EventHandler.cpp:2047
&gt; +    // that if a frame gets a gesture begin gesture, it gets the corrisponding

s/corrisponding/corresponding/

&gt; Source/WebCore/platform/mac/ScrollAnimatorMac.h:44
&gt; +#define SUPPORT_RUBBER_BANDING 1

This should probably be an ENABLE macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341536</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-01-28 11:06:06 -0800</bug_when>
    <thetext>Landed in r76956.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>341624</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-01-28 12:18:10 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/76956 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80393</attachid>
            <date>2011-01-27 18:18:07 -0800</date>
            <delta_ts>2011-01-27 18:39:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>patchForUpload.diff</filename>
            <type>text/plain</type>
            <size>32402</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc2ODg5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDEtMjcgIFNhbSBXZWlu
aWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGQgYmFzaWMgcnViYmVyIGJhbmRpbmdzIHN1cHBvcnQKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzgyMTk0Mjk+CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD01MzI3NworCisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVHZXN0dXJlRXZlbnQpOgor
ICAgICAgICBQYXNzIGdlc3R1cmUgZXZlbnRzIHRvIHRoZSBGcmFtZVZpZXcuCisKKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvcjo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxB
bmltYXRvci5oOgorICAgICAgICBBZGQgc3R1YmJlZCBvdXQgaW1wbGVtZW50YXRpb24uCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bFZpZXc6OlNjcm9sbFZpZXcpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6b3Zlcmhh
bmdBbW91bnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6d2hlZWxFdmVudCk6Cisg
ICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5oOgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bGFibGVBcmVhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpTY3JvbGxh
YmxlQXJlYSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxhYmxlQXJlYTo6aGFuZGxlR2VzdHVy
ZUV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYWJsZUFyZWE6OmNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGFibGVBcmVhOjpzZXRDb25zdHJhaW5zU2Nyb2xs
aW5nVG9Db250ZW50RWRnZSk6CisgICAgICAgIE1vdmUgY29uc3RyYWlucyBzY3JvbGxpbmcgYml0
IHRvIFNjcm9sbGFibGVBcmVhIGZyb20gU2Nyb2xsVmlldy4KKworICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYWJsZUFyZWE6OmNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxh
YmxlQXJlYTo6b3ZlcmhhbmdBbW91bnQpOgorICAgICAgICBBZGQgYWRkaXRpb25hbCB2aXJ0dWFs
IGZ1bmN0aW9ucyBmb3IgaW5mb3JtYXRpb24gbmVlZGVkIGJ5IHRoZSBhbmltYXRvci4KKworICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5oOgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpTY3JvbGxBbmltYXRvck1hYyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxB
bmltYXRvck1hYzo6aW1tZWRpYXRlU2Nyb2xsQnlEZWx0YVgpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFZKToKKyAgICAgICAgKFdl
YkNvcmU6OmVsYXN0aWNEZWx0YUZvclRpbWVEZWx0YSk6CisgICAgICAgIChXZWJDb3JlOjplbGFz
dGljRGVsdGFGb3JSZWJvdW5kRGVsdGEpOgorICAgICAgICAoV2ViQ29yZTo6cmVib3VuZERlbHRh
Rm9yRWxhc3RpY0RlbHRhKToKKyAgICAgICAgKFdlYkNvcmU6OnNjcm9sbFdoZWVsTXVsdGlwbGll
cik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hlZWxFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2VzdHVyZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpwaW5uZWRJbkRpcmVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6YWxsb3dzVmVydGlj
YWxTdHJldGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjphbGxv
d3NIb3Jpem9udGFsU3RyZXRjaGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRv
ck1hYzo6c21vb3RoU2Nyb2xsV2l0aEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFu
aW1hdG9yTWFjOjpiZWdpblNjcm9sbEdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmVuZFNjcm9sbEdlc3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OnNuYXBSdWJiZXJCYW5kKToKKyAgICAgICAgKFdlYkNvcmU6OnJvdW5kVG93
YXJkWmVybyk6CisgICAgICAgIChXZWJDb3JlOjpyb3VuZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpzbmFwUnViYmVyQmFuZFRp
bWVyRmlyZWQpOgorICAgICAgICBJbXBsZW1lbnQgYmFzaWMgcnViYmVyIGJhbmRpbmcuCisKIDIw
MTEtMDEtMjcgIExlbyBZYW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6ZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5jcHAJKHJldmlzaW9uIDc2ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQwLDkgKzIwNDAsMTggQEAgdm9pZCBF
dmVudEhhbmRsZXI6OmRlZmF1bHRXaGVlbEV2ZW50SGFuZAogfQogCiAjaWYgRU5BQkxFKEdFU1RV
UkVfRVZFTlRTKQotYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQ
bGF0Zm9ybUdlc3R1cmVFdmVudCYpCitib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlR2VzdHVyZUV2
ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCiB7Ci0gICAgLy8g
RklYTUU6IEhhbmRsZSBnZXN0dXJlIGV2ZW50cy4KKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQg
aGl0IHRlc3QgYW5kIGdvIHRvIHRoZSBjb3JyZWN0IHN1YmZyYW1lIHJhdGhlciB0aGFuIAorICAg
IC8vIGFsd2F5cyBzZW5kaW5nIGdlc3R1cmVzIHRvIHRoZSBtYWluIGZyYW1lIG9ubHkuIFdlIHNo
b3VsZCBhbHNvIGVuc3VyZQorICAgIC8vIHRoYXQgaWYgYSBmcmFtZSBnZXRzIGEgZ2VzdHVyZSBi
ZWdpbiBnZXN0dXJlLCBpdCBnZXRzIHRoZSBjb3JyaXNwb25kaW5nCisgICAgLy8gZW5kIGdlc3R1
cmUgYXMgd2VsbC4KKworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsKKyAg
ICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZpZXctPmhhbmRsZUdl
c3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOwogICAgIHJldHVybiB0cnVlOwogfQogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCShyZXZpc2lv
biA3NjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMywxMiBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjpo
YW5kbGVXaGVlbEV2ZW50KFBsCiAgICAgfQogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQordm9pZCBTY3JvbGxBbmltYXRvcjo6aGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0IFBsYXRmb3Jt
R2VzdHVyZUV2ZW50JikKK3sKK30KKyNlbmRpZgorCiBGbG9hdFBvaW50IFNjcm9sbEFuaW1hdG9y
OjpjdXJyZW50UG9zaXRpb24oKSBjb25zdAogewogICAgIHJldHVybiBGbG9hdFBvaW50KG1fY3Vy
cmVudFBvc1gsIG1fY3VycmVudFBvc1kpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxBbmltYXRvci5oCShyZXZpc2lvbiA3NjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1Njcm9sbEFuaW1hdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDEwIEBAIGNs
YXNzIEZsb2F0UG9pbnQ7CiBjbGFzcyBQbGF0Zm9ybVdoZWVsRXZlbnQ7CiBjbGFzcyBTY3JvbGxh
YmxlQXJlYTsKIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKK2NsYXNzIFBsYXRmb3JtR2Vz
dHVyZUV2ZW50OworI2VuZGlmCisKIGNsYXNzIFNjcm9sbEFuaW1hdG9yIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxBbmltYXRvcj4gY3JlYXRlKFNjcm9sbGFibGVBcmVh
Kik7CkBAIC01NSw2ICs1OSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2Nyb2xsVG9P
ZmZzZXRXaXRob3V0QW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwg
dm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYpOworI2lmIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlR2VzdHVyZUV2ZW50KGNvbnN0
IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAgIEZsb2F0UG9pbnQgY3VycmVu
dFBvc2l0aW9uKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCShyZXZpc2lvbiA3NjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bFZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw2IEBAIFNjcm9sbFZpZXc6OlNj
cm9sbFZpZXcoKQogICAgICwgbV9wYWludHNFbnRpcmVDb250ZW50cyhmYWxzZSkKICAgICAsIG1f
Y2xpcHNSZXBhaW50cyh0cnVlKQogICAgICwgbV9kZWxlZ2F0ZXNTY3JvbGxpbmcoZmFsc2UpCi0g
ICAgLCBtX2NvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKHRydWUpCiB7CiAgICAgcGxh
dGZvcm1Jbml0KCk7CiB9CkBAIC0zOTksNiArMzk4LDIyIEBAIGJvb2wgU2Nyb2xsVmlldzo6bG9n
aWNhbFNjcm9sbChTY3JvbGxMb2cKICAgICByZXR1cm4gc2Nyb2xsKGxvZ2ljYWxUb1BoeXNpY2Fs
KGRpcmVjdGlvbiwgaXNWZXJ0aWNhbERvY3VtZW50KCksIGlzRmxpcHBlZERvY3VtZW50KCkpLCBn
cmFudWxhcml0eSk7CiB9CiAKK0ludFNpemUgU2Nyb2xsVmlldzo6b3ZlcmhhbmdBbW91bnQoKSBj
b25zdAoreworICAgIEludFNpemUgc3RyZXRjaDsKKyAgICBpZiAoc2Nyb2xsWSgpIDwgMCkKKyAg
ICAgICAgc3RyZXRjaC5zZXRIZWlnaHQoc2Nyb2xsWSgpKTsKKyAgICBlbHNlIGlmIChzY3JvbGxZ
KCkgPiBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpCisg
ICAgICAgIHN0cmV0Y2guc2V0SGVpZ2h0KHNjcm9sbFkoKSAtIChjb250ZW50c0hlaWdodCgpIC0g
dmlzaWJsZUNvbnRlbnRSZWN0KCkuaGVpZ2h0KCkpKTsKKworICAgIGlmIChzY3JvbGxYKCkgPCAw
KQorICAgICAgICBzdHJldGNoLnNldFdpZHRoKHNjcm9sbFgoKSk7CisgICAgZWxzZSBpZiAoc2Ny
b2xsWCgpID4gY29udGVudHNXaWR0aCgpIC0gdmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKSkK
KyAgICAgICAgc3RyZXRjaC5zZXRXaWR0aChzY3JvbGxYKCkgLSAoY29udGVudHNXaWR0aCgpIC0g
dmlzaWJsZUNvbnRlbnRSZWN0KCkud2lkdGgoKSkpOworCisgICAgcmV0dXJuIHN0cmV0Y2g7Cit9
CisKIHZvaWQgU2Nyb2xsVmlldzo6d2luZG93UmVzaXplclJlY3RDaGFuZ2VkKCkKIHsKICAgICBp
ZiAocGxhdGZvcm1XaWRnZXQoKSkKQEAgLTczOCw2ICs3NTMsMTYgQEAgdm9pZCBTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KFBsYXRmb3JtV2hlZQogICAgIFNjcm9sbGFibGVBcmVhOjpoYW5kbGVXaGVl
bEV2ZW50KGUpOwogfQogCisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQordm9pZCBTY3JvbGxW
aWV3OjpnZXN0dXJlRXZlbnQoY29uc3QgUGxhdGZvcm1HZXN0dXJlRXZlbnQmIGdlc3R1cmVFdmVu
dCkKK3sKKyAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U2Nyb2xsYWJsZUFyZWE6OmhhbmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOworfQorI2Vu
ZGlmCisKIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1Jl
Y3QpCiB7CiAgICAgSW50UmVjdCBvbGRSZWN0ID0gZnJhbWVSZWN0KCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5oCShyZXZpc2lvbiA3NjgzNykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBA
QCBjbGFzcyB3eFNjcm9sbFdpbkV2ZW50OwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBI
b3N0V2luZG93OwotY2xhc3MgUGxhdGZvcm1XaGVlbEV2ZW50OwogY2xhc3MgU2Nyb2xsYmFyOwog
CiBjbGFzcyBTY3JvbGxWaWV3IDogcHVibGljIFdpZGdldCwgcHVibGljIFNjcm9sbGFibGVBcmVh
IHsKQEAgLTE2MywxMCArMTYyLDYgQEAgcHVibGljOgogICAgIGludCBjb250ZW50c0hlaWdodCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpOyB9CiAgICAgdmlydHVhbCB2
b2lkIHNldENvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJik7CiAKLSAgICAvLyBGdW5jdGlvbnMg
Zm9yIGNvbnRyb2xsaW5nIGlmIHlvdSBjYW4gc2Nyb2xsIHBhc3QgdGhlIGVuZCBvZiB0aGUgZG9j
dW1lbnQuCi0gICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2U7IH0KLSAgICB2b2lk
IHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJvb2wgY29uc3RyYWluc1Njcm9s
bGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSA9
IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9Ci0KICAgICAvLyBGdW5jdGlvbnMg
Zm9yIHF1ZXJ5aW5nIHRoZSBjdXJyZW50IHNjcm9sbGVkIHBvc2l0aW9uIChib3RoIGFzIGEgcG9p
bnQsIGEgc2l6ZSwgb3IgYXMgaW5kaXZpZHVhbCBYIGFuZCBZIHZhbHVlcykuCiAgICAgSW50UG9p
bnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiB2aXNpYmxlQ29udGVudFJlY3QoKS5s
b2NhdGlvbigpOyB9CiAgICAgSW50U2l6ZSBzY3JvbGxPZmZzZXQoKSBjb25zdCB7IHJldHVybiB2
aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIC0gSW50UG9pbnQoKTsgfSAvLyBHZXRzIHRo
ZSBzY3JvbGxlZCBwb3NpdGlvbiBhcyBhbiBJbnRTaXplLiBDb252ZW5pZW50IGZvciBhZGRpbmcg
dG8gb3RoZXIgc2l6ZXMuCkBAIC0xNzYsNyArMTcxLDkgQEAgcHVibGljOgogICAgIEludFBvaW50
IGFkanVzdFNjcm9sbFBvc2l0aW9uV2l0aGluUmFuZ2UoY29uc3QgSW50UG9pbnQmKSBjb25zdDsg
CiAgICAgaW50IHNjcm9sbFgoKSBjb25zdCB7IHJldHVybiBzY3JvbGxQb3NpdGlvbigpLngoKTsg
fQogICAgIGludCBzY3JvbGxZKCkgY29uc3QgeyByZXR1cm4gc2Nyb2xsUG9zaXRpb24oKS55KCk7
IH0KLSAgICAKKworICAgIEludFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdDsKKwogICAgIC8v
IEZ1bmN0aW9ucyBmb3Igc2Nyb2xsaW5nIHRoZSB2aWV3LgogICAgIHZvaWQgc2V0U2Nyb2xsUG9z
aXRpb24oY29uc3QgSW50UG9pbnQmKTsKICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0IEludFNpemUm
IHMpIHsgcmV0dXJuIHNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbFBvc2l0aW9uKCkgKyBzKTsgfQpA
QCAtMjMyLDYgKzIyOSw5IEBAIHB1YmxpYzoKICAgICAvLyBPbiBNYWMgdGhlIHVuZGVybHlpbmcg
TlNTY3JvbGxWaWV3IGp1c3QgZG9lcyB0aGUgc2Nyb2xsaW5nLCBidXQgb24gb3RoZXIgcGxhdGZv
cm1zCiAgICAgLy8gKGxpa2UgV2luZG93cyksIHdlIG5lZWQgdGhpcyBmdW5jdGlvbiBpbiBvcmRl
ciB0byBkbyB0aGUgc2Nyb2xsIG91cnNlbHZlcy4KICAgICB2b2lkIHdoZWVsRXZlbnQoUGxhdGZv
cm1XaGVlbEV2ZW50Jik7CisjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRTKQorICAgIHZvaWQgZ2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50Jik7CisjZW5kaWYKIAogICAgIElu
dFBvaW50IGNvbnZlcnRDaGlsZFRvU2VsZihjb25zdCBXaWRnZXQqIGNoaWxkLCBjb25zdCBJbnRQ
b2ludCYgcG9pbnQpIGNvbnN0CiAgICAgewpAQCAtMzM5LDggKzMzOSw2IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2NsaXBzUmVwYWludHM7CiAgICAgYm9vbCBtX2RlbGVnYXRlc1Njcm9sbGluZzsK
IAotICAgIGJvb2wgbV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsKLQogICAgIC8v
IFRoZXJlIGFyZSA4IHBvc3NpYmxlIGNvbWJpbmF0aW9ucyBvZiB3cml0aW5nIG1vZGUgYW5kIGRp
cmVjdGlvbi4gIFNjcm9sbCBvcmlnaW4gd2lsbCBiZSBub24temVybyBpbiB0aGUgeCBvciB5IGF4
aXMKICAgICAvLyBpZiB0aGVyZSBpcyBhbnkgcmV2ZXJzZWQgZGlyZWN0aW9uIG9yIHdyaXRpbmct
bW9kZS4gIFRoZSBjb21iaW5hdGlvbnMgYXJlOgogICAgIC8vIHdyaXRpbmctbW9kZSAvIGRpcmVj
dGlvbiAgICAgc2Nyb2xsT3JpZ2luLngoKSBzZXQgICAgc2Nyb2xsT3JpZ2luLnkoKSBzZXQKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5jcHAJKHJldmlzaW9u
IDc2ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2Ny
b2xsYWJsZUFyZWE6OlNjcm9sbGFibGVBcmVhKCkKICAgICA6IG1fc2Nyb2xsQW5pbWF0b3IoU2Ny
b2xsQW5pbWF0b3I6OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fY29uc3RyYWluc1Njcm9sbGluZ1Rv
Q29udGVudEVkZ2UodHJ1ZSkKIHsKIH0KIApAQCAtMTEzLDYgKzExNCwxMyBAQCB2b2lkIFNjcm9s
bGFibGVBcmVhOjpoYW5kbGVXaGVlbEV2ZW50KFBsCiAgICAgbV9zY3JvbGxBbmltYXRvci0+aGFu
ZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKIH0KIAorI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5U
UykKK3ZvaWQgU2Nyb2xsYWJsZUFyZWE6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9y
bUdlc3R1cmVFdmVudCYgZ2VzdHVyZUV2ZW50KQoreworICAgIG1fc2Nyb2xsQW5pbWF0b3ItPmhh
bmRsZUdlc3R1cmVFdmVudChnZXN0dXJlRXZlbnQpOworfQorI2VuZGlmCisKIHZvaWQgU2Nyb2xs
YWJsZUFyZWE6OnNldFNjcm9sbE9mZnNldEZyb21BbmltYXRpb24oY29uc3QgSW50UG9pbnQmIG9m
ZnNldCkKIHsKICAgICAvLyBUZWxsIHRoZSBkZXJpdmVkIGNsYXNzIHRvIHNjcm9sbCBpdHMgY29u
dGVudHMuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxhYmxlQXJlYS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGFibGVBcmVhLmgJKHJl
dmlzaW9uIDc2ODM3KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYWJsZUFyZWEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsNiArMzYsMTAgQEAgY2xhc3MgRmxvYXRQb2ludDsKIGNs
YXNzIFBsYXRmb3JtV2hlZWxFdmVudDsKIGNsYXNzIFNjcm9sbEFuaW1hdG9yOwogCisjaWYgRU5B
QkxFKEdFU1RVUkVfRVZFTlRTKQorY2xhc3MgUGxhdGZvcm1HZXN0dXJlRXZlbnQ7CisjZW5kaWYK
KwogY2xhc3MgU2Nyb2xsYWJsZUFyZWEgewogcHVibGljOgogICAgIFNjcm9sbGFibGVBcmVhKCk7
CkBAIC00OCw2ICs1MiwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzY3JvbGxUb1lPZmZzZXRXaXRo
b3V0QW5pbWF0aW9uKGZsb2F0IHgpOwogCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KFBsYXRm
b3JtV2hlZWxFdmVudCYpOworI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKKyAgICB2b2lkIGhh
bmRsZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCisK
KyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIGlmIHlvdSBjYW4gc2Nyb2xsIHBhc3Qg
dGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuCisgICAgYm9vbCBjb25zdHJhaW5zU2Nyb2xsaW5nVG9D
b250ZW50RWRnZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVu
dEVkZ2U7IH0KKyAgICB2b2lkIHNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGJv
b2wgY29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UpIHsgbV9jb25zdHJhaW5zU2Nyb2xs
aW5nVG9Db250ZW50RWRnZSA9IGNvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlOyB9CiAK
ICAgICB2aXJ0dWFsIGludCBzY3JvbGxTaXplKFNjcm9sbGJhck9yaWVudGF0aW9uKSBjb25zdCA9
IDA7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsUG9zaXRpb24oU2Nyb2xsYmFyKikgY29uc3QgPSAw
OwpAQCAtOTIsMTIgKzEwMywxNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgdmlzaWJsZUhl
aWdodCgpIGNvbnN0IHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IHJldHVybiAwOyB9CiAgICAgdmly
dHVhbCBpbnQgdmlzaWJsZVdpZHRoKCkgY29uc3QgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgcmV0
dXJuIDA7IH0KIAorICAgIHZpcnR1YWwgSW50U2l6ZSBjb250ZW50c1NpemUoKSBjb25zdCB7IEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1cm4gSW50U2l6ZSgpOyB9CisKKyAgICB2aXJ0dWFsIElu
dFNpemUgb3ZlcmhhbmdBbW91bnQoKSBjb25zdCB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyByZXR1
cm4gSW50U2l6ZSgpOyB9CisKIHByaXZhdGU6CiAgICAgLy8gTk9URTogT25seSBjYWxsZWQgZnJv
bSB0aGUgU2Nyb2xsQW5pbWF0b3IuCiAgICAgZnJpZW5kIGNsYXNzIFNjcm9sbEFuaW1hdG9yOwog
ICAgIHZvaWQgc2V0U2Nyb2xsT2Zmc2V0RnJvbUFuaW1hdGlvbihjb25zdCBJbnRQb2ludCYpOwog
CiAgICAgT3duUHRyPFNjcm9sbEFuaW1hdG9yPiBtX3Njcm9sbEFuaW1hdG9yOworICAgIGJvb2wg
bV9jb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxB
bmltYXRvck1hYy5oCShyZXZpc2lvbiA3NjgzNykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JvbGxBbmltYXRvck1hYy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCw3ICsyOCwxMCBAQAog
CiAjaWYgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCiAKKyNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CisjaW5jbHVkZSAiRmxvYXRTaXplLmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKKyNp
bmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogI2lmZGVmIF9f
T0JKQ19fCkBAIC0zNyw2ICs0MCwxMCBAQAogY2xhc3MgU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVs
ZWdhdGU7CiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVm
aW5lZChCVUlMRElOR19PTl9MRU9QQVJEKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9TTk9XX0xF
T1BBUkQpCisjZGVmaW5lIFNVUFBPUlRfUlVCQkVSX0JBTkRJTkcgMQorI2VuZGlmCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgU2Nyb2xsQW5pbWF0b3JNYWMgOiBwdWJsaWMgU2Nyb2xs
QW5pbWF0b3IgewpAQCAtNDcsMTIgKzU0LDQ2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3Rl
cCwgZmxvYXQgbXVsdGlwbGllcik7CiAgICAgdmlydHVhbCB2b2lkIHNjcm9sbFRvT2Zmc2V0V2l0
aG91dEFuaW1hdGlvbihjb25zdCBGbG9hdFBvaW50Jik7CiAKLSAgICAvLyBDYWxsZWQgYnkgdGhl
IFNjcm9sbEFuaW1hdGlvbkhlbHBlckRlbGVnYXRlLgorI2lmZGVmIFNVUFBPUlRfUlVCQkVSX0JB
TkRJTkcKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZl
bnQmKTsKKyNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUdlc3R1cmVFdmVudChjb25zdCBQbGF0Zm9ybUdlc3R1cmVFdmVudCYpOworI2VuZGlmCisjZW5k
aWYKKwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsVG9Qb2ludChjb25zdCBGbG9hdFBvaW50JiBu
ZXdQb3NpdGlvbik7CisgICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxCeURlbHRhWChmbG9hdCBkZWx0
YVgpOworICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlEZWx0YVkoZmxvYXQgZGVsdGFZKTsKIAog
cHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ+IG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyOwogICAg
IFJldGFpblB0cjxTY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZT4gbV9zY3JvbGxBbmltYXRp
b25IZWxwZXJEZWxlZ2F0ZTsKKworI2lmZGVmIFNVUFBPUlRfUlVCQkVSX0JBTkRJTkcKKyAgICBi
b29sIGFsbG93c1ZlcmljYWxTdHJldGNoaW5nKCkgY29uc3Q7CisgICAgYm9vbCBhbGxvd3NIb3Jp
em9udGFsU3RyZXRjaGluZygpIGNvbnN0OworICAgIGJvb2wgcGlubmVkSW5EaXJlY3Rpb24oZmxv
YXQgZGVsdGFYLCBmbG9hdCBkZWx0YVkpOworICAgIHZvaWQgc25hcFJ1YmJlckJhbmQoKTsKKyAg
ICB2b2lkIHNuYXBSdWJiZXJCYW5kVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck1hYz4q
KTsKKyAgICB2b2lkIHNtb290aFNjcm9sbFdpdGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmKTsK
KyAgICB2b2lkIGJlZ2luU2Nyb2xsR2VzdHVyZSgpOworICAgIHZvaWQgZW5kU2Nyb2xsR2VzdHVy
ZSgpOworCisgICAgYm9vbCBtX2luU2Nyb2xsR2VzdHVyZTsKKyAgICBib29sIG1fbW9tZW50dW1T
Y3JvbGxJblByb2dyZXNzOworICAgIGJvb2wgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHM7CisgICAg
Q0ZUaW1lSW50ZXJ2YWwgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXA7CisgICAgRmxvYXRT
aXplIG1fb3ZlcmZsb3dTY3JvbGxEZWx0YTsKKyAgICBGbG9hdFNpemUgbV9zdHJldGNoU2Nyb2xs
Rm9yY2U7CisgICAgRmxvYXRTaXplIG1fbW9tZW50dW1WZWxvY2l0eTsKKworICAgIC8vIFJ1YmJl
ciBiYW5kIHN0YXRlLgorICAgIENGVGltZUludGVydmFsIG1fc3RhcnRUaW1lOworICAgIEZsb2F0
U2l6ZSBtX3N0YXJ0U3RyZXRjaDsKKyAgICBGbG9hdFBvaW50IG1fb3JpZ09yaWdpbjsKKyAgICBG
bG9hdFNpemUgbV9vcmlnVmVsb2NpdHk7CisgICAgVGltZXI8U2Nyb2xsQW5pbWF0b3JNYWM+IG1f
c25hcFJ1YmJlckJhbmRUaW1lcjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5tbQkocmV2aXNpb24gNzY4MzcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2Nyb2xsQW5pbWF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNs
dWRlICJTY3JvbGxBbmltYXRvck1hYy5oIgogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgorI2lu
Y2x1ZGUgIlBsYXRmb3JtV2hlZWxFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtR2VzdHVyZUV2
ZW50LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCkBAIC0xMjIsNiArMTI0LDcgQEAgLSAodm9pZClfcmVjdXJzaXZlUmVjb21wdXRl
VG9vbFRpcHMKIAogQGVuZAogCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0cjxT
Y3JvbGxBbmltYXRvcj4gU2Nyb2xsQW5pbWF0b3I6OmNyZWF0ZShTY3JvbGxhYmxlQXJlYSogc2Ny
b2xsYWJsZUFyZWEpCkBAIC0xMzEsNiArMTM0LDE0IEBAIFBhc3NPd25QdHI8U2Nyb2xsQW5pbWF0
b3I+IFNjcm9sbEFuaW1hdG8KIAogU2Nyb2xsQW5pbWF0b3JNYWM6OlNjcm9sbEFuaW1hdG9yTWFj
KFNjcm9sbGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSkKICAgICA6IFNjcm9sbEFuaW1hdG9yKHNj
cm9sbGFibGVBcmVhKQorI2lmZGVmIFNVUFBPUlRfUlVCQkVSX0JBTkRJTkcKKyAgICAsIG1faW5T
Y3JvbGxHZXN0dXJlKGZhbHNlKQorICAgICwgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MoZmFs
c2UpCisgICAgLCBtX2lnbm9yZU1vbWVudHVtU2Nyb2xscyhmYWxzZSkKKyAgICAsIG1fbGFzdE1v
bWVtdHVtU2Nyb2xsVGltZXN0YW1wKDApCisgICAgLCBtX3N0YXJ0VGltZSgwKQorICAgICwgbV9z
bmFwUnViYmVyQmFuZFRpbWVyKHRoaXMsICZTY3JvbGxBbmltYXRvck1hYzo6c25hcFJ1YmJlckJh
bmRUaW1lckZpcmVkKQorI2VuZGlmCiB7CiAgICAgbV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxl
Z2F0ZS5hZG9wdE5TKFtbU2Nyb2xsQW5pbWF0aW9uSGVscGVyRGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoU2Nyb2xsQW5pbWF0b3I6dGhpc10pOwogICAgIG1fc2Nyb2xsQW5pbWF0aW9uSGVscGVyLmFk
b3B0TlMoW1tOU0NsYXNzRnJvbVN0cmluZyhAIk5TU2Nyb2xsQW5pbWF0aW9uSGVscGVyIikgYWxs
b2NdIGluaXRXaXRoRGVsZWdhdGU6bV9zY3JvbGxBbmltYXRpb25IZWxwZXJEZWxlZ2F0ZS5nZXQo
KV0pOwpAQCAtMTc3LDYgKzE4OCw0MDggQEAgdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aW1tZWRp
YXRlU2Nyb2xsVAogICAgIG5vdGl0eVBvc2l0aW9uQ2hhbmdlZCgpOwogfQogCit2b2lkIFNjcm9s
bEFuaW1hdG9yTWFjOjppbW1lZGlhdGVTY3JvbGxCeURlbHRhWChmbG9hdCBkZWx0YVgpCit7Cisg
ICAgbV9jdXJyZW50UG9zWCArPSBkZWx0YVg7CisgICAgbm90aXR5UG9zaXRpb25DaGFuZ2VkKCk7
Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OmltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFZKGZs
b2F0IGRlbHRhWSkKK3sKKyAgICBtX2N1cnJlbnRQb3NZICs9IGRlbHRhWTsKKyAgICBub3RpdHlQ
b3NpdGlvbkNoYW5nZWQoKTsKK30KKworI2lmZGVmIFNVUFBPUlRfUlVCQkVSX0JBTkRJTkcKKwor
c3RhdGljIGNvbnN0IGRvdWJsZSBzY3JvbGxWZWxvY2l0eVplcm9pbmdUaW1lb3V0ID0gMC4xMDsK
K3N0YXRpYyBjb25zdCBkb3VibGUgcnViYmVyYmFuZFN0aWZmbmVzcyA9IDIwLjA7CitzdGF0aWMg
Y29uc3QgZG91YmxlIHJ1YmJlcmJhbmREaXJlY3Rpb25Mb2NrU3RyZXRjaFJhdGlvID0gMS4wOwor
c3RhdGljIGNvbnN0IGRvdWJsZSBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVkRGVsdGFCZWZvcmVT
dHJldGNoID0gMTAuMDsKK3N0YXRpYyBjb25zdCBkb3VibGUgcnViYmVyYmFuZEFtcGxpdHVkZSA9
IDAuMzE7CitzdGF0aWMgY29uc3QgZG91YmxlIHJ1YmJlcmJhbmRQZXJpb2QgPSAxLjY7CisKK3N0
YXRpYyBmbG9hdCBlbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEoZmxvYXQgaW5pdGlhbFBvc2l0aW9u
LCBmbG9hdCBpbml0aWFsVmVsb2NpdHksIGZsb2F0IGVsYXBzZWRUaW1lKQoreworICAgIGZsb2F0
IGFtcGxpdHVkZSA9IHJ1YmJlcmJhbmRBbXBsaXR1ZGU7CisgICAgZmxvYXQgcGVyaW9kID0gcnVi
YmVyYmFuZFBlcmlvZDsKKyAgICBmbG9hdCBjcml0aWNhbERhbXBlbmluZ0ZhY3RvciA9IGV4cCgo
LWVsYXBzZWRUaW1lICogcnViYmVyYmFuZFN0aWZmbmVzcykgLyBwZXJpb2QpOworICAgICAgICAg
ICAgIAorICAgIHJldHVybiAoaW5pdGlhbFBvc2l0aW9uICsgKC1pbml0aWFsVmVsb2NpdHkgKiBl
bGFwc2VkVGltZSAqIGFtcGxpdHVkZSkpICogY3JpdGljYWxEYW1wZW5pbmdGYWN0b3I7Cit9CisK
K3N0YXRpYyBmbG9hdCBlbGFzdGljRGVsdGFGb3JSZWJvdW5kRGVsdGEoZmxvYXQgZGVsdGEpCit7
CisgICAgZmxvYXQgc3RpZmZuZXNzID0gc3RkOjptYXgocnViYmVyYmFuZFN0aWZmbmVzcywgMS4w
KTsKKyAgICByZXR1cm4gZGVsdGEgLyBzdGlmZm5lc3M7Cit9CisKK3N0YXRpYyBmbG9hdCByZWJv
dW5kRGVsdGFGb3JFbGFzdGljRGVsdGEoZmxvYXQgZGVsdGEpCit7CisgICAgcmV0dXJuIGRlbHRh
ICogcnViYmVyYmFuZFN0aWZmbmVzczsKK30KKworc3RhdGljIGZsb2F0IHNjcm9sbFdoZWVsTXVs
dGlwbGllcigpCit7CisgICAgc3RhdGljIGZsb2F0IG11bHRpcGxpZXIgPSAtMS4wOworICAgIGlm
IChtdWx0aXBsaWVyIDwgMCkgeworICAgICAgICBtdWx0aXBsaWVyID0gW1tOU1VzZXJEZWZhdWx0
cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gZmxvYXRGb3JLZXk6QCJOU1Njcm9sbFdoZWVsTXVsdGlw
bGllciJdOworICAgICAgICBpZiAobXVsdGlwbGllciA8PSAwKQorICAgICAgICAgICAgbXVsdGlw
bGllciA9IDE7CisgICAgfQorICAgIHJldHVybiBtdWx0aXBsaWVyOworfQorCit2b2lkIFNjcm9s
bEFuaW1hdG9yTWFjOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlZWxF
dmVudCkKK3sKKyAgICBpZiAoIXdoZWVsRXZlbnQuaGFzUHJlY2lzZVNjcm9sbGluZ0RlbHRhcygp
KSB7CisgICAgICAgIFNjcm9sbEFuaW1hdG9yOjpoYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hlZWxFdmVudC5hY2NlcHQoKTsKKwor
ICAgIGJvb2wgaXNNb21ldHVtU2Nyb2xsRXZlbnQgPSAod2hlZWxFdmVudC5waGFzZSgpICE9IFBs
YXRmb3JtV2hlZWxFdmVudFBoYXNlTm9uZSk7CisgICAgaWYgKG1faWdub3JlTW9tZW50dW1TY3Jv
bGxzICYmIChpc01vbWV0dW1TY3JvbGxFdmVudCB8fCBtX3NuYXBSdWJiZXJCYW5kVGltZXIuaXNB
Y3RpdmUoKSkpIHsKKyAgICAgICAgaWYgKHdoZWVsRXZlbnQucGhhc2UoKSA9PSBQbGF0Zm9ybVdo
ZWVsRXZlbnRQaGFzZUVuZGVkKQorICAgICAgICAgICAgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMg
PSBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNtb290aFNjcm9sbFdpdGhF
dmVudCh3aGVlbEV2ZW50KTsKK30KKwordm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlR2Vz
dHVyZUV2ZW50KGNvbnN0IFBsYXRmb3JtR2VzdHVyZUV2ZW50JiBnZXN0dXJlRXZlbnQpCit7Cisg
ICAgaWYgKGdlc3R1cmVFdmVudC50eXBlKCkgPT0gUGxhdGZvcm1HZXN0dXJlRXZlbnQ6OlNjcm9s
bEJlZ2luVHlwZSkKKyAgICAgICAgYmVnaW5TY3JvbGxHZXN0dXJlKCk7CisgICAgZWxzZQorICAg
ICAgICBlbmRTY3JvbGxHZXN0dXJlKCk7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OnBp
bm5lZEluRGlyZWN0aW9uKGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZKQoreworICAgIEZsb2F0
U2l6ZSBsaW1pdERlbHRhOworICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRhWCkp
IHsKKyAgICAgICAgaWYgKGRlbHRhWSA8IDApIHsKKyAgICAgICAgICAgIC8vIFdlIGFyZSB0cnlp
bmcgdG8gc2Nyb2xsIHVwLiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVkIHRvIHRoZSB0b3AK
KyAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0SGVpZ2h0KG1fc2Nyb2xsYWJsZUFyZWEtPnZpc2li
bGVDb250ZW50UmVjdCgpLnkoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBX
ZSBhcmUgdHJ5aW5nIHRvIHNjcm9sbCBkb3duLiAgTWFrZSBzdXJlIHdlIGFyZSBub3QgcGlubmVk
IHRvIHRoZSBib3R0b20KKyAgICAgICAgICAgIGxpbWl0RGVsdGEuc2V0SGVpZ2h0KG1fc2Nyb2xs
YWJsZUFyZWEtPmNvbnRlbnRzU2l6ZSgpLmhlaWdodCgpIC0gbV9zY3JvbGxhYmxlQXJlYS0+dmlz
aWJsZUNvbnRlbnRSZWN0KCkuYm90dG9tKCkpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChk
ZWx0YVggIT0gMCkgeworICAgICAgICBpZiAoZGVsdGFYIDwgMCkgeworICAgICAgICAgICAgLy8g
V2UgYXJlIHRyeWluZyB0byBzY3JvbGwgbGVmdC4gIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IHBpbm5l
ZCB0byB0aGUgbGVmdAorICAgICAgICAgICAgbGltaXREZWx0YS5zZXRXaWR0aChtX3Njcm9sbGFi
bGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKS54KCkpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gV2UgYXJlIHRyeWluZyB0byBzY3JvbGwgcmlnaHQuICBNYWtlIHN1cmUgd2Ug
YXJlIG5vdCBwaW5uZWQgdG8gdGhlIHJpZ2h0CisgICAgICAgICAgICBsaW1pdERlbHRhLnNldFdp
ZHRoKG1fc2Nyb2xsYWJsZUFyZWEtPmNvbnRlbnRzU2l6ZSgpLndpZHRoKCkgLSBtX3Njcm9sbGFi
bGVBcmVhLT52aXNpYmxlQ29udGVudFJlY3QoKS5yaWdodCgpKTsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBpZiAoKGRlbHRhWCAhPSAwIHx8IGRlbHRhWSAhPSAwKSAmJiAobGltaXREZWx0
YS53aWR0aCgpIDwgMSAmJiBsaW1pdERlbHRhLmhlaWdodCgpIDwgMSkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6
YWxsb3dzVmVydGljYWxTdHJldGNoaW5nKCkgY29uc3QKK3sKKyAgICBTY3JvbGxiYXIqIGhTY3Jv
bGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBTY3Jv
bGxiYXIqIHZTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyKCk7
CisgICAgaWYgKCgodlNjcm9sbGVyICYmIHZTY3JvbGxlci0+ZW5hYmxlZCgpKSB8fCAoIWhTY3Jv
bGxlciB8fCAhaFNjcm9sbGVyLT5lbmFibGVkKCkpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hv
cml6b250YWxTdHJldGNoaW5nKCkgY29uc3QKK3sKKyAgICBTY3JvbGxiYXIqIGhTY3JvbGxlciA9
IG1fc2Nyb2xsYWJsZUFyZWEtPmhvcml6b250YWxTY3JvbGxiYXIoKTsKKyAgICBTY3JvbGxiYXIq
IHZTY3JvbGxlciA9IG1fc2Nyb2xsYWJsZUFyZWEtPnZlcnRpY2FsU2Nyb2xsYmFyKCk7CisgICAg
aWYgKCgoaFNjcm9sbGVyICYmIGhTY3JvbGxlci0+ZW5hYmxlZCgpKSB8fCAoIXZTY3JvbGxlciB8
fCAhdlNjcm9sbGVyLT5lbmFibGVkKCkpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNtb290aFNjcm9sbFdp
dGhFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIHdoZWVsRXZlbnQpCit7CisgICAgZmxvYXQgZGVs
dGFYID0gbV9vdmVyZmxvd1Njcm9sbERlbHRhLndpZHRoKCk7CisgICAgZmxvYXQgZGVsdGFZID0g
bV9vdmVyZmxvd1Njcm9sbERlbHRhLmhlaWdodCgpOworCisgICAgLy8gUmVzZXQgb3ZlcmZsb3cg
dmFsdWVzIGJlY2F1c2Ugd2UgbWF5IGRlY2lkZSB0byByZW1vdmUgZGVsdGEgYXQgdmFyaW91cyBw
b2ludHMgYW5kIHB1dCBpdCBpbnRvIG92ZXJmbG93LgorICAgIG1fb3ZlcmZsb3dTY3JvbGxEZWx0
YSA9IEZsb2F0U2l6ZSgpOworCisgICAgZmxvYXQgZXZlbnRDb2FsbGVzY2VkRGVsdGFYID0gLXdo
ZWVsRXZlbnQuZGVsdGFYKCk7CisgICAgZmxvYXQgZXZlbnRDb2FsbGVzY2VkRGVsdGFZID0gLXdo
ZWVsRXZlbnQuZGVsdGFZKCk7CisKKyAgICBkZWx0YVggKz0gZXZlbnRDb2FsbGVzY2VkRGVsdGFY
OworICAgIGRlbHRhWSArPSBldmVudENvYWxsZXNjZWREZWx0YVk7CisKKyAgICAvLyBTbGlnaHRs
eSBwcmVmZXIgc2Nyb2xsaW5nIHZlcnRpY2FsbHkgYnkgYXBwbHlpbmcgdGhlID0gY2FzZSB0byBk
ZWx0YVkKKyAgICBpZiAoZmFic2YoZGVsdGFZKSA+PSBmYWJzZihkZWx0YVgpKQorICAgICAgICBk
ZWx0YVggPSAwLjA7CisgICAgZWxzZQorICAgICAgICBkZWx0YVkgPSAwLjA7CisgICAgCisgICAg
Ym9vbCBpc1ZlcnRpY2FsbHlTdHJldGNoZWQgPSBmYWxzZTsKKyAgICBib29sIGlzSG9yaXpvbnRh
bGx5U3RyZXRjaGVkID0gZmFsc2U7CisgICAgYm9vbCBzaG91bGRTdHJldGNoID0gZmFsc2U7Cisg
ICAgCisgICAgSW50U2l6ZSBzdHJldGNoQW1vdW50ID0gbV9zY3JvbGxhYmxlQXJlYS0+b3Zlcmhh
bmdBbW91bnQoKTsKKworICAgIGlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkID0gKHN0cmV0Y2hBbW91
bnQud2lkdGgoKSA9PSAwLjApID8gZmFsc2UgOiB0cnVlOworICAgIGlzVmVydGljYWxseVN0cmV0
Y2hlZCA9IChzdHJldGNoQW1vdW50LmhlaWdodCgpID09IDAuMCkgPyBmYWxzZSA6IHRydWU7CisK
KyAgICBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSBwaGFzZSA9IHdoZWVsRXZlbnQucGhhc2UoKTsK
KworICAgIC8vIElmIHdlIGFyZSBzdGFydGluZyBtb21lbnR1bSBzY3JvbGxpbmcgdGhlbiBkbyBz
b21lIHNldHVwLgorICAgIGlmICghbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgJiYgKHBoYXNl
ID09IFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlQmVnYW4gfHwgcGhhc2UgPT0gUGxhdGZvcm1XaGVl
bEV2ZW50UGhhc2VDaGFuZ2VkKSkKKyAgICAgICAgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3Mg
PSB0cnVlOworCisgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRhID0gd2hlZWxFdmVudC50aW1l
c3RhbXAoKSAtIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGltZXN0YW1wOworICAgIGlmIChtX2luU2Ny
b2xsR2VzdHVyZSB8fCBtX21vbWVudHVtU2Nyb2xsSW5Qcm9ncmVzcykgeworICAgICAgICBpZiAo
bV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRhID4gMC4wICYmIHRpbWVE
ZWx0YSA8IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1RpbWVvdXQpIHsKKyAgICAgICAgICAgIG1fbW9t
ZW50dW1WZWxvY2l0eS5zZXRXaWR0aChldmVudENvYWxsZXNjZWREZWx0YVggLyB0aW1lRGVsdGEp
OworICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5LnNldEhlaWdodChldmVudENvYWxsZXNj
ZWREZWx0YVkgLyB0aW1lRGVsdGEpOworICAgICAgICAgICAgbV9sYXN0TW9tZW10dW1TY3JvbGxU
aW1lc3RhbXAgPSB3aGVlbEV2ZW50LnRpbWVzdGFtcCgpOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgbV9sYXN0TW9tZW10dW1TY3JvbGxUaW1lc3RhbXAgPSB3aGVlbEV2ZW50LnRpbWVz
dGFtcCgpOworICAgICAgICAgICAgbV9tb21lbnR1bVZlbG9jaXR5ID0gRmxvYXRTaXplKCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoaXNWZXJ0aWNhbGx5U3RyZXRjaGVkKSB7CisgICAgICAg
ICAgICBpZiAoIWlzSG9yaXpvbnRhbGx5U3RyZXRjaGVkICYmIHBpbm5lZEluRGlyZWN0aW9uKGRl
bHRhWCwgMCkpIHsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gU3RyZXRjaGlu
ZyBvbmx5IGluIHRoZSB2ZXJ0aWNhbC4KKyAgICAgICAgICAgICAgICBpZiAoZGVsdGFZICE9IDAu
MCAmJiAoZmFic2YoZGVsdGFYIC8gZGVsdGFZKSA8IHJ1YmJlcmJhbmREaXJlY3Rpb25Mb2NrU3Ry
ZXRjaFJhdGlvKSkKKyAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gMC4wOworICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKGZhYnNmKGRlbHRhWCkgPCBydWJiZXJiYW5kTWluaW11bVJlcXVpcmVk
RGVsdGFCZWZvcmVTdHJldGNoKSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3ZlcmZsb3dTY3Jv
bGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93U2Nyb2xsRGVsdGEud2lkdGgoKSArIGRlbHRhWCk7
CisgICAgICAgICAgICAgICAgICAgIGRlbHRhWCA9IDAuMDsKKyAgICAgICAgICAgICAgICB9IGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgbV9vdmVyZmxvd1Njcm9sbERlbHRhLnNldFdpZHRoKG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YS53aWR0aCgpICsgZGVsdGFYKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfSBlbHNlIGlmIChpc0hvcml6b250YWxseVN0cmV0Y2hlZCkgeworICAgICAgICAgICAg
Ly8gU3RyZXRjaGluZyBvbmx5IGluIHRoZSBob3Jpem9udGFsLgorICAgICAgICAgICAgaWYgKHBp
bm5lZEluRGlyZWN0aW9uKDAsIGRlbHRhWSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZGVsdGFY
ICE9IDAuMCAmJiAoZmFic2YoZGVsdGFZIC8gZGVsdGFYKSA8IHJ1YmJlcmJhbmREaXJlY3Rpb25M
b2NrU3RyZXRjaFJhdGlvKSkKKyAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gMC4wOworICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKGZhYnNmKGRlbHRhWSkgPCBydWJiZXJiYW5kTWluaW11bVJl
cXVpcmVkRGVsdGFCZWZvcmVTdHJldGNoKSB7CisgICAgICAgICAgICAgICAgICAgIG1fb3ZlcmZs
b3dTY3JvbGxEZWx0YS5zZXRIZWlnaHQobV9vdmVyZmxvd1Njcm9sbERlbHRhLmhlaWdodCgpICsg
ZGVsdGFZKTsKKyAgICAgICAgICAgICAgICAgICAgZGVsdGFZID0gMC4wOworICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEuc2V0
SGVpZ2h0KG1fb3ZlcmZsb3dTY3JvbGxEZWx0YS5oZWlnaHQoKSArIGRlbHRhWSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBOb3Qgc3RyZXRjaGluZyBh
dCBhbGwgeWV0LgorICAgICAgICAgICAgaWYgKHBpbm5lZEluRGlyZWN0aW9uKGRlbHRhWCwgZGVs
dGFZKSkgeworICAgICAgICAgICAgICAgIGlmIChmYWJzZihkZWx0YVkpID49IGZhYnNmKGRlbHRh
WCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZhYnNmKGRlbHRhWCkgPCBydWJiZXJiYW5k
TWluaW11bVJlcXVpcmVkRGVsdGFCZWZvcmVTdHJldGNoKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEuc2V0V2lkdGgobV9vdmVyZmxvd1Njcm9sbERlbHRh
LndpZHRoKCkgKyBkZWx0YVgpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFYID0gMC4w
OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
b3ZlcmZsb3dTY3JvbGxEZWx0YS5zZXRXaWR0aChtX292ZXJmbG93U2Nyb2xsRGVsdGEud2lkdGgo
KSArIGRlbHRhWCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNob3VsZFN0
cmV0Y2ggPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KGRlbHRhWCAhPSAwLjAgfHwgZGVsdGFZICE9IDAuMCkgeworICAgICAgICBpZiAoIShzaG91bGRT
dHJldGNoIHx8IGlzVmVydGljYWxseVN0cmV0Y2hlZCB8fCBpc0hvcml6b250YWxseVN0cmV0Y2hl
ZCkpIHsKKyAgICAgICAgICAgIGlmIChkZWx0YVkgIT0gMCkgeworICAgICAgICAgICAgICAgIGRl
bHRhWSAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKKyAgICAgICAgICAgICAgICBpbW1lZGlh
dGVTY3JvbGxCeURlbHRhWShkZWx0YVkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGRlbHRhWCAhPSAwKSB7CisgICAgICAgICAgICAgICAgZGVsdGFYICo9IHNjcm9sbFdoZWVsTXVs
dGlwbGllcigpOworICAgICAgICAgICAgICAgIGltbWVkaWF0ZVNjcm9sbEJ5RGVsdGFYKGRlbHRh
WCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIWFs
bG93c0hvcml6b250YWxTdHJldGNoaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBkZWx0YVggPSAw
LjA7CisgICAgICAgICAgICAgICAgZXZlbnRDb2FsbGVzY2VkRGVsdGFYID0gMC4wOworICAgICAg
ICAgICAgfSBlbHNlIGlmICgoZGVsdGFYICE9IDApICYmICFpc0hvcml6b250YWxseVN0cmV0Y2hl
ZCAmJiAhcGlubmVkSW5EaXJlY3Rpb24oZGVsdGFYLCAwKSkgeworICAgICAgICAgICAgICAgIGRl
bHRhWCAqPSBzY3JvbGxXaGVlbE11bHRpcGxpZXIoKTsKKworICAgICAgICAgICAgICAgIG1fc2Ny
b2xsYWJsZUFyZWEtPnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRlbnRFZGdlKGZhbHNlKTsK
KyAgICAgICAgICAgICAgICBpbW1lZGlhdGVTY3JvbGxCeURlbHRhWChkZWx0YVgpOworICAgICAg
ICAgICAgICAgIG1fc2Nyb2xsYWJsZUFyZWEtPnNldENvbnN0cmFpbnNTY3JvbGxpbmdUb0NvbnRl
bnRFZGdlKHRydWUpOworCisgICAgICAgICAgICAgICAgZGVsdGFYID0gMC4wOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWFsbG93c1ZlcnRpY2FsU3RyZXRj
aGluZygpKSB7CisgICAgICAgICAgICAgICAgZGVsdGFZID0gMC4wOworICAgICAgICAgICAgICAg
IGV2ZW50Q29hbGxlc2NlZERlbHRhWSA9IDAuMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGRl
bHRhWSAhPSAwKSAmJiAhaXNWZXJ0aWNhbGx5U3RyZXRjaGVkICYmICFwaW5uZWRJbkRpcmVjdGlv
bigwLCBkZWx0YVkpKSB7CisgICAgICAgICAgICAgICAgZGVsdGFZICo9IHNjcm9sbFdoZWVsTXVs
dGlwbGllcigpOworCisgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+c2V0Q29uc3Ry
YWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOworICAgICAgICAgICAgICAgIGltbWVk
aWF0ZVNjcm9sbEJ5RGVsdGFZKGRlbHRhWSk7CisgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UodHJ1ZSk7CisKKyAgICAg
ICAgICAgICAgICBkZWx0YVkgPSAwLjA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEludFNpemUgc3RyZXRjaEFtb3VudCA9IG1fc2Nyb2xsYWJsZUFyZWEtPm92ZXJo
YW5nQW1vdW50KCk7CisgICAgICAgIAorICAgICAgICAgICAgaWYgKG1fbW9tZW50dW1TY3JvbGxJ
blByb2dyZXNzKSB7CisgICAgICAgICAgICAgICAgaWYgKChwaW5uZWRJbkRpcmVjdGlvbihldmVu
dENvYWxsZXNjZWREZWx0YVgsIGV2ZW50Q29hbGxlc2NlZERlbHRhWSkgfHwgKGZhYnNmKGV2ZW50
Q29hbGxlc2NlZERlbHRhWCkgKyBmYWJzZihldmVudENvYWxsZXNjZWREZWx0YVkpIDw9IDApKSAm
JiBtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVzdGFtcCkgeworICAgICAgICAgICAgICAgICAgICBt
X2lnbm9yZU1vbWVudHVtU2Nyb2xscyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1fbW9t
ZW50dW1TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHNuYXBS
dWJiZXJCYW5kKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRXaWR0aChtX3N0cmV0Y2hTY3JvbGxGb3JjZS53
aWR0aCgpICsgZGVsdGFYKTsKKyAgICAgICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlLnNldEhl
aWdodChtX3N0cmV0Y2hTY3JvbGxGb3JjZS5oZWlnaHQoKSArIGRlbHRhWSk7CisKKyAgICAgICAg
ICAgIEZsb2F0U2l6ZSBkYW1wZWREZWx0YShjZWlsKGVsYXN0aWNEZWx0YUZvclJlYm91bmREZWx0
YShtX3N0cmV0Y2hTY3JvbGxGb3JjZS53aWR0aCgpKSksIGNlaWwoZWxhc3RpY0RlbHRhRm9yUmVi
b3VuZERlbHRhKG1fc3RyZXRjaFNjcm9sbEZvcmNlLmhlaWdodCgpKSkpOworICAgICAgICAgICAg
RmxvYXRQb2ludCBvcmlnT3JpZ2luID0gbV9zY3JvbGxhYmxlQXJlYS0+dmlzaWJsZUNvbnRlbnRS
ZWN0KCkubG9jYXRpb24oKSAtIHN0cmV0Y2hBbW91bnQ7CisgICAgICAgICAgICBGbG9hdFBvaW50
IG5ld09yaWdpbiA9IG9yaWdPcmlnaW4gKyBkYW1wZWREZWx0YTsKKworICAgICAgICAgICAgaWYg
KG9yaWdPcmlnaW4gIT0gbmV3T3JpZ2luKSB7CisgICAgICAgICAgICAgICAgbV9zY3JvbGxhYmxl
QXJlYS0+c2V0Q29uc3RyYWluc1Njcm9sbGluZ1RvQ29udGVudEVkZ2UoZmFsc2UpOworICAgICAg
ICAgICAgICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9pbnQobmV3T3JpZ2luKTsKKyAgICAgICAgICAg
ICAgICBtX3Njcm9sbGFibGVBcmVhLT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRn
ZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChtX21v
bWVudHVtU2Nyb2xsSW5Qcm9ncmVzcyAmJiBwaGFzZSA9PSBQbGF0Zm9ybVdoZWVsRXZlbnRQaGFz
ZUVuZGVkKSB7CisgICAgICAgIG1fbW9tZW50dW1TY3JvbGxJblByb2dyZXNzID0gZmFsc2U7Cisg
ICAgICAgIG1faWdub3JlTW9tZW50dW1TY3JvbGxzID0gZmFsc2U7CisgICAgICAgIG1fbGFzdE1v
bWVtdHVtU2Nyb2xsVGltZXN0YW1wID0gMC4wOworICAgIH0KK30KKwordm9pZCBTY3JvbGxBbmlt
YXRvck1hYzo6YmVnaW5TY3JvbGxHZXN0dXJlKCkKK3sKKyAgICBtX2luU2Nyb2xsR2VzdHVyZSA9
IHRydWU7CisgICAgbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBtX2ln
bm9yZU1vbWVudHVtU2Nyb2xscyA9IGZhbHNlOworICAgIG1fbGFzdE1vbWVtdHVtU2Nyb2xsVGlt
ZXN0YW1wID0gMC4wOworICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworCisg
ICAgSW50U2l6ZSBzdHJldGNoQW1vdW50ID0gbV9zY3JvbGxhYmxlQXJlYS0+b3ZlcmhhbmdBbW91
bnQoKTsKKyAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRXaWR0aChyZWJvdW5kRGVsdGFGb3JF
bGFzdGljRGVsdGEoc3RyZXRjaEFtb3VudC53aWR0aCgpKSk7CisgICAgbV9zdHJldGNoU2Nyb2xs
Rm9yY2Uuc2V0SGVpZ2h0KHJlYm91bmREZWx0YUZvckVsYXN0aWNEZWx0YShzdHJldGNoQW1vdW50
LmhlaWdodCgpKSk7CisKKyAgICBtX292ZXJmbG93U2Nyb2xsRGVsdGEgPSBGbG9hdFNpemUoKTsK
KyAgICAKKyAgICBpZiAobV9zbmFwUnViYmVyQmFuZFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAg
IG1fc25hcFJ1YmJlckJhbmRUaW1lci5zdG9wKCk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JN
YWM6OmVuZFNjcm9sbEdlc3R1cmUoKQoreworICAgIHNuYXBSdWJiZXJCYW5kKCk7Cit9CisKK3Zv
aWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNuYXBSdWJiZXJCYW5kKCkKK3sKKyAgICBDRlRpbWVJbnRl
cnZhbCB0aW1lRGVsdGEgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGlt
ZV0gLSBtX2xhc3RNb21lbXR1bVNjcm9sbFRpbWVzdGFtcDsKKyAgICBpZiAobV9sYXN0TW9tZW10
dW1TY3JvbGxUaW1lc3RhbXAgJiYgdGltZURlbHRhID49IHNjcm9sbFZlbG9jaXR5WmVyb2luZ1Rp
bWVvdXQpCisgICAgICAgIG1fbW9tZW50dW1WZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworCisgICAg
bV9pblNjcm9sbEdlc3R1cmUgPSBmYWxzZTsKKworICAgIGlmIChtX3NuYXBSdWJiZXJCYW5kVGlt
ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGFydFRpbWUgPSBbTlNE
YXRlIHRpbWVJbnRlcnZhbFNpbmNlUmVmZXJlbmNlRGF0ZV07CisgICAgbV9zdGFydFN0cmV0Y2gg
PSBGbG9hdFNpemUoKTsKKyAgICBtX29yaWdPcmlnaW4gPSBGbG9hdFBvaW50KCk7CisgICAgbV9v
cmlnVmVsb2NpdHkgPSBGbG9hdFNpemUoKTsKKworICAgIG1fc25hcFJ1YmJlckJhbmRUaW1lci5z
dGFydFJlcGVhdGluZygxLjAvNjAuMCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHJvdW5k
VG93YXJkWmVybyhkb3VibGUgbnVtKQoreworICAgIHJldHVybiBudW0gPiAwLjAgPyBjZWlsKG51
bSAtIDAuNSkgOiBmbG9vcihudW0gKyAwLjUpOworfQorCitzdGF0aWMgaW5saW5lIGRvdWJsZSBy
b3VuZFRvRGV2aWNlUGl4ZWxUb3dhcmRaZXJvKGRvdWJsZSBudW0pCit7CisgICAgZG91YmxlIHJv
dW5kZWROdW0gPSByb3VuZChudW0pOworICAgIGlmIChmYWJzKG51bSAtIHJvdW5kZWROdW0pIDwg
MC4xMjUpIHsKKyAgICAgICAgbnVtID0gcm91bmRlZE51bTsKKyAgICB9CisKKyAgICByZXR1cm4g
cm91bmRUb3dhcmRaZXJvKG51bSk7Cit9CisKK3ZvaWQgU2Nyb2xsQW5pbWF0b3JNYWM6OnNuYXBS
dWJiZXJCYW5kVGltZXJGaXJlZChUaW1lcjxTY3JvbGxBbmltYXRvck1hYz4qKQoreworICAgIGlm
ICghbV9tb21lbnR1bVNjcm9sbEluUHJvZ3Jlc3MgfHwgbV9pZ25vcmVNb21lbnR1bVNjcm9sbHMp
IHsKKyAgICAgICAgQ0ZUaW1lSW50ZXJ2YWwgdGltZURlbHRhID0gW05TRGF0ZSB0aW1lSW50ZXJ2
YWxTaW5jZVJlZmVyZW5jZURhdGVdIC0gbV9zdGFydFRpbWU7CisKKyAgICAgICAgaWYgKG1fc3Rh
cnRTdHJldGNoID09IEZsb2F0U2l6ZSgpKSB7CisgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9
IG1fc2Nyb2xsYWJsZUFyZWEtPm92ZXJoYW5nQW1vdW50KCk7CisgICAgICAgICAgICBpZiAobV9z
dGFydFN0cmV0Y2ggPT0gRmxvYXRTaXplKCkpIHsgICAgCisgICAgICAgICAgICAgICAgbV9zbmFw
UnViYmVyQmFuZFRpbWVyLnN0b3AoKTsKKyAgICAgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxG
b3JjZSA9IEZsb2F0U2l6ZSgpOworICAgICAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsKKyAg
ICAgICAgICAgICAgICBtX3N0YXJ0U3RyZXRjaCA9IEZsb2F0U2l6ZSgpOworICAgICAgICAgICAg
ICAgIG1fb3JpZ09yaWdpbiA9IEZsb2F0UG9pbnQoKTsKKyAgICAgICAgICAgICAgICBtX29yaWdW
ZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBtX29yaWdPcmlnaW4gPSBtX3Njcm9sbGFibGVBcmVhLT52
aXNpYmxlQ29udGVudFJlY3QoKS5sb2NhdGlvbigpIC0gbV9zdGFydFN0cmV0Y2g7CisgICAgICAg
ICAgICBtX29yaWdWZWxvY2l0eSA9IG1fbW9tZW50dW1WZWxvY2l0eTsKKworICAgICAgICAgICAg
Ly8gSnVzdCBsaWtlIG5vcm1hbCBzY3JvbGxpbmcsIHByZWZlciB2ZXJ0aWNhbCBydWJiZXJiYW5k
aW5nCisgICAgICAgICAgICBpZiAoZmFic2YobV9vcmlnVmVsb2NpdHkuaGVpZ2h0KCkpID49IGZh
YnNmKG1fb3JpZ1ZlbG9jaXR5LndpZHRoKCkpKQorICAgICAgICAgICAgICAgIG1fb3JpZ1ZlbG9j
aXR5LnNldFdpZHRoKDApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBEb24ndCBydWJi
ZXItYmFuZCBob3Jpem9udGFsbHkgaWYgaXQncyBub3QgcG9zc2libGUgdG8gc2Nyb2xsIGhvcml6
b250YWxseQorICAgICAgICAgICAgU2Nyb2xsYmFyKiBoU2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVB
cmVhLT5ob3Jpem9udGFsU2Nyb2xsYmFyKCk7CisgICAgICAgICAgICBpZiAoIWhTY3JvbGxlciB8
fCAhaFNjcm9sbGVyLT5lbmFibGVkKCkpCisgICAgICAgICAgICAgICAgbV9vcmlnVmVsb2NpdHku
c2V0V2lkdGgoMCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIERvbid0IHJ1YmJlci1i
YW5kIHZlcnRpY2FsbHkgaWYgaXQncyBub3QgcG9zc2libGUgdG8gc2Nyb2xsIGhvcml6b250YWxs
eQorICAgICAgICAgICAgU2Nyb2xsYmFyKiB2U2Nyb2xsZXIgPSBtX3Njcm9sbGFibGVBcmVhLT52
ZXJ0aWNhbFNjcm9sbGJhcigpOworICAgICAgICAgICAgaWYgKCF2U2Nyb2xsZXIgfHwgIXZTY3Jv
bGxlci0+ZW5hYmxlZCgpKQorICAgICAgICAgICAgICAgIG1fb3JpZ1ZlbG9jaXR5LnNldEhlaWdo
dCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIEZsb2F0UG9pbnQgZGVsdGEocm91bmRUb0Rldmlj
ZVBpeGVsVG93YXJkWmVybyhlbGFzdGljRGVsdGFGb3JUaW1lRGVsdGEobV9zdGFydFN0cmV0Y2gu
d2lkdGgoKSwgLW1fb3JpZ1ZlbG9jaXR5LndpZHRoKCksIHRpbWVEZWx0YSkpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIHJvdW5kVG9EZXZpY2VQaXhlbFRvd2FyZFplcm8oZWxhc3RpY0RlbHRh
Rm9yVGltZURlbHRhKG1fc3RhcnRTdHJldGNoLmhlaWdodCgpLCAtbV9vcmlnVmVsb2NpdHkuaGVp
Z2h0KCksIHRpbWVEZWx0YSkpKTsKKworICAgICAgICBpZiAoZmFicyhkZWx0YS54KCkpID49IDEu
MCB8fCBmYWJzKGRlbHRhLnkoKSkgPj0gMS4wKSB7CisgICAgICAgICAgICBGbG9hdFBvaW50IG5l
d09yaWdpbiA9IG1fb3JpZ09yaWdpbiArIGRlbHRhOworCisgICAgICAgICAgICBtX3Njcm9sbGFi
bGVBcmVhLT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZShmYWxzZSk7CisgICAg
ICAgICAgICBpbW1lZGlhdGVTY3JvbGxUb1BvaW50KG5ld09yaWdpbik7CisgICAgICAgICAgICBt
X3Njcm9sbGFibGVBcmVhLT5zZXRDb25zdHJhaW5zU2Nyb2xsaW5nVG9Db250ZW50RWRnZSh0cnVl
KTsKKworICAgICAgICAgICAgRmxvYXRTaXplIG5ld1N0cmV0Y2ggPSBtX3Njcm9sbGFibGVBcmVh
LT5vdmVyaGFuZ0Ftb3VudCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX3N0cmV0Y2hT
Y3JvbGxGb3JjZS5zZXRXaWR0aChyZWJvdW5kRGVsdGFGb3JFbGFzdGljRGVsdGEobmV3U3RyZXRj
aC53aWR0aCgpKSk7CisgICAgICAgICAgICBtX3N0cmV0Y2hTY3JvbGxGb3JjZS5zZXRIZWlnaHQo
cmVib3VuZERlbHRhRm9yRWxhc3RpY0RlbHRhKG5ld1N0cmV0Y2guaGVpZ2h0KCkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGltbWVkaWF0ZVNjcm9sbFRvUG9pbnQobV9vcmlnT3Jp
Z2luKTsKKworICAgICAgICAgICAgbV9zbmFwUnViYmVyQmFuZFRpbWVyLnN0b3AoKTsKKyAgICAg
ICAgICAgIG1fc3RyZXRjaFNjcm9sbEZvcmNlID0gRmxvYXRTaXplKCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIG1fc3RhcnRUaW1lID0gMDsKKyAgICAgICAgICAgIG1fc3RhcnRTdHJldGNo
ID0gRmxvYXRTaXplKCk7CisgICAgICAgICAgICBtX29yaWdPcmlnaW4gPSBGbG9hdFBvaW50KCk7
CisgICAgICAgICAgICBtX29yaWdWZWxvY2l0eSA9IEZsb2F0U2l6ZSgpOworICAgICAgICB9Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgbV9zdGFydFRpbWUgPSBbTlNEYXRlIHRpbWVJbnRlcnZhbFNp
bmNlUmVmZXJlbmNlRGF0ZV07CisgICAgICAgIG1fc3RhcnRTdHJldGNoID0gRmxvYXRTaXplKCk7
CisgICAgfQorfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShTTU9PVEhfU0NST0xMSU5HKQo=
</data>
<flag name="review"
          id="71871"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>