<?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>230633</bug_id>
          
          <creation_ts>2021-09-22 12:32:37 -0700</creation_ts>
          <short_desc>Push ScrollAnimatorMac code into the base class and clean up the ScrollAnimator interface</short_desc>
          <delta_ts>2021-09-22 15:17:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1796167</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-22 12:32:37 -0700</bug_when>
    <thetext>Push ScrollAnimatorMac code into the base class and clean up the ScrollAnimator interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796168</commentid>
    <comment_count>1</comment_count>
      <attachid>438967</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2021-09-22 12:33:39 -0700</bug_when>
    <thetext>Created attachment 438967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796213</commentid>
    <comment_count>2</comment_count>
      <attachid>438967</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2021-09-22 14:38:04 -0700</bug_when>
    <thetext>Comment on attachment 438967
Patch

Nice cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796230</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-22 15:16:01 -0700</bug_when>
    <thetext>Committed r282887 (242016@main): &lt;https://commits.webkit.org/242016@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438967.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1796231</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-22 15:17:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83419674&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438967</attachid>
            <date>2021-09-22 12:33:39 -0700</date>
            <delta_ts>2021-09-22 15:16:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230633-20210922123338.patch</filename>
            <type>text/plain</type>
            <size>18588</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTZlMTg2MWVkMjNhZWNm
NGU5NTNlNTU1NzIyMDVhZWJmZjU1NTI1Yi4uMDljNGIxYmMzODhlMDU0NzJhMWMwY2M2ZDc1NGE3
MjIwMDljZjZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIxLTA5LTIyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIFB1c2ggU2Nyb2xs
QW5pbWF0b3JNYWMgY29kZSBpbnRvIHRoZSBiYXNlIGNsYXNzIGFuZCBjbGVhbiB1cCB0aGUgU2Ny
b2xsQW5pbWF0b3IgaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzA2MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZWR1Y2UgdGhlIGJyYWlucHJpbnQgb2YgU2Nyb2xsQW5pbWF0b3JNYWMg
YnkgcHVzaGluZyBwbGF0Zm9ybS1hZ25vc3RpYyBjb2RlIGludG8KKyAgICAgICAgdGhlIGJhc2Ug
Y2xhc3MuCisKKyAgICAgICAgQ2xlYW4gdXAgU2Nyb2xsQW5pbWF0b3IsIG1ha2luZyBtb3JlIGZ1
bmN0aW9ucyBwcm90ZWN0ZWQgb3IgcHJpdmF0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL1Njcm9s
bEFuaW1hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yOjpzY3JvbGwp
OgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3I6Om5vdGlmeVBvc2l0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWxsb3dzSG9yaXpvbnRhbFNj
cm9sbGluZyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvcjo6YWxsb3dz
VmVydGljYWxTY3JvbGxpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OnN0cmV0Y2hBbW91bnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0
b3I6OmVkZ2VQaW5uZWRTdGF0ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmlt
YXRvcjo6aXNQaW5uZWRGb3JTY3JvbGxEZWx0YSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0v
U2Nyb2xsQW5pbWF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVyaWMvU2Nyb2xsQW5pbWF0b3JHZW5l
cmljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6c2Nyb2xs
QW5pbWF0aW9uRGlkVXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yR2Vu
ZXJpYzo6dXBkYXRlUG9zaXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dlbmVy
aWMvU2Nyb2xsQW5pbWF0b3JHZW5lcmljLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9s
bEFuaW1hdG9yTWFjLmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnNjcm9sbCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxBbmltYXRvck1hYzo6bm90aWZ5UG9zaXRpb25D
aGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbEFuaW1hdG9yTWFjOjpl
ZGdlUGlubmVkU3RhdGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmlzUGlubmVkRm9yU2Nyb2xsRGVsdGEgY29uc3QpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OnN0cmV0Y2hBbW91bnQgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6
b250YWxTY3JvbGxpbmcgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
QW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nIGNvbnN0KTogRGVsZXRlZC4KKwog
MjAyMS0wOS0yMiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgRU5BQkxFKFNNT09USF9TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxBbmltYXRvci5jcHAKaW5kZXggZDMzNTI0YzE0ODI0MmRjZWZlODY2ZTljYTdi
ZWZiMTBjMmEyNGMyMC4uYzIwMDc3NTBhNGQ2YjJkMWFkOTRmMjg4NDY3MDNlMjgwOTI1ZjU4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmNwcApAQCAtNjcsNiAr
NjcsOCBAQCBTY3JvbGxBbmltYXRvcjo6flNjcm9sbEFuaW1hdG9yKCkKIAogYm9vbCBTY3JvbGxB
bmltYXRvcjo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0aW9uLCBTY3JvbGxH
cmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxvYXQgbXVsdGlwbGllciwgT3B0
aW9uU2V0PFNjcm9sbEJlaGF2aW9yPiBiZWhhdmlvcikKIHsKKyAgICBtX3Njcm9sbGFibGVBcmVh
LnNjcm9sbGJhcnNDb250cm9sbGVyKCkuc2V0U2Nyb2xsYmFyQW5pbWF0aW9uc1Vuc3VzcGVuZGVk
QnlVc2VySW50ZXJhY3Rpb24odHJ1ZSk7CisKICAgICBhdXRvIGRlbHRhID0gZGVsdGFGcm9tU3Rl
cChvcmllbnRhdGlvbiwgc3RlcCwgbXVsdGlwbGllcik7CiAgICAgaWYgKGJlaGF2aW9yLmNvbnRh
aW5zKFNjcm9sbEJlaGF2aW9yOjpEb0RpcmVjdGlvbmFsU25hcHBpbmcpKSB7CiAgICAgICAgIGJl
aGF2aW9yLnJlbW92ZShTY3JvbGxCZWhhdmlvcjo6RG9EaXJlY3Rpb25hbFNuYXBwaW5nKTsKQEAg
LTI1Nyw4ICsyNTksNyBAQCB2b2lkIFNjcm9sbEFuaW1hdG9yOjp1cGRhdGVBY3RpdmVTY3JvbGxT
bmFwSW5kZXhGb3JPZmZzZXQoKQogCiB2b2lkIFNjcm9sbEFuaW1hdG9yOjpub3RpZnlQb3NpdGlv
bkNoYW5nZWQoY29uc3QgRmxvYXRTaXplJiBkZWx0YSkKIHsKLSAgICBVTlVTRURfUEFSQU0oZGVs
dGEpOwotICAgIAorICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5u
b3RpZnlDb250ZW50QXJlYVNjcm9sbGVkKGRlbHRhKTsKICAgICBtX3Njcm9sbGFibGVBcmVhLnNl
dFNjcm9sbFBvc2l0aW9uRnJvbUFuaW1hdGlvbihyb3VuZGVkSW50UG9pbnQobV9jdXJyZW50UG9z
aXRpb24pKTsKICAgICBtX3Njcm9sbENvbnRyb2xsZXIuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkKCk7
CiB9CkBAIC0yNzgsNiArMjc5LDM5IEBAIEZsb2F0UG9pbnQgU2Nyb2xsQW5pbWF0b3I6OnNjcm9s
bE9mZnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsT2Zmc2V0
RnJvbVBvc2l0aW9uKHJvdW5kZWRJbnRQb2ludChjdXJyZW50UG9zaXRpb24oKSkpOwogfQogCiti
b29sIFNjcm9sbEFuaW1hdG9yOjphbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCk7
Cit9CisKK2Jvb2wgU2Nyb2xsQW5pbWF0b3I6OmFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5hbGxvd3NWZXJ0aWNhbFNjcm9sbGlu
ZygpOworfQorCisjaWYgSEFWRShSVUJCRVJfQkFORElORykKK0ludFNpemUgU2Nyb2xsQW5pbWF0
b3I6OnN0cmV0Y2hBbW91bnQoKSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVh
Lm92ZXJoYW5nQW1vdW50KCk7Cit9CisKK1JlY3RFZGdlczxib29sPiBTY3JvbGxBbmltYXRvcjo6
ZWRnZVBpbm5lZFN0YXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5l
ZGdlUGlubmVkU3RhdGUoKTsKK30KKworYm9vbCBTY3JvbGxBbmltYXRvcjo6aXNQaW5uZWRGb3JT
Y3JvbGxEZWx0YShjb25zdCBGbG9hdFNpemUmIGRlbHRhKSBjb25zdAoreworICAgIGlmIChmYWJz
ZihkZWx0YS5oZWlnaHQoKSkgPj0gZmFic2YoZGVsdGEud2lkdGgoKSkpCisgICAgICAgIHJldHVy
biBtX3Njcm9sbGFibGVBcmVhLmlzUGlubmVkRm9yU2Nyb2xsRGVsdGFPbkF4aXMoZGVsdGEuaGVp
Z2h0KCksIFNjcm9sbEV2ZW50QXhpczo6VmVydGljYWwpOworCisgICAgaWYgKGRlbHRhLndpZHRo
KCkpCisgICAgICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmlzUGlubmVkRm9yU2Nyb2xsRGVs
dGFPbkF4aXMoZGVsdGEud2lkdGgoKSwgU2Nyb2xsRXZlbnRBeGlzOjpIb3Jpem9udGFsKTsKKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiAvLyBGSVhNRTogVW51c2VkLgogdm9pZCBT
Y3JvbGxBbmltYXRvcjo6aW1tZWRpYXRlU2Nyb2xsT25BeGlzKFNjcm9sbEV2ZW50QXhpcyBheGlz
LCBmbG9hdCBkZWx0YSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbEFuaW1hdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxBbmltYXRvci5o
CmluZGV4IDcwZDQxNTdlNDg3MWRjNjg1ODBiY2Y5NzI4ZWZjODU4Mjg4ZjAwZDkuLjAwMDZlM2Mz
YjU2MzMwOTJmOWFmODExNzNjNzY5MGM4NjU5NjM5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbEFuaW1hdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsQW5pbWF0b3IuaApAQCAtNjIsNiArNjIsOCBAQCBwdWJsaWM6CiAKICAgICBTY3Jv
bGxhYmxlQXJlYSYgc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGVB
cmVhOyB9CiAKKyAgICBLZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yICprZXlib2FyZFNjcm9sbGlu
Z0FuaW1hdG9yKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9rZXlib2FyZFNjcm9sbGluZ0FuaW1h
dG9yLmdldCgpOyB9CisKICAgICBlbnVtIFNjcm9sbEJlaGF2aW9yIHsKICAgICAgICAgRG9EaXJl
Y3Rpb25hbFNuYXBwaW5nID0gMSA8PCAwLAogICAgICAgICBOZXZlckFuaW1hdGUgPSAxIDw8IDEs
CkBAIC03MSwxMiArNzMsMTIgQEAgcHVibGljOgogICAgIC8vIGFscmVhZHkgYXQgdGhlIGRlc3Rp
bmF0aW9uLiAgT3RoZXJ3aXNlLCBzdGFydHMgc2Nyb2xsaW5nIHRvd2FyZHMgdGhlCiAgICAgLy8g
ZGVzdGluYXRpb24gYW5kIHJldHVybnMgdHJ1ZS4gIFNjcm9sbGluZyBtYXkgYmUgaW1tZWRpYXRl
IG9yIGFuaW1hdGVkLgogICAgIC8vIFRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIGFsd2F5
cyBzY3JvbGxzIGltbWVkaWF0ZWx5LCBuZXZlciBhbmltYXRlcy4KLSAgICB2aXJ0dWFsIGJvb2wg
c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSwgZmxvYXQgc3Rl
cCwgZmxvYXQgbXVsdGlwbGllciwgT3B0aW9uU2V0PFNjcm9sbEJlaGF2aW9yPik7CisgICAgYm9v
bCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBz
dGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBPcHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+KTsKIAogICAg
IHZpcnR1YWwgYm9vbCBzY3JvbGxUb1Bvc2l0aW9uV2l0aG91dEFuaW1hdGlvbihjb25zdCBGbG9h
dFBvaW50JiwgU2Nyb2xsQ2xhbXBpbmcgPSBTY3JvbGxDbGFtcGluZzo6Q2xhbXBlZCk7Ci0gICAg
dmlydHVhbCBib29sIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmKTsKKyAgICBib29sIHNjcm9sbFRvUG9zaXRpb25XaXRoQW5pbWF0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZXRhcmdldFJ1bm5pbmdBbmltYXRpb24oY29u
c3QgRmxvYXRQb2ludCYpOworICAgIHZvaWQgcmV0YXJnZXRSdW5uaW5nQW5pbWF0aW9uKGNvbnN0
IEZsb2F0UG9pbnQmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0
IFBsYXRmb3JtV2hlZWxFdmVudCYpOwogCkBAIC05NiwxMSArOTgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzUnViYmVyQmFuZEluUHJvZ3Jlc3MoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1Njcm9sbFNuYXBJblByb2dyZXNzKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KIAotICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNsaWVudAotICAgIHZvaWQg
c2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYsIGNvbnN0IEZsb2F0UG9p
bnQmIGN1cnJlbnRPZmZzZXQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlk
RW5kKFNjcm9sbEFuaW1hdGlvbiYpIG92ZXJyaWRlOwotICAgIFNjcm9sbEV4dGVudHMgc2Nyb2xs
RXh0ZW50c0ZvckFuaW1hdGlvbihTY3JvbGxBbmltYXRpb24mKSBvdmVycmlkZTsKLQogICAgIHZv
aWQgY29udGVudHNTaXplQ2hhbmdlZCgpIGNvbnN0OwogCiAgICAgZW51bSBOb3RpZnlTY3JvbGxh
YmxlQXJlYSA6IGJvb2wgewpAQCAtMTA5LDIxICsxMDYsMTIgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0Q3VycmVudFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBOb3RpZnlTY3JvbGxhYmxlQXJl
YSA9IE5vdGlmeVNjcm9sbGFibGVBcmVhOjpObyk7CiAgICAgY29uc3QgRmxvYXRQb2ludCYgY3Vy
cmVudFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UG9zaXRpb247IH0KIAotICAg
IEtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IgKmtleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2tleWJvYXJkU2Nyb2xsaW5nQW5pbWF0b3IuZ2V0KCk7
IH0KLQogICAgIHZvaWQgc2V0V2hlZWxFdmVudFRlc3RNb25pdG9yKFJlZlB0cjxXaGVlbEV2ZW50
VGVzdE1vbml0b3I+JiYgdGVzdE1vbml0b3IpIHsgbV93aGVlbEV2ZW50VGVzdE1vbml0b3IgPSB0
ZXN0TW9uaXRvcjsgfQogICAgIFdoZWVsRXZlbnRUZXN0TW9uaXRvciogd2hlZWxFdmVudFRlc3RN
b25pdG9yKCkgY29uc3QgeyByZXR1cm4gbV93aGVlbEV2ZW50VGVzdE1vbml0b3IuZ2V0KCk7IH0K
IAogICAgIEZsb2F0UG9pbnQgYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChj
b25zdCBGbG9hdFBvaW50JiBvZmZzZXQsIFNjcm9sbFNuYXBQb2ludFNlbGVjdGlvbk1ldGhvZCk7
CiAgICAgZmxvYXQgYWRqdXN0U2Nyb2xsT2Zmc2V0Rm9yU25hcHBpbmdJZk5lZWRlZChTY3JvbGxF
dmVudEF4aXMsIGNvbnN0IEZsb2F0UG9pbnQmIG5ld09mZnNldCwgU2Nyb2xsU25hcFBvaW50U2Vs
ZWN0aW9uTWV0aG9kKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdFZmZlY3RzQ29u
dHJvbGxlclRpbWVyPiBjcmVhdGVUaW1lcihGdW5jdGlvbjx2b2lkKCk+JiYpIGZpbmFsOwotCi0g
ICAgdm9pZCBzdGFydEFuaW1hdGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVy
JikgZmluYWw7Ci0gICAgdm9pZCBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0
c0NvbnRyb2xsZXImKSBmaW5hbDsKLQotICAgIHZvaWQgc2Nyb2xsQ29udHJvbGxlckFuaW1hdGlv
blRpbWVyRmlyZWQoKTsKLQogICAgIGJvb2wgYWN0aXZlU2Nyb2xsU25hcEluZGV4RGlkQ2hhbmdl
KCkgY29uc3Q7CiAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gYWN0aXZlU2Nyb2xsU25hcElu
ZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMpIGNvbnN0OwogICAgIHZvaWQgc2V0QWN0aXZlU2Ny
b2xsU25hcEluZGV4Rm9yQXhpcyhTY3JvbGxFdmVudEF4aXMsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IGluZGV4KTsKQEAgLTEzMSwyNyArMTE5LDUzIEBAIHB1YmxpYzoKICAgICBjb25zdCBMYXlv
dXRTY3JvbGxTbmFwT2Zmc2V0c0luZm8qIHNuYXBPZmZzZXRzSW5mbygpIGNvbnN0OwogICAgIHZv
aWQgcmVzbmFwQWZ0ZXJMYXlvdXQoKTsKIAotICAgIC8vIFNjcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyQ2xpZW50LgotICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3Qgb3ZlcnJpZGU7
Ci0gICAgdm9pZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBk
ZWx0YSkgb3ZlcnJpZGU7Ci0gICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3Qgb3ZlcnJp
ZGU7Ci0gICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzKCkgY29uc3Qgb3ZlcnJpZGU7Ci0j
aWYgUExBVEZPUk0oTUFDKQotICAgIHZvaWQgZGVmZXJXaGVlbEV2ZW50VGVzdENvbXBsZXRpb25G
b3JSZWFzb24oV2hlZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIs
IFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwotICAg
IHZvaWQgcmVtb3ZlV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRGVmZXJyYWxGb3JSZWFzb24oV2hl
ZWxFdmVudFRlc3RNb25pdG9yOjpTY3JvbGxhYmxlQXJlYUlkZW50aWZpZXIsIFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6RGVmZXJSZWFzb24pIGNvbnN0IG92ZXJyaWRlOwotI2VuZGlmCi0KIHByb3Rl
Y3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0
U2l6ZSYgZGVsdGEpOwogICAgIHZpcnR1YWwgYm9vbCBwbGF0Zm9ybUFsbG93c1Njcm9sbEFuaW1h
dGlvbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAorICAgIC8vIFNjcm9sbEFuaW1hdGlvbkNs
aWVudAorICAgIHZvaWQgc2Nyb2xsQW5pbWF0aW9uRGlkVXBkYXRlKFNjcm9sbEFuaW1hdGlvbiYs
IGNvbnN0IEZsb2F0UG9pbnQmIGN1cnJlbnRPZmZzZXQpIG92ZXJyaWRlOworCitwcml2YXRlOgor
ICAgIHZvaWQgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGNvbnN0IEZsb2F0U2l6ZSYgZGVsdGEpOwor
CisgICAgdm9pZCBzY3JvbGxDb250cm9sbGVyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwogICAgIHZv
aWQgdXBkYXRlQWN0aXZlU2Nyb2xsU25hcEluZGV4Rm9yT2Zmc2V0KCk7CiAKICAgICBGbG9hdFBv
aW50IG9mZnNldEZyb21Qb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikgY29uc3Q7
CiAgICAgRmxvYXRQb2ludCBwb3NpdGlvbkZyb21PZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgb2Zm
c2V0KSBjb25zdDsKIAorCisgICAgLy8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJDbGllbnQu
CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyVGltZXI+IGNy
ZWF0ZVRpbWVyKEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzdGFydEFuaW1h
dGlvbkNhbGxiYWNrKFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyJikgZmluYWw7CisgICAgdm9p
ZCBzdG9wQW5pbWF0aW9uQ2FsbGJhY2soU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXImKSBmaW5h
bDsKKworICAgIEZsb2F0UG9pbnQgc2Nyb2xsT2Zmc2V0KCkgY29uc3QgZmluYWw7CisgICAgdm9p
ZCBpbW1lZGlhdGVTY3JvbGxPbkF4aXMoU2Nyb2xsRXZlbnRBeGlzLCBmbG9hdCBkZWx0YSkgZmlu
YWw7CisgICAgZmxvYXQgcGFnZVNjYWxlRmFjdG9yKCkgY29uc3QgZmluYWw7CisgICAgU2Nyb2xs
RXh0ZW50cyBzY3JvbGxFeHRlbnRzKCkgY29uc3QgZmluYWw7CisKKyAgICBib29sIGFsbG93c0hv
cml6b250YWxTY3JvbGxpbmcoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGFsbG93c1ZlcnRpY2Fs
U2Nyb2xsaW5nKCkgY29uc3QgZmluYWw7CisKKyNpZiBIQVZFKFJVQkJFUl9CQU5ESU5HKQorICAg
IEludFNpemUgc3RyZXRjaEFtb3VudCgpIGNvbnN0IGZpbmFsOworICAgIFJlY3RFZGdlczxib29s
PiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdCBmaW5hbDsKKyAgICBib29sIGlzUGlubmVkRm9yU2Ny
b2xsRGVsdGEoY29uc3QgRmxvYXRTaXplJikgY29uc3QgZmluYWw7CisjZW5kaWYKKworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICB2b2lkIGRlZmVyV2hlZWxFdmVudFRlc3RDb21wbGV0aW9uRm9yUmVh
c29uKFdoZWVsRXZlbnRUZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVl
bEV2ZW50VGVzdE1vbml0b3I6OkRlZmVyUmVhc29uKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJl
bW92ZVdoZWVsRXZlbnRUZXN0Q29tcGxldGlvbkRlZmVycmFsRm9yUmVhc29uKFdoZWVsRXZlbnRU
ZXN0TW9uaXRvcjo6U2Nyb2xsYWJsZUFyZWFJZGVudGlmaWVyLCBXaGVlbEV2ZW50VGVzdE1vbml0
b3I6OkRlZmVyUmVhc29uKSBjb25zdCBmaW5hbDsKKyNlbmRpZgorCisgICAgLy8gU2Nyb2xsQW5p
bWF0aW9uQ2xpZW50CisgICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRFbmQoU2Nyb2xsQW5pbWF0
aW9uJikgZmluYWw7CisgICAgU2Nyb2xsRXh0ZW50cyBzY3JvbGxFeHRlbnRzRm9yQW5pbWF0aW9u
KFNjcm9sbEFuaW1hdGlvbiYpIGZpbmFsOworCiAgICAgc3RhdGljIEZsb2F0U2l6ZSBkZWx0YUZy
b21TdGVwKFNjcm9sbGJhck9yaWVudGF0aW9uLCBmbG9hdCBzdGVwLCBmbG9hdCBtdWx0aXBsaWVy
KTsKIAorcHJvdGVjdGVkOgogICAgIFNjcm9sbGFibGVBcmVhJiBtX3Njcm9sbGFibGVBcmVhOwog
ICAgIFJlZlB0cjxXaGVlbEV2ZW50VGVzdE1vbml0b3I+IG1fd2hlZWxFdmVudFRlc3RNb25pdG9y
OwogICAgIFNjcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyIG1fc2Nyb2xsQ29udHJvbGxlcjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxpbmdFZmZlY3RzQ29udHJvbGxl
ci5oCmluZGV4IDY3OTU3MTExNzVkNjVlNzY4ZjZiMGIxYzU4YTY3ODE4NDllMDRiMDguLmNjYTQ3
NWY5MzI5YjQzYjk3NGMxZTIyNGFlNDVjOTBjNzQ2NDE5MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGluZ0VmZmVjdHNDb250cm9sbGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXIuaApAQCAtNzcsNiAr
NzcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUtleWJvYXJkU2Nyb2xsUG9z
aXRpb24oTW9ub3RvbmljVGltZSkgeyB9CiAgICAgdmlydHVhbCBLZXlib2FyZFNjcm9sbGluZ0Fu
aW1hdG9yICprZXlib2FyZFNjcm9sbGluZ0FuaW1hdG9yKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogCisgICAgdmlydHVhbCBib29sIGFsbG93c0hvcml6b250YWxTY3JvbGxpbmcoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIGFsbG93c1ZlcnRpY2FsU2Nyb2xsaW5nKCkgY29uc3Qg
PSAwOworCiAjaWYgSEFWRShSVUJCRVJfQkFORElORykKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
SG9yaXpvbnRhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JikgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NWZXJ0aWNhbFN0cmV0Y2hpbmcoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JikgY29uc3QgPSAwOwpAQCAtODYsOCArODksNiBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIFJlY3RFZGdlczxib29sPiBlZGdlUGlubmVkU3RhdGUoKSBjb25zdCA9IDA7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzSG9yaXpvbnRhbFNjcm9sbGluZygpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxpbmcoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihTY3JvbGxEaXJlY3Rp
b24pIGNvbnN0ID0gMDsKIAogICAgIC8vIEZJWE1FOiB1c2UgU2Nyb2xsQ2xhbXBpbmcgdG8gY29s
bGFwc2UgdGhlc2UgdG8gb25lLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ2VuZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuY3BwCmluZGV4IGI2MGNkNmIxYTA5MWYz
ZjZiMzBjOTI3ZmMzNzFhNWU1OTFhZTY0ZWQuLmI1OGE5NDM2N2QwYzFhMzViNDExY2RjYmMzM2I1
YjRlMTFjZjkyZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMv
U2Nyb2xsQW5pbWF0b3JHZW5lcmljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
ZW5lcmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5jcHAKQEAgLTc4LDIxICs3OCwxMyBAQCBib29s
IFNjcm9sbEFuaW1hdG9yR2VuZXJpYzo6aGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGV2ZW50KQogICAgIHJldHVybiBTY3JvbGxBbmltYXRvcjo6aGFuZGxlV2hlZWxF
dmVudChldmVudCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5pbWF0b3JHZW5lcmljOjp1cGRhdGVQb3Np
dGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKLXsKLSAgICBGbG9hdFNpemUgZGVsdGEg
PSBwb3NpdGlvbiAtIG1fY3VycmVudFBvc2l0aW9uOwotICAgIG1fY3VycmVudFBvc2l0aW9uID0g
cG9zaXRpb247Ci0gICAgbm90aWZ5UG9zaXRpb25DaGFuZ2VkKGRlbHRhKTsKLSAgICB1cGRhdGVB
Y3RpdmVTY3JvbGxTbmFwSW5kZXhGb3JPZmZzZXQoKTsKLX0KLQogLy8gRklYTUU6IENhbiB3ZSBq
dXN0IHVzZSB0aGUgYmFzZSBjbGFzcyBpbXBsZW1lbnRhdGlvbj8KIHZvaWQgU2Nyb2xsQW5pbWF0
b3JHZW5lcmljOjpzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUoU2Nyb2xsQW5pbWF0aW9uJiBhbmlt
YXRpb24sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAgIGlmICgmYW5pbWF0aW9u
ID09IG1fa2luZXRpY0FuaW1hdGlvbi5nZXQoKSkgewogICAgICAgICAvLyBGSVhNRTogQ2xhcmlm
eSBob3cgYW5pbWF0aW9ucyBpbnRlcmFjdC4gVGhlcmUgc2hvdWxkIG5ldmVyIGJlIG1vcmUgdGhh
biBvbmUgYWN0aXZlIGF0IGEgdGltZS4KICAgICAgICAgbV9zY3JvbGxBbmltYXRpb24tPnN0b3Ao
KTsKLSAgICAgICAgdXBkYXRlUG9zaXRpb24ocG9zaXRpb24pOworICAgICAgICBzZXRDdXJyZW50
UG9zaXRpb24ocG9zaXRpb24sIE5vdGlmeVNjcm9sbGFibGVBcmVhOjpZZXMpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5l
cmljL1Njcm9sbEFuaW1hdG9yR2VuZXJpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ2Vu
ZXJpYy9TY3JvbGxBbmltYXRvckdlbmVyaWMuaAppbmRleCA3YzI3YmE2MDQ4MzY2YjdlMTAxOTk3
YzllNzY4YTRhOTAwOTJlNzU1Li4yZTBkOTZhZjM3NWJjYzQxNDliMDI0OWNmN2M1MWQ1MjBiNWIw
OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9nZW5lcmljL1Njcm9sbEFu
aW1hdG9yR2VuZXJpYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dlbmVyaWMvU2Ny
b2xsQW5pbWF0b3JHZW5lcmljLmgKQEAgLTUwLDEzICs1MCw2IEBAIHByaXZhdGU6CiAgICAgLy8g
U2Nyb2xsQW5pbWF0aW9uQ2xpZW50CiAgICAgdm9pZCBzY3JvbGxBbmltYXRpb25EaWRVcGRhdGUo
U2Nyb2xsQW5pbWF0aW9uJiwgY29uc3QgRmxvYXRQb2ludCYgY3VycmVudFBvc2l0aW9uKSBmaW5h
bDsKIAotICAgIHZvaWQgdXBkYXRlUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwotCi0gICAg
dm9pZCBvdmVybGF5U2Nyb2xsYmFyQW5pbWF0aW9uVGltZXJGaXJlZCgpOwotICAgIHZvaWQgc2hv
d092ZXJsYXlTY3JvbGxiYXJzKCk7Ci0gICAgdm9pZCBoaWRlT3ZlcmxheVNjcm9sbGJhcnMoKTsK
LSAgICB2b2lkIHVwZGF0ZU92ZXJsYXlTY3JvbGxiYXJzT3BhY2l0eSgpOwotCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFNjcm9sbEFuaW1hdGlvbktpbmV0aWM+IG1fa2luZXRpY0FuaW1hdGlvbjsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRv
ck1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgK
aW5kZXggNjExNDJjMDM0YmYwMWEyOTA0OTM0YzIwNzI4NDRiZTIxYzQyZDQ2Zi4uY2JmYTY4MmM1
NmY3NDY4MjgxODQ2ZWYxMzEyYTlmNWVhNWI2OTY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLmgKQEAgLTQzLDggKzQzLDYgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgflNjcm9sbEFuaW1hdG9yTWFjKCk7CiAKIHByaXZhdGU6Ci0gICAgYm9v
bCBzY3JvbGwoU2Nyb2xsYmFyT3JpZW50YXRpb24sIFNjcm9sbEdyYW51bGFyaXR5LCBmbG9hdCBz
dGVwLCBmbG9hdCBtdWx0aXBsaWVyLCBPcHRpb25TZXQ8U2Nyb2xsQmVoYXZpb3I+KSBmaW5hbDsK
LQogICAgIGJvb2wgc2hvdWxkRm9yd2FyZFdoZWVsRXZlbnRzVG9QYXJlbnQoY29uc3QgUGxhdGZv
cm1XaGVlbEV2ZW50JikgY29uc3Q7CiAgICAgYm9vbCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYpIGZpbmFsOwogCkBAIC01Miw4ICs1MCw2IEBAIHByaXZhdGU6CiAK
ICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnRQaGFzZShQbGF0Zm9ybVdoZWVsRXZlbnRQaGFzZSkg
ZmluYWw7CiAgICAgCi0gICAgdm9pZCBub3RpZnlQb3NpdGlvbkNoYW5nZWQoY29uc3QgRmxvYXRT
aXplJiBkZWx0YSkgZmluYWw7Ci0KICAgICBGbG9hdFBvaW50IGFkanVzdFNjcm9sbFBvc2l0aW9u
SWZOZWNlc3NhcnkoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogCiAgICAgYm9vbCBpc1VzZXJT
Y3JvbGxJblByb2dyZXNzKCkgY29uc3QgZmluYWw7CkBAIC02MywxMyArNTksOCBAQCBwcml2YXRl
OgogICAgIGJvb2wgcHJvY2Vzc1doZWVsRXZlbnRGb3JTY3JvbGxTbmFwKGNvbnN0IFBsYXRmb3Jt
V2hlZWxFdmVudCYpIGZpbmFsOwogCiAgICAgLy8gU2Nyb2xsaW5nRWZmZWN0c0NvbnRyb2xsZXJD
bGllbnQuCi0gICAgSW50U2l6ZSBzdHJldGNoQW1vdW50KCkgY29uc3QgZmluYWw7CiAgICAgYm9v
bCBhbGxvd3NIb3Jpem9udGFsU3RyZXRjaGluZyhjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBj
b25zdCBmaW5hbDsKICAgICBib29sIGFsbG93c1ZlcnRpY2FsU3RyZXRjaGluZyhjb25zdCBQbGF0
Zm9ybVdoZWVsRXZlbnQmKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGlzUGlubmVkRm9yU2Nyb2xs
RGVsdGEoY29uc3QgRmxvYXRTaXplJikgY29uc3QgZmluYWw7Ci0gICAgUmVjdEVkZ2VzPGJvb2w+
IGVkZ2VQaW5uZWRTdGF0ZSgpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgYWxsb3dzSG9yaXpvbnRh
bFNjcm9sbGluZygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgYWxsb3dzVmVydGljYWxTY3JvbGxp
bmcoKSBjb25zdCBmaW5hbDsKICAgICBib29sIHNob3VsZFJ1YmJlckJhbmRJbkRpcmVjdGlvbihT
Y3JvbGxEaXJlY3Rpb24pIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgaW1tZWRpYXRlU2Nyb2xsQnlX
aXRob3V0Q29udGVudEVkZ2VDb25zdHJhaW50cyhjb25zdCBGbG9hdFNpemUmKSBmaW5hbDsKICAg
ICB2b2lkIGltbWVkaWF0ZVNjcm9sbEJ5KGNvbnN0IEZsb2F0U2l6ZSYpIGZpbmFsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCmluZGV4IDI3
NWYxMjM2YzQyNGNjMzU1ZjBiZDNkNTg5ZGM3ZDU4NGFiOThkMjguLjZlMzc3MWVkZTQ2NGRiN2Jj
MzQ1MGIzNGIyMTk2NDZhNmI1MWVlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2Nyb2xsQW5pbWF0b3JNYWMubW0KQEAgLTczLDEzICs3Myw2IEBAIHN0YXRpYyBib29s
IHJ1YmJlckJhbmRpbmdFbmFibGVkRm9yU3lzdGVtKCkKICAgICByZXR1cm4gZW5hYmxlZDsKIH0K
IAotYm9vbCBTY3JvbGxBbmltYXRvck1hYzo6c2Nyb2xsKFNjcm9sbGJhck9yaWVudGF0aW9uIG9y
aWVudGF0aW9uLCBTY3JvbGxHcmFudWxhcml0eSBncmFudWxhcml0eSwgZmxvYXQgc3RlcCwgZmxv
YXQgbXVsdGlwbGllciwgT3B0aW9uU2V0PFNjcm9sbEJlaGF2aW9yPiBiZWhhdmlvcikKLXsKLSAg
ICBtX3Njcm9sbGFibGVBcmVhLnNjcm9sbGJhcnNDb250cm9sbGVyKCkuc2V0U2Nyb2xsYmFyQW5p
bWF0aW9uc1Vuc3VzcGVuZGVkQnlVc2VySW50ZXJhY3Rpb24odHJ1ZSk7Ci0KLSAgICByZXR1cm4g
U2Nyb2xsQW5pbWF0b3I6OnNjcm9sbChvcmllbnRhdGlvbiwgZ3JhbnVsYXJpdHksIHN0ZXAsIG11
bHRpcGxpZXIsIGJlaGF2aW9yKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxBbmltYXRvck1hYzo6
YWRqdXN0U2Nyb2xsUG9zaXRpb25JZk5lY2Vzc2FyeShjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
bikgY29uc3QKIHsKICAgICBpZiAoIW1fc2Nyb2xsYWJsZUFyZWEuY29uc3RyYWluc1Njcm9sbGlu
Z1RvQ29udGVudEVkZ2UoKSkKQEAgLTExNSwxMiArMTA4LDYgQEAgYm9vbCBTY3JvbGxBbmltYXRv
ck1hYzo6aXNTY3JvbGxTbmFwSW5Qcm9ncmVzcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fc2Nyb2xs
Q29udHJvbGxlci5pc1Njcm9sbFNuYXBJblByb2dyZXNzKCk7CiB9CiAKLXZvaWQgU2Nyb2xsQW5p
bWF0b3JNYWM6Om5vdGlmeVBvc2l0aW9uQ2hhbmdlZChjb25zdCBGbG9hdFNpemUmIGRlbHRhKQot
ewotICAgIG1fc2Nyb2xsYWJsZUFyZWEuc2Nyb2xsYmFyc0NvbnRyb2xsZXIoKS5ub3RpZnlDb250
ZW50QXJlYVNjcm9sbGVkKGRlbHRhKTsKLSAgICBTY3JvbGxBbmltYXRvcjo6bm90aWZ5UG9zaXRp
b25DaGFuZ2VkKGRlbHRhKTsKLX0KLQogdm9pZCBTY3JvbGxBbmltYXRvck1hYzo6aGFuZGxlV2hl
ZWxFdmVudFBoYXNlKFBsYXRmb3JtV2hlZWxFdmVudFBoYXNlIHBoYXNlKQogewogICAgIExPR19X
SVRIX1NUUkVBTShPdmVybGF5U2Nyb2xsYmFycywgc3RyZWFtIDw8ICJTY3JvbGxBbmltYXRvck1h
YyAiIDw8IHRoaXMgPDwgIiBzY3JvbGxhYmxlQXJlYSAiIDw8IG1fc2Nyb2xsYWJsZUFyZWEgPDwg
IiBoYW5kbGVXaGVlbEV2ZW50UGhhc2UgIiA8PCBwaGFzZSk7CkBAIC0xNzAsMjIgKzE1Nyw2IEBA
IGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmhhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1X
aGVlbEV2ZW50JiB3aGVlbEV2ZW50KQogICAgIHJldHVybiBkaWRIYW5kbGVFdmVudDsKIH0KIAot
UmVjdEVkZ2VzPGJvb2w+IFNjcm9sbEFuaW1hdG9yTWFjOjplZGdlUGlubmVkU3RhdGUoKSBjb25z
dAotewotICAgIHJldHVybiBtX3Njcm9sbGFibGVBcmVhLmVkZ2VQaW5uZWRTdGF0ZSgpOwotfQot
Ci1ib29sIFNjcm9sbEFuaW1hdG9yTWFjOjppc1Bpbm5lZEZvclNjcm9sbERlbHRhKGNvbnN0IEZs
b2F0U2l6ZSYgZGVsdGEpIGNvbnN0Ci17Ci0gICAgaWYgKGZhYnNmKGRlbHRhLmhlaWdodCgpKSA+
PSBmYWJzZihkZWx0YS53aWR0aCgpKSkKLSAgICAgICAgcmV0dXJuIG1fc2Nyb2xsYWJsZUFyZWEu
aXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhkZWx0YS5oZWlnaHQoKSwgU2Nyb2xsRXZlbnRB
eGlzOjpWZXJ0aWNhbCk7Ci0KLSAgICBpZiAoZGVsdGEud2lkdGgoKSkKLSAgICAgICAgcmV0dXJu
IG1fc2Nyb2xsYWJsZUFyZWEuaXNQaW5uZWRGb3JTY3JvbGxEZWx0YU9uQXhpcyhkZWx0YS53aWR0
aCgpLCBTY3JvbGxFdmVudEF4aXM6Okhvcml6b250YWwpOwotCi0gICAgcmV0dXJuIGZhbHNlOwot
fQotCiBzdGF0aWMgYm9vbCBnZXN0dXJlU2hvdWxkQmVnaW5TbmFwKGNvbnN0IFBsYXRmb3JtV2hl
ZWxFdmVudCYgd2hlZWxFdmVudCwgU2Nyb2xsRXZlbnRBeGlzIGF4aXMsIGNvbnN0IExheW91dFNj
cm9sbFNuYXBPZmZzZXRzSW5mbyogb2Zmc2V0SW5mbykKIHsKICAgICBpZiAoIW9mZnNldEluZm8p
CkBAIC0yNDQsMjEgKzIxNSw2IEBAIGJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c0hvcml6
b250YWxTdHJldGNoaW5nKGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYgd2hlCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1JbnRTaXplIFNjcm9sbEFuaW1hdG9yTWFjOjpzdHJldGNoQW1vdW50KCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5vdmVyaGFuZ0Ftb3VudCgpOwot
fQotCi1ib29sIFNjcm9sbEFuaW1hdG9yTWFjOjphbGxvd3NIb3Jpem9udGFsU2Nyb2xsaW5nKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5hbGxvd3NIb3Jpem9udGFsU2Ny
b2xsaW5nKCk7Ci19Ci0KLWJvb2wgU2Nyb2xsQW5pbWF0b3JNYWM6OmFsbG93c1ZlcnRpY2FsU2Ny
b2xsaW5nKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYS5hbGxvd3NWZXJ0
aWNhbFNjcm9sbGluZygpOwotfQotCiBib29sIFNjcm9sbEFuaW1hdG9yTWFjOjpzaG91bGRSdWJi
ZXJCYW5kSW5EaXJlY3Rpb24oU2Nyb2xsRGlyZWN0aW9uKSBjb25zdAogewogICAgIHJldHVybiBm
YWxzZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>