<?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>230528</bug_id>
          
          <creation_ts>2021-09-20 18:49:58 -0700</creation_ts>
          <short_desc>Introduce CheapTime</short_desc>
          <delta_ts>2021-09-27 18:50: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>Web Template Framework</component>
          <version>Other</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795388</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-20 18:49:58 -0700</bug_when>
    <thetext>Stashing the patch here.  It&apos;s not a speed-up AFAICT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795389</commentid>
    <comment_count>1</comment_count>
      <attachid>438769</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2021-09-20 18:50:28 -0700</bug_when>
    <thetext>Created attachment 438769
da patch

It&apos;s not a speed-up</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797735</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-27 18:50:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/83601950&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438769</attachid>
            <date>2021-09-20 18:50:28 -0700</date>
            <delta_ts>2021-09-20 18:50:28 -0700</delta_ts>
            <desc>da patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>37678</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShy
ZXZpc2lvbiAyODI3MzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFZNJiB2bSwgU3RydWN0dXJlKiAKICAgICAsIG1fb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyKDApCiAgICAgLCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKDApCiAgICAgLCBtX21l
dGFkYXRhKG90aGVyLm1fbWV0YWRhdGEpCi0gICAgLCBtX2NyZWF0aW9uVGltZShNb25vdG9uaWNU
aW1lOjpub3coKSkKKyAgICAsIG1fY3JlYXRpb25UaW1lKENoZWFwVGltZTo6bm93KCkpCiB7CiAg
ICAgQVNTRVJUKGhlYXAoKS0+aXNEZWZlcnJlZCgpKTsKICAgICBBU1NFUlQobV9zY29wZVJlZ2lz
dGVyLmlzTG9jYWwoKSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Vk0mIHZtLCBTdHJ1Y3R1cmUqIAogICAgICwgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoMCkK
ICAgICAsIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoMCkKICAgICAsIG1fbWV0YWRhdGEo
dW5saW5rZWRDb2RlQmxvY2stPm1ldGFkYXRhKCkubGluaygpKQotICAgICwgbV9jcmVhdGlvblRp
bWUoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2NyZWF0aW9uVGltZShDaGVhcFRpbWU6
Om5vdygpKQogewogICAgIEFTU0VSVChoZWFwKCktPmlzRGVmZXJyZWQoKSk7CiAgICAgQVNTRVJU
KG1fc2NvcGVSZWdpc3Rlci5pc0xvY2FsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMjgyNzM3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC05NjYsNyAr
OTY2LDcgQEAgcHJpdmF0ZToKIAogICAgIFNlY29uZHMgdGltZVNpbmNlQ3JlYXRpb24oKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9jcmVhdGlvblRpbWU7
CisgICAgICAgIHJldHVybiBDaGVhcFRpbWU6Om5vdygpIC0gbV9jcmVhdGlvblRpbWU7CiAgICAg
fQogCiAgICAgdm9pZCBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCkKQEAgLTEwMzksNyArMTAz
OSw3IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8TWV0YWRhdGFUYWJsZT4gbV9tZXRhZGF0YTsK
IAotICAgIE1vbm90b25pY1RpbWUgbV9jcmVhdGlvblRpbWU7CisgICAgQ2hlYXBUaW1lIG1fY3Jl
YXRpb25UaW1lOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzQ291bnRlciB7IDAgfTsKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxSYXJlRGF0YT4gbV9yYXJlRGF0YTsKSW5kZXg6IFNvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjgyNzM3KQorKysgU291cmNlL1dU
Ri9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQAogCQkwRkUxNjQ2QTFCNkZGQzk2MDA0MDBFN0MgLyogTG9jay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkUxNjQ2ODFCNkZGQzk2MDA0
MDBFN0MgLyogTG9jay5jcHAgKi87IH07CiAJCTBGRTQ0NzlDMUI3QUFBMDMwMDk0OThFQiAvKiBX
b3JkTG9jay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRkU0NDc5QTFCN0FBQTAzMDA5NDk4RUIgLyogV29yZExvY2suY3BwICovOyB9OwogCQkwRkVD
M0M1RTFGMzY4QTk3MDBGNTlCNkMgLyogUmVhZFdyaXRlTG9jay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkVDM0M1QzFGMzY4QTk3MDBGNTlCNkMg
LyogUmVhZFdyaXRlTG9jay5jcHAgKi87IH07CisJCTBGRjQ3M0VDMjZGOTRBQzIwMEVCMDgyRSAv
KiBDaGVhcFRpbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZGNDczRUEyNkY5MDNBRDAwRUIwODJFIC8qIENoZWFwVGltZS5jcHAgKi87IH07CiAJ
CTBGRkYxOURDMUJCMzM0RUIwMDg4NkQ5MSAvKiBQYXJhbGxlbEhlbHBlclBvb2wuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRjE5REExQkIzMzRF
QjAwODg2RDkxIC8qIFBhcmFsbGVsSGVscGVyUG9vbC5jcHAgKi87IH07CiAJCTE0MDIyRjQxMThG
NUMzRkMwMDdGRjBFQiAvKiBsaWJibWFsbG9jLmEgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyMkY0MDE4RjVDM0ZDMDA3RkYwRUIgLyogbGliYm1h
bGxvYy5hICovOyB9OwogCQkxNDNEREU5NjIwQzhCQzM3MDA3Rjc2RkEgLyogRW50aXRsZW1lbnRz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRERF
OTUyMEM4QkMzNzAwN0Y3NkZBIC8qIEVudGl0bGVtZW50cy5tbSAqLzsgfTsKQEAgLTMwNiw2ICsz
MDcsOSBAQAogCQkwRkVDODRBRTFCRDgyNTMxMDA4MEZGNzQgLyogR3JhcGhOb2RlV29ya2xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JhcGhOb2RlV29ya2xpc3QuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFQzg0QjAxQkRBQ0QzOTAwODBGRjc0IC8q
IFNjb3BlZExhbWJkYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY29wZWRM
YW1iZGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZFRDY3QjUxQjIyRDREODAw
NjZDRTE1IC8qIFRpbnlQdHJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGlueVB0clNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0NzNFOTI2Rjkw
M0FDMDBFQjA4MkUgLyogQ2hlYXBUaW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENoZWFwVGltZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkY0NzNFQTI2RjkwM0FEMDBFQjA4MkUgLyog
Q2hlYXBUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENoZWFwVGltZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQ3M0VCMjZGOTAzQUQwMEVCMDgyRSAvKiBHZW5lcmlj
VGltZU1peGluLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlbmVyaWNUaW1lTWl4aW4uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNEI0QzQxRTg4OTM5QzAwREJCRTg2IC8qIExpdmVuZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpdmVuZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjg2MDk0MUJDQ0JENzQwMDQ1MTI3RiAvKiBQb2ludGVy
Q29tcGFyaXNvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2ludGVyQ29t
cGFyaXNvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkZCQ0JGQTFGRDM3RTBG
MDA3MkFBRjAgLyogQ291bnRpbmdMb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvdW50aW5nTG9jay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAxMCw2
ICsxMDE0LDggQEAKIAkJCQkwRjVGM0Q2ODFGM0ZFQkE2MDBCMTE1QTIgLyogQ2FnZWRVbmlxdWVQ
dHIuaCAqLywKIAkJCQk0MTNGRThGNTFGOEQyRUFCMDBGNkQ3RDcgLyogQ2FsbGJhY2tBZ2dyZWdh
dG9yLmggKi8sCiAJCQkJNDYyMDlBMjcyNjZENTQzQTAwN0Y4RjRBIC8qIENhbmNlbGxhYmxlVGFz
ay5oICovLAorCQkJCTBGRjQ3M0VBMjZGOTAzQUQwMEVCMDgyRSAvKiBDaGVhcFRpbWUuY3BwICov
LAorCQkJCTBGRjQ3M0U5MjZGOTAzQUMwMEVCMDgyRSAvKiBDaGVhcFRpbWUuaCAqLywKIAkJCQlB
OEE0NzI2QTE1MUE4MjVBMDA0MTIzRkYgLyogQ2hlY2tlZEFyaXRobWV0aWMuaCAqLywKIAkJCQlB
OEE0NzI2QjE1MUE4MjVBMDA0MTIzRkYgLyogQ2hlY2tlZEJvb2xlYW4uaCAqLywKIAkJCQk5QkI5
MUY1MTI2NDhFQTREMDBBNTYyMTcgLyogQ2hlY2tlZFB0ci5oICovLApAQCAtMTA4Miw2ICsxMDg4
LDcgQEAKIAkJCQkxQTFEOEI5RDE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVy
LmNwcCAqLywKIAkJCQkxQTFEOEI5QjE3MzE4NkNFMDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRj
aGVyLmggKi8sCiAJCQkJNTNGMUQ5ODYyMDQ3N0I5ODAwRUJDNkJGIC8qIEZ1bmN0aW9uVHJhaXRz
LmggKi8sCisJCQkJMEZGNDczRUIyNkY5MDNBRDAwRUIwODJFIC8qIEdlbmVyaWNUaW1lTWl4aW4u
aCAqLywKIAkJCQlBOEE0NzJBODE1MUE4MjVBMDA0MTIzRkYgLyogR2V0UHRyLmggKi8sCiAJCQkJ
MEY1QkYxNzQxRjIzRDQ5QTAwMjlEOTFEIC8qIEdpZ2FjYWdlLmNwcCAqLywKIAkJCQkwRjVCRjE3
NTFGMjNENDlBMDAyOUQ5MUQgLyogR2lnYWNhZ2UuaCAqLywKQEAgLTE3NTAsNiArMTc1Nyw3IEBA
CiAJCQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVkLWR0b2EuY2MgaW4gU291cmNl
cyAqLywKIAkJCQkxQTFEOEI5RTE3MzE4Nzk4MDAxNDFEQTQgLyogRnVuY3Rpb25EaXNwYXRjaGVy
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNUJGMTc2MUYyM0Q0OUEwMDI5RDkxRCAvKiBHaWdh
Y2FnZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRkY0NzNFQzI2Rjk0QUMyMDBFQjA4MkUgLyog
Q2hlYXBUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMzBCQTkwMUU3ODcwOEUwMDJDQTg0
NyAvKiBHbG9iYWxWZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJDQ0Q4OTJBMTVDMDM5
MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlB
OEE0NzNEODE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL1dURi93dGYvQ2hlYXBUaW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V1RGL3d0Zi9DaGVhcFRpbWUuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XVEYvd3RmL0No
ZWFwVGltZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSA8d3RmL0NoZWFwVGltZS5oPgorCisjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUu
aD4KKyNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KKyNpbmNsdWRlIDx3dGYvV2FsbFRpbWUu
aD4KKworbmFtZXNwYWNlIFdURiB7CisKK01vbm90b25pY1RpbWUgQ2hlYXBUaW1lOjphcHByb3hp
bWF0ZU1vbm90b25pY1RpbWUoKSBjb25zdAoreworICAgIHJldHVybiAqdGhpcyAtIG5vdygpICsg
TW9ub3RvbmljVGltZTo6bm93KCk7Cit9CisKK1dhbGxUaW1lIENoZWFwVGltZTo6YXBwcm94aW1h
dGVXYWxsVGltZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuICp0aGlzIC0gbm93KCkgKyBXYWxsVGlt
ZTo6bm93KCk7Cit9CisKK3ZvaWQgQ2hlYXBUaW1lOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNv
bnN0Cit7CisgICAgb3V0LnByaW50KCJDaGVhcCgiLCBtX3ZhbHVlLCAiIHNlYykiKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV1RGCisKKwpJbmRleDogU291cmNlL1dURi93dGYvQ2hlYXBUaW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ2hlYXBUaW1lLmgJKG5vbmV4aXN0ZW50KQor
KysgU291cmNlL1dURi93dGYvQ2hlYXBUaW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
MjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvQ2xvY2tUeXBlLmg+CisjaW5jbHVkZSA8d3RmL0dl
bmVyaWNUaW1lTWl4aW4uaD4KKworbmFtZXNwYWNlIFdURiB7CisKK2NsYXNzIE1vbm90b25pY1Rp
bWU7CitjbGFzcyBXYWxsVGltZTsKK2NsYXNzIFByaW50U3RyZWFtOworCisvLyBUaGUgY3VycmVu
dCB0aW1lIGFjY29yZGluZyB0byBhIGNoZWFwLXRvLWFjY2VzcyBjbG9jay4gVGhlIHBvaW50IG9m
IHRoaXMgY2xhc3MgaXMgdGhhdAorLy8gQ2hlYXBUaW1lOjpub3coKSBleGVjdXRlcyBmYXN0ZXIg
dGhhbiBlaXRoZXIgTW9ub3RvbmljVGltZTo6bm93KCkgb3IgV2FsbFRpbWU6Om5vdygpLiBUaGlz
IGNsb2NrCisvLyBtYXkgb3IgbWF5IG5vdCBiZSBtb25vdG9uaWMuIFRoaXMgY2xvY2sgbWF5IGJl
IHZlcnkgY29hcnNlIChsaWtlIDEwbXMgZ3JhbnVsZSBvciB3b3JzZSkuIEl0J3MgYmVzdAorLy8g
dG8gb25seSByZWx5IG9uIENoZWFwVGltZSBmb3IgaGV1cmlzdGljcyBhbmQgbmV2ZXIgZm9yIHRp
bWVyIHNjaGVkdWxpbmcgb3IgcGVyZm9ybWFuY2UgbWVhc3VyZW1lbnQuCisvLworLy8gVGhpcyB1
c2VzIGZsb2F0aW5nIHBvaW50IGludGVybmFsbHkgc28gdGhhdCB5b3UgY2FuIHJlYXNvbiBhYm91
dCBpbmZpbml0eSBhbmQgb3RoZXIgdGhpbmdzIHRoYXQgYXJpc2UKKy8vIGluIG1hdGguIEl0J3Mg
YWNjZXB0YWJsZSB0byB1c2UgdGhpcyB0byB3cmFwIE5hTiB0aW1lcywgbmVnYXRpdmUgdGltZXMs
IGFuZCBpbmZpbml0ZSB0aW1lcywgc28gbG9uZworLy8gYXMgdGhleSBhcmUgYWxsIHJlbGF0aXZl
IHRvIHRoZSBzYW1lIGNsb2NrLgorY2xhc3MgQ2hlYXBUaW1lIGZpbmFsIDogcHVibGljIEdlbmVy
aWNUaW1lTWl4aW48Q2hlYXBUaW1lPiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0ZXhwciBDbG9ja1R5cGUgY2xvY2tUeXBlID0gQ2xvY2tU
eXBlOjpNb25vdG9uaWM7CisgICAgCisgICAgLy8gVGhpcyBpcyB0aGUgZXBvY2guIFNvLCB4LnNl
Y29uZHNTaW5jZUVwb2NoKCkgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIHggLSBDaGVhcFRpbWUoKS4K
KyAgICBjb25zdGV4cHIgQ2hlYXBUaW1lKCkgeyB9CisgICAgCisjaWYgT1MoREFSV0lOKQorICAg
IFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgQ2hlYXBUaW1lIGZyb21NYWNoQWJzb2x1dGVUaW1l
KHVpbnQ2NF90KTsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdWludDY0X3QgdG9NYWNoQWJzb2x1
dGVUaW1lKCkgY29uc3Q7CisjZW5kaWYKKworICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMg
Q2hlYXBUaW1lIG5vdygpOworICAgIAorICAgIENoZWFwVGltZSBhcHByb3hpbWF0ZUNoZWFwVGlt
ZSgpIGNvbnN0IHsgcmV0dXJuICp0aGlzOyB9CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1vbm90
b25pY1RpbWUgYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCkgY29uc3Q7CisgICAgV1RGX0VYUE9S
VF9QUklWQVRFIFdhbGxUaW1lIGFwcHJveGltYXRlV2FsbFRpbWUoKSBjb25zdDsKKyAgICAKKyAg
ICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICEhbV92
YWx1ZTsgfQorICAgIAorICAgIENoZWFwVGltZSYgb3BlcmF0b3IrPShTZWNvbmRzIG90aGVyKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgKyBvdGhlcjsKKyAgICB9CisgICAg
CisgICAgQ2hlYXBUaW1lJiBvcGVyYXRvci09KFNlY29uZHMgb3RoZXIpCisgICAgeworICAgICAg
ICByZXR1cm4gKnRoaXMgPSAqdGhpcyAtIG90aGVyOworICAgIH0KKyAgICAKKyAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CisKKyAgICBzdHJ1Y3Qg
TWFya2FibGVUcmFpdHM7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIEdlbmVyaWNUaW1l
TWl4aW48Q2hlYXBUaW1lPjsKKyAgICAKKyAgICBjb25zdGV4cHIgQ2hlYXBUaW1lKGRvdWJsZSBy
YXdWYWx1ZSkKKyAgICAgICAgOiBHZW5lcmljVGltZU1peGluPENoZWFwVGltZT4ocmF3VmFsdWUp
CisgICAgeworICAgIH0KK307CisKK3N0cnVjdCBDaGVhcFRpbWU6Ok1hcmthYmxlVHJhaXRzIHsK
KyAgICBzdGF0aWMgYm9vbCBpc0VtcHR5VmFsdWUoQ2hlYXBUaW1lIHRpbWUpCisgICAgeworICAg
ICAgICByZXR1cm4gc3RkOjppc25hbih0aW1lLm1fdmFsdWUpOworICAgIH0KKworICAgIHN0YXRp
YyBjb25zdGV4cHIgQ2hlYXBUaW1lIGVtcHR5VmFsdWUoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IENoZWFwVGltZTo6bmFuKCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKK25h
bWVzcGFjZSBzdGQgeworCitpbmxpbmUgYm9vbCBpc25hbihXVEY6OkNoZWFwVGltZSB0aW1lKQor
eworICAgIHJldHVybiBzdGQ6OmlzbmFuKHRpbWUuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgp
KTsKK30KKworaW5saW5lIGJvb2wgaXNpbmYoV1RGOjpDaGVhcFRpbWUgdGltZSkKK3sKKyAgICBy
ZXR1cm4gc3RkOjppc2luZih0aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSk7Cit9CisK
K2lubGluZSBib29sIGlzZmluaXRlKFdURjo6Q2hlYXBUaW1lIHRpbWUpCit7CisgICAgcmV0dXJu
IHN0ZDo6aXNmaW5pdGUodGltZS5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVlKCkpOworfQorCit9
IC8vIG5hbWVzcGFjZSBzdGQKKwordXNpbmcgV1RGOjpDaGVhcFRpbWU7CkluZGV4OiBTb3VyY2Uv
V1RGL3d0Zi9DbG9ja1R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0Nsb2Nr
VHlwZS5jcHAJKHJldmlzaW9uIDI4MjczNykKKysrIFNvdXJjZS9XVEYvd3RmL0Nsb2NrVHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDkgQEAgdm9pZCBwcmludEludGVybmFsKFBy
aW50U3RyZWFtJiBvdXQsIENsbwogICAgIGNhc2UgQ2xvY2tUeXBlOjpNb25vdG9uaWM6CiAgICAg
ICAgIG91dC5wcmludCgiTW9ub3RvbmljIik7CiAgICAgICAgIHJldHVybjsKKyAgICBjYXNlIENs
b2NrVHlwZTo6Q2hlYXA6CisgICAgICAgIG91dC5wcmludCgiQ2hlYXAiKTsKKyAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQpJbmRleDog
U291cmNlL1dURi93dGYvQ2xvY2tUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
Q2xvY2tUeXBlLmgJKHJldmlzaW9uIDI4MjczNykKKysrIFNvdXJjZS9XVEYvd3RmL0Nsb2NrVHlw
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTMxLDcgKzMxLDggQEAgY2xhc3MgUHJpbnRTdHJlYW07CiAKIGVu
dW0gY2xhc3MgQ2xvY2tUeXBlIHsKICAgICBXYWxsLAotICAgIE1vbm90b25pYworICAgIE1vbm90
b25pYywKKyAgICBDaGVhcAogfTsKIAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgcHJpbnRJbnRl
cm5hbChQcmludFN0cmVhbSYsIENsb2NrVHlwZSk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9DdXJy
ZW50VGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ3VycmVudFRpbWUuY3Bw
CShyZXZpc2lvbiAyODI3MzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9DdXJyZW50VGltZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogCisjaW5jbHVkZSA8d3RmL0NoZWFwVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCiAjaWYgT1MoREFSV0lOKQpAQCAtMjY0LDE0ICsy
NjUsMzQgQEAgc3RhdGljIG1hY2hfdGltZWJhc2VfaW5mb19kYXRhX3QmIG1hY2hUaQogICAgIHJl
dHVybiB0aW1lYmFzZUluZm87CiB9CiAKK3N0YXRpYyBkb3VibGUgc2Vjb25kc0Zyb21NYWNoQWJz
b2x1dGVUaW1lKHVpbnQ2NF90IG1hY2hBYnNvbHV0ZVRpbWUpCit7CisgICAgcmV0dXJuIChtYWNo
QWJzb2x1dGVUaW1lICogbWFjaFRpbWViYXNlSW5mbygpLm51bWVyKSAvICgxLjBlOSAqIG1hY2hU
aW1lYmFzZUluZm8oKS5kZW5vbSk7Cit9CisKK3N0YXRpYyB1aW50NjRfdCBtYWNoQWJzb2x1dGVU
aW1lRnJvbVNlY29uZHMoZG91YmxlIHNlY29uZHMpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVpbnQ2NF90Pigoc2Vjb25kcyAqIDEuMGU5ICogbWFjaFRpbWViYXNlSW5mbygpLmRlbm9tKSAv
IG1hY2hUaW1lYmFzZUluZm8oKS5udW1lcik7Cit9CisKIE1vbm90b25pY1RpbWUgTW9ub3Rvbmlj
VGltZTo6ZnJvbU1hY2hBYnNvbHV0ZVRpbWUodWludDY0X3QgbWFjaEFic29sdXRlVGltZSkKIHsK
LSAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMoKG1hY2hBYnNvbHV0ZVRpbWUgKiBtYWNoVGltZWJh
c2VJbmZvKCkubnVtZXIpIC8gKDEuMGU5ICogbWFjaFRpbWViYXNlSW5mbygpLmRlbm9tKSk7Cisg
ICAgcmV0dXJuIGZyb21SYXdTZWNvbmRzKHNlY29uZHNGcm9tTWFjaEFic29sdXRlVGltZShtYWNo
QWJzb2x1dGVUaW1lKSk7CiB9CiAKIHVpbnQ2NF90IE1vbm90b25pY1RpbWU6OnRvTWFjaEFic29s
dXRlVGltZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQ2NF90PigobV92
YWx1ZSAqIDEuMGU5ICogbWFjaFRpbWViYXNlSW5mbygpLmRlbm9tKSAvIG1hY2hUaW1lYmFzZUlu
Zm8oKS5udW1lcik7CisgICAgcmV0dXJuIG1hY2hBYnNvbHV0ZVRpbWVGcm9tU2Vjb25kcyhtX3Zh
bHVlKTsKK30KKworQ2hlYXBUaW1lIENoZWFwVGltZTo6ZnJvbU1hY2hBYnNvbHV0ZVRpbWUodWlu
dDY0X3QgbWFjaEFic29sdXRlVGltZSkKK3sKKyAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMoc2Vj
b25kc0Zyb21NYWNoQWJzb2x1dGVUaW1lKG1hY2hBYnNvbHV0ZVRpbWUpKTsKK30KKwordWludDY0
X3QgQ2hlYXBUaW1lOjp0b01hY2hBYnNvbHV0ZVRpbWUoKSBjb25zdAoreworICAgIHJldHVybiBt
YWNoQWJzb2x1dGVUaW1lRnJvbVNlY29uZHMobV92YWx1ZSk7CiB9CiAjZW5kaWYKIApAQCAtMjk3
LDQgKzMxOCwxMyBAQCBNb25vdG9uaWNUaW1lIE1vbm90b25pY1RpbWU6Om5vdygpCiAjZW5kaWYK
IH0KIAorQ2hlYXBUaW1lIENoZWFwVGltZTo6bm93KCkKK3sKKyNpZiBPUyhEQVJXSU4pCisgICAg
cmV0dXJuIGZyb21NYWNoQWJzb2x1dGVUaW1lKG1hY2hfYXBwcm94aW1hdGVfdGltZSgpKTsKKyNl
bHNlCisgICAgcmV0dXJuIENoZWFwVGltZTo6ZnJvbVJhd1NlY29uZHMoTW9ub3RvbmljVGltZTo6
bm93KCkuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKKyNlbmRpZgorfQorCiB9IC8vIG5h
bWVzcGFjZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0dlbmVyaWNUaW1lTWl4aW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HZW5lcmljVGltZU1peGluLmgJKG5vbmV4aXN0ZW50
KQorKysgU291cmNlL1dURi93dGYvR2VuZXJpY1RpbWVNaXhpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsMTIxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgU3VidHlwZT4KK2NsYXNzIEdlbmVy
aWNUaW1lTWl4aW4geworcHVibGljOgorICAgIGNvbnN0ZXhwciBHZW5lcmljVGltZU1peGluKCkg
eyB9CisKKyAgICBzdGF0aWMgY29uc3RleHByIFN1YnR5cGUgZnJvbVJhd1NlY29uZHMoZG91Ymxl
IHZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFN1YnR5cGUodmFsdWUpOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdGV4cHIgU3VidHlwZSBpbmZpbml0eSgpIHsgcmV0dXJuIGZyb21SYXdT
ZWNvbmRzKHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6aW5maW5pdHkoKSk7IH0KKyAgICBz
dGF0aWMgY29uc3RleHByIFN1YnR5cGUgbmFuKCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMoc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKSk7IH0KKyAgICAKKyAgICBjb25z
dGV4cHIgU2Vjb25kcyBzZWNvbmRzU2luY2VFcG9jaCgpIGNvbnN0IHsgcmV0dXJuIFNlY29uZHMo
bV92YWx1ZSk7IH0KKyAgICAKKyAgICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQorICAgIAorICAgIGNvbnN0ZXhwciBTdWJ0eXBl
IG9wZXJhdG9yKyhTZWNvbmRzIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGZy
b21SYXdTZWNvbmRzKG1fdmFsdWUgKyBvdGhlci52YWx1ZSgpKTsKKyAgICB9CisgICAgCisgICAg
Y29uc3RleHByIFN1YnR5cGUgb3BlcmF0b3ItKFNlY29uZHMgb3RoZXIpIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMobV92YWx1ZSAtIG90aGVyLnZhbHVlKCkpOwor
ICAgIH0KKyAgICAKKyAgICBTZWNvbmRzIG9wZXJhdG9yJShTZWNvbmRzIG90aGVyKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuIFNlY29uZHMgeyBmbW9kKG1fdmFsdWUsIG90aGVyLnZhbHVl
KCkpIH07CisgICAgfQorICAgIAorICAgIC8vIFRpbWUgaXMgYSBzY2FsYXIgYW5kIHNjYWxhcnMg
Y2FuIGJlIG5lZ2F0ZWQgYXMgdGhpcyBjb3VsZCBhcmlzZSBmcm9tIGFsZ2VicmFpYworICAgIC8v
IHRyYW5zZm9ybWF0aW9ucy4gU28sIHdlIGFsbG93IGl0LgorICAgIGNvbnN0ZXhwciBTdWJ0eXBl
IG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZnJvbVJhd1NlY29uZHMo
LW1fdmFsdWUpOworICAgIH0KKyAgICAKKyAgICBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvci0o
U3VidHlwZSBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBTZWNvbmRzKG1fdmFs
dWUgLSBvdGhlci5tX3ZhbHVlKTsKKyAgICB9CisgICAgCisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I9PShTdWJ0eXBlIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFs
dWUgPT0gb3RoZXIubV92YWx1ZTsKKyAgICB9CisgICAgCisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3IhPShTdWJ0eXBlIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFs
dWUgIT0gb3RoZXIubV92YWx1ZTsKKyAgICB9CisgICAgCisgICAgY29uc3RleHByIGJvb2wgb3Bl
cmF0b3I8KFN1YnR5cGUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1
ZSA8IG90aGVyLm1fdmFsdWU7CisgICAgfQorICAgIAorICAgIGNvbnN0ZXhwciBib29sIG9wZXJh
dG9yPihTdWJ0eXBlIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdmFsdWUg
PiBvdGhlci5tX3ZhbHVlOworICAgIH0KKyAgICAKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cjw9KFN1YnR5cGUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZSA8
PSBvdGhlci5tX3ZhbHVlOworICAgIH0KKyAgICAKKyAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRv
cj49KFN1YnR5cGUgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV92YWx1ZSA+
PSBvdGhlci5tX3ZhbHVlOworICAgIH0KKyAgICAKKyAgICBTdWJ0eXBlIGlzb2xhdGVkQ29weSgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gU3VidHlwZShtX3ZhbHVlKTsKKyAgICB9CisK
K3Byb3RlY3RlZDoKKyAgICBjb25zdGV4cHIgR2VuZXJpY1RpbWVNaXhpbihkb3VibGUgcmF3VmFs
dWUpCisgICAgICAgIDogbV92YWx1ZShyYXdWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgZG91
YmxlIG1fdmFsdWUgeyAwIH07Cit9OworCit9IC8vIG5hbWVzcGFjZSBXVEYKKwpJbmRleDogU291
cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93
dGYvTW9ub3RvbmljVGltZS5jcHAJKHJldmlzaW9uIDI4MjczNykKKysrIFNvdXJjZS9XVEYvd3Rm
L01vbm90b25pY1RpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAKKyNpbmNsdWRl
IDx3dGYvQ2hlYXBUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAjaW5jbHVk
ZSA8d3RmL1dhbGxUaW1lLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCitDaGVhcFRpbWUgTW9ub3Rv
bmljVGltZTo6YXBwcm94aW1hdGVDaGVhcFRpbWUoKSBjb25zdAoreworICAgIHJldHVybiAqdGhp
cyAtIG5vdygpICsgQ2hlYXBUaW1lOjpub3coKTsKK30KKwogV2FsbFRpbWUgTW9ub3RvbmljVGlt
ZTo6YXBwcm94aW1hdGVXYWxsVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICp0aGlzIC0gbm93
KCkgKyBXYWxsVGltZTo6bm93KCk7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvTW9ub3RvbmljVGltZS5oCShyZXZpc2lv
biAyODI3MzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9Nb25vdG9uaWNUaW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0yNiwxMCArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Ns
b2NrVHlwZS5oPgotI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CisjaW5jbHVkZSA8d3RmL0dlbmVy
aWNUaW1lTWl4aW4uaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKK2NsYXNzIENoZWFwVGltZTsKIGNs
YXNzIFdhbGxUaW1lOwogY2xhc3MgUHJpbnRTdHJlYW07CiAKQEAgLTM3LDcgKzM4LDcgQEAgY2xh
c3MgUHJpbnRTdHJlYW07CiAvLyBwb3NzaWJseSBkb24ndCBjb3VudCBkb3dudGltZS4gVGhpcyB1
c2VzIGZsb2F0aW5nIHBvaW50IGludGVybmFsbHkgc28gdGhhdCB5b3UgY2FuIHJlYXNvbiBhYm91
dAogLy8gaW5maW5pdHkgYW5kIG90aGVyIHRoaW5ncyB0aGF0IGFyaXNlIGluIG1hdGguIEl0J3Mg
YWNjZXB0YWJsZSB0byB1c2UgdGhpcyB0byB3cmFwIE5hTiB0aW1lcywKIC8vIG5lZ2F0aXZlIHRp
bWVzLCBhbmQgaW5maW5pdGUgdGltZXMsIHNvIGxvbmcgYXMgdGhleSBhcmUgYWxsIHJlbGF0aXZl
IHRvIHRoZSBzYW1lIGNsb2NrLgotY2xhc3MgTW9ub3RvbmljVGltZSBmaW5hbCB7CitjbGFzcyBN
b25vdG9uaWNUaW1lIGZpbmFsIDogcHVibGljIEdlbmVyaWNUaW1lTWl4aW48TW9ub3RvbmljVGlt
ZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdGV4cHIgQ2xvY2tUeXBlIGNsb2NrVHlwZSA9IENsb2NrVHlwZTo6TW9ub3RvbmljOwpAQCAt
NDUsMTMgKzQ2LDYgQEAgcHVibGljOgogICAgIC8vIFRoaXMgaXMgdGhlIGVwb2NoLiBTbywgeC5z
ZWNvbmRzU2luY2VFcG9jaCgpIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB4IC0gTW9ub3RvbmljVGlt
ZSgpLgogICAgIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lKCkgeyB9CiAgICAgCi0gICAgLy8gQ2Fs
bCB0aGlzIGlmIHlvdSBrbm93IGZvciBzdXJlIHRoYXQgdGhlIGRvdWJsZSByZXByZXNlbnRzIG1v
bm90b25pYyB0aW1lIGFjY29yZGluZyB0byB0aGUKLSAgICAvLyBzYW1lIHRpbWUgc291cmNlIGFz
IE1vbm90b25pY1RpbWUuIEl0IG11c3QgYmUgaW4gc2Vjb25kcy4KLSAgICBzdGF0aWMgY29uc3Rl
eHByIE1vbm90b25pY1RpbWUgZnJvbVJhd1NlY29uZHMoZG91YmxlIHZhbHVlKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIE1vbm90b25pY1RpbWUodmFsdWUpOwotICAgIH0KLQogI2lmIE9TKERBUldJ
TikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1vbm90b25pY1RpbWUgZnJvbU1hY2hB
YnNvbHV0ZVRpbWUodWludDY0X3QpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB1aW50NjRfdCB0
b01hY2hBYnNvbHV0ZVRpbWUoKSBjb25zdDsKQEAgLTU5LDkwICs1MywyNCBAQCBwdWJsaWM6CiAK
ICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIE1vbm90b25pY1RpbWUgbm93KCk7CiAgICAg
Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lIGluZmluaXR5KCkgeyByZXR1cm4g
ZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpKTsg
fQotICAgIHN0YXRpYyBjb25zdGV4cHIgTW9ub3RvbmljVGltZSBuYW4oKSB7IHJldHVybiBmcm9t
UmF3U2Vjb25kcyhzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46OnF1aWV0X05hTigpKTsgfQot
Ci0gICAgY29uc3RleHByIFNlY29uZHMgc2Vjb25kc1NpbmNlRXBvY2goKSBjb25zdCB7IHJldHVy
biBTZWNvbmRzKG1fdmFsdWUpOyB9Ci0gICAgCisgICAgV1RGX0VYUE9SVF9QUklWQVRFIENoZWFw
VGltZSBhcHByb3hpbWF0ZUNoZWFwVGltZSgpIGNvbnN0OwogICAgIE1vbm90b25pY1RpbWUgYXBw
cm94aW1hdGVNb25vdG9uaWNUaW1lKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgV2FsbFRpbWUgYXBwcm94aW1hdGVXYWxsVGltZSgpIGNvbnN0OwogICAg
IAogICAgIGV4cGxpY2l0IGNvbnN0ZXhwciBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4g
ISFtX3ZhbHVlOyB9CiAgICAgCi0gICAgY29uc3RleHByIE1vbm90b25pY1RpbWUgb3BlcmF0b3Ir
KFNlY29uZHMgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gZnJvbVJhd1NlY29u
ZHMobV92YWx1ZSArIG90aGVyLnZhbHVlKCkpOwotICAgIH0KLSAgICAKLSAgICBjb25zdGV4cHIg
TW9ub3RvbmljVGltZSBvcGVyYXRvci0oU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBmcm9tUmF3U2Vjb25kcyhtX3ZhbHVlIC0gb3RoZXIudmFsdWUoKSk7Ci0gICAg
fQotCi0gICAgU2Vjb25kcyBvcGVyYXRvciUoU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBTZWNvbmRzIHsgZm1vZChtX3ZhbHVlLCBvdGhlci52YWx1ZSgpKSB9Owot
ICAgIH0KLSAgICAKLSAgICAvLyBUaW1lIGlzIGEgc2NhbGFyIGFuZCBzY2FsYXJzIGNhbiBiZSBu
ZWdhdGVkIGFzIHRoaXMgY291bGQgYXJpc2UgZnJvbSBhbGdlYnJhaWMKLSAgICAvLyB0cmFuc2Zv
cm1hdGlvbnMuIFNvLCB3ZSBhbGxvdyBpdC4KLSAgICBjb25zdGV4cHIgTW9ub3RvbmljVGltZSBv
cGVyYXRvci0oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb21SYXdTZWNvbmRzKC1t
X3ZhbHVlKTsKLSAgICB9Ci0gICAgCi0gICAgTW9ub3RvbmljVGltZSBvcGVyYXRvcis9KFNlY29u
ZHMgb3RoZXIpCisgICAgTW9ub3RvbmljVGltZSYgb3BlcmF0b3IrPShTZWNvbmRzIG90aGVyKQog
ICAgIHsKICAgICAgICAgcmV0dXJuICp0aGlzID0gKnRoaXMgKyBvdGhlcjsKICAgICB9CiAgICAg
Ci0gICAgTW9ub3RvbmljVGltZSBvcGVyYXRvci09KFNlY29uZHMgb3RoZXIpCisgICAgTW9ub3Rv
bmljVGltZSYgb3BlcmF0b3ItPShTZWNvbmRzIG90aGVyKQogICAgIHsKICAgICAgICAgcmV0dXJu
ICp0aGlzID0gKnRoaXMgLSBvdGhlcjsKICAgICB9CiAgICAgCi0gICAgY29uc3RleHByIFNlY29u
ZHMgb3BlcmF0b3ItKE1vbm90b25pY1RpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICBy
ZXR1cm4gU2Vjb25kcyhtX3ZhbHVlIC0gb3RoZXIubV92YWx1ZSk7Ci0gICAgfQotICAgIAotICAg
IGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oTW9ub3RvbmljVGltZSBvdGhlcikgY29uc3QKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID09IG90aGVyLm1fdmFsdWU7Ci0gICAgfQotICAg
IAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yIT0oTW9ub3RvbmljVGltZSBvdGhlcikgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlICE9IG90aGVyLm1fdmFsdWU7Ci0gICAg
fQotICAgIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPChNb25vdG9uaWNUaW1lIG90aGVy
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPCBvdGhlci5tX3ZhbHVlOwot
ICAgIH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4oTW9ub3RvbmljVGltZSBv
dGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3ZhbHVlID4gb3RoZXIubV92YWx1
ZTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8PShNb25vdG9uaWNU
aW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPD0gb3RoZXIu
bV92YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I+PShNb25v
dG9uaWNUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPj0g
b3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogCi0gICAgTW9ub3RvbmljVGltZSBpc29sYXRlZENv
cHkoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQogICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKICAgICB7CkBAIC0xNzMsMTIgKzEwMSwxMiBAQCBwdWJsaWM6CiAgICAgc3RydWN0IE1h
cmthYmxlVHJhaXRzOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHZW5lcmljVGltZU1p
eGluPE1vbm90b25pY1RpbWU+OworICAgIAogICAgIGNvbnN0ZXhwciBNb25vdG9uaWNUaW1lKGRv
dWJsZSByYXdWYWx1ZSkKLSAgICAgICAgOiBtX3ZhbHVlKHJhd1ZhbHVlKQorICAgICAgICA6IEdl
bmVyaWNUaW1lTWl4aW48TW9ub3RvbmljVGltZT4ocmF3VmFsdWUpCiAgICAgewogICAgIH0KLQot
ICAgIGRvdWJsZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAogc3RydWN0IE1vbm90b25pY1RpbWU6Ok1h
cmthYmxlVHJhaXRzIHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BhcmtpbmdMb3QuY3BwCShyZXZpc2lvbiAyODI3Mzcp
CisrKyBTb3VyY2UvV1RGL3d0Zi9QYXJraW5nTG90LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAyMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI3
LDYgKzI3LDcgQEAKICNpbmNsdWRlIDx3dGYvUGFya2luZ0xvdC5oPgogCiAjaW5jbHVkZSA8bXV0
ZXg+CisjaW5jbHVkZSA8d3RmL0NoZWFwVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hGdW5jdGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJp
bnRTdHJlYW0uaD4KQEAgLTEzMCw3ICsxMzEsNyBAQCBwdWJsaWM6CiAgICAgICAgIFRocmVhZERh
dGEqKiBjdXJyZW50UHRyID0gJnF1ZXVlSGVhZDsKICAgICAgICAgVGhyZWFkRGF0YSogcHJldmlv
dXMgPSBudWxscHRyOwogCi0gICAgICAgIE1vbm90b25pY1RpbWUgdGltZSA9IE1vbm90b25pY1Rp
bWU6Om5vdygpOworICAgICAgICBDaGVhcFRpbWUgdGltZSA9IENoZWFwVGltZTo6bm93KCk7CiAg
ICAgICAgIGJvb2wgdGltZVRvQmVGYWlyID0gZmFsc2U7CiAgICAgICAgIGlmICh0aW1lID4gbmV4
dEZhaXJUaW1lKQogICAgICAgICAgICAgdGltZVRvQmVGYWlyID0gdHJ1ZTsKQEAgLTE5MCw3ICsx
OTEsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhpcyBsb2NrLgogICAgIFdvcmRMb2NrIGxvY2s7CiAg
ICAgCi0gICAgTW9ub3RvbmljVGltZSBuZXh0RmFpclRpbWU7CisgICAgQ2hlYXBUaW1lIG5leHRG
YWlyVGltZTsKICAgICAKICAgICBXZWFrUmFuZG9tIHJhbmRvbTsKIApJbmRleDogU291cmNlL1dU
Ri93dGYvU2Vjb25kcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvU2Vjb25kcy5j
cHAJKHJldmlzaW9uIDI4MjczNykKKysrIFNvdXJjZS9XVEYvd3RmL1NlY29uZHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlIDx3
dGYvU2Vjb25kcy5oPgogCisjaW5jbHVkZSA8d3RmL0NoZWFwVGltZS5oPgogI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KICNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0Zi9Nb25v
dG9uaWNUaW1lLmg+CkBAIC00Niw2ICs0NywxMSBAQCBNb25vdG9uaWNUaW1lIFNlY29uZHM6Om9w
ZXJhdG9yKyhNb25vdG9uCiAgICAgcmV0dXJuIG90aGVyICsgKnRoaXM7CiB9CiAKK0NoZWFwVGlt
ZSBTZWNvbmRzOjpvcGVyYXRvcisoQ2hlYXBUaW1lIG90aGVyKSBjb25zdAoreworICAgIHJldHVy
biBvdGhlciArICp0aGlzOworfQorCiBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgU2Vjb25kczo6
b3BlcmF0b3IrKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYgb3RoZXIpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIG90aGVyICsgKnRoaXM7CkBAIC02MSw2ICs2NywxMSBAQCBNb25vdG9uaWNU
aW1lIFNlY29uZHM6Om9wZXJhdG9yLShNb25vdG9uCiAgICAgcmV0dXJuIE1vbm90b25pY1RpbWU6
OmZyb21SYXdTZWNvbmRzKHZhbHVlKCkgLSBvdGhlci5zZWNvbmRzU2luY2VFcG9jaCgpLnZhbHVl
KCkpOwogfQogCitDaGVhcFRpbWUgU2Vjb25kczo6b3BlcmF0b3ItKENoZWFwVGltZSBvdGhlcikg
Y29uc3QKK3sKKyAgICByZXR1cm4gQ2hlYXBUaW1lOjpmcm9tUmF3U2Vjb25kcyh2YWx1ZSgpIC0g
b3RoZXIuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKK30KKwogVGltZVdpdGhEeW5hbWlj
Q2xvY2tUeXBlIFNlY29uZHM6Om9wZXJhdG9yLShjb25zdCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5
cGUmIG90aGVyKSBjb25zdAogewogICAgIHJldHVybiBvdGhlci53aXRoU2FtZUNsb2NrQW5kUmF3
U2Vjb25kcyh2YWx1ZSgpIC0gb3RoZXIuc2Vjb25kc1NpbmNlRXBvY2goKS52YWx1ZSgpKTsKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1NlY29uZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9TZWNvbmRzLmgJKHJldmlzaW9uIDI4MjczNykKKysrIFNvdXJjZS9XVEYvd3RmL1NlY29uZHMu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMSw2ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXVEYgewogCitjbGFz
cyBDaGVhcFRpbWU7CiBjbGFzcyBNb25vdG9uaWNUaW1lOwogY2xhc3MgUHJpbnRTdHJlYW07CiBj
bGFzcyBUZXh0U3RyZWFtOwpAQCAtMTc5LDEwICsxODAsMTIgQEAgcHVibGljOgogICAgIAogICAg
IFdURl9FWFBPUlRfUFJJVkFURSBXYWxsVGltZSBvcGVyYXRvcisoV2FsbFRpbWUpIGNvbnN0Owog
ICAgIFdURl9FWFBPUlRfUFJJVkFURSBNb25vdG9uaWNUaW1lIG9wZXJhdG9yKyhNb25vdG9uaWNU
aW1lKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ2hlYXBUaW1lIG9wZXJhdG9yKyhD
aGVhcFRpbWUpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBUaW1lV2l0aER5bmFtaWND
bG9ja1R5cGUgb3BlcmF0b3IrKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZSYpIGNvbnN0
OwogICAgIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBXYWxsVGltZSBvcGVyYXRvci0oV2FsbFRp
bWUpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBNb25vdG9uaWNUaW1lIG9wZXJhdG9y
LShNb25vdG9uaWNUaW1lKSBjb25zdDsKKyAgICBXVEZfRVhQT1JUX1BSSVZBVEUgQ2hlYXBUaW1l
IG9wZXJhdG9yLShDaGVhcFRpbWUpIGNvbnN0OwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBUaW1l
V2l0aER5bmFtaWNDbG9ja1R5cGUgb3BlcmF0b3ItKGNvbnN0IFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZSYpIGNvbnN0OwogICAgIAogICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oU2Vjb25k
cyBvdGhlcikgY29uc3QKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVGltZVdpdGhEeW5hbWljQ2xv
Y2tUeXBlLmNwcAkocmV2aXNpb24gMjgyNzM3KQorKysgU291cmNlL1dURi93dGYvVGltZVdpdGhE
eW5hbWljQ2xvY2tUeXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw2ICs0MCw4IEBAIFRpbWVXaXRo
RHluYW1pY0Nsb2NrVHlwZSBUaW1lV2l0aER5bmFtaWMKICAgICAgICAgcmV0dXJuIFdhbGxUaW1l
Ojpub3coKTsKICAgICBjYXNlIENsb2NrVHlwZTo6TW9ub3RvbmljOgogICAgICAgICByZXR1cm4g
TW9ub3RvbmljVGltZTo6bm93KCk7CisgICAgY2FzZSBDbG9ja1R5cGU6OkNoZWFwOgorICAgICAg
ICByZXR1cm4gQ2hlYXBUaW1lOjpub3coKTsKICAgICB9CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlKCk7CkBAIC01
MCw2ICs1MiwxMiBAQCBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUgVGltZVdpdGhEeW5hbWljCiAg
ICAgcmV0dXJuIG5vdyhjbG9ja1R5cGUoKSk7CiB9CiAKK0NoZWFwVGltZSBUaW1lV2l0aER5bmFt
aWNDbG9ja1R5cGU6OmNoZWFwVGltZSgpIGNvbnN0Cit7CisgICAgUkVMRUFTRV9BU1NFUlQobV90
eXBlID09IENsb2NrVHlwZTo6Q2hlYXApOworICAgIHJldHVybiBDaGVhcFRpbWU6OmZyb21SYXdT
ZWNvbmRzKG1fdmFsdWUpOworfQorCiBXYWxsVGltZSBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6
OndhbGxUaW1lKCkgY29uc3QKIHsKICAgICBSRUxFQVNFX0FTU0VSVChtX3R5cGUgPT0gQ2xvY2tU
eXBlOjpXYWxsKTsKQEAgLTYyLDYgKzcwLDIwIEBAIE1vbm90b25pY1RpbWUgVGltZVdpdGhEeW5h
bWljQ2xvY2tUeXBlOjoKICAgICByZXR1cm4gTW9ub3RvbmljVGltZTo6ZnJvbVJhd1NlY29uZHMo
bV92YWx1ZSk7CiB9CiAKK0NoZWFwVGltZSBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGU6OmFwcHJv
eGltYXRlQ2hlYXBUaW1lKCkgY29uc3QKK3sKKyAgICBzd2l0Y2ggKG1fdHlwZSkgeworICAgIGNh
c2UgQ2xvY2tUeXBlOjpXYWxsOgorICAgICAgICByZXR1cm4gd2FsbFRpbWUoKS5hcHByb3hpbWF0
ZUNoZWFwVGltZSgpOworICAgIGNhc2UgQ2xvY2tUeXBlOjpNb25vdG9uaWM6CisgICAgICAgIHJl
dHVybiBtb25vdG9uaWNUaW1lKCkuYXBwcm94aW1hdGVDaGVhcFRpbWUoKTsKKyAgICBjYXNlIENs
b2NrVHlwZTo6Q2hlYXA6CisgICAgICAgIHJldHVybiBjaGVhcFRpbWUoKTsKKyAgICB9CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gQ2hlYXBUaW1lKCk7Cit9
CisKIFdhbGxUaW1lIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZTo6YXBwcm94aW1hdGVXYWxsVGlt
ZSgpIGNvbnN0CiB7CiAgICAgc3dpdGNoIChtX3R5cGUpIHsKQEAgLTY5LDYgKzkxLDggQEAgV2Fs
bFRpbWUgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlOjphcHBybwogICAgICAgICByZXR1cm4gd2Fs
bFRpbWUoKTsKICAgICBjYXNlIENsb2NrVHlwZTo6TW9ub3RvbmljOgogICAgICAgICByZXR1cm4g
bW9ub3RvbmljVGltZSgpLmFwcHJveGltYXRlV2FsbFRpbWUoKTsKKyAgICBjYXNlIENsb2NrVHlw
ZTo6Q2hlYXA6CisgICAgICAgIHJldHVybiBjaGVhcFRpbWUoKS5hcHByb3hpbWF0ZVdhbGxUaW1l
KCk7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJu
IFdhbGxUaW1lKCk7CkBAIC04MSw2ICsxMDUsOCBAQCBNb25vdG9uaWNUaW1lIFRpbWVXaXRoRHlu
YW1pY0Nsb2NrVHlwZTo6CiAgICAgICAgIHJldHVybiB3YWxsVGltZSgpLmFwcHJveGltYXRlTW9u
b3RvbmljVGltZSgpOwogICAgIGNhc2UgQ2xvY2tUeXBlOjpNb25vdG9uaWM6CiAgICAgICAgIHJl
dHVybiBtb25vdG9uaWNUaW1lKCk7CisgICAgY2FzZSBDbG9ja1R5cGU6OkNoZWFwOgorICAgICAg
ICByZXR1cm4gY2hlYXBUaW1lKCkuYXBwcm94aW1hdGVNb25vdG9uaWNUaW1lKCk7CiAgICAgfQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIE1vbm90b25pY1Rp
bWUoKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1RpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5oCShy
ZXZpc2lvbiAyODI3MzcpCisrKyBTb3VyY2UvV1RGL3d0Zi9UaW1lV2l0aER5bmFtaWNDbG9ja1R5
cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDE2LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5j
bHVkZSA8d3RmL0NoZWFwVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9DbG9ja1R5cGUuaD4KICNpbmNs
dWRlIDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgpAQCAt
MzgsNiArMzksMTIgQEAgY2xhc3MgVGltZVdpdGhEeW5hbWljQ2xvY2tUeXBlIGZpbmFsIHsKIHB1
YmxpYzoKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUoKSB7IH0KICAgICAKKyAgICBUaW1l
V2l0aER5bmFtaWNDbG9ja1R5cGUoQ2hlYXBUaW1lIHRpbWUpCisgICAgICAgIDogbV92YWx1ZSh0
aW1lLnNlY29uZHNTaW5jZUVwb2NoKCkudmFsdWUoKSkKKyAgICAgICAgLCBtX3R5cGUoQ2xvY2tU
eXBlOjpDaGVhcCkKKyAgICB7CisgICAgfQorICAgIAogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2Nr
VHlwZShXYWxsVGltZSB0aW1lKQogICAgICAgICA6IG1fdmFsdWUodGltZS5zZWNvbmRzU2luY2VF
cG9jaCgpLnZhbHVlKCkpCiAgICAgICAgICwgbV90eXBlKENsb2NrVHlwZTo6V2FsbCkKQEAgLTcx
LDkgKzc4LDExIEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgLy8gQXNzZXJ0cyB0aGF0IHRo
ZSB0aW1lIGlzIG9mIHRoZSB0eXBlIHlvdSB3YW50LgorICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
aGVhcFRpbWUgY2hlYXBUaW1lKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFdhbGxU
aW1lIHdhbGxUaW1lKCkgY29uc3Q7CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIE1vbm90b25pY1Rp
bWUgbW9ub3RvbmljVGltZSgpIGNvbnN0OwogICAgIAorICAgIFdURl9FWFBPUlRfUFJJVkFURSBD
aGVhcFRpbWUgYXBwcm94aW1hdGVDaGVhcFRpbWUoKSBjb25zdDsKICAgICBXVEZfRVhQT1JUX1BS
SVZBVEUgV2FsbFRpbWUgYXBwcm94aW1hdGVXYWxsVGltZSgpIGNvbnN0OwogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBNb25vdG9uaWNUaW1lIGFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpIGNvbnN0
OwogICAgIApJbmRleDogU291cmNlL1dURi93dGYvV2FsbFRpbWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1dhbGxUaW1lLmNwcAkocmV2aXNpb24gMjgyNzM3KQorKysgU291cmNl
L1dURi93dGYvV2FsbFRpbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDExICsyNiwxNyBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgPHd0Zi9XYWxsVGltZS5oPgogCisjaW5jbHVkZSA8
d3RmL0NoZWFwVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL1ByaW50U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCitDaGVhcFRpbWUgV2Fs
bFRpbWU6OmFwcHJveGltYXRlQ2hlYXBUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKnRoaXMg
LSBub3coKSArIENoZWFwVGltZTo6bm93KCk7Cit9CisKIE1vbm90b25pY1RpbWUgV2FsbFRpbWU6
OmFwcHJveGltYXRlTW9ub3RvbmljVGltZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuICp0aGlzIC0g
bm93KCkgKyBNb25vdG9uaWNUaW1lOjpub3coKTsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dhbGxU
aW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvV2FsbFRpbWUuaAkocmV2aXNpb24g
MjgyNzM3KQorKysgU291cmNlL1dURi93dGYvV2FsbFRpbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAyMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDEwICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlIDx3dGYvQ2xvY2tUeXBl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KKyNpbmNsdWRlIDx3dGYvR2VuZXJpY1RpbWVN
aXhpbi5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIAorY2xhc3MgQ2hlYXBUaW1lOwogY2xhc3MgTW9u
b3RvbmljVGltZTsKIGNsYXNzIFByaW50U3RyZWFtOwogCkBAIC0zOCw3ICszOSw3IEBAIGNsYXNz
IFByaW50U3RyZWFtOwogLy8gYWNjZXB0YWJsZSB0byB1c2UgdGhpcyB0byB3cmFwIE5hTiB0aW1l
cywgbmVnYXRpdmUgdGltZXMsIGFuZCBpbmZpbml0ZSB0aW1lcywgc28gbG9uZyBhcyB0aGV5CiAv
LyBhcmUgcmVsYXRpdmUgdG8gdGhlIHNhbWUgY2xvY2suIFVzZSB0aGlzIG9ubHkgaWYgd2FsbCBj
bG9jayB0aW1lIGlzIG5lZWRlZC4gRm9yIGVsYXBzZWQgdGltZQogLy8gbWVhc3VyZW1lbnQgdXNl
IE1vbm90b25pY1RpbWUgaW5zdGVhZC4KLWNsYXNzIFdhbGxUaW1lIGZpbmFsIHsKK2NsYXNzIFdh
bGxUaW1lIGZpbmFsIDogcHVibGljIEdlbmVyaWNUaW1lTWl4aW48V2FsbFRpbWU+IHsKICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3RleHByIENs
b2NrVHlwZSBjbG9ja1R5cGUgPSBDbG9ja1R5cGU6OldhbGw7CkBAIC00Niw0MiArNDcsMTIgQEAg
cHVibGljOgogICAgIC8vIFRoaXMgaXMgdGhlIGVwb2NoLiBTbywgeC5zZWNvbmRzU2luY2VFcG9j
aCgpIHNob3VsZCBiZSB0aGUgc2FtZSBhcyB4IC0gV2FsbFRpbWUoKS4KICAgICBjb25zdGV4cHIg
V2FsbFRpbWUoKSB7IH0KICAgICAKLSAgICAvLyBDYWxsIHRoaXMgaWYgeW91IGtub3cgZm9yIHN1
cmUgdGhhdCB0aGUgZG91YmxlIHJlcHJlc2VudHMgdGltZSBhY2NvcmRpbmcgdG8KLSAgICAvLyBX
VEY6OmN1cnJlbnRUaW1lKCkuIEl0IG11c3QgYmUgaW4gc2Vjb25kcyBhbmQgaXQgbXVzdCBiZSBm
cm9tIHRoZSBzYW1lIHRpbWUgc291cmNlLgotICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUg
ZnJvbVJhd1NlY29uZHMoZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgcmV0dXJuIFdhbGxU
aW1lKHZhbHVlKTsKLSAgICB9Ci0gICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBX
YWxsVGltZSBub3coKTsKLSAgICAKLSAgICBzdGF0aWMgY29uc3RleHByIFdhbGxUaW1lIGluZmlu
aXR5KCkgeyByZXR1cm4gZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+
OjppbmZpbml0eSgpKTsgfQotICAgIHN0YXRpYyBjb25zdGV4cHIgV2FsbFRpbWUgbmFuKCkgeyBy
ZXR1cm4gZnJvbVJhd1NlY29uZHMoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9O
YU4oKSk7IH0KLSAgICAKLSAgICBjb25zdGV4cHIgU2Vjb25kcyBzZWNvbmRzU2luY2VFcG9jaCgp
IGNvbnN0IHsgcmV0dXJuIFNlY29uZHMobV92YWx1ZSk7IH0KLSAgICAKKworICAgIFdURl9FWFBP
UlRfUFJJVkFURSBDaGVhcFRpbWUgYXBwcm94aW1hdGVDaGVhcFRpbWUoKSBjb25zdDsKICAgICBX
YWxsVGltZSBhcHByb3hpbWF0ZVdhbGxUaW1lKCkgY29uc3QgeyByZXR1cm4gKnRoaXM7IH0KICAg
ICBXVEZfRVhQT1JUX1BSSVZBVEUgTW9ub3RvbmljVGltZSBhcHByb3hpbWF0ZU1vbm90b25pY1Rp
bWUoKSBjb25zdDsKICAgICAKLSAgICBleHBsaWNpdCBjb25zdGV4cHIgb3BlcmF0b3IgYm9vbCgp
IGNvbnN0IHsgcmV0dXJuICEhbV92YWx1ZTsgfQotICAgIAotICAgIGNvbnN0ZXhwciBXYWxsVGlt
ZSBvcGVyYXRvcisoU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBm
cm9tUmF3U2Vjb25kcyhtX3ZhbHVlICsgb3RoZXIudmFsdWUoKSk7Ci0gICAgfQotICAgIAotICAg
IGNvbnN0ZXhwciBXYWxsVGltZSBvcGVyYXRvci0oU2Vjb25kcyBvdGhlcikgY29uc3QKLSAgICB7
Ci0gICAgICAgIHJldHVybiBmcm9tUmF3U2Vjb25kcyhtX3ZhbHVlIC0gb3RoZXIudmFsdWUoKSk7
Ci0gICAgfQotICAgIAotICAgIC8vIFRpbWUgaXMgYSBzY2FsYXIgYW5kIHNjYWxhcnMgY2FuIGJl
IG5lZ2F0ZWQgYXMgdGhpcyBjb3VsZCBhcmlzZSBmcm9tIGFsZ2VicmFpYwotICAgIC8vIHRyYW5z
Zm9ybWF0aW9ucy4gU28sIHdlIGFsbG93IGl0LgotICAgIGNvbnN0ZXhwciBXYWxsVGltZSBvcGVy
YXRvci0oKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGZyb21SYXdTZWNvbmRzKC1tX3Zh
bHVlKTsKLSAgICB9Ci0gICAgCiAgICAgV2FsbFRpbWUmIG9wZXJhdG9yKz0oU2Vjb25kcyBvdGhl
cikKICAgICB7CiAgICAgICAgIHJldHVybiAqdGhpcyA9ICp0aGlzICsgb3RoZXI7CkBAIC05Miw1
NyArNjMsMTcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKnRoaXMgPSAqdGhpcyAtIG90aGVy
OwogICAgIH0KICAgICAKLSAgICBjb25zdGV4cHIgU2Vjb25kcyBvcGVyYXRvci0oV2FsbFRpbWUg
b3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gU2Vjb25kcyhtX3ZhbHVlIC0gb3Ro
ZXIubV92YWx1ZSk7Ci0gICAgfQotICAgIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0o
V2FsbFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA9PSBv
dGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvciE9
KFdhbGxUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgIT0g
b3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCi0gICAgY29uc3RleHByIGJvb2wgb3BlcmF0b3I8
KFdhbGxUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPCBv
dGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj4o
V2FsbFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA+IG90
aGVyLm1fdmFsdWU7Ci0gICAgfQotICAgIAotICAgIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPD0o
V2FsbFRpbWUgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV92YWx1ZSA8PSBv
dGhlci5tX3ZhbHVlOwotICAgIH0KLSAgICAKLSAgICBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj49
KFdhbGxUaW1lIG90aGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fdmFsdWUgPj0g
b3RoZXIubV92YWx1ZTsKLSAgICB9Ci0gICAgCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAotICAgIFdhbGxUaW1lIGlzb2xhdGVkQ29w
eSgpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgfQotCiAgICAgc3Ry
dWN0IE1hcmthYmxlVHJhaXRzOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBHZW5lcmlj
VGltZU1peGluPFdhbGxUaW1lPjsKKyAgICAKICAgICBjb25zdGV4cHIgV2FsbFRpbWUoZG91Ymxl
IHJhd1ZhbHVlKQotICAgICAgICA6IG1fdmFsdWUocmF3VmFsdWUpCisgICAgICAgIDogR2VuZXJp
Y1RpbWVNaXhpbjxXYWxsVGltZT4ocmF3VmFsdWUpCiAgICAgewogICAgIH0KLQotICAgIGRvdWJs
ZSBtX3ZhbHVlIHsgMCB9OwogfTsKIAogc3RydWN0IFdhbGxUaW1lOjpNYXJrYWJsZVRyYWl0cyB7
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>